From 5ff2bb973f66dc9fffa262de978deac89618163f Mon Sep 17 00:00:00 2001 From: Aaron Klingaman Date: Wed, 5 Apr 2006 18:18:17 +0000 Subject: [PATCH] moved to v4arch repo --- documentation/bm_flowchart.svg | 2711 ----------------------- documentation/bm_sequence.svg | 1821 --------------- documentation/boot-manager-tech-doc.pdf | Bin 115600 -> 0 bytes documentation/boot-manager-tech-doc.xml | 891 -------- 4 files changed, 5423 deletions(-) delete mode 100644 documentation/bm_flowchart.svg delete mode 100644 documentation/bm_sequence.svg delete mode 100644 documentation/boot-manager-tech-doc.pdf delete mode 100644 documentation/boot-manager-tech-doc.xml diff --git a/documentation/bm_flowchart.svg b/documentation/bm_flowchart.svg deleted file mode 100644 index 4d0b8a3..0000000 --- a/documentation/bm_flowchart.svg +++ /dev/null @@ -1,2711 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Master slide - - - Slide - - Graphic - - - - - - - - - - - - - - Read network - - - configuration - - - , - - - node id - - - , - - - and key - - - from floppy disk - - - - - - - - - - - - - - - - - Boot manager - - - exits - - - - - - - - - - - - - - - - - - - - Authentication - - - successful - - - ? - - - - - - - - - - - - - - - - - - - - No - - - - - - - - - - - Notify - - - - - - - - - - - Boot manager - - - started by cd - - - - - - - - - - - - - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Is boot state - - - new - - - ? - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Is boot state - - - reinstall - - - ? - - - - - - - - - - - Notify - - - - - - - - - - - - - - Prompt user to - - - confirm install - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Install - - - confirmed - - - ? - - - - - - - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Is boot state - - - boot - - - ? - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Validate that node - - - is in fact installed - - - . - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Add any unused - - - block devices to - - - extend partitions - - - - - - - - - - - - - - Chain boot to - - - installed node - - - kernel - - - - - - - - - - - - - - Boot - - - successful - - - ? - - - - - - - - - - - Notify - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - Is boot state - - - debug - - - ? - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Setup debug - - - environment - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Update node - - - configuration to - - - match PLC - - - - - - - - - - - - - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - No - - - - - - - - - - - - - - - - - - - - Node - - - Requirements - - - met - - - ? - - - - - - - - - - - - - - Check machine - - - hardware and - - - network - - - requirements - - - - - - - - - - - - - - - - - - - - Invoke installer to - - - reinstall machine - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - - - - - - - No - - - - - - - - - - - - - - Install - - - succesful - - - ? - - - - - - - - - - - - - - Yes - - - - - - - - - - - - - - - - - - - - No - - - - - - - - - - - - - - - - Authenticate - - - with PLC - - - - - - - - - - - - - - - - Get full node - - - details from - - - API - - - , - - - including - - - all networks - - - and boot - - - state - - - - - - - - - - - - - - - - Update node - - - boot state to - - - reinstall - - - - - - - - - - - - - - - - Update node - - - boot state to - - - boot - - - - - - - - - - - - - - - - Send working - - - hardware - - - configuration - - - to PLC - - - - - - - - - - - - - - - - Notify tech - - - contacts of - - - problem via - - - email - - - - - - - - - - - - - - - - PLC API Calls - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation/bm_sequence.svg b/documentation/bm_sequence.svg deleted file mode 100644 index f9a0dc4..0000000 --- a/documentation/bm_sequence.svg +++ /dev/null @@ -1,1821 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Master slide - - - Slide - - Drawing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Drawing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Drawing - - - - - - - - - - - - Node - - - - - - - - Drawing - - - - - - - - - - - - PLC (MA) Boot Server - - - - - - - - Drawing - - - - - - 1. Boots from BootCD - - - - - - - (Linux loaded) - - - - - - - - Drawing - - - - - - 2. Hardware initialized - - - - - - - - Drawing - - - - - - 3. Read network config - - - - - - - from floppy - - - - - - - - Drawing - - - - - - 7. Node key read into memory from floppy - - - - - - - - Drawing - - - - - - 4. Contact PLC (MA) - - - - - - - - Drawing - - - - - - 6. Execute boot mgr - - - - - - - - Drawing - - - - - - - - - - - - Boot Manager - - - - - - - - Drawing - - - - - - 8. Invoke Boot API - - - - - - - - Drawing - - - - - - 10. State = “install”, run installer - - - - - - - - Drawing - - - - - - 11. Update node state via Boot API - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - 13. Chain-boot node (no restart) - - - - - - - - Drawing - - - - - - - - - - Drawing - - - - - - 14. Node booted - - - - - - - - Drawing - - - - - - 9. Verify node key, send - - - - - - - current node state - - - - - - - - Drawing - - - - - - 12. Verify node key, - - - - - - - change state to “boot” - - - - - - - - Drawing - - - - - - 5. Send boot manager - - - - - - - - diff --git a/documentation/boot-manager-tech-doc.pdf b/documentation/boot-manager-tech-doc.pdf deleted file mode 100644 index 9a336e3265b21f6aff09442fe4ce2a5872562742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115600 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%0D9AY5A%fc+6ERe_(8+bLXBmx^htxTTIxY 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

=MEO*c<4xVP(97nZTSbtj&%g*FF&OQ4N@%K-a zN`XNs5?H6XB!x7RjajrNJ!ux8HDk6Uy=oQ!?tt|r@6b=Rv&Yw~3w)dM3wD>)d-ByQ2&qk5QkFyh!R zu^lqq2^r4Q41|)LPmDEt!G$}D7GOr*mD0)jeQng2jdEbL=QFK+1WAU$kRwG{^o%|u zrAb2xWI49!u%MDoK#L3>JM7Pvx!gZuBTHr(YCO>d1(rsZB3{FfR8@&{-bsrronB8I zu^BP)8s^kD*{EN>ntL29(ET22t|ftNdYFdeONaLg*0v(N!r9;*hB3x#uHNH3+OpT< z{<+0>xeLIlsG8xtX29{J!n!ZXYN7jVS|@+{4csRY$!u!@LvBG0QIEFL;OQcOYPRg6 z2E%`2@y6;5lJrhoRmc#jli$0t*31eQM@^$^6_mj1XAOpUz6eZ@`>3V%4vfTX71RaG zG9eELjpA`CegS4V7jd+5H-d*hY$~ScjsT?W`*zmc;}xGSG)5)s#zmi?2DL?!I?D{v z+@!i&15WJKeVwxoK)cwtnb-yY^@8TeJ-hK?xxy{f;%x9vdQEOPbM2a^VE2}yZN6&r zTT8?$8dw7*zhYzZ3{`El6Humg?aZbHNK;<#V5OBu%KPok>+bj0XS*yIE=&p9*n5$| zF&(64r8SnhEJnc-jT-%2GOZcBBc&a{+5vALe1p#ykg5{BA()67r$3+(C3HiB~_x1rqBMtfz?P{Zbg&_Sq4OZrF8-5RJdwO6tl-dF|>tb3OLPHG7TtA zcq|==%UCc2?54wu1^r`R^rjsSsH@*kz89%-i^L8o5Z#N`HlvKfh$?k_pift#@$z5W zGKkHUT2^9AkpkHPr<4_z1PNX4c}m&73||&|0HsmX0f5ZpT!)tyUwq=u0_m7YEKxC@ zUE#%*`J7QL@Y_(@6SgsfTh8eFYY%{AJkB|}gd~d~MPZSAs`@M?$3+%*ueKANxzaD3I1UKy9mSE;=h~;qj>E?OB zvt3kt>8?BtvR!{nX!{Om92fO$>&Y8^Xlm&htyW+*1H*#*;HJh76irf>`$LZ7yp1_- zJqM6>X6USKdwa61ZEJ{MWT9sjmysV8!i}tM`Ua(?z4UYK1FeqX{#AMoc>gdp?-`Z3 zK2ynvVwze%9)WSuZjY4k^M18ll2{OH+Y5tugA1$xs7Va`T&mtF%{MT)(nFQPC8}_z z#(o-UdFtxaD*@h%wZ^*j9zfRtw-=Dw4yd3>1LH*f79D|@9q$l=yyv~C=Xjgd9sO3Wb@#}1&}%inMf8hBH6pVD5zHH zD9zgo+?srgdw8eojrhdx(P&_~puW`V_PeK@y*3Pf0{hi+ndh1lQ;#qS-HVhqGuIGO z3Phfk+3J3z7;i|s_w3nVg(?UpvBwrsnhdz!ubmrL^w>DiM{EIpF+hup?HP4*E17^F z=nWZljDV-V{mNWjmv%9*M;-Qw`nh6@W$9GjVM)gZNOjg zCdeTots~zjiLRh7Wti;FpJj-yBHn38R?%PDtsENOH{rHR9dEdF{-D%@*7S+3U%1Jy z2D6@4>oMa4&_VG(S~48?rF;NY0hLvn_uaUEBJqz|NTMKl5rQ9XYVHDS>ijva^b#F;0 z%Q;-EQ7^J)>(|Y&>~?-k>-rr_j$ca%zBjozH6M^;j$!G(cybO!)2O~7x8_*#db1{H zOasVGv>#Aks;+*m$FeQ^{nazqZR*0%=PaKA%@Q=4Y~?CJ=^;j=c8-r}?r2gYdS7QP z?-Ss?8VqFqb(&fnEVV%#3=R^N42n2e7%r2C@^)T;+=N|t?QRN0lZ(fpWx7rqrlsMH z*61(Ou@Zxj>Y;S9s>chkj1B-SH7|L<{r>j7{hotRk{gqQb7MTxD#4=Rg>8py5doOI zx*OGm*Ic~%du-!U8wH7?eMy>mY9Tu!Wwfrg_Jg)QNIx^bI*b&Nl>a2M`^Xf5?t;+QH+vEWy_8bOp;7T zbjK_HofKnOzPYiVQTL2kJpokGMK)7?vrYN7=n^q~3>;Xb-Bz3qAnvSJ|AZ#EK*!u@ z-`7S)>|j`}1sG*!v9Tu#&sbuCW=UDLLx|a&&Vilnd(LNsj8@+_(M#nda&bs#t$efq zlI{YonV%w5N^w}dp8=yeoqsmBAHm*5zPo2euI}rPIq;pE`sVTDb=x$aEm!IX=+OPb z6OXiv&9Y1ZTy11V4E^dz#kV{MkdxeOl$4vPBR3XWJ(zXud|i_cz>r5s?&z|42ye&T zYjb058dPiNuoRFR^0)c90G#-Ni4c`r!f+Fd2*mv{aigd9g@320{XEjA`He_U1i3gU zj9llp#Cd_XWwXzSmWoAB!x#WYxBP?AcDVb?j5&HEdC7Y3NpUwE^37=~n^wkA%2VVa z1vteV4;(9AS5|bc+4^i8SvKJpM5`Ouy`%%QJgs%+M4xOP5l*gCVLsS6q^~N=93DVy zD`7R~c(rqQsN%1?Kq-aWFx)s=DEz`y+ctV!K;?bnqAbGDs<|4u%s;o$LL?C;7?Y}R z4y1#2>sv4pJdWspM8xKg@1-z5Vn87rQ$qa2l|6}rfd<;4ResbQx}VG7_D-6D2&G#z z{Ud~J%uJLIU7!BD9loCPIQJY$w6nrQe6r(DKcbprY{ms1ZAWlw%NdeJZ@#pFHG2;F z#Gg)vVXP4y#2w^Fa^A}QMbzJ?UrC3)ntFufOx$wM>MyNaa;FRH#!8BXPM}lxG%i6F z(8~)sgh6}P)^;6awj{Z>A?NuI(c*9I_)bcS>obm*$sQOhAttIa4*X1_Zp`eil5%M3 zwykYr^0qo_dAJxE^=r&vQB-7(!ZW^B|EPb*m0=*$dCYTvqwd|Q= zO&wfIB8VOMm_v`KWtBGbHk%d~8FQqb1Jmj;SM=JHRdFv@Od7IgL1 zzl{a+ybjBC5a+2`#kEvrSziTPwV;eD(7WahjK1h2@QL0^n_X^1clZYq@dqzsU|+fF z3H6y zVf4VX_Da<2ZuNmx1W9#VPGH?i-_8pkXrRN9q5r!p|EQS4aOlFHU$?=Octvet`9bM~ zJNflL+;ALtro~1|crSRlrqt+elhe)2VEI0V2_qCAX<@@7pTyAm?ognNg4yI^ zu^nMzOz+#A_A#LQlIP}c1^#0MsA4cuL#@OgW-=TZ@kXpCIvNbGm)j$l$hh9DXWl!< zn}DvTU$M3O-yCp((R%H{nBhLnu^Nka^C{I+)Jz0)14hcvJG`Z(a{}BP`xLj!>t`*W;Ulw3+tAg_3^-OhaMIIqFVE(3$o#$9Td%_Vp*{A`113=YoPG@ z0I_f=MgMD07jWb-eB070x{`6VFp?Gn7I2nhhDr4YSALS8pR$^pkmZbCki+!{fICu9 z>g~Oqq665vXvgOPn$q+Ov@5dN@)a|2_~pe!CZ766)`mZmg@8XX-CT ztgE~>a;OO9(a%&o(O0vk*SMnD$BP2-Ov20`D~n}yA{%{r`Q?{@3?}sgeU(gNKUFue zG+%YfpIu)hCY(GLDy9-yS)^Qr^+t7yi+?_YDCInBXXueLG`e8NOkyWuZy{~f^eRx| zil4Pr^63Ijy_DBOcX-eCHYO|PgxW!xd_o6;q5RJccwgX+W*O=GL_U z$~l$?Df@tpnox0u`R%q@0nh4jn(kbPRc=EU{RH)gndToAfFEn#IsXh9xXf>FwYxET zVq_OHxa4qisF(@9G@$HJg3JTlepIOneNXlVP`o|3{?jvQdwP?H(35Ty=Ue*-hd~pH zaIFS#13;~FC9E^MjcbN`&jFT7MghNZS_Cx? z!X8e<3%rkcj<(8;S%L=)M#ZFp!*)A!8)gz!eO{9wg`286EzMj6mN%WF!$+^~NCh z&Y|8*$W)+RmLYRci+wLXcM&kR?@&re4P= zC;#&=Xw(RW!;IKurj4Sb0ACUycXP(#aiq_yv+_tx!c zx&X1ZX&UcI=bvA42>qip+}Gtt@S{(#j@}&8R3$%J{r?JVvu1hSVHDA_Vsu2b7K$)q z>q_SQ>n9@BJ<`(Z4T1;1uriK;;_a58m+$a+ucye09WOgTu&sS|u2KC@-tP~Uu|k>{ z&%5rRF^K{^rKzz^Pm-;aJ10$F%QBN8HMjR{A* zYA!{dES$SfYbLvX@!5BX|Ihj*`x}>EA$>a#Ju7<%M}@5OzIucMoxZU81h-Ye+V;m= z0&gCRoNLX451(|9)gb`0)f+)VxVp-Tu=)Q z3B8g&Vi8x~``+(-xX(Z8gMGfm2!Suz$~pEHgbrHfVT2sGh|Ir-7DHxI_I;+}Su>>{X;U z&$nw<4}NIT%a>$bWUB+3`iYikz->q0)3d|89d2_yxSQ*VQDrG$F(+x#SAmHUuU0yx z%C$%2q19rQFc2IWvk~jNatV2kf$DCwzanF^xD1sVq)0`#T#g~LPLH3lOQBrW`cu|m z(-UNSolah3M4@Y9@cZxG%{p0`+`4tQ0-}T_qxW(@D3Ux^nno=hZLPS_&N1dSDA}{; zd}9{5rFrmUQKGOfE|3^jYANCN6&xmznWN%vf6D3&7Xqwr&MniS-SkpD9|sv;3jWMxy%43tqW4qx+BN}U#$KDgudi8$e*sW zXPyf0)|$j=Lfyi}{Dyz9N)jy=a3MpC(mnpQV6;#Fq9iTwWjmxCFR{o4 zh04^5CB!Jj@HM86Axld@tSR%_TjUt>a^sI*_lxChoqllQQdS^BBB2esAZJOq!?otP z3Kl!nK{4y}^b|3kxnf*-@}6wx1=H_W4mc;bRELHTte2XlI3+C>ByReIg5TIXO|X%%NmjlijNq^$yKc zN@s%FKWHeD_FVHR>TWxsO)X0<*NYi=I#n`98&FP~Yd#KQ(sDuikns-_pP%`XJw(m~ zJ4h#o%aI?GO?niw!gf}=B9bj?)LN)mGxk8T;(7;0{Idd>bAzVWa=iNQl)Xh2t$5_@ zfC`mJbX;YQR0LlVI1JMiG-~i41ZxC`G4#v!gW1-3O3;8I&||k~PGh$tQoW4>Zu)T{ z#1qs$+M1I$Zxvs_FeE1ws;|Cz>!nN*ZC|#;>_M)ZlP0xEhOnU4Xig7Iq`dyJvxpgl zo2HBOrB)Jbo&fmtnAp4V$puv9_+i^tgWgUlB6{>xFF#}5$+}A*`pTeW5oNerUCIXapZ(H1Z3@QbwZKBYOYpk9#ztNl8((CUM&`_ygpV-`R!5uC0!89o9K^}^LB6RJNO(F^eIYrYbDt9wwxxA&#BPmD zTcl`dglK62z4Q1ls)ya8$O7R=3A+_NCunfecDCbzBARM zb+^GDzZ3;s2YmZIbf={%i1yJ%8R#jX*J~Ex@VhWf9piwFqaC&-FAde=h0ZLxmDo~X zFy088X71(di_oF1LKpbIP;{b%H?(S2cTFvNMQl9ERiTMii@S~ct329OfhyuWgKb`q)sc0 zcbTl`&hHv!7ocS-4fMWk%lNyCdjAj|E*Nfn+q_lV{NnM3Y@~iJ0R_{UR@0dgO=|ns zRjNIOfU-JG^zy(>NDCZ$#@s)Q&Ag0J>B?nS=|7)9EcMV_bxiwQQ=y}N3RN&1DtHTd z_UR5XnKE05dCuq+w4Hx<3_;G@lfO4|tW`4uw>FUyc!ui8j6NYtQA6GJm0MIpq(7?=ah1c0&KuK!>Jv&^V<>$f>l zWcX~b>MgaL(dpWG?$(q4)?f5U@Dk@JxqTXcB-oldwBn8d63lD|^2Dj+D)X_2i^FR> z0Nd(dHnok3$WKT-08VYOypY$n)Wisx8jt_NIV$!jbevZ@WHjHHD!k(cD6>USy~c#_ z#X+P>;ue75-YhvJ&l@&itrtATEtbf>EIGKZoaz8XoOagQy%qoV`bl=gvR!GGn-6_M zc%Lxd>ICwW=26ntg|D(WO7R{FUJSf0AxAJmrp;%aX(GG3zPy7&&S3sL8}@km{}#Pp zSD1=`Xu+ipj^WcN5CI3_3HEGb3VaC>@qEe-w7bA47~I5|!ty<@^2^`4=UW;FCJxXD z9c+Z|<(XH6ETT?B%lMSa$9`#Y(Z}(a04YMQz58qzlK zP9&xv$U!19>jLQfHxf(H=@n1!r1<#^`--V)UyQ9sx$>NMjJ8>>6V3g3Jl~n)&H7{S zwYR7VG+JmX5@ep19Z1pmFMn!hCZKR|g0LUG1X*gx30_Z7H2)CS^bc2h?U@D}P9+;5 zh?vG3vOdy~&d>v(U7kw~Z-F(?ww&$(<^SMu-#B@OW8Z*B};`~&4l)TN21u4JtURJW)aTf*i&PPW;UZYR`KLB%#FA= z<8U+}EMM_MwlSFmV(F(C0=JwbY@N6;e_bkn`z0WqRBv!4jnp$u3MuXxWM|4>v3><;;b{(Ug7g^r(Pu^y&1iPh=Q+*4I`{D6fV zy1vCAuXjlIKV%k8XS3vo(}MfKBEko!?1NJ>oiMLK4hr^(yrg|spLQ6`{3ALv8R5^P zj)ZlPGSz8TO-lLGSh_@5#-BOxYK9)KnmQTPXs!ycS=0t@kaMd^H~;+gW3wN2Df(D` z*CWH5kcUVj?KcpL>P$ZaWkKY?d4ncg1kj#%b^)w)o;E+p-b^oca=081J4a z*+iGbw5s@$8wGjveePV7gR70|#Ldru5u%xm{3j3__jr@yt1NR?M3huYsUq`9%2JMu zIwX6$>C8~n|2IN&58R+$-!strsw^m~%i|P2AxNspmumlf@Qe^U$f+Ny9JP7}hzg93 zCp@yQv6{Y)i@b+r!A+3h z;B~}xx(qJ!$AI(68i`tv!FHux)=8A(HYb2dvc()8_`-{CKRaooQ~5W)=~?1H z)fi3O{emI9kbfoZ4^N*&E#T#R~%BK24c)Hw_#|-;HJ=KPI&+x9B9ZGf7@tol&m10P>k)A6XsY@TFp8dk>4p_L_Q}nk ze0Cf#_JKi7L3Cqzq@^>83R)2!8&0;JtPSqA z;^x*(LwRoZ`{t6i!4qE1C1RSXSw|L%ihDHIe9H|dFcNW{77P}<5r=s_1tirRGjAtS z)KRD&MvIRHgkVHN4~TTPfROOiGm*$eXob}q#}-(5^X+eGUDPfc6`~g9aVkx#RW`Po z6yfU7q*WF4K3doxdoDTuX0-3*HN-6>T&DQ*oP81Yhl((@$w+oNz2oW4_Of|HQk8E< zLNq?ual}z{PrIjf{ZN2e{zV~1Add2|YA4kapR(v=W+6LC5;qq8 z%id0tNixcw#%h(P_pn*)V`u|FUT{9{R37+i&zvIQR8m%zQPU;aCUfv)*{Y2qhB6iEyyyf7r{7VKs(I2V(D$RB93*)nk#Bd z^uHdS0ATpTYL4YMYNJJm@h?rbPscwrnYV35w+p|8BP-F=Sl>u!(@J#B}EM4=?-olAG!rU3zyIwvu|xtcO=(QS?}W3;kr)q-=VdBN*XxpakGqn$+y$~9KrWj3c5r|G{nXL;@rZ|Eb<=J2dg)Bl}CF{U7-=OfuKfhncPxcai4afuBSx7L_tKlJKhlZg_T1ow7p2}G)-olr-r z;TVtrM;KRL*!)y=;-YYtPF>`p3n(3e<}c4reR)aj+@`)85 zS4Y8F^k}Ad+Jk~TTSf66OBQSz7JL!W3~9xMah!Z6Ej0y1u9UOlGTwK_x}DwV!YRO{ z;UYkIlik(3vs!P|wt1yBv#z}3%?aAU4fO&rot|pb6+uPVwG;UWQs7$jK9Vk@Ni@SC zTg3_+8bFW4w^Bd474t<>FClk;1g7nB&M?}- ztYJt`{kl&jf%0q+CZaRboWVZ^=&+dAdawEphxS)(T6qoa##Umc{*g;jLXnXOW$zIA1?hF`gbudL+(Z2ATc!xT!DUuqrY`xve|NcQRn)5|JR?0r?0OwL4AmA z*zNzj&WrGSA9|dYV5?!AwwJ2GQ_xZ*I;amj;$?{_nFH=4)h{uLCLc z<9C#FHq&Eyt2byulBjJc23KA>Wd6Tk;})e8bg;{-C9>EXN*g4xaOfuJFFxL@EZs7YC%!VB2oua zZUbaz=(v|a`q>_C_M!BjN!92rg z(3f+8W!-Lq^8iP_c7yp@mDgF;bP^TqStywqr*l1(8RvaIjrk&hfDtXZ(WIXbGsLvRrjBmpM=R2sad(pFe_=BA@9s1}A5+1q917|WaQ)tqJ z<;lCxg!9wbk%#!vqbYPW$r3jmc?YvwZ5$(PX;VGr03)pVOwLHw3tMc2~TS2ZX4#<l?(0@or ziz7rO#K;sI*mj%MOUe`G9Px?KMKLXQO92 zD~qSaX%Lq)?@ozRysn_AZU0%2?2y!D`Pv-RlK;1~{`Jd9CTd$eha<>(I!^+(mok+Ury&3{?Z0jycLseON)d(AG4W5<@krmlYk@lKiz6#AHSr_|L^# zgs)Z4-{Y01mxshGUC0a_a*eUK!(S_KFhxnMJ@z%`mU6EVD=(~5O*tJIlHaH5iQ?8I z4YY+!R~VGv0YcuW*0n67M7(q21c z_HC#I{O3D1bJ6%7x1a#KuM9Ps9w#x&kU;sXUfaU9F^nuUdszf8nDz$2tGtV~pJqBY z{J;DjIJzSZD~k00iFtQmJ3qUs7P`oo)nmb*vR2BMPW2^}WHA`vLgKB7ay0G)ow?6? zJ{rhve3N$sea@I=3n%hcOZGD8?Sa{`n;I=qP}c2quWM?g%+A(WvR(nG;)vUul55K) zxSPtJ)!EME-Z{)U;N$Fyc5o?qr)?*Wq!8?AK1yD}Cw|Af)+gR3gw!(e%uI^#VhtA6c{z|n!Fg^z&w_qeEg7G7q?zl> zG}S`%+b~Dg+h-X3YmogJdSxkuuu3YyXF!8~3&LKHDIOsA9nBtAs$M1V+w-CF2|)Ve z6(`oMhnrOK6gLoRN~$^V-APu+=?OVXEdE4m@pAHg0@>40nKBQ0_{8h~7yKTu6hgYK zt$vuIi?-I8$66Ntw>VxmdR~oT99xp8JS2k$mD=A=3HL`_EoI{TP8O7xM?9XFk$;35 zv7=dGN~2%og~oHr%SoDTUmS8Finm2Kip@FThA)0-2b`v+=*@>T3sbZ)o`O*NJJBOQ zN?LkmJ)evTJT_t8a3uZq1P-nNtevS8E{Uabo1hY#HPmpdgV=dMX)UbH;CVsRu3=JR z2!N{$8Gsfae1>>ISF@qs)PLxY*%c89XqT8_xJht9=u1UF`rS^G*Fh`{YXB8rJ=XV8 zCE3J|T-><9#6p(W2B@fjV$LW|k(^knMjV$P#WmosI9eZ1Ihvn51DHof9p2lz3s2Sd z4w+VAWj=L$E14HL+= zQ_t|K9yXOtbSSoq^s8S|NW4FS(z#nD?%xaSsM7~PsNeZevWzB72ysl@ur7=YSrIBc zJLvpfcHLSue{`gtKPaLl2^Gs54Ich#?rzIUp{TV;!T*x!(Q}C4wR_^HcmJ*QI#^PA zLt{lIc+4+zL*mlFP%JT~c^dW9YJ4#|Ti~Sb{RxOrx%P*QWowCyP^re+(xnWfV(0$M zz`CN8`lE|j!?jyprP^zY*yUqoV*ROvjK$q@GaG9g$73nW&h{B$ku*2*$af)Rz9c?(e8v zb};@0LWp@|^b@63|CoFI`MdnP^}~L4I}E6EfIh?a#L)y@X3nBob$(j4pLj%#oKKgH z#)UX{DkQec{~Ix@{)VnS=|3jons_oRqSBGwZyVH@+eX#0i8y9i6$O~p4Y}MaRv*%l zD{S8w2YMp9HT~{I@%RyuVA0cCEMK;zosD&?ztU>3*wHhNu1Yo)yy$Txuu9*&yt~D^6M37NjcauT@Ub%oIFEheO z)>Ej@j(>-r_P5ESqz@~rDi$6noeBDJn2{aMRm-dv_NfPVltKbWqr;mKuI8|n|2vYcB0~kb2wh;{2qNlfnAhf+Z{T|(!IxY7v#-Aa|7J8 z`{3AApjg9FWTA2Pxg%BU=$MDhD~a1&CAK>WiiV|gWFb*pjua)E@MlUg}TMafSmXA>sZE-nu@6 zT{Y_nnLkAizL_LZp~wLuJE{~yGkBLT!wSi)UaJa@D=Qs%E*LW;xZ!d;C6CtoVbc3$E* z{@tQ%JomDuJ_`gV43~qxe2fO^z`zLJ50&!QL48~nJBWZga9mA&RplbyT~tsA1cXNU zt$N(SLFqf1w)Y=c2UR=qQ0juS&)zABeNN3Id^^36QpED;NtGu%M&RbCFRh(`UKvu0 zsKPOBDWCQT2@E9i#QD;REw}Biu_7>mGodUNI;9)UQO{T0jv*ELu`LSxTntHw6-MC7 zaGQ4@qF&^n>J%-Cr|C}CS9vZ%7H>~+`?ing7>RwWHLJp1{N;$-E5Ilk)qAED5 z%uKD4=;}MOuKshA>Q^pVaH+Gn33&$@G9G8X(XFUX69>c(0TvFSk#+;k z0d@yZb33;pR#)uk>Z{vy2l6&Jj63J-(35-x5kpLZ9?rv;@HKQgR+~Ziz3f{w9tD}W zZjA7sn5GyBv1?@)<2caxLMjv=>y zl(DWRg3suODktv0JTEO;+ou5!`}x#UG~TweA>@2PHJQd+FuO=eeWSoirou4)3Pkc* zf&Bzp!*R`UeUhM;n{zW;-h4hD)e$Jkl^ zPvrN7^4NE%e$sNToQ-_&X%N`v1c9@}FvV&|){HI&#}=@z8VQ)0Cn(+OxV^kK|1KFsh`DMaFK_MNsVhL#%zW)Gyuz|-CdEZMfRYo zr@3|2dmiO?`ZQlE(HT`=#b*e0BJYp~9+Zl$R^&0YBhDY98GTYJtTk=8XijwBClF)2}uj-A_(Il9g`R=-76@kbFrn=km(sHu0 zi|>Ex9y@xeLvuO+no|2Z*CUSYqfo;-F@e8$)(vI&`sMva;^U#KpG9sHj}6&RgTxhA zRoHC%g{8ABy#-~^Y`ujQ7;V1-26T_59WYi`g~@ExJ5q6`uvOA7RDIUS(-bHvffbO+ z1+P0+Ibv?6k+J3m6_oO;r}m*W5O190ZPTm`Qeq-rB6D}9Jt`68hraG}xt2m5K8|Sj z5p4vEjThs<2JpwnC|~Ruw?vKKedV&YIXjD{va)X236-XuaBEAd@G?LTTKKo@*p4ag zD9D`Roruj@q&&k0(;ycCOtNb&K2B$%Gk*x0(0Go^msMA@Of*&d95bxEy=R7uuwlG( znp>NS2;74F3nJ$Fw3!jP6GkmfE?7?@e1>w^xuZR1bl@#E-q60R;=2k{bI3f(yDG=r z=vbvqB}v-bE2)In1A{85;x3G(@GM(P#U({EGAfU^BO^2DHR1kV$w_YA%yxaH-2VQH zn-~Tq?6%iH4n3pn!dU9SkKnM?ye?tfzTh%t-%-MmR_9HkQcudNr%V+bq0pDU|K?`4 z0^{`yUevPWAIfFJB!3%uvO^Vl;p8$NQXRxONR#_a-?uDH7i=TG_gmVwKQeGO5ut4i z+QomeG@<+C-cU$4QDCx;y3bP#>m+>?$x%?w`X`W;rZvOu-@_yk_T@<^552r+_YXa` zoW4>@h2Q;HAuI{()Xkvl`W)Ox7PbGuUI<6tCC_(zKNJUDeiaf!*ap?S4){gz5fGtQ ziH>N%yRBRp2kxI%8wwAK*aX>YUM`C~1~qS_qcn;My*lFiKTx5}K11siT^i!+Cd2J6VDVI8GP()vg zP;%?f@_UfB5}h;WRlK;dh2A{nSV~)x@&X`(SuVk~vloxy`e!(X9ri!-xEP;LR?AMf z`KuP(sJme*k`@}cVfO_lj5~u9z}2h6Lj~oIzjOR*f$|~w2~whQ7wrafZigWMn9|#(6NaL5YQ<=JbXz=Ld?_#`oZFaPU{B4oqT*3` z-x#C|+twH$6m|CYpp3pSLii(Sd7S%r5`>re|x(rtP@jvihM~`C(BSPekHN{ zFn$xhk6AxBm?Fch*I-x^xAN_qlU9iUJOHzB5QJr7ftunR{fJ|H!GbI$;&EDiy!`B; zedt2>Q_dy;eJhch;d=DL-FgME`p9#)<@HtvE0*innj8?v z2`?ck2kyIb<9dEQia%(<5M;e~{kvy`s&CbA`Oq!@fK~mcsk~D^A`;*JhV(?oKhRHJ zy#_V+c8y|Ms5&MaL+qU#`AfD~=& zLhTnr@}B{Le$0s^G;p$PGfTMw`9(7_Cb8EsgUFaCsaHk`R(a?ZJZBWX&jPqOzdf>n zg&zsJl&>0cu8r8t?}l-_YkeQy(R|twTdnLu7+L_r)*YvpJfgrT)b}!acy0$htL3q0 zw+dj9QtUkmY2+xPn69lw*wqTZQ8K`n9aQH}JOP9nV#cA})A`yzQUiSkx51XhP<2s$d~M>rGl+I zD=CaH(Dm8PB=~(REs(B`O6=GR5Pfdy!0x!w-hk5(P0E@~vwDz*fS|DXug7lcKlQbJ zf1CuZ18)S_)THled2$+Gf}7Y=ZTZF?F2R3#Hu~Nb9IE2*clj#GW!vfgSuP9yp(C84 zi`v(jLu;3Khd|)NG`=^QfJE*V=$34&K|Des&P=VqM4E+M6fcMzge}c$8JRV@q+M7e z6aLK=ux#k2Mpzf=zsXFgu{fPm-Db z$D-%bCyl25Ae8xmGlXp?7H8%N#VBW5N37*TqsBeaWXN!^{4FA?R@)N33`a?a9MkR6 zn_Rc=C!%mIrtgG{SBE*v=Tyze9BVqE9i_4jc;6-Nc4qVI&SMF^Ngv#a@D$+ZhYKgA z(C?7Z<%w$sm;dCRnYC)8IruLDCgjMJYl$gdG9kmr)SR5IFmB8tYCR^1teIf=5w^?_DevBqmYGE zbq)~H^CwevtQ9W)r+9V&WJ>bWAU3#S@i9s5s&7=toiJ}-+CBbXj|qAu)gAO=}-mO3k&%uM;NJLnf1LNY%!0X&1~ zpZ??kH;rTW{;u6Kd)hxHp?d&08)ieKJszhH`cd%uw*N;C+?gy%=MD$Ife=rj?oMPk zT~s=FBef}TM*hkfdP~5a1x!qIzi?$VDJ6s4=}X9?mX=SjL@?~?UyVNVG|2-%#zzYW zlfo72o~bwqd9w1n3Fhum_O1v{(GML<`jC3R%szT-#OBqIHW0<{(a*5;Z}}iEZSv|a z`7aEV?guzXL5&5Saj%fT5_pfw6duq5!#@z6R{-kK7>rY@-un_6CP1l@m|Kk;o1|2w zW{FP`1><8eufDHky}|UjLJF9m`MwhWuEgf*Vc#@~m@x7$1p(_vGc*KGoG^xR6gspE z4QAYY!%~3eZrx((|ue^wjGULcNNsv zX=tMo%`^Br#ED5GF}sVocBF#z%TrJaOrHQ?(rc2t<#Ug~zzA7Tk*sGXI-gt!9MIKE zxe8w%I9u32vHcEW;a^vu@lG`VR7Ef|GRA4mO^-$p6QOb>Rr-E)poN|5o@GWIpoaa} z)iW+$;~XFsbkS#S`IzigKu%}P<(gU;40JZ39aUEEp>`Oby$f2yO{iwWZtwJySzv{% zD4jLCak3$zlON88yU&p$pB(khqiHquMU`jm;RP<@R5LtfRhWr(Lef|U z9Md=|Uc=u8VU+9p(mGtlHIk<4LUoh^ZT$S1y*ReT{~BV}L$fMn%nFkWjV*xX3x5;Q z+ReZHC|D=5zth{@Ob7jZwE;*em>w7oq}jDK2s{oNVA8P{{I)R07g12ntW9?(<^E*U z@djkOEYMveq`f2nvuH#HQAtPQ#@`d{HB2-u$yK4Qg+eWtWcQ1qCQhc361t0EX9M={ zK249!f&SBOIk_>i3P^0JdwUcJ{y~1*orvTA&q9+U9BT_yp1#U&Yp{|x)2)L1Xi$M7 z#z;Lf7hGA%j65DGF#4zEi-gT%Jz%@HvbF%^YSQqPREegUiV0;0lBD&>YGuG$=1-w; zEShU~eP9Y(cRgqX*F}n3iZBD#R;8c}(}AQ=0~oEBCt&xdUCH0qw2}DojJ$IJf6gg$ z@9GMGL0Z5?8gqLOk&CP?BObx%lQ|%`MPFifEYe}m@4q9Jz$@B9XKxW^L>0UVB6#lx zoY0iS^05xbz@wBp2SF9!`Qvpy9PH65T&iv)C(mBKEkolJE|5~x2}Ym zQbD#}qgFc`(-b~$hWTxaCT5U$9XC5EZG15W2+)R}0qC(Cf5tof-(&vvrvBwy{y=in zJ?y@-sny<5%8KWN81t#jz2pDGeQ{JaR;z}SATGjDsS4}k(yp1&C2A=+q3u`v-5aJ1 zsX+3E?M3Tb_`e~*_p6%Tq-k3PC5f?H)u@cj%fHM2Sy>h*E7@HI(EfCx9h|RMl$;ihH>*`FptDP% z`Uo#gPOzR0wgi{I6Mq&YbU9BR{Lk>>!nL;#&+Zx(7;+d&BM-FS)&8`KkITF_ool0V zG=4pX&TATF6=l|&T9k+mu)XV+S?QvDk_PG;+yz&c6=24FHX~cc+cGvoGWdG1k8GfA za~D?6bK^cd7x(P7w1Z^Uvg~C!CD||=aZpf{%rf0tqLYA8qhrksf)iD}{156prmgp4 z7VxUsXS-ikwE2BVb)Q6kZU$J7Ue9o>wWk%>*FOM@MwYV*;b}K>WLN=qc1vg-O#*9Q zPe3DDhE6qF9EHp-I%WHKkVr_bOOW3_c8(OJ`V`$9)2(;Vq>CRN`X}aMQmG~SPdey6 zZj7y)uR-+fCj(*mfQPR-`xOD262;~U4Xl~GQc*-z=V*ZYZ*@0mc=qQ5j6hlhD`GM; zQ1T@#(L(C*G%;G-v;alld9G0(mmiuiF=%5V$kOw*hw;$SgJ-siRO*VqcyDip(%9|-Sz$$7CHi9zp^)|r2FqL~Ms9Tf+2+@&Nm?Npk z(!uC-I+-U8h(UqI(k+>qCe`7*X8^HDroTII`nnEs)4z2*T-R>D%F zEceC2l);PSC(fH#nu6cC(Q}YRYMHlKD(UGZX^eH~jc)Hp? zXze5TepN8@6jde>_Y9<_@r|>MwY)~_YWjGO7p<#mXwrU^W*|HC@k7*Q&~ySz+%O_U zuA9MdZvZ%L^X)A0;!n)7=_|ba{4JAUWQr(Bf)k~SnW@E8~XF~J1)Cig3fc&E*w*h@gxwB1#S zuI2?yy?UAArq*^~=-m}Zn$Ga$eSOiU=?!UyP6Hbi!?mRj! z_+#l?vBx8f*jr-rOCozA8TXq9rldT^3NXo-qJH)Xa;PK95XFUa;hO=G?uacxxx--c zfeSP~fq%@l7jx%5cx^uCw^G4(W|`K6FMoPI{u21S&3u6)0P%Nx5`4b=Oh%&sM~)}Y zyLssO*v$rHNXow4^mKpleub|`e(i7gzKVQ(e0+V4Jbhi=ygmMV;{BNMeM{|mZ|nRV z+5UP}^?CU6c^mi=&ILyS$z~-mCgGV#z!n-F-fQ^0d;)O4R8KE;KQ+Pt6@2!t{vLld z`RLd@%mhETe97ay|JD7xwf%Y`_v3dc|H*g#?N9E@_6exZ7lpjf&Gwgn(R&XtN3lRUjIoW8qmzTN zzV&y>*1!UWiGz@l@VoHq7a@a^yPYv1gPgvpF%00-!Pv%$kO}a!0t|z+v5~pHfUO&$ zCg3|GAv+T@;ZIIxLTwlZ1!G5BX9q)LM?#kWF%`76aRStIBxK_J?*I?a|MkWEUG>`+ z8xsd7`~N%2{J%%Pdmv?OW9no^$o#);iI`hC89NX%h*;@684DR3+8P-X!T=il-*a%w zI`7i`L&|MK@vM`(_iLI~PUGY2j%yVQ6ym+s4)m>dHB=umeuCinCCnD=AC z*XK>v_Wlad_w_N=_chek*XvL2SFG>nqwV(Bz3kWPi0?xJ#fc5aWEuxubV%gznsG8KtnKq%B0 zne{)idnOB644(%X;cCb0^&W3J5zeb9I->nha`Zn=OiVBDM*>pg+!zs(yBBX5IE^vX znzqs<3?lb$_|^*Z{4adjpxpOfAseo5sSIB$slEkI;bfMo>m5BGbRTb`#2-DrH@3b{ zWWtrFCux%h*G?C#cpodY2<#v?8B)OlHF zt#q|Or!MpTkFNKy&0-MYS&uPR_#EBM@`gHFAvDefLFqn+*k*s=W1ERH)cDU^tcUA2 z`q-l-QO5l|sAZ@L!oHXf!QCBNk}EXaj3eo3C6;*nCy2r}+}TQP5%qxM@Qk4<5)Ex5 z7<0e(uZ-y>KNh=ESBr>kISrn3GqSRXlt@Auo$V?a z_aZdXkANl)*fq=@h`OjbtC-5cvsm88fsX}%pgAy}gF&Z*fqvN0U&BIX!2*-+XzgGi zaF~KD`Z@aRa_ne95dt5B^w{;bA@PAsgZu3I-AVY(hu;9ICj-6kM*(axK*W06dKqx- z=)uGg;qQ|{r_+Jh{-+rXkk(L$*Kb#T&$E2GoPg%!@Uc&5zC8hMfcK%FBN3mQS>7L9 zJ00k2fCbl1r#zwU=uJPMc@TQ*|1B`t{BPkfKfK$i*S**eaQQp!00lm~|6A}mDP+L2 z)1lIv48aBTMTctV;lIKbW$l~#!*}JsX2stQsgT$;P61s}g*k{;`R-&g z2;eIIkIDA`n#BE&2`sopulvXKf4#E#ADcqJT?O?2PQ?HJXJwyTzdPL1p24E$Ol-ZH zYT?!{Dm0%zj36`HKlx9tGSB9AeZRJOD5BB5_6#veZZN<&iFfu}aBAkEiio`-P~WI? z&8H%4{dH)BuNqlw*((iBdw!(r=_b~R&nY*qXFeaDP!}iCjEM@yqBX>56vr`dISqDS z)#`Rp^`QVelT84m0^hrzL|S`Z46>Z9#%EEmnBBmAFjmQDhlfU5h-~=bt2`Trv8Q^L z(tGx&x#fIY4+lsphO5NLYVj34WtXIEi?T`{m@mdegrbQS!rXrDZb5EJ)#h)&-ZOCu z_HKbs;Y)>6>fPF=FXC8$sK;)1Bk7%JTjg;cE#UOm&icFwJn4n`kft&sRgvQcvS!(m zA{K4X{Czo3rUt>xe}NQ#b^CA{ED}YdfdRkodhyEZAl@RS~dkw zV#XAEwS9VdTx2W}n*TK<^uri?I6+H^G=vak{8vmLWMRzFFghpV(&`=Br;&x({@dco zHRyOZh>%9l7XlD6@PKq;SO|38xpOawM_hbEO*HujDGsYYdXKFx6eCpuc{pSEQnGk$ zDMHxb0glK@zv)mR&2011gQqs{O#|#trdsQNnMgEqgADk%Syl#6R|)k;>}tB(EA#vD z)B>@xGv~!*Dh4&K?>i}tYK_UsP!i$698c?)cepfjlhV_zqgL&PWIui)VUj1JS7QXE zpw|@`@u#bq2WD~_uiPAhn|7j3W>R=~VK55JTkORO2?jG}v{*4k=%p(#wkHdR$#VZ` zysGyOL>+IIwt|I^H>JOmI0qR53xS#H0iiGQw_|4pRjLI|4-vMjU6d{%`YCe&rec+X z!sBqzk3&jHM{65{uBfs8vUak9iM_`n8fyg|xk4rttg%7mZ{IT4qyH3BMCP4X&J9-I zkSAUOgH3FTW+p_M-5M>UmP4r7lMfC7g3uLS2D-TJl53l*28+!m3`%cZQSd+&Qu1#R zv0!^~A_S44j9z0ue7CaOO)All%ZAHM!2G@_Gg+^2f%Wupp0-s?cP(jCAkv>*(vtBs zt19w9{NQ}HVRYTu*S)V!$`RVMsg{eqtSP;OMkB$rh#RCponWihX>J|KP79oQbiLPL zM$ZF15qw9|A6zOhw6|OfL;2!0Vxt!!4Hu_A5HycQWJT6Z!;9i#|Ie=%-RHL|X>VS> zjTEJIIp0Y=NHr(edOapEGuAqoF58N@nD;b47BGD6P@fycMmg;FYw3+~Yl(gJ%e)BHLMc)cVB(ha$~f|ncJAJDao-2v3SOx`vv4DHmShjJ%rzM1 z;xt6F!lIa2@cSD2DNR6lNO8&*Ibe5ASXTHqM=a%zD%ChBv5{DZ9AM|HH5xfM2?@YPTl zfeE@g&K&F~wntAt z!5zU}$fQb{1MLRWQ97JhBY&819GS@gnJzq)=`&V2vYajVs=u6pX#W`SeBf0rabYqK zFu(f{8LLc+uL?#0f=eFnaRZ5>lGL&~4hD^L$s4t5I9oJaHA#qATT&sYgYbj(jOz2g zyg&W$4`BaOC#r31MoAgWJ3O=7r4)Lu-B?Dr@S-vwf*$aphdZ+~X@xk?q;($QvvbsY z(Rr>TbtG}+f?(4N`a+ERIgP`y`jK(gL{Fg^Fn~k|;HHj=n|aKH<+npJm}lY#|3O+TF3w&&Xdpfs1v zHV#(j$PdY_x7tH~zR(LCC%ip(cK}4qYPP|?pYM++#uy5gZp}vNaKxxG@F@g(7&!{1 z435uM$oZRlOKPPZVQ(wmfv{>J>0cym23;v!EOe(>crIkiWEB)!S<^-M#v3MkEKZ}f zVe^ACP!qf3IE0TDwhUjKnV6ShEfsRK&8t>#UZ3Q-{y(N(9}$Qbk=F45r03#?ehFn{ zus^+=gPud_A3EmGCBOeACeDHhH_l&r3P z9D+ZI3?>R%nD@apx($%053>p-SbC5t!h+RL*QF(Ux(?DqoXy=(-Qo{Xh|X~;XxeQB z4z939FyUlqdXzUBrJ60zVkRx6%!FyfEj6FP-jAu(i^i@=1=q8nLY)#IzAWG$WDx{M1YzHGP8@+L zV~@j`Q3~gf1oTb@XSOvCoF=)K%xN5@R8^A-(S)wavGh}F5oRrtIgAuknTECg8fQyx zPnuZ>9m5LDC<@)lu$!PGW=eCuoy)J*8D=!GcK3s-bw$0CgYIvgO*$Sop%+Z2Bbl7# z?y*6T|0M%9Mgz-Rf??GbDXa|o7CNtI1+hFSy%(MQrY$oY-4-I{iES-E)^!00FkEei zd9;BmPBdA3yl%5Vb?{wGly9d(ygGCxjt0Kwc9A|1SqKL{Q#eVS_7zZGWbi-S#djC{ z#I3VS*Q;xYe_FQ(K~OTt6ti+i!DPCl5ELv0w5pqY6?1jSECv`-y!YP0JuQ~Ji!K-T zP$|kONJZF_&tj!FJXW9?8w(Ugo!6e5ceqp~t%GuycB#>vk^)2oiAvm*23 z3?BPUipA$qOTmNl&3ia`+V3~fTA*9*o(Y!{KYq){Ks|;Q-!;@9t&l^hl-a+IuSnwaM#aL(PSx=f zn+SGoHKhiT@;_sK+O_kuPiUX$1HRFiF-1N9t}z`mZr*XjcM{lG4TwDi6ple!sNvhluq%H^ zgtzw^BMD{@%EAg_m8{fLbHookp&IMH?JVB6*u zM3-8~sisuW#3U3$MsTcm--wEutI*q-bClQoZdi9x%E_Vk)L`}PY?A9XWBN6ah)m(f zMB*iy=@KEhE-Do~7LNWx+`JhYHfxub6~uwh=&;XB-IL$vjvs_*L!Sp|{}p7CRrtIM zU&*c%xJ<{An#-h5S@TEsZVuL<=f+{7Z3ixskwPB|qM^+tR{g4)65lX3u5yO@d~v~n zUEgF9;%3gnu+B`KY^_NRJ#1KK?`6p1Ae?Qe5~N5O;o9md*sh~tJ#*Q`eK4`BY-7&9W-DCOlscS^9a!>7?v;}S&KIcz&6E*r$ZGY^w zzrDz14juk@cI7=L*gg5p5nR9)fx0Sf+WFR%XHV@u{oH2~C6D2O^To$7P3T}|0<4JJ z_xA2FyovG5VCcpe_b|b%61n1>*Xm^G*I(8)p2h zNKs(&-RFcZ+Ao4*iHpjH^)?5rbY7JD)h|25#H+{FN*s%87q``8t3)qOg+S;9 zPUjb6UJ+Da(`>z}{5}5^XxPdR573Ye71M42?l#ufdJ*pJy<>)82L(p~3()i-^9bzX zz@cIO9Q7=lL{yN%6j~lV3Vi&IZoX~&jSa)Mw%^UH`^nJ4p$X`c(zG>58jg8OtcWOk zNT`qODvu*!+2rf158$sVgg$cqj3ID>7>SaMWRC+GY+59Au=A`{jXJZvQ=l3>xx*Ic zmmuDVhlq&A^3!gz%&z$2LhY5okDqwykXG_O)es1y=DqmYIe9jz7qA^x;zM#nMRKFH zx{SvC%Q56CU2XnHd1#IXE|Ddf_!9Ti*RjIx%fgcY!hsV;)Z&4m21LvwAFZ&TR-JM z>p*v`T1HN@+M)K}5nL`FVVMt~oK75BD|T6u`Zb`Ok-{sgnZUX=8~pI!=j;RpG9tUC z2h?2aa?BB{x~4{vn~Ehy^V4Eli3!6JhdJy_By0I63oP!mRptF8Xb8f+{pDuljcYSt%DlKLXC+wj&=O=6!${7n)~8~KbuV1j1ZxTkwiXtpOjS)$veX^ zFRJ$m#_8Lm7YW2NvTWCo&H!=mb28FBQ%4ac?_f~Pw?48h0a#M_eeedH?*KhxQX`mB z)oFrxg19SJ1jk3JVO~p`%v6`f!ml@bXKCS-4mZ}2aB~1TB%mNw9e6CxN7e?=Y;(#- z#QPy7U%G!3LjIX;w%%@$6)2&=BBi-7OBWu#4(F%s;8F|BY#V406#P?rMdHHynrR~| zN1^4fKl74NA;)UH(O$~%c0(FVwpQ9AT2D+``kmQ7sj~!{gias)Dc~-GKi>}0hx79%ESovlu)f}*lXj#9 zZ0ZVFhm0;}W3e{9;6`>fB zf_P)Usbz5&((>=$;O?fO?Jqms>hpbNJ21uyJ%i5JBo$yVc+?zPodtB&{p48z1C;6iYo_=n5ZxQZmdDdr}u~xFX z9KfC}C2Q!BP1KE)iRR67)mBO-(LUSxPj}|$Z@8XZ8<%^a0LKB$_BNpTrU z`A%|fGSh&QTHBSyR0n(3(*~=ZM>xk}-aG7dgnp(A*wQ_yBHY}_T zNg>-F-=hXH{+y=^_8ZU0mcv;fK-{?$$wS8S5&)xY->Dd9plVU+9g!zd$g%C&nv~GF zjL>!D%+#57-ut6;^4RO;m?g0O9S>Uacb`XbUc3AqZMx@r@-o^PnN}w%dNfn3xU#Vp zT|N@b4OpI>D-{fxaNIE6v&o@lJ{2(-^dPY)Hvtm) zq>V9dq(g!aPp*UNW08VID3Cnt^}d9>%m(At&;fS?RqFpJ9PH{_o;ZgvuVADdraeOy ztR7;|&~pn!ksag_36i^Y2>DoO9|%T4>@*y*2s3AumArL#Y;pbeI-Jt(By#e)l4MbZIhNjlqsLF@cu{XzZ1m&G&1z`-> zq~`A-0_KZDF82Z0^NK6zIG~fpai)U6psl^kI$c--E%Xi%DQ}3{0{9t5qt`R;BcS?~0b`vhk zK&_6Y*^JT7q03W_N3WRQXeliN2QFz|NTK1f)Mmu;B}}U`ji`Z#)R?QuS*F zXV_ameqnq59?6-if7@A!#eatpnFAw*c~h_0%ZshxG{u;3pS}kuN@zwsLUa(!)d5D& za-}Z#N!{UIxb*vIsR41SUa+r)SH42~upVR!+X1g~?73=WZ-{70@Z!V=vdJ85 zL$+?NT8kGiC#VWssU~=b3<<*#j1x_oSLxV+eLso((%U-?kpN0z@V<#)%_CrnW!4H@ z^-K~E{H6Rm*!yy~E>{npNg3G^{-UqA8=F1$D@g^J4x^MDJ#1lxU1XaMbVg7QgVH*H zZMy13YQzy4cEU}5wsXUW#9y$|xbPU*hsk?ZQh9Xx3sqPG%SWfS@>_~rhI;??Mrc$BQpz5vc3 z&scC4atTPFY~Juhjwozj4wxtHz`&MhdaH*o2wLg+sae3AGAExBL6$IWs)#dBa^xUc zRy5O`3blX3t(MQGPH}MgdusNG<&BVw3=MoJZpchFg~PXOB=*w3^iO5;hy~j50)c%~ zuzpXh=b6At!@W;2T3Pr7S>i_2kN<{Kl|p?W4NOgmZ1N3=C{%}6xoiXlMQ%Pc9InHR&bbOjY8yfit5aV4oG3B@Nu5$72;#DuvIDcrJB92u8EE!OPq zUOOYKVT9n#z?*o$&?x;FF`J$I5yo9+uxVg(HQak_NQ=yZ9)>ZObRbi=a|VQ=*V*J@ z2hvI&S9u&b}p#&ir6{>#Aqe#8urg|G;;BX|lis7enC~mt} z0YL?txFrla#M^BtEbIy>qCGf80;5{(8*TqIb{e6Df53B3SIz7mExqpHYB@(+>p{xM z$^y-z6`oPZCAJW?dcUKMe+Ku2&K!7#Hd{}?F7+Z9ZL{<`pz@Rk&xf4$k7MV8#w|8y zu}Y~(=k%2ea4m0|`O8L5)Y-Q)y`uk=0YI4e7h`#2(r&k`{4VzW3t(7#iKQ=0gA_BH zJ+SiK?K?&un-IN_%s|cZ?I;5m0wzyzE$|C}8wS{=T#t&ii!PVIODA1C4Q*}DA#a8u z{t%<19AhjaSEtI)Ro&EA^GY`-1rH`K?7+#85Qe?zWZhc;}?3xvaP{^r%Clh`hRsbzAmV5O9>yR3k;gZ_nkOb+WqQ9jBDC#?}A$f>{P&HOiX z16}%e_g5}k76ppnDjzJpr`Ds@so8pY6~>DFd}>iN${U+~M8Mc`>qY1ZS~{2lvhH<9_vEW2T?a{C

Mcx_&-7JtZR(w8=Q6!)8IIx*OBqHuF(h*i5BNu2|C5g*P15LSw! z;bnupi=rRIl@)6JjtEw_VPg{=2uQ(oiy;1ePayv6O2e@+ORg40q%fn=#Iwq&eeV^* zd6LT8fuslgSii!!sKQ1B{xs)x=*hukvM?P}i+DTQjFHo^n+|0Mso(=4Mb1%Y1zH*; zP5kLo2A5;-T8xQ$}{ym*vhi@~&LsXqStr^?`XvAN6W^{|`}b85CF7 zL<{5Y?lw5VCAho0yL(`8cXxM}KyY_=cXx*b0>KHAJ3R0GzWawN&QwjE*=L{Ly?U)) zJ&|aBx??1-tDDqRfn347FzF*5)HPh>#28+~gdW)HU}HD7M%IBv6+>eit{s0R_OM$A zmwWJo94;EMyJbciE8Hw`$A0|v+}hSJ?JodF_Q%L5-P+>dF2mdWVfim(ShQ|+15X%_ z#^N&H2SY4e81X;mX!H+SU(}R;^inKK*gpG9~Hw5nMflN-LCG z9B>ettI@)?ave+6KCbC~*G5y@7CZ@Et=qBeX8(t7@axErv?;%WFW0V@H-H~2Tr4X| zJ)#u(%i9|H>M`9p(Q_Q0yY3_aC699+7EZ6miul{oeADl>*Hm}V>GE>hk)HhDaH=m7 zr`8v=B*fsRt1p}kOY?R0>rZidto}nt@OHZ&O{9+nI(5K8n>nE!R364LLoZroq9*}l zo|;y}4&5~yl3NhmS^f|1aCFW*vi`_IGX1&0MD4`FL6pxcws}8dO~BTbS_55wwm>xh z`sXtl&sW^v8`n)B(i&Oi?dgf&MuN+gThUEu9t98HOiildlZ{hJ0k z+=(4Y(?K9n+JZX3*eueBl!S(0HBoWxg_a@-_s<)SwEdknt|#AYjswv!ukS8qI7dkeRsMxu0{-I@3YP|aX+PL z`GY|VsZjaN7&g|+Q-FXQ?BOc1#xtYtlp}H7`10q$4UKF%q8|1bNj_H7FwC7LlTSo5 z5oF5)3+3jd=7w`9YwiB}zIOqQSx5;*-ZF3A(X`e*#xAX{BpXdoE*QO&v&9i(1y4(>ult$;u5$&fV}DF&^euWb~>sq3*@+>J~1j*Pt)5i6p)R zdwl#ts$#8dXT$U`U~dddLJ|n`pc(SuNrYE{JR9fBxndqHl%7hZ&i{Av401oC1z1cg z0j^SWUNy|3Wz=+o90J(4U_EZyiyWC=5s77w^P5!v0QyqEicIrFe$UKLwPLK9Zsa${ z4&B?ny_f(|qouzIFN|S%O$zRp7ZZ~=(M`d|7DY>4s7Ipn(+yh4p&E%|FPXY|;F3rf zpfZ}6dV#}{KBP|KbPCfdBWthA*Vz7hZT0B~87~<^Yk_W&@I-c!|9?h@2Q9|1M7I3^nSrz@@*$8bT?dz>k zs(w2?Q@Vm1+R%{2pJW-6YvgzNg76PX2w-7^ns)aao#71Beb920 zt@I>i6z^WOBT@v=S$1`=n9EsgwTkc4Hz+is`;^s=>OwthOH@Z4LlqX5d`v`P`Rk%6 z>JJeFa83S6cm}EE>W=6Ys>v@@+DmmR74UH|RLdSGBSVHzZOOc_o-AK5F|{|_y!GfB z-}C(sP0pw$L!Aw6A@a-@$;F)1Tb(~-Fzo9IH4zsyf?E_;;okS&;Xc7Dj$>nWzn<&k zxu>MEe`PXYT2X}v7nQ*iBV0)S6h0tMWPi2q6p#=EjQtiaBt?M&8jc+DM@jb)+*SAd zIG9~3v{EftL3k3}$0_N&cp&m&HY~9Ja~qC?Md4P@fSxju7%a6{U52y~t%w~^A9^*< zZWh;LbWmX0!}qk7_xda3_@hyWApjVeL58UAd_-(au3LyC8{mwzGr zUYi8dg{H!bAvSJyhr@(okerEA`I66W6d63~dss}ZTJb^nQK;$9tz2Gf@rYqZh0J@L ziHN3M3Hc(?j3!3f#m$b?rF?q>NT{Ty`{IZ5^gVZ^rGb_}Uh7^qi^5Lgi2G{bRLyDi zsNR0&NWgg_GJnJP@*UydG|Y0|!_O4Up2i9C9li}>lLM@WTJsXNU_iQW^ks4>NqdNf zsW|hq)A>6>z_-+oeaXrhaRoaWysogXi?EB9HZ_$pq~#4Ot^f&`0G(08%lW(Y&tD%f zSN2md@^%BIc>OSKY16Ao-yYLBtAhv9@#M>GYQ;qI35!1(=T4Xbj$vTS z)XZ^@L}X-o#Me<*Z1jX(himk^C;~34>#rbYt**`U{nrS?jJC%4*hpnXNq9^rsa5NEiw3Ez*XeCKjn=o1Gb{vK36h>6(1aK#5F9Ix~dJ>kHYBZ`<@%BPW1pGw__Io+*Nhsm1@(VK_TN4|(Ot^5ixH&${zK_8 z9#q&nTepHx@t2GzX%tak?J$2#Q5q)C5<^_ycw@15|P);8r~8+@=9wx{gb zvM=L8Qog5h%VQrc#NMZ6pQ}4#N1C^W;1?M+Y;U+en#9{C3%saKcap;4%vzOFbr7HH z=6LiE>oXW3-PGVeHl;a&u4PGMjtGEDtyUu0|3bQz*tHk!_@CAS&lcnF=$*3H+xHk$!vR@gdr&L^EXcYqLnM})A zT7Z&}&cK3axFBYDt287;nri-yzNAR;9XMMI(jD@^nyX`-ih-ICOieUK?htfUzNCd! zYctys36M9JlWZ_Gquw7aNDSHlH zU>|uI_Gp5?%^Z^Zs>zuhcGTFK@e634(?C!*lZKl^F1}NYLH*kL3kaONdFaIs1yW8zAiZ@`acyoVkAJL8@20=(_`QKucpkYw(jax~|fH;fQFli){ zzD7^^HE5&#>T27SXUkQ*`IrIHuDWmiKw zUr9{(gtJxf%oWt7)yh+`31|vLwkhOxt@-E%P8AGHRb}z>EDW`TK0UpM(?Q}ua1Fjb zkBXKJIf1!vxfN(=uwmlPlMy)05U_NL4*1dtsVo+O%+NUXA;MDTxupa1wP)kj#<0rZ z%@iP_q|?;(J@osE+aJe*O+w>0Fe_E{UJvUnf-$B&5bLr-8*HA1pv)HH^2a9JwVDJE z?s2dY_x8Zbnn+Vh)F|w?6{ga7Ha}3)jSI*+6cn@nfb}Fy z6f!Ai#|P6XbJsR5cm2{);eO~`{upSe;(7_%9qd0+w(s-jstEOPzi8dDSuDkHhOV=J z>FAgKwMnACkFx8dbxvZdx}24er4z2a2yvwQbrSe~OJ~X#I*(+c`7~n`R zQET#f>*y#woT9Lr<`lR<(yn*>f6?#n#Yx2EfvGXb{t+ngU!OhBZ9?{vDTL{ZqZ(!S zzug!auBZw+%$3-Ai%IM!x1e`w=86M{}_r$7i(y&(dl9F(#MyNaw zEW|WFuBOhD+zuqN4#p2j^!A?boY&qhmWlKRhxk zs}1G_*VYnd?rqG+=_cJX>MD3v1CYzjTP4YDLK?4ots9D&o3@_Nf4%9KU)%W}>Arq< zg6GI`cY-zt`h)kIrD=z0``~9VX7Ag?0g6v&>>n6*gYdxcEGDz=p|{O0&xk6-*>ebH z6U%on+Q4fFOO!nD5AX&~L}+j|H$*K9vRB4&1Cfy5!Ywn4ILUf~xOU&2NQA_XETg5w zEpb)Hj=xUgbEb|FUS&*ic=@cG}WL4yLqfREt8>sQ%>JpO5 z5Iu?GEg(|-Ct>VF*?|uclpib%6uaq2tTC}lp8`LjE4kER(q^(t?TLjYY8zpCwz+%* z-9>oUlcWDoPmXY-c8Yu{hU((^nhHHsw#nl|Zy zxLO>P?S7O%i|k_S$31Z2>7IRU@a4vT2!!8%I|!4G?84|DZn!XfG{QJ+kwhQq(kjNt z0YL&g@cQ1XPQW5V^x#$3Ao4#RAMggun{?LTL({7NkFEXwi^FPhNP*V!6x~~!jaYC0 zbr?W?R-u`$I`&1<|NIUipd4(Q(7V7*Oew`Nc?XCOSVGzY?&5RbYVlvx|5=?BpN{R2 zsB8cB`Ksx8{Uw@Iin#HUa{@k7uoVpyR$y zO;4$*VjU3|bU%qZU&)O7JUkM9F7b_N@+6~BuHldn>RvXfm6riC!!=5f{PauqJkD1N zkw43;RU^z5I7_~xtRxUSriekcCTqVIvy~)p5~kprWT7_O^0GEN9R3uEEF6(oHfI4zP#A4jMYpis7O`|CZz2mVP&w2i3{(Y? zw4WSeucvrmvLJO|YbafBFjRWysOCyb5=t-CmpXlRb1WN85p_arD~K4P5t~*o(*%-&s)*Y|)hCpxVl%rRsLeH4 zdb?f`LkYCZTy(1F)s_JRSdWE8{MCLPkxxZNt@rjz_Zwtd;K*Ab;QT#iC{OX8ERQy> zR8IFc=0=KbfQK#B9HVAyV2FZQGAWS_$ERoy?M$y*v|OiRj)|+JB=ojV|EgNZ- z2~XkPleHM4gf&mm?pXeu)2rhzZ3fEP;<8R^S#o#(yX;Z$qE?wT)axs;_`wi&*eQvE z3|aa7zOsOS&m-OMuekpnJ-CZ;7_fUuRgW{na|-$bUS63LRb|SKBe-Qs_sNiGB-4Cl zaa8crUB%@7rDaxeOqhe4g%}2dQA{f=S|=xjGoWoY*6_1|Zsfdf*Xhkd0p>~YQ)T@D zLs&Ej&DFQ2`C&;zZ*&lXAh~pWqHI1)s27z5#K5py?}2Zl1!E>r4@`Qff-s`1hQyoU znex`46ka39U2%nQs^{=W$Xt5Ci_bk(kdH*qI7ubPeJd5ApQ#y3SrK4x{ zL?!~;05gTh6AlB#4EMLLy!m`C} z{Z?!?nofeX1W0oc)-t-?Q8I9WYcT&Qm2V9J$=p5$Ey%49{R}r+W-C^59U?Uj37vXN z3DhRC^vT#!!d35B&0LFV<+Y_tSfzC7X&0O-k7^*XvgLnbBY&ZuKcL4rl_F1-4NyD7xq=zc&@2D^cU05MdK{t&bbq_KIyZBm!Y z7Dq)k6DkFGvznVdfwIroi!1iGbHO3V56V|Las{PDucGm!+bFS@hST%yKQxmN+SooO zfyA$u^N5dxpSf+OP{2&nS1HP`I?!xB0))Ok$uw9$wJT?ur&C0nr7yv|$Skg(kUWa% z_q=3(^HcTd=O>roOIGPRWg+)_gQB*`5Lnc zXNS?OoG&?g(&$Y`zYI4#5%A&Gpq%*+#+`eKUUh=**>iNq$Kz>tM`^cst zp@o4TMvGi2+%r0rzXx*}oYVRl+BnX9nx0|pl#>6J7q5}SK=J5RsUm=Xx32<33eq|p z^Wz*gIzyFUYXvngk5rv{ktAM2VyqDGV;B!>5}WNkJzy^(bJ=kKy(H!$Ad?Uya4h7h z#RFLlp3QMXa{0h~w58+v>1#{n_V4BMpU#u@Ep&NVcXxak#(7e+>u-Gd7W|zvGtthG zUV|DNB{d_-3B{Q@@|lWwI+K_NH2Uq}<53%zLPJK*TY7MqRT?Y>pP4l9Dd9yE)%lT( zVP&C6Re6n3F?_P0iFGMi>XH5^=B2fk%bLxvLe3_;6z$aR5YCCUJwh~KU`kB3FCNF& zoKi&0M=Xk-+hq|&iV&4cGW3Cm8ahFHJ3M(MyP1J`Btb;bA7cKJ+)(^RPVKWw#YZ${ z$N0O|ss@x{&-|BRXFjzlss zxq#5s;l(DsV|N7nt;p;l9c#&~4~s2vZ}~c9%s76D_CcS2rMeU)bNNn+fM1gUeRm4| z<=uOyohT>0%iu2{mykMcz_y*E1!=tPVLbaj>X%X!Eghp~NAl98M90LcKbw!f zVM6!{Ia5d5M`nQe@zcVY1e~qF%jpvew`-zu0KRg~m$4#iMWmbAEDt?L{C}B(I@<}? z2|0o~x3VeY4aB;(t5Ktb$I;=Rr-YT=g2VB@V95{kCVV6t z`O=y%_hM%u)GHpWW>G8W-#@g)zcnyedf$UIDrU`mu6HOqZ(v0^Qfdj7gd6EpmU2 z4&dH<#p+-j&Or&Mk8%OAIlcP!h^q|}6LEUc~ z0&0@GqGQZ7hX^C*`PP37Z`Z#YNLy)bS`#bC;Gq%ic8l*7&lZ=8V);@5j%^|~qVXUu*q-(vIFn7`{WjP4{S?xXHv4jCadrBiI_67TB}DPZf(Myx6#gBoNJe;A*RRfAV7rZdfC{P=xHY7e^`s`(h?T zo^N38N}ycSzS2RvUUaflFLSsB<8~UM)ZS+Wr!fi_=F-0%lod3LP2XU0nI(xB>E$p= zO^c9!DaX!PT;ioxHoOs+9|y zc-Pc_Hr3#Ch{o*pitdYCCp(Fj){q`!3pyPCRwGEm6V*(`^PAh%kqE#ifsF?tW~$a> z>{p#+20^S5e-kC3(+%qwGPDZ406V-u?sJUfoMLK)+o(hAGft-rj4XS9EEB1baA1-o zlV6K!i*-QJ)TV%ySj^PTBrG3AICI1uqlc|euYZZDN7u}1HC>SZ#T75hcU_MH7f2zCdRXvn0<>zDZ|yp}**K%t}= zwUz!++S*K)z8p%Fv|>7vHo|wP>#)Y4DU6cfj^klE1)KRRmdilJ{Y(IlBa>xUp;W$yA;Bw(X!@k+?UX^ zzW6dAD}Eytn>HUlnpUEE%p(UrkdTlO%;RzdHoB)!B2T_N@Q{tYWZ`lib#80ehO+Rs zB>!mG7T`UnXa=g3s=0-P&oze0r{JQ&N;g2?GMyvSKKG5oX2`$elfB^cS3himE}T6Y z^xTTrK@l^-5g>0%t+?hZemq@7%(pA zp=6oDMwC6r4%s}AWeSt@Rna%KL!9m?hbk2ML*-oZkQI7aH+3YfxCKr(6qr&-9yVU1 zki1UxH%I-+!f$H5{F?@HUX2(O@sTSL>~aH5W8RwRHsaue_JEDDotoG@@v{_=n>bgM z;hd9wy-6Z&lx+yC82toISUr58!`Ig~uwzexmICUWRcv8&-E00pzGl-gJg43g?6^E_p!l`+x3wppM|YE5rfH@9!DjF* z0k=Z@wt01dEOyBneUV7$JMtfpRZhacX%@?uFqfl#^wGVal1LTi68Ql~?;oW&9uqa- zsCgB2`7kN|mZF>&I{&s~#D+P(Z|s>fo4!^EvrYxP1V7hj!L3@WvcCtNC5CSUkgfE` zXs+g8wMaf0`3b|FVk2H|2u;y{1kYgH1rPv6SDz4#m?0@o=j}_Pr??|zvT&~1*+SZy zku1#1D|Ta^G8I@U;npWB=aq5P~WZo`XmYR`-=c|3y@k?6;X~n$V3}mTvk38uYRBvo5z<49~f;C z0Ng27TR|a1pv(Vh;|7=-^oO?*v^EEbwt{KlsJ>d?h#hhB=6zT(D3Wc}5Y; zWWD(FqNN{mi%cG4MZVwp*5<9e2AsVpe*P;j+sFs?{7Ua zOMpsa8_SE8iF9MNaa%7S^vjXW^U7lNR$;lv&b?=NS4ftS1Pl9ZsQ8tiOw|%m&@&YF zT)ZU_Yp5oy{}1qvv(kn=m&>cp51Wa@h9Wbh8UvO+oGd)k$<%9A*4S}BCYTs| zjnR7~Oc%lMDu!~xZg16an`ZY5^v4oTON(_imyC21k~lwG(1*YOY+5L0j@o4m7!%a7 zx(#v|cWuMpd0yVp=o>h*nF{em4T|R&=!Qgb3B(MFr%Mrpz4$#10==ZJX3|`Ba4r@ zy)m)xgH$F>>PyZ=>Lx!GYnzo-aN92(4+nd&LM94w9|9esiiK8~Nb|Z%2!WiI1JsI3 zaFym%=!?M$6f$xvdF_~WNaxUemw!L=eUsSK!M`71e1WF=E#{iAu!T6g{i<{FgD|Z& z62m}721$m1sGdk*{+vjuO|A4}3B(s#6BonqHv7PtNW_KMLMm#mq`S zc*VCTT&SNe@j9xc(pmJmV#!#H7}VBPx<-`FQpx5Px!roS`#ek&tO|u*B{g2;@WFo) z80PJ|=9|z{hR8T#dp%gaXZCuLDO`FmC4om)^fXZmj*_3oR3(E(v z!(ofIFkk!rF|FPANe94m!TYX00!5efRbXqb#QRC(H*Kns%{DAy#9K{T$EzKEu2v+6 zDy*CXyjU%u{;xjB-+jkd;{EO@EwiE9E*4sf1aHd6GHRNH$Y>AOKE)nw^tMQWaaY&* zZQod+x#l>>*Heid+ z4bg^}4W<$cD=|KwHzpQ~^G>9Z^NQzZmX3FglKWTZtSL@5NSiXno0DAz7$1AOJ&Sdj zMTym@u6}=I-0u(O@r;ca>(SnOX#dh(MS7{YYn9=eUU>XIZdnjH3rnvuu5Zms!jtIn zyi(!t+BdlOcm><=%};scIh3Unw5<#y`SV8wa>ZEnT2xqKWm0xcC1^G>o|%YCS&2MG;a$ zM8vQRKS_r|L0j6dK+{#sjxvyXi^d=0(>HSFBQ;!jK|}Y?v5wBB%D~ZGC6&UWW}+fq zbWoI%*XKRV;OE{x0NGM7`gN5Fh3WC~U^mf(0T{OzNhI5Btwzgjq<$o-!Rm?V9ozCc z`1B6$$qh0v!QbGe)Z_%}J6Xoo-|LodMtxP7NcRVxli>Z4Lm~PNLSqj5ei)Dmo;Aaw z)Bz2MqhbRtEywgk@iYh(0HZ&F27i`5p;ngo^v#Oz8U5FXdKX7{1Q0WdsL>aY1XPjv z`JJ;uLpen;U*PKUqVk+)ioSZDCP6L0?yQ;_XYB9f-#k#&mMjOPjJIkC?b}{(wg*Z$ zXzhljs%gpvow-mj{2W&#te4Ym0mb{aRUf;a0+C-J?}K0N_2!ODTqMeZ2$dMCqvcAp z8Xfr-#4XtpTZSNfiWz5czh}n~(3GND9)_5{3bg#De~;QzvWOc8f82XeMj*!z#=Hq8 ze924@68bm%?z`76@u9UzHl}odCGu$*W?*})hGsZVN7?{&(ov|nGFPJNncfy^(MVr& ziUpB4T@D7C-YpUxHS)YLKbI;g5(|a~lY>r5#}pI#u9IV6p^X66;pubPZSgcD!@JGpHsSTvx|58=~-^2pJ}GE52^jR-}QWJ+~qHO zWxFCKco?eyup&#!IUxrMsTClP4gdnvM5_1&a(@T^ze*pFi)z^4(}Zfs4Q!r=B=nB1 zK?J0yYL)VP#QW-sr<+DTRbGiJy-RuGQ~Y3a3$0Gk8UgD0e>2U#`h2=QIj@)Fy5D`N zds8-%Uz4b0lGK$xIFYMScWKp7+%Kf=ZRf*3b*r!s8zOFGDFEboMu>%wCc#Qiw5Kq! zUc;O*mgynhL#-jM-Os(JbsyYIF*b%Ty+&(MGzZO%nbrndOHmxNHhB>e;s8S1f&W9> zw5$5p8*=8=c>Crhk>J^JcJAhpJEg9w&)c2ukBm;R*F6lbM#@TBR_TrDFBx4XzUd zEj5N_wI2rrqpcT#xWYxC)Pkf=Lv=MTETghqA7BUstYQ2vF-U;6HHK}U|EA$j_&<92 zIC=P1=JlCD=>zve&`xa+6~yV-0wMYOccnydxKhx2hIlemgsUu#PVasoS>Zjn68}B9 zvYB<-0#p`D*FK@P%uJG#Lwd7S| zc?Feih~E>b>;#?TP5zRSmOR3XZqap`pyX5jSu@3AZEb*-NHc-CrL)2;!X)duHcP-j zKvGdZ(Ij;j@4H^0F3Pk=4)rDV5gfYe@>2##7|K-mRB+~BNsd8p{e&HYb^V&*2MpFW zTaPgOf=Rjl_n^m5xcB#y`^Jq3)9dmwD?X^n>DvfRmz+qvQNmg+Y4H(i!jvG7i03(? zZ^C_Hvm(^X&92Zq!rgA|=Afm~&W%el%m;#JQ1ww5{IB0Wuf|7aw>K6Axnyh%=Njy5 zKF!?QbELbkuxGEAS%N1@LRmknl1);(Jd04wugm>`8v>DoTK>S|@kKkoW`p7J?@u3e zne%Jse?s)1CN73FIHC`r`Gy4B*2DelNXHQl|93MiU+eLe^$&94ZwT%po*v0l9By~( z2!$rX3NnQ0ak4qX&P(?`z-aTF$y>0DjbR4q#{5=tyhsSz(U89ofmvo?k z?M|&zKv93aI_`I$wMzkXAoD~AI0MCp?KpwrzYOz;X6?t(FRN0-y1O65xat(+^+}HV z>2B7jVG)w~$AhG&)~F+t2!UvI-P}BjAiuLu%d~2cWm+r9GR+cXndb6onKl-unSBSc zOzW_3UNi-ntTDQmq~ZJnS*F1g)-;!bEYoak{1S((-+$WDLD;lGHPqE+f*jz|$qrUD z)Ibh!7?gdTK-uz3Nj^@Z!jDa;0mGeevX2#Pb#XZd_+&!^3C?AEIMatJhRRWbCaOpu zH_kNi$XyJ|-p*oK%5~cxt=-+_wo{sFZl@=l8dh!D^th+q&cUHI#G-j=M?Cl0Pg_bLpAHG!Gn;G`!TU&GWmX!Rd+*b z?tk3On4+G!83&(x@#jPa*@nmzQwI#+rKN&U9(2@P*1JqfB9w2CT@3Vk*O9uQi-O@=7#F4 z(*4~A4!DcZL}R5@mkW2x`>#M6YFh{4K|RHUlweD^i(}E`Rk=-$QqTZITSdLI=dU%& zu^FPQv>%~RQY1FN+MmV3bO{M5yc91Y)meNEQQ@b}@8^-(GNo6`4b=%OY$@$9Coi3L zzhc$SC(~#22Z~!K8AfE%VtdP0zgZF^*qsXW|bYwx&Opr^KkNXeC~F3hP#uN*Vnn9h_QavuYO>kiW4Q8 zrye~qkI8NY%c=Un$1zWM>Zdpmb<7>ku1S6;At~ZLYog6YgH^U6yk<3#5jGr48x_&q zP{ABhtcgahdiVpIG5||PsoRXX9oHWCHb~0K%Z4-k@9=~-6;JdrpHyxx{-m? zwEynImuY08z>fXmPam&u4DIKo`xG{?s!j`Q!7<#S@Niiwh&3?d*!mn+=w*HQ(5v>w zI+3kurbsPNM6l(*^|7WYM3ipMBc7W0<%p$pw%n8@CZNFnljRDHT^9?8Ge-*>(pPr@;U zWA5+M%C2cDb_`l6c@NSPy=UdAOb7$*EFK$-QdnlAMJ<^DEVIGbo(rkeWRpt$Z zGJlir-@<5p$Z!D7S2qxT3HvF4Oq=;`XYHgj^l8e2RR#hrL+0Ps5(G&x4Ful3gQTdZ zd6Vxc<-k20r-GM8Y_+|n<5uC8mOsYW7w+b&8(|)cb{J&{ zI7^fAh~&7-nGJGMODKE^e``O(U8@^)C{N}y_%cf$CH zHL`%wfl_z4{$z~8N=)D!u6zsvtrC;tkC}t3i3Pr2L&^_?cAZZ3-|f#aZS|{Hx|~O!qO7$ z(f9@J^>j&MQ?|bvwr<}a-?&V1-#Fa; zy#}23C4c8wbVCPCQaK&CSo9TEH4&h3Q9Dg&J@@`$H?`G-CID&S_IxA=AjoYB2gzoG z(+JkoiCHk2SR-u*=Y9l&x)lDp2(SI4cccy}uuBI%zvYmn#6U+GFx)0nj!A%9V zuy*fjQUrKVVd!m_HY74Os8W~-SN5Mwi&I&}MfQexwG1(h`hTj4^rCzn#pP5sI@IfV zX93wN0$vwQWDOXxx(r^Bj;yLVhMI&=h+D|8GCNt{M!?YYEYXYxJgb1L*%Xe z6Hyo#eqOsV&GKk)BDX!FUX%%%^%hWvUUWbW{8flcBh`%R*LIkX&Z#2?GW1JU;?gXZ|M**XI9(f6wQc zpx}O^&-B<4%vB*;Fuj;d#uHC*x4`&>>b{Tle)Uc@SUE03x1`i_zHcih9zOdPAjlH;e33`l5l@>~cJpDr(hYM9w|E%JEbA^Qh7r+Y& zkbM~+YkGeT)VUS1RFr|1^541va{lNrk(0kfVBO65Kq2?&^EFM7P+2$}KHXe6d>HM; zNjGUeY=wZ*;_+eG@Gx|(TiNMHDcv5r7fl!Q;3gcV_84!G6J#tsF+S4rFs~2EPFRU?&^0^#!xss+Cpn1 zQ=1mhHOtC*re%ga?}ij|GM=Ep=D;87m=0A)>W!S>t&m|inV4oS-5Og7-P^ZJj(aye zn1j0O@$0~sEj?!mPsI|dYc^+2rdL6bDrO94J26&w6#2bmjdJeQKe`JlF}NJZhrGHS z?iZ^h4MWuEHSsDVY*?HKS6~Q@gx;hpC)_B#aTHqle|GT{+%EN~{59c{ofr)FE1NQ< z6J;W3G&L1wY7g5@@gtv_T7476>~m;f=eyzsg{Rnq-;hClvqAmpsZY`&qnbDIMdvEg z4?M|6D2VwwvKh#Z19V%C%=2xgcgNhP6%aj^!zg1M@$s%05{DJq$Le`fi>8&VurLdO z21x%2&z~X%d5WQ#*sT)doCxL%)l_B9l6h2CISNY;2v!pI^exB#wCt^P*hZVpO; z>r#+;^NP7|=SCuh8Bqi6aOb=s?xoDn7)?9I(h^PmudY5`12uR4D0vyy)%K6s(*t3& zv6bdfz16ut;Mm4Rsz{D{&LYu!_A81&&&Q!T0I6h$PxoD37>iT^FT#zB_wpmMs@XFq ztm6d9+ zP-gcMoN(YSen(ou4F{I?R}47Mj`4QaBnN`=#10xy5OIW&3twv!?+1+pI;)ORV92ml zb>{1Ej&yztVI;W0kx|~w5aG6M_>zoPF~Qf>T|M#_Iao8P1iP3S*ttHfLq7$escA~% z?8aFQ9A~!&!qZV+018*RD58q3C@~o@m@=|cu}@3LkI;pql4CWS`^=H0=7RwX6sNMi z19I~>PI{`Q9nn%T;!8xjFxpFO{eokuI!W<0aV?IPlci$fP&>f@fZKO@UgHULzPs&m z5J|!L_2ZF{U>8>6%N0hehE;N=c??j6&Fs4JFb14WTal{k`(&g+_w%P!UN%=`KY8+1{96f}gU0k;~j%E zW|J80r35@l5T>y;vRAWCJeGNN*~RM>oaRqf;wv76Yx*p}owG3kMCvP5>-MSJ%G)>L zW}ix%))!hk(N(6Q2z!LY#3v+tIp;CP#rpN0e^6^PVZt-Bk&@H&9U_;akJpEQ8zS8S z6^7M^=l0KpB>j@9=CFLGF_0*?0ExZtF)0f4_CbntQ& zyP~q6kQ-uUV7VWKgF3j8+h5G#VFFH>Q1AyCN;!gqot6eR2q^-FGR42nx)oQ<09mS{y}jWWnSDo4{(R?4k$#PH?242}SG zZQsnDqj``-6(mayS~1m#w~bLx4O4LER$1O<$dxCdXrsJw@?Dy~k%Dvs1={&8~AD6|I9=^y61M{ZS)|5-_dJk1nZd~I7$)$u%kC32BP#GQbdE9Q51Tdh*FKlQ*enO2`gppa@ROFFr$?R51 z#OFSi+X5aJ;-q<;IFEBO-quS4JmfBdv~@M zx_nSc-s2?)1#UO@XVTH~eXdLZx-RxB<>;kt5(5{(3R}TdCQ}Cyc03!oy4f5q063uj z`L$a;ucW8D$Q(%PIk6;&*ZCsRkDC?t8Lx5+-iP3#Sh-mnaR-sP_{O0A*8m?#q13NV zvA6d+RJxSohivBqMu%$&MD9?X?ULSCN)VG ze2>oTj1rmgqPXh9r^G>#;@s0zyZjt&1gxT)Fi<3%ssuz#1Qj9=&k*aCKSauEJ@nUk zohtzRA1uC5wu~^sEXpv*$*U)wIr|{8LY@9-2Z|YfdwvoU>~JTvQwm*wOF>wccQu3z z8r?Mt;4;kxD$D@pnx>Pm^xeG%2xMN*RlsHHbO4Li?nNw3qk)F8Z=ZTfr3T6H*nfsw zV|$impx1RjKN@7hwhvdj&&^qo-t3b(`9O=X?amz?Y#s#C^`~uuIJ{ThgH7HA9EG(c zklf>!UZaG)kVvGMl2TC=7flwTiC2=f*mNkC$N#fo+ZX|X5GH5Fnb0f~X%9VC+4)^M zRn^NNH2gmdiu>`X=yUa>#H)`-CJy=R)F;D@wnD2;s}3ZWI+pEFE0$$@|2Ei4`$Q1%p)(ix3bkABgiyD9dLE|*D~Z#H zS%KHl`6gQ&_l!*{=q)t1yLc(2nr%^{9Fwn3*tMTXS!)(mnVC79*eT<#6Vs6i1B@_g z7;p-iLd;LL^e8=Ja{7vPF}^$#^JhkSaLb+c?2iHmw)#A*+(e`y^6sZu$6V!dTg21a zpPS@b4CDs)RsR8fDzo+kdADqXW(ZG3&EGf-(MWM?jGFT9fE`qJh*F+;O-8A5FCQLyE`FRzN$cHdV1!)*FDqU zKl}c;z^+}Z_FiZ0b57mk;|MnsHwhUOu{#}@XarhNqpZEvS+?mrj(ygpn`u8dT-vU0 zHdK|Fpq*g2p|q*!3wU3uX1fDgOI-Q+el%tdXN+B}Dp3_?8Psx{1dZOu8n4QioVQ^~ zM?q6gT71dqoFh0c%&*?QgYqmzV`_eBiE7j@HG?A7&%ph(DM8)Qh1sCm;gSV%5pF-FOt8hdDkjo{Ig5>=Lrw*7tEOq&jL1 zinPL7U=}T-&QkTmtKad|9d17QhHQ36<%O%Tzptj>zglY$q!rcL`5|2Wu7r_G6XsB^ zrDMLa$0ux3Zj-z0{!HSFpc9Eet@t#Pm zbI}@bF)eyNk&o$pH&!VU_&xG4^S^<9Yn+UjeGpZpsaBJxgg@3^B!Z_P8ds=oPDyUx zDHiTER4&SUL0Z9L?V?NF%YPv#+I~=@12W&VO-8IPv}Gf{jol(CPP%;z85i!Z(=E$O zRepxr(QPm$lpWh*ZST`x;Q^Y$JKTs$L*AjblmC_?eL*I&{D8JVzrV)=zCD z7e?oO9oDSnb#ps0Vp;q^C6}-c*T`8#4qmrRIqemh9O`$p&?eNjsf=7)B!!6Ps~@wC z6&u}FY1HXO~ zwfJl7OMoj$d@#o;(l*-2cSqww37<XZ{R_gcR9&XMVjUS_RjwO#gRuuxAr2M&IB3 zs7rm9@f4n~3BOh;V_trhed3$JEduu9%rkbc_8(uK!N@ug5rt_K1fDmiXrE|&CGmC3 zcI1h$FLjr<5SN^~yTa>vO<_$_9rigSy+{3;hneJHtRHVUMW_X?c0mw#4&s$iXB+J~0dO8~HXGJKhVUjON>d?$Bs8 z_3LM~g2a1+rPbe+#$M;4kt5qeH!`YKXVJW+D?Tf1ULD(Lp?5mqAw-^7amx_&jqxZ( zcGt!xg!qo$C1WB&Da0@?$s>^;P|m-#MF|C=NFg;+4}~<*PqWNedi=FXN}fKG@w1QY ziT6?cBgt1#I!2j83>25yF<30c=#ROJbfsUC4U=WSkjtPj*-<0xs}#MAI=VTpP?Dmc z^iX00lAdw2eiZFRA$98)?AjTK7ry3^gSSYdexIJ3ZRqC;A6>LsR5iguocSTPX$7nK zI6)Nyw8BH{hN*-WODD67PNhxD?GsEU;Y4OY%Nx{w%3HlM;6}^KFF^8C`@7_gx`y$2 zizo8}r`kaK4jp81pcPhvB3E*f3prx{8^pIg++h~4&?Tj$E+M7d)|rksV=mlFZl}{N zh6>rBv>*!OcppEnel#Z>#J!5x_IVZ25^fM0!>3>f_4zQpcaQ+|_<7Na17Bf+>Iccb z0tmH$jYB#`Go=_o6HF+!cj?qrk2oOY!igb1sNSJ_pNkZ=1ez>|ob05iV0 zQhmf|6py5j))Xm6(TGRiEQf|#k8Sy^W8$~C5-JxjuQ2AO4U_WqD5L!{iZ}a+g||Wu zm%p7#1R{-JXJv@VJE)a$E3M17B(N{9ca?$hw9Q`~Mv?X9(6~vFp_~dXUhd^PUvvk4 z0Uz4Z8_K%^4DYwxZg}bjIalAwShguw4;$hU z`G%HqO2YOok{m(Bh7iU@f#s;8yO3rRM+a8(7Q;*TbIQnOJ)k2fG6EOd&W83|62+Qa zZ8qgrc%oYUqakDkO=*9BW+Ep8i>V0yPi9!?+(amGj?%e{m|7V2#kjro6EQb}7+3l` z!EZlCDb;?KJ5W}gh>BaPbJmZFN7Q&BPl7i9%r^_7^z_weH#z@6nOBuZD{QO5u#Ki^ zC6rj0f1)^?n~7u&0gtearWUv<9|vRQ5h`1(^mM&^P>AMu^Hd1lp$~)+o~k&jKZL~y zIlQss`VUi-&+f%W{KFEVS%O3eZlbeH{Dl^eRaKbCbuqyS=B^|9*fH@>qgFk zhe}WH$<%Q}Y^OcyUT%DwLHn)XEgORw!Ytj0=@$MH;4!6Q9a>N>@=*ah{#`?n8C=L9 z!%~Jck%7u-B8-%lf8lm-n)+7@b&k%H$EPXj$2rD9w1-wb=!$o<36wchHWqOS$BPq9 zZ92L6xhMq$aCC6v@4GM!b^<(t8PkQ|_M)Bo3T{sCy7Ig6_K68{e(KGK4>f^l9m$98 zv{eC8^}m^ZX6baf*X9Z|8giJ79k8)8Qq+}6edM4D`z8om(38;_Z;doWqRgE>sXyoP zc$)O6{v*?|Nh%);fis9EFwDL@HI@#0B-7h3MO%t<@s#LewqSe78WOVq89c`gGZfL{ zbRfdlC|na43I#;B@@&~MG;XGVPR9so?9p3U8!gF|)o}gg)0%0ysiPAon<^EAq z_jG#S?N3GdePZzx2HTs{qZO%Q?v4}3b?PJNuDYL*yt$j<=tXDVh_2R;c^tp){7SXq zlbP%3F*l#PACOY}mc!9Dj3e+XT&{h?M*Z>NN8q5#28or``w_qQ3T&Cfj?cJQeKvWr z`>WZIc#r)W7>32qzqZSWqu7RYBEZwL0+Kf+hBka?UkO!6Ms=k5Fkl_9cRD_S2uGYa zBRNwi6PeY+gNs(>jW+GomhU>T4x@Y~s5K-ddG%TLO-}SD`RAiOA8Bm2bImZ@QVi`< zUJMN^b9L~9_k4>$Wn#*#@{iRI+hrZb`XIa;7#hX;mB1~Pq*iPjiz<`zb&X}Y>Lt|m z>vW2`bn#cHo;+)hGy205a8SvKv67$(p~UIOe9G-WLb``H3>l<<(vNsekXd~r~N%FncaoHb4S2tkBzGr3!A$cpy#fkIl z3TnWdz0jRe39ILtVa;=O3ns`)4o5O7(XC*H-XxtH68`kkA+W-T?&GZx?W-3-3zx-3 zJ=T7NLLYiqOBtuCB+EU4Rt>pLRWG496C&01-Bld7eXzoL>K(ED2nuN(I-OXaimg<$ zB?=t{NJ0D-_OI72ZLy7$_vK5lP5EaTzI=J%gA1r$xZn%AD5k zp~@ffN+q5ybDaFP=efz&lSzv%qPZ0>d@phr&V~vvGWLmRkeXdrGOoi( z1Ck>>Oy@Vbn@x9KFW#6wuCDNJZyXa*=HDhOjF#dI&ono>%$RrNod5Egw+6L_$uQd5 z`7PS=fR=&BSFh8YMn3gvNs1@oF4T%wG+9}7q(u!GHnqe026|5))4)7K^S1eT<6UWS zb#bZeaI3GBq(a+@&q4j#^=&w(6<(<29BNI87HaL`d@1{6$2Lt`PWAikH~j?!I->Y@ zsrxElJ}In5=fA8X=X2gY&!4qgf5N-KE_$fWaCg0IRf|>G&cfCe`qshP+0RJK5AM*n z(!g4HYxfiX(P;+tRvpnbOvt)|YK*uaZII_UybA14Bf%HdQK9BWoftJJ@V0&JEZeHCdk|`k-)bTYgOMtE&G0RSEjWng%I*OY+aP6$*wQucld8_Y%sAiRFCd*n# zIo4j<+R}8jJicD5;p)KyCehb@skEyrD#FTfA5p<@rE&Cjh{Xj)n3xmR( z!{mXf+#?7U^2j$8kyo4N#4k1`kL{*fS+Z7!4kWcA#y7d`N9f>aa^&}q&vXk6t}XoL zvo{CNCR@fAqaCKY_Kz9wTytQVab*(}5ZRR}Yu;~Td~m*-)cLVKzK-hMa${W|>T_gV zHkUYco!fH#ttXfi_kihIKDMQtTMPeg3N^<@_F7(?oqEeL!JTvAv#~P16jB>+lD*)@ zu>Oa`Fq%rLOv=z|r_p8$6J%a%4^I^(7b|a%Ccyr@P^Z6#V!W{nKFmOYfd*Wculwj* zG`9UDG)ozrhKpVrxt!G`1BZFS86)0&;R59OOiMgjKr0om=Xdk^z|$8VlmrumDDze} zkSk|!;R1P-Jm)&vpP;_C;$!kQgAYmm=L4Hr!6!2R|2eRk6?_u20{DF8hr^+N9>WZN zEdVo+?H>m=v;QuF-wtf%`1!9)|L1|t)vv5e}1w}kt_LH#O`2tF?Mode>LfEWCGSI%pG z=q?uB%dch4##{P)Jl9+JZLH4>nkl~>^R!hDAg{Xlv*>Q{}q*MGz-w!wrIy^K*iP5=bo! zv3+>9Zf-T|HfXxd4d5|k^UFq0|3D?n9ueWY@Q~NZ{DcxKD|VL26`QppKvziS`_6}ILr|&Tr$x(Cz|lo`wP+O| z+H6erp;BKnw8t3_Z(xQ(H-tgi+IjG`HjqZx86EVoh0ANLQAwbz)}`gPHLI5#;`9xv z#^X*@3_d%YYv$6?PMf{>-r31jLY!x7gVT4d6R#tXa!ER4Ew=OLCWpRIb@1)Xroedo~rJ+=x9g6~pG_1+f@ls-$54%Zc zOz_K(rk*RKznb!gSx|$xMJUUllEQJRJ?&h7eQxs!^!Ur!6=RsIgfxUAgox)D03-ys z2#kbxy%o1MAIQ1| zYr)f4O{*iiAne&}{dJZsi|itrG`4XSv{rP%Wp<5}pq?4zOQ*0I!9GknVHn-ksP9tvQ?T2?hc7I8Uu$VR3K8OcJ^=U>Q5 zAG5G;%~zGk)qKnzti+E64#u0r+`0}uMf*PUa?c*4GlniFFQZh_RNWfe=qh5vvRdH7 z*)5k)oh?cQ4D9oGMp|hPbPIWhpv>&bB)(Qr%8L&nryBuF$nn;Ml|sfGM!6Xttvv(< zVLE+Fz?qV$FPFATI^@d7)=#=X$HF9HGP$V;kF8l-XQ^Tmn^WMOAsa2uGiUpA^QUG82+1S{%E{YiS>L#x>dB3pS9^m3x z5R0}s+@ffFt}bZ7lFT2S08gZRk(n2|z4=_8DvzF0{@LY6>8Dad5vc~+Ux&Tih-Ize z;9&w2Ug!T{#9zzYT5_wUKK9(W%(38dhHe26GU+Nf#}s9)aVY4xvbFS|BpThYU7s>p zI_R@?FcIN80@%bN~ic!A19+ahu%{s|>d^|H-q~^fQtrO(d=nUr4i06eDbbepS!+DPv*j zL`_#aNOqL0Q`^y2>dtk7Ce1w$KFofL5fi3&bnD13+LQ^HvY#ZzSnagqWD_K2@}=2P zvd0Ot!%?o9qS^w!Pc~8&O+&seK@ZBSCba>^p08~`(Kxv>&~M{9@u%8?e)&WswYS+` zRwB*9-??u=tG0iiy=q6)slX!s(ZsvpgfY`Des)t;-qlQWdqRIrrFKE3c5(S(lBhgC zbCi5GIUqU~|6rz!vXZ3+K30=T6{$MCHsb*zLO?(P?f`>@$i@$Td)Bw2oAjlc} z)Uac4$!D~%dt~UtG!Aw1`)AXhilmKTA#EX24Sy6|OR5-amGNc8I3vvr^c{@MDau9? zb7$5W2|}NN$WJXIHP0U*wdYgYQKJ@2M7TP7A}qfthN_|fLrD~0S}BZRkNY?v_XASXj(dd zQIIWg1QVDnqkndyO(fF<}oLV)BG<)mF91|}&wlv`q;yAe)A8*?b zPL=4o>CQH9%edI9>=C>6&P9$(!WRzF^sK!$6!Od{6zaU-KF85iUp9~Ctivw(g?-gZ z=uej{y~OTtN>I@nHQ!&)%x4KzkiYcjdKt7CEIxcPyl*iI;RF|=Z}?6A#!tk&i*z7Q znn>mvBlfu15GP*fo%|w+qf@|GTCw+!(-UhaCyy+^GW@c724W_U>3dY8pp#cUJpj5w zZG~qj&6NRcr8_jBXT4h_PO$4M?zYvOY!BYx6|4d--ueShuK46xB=SupseTB2P&&Qq z+~2?Qy1O2~HFpcxCdySwc!zFY3#SrsS9kq>q+JGe+Chy;no)`0C4e-BLz8HS#yFX6 ze)t^HU~RxAuc23APhMk*u5vdp-Pjwt>q^=1-v}_a-^m{(H(MhTCOJJ5BSet3H?npl z0qZjbL?&q?Lo>Y>Hm)QZpr4sZI9OOoIDxDrT8K;vMh-Sk_69}{B!K%r6|%8*1pTK2 z2`gAx{gVI#%POz{V`XLihyLPvxXH^)!t|T|0^Ym&KlN9$nw3K)H|E`f&ZpY>K}+Sf z$?%ey35`XSZRd-YPz+LuoadV8JI>y>$YSVE$Q_#;az{CQHWM5MPkA?=Xjzn{^Q7Kx zpCJug*mx~$_3&x!;wDXp*?3l4?|geEZ8L_SR4ttjAZRw4NU|!{07wsx0BcUqN0*&DdFhlWk9F2Sabak!BS+Q5ei{FC3Se^QovnMf5gtVN~@TPpf`uuiU zu5K%rme()P_dVQbAKwS-hEPBfLtbCHwVKGt$9-G4n+)VSLE+2hXB!{0zAmml@jKjR z&)75X5(ucBgK&!&V|*8DSZ$;kt@81Fr^}qzGcRsh25`7mB5zU6W9B&r_|Dt*ByD5Q zhd0cKSQPS^A#WRsj=O98n>&IF+%s|abzxFO=WQ5x!>DELx<_*!@ZK+JFl*XsNSARi zacY)GPF`hDG&{#en`|BqR@#(}~Y%1KOAZ@=$(@ewjf3bEtESmHKI3imztTz&&F zf-r@-ZMdo%;w+zVfs)TJVs7mx4G)Q>EC%=hbKAn2K{0@gVezw<8W)9kq*@^a1a3YRpD}>1j|!@ z<_+N?wmn}ETdy^kvJ;yR$wBmn^gjH=^iF#J&24W3J#F}ps`o)k#%g|0vmuY{)@tQK zn_sNzPIbYhF%F@9XEtvg!RkYcOz9iIgt75>q7b8JIuiOwNJNWjF&9ftwOE8!K9@~r zaC5?){jO58W1oiJ@?uN-unNRA&?Bqg%#)1(V!Bxg3qPIB1Lh^h>m! zf>AU-63kV6B-<(s`#y`#HEATT=YgBsjJ>Q%DQd|ZECLC`@N2F@M{!S|k940va;Y7O zBUDGBaqN1K^d6o8qO#o z3p;l&Jvpy-B zISweMuu@vEjh63qzDpDrtfChek=Hv37FNZK;my)zgilS_*6a)`Wj<~c2nc?>uS(X3 ziKC(aMxRcY+?sTS{(Io65XX~{$sA#+KJ>2&k$xF*U!Q!C$dapcP*zk(mhGxMK67hG z3(GlO4?nS$87`PSvp$5Mor1s0fXQV8Z&TDH5d|MD*PJEqF6@$)H=$K&u2P2crPO4X0c}2?vz- z%dY22(gPYIW#5oi&xrO;p1gRSn1BS=sUB$Pl2XIq@*U3fb)Ztj6QJYTTB{sJKJqph zeMirGQkO)`LIz4JtkaWK`wcd#ZMN93+6Gl3f`WnK`tkH40qq|(pl^c}GSNSc?9UK( z4i@0F2F7&%J(9*w^&qR%( zcnxX@42PBbzJBB6F4Yw3q|kH8DrqGfQHA4;MPj2!Aqfh~`4wyt{N~6cH{*>&97?sK z&eqyDmo|;4IA(UI>B&p(&(thCI;qT<=K1D|_&=A}(?%(pqO`uhvKSJOZgW6v zeK(DxPhcItoIt2ohojo=ipRAMKS8b$zMpLQ`JL{Eh1qk~IjZ@=)^u_AxQ4YnUiKHN zZoNqjB{cCSO;K>!hJ@?i6(H@Yq@MC;HOYr8>vz~vp`tRKEbYb**{qS$RYqcE$H3u8 za8a*|ruURWd37`(o&Waa^8BtgxA7YF$EEv^v%9;44y$HC#P5=O#l$g-`tTVZvQsJe@9w!fuY>o%{kV+wPrRr*cQRr>9i&uP#Rnml%Z?mlJ|{*SV4PuEGze3C>vdy|XZfg)LOdODMK?DO zA|Cp^lqa4~N#vUdR|7$#MxkM5BblgbFDE7E7F-I)1NvM}%nUCoO8>4ZI5Peiv~io< zPl3>IxIHz{S%dFpiS3^lm|D!ld<5;!>M^dWq6=Re<8oxNEjCj&NP61`JwW$SA-l-_ zNkoI{IM%AoGkuj(u4VL54g+b@k(Yf>A}Jz#zS4Cjs=Vy7P%$H^y6nYN?r^Z;AaN`i zh23q!X_~K~qTL~^6`vS<43VF%!0CG}R@PMqH#Mi|DXEi6LJ)1lhqtW?MSTxtt6 z01<)IweOr>b5vdDV1YZ>*426ieF^yz#fkMsO5u4IV&Y_K2feL(9r}Xm2!Ts`5AD~h zaeTm0Spp8*On+NPxjTVX!+CleT*}HWgtNQeN5ldx3Iy>f1r$5B*5%E*3((p%`Gk2HeLKyWuGphC zH&QsV&_<=$+f*~6Sf(G+ zmDzbn^f3)n$n3cZtb+4oDkCpqtJe{M=#BgAVi+IW5*uDOKVM>xL5vXempYb4fYD8E z8-J{v&JQE8m#5lZya(YVeSA5ast}&Yi-5`-QXnKgh6c;#-tf+rQyRi9`mJ+COwF!J z)`B#o@t|!baXB0VQKHE{UnI$^YW1`Trhz)7jQcSLMK{@=ULWzmBnKpx~ zqfflFyF<}2LxQGwqwse1&nxWH6l_cYvSla%%EllueAUdo3}l5Vrz7{SHd8TcX6;}m z5l}2j>*+oYoQ3~tEvCrRh5zJi#SSsFd4RF8nt=pSN_N9G3*wpVl-P3EK{^7lv-xYb zyhOCAOlYW-4HtRRtx48-fVtWo94?h$AXGA`3v2w@B~x*5l0MpGC@+tdX@U7!!R>}( ztu;RKzOpAe3+T}wVZtpxV2G^QWAnO@U>|9u44-as6Jup0g&XZD#njr0E|IjT->Dqc zCy5@&gnjXIz>h9AP{8SARSkIrr+8ICi_%6*GC@K<4Zy05GF7C=%*HtZZiEG?sOYJ* zjO;JCOtP^_i;U}PNH_~Olcc}UJH#C>CKp$97o#c2hu!vt;v<)bHdV35)K!H$ija!$ z`k=%?1@pOpBk8TdORF(Agj!NM~vKLBb38|%5 z&2f!)S!B=Ty8Pay6I^2i$N995S&c(;G~%z#?x)DoYu6;QNR_MBvX@zAn8HjiY}0sl zC9t?7)d)&PkdyU&P($p+LIOzC*zGMy(%Z792_dxlEc4?BIL1bINFdfKIUk`%ivna@=VmLoGO`&N}V6TTSK1oAMct&8Ywh7Cvm^5@3_&A*}ULnQFZ=$ z%kjj2xIze&*S!-Ziz}v6z2B!esrwMar3=b-*W9V2Fu9?2(n0e%#)a^V8ITYyVoz#=bbz)`Jn;bbT z8DgY3N6DWZHfH<4h&|8YNgcx!hn%XtUf_Q|Yzp;5OZ2F< zlkVxq@13ob{l z=<4JIS{HpC#?TjeTO#?h-mj(ad9>P*nHnh6)4q7-IpVHsPvDIcb4cmHtFt&b48_!I z?FW5d7#+BJsl(sup&v}ne6;jkLPzl;HMfY3Jn|69ME`|O3%nciWb7Eu9vstv5}fw_ zz$Aq>`t7&li%$&O7q8wrJ&kl72{1%(8hLSY_Eo*=F2XpQVKEs9b3VDow6=V3wkbO@PI3L$Q~9spei?a64CO4{P9H-b+B_d#rhA2XzL=Ml_=Agp>D zOMO`-wuJQ*SFC>F;kXQMywR(ZQV(?%zo<<8oe|jHCvVQvlHcWKvjOZi7<`TI=El>O z9|u2$pD?CESl8#oy>OgC_25rWZD&;M4C!UibzobLig#XGxQXcJW|G-Etb9wL7U<@h zLuIe<(L;*F4sEiB15r%V%!!+PLCaHLcGG-c%;t`(SM_9V5-oOm#-HP ztd;Lz{z<+$!nm1?=c!?6459oACiAMsLWwa+N-VWUrPqi$ZR-U>W?ta*fu^9obO z?00q+}@91lScFca7*{zwxiHhqy8FbRf4qk##2R>de9 zXSH7kYnL4Oq8yei9I8r1g-%8}*a^uz!6-Wm2OfgC%Z;RVfk5*}BJqWnwZO~`O%!K@ z?j+xyn|Xs`^f;*!nJoIMuq4@MbuoE+`j;G}1fWxj^mrlj1;##hATY4x(nQ2Iq=mmB zX`s|=B^@cs!6tK%$8*QGwni8-Ump+)NH)auKm@Wt1q~~8WwQ8pOF4G{Q4BUiz~Et+W}hCn#KE%w8<9OE=GLRc6_6dK`57l~G;Zl{Vft?{|;lk<~= zUWJQld7jI@?m~YG)$7y&&?X8%)1+GE3U16!rWiIu>3S4H0*M0ms9ijmY_-473kJ4h zV>c{5y54uP&lY!h+&8b}a!(q4vRR3p(}vBl+w_2Z%S%u*vW*dAuXu|dKg%J7 zy1QFHxZ5rL<_(vE9s4Gu+u340KF~l{`$hhusAn%~!=VT&Gy_LP@e}XfV5z6c1LMgR z9CLR`(sALQMelzMkubJUnF#OO@+fT*Xc94g>4e+eXCe1hZjF3@C^J_+8h>XR!^2lL zMJ#DjDz0FQ4GA^nY}DnS^V;1FKH6+;oh*orqOPFf!)G+NuF6!ib7(TFN!qDT&n5$S zP?;3Jbi=1KkuiBn!l0MRu}HLdbg0;3Kgrpa;N*uKq@z@OLjmV@-WR#qAF(G3RSrbd zf1bfWF4}ab^Ulg1!U~NZlBHX`!KOxW1G1);!zi?c7*=;dm7?zp(i9Czt*Mp+th=PA z>dTgKO($V^k?%Y`=8{hwApL#Zv+8s#%+6tDn66);zt0jgIV4v#T6f6OFx$V9y5gS+ z^qaq|enNh>G?M40@?@QIc-3n?CABIwyLA}4SJIN43#IGZ)29J;YUkBftlFJ3qrR5( zg@kdh(rv5a*pYVdBpu)1IY{hTm+db zmEk;N5;$=3nDTl1$n3|r88~ANKC-*#S%QasqxgUuWHBF-o(0^4Wz}+~vbwVKN6wF_ z9k^T@MpZd40prQnQM5;+RF+dcUnAbTGA|=dNWBcca{g)Ep2n{O6Ty@(chYGM6Q?CT4A=)LC zS0fzx0$= zH$9oF7bSjCkW%;kFgTxKO5D#%T<=|D`HFPQTeSW1S!y@kFdrCQDgrU+9T`*5PpJ3aLujg;y*i_gP@K9|!aM!~46wYwuCe$N4r> zgn1LZk~|Yfy0iEd?V6%$d>pr&xVT!Fpikkbx2gX)AWVAyS-}vT(vLDV70SLEl|UA; z;QYqZh>r`bMU3|D z46ld}K5|a{8$AM^ga7}eN5D$spY+IY8z)$RT)$@X0slH@Bxr4IoAoQ@}zzkk%cwu92 zXk`EUJAx#DhrJqNBuwJJ+w1}OZ9)mWtZ+Yh^}hzf&H`WrumXRD!VUm3g7$y@9ig!O zt4RD`LwUf29dM5c7Yidh7dSB1{}vOr-_NK06-*vN`Gv{f5X!$M>Yu@cjpZRvfQ-y6 zpgds*We+HC{!E^*Jxm<_Ay3$TFQET4CR`-!524&+!o~de1oK--{mG<#$P`u(8Xy!{ zIXOX@!a~9h;QFso`E8}{PX=;dJs?ybLirske?u^Tl~dS2>_NiL!g-%7KsH8BPF7H8 z9RD>czhA2S)42jF-G@+q)z9A$%3q{6mU~Q?!92?jA_>9vkq8{kH_f@t-jc+r8ptWo2XJ0)nt%|MNV| z0VZ6~o}52a6vuzWHXvjkLirsoe?u_;8P@>rH7{s;5F@Hw5!ndFJQ1&Bl7KdqM2W$iWF@W(5WJ=aujOgv)=#G9X+Yg83aTe?u^T zv8*3BhWR(;%gzX5UJ^EzKd*c_?zbTPv5GkVBQ*nh>4#8$hsxg&%wH_&dsG0xd*#at zDr0s~H_gWU=anxfn9cr`TR8t>yY}0N^jj$Rr~v<#Q2r{j{H!1V*8|^zDhRa2gaiQU z3jS>8_&;ItAMpy1o|~iIl&yccp~z@QbypN|8~);L>C*&pd9nLMsuN-X1(2aN=ulc4DyrK z?ySkd6KH(|q(BE*38Td9DNp9N#LP?kX$Q8W=Ra-?wtgtTYEqx`K5bp}TQ*tF`ApDr zk=6S8wgbJ-@^bue!Rz#zcvO1Jcz$5^+qKU2buhZ|HdT&#L~`vn&JJ&F-rL3alHbwznaP#1DtmwM*q!5G zW{PKo&4$LVo~!E*yV_UY35!GD77snFa-03*OftSap1(W2IhgcLZS~ml_~CR{=GL10 zjN{u6d&j8^@0lId)K{}lW{aGbHN$N-4-ew5;Tqgpf2>>&xKF102MBeUK$upCDW;6) zi4p~<$B!aW zZx14s3*y7zDwhi?e~Xc28-yoosg${7?-xy8N4UO5!zc;_f=)2wx;J?7(Lf+xydoD6 z25hk66@m8#IewH2h#ZH(BO$Y=3oOrC`wY<+^d<@ent>WtLMF5<1(z1cvU2Zr`QB@A zpS+Ar`#J^K7|O_e0h>?jm=C6NT}ei!bDd2_remE=BFwRjaGM4=^2t6sYfa2&UF^e8 zo4qFHw=TA}2G1zU1@!GhlL=d~kBQEzOZnU*4mLe?DgF0`wk`#<mQc`+VA(cP;qCk(TT+1AT@g+(J@2!p+H94DS zuFxqLPbmJp_e@dvm-k^WrDqt%o$J&4$oT|~Nyh+uQpE1?-)A^55|M{OBm1h*l({PH z6VZ>P~#zk+A|YUf|QA2*t7~5&6@Z zA@WBw%i}`A8j*9tEy&K;VIC6`8qmv&^vAar;~tD~ ztRvm#5<<5XLcg~_A#^(-bdde!TH)UHy;os;i3hK&4_@u=y()Sao*8^{UrOLurap#~E2)(8hD!Hm2jtP*h(rAZ+Yx$iZ0YE!dWL z8{*SfM z%)b|@j+CHinbl5+Lruu&2F8Mik( zV~;sTT&PnoFTx-68kES&0T~kb<|sn%*~SR{@lCp6t-nhB!z1jyM>I~ux9pl!*4?lc zc~U<;bKQH6VT&RBqkAQ>d-nx@aBmBWvBPkt4LPj`^mwp;23Ms*rZ|kdI?Bo1X)Hgs zNKpWJZcK82br+hmI*pA{Phc!_wQXP&%DHA@?hel8sS7dZ?D#?L?Kf}ymk$0+-kQ%2 ztz{4LgDyyG{rlW-0-W`Ku+&z8)=PWBPj9>C=x3#3g2p1%>-z5u7*nRb``1}3$t&#= zZ@Vln+5v+iy0IAgUX0N8oBX@n@!!-e>xlo|w2$ zj~-1VIOnO5jleliha&WjO^Fbk^V~?v;G8$l&e⁣}V)#_OJStnUI{>ZvfdK8wtop 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 diff --git a/documentation/boot-manager-tech-doc.xml b/documentation/boot-manager-tech-doc.xml deleted file mode 100644 index dfd6082..0000000 --- a/documentation/boot-manager-tech-doc.xml +++ /dev/null @@ -1,891 +0,0 @@ - - -

- - BootManager Technical Documentation - - - Aaron - - Klingaman - - alk@absarokasoft.com - - - - Princeton University - - - - - 1.0 - - March 15, 2005 - - AK - - - Initial draft. - - - - - 1.1 - - May 31, 2005 - - AK - - - Updated post implementation and deployment. - - - - - 1.2 - - November 16, 2005 - - AK - - - Add section on where source code is, and other updates to make - it consistent with implementation. - - - - - 1.3 - - March 17, 2006 - - AK - - - Reworked various wording to fit in correctly with new - architecture terminology. - - Updated to match PlanetLab Core Specification. - - - - - -
- Overview - - This document describes the implementation of the package called the - BootManager at a technical level. The BootManager is used in conjunction - with the PlanetLab BootCD to securely boot nodes, including remote - installation, debugging, and validation. It is the primary method used by - the PlanetLab Central Management Authority (MA) to manage nodes. -
- -
- Components - - The entire BootManager system consists of several primary - components. These are: - - - - The existing, stardard MA provided calls to allow principals to - add and manage node records, and a new call to generate node-specific - configuration files - - - - New MA API calls with a new authentication mechanism for - node-based MA calls - - - - A code package to be run in the boot cd environment on nodes - containing core install/validate/boot logic - - - - The intention with the BootManager system is to send the same script - to all nodes (consisting of the core BootManager code), each time the node - starts. Then, the BootManager will run and detiremine which operations to - perform on the node, based on its state of installation. All state based - logic for the node boot, install, debug, and reconfigure operations are - contained in one place; there is no boot state specific logic located on - the MA servers. -
- -
- Soure Code - - All BootManager source code is located in the repository - 'bootmanager' on the PlanetLab CVS system. For information on how to - access CVS, consult the PlanetLab website. Unless otherwise noted, all - file references refer to this repository. -
- -
- Management Authority Node Fields - - The following MA database fields are directly applicable to the - BootManager operation, and to the node-related API calls (detailed - below). - -
- node_id - - An integer unique identifier for a specific node. -
- -
- node_key - - This is a per-node, unique value that forms the basis of the node - authentication mechanism detailed below. When a new node record is added - to the MA by a principal, it is automatically assigned a new, random - key, and distributed out of band to the nodes. This shared secret is - then used for node authentication. The contents of node_key are - generated using this command: - - openssl rand -base64 32 - - Any = (equals) characters are removed from the string. -
- -
- boot_state - - Each node always has one of four possible boot states, stored as a - string, refered to as boot_state. These are: - - - - 'inst' - - Install. The boot state cooresponds to a new node that has not - yet been installed, but record of it does exist. When the - BootManager starts, and the node is in this state, the user is - prompted to continue with the installation. The intention here is to - prevent a non-PlanetLab machine (like a user's desktop machine) from - becoming inadvertantly wiped and installed with the PlanetLab node - software. This is the default state for new nodes. - - - - 'rins' - - Reinstall. In this state, a node will reinstall the node - software, erasing anything that might have been on the disk - before. - - - - 'boot' - - Boot to bring a node online. This state cooresponds with nodes - that have sucessfully installed, and can be chain booted to the - runtime node kernel. - - - - 'dbg' - - Debug. Regardless of whether or not a machine has been - installed, this state sets up a node to be debugged by - administrators. In debug mode, no node software is running, and the - node can be accessed remotely by administrators. - - -
-
- -
- Existing Management Authority API Calls - - These calls, take from the PlanetLab Core Specification and extended - with additional parameters, are used by principals to maintain the set of - nodes managed by a MA. See the Core Specification for more information. - The MA may provide an easy to use interface, such as a web interface, that - calls these directly. - - - - AddNode( authentication, node_values ) - - Add a new node record. node_values contains hostname, ip - address and other network settings, and the new fields: boot_state. - The resultant node_id is returned. - - - - UpdateNode( authentication, node_id, update_values ) - - Update an existing node record. update_values can include - hostname, ipaddress, and the new fields: boot_state. - - - - DeleteNode( authentication, node_id ) - - Delete a node record. - - -
- -
- New Management Authority API Calls - - The API calls available as part of the MA API that are intended to - be run by principals leverage existing authentication mechanisms. However, - the API calls described below that will be run by the nodes themselves - need a new authentication mechanism. - -
- Node Authentication - - As is done with other MA API calls, the first parameter to all - BootManager related calls will be an authentication structure, - consisting of these named fields: - - - - AuthMethod - - The authentication method, only 'hmac' is currently - supported - - - - node_id - - The node id, contained in the configuration file on the - node. - - - - node_ip - - The node's primary IP address. This will be checked with the - node_id against MA records. - - - - value - - The authentication string, depending on method. For the 'hmac' - method, a hash for the call using the HMAC algorithm, made from the - parameters of the call and the key contained on the configuration - file. For specifics on how this is created, see below. - - - - Authentication is succesful if the MA is able to create the same - hash from the values usings its own copy of the NODE_KEY. If the hash - values to not match, then either the keys do not match or the values of - the call were modified in transmision and the node cannot be - authenticated. - - Both the BootManager and the authentication functions at the MA - must agree on a method for creating the hash values for each call. This - hash is essentially a finger print of the method call, and is created by - this algorithm: - - - - Take the value of every part of each parameter, except the - authentication structure, and convert them to strings. For arrays, - each element is used. For dictionaries, not only is the value of all - the items used, but the keys themselves. Embedded types (arrays or - dictionaries inside arrays or dictionaries, etc), also have all - values extracted. - - - - Alphabetically sort all the parameters. - - - - Concatenate them into a single string. - - - - Prepend the string with the method name and [, and append - ]. - - - - The implementation of this algorithm is in the function - serialize_params in the file source/BootAPI.py. The same algorithm is - located in the 'plc_api' repository, in the function serialize_params in - the file PLC/Auth.py. - - The resultant string is fed into the HMAC algorithm with the node - key, and the resultant hash value is used in the authentication - structure. - - This authentication method makes a number of assumptions, detailed - below. - - - - All calls made to the MA are done over SSL, so the details of - the authentication structure cannot be viewed by 3rd parties. If, in - the future, non-SSL based calls are desired, a sequence number or - some other value making each call unique will would be required to - prevent replay attacks. In fact, the current use of SSL negates the - need to create and send hashes across - technically, the key itself - could be sent directly to the MA, assuming the connection is made to - an HTTPS server with a third party signed SSL certificate being - verified. - - - - Athough calls are done over SSL, they use the Python class - libary xmlrpclib, which does not do SSL certificate - verification. - - -
- -
- New API Calls - - The calls available to the BootManager, that accept the above - authentication, are: - - - - BootUpdateNode( authentication, update_values ) - - Update a node record, including its boot state, primary - network, or ssh host key. - - - - BootCheckAuthentication( authentication ) - - Simply check to see if the node is recognized by the system - and is authorized. - - - - BootGetNodeDetails( authentication ) - - Return details about a node, including its state, what - networks the MA database has configured for the node, and what the - model of the node is. - - - - BootNotifyOwners( authentication, message, include_pi, - include_tech, include_support ) - - Notify someone about an event that happened on the machine, - and optionally include the site Principal Investigators, technical - contacts, and PlanetLab Support. - - - - The new calls used by principals, using existing authentication - methods, are: - - - - GenerateNodeConfigurationFile( authentication, node_id - ) - - Generate a configuration file to be used by the BootManager - and the BootCD to configure the network for the node during boot. - This resultant file also contains the node_id and node_key values. - A new node_key is generated each time, invalidating old files. The - full contents and format of this file is detailed below. - - -
-
- -
- Core Software Package - - The BootManager core package, which is run on the nodes and contacts - the MA API as necessary, is responsible for the following major functional - units: - - - - Configuring node hardware and installing the PlanetLab operating - system - - - - Putting a node into a debug state so administrators can track - down problems - - - - Reconfiguring an already installed node to reflect new hardware, - or changed network settings - - - - Booting an already installed node into the PlanetLab operating - system - - - -
- BootManager Flow Chart - - Below is a high level flow chart of the BootManager, from the time - it is executed to when it exits. This core state machine is located in - source/BootManager.py. - -
- BootManager Flow Chart - - - - - - -
- - -
- -
- Example Execution Session - - Below is one example session of the BootManager, for a new node - being installed then booted. - -
- Example Execution Session - - - - - - -
-
- -
- Boot CD Environment - - The BootManager needs to be able to operate under all currently - supported boot cds. The new 3.0 cd contains software the current 2.x cds - do not contain, including the Logical Volume Manager (LVM) client tools, - RPM, and YUM, among other packages. Given this requirement, the boot cd - will need to download as necessary the extra support files it needs to - run. Depending on the size of these files, they may only be downloaded - by specific steps in the flow chart in figure 1, and thus are not - mentioned. - - See the PlanetLab BootCD Documentation for more information about - the current, 3.x boot cds, how they are build, and what they provide to - the BootManager. -
- -
- Node Configuration Files - - To remain compatible with 2.x boot cds, the format and existing - contents of the configuration files for the nodes will not change. There - will be, however, the addition of three fields: - - - - NET_DEVICE - - If present, use the device with the specified mac address to - contact the MA. The network on this device will be setup. If not - present, the device represented by 'eth0' will be used. - - - - NODE_KEY - - The unique, per-node key to be used during authentication and - identity verification. This is a fixed length, random value that is - only known to the node and the MA database. - - - - NODE_ID - - The MA assigned node identifier. - - - - An example of a configuration file for a dhcp networked - machine: - - IP_METHOD="dhcp" -HOST_NAME="planetlab-1" -DOMAIN_NAME="cs.princeton.edu" -NET_DEVICE="00:06:5B:EC:33:BB" -NODE_KEY="79efbe871722771675de604a227db8386bc6ef482a4b74" -NODE_ID="121" - - An example of a configuration file for the same machine, only with - a statically assigned network address: - - IP_METHOD="static" -IP_ADDRESS="128.112.139.71" -IP_GATEWAY="128.112.139.65" -IP_NETMASK="255.255.255.192" -IP_NETADDR="128.112.139.127" -IP_BROADCASTADDR="128.112.139.127" -IP_DNS1="128.112.136.10" -IP_DNS2="128.112.136.12" -HOST_NAME="planetlab-1" -DOMAIN_NAME="cs.princeton.edu" -NET_DEVICE="00:06:5B:EC:33:BB" -NODE_KEY="79efbe871722771675de604a227db8386bc6ef482a4b74" -NODE_ID="121" - - Existing 2.x boot cds will look for the configuration files only - on a floppy disk, and the file must be named 'planet.cnf'. The new 3.x - boot cds, however, will initially look for a file named 'plnode.txt' on - either a floppy disk, or burned onto the cd itself. Alternatively, it - will fall back to looking for the original file name, 'planet.cnf'. This - initial file reading is performed by the boot cd itself to bring the - nodes network online, so it can download and execute the - BootManager. - - However, the BootManager will also need to identify the location - of and read in the file, so it can get the extra fields not initially - used to bring the network online (primarily node_key and node_id). Below - is the search order that the BootManager will use to locate a - file. - - Configuration file location search order: - - - - File name - - Floppy drive - - Flash devices - - Root file system, in / - - CDRom, in /usr/boot - - CDRom, in /usr - - - - plode.txt - - 1 - - 2 - - 4 - - 5 - - 6 - - - - planet.cnf - - 3 - - - - - - - - - - - - -
- -
- BootManager Configuration - - All run time configuration options for the BootManager exist in a - single file located at source/configuration. These values are described - below. These values cannot be changed on the fly - they must be changed - and a new BootManager package built and signed. - - - - VERSION - - The current BootManager version. During install, written out - to /etc/planetlab/install_version - - - - BOOT_API_SERVER - - The full URL of the API server to contact for authenticated - operations. - - - - TEMP_PATH - - A writable path on the boot cd we can use for temporary - storage of files. - - - - SYSIMG_PATH - - The path were we will mount the node logical volumes during - any step that requires access to the disks. - - - - CACERT_PATH - - Variable not used anymore. - - - - NONCE_FILE - - Variable not used anymore. - - - - PLCONF_DIR - - The path that PlanetLab node configuration files will be - created in during install. This should not be changed from - /etc/planetlab, as this path is assumed in other PlanetLab - components. - - - - SUPPORT_FILE_DIR - - A path on the boot server where per-step additional files may - be located. For example, the packages that include the tools to - allow older 2.x version boot cds to partition disks with LVM. - - - - ROOT_SIZE - - During install, this sets the size of the node root partition. - It must be large enough to house all the node operational software. - It does not store any user/slice files. Include 'G' suffix in this - value, indicating gigabytes. - - - - SWAP_SIZE - - How much swap to configure the node with during install. - Include 'G' suffix in this value, indicating gigabytes. - - - - SKIP_HARDWARE_REQUIREMENT_CHECK - - Whether or not to skip any of the hardware requirement checks, - including total disk and memory size constraints. - - - - MINIMUM_MEMORY - - How much memory is required by a running PlanetLab node. If a - machine contains less physical memory than this value, the install - will not proceed. - - - - MINIMUM_DISK_SIZE - - The size of the small disk we are willing to attempt to use - during the install, in gigabytes. Do not include any - suffixes. - - - - TOTAL_MINIMUM_DISK_SIZE - - The size of all usable disks must be at least this sizse, in - gigabytes. Do not include any suffixes. - - - - INSTALL_LANGS - - Which language support to install. This value is used by RPM, - and is used in writting /etc/rpm/macros before any RPMs are - installed. - - - - NUM_AUTH_FAILURES_BEFORE_DEBUG - - How many authentication failures the BootManager is willing to - except for any set of calls, before stopping and putting the node - into a debug mode. - - -
- -
- Installer Hardware Detection - - When a node is being installed, the BootManager must identify - which hardware the machine has that is applicable to a running node, and - configure the node properly so it can boot properly post-install. The - general procedure for doing so is outline in this section. It is - implemented in the source/systeminfo.py - file. - - The process for identifying which kernel module needs to be load - is: - - - - Create a lookup table of all modules, and which PCI ids - coorespond to this module. - - - - For each PCI device on the system, lookup its module in the - first table. - - - - If a module is found, put in into one of two categories of - modules, either network module or scsi module, based on the PCI - device class. - - - - For each network module, write out an 'eth<index>' entry - in the modprobe.conf configuration file. - - - - For each scsi module, write out a - 'scsi_hostadapter<index>' entry in the modprobe.conf - configuration file. - - - - This process is fairly straight forward, and is simplified by the - fact that we currently do not need support for USB, sound, or video - devices when the node is fully running. The boot cd itself uses a - similar process, but includes USB devices. Consult the boot cd technical - documentation for more information. - - The creation of the PCI id to kernel module table lookup uses - three different sources of information, and merges them together into a - single table for easier lookups. With these three sources of - information, a fairly comprehensive lookup table can be generated for - the devices that PlanetLab nodes need to have configured. They - include: - - - - The installed /usr/share/hwdata/pcitable - file - - Created at the time the hwdata rpm was built, this file - contains mappings of PCI ids to devices for a large number of - devices. It is not necessarily complete, and doesn't take into - account the modules that are actually available by the built - PlanetLab kernel, which is a subset of the full set available - (again, PlanetLab nodes do not have a use for network or video - drivers, and thus are not typically built). - - - - From the built kernel, the modules.pcimap - from the /lib/modules/<kernelversion>/ - directory. - - This file is generated at the time the kernel is installed, - and pulls the PCI ids out of each module, for the modules list they - devices they support. Not all modules list all devices they sort, - and some contain wild cards (that match any device of a single - manufacturer). - - - - From the built kernel, the modules.dep - from the /lib/modules/<kernelversion>/ - directory. - - This file is also generated at the time the kernel is - installed, but lists the dependencies between various modules. It is - used to generate a list of modules that are actually - available. - - - - It should be noted here that SATA (Serial ATA) devices have been - known to exist with both a PCI SCSI device class, and with a PCI IDE - device class. Under linux 2.6 kernels, all SATA modules need to be - listed in modprobe.conf under 'scsi_hostadapter' lines. This case is - handled in the hardware loading scripts by making the assumption that if - an IDE device matches a loadable module, it should be put in the - modprobe.conf file, as 'real' IDE drivers are all currently built into - the kernel, and do not need to be loaded. SATA devices that have a PCI - SCSI device class are easily identified. - - It is enssential that the modprobe.conf configuration file contain - the correct drivers for the disks on the system, if they are present, as - during kernel installation the creation of the initrd (initial ramdisk) - which is responsible for booting the system uses this file to identify - which drivers to include in it. A failure to do this typically results - in an kernel panic at boot with a 'no init found' message. -
-
- -
- Backward Compatibility - - This section only applies to those interested in sections of the - BootManager that exist for backward compatibility with nodes not - containing the NODE_KEY. This does not affect any nodes added to the - system after deployment of the BootManager. - - Given the large number of nodes in PlanetLab, and the lack of direct - physical access to them, the process of updating all configuration files - to include the new NODE_ID and NODE_KEY will take a fairly significant - amount of time. Rather than delay deployment of the BootManager until all - machines are updated, alternative methods for aquiring these values is - used for these nodes. - - First, the NODE_ID value. For any machine already part of PlanetLab, - there exists a record of its IP address and MAC address in PlanetLab - central. To get the NODE_ID value, if it is not located in the - configuration file, the BootManager uses a standard HTTP POST request to a - known php page on the boot server, sending the IP and MAC address of the - node. This php page queries the MA database (by using a PHP page, not - through the MA API), and returns a NODE_ID if the node is part of - PlanetLab, -1 otherwise. - - Second, the NODE_KEY value. All Boot CDs currently in use, at the - time they request a script from the MA to run, send in the request a - randomly generated value called a boot_nonce, usually 32 bytes or larger. - During normal BootManager operation, this value is ignored. However, in - the absense of a node key, we can use this value. Although it is not as - secure as a typical node key (because it is not distributed through - external mechanisms, but is generated by the node itself), it can be used - if we validate that the IP address of the node making the request matches - the MA record. This means that nodes behind firewalls can no longer be - allowed in this situation. -
-
\ No newline at end of file -- 2.43.0