From 29d6daa4467445e77b5ed798371910cf0cb17e7c Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 13:56:57 +1100 Subject: [PATCH 01/12] mkdocs --- docs/index.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 6 ++++++ setup.cfg | 3 +++ 3 files changed, 59 insertions(+) create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..e38049f5 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,50 @@ +# PySlurm: Slurm Interface to python + +This module provides a low-level Python wrapper around the Slurm C-API using Cython. + +## Contents + +::: pyslurm.config + handler: python + +::: pyslurm.front_end + handler: python + +::: pyslurm.hostlist + handler: python + +::: pyslurm.job + handler: python + +::: pyslurm.jobstep + handler: python + +::: pyslurm.node + handler: python + +::: pyslurm.partition + handler: python + +::: pyslurm.reservation + handler: python + +::: pyslurm.slurmdb_events + handler: python + +::: pyslurm.slurmdb_reservations + handler: python + +::: pyslurm.slurmdb_clusters + handler: python + +::: pyslurm.slurmdb_jobs + handler: python + +::: pyslurm.statistics + handler: python + +::: pyslurm.topology + handler: python + +::: pyslurm.trigger + handler: python \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..eb7cfe49 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,6 @@ +theme: + name: "material" + +plugins: +- search +- mkdocstrings \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index af6883db..91e8a58f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,6 +19,9 @@ source-dir = doc/source build-dir = doc/build all_files = 1 +[options.extras_require] +docs = mkdocstrings[python] + [flake8] max-line-length = 88 extend-ignore = E203 From b540dd2b8895e5ed3a1a7fd1daf689dcb4efc9d5 Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 17:16:17 +1100 Subject: [PATCH 02/12] Tidy up docstrings, mkdocs config --- doc/Makefile | 130 ----- doc/doctrees/environment.pickle | Bin 987435 -> 0 bytes doc/doctrees/index.doctree | Bin 7785 -> 0 bytes doc/source/_static/pyslurm-docs.png | Bin 22269 -> 0 bytes doc/source/conf.py | 233 -------- doc/source/index.rst | 118 ----- docs/index.md | 2 - mkdocs.yml | 10 +- pyslurm/pyslurm.pyx | 788 +++++++++++++++++----------- setup.cfg | 1 + 10 files changed, 505 insertions(+), 777 deletions(-) delete mode 100644 doc/Makefile delete mode 100644 doc/doctrees/environment.pickle delete mode 100644 doc/doctrees/index.doctree delete mode 100644 doc/source/_static/pyslurm-docs.png delete mode 100644 doc/source/conf.py delete mode 100644 doc/source/index.rst diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index eb9f6570..00000000 --- a/doc/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PySLURM.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PySLURM.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/PySLURM" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PySLURM" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - make -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/doc/doctrees/environment.pickle b/doc/doctrees/environment.pickle deleted file mode 100644 index 3b32942144717aa7f05de67a955122ba5a36cdd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987435 zcmb@Pbzoe_)y31M!7_!ZO(BISiGxkavMk$5ELjyeZrXIaUah1}R=e8Sm2IVU+q6xY znVFfH+po;b%*+hmJ?GBc2m798<@S%n+Lhk<4c@tP2i^m&d0MTzyx3^%8>+YVG+ev2 zRB!c;+_chY&W)zN=v<@Sx#s@P!Kck0HrJeQH0#~YwZeldy+-rME%IHfx>TQSH9DIc zwce4PLvC|b=g?ZEvRkxzjaH>{WVbF~A9mT*Q=P+i&mP}s_3BR96+AgtX|(nTyzN#y zN9>uk{?2u04{5aK>ias^tIf4*NJMw2 z)t;+&kL2GR*}1+X;0F6UH#}|j2v^p}4gJzGc_Ij?dd!;8rH{Rd5$!W8P z&#f#Y4c*R7FPlBA)~t5B^7B!b%^tqHTD!v4=ewPwFPlBMG1u)JbJ^@6`lrWUwlaHo zZBa_f)mxq8F6$hhPsmJtpXB(2T{l1Ipo1n?r?<~ejbC^Q|2bt0xu37r>ZkPDr!24b z7Tc}PiC16MIcb0A!H0UFz%pSU26@0IAv&9>%?5@rp)~hZcd7Ycj9>Q|yoVv2R zJA33@d#NhLRqa(fx7gpgx9R767(aN5NvoL0NltnRKiyPezY z@7z`jXQ@4>C4IZuYcH>!9zM<<^pM%Z7wRqj-R&1|k1r1G)~l|z*f~A?Bwwz~9_j^$ z_IJ)WZ80ws8d9@et2XOLR%Tqa)ooULlB7x3-nV*W=gi!nEUhlodp(x!S+my}Z_lkX z>r$j>4I3VERp;!*vlcg8-8ttWyC1s9bS<8_c-HJ8`UmIAADkzDaPHNe^YI6#FP=Vo z5dYxX(@gs*lhuWK=K}e&JIJ41aCPTG`Lh+tx@#}AmyxP&=Z^b3cbYw{z5DWdt=H|` zd4K0FE3?vw44K)c?ih-OiT% zovr+fZTj88uG{O3?eAQ~FE93A)}%LV-`^SMmlOPQW%jxY&Gzm}uU+f8y6Em$WapZk zy{@afdUdW+ZSJkEb~|^I?>keA*Q-j;n?_UM-_JE%XJ+;~^63o!O}8^UdlTOl8m)y& zt=*byAitfR51&1v*66WHx}8h*3;#B=*XybpbQg@)R0;f&hp)#b(+D=Ij&*js9zI=Nb?KYNYS zd!2jlx;_!x8{J-I>*!2ndhF8CPW80Kdo5OWofpG2<*C5PC{TO%uIo`77O^s2?~V29 zOP!iZpBs~&lZS$IT7b%PKGh@brR8RQUu9&mUb~`GSLr*%q-*+AP|t`^ety?YneeHV zR)wajDpj_pzP;UE?kp%|V+T4XJ{bUfELhonvff zbiC71=tvCO^^b>q7R!<7d?R2{Xk+dwCE5u3N|KLLwYTer%*V{?a=o&x+TBvG_Ewyv zN~JG|WuPa|g~aDHsK3WIvf!H+f_D0O3h(pXdvs5=3Bw^nqBt+B zsvI>+jaI{?GYZtc(zo6%&30AN+>}9Yi;N$zUY+|W;m)zN&*RyU`T`+>?z`(oEdA+b zLz>W5F@G|i)MTLAuapa8lrA0&l)MTN_w(g6vm#cI2w2$rtA4bb_wZEE&qz@G0lTiv z^wX|Sw_UGul?rc&CA@D`z|+)xpf8ikmbtNR%CdGIq|(tQ*v9h$g?kdB(yX~g9+MS0gFm*V_gJ1)Z%(opZ%~ZYG6_4++%DXtm>o3N&WXXTru4B`D89+xCt8S^f?47>H4_JdG zO*1D)uV=SwsJROjsMc9*e9mo6?_&Zyg)rD^7$qF2e0S9oP zC`js4b{$D7jnzbbZ|A8>IV(o#vsLmi6`$q@H}s1gwc3hv^|{W|RW;fU``blYhWgL& z=2aSCb`3i~7fuv92=}=aMV#K|` zH=dEY%;wN|UN~S))Z~F6A0DRSi~Kl;DyWE;Ioqv|v{xif@nThuPEinK3d(sA5?R+@engNN8Ois-4RSj)f0WW>P9_LjI<%m$>UUgg>RX`0;%IYzG-B- z^Ga2}ORQy<*q=m+pjYj>F6{uvklAI4_|!YERzlPx?HfGwdFs9=tbT@6@eOIybKUgw>vAFbss2kM}m(V+UfazUi* zoaWt1iCW8&{*@6U?mfQIjj@Rc^vZq+;Q zAFwWp2VQAWP@(zR3OhHg$gB zI{&BYn_}v)oV8FSWokrzI7})-Xkv4{iJ`Ic5k*C(uBAZ z8+#ga_0GqX6m=yEhnb8NSs(X)mS$T^uJZ|HM5p=%1*Zy>{$y^{fmPYTpmpa{3OLYF zCs88k)4qTE@|tOHs!BP3Mj6rmU06`6LG{o2Z1_Oj@Z6ltoX4v**Y12y5z$&NjOe9= z$oaf)&YNY>oM|jc*h|U_ABJ0V_}uw|(xRR_M%|t~5L$GZAgN#UEjqXcBW>wH4OwLP zlG376%QC~|bqM+Lt`phmC#$Y2v-0T%!p8i7!9`uz%JDFgm^zM4J*7BEIhX5WSvY5x$}FQFpMU>KX(Qrd)i^#|^FW>gXRhgX_8`-gWv@)|}c5-rbs`DLXt+zeobqM)xHVB|jq>MKb z1Q1Wh2LZmPzyokMd|NJ*CI9>0ogA;r(#{;`96uPax|aAz=vs*Yb${qh#YlCzD~oM# zrO=;bsj%}S)sI>{iI3sY0O(gD=*PQ`kbY8`T&>h9-Ib-zPgH$?IRY1KRNWq@Tme^vu-Q#MaI~6cr7Rb&F;+CPT(QebdW@5qHR3;9p9Kwu$^e-7iJb zzx{%cI-pba1z8EII}Qe&|0pWzUlsVF86kk&LDx9wARqi47e8cC*0vb6$JrY!1tleDi)*Pxwhjw>u!$oba?Eb2`#UJpoZfMIl>Zd_S+*Edvjl2kIjLxzYO0HG!5 zXJHfd1sUGN2;9&pQCGWgDi(yuxe++pK8hWGcVojv`*7Yu6)Tc^6L4>wZkHp{nzc!} zn;J4Y>=!o4M2f7Vz|y|#%TlNQ?r7sg>#MLNRfddXz|dA`wnT>G&Gq@}O0(B>#~Nxl z*2_w5Q%aA_bR=FV2HwRkxCg`pOjAf@9DLMx!*!Lg`l)eR|bxWQkqVASm zUH;GQMq-lp_1rBD6Scm zo##Fvch=yv(tvLeBW**HyRg=Kq2}HX&OW9-y|TL}`{a7=js_c!RaW6Bozo-rPM~57^W>_}+2)3GcQ#Tq%2=2! z(V+TWpssDf+B)`Jy1N=6>bjM-a|n^L5ft4fQrR^&F)}r}#SI%ES}`&f*RY14+ENf? zD8C8ve#>82ossr|2$UN!Omr$)nh&o<)@HDD^xd>FKQAF|1XLt$Ima2LR*@SuYBXfO zn<`-tDc2-@3+Os#S#|Mrf!k`t=v=HcpHw1eTf*^;PJAeq=a_M#!&YI#^E#wllu+Qe zh#}h9Zp=;goV(a4(G4vHmdLA+u^kL;8)0Y+d+pu0QKIf($+#G#h?+=H<}1pipEJQ7 zhKdfsYj~bsjkHP7)Gl~yB#TAvZpMk)g+dD?8dRTxx^C$34FEG0H*NCK5u&j6AwvBb z=xamHG%zP-DFkBvn+B%VZ6_$l(RSK0%I4u2T}GK69oaFl*%lzDU$95l5S4*?Ih)jx{AS~#=WpPrnE@AH)#3kx2)j0 zs)3?|RbjW1>9@#`u^Wuk>6~C#Yleu{P2aj<+NjP!Unf%I^(8sfxU*5;%Rx#D(A5pJ zG1lU;V^g6V^E97g`i+A=Njfif3&tFdF-yWt89hQ50abUbZ<5EoGp=FOsL@ULtztDY zF9-8@$%37Y(fPhDV2+9nzQVB47480jh99K*Wyx=XuiYVxX354gw`Abx%&TNPOT>t4 z0jE}kr%>SLth%;g;uHS-ITk8Vdl}l=*RUGIlfPpvS$*o5d~}RS*IGt|1P6jz;80k) zmLmJ6&)z`uD<_#;*LYiFZL_4*3RIbZUXsO-02Z)YF=TX%D?w6+kUa^+wvONjx7Q$1 z4?aJzWrRrC2Z~01EY9IpjS$_|SQICr@RbnOUYzo1x$8;R&t;j^-Nz`=sO}n`ZAy{c z`+}Q``%5zvSKsY7V6+>p5%*UyvhJ6#hTTGCwzVvWyBR=p_cvD5(XBe$P@PjD7O08d+IMecA zq(u#f1|j|Q%w28dXjv8nBE1R`4*^0a4V;)@iWjCP4>d}(@AgeiQaa>33>@`>%|K|Q zf4EViowv+FP>7gE0HaM~1Xm1btkXTx7*UTSvvV}1LHS2PKI5a&I_Xr_J=!QyA1&){ zcz-XYMcQLPOZlEsZ*o|F9&5OdHB{6~OOG7%I};gF9tX;?Z18?|3%Cckb~< zi$>TBeZssTxlc%P=eZVKdZO{7O`?z&gvfakIGOpEUubntHcYgA7y8s*hm@y)qFq&- zDw*F;cV*SE(sNHWNVMrS@~abGgMg<2pw-mB$AFs)-O~*fonYlBBqfq0KLccSjU+DO ze3yEr!J^i-Ay0*o(GDyIJjz~`|7nx33W8~x#t@sYPZwfHmgF$3&8M^dv0{$yvNT$UTB!; z%(QSVF1vBcy$CFA+c=9Q_CrSHJu(A+v2oVrzh*?3o0ou)@n6-^v=LWaSl4qeHD2^k zZRvnpB+N9t3~9j7Av*@WLB^Wj%Z(YeMfsf{86h%W0fzdPJdVQ+3a>Q6hL{`Czj-BW zO?VZQwT^6mTea7ocds_}Xj@oge;cHjgV!WEU{~gXjQNz8}kWoWh=;@`!NPHWJ+8hy%q;bLz z?(Ig3cBlMQEh9wAJ3!IVBeiXDVs?CVYHY;4(@@b&jj(myb2NTNpci6Mau{>*%sG8{IK^LCz_*L@eb=mjJWp!r{f_f!t_9OXTbZ76}21r zipoim^nrwAlV3mU{ovrF(pj%ck@O*uboA9p6Q-xQ<-+}+fuciv!K^9B5b|L_)N-hK z(kpyg$;jzGVzj8!TsR2RIY|kU`%!RDrjgVpxNCenHq=ek=cnq+I6%cAv+F))^k}H3 zph=dfG6^3?60(80;jV4$`-E|$O*Gf(5~Cl)i2EdP+C-&rudKJk{qQd6r;HWtcHLyc zpHm^^(}0}7V)Z6j|IzKA6YWj1jr|Ju8RJFQPZ~vrxj>Wj&w{RVaBZ=vZumK4M(t%m zn@xlW`aD1br-Y!(Ev6=2y_C>T@F!kR|DBc$q^EWJaI=XKSPAQx;dmU1~ z4N92(&B^grv8DAYw;0H1_Z=feN1%eLNlOv-UBI;2sqYeG zWWLbGx)O?DM9KZYDAC*$mRll4)(^q*yPfrX7h_fKM}~>o#KJ9NR3YKVAb8&(S;fUv z)cwRD(SbDW6sH!0Aw$YfLD7I+YMZ?KnGvF9FF)&&<6>~&)pV2bb1>Ap`+C9ReAt2} zU&(Z~>waO#sC6%_paM5;n05gSB51S{s>Drh?oURFb^(w=q2^>r`Ex??n?6I+bbm2Qv>O!m<{(7QU%}Bh zo;ZpAf(Z9FLqtc7{+LRlL&D!d$hwAFlbFW4e;DaNUBg6-xPJn79Nii1PZjA8>W<5N zpeq+g^xVG;8eLLb;-op$RGA{l{|5P{B#(HL0?$7zoczb2(HVR#YfB2$2t4STR6Q6LUuxC2EG& za%4q{s3U>W=x8cp%~k!1j;Y&Zw}QL2QKRAibl%pGB>g%`M$z3lrI?n>Sg~dMx`vE4 z^kUtH|xUSF9{cKHJXS&~VW< z2@{{YTP3AL)Qy1h1D7`$GTRCksDa-g;uU1BUtZlZJ20z zNt8IaFJjeY5gG!NJ`K{|VWFYBxYgd!4~`mDi`mcY2nztG8!1{rxmaYs7;!_usS&UswuF=9#%p(mv7$qM zX%JhbNIDZFtuLPE#MEPZqgB_P67DRcZHo0F39sc&cNPeexdBXVe%|>-%<61IMfWch zI?y3*bq>@uM6_b6x^O>B-KS1vweJWu@7ito9b&`38(u zSlU}EkRt5@&`y!cuGx^MxXfq`jA|<+xx@lGJ)pD-7s$QEe z?A+1#n_~Rk^1K|@udW8GQY1*|odC@&;8%3A<`b-!)wnwwJGv@SQp*LZOu$``0Bv60 zACa(VyBY#5cQtU-6coB5X)*FPg6Bu-aNUKpGI)`0*kDm>y4FEPXpyxk$(s)06^D$ywtEg(q3M5qeh7iLw&>iN|~8!O-??Aj1zNTm%B9nX=Ktm!;fYF53p& z#fFHEap@|_>yWY?6m8jrHtULFclLA39C&1K5qP`PArw==f z6&(w@{qGf^2IVIcd89xJO|BEEyStfu)Wa>#iWeed3Jjf~fPs~*eKoX!OB$`Y_TH|1 z>81@BHAlt3B3067K-WskPEvHI-mHN)#wu;?DGKFC+zFx@B=cUzrf0@xwvW0?3>O{i za%ML#Mbs{!a5dZHDt5@jOSroc&WL3ww?97k2bU(Ia{7j%_b}0@$ywt0pU_pk026yp z=w?PH9YUo3^&&nUl`k{afp0A<5@s6ig*2$&=*L58^IWZW72`&2Uao3#N(9{-AYB#m zduln2bXB87=lz8nYNNk&$jExU(cXb0r zhr3*fS!14&D<3IF+&pmFb5iHN)Z#4|ELuI;HPyTlNs9@|<_~`0at$Lzorcm0gx4bL za%1p%`q(ZF~SLCN8YKW_I_Zl@? zqJ0bUUW5Akpsytw8j&T&tr{fS-%1*!X%TiMVCrvVs}FZ`_^Yk%W6Wqkbgf!U6iL1> z$fYBkxF|Zp?Kk-UW`qmEOvC+<2DLV!sBvL{oE9JE%l_Q`jUMffCB>c5BlH1)>Nvsu zw%+~IB@uU(5u+9-J;Co+BI|((D`e2Z7w5YN8Ed^`Qok5+4+c&xDI$3c17l_(2THCs zR&*@S#RF3+gghjHz(tmsg{=0i;C6ZUP=iD>RO}h2#K?LWSh^hw4l!cr?%@WB_VXey z7#h@m1hj8OYgXp!r(f~l9%KPv&#eq+~Z9>>e;0yvo)#+o;?qD>pVTiFVwpyL(x)3NYS^-y3-U@NJp&{^)vtH_nU1~gnFfhg zI*xS6`4BteC9Z9dA>mmds4b&$ov!YwdmH`ibx>p#Kg{oPGNe2Q6m7n^K{W~YJl7b} zaL;aeFfcMABs>oUtrKr%SbuJ1x#ym5kZAb2)TEdiX)j38@PO3F!QsbN*>#XU1lqgX9 zWzg1&N=^BAE4F*N5u%QCE+=^@qFw=1w%jnv`Z9E{G+MM-E;0p2U4H2!Q zHC8BWt@sT9!A(rgB{;gO5o8x6KG*5q<;p7G3lAre*D7wIqHk7peDIIb?5b`1(TXMYD zeb5k5r!0*~Nl^VmP*=yFZ!eT-oclkMj{0Q%FNqtSq3(yFtIcWVQrxEF{k@NvcC=*r zx>-txjE{oheIqFu44Rm?e9REhQL3A~N*D#>6)663h-(Zc+^df(gS6#xs>a1S_X(p# z?^r6iuD?i@N%$m^pdH4?EJoUOCuhj^xlb82+L8-H6+wucPlKa@7;$p4@56SVF;cX` z8rl6VeXoskp9M%qM=Xw2M%Q>2Su9&YILUrt>p4-_XR_&tHY!u zsQyK$Yq!_yN0O5t?n{P<)(TIZ1ZOrcM9`NLP%xLcoC-I6x~~{0>P%$g-gzaGz6z4o zzd0=k=iGgCc*=dvP|>+lzQgv3k@j`aQej1@BAJgYxo;RKIy&}+6}<-aznSDFOq4N@ z>F$be86@hv6i=2-imY#grA^J3EIp*}7$xe2Wm|Jfg!Ag|nTKQO@h#{hYrx<7=j*0j&qB;Km&eq`EFm!hzEs6xVzK~M`B_8E?K zCFIbUb3ZXiw2Rb=_ZfO6f_@5+-?A=V)8wkWv#YhOE&CaNW}Ikd(&I2zyb~2Nex78; zH(YeW>9I>k-7gFhukNBfBteLrUnY6s=299k>=kvtGE6iteS1qyg^XW=p$%8|Wzq+f zFt>O{zcEC#m!}5jj0OR}O#ld3+WV>9?+g$vs(i35BSgyYK{-zRNZU3BhqWaKReO9< zid+%t{$Rl9zW$O)WL}c!KLV{SE`$WcwZyLeKN&FUESHBDREwlPgLDEj$xSr6FBLz^ z4yGMaNU~pfultKpql+WW{I;AzMY8`2HYR_QtDMJ5ufSlS?ce>)n9)AmH<`^Sk@a`5 z)L8ibCD%Zy6Za1TMH@}GsDA|^a{dX94yXR;F5E?3ad!VQQgi^yj@*4xWc?c~Z6*FT zgr>qkbi_jsi>js^2k#31(|$*&S`1_!PD1;t#Jw$}ym5#e{Q%61tP!>HAjQ zvBrs3Ov$;yAVt)1KxyA)yGsQXjyF=&c=t89M23_TK=E-se4QN-OUU;DNii+ddnA{ zamHM`)*V`==RVYS3un|$uP!&vC|&OP(cBtO^lx z3t-fd=Di7e@tH(`ZfTV095dayG9o103IuJ2!N+Jco4f$~*2akDq}W;ULgbtV&dIF6 z{&(D|AEvu+Z)4QxPMG}AyQVNxaa*J!d2jKuc(%7QUepw3uCbJmu)O(L6exUq2y1(g z{r^kL5{dNA<>{s$HG}#5WR=Jn0>?+Uw#Z&-y_3M5VUTE5i3ht<>&fenx*`4~`#pjX z8E1lV0;?)Ge7ZoW_x*{9$93gr88Uh|PtF%B7bSiJ@JA6J0wQ|5jW5u%4ICYg3*!ee zHNagtsz%~DAnG11?*gQ+%)?iFmEE}pj!yOZ%rf5L+?8|L^*P7|Nz%^)T^$gZwh6rV z7}pz)?yJ?8@!~&szJa5cpA_4(eoc}u09jo+3)XS6uFD*TQABAVkhaaMULFg#xrMH*AdP5K*{D01@hMg1*jZy}sYDiVe0S zMu~bwg_J~!tj%C)lSF5rGcnt8)kYV~1#Z-6n_`WlxF_TU$=m{_y0O+aWQL%}EZtT^ zM$JuW%P=+awt=UEdN73}c&(TlGgQ=*Eou7HA><-J)RWE5ZN+)G*f`O-T7F2%Ymv1b zEOj!mAQSc%xpCt}^V7&}Q%dWQF#(2F62{kNeV@h^)l}^;QgpVP8N?@7`^AWx1Wwyw zWqV!rL`~IeE3%Tbr;e1lyBY5Q+F^kpnNwhDm8E=K`LWe@(*}&T!s3Q6#tAMh)kvEG zO|4UCg%XLuo?tg?u&B#Y(hj{6K|29TZMEd3#FrRiL#!kB#rEt{;$2YA7^Y6HqSd@qpI4Z_7jJFE1k8CaA6hRkjDw%uIURg66ntGe7(LnVrY-y3i>iW**0ms8F+ z8!kGBEC?)l6(V*6q2nYLzho{X#~I{olmX6(<)?4uQ6;E8m#AX`D^<#q>~&L*PA_s( zV6Q;&d5E9FM&UcFtr|#=P9K$9Fy449H~ofUZEdDx5h+nStoIBdrPYE+!xkdTKiGs#&V z9HhUGF`}k9waAoHA>zJ3XuAlD3kzbR>(1>rMl>G<=6|ZLGKAa@5H(#~E%8_L`rYpL zH&ApGPe;`HmB@MkSlR@O_m6R}+EvDkHo<{*k3p392Li7))AuvDtvU;pFJyS{x(6A2 zBsNkM_P9Ppk{=9m@YAtOG`1k_YqKhToUj|BSp=l ztk+lVFh)*?m`4Gleh^B{du8s?hKPD9xgzrl6n_lFwYl z1U(KQUD%>G$4HZVyb+?A=yT?%Kw8-q|hM8j(>W@o6Ax zpA9P~+v}}`-lBWDvEo57U2_RORaS_YX8@yiD6HgR+}yG0qS28V_e?`Y;{_#ad5IWt z&q{J-TlF|rx@Q|IIGGCPB1r~|B zG+%6>Gh=y4*`n|`WnThWovNn?`RT>BW3Yu|{7a1!otmsM#%DAMe;ME!bhD`JTz#K= zx$&Y-S)t=M))EyGUIBvIhS0%uX;LkPd!>=0MsUrQPL(6_RY0n72tg@7gMYQbqQ;>l zCZ$5eyapI;g8`%0!{~v!*BUEo^h#JMH3DCk9m;cAVQervjAz0Hpmeq?eszJ`>h|+y{*jbr6cn zJ|#xphrrW;o7=9v2Z)1#|7Wb|6t{0PRw6^nhe1h&IEUqGZn-JuBSttUR^5GGu}V<= zqfk#y9^&eokC}43AtfF?M$vHF&Br0CeLAeg$dRb#aCfsh1fMWMv`?2T?WEvh+Cw;VekWA7%0(ZO1_DdXkDUjPm0|UELTgvW$0*K zrVBYIL&~>7(XJb&b<&uo80|bs)tY;8`Yd=5A>oH0XlK|uwp};uhIf?x z$RO+L40#=LehiL|MBb#x9&hJ2;M48<8UDRO=bj)v5NA1(XDQ>T4?XT0drVTnJT(IfQtfTk=z%r-Ar zm;U<)<3(3u^5GI%|CAP4e@rqM99f-l;timZV)rKlMl)FA7-#ed{WG8l(#RMgyHV#F z^YiX6#)&$6nUYgsvlwkJ~^hPkdGztZzr(ePtQtMf_(T@xTJN?ln={=^vqD9h4AZ09&-e}6@JlQP6 zVdP|kMprRP+5!Ad9dx}W;imwu5e%LHAFsQGy1SXtqN})lyF;l!?VCeeTQ)tmsXDS9 zX8xxdBU)YQVYpw3tXqJkA!q`i6Vut1yB(10ki@Pui@Muk$moljaxK>D z6sa-+lSqJHA6j&B|DwjLu>^HDgGRf2+I>q$QNk+J6eyWhH1Sj2v;m@CKw)DQ4d!7c z$pZrq9LF_=F>8pZ@hyyDBvK^pO!C3YJartt#30dexbHeoDo}eDw6)EJE%n3Q@P6dG z8zMR*DcMPHT7+E+n2sWT>2yk$PVZr$Xr&h}ovI8O_XOi)wr$&_pE?0DGPPrRbY#cG zW_Ot}qxTV%?$|F9W-9K5ROlu|y1}D1sbtq(fhrR)j|Awf%QsHHS9Y?!x9;46fuqBBVG~V@k+%q*&MXU;B3;9X z8)M}>z(ORMmxHO*TXv_0yTY*1h(O+Wm1&aQ1Y673{0JFV=X6@_mJA!6GKpEvHmm|Y zB3nS}FypIqvfXX;lh$vo|pPwqXz{lJ1F~b zVO=h#oU35bcVzqU^t9_5A?gAZhSp4pq#j5&W6$@acmGL5?**+Gcp}y?OTC~nai(Pt z(xT1OZ1~LB_$V{)PX_L_L`0iusrk-nlD!XX?Uuodk?GgWma{i_3$$wBXhSXWiZXhH zUI}Q%A0%AAo4v zvOwv3Fm8M2`vLB6w5YYs-5lR9M%V+A+?ln&0IVo0zbI}&AGe6vD8)Nw_SZB^(>O<-yK-CHjdz8d8(&pqI zX}qYfT(V8cv$ZQI8m$LA0kUDk@6T&j$zBO$nTb_oT10yz&nZ` zYrLqpR~i7$D3bd)aCK^i5!0VLeY~-vQ?vdtQ#Gjm1gLA-X{-0UK%Z#((bdRqQCK#a zHa!UhjQF~_V%fFl+>=fHoLGx1*q;FjCjKdq_WLt*12clJ?y068b@9bQ)oXTA(3?Am zQ2%M!q<2=@J@<4IKaiwDg3`}`bbbwuH{d+e0MS-k+KQ4paGnKDZjP54%ab|Yvke;^ zFb8oGOqjWS4pQO63wq!Q`)HnP$Y`9VY#$Bw^tC8K`o)QMPbLh_I$jxA zpL5SQ;O1DfD{L73l4QRCY^_T!jp2XXV&z_Fz-V3OCkR<3a$XcT$-ph~8?1-E*f>#( znzwX$Es|aWl13kJ;$Wn`yy_YYi#_*J14X-5dMwU}knpmQm&w&|;J{m+mm4BlW~G-+ zCD!K^;CRmhcfb0>0>jw!?Oti9sAti)K9d$=j$Q?lwm=+u(|s!vosb>CvexA{lf2r9 z(eUql{=y7ygvkk#{F;R9r^ot_EWOIRmvl6AuQl@KSlch0BKJ#@{W`FEvhyba;x2p28g|`}gYP~rf2*6am4XM%?zdHTMelv+{!Bd!%Dt@~q zCK_SNMj_TxWeVPb6!-|pv_BV%6SC@SxOW;j+KmcF4n1g_2$K0OFx8uoh0$Ks+oN|I zEAETSy`a6ulEouaG9y+UzBz3y3-e_ zx{nP`$&8^{8B#tDil6y#oaU{&&V9lV(b+);kyYwkP>!MzOqElz&h;5%MZKGJZi=+X`z&~wB}|RCaEyklqIq?nGwy*eVHPSg6`w~c z)L$r!;=|;-FIW2I49GPDSv#$VWCnraz+&2vO zUlbsvi25c_y1MT}^RiQ`?KU^|$RO;#Ww2=HD2&dhv`G6lXxim{Oib(-1_t*XBSjsb zoEgpv5%XPObRD3wOZI(Cjc#$@GeFe*%KJKMm@SKQ9mcC5L;3GR-n;#&mnQ1D${!df z8ZpgJb<=NhOg1$A5HxKJ*hwRkve9sLo%@l&qQT()Ky+S>dHZofO9xA*_sRjApBOD_ zmeZy(uS3pH!O_9R&h}#4!Ox5lcPN_GuHCVo79rs00H}){7SuU$bH6Y`G#4d{>B$7} zmw@zj)al9Lkx}<6ptAq%d$#M@y1V613IPPak~y(t+| z{s@Xz9|o`RY7Kdd-h%s+VWQ1sUY-qxBCkWvpTW_#sHQ%+&wnvUG%q?i37Cuw8Gi*s z$EmOjP3H8nIgGC(kj-I#GgfqIrDQW&Mvu_H1FH5M2a!{!LH=R1XrLv38YHVk&OgD? z#uv;z_F{5}nERKZqJvb)&|zAH{TncC72YqE} z4b7%>L3!2BAx4T8W62^-B1YVy!1?7aydsIe)&co2V@2(7en8%wl_Kfzgv2E;9=nij zJC&Y0!bs8H+_%(~$dGa*DB3K%Tjuwz_&YAHZK!CoD0Iv+Y9w9-W&pC{{1*ELc! zfY8leKoXX&D1SZ3>$YON4uvn^aMw5O4Kdd_W6Fa7m2Uv$OnVN7;f5xEVC~uKka8nX z)P#q52H$n%ZfuZfrKe{a$#jJ>WZVRdW2GeIm&ue~r>Zig=6H`ZvZ^_AqSPm}Ny0M9HOj$ulAqT!-5ocuD1jU5mo<0LS0-k3BI^~O#%Qq;PZ zdSgM1v{OLS+M<6WuGDrpz36UcplBqh&qwka)W13OPh`W-Ud*6wPB_hTs^P|B6&AUl zA*0JA+yY6^L7$6bl01YVWe(VNw={0l*p|QQF{qJtE6~(tN!Lsr2XwbKR&@T;$i5Gr zBM4W^i8u`i4RZT{_*gdyvb)Tf_3J7ia^mjOS zmQkV>v2di{p}XWaK>HMSF>eub!9&_cOnlBZ;CQT;^~V&})@ClxK}s@{As+%d*TB(+ zB93t?IHSGUk6L7$2Zp*&BmQMJ=pG~fgFD|)8)JFQY!OLbXOosA@&X_;Lyl%kX4T0( z19vd)0nE>R+4jqle} z{lq*D;I6x~QKLg&+H2_(BIzz5X)ob$$36XbHNx4k3hg3dVe@EwfC8mALfS7vZK?LE zO;(;8UWfRqMWiZ;0>w8${G@aRrF)?G+rXTIu>H5#fkg^RFZ$0XrmAc##ughy=#)!7DQl|$u zfst|%C|XL0icN~O>A8!I5Y0uuVKf=)Z->4*RK8bNE^0SgZhUY=N%w>d5feaYTQ;`b z%Cy4>(PCO76Qg>G#v~Zp>9ey`@z~tmj1--B7Y(`_xIXU@CJ3>A$w)`~7QHziW;1Etc!~ou+hsql<`gXt*3(st z8{OAfvVvMH%w*gf$xv^XfhbUCWCKXISC##ZRYON7C52(Fj2d~n!P6;F64~l%Xsc$l zXu~NEZK)19bKt1e2n}bXGTV}qD6(IrZlGwk)(EhAHR9%hQ(urrr7_x%VChKXt!}}H z(T&xzEve>s)H?VNMT(>@CR9In(0hI{gYQ*$yM|Gt`Aqk83mawBNW2_G?HlOv6K&bh zE%)rWD~uHF8^wJ-D3Q_x#gD&oHd;ET)}dQ6Of(jdI~Q#l1hkTDgrO0ayt=mOM@Qe1 zp%F4fECZpQ3Vondu(&fgrOy*eWJqxdC2U^w`%+xjDA6h@*}dqM2P6XIcOTO2*9 zT5)Dnik$m_lWih8jg)!Z1@8U^JJ2SQh!OVy;B+pG7a(zOD0jn&GiR^4yvnH2uySf^ zU#T9!4_qUk=eq|P@xRXJ`NTaKI2|#QxTRkyyn1lh8o|ocO5sBQ)0m;Qe!GhIp@xc@ z#)9@AWSFCe0iuJYI0&-ATiQ{2G40`oinhy?>sus6+#`TfOYA2Q<0}$#U2d+rM;a+Q zQ7N201R-)B1&(&?U?Q!_p1r|6+E~$!U1B3sY6Lz8z{6=ID?7)gWuNI|jS-FG^*J^w zLE*-X}LbGc`7` z)ji!9QR}uw_cuKvp8=$rRbOJ->}2SW5aWoe%W}1Qrh)%AAx4!Y|5@PcDB`z5%Ge1H ziiZcDZQ$rOjKY18DJ{~T1DXaj!;XG&L@;0C%@N+aeXdbQrMInl6Hwtg2BtwdP12tS zy80U2In=E7=Eb3M&o^Gw&CPT&$=#&ap#BS>pIvnw?(*$O8qIbuG*Gkwm2`rP9-%J+ zRA*kH%gt09O>q|J_mttOroR@)f zT>orc&Lg98IZuDN@uCjtTJ!XjB+;(`+MhhsBcgI9(7n=N(I(O^Iw2|=RDV^X?vE14 zT-?3d)T84_(J_K>!OUwQuAZm*i51!81mpNx(~r(g`o^h@67%pnV00kid(Zr_m)9F4 z>ak}B_ml|r-vE8Bflcjp)62in?`TrhKjmGg`Tm>5b_>Cj-i>+Z{@NBO-I;I@?L{Q zEq1qP{W7OV>ia;|l1#jeu(8U$--sKdgWqbeE@yeGcJFe(9DyGIP}>F?J-6#|h3$jJ zigww2dp8jhJ_Ld`bw*#L>ClbA+VlSzBswnig;jC~PKot_c4uUp8x|`y-OAtovbq$w1e8V`=_E5eREYTzJn+Y)lcJLM^9cA3N zj2Ml$6b@mD6k*>6EI4FxJ@RyA`wp3|e#agmL&Lx0BcJO3#^l?XJ6rdWVq#xx@vPJW2K3a^>eV);QA1P+^##;!X7?Z)|5>azc6C7i4;Z=vT|hp63o006>fHS zzZx94hIbw02>dmG8XD4xTjmgk`;8H!6YYW-Tt`jbplBSe;*V7R!Q`V&u;@sos!;ro5ZBJc*Yb%k$AjR1GD37h(s!%5*P#BNp|4HA zuf|H&^e1WMe=$n5LJHSnQ(C0`HOY-MZSL;Hkm&wqoB>8!yEiH=LHWN!{&*Ry?Uj`2 zjbxG-ywT_%#yapYV81N+{{&x~x81HI)RAVJo4x*JXgAR6HL{Y z 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

)@cgC^@8~<-$Rj2Q0YKED;J1*ZTl;p9jv=&` zgvwiSXBbn2W53GbE*Ra>PEyctNgSSu(-e6mmXVoe+K3` zf(3=SIjk$VGmSQ4`e5JpEw_{x%3#HR7Wtc}4?d{H?KUA7KypK0cB!Wio=oyMwUWU> zFeX=8!mG^xGd+_x5b!VVY||An(iNdpPsNKld`UTnQrPn+=F*nVpu3tz>SIL_XI5!B z-Mja&QQlNVL;+S9VT}yZbslxGFJV9|oXeFyQhtMTjwQk9joZo!wMOf)6UaaL(%?v1!j~-s|oxS+kn5U$kcxRtAF-D^?@Z6Jgi~Sjh>6Mh;0EQ<^-nvoo!Y_z4RL2qVJ^`oOK2 zkO-@!eq*0U6Xjk~-UhV+gSS4#uwOdcXY3K9Tz74$h0|rV{Zzzvwa_9NiNLtNRa0@& zrEZc5mTKS<^07_wfziKz%C7C(64xOHejZOkf9k!Bc55?jfKnR>g-TpWxDO>1y#0HJ z{aJ3Uysz;_+-}V%n_!9Se&k~H=1uP~)pz$dz6sNqFo_Kqy3bJXwtN5-=>r03J~L}L z=D|JCNFzp=`b@6@Pn-`TC%1AGkG@;#@5d&wSvc*w{&+)7Tt}|!9&93ZH$UMlsO~;{ zfd}l>ut?fNC{3>NuzBwkxHA|F+)ncBKGd{C3`ij^MLI$OK`J>&5kHK?>|pYvE@mEB zzCbz*_i*Elc>47tuK|kn5oE;=d)yZH%Wn-QY4SY`$1Xh5s3UHfNJ*oshZOmvNPZ;9 zY4^*WQgPP8=KXLQ3_6P;ym>D1f4E1Rs0#tnV2MPhDygHB;Kxw#UBOm6kTc3S7!7!6 z$fbZ;?PE=8r&(zc+P55>1BhkeA-t+1y4lQdsN$2<$5AS$&^bT&xHI3z(x!X7DLS!P zQMD&LffCshNXCFJg<;Uwu2V!t?ul#R$*=Ynpv3be^5lFx4qL_jHlQaP)r8lh*~epm zB7909%qBC(xP$J=J=F+f=2*!_&oYj9o<<%%E$;wsCI9PmyFDyiKHZoiOpD~JYBp79 z;(G@9=sWil-os&EDi&Um4oPhGGmSOEcOGy=8wzDmkw1&%?CHvx8N7@6*~T0($EZ)s zATTjLhm5xaV|tpzluofY6`{afSoYW3$(=vf_@j)e;U3KQ8GOLNfhY!vdLBisgDA6$ zw;)D>L10?#K!1pp9CRNe_k7b6;XpJr-vWX$UxO_rFQ5{>R{8caqHXm;f0W% z#PuR_adQUy{Mwar<#eUD*uB{JFT|G`difM{ZENL5Cy6hiM0K4Vrehou!-m24N2!frTz`jw`u+pH^vUE6cwixC(l^i>pkD-c%2b$J&_8*xr!_iB?D zkxt*hRA*KSGd|2fGtkoU8tPaF9Z6`!CM@-I;Q&OuHJ-Y{{E^WKaS!gbCM3d3RuO1X zi!2?lqYnD&Si>bxExaE{CBl^YuQwGDt*D5lS}9(XtJVl4<_#3XZUtR*CbPWqdc4sD zL=2vpF1~;xo;Q()*2glYz1{dD2COV#bEn`LB77?mlWF&cgQ^Iv0c0eOrlOlSriPW7Nhm z&L={dXG$vNhC10kso!-UH$@S>KoLyBiWdtElJg15VQaT_cE;Q6$KuQX82|eE8fl(^ zC2%79B+1zHI0wycb5)d)`;;+87^k^uYza$rpC%psjb=m_UDe~&<(~VD(Oz~wZ~{xi zXQ_d66}}z$WYn2lUD)J_cW>*g`~SzZV5uDfl84sB1TiLX$k26gX(!m``Y~in2|SB8ltE}NN#$32KD9%=h3wH*N(x_`K}#qaQIg<>-CPR3s>7{Qena)7$8nb5gr zp)(+0--Zs)HoOOxHIPd6*QuJWRaw*vI8jv}+Q?Wl#xYRXZ}JV37BPYuirS8q3YcR4 zCYkwOGajgmrM)rUfTf*289QGF-+;bl^brvr36#hu!b-unsQ^DU*|HLM*>_Ap#IC%2 zUaU<2on%t6R9qfhGQLY0oF9~;`qW13y!Y>!kcjD0iX{5B}r)yWpn-T z2nF{mql*}i>T>-MNj$$M4}Q{3)5rrEvf*Kt*5<}z_Z#Dk=)%H!lx{H;m|n67D*?Zy z0B$U|XH>Z{Xaz42){c5e8jd~A?sq0=!mwzFHBY_EmxinTttsw+(x*I+6#kwHIb_G2 zVTIFR|6tl8ydZ`ddq`G)AW?s$DB3KY{#>`EUwB&KAi+PGga`{(U)IB_!V=q`$;MY8 zIHEe^4#)5o>Wv9U{$hL)leH@MQyx#8e+_pCn`&ogU&ckln1H_-W5ipKvC2wF;`%$e z?u7db;Y;2Vr*NHYc9o^hGNPY{$cDP={$UE*_+rBlQo>bzm#*fMtYp}v@}E@6X-gqT zUUK}%zf4fX`bKSjJP#(mf0K`GtQaD_jBUK`KSsB{`ThffZaWl0#5LhWcmRwkA0p-r zsww`jg&+LiT@L@~xA;fgUWFNz1ryul$rh$Wv3fm>FQ(jJD*ttC+3}n%hYcSMrJ%>&YbYsuaoS)dh?dE&b{amsj0^ zCM3f8^54~--5iP-u0{q;81ag7jm{6?-rMD_ZanLoZ#b9$y3tU`!in%2B;>+s*graz z+cJuE`&D;MqutU>8*oG$3T04{UyJ0|17>({HzkP}5wGnIGS&z?GXRJ+6f$U{yEf@) zXXYb^5RQv2`o?xr^F7u_4G~LR*Cki^L1LAKiz?SMw)M?y;n`I@NDn8%>ywamNw<+D z=)>FwE?IX2htL{cd715a{0KTo1!NhiB zvaQ37rL&{mnDh+yVZBJ_rlUfUH3;#pH!L>%@Z@&sstT!hsO{7cMA;2y|$2=NoUd9jZ7DgNKq6kBT)o5b8B^f#0 zO{d1`C;Dc%)<5q$%M0#SMm}MZ6s9OCh!mv7^ivL9V%AX%E4}zyyUuKXzq_>wh%gWX zgy=&dbQ8i8-s0X~Ya0KXLzdPdJbiaGrjt-J4F>bbe_ywme9mBr>rUjN55#swjW6jB=7ud! zS+Nt!-Ps5u-gE=;tuAb>%0r6xF61o_P|Pgj?rM}LHQ!_X07WcuwaCR@CBH&E90`YC=7VTB?gUd16DET;Hy#cblQdX7y2KZQ9}CSlAWOuF z6mcDh$olM<4y^4?GU5~KA43>?>YR3h64Twu6r9VnRWbj&hfzdKZ_3VPk0SK-M86qy z7BWF#Xc={umiP5%G1J*#bPor5uP$ z_9zFXp4)DcA{GGxhO~r&8Mp!z>1iZow3f}#Q_D8Ve#2f-%UkYrQxIWC20$qYg^WF0 zM34>Ng18j7|dvwX!73BCeQ!F^^w8g39|KnkM1nar#bPbxH3G(=`yIAge z1mAaFdUD;wdAy06fVTOi)@71ZrWYG2BikBYT76G#I7JY$BeMKjI;bV= zq=RRFuNxV|NzDxPdzpwOt}(g7dr@AO+`NdRT?S+JugXTp)$kRQ5a9q}V_wtRWCf#y z?xj#VitudJ)9gxiG;u0|-1tX)B=v4Kq!eD0Nd&rA zoKJw*TCCTvnv!#xA5#FG+;>zGN!=w>cL;dQwbD|g7Q!W9rM8%}3}=4yFX<%-+DGo* zCU1g$XlQkg8pdzca!A>IsEm_GxJY~ZTmCov<70PUQ$Vw-=}pnM{i{*{63zWcL(3-F zy?`YUrY+(!OcF@w?r(fk5qv%oGtKi_L=iuL#B@UyO-H4$<5>X@G~NiCCZOm}Lm^nB z0aC;dA~Cy&oI$l;DMBA?lo3^1ZAJ-5L=Pd+K_Ci8frpJr4>gtuL!p!_Bta3y!$`rW zSKM>UK^$vp`&Zq=jV!`04KS+3Pzd{Y4O7&QAhn!Nm3vI*(Cv-fBaJ*_j%iW%Vz*Lm z>#AVI|0wd)MuNT1*P;azpBpN6u3!K~Bqx?pvGY#*@7$wJM#O*?@T4LX>cJ)EF%)xa zi1D+(s!bYmFqz?obdNPH6Z((fVJyN)Q}JTDO(Wruq{mUx4In9572bm#-YY%keCA;f z?(rsLJ^rSl6RB8O&cliE31qx8(0B+d?f?hRfOF7AMg(lz#5180J@1Aq%kanzml^tl z6al7Vce9QF>>o`$i{w3t^7xE``vRsG&Vgg>7?S)4Uxp52c(RE)t65YDPU=cmizL$Y z6l&tMCLQaugLv{eIUnPxrt17=RViT4+aY7xA(EECm0te)y% zCE!^U5Y}sV_h-?*TVZ1Eo^8BqU9T-5iRw9|;%J%dVWS@{`IzjAd#>?CjMCnm9bCCiilV$*RUzSPi zoK9zRFEv#Wrc=cM;AKcLzl_Z5z-(^V(1m9Gx-d}O%S}LpJIK%)ow|UQkXHmD3aBWY z6XW~!#Jl`T6B3a;!_bn(Qa*zwi!CLuq7wE2>3&EYc7nyPz1R}@Y9pWUPDX5rG(=Ip zhLp6tV4%sR(b_@B#?Iad&MywKxb9wS)DhjD0qMT2RE8D*>&Sl?_=_Bdj1_XsBJ+u)cJQK) z`gyAf={5@~;z&^OVgsY(zKwF}9l)AaeUd}utO^IDz1?I^urGr73}Y9ddPfrXR3weG zy@T4aldEhe=PT`>;Rzxq!vD8`A`^l*eUN!e_ zlX984Tx+PL@I6#WUG=3vur^SrIPuB2cBQ47y}|fHLUJ$@v`k*gk07$KszG-v4Tk17Jk*A(Gqm!tPFl412_>^Ve;vnI#xBGK#9EkZ*Q?;|X zK2k(!N{jUblJqf3qBXrd9QF6hC7OO(WU}9nn~Vr|X!>2rNQ>zwf{OYRq^7-KF*|f! zCVlY#80$&RH(wR2lVXYNlO($q$*{Mz+ga|z)eB#y`;_rS%uVtuRe2<_e3~ruG=zXS z?jh7D|*OZ!Ii&C(ej3tVL!3S7n7lB$H%*kuupkhV^Ky zieZ1mB908fxmcKVa8~vulN51~PymvoP^dr^{g+A4z|17_D>>(ZvHUpa;VZ@)u>w{R zJC;Ke-&e_ZEAW|bv6$b3i2w#e_cf!AFb54x_iUwVXzBPmb#PK`vCQ@XRwRz7{f6;J zOyBIgzRp8Hv|SdYc)v+rzNncco2?AQ?vG{`_qcBvYs8BhAVeApSOQA%MEPw}vdS&h z2Ys|k?lDFl^G!IRXNn2@-FJ*UqRI_S>{hCVmX7aI2YY<07W=>&A7A3WX96NjIs0-= zoqJ3%f1k`8{%TuB;xg(p*W>@1iZk$)26Mm=rNTVzskJr7ul+;(Qp|lyV3D$Ot2vdO*?rhC&fi#6Ko6 zM?S3&vmbABcZvIn(M2r16jqrHMGQX;44Ks(*5J>K;ppZXtXkXwhzNd80!ESZM*SRS zgd;7HS*(RC$)tvhh*)G!yw~m*Mjqj~j*eu=lStezDK0p!vrba~Y;9=d!*RbdRT1`e zc&xc+96Y-f=#ukm$_b0i<)wJ8!EapYFEU=$PuzZEk~+;#iIUc|5MSbx$lp>VM_a#u zPm;rBs<*=mW6)kZ`SVjz1<(C`P-5HaEh zAkl}y_A;vI|44d9y=4CoYrSDJ#-EHiB04uiHiD{sfie*t0qWg zOp*Va+b~IUuM8LLmeq*n>FWmLQ~6P&QtCGPRwZ{-`(7VJ*w< za`<0=dr^Bh4 zS2DT?Q?x!*D|gbxmC4CH3`Gx4y`K`%Y3?c}C1Ru~Li?_%;B=kHr|P*XrE)m)-8q_n zE?^z~OM7NGyNc6KlKoN#n#i;9t%eqw2bIM9rKyCk#3ON6qd2?~wM`eB+_w(g)lJf= z&62E@PHeLRmWFFkLtGYM}hu*7$5^3fGswTU=cioj$YE9TfZ=i@i8V-h0zY=c$R zTS*`MPUT7xX}d19u_;uyAGjJ3!jJq6rYFMw%R^0Qoe8>xT%SS|_KBr3{pR-zw2p|jD;RV1P7CVtD?b>m)}_K_uCmq#5)_lE}l>@EK%K_RPub;Dbt&oU=p6M zX*|_C7+pl$O>fMS2KHIa1i@W;WOy=11<1Yhg7EkyB$lY|Mk>t&I5~pnI!zFR)KrJ9g{_brrhp~3!^y^JK;6D0zgGh%+VW7! zBaA&_8eoXJSt}LxHD&Ro=twGJqs{x|(J##O=5YY%QKlinGOzc_2Rv~eO-`CPVGSc$ z3>o>1#>sY34My!G+U*#VaVEak(El53V|-DTL(-0=v_nBris!6KaxpvHiEX|(EY7*( zOkl(yQ3BU9D_xyTDZR&2FP#nEj7mcIEf=tsTfKGfPB4Yj%~hC(lf3+;kZU2sAVDWm z5W}>q{~YZ=z6u>KdXg#Hbr~wkQb^L>DM@Pq$!b?vpSpOZgS}x`AH9bO+0-m#HbGIP zghCNg#Op~+7e@&G*pkK_<9tYjxWEUr!MGzFQ2|KYp-_P;`i-Pt2m0bHHAE|5)eq~# zXuVUWA>u(4(WIq#u}C37o9YB1N+%?S^6uKrm${%Kg#>M(AkJrCV-9*_jsUy#2{ATU zK^V>W`PIp$CL%jY3Z;rkixtQcaSBB+?1<4G{-A;+TGaL+Z8ZTAop3H_q!LfGr;?Ty zU1&xdW-z>BcNij+`rQpHh%7R&Pk2X$*I-zl~-?QeYxFi$ru2xZZvwtlhbpzn$-QcN?^4e- z1?SgSZkRBZP<892t2JCwcpeqXzaRFC`E_c=n)p*^kwn2nMMN#zg15w2sSGRr3&_t+ zux_qU(<3(3tWi12oAKP7Zhw3kN7 zKBJE#|dyMdO{B6USorltG z<}ZaNouEs|B8Ak{F$`@a3or?nK^+rOv;)#I!2s(dS@ItmQ$+3NgC0{9p)V7i?-6T^ zMk3GP!S)NB@rYFW$-}(Z=px>u0Hj(Cg$h*BJJNGR4vx8y_he+05qDVf%q1wI7?VQ& zvZ5iZIm(I=MLe|B;?>=y#l!%%HPO8!We;6m0j3v5`7HMtbA&B5aRE3$>VEf=nqHrL zALg@bxm6=wk3VU6O#*^$HWYl9=;1_oNg&Ld4=V$nHs|hbgm-TythGfvnCR|9y88Zr z`zz=~zOV6Kmit13<7(vS_OK z?1d_LiFp9U@IBs))vis*^DvwrwJ=kir(v)WXG3FTbPqHg5kqnhK(h&ubWA{&ga=VV z*h0#%A*La~NeVn7$UWGoPiSrixoKVjNmLIZ6<@Ei^Vo+3Y#q6W8e>GKWjMN1E163= zpo;xrWWO8O>pYRka$Xz%j_t%aKn7{q@Ok7OZki$tRYR91D{XM|I^-Z}V0Bzl`iP(u zd;W_F%W`FJx+zN;qKFXb{zy|A;qyag0l)0rkfv-Rr362Ug1Kci_Xw&EmSk?mk$bes zjBxxJX89r4GDy{9sES=`-jO`x55ah>X_&A^5Z>;3H?l_)-{Z(f&u7^Z_ECdoX1m85 zdBkFAfYbelLTY6fuqEXQltLeRIWBsx50Cp3jXxsFEntX06w*Lz0*drWBs~J8W)!#P zI)mg&mJ^N9VGy<7VB{jW43V3qX1jp-_P;`e%@y zZD0-~I*&R;jK;W!MVvNHZ^g+(&ot%;6RL2hm55?}7Fj3u@dNj4V~)7z39op#~7%{M>v6gqK=j^pxLa75&uq`<1`dL9L@18I1# zmC8HJWB8WP!@{hf&o_+`VYvY<*Jac}OUMf-BINpuFK>^M2gsptHDHSscARH-*(1Tz$PMiCBS%-uzHcDA8}AXqp{q$CT~o zlF#gU+#5~bx%m5rCYQpkt)C;4guRKv=q0c?5QjxMI62>JGA5W_&0cknCaSlPitf#7 ze-Jw|JkHLNd#h1L1Tf^m)JXG}LO*Tz67x2SVOJW~m_qup&g}owcGiJyUFZMqwr=fs z>&mco9h1@|rFB~yS(a@zvgAr~paadZl|+qgxkq-Ibj-}m%*@Qp%*@QpzxVSw=e#=i zUcs^Z{r%B2*YSOxbMHNjvJX7Aw|tw1A|fmG6#D%|8cFfnAwEjP5}usM%sbR`mi%#TqmOdBL`}r(-r8L^!4cqBr8?Z|#T4sABy&W*` zQFmqZ+L?g=KjUJPs0*XqxU$5#9s_# zGbryzQ1A^>jhO@c7R(3KeV5ViVMtR(Saf|5F68sR6rXkjim1A{lcGPQ&WL>8bNIae zA`7Mb!;quZmag9xr4eC1qS|evAJr46^%uUn3><|Yh46Ml!*+1F5>CjFF=v^Cz`x3D zLHR)rhY`q8JF9btIP7dbrr~Ie4hO*u#5xoV+s6?$6z!UYE_U~~_pVAN`UwrekP-ON znW*Pc_etn53@UR$B+cez9!GBJz=HXdx*|q%-MxI?B!`Yq`$y7vFeMePB}`fRjA|m{ zvA;bTr#y?Q&q8&QJWlF(B21;=adEOJUzHIJ;en?U^?>w#9^NzX)nqHvwS~6CtAjag zQNasY=60|xt5$6d?F$-!n%poViw=2w?(hfw1q{#^5g@cg`;I)e?exqqX-Fbc^vIz{ z3#I+bu%9n>?ldC<6?Vawom$6n3)!Tx>sOHGqz@FOq;$W@vS_SH#Bn@d(ZDT@eocF1 zYdXBiuwQHAZa%|T@eHVaqFh8fTDpz7-;(*7hAbk|X3N-+Mbp<|LhYfqbw}@S3u`M| z%s12+@u7P6GQ#vOdw&Cz>Tg1gp|U0p3~TMn%^aTEUfeCa=d=#Bk>`9%%@JJ&9zw6b zND-<1Hnf;IAX)R^9hhuy(IJ%E<~tgW-E!NAL^Hp>EtmoiL-$>T4t0Q`X-(eds`;J< zE2454;zp-s@EM%%BRI&@`fR=D(#j7s7!kG05nJzBB+WmB8FOUOFu;x{ZjNl96MbEq z!~94?647y<#`2}4f5_5XSDVXHs|Dv`5PysyBJHFLd&%KAlg#`?Llp6DJcS|g7ry@B zkre+F;#-M0Ga)71bX974^|d{hO2%P+rs0U#D=PzKfHFVruVVOqj_{#I*C*EObr@w{t7PrzlNU!T&cb1 z(L(x-iX)mYzVDl_-(N^aI0g>U-lFce(4nH9nB9*}6ZV_msqF&!g%SCdzn?aL!KDI( zQTBVtP(So%Z=s3F4P4A0)D_Wrl|Fk*F|_;<7G!~$D2E9Geo`0rE&h{QcZ`0*46c8? zPD>c3KO;=2V+}r%YA-ev!O=8-(LhDC6FrY%@fVWlbviJ+dYT^2!2A_~NlYJ<9l@o% z{F{m|82mOy*U<^1=LQLqi*>z&XdO+0>mt!A3*YjEx<;T}!+D?b);Q)CYTh>bg?j?c{=&`a=b>s8-V#Fggh+n`clMLHWeeEuZCZ|W!=_s1R%(rS z-N>VXq19htzFLAw^{t`4y*!8?jzfKAyuD9)F$XMDJL}BN<~ACdU8CQDCo?quB1Xdi z-WCD$n@ZTSBRi12YiUukUOj{Gb{f2hrd#yjbyC8>-5!BM1=|)s>Ai)pC4P7u?j1B- zJ4e5^B$6*L`6IuxP|Cu9<$S@FoFXK>(RSZFvq=LsGdf^>I?RXT z8KN^0BIM7>Q9l`pnqQEOOU-5tLPSY4c;wIX=-dJ)i`;!n*e*U-pVWREsp3mLf2&#} zN`Nv9C9w}CDH^{GVKiRqK< zN-`#|#)zi7)*$&(^-AlL2{gkohH!+dbugHKeRK-yji_v8R_izl72{B#`N+e6a`sP| zpVm5LiYmF2{QHQimc5ZrmLX9z0TJ?uOzjfws^*%^$yzj%s*I@S^gz`1E?up)$7KMf z5C9ZjIu|+DXS++>ge3%~q(K>yY!x+NTJsPA!*mhCv`NB*TFao)Ube2owBO~h$ltD^ zyX)w06J6x@F)^5B1QUgsG#sT?w`d2Bj~ zn)P-`lHZcUzT{QpE}v_!nyP9e+O9o{jV-#FQxZz`4AeIlbt3b{K(x!~?EsqH$iQ5z z!HC#TW<&-*z`;<}5Gr&m^jWTqJy5!`WnIhEH8c@PNJ)GrdevJ7tz3qnfe<9}Bhy;! z$mE_`m2N0MvJ@(I_=oJx{9x-7Q<^#RL*{+A%ue-16lMJ;e`J}oBhzQENuTPD`{oj3 z7tL<7WhLSyypz~ournt6tcFciXenmRz zWkNP`xrGjP(KKdWjS(~GnMy7Pil2EXnSoe9AmqOzWK#{PsLR^Lg8vJq4KB&rm;DQK za?)8#gAq~NQ5Zv^SN+ip$6ka3vq}25`=l-BDwKRFXwK}@09`WrOC+fbRq{u^fteLC zc>57N6oPxY3k!R4{L@YD1ZZq}V`=l2NC7%3R|G8A$G`?!v*b zV)Q_=rBSsC6}szG)s}T)vKEiWMy{!ENDF_oFF;ay5K^@9WEFh7 zyF|UNY?3Y$z9pXT;ojxuVH$v#`T$=X(pm(XVR<;ha=L`YSD=HwM+wAoXGwOoUd0}5 zk62GYJk2J9Y;`<=W~=9_EdxnDac1FA6?~T=`0fSG!0P14sM>5h^_sw48YS7 z092Zi!!eSZVb9iQsQALsZ({IZjHS`{O!!cABeR?D%3hrE;+AUm<>4KgXQ?xy9_lE3 z)+yjjERlagB>!R}P<#-#0IlpWMg1942;(_<3;S)k>q8FBFP1jpkT6 zU)f$RRf^^n_`Uu2*x%e0QQmqKqmIAm%VpSJDQsrjvYe*dSzBJn)hpx8e0_JNU|yx( z3kSamU+vQSDb_2c(e`TCt|c(j%IzrD#;WzAd5u~&kG9Btua^NC{`?)}tlv#CMNQ5!S(6;ik}ZMM*Mo|F5Z|7d$=B+|W}#ZHSnV8WE$8Zue9gQ? z@n;QwXZ~y3`zYukh<+>3M+u?R&FyMdx0|;qH#eFqHxcS?Ch_ecvVW3?s@OBv8uEAZ z4n?0o8jYHYquamsK-9bwn(Nqr7k9~5u1u6B&AU`FBqsT{5`6wXqschb(^s`4lK$7km=0hY{lzk8~#7|cR7^_a352+*KUAg-hmwF7cKMZy+I@xX+KE+4Wu#xE0 z15xu)XwbftMOZ7QGcQ&1T%lIXH;ThT@ocfuDCNuM zQ>uyR&&>bBj$(7NU_PUgJIgN&&G``zrMR{kP8LPg zXQ8^TkYpbHawk_Tm&T-cHlI^V#3-P>mG3J-q2Tin;G@`7!DF5o8NZ;4h><6IGZiTg zC13Os=Wmpzi{sVVhWXNZB-!Wi97?_n$J#{6nql` zj0M;nwqDNHr_8q$ACaA9vSu;}|2E+ApY8`cUaB@HO66j+SSeJ;OO?syM7f%8nD3}C zq88a_Q`iAq2I9L21YV)MXDQ#t^NoD5Rx{sIWki+2f1(6}^zVayOQHJ}+O^_jvsSEE zXKRI`{N>`=Qmr^GxlFxTF4Y_62da(8O+Ay5&tD7|Fi=1AkBkbIoQ*yweYVnd{3CTo zd{*2_Z-PPmkAY{uJEz^{@)OP3N@NzMX>M6bTL;KZOG&p?_>yNH4E5KW=`e zmLa*QPr3f?#2fS|ihd3e5&$dLm1@2=SvS8>$B??okUF}>kpD~YgA^>Wp)fURex-&D zrC>{;;MWlJ>I~DJ1zF(1Z2C9q*hrnB2cqV;(6BIIwOrbQ)rpCEv0;9vmWZ#O$t;vZ z$?ucTva2??yw5(%AJnpuXX$~c`6D!#S>(Iu?Bov_`^9LZ+6X} zRJ}`X8BlEd2$v=@;-!DsPs4!y838*v73*EitUf!|l$dM&qQQw6=olFPlTgb43OO1X zsDtI|&5~5WCe7be7n5n=PMd244ATD&`WZr(JQTT64&%-pv)YwOhiz1Y^%SYD`G-0y zqu;paQR^=T!x@-=A~49o(3>OUDN+~}5tsj^;)uBH?xi=$q2u4);VL$jVq?6zvts_E zjv;xAk51Wojl)p!Unnp+$UQbXzu36yn*XiGBDaTcuZN-Kh||S#b+Js$Ez0=cRpiq4 z_(Zfi1tqa*dDRI>AoQw$BC@%+Q_EK-i{@&|j;Mxb-wh$e9|=6$6TJq=OlhWQuC9iN z?*1XI8Ng_|hBw))tz4XF)Tc@l4Re&5BH~geUsMhyM?-SWBlw}E=X;@T%rzB%ru=+F zt`vM=dpoJu0ySAQRU1WfZ6$BCXc7tq*MR`-@@{*dY|Q{{%ap&B+6Z3!X%7~oME zkq;(y)lwBT)f*{&i~LLcm-YaXkM(4i-o|F@yUlS*j>y}y$qfv`j|UuY9(6?=9wI{> zI7jpZeEU5y`>d&-CCgdN9gv44I2d^dODH5G;p}HYGi33Mp5-e(N361NO;MR8LR%+NJ z_5ly%>jpuu1n(yE)?fyCdZpSJD{nWqQSgTHbW5S&wh$m%EiC40jq-T2BFXS}ijRm^ zawFqy03iAHAfF^;AEB{%TC*TM67^!eS*unX<__u^^1=Q4@t8y+$uOzTL4BmCxmETi zwM0Bks)hpqk!J#l4`FN5jb=s0%eI@%%8tnrQ`Kn)A%6?_Xe!8zrTy~Am=4AN&n@ng zgQ!;bFLljUl|?ia{QZ1gdXa%reir12xwf2=k(9Gl6%liT>WCCl)$L@S118$B?WL7m zy_l~RrkYaxRcq#4Wk=+|xSNlV#!zw|B*%(G#?(4%Mz)cxl}pp52D^pK9aR)DmrDt> z=~cj^@q8HFm=ni6?xd2OgkwY+58f1RCh^W7qSo&ULunDrR-|jBFlFwd?1}HMa5yLxCa!--4JVJ7cfro zYbrk?cS}S!M6%QHD!VmWs)+bjeOg-8-k09k%k?dW{6+9l1LNrJYNxZ<&5g}Y)JvC`CADmme;@I(g4^i{ zt}TwXWkK4+%E*E9jv2=~s)~6a-W$X*kD+44E0E^UJKx;j=^W^q%Ty8ZMH1n&q4f2phV4OJSzAbb^Ye2yRqOD=#(1Z%3;CjUO-a|E~ZMFrOuN83R`a$=;9 z-E30MNQYFlHl43X&jf~;&E;w?jW&A}wf>?nmq9p$AfTz_H_`RO>E^InBMLr$w~ZBU zcVCa9=n9BV5s}WBoE~eIWcpcgm$b{L^NmuqV(z8RDf!J2?^r>U>Qxp?|GnWy)eUh= zx)o(B6LTNcMbw58anb?^zAwP24Y~LzIefWj?x*O8=$_4h2qFIdz#~T5g-*Gq{2!;} z$~_NIN5mI$xAR?PP&7RdrfZ5xs=gJOQc*9M2dUvq`T2y;(>ks!O5fra#HACv$zONBC@oqkmUO5&` zPlYM*SxOUC^E9<=?6U}i^rwT4&(hsLCmX_GE4`*&RilD);UZFaTSzG3L>WPU3{%#u!{FP(T^n933mLP}CJj@R*Rc6ZhLa{niH!o1(e_H%5Er`L#awkp8sPPEQ${xHQmblKW~axBHS;QUMs%HkW1njvkm6TEjNEnK zd~UorHY>du6{);P-L-CBqr!-mtK3gtmP5~L;X&m@mc)!#rHWNHuTy+P4sfDB-L+)8ed&@o@*asY2}A?&D&JDO@3iOmgAMZ z`}y&EmmWvm+XcxIX{mc~-mK=z+hvw0n)&ZgS43{(Zl)*&qUD{igt?8p>8g2`DmMDH zY^nNg&~JH!q|mkHxwTw=HapQcKR#2KZcd)NWoz?n^B(oi$W0?&W7It65YGpG@4AAt z)x7WjXOOlsNbg6GTpMI2FI{ls<^yVtNajHs#NJNo2SH`wk1>q7dDH;6EF5mhPD~$C zdPEFLjbwx%dOi#fYfe&Kwo6YiMZIo5qLzp%1~LoWY_s1aiJFf>lZvRb=40yEXhfYQ z{o`r+L}99CK5^yfV37Vv(D8w7m#^f-=2MD}=*i9W6bpgiPXm0sfYVjVN)_M0d`2w= z`K1x*Ng4bGdgTTVERojF!it!M#(^{~nmF64wP#LNM1M|&5v5eWrlyFtM5c0|;Zgc^NN*rg-@S%T>5BAZnQy2qqDRKx z%{b;SJc^=kLWIO3{RuP8o%vG3d`k@xxna-^VQ(k(+n@%YWc=b;Nrm50@P z_Q~eBENLq=sxoQyFRF+rE)z4e5*$9mU!gfoH0hp^$zr20m9NQ&*n~8Q|E9`G`P~6& zFrsrLL1h5`jsP4bP)S-f><;h`Rpkb&e4{8xkGPq{e}afNhlY8fSd%qVGZ-?F1;_tV zcEp=YwCfWbYW@w)^+aQ1B9^Q(7XL>b=gB_~cvU|9nON*GRQwkT}(oC~1$w!(=S6ABwqiz0vW|scq5`|HA4ajaU ztn?f=H-YZ3oSrSynPvNCY~A6Oy_usl8220JqVbEXqyrf*rxNl%=J}rm(gEsK>O6OsJa1EH^RHh_8yuWsw|@N zkjSr69h+1gn{#{i7;_^PMI;Hmou5aqJdCbm;X+L7%I=*x>7A%G>m^y{ zbexJJz7g-WaUemV;dmI1hCwnFj+LIE?1&0~A{W8!gq{ef))0%k%2nw)J4w0gtsz4NNsr215-!{jJ42qZb4rnU_wM?%QIG5FffXw+t9 zr>L7Ke6u|Bh#WmApsG#YPwwg9qD|M7{BzG5w&J>}Vk4qYDx*>g;b#DjB<||mG zD$8yx=4L91$PN2c*?TCOZVnTQB3DhEl2)FdI)01wsIs-i07ca;p$h8lvSE?*=iEvq z5g$4$A%yr_1Am-6NxHJgKRgsM^q9?qwuy6y5u<1952ee)+uv4)vPZ$dH~6{ z_mARx6R_$$vWsrih%`-<>dd6h#+6gzQoZ zpq;aoMop#yjGGHp64A*X6kSRndmGrkUMG8dHL6m)G-a&$;Fhf>uZs27>ry1D#-L(d zOKPjR*@vm*?eoNDvj!LNe1anaXpUUWhE$dOu%uf ze2nA-(56f%otbUOc3zlWZYI^YU4C_BmZ2N1*{rg+ErCoeO_CXgDTDzvB|CdyqR>2R z^Oh~9q|%52G(82uLCC)dd_)Rc32gWg5GL2{YKcfj7GQH@jzuR}l$9Yvy~9;eY)@i? zy^_=GarLR<1T4BLaJlYx*~SHv^{T3fsEr3P!`@En45&AgCm39kU^~=&t-1LebFuoS z<&Kdt10%~WQVbeoRyG4uLtugmW4icEs3N zrcDk6(U$;?oSNgxbBn82$ckTcSA|CeJUt?98KmD0bYyS7y*|;L$nU^*oOf44#FzDV z+i0ad2Np%qJs?5_Iz3Km2VR?Mi>Qt%f;zo&1FrAZqqNgF?t@M1mP=W?m%`-Jw~D!%(pR#fhQ_*GVU)UA9yf(STM84rb5`S$Z8J zDc%b)lDgvk*n>NXQ z&eHpFSZ3)i=Q?KJCSRRX0Aq(<^>FlE3LpAV=H-Nf{kfI4IiQk=e8%2Ig9i}12y74+ zWK@%5BTEY3P+V{rDwd(}SsD6~<-inqy&W|~Z&Osd1k9`3ZiEf9#jS{Z_OQ$-7<1BrgP{p>K$FPrlN?> zKYzcCR~Z;(2O(p$TF4c~YqC}E<*L{;I_?HDlXy3ohrr|)u|ss$7xUZAy;KrWjs@e}cA_T`q~9BK*W!>(7%Elt;F$X;e0?nrC6Ikz zuM-`iYY0xj#I<<8{vLJ7^xD{4+;?-9)Ox?SwuMP&Q&Y zG%d}S>3nUwj66O_*%3o_nF@q*D0wg>Xkw%XPOuk&+a9oM9-_vX(NB{mFmYz!$!Dh{mQB6bxDq9wZEXp41 zABLH$Y|Xf9vNmHLr?vhX*@ApP;6BS&U~Q9pgNS{gS`P)9_9O*J?ZB$}QG zll+&7_Pz1K&Qfz3N2NST#k2DJBkCCGXs+=OhvoRqJu?ml>B$Jv@uKjnA;*god0G10 zkkY3@imcs5o^jdOR(5H6nz|xle>U1!3I$Jxz@{(myoa3z z#wW_=8ES~g!}_e0a2z_G2}d~Tq*#+>Kq`ocli5d*WwdVT58x<5Y(`ouO-{Le6`!Mq zh{{MN8}5Pl4A1o%_aTt-N);I-G|yX)Ci@@?qUQO~pl+2|8McT+lwY8ph$@fXZX=jq zbcP=TM%N4B;*6tSyN_Gxzer6HNqJBU5+rI~3=KYz8v$66zJED#Y_VltvOW*T3|z*< zzblEJm%@XX>^o7>Zz{VIyi6?-(ZJtJjlZxUN?r~L(qpg|QR=;~P)9^7VZa_oW&65b z=?yNTRct}=Dm82<#ajv=;nfhZUxL*ZX`#sW>gF}dkLWMVBo+%H{ohaVkupWA<)gi?j7^J@u^y4(>c3=iG6=idFnTho#)kF+; zWga3$qwvki$7#rXgG-9$E$WGQS?R~I4AS2UI{M^nSays_wfb$!j%X8Po&gA=-wrg= zw2P$d5#R8Bv|_1ZG$MBE(Vneh87` z-D{N2nVEw5fQlkgeD(zrLi`7TzlPwYM;yKAA5!ogMn6H&i!S$)_hBDgpU7*o^_uyJ zQa6w)nk6tu|0w9Um4KzIf_|@cY=PEYk#!!jmt1Ra`;hcDd`#W<82vKQ9lnfqVX*9T-U>wcmsmWfM5jS+=qVy$-zN7f{^D&yEp;Rni(_~@Bx ziiHsWL*S9}rJTX|Jts&0Na_6fB>xy>BzyS<>C`ObD-9l%VSb|Yh_DCr z5JJOGVL&}$zI!l-Ra|oDnpA+0C`$$NGu1@Ye?VX|?1!T4=l*fJhnMzrvJeC4~6D z0*}U!jMT{fDZA0;{hPu!kA6$R2#>p;+`og1mQc_kAX^`A-D3Ws^oW=>pih7#dj1Iy zdXZCIue;7Z^Gx$ERYl|l1N&ZqqU+yqvB;7+7mIT;3A4BE`9G?P$`1TG_Y8=l|3Va0 zJ7u*umW=;T9TBBV_M=-01xK7A0z@jmg?u@G$!>EM`DygQH0e#~K_L68U~AD*sTQ!g z$ki0R-lD|F5K)4p ztE$pDi0Q)Q9}oU<@(e)_QDLfB*p7a$x;a5TLwW~?cM|nz6rKnnqd6Z)rtTGYn3Gf! zkxbK%Lj>6;gU$G5_t%rNiLuH4)-Bkv{}gpZj5G`@xdcYrsjy)dRCdC7LzaS1RLp6r z%*(G0NKQUV51VRkd9>abR^)R??HKluD%vYY2}Q+LAPk z?L_4H&eD=BZRLfzjVdE%;q@4l_AWytwYP=VmsE1-uN=79HMdjOdP^!tAo}(|qy6a* zp=w>W)>@u#nL8*xqK4M*7%B&%B?k){Y`!xG{Wo$Lc5Sy?b+k!s5e+sE;cN33DI&FJ zLd)U^701ro!L5GaU z>Bg{V!9&;( zP=obZ?QZi@&gnFFRB1$78kUzUlJ4{2Mp|v!I%YY$shY2|)CW!*gr#3>r7F zwOYv)aQv>UB{W6V-%V~CQGrNP`Ml{L`XQRMiUFKJ0Nq!_N^FdKO==L<_Z8j!WcHN%dG5q?bXzxxD%U+e$NY zM%HTPWWKBH7}_Y-W~#DG8M~E^7iYvet=8GmU(2?>RxFX9D#pQ3RS+t~*IvKpbg5FB zmeKsG1|cF@^yxo!9BO8uIaM@13)Ngxwg;b-ft2x5zG5y`dk~Ajlu?m>>{$qUaiO(L91)rEX2&JEh5LXsmoV` z?X;dAi>@7Tg%NibBJNJLY$)P_K{}3_4u|hJHx64U>{dZU1j!aHoVh~zCQE$(m-180V_&PUkNXk z%cYrmscxF8i|CQ`cQda03y-4co)Dqzm%^{wlrbXd!8LR0Sa)9=0VMAM885C^intNZhC)R;+(AJzgXr{Zt^$QU4P`ZuiXy6^**HiD@%ugA)(vFJ1?Fb86~Ccm3I^$yg6<03ow5c& zP60Oul)b(J*WFLh0auE1x(+(4Ml)t{fyZgyq0XNJU z(L-r2Q}TvhIT)lH&^6Jy1=?MOuQ$lM^0}ztfp=9Ya^_+ z55at_2O>`jLF?l%K?33}iDXPeo8L z)Y7XBGRtG_@@XoMDC>FvAIV);w(=-^I)p(-*)EJ5JwrtiF(O;d1B38q0*-uuL%_0w zQ)gM4aL-bDL>C3`#D@zJgg@KE+e`cQFBo<($_YLSkI2N_oqRzdh5YA&k4#{CZoXR2 znYCrilapR`IZyd{YKdsE@cc#FXw9OidOlS62)0GuD3xW(=?l~m@ewjTIb;z2Lco#1 zNOMT0jmbP)?EJu)!7oxpM3xzJB_=VnyciaIYF9NbRb-4>5?2s&;i@#P@mwb&}f>~b4}lMQr&zCzg%lX2|rj6xX_MX!ViZ^pj= zYMp!5y-FPs<2ph3<<(mP*{=pWD9OvEv3j9mUZe1cM37CtmO{a6Az)=yvgbW(?Zs8u zQN@ldxm|Q$r>5$L$bKi-h`VwglN@_3I~NyZ zm9=@7;v-6j;3%gag7kNT?mjZB*5*A5Uf)ON-DJKO%-|!BH|_H8_bGW}AK7u}ct0FL z+~=xc^8qz%DDD$N{0D(YuBX|w471D5!1cQMkUAoAy=Ww_V90BdiBBzqq3KNvbE|VKZEevhTQOM<@gD^q?O9Gx)FaiVONCmsUY%%|kEv{% z{MLx_AvMb}i=*@7aH2wB3tL%KT#)JKw$uC*s*9))WD4sLMb#(0Dm8&~TuxK}l&T`W zQ|ifjYv+YT)2CrVuWYZr*j|<$5Ejg5)DtnX-MgDfy?1G0RDBjIROWlL{VHRa?)N!0 zMO5bdPxm8;me0cyBp{h8SudF{sA5A2h!Enx2t4ut-Ev3{8J7CUmsAk(RrFrIEWIL$ zmM_ENwwse3gNwTw<|`^VQ|u!mbWmZix0Cu+P=nfnY%C!W!hB818>%f>3I$(>fNk0K zau=uX>6Mh2BKR%!L{w?}7r26<;oC4EzS_)A z{_Ggk5zTkhF(f1NJq?+hQaO}-7ZRjDbcDNe!sMt%S=swNwM1ko{%*c7e<8cP5k=AW zAwnBN>My7-(D4IxM06(w6(0{E`G+8*&5GKcY(m}c%KW**?pWO)sUad=B&vrg5>-Ej zidnEbSA4QE>$lYSiJBr}nBPT%@5^8GV3hq7G9<$J&dOoa-nW0%{7fAYNrkQ5x#d+i zD^Mwf{~U1p-8qgabJ65{-S%qN{6ZZuZ_JLUy3d{@(eq1q5Q%M}(_5haE7e3q;!KI9 z97=u-3G!Swnp3RcWT4-uA)=zlJ2m#oMlxiO{#(%T9nb~PS;08l?-adRem){IOmrde zeqw*`11*`Q3=>xErtyDJ^7`6kN+A1>V56$8IT`XUH2hEkn?I>!Y;^Dy!MCGVA&|~L z!-2wTB*OE6$!?WH$v+`M358)3o_T})8sy}mar3YBXcD6?2@W;?hDOV89!&Nh#jm&g z#_gp37gUUd1(V9BcqFq-nlb-V!I1oK_?&WuQFp}6M286Fib;Fk*Hz@F(WmD0DPTz< z|El1lap`_bmJge&DLo?3=tCC<*++sc|Bc>RcgtDk>MD)s)Q#Gv-R-Qq3f z$3PG?hRPKjxp^byZ>TXu2=T`P?<=p^n7vY!!; zr%N+GJu_`iP)$S~xleY{L(z0%;(6+__Pi$DhS&!FBo(dyc>)eCC&O|=5bf-ckSsE7 zPL%VLb#sc!3i4Z{YBz2bLn6kdh}516ZP5CgEy%8&vY19?5s@vMm@I{Y8$*ES^8JaJ ztiQ9m^PIDq=bR;fH#bpLVf1r(2%pPeq=?j>4lT-BWL+E8HRBW=h>OI`~0Vig%NFb1>O_;ggy=(x4FlX_cFQ6sRKT5U!)p}L)7 zBl?3gnIRBF-yUeZ52@|XG^;y`HOvaUgTf?;2>#nThsd ztI%1J3HUkL<*g~}`b!ma?s|gZVf?QCVgQ-JI1j-nVMI$SX{XVAlAXdAn-Ca}`F~`QQ zR_@QD?*jPHe6{&zS=NX#&%IDR5uJsZJlA8W*ak%}YcDP?wpY6CE;V`8Y$R(BQB;jV zg=Fbx`PBTF32gCpR8By7vM8ndCbPKSt*f6@>yS;r^!}0S>MfP_DcF(ndLtPJmOGcr%6=@$EU9-) zeq}`F(ax5M%)j$*2Y+`QI%eQNz16M$aNVRA zt0E%p_E|V$F*MX*VC=qZQHH*@=A_b4FUsnpLfJ0YudAyt`g?aBgwNwIQbcMS(Ao#X z*4d5bG)wPUl||IivY&!9BeIGcXIyvDs3&Ar+806-3na5|cNT zLHr)zdqreLjvr!aGOzrIWR@u+J%)+}D0=Zx1_fIR-$;C{+QlAwfyJBWUQ^OS#A4>U z*{AFw6_z2pO?eQ5zTZ3CSiyvBuUXw`+UkhNMT6!81`8~L^h-fU+r;M3vKR&{8xANu z;>)J<0m~qL(TBaatPumHOY6b+S<>i7Ntb~~Z6w$!G1#N6qne1?h(|C9_={cP!4Z6- z6)0WPye<1}DPac#mYg}WL6+?p;tW|eGh~W1)M8C3)Sgq^C0y^#N=%82?pU02E5nADal;! zIhm-%DDx0?L`0cPF%hDudMH%L(_K6CVjE)~rk04(G*f>mS_%aZhX6w|u2UFCT60VC zN2p>*vEk=-^yyLdAX**?3qFSp3*KbjJW34_pCj`SWDx#nz;%qVHomiF9;4`pF1SQ_ zgxg7dY(SM&^b2ic9=AcNy`9v@gNiJGrVE`cVg+QJnNFPZ#O}sE$tI6!wrVRd0$ksY9Qqz#07@uu=P$KI0p;G^1 z=zY?bDZz`KedZ-E5Z&uTbSh@|z=KVF2PA46d<|Gz2pQuS5ufp&&Vjs8%Ff z^f~!E{@?W5pT0%4+vPV$M7I#c7a0B^MP?A*iXfaW;K8Ffc{_;nHVsEqw2wH_+JYI3 zw<8!RYkKjLJ0844r4h}Jz7bP5J$NS+i26F43_Dzycc~$wG|SE;1A|ZSZs1XUWUXmu z4eL?OdlViKEfZBH3n2NuAO~4Or8-@oH1AXNhOz`gh<`uuZ1LG~Zs{~YD3Gm5JZMbMG-ai{`Gn#l%FZDExckZdB)I4>?`@$` zE=`xD2fH}Ud7+>gphq}C0U=$1mkmmxr@==P3sdm`*8)fzZE?JFwU z7V&rkw^(pE8ovr7Q#AXLX3A23VF~;-b;YFUbSIQ@DET@hh@QTJi|Itp9L$eYw4u_O5aNFfy#0P$ zFtXUW+~uD?QAI?{r%(Q=Bzk@d4^p|tE0?8DaAm^JR2GpM6wxPuYlvJAciH?# z*|!@V>4ISdyRhxIU?D=I)v_0ro2HR1Nt@l(!*bB-@01NRUEww|LpuTqg8z zzxaQsXq)`Th`dw*Od)#J!_oIo@3UWTvbEeYbE_TGz)l`On!&T%T z?b4fwucLszIi}#~yDEHm9wcO0V!yi3SzDF0`d3p`L}8Q21bPq(j)VY%Mj9UXK>514 zx=JE?KlJ{-&y%;0a}C&fDX1*9E?dnzN>v+4LCWDH9SsSx08Th4RExVX!}ppoh9UC} z9EXN$!GOlCtzk8qlQL!N+A4_Xf=^ejh#>nqV4s-yAa?shZjd54YEN`dms4E8m)y<96JEW=;u{6&EsXZ22#C6vNU8q$GyX9MVK*(|EI1vt1_5GBO71`$=hi;_VR?GlT=!l z-yZS((lCC<^bb=82Ipi1NAmN*gGfS=tP+)HbBYFOXIzlNp&|`Z_(L74>RA}9QxU8_ z1^3*ZJ;t1-!PquB7+O@*uUEF<29CZP!-r;qEqBXvOM4dPSZd!yWf2i9Q)>4>)SM2@ zk)n}m>MnCrMX#@7yNj$dz`7}d?6wEUPOhK4q%<=l3%YKmqUq5u%;WgJ{KY^vgK~2O z1##Nv92nZ=IUBMdq|qoB{YLM%(12_o9S{#=K>Wo3GJ|nT1j7$(Na-&9h2~ajjOam5 zl%$#2Nq>w@~XLmdLm+b;&mlK6y^NWpn$g9eT=a+yh$w)FU{Y~ zXy7j(>uPhHd*?Kjzj^fM2qKTWpWJ(b8;)Al zEBP52MrxQjrALH5T?d$GdJZjnU_oZ#^EuAOGV`j4=(`CXfEgVTq%VLT6mGIDVnp=H`GpBI-+eHHMOs4UGWA3}P@hr39*QQD ze4v6(Vl!P8ZRCM^AZk{<2D9MiyE%7g@#b^Pnrb4dYVK}Eg*1ttgYck(%%*tmYEY<_ z&E;x|Xjvqayl0Sq2z*4f%$zFD4%RafPe{H1|?X zLZ2JXSG*q2Zz4fadJtoE-OxzCZIYHAEzYL`zs1#6KK(6n?e= z-z?R!ko^(sq9ax?DTfTwAL;2XYUU@gy~m@J9`RwbF_RGD9}WBo5_sQfhk*p1?NyZi zK-n1OpLlXg!+Q&kB9NwAa<~iAXa!fiNG2SfuY&7KL7nMd-{E4tHuOE!Q$HRAu z_}WWz`&ylq9JcLFz0QAtETmMM_kCg2o26$01Pkvd>izF5sXP4Vk% z>UaRjPxnEWA_s%dvT-)fuY88G*H=O9AxM8F=!kDF72%x1Mz3o0EVV=o_-2z+l1AaP zA@oB>HcRT}T8FSnkE|P>;W4nx=boeL?Gn5Z?a!6N7Qsk|A)_H=2IIL12I{rQemg6i zOYuB4MtrVBwrv3fKObNeXm%K-;EyPIfx;uQZF?^tCW)cqg-{@_**vi!3rMQwMaqwe z52*rE`c?%&_KTCj$Cto=<|T^XNbo&|ikCuxw)>K7OOsn^o0lm&qNjm3@y)o~$$UAO zcqJ|xS9VDU`YV(hQI2IJFBpWs67ZlAH*L>@QTm2T8bXMFHSnwgNh#bq)S6$Dlf@<1 zea(6ViDI}1q2RR;oGdTL7iC;aSFrU@PDT%9Ul`e@u^}BfZ&Kg3(NF0K z^!bYrN8y_xL~WlNfKbWqbZn~gmi6d*_fy!r^f>C?3LOeEAJMC4Vn-xvA${x0rXRc6#*tT+g)jty>tFccz|pEI(c^H_W?KyP>DG6bjxAflqr< zW$=?F-lK+y#GOccJqQKwg#ghbbuP$kt!&<>l87o!YBfUdTo57A^nRFvEU+#+p_&h< zVnbOV7=(Wi@F3dBVm~ZR`H*gbBiKz7Y`xCiD4@TKX zAqyLwGPpG^^Qbd!-cqNr`%s?u34VG{U~94yvaU~T6MY92EE%lB_s3ZHTiklHUoEB|F? zDeY~|t*)6?Q~DHIW?7cHugH#dU(z7#l3PX;$f)s#Gm;pX^bh-K7_cuRU`L8YR@$$c zuc$bp7Mxmw4gir~1rpK6Hk!tZlDrz`Yl@DD{h8*Lg%JOB;Qb_-6*+;beaL)6;Su3Z zWZ4!#@HYWQ&fvOp*a$W)^DTu(ggntSkS)g?go1B-0n@Ey8r7Nn#j{289TjXS>#-CX zz6%5Tg%M{kyfoEl%rv?G>-SU=(fjCcXI%0Z%A)G~P~j_ca9~GXb_kK-haaeAW5W-Q zL&FbY;5eUYE#Rz`A1OSdKug8WdCMU9#{lC)yLyzY?!#&#^AqJqtS%;ja`P z5%TP-A%yr}r|{CWsg;a(F_B|2^>NF-fedpI>NhZEk6v zY5t&|h(aqwFr9@zSo2J3{|GHANQs3_a`u5t%m0%)BbrfqKZSaQWm2Tk_Gj2`A-1{h z;pO@L(mBJwH0@vKn{uY8O!1Y2|Lj@xf6)NcLW6=M4|2xgdZVMdDo2v?yI5WGEF;qo3BZ_>}&l zKbV2IDguETFK&>!W_$IpOlFsd)xVmnslPbd4-Cq8`Uf(pJ`!r*%w3v0513dgHUh{2wd8f-fPZHGe;>sBC-Z)(*sC88f5ez>AW?!9H}rfYp$t=ZKL0p0{Fu8 zs)wWRTJT{e6dqTmPq&xNwbc?anI-X-ct5e%0Ty3Co>QI=C!X$Vcil`%J_8fB*I*x@S=qo9W%iPA}6d&;^`qXcPLHO~2W73t~ z_g9VrEmrEKYQ>zOf{5^^cK%fg6(@Ry+shMe|7I<})10J=hzS|}HUf1ZT26)qA3e0l zdZnTqL3)acBAOC|M3zO@sc>N&GQA|LRw_)%7K*YRchQ`t(xUw4fNDm>s;q!X`Hdk* z+2iWFc75PY)E1FBX5#}P#GelQu=4ic+#0Bn0BooMVN5PeIa(aqo6oWCpe(e|Mx4x7A{IwHDn zdIXjWy~`eu%3DK;WbIe)$h3a$wKx)D+PX zI&2=4z-YTYZ1_SpTeh>*?x2>4d@z%rlRR`wrnxFS+ynp?&`|IV1IpxRZE z%OGq)5RjY>v<_e1F$=i^moLgO7-p+FBO-^tmrv?1EQpe`AVG$lXtmAE)+USQY!zL( zHXv!VodX;CUZmQw6DMY$tBTy{_ZQSva5IVLfryu6V~xzuv@!0E3XaHgGBM6$s5l>r zUZ+cCc6v;DlJBH~h^#y#un^+!4Ezar0vQySDT-_D#ntxmbW5U-?K!@Snj)5BWO|M> zJW4Ns6gdwnXc*gVx-QQPRTfd9NYw5E3KiR+@YP2>_t@lB5Rnxm1j-a2@(+( z%RVOZv(hO{FgI*3$iKmZZoZxh*%foGXaDA3ixPn z`(u&{veE)mD`rgRkloFus;Z*=-hdjVFA_Y)#yfWoQ-(?P4AjBAw%(3+7ppPi7516e zrX+f5@SKQ8Y%g~^Ys(8ccOGlLF72~YeY>fvuNd)!o{~&jDJIPgnAtdxbD918=VrZL zKDgD)sxzX{OKhi^1W~kOplFNP`F|s_lMT?{88!;X^5YX`w;CeiVm4iY!Kb(ca2p|X z88PPZ)y-Yi5RpM()Ch}^`F;F_tRp6hqPsy94*y6;$4W=e$B=V#)D)5J`4JzQ{Drcp zx(8G!G=etUWWh95Go(}+-b$Oa$7kOY0@tflmG-Ud9ye{~6u)J3gihoR7QmqI0U5E^ zKN$wL>UNZDUIh`gY=3{^HT7VWEkG9J*|K_ygY_*HZ79!n7%KKc5p-xsysMdg%HL?* zwbkqWfCt4}K3F@`R!2na&8Ck4#pk#bs@|X$c55^TR1wh!oTZWt$;9wBG0(hV1jkavIuw{Lj>aJw-Cdp+G41$29?pl>tn=@84 zT~$WJV0SB1N&-W}Dhx;@s77)ffpl1`wal6-BC76*DrgTv!9fVnGLSsMuO+RT%M~Bd z9TDUvN+A0X*myni8#`sWr=0UOE7J`RD?B3R2Jjw&^eaG@fsi3n^77*|h3V$xxm&iF zd#SV{w;+ES(#nmRlh=bYIQK?ydTF#QU32C>Dvfy3Od17(==%cANMMgR%1_9|WSK~L zKgAE3QsAp;eR>-mhmQNh(d+Zzsyg!k6-49%nedZA_yYlFt;j8BLf55C3cxDj2dN{f z=9gIbA`?Y=B$^%!6JM395=`(ca`O6Bf} zs(PM^ViGh;75mEYH|flp5C-Yb2OXaT1BWxRR8b0^Qdx?f7pNfOlO#qR0}2%{go0TT zmJ`~umnG+WkqRQdNoq}^hmikb@X>VbWv|lpD%}_b^AdGLB%J=at3%QBQkW3A{HNG8 zTd$dysboW+0u0h$4*Cf~UunyhWUbs(X>v-Y7dCz8hIxgGBF3j2gkOCCkk(hiiXMig z?!kGpnk#Q_R>o>&nH2si)kRc1+}+frN%XuL9=BCY73D?Qyha6Qiho363F^7_c2Zvp zDk_yOYeq}|b&8FsRAv*qAc%gwM`O$E++0omG;dIJM75vy@rCpVB)<{lV%;eY=yTj+jdOZ0h_m}Dx#8^sV?_G)Vv)U^kMo6gB|WK)uj@GnrPj;Lv`cw zYa`;9r|`-AMH)%*JN5ZEm}9?T1FIe1rNWr!kbC>fDn2N^vL7%BxqU zCi)Q-l}C#L6eC4&okjDxK8jETEox~8n2)J4BJ<09DC~bt^v8itMZU4T)OmNyCVQVy z$A%-HXHoV^$c~dY9ETT_p< zFrQhE(`LfHg2fF9>;Xf{qw}+H_8WAOg&cA|waoPToLY;c34Z3(H&7X%k zs1(<0)3U7Q3u=p~fMv@`LWut&@aR);g>ZRGg}ZruNd*zzd|83RQ1N9bm_N$D-9FJ95KyT2wtoQk>1CrIiCN!K ze#HC9et1HN|E_@6_<~jrpD#TTEk1zxp8WVe=KHX)1i@T!Y$IMjyu3Phs3=<>|3E`9 zB#ZJ5N`E_}gTGJ~1M)-RaV`APTzhd(=TNTb7Tp!3yLi7CJI4G-oe^u{J%>(zk%dzJ zW5^jxWXx2CO0DiEs*A|!6QiXbLHJJrM`u8xv%I&x&+ep=!~bO0b8GsUnqoS~h_U-< z*er1%nEs!`kCffrXJ<~;C*6J?R{jf>M>KjogKyPeB!QIv5>hlqus3mwU+-7y*(^UF zRap%8Hs<}r{u)@k%kGk0Lsy@c;lb9j?8aSd?Op4(7R+x{Qyi`F82dPbm{k83YIINA zjtTqjey6gSjASi!>?Rq6{~mBOSTqUBF@sWlwU$4qB_i()2z;vGT8VW25l%#U*DSZL zKdCDs=jzj-?>*C>!9QB~Yil{n{)@6Bs)ceF!|(5AnEwjqsmb@Wy>)m`M>a+($tq!E z)>c-{-_#S)H5$C1^!v(?8HT?j4CqDh8ChwWQ+Vsr^Mem&{-OGa&*dR>`->Ej+J8ce z+PvQ>w$_?kuDvZdB{p}R`3uRIDZ>Z1*jYKMWc&@Z$k5Z6~X1T>vr}(huKPrxR z(H=&zzZgJfF#d~RV2~q`zwtA#bQU=+dtAyZS2+An!!qkaK4f@pes~@_z`;-*A?wjt zarf_TO1?wO*e`Jv`A54>DPppx2PD2kK%?%e(4p!c#M2!ZfVIM_sW74i9w6upu6syY zkAxL*JouHJ?d65eC`Lclj#81m_^yr@E$UB0ir7(Bm%x8gwt;A zCfDmY!`@8$1lLu1L{`wJ2Qy&Nbv?LF7FX~M^QOJJe@V85owv^Gt21JLL%>PLg%p?m z8^Dj~zua0i^SKKCWDUxyZ>Z{s4`vax_N7sH41{Py`W&j}rfJD;6v!nHn;WS!BFT9Q zt^Oj7r1)5fgCTZo_bIDS&2g%W7y|3lRpU5x91jQTFc+`2)?^pMrIppg<^&Z))L|~; zjeMGbLHLP)BV`4jxG}fKeyEdF5>d$v0O>g5fi#{B<0)cH6cCk8-Ih_-e2SXO?yGLR zTu7oBhEoxS(~?g;YY&VsE@SM|hT^pKgks3^XVDDBjWra=h-^;N&DpXfNG>I9m1ca;S9&=2uGND3euI(Sw#)q{=T`X24SPACyk`|42aRl3Etgow`F!pqa24z z-AuK`(Xk+4q~l+}r1$3VA}{u7+g07LjnpmF8PV_W@2AjT^k9_T5;C+BP*23RGWGnf zqPE#@rMhjSAJG%2^A{nG!dpX_daF`n>zGv=t8b&qEB96dCcU?X7g>p~B1zAEYi`L( zZ>Q3TJl_NOoca0J+xam50&`l)qUubjkR=9jxVU_BOL$aR6Q6OQs&PTXV z0Qj_q)0bs-dRJe{oir#B1%RjUjrfZ+lHxl<%t|qLs%8J0Z{xSuX9;Rs zcywI=7xD`kmsp!$brt&y)e@0kxI6h=A%*;H;M=CY>x-|TN4_$*&*W7SQKratrM4^I zy}lHTt}(bymuK;P50%bzXQ92fJEXvkY_m40zKA`w0}747b%ILw6x^vCLwYS+ zrnNlps);3)U%4D3iKYD_*nQ;zefbs4%fzu1__*6uyiH!th^)$g&*aAqa1@pyM2d7r z;IvSx;&^l!O`29+M2hTloKC=^s{$8l;lAc1_2k~xffF*4C6T&is;Z4>sd^Nj(qHuD zG6*vW0$TbqkA}fB7ppCzr60_`;oW4`z(hBU%s-i3?#dD~sd}{*sxlM8?n+QsMMQSs zC$S8G(b#|yAFa^o9B8+4_J2iIh-Ot5@zLh({d{>@7F|2w!n8HN8NGdNJ5>|W;PtoC z<1czI5SvGF7y@I2_9=ENK4KUmF|^408S+bjMg7!1CAvt<9p4*!R~1B5HhKU)LGMy| z6y6QO(?u9$Fs>;mr!Fmbr8m^&Aa_@LRepU$LJnxu2iJY+49h(b7DP&)4M@*O-A7G% zN2aMk*l7QEib(A}p~YN`OIKR^Tnd|0)7H@s%lr74Jp##lKt`F+d!X^T)w!VPn^#Xn zoyAkA@)wm(5=rp_#HrDY+2uW0E?Vx$VZt`Twp1R`$sT;c>=#Xu8HT+G!_DR4gF9!W zxh{=n>0CE0TMh6P>3tfO`sf!P5Yu59XkeK3BTV?z`+B2?Z8b-HYTid@k3jOJAR~K| zJa9}#uMWs#ma6tWA5cR~zT+kYW;ygM!V?y@GUu`A+a+d6P1{DlMIVC_(J91HxC|lM zeg4;{+EPZC`Td7$E$OrCqUC2g>W!${cu>OIhf4hl^r#UZS}@2B?Hj#JeGxTccc;|_ z6!H!DscKtQ_5_#BmoK-juDT+gZAi>aQ0ZQU8@2J}Wjh*Hskj!mSyO35iRf?V6Z#8f zQFRciR1MK(#6AUHuF5M{Lrh|6KLk6nBRQ^YHHSZ%uF8>X$i;;8EXw%$VGTe;`<)~{ z@GvIrSHOOIu_ron6D`{5wzMOc_f#dQ|Xn9`3WlB_lFy~ zr9UtYV+n4g^8sp&i2D5wOzW}edLUe9h%52=$Jb>1S&E=mqD%il>W(OdMtt zHs7>$51Y^*r6Jfe`h}<23`+Wk!-Wj&qY+q4wD+B@(yecU^B4_I!~|-8H-q6XJc^>n zLWGp&^MSFs1<6z}VbVNKRS|7Ge?L|Jq6eew@m`i_n9HYF?U*O1EFxJCY?zZp*AwBw z_^qF5g$Y}z3ftHCB-KT!82&}7fB$c zFNYLOV(j1MUg#@S6wxH+eYErlB)<}5&hQCG_s7r)G3UqZUZtj(I1_SgtOCvv_{ z&5;Qe7;1f%kzrE(dZ*DW zHkNkf*_9#RGBYzXGcz+YGcz;(&N(x4-`lrO+AF8OKU!-P&H2pC8@O|akm2!35w-^P zmqNRpLQfX9wISNo>-o(Uc=3A~S=VIXyub;+2>&=!9&#HANpGuOxlGMk@kBh}1?HYnX9NunRN26P*_o^x@8Sh{+RNzGm zxnK!K_d+MT8s2FMxNNS5QCZR7MLJ#o(@P6e#WdsHM!faps+Obb>*hd*D-}Y#hX_vJ zN?igrbjP~%UIRJ$=#oIJNkxfeK@s0aBB$!GyRrI&w$p$OU)tLe-f!5Alk-=oh*|_k zMTPzV(VVF4>P$@q?9#=RnlYyzG^As5~`njiWIkAE5LDM>?_E7^nzHHVIIR`e42nzZ!LiY#s z+*W(@)>N_|H(8d-rhsWa#=P1wG5q3mR z$ZrwJZ2;YNGSk0p6vs9I#8QTGY-xUnniU`L#w9*Yn1|}`8pAQ4U12;MQ5E}pWU~=# z0)}_!^}WLP4d`gZIjVA&1JV)V2Sji{DJ6{621iYcy>ve`pvU?vMrbit5LOC)#1zmJ zF8v{z3Wo0d`ebZ?Kej}ii$9*w97o+dV&xfBH^Tf%_vF-Vk zko3pwTp-i|U=Nr8VsaAkIce{I~2lZ&+^QvH-=QIUT`G7anU5?^*nMD}lu?U+|)8G&i zKJ#}YJFMQUF;=4rK|%jPD63Q1*PhQVZOC10_@}WQK8h?AKW*v2^_Z@b@GmBTjcIXD zlWT8S4{2=K!wtarDSqyM8{RQXEy*YarSPb%=>H)d{~Pt|rxTxS)Ap9t3 z(%?%jZj5Nf9x$sKSF|KJdYY`JB;)`*-L=w6$d#B74lTJxvs)|{m#%Ddhk2JJM9+Z{ zJt40`Bs-scfz|qcdt2HZ0edW5)tHWkm^H-Afl)z0_aT(6pbvLg_JeQ6{iggme(ZgX z>u7{!8L`X17||7eKjLYzmpaSMTO)UW<2uT?6kpgJ7rR89zg${yI?@p{yhZx`CAjksBe-1=nQBkoDC610FI5iumO;4S_gcAkV zHH>4Oh7pA*DJUn`qcpqxa_6+Ag9mhacChO(BRRVKtRq?u$gms{75s3*$BVHw#RY;R zjC$FMQEI{+N!+;Q(S~0Yc^zPV3`;fB;ra%4bb7hUj@91_Iu%_d;i#PBnZ@|BPy^%8 zspr96jjw&Qf!E=KOz4VCKx7LQa^f9B9=oKp4-#!>WXb*phII50HG3&5dSc#?OpYt1 zj<~!4hJ#}_GOWY8D#<9XrSPb%=r<;v^Mv6Xy|-zea1#SM<_RgLU}Y8Q-<0~5c|uwP z)Od2NkuKXjp`$vL$h0ud{m*ojs0knMHO>gP(!F zoKSPKkjgg)YE*@95YOUHw@O^t(+`+>#%v#FWJd+AxtXG(C+6{F(o*Oy%yO?(szYlG zb?eEQ%u$ue94LD9wM6U-nO--a>p8*X9VbW_P0|)$DL;|2bi3w5jkuYN+f!m$on(Y{ zlQWPNVk>9`6+~H1z>_nu)F^oZECO$3K*vsrl7g6}uqldp3YoOebKgsI;mpo_vRQ9! zP)Ci(5+dfnh@OzQsmW$h`)_N+%a%=36!Ugu(&amyZe9qtH;%*Qi&)B3jxEhQP?H00 zscI7(V#okmvGmf40C z@;=TiB$vkN#=I=H%&4f~>j~%Q3c0`7U?|7uLM)YIjxEiN)GT{fFUEoUSxn`Y(y9A! zhA|wrcI`?^RZ`$H38u$*S8FFObkV@J$xse^Q}L9cLP5%BQJFnd>WjDVmLcoS&o+j` z=Bw$=N7TeSC-XQcaZUyU2}TQND=_uWHQqWTX~MXb6_l+UD9Z_W9)WcF=h9A#q~+t! zDA2Ik(2kXdtR-{~)C(&STbKx%U^$t^?I!8qPB`EA4m%~wjAVUGQ|Jqb9^3MQqooUB zt06DTmKREiw2dTI(o6YWJF27?8p2UY6;D|z6r_9+m3e49qHTxh+{)j^VF4V7jmWM5Fz)Ls$-PKrUOwP{=Jw6sc z3svRqZZ+(G4 z8#Zs;peEWewxjr0U}r%QXGpvni$Aud*%l5e@^arc`n_Kn`ds*yx(^FO#iL7*ur?mzh`>U|SsAo*BH!EazL{;oS zww~EYld5g4bogyxOvm_GJ3q@(0u2eGB~tDKZ;&+v&w)`vL3a~+2%t2TVgut#>Wg?oDfS9` zjOv)NE$)d?MO{Ww*h`6J_b@~M$b4gbB|H3|fgSdGk`Z@VNs;eGGS6s?CvO9@9lMHq z8{E-1O~`d2s|4JK3D8y-uJXlF9yHQ^=y<3^-SK@b37e5x4z4R$P$LI|R0<=%8BhSQfd595l+JB0q>^&azrd!~PkY&f(cd{u{9mHtah5$%KzUg;{)3G3(?6d`Jei z#U(9?;DLderJin&4iCp~?;RdNnw)D>dxo7> z2(3Ngk(L6-D4F$=i_KI-eiW4MbVU{|c2ParWF0=ciY($w@G%tRu-@1GJN?kW3o_xc zrtEMwT1*w1g`gwC<4B-igs%yp+iYSVHwJ-bo43m8O0G_Lyzw0U@W`tK^@0LFA!lu7 zzOmHXfkRteFrR2B#~ckYm8r6Vw4X$64lH<_E)4tq`9Y(L&Fpv!rZ=BSJ)Pa}oq?5??Pdk$-N z>EG~lV>o7@IkNJU1L_;Qp@dI3Y6#&orLL_(IJ1wU*Np z^;x9S07|X9H9d{l@t{8wo^3Qo?rQo8QxfMnCyv$1PlClQj{x#kX_IzVGthy9kq%kRxUO*Ck6Dj|T+<^zH=7olFbQm>d zmvqEmtFQdlVeAl6IB;!tHC64b**Rz3{Y;iZOi)IU>D z@mZ*(C*sRUWY3XqSH&NqPsCR7+2#U2*vnVLthu4Jq9^7n$YfnyikCP~GIQK2KNES+3BE60zdi!wTr9C$@-UqThj*fSxQ&T)uX3Coldl4c`=$EQ`!dHJe4pE}s!bGvv zb$bI&R%jNq@gx!k&Q2%1)snGpax$_)%zcfVfNvv^E}=nmJ1n%ecbdFOstZfx?Z$I- zDoH@N8Zpt{LE2S8Tg2EImU`ixMsTdfFp}g`Y)QV0lFY!4rT${*He&A{_qvC7o4g|f zNkD`eG11;b8f!aGPBsSf9bB6BUV}L7CdCt?P>}NbsLTa97)xx@jqaeCehlw7f+HI_ zz92bJhza%q!r1LicSF0?p6fJpaXW6_2_IYy%c2Wrp)4lWhsa`|ms=pJG{=xZ_^_cI zeO`_&QVwJ(fj&YIw+D=Tyzo(@IJ%5w>wpL!%LFq$_(S-(5gfiui>i!Rh(Cz&2{LG6 zrV$KTTHU?i0hE1317wp#Iq1& zlAL&7Ay39goPDDCV#LAC?cu8i^UTVNnIJ2Ysfh74GSpu#g&{h%sXd+WbyIg#G8}tj zJY^*P3=L_2gWB@Dr$^Ygo_^*9;hU>bA26o0^%EX)r-szOMRiWjlW!|d8sM(f56xa5 zqs_OC<#1G0bVRNEuB5Fre1~aZ^`7gr7I!po8{2FreAl3k;)@Z*DrrdkdlYAP+0wKU zjsVUs!}m?z(Ossf(jSo#;Rhrf1_FI_yewl8$J6vLFKyqd<7nZB#&dWct3m=-e<{au zR97;7#AL9ZTSLIS0u#Z7@MB}|y)B%yMEVIyR|09i3j^e*roI-xn$Tn`PACdU@@F~m zsq*)G0q3mHtA?MOyrU{4}@x+*tFN;Y2HCFu9%?K|y)q4^=6_{zDk8N~_vU7&0&j{<|8EMHb9LQA(W4 z-4q;FI_=!y89sPj2K}i^!sYQ_;`ua(AFQ$isH7vx6-dGVFnt*ex#kYnLpm=QWX(=@ zW?HxnFCQWd;fhAT5Yd+Di%spg)*@`7nOLUw+X)P%>`F`-Kk8u5fc+?@R=jl@^D0`V zSGH6*J}MPrMXiw%>?(w5ssQ&`dw^R}W>FsSIbPK`j;^o9wV8!P*@qO)6;o}V0;Si) zlbn0PzQ%Fnr=~F!QX=g~5{*S%{JS(Iw@29D5RM+U(i0Xkl0Sg*+}q7=3I|J2PzRd& z@%a5R)dIWNxKH)CazCZ$QavcEws4DbT+_aqsXBUZMvHAX$CvEYDNA>9G~0Ufym%OW z#5GLYQ66K~UzQQ#nna9@n_YOR!nKUxs65sOjP?i=664xr@RKgIhI5U1+%>Wou44d) zQK5JeFBGJFa8_>XKVYZZTsXv(Pn`TYV?0S05|TcY(pQB-?o+O7x(<`OQVElWgs(?o zHl>9@mwO|zE)qwyK{(71j;55N$6~2UiF7zgtn2WqVpcZjPKP6m;Hc{*r)-Qa)g!4& z8)dMx5Uy`}j#^$R6vUU{Q5591INI>B@#GC5S`yzH=Lkm|%5m~*(gq3ccZj-5!ZAz& zH-{t#115snGuedC0=+619&TWG$C71@&thCsaH-? zU0fQ>;gX+lbE7!sIAgsXf02{~xE2<2kllmNb;TQn;ASoFMKgD{@Z^xBj1V zPZakyD{@Z?xBZ`UPZIZbD{@Z`xBs7WPZswMe4CVp0*8vSP9EUyY!B|I7OdojaE5^#Q}mj*Dx@O)GpWz+6fY#s&|t&n z++k-oo!m1sVUuwj8OjREP7aji1U!pCI($>z+TF(frL&FWaFo?lN{UGR9IDfqgAOO0d-ZZ(9%h(4aT zY!61YaG_~Cl3zp?q6oIBCD26#aekM!GQbnVtveSR#$mbDY)FbSBG3mT^WEHnTNkn8 zuQRbLpyf4XB}a4U|dx2O9(#-@WORE)9SVNG*K?RM|W3fEjBrhhV7PwbMfcPv`bT2 z#w}Z~t(43&C3HXG%g{EPg&$- zUJ{Y|BGuWdqerAM7_QZV;tm5iCRHh}0HZo$1Txs9(}WAP1QWL~Foa`psF}A#84-pg z9LZeRX4O5zxqgooFy6BoA2eGscEtXKmrlz$NGQnC&eizml$ z|CZK2=%;C-i^e9a|1+ecm1BCGRFuUch?d(dM1{T=(H!}94Q91kqJCx;uTKt|1NZ>Y zliu6dj_FO75jh9OG=;to(WT0Z)Y0j1U&HNP<&82T+>eA~kU8so@DX#_urOjVHFx3| z%l!?z84;GLz^1cIC$^lrQu6?&h9+alZ_J&_;em#B`0AJO8dFG=2a&=~4KJm(u;&Jc zC%WOmMsRd$DWbk$Nkr-op*r_d*^)tba5~P~a6vab)F|ul7t0i3?gLCf919h4;ysK! zd5xB)u&T<-^|3!0t8s7};e^n`jp!J6u^N>nV!J59g`}vDAeCP#&nQBN_j+~0BaP?q zWah|%yr=265P0?f!(`N3Rgem?G%f3)Eo9b3(2!MInx5ES(>q;g!sN?6P{&mauK zV-4n69x1kql{BRPIO^{MeT=&8Iqdllk2mGx@aswSq8O_cTbfUxCe6J0{w&rlXB+JR zR}ZQ{c%o@L%)A^sRqatJfu2MV>)VFbV9)w)3o!r_QZjTgJju{~zA;v3=%)D6eF1gp z0*OncT)usw$vT#A#}-+kAmJC~1mnORo_3)L6<%!0js%wu>ZSP7eF=5xfn3}^8;u7H z*0>ZM%Xs0Xrth%6a{O54V`756j4;iz((#J!0ELH%!gObVerA!U4_|Ijhy9folLXCy zaZ$lvk>SPsU5~AGrnh2S=^`HU>V#Js{LIOXrqB_-2v%iDaP-I!tI86RE5?!cux(!}M_ErSoyn?sglkwNuRC?(G8GN)vC zU^nnEynZzti!6?Xa7+VI;=F+zxpsKcMAnqN6K^z(!@FHMZDJ}SyorRguscKJo;GcG zv*|mUcWHWT3etWHwP~SaOc~cO*VVRUg^hG?H{J>x2PW0Kab2b09ZUf$oPE6}930qE_fCU4Dx5_gtq4&{oOh8!!=ij` zH=^|xy1P-N?>3sluqaDJVCjl+(-ihS#IpWn`*We&TWIYL?=_xd%8}!Wl><>okoOV7 zDwyt!V@Ev*?>B^_mZX>>lvSkv0qS!APRkAN&Xt%Stbd1(n)d29m{UNKAInL%nuzV3eI7aaxXC+g6pLN0 z$I=q%6C|<0q(y~`yS)v%eB_e`a#X3B6^Se)%BOOE%AW#L*>=XT~!}N&69##)*0{X9#`RExk_ou_eRNi|6RV=RkLmw1oNzQTqTj zgY#Sg`I?EufilxVOACTZ$ytT7L}GV{%&lC z#ZoL;=mQo(+AM{r(ElKslbB-FtUH+LqW_@j6#i*khjXuxh&_od?3EM+{THEZ5%5<} z_nXmK{cl5gjOM~wodu-)A1ZTto1UxNu9q0Ye@)x509EtqU6c{wa>phDHbQl0_B7%@ z;qv%(JVoUoq^Pl%D$9s)1riQM9^xC!YojTK1q99mF|oX&p&UyHSwpNGkZoszf?kQx zeE`+&^-h=xS2m2p=~vnFj`&i&3RT&~#@T=LgJWF_4|JKjql-0OIcDM`3L=jDCTWVgAF2FM8*wJLb8$axZ^ZQl%zLK$yTbm)bu4Ag zPy_wU_BagJOA31cv1O}@qvs3`y&h;hN10|rN?FW-q$JEi#FR}J^d51L4OcUeqwCGq ziacP*nhd_pO@ z7-Lc*U7Mtl#Z=7KJBzsQ4*y=qSnH723HFTTVKhgDoOlP5$NtX#yvsY?4l$Brwq{XB zNfZ*}P%`!p^*DXuuBFto%uhMav-aI<(nyQjSXH!y_bqa&K6ExJ^1NY$%AmAA0X z;aMw_bS#HfjzL8U$=;Z<*Mlr4q`YPp|D$tw(7?4pxY3j|mzx;MF`39ZQA8QZzZ#cT z5^l;QjCh@}+SG&#CBOi0&f#6$aIB@kVZ)i9NpK5QMa8}u+4KvcfpWP3*EY^?4>vcQ zr~gbbMJvk)aElC>#=C3NQwwoh-7QxG$T0=T0W{y}vuhAA+Knw@06oqKm!TVjkTP*R z88tS-EH*vPg*AryU)TuJ6m>1B+^-aGl!+Az+ePPFi-S%R#?0EaC#=D4rTHbC&9XF{ zj|daShe9tlv?7c>8nyaL&xuUWzOk;LtuJBU+ly7%FqOavrr)?-fhUE z5u3VWSg$a5hhY$IYcR)HRnxJXk~p^`hs`+sWv{h}Jv_HJhQqyE!;p&f??8PTbm+>$ zVw(jw#X|ut9IrBnwo&1QJc?2|RO<6$2j$qJhckuKwb7mX+;XRp5pzlttRd0jcV4iq$2%o)aQ_4{zZJG6V_@I)`doKRA!5>Z(<=+ z6YV0>_RXa<=;BU_iw&~+Qlfx#??hc06=)xr>0ujV9}8z;iTCw|I~&4r88aJ)6qFAO zmGnfs3yG!g(#HMmop4tp?cH~giuCVBeb(8j!8EUR#VHD!Y2ofhaJ0)5mpep8WrVl~ z5%f8hya91errl;uBRNVfOQ_It0G3IiC*(aXS9udsTW;!>u^c0~?K%?7LQ)cCiWGVJ zc{6ZYIc*!l(by|<99^{&bp)6ufUck9L0rOK6M7*-#~=<%xyJpNg+!Ujl)|B_0~%r0 zD2_>H5n07m1f?a=96@Q~GHmM{Prx~1qd1lhO7^HJNc)nUiFD;L8ZrbxMS5|zL2xA#;3Lfl& zg)@g;^qn5gH})+F_dvu616x&B->mve^hJCEsRpJ*E;5m9*O;0Q=^Mc=;f4NAjJE@% zI_$9Yc>LB`LJ6rA6f=-{D41!m;VytFoTuY!0&w=>oXx4}E#Q_FM}^ zts#z18PhR$sAwu3`!fc=T`3UmZB)l+H3j9=LM1&B??WQ1uh}hWl{GCP zhj3q`I`V2NqFSh;Df0bD=4`O^6}r3o0iX2#hIGu>Eqe8nMlrD-Ko)n$;T+6jc%aEU z46n+7NC8PcC`;m?*C0IjGDuQDk`JLIO9a(}r(tJ%OX*;2c&O<+dh--r6*DNPlJU3?N4=;5)J0*4t;GtbOI zqCAcieo&ZJ>AH=0WpsGFVH|C#h^@*~1f!TxPaulZ@-$TGLY5GoXdH)mUNg!?84;dD z0{v?#*KskGdwH;y`efrc)-*>1l%ri#mKc;+3KcF|#vEqzZnqNC3(M8qtDBbov~gJ6y?Yz*;v2i=+#@5_3o zQ62VCp&)7zEChvo7Ln=v5gnws1wK66Kx>ee35~C0V5j)feGYY5Ny@ur&gcyBj@{1i zTmv{vt`&F6Bt;>gMAKq-(ZfNR3onnn1>cH z=_GelbY#8U2oASHjU!7c(tic@x&OqLmtJYw$K%%%YAIu>A>`;1eHBHuxhcLciahrE zGc(y4{Awetn@m{F8EkSQzJ^2%H(NrV(@j36(;n^)uQis#(SZ4#;wne&Q6*tsM-0cC zVw*_XbMkuQI6BK^_nbsAq253gKl~Ebinx`&$D23bXc$MMQ%vQhtReL`QJwuhHmOm3 zdLC^^R|5^gn~mWZp&4I@aUp@;LJ&Vp_7P!E8h6};w;ILqVRB@Vav&)Q^EP7G!&_I- zL^rk6neOg{b@z5-Ic5;1Aee`J=qc+xb*`_4UhsfaqNZzm#55G2N zLVuyz*{#dj@Y<6x9Sa~?Nky3hb+SspN0i7Z+txMn%|ER%^!>=b+k>n9ev8DMj zYI4_IZhz=Du%(_`7SWyu;p0Ydm{D0n*~x)XK|w!3D2Hw>m!L)W+ToK1a`-7L%Pdlm z@~5aAm)YT#_k17VHs7q$N}jH@fjjm-LP5;mz-WH!O?3Nx}PzzqF{Go}V{{qovkNw6c&WU&vX>I~H;0!7d#s`J!PQQ}i5L z*~x({CD4}$qUlho6mjLc+rxh4FB{F#lV^!)B`frV{7N-%=;+qs&dXilt47<~yk#kY zzD5u$bGizK)8Vfh!ZDzyc*;+qA?W14Fs;hV;Bw9c%NK=E>q zQ9(h!l{3VPGSUg-ZyU(rWnw%*3IPd!hr(<*ymyDUk2iL8I@_o5KK6G_-r=aR*pX4u z66t#+aZYNkLRf(4)N(L<-++#Zca9Y^WuZ|?aeqKAn{B%O1Eq^OFu*@Fo}<~;+#`~O zMEMaZN05@wWMWh7JZ_TBhDtn_`D0_Ag}27OB&u^lu{-+1A9 zr*FISmJQ*jhII_OHOE{{Nt~aNLz5OalXe%-D`T38g%e$?_j4mTtn(aS`OASqOt4=N zM$0AtcQwb1`=#O5O)k%@FoG+~3HU1lSzoeEHQ(6{x56O&+E|W4%#p>)futnNZ-_Yz z7;d}7_SR0Pu_4|~w~ar?spM}BdEw;j6+##Q7qB=aQ6-@GPh$)v=65;Ixg*CR0Ci@+ zw*)xyoFfaF14&7kKM*6s2F)+sKigm6GBa1)2H}rJbMyf8mX=nPiXaviOj6iC5laIE zzn<&tZs33TDg4=J4$~k<)q;OnMufj)!mdthJD=~t{C4-A@K+-^Oq?85rI!QJ5#nz| z$Y&W}+?mIQTkN~VX&Km@e>ae$)z!SZQx+5LAEe2kvQp->1Q$2|b2X^qqr^H<5fkcP zM6ow1YD|7dD*Ss@uyhknrTS$t!Tv+o@~!Sp=bp1^efY0Y|9`YPF_f6g-3*Cgy-YSC z2b4X#!{za7_d%-~b27?^a0L=*<7GPo{U$GJq@NQzUan{)$GoT_p;E5=F3O60C6d)` z_uE=1U*B(U!-Dx%Z4bM$f!85%6NbS&2NN*|%5nl;g+Ok+#{=3+sHayo#EFv;l{L61 zA=!N>%Z892fn9Slh7mf5_BDW`Ypi*iWhyI)vtQ=WEfy~erN z6cg$IqWEc2-O<&)JT-|bfg@IibNB*kYTt;Ocn6WkHkTJGHt4j)=pMzZ8P;+1Gz%$@ zIZ&f2{MCu4e+8xrHb74`HuZ*UPu&u(VMK@dm*a|<15rqjYZAh0k~|h@gY8ytXKN6y zWf(^_squH1k~r5Uhh0Yc%kBWj@Ot4o25}5!HIOJH!oehPoGH5FSsu#dLT5O{IF8DZ z1!9?%t|?1u!W~K+zs|X>_U5gP^_{7u*{ztZUDrsC9BJ`3&ICqfgt#6NoOqaru{+q> z!LeD~{jrUg*&JpphuL8w%9e#jCB;3QTn=odwdIBFIFyH4afBfqv+GiPK}+GJC*G0d z(Qu`M7&l8{`msmHa;|SM#~Q|no4KSS#8E`-$D*XaYI|q8vojoR>Z@DdN%5t740ZQa zQQ>e;3!6{F4NTTCyRG=1C?MS%QkSlMG}&3aMuaOk@wC&8OxjVma?ITFO-6tl6Tlr6 z#RF1ldKPYC6i36aeLyNH33O9}*eq$v^8gr&5BDPTUWah3p&ZRJ3n)W5P*M}_X2g|! zcJX?wn;Xbs&}KJXsK*h_kn$a<%rSV-o1UA72XGFD zd!|FUqp3Sudy1=48PySE9T~Et^Y-+qwXG&*;^9=IIQ)#9*z1N(aV(UyL^_S6{aE}e zC=Dj38^bXf7{7}q4=3v>%`dw++|w8=wqSW}FlEP=Wi%z+;w!})Da%SSt1YWY-6J$gs)e9pBch93|dD&=KJ*64-4f&jL)=v^OlAZ5T(lS>u=} zq(nN0q{BhtxW(JP@ZZ;OK6lgTvkvDP)G@8iO3GRe)X6FV=P?1AvSSK}YfIqJz^1CO z*@%vh#calEpr5jc^tWVvm|>V)^X7m26V5k%hsBbjDnlbOB3wYiby0-*C9q9fo2Q?7 z>IJ8szHP$=&9g2%@9ePEXpYTcSw^@V7}FGb8__g~<1H->{1f2$?DC%a3ytaM1yXz= z$F;<|h%ELud3v~U9uIr+G~C5Ta#YD2Tc{k!QUdYJf=-pp zgch#7hYz}Cq?0BWWM$rwG^9S2Gh^LlvkAa7Hp#RN;jlO?y2{Q%Sxl^HvN$=g0g<;x zN1s#Z7;W9;44Hsv7AoY#n;}nr{4}e_r|jb3Ox~a{Ye>fuXs!;`x=|7obdFFu_~II0 z=o-W^rdJ$%Q9`npP$Q2rZbfBh58_ zn)!HjNsr1mg0j{42CrRc%!dB3rKfo*2P?CCO$v1%XE)lJ{$062E2B8Txlv5qf2!+RXNh9 z(~#V3-;B;{7~Xo8V2@E8p06aM^e-zZ@}(qmc8i2@1|9y-IE_{1hLNRsFDjP&o@wXJ zy-n9qyK34~lo8=RB+y{6Gev11QMj)`9HxoIj+HpS5|*??x*ti`1F5{R9M83Egy(-_ zKWyft^!~;?YjT0DxW9Z<&7;CG4~1o|1JkmH0k6+E+l@T@Z9z~wK z$8*-BV*6GnJlar>b&{H+i0qmvB+6q**$+iV<0Mv<@K^&l8gZq}3K_{ij`H+mq_*Dg z;Sw0^0(`t79JAe;ej@3J@r2CCh6`%)0v6$)XbeX=<+!R~IS_>ec@iNsh0|`^_|IYs zXIq|Z9LM~nX0vV~CDKz!;;3qu1F_TH!lm4e*hITkT|{`QL01@6^KfKJ%AJL3bd`dq zF$Ju7>=Mw#@@=5u=>~O7pmJm}a{wiaTM(m{;u*xSwc<+F9eQLeJktP*-4Ynnz!c)5Wbqlv{=ZY(5woob@J zf;4r+t*KtC*V_|c?F+9olA}rE1=AQ;Bn#>7K2csp3QI26bP z$T|wFG*~b3<|u9m3YBXJ!W)fzHvW7<=TbBDFRQF{you>Z>qj`Nf$M$WY`o(p^Uzjf zdm1zpTbgg7CSB>n{`O9NkjHi}1wQL&gA-frrSu724y zQ32jTz+p&z+&3Rjv^Oq@8;R4q0pXp-J7;nsjR+}IBflAyRvO;LG?Y8lwEOklhIMpC zxgX6RNWF6u668IEXvHADmblbIC0*z*VGZ%U#&MW8HT#bWDUses5?y2E$=11ekrn#^ z!uySNSx@mMMIk>xBxjPz_`)`>VY4^vx55XF=ji=vOgB>!=R@SMI>Kh)MLB`>C4ATz zjy@^H)MqNINdF_$KN9-+MdSgxu=!4tN4@Zv#58WcX|}Mu{ZS*Hg+HFqOJpq}bD&;W ziTD^3K_^D}_Rr+Rz>w3z{gEFxzGJzkkcquV5yqYwZS3Qw3doB73DU1uDgs<%+U1#_ zM*0DJqCRPO$ECM9$0OMv7Zvfa7pTb*bFM$coijr`Rga5vG(3kdn!3Zmp5v>G za-a|s>`R0tD_>2Guet0FUp9{8Q`EIJ$%yb35@_Ye^{llGE@4dP2NAw%pmogg%9n{` z1!X7)%5nmJjX>H?=H%xh`qEPPy0IJ`utknFEU(T-DRI6*4jVAtkMUeee5f5Wy-tr0 zxP)&S(XsclkP)&7R#XN57UA)`wT6wY%}rZ3ZrZpxeA|GIF;y?@^GW@6@Gh)gLXuJBLGM-#2YXiWxV4j}Z|8en0@5eCiFR zPFS1zl^+_y(d29T6;l%DN93@2r6GEIcOF;cN}P=9s5~MIZTp89O$E`lK+OEo3x{Va%6pn97z8v>AxW61}LCnHKP^UbC^}f6%Fmk z!~M`xd@}x*hTei0%d~$JT4n`jS$U=BS4^K5y}59%MS+gjSEgaZ+){fI~{&+@*Zb1 zVk!$|35oxK;;h{^weR*|6Ai;3P2bUZT4X^i6s5%ZQ|81CKJmB{zH|7qaU3)Da%7>( zzkr%he<6yW!_oowLHMh2_TJ9{9TEOU0(USNp^4?Fc^xals`%dx<#5rP#Awl#1;zXa znVb)%o&*3{a;k44U*?OSn|ZIT^F|f+aL}bB*%}rN#3kNOtAkD zCUY86tanj&WmJ#7{HwS?>NIuqs{^}fT&Y3@t*N9vm|1};<)qTw&$QVlUIrj%td06_PouU$Te`lySlpx9`#NxvKFTlQqRvfsU$( zuusk#${`){l1DDThBg=WHI`$ZQm6=61V=@M-j8TH*7fAKUJBpeSZne733a9NQaFRs zJ%GCVBmN8?xtixY7ol7H|i+pC2abb&cgHs+#e^l*G9nIqbLdSqn9xaF{_HBWsST4CR1yggBfCj@@Z9 zq}~JyM;O7;xulo^lvSjEWX?i5l)(zsp9$ADfMe*Xxm6&_h;S4M97(Z_CoL)D*Gj|D zhH)65rTEHADV%i0JBB{Sjg0J=Bh@VYWFb**ObVNojw8TRIBeQ}$Z!)Qd8&H(4iTM@DU^h|DN$@v z`NEkYE`G*6)%|d+aU6DWj;%7xfh;A^%?K*FKIi)!y>D(1M}@C($4Eu`x1fHSSI!S` zAxgNVX*;?%^j%6j{#9&gHmJED3g?mmt}>73sg5(%6Yw7I9U9Fw@xwv=q#fV6vZor^Gg+{EaMK~VqY)Vr( zx*fUcGo*EPT&fUmZ#c&YhR>j=xm^@GLfnA}_Qx?9aeHER$fwPUcQoGF_`?Z}Wkg5N zk>8ALgH#IEF$FAKyGw{aU}X{eSK642oN9E(T9IjpY@rcFQBNaPMVp&iuRm;t(+%br z0G4U96cS@S85~>lQC8fYx@Rr_@5HddK#o~zj;~DRKp`gB#tbvh@Dit~^L)bN41+mr zIEycug-lJfGf6uZS*wn;BWFkld-!HSzXz*jI&88;+&)Y)n6{lQWDQ%5;^rt zRu%ri2kV8iEgg>5Q)8Va9Wl-!BMn!JQa{(!S2tWKwlvS9Cdcx8;|A??ZLisE+K#b2 z$5zSZK$a3{3qc%9tR6R;x}^X7)o?7bKo*Kp;#@$^{@^5weX7%03|oz{cdj6cNPSyY z&qLKL&ahu->W*n}b)bTPlrN$(Kg8np*|-TGCMqAt2p5~Y<3r@wDxVy{h$tz6?v%5T zc5?7xlW=EaI0~p{3kXG|eiy3Czc}DhU5It*t|spo7)vE&3evtCwQb0qZ7pD%#obq< zTp4nuAmw{dIkl|#FmTg!SJ$!>TblQzCJl1FHpko3y7<&Elf%*?HtLwXqeD&t`lK~t zqD_&;vO($LIJhnlZ5za~QdKJT6kod2)TP%4|9u#5`tF$Q@%a6O0lFj`qf2#$sw{7P z5uPBKHBm=eE8h|Er8-Adb}@N(*Jkv<+$YvGafi8@BdfS`ASnrR2{H63;b}zdp^e8w z`Bj@RZhK+7!Pen#CKOMS5UW;B#CZ}&o%S%y77XMVTCA%S%0e*kMCg&QKl8K{hPdn- zzDo?H25@u=HS<%7NPUs&ql;i|+fj&XXYi)R6xP7w?QlDcx@GzDo8+8bR$l1|Ob@?c z+C~RY0B&Gf$h+e&_|uz6Yg#DdtI^POELEuSKl4(d)d`@EA98AIw$;i z0uozMd((}y|Lio{H1{`*W5RC=`n(n@>52FN61j9zo+iS2;2I(JC*V@*2O8C}iK9>% zpL~{8#eNXk+$;!_S3XZ39FI=a2OHEeTIN_0X`%dsSPvm`Q?C6g+@-R9(*@y?Chb^OsM+ZP4XHnh>PI5g z=m6pw>(bdv40c1Dc<1TMM;q^K{P8kloM|k#fM%yU3uUF^F-!$5CmW`kP4ja-*3j#g zN9WGj1XPk1D&)j_9C@sH_6K>rIy~NJj+$rDM`>A1tS6Agd14wj_z%p&@I(VS>R!#5 zlXS#*5*Z`j2A)U{Pd3EfdmAVu##6}PmMGl&7@lg%4&$xrQftR$p{G%hV{*}Hz(ZxX zEIi#1jw7sv#CX4BlFG(2NTovxehzqmbZcNIz+C6<&$YuPY=jNZG_+$yHS4Gfj5t`gk$utSB2DB^2K+#f{V@q~`QhkwIsjpT51jNB5H6eRsRO2_>D zqy`ZyG2k>E{tO@!mk*{>%!VBjbZ0+=}={!+5g7_qBOtc1c0f zZ=y6uR(m)AZ+74{jXii2$pDU#)uM}Hp)4lWTgciUEOb7cmurUdR--sz$Yn0w@h;{gr30-qmP(E@1*C?5sfbSrXy>R)lOZn;EX)wpvFI^xi zUR6!3cag=JV`{><(4#kv2|{?cp&aHyP5aM6qP!>PC_7ZPre_hudky0lS8{A+CkL{W zK<^`neR7M-0sYXy5-jcleZNs0nX#zCScpPme1Hu4+Vlz-|L?@`K?6A2OXVFgDMc z?J(o-Cv07sN>3exPa5wo`11+vuuy|1#q)?l0aCI)HJ0Hu;nS9Yy~}XCJ>xS}W@p2l zj+i9t7_1z}I6o9VYYazgp@OP#os_ciIl_`pM;9I9$c_n+6q`^RTYI zZ6t@$TQeXf9WlN`20vi3zvCusl;j|M*D#(Y7SCiVLt|1ReJ_*BRb>nJXNB(@X&q8> z8LEopMEe10>OIn;6IT9q;RANKiMWp^Ss?&r>{{c;(_R!Bw-!ZLA zQOo*KMucCGa4isKmf*bZG!WG0GAW{|&`Clq7dNs@rc@qg>;~pNX!f-%*+0BmD^qk~=GYZ|aWkQKKGZ zl=eT6z%62$BjJG}lXetIF32?2MhVIODJL8ob+L~!?Q;r$Hg!kBQ&g4th>Qq-A>kM# z+C)<2Em_-bQ&>nS1We^Hu^)25kxDlctL`?oRH z;V+gc#O#MN0cFHOg`9Z*A@5+Q#qneGnzr_>!ha3v=tN5zf|kN|Ohj2U5wBoLo25z$(HnHik)x$h)8mrA$ zH0n8%i?*z!jFx{Ogz&Rs1z+!DDX)CzKn&^#UlY;4+ULC%gvCeX^l2+ucD6B+W zoryR$<}EGAjdsD@7tHN?JW&uG_1CcUT(o?8kkxdDa%&Myb;b(72T|It$+V4hAk8Kg zim?~{T9$;p??954NY^HbTU*mGF2^tGSO;dnbymZwF#}3kVjWD@5hEq8^0nI%Rnp-Q z!>;hvCzW!Iu+nfS)4=A-iF*^{czoRBy2kW)Ys!;<(~$i2D9=T&>_OAraH9`(9cC=Y zqF2^YtvO>p%jt&jj4VB)wB2U96Ug96O;GUXU0@9l{KV()2tqE2jGiX zgSl|5sXG!cM@*D2i%9-vl;=`6I@oY?Q+13i)u};xIp!7=q$yIm5wsO%;on=r4x3vV zVIBTt!q}A+R4_S!4#VV>g9d^8xH^LySHQz@#&MX-mBYJHLfXeun?`>N$DL_a@qXLE z(iDctHAZmM(Hvbl$pO<6YAsP52Fw=14ieC&;NLr8HLRN1IqzIeT4J48%@*(b#36aO zZBAMZD(7S*Tc#z{$wcw%#5oCe2I6q)tqkI58)K6hX-NE(ERMyk=%R(Se`^z8-Ktm? zkn(M)T<65VPKt0_BREXks=q>IRsAJYg}oiIH)37JL4^kYuQ^y+Tn67HJdhKaQZhdUbGvB;SO#IF$(Z5?UX zK~8Mih1-_q`qP+P!Ur5qHJ)P{V-g}-s4OVvX=JMRhe!^CfoPCv>47X+}>?Wz$VkBSXkVT|_9`$(;fTxz(=)z``J|4fG&|pX2P-Aq7ZlNfx zrqqh?PrCf-d=qy}fNR>LDT#9dIcfEb_f;*E!^Dz zj*nw8NBdsrC=d4_;i@3;t(n&RAT&+f(_e7$1^3P*w?@*C@I5JfFod}*%EzMdC}XD; znse|6;31~aGLGZ;t7#|`78+3$b&6E=B5ity_|gI%l?`o!IqKSMJDTVCw~&zfG}YOM zpr6#U)S+X-$Klr#`jArZs@T$;p=N2!oA1mF!>q|VdcC?T1QDsvQJtf>JtKmN{;;#q zjIRcFjpG=_O+p{RLS;cQFCml0b9Z5ueg`e%4(ODg4%-drFjI1T@p6D4KZ*%9PZ+CN zK7q*F;hNDt!`nS!!GN9|rUQ{NgDEg7C}@w+(hAffE}}DzqlVRdvBkIowMbJ4}qiuK;q?&?5|_|G;pYz!u~}Z)Pqk2 zbIR~wLprR76g3uKSw@71kZ=G9sUYHz^-u#i8bnPI7DLy=sLv_KVt>%xt*%}b;NeDa z>}x6FDi=kNQp(07h&ce5QoEiHk2HuQ8#Py-vt7qa7av9aVuiQehfD9#rtYX`V@?rD zDCv)(G?)9aI~1O(@K}?*C4M=fJ|T{ZB*vBA{V6iaR*@kn4Gtd5DW)A!L;AwcW z5gg9+q@c{ysfqU#^0*JVbd{IRQ$N*E4&$U0Iab`_o-vAv^t7BaTb@C|@pE$49-eNv z6^>O}%w@Jo6nY{)gG5@Btqxs(@Dag-@=OCcI^+~lc`AuW{aI9}M=akMH)!qVY88&% zU_l@6i8Z@DY`V;^nLOLL7bDJu+MXq&p78lsD^irO=j3ds{t9UthUXgIk?op}jv`Wj z9@Sa#XXhI`dvKYy_Jrq~xTE4Do-$O#m+lLw%LPDt(MqR@x6n-6*1w>W9))?Kp;lM` z%$q2NZ!+z z8p<(duk zj>o9+mS%XR0UaH3A)~w%L2MZ;s|x-q!tE{*P7+>iEXQ=T+#Sy$wlrTuOnj`^a+7SBRSOQg4v#LBjaOWbiY`JV80BRKlk$^vB;k@Pz#&3-VRrcEAHuJ6&L zZr-XNPQklX;ho0Yg1?Muw1m6Z1}DYAa!Ca=)i72a=L$GkHa z6;I`*pP?b`4^W%MneW_e&9`=~g)=aG&g!3nST{u*!ra59WIcP6Vw!>{VCJtCNpfg zg1cxseA={Es3=9&w7;FfXmDxUQ<4(oGlbALS@dx;IBggB1mkB7<(O$$e0@j@b+eji zpCgS6EP0d9X3S~h9-+@0%u#D{bg^>4w1oNsQMBW-IfTN6OO6N52H}eabL1=w2$lmS zHQ~NQ9L?N|rAQme;0y)#M##D=li}3*~!LzD5SC z0*fi19ZRRizHT5#fmwWkEQBJ9YRb_!NV@_HY&v|?)Q`t6CJbbifwLP;oNrN1y|#RF zywNp$+hq5~XJMDZeuvUWAz`_qZO|JO8+tptxbl(}YO9VS;rx;T&zYQ$tTs}Imy=eJ zeUAw_9Ll3TQ!;{Zm7v~w`o1N?F*_=hl#C+Cu4q(PN%#Siz-m6k*?Y{|+wt!B9~#q9 z%^6j+5e>=zi1NvRU(($dKQ`sn8SsiN&7V+{Gm>cS@cwxuyut0V>F4lMgPcA2yN${y zBcs16DJua#V*=Re71x7zV%-TpH?YIVA6apamxCuAVSYgjKTS3W+M$mHj9;z>k)tYC zIUpS&enkY$mvlf4m88q91J}Up4!<>dNBydF5J^MA zzoW3axY%SjZEoZr!tagY=;Gk&!;KK#eyqstEMjV+{ed*DGAu16(>?srAda36(exoK zx>Wx}RetA@TP4DuP1!LaO;M#jA|t|Ia=O)(w&1)Ce>L^huZ~bax__fChve+X(iLN| z?84uT;3)nqpbX?dNlmza5O+ukXKu3&)=M#E`==otiy4`+k~=Qy3jQy`4*X#tuPl%%+?bkhSI9UsRGPH9v80Jj*H<*$I%Il+iC_ZaS*VZ` z?@HvcH^aUL4tKl+6w@47ZC5s!<1>|ZM~tY5aTPL-0mCfv%G@Q5vE5!fT-B(Xm(QZ< zxF#)yx>B=G&T-nO7kjZL&YkURY)AiHv&+wv#MzG=j(8jK&THr5e%Ri?B@X9eOL5rW zK#ppovlqJf=e=)|+B0UsWY>4kw38W@=FL@v`qD4B?ndDPsI$*pl6d64E|0=Rs{m%LAb^ zz0~f6>l?uFb&A-c6u~Ga)KNsy1%`EIcvstSfHk;RI~=_lQYo@fr7*=rI))_LHQ0#* z|2ljvgYDhL3w!h2Ky(A6t;1hT7`RM8EDIHK;@yxu_IOyZ&~wd;;YLPr*p;Pqju>64 zH>T==Oe0Ky9S#0J-YN(;F=fYCn4;327*P@6rUV=Sz~ZiH4!DcE_%)6-eMiM&OchO8 zLgF{0IE_6kGWGJi{8Jo{PVpP@4;} zn7Ng;m5{Ye2*=1$^;yF9lM{^VnBCOZLdXblA`u4ykyg0j48R_naMEfBHH+g>Mud|| zP|uSe#^naIr9rrrF&u4)PvXXM8&whF6e7x908SQ}_+E4Y@db(7P?b(JoA}Lz+nTJy zmtE=jIrEE!emg32?8;6Bta+?m!s17`z3H#u&(4-rj;(UZfh?thxdTDTgVdVh{;@k6 z;5gQ+m0xx*b&ZNG&2`jd$Calscuuk(PBmRemCP}f@Eo9w0H+Z^qs68wXn8}d%nrio zMsW;_7F`$%WiheVlf{nGY?@IwU)W$oM@MNQB3fuvQrwN18=YloJqjnr`U~+`_Zh}L zbMkkJBJqmy*h-d>75hxGS-!c+V+8~kC-BkEO-6N8zq)2`QX-v|Nw{J|lS;d_Ae?O^ zhndglv65GHggGZ;Qi?EfMP_uo>0HC?U4{xNk!pkPvTg-X2IfmJyfL5^hUfRi3`s{%b<=sjZ7tHGEQ$Qnj%k; zd}WZ8$seGPsysnU%eXG44m&Qp+fBDU`GZbi;`7FMHM+R2^bOSeZ|cC2Z>g7eU=&^KYn zRH|m8LlLPjQk{Fx<2~GAhY34oo|P&ZB_tbiqA|W;3wUd|a|XwTOxrOUl#I?SAmt&I zlf#gUt?**77YIux?kEvV!qPMXKNKPY?954zZ?|`GDbjq{W$KQxeeC^rX-IrG#jk_n zmUk@f1jVH!^E^I=>vZ=R#8}4m1M;#lv;W0}{{5}+C9~B=e<5~=AIv$G~ zZqq|(;l9RkES>yF1V>x<|Qr%ARrTc)Kp}25Rxp{BR z+VDVwIIMt@h;md47gz7CSu65`NWKMfWQS()HT5F;JXW)DVIx*pFpt@T7v*>X^q`4- z#@oY#Ejf2a)Cs+&DJwA+a&VNwhcJaK^JLsl_lM!3#&k4|R?#L=Ge+VID;c2Tu&* zdK{aBh`v{Nw1FJk$Z~Xna=^5NdJIu4Fr)(?kPlHzhsPRZb-jBQkn-cGOmj5edUQr- zxPhkV*7(-M;|<|30>-XT8Wj`n3B=K3q^HfNmvFxIiN+v+AW-G zJ=qYBNqtozeij&F-Q>S#zeibtpF%Lb?rF@=_aDn>c&c$7*8GTopd-J*If`sTJdMme zBC|hBBl6P?x7rc85K*R{L4aI`7$&(#X@Gxukl~p|aCn;-DGmCgGGaW73=YhB6&U>= z#;ajG;~Ac9q;>e430+;y+?(B8At&NRuD6gwvwG z6xtn*QDMHjfX(sGH-KZI+2ZT#TgcQzdjVa)}DB5`%VsQ$<+mcnQ;SWNkWlA7`Fd zg_l|)9OrpfN<>*zDR>!EK(i;c$2M-P#h$(1EVe`U=du6w<%V`l&5}sDfma1ZeFdo; zUFbK(T%E_odMGS730`Tub@=a-+C~vQGK+AO6YW)`aTwrEeKeg}T+%YvZ4Y>hRwumL zfR1sqw3B>HNvzk9#da7E=wgR!c&z~(^YpQEy-<+w>nN-Zd(-lWh1Z*`!^hT6i+cDM zKI^FX1}gH?$I)?XXLvd{z{Bm{o8HC+_BR?~g~OtG-C%5h9Me-a-b5&8h_a1(;myWy zSnrh?Vw8~VTPVw7=XEd*{$F^jDLcA9MN<_r0qMStx@oN=EO3-~yUDI@twXV;`3`Eb zlf!k?>BFb{JMgWF@-@N=u-35hNRK&?SXi9bmV2S_|RbhH~_$3o*Jl z>E}X9r1y|S-)7p(GPUO9v=!#P26D8nnyoOVB+mQDu~AO0ymzm@z0z13g9lfF+zHCIt zl&8>%%w=VT{|fQ+F=5XsM|eHV5WZ?aM_VfGRy74_e~sFl=yu!D6%EgF__|3u`Y%L` zwW|=2@;9i=NmKGmpfT;jmc;N)6L&1~)%Y}$ju_t}gCzqSh_yPJhu=1Wqhw0flPO61 zJJdc9+Nom0O~*%RzH8!p*CwKj2;U>&S|re_mB)4-ceV9-XJz=lan|84Cfb}?K&MZ~ z<;42|c^rE&I}Gva;BIQ^KQx+S+Ehf3AHJ$4*pCQf(~KwMTGRP{*dH6p;dZK=jWZP? zenJGt0o1D=oCJJ@616*r!cUFl@HOXHu`*j|L{ZeAkxIKF)eD{dTxbopho2kI(dpE5 zm!>4nFUVp0foD?7E%U9Z4lXAArBNJC2gcP$8Wj=XR|K#+OySNdJ$gr5R>!Y?Z45^n zWppvdbcFd0F$V&ZH}14{&cb~7?P?G?sxUbq9U*>41ao40Uz)i3PPexI-Y^b_nnf4K zLRn0#Kaj=Ine7!l2Kt2Q{;okjhWAI~IjpFWMVc`!;r>J%S2l`W@T%f)QnLnOGW=&F zI$Y+&nJ*jNz5blnWU#u0jT9RC&PynJku`?)%3cVlE9BcC~MsyhG;CxsooX$nhu)l#FF1f6syyn2Dpr8j3O1r!A zB2iiwpfffcXy9}4hZFjtijMe|-<7nLhJ%;}nwa>&xRDlJ0H>H&GpeKCC^bD(koMK7 z&CVz`forTrwBmP?f<&)LQCjqIkscQ@;Oet$nY3deacp&88WO)Y#rZ{Sd6Pfn%Z%fW z&g&S<;TSd@eG3bXsfvDZrYGYmKE#!7q*h=M4l(-KNalq4FruRrjQnOqSt&S_DPV1g zmvl}I>A4KoHKxNP8@uTZdiIIR5?v-}~XBK@PNUm9dN4TqUN9ga4{-VL%@ zNR(qpIS9Eh>raeQC1dLIkAwGM7bd;95vwjT*95FOFdpts9n+FMn>{jkTJeE z<62_fm@Ix5{CBRT@*kY6x^^btQHD2`Od1nRgpvJvX-GxCo)_{&R zE0Yq^LUqDQ!_AlmcBJU3aIE#_#&Yz|m5x*j61@dQIXy4DHN&YUuW;}6!z~Tr@WK@W z%1;qAJpmg8vWBO2z<-*^b2!dmjv8Lmh_a9<$CJVdjMYmWkk+{aoVZ?NEXP1@63Ul_ z%7S99C6iMLmR`Gs$!45z>c?=xYLJD3m_<-CSP2SwB9WXErt*mU1n}DLd^l+}ypiZa zj{Js#;+;(1mB8aZ-*78KI6P>T8b|?2o4|z8sRx0Y zpRkK-72$MaIp)eWt2m2MM~wAkaFm+vw7Uy9ynxK4#qqGgIF7kZj<0OxKp`gBM#AJ) z!{skD>~$GGe>lTXjvB~oUlcnw)f`H{7U@iq_`wD{xQFxvcnxPUVaHI_n#M*8Ox!jZ z(Xovvs|c6_RY`%*BA8uLUiI046P*|F4Z3i)5gmEV(M8Mw(-P_&qSzbF_i?u3TvK0t zZ$tq}o<~U@7A=OaSXXe&KP`eZ`@Q)+VYAU3GqOTVxhaCR+Dgb4CgeaQr0_!zJDqU8 zVI3V}5mneC2qi%-AVgy^wi-9_IdO=ny&bi2t6?0y2lpu}vM3gcQsQhQN7h+B?uljW zaG^mQI}pZCj6y=<7g3xgm0hL_t=(wz7n{1HkH}G#gB*~K5O*SiegRI#<3ShhoNdOX z_UUkEV>y~qNrUScrC>=?*t-zRri6ZJw$op1!1dE#I~%YVdsibmno^D)Ye7{@sJjux zl}n5_Gq`?uS1;V%5Xa;96XuwuVJb$K>OFD>(pI`%(Z=SbEKO7Q)G%H13SEUCL^kas-j|FLN*84jZCH)2RmtzU^xPZK2QVuChwTiwh=j2 zzEKq+7Ku0r$xpR3zo53m2#$`kriLdSF#;KEM0R?b&i*hkgu?>1sLF|jC?v*^j2rQD z)2QVC+0IWqY?1f7qOWGlnhs0GJ`ZswbZe3n*Cnp>>|}c6B8t7%)E+#99(Ebl^WDb# zJE=&2H}yHSwW3HT(&LjLdko~5+M2{@*_H*xyp&8fDZ9kD9oo&g9lOK-8O|{fS#04f zl(a;;7fCe7%lmjbe2W*)7#Yi9j_3G70g}mAf&m4d2&L>yVZSwWJ(d zxbiP3C)oW6V|QQPe6?e#4_o~HtDzOqW7{smgNEcpdjM(N?uoM{*uWJYXb6X~Rhg?t z3CTW)vL!#;{3T0h&kr_nN9C^Zvq?qz51~FkfBGvNSL))78?GB3gohf%QPpZFB`vWY zMpnt!%GZc^N-8|uK#uOIW|+uAqCA2WHl5;N9|lV9e}1H49M!pqtr}JYqnJ>SB8qdq zWFv9Upf**&pEniwJjJ68=@{&5&OeMPiu)LHX&zgP#>=QNUFstqyBex#jP?;DilRP_ zRE{lqZ7uE?d%VFM!&ijBXA&lr*PK2v0Pa!-gq|h*t`i zMMZuR$p?`fPqq#RZ5?ZRvH=~7Fe5uJ;9^Z80z8EPR(|{uGLBQ7cyRQr&A|cI^@Lv~kT<+PXzPedbj4svZP?c+$@d!fPMEqRSb*yEMon0ul5kHUO z?0#TsYPDUxAZ8)q`9^Tez;bLAOb%oz<>Cbd(HS$>!ktzxH1X9tV<;fW7g3V^N~xvT znb+wx;l&2oK<>)7AC)v>b=5-A=;7SyHR8U6T-Ms`c3R)T`PmLPLBG_Hjxi`l7cU1) zOQ@Hvn8mf><;MG8Wif7wc?G#gBa1YnoVdhgI6&vEN<+|<(4TnjnLoS#T@a~#&*=v6kVk~CMD8qNMfgF6Uh0&To>CF zUb`BOMUIUDJFIwirxB&Zc^x@gRO@f=a5E0pK8NYY@OopdTfRKgfPGw!m7L|{a^k&# zyn~=-z6z8fHlM%IP>!*%W-7PTla3f~B7>HnT~7$hHoVyg4zrRmRc2)giNA&7Dlpq5 zo-Tpk-41UxhG%8L1Vk!at)?g7+X!TzoBA?%{Aa@34dm#w5HWuL*soGR%I}~uM2mYau1ldq_G6q;%~I zI?&xS*zE9L!#FBc&6P1pM~wH8!3KFL8$M0O^fdAN4dNKI6|iu6B3eGT6*>f3{OM)1QX@37N28$d+mApML!CY}}i2-P_TmZy1f z*?>Ou@KFOf28coZm2IB=YM%gNlmaX5q3Bp zVj6MA2$+6~Hjj&izid=TId2%bHfW0d6|z}C(9>yiIBt;r~G%pz;j!=g(Gm4%Xs)c-{Fl1ZX~+3;tR zcier0Ng@^L|AqRjWyzH6&7cx?;|4f5?8rEd-n+ptt*D9jH}VbxFZ)kZFE`bjT-XrL z)A_qWH{*9>3Smt~&#?AgA+0<32k+p>BFE^1dFG6&1Gma!Hn0lHZo(0<-;nc0Rq_8t zK3i)9T426nqP3O5ho{eVW=7%PMs>8-IejWObuq#ILl}!s8o^k4Ga_?l#sm1b!7GKyoEQCjnD3evtJ zwF_S@PLm6JoABB?X1sYMm+FirOR|1tfVjN~*grdd(qD(QSvTo4n)ouGj-hOQdU%RO|11p*zH0H=te9 zX#Y!pZ+aqLi$o4v@`$}Nin}R|!ajy`*fKe}7Me%50ld;lN~C>_gwTpPI8k$i#whG( zB!`2f5~5Mj5oUj4u2qyb)Ki%*2dstBP|}i)7zdI;BR=IiZ#K7ksyBnp#tt%+V~(pL zp=PY|O>Y!M#XXqZT0umZ4vNMhhWuX&qO?Rhlq7ahd5JD+bXzlCc_++pm?0hG%PgY| z=8I*TLLW{vhkv`eogD}S;ovWQ9EBqc>S!;rfS~!Jq$b>v#HoGK-l;9@UW|>N7rJfy z*%7Y27GAV)qu(QauBeH36nUizhZY|0Zj3asD9T`aR^bXMk&Y&boou!bHTyIbxU0`~ z4dv)$b9z0;d{KxAb_`*hNgv^{;XqY9=Cp4%L-@Hn-LZyr%%mq35m!*1zvwJ6>ezy_%O~w!$ZptZ+-_-OY=t5WM7Vdy=cR^ z=Wjgif-PIajZN3lmzQ)+LE1N=He12u*x7pSrgOG$JU`sj)IBZj@}R1uBgW0hU~80I z9hYDe&<;-9nF=>IisRWgI897RoEABJPSf)(m~J>=mX4X@jNy1rNU7&vR*?4b)TSY9 zi^~J^^j|sC;1o4IATQJDoV1Ac|2_;C?*OQjO0U#&h`G3I!31%R*2& zJd;S4g=B2P;epe)HW|t>CQd2EDXU2TEb8w=eKdeDrr>1`3zM({&Njp z%tgM+S|V*FiPl;gduZezhsxo+wXhn-E+s9o&L@lYGijxEL-lh{MXY#42WX6{WvIp_-+Ppyp)C#R!E6-cam5qliyWSgl%IudVvOqtxXW#gX(O& z(p!jOtR0hgJfqq>C<0g~sLg>d-S;>mp8v&YuSIOrtb^hw4RkhsH^v&wGEqZiD}S|2 zS&wdtH^3GrS?--VIFLC_5xT~8^l=Rnx~3$~G&!s{>6fQ#Q`3z+bRf(a$`~`lUQzMrarEFfhp4@(`0tbx2hW(y^-aw2kMt zu@@Omx*xQ+Zrq~J;ZlRFA78dBD@>c@1Pz3iTAkV6R5vykVPv#DYjp}Kkrqf|k)D8K z8$AIUaabMgxh}U?GL)l8r}TP3%eBPXNtO(Q7#A|%f!6~=*-_YKBu6!EXy!~woZaN4 z!i*Dsurwwt8DMP%AtsmVWmM(j&)y(fGxs#j*7*01M0zwSu@vt`MGmB6gjAYB!im(H zOKM}84Z;b-y$y5jcuY-6$l7-mb=}8(cptQ-lS!)0Gqw9VrvvV5d`CrXFmNks;@ywD zYlCMtD@IjV>Y&juPp^!dU)|rps|-v{Vui4Z24UU919%T~M;BA<2z-E>Zv)4t;ep0> zINk~gJ@4YOq$ucv2xSF;XFy@{Xu#&_>kAJyo}*Uh)S~5!EG5uG2;yKYy^ri{*W%)b z8q2YcydofA<(nRkGflg;JdDgkz+CP%);K*p+_;Wsnni@n7szA!C`D!U5yWzyp3kv| zrJ4E@9%(Q~Y*k7c-(Fcpgh!E}5jtFGX|G?#5kA@wj(1iB4vJD-ayC|&#}Km*GZJ^c zL}uH=0XBhntZ^J}p$0oM3yJbLQdlyQ3vs41KW~9sk2jLT_HXb(mc>MS0%^2qu{AXE z8TTN4qEXi2U&h#ir9GvyfRvv^WlmZ0Nroq{Ns_DMOJ`+5K$1_PBs<;I!CW%H@zQZo z;8RWC@v0m8r$S1kr;(I8D0t;Cg%qA{gtc{0F}YNqK~;88m_+O>Ea1c=({zlmY7@Ch zL&DFZFddBlG_;pb4eWac1Di@tDdiWZ)0`i>{wQ0NOOk)B5q z1Dp}wSej>1Ur5~Z4d*EN)KD#M78CFVIcv6~YW@&jxE5AUm3%q*Ove1RST7=LZ)7f@ z@0toPHhssSuJ+ocAkmjlbT5d~lloGVJOST~tFqPlh4d1983h@CYh89Ly1(ObL<(wr zxp7vBp0V^Rboq5v(O*G2C!-WGj_85#N@F?lREsl5da1sOsvP;&4_=!bE@B>^mc*+K zvt|6FtIMdA)xR`t-NI{l3pC*K{wv(MMccQm3$Hb{qg3bgv42YYw-jQ6y^gSB0b?cR zesS{Xz#`y5nznT*f}v($1ijwqTgT_z1ckRN_Fc{Lx}P`je%O%e{Y;M*=ffL~>S&m1 zuayGQeG_$Ms1?yGy9WV7?>C#gV@za&ZDq=?+HGlx^cIrX1SZ#D`~w%(&hS=4Ihw!* z&tf4Z(%W*LviF{|M%Zt?AKtz;(98^XtyGrkQUbk$pwzp~@0jjk9mzY5u(sYUCYS2F zsLI}rr=BcM^uxPN(=q%ipLv4BQhW~;_kkihZ0;P2Hg!^tz4w~3!{ADZ^*CxmqP&lk zG>f>a)6;U^_Zz^`^ps{1Q+nxsfV%9_`Z$+>)g*-uv=NQZV_QCG3`gCkhH}s>Cg6t% zteL@=Vf)h$8^}>i3%ggi;<5)RVLp;Eu>4}2{p_FzpUX!L<1uFDVs@$;(*GFs*<{zY z#Nq@n97`i?-tuuntbI7UljM;K?LrQPAP zhIEY4Qc`8NA|t}*NMJ9RMkUzoeUO)Ra3uLk8O)tXm#10LdZ-d{A zP7Dr4zG%Ev{1#SxY8uL4v#{V_BAg>CGz%9YI%UhYO=pBJ8`06{mD-amAmy)6nPqbd zhnRDdqtgbHr^79?ZIQL~tA<#QpNuJ+SwWe}7iBpCzeXVYi5b-W=u-Q-Q5+djG9gSr zy5FEK4b40u#p7qWS_u1rO=81lE^qm!fgIt6Sx2mVv0PN}ZxPO-j>Amg^X^Zzv~1wp z#&dKjmQ+ByqL3KhA%kULX0A2dHHX@O=(O(|!Sm=+`&bf?^7p9BSt2cQg^7olnswp( zChcf?Ys+MlhSYyRby`)GIZ5vC^g|;!s;H&b8#4lnT_{L)B1?>&tzaq3Fq{ED2T@GLp!w|vpj!T_l_ zWdF5M?==237Fy0VM;W7A`VDW1Hk_UOJqo`yyknHzaP)WF8|-&fW`(oO3Kp^5%kNG5 zr14o>zTW{PblZQRI4!m~I?}>EZi@3qlXrxy)Q3n}MT9?*z^*X2iZDduOdkh_qwr@V zIpT1#hKfeMs0s@D7ee;|6fZR$u*zMFuuN=uq(%;zoh!at4VaMq)pN*b|x*=1Q$*nbhrZYl)|WB-Wx z>8bE)FRp~2>hG9p|KV@Z{R82s5me8=#kU)?Bk7dJi(*EEEq z@~4!_Mp;Gr*P=cve=6wl5FTtRhJBIx-MO%jksJfjiiUWVZ%kF>eM#ncDK|8&bXXH? z1)Mz?Ya zS2)aAuJ@GEr}tD>6YcO!tL<=ukiBq((HurzZ4gjwxdSDUj?AP~M$ragMNb<8&G~R` zBRQU7O0Qfk*AnX}vN*6U7RAiMh@4nbWXN@l=6H$?T^?HWLQTA*$=e6KbU*z;>ie#1 zC`a4Wkg+Tz$}yxQFKcIV5}vDYtm)&!xPeWnQ;Nx@dOfPrF5r|n&o`Rphj4vUK6$*d zlIn$2M5KQM>hD`T8+0CvJSSp4+|Uq?^40KgOi7#@k;4`z`?p#ngvKMPDY|HGY%oWQ zV-m`fU6lpJya|~cbZR@b)~0ReoXhn?TQ;3@%I0uWBRUFo6o`+Io3T~31iKkw+<6yG zDCduFZu*Xvt=8{F3CXr7%c;c9aEQ=@<4o0I6Vz0tAkpI~%DFd=qr1D&@}FS3_%N=d z+UPqcm*_f*a>!i_?aF&bXdlxP4YPebrqFQ?5sA>PoWxt<@DNL-Pz<#h#Vri&aPgOx zTBY>TJ(;@6^jw%kLo=KS!*EMecD$2PEjI;e--_Ct-lYrw)+Xt>+3NIe_S@fvg6wbe z{x6ue47W95hpChks@&%bsOWxgNBMmrpC-Dvjp1lG8m7riNt`>7!|8#% zOTu=vf9p2&(MI(+lj(cjOfeCa z(o6R&>K=;Q+l8SQ*J~?gA@J}Dtnpt&)aThoag6)3igJ=K>XHI)CYZJf7mD@zJ)9X9 zcaGd*JV#AsVzFu}LYzayb%4Mt(_Uv7y-mTg+l|R)&P*aM0*-hLJI^)b+2dbS785pK zte~vh*vi|W8?hcf0W^+T>SAG)R>7TTcX9ssyQpjFZt7oF0lJyZ-bd)u;CC`x9-Ff!rhGJn0qaBVtFX8Epj~RihuWwc%crkn93wX*Fs5zi=5lg+-Hgj9Qc~7HPU6q#)&; zROYb0aOI%KTNor?&Mt$j$8W|Mn$5nPlAMUUNo3ER_Db9_F^lo*l7SrUTf;7kQjz{; z)ZZ8S*`}FGAHqG2;fSlssrAtEMV1oiUIdlu$Byn!E|9#pQTD8UL>Uq8Lqff$qw5d* z6z87qzJ_y`X4$c&qRi`&cJVHB#lIig94n5fT!A2*o)>AI;8nu}YVx z9)*XRw&UrXMn)Q_u;1PxbI~<3Q$7QkDxRkimh2$gtzmNChn+% z4Pjj~9jHkEQPk&inV#$~;4CBlKRnvx9nU2u)N?6mNc=Gr=g2r419aVE`;`f75E~wA z5J%UW1%$~LB{kt5N8G-^CBqsP##~%>^LS%9%$NqV+?2$50y%U)D?VUyfX(ioXn=M2 zeoX6I3oD?2be}|B7Na=bN(VxCvI#pz+$E0}+Ciq5?o+5sv&$x3Fk^)Cvf&od9Mn^d z;V`>QL$AWFDvF{$jZ_9LGp-i?iSTs8U>BN zHqph+b??y=@=Swm84t^H%2K{qQCqk2EZ)ksAzks(Fyxg7*#tx+&-Kv$KHF~Ntns&D zQo0Yj!mETmR29}eJcsv?qlM!9J$=mZ!N&bj!v<*JW}ds2n;0%d1$!1N3+pDH$D5!L zm*a3Z4ElYvUgzsHY@CSpe4{%`R~8XHU(^(ZeF3qlt}MjCM0lZ*)>cCe*D`s0p-Q6IE^3W#Cu8R(ZO%aJ#<|BD7@5oj%KSeRZvqB>SaXH zMo10Z!T|F*IQ8%4Msf7v4UJ>c5#tqP(9%M5Wq&bDj4*=1K=YM`aCC-9sz+9lkov2r z&W6k;qBxT6ETqfuYQs2+nrR4TR~1E3UqdRJd)yG>szYZfyw*VYFs>;pg%Y= zdXsyz2*y@4Sa=RsXn4Ib9GS@?%1geeDGK`rV(H^Awt8Yi)8=Jc`}c)68rTteQOF2g zT-H&Je&3909U*v{$9p1dTHq9vpguc_X zJwuuD8qTteAnziCz90>9b)p~-93F*t8^hsrDiZ5S6_?Ty=sg6nJ&L=`pV3{|jxC-? z;l0Lj+zd01)yQ%T$K~?GbF0C zV`x4YT0@7niGI)USwnhUk5MDFb4_|;el9b)+>EnJ^sKbisA!b;d1HDSjbg^IK})K=hNVcv2?aWC#hOMxM4Zvu`N99#TlBRMLq z3F#5q)pA+!zd}AcDr*d7ybr=D{i*HTQ}(OIcD%f%Rv2nCYJ>@-0y;Mc>=X+*@xDbK->R*fPwVcn z#+X}K$prYeaaVb(Ca~(l`;x5q-ywf5@aH?b!*`A27@pKT%t$Z6?@^GAN{(^n?oXQs zGv~wA7^cGa4dEyxSwc@RUsUvj`~i{s0Xf}=sXaN{(zaEYMe2qh8qQO>Q*z;!X$kcs zqG)2}Gvydpi$Q0}zGQ70aA0aeo4v`e$mqu|6>tbSMrKTgu zuLzNY6L!?DpnYe4ZTgO8w_-a*0SW(x!u#TlTW5_I1^M~#Ta$N`ElaH&*j3UJ>31aE z5Ts(=HTp#k%e5a4Uf{wkCh5>lPs)uHes4E$0aA@=jtWuTL2csI`u6Z$~AmzVMnf51p zPVANteeHiWZHN7tQYsH+73u$t`gAN}jD&3M2!A)}*7(~l4Xl`0ivOTu$up8S;`yfu zJE~AaMNK+l{EG}WqbQUL4Vs%upTfTl<0$Gmxt>kFFfF0}Llm7b$g9razzhI(o&2w1 z98Q?hV=5%1emV4BdRW=bfPK(76?A!g?_PP7)5hA8f)1jPAXgwn4UUQ#&o&Kv8NhM> z%Vtz4A?Yhpnp1V7OECx3JyB*dowlrRXn8m@xVNDkUV*F=OY4fFf?tX7(%1}0Y`t)0 z!#V0kLphU*^shqweOb!lhQnHLha8Q z!!iNsUW2;(K{wkX-QAPjp$zY9n!clk2_G4(XY`hbbtXJ z;ksoBLCas5rmzPR%jcI1;{XdK4l>xu_?IyqW=_a`L-J>cNc~`{vw*4YPcy{-5Yu+N zn_ACA0qGt}-2oP z=L8*LFo#=%sRgRb2y!GLG@8ps2Y27PwlN%)rbrw~u?%qrKi4BCwKE)9VL!N0xV|wQWx3SOWC1DPfXedq$Z6j?ZEkJ@I=KGa zpfhz2c6hs?K^!B&hAp{kdSc#)%>7FRKs%&qzqN2<<2gL3jisOv6YM60u@OkELs$qm zHHO0g$c;*=feFzMcrz-Sa%?=RVB`&!ze@5yoFI5CE66~RnzoDJefrH)+x{u|Jqr~q2sqS zprc4PL~54BM7tGfY(OWcTJxjng@LAd!>x_uDAq`-EL9|=ejBQ*v$3{2o&*_gYXC<^ zR_q9(m{7MPiggn&6GITjsodTe7-g)X48-J8y#rNQiu3xXg~9v)E0peN(hhe?POFEM zFQSkj>j~M9x1M)5gr|9gvqih%6yrD^lO?Yfuq-ClsbtaE&-XFW>x{w%!#KMBoU)P~ z$_Q{80UEa=!nlW*u`r3So?T(1AskN(rA29l$QMyakkbiasZBwn@lQCz7>;Z-#GA&i zL^zWKmfW;L4G%GX3Y!e#@cX6I%12#EoU<~Ab`%O;d$c%>qo^>~eztKOnW>m#Wf?&> z6T(J}=J>KHm@Ni!*kn>rcAB(AJBPHJf>x~H+*mrLd}|nRbu@+ooBHshVDlkPW1MR@ z(M8HJ?R6oH0C5hE$DLT-$kfel<;}9$h=X&)y@m7aRvi8AvN1grBz!)F+3#YMQlI7L zGJ~+qFplwjNhCe|Mp2Qslg#l~ecL+iIv*}D?xyiix-KDj{Y&WzeIe1w%fopLtZ?LZ z#TOaUVUDB8P*S1tg>;0t6A}C2&QZ#v&kBAdeF_&F#!--Sa$)ktT-Flm&O{vsRE+GH zN2$f&fGhOo;g`{-S9dYwS>qpOlu4V~h`XY&_;)2=y=QVpO(IyNkNx|?-3;q6q8j~L zSxTV06U5gxL>JOu*V3O8L)$2h7APfEwkk3r+@p!GE_D7c2IqK48v7;MDlf5u+%8o|GQcB;hpd&(`1dWNa1=jC|fdL%Fe+ApCAH7FI>a!;2 z_6!XU`aO7fE;WdwCg;@oA*r3rQp!jmh&}yq$BY(g&~#4mJ)q-ePFpsIMWb#TPc3AeT{{T6k)6DelKYS0@nM&t9YwpL0icM~cW3o9 zrouAbVOUy=dc$ChB2vGM>MR~u*@?~%E6&=SroklhJq_U~gG{ZrRhJRuUO5YC?Zv2z zmh9f9?|48Bi#8}C_4`o0?)0^-9KwB#^S?TMO;gzW5zC2_d>;Fm@U5KIo1Vt;COh)E zMaFg*T3JWWF<&ef75o7izOge}It@EH4rWHJQ${;Zhk1AUAaLG2Jka1C0|7cyNk=!Z zvaoL8LHP!97tc*_x$RnMXWa+e4LEY2bp+2B%S8o$2;pq)aX@1$MG!vJU=BAT(+N}v zNcdqCR!!z&!)5A^K(dE|GD@F-vKZ4q{bn;H*y*^juKXNVVNUGbeNJ#xrRF9!G zIF86P@nKwJTQd^u3?d31i{zC}Brq0T9AX9U2)kU*Zg*-}E4xhRf zVj3!j)D^_hXGKrMr;%7TNk*7(;%swxy3zL3B*{_&J;SnwI31ne)Yjf|Sc?RA@H5u} zt3>S7r38BxVe&eUc20(c7JM!{IO+Io!#Iq^hRD{WBgS*c;FHS%RvYF9BgJYx*C>uB zms6`K=8G&P(DQO;Qau@=Ls`I~_s=(sBQp(kEa`~x0x~pW&z5fw3-H1V4dL+Ctzi37 zNQ@Veu^%2-vaq;sP@iWC&V?5n$MM7(475T@q?eGyF;2?$^xWcT7EOG3sc{_nX?SE= zNR*e6!e^FyNK_jHMZMe@j@Oct>h0$X=?L)(A{bAE7|#~|3$HZs*gHUx5d_yaVK4P;NaZ*xZT6V_y=65I-M`efx694 z@HUep5C)6(_5GyX2tKT#{HOHN{S|-^H&E6-L_$PebC=Sm_))6URL=S9PRPb*Q z&OQz%a90ip9#z$aXX~4WbTm&zYC((3C??dmGAd0zquGt0!nY0O=uT5=aq3Fqe21LW zaj=k%!go#I@s3Izhf+)Pd(>pdK{FwT{$a~9S{>p0Chu68t)*u%bTB=tWr8C9fW)Ig z%x7ewIcOu|6w`~?1{CHorhj5w?hg&W89yJ>n`bq#^TkTix{)98M)rfUb#i!dF(Ty0 zMs^etOD?osWihdSLRPj_mPTCX@>651(N2L|N zFn#nGJFx@}(M|s~h@nqm)%9#+Y29SEK0lAX-#|a_#;6pGG@RfXyHuEE=5@qjI-;E$actzXmb0w2aTq$MLT3rP7|RA!}(v3BU#!akz$_U~vXk2=OYQhYILL4glexkAstbyGFsUr+IMEwxoN&~^A%<}n{-txk zm0FsIQjXdjQPkH_@{m*ad&sPj_IG_xo^0#N(UpWu-2nEXS;Dbhogzz z2coDD3b0In!*vbmD6ToNQ28SLRql=kSR%=<-V%dSIpN^bwoBM0@T=nY*DA zCIp`M=FOtPKz9l>`E?G*3kAWMtXy=goE!e;yuowtBmaO z8R4cRs9nXXThY}W9M3!8oV3ES76H^n~QYrdeZ(#&Sd@YmefmJjle{xyAJ3Wo9I(ukCZ@I_vrXl%T zQJzDfWE*Pj8&@T(ufMfX9RA7%>$0LI-fhTZyebMlnmo9yxEkrU#&Oszr7B|z(!O2J zOKm{CIE1+sZf^`vqf;K{$NE$LrZobnBRXi+X45EhFy=}j2SOCl(edx zi0esYr76Zg>aR~Rl%o@}w91`bDLh@2Q%Tud`NAH#VS|Y~UQx{$&}p|4J&mID@?*yW zL`CV?gN>$)k>I!|RNCnvrI+sM)J;|fIs;#Pij*81(`)okJ|ADo}x8FXK=pL$$`g_)@KBVr67273o|^>(wUF-(X)5cyPF*F`WzN8DhhD zM8m4LWs2gSPwxKY#t??7Io7}E{oZCo$BchHexW2J&~}123WI*=pi6GG+ntFKoKqJV z#^DOH)T--tm9#{N?Ib_ znIyJ{i(!s&D|v_7yBNnYQcY<^sp^PvS29>{mN#6-J0 zX|h^y!V`C3#U@^zVQ3r2QMNcfQBslYieHIw4>B5D+HoaZ$54*8r_$dFSNR6+KrAMS zt4StEjedn098ySwsVA#BOd8SAdyRTZEmrz$O3K|7IW(bDPzPIeG#fY}$uN#**bott zg+!Sqh0idz;+Tya?7{+t-pnlGI1J^mo|@Y4vYL3a8#G zzzR|mtxp=gzP(BKT!x(IP#cc3!UqO(*!)N?%rY5KhNQ55qF1_T)9Kr`pSyMI#?!*3 zMsU1}QioPZNIg)UWjCsCz|p*$&ba{kBhz3RjDp1lstF6Ki47 zXlLS=V+xjy^wP^&QC9q&{-buD=~2+iRzfl+v{AsuaE77#ICl+=WK2ytu^iwCg<`~04Yvk@M;7TAi9 zHK_^qFv3{1^AaGoCGB`Z9U9?>8_?mws;?%hNQw3c(&*Snp4%g|^;jX+o*v9$S}AT8 z{7B=iGMp*G5+)WA4#~?{a#m0k`cXvh4|FB4xQ%n$7s8{B>S#(1d=F(k1Op*VJx#l(6B zSqv-c^q0ajP2J(Lso91|FTrO~@H!BzpGn-2hqH~b;vBXU=!a(;Y#V+(rnjk!DM$4$ zYXsfSb9g(+F*!{KsP?LVuCY%X&n{V9rXcO-QJd|3UMkM0J!~wfWz5evgrmLB0?Jmt zD5(ke0^(ALG55@c6&zk@6vrDYXC$VV?u&9ZY%_Ok1JB*yXXi%Y#RgbE{z;iYD%fc^ z_(D#+myoAcPqDPEQD++CH_Ugw)L4!&9J+Euvc>j1ea=Fnye#LcT<+s`^X>3*BRO(q z0?VpVk`wP0ergQ!{3tAa=*X)IqHb2x73t%7jNQS&~1&m{w}uF zgqQEl26VWsOCbU=xm4dmRlfY>Q-~80Z#7}Zvup51NJaW@qdvRS6n6o48EaG<>(bQ0 zcEj6^<>*cuqBoW)iu(?7>7tmLi>{A%8ph$HL?RW1lvs-IqT;bsw9wX0K*xhAP`xf~ zlmP#=io&~%wiPM%uqdo3ulsoq@8>|Mb2YEc{BYX?__M=%?FJmiUS&OST}rU`5f-fz ztsBPylRFlN;r&K&*j;5)D1DAHB7A@Z?hQ17joUB<_d%0(v_CboAxcR0LzHDXn4U-5 zhCsXzo35iAAd$*JN-V{XP?7aeTM={X@$ga8#D|sMcAoXF?O;p+>3)p5oIuj(ZURn~ zkDIK+_NzUDEF$SoWNCEPyE?svlfoxW`nd6TToK5wkGKiU(e`2}jSvRyLl&S(PzI50=yize(S4oa#VR79lzCF&mzeT?Q( z2)hQa2-3$vfm-txzHBguL$A;gvAC?u3jY=2ITEqO`kIR4AuV4us$(pilZ%-zVyG*$ zg!&p$S|}ESqc~ahbz?Yu)eU`Hp0oM}wfE;!oK^eJAs5^J!Neuuo5pbDBc+dzZkd+y z@h!4w-Ex0Qneb_&m~R`%(NR}6w=Ag$@f{-Q>%^=%+~f*&9L>Tz627|@MrqEyq9Vrk zayCxwV9yl^jns!v{QbZuKo#?*#@N25$3r!XZWe9J38Ekf)!=-lzv76 z2bws;{#NU-St0k!!eAChgV9od$DC!uYiiIG`!{4?AMCmx0VXllAg5T!^E_!wcqj9_zH$glXDXRHe+WhH6y>b+i+NmDY@v& zq(u4yNi4j1<1bX0>FMxCqd3NVIcchV)6<--myQsBA|kn9(958MHp1FmFs2~w zzfhZ|=x)sE;&7e6nyRBpXPYDK91>-z4@O`t0 zZso=4Se0>pniCHHHPR~M>|AL~E0)()m30@FL(yqESCF<$_JfDZ<418-&?@GU4HQ=x z>dR~>%Zh&m@>Q~P9M2Hje(z;KN8MSWk%W#2S0q8xn(=%IcGMVgVcqoJMsf7R4RPJ3 zB+iw{;iTqdSQ;+0^#5>WLpaQ@m{4!7q#^OEP`vh-a1xTK|1Xaz?pAv>5;)DsnueTB zb*DRva|;@Ra4)Q@8_Us0R;ulCF=go*1k&4=2OTIIi1G{9G?2sFm(%K@<%=jJ$h8RJ z%g3lr`<`+mNS$D`k6|1wL{2SCzQ|Gn?Mu)B04+PHZeb$qXDml_eIX!PammPSEWccs z5O9A258?aLp3@MKIXPOe)Q4lt-=BZ88MsHN+&sK^JB%$B`&lv6m!h>rS{ z6APCw(qCZ?CT4#=(KwpnGHxtD#Q_I9!XZX-ShfxJOi4?uL&;)U#JsASD8%`6Lq8m5 z97pvn&B>NDq<=W|)fw8MY6`>*M;O5I$nrAb_=c)V!W>D=0mw!%i!j=m52d}fq1NLU zV~nptKwfC=(#WpZL z7^2@VRgc<2hW24fU2HQa_pM2SB|V&=M5OdP}1?O3TU-EfN#$R-{$)(hIjX${yz> zh8f>xx%zat?fVqq)}Bja%B7TZPFoXrH$6e0>hLH`IFkY)m&qmDt3s zASdV@2t5F5X|{CO=>;xzfbqHz?r1#6>&ertrK#7lm}u)s<4Rz)aHp8OqlK&WJl4XU zN=bSU81LO%VB3l18exNJJKSF>sh(CvMmK#L35S7DZo4PYL}8Cfx)(chVWZJD;df(R zOj%}GpHR^i{&eEm7iAN@H_Fc><=#OY46-{o*^8$XsErW zB+mKd@L_3|i2Etv$YM@5Z8MCcrqw2!3K=oBlc9;~xaT5AcA5T7=!lCosuujL^U2ITC zCbK}S(aY6@yEAe0GjmI|miATSI#X<{){1*=4VO;b(caYwJS%tpR$B*`yM8a z4bHoa{2KH}p=076hip!XIUHLR2o>p1P@iQ#dQ{WanAjd#Q6iJZaSS>Nh4^Z;A6!*X z$SES(u@!z24d~i-Om^rR*D)Pl$V4u83FSs#dDF^#khkE|gr{&q4CK0W%Fh_>gz;ss zG&D)+r8`Sqc9%mqJ8+=;V1RA6G0#81Du$lvJDy@Wz4BB3A_@w434tng`SoJc>9E64 zdtNZ20X;{3`p@AUP|q0VP5Zda~d{m zTIfcLXwfK+#yShAEai)mns7UbQ@}-XQCW-?Y;r90hG#A8GOEWpnRG7>e2X(I^nS(}mirpqW4^`I zddtc2U`pcLkDLRLi@XXs%&ntSUpqzL-%yUHoCJhw5EJbIq;a`U(Iv#51@nJ!K|j!V zj$%|u2w7Z~6a{?{q1>*`-bkx>_UIzoX+J-%#+eEawtG15|Ki=&^>s%N;T^Gq#WC8w z=_Ra3MATFYOiRa&J=AW)u>vj0=sBz?De}WeW-q9r{BBK=PU6rM&PF}lkd7IZQuuJUc(37!##uL>Q;K-a0?Npfs7!lh z7P~2E^YAB|ti!BRD&2WbFV&||mBUY%eVUAf`$cWnQ%&5_Oyn6GnC7m6dNFNr!tvpmri~Bd%2O>ESPD{p7M1m6vV**h zC4T5TpKbDvIgu6nPD+XM9C8#PNplH}2^#X}8Ui22<)CI}NkPibqcTg3@`yGnJl}L3 zC8qXdkY1`UplTjqEY0KilpW!PYtbzaFk*V?zKFVf-nRJ#jzy!l^u;Fbc;1#+MbWOJ zlsGRTr(`+9s>TTyFEz-XS!qyz50H4CcNDA9c`+mjP)s(Kj?_?3KB}Lsf8YD z1oyKEuQZCI(l)rJOi7$qkwa@EhJe%A$3`LrDTY@Y%+bXb60tKXu1k`lzJ}C8KrQze zIQD#o<}z17zt*^pvGc0kMM+iY*AdM@PwLcm&FW~;*Bj8`iEHQ&ql^e|Ac4IRJB`wT z30Sck-e{Qh_`#TNut={mQe5&A8*t&?lyS)|f^x!tlmF(;hI5Qa&8kGI&OnAEi9M8-IV%xA> zPP})J$Jj%}PAv4g;hl!Kx#P7ICu$gfL%-50Bk zJ|zvQzlZ9y;j$k^s3XSv$S73{9E!+2=H73JJ*yT`MuZQLz&cM~ za(_mFL)Z@{MGj4@3m-I=XKY@G=uNL6D)NU&mVrH~D4Q4$`eDQ2!?>zg3b;p|z$D*d zI*Q>V)Mk%{aQPMwpTS9i-8pQJ@llg^bT&+^Y}8bA`yV5MO|*3xZAQ81fDM=`A2*Q0 zF=rB@*;QFk%ukTHAG5VM)f)_kEtml7I#a{R`S3~OIogz*JZ7%0CDf;g;u9>|H;%S& zM$%e9MPi|fOKA!88G=gHD0Hxl4}R#+8fVX{QPL6Pb2&4GANl;vwDvx45XVz15-T&s zrL+Y40zn7hsg-9$`-|vedXwRc26Olb$^ycbzetKgeu>D#SSC{p1DB@`#NQ2!K+5yDrE=COogYUMCZaG8=gUnA!zWG}A; z!MUH<(Id3;0?`-;8NO~*$9#3u;*e%t-NQF{5B2c~Prmr3K^^w7RcmF|t}wKLlsMla z=V0X3{;@aO(isl%Hn(GcuJCQcISP!eM#zKs>`o01GmsYb76!QmURtBoW@IwRP!?~BPugD z#fCwr3=#7bD_;1qK^*UE#Z7}siptJU2$frf>}w)CBt#VQf+9NFd+Q?_)$14mAOk;&WjV5K?#cy~Qw07}q zrw|^{x%Q;v|mp*&Z7P^Ya|j|K2bct(>VG15ijg5A{eC-OwL+ zLr1T8L&fTFJ~(w#4G6c)GRN?xMB5k)_!^#C&q;qL}c}dQ{D9Bbc832fPV}LX#jTj{J zZ$qpfk7x*zsmkeX{D(w#=rF1f+7H8Nw4*oNG#&nHEJv$miS?N5DoTlSIZP7B4M?ME zS7&ZVxIDgzYp0GMpP7m&#^e&c0!0r*>NIx5paVPq4bs*Tdl|sdS~iS6D{A6hkv#d; z(e6)T4L1G@dmF|vj$$j!gw`Y{70F+T@*IHL28!y7+8yltGyyk$xU!)f&Mp%X%dV=D z;$DSZIU_rPHyC$HxvIe&^#q4VDy3NY0+lCvYp+HCtGt{hScVwACtQzsb)z_DCoOrz z&;wHzQ)aF~)&XE~tQ!MF7CJk+yRbDF4p1_h!~8D6BF;>jqV7v7-65&qPGXHaGPs}NJTEP-ABqn%evUFC>`wv>9@~|2eg`)Y9EJl7 z;%KHVb;RU7Gn1A`2a?2cAN{eDSR#$O*Wya<&RnlE3I`d`F`}u8h+6&1bOk?{@FV&9 zZ1mRaWB*@T2pwz+$*)5=#O}c1?rms!VfZgs75`B3`68o(s5QsG!*G}Z9WOE^RbDGH zA{C?(F3#T*=u$H4NCfd=Y=`E$`LsT}*0$kTPw?Mwf^!bcBjIXGyA^Bq{ z&ju1P7iyqe_z>g4jx~hi!C7)~>?(_ibv?3Z^w|!?+RHd!h3gy8F;vT`V#e&MqA2PO zNM+YK>QBv1h1RZF6u=uA$`Qzw62>Q3h)DfLRA*a-1$NjrlgsSVmIgOAgk#ZcOf5oP zNSK=tlV%rCqZQV8Qv*26zS3AFrI+r_sLO|ANAh6;`Q|38L`Lm^y*75)01fx0%c22K%lP?M}!PXI$ z-p*p20ShM@WNmLJrI+qWITPuq?*3dGNBGWY{^}N{@8}9sdgWocmRKi~MHle=Xy+t? zxEK2?^MQ9XxT6I%4T0^dqA2QmQdyVqPYfwQwEu4G3ozfo z!1)v-I_gqRFJQhX!~{E)F!p!pNx&C0#2L~XjN`CMQquARjWQyfMgms~piPW3tzo07 zJ4S@1rZgs(>giNH0;;KgA$yp|<3@rE5sI*O@qMu1REudtS$L;75 z4m^b!l1)Z+yrYKUXjx3Ovoa0cJNydy3>)lDvN#H7uZ5Nb^rjlbMB7XnT@%^W5@#E@ z|2)sj*kU}-$g0mYX-2V8PsnqKly5>ATt}mbW6E%@!5r;W%+R{nlH`k|B+OP~mxTZv@{o&XNw>)}mb6Iw1>4c{`QMwWk{{Fx@?< zJuyn)LaK5g76%cvtuszIAzWk(N6jgTsAQF{i>)(GI6?Wj6UhgHj7O;mK(wYXB3XBF zq{799U5}rPY0a~OnE9eCC*Yk4)SxHInTNX=%Tczne1(;igt;p*r72wmVsZsT zxSLTN{dq%UkaWbjI~nZHQ-d3qsdeTSLfa^gN?A#*3{}2?o@n-FDYtd){qV6h)mT zmBvaDu8#hLtFWhgGjS!tjDa2YcOj#U7MC?u!Dk7l3C4Z-xhfDdwLPOb`tX{cx{#6l zC6s6BPOCxkDQY_m;V9h=D@l@$7;|K>yrHh)$R7;u=S|&F-jFI+PNkM+zofaSEk*`= zsHxP_98!~gKe`qh!Y`tuo5O0;OHF<~eley2GXdSWUExEL6EBd*UMokig!xez8OPy^ z&IyId7f_M>0_ACKRvQ5x$`%%l;;1N<^g>m>DUNyDNn*);6qi!OP9y9xq{Db>a37V$ zl)v4i(c^+@BWrq!BQ1UkOU81H>2h-AEMJ(GP?r(Kb|=MJ;2b)vL+4pDXr2(0a!=zq zTIq&(jhddA_aamF`%EuJ%eF5a&4qg#%HvZ&()hy48j`ax; z{CtHPY$_{EfH!OFP9DTNIS|tMgbtLY)MkVJV56^JnV#nsvw||6FUoQPK7>G8kf}Oi zS?fcMf)6X@F;h~q_+-=W1aVF4!>D{L6zp-da)gq$YS0e(>6`FyV{ToUX+kSJ*A?ZJ z(?{@rSk==lYYVTq^eB>UP|11GKTqN`iorbQtBOMPXv1&Y^USYC z&|N)-cSZX!*^wv;BTR5$9Q9b^J1SFy6>3W2JdPZ78F9VhMVrn!{ep8gY`=Kx#_)I} zIoi|)hkQv(tS69lAo66>674qb26J@tFmaw}G)IeS3M$HWRnimjNhFq5Yz+E5zvRhA za&)*2Pf#k-e+u;vM2@)LD$iW9wa0;W{qR)dIJ#Uc%^IMrac#Wv)TAip)5xrrjChaX z>BigRk`a}}c?LPGfqCOpMC(pWwz1?nJkvmqj@^>SrfsgXKqrKWiS;b9IF`WBnT;N& zr8Sm#wvil@4W)5+Sww{AWP+8Iv@Owdjo@faEOE8iMJaKfM-Gj51>JRb59dz^&o{)0 z_=gp`q1;5*g7u^z;*0BE9bWCDdgdoW~6DERF)^lJoFVQ+C{VPAU0(K^XyFMgRlRhEo%*;e2?xNw>y7 zZl;L^Q;8+`3JTJwwS6PgfmKVrOT#Noef@ZK6A;3#3OVs!MIOrx#yzQH2(LDb4@l zKAqe4r|9^0ih_Ep(H+i(hMu=kRs6S+e?#ON`=wypb#%RhsYOH&VOyI?tde8H+h)Ka zmdxo8=kRvB6-R7iO;k_4_T5S#-Q7EQckFYlq~%!X@J_oAN1tQKtHm~piS;hBSUV=M zm``y~m_82gHjJZPLSBjhs zA93=>O<}ukmMVEPLU_NS9DV5IR2n{3MMU@j37kzxH3pk%w@0(xxjD|;cf$vbvmU=0 z)6F$h`l_6WA0m-`Ub4c(`LJ;u`DrlUC?fTbP@R^P6_*}*s2A!e^ZP{_{^$x@EZ)oq6}ywUJkqdAP< zoLH=UK{+T1^EqM;1g2R2inR(mCzj}s4WBobqw+Q{fGyO-`$Fc~Try_ZwAm<~TVFJu z~U#79|7 zwC|9{XOqm3@LeM~T#mKrhNL0k?@^ewm0RDk-D}6%5Wa5!#}K@-Z*ECNh#wGfT_ARi zX0ZS3bZdlC03(JK4E{j*t>WkKLxZm34$LJv%jx~(ixstXD?j3`us^{-6vuDv!iK46 zQrO%7*vO9TmWHtv6)}E72FD6LERw{UZXWmgQ&V@?EVZ{)$VmQYlxIhU&5(wdw)lT+ zlN5e#1jqfSq}+A5q9VXA2w*)gV)Zz69DZp8M;;nO{wO2FuZXZAxNN@gYm;}>%GwZI z3R3yv=dPp>x4p_0qyD#x8>}b6hT7SwY1sU!-kE zB`4tT2rP}S7DwEzYG?Spp&Vnl22(5Pi17z9Xmb~_@@T-P7O}hf9}VN^=ZfSpPnai( z?yRIH*q;bv6-ko^*(C0UKO4)@e>Y4+n36buAxEZao*3APl8&u}<1&`N8q8su*xZ8h zWmjcEG5kh`?>=1Z#(_lLM-B^yclu3oDXh{AalxJI-OUuGwXK$)I2>&#Iqp1UyRSy^rQe0ls!T+QUjkfj#MuJFNje!c=p2V3c`hT?Qi z2zwdN;Z%raTpA*lt}PO$69aLsNG@F@h}OgwyTiqWu(zQcEq1L>Fcm$%D^a{UN=i!+ zu51j)<6CKzR9cI06_WV)ilzjv&iO^`VWNEiu4+8TN~%IbPp`NvODcm`%h()iIBNB# z`kmJH!71A|Y}ypAZdix)U0z1gtS9C*$mFz3^4Ild1{|9U60*soy_mav0ce+GuiK?XW= z{M)h7m-1m(=p5QrS@91hzZ@Mh-`O1wF`lC$=XN$ewzM${R3v{Wy%wF8i+z>0$ zu5BnsgIiHh&MM#ZM$#1ZC{hmvwem_?WU>eMI%^@D%JO1T(iHjVoL?@kwbf~D{tN*s z*EOnRGOMyYw=N~vF@&*SNnW&x9pP9bpo<>YI5jxmCgLLC>rt6it*KX=Tz7)be7nA} z&Kl1u3F#@8uC2RF!phqXcn1to8)Cr%yjDBH4GnkvcpOuSlaovIMie~+sdsfJCc-!nl88{HYqo`1ROFkG%r+5wN+I%s=jMf*8qCoqmiD4b>7{!! z>awIKHx^Y-5>7DSdi-Eam%QRmC|ORpb;QxEVl_m#AwqKJ+TEQvy5>ZK zIflZON?eu^hs z9HZ=plAUzKxE&d+M=8z`4{6kyMt5=YNol$A?TzNBM-9=E%M``E1Gxu*n`Q}Vdf@!D zbc9Q|qe0i>H)9HR!$f0MPQ>*jvOvT*fDv|Hfh*w@133yrHIg7INc&W3b8wn^7A@$7 z7YtU+1_L;{zJ`vekP_)Mk~o-8PddG%jYe_Q&4!m0Wkfig1h#NRd$WyGb~vXkgfooe z7;~)H;Fz9(XA(&BGOjy?H@S}mP6onwz-=#ZLQii)79TS;XRw4rlvv^WvYGnT`AwxoKZc10mE&L@Lq0z)D;iR_2M zHX}H~D@tRjEFk6WRA&FiNf}0Mw5RyEu#eycChw?2l_{OFj35^hk|uR_a7Oha(_Y)8 z4iii9PE_Q0qL`43ry8))3>TZc<2@G&u{hh5W+5o#oryf0$YsYt1?-K6Ne!F$DQ39IF6CQh*5J?AX0HwsP26Fj@L~u}s{tzKxyZRWE&6~bsP*$3DPU)rFr|x0U&4(MF ziOIIpdehS_to6c{V2Gw37{=lG$TIOsK?f~KYni6dL!v9*U?O?W@TErFb8m3c5-E^G z=K~*JcVPynk&O)D7@?P+osvs+fvRi`%#kT4s218Rn!IDW%hKzi*_Ek@wln7;noF>_ z!Y+e2+Jj{~gg`;UyD41Qa`1J*)v#pJ_%Nb$3qsny(q`sJx$+X%2`@H zAG?y0DEA_TOz;wlIJ2^l@jSeB(c6@FT3blo$c?xBETzmmB4=iVg?@h7_vEN0rNnwbrE7|b^f;1O|7(7H+27&uhI90g6$Jq+-}FY(6!i(DvK&`-)C^BF zoTD6DQladMTXTx>Br=j=fx?I_wx`0A4X`%DBBht^Q>aVBB849?x)~qgG0bzB;i-mk zn9P)kxrjxnTZR7+q*QPk&=YH^j=BKG-)S=$iY8tE5MQKM2BenC67z0g$G zA%|lctg7iJ0p071sC+2WXH&g5nt~e)*1#lILeuZ|V#7FIO;*t($`^G>fnP#!vSo)D zGxtvlFE!HIY}uGxsxQl`$(@N!xL>9>ArUox)+Kc-YSs71Kz!SqOO?eOQ_e9AY&J8-~vmZmV}1&{3vxYT@!lmJ;Y)1kqZs5fVoy;oU}YSPPa^ z7`vj781ErNH6*S%+j_Ar@qVvy9Jy(j|0$$IdLK!&?aVKj7Sz0dEgVa%{Mc2L66XWt z>;(=6BjJOl?I>n74;#`;@Iw^T^!Z$?55ptiV80KqMYl9%mC{T1Bh=+2PYT1|fKZQx z?)liDI823)8o*=lj(QxP>5(*uiT1HfvuB1{Gq2G~2p>1vdOo<-!;?**`U(m;@jgKw zUw1NwCosE;`KxaDq_G^uHzgLSCM3$INGW^Kb`Ha*4d8g^%bJ#GM1O|52jT9M&A6-E zn^>GPv-7ita6GRDv$HCvoP3T%+8;Ip6=$!|tSk&Bu=YQE-k_@tN-Xti^H-)R@)tg-06 zsnr`XYMik-UpIuqm)2mYnUXl)ASYK5Y-dVm={JqA#wrriOZQvUW$)CRpW)aIYj{{h zzHQPDH+)X2QjssDBgA(y!VW0hcJ79=!*>ngdIif)Ii!g6zejz(0-CZ|A_D7#VKP`% z_kBY+`o5exwudz-fqsxd>20Ceg->J%PvZ{_v}f^Kjg`XP7(Y721BRWcXPA*`+FfF0}k+XDrmmT}pfY_Ez6{U4&~3y8&dI12wYl*2(% zs|CY2UcVgLgX#hV46$n~1;XX=qqu0vQ3+OvEMG3GOkII|h5(o)g;?Sc50;CbzqaCU z_p)0!8$Vv5VK$8wtkfoD-NhAo7wWO|Mn~;-JYI2c<2p*NHDP+0c9pb5x)MnmeB+<{ z>!Pdcq;O@!IA&?&9!nclr_Uu9-Bn0Xe}m&%aXb#XqZsIg^K3%6s(~Dy?bX7@sHPlU zjXbu_c>0V3UziA2H;AJZV=_H2OE1}LP?oQR;aG|=$m{d3Y3hz=RSD)Q%LsBULJk7N zc7UA59vTa~y4@X97>@5_Bu8&%63UESl?BDzm(1$W!^-9S4lT#p&$z3!UVPLVxr{69 zQB>^x$!6)Zvf1NC76%y5VP9F&Y9XhP7zdJ33=D=dVHgfFfTKW^x-~Q!OfTJo^S$T6 zduP<{&4oiu+EE&EQqBnH&yo@0P!ia2Ca;r5gp4q3$I~&wVaD>5hv@l=r6GQ<3yOL; zspjIPEA|M(IG$F`#hd-GM^cr>jTMtP?w?q~)=zns`q~CsrCm3H70Q`1RhCt*jv_zL zsGtRp$1NFejWa4qK*~o`nPs^A0w=?DP5XZ+2a_TkL&9}HD9-XM9}CLisA6uyvBta@ zzh0qJ%2q}p<~$hGIJ&9p@uukbN(W6K_pmx9m%{b!CLEQw;gpIjB+3m)VPQli#0g_O zd&%UF8=uEg)m3U~-iVrN$+62dk8{Ar_iUG6UBJtvBNkknXLh%gU3szgNQ}OYYVt?{M)nY@TmQ;@pOuD}qCh zNVu(OJ03}GeuDy%yd5RkVx_&v86=}7<@ToTs4NW|nP(wU?m!AnxFYsFZ3s4pq8#pM zEJp-FA)#VaT$U6CT~8<%9HEw>6d_!G5$?}ZjOB>4EY(j_koKw6X01s5Td};jzc?Q@ z7-JQ0eeQB93d&OD8!j(~rl_ZpO81+EmEr@IU53s~*l0}0n8DJEXIG{s+Uca}`Q@65 zfZlM1aXbxmPFbz-&=KKG5?Ir7D}=vclK~t{5OYH5=L`Im{8^Oe<4O+{RLiU+UcP9O)eTJW23R*_m`ruy zf5o)YqyZfkXw9Ta8d9I4I$xcg)Qv5BIS<@z>zh&N8p+YmnTqmeS2azMr*pnic=ND> zjmg4{(HtE^Ly)voq(4jjWBA-^D~>9`%CT+h8TCRW7&CmV>nW@CFPB4fQhA~rY#zYZx*4nGkflov;xGboa%Cr9 zn3hl>qim#uu@a&cFi;v9$`R9J$;Gm(EGE_hS?U)xyMkFn9(cEC7{_CaQz*GB;2cd< zk^WBV(|Ae`w^#>13cHNrcy0|Zr=%s;Zn9YNVq?zsj)Qs}9IrvtlHnXvVTDA@SaDsF z6!kJvSukMs!Ytx}l)SM%!e#GiM2F8KCD*%JCMD9nNYWrHy{pb}7XrOT;oipa46}b)(?pgm zrkGr+56JgUe_9OZoSfxhxDPaKM^P&h>-LLFX$kZof>_k(>BE7$tsz3Y^jCYHJ=ky# zW27!2X#GnSW1%0C^Jvo!y%EaWFg(XJB)2B)%>@+#sHo zA*K|f%wCV;P465EG8*P`EgWci&^Xj!RAZd_T!DaZ2f>`!wpZc~7Hv%`3*i|IxD#&HzfhJG>&iSjInEnaZd;nHm|iHD;(!n5(ky~A_J&_WxI zGbgd*&2!g6O^IS(8HI12z7zF%5Yv#5OCQ4XP1-TeWQvL|zmVt)D9SKx>;V~GXqt{; zCO3`Ln@G2cYbm~nigfv>m(4&vo^k$S6JL*i98(L*Zl0uHl@sbEL|qALF}63n)DVt2 zt#UkYLd35m{W41L%^T$|+u`M=j1S{(UP&s?M&C&H71X6W0;`&Et{ToPex*q}YCuj^ zQO{or@G1gW18g3$6*p#hwQ*MQ>{_DAB&><%?-5>hUW{e}K}oSvPdT1h&NI4Cg3(&;X7cOvaSu-k~fe%!hIg zhH3)j3?1=KA zSmDzq?U*3Ni2<}tD&kp5`k$eG9^G-uuiGjGg@n%E2Sk6-CdzeZ^`9orO2xlQN0gs&UG;WLT@ zF1VO^GEBJ&mL&!I24Q@${eFD0-!zWn#im3RMEXwZ-^%Kj^|a_Ae0weGDN#i|eJAzr zP@R1!jwKD@yC&`ELz$wY%P%DQy)3$`gNOJ1wTLoBMU-Di^am7WjF9z)t;zYR@IzBy zCD_E0tloh_PpBUerDi)W=nX$Mh~tIkrMu-alfIMsPpHmEe#sD%Ge0$H$0KKo%G2Q& z68%}e<=FvN5)Br@&rR2H%PCPsI(;YgUr?PD|BTJymnQ6}_<3}nYUml8CHE`JX}S_S zJaOassqW73YtwbaDvVOX${pt~p(f04h@tPrUO$7rx{5COtuiwfb7rt4|hbFzwh42*%87=I#zeXtF6{%i=x zP$#FV5b~D-{DlCu_1fbo{MF<=ZGGGqsa&DrRGy^&mZc|p@N+GMzpq6)rm5U_{7TaQ zpfq15Tbh5GuH$7QK}9q-E&nQRw$JtG|29#_bHG+uNK?^`U+HH5LuuM)!zBzn!+%W~ zAI8~dN>UNlH`2Wve8XxD(~6#Od3+HUl{lJ~ybP%P^3r!wzXH`|RpLyLrLdQ2JMOx4 zv{$N>`bN4}q^`y#S_>ccHettuuAGA>$J))~SCYO`zU9&E9A4p-P1$kFN>X{y`bN4} zq3(frS@p@`Ay<1})iCFdf1h=Q^3$*X8`Z_X8u=W>*M1SMZs=78soB)8C9dSP_HUwI zBU5ok_xw`Z)>VaTu7z4lT%p$fP1I|V%9@R4JnUm6N6kips(LTZRP3AcktciR;St6p zQrOSb9Z#>8xI(J^oAR+gscg70w+;t0!u1a@-2bEPIs+rCt#0U{6Cm`mw9sc^>5v33 zUYlLmV%9cGAI39dzuC1tMq}^V^bQH6Kzi@J2ht0qLJFk!-h1!;yXQ!{?`hhTG2ah_ zrCFVGrKfUrbtOd%+&)*p;}c1+I|#ND0%x))i3{7~m7+&}=wL|l?IFz5%@b6JO(OIGfQH=w4XRO^#edvhHwP-oiu@1jbK9Ny>FvX9U3SFiE-lY-!2|!05fHhtoojqK^Bl>{N6JXmULLUKW40m$0-W;j85yPDx z%6Cmv;zT?Oh^T8ZWi)77JX&ERKBmtV2<#I{a102rRp;7EuiW%mmxqhQ1bD16^~&#g z<4;HPR*Fc%0tit@Bb5=eSScdvNHPTFkT?;K10p`C^_eioD`>XbEHPH~blM5sDb$P$7hg}5gJ7ad8wudyaG zrzmnnM{=10Y?ns#Q-O|px1KlVGzE{S_pIlRt9P43=+gm>WR zPb9$;J;AV;o?!7dPnr(_d?G6~IjWT%k3AF#o(uwfQh6&;wAV8gJ>ruxO90Ij;`RVH zV~t)W2M}b7ND8o2DHddnRzT971v-2P6mFT6*z_t*#E0luPkox&hGb)3#lxyWV+9y!ugV5gwdE ztc4KhPjXGHb&(oW%835ta|K_{Cz4Bp(jbE0N$k${d}Oq*TZQG z&Q;m0Q<9#}^`=Xej;ex#Bh>|d%_6L$p zf(-RFNZ0KZYfN2H&#|BEb|0V8&ZkFJG`~<=TPXLA(8Vh4P#uzjn|n z{8%U^WLd_WDY>|}We2ngn5+h@n48@I><)-Dlrv&ir}GNmqLFACM3_f5RZAO;oO7K~ ziiml{WeRG~r4fB2(CIScea_7$#g9-gQup$#YNV;;m<0zukPZ>{7GyK0OkLKsnyI_m z$9t7YcO~dhVe(1wyqCF3X(B4jWeO_Hr4jvVk1kuBay_UVUziWN%M_ryG@@S%bo5N; zb2(L-td5)Olp>;MW^)ES*&j%DJ;ipEy@%zk7S>sbOo|WguWHfICiWJQ4SMi zS240vVs2BuE}In!(7h$Mpi_+7AqIv~f3cl;igHE_qdr&AB77nVo(cl&d6z5Z4uy`` z^DZ~-{8^uZI{}AYc$Pd5Bs!ycnqo%uLaBdb3Z!*F6!z&rq4ylj|fC`pe{=M4Fs zTbP3*)iZrT%A*rB-Q1-d5pAn=E_N`)z8lz>MC`07Cv@bv*R*+-GW6${BFGw4Snvz^ zo((>$yNKaS)sE5jxN1}(mNFgJ>arV*zH-2P}cDxwSaQ;{&`(sP{_@J$MiQ-4B ztFf_G!UY!-p-!3sWSzVeOz3h`8^*9nVP2*z5naw@3cjsNBl^pMj@d%|Va+QPIbybu z3<0XdiTFw&qBZ&_ugt3yHlj89TmiOEB*CjekQpUbmCDPj<5T7}O4B3kk9d@DaHM)I zsOaR>kg@J{N)Y4ZBsqdItd|6Wz8;{cAb(KYyg`8@D#+&wz#@gP$o?!$6Gyz96u0i8Qk*U zrW_F+p>@bsAmYCr_~>Tk0r5W;TmCx~J>oW)>|F}pgkW(9{!TCaRJ~D~<$QCG!ben) zW(z7vQ^|2JIQEeOs6vuzG+1&L#V_SuO8V&8-?$1Da0>Bm2!UF3x1O8#C}YGo@>iv2 z8=Olc`g?)CtDq0cU^89~mWA(Aq5=5_IlaHZ{2f<@t?;COKj<;$+bP&?Hh(~QyLfJT z?KjOBe8@D}+6q1hB20s&aq}U?kC+DK*}ZJtm8?h1hXI#4fv~DNInyxrDR4vs?5tD~ zjMZ~LXkg*kR2>;H^-Z$mHXl)v9{C~XtEBmYQl!bG`6y^IOZ4+9^-(#d`!Qu&kTPP? zNc3?K;d9&0ZA~_xP@0G-K9eyhQ6`;CpY%+ky2Ct(7rM*?^I^(l445+MWO@)x(1=Qt zb2x7FDJ6-}h-{t!-zE|I(||@R%iir`KBEK?pT+0Qwqc)!-bS9!f(IJQsLc5fDSX6f z+9oAY@)Pi30AiBIZS&@HiWo7;r#IERK_3YO{X9TX8};ws(Y3kn`F|7LRrm7e{9 zWM2dsMqTH!V!ot25u>j6bII1aOC$Q1fle(tsg8>${8tn_qRljzClKEz5&ElMaCZx( z`I=%!2=1@0%nI((i2ik;!$RfTki9;sVZNa(5uI2wXU;Ea8f~n0(EcXaP))XXn{O#e zL^atwK{eSV7UbK2hD)VefAxxoT)$k3!kd`Pca*4K{z=Xl+j$@lKuP;u(4wae)n?82 zlqF(qFkK7xxCDTR-v=Tlwp!i%Kmj8rwkAt)txmWf0*+I`*(;V04GlO8@sAWarb5PQ zsIoTp;odAL`F;$(4n`xYSa@UQC(8aP8jU$*cAi1~XjvD|?B3GcbQriUlcs1S8F#L4&oXADX!N+_!Ps{6(oE2HDOH(&7pr>HZ2j z4j^UoHzkM}K*BTZHS7NOcfg@NHYO{HyiV{Bg^XyAHc#*YY!W5?C!jN(bVYfxVg9A~ z3+kl6BFVo&l3E%kWOp5&H~&$ZhylXav{-@06%D?I` z7is1=i#d@={}}lyP7`4l-%R562uIB4%3S>8$0a5adUHUd9s8+$V`;pGiy+JvO48f8 zNPdCmb7xf&pXL$CwE3A2sj zM+`77Q_vz@8qpsMbS(E=&tEDh#-f~0*-S8mBNu`C(z(iG_Jr?Y$uqVl_TO)xJ&_oOC$O& zKu2S$OaJ#L5g(@v5#w(rW5AM0C)2KAf;+SJ;exCP8rTWiP5Jsd*P3SQ-t`?ODR&1Y zrrvU6qj|iNL};OsAt;Q*iMR(4u`X~eR~+xHi|3w-9%0Mr+KQ?gv~pS$7fI{)!yaWNoGp zJ98u20YJyhYj1`(2P(Myk=N(4x5>Mq+$K@*MS#ZsfZV?-_oB-)X!cU6gOp-=F-UICjAYvH-S7mdgLdIy$k|V$b1jRfGpr~#b%j#3+ zXoZzO@*0oL69C&JLLUQY)POu!W{y?dh#JuM&0LF=I1vj#gd%R$DeIML7AtgwB`BLS z5Ip+>$&T}6ZfF}6D?!B^uVf3;`T<6oC7{XJVEZ=mM9T@v6JhM@Jbqd<5}gPl3~tsd z=OiVF7~C@NAGuG$6ylx?+&u)>)l+X>ZkVl)FD=7CRW`~_QKE>kqH{@_U`c%{s4*dw z%$RKqrzu&)gy3@p?Z79J;B*k63FGCfGZZ_b2}_0m)<1pqM2{$!DVitE2T^ZdbYDQ? zl<~f2Z@Y1Ptm*dLBIUTWDGbm>10|9CJai`a!KHzGDHkYk|98r zI1z_{2;X);ggeUuu`RkH;}(o}L>01gaS zT*`@hbD=Us3|B5wfbY_Xei6|3%9cRg1Y{93Di}h$f>gdHSW>SCHHO*Vx*X0K5dR_>W;ZBb#4yXFKG+d#S`uXd$uth8jMaaIw9AH> zP^ySl*?BZ17-=R!1KXc75u^U2FSuMDl%%sD#SlA#x9H}SCSr(1j-W6|An264Vs_t0lP%TO1d!Q-gghMZ>{(PeiJ6;}enFdGz#_@b zAc0aW9=mG>%`FNaqZF6qq2l1<5rnw60vF34{}PUy+iz2XhzTOh8!&}Gk@9v>qP}FD zho?GSXrH2daTA2k7?5QE$@Ek(L1!t~>lX(GlUpDQSk zPb9(JAlO?7(jmJ%H@2xZnXZMOrHrfO-*uQ^HG7U;9%563XF~)u4Ow-H?*o*;=O|@F z)6i@|DK(WG&jrUpVKLnjL7r5emTS3+jk2jt$$I>G%00aB;0s%CVsF9#|xKIY^+}iuVbI$;uGitzMxlU5sr0 z`$*ejP6!{ACJRZjSAq;Gl=~*dS0hI5elfw6i~P{qQ4&KO$unuSOxSAO7tiwpbnIz zZ}deH!=v2IId0yhOc6zLnSvs@G@`#5=+HKJKd*UJJ?GGo@6BO_i9CAJIE;%m1A-(fgFW%L3LnAD`Xk4T|r7Qe+ap zAH-OiUoj&V%9{CrvdJHvloQWp^8_q5iO?SeG&UEtY6{YT&4-ksi$O}WbgxapBh`mN z1v`eE1*;gvFSfML{6HBN^u?Ci<>U`R zkXh~FN=x%2rHGhyI#(62Sc)Hm1U*(%c`i_Xq685=)@2GR$)yqfr$Eov(Q@-M#a~z* zEhoXxL2#gmuOn5eAtDLG2P_`u7fL%Q{~80p>5CW3)kN~7^W1bIcL>zY*kT3guGaY7 zR(lVpW1u*{ggBcEf%w?`N*Ryq%;-l66JAc?JZgRoIE>wHb-YfFH_Cxu^BaZk$%pRT z2pk+G|1GG{*i3z-?(TFnzf+zrbA%Ql%^0+Y3?P|)4<>9(r+z9k)1$>xi}Ff``GYd{ zMUCQ86@4UZvJTGUzGdNx4JnFiu6~A zw3n2-*(@gR0yx6bFn?1?x^xWxjhj)jI!^O%o`G`w9dbZ5Z_G`M$omxkP*(Y)Q+M>N zHc!x~Y!adW325kPcvji`OMxTww9G@y?%fW7An3mV3O}0iSk3%LF(dqFBtsyn#EJM{ zAYz~$+EAN>|IhyvHDaKhwwVHC2SoJ8hy!$XpgnKeY$i$e)Xsti+ViYtw>bz(T99;7iQ5^Feo+0(6%~^zDF-vCPd1vV~%{SAq!Lrt^#-P^8!a z6q^afI@^LGK6C3isda?f5l|Twpnt;bq{1$!W%k=QSa${iTINLMB(sY`M~EyLf=ZS+ zMSdI*(Kwtz&+MwG5sgEwfSH5rE{*8B0i8o3UmG;LE4T~@xkDlI1XA0l2MPUn4{hJY zF?-Ah+U5zMZ4#mP^w4rq432Q_H6Li3CxEs|gx(v_Xd%;bKT&l=t~EFND0;-ytl0tr zO(n;^;D8BYQf`PVoBb3&!UVxA0X9>JyT8g_9hX$hSO+L}jO;#JfIsb1$#Eb!up#5_ zpe!}YwVGL^G!f>4Y|elw`vb`i0vRewW~j-!IapaDDvDVGc%~5d5RZ#zNGs;h`QS23 zfXfu(9tK=!-1UZef`Ue9+)aK7bvy7K4mfoE3E37(WOL&P#f<3sE>j??OQWzy0v#q- z|AeAF#&nc&^x(JlYZI>w`K(#h%cl{JOh<#MgWnbATXT$Zb}?J)%sh|v5b2KvJ*KE) zadbv3tJPxB6qGTdlxe=8GSg(zEC$W~LZgD}>d$X;quP#B=JPt&uR_F?HG@x4j)y21 z)oqV5OO!KWRCm2F`$=sQp-%vGW(Mt@FefVdf@aWOJAhdN=33nFuC`E(@>2n1PK9K}VK@ggqd6&RhO4FrTMSc$elB^eGn6%^(uhN`ZrW_HI z7PAE9UpUz^(#Y{wTU0Gn=%JnO}~-#Y_Os`mZs#WNJI9G zWS@GuGDdu!R$V*;MUEBV$c`yzn{$+5VPneKBsjO3px>-~lnDAsunGhRNG)k&@qNDF z$7bH|wpv-&%0KQfxhh7~01yyRm^Bb4T+3D`W>cTC0TrT4dx;bx3rzC!K#m0v{6p6& zQ^W#DG6bzr;zS$-B9yApaWkZV5lU6d)o+9w2HZXZ*K8sZkIzZ#hH1`Mnl1)0-=msw zvJ+?XZz%_5SqE9rx%$MI@85m7K*_rdN}jwb8O4P|mUN+KYX*=^7lMhEIAJbQf|yF2 z2tLZFoun@Y9H!1*x`vud6f$DMv0kVFtc9VZmjW6}ujs_wN4-q3Ba~j3DFAnAL@xrp zgNdGA7UBv+PsGcWwTmS(vXiKZKFdIHN)X47>3Gl5IRcpxrSH;5eIvlQoyi;&zUeoz zmcfcF}}@Yeai76=jS#$L-%M52!L|q^W`idUv{EU`CZCV&>><8j{TdQjCEj zvxz4zZ#dH3Fp2UkXcN!lk*o$X3~f`JDrUVBL=0_`A*d;d6LA9&(bnaaB)UwGD{4er zcbP(D3q;)>+%45V;OySh;ayyqQwm2)!9O0*R48 z&?`JB&XE~2AJDc((FocAD4M!!gZ+51aayq#v~3A2lFWbvpD`)Pli0Gx+o%K)pV4Is zD#fJ{eG|}OadAFr_MG{wQbbr>vN;2u><=WH^F`TEo!eA56?3KXL=?qk3MgC}(XRqJ z6g^&@zpidJn5z{(W-)<_^F^!;0fT~(;~H>arkj~D*D83#OgA$Vpw8F>C)WXPUxCxH zUNt+r<7%cR%=OB%M*iiaqt+=pOLYUp$P9FFgYK)yOS?BJ^@0XEk4LhbK!$-^`k^TN zQ>Hp)ZdRV2&PDWtN189F(lnVgw}1wFuW8jvspS41+$?pg@}1q8PcwGclogeF)wPh9TVJX1%EHR>Fv3NV5gsN>j=4EO21d&P+TF^X&Q1bpBkJd8~=}IiSHo z7JuQOb%-olZ%Ff8<%@7e^AOnuj86+-S-|Ik8QO*Y+~)a86|n?p(?o0%p+hP+}?-0)$jeWj8_40%3R zK;aWf@G4IrE*5eDp6G6`o)3Y~6%hDD61)ZkY{hfs@eyNQtMDnE5u zD{91&0XYI#heGJL02*Vi-NqHQ!n{?%BgS0K7BFZkIo<}2%mmphrtr5bNkpA@9&rVV z6z>29l!vmJlglgKspt{P1G5C;GljVK0CyL`^#iV+2)b7(dgbSwZmYR7+x?p6&KQyJ zUEmAHCwVp^Vpi*5((SX{uN>#(H?F440a?>;Wc>(OGu?67_?Y>q5-zAa3KS_m1`2v3_;;(| z5%zH<>B%pZKam|2M-#n&*e5`wDkEPD{iL!)3|~|Zku9LnR2Jp|aKNh4fPv{jg^#eR zAV+|V1cH7Fp!*4^YRgUQS6uIGKCNT}ooh@Hy05mpzHJwRmO;J z!z@Ahm_po#fXii9$%uFLSi?N5&=GBHlgkyL`$Q6a4g~ltW8?J^^LYi2_$40vBw$cVAS<_YAqNre6ipgH4>)uu0blk9lKl*1T&C1{F6QS-6Vbn? zm?t2xNre6dpfR&amCBpx7(ITe=n*rUW(x>3l^nnF9B8z5E%fX8aA>xGLsQA|8*pR| zF0%4%nBUHarnCCr4=~dF4m6kzcz@jQ6+U7%K#rgQNFeAR02+=bP-cth{^pO$vGDOk zQAztJ(4tjUMzG;v{;W(9t;*&J%43rV{TD!^ni4s3X#T3e5!Hko0W1;-`Zs}@;W#oi zcY1lFxW@clQm!%o06Yyw19LEq6^BIAGXGT4E-T{lv8AcnV$`#x%m9$`Ujo8bB|nVU zOVbwm-wNHOJPsPU6k8z({vUv2;2M~d^G5KjDOwM!|0;f$;nCvDs|j;SZ7lH=0T5aK z2Nqb<2E@gn>`L$$0nYWNw+t1@tDGTtOBYwJSlwqfSLhS){o6Z`T4*^A zr_d<^v9|y=T($=0>@REkhKAR!Hd`wCN%Kdy7{uSI8NavKyL9DBv-LvoEe7$o0Y1EI z2j*7sIFD^Pk5%|CQ>v{Td+y)YdF98nBWnoCMCn)S_glFe0{$7foJ5-NLCjTWAfXI6T*|ygexK>PVUbN`@D0&wo zrtK5uaoGv*@Bs=b_63FQ)SR1Lr`t~na=$>!a7_)Lqdpn-PZ`c)o3KSVKpAp}jj$*4<6p0Q2k?ZB0jX0hksw9tKHUa{%4+HkDQf<9!iv7bf5%m?9 ztvG+hAo|}El%dPURJ$R!6^mSlgUeQ!{WgPD*G-O4rrcH_SJV416M~T9NKn{L2vx~` zj-wPkw-e$`4G*sXL_QkGZrZELQTB?(K1Q)~C6^sp$>z~lr69yV7Wf#UiZV>Du1{76 zr_GF<5#+wXdYP}NT9OcnEQ`Tn>!-IW*Ar5oJWeTc>!&Q4dzxU#iVOFCn|gw6O-%KliG58cEX+nSXU=< z)ZL1Gvf}2~iDdFJ_j&*#pOPZ4tWS&j2_UZGKAbE$VD)o~Ru1M~?c^q6BAv$n+#I!F=M{ym_*s7xK_2rH}Z^VTU2& znLxB-jMc7ti%!4pQRv*svQ?Y#DCAfQ4m%(BN}o$ryR(!+{>Z7DCe%O7eA-0U>@L@NI88yEu(hU1c6-SCnW>u93Ypuq14v{h;u;{@W;bAP3TWD?8v}}*t8P?qBciy0r)!D;iah5D z+zh887$Y#c*qO_$l^?D#gJ83s=JKE@O+R>9lz)tx`UL(EC3RxT45?fzJ69siawRjj zSTSe})tLSfKvT|Pfw#6LPmh0Gn66jkaMJn8-LoKW3rD_n;Dbk!%A|ix);F08lriFT zgXZi|S^*^Ih2Y$~EvKwUMqnwwNO}7gR8oFG2TJaX!OflYZ2j_|**d;NnPW`C9;8Ew z2}#~d+m^Y21|WXBwMjWHe3>#Ytjt+Zau>mkqpnzb(}Au~PQ(F-|FFpQIDB<3SN?PJ z>pX>G(bH%fWC~G&5C^yY=rhyhpd*+Om1Ir6Bzdi_8J*IUAm zu?7Tjl9IPPDk{rBzARZZ)=M^_9Xy4pLKu7>EsFk;Z6Bj5NyPq$B6Mh(8DPpV1{wBh zD}z)ZhJr-t`|>LykKSUExd!Ha+A_;rKZUMo)+=`xqk8P1>ru(R0qk@b_gxvHvuC7Z z{{pYx`(`LG~*IhYMx5L04ER5){NfDO0;qj<{_l9&#m7D;UWdAlqFkPy`y1{gM@H zaA{(}T0qRS(sfx9wkc8z61ir;g(*gNwhH~FnepkuC_*e~%tj@QXj3VSFQMIhYepsc zCXi!}k&E@YS8-8oYQ^Meovs}6_L-Sg>If$>4?6;bZNsO}C1eB{mu2unJ z)Cz||`u2b%y#}Nl!d!-B_3{uN&C+sTtF$q5dpp`@ND^P?iFtmMUwoCcvKlI=AgboH zxn7AQruGztB~GIuD5-A%_2E*{=yTR5+uaFUkQC>)ZF^WzuA!@#8Q{7)a;6dTDv zv2KD`nCy{BZq2Dy3w`5NnO&!cGJhAQBNq-yYk99TE>4Wvo7$bGHQaa0OambRf z_;!`(!u(2#{%kEg6!9q#5r=LEd12I`43$zz7^~f%m>BDFv&2(Xs0h`_UNvP8I@tLr z2cELr0a-9TPnQfk)=;6Adugn$wRg~uGD#mdBHwpnMOqkS`gF-z6LLDs>;hn?$Lb%y@ZS{&78TOW22jape z)SG#x3U^t)a3gK*Ii3d@rMwGLq7^kySu*pBy??qWjfzLd?pDbnmK`3973L#;GHgPo z7|((jhlv>eW<1o8owdYBV4sqfc^Pjbt(Pr}XR9z>uKV#bqlct0KGGGRB0UEpVRCHD zjL4y2$WR!-k>5gNT2_MQxhg}1qMgB@7@2qmlf2IZFD#(tiAteY{+p;Z%B~Zc=PPN1 z`UL>8wLv1)3qXZ#+qhy}mWC%38l;5zXRwbz^nhyj-P-Q2jh!$4U>uDae-q(Q_%B=qe zGFQv1_g0;(Z<6O5Uq2sWj}m^#CP)&$0mN82m2KUKg+){B<=`F z<~M;EmT9#29M!0|K0Y%s>6D{4t2`G=?wsY!e3hdt6UBTB#N_auz;i;b5RgzzjL>dz zDe_xYnx1@VY;OBi+QO0YZJ@*+L);{6l`NfL->w3Us^OP+INAry@_r5 z%9_{*%)6C0V&=~?u~|$qzX#0nU&b=9tm-Tw(0m5!vOP5?>W6{H;bcS3BTtL7Ol?}O zDk@gwIX2OZ-m9`D`K>5564-vPFH+8zmg2t;;$zd$s~d6&wyB%lKwu>A0YHz$q)<23>WHf8kwxi<1_3M_p1aE#%GU3 z34EkIFopOCgutBBByB^~D0*%+%tw_!qHB1Vb~TV8I9Q;VG|H}9sm#Y z{>*BZ=14pO{h%^MD8n9rWIiHmXOBj@Pk|1-l}|1)#g z2=PAyd^mU6xzmO986!_Oe^yDlY#Mu#4s)+u1|m?TdI(h59F+qY)yXAxm3D&cp2}78 z;}!F;vh~Qn$y>#*u{Tgl??0E zaktm;Ri%trHrUC{E>GHkk?m_>qXFD+E5T@1sg6&VWZ6AwzOIB3W$ZB12Z&_-23U`h zGN$uyy9sw$9oIjIVlT73`KC&8L4G4naaq}EG>?YjealyhTL%<-mzAVGiX%m6okjC) z6(yo|w^>&-;gRz@;KcOW)B*a%^o&If=6my9C61WgJy5%Dl|?1}_dpMwPpDRvrpw8i zk@a}}0lNZYram)ezOUR71F(PUrxO}Ef8dLZ5lIHSf;9>@rs|Wj-6kgp8**XO50y5e z$R3DA_K`NIr2mmGvacvVAbyp}@ z%cwJlx@AhEJ~}PuhO6eMDojNCS7e-H)kp*lYvyMV@E{Q|?Ki#DjA1jvg)Dd(q$cK) ziut)p72yGq!Zr2E4(Jr-7Z3*8M>rW_0RE+tN6exwJDFRc$n+~P!Csxp*?G8FS(EJ! zafbP|$`G;PkpeeWKrRmj{0#&|CrxpD&54DyB-iTwR;7v9ze`b?qzOSu{X0!n~7VE%7T*lU%sp|iHeo5AUXy9XLml$zm+zkZXJT9Y=cI=|A6mMDQVk9^(?N_ zuU1^&X_)^if6Qi%U;I;o7<@|fKS-3dO_&+kZ8MKK!ynjuB(@1+5PmbkX+JbMi=)|G znIgVz-q7SgNxcQA;gwdMEmy5!j1y^}kIIu?JPN6O#4oZvB#CzeF;<~?xe~`O3;G9J z)9y+eu?h`eu~Z=a1BhgOyf3a!U;0O*DpwL#%pS@cVa(IaEU(7&4~t3WJw0QY`Ir}MHgaU7KS~5IvR>(q;YJX5cfu}2)b6JqHJ7S~OU467J+*4L4RVva3 z8|DC&p_pIfW?)LwoY;kpVjc)Fu?=qDKa!>WtZdm<=xaJsmz_E>cuaBRmV>h@-Ku=) z93F+r$EGX?L6&0$8d_qfz05xBEoAo>&A}>G#HuHHC$oizA|3(}F(zi`IQVDEE~c2M z_^{8RDo@Phn$`dP3>N~D_%INotJovLHWaUr32p&CK`A3laW*eMOgk{r9S*wVQO>Tr zP;P1}mKsH=0$KLSS)?OWmWVc-!rO*2Up5MRB!tDP+>Kk#N-4Lpo1;{ih)!*VX=kGp zC^8)lChWO1&mh=5k!wk0H})81j2Nap3=8igepXUUQXdOyXqL@Owz3>N#2b!9YL*41 zkJxfjDDrE}tpx*M%CHzRQ1P*D4n^E`F(A(GLd_I&oYF^3j%^gn7DVzM@5^qz{bYNo zA#W)cR=NLIs-vRvHOvwvkFfuQP^^G3sR^BeoB%*`FM>*3pJJQRP@6|1@Xf zQY4C?u{OAr;3P_4r5&CaL>C4NrsiW0Tn9N)tGS*suH%UgaScr3jP!(C6VP%GnU* zG!Z48v)fsUp)iU+3^aq&PCltPGbswcnCE%1`Er$VEdRTuG?Xxn&XbkGuYmBFxgee> z;X_qfXyDA6Xi)saoTIWu%v=tIf^|Y9@44W`tljoAi-khmg~VB6rIJU?7#^x~^YOS8 zVHHF`6T+esmzxz(|5W1vnYWQuj zDM$%|Kob&=fwk4K>a6oW7#%N(?S4er<&V5>m+?JlK_XWfT-XZ1YEP_4o3Qq8n2M6f zR!JU7=#n1*k)sL@?B$8?PR2Gq!(o3^nIcRF4uCb;28?WDV8iBvpQmu7gLYJRrXx|t zh+g7BNa-U@h@`E77D`&v{;jwPlZy}?tX>NDP`M(!+~ zE{=ko78l!P7Z(fn3i@MP6FIHcR;vVSh;G{oKFdX+Ll zXY`0cAMXZFfo_06yNE!6yE@i5H!3;S)H&l{2XA%3A)s+*!*RW?1-Ft@9m zkE*#e%R$ke0?{y3HJdkSEq$s=(UV_W9)WGsM~0lWRE?!~fDpEb=8Xn%U=d4?Tph^` zj60P%!WQA7$m}D210%p?nV$v`I9&3U1i3t_yg{x8fTCiauDlTq)nz2D`#Xb0u4jM? zb`O1lsIW?W%7%D&wILS|*JkCiswwkK<&E&gNwG+sM%zJCjJqHPh9oRDHyJtFj3w+k z`9sQFsL1tw#dOVU?p9&Wi}>sw(SCOy>w-^-o&|}x<%>lyFFkLxT;t`=A3s~=S(`6U z_TDavluc;9$jcH?pyxm!Y?TjoxH}_MBJC9OT$L=s25j3#pgG1tq;n}}-?&xfp7wRGUb!ob=!Lu-21tSp}2x0W}hzh1c`_TN1gxqYNP zFok#ngg`|%Z`I3XuG8j?N*z&bMIg7v+}1zv$oM8O<{l5h-85DDAdJ^0^rr4rm~o4va&3;>cVXVDGDU1}craFuk90t$7;l3ZR5oyj zS;pJT-IpVdsB%-rqqw#%lIxmTGZwy!-BseL4UWj%$Z0PpgJ_6s#{f2mDY zWIxQjTd53cv*b9rd_vjb64hLMJOuM$U0)_wpYv5y3!5kX1*K9EBt z308f`WZtiw5vGTZi#|Y+=>uSbg4W$E12d~^{Z@D`%Y0B}xRA|adg}DWi={3bg{e7t z{$R3DH)D&v*L4calBdyj=AVFv0)7YrLT_mv$c8Q)=v!9w*Uo%cMT!`l6^asR%#Dx% zFlD$8G8`l_z)Ib5hqH`ZH1AhAA~rDM_cwt}Q9c4u=>MPb#Fs-YvgdonOkFzSM^%6r zYf(EF#S9uLKL*MtNa;K2@Xp0m#^Z_F_?-E;O0X`!b;PUhAqyq@1SIp{MGP+;uT_*A z1XQSt^M%4^ws5kmg3BM`Z&kDp`#u1{@Rgc|RdL&y#ZANJK@}%r$m%jqdq7slr@#u` z2_CHSpF6)+vFA0+r*6N4)}Hreny)Ko z#0cGC^FYx^_ze(pgVcW!9%?#gF0ea-0TosS&tzBar32>2N*PG?C~fAaDoTW{RS_wR#+)|T4xbYJ3=-k9Yj1J=W77Ow>7OjW=QT3lXKhvZm}5RaUH0B1L|J6@67R5Vp__AL4nYJXHgBJ`4Z=Vo~nnmD^hy z#iDtP7;Ef<)iF9>a1U=Q8re1zL@qI#C#;IS$jlGpm?Ch9YdqS;c(Bes#+3~Fsr$-fo&G08M3;MRMtJ}Cx>t(82&8PLP9 z;6CD%`V^DY+ko1yul<2eT3w*no5w0`MAr@0*DYA2+ZJ@(QP13jOS*>HPPycdJPo76 z8p1-6YI{(57k()5qT;2;VB~608JbGtgEJ#=Z`nb)BV73X7{TiGkuK;IXGe$w^GUnA zR>an9c2W^y`fz%!yzRzmTrY4DP%`ffW*i37UWcO)(t&qTM)@PR!rOOX3q_vCfoESq zk}7F^IY(MQM&@0WGs0aX1@cwh36}!w1_9u`l({p!k>HT;?#dd`j6?tAW-Ky29!&U{ z{_AtP$Q=3FLkT0iSUrd@q`h7qb6Sc>+C4#wFUiLZWiW<@i=lWgrISDA_a&R4$g?+i z&`Yz0m+vRDgV{%^<~{1SqLFQ1uwjC0tAoll=yI|Ce##m#_9_l5RAX7qmZ)UkAM6JU zd!}Cw4lP|fG(50kb^n^erop7XX`SrK$n$6is1y-Punb;v7wv#gc@Bg;7?3k6K|gej zN_Avr%q&t7A~b6cL4F?*6(hwXbEwiql+Z)iFP&=1DIO^g110ow-_?5UUGCPR@dRb;k$;l2wDkyN^pPwa z2@eM$#==qgbQvFex6_8yhB-ocBO0{_BCn5xTWv%o{gI%D8C%cPW)5i2sFUg7jCgD} zWC$@wsVGDFRiL1hMPuD5DA&ZURTgukC2psVjT;y zc9ViSeZ!!4x7qm>Dq|1oi@-Dh_g~us##9Zm2_)UC7`g$ua zMK~TJV2BSqeeL@pOO#i%|GfUt!Pl2aWI6#%u?|bn63Wx7>&xnLLBfeDM})B_-GgNf zq|tU;vescKOGZ&of~c6*y(Q1@p~DAzqA_MpR*52}bq_*$e547Hw5Na;TYjm~{W3uG z@+cS{^^-e=OLOD(QpKFA0z~MkDO^*PbU>#tr$LzgL>Os9Z7d4zO2yMvjtIMGisTz- zM_`I@21LNcI&qdkjHxn=m?x@CmrLH9Vf>NX1|1zGeG(*vC8D{*VJN0;{>ds-#ER9U z_-X=*+88_}iO&Qv2Kctxjr7TJadFCe>h`D{5d*w}QV@-06{uDU%C!`7VWM?j8n|(V zdnK%lvs8!(-LZ|IM}S7YUhqMC3ud8SQH$jjP~QHm2Pw=lWsm4PipMI@80NUP=#-`p z(!dZFUXsh3T=7>Or<8vhK&XJyU0jUVtAFF)xTWn zBh=R{9A(HRw8f`5DPU8|EC9CBn6;gHLWNEJZjMB49QT9E~io zS*g4c+Zb({AicTqK(Ca7Y^%VAZ!WKRi0fW`TpWf<2Cu3VkYZLVVZ;ECVzA27Xcm&R zYd{N=QFcGJ$}6oZ&Ym)$%n_4S2YX6@NaFKA9BdI`uSgW>IkQ#?BkERnm{?Mcc`$Mf zf(v?*{)`%euO zlvmaj&e9=U!}1hGecbL}${@l$(F>G0!XqmMW0BKnTWkt)Ap|*51W8qhc4}0^deF(m z3&Fi97pZh30+BNjrwo)Xjm8sFewoAc= zdCp(3giR+?+EkmIlDn8Mn-5vbElXJ_k`+OQA*SgT)k$d!DBI;q7qLL^aF43PB3}u7 z1>w^LRl8Lhe&oYFMQl#u?B0mVaZ!F9D|YT;t%Zm}mLVi{b-%l;JzG4N#bi`bX(9$* z%^QvinoLOYRz0uxE|7aQZ08i$G`zYns=N`yt_LBlk2E2Yb_}$7@q)fbn<&}o`Bfe+ zPN`gaAac~efp*rsS0X;?7-!cjSwzVcgGJMr+kLT!WZeMP{e(48vew$CxuC?2%Gq)= zuG|r8VMVgl>Tmtd7$`h0C76H&XiCje%4?z}IqhU7l{}&;DM;IbJ4o`@!Ha$tJLoxA zE5uL*^u02<4#YMKdH{u#&wTb?&IioKFnmF)Y}8BTb>89 zf}~cnH|0zK4O>z?2bp-w?DFtbVgi2y{V~@nb;J;vc6*Yi(F`IJMF0w@X-uZT=J57GhnF-pR<;@&xehOGH&IA@=sYs}pPgNrM zBaf(qN!UWMM0bD-)!4ei<+Z?fDqX~cn_{pc)2LrG1Cq2)18o~Wi%M;D)V)FZbY)(k zpGAsE>Sur&`dj)9@jB@oeyT`IUv-Mf{3^0Xw4uoiDgM`Lw zo~zUgv_S%me9r^lBB}b!j&F8{HyNC+tl+xv`N|zJIA_po$x|1Pw&;}Q1-|T|vfxfJ zy-@ih%HCO9uxR9a5%@482aSUkQmAR}#vAiuC64&s3f0=`nt>_9OS}x;e14JJ^%93b z`uOlJUh`6wAwnzgP!z#O+Tv1#mq7$*1zxlBD&hp}JLcs|9bxzN5Ty2z0FRWf040Xd z7PY~8CBITRBZklvgRE)PX(EIq?W;h0ywJw&&4})#7cstCC8|jNoXP5u@6Ti?De-F{ zaf`3csGN13?&TA&uT{AsbhgfOc8W;a*Mas>DJXJuKF4Q0e9Y@rhRgEnCPkd*`6)|A z@!kOOFcmg8ZkRlZY_)GxnIfh_57V~8C?=`j1nQQp=jj=_m(RReIUo7fGm*&j7BFEk zGuYw!6e9;rWil&DIO85fc&kcqasHREV`R)lEv-zH@NJL~8;DKYC1}LhvuT*Ot2_}J zW#^3&1tje|K#M-n($nQ=mH54ycPeYdw@*RZj~*72#P@(Wt3NN5bEpMbMU=)@<6hi* zl{ccaZTn&fNYZzKG%(hRH&?l6oh{6}l~Vr58un$7jU#%zRi$<&V6E&|!NDe&!Rh*xxnF4)rjfTGQ;Ls33JfsW%dILH_V^IJEYLry{1H2` zSrpgV(@VLsuq6K&$kFkd)fnEO_HiZd$**sZKvEy^S`pw#_z4hVr7VVo6>FfP6w2dr zT(n|7sbr_*lV!{h0SY-D00)LJ-5kJd>7MNVRfZ&DYkT^1znciECb8)EtCh=3B33rTTRmU3#(?P@tBBx4js zPlJX1*4wL*)nx$aje*%%PLzuDI*<)CyIz40HTTwMXRaqihSq6xLWa7=hl;CHO z02klkD|OnolQW)1M$>fT?&m7f1^Lwzy>Zt}LjivQ0nrt`p}-r{{6Rcxr2C~xv``~m zfJ+g6&&8WYxr6p=6(K?&Poemk(rCJarpOfHHxPpQIMWOIf}l)0<)m8PV1BFo zG3t;-A-O+`-!E>5c;(O|lJ|Gu#cIShX&DiMHwmj#wek9xY+(If*$48QM2MB?F`eKk z${!#KX41ev)7@nBN9B(g6Fd56W^OV16WE~T=;=ps!AR;A9Gm;Il0|4aq4!KH8q4+< zuq_g{Oowf@*7rfRF@II=M|UrP=#=GekfmjnErWxM0T{&1-&KT&mga|leq|rwT#zD? z_8*`{p(r7G)gOdFZ zlA&Yb5MTEEHiUT0ll*D_2+M463a|-@RGSGJ7tyW@W6a_?0q3T@xw1v zMmv$nv<;YGs}PF@{G6OML*H$Btg^`;dEG8!6={P-zHPw=WmoD_Ul~v84LQuUol->< z%w}hWwjhycdl2m}M859@9y?QVb!4q9oWV(7HjVfQNRQhFB^C_*oe-{ioUzHWYQ=a`H&(0!G>hd!pK9db|fO5kgmh&0fIsFiZ90!79Cqa?M zR#-YXRB&qaBBg-MIEMmxZ5t0jNN^AcFruf0@XtpctQ--(=k1E&fXH(Qc(7Hg&8}UG zmTjxC+N4~3hBwvBp(?=n`Gr*6+~ypRP`JY&+ z0EzYPBiO)ehNS?9LjcS*U6vJVX!tNks1y+mI|D~SGV$hBi-o5&M?xBmcyNKrTy8L4 z9i1-nwxXj{hzREsk3tE2#NBM5kR(1D#GFsu6|DX=bwg~{<*GSGX(NoHvIQ)i(Y1UZ z2?0rZtdh1IG@+@yprnt&BnCvXE(R;izg{b`W;dDbhw%E)aY`C7etHO2u#W_Iq&yy! zxD&hW04GhOfo(&v#=9YOiOMi2nR3P$#iS4#%MPI}43z2wNY%!EDm!f_ssIsFd51{^ z$=C@c*Gb^Q4AMc1Pviz1u`Jd%)T&F&$;uv~)TMwde;V!0t`f5N6zCKPgsXAwx2v!Qm# zrWet2J7X0>ZkFIlC;^t9x(@St1LkXau4r^ro}HIf_LEi6h>zK_AZrgw3C@HBu>S?G zMF)|MBckK>r~ol$sd+q14RlJf6q3No(B$%jom+F3(#s!tAF8vrlkNidf($cvyG^fR z@AAIhbNkksWy%_{OjIN`V2x!q(>yMV+Xo4@6$vo2;ox}H^ebJ2au%8$6@=Jl0~^|( zzr+hJV`A4_t^^Tl?T{cuBFhS}gs$tdr(w=fl892YQ~v~n_~!y2iMRk_~UT%s~W zXmN_jD$rQQw%&|Si7tgiPM3GB`>fhz$;{d7=Ppwb;;Ny2f5{+{v5c@+2rS8SK7NPY z3}g4K=D>22pu~+g{tS&bKwqhnB>9qzh%-2Z&93Pm5iRTIDoBngy?Om7)4DvwakWYo zVTe=+ej|;!1tkH=c?~!h31>SmBX_YZ-GR)tN*|%xrD)_&qp1s17M!A72T@>%wHr&) zHVZ@CVk(G*OpY~QuL8vMRptZ+1!xaR+8aO%`YnboQDum*WOzVI;3Hko zDb7t02NOaEvw3Ax|9DAS!_6wmD*4AbJtl)iVKVWoN#0>oj$0rHw%VH84qAh`RoNp< z#fm^~jk&f6JTl$}Mhu#*hwWvdWAA3UU3nw6LsA?Pr%@S!d6%AtCH+%Ck9Bx<7OYLe zIAWfvwBpT@TiNZWK?_ByJ3zI+AT|3fmSr}Slag|-PA(lWcPeYdobRDnR3GvFkO3}5 zcp5~&`m)oy+bhveS0N(WSqerm(x@yIGdIpTYzp!W2!c6UmVvSjH&$3F{}+?Ql&MdZ z#-ujPGgX3!e(zDp?<38SB)$v8_}=LzB)33|^1bg?$_TZmof*m_k?C1r!k%rmWmW5= z=GjVfn*5sAhub$R!6C_WK(fEUw0!&egxs$ycXzVmK36Fh+@`X)6ybRg0W}(2_Q3;O z=K0DSQKKDPkcdR47k~+hq-g1K@UXC05bH&47!sh%8Bs}_LGr41O_UX+$AxCIdB z`(CVM5udPw;vzWYc?o#-buzc?2#axWdZuAss)P}DLZL}@-w?K_q<@(&roVoW)2^%% zCXLd81NB z>>{+ZRtrLcH-P{>ve|Gd^BK&Dw_M-PHQN)1VVZH?rdEN&eY>-dp!8V zN**xjBBoIp;4;er!KDBng8-OcMNe8=9jnf+;meI5=tJ1Y*Mgnv<0q9nVvNr@O45Q(aUOs;SOmgtX0+Jo)pvnol% zwoZshal#~Tunb8k)|1vKQHk&zg1rt<val5qHlmG?=T&Qzm?)hwt5C{vzl+J1Q9EXoDoo(o*i%tO)M1eTM!T5 z-mhK*4`w)nd|PFS`1T%!AHYYNAxZol5JN@uUBjQ^!=C;YQ)mVN4obl(HrF#;C147Pg==KCr~F<*{HzWlXpl=BCW6D}9c zXMv?R(5Cc56)9raY4e7y9#?jNWc?9XG1fV&jQiifih;i3S;PJ2$4VNZYPrn(9PRPQ z`4e!WgT;Lj=@sH_;Ep91N9$&yG;MyWa!veyexG*SEW^)G1}ITF+3Fv-9^&UJUc|T3 zoUAyF=^p|}&R>8NEkyNcx6CUib$KYLVScHs5gk@R$f~grlDxkH?>@rYG^C5Ae{#;< zz58pWju@^z4w-$#%@Y|=lK%$eE!NKZbRwVTw@MnZ%Nq&1+X_a) zKY@j|9}M8bIABcOjc?W=ATL$ zQ@_Fc%uP__`4@PwU72b+R)=+Gl*JWg$!RB_Wd5zR5zF!vi-k?2?Vu^fe;@`byyf_T zY#rBSoZ_j5|EdrXrbv%O5qv~XHDq8Z!2cisl$Mt9%GoE(W2E!gm+d2#Z;C>8jrlRq zVUl?>!R6I86*1Sy+g0*b7%c_%0YkZ_dqhr`@G--N*<5AlvW!)n#U*IGqjm>fQ#+zl znk^s=rk|D_clz6GsRBf}C8iLpg)};3-2#9}(yc&xfRMKAecAm~@7uApvPW2`JQlfq z#2@OwUDA^cIeTNDS$M397oj>V^gv0-&1&2hC4i@%9&2oO zToOMP&CH}6%9GP^+o{YEi*d!xJuVrLP`K?O99;C8KLw1g#gUra2C#$564ApvOxw?^ zn55p(Q{&&l__=&&)ye@{j0%%=Q4_|^PV=GmFr@a87EDs_3~HJhP~2LuNVhlW@R756+onXg zxVuqo$Y%4j*+*F;O4~t$YX&9#zMwxy=-XTH+=Z8N7^-acQyB*HOCG|p+QTGoBg`;R zp#33G%l->4@-qjh01*b84l4ivk>^10piPSse-@ARRV(h+6?q=eEK;rrl`gXmXoVu% zL14ochg&H-=L#9;(54PnvX~Ck(YwN;k?#=j6@(8~lh6>K8j9p)uBwqOWqaGa-1g8g zhpHqO<$vR7i&QHSg**&G?kGI|EZc;s%K@z?s0yP?} zjGE>crHxpXY0gfx?j-iH;KWGXZhr}9-)2ogd3)sF<;j6Bu${W4>k?#yPB{>6xm)2d>}t?05u6tWLO9_GG!r@6lm zcJ^K#a#z_RHd&*me8s0oXG0{+!p*k`I#+<@DnrD^Lz_Xn-``4T@yNLXoES=5EIncy zm^SAqWyEZ#5NshD^QI#JlJi_}9w3~ZPTk5pj3d1(m3+1Q#a!-V7;a zgd&)NkTZ=s%bmp}@i2(d-LgwqYru!=u{mFP<&V7P*LDq?f{}0?2%!aXFybV%3McY8 zfR2kJxtwBG&Iljt6ozF@qfMwJzYyeyqqOzx6DOl3k$@M#SE~G5A2qy4MOhb7{0u0C ziDaQ@7YozO%<$F?Q~6`r6#sl{@%$aFjhV|NQf^EowaHnTAC7E_laQH|kUse$1ED0u1?9(?nP&dM}n*xjr^<9xtmR!2L2e{Nlq3`jmt>VfS8GyCe)0C!`l`0 zH?xudcxU{>SyY<%bITVpoA|G1C6q$hHO}@<#De_G^$_fW9hyWM-dc)0BU8zo{5ox} zl(00s3%?hRAJocLlB*>BQggM0!`nzxzz^mc{@WcUt5vyM+ck-6@h`SGzHt2TZoH4( zCgYm*DV%4$PJX_|T#tXWXNTF!+#tWMZVYc*$Bln-I-y~1M6Th-Qz$r86=$X}ZdQt; z6Vv7vu-KJF z`;OG6IE_q>4R4p);LWY_uP-&XNqEHYuCD9I&$#BJjy8Kc(DrEhLA>mxSI(KI;Kyt( z$sr$j+B~&6SEjLL=9v<%XCB9yNK#HJNi`Ww#*!qdCF_$7$@uzBTgtzhl_04nQ^^&HNgBy?GLvjfHYKykTykY{ zRdRK5O>%8=U2^^Uxy|HXUnxOyQ*v{1OLFV_TegstTO~-Ik~}rJBe^qqTJrSuyKOD0 zyGxKfBY9?WS916I>$Z}V>m^8@lRP(hUh@3p1<4E7ABfaNNPS82(&S~y%h%t8l$(+A zs^rz{Z$lYwM;YFbyfJxG^5*0%$y<|mB=1~*3naM}!5xs`PDt>csPv$C8gHpGZELJdiw?d?xwq`sbj`&qbLZN*+!=mwZ0?Lh{ArOUakl z--cgq$1h(?zMgy|`DXI16$|!{kTFkCUGyKTUp?{5<(Z^2_!2 z;n(}|>#veuC%;L4oBS^Mee#FokIA2sKPP`l{+j$P`Frw@Vi22)0MC1A-k9?1W%v1iK)37XIA=n$iJ_znY)!&Wad5AtA!TtyiKyV*G??-STqKgn5gy3KVhafl< z!5}`z5Q4)HeFB2R5gdWwXavU~I2J(x!D0l*Avhkv5(Fn8I1#~%5WE<{DF{wQa2kTs z5uAbGi3oN?v35dmCZatEwm@OFMDQ|1Uyh&`!7>DW2>KD6jbJ%~6$s8ja4v$C2v#9j zjbIIe0R-nESc_l~!4QIB1m`1Ihu{JP7b3U_!NmwJL2xO8%McV1T#lfGU<5%KK?Ok- z!6{ZY8UxnD!2(CeJ zErRP1T#uj+AG#mG4T#=|;3fn&OOV`?+`IlZ#BN7$A^zD#2<|}iP6W?D@Js}~sQzUL z?n3l#1kXb7Yy@vY@MZ-2BG?bX3lO{z!AS^CMsN=bbuWUYh@OSu9SGiuppIY)!D|q_ z7QyQfydJ?D5WEq=a}Yci!P^kL9lycL zuL$lz@$W_OFGT;1;6Didi{O6<9)tSZ48i6Iwm`5Yf~^p2jbIxDk43O8g6$A&k6;G` z4`Aqd5Wzc8=yxJ`4=CS@-~;&Kg9vuRKi-`=5Il%rPXv1**c-t<2=+&C0D=P%EJAP} z0PaU{2%?7~xCS5eS_Fq9dIW+a5gdi!XavU~I2J(x!D0l*Avhkv5(Fn8I1#}~2u??r3fxV@Blu*g9u89jv#ml z!NUm32r3Aw2u2Z%AxIF^5UfYA0l_$e&ms6cf`{-a9!78lq6WbXf{h3^A(%xlhu}&C zS0T6>!8Hi3MQ|O0>k-_5;6?-wp!qzA;1)!0l^}Ud^4j%JLF}mr?m%!S(*KX6dknK9 zTf+bv+qP}nwlT5Qv7L!Ev2EM7=EinrV%tt`ulci{e$TgS*G5&H)19PqyY-!b@zMlL z#3W3{6imf5%(M)%(8jO>Fk4{`=3@aCVi6W&39jNAmSY80Vih{Oi@IQ~xDM;F0UNOi zb2XWVt>QLp#}4dQIDp;a9(1-0U9eZ&hnl8P3kStRI4mB)VetrJA{LJ01Ww`Qj7q@W-cX1C7@d%Ic1W)k{&+!5;@d~f; z25<2Wtqh|z-isgb5uflGU+@**@YLcw!%y)Sej|wMASi+%I6@#KLLoH5AS}WmJR%?> zB4HFpBQl~ODxx7eVjw1BAvWS5F5)3R5+ETGAu*C5DUu;MQXnN#AuZA&Ju)C8G9fdv zAS<#VJ8~c=a^W@JAUE=yB_ycuN7xhpd4bTvc&=^h76i0Ck&CncQ4ec9RiLL*84d2in z9k5uFCFm%2LT7YAS9C*n^uTQczk{A)FZ4zq^hH1XiGdh|!5D&}fwUgcdSt)|X(YP3 zlDh@cdTZ-#0pqcFP2tf@y7=oK}2rO4vft6T= z@5b{3tHm{#?XWpmE3U(OY`{ir!e(s2R&2v|?7&X!3Z(V%)+Yk?O8b!1$&%rqcnF7a z1fjiYhQV?11Ww`{J>BA!fynzchPM}3@r89GK5qJ zh0q9tun33nh=7<5i-pKy6huWdL`Mw7L@dNc9K=OD#76=oL?R?c5+p@3#5L)7NGYa5 zYNSDWWI#q_LS|$^R%AnVb93@a%2W3!N zEQ7=bo&;sZawv}qsEA6aj4G&#YN(DHsEt3+SNHu;PpppyXoyB=j3#J`W@wHUXo)rm zKwGp!dvriYbV6rzL05D`ck~FPb^F#G0(wh*&=>viCkA2=1|z*C$bezu@IYE$Zha*n zqn9$_FRzcmSd7DXOh9NKkHR1-q9HBP;j{%ggXtR2z--LHT+G9KEWko6!dM-Q!%}e> zmSY80Vii_n4UTGj4C}=W*oaN|s_+e4#chb}wvK|G;x43i%ca3yaUUXDh)6gn9>Q^) zz)>7SBV9GdN%0g;;|$K?9O_w;`nZZ~$gBH&xU9()T*Wn9#|^C1colAnx9|`C#ckZd zeLTQpJV7h8#&f*DOT5Bsyun+%!+U(dM|{F(d_fD#)DqvtANYx1_>CY&x>%DXsAzF2 zA*4bmghm*IML2{<1Vlt6L`D=uMKlC;j$nw0NQkWv2XPS(@sR)tkqBumb~+>#lOZ`$ zAh)jaAhnnVX^{@;kpUTz37L@vS&6(G1Pe0xeO{ ztyT!JEpZ&QQ3ya=v_pTF#Q<~^JK;KRppnBGqpR2r-O&S|b^isu#Xjhd0eEPc9$}C; zIFQy0TQ3S2CJo03j6?&cXo$bWG3f8m0hlh%z*GaBhPf7e9@-i}JIvH%7LF<$!(4G5 z=3@aCVi6W&36^3RmSY8O>hu;?i)*kJ>#!ah@X>%iVY9deTd@t>u>(7?3%jugd$AAu zaR3K#2#0Y5M{x{8Olv5Pizjg2GF`w)@f7ZB@&ISWb69IK>u^!Lgv+=RNbA|H=LE!e zKmy$K`Yp7#F&!|!3tKtd!!T7`5-Dkej6q(DlfLTaSJ5RHch(t3I86#<#Olm%Il4cUHSddh#N{ucOkz<2z>PyE7f1PT00>H$F!48ai!p-}-95f0%I0TB@e zQ4tN%Q2+%|2!#;~v5^H?5eIP*5Al%z36ThikpxMR49SrKDUk}Pkp^jz4(X8r8IcK@ z5dtAm1yzv^*^vV|kqfzz2YHbX`4Iy#5ebn|1VvE{#Zdw!Q3hpE4&@OBVNnT{Q3|C4 z=^ijUa4Y+Fnfl)*&b7Dma2t1U7xyq93$PH2@DPvi7*DVfo3I;u@Ek9&7)!7e%kUDf z@EULM6Tk2l@30&za2Z$d9v`q0tFRhta32rw5uflk{)f-_g7w&dulR=V_<_yXg5L-d z_!ln%{_)kn2r33cScJoNg&hbkhCoP!LTH4+PEB^ra-y}WDc}{mudf9 z=2^X*4cU6bB~c1xQ4Zx%0TodRl~Dy%Q4Q5m z12s_#wc&641k^!Y)I)tVKtnV_V>CfiG(&T=KufejYqUWC+M*rWqXRmk6FQ>{x}qDp zqX&AU5Bj1X`eOk8#6S$fU<|=f48w4Yz(|b3X#9mS7>jWjj|rHFNtlc&n2Kqbjv1JV zS(uGEn2ULsj|EtWMOcg_Sc+v>julvmRalKRSc`SIj4RlPP1uYr*otk~jvd&EUD%C1 z*o%GGj{`V}LpY2hxQ-k68~?*`oWMz(!fBkrS)9XpT);(K!g_4LRb0bS9K%iA!aw*I zw{Zt|aS!+L01xp9kMRUg@eI%L0x$6juki+N@ec3t0Uz-RpYa7>@eSYc13&Q#zY!!% zAVCof!4U!>5elIZ24N8n;Sm855ebnI1yKb93@Z^rBE7WP!{D-9u-g#l~5T~P!-is9W_uBwNM9jQ4jUe z01eRyjnM>6(G1Pe0xi)BtcFP2#c`brDUcGWkQ!-_7U_^48ITc~kQrH!71@v-Igk^%kQ;fB7x|DM1yB%$P#8r}6vYtT zq+_5sN}#kt8I(milt%?rL?u*3HB?6p)I=?Gwp(3LN34r_sE?@%)36lFuoA0q71z*8 zj0r(RGF$jY(1Vb?l!_n7* z^}`5pBt~I0{=yiH#W;+|1Wd#v+}6PzOctkLDyCsNW?&{}VK(MqF6LoA7GNP3VKJ6q zDVAY5R$wJoVKvrZE!JT@Hee$*VKcU1E4E=fc3>xVVK?@mwrTx={o(-}#33BU5gf%a z{Eh$NI8NXsP9d`Gj)Jq|Ih@A@T*M_@#uZ$}HC)FH+{7*XgMZP)Ae-W@cn|mS01xp9 zkMRUg@eI%L0x$6juki+N@ec3t0Uz-RpYa7>@eSYc13&Q#zY)avf+84#BLqSs6hb2m z!Xg~PBLdo@9U>zNq9PiSTi6tcDaJx<#6eudLqa4%VkALQBtvqfKznpRYNSD0q(gdS zKt^OjW@JHDWJ7l3Ku+XBZsb8!>k@+VXp!0Lmja$>Y+XwpdlKeF>Y&o2hGIhXn~e!h1O_;07OJ2 ze8&%@L@IPdCv-*^bVWCGM-TKwFZ4zq48w5r#{m3^ff$6r7=oc#j|~`skr;*1_zPn& z7UM7;6EG2zFd0)Y71J;sGcXggFdK6)7xOS53$PH2uoz3Q6w9z2E3gu)uo`Qy7VA*i zR#d@8aT7LU3$|h#wqpl&Vi$H}5B6do_TvB!;t&qw2#(?y{>J}s94BxRr*Il)a2Drq z9vASJH_b7)EMCEQaRRQ3H*gcT@DKh)Vz+$~+!gQPw!`k=q4)@o@dQut4A1cbFYyYm z@dj`44)5^+AMpvF@daP;4b3cjbNm#4;WvU9UwefP2rh;|NQ6RpR6uBiK}A$Tctk)% zM8auZok3->3Zf$hVj>n|BM#ys9^xYb5+c!muNi3qBo&h(B~l?Z(jYC;p{IvYFJu%m zAv3ZdE3zRwav&#iAvf|MFY+Nj3ZNhgp)iV|D2kytN}wc4p)|^%EXtv_OW+TL6~iGa zqM<6Pp*m`yCTgKJ{D&n0bx;@eP(P6F0SyA}-(~uLKj>`a<;IwdDd>uBXo99_hURF6 z)>w;mXp44ej}GXJE?A0X7=e-KjvnZVUg(WJ=!<^nj{*1-12G7LF$6;~48zd^EinqC zF&5)69uqJX)36bnFcFh58*?xnGcXgguoJs57xOS53$PH2uoz3w5uLCcE3gu)uo`R7 z1_4-)4cLq=*otk~jve?5W3U^00_h%5E$|O+`gfV}-xk;KCpk4y3$@`lNe9$HUDQK; zG(bZ%LSr;RJG4i0v_MO=LTj`^0NSD{ng!B5;C4#Gnfc#v?goAxa1ZzK01xp9kMRUg z@eI%L0x$6jb5jK}53j{Hc#C%kn>vti_$YqDXMDj|e8YGAz)$?bZv@eEPy|D8gg{7y zLTH3RScF4Kr!0l=Vgy7)Bt%9OL`5`2M-0S7EW}0}#6>)8#ug+*A|yrt^6hToGLvfTqNt8lq zltEdPLwQs{MN~p%R6$i#Lv_?ZP1Hhd{PEvwrdkX2#QJD}hG>MwXo99_hURF2mgtQ> zXoCQ>MLV=d2VBG@bVMg~Mi+ENH!Q_6bVm>LL@%^LYxKte{E2}Wguxhsp%{kY7=e)( zh0*v6V=xxuFdh>y5tA?(Q!o|NFdZ{66SFWIb8s7X5Z)3;z+!O;`ildwTwH<9Vi&9y z*Wf-LU@g|6g(fYrQQU<1NPw-_hV9sao!Eul*n_>;hi1BJj{V{R9K<0U#WDPi|KT`J z;3Q7rG|u2G&fz>R;7{ET#AWdcuHqW5;|6Zx7XHD%c#3DZi+ebXBY22Mc#J3Li+*^C zS9py#c#C&4_>Ld=iC^e$3O$e*Ne~<%5E7vf8evcng)mh=G`hh1iILxQK`NNPvV$grEq9q)3M3NP(0{h15ucv`B~a$bgK|qT*!?)$cuc)j{+Eip(uY+XwpdlKeF`A$$R_b6CMu;QP3a!xw0ceYMXpau)h)#I# zJ@f;*irw&Ar$Kzx6TQ$Ieb5*EFbIRO&=HF;OdO7{;@~9j3ro$b(oAP*o-aMi+$LS12~97IE*7Wieva2|HEmV!FgQ3MO;Gg?16;9 zRq-0G;|3n$5uW1(Ug8zr;{!h93%=tAe&QE`rU@h%f+GY%A{0U+48kJ5vhbkQrH!6SwhQ8>B{uqE^7>*GbiN7!g6EO)>F%7dZ z2XiqG^RWO6u?Wkt0;{nG>#+gn4ebJUio38E`*0A4a1_VzH~xo{IEB+VgNwL?%eaES z1Am`)!2fVvyn&mzg@5obZsQK_;{jgc6+Yq71AOdG9nYQA{+9f0E(joN}?1>qYTQT9IB%RYN8fu;}6t9 zT{J*LG(uxELvt(-{N;xME6`c&g0AR>?&yJ@=!M?sgZ>zRKQR!4Fc`xy93wCi<1qnK zF%9#v0E@8%OR)^gu>vcx3ahaO8?g!7u>(7?3%jug`*8pVaR`TT1V?cUf8&2RjuSYG zbGV30xQ-jRiCcJ#CwPiyc!^hdjW>9Ucld};_>3?3jvx4qAn5`LieLzdP>6^~h>jSD ziCBn>c!-Y#NQgv8juc3b49JK~$cbFYjXcPUd^qY-IflYw5fn!Wltd|%Mj4bvIh02Q z)InX;Lwz(rLo`BTv_Sycq8&P;3%a5kx}yhrqYwI`9|mDChF~a0U?fIiG{#~a#$y5| zViG1}3T9&t=3@aCV+odH1y*AX)?yttViPuF3wB}`c4H3?;|Px882-lpa2zLa7Uyst z7jO}ma2Z!{6Sr_55AYC=@EA|<6wmM+FYp%c@E#u!G<_h!5F8;88etF?;ZQVNAjJ?- zjD*ODf~bgwgh+(sNP(=#hTO=5{3w8eD1@RYhT4JD1-8-fQqPugc$=#gxcaC zsE7JUtdIl^#D=JCGJl|n*c8ps94*iiZ4iL==z#9%fu87v-spqA=!ZcVj3F3`5g3V4 z7>&O$24gV}<1qmfF$q&K4bw3LGcgOxu>z~H25Yen8?gy(OgaEt#ckM&eK?3i_#6Mj zMO?yl+`w(z!ClLL@)G3KMcZP48w4Yz)1Xs zF&K++Sm;}dMVKf~!c_b{hoDPS@BRGx|IFAdsh)cMM zTey!0c!)=Mj3;=CXXvW?Zg?%eK~J$4zKcKbr^OzKhzgMq710nKF%T265F2q29|=&? zby^F_#T1Au#zT5B12Q5LvLYK+x~Nwnx0nY7Q3!=m1VvE{rBMbMO(7G;o5BQCRj7vQ zsDVakj3#J`7HEk!2tY@4!dsob!w7LChF~a$VL19@0RF-lOvEHi#uUuP9L&W$EXNA0 z#X79V25iO_Y{fQg#}4eq9vs9W9L5nG#|fOoDcr{cJj5eB#uGfnGrYtrY_y!4@Ll|Y zpguAMLvVyZXoNv{L_kDDLTtoALL@>`B*S?de*vk*G)RkdNRJGdjv3f(Kzoo`%z~`Q zhMdTS{3w8eD1@RYhTCl^+%)i8XeG8rTeL%GbU{~i zLr?TVU-ZKu48|}F#|VtXSd7DXOu$4;!emUrPTR8!OT}eaiB(vOby$xL*o-aMi+$LS z12~COIFAdsj4QZ`YxoEM;yxbWAs*o=p5ZOt;XOX!BR=6PzTrE5;3s||yzPmAh=_!k zh=sU_hxkZ<#7KgqNQRV1g|tYA^vHnB$bziMhJq-B?>6}dii;&s5~WZYWl$MaP!-is z2X#>o_0a$g(Fl#v49(F3EzuV3&>kJo8C}p7-Ov-g&>MZw7ya-j24WBfV;F{G1V&;! zCSW2ap`J^sKBkK^FcY&d9}BP)%di|PaMfYguvT1$jo5_U*n|BzfP*-M!#IM!@jo2L z37o_!T*M{Z#4X&$9o)q|+{Xhv#uGfp3%tZDyu~}b#|M1GCw#>>{KPK=_k+9;2#aut zh)9TyIEagQNRAXpiBw39G)RkdNRJH2ifqV@Jc#N$>u4w_7D929Kxvdgc~n3}R6=D` zK~+>kb<{vj)Ix3ifjX#*v_2H2!(s6V+M@$Hq7yo!3wj6se<1;V&|U0-p6K;o6@Abj z1MnvXVhDy}1V&;MM&mDx!9+~LR7}H6%)(sE!&_cAD%7^rRFqi>X^{@ukpnrA3%QX8d65tKQ2>Qe z1VvE{#Zdw!Q3|C|24ztWRZ$JqQ3JK{2kM~if3KPTAIR*2%Yp_94bcdV(F9G=0xi)B zt5)8e?J{W|-7=ob~hT$0D))9n%*8y+#{w+I68xou zF<36Hz*?-sW^BP$Y{O3M!fx!rUhKm`9KvB7!BHH;-}oO+;uKQ4xKiP=cm-E+4cBo4 zEi`F~yW%}O#WTFe2lVwA?uVRy2$KuH6@r*$Bahd{2rGueR7^u+BtdGVK@*LeVm}Tb zqe3Rk#{y(W4&+826ht8uMiCT6F?`q650n+lp*$*}GOFNDlOBkgVlC8jN7Y9iu`U{* zAsV4EnxHBEvLs{BN^Ffb2tZr3Lq~K%S9C*n^gvJaLT~gze+LRqH&rmv+E2n# zEW>2On1YEKPr_tO!A#7;Y|O!0tiyV2z(#DsPVB;N?7@B42a z3u7=DQ!o|NFdZ{68*?xh^DrL^uoTO1+!Rh=v$zGju?PEc0Eck|$8iEDaSEq#24`^& z*Kq^4aR>MD059I!XPZdAtE9nI$|I$;vpdtAu*C5DUu;MQXnnT zAw4o6GqNBnvf&@M{lB>E8_Fxlt&j)#Q2-@T3Z+p71yKm)Q2`ZE3AOPD>Yy$fpdp%| zDVm`r+@FxahA|_!nreG#!VJ_xjF_vH>Hen}rVK4UKAP(U$ zj^HSc;W$pHLvVyZ zctk)%L_$b*#7XHD%xQ#ow zi+i|_2gvA@nebSAf~R-w5Km`e}l{ zu+_=8A+`?UAf_g<5F2q27xB!F`1X$Sh_-cH}@_IeLVFi$2P||+ zEka?7Qv~HTsep>8gvzLbs;Gv{KImmZJ+VHz+T?Ek?X=h$Z4iLAXovRbfR5;d{SG^T zi@1d2*6##{XfhP_oU%Szpe4pCjKf4s!dQiIm@dx1Ow7VUEJ9EhNHDAw*I_+2U^BL0 zE4E>>0ZqX~hfVtLSggZIO-|u7&fuWJA)FU4;HG#BSH)}S?MCc_nBFpCAv<#5wkCIQ z7x!=<5AYC=&{^XysOm9N4eu2`Ah?YWf$N&wKxi=x!Xg~PBLX5L3exH-9b$`dkWIyYb6SYtqf8eaH&Y_9e6wS~aEzlCJ&>DSBx*s})JFF6Ln&7GWutVI@{!J9c0%_F+E`;2;j+Bu?Qp&Y-&C*1%Qq8oqlg`hnZx9o)q| zWOX@aLvfVAONCc>jW-yjFd84lPxy>4_=<1%jvx4mU-*q6MzGL>Y!O0=q3~6w-w<7l zftZMe*ocGpNPwhBhLlK!)JTK0NQaEbgv`i-?8t$_D1yW;q$DUSmP2>32dawIPzQC< z3av5Mr92NE#ZKsqF39M@%!K~p0Q`x8_^$8+^(;w!%vP9#xtNFfSb&9CgvD5brC5d$ zZk&;b?x7z8iID_R4KfKobv?rZ_Af!BHH;ah$+OoWg0G!C9Qc zQzw6h%iDDPzL2u0aZ~A)lmbHElw1qbTOnt1BHfYgvS51^EixxvYM2`XP4s_ z^b~vHqYpNpuuxot{yG?dAsC9!2Kfc!#RNhN~K1!$Um6Nli}SGOpk%uHhg2 zi`%$^ySRs!c!k`$&x7~k2YkjC{KPN(MiA>96u}T2ArKOw5E@|+7U3}8hw=p|E0#k{ zla7Vo3PH>$u0p*3j!;;Dwl1@FNU4wt&D;jfky*@woXCZ|$cOwWfZ`~Dk|>4psDPTN zh1&Q7bx;>a4dWP^iOn(JYAirZw{9%7RcMFy=zz}Xg6A5)KzFeR`l25OVK9255B~Ci zAA?ciXiUX4jKw&lw{#gWU7UfLn1%URfW=sXrC5fQScTPCgOW~J3LC{u7$uIz5GNXn zt~R9`_G+>Zf8&2RjWallb2yI+xQI(AY+;LFr5k${t}EQYZQQ|Iyu*8Zz)Q>i3ZKO< z_=<1%jUdLnUZ)!nQVfN#2#3%vq%epqMnP0WLv+MIOvJ)n!@Y;l-a5h{xk3u$MLzta z@Gr`WV7n9TKohYk+8_Y!(E%ON3BAz=RZXiJhKNHkL>!7% zwy`y4E6l-M%)@*vz(OoSNRtVLjp8Qs75ibkxC8AyXggrHxCiew`G64$BXL;a2-3Td zGT?9Ve^{-_8f?WjoK`r4i@1dAxPhCvg~xb;*LZ`^_<|wcCWhj-7{s*^6u}T2ArKOw z5E@|+7U2*XQ4k$5kPwNG94U|*X)xZ~$pp;x)SHLg3VDzh`H&w4&>cNc7)4Ol#ZV5> zZC(siRH%fWVlUJbYoRv&z+Y~cG5D^@542KfjW!5CPHzdhP#8s!+v6(_`fD-(LogJ3 zHQ9$z;%JP;IQ+DEzc5*xf|Ndcr^0M;4(4JWw!1`kV6nIatL@ertQObcFCC1*W^oIm znpQOI6n7z~iz^pSi)U~a=Wreuklx~Cz-93Y2DwxQa#J zK>$LULMR;7wQKOwVXyEJpYU3fH(2OhZ4o|; zU+@#Z@EbuK5fs4?93c=M5fB+s5Eaqzk4yev#1-QqJ`y0Z8!-yH+LUfM?{>a`jGAOZ zW@N#8jX&V7;od`Gjf_A(w9onM$rxP56$qXbTR z(>#U5mNN;;DwIQBF&}D*wNMZB(Fl#v1WhqjSJTi+Y>mF|qkiZpc0y-#K~MBTU-UzN z48Wflh@{>OlVQ59W?+QENQ}iejK>5_#uQA&G%Um-M7Fh2aMlC#9A;X&Sy-*f8f?TS zY{w21HH>07E}p)dt*FxP$&qGywO-2Y84_c#ao%jW>9Ucld};_=;~R z>S10CKgC}N>Om0DbVk|s2$QOt!#zTB0Ktd$??=@SI z0LjG^NQqSV$MpY2dNBiXA{T;NrVz+47C?2wsDa{Q36w-BR754L*JJ}KyZx%5tH)e7 z^wp#v24OIUVK_!%G7s87XFdZ|n+oik*S;cI~Z;1Ii z2#@gu&+!6ZHTi~NwstsnT8Lc;tq=xb5e}nl<7h+`qah|@At!PnArc`mk{~@Yppivv zjE?ApkKPDAA-^UC5ZQ^MV7&otKxu_CD2sBajv7el@t+8F#JZ@5`e=ZL*zYDefX_Dh z3tqYnUZJxlT`<=JU>nq&l)`9?#W;+|1ROQhV;JVb9FFX6 z*c@1>$s#Pq5-i6Gti&p;#|9j?c_$Fsa)!Z9gGJz z&I?>rxP;5Nf~&ZOfABA6n*J<26d&O+p5QrN;4R+aJANRjO%8_BmgEe=ixChN(a_Am znks;GwQ zsDXN@k49*Wm6l``T8J&t7VXd;9kACexewjN9{9_}Fb2KFKDa7g!!U99f9)^^<1qmr zE$k;u6{lf3W}tyhZix1V)&Vyy$t~p%Dp@ z5d~2Z4bc$;F%b)~kpKyi1WAzsDUk}Pkp^jz37L@%*^vi%kq`M%48>6jrBMl$Q3X|T z!?NGRA7UNUMLpC<12jYcFP0xPiwYq1XNu?1Uk00(ghhj9c)@jo2LDV)X` zoW(U<#|_-XzqpOj_zPJ~AuAq5elIZ24N8a z5fKTI5e?B13$YO@@R<=18VSUNNQUG{h15ucw8(&r$cF4V=GOQddBnUZgu*C>;wXpm zsDO&7gvzLbs;GwQsD;|7i+ZS!255*zXo_ZNiB@QhHfV?T=!Wj-fu1;KiT}nxaS#S$ z2!>+>M&mDx!+1=>WK6+ST(S_CF+-e*MOcg#Sc!F5j}6#}E!c`}*p408iCx%@eb|o! zIEX1OuBrH+cpRs28fS18H*gd8a32rw5RdQ}Pw*7a@EkAj5^wMpU+@(_@DsrdBRE1K zG{PV(wpg64h$Kcv6huWV#6~>C#}4d7A|%EHTQ(7C#I#6<^vHmW$cF65h1|%4yvT?A zD1^c&fs!bN(kO@WsDO&7gvzLbs;GwQsDYaJ19i|CP0$q0&>SrgfVOCd_UM3)=!DMb zg0AR>?&yWy7=S-95Q8urBQP3&VGPD%9L8f3CL@D~LPkszr(*_YVism&4(4JW=3@aC zVi6W&36^37R$>)aV;$CG12$qCwqqA|V5v}DoH98wiJ6fP`B4akQ4GaV3Z+p7Wl;&0Q3X{|12s_#wNV%K(8;aa8C}p7 zz0ey2@F)H?{o5ES4#N-pL@-+s9Am_>n1ZQjs?ZEA(F!XRR$>j-ViPuF2X+G%nyGrfD)A*Tn0%ftxs_a2R*Qy9i-ZLZTRoKq1fVV2p*_}U zvKC#$t~e(CjecT(48WflieWgX$$4C|B$qKpVJv20Hs)Y1=3zcAIP4;xIP58wDJ(}k z#K$VE#s+M}EL%Gpd&Irihy9qN)4A9s?#2n6#5tVD1zf}>T*eh##S$z<4b;Q~Jj63R z#|yl~2dDgqZ{m0Sz)v(*Xo7GEk0^+WH>UpurF47YUp57HP$T8vQ`iwT&BX_`#OCTvDLh4`3< z`B;F3Sc0Wkh1J-E&Devz*rBVPNMZ^}@k#uQOPXB9HC)FX+{G)r#sh~v#5?glf|yKD zd=fw7l}=wHjzV07b69ws(BvediP7=N5`RVht#xjR3M<#{L2!f!t!6hldrLPbcP z#|2!*71TjpT*nRE#4WtX2i(U4JjN3|#|yl~E4;-!e8eYw#}E9(FZ@Oj*V{4b@Qt^-v!T z&=5_~6wS~aEzlCJ&>C$JfcEHs(k5L7-Nhd0iC*Z9KIn^n7=ob~j|rHKIhc>=-@gGmf-I037X&z!QI{6-4onG0^I#fa^8E+ckZ{={pZ>9>#DA< zuCA``Jxo?!;uT)w4c3`S>oFe-un>z-*F9MeTg0u{hVAIBpbvJ5yD?XshkfFH9KvB7 z!BHH;ah$+OoWg0G!C73wWn95kT*GzT!fkwQz>46Wcpne&5W^LWz*vmKGX>A_3a{}e z-r+qy;3L90qv{5%1|o}5kQ^zH5~=Vx@*pkJAtN#&GqNBnvLOdP#g{0Aq9}$JdhinE z#PXYyaV;L;A)eqV&g;en+z@Z#4({R&-XgrFA|NJWAqX`Q z9Wf9W@em&gkQ^zH5~+|D>5v{75Lq{(Agh=S+3^W-A{VNvQVqq$5-5pMD2*~Gi*K+| zf*F{J49JL@sD;|7gT`orhG>MQ2u3Tk zMjNz6L|u!7USe;=H;4()PwbCD7>q^=8e@bw5~DC09TkLNoH!m6FcGH|oW>M!Dz=DQ z(OWnAV3vZ}C?FO@VSI%Z3RYqjR%1OjAOxMT72B{AyKqDUN3mZ#fP*-MKNY+~bTI}l z;u0?73a;WBZsHam;t{Un2A<*>p5q1X<3WJVt>&lo`;6&fzt1?9A+Y&476-PrT7som zhUHj+l~{!%=>r_a8gVVwVLdirBbKKNuman}?bv~x*oEELgT2^?{WyffID(@%hT}Ma zlQ@ObID@k|hx53Ai@1c#xPq&Q?i6C+jMG1h8wzgX7H;DX?&2Qq;{hJx5q`(9OaYGL z5AiXc;3=NrIbPr;Ug0&~;4Rh|u(kM0{2TA_0f#aMIE?VBL_kDDLS#h225dxh#6V2M zLTtoAT*SjQr+*y@#Y9MqBuI*6NRAXpiBw37bV!d3*n+Ldj4a5CY{-sJkOQA0CvxF} zi*ga4i+S(`@**GdBc{QQg#uzhTobROu=o{MwXo9A= zlrg|%oYCl61S@EU=4gSIXoc2jgSKdg_UM3)2tj9bL05D`cl>}K(F6Ak`+f8l`=BrS z;fYgtih<%F48{-)#V`!V2#mxi)X?a+7%h&$Sd7DXOu$4;!emUrPxu+rF#|I(3$rl? zzu;F~z(wrCe$2-LEW{!tH`pm~MZAhlX#;G=YVkMxDZaxSr|=e06+{c$1DlZ%nXnDp zu>(7?3%jugd-1u0=fMH-AP(U$UMP5pW8!gaaqz7;A)dr3oW>cP#W|eET+G8IT*gu? z!!=yT9o)q|+{Xhv#3THUKkyh&@D$JR9Ix;iZ}1j>;vN3N-(f#Ft-tY643|DYctk)% zL_$6bB~c2cQ3hr44a%WBDxe}Np)#tVDypG6YT#Q$v=l@_EwMK0;5*bsJ=DkdXn=-j zgvMxsrU*teG)D_ubJJZ%OR*JNqYc`k9onMMVA_4ctUmbVGOifFIEV zJ<$uj(Fc9e5B)I!12G7LF$6;~48t)3BQXl2F$PiH#L=+JrQMD33MODOreG?j;V1lz zxQ0C*W{R^=R|EC1607iwf?qKg^DrL^un>!|7)!7e%di|PuoA1V8oyx;)?yvjV*@r~ z6EFQJz(<7BtMG_`AlqspvKR$X5e?B11F;bY(^Z~<_+kPiL?R?c5+p@3{D>ad zWU_8XN--5m8`v^PE2cwwWI#q_LS|$^R%AnVe1aVK6giO#x$zmkKwjiSeiT4Ke2GFR zjIZztukkgCpeTx=I7*--N})8$pe(+@U-%pGO^XDmBvwWhR7EvZM-6<7Ak;)H)J7eA zhq|bT`uH9V&=8H#7){U=!Dxo&Xn~e!g`zG%F|-xip*=dFBSO##q3Db*=!$OWjvsKw z&3P6*#a`%*KIn^n=#K#yh(Q>PAsC8b7>*GbiBTAhF(_b46~uUP0w!V-CSwYwVj6zJ z&zO!Gn2A}KjXC%QzhW-tVIdY_F_vH{mSH(oU?o;zHGabyti?L4#~Z`+78}Hk*o4j4 zg00ww?bv~x*oEELgT2^?{WySwIE2GEf}>by!CMrz>WL?D3a7C}!B(6T&*K6vVx6h7 z9#_Px$RU1;8{$pe!fkv+IA?jsPj_(-_fbhfWjqic;t_twA9#%ZZlM8qCO*dtyu?%m z)9^-oi$C!W@9_aQRJn=p4jBP+b$lKoijfc*Q4kf;5FIfP6R{8*aS#{r5FZH;q|ut# zV2WMXZWy zsE!)=7D1?qTBwb>sE7La9u3eCjnEjuXoi+(h1O_;wrGd;=zxw0K_`TwGrFKFx}iIM zz>nyGp6G?%=!3rKhyECVff$5iIF7*>f}t3O;TVCD7=_UogRvNg@tA;#n1uE&PX|mD zr{O33jOmzxnV5yyn1f&NE9PPzYPnFgF<)GOg;<2eSc0WkhUHj+l~{$<_zi2Y7VEGc z8?X_Zuo)Ab!X&K5Z`h$=Cw5^s_FymeVLuMwAg*|cxr!s=QS@{&y>LQ2iBmX@(GD~Q z=fv~4fQyK%sVKN2Ud1(B#|_-XE!@T(+{HcI#{)dXBm9m(@EA|<6wmM+N8H#)@k)G+ z3YNKw_)~m`_o{rrd+`Gctk)%L_%al!2yqigNQE1Kqn_1ir8Wt#6>*B zM*<{7A|ypJBu5IQL@K048cfC%q(wTUM+OXaDTX1lm<3sp4cYMta^O?sL@wmUXZRd> z@CEWBAM#_YK^%uK#X=~IuTT`lP#h&t5~WZYWl$F1pd8Ah0xF^sDx(Ujq8h4WqJf=+ z&z))>)KTyq>Y^U%<9jqfLo`BTG(l4YqZyi`1qNz#5L%0E&=&2`9vv`NH^!l(7=lg+ zMOSn~cl>}K(F1kNuB@bdE7Gf)igSd!?_(*_+ zNQA^lf}}`>?w@6fzMsEjJ8ifX8i8u%6obvF@eiM5eZ zOod~Xo8zdj;CmERPz;U4#%O}32u3qBM+>w>E3`%%v_(5i*3=Yq6hqJnq3Db*=!$OW zjvw&ENk2tTu@`!y5Bj1X`eOj%I+=LbCT>SY4P?S_aRj~=i(src4&yNaEfuuFWN`|n zVj6zJ&zO!Gn2A}KjXC%Qzapm&<-&Y%0TyBrZn;Trkb=1JO2trNNLT%K+cc_bcsE_Z_01eRyjnM>65sYSNjuvQ%R%nejXp44ej}GXF z5OhK)I-?7^q8qy72jn!wxzJPWh2H3czUYVk7=VEoguxhsp%{kY7=e)(h0z#;u^5N( zn1G3xgvpqKshEbJ@H3`k24-Upe!;Jpi+Pxj1z3nhSd1lDie>1SDnJNUimR|1zoC2$ z0sh91@dNb0IR)o&0T*!zmvIGGaShjT12=ICw{Zt|(K=p$Hn=C=$52blFgy}}#~*l% zvZmBGcqTr_3%tZDyv7^6#h-YGzwkHS;{!e-Tz?FcOPNkQB*~94U|zsgN3JkT!XMbVw_vLwaPuXcK7+GK*P|71@v- zpCAW5MQ(hC&yfcs4fZJH6Z4}03gSx?LScM`uTca=Q4GaV0wqxjrBMcD@eRtMJSw0f zDxor}p*m{dTLhsdYN0mj;5*bsJ=DkdXn=-jgvMxsrU*teG)D`xL@TsL8?;3`v_}VY zL)JFs^+I*wm1jB;8)DWJj}-eEW{!##u6;WGAzdmti&p; z#&1}IwOEJs*no}Lgw5E3t=NX`*nyqch27YLz1WBSIDmsF?q({1BjQmU!*QIzNu0uI zoWWTSdhj@hF@dqB` z37+B^p5p~xqNi^3!W;1|{=_@{g}?D0AMg?3;sgkf2#APCh>R$RifD+A7+7NoT8r3X z9K=TgBt#-4MiL}NG9*U|q(myjHud6QgGM)^l1o+@8CA)I%*cYQ$cF6r1Uc|2av~SD zX=*z@7xUl? zXpau)h!Au_C_1AHx}qDp;|KhR9_Wc)=#4(;i+<>j0T_ru7>pqpieVUz5g3V47>zNQ zYRXT;cyR(IViK||_ym*1DVU0B_z6E_I%Z%dW??qw;1~Rgwtny44s*qMn2!Zmh(%b8 zB{*X09mP^{8J1%OR$>+6x{UF#MqG<^SdR_Zh)vjxE!c|LPH+x(h&! zcH@9}5QlIWzi8lB921XYt~d{Cyf>}IDFvr-4(D+J7jX%faRpa#4cBo4H*pKMu~_p< za8JCC2Y84__#J=XF`nQlp5ZxO;3Zz+HQwMY{=_@{g}?D0AMg?3^dLMUAR;0mGNK?V zqG2UgAtquWHsT;I;^B;M;Ae3OmyuXO5+p@3q(myDMjE6=I(%W+^CF{|37L@vS&4JD1#>s z{uJfJ@~D7{i0&yA169PTh%3fJd)?@O8VbHe5Ne_pYU7-fK99O$J=DkdXn=-jgvMxs zrU*teG)D`xL@TsL8?;3`v_}VYLcS@yIcGdyi(;gdMoIIzUYUM z7U@wKC=SA448c$g!*GniNQ}a0jKNrp!+1={F&yi8ggv`i-tjLD!_yjrdDRLqga^o|6jy(7Rd65tKQ2+(; zB?_T1zQWfif}$vf;wXWVD237}gR=Mrva@jK>5_#3W3{6imf5{DhyeD`|k; zm@dx1Ow7V;%)u}C6>~8U^RWP@+(M_ZP+Ww?Sb~@aHWrqPD-c_ZgVo}1ScA3LfQ{IM z&Desi*oN)cft}ce-PnV@*oXZ%fP*-M!#IMYIELfMoH{@joDxst49+6H?k2zm@ggqa zG6uV`hhUfKvl}-Q+{7*1#vR;6LXXNsxF_DnBm9m(@EA|<6n|;-Z#)y9;{{&g6<*^F z-r`TZ!(aFt@9_a25zg;L!y^JBA`&7a3Zfz!q9X=kA{JsJ4hnmSe1*7TJj6!=Bt#-4 zMiL}NG9*U|W8l6~v0DgvvOjsne(?R!0qd zi}oG~9S|heL@m@t9ejtnsE7La9u3eCjnEiP&=kRFhURF28vg0+TeK8gp*7l|E!v?y zI-ny$&>3BD#mQVncku@_NfDqadWyZ!8-36h{m|YpbwGb{00v?Z24e_@Vi<;F1V&;M zMq>=}xuE$mUYvl5n1sogf~lB>pYSuLV+Lko7Jk96n2ULsj|EtWMOcg_Sc+v>julvm zRalMRum)?f4(qW28?gzSu?1Uk&k*0oHgP+4U?+BAH}+sJ_F+E`;2;j+Fpl6Tj^Q{? z;3Q7rG|u2G&fz>R;36*JGOpk%uHiav;3jV2Htygq?%_Tj;2}!8cxCX1_!v*{6y+=) z7YJoo~6 zkq`M%O{3NErC11s@fE&C5v2F3n*qhe5-5pMD2*~Gi*Ha4Gd_j3Id7;14le9Dy&qOytFAaSX;{96BrL zg5el}$qJ@mrZ@{fi9cgHW`vbu7G`4(TACKE@Qe5>=3*WqTh^oC7Yp~V_|iWk6vARv zmS8ECVL4V{C01cIe#089#X77jSDi+EV7L(8xdtB~9TNr7|Xc_dUh5fUQ_k|G(BBLz|-6s| zI@Mk%U@~2o2CVTdU4~?tY!s1uxj{z8nK^Tl7=!$L_iBTAhF&K++7>@~CY*dlJl zHf+ZZ?8GkY#vbg&KJ3Q<9K<0U#!M$Y3&+IcIDwNmh0{2P^SFSExP;3nu4^T5O}vg9 zxQSc1jXSuDv6j4XcpyH+Bm9m(@EA|<6wmM+FYpqt@EWBZybS&n-{CL(jraI~j|k^4 z?7|}gA|etZBMPD-8e$?AVj~XXA|CEo#P1@$m;ecp2#JvdNs$c6kpd}^3aOC>X^{@; zkpUTz37L@v3th5B$S!_@9QYJDkqf!;89qlIe1W{khx{mjg7^}JP#9m~YZO6I6hm>8 zKuMHBX_P@(e1mc*j|!-WN~nw~sEWZBfFY1WMLYcIBELgNF$A3uiq7bQuIPsD_yIqn2YR9xdZQ2e zq96KW00v?Z24e_@Vi<;F1V&;MMq>=dVjRX}0w!V-CSwXN8SKmWN&FepF#|I(3$rl? zk^NdR3g(LQ&|e&Y`Qid>GBGz}vA6_Fu?)+x0xPi!tMMDwU@g{RJvLw?HeoZiU@Nv^ zJ9c0vc40U6U@!JzKMvp^4&gA4;3$saI8NXs&fqN0;XE$jA}--FuHY)J;W}>MCT`(2 z?%*!&;XWSVAs*p({DH@Kf~RxD>90ikQrH! z71@v-pCAW5MQ(hC&yfdTATRPEKMJ5AzC5Zny7`^sDtlN7xhpd-=hHr+Fc5<<7(*}=!!R5pFcPCM8e_1{ zpC)X_L~#=SFj*gCsyGcl;b%<849vtV%*Gu2f?tu=m+o{(>nmkCEL5-vxfOhdrQ$Ly z#|l(XP!X%e->?R2u@3980UNOio3RC3u?^d?13R$`yRip*u@C!k00%MNuc9X4hTK#v8oFpLmDA@HgJ$14_F*Wf0yi837Ry33V0JLsT&uq9X=kA{JsJ4pyuD z8{&%zkPwNG7)g*6$&ef=kP@ko8flOg>5v{7kP(@X8Cj4O+3=%Z5A;9|@l)hPF672% z*rv*MoWWTXP*4zGq7Vw>D}0S2D2iezjuI$|QYeiwNa_oFGL#d`qXH_T5-Ot#s-haI zqXxc35Ne_pYNHOmLtWHEEfcdgrurq)G&FMX#%Q8SQv{T3xR z;36*JGOpk%uHiav;3jV2HvaOp;BPz-AL0>y#~*l%CwPiyc#bocxwCj7zQilM#v8mv zdoM8^@VS%DgZBzP;3LAh1HvN$A|euso4_RyRg8w{h=G`hh1iILxQK^8z1qJ+d@%tM zA`ucJ36dfik|PCDA{A024bmbV!dr$TAfuQGnUMuqkqz1L33A|5Q9BjWHODaTt#Yn21T3 zj47CkY4{00V>)JFCT3wa=HM6nin*AFg;<2eSc0WkhUHj+l~{$<_zi2Y7AO4C!%3_Y z*JA@VViPuF3$|h#wqpl&;+m!9I`)Wru@C!k00(ghhj9c)aSX?C0w-|_r*Q^naSrEk z0T*!zmvIGGaShjT12=ICw{Zt|aS!+L01xp9zvB-)#uGfnGd#x&yu_at#&>ulz75-k zclZl`Bc+FHD!dmzpn==IA;KHF2#APCh>R$RifD+A7>J2jh>bXii+G5S1W1TPNQ@*% zieyNR6iA6wNR2c|i*!hj49JK~$c!w=ifqV^PmlwjA}4YoH$KDX$b;U#)bzm@VqWA! zeiT4Ke2GFRjIZ!Dil8Wpp*TvQBub$)%AhR1K{=F11yn>OR7Mq4MKx5%DUYYq2oh_e z7HXpozC&HqLw$UY255*zXpAOkieNNDbF@H9v_fmNL0hy#dvriYgrE~b5!-Z(gRWvX zymE`b#*bnT^h7W8Mj!M=KlH}{48$M|#t;m}Fbu~CjKnC6#u$vnIE=>xOvEHi#uQA& zH2j30Fɀ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 XvU$7qfdNVp*!<6{RZ7h@&h`HQdz%3c diff --git a/doc/doctrees/index.doctree b/doc/doctrees/index.doctree deleted file mode 100644 index 063112f0bb0a6c172a253f39970fc7cfaad61000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7785 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 v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -html_logo = "_static/pyslurm-docs.png" - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'PySlurmDoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'PySlurm.tex', 'PySlurm Documentation', - 'Mark Roberts, Giovanni Torres', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'pyslurm', 'PySlurm Documentation', - ['Mark Roberts, Giovanni Torres'], 1) -] - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index b76e46c6..00000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,118 +0,0 @@ -.. PySlurm documentation master file, created by - sphinx-quickstart on Thu Sep 8 18:50:27 2011. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -PySlurm: Slurm Interface to python -=================================== - -:Authors: Mark Roberts, Giovanni Torres -:Date: |today| -:Version: |version| - -This module provides a low-level Python wrapper around the Slurm C-API using Cython. - -Contents -======== - -.. toctree:: - :maxdepth: 2 - :numbered: - -Config Class -************ - -.. autoclass:: pyslurm.config - :members: - -FrontEnd Class -************** - -.. autoclass:: pyslurm.front_end - :members: - -HostList Class -************** - -.. autoclass:: pyslurm.hostlist - :members: - -Job Class -********* - -.. autoclass:: pyslurm.job - :members: - -JobStep Class -************* - -.. autoclass:: pyslurm.jobstep - :members: - -Node Class -********** - -.. autoclass:: pyslurm.node - :members: - -Partition Class -*************** - -.. autoclass:: pyslurm.partition - :members: - -Reservation Class -***************** - -.. autoclass:: pyslurm.reservation - :members: - -Slurmdb Events Class -******************** - -.. autoclass:: pyslurm.slurmdb_events - :members: - -Slurmdb Reservations Class -************************** - -.. autoclass:: pyslurm.slurmdb_reservations - :members: - -Slurmdb Clusters Class -********************** - -.. autoclass:: pyslurm.slurmdb_clusters - :members: - -Slurmdb Jobs Class -****************** - -.. autoclass:: pyslurm.slurmdb_jobs - :members: - -Statistics Class -**************** - -.. autoclass:: pyslurm.statistics - :members: - -Topology Class -************** - -.. autoclass:: pyslurm.topology - :members: - -Trigger Class -************* - -.. autoclass:: pyslurm.trigger - :members: - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/docs/index.md b/docs/index.md index e38049f5..a4917274 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,8 +2,6 @@ This module provides a low-level Python wrapper around the Slurm C-API using Cython. -## Contents - ::: pyslurm.config handler: python diff --git a/mkdocs.yml b/mkdocs.yml index eb7cfe49..7b42e623 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,14 @@ +site_name: pyslurm theme: name: "material" plugins: - search -- mkdocstrings \ No newline at end of file +- mkdocstrings: + handlers: + python: + options: + filters: ["!^_"] + docstring_style: sphinx + show_signature: false + show_root_heading: true \ No newline at end of file diff --git a/pyslurm/pyslurm.pyx b/pyslurm/pyslurm.pyx index 58e5e951..d008b5ab 100644 --- a/pyslurm/pyslurm.pyx +++ b/pyslurm/pyslurm.pyx @@ -274,10 +274,11 @@ ctypedef struct config_key_pair_t: def get_controllers(): - """Get information about slurm controllers. + """ + Get information about slurm controllers. :return: Name of primary controller, Name of backup controllers - :rtype: `tuple` + :rtype: tuple """ cdef: slurm.slurm_conf_t *slurm_ctl_conf_ptr = NULL @@ -305,12 +306,13 @@ def get_controllers(): def is_controller(Host=None): - """Return slurm controller status for host. + """ + Return slurm controller status for host. :param string Host: Name of host to check :returns: None, primary or backup - :rtype: `string` + :rtype: string """ control_machs = get_controllers() if not Host: @@ -326,10 +328,11 @@ def is_controller(Host=None): def slurm_api_version(): - """Return the slurm API version number. + """ + Return the slurm API version number. :returns: version_major, version_minor, version_micro - :rtype: `tuple` + :rtype: tuple """ cdef long version = slurm.SLURM_VERSION_NUMBER @@ -339,10 +342,11 @@ def slurm_api_version(): def slurm_load_slurmd_status(): - """Issue RPC to get and load the status of Slurmd daemon. + """ + Issue RPC to get and load the status of Slurmd daemon. :returns: Slurmd information - :rtype: `dict` + :rtype: dict """ cdef: dict Status = {}, Status_dict = {} @@ -391,7 +395,8 @@ def slurm_init(conf_file=None): slurm.slurm_init(NULL) def slurm_fini(): - """Call at process termination to cleanup internal configuration + """ + Call at process termination to cleanup internal configuration structures. :returns: None @@ -404,7 +409,9 @@ def slurm_fini(): # def get_private_data_list(data): - """Return the list of enciphered Private Data configuration.""" + """ + Return the list of enciphered Private Data configuration. + """ result = [] exponent = 7 @@ -420,7 +427,9 @@ def get_private_data_list(data): return result cdef class config: - """Class to access slurm config Information.""" + """ + Class to access slurm config Information. + """ cdef: slurm.slurm_conf_t *slurm_ctl_conf_ptr @@ -439,32 +448,36 @@ cdef class config: self.__free() def lastUpdate(self): - """Get the time (epoch seconds) the retrieved data was updated. + """ + Get the time (epoch seconds) the retrieved data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return the config IDs from retrieved data. + """ + Return the config IDs from retrieved data. :returns: Dictionary of config key IDs - :rtype: `dict` + :rtype: dict """ return self.__ConfigDict.keys() def find_id(self, char *keyID=''): - """Retrieve config ID data. - + """ + Retrieve config ID data. :param str keyID: Config key string to search :returns: Dictionary of values for given config key - :rtype: `dict` + :rtype: dict """ return self.__ConfigDict.get(keyID, {}) cdef void __free(self): - """Free memory allocated by slurm_load_ctl_conf.""" + """ + Free memory allocated by slurm_load_ctl_conf. + """ if self.__Config_ptr is not NULL: slurm.slurm_free_ctl_conf(self.__Config_ptr) self.__Config_ptr = NULL @@ -472,14 +485,17 @@ cdef class config: self.__lastUpdate = 0 def display_all(self): - """Print slurm control configuration information.""" + """ + Print slurm control configuration information. + """ slurm.slurm_print_ctl_conf(slurm.stdout, self.__Config_ptr) cdef int __load(self) except? -1: - """Load the slurm control configuration information. + """ + Load the slurm control configuration information. :returns: slurm error code - :rtype: `integer` + :rtype: integer """ cdef: slurm.slurm_conf_t *slurm_ctl_conf_ptr = NULL @@ -495,10 +511,11 @@ cdef class config: return errCode def key_pairs(self): - """Return a dict of the slurm control data as key pairs. + """ + Return a dict of the slurm control data as key pairs. :returns: Dictionary of slurm key-pair values - :rtype: `dict` + :rtype: dict """ cdef: void *ret_list = NULL @@ -534,10 +551,11 @@ cdef class config: return keyDict def get(self): - """Return the slurm control configuration information. + """ + Return the slurm control configuration information. :returns: Configuration data - :rtype: `dict` + :rtype: dict """ self.__load() self.__get() @@ -545,10 +563,11 @@ cdef class config: return self.__ConfigDict cpdef dict __get(self): - """Get the slurm control configuration information. + """ + Get the slurm control configuration information. :returns: Configuration data - :rtype: `dict` + :rtype: dict """ cdef: void *ret_list = NULL @@ -819,7 +838,9 @@ cdef class config: cdef class partition: - """Class to access/modify Slurm Partition Information.""" + """ + Class to access/modify Slurm Partition Information. + """ cdef: slurm.partition_info_msg_t *_Partition_ptr @@ -836,18 +857,20 @@ cdef class partition: pass def lastUpdate(self): - """Return time (epoch seconds) the partition data was updated. + """ + Return time (epoch seconds) the partition data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return the partition IDs from retrieved data. + """ + Return the partition IDs from retrieved data. :returns: Dictionary of partition IDs - :rtype: `dict` + :rtype: dict """ cdef: int rc @@ -872,21 +895,23 @@ cdef class partition: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, partID): - """Get partition information for a given partition. + """ + Get partition information for a given partition. :param str partID: Partition key string to search :returns: Dictionary of values for given partition - :rtype: `dict` + :rtype: dict """ return self.get().get(partID) def find(self, name='', val=''): - """Search for a property and associated value in the retrieved partition data. + """ + Search for a property and associated value in the retrieved partition data. :param str name: key string to search :param str value: value string to match :returns: List of IDs that match - :rtype: `list` + :rtype: list """ cdef: list retList = [] @@ -901,7 +926,8 @@ cdef class partition: return retList def print_info_msg(self, int oneLiner=0): - """Display the partition information from previous load partition method. + """ + Display the partition information from previous load partition method. :param int oneLiner: Display on one line (default=0) """ @@ -924,12 +950,13 @@ cdef class partition: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def delete(self, PartID): - """Delete a give slurm partition. + """ + Delete a give slurm partition. :param string PartID: Name of slurm partition :returns: 0 for success else set the slurm error code as appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.delete_part_msg_t part_msg @@ -948,10 +975,11 @@ cdef class partition: return errCode def get(self): - """Get all slurm partition information + """ + Get all slurm partition information :returns: Dictionary of dictionaries whose key is the partition name. - :rtype: `dict` + :rtype: dict """ cdef: int rc @@ -1126,36 +1154,39 @@ cdef class partition: def update(self, dict Partition_dict): - """Update a slurm partition. + """ + Update a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one is created by create_partition_dict :returns: 0 for success, -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef int errCode = slurm_update_partition(Partition_dict) return errCode def create(self, dict Partition_dict): - """Create a slurm partition. + """ + Create a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one can be created by create_partition_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef int errCode = slurm_create_partition(Partition_dict) return errCode def create_partition_dict(): - """Returns a dictionary that can be populated by the user + """ + Returns a dictionary that can be populated by the user and used for the update_partition and create_partition calls. :returns: Empty reservation dictionary - :rtype: `dict` + :rtype: dict """ return { 'Alternate': None, @@ -1177,13 +1208,14 @@ def create_partition_dict(): def slurm_create_partition(dict partition_dict): - """Create a slurm partition. + """ + Create a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one is created by create_partition_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.update_part_msg_t part_msg_ptr @@ -1208,13 +1240,14 @@ def slurm_create_partition(dict partition_dict): def slurm_update_partition(dict partition_dict): - """Update a slurm partition. + """ + Update a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one is created by create_partition_dict :returns: 0 for success, -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.update_part_msg_t part_msg_ptr @@ -1273,11 +1306,12 @@ def slurm_update_partition(dict partition_dict): def slurm_delete_partition(PartID): - """Delete a slurm partition. + """ + Delete a slurm partition. :param string PartID: Name of slurm partition :returns: 0 for success else set the slurm error code as appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.delete_part_msg_t part_msg @@ -1301,11 +1335,12 @@ def slurm_delete_partition(PartID): cpdef int slurm_ping(int Controller=0) except? -1: - """Issue RPC to check if slurmctld is responsive. + """ + Issue RPC to check if slurmctld is responsive. :param int Controller: 0 for primary (Default=0), 1 for backup, 2 for backup2, ... :returns: 0 for success or slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_ping(Controller) @@ -1318,10 +1353,11 @@ cpdef int slurm_ping(int Controller=0) except? -1: cpdef int slurm_reconfigure() except? -1: - """Issue RPC to have slurmctld reload its configuration file. + """ + Issue RPC to have slurmctld reload its configuration file. :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_reconfigure() @@ -1334,7 +1370,8 @@ cpdef int slurm_reconfigure() except? -1: cpdef int slurm_shutdown(uint16_t Options=0) except? -1: - """Issue RPC to have slurmctld cease operations. + """ + Issue RPC to have slurmctld cease operations. Both the primary and backup controller are shutdown. @@ -1343,7 +1380,7 @@ cpdef int slurm_shutdown(uint16_t Options=0) except? -1: 1 - slurmctld generates a core file 2 - slurmctld is shutdown (no core file) :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_shutdown(Options) @@ -1356,12 +1393,13 @@ cpdef int slurm_shutdown(uint16_t Options=0) except? -1: cpdef int slurm_takeover(int backup_inx) except? -1: - """Issue a RPC to have slurmctld backup controller take over. + """ + Issue a RPC to have slurmctld backup controller take over. The backup controller takes over the primary controller. :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_takeover(backup_inx) @@ -1370,11 +1408,12 @@ cpdef int slurm_takeover(int backup_inx) except? -1: cpdef int slurm_set_debug_level(uint32_t DebugLevel=0) except? -1: - """Set the slurm controller debug level. + """ + Set the slurm controller debug level. :param int DebugLevel: 0 (default) to 6 :returns: 0 for success, -1 for error and set slurm error number - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_set_debug_level(DebugLevel) @@ -1388,12 +1427,13 @@ cpdef int slurm_set_debug_level(uint32_t DebugLevel=0) except? -1: cpdef int slurm_set_debugflags(uint32_t debug_flags_plus=0, uint32_t debug_flags_minus=0) except? -1: - """Set the slurm controller debug flags. + """ + Set the slurm controller debug flags. :param int debug_flags_plus: debug flags to be added :param int debug_flags_minus: debug flags to be removed :returns: 0 for success, -1 for error and set slurm error number - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_set_debugflags(debug_flags_plus, @@ -1407,11 +1447,12 @@ cpdef int slurm_set_debugflags(uint32_t debug_flags_plus=0, cpdef int slurm_set_schedlog_level(uint32_t Enable=0) except? -1: - """Set the slurm scheduler debug level. + """ + Set the slurm scheduler debug level. :param int Enable: True = 0, False = 1 :returns: 0 for success, -1 for error and set the slurm error number - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_set_schedlog_level(Enable) @@ -1429,11 +1470,12 @@ cpdef int slurm_set_schedlog_level(uint32_t Enable=0) except? -1: cpdef int slurm_suspend(uint32_t JobID=0) except? -1: - """Suspend a running slurm job. + """ + Suspend a running slurm job. :param int JobID: Job identifier :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_suspend(JobID) @@ -1446,11 +1488,12 @@ cpdef int slurm_suspend(uint32_t JobID=0) except? -1: cpdef int slurm_resume(uint32_t JobID=0) except? -1: - """Resume a running slurm job step. + """ + Resume a running slurm job step. :param int JobID: Job identifier :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_resume(JobID) @@ -1463,11 +1506,12 @@ cpdef int slurm_resume(uint32_t JobID=0) except? -1: cpdef int slurm_requeue(uint32_t JobID=0, uint32_t State=0) except? -1: - """Requeue a running slurm job step. + """ + Requeue a running slurm job step. :param int JobID: Job identifier :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_requeue(JobID, State) @@ -1480,11 +1524,12 @@ cpdef int slurm_requeue(uint32_t JobID=0, uint32_t State=0) except? -1: cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1: - """Get the remaining time in seconds for a slurm job step. + """ + Get the remaining time in seconds for a slurm job step. :param int JobID: Job identifier :returns: Remaining time in seconds or -1 on error - :rtype: `long` + :rtype: long """ cdef int apiError = 0 cdef long errCode = slurm.slurm_get_rem_time(JobID) @@ -1497,11 +1542,12 @@ cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1: cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1: - """Get the end time in seconds for a slurm job step. + """ + Get the end time in seconds for a slurm job step. :param int JobID: Job identifier :returns: Remaining time in seconds or -1 on error - :rtype: `integer` + :rtype: integer """ cdef time_t EndTime = -1 cdef int apiError = 0 @@ -1515,11 +1561,12 @@ cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1: cpdef int slurm_job_node_ready(uint32_t JobID=0) except? -1: - """Return if a node could run a slurm job now if dispatched. + """ + Return if a node could run a slurm job now if dispatched. :param int JobID: Job identifier :returns: Node Ready code - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_job_node_ready(JobID) @@ -1528,12 +1575,13 @@ cpdef int slurm_job_node_ready(uint32_t JobID=0) except? -1: cpdef int slurm_signal_job(uint32_t JobID=0, uint16_t Signal=0) except? -1: - """Send a signal to a slurm job step. + """ + Send a signal to a slurm job step. :param int JobID: Job identifier :param int Signal: Signal to send (default=0) :returns: 0 for success or -1 for error and the set Slurm errno - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_signal_job(JobID, Signal) @@ -1552,13 +1600,14 @@ cpdef int slurm_signal_job(uint32_t JobID=0, uint16_t Signal=0) except? -1: cpdef int slurm_signal_job_step(uint32_t JobID=0, uint32_t JobStep=0, uint16_t Signal=0) except? -1: - """Send a signal to a slurm job step. + """ + Send a signal to a slurm job step. :param int JobID: Job identifier :param int JobStep: Job step identifier :param int Signal: Signal to send (default=0) :returns: Error code - 0 for success or -1 for error and set the slurm errno - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_signal_job_step(JobID, JobStep, Signal) @@ -1572,13 +1621,14 @@ cpdef int slurm_signal_job_step(uint32_t JobID=0, uint32_t JobStep=0, cpdef int slurm_kill_job(uint32_t JobID=0, uint16_t Signal=0, uint16_t BatchFlag=0) except? -1: - """Terminate a running slurm job step. + """ + Terminate a running slurm job step. :param int JobID: Job identifier :param int Signal: Signal to send :param int BatchFlag: Job batch flag (default=0) :returns: 0 for success or -1 for error and set slurm errno - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_kill_job(JobID, Signal, BatchFlag) @@ -1592,13 +1642,14 @@ cpdef int slurm_kill_job(uint32_t JobID=0, uint16_t Signal=0, cpdef int slurm_kill_job_step(uint32_t JobID=0, uint32_t JobStep=0, uint16_t Signal=0) except? -1: - """Terminate a running slurm job step. + """ + Terminate a running slurm job step. :param int JobID: Job identifier :param int JobStep: Job step identifier :param int Signal: Signal to send (default=0) :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_kill_job_step(JobID, JobStep, Signal) @@ -1612,14 +1663,15 @@ cpdef int slurm_kill_job_step(uint32_t JobID=0, uint32_t JobStep=0, cpdef int slurm_kill_job2(const char *JobID='', uint16_t Signal=0, uint16_t BatchFlag=0, char* sibling=NULL) except? -1: - """Terminate a running slurm job step. + """ + Terminate a running slurm job step. :param const char * JobID: Job identifier :param int Signal: Signal to send :param int BatchFlag: Job batch flag (default=0) :param string sibling: optional string of sibling cluster to send the message to :returns: 0 for success or -1 for error and set slurm errno - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_kill_job2(JobID, Signal, BatchFlag, sibling) @@ -1632,12 +1684,13 @@ cpdef int slurm_kill_job2(const char *JobID='', uint16_t Signal=0, cpdef int slurm_complete_job(uint32_t JobID=0, uint32_t JobCode=0) except? -1: - """Complete a running slurm job step. + """ + Complete a running slurm job step. :param int JobID: Job identifier :param int JobCode: Return code (default=0) :returns: 0 for success or -1 for error and set slurm errno - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_complete_job(JobID, JobCode) @@ -1650,12 +1703,13 @@ cpdef int slurm_complete_job(uint32_t JobID=0, uint32_t JobCode=0) except? -1: cpdef int slurm_notify_job(uint32_t JobID=0, char* Msg='') except? -1: - """Notify a message to a running slurm job step. + """ + Notify a message to a running slurm job step. :param string JobID: Job identifier (default=0) :param string Msg: Message string to send to job :returns: 0 for success or -1 on error - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 @@ -1669,13 +1723,14 @@ cpdef int slurm_notify_job(uint32_t JobID=0, char* Msg='') except? -1: cpdef int slurm_terminate_job_step(uint32_t JobID=0, uint32_t JobStep=0) except? -1: - """Terminate a running slurm job step. + """ + Terminate a running slurm job step. :param int JobID: Job identifier (default=0) :param int JobStep: Job step identifier (default=0) :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef int apiError = 0 cdef int errCode = slurm.slurm_terminate_job_step(JobID, JobStep) @@ -1692,7 +1747,9 @@ cpdef int slurm_terminate_job_step(uint32_t JobID=0, uint32_t JobStep=0) except? cdef class job: - """Class to access/modify Slurm Job Information.""" + """ + Class to access/modify Slurm Job Information. + """ cdef: slurm.job_info_msg_t *_job_ptr @@ -1712,26 +1769,29 @@ cdef class job: pass def lastUpdate(self): - """Get the time (epoch seconds) the job data was updated. + """ + Get the time (epoch seconds) the job data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def lastBackfill(self): - """Get the time (epoch seconds) of last backfilling run. + """ + Get the time (epoch seconds) of last backfilling run. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastBackfill cpdef ids(self): - """Return the job IDs from retrieved data. + """ + Return the job IDs from retrieved data. :returns: Dictionary of job IDs - :rtype: `dict` + :rtype: dict """ cdef: @@ -1754,12 +1814,13 @@ cdef class job: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find(self, name='', val=''): - """Search for a property and associated value in the retrieved job data. + """ + Search for a property and associated value in the retrieved job data. :param str name: key string to search :param str value: value string to match :returns: List of IDs that match - :rtype: `list` + :rtype: list """ cdef: list retList = [] @@ -1809,7 +1870,8 @@ cdef class job: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, jobid): - """Retrieve job ID data. + """ + Retrieve job ID data. This method accepts both string and integer formats of the jobid. This works for single jobs and job arrays. It uses the internal @@ -1818,20 +1880,21 @@ cdef class job: :param str jobid: Job id key string to search :returns: List of dictionary of values for given job id - :rtype: `list` + :rtype: list """ self._load_single_job(jobid) return list(self.get_job_ptr().values()) def find_user(self, user): - """Retrieve a user's job data. + """ + Retrieve a user's job data. This method calls slurm_load_job_user to get all job_table records associated with a specific user. :param str user: User string to search :returns: Dictionary of values for all user's jobs - :rtype: `dict` + :rtype: dict """ cdef: int apiError @@ -1855,13 +1918,14 @@ cdef class job: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cpdef get(self): - """Get all slurm jobs information. + """ + Get all slurm jobs information. This method calls slurm_load_jobs to get job_table records for all jobs :returns: Data where key is the job name, each entry contains a dictionary of job attributes - :rtype: `dict` + :rtype: dict """ cdef: int apiError @@ -1876,10 +1940,11 @@ cdef class job: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cdef dict get_job_ptr(self): - """Convert all job arrays in buffer to dictionary. + """ + Convert all job arrays in buffer to dictionary. :returns: dictionary of job attributes - :rtype: `dict` + :rtype: dict """ cdef: char time_str[32] @@ -2211,11 +2276,12 @@ cdef class job: return self._JobDict cpdef int __cpus_allocated_on_node_id(self, int nodeID=0): - """Get the number of cpus allocated to a job on a node by node name. + """ + Get the number of cpus allocated to a job on a node by node name. :param int nodeID: Numerical node ID :returns: Num of CPUs allocated to job on this node or -1 on error - :rtype: `integer` + :rtype: integer """ cdef: slurm.job_resources_t *job_resrcs_ptr = self._record.job_resrcs @@ -2224,11 +2290,12 @@ cdef class job: return retval cdef int __cpus_allocated_on_node(self, char* nodeName=''): - """Get the number of cpus allocated to a slurm job on a node by node name. + """ + Get the number of cpus allocated to a slurm job on a node by node name. :param string nodeName: Name of node :returns: Num of CPUs allocated to job on this node or -1 on error - :rtype: `integer` + :rtype: integer """ cdef: slurm.job_resources_t *job_resrcs_ptr = self._record.job_resrcs @@ -2237,11 +2304,12 @@ cdef class job: return retval cdef list __cpus_allocated_list_on_node(self, char* nodeName=''): - """Get a list of cpu ids allocated to current slurm job on a node by node name. + """ + Get a list of cpu ids allocated to current slurm job on a node by node name. :param string nodeName: Name of node :returns: list of allocated cpus (empty, if nothing found or error) - :rtype: `list` + :rtype: list """ cdef: int error = 0 @@ -2262,11 +2330,12 @@ cdef class job: return cpus_list def __unrange(self, bit_str): - """converts a string describing a bitmap (from slurm_job_cpus_allocated_str_on_node()) to a list. + """ + converts a string describing a bitmap (from slurm_job_cpus_allocated_str_on_node()) to a list. :param string bit_str: string describing a bitmap (e.g. "0-30,45,50-60") :returns: list referring to bitmap (empty if not succesful) - :rtype: `list` + :rtype: list """ r_list = [] @@ -2284,12 +2353,15 @@ cdef class job: return r_list cpdef __free(self): - """Release the storage generated by the slurm_get_job_steps function.""" + """ + Release the storage generated by the slurm_get_job_steps function. + """ if self._job_ptr is not NULL: slurm.slurm_free_job_info_msg(self._job_ptr) cpdef print_job_info_msg(self, int oneLiner=0): - """Print the data structure describing all job step records. + """ + Print the data structure describing all job step records. The job step records are loaded by the slurm_get_job_steps function. @@ -2314,15 +2386,15 @@ cdef class job: """ Return the contents of the batch-script for a Job. - Note: The string returned also includes all the "\n" characters - (new-line). + Note: The string returned also includes all the "\\n" characters + (new-line). :param jobid: ID of the Job for which the script should be retrieved. :type jobid: Union[str, int] :raises: [ValueError]: When retrieving the Batch-Script for the Job was not successful. :returns: The content of the batch script. - :rtype: `str` + :rtype: str """ # This reimplements the slurm_job_batch_script API call. Otherwise we # would have to parse the FILE* ptr we get from it back into a @@ -2744,7 +2816,9 @@ cdef class job: return 0 cdef int envcount(self, char **env): - """Return the number of elements in the environment `env`.""" + """ + Return the number of elements in the environment `env`. + """ cdef int envc = 0 while (env[envc] != NULL): envc += 1 @@ -2791,7 +2865,8 @@ cdef class job: return rc def submit_batch_job(self, job_opts): - """Submit batch job. + """ + Submit batch job. * make sure options match sbatch command line opts and not struct member names. """ cdef: @@ -2959,7 +3034,7 @@ cdef class job: To reference a job with job array set, use the first/"master" jobid (the same as given by squeue) :returns: The exit code of the slurm job. - :rtype: `int` + :rtype: int """ exit_status = -9999 complete = False @@ -2985,13 +3060,14 @@ cdef class job: def slurm_pid2jobid(uint32_t JobPID=0): - """Get the slurm job id from a process id. + """ + Get the slurm job id from a process id. :param int JobPID: Job process id :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer :returns: Job Identifier - :rtype: `integer` + :rtype: integer """ cdef: uint32_t JobID = 0 @@ -3006,14 +3082,15 @@ def slurm_pid2jobid(uint32_t JobPID=0): cdef secs2time_str(uint32_t time): - """Convert seconds to Slurm string format. + """ + Convert seconds to Slurm string format. This method converts time in seconds (86400) to Slurm's string format (1-00:00:00). :param int time: time in seconds :returns: time string - :rtype: `str` + :rtype: str """ cdef: char *time_str @@ -3037,14 +3114,15 @@ cdef secs2time_str(uint32_t time): cdef mins2time_str(uint32_t time): - """Convert minutes to Slurm string format. + """ + Convert minutes to Slurm string format. This method converts time in minutes (14400) to Slurm's string format (10-00:00:00). :param int time: time in minutes :returns: time string - :rtype: `str` + :rtype: str """ cdef: double days, hours, minutes, seconds @@ -3086,10 +3164,11 @@ class SlurmError(Exception): def slurm_get_errno(): - """Return the slurm error as set by a slurm API call. + """ + Return the slurm error as set by a slurm API call. :returns: slurm error number - :rtype: `integer` + :rtype: integer """ cdef int errNum = slurm.slurm_get_errno() @@ -3097,11 +3176,12 @@ def slurm_get_errno(): def slurm_strerror(int Errno=0): - """Return slurm error message represented by a given slurm error number. + """ + Return slurm error message represented by a given slurm error number. :param int Errno: slurm error number. :returns: slurm error string - :rtype: `string` + :rtype: string """ cdef char* errMsg = slurm.slurm_strerror(Errno) @@ -3109,7 +3189,8 @@ def slurm_strerror(int Errno=0): def slurm_seterrno(int Errno=0): - """Set the slurm error number. + """ + Set the slurm error number. :param int Errno: slurm error number """ @@ -3117,7 +3198,8 @@ def slurm_seterrno(int Errno=0): def slurm_perror(char* Msg=''): - """Print to standard error the supplied header. + """ + Print to standard error the supplied header. Header is followed by a colon, followed by a text description of the last Slurm error code generated. @@ -3134,7 +3216,9 @@ def slurm_perror(char* Msg=''): cdef class node: - """Class to access/modify/update Slurm Node Information.""" + """ + Class to access/modify/update Slurm Node Information. + """ cdef: slurm.node_info_msg_t *_Node_ptr @@ -3153,18 +3237,20 @@ cdef class node: pass def lastUpdate(self): - """Return last time (epoch seconds) the node data was updated. + """ + Return last time (epoch seconds) the node data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate cpdef ids(self): - """Return the node IDs from retrieved data. + """ + Return the node IDs from retrieved data. :returns: Dictionary of node IDs - :rtype: `dict` + :rtype: dict """ cdef: int rc @@ -3186,19 +3272,21 @@ cdef class node: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) def find_id(self, nodeID): - """Get node information for a given node. + """ + Get node information for a given node. :param str nodeID: Node key string to search :returns: Dictionary of values for given node - :rtype: `dict` + :rtype: dict """ return list(self.get_node(nodeID).values())[0] def get(self): - """Get all slurm node information. + """ + Get all slurm node information. :returns: Dictionary of dictionaries whose key is the node name. - :rtype: `dict` + :rtype: dict """ return self.get_node(None) @@ -3207,11 +3295,12 @@ cdef class node: return re.split(r',(?![^(]*\))', gres_str) def get_node(self, nodeID): - """Get single slurm node information. + """ + Get single slurm node information. :param str nodeID: Node key string to search. Default NULL. :returns: Dictionary of give node info data. - :rtype: `dict` + :rtype: dict """ cdef: int rc @@ -3435,18 +3524,20 @@ cdef class node: cpdef update(self, dict node_dict): - """Update slurm node information. + """ + Update slurm node information. :param dict node_dict: A populated node dictionary, an empty one is created by create_node_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ return slurm_update_node(node_dict) cpdef print_node_info_msg(self, int oneLiner=False): - """Output information about all slurm nodes. + """ + Output information about all slurm nodes. :param int oneLiner: Print on one line - False (Default) or True """ @@ -3467,13 +3558,14 @@ cdef class node: def slurm_update_node(dict node_dict): - """Update slurm node information. + """ + Update slurm node information. :param dict node_dict: A populated node dictionary, an empty one is created by create_node_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.update_node_msg_t node_msg @@ -3519,13 +3611,14 @@ def slurm_update_node(dict node_dict): def create_node_dict(): - """Return a an update_node dictionary + """ + Return a an update_node dictionary This dictionary can be populated by the user and used for the update_node call. :returns: Empty node dictionary - :rtype: `dict` + :rtype: dict """ return { 'node_names': None, @@ -3543,7 +3636,9 @@ def create_node_dict(): cdef class jobstep: - """Class to access/modify Slurm Jobstep Information.""" + """ + Class to access/modify Slurm Jobstep Information. + """ cdef: slurm.time_t _lastUpdate @@ -3562,16 +3657,19 @@ cdef class jobstep: self.__destroy() cpdef __destroy(self): - """Free the slurm job memory allocated by load jobstep method.""" + """ + Free the slurm job memory allocated by load jobstep method. + """ self._lastUpdate = 0 self._ShowFlags = 0 self._JobStepDict = {} def lastUpdate(self): - """Get the time (epoch seconds) the jobstep data was updated. + """ + Get the time (epoch seconds) the jobstep data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate @@ -3600,17 +3698,19 @@ cdef class jobstep: return retDict cpdef get(self): - """Get slurm jobstep information. + """ + Get slurm jobstep information. :returns: Data whose key is the jobstep ID. - :rtype: `dict` + :rtype: dict """ self.__get() return self._JobStepDict cpdef __get(self): - """Load details about job steps. + """ + Load details about job steps. This method loads details about job steps that satisfy the job_id and/or step_id specifications provided if the data has been updated @@ -3620,7 +3720,7 @@ cdef class jobstep: :param int StepID: Jobstep Identifier :param int ShowFlags: Display flags (Default=0) :returns: Data whose key is the job and step ID - :rtype: `dict` + :rtype: dict """ cdef: slurm.job_step_info_response_msg_t *job_step_info_ptr = NULL @@ -3738,12 +3838,13 @@ cdef class jobstep: self._JobStepDict = Steps cpdef layout(self, uint32_t JobID=0, uint32_t StepID=0): - """Get the slurm job step layout from a given job and step id. + """ + Get the slurm job step layout from a given job and step id. :param int JobID: slurm job id (Default=0) :param int StepID: slurm step id (Default=0) :returns: List of job step layout. - :rtype: `list` + :rtype: list """ cdef: slurm.slurm_step_id_t step_id @@ -3797,7 +3898,9 @@ cdef class jobstep: cdef class hostlist: - """Wrapper class for Slurm hostlist functions.""" + """ + Wrapper class for Slurm hostlist functions. + """ cdef slurm.hostlist_t hl @@ -3827,7 +3930,8 @@ cdef class hostlist: return slurm.slurm_hostlist_count(self.hl) cpdef get_list(self): - """Get the list of hostnames composing the hostlist. + """ + Get the list of hostnames composing the hostlist. For example with a hostlist created with "tux[1-3]" -> [ 'tux1', tux2', 'tux3' ]. @@ -3919,11 +4023,12 @@ cdef class hostlist: cdef class trigger: def set(self, dict trigger_dict): - """Set or create a slurm trigger. + """ + Set or create a slurm trigger. :param dict trigger_dict: A populated dictionary of trigger information :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.trigger_info_t trigger_set @@ -3995,10 +4100,11 @@ cdef class trigger: return 0 def get(self): - """Get the information on slurm triggers. + """ + Get the information on slurm triggers. :returns: Where key is the trigger ID - :rtype: `dict` + :rtype: dict """ cdef: slurm.trigger_info_msg_t *trigger_get = NULL @@ -4026,13 +4132,14 @@ cdef class trigger: return Triggers def clear(self, TriggerID=0, UserID=slurm.NO_VAL, ID=0): - """Clear or remove a slurm trigger. + """ + Clear or remove a slurm trigger. :param string TriggerID: Trigger Identifier :param string UserID: User Identifier :param string ID: Job Identifier :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ cdef: slurm.trigger_info_t trigger_clear @@ -4063,7 +4170,9 @@ cdef class trigger: cdef class reservation: - """Class to access/update/delete slurm reservation Information.""" + """ + Class to access/update/delete slurm reservation Information. + """ cdef: slurm.reserve_info_msg_t *_Res_ptr @@ -4081,37 +4190,41 @@ cdef class reservation: self.__free() def lastUpdate(self): - """Get the time (epoch seconds) the reservation data was updated. + """ + Get the time (epoch seconds) the reservation data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return a list of reservation IDs from retrieved data. + """ + Return a list of reservation IDs from retrieved data. :returns: Dictionary of reservation IDs - :rtype: `dict` + :rtype: dict """ return self._ResDict.keys() def find_id(self, resID): - """Retrieve reservation ID data. + """ + Retrieve reservation ID data. :param str resID: Reservation key string to search :returns: Dictionary of values for given reservation key - :rtype: `dict` + :rtype: dict """ return self._ResDict.get(resID, {}) def find(self, name='', val=''): - """Search for property and associated value in reservation data. + """ + Search for property and associated value in reservation data. :param str name: key string to search :param str value: value string to match :returns: List of IDs that match - :rtype: `list` + :rtype: list """ # [ key for key, value in self._ResDict.items() if self._ResDict[key]['state'] == 'error'] @@ -4127,7 +4240,9 @@ cdef class reservation: self.__load() cdef int __load(self) except? -1: - """Load slurm reservation information.""" + """ + Load slurm reservation information. + """ cdef: slurm.reserve_info_msg_t *new_reserve_info_ptr = NULL @@ -4157,16 +4272,19 @@ cdef class reservation: return errCode cdef __free(self): - """Free slurm reservation pointer.""" + """ + Free slurm reservation pointer. + """ if self._Res_ptr is not NULL: slurm.slurm_free_reservation_info_msg(self._Res_ptr) def get(self): - """Get slurm reservation information. + """ + Get slurm reservation information. :returns: Data whose key is the Reservation ID - :rtype: `dict` + :rtype: dict """ self.load() self.__get() @@ -4207,27 +4325,32 @@ cdef class reservation: self._ResDict = Reservations def create(self, dict reservation_dict={}): - """Create slurm reservation.""" + """ + Create slurm reservation. + """ return slurm_create_reservation(reservation_dict) def delete(self, ResID): - """Delete slurm reservation. + """ + Delete slurm reservation. :returns: 0 for success or a slurm error code - :rtype: `integer` + :rtype: integer """ return slurm_delete_reservation(ResID) def update(self, dict reservation_dict={}): - """Update a slurm reservation attributes. + """ + Update a slurm reservation attributes. :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ return slurm_update_reservation(reservation_dict) def print_reservation_info_msg(self, int oneLiner=0): - """Output information about all slurm reservations. + """ + Output information about all slurm reservations. :param int Flags: Print on one line - 0 (Default) or 1 """ @@ -4241,13 +4364,14 @@ cdef class reservation: def slurm_create_reservation(dict reservation_dict={}): - """Create a slurm reservation. + """ + Create a slurm reservation. :param dict reservation_dict: A populated reservation dictionary, an empty one is created by create_reservation_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `string` + :rtype: string """ cdef: slurm.resv_desc_msg_t resv_msg @@ -4341,13 +4465,14 @@ def slurm_create_reservation(dict reservation_dict={}): return resID def slurm_update_reservation(dict reservation_dict={}): - """Update a slurm reservation. + """ + Update a slurm reservation. :param dict reservation_dict: A populated reservation dictionary, an empty one is created by create_reservation_dict :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef: slurm.resv_desc_msg_t resv_msg @@ -4435,11 +4560,12 @@ def slurm_update_reservation(dict reservation_dict={}): def slurm_delete_reservation(ResID): - """Delete a slurm reservation. + """ + Delete a slurm reservation. :param string ResID: Reservation Identifier :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. - :rtype: `integer` + :rtype: integer """ cdef slurm.reservation_name_msg_t resv_msg @@ -4460,13 +4586,14 @@ def slurm_delete_reservation(ResID): def create_reservation_dict(): - """Create and empty dict for use with create_reservation method. + """ + Create and empty dict for use with create_reservation method. Returns a dictionary that can be populated by the user an used for the update_reservation and create_reservation calls. :returns: Empty Reservation dictionary - :rtype: `dict` + :rtype: dict """ return { 'start_time': 0, @@ -4490,7 +4617,9 @@ def create_reservation_dict(): cdef class topology: - """Class to access/update slurm topology information.""" + """ + Class to access/update slurm topology information. + """ cdef: slurm.topo_info_response_msg_t *_topo_info_ptr @@ -4504,24 +4633,31 @@ cdef class topology: self.__free() def lastUpdate(self): - """Get the time (epoch seconds) the retrieved data was updated. + """ + Get the time (epoch seconds) the retrieved data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate cpdef __free(self): - """Free the memory returned by load method.""" + """ + Free the memory returned by load method. + """ if self._topo_info_ptr is not NULL: slurm.slurm_free_topo_info_msg(self._topo_info_ptr) def load(self): - """Load slurm topology information.""" + """ + Load slurm topology information. + """ self.__load() cpdef int __load(self) except? -1: - """Load slurm topology.""" + """ + Load slurm topology. + """ cdef int apiError = 0 cdef int errCode = 0 @@ -4537,10 +4673,11 @@ cdef class topology: return errCode def get(self): - """Get slurm topology information. + """ + Get slurm topology information. :returns: Dictionary whose key is the Topology ID - :rtype: `dict` + :rtype: dict """ self.__load() self.__get() @@ -4570,11 +4707,14 @@ cdef class topology: self._TopoDict = Topo def display(self): - """Display topology information to standard output.""" + """ + Display topology information to standard output. + """ self._print_topo_info_msg() cpdef _print_topo_info_msg(self): - """Output information about topology based upon message as loaded using slurm_load_topo. + """ + Output information about topology based upon message as loaded using slurm_load_topo. :param int Flags: Print on one line - False (Default), True """ @@ -4605,9 +4745,10 @@ cdef class statistics: pass cpdef dict get(self): - """Get slurm statistics information. + """ + Get slurm statistics information. - :rtype: `dict` + :rtype: dict """ cdef: int errCode @@ -4704,7 +4845,8 @@ cdef class statistics: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cpdef int reset(self): - """Reset scheduling statistics + """ + Reset scheduling statistics This method required root privileges. """ @@ -4981,7 +5123,9 @@ cdef class statistics: cdef class front_end: - """Class to access/update slurm front end node information.""" + """ + Class to access/update slurm front end node information. + """ cdef: slurm.time_t Time @@ -5001,16 +5145,22 @@ cdef class front_end: self.__destroy() cpdef __destroy(self): - """Free the memory allocated by load front end node method.""" + """ + Free the memory allocated by load front end node method. + """ if self._FrontEndNode_ptr is not NULL: slurm.slurm_free_front_end_info_msg(self._FrontEndNode_ptr) def load(self): - """Load slurm front end node information.""" + """ + Load slurm front end node information. + """ self.__load() cdef int __load(self) except? -1: - """Load slurm front end node.""" + """ + Load slurm front end node. + """ cdef: # slurm.front_end_info_msg_t *new_FrontEndNode_ptr = NULL time_t last_time = NULL @@ -5031,26 +5181,29 @@ cdef class front_end: return errCode def lastUpdate(self): - """Return last time (sepoch seconds) the node data was updated. + """ + Return last time (sepoch seconds) the node data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return the node IDs from retrieved data. + """ + Return the node IDs from retrieved data. :returns: Dictionary of node IDs - :rtype: `dict` + :rtype: dict """ return list(self._FrontEndDict.keys()) def get(self): - """Get front end node information. + """ + Get front end node information. :returns: Dictionary whose key is the Topology ID - :rtype: `dict` + :rtype: dict """ self.__load() self.__get() @@ -5093,7 +5246,9 @@ cdef class front_end: cdef class qos: - """Class to access/update slurm QOS information.""" + """ + Class to access/update slurm QOS information. + """ cdef: void *dbconn @@ -5108,16 +5263,22 @@ cdef class qos: self.__destroy() cdef __destroy(self): - """QOS Destructor method.""" + """ + QOS Destructor method. + """ self._QOSDict = {} def load(self): - """Load slurm QOS information.""" + """ + Load slurm QOS information. + """ self.__load() cdef int __load(self) except? -1: - """Load slurm QOS list.""" + """ + Load slurm QOS list. + """ cdef: slurm.slurmdb_qos_cond_t *new_qos_cond = NULL int apiError = 0 @@ -5134,26 +5295,29 @@ cdef class qos: return 0 def lastUpdate(self): - """Return last time (sepoch seconds) the QOS data was updated. + """ + Return last time (sepoch seconds) the QOS data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return the QOS IDs from retrieved data. + """ + Return the QOS IDs from retrieved data. :returns: Dictionary of QOS IDs - :rtype: `dict` + :rtype: dict """ return self._QOSDict.keys() def get(self): - """Get slurm QOS information. + """ + Get slurm QOS information. :returns: Dictionary whose key is the QOS ID - :rtype: `dict` + :rtype: dict """ self.__load() self.__get() @@ -5233,7 +5397,9 @@ cdef class qos: # slurmdbd jobs Class # cdef class slurmdb_jobs: - """Class to access Slurmdbd Jobs information.""" + """ + Class to access Slurmdbd Jobs information. + """ cdef: void* db_conn @@ -5248,7 +5414,8 @@ cdef class slurmdb_jobs: slurm.slurmdb_connection_close(&self.db_conn) def get(self, jobids=[], userids=[], starttime=0, endtime=0, flags = None, db_flags = None, clusters = []): - """Get Slurmdb information about some jobs. + """ + Get Slurmdb information about some jobs. Input formats for start and end times: * today or tomorrow @@ -5265,7 +5432,7 @@ cdef class slurmdb_jobs: :param starttime: Select jobs eligible after this timestamp :param endtime: Select jobs eligible before this timestamp :returns: Dictionary whose key is the JOBS ID - :rtype: `dict` + :rtype: dict """ cdef: int i = 0 @@ -5488,7 +5655,9 @@ cdef class slurmdb_jobs: # slurmdbd Reservations Class # cdef class slurmdb_reservations: - """Class to access Slurmdbd reservations information.""" + """ + Class to access Slurmdbd reservations information. + """ cdef: void *dbconn @@ -5501,7 +5670,8 @@ cdef class slurmdb_reservations: slurm.slurmdb_destroy_reservation_cond(self.reservation_cond) def set_reservation_condition(self, start_time, end_time): - """Limit the next get() call to reservations that start after and before a certain time. + """ + Limit the next get() call to reservations that start after and before a certain time. :param start_time: Select reservations that start after this timestamp :param end_time: Select reservations that end before this timestamp @@ -5517,10 +5687,11 @@ cdef class slurmdb_reservations: raise MemoryError() def get(self): - """Get slurm reservations information. + """ + Get slurm reservations information. :returns: Dictionary whose keys are the reservations ids - :rtype: `dict` + :rtype: dict """ cdef: slurm.List reservation_list @@ -5589,7 +5760,9 @@ cdef class slurmdb_reservations: # slurmdbd clusters Class # cdef class slurmdb_clusters: - """Class to access Slurmdbd Clusters information.""" + """ + Class to access Slurmdbd Clusters information. + """ cdef: void *db_conn @@ -5605,7 +5778,8 @@ cdef class slurmdb_clusters: slurm.slurmdb_connection_close(&self.db_conn) def set_cluster_condition(self, start_time, end_time): - """Limit the next get() call to clusters that existed after and before + """ + Limit the next get() call to clusters that existed after and before a certain time. :param start_time: Select clusters that existed after this timestamp @@ -5624,10 +5798,11 @@ cdef class slurmdb_clusters: raise MemoryError() def get(self): - """Get slurm clusters information. + """ + Get slurm clusters information. :returns: Dictionary whose keys are the clusters ids - :rtype: `dict` + :rtype: dict """ cdef: slurm.List clusters_list @@ -5705,7 +5880,9 @@ cdef class slurmdb_clusters: # slurmdbd Events Class # cdef class slurmdb_events: - """Class to access Slurmdbd events information.""" + """ + Class to access Slurmdbd events information. + """ cdef: void *dbconn @@ -5718,7 +5895,8 @@ cdef class slurmdb_events: slurm.slurmdb_destroy_event_cond(self.event_cond) def set_event_condition(self, start_time, end_time): - """Limit the next get() call to conditions that existed after and before a certain time. + """ + Limit the next get() call to conditions that existed after and before a certain time. :param start_time: Select conditions that existed after this timestamp :param end_time: Select conditions that existed before this timestamp @@ -5734,10 +5912,11 @@ cdef class slurmdb_events: raise MemoryError() def get(self): - """Get slurm events information. + """ + Get slurm events information. :returns: Dictionary whose keys are the events ids - :rtype: `dict` + :rtype: dict """ cdef: slurm.List event_list @@ -5783,7 +5962,9 @@ cdef class slurmdb_events: # cdef class slurmdb_reports: - """Class to access Slurmdbd reports.""" + """ + Class to access Slurmdbd reports. + """ cdef: void *db_conn @@ -5888,12 +6069,13 @@ cdef class slurmdb_reports: def get_last_slurm_error(): - """Get and return the last error from a slurm API call. + """ + Get and return the last error from a slurm API call. :returns: Slurm error number and the associated error string - :rtype: `integer` + :rtype: integer :returns: Slurm error string - :rtype: `string` + :rtype: string """ rc = slurm.slurm_get_errno() @@ -5903,11 +6085,12 @@ def get_last_slurm_error(): return (rc, slurm.stringOrNone(slurm.slurm_strerror(rc), '')) cdef inline dict __get_licenses(char *licenses): - """Returns a dict of licenses from the slurm license string. + """ + Returns a dict of licenses from the slurm license string. :param string licenses: String containing license information :returns: Dictionary of licenses and associated value. - :rtype: `dict` + :rtype: dict """ if (licenses is NULL): return {} @@ -5931,17 +6114,19 @@ cdef inline dict __get_licenses(char *licenses): def get_node_use(inx): - """Returns a string that represents the block node mode. + """ + Returns a string that represents the block node mode. :param int ResType: Slurm block node usage :returns: Block node usage string - :rtype: `string` + :rtype: string """ return slurm.slurm_node_state_string(inx) def get_trigger_res_type(uint16_t inx): - """Returns a string that represents the slurm trigger res type. + """ + Returns a string that represents the slurm trigger res type. :param int ResType: Slurm trigger res state - TRIGGER_RES_TYPE_JOB 1 @@ -5952,7 +6137,7 @@ def get_trigger_res_type(uint16_t inx): - TRIGGER_RES_TYPE_FRONT_END 6 - TRIGGER_RES_TYPE_OTHER 7 :returns: Trigger reservation state string - :rtype: `string` + :rtype: string """ return __get_trigger_res_type(inx) @@ -5978,7 +6163,8 @@ cdef inline object __get_trigger_res_type(uint16_t ResType): def get_trigger_type(uint32_t inx): - """Returns a string that represents the state of the slurm trigger. + """ + Returns a string that represents the state of the slurm trigger. :param int TriggerType: Slurm trigger type - TRIGGER_TYPE_UP 0x00000001 @@ -6002,7 +6188,7 @@ def get_trigger_type(uint32_t inx): - TRIGGER_TYPE_PRI_DB_RES_OP 0x00080000 - TRIGGER_TYPE_BURST_BUFFER 0x00100000 :returns: Trigger state string - :rtype: `string` + :rtype: string """ return __get_trigger_type(inx) @@ -6077,7 +6263,7 @@ cdef inline object __get_trigger_type(uint32_t TriggerType): # - RESERVE_FLAG_TIME_FLOAT 0x00020000 # - RESERVE_FLAG_REPLACE 0x00040000 # :returns: Reservation state string -# :rtype: `string` +# :rtype: string # """ # try: # return slurm.slurm_reservation_flags_string(inx) @@ -6090,7 +6276,7 @@ def get_debug_flags(uint64_t inx): :param int flags: Slurm debug flags :returns: Debug flag string - :rtype: `string` + :rtype: string """ return debug_flags2str(inx) @@ -6236,21 +6422,23 @@ cdef inline list debug_flags2str(uint64_t debug_flags): def get_node_state(uint32_t inx): - """Returns a string that represents the state of the slurm node. + """ + Returns a string that represents the state of the slurm node. :param int inx: Slurm node state :returns: Node state string - :rtype: `string` + :rtype: string """ return slurm.slurm_node_state_string(inx) def get_rm_partition_state(int inx): - """Returns a string that represents the partition state. + """ + Returns a string that represents the partition state. :param int inx: Slurm partition state :returns: Partition state string - :rtype: `string` + :rtype: string """ return __get_rm_partition_state(inx) @@ -6276,7 +6464,8 @@ cdef inline object __get_rm_partition_state(int inx): def get_preempt_mode(uint16_t inx): - """Returns a string that represents the preempt mode. + """ + Returns a string that represents the preempt mode. :param int inx: Slurm preempt mode - PREEMPT_MODE_OFF 0x0000 @@ -6285,13 +6474,14 @@ def get_preempt_mode(uint16_t inx): - PREEMPT_MODE_CANCEL 0x0008 - PREEMPT_MODE_GANG 0x8000 :returns: Preempt mode string - :rtype: `string` + :rtype: string """ return slurm.slurm_preempt_mode_string(inx) def get_partition_state(uint16_t inx): - """Returns a string that represents the state of the slurm partition. + """ + Returns a string that represents the state of the slurm partition. :param int inx: Slurm partition state - PARTITION_DOWN 0x01 @@ -6299,7 +6489,7 @@ def get_partition_state(uint16_t inx): - PARTITION_DRAIN 0x02 - PARTITION_INACTIVE 0x00 :returns: Partition state string - :rtype: `string` + :rtype: string """ state = "" if inx: @@ -6317,12 +6507,13 @@ def get_partition_state(uint16_t inx): return state cdef inline object __get_partition_state(int inx, int extended=0): - """Returns a string that represents the state of the partition. + """ + Returns a string that represents the state of the partition. :param int inx: Slurm partition type :param int extended: :returns: Partition state - :rtype: `string` + :rtype: string """ cdef: int drain_flag = (inx & 0x0200) @@ -6374,11 +6565,12 @@ cdef inline object __get_partition_state(int inx, int extended=0): def get_partition_mode(uint16_t flags=0, uint16_t max_share=0): - """Returns a string represents the state of the partition mode. + """ + Returns a string represents the state of the partition mode. :param int inx: Slurm partition mode :returns: Partition mode string - :rtype: `string` + :rtype: string """ return __get_partition_mode(flags, max_share) @@ -6431,7 +6623,8 @@ cdef inline dict __get_partition_mode(uint16_t flags=0, uint16_t max_share=0): def get_job_state(inx): - """Return the state of the slurm job state. + """ + Return the state of the slurm job state. :param int inx: Slurm job state - JOB_PENDING 0 @@ -6448,7 +6641,7 @@ def get_job_state(inx): - JOB_OOM 12 - JOB_END :returns: Job state string - :rtype: `string` + :rtype: string """ try: job_state = slurm.stringOrNone(slurm.slurm_job_state_string(inx), '') @@ -6458,22 +6651,24 @@ def get_job_state(inx): def get_job_state_reason(inx): - """Returns a reason why the slurm job is in a provided state. + """ + Returns a reason why the slurm job is in a provided state. :param int inx: Slurm job state reason :returns: Reason string - :rtype: `string` + :rtype: string """ job_reason = slurm.stringOrNone(slurm.slurm_job_reason_string(inx), '') return job_reason def epoch2date(epochSecs): - """Convert epoch secs to a python time string. + """ + Convert epoch secs to a python time string. :param int epochSecs: Seconds since epoch :returns: Date - :rtype: `string` + :rtype: string """ try: dateTime = p_time.gmtime(epochSecs) @@ -6509,7 +6704,9 @@ class Dict(defaultdict): cdef class licenses: - """Class to access slurm controller license information.""" + """ + Class to access slurm controller license information. + """ cdef: slurm.license_info_msg_t *_msg @@ -6523,26 +6720,30 @@ cdef class licenses: self._lastUpdate = NULL def __dealloc__(self): - """Free the memory allocated by load licenses method.""" + """ + Free the memory allocated by load licenses method. + """ pass def lastUpdate(self): - """Return last time (epoch seconds) license data was updated. + """ + Return last time (epoch seconds) license data was updated. :returns: epoch seconds - :rtype: `integer` + :rtype: integer """ return self._lastUpdate def ids(self): - """Return the current license names from retrieved license data. + """ + Return the current license names from retrieved license data. This method calls slurm_load_licenses to retrieve license information from the controller. slurm_free_license_info_msg is used to free the license message buffer. :returns: Dictionary of licenses - :rtype: `dict` + :rtype: dict """ cdef: int rc @@ -6567,14 +6768,15 @@ cdef class licenses: raise ValueError(slurm.stringOrNone(slurm.slurm_strerror(apiError), ''), apiError) cpdef get(self): - """Get full license information from the slurm controller. + """ + Get full license information from the slurm controller. This method calls slurm_load_licenses to retrieve license information from the controller. slurm_free_license_info_msg is used to free the license message buffer. :returns: Dictionary whose key is the license name - :rtype: `dict` + :rtype: dict """ cdef: int rc diff --git a/setup.cfg b/setup.cfg index 91e8a58f..1cc2dbd3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,6 +21,7 @@ all_files = 1 [options.extras_require] docs = mkdocstrings[python] + mkdocs-material [flake8] max-line-length = 88 From 3254079b85098a3e2896476077d4557a2b1801ee Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 17:40:21 +1100 Subject: [PATCH 03/12] Add logo to docs, hide navbar --- docs/index.md | 4 ++++ docs/pyslurm-docs.png | Bin 0 -> 22269 bytes mkdocs.yml | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/pyslurm-docs.png diff --git a/docs/index.md b/docs/index.md index a4917274..a3097617 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,7 @@ +--- +hide: + - navigation +--- # PySlurm: Slurm Interface to python This module provides a low-level Python wrapper around the Slurm C-API using Cython. diff --git a/docs/pyslurm-docs.png b/docs/pyslurm-docs.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6074c875a9d24057e1543ef909d32462b22f18 GIT binary patch literal 22269 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 Date: Tue, 28 Feb 2023 18:19:59 +1100 Subject: [PATCH 04/12] Reformat docstring indentation --- pyslurm/pyslurm.pyx | 108 ++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/pyslurm/pyslurm.pyx b/pyslurm/pyslurm.pyx index d008b5ab..55ed0352 100644 --- a/pyslurm/pyslurm.pyx +++ b/pyslurm/pyslurm.pyx @@ -410,8 +410,8 @@ def slurm_fini(): def get_private_data_list(data): """ - Return the list of enciphered Private Data configuration. - """ + Return the list of enciphered Private Data configuration. + """ result = [] exponent = 7 @@ -428,8 +428,8 @@ def get_private_data_list(data): cdef class config: """ - Class to access slurm config Information. - """ + Class to access slurm config Information. + """ cdef: slurm.slurm_conf_t *slurm_ctl_conf_ptr @@ -839,8 +839,8 @@ cdef class config: cdef class partition: """ - Class to access/modify Slurm Partition Information. - """ + Class to access/modify Slurm Partition Information. + """ cdef: slurm.partition_info_msg_t *_Partition_ptr @@ -1336,7 +1336,7 @@ def slurm_delete_partition(PartID): cpdef int slurm_ping(int Controller=0) except? -1: """ - Issue RPC to check if slurmctld is responsive. + Issue RPC to check if slurmctld is responsive. :param int Controller: 0 for primary (Default=0), 1 for backup, 2 for backup2, ... :returns: 0 for success or slurm error code @@ -1354,7 +1354,7 @@ cpdef int slurm_ping(int Controller=0) except? -1: cpdef int slurm_reconfigure() except? -1: """ - Issue RPC to have slurmctld reload its configuration file. + Issue RPC to have slurmctld reload its configuration file. :returns: 0 for success or a slurm error code :rtype: integer @@ -1371,7 +1371,7 @@ cpdef int slurm_reconfigure() except? -1: cpdef int slurm_shutdown(uint16_t Options=0) except? -1: """ - Issue RPC to have slurmctld cease operations. + Issue RPC to have slurmctld cease operations. Both the primary and backup controller are shutdown. @@ -1394,7 +1394,7 @@ cpdef int slurm_shutdown(uint16_t Options=0) except? -1: cpdef int slurm_takeover(int backup_inx) except? -1: """ - Issue a RPC to have slurmctld backup controller take over. + Issue a RPC to have slurmctld backup controller take over. The backup controller takes over the primary controller. @@ -1409,7 +1409,7 @@ cpdef int slurm_takeover(int backup_inx) except? -1: cpdef int slurm_set_debug_level(uint32_t DebugLevel=0) except? -1: """ - Set the slurm controller debug level. + Set the slurm controller debug level. :param int DebugLevel: 0 (default) to 6 :returns: 0 for success, -1 for error and set slurm error number @@ -1448,7 +1448,7 @@ cpdef int slurm_set_debugflags(uint32_t debug_flags_plus=0, cpdef int slurm_set_schedlog_level(uint32_t Enable=0) except? -1: """ - Set the slurm scheduler debug level. + Set the slurm scheduler debug level. :param int Enable: True = 0, False = 1 :returns: 0 for success, -1 for error and set the slurm error number @@ -1471,7 +1471,7 @@ cpdef int slurm_set_schedlog_level(uint32_t Enable=0) except? -1: cpdef int slurm_suspend(uint32_t JobID=0) except? -1: """ - Suspend a running slurm job. + Suspend a running slurm job. :param int JobID: Job identifier :returns: 0 for success or a slurm error code @@ -1489,7 +1489,7 @@ cpdef int slurm_suspend(uint32_t JobID=0) except? -1: cpdef int slurm_resume(uint32_t JobID=0) except? -1: """ - Resume a running slurm job step. + Resume a running slurm job step. :param int JobID: Job identifier :returns: 0 for success or a slurm error code @@ -1507,7 +1507,7 @@ cpdef int slurm_resume(uint32_t JobID=0) except? -1: cpdef int slurm_requeue(uint32_t JobID=0, uint32_t State=0) except? -1: """ - Requeue a running slurm job step. + Requeue a running slurm job step. :param int JobID: Job identifier :returns: 0 for success or a slurm error code @@ -1525,7 +1525,7 @@ cpdef int slurm_requeue(uint32_t JobID=0, uint32_t State=0) except? -1: cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1: """ - Get the remaining time in seconds for a slurm job step. + Get the remaining time in seconds for a slurm job step. :param int JobID: Job identifier :returns: Remaining time in seconds or -1 on error @@ -1543,7 +1543,7 @@ cpdef long slurm_get_rem_time(uint32_t JobID=0) except? -1: cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1: """ - Get the end time in seconds for a slurm job step. + Get the end time in seconds for a slurm job step. :param int JobID: Job identifier :returns: Remaining time in seconds or -1 on error @@ -1562,7 +1562,7 @@ cpdef time_t slurm_get_end_time(uint32_t JobID=0) except? -1: cpdef int slurm_job_node_ready(uint32_t JobID=0) except? -1: """ - Return if a node could run a slurm job now if dispatched. + Return if a node could run a slurm job now if dispatched. :param int JobID: Job identifier :returns: Node Ready code @@ -1576,7 +1576,7 @@ cpdef int slurm_job_node_ready(uint32_t JobID=0) except? -1: cpdef int slurm_signal_job(uint32_t JobID=0, uint16_t Signal=0) except? -1: """ - Send a signal to a slurm job step. + Send a signal to a slurm job step. :param int JobID: Job identifier :param int Signal: Signal to send (default=0) @@ -1685,7 +1685,7 @@ cpdef int slurm_kill_job2(const char *JobID='', uint16_t Signal=0, cpdef int slurm_complete_job(uint32_t JobID=0, uint32_t JobCode=0) except? -1: """ - Complete a running slurm job step. + Complete a running slurm job step. :param int JobID: Job identifier :param int JobCode: Return code (default=0) @@ -1704,7 +1704,7 @@ cpdef int slurm_complete_job(uint32_t JobID=0, uint32_t JobCode=0) except? -1: cpdef int slurm_notify_job(uint32_t JobID=0, char* Msg='') except? -1: """ - Notify a message to a running slurm job step. + Notify a message to a running slurm job step. :param string JobID: Job identifier (default=0) :param string Msg: Message string to send to job @@ -1724,7 +1724,7 @@ cpdef int slurm_notify_job(uint32_t JobID=0, char* Msg='') except? -1: cpdef int slurm_terminate_job_step(uint32_t JobID=0, uint32_t JobStep=0) except? -1: """ - Terminate a running slurm job step. + Terminate a running slurm job step. :param int JobID: Job identifier (default=0) :param int JobStep: Job step identifier (default=0) @@ -1748,8 +1748,8 @@ cpdef int slurm_terminate_job_step(uint32_t JobID=0, uint32_t JobStep=0) except? cdef class job: """ - Class to access/modify Slurm Job Information. - """ + Class to access/modify Slurm Job Information. + """ cdef: slurm.job_info_msg_t *_job_ptr @@ -3083,7 +3083,7 @@ def slurm_pid2jobid(uint32_t JobPID=0): cdef secs2time_str(uint32_t time): """ - Convert seconds to Slurm string format. + Convert seconds to Slurm string format. This method converts time in seconds (86400) to Slurm's string format (1-00:00:00). @@ -3115,7 +3115,7 @@ cdef secs2time_str(uint32_t time): cdef mins2time_str(uint32_t time): """ - Convert minutes to Slurm string format. + Convert minutes to Slurm string format. This method converts time in minutes (14400) to Slurm's string format (10-00:00:00). @@ -3217,8 +3217,8 @@ def slurm_perror(char* Msg=''): cdef class node: """ - Class to access/modify/update Slurm Node Information. - """ + Class to access/modify/update Slurm Node Information. + """ cdef: slurm.node_info_msg_t *_Node_ptr @@ -3637,8 +3637,8 @@ def create_node_dict(): cdef class jobstep: """ - Class to access/modify Slurm Jobstep Information. - """ + Class to access/modify Slurm Jobstep Information. + """ cdef: slurm.time_t _lastUpdate @@ -3899,8 +3899,8 @@ cdef class jobstep: cdef class hostlist: """ - Wrapper class for Slurm hostlist functions. - """ + Wrapper class for Slurm hostlist functions. + """ cdef slurm.hostlist_t hl @@ -4171,8 +4171,8 @@ cdef class trigger: cdef class reservation: """ - Class to access/update/delete slurm reservation Information. - """ + Class to access/update/delete slurm reservation Information. + """ cdef: slurm.reserve_info_msg_t *_Res_ptr @@ -4618,8 +4618,8 @@ def create_reservation_dict(): cdef class topology: """ - Class to access/update slurm topology information. - """ + Class to access/update slurm topology information. + """ cdef: slurm.topo_info_response_msg_t *_topo_info_ptr @@ -5124,8 +5124,8 @@ cdef class statistics: cdef class front_end: """ - Class to access/update slurm front end node information. - """ + Class to access/update slurm front end node information. + """ cdef: slurm.time_t Time @@ -5247,8 +5247,8 @@ cdef class front_end: cdef class qos: """ - Class to access/update slurm QOS information. - """ + Class to access/update slurm QOS information. + """ cdef: void *dbconn @@ -5398,8 +5398,8 @@ cdef class qos: # cdef class slurmdb_jobs: """ - Class to access Slurmdbd Jobs information. - """ + Class to access Slurmdbd Jobs information. + """ cdef: void* db_conn @@ -5656,8 +5656,8 @@ cdef class slurmdb_jobs: # cdef class slurmdb_reservations: """ - Class to access Slurmdbd reservations information. - """ + Class to access Slurmdbd reservations information. + """ cdef: void *dbconn @@ -5761,8 +5761,8 @@ cdef class slurmdb_reservations: # cdef class slurmdb_clusters: """ - Class to access Slurmdbd Clusters information. - """ + Class to access Slurmdbd Clusters information. + """ cdef: void *db_conn @@ -5881,8 +5881,8 @@ cdef class slurmdb_clusters: # cdef class slurmdb_events: """ - Class to access Slurmdbd events information. - """ + Class to access Slurmdbd events information. + """ cdef: void *dbconn @@ -5963,8 +5963,8 @@ cdef class slurmdb_events: cdef class slurmdb_reports: """ - Class to access Slurmdbd reports. - """ + Class to access Slurmdbd reports. + """ cdef: void *db_conn @@ -6086,7 +6086,7 @@ def get_last_slurm_error(): cdef inline dict __get_licenses(char *licenses): """ - Returns a dict of licenses from the slurm license string. + Returns a dict of licenses from the slurm license string. :param string licenses: String containing license information :returns: Dictionary of licenses and associated value. @@ -6508,7 +6508,7 @@ def get_partition_state(uint16_t inx): cdef inline object __get_partition_state(int inx, int extended=0): """ - Returns a string that represents the state of the partition. + Returns a string that represents the state of the partition. :param int inx: Slurm partition type :param int extended: @@ -6705,8 +6705,8 @@ class Dict(defaultdict): cdef class licenses: """ - Class to access slurm controller license information. - """ + Class to access slurm controller license information. + """ cdef: slurm.license_info_msg_t *_msg From 7bbb699a403a3297248ffefb370204b6a9a56a7f Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 18:20:29 +1100 Subject: [PATCH 05/12] Missing newline --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index fa352767..3ff57238 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,4 +11,4 @@ plugins: filters: ["!^_"] docstring_style: sphinx show_signature: false - show_root_heading: true \ No newline at end of file + show_root_heading: true From 5e14874b2921cd1afd8b9d7d9989699005ee5a67 Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 18:23:59 +1100 Subject: [PATCH 06/12] Fix more wrong indents --- pyslurm/pyslurm.pyx | 74 ++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/pyslurm/pyslurm.pyx b/pyslurm/pyslurm.pyx index 55ed0352..65214a5f 100644 --- a/pyslurm/pyslurm.pyx +++ b/pyslurm/pyslurm.pyx @@ -275,7 +275,7 @@ ctypedef struct config_key_pair_t: def get_controllers(): """ - Get information about slurm controllers. + Get information about slurm controllers. :return: Name of primary controller, Name of backup controllers :rtype: tuple @@ -307,7 +307,7 @@ def get_controllers(): def is_controller(Host=None): """ - Return slurm controller status for host. + Return slurm controller status for host. :param string Host: Name of host to check @@ -329,7 +329,7 @@ def is_controller(Host=None): def slurm_api_version(): """ - Return the slurm API version number. + Return the slurm API version number. :returns: version_major, version_minor, version_micro :rtype: tuple @@ -343,7 +343,7 @@ def slurm_api_version(): def slurm_load_slurmd_status(): """ - Issue RPC to get and load the status of Slurmd daemon. + Issue RPC to get and load the status of Slurmd daemon. :returns: Slurmd information :rtype: dict @@ -396,7 +396,7 @@ def slurm_init(conf_file=None): def slurm_fini(): """ - Call at process termination to cleanup internal configuration + Call at process termination to cleanup internal configuration structures. :returns: None @@ -1182,7 +1182,7 @@ cdef class partition: def create_partition_dict(): """ - Returns a dictionary that can be populated by the user + Returns a dictionary that can be populated by the user and used for the update_partition and create_partition calls. :returns: Empty reservation dictionary @@ -1209,7 +1209,7 @@ def create_partition_dict(): def slurm_create_partition(dict partition_dict): """ - Create a slurm partition. + Create a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one is created by create_partition_dict @@ -1241,7 +1241,7 @@ def slurm_create_partition(dict partition_dict): def slurm_update_partition(dict partition_dict): """ - Update a slurm partition. + Update a slurm partition. :param dict partition_dict: A populated partition dictionary, an empty one is created by create_partition_dict @@ -1307,7 +1307,7 @@ def slurm_update_partition(dict partition_dict): def slurm_delete_partition(PartID): """ - Delete a slurm partition. + Delete a slurm partition. :param string PartID: Name of slurm partition :returns: 0 for success else set the slurm error code as appropriately. @@ -1428,7 +1428,7 @@ cpdef int slurm_set_debug_level(uint32_t DebugLevel=0) except? -1: cpdef int slurm_set_debugflags(uint32_t debug_flags_plus=0, uint32_t debug_flags_minus=0) except? -1: """ - Set the slurm controller debug flags. + Set the slurm controller debug flags. :param int debug_flags_plus: debug flags to be added :param int debug_flags_minus: debug flags to be removed @@ -1601,7 +1601,7 @@ cpdef int slurm_signal_job(uint32_t JobID=0, uint16_t Signal=0) except? -1: cpdef int slurm_signal_job_step(uint32_t JobID=0, uint32_t JobStep=0, uint16_t Signal=0) except? -1: """ - Send a signal to a slurm job step. + Send a signal to a slurm job step. :param int JobID: Job identifier :param int JobStep: Job step identifier @@ -1622,7 +1622,7 @@ cpdef int slurm_signal_job_step(uint32_t JobID=0, uint32_t JobStep=0, cpdef int slurm_kill_job(uint32_t JobID=0, uint16_t Signal=0, uint16_t BatchFlag=0) except? -1: """ - Terminate a running slurm job step. + Terminate a running slurm job step. :param int JobID: Job identifier :param int Signal: Signal to send @@ -1643,7 +1643,7 @@ cpdef int slurm_kill_job(uint32_t JobID=0, uint16_t Signal=0, cpdef int slurm_kill_job_step(uint32_t JobID=0, uint32_t JobStep=0, uint16_t Signal=0) except? -1: """ - Terminate a running slurm job step. + Terminate a running slurm job step. :param int JobID: Job identifier :param int JobStep: Job step identifier @@ -1664,7 +1664,7 @@ cpdef int slurm_kill_job_step(uint32_t JobID=0, uint32_t JobStep=0, cpdef int slurm_kill_job2(const char *JobID='', uint16_t Signal=0, uint16_t BatchFlag=0, char* sibling=NULL) except? -1: """ - Terminate a running slurm job step. + Terminate a running slurm job step. :param const char * JobID: Job identifier :param int Signal: Signal to send @@ -3061,7 +3061,7 @@ cdef class job: def slurm_pid2jobid(uint32_t JobPID=0): """ - Get the slurm job id from a process id. + Get the slurm job id from a process id. :param int JobPID: Job process id :returns: 0 for success or a slurm error code @@ -3165,7 +3165,7 @@ class SlurmError(Exception): def slurm_get_errno(): """ - Return the slurm error as set by a slurm API call. + Return the slurm error as set by a slurm API call. :returns: slurm error number :rtype: integer @@ -3177,7 +3177,7 @@ def slurm_get_errno(): def slurm_strerror(int Errno=0): """ - Return slurm error message represented by a given slurm error number. + Return slurm error message represented by a given slurm error number. :param int Errno: slurm error number. :returns: slurm error string @@ -3190,7 +3190,7 @@ def slurm_strerror(int Errno=0): def slurm_seterrno(int Errno=0): """ - Set the slurm error number. + Set the slurm error number. :param int Errno: slurm error number """ @@ -3199,7 +3199,7 @@ def slurm_seterrno(int Errno=0): def slurm_perror(char* Msg=''): """ - Print to standard error the supplied header. + Print to standard error the supplied header. Header is followed by a colon, followed by a text description of the last Slurm error code generated. @@ -3559,7 +3559,7 @@ cdef class node: def slurm_update_node(dict node_dict): """ - Update slurm node information. + Update slurm node information. :param dict node_dict: A populated node dictionary, an empty one is created by create_node_dict @@ -3612,7 +3612,7 @@ def slurm_update_node(dict node_dict): def create_node_dict(): """ - Return a an update_node dictionary + Return a an update_node dictionary This dictionary can be populated by the user and used for the update_node call. @@ -4365,7 +4365,7 @@ cdef class reservation: def slurm_create_reservation(dict reservation_dict={}): """ - Create a slurm reservation. + Create a slurm reservation. :param dict reservation_dict: A populated reservation dictionary, an empty one is created by create_reservation_dict @@ -4466,7 +4466,7 @@ def slurm_create_reservation(dict reservation_dict={}): def slurm_update_reservation(dict reservation_dict={}): """ - Update a slurm reservation. + Update a slurm reservation. :param dict reservation_dict: A populated reservation dictionary, an empty one is created by create_reservation_dict @@ -4561,7 +4561,7 @@ def slurm_update_reservation(dict reservation_dict={}): def slurm_delete_reservation(ResID): """ - Delete a slurm reservation. + Delete a slurm reservation. :param string ResID: Reservation Identifier :returns: 0 for success or -1 for error, and the slurm error code is set appropriately. @@ -4587,7 +4587,7 @@ def slurm_delete_reservation(ResID): def create_reservation_dict(): """ - Create and empty dict for use with create_reservation method. + Create and empty dict for use with create_reservation method. Returns a dictionary that can be populated by the user an used for the update_reservation and create_reservation calls. @@ -6070,7 +6070,7 @@ cdef class slurmdb_reports: def get_last_slurm_error(): """ - Get and return the last error from a slurm API call. + Get and return the last error from a slurm API call. :returns: Slurm error number and the associated error string :rtype: integer @@ -6115,7 +6115,7 @@ cdef inline dict __get_licenses(char *licenses): def get_node_use(inx): """ - Returns a string that represents the block node mode. + Returns a string that represents the block node mode. :param int ResType: Slurm block node usage :returns: Block node usage string @@ -6126,7 +6126,7 @@ def get_node_use(inx): def get_trigger_res_type(uint16_t inx): """ - Returns a string that represents the slurm trigger res type. + Returns a string that represents the slurm trigger res type. :param int ResType: Slurm trigger res state - TRIGGER_RES_TYPE_JOB 1 @@ -6164,7 +6164,7 @@ cdef inline object __get_trigger_res_type(uint16_t ResType): def get_trigger_type(uint32_t inx): """ - Returns a string that represents the state of the slurm trigger. + Returns a string that represents the state of the slurm trigger. :param int TriggerType: Slurm trigger type - TRIGGER_TYPE_UP 0x00000001 @@ -6423,7 +6423,7 @@ cdef inline list debug_flags2str(uint64_t debug_flags): def get_node_state(uint32_t inx): """ - Returns a string that represents the state of the slurm node. + Returns a string that represents the state of the slurm node. :param int inx: Slurm node state :returns: Node state string @@ -6434,7 +6434,7 @@ def get_node_state(uint32_t inx): def get_rm_partition_state(int inx): """ - Returns a string that represents the partition state. + Returns a string that represents the partition state. :param int inx: Slurm partition state :returns: Partition state string @@ -6465,7 +6465,7 @@ cdef inline object __get_rm_partition_state(int inx): def get_preempt_mode(uint16_t inx): """ - Returns a string that represents the preempt mode. + Returns a string that represents the preempt mode. :param int inx: Slurm preempt mode - PREEMPT_MODE_OFF 0x0000 @@ -6481,7 +6481,7 @@ def get_preempt_mode(uint16_t inx): def get_partition_state(uint16_t inx): """ - Returns a string that represents the state of the slurm partition. + Returns a string that represents the state of the slurm partition. :param int inx: Slurm partition state - PARTITION_DOWN 0x01 @@ -6566,7 +6566,7 @@ cdef inline object __get_partition_state(int inx, int extended=0): def get_partition_mode(uint16_t flags=0, uint16_t max_share=0): """ - Returns a string represents the state of the partition mode. + Returns a string represents the state of the partition mode. :param int inx: Slurm partition mode :returns: Partition mode string @@ -6624,7 +6624,7 @@ cdef inline dict __get_partition_mode(uint16_t flags=0, uint16_t max_share=0): def get_job_state(inx): """ - Return the state of the slurm job state. + Return the state of the slurm job state. :param int inx: Slurm job state - JOB_PENDING 0 @@ -6652,7 +6652,7 @@ def get_job_state(inx): def get_job_state_reason(inx): """ - Returns a reason why the slurm job is in a provided state. + Returns a reason why the slurm job is in a provided state. :param int inx: Slurm job state reason :returns: Reason string @@ -6664,7 +6664,7 @@ def get_job_state_reason(inx): def epoch2date(epochSecs): """ - Convert epoch secs to a python time string. + Convert epoch secs to a python time string. :param int epochSecs: Seconds since epoch :returns: Date From 2a045c44c4dc9273c2fe506df67db291477f2fca Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Tue, 28 Feb 2023 18:47:34 +1100 Subject: [PATCH 07/12] Add `mike` for versioning the docs --- mkdocs.yml | 3 +++ setup.cfg | 1 + 2 files changed, 4 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index 3ff57238..42a4250a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,3 +12,6 @@ plugins: docstring_style: sphinx show_signature: false show_root_heading: true +extra: + version: + provider: mike \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 1cc2dbd3..90ace0b5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -22,6 +22,7 @@ all_files = 1 [options.extras_require] docs = mkdocstrings[python] mkdocs-material + mike [flake8] max-line-length = 88 From 673b479457d3390d860fc03a3acf951deb9798ac Mon Sep 17 00:00:00 2001 From: tazend Date: Wed, 8 Mar 2023 18:10:47 +0100 Subject: [PATCH 08/12] add site dir to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6bea6e8b..f79b3369 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Ignore Build Directory # build/ +site # Ignore Docs Directory # #doc/ From e451ffe4a998109520cc69b4b311bf14ccdb331c Mon Sep 17 00:00:00 2001 From: tazend Date: Wed, 8 Mar 2023 18:11:16 +0100 Subject: [PATCH 09/12] setup.py: Remove .so files on cleanup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c36f279e..17e25bb5 100644 --- a/setup.py +++ b/setup.py @@ -157,7 +157,7 @@ def cleanup_build(): info("Removing build/") remove_tree("build", verbose=1) - files = find_files_with_extension("pyslurm", {".c", ".pyc"}) + files = find_files_with_extension("pyslurm", {".c", ".pyc", ".so"}) for file in files: if file.is_file(): From 406a8c9300a16573371236966cbc27282081d484 Mon Sep 17 00:00:00 2001 From: tazend Date: Wed, 8 Mar 2023 18:14:01 +0100 Subject: [PATCH 10/12] header.pxi: Rename all "cpdef enum" to "cdef enum" cpdef didn't work correctly with Cython 3.0 onwards, which is needed for the docs. Setting this to "cdef enum" doesn't change any functionality in our case. --- pyslurm/slurm/header.pxi | 50 ++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/pyslurm/slurm/header.pxi b/pyslurm/slurm/header.pxi index 8dc36a95..7de32bf2 100644 --- a/pyslurm/slurm/header.pxi +++ b/pyslurm/slurm/header.pxi @@ -720,7 +720,7 @@ cdef extern from "slurm/slurm.h": unsigned char type unsigned char hash[32] - cpdef enum job_states: + cdef enum job_states: JOB_PENDING JOB_RUNNING JOB_SUSPENDED @@ -735,7 +735,7 @@ cdef extern from "slurm/slurm.h": JOB_OOM JOB_END - cpdef enum job_state_reason: + cdef enum job_state_reason: WAIT_NO_REASON WAIT_PRIORITY WAIT_DEPENDENCY @@ -936,25 +936,25 @@ cdef extern from "slurm/slurm.h": WAIT_QOS_MIN_BILLING WAIT_RESV_DELETED - cpdef enum job_acct_types: + cdef enum job_acct_types: JOB_START JOB_STEP JOB_SUSPEND JOB_TERMINATED - cpdef enum auth_plugin_type: + cdef enum auth_plugin_type: AUTH_PLUGIN_NONE AUTH_PLUGIN_MUNGE AUTH_PLUGIN_JWT - cpdef enum hash_plugin_type: + cdef enum hash_plugin_type: HASH_PLUGIN_DEFAULT HASH_PLUGIN_NONE HASH_PLUGIN_K12 HASH_PLUGIN_SHA256 HASH_PLUGIN_CNT - cpdef enum select_plugin_type: + cdef enum select_plugin_type: SELECT_PLUGIN_CONS_RES SELECT_PLUGIN_LINEAR SELECT_PLUGIN_SERIAL @@ -963,27 +963,27 @@ cdef extern from "slurm/slurm.h": SELECT_PLUGIN_CONS_TRES SELECT_PLUGIN_CRAY_CONS_TRES - cpdef enum switch_plugin_type: + cdef enum switch_plugin_type: SWITCH_PLUGIN_NONE SWITCH_PLUGIN_GENERIC SWITCH_PLUGIN_CRAY SWITCH_PLUGIN_SLINGSHOT - cpdef enum select_jobdata_type: + cdef enum select_jobdata_type: SELECT_JOBDATA_PAGG_ID SELECT_JOBDATA_PTR SELECT_JOBDATA_CLEANING SELECT_JOBDATA_NETWORK SELECT_JOBDATA_RELEASED - cpdef enum select_nodedata_type: + cdef enum select_nodedata_type: SELECT_NODEDATA_SUBCNT SELECT_NODEDATA_PTR SELECT_NODEDATA_MEM_ALLOC SELECT_NODEDATA_TRES_ALLOC_FMT_STR SELECT_NODEDATA_TRES_ALLOC_WEIGHTED - cpdef enum select_print_mode: + cdef enum select_print_mode: SELECT_PRINT_HEAD SELECT_PRINT_DATA SELECT_PRINT_MIXED @@ -1002,7 +1002,7 @@ cdef extern from "slurm/slurm.h": SELECT_PRINT_RESV_ID SELECT_PRINT_START_LOC - cpdef enum select_node_cnt: + cdef enum select_node_cnt: SELECT_GET_NODE_SCALING SELECT_GET_NODE_CPU_CNT SELECT_GET_MP_CPU_CNT @@ -1011,19 +1011,19 @@ cdef extern from "slurm/slurm.h": SELECT_SET_NODE_CNT SELECT_SET_MP_CNT - cpdef enum acct_gather_profile_info: + cdef enum acct_gather_profile_info: ACCT_GATHER_PROFILE_DIR ACCT_GATHER_PROFILE_DEFAULT ACCT_GATHER_PROFILE_RUNNING - cpdef enum jobacct_data_type: + cdef enum jobacct_data_type: JOBACCT_DATA_TOTAL JOBACCT_DATA_PIPE JOBACCT_DATA_RUSAGE JOBACCT_DATA_TOT_VSIZE JOBACCT_DATA_TOT_RSS - cpdef enum acct_energy_type: + cdef enum acct_energy_type: ENERGY_DATA_JOULES_TASK ENERGY_DATA_STRUCT ENERGY_DATA_RECONFIG @@ -1034,7 +1034,7 @@ cdef extern from "slurm/slurm.h": ENERGY_DATA_NODE_ENERGY_UP ENERGY_DATA_STEP_PTR - cpdef enum task_dist_states: + cdef enum task_dist_states: SLURM_DIST_CYCLIC SLURM_DIST_BLOCK SLURM_DIST_ARBITRARY @@ -1075,7 +1075,7 @@ cdef extern from "slurm/slurm.h": ctypedef task_dist_states task_dist_states_t - cpdef enum cpu_bind_type: + cdef enum cpu_bind_type: CPU_BIND_VERBOSE CPU_BIND_TO_THREADS CPU_BIND_TO_CORES @@ -1097,7 +1097,7 @@ cdef extern from "slurm/slurm.h": ctypedef cpu_bind_type cpu_bind_type_t - cpdef enum mem_bind_type: + cdef enum mem_bind_type: MEM_BIND_VERBOSE MEM_BIND_NONE MEM_BIND_RANK @@ -1109,14 +1109,14 @@ cdef extern from "slurm/slurm.h": ctypedef mem_bind_type mem_bind_type_t - cpdef enum accel_bind_type: + cdef enum accel_bind_type: ACCEL_BIND_VERBOSE ACCEL_BIND_CLOSEST_GPU ACCEL_BIND_CLOSEST_NIC ctypedef accel_bind_type accel_bind_type_t - cpdef enum node_states: + cdef enum node_states: NODE_STATE_UNKNOWN NODE_STATE_DOWN NODE_STATE_IDLE @@ -1662,7 +1662,7 @@ cdef extern from "slurm/slurm.h": ctypedef srun_step_missing_msg srun_step_missing_msg_t - cpdef enum suspend_opts: + cdef enum suspend_opts: SUSPEND_JOB RESUME_JOB @@ -3140,7 +3140,7 @@ cdef extern from "slurm/slurmdb.h": SLURMDB_ADD_TRES SLURMDB_UPDATE_FEDS - cpdef enum cluster_fed_states: + cdef enum cluster_fed_states: CLUSTER_FED_STATE_NA CLUSTER_FED_STATE_ACTIVE CLUSTER_FED_STATE_INACTIVE @@ -3231,7 +3231,7 @@ cdef extern from "slurm/slurmdb.h": uint16_t with_coords uint16_t with_deleted - cpdef enum: + cdef enum: SLURMDB_ACCT_FLAG_NONE SLURMDB_ACCT_FLAG_DELETED @@ -3726,7 +3726,7 @@ cdef extern from "slurm/slurmdb.h": uint16_t with_wckeys uint16_t without_defaults - cpdef enum: + cdef enum: SLURMDB_USER_FLAG_NONE SLURMDB_USER_FLAG_DELETED @@ -3759,7 +3759,7 @@ cdef extern from "slurm/slurmdb.h": uint16_t with_usage uint16_t with_deleted - cpdef enum: + cdef enum: SLURMDB_WCKEY_FLAG_NONE SLURMDB_WCKEY_FLAG_DELETED @@ -3827,7 +3827,7 @@ cdef extern from "slurm/slurmdb.h": uint32_t count List tres_list - cpdef enum: + cdef enum: DBD_ROLLUP_HOUR DBD_ROLLUP_DAY DBD_ROLLUP_MONTH From 5dc4c02814f9b81e881ef3d9d1e8d1dce8368411 Mon Sep 17 00:00:00 2001 From: tazend Date: Wed, 8 Mar 2023 20:26:00 +0100 Subject: [PATCH 11/12] Remove embedsignature=True For building docs, we use Cython 3.0 now, which automatically provides full introspection functionality for cython functions --- pyslurm/pyslurm.pyx | 1 - 1 file changed, 1 deletion(-) diff --git a/pyslurm/pyslurm.pyx b/pyslurm/pyslurm.pyx index 65214a5f..84869d05 100644 --- a/pyslurm/pyslurm.pyx +++ b/pyslurm/pyslurm.pyx @@ -1,4 +1,3 @@ -# cython: embedsignature=True # cython: profile=False # cython: language_level=3 # cython: auto_pickle=False From f9af1c5bb6f4376e9f971112f446cc95091cd8f2 Mon Sep 17 00:00:00 2001 From: tazend Date: Wed, 8 Mar 2023 20:36:36 +0100 Subject: [PATCH 12/12] Build docs with Cython 3.0 --- doc_requirements.txt | 6 ++++++ docs/stylesheets/extra.css | 4 ++++ mkdocs.yml | 6 ++++-- scripts/builddocs.sh | 25 +++---------------------- setup.cfg | 15 --------------- 5 files changed, 17 insertions(+), 39 deletions(-) create mode 100644 doc_requirements.txt create mode 100644 docs/stylesheets/extra.css diff --git a/doc_requirements.txt b/doc_requirements.txt new file mode 100644 index 00000000..7497dfa3 --- /dev/null +++ b/doc_requirements.txt @@ -0,0 +1,6 @@ +cython>=3.0.0b1 +wheel +setuptools +mkdocstrings[python] +mike +mkdocs-material diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 00000000..18fe35d6 --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,4 @@ +/* Maximum space for text block */ +.md-grid { + max-width: 70%; +} diff --git a/mkdocs.yml b/mkdocs.yml index 42a4250a..8e18475a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,8 +10,10 @@ plugins: options: filters: ["!^_"] docstring_style: sphinx - show_signature: false + show_signature: true show_root_heading: true extra: version: - provider: mike \ No newline at end of file + provider: mike +extra_css: + - stylesheets/extra.css diff --git a/scripts/builddocs.sh b/scripts/builddocs.sh index 5e555bfd..cc5625c2 100755 --- a/scripts/builddocs.sh +++ b/scripts/builddocs.sh @@ -1,24 +1,5 @@ #!/bin/bash -#set -e -########################################### -# Build the docs and push to GitHub Pages # -########################################### - -# Build docs for all jobs within build -pip$PYTHON install Sphinx>=1.1 -make BUILDDIR=/root/docs -C /pyslurm/doc/ html - -# Only push to GitHub Pages once per build -if [[ "$PYTHON" == "2.7" && - "$CYTHON" == "0.27.3" && - "$SLURM" == "17.11.8" && - "$BRANCH" == "master" ]] -then - git clone https://github.com/pyslurm/pyslurm.github.io.git - rsync -av --delete --exclude=.git /root/docs/html/ /pyslurm.github.io/ - cd pyslurm.github.io - git add . - git -c user.name="Travis" -c user.email="Travis" commit -m 'Updated docs' - git push -q https://giovtorres:$GITHUB_TOKEN@github.com/pyslurm/pyslurm.github.io &2>/dev/null -fi +pip install -r doc_requirements.txt +pip install --no-build-isolation -e . +mkdocs build diff --git a/setup.cfg b/setup.cfg index 90ace0b5..a7d6399b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,3 @@ -[aliases] -doc=build_sphinx -docs=build_sphinx - [bdist_rpm] release = 1 packager = Giovanni Torres @@ -13,17 +9,6 @@ build_requires = python3-devel >= 3.6 requires = slurm use_bzip2 = 1 -[build_sphinx] -builder = man -source-dir = doc/source -build-dir = doc/build -all_files = 1 - -[options.extras_require] -docs = mkdocstrings[python] - mkdocs-material - mike - [flake8] max-line-length = 88 extend-ignore = E203