From c06f740492fe7c7ba4f50383230e3b92271a86cf Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Mon, 11 Oct 2021 16:30:13 -0700 Subject: [PATCH] Add lorax 35.7 documentation --- f35-branch/.buildinfo | 4 + f35-branch/.doctrees/environment.pickle | Bin 0 -> 2025338 bytes f35-branch/.doctrees/index.doctree | Bin 0 -> 7911 bytes f35-branch/.doctrees/intro.doctree | Bin 0 -> 9189 bytes .../.doctrees/livemedia-creator.doctree | Bin 0 -> 169961 bytes f35-branch/.doctrees/lorax.doctree | Bin 0 -> 80934 bytes f35-branch/.doctrees/mkksiso.doctree | Bin 0 -> 28265 bytes f35-branch/.doctrees/modules.doctree | Bin 0 -> 2585 bytes f35-branch/.doctrees/product-images.doctree | Bin 0 -> 7117 bytes f35-branch/.doctrees/pylorax.doctree | Bin 0 -> 588387 bytes f35-branch/_modules/index.html | 118 + f35-branch/_modules/pylorax.html | 663 + f35-branch/_modules/pylorax/base.html | 274 + f35-branch/_modules/pylorax/buildstamp.html | 273 + f35-branch/_modules/pylorax/cmdline.html | 528 + f35-branch/_modules/pylorax/creator.html | 963 ++ f35-branch/_modules/pylorax/decorators.html | 237 + f35-branch/_modules/pylorax/discinfo.html | 252 + f35-branch/_modules/pylorax/dnfbase.html | 394 + f35-branch/_modules/pylorax/dnfhelper.html | 317 + f35-branch/_modules/pylorax/executils.html | 580 + f35-branch/_modules/pylorax/imgutils.html | 703 + f35-branch/_modules/pylorax/installer.html | 888 ++ f35-branch/_modules/pylorax/ltmpl.html | 1091 ++ f35-branch/_modules/pylorax/monitor.html | 411 + f35-branch/_modules/pylorax/mount.html | 206 + f35-branch/_modules/pylorax/sysutils.html | 367 + f35-branch/_modules/pylorax/treebuilder.html | 630 + f35-branch/_modules/pylorax/treeinfo.html | 270 + f35-branch/_sources/index.rst.txt | 36 + f35-branch/_sources/intro.rst.txt | 67 + f35-branch/_sources/livemedia-creator.rst.txt | 670 + f35-branch/_sources/lorax.rst.txt | 200 + f35-branch/_sources/mkksiso.rst.txt | 129 + f35-branch/_sources/modules.rst.txt | 7 + f35-branch/_sources/product-images.rst.txt | 27 + f35-branch/_sources/pylorax.rst.txt | 157 + f35-branch/_static/basic.css | 904 ++ f35-branch/_static/css/badge_only.css | 1 + f35-branch/_static/css/theme.css | 4 + f35-branch/_static/doctools.js | 323 + f35-branch/_static/documentation_options.js | 12 + f35-branch/_static/file.png | Bin 0 -> 286 bytes f35-branch/_static/jquery-3.5.1.js | 10872 ++++++++++++++++ f35-branch/_static/jquery.js | 2 + f35-branch/_static/js/badge_only.js | 1 + f35-branch/_static/js/theme.js | 1 + f35-branch/_static/language_data.js | 297 + f35-branch/_static/minus.png | Bin 0 -> 90 bytes f35-branch/_static/plus.png | Bin 0 -> 90 bytes f35-branch/_static/pygments.css | 74 + f35-branch/_static/searchtools.js | 528 + f35-branch/_static/underscore-1.12.0.js | 2027 +++ f35-branch/_static/underscore-1.13.1.js | 2042 +++ f35-branch/_static/underscore.js | 6 + f35-branch/genindex.html | 879 ++ f35-branch/index.html | 137 + f35-branch/intro.html | 156 + f35-branch/livemedia-creator.html | 1002 ++ f35-branch/lorax.html | 476 + f35-branch/mkksiso.html | 251 + f35-branch/modules.html | 139 + f35-branch/objects.inv | Bin 0 -> 2064 bytes f35-branch/product-images.html | 129 + f35-branch/py-modindex.html | 210 + f35-branch/pylorax.html | 2119 +++ f35-branch/search.html | 120 + f35-branch/searchindex.js | 1 + 68 files changed, 33175 insertions(+) create mode 100644 f35-branch/.buildinfo create mode 100644 f35-branch/.doctrees/environment.pickle create mode 100644 f35-branch/.doctrees/index.doctree create mode 100644 f35-branch/.doctrees/intro.doctree create mode 100644 f35-branch/.doctrees/livemedia-creator.doctree create mode 100644 f35-branch/.doctrees/lorax.doctree create mode 100644 f35-branch/.doctrees/mkksiso.doctree create mode 100644 f35-branch/.doctrees/modules.doctree create mode 100644 f35-branch/.doctrees/product-images.doctree create mode 100644 f35-branch/.doctrees/pylorax.doctree create mode 100644 f35-branch/_modules/index.html create mode 100644 f35-branch/_modules/pylorax.html create mode 100644 f35-branch/_modules/pylorax/base.html create mode 100644 f35-branch/_modules/pylorax/buildstamp.html create mode 100644 f35-branch/_modules/pylorax/cmdline.html create mode 100644 f35-branch/_modules/pylorax/creator.html create mode 100644 f35-branch/_modules/pylorax/decorators.html create mode 100644 f35-branch/_modules/pylorax/discinfo.html create mode 100644 f35-branch/_modules/pylorax/dnfbase.html create mode 100644 f35-branch/_modules/pylorax/dnfhelper.html create mode 100644 f35-branch/_modules/pylorax/executils.html create mode 100644 f35-branch/_modules/pylorax/imgutils.html create mode 100644 f35-branch/_modules/pylorax/installer.html create mode 100644 f35-branch/_modules/pylorax/ltmpl.html create mode 100644 f35-branch/_modules/pylorax/monitor.html create mode 100644 f35-branch/_modules/pylorax/mount.html create mode 100644 f35-branch/_modules/pylorax/sysutils.html create mode 100644 f35-branch/_modules/pylorax/treebuilder.html create mode 100644 f35-branch/_modules/pylorax/treeinfo.html create mode 100644 f35-branch/_sources/index.rst.txt create mode 100644 f35-branch/_sources/intro.rst.txt create mode 100644 f35-branch/_sources/livemedia-creator.rst.txt create mode 100644 f35-branch/_sources/lorax.rst.txt create mode 100644 f35-branch/_sources/mkksiso.rst.txt create mode 100644 f35-branch/_sources/modules.rst.txt create mode 100644 f35-branch/_sources/product-images.rst.txt create mode 100644 f35-branch/_sources/pylorax.rst.txt create mode 100644 f35-branch/_static/basic.css create mode 100644 f35-branch/_static/css/badge_only.css create mode 100644 f35-branch/_static/css/theme.css create mode 100644 f35-branch/_static/doctools.js create mode 100644 f35-branch/_static/documentation_options.js create mode 100644 f35-branch/_static/file.png create mode 100644 f35-branch/_static/jquery-3.5.1.js create mode 100644 f35-branch/_static/jquery.js create mode 100644 f35-branch/_static/js/badge_only.js create mode 100644 f35-branch/_static/js/theme.js create mode 100644 f35-branch/_static/language_data.js create mode 100644 f35-branch/_static/minus.png create mode 100644 f35-branch/_static/plus.png create mode 100644 f35-branch/_static/pygments.css create mode 100644 f35-branch/_static/searchtools.js create mode 100644 f35-branch/_static/underscore-1.12.0.js create mode 100644 f35-branch/_static/underscore-1.13.1.js create mode 100644 f35-branch/_static/underscore.js create mode 100644 f35-branch/genindex.html create mode 100644 f35-branch/index.html create mode 100644 f35-branch/intro.html create mode 100644 f35-branch/livemedia-creator.html create mode 100644 f35-branch/lorax.html create mode 100644 f35-branch/mkksiso.html create mode 100644 f35-branch/modules.html create mode 100644 f35-branch/objects.inv create mode 100644 f35-branch/product-images.html create mode 100644 f35-branch/py-modindex.html create mode 100644 f35-branch/pylorax.html create mode 100644 f35-branch/search.html create mode 100644 f35-branch/searchindex.js diff --git a/f35-branch/.buildinfo b/f35-branch/.buildinfo new file mode 100644 index 00000000..36295ced --- /dev/null +++ b/f35-branch/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 75aacdd0614612610c6e455505ebf8fa +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/f35-branch/.doctrees/environment.pickle b/f35-branch/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..8b98ea5cbd208125181d505735351edf121aa97f GIT binary patch literal 2025338 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 ohf<(ocx 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≷06ZxKeG7YnW|rRfagc4-sI@Be7bY64>F(` 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

oL-h8W7G*hBl-E|zu~1L?{5cKQg9Dmt z``j|2`wuCft3`unZ8`x<+lQhh_+CH#M=>Aj62aRTzrVYpu zjV{ek?bKcec|fv_X{8%d0eX^S#i#X8v1o7Gr;++R0I)FeWVh84*gu(`V%T@|!; z4G1Wdze&ZPa$@}QsifXtnGB8!?WFJN4sX5S-J<=8yt!N3_Z$r?zDs$4o{Lkf?$O;J zlFd>po#2CEL9#S<-cb9?x0I}18Z8sL$yOkL9PsZrzUe`71+$ku9lqKa;wT{kr?C1lsB zJJ0VjE8&sMP$Ks3)*f%HOR+U2W^X@lukDliuA;>3@cc_TyA=g&TY9qk?oKn<+EyZe z0|Pp8No_$l3TmMaR_x#en0 zILnCTEY}#&bIV^n=WZ!yxuQgDHQr-}mtt#5%nqN@F2`1sm>pgZR*tPGF`Mp<*nm$I zC1$^Ry@6cVR+JQ*cO}aCy|5YlDwdI14&19*LEM;E%+fupIEs3Y;6I?(4u|8nmEOER9A=}zVnHXAn2Kc2f??Q&$pjB-kGR_8!(i6$%?C_R zvYNhB&k@s#^w`;k6>}mKsYcfxI2yhk1}_jv_94Ylvmo#(*J=LA;A28UR0Ejsi__6> zBUY#~=`S{>lCwgUDOt4W9gcWTC>NKU1r@3_b&RKHP(XMD?0h z`fx&r8|TwrpGQct*(etBV9@zb^RvV0Y|pjG+Hs#fYd3>yI1e_FOv(~20eikq*wf7DQo)@jzeYf^a(l5y96F`HQ=_ZdpVNjV zYbwjG>*+^m=->0=Pc!?CgW#46Njtqf+8{#h*Pfbsx@=WVCfPZ%TscKgSy89+EuYSc z6dhLlo#%^-Yf#Ba=mv<-+VD*1z|3XiAKpk)kVyR7dcX5Zjof($V7+=DM5s~kY}`AmR1bD&V};%%OM4od`h0wKr?tJG zJ^Qau`N>^TMpsN*)&%$>#_;0<8#g9DP(XeB3r+tqKi2h@5l`LiIvh% zV9-y_AZjOO2Y!=~s23+NBd5zvdHQ>nH8yMt(dDN6$Saf$n?iJ$LVc_Y z5{Q=<(Lhh0K7VkA{ARf!^!jI1Zbj{!zz(qCk4KRi`_*T4zMDhTwOOuhfVtrLypm;y zvqA6ObV3teCzHv$EMqxQ(x)bhslL-V$lago?~jJ_>8N*}(2`8AaV^e*&^;qG_}Cvz zQ*n~a=5rl}g3MzhLw*~~di}-l{U8x1$z(Oxig^&cWd!Goqrq$zq?2TAj_WuK@HZWP zI1cEN<E1nQZWJ(9fo`!SV1T!%JqdeS8Fily;B)Hlb3~Jw68lPjp<)hNA@)j?>A} z*=UfBd#3}Q%#uo;#U}-Xq|T~`=ZnE)M%4!MThXkVQy9EInV!#vZ%-C$!E*|OAB{#Q zz41}75L49hoC3J6ypJa1MfPDvOCy3Q*gNx=Zp92A1!>TXN z;)ScCHLQmL{;JBlag`)^s$2zh{R2Y)RNH(!n)DX&m5D`d_AtQfs>6J)9wX1@i}N5O z6|FiV7^HMDqgzE!;)oQ@tT_d6?Iv1Y#l4gMs(w*7c^Keze`$C+9Su$gwCWixM;7fb z1t`eqc8z*Bv4@JbYYqamj=`umUt|mFiVY5X{dcS~DjI_T1sR>l=DYB++oFk_QvlbA ztUrF=8=dirsAwX47~rp~VtCs7I3NDP*^=erYSX(`zRx#^^ouQ&u=M=zoCoA$s(N2~I0I3sE zeUhn;GxtT&MD#Gg>(*9(PIbd%Mgyj--|L_7j99d_P4OV8>lzwnE{-R&Q{S_H6{HFnNtuAdg{mrp5t0OXTJ#ew;B zkgmh0=Q>}cdih1`@Bjt7wSUdnm*tD1{>?0b@ zjC4Up05;KOO|*WLh?ijM1`HN2287(5#o%I`LxeY4_zN`X zJff|ki^`mK4pY~R9u}Z|h@GtVCzdk=t&FBvr6dn}-!Q%BRoX4O)7(}!ZZ)2Dn5y6s zlqISm724l2ZS#l#z38R(_k`O>1eb6u5s$D?f56oDs_kdB;JPnSs*-nOKZ6FXFS%Az zUGSfXrKEmQ*&`w7BcaOu>z=GiDVO(egoXOoEY9@yP1ZWk=4!~B@eYCDl9MHA8$hA_ z8?IcZE1AjR+siVxVA*|{ehLjM9x^M;!vaA;mejoI^maI?QT^nV^VTzdWKnS3WJwei z2^wE<4SIGxQz;M~{FihA($P};{&Hqom$ur`iz2B^Twa$mq03XSvrqS0hE+uQ6m&SK zaqsHaur};n&P?leDTe8XD$9G9Ggs(7Z_>`r@PdFfbsck+ZnxXY4%+;ozIAoMgf6d* zwNE++Ep@6sigNkdIKo2xF)O>nc}5F4v&ry?HSv-jQ@Y@KKq&H_4E^9Q=d=NU56R2- zWO5$#cnoRwGCLido(1ED@-g&)Q2cx5)5$zL8I0%%S!I{rk!d!no$We*%B6Af6wi`c zIL(F~-z~ADL%q43?N|IJ0>PD97aHNfuz=_7+**|#clj;6<@0ugh5CP55`UwfP7A@t z_zT?-@?p<^UTx0-UGzx1Sfi`61V>h+CixO#tMtI}(^{2Fz^Z?|$X9i8RgKkBf^D^O zKN&o%;iDm%BO7I2x%Zd)%8!OZDzyKJdBQxgi5jKedigWmGNclRmuA5h+9keNApnbb zjY?}uAG0}CaU+%*Z`j>(_c}% z_Ja0KGL5=g&qC9R<}5JF80#xqC=~CpIMVG4RX%o<^v705(J-NReKC1A7+0$Mt>D>5 zNll}Jnnd#`K;QAu^mK6WI^(5ye81%P zBi;lw_K2h^0&do064o!hOY;tbb+uH~GyL&Z0PAHR{9tt84jeGKMVmC=9 z%tAMXJjmJHLr=*CFG!Ygm!SX+cPVrniBj&$Q4n$V@9$SxE-h!jq5y3(DqWsZpksg9E&+pJI5K`YD-dYwb2IA2nYD&o`CHv>pofTlYMp{&hF-e;N0H1N=Rc z!1m+VOOoM0n8pkSAzRz3_mwtK+geNj-`i?egLk&eROJ=}xGe*FwcT##d3~2x=w-@4 zPJ+Y(lM3#OI2|NI`!F2>9K^0cEVzA6GJ=gI2m-KkRHqY1pq!&Xf&^@**O6FtSITw; z3BjE|@r&k4ffWQ`+Y0Q{1q;ytq)a94KoGDM9DRPk+n6#HoS^`1z1^q=Gg@Vwq9Fj= zN{w!IQ&&TpwHMR^Wy-3C0Bp0R`YblTOs$@iAYrp*yGlJNzMNAgTUtyA z-%Q`2Z7_h_aZ8)l*b<$CGF?Cq1ra-L$-jxyq0G1?X+J+?BFPCg4VHV?hr+Cbl4LjbmUNPV`M zJd~3lVf#KbveLJguv}E8@8duac(S1L^>mZ?{CwPhHW<_WN{h*?8=kqBtafRRnObj#ePva9Z9r`vrZRmp--sG4Fz_A!&)AJB%?qexV;(PN3IM}*`pBe_lcsv;#x z`h`jk1cC3Y0Nq0{H~Kq+d4D#Xrjk)`{hz^k$+*3g3={5K6DBh{i8>q)qKHbCn4^d? z8l>(SsoH2XoX&^yNJ&yPg-Q$tq1#4icSg(ck&2{w2vu?tBy3!k=KeBqVK4~U^jTiI z%cKvdLFy~xwr7JyXRuh25hZKOp$C&t2;VWnd%e@cqh6F?l3q_J=b<2CW4AvzJsiw7 z9J?em5>_?V#)T752wS&$6`S7?DC1TS1rb{wpwn`9;8UA zOttJl5U|Z^W3s5@wx2=V)|6>h6G({KO6y>pYD~*iS~&?4Uz>7fQ)xw3l$x4lbd=;G8i9MDxAqpaAYOYdd@Usf2yIDiBNqUyPOSWtndbTh}|QO;9_1Ny@=b4}Y(Z_%rq^^dY2v!~hbn2ey2^dY+C z@;}I_5dE5cJsv9Y96d~GEA~aEHxw{2`*%xa9Mgd zgZ6LeL&pDc?^l2GEA=10lPnv&L&s$N!VN^~@NINiu@130u zk1A@_x6`6c8QD&QuLugNAWbk@F>9GlGdP#Cj*en2(+Ll%ucM<_(77M@?e$N;})^v~#MSglPbl(XG~?m;lKE9k-nQXvgmkGa- zXt!xsgL)-$x6Zq=l1yW?VqH#!GLNtQ4Q(3WJGIt{ug`?)13$hyZyNgA6y{+;r+t}+ z9S>?>`f7BLx4K8imA9XVo0tUirpqKb6uRH|y0rg8U$oXx&1$vFx7`c6GRveRF4XV( z>MBKfT`FjimPr~IbROEDsRBdS{AAT_^{yyOOhFrw&h%uYHgm0mdig0D0IK|Vp^kpTeUXrCeExh_pqQhxWvN=F!b;F z`mbx-2VK5~ENM~FUanahl#o}IGiZxleV2Q-Twe8H(DCyQz53pMlfA6&1+TxC&pSR5 zinl!O&wn4`Cc$;Sdwgp1r_A_cI{cVRc}<=+==CKy$6F1Vxzv=iMA7! zi%rgg%GWl|?i-5JGrDwCy*Jmbht8D@IpU^B={Ov;{P@saWW4B?kB>${!!MD4+F*$^ zEU5UULVrW)v-whyBEtfVE|jBP7Tv1{m&KMFUBpbN{-c*$oT}PIR&UqTq0|ofAuvI3 z8Pt;Uu|fd$-1O`TDh0vfzgpPY@4D*Ia*-O5Gx=h3WXy~F#&vazG#VDy-# zLRZ!J>=$$i#$J_f{;mh7qGi3)71BN!>Z-gq9TR^!TgAuD7x5qgoAsk_&SqPn)1 z9TmE_{CGBbn#$VlB{3uxG*nOD{Hj9@7u}Ch<--eE+m+JEc}ujS3mDeaVplP!v1uMJ z^$d1&EK0CV#6ftmP*HP8#7_0;az%B+Gs}{)c50a;H4aLuP0W?{Yx~Wh|0o-EFVnI> zsHt9muGXN71$V2|5VOe1>hWcQITM;ZhK**Y8+dcQ7+T;mwdg90b=BCd7`()_4(JMX z=F9a;f#D%$k3XJ{Do2ykN^QT@r2#gUcbK3c@qp3A0DpwcNc8pd?*86}MMGvRy1&<; zt7JDC)7JqLq7UH;`oR)OK}!S(b1o-B@H_l=dNvxVbhWF&+2Pr7^e)=Vi`Rlf95Z2= z1~X>bo6QHad1dgCUbCu@)wElKK8O}Q1PkNSa|3ZktYX86|DvM6e@Jf&Psk$WL480! zt8USO|KJYLHy1nS0(+Lqz_jlrrm04Y#;V6KYiMShxBfzXMCNBfWOfc(bU&P$ zX|E#FG5ZIbw?8Eblm8$v*_K1P8=GEFpM%LopiMN|KIxPyb|C_|@pdL}fEt)~% z+2t>v!186fMT|#2xAO{}OtmyST|NT+1jaAbh4KHJ!1KHHM!oYqXbk_nc~3hX823AY zado=UXuq{rqY@b8;%xI4axs|slh90BsNe2VHBA?-hxzvC)7Tm)!eE(SX|b!mV=ic5 zRoW-HNz+m=BQhcbdSlwUN<^2T3C(?s2C8G!m z+^y3HNR1>|;rRrk2&M%iC9Qmm?whP{2U}}DK`ZZcVBCKda4`^^ek0ve|MILWH zVV>C_=dq%=;ICPi?5M+w^~L-jkjZ4E)a$1K%{d!9yXhKY?*Z1%^q= zbGJ$>!F76AuDi`IXZ-}_nQ6gDN$%^?#0xF(Z}S_{K0)rwg? z>im}HPtc_Z)L^Kjhk4MT=Uh6}Puo@-F=@-xcC?K533`}IRAIQx!`ATl;?hszVWtK{ zC1WG~h!)L7(4Z)l9X`R>D4__0C7llyoCd3uCroR^+VoG*`H1w28B05iDASU))P)Z= zr+pG*1HEF#zGyUGHPVCRPhxDK2V*5YCOwA}RzqYRn%K2}cXq0JFJ3Q1?~v*SUJPGJW&2zKp+ zEVrz*Q~+k^Bnf{tolWQhjm0o91V9Gy)fvq>_Av8MvPUq{hFm(i-f{>Z? zOj1a07TtcuvhF7{O9{a&y%^{x93r8f|CvvF{XsUR^I5}>fpNVJCE^M>nE3ah^P@1_ zZ-RBokhn5AohNdy{c{L_N%O^w&f;hKnWHiNizTRF4kqNTG%OOk&|~j=BXtm)Ze?MH zZQ5g=3{28pc0Zrll6#&V4f-RxZb2E9*-DHVCs@D}d2OX2%+&RI+RVvmHm2r<*(Ml| z6|@a1Feu7tE*hi3$6=ppvy{&^mD84r!Mxvw(Q_f_i_BzD<}pG4AVen1KuQNj-Th@a zJsyq*l|R>8*%ti|Kej43i35O^#veHiLJ$0}s875{{Y$>4CD;Z9Mx^C{kh_DQDoghM z9K1&Je_mW8BYY&KVUW3ppD7vIMn;RIEC~hM@<51$EDlm%{xTXKR{p$K-^$ttw4;L_ zoqS1W@4_vyf^CNyWaO42p?Wu0O{odCt*6w0g34|6INxx5JgId5+^Tl@Oo=415ZuHH ze_5DSIs5mk)AN5jogAIf4J-fifBo~nU(2%NGu8RaGL~q9jF^Ws&#xNlzvLggPQ#Uq zo+}=X0|`N#5H1j~FnI2AX5O!55fG$`4aVUX1@>pX!#?8*E?1`@jHwXdecl@$bD-ct zU=@ZF6$HpDbP15&p2h4Gco*R~8Zh9$=*?!mbH)}NA5NIbf-Gi(#c)D_ZA_occvnGcI)#hr3I_Zo zx`yoIko)DoU0nB@P#kSQ0AKE%9StXwXt2xU|%}y%?CgKo}mRsn^25wK>&Yt zcy!39f_z6oIFb81R?qXD5S?3@-754i%ym$OF#@{ldB8 zaHv8BU=0HJ%AvU%nUAp~4zb}l95CQNJN$+B&Lrvg%To>|1bA2at=U9%{+NsZ`^Dvh zI+VK4=vPRNmD78p!T2b+ZcyM1>Zt2*%x-+>jQ_0vmghTxGbjj$5(4IaL0>L-@eow? zI#9?YOin#H8^2@zl~7e6PSu#4dfHo@6sD>`oT@RPe%3!dVoZrgPmcoPk&FB1Y8sFM z13ce)!Bj+<-33j_Xe4x~W|{I{xu|BDo(E)t0C`y< z>3$|=wxE-1gGFG40{e^p?0m|*8#(d0rj)~{5`W)QeDsAb0Q(YyVPH(tDPBA zQU&TzoN7Qh_>9i%6bI{29Be=U-=Km^;7Z&Fl@uQ@Y(m6BL#b&mye?5LrNgGA3=~qg zY^+q_n)Y~$EGeza+*Sb)Lf6$bqcop94--dFTD_nwM&9QxV_l&S2aDk;?+XZ;34{w3 z3=Glu?C9{6Wm-WwpdcJd2=K0`FOSYnc|G}W7x#)2P{RTFviil_@fovLP!puU3IndT zcuc=y;F1<=4#=0Ow>3O1et)zL#(iv2IeU0~95zRS8u!Qq<7|rp`?I4VuWuxIVmJ?& zdH3)t@fP$<%7{}1v%4-}$hJ6G{3!onZ`MBtkEQ5}Zk!AKeQ!EccSQO_GxueM zp%c=F{pr;9op^s_eQAb<^!?nleo}YE{dF$r>L}-2h~9J|E8&P|#c^5}=mI$!LqX`S z3sa%UozkWQmYgeYbZ`ML5VKSWK6c?CSUFT5G1TGN=Ag zFs52@wU;9Ziz)Ch;X4P&3#tB%c?6BOvMVkcaF`-?Km*1kGG_l|(C4#uo6DGny-J*> zJouiI4T@_v#Gg3-xnwZ23M?-+HaIOM;K<>@Y%ML6HHVnd(<$kHEl81QQs-o@Yk zBvS(!=7oced4Wm5l;12jcEA% zC|`Q(w|)(A{+4cv%6s#Ens1!hurw3QuY~+Hij;vuq?4AonV$*p1 zx8iX-TG({gz2`O)? z>pk^V!-{YHsV-043R}Yr46qL*!n_v|-KWb56e=(pU3k{_vqhX(C7P*uTo02k6NL@D$h*#uRG;2It>YxcBgM`j4UB}Sbw0UKC zH0BdRf@DhUI}3mbq0_@)gWI}78VI5LxdCU3_0ka8USsFh1i88G`*lDons72#{Y;OEBhJ-X(ni6^KJM2Gkq+an;l* zG(i#Z!!iy3i#!6y{qdr3Cq@V2aE(C(E~{R1|CFbspxb4Gak52$eO3KvIG&#I&XFLW zxPTGg;Gl5%cuYH9`+VoD#Cj8q(=7_@tH-lmVw1%g_D%xO~PKmCRdy>W2U@_flepL*NG!iWzD_ z0AHrRr?ef4d03D=Y_JfmQ9fG@4@q8Bt)3i`gEs|t-JsK`+Zo&hz)Go8Ms{R!kNMi!aw zf(E9$&s~DtQmVAZH+eT4{3ST8BN(Rh&p~wTPlKoqIkT(C+KiYCX|Cs8-lOav> z@FA_BWaNmnUJge5?&U#F2a8^`2VuqDBy^i%LfWSlCjfCT%5)vl_&u^ol3URvz%RcWoPU_i_;y4==CHw-)j&Bm z+3|ES`H`6|*q^V$Ffcd(Uma1+)TauHuVe`_iVGOhy!A=oZyPK?8x+{L@T0`iqM#Pzp;JoKT~Y`4TxP$6Aa-hpm)jK^=#W9f@JUez zM?60t{c_4DB?VovB4M^D8}yhct2UlreG0Up*;3%ep39T z$|rS)@-X}j z9r`%sJ!V1YHH54(!U#bBNf^|wc=L*Q#ZK}vesCJF;z4M|H0-Oa*wY&zl^Zp)CcO)$>3D6p@nyKJLv z5rWxcgkyAk=-fhhny05-G^}|L;Z3*zZ(*?hZzsIg5DeueJPio|*k$^Po~|ssl3;@SzR7=G~hP@2qr_kpn*n?gwACZfv`0eWEC5X@qq&SvuW`=sVE3%dUsM? znhyK#ijP-JC{8sX7<%3OBpx#hob3foNEjq^zMysTVB$qkGwDD9+rPT_^7P%?XnsYK zgeDj#TNEt5G9C36$CDXfffp1ZR$FZcQ%Se>I^v*MI=NY%ldf;nso!W}_~ocDpx07-Zs_#IeNLV$N|dY;*X?aZ-)Jw16y zZfy>P$ffCde{{%4WRfhbLj`aR0{DyRInAjt!zEc*1q!eVynv`c9I7#(URKl+^_>kCkrfK;OY`wji3NQVijxf}2T%I%f}s~w z@XTlPIWH!H{vrk8OhSP7x#}o0LnYCtFr26$KweWw8uSc{Z!6D3MtBQ^$fd;d6_Tu{ zpMVMA>Qxxudi6KGtHT#F1RZE&k_wp+&_Lh%vl30#Vn(4txB>xuZGLuWmjqa%O00Jw zxq$oFiF`3X8}|xdDyIVlXoZ34SLWxZi{4={l_Ka+A{=J}2K;B?wXu?dbIzyP6au`f z`GHTr@{n{6Z~`?j80S)BcLGs6YdpA8nk4GN}TT?|Gv1s*n(0IZ6=`4Z>YZ~@=KfWJ(G zg41Cz;VW^D2^PQ&3hd9L^QnTmT!jg!bjTIR8~W?{*;H+`EAEj5x&jy^zVRh0hv$od zI_^W)!;EN7pGgX~H6&vL$p{V;zG5br4Pq$+1gom64d7_VKVtHec}iNaRe7~^j)g3b zwYhXACB1g6IeLk_?(lsYd4`7kx6JA0AsTA;Qx>ea?S(2LeOh|8?;|>l;CcT;Z>FB5 zOQ!$Yc|U~11gh^oEY9R2~)v{8bls#+OvsCu*jM{J{nAsjH$sk8b*v z)Oxgig>(Hgtd|sW$m=^n%WFbKSOUQtmlyB!>x0Y}lG@({<7kTl`+;TCRx!FHzkf2B z&`5^~y}Ec2KE+6>a*>1yr>B$g(XbcxUj)^d3AIGj!$R~rY(5IEI~7c~c|ntc3JINi z__6BSB%&r5nXZVM2Zi7bCrH;Fu!Iyy`C*e$J62FgxwzRQ)QkbZo6a#`PIV1N0F@?7pnWqq9E`(!i5S3 zhG^V$KRcyvJktwsn)G(nq-+%zVVSl2p`(d#VwB>%-gowFn z&?N|@;tgwZDIGQ?WuS=FEo<3qKuhC64iFrB;Gt7;07LM$3o@V5`&PW(-n+Pa>w;^0 z(~6c1$$JPhIh>e%d%ROE=o-a@q_QUf@xMLe)2xCO`?E6+&nH+vKRX*1Ug=O_0w6(P z-{9eEGwm_l};x zU1;4vX0@sP#-J4mTixuh36u zb3`yMlcc2$7s3q;_{$&WZ`Io)%y5b0O)w6(D6sEXcEz26@@M%42Sr_Y@93}lj5hd; z)K+My-FDw3uHF_j*e-ZV%p#%n5I;79k}R>vDyX{w@i)TbGY*FC4SXGKA=tXO;zrn% z9NS6Y((Qe3G*s_7vCOe%x;ZA|bm`+!v`I-&a!e?e|11dL&prm%Ur^E3u)DTP_2fDg$shNcak)C3xu50#;GieoUS z)JB6-x+SAa|7Q8?&BZx6htRGi1<^o1U+2H@Wnjf!^|kJX&E}QCN7~-bED-eZrsq0X z6lV^F-jhf#b+vWl;)si6!G`+dSe?%G4fqxaK^~Kd8#J_anVI+aj%s0RC7!-i^!mQ=200;kk07HXI1(x~2)FV_g#921K1 zEePPt^mmzcdmAi7YZTa5=|^VqljU^5gqRB$@+}SupZ^jL+yxzb6^3&a1jsADOvZFS z;BnyzC4}Q>z%2gk->*;4|4m4uZK!^|wi zRrHJ@^@}o^IOOvwf-waky17aMp?3p69efNH(gfE~AgnK=IiTOgFX$$`YL}9exG9Co)`9DZ#2|5r-EsKK817C)A{Lx;SV4_}7 z2$Dh$2B{~$l-{A)PsB@54w7;V2+8~Er>cnPt7fuzVd=kLoGqDJ$b!&U>Q`q|HBiiu zOHAZ=??^BPXL?JJko}CbShoND#qkMhctrs2YHxVluTUP~HHBczr~{gO?GT`T(W6bw ze6sWB;$~_Fke`K5t(A!PDBryN1wD=(+;CdLLe0o647NpeMUnss*PeDY*1XaLiEwOqxd|*nLI)hHkvz-AuvsGh=H2kYB2=j)xz!)1khv z#F@`af}nY08fhX#wX;;=S66lEz2B_Z6?GOTLFAD#NPT4vg3*lHTQ#s}N`js)i&g>$ zxd-Zp^fK8@PakCJ4BohK7nO-cFfK*4Kt@**(&MFL8hi8PlC&~puFGz!I$$tJ-PW;E z-yRPKqa&^&=ri&Nc^nAbQNK{0;QQ%qBDu5}bcsD~34|YQIJdsj#aq zN`AT{8+;t_jUR$Lmk`$+!(F^Y1=f7G+!}R`krybzRA_N?j126#AK0Vv3@g-v$xzr3 z=QryN4TYl1as9K|jH-B@$C>0>IgU}G`4F)*k5gpFXSCCWPdf|NYYFEFK8HF>6)`JmoR2qXm?pb^KZ_o&NqIP|IY&h-bh7QLXJ z$%J=&3W#fh0&pLz$a!#xf14K1OcYqo5^OZM$N{+l5P%&|d^_lfxY~yvyJ5uxvzU5- z2`k*d@G!uY!67~ih@Dm?>q&Hp)Evqwrt)z=50pz;-Ng^ z8s}<~O)J0_SEgP*QakKxdFnO*(llV$b*4slnh^Y2mT`a^>?EA_Mh>~Jmk{6r0@ zSgu>E1-Crt+(gEkj|Rc1Y0`r4sJOnDnLkb}wyk(iHEf@bD zgmi&6V!5;rhrSzcEGDVx^0merITC6&kdhy0?vLdc!8*Y5>O#|?;aWZQX-3z$F&)wL z&$0~Th|qGq3U$CO)pHiC&mvl>M%Kqd)0Bn@-JBG4BPDbHs+CZI?Tm^2OQWE0n}&k4 zs#Y;iSO)!MiG~So6ao}9?plpAwKH%yr&$x0Op-<`R`FoaxvuY%q~0>UKfn|uQ$Fe{ zO4rf0e<%*%cXRl(fBKYW%9w;CPp2h7gU}r(H0phbbR^D7>Hr3r+*$AWZq3rpA`aj; zT^!!O4Yn6Zrb&|#&?E@lfWYCf$LED4lW!@$1_AHVKpi2Ue<*&S73P_8Vf7pgGR{qO zSS@%iqpX_@2?F3~b6O-smC4iI5mf{m5z1*0a@kpbMKuA_DO;sD7-U=)P~XshnM&Ez z0Sh85E@zvJi-tkQRgYmVD_cGKIn0%N`fx+lqanfiTPTdQ*ENiQq)|_mMT>$&?w~V1 zSzFpc!~xvdPZx0y`utQ#S^F&t5-zjOXh;`c$6YqFf&~%hq}eHNrOG-m-YUgez=|iR!iuxJcQG!@(jMRRp7&qpXaBIhn)WeDL${E4@GbbfhnaDOy3< z@VZftSP2#VTs3b!1UW0MVp*Ze;SWD=EG{`Kp|Y{Kkjk>S{P=WpadE6DEI$F!p=;z-jB2_L|A37FdbO+x1`S*$FlvY_5 zmkrhfhmIA+K?yNQIICPt zf>cLL%*UIGiBCgJzO*r>Nx<<@Z+4XB8Qq_+6|6!fT$g~Z(oJ}CeciybPpp}AHd!qV zEQzjQ4Jr}cn2FdXR1=Y1TQ!L5-9vi6gBFzg@6`IWhu#1Pg=8Etf6(v;L1ySs9h|5YuJUu%MBrKYgB^Y%En8n@G%Du*SQeD@RZU=sc%YC^Uy;NH_!i{x={1Z6*{}YuI9~_0_WL04DJ{H@ zv(ey~i->ae5)ng#615Ay(rozlgiA@rzy=Y=Co?!`QL1Y#b)iUbgRv;pqX=0L`0$$f zcvD{UX;6aK?01{;8pHj^wO{?suhf4adhL+*S-qQ1==5OG92a&Ga}eM+4u5${Cs|JE zYW!d&O>lHqg*B<~Lx8@ezE+i30xmdB%itac_$%rM(RnMu)_Dfj03h$GSI^bZvx0vx zhYN}X!Wp-?zwi&&EqjPh=rqo3zW6X0ygTagR!p$1#6ff-xW5<@al7rl9@3tk;w!T* zIM=c;sN^108WbfyeP7;#4hN-M&LEn^51!f-bZ1;>9v#Di#v}JD{W<<(nL^MUBV3Rv zI1`%p-LLic^nBP`K2#PA-5eqjIRk`R?#1bhLa~^Y_o87zhkHgd@))ukXs^WVNl7vn5rzwdl59~ zy~aooc^rvkXY*cAa|%W>%cU$2g12(P=oMT+_D$$$4DeUf5271g1)UoP)&L-H&{qqZ z9vzn{ZYC^>MUDadru{+UCMCg=eMGkx{<-ebwfq;XFbMjndC1@9{|v#jO_G$BXNTcX>vvm$?bNZ z@z>A=Q|88|fPCUy0-NW-K);mD3KH5(pKZWqO#vD<(*jrFd>r{%K>)sP6OcaJfX$i$ z^i_invxea0bCiIJ0jzZeeZ&nelYANiu(g-&*JCa&W3OTWd(*^*&XSGjQ4fZe)Noq3J<0W_UTYq5y3ZGkn6NOk(=4 zuUTi%M?d^-ZHo;B7F+c6g!W9WjW(1JJsI_Q+fv5Qbh?!&K-oGNn;N0JaIJ z>Q{dhRwe-z16XUXu3UX?8GAJ(1phVYc9#Mx2*B16Va;F05q`yQ9TC<0W$b0u{sXn# zp=So^sU13KczQ~GJC=r$F{fgf7Cc3RZ*FQWeLEWMwPzxdzBCtc7|`!2dVgN2(V-rC zi(xl>7Eu@vBDk0YG${SrDydgO=G4uice17@Fu`4)mgcK2Bf|piNwUtY z9WhTzS`p(YU(kX=eqzT+IexfJ#KxI6{TpRo(Me`g;y8FP#N%$RV=UN^4q(vvCf9Kn z{Paets0j{ECh`MCEx}!_4jcV?a}(;|Lj6u2cUpG{ubq`lFC>%FvJxsEX8NKtKVGF( zEDI{SHl%VzFPqcBz*KpbOfJOn;XJ4zcdF7EBc91Qfd0?a!kXFJTKA zG+%7p>$YVlkC_UNL?mM3P_X}Dppi%=$;@(`N>H-ESZ`?)Tvm?(p@$km-Eh~Z`wnKa z2|X_1*G1)O2+o5VY6$N%uP;@u$}p{&ll)Q@~h_KHY4(c|fRLwxy26M=;+IPCA>i>mosAS{G(o{d47-mZ6x6 zWTiHz*aDWMA~KH?s?lxxqJr&YmdUc4_fxv`Xb7M9+>EZqBED36kL`VS6?1jQywdY; zRP@`7Hy7`aPvC6)SIfX2@E7l|h6W^;g|*S43BEeW3@6M2!ag2yH6m zPJ2v`1ld1}mvTo5g?%bizw%UP^h&gvkId#YpD^PoESiB?svMFpQm2bbS-dx=uE<%rPT4hg*{R_{ICj7t?cU5K4ZV|nJ%9A7mCL;9+c)0)h$f(zGm zKq~?Ss5DfikB;aLE%gsZ77es0a87m@&?$MQ=QLm;v&Yo2KZ`CF5seWH!pVd@h~0wN zbl86vT*e_9)FpH*3KF+*TkQ#L?Cl3Rd_`Q2=r$w$g3`Vi<`O3{tn16wL?Hb{^Wr8cd^0mMDD{p96urN?=4u1qI%L7wkk(02dKX zg2*-Xo5XaXq*(j(V3ts)gPSQxd8lYQL@>nQ|EKLuyCge~Gfinokpybr3mZ47wRHES zM35rYXFhR2KtziKFaRh@J?aw^84;Notk@7sWfguyf9?M}X72vFyP5lqwCguY=ZL6` zd++m_`M_8@ho5m+MCTE?StZz?#*xd5w-eD)16HQ;%F;;!00`{P}N9t9;bm)dlwDUW{E#4Qtl zo#KiMb)>&bKKFOKUCGmr+EPYhLFGyCk)Kd89){dSELukSO6L?1dMNFdv*mKFP8Vn^ z?LdOUo!}AuPJ0c6Czffl(vtuJA0D`^WGWH1c>od=-~kmo`VzY~4+02$q%1x_;Z!Lr zv7myK#ZOL}vJ?<{2sI8fRam!$S^$9`L(LaKW0|zt@*_`6(e(txf(lwz+^?f9&uU7Y z9d{L?NXTt1tC9)TXCcp|H(0VAf+-+yMQB`ADUqBF$QseB6|Tj;7k_oObY>JOz0wywtIINr$$}d8$){tfzKqF4oto zb#e+#PlcwAP1+D6Gv_H{(?OxALw3U(*-jptp4zENXK%d$O-Jq0+-+zD?8*J~)Gke$ z`FH~<$Wx*DM3o1x%Is|#W>Y+sI+G%z9}s4e6q4{9hQ_^G=$v6QonQIw&lfY3wfFr6*N zuSYa7yis#Takf(FWk+2l$NBDIwZ4g)swC>{86t#&81 z<y{2MqQ#RUfGoZ4G9nTSD)55V8|nLD+PnxL@Nb8_e?bEwvK?p{e=R-m z9MF-5E*1y6&uS%?hPS1mh=K<4gd0KJOZhQTMgSnE~21;v_%hgujOHzZD}ijD*V&rK;kn9eB{8Z@#3P4_O=|DSWrRj zNE<$V!$MArx7Cgr3_3pvIguaH8a66zW>YUnR}ybF`eZf3ZD;_xmBJy}b;Dr?QU%*F zm)9S+rHTNm^5v+|0Dg8y2HYn5U(DnZAIm6snLpV9Ccy)w2;RxiU>uNo^&o@ zS^Kw@o)HBNgd3#{Uh6NCKwG$h1O<5UVopmdbpxZ#i-^)1i}mWVaHCBlqM(6RUNHvK z*2=4ny0}WxZ4G{@jyY>U=qTUm z7U9iUX2Q1eH-IYq)71LJ&ujg+f`= zu1w=FNFL8^eFcGo7WxYAAx%e}s}ak#zCuoe(mNqXY{skE;_Q6Ar`xJV?hg?~mhF2! zhj>t4(N@qfQ>dyEr++YX+VO)+adIH?zXJ+E{pFxZzCO2>ymos^|8OUR;DJx z7mPgn=N;pJZ6nVG5}Jr1_rm@Zy&I6AfO3m|r{N9PVi(0oTe+3fpoD&uf5u${A=K87 z%3#nznC-?dXZw?c8Awn-y}~JPcDgYrfrA#}haaA93@WEV39S`+cAD{_00JK^3i|o5 zDWbovMUhxgiQ(lgmoKM=+S0SX$llYS1b^6-@qVw42Wayrv7mx>DnB_gaTaq)UH8}nhv!iC1Th%Bg}gsIGPxAlkA+%~*8 z(5&!&bUl$X9Bp1C7Q8_H;+`mtwpJ5JP(V%Tes==~B0Ab?$_xe_ z1(2Zda5~m{i@h5uU?d}wUhF(MtC_?WKfhcZO15DnRInoiXlM6|-zg3w>uYzS0RDq2*KqQ^uvr{$ zc8ecfU(F|1Q+b|};qX;K1p~G|q{I2<%khG@UDwV%FpL(0;A67HLFzGHT&(G?i<+2W zArTltOaLJlJ){0oO{~?k3t@If!1el_~&x4-`K z*B{Xq)zN?d!)N~@ge;Xq0Qpesq(b;{Cj7fkKl`}Uw8T`0W&##+A)08v`Gwpl*(xW1 zkb4O4_`jp_HfT%2sQH%RAQfYf+ve`n^$~TO=?-C8|Fy%iwi0xXEcbV$22sg9qXE@22D_j1k$vJkrGKJX@qBLX0AuPp_dJvUE7UTxe)0i1_0W6FCL&@AGr|f02$pym|0n zVEKChDfKuY9bGV6o~tnzL*HJ5BL@O+1%ZhS3PXfyG!Zm(FRS1NC=md?%YwYuknWJ0 zsRIQK(;dRx34^gPeYSyuY4T#^uTK{~7zS*F4*~>mS5ZYhzkcvtXfy>Vx&o+@m*1z^p8j*)#PU#1h%Xew|*$7EEE`XBAd=SCga z_P2H0=$NHA*5!jw1lPZv#IGd! zgkI+7bhhzjEJco5qB6iwMTPDUlb`a9(dCx*nTQnkS$jNJ*|6a!oi^~|nrm9 zUTFk%M7A;`;$g}A5kL*dt&ash)Ni!k&ZH4XPLqs`E+a}Z^z+z=Z~1d)3JZqBMvV;{ zs27NoAH!hzqR;8M5pYug1T2(m-fw4o_DdQ5r|>>!!-lNAb1_~`UXQ3{N0sMU{)b47 z1M2jgDFt9nRwIa)dD4Lvf~Y$b2h<21blCAhj8ba+)9pmA3FtCL(Z)G4RvaN6>7s@{ zYJp1{Z^nXzh6P#bOoqBc{6>Wd15#&|4IBPC2H_cAIY+`V@o;>B<3c-YBL?jmkH1uI+8)qGtdOCvL!N4Zm$NM;1bx53 z(2y5ks6UP2=0kq=YDULU%eL{6Y1{bqu}}vSn%ZM7!s$w&eQ^)?P>%%|>N>u+7n6Vb z@IzizI^IaXhsL)gLtlHp+bn38<2Q%(ekL>gQ11m8>RG?krAZnu-LKErYdOp|pkJz} z(9L=w{*A*qojA#d(~HvO$bm1Wq_#^~D1UD{e@SOl2pPi+zMdWR5I`SK*Au=R{_HpF z$tP5`es$1y4qGM-1H;dK)POa)uSxc#atR2zJMeBgJ3q)pqL%r)np>U(fd@ihwA;!? zfMLZj03z(1h@(O1J-ioB8}}op#p2f^H49bS+wu1G-vcEiYg~x`5MS^h7yX;^8Xx&M zdo^CtWmq!dAL(Wt*RP{t!uv3RHXhG6`_aXgb}m&7I8xdiHJ}QH{EwqN74bCdx#v7X z+mm^-Jx75I1H+Dc@I)MNqoxXn8TauS%X3Ru6b6>Lp<0rTFv#4?Wpt5anU(HRVHQLl z<|4cGVXMvtv#cNJ(g`?7J)14ZbQCG?jHVzyqZ6!0gF8Lsh*Re9en5O zcgM8YXLm+-QSr?`2et0!$UK5f1BsNmpMK2nFyW`({q)ZHdit6sVpp`_C730m;mBZE zFH+2YI!lq@TrDCm(i%L@VE;agD|b>?R8w8QP%+5!yw|!_emPL3x9;14B7fokH2S zJVg>UG&oJ#0S)z#Q@D@EYq=JS@rJf+P*3>74}bnM>hCQMvhno?Ym)TDEc%a1z?={m z{#~lTd5IbY=2#v3VJ^5jtdL}ghk{FphmdHCisR})SLH)3k9YDT8O$l6LtddF|DI1i z{v#gR8Pie;I{tJ&S7-T{>#Poa&4vL_O9S{477_GE#v5dbcvRbAkI1syZ$Q>zAsY%i zZzm0Wu}xF}tHRD);&k{cz>t2D2eexaU&Qf|0VPv7Cn`im?7C*da(6kG!#qP{H^V|! z__}<-j*j-g^uLhMm4c372iMrcZ^b_o5poZb9L-woXyLVR&Tuwd z0w^)?Aa!d-hY8Tdkn?X;8`3bE?>-Iu1OfRie$2f~SxXzX0;pMn!~y!dGksj1;a*8i zWkdqf44nw$1|TB<{9CsloF-hS3+i9diR_cvVnmxNX+hGKE*?1N)#x-ir&cch$Ib0_ z!F6FTemSND+a8NAXa;Dkw`&-xAi*f@02P|=iT7ndh;TOyR|`}{T7+_pk)Mdqqy?3z zFm#~=@FqKg1j6Hy_?Q-v=qNB88z2y+et<&pnRuOcI{W9cZD*)<1*TNZz)*f7KEd3M zh;>7oQb0=Gh=r>3H(gaLbcg$!fuVfsg0ASH%f|SBg_>b6i~rQSmr*pDTJG{Pqb9VY zDD<4BF@{_1DGJSUa^GT$)t&twk(n=EEyI)8CY zdp$+88meO;e8g6G5W9spNl=Jbs?ETaBE$jweg@}%$|1WW0fzP{zSjyK2AO;OCmoxA zpqtSbYqc)jFbkbNk2*OGGLO@H{4X9iUdgS2hDKmwD6I?$!H4N({#UW^&#*Wl5h`*H z2r(B|-fbr)Ju}Ql9+yfxAm7PeT(4iaZ#0(vy1W~T#Oh`URZ_jtT z{Zw5aVl1Y7nk(cy4^mm`tmL~PsWadpl;ybkA9MHmjra}fx!?-5=%$qn5g)v*W= zK<{3x-1z{!CqTmuJ9Y83j}VE1#67$e{wqSrutWl%OAW6TE00HbEBu#km6lOqNngSK znvmncqX!V9-qLEv9VOwDC7afy5)DG%^W)rt-Vo((AU+1wJ(nVA`5#Tz6s-k|?R*}b z``iaq{L|B5`#VZz%E!mjd0pzPP)o@j6>5SR7t)V2Y3|dmi#sbUb#JF?LPGFS5?pK# zl}4Ch045=nmx&0u2kBiJN!-u-AI_fuN(?+m-A`|BXVXLfg-7Xor4(=wdY)d~(J0|! zM$KSa4y{i9v-HHe;!R;I!u$1pycn&wwBCYD5V>xMu)=_^CL^?un6;c`5YJT$>mmbByw@DJJsLwqJ}&4is*Y z!eLb@Aq|roS$IbTxX-w7+imDrK&s3yC@s#m<;JQb&Cbs8w=OP(zfUim;7~qLfW1RM z@b-28A5kb6jt2@K`|4DHz<&V#>JWCy3k}1-TTLUupmUF2+t9gL>U;Mq|&jChK# z*a-f@+aRO>lZ9^$>} zYEx4(j1+;Olp+pN$*1@zFHf6&iZlq_hDCfdn}{DONv;fgsIYYR#Y#2ALFeF-zq- zt%-RNX%LG3#3#8-D-#Xoi$% znxPc2*Mw#W(04BBfJPd_TG9eO)n2vqIQe5ABmx8aJxAwl1QouevX=Y|1ckSpLUG=_ zB~?qdI2r!?banFyx;dc0*zeL0@+ujFohn5;1c3MWFIpRLcD|q!aXyqe+t7-@=PnBI z2Ur~AV4<6x-&H0Pz#fPJ- z#O~rv+Cu(%BRfilVL*H>bOH(zcW9&G=9@GA-}!~S%g+*A{$pMtAUPHMMr}xK#WM%^ zyGeC(Q2D`7CWNo0`3?ku2U0-$V96J?AYzT&k4%OZCNF4FsYtl3GGM`*TizR5$a^UT z47FhqR-OWMh>6u=OzfRZsx2`QK@hm-4Os2yG7MVnBoz#2ZWQ(>5+uHRHCxDqS`B3? zBLMu))$EmsNW-*?E~AM6+#@b*Tm?Jc(#17&~+u`Zbn;i9m4nS6`=X>91aPkne~5LkQ1JwDLM?8VVXh9-?-M-1ri@O&99tDDmV z$(h^a5;m;MdeN};G6w}`y2ud!Kh#bz!$g}(npvyzE?rSWhcwYmD69R4zy3m`c|%2o zubt`mBcNdKyV>uvElq3icBc=^+rJDmz#wTkjfM0>eDDSDu>PbtmBr9O1VKnoPl#@yUdXS=g8ulrE7lA#TmY%Vl48GgQ>zDe@#PB*>c$8ds1Vs+|AGz_5T z5&|k2z|PC$c4YYicEco4r@H4t`bX)DBu#5&@P{Z-42N$eT&Dp!{iqo{06FsK3B3U` zayrcTAeoN<*tx4a%QO2wyLpvhf^~+4GlFMWV%y+(`YM@F91(2l9w1G1syi%vucidL z!eaX7q9CWkjA|6P7hN#rQ)j1%g2aXiSpm$aqukISA5s8!;9*EsFu6Cw=|jF86Io(N z!Bj!RfGjb(w_GL7tE`0hki@945Y|!PdnmN9YfDYSqTMk#3Q9Z-$#R7=6>swKszpEy zDIe=}n32_x?nN#d7IeKzvEgq>4Ox;QpH)!qC0^TCiH9K-l;%R3224ym+4i1L8ac(tOvMdkgCt)iL<(TDJqUZ{nu zrKeVNGQ&YCCK~^&5~8h%MgSrAH1~{dKBp5~DLiF{unco_d6yv}`6!d5`{Q{cP$n6} z%s3Dt$&iDQ2eCXjCkt90U0fD7AUG2ca(Qs_F$i>gRB&;8+mJvx2LNiVMaEWQ7ETT%Hv!4nCXfe$9ZakRu_Pr%t-w z*B^3y+SIABkj_(QeCMR8Q&AzD2lISIKD(HZ1?qrc&XJJJYr`d7`>yxY4X6!)gVY10 zY$|Umb7+>Sx{mA@Xb_5xrzli({8}4Nk_f@PR9SB2K`#SJ6-GfKPa0HGpE_yeNJ!@K zRT)GX5MO}?p*+6)qoUj#5MLP)f_Y&2$9!nX$?{o_gk;QTd{`f!KB;zmx8}19SCiVk zUQMX55uMEeQounf7Sd!!c!tiJkZf&2RIreaO(lBgdOY73=kK*Pm2w`$Vpf>%+<{~2 zV4l{jkZ2H!jfeTpHAqD$wl*HXf=Dc`=mG7<6B@0>RX{-^i=Eg86gus(lXwt&4;2d= z5!$iUWM~<2t5q>IF2tWFahmv~!B&6s(^_t;G#r8jj%fGIcM1yGETNP`5$y@ZvmlZc zTGjAuFG(T}QdxqDjiVDKn8brvmSEz;Xi+{!*`8oZF2u7klUfrrHr$b9+RMxWTaosS zvy)2~SV+fVy7_K7qbqLZQj*qTx(I_z7PwyK4S2}bXIMz*9+oS_26*UUkjbi|P}GTR z(q0vT2B9oRa&yIrC{(KYe3`zI))GraS%qmBgcPaiEuLMfy ziUCxxkCwE0lMYm%Tdj%{+lClWLBoK@DFo)5Q7}-%qGe1Xx~e?SkPv(-1n0aS`a9nqnQYR1-ZBUl2eFz(|2 z@8AB}pZ^*EA8dLzAzuE1E}^HhZPs)!OmWa z7fIW&G#V|(uw^&{WpKKHuI$jYz#|Co@A92?!e+z5Tx~NW0DR0qe|qJ3GC3>{#p#`v zoDdm4Eyh1HBn0mzLAr6Yp>G}GO3TwA^E8uLFL|Y0IoW6_Ryx&kC`A9JE;_oN@2~jA zU*7h|(>x*q|IJX2w*e3qtNw-O)mSCe^7s{uri z4w7*+$UI6xH>J~Budnp7TgzBwmq&>RxhF}EMn&nn3!0ykzFB6-y99G4Bp)QnOX?MD z&gB+iOS`{I4m?QRPg3*UVy+5b%lJZJ6k$4tR+cG4VhubX`+JtmL4hDrn&uH7V8J;UOhQ&V=M!f7-2A zXM8n}$Xtd7iTlu1-w6Tg+wmtkMPukZR}z6%Dh?1OmJ=cP9lDA`_+r=@t{SjR0PZnQ z=DGbxXLQla793835q4^ofP zn~U+cuS?eqNg*MWSRz91mRsR5JEI%Tp>><%;(iOf(-RYVdCDi5IIm!8oe zh>$Uio7ZF#3_1w0>Pd!eAr?{4xD!nAYiNZZhOU0aj{pMyvEbA4&aEEtv}ApsHS%oY zWx#{lv!F(?Kb^VD+x!p0FH2Ec3KmFcBF%9zbwjC!hcSUFv^fICTr zpkWR!pz`1(!4eDYyGgs)qGgyMsLMGL6p*9*tF(RcrSPdOM`bYRAV;}JI^VYCsEC5b zL$7CBZA(RPe7_Dyt>%Ra}k>r90>}@iJUzv zXN}nAIIAjxhg}@&^ZQ12x=xo-@)5d zB$IPz)A?jy@zZdBt^!H*0^X(1i!9%meg=m=wUI-hdlMJ)-ClM44D(6~Qu954q5Ho2 zWJgy8{LX3X){|k5O|fe7k`F7WJPzJ(=d>wD-A83A3Mz?v0vKed3F==fue&gnX%!85 zRSnhpL4X!Y>N}53)k;kwunI4zX{J`vwR+)65TKITn=yMenQe;wn5JsD;zy!ED3+qs zC_HT`Du9rqmaR97pRO;zq?2>E(@$uz@p>!!h=!GIK#4S7<3clCf;xT^*>QcP&RV zTg&zcgG?-XuYGex#9(XD3l>D~EWTZin-BDMANv#{FreRaFJ$L%=c{ckIfpMjw8 z%qh^RIc}hqPJ!C+fe7kODa%-#RH^`>_?A<2=YQwk7$!YbXgLI^59qd>1vMqznS<{B zSrOfa!V~}(T=;{}B=Ix|-NPd)`AAQeqJ~t3&xH(F5c!Uty6Zp0&jjFZ({icZ)p$`( zH5t+nz6}OvAmH!d6`skG0b*!=;Nyay`c~2YV)CigelZ0V?JsAcTJ4u}QEyQax}wuP z*D`PnN#1=JLIwx~``eK!kLfVX^Hs1{F|`D1X@Qr>LJih3LRm{c4Yt-Xzzx>YQnaDg zG6K{Pw)E470^1O_j!|+4hXQeRoK0qPIr7s#&Kv^P`mm+jB;-v84OB*eO4*H)@?^bv z&FjrY@EWF;RML$Y(0>rU2sU*~P;C8_k4IN?v5>vP5B zLYcwM_JC;NwpXK3z9HFa9J%+TC#wnJlZzGDWsKD8|-GHditZA<{uhb>*eJ2)SE z2DrCedABIDoMB!_6_o)3atH-APSp?!*$7n#h4tmn{y`+({waaRy@&x@6L)AS$=p

K)3fMmGwlf-IS?S~B`^R14 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Ƚ$rm7^RNI5u^3CR49l?+tFQ)Zu^t<+37fGM+pq&Wu^W4^ z5BqTthwvAU;BOqmKRAJZaSCT}7UyvRmv9+ZaSbqY0X!Ia;C>+Mq4kqXRmjGrFQ1dY~tIqYwI_KL%nDhF~a$V+2NF zG{#~aCSW2aV+y8WI%Z-P=3p-7V*wUnF_vN(R$wJoV-40}JvL$!wqPr^V+VF&H}+y5 z4&WdT<1ZY=-#Ctca1#IGG|u20&f_93;R>$eI&R<=ZsRWQ;Q=1vF`nQVp5rB6;SJv6 zJwD(QKI1FC;Rk-=H~vGQb^!!NPy|B=ghXhBK{$j*L_|UqL`8JOKrF;YT*N~HBt&8) zK{6yqN~A&>q(ypUKqh2HR%AmCs}6h(2AKq-_)S(HNsR77P|K{ZrI zP1Hgi)J1(XKqE9pQ#3;hv_xyPK|8cZM|46LbVYacKri%0U-ZKO48&jz!7vQRNQ}Z5 zjKz3Nz$8q@R7}GR%*1TW!92{zLM*}(EX8uHz$&c9TCBqcY{X`4!8UBiPVB-S?8SZ@ zz#$yQ5gf%a9LEWq#3`J{S)9WKT*PHu!8KgRP29pA+{Jx7z#}}yQ#`{9yu@p~!8^Ri zM|{E;e8qSCz%Ts99|US2KoA5)aD+f8ghp6|Lj*)bWJEzUL`O`-LL9_Jd?Y|3Bt}vs zLkgrsYNSCrq(??%LKb92cH}@V-VH80z6h}#vLK&1rc~n3pR7O=)Lk-kK zZPYu3Z+pNg4(-tqozMkc(H%X|3%$`7{V)InF&INI48t)J zqc8?zF&+~z36n7u(=Y=wF&lF*5A(4Qi?9Ssu^cO~3ahae>#zYEu^C&i4coC3yRZj) zu^$I;2#0Y5M{x|taRMiC3a4=v=WqcRaT!-|4cBoKw{Qn{aUT!x2#@g;&+q~-@fvUN z4)5_1pYR1=@f|<#3%~IPfjR~d1VIrTArK0o5fW?~lRU@qok0Ty8~mSP!JU?o=LKdi+%Y`{ir#ujYDcI?D1?7?2_#{nF| zVI0LVoWMz(#u=Q$d0fOLT)|ab#|_-VZQR8@JitRd#uGflbG*bWyun+%#|M1EXMDvs z{J>BA#vcT37eEjMLvVydD1^aZ2#4^9h)9TnsECfg5fiZx2XPS}36Kbhkrc_00x9ti zQX?(WApWD1u@rj*=*aGAN7ksDMhSjH;-H8mNidsDpZ_ zkA`T3CTNQ0Xn|H}jkaiq4(N!^=z?zOj-Kd+KIn`77=S?-jG-8Y5g3Wl7=v*bkBOLs zDVU1sn1NZCjk%bI1z3p1Sb}9(j+I!2|F8z@upS$+30trg+pzAuPfp0wN(Yq9PjpMhwJ4Y{W%8BtSwWMiL}La->8mq(&N~ zLwaPyzsQU%$cF65iCoBoyvUCND1^c&iee~%k|>QbD2MW>h)Sq}s;G_{sD;|7i+X5) zhG>i?Xolu!iB@QXwrGzI=!DMbif-tEp6HD}=!gCoh(Q>Fp%{)47=_Uoi*cBMiI|Kj zn1<wIwgd|9c+Y!y2r^dThidY{6D+#}4emZtTTA9Kb;w#t|IDah${{ zoWWU~#|2!%Wn9HI+`vuT#vR5&ot zA~Uie8?qxOav=}$B0mbC5DKFxilGEbqBP2&9Ll32DxnIhqB?4z7HXp|>Y)J|qA{AF z8JeRdTA>ZvqCGmG6FQ?Sx}gVpqBr`WANpe;24M(>VmL-%6h>n##$f^`Vlt*+8m40= zW?>HIVm=mN5f)=9mSF`}Vm1E5TCBqcY{X`4!8UBiPVB-S?8SZ@z#$yQQ5?ewoWyCI z!8x4AMO?xaT*Y!81I^OT5Axyv2Kbz$bjhSA4?{{KRkkLEtU{ z1VJzaM@WQ182p8B2#<(}geZuL==d8k5esn;7x9q*iI5mckqjx268|7I(jpx)AR{s% zGqNHZav&#iBMYy&_qX8PBF`A+o zTA(FbqYc`jJvyQjx}Yn%qX&ASH~OL<24EltV+e*}I7VU=#$YVQV*(~&GNxi0W?&{} zV-DtFJ{DpTmS8ECV+B@WHP&D))?))UVKcU38+KqPc4H6rVLuMy5RTv|j^hMQ;WWO7Vh9K?&AR-;W3`#8D8KeUgHhk;XOX$6TaXpzT*de;Wq+x4InUr zA{as-Btjz$!Xg|ZAR;0o3Zfx8Vjw1BBM#yrJ`y4kk{~IPBL!07AEZHAq(=t)i%iIZ ztjLZW$c5aifX8Vny8IBsE7J!h(>6Frf7~9 zXoc2ji+1RMj_8ao=!Wj-iC*Y~zUYqu7=*zXieVUmkr<6J7>Dtgh)I}&shEx#n1$Jx zi+Napg;5+WliqTz4EKrF;YT*N~HBt&8)K{6yqN~A(+q(M5QM@IaM%*cXl z$c~)Ig*?cM{3w7zD2$>gh7u@=(kO#+D36M$ges_t>ZpNQsExX)hX!bf#%O|OXpWX> zg*Ir5_UM34=!~xDh92mN-sppV=#POIgdrG;;TVBY7>%(QhY6U7$(Vv^n2wp4g*lju z`B;EOSd67uh80+e)%Xu{%h8@_6-PnVD*pGuagd;eL<2Zp+IE}M7 zhYPrf%eaDTxQ?5+g*&*5`*?syc#Nlbh8K8=*LZ_>c#n_xgfIAt@A!dV_>Dk40tk$t z2!;>{iO>jxun30;h=|CDf@p}27>J43h=X{DkAz5sBuI+nNP$%N2WgNN>5&2dA``M8 zE3zX8av?YJA|DE%APS=hilI14q7=%YEXtz-Dxor}q8e(TCTgP&>Y+Xwq7j;)DVn1N zTA?-Cq8&P*BRZoCx}iIIq8Iw0FZyEu24OIUVi-nXBt~Nl#$h}rViKlcDyCxwW??qw zVjdP?Ar@l^mSH(oVio?w8mz;5Y{VvP!B%X?4(!5i?8QDDz(E|w5gfyDoWv=d!C9Qg z1zf^qT*Woqz)jr79o)lxJj5eB!BafP3%tT>yu~|wz(;(>7ktBa{KPN(L7<)i1VK;) zM+k&MX#9n+2#*Megvf}BX!sj35DT#p7x9n)36U5{kPOL@5~+|HX^;--krDqQGqNBX zvLh#QArJB*KMJ4_3Zp2Bp#(~zG|HeH%A+DGp$e*^I%=R6YNIadp#d7AF`A$mnxiFJ zp$*!iJvyKhI-@JPp$B@RH~OF-`ePslVF-p|I7VO;Mq@0-VFD&%GNxb}reh{%VGibE zJ{DjR7Go)vVFgxVHU7g|tiuLu#Aa;4Hf+aE?7|-G#eN*XAsoh09K#8m#A%$tIh@Bu zT*4Jx#dX}kE!@Uk+`|Jr#A7_cGd#yjyuus2#e00fCw#_Ne8Ug?#BcmT;9da)K`;bI zNQ6Qd{Dp7`kBEqbD2R&a_!}`13vmz^@sR+DkQhmk3@MNj{~$HeA{{ayBQhZ~vLYLD zASZGo5Aq>D3Zf8-peTx?1WKVa%Ay=9pdu=x3aX(xYN8hEpf2j80UDt(nxYw6pe0(P z4cehSI-(Q0pewqg2YR75`l25OU?2u#2!>%eMq(7kU@XRC0w!THreYdqU?yf`4(4G# z7Ge>WU@4Yk1y*4-)?h8xV*@r}Gqz$Ic3>xVV-NOWKMvv$j^HSc;{;COG|u82F5n_A z;|i|fI&R_??%*!&;{hJwF`nWXUf?BO;|<>7JwDHv;tzATWX=7(yT< zLL&^qA{-(hA|fLSq9HnBASPlX4&os`5+V_jASsd~1ybQ3q(NGwM+W?hOvr+)$c`My zh1|%Cd?zL)hw+$*NtlAEn2s5kh1r;kd02pj zSd1lDhUHj^Rrn8Uunz075u30DTd^HGunW7f7yEDk2XPoja16(B5~pwmXK@}Ea0!=j z71wYBH*p(xa1ZzK5RdQ#Pw^Zt@CvW-7Vq!@AMqJq@D1Pb6Tk2Wf%*gx1VIrTArK0o z@fX4(JR%?xA|ooI;cvu1EW}1!#6tokL}DaCG9*Vzq(W+>K{}*IM*NG+$bxLhj-1Ga zJjjduD1bsJjG`!p5-5q%D1&k+kBX>-DyWL;sDWCjjk>6Z255-JXo6;Fj+SVJHfW3X z=zvb>jIQX09_WeQ=!1UfkAWD3AsC9`7=ck3jj)=!M?si+&h@ff$S-7>3~(iBTAXu^5jDn1sogifNdEnV5|^n1}gTh(%a} zrC5#?ScTPCgSA+X4cLUu*otk~ft}cmJ=ll+IEX_yf}=Q&6F7y_IE!<*fQz_{E4YU1 zxQSc1gS)to2Y7_Xc#3CuftPrVH+YBl_=r#Vg0J|FANYme2-GitzzB+92!W6YjW7s{ zaEO42h>R$RhUkcan23!yh==${h(t(&q)3hwNQHlp25FHV8SpPMAq%o1J8~cwaw9MD zp#Tb^Fp8iUilZb-p$y8RJSw0PDx)f@p$2NAHtL`r>Z2hVp$VFzIa;6VI%Z%NW@9eqVF4CmF_vH% zmSZJW;XkawI;_V=Y{C|7#dhq#F6_o$?85;Z#917bJi-$^#dEyCE4;>Ayu$~4#AkfLH+;uW{K6ju>K{N51VwO!Kq!R9UkHov zh=53ljHrl)zYznm5F2q34+)SEiID`!kQ^zI3aOC>>5v{7@h>tX3$h_Qav~SY^SRpdlKg37VlfTA~%&pe@>?13IBI zx}qC;peK5x5Bi}$24WC~U?_%T1V&*r#$p^MU?L`C3Z`K?W?~lRU@qok0Ty8~mSP!J zU?o=LKdi+%Y`{ir#ujYDcI?D1?7?2_#{nF|VI0LVoWMz(#u=Q$d0fOLT)|ab#|_-V zZQR8@JitRd#uGflbG*bWyun+%#|M1EXMDvs{J>BA#vcS85I_(FLvVydD1^aZ2#4^9 zh)9TnsECfg5fiZx2XPS}36Kbhkrc_00x9tiQX?(WApW zD1u@rj*=*aGAN7ksDMhSjH;-H8mNidsDpZ_kA`T3CTNQ0Xn|H}jkaiq4(N!^=z?zO zj-Kd+KIn`77=S?-jG-8Y5g3Wl7=v*bkBOLsDVU1sn1NZCjk%bI1z3p1Sb}9(j+I!2 z|F8z@upS$+30trg+pzAuPfp0wN(Y zq9PjpMhwJ4Y{W%8BtSwWMiL}La->8mq(&N~LwaPyzsQU%$cF65iCoBoyvUCND1^c& ziee~%k|>QbD2MW>h)Sq}s;G_{sD;|7i+X5)hG>i?Xolu!iB@QXwrGzI=!DMbif-tE zp6HD}=!gCoh(Q>Fp%{)47=_Uoi*cBMiI|Kjn1<)JFp}LSr;VGqgZUv_>1WLwj^YCv-tq zbVm>LLT~g%KMcS?48{-)!*GnmD2%~ajK>5_!emUvG|a$E%*Gtd!+b2nA}qmDEXNA0 z!fLF+TCB$gY{F)2#Ww7~PVB}W?8AN>#33BPQ5?q!oWg0G#W`HSMO?-eT*GzT#4X&x zUEIe5Ji=o<#WTFXOT5M#yu*8Z#3y{gSA540{K9Vp8WKQY1Vu1}KuCl}7=%SQL_kDD zMifLtbi_bR#6}#%LwqDeA|ydlBu5IQ!aqoZv`CK(_!pUw1zC|DIgksvkr(+;00mJP zMNkaIQ4*z424ztm6;KJ4Q5Drt12s__bx;rW(GZQ$1WnN#Ezkr+1L)jhP=G#(9U>Zr;TVZg7=y7Gj|rHB$(V|1n1Pv?jX9Wy`B;cWSc0Wk zjulvi)mVeISdR_Zgw5EBZPVA zTeyR}xQ_>TgvWS_XLx~^c#SuBhxho1Pxykb_>Ld=h2ID?EP%iWieLzVkO+-12#aut zfQX2UD2RsWh=G`hjW~#h_(+IENP?tDjuc3Re~<=gkscZFFESwuvLZWjAQy5YFY=)P z3ZgKIpcsmyBub$S%A!0fpb{#hDypFdYN9skpdRX@AsV3xnxZ*cpcPu9E!v?2I-)bW zpc}fQCwid|`l3GuU=RjlD28DKMq)I^U>wF{A|_!9reZo~U>0U$F6LnY7Gg1$U>TNU zC05}-tid|0$3|?z7Hq|K?7%MU#$N2h0UX3(9KkUh$4Q*R8Jxv=T)-t<##LOy4cx?S z+`&EE$3r~A6FkLpyud5G##_9@2Yke5e8D$-$4~si9|Rg6KoA5)aD+f8gvMV8i|~km zNQjK6h=#ur1F;YraS;y*kPwNH1j&#bDUk}Pkp}6I9vSg3G9wGJAv zp)iV~7)qcdN}~+Qp*$+05~`pos-p&Kp*HHG9vYw_8lwrCp*dQj722RJ+M@$Hp)= zh=Qnyj=vETu@DDw5g!SV2#Jvt$&dmm@efiXEz%(aG9nW)BP+5Y2XZ1e@*p4bqaX^Q z2#TUON}v=A&itNaNT*!^Q$cF+bh{7m> zVknN1D1|a8i}I*|N~nygsD>J-iQ1@xdZ>?vXoMzcisop6R%ng3Xon8yh|cJOZs?Al z=!HJ$i~bmZK^Tmo7={rTiP0E?aTt$@n1m^qis_hvS(uHvn1=;eh{affWmt}tScU(v z2J5gM8?gynuoc^}1G}&rd$A7(a1e)a1jle3CvggAa2Drr0he$YS8)wDa1*z22lsFv z5Ag_3@D$JS0f);Kk*BH5NK2YK@b$d5dxtQ8h;@y!XpAAAu^&O z8vaHM#6oPuMLZ-xLL^2KBtvqfL@K048l*#dWW>M7j4a58?8u2+$b-Ddj{+!!!YGPj zD1nkFjWQ^Q@~DVPsDi4fjvA6nRGn1i{Pj|EtS#aN1ESb>#TjsLI~ z>#zYEu^C&i4coC3yRZj)u^$I;2#0YL$8Z8CaT;fE4(D+Zmv9AFaUC~s3%79>_wWD@ z@fc6=4A1crukZ$M@g5)W37_#5-|z!J@f&{-cys_k5DdW)5}^fnMm1 zzUYSm7>L0bf?*hrkr;(B7>n_kfJvB)shEZtn2Fh#gL#;bg;<0oSc>IXfmK+IHCT)F z*nmygjIG#)9oUK8*n@r8kApabBRGoVIDu0*jk7q13%H2OxPoiAj+?lJJGhJccz{QE zjHh^p7kG)+c!PI%kB|6-FZhb@_<>*ejX+}p2#lZzh7bse&6&UgLsIKgh+%WNQ&f0fmHYhX^$p*TvS z6w071%A*1*p)#tX8fu^>YNHP7p*|X-5t^VWnxh3;p*7l~9Xg;RI-?7^p*wn_7y6(t z`eOhFVK9bb7)D?uMq>=dVLT>c5~g4(reg+XVK(Ms9u{CB7GnvPVL4V}75>8-tiyV2 z#3pRPR&2)(?80vB#XcOsK^(>r9K&&(#3`J?S)9iOT*75s#Wmc(P29#E+{1l5#3MYx zQ#{8Dyuxd|#XEe!M|{Q?e8YGA#4r3ops@i2K~Mxo2!ujt{DrUxj|hl_$cTz)_!}`0 z3$YOw@sI!skr+vk49SrasgN3JkPhjQ5&t4HvLG9>BPVhp5Aq^E3ZM`QqbQ1@1WKYb z%Ag#|qarGy3aX+yYM>Tsqb};90UDw)nxGk)qa|9Q4cekTI-nCeqbs_h2YRA6`k){B zV;}}$2!>)fMqm_1V=TsD0w!WIreGSTVw#Z~Q^vaRCHDFa$?PghCkng>VRuh=_zJh>Ga=8!-_J zaS#{rkpPL17)g-~DUcHXAT`n=9Wo#zG9fdvA{%lbCvqbX@*zJ8q7aIpD2k&5N})8$ zq8uuqA}XT_s-Ze+q893)F6yHJ8lf?oq8VDCC0e5m+MzuRyhG95HVid+;EXHF3CSfwBVj5;(CT3#}=3zb-ViA^LDVAdeR$(>PU@g{T12$nZ zwqhH0U?+BC5B6a{4&o4w;3$sc1Ww^J&f**{;36*L3a;TgZsHd1;4bdt0UqHop5hr^ z;3Zz;4c_5BKH?L;;48l42Y%r<0*wzKFoGf&LLekUBMibK93mhhA|nc-Av$6pCSoHF z;vqf~A`y}xDUu@vQsEz@L0Y6o2K#711i zLjoj3VkAK_Bu7f5LTaQzI;2NN{EN)Uf^5i+oXCYd$cy|afI=vYq9}$ED2dW2gK`0M zZc#o!D?k-Rl~D!NP#rZ<3w2Nz_0a&0&=^h83@y+StkJp30=??-O&TR&>MZx z4+Ag|gE0idFdQQ>3S%%9<1qn~Fd0)Z4KpwkvoQzrFdqxC2urXO%drBhuo`Qy7VEJA zo3I&Mu?;)06T1WG++t6F8op0-00(gxM{o?saT2F+24`^|7jOxeaTV8a12=IScW@8) z@eq&j1W)lCFYpSl@fPp!0Uz-hU+@jz@e{xB2Z1IA5ClOH93c=2q45{OB0M4>5+Wli zqTz4EKrF;YT*N~HBt&8)K{6yqN~A(+q(M5QM@IaM%*cXl$c~)Ig*?cM{3w7zD2$>g zh7u@=(kO#+D36M$ges_t>ZpNQsExX)hX!bf#%O|OXpWX>g*Ir5_UM34=!~xDh92mN z-sppV=#POIgdrG;;TVBY7>%(QhY6U7$(Vv^n2wp4g*lju`B;EOSd67uh80+e)%Xu< zu?`!s5u33E+prxwu?u^!7yEGlhj182aSSJL5~pzn=WreuaS2y&71wbCw{RPGaSsph z5RdT$&+r^C@d|J77Vq%^pYR!9@eM!l6Tk5XfhPqJ1i=s-ArT5;@E5`%JR%|zq97`w z<8Q=7EW|-v#76=oLSiIEGNeFC{Dag;i*(3Q9BgRvNo37CY*n2Kqbfti?%Ihcp}ScpYff~8oF6RNBxPXhej4QZ?>$r(qxP!a6j|X^! z$9Rfoc!8IAjW>9Q_xOlU_=2zajvx4i-v~50fWQcfUc7L zN}&wOqC6^~5-OuAs-XsIqBiQFUI3k2)DO@_rlF`YnxGk)qa|9Q4cekTI-nCeqbs_h z2YRA6`k){BV;}}$2!>)fMqm_1V=TsD0w!WIreGSTVw#Z~Q^vDFFmQFa$?PghCkng>VRuh=_zJ zh>Ga=8!-_JaS#{rkpPL17)g-~DUcHXAT`n=9Wo#zG9fdvA{%lbCvqbX@*zJ8q7aIp zD2k&5N})8$q8uuqA}XT_s-Ze+q893)F6yHJ8lf?oq8VDCC0e5m+MzuRyhG95HVid+;EXHF3CSfwBVj5;(CT3#}=3zb-ViA^LDVAdeR$(>P zU@g{T12$nZwqhH0U?+BC5B6a{4&o4w;3$sc1Ww^J&f**{;36*L3a;TgZsHd1;4bb5 z(7DBf01d)NqNjL19e ziv&oBBuI)BNQu-)gY?LNOvsF^$cCKAg}lgzf+&QdD29?Kg|aAzil~IDsD_%Tg}SJR zhG>MQXoi+(g|=vij_8E0=!Tx?g}&&A0T_rO7>W@Xi7^<937Ck#!c1uo>I19lNj_`>-E}a2UsM9H(#^=WrgEa2eNd9k*~B_i!JN@EFhV z9Ix;i@9-X<@EPCm9Y664fu;oz7{L%6p%5Bj5e^X%2~iOZF%T1R5EluM5J`{}DUcGW zkp}6J0hy2)*^nK%kQ@1sAB9jD#ZVljP#Wb>9u-juRZtbxQ3JJ62lY@N4bccq&=f7u z60Ok&?a&?_(FtAA4L#8debEmCFc5<=1j8``qcH~KF#(e?1=BGDvoQzru>gy)1k11- ztFRhtu?`!t30tuZJFyFUu@47u5QlLD$8iFuaR%pc0he(F*Kq^4aR>MD0FUtm&+!7U z@doel0iW>&-|+*#@drVs2M`n?5E7vg2H_AMkq{Zt5FIfQ3vm$-36Tg%kqjx33TcoQ z8ITc~kp7v(9lg*S{m>tSFc`xy9HTHA<1ikRFd5S@9kVbS^DrNauo%m*9ILPzYp@m@un}9Z z6+5sKd$1P=a1cju6en;Jr*Q`7aRHZc1=n!{w{Zve@c@tT7|-w=ukadg@eUvH319II zKk*BJW&{uz!4Mpw5E@|-4iOL$kr4&a@i$^2HsT>Z5+N~?Avsba71AIrG9V)|BMY)4 z2XZ41@}mF>qX>$l1WKa}%A*1*qYA2{25O@Y>Z1V~qY0X$1zMvG+M@$HqYJvD2YRCq z`eOhFV+e+01V&>F#$y5|V+y8Y24-Up=3zb-VKJ6rIaXmc)?yttViUGv8+KwB_F^9n z;t-DF7*668&f**{;u5an8gAki?&2OE;t`(W8D8QQ-r^lT;uF5&8-C&!0?iB{FoGdC zLLoH5A{-(j5~3m+Vjw2sATAOhA(9{|QXnN#BMs6c12Q2qvLQQiAvf|NKMJ8RilI14 zp)|^&JSw3ws-Ze+p*HHG9vY$%nxYw6q7~Yr9Xg^Dx}qC;q8Iw29|mF&hGG~-Vid+= z942BCreYdqVix9N9u{H|mSP!JVine4EjC~ywqPrEU?=uqFAm@!j^HRx;3UrAEH2<8 zuHY(e;3n?iE*{_^p5Q5-;{{&h4c_AeKI03%;|G4@4}#1JASgm0B*Ne?ghvEKMifLt zbi_m~#6>(LL?R?bGNeQ*q(NF_Kt^On7Gy^b1WM+bC97j#Dt^hO`_#{dk*5Ddd`jKXM)!+1=>WK6?!%))HU z#XKy;A}qx+ti&p;!CGvR$Rj=vELu@MjPkqC*A z49SrS{~#^WAtU}p7Gy;ZjEsN**|n)1s=V25O=X z>Y@P}q6wO!1zMsF+M)wGq6@mB2YR9p`eFbEVhDy}1V&;E#$o~{VhW~W24-Ro=3)UB zVhNUF1y$CL0whEdBt;6O zL~5i#dSpN*WJWe*M=s<>KIBIs6h<)=M=6v>Ih02wR7N#aM=jJwJ=8}dG)6NtM=P{O zJG4h9bVfIHM=$h7KlH~S48|}F$0&@(Sd7C&Ou|%5!%WP=T+G8lEW%PO!%D2e8mz?z zY{V99#SZMm9_+;d9K;bE#c`a#X`I1%T)<^q!FAlgZQQ|qJiuc-!E?O8YrMgGe84As z#y5P&FZ@QJxd8-5Fa$>^ghp6|Lj*)bWJEzUL`Mw7L~O)CJj6#rBtjA-MRKG-D*S`A zNQaF07g>-MIgk^1kQW6|5JgZFB~TJ&P!<(X5mitXHBb|EP!|o*5KYh&EzlCJ(FX0& z0iDqW-O&TR(Fgr80E00E!!ZJ*F$Uu?0h2KW(=Z*gFdOqQAB(UU%di})uo`Qy78|e; zTd);7uoHW*7YA?Qe1jSJTrBMduQ2~`v1=UdlwNVH4(EyFn1kKR`tMmDz0n8# zF#v-x1j8``qcH~KF#(e?1=BGDvoQzru>gy)1k14ktMMP!VLdisGqzznc40U6VLuMx zFpl9kPT@4p;XE$kGOpn|Zs9iW;XWSWF`nT$Ug0&~;XOX#Grr+Fe&II)&krC7f+GY% zBMibJJR%`7q9HnBA{OEz9uguEk|G&WA{EjgEixb@G9wGJBL{LL5Ave`3Zn>$qXbH$ z49cSdDx(UjqXufBHtL~18ln-Jq8VDE722X5I-(Q0q8oam7y6WVi{Iq71m%aHee&RU@LZDC-z`34&We;;3!VuB+lS0F5n`r z;3{t5Chp)a9^fIK;3;0#M#_y3livhO<#DTTB& zH*KLTg+S9bZ9|*3qzjZ%!cB71+&0Ng@6t9vk$tnsVnI+qK=w^gKtNDXP*6}%P*6}1 z5Ks_M5D?J!_dUzZ+?%za&-?t}zr64BF}-)@%$YN1&OUQt@YP~1SQplV4Pgju0-M4X zuqA8*+rkd8BkTgZ!tPK8!(dMs4kMrf5-=LZz*yK14uo+~1&2U2On@4g47G3=)WHlm z9O_{%%!B!G6fA^eAPJ3-f)+@_VrYjBSPEGvz%uB9<6tG62q(iSa5|g;XTv#gE_?|t zfD7RwxEL;lufpYU1zZJJ!?kc7+z2%jW30c->t!)CBKYz14xcCbC{1UtiS5WrB_1NMS)*c(Pd zC5(c7U|-lD4uFH;U^o=U!$g<_Q(!7ggXu66X2EQj14qD-umFyR1~?X)pcxiHD=dLF z$UrCLAP>u71so42z!%^oI2BHVGvO@wBCLY*;C%QptcI_^CGa)4489Im!Z+X=xE^kR zo8cDtCfp9+hCAUqa1VSJ?uYNggYZLm7=8?o!cXCG_&GcYzl5jZSMY224g3~<2fv3u zz{~JQcn$spe}=!n+wfQT8~hzUfPcWp@K5*`taYte8`gvMVF+vlo5E(W1#Ai1z_zdh z>A4X z;Z!&c&V;kzi?9mLgY)6buo}Jsm%!KHGPnZ14p+lB;5xV-Zi1WPR=5rBfN#NFa5vlw z_rU}3J$MLy0FS_r;4%0KJOMw0r{EXx4Eze7gWtdl@H==3{s6DSAK?x76TAg~fp_7r z@IL$^z^1STYzf=Iwy*>22)n?pusf8&FxV4@!w9H= z1dN6;Fc$WM17RE-3{@~5s$mk;z*MM(X)qmTz)Yxz*)R`|fTLgm90Lu|2u;uei(oM< zfey$(7ILr*mcwyyJe&w$fK%X9I0MdvbKr~cB{&Z*gfGLz@D;cez6zJa6>t??4cEeT za3kCVx59032Yd_eg1g~fxDOtH@4-Xx19${}1dqW_;0gE{JO#giXW&=xEIbF#!wc|x zcoANPSKu{x9sUe&!e8KR_$&Mk{th3&Kj35dC;SW6x%sak1U7YQ+OPH4o|`_;c56aJPW^t=i&G8BD@T*z-#b2{2AVax8WW5EBp=q4j;fj z;A8kF{0r8)NvsX)!TK-+HiAuIGuRTgf^A_t*b#PuU12vUgQ2h|>;)rWZ%9BTjDdY% zKiD6}!9j2c910U)B20!Ua2QO3888#-VK&TzBj6}l0LMTBG(r=!z#>=-OP~WXkcAv9 zgXM4>91kbL7vK~)70!S&;T-rPd)|H28E%7b z!nfeta5sDh?t|~b_u%{R1Nb5Q2!0GdfuF+9;OFoQ_$B-beht5Y-@@%w}lAq;^{ zU{lxvwuEh9Ti5}1gk4})*d5AX80-ndVFXk_0!G6a7z_KsfiMoL;1H;W2~Y!*p%xB< zI+y{6Lp{uec`zT2f`xDlB%u*f&;n^#4DHYXOCbvdSO#5i9IS*B;bb@kPKPt#Y&Zwb zg)hMca3Nd-7sI9SRk#c;hb!SKxCX9;8{kH`1#X4g;SRVH?t**ZUbr6~fCu3rco-gm zN8vGe9G-wD;VF0;o`GM(v+!GZ9)1rm!praqyaunspW#h-8{UDx!F%uld9up5-YP}mdpf)TJcB%l(;z&@}a><{DM zAUFgLg$XbbCc_js45q;hms^3*Uq9!w=wx@FVy!`~-dqPr%RMDfk6E1HXdj;5YC*yZ|r4OYjQ33a`T( z@Fu(k@4&n89=s19!bk84dRkHSykarikr3BQD=;n(mi z{1%>v-@}XWGQ0w>!Rzp6coW`+ci?aE9(({F!pHCl{0jzsQ>+c^!1}NOYy=y_X0SPI z1zW>*us!SqJHu`ez);u&_JVTQ8%9DUjDme&U)UcGfP>&*I26XiM3@9qU@A<5=`a&! z!E8}jJV)}B_&h#366V7KI2w+D21r69G(!p&K`ShVCD0BX&^D_zGMCUxly1S;`@GbZ@+y!^TJ#a647w(7e!S~@I_yIf&kHC-NQTPe`6rO;e!ISV5{1Tpq zU%{{8Irt4c4==#);YIiZybQ0xAK`U)1O5ze!e8KRco+T(@4@@<0elGmfREu*_$Lgy zT?~e`VI5cx)`tyY2y6_Sz-F*HYzbSzHn1&h4?Dn4ururmyTR^I278FY;$f1kyB8k~ zhY>ImDxeZZ!5G*F#=?GZ02~Mh!NG6{917Ji0VY8WOo6Fz7)*mYm;tlkaF`8qU>+O+ z^Wi8s8WutW91D%m1Sx2NR!GAVXoC*Oz*5LU9tyA=R={y^JgkHh;UqX2PKDFp3^)_c zhI3#QoD1i{`EVh887_j0;S#tMz6O`U74UVq3a*B0;99sIZh)KMX1En@gWKT__%_@L zcf)t!UbqkLhX>&M@F4sEeh81ikKj>w41Nla!_VO7@D%(4o`z@O*YGU-27U`K!0+Hi zcnMyHSKyEE8oU92f;ZtUcpKhecf z!9h?3hroEKhKVo^D_zGMC zUxly1NPRd^lVfH&bScn98v_uzf_5I%xW;8Pg%Eio9@ zfpuX6*bp{`O<;4_0=9;2V0+jBc7|ObfZbsa7zX7q97aL~jDpdyFN}o);6OMSs$e`+ z!z8GIsZa~kp$=xj;V=j0!jUi^j)sMBEF_^BQqT%%XoGg>gr$&&0<3^8I006|NpLcp z2B*VWa5k)hbK!ir09M0Aa0y%rm%-(5C0qs9z_oA#+z7Y8t#CWs0e8Y(a1Y!I_rnA5 zAUp&Q!z1u0JO+=$6YwNF1y92>@GLwB&%+DwBD@5zz^m{&ya8{*TksCN3-7`E@F9Ez zpTMUu=-Xm2tOM)92CyM)44c5_umx-l+raj)1MCdDKmfbL9xx2bVK|J03K#{WVP6;v z2f%@FFjT>KsD?>U15=?Erb8Xfg2Q1B%!MOiJ{%1T;aEsQGo+vu($EI&&;6-=|UV&HPb$A2bgty=w zco*J-_u)hM2tI*NVbGmoFsuXX!UnJ*Yz&*g=CB294cox>umkK2yFdWD!yYgU%3(N+ zgbEl1qhVhd3kSe~a4=NCc&LU+Py3jcDMuXguCD#xEJn+2jD??2p)z<;8A!C9)~C3Nq7pLhG*becn+S27vM#B30{F$ z;dOWe-h{W{9e5YsgZJS>_y|6MPhrqqVlb=&>%s=GA#4nrz~-<8Yz^DM_OJu&47)%8 zyTcwZ49a0RjD!jp1*2hK7z+o$fp9QX!FZ^KNl*h*p%$h?9n6BmVGhiNBVj%q4GZB| zNJ2BDpcT^42JO%ZOCb*hSOHyd0<46S;AA)rPKUGLY*+>7!ufCktcHu=61WsDgUjJc zxC*X;YvBgC5pIE7;dZzK?u5JG9=I3ohX>$6cnBVbN8nL-3?7Fk;7NE2o`z@OS$Gbf zhZo>QcnMyCSK)Pd1KxzU;2n4u-h=nyL-+_jflp!3-C{7T1M9*Dupw*=o51F<1#Au5 z!1k~M>al1y})Ha00A^li*}H4Nix%;A~h0=fe4L0j!3L z;1akLE`!VAO1KKHfotIgxDjrFTj6%N1MY;o;2yXa?uQ59L3jurhDYF0cnltgC*VnV z3Z8~%;8}PMo`)CUMR*Bbfmh*mcmv*qx8NOk7v6*S;Y0WcK7mhR(09aOSO?aH4PZmq z7&d{;VGGzAwt?+o2iO^QfdF=gJzyA=!*Cc06)*}$!@e*U4uAvUV5oxePz{ry2BtzS zOouv{1&6~NmDw_yaKPn>+lA=32(tW@GiUu@56`i5qtul!k~M^ zU|0v%g$-as*cdi}&0!1J8n%J$VF%b5c7XtPhdp2zl*4cs2^BC3M#H`^77l;|;b5qO z@lXwupa!NwElh_xm<5N!9GDA7!hARy7Q(TRgl0%VE2NN2k*m& z@DY3hpTeMf#b8(m)`bmVL)aKLfz4qH*c!Hh?O_Ml8FqmHc85J+7?i_s7zq_H3P!`e zFcuDg1L0t(g7Hudlb{Bsio)Vr$-vk&KB|KmFbfWc*)Rv@!4WVYj)J3MAvD0T&xZ41Nwz!7t!xcm{qA&%$rux9|e|4qk+p;AMCP{wNBIUz22r zH~8q!@Fx5P-iCMKukaqc4vNSR2-X^J0B!uGHO>;yZ*uCN>I4rQL(97e$2Pyq=T1*2gf*cbML{oz0u2M0qH917!M z0!)M&m<&^)7N)^;m;p24aHxklFc*%1BjG4m01M$5I2Mx71kKO_iy#e)p$*z01D%kC z928&~tbi^!9!`K0;R|pwoC2r8>2M~T1?RvQ;avCtkxCico@4^G{J$Mivf*-=e@FVy!JO)33 z$KeV1IXnr!fM3Eh@GE#0o`c`Q^YAo`eVI$ZWHigY#3)m92hHYRw*dBI-onRN(6$02D zhQc1OC+r2oVFZkX3aErpFb4L4v9KQ;00+WBa4;MKhe9<>fJsmTQ(!6_2GgJpX22{s z9A?8DmuCJ4=dqBI0;UM zQ{gl?1I~oA;T%{6=fZh#K3oW2hKt~0xCAbRufb(-1$-T@f~(;gxE8L58{j6m8E%E! z;C8qJz72Q6-S8c_7w&`m;Q{zQJP1F4AHpN>BX|@ZgP+3V@H6;1JO#gir{Nj+H9QNy zf#1Rl@H==BUV@k575F2(25-Qh;7xc7-iCMJukbf`AN~#>!bk8id;fHD{g!(dM+hvBd{jD!SK!e|%+ z`@&e*9}a+Va1d0%Aut}QVIoX|$uI?K;V_sEbubfVK|RcdxiAlog!!-lj)r5P0g})N z&5(jc&Z zXU}IIonUj2?l4hl&2;K)S{0zqZ+W_{Eoe*ygQep&0)XteYbMBm=ddB?V zi0bKSw9AEa&btr>lr(&aQErQ18((mG3}YBt%C?^4tiKwVA!#Hre&dP42=+Bx$T z|6p?MoEbH8WX@2rh%%2N zR@)MEWR$sbir~Sm`F!WN%F5--mnRl=6cU;2qDozRu6wTX5E~np8-wbCQY%}Y8$K=w z>XO;KQh!P|*_2)q9NeyasXxXm|LHO$nlkN&DBBKc$!6MvWMfmHbj@V*LG^@*bvnLxwc9C3Cr8g6^Z~++Y*=XL+V^ zajHotr4W;5gDQ8h;p2t``fq&6A^EI1)e@amXzi8MG)yRXU?YF5j$hdJZ}f?iubA4>y&~lHiKU z8U<>1>oG)S?2dHDqBRfG@7QCg>5i7nng?n2>M^|LRAb>Y#L?~+57Fh7Ny&V2YNkyE zUwL!7iE9yFyQ1qqG8i#piOzJ9^0?W;a; zr1PovTzM=UHs?|4K z4iSN$KG_U0!z^?KQ1j8*N=04!PHDF=E=@JsrtpN4H7Ew1hUDaTDUn>)=l<5X+(Rza%| z)LfvU=eido)x2L+$hM7Cuc#&6k<=gN#!Y6MTB) z`Pz40R7=}#O!3$DnA+L?QT(Ngh`x1y6@TsGq_5py_FSpNRm1N!d*i z^l;pT!-t1^b#FxUc4U37wy`}%ppFLdlWGQMTZm41*|7P;+J`j{n>wsc*~4#WQoT?} zH*52<<43Jb96x$xSwhXL_GG?X`^PS8tcAQ>4eyj|d8(1!l5R`IF7(hqnNt~6orG?e zF`w-!PDz(deI72o?5Pz^sm^>*YdSKf#ZD)kOQ$-@T|$fu%9fX@TdlzYbw!F}%O?q&cx4Of zlIf0xM|Z@+;-bVinPqRfs^drb`(~xK_g9BY7t1Q8JI}K>5Ieg>U4xw`6c){`pU%Ga zPFsUrYjcw+57^h;hikC&+_|-r*pnRD&u+SDZINNin&O1+mKd%;A~Ecr{e&LB3=1Y^ zl>Kt4g?(Nu(@9m_;{n?&r;B9T*IP{p3*6GC=5EtQsuj3-Yy*=^TpKYlZ31n?=v&uD z+=b6g8?op+)9~scEZg$xsiCFz*Jl2%Xlie6OLs7ImZ`IiFZW5WEwBB8|BjrQF}MGY zoc-?|Ih#O>B$${8rYAcz{?^#kRy1lBYaY28iBU24r$#0^li6I#jjXvl#gDGpn|#O+ zSIWAIv?5-Ss>1I~=3C8}G(*|t3{WZ5WeY|v9B$fFs)JO&GOA_j%?5Kk4V!4Ru8?og z=gC4_tUXm$R;GK-3_UO?T%BE1XxGsAEMl28qa!95ZDwmW8=Ru%PbE>jOL=oDr!g@z zBwSTCF`H7W(TvPicO;uK8e$F_Gnu>!^bAc)O4p$p`dC^>YvhqI&C#jxvPzZYqEygC z5E@@L+lE`J)n{UuNH#Y&_}v;7Wiy4&^0II%|3%JKjsA>27Zb_%I zeH>|CP5tcJnKSx15+UepvZ=O|hFHTRxqqwOXd7ip(>@MWUo*X?dUj1ehsxPQ(!K= zT{~xH{d^r#1J8AiMf3OcejUEa9(wN zt>%vUNytWfVB5&;_gLD@q#koHivl%}O@T)N9F;*~1oU+u0fr}N=HkN1HQgVCwM^xT z=KP8dm(OI{`Z=2l*WlJk*{j}11pLjI)197b$g6COCHv&02Cuma+#Ehodyn>Z37c$6 zszVuJ)?Qs|L_S{n9%@6x?-2M@BC$Rm)TD> zL{qDVPny(vBk97+T&>ye{%-JPnYMJi<{ZdTwU3%-f!QxS*u0t3YbW)0wDx2Z%|1o) z^A#tyU5pKA~hi{?yGS`OkYYmQA=+uOIGrO+g2}eh?4fWzP_QCdZ z#u|EZtr%ZklqFo5sjn2NHEZ11Q<$X&5QTvcyq`FzP%sJS`Wuz1UMuyPjYhvE(40(X z(8f5N7P&BDmsBINS$%{inv-QgKgVuLHfgC#nuf4X0F%Ez(|J#tF$r zqgct4ERJHLzk6YMCcEU{6}KZ4RunBQ%u#nDt13SiR8%Oj`--PqM^tiM`bk(7|E8Vq zQ`J@PzQ&0+0eWrH+uT%N=&-AHmbbd4JKWV8@1tcOol=lmp+>3izx7&2s~1>7Mq&Ap zx#--kbPfH7sylm)kdJ*>U)mT}H#cj{HlqY@?q@FJX-~1=8M!XKJ$aSWg)Q4udlA167 zk(26nfr?J--*uJ#!)Mh&IiUrG%4t6H+grD<+Q;wG>wRQzn@JfKr!ifl1K2fruJxFu z1<+3clWWy-NLxCFEsWVytLtkf)z&MvYgTUsuJWDaD-JEb>(DAa7EozR}0y z2xf+*XROnpb$l*L{X{+0kEkHX&BfQOXH=<=>Ag_**M7G4 zWw|9mnNFYvOm)eblAV&C5LS>m(r-+^b+^B9a=Er{_fC&J-(GJPAHU+;W%lgpK~qYj z0xHB*-}GDWY3Qo6t)O}RSZw;pa^dEEUq_q2YD|7s^M(eHJ&G0&o8gg4I)*F*4n{=z z&fHOUF>-sq37K13Nak8~Z8IHh-HV~mmXvc@>a3XR1`mAr@k>ti#~tsg!2aX7B;8rj zsAa^>DlcLQ9B<`>?MvGd>i=@vn=eQf^6Hgn&1v8dpaE^$>DFANnz?FtBm&N;!gsUj z50lzz)&xxjMWQ|2ms2r^9vawj{*u8%H~4Rc$2D}{$IyA{?&AUt=$j_|xL}w@YJ*|! z2!1BP7K-r$lnyag*e@&k8LhFSzBcRmu13-w%#8GyOGyG~VYnHQNF|&7Lh5L?K0bI{ z^0y}T&6z}rlkjW2_AMI0ZiNfWk_a7`aQ5i{)VQH(zP}{BpnQ!#!hQ@^}xqS5r9il=wE~%zheq z<4KFXa$yLX7i-jvmhNWy6upmg`;9^8|LbnG9;2a^8(Qpc+b=dYGwt$s zedPMCv2hwb&oFE5oZeeD?nrLktv#UDTq(_hw)UnqnAuB~&gYQc6%9>lc;%|f z#z%$QoYoX&yoMm#3;BXta9z5V8Z6A|n5vF69jk2U=YGs7*sEDw=J|aa!hPMuq2JR? z@Y#aR?%%CQYfmoG@TcZ5OB>L(<}!y4&nxza%@bz%g{mr&UNL4Slx_MtmKsb;KHtG~ zG4rNBtN8#zbA6=#58aY;y{VGE!Wx|_*VVVYOy8{kY!_a2x{mF18>3DFhs@0-XdvK}_IDl)E zY5KhRai-?Z^#G&k5UXOWRoft~7AZy20PoOcN!76(jOu@moI1}25=_Xf2oG#-ZCm?v zD|&6IyJiCcu1V!rptyM}JJiTh6lGC6woTKLZo<-3d%<0V-lNf1-=&|zsoqX6F$Tfm z{TdflZR+|dF>};wELWu=2O&wFF$Mzbv;?6!asE$J}Q^9ODZO5zz2ly)% zUjHZProvq#t!f~1M2t$1n{7+ToE>GqNmUyodVFEOn+n^XU*GXrqLy=*&%);QXUPZC z(oIX$JkjHfCT2Q2J0e8d_$kf4<6>@*&vE%{)Bp{VEj%h~FTL95ExF35S`M4Tz2v@* zOoi5xf5tnHq4%V}7i_~+4JnPfx2oug_pH>eQpEbd7u*baubI={es(gPwGOTi=lkO> z&HGMrAK{8V`&oV~mW1`y({cquG{Ud#&C0WQcgqJBX!*KH?tbq-J*J%+?)p|ecbNJ) z$*h^eP{L?kPCv;>Ze_lMjeUxmo?)1yOfI!c>8k7N`Y%1wiBv+JC_T>JnCw`he#$cS z9@VUFPj+hXEv2%4WS}J&zEj*w)@;jYS(HD)a^hXx1lA2j?{A9mp0UXL)1g-?!oh1roWrk zPn<^Mm(0ql!Zp3GgqfM`^`d{4g3gr1oU^IkxZOIl$`qPPby3m9RW{1<&zw$QwNZaH zjMng({H0EWM%l=NISTyny7Zel^e9I-K}3mOlt=!pXYU7*)K|+yqx`nd%M&Gi--^9V zUn|C+^{@t1RG{0T_1Bky`+m@{1G(@;+?}VU(I2y zZm;QLldyDMM=wW=uOlgL@VaTUH8@OPXO>!_LAnZBMO1e2n?#Ek-BmZ+G_cLUs=6A& z42SK)ab#Utt^(n-Wwc%;8!XXdP+E22p49L+c{oYtFN(SNcG#qNaK%@oel0d_n#z`( z%`H&`+|3sYrdvawJuA!xYkbq0*08NXd?{eo5!n3Y$3A?mNx>Lan&uHi8(UwN^%cn_ zsZ?he$>L1W&-h3zj?)xKkWDU+jmx;!q3N91xM?WTmJ@wNM-wXl{uC=6yZLvdn~A0A zoRk)8z1~Ez1S{!em}WeMlzG~~)$CkVHS+Zy4=vGA85L_>7q8x7f=6>H^mPVu#r@#O z=Z-u#o|)%YkGnl(2B(R$8CvuQ8Ayb5&D)ZVdSWrEOv|cW^S+N(WGp$SvpZK+?;D^W z;70ty@aUxN<%8U70NK!9U8Zd-l5Ocl45FJ_vuN^mRPV)dEN&C+6C|1m3dbycLyhoN zeDT&GR$+w?6_`0leH6aXqfQgO1CBKjjU{E@ecm1-+Tn^i^EfB%O5Kr*>_n6Qm*(^+ zoJ> z#{}ap3!P0jaY%`)$2#<&lfPsvMbrIPTult@iV)Mj`=H5e*V(q0uco7;#!3|5q#V%k!;Ql_sh`0}m1o86KOaK8@e;*LuU$y` z{L^h^+EoSjRVvvCRr?*nKB?G~>cVqpU5F$cubkK)8^$Uxvg zu01a81IC!xxKVIn&$ z?8g7hpo@;TDB0MhrBD8H^bx~lO`Qe0N8Mx8f359vM=qzTS1~fFQ;}=$R9ClM%Rid? zPoQNTdQ_>e3m#^{;)AFqqk+3Ff1pH=Qu{!GRgE6Ae`1vW-{^5;!+dTExlDikYO3$D zrq+z!EnteomULD_xrGkRXK2K$qbZ<`F@O}MJsQj115L)+c1<07la}`B6qW1IAe&v( zWKy}p&I4DBh!UWmQ73bD@sR^AmJjA&j(SM{SIc&6U5|PIS1q>u+n1G`n{NKICxTQj+qcbN_#f*NvP zvWx=g-xIspTFa+}W3=oPtnERVTi(1mRBr&$gbcliWqOAvt78Xnuh77+$eNXbVKb;w z?~bXo9m)Y+z4{qbl+w%ezE0B&I=rTCF0&1q!lPBxkqNZHa9vGTBe(@%K0oHn$MMB! z{fxz!RcKKi@ZZIKlq~V|>sATcFZ*sTx&U-l`kHd$Q2t)2?qRmch7$ZgzPOKd7%D~0 z%BSLNtZ(>qAT605194?uQ83*uCr7C0Z&i7J0~6t8>}_qi8tvu;O&6YWPby!dBY@#TZtP3KZQLLjfXXeCO^^)ClHLh)B3mz>& z8OYTlfbdegWC(Zdc7^nfSt-n;-~F7TZNk|{H4=++8o1(6_TPo9t(8r4-Hw~~eN49~ ze1He_OUU~^sw=hq3YVT!(Ji7GNJ{#EN>j5ah;AwBzSSDfe3E`nzo+P$t^Rp6(*-ac zBy+a06dllUZHK9!OIdnI7qUB+*}0cV8LcYdz0vW;)O5}7uIS?|ZNAAB^a|^AUhi4A zgH+@78kfUrCe9hpjS!mfk4leEce_N6 zp5pFv-qAln(bqDUfwmHDiqk^;49{oulG?n1K#PoGNo{&7QD?B%EN5dgk)@?teq~oG ztMh5s;~W{ZEBn|-Z`}R+|B(gh#mmI)PZ-2s0p(r+x68CMcm-UvfZTn4c3t&g{|>nL zm*yRC8y5#;-~ZO_MQ=qfe`DM}lhw=LHqP0XzfIJuisQePFnToa**)ODuY9u)8vOT_ zZ~q%!`R3l!rUfznWx487xqtQWrd*myZWp}{*Zsv%BQ=-*w`v;IQcW5(4?k%wzJHQ_a((^N1I#m8pmXj|IwV_WNub>?Mq z?hxVf%UR~*?whN|)$+^^ErRuX%x;)HRS(L{JYq)ot=&^Oep{wb=ealjx}#oKmXs+?|H2=x4{5;Q9lY0?!9pts$mKYC08tY2Lx-x8Pg*0|mv~q*kQ#+CBX) zh~JP8j?l<~ev`wjuPNSKQ-wuaPcl9BiLJENN9vg^_XtOweykYT3M%z$*VZ*SW|_63Q}!%o|_H-P4jZdr26WKbLTWn zs+n9pclsQaI1BU|B&O7O9g>QfEGu`bv>r>hUl>;G-k^j#{MZR^te z8?9#H1!%u`|~f8b))LZ;^>9p^jZCrXVtXA zv~!zz_}D$ImMf(5jLn%uXB?K%Je5QxnZUH#)PmtT(Ok)wY_7hW8Im-k)nT8ks0<(~ zzWCIo)ao|M5dP1diRnALo`G9tVCN!jCRO33fnpV>`t>0bmL88x1U0%WU3yYdvF4r9 z{s)3IQ?5m)na+gS)Te-k6pMe_W~Axa#$JwX-dRi>l+Y#@nf=*M6RfFx>92Q?VD{O; zbgscJE-+<7s#!m&l3SvW7P-KE6ehN&nwF4a{LYYuNI8GMDTAeMcRM&a&Ne@D;{sOP zv3Yz`b*U<;11rrwcKBdimU)|T^tIZGPCa@Nc3FHU`zmZ3K=h7gGkdJ$))7j-BIWf$ zP5lOhQmDNnpU|{RIv;ztIU6XVZF=Rl-EMerh<@#gDQEld1*7#dFM2z>OP}bd?8$$w z&CMyBQ*i$_gXT7|DRLU@GeiyKn)1%puAKR+B(*1NLpvs;u^GFAYWB{yOc(ECb%|_B zoG+7v~q<0->5S8_Hs4U681NQ+*S>-aECEfSaLYGqRuCHxOsG?UH&NDPZ?!& zw2{dQ#fem2HYbzeIdZ+XD!hs=eN58uJUx%omxgSTi~!virl`>mSh*MfYLJ17NpJqA zZVV%=*Z+=;@`ODtml*et1c>T6{~Q){`oVOTj_k`3t5^&*i4#+~rFfS1&6A#A@kS6wS`M8oXS_Z5v$x zcdBI^#pWybiQ7`iqqih;8kCQ|onzK_lxv*J|5}vd64aZQA=}bCwrInQE104|HMm*G zr0T_v*1Hu$KGdRHmB7dK^7OSS=i-N;;PL-vN0(kULVC!)z$_TGcQgE4R+L}Z%Daf@{UM#R&vV3?#tFTp}rNa9t z9-c~0!gGn%q?cAVEjIt)5*8iZT!`pu>Ma)TO%1Ai*vU+a*x9=k$C>zXgZN{a3u4+# zM`~l;Ei{{IT0!@B{A5cGR~nApjU!OG&|p*L(pLc8BD1%7J+`ZF$^u1cv`wMn z-;(J0z%J*O`)_rXsr&79;#}3|Bp1h~ol5es&BEpZbFBhUhT&%R+15{B+udzubvu{} zzT_PlniDW93H123UN)rC-Ua8TtNc1~g>K*6ZIWC)TD>|`i|KTaG#9sP{Izhgr{NM^ zcz5cwe))p(n(G$Zw)B#^uQ<6V7;~!15WQc>9(Ut1nq7Ond~D(3$c8R^#ebd6eOuh1 zx7UlFX+zk14;x)0&B|jfVsYJbowNNN6n&A(^HfC6u65E1@%F0GqsHvp9t}4^Wb+?Lv-xt-g9X<3Eo{4VO@IiW& z-5U2W0gsE?Dq;I6m|V~^M$}(nHVRkumhMCWGcNE;$V?9QE2mV`sWEHU?eK+9y3!#0 z=i`cxTNfWxDc#2(B+pdQnP$BKy>6*L6U$=4k1y*|l`cKMLYY*3N zzp6_{#KQrVcr3I?noB({s86=*N0B-LEnhA=V|Uo1XK2Y6rGc0%F)o-mYp(h*u@viZ z|McKFBgWVR^ELmu(`3uyefhFc`z;Aio={8(fqI z?!3+E(t9mBY4!2V2`5@pE1J`b^k7}N>r&Vg)K4ZTzLONJ`xR13r|{PS8uc>^rak0S zL%+nKrh``V>jwdn%X=JeA=2hQe<2#oD#kJ!57m7B^QzurR`df{_OU$0agMvY)uUCv zmRN@QN2$$EN1F_st6C7AnR*UpL+G(?aWN&6RROC)S;<+YVoGCqtir4^#;Pn|;`J4v zt)Gm#8C~t<{+EF_^ZOMVG^vXIbj>LHa)hWy8s-JAw;8@J?_nfc?Nyfqv0uB&(r>dj zXOykODmeTFt|$|>xZmBfNv^xnw8l*B?v@3Z=9m(RAy|4rBLk{&`xhhRrg|=^T2(38 z5hmY_(10d!LEjiH-N~QjxL~Gz>y_V7Rkb}Es!*2{dz(*+#s=fzQ45k* zUe>aw2;)fC<~@9EVT=J(~zM;gR4 zM=}41^~GXwwztF3V9v}*Gu2p1*)|bBn&)mAwI5V;nM{<+v}+(D*_28oY?EAf8o$KY zQ^7{7JG>Ef2lBW_m1&Ddw_c<)Ty2}IqGl^`+Pf_Ui5X_(M=OFA7Q&+oX8x@`6 z0o`&JPusLr$?6haWwsV|Hu(1^#$MXxvt75Ilfw4d!}I}dzsX)=-!Ta{V8lDR>!XS! zs<^|z)G^Y9b9cX6;zXh8s{d@GekPnBLTU&D_a#L%#O3b`O={Tjb5$ayuz;S@H+Gg) zvA>J^is3i(S6ty)^mEdEp4Z-*4cvDi=f!pn|Ci3mmcMQi#{3w3wmH|J`nQ2%(3Qm+ z2Q-7Owh*>OcaDFQ6vOp)x=FW9UZL2T1}#~P7RCkT49HdS!MN6ZzH?k3hrw;HnYu$m z0V);D^cKf;!!_z=G#2vew%TGy6C0+Ev7^9IMvDhi<=SD<`!Vf3>C)63%1(#r>HFqn zbGsWCFcVX4%j`cF277lO4Y7AMZ`#*gU&d&$9oh2txg8dbZg4kJNS@FRJq<#~(_igf zf~>TmRF3c?(A@PpLM*W82z=+_Q#zU(+un@i#t-F^!fm3sEwF!@3+Mh+FEKu98sB}S zIp%OX7UEjfF03eOrV$i`?Wyvz8NARzFAFvIfClnasw6uYw=22N{5sLzQdN_tZqa#8 zoej;$sRhuQ)I0>W5v>|cjPtsGU$vW@M?wt^{4W!j^P~}L1{dt03tQ;5_IgQ&yIxT_ zT72$h+KQi@h!x5%4g4iY=M;?Z>ZQDYuh8E$Sn**@Bkc z`FbExWV==+Nq_P5;q?~F@cVcib^hjud3uiG01{DYO27k2NEcdf@$+B%X4Mh={;w&! z^x7Sp<(NKq?Oj!>$}f~Ku3&PXtM6gXFT6OtUVgWqzdcPW%jQVCsDj^5j8zPJB(=F} zL3ymi)Qw&l2C~rn8m}$CqML_N;^;o?c5jgll;_luPUiF3a{Il4wfC1FVq+`+pX+_- zR`;1S>|xryHH5&uX?_Ya%4_UiJizP&9LjtCG^#^uPeXTh@7OSuedh=LzcAbQUHgv< z!+GjgnWklVnR~rbg_?Tq3@bD&uy;^qCjW~g8&wIhB^0J#?vCn;J|CAQs&kYmE)86> zv?#{*(j?S?EH_oh-daiFFJEQZ-Y!@biQ3uyRG<$$XVzqCLZq{6Ol;<{IDfc9bINL- z#j=TF%9y-s=IJ4X1}dubB6UOUuachu^aDruFN zCTBFx88%CFbC{NiJ(gSZZf~vF@N0D7o~nOyOV~}g*;Ga_Xm3(A7Dh>gqk&m-dJ! zppDu&X1tg&BQr}!@J#zKevvL->+zrKPK2Wo|D!`ZCfCg2b@66-*7D_W2JJdY z-L^O5T7D-JHO0=n4ok0|(DDu2fHiZ_G)4TBr#6a4-1x%YJYkL|Lbjhcankha2{qHJ z4mOWv91^JJCQB)TiTI?7ENZmEuv$EDaJS)EkH%agk$T!SYEWhY*+3> ziRC)GuHCG^ zN1G+=6ecUn5_ZC>c(65$GfO0W=q!@lXH1l<{O3BV|8v2(ea1wKFR0n|Rsw!?ORM5E zO2`XhHQ400CWGuVMiX9|kT9#_)K+$9;!Z5jsBmoIw~u92(a^A)n+o6NXa}srfA(@? zr8`VP9lLI-h|Ndg&1up8?KEaUFBon%MpDZRL-c1GEN_vR4taCqo85e zY%+Qaq&?x15A8LKx>|08(_8>M!sD`iw27nV*nq9F zp~S}7OJibI?Gq2Plv9c3BBDS|keX~Zr|m}3{pE1;ZDw+fJ^3A!d;{Z=c7d&001f79 zmNd)i*uxx)VM)z8YI=aIXVxgv^5UZNwm`G9%0!h|VOTaMb6Ipkd81!%*6K?ZhU>i% zjJ#>YB3k8X?@-qrW7U*x)ewG*)?kxxc62rjUXyr@tj)0x3-}1cnu{iGVYE#UW;QPt zg8nqmFeGOAvomLGw)O1`f^ox9;hqU|I6gI-YIS&+s=DjilI@MnX8uuebhW4}xwOaL zW%@l=-W!_G8eAJI4atQ8YJW02Wj&*4{H~gIeJ^+jC(j{!=XC30hvfX>l~z-afBWvYAO8 zzV-k0kWx`W;;*q(5=clS6P%}{ganw)A{D|{5K^)ko&kIxn@QC&KV_KS+RqT};{ z`d)TeT@iCL)aHE&HfrIF`Xt8X{SBvOXzpvffSajw^FehR56Gx5%UHewPc}7~qL!m_ zAd1%1QVK8HBK}YFV3T>vu?fVNP?|6Z56X2-+D4@N(MGc*LO<|T(6gdu&Q$|Q9LB^^ z$Eh@74doP7&gg+DEg~pn_11G91&XaAHv6bS6kQct!lYYT^z4H6iYH3WPL~%t(n|~a zaVlTBGSt+ZZpxRJciJMfQ{y*!%V7yUw$xEv!bVLTg+|N61jyBL`;-)x(dlYQu(q}N zo%r*gIxcyp#q>5iT_S~0(7G|sg^+ElLJQ!uFi&;R=qV;=+8yl_VU#s|gthAg6=TJ5 zW|wa9X31Qg$!2a}Jy584zM#-F(_C=9})*i2CBg$@lZ z>Rmlzf9O((*Mn+u?mi4JNe9?9cz<2%rAth?9 zrm&;keZcX@56pdHBN=OWcWZaE88dXbLW^mOo4Gmey{up4<$qJc9wfSRV+SZ&Kx?-% z-7#rde+watgXRz3G zJqB`lxn={qx_w`PD4b}~cTso3XERsZN11?vzW6zLSGf5!j}?x^rCsdK)^jBGM5^5X z+6zP2#WgvfxVy7Kmsh#k_wJI7dMUPf!qChwCzLC=gKUdLo06o%hpXpj-XZD2Fuz`7 z(wTtyFUm8;hcVeE_ED@+z;5w31Gw{#ZS0aj7wU5)hU<9L#@;$m($667b}p*SZKZV` zjFT4kD2T5vCmGKa1iZ4%&X5&fRW5mH*SYA4YXb8BMd@aKB+iVF=!cHU1a^Y8q>aLU z3cb)_hN*pCi7q?eD*`@W@{D0gWPDC3jx_uA5*O`YZmd3I;zJEHMQovU6z(KWtJXB@ z-DOsx)Wo||G`6Ym2XgDWHiA2#-6h^`P;QAY(q`(#UZtGNV18sN%3UQxM{fR|J?%Ac z!{fR&R7~lW#s=TJDgga28wd{jk*28e?=qM#d~m~MQtxW@c)_Pr<(m6 z6nY$W_S^dZ?JL#%HvDg2Ij)CT7gyHtfcl7}O+Pwby-$FI88aTHKMC%0lk&QgP0NLb zd-nwNySiq5Y4pvaG~xaQuEN6CC1uR#0`{(qxJgsGlsD6xN0 zMI6hGemDL%_Ij)G(i2i?5WhK922QsHYW#5wt}ypjmA}&6FQMs%#GfFEM?lx0w@cgm z6>!7pz3phDK&rUmaUVC``=-(D|LqF9p}bwr)vPVdX1S`8`c*GoFQ`x5W$IPcqIROo zRD!R&m`ChZj)uBE}_!e zEG%#@nNIi$+SH&X$$a_^^x-5EYZjKYhwo=A_o0SOiJsS#l*CQz-g-T_%{=`ic@zWJ z9in+=n|wCCOAi3pCtN){HGJqC9x5D4tJMrZ|{sB!lRp!G~ z)+J9exfc!gxVD1I0oS-w{ec8; z+I*_`IXm-KyY3mOq{mg-7>nNn3FbjNn#(WaRW=U-`I&XZS>sqi&DJzeR%epy&=ys*b{uXhVS@H2cifmEQm z_p|u+NPPM$Hk)HtfF|t!n6VahAj-@15GnOXM@vqv|D%0D!{`RXF|qw^7S^-01>4*&5p-n=dSWEZ31*D4EQoHsSnTy&MaD$iL@4$}ak8k#U{WM%Jd~Uq;h4E9 zKWnOq*=F0XB7^9(OU}?vxbeC2l8JDyXI6S9J)TH$e7j%59Rt zn1*SxX<9m!Wn$Z2a4OcKw*$n_je^0>JI4ls?AR{@38wfZ0DFV5vAb_$)6wykC5and zpLDKcFa0i+nf^-_@)?z54A;2Hd|n%s)Us|Oe{()BEw{3d*5Pdzt8`I1|n>?|wpptAw-COXP8vCQDls3ga7ppx5hGOJ%> zYZ|oZjGW7A2~B+{!|JsumF6gR&8rWY1NL_DIZRpjBdEmCEOFC|M>z>{B)_`0oG~$t zk#QEK`I^tn_3x!9R>MYpo`n5HCPpcyMK5MvlU$zeXlg4cTQjQBoLSxxUzuT6K)74b zEJ+D7r>nJXO4>SGqlOKpS)i57M7(%fgqts_z3bg;Urk%xHYSvqzGgIeq-enQf2La1 zW%?hR+@-v+bCt~WX|*B4w%mN&qYNt9Q7&aWJ1) ztH1-|_GNG;blYyT)35et;FJa3^qjdE_E@vk10@9ictz|ta=R5+;XGhxMsES;mB2c# zI#h0PW%>M+vVtl9Tsf@wFeg>9lku195L&ZAJ#2>ZXq~!;lY9#$n$T5wV}{L4Y7FHC z+`2=FWmu${Z+sI*O*r#!Zp9_J2Dj3hzMG29dG<9LvG>nvTw3>#ZwHvb^?Yc!-$++# zRA*C@d8*j`7Mos;Y+ij_Ywx1kT9#p%6&HGsr~j!m7mJefw}p9FhbZtUMYL;KEbKB<2C1lxm7tyK zgY%T6W**HSG&Z9ENY>a0KrAffS+hN*oQqiW)Kz$`C`t&!|JT#=5T7Yf6RNBA!kbB@ z3oW~NG4B&AENHpw+)RgW0GR^V53Wb&uEY!Xif1#**}<0R;d@&OEBl()RQ1$t3PV-Q?bgxB5NY}a<n|DW=`pRle}!4xY8bpf^duwhVt+?x*Z*|1Nv>$*tERqwX8kxfYZ_kR-X^Hoc>ozC zw!1pzS$q#EcuL>JN3$L?WyJNe`jqhxoRF!8d$_q~;Bv4tw#SBSHnUmxz1 z!M;C_Z)n-8D&u0B@jf4FEF&oQ*`m+iQl;}%nsRWRMsudo9T}Y|2iCn|Ug4u-x%Vk` zUzr-_K6da)p))MHr8&O;u4sqYAeaB%4@bo&xy)k^I_KipaX>Q`Yf{=hnc^~`X-(V9 z6R<&i*Bo$D;dpCjEb@-!SkOIv)hoY{l*&I&Smk4_|Zahh9;WBniByPzM5a^ zvb3AkBN_s3>V8N9?kW5B7d}H#J%y)Jh~0&@ff6mPE06VJ;wRQq3~Fc3w9QD$R~u%E zUkxt0s3!U;znaRI5j1G}e4scCqx;-RPZ_c20xS%KNcb$}v!naBD%-v@q*^7mA5m8{ z{o2<=9fwmghZ8F%k;8xWHCe}=y=CJb0*FRSKWm0|QSCERv(0}fV-s{wS?jZAZWCVL zxvkG+jAh=TT2ZW`&iwkDS`YjNifzK1$II;EQZ@AR=@xYdRn0MjNO5e&muLg|C81$1 zRF<%HNiJh*5|b^Wrgm|GX67|1YUAU^(Z=eTn<^=1e+EDsmNe~jFwNzj8tvCx=FF)@36jvzKp0kdf~0=;`;|`>KMG)-OrMpVJ->K$$IkqxS1jkv zBeO;6;exfb1j}#jQdds5u#Z<*TSe!(`Q^3=1z`RlD9yxZWtouTB zecyqZ*T`};^(J#0x_RHM`BU`}L7KnSaNv1KA8h!lSeqwHQlIG`s@y2?eJ<|8V7i^QGcl0vcK;!ms3}?|{bF&`@T1KYdbt_J zLiAO1nf2LCQ(;U;pJ^bWB~~XrQR?p3&-yE}A}g5dW=Q zUA}5__u|+@gL#6wp~3we=lE&W`kBs6{I^6g@4lKiZIZrP-+i@uab~SSgQgu|KHOZ3 zscc`(wE9!cZkNf^>b1+}rOV&kw{xa7>)Q?d+i%^cEz>%QLAcg{br0^V?6lML)kb!# z#4Lz#Uz{;*wZ7Q2xTJC4T|Dh!eYdgs&h=2-H$R^Cn!ee-w|R57)t~Bi)en@e+QRgB z?L>r~2e#kW1%vAjVS|mrY~SQgU%zZxw}P*Buzev@>(OS8o*H*y95=Y`Vm92WhyIb< zn_p%v%^~K)o}+KR>V9zZaZjmgz9_!P=A$06k@-B9f$VnOGo$&u zTlO%Y7Nw`%zk52G&xbC_aYAI>_*KtQ3$gks$4fH#a!PKNG zIt};s{1dTe;ZrWtlGi|O>LBK7>5Zy9RP~_Qd5w8%P|eJ;RjOXqd}6vqhvXx@*Ha_9 zG}bi)-mXb}`xe>ZWFsum7Ay&Js;Hy%E|ee=oP8xMOAo;-YT z|Ix;2NxGw#wXV-sh{|b7+DZdpAfA$(b9@ zF+IEp(E=yEk2p2hKj?k;2!jq^eh>P?Q(6h8z6XJO-YrB0Jdvi8!OmgwtFfa#t~Tl@ zwL^CdVd1~2P zl)TLXE4gJ&i4a>!QnqDB#p3LWBi0=BdIiF&j0BcnHH9EsPerq)WUo^-AWvTl3$tWV z(GgpV6ymCR7}?UJ`%fO;+}OHxJ{o6`58{z>tc)R!iPyHRn}LXc)@d3g%b$)QT>V_OS5?_?0; z#6I^TvH{`e*c`?lPa=g1amm*9KG!iGn;+?N1{tm@L5n(Q*5PE^oaySCnvU};r3vb& z1&1H};h#@r(^kd)=ACaMmj7mcZSxx2z{NW&y!&(MT_|I}qo*dVS8q&!Txi85$i=;Z z4I_({q#Y6P>=*y_Ut_;mkQJ}Jmsa9eVj|*>`KE-7qocvyEC+ujCY~wU{~X1{Mc#fc zW3Tu*gucky-3;^fMsjxyVaHQk2P0$p)`Pn@9wUEmZr#4sC^y9WqLJ8r54FOr1}>6H z(4*Hat*LQ(T7hqojGv&3A^D*L68{ZpzS_~_FNWq1BlDuzI zEvT{e=*-Hps&Z_w&Q<%!Vqj^qUcO2RA+y=jk~N-bSw$bjI+jig=8-SF*niJ2{7-bF!JAMo?zv3vZT zQ5Amq^3_^TI-pMFUs~n`;mo3D?Tt^A=l5CivnnSy&3TNC8G>3!w|x4fJv&j*81*^UsP-8hILdiDtyVn)@JN8G@lrkwP%pI_ z(c{6!&>ojb(p$H4+Va7DvBymq=FrfV{1he7&PN3CU&TZt}-EOmvsWw;&L&ef^&%VwXiN5by zHYWS#!&|CDISbkVM6FkS)&X>?QpKKM)}yQx^)DzR9no6ZTb5ClfB6|vW&Yt|vmu%Gc z?XLjhzt0DQGF&vuMAHe0w^P9(V#=_@+fWZ(qNh)dQG02ar!Mw3Ok(KWy7wW$?@nQM z&TB9B?%jX9K~`Ohk&RU?QbTGx`##}lb?**dL@52x9gkSeX#(gZ_VhAphEN{k6>L%e zuJlU*L7%~)nPv32Y&2WZL1kuJR68&B?(343Z=JSGv=(5qQTg?)$F{k< zr378;Py1K;WH0sh5(MjISUzEr_Z-s(t$tcZ`XbLWh>h3&rMyVA!>jbw=gz8yNV4^U zM6|@7Wp7XlNHXh{2FhN@yYizHsKgpdRKH3QjwW@-(k-Dbk`9)LK060(fW71clog&0 zga1ajx9`t(drLR$ZsvWnr!VO>d$-KuxJ*6Az^y|9ZB_dxE;M2zPB*?e&ZkGV!&@vy zRZ_FNxP>oGrn}RfIjy-=W>J7uM002$U(|-`Q6;hLv+anT9qw;4A%xC2>FrJtox}_n zl@d|X_?US4R97=z(JuoSj!))D>)b8G2_p6FcdkhZK;)G$llMm3vfHaEf`-#+!JeI* zZ~0SNQ6A#V2wdK=vLa>c(B&R7&`AEtC9{C66=HK-)`(TB3Iq)VHnfJ{9$vSEc((1D z1)md`(?iZL(L`kR*n%rF6(Ecu%w7K?+~nmEDld6Bpv4)Zk*dSOW^is?m|W7 z&Ysey*Re%fsn=~zsj0KJr~E!+RAR5KV0%@7(sYGugifHY4-_v$Vg-PfX}6V;9%~7w z?qBaT+bgOIJNv4P9}qlXVR z`zlEATwLPjv*RQG*&Ium^he3luhJhQ;#)N`ji1pqBZg~q?tP~K5U5-)S%k;al}o#F zMBdLx)kCns&~5gI5BY7Sw39j>T!;Ua|rsA%#P zcyTvE=<=_+>7M7JBt{NV2L4+{5C|M+pqfhp4p@>rzSi0Hp6}A*10dnm6u;{_X2u-!hG1OH%RD zUCGv2V%(v`%=MhBR+n?;%s+c;m4L&2O$ z4o6(UQL)~4dsTil6?Vp%cb!&o1x4}vccpBv1&-AX{+r;<4l|ty958#FOE@-%3B3<= zW0R{pF}?+#nrhqzrQ&;NT4ctlCYxIgd!y4sj94U4!I`D#JPTv%LYx&knGzJi6A9Az z)h2fQWdxV35_ee5;{%R?&ZuLLn{5U4VW&1S92&ar+jn+TEBku{;e@2@yW!;Y7?lUj zRBkCnAUc}so_IeYQ#<&jfkAV5PQaH-gKA7XL4oCTreES)1>y8B4H8}n&0N>ifO#;W z)iLMRAa?iCrOQ~}CgUM~HhEm7I`Al6jNv6co#)&zWnM7PX%0WjO$e5yRAaom#0e_> z_-v1Nn}^Y|Sqd5o@mWJDKN(!RdbM|@s1?D)AUAvzEl7t!crA&|jrI8G@r}n%9&O#fQ;18bHR#eT%%580a)6DNhv}82d&y(U zHGN@_?B?3yyR9JU0-dV0I1|#o{Kj_VF$V9b^NXggdtpP^h3}aPZa_BCQ}Bo}!}v`b znWE@7#o}2=Q5$)jR;Y~8o?jHsd)J5G8eVl9_y}9>iyYsEgHuA)AIpp`byxqUoWN0? z{R>iOUAVSEhRTSHvw{~s5xK0G$i>c2V~jPiVq+DP6MYiV#=h@j$C|HStp;zPSGAb$ z>Q{4wrM+BAjW@S~YRhcy0*}iM{zW!|QDrdn~rQcbf|h z(wJtgm-F?xa@4Q~D11%t- zmIjx0S1;{eW^paSmj(-C7fUiYn=3h%uBpyqQ5k+el{e&eq3AI;C?0Kb)8TP*Bo0mg z0iowO=FnD$QQ~AJ&biF@hG7wwk?>LTgL&DTG?WEk@=9^zp6~%DMGyhs)nrD!WN=6Y zq-qZS@K=444)yYzcP`_)`8PUcpG=fdcID2yl>MDE$~t3=qJ9zYU+6B%t`NmOyt8?B z?}@^r?0vhv_b+xgX`CYp{@~6JY4k6577W+aWh>&~Rm;3R;NQRVw`pmySPQa0xN|_U zzhWKMt=S|6P)Bzrl=iRs;wwUiafOJBo1HoQMrn0xCA-;je^zGy z)RcTrNQar_3WQ}H8~E5)=A*r_<>Emm(6B5R?4i)|3g9rq$P~dE)Cuqi35H9DO1N7N zobqUV{933}Y%hxw8Uz8{$7#-@iFVawL3CC%(@;=7P<2&>*CRLgP{-fI;ZQc6tE)z<$ zeA|kHif40afhwyaw?DeKFwF{mg5ErN)@a!(L3C`4BTbrf+s59dMsK#8^JTjx53Ee~ z3c@UZH$z>zq|jb4r6K2}G|{V9^1`;aNN)$@S2*+G?wZ$#8cDLd;R~8?qZ=xcbG?&L zI(NXJkm*3Xn@l7{|1PgMAK}nLQ_j6Xi|%S0D9dU-QWWI4+0+z7PHWd_|m3r4bhySxJ&~U_ySkW zAX`zk!1Wy9T=^heMq4s` z?M_WxXlAvxPLIs%jTJK<5J$_G+wdNpRC~6!=$0u%hXh_PI`Bp=%i0r_V{JD3OHD+X zM&;bCYJ#315>+8@x-VASFX}y|doRj#i6p@CXi`X_My&$Llg*W&4ojJITw@oOD_P#e z>oU0NP56U8^gRR@Hn&;#dl7nAJ68%k%&KFp)B>B$oTdfgRCAKoW$BAYwyr4ASWbDa zjq_y^Q1KA(KI`ATxrJe}zt-#D?0+5@rk;9%Z#VmhO7SiVFRCbo>#eZb$CH&n-pby@ zUN&=(@qD>->MYmu0{>Rfal|E8kdh6`@*d4Pg|Wa?6jGT++;dl9P&y zeCeGzqT`Rff5^VIxVgokg)boY2LF(>%Zgw#Uyya}cBv^o zJ_wWGf@nA(fnUP;T$hU^@|yBL9b%wgw?K|=iIFY~YTSX7FD}%XY~WY9+TuZ;&Ol-z zpoYA}<9b?i*Kg2SqY2`F5~-;gM`=W^8D6m`SKoG<4Ki)CiCeGb0x_zPX=H*e zl6IY~WF==3uIMtY zpS4K;q}k9j88nbRUyP6>(ZR&%S^s9Dr3BIT2$ZGM7R)HS4Oy`beyqfQHso-}xvM_G z8EgWQ2p<}tX@Pmo6pY!V;=WC2Et^S@zBs>DJju!pS92!5NsYN>O?Z%R@VRnvg+lKEeG=y=({xvHGlwMmgn%0ds*zrVEZsy3}mT|l#df05v znKCEY$|f~mm(bK$^yhD+Y1fFq2xX?AC6RQ!`7^yX(}};**Ge4p14H4SFU{`&99I9(qeb2(ddFco4?<( zni*B9pic|VMx7yf+=w--#WB#O!HQT_6$q<6cA@3h=oV@reY9by8>t30K;7e1EofMV zQJp`yW}@oczMt(M50V;^S_e*;3GFU6=g%VwQ)BGaSWQo(B!VPc99Q8?)|A37Sps2h zKE@0WvB#xE^-G@(?rP#64WvaZrhXRkR4ma=sq&i1ctdR0n9lty;zdJv6BNfnOSnHlPiGVzF$S%5}yeyXeQntl(7KEXacpiBrqA7l(S}OD5?` zD1v?>k+;^CZY4^}pF;6*deC5^NlP;nyn))5o7I=J8@n>u+zf!=GB;3S=gk;Te*h3+@e_{tA&Ldx^ zfSF*ER48#;iF2{CKY^L+ilCYOd_M}tyR~Qpb1rKC7QH5plC`*sS#3dGX$V&p7cE~o z#%$Qd8oy9J(k`{0zgeyzyCOn9Hox7_RCp3gjlW5QNz?j<3J#mLn+4M*b8~de&N@DC zk1=f6L3bHoF!6>|6+1=)JK~)BGuD~bu|xu2 z*{^;c=g2kt43W2Ky84shoE57qgtlJ3whsdu)YRl~&MExg!Y}f-E)JOm&BPTm@z#y$ zdrJmw{!GlYZ4P>Rt>Tssal3Hs`y6?^@Jc~cyYn;#em1L2i(>t7bhN!Y>b+z`MA`Qf z8II4AsNb}1d68nsGWJ}F)Enl<%fWheG?K(&DZjBz%JyuU|Jej2Tw)hM*gag4HL2pE zwI3dKAY^Df7l`g8UVy_32caX?n@@E=o>U54K-?WGoBa0pQpbKk0{mo8yNS8$HC<8Eg4$%qjhex%G zp`x6vl9u7#?Ry`s^`2l&LleD44vpRMhM9X)U87c9a@~&KKw}=7P*^_MEi26jzDw3B=LO1-gF_%o|FjrIH0Hu%fxPL;O7 z+Z;eEzfE$%auZ$_O=7W>vyl6Kmpd0=x{YP&7=qpG8S9XR1#6I@Q}Oxo0yDPf-C7Wl z{nWD=zr>xo`{vLC4@Oxmb6>_efrb!HZ_c5n7($D(s?i?5~3@B<+-qBmmXW7 z#U?2j3f=f9*~hx;;MGMEo7fH#PQjr&uZCT<0Ul)w4qkgOMEfUGPhFW>*TmvFB_C61 z^E|fQ%(vnrU8})DiIud`tHyukAyWkp$l=nQj*^PKS9SGinxBgS*5CTSc0iPScH~Xi z0?)$ULpKLk6db#`pQmxV+0VR1=3AZ9?FA(uEkaZ~AMQ^S%Ry^a!os$0HndiTjlib| zzuqBO;m_b{g&l_tv-s2a|JBPV+>8CHCEag@010nwv^F%F$C@r#Wq3Ru9}KRwGDkQD z?KHzGf3J77yJ>6QR*F$M7pE6s#9&QGGc|LWpa+sO27Qu&th}cyBB`VFHc6oPt%wX7^*epf0BcQD zYbZJ5$@Z`B-eDq}Y93lEKebP!*w`k_i9&}?^0Mf?d(}fSich9x$ZmlQy8xP+I&-1v zWi?gWq}nI9?{*|WSG8Dt)ltQpoY$)6#ojG~U)&N_&^ioN+a&PplllyWCspgzF4mcFsV~WpC#VL}ZM(X5trSKcZWFnPGg9Q8+Z( ziCqrk4(uXRVx3vw+{39h>?xjDTsm{Pww8eGEE1FuF|z1QDZ5KwAJt#m!)JJFsRcs*f^hA|e&kF7Ee`m9BBEMROmD;UgiK!2~TAttrll^xXZ zCw?P{;{@a93~)XdIU8P&-T+xaWD!;1U%GRRr~+Rv&i3*AZHv_Kmo#G!{Ay!6w88s# zzDvztuS(<;%6jn|^_q%CzjxrwU_jk1B6|8H|&?fj}!XtaKCVRNdd-)PWny!^?9 z%~M`l9Es-4T6Bg6nb?zdzxHr(qU>?U?Ar4TpSRe8%ZntMwO=jL(z7ZqgfQU|AczZ* z6TXV!Oy$cdlHL?LJp79&2r4|#5pKaE$B>|LBn;W0*RfLxb5B0dJ840n$A z2@#E;i$MF6)6x9--u!YeHF7ahOQXATQ)@mi-W4taW8%?Va-tapSl;XXmp|p|YI=es z-$-@0w6wH2I?&bFR6-|1-_cWHaYQ_YZ%1G}7N~eqZMc{mP3Y_iGr?aFEbgE$F#Q zKW67|I=L$tNFYe&7&2ZHGtpz}A~I88p%}QI$hnYIHXPT_elR*b_2arh|4BspuG>C& zMV59`c5bDD(c=F!+-2aDOzl0xO05EwKL_Y zM2_SF-z)~H6&pAsH(ERsFUR}Oep&*#rMjBC1_Z}H3j|L6XM^DHZ3OK}_`*O~D>B1M z-7^m0e1qBaby5CxGekp4XYNwk7SB~ChEdIs!1Ij?%kcIo@$uCa3!}%aTW-T&?fo6T z{~bNxzwc?qz)elH&-ahPv6#u_ZU>Jv1I(V{$i|)J^i=b588#BRshfrr17+QBtqqmwVmoE_Zr>~sU9mF!Lb!}&wjqH&xr?TsBD!v3 zRfnP{Y*rOmbezdzj~`8Zs8!NS?8CGQ`EuAqesF^0`Ei}#?{V?l4D2CCMam`h$SM^H z7KWmSMwHR6ey2}Gtiyz@^ezG2sz&?ijSa5ZQRCG@lg+w}{>;j}Tc{nDA;VFzTRU$* z&(sz?3EL$XQ>v^u7khUkS4{U95$Bya#7fpq=P(sY%{BOV=w}mtE!JcSVXwtWxr)aQ zS0*)JzUJn%qXS8QM$nm070C_CdW|es6CIS<_}LUDDqNWy`LwT|joGbCP7e?L+fPpS z$4XDqU-`cNrjMC@3k99I7h1JffX~ae1ihc?mrn;PcBAe+*LU4E!qn$%-Sv-C@IysrmqnT!v zoxPRlFroSJN)&8QN>ognAT+-q+@FEgq&XOF;jd>=6X)a#OAkOb_RJM9HtwPxq&8hs zp@L~HS`j*(Y^VrX$gW%MBFIk3R<|D$UWn^*$!xI>n-FA`1DVpUGdt|}HpQgUMRK>i1&UYg!!NU3TV%%mYlrSl9o zJ$q6YLpZZBkzZQQ1)<@2lZfOW?SDYR%RQ43jgZJJfev|kG9`VI;-ZI=P<0xZS>s&v zAdivL-r2D-OKi|b9WS-_SCwr%9lAbv7FI$hDs)B~`&UxeJqi%E^v z+{-u_IMTz2bwP8f=`5Dra@HzwfK{OC1}xwakYJ`1=Zbh0;SBpLd+?yWqa1OIRTX`> zxg%LEjtVlf{%e8p?pAPJ#Y2i}5(|~M7*deqy;Sj>I`J)uuuWwl(01=jC`I!?fZP*T?WBM%# z%}@r3#rUy1#=9Y=vuqT$N6f`Q#60Y9pMpf%H&Q$~8DZAh6(#F+)DBPX+wwrd(VSP1 z9yXkr!e~x+c1E)IlmCs_P>MvaXqT})MwlJ7wMsXu>hFj2WVn;-0717wCUk>rD}wWLI{#d1hNKM{{|+`&dULH=6ang^Lid`JzgjhX%IwQX)I~ z9ta|Lb@^K{4I-R8>8Idjw0opEr%CKz`nF=16+pj!ynXd*A{EuVc(M1xAO4VSQ7lt4 zk?_8<;*7+%X3YY|%fwx6PTze8_HY6c0cuY6^TdtRratrilT*tnV415mO08gq4AQ~w z0h3#!Zn^g?=mexHyg{+rMT7Fjii*O!&5-cYo`j+Ko$4HpF(CQkPPc8u0&<4Mr#4zu zGdnn8D(hXqV;PJp7cOQ>Z&lI~lP11q;rNn?AnW>8jIOHr5jvcRGw)?5zO9QAFx`s0 znB5(ySG$uiCA3dH3;zd~OK3zQ~{Zwe~ygoZta73b#Oj`dx00ki~G zaUOA&5pURYHdmVlhO1Q{E8RC&tp^2Z%t3bRlCp}#(zw5{_8GZyo+I`+O=^Op2Qt$@ z9N6Pu%rPdwx`d(eOX5Sat_W0RC=g>2EaK%NsMe1;cP<20RJWg^DS8RCzr8CSv-?M zzUm7HY|t+n)I_y60IhiE%CD46-S{j!7pawu+Xl{jS%9oe(`wn)P}+ciJcClq65;Du zv(&OvI&_acE`ZZ~8^D;mMz_pIM*4d1?PhxpmnBnjI}FH!A@~9bXGZkkn6&ZB=WIc2 z6m^DWHKC84$uxRy8l46BB`%Xf6Y{fVx$cIWs;>)~e4`_dK4CSvtrEq^5v#Y=o=y&V zt!4qPYCb>&w_EnyCeasfwN~>Qw$O!Q9D<8YKTFQh)nHM7E#xIjg!c~Y(f=pLK=Efa zp`*!SrF0ee9(HpPMAL=sSQUNmv^|%UZLLjLe!Such_9$cHc%ZH<))GxyM4O%ng#P? zhNA95^wMg^E=#>SLe6De#e3HZDOsFaAc!+XXK3uL9bhp<;;Pz+<8n+Up2n!K6WDC(Mkw?y{5 zN%%;PM7^`b${U-77r>>QI|vmSnu2B^vsoI{OqHMTh>1^jxovHa)A1^&4Vc^$$vRsK zG^(5vhAqFd81n9s^9yIli5QsMy8AMn_LR&~;i51+I?z{w-HiA4U#@%N`60THxeRID zVm^_v#Riq-w&;}CNmeHXGw{0frp>$GZOw!r`d53G_U+055p7`=SMgfLD;bSz^;_4l z@G$(#=S*a<1eNMy2ZCZZrmQi41;@@8z)&~pXc=1LU+!HTAF}Zh{Fz^?-rB0hjFx>- zTFCw}`>+sawwnEuC7Zx-yALk2$Ycug@W`}?oI>;X)1=KD*%2xaOaq;ReRiYCNsCrD zRjMLA%4_ktN)Wa~Yv~w=6ZSI~6tt^2$3&fr{afGC@@8S1*TT^VJFLg%Qv7-gpNB$k z4JMt;i4!~moRp0T{0ZB<(H8ks*%PwqjdkMg1g_a($!8O?;dCIzUa6~0%;EXWtjwly4Fib?ynritMnve+*}x- z7S9LkQfxvddt-HrYEhakGOPTd3mJvv_t`}rs)>r_wj$G=~+N_vSWk}O6 zeS&yXF1x-Ea^^?BJB4sssQ>-$+Rt z>(lXFlp%%A{BB8+bZg^-Cm$^iWe?R`zITavCJ*nvyWsbylq;k)qas$8K{%1akQmF<&n3y1T#B= zZD_fc4w~Rb;*E2-OzbR!8Po=uhCHeqKE(GUWAKc-1-s)p3_-`|1(VfsHQN);eMxVD1Bs!PeG5@)h5k^VoJcBLTC~qG^TK$!~_AeeTf%}5A z#Bq*||H~89Ckvk#dC`Oy#%LQ%o;*iZou6E8ZUP*0yFfeL;%@ui$$a2{-ekVVXj1u{ ziQNyIr3vaHQg4NC2)XJu&yUzRIY)FoQa*uf)&!S=StIFq*bpJW|Ow{0hU%8c*m5x%9NoZ|8C}lD@wAE}!OI`i8nn{abklrtMA)@e;0`1~}-81<7 zmV%6D$gsPl)7`Qw+;dX`2*;-T+|mb%fPdT1BE$MT>Sg^A?v;xp=BPb$+HupYE|=u8 zNi|a5WTsCYpm^lkhBNSGuOTwcfyxx-Z8g}Na}`o*snl{^BMWRVBh_4IRc1>~nR{$iv+y_oJ{eoG=5l~(i_@fkD1I)_*Z7eES%2s1`|q-} zur)qsEv;Yw*1Lf_tIKHpFT*0!pU4<`x8bl8d+egUHBri;?qCi`sXQl4wT5CO&kkYT zYPaccpUn2=m5*%dluq9D(_nNXQYB+eBU91rl|(yn3uHUrAUfK_A^Z67^o&-oljZ#) zu0mulH15P%wQJokxQNTay;7qiEI`8WjaK8Zwn6{XJ$!9p%t!Ox={&g&XkZzCz<&Me zJMUR#y*L9qE#v?dmqF*Rj$#*d5e;d#0>x5A(|p3xmE5Ow#=5m*3tgcn7NX74&{Fro z!+eoJlJaVxWTC{UHk5sWgSB|?<;5WNKs+(Zm5O%!FvSkd8+Kyf_$kQLzZe}JSW7L| zpenFXtY{`Byk%8Oi$a$^K2TOidrb!}2gX>rb-TQGnY}KfArJB#5=%%#)*L|E#pM8j zL3^h?ea%FI z3~gF~Vl_4=2?FaSc!0rFxfE>pwJZ#gNd|&(AlU>Nv%@ZlpqJ3IS^PQ{;7F?eq-=|K zF_zsLf7%QxBM+KZrp3aB*V!?Om$Q%k(uDfEo?A`GH!* z>&HYtzgnK^xSh@C*MVeYUGZ940132Yu4};KO{v4gY^#wNK+z3%$|FXJE}ZOaiDmjX zTUyMSU647bDBU^@(^3r&8f*EP+h zC4C86=X|~xx$~7y_GeYIY=)RHr{z5HhoKgFvwoZwK4+t)gnL3Z5TazqNn!W7PL3s?3!TrX5mTKfcyu^Lcyi z`sKCW)!y6hym#$g1QWJ?&V38Mt`|Y#qH@ty^{;#Vx2^uW*WP)jvpNmG{ceaNF_#WL z#O9{Jav19GP22p`{VUV6Gk^W#kHMUV;+gR@pGM=MMU5j%vA3jgzDH5S2G#8@;#o zi4UdnvQViS9Z4GNq57z~haB8BDcqA?-B}(pv1`fe?Am9=8@* zaYk*dSk5Z^HdPnz3?6|MO}ut%dJuXA_fhRhd;3alY2=mTX`;0+$_T1v5&+F)rtjlX{o^ zM#~J1cEn-7>0-VK85LDs`8=IWGkEH|E{Y7KW$S=x{8|lciDEBU71IzL@xHp9)oaqK zYW9i^qk+P3*HKYIX-`a7JKYv|g{GPqYIUfh$qc2I=deUKjH%6fF|@|iB~({qIQzAF z?0TD47%$V;jMJ)b2rMKLXs}rzku?R<*JgoCCeeR>ODLppy9I5T@C%{Z{MR%s!Y6@lr2Cd+MtIi!V7~7GfBwOH{72~s~F@rZ}qDlb^Bh;>GP)hn95rBHU9-U zv3n&fhh!IwGWt1JHoO?zSp?&RtbSOO2ts%#Cq&qRapPKUhNzkeebvA@rT6p7q5^?k zgFnq?6SEmn3@I4^i86U)cIEVd1Ky!&^&8T0YWR~@G%#vsi(~FaTgdKs{p$4F z-};s`EsPo3PIORMKwdNz=K3N_sXPgWJfD&*OvX=p`@*C(2flD3C$w5OgI@C(|1E14 z!FjzvQD9XyeG;0z%=Dm;V5K~IQUBNAD=nt=2sP(1omD*f9lWlfp~4NAokh#(RNYgk z3qgV6G|kbz;R&UhY)F%?OJkiIGFMnHw`eHYu2i^*L9OZr&<)E>7JM8^mW;W5nqar? zhclv*jNYWk*~TNZlp!q=TLbFK#nf73vmsNqPP**YQ0Xgig3_`E#Uk)?yav@a%QRj= z;0;4drBXZd`to{ULU39;P5d^r#I!-T0DUfJ9|q*7hxIya6>K2CJtX1f+%c!a+;Uwk zD=-}Ax+kY}7i%QpT~0B{1cTM)^yKDqnckWK5w-AJn>&Vj--(VXsDP01{h zjV2dVQ3|gKrYpQNO z!7?g0*N3dm&Znm{2{t-jQea-x_cV;tu;6qGs~o?@)hD)aZtx{ooiLeQN3)ha^?e3OmQIJva5r#Ol- zH(TIAKMf=`rq-YK4eiz~{JGzX$4j^M(U|QsoEnKNZBQ7eJJ@n8{Okp>>2YF?_PNhi zh$F}b2IUfTWVEY%I7Hz3)H`6a?;?j}PdTFujc3KqAVgI5%Ps~_rt{PN-Q~$tOM^ce zGDV|M-FD!mS2;VJ)dh_}rJT{IQ|rd}W^K*6C+k;!T|3yEIn-C-s$#Qifu)`^-^!V2cU)_Dey*VD38-Qo!y+WFbTHG*Yk9WnWmG4?&wJpH{;@{nH1)& zvxrn%f87^Bmz1pNz>jdMvyt$}2kY$3VO&sgftG%XbJ}mYIhLc&7#xSTAB~CSw7=u$ zPkxT-#tu_X;h}i*co-;WjB$`u)O}Al7=tq7;|hm?x?1(SpLyZW`goaD^0mXyDIFhPG?vXXZ_E=W9tQ;S z^ag$u4#>yyiZd6NGj3!E9v5AnO)<*7m=W(kyGtZ&vsve_EZ(r&`5+fhhm-3HwPI3@ z@4~Hd-L_Ly*o7UdmP5)j&dc%PI_Fe7ou|2+VXEZabjX#i=9^rn#41wNSbv4;7li%1 z3~Y80;yB><8P?{K5x_nZZB^{_O!-$`S6%?x0b)mqYZYo&q$2^qhA;wKo(4XhR4I-M z8;UsJxXM4;6t5bsj)!jcZ5DxuxlKu|l4dKJFTvsUuYyKJOzOo3-l>= zxFDG8U3LqJ66SB$Yb$cKCvtK0PChLB#>>2D+bD73K%0nVsmEZ~evo z1Yh3MqtX0e{p!_kf4hqn7-nPD2b$feWbm^B5UQl3WWTfI)v{ zn;(67{^;+DU83c#Z1=d$Jpx~|5tOFm0K(+Cr>uFIb}&FvWjjMcIw1BIRM4x}R+wzZAM7jR&nTg@50F&V+i zc1P)yD=CjRWWVJeaz>t2{0j>E`|i zDL|$fzS&n2)8VLuEo6QquQt9k47nAwww@eT`)cSrK4wz_k3zd6ELqsizTVGsWu2v& zvOOo;$9#*=c)ctjG%!;?3J(u`Ils|xB&X#E#gtYmX?qS8%uH5k%t`8TC#suVmBomG zz04_3zEgus^UDzN0xhcBzPVRnmyS^SwR z*Nbvmn0&`DE9i{jrJP>q$#lTt`*!YrUJT;)bA#_7Ze!y$^uXmV(3! zFBZq6Yk3U5;HnM+I!Ehm*J0|{Sf@@SE-Q;6NkO9Pmp`>W65&32^5KWKf4K1oUE(u~ zu1W+*i=G>SK>10;Pj;|~%E|BTpDH%32dhQ38d_XZ_gf9ZOoKzJPwfwJG*s+f=`IS% zK?CaN^4Bf&|DQ{5B0&7oogKx8_vmo(Y<%ZA&whm)k)v5W`thA(9(}!pwTkDnJ1=s92cc=77azs-w3mptO)>A!R5-{t9_CDM$7>%_yqcjrI!wo~|-c>W*V`Hy-28+I@i zSIXnfe{$!)-2BxGn>{@R-+mhgcKc470m-v8NXAW{$f?Rfl~<`mfOl{5oKs`OjwZL`nGh0SBV z&XpTIl7?WWx4&YQqrV@=!{0Qv-|p}9!se&eUwYf@@5P19SJq#CU61gm7dAh${_Jh^ zcM=bOt92S0So!?I<{zofUu|wjZMgn}3!DF$iv9Bo#hL*A=NC5res^;X%>1_(Hvd?~ zezVzJfc)>r+rNCPIwWXA^gmtL{GZjtUuhL;!t=jg*!;g$s@+rrntym<^B<|uZ#SC4 zJ{LIpe=ltQW4-^4`hCFqKg7FV%NkHr`r6kv|Hjv-1p9D3GM<0)YnuZ-r-IZ8_N;hu zd1UHovXse=+x6jaHZx10IkgDKOPkLs>M%Q?7x_yW-`z{_%#FIDWK~LriJhrW7RQp3g@F*bYeF(Zp%ZN<# zo!%IyMSQ=w=pz}YcRh6x?V;AsXk&om9AJ}Iz*HR61A^@m^Rd+I9(fs{9qkB|=fpk+ zCVAqO8`^IBTBawE(fj!Jp^0;^7-j90Z-F|rE-s2yA#{^0l^tkhD*}{?Zj}P}{ zA|1_$gmLl;&}m?Ei0AQkuyYwUsNfj96?HsUy^62~`5W3se+A`L95&xL19 zi9JSjm`Y4@nh?Btbh?O$oZdyYkElg_nuGC4dYAlWZ^n9k$#+kkmHQ z$$d|udtWJDO*2d&r8O$kt;G~c@U?BZavQ4hST!?)u;n!>H)Q|}gmD8!-(rhIqeCi; zO9tn+*5K+KYo@CSVR$5V#*sMI`Hd7tDIicG^v5%gbnLawwvMKgedWK7NnqMH{YkqR zP^3b)=TqA<&B?M^j#GjLw&dic1FLznnA|6sNM}cZOvCrMzCJ_D@IRM1z8wEQkehxQN^ELGO01pFe~Kf?jG#k=>cehsNBe$~!84C0E`Y5(k`LHjisyR)%Uu>p@@TqZ@dw?RM5&LXD9HN963{ zxE6=GOGZziPNvLKxPtdppbMOhHpFxDB={|D$t;A64j@m4G&!tn=;t_m>e^=0pd-cKzGKtNia;W${kdxjpW_a?mIl%XUiEJ3OgvxHit9 ziy}nm)*snAt@z~hXnP!2mX1dzGr~jwV6C@70LQb7Av_v%YrXFSWAF9@SC@tu6=e+KdE#)n(C?`=GW;o3ew ze02ZjovlZYA8y>(bo$gL-av|D*%18JwO}5itOcr{59I(e7zqCy5i>z8$Km-xc8Nlv zR^Eo7XR$yci)&eFdgoh;zJ)1pB@#XOUFa zID7CIVapmfE=5bosOi|iK$btb3tP|}(ks~}5Du_6TlLUAyai^FD1ykiC%si^14!YV ze2Z2k(pk-D8akE;JhC=q#7hEk15JX>A4p-+k;0C0c_{c}h|xSg;$D6ZHEMW|4!v!G zn{t=flSI9)aQYA%F}oy=mPmC+J1Y)?l0UdDeZ8;PJ8{6^g6&XaxSr{uYTF6^U~ZRV z8vV3lgVE8!9RG-wXjp6Hz`_Xo+#B$s$VQKfi{p*wjsjziz81!GFh65Fk;%l{w6?uH zZ$A1CC*Hc_!hoy6Bb|&Q3y-(5wRc<=TB$-q{+Q&G6k(dWRvRe4Q zuouRWjRWq5{NFgQQjG#kU7*{wJ&z#L8L7TEjxWOLMBy0*c_4^NYB9J+g_0!E{>vMi zPeQ6)@G`clSothAeO$ETJXC6r7S)KP?1V1ScF~|{Ii(yQi~6;+;P+a{>Kft1l5bgQ zb-Z4h%C~CRT4zVCP#Hq(%k4us_L9EZ`J~Pr5S^*9GayD2tvN!IEnijWm zkb={hw}NVrgcskT zK}oJrTEfu&bgM0V(73UTY+j9 zPApS!nUrGuJnUg+GIE^iebRX5(=}{gF5bz8K#|le23%$fUFekh*-7wZx_!=MXbTbKQB)431bbf0o(fQR9DKPR4_RT zC=N)pDLL(RO-dB3s1nK10!{lPIK;D4iw>?vCGhAPj7A;ri7cpl%o#xyoJU63T%$FM zh1ku*8=Go|R`#D+0v0tSs!X7FHDgO+t#{8vU9}RzKBB^D@ouir&AOq}1-R+h*xU-J zCzfgnkzZBSLaUrH^b=Rg9m23|xLRA zYV+nd^*DoI=+&HmUwwi$x+DpAZkv#>ZUZ~-rON$xaF*m`;3^7$u;# z6Dw!ty3NAb)65#;6VfF`%t682DkqOYCJ&2}HpAxFoB?E{cGR9*rZCmF zvQ*Ed6K)8#GMr4e4n93H>1Y907#ml4nN)OjqE8!4pB{OHjCNR?>#EZ1tx#}=;rxbv z^7glu=SN5D(@BM%jw&*2bPW z$_h)(XDF(YL^ta%??8^@_0!3Gv^QR+^v-Cu%TMCO6p0qdEB2h55{}xuJoQni|g@~}e1GEvm`N9#5r%Tn5=lfzdcZBS$cGoPARm*M;( zJ>vXdZfm+MBblcN78i*$*!9W1g#?r*P}}-OzbB4ib(}DNi^pP(0nvn z(gd4`FhqxYHom_8e0S~cjSn{N#{5*rBerbJsk0Cj(=JVA2w!;ls>$-t=*CJ$@V-{t~VZX z-{8%fap2YM@;1tLvk@ZFPiE`ama!qu=zU#(WluzDzgl>jNTBP}7gVYEvR$F!qs#h))}9k|0*4@oe3^e`{liOsE!zd%Mf~d+RPUF2`=q zUcG#Z$hCg8y|-pXs#?PueY)1x@KLeOesJUAqpGv8++Zd_Z^*+_6V^2M`gJ&z96J`$ zzhLXmtv2k?d$r%bnrj%lvxmVT4*+6xY_tHhNasSXKnY{4+S8{^Tavj&)ghmqgUD+V zO!5dT{go@<0fZZEPdHE2r6i(_hpgE)!q<9Tm!g~mf3Rv>9$RSmzb6P40^SLylW*J zw>-*fxf&lzj(6462(&MZuf-if5V@Sy00_joE2VZe^FEx-rn9+n+PQXC)UQwLcAu;Tf17oAZn<^$HTV8!&4xJU-WWGeq0gxji%#^@}*OLYsR?Z63Rdmzj z_hKe-t@dTNRGL&EhfUeIy{g;1%~#9YZJR2i*}7AWLuN%Hg!f!N$VUAn4B1%a3TUue zn_jD88rFap$nFUW>lJuNO%!a%^HsrZxEE;E9;4vb2*^fNTzxzuV;seevY|F3G^03^ zm^EqP{Bj|-y7bzt2^xY7ggPn6uo#7#uV!r(w$_q4QpdXJ?L_G=Cg3V-6Z5`T=amr7 zFkysTsohqd!{m443-YVQFZ4^7_31+8j)V_JSTqd`wWkk>#dHS$c;lhl?d7s$BuDxH zi%k=m-@P=_n!9@*o6BFLB@O6U1M+vn2aXs{(5E}YHiRfy>p5gEAg+p@pJDoq5s6=9k%>X3m9o&507RQUG#B!S3; zU{2=cj5n8p?PIFOrz@r;wbxjcvRk*>4ePbXVoH@#OHj`wY!t;)CoP2ll<*s34f9hB zmGe0l?&bW#mCIAY2= zM+P7A69doeRqe^)9(9Iqb4E?MXK$oI<#v5ItE`pPG-44Vpn_X${00a;a(JWZ6gCeJ zn;v=9l2fzhdZOu91tpZTXjKaxXh$;igd81ChB$x~W`UJUXv3$=$kff;vfz5;a-M?-R6-F8Lpu5Q9%~TOqEX%6nd*YfZ9Z^ zc7s}k0Zp?U4n!Ch&nozju@`u+I)qY2hh(Up_pW6Qp|05*BG%VphwiG8GwE9Hk84%l z4{?PeV|bLX#a5iyW;^H{dBL|99j_7&a^|Dfa*wG?Ny~&kcZcw;ON`FQPv^P9wysBv zcLy;(&GD+UgZ^b3mQGKVV53Mm17(c2sI!HRmwQ{t@D?LJT8|je2)N6=>qRsJm8F(U zhbg*rYozXZl?J;%w@MyS(iTnykFdL-edwXPqSux3jOz89Nd0Bhs-aIM-`xye%AUiK zRPZSi>_DS#$jE|H3wNNR48GvR8%EaC)H`q2qhR*4ou)h%%$*ribbicQ7Q8;b`8j*F zD~Fo|c$T5R_K8S)xh^YY_5+8D_QmXQDbH>Ijr~A<6LHpV%#@(hQ$mJ+N`!H&;VX7l z!vz}+#C;&V4z_E~h3PUXdx3IPoW|3RS^zY#hYB9S$9fLmgt{4>7h5y#tS+I-eAVNi zDD@!n#~Y!pS>f&619H0dqTK00DyRn8Xdy|hbr;%6V>0MMixE%mEj9v-q)LL>UL|<#M+-!P9&_^zkd6x9s~f=GEfq-3RFA@vlmIcp=KM=m z3LBa|NFgv95077tx5PS1ui1vTjZuhL@JM;tTerrAhE?dVKI+bwn+A%^Q8P-9++!f^ z%`rM{k5MPZA=We3=sE^vT#}&5mPEg22-|{CAIfq)xucjZIF;~iEwLmgC1sYLDuto~ zE|G{g z0kzBeTGHqnqi6uFw-RFikYLzE(Vl&rhr}Qh*@Xg&*T-Kzp5Oa9UUYf8LRJWmbCq9!VB$f%)tq{CKY z&-)(NnZ4!kaK-EmLg5N0oT%simEMm>&&;Bz2l(*$T>||`{pE^8q7I9EZcGh!e~62>#W~gbXZ;)ZZrr?o@79g22M_PxdUEsey&Ibwcs3j1 zFa#YlzQ&~A>|vq7A8b5)bo>6j)MiWsy3FTq(ykQGj`M;yFnHE_kU)eIeb$BE%4S>> zl4wU4Sc)np63tibJV;##H)@lk5Gz{IhMnx>aL+6L6Sc0(`CLut<7ppo>%$K5auv4D z)!p&#sw@-uGt4dis{gx{o{5T(mKqGYxxtEpwAjnSQdhFWIm~8>(dt7qAAO2xWVC(A z=Bs$p#>w%Hk%>;aQiGrxYeP-yvv7jcPu&1$`f6D6z;fN2rMH#Uy+JWRbe!@m_u?F+ z>(E0jX~H!cMAAV&t@H$oe2=sGq&su26UMPk`#5BA1F^d#57>Y$yV$0defH5ZfaJYz z+@Ohn0mfdM-x_nuzs?F=rds-R;@)3*?U>XPb`%=g(nY8U&fzy=Y3B zD^N)kf!gphC0Ook|43>XTd6$T;Gj}cB9qpzXWAK-q%+!Wl*aCDo7QAZ12n1SbEr7U zvQ>$F*W0>uD9y4G+4ij>P6jDOU9NcX}U$DOdf@8 z`Qp}c%N^<;te4W2uTZ{!`K|Wj1n|nq_R5voget0P_%EO=b$6+fKoytBufNw$ z@Q`|SJ!p=oh3VI#4VwZ2?Vld!Rsut*&T9@l1dTp#Kxoz%HgPtl)OZ3YjCwi~_2!Jx z+C)j|H}y+8uB5@{)1>GwzFE|E)ijYb>{dh}JG}9@-0{+)1l!?7_RdWD;^oWO913J= z<{~$@&4BJU+7(Y0YAggJTS{9gpwvhnl&UhT;oZ@5Rr!9Uff%W4v$mp*D$|W{37HNQ;|W4l^7qs4{!^x!47>Qn(0T_)2;de7 z+~7@O54jR^ts)O38-ZCNve921v2b|)LW zLzRx7;_&(fmq?6W@dY8#i)2lwFlWn>g)8@-DF$^p_g3R7o<3PZf1NEwB{N$t7UM>^=s9*sxaxTS%z;$`$2JT~Xjkb61bel0CA! zQ6!{x`$!e>N3-C25DY?iHr%@wDK5dDXKE_jI85!8=Z|Q(tmIe+X)9wnipw-TAnDre z<;W?w>+maXyW@4p4aPX>&36^Jx{Nuwc3g2SEU3H*AG5L>b%_YKAKllHPs*anfi@Rr zkq13!flgoKE1HZ<5M{D#0`}c<{#p?Q*hV_x(m<66vd#1(nr9 znH-FnR?nO;!rQ@oR?e*2mxt=hSL;Nh(C%SBoYf=%iuvGdgI#I9sQKp#xw%-WDOor_ z?lz>Th(3TOwf;?wA`!Mib^se>8Bt{iEa7#t^(r{K`1zFxDHfIlS&BmFO=z-RJ=rf& z<*lc*)t}>OqJ_+kn6&CIX^d&=p{+I(Pxg6joLp76oYKygR(~K%Vdm=gDx`Fu8dr1} zP2kiS-z<_x`aao-Z@P@z-Bz_KSs8IrZ4EknHQ=sdI#OT-b5!dVeE<7xZ&$q?0buoNcP@S&C|KuQ=)zcK=J zYypW^HO4ZYVK*!uEA_P))|ZTfG$7Bs%zcl4IO~wCV+sdZLeYRxWUyH7}WD8Pc2B zdW_9A*IBTHuk1SWZb2ub_;nPAOV8=HQQLZU(fo2mD8WOA1B+yFzHO{1V)Z?GBbr6>2G81W8|KjY4m2sP`vJy%cLl-Ze7B$W+sD9RIPAbfDim|Iu<0PnBn+ZL3bW~>QHJg(h6V2nYeXR2{?=aOQM&#-W!qDKpvdaF#tg;PJ z;G9#py#F<25Sfn2xB2h=pTBeA&*<~{9}WKSH)<8f6X4ysa_24b%l*|e7Mv%UyEDA= zt_q#8%%afycQz^Xo9H`LVu*P6;LbMhzTtlH5$rHt?cVt}dG(hn?YfmJ@Xp`c{7V-o z^6OQR0RG?dH-E9ivD#bT{Hqr>S5*18ljBwL>WcSQFKj;4``>K(2FBYb7dC(AYrOr9 zdNShO-~8I^&bJ62~{eVF~VT;d!mRO#(`{YL+>(An)D7MX z*^0)P8n{LJiSJJjx!Kn&Be}T&GROJcs|76kyXEn)nswMw8&y0BNT34q^%N`I^gyvM z9Ep!n6P4)ku08d(te6`dF+9iuV)&LDuH5;ivn?qQs+AG`ia9=k>c$#-etI(Fl34l$ z-qP2dDKodD1eIJv+vaM&r-n0(C4ic#G&*uTKpEz=zCZR{43%qm^$Jq0e_=J{y0l_$ z+l{Z)Lrqc@PVgcTMBD*e$F+nTrZn!3G9kj+(y%cB8V*}6QzQ#I7tLLT!{41lg1{1( zWU6!lFQ&5t9ne5MiX0*v?)H3os05)}0OdLZ^7G!XZeACz1<70WaQpy3xUp~o1Jz<4 zVsf^emitC9FXz)y^g#`I(QD>!X~P|N_S17ib1gt$Pai9vd8{fA7hP8$am z_5gy~KHa04RD}!dy5Ksva-~3>QR)=g)O^I3uq+!@4*Ku{271J@RVy-C<25|E#K<`+ zN_{M#C3hg08Vz<(JmKF1#_F_vCqzHF4JOZZ_#OMBA`NA)4=_$HQyG-YblWe( zgJHz|jqPC-JSi1=sxO?z(r%oY=z;u9tVHobZB#I7YZTP6n;uk$W*39w$xF`?N@U!; zL0e|VchGcwTBfc+|6;!x)6}rynNV#fFwC$VSPMr=3`)qH@yp}UMA>TN_7FyGGv|X# z+!l}}CNublElB9NcJ0!F+8z_AXcht16c54N$BQqQwN7d*J6N!z;exOQ3RQy*oHeOW z6Wwet-Kw==asg&{%ij;wN<}eooU@VgU$)M2)Nq3mmmFC}=P3q}=$pI6T>rc@U*bLr zJs7!lha1c@84*>QaJyqnH`G4nsP>e4MoO?Uzv7_%JRIb0koH!kAV{0ggaXwNF^FF^ zUL?*0J&J|~OP?*Nvfmq6TCRV5?msGC|7w4HxZCrk)U?s~Rb>*}4W;f4mOfu9EX;B^ z^6KfDmHK3e--OD1R+Wj&VTcFMr$qW;hx4RimszL-YN`!9!{$%*<*jSck{(!_JgNNi zMM>U{h88Ub+8AOrAkDo>kKA{xfhnSc?CrmN%d5W?;4IRls_;;XRm*4U;1p#TNwRXK_-#RI#CY2;O zVsu(x8D^TpwS+mQyC(d4GGyl+R0%MJ5+Bpv(|~8~6Ig8JN2kZyrrBJ%nXW9&$R|Y8 zFbItH)vbnW97lB4>^sic?wcSvAcnH}fO3@=DK&NyCXVIC37{pREx42ywTOBaA-U3^ z6QAX#|;Z6sD*)`)8iN#vZ0k-0IMAUO(>~Tm2y3ELq>=7ZOjisd}gUv2?dT|p# ze8sxhip*p3T;6x*g!>#JHcA=9^=B>Zl_WxsGh1AxbeCVQxN!p`?T`q(009j)M8p7X zpZx%WrVQc>E(oV5jo-W5({*IeEk=;mzc)AJ&!8WjucRJ}`XZ{kcmMImqX6{^0lA5J z2-k(kcE-EPH-tlzh377@S+5OI#}1Ge1Ak>Z>kT3+llvG;I!gduC+r{dHzrkt?>7;q z$z4d76RHS*Gwgk=Y)9tR>LP}D=?^@Vo9z<8RjS=)d)WJ+xwZD9LW8?hHFk!|OfH$% zGijYn51>y*t4DT4Pxl0KXim9t*_Mpf-w6059P%;3R#nAEORm#~XWm9epEU%ON=W!S^=yJOfn{jT&TiAWvL^ z8{jCwBq`X^KwBm5ZEMgWyE z$0=$SbGM+pnA}~p2h~@h!7xM`fy0p}q+KDSCwV+@20r9efmIic@7GM^)JhFE`$j&tgqu$(tE|U~(qOD^!QIlpQP+b4a1?7s= zU~3I6>}h+RE14olT0-mz1{4CyW!>w1uyikAkZQAe87!J6d*SnB?d@i*uG&39F!dXn zVx_)4f|LfV0->N+Q#v3MvdgKLHML`YYBwCSohtld?rXWu8?4!j9%F727M)XG+K4vs}VI|(Aye8SvJrMeHL^hJ-pb%)VOUU z<-k=D__Q||lT}yZx8l>X1PdF_5XdZaO7MF%QGa9#z?3jLA!fQ$A+0PMXKJEfm3++1 zks^&QZ7sPk$++ri?Wvv*gg*Kpou~ThPwI6>P%Xu-@UYj|@DO_>-E!iUX>x z*KKInGoSX;u@S3$;w%Okn*lxq5&G$((jubc|X($Te4k>nE6dHw+w4J>ATd*8)ERg>2!6pirJKdTs&0c1BW0cp;NCtJnmB*_fK6Xl{ESraZCiPGD{i zRbCOpF<`!s5k{SnyQ49oew;hzWnC_n0C{rZZ(pn_uYSDF!@q!v)D8 zc;q$CIMVsU{M8Xl^dM>6c5rJ!rh8Y=sI_9Q7)Y*duZEV5Vo9&4W}NPZRX5uCrc0GK zZr!?l@1x$mjgNab?{9A2xOc0l(;HHE7q%4G-H%T-Y~9nBND;blLq>jR1QmFUY!#*o zVmZ=YH?m-JX_ul&^h}}@LY;iAizIC|qtSp$PbH013aS&31+AMOPZ4h7T&UJ+O;b)- zG=(4X5cBH|MtibMo8i=0qG|4ukxUCOhJrXVxq?fA>8vI3g(7NDF7_|NZNsucI9wrm zR?>idTiZ`2ymRzcpUrGE!SNDniN}hq`0JabAF9}Sn$j~=-%8XnM(!{m`uUfb)X;E) z&UhQ&ny&$uSNxkFCq{(mbof5QnuBFkPm1k?rE83|W+qgGs zW~XSV5+-brZpo26QbBb>csz+7#O&K)vM$3!jr7xVn_oll>pFb_?h@4oHo(HHb=! zWU4}bmnpQG?=UnLE3x4wX4b964vQ(H`^jeTMy)vFQzJ$X){0cKY$sUmT{%ABu2+#5 z2;hxR1y>YRej4Pdz|nneH$4FmkRwAH6sjzsd<@ILUVn zQhqv|MN2o$8;pi1PiyYB&3eylt2x}KJb}b{>T$*eF+wo$t4Zg|=8^Ga_$f+gywR}% zxT8HljPVL92*quI8t z6=ac|S6#Db>qiXLP2n=Dw>hGfi-ME@nOMVo!2agaxDGg>Rc%GK{Ufv3&ZIriN@!)K z9y6_ol-Sm&m2ZJt3`d7X^|qg_FjI3~*;)WjG@*|Kj>&Ygve1uq%&|3nA~`0F(gsr5 z*(*h&Mji7ZvV|Jv6*<^#h*d>NGgiJeJ@7DTc}zLbDlFFKaA8g564jZy21$h~e2a}{ zYw@`ewMe?TYE1@3kI->-Oz{@0pdt&Q%5WJ0m-qUg9S=1FpRe#m5#Ok5-y?wU=R=%tW%V5f|*+5Fj1T8&KV z=Rnx**mc~1vh>@AwOy@ZC_yd3(dM%q?HSsg$skj}PqLdDiWhek|b{{_BAzObXGy4y7nZGN4jidO-`g}T>EBRq;*r}a=99Y z)Y9&BJeNRhy>~W5GbYWzt1!uWlUkVd^1pNbrg9@S^@#yOrJ6^Vczwl7NORg{d7IGL6~D66dhBkO zsvbuNw(Z&iC=#iV;u=r7y<_&V4u=_)3`3IXMEJoJnKUqndt?$J%rtxMLZfi+>B`E> zpZ=Ydm1jTQKjzOif3EZQ@TW(kPk4Fb;Ya-9-}UiG#qntjNF<4Z369`8eh@Orr_grX~3ES3j?^zNnB%#bdZ)T%k`kxYdajrs}wRXFJB z=r+J;ECR`SkS3NYC^I=Y@WAg?>^7P>mkx!P-~H_F{f9Sx$XGvDOm?LMSalP{JpEQ^ zzY5??kL~L2=s(ZZ1N*Vt*ji4F@GHGpRA5aRn zMta}O%ZO`cJTivn<{f2o^tl%=wFH`)T18`?$tEd&jIgO=VyGgL2l|{wW+Hgj{)rsp zNCS7p+_-EYn^3ULov;!$Tjse5n2G8W$dO`Ho%7H2yiwSj-*(b73Q0Lr3OR- zF~qB%JiX3=T<$}>mZsE@$=JZlz*sPhH9RU^jG0i{wNxj9`%(go+$!pMmVs1IK z&3_eoq3P;Z`5|10M(VuL?kK-NO9=+4q!nOQv+LFOW*7O5`m6RL4_U6UVUA!}wK<|* zyH>8J-Q=nM!TGB!guI=IW&Ho`y=!cwX?7mAy@DdCtzB!iE6LJYMs4-Xviibe&t)e& z+~Le{*z9SF&F&V-*6gTfT+2(byOu>3r;6;0T9Y8KWe4!uK!9-)L5N|*2@=~8lpjuj z05K962#gs16XZw!ILV*Ha1tbee+1420rEW0Iq&WJz9KoZV_^dfcc-iB`_6ki?|ILA z-gA2?wCoZP;UI7jVo--4Lz;Op?AR zLr+7emu%fz+{9(McUtSq_iisPEw3%#*=%tOefRd=cUlkPw+gy%;*dQHW<49KA>vIw z4i$FpJ%hsfaCUP14C42=|FHiQ&Uz+VI&7q0gq3B@)0rFVgvgW+m`ehZ-gV$S&t!#; zz3unHyp65PcjkD^tV(+R8#)K*@lKw0clOebolmpeATgimVn)sp`zt0DQD0I3-%Ht& z3yfSz4|9J|*2KTiM$PqrFMV({;m0{o6y?;U8p)g03Kci_8|%sNzZ^*sY=W zyUeqcNqEGA{TZRbj^jYBJ}%!t*xjTL1tN?{uxHJD@WCOx!trs8kN)vam$V4Zu$>E$ zV8hJljn;Lhg0k=kBy)s_5rm|~>Zcu1vO&Q$(S|jLrjSGa2nMR|?%eLKolS6Q4W(S@ zlz}yLPnzf1!C~4~Ik3D62*{)1V=tY+ax6C;>%;U=*8oX|%x(|%p^_;0#5E4v&(NI? zrxFEDj`zNc8((+(JEPrxXXfN^z%M;R?#$(@R8M4lJgDiN7fmdr=~@dKSg<2G@xmH3 zjU9#3t&Qa+9vxb%%kQ^vl4w2PKNaq?h)^ULtm*m|W-69v=i#gfXQA>S8rV~)U$d{v zCCoae%3ut`}Zy6P(4^lI`K( z3e7YErdlaL^@1#wfj^=&H~foRUy5+$;Y5L z?io^)hjS=84ZUSmZJzV8nx;5tiRtsF`I$mu0SV_*7Ee_aGvNQ6Q=}`V8m4FsRWwgg zK2S?Gpr%e8myl~G->h%vIPI!?@i;s6V7qQtWd#w#bO{urr6S1`2RWrk$8ZHYwkxg$ z%$$;Z-dP3o5l~>!Ow4Tz0a~e!92KAMIntMDC4P|P;gjx4BZJcs5SEKfuD6|%s~FE+ zsers-I0|IUGVi|%Bpt%trOn0LYjyw-7@kZX%|iBn*gwRK??W%LH|e}ZG(!Dja5!*u$Q`;SjZYnJ@G)xLtPRwD!@$i%eQ zf@8=K7awPn0U!IQonr-x?7k*V@`9Jns8+4nKJmiyy^qU!kZdEL=$tz!9*0pmTm`X| zuR>$PjMY&DnWNRS8K6uWEOr$9MyOA2?tlqv=MlE2g{rTMS8q1p07Z)hBCCg^L*_4n z8zmD%Kx8Ho43D%<8S&V^b?cTlc)qG)T{VFQ1}Q8R2-(&yWg0L-#-EiPz^DzhWP$8m ziNUxkRMGqghspmya=6aVLSixhgUKTxV{)o{H4omGx*+lRWOH zZFm_4jxC3y)bpH}6EM93#!$7wsIm+5KeAzhEp83z5a3Z;t$VBQnmwWRgqpn%)B6Be zQTVM>lMB}7jhgd~3k}g7HOdU+Pqx*{0FraBJJ?vkjc_yy!9?y|e}yAJ6IT$r1o=!! z4zNhBSWwLH*_F_Cb}M@e$ybgCri(P=*71n1c17LNU3G_CD>C*tqkq>sC`oQ7$v)g})kW(kw zOdrJ7v5;x{=XjCu1kU-pPm$3i_JJV$t8>Y0nQ%L#pJ|j*S{4EknheTxt4e-88d$JX z3)yP85`N1UVgBX;z`R%yxUi&)V-U8SOR{}ss9~vcR5gCh-d$>KFt(O98q2h>akBkG zs17MIK~}WDvMtCnc5$fOxI-`y_3kyiA##>3KPQx71l{r|mI=I2hPaOo6-%t38>^!f z?qZZ)a4DKFdQHY#3thjt+|6OTo(XOqpiVV zL+4b4xjJaI=_7T=J?sgpISi3<22P0B$YiXf9Trj|0|Ssrp`k{xATcae6KNPCAPOBq zfTt&n7CDTl5csSC=92?18Y;{Y17txAU%&$Lv346a89Ld(IyZ$ zHlJSGD*}NUDZtTQNJQp2mjT_X0(>$whZs5RKeYTaV#t_EhJ^w7PaZWRM^ZNs!8rpM zVtLFPh&n%Rx5I98@nemm6-BVX~{gW(G z{@ip;7h}#do~7cv8|FHbKJWb2y3G5UyL_v!4Tha~JSHP^pW_GZ=WrV5|Jz-R z6v)du!Y(=C1Dp8auH|;c4j%aCAo>Astu=Qkq{)b$1kSc2x z09U-#$EZ@xJ(#(IL|1R&zwQhir1s2n;HYxS2>5bI)f|b^mcrA4cR-q5xegt{dUMVF z#vM;VjS;Hjr+B{57)B3-Hd9069uVr1dN<=f#5?Au6f^@cNP-+;ImGOl$c+8uQ^ov; z+JLnn6*PA|0GgZ|epNp&DZV+>gp?f6&tN(^tK1TJ4;uqlc@`i)!uXQ&Pqi+eD3i=X zHYHLRCW>Ntf7kPK7?xlgKyrsX6&@@6e6V!>t~B>TJt14-GAl(cAl@YjA}L_5oCD)} zai%-aQ`r##_oI9&_HhPHV z%YB8aAi6*;$_Igpqm6P{jDVl)AlW3+z`-fG^CEngPY&l^gl6R!@!8V$xF+}nS)z0L zxGA*}6~Lx{fNq2a%}l4P(n`j+-Ny;!6#eiNX^omG({X`u?{$Zk7IS89Cc8~c3sz}A z6}xi;{+#zRs{e+Fb29`NU6ka4K`@vAnLmI_dg>g)*NcmTa(hu7NF{cv#3UPa8ZA`N zoKED=KvJsxZSH=-eikCwr0drpFVFGbx;m%P2wm@;K^Oh1A28195B6q`M2yxd|5mm+ zySB4>1QZcxOg%rIHJli;E-oq?1Ge}e?gj<9lP*%N*@@L=0A%=hFoL{0la^QVOJqtD zQ_Uul%)3(K@IEo_x%#NTv(MRuBNKDU9_~Qa%QPayT-*lCQ>mZ%mN+}B2tYUbM|5fG zOY&(@os{eg(AF}krh#znRJ7NHt8LYdc0SU$+{^`(X7bLJi|daZ!wTB(r1CxknLN$qcPT;Jg|2@ z1XXYwQK)tR52?U2QmN5l>`>@r7|cXx@x1$B72Z(d2vbPU2Yf!#yQyuPf@`H}X+qWo7s_e*yU=- z5Spv1kY!C3AogCLH59%Bmxs8SpSfH&LAv>nTztYo9P%nS2;BF!$0yiBpPdV7%=6C} z{A@)aH;s?fYy@|EOCUHh{HKSz?;X&DL8_JAi`IE|iYlrE!Zj4S~rEylL9Tx&Ala*jU zpgTh1;yGJNn|eFkoq_J-=hSmQBv)O5~Cw3LT&)|f0>9QbbQig6}OA_MIPRUwut z2MKnKzr_9*5^8fKn#m*T$jJma91JHdg*k2y4(G09U7#K{qW?>Y={a$t!@p`RhonbfBtQu~mm#ekp@W^EToErNIvFbvyTh>_puhu5 zG9llG&?Bi7IDXWL3<5wma!8btK9GG-c0v`})O5`^y>n1DcYd*1#3*8!r>W7fYna)U z;7sbtkcO;l7(KGai9od{f}=Ysk&*{FP(e6+E^{}Rv%h>RA_ODKNTVE^(Y;tC=`P?2 z*Ghz3Qys4_jkrGAN-bU@cA!YYts%!(=v!X6?3{~J#W~0kIPb;anKPJsabSqNrqdCA z>WGAuS=WDaF5@31*SvMOaPUz;!dZ!av@!PL0j#J=XRyXIntVMPj%cdQ>gd4iMs{S= zavI`K#ZaU#Y*$txDNH70;lHk5+BzH^Yz=W6nzh`&Ir5~VSfNjuv}~jV*4{=HORggj&4u-0TMp;3y4RV{bR<7;3PdII z_!{aemFO#bG?txrrwes?2u&o>u&rgya-p8J!7+dri(lyxut~x?OHUW*7j%)w;CO&6 zZA4mL?FeE>G;0tr;FB^7xd81u*;8!Z;gSbJpqVS7M7}{n=@H~D4Nlmme#3nFJ;Z?O zhhkfnDao?}k)R=TU`|~0fPNqQ;2dmDbB?&V4?eguXEQXH>z_{B-9=b936LDdu$GM{ zbI@cBkRQT-J$iD07~1gbF(Rl-Ly@fvRTF?1)0B39UYR!-^`P{`$sAU*Cp{cecSi>i z?G55UNL8x+D=lDfJNTLyIkh1|8g-UT&y24s=+@U%B-KP7hS~&NJ7x2wowW0~+-#t3 zbIl1#t8crH&A1iJJ$G>1+AswlMi2^{+(03ua3z*BOA>xR|Q?Vd~$ZT6lGK^7? z2}j^2A)U2-rU3@ivQI&F>}QoWrqDUrjN<_6o1PTpQt$cFim=44bO0Nz@B(&nH{M{f;-4Dd;$& z@E5knAPcdstGFrTYDL}((abEzqbeCdQi(=>oe&jI422_@3ll)&6nw=B%5|j4JcsDm zz5+a5#lQc55h2B@s0xnzyP-((Vn*EH`mS8oUqqgFTDn#98VZQgPiXQEyA}Rr!4J;p7RIT3(;P$5F^59}wM8N&^{ zEoZ!I{K_V)7Z22Sa|Bi=2i(+M)K1;#3^Xk|$Z#d0I&~L%Y_5X2Fx}w-E5qER zWw(M6o2)~f1EDlbTTPeGGNdhVjb{`1;v)e!9Qq!xXc{(w_=m{=Y~5YjEgy9+<&tJt z1-;DTrK31lY!=DeJLOLol|qV2oqML=d4-4srjdfeQZ1)$FdZl;c@h?%Vc~{z+9UNTfmMnQm1`L(+KW^?sJ zy!mPA_x(|C^&uYpjAx+nhlABaJp7f=bsXAxdR-kC zuUFplc25WRH&_1?0DQFs@DU#A-JdQ7-`tIVwE91ymOs@9iKCsj^-os+CqVs5Bh(;t z=zm`QUjX#$jX=RF;r0EmtN#Z;oBQV$dx!jItN$k;zuj1A%~90L{NHQ8cmajJ*;L4n zX$HCWjSFit1pPCofI{!;(3dZ)-6Qm`HbG0#Z$(zOeR}2>Y$3S{(&u$@Kz%`NG=opH;y0&|csVF0B3AEYNh3 zQE(kR8im|M0@v-yv+{M0&<12mOyPto>brHWD)PFge_Rc46%w zOogKf%;Emwg|+{RaE;SqW)X+{uP?0qBSJP3g|f3a;D2{v?SCL(<0=AwcCdeZVeNmL z-m(;D4*5?ntbOClsPHu6#YW@Mzx?I32ZU~1pEjZd{Nb0^4hTHcL_c6b)x)~CG5Ye_ z?@#TKwLvSQL;t~-*Z$ra(6ksi^ndZ?wf~3E?WQi3mK87Y|9*MxXMbwih@+O$fiM2l z+P4T??kL7HovHp^gZSp{n&zm&+t<23wf2g&Tn9~hB5(OSKecvD;9soQYYnemGKdrI zij7czAG;bR_VmUCRNW8tupF~pL;cAQ8(sx;=vCv=2pmfgr!5HqoU&T={#aY^H%^alV*+TL9%GVv z-$((0ISQf?pE)Bq3(6RPpw41k0&1M&xZ?`s{5(zI&4YA4JiX1hJqe_-?->gcP$Lbe zja@J`aZgVhrAWQ0h_QN>q*eV4@~nO|2*rGU@}sXH*p;`K*(I%?9DnkoKN+65CG(Tc z_ea0>r7!UkS+i^&J-c`bH}^8z;dt=y(Q&J@bh-8N^_O0n#XsLc_H-C0ZZYY=%Hd8| zpfb!TAZF`;wv0XAV}$%&$BgX%p3*-tqX<&Az+^EVz-JtmdU-?7;ed|40=LMbMLaU^ zHJ&Kp&5f&DmEfS?diT!#*1O8}Fhn|p?crdjbsNUlL*yzzkjD|9D2vWEt6}Mz?7@cj z02juiUPZTjuhmCVcsR&~+ypO&CcHjcj!{PkMml7b!u@SSeQaT{ zd?N5KT+DmgoS{*;!@{k_6ZC^(oOsZ&6`7oA)9JU~cyxSxG(R`@$#S`SLz(pjN=UeX}cRDWr=(cWe!A0|p?VaJqqIthR4$qDs z!IH~MAmRg9eWUer^l;sRDsRE@afo*FD!Pn;D&JSEp;juaT6zi5c^B~z{7S;Zz|03N zdVtaAlDBUA=4qZ9Sj8h~jS+CkWagL)9?$&tKxsj2OuUZ}@o>1Ti_Pe&1ZMwZ0R>5V zsv?pMpp;j{sNOQCAi#LAgO~z)#_oA1Ea=Q*v!#ZqHY)uE+kvN=V#8to)QZ3(yO`ZW zlxW7Z8n{yWJtotTeKBfx+MD4iwojFkwep8>1IDd$ z6TlZu$@d9a(2itL&P>T5P|Ib+C8lLc$8to$R+d;KWUB9=Ms0#Ab=ZQ~I|4gPH$qk_ zMfenNfNTg)IQBgmsR|LC)Zd-OuEP|?@>q(auUjWmqrA2{0_rhwgXM>j9n;kXHFjRQ zo|)a1CCRe=mI#W~yr+9y5r3RJ?SE1A*WW%20UqA?P`&vBjDZK$mi{+CpQCCFNAei(M-L z*q?3eWBX}beAMVklpGL6`pA7_Q~(j-ap%?RuhZ?YZC8Cn+_EzMg^uhU)!XNLr#5#+ zWJ_tdd>{S-+}`kH@+i0?hL`-j6hmDh*l^F2mB^BhXbZ(QV_a%)xK%f6TvDo0vSzq4 z^$!?2D?*E;1?L(>mQmp42Bg}#->J&ls1d=aFrefM7P@K^#tt^)LxLHcY5>rcN?cdC z!nd;-EuskAe9dBrc&v4V&0-1|BtVeMtv6c@Ip;#>gyaD@3^Pfw>gGlXUMIy+N%+(x zc+av6=fZ1#)|pTK)+-PfDhB387!$0z&WP&hlv7$>;S}SIfz&zZ_87i`p3ARjp9Rud z#<$>gOy{Or!0wCs(RFQC)u6u~1W2qK%KB&x%ZNFUkQR^p z+1H@6TaLx0gd}IcZ#FTdd03Hf{KRrnz4ID%Xd&$rlr)QSD|;p_voEpvm3QylU0=Sz zE`_kO$^HO=I9ZyUd_?Gd+sh~diS4Gb6Pxbj8p(r9NAA2rCsGeaiM1?;ngv#`k+oW3 z9XceS8{ew<6%mksIj{hGLJy8W=xywn!Nv}UpJji8G*#=XJelc>*nxt8^=2dxs>=HT z((HZyozBi!8$wQbw%S~}XOF#en90Q!9^zEYEvJ= zpg0KN9-9&Jkdu&^0bK=n6o&OsDOWu6CR{&p`Z`i^=R^?KUb}7;a{UBLqdOuJH9T;^ zXP&nh;^WFbj{b#nVork_6giES(OvLnoq5Q&pXyG^a#}m`{~g=SVevm>6MXeoSGaBj}#o z+%sp3h?#l!0iU;{G1-OUTVv5sSyqCn$>$jbGmH=O?wpRe<1MCVLNc6DPfDBuZ;%>l zh`rj<*t>E1u7K*(G?6Q?*JZWkWDy3K?23Lm?WHXw`vh~TYze!_okwD}^G3GK)uo3@ zYnc3!S`Dc-mPFHJ*=08`W}Ift^rs!mCYxA`aBPbc*(aUDjDq4OtUV=k<*f{m2e=&b z&CbY4=VFU7#VDafgkIv1NbvYlmZF9yxS8`kBQJRA%MnXlgW{fnTk>R zF}a_M-+PU?C>uyXLjSSfSre$`6t3lN;m9X@ywDzwcD9E6ibcv=77%;n)8ueOvI`BCOeh^&y(jfCI|?TFzl=;u7#kjgVL^@15@B{`t^)-C)? zFeEeC#V7LV_$|^n;Kgw#@!rehC@M^V2U8`9@-`Lx1~R+OPh}fIW@7*(KEAStm#CUD zE2PITO$5?Fcb~y!392?`?*RyOJb=<$7i8j+k12(yL)WUUwZvHwOCC%Z=t2b?=!cgf zf?&{qW7wh)08Da&G6+gf>ZUm>{M%x7zo_!S?F<|owOk1+`9!KKzD}6M>!Iz+NRJfu z!wxZTl*Hr`(?}=LnA2KfI%>mei6aLS$eMPYOgLJ{!3ZRD1x3Qw62Q9Ob6Nz844UBX zroMIT!m5S5K_mOH3MzdqD(voVLHWoltP2f7R++cl)&3R^!Cb8q91M6SXxNT!j*#~& z0#LFcNAW2ppRqwqnX0Y}1!wh$*PEe3autK2v!Vm1zUbu0EbOcEtBbI&!~ji9>Bg<19Mk`U)Sqj#A~C;CM_f$xe+eNf?n?Ltp0tkH~@r+bb$YI^&bM@VyeMw z{zE>O2SV{qM#H?lRGnTmVL&e$W+UKv+WRnDdVkss2w*x*=yi@dJ!nQYU!BxVoiKk! zgXjT7s$&>Gf8(oW{KPNZ-13F#^9$4GA?yI$SEXV5!t@zUpQA~zV;()*!5s(N7iC%W zA6Ptk7?oMLa9DE3y=O}VUJjnn7eg^~On`rm<&bl5t;=hz6MY8pdSxaa||4_V`2YabgMZ>f=te1N0F$?pgxi_te*sjiwbX={;Uiz$v+jJ1*~w(vh} zs}K7x+l|VqhmsK#$j1fMZ4E|&QAnP6e5^& z6D6R$6kJNiyJ~*Eb=NQJp@CRx2kTsFF6*rH=OGl9vM|I3iOCS~>DwXK0bQmIC5MTb zI7X^9p$&PJ+-U+m#97!9G_kvoohQgyIJ78R&Zx~rb~=zCWsY7xyRgw&<*6g2i44Zu zj(ss<%<05z*BAz+Bb|12Mn_jlT1o=3ipv-YAT||n#_vKm#Ci=U9Qak)9E(UDj>z0p zTObu8N;QiVAwSj)cVV9KGJGw^lur_1(gbJoXlVn~QU*|->Gf74VZt0Vr|+gJ2ra`K z=jeFC^W*5~)bo6;vTEC@b2evCed5@L*yB!n4y}N?bN zbhN|&UVF8uCOtiGJ-*tHp7wcDdr?{CRbFEjCk!;)*^!=H#)O6p}jKy)YcVld(UQ5}|5Nbj-T*mCFrKTj`h-ME~w?7Xb- z?hL3pU03aSW1HE^0R8J%ng?sLv7A|;@*dP_fp2Tc$mvSLVLCRRtVG%Ua}79jFv zDfM+SSm!O}-`m`9JRP6h1?OAOucw<>tQE~zmKw=~l5z?)bQ3c&g>M`}q7?zcJ*-Ez zB+i+isJ#YZvX#vhc<%i}VKxXQITr@)FtbWF8Ma9lsQ0SNIm(S4rnU~hAseBkPMh^a#kT~$+D8# zgA<{VhrNmgjvnuJACHE(ceMux6*yMx4G^NW3k%F{ztg_Id2{x=?aR=5;LeP!Ih*}f zRS>1#t74_Yc|9nZ;dueu{s9bka^W-S&GMz|#t1lJ`Se9$3&sZvfm_MN)vA)<+pE8Y zqxv^W7@KN8%zuCN0U*9vLKKtjfFG_t0^nB)z^JOgD;@l+uXSuby>fv}>7gC1E5~RY ztbZZ+6~jMT0zJ;w|IshtYz=qM@Mzir`}*tjEq?tA*J5NX8{sAw;;iaa{e^2W9iGKY zr@JhFuCB%I=-$d)j9Y6k;$p{o7stE7e(Q~chx+n%>1TYg*Mt7O*Q0#droxk)jr^j0 zJc2hRzd*_w!UvRJcOF3>+p}-*h1WNWwa9!A!3^P+e7MiUPaDFXAC|GO!q;>0vK!zZj*sG3)nCv?H>e)GIy2-fZQ0RbdDJxvxgt-9cB_MR{4W4}!%))q}%s^!?Ge zjDm$wC~iOtZq$2->}*H=9WH<;;BJrmei4TC=w!guV-NN3>`QTGSqFp_iAX$Cr0!b* zkTL!BkDg#kIt0G_;AL}Z16iom=F-*>D4(Stj#*mJDz3p3Z^Aec$7HA70sl2(N!wxDW6^G-3^bFMgb>M|; zK{>hDn^Kx$8J{Y9ZIgwLbDplH?gn~Q7;Mky6|4!jbjBeS)A(tyhI#_lSfvvc`}UKH zF*4;&z*q$h5miTa{!@z6$+53!W2RW2N6%hnl1(J2#5)lh23ryY-y{OVFD#72C-Gb9 zI?0u~^i(G^Qr=ESpmQz28Lv5b+|;4Zu~p6(Mu5xNyeHY>P1pMso3| z_zaM|wv+q9$>B#QxZ|6_M{3uHJ=2=8?P~G}yQe$nPH-B%Xvqujs~ApS`S#h#e|UX3 zV=W>MkNd9eu^<7O-L?Bz<2=K;RD^H^xZHQc!L074iro_jr^DmPtldMQK64!0L3z|V z&C?8H13_92K3!*9+qzX9Cr0b|IMFhnS@D1{{7S6Jv4#)BDzxawI~ug^j39X>eB6g^ zrV)SC3h=0AYIu2)0&V8e)*-^Mm#K$v*W*QKtw#VxUi-_sQgD}1T2#gsFHM0O5E}RV zR_qtDg^qFEA@+TCc<)gfGk+h$3;>+99~{7?^}`Pi+sLeGa9A~4yM92mp#rXPSOt)Z z^~_nVn|PMpziaMbz%-~0f6$=ieN zXYgIO!!8xhNR>k>gM|YECGjCl!U+<0R?Z_16i5A6;O&m#5&&9lm|BoRl&A7*TFX`+ zv;y#qS6~&IqxeKm5@1iSRcA!9ceXu7rsIlWb3O68uXNx<*;i* zvvKL7k^PAM7HC&#>e}$7TzcRqMo5dm zqV;`($P8}rEV#q4BO&*`VeE#q8OwC77fJ&CF-)kx-+}AY%Qokn708R-t*+TKN)!I<-s*dLCfUKC{q|~)&ushlXIra%J_{lGN~H8~bsx`uHtb>!d7uuN6#co#Y5cL}O8RQK z7X95{Uj6H?p8}o?C(=4atm#)i1$vMT*uVo)^efGSeukOikCO%k6|`1g4_YgV0^3ZJ z+aE)5_21m0Q%Lp=5*Pb}iYc6R?4`;4;T_LaT%*X+&J&h{oNObT054DvVD-G@2FbG&98&_= zJt};>LkNEu!^3@ufKvByF=v&a$PQ)V4#EC2#Yzdz&IiyN*s^Yo$X`mBA+v!8poSz# zp-TaS(O(8~Q}|xi7@meoZ$Jn+IbM3iboV9X6eS%7BV}C=GBZ?A*Wf_j-+2!*^wQSR zv4W=pXFJ$p%<*$=xHE%SzWdtDJh%3lr{8@|SY&KfBnUc2HM$Z{vM_X;Xgi9+tcib`9P}6>C@$!V3L=H~;+d!i zRqc&Nzy{L<6 zYdr%jaon{;VYtD0$0%umv;aqY;A{afhC4R4z<;RoV1GcG91e-e*9eU#Dh{Q3C?AyRzXjy-_J`&HB{%y6*QBSI_vO& zL*UUnCPJ1jinu~R&&`u7T$jv6&mv&c@Fwhrdj_~>gZH;e@ItqVLw_mGkm z*YM0|=FsLiP*=pMPAogsmq|FUsV< z8kzx1iBk{g{8s}sXTv1rK$>@NQ%J}L*|zi@!}-hUeup~g>h$} z*U&^7*o0c>$~MefR}d$SAV)Y?BiesF8lrCOhxk7p=>!BlEZ7CKXyRK?e*XekL)u|C2jt*xfd_v<8 zx+D9YFk|XA!rNV(+z8RK%{fVG9dT7-M6(l(p?6$sF~uHEHsERjn=)AXR5HYE#DGK1 zXY6ZGOR{!If~25?Pd;?XGFx6=p>Ia2R^Kxw6WXk}CVv!GIXTk=J?SE`%=lTx6t)2I zQ8!Lm_J+G1i<@ll;3&)BPQs$jaR`yEv17C z1g+aid}b!%6q8eKc@Rv5#&Vtv#^k{uM`FgzAvrebIhdbGlA}`>P=BaKk_$qt z;5Dr2EOE+!Svw0d#YwH81mKM7l$!*-=UIOe4oLQs;&^HXbSTC}-K4U&%v)X)okmrf z8-3UeDT~lH9*$ugkTZtlh=2xoWr(}wWNi@|U<@<^%p?bj^L6$fMg*dIB#IhN#(|N=VY;C;kl2Bpw2gU#ePsts!s%jhp`P`Ux)=b~PK5z#?(uvj1n3f@f z)|)sR2|RbRDTqEhw#LzP9Byv8&X$SwPxtwYF+vkW?CuRR5k1l@ZxwliX8!~ zkN2Tx>J9Y1$KEd}&6I6}k!5hN=mzKOw;Yj)rs(|Kw)pFib; zXv%@dCcI+cE~;)(ojWE!2ZIc)re~L@g`Htbc#5z(jkl945y=}9Tc&9V`pX9A6~gfk zIzOD`=)OS>dFR!H1ADLC$AK0&%SJ}cO!-o4W9zX+H(Sf_r~onYu(u<#4}@{#c6}PB zEVRMTIDJ96%PJm3(IQUS<@xOV5-LC%CKxz4mIw1Mf7n_em0$YS%(QN<_vQ7&j*-N; zE6JmSBuYG}%XXNh<4B5N4ejys5+aG=I)t)NQVtGhU!n?%=V%z;$IvW%cXk^psOWqH z-S&vtYq&W#B7n3H83ArcIHSWCs@r-G%aM+D=o0hj>`;$@d!3=hUfft(SploU;jX!J zbsAvOqy8a$q0k0GS*^?N)CBS9X~k2n9H}!&B863VW-uxr*?V$9+bU z0vGTeRW`A_O^DSnEBlFfhL?%^hJj33{I$y-@c^tQc%Qco5@Ha#SYKD6?#Qt%^;aAO z+}cJ@WCCpscanTZ%w`^7SOnEEaC3yIe60JX5z)tN&KmutBw!q^ zaCxRG%jKj!o^IS02!K#~X6z$Ipv&SL0J`~ZZ=UC?A^Y6fV}xf8SL!zj;uKsN?PuTA?k>1fsSp9d$U?ocrJq(ExHlrx;B{e@(A{EoOaIdK zLjC5WZTv8#l$BMaqEkFXJS;y9Dmjc8`mdJu@3b=QnzUZX3qvapcMey6xJ7-TJ%@Rn zExeq~8T9*0kbiJ8fjwgg$+;D(4QK1z z0ub6@jhN)(CrBkb7UXJ@uy!GblNSf)fI!<^9@xT^4o3``=-*2gC1+&8->G}BAG%mM zZA45L$Vfl3xI&#-HEw!gy!ywF>oA0fLmZ9SlP0XgtAxTI@2e4M?$IR-MmM;s9#Aep z0v+OYx7GIa8iqj8h1SNdT*D$8D5mYyS)>mRbuIaNo;I622pPrBda;a=p949C+G#;_s#YcC#dLD#TLj-y4$e-giga<+eT+^YL9^88bgC9oUzu{APm zQ)6z^d<3-$D5SqfnG$OI$GAU99$NwO3~{8r2|>t)gw!7J2t(c2+pSt5UY&js7p18C zsplM?l7Zyfj%+dKR2ydKkfA6(`EiEEJSS(f5>`kjQi-#`w4lN2(hpnRj&7Xk=%*RV zrtUg38Sf;%i)~H!idFYgFuv9eO6cb1y6o@nu)``mV806*Ta||N0xI? z2@W)G#@Jem7Tbh_>v_D2ATA`IbndCf3jBCs&M-I{$y^A&K>5~HT6Ce+6t_Bj%CL%O zvvg?J!A34hSn8L96h{tux`UE6CZ3FNh)_d9l+l&{FO@_E8EGOInhf^e6i9z{* z4BXV&nNrccVtxGgG{j-2#<|Ag*3A2LiCL2}28@BIrj(*#o(^ zlY$`%l~@RwJw5uCMAwbvuHs!}MGO8toeLvU%P*k}Np&HZB0K){Y+mLLSC!dcz~U4Y zM4Xh3#$RkOj_AkpmI-9G5WYai2iCX1e|m7{+oFeOqQLkqC&NgPXQIv7&_ZNKa`jlS zI6WjuhxgK%byO*`@;k99k-~W#-?HTwXp>7P``%n>v-41xB{g3xJdkAhyA=0o1wNIN zTh?2&ll_Xsr25IhcpB*O+HXFl2QFSFd1EE z_N}o648akP>B7R1naB`RVJEJE?eFX(2|^p&qv>GrHER}3b=|6wM&7uxs^fu?KRLE8 z-Hog!c^g^iQ6KIfyofL2!qaMn8%r!S8@hjrM_w921H7wv9o$sUz0-z`~(Wq$6S& zm>s}yR}WZ}G=eA^dnHJSM6Ax+jPJsp$>kFW!xs!`gx+1*(MXS&GiG-7aCES{wR=Fb z8Yo8(hL7#%htQgax?)4vtEeTiSuRC7)*4j%s0eco39xiiU{MjeFOIT;T1GdBl@5qQ zgn1!t9kPzfipX2hWaW`4nMmy`ixRCJNXqt0UBmQ#63M`WQ9xM*U-55XXO`+o#iwn$ zzSsp!OkEQESyx!pSK(b#Io)5KA;o1@D(eC5E$Adtk|G1kxMMA2hHdTUtRcYj6J|mY z7?vx@pI3TN@tzi9@C3{(dU^5GeIKc{rX-P(ghGKbC^$UjCocttXU`bE=6d z^Pii`PZ+Cu5nP)gjdns8+2b(WiCG$K?3s#Hg{$&GSz~`fU+HcDij*cO1OyJ@p?{zp&1@dV8s~8Y`_ZY3=MCm z5GqK)4qhzyAk|e-RT9C#rzt;+@n8v|_CPvyA1c7$j7{X_`Jhx-O0q1zibC@mhCx zKEcHf^irfBJk4F^Kf&^I>cCt+ggE8-fgDZPgr$RLIR`E>rX8UQ4n~%@l4-r_Jk~2~ zpW07PyuqbRZ=POWyJp~;AvB{zPQ()ZqlijkJ0P0`Y1o&q2w!I|E;EysRLK!Dl*YV| z$x9yk!UMd35g!@4c}&Kq^~vsNmfR#=TqZAx$88-zj~grZeo!_I#v{xs55`f(%cZPr z7?Kjv_gIx>5emH!Bp{GufHCGv1W>uZT+P7cXAI zA3VXL<__weA&#N&w>wn!A<#Y-aqYC(ocZs%%&h_^yvYD6Bi=Re zcr=Fl!`731xKh2tBiyPs{<+q3$iP_CtruQxeLNGy0Uo`y0K6nccyN(-a2#c~&Rh51aJl2n?$x(G=<)$&hc_Q=&Hm2y z+1Gm?UcFqG<%H*PyCZPx-ThqoKNw#FeSqp#_(!KaR>-Cgv3szF2r-6 z;mD;IMjeDur3o%L9H6m~lY1_5=ehpzj-BGm^OvJLjrcU=u`9sQUW(_Keo#s^vK0Ry z_gg?QGRVN1MQ1s81VJoA7Rq4IvK3Ol0L>~zeB70}I{{xmfbgL#O9g^dKjz$;pyS$1 z9QqXZwFv8=yD3T`^uUnwz#-uecPcYfjR-s}voVC2!U7r`{+*lo9|6P;zI*6z;bi&BtoBhlzSt6G?8 zeXIS#i{JiWrgQnqwYl%T@#b3(KKS6nKl_8{zx(mOGy`IEZ#Xg=IUX^S6Z{TiBbEAE z;L0n;04EwuF00f7_8A!FMvqyFj%&Dv=(s zVo|3+5?K)nJ>WaYPmi=Y0;(Ldd5_F|@WIm;ufP0s2A&9`@os0w{m2~osL2?3uH&WW zDP$e*QYHXHsG$y6iM|ZR?;1%LrJ&qAZZKqd%1{yBM5IlRk3^UdRAQ8pz~0~^#W7ND z3+ExX^#q~BJL^rVP8?u9`Ky2KH@~F6k3Z@B=o?M$3ZA0r`sxj2b@~;YF=@Qf4g){D zVES>OTdRK-K;NtYv z+Sdv8)v{jC{dLn`ej}4=Dzvcnr!K5rW(8l*VVqHU8&@x^%@X9BIY>oq=%8~K*47F7 zwH#C$3f;@q;tJJ7rhAb+|(%O>13tX=UWQ`J)MmRq&mdNK=k%hh9HP(%Umzd;5?_oI1>;| zNe+6{M8$eh5M=|M3FtHu7r^Q3Ng#isAVfWy!u|EGLV;FAL9l#u(wsprzYpTrjdMt= z_lG}Y_d$e5)9!(n-@;pTgj zJ=pLbAb1A#!o`1d_`R0j>gK|F>*dhIZMfjzjzQ>=$Ec$N=@f1TxPn>PotPN_UP=(j z$3e_*9(fv|vW2rNk6`LVpHLyj7i?D$8W81m4J`o~t@l5we(Sx(_4UO& zo9};5S{6!2@LM;Df?RZfQ39(F%#L~U0xDQrUSGO}5{vJw++NvypVq6JE1P$gH#S-~ z@2SK-(FmA-Mhbj@9xHOx7FGJeyE|j)H(&X6xx2$?^|?g{0#R&0G-G_ zASDYVymKeYqe+`KG%s$7P{eoewgrEdZhfGP7Ox}ccC>=hDG!m(7}Plg`OWo(9$SAc z5F5T&S__)4%^{;fH{!8+QdAVaGt%o&ZxCvADV1 zTfTR9>6SF!P+Ij5ahv%lySjiSI7&EyA297)f_czTOH$I*m92R#U=tnw?(!dmbS151 zNCu6dPLtn;NpnE~4qbTOj#ahiQ|Ia!YwzJ!?%^{41%%g5qitstfC=aOItH+CHVM*>jd)xxpo&UO#m;0GmGb?KJg(OFujp8|TPqK+)eJ51M}_ z#R+A3QDAq6cRu5*^kTH;z|}yh%W{aUYJT=8c=CMAO$n>4A6ZI~_ z3Y(Qv4>H)Z#uBmj`3^?M9bcVb%G6|Kohr}Pfcsm~d57hJ2MXAL)% z)S|&1Db_y268t(Vi7wg*>RWjC zv*Dc|GyV*pO2p0Hn6MHcbISVUhk93Q!DN$oC)II~K_Hm?jAzn>Jo2+|n>-SD;#u;@ z7Xrx_7gPlw+Mj@2y`NPeA!Dok-Pl4}E%=!qVy(cP>y2H=(fax}glWi>$k=x9CWN@A zzxU2a6fCthUAxJ>C;@$Xfe1{^Ss%E}Ey(jjq-^r)x_6MqAUxv^jy(|oB>IQyuV=AG}m-HB-^d+U#G8?E1R~KWnh<7;PI=uIAjTK=+cQ}~-8Sf8I z4nT|uGJD*IAen^H_^MJ@7X>a}ys^HxbbqsVWBKOd{o9+UfM!hvaml<1>?#`Q#+{pz+q)J**JBb;9Lx@I z*XBjbAYT!MkU;k8%c9t#Ig zhKY6BmKd7-@#N3^%4E*GZ>K%jdhJzydIo0~Y_@lPs47r_>|)G2jlj0=z6MaM&woV$ zE$3O@&O-Z$O8KLm1}T`}$O^sC#y_YN{~{r@{mO*SAT+qBCiHV;nXqQpGr2;`a)OAIUg$BupJ29Ym+BPApQX7C6T_4J8=M34GG}VeN&=AXw`` zF*_ts6-kF4E49P;-SAZtp}e|9l|Yk`f;d&D`e)qP=BVDom_aK8h(uu< zt8GCv94*B+_KasM`-Z)8XKUE+-d^f0-o6ck{t~SDaT+2DotXJsIZhB&3Olg7Oo$67|Es@h3P9W$cgfwj0`)t_1c6A@ZIgm)h zzDG4rZ!8Bw8}ue%Ti8FRBBoM=-nA@p?gH4I2#-Ad8M>G&(zDyx6460D&J8$n@Y3>& zAT-O0`ceHl z%Pa2~x_@tR^H!QRtfu1DI!Mp7uE1b}W*%qhtut+On^m;w{nLgQ+x#4Bp0_Oq-=afX zy+qMPJ9t^#sO!Rcdt(tdDq{}~UOQW`^H8^(MZ~*uHaPr7CVr6fG9*vGV`>v|xuv}%>S|(VCyywq-savCwL087QeS*1nf7M_rz};#gM>Ol zy$qE;u^Y-^j1KFQwi6uto|za6u$+nP<-NR#dO{yrr%Fbh2s@b9i41}`Fr(^lT?w(j z*DxUMm8XqpFCWnukuIDY_=@ww4?o3ZhPs%i*^N31GTlBwsKk(8BW~FpiWLYs4>`6% z$g;(#+J=Q8d3bz0N&4@{qv2rJz896oxasB?epeldaJ=E7xVvsJp;3&>kC#+5G^a!p zFPGy2IYh#2x`iZvpXCE6`au|;_0FuQ0Gd`C)H(1mXvks!PB9J<8qB!xYxn}zzO4Mpb$i?vu%JGZ%qIh%CRW(U)aC1aD^--G~n`I1{YfdXNy!&aE|# zAdkjA*jCXPUzn>M{J3|ZH{^{KnbZ{eO`#Qgz;Op&$8qdY(B^7NJ5GEr#+noi;TteW z9#6i4j77Wr4kIqpb0+3Q*lyMj-$1aFDrVBIkk9MS_Cxj=fXobpCGC5LH{R5HV6CC^ z#^W&gYK6y<%9djQXZ6vbPU)QkB&@2vrfnrL&ID30{909bz}-)W62zDK%~1#%)4peV z*HkN@VGM?(c=8lG8XfR6Y?W16-WTFDVJ_QDBeDbeG?m7)YGFLWjAgAx3NsF!;7b~d z{2SAizMqHA0DV3(i`AYom710W82i{XdIL)X%CMK!5UaQZE)(yLX7~oS!@*;$AS~CE ze$*Q>X-650X&mR#q*A1jYHX;w*>AFkW^etCQ0{g=1vHKw35B zrl@8II%_COQaQ zndSW=k*vmSDfrl;Xi{?j_!uidzUK^w;&x38WVI9&0)bQB6R=CFJQV#qjH1}#9hVte z)git^<%{@`X(P6n7zhcCLH#`QbY>y|4^~hXD7TFwsicpeX`T(|Rk6wLi?ox7U$JT= z`R;=?!DT5zT;tE&ZRzweLN^OB7~X~XHmAyxnmn0pbRl6%D&#D5!9QsnWV+h^LJ&pc zf(_(R`wX(Gf5OYm1XlZC*s%$!{+X~_QcvjYE-Xwr-T3ot$}8ENkQN$&CX8L-m+D3D0zuG@q^Dww0q?Nk7dx z)b#;`=zV`m>Wh}1Y;af=Ow=8kXzXM zSYhsX=n`IeIZK|Mtpnm<3R}B#cXN5ZHQv@G1{k#Rm{Df%^)2?$0bkXyLnfVo)bTco zlvd;5)@D)tjueY`vq!{8c@zk>g-`UMesiDN&yLuqSK+viE^0(+eMsI7Ve6gW#i1A zqT7|J_ag(E%D}S1IF`u!#zq+kC4-$d5gvKQo>?Robydjb+=39W#oaS&1T)bTsFqJj zG06%q(wM^?Ez~w zAh%zrDg(~J3mWp^*q<~MfGRL)-c{Y#9-_JhRnS!@LgQp#84~9N%VciC7G~q z6cmxO!T16c0*+*9jx#1#kU6xII5vtG&kD~=|#)|n+ zJ_qrh^a%EEmwe|W%)Svxc1}pUcpS2oZ2H%!KPJqL$HbIK_8hfDh4@1J_Sq84qKny4 z#m198XkJ_8xbnk*oh!&ClcnR+){%}FMLp*@XIQ^n&atsXJ!wR0L3UYEKk9=))FHop zE@EKS(6(B&u9Pg*gS~wND}8EX<8>BP7R&4-9E`F1ht&3*-Z+8tny>+(Bc95n-NLSx zTNOe^Dww2nl|oTc-oKbr?t}plIe~`5o!#;1p!HGz;6(q-9`=vv+{>od525U-JjN-wijm=>Jf@gK?%vp=2xKgb9_8g>Qmczyroo;zm5LH*T8^)V&7Z(Qzm182} zRpRDp5ZXl!BI=XVSb>A^PS^Z!&u=3yTRVYp(dJz&;3F~x1zB-lPn;9RVyQM?$%XkM z)TrJC)QFsL-ol1InhcmTFOwl^@`JmF#0C*FL01gu)lZJ18wT3u;!^(T+cL;GCW3>^ zhAxAaViH2e2>F9h#FGPhh8(YBUS5+#E|s%Vcj$D8*LWZt%=75N3fShnF7-mV5%J_z zp`F|61;TYlN3-V52zY2evkEdOz5|=-S}DPVo;$)zt8DnSwT(M6aQ%Du4HXP~PUjK! z4cW`m{N(1^0DpFQWAC{8Q3&*Y5;HhMLA`DK3_ra^b)8T!iDHUMUz^M|C60Y6lxjND zt><)?p1lL6Z1PTbZz9SBb_|4cwO{OPO%RED(7!x^V!wlM?+J|Zm&2BCwI+DfW9-UD zhW#aY?$AGoGoJ=jd8xN&JN`KSs$M>4c=()WfEb?$kc4p=W@(vQn#XOeoon3mBAPnx z=wfuKwfqza=RFjDWC&X<#;fxFm@9cIDX<;JLY$jwueOm&Go4V*IR$WnDqXBTcjPzG z+Ekq9n8|2LxQ&S&laL(~7J~;MpaR#;&dFgf1PmA>09R?IP|~R-!;?Qje(6{nd>o;egZD$i2e!8W2=VX)URBR}bdrEPh${qgNcJCHlI75hK#hV(v;h|pfl;Be)>9RjraQF16=pXJJ7N!%j%|81>=E+jedN>ba-D| zghWX5cZ@jmWCgcY*O;szy!K=T@961QZ!tg^>{i4^!hYB3Lr<09@NI6r&YY@Vbh=tx`HS^JW0tX Ljz2j$+3x;-Yha38 literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/index.doctree b/f35-branch/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..584e1fc02ecfb4d5a0a0a55a1646ae74a909bab8 GIT binary patch literal 7911 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 Q%%UusB^)a3V!Z literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/intro.doctree b/f35-branch/.doctrees/intro.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6c6ffa86ba3fb7ad5f8f869cd4df6c744e06cbcd GIT binary patch literal 9189 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 literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/livemedia-creator.doctree b/f35-branch/.doctrees/livemedia-creator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8162dbba536d25db78c2e52f62fc88f6300cc47 GIT binary patch literal 169961 zcmeFa34mNjbuR2plGR!)Z?cVSbCDN~Wc7?CuL#R9mL+>EjU*&lk+Gebp6)x-ebt+L znHf1iejw}(VHsYQM}mQb5D04^B!3b@fP{qX;ROPLKtjmNBl$xh8%YT7|IVrPcHevJ z_AItMQr^R(zPGCGsZ-}Wb?VfqQ~%G3x14v*x#!UTbuMbwi>2!9V6IT8)(U=eu5)3b zmTy=5YHRMzb6a0B_oBIh&gw>Prdew@^8Q@s9F)ixOXWhtug*O>*I7@+TcvVyP}X17 z^z*G!t*WaRR}@zkS3Np6P+Z+v(JHmdzV)heak(_@SNuXLm(4f)T&vcYqrxbA!7+c9 zh=?lk@;RmqO<&qsSp^2=86{;Hx<`*R*z}M6wmLhRQ$Mps9bC0X0wgj z5Z*V3db%^%Xtw4$7nDm?e{TPI?FsZOGg

g|Tu8ZxoXimxxLHy5|k?Pu66*OwG=! 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∋%Mr zy}m>REO-s>4T&VbCTDHsp`b&baL87QLL{7|#41dEk@j5MK=1NPq1xNL%kY&aD6*Bv zqoBz9&7jE9?buf_K7;)wMr7nV4$&BK3EcQgheFNZ+$P_}s}V=*}OTJ7CZVpTo8KK>voli!nW%|Ni=s^ zW|YiSA2Yg^PMKq~gL8uvqT-3V`@ILq0&er}%Z3z3kq;4hWH5g_W-!a=i~aLv{j^z- zHyFY;A{1;R#Du+ew4;!1lZ=VV-Ho{5T5QJ?fhoTrdnUHqT_18R57V2*CCAt#kGK_I zP10=hPDxaSy?u5KqVRD983(-(ddzv+0}MPJl21j@@pSl$#{udv;$9gd#QuPtT{wwK21EV3Rfk{3!e)( zkKV>D@U}I2yo!?$!L{^R6-AzSmZF7gthtdvRh%KSUz|!vt>z;Og|K)i!~HPwtU@)| z&^mfrNC-}^jAXT|60pI3&uzlZJHy*TbSyXE6TwyutukM89$y)F8$xO(V{` zkBBiSlI+=}Y|)@~wlfO+ml^-@@%j1z;G)dTwK)M635Q4YTDJL7Bf8)ey?<36h(`6~ zq)(B>S`+K4v8xsQqguE%uNk5>E4VdLL7_}Y;Rh$B$4!mmX|0(Y6~}!2>=1nY-Sfu&5#0x{3vWK#hAZuCoqeonx#jbANzTdxjCs4{T^6;=8J(IN_d2uu zT6mKYAK_ZueNn6i;^I@oZKm|-%&&OvO#w%)4z~}Un{xGa5jaqr zZg-fPQtqT*s^Ih~>Hf{*1P{83RK5XFn1YTE5jPznq~hb;SIh@d3Gni!of@Op?bWCK~bo`P2lF-M~Q)mpM>To_$(ddg3c z_J$rnDkHc?DKlUi@y33}y2~=ds|#fI_vaAMBXNc2RI^hw3Oh$J^;=mp*R6*(%;m^zj!kzTQ{pqeefg^zk10_<8zxJ66+qUHaHe z^H&?_<02y7L>~v~;{bhpkv{&EKJI|xcrPOD@%~&e>)nT6kGfxbl=+-s9w(ST{0+7y zn6C-uX@dEgU|t?&J|1NrCb<3yu6u&(o!~krxW0*wdnGQ7@OGmjc%L70f6IN+{WF$` z`?L_p?IaTx$5SjK62}YZgT+C&P6~0*%`ie7baJW?M_G&GZS)t5gHGQQ;-EFnLL4-W zC&WSVXdw>r)ma>@$Q|!V(T`7wudm|^J^l^x^;hESZ^YNP#Mj@6uW#dP|1$3%=<7W1 zX?%I#!3Xr@SNMtl#_pl6_g(yrCHN!ZdNH##S;y4_xUj`I^a$vtRV8{yS2((-LnmP) zbZgPUr*tN^JSU0+ue+@6?51s(D|v9@L+%XP2(U@1l2T0DuDahN8Ts41nG8DjV>a|3 z%Z_T@{ma7T;%M*X`zG!@*fro5F308~r@Q}rdQq*AVr+}Om}~?q-uGBu-oN5&!h1&i N_yPSOjN|^B{|9DJEg}E_ literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/mkksiso.doctree b/f35-branch/.doctrees/mkksiso.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dff8e3a93a431d947472ae3aa22f7cb2e89349b6 GIT binary patch literal 28265 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 JI&@d6{|CXTed7QC literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/modules.doctree b/f35-branch/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e3b4ff59e10bd8cf3ed37031a5f29e67fec5351 GIT binary patch literal 2585 zcmZ8jOK%%D5O!kgX+3PG>7j9gqUa-OYO5%ED0(W;qfs4-B0vrSK`kkfFqhntTw6K> zZ4W6DfVZ&!w;y*`Ysmr@S`Ozu-^}dao&P4ogX$Nit`JhMFDYZ%Fz#aLGn17$*FJuX zFaC*d^1UK-tsi;n1u-kbPb3_{0C zulUYYICM6P=^D33fADoOTNB^K$~wd!g>FG%&qr}uE@&81@2y;v9{wi(4kdHRmtLl* zb0FfqqiJ5h^;ucm9TqgZwtSg*%Fy$4m9CT=FeuzSh~KjW`=t= z%MB|PcbC@r7><M(Ieh}Y^m*Tst zBP4K!;)vZ?!n6tb;?~ll;5O3T@RIyRO1yX>4r@L0a=}{_H4f-DE8Am}oFqMj^x>U! zs=~epyXM-0ikC_DL6~HvO|T+Oq32<=rBp?ohrZ+9OT9v0oVGw;TBAKjjYIbpRV7ls z?G!Pchrx<#ZmBmm;=m|C>SO` z&v!1b9)xk~GSrEzm&WE1l!*g63IYJ8=5Xn<*6^-mZ=juj4#R+%uQ~o)yNe%ET=gr18-@@Q&91Jm`Gie zo^YKR2Cf(erC(nBbm1i4&-X70x7Ju9sAdYFLE#WvhGv_Z((h~OR9a$qdhh0*3h`H% z)JpFh*ovO-U)+-nCn*4jED7XCA)pw>it1HKR~+ePI6p)qg-4cW#xjDg12|wN_3Auy zGozP?5$TYO6qr479Yr@xXz2~PBZY?&h#IppFG!0zWVIql0M2TvlEP_4L29*2wZ9`3 zj+e}kb)N8a!qEmxF--JoQ3xcFz-sr4K*eFpJ z6uzg<2%ih@3-|MEc6)n!S!}#8`qJ3djPaWpINdCU$4R1c1QNva9A)w-OCR)$ufG2g zd7ap0cF#vy4gDj6e;0oTj`1Oc&cLUQ!}zHUwxeK=eB6?&k{vf&9vEAtY7JSM NR!w844O%WP{|Bp$2N3`O literal 0 HcmV?d00001 diff --git a/f35-branch/.doctrees/product-images.doctree b/f35-branch/.doctrees/product-images.doctree new file mode 100644 index 0000000000000000000000000000000000000000..61ee2228f358152e1c9594aabda11b2bf952c0e3 GIT binary patch literal 7117 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%0A7neRhP9g{B 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 G2mTLiBWtMu literal 0 HcmV?d00001 diff --git a/f35-branch/_modules/index.html b/f35-branch/_modules/index.html new file mode 100644 index 00000000..6f6eeec1 --- /dev/null +++ b/f35-branch/_modules/index.html @@ -0,0 +1,118 @@ + + + + + + Overview: module code — Lorax 35.7 documentation + + + + + + + + + + + + + +

+ + +
+ +
+
+
+
    +
  • »
  • +
  • Overview: module code
  • +
  • +
  • +
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax.html b/f35-branch/_modules/pylorax.html new file mode 100644 index 00000000..f56a20cc --- /dev/null +++ b/f35-branch/_modules/pylorax.html @@ -0,0 +1,663 @@ + + + + + + + + + + pylorax — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax

+#
+# __init__.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     David Cantrell <dcantrell@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+
+# set up logging
+import logging
+logger = logging.getLogger("pylorax")
+logger.addHandler(logging.NullHandler())
+
+program_log = logging.getLogger("program")
+
+import sys
+import os
+import configparser
+import tempfile
+import locale
+from subprocess import CalledProcessError
+import selinux
+from glob import glob
+
+from pylorax.base import BaseLoraxClass, DataHolder
+import pylorax.output as output
+
+import dnf
+
+from pylorax.sysutils import joinpaths, remove, linktree
+
+from pylorax.treebuilder import RuntimeBuilder, TreeBuilder
+from pylorax.buildstamp import BuildStamp
+from pylorax.treeinfo import TreeInfo
+from pylorax.discinfo import DiscInfo
+from pylorax.executils import runcmd, runcmd_output
+
+
+# get lorax version
+try:
+    import pylorax.version
+except ImportError:
+    vernum = "devel"
+else:
+    vernum = pylorax.version.num
+
+DRACUT_DEFAULT = ["--xz", "--install", "/.buildstamp", "--no-early-microcode", "--add", "fips"]
+
+# Used for DNF conf.module_platform_id
+DEFAULT_PLATFORM_ID = "platform:f34"
+
+
[docs]class ArchData(DataHolder): + lib64_arches = ("x86_64", "ppc64le", "s390x", "ia64", "aarch64") + bcj_arch = dict(i386="x86", x86_64="x86", + ppc64le="powerpc", + arm="arm", armhfp="arm") + + def __init__(self, buildarch): + super(ArchData, self).__init__() + self.buildarch = buildarch + self.basearch = dnf.rpm.basearch(buildarch) + self.libdir = "lib64" if self.basearch in self.lib64_arches else "lib" + self.bcj = self.bcj_arch.get(self.basearch)
+ +
[docs]class Lorax(BaseLoraxClass): + + def __init__(self): + BaseLoraxClass.__init__(self) + self._configured = False + self.product = None + self.workdir = None + self.arch = None + self.conf = None + self.inroot = None + self.debug = False + self.outputdir = None + self._templatedir = None + + # set locale to C + locale.setlocale(locale.LC_ALL, 'C') + +
[docs] def configure(self, conf_file="/etc/lorax/lorax.conf"): + self.conf = configparser.SafeConfigParser() + + # set defaults + self.conf.add_section("lorax") + self.conf.set("lorax", "debug", "1") + self.conf.set("lorax", "sharedir", "/usr/share/lorax") + self.conf.set("lorax", "logdir", "/var/log/lorax") + + self.conf.add_section("output") + self.conf.set("output", "colors", "1") + self.conf.set("output", "encoding", "utf-8") + self.conf.set("output", "ignorelist", "/usr/share/lorax/ignorelist") + + self.conf.add_section("templates") + self.conf.set("templates", "ramdisk", "ramdisk.ltmpl") + + self.conf.add_section("compression") + self.conf.set("compression", "type", "xz") + self.conf.set("compression", "args", "") + self.conf.set("compression", "bcj", "on") + + # read the config file + if os.path.isfile(conf_file): + self.conf.read(conf_file) + + # set up the output + self.debug = self.conf.getboolean("lorax", "debug") + output_level = output.DEBUG if self.debug else output.INFO + + if sys.stdout.isatty(): + colors = self.conf.getboolean("output", "colors") + else: + colors = False + encoding = self.conf.get("output", "encoding") + + self.output.basic_config(output_level=output_level, + colors=colors, encoding=encoding) + + ignorelist = self.conf.get("output", "ignorelist") + if os.path.isfile(ignorelist): + with open(ignorelist, "r") as fobj: + for line in fobj: + line = line.strip() + if line and not line.startswith("#"): + self.output.ignore(line) + + # cron does not have sbin in PATH, + # so we have to add it ourselves + os.environ["PATH"] = "{0}:/sbin:/usr/sbin".format(os.environ["PATH"]) + + # remove some environmental variables that can cause problems with package scripts + env_remove = ('DISPLAY', 'DBUS_SESSION_BUS_ADDRESS') + list(os.environ.pop(k) for k in env_remove if k in os.environ) + + self._configured = True
+ + @property + def templatedir(self): + """Find the template directory. + + Pick the first directory under sharedir/templates.d/ if it exists. + Otherwise use the sharedir + """ + if not self._templatedir: + self._templatedir = find_templates(self.conf.get("lorax", "sharedir")) + logger.info("Using templatedir %s", self._templatedir) + return self._templatedir + +
[docs] def init_stream_logging(self): + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + logger.addHandler(sh)
+ +
[docs] def init_file_logging(self, logdir, logname="pylorax.log"): + fh = logging.FileHandler(filename=joinpaths(logdir, logname), mode="w") + fh.setLevel(logging.DEBUG) + logger.addHandler(fh)
+ +
[docs] def run(self, dbo, product, version, release, variant="", bugurl="", + isfinal=False, workdir=None, outputdir=None, buildarch=None, volid=None, + domacboot=True, doupgrade=True, remove_temp=False, + installpkgs=None, excludepkgs=None, + size=2, + add_templates=None, + add_template_vars=None, + add_arch_templates=None, + add_arch_template_vars=None, + verify=True, + user_dracut_args=None, + squashfs_only=False, + skip_branding=False): + + assert self._configured + + installpkgs = installpkgs or [] + excludepkgs = excludepkgs or [] + + if domacboot: + try: + runcmd(["rpm", "-q", "hfsplus-tools"]) + except CalledProcessError: + logger.critical("you need to install hfsplus-tools to create mac images") + sys.exit(1) + + # set up work directory + self.workdir = workdir or tempfile.mkdtemp(prefix="pylorax.work.") + if not os.path.isdir(self.workdir): + os.makedirs(self.workdir) + + # set up log directory + logdir = self.conf.get("lorax", "logdir") + if not os.path.isdir(logdir): + os.makedirs(logdir) + + self.init_stream_logging() + self.init_file_logging(logdir) + + logger.debug("version is %s", vernum) + log_selinux_state() + + logger.debug("using work directory %s", self.workdir) + logger.debug("using log directory %s", logdir) + + # set up output directory + self.outputdir = outputdir or tempfile.mkdtemp(prefix="pylorax.out.") + if not os.path.isdir(self.outputdir): + os.makedirs(self.outputdir) + logger.debug("using output directory %s", self.outputdir) + + # do we have root privileges? + logger.info("checking for root privileges") + if not os.geteuid() == 0: + logger.critical("no root privileges") + sys.exit(1) + + # do we have a proper dnf base object? + logger.info("checking dnf base object") + if not isinstance(dbo, dnf.Base): + logger.critical("no dnf base object") + sys.exit(1) + self.inroot = dbo.conf.installroot + logger.debug("using install root: %s", self.inroot) + + if not buildarch: + buildarch = get_buildarch(dbo) + + logger.info("setting up build architecture") + self.arch = ArchData(buildarch) + for attr in ('buildarch', 'basearch', 'libdir'): + logger.debug("self.arch.%s = %s", attr, getattr(self.arch,attr)) + + logger.info("setting up build parameters") + self.product = DataHolder(name=product, version=version, release=release, + variant=variant, bugurl=bugurl, isfinal=isfinal) + logger.debug("product data: %s", self.product) + + # NOTE: if you change isolabel, you need to change pungi to match, or + # the pungi images won't boot. + isolabel = volid or "%s-%s-%s" % (self.product.name, self.product.version, self.arch.basearch) + + if len(isolabel) > 32: + logger.fatal("the volume id cannot be longer than 32 characters") + sys.exit(1) + + # NOTE: rb.root = dbo.conf.installroot (== self.inroot) + rb = RuntimeBuilder(product=self.product, arch=self.arch, + dbo=dbo, templatedir=self.templatedir, + installpkgs=installpkgs, + excludepkgs=excludepkgs, + add_templates=add_templates, + add_template_vars=add_template_vars, + skip_branding=skip_branding) + + logger.info("installing runtime packages") + rb.install() + + # write .buildstamp + buildstamp = BuildStamp(self.product.name, self.product.version, + self.product.bugurl, self.product.isfinal, + self.arch.buildarch, self.product.variant) + + buildstamp.write(joinpaths(self.inroot, ".buildstamp")) + + if self.debug: + rb.writepkglists(joinpaths(logdir, "pkglists")) + rb.writepkgsizes(joinpaths(logdir, "original-pkgsizes.txt")) + + logger.info("doing post-install configuration") + rb.postinstall() + + # write .discinfo + discinfo = DiscInfo(self.product.release, self.arch.basearch) + discinfo.write(joinpaths(self.outputdir, ".discinfo")) + + logger.info("backing up installroot") + installroot = joinpaths(self.workdir, "installroot") + linktree(self.inroot, installroot) + + logger.info("generating kernel module metadata") + rb.generate_module_data() + + logger.info("cleaning unneeded files") + rb.cleanup() + + if verify: + logger.info("verifying the installroot") + if not rb.verify(): + sys.exit(1) + else: + logger.info("Skipping verify") + + if self.debug: + rb.writepkgsizes(joinpaths(logdir, "final-pkgsizes.txt")) + + logger.info("creating the runtime image") + runtime = "images/install.img" + compression = self.conf.get("compression", "type") + compressargs = self.conf.get("compression", "args").split() # pylint: disable=no-member + if self.conf.getboolean("compression", "bcj"): + if self.arch.bcj: + compressargs += ["-Xbcj", self.arch.bcj] + else: + logger.info("no BCJ filter for arch %s", self.arch.basearch) + if squashfs_only: + # Create an ext4 rootfs.img and compress it with squashfs + rc = rb.create_squashfs_runtime(joinpaths(installroot,runtime), + compression=compression, compressargs=compressargs, + size=size) + else: + # Create an ext4 rootfs.img and compress it with squashfs + rc = rb.create_ext4_runtime(joinpaths(installroot,runtime), + compression=compression, compressargs=compressargs, + size=size) + if rc != 0: + logger.error("rootfs.img creation failed. See program.log") + sys.exit(1) + + rb.finished() + + logger.info("preparing to build output tree and boot images") + treebuilder = TreeBuilder(product=self.product, arch=self.arch, + inroot=installroot, outroot=self.outputdir, + runtime=runtime, isolabel=isolabel, + domacboot=domacboot, doupgrade=doupgrade, + templatedir=self.templatedir, + add_templates=add_arch_templates, + add_template_vars=add_arch_template_vars, + workdir=self.workdir) + + logger.info("rebuilding initramfs images") + if not user_dracut_args: + dracut_args = DRACUT_DEFAULT + else: + dracut_args = [] + for arg in user_dracut_args: + dracut_args += arg.split(" ", 1) + + anaconda_args = dracut_args + ["--add", "anaconda pollcdrom qemu qemu-net"] + + logger.info("dracut args = %s", dracut_args) + logger.info("anaconda args = %s", anaconda_args) + treebuilder.rebuild_initrds(add_args=anaconda_args) + + logger.info("populating output tree and building boot images") + treebuilder.build() + + # write .treeinfo file and we're done + treeinfo = TreeInfo(self.product.name, self.product.version, + self.product.variant, self.arch.basearch) + for section, data in treebuilder.treeinfo_data.items(): + treeinfo.add_section(section, data) + treeinfo.write(joinpaths(self.outputdir, ".treeinfo")) + + # cleanup + if remove_temp: + remove(self.workdir)
+ + +
[docs]def get_buildarch(dbo): + # get architecture of the available anaconda package + buildarch = None + q = dbo.sack.query() + a = q.available() + for anaconda in a.filter(name="anaconda-core"): + if anaconda.arch != "src": + buildarch = anaconda.arch + break + if not buildarch: + logger.critical("no anaconda-core package in the repository") + sys.exit(1) + + return buildarch
+ + +
[docs]def setup_logging(logfile, theLogger): + """ + Setup the various logs + + :param logfile: filename to write the log to + :type logfile: string + :param theLogger: top-level logger + :type theLogger: logging.Logger + """ + if not os.path.isdir(os.path.abspath(os.path.dirname(logfile))): + os.makedirs(os.path.abspath(os.path.dirname(logfile))) + + # Setup logging to console and to logfile + logger.setLevel(logging.DEBUG) + theLogger.setLevel(logging.DEBUG) + + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + fmt = logging.Formatter("%(asctime)s: %(message)s") + sh.setFormatter(fmt) + logger.addHandler(sh) + theLogger.addHandler(sh) + + fh = logging.FileHandler(filename=logfile, mode="w") + fh.setLevel(logging.DEBUG) + fmt = logging.Formatter("%(asctime)s %(levelname)s %(name)s: %(message)s") + fh.setFormatter(fmt) + logger.addHandler(fh) + theLogger.addHandler(fh) + + # External program output log + program_log.setLevel(logging.DEBUG) + f = os.path.abspath(os.path.dirname(logfile))+"/program.log" + fh = logging.FileHandler(filename=f, mode="w") + fh.setLevel(logging.DEBUG) + fmt = logging.Formatter("%(asctime)s %(levelname)s: %(message)s") + fh.setFormatter(fmt) + program_log.addHandler(fh)
+ + +
[docs]def find_templates(templatedir="/usr/share/lorax"): + """ Find the templates to use. + + :param str templatedir: Top directory to search for templates + :returns: Path to templates + :rtype: str + + If there is a templates.d directory under templatedir the + lowest numbered directory entry is returned. + + eg. /usr/share/lorax/templates.d/99-generic/ + """ + if os.path.isdir(joinpaths(templatedir, "templates.d")): + try: + templatedir = sorted(glob(joinpaths(templatedir, "templates.d", "*")))[0] + except IndexError: + pass + return templatedir
+ +
[docs]def log_selinux_state(): + """Log the current state of selinux""" + if selinux.is_selinux_enabled(): + if selinux.security_getenforce(): + logger.info("selinux is enabled and in Enforcing mode") + else: + logger.info("selinux is enabled and in Permissive mode") + else: + logger.info("selinux is Disabled")
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/base.html b/f35-branch/_modules/pylorax/base.html new file mode 100644 index 00000000..6ce6b2b9 --- /dev/null +++ b/f35-branch/_modules/pylorax/base.html @@ -0,0 +1,274 @@ + + + + + + + + + + pylorax.base — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.base

+#
+# base.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+from abc import ABCMeta, abstractmethod
+import sys
+
+import pylorax.output as output
+
+
+
[docs]class BaseLoraxClass(object, metaclass=ABCMeta): + @abstractmethod + def __init__(self): + self.output = output.LoraxOutput() + +
[docs] def pcritical(self, msg, fobj=sys.stdout): + self.output.critical(msg, fobj)
+ +
[docs] def perror(self, msg, fobj=sys.stdout): + self.output.error(msg, fobj)
+ +
[docs] def pwarning(self, msg, fobj=sys.stdout): + self.output.warning(msg, fobj)
+ +
[docs] def pinfo(self, msg, fobj=sys.stdout): + self.output.info(msg, fobj)
+ +
[docs] def pdebug(self, msg, fobj=sys.stdout): + self.output.debug(msg, fobj)
+ + +
[docs]class DataHolder(dict): + + def __init__(self, **kwargs): + dict.__init__(self) + + for attr, value in kwargs.items(): + self[attr] = value + + def __getattr__(self, attr): + if attr in self: + return self[attr] + else: + raise AttributeError + + def __setattr__(self, attr, value): + self[attr] = value + +
[docs] def copy(self): + return DataHolder(**dict.copy(self))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/buildstamp.html b/f35-branch/_modules/pylorax/buildstamp.html new file mode 100644 index 00000000..b0a8816e --- /dev/null +++ b/f35-branch/_modules/pylorax/buildstamp.html @@ -0,0 +1,273 @@ + + + + + + + + + + pylorax.buildstamp — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.buildstamp

+#
+# buildstamp.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.buildstamp")
+
+import datetime
+import os
+
+
+
[docs]class BuildStamp(object): + + def __init__(self, product, version, bugurl, isfinal, buildarch, variant=""): + self.product = product + self.version = version + self.bugurl = bugurl + self.isfinal = isfinal + self.variant = variant + + if 'SOURCE_DATE_EPOCH' in os.environ: + now = datetime.datetime.utcfromtimestamp( + int(os.environ['SOURCE_DATE_EPOCH'])) + else: + now = datetime.datetime.now() + now = now.strftime("%Y%m%d%H%M") + self.uuid = "{0}.{1}".format(now, buildarch) + +
[docs] def write(self, outfile): + # get lorax version + try: + import pylorax.version + except ImportError: + vernum = "devel" + else: + vernum = pylorax.version.num + + logger.info("writing .buildstamp file") + with open(outfile, "w") as fobj: + fobj.write("[Main]\n") + fobj.write("Product={0.product}\n".format(self)) + fobj.write("Version={0.version}\n".format(self)) + fobj.write("BugURL={0.bugurl}\n".format(self)) + fobj.write("IsFinal={0.isfinal}\n".format(self)) + fobj.write("UUID={0.uuid}\n".format(self)) + if self.variant: + fobj.write("Variant={0.variant}\n".format(self)) + fobj.write("[Compose]\n") + fobj.write("Lorax={0}\n".format(vernum))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/cmdline.html b/f35-branch/_modules/pylorax/cmdline.html new file mode 100644 index 00000000..e8aa5f12 --- /dev/null +++ b/f35-branch/_modules/pylorax/cmdline.html @@ -0,0 +1,528 @@ + + + + + + + + + + pylorax.cmdline — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.cmdline

+#
+# cmdline.py
+#
+# Copyright (C) 2016  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Brian C. Lane <bcl@redhat.com>
+
+import os
+import sys
+import argparse
+
+from pylorax import vernum
+
+version = "{0}-{1}".format(os.path.basename(sys.argv[0]), vernum)
+
+
[docs]def lorax_parser(dracut_default=""): + """ Return the ArgumentParser for lorax""" + + parser = argparse.ArgumentParser(description="Create the Anaconda boot.iso") + + # required arguments for image creation + required = parser.add_argument_group("required arguments") + required.add_argument("-p", "--product", help="product name", required=True, metavar="PRODUCT") + required.add_argument("-v", "--version", help="version identifier", required=True, metavar="VERSION") + required.add_argument("-r", "--release", help="release information", required=True, metavar="RELEASE") + required.add_argument("-s", "--source", help="source repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + required.add_argument("--repo", help="source dnf repository file", type=os.path.abspath, + dest="repos", metavar="REPOSITORY", action="append", default=[]) + + # optional arguments + optional = parser.add_argument_group("optional arguments") + optional.add_argument("-m", "--mirrorlist", + help="mirrorlist repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + optional.add_argument("-t", "--variant", default="", + help="variant name", metavar="VARIANT") + optional.add_argument("-b", "--bugurl", + help="bug reporting URL for the product", metavar="URL", + default="your distribution provided bug reporting tool") + optional.add_argument("--isfinal", help="", + action="store_true", default=False, dest="isfinal") + optional.add_argument("-c", "--config", default="/etc/lorax/lorax.conf", + help="config file", metavar="CONFIGFILE") + optional.add_argument("--proxy", default=None, + help="repo proxy url:port", metavar="HOST") + optional.add_argument("-i", "--installpkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to install before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("-e", "--excludepkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to remove before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("--buildarch", default=None, + help="build architecture", metavar="ARCH") + optional.add_argument("--volid", default=None, + help="volume id", metavar="VOLID") + optional.add_argument("--macboot", help="", + action="store_true", default=True, dest="domacboot") + optional.add_argument("--nomacboot", help="", + action="store_false", dest="domacboot") + optional.add_argument("--noupgrade", help="", + action="store_false", default=True, dest="doupgrade") + optional.add_argument("--logfile", default="./lorax.log", type=os.path.abspath, + help="Path to logfile") + optional.add_argument("--tmp", default="/var/tmp/lorax", + help="Top level temporary directory" ) + optional.add_argument("--cachedir", default=None, type=os.path.abspath, + help="DNF cache directory. Default is a temporary dir.") + optional.add_argument("--workdir", default=None, type=os.path.abspath, + help="Work directory, overrides --tmp. Default is a temporary dir under /var/tmp/lorax") + optional.add_argument("--force", default=False, action="store_true", + help="Run even when the destination directory exists") + optional.add_argument("--add-template", dest="add_templates", + action="append", help="Additional template for runtime image", + default=[]) + optional.add_argument("--add-template-var", dest="add_template_vars", + action="append", help="Set variable for runtime image template", + default=[]) + optional.add_argument("--add-arch-template", dest="add_arch_templates", + action="append", help="Additional template for architecture-specific image", + default=[]) + optional.add_argument("--add-arch-template-var", dest="add_arch_template_vars", + action="append", help="Set variable for architecture-specific image", + default=[]) + optional.add_argument("--noverify", action="store_false", default=True, dest="verify", + help="Do not verify the install root") + optional.add_argument("--sharedir", metavar="SHAREDIR", type=os.path.abspath, + help="Directory containing all the templates. Overrides config file sharedir") + optional.add_argument("--enablerepo", action="append", default=[], dest="enablerepos", + metavar="[repo]", help="Names of repos to enable") + optional.add_argument("--disablerepo", action="append", default=[], dest="disablerepos", + metavar="[repo]", help="Names of repos to disable") + optional.add_argument("--rootfs-size", type=int, default=2, + help="Size of root filesystem in GiB. Defaults to 2.") + optional.add_argument("--noverifyssl", action="store_true", default=False, + help="Do not verify SSL certificates") + optional.add_argument("--dnfplugin", action="append", default=[], dest="dnfplugins", + help="Enable a DNF plugin by name/glob, or * to enable all of them.") + optional.add_argument("--squashfs-only", action="store_true", default=False, + help="Use a plain squashfs filesystem for the runtime.") + optional.add_argument("--skip-branding", action="store_true", default=False, + help="Disable automatic branding package selection. Use --installpkgs to add custom branding.") + + # dracut arguments + dracut_group = parser.add_argument_group("dracut arguments: (default: %s)" % dracut_default) + dracut_group.add_argument("--dracut-conf", + help="Path to a dracut.conf file to use instead of the " + "default arguments. See the dracut.conf(5) manpage.") + dracut_group.add_argument("--dracut-arg", action="append", dest="dracut_args", + help="Argument to pass to dracut when " + "rebuilding the initramfs. Pass this " + "once for each argument. NOTE: this " + "overrides the defaults.") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + parser.add_argument("outputdir", help="Output directory", metavar="OUTPUTDIR", type=os.path.abspath) + + return parser
+ + +
[docs]def lmc_parser(dracut_default=""): + """ Return a ArgumentParser object for live-media-creator.""" + parser = argparse.ArgumentParser(description="Create Live Install Media", + fromfile_prefix_chars="@") + + # These are mutually exclusive, one is required + action = parser.add_mutually_exclusive_group(required=True) + action.add_argument("--make-iso", action="store_true", + help="Build a live iso") + action.add_argument("--make-disk", action="store_true", + help="Build a partitioned disk image") + action.add_argument("--make-fsimage", action="store_true", + help="Build a filesystem image") + action.add_argument("--make-appliance", action="store_true", + help="Build an appliance image and XML description") + action.add_argument("--make-ami", action="store_true", + help="Build an ami image") + action.add_argument("--make-tar", action="store_true", + help="Build a tar of the root filesystem") + action.add_argument("--make-tar-disk", action="store_true", + help="Build a tar of a partitioned disk image") + action.add_argument("--make-pxe-live", action="store_true", + help="Build a live pxe boot squashfs image") + action.add_argument("--make-ostree-live", action="store_true", + help="Build a live pxe boot squashfs image of Atomic Host") + action.add_argument("--make-oci", action="store_true", + help="Build an Open Container Initiative image") + action.add_argument("--make-vagrant", action="store_true", + help="Build a Vagrant Box image") + + parser.add_argument("--iso", type=os.path.abspath, + help="Anaconda installation .iso path to use for qemu") + parser.add_argument("--iso-only", action="store_true", + help="Remove all iso creation artifacts except the boot.iso, " + "combine with --iso-name to rename the boot.iso") + parser.add_argument("--iso-name", default=None, + help="Name of output iso file for --iso-only. Default is boot.iso") + parser.add_argument("--ks", action="append", type=os.path.abspath, + help="Kickstart file defining the install.") + parser.add_argument("--image-only", action="store_true", + help="Exit after creating fs/disk image.") + + parser.add_argument("--no-virt", action="store_true", + help="Run anaconda directly on host instead of using qemu") + parser.add_argument("--proxy", + help="proxy URL to use for the install") + parser.add_argument("--anaconda-arg", action="append", dest="anaconda_args", + help="Additional argument to pass to anaconda (no-virt " + "mode). Pass once for each argument") + parser.add_argument("--armplatform", + help="the platform to use when creating images for ARM, " + "i.e., highbank, mvebu, omap, tegra, etc.") + parser.add_argument("--location", default=None, type=os.path.abspath, + help="location of iso directory tree with initrd.img " + "and vmlinuz. Used to run qemu with a newer initrd " + "than the iso.") + + parser.add_argument("--logfile", default="./livemedia.log", + type=os.path.abspath, + help="Name and path for primary logfile, other logs will " + "be created in the same directory.") + parser.add_argument("--lorax-templates", default=None, + type=os.path.abspath, + help="Path to mako templates for lorax") + parser.add_argument("--tmp", default="/var/tmp", type=os.path.abspath, + help="Top level temporary directory") + parser.add_argument("--resultdir", default=None, dest="result_dir", + type=os.path.abspath, + help="Directory to copy the resulting images and iso into. " + "Defaults to the temporary working directory") + + parser.add_argument("--macboot", action="store_true", default=True, + dest="domacboot") + parser.add_argument("--nomacboot", action="store_false", + dest="domacboot") + + parser.add_argument("--extra-boot-args", default="", dest="extra_boot_args", + help="Extra arguments to add to the bootloader kernel cmdline in the templates") + + image_group = parser.add_argument_group("disk/fs image arguments") + image_group.add_argument("--disk-image", type=os.path.abspath, + help="Path to existing disk image to use for creating final image.") + image_group.add_argument("--keep-image", action="store_true", + help="Keep raw disk image after .iso creation") + image_group.add_argument("--fs-image", type=os.path.abspath, + help="Path to existing filesystem image to use for creating final image.") + image_group.add_argument("--image-name", default=None, + help="Name of output file to create. Used for tar, fs and disk image. Default is a random name.") + image_group.add_argument("--tar-disk-name", default=None, + help="Name of the archive member for make-tar-disk.") + image_group.add_argument("--fs-label", default="Anaconda", + help="Label to set on fsimage, default is 'Anaconda'") + image_group.add_argument("--image-size-align", type=int, default=0, + help="Create a disk image with a size that is a multiple of this value in MiB.") + image_group.add_argument("--image-type", default=None, + help="Create an image with qemu-img. See qemu-img --help for supported formats.") + image_group.add_argument("--qemu-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--qcow2", action="store_true", + help="Create qcow2 image instead of raw sparse image when making disk images.") + image_group.add_argument("--qcow2-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--compression", default="xz", + help="Compression binary for make-tar. xz, lzma, gzip, and bzip2 are supported. xz is the default.") + image_group.add_argument("--compress-arg", action="append", dest="compress_args", default=[], + help="Arguments to pass to compression. Pass once for each argument") + # Group of arguments for appliance creation + app_group = parser.add_argument_group("appliance arguments") + app_group.add_argument("--app-name", default=None, + help="Name of appliance to pass to template") + app_group.add_argument("--app-template", default=None, + help="Path to template to use for appliance data.") + app_group.add_argument("--app-file", default="appliance.xml", + help="Appliance template results file.") + + # Group of arguments to pass to qemu + virt_group = parser.add_argument_group("qemu arguments") + virt_group.add_argument("--ram", metavar="MEMORY", type=int, default=2048, + help="Memory to allocate for installer in megabytes.") + virt_group.add_argument("--vcpus", type=int, default=None, + help="Passed to qemu -smp command") + virt_group.add_argument("--vnc", + help="Passed to qemu -display command. eg. vnc=127.0.0.1:5, default is to " + "choose the first unused vnc port.") + virt_group.add_argument("--arch", default=None, + help="System arch to build for. Used to select qemu-system-* command. " + "Defaults to qemu-system-<arch>") + virt_group.add_argument("--kernel-args", + help="Additional argument to pass to the installation kernel") + virt_group.add_argument("--ovmf-path", default="/usr/share/edk2/ovmf/", + help="Path to OVMF firmware") + virt_group.add_argument("--virt-uefi", action="store_true", default=False, + help="Use OVMF firmware to boot the VM in UEFI mode") + virt_group.add_argument("--no-kvm", action="store_true", default=False, + help="Skip using kvm with qemu even if it is available.") + virt_group.add_argument("--with-rng", default="/dev/random", + help="RNG device for QEMU (none for no RNG)") + + # dracut arguments + dracut_group = parser.add_argument_group("dracut arguments: (default: %s)" % dracut_default) + dracut_group.add_argument("--dracut-conf", + help="Path to a dracut.conf file to use instead of the " + "default arguments. See the dracut.conf(5) manpage.") + dracut_group.add_argument("--dracut-arg", action="append", dest="dracut_args", + help="Argument to pass to dracut when " + "rebuilding the initramfs. Pass this " + "once for each argument. NOTE: this " + "overrides the defaults.") + + # pxe to live arguments + pxelive_group = parser.add_argument_group("pxe to live arguments") + pxelive_group.add_argument("--live-rootfs-size", type=int, default=0, + help="Size of root filesystem of live image in GiB") + pxelive_group.add_argument("--live-rootfs-keep-size", action="store_true", + help="Keep the original size of root filesystem in live image") + + # OCI specific commands + oci_group = parser.add_argument_group("OCI arguments") + oci_group.add_argument("--oci-config", + help="config.json OCI configuration file") + oci_group.add_argument("--oci-runtime", + help="runtime.json OCI configuration file") + + # Vagrant specific commands + vagrant_group = parser.add_argument_group("Vagrant arguments") + vagrant_group.add_argument("--vagrant-metadata", + help="optional metadata.json file") + vagrant_group.add_argument("--vagrantfile", + help="optional vagrantfile") + + parser.add_argument("--project", default="Linux", + help="substituted for @PROJECT@ in bootloader config files") + parser.add_argument("--releasever", default="34", + help="substituted for @VERSION@ in bootloader config files") + parser.add_argument("--volid", default=None, help="volume id") + parser.add_argument("--squashfs-only", action="store_true", default=False, + help="Use a plain squashfs filesystem for the runtime.") + parser.add_argument("--timeout", default=None, type=int, + help="Cancel installer after X minutes") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + return parser
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/creator.html b/f35-branch/_modules/pylorax/creator.html new file mode 100644 index 00000000..d8a23607 --- /dev/null +++ b/f35-branch/_modules/pylorax/creator.html @@ -0,0 +1,963 @@ + + + + + + + + + + pylorax.creator — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.creator

+#
+# Copyright (C) 2011-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import os
+import tempfile
+import subprocess
+import shutil
+import hashlib
+import glob
+
+# Use Mako templates for appliance builder descriptions
+from mako.template import Template
+from mako.exceptions import text_error_template
+
+# Use pykickstart to calculate disk image size
+from pykickstart.parser import KickstartParser
+from pykickstart.constants import KS_SHUTDOWN
+from pykickstart.version import makeVersion
+
+# Use the Lorax treebuilder branch for iso creation
+from pylorax import ArchData
+from pylorax.base import DataHolder
+from pylorax.executils import execWithRedirect, runcmd
+from pylorax.imgutils import PartitionMount
+from pylorax.imgutils import mount, umount, Mount
+from pylorax.imgutils import mksquashfs, mkrootfsimg
+from pylorax.imgutils import copytree
+from pylorax.installer import novirt_install, virt_install, InstallError
+from pylorax.treebuilder import TreeBuilder, RuntimeBuilder
+from pylorax.treebuilder import findkernels
+from pylorax.sysutils import joinpaths, remove
+
+
+# Default parameters for rebuilding initramfs, override with --dracut-arg or --dracut-conf
+DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu qemu-net",
+                  "--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"]
+
+RUNTIME = "images/install.img"
+
+
[docs]class FakeDNF(object): + """ + A minimal DNF object suitable for passing to RuntimeBuilder + + lmc uses RuntimeBuilder to run the arch specific iso creation + templates, so the the installroot config value is the important part of + this. Everything else should be a nop. + """ + def __init__(self, conf): + self.conf = conf + +
[docs] def reset(self): + pass
+ +
[docs]def is_image_mounted(disk_img): + """ + Check to see if the disk_img is mounted + + :returns: True if disk_img is in /proc/mounts + :rtype: bool + """ + with open("/proc/mounts") as mounts: + for mnt in mounts: + fields = mnt.split() + if len(fields) > 2 and fields[1] == disk_img: + return True + return False
+ +
[docs]def find_ostree_root(phys_root): + """ + Find root of ostree deployment + + :param str phys_root: Path to physical root + :returns: Relative path of ostree deployment root + :rtype: str + :raise Exception: More than one deployment roots were found + """ + ostree_root = "" + ostree_sysroots = glob.glob(joinpaths(phys_root, "ostree/boot.?/*/*/0")) + log.debug("ostree_sysroots = %s", ostree_sysroots) + if ostree_sysroots: + if len(ostree_sysroots) > 1: + raise Exception("Too many deployment roots found: %s" % ostree_sysroots) + ostree_root = os.path.relpath(ostree_sysroots[0], phys_root) + return ostree_root
+ +
[docs]def get_arch(mount_dir): + """ + Get the kernel arch + + :returns: Arch of first kernel found at mount_dir/boot/ or i386 + :rtype: str + """ + kernels = findkernels(mount_dir) + if not kernels: + return "i386" + return kernels[0].arch
+ +
[docs]def squashfs_args(opts): + """ Returns the compression type and args to use when making squashfs + + :param opts: ArgumentParser object with compression and compressopts + :returns: tuple of compression type and args + :rtype: tuple + """ + compression = opts.compression or "xz" + arch = ArchData(opts.arch or os.uname().machine) + if compression == "xz" and arch.bcj and not opts.compress_args: + # default to bcj when using xz + compressargs = ["-Xbcj", arch.bcj] + elif opts.compress_args: + compressargs = [] + for arg in opts.compress_args: + compressargs += arg.split(" ", 1) + else: + compressargs = [] + return (compression, compressargs)
+ +
[docs]def dracut_args(opts): + """Return a list of the args to pass to dracut + + Return the default argument list unless one of the dracut cmdline arguments + has been used. + """ + if opts.dracut_conf: + return ["--conf", opts.dracut_conf] + elif opts.dracut_args: + args = [] + for arg in opts.dracut_args: + args += arg.split(" ", 1) + return args + else: + return DRACUT_DEFAULT
+ +
[docs]def make_appliance(disk_img, name, template, outfile, networks=None, ram=1024, + vcpus=1, arch=None, title="Linux", project="Linux", + releasever="34"): + """ + Generate an appliance description file + + :param str disk_img: Full path of the disk image + :param str name: Name of the appliance, passed to the template + :param str template: Full path of Mako template + :param str outfile: Full path of file to write, using template + :param list networks: List of networks(str) from the kickstart + :param int ram: Ram, in MiB, passed to template. Default is 1024 + :param int vcpus: CPUs, passed to template. Default is 1 + :param str arch: CPU architecture. Default is 'x86_64' + :param str title: Title, passed to template. Default is 'Linux' + :param str project: Project, passed to template. Default is 'Linux' + :param str releasever: Release version, passed to template. Default is 34 + """ + if not (disk_img and template and outfile): + return None + + log.info("Creating appliance definition using %s", template) + + if not arch: + arch = "x86_64" + + log.info("Calculating SHA256 checksum of %s", disk_img) + sha256 = hashlib.sha256() + with open(disk_img, "rb") as f: + while True: + data = f.read(1024**2) + if not data: + break + sha256.update(data) + log.info("SHA256 of %s is %s", disk_img, sha256.hexdigest()) + disk_info = DataHolder(name=os.path.basename(disk_img), format="raw", + checksum_type="sha256", checksum=sha256.hexdigest()) + try: + result = Template(filename=template).render(disks=[disk_info], name=name, + arch=arch, memory=ram, vcpus=vcpus, networks=networks, + title=title, project=project, releasever=releasever) + except Exception: + log.error(text_error_template().render()) + raise + + with open(outfile, "w") as f: + f.write(result)
+ + +
[docs]def make_runtime(opts, mount_dir, work_dir, size=None): + """ + Make the squashfs image from a directory + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str mount_dir: Directory tree to compress + :param str work_dir: Output compressed image to work_dir+images/install.img + :param int size: Size of disk image, in GiB + :returns: rc of squashfs creation + :rtype: int + """ + kernel_arch = get_arch(mount_dir) + + # Fake dnf object + fake_dbo = FakeDNF(conf=DataHolder(installroot=mount_dir)) + # Fake arch with only basearch set + arch = ArchData(kernel_arch) + # TODO: Need to get release info from someplace... + product = DataHolder(name=opts.project, version=opts.releasever, release="", + variant="", bugurl="", isfinal=False) + + rb = RuntimeBuilder(product, arch, fake_dbo) + compression, compressargs = squashfs_args(opts) + + if opts.squashfs_only: + log.info("Creating a squashfs only runtime") + return rb.create_squashfs_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs) + else: + log.info("Creating a squashfs+ext4 runtime") + return rb.create_ext4_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs)
+ + +
[docs]def rebuild_initrds_for_live(opts, sys_root_dir, results_dir): + """ + Rebuild intrds for pxe live image (root=live:http://) + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str sys_root_dir: Path to root of the system + :param str results_dir: Path of directory for storing results + """ + # cmdline dracut args override the defaults, but need to be parsed + log.info("dracut args = %s", dracut_args(opts)) + + dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + dracut_args(opts) + + kdir = "boot" + if opts.ostree: + kernels_dir = glob.glob(joinpaths(sys_root_dir, "boot/ostree/*")) + if kernels_dir: + kdir = os.path.relpath(kernels_dir[0], sys_root_dir) + + kernels = [kernel for kernel in findkernels(sys_root_dir, kdir)] + if not kernels: + raise Exception("No initrds found, cannot rebuild_initrds") + + if opts.ostree: + # Dracut assumes to have some dirs in disk image + # /var/tmp for temp files + vartmp_dir = joinpaths(sys_root_dir, "var/tmp") + if not os.path.isdir(vartmp_dir): + os.mkdir(vartmp_dir) + # /root (maybe not fatal) + root_dir = joinpaths(sys_root_dir, "var/roothome") + if not os.path.isdir(root_dir): + os.mkdir(root_dir) + # /tmp (maybe not fatal) + tmp_dir = joinpaths(sys_root_dir, "sysroot/tmp") + if not os.path.isdir(tmp_dir): + os.mkdir(tmp_dir) + + # Write the new initramfs directly to the results directory + os.mkdir(joinpaths(sys_root_dir, "results")) + mount(results_dir, opts="bind", mnt=joinpaths(sys_root_dir, "results")) + # Dracut runs out of space inside the minimal rootfs image + mount("/var/tmp", opts="bind", mnt=joinpaths(sys_root_dir, "var/tmp")) + for kernel in kernels: + if hasattr(kernel, "initrd"): + outfile = os.path.basename(kernel.initrd.path) + else: + # Construct an initrd from the kernel name + outfile = os.path.basename(kernel.path.replace("vmlinuz-", "initrd-") + ".img") + log.info("rebuilding %s", outfile) + log.info("dracut warnings about /proc are safe to ignore") + + kver = kernel.version + cmd = dracut + ["/results/"+outfile, kver] + runcmd(cmd, root=sys_root_dir) + + shutil.copy2(joinpaths(sys_root_dir, kernel.path), results_dir) + umount(joinpaths(sys_root_dir, "var/tmp"), delete=False) + umount(joinpaths(sys_root_dir, "results"), delete=False)
+ +
[docs]def create_pxe_config(template, images_dir, live_image_name, add_args = None): + """ + Create template for pxe to live configuration + + :param str images_dir: Path of directory with images to be used + :param str live_image_name: Name of live rootfs image file + :param list add_args: Arguments to be added to initrd= pxe config + """ + + add_args = add_args or [] + + kernels = [kernel for kernel in findkernels(images_dir, kdir="") + if hasattr(kernel, "initrd")] + if not kernels: + return + + kernel = kernels[0] + + add_args_str = " ".join(add_args) + + + try: + result = Template(filename=template).render(kernel=kernel.path, + initrd=kernel.initrd.path, liveimg=live_image_name, + addargs=add_args_str) + except Exception: + log.error(text_error_template().render()) + raise + + with open (joinpaths(images_dir, "PXE_CONFIG"), "w") as f: + f.write(result)
+ + +
[docs]def make_livecd(opts, mount_dir, work_dir): + """ + Take the content from the disk image and make a livecd out of it + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str mount_dir: Directory tree to compress + :param str work_dir: Output compressed image to work_dir+images/install.img + + This uses wwood's squashfs live initramfs method: + * put the real / into LiveOS/rootfs.img + * make a squashfs of the LiveOS/rootfs.img tree + * This is loaded by dracut when the cmdline is passed to the kernel: + root=live:CDLABEL=<volid> rd.live.image + """ + kernel_arch = get_arch(mount_dir) + + arch = ArchData(kernel_arch) + # TODO: Need to get release info from someplace... + product = DataHolder(name=opts.project, version=opts.releasever, release="", + variant="", bugurl="", isfinal=False) + + # Link /images to work_dir/images to make the templates happy + if os.path.islink(joinpaths(mount_dir, "images")): + os.unlink(joinpaths(mount_dir, "images")) + rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"), + joinpaths(mount_dir, "images")]) + if rc: + raise RuntimeError("Failed to symlink images from mount_dir to work_dir") + + # The templates expect the config files to be in /tmp/config_files + # I think these should be release specific, not from lorax, but for now + configdir = joinpaths(opts.lorax_templates,"live/config_files/") + configdir_path = "tmp/config_files" + fullpath = joinpaths(mount_dir, configdir_path) + if os.path.exists(fullpath): + remove(fullpath) + copytree(configdir, fullpath) + + isolabel = opts.volid or "{0.name}-{0.version}-{1.basearch}".format(product, arch) + if len(isolabel) > 32: + isolabel = isolabel[:32] + log.warning("Truncating isolabel to 32 chars: %s", isolabel) + + tb = TreeBuilder(product=product, arch=arch, domacboot=opts.domacboot, + inroot=mount_dir, outroot=work_dir, + runtime=RUNTIME, isolabel=isolabel, + templatedir=joinpaths(opts.lorax_templates,"live/"), + extra_boot_args=opts.extra_boot_args) + log.info("Rebuilding initrds") + log.info("dracut args = %s", dracut_args(opts)) + tb.rebuild_initrds(add_args=dracut_args(opts)) + log.info("Building boot.iso") + tb.build() + + return work_dir
+ +
[docs]def mount_boot_part_over_root(img_mount): + """ + Mount boot partition to /boot of root fs mounted in img_mount + + Used for OSTree so it finds deployment configurations on live rootfs + + param img_mount: object with mounted disk image root partition + type img_mount: imgutils.PartitionMount + """ + root_dir = img_mount.mount_dir + is_boot_part = lambda dir: os.path.exists(dir+"/loader.0") + tmp_mount_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + sysroot_boot_dir = None + for dev, _size in img_mount.loop_devices: + if dev is img_mount.mount_dev: + continue + try: + mount("/dev/mapper/"+dev, mnt=tmp_mount_dir) + if is_boot_part(tmp_mount_dir): + umount(tmp_mount_dir) + sysroot_boot_dir = joinpaths(root_dir, "boot") + mount("/dev/mapper/"+dev, mnt=sysroot_boot_dir) + break + else: + umount(tmp_mount_dir) + except subprocess.CalledProcessError as e: + log.debug("Looking for boot partition error: %s", e) + remove(tmp_mount_dir) + return sysroot_boot_dir
+ +
[docs]def calculate_disk_size(opts, ks): + """ Calculate the disk size from the kickstart + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str ks: Path to the kickstart to use for the installation + :returns: Disk size in MiB + :rtype: int + + Also takes into account the use of reqpart or reqpart --add-boot + """ + # Disk size for a filesystem image should only be the size of / + # to prevent surprises when using the same kickstart for different installations. + unique_partitions = dict((p.mountpoint, p) for p in ks.handler.partition.partitions) + if opts.no_virt and (opts.make_iso or opts.make_fsimage): + disk_size = 2 + sum(p.size for p in unique_partitions.values() if p.mountpoint == "/") + else: + disk_size = 2 + sum(p.size for p in unique_partitions.values()) + + # reqpart can add 1M, 2M, 200M based on platform. Add 500M to be sure + if ks.handler.reqpart.seen: + log.info("Adding 500M for reqpart") + disk_size += 500 + + # It can also request adding /boot which is 1G + if ks.handler.reqpart.addBoot: + log.info("Adding 1024M for reqpart --addboot") + disk_size += 1024 + + if opts.image_size_align: + disk_size += opts.image_size_align - (disk_size % opts.image_size_align) + + log.info("Using disk size of %sMiB", disk_size) + return disk_size
+ +
[docs]def make_image(opts, ks, cancel_func=None): + """ + Install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str ks: Path to the kickstart to use for the installation + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :returns: Path of the image created + :rtype: str + + Use qemu+boot.iso or anaconda to install to a disk image. + """ + + # For make_tar_disk, opts.image_name is the name of the final tarball. + # Use opts.tar_disk_name as the name of the disk image + if opts.make_tar_disk: + disk_img = joinpaths(opts.result_dir, opts.tar_disk_name) + elif opts.image_name: + disk_img = joinpaths(opts.result_dir, opts.image_name) + else: + disk_img = tempfile.mktemp(prefix="lmc-disk-", suffix=".img", dir=opts.result_dir) + log.info("disk_img = %s", disk_img) + disk_size = calculate_disk_size(opts, ks) + + # For make_tar_disk, pass a second path parameter for the final tarball + # not the final output file. + if opts.make_tar_disk: + tar_img = joinpaths(opts.result_dir, opts.image_name) + else: + tar_img = None + + try: + if opts.no_virt: + novirt_install(opts, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) + else: + install_log = os.path.abspath(os.path.dirname(opts.logfile))+"/virt-install.log" + log.info("install_log = %s", install_log) + + virt_install(opts, install_log, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) + except InstallError as e: + log.error("Install failed: %s", e) + if not opts.keep_image: + if os.path.exists(disk_img): + log.info("Removing bad disk image") + os.unlink(disk_img) + if tar_img and os.path.exists(tar_img): + log.info("Removing bad tar file") + os.unlink(tar_img) + raise + + log.info("Disk Image install successful") + + if opts.make_tar_disk: + return tar_img + + return disk_img
+ + +
[docs]def make_live_images(opts, work_dir, disk_img): + """ + Create live images from direcory or rootfs image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str work_dir: Directory for storing results + :param str disk_img: Path to disk image (fsimage or partitioned) + :returns: Path of directory with created images or None + :rtype: str + + fsck.ext4 is run on the rootfs_image to make sure there are no errors and to zero + out any deleted blocks to make it compress better. If this fails for any reason + it will return None and log the error. + """ + sys_root = "" + + squashfs_root_dir = joinpaths(work_dir, "squashfs_root") + liveos_dir = joinpaths(squashfs_root_dir, "LiveOS") + os.makedirs(liveos_dir) + rootfs_img = joinpaths(liveos_dir, "rootfs.img") + + if opts.fs_image or opts.no_virt: + # Find the ostree root in the fsimage + if opts.ostree: + with Mount(disk_img, opts="loop") as mnt_dir: + sys_root = find_ostree_root(mnt_dir) + + # Try to hardlink the image, if that fails, copy it + rc = execWithRedirect("/bin/ln", [disk_img, rootfs_img]) + if rc != 0: + shutil.copy2(disk_img, rootfs_img) + else: + is_root_part = None + if opts.ostree: + is_root_part = lambda dir: os.path.exists(dir+"/ostree/deploy") + with PartitionMount(disk_img, mount_ok=is_root_part) as img_mount: + if img_mount and img_mount.mount_dir: + try: + mounted_sysroot_boot_dir = None + if opts.ostree: + sys_root = find_ostree_root(img_mount.mount_dir) + mounted_sysroot_boot_dir = mount_boot_part_over_root(img_mount) + if opts.live_rootfs_keep_size: + size = img_mount.mount_size / 1024**3 + else: + size = opts.live_rootfs_size or None + log.info("Creating live rootfs image") + mkrootfsimg(img_mount.mount_dir, rootfs_img, "LiveOS", size=size, sysroot=sys_root) + finally: + if mounted_sysroot_boot_dir: + umount(mounted_sysroot_boot_dir) + log.debug("sys_root = %s", sys_root) + + # Make sure free blocks are actually zeroed so it will compress + rc = execWithRedirect("/usr/sbin/fsck.ext4", ["-y", "-f", "-E", "discard", rootfs_img]) + if rc != 0: + log.error("Problem zeroing free blocks of %s", disk_img) + return None + + log.info("Packing live rootfs image") + add_pxe_args = [] + live_image_name = "live-rootfs.squashfs.img" + compression, compressargs = squashfs_args(opts) + rc = mksquashfs(squashfs_root_dir, joinpaths(work_dir, live_image_name), compression, compressargs) + if rc != 0: + log.error("mksquashfs failed to create %s", live_image_name) + return None + + log.info("Rebuilding initramfs for live") + with Mount(rootfs_img, opts="loop") as mnt_dir: + try: + mount(joinpaths(mnt_dir, "boot"), opts="bind", mnt=joinpaths(mnt_dir, sys_root, "boot")) + rebuild_initrds_for_live(opts, joinpaths(mnt_dir, sys_root), work_dir) + finally: + umount(joinpaths(mnt_dir, sys_root, "boot"), delete=False) + + remove(squashfs_root_dir) + + if opts.ostree: + add_pxe_args.append("ostree=/%s" % sys_root) + template = joinpaths(opts.lorax_templates, "pxe-live/pxe-config.tmpl") + create_pxe_config(template, work_dir, live_image_name, add_pxe_args) + + return work_dir
+ +
[docs]def check_kickstart(ks, opts): + """Check the parsed kickstart object for errors + + :param ks: Parsed Kickstart object + :type ks: pykickstart.parser.KickstartParser + :param opts: Commandline options to control the process + :type opts: Either a DataHolder or ArgumentParser + :returns: List of error strings or empty list + :rtype: list + """ + errors = [] + if opts.no_virt and ks.handler.method.method not in ("url", "nfs") \ + and not ks.handler.ostreesetup.seen: + errors.append("Only url, nfs and ostreesetup install methods are currently supported." + "Please fix your kickstart file." ) + + if ks.handler.repo.seen and ks.handler.method.method != "url": + errors.append("repo can only be used with the url install method. Add url to your " + "kickstart file.") + + if ks.handler.method.method in ("url", "nfs") and not ks.handler.network.seen: + errors.append("The kickstart must activate networking if " + "the url or nfs install method is used.") + + if ks.handler.displaymode.displayMode is not None: + errors.append("The kickstart must not set a display mode (text, cmdline, " + "graphical), this will interfere with livemedia-creator.") + + if opts.make_fsimage or (opts.make_pxe_live and opts.no_virt): + # Make sure the kickstart isn't using autopart and only has a / mountpoint + part_ok = not any(p for p in ks.handler.partition.partitions + if p.mountpoint not in ["/", "swap"]) + if not part_ok or ks.handler.autopart.seen: + errors.append("Filesystem images must use a single / part, not autopart or " + "multiple partitions. swap is allowed but not used.") + + if not opts.no_virt and ks.handler.reboot.action != KS_SHUTDOWN: + errors.append("The kickstart must include shutdown when using virt installation.") + + return errors
+ +
[docs]def run_creator(opts, cancel_func=None): + """Run the image creator process + + :param opts: Commandline options to control the process + :type opts: Either a DataHolder or ArgumentParser + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :returns: The result directory and the disk image path. + :rtype: Tuple of str + + This function takes the opts arguments and creates the selected output image. + See the cmdline --help for livemedia-creator for the possible options + + (Yes, this is not ideal, but we can fix that later) + """ + result_dir = None + + # Parse the kickstart + if opts.ks: + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstart(opts.ks[0]) + + # live iso usually needs dracut-live so warn the user if it is missing + if opts.ks and opts.make_iso: + if "dracut-live" not in ks.handler.packages.packageList: + log.error("dracut-live package is missing from the kickstart.") + raise RuntimeError("dracut-live package is missing from the kickstart.") + + # Make the disk or filesystem image + if not opts.disk_image and not opts.fs_image: + if not opts.ks: + raise RuntimeError("Image creation requires a kickstart file") + + # Check the kickstart for problems + errors = check_kickstart(ks, opts) + if errors: + list(log.error(e) for e in errors) + raise RuntimeError("\n".join(errors)) + + # Make the image. Output of this is either a partitioned disk image or a fsimage + try: + disk_img = make_image(opts, ks, cancel_func=cancel_func) + except InstallError as e: + log.error("ERROR: Image creation failed: %s", e) + raise RuntimeError("Image creation failed: %s" % e) + + if opts.image_only: + return (result_dir, disk_img) + + if opts.make_iso: + work_dir = tempfile.mkdtemp(prefix="lmc-work-") + log.info("working dir is %s", work_dir) + + if (opts.fs_image or opts.no_virt) and not opts.disk_image: + # Create iso from a filesystem image + disk_img = opts.fs_image or disk_img + with Mount(disk_img, opts="loop") as mount_dir: + rc = make_runtime(opts, mount_dir, work_dir, calculate_disk_size(opts, ks)/1024.0) + if rc != 0: + log.error("make_runtime failed with rc = %d. See program.log", rc) + raise RuntimeError("make_runtime failed with rc = %d" % rc) + if cancel_func and cancel_func(): + raise RuntimeError("ISO creation canceled") + + result_dir = make_livecd(opts, mount_dir, work_dir) + else: + # Create iso from a partitioned disk image + disk_img = opts.disk_image or disk_img + with PartitionMount(disk_img) as img_mount: + if img_mount and img_mount.mount_dir: + rc = make_runtime(opts, img_mount.mount_dir, work_dir, calculate_disk_size(opts, ks)/1024.0) + if rc != 0: + log.error("make_runtime failed with rc = %d. See program.log", rc) + raise RuntimeError("make_runtime failed with rc = %d" % rc) + result_dir = make_livecd(opts, img_mount.mount_dir, work_dir) + + # --iso-only removes the extra build artifacts, keeping only the boot.iso + if opts.iso_only and result_dir: + boot_iso = joinpaths(result_dir, "images/boot.iso") + if not os.path.exists(boot_iso): + log.error("%s is missing, skipping --iso-only.", boot_iso) + else: + iso_dir = tempfile.mkdtemp(prefix="lmc-result-") + dest_file = joinpaths(iso_dir, opts.iso_name or "boot.iso") + shutil.move(boot_iso, dest_file) + shutil.rmtree(result_dir) + result_dir = iso_dir + + # cleanup the mess + # cleanup work_dir? + if disk_img and not (opts.keep_image or opts.disk_image or opts.fs_image): + os.unlink(disk_img) + log.info("Disk image erased") + disk_img = None + elif opts.make_appliance: + if not opts.ks: + networks = [] + else: + networks = ks.handler.network.network + make_appliance(opts.disk_image or disk_img, opts.app_name, + opts.app_template, opts.app_file, networks, opts.ram, + opts.vcpus or 1, opts.arch, opts.title, opts.project, opts.releasever) + elif opts.make_pxe_live: + work_dir = tempfile.mkdtemp(prefix="lmc-work-") + log.info("working dir is %s", work_dir) + disk_img = opts.fs_image or opts.disk_image or disk_img + log.debug("disk image is %s", disk_img) + + result_dir = make_live_images(opts, work_dir, disk_img) + if result_dir is None: + log.error("Creating PXE live image failed.") + raise RuntimeError("Creating PXE live image failed.") + + if opts.result_dir != opts.tmp and result_dir: + copytree(result_dir, opts.result_dir, preserve=False) + shutil.rmtree(result_dir) + result_dir = None + + return (result_dir, disk_img)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/decorators.html b/f35-branch/_modules/pylorax/decorators.html new file mode 100644 index 00000000..d8dd5b10 --- /dev/null +++ b/f35-branch/_modules/pylorax/decorators.html @@ -0,0 +1,237 @@ + + + + + + + + + + pylorax.decorators — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.decorators

+#
+# decorators.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+
[docs]def singleton(cls): + instances = {} + + def get_instance(): + if cls not in instances: + instances[cls] = cls() + return instances[cls] + + return get_instance
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/discinfo.html b/f35-branch/_modules/pylorax/discinfo.html new file mode 100644 index 00000000..51c033f3 --- /dev/null +++ b/f35-branch/_modules/pylorax/discinfo.html @@ -0,0 +1,252 @@ + + + + + + + + + + pylorax.discinfo — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.discinfo

+#
+# discinfo.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.discinfo")
+
+import os
+import time
+
+
+
[docs]class DiscInfo(object): + + def __init__(self, release, basearch): + self.release = release + self.basearch = basearch + +
[docs] def write(self, outfile): + if 'SOURCE_DATE_EPOCH' in os.environ: + timestamp = int(os.environ['SOURCE_DATE_EPOCH']) + else: + timestamp = time.time() + + logger.info("writing .discinfo file") + with open(outfile, "w") as fobj: + fobj.write("{0:f}\n".format(timestamp)) + fobj.write("{0.release}\n".format(self)) + fobj.write("{0.basearch}\n".format(self))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/dnfbase.html b/f35-branch/_modules/pylorax/dnfbase.html new file mode 100644 index 00000000..3db5b0c6 --- /dev/null +++ b/f35-branch/_modules/pylorax/dnfbase.html @@ -0,0 +1,394 @@ + + + + + + + + + + pylorax.dnfbase — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.dnfbase

+# Copyright (C) 2018 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import dnf
+import os
+import shutil
+
+from pylorax import DEFAULT_PLATFORM_ID
+from pylorax.sysutils import flatconfig
+
+
[docs]def get_dnf_base_object(installroot, sources, mirrorlists=None, repos=None, + enablerepos=None, disablerepos=None, + tempdir="/var/tmp", proxy=None, releasever="34", + cachedir=None, logdir=None, sslverify=True, dnfplugins=None): + """ Create a dnf Base object and setup the repositories and installroot + + :param string installroot: Full path to the installroot + :param list sources: List of source repo urls to use for the installation + :param list enablerepos: List of repo names to enable + :param list disablerepos: List of repo names to disable + :param list mirrorlist: List of mirrors to use + :param string tempdir: Path of temporary directory + :param string proxy: http proxy to use when fetching packages + :param string releasever: Release version to pass to dnf + :param string cachedir: Directory to use for caching packages + :param bool noverifyssl: Set to True to ignore the CA of ssl certs. eg. use self-signed ssl for https repos. + + If tempdir is not set /var/tmp is used. + If cachedir is None a dnf.cache directory is created inside tmpdir + """ + def sanitize_repo(repo): + """Convert bare paths to file:/// URIs, and silently reject protocols unhandled by yum""" + if repo.startswith("/"): + return "file://{0}".format(repo) + elif any(repo.startswith(p) for p in ('http://', 'https://', 'ftp://', 'file://')): + return repo + else: + return None + + mirrorlists = mirrorlists or [] + + # sanitize the repositories + sources = list(sanitize_repo(r) for r in sources) + mirrorlists = list(sanitize_repo(r) for r in mirrorlists) + + # remove invalid repositories + sources = list(r for r in sources if r) + mirrorlists = list(r for r in mirrorlists if r) + + if not cachedir: + cachedir = os.path.join(tempdir, "dnf.cache") + if not os.path.isdir(cachedir): + os.mkdir(cachedir) + + if not logdir: + logdir = os.path.join(tempdir, "dnf.logs") + if not os.path.isdir(logdir): + os.mkdir(logdir) + + dnfbase = dnf.Base() + # Enable DNF pluings + # NOTE: These come from the HOST system's environment + if dnfplugins: + if dnfplugins[0] == "*": + # Enable them all + dnfbase.init_plugins() + else: + # Only enable the listed plugins + dnfbase.init_plugins(disabled_glob=["*"], enable_plugins=dnfplugins) + conf = dnfbase.conf + conf.logdir = logdir + conf.cachedir = cachedir + + conf.install_weak_deps = False + conf.releasever = releasever + conf.installroot = installroot + conf.prepend_installroot('persistdir') + # this is a weird 'AppendOption' thing that, when you set it, + # actually appends. Doing this adds 'nodocs' to the existing list + # of values, over in libdnf, it does not replace the existing values. + conf.tsflags = ['nodocs'] + # Log details about the solver + conf.debug_solver = True + + if proxy: + conf.proxy = proxy + + if sslverify == False: + conf.sslverify = False + + # DNF 3.2 needs to have module_platform_id set, otherwise depsolve won't work correctly + if not os.path.exists("/etc/os-release"): + log.warning("/etc/os-release is missing, cannot determine platform id, falling back to %s", DEFAULT_PLATFORM_ID) + platform_id = DEFAULT_PLATFORM_ID + else: + os_release = flatconfig("/etc/os-release") + platform_id = os_release.get("PLATFORM_ID", DEFAULT_PLATFORM_ID) + log.info("Using %s for module_platform_id", platform_id) + conf.module_platform_id = platform_id + + # Add .repo files + if repos: + reposdir = os.path.join(tempdir, "dnf.repos") + if not os.path.isdir(reposdir): + os.mkdir(reposdir) + for r in repos: + shutil.copy2(r, reposdir) + conf.reposdir = [reposdir] + dnfbase.read_all_repos() + + # add the sources + for i, r in enumerate(sources): + if "SRPM" in r or "srpm" in r: + log.info("Skipping source repo: %s", r) + continue + repo_name = "lorax-repo-%d" % i + repo = dnf.repo.Repo(repo_name, conf) + repo.baseurl = [r] + if proxy: + repo.proxy = proxy + repo.enable() + dnfbase.repos.add(repo) + log.info("Added '%s': %s", repo_name, r) + log.info("Fetching metadata...") + try: + repo.load() + except dnf.exceptions.RepoError as e: + log.error("Error fetching metadata for %s: %s", repo_name, e) + return None + + # add the mirrorlists + for i, r in enumerate(mirrorlists): + if "SRPM" in r or "srpm" in r: + log.info("Skipping source repo: %s", r) + continue + repo_name = "lorax-mirrorlist-%d" % i + repo = dnf.repo.Repo(repo_name, conf) + repo.mirrorlist = r + if proxy: + repo.proxy = proxy + repo.enable() + dnfbase.repos.add(repo) + log.info("Added '%s': %s", repo_name, r) + log.info("Fetching metadata...") + try: + repo.load() + except dnf.exceptions.RepoError as e: + log.error("Error fetching metadata for %s: %s", repo_name, e) + return None + + # Enable repos listed on the cmdline + for r in enablerepos: + repolist = dnfbase.repos.get_matching(r) + if not repolist: + log.warning("%s is an unknown repo, not enabling it", r) + else: + repolist.enable() + log.info("Enabled repo %s", r) + + # Disable repos listed on the cmdline + for r in disablerepos: + repolist = dnfbase.repos.get_matching(r) + if not repolist: + log.warning("%s is an unknown repo, not disabling it", r) + else: + repolist.disable() + log.info("Disabled repo %s", r) + + dnfbase.fill_sack(load_system_repo=False) + dnfbase.read_comps() + + return dnfbase
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/dnfhelper.html b/f35-branch/_modules/pylorax/dnfhelper.html new file mode 100644 index 00000000..ab810308 --- /dev/null +++ b/f35-branch/_modules/pylorax/dnfhelper.html @@ -0,0 +1,317 @@ + + + + + + + + + + pylorax.dnfhelper — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.dnfhelper

+#
+# dnfhelper.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Brian C. Lane <bcl@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.dnfhelper")
+import dnf
+import dnf.transaction
+import collections
+import time
+import pylorax.output as output
+
+__all__ = ['LoraxDownloadCallback', 'LoraxRpmCallback']
+
+def _paced(fn):
+    """Execute `fn` no more often then every 2 seconds."""
+    def paced_fn(self, *args):
+        now = time.time()
+        if now - self.last_time < 2:
+            return
+        self.last_time = now
+        return fn(self, *args)
+    return paced_fn
+
+
+
[docs]class LoraxDownloadCallback(dnf.callback.DownloadProgress): + def __init__(self): + self.downloads = collections.defaultdict(int) + self.last_time = time.time() + self.total_files = 0 + self.total_size = 0 + + self.pkgno = 0 + self.total = 0 + + self.output = output.LoraxOutput() + + @_paced + def _update(self): + msg = "Downloading %(pkgno)s / %(total_files)s RPMs, " \ + "%(downloaded)s / %(total_size)s (%(percent)d%%) done.\n" + downloaded = sum(self.downloads.values()) + vals = { + 'downloaded' : downloaded, + 'percent' : int(100 * downloaded/self.total_size), + 'pkgno' : self.pkgno, + 'total_files' : self.total_files, + 'total_size' : self.total_size + } + self.output.write(msg % vals) + +
[docs] def end(self, payload, status, msg): + nevra = str(payload) + if status is dnf.callback.STATUS_OK: + self.downloads[nevra] = payload.download_size + self.pkgno += 1 + self._update() + return + logger.critical("Failed to download '%s': %d - %s", nevra, status, msg)
+ +
[docs] def progress(self, payload, done): + nevra = str(payload) + self.downloads[nevra] = done + self._update()
+ + # dnf 2.5.0 adds a new argument, accept it if it is passed + # pylint: disable=arguments-differ +
[docs] def start(self, total_files, total_size, total_drpms=0): + self.total_files = total_files + self.total_size = total_size
+ + +
[docs]class LoraxRpmCallback(dnf.callback.TransactionProgress): + def __init__(self): + super(LoraxRpmCallback, self).__init__() + self._last_ts = None + +
[docs] def progress(self, package, action, ti_done, ti_total, ts_done, ts_total): + if action == dnf.transaction.PKG_INSTALL: + # do not report same package twice + if self._last_ts == ts_done: + return + self._last_ts = ts_done + + msg = '(%d/%d) %s' % (ts_done, ts_total, package) + logger.info(msg) + elif action == dnf.transaction.TRANS_POST: + msg = "Performing post-installation setup tasks" + logger.info(msg)
+ +
[docs] def error(self, message): + logger.warning(message)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/executils.html b/f35-branch/_modules/pylorax/executils.html new file mode 100644 index 00000000..67615a48 --- /dev/null +++ b/f35-branch/_modules/pylorax/executils.html @@ -0,0 +1,580 @@ + + + + + + + + + + pylorax.executils — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.executils

+#
+# executil.py - subprocess execution utility functions
+#
+# Copyright (C) 1999-2015
+# Red Hat, Inc.  All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import os
+import select
+import subprocess
+from subprocess import TimeoutExpired
+import signal
+import time
+
+import logging
+log = logging.getLogger("pylorax")
+program_log = logging.getLogger("program")
+
+# pylint: disable=not-context-manager
+from threading import Lock
+program_log_lock = Lock()
+
+_child_env = {}
+
+
[docs]def setenv(name, value): + """ Set an environment variable to be used by child processes. + + This method does not modify os.environ for the running process, which + is not thread-safe. If setenv has already been called for a particular + variable name, the old value is overwritten. + + :param str name: The name of the environment variable + :param str value: The value of the environment variable + """ + + _child_env[name] = value
+ +
[docs]def augmentEnv(): + env = os.environ.copy() + env.update(_child_env) + return env
+ +
[docs]class ExecProduct(object): + def __init__(self, rc, stdout, stderr): + self.rc = rc + self.stdout = stdout + self.stderr = stderr
+ +
[docs]def startProgram(argv, root='/', stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + env_prune=None, env_add=None, reset_handlers=True, reset_lang=True, **kwargs): + """ Start an external program and return the Popen object. + + The root and reset_handlers arguments are handled by passing a + preexec_fn argument to subprocess.Popen, but an additional preexec_fn + can still be specified and will be run. The user preexec_fn will be run + last. + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: The file object to write stdout to. + :param stderr: The file object to write stderr to. + :param env_prune: environment variables to remove before execution + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :param kwargs: Additional parameters to pass to subprocess.Popen + :return: A Popen object for the running command. + :keyword preexec_fn: A function to run before execution starts. + """ + if env_prune is None: + env_prune = [] + + # Check for and save a preexec_fn argument + preexec_fn = kwargs.pop("preexec_fn", None) + + def preexec(): + # If a target root was specificed, chroot into it + if root and root != '/': + os.chroot(root) + os.chdir("/") + + # Signal handlers set to SIG_IGN persist across exec. Reset + # these to SIG_DFL if requested. In particular this will include the + # SIGPIPE handler set by python. + if reset_handlers: + for signum in range(1, signal.NSIG): + if signal.getsignal(signum) == signal.SIG_IGN: + signal.signal(signum, signal.SIG_DFL) + + # If the user specified an additional preexec_fn argument, run it + if preexec_fn is not None: + preexec_fn() + + with program_log_lock: + program_log.info("Running... %s", " ".join(argv)) + + env = augmentEnv() + for var in env_prune: + env.pop(var, None) + + if reset_lang: + env.update({"LC_ALL": "C"}) + + if env_add: + env.update(env_add) + + # pylint: disable=subprocess-popen-preexec-fn + return subprocess.Popen(argv, + stdin=stdin, + stdout=stdout, + stderr=stderr, + close_fds=True, + preexec_fn=preexec, cwd=root, env=env, **kwargs)
+ +def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_output=True, + binary_output=False, filter_stderr=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program, log the output and return it to the caller + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to write the output to. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param filter_stderr: whether to exclude the contents of stderr from the returned output + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command and the output + :raises: OSError or CalledProcessError + """ + try: + if filter_stderr: + stderr = subprocess.PIPE + else: + stderr = subprocess.STDOUT + + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, + env_prune=env_prune, universal_newlines=not binary_output, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + + output_string = None + err_string = None + if callback: + while callback(proc) and proc.poll() is None: + try: + (output_string, err_string) = proc.communicate(timeout=1) + break + except TimeoutExpired: + pass + else: + (output_string, err_string) = proc.communicate() + if output_string: + if binary_output: + output_lines = [output_string] + else: + if output_string[-1] != "\n": + output_string = output_string + "\n" + output_lines = output_string.splitlines(True) + + if log_output: + with program_log_lock: + for line in output_lines: + program_log.info(line.strip()) + + if stdout: + stdout.write(output_string) + + # If stderr was filtered, log it separately + if filter_stderr and err_string and log_output: + err_lines = err_string.splitlines(True) + + with program_log_lock: + for line in err_lines: + program_log.info(line.strip()) + + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + with program_log_lock: + program_log.debug("Return code: %s", proc.returncode) + + if proc.returncode and raise_err: + output = (output_string or "") + (err_string or "") + raise subprocess.CalledProcessError(proc.returncode, argv, output) + + return (proc.returncode, output_string) + +
[docs]def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None, + log_output=True, binary_output=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and redirect the output to a file. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, stdout=stdout, root=root, env_prune=env_prune, + log_output=log_output, binary_output=binary_output, raise_err=raise_err, callback=callback, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang)[0]
+ +
[docs]def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False, + raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and capture standard out and err. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param root: The directory to chroot to before running command. + :param log_output: Whether to log the output of command + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The output of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, root=root, log_output=log_output, filter_stderr=filter_stderr, + raise_err=raise_err, callback=callback, env_add=env_add, + reset_handlers=reset_handlers, reset_lang=reset_lang)[1]
+ +
[docs]def execReadlines(command, argv, stdin=None, root='/', env_prune=None, filter_stderr=False, + callback=lambda x: True, env_add=None, reset_handlers=True, reset_lang=True): + """ Execute an external command and return the line output of the command + in real-time. + + This method assumes that there is a reasonably low delay between the + end of output and the process exiting. If the child process closes + stdout and then keeps on truckin' there will be problems. + + NOTE/WARNING: UnicodeDecodeError will be raised if the output of the + external command can't be decoded as UTF-8. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: Iterator of the lines from the command + + Output from the file is not logged to program.log + This returns an iterator with the lines from the command until it has finished + """ + + class ExecLineReader(object): + """Iterator class for returning lines from a process and cleaning + up the process when the output is no longer needed. + """ + + def __init__(self, proc, argv, callback): + self._proc = proc + self._argv = argv + self._callback = callback + self._data = "" + + def __iter__(self): + return self + + def __del__(self): + # See if the process is still running + if self._proc.poll() is None: + # Stop the process and ignore any problems that might arise + try: + self._proc.terminate() + except OSError: + pass + + def __next__(self): + # Return lines from stdout while also calling _callback + while True: + # Check for input without blocking + if select.select([self._proc.stdout], [], [], 0)[0]: + size = len(self._proc.stdout.peek(1)) + if size > 0: + self._data += self._proc.stdout.read(size).decode("utf-8") + + if self._data.find("\n") >= 0: + line = self._data.split("\n", 1) + self._data = line[1] + return line[0] + + if self._proc.poll() is not None or not self._callback(self._proc): + # Output finished, wait 60s for the process to end + try: + self._proc.communicate(timeout=60) + except subprocess.TimeoutExpired: + # Did not exit in 60s, kill it and wait 30s more + self._proc.kill() + try: + self._proc.communicate(timeout=30) + except subprocess.TimeoutExpired: + pass + + if self._proc.returncode is None: + raise OSError("process '%s' failed to be killed" % self._argv) + elif self._proc.returncode < 0: + raise OSError("process '%s' was killed by signal %s" % + (self._argv, -self._proc.returncode)) + elif self._proc.returncode > 0: + raise OSError("process '%s' exited with status %s" % + (self._argv, self._proc.returncode)) + raise StopIteration + + # Don't loop too fast with no input to read + time.sleep(0.5) + + argv = [command] + argv + + if filter_stderr: + stderr = subprocess.DEVNULL + else: + stderr = subprocess.STDOUT + + try: + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, + env_prune=env_prune, env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + return ExecLineReader(proc, argv, callback)
+ +
[docs]def runcmd(cmd, **kwargs): + """ run execWithRedirect with raise_err=True + """ + kwargs["raise_err"] = True + return execWithRedirect(cmd[0], cmd[1:], **kwargs)
+ +
[docs]def runcmd_output(cmd, **kwargs): + """ run execWithCapture with raise_err=True + """ + kwargs["raise_err"] = True + return execWithCapture(cmd[0], cmd[1:], **kwargs)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/imgutils.html b/f35-branch/_modules/pylorax/imgutils.html new file mode 100644 index 00000000..48b0d742 --- /dev/null +++ b/f35-branch/_modules/pylorax/imgutils.html @@ -0,0 +1,703 @@ + + + + + + pylorax.imgutils — Lorax 35.8 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pylorax.imgutils

+# imgutils.py - utility functions/classes for building disk images
+#
+# Copyright (C) 2011-2018 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.imgutils")
+
+import os, tempfile
+from os.path import join, dirname
+from subprocess import Popen, PIPE, CalledProcessError
+import sys
+import time
+import traceback
+import multiprocessing
+from time import sleep
+import shutil
+
+from pylorax.sysutils import cpfile
+from pylorax.executils import execWithRedirect, execWithCapture
+from pylorax.executils import runcmd, runcmd_output
+
+######## Functions for making container images (cpio, tar, squashfs) ##########
+
+
[docs]def compress(command, root, outfile, compression="xz", compressargs=None): + '''Make a compressed archive of the given rootdir or file. + command is a list of the archiver commands to run + compression should be "xz", "gzip", "lzma", "bzip2", or None. + compressargs will be used on the compression commandline.''' + if compression not in (None, "xz", "gzip", "lzma", "bzip2"): + raise ValueError("Unknown compression type %s" % compression) + compressargs = compressargs or ["-9"] + if compression == "xz": + compressargs.insert(0, "--check=crc32") + if compression is None: + compression = "cat" # this is a little silly + compressargs = [] + + # make compression run with multiple threads if possible + if compression in ("xz", "lzma"): + compressargs.insert(0, "-T%d" % multiprocessing.cpu_count()) + elif compression == "gzip": + compression = "pigz" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + elif compression == "bzip2": + compression = "pbzip2" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + + find, archive, comp = None, None, None + + try: + if os.path.isdir(root): + logger.debug("find %s -print0 |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + find = Popen(["find", ".", "-print0"], stdout=PIPE, cwd=root) + archive = Popen(command, stdin=find.stdout, stdout=PIPE, cwd=root) + else: + logger.debug("echo %s |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + archive = Popen(command, stdin=PIPE, stdout=PIPE, cwd=os.path.dirname(root)) + archive.stdin.write(os.path.basename(root).encode("utf-8") + b"\0") + archive.stdin.close() + + with open(outfile, "wb") as fout: + comp = Popen([compression] + compressargs, + stdin=archive.stdout, stdout=fout) + comp.wait() + + # Clean up the open fds and processes + if find: + find.wait() + find.stdout.close() + archive.wait() + if archive.stdin: + archive.stdin.close() + if archive.stdout: + archive.stdout.close() + return comp.returncode + except OSError as e: + logger.error(e) + # Kill off any hanging processes + list(p.kill() for p in (find, archive, comp) if p) + return 1
+ +
[docs]def mkcpio(root, outfile, compression="xz", compressargs=None): + compressargs = compressargs or ["-9"] + return compress(["cpio", "--null", "--quiet", "-H", "newc", "-o"], + root, outfile, compression, compressargs)
+ +
[docs]def mktar(root, outfile, compression="xz", compressargs=None, selinux=True): + compressargs = compressargs or ["-9"] + tar_cmd = ["tar", "--no-recursion"] + if selinux: + tar_cmd += ["--selinux", "--acls", "--xattrs"] + tar_cmd += ["-cf-", "--null", "-T-"] + return compress(tar_cmd, root, outfile, compression, compressargs)
+ +
[docs]def mksquashfs(rootdir, outfile, compression="default", compressargs=None): + '''Make a squashfs image containing the given rootdir.''' + compressargs = compressargs or [] + if compression != "default": + compressargs = ["-comp", compression] + compressargs + return execWithRedirect("mksquashfs", [rootdir, outfile] + compressargs)
+ +
[docs]def mkrootfsimg(rootdir, outfile, label, size=2, sysroot=""): + """ + Make rootfs image from a directory + + :param str rootdir: Root directory + :param str outfile: Path of output image file + :param str label: Filesystem label + :param int size: Size of the image in GiB, if None computed automatically + :param str sysroot: path to system (deployment) root relative to physical root + """ + if size: + fssize = size * (1024*1024*1024) # 2GB sparse file compresses down to nothin' + else: + fssize = None # Let mkext4img figure out the needed size + + mkext4img(rootdir, outfile, label=label, size=fssize)
+ + +######## Utility functions ############################################### + +
[docs]def mksparse(outfile, size): + '''use os.ftruncate to create a sparse file of the given size.''' + with open(outfile, "w") as fobj: + os.ftruncate(fobj.fileno(), int(size))
+ +
[docs]def mkqcow2(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + mkqemu_img(outfile, size, options)
+ +
[docs]def mkqemu_img(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + options = options or [] + if "-f" not in options: + options.extend(["-f", "qcow2"]) + runcmd(["qemu-img", "create"] + options + [outfile, str(size)])
+ +
[docs]def loop_waitfor(loop_dev, outfile): + """Make sure the loop device is attached to the outfile. + + It seems that on rare occasions losetup can return before the /dev/loopX is + ready for use, causing problems with mkfs. This tries to make sure that the + loop device really is associated with the backing file before continuing. + + Raise RuntimeError if it isn't setup after 5 tries. + """ + for _x in range(0,5): + runcmd(["udevadm", "settle", "--timeout", "300"]) + ## XXX Note that losetup --list output can be truncated to 64 bytes in some + ## situations. Don't use it to lookup backing file, go the other way + ## and lookup the loop for the backing file. See util-linux lib/loopdev.c + ## loopcxt_get_backing_file() + if get_loop_name(outfile) == os.path.basename(loop_dev): + return + + # If this really is a race, give it some time to settle down + time.sleep(1) + + raise RuntimeError("Unable to setup %s on %s" % (loop_dev, outfile))
+ +
[docs]def loop_attach(outfile): + """Attach a loop device to the given file. Return the loop device name. + + On rare occasions it appears that the device never shows up, some experiments + seem to indicate that it may be a race with another process using /dev/loop* devices. + + So we now try 3 times before actually failing. + + Raises CalledProcessError if losetup fails. + """ + retries = 0 + while True: + try: + retries += 1 + dev = runcmd_output(["losetup", "--find", "--show", outfile]).strip() + + # Sometimes the loop device isn't ready yet, make extra sure before returning + loop_waitfor(dev, outfile) + except RuntimeError: + # Try to setup the loop device 3 times + if retries == 3: + logger.error("loop_attach failed, retries exhausted.") + raise + logger.debug("Try %d failed, %s did not appear.", retries, dev) + break + return dev
+ +
[docs]def loop_detach(loopdev): + '''Detach the given loop device. Return False on failure.''' + return (execWithRedirect("losetup", ["--detach", loopdev]) == 0)
+ +
[docs]def get_loop_name(path): + '''Return the loop device associated with the path. + Raises RuntimeError if more than one loop is associated''' + buf = runcmd_output(["losetup", "-j", path]) + if len(buf.splitlines()) > 1: + # there should never be more than one loop device listed + raise RuntimeError("multiple loops associated with %s" % path) + name = os.path.basename(buf.split(":")[0]) + return name
+ +
[docs]def dm_attach(dev, size, name=None): + '''Attach a devicemapper device to the given device, with the given size. + If name is None, a random name will be chosen. Returns the device name. + raises CalledProcessError if dmsetup fails.''' + if name is None: + name = tempfile.mktemp(prefix="lorax.imgutils.", dir="") + runcmd(["dmsetup", "create", name, "--table", + "0 %i linear %s 0" % (size/512, dev)]) + return name
+ +
[docs]def dm_detach(dev): + '''Detach the named devicemapper device. Returns False if dmsetup fails.''' + dev = dev.replace("/dev/mapper/", "") # strip prefix, if it's there + return execWithRedirect("dmsetup", ["remove", dev])
+ +
[docs]def mount(dev, opts="", mnt=None): + '''Mount the given device at the given mountpoint, using the given opts. + opts should be a comma-separated string of mount options. + if mnt is none, a temporary directory will be created and its path will be + returned. + raises CalledProcessError if mount fails.''' + if mnt is None: + mnt = tempfile.mkdtemp(prefix="lorax.imgutils.") + logger.debug("make tmp mountdir %s", mnt) + cmd = ["mount"] + if opts: + cmd += ["-o", opts] + cmd += [dev, mnt] + runcmd(cmd) + return mnt
+ +
[docs]def umount(mnt, lazy=False, maxretry=3, retrysleep=1.0, delete=True): + '''Unmount the given mountpoint. If lazy is True, do a lazy umount (-l). + If the mount was a temporary dir created by mount, it will be deleted. + raises CalledProcessError if umount fails.''' + cmd = ["umount"] + if lazy: cmd += ["-l"] + cmd += [mnt] + count = 0 + while maxretry > 0: + try: + rv = runcmd(cmd) + except CalledProcessError: + count += 1 + if count == maxretry: + raise + logger.warning("failed to unmount %s. retrying (%d/%d)...", + mnt, count, maxretry) + if logger.getEffectiveLevel() <= logging.DEBUG: + fuser = execWithCapture("fuser", ["-vm", mnt]) + logger.debug("fuser -vm:\n%s\n", fuser) + sleep(retrysleep) + else: + break + if delete and 'lorax.imgutils' in mnt: + os.rmdir(mnt) + logger.debug("remove tmp mountdir %s", mnt) + return (rv == 0)
+ +
[docs]def copytree(src, dest, preserve=True): + '''Copy a tree of files using cp -a, thus preserving modes, timestamps, + links, acls, sparse files, xattrs, selinux contexts, etc. + If preserve is False, uses cp -R (useful for modeless filesystems) + raises CalledProcessError if copy fails.''' + logger.debug("copytree %s %s", src, dest) + cp = ["cp", "-a"] if preserve else ["cp", "-R", "-L", "--preserve=timestamps"] + cp += [join(src, "."), os.path.abspath(dest)] + runcmd(cp)
+ +
[docs]def do_grafts(grafts, dest, preserve=True): + '''Copy each of the items listed in grafts into dest. + If the key ends with '/' it's assumed to be a directory which should be + created, otherwise just the leading directories will be created.''' + for imgpath, filename in grafts.items(): + if imgpath[-1] == '/': + targetdir = join(dest, imgpath) + imgpath = imgpath[:-1] + else: + targetdir = join(dest, dirname(imgpath)) + if not os.path.isdir(targetdir): + os.makedirs(targetdir) + if os.path.isdir(filename): + copytree(filename, join(dest, imgpath), preserve) + else: + cpfile(filename, join(dest, imgpath))
+ +
[docs]def round_to_blocks(size, blocksize): + '''If size isn't a multiple of blocksize, round up to the next multiple''' + diff = size % blocksize + if diff or not size: + size += blocksize - diff + return size
+ +# TODO: move filesystem data outside this function +
[docs]def estimate_size(rootdir, graft=None, fstype=None, blocksize=4096, overhead=256): + graft = graft or {} + getsize = lambda f: os.lstat(f).st_size + if fstype == "btrfs": + overhead = 64*1024 # don't worry, it's all sparse + if fstype == "hfsplus": + overhead = 200 # hack to deal with two bootloader copies + if fstype in ("vfat", "msdos"): + blocksize = 2048 + getsize = lambda f: os.stat(f).st_size # no symlinks, count as copies + total = overhead*blocksize + dirlist = list(graft.values()) + if rootdir: + dirlist.append(rootdir) + for root in dirlist: + for top, dirs, files in os.walk(root): + for f in files + dirs: + total += round_to_blocks(getsize(join(top,f)), blocksize) + if fstype == "btrfs": + total = max(256*1024*1024, total) # btrfs minimum size: 256MB + logger.info("Size of %s block %s fs at %s estimated to be %s", blocksize, fstype, rootdir, total) + return total
+ +######## Execution contexts - use with the 'with' statement ############## + +
[docs]class LoopDev(object): + def __init__(self, filename, size=None): + self.loopdev = None + self.filename = filename + if size: + mksparse(self.filename, size) + def __enter__(self): + self.loopdev = loop_attach(self.filename) + return self.loopdev + def __exit__(self, exc_type, exc_value, tracebk): + loop_detach(self.loopdev)
+ +
[docs]class DMDev(object): + def __init__(self, dev, size, name=None): + self.mapperdev = None + (self.dev, self.size, self.name) = (dev, size, name) + def __enter__(self): + self.mapperdev = dm_attach(self.dev, self.size, self.name) + return self.mapperdev + def __exit__(self, exc_type, exc_value, tracebk): + dm_detach(self.mapperdev)
+ +
[docs]class Mount(object): + def __init__(self, dev, opts="", mnt=None): + (self.dev, self.opts, self.mnt) = (dev, opts, mnt) + def __enter__(self): + self.mnt = mount(self.dev, self.opts, self.mnt) + return self.mnt + def __exit__(self, exc_type, exc_value, tracebk): + umount(self.mnt)
+ +
[docs]def kpartx_disk_img(disk_img): + """Attach a disk image's partitions to /dev/loopX using kpartx + + :param disk_img: The full path to a partitioned disk image + :type disk_img: str + :returns: list of (loopXpN, size) + :rtype: list of tuples + """ + # Example kpartx output + # kpartx -p p -v -a /tmp/diskV2DiCW.im + # add map loop2p1 (253:2): 0 3481600 linear /dev/loop2 2048 + # add map loop2p2 (253:3): 0 614400 linear /dev/loop2 3483648 + kpartx_output = runcmd_output(["kpartx", "-v", "-a", "-s", disk_img]) + logger.debug(kpartx_output) + + # list of (deviceName, sizeInBytes) + loop_devices = [] + for line in kpartx_output.splitlines(): + # add map loop2p3 (253:4): 0 7139328 linear /dev/loop2 528384 + # 3rd element is size in 512 byte blocks + if line.startswith("add map "): + fields = line[8:].split() + loop_devices.append( (fields[0], int(fields[3])*512) ) + return loop_devices
+ +
[docs]class PartitionMount(object): + """ Mount a partitioned image file using kpartx """ + def __init__(self, disk_img, mount_ok=None, submount=None): + """ + :param str disk_img: The full path to a partitioned disk image + :param mount_ok: A function that is passed the mount point and + returns True if it should be mounted. + :param str submount: Directory inside mount_dir to mount at + + If mount_ok is not set it will look for /etc/passwd + + If the partition is found it will be mounted under a temporary + directory and self.temp_dir set to it. If submount is passed it will be + created and mounted there instead, with self.mount_dir set to point to + it. self.mount_dev is set to the loop device, and self.mount_size is + set to the size of the partition. + + When no subdir is passed self.temp_dir and self.mount_dir will be the same. + """ + self.mount_dev = None + self.mount_size = None + self.mount_dir = None + self.disk_img = disk_img + self.mount_ok = mount_ok + self.submount = submount + self.temp_dir = None + + # Default is to mount partition with /etc/passwd + if not self.mount_ok: + self.mount_ok = lambda mount_dir: os.path.isfile(mount_dir+"/etc/passwd") + + # list of (deviceName, sizeInBytes) + self.loop_devices = kpartx_disk_img(self.disk_img) + + def __enter__(self): + # Mount the device selected by mount_ok, if possible + self.temp_dir = tempfile.mkdtemp() + if self.submount: + mount_dir = os.path.normpath(os.path.sep.join([self.temp_dir, self.submount])) + os.makedirs(mount_dir, mode=0o755, exist_ok=True) + else: + mount_dir = self.temp_dir + for dev, size in self.loop_devices: + try: + mount( "/dev/mapper/"+dev, mnt=mount_dir ) + if self.mount_ok(mount_dir): + self.mount_dir = mount_dir + self.mount_dev = dev + self.mount_size = size + break + umount( mount_dir ) + except CalledProcessError: + logger.debug(traceback.format_exc()) + if self.mount_dir: + logger.info("Partition mounted on %s size=%s", self.mount_dir, self.mount_size) + else: + logger.debug("Unable to mount anything from %s", self.disk_img) + os.rmdir(self.temp_dir) + self.temp_dir = None + return self + + def __exit__(self, exc_type, exc_value, tracebk): + if self.temp_dir: + umount(self.mount_dir) + shutil.rmtree(self.temp_dir) + self.mount_dir = None + self.temp_dir = None + execWithRedirect("kpartx", ["-d", "-s", self.disk_img])
+ + +
[docs]class DracutChroot(object): + """Setup the chroot for running dracut inside it, cleanup when done + + This mount /proc, /dev, and /var/tmp plus optional bind mounted directories + as a list of (source, destination) tuples where destination is relative to the chroot. + """ + def __init__(self, root, bind=None): + self.root = root + self.bind = [("/var/tmp", "/var/tmp")] + (bind if bind else []) + + def __enter__(self): + for d in [d for _, d in self.bind] + ["/proc", "/dev"]: + if not os.path.exists(self.root + d): + logger.warning("Making missing dracut chroot directory: %s", d) + os.makedirs(self.root + d) + + runcmd(["mount", "-t", "proc", "-o", "nosuid,noexec,nodev", "proc", self.root + "/proc" ]) + runcmd(["mount", "-t", "devtmpfs", "-o", "mode=0755,noexec,nosuid,strictatime", "devtmpfs", self.root + "/dev" ]) + + for s, d in self.bind: + runcmd(["mount", "-o", "bind", s, self.root + d]) + + return self + + def __exit__(self, exc_type, exc_value, tracebk): + runcmd(["umount", self.root + "/proc" ]) + runcmd(["umount", self.root + "/dev" ]) + + # cleanup bind mounts + for _, d in self.bind: + runcmd(["umount", self.root + d ]) + +
[docs] def Run(self, args): + runcmd(["dracut"] + args, root=self.root)
+ + +######## Functions for making filesystem images ########################## + +
[docs]def mkfsimage(fstype, rootdir, outfile, size=None, mkfsargs=None, mountargs="", graft=None): + '''Generic filesystem image creation function. + fstype should be a filesystem type - "mkfs.${fstype}" must exist. + graft should be a dict: {"some/path/in/image": "local/file/or/dir"}; + if the path ends with a '/' it's assumed to be a directory. + Will raise CalledProcessError if something goes wrong.''' + mkfsargs = mkfsargs or [] + graft = graft or {} + preserve = (fstype not in ("msdos", "vfat")) + if not size: + size = estimate_size(rootdir, graft, fstype) + with LoopDev(outfile, size) as loopdev: + try: + runcmd(["mkfs.%s" % fstype] + mkfsargs + [loopdev]) + except CalledProcessError as e: + logger.error("mkfs exited with a non-zero return code: %d", e.returncode) + logger.error(e.output) + sys.exit(e.returncode) + + with Mount(loopdev, mountargs) as mnt: + if rootdir: + copytree(rootdir, mnt, preserve) + do_grafts(graft, mnt, preserve) + + # Save information about filesystem usage + execWithRedirect("df", [mnt]) + + # Make absolutely sure that the data has been written + runcmd(["sync"])
+ +# convenience functions with useful defaults +
[docs]def mkdosimg(rootdir, outfile, size=None, label="", mountargs="shortname=winnt,umask=0077", graft=None): + graft = graft or {} + mkfsargs = ["-n", label] + if 'SOURCE_DATE_EPOCH' in os.environ: + mkfsargs.extend(["-i", + "{:x}".format(int(os.environ['SOURCE_DATE_EPOCH']))]) + mkfsimage("msdos", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=mkfsargs, graft=graft)
+ +
[docs]def mkext4img(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("ext4", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label, "-b", "4096", "-m", "0"], graft=graft)
+ +
[docs]def mkbtrfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("btrfs", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label], graft=graft)
+ +
[docs]def mkhfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("hfsplus", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-v", label], graft=graft)
+ +
[docs]def mkfsimage_from_disk(diskimage, fsimage, img_size=None, label="Anaconda"): + """ + Copy the / partition of a partitioned disk image to an un-partitioned + disk image. + + :param str diskimage: The full path to partitioned disk image with a / + :param str fsimage: The full path of the output fs image file + :param int img_size: Optional size of the fsimage in MiB or None to make + it as small as possible + :param str label: The label to apply to the image. Defaults to "Anaconda" + """ + with PartitionMount(diskimage) as img_mount: + if not img_mount or not img_mount.mount_dir: + return None + + logger.info("Creating fsimage %s (%s)", fsimage, img_size or "minimized") + if img_size: + # convert to Bytes + img_size *= 1024**2 + + mkext4img(img_mount.mount_dir, fsimage, size=img_size, label=label)
+ +
[docs]def default_image_name(compression, basename): + """ Return a default image name with the correct suffix for the compression type. + + :param str compression: Compression type + :param str basename: Base filename + :returns: basename with compression suffix + + If the compression is unknown it defaults to xz + """ + SUFFIXES = {"xz": ".xz", "gzip": ".gz", "bzip2": ".bz2", "lzma": ".lzma"} + return basename + SUFFIXES.get(compression, ".xz")
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/installer.html b/f35-branch/_modules/pylorax/installer.html new file mode 100644 index 00000000..9d6840a6 --- /dev/null +++ b/f35-branch/_modules/pylorax/installer.html @@ -0,0 +1,888 @@ + + + + + + + + + + pylorax.installer — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.installer

+#
+# Copyright (C) 2011-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import glob
+import json
+from math import ceil
+import os
+import subprocess
+import shutil
+import socket
+import tempfile
+
+# Use the Lorax treebuilder branch for iso creation
+from pylorax.executils import execWithRedirect, execReadlines
+from pylorax.imgutils import PartitionMount, mksparse, mkext4img, loop_detach
+from pylorax.imgutils import get_loop_name, dm_detach, mount, umount
+from pylorax.imgutils import mkqemu_img, mktar, mkcpio, mkfsimage_from_disk
+from pylorax.monitor import LogMonitor
+from pylorax.mount import IsoMountpoint
+from pylorax.sysutils import joinpaths
+from pylorax.treebuilder import udev_escape
+
+
+ROOT_PATH = "/mnt/sysimage/"
+
+
[docs]class InstallError(Exception): + pass
+ + +
[docs]def create_vagrant_metadata(path, size=0): + """ Create a default Vagrant metadata.json file + + :param str path: Path to metadata.json file + :param int size: Disk size in MiB + """ + metadata = { "provider":"libvirt", "format":"qcow2", "virtual_size": ceil(size / 1024) } + with open(path, "wt") as f: + json.dump(metadata, f, indent=4)
+ + +
[docs]def update_vagrant_metadata(path, size): + """ Update the Vagrant metadata.json file + + :param str path: Path to metadata.json file + :param int size: Disk size in MiB + + This function makes sure that the provider, format and virtual size of the + metadata file are set correctly. All other values are left untouched. + """ + with open(path, "rt") as f: + try: + metadata = json.load(f) + except ValueError as e: + log.error("Problem reading metadata file %s: %s", path, e) + return + + metadata["provider"] = "libvirt" + metadata["format"] = "qcow2" + metadata["virtual_size"] = ceil(size / 1024) + with open(path, "wt") as f: + json.dump(metadata, f, indent=4)
+ + +
[docs]def find_free_port(start=5900, end=5999, host="127.0.0.1"): + """ Return first free port in range. + + :param int start: Starting port number + :param int end: Ending port number + :param str host: Host IP to search + :returns: First free port or -1 if none found + :rtype: int + """ + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + for port in range(start, end+1): + try: + s.bind((host, port)) + s.close() + return port + except OSError: + pass + + return -1
+ +
[docs]def append_initrd(initrd, files): + """ Append files to an initrd. + + :param str initrd: Path to initrd + :param list files: list of file paths to add + :returns: Path to a new initrd + :rtype: str + + The files are added to the initrd by creating a cpio image + of the files (stored at /) and writing the cpio to the end of a + copy of the initrd. + + The initrd is not changed, a copy is made before appending the + cpio archive. + """ + qemu_initrd = tempfile.mktemp(prefix="lmc-initrd-", suffix=".img") + shutil.copy2(initrd, qemu_initrd) + ks_dir = tempfile.mkdtemp(prefix="lmc-ksdir-") + for ks in files: + shutil.copy2(ks, ks_dir) + ks_initrd = tempfile.mktemp(prefix="lmc-ks-", suffix=".img") + mkcpio(ks_dir, ks_initrd) + shutil.rmtree(ks_dir) + with open(qemu_initrd, "ab") as initrd_fp: + with open(ks_initrd, "rb") as ks_fp: + while True: + data = ks_fp.read(1024**2) + if not data: + break + initrd_fp.write(data) + os.unlink(ks_initrd) + + return qemu_initrd
+ +
[docs]class QEMUInstall(object): + """ + Run qemu using an iso and a kickstart + """ + # Mapping of arch to qemu command + QEMU_CMDS = {"x86_64": "qemu-system-x86_64", + "i386": "qemu-system-i386", + "arm": "qemu-system-arm", + "aarch64": "qemu-system-aarch64", + "ppc64le": "qemu-system-ppc64" + } + + def __init__(self, opts, iso, ks_paths, disk_img, img_size=2048, + kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None, + cancel_func=None, virtio_host="127.0.0.1", virtio_port=6080, + image_type=None, boot_uefi=False, ovmf_path=None): + """ + Start the installation + + :param iso: Information about the iso to use for the installation + :type iso: IsoMountpoint + :param list ks_paths: Paths to kickstart files. All are injected, the + first one is the one executed. + :param str disk_img: Path to a disk image, created it it doesn't exist + :param int img_size: The image size, in MiB, to create if it doesn't exist + :param str kernel_args: Extra kernel arguments to pass on the kernel cmdline + :param int memory: Amount of RAM to assign to the virt, in MiB + :param int vcpus: Number of virtual cpus + :param str vnc: Arguments to pass to qemu -display + :param str arch: Optional architecture to use in the virt + :param cancel_func: Function that returns True if the installation fails + :type cancel_func: function + :param str virtio_host: Hostname to connect virtio log to + :param int virtio_port: Port to connect virtio log to + :param str image_type: Type of qemu-img disk to create, or None. + :param bool boot_uefi: Use OVMF to boot the VM in UEFI mode + :param str ovmf_path: Path to the OVMF firmware + """ + # Lookup qemu-system- for arch if passed, or try to guess using host arch + qemu_cmd = [self.QEMU_CMDS.get(arch or os.uname().machine, "qemu-system-"+os.uname().machine)] + if not os.path.exists("/usr/bin/"+qemu_cmd[0]): + raise InstallError("%s does not exist, cannot run qemu" % qemu_cmd[0]) + + qemu_cmd += ["-no-user-config"] + qemu_cmd += ["-m", str(memory)] + if vcpus: + qemu_cmd += ["-smp", str(vcpus)] + + if not opts.no_kvm and os.path.exists("/dev/kvm"): + qemu_cmd += ["-machine", "accel=kvm"] + + if boot_uefi: + qemu_cmd += ["-machine", "q35,smm=on"] + qemu_cmd += ["-global", "driver=cfi.pflash01,property=secure,value=on"] + + # Copy the initrd from the iso, create a cpio archive of the kickstart files + # and append it to the temporary initrd. + qemu_initrd = append_initrd(iso.initrd, ks_paths) + qemu_cmd += ["-kernel", iso.kernel] + qemu_cmd += ["-initrd", qemu_initrd] + + # Add the disk and cdrom + if not os.path.isfile(disk_img): + mksparse(disk_img, img_size * 1024**2) + drive_args = "file=%s" % disk_img + drive_args += ",cache=unsafe,discard=unmap" + if image_type: + drive_args += ",format=%s" % image_type + else: + drive_args += ",format=raw" + qemu_cmd += ["-drive", drive_args] + + drive_args = "file=%s,media=cdrom,readonly=on" % iso.iso_path + qemu_cmd += ["-drive", drive_args] + + # Setup the cmdline args + # ====================== + cmdline_args = "ks=file:/%s" % os.path.basename(ks_paths[0]) + cmdline_args += " inst.stage2=hd:LABEL=%s" % udev_escape(iso.label) + if opts.proxy: + cmdline_args += " inst.proxy=%s" % opts.proxy + if kernel_args: + cmdline_args += " "+kernel_args + cmdline_args += " inst.text inst.cmdline" + + qemu_cmd += ["-append", cmdline_args] + + if not opts.vnc: + vnc_port = find_free_port() + if vnc_port == -1: + raise InstallError("No free VNC ports") + display_args = "vnc=127.0.0.1:%d" % (vnc_port - 5900) + else: + display_args = opts.vnc + log.info("qemu %s", display_args) + qemu_cmd += ["-nographic", "-monitor", "none", "-serial", "null", "-display", display_args ] + + # Setup the virtio log port + qemu_cmd += ["-device", "virtio-serial-pci,id=virtio-serial0"] + qemu_cmd += ["-device", "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0" + ",id=channel0,name=org.fedoraproject.anaconda.log.0"] + qemu_cmd += ["-chardev", "socket,id=charchannel0,host=%s,port=%s" % (virtio_host, virtio_port)] + + # Pass through rng from host + if opts.with_rng != "none": + qemu_cmd += ["-object", "rng-random,id=virtio-rng0,filename=%s" % opts.with_rng] + if boot_uefi: + qemu_cmd += ["-device", "virtio-rng-pci,rng=virtio-rng0,id=rng0,bus=pcie.0,addr=0x9"] + else: + qemu_cmd += ["-device", "virtio-rng-pci,rng=virtio-rng0,id=rng0,bus=pci.0,addr=0x9"] + + if boot_uefi and ovmf_path: + qemu_cmd += ["-drive", "file=%s/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on" % ovmf_path] + + # Make a copy of the OVMF_VARS.secboot.fd for this run + ovmf_vars = tempfile.mktemp(prefix="lmc-OVMF_VARS-", suffix=".fd") + shutil.copy2(joinpaths(ovmf_path, "/OVMF_VARS.secboot.fd"), ovmf_vars) + + qemu_cmd += ["-drive", "file=%s,if=pflash,format=raw,unit=1" % ovmf_vars] + + log.info("Running qemu") + log.debug(qemu_cmd) + try: + execWithRedirect(qemu_cmd[0], qemu_cmd[1:], reset_lang=False, raise_err=True, + callback=lambda p: not (cancel_func and cancel_func())) + except subprocess.CalledProcessError as e: + log.error("Running qemu failed:") + log.error("cmd: %s", " ".join(e.cmd)) + log.error("output: %s", e.output or "") + raise InstallError("QEMUInstall failed") + except (OSError, KeyboardInterrupt) as e: + log.error("Running qemu failed: %s", str(e)) + raise InstallError("QEMUInstall failed") + finally: + os.unlink(qemu_initrd) + if boot_uefi and ovmf_path: + os.unlink(ovmf_vars) + + if cancel_func and cancel_func(): + log.error("Installation error detected. See logfile for details.") + raise InstallError("QEMUInstall failed") + else: + log.info("Installation finished without errors.")
+ + +
[docs]def novirt_cancel_check(cancel_funcs, proc): + """ + Check to see if there has been an error in the logs + + :param cancel_funcs: list of functions to call, True from any one cancels the build + :type cancel_funcs: list + :param proc: Popen object for the anaconda process + :type proc: subprocess.Popen + :returns: True if the process has been terminated + + The cancel_funcs functions should return a True if an error has been detected. + When an error is detected the process is terminated and this returns True + """ + for f in cancel_funcs: + if f(): + # Anaconda runs from unshare, anaconda doesn't exit correctly so try to + # send TERM to all of them directly + import psutil + for p in psutil.Process(proc.pid).children(recursive=True): + p.terminate() + psutil.Process(proc.pid).terminate() + return True + return False
+ + +
[docs]def anaconda_cleanup(dirinstall_path): + """ + Cleanup any leftover mounts from anaconda + + :param str dirinstall_path: Path where anaconda mounts things + :returns: True if cleanups were successful. False if any of them failed. + + If anaconda crashes it may leave things mounted under this path. It will + typically be set to /mnt/sysimage/ + + Attempts to cleanup may also fail. Catch these and continue trying the + other mountpoints. + + Anaconda may also leave /run/anaconda.pid behind, clean that up as well. + """ + # Anaconda may not clean up its /var/run/anaconda.pid file + # Make sure the process is really finished (it should be, since it was started from a subprocess call) + # and then remove the pid file. + if os.path.exists("/var/run/anaconda.pid"): + # anaconda may be started using unshare so the pid is always 1 + if open("/var/run/anaconda.pid").read().strip() == "1": + os.unlink("/var/run/anaconda.pid") + + rc = True + dirinstall_path = os.path.abspath(dirinstall_path) + # unmount filesystems + for mounted in reversed(open("/proc/mounts").readlines()): + (_device, mountpoint, _rest) = mounted.split(" ", 2) + if mountpoint.startswith(dirinstall_path) and os.path.ismount(mountpoint): + try: + umount(mountpoint) + except subprocess.CalledProcessError: + log.error("Cleanup of %s failed. See program.log for details", mountpoint) + rc = False + return rc
+ + +
[docs]def novirt_install(opts, disk_img, disk_size, cancel_func=None, tar_img=None): + """ + Use Anaconda to install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str disk_img: The full path to the disk image to be created + :param int disk_size: The size of the disk_img in MiB + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created + + This method runs anaconda to create the image and then based on the opts + passed creates a qemu disk image or tarfile. + """ + dirinstall_path = ROOT_PATH + + # Clean up /tmp/ from previous runs to prevent stale info from being used + for path in ["/tmp/yum.repos.d/", "/tmp/yum.cache/"]: + if os.path.isdir(path): + shutil.rmtree(path) + + args = ["--kickstart", opts.ks[0], "--cmdline"] + if opts.anaconda_args: + for arg in opts.anaconda_args: + args += arg.split(" ", 1) + if opts.proxy: + args += ["--proxy", opts.proxy] + if opts.armplatform: + args += ["--armplatform", opts.armplatform] + + if opts.make_iso or opts.make_fsimage or opts.make_pxe_live: + # Make a blank fs image + args += ["--dirinstall"] + + mkext4img(None, disk_img, label=opts.fs_label, size=disk_size * 1024**2) + if not os.path.isdir(dirinstall_path): + os.mkdir(dirinstall_path) + mount(disk_img, opts="loop", mnt=dirinstall_path) + elif opts.make_tar or opts.make_oci: + # Install under dirinstall_path, make sure it starts clean + if os.path.exists(dirinstall_path): + shutil.rmtree(dirinstall_path) + + if opts.make_oci: + # OCI installs under /rootfs/ + dirinstall_path = joinpaths(dirinstall_path, "rootfs") + args += ["--dirinstall", dirinstall_path] + else: + args += ["--dirinstall"] + + os.makedirs(dirinstall_path) + else: + args += ["--image", disk_img] + + # Create the sparse image + mksparse(disk_img, disk_size * 1024**2) + + log_monitor = LogMonitor(timeout=opts.timeout) + args += ["--remotelog", "%s:%s" % (log_monitor.host, log_monitor.port)] + cancel_funcs = [log_monitor.server.log_check] + if cancel_func is not None: + cancel_funcs.append(cancel_func) + + # Make sure anaconda has the right product and release + log.info("Running anaconda.") + try: + unshare_args = ["--pid", "--kill-child", "--mount", "--propagation", "unchanged", "anaconda"] + args + for line in execReadlines("unshare", unshare_args, reset_lang=False, + env_add={"ANACONDA_PRODUCTNAME": opts.project, + "ANACONDA_PRODUCTVERSION": opts.releasever}, + callback=lambda p: not novirt_cancel_check(cancel_funcs, p)): + log.info(line) + + # Make sure the new filesystem is correctly labeled + setfiles_args = ["-e", "/proc", "-e", "/sys", + "/etc/selinux/targeted/contexts/files/file_contexts", "/"] + + if "--dirinstall" in args: + # setfiles may not be available, warn instead of fail + try: + execWithRedirect("setfiles", setfiles_args, root=dirinstall_path) + except (subprocess.CalledProcessError, OSError) as e: + log.warning("Running setfiles on install tree failed: %s", str(e)) + else: + with PartitionMount(disk_img) as img_mount: + if img_mount and img_mount.mount_dir: + try: + execWithRedirect("setfiles", setfiles_args, root=img_mount.mount_dir) + except (subprocess.CalledProcessError, OSError) as e: + log.warning("Running setfiles on install tree failed: %s", str(e)) + + # For image installs, run fstrim to discard unused blocks. This way + # unused blocks do not need to be allocated for sparse image types + execWithRedirect("fstrim", [img_mount.mount_dir]) + + except (subprocess.CalledProcessError, OSError) as e: + log.error("Running anaconda failed: %s", e) + raise InstallError("novirt_install failed") + finally: + log_monitor.shutdown() + + # Move the anaconda logs over to a log directory + log_dir = os.path.abspath(os.path.dirname(opts.logfile)) + log_anaconda = joinpaths(log_dir, "anaconda") + if not os.path.isdir(log_anaconda): + os.mkdir(log_anaconda) + for l in glob.glob("/tmp/*log")+glob.glob("/tmp/anaconda-tb-*"): + shutil.copy2(l, log_anaconda) + os.unlink(l) + + # Make sure any leftover anaconda mounts have been cleaned up + if not anaconda_cleanup(dirinstall_path): + raise InstallError("novirt_install cleanup of anaconda mounts failed.") + + if not opts.make_iso and not opts.make_fsimage and not opts.make_pxe_live: + dm_name = os.path.splitext(os.path.basename(disk_img))[0] + + # Remove device-mapper for partitions and disk + log.debug("Removing device-mapper setup on %s", dm_name) + for d in sorted(glob.glob("/dev/mapper/"+dm_name+"*"), reverse=True): + dm_detach(d) + + log.debug("Removing loop device for %s", disk_img) + loop_detach("/dev/"+get_loop_name(disk_img)) + + # qemu disk image is used by bare qcow2 images and by Vagrant + if opts.image_type: + log.info("Converting %s to %s", disk_img, opts.image_type) + qemu_args = [] + for arg in opts.qemu_args: + qemu_args += arg.split(" ", 1) + + # convert the image to the selected format + if "-O" not in qemu_args: + qemu_args.extend(["-O", opts.image_type]) + qemu_img = tempfile.mktemp(prefix="lmc-disk-", suffix=".img") + execWithRedirect("qemu-img", ["convert"] + qemu_args + [disk_img, qemu_img], raise_err=True) + if not opts.make_vagrant: + execWithRedirect("mv", ["-f", qemu_img, disk_img], raise_err=True) + else: + # Take the new qcow2 image and package it up for Vagrant + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + vagrant_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + metadata_path = joinpaths(vagrant_dir, "metadata.json") + execWithRedirect("mv", ["-f", qemu_img, joinpaths(vagrant_dir, "box.img")], raise_err=True) + if opts.vagrant_metadata: + shutil.copy2(opts.vagrant_metadata, metadata_path) + else: + create_vagrant_metadata(metadata_path) + update_vagrant_metadata(metadata_path, disk_size) + if opts.vagrantfile: + shutil.copy2(opts.vagrantfile, joinpaths(vagrant_dir, "vagrantfile")) + + log.info("Creating Vagrant image") + rc = mktar(vagrant_dir, disk_img, opts.compression, compress_args, selinux=False) + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + shutil.rmtree(vagrant_dir) + elif opts.make_tar: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(dirinstall_path, disk_img, opts.compression, compress_args) + shutil.rmtree(dirinstall_path) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + elif opts.make_oci: + # An OCI image places the filesystem under /rootfs/ and adds the json files at the top + # And then creates a tar of the whole thing. + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + shutil.copy2(opts.oci_config, ROOT_PATH) + shutil.copy2(opts.oci_runtime, ROOT_PATH) + rc = mktar(ROOT_PATH, disk_img, opts.compression, compress_args) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + else: + # For raw disk images, use fallocate to deallocate unused space + execWithRedirect("fallocate", ["--dig-holes", disk_img], raise_err=True) + + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
+ +
[docs]def virt_install(opts, install_log, disk_img, disk_size, cancel_func=None, tar_img=None): + """ + Use qemu to install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str install_log: The path to write the log from qemu + :param str disk_img: The full path to the disk image to be created + :param int disk_size: The size of the disk_img in MiB + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created + + This uses qemu with a boot.iso and a kickstart to create a disk + image and then optionally, based on the opts passed, creates tarfile. + """ + iso_mount = IsoMountpoint(opts.iso, opts.location) + if not iso_mount.stage2: + iso_mount.umount() + raise InstallError("ISO is missing stage2, cannot continue") + + log_monitor = LogMonitor(install_log, timeout=opts.timeout) + cancel_funcs = [log_monitor.server.log_check] + if cancel_func is not None: + cancel_funcs.append(cancel_func) + + kernel_args = "" + if opts.kernel_args: + kernel_args += opts.kernel_args + if opts.proxy: + kernel_args += " proxy="+opts.proxy + + if opts.image_type and not opts.make_fsimage: + qemu_args = [] + for arg in opts.qemu_args: + qemu_args += arg.split(" ", 1) + if "-f" not in qemu_args: + qemu_args += ["-f", opts.image_type] + + mkqemu_img(disk_img, disk_size*1024**2, qemu_args) + + if opts.make_fsimage or opts.make_tar or opts.make_oci: + diskimg_path = tempfile.mktemp(prefix="lmc-disk-", suffix=".img") + else: + diskimg_path = disk_img + + try: + QEMUInstall(opts, iso_mount, opts.ks, diskimg_path, disk_size, + kernel_args, opts.ram, opts.vcpus, opts.vnc, opts.arch, + cancel_func = lambda : any(f() for f in cancel_funcs), + virtio_host = log_monitor.host, + virtio_port = log_monitor.port, + image_type=opts.image_type, boot_uefi=opts.virt_uefi, + ovmf_path=opts.ovmf_path) + log_monitor.shutdown() + except InstallError as e: + log.error("VirtualInstall failed: %s", e) + raise + finally: + log.info("unmounting the iso") + iso_mount.umount() + + if log_monitor.server.log_check(): + if not log_monitor.server.error_line and opts.timeout: + msg = "virt_install failed due to timeout" + else: + msg = "virt_install failed on line: %s" % log_monitor.server.error_line + raise InstallError(msg) + elif cancel_func and cancel_func(): + raise InstallError("virt_install canceled by cancel_func") + + if opts.make_fsimage: + mkfsimage_from_disk(diskimg_path, disk_img, disk_size, label=opts.fs_label) + os.unlink(diskimg_path) + elif opts.make_tar: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + with PartitionMount(diskimg_path) as img_mount: + if img_mount and img_mount.mount_dir: + rc = mktar(img_mount.mount_dir, disk_img, opts.compression, compress_args) + else: + rc = 1 + os.unlink(diskimg_path) + + if rc: + raise InstallError("virt_install failed") + elif opts.make_oci: + # An OCI image places the filesystem under /rootfs/ and adds the json files at the top + # And then creates a tar of the whole thing. + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + with PartitionMount(diskimg_path, submount="rootfs") as img_mount: + if img_mount and img_mount.temp_dir: + shutil.copy2(opts.oci_config, img_mount.temp_dir) + shutil.copy2(opts.oci_runtime, img_mount.temp_dir) + rc = mktar(img_mount.temp_dir, disk_img, opts.compression, compress_args) + else: + rc = 1 + os.unlink(diskimg_path) + + if rc: + raise InstallError("virt_install failed") + elif opts.make_vagrant: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + vagrant_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + metadata_path = joinpaths(vagrant_dir, "metadata.json") + execWithRedirect("mv", ["-f", disk_img, joinpaths(vagrant_dir, "box.img")], raise_err=True) + if opts.vagrant_metadata: + shutil.copy2(opts.vagrant_metadata, metadata_path) + else: + create_vagrant_metadata(metadata_path) + update_vagrant_metadata(metadata_path, disk_size) + if opts.vagrantfile: + shutil.copy2(opts.vagrantfile, joinpaths(vagrant_dir, "vagrantfile")) + + rc = mktar(vagrant_dir, disk_img, opts.compression, compress_args, selinux=False) + if rc: + raise InstallError("virt_install failed") + shutil.rmtree(vagrant_dir) + + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("virt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/ltmpl.html b/f35-branch/_modules/pylorax/ltmpl.html new file mode 100644 index 00000000..679aeff6 --- /dev/null +++ b/f35-branch/_modules/pylorax/ltmpl.html @@ -0,0 +1,1091 @@ + + + + + + + + + + pylorax.ltmpl — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.ltmpl

+#
+# ltmpl.py
+#
+# Copyright (C) 2009-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.ltmpl")
+
+import os, re, glob, shlex, fnmatch
+from os.path import basename, isdir
+from subprocess import CalledProcessError
+import shutil
+
+from pylorax.sysutils import joinpaths, cpfile, mvfile, replace, remove
+from pylorax.dnfhelper import LoraxDownloadCallback, LoraxRpmCallback
+from pylorax.base import DataHolder
+from pylorax.executils import runcmd, runcmd_output
+from pylorax.imgutils import mkcpio
+
+from mako.lookup import TemplateLookup
+from mako.exceptions import text_error_template
+import sys, traceback
+import struct
+import dnf
+import collections.abc
+
+
[docs]class LoraxTemplate(object): + def __init__(self, directories=None): + directories = directories or ["/usr/share/lorax"] + # we have to add ["/"] to the template lookup directories or the + # file includes won't work properly for absolute paths + self.directories = ["/"] + directories + +
[docs] def parse(self, template_file, variables): + lookup = TemplateLookup(directories=self.directories) + template = lookup.get_template(template_file) + + try: + textbuf = template.render(**variables) + except: + logger.error("Problem rendering %s (%s):", template_file, variables) + logger.error(text_error_template().render()) + raise + + # split, strip and remove empty lines + lines = textbuf.splitlines() + lines = [line.strip() for line in lines] + lines = [line for line in lines if line] + + # remove comments + lines = [line for line in lines if not line.startswith("#")] + + # split with shlex and perform brace expansion. This can fail, so we unroll the loop + # for better error reporting. + expanded_lines = [] + try: + for line in lines: + expanded_lines.append(split_and_expand(line)) + except Exception as e: + logger.error('shlex error processing "%s": %s', line, str(e)) + raise + return expanded_lines
+ +
[docs]def split_and_expand(line): + return [exp for word in shlex.split(line) for exp in brace_expand(word)]
+ +
[docs]def brace_expand(s): + if not ('{' in s and ',' in s and '}' in s): + yield s + else: + right = s.find('}') + left = s[:right].rfind('{') + (prefix, choices, suffix) = (s[:left], s[left+1:right], s[right+1:]) + for choice in choices.split(','): + for alt in brace_expand(prefix+choice+suffix): + yield alt
+ +
[docs]def rglob(pathname, root="/", fatal=False): + seen = set() + rootlen = len(root)+1 + for f in glob.iglob(joinpaths(root, pathname)): + if f not in seen: + seen.add(f) + yield f[rootlen:] # remove the root to produce relative path + if fatal and not seen: + raise IOError("nothing matching %s in %s" % (pathname, root))
+ +
[docs]def rexists(pathname, root=""): + # Generator is always True, even with no values; + # bool(rglob(...)) won't work here. + for _path in rglob(pathname, root): + return True + return False
+ +
[docs]class TemplateRunner(object): + ''' + This class parses and executes Lorax templates. Sample usage: + + # install a bunch of packages + runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj) + runner.run("install-packages.ltmpl") + + NOTES: + + * Parsing procedure is roughly: + 1. Mako template expansion (on the whole file) + 2. For each line of the result, + + a. Whitespace splitting (using shlex.split()) + b. Brace expansion (using brace_expand()) + c. If the first token is the name of a function, call that function + with the rest of the line as arguments + + * Parsing and execution are *separate* passes - so you can't use the result + of a command in an %if statement (or any other control statements)! + ''' + def __init__(self, fatalerrors=True, templatedir=None, defaults=None, builtins=None): + self.fatalerrors = fatalerrors + self.templatedir = templatedir or "/usr/share/lorax" + self.templatefile = None + self.builtins = builtins or {} + self.defaults = defaults or {} + + +
[docs] def run(self, templatefile, **variables): + for k,v in list(self.defaults.items()) + list(self.builtins.items()): + variables.setdefault(k,v) + logger.debug("executing %s with variables=%s", templatefile, variables) + self.templatefile = templatefile + t = LoraxTemplate(directories=[self.templatedir]) + commands = t.parse(templatefile, variables) + self._run(commands)
+ + + def _run(self, parsed_template): + logger.info("running %s", self.templatefile) + for (num, line) in enumerate(parsed_template,1): + logger.debug("template line %i: %s", num, " ".join(line)) + skiperror = False + (cmd, args) = (line[0], line[1:]) + # Following Makefile convention, if the command is prefixed with + # a dash ('-'), we'll ignore any errors on that line. + if cmd.startswith('-'): + cmd = cmd[1:] + skiperror = True + try: + # grab the method named in cmd and pass it the given arguments + f = getattr(self, cmd, None) + if cmd[0] == '_' or cmd == 'run' or not isinstance(f, collections.abc.Callable): + raise ValueError("unknown command %s" % cmd) + f(*args) + except Exception: # pylint: disable=broad-except + if skiperror: + logger.debug("ignoring error") + continue + logger.error("template command error in %s:", self.templatefile) + logger.error(" %s", " ".join(line)) + # format the exception traceback + exclines = traceback.format_exception(*sys.exc_info()) + # skip the bit about "ltmpl.py, in _run()" - we know that + exclines.pop(1) + # log the "ErrorType: this is what happened" line + logger.error(" %s", exclines[-1].strip()) + # and log the entire traceback to the debug log + for _line in ''.join(exclines).splitlines(): + logger.debug(" %s", _line) + if self.fatalerrors: + raise
+ + +# TODO: operate inside an actual chroot for safety? Not that RPM bothers.. +
[docs]class LoraxTemplateRunner(TemplateRunner): + ''' + This class parses and executes Lorax templates. Sample usage: + + # install a bunch of packages + runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj) + runner.run("install-packages.ltmpl") + + # modify a runtime dir + runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun) + runner.run("runtime-transmogrify.ltmpl") + + NOTES: + + * Commands that run external programs (e.g. systemctl) currently use + the *host*'s copy of that program, which may cause problems if there's a + big enough difference between the host and the image you're modifying. + + * The commands are not executed under a real chroot, so absolute symlinks + will point *outside* the inroot/outroot. Be careful with symlinks! + + ADDING NEW COMMANDS: + + * Each template command is just a method of the LoraxTemplateRunner + object - so adding a new command is as easy as adding a new function. + + * Each function gets arguments that correspond to the rest of the tokens + on that line (after word splitting and brace expansion) + + * Commands should raise exceptions for errors - don't use sys.exit() + ''' + def __init__(self, inroot, outroot, dbo=None, fatalerrors=True, + templatedir=None, defaults=None): + self.inroot = inroot + self.outroot = outroot + self.dbo = dbo + builtins = DataHolder(exists=lambda p: rexists(p, root=inroot), + glob=lambda g: list(rglob(g, root=inroot))) + self.results = DataHolder(treeinfo=dict()) # just treeinfo for now + + super(LoraxTemplateRunner, self).__init__(fatalerrors, templatedir, defaults, builtins) + # TODO: set up custom logger with a filter to add line info + + def _out(self, path): + return joinpaths(self.outroot, path) + def _in(self, path): + return joinpaths(self.inroot, path) + + def _filelist(self, *pkgs): + """ Return the list of files in the packages """ + pkglist = [] + for pkg_glob in pkgs: + pkglist += list(self.dbo.sack.query().installed().filter(name__glob=pkg_glob)) + + # dnf/hawkey doesn't make any distinction between file, dir or ghost like yum did + # so only return the files. + return set(f for pkg in pkglist for f in pkg.files if not os.path.isdir(self._out(f))) + + def _getsize(self, *files): + return sum(os.path.getsize(self._out(f)) for f in files if os.path.isfile(self._out(f))) + + def _write_package_log(self): + """ + Write the list of installed packages to /root/ on the boot.iso + + If lorax is called with a debug repo find the corresponding debuginfo package + names and write them to /root/debubg-pkgs.log on the boot.iso + The non-debuginfo packages are written to /root/lorax-packages.log + """ + os.makedirs(self._out("root/"), exist_ok=True) + available = self.dbo.sack.query().available() + pkgs = [] + debug_pkgs = [] + for p in list(self.dbo.transaction.install_set): + pkgs.append(f"{p.name}-{p.version}-{p.release}.{p.arch}") + if available.filter(name=p.name+"-debuginfo"): + debug_pkgs.append(f"{p.name}-debuginfo-{p.epoch}:{p.version}-{p.release}") + + with open(self._out("root/lorax-packages.log"), "w") as f: + f.write("\n".join(sorted(pkgs))) + f.write("\n") + + if debug_pkgs: + with open(self._out("root/debug-pkgs.log"), "w") as f: + f.write("\n".join(sorted(debug_pkgs))) + f.write("\n") + +
[docs] def install(self, srcglob, dest): + ''' + install SRC DEST + Copy the given file (or files, if a glob is used) from the input + tree to the given destination in the output tree. + The path to DEST must exist in the output tree. + If DEST is a directory, SRC will be copied into that directory. + If DEST doesn't exist, SRC will be copied to a file with that name, + assuming the rest of the path exists. + This is pretty much like how the 'cp' command works. + + Examples: + install usr/share/myconfig/grub.conf /boot + install /usr/share/myconfig/grub.conf.in /boot/grub.conf + ''' + for src in rglob(self._in(srcglob), fatal=True): + try: + cpfile(src, self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def installimg(self, *args): + ''' + installimg [--xz|--gzip|--bzip2|--lzma] [-ARG|--ARG=OPTION] SRCDIR DESTFILE + Create a compressed cpio archive of the contents of SRCDIR and place + it in DESTFILE. + + If SRCDIR doesn't exist or is empty nothing is created. + + Examples: + installimg ${LORAXDIR}/product/ images/product.img + installimg ${LORAXDIR}/updates/ images/updates.img + installimg --xz -6 ${LORAXDIR}/updates/ images/updates.img + installimg --xz -9 --memlimit-compress=3700MiB ${LORAXDIR}/updates/ images/updates.img + + Optionally use a different compression type and override the default args + passed to it. The default is xz -9 + ''' + COMPRESSORS = ("--xz", "--gzip", "--bzip2", "--lzma") + if len(args) < 2: + raise ValueError("Not enough args for installimg.") + + srcdir = args[-2] + destfile = args[-1] + if not os.path.isdir(self._in(srcdir)) or not os.listdir(self._in(srcdir)): + return + + compression = "xz" + compressargs = [] + if args[0] in COMPRESSORS: + compression = args[0][2:] + + for arg in args[1:-2]: + if arg.startswith('-'): + compressargs.append(arg) + else: + raise ValueError("Argument is missing -") + + logger.info("Creating image file %s from contents of %s", self._out(destfile), self._in(srcdir)) + logger.debug("Using %s %s compression", compression, compressargs or "") + mkcpio(self._in(srcdir), self._out(destfile), compression=compression, compressargs=compressargs)
+ +
[docs] def mkdir(self, *dirs): + ''' + mkdir DIR [DIR ...] + Create the named DIR(s). Will create leading directories as needed. + + Example: + mkdir /images + ''' + for d in dirs: + d = self._out(d) + if not isdir(d): + os.makedirs(d)
+ +
[docs] def replace(self, pat, repl, *fileglobs): + ''' + replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...] + Find-and-replace the given PATTERN (Python-style regex) with the given + REPLACEMENT string for each of the files listed. + + Example: + replace @VERSION@ ${product.version} /boot/grub.conf /boot/isolinux.cfg + ''' + match = False + for g in fileglobs: + for f in rglob(self._out(g)): + match = True + replace(f, pat, repl) + if not match: + raise IOError("no files matched %s" % " ".join(fileglobs))
+ +
[docs] def append(self, filename, data): + ''' + append FILE STRING + Append STRING (followed by a newline character) to FILE. + Python character escape sequences ('\\n', '\\t', etc.) will be + converted to the appropriate characters. + + Examples: + + append /etc/depmod.d/dd.conf "search updates built-in" + append /etc/resolv.conf "" + ''' + with open(self._out(filename), "a") as fobj: + fobj.write(bytes(data, "utf8").decode('unicode_escape')+"\n")
+ +
[docs] def treeinfo(self, section, key, *valuetoks): + ''' + treeinfo SECTION KEY ARG [ARG ...] + Add an item to the treeinfo data store. + The given SECTION will have a new item added where + KEY = ARG ARG ... + + Example: + treeinfo images-${kernel.arch} boot.iso images/boot.iso + ''' + if section not in self.results.treeinfo: + self.results.treeinfo[section] = dict() + self.results.treeinfo[section][key] = " ".join(valuetoks)
+ +
[docs] def installkernel(self, section, src, dest): + ''' + installkernel SECTION SRC DEST + Install the kernel from SRC in the input tree to DEST in the output + tree, and then add an item to the treeinfo data store, in the named + SECTION, where "kernel" = DEST. + + Equivalent to: + install SRC DEST + treeinfo SECTION kernel DEST + ''' + self.install(src, dest) + self.treeinfo(section, "kernel", dest)
+ +
[docs] def installinitrd(self, section, src, dest): + ''' + installinitrd SECTION SRC DEST + Same as installkernel, but for "initrd". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "initrd", dest)
+ +
[docs] def installupgradeinitrd(self, section, src, dest): + ''' + installupgradeinitrd SECTION SRC DEST + Same as installkernel, but for "upgrade". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "upgrade", dest)
+ + + + + +
[docs] def copy(self, src, dest): + ''' + copy SRC DEST + Copy SRC to DEST. + If DEST is a directory, SRC will be copied inside it. + If DEST doesn't exist, SRC will be copied to a file with + that name, if the path leading to it exists. + ''' + try: + cpfile(self._out(src), self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def move(self, src, dest): + ''' + move SRC DEST + Move SRC to DEST. + ''' + mvfile(self._out(src), self._out(dest))
+ +
[docs] def remove(self, *fileglobs): + ''' + remove FILEGLOB [FILEGLOB ...] + Remove all the named files or directories. + Will *not* raise exceptions if the file(s) are not found. + ''' + for g in fileglobs: + for f in rglob(self._out(g)): + remove(f) + logger.debug("removed %s", f)
+ +
[docs] def chmod(self, fileglob, mode): + ''' + chmod FILEGLOB OCTALMODE + Change the mode of all the files matching FILEGLOB to OCTALMODE. + ''' + for f in rglob(self._out(fileglob), fatal=True): + os.chmod(f, int(mode,8))
+ +
[docs] def log(self, msg): + ''' + log MESSAGE + Emit the given log message. Be sure to put it in quotes! + + Example: + log "Reticulating splines, please wait..." + ''' + logger.info(msg)
+ + # TODO: add ssh-keygen, mkisofs(?), find, and other useful commands +
[docs] def runcmd(self, *cmdlist): + ''' + runcmd CMD [ARG ...] + Run the given command with the given arguments. + + NOTE: All paths given MUST be COMPLETE, ABSOLUTE PATHS to the file + or files mentioned. ${root}/${inroot}/${outroot} are good for + constructing these paths. + + FURTHER NOTE: Please use this command only as a last resort! + Whenever possible, you should use the existing template commands. + If the existing commands don't do what you need, fix them! + + Examples: + (this should be replaced with a "find" function) + runcmd find ${root} -name "*.pyo" -type f -delete + %for f in find(root, name="*.pyo"): + remove ${f} + %endfor + ''' + cmd = cmdlist + logger.debug('running command: %s', cmd) + if cmd[0].startswith("--chdir="): + logger.error("--chdir is no longer supported for runcmd.") + raise ValueError("--chdir is no longer supported for runcmd.") + + try: + stdout = runcmd_output(cmd) + if stdout: + logger.debug('command output:\n%s', stdout) + logger.debug("command finished successfully") + except CalledProcessError as e: + if e.output: + logger.error('command output:\n%s', e.output) + logger.error('command returned failure (%d)', e.returncode) + raise
+ +
[docs] def installpkg(self, *pkgs): + ''' + installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...] + Request installation of all packages matching the given globs. + Note that this is just a *request* - nothing is *actually* installed + until the 'run_pkg_transaction' command is given. + + --required is now the default. If the PKGGLOB can be missing pass --optional + ''' + if pkgs[0] == '--optional': + pkgs = pkgs[1:] + required = False + elif pkgs[0] == '--required': + pkgs = pkgs[1:] + required = True + else: + required = True + + excludes = [] + while '--except' in pkgs: + idx = pkgs.index('--except') + if len(pkgs) == idx+1: + raise ValueError("installpkg needs an argument after --except") + + excludes.append(pkgs[idx+1]) + pkgs = pkgs[:idx] + pkgs[idx+2:] + + errors = False + for p in pkgs: + try: + # Start by using Subject to generate a package query, which will + # give us a query object similar to what dbo.install would select, + # minus the handling for multilib. This query may contain + # multiple arches. Pull the package names out of that, filter any + # that match the excludes patterns, and pass those names back to + # dbo.install to do the actual, arch and version and multilib + # aware, package selction. + + # dnf queries don't have a concept of negative globs which is why + # the filtering is done the hard way. + + pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(self.dbo.sack).filter(latest=True)] + if not pkgnames: + raise dnf.exceptions.PackageNotFoundError("no package matched", p) + + # Apply excludes to the name only + for exclude in excludes: + pkgnames = [pkg for pkg in pkgnames if not fnmatch.fnmatch(pkg.name, exclude)] + + # Convert to a sorted NVR list for installation + pkgnvrs = sorted(["{}-{}-{}".format(pkg.name, pkg.version, pkg.release) for pkg in pkgnames]) + + # If the request is a glob, expand it in the log + if any(g for g in ['*','?','.'] if g in p): + logger.info("installpkg: %s expands to %s", p, ",".join(pkgnvrs)) + + for pkgnvr in pkgnvrs: + try: + self.dbo.install(pkgnvr) + except Exception as e: # pylint: disable=broad-except + if required: + raise + # Not required, log it and continue processing pkgs + logger.error("installpkg %s failed: %s", pkgnvr, str(e)) + except Exception as e: # pylint: disable=broad-except + logger.error("installpkg %s failed: %s", p, str(e)) + errors = True + + if errors and required: + raise Exception("Required installpkg failed.")
+ +
[docs] def removepkg(self, *pkgs): + ''' + removepkg PKGGLOB [PKGGLOB...] + Delete the named package(s). + + IMPLEMENTATION NOTES: + RPM scriptlets (%preun/%postun) are *not* run. + Files are deleted, but directories are left behind. + ''' + for p in pkgs: + filepaths = [f.lstrip('/') for f in self._filelist(p)] + # TODO: also remove directories that aren't owned by anything else + if filepaths: + logger.debug("removepkg %s: %ikb", p, self._getsize(*filepaths)/1024) + self.remove(*filepaths) + else: + logger.debug("removepkg %s: no files to remove!", p)
+ +
[docs] def run_pkg_transaction(self): + ''' + run_pkg_transaction + Actually install all the packages requested by previous 'installpkg' + commands. + ''' + try: + logger.info("Checking dependencies") + self.dbo.resolve() + except dnf.exceptions.DepsolveError as e: + logger.error("Dependency check failed: %s", e) + raise + logger.info("%d packages selected", len(self.dbo.transaction)) + if len(self.dbo.transaction) == 0: + raise Exception("No packages in transaction") + + # Write out the packages installed, including debuginfo packages + self._write_package_log() + + pkgs_to_download = self.dbo.transaction.install_set + logger.info("Downloading packages") + progress = LoraxDownloadCallback() + try: + self.dbo.download_packages(pkgs_to_download, progress) + except dnf.exceptions.DownloadError as e: + logger.error("Failed to download the following packages: %s", e) + raise + + logger.info("Preparing transaction from installation source") + try: + display = LoraxRpmCallback() + self.dbo.do_transaction(display=display) + except BaseException as e: + logger.error("The transaction process has ended abruptly: %s", e) + raise + + # Reset the package sack to pick up the installed packages + self.dbo.reset(repos=False) + self.dbo.fill_sack(load_system_repo=True, load_available_repos=False) + + # At this point dnf should know about the installed files. Double check that it really does. + if len(self._filelist("anaconda-core")) == 0: + raise Exception("Failed to reset dbo to installed package set")
+ +
[docs] def removefrom(self, pkg, *globs): + ''' + removefrom PKGGLOB [--allbut] FILEGLOB [FILEGLOB...] + Remove all files matching the given file globs from the package + (or packages) named. + If '--allbut' is used, all the files from the given package(s) will + be removed *except* the ones which match the file globs. + + Examples: + removefrom usbutils /usr/bin/* + removefrom xfsprogs --allbut /sbin/* + ''' + cmd = "%s %s" % (pkg, " ".join(globs)) # save for later logging + keepmatches = False + if globs[0] == '--allbut': + keepmatches = True + globs = globs[1:] + # get pkg filelist and find files that match the globs + filelist = self._filelist(pkg) + matches = set() + for g in globs: + globs_re = re.compile(fnmatch.translate(g)) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removefrom %s %s: no files matched!", pkg, g) + # are we removing the matches, or keeping only the matches? + if keepmatches: + remove_files = filelist.difference(matches) + else: + remove_files = matches + # remove the files + if remove_files: + logger.debug("removefrom %s: removed %i/%i files, %ikb/%ikb", cmd, + len(remove_files), len(filelist), + self._getsize(*remove_files)/1024, self._getsize(*filelist)/1024) + self.remove(*remove_files) + else: + logger.debug("removefrom %s: no files to remove!", cmd)
+ + # pylint: disable=anomalous-backslash-in-string +
[docs] def removekmod(self, *globs): + ''' + removekmod GLOB [GLOB...] [--allbut] KEEPGLOB [KEEPGLOB...] + Remove all files and directories matching the given file globs from the kernel + modules directory. + + If '--allbut' is used, all the files from the modules will be removed *except* + the ones which match the file globs. There must be at least one initial GLOB + to search and one KEEPGLOB to keep. The KEEPGLOB is expanded to be *KEEPGLOB* + so that it will match anywhere in the path. + + This only removes files from under /lib/modules/\\*/kernel/ + + Examples: + removekmod sound drivers/media drivers/hwmon drivers/video + removekmod drivers/char --allbut virtio_console hw_random + ''' + cmd = " ".join(globs) + if "--allbut" in globs: + idx = globs.index("--allbut") + if idx == 0: + raise ValueError("removekmod needs at least one GLOB before --allbut") + + # Apply keepglobs anywhere they appear in the path + keepglobs = globs[idx+1:] + if len(keepglobs) == 0: + raise ValueError("removekmod needs at least one GLOB after --allbut") + + globs = globs[:idx] + else: + # Nothing to keep + keepglobs = [] + + filelist = set() + for g in globs: + for top_dir in rglob(self._out("/lib/modules/*/kernel/"+g)): + for root, _dirs, files in os.walk(top_dir): + filelist.update(root+"/"+f for f in files) + + # Remove anything matching keepglobs from the list + matches = set() + for g in keepglobs: + globs_re = re.compile(fnmatch.translate("*"+g+"*")) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removekmod %s: no files matched!", g) + remove_files = filelist.difference(matches) + + if remove_files: + logger.debug("removekmod: removing %d files", len(remove_files)) + list(remove(f) for f in remove_files) + else: + logger.debug("removekmod %s: no files to remove!", cmd)
+ +
[docs] def createaddrsize(self, addr, src, dest): + ''' + createaddrsize INITRD_ADDRESS INITRD ADDRSIZE + Create the initrd.addrsize file required in LPAR boot process. + + Examples: + createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize + ''' + addrsize = open(dest, "wb") + addrsize_data = struct.pack(">iiii", 0, int(addr, 16), 0, os.stat(src).st_size) + addrsize.write(addrsize_data) + addrsize.close()
+ +
[docs] def systemctl(self, cmd, *units): + ''' + systemctl [enable|disable|mask] UNIT [UNIT...] + Enable, disable, or mask the given systemd units. + + Examples: + systemctl disable lvm2-monitor.service + systemctl mask fedora-storage-init.service fedora-configure.service + ''' + if cmd not in ('enable', 'disable', 'mask'): + raise ValueError('unsupported systemctl cmd: %s' % cmd) + if not units: + logger.debug("systemctl: no units given for %s, ignoring", cmd) + return + self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug + systemctl = ['systemctl', '--root', self.outroot, '--no-reload', cmd] + # When a unit doesn't exist systemd aborts the command. Run them one at a time. + # XXX for some reason 'systemctl enable/disable' always returns 1 + for unit in units: + try: + cmd = systemctl + [unit] + runcmd(cmd) + except CalledProcessError: + pass
+ +
[docs]class LiveTemplateRunner(TemplateRunner): + """ + This class parses and executes a limited Lorax template. Sample usage: + + # install a bunch of packages + runner = LiveTemplateRunner(dbo, templatedir, defaults) + runner.run("live-install.tmpl") + + It is meant to be used with the live-install.tmpl which lists the per-arch + pacages needed to build the live-iso output. + """ + def __init__(self, dbo, fatalerrors=True, templatedir=None, defaults=None): + self.dbo = dbo + self.pkgs = [] + self.pkgnames = [] + + super(LiveTemplateRunner, self).__init__(fatalerrors, templatedir, defaults) + +
[docs] def installpkg(self, *pkgs): + ''' + installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...] + Request installation of all packages matching the given globs. + Note that this is just a *request* - nothing is *actually* installed + until the 'run_pkg_transaction' command is given. + + --required is now the default. If the PKGGLOB can be missing pass --optional + ''' + if pkgs[0] == '--optional': + pkgs = pkgs[1:] + required = False + elif pkgs[0] == '--required': + pkgs = pkgs[1:] + required = True + else: + required = True + + excludes = [] + while '--except' in pkgs: + idx = pkgs.index('--except') + if len(pkgs) == idx+1: + raise ValueError("installpkg needs an argument after --except") + + excludes.append(pkgs[idx+1]) + pkgs = pkgs[:idx] + pkgs[idx+2:] + + errors = False + for p in pkgs: + try: + # Start by using Subject to generate a package query, which will + # give us a query object similar to what dbo.install would select, + # minus the handling for multilib. This query may contain + # multiple arches. Pull the package names out of that, filter any + # that match the excludes patterns, and pass those names back to + # dbo.install to do the actual, arch and version and multilib + # aware, package selction. + + # dnf queries don't have a concept of negative globs which is why + # the filtering is done the hard way. + + pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(self.dbo.sack).filter(latest=True)] + if not pkgnames: + raise dnf.exceptions.PackageNotFoundError("no package matched", p) + + # Apply excludes to the name only + for exclude in excludes: + pkgnames = [pkg for pkg in pkgnames if not fnmatch.fnmatch(pkg.name, exclude)] + + # Convert to a sorted NVR list for installation + pkgnvrs = sorted(["{}-{}-{}".format(pkg.name, pkg.version, pkg.release) for pkg in pkgnames]) + + # If the request is a glob, expand it in the log + if any(g for g in ['*','?','.'] if g in p): + logger.info("installpkg: %s expands to %s", p, ",".join(pkgnvrs)) + + self.pkgs.extend(pkgnvrs) + self.pkgnames.extend([pkg.name for pkg in pkgnames]) + except Exception as e: # pylint: disable=broad-except + logger.error("installpkg %s failed: %s", p, str(e)) + errors = True + + if errors and required: + raise Exception("Required installpkg failed.")
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/monitor.html b/f35-branch/_modules/pylorax/monitor.html new file mode 100644 index 00000000..3a5572f3 --- /dev/null +++ b/f35-branch/_modules/pylorax/monitor.html @@ -0,0 +1,411 @@ + + + + + + + + + + pylorax.monitor — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.monitor

+# monitor.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import re
+import socket
+import socketserver
+import threading
+import time
+
+
[docs]class LogRequestHandler(socketserver.BaseRequestHandler): + """ + Handle monitoring and saving the logfiles from the virtual install + + Incoming data is written to self.server.log_path and each line is checked + for patterns that would indicate that the installation failed. + self.server.log_error is set True when this happens. + """ + + simple_tests = [ + "Traceback (", + "traceback script(s) have been run", + "Out of memory:", + "Call Trace:", + "insufficient disk space:", + "Not enough disk space to download the packages", + "error populating transaction after", + "crashed on signal", + "packaging: Missed: NoSuchPackage", + "packaging: Installation failed", + "The following error occurred while installing. This is a fatal error", + "Error in POSTIN scriptlet in rpm package" + ] + + re_tests = [ + r"packaging: base repo .* not valid", + r"packaging: .* requires .*" + ] + +
[docs] def setup(self): + """Start writing to self.server.log_path""" + + if self.server.log_path: + self.fp = open(self.server.log_path, "w") # pylint: disable=attribute-defined-outside-init + else: + self.fp = None + self.request.settimeout(10)
+ +
[docs] def handle(self): + """ + Write incoming data to a logfile and check for errors + + Split incoming data into lines and check for any Tracebacks or other + errors that indicate that the install failed. + + Loops until self.server.kill is True + """ + log.info("Processing logs from %s", self.client_address) + line = "" + while True: + if self.server.kill: + break + + try: + data = str(self.request.recv(4096), "utf8") + if self.fp: + self.fp.write(data) + self.fp.flush() + + # check the data for errors and set error flag + # need to assemble it into lines so we can test for the error + # string. + while data: + more = data.split("\n", 1) + line += more[0] + if len(more) > 1: + self.iserror(line) + line = "" + data = more[1] + else: + data = None + + except socket.timeout: + pass + except Exception as e: # pylint: disable=broad-except + log.info("log processing killed by exception: %s", e) + break
+ +
[docs] def finish(self): + log.info("Shutting down log processing") + self.request.close() + if self.fp: + self.fp.close()
+ +
[docs] def iserror(self, line): + """ + Check a line to see if it contains an error indicating installation failure + + :param str line: log line to check for failure + + If the line contains IGNORED it will be skipped. + """ + if "IGNORED" in line: + return + + for t in self.simple_tests: + if t in line: + self.server.log_error = True + self.server.error_line = line + return + for t in self.re_tests: + if re.search(t, line): + self.server.log_error = True + self.server.error_line = line + return
+ + +
[docs]class LogServer(socketserver.TCPServer): + """A TCP Server that listens for log data""" + + # Number of seconds to wait for a connection after startup + timeout = 60 + + def __init__(self, log_path, *args, **kwargs): + """ + Setup the log server + + :param str log_path: Path to the log file to write + """ + self.kill = False + self.log_error = False + self.error_line = "" + self.log_path = log_path + self._timeout = kwargs.pop("timeout", None) + if self._timeout: + self._start_time = time.time() + socketserver.TCPServer.__init__(self, *args, **kwargs) + +
[docs] def log_check(self): + """ + Check to see if an error has been found in the log + + :returns: True if there has been an error + :rtype: bool + """ + if self._timeout: + taking_too_long = time.time() > self._start_time + (self._timeout * 60) + if taking_too_long: + log.error("Canceling installation due to timeout") + else: + taking_too_long = False + return self.log_error or taking_too_long
+ + +
[docs]class LogMonitor(object): + """ + Setup a server to monitor the logs output by the installation + + This needs to be running before the virt-install runs, it expects + there to be a listener on the port used for the virtio log port. + """ + def __init__(self, log_path=None, host="localhost", port=0, timeout=None, log_request_handler_class=LogRequestHandler): + """ + Start a thread to monitor the logs. + + :param str log_path: Path to the logfile to write + :param str host: Host to bind to. Default is localhost. + :param int port: Port to listen to or 0 to pick a port + + If 0 is passed for the port the dynamically assigned port will be + available as self.port + + If log_path isn't set then it only monitors the logs, instead of + also writing them to disk. + """ + self.server = LogServer(log_path, (host, port), log_request_handler_class, timeout=timeout) + self.host, self.port = self.server.server_address + self.log_path = log_path + self.server_thread = threading.Thread(target=self.server.handle_request) + self.server_thread.daemon = True + self.server_thread.start() + +
[docs] def shutdown(self): + """Force shutdown of the monitoring thread""" + self.server.kill = True + self.server_thread.join()
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/mount.html b/f35-branch/_modules/pylorax/mount.html new file mode 100644 index 00000000..d3d5859c --- /dev/null +++ b/f35-branch/_modules/pylorax/mount.html @@ -0,0 +1,206 @@ + + + + + + pylorax.mount — Lorax 35.8 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pylorax.mount

+# mount.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import os
+import pycdlib
+from pycdlib.pycdlibexception import PyCdlibException
+
+from pylorax.imgutils import mount, umount
+
+
[docs]class IsoMountpoint(object): + """ + Mount the iso and check to make sure the vmlinuz and initrd.img files exist + + Also check the iso for a a stage2 image and set a flag and extract the + iso's label. + + stage2 can be either LiveOS/squashfs.img or images/install.img + """ + def __init__(self, iso_path, initrd_path=None): + """ + Mount the iso + + :param str iso_path: Path to the iso to mount + :param str initrd_path: Optional path to initrd + + initrd_path can be used to point to a tree with a newer + initrd.img than the iso has. The iso is still used for stage2. + + self.kernel and self.initrd point to the kernel and initrd. + self.stage2 is set to True if there is a stage2 image. + self.repo is the path to the mounted iso if there is a /repodata dir. + """ + self.label = None + self.iso_path = iso_path + self.initrd_path = initrd_path + + if not self.initrd_path: + self.mount_dir = mount(self.iso_path, opts="loop") + else: + self.mount_dir = self.initrd_path + + kernel_list = [("/isolinux/vmlinuz", "/isolinux/initrd.img"), + ("/ppc/ppc64/vmlinuz", "/ppc/ppc64/initrd.img"), + ("/images/pxeboot/vmlinuz", "/images/pxeboot/initrd.img")] + + if os.path.isdir(self.mount_dir+"/repodata"): + self.repo = self.mount_dir + else: + self.repo = None + self.stage2 = os.path.exists(self.mount_dir+"/LiveOS/squashfs.img") or \ + os.path.exists(self.mount_dir+"/images/install.img") + + try: + for kernel, initrd in kernel_list: + if (os.path.isfile(self.mount_dir+kernel) and + os.path.isfile(self.mount_dir+initrd)): + self.kernel = self.mount_dir+kernel + self.initrd = self.mount_dir+initrd + break + else: + raise Exception("Missing kernel and initrd file in iso, failed" + " to search under: {0}".format(kernel_list)) + except: + self.umount() + raise + + self.get_iso_label() + +
[docs] def umount( self ): + """Unmount the iso""" + if not self.initrd_path: + umount(self.mount_dir)
+ +
[docs] def get_iso_label(self): + """ + Get the iso's label using pycdlib + + Sets self.label if one is found + """ + try: + iso = pycdlib.PyCdlib() + iso.open(self.iso_path) + self.label = iso.pvd.volume_identifier.decode("UTF-8").strip() + except PyCdlibException as e: + log.error("Problem reading label from %s: %s", self.iso_path, e)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/sysutils.html b/f35-branch/_modules/pylorax/sysutils.html new file mode 100644 index 00000000..22645736 --- /dev/null +++ b/f35-branch/_modules/pylorax/sysutils.html @@ -0,0 +1,367 @@ + + + + + + + + + + pylorax.sysutils — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.sysutils

+#
+# sysutils.py
+#
+# Copyright (C) 2009-2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+__all__ = ["joinpaths", "touch", "replace", "chown_", "chmod_", "remove",
+           "linktree"]
+
+import sys
+import os
+import re
+import fileinput
+import pwd
+import grp
+import glob
+import shutil
+import shlex
+from configparser import ConfigParser
+
+from pylorax.executils import runcmd
+
+
[docs]def joinpaths(*args, **kwargs): + path = os.path.sep.join(args) + + if kwargs.get("follow_symlinks"): + return os.path.realpath(path) + else: + return path
+ + +
[docs]def touch(fname): + with open(fname, "w") as f: + f.write("")
+ + +
[docs]def replace(fname, find, sub): + fin = fileinput.input(fname, inplace=1) + pattern = re.compile(find) + + for line in fin: + line = pattern.sub(sub, line) + sys.stdout.write(line) + + fin.close()
+ + +
[docs]def chown_(path, user=None, group=None, recursive=False): + uid = gid = -1 + + if user is not None: + uid = pwd.getpwnam(user)[2] + if group is not None: + gid = grp.getgrnam(group)[2] + + for fname in glob.iglob(path): + os.chown(fname, uid, gid) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chown_(nested, user, group, recursive)
+ + +
[docs]def chmod_(path, mode, recursive=False): + for fname in glob.iglob(path): + os.chmod(fname, mode) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chmod_(nested, mode, recursive)
+ + +def cpfile(src, dst): + shutil.copy2(src, dst) + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + + return dst + +def mvfile(src, dst): + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + os.rename(src, dst) + return dst + +
[docs]def remove(target): + if os.path.isdir(target) and not os.path.islink(target): + shutil.rmtree(target) + else: + os.unlink(target)
+ +
[docs]def linktree(src, dst): + runcmd(["/bin/cp", "-alx", src, dst])
+ +def unquote(s): + return ' '.join(shlex.split(s)) + +class UnquotingConfigParser(ConfigParser): + """A ConfigParser, only with unquoting of the values.""" + # pylint: disable=arguments-differ + def get(self, *args, **kwargs): + ret = super().get(*args, **kwargs) + if ret: + ret = unquote(ret) + return ret + +def flatconfig(filename): + """Use UnquotingConfigParser to read a flat config file (without + section headers) by adding a section header. + """ + with open (filename, 'r') as conffh: + conftext = "[main]\n" + conffh.read() + config = UnquotingConfigParser() + config.read_string(conftext) + return config['main'] + +def read_tail(path, size): + """Read up to `size` kibibytes from the end of a file""" + + # NOTE: In py3 text files are unicode, not bytes so we have to open it as bytes + with open(path, "rb") as f: + return _read_file_end(f, size) + +def _read_file_end(f, size): + """Read the end of a file + + This skips to the next line to avoid starting in the middle of a unicode character. + And returns "" in the case of a UnicodeDecodeError + """ + f.seek(0, 2) + end = f.tell() + if end < 1024 * size: + f.seek(0, 0) + else: + f.seek(end - (1024 * size)) + data = f.read() + try: + # Find the first newline in the block + newline = min(1+data.find(b'\n'), len(data)) + text = data[newline:].decode("UTF-8") + except UnicodeDecodeError: + return "" + return text +
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/treebuilder.html b/f35-branch/_modules/pylorax/treebuilder.html new file mode 100644 index 00000000..0f7f9827 --- /dev/null +++ b/f35-branch/_modules/pylorax/treebuilder.html @@ -0,0 +1,630 @@ + + + + + + + + + + pylorax.treebuilder — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treebuilder

+# treebuilder.py - handle arch-specific tree building stuff using templates
+#
+# Copyright (C) 2011-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.treebuilder")
+
+import os, re
+from os.path import basename
+from shutil import copytree, copy2
+from subprocess import CalledProcessError
+from pathlib import Path
+import itertools
+
+from pylorax.sysutils import joinpaths, remove
+from pylorax.base import DataHolder
+from pylorax.ltmpl import LoraxTemplateRunner
+import pylorax.imgutils as imgutils
+from pylorax.executils import runcmd, runcmd_output, execWithCapture
+
+templatemap = {
+    'i386':    'x86.tmpl',
+    'x86_64':  'x86.tmpl',
+    'ppc64le': 'ppc64le.tmpl',
+    's390':    's390.tmpl',
+    's390x':   's390.tmpl',
+    'aarch64': 'aarch64.tmpl',
+    'arm':     'arm.tmpl',
+    'armhfp':  'arm.tmpl',
+}
+
+
[docs]def generate_module_info(moddir, outfile=None): + def module_desc(mod): + output = runcmd_output(["modinfo", "-F", "description", mod]) + return output.strip() + def read_module_set(name): + return set(l.strip() for l in open(joinpaths(moddir,name)) if ".ko" in l) + modsets = {'scsi':read_module_set("modules.block"), + 'eth':read_module_set("modules.networking")} + + modinfo = list() + for root, _dirs, files in os.walk(moddir): + for modtype, modset in modsets.items(): + for mod in modset.intersection(files): # modules in this dir + (name, _ext) = os.path.splitext(mod) # foo.ko -> (foo, .ko) + desc = module_desc(joinpaths(root,mod)) or "%s driver" % name + modinfo.append(dict(name=name, type=modtype, desc=desc)) + + out = open(outfile or joinpaths(moddir,"module-info"), "w") + out.write("Version 0\n") + for mod in sorted(modinfo, key=lambda m: m.get('name')): + out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
+ +
[docs]class RuntimeBuilder(object): + '''Builds the anaconda runtime image.''' + def __init__(self, product, arch, dbo, templatedir=None, + installpkgs=None, excludepkgs=None, + add_templates=None, + add_template_vars=None, + skip_branding=False): + root = dbo.conf.installroot + # use a copy of product so we can modify it locally + product = product.copy() + product.name = product.name.lower() + self.vars = DataHolder(arch=arch, product=product, dbo=dbo, root=root, + basearch=arch.basearch, libdir=arch.libdir) + self.dbo = dbo + self._runner = LoraxTemplateRunner(inroot=root, outroot=root, + dbo=dbo, templatedir=templatedir) + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self._installpkgs = installpkgs or [] + self._excludepkgs = excludepkgs or [] + self._runner.defaults = self.vars + self.dbo.reset() + self._skip_branding = skip_branding + + def _install_branding(self): + """Select the branding from the available 'system-release' packages + The *best* way to control this is to have a single package in the repo provide 'system-release' + When there are more than 1 package it will: + - Make a list of the available packages + - If variant is set look for a package ending with lower(variant) and use that + - If there are one or more non-generic packages, use the first one after sorting + """ + if self._skip_branding: + return + + release = None + q = self.dbo.sack.query() + a = q.available() + pkgs = sorted([p.name for p in a.filter(provides='system-release') + if not p.name.startswith("generic")]) + if not pkgs: + logger.error("No system-release packages found, could not get the release") + return + + logger.debug("system-release packages: %s", pkgs) + if self.vars.product.variant: + variant = [p for p in pkgs if p.endswith("-"+self.vars.product.variant.lower())] + if variant: + release = variant[0] + if not release: + release = pkgs[0] + + # release + logger.info('got release: %s', release) + self._runner.installpkg(release) + + # logos + release, _suffix = release.split('-', 1) + self._runner.installpkg('%s-logos' % release) + +
[docs] def install(self): + '''Install packages and do initial setup with runtime-install.tmpl''' + self._install_branding() + if len(self._installpkgs) > 0: + self._runner.installpkg(*self._installpkgs) + if len(self._excludepkgs) > 0: + self._runner.removepkg(*self._excludepkgs) + self._runner.run("runtime-install.tmpl") + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars)
+ +
[docs] def writepkglists(self, pkglistdir): + '''debugging data: write out lists of package contents''' + if not os.path.isdir(pkglistdir): + os.makedirs(pkglistdir) + q = self.dbo.sack.query() + for pkgobj in q.installed(): + with open(joinpaths(pkglistdir, pkgobj.name), "w") as fobj: + for fname in pkgobj.files: + fobj.write("{0}\n".format(fname))
+ +
[docs] def postinstall(self): + '''Do some post-install setup work with runtime-postinstall.tmpl''' + # copy configdir into runtime root beforehand + configdir = joinpaths(self._runner.templatedir,"config_files") + configdir_path = "tmp/config_files" + fullpath = joinpaths(self.vars.root, configdir_path) + if os.path.exists(fullpath): + remove(fullpath) + copytree(configdir, fullpath) + self._runner.run("runtime-postinstall.tmpl", configdir=configdir_path)
+ +
[docs] def cleanup(self): + '''Remove unneeded packages and files with runtime-cleanup.tmpl''' + self._runner.run("runtime-cleanup.tmpl")
+ +
[docs] def verify(self): + '''Ensure that contents of the installroot can run''' + status = True + + ELF_MAGIC = b'\x7fELF' + + # Iterate over all files in /usr/bin and /usr/sbin + # For ELF files, gather them into a list and we'll check them all at + # the end. For files with a #!, check them as we go + elf_files = [] + usr_bin = Path(self.vars.root + '/usr/bin') + usr_sbin = Path(self.vars.root + '/usr/sbin') + for path in (str(x) for x in itertools.chain(usr_bin.iterdir(), usr_sbin.iterdir()) \ + if x.is_file()): + with open(path, "rb") as f: + magic = f.read(4) + if magic == ELF_MAGIC: + # Save the path, minus the chroot prefix + elf_files.append(path[len(self.vars.root):]) + elif magic[:2] == b'#!': + # Reopen the file as text and read the first line. + # Open as latin-1 so that stray 8-bit characters don't make + # things blow up. We only really care about ASCII parts. + with open(path, "rt", encoding="latin-1") as f_text: + # Remove the #!, split on space, and take the first part + shabang = f_text.readline()[2:].split()[0] + + # Does the path exist? + if not os.path.exists(self.vars.root + shabang): + logger.error('%s, needed by %s, does not exist', shabang, path) + status = False + + # Now, run ldd on all the ELF files + # Just run ldd once on everything so it isn't logged a million times. + # At least one thing in the list isn't going to be a dynamic executable, + # so use execWithCapture to ignore the exit code. + filename = '' + for line in execWithCapture('ldd', elf_files, root=self.vars.root, + log_output=False, filter_stderr=True).split('\n'): + if line and not line[0].isspace(): + # New filename header, strip the : at the end and save + filename = line[:-1] + elif 'not found' in line: + logger.error('%s, needed by %s, not found', line.split()[0], filename) + status = False + + return status
+ +
[docs] def writepkgsizes(self, pkgsizefile): + '''debugging data: write a big list of pkg sizes''' + fobj = open(pkgsizefile, "w") + getsize = lambda f: os.lstat(f).st_size if os.path.exists(f) else 0 + q = self.dbo.sack.query() + for p in sorted(q.installed()): + pkgsize = sum(getsize(joinpaths(self.vars.root,f)) for f in p.files) + fobj.write("{0.name}.{0.arch}: {1}\n".format(p, pkgsize))
+ +
[docs] def generate_module_data(self): + root = self.vars.root + moddir = joinpaths(root, "lib/modules/") + for kernel in findkernels(root=root): + ksyms = joinpaths(root, "boot/System.map-%s" % kernel.version) + logger.info("doing depmod and module-info for %s", kernel.version) + runcmd(["depmod", "-a", "-F", ksyms, "-b", root, kernel.version]) + generate_module_info(moddir+kernel.version, outfile=moddir+"module-info")
+ +
[docs] def create_squashfs_runtime(self, outfile="/var/tmp/squashfs.img", compression="xz", compressargs=None, size=2): + """Create a plain squashfs runtime""" + compressargs = compressargs or [] + os.makedirs(os.path.dirname(outfile)) + + # squash the rootfs + return imgutils.mksquashfs(self.vars.root, outfile, compression, compressargs)
+ +
[docs] def create_ext4_runtime(self, outfile="/var/tmp/squashfs.img", compression="xz", compressargs=None, size=2): + """Create a squashfs compressed ext4 runtime""" + # make live rootfs image - must be named "LiveOS/rootfs.img" for dracut + compressargs = compressargs or [] + workdir = joinpaths(os.path.dirname(outfile), "runtime-workdir") + os.makedirs(joinpaths(workdir, "LiveOS")) + + # Catch problems with the rootfs being too small and clearly log them + try: + imgutils.mkrootfsimg(self.vars.root, joinpaths(workdir, "LiveOS/rootfs.img"), + "Anaconda", size=size) + except CalledProcessError as e: + if e.stdout and "No space left on device" in e.stdout: + logger.error("The rootfs ran out of space with size=%d", size) + raise + + # squash the live rootfs and clean up workdir + rc = imgutils.mksquashfs(workdir, outfile, compression, compressargs) + remove(workdir) + return rc
+ +
[docs] def finished(self): + """ Done using RuntimeBuilder + + Close the dnf base object + """ + self.dbo.close()
+ +
[docs]class TreeBuilder(object): + '''Builds the arch-specific boot images. + inroot should be the installtree root (the newly-built runtime dir)''' + def __init__(self, product, arch, inroot, outroot, runtime, isolabel, domacboot=True, doupgrade=True, + templatedir=None, add_templates=None, add_template_vars=None, workdir=None, extra_boot_args=""): + + # NOTE: if you pass an arg named "runtime" to a mako template it'll + # clobber some mako internal variables - hence "runtime_img". + self.vars = DataHolder(arch=arch, product=product, runtime_img=runtime, + runtime_base=basename(runtime), + inroot=inroot, outroot=outroot, + basearch=arch.basearch, libdir=arch.libdir, + isolabel=isolabel, udev=udev_escape, domacboot=domacboot, doupgrade=doupgrade, + workdir=workdir, lower=string_lower, + extra_boot_args=extra_boot_args) + self._runner = LoraxTemplateRunner(inroot, outroot, templatedir=templatedir) + self._runner.defaults = self.vars + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self.templatedir = templatedir + self.treeinfo_data = None + + @property + def kernels(self): + return findkernels(root=self.vars.inroot) + +
[docs] def rebuild_initrds(self, add_args=None, backup="", prefix=""): + '''Rebuild all the initrds in the tree. If backup is specified, each + initrd will be renamed with backup as a suffix before rebuilding. + If backup is empty, the existing initrd files will be overwritten. + If suffix is specified, the existing initrd is untouched and a new + image is built with the filename "${prefix}-${kernel.version}.img" + + If the initrd doesn't exist its name will be created based on the + name of the kernel. + ''' + add_args = add_args or [] + dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args + if not backup: + dracut.append("--force") + + if not self.kernels: + raise Exception("No kernels found, cannot rebuild_initrds") + + for kernel in self.kernels: + if prefix: + idir = os.path.dirname(kernel.path) + outfile = joinpaths(idir, prefix+'-'+kernel.version+'.img') + elif hasattr(kernel, "initrd"): + # If there is an existing initrd, use that + outfile = kernel.initrd.path + else: + # Construct an initrd from the kernel name + outfile = kernel.path.replace("vmlinuz-", "initrd-") + ".img" + logger.info("rebuilding %s", outfile) + logger.info("dracut warnings about /proc are safe to ignore") + + if backup: + initrd = joinpaths(self.vars.inroot, outfile) + if os.path.exists(initrd): + os.rename(initrd, initrd + backup) + cmd = dracut + [outfile, kernel.version] + runcmd(cmd, root=self.vars.inroot)
+ +
[docs] def build(self): + templatefile = templatemap[self.vars.arch.basearch] + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars) + self._runner.run(templatefile, kernels=self.kernels) + self.treeinfo_data = self._runner.results.treeinfo + self.implantisomd5()
+ +
[docs] def implantisomd5(self): + for _section, data in self.treeinfo_data.items(): + if 'boot.iso' in data: + iso = joinpaths(self.vars.outroot, data['boot.iso']) + runcmd(["implantisomd5", iso])
+ + @property + def dracut_hooks_path(self): + """ Return the path to the lorax dracut hooks scripts + + Use the configured share dir if it is setup, + otherwise default to /usr/share/lorax/dracut_hooks + """ + if self.templatedir: + return joinpaths(self.templatedir, "dracut_hooks") + else: + return "/usr/share/lorax/dracut_hooks" + +
[docs] def copy_dracut_hooks(self, hooks): + """ Copy the hook scripts in hooks into the installroot's /tmp/ + and return a list of commands to pass to dracut when creating the + initramfs + + hooks is a list of tuples with the name of the hook script and the + target dracut hook directory + (eg. [("99anaconda-copy-ks.sh", "/lib/dracut/hooks/pre-pivot")]) + """ + dracut_commands = [] + for hook_script, dracut_path in hooks: + src = joinpaths(self.dracut_hooks_path, hook_script) + if not os.path.exists(src): + logger.error("Missing lorax dracut hook script %s", (src)) + continue + dst = joinpaths(self.vars.inroot, "/tmp/", hook_script) + copy2(src, dst) + dracut_commands += ["--include", joinpaths("/tmp/", hook_script), + dracut_path] + return dracut_commands
+ +#### TreeBuilder helper functions + +
[docs]def findkernels(root="/", kdir="boot"): + # To find possible flavors, awk '/BuildKernel/ { print $4 }' kernel.spec + flavors = ('debug', 'PAE', 'PAEdebug', 'smp', 'xen', 'lpae') + kre = re.compile(r"vmlinuz-(?P<version>.+?\.(?P<arch>[a-z0-9_]+)" + r"(.(?P<flavor>{0}))?)$".format("|".join(flavors))) + kernels = [] + bootfiles = os.listdir(joinpaths(root, kdir)) + for f in bootfiles: + match = kre.match(f) + if match: + kernel = DataHolder(path=joinpaths(kdir, f)) + kernel.update(match.groupdict()) # sets version, arch, flavor + kernels.append(kernel) + + # look for associated initrd/initramfs/etc. + for kernel in kernels: + for f in bootfiles: + if f.endswith('-'+kernel.version+'.img'): + imgtype, _rest = f.split('-',1) + # special backwards-compat case + if imgtype == 'initramfs': + imgtype = 'initrd' + kernel[imgtype] = DataHolder(path=joinpaths(kdir, f)) + + logger.debug("kernels=%s", kernels) + return kernels
+ +# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c) +udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist +udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable +
[docs]def udev_escape(label): + out = '' + for ch in label: + out += ch if ch not in udev_blacklist else '\\x%02x' % ord(ch) + return out
+ +
[docs]def string_lower(string): + """ Return a lowercase string. + + :param string: String to lowercase + + This is used as a filter in the templates. + """ + return string.lower()
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_modules/pylorax/treeinfo.html b/f35-branch/_modules/pylorax/treeinfo.html new file mode 100644 index 00000000..778ed30a --- /dev/null +++ b/f35-branch/_modules/pylorax/treeinfo.html @@ -0,0 +1,270 @@ + + + + + + + + + + pylorax.treeinfo — Lorax 35.1 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treeinfo

+#
+# treeinfo.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.treeinfo")
+
+import configparser
+import os
+import time
+
+
+
[docs]class TreeInfo(object): + + def __init__(self, product, version, variant, basearch, + packagedir=""): + + self.c = configparser.ConfigParser() + + if 'SOURCE_DATE_EPOCH' in os.environ: + timestamp = os.environ['SOURCE_DATE_EPOCH'] + else: + timestamp = str(time.time()) + + section = "general" + data = {"timestamp": timestamp, + "family": product, + "version": version, + "name": "%s-%s" % (product, version), + "variant": variant or "", + "arch": basearch, + "packagedir": packagedir} + + self.c.add_section(section) + list(self.c.set(section, key, value) for key, value in data.items()) + +
[docs] def add_section(self, section, data): + if not self.c.has_section(section): + self.c.add_section(section) + + list(self.c.set(section, key, value) for key, value in data.items())
+ +
[docs] def write(self, outfile): + logger.info("writing .treeinfo file") + with open(outfile, "w") as fobj: + self.c.write(fobj)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f35-branch/_sources/index.rst.txt b/f35-branch/_sources/index.rst.txt new file mode 100644 index 00000000..c51d24e4 --- /dev/null +++ b/f35-branch/_sources/index.rst.txt @@ -0,0 +1,36 @@ +.. Lorax documentation master file, created by + sphinx-quickstart on Wed Apr 8 13:46:00 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Lorax's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 1 + + intro + lorax + livemedia-creator + mkksiso + product-images + modules + +Documentation for other Lorax Branches +====================================== + +* `Fedora 35 `_ +* `Fedora 34 `_ +* `Fedora 33 `_ +* `RHEL8 lorax-composer `_ +* `RHEL7 lorax-composer `_ + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/f35-branch/_sources/intro.rst.txt b/f35-branch/_sources/intro.rst.txt new file mode 100644 index 00000000..01857ee9 --- /dev/null +++ b/f35-branch/_sources/intro.rst.txt @@ -0,0 +1,67 @@ +Introduction to Lorax +===================== + +I am the Lorax. I speak for the trees [and images]. + +Lorax is used to build the Anaconda Installer boot.iso, it consists of a +library, pylorax, a set of templates, and the lorax script. Its operation +is driven by a customized set of Mako templates that lists the packages +to be installed, steps to execute to remove unneeded files, and creation +of the iso for all of the supported architectures. + + + + + + +Before Lorax +============ + +Tree building tools such as pungi and revisor rely on 'buildinstall' in +anaconda/scripts/ to produce the boot images and other such control files +in the final tree. The existing buildinstall scripts written in a mix of +bash and Python are unmaintainable. Lorax is an attempt to replace them +with something more flexible. + + +EXISTING WORKFLOW: + +pungi and other tools call scripts/buildinstall, which in turn call other +scripts to do the image building and data generation. Here's how it +currently looks: + + -> buildinstall + * process command line options + * write temporary yum.conf to point to correct repo + * find anaconda release RPM + * unpack RPM, pull in those versions of upd-instroot, mk-images, + maketreeinfo.py, makestamp.py, and buildinstall + + -> call upd-instroot + + -> call maketreeinfo.py + + -> call mk-images (which figures out which mk-images.ARCH to call) + + -> call makestamp.py + + * clean up + + +PROBLEMS: + +The existing workflow presents some problems with maintaining the scripts. +First, almost all knowledge of what goes in to the stage 1 and stage 2 +images lives in upd-instroot. The mk-images* scripts copy things from the +root created by upd-instroot in order to build the stage 1 image, though +it's not completely clear from reading the scripts. + + +NEW IDEAS: + +Create a new central driver with all information living in Python modules. +Configuration files will provide the knowledge previously contained in the +upd-instroot and mk-images* scripts. + + + diff --git a/f35-branch/_sources/livemedia-creator.rst.txt b/f35-branch/_sources/livemedia-creator.rst.txt new file mode 100644 index 00000000..962be311 --- /dev/null +++ b/f35-branch/_sources/livemedia-creator.rst.txt @@ -0,0 +1,670 @@ +livemedia-creator +================= + +:Authors: + Brian C. Lane + +livemedia-creator uses `Anaconda `_, +`kickstart `_ and `Lorax +`_ to create bootable media that use the +same install path as a normal system installation. It can be used to make live +isos, bootable (partitioned) disk images, tarfiles, and filesystem images for +use with virtualization and container solutions like libvirt, docker, and +OpenStack. + +The general idea is to use qemu with kickstart and an Anaconda boot.iso to +install into a disk image and then use the disk image to create the bootable +media. + +livemedia-creator --help will describe all of the options available. At the +minimum you need: + +``--make-iso`` to create a final bootable .iso or one of the other ``--make-*`` options. + +``--iso`` to specify the Anaconda install media to use with qemu. + +``--ks`` to select the kickstart file describing what to install. + +To use livemedia-creator with virtualization you will need to have qemu installed. + +If you are going to be using Anaconda directly, with ``--no-virt`` mode, make sure +you have the anaconda-tui package installed. + +Conventions used in this document: + +``lmc`` is an abbreviation for livemedia-creator. + +``builder`` is the system where livemedia-creator is being run + +``image`` is the disk image being created by running livemedia-creator + + +livemedia-creator cmdline arguments +----------------------------------- + +.. argparse:: + :ref: pylorax.cmdline.lmc_parser + :prog: livemedia-creator + + --macboot : @replace + Make the iso bootable on UEFI based Mac systems + + Default: True + + --nomacboot : @replace + Do not create a Mac bootable iso + + Default: False + + +Quickstart +---------- + +Run this to create a bootable live iso:: + + sudo livemedia-creator --make-iso \ + --iso=/extra/iso/boot.iso --ks=./docs/fedora-livemedia.ks + +You can run it directly from the lorax git repo like this:: + + sudo PATH=./src/sbin/:$PATH PYTHONPATH=./src/ ./src/sbin/livemedia-creator \ + --make-iso --iso=/extra/iso/boot.iso \ + --ks=./docs/fedora-livemedia.ks --lorax-templates=./share/ + +You can observe the installation using vnc. The logs will show what port was +chosen, or you can use a specific port by passing it. eg. ``--vnc vnc:127.0.0.1:5`` + +This is usually a good idea when testing changes to the kickstart. lmc tries +to monitor the logs for fatal errors, but may not catch everything. + + +How ISO creation works +---------------------- + +There are 2 stages, the install stage which produces a disk or filesystem image +as its output, and the boot media creation which uses the image as its input. +Normally you would run both stages, but it is possible to stop after the +install stage, by using ``--image-only``, or to skip the install stage and use +a previously created disk image by passing ``--disk-image`` or ``--fs-image`` + +When creating an iso qemu boots using the passed Anaconda installer iso +and installs the system based on the kickstart. The ``%post`` section of the +kickstart is used to customize the installed system in the same way that +current spin-kickstarts do. + +livemedia-creator monitors the install process for problems by watching the +install logs. They are written to the current directory or to the base +directory specified by the --logfile command. You can also monitor the install +by using a vnc client. This is recommended when first modifying a kickstart, +since there are still places where Anaconda may get stuck without the log +monitor catching it. + +The output from this process is a partitioned disk image. kpartx can be used +to mount and examine it when there is a problem with the install. It can also +be booted using kvm. + +When creating an iso the disk image's / partition is copied into a formatted +filesystem image which is then used as the input to lorax for creation of the +final media. + +The final image is created by lorax, using the templates in /usr/share/lorax/live/ +or the live directory below the directory specified by ``--lorax-templates``. The +templates are written using the Mako template system with some extra commands +added by lorax. + +.. note:: + The output from --make-iso includes the artifacts used to create the boot.iso; + the kernel, initrd, the squashfs filesystem, etc. If you only want the + boot.iso you can pass ``--iso-only`` and the other files will be removed. You + can also name the iso by using ``--iso-name my-live.iso``. + + +Kickstarts +---------- + +The docs/ directory includes several example kickstarts, one to create a live +desktop iso using GNOME, and another to create a minimal disk image. When +creating your own kickstarts you should start with the minimal example, it +includes several needed packages that are not always included by dependencies. + +Or you can use existing spin kickstarts to create live media with a few +changes. Here are the steps I used to convert the Fedora XFCE spin. + +1. Flatten the xfce kickstart using ksflatten +2. Add zerombr so you don't get the disk init dialog +3. Add clearpart --all +4. Add swap partition +5. bootloader target +6. Add shutdown to the kickstart +7. Add network --bootproto=dhcp --activate to activate the network + This works for F16 builds but for F15 and before you need to pass + something on the cmdline that activate the network, like sshd: + + ``livemedia-creator --kernel-args="sshd"`` + +8. Add a root password:: + + rootpw rootme + network --bootproto=dhcp --activate + zerombr + clearpart --all + bootloader --location=mbr + part swap --size=512 + shutdown + +9. In the livesys script section of the %post remove the root password. This + really depends on how the spin wants to work. You could add the live user + that you create to the %wheel group so that sudo works if you wanted to. + + ``passwd -d root > /dev/null`` + +10. Remove /etc/fstab in %post, dracut handles mounting the rootfs + + ``cat /dev/null > /dev/fstab`` + + Do this only for live iso's, the filesystem will be mounted read only if + there is no /etc/fstab + +11. Don't delete initramfs files from /boot in %post +12. When creating live iso's you need to have, at least, these packages in the %package section:: + dracut-config-generic + dracut-live + -dracut-config-rescue + grub2-efi + memtest86+ + syslinux + +User created repositories +~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using your own repositories and installing groups (eg. @core) make +sure you create the repodata with groups like this ``createrepo -g +/path/to/groups.xml /path/to/rpms`` + +Using a Proxy with repos +~~~~~~~~~~~~~~~~~~~~~~~~ + +One drawback to using qemu is that it pulls the packages from the repo each +time you run it. To speed things up you either need a local mirror of the +packages, or you can use a caching proxy. When using a proxy you pass it to +livemedia-creator like this: + + ``--proxy=http://proxy.yourdomain.com:3128`` + +You also need to use a specific mirror instead of mirrormanager so that the +packages will get cached, so your kickstart url would look like: + + ``url --url="http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/"`` + +You can also add an update repo, but don't name it updates. Add --proxy to it +as well. You can use all of the `kickstart commands `_ in your kickstart. Make sure there +is only one ``url`` command, other repos have to use the ``repo`` command and cannot be +named ``updates`` which is reserved for Anaconda's use. eg.:: + + url --url=PRIMARY-REPO-URL --proxy=PROXY-URL + repo --name="repo1" --baseurl=FIRST-REPO-URL --proxy=PROXY-URL + repo --name="repo2" --baseurl=SECOND-REPO_URL --proxy=PROXY-URL + + +Anaconda image install (no-virt) +-------------------------------- + +You can create images without using qemu by passing ``--no-virt`` on the +cmdline. This will use Anaconda's directory install feature to handle the +install. There are a couple of things to keep in mind when doing this: + +1. It will be most reliable when building images for the same release that the + host is running. Because Anaconda has expectations about the system it is + running under you may encounter strange bugs if you try to build newer or + older releases. + +2. It may totally trash your host. So far I haven't had this happen, but the + possibility exists that a bug in Anaconda could result in it operating on + real devices. I recommend running it in a virt or on a system that you can + afford to lose all data from. + +The logs from anaconda will be placed in an ./anaconda/ directory in either +the current directory or in the directory used for --logfile + +Example cmdline: + +``sudo livemedia-creator --make-iso --no-virt --ks=./fedora-livemedia.ks`` + +.. note:: + Using no-virt to create a partitioned disk image (eg. --make-disk or + --make-vagrant) will only create disks usable on the host platform (BIOS + or UEFI). You can create BIOS partitioned disk images on UEFI by using + virt. + +.. note:: + As of version 30.7 SELinux can be set to Enforcing. The current state is + logged for debugging purposes and if there are SELinux denials they should + be reported as a bug. + +AMI Images +---------- + +Amazon EC2 images can be created by using the --make-ami switch and an appropriate +kickstart file. All of the work to customize the image is handled by the kickstart. +The example currently included was modified from the cloud-kickstarts version so +that it would work with livemedia-creator. + +Example cmdline: + +``sudo livemedia-creator --make-ami --iso=/path/to/boot.iso --ks=./docs/fedora-livemedia-ec2.ks`` + +This will produce an ami-root.img file in the working directory. + +At this time I have not tested the image with EC2. Feedback would be welcome. + + +Appliance Creation +------------------ + +livemedia-creator can now replace appliance-tools by using the --make-appliance +switch. This will create the partitioned disk image and an XML file that can be +used with virt-image to setup a virtual system. + +The XML is generated using the Mako template from +/usr/share/lorax/appliance/libvirt.xml You can use a different template by +passing ``--app-template