kiwi-5.04.58-1.1.1>t 4 DpQ5}/=„reC d4e |^麻>mZg\|Z*\?'Ն><d6s*Po#]9ǁp5u mP%~L+G$b&AwS KalsuWj0eMjMTneuVtJ 8ck]%yqr3} ʙƫ- X*ŨLn5k4wd 1G?eXEI m{ D)-c ܉Q5}/=„Z-*C|40^ܯJH"ɺ@Ep6.W[5  ɡ784Qu|<LP/P<ƞJMNNFs.qUV.TREzt"NijObP֘KjF+vR" ~п81 p *!G 7ZCs6# C3,,YPkU] +clIǺT!kD(/\ 4fd24da72af8e3af2f5b623d4439164669e0b3e1#p>@?d  2 $2;C \n`  $    L!$%'B-.$/(/8/ 9b : BFGHIDXBYBZ\[`\h],^"4bHcdeflu0v w $xyAzCkiwi5.04.581.1.1openSUSE - KIWI Image SystemThe openSUSE KIWI Image System provides a complete operating system image solution for Linux supported hardware platforms as well as for virtualization systems like Xen. Authors: -------- Marcus Schaefer Q5Cbuild21#b$openSUSE 12.3openSUSEGPL-2.0http://bugs.opensuse.orgSystem/Managementhttp://github.com/openSUSE/kiwilinuxx86_640)}% JL[0>\O <;1<qEkolZyVMiNIQ(^_Tg *% DVI/[3GA  K%\ ^ / Ow L)S?5'_D|lßg  V u " j 8 x X zA큤A큤A큤AAAA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤AA큤A큤A큤A큤AQ5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5NYQ5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q5Q526674e2e311069dee7eff8d6328c34e78d4e71fd86193e23391e13ddf2e3700ebc6a484ea84bbe56e51a24affecc752b6fbd7f90d66cee534905bcb829b9228609c09be20de0ed5720e78227d24735bfdc6f64b3b84518659d76c334d21507c08717890d5e84d056159237d785633bf46b1c8b741728bb247d333a220b2b9dc48d96e195fc17620b8f1056948023a22f949c0f751bb5fc9692fcf9048398c66b2790308b78d1ceab374b7128c98ad57669fbe3d7c82284be7e46581ab7222d61a4e69cbb92b3f97522726beb8c1837bca53a499dc9d593b55aa4e2fa144d9efa0a7b7ac0445d3d4e14fa393fd39fa71415528d76afacbbb0a5a65df33ca4f9627549d65025908e3c56553db8b554573fcc20e050a4d613f1562aea8ed76d3920a2d1a60228dc7e07e7d3a6e2d17ba09cd55f4ad1f7bf838af2258e6884060dcaa1ca895c7b1cbaa4970fe0c6d98012d50b2baf3e5ddc532401fd3e0bffa96b80a52079c7a822ff359121b0f43be31261ba732861190518c2d0f8da7e9a49ade711c8d1ac288eb34f9859a009278872cd67dfbeccb7ddedf508f695dfdee8e56b22b3030be76f3d871c4c96ca21890c97d96ec5f69b0edbc6f9d30ef6b1342c046a714c710063a1973b889f015cb590148b703b589b5c27c9fac1cb68ac1e8bdb85318180fa550385c8df95cc67f56a36c2660ed10e28f4e60330197fcc71f78dc4636cfb72fd76b027993e6a6099b59fc07df4641b68cda63c4b655b3e00f8f64bb48fd232fd620abe177336352bc8f48e77b9adbc5b87d98a08bed0e083fb47992b7426ef4a4755b7b59a6c0d871263a7db1de7147d566525376dd3a718da342297933eb8b1ae551880c45d56d6826ed8148658bd1a8ba16149a306d39b22983ccedeb77fe2b520fac5b0d781b24d86f133427becc46771741ef0674018e8651300ebba76011736685e6ff0c4a6660f63ff4d63f06d262551fd92b771e021ccb1b452b791630dcc8b0603ad58e13bed7a3ecee1258005a128e8b8740cb0ba8a30892c2098462fa28327b5bce79577d810951344b848155223f3742c055a1afd040fb18227346ffea0ad9c0e9033afef2c53382bab31af40ea9b03bd9cf9ad6e4b09cf6d650015460215d3f72426d5a378a265cbd2f1e31e932eec15746cd0dc18aec47e1843301492f13c36bf80b88d4b97c3eee0474ca7fdd723b9f83ff96d0a179680bfc3a0d95cfab539517ae1a01fc1d3ddf7f99d50a11c4de4c0c57d47fff4a9633c0110ccbf1a2ed3473d590613f5b87054b27ae1e240cce5a2e87f3fef2acb7807e2c2adca7d7a0aa421c938b646ad701fded77ed9b41a8240fde92a766505be9c73092b21e218d2dfc286113c8adbadc33327918864e55759d253719b11c50f7b59fe2f9b1288ef9d5fea9b0e0e40000c871d3d1eb313f637c189ca3baa94c9e48c3bafa77602b13a2bcc8e37a7e53be40ae769b746672ef9f37cf58b28b0251e434d54fa54b36eacdaa27bba61c2d947a8248cc71f4d95a9738cc0f70c4866470d8500fae0f93a37b4a4e5cbdadec8b7ab6b57a9b1b2a8a432d400e283794f75d94922bd0d2a683e5245da7d2c352d44cdc77ab7c57cba0feae8a606062a79b9d7c249308d70e3d554eb570229005b848d8b4b34cf06a3691f30e245c17af8dcaea3d1159f408fabf4dbaf928df1cb077d714ac3db033ef342c605b4d8a4e9760f1e79469d9ded9cf3191afe61b714d5a7bb7acf54070ee6c5b18ad95e813fd638fdefded2f015cf15bd61ba78d9ff017cb3639774eaf42dc6966003ab27b3740ffb9b35160cbd021065c8c902efcf87b22292f1f15637d91fcc0c9833c2778b186243a4028437f9c8c7991da4144b2029e6f2bb999842c1abafa4c2e0c49073ce7b7229fdd84ed3d6a38bcfa847531926158b465df41dbaba5604d4732fee48e69da2addda709356c0b687c6febc5c8124633f96e36b2f9746f962c3e3de205e098be871eebfe1c3c297c5d22437b15a5e21dbeb1365359944cf515c38fc9de21b5365443bcb5055f8dbb8e2d776202833322e7a9a60aa6c572e1431435c34fb4c5f2468d544bc7390629a731912699ff8bf9c4cbe030b8960db9fe296ef4ae463e185aafedbcf8ad4c3b9c009c70f0ca1d8352447cd9d9b3e427cb1fd7e498924c722529f9a982c62aee6988f3906cf3aa4b4149ae07f2c6480c3bfd77810624ed08f1222cd28487fc514272bcbeea0a8791212a1c18c200d0c191792145f5c132f4e63fc91222cf214c69803f3fb667783a6d43f3c59c2bcfc7869ff8124aa53e97cb5da7e73be106cc651ccd565eb26863b02efca77bc91cb98a527870f4da8be728386a0a86d8cfce07f751cce9cb493455879fe44e2b4834282aecb25c942dcfdf20414208f098623f8289b8e60106ba7dae3374f8a02948cf6ef60a055c897cb7a6815979ea599bfffad9a71df4cfea62f05439348c0d909854db43feea20538599143059acbc6ad0ba426605427674482286d275d609c65cb3897791410120a51228d844b2a73cb25e40835d1c9e62aecc4ae040eae13b380dce1904cd1aeb2a5c9e656e0f31ef36d7778ee7b666431a6c1e3eaec460a43070cb0e9676ee8d6db3f0ca76cec76acc0446ff36e0228cebb90506859103eb5ebbafe5af15c79a552d5d9f3bab3979cea3168d9c86a1c23332c5c44783b38dc4ccdf701cba83eb265494c2f2cb9c7830bd8df03598cbdb77f92c5de2fc13949f7ad640dd5999f5630ecf8e03a666f3355a0ad2ebf14c08586d4d3d7dd9263148e20c8f7ef316f1d1584bb15937dd0fd1151bb190120acd80866e01402103540d2f96c3c9480c05370ef4733e199c9bc0912e3bb67cd89ce3989c8c2357fb5arootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootkiwi-5.04.58-1.1.1.src.rpmkiwikiwi(x86-64)perl(KIWIArch)perl(KIWIArchList)perl(KIWIBoot)perl(KIWICache)perl(KIWICommandLine)perl(KIWIConfigure)perl(KIWIGlobals)perl(KIWIImage)perl(KIWIImageCreator)perl(KIWIImageFormat)perl(KIWIIsoLinux)perl(KIWILocator)perl(KIWILog)perl(KIWIManager)perl(KIWIManagerApt)perl(KIWIManagerEnsconce)perl(KIWIManagerSmart)perl(KIWIManagerYum)perl(KIWIManagerZypper)perl(KIWIMigrate)perl(KIWIOverlay)perl(KIWIProductData)perl(KIWIQX)perl(KIWIRoot)perl(KIWIRuntimeChecker)perl(KIWISatSolver)perl(KIWISharedMem)perl(KIWISocket)perl(KIWITrace)perl(KIWIURL)perl(KIWIXML)perl(KIWIXMLDataBase)perl(KIWIXMLDescriptionData)perl(KIWIXMLDriverData)perl(KIWIXMLEC2ConfigData)perl(KIWIXMLExceptData)perl(KIWIXMLFileData)perl(KIWIXMLInfo)perl(KIWIXMLInstRepositoryData)perl(KIWIXMLOEMConfigData)perl(KIWIXMLPXEDeployConfigData)perl(KIWIXMLPXEDeployData)perl(KIWIXMLPackageArchiveData)perl(KIWIXMLPackageCollectData)perl(KIWIXMLPackageData)perl(KIWIXMLPackageIgnoreData)perl(KIWIXMLPackageProductData)perl(KIWIXMLPreferenceData)perl(KIWIXMLProductArchitectureData)perl(KIWIXMLProductMetaChrootData)perl(KIWIXMLProductMetaFileData)perl(KIWIXMLProductOptionsData)perl(KIWIXMLProductPackageData)perl(KIWIXMLProfileData)perl(KIWIXMLRepositoryBaseData)perl(KIWIXMLRepositoryData)perl(KIWIXMLSplitData)perl(KIWIXMLStripData)perl(KIWIXMLSystemdiskData)perl(KIWIXMLTypeData)perl(KIWIXMLUserData)perl(KIWIXMLVMachineData)perl(KIWIXMLValidator)perl(satsolver)@     /usr/bin/perlcheckmediaclicfscoreutilskiwi-toolslibxsltlvm2master-boot-codeperlperl-Class-Singletonperl-Config-IniFilesperl-JSONperl-Readonlyperl-XML-LibXMLperl-XML-LibXML-Commonperl-XML-SAXperl-libwww-perlrpmlib(CompressedFileNames)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rsyncsatsolver-toolsscreensquashfsutil-linuxrpmlib(PayloadIsLzma)1.3.95.04.585.16.23.0.4-14.0.4-14.0-14.4.6-14.10.2Q4Q4Q0@Q0@Q/FQ/FQ-@Q-@Q+R@Q+R@Q']Q']Q']Q& @Q& @Q& @Q& @Q$Q$Q$Q$Q$Q$Q$Q#i@Q#i@Q"Q"Q"Q"Q @Q @Q @Q @Q @Q @Q#@Q#@Q#@Q@Q@Q.Q.Q.Q.Q.Q.QQQQQQ@Q@Q@Q@Q@Q@QEQEQEQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@QQQQQQQQQQ@Q @Q @Q @Q \Q \Q \Q \Q \Q @Q @Q @Q @Q @Q @Q @Q @Q @QQQQQh@Qh@Qh@Qh@QQ@Q@Q@Q@QsQsQsQ"@Q"@PPPPP@P@P@P-P-P-P@P@P@P@P9@P9@P9@P9@PP@PDPDPDP@P@P@P@P@PPP@PP@PP@PP@PPPPPP@P[P @P @PrPO@PO@PO@PO@PO@PѬ@PѬ@PѬ@PPP@P@P@PqPqPqP @P @P+P@P@P@P@P@P@P@PPPPP7@PPPPPP@P@P@P@PBPPPPPPN@PN@PPPP@P@P@P@PYPYPYPYPYPYPYPe@Pe@Pe@Pe@Pe@PPPPP@P@P@P@P@P@PpPpPpPpPpPpPpPpPpPpP@P@P@P@P@PP*P*P@P@P@P@P6@P6@P6@P6@P6@PPP@P@P@P@P@P@P@PPPPPPPPPM@PM@PM@PM@PPPPPPPPP@P@P@P@PPPPPPPPPd@PPPPPPP@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PoPoPoPoPoPoPP{@P{@P{@P{@P{@P)P)P)P)P)P)P@P@P@PPPPPPPP5@P5@P5@P@P@P@P@P@P@P@P@P@P@P@P@P~P~P}L@P}L@P}L@P}L@P{P{P{P{P{Px@Px@Px@Px@Px@Px@PvPvPuc@Puc@PtPr@PqnPnPnPnPmz@Pj@Pj@Pj@Pj@Pj@Pj@Pj@Pj@Pj@Pj@PiPiPiPe@Pd?Pb@PaPaPaPaPaP`K@P\VP\VPYPYPYPXb@PXb@PXb@PXb@PWPTmPTmPTmPTmPS@PS@PS@PS@PS@PS@PS@PS@PS@PS@PS@PQPQPQPQPPy@PPy@PPy@PO'PM@PM@PLPIPIPIPIPH@PH@PG>PG>PE@PE@PE@PE@PE@PDPDPDPDPDPDP@@P@@P@@P@@P@@P@@P@@P@@P@@P@@P@@P@@P?UP?UP?UP>@P>@PA@O>A@O>A@O@NNNN@N@N@N@NNNNNNNNU@NU@NU@Nܲ@Nܲ@NؽNؽNؽNؽNl@NN@N@N@NwNwNσ@Nσ@Nσ@N1N1N1N1N1N@N@NˎNˎNˎN=@N=@N=@N=@N=@N=@NNNNNNHN@N@N@NåNåNåNT@NT@NT@NT@NT@NT@NT@NT@NN@N@N@N@N@N@N@N@N@N@NNNNNNNNNk@Nk@Nk@Nk@Nk@Nk@Nk@NNNNNNNNNNN@N@N@N@N@N@N@N@N@N@NvNvN%@N%@NN@N@N@N@N@N@N0NNNNNNNNNNN<@NNN@N@NGNGNGNGNGNGNGNGNGNGNGNGN@N@N@N@N@N@N@N@N@N@N@NNNNNNS@NS@N^N @NNNNj@Nj@Nj@Nj@Nj@Nj@Nj@Nj@Nj@Nj@NNNNNNNNNNNNuNuNuN$@N$@N$@N$@NNN@N@N@N@N@N/N/N/N/N/N/N@N@N@N@NNNNNN@N@N@N@N@N@N@NFNFNFNFN@N@N@N@N@N@N@N]N]N @N @N @NN|tN|tN|tN{#@N{#@N{#@N{#@N{#@N{#@N{#@N{#@N{#@N{#@NyNyNx@Nx@Nw.Nw.Ns:@Ns:@Ns:@Ns:@Ns:@Ns:@NoENm@Nm@Nm@Nm@Nm@Nm@Nm@NlNiNh@Nh@Nh@Nh@Ng\Ng\Ng\Ng\Ng\Ng\Ng\NdNdNdNdN`@N`@N`@N_sN_sN_sN^"@N^"@N\N\N\NX@NX@NX@NX@NX@NX@NX@NX@NX@NX@NWNTNTNTNTNTNTNTNS@NS@NS@NS@NS@NS@NS@NS@NS@NRDNRDNRDNNP@NNP@NNP@NNP@NNP@NLNLNLNLNK@NK@NK@NK@NK@NK@NJ[NJ[NENC@NC@NC@NC@NBrNBrNBrNA!@NA!@N?N?N?N2N2N2N1O@N1O@N1O@N1O@N1O@N/N/N/N.@N.@N.@N.@N-ZN-ZN)f@N(N(N&@N&@N&@N&@N%qN$ @N$ @N +N +N +N@N@N@N@N@N@NNNNNN@NN@NN@NNNN N e@N e@N e@N e@N N N N N @N @N @NpNpN|@N@NM6@M6@M6@M6@M@M@M@M@M@M@M@MMMMd@MMMMM@M@M@M@M@M@M@M@M@MMM)M)M)M)M)M@M@M@M@M@Mߒ@Mߒ@Mߒ@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M۝M۝M۝M۝ML@ML@ML@MMWMWMWMWMWMWMWMWMWM@M@M@M@MӴMӴMӴMc@Mc@Mc@Mc@Mc@Mc@Mc@Mc@Mc@Mc@MMMMM@M@M@MMMz@Mz@Mz@Mz@Mz@Mz@Mz@M(M(M@MMMM?M?M?M@M@M@M@M@MMMMMMVM@M@M@M@MMMMMy@M'M3@M3@MMMMMMMMM@M@M@M>M>M>M>M@M@M@M@M@MMM@MUMUMUMUMUMUMUM@M@M@M@MMMMMMMMa@Ma@Ma@M@M@M@MlM@M@M@M@M@M@MMMx@Mx@MMM2@MMMM@M@M@M@M@M=M=M=M=M=M=MI@MI@MI@MI@MI@MI@MI@MMMM@M@M@MTMTMTMTMTMTMTMTM~@M~@M~@M~@M~@M~@M~@M~@MzMzMzMzMzMx@Mx@Mx@Mx@Mx@Mx@Mx@MwkMwkMwkMwkMv@Mv@Mp@Mp@MoMoMoMoMoMn1@Mn1@Mn1@Mn1@Mn1@Mn1@Mk@MgMgMgMfH@MfH@MfH@MfH@MfH@MdMdMc@Mc@Mc@Mc@Mc@Mc@Mc@Mc@MbSMbSMbSMbSMbSMbSMbSMa@Ma@Ma@M_M_M^_@M^_@M^_@M^_@M^_@M^_@M^_@M[@M[@M[@MZjMZjMZjMZjMZjMZjMZjMY@MY@MU$MS@MS@MS@MRMRMRMRMQ0@MQ0@MQ0@MOMOMOMOMOMOMOMOMOMK@MK@MK@MJMJMJMIG@MGMGMGMGMGMGMGMGMF@MF@MF@MF@MF@MF@MBMBMA^@MA^@MA^@M@ M@ M@ M@ M>@M=iM=iM=iM<@M9u@M9u@M9u@M9u@M8#M8#M8#M8#M8#M6@M6@M5M5M5M4/@M4/@M1@M0:M.@M.@M.@M.@M.@M*M*M*M'@M'@M$]@M$]@M# M# M# M# M# M!@M!@M@MM PMMMMMM M M@M@MLs@Ls@Ls@Ls@Ls@Ls@Ls@L!L!L!L@L@L@L@L@L-@LLL@L8L@L@L@LLLLLL@L@L@L@L@L@LOLOLOLOLOLOLOLOLOLOL@L@LL[@L[@L[@LfLfLfL@LLLLLLLr@Lr@Lr@Lr@Lr@L L L L L LLډ@L7L@L֔L֔LLLLLҠ@LҠ@LҠ@LҠ@LҠ@LNL@L@L@LΫLΫLΫLB@LB@LL@L@L@LMLMLML@L@L@LL@L@L@L@L@L@L@L@LL@L@L{L{L*@L@L@LLLL@L@L@LcLcLcLcLcLcL@L@L@L@L@LLLLLLLL@L@L@L@L@L@LzLzLzLzL)@L)@L)@L)@L)@L)@L)@LLLL@L@L@L@L@L@LLLLLLLL~@@L~@@L|L|L{@L{@L{@L{@L{@LwLwLwLvW@LvW@LuLuLuLuLuLuLs@Ls@LrbLrbLrbLrbLnn@Lnn@Lnn@Lnn@Lk@Lk@Lk@LjyLjyLjyLjyLjyLi(@Li(@Le3Le3Le3LbLbLa?@La?@La?@La?@La?@La?@L_L_L_L_L_L[@L[@L[@L[@L[@L[@L[@LZLZLZLZLZLZLZLZLYV@LYV@LYV@LYV@LYV@LYV@LYV@LYV@LXLXLXLXLXLXLXLXLXLXLV@LV@LV@LV@LRLRLRLRLQm@LQm@LQm@LPLN@LN@LN@LN@LN@LN@LN@LMxLMxLMxLMxLI@LI@LH2LH2LH2LH2LH2LH2LF@LF@LELELELD>@LA@L@IL@IL@IL@IL@IL@IL>@L>@L=L=L=L=LK>JJ@J@JJJJJJJ@J@J@JlJ@J@J@J@J@JJ2@J2@J2@J2@J2@JJJJJJ@J@J@J@J@J@J@J@J@J@J@JJJI@JJݦ@JTJ`@J`@Jս@Jս@JkJ@J@J@J@J@J@J@J@J@ĴĴJ1@J1@JJJJJJJJJ@J@JęJęJęJH@JJ@J_@J_@J J J@JjJjJjJ@Jv@J$J@J@J@JJJJJ0@J0@J@J@J@JJJ^@J^@J J JJu@J#J#J@J@J@J@J:J:J@J@JJF@JQJQJQJ@J@J@J@J@J@JJJJJ]@J]@J]@J]@J]@J]@J J J~@J~@J|@J|@J|@J|@JzJzJyt@Jyt@Jyt@Jyt@Jx"Jx"Jx"Jx"Jx"Jv@Jv@JrJrJrJp9Jp9Jp9Jp9Jp9JmJmJmJmJmJmJmJi@JhPJhPJd\@J_@J_@J]J]J]J\s@J\s@J\s@J\s@J[!J[!J[!J[!J[!JUJT@JT@JT@JS8JQ@JPJPJMJL@JL@JKOJB@JB@J@J@J@J@J@J?r@J?r@J;}J;}J;}J;}J;}J:,@J8J8J8J8J8J8J8J8J8J7@J/@J/@J/@J/@J/@J/@J.NJ.NJ.NJ.NJ.NJ.NJ,@J)J'@J'@J&eJ%@J%@J%@J%@J#J"q@J@J|J|J+@JJ@J@JJJJJJ@J@J@J@J@J@J@JMJ Y@J @J @J @J dJ dJ dJ dJ dJJ@J@J{J*@J*@J*@J*@IIIIIIA@IA@I@IIIX@IX@IX@IIIIIIIII@I@IcIcIcIcI@@II@I@I@I@IԨIԨIW@IIIIIд@Iд@Iд@I̿I̿I̿In@In@IIIII@IyIyIyIyIyIyIyIyIÅ@I3I3I3I3I3IIIIIII?@I?@I?@II@I@IV@Ims@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.detom_schr@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.depraveen_paladugu@suse.derneuhauser@suse.dems@suse.depraveen_paladugu@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.depraveen_paladugu@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedelgado@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dedvaleev@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.debgeuken@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.deguillaume.gardet@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.detoganm@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.decschum@suse.dems@suse.dems@suse.dems@suse.dedvaleev@suse.dedvaleev@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derneuhauser@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.detoganm@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derneuhauser@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dedmajda@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.deadrian@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dewinter@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.derjschwei@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.dembarringer@suse.dems@suse.dembarringer@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.deadrian@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.deroot@suse.decwh@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.deroot@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deroot@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.decwh@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dewfeldt@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dembarringer@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.deug@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.dembarringer@suse.dembarringer@suse.dembarringer@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.deadrian@suse.deadrian@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.decwh@suse.dems@suse.dems@suse.dems@suse.decwh@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deug@suse.dems@suse.dems@suse.dems@suse.decwh@suse.dems@suse.decwh@suse.dems@suse.dems@suse.dems@suse.decoolo@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.decwh@suse.deadrian@suse.deadrian@suse.decwh@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.decwh@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.deug@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.demantel@suse.dems@suse.deadrian@suse.deadrian@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.decoolo@suse.dems@suse.decoolo@suse.decoolo@suse.decoolo@suse.decoolo@suse.decoolo@suse.decoolo@suse.decoolo@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.depschinagl@suse.depschinagl@suse.depschinagl@suse.depschinagl@suse.dems@suse.depschinagl@suse.depschinagl@suse.depschinagl@suse.depschinagl@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dematt@suse.dematt@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.deadrian@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dembarringer@suse.dembarringer@suse.dembarringer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.de- v5.04.58 released- if secure boot is enabled it's required to tell that in /etc/default/grub to make grub2-mkconfig produce correct results- v5.04.57 released- fixed grub2 setup for older distros which packages into lib/grub2-efi- v5.04.56 released- fixed KIWILinuxRC::installBootLoaderGrub2() + install grub2 only in BIOS mode, in EFI mode this doesn't make sense + make sure the grub2 config file also lands on the EFI (fat) partition when in UEFI mode the precompiled and signed grub.efi image searches there for the configuration- v5.04.55 released- fixed UEFI bootloader setup for grub2 based disk images + fixed creation of image install CDs in EFI mode + call findAndCopyMagicBlock only if hybrid is requested- v5.04.54 released- added vmxFlavour-uefi and xenFlavour-uefi profiles to the suse-SLE11-JeOS template image description. Given that SLE11 SP3 is used these profiles can be used to build UEFI images based on grub2- v5.04.53 released- fixed cleanMount function to work if $root dir can't be created. It might happen that at that point kiwi already mounted some stuff which can be released via cleanMount but cleanMount returned if no $root location was created.- fixed creation of KIWICache object, was missing the xml pointer- v5.04.52 released- make sure the openSUSE 12.3 JeOS set the correct console based systemd target and fix some typos in config.sh too- fixed default systemd target setup, baseSetRunlevel function a systemd target is not a number but something like multi-user.target or graphical.target- v5.04.51 released- v5.04.50 released- fix iso creation for non-EFI medias again- make sure GRUB_TERMINAL is set in etc/default grub to make yast bootloader happy. if yast can't find this setting it switches to 'console' which deactivates the graphical grub2 console (bnc #804725)- v5.04.49 released- fix product media creation for non-x86_64 when EFI boot support is enabled (bnc #804428)- v5.04.48 released- added missing setup of etc/sysconfig/bootloader setup for grub2 - fixed possible duplicate entries for quiet and splash= in etc/default/grub- v5.04.47 released- KIWIISOLinux fixes: + added addBootEFILive magic block creation to the source media KIWICollect code too + extend magic block lookup in findAndCopyMagicBlock() from 2 to 8 files and from 4 to 8 blocks (bnc #804428)- v5.04.46 released- switch back to firmware='bios' and print a warning if uefi is requested on another than the x86_64 architecture. on SUSE we provide signed loaders and kernels for x86_64 only- secure boot grub commands are linuxefi and initrdefi fix this also for oem disk images- fixed building of i386-efi (32bit) live EFI iso images- check for grub2 conf tool name before using it. with openSUSE 12.3 the grub2-efi-... tool chain was removed thus kiwi needs to check this before calling the mkconfig command- better logging messages for framebuffer device setup and initrd creation for reboot of the system by either dracut or mkinitrd- increased default boot partition size to 200MB (+50M) the plymouth splash data is huge. Just to give an example 12.2 SUSE plymouth theme data is ~3M, 12.3 SUSE plymouth theme data is about 23M. That blows up the initrd and needs more space on the boot partition- make sure temporary config.lxc is removed after execution- EFI/UEFI fixes according to standard * EFI/BOOT is required instead of efi/boot * eltorito alternative loader path must be boot//efi * secure boot grub commands are linuxefi and initrdefi * check for 64bit or 32bit efi module- KIWICollect install media package collector fixes * pass all needed arguments to the KIWIIsoLinux constructor * set logfile to terminal- v5.04.45 released- systemd related fixes causing the first boot to hang * setupConsole should not run at all in case of systemd * systemd has been moved to /usr/lib/systemd/systemd thus /bin/systemd is now a link and that causes several bash test calls to fail * quit plymouth inside the initrd if the system image doesn't have plymouth installed * make debugging plymouth problems more easy by evaluating the options plymouth.enable and/or rd.plymouth like the mkinitrd scripts does it- systemd has been moved to /usr/lib/systemd with openSUSE 12.3 thus the function baseSetRunlevel() needs to address old and new location- v5.04.44 released- don't trigger udev device creation in pre-init. All devices are already there due to the initial start of udev. This could cause a hangup on first boot of the appliance- v5.04.43 released- don't rely on boot.device-mapper init script, load device mapper module manually when needed- fixed start/stop of udev in pre-init. while using sysV init it was possible to run a startup script without a running init process. With systemd you cannot really run a service when systemd does not run- fixed corrupted fbiterm fonts for openSUSE 12.3 (bnc #803276)- use global variable kernel_cmdline to store paramters passed to the linuxrc/init script and don't hand them over via sub-functions- suppress cpio blocks message to stderr- v5.04.42 released- use mcopy to create efi structure in vfat image.- increased the vfat container image to be big enough to hold additional efi modules like the shim- fixed import of shim and grub efi modules. They are packaged as links to usr/lib/grub2/xxx-efi thus moving data from this directory will destroy the link target. We'd better copy it - also allow integration of shim-opensuse key. If no Microsoft signed key is present we check if an opensuse key exists- make sure shim package is part of the boot image for iso vmx and oem image types starting with openSUSE >= 12.3. The sim package contains the Microsoft signed efi module which is the entry point for UEFI secure boot- v5.04.41 released- fixed search path for UEFI signed shim.efi and grub.efi- v5.04.40 released- print warning if installed isohybrid does not support EFI- search for the grub2 mkimage tool. the tool has been renamed in openSUSE 12.3 thus we have to find it and can't rely on the name- make sure module-init-tools is part of the bootstrap list for openSUSE 12.3 images. Otherwise kmod-compat ist installed which is incompatible with the kernel packages and causes a zypper provides error- v5.04.39 released- fixed search path for grub2 EFI modules. in openSUSE 12.2 grub2-efi was packaged in a way that the modules were installed to /usr/lib/grub2-efi/x86_64-efi. In openSUSE 12.3 the packaging has changed and the modules are now installed to /usr/lib/grub2/x86_64-efi, really a brilliant idea- fixed repo setup in KIWIXMLInfo mode, the code there still needs the setRepository_legacy() call- fixed call to undefined function setGlobals(). This was renamed into setKiwiConfigData()- v5.04.38 released- fixed use of uninitialized value in setupBTRFS- use ext4 filesystem for clic'ed live iso's- use grub2 as bootloader for xen on openSUSE 12.2 JeOS too- fixed return value of KIWIImageFormat::createFormat. If no format is specified, e.g on xen we need only the format configuration, this is just a warning, thus the return value of the function should not indicate an error- fixed update of machine section in case of a xen dom0 setup the vmdisk entry is mandatory now thus the section has to provide it- fixed setup of build type in KIWIXML constructor. While testing I found that e.g the format conversion failed because there was no machine section found. But for the selected type and profile there was a machine section specified. The KIWIXML::setBuildType function was never called thus the default type applies which was of type iso and there no machine section existed.- fixed use of uninitialized values in KIWIBoot.pm while in kiwi's format conversion mode- added 'skipit' to the list of supported archs. I'm a bit unhappy with this change but I didn't see a better way to fix the arch check. In fact 'skipit' is not an architecture but for product building this architecture flag is used to indicate noarch rpm packages. In kiwi we check all arch values by one function KIWIXMLFileData::__isSupportedArch(), thus 'skipit' needs to be part of the list. The more clean fix would be to have two arch checking functions one for image building (real arch check) and one for product building (DVD source media). In order to keep the risk of regressions low I decided for the fast and easy way but we should have in mind that we can do better here.- make sure dbus machine-id is unique- update failsafe options (bnc #801973)- fixed search and call code for editbootconfig and editbootinstall evaluation when building iso images, live and install media- fix the message for the init argument hash presence + the log facility is a singleton and is no longer passed as argument, thus the initialization hash argument is always expected as the first argument.- remove unused code + getTypes_legacy method was no longer called- fix architecture handling for ProductPackages, allow a comma separated list of architectures also in the runtime checker function __isSupportedArch()- add trigger for schema changes + run all tests that use an xml file when the schema changes- check for the existence of a the service file before activating/deactivating a systemd service- fixed creation of KIWI* instances in KIWICollect- fixed KIWICollect constructor. The code there did not make use of the singleton KIWILog object and still expects the first parameter to be the log reference- eliminate getOVFConfig_legacy - remove des_cpu and des_memory attributes + des_cpu == ncpus and des_memory == memory we do not need 2 attributes to describe the same value + fix typo of ovfformat name, it is "powervm" not "povervm" + the schema version did NOT change thus users must fix the config file manually if they used "des_cpu", "des_memory", and "povervm" - implement writing of configured information into the .ovf configuration file + memory and limits + cpu and limits + devices - fix link bug + the image file in the .ovf directoy was a dangling link as the link created was not pointing to the proper location - update the tests to account for the removed attributes - fix typo in method name "...Machine..." not "...Maschine..."- clean up the kiwi debug mode which collects trace information about the perl caller stack. There is now a singleton module called KIWITrace which stores the backtrace. Thus this also removes the last main:: global variables from the kiwi space- follow up fix for the use vs. require change in the Singleton objects KIWILog and KIWIGlobals. If one of the modules included by require contains a use statement of the Singleton object we again got warnings about redefined functions- eliminate getVMwareConfig_legacy + incorporate default setting for guestOS into XMLVMachineData + drop all other mappings for guestOS, this is the user's responsibility - fix VMWare NIC setup bug + previously the generated config file (.vmx) did not contain information about the specified MAC address. The MAC was always set to "generated" ignoring the user specified data.- use require instead of use to include other modules in the Singleton classes. when using the "use" syntax for modules the perl compiler interrupts the compilation of the current module and starts compiling the module declared in the use statement. If the included module then includes the singleton perl issues 'Subroutine foo redefined' messages. As the compilation of of the original module was interrupted it is not finished and thus not recorded in the lookup table. Delaying the loading to runtime with the require function avoids the warning.- v5.04.37 released- fixed __checkVMscsiCapable() runtime check, it's ok to have no machine section. That one broke the containment builds for SUSE Studio- v5.04.36 released- v5.04.35 released- fixed creation of JSON tree in KIWIMigrate- fix the isohybrid checks + previous implementation did not properly account for conditions that trigger the isohybrid code path + add error condition for architectures that do not support the creation of iso hybrids + update the tests accordingly- worked on the visualization of unmanaged data in KIWIMigrate. I'd like to use the d3 visualization framework and that requires the data as JSON data structure. I implemented a method to create that information but ran into JSON max nesting level problems- partially revert (eff68ab8de60). The fstool runtime is ok just the test case XML in liveIsoImg/efiOEM/config.xml would force the xfs tools to be installed which I think is not really necessary for this test- v5.04.34 released- fixed use of undefined value in writeImageConfig- I removed the runtime check for xfs and reiserfs. reiserfs is more or less dead and xfs is a pure optional filesystem. If we have a mandatory check for xfs kiwi has to require the tools package on the package and on the build level which I think is not required. imho it would also be better to change the fstool runtime check to check only for the selected filesystem and not the complete list. We cannot expect our users to install all filesystem tools- build require e2fsprogs to allow unit tests to pass- remove the getRPM*_legacy methods use the new API- only require the uefi isohybrid command line option when building a EFI/UEFI iso + at present the uefi command line option on the isohybrid executable is treated as mandatory. This breaks all ISO builds on systems that do not have the latest isohybrid tool even if the ISO to be created is not designated as an efi/uefi ISO via the firmware attribute. The changes treat the uefi command line option as optional. A runtime check ensures that kiwi exits if the uefi command line option is required and the tool does not support it. - new runtime check and test cases- fixed firmware check to allow uefi as well- grubcd.efi has been moved to grub.efi in the latest grub2 packages. Thus we have to follow the change- some cleanup in KIWIMigrate.pm, tested d3 data visualization- make KIWIGlobals a singleton + eliminates another package variable in kiwi.pl + add the singleton to the doc + allows us to make the remainaing test cases packages, now critic 2 clean - rename methods getGlobals and setGlobals + reflect in name the data that is being returned/set getKiwiConfig, setKiwiConfigData - some general code consistency clean up- v5.04.33 released- added support for firmware="uefi" attribute. In contrast to the standard firmware="efi" support, kiwi will not create its own efi boot images but uses the shim and the signed bootloader modules as they are provided by the packages.- Implement KIWIXMLPXEDeployConfigData + supports multiple declarations of + remove confArch, confDest, and confSource from KIWIXMLPXEDeployData and encapsulate in this new object - Integrate KIWIXMLPXEDeployConfigData into XML + hold array of KIWIXMLPXEDeployConfigData and enforce child relationship to KIWIXMLPXEDeployData indirectly - Implement proper default processing for partition definitions in KIWIXMLPXEDeployData + previously the default setting were applied in the XML in the old data model. In the new data model all default are known only to the type encapsulating the data - Eliminate all *PXEDeploy*_legacy methods from XML class + update client code to use new data model provided objects - Eliminate all calls to _legacy in the PXE image creation code path - Implement new tests and update existing tests as necessary + new tests for new class + update tests for default values + new tests for default settings + eliminate _legacy tests for PXEDeploy- fixed hybrid iso search to respect partition devices and prefer them over the entire disk device. Additionally don't set a loop on the found device anymore which was used to workaround the busy state set by the kernel.- fixed use of undefined value as an ARRAY reference in KIWIXML::getUsers() method- make grub2 search more robust by searching for a flag file named like the unique ID used in the ISO header or MBR. This completes (bnc #799488)- make sure grub2/grub2-efi are part of the isoboot initrd- fixed grub2 prefix and root variable setup (bnc #799488) - fixed layout of iso's and also make sure fixCatalog() is called- enhanced isohybrid call to know about --uefi option. Creating an EFI capable hybrid iso requires the new isohybrid tool including patches by Steffen Winterfeldt as well as a correctly prepared ISO to write the information. This commit is only about calling isohybrid whereas the last commits was about preparation of the iso itself- Remove getEc2Config_legacy method from XML + Change client code to use new getEC2Config method and work with the returned EC2ConfigData object - Change getDisplayName implementation in XML + Use data from the new data structure to return the name - Reorder some operations in the EC2 image creation step + Facilitate early exit by first checking the architecture + Eliminate all _lgacy calls from this code path + Move variable initialization closer to the place where the values are used + Handle all AWS account stuff towards the end of the method, when we need the information, as this is not treated as an error anyway - Fix link in documentation + The repo for the EC2 tools moved from Virtualization:/Cloud to Cloud:/- support the profiles attribute for user definitions at the "group" level (bnc #77152) * implement new tests * update consistency checks- added the firmware type 'vboot' to support creation of images for arm based boards using google's chrome OS boot style- prepare ISO images in a way that allows hybrid ISO's which boot via EFI. There is some magic involved here and we are still not there. In order to make it work it's required to have two iso meta data blocks whereas one is used as real iso header providing boot entries for syslinux and efi-boot as well as the optional legacy bios based partition table for hybrids and the other one is used to place a gpt partition table to allow this iso to be seen as a disk when booting it as disk over EFI- removed support for openSUSE 11.4- added support for openSUSE 12.3- update the extra examples + support 12.2 and 12.3 + remove 11.4 + add min-gnome as SLES example- fix the UserData tests broken by previous update adding merge code- implement a merge method that supports the merge of user data- added support for EFI in live ISO images. In order to create a syslinux plus EFI (grub2) live ISO use the following type hybrid support for EFI live ISO's requires the new isohybrid tool which could also write a gpt into the isoheader.- fix architecture handling for ProductPackages, allow a comma separated list of architectures- removed __checkNoProfsBootstrapPackages check. It's allowed to have profiles specified in the bootstrap packages. There are image descriptions which installs the entire system by bootstrap packages. Reason for this is if the packagemanager in the image is not compatible to the implementation in kiwi e.g SLE10. Other than that we officially support bootstrap only installation including all features of 'image' typed package sections.- allow archives in the bootsrap section to allow build of images of older distributions- fixed use of sat solvable functions due to the Singleton log class changes. There were still some functions calls left which passes the $kiwi log object to the functions- Due to the new Singleton log class and the fix in KIWIQX to make use of it, all EXEC calls now lands in the logInfoMsg type of unit test framework. Thus I changed the ktLog.pm::loginfo function in the unit test functions to ignore EXEC loginfo messages and allow the unit tests to work again- fixed $main::kiwi accesses according to new Singleton log class - fixed KIWIQX command execution logging with new Singleton log class - fixed object instantiation of KIWIXMLRepositoryData due to new Singleton based log object class- implement new consistency checks + do not allow the assignment of a group ID to known system groups + do not allow the profiles attribute on a section marked as bootstrap + do not allow the use of archives in a section marked as bootstrap + ensure the interface is unique within one definition + ensure the MAC is unique within one definition- eliminate the getUsers_legacy method- fixed wrong filesystem label for the efi jump partition. According to the EFI spec it should be EFI not BOOT - fixed the boot partition setup in case of an EFI system. kiwi checks the filesystem type of the jump partition and not the boot partition which leads to a missing boot -> . link on the boot partition which then prevents the grub2 efi core image to find the grub.cfg file- DB: rebuild documentation- DB: Moved definition of PXE as the first sentence - DB: Removed linebreak after and before to avoid layout problems- turn the logger (KIWILog) into a Singleton + eliminates the first argument for every constructor + enforces less sloppy testing code for log message checking - add the logger to the design diagram as a singleton - start over all design write up- eliminate some calls to _legacy methods - moved some "old" accessors to _legacy in XML KIWIXMLInfo => getInstallSize_legacy KIWIXML => getImageVersion_legacy KIWIXML => getImageName_legacy- DB: rebuild documentation- DB: add documentation about new post hook commands- added support for post hook commands as requested in (bnc #776535)- v5.04.32 released- fixed netboot boot partition setup. In case of a custom boot partition the code created the partition and the filesystem but the original data from the image was not moved over to the boot partition- fixed updateOtherDeviceFstab to add devices by disk ID- fixed use of IFS in probeNetworkCard and loadNetworkCard - try to load hwinfo detected network modules in loadNetworkCard but don't fail if there are none detected or the load failed. udev normally loads the modules correctly - ask interfaces for their MAC and IFace name directly instead of using hwinfo, that's faster and more reliable- update XMLVMachineData class to reflect mandatory status of configuration setting in XML. Previously the element was optional and it was possible to construct the VMachine object without arguments. Now the element is mandatory and thus the object may no longer be constructed without argument.- make vmdisk a mandatory element in the machine section- fixed dom0 machine setup to make object init of KIWIXMLVMachineData happy- added oem-swap for all examples which specify a swapsize- fixed indention, obsolete curly braces from information about the structure of the internal XML data types- store objects in XML instead of raw data + change the XML class such that objects are stored instead of deeply nested raw data. This results ins simplification of code, the internal data structure, and its documentation. Data that requires merging (preferences and user data) is not stored as objects as it is not obvious that merge delegation to the respective objects would be advantageous.- fix the description + RuntimeChecker test failed due to conflicting settings in the config- fix XMLDescriptionData + previously the object construction did not conform to requierements of the Schema, it was possible to create an object without author, contact, or specification data. Multiple contact definitions were ignored - update unit tests for Description class and XML class- fixed indention- update 12.2 examples to use grub2 as bootloader- moved the os-autoinst test case from the 11.4 JeOS template into the SLE11 template. The 11.4 template will be removed with the next openSUSE 12.3 distribution but I don't want to loose this test case example- changed zypper call to use one call to install products, patterns and packages instead of splitting that up into single calls. This has the advantage that zypper can better decide for packages which provides similar functionality (bnc #796062)- update internal data structure in-code documentation- fixed 'run out of space' problem in LVM setup. use a relative 20% (min 30M) spare space per volume- fixed LANG setup inside the kiwi initrd. LANG must be correctly set before calling fbiterm. Otherwise the multibyte characters in the target locale are not displayed correctly- Start documenting the KIWI design + document the new XML design + start of high level data-flow/interaction diagram- added support for resizeMDRaid in kiwi's oemboot code when the geometry of the disk changes the raid array needs to grow too- fixed mdraid setup in combination with LVM- added zeroMDRaidSuperBlock function to make sure an old raid array is stopped and the super block is removed prior to installing a new system on that disk- deal with mdraid in the test + fix getXMLElement test + add unit test for new MDRaid methods- removed duplicate rt profile- added support for software raid into disk based appliances The feature is based on creating a degraded raid array with one disk, thus only mirroring and striping levels can be supported. A system build with a degraded raid array allows to add custom disks later to the array. In order to set it up you only need to specify the mdraid attribute as part of the type like the following example: - removed redundant code from setupInstallCD, this is done in the KIWIBoot constructor- fixed grub2 title setup, spaces were ignored- v5.04.31 released- added support for the apt-get/dpkg package manager to kiwi- allow the id for a vmdisk and vmdvd to be 0 trapped again by Perl's a string with zero ("0") is false- update templates and examples to match the schema- fixed the change of the pwd attribute to be really complete also fixed the 5.5 to 5.6 upgrade xsl style sheet- update templates and examples to latest schema version- split up KIWIManager object into a base class and the corresponding manager sub classes for zypper, ensconce yum and smart- clean up + eliminate references to Novell where possible + change copyrights from Novell Inc. to SUSE LLC + fix spelling OpenSUSE is openSUSE + update e-mail address rschweikert@novell.com to rjschwei@suse.com- implement InstRepositoryData class + stores data for element + implement RepositoryBaseData class as parent class to share common functionality with RepositoryClass + implement unit tests - some clean up for consistency in the RepositoryData class + update unit test - implement ProductPackageData class + stores data for element + did not implement set* methods as it is not obvious at this time if they are needed - follow up from addition of attributes to for apt support + set the class members + check the argument for the set* methods + add unit tests for all new methods - implement ProductOptionsData class + stores data for element + implement unit tests - implement ProductArchitectureData class + stores data for element + implement unit tests - implement ProductMetaFileData class + stores data for element + implement unit tests + some style clean up in File and Type test - implement ProductMetaChrootData class + stores data for element + implement unit tests - integrate all classes related to handling into XML processing code + implement new accessor methods + renames all getInstSource* and related methods to _legacy + update client code to use _legacy names + implement unit tests- change the pwd attribute of the instrepo element to password + be consistent with the attribute name for the repository password between the instrepo and repository element - bump the schema version to 5.6 - implement a 5.5 to 5.6 upgrade style sheet- make sure plymouth splash is switched off when the progress dialog is displayed in the oemboot/suse-dump code (bnc #793260)- v5.04.30 released- fixed changelog filter tool to incorporate commits with the same timestamp into one changelog entry- Add tests for the new firmware attribute handling - Additional changes to new firmware handling in the Type object + Encode the firmware type default (bios) + Verify that the given value is supported- v5.04.29 released- add grub2-efi by default to openSUSE 12.2 oem|vmxboot descriptions. Thus just selecting the firmware via is enough- added support for the firmware="bios|efi" type attribute before this patch the decision for efi was done by the presence of the grub2 efi modules inside the kiwi generated initrd. This has turned out to be not flexible and can't be extended to the firmware required disk layout on other architectures like the arm based chromebook to mention just one example This fixes (bnc #792917)- we should not overwrite the user specified target directory in the commandline object with something the user did not set. With reference to commit:b6a7e563 the creation of the image happened in a subdirectory below the specified target directory and kiwi overwrote that user target directory with a new name. This should not happen thus I added a new function pair named setImageIntermediateTargetDir/getImageIntermediateTargetDir to handle that value and don't touch the user specified target directory- finally changed the fragile cleanup code in KIWIBoot.pm The code there now builds a stack of commands which set the busy devices free if processed in reverse order- make sure rhelStripInitrd arguments are passed correctly- use mktemp -t to make use of $TMPDIR and do not hardcode /tmp in the paramter to mktemp- Don't use the same inode count for the install stick disk compared to the system image disk. If the system image is big the inode count is also a big number. But on the install disk image there are only a few files including the compressed version of the system image. Thus it's smaller and has not much files. The system image inode count has no relation to the filesystem on the install disk image. Under certain circumstances it could happen that the install disk filesystem can't be created because the big chunk of inodes exceeds the size of the install disk filesystem- Fedora/RHEL based distros have dhclient instead of dhcpcd. Thus the code to ask the DHCP server for an address has been splitted into two new functions setupNetworkDHCPCD() and setupNetworkDHCLIENT()- make sure pidof returns only the master pid of udevd- make sure the splash information doesn't get lost when repacking the initrd while building live iso images- fixed behavior of /etc/init.d/boot.clock which reads a value in /dev/shm/warpclock. The value is provided by a mkinitrd binary in /lib/mkinitrd/bin/warpclock. It looks like it's required to store that information for a proper localtime system clock setup. There is not good documentation about this magic but to stay compatible the warpclock code from mkinitrd was ported over to the kiwi first boot initrd This fixes (bnc #786730)- instsource: use supportstatus from product descriptions instead from PDB (Package Data Base)- instsource: avoid usage of translate_packages code, use create_package_descr code (patch by rudi)- don't point stdout to stderr when calling grub2-mkconfig with stdout I/O redirection into the configuration file. This just leads to an empty file. I should think twice before hitting the push button ;)- workaround a grub2-mkconfig bug which happens if a ' sign is used as menuentry title in /etc/default/grub. if called with the option -o grub2-mkconfig complains even if the shell quoting is perfectly fine. Strange enough it works nicely if called as grub2-mkconfig > some-file. As this is only a small and maintainable workaround I applied it- added an architecture check for KIWIIsoLinux::createHybrid() on architectures e.g ppc and ia64 the embedding of a partition table into the ISO will not work. Thus the check will issue a warning but proceed and does not fail- fixed 64bit path check for lxc base directory- Implement XMLExceptData class to store data of the element - Modify the get* methods of the XMLSplitData class to return array refs of FileData and ExceptData objects * this was necessary to avoid duplication of XML generation code across class implementations * this behavior is now also consistent with other get* methods when accessing complex data - Implement getXMLElement method for all XML*Data classes * getXML method returns 1 XML element that represents the data of the class - Update unit tests as needed- implement consistency check to disallow boot to be setup as a volume in (LVM) configuration - implement unit tests to verify test- v5.04.28 released- removed obsolete and also never reached code- fixed user/group setup. kiwi used the given group name as a supplementary group and not as the main group this user belongs to. Together with a group name and a group id which matches that group name this could lead to duplicate user views in e.g YaST and to basically wrong user configuration (bnc #792058)- implement handling of additive and unit attributes of the element in the imageConfig data structure and the XMLTypeData class rename the following methods of the XML class: * getImageSize => getImageSize_legacy * getImageSizeAdditiveBytes => getImageSizeAdditiveBytes_legacy * getImageSizeBytes => getImageSizeBytes_legacy- fixed legacy grub setup. the partition numbers starts at 0 here- fixed shell escaping for grub.cfg and /etc/default/grub - also fixed importFile method to handle single quotes correctly- implement data handling in new XML data structure - rename the following methods: * updateTypeList -> __updateTypeList_legacy * updateXML -> __updateXML_legacy * writeXMLDescription -> writeXMLDescription_legacy * createURLList -> __createURLList_legacy * getURLHash -> getURLHash_legacy * getURLList -> __getURLList_legacy * getLocale -> getLocale_legacy * getStripDelete -> __getStripDelete_legacy * getStripLibs -> __getStripLibs_legacy * getStripTools -> __getStripTools_legacy * addStrip -> __addStrip_legacy - implement new methods to add and get data expressed as in the XML - update unit tests to use _legacy method names - implement new unit tests for new methods * create new config.xml file for new unit tests - implement XMLStripData class- fixes use of custom disk size value via the element or the option --bootvm-disksize. In combination with LVM volumes the result disk size is much bigger because kiwi just added the requested volume sizes to the specified disk size which is not the desired behavior- fix array comparison in the test case * at present names that contain "special" characters may not compare properly, such that libstdc++ will not match a libstdc++ entry in the other array. Use string interpolation to address the issue.- use numbers for calculations, do not depend on implicit conversion- DB: rebuild documentation- DB: update documentation due to the new pxe unionfs mount method- added mountSystemUnionFS() function which uses fuse-unionfs to overlay mount the root system according to the contents of UNIONFS_CONFIG. So far this setup is only supported with pxe images as requested in (bnc #776505)- remove searchUSBStickDevice() function. When kiwi was called with a target disk device the assumption was made that the install media should also be created on a device directly. If the install media is a USB stick (installstick="true") kiwi searches for stick devices during the process and: a) exits with an error if it can't find one b) asks which one to use if it finds more than one This behavior is a pita for automatic build processes and it also fails if the stick media does not set the 'removable' state in its meta data correctly. Additionally the assumption that the install media is present as a device just because the image was created from an existing device also sucks This commit removes the search for stick devices and always creates the install media through a loop as a file which then needs to be dumped on the target device- fixed spec file, syslinux exists on ix86 and x86_64 only- cleanup global mount method to use the getPartDevice() function to search for partition devices- cleanup setupInstallStick(), the reference to this->{loop} might be undefined depending on the environment better use the contents of $haveDiskDevice- removed obsolete mount code from setupInstallStick()- fixed setupInstallStick() if called in Studio mode. If this function is called with a disk device as reference it expects the target USB stick to be plugged in, in order to create the install image directly on that stick. For Studio this does not work because the target stick is never attached to the containment within this call happens. Thus this fix creates the install USB stick image in a loop device- added sanity check for mount() method to fail if no source information is passed- v5.04.27 released- fixed broken postImage() filesystem check which prevented the creation of the system image .md5 file- v5.04.26 released- changed behavior of --fat-storage option. Instead of syslinux we now use grub2 to boot from the fat partition. It has turned out that grub2 is more stable and behaves better when using the image on a USB stick. The grub2 theme support also makes it easier to use custom branded boot graphics- fixed cleanup of temporary copy of sysconfig/proxy. If there is a fillup template for the file and the file hasn't changed as part of the build process the fillup template is restored instead of removing the file (bnc #777151)- fixed logical volume name building in resizeLVMVolumes() the function only evaluates volume names at the primary level e.g /opt. As soon as you have a volume e.g /opt/bob it failed to resize- added support for a jump partition which is added before the actual boot partition. This is used for grub2 efi based disk images now. kiwi just put the created grub2 bootx64.efi module onto the fat16 based jump partition and let grub2 read all data from the second ext3 based boot partition. This allows standard linux filesystem based boot partitions and it has also turned out that this disk layout might be required for arm based images as well. But so far this system is connected to the efi setup only- added parted to openSUSE 12.2 JeOS template- fixed typo in setupFilesystem() which caused a fat16 filesystem even though a fat32 filesystem was requested. - changed the efi boot partition type to fat16 - added ext2 modules to the bootx64.efi module- adapt oemboot suse/rhel-repart code to make use of the flexible boot partition location in $kiwi_BootPart. The partition ID stored there is used as the beginning of the partition layout. Instead of a fixed boot partition at 1 the layout handles the value of $kiwi_BootPart as the start. If there is no boot partition the first partition must be the root partition as usual.- update the driver handling for the imageConfig data structure * take advantage of the private helper methods implemented for package handling * eliminates code duplication * simplifies implementation of driver handling methods - update the unit tests to adjust for minor differences in messages- fixed perl dependencies in spec file for rhel/centos - resolve suse version checking to zero if the suse_version macro is not defined. This allows the package build going easily also in non-suse based distros- use new partids hash for the bootloader stage setup setupBootLoaderStages()- use new partids hash for the setup and installation of the bootloaders, setupBootLoaderConfiguration() / installBootLoader()- fixed use of filehandle in addAppdata() and collectPackages() of the instsource media KIWICollect module- use new partids hash to create the device map and cleanup access to the new device map data- make sure setupBootFlags also updates the .splash.gz variant of the initrd if the function was called with the non splash (.gz) variant of the initrd.- fixed post partition size check and read-write dump if split + lvm is used. An undefined device was used for the check and the dump in this case- allow getExecArgsFormat to parse python optparse/argparse output. python uses the form '-o, --option' whereas we don't expect a comma between the short and long version - add unit test for this option format- check for kiwi_BootPart from new partition IDs meta data in setupBootPartition(). This could be used to map the boot partition to another than the first partition- switched oemboot boot code to make use of config.partids- switched vmxboot boot code to make use of config.partids- added additional meta data file with suffix .pids. The file contains the information about the ID/Name of the root,boot readonly/readwrite device according to this appliance if a virtual disk based image was requested. The information is included as config.partids into the initrd and is used on first boot. Rather than guessing the purpose of partitions the initrd will now know it exactly- fixed call of method textContent() on an undefined value- fix typo and logic error in test cases (bnc #790254) * typo cause list comparison to fail * logic error caused a name that should have been in he comparison list to be omitted- changed spec file to be quiet on unpacking the source tarball. During kiwi build don't list files and directories of tarball. This floods build log pretty much.- don't fail hard if copyBootCode() cannot create e.g symlinks on copy of the boot data. Just report that as a warning- if a bootfilesystem is specified it's required to check its type prior to the creation of the partition table because it might be required to specify a partition label according to the selected filesystem- fix return values of legacy methods of the XML class, return values as string. Older versions of the LibXML perl binding do not have an overloaded eq operator for a NodeList where the value of the first entry of a node can be used in a comparison. There is however a string conversion, thus placing the nodelist inside a string "$nl" does the trick. This fixes issues on SLES 11 with the unit tests Related to (bnc #790254) - update the trigger files to fix unit tets execution that was broken when ArchiveData, IgnoreData, and ProductData were renamed To contain the Package prefix in the name. Related to (bnc #790254)- fixed spec file: * update author list for kiwi-instsource * make sure at least ext and fat filesystem creation tools are required- fix use of uninitialized variables- v5.04.25 released- arm: removed match for image-$VERSION in suseStripKernel- fixed kernel search in suseStripKernel for armv5 kernel. There we have Image-* (with a capital 'I')- fixed spec file requirements: kiwi has a create mode runtime check for the vgs command. Thus the kiwi package should require lvm2 to become installed- make sure possibly left over dhcpcd pid file from a -T (test) call is removed before requesting the IP address for the interface. It has turned out that the sle10 dhcpcd has this bug and kiwi works around this one by actively checking for a pid file after the dhcpcd -T (test) call (bnc #787924)- use baseUpdateSysConfig() function to update variable contents of sysconfig files as required in the suseConfig() function. This eliminates the various sed statements here and uses one common function for all sysconfig updates- Fixed regular expression for replacing HWCLOCK in clock config file This fixes a bug that causes a wrong '--localtime' / '--utc' entry in USE_HWCLOCK setting. This setting got introduced first with openSUSE 12.2- fix use of uninitialized variables- netboot: fixed dhcpcd '-r' option name clash. Older versions of dhcpcd use that option in a completely different meaning, thus we distinguish the call by the the capability of the '-p' option (interface persistency) which was introduced in newer versions of dhcpcd only (bnc #787924)- fix use of uninitialized variables- add spaces to separate option arguments- fix use of uninitialized variables - do not clobber the FS tune settings for ext2,3,4 if fsnocheck and tune settings are provided- fixed use of implicit split to @_ with a temporary variable- v5.04.24 released- fixed build of plain bootiso/bootstick from kiwi initrd without system image. The call kiwi --bootusb failed to work because it tried to access the XML description which can't work when no system image is specified- v5.04.23 released- fixed device name setup in recovery/restore mode. kiwi assumes an overlay setup when a second partition exists but this is not true if the second partition is the swap space. For the initial boot of an appliance the device setup always works but when oemboot has created new partitions e.g swap space and the kiwi initrd runs again in recovery/restore mode the device setup might be broken because of another partition layout compared to the initial state- implement XML data classes for elements that are children of * KIWIXMLPackageArchiveData handle * KIWIXMLPackageIgnoreData * KIWIXMLPackageCollectData handle and * KIWIXMLPackageData handle * KIWIXMLPackageProductData - update the FileData base class to allow extension by child to support additional allowed attributes - implement unit tests for all new classes - integrate new data classes into XML class and rename the following methods to _legacy * getArchiveList * addPatterns * addImagePatterns * getList * getTypeSpecificPackageList * getPackageNodeListgetPackageAttributes * getImageConfig * getBaseList * getInstallList * getDeleteList * getBootIncludes * addPackages * addImagePackages * addRemovePackages - update client code to use *_legacy methods - removed hasDefaultPackages method - implement equivalent functionality with the new methods * addArchives * getArchives * addBootstrapPackages * addPackages * addPackagesToDelete * getBootDeletePackages * getBootIncludeArchives * getBootIncludePackages * getBootstrapPackages * getPackages * getPackagesToDelete * getProducts - the and are treated equally as a package collection - update unit tests for XML * there are some bugs in the _legacy methods, these will not be fixed as the bugs will go away when we switch to the new code. The legacy code does not respect type specific archives being added. * update the test data to re-use same configuration files for multiple test cases * use _legacy names * implement new tests for new methods - update RuntimeChecker to use new methods in the XML - implement tnew triggers and update existsing triggers as needed- some clean up, typos, remove unused code- added tar to 12.2 JeOS- add support for grub2 based recovery system- fixed indention of linux command in grub.cfg- fix the automatic alias generation to remove '$' from the name, this allows users to use SMT repos without having to specify an alias in the config.xml file- use contents of $bootPartitionFSType to check symlink capabilities- fixed cleanup code in KIWILinuxRC after mkinitrd was called in case of arm images not all obsolete data was removed - pass boot filesystem type as first argument to the pre bootloader install script and handle it in the arm JeOS template in uboot-image-setup - export bootPartitionFSType in KIWILinuxRC and handle it in the hook script kiwi-hooks/setupUBoot.sh- DB: rebuild schema documentation- fixed nic interface runtime check, the value '0' is valid for the index of a VMware interface definition, thus it's wrong to do a true/false check here.- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- make sure var/log/ConsoleKit exists when booting the first time- fixed cleanKernelFSMount() to use the correct root path- added support for reading /etc/kiwi/repoalias file in KIWIURL.pm. The repoalias definition can be used to mirror a repo path to another location (bnc #788536)- SuSEconfig is gone, call it only if it exists- fixed schema for bootfilesystem attribute, attribute was not set into the attribute list in the RelaxNG schema- added support for optional type attribute 'bootfilesystem' which can be one of ext2,ext3,fat16 or fat32 (bnc #788374) - added unit test for new attribute- update pre-commit hook- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- removed obsolete and unmaintained dotty graph file- remove the statistics colector and the generated data we never got around to finish the integration of the data collector and it is not used. At this point it appears that the code will just not be used in the long run, thus it is getting removed- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- fixed openSUSE product building- fixed handling of special characters in grub2 menuentry setup single quotes are required for custom names (bnc #786262)- fixed spec file require for kiwi-tools. kiwi should require the same or newer kiwi-tools version compared to the base kiwi package- put tests/unit/*.t to perl critic level 4 - put tests/qa/stats/collector.pl to perl critic level 4 - update pre-commit hook- clean most test unit driver files to perlcritic level 2 The remainaing driver files must be cleaned after we have migrated the code to use the new internal data structure- v5.04.22 released- removed vmxboot respectively image type vmx from arm code branch. All arm images are oem's vmx is unused here- fixed device detection in the oemboot install code. The try to remove the boot device from the list of possible install devices. The sed statement used here caused a broken list of the substring also matches other devices. The fix here changes this to exactly match the device string of the boot device and nothing else- fixed etc/default/grub GRUB_DISTRIBUTOR name setup- include mdmon to handle raid array status changes if a dmraid array is in use- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- fixed setup of /etc/default/grub to contain the bootloader setup in terms of boot title, timeout, etc... (bnc #786262)- report an error when a definition is specified in the configuration and we cannot find the necessary command to obtain LVM information - implement consistency check for user settings * if a user is specified in two sections all given settings must be the same * the same user may not be specified twice in the same section - implement group setting consistency check * a group id may only be used once * a group name may only be used with one ID- implement KIWIXMLUserData class to store user data - implement unit test for new class - implement unit tests for new methods - tie new class into XML Class * rename the following methods to *_legacy __addVolume() __populateImageTypeAndNode() __updateDescriptionFromChangeSet() __populateProfiledTypeInfo() getUsers() getTypes() * add new getUsers method returning an array of UserData objects * add new getType method return TypeData object for given type name - fixup client code to call new _legacy methods - update unit tests using _legacy- Added armv5 support- v5.04.21 released- fixed unit test, don't use remote URLs for a test they will fail inside the buildservice because there is no network access allowed- fixed spec file, added lvm2 to buildrequires. This is required to let the unit tests work- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- v5.04.20 released- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- don't send data to a closed file descriptor- fixed use of uninitialized values in the code now reported due to the use of warnings at runtime- fixed name for install media: * install ISO has suffix: .install.iso * install USB has suffix: .install.raw * install PXE has suffix: .install.tgz- update pre-commit hook- put KIWIXML.pm to perl critic level 4- put KIWISharedMem.pm to perl critic level 4- put KIWISatSolver.pm to perl critic level 4- put KIWIRoot.pm to perl critic level 4- put KIWIRepoMetaHandler.pm to perl critic level 4- put KIWIProductData.pm to perl critic level 4- put KIWIMigrate.pm to perl critic level 4- put KIWIManager.pm to perl critic level 4- add consistency check to verify a volume name is unique within each definition - add unit test- put KIWILog.pm to perl critic level 4- put KIWIImage.pm to perl critic level 4- put KIWIImageFormat.pm to perl critic level 4- put KIWIConfigure.pm to perl critic level 4- put KIWICollect.pm to perl critic level 4- put KIWIArchList.pm to perl critic level 4- add consistency check for the case can only delete packages, thus specifying archives, patterns, or a product is not valid- fixed removal of temporary boot_bind entry in fstab- make sure proc/cmdline is there when setting up logging- create LVM volume filesystems with suitable number of inodes for filesystems which require this. Occasionally it happens that we run out of space when using a custom LVM volume setup. The reason for this is that the filesystem cannot allocate more inodes because kiwi calculates the inode count for the root volume but not for the sub lvm volumes e.g /var, /srv, etc according to the volume setup. This commit fixes this in a way that kiwi creates a suitable number of inodes for each filesystem inside the LVM- update kiwi manual pages to clarify meaning of set-repo argument - fix the behavior of the new implementation of setRepository * replaceable is considered the default, thus replace a repo if it is the first in line and has not status set or the status is marked replaceable * properly replace the first repo specified in config.xml that is not marked "fixed". Previously the default profile would have been the first to get a repo replaced, no matter the definition order in config.xml - update the unit tests - encode the default status of replaceable in the RepositoryData object- make sure repos marked as imageinclude will preserve its priority- changed back to clicfs for 12.2 live iso JeOS template. I found several problems with btrfs and it's seed implementation * the compressed read-only part needs to be bigger than the data requires it. if this is not given adding the seed dev will fail * when adding a ramdisk seed for the combination read-only loop from ISO plus read-write /dev/ram (brd) block device the kernel throws a trace from btrfs not being able to relocate sys chunks and that 'balancing' it would solve that... which is not true- make sure edit boot scripts get the executable bit set- change behavior of boolean in the XML*Data classes * undefined attributes in the initialization of an object remain undefined * defined values are either 'true' or 'false' * this change had to be made such that merging and updating of preferences in the XML can be supported correctly- add new runtime check to verify that repo aliases used are unique this has to be a runtime check as it is valid to define repos with the same alias as long as those repos are never used at the same time during a build - implement setPreferences method in the XML class preferences will be assigned to the profile preferences that have an existing definition, if no definition exists the setting applies to the default preferences - add unit test for new runtime check - add unit test for new setPreferences method - remove all calls to _legacy methods from the RuntimeChecker thus the RuntimeChecker is the first using the new internal data structure- fixed getSector to calculate with numeric values- fixed IPC signal setup- fixed use of uninitialized values in KIWIBoot.pm. with the last cleanup we use warnings for KIWIBoot now thus we get informed about perl warnings for this module. Along with the ongoing process of cleaning up the code by using perl-critic other modules will follow- make KIWIArch.pm perl critic level 3 clean- make KIWIBoot.pm perlcritic level 4 clean- make kiwi.pl perl critic level 4 clean- update pre-commit hook- make kiwi.pl perl critic level 5 clean- make KIWIBoot.pm perlcritic level 5 clean- DB: rebuild schema documentation- DB: rebuild documentation- DB: update documentation concerning the new installpxe attribute- added support for the attribute. if set kiwi creates a tarball which contains all data required to let an oem disk image to become installed via pxe. The archive contains: kernel, initrd, system gzimage, md5sum and kernel boot options for the append line in the pxe setup This fixes bug (bnc #785222)- added kiwi.pl to pre-commit check- do not support creation of a TypeData object without keyword initialization hash. The image attribute is mandatory on the element, thus it should not be possible to construct an object representing the element without specifying a value for image - add the new installpxe member to the bool keywords - update the unit tests to handle the new condition - add tests for new installpxe member- change the handling of booleans in the XML*Data classes * implement __initializeBoolMembers in the base class to setup boolean members * modify the __setBooleanValue method such that a boolean value is defined as a member only if it is true, this allows us to change checks from "if ($bool && $bool eq 'true')" to simply "if ($bool)" this is consistent with general language conventions- Emacs mode fix: Fix typos in the suse-start-kiwi-xmllocator. Rather than blindly adding suffixes to nxml-mode just add kiwi suffix to include to the auto-mode-list- fixed unit test kiwiXML.pm:test_addRepositoriesExistPrefLic. The test checks for duplicate preference license indicator but adds an invalid bool value for the attribute. Thus kiwi complains about the invalid value and not about the duplicate indicator- added 'imageinclude' to supportedKeywords in KIWIXMLRepositoryData to become checked by base class code in KIWIXMLDataBase. Additionally removed obsolete and commented out code from KIWIXMLDataBase constructor- v5.04.19 released- added central deactivateVolumeGroup and activateVolumeGroup functions and make sure all udev events are processed before activating/deactivating a volume group- fixed resizeFilesystem() function: * don't create INITRD_MODULES list here, this caused multiple entries * use separate mount point not /mnt for temporary mount on resize * make sure all udev events are processed before resize- removed __checkKernelVersionToolExists runtime check. kiwi provides the tool itself thus it's always there- v5.04.18 released- make path check in KIWIURL more robust- force KIWIXMLFileData to be instantiated with a keyword argument hash - remove superfluous if test in KIWIXMLDescriptionData and KIWIXMLProfileData classes - update unit tests- fix up KIWIXMLRepositoryData class * do not support un-initialized construction * use base class infrastructure for the preferlicense member - update unit tests accordingly- implement __hasInitArg in the XMLDataBase class * this allows children that should not be constructed without an initialization argument to complain in a consistent way it the arg is missing - update ProfileData to use new method in base class - clean up DescriptionData implementation * do not support construction without arg : eliminates need for object consistency check * make setters consistent in behavior with other *Data class setters - revamp the DescriptionData unit tests * test structure consistent with other tests for XML*Data tests * smaller tests, better coverage- fixed grub2 setup. If the root filesystem is LVM based grub2 can't read e.g the fonts from this device. Thus this patch ensure all required theme data incl. the unicode font is part of the boot device- use the setupFileSystem function to create the boot filesystem this is done for code cleanup and also to prepare the code for setting up a custom boot partition filesystem. At the moment the boot filesystem is bound to which bootloader is in use but e.g for arm boxes the same bootloader might require different boot filesystems, thus this could become an option in kiwi- add tests to run when the XML class changes. Previous update had an issue that was found by a unit test that was not automatically run from the triggers- fixed copyBootCode to work if no boot partition is used- implement a ProfileData object * while profile data was already included in the new data structure, information about this data was not returned as an object. This change addresses this outstanding issue * implement unit tests for the new object * update the XML object to integrate the ProfileData class * update the XML unit test - change all XML*Data classes to be children on XMLDataBase and update unit tests to handle new initialization and new error conditions and error messages- change __setDefaultType() to meet the following conditions: * if a type is marked primary within the selected profiles it is the default type * if no type is marked primary then the first type of the default section (the one not assigned to a specific profile) becomes the default type; should the default have no type than the first type of the first profile bound preferences section is the default type - add test cases to verify this behavior- added perl-Readonly requirement to spec file- fixed kernel version tool to work with uImage files- use kiwi's kversion tool instead of get_kernel_version to let other distros also be part of the game- cleanup volume size calculation to be more readable- fixed broken symlink when creating tbz images- DB: update check target to verify docbook build env- DB: rebuild documentation- DB: update documentation, add some notes to oem pxe installs- v5.04.17 released- arm: fixed JeOS uboot-setup.tgz:setupUBoot.sh. when calling code via runHook the first parameter is the name of the hook thus I had to shift all params by one- v5.04.16 released- fixed reading search path for custom boot config scripts. The information of the origin path of the image description is read from the image/main::Prepare file stored in the unpacked root tree. Within KIWIBoot the reading of that file should be done inside the constructor when the XML data is read from the unpacked tree. That way the path is consistent for the life time of the object and needs to be read only once.- fixed typo in message string, obsolete '\n'- fixed kiwi --installcd mode and the global mount() method in general to know about LVM disks. In this case the mount has to activate the volume group in order to access the devices inside. The code to do this was in the checkLVMbind method in KIWIBoot but it is required before in the mount() method in KIWIGlobals- fixed creation of .profile KIWI_LVM_LV* variables if no size is set for the volume- cleaned up the code which walks through the volumes of an LVM setup and calculates the volume sizes and disk size increasement- added boot time correction for kiwi initrd's (bnc #784316) - removed obsolete disable of hotplug helper when starting udev - start error logging as early as possible- removed obsolete comments about deletion of _legacy functions Robert already sorted them and added a comment on top of all these functions- fixed repo setup for arm JeOS template- use simple TERM signal to stop initrd's udevd- DB: rebuild documentation- DB: be more specific about how bootinclude affects the system image.- v5.04.15 released- fixed setup of dmraid devices. A new function called identifyDMRaid() has been added which searches for mapped dmraid disks and also removes the devices which belongs to the raid from the list of install disks- fixed grub2 setup to correctly distinguish the efi and non efi config files for dual boot of install iso images- ppc: fix install iso blessing. In order to have installation CD/DVD bootable on PowerMac the suseboot directory must be blessed correctly. The situation was that -hfs-bless looks for the first directory and tries to bless required subdir. But in case required subdir is in the second directry, nothing got blessed. So let's switch the order.- ppc: don't hardcode volume id. The volume ID is hardcoded to the value of 'FIXME'. Use createVolumeID function to create dynamic volume ID. Something like openSUSE 12.2 1 where 1 is the media number- update language translations po/pot files- added a backtitle information when displaying the language dialog saying that the boot will continue in a few seconds- fixed grub2 'Boot from Hard Disk' chainloader setup- fixed grub2 root and module setup for bios based ISO boot- added a 10sec timeout for the language selection (bnc #778570)- make sure unicode font inclusion for install iso images happens when grub2 is used and not only when an efi based image is created- fixed grub2 font, terminal and root configuration- don't reset the boot_bind system when in GPT/EFI mode- fixed path for grub.cfg when in efi mode- fixed repartition and bootloader setup in efi mode * make sure the GPT metadata is updated to the real geometry * fixed grub2 mkconfig and install calls to match efi * make sure no parted call is blocked by user interaction- fixed grub2 setup for efi based disk images. The grub.cfg file was broken, referencing (cd0) instead of the disk root device- v5.04.14 released- fixed ISO header Preparer string to point to openSUSE- make losetup of btrfs cache devices race free- v5.04.13 released- cleanup spec file, correctly set Requires for kiwi-desc-*boot- make check for duplicate volume group name more robust- v5.04.12 released- fixed check for duplicate volume group name- removed unused requirement to perl-File-Stat-Bits- v5.04.11 released- make sure images.sh from the boot images checks on umounting kernel filesystems aka /proc, /sys, etc before exiting- better way to create uuid loop device in createLoopNode we loop setup first and rename the provided device- make sure to release all mounts if KIWIOverlay fails- make sure /etc/sysconfig/kernel contains the virtio modules so that SLE10 mkinitrd picks it up correctly (bnc #747346)- DB: rebuild documentation- DB: update cache documentation- when using the caching system the bootstrap part of the build is skipped. Thus profiled bootstrap sections could lead to missing data when using a cache. I have moved all profiled bootstrap sections to type="image"- moved from ext2/dm-snapshot cache system to btrfs seed (bnc #764042)- fixed bootdev setup if no bindloop value is set- fixed createFormat() to return success when the format conversion is skipped in targetstudio mode- fixed KIWIImageFormat to work with a targetdevice as well- fixed __clean_loop in KIWIImageFormat. due to mkinitrd mounting sys __clean_loop has to take care to release sys before umount of the loop- fixed ec2 setup when only grub2 is installed. The xen loading system requires some grub related files to pre present- allow ec2 format creation when in --targetstudio mode (bnc #779360)- v5.04.10 released- cleanup installBootLoader() function. There is one way to setup the boot device and not the mess I created before. - added helper function __getPartDevice() which finds the correct block device for a partition if you give it the disk device and the partition number- fixed spec file. Added PreReq for kiwi-pxeboot and kiwi-templates to make sure required coreutils are there when the package is installed (bnc #780070)- break long info message into two lines- arm: make uboot setup scripts verbose- check exit code from edit boot config script calls- fixed uboot bootloader script to meet the bash needs- add x-bit to uboot bootconfig scripts- call editbootconfig script at the end of setupBootLoaderConfiguration and not at the beginning of installBootLoader. That's because there is one step in between which could break otherwise. Also make sure the script is searched in the original image description path- arm: kernel-firmware does not exist there- fixed arch setup for satsolver on armv7l- use 512MB instead of 128MB for xen domU examples- fixed __uniqueInPackages() function. It's not a good idea to grep via a regexp for duplicate entries. That's because if characters which have a special meaning in a regexp are part of the name it leads to invalid matching results. I thought I could fix this by using the quotemeta call but it has turned out that it does not quote with respect to the special meaning of characters for regular expressions. What we really want here is a dumb string match for duplicate entries.- finally fixed xen boot with grub2. Problem was the missing gzio module which is required to read the signatured from the compressed (xen.gz) hypervisor- arm: moved uboot related code into custom scripts outside of the kiwi code. The arm JeOS image template served as example for the uboot setup on panda/efika and beagle boards- arm: remove kernel profiles from arm boot image descriptions. handle the kernel as bootincluded package from the system image description. See the example JeOS image for reference- added new option '--edit-bootinstall ' and the XML attribute which allows to run a script after the bootloader was installed. This allows custom changes to the bootloader installation. follow up change for (bnc #667950)- The fetchFile() return value is broken: it returns status of the last command in the pipe. With atftp it works ok, but with curl it returns the status of the final dd command, which is always zero (bnc #779701)- fixed check for duplicate packages. The check fails if quotable characters are part of the package name e.g bonnie++ with bonnie is ok- fixed cleanup of rpm key tmp dir created for import- fixed KIWIXML::addPackages() function in a way that it does not add packages if they are already added to the list- v5.04.9 released- fixed mount point name clash when using the isofrom feature.- fixed cleanup code in createImageLiveCD- archive image data with subfolder- changed processing of build results: * build within a subdirectory created below the specified destination directory. The name of this subdir is build out of the image type and the used profile(s) * at the end of the build move the result files to the specified destination directory to keep the system backward compatible * add option --archive-image which allows to pack the build results into a tar archive. The name of the archive is build out of the image name, type and used profile(s) This functionality was requested by (bnc #778787) * fixed use of obsolete buildImageName() function and change to generateBuildImageName from the global space- implement new classes for processing imageConfig data structure * KIWIXMLEC2ConfigData => * KIWIXMLVMachineData => * KIWIXMLOEMConfigData => * KIWIXMLPXEDeployData => * KIWIXMLSplitData => * KIWIXMLSystemdiskData => * KIWIXMLTypeData => * KIWIXMLPreferenceData => - rename direct XML accessor functions with _legacy - integrate all new imageConfig processing classes for use in the main XML class- fixed setupPackageKeys() to work without pubring.gpg- fixed disk-or-partition check in KIWIGlobals::mount() method- DB: rebuild documentation- DB: update documentation, fixing information about flags attribute- make sure we set the plymouth default theme inside the system image to activate it properly. Unfortunately this is not done by mkinitrd even thought the configuration files are correctly set up- added warning/info message when using the --target-arch option- netboot: enable multicast for system image and transfer to a block device, respectively disable it for any other transfer (bnc #773649)- added check for duplicate LVM volume groups- fixed setupBootThemes to create the correct configuration paths- added two device checks for the list of disks reported by hwinfo which are used as possible install targets. First check is to read one byte from the device to find out if it's really possible to access it. Second check is to find the device specific serial number. Devices which are only mapped like lvm disks would appear multiple times but there is only one origin device which provides a serial string- added Emacs kiwi XML editing support. For details see: http://lizards.opensuse.org/2012/08/31/editing-kiwi-configurations-with-emacs/ Thanks to Togan for his effort- don't start plymouth if no framebuffer device is present- fixed missing done flag for theme information- v5.04.8 released- fixed unit test due to changed revision check output- v5.04.7 released- fixed kiwirevision check, newline at eol invalidates the match- v5.04.6 released- fixed syslinux based boot partition setup. We don't have symlinks on fat thus we have to copy the result of mkinitrd to the boot/ directory on the boot partition- adapt suse-live-usbstick example for 12.2, switching to btrfs because of bad impressions with persistent writing into clicfs- allow overwrite of what kiwi thinks is the minimum required size- fixed evaluation of ramonly attribute for clicfs based images- fixed checkFileSystem() to correctly detect clicfs filesystems also use blkid to detect the filesystem in the first place. - fixed KIWIGlobal::mount() function to correctly identify a clicfs image as filesystem image and not as a disk- fixed validation of kiwirevision attribute. The kiwi revision as it is defined in /usr/share/kiwi/.revision is not a number. Thus the XML schema should not require a number- fixed system theme configuration for plymouth/grub2 * make sure kiwi writes the plymouth theme setup to /etc/plymouth/plymouth.conf. looks like the initrd creation tool of the distro uses the information from this file * make sure kiwi writes the grub2 theme setup to /etc/default/grub. when using grub2-mkconfig this seems to be required- removed console-setup.service helper for 12.2 JeOS. The final version of 12.2 allows console access after some time- use background_image for grub2 boot message box- allow to overwrite the architecture when computing package dependencies in the KIWISatSolver module. This allows to provide package information for other than the real architecture. In order to set the value the environment variable: KIWI_REPO_INFO_ARCH must be set- fixed grub2 install if in targetdevice/targetstudio mode when using a real disk device the bindloop variable was not set because no partition binding is required- Moving repository to my github: http://github.com/mbarringer/imagewriter- added multiboot support for grub2 setup. This allows Xen dom0 appliances booting via grub2- remove duplicate implementation of profile setting * the setSelectionProfiles() and setActiveProfileNames() methods implemented the same functionality. The new method setSelectionProfileNames() is now the singular implementation of this functionality. * relocate the new method into the block that separates code using the imageConfig data structure (this should avoid duplicate implementation in the future). - fix up the XML unit test to handle the new split for bootsplash and bootloader theme settings- allow to overwrite the architecture when computing package dependencies in the KIWIXMLInfo module. This allows to provide package information for other than the real architecture. In order to set the value the environment variable: KIWI_REPO_INFO_ARCH must be set- DB: rebuild schema documentation- DB: rebuild documentation- DB: update documentation due to the boot theme changes- update XML descriptions to schema version 5.5- added XSL stylesheet to auto convert former sections into and sections.- split setup into and elements. This allows to have different theme values for splash and bootloader as it could appear with the plymouth and grub2. Additionally people are more flexible when providing custom branding data for either splash or the bootloader (bnc #777599)- unset *ROOT variables from config.mac if set via cmdline (bnc #777578)- create a unique application ID for install ISO images- fixed creation of install media if a target/studio device is used which is a disk but requires a mapping section to access partitions on this disk. One example is a NBD mapped disk which requires kpartx to run before one can access partitions on the disk- fixed restore of kernel splash in setupBootFlags()- fixed obsolete printout of done flag- add better user message about used splash system - prevent stderr output from 'cpio -it' result- implement setRepository method using the imageConfig data structure * this will eventually replace setRepository_legacy() * it is not certain thatthis is needed in the long run * this completes the Repository handling in the imageConfig data structure - unit tests for the new implementation- v5.04.5 released- fixed unit tests to work in 32bit environment- fixed 32bit arch check in KIWIXML constructor. For 32bit systems the generic arch name ix86 is used- v5.04.4 released- fixed kiwi --convert mode, no initrd is required for this call- fixed qcow2 format creation. Invalid options are passed and option -c was missing to indicate compression- implement the ignoreRepositories method using the imageConfig data structure * this method will replace ignoreRepositories_legacy- implement new addRepositories method * replacing the addRepositories_legacy implementation - refactor the code that is used to figure out what profile data to modify as this code will be needed in any add* implementation - unit tests for the new addRepositories method- validate templates and examples- update openSUSE 12.2 JeOS template. For some reason a dependency to kernel-debug exists when building openSUSE 12.2 images. If not specified explicitly this is an unwanted package thus I added it to the packages marked for deletion- implement the new getRepositories method * will replace getRepositories_legacy() * returns array ref of KIWIXMLRepositoryData objects - implement unit test for new method - fix up code errors in __populateRepositoryInfo * the initial implementation committed prev did not place the data in the appropriate profile information.- change code organization to aid in the transition to the new data structure * collect all _legacy code in an appropriately marked area of the module * collect all code using the new data structure in an appropriately marked area of the module * rename __checkProfiles to __checkProfiles_legacy * rename __populateDefaultProfiles to __populateDefaultProfiles_legacy * mark the imageConfig data structure dump method as private by prefixing __ to the name- rename all repository related interfaces to *_legacy * this is in preparation for the implementation of the replacement methods that will access the imageConfig data structure and use the KIWIXMLRepositoryData object- pass --partok option to isohybrid call- adapt openSUSE 12.2 examples for plymouth and grub2 use- fixed openSUSE 12.2 JeOS image, added systemd unit script to make sure the console login is showed and responsive- add and implement the __populateRepositoryInfo method this method add repository data to the imageConfig data structure.- make sure buildType is set when constructing a new KIWIXML object in KIWIImageCreator::prepareImage()- implement KIWIXMLRepositoryData class * this class holds information specified by the element and it's children () in the configuration file - implement unit tests for the new module - add new triggers and adjust existing triggers as appropriate- cleanup KIWILog module, don't print state flags in log files- moved imageConfig data dump into a function named dumpInternalXMLDescription and add the call as a comment to the code. Unfortunately added a loginfo message as part of the KIWIXML constructor causes many unit tests to fail- use perl's data dumper to print the new internal imageConfig data structure to the log file- make start of plymouth more quiet and react properly if the cmdline value 'quiet' is specified (bnc #775830)- cleanup duplicate package entries in SLE10 JeOS- changed behavior of setActiveProfileNames * when called with no argument this now resets that active profiles to the setting in the XML file. This type of dual behavior is somewhat evil from an OO perspective an dit may prove better to implement a resetActiveProfiles() in the future, we'll see how it turns out. - implement unit test for addDrivers method- implement getArch/setArch methods * allows to have influence on the architecture specific information for retrieval and addition of data to the XML object - refractor the valid profile names check into a private method * verification of proper profile names is needed in 2 routines now and will be needed in any method that allows addition of profile specific information to the XML - implement new addDrivers method * this allows to addDriver data to the XML, this completes the tie-in of the KIWIXMLDriverData object into the new structure - unit tests for get/setArch- rename addDrivers to addDrivers_legacy * this is in preparation for further integration of the new data structure - implement getActiveProfileNames and setActiveProfileNames * with the XML restructure the constructor args will be reduced to just the validated XML, thus client code of the XML must have a way to set what profiles are active for information retrieval. - implement unit tests for the {g,s}etActiveProfileNames methods- fix type for default profile in driver data population code * drivers were added to the "wrong" profile due to the type. This incorrect profile was not accessed and thus the information got lost - integrate new KIWIXMLDriverData class into KIWIXML implementation * rename getDriversNodeList to getDriversNodeList_legacy to indicate that this method is deprecated * implement getDrivers method to return of XMLDriverData objects the objects are created based on information that is contained in the imageConfig data structure - implement unit test for the new getDrivers method- implement setDescriptionInfo method on XML object ~ allow the information to be set programatically, this is needed for system migration when the configuration is created from scratch- add a getOopsState method to the test log. This is needed to properly handle cases where oops and other message states over lap.- implement a KIWIXMLFileData class * this class is intended to be an abstract base class for any xml section that uses the element. It stores the name and arch attributes of the element. The class provides get and set methods. - implement a KIWIXMLDriverData class * this class is derived from the KIWIXMLFileData class and will be used to store the information provided in the section. - implement unit test for KIWIXMLFileData - implement unit test for KIWIXMLDriverData - fix-up the pre-commit hook to register the code and set the Perl-critic severity levels, all new code (spare the .t files) is level 2 clean - add the trigger files and adjust existing trigger files to run the test on commit- unit tests for new uniqueness check for archives, packages, and patterns- add uniqueness checks for packages, archives, and patterns- use device from device map only if it exists- removed obsolete internal data $this->{bootpart}. the boot partition is always the first partition. Since that change this value is no longer useful- fixed hybrid persistent mode when btrfs seed device is used. Unfortunately we are then running into the loop device bug mentioned in (bnc #764042). I hope this gets fixed soon in the loop and/or btrfs code- v5.04.3 released- DB: rebuild documentation- update dropbear ssh documentation: Since debug_ssh.pub is used as the SSH file authorized_keys it is possible to specify serveral public ssh keys.- v5.04.2 released- DB: rebuild documentation- DB: update docs about dropbear based ssh access into the boot image- update rhel-* oemboot code to the current suse-* oemboot code- changed support for dropbear ssh. we don't provide our own keypair but allow to integrate a user public key from the pxe server. The key must be stored in /KIWI and has to be named: debug_ssh.pub. for the default tftp download method this would result in the following path on the pxe server: /srv/tftpboot/KIWI/debug_ssh.pub- update size for btrfs filesystem when building JeOS 12.2 iso- remove cached repos for a new build. The repo setup for the package managers smart and yum are cleaned up at the end of each build by resetInstallationSource(). For zypper we makes an exception here and keep the repo setup for performance reasons. Thus at the beginning a a new prepare run we should clean up the repo files to rebuild the repos as they are specified in the kiwi XML description- moved startDropBear() prior to the ELOG_BOOTSHELL check- fixed rpmlint warnings about hidden and empty files- make sure dropbear keys are installed with correct permissions- netboot: added function pxePartitionSetupCheck() which is used to validate the PART information whether the requested partition sizes can be reached according to the size of the disk. This implements the request in (bnc #771592)- changed the suse-12.2 JeOS template provided by kiwi to switch from clicfs to the new btrfs seed way (bnc #764042)- added support for btrfs seed live ISO images. btrfs supports a nice COW machinery which allows us to point all write operations to a seed device. A similar technique is used with the clicfs filesystem but this one works in userspace via fuse. I have changed the suse-12.2 JeOS template provided by kiwi to use the new btrfs seed way. Of course the clicfs way also still exists. In order to use btrfs seed devices your iso type should look like the following example: 400 I got best results with lzo compression. One downside; up to now it's not possible to forecast/calculate how much size the btrfs image really will need. Thus the calculation kiwi does is in most cases too big for small images and for big ones sometimes too little. At the moment it's a try and error game to find out the minimum required size. The implementation add a ramdisk device as seed device to the btrfs mount and remount it read-write. This has worked fine and stable with the openSUSE 12.2 kernel (bnc #764042)- fixed getSize and getBlocks functions to calculate with integer values. In addition to that the value of getBlocks was formerly passed to a dd call but this has changed to a qemu-img call. the seek value in the prior dd call was offset -1 which is wrong when using qemu-img- added support for filesystem mount options during image build and later to become stored in the fstab file. The type attribute has been added, this is related to (bnc #764042)- don't create an instance of KIWILog other than the global one in: KIWILocator,KIWIRuntimeChecker and KIWIXMLValidator- don't create an instance of KIWILog other than the global one in KIWIXMLDescriptionData- v5.04.01 released- implement the getDescriptionInfo method in the XML object. The method uses the new KIWIXMLDescriptionData object, which gets created based on the data in the imageConfig datastructure - implement unit test for the getDescriptionInfo method- fixed split setup when no persistent data is configured. In this case there is no read-write portion which caused an error on creation of the split disk- read reference mbrid file from inside the initrd and not from the attached disk devices. The matching of the ID must happen by a reference value from the loaded initrd and the data read from the MBR of all attached disks - make sure a new mbrid is written for disk based installation images created when installstick="true" is set. - identify the disk installation device via the same method used to identify the bios boot device: searchBIOSBootDevice. This allows to put disk install media not only on USB sticks but also on e.g SD cards or other disk devices - fixed grub2 setup for graphics boot of disk based installation images - set kernel log level to 6 by default - make sure mbrid exists in initrd for disk images. This is done by the new setupBootFlags function- perform a qualified import of KIWIQX in kiwi.pl- fixed creation of install sticks without system image- store the mbrid file in /boot and not in /boot/grub. The location is misleading if another than the grub bootmanager is used- add initial new-root directories according to the used package manager (bnc #743844)- add and data to the new imageConfig structure - renamed following functions as legacy code: * getProfiles => getProfiles_legacy * __populateTypeInfo => __populateTypeInfo_legacy * __populateProfiles => __populateProfiles_legacy- implement unit test for new XMLDescriptionData object - register new code in the commit-hook - add new triggers for the new test code and the new object - add new unit test to existing triggers- add new object KIWIXMLDescriptionData which provides get/set methods for the element- add an oops method to the test log * this implements the oops interface of the KIWILog object to allow unit tests to handle this condition- fixed grub2 chainloader setup- fixed mkisofs application ID setup when calling kiwi --installcd manually- New consistency check for package specification * At present the user can specify packages to be installed for a given image type even if this image type is not defined. While the packages get ignored and no harm is done, the superfluous specification is confusing and the XML definition is for all intent and purposes inconsistent. - Unit tests for new consistency check- fix validation test configuration files to meet new stricter consistency requirements- added support for EFI boot with grub2 for install ISO media live iso media is still not EFI capable. In order to use EFI boot you have to bootinclude the grub2-efi package: ... kiwi will check if there are efi modules inside the initrd and will then setup either a multiboot (iso) or plain gpt based image (bnc #771327)- show ssh login message only if an ip address was assigned- netboot: fixed use of multicast for compressed images. With commit 7a7389f2e3f2b3d92b38c08455b0c6da15569269 support for multicast based transfer of compressed images was added. Thus the checks which disable it are obsolete now (bnc #771898)- added support for EFI boot with grub2 for the disk based image types oem and vmx (bnc #771327)- fixed check for disk in main::mount() function. searching for the string 'boot sector' also applies to the file output from a boot partition. The patch will call blkid on the given file or device and assumes a disk if no block id information exists- DB: rebuild documentation- DB: update documentation, add some information about the clic_udf feature as well as the support for ssh into the boot image. Also removed some obsolete data about aufs- added support for ssh access into the boot image (initrd). Of course this requires an active network connection which is by design possible in the netboot and oemboot (in PXE boot mode) boot images. So the following is not supported for the isoboot and vmxboot boot images because they don't setup a network. The feature is based on the dropbear ssh server because it's so small to fit into an initrd. In order to have dropbear in the boot image you have to add the following to the system image configuration: and make sure one of your repos provides it. It's required to be in debug mode to be able to access the initrd. Thus you have to boot with 'kiwidebug=1' enabled. In order to access the initrd passwordless via ssh kiwi provides a key pair whereas the pubkey is stored in the authorized_keys file inside the oem- and netboot images for all supported OS versions: ssh -i /usr/share/kiwi/keys/id_dropbear root@ For openSUSE >= 12.2 rsync is available in the netboot and oemboot boot images. For older versions it might be required to add tool packages bootincluded to be able to extract data from the boot image via ssh easily. In order to copy e.g the boot log file the following command can be used if rsync exists in the boot image: RSYNC_RSH='ssh -i /usr/share/kiwi/keys/id_dropbear -l root' rsync -avz :/var/log/boot.kiwi .- fixed copy of overlay files for boot images (initrd). make sure hidden files like e.g root/.ssh are handled correctly- avoid double slashes (//) in zypper repo files- follow up fix for the change of the zypper repo handling. The repo meta data will stay on the host again but is going to be re-used to prevent unneeded reloading of repo metadata- fixed spec file to write openSUSE instead of OpenSuSE (bnc #770825)- changed the way how zypper repos are used. move the repo data including cache data into the image root directory instead of storing this information in /var/cache/kiwi/zypper on the build host. On the build host we only store a shared package cache in /var/cache/kiwi/packages. This allows to keep the repo meta data per image and thus it can be re-used on operations like kiwi --upgrade which speed up the build as this is called as part of the the kiwi --create step too- map openSUSE 12.3 to 12.2 configs for now - reformated spec file by current spec_file_formater- added kernel boot option 'disableProgressInfo=1' which allows to deactivate the progress information when the image download or install starts (bnc #771104)- added support for live systems larger than 4G by using the udf filesystem. In order to active this make sure you have set flags="clic_udf" (bnc #770703)- fixed use of grub2, with version 2.x there is no grub2-setup anymore but a grub2-bios-setup. This change was introduced with openSUSE 12.2 RC1- v5.03.34 released- follow up spec file fix, list grub2-branding-openSUSE only for suse version > 12.1 in the media requires- v5.03.33 released- fixed spec file to write openSUSE instead of openSuSE (bnc #770825)- added grub2-branding-openSUSE to the media requires- v5.03.32 released- fix dependencies on SLES 11 (sed does not support -E, use perl instead)- v5.03.31 released- fixed type in spec file, missing %endif- v5.03.30 released- netboot: fixed openSUSE 12.2 boot image description. bootstrap was only applied to in diskless profile mode. This leed to missing tools like gettext and dialog for all other profiles even the default profile- fixed spec file: netboot and isoboot needs virt-utils additionally does isoboot need e2fsprogs- v5.03.29 released- don't remove rpm and fonts required in the pxe examples- added missing fonts and X11 input packages to pxe 12.1 example- libproxy reads the data from /etc/sysconfig/proxy. Thus it's required to hold a temporary copy of that file inside the chroot to make use of proxy settings while operating in the chroot- v5.03.28 released- make sure possible proxy setting is transfered to the kiwi chroot- add profile handling in new data structure to handle XML data * This is the beginning of the XML object restructuring effort as dicussed on the list. This initial commit in the series adds the members for the new data structure and ties parts of the profile handling code to the new implementation.- don't call resetBootBind using chroot to workaround (bnc #769634)- make kiwi_default a reserved profile name * for the new data structure for XML processing we need a profile name to store unqualified data, this name was chosen to be kiwi_default. Therefore this is a reserved name and users may not use it as a profile name.- v5.03.27 released- fixed hybrid persistent writing with kernel 3.x (bnc #769086)- netboot: dhcpcd works with timeout 20s, kiwi used 40s, so one half of the time it waited with no reason. This patch runs 'dhcpcd -T' again after 22s, so the time is used effectively. It also helps in situatios when the link needs more time to start, e.g with wpa_supplicant and the first dhcp packets are lost.- fix the getPXEDeployConfiguration unit test on ppc and ppc64- zypper in 12.2 has been fixed now, so we can change back the JeOS image template to the type="image" installation- v5.03.26 released- added patterns for removal of unused files/dirs which appears along with systemd,grub2,plymouth and are not required inside the initrd- fixed evaluation of glob patterns in kiwi_strip_delete- remove references to splashy from initrd- the post install script from grub2-branding-openSUSE creates a background.png file in /boot. We have to preserve all data created in /boot because the extractKernel() function moves out all the data here from the initrd- hide plymouth splash when throwing an exception- fixed evaluation of bootincluded packages in type specific packages sections- update openSUSE 12.2 JeOS template. With 12.2 the switch to grub2 was made but the grub2-branding-openSUSE package only provides grub2 theming information. Thus for building non grub2 based images like isolinux based live systems the former gfxboot-branding-openSUSE data has to be present. Because of this the openSUSE 12.2 JeOS template includes now image type specific packages sections to select the correct branding package- make grub2 theming data available in the initrd- fixed string validation in info message in KIWICollect so that it actually shows the content of $metapack- remove import of graphics boot 'message' file when using grub2 In order to support custom branding in kiwi for grub it worked the way that one provides the theme data and together with gfxboot-devel a special formatted 'message' file was created and stored inside the initrd. The setupBootLoaderStages() function then imported that file to the system image. In grub2 the theme data is just fonts and png's and there is no creation of a special graphics format required.- hide plymouth splash when showing a dialog- switched to grub2-branding-openSUSE for openSUSE 12.2 JeOS template- grub2 can handle real spaces in menu items, yeah :)- added grub2 theme support for the openSUSE theme layout- better info message when --targetstudio option is used- provide ROOTFS_BLKDEV before calling init/systemd - don't export variables used by the boot scripts in the cleanImage function. This function is called in an extra shell process thus exporting back is not possible- fixed resizeFilesystem to prefer btrfs over btrfsctl- added variable kiwi_cpio_name which allows to access the name of the initrd image from within the initrd. This is currently used to distinguish the initrd by the type of the distro- netboot: improved testing for networks by using -T option- fixed createOriginSnapshot to prefer btrfs over btrfsctl- preserve missing btrfs tools- indicate check failure through return value (undef) * we should have it correct now. Previously a 1 was returned, indicating success. This change returns no value on failure to indicate the failed state of the check.- v5.03.25 released- fixed __checkVMscsiCapable() it's a valid setup if no machine configuration is specified in the kiwi XML- fix the suse-live-usbstick config according to the version- v5.03.24 released- make sure getExecPath() also works when invoked as non root user. It's required that PATH contains /sbin to locate binaries used by kiwi with the 'which' tool. This problem appeared when calling the unit tests as non root user like the buildservice does when building packages, thus this fixes the build- v5.03.23 released- fixed boot logging, make sure the log continues after switching to the real root filesystem- added runtime check for get_kernel_version binary. This is a suse only extension so when running on other build hosts it should be checked if it's there.- added uninstall target to Makefile- make udevStart() aware of alternative location for udevd binary- make sure kmod stays in the initrd, with respect to other distros which already moved from module-init-tools to kmod- fixed udevSystemStart / udevSystemStop to check which system service manager can be used to run the service- removed kernel sysconfig template check, that's a suse only check and even we change our own names all the time- v5.03.22 released- kiwi.pl: simpler date(1) use. calling 'date -I' is insensitive to locale which means: * LANG=POSIX is not needed, thus * explicit bash invocation is not needed (it was there because the syntax for setting env. vars varies among shells- fixed date call in usage() function to work with native qx- clean up to perl critic level 4 - disable the brief file open/close check * this check is unreliable when using multiple open/close constructs in one routine.- remove duplicate implementation of method to get a list of packages marked for boot inclusion. The methods getListBootIncludes() and getBootIncludes() used to implement the same functionality. This update removes the getListBootIncludes() method.- add profile handling verification to the package and type unit tests- add additonal condition to avoid warning * At present it is possible to trigger a "uninitialized value" warning when calling the addPackages() method, if not all packages that are to be added are boot included. This change fixes this issue.- fixed spec file, require grub2 for >= openSUSE 12.2- update migration table- clean to critic level 3- clean to critic level 4- do not attempt to normalize a path that has not been defined to begin with- clean to perlcritic level 4 * critic exception around the unify function * style clean up to more closely resemble the rest of kiwi code- added get_kernel_version source into kiwi git. We might want to install this tool on distros which doesn't provide it- modify the default critic policy for brief open * by default a close() is expected within 9 lines of an open call. Accounting for potential kiwi logging information and other coding constructs we use this is ofetn insufficient. Therefore a line limit of 15 is a bit more reasonable for the kiwi code base- add XML unit tests for type handling- use strip section in RHEL JeOS template to remove some unneded data not required in the initrd- v5.03.21 released- remove bootsplash from the delete section in the openSUSE 12.2 boot image descriptions, bootsplash is no longer installed thus it doesn't make sense to list it in the delete sections- make sure JeOS for 12.2 installs glibc-locale- small cleanup for info message- update JeOS 12.2 image description, install in bootstrap because zypper in 12.2 is so flaky and bugy throwing segfaults all the time and nobody cares about it :(- added grub2 to openSUSE 12.2 boot image descriptions- use bootstrap only installation for openSUSE 12.2 boot images- s390: make sure we wait for udev to finish after fdasd is done- use grub2 as bootloader for openSUSE 12.2 JeOS except for xenFlavour- fixed grub2-mkimage call, target format of core image must be set- add plymouth to JeOS image description- cleanup list of image packages selected in the openSUSE 12.2 boot image descriptions. The ones removed here were already installed by the selection/requirements of the bootstrap packages section- switched from bootsplash to plymouth splash screen in the openSUSE 12.2 JeOS template- added required plymouth packages to boot descriptions for openSUSE 12.2- added support for plymouth splash system- netboot: added more sophisticated partition table check. The partition table is analyzed to check if it's possible to run the update check and also to verify partition order, types and sizes with some tolerance (so for example the change to 4k sectors would not cause repartitioning). Additionally in a RAID setup the checks would check both disks.- remove references to splashy- v5.03.20 released- fixed unit test due to changes in the logging- v5.03.19 released- additional unit tests for package handling in the XML object- added lxc as a recommended package to the spec file- rename the getTypeList method to getTypeSpecificPackageList * the method returns a list of packages for the given image build type. This was not obvious from the previous method name.- call images.sh and config.sh scripts in a contained environment using LXC. The function callContained() will use lxc if it is installed on the build host machine. If it is not there or lxc-execute cannot be called the function switches to the legacy chroot method. Using a container to call custom scripts provides more protection against the nasty things one can do in a script with root permission- don't umount dev and sys filesystems in umountSystemFileSystems this is done by kiwi in the cleanup phase- fixed logging, use only one global log object which is used by all objects to make sure all messages end up in the same log file- more unit tests for XML- v5.03.18 released- v5.03.17 released- s390: sleep for a while after recreating the vtoc table- clean KIWICommandLine.pm and KIWIQX.pm to perlcritic level 4 * all other file changes to properly import the symbols from KIWIQX- exclude additional unit tests in OBS as they need network access- reread partition table after recreation of the VTOC table- s390: initialize loader variable with zipl by default- s390 netboot: recreated the vtoc table with option 'r' instead of 'u' which includes the deletion all partitions- added function umountSystemFileSystems() which is used to umount system filesystems like proc within the given root tree. This is called after a custom script call to cleanup the environment- s390: fixed normalizeRepartInput to work with fdasd- provide a pointer to the xml to createImageFormat() which allows to only create the machine configuration without direct access to the image file for reading the xml data- clean the unit test implementations to perlcritic level 4- switch back to perl-Test-Unit * the package has been fixed and is back in factory/oS 12.2- set the db45-utils package as recommend for openSUSE 12.1 and later * at present a user running into a rpm db incompatibility issue may get an error message that the db45_load tool is not available. This leaves the user with no idea where the tool may be found. Unfortunately the command-not-found utility does not turn up the command either. Setting the package as recommends increases the chance that it will be installed when KIWI packages get installed.- overlooked one format conversion call and make them skip if in --targetstudio mode- fixed building of md5 sum and compressed image when in --targetstudio mode. In this mode we don't dump an image from the generated target device, thus the building of the md5 sum and the compressed version of the image must access the device- require u-boot-tools for oem images on arm- instead of skipping the entire format conversion when in --targetstudio mode we only skip the creation of the format but not the meta data which belongs to it- skip format conversion when in --targetstudio mode- remove duplicate implementation of buildImageName method * the buildImageName was implemented in the XML and the Image object. This change removes the duplicate implementation and moves the method with the generateBuildImageName into the Global object. It is expected that a better place will be found eventually.- don't use value of --targetstudio when building iso images- fixed --targetdevice mode to work with NBD/AoE devices as well. if a network block device receives a partition table there is no automatic creation creation of devices per partition. Thus it's required to call kpartx to bind those devices prior to using it- additional unit tests for package handling - skip tests that require network access - fix up tests to verify network resolve for local test runs- add Environment variable to allow tests that require network access to be skipped in OBS- make resolveLink and resolveArchitecture "private" * these methods should not be called from outside of the XML object, and most likely this should not be here to begin with- added option --targetstudio which is used to specify a program which creates the target device node to create the image on. In contrast to the targetdevice option there will be no image file dumped from the specified device. This option is mainly used in SuSE Studio- don't use dd when reading data from a disk block device use qemu-img convert instead which takes care for sparse information- setupEncoding ist not called if a targetdevice is specified instead of the standard loop device operations. Thus luks extension together with --targetdevice did not work. This patch fixes it- call fdasd relatively and not with absolute path- remove logging of hijacked studio commands- allow createImageXFS to work with a target device- unit tests for XML object verifying package, pattern, and archive handling- v5.03.16 released- removed the ZYPP_ARIA2C=0 'hack' which is there only because of a bug in aria2c we'd better fix aria2c instead of maintaining a workaround for that inside kiwi.- make sure timezone package is installed as part of the bootstrap installations. zypper in openSUSE 12.2 crashes if it can't find /etc/localtime. A bug for this problem has been opened. As it seems zypper requires a timezone we should make sure to install one from within bootstrap- v5.03.15 released- Revert "- the env setting ZYPP_ARIA2C=0 caused a segmentation fault" problem is that this change caused other unexpected behavior in zypper :( I will investigate more here * This reverts commit 31e0d0cadfdc9f678e9675754e83674054d29d83- just found out that also obs:// URL's doesn't work for plain package building inside the buildservice. So I had to change the unit tests again- the env setting ZYPP_ARIA2C=0 caused a segmentation fault for zypper in openSUSE 12.2. I think if there is a bug in aria2c we'd better fix aria2c instead of work around that inside kiwi. Therefore I removed this 'hack'- don't use remote URL's other than obs:// in the unit tests the buildservice refused to resolve them so the unit tests works locally but not during build, thus the package build fails- v5.03.14 released- unit test for prefer-license attribute setting unique requirement- Fixed deleting of /usr/lib/gconv content in baseStripLocales The "find" command in baseStripLocales finds not only files in /usr/lib/gconv, but also the directory itself which cannot be removed by the call of 'rm' in that case- check that the prefer-license attribute is set to true only once * if the attribute is set to true multiple times it results in an ambiguity that cannot be resolved. As the outcome of the image build is indeterminate in this case we need to error out of the process.- cleanup kernel profiles: For openSUSE -base is a subset of !-base- netboot: allow multicast TFTP for compressed images (fate #313083) * the predownload hook detects that it is possible to use service partition for intermediate files and exports the temp dir path in $FETCH_FILE_TEMP_DIR * the fetchfile() method uses the temp directory and exports the intermediate file path in $FETCH_FILE_TEMP_FILE if it was created * the postdownload hook deletes $FETCH_FILE_TEMP_FILE. Later we can extend it to manage a cache of several image files.- netboot: added robust detection of the active network interface * call dhcpcd on all available network interfaces and select either BOOTIF from pxe or one of the interfaces which got a dhcp reply (fate #313338)- DB: rebuild schema documentation- adapt schema version from 5.3 to 5.4 for unit test data- unit test for getRepoNodeList- unit tests related to driver handling- apply stylesheet conversion from schema 5.3 to 5.4- added xsl stylesheet which removes the type attribute from the sections and also increases the schema version from 5.3 to 5.4- rename addRepository to addRepositories * the method may be used to add multiple repositories, this should be reflected in the method name.- DB: rebuild documentation- DB: update documentation due to removal of the drivers type attribute- remove type attribute from drivers section entirely- DB: rebuild schema documentation- DB: rebuild documentation- update documentation due to change in the type attribute in the drivers sections- don't evaluate type of drivers sections. There is only type 'drivers' now available- remove use of netdrivers,scsidrivers,usbdrivers typed drivers sections and merge them into one section- limit type attribute of drivers section to 'drivers'- add unit tests for repo handling in the XML object- add argument check to addRepository() method at present it is possible to attempt to add a repository with an invalid type. This may lead to unpredictable behavior during build. While the type is verified when given on the command line, the additional validation is needed for migration when we add repos from a running system.- add log message for repository replacement at present no message is issued if a replacable repository is replaced with a new repository- add info message when repositories are being ignored- add doc string to the prefer-license attribute in the schema documentation. Previously there was no documentation and the name was not necessarily obviously implying the intension of the attribute.- added unit tests for: * getStripNodeList() method of XML object * getConfigName() method of XML object- comment out variable that is only used for debug printing- rename of functions: * getNodeList() to getRepoNodeList() the getNodeList name is too generic and does not indicate by name what can be expected about the information returned by the method * getRepository() method to getRepositories() the method returns all repository information, thus this should be reflected in the method name- DB: update schema documentation include info about new XML element- do not call the test log internal __reset() method. calling __reset() would ignore any potential other states and therefore would ignore potential error conditions. Calling getState() instead and ignoring the returned value ensures that only one state is set in the log as expected after calling the getErrorState() method.- remove unused variable pblt- unit test for new element- DB: rebuild documentation: include info about new XML element- add new element * allow users to specify a default location for pre-built boot images in the configuration file.- re-sort the attributes of the type element into alpha order- make sure return value from cleanupRPMDatabase() is passed correctly and handled- v5.03.13 released- really fixed cleanupRPMDatabase() by using the db_dump|db45_load method- v5.03.12 released- fixed test_invalidProfileRequest(), it modifies the message data thus it needs a reset to prevent after effects in subsequent tests- perl Test::Unit doesn't work for 12.2 anymore. Other than that is's unmaintained since 2005. Therefore we switch to Test::Unit::Lite which is also not really maintained but at least still works- unit tests for profile handling * these do not test the usage of profiles, only the storage of profile data in the XML object and the consistency check upon profile request, usage will be integrated into other test at a later date- make the checkProfiles method of the XML object "private" * this is an XML internal helper method and should not be called by other modules- unit test for XML object user data storage- make the getVMConfigOpts method on the XML object "private" * this is an internal helper method and should not be called from other modules- make the getPreferencesNodeByTagName XML method "private" * this is an XML object internal method and should not be called by other modules- kernel-pae does only exists on i586/i686 architecture- eliminate getXenDomain method from XML * the domain is part of the Xen config and can be accessed via getXenConfig we should not have multiple methods to get the same data- v5.03.11 released- unit test for XML validation of the volume element test to verify that the combination of "size" and "freespace" on the element is rejected.- do not allow the use of the "size" and "freespace" attributes in combination. At present a user can specify both the "size" and "freespace" attributes on the element. In this case the setting of the "freespace" attribute is ignored, therefore allowing the combination of the attributes is misleading and should be disallowed- XML object unit tests for LVM related methods- arm: renamed boot and JeOS images from suse-Factory to suse-12.2- removed rt kernel profile, there is no kernel-rt for openSUSE- fixed handling of obs URL path within KIWIURL. if the created obs path does not exist proceed and check again as opensuse URL type. This was done only in KIWIRoot but belongs to the URL module- remove packages which do not exist in 12.2 anymore- add empiric code to calculate size for btrfs images... not nice- make sure btrfs based images provide a common subvolume setup as explained in (bnc #764703)- unit test for addStrip method of XML object * verify error condition of improper call * verify proper addition for delete, libs, and tools- fix addStrip method of XML object * when adding new strip information we need to check if an element with the given type already exists, if yes the information needs to be added to the existing type. If a new element is added with the same type as an existing element the getStrip*() implementations will not return the correct information. This is a latent bug. * also added a consitency check to ensure the method only adds strip elements of supported types.- add unit tests for XML getStrip* methods- make the getStripFileList of the XML object "private", this is an internal helper method and should not be called from other KIWI modules- v5.03.10 released- Revert "- eliminate getXenDomain method from XML" This breaks kiwi in KIWIXML.pm:getImageConfig() This reverts commit a2a9509c6ef44f09cdf2b8a271387de4bec071dc.- v5.03.9 released- allow direct root tree access for btrfs and xfs when creating the virtual disk. For those two filesystem we had the intermediate step to create a filesystem image first which is then dumped via dd on the virtual disk.- enable PXE on arm platform, untested but PXE exists there and it is fixing building kiwi- create additional -requires packages for each boot description to track dependencies automatically in the openSUSE buildservice- eliminate the use of expr and use shell's $((..)) expression instead- DB: rebuild documentation- eliminate getXenDomain method from XML the domain is patr of the Xen config and can be accessed via getXenConfig we should not have multiple methods to get the same data- unit test for OVF data storage in the XML object- DB: rebuild documentation- v5.03.8 released- make sure resizeLVMVolumes unsets FSTYPE before fsresize- add a reference to the online and local schema documentation * a recent discussion on the mailing list revealed that there is no reference to the complete schema documentation in the docbook doc and not all available elements are listed in the docbook documentation- apply oem dump and repart patches from x86 arch to ppc/s390 and arm. Reference commits are: * e3cb127676f636b71d2a07acd7fdd4bc0bb6f332 * 8d15e715dcb156bf0b101c87e28ceb810d0f4eed- DB: update documentation chapter 3 * update the chapter w.r.t. content, spelling, grammar * add section to chapter 3 explaining the use of pre-built boot images in a recent discussion on the mailing list it was pointed out that the use of pre-built boot images is not documented- fixed OEM partition selection for LVM images. If there are exactly two partitions suitable for the install process it's possible to assign boot and root partition according to the partition ID's from the OEM image partition table. Thus we can prevent a selection dialog in this case. Additionally this commit added more information about the reason why partitions are rejected- make sure 'rev' tool stays inside the initrd- fixed OEM partition install mode for LVM images- don't install unnecessary doc meta data- added sync of schema docs to doc.opensuse.org- added sync of docs to doc.opensuse.org- v5.03.7 released- make sure systemctl stay inside the initrd. That's because the reboot tool is now a link to systemctl- v5.03.6 released- fixed baseStripUnusedLibs to work with library links pointing to library links (bnc#753574)- fixed baseStripUnusedLibs to work with library links pointing to an absolute path (bnc#753574)- changed the way how the size request of LVM volumes in an oem image is processed. Before this patch the volumes were created with the requested size and stored in the image. Thus we store a lot of null bytes inside the image and also dump those null bytes when running the code of an oem install image. As the oem image by design expands itself on first boot according to the target disk and oem image configuration parameters, it's more clean and also faster to resize the volumes on first boot and not keep them with their requested size inside the image (bnc#761993)- fixed fstab flags for non root device entries- apply suse-repart patch for ppc, s390 and arm architecture reference commit: a621b4e715ac18e1daabb644a9b3b8af2e316d24- make controller and id attributes optional in the vmdisk section- added support for openSUSE 12.2 / removed 11.3 * added JeOS openSUSE 12.2 image template descriptions * update spec file to support openSUSE 12.2 and remove 11.3 * added 12.2 boot image descriptions * added openSUSE 12.2 examples- DB: rebuild schema documentation- DB: rebuild schema due to latest changes in .rnc- remove superfluous () for variable declaration- remove controller and id attribute settings from Xen example The controller and id attributes are not evaluated in the XML object for the Xen configuration, showing these settings in the examples is misleading to the user.- add qualifiers to attribute description of the machine and vmdisk elements. At present it is not obvious which of the attributes are evaluated for a given Virtual Machine image format when looking at the Schema documentation. The qualifiers address this situation.- added unit tests: * unit test for getEc2Config method of XML object * unit test for getVMwareConfig method of XML object * unit test for getXenConfig method of XML object- add the proper IP address to the Web-UI (sunstone) configuration file ~ presently the user has to manually change the configuration file and restart the server. This change eliminates this need, after the cloud is up and running the user can just access the Web-UI as the server is listening on the appropriate address.- DB: update schema documentation- added type attribute . This allows to set the size of the eventual boot partition. If no such size is set 150MB is the minimum size for the boot partition. The value has an effect for image types which creates a boot partition only, e.g LVM, split- changed disk increasement stepsize from 100MB to 10MB- fix type in comment- cleanup of KIWIBoot constructor, avoid code duplication - added error check for kiwi --bootvm ... --bootvm-system if the system is not a root tree, rootfs image or partition device - prevent dumping the image from a --targetdevice if also the creation of an install media was set. This will speedup the build - make sure to use qemu-img convert to dump image from a targetdevice- update the OpenNebula example: * Adjustments for OpenNebula version 3.4.1 release * Minor script fixes- don't use cat when reading data from a disk block device use qemu-img convert instead which takes care for sparse information- fixed getSector() calculation, could be too small aligned- added support for the vhd subformat=fixed type- added LVM volume information for all specified volumes to the profile env of the boot image. This is required to cleanly solve (bnc #761993)- allow option --recycle-root to be used in a --build process If there is a root tree in /build/image-root available it will be used as system image tree. The build of the boot image is not affected by this root recycling- additionally create md5 sum's for the kernel and the optional created splash initrd (fate #313338)- changed setupNetwork* functions in a way that they check for the presence of the $root device and in case of an error and an existing root device LOCAL_BOOT is set and the system try to proceed with local boot of the installed system (fate #313338)- v5.03.5 released- fixed bootloader setup if yaboot is used. the boot partition id is set to fat (0xc) and we have to make sure to provide bootinfo.txt, yaboot.cnf and the yaboot binary at the root of the boot partition. We don't distinguish the layout between LVM and non LVM setup if yaboot is used in order to have a clean state- changed function names installBootLoaderLilo and setupBootLoaderLilo to installBootLoaderYaboot and setupBootLoaderYaboot. lilo is only supported together with yaboot on ppc at the moment. So the function names are misleading and would block us if we want to add support for real lilo.- fixed package check for package scripts. The rpm database from the image root system has to be used instead of the build system package database- Revert "- don't set vga= kernel parameter for lilo bootlader setup" This reverts commit 5e815b28c84e805d4777551d67be8da0433e1238. lilo on ppc is something complete different than lilo on other architectures. The vga value is supported well on 'real' lilo so this issue should be fixed in the bootloader- don't set vga= kernel parameter for lilo bootlader setup I was told this causes trouble when lilo.conf is converted to yaboot.conf- use correct size for FAT table when yaboot is used- we don't need the mbrid information for ppc/yaboot the searchOFBootDevice function doesn't request it- respect custom boot timeout value for yaboot setup- don't remove cpio program from initrd, required for custom splash setup follow up fix for the other architectures s390, ppc and arm- allow evaluation of $DO_NOT_INSTALL_BOOTLOADER variable in netboot suse-preinit to prevent installation of the bootloader by a variable (bnc #760502)- netboot: use --metadata=0.9 format for raid setup (bnc #760713)- v5.03.4 released- fixed URL repo check, correctly use is_success method and make sure every repo is checked for rpm-md _and_ repodata- removed 'in progress' indicators from messages containing a path People reported to be confused about the path to be complete :)- create rootfs.meta data file which includes information about the required min size and (good) inode value for split systems. This prevents the initrd code from getting that information out of the rootfs.tar tarball and thus speeds up the boot- fixed unit test due to the removal of the aufs support- remove the urlResponse() method and use the timeout function implemented in LWP::UserAgent properly to resolve URL's- make sure releaseNetwork() also deconfigures the interface and configuration. Meaning don't use the -p option as we already check for root over NFS/AOE/NBD it doesn't make sense anymore - make sure releaseNetwork() unsets the HOSTNAME as it might conflict with the later system image network setup- allow kiwisplitroot_size= which specifies how much size is reserved for the tmpfs holding the temporary rootfs data in a split image. Also fixed the calculation of the inode number for this tmpfs- removed support for aufs overlay filesystem. The problem is that no overlay filesystem like aufs, unionfs, deltafs and friends is accepted by the kernel people. Thus support for them inside the distribution(s) is hard to maintain and the system barely works. My hope is that some day there will be the mount --overlay method implemented in a clean way and supported by the kernel until then we live with the fuse based approach (clicfs) and the device mapper snapshot method for the caching system (bnc #760159)- unit tests for preference settings- check only for presence and boolean value The "additive" attribute is a boolean value, i.e. valid values are true or false. We should only check for supported values. The removed check for 0 is possibly an artifact from times where we alloed 0 to indicate false in the XML.- fixed hook call with parameters containing spaces (bnc #760331)- fixed redundancy in getElementsByTagName ("...") -> get_nodelist(); calls. According to the spec getElementsByTagName already returns the node list if called in array context.- added unit test for XML split settings- fixed naming inconsistency: getSplitTmpExceptions/getSplitTempExceptions- v5.03.3 released- fixed baseStripUnusedLibs() to be more robust and prepared for the move of libraries to another location- don't remove cpio program from initrd, required for custom splash setup- v5.03.2 released- added optional attribute which allows to configure if the Failsafe boot menu entry for the install media should be displayed or not.- removed misleading Restore wording in install iso boot menu- make sure required libs for filesystem tools stay inside the initrd- v5.03.01 relased- make sure libext2fs stays inside the initrd, it's required for tune2fs on Factory/openSUSE 12.2- fixed evaluation of --edit-bootconfig. There is either the choice for setting the value on the commandline or as attribute inside the XML description. Before this fix the code did not correctly get the value depending on how kiwi is called - make sure any iso is created via the KIWIISOLinux provided functions. According to this editbootconfig now also works for the creation of installs ISO's- unit tests for the getPXEDeploy* methods- fix typo in XML OEM settings unit test configuration- fix typo in explanatory comment- make sure grub menu.lst is correctly utf-8 encoded- added __hasValidLVMName() runtime check. This checks if the optional LVM group name already exist on the build host.- fixed typo in error message, $! is empty but we stored the messages in $status- fixed flag state for iso in extras/suse-11.4/suse-min-gnome- redirect errors from rpm --rebuilddb into the result variable- v5.02.25 released- fixed loop in partition size check- added a check for the split read/write partition size when creating the virtual disk.- add unit tests for the getOEM* methods Prior to undertacing the restructuring of the XML object we need to get unit tests in place- v5.02.24 released- take package section type into account when processing bootincluded packages. This means packages added as bootincluded into the e.g image section gets added to the image section in the boot image too. If the target description doesn't provide the section the package will be added to the default bootstrap section as before- remove db4 package from the delete list in the RHEL boot image descriptions- fixed rpm package database rebuild check for RHEL/yum this reverts commit: c3e4ac88562074d87cad21e96cfe3d6dde976e48- moved yum priority installation from the RHEL boot- into the system image template and make it a bootincluded package. That's because there are name differences like yum-priority and yum-plugin-priority- fixed rebuild of package database when yum is used- arm: adapt JeOS description for beagle and fixed building in emulated environment- really fixed boot.script setup according to (bnc #757489)- arm: On other systems which supports a boot menu we add the linux kernel and initrd with its file names. But on arm systems there can only be one kernel because uboot doesn't support a menu. Thus perl-bootloader also doesn't support updating the uboot configuration and that's the reason why we use the links created by mkinitrd to point to the kernel and initrd in order to support kernel updates (bnc #757489)- s390: fixed recreateVTOCTable() to wait until the volume group has settled before deactivating it in a LVM setup- removed obsolete error console information- kiwi creates a link with filesystem extension pointing to the root filesystem image when created. The function compressImage creates a .gz version of that root filesystem image and therefore break the link. This fix enhances compressImage() in a way that it receives the filesystem information in order to repair the link- added oem type to s390 JeOS image description- update s390 SLE repo in JeOS template- v5.02.23 released- DB: rebuild documentation- DB: update documentation- added preCallInit hook to be available for the vmx type too- fixed partition based oem install method. parsing proc/partitions was broken in OEMFindPartitions because the ID device name was used as reference instead of the unix device name- properly pick up splash image for pre-built initrd. At present it is not possible to use a splash screen with a prebuilt initrd. For a pre-built initrd the splash file is named with extension '.spl', but we are loking for the extension '.splash.gz', thus the file is not found. With this change we look for the file with the appropriate extension.- update list of allowed VMware guestOS values- Fix the handling of the --mbrid command line switch The value passed to the --mbrid flag is parsed to an integer by GetOptions (format is 'o' = extended integer). There is code checking whether this integer is within the expected range and formats it as hexadecimal value. But commit: a5c7ab512dfb02dd99044c1db1cbc46ab05bf221 introduced a regression in the way the value of the --mbrid flag was handled because the value is set using $cmdL -> setMBRID() before the range checking and conversion.- prepare the code for the move of the udev tools to the usr tree. At present the location of udevadmin is hardcoded to /sbin, once the tools move into the /usr tree and a link exists the '-x' test will fail. This would result in broken images.- Do not allow whitespce in the value of the name attribute for the and elements. At present the user can specify a name containing whitespace. This leads to problems that are difficult to diagnose in when the user tries to run the resulting image, as the image will not properly operate.- Fix ownership issue with persistent tmpdir At present the script fails if /var/tmp does not exist. Although /var/tmp should always exist, the new code assures proper handling if this directory is missing.- Fix race condition in launch script for openNebula test At present the test script may cause a condition where the openNebula infrastructure issues a "[VirtualMachineAllocate] Error allocating a new virtual machine. Could not get disk image for VM." message. Giving the system some time to copy the image file eliminates this issue.- v5.02.22 released- fixed missing filesystem resize operation for LVM based images. If oem-systemsize and a freespace=all volume is setup kiwi resized only the freespace=all volume and missed to resize the root volume- fixed XSL stylesheet conversion: convert49to50.xsl the apply templates recursion is broken by using another mode so the fix is to stay in the same mode and select the value by a modified xpath expression- fixed misleading error message when kiwi can't find the image file on the pxe download server (bnc #754275)- fixed oem installation with luks encrypted root filesystem during the repartitioning the luks setup has to close down otherwise the partition table is busy (bnc #754978)- fixed test -z expression- fixed creation of sat job list, eliminate duplicate jobs- make sure solver failed packages/patterns are evaluated in info module- make sure libkmod stays in the initrd- make sure solver problems are evaluated in info module- v5.02.21 released- fixed incorrect fstab entry created for read-only systems- fixed identifyDevice() to calculate the correct index for accessing an entry in the deviceArray list- moved from md5_base64 to md5_hex for the creation of random repo alias names. md5_base64 could create names with a '/' and that causes trouble when checking for the existence of the repo file. In order to avoid to implement the same escape code as used by zypper in kiwi for such alias names, I'd better moved the code to create hex number based alias names- make sure ZYPP_LOCKFILE_ROOT is set appropriately when zypper is used with --root option (bnc #753818)- fixed updateOtherDeviceFstab() to correctly create missing mount points inside the root file system (bnc #754344)- make sure volume group name doesn't contain white spaces- v5.02.20 released- arm: added support for optional ${append} bootargs variable (bnc #752623)- make sure loader variable is initialized- don't use -s option for losetup: the option -s is in collision with the Loop-AES losetup dialect that is used in some distributions. Use the long version (--show) only.- changed repartition code for LVM concerning the use of element '' and 'freespace=all' volume: * if none of the two is specified, the root will be expanded to occupy all available space * if only oem-systemsize is specified, the root will be expanded as much as specified * if only freespace=all is specified (for non-root volume), then the root will not be expanded and the other volume will take all available space * Finally, if both are specified, then the root will be expanded to take as much as oem-systemsize requires and any remaining space is assigned to the other volume.- fixed compare of object addresses by using refaddr. This is more robust because objects can overload operators like '!='- fixed pattern names used in examples (bnc #752754)- v5.02.19 released- fixed order of files in an ova tar archive per spec in http://www.vmware.com/pdf/ovf_spec_draft.pdf (bnc #752581)- fixed malformed ovf file. the Envelope properties xmlns:rasd and xmlns:vssd are split in two lines with an extra quote (") (bnc #752580)- only remove the KIWI created initrd and kernel if mkinitrd run was successful - remove unused variable haveVMX- make split building more robust. the read-only partition size will be a bit bigger than the actual read-only filesystem image to be sure it fits into the partition. Due to the alignment this was required and costs a few bytes- make sure kernelCheck() initializes list of kernels if empty (bnc #752259)- don't remove libbz2 from isoboot boot images for SLE11- fixed removePackages() function * make sure rpmLibs() is called prior to rpm. if all packages are installed by bootstrap only this is required * make sure to check for empty $final variable- added ovf format example to examples/suse-12.1/suse-vm-guest- better warning message about required machine section data- run the unit tests in verbose mode during package build- fix Validator test Revert f551128061 and d76e57194c, comparison in question checks for equality of objects, thus numerical comparison is appropriate- v5.02.18 released- fixed entry for hv_netvsc.ko driver- fixed rpm database consistency check- use string comparison operator for strings and not numeric op- add new kernel module paths for Microsoft HyperV (hv) modules- fixed use of != operator in KIWIXMLValidator- removed the rpmLibs() tricks, all that sucks- fixed typo in KIWICollect.pm- added which based search for dracut/mkinitrd/depmod- remove unused function callSUSEInitrdScripts The initrd is created by setupRHELInitrd and setupSUSEInitrd, there is no call in the code to callSUSEInitrdScripts- fixed removePackages(): * use options --noscripts --allmatches * respect return code from rpm call * make sure proc is mounted- added function updateModuleDependencies() to update the kernel modules dependency list. Call this function prior to creating the initrd. This allows the user to add custom kernel modules and makes sure these get picked up when mkinitrd runs- make removePackages() to work with yum- allow fixup of image min size if given size is too small - fixed partition size check- fixed logging of non CR terminated lines when in --logfile mode- v5.02.17 released- follow up fix for handling of console in kiwi initrd (bnc #749900) * don't start blogd in kiwi initrd, doesn't make much sense * fixed console output, stdout was wrongly redirected * make sure utimer also works in the preinit code- v5.02.16 released- arm: fixed installation of MLO loader, wrong path- arm: added following boot fixes: * To avoid any issues when parted leaves x86 boot code we zero out the first 440 bytes (MBR without ptable). The mandatory master boot id to identify the device is written afterwards * make sure MLO is installed after repart again in installBootLoaderUBoot. Also make sure the same MBR cleanup code is applied in the kiwi boot code- v5.02.15 released- fixed handling of console in kiwi initrd (bnc #749900) * removed use of klogconsole, we want kernel messages at that stage * don't use tty devices, use /dev/console and remove kiwistderr * allow debug shell only if tty device for it exists * don't use extra terminal to show error information. all that is stored in /var/log/boot kiwi- added ec2region setup to ec2 example image descriptions- DB: rebuild documentation- fixed default fstab setup to know about /run for udev- update EC2 chapter Include information about EC2 tools handling of regions, us-east-1 is the default if not otherwise specified via EC2_URL, --url, or --region- fixed initrd module list for ec2 format code- further cleanup of ec2 examples- cleanup ec2 examples- netboot: fixed setup of root device for local boot- added -base kernel packages for ec2 and xenk boot profiles- fixed mkinitrd call in ec2 format code: * don't use -A also make sure the exit code of mkinitrd is evaluated * make sure all required filesystem modules are added to /etc/sysconfig/kernel before calling mkinitrd- respect size setup by user and don't add extra space for a possible boot partition- because the input stream from XML is utf-8 encoded it's required to set binmode correctly to utf-8 too when writing the data out. This is at least required for the profile file inside the initrd because it contains data from the XML like the oem boot title- changed partition alignment to align start and size of partitions to 4096 bytes. The value can be changed with the option --disk-alignment- v5.02.14 released- added support for grub2 based install iso images- v5.02.13 released- follow up and improved fix for basePackBootIncludes to pack only items listed in the rpm package filelist but don't recursively look them up in the filesystem when tar'ing them up (bnc #743159)- added creation of new meta file appdata.xml for product media- don't remove opt and selinux from initrd- added possibility to specify an oem-unattended-id in the oemconfig section. The id is evaluated as part of the oem install code and can be either the string like it appears in dev/disk/by-id or by-path. if the option oem-unattended is set to true kiwi will try to assign the install device according to the specified id. if the id cannot be found a reboot exception is thrown. If no id is specified but unattended mode is requested the first entry of the sorted device list will be used like before this change- sort list of devices found for installation in suse-dump- remove 'fixed' flagged repositories from boot image descriptions. As the boot image inherit the repo setup from the system image it's more flexible to let the system image decide for the repos- fixed suseStripModules to return early if no update driver was found- added staging/hv drivers to SLE11 boot image descriptions. Beginning with SLE11-SP2 the drivers are part of the standard kernel and thus they should be preserved (bnc #747898) - with reference to (bnc #747898) a new function called suseStripModules() has been added. The function searches for update modules and removes the old version which might be provided by the standard kernel to prevent a load clash- fix improper call off stripImage() - fix some cosmetic issues- v5.02.12 released- fixed resetBootBind, the function did not properly check for the existence of the boot_bind directory- v5.02.11 released- deactivate volume groups always with their name as argument - fixed setDefaultDeviceMap to respect device naming conventions- finally fixed setupBootPartition in a clean way. kiwi creates a volume label named 'BOOT' if a boot partition is used. setupBootPartition searches for the label and setup the boot partition accordingly. Along with the change the functions update*BootDeviceFstab and resetBootBind were also adapted. There is now only one updateBootDeviceFstab handling the boot partition entry for all modes if required- v5.02.10 released- added virtio drivers for sle10 boot image descriptions (bnc #747346)- arm: make boot.script more robust by checking alternative variable names for kernel and initrd addresses- fixed checkLVMbind so that it directly reads the LVM header from the specified disk device- arm: fixed installation of MLO loader, wrong path- call resetBootBind before preinit (bnc #747241)- removed use of suseRemovePackagesMarkedForDeletion- arm: renamed image descriptions to 'Factory' - arm: removed use of suseRemovePackagesMarkedForDeletion- arm: added vram setup to JeOS description - arm: fixed boot.script setup on first boot- DB: update documentation, added chapter about image caching- arm: added mmc sd card drivers to boot image descriptions- don't call images.sh and config.sh when in --init-cache mode - don't evaluate packages type="delete" section in --init-cache mode - added check for rpm binary in cleanupRPMDatabase- arm: make creation of boot.script more generic by using kerneladdr and ramdiskaddr variables - arm: fixed JeOS console setup for efika, setup baudrate- added newline for messages waiting for status flag when they are written to the kiwi log file. It hurts when multiple log messages are written without a newline- arm: fixed setup of boot.script, missing redirect- v5.02.9 released- added support for iso boot process from external loader If the boot option isofrom="storage-device:path/to/iso" is given the isoboot initrd will try to use the contents of this device to boot up the system. This allows to externally load the linux kernel and initrd with e.g grub2's loopback support and let the iso image exist as a file instead of being dumped on a target device Details on the use case can be found in (bnc #746351)- remove superfluous boot.local- store mbrid for iso images as Application ID and not as Volume ID- fixed importFile function to export only prefixed version of the variable if there is a prefix and not both (bnc #732247)- fixed import of dhcp info file (bnc #745548)- migration changes: * apply deny files on packaged dir list to speedup File::Find * added patternType plusRecommended * added comment about package prefer problem * added path resolver function- migration: fixed service setup, use chkconfig- migration: fixed oemboot prefix setup- arm: Now that x-loader on OMAP can boot from ext2, let's also teach kiwi about that awesome new capability. This gets rid of the vfat based boot partition and moves it to an ext2 based one. Additionally the 64MB limit on the boot partition is gone because the MLO is installed in the first 128kb of the disk and is no longer part of the boot partition. Kudos to Alexander Graf you added all this.- s390: fixed bootdevice setup for zipl- added rootfs check to ec2 format code- clean up delete lists for 12.1 boot image descriptions- run xml validation on source tree- clean up to perlcritic level 5- fixed typo in flavour name: efikaFlavour- fixed setup of LOADER_TYPE for /etc/sysconfig/bootloader in setupBootLoaderLilo(). Depending on the architecture this value is different- v5.02.8 released- moved validation of delete section into setup() routine - dont't use basePackBootIncludes/baseUnpackBootIncludes anymore this conflicts with bootincluded packages marked for deletion- keep only the uBoot initrd representation and remove the gzip version of the initrd from the boot partition. This saves some space urgently needed because on arm the boot partition is fixed 64MB- add unit test for getExecArgsFormat() method of KIWILocator - implement helper executables for the test in new bin directory - fix logic errors in getExecArgsFormat() found by unit test implementation- migration: fixed repo dir detection- migration: sort repo list information- migration: write cache early enough- migration: added support for svn detection- fixed use of uninitialized value in the locator- migration changes: * added progress information while creating custom tree * make custom files creation much faster * make modified files creation faster- allow use of merged solvable in KIWISatSolver- migration: ignore weak-update links- migration changes: * create custom tree for unpackaged files/dirs based on hardlinks * don't copy entire etc/ directory, doesn't make sense to have all especially packages stuff in the overlay tree * adapt deny list, ignore bootsplash and bootloader data for migration- fix spec file, version of RPM on SLE does not handle %else if directives thus we get a dependency to qemu-img is created, but this package does not exist on SLE.- v5.02.7 released- clean KIWICollect.pm to perl critic- In RHEL/CentOS distributions the qemu-img program is packaged in qemu-img not in qemu or virt-utils.- enhanced RHEL6 JeOS * added default ifcfg-eth0 connecting via dhcp * switch off firstboot start via sysconfig/firstboot * added profiles RedHat and CentOS to build for both targets- v5.02.6 released- fixed setupKernelModules and init call for CentOS- implement method to allow us to handle different command line argument implementations, i.e. -longOpt vs --longOpt. This problem is currently experienced on different versions of the isohybrid executable - use newly implemented method to properly determine the argument format when calling the isohybrid executable. Really fixes (bnc #742836)- fixed error console setup in arm JeOS description- v5.02.5 released- really fixed basePackBootIncludes to pack only files and don't break if packages includes symbolic links (bnc #743159)- added support for oem image type for the arm architecture- fixed call of isohybrid, there is no -o option but -offset- clean ProductData, RepoMetaHandler, and Root modules to perl critic- eliminate previously removed SatSolverLegacy file from check lists in the pre-commit hook- v5.02.4 released- check if fbiterm binary really exists and don't assume it's there just because a framebuffer device exists. Also cleanup the Dialog function to work without a framebuffer- ignore additional files (emacs backup, localization, temporaries)- fixed setup of root partition for LVM images- fixed repo and config setup for RHEL6 JeOS- create hybrid ISOs at offset 64. This fixes (bnc #742836)- migration changes: * add support for local repo (git) checkout detection * search for unpacked symlinks whose origin is packaged- migration: added support for gem inspection- make media check more user friendly. check if checkmedia returns successfully and print a message. After that wait for keypress and don't reboot (bnc #728384)- migration: fixed creation of unpackaged files information- fixed basePackBootIncludes to pack only files from boot included rpm packages but not entire directories- make sure rhel oemboot descriptions are packaged- fixed RHEL6 JeOS used group names- removed staging/hv drivers from SLE11, they conflict with the kmp package provided on SLE11- fixed error handling in XML info module when sources can't be found- DB: update schema documentation- added type attribute devicepersistency which allows to set by-uuid, by-label or by-path device names. by default by-id device names are used- update rhel support: * incorporate non suse specific kiwi patches to rhel boot code * added rhel6 support for vmx image type * added rhel6 support for oem image type * added rhel6 JeOS image template- fixed root device name setup due to changed partition layout- changed the way how kiwi detects live and install ISO media. The volume ID of a live and install iso is now a unique ID. On boot the devices are searched to match that ID- follow up fix for last commit. Moved the calculation of the seek value into the getBlocks function and also fixed the function in terms of non reachable code- fix "off by 1" error The created image is either 1M or 8K larger than the created partition for images that require a boot partition (XFS or Btrfs filesystems). This triggers a failure when the image is dumped to the partition in the disk image. See mailinglist thread http://groups.google.com/group/kiwi-images/browse_thread/thread/8988598856aee92d- added support for setupBootLoaderGrub2 and installBootLoaderGrub2 in kiwi's initrd code. The functions are called on first deployment of the image and create the system bootloader configuration via grub2-mkconfig and grub2-install- make sure default strip type="delete" information from KIWIConfig.txt is used even if a custom strip section was defined- deactivate the use of basePackBootIncludes/baseUnpackBootIncludes These functions can be used to preserve and restore the contents of bootincluded packages/archives. We used it to prevent removal of files by the suseStripInitrd function. Due to the change of suseStripInitrd we are now more flexible to control what stays in- and what should be removed from the initrd which makes the use of basePackBootIncludes/baseUnpackBootIncludes obsolete- v5.02.3 released- find a way to install grub2 into a partition :)- first start of supporting grub2 in kiwi, still missing parts are: * graphics boot setup, no font or theme is provided by SUSE * first boot setup, it's not clear if we use grub2-mkconfig or if kiwi has to write the configuration by itself * recovery grub2 setup, this normally means install grub into a partition. So far I wasn't able to install grub2 at another place than the MBR- increased wait timeout for CDDevice search- added staging/hv drivers to 12.1 and SLE11 boot images- allow by-uuid device persistency via the kernel commandline option USE_BY_UUID_DEVICE_NAMES=1- removing references to online repos from the sle boot images (bnc #734887) * Virtualization:/Appliances:/suse-sle11 * Virtualization:/Appliances:/suse-sle10- clean up spec file, don't require perl-satsolver but recommend it- removed obsolete repo reference from KIWISatSolver module - removed obsolete KIWISatSolverLegacy module and satplugin- added additional data to the XML info module: * repository url per package to the packages info * adaption of the legacy kiwi SaT binding- added additional data to the XML info module: * checksum and checksum type information to packages info * priority, username and password information to sources info- alphasort the driver and package entries in the boot descriptions This aids comparison between base distributions and boot types. It also helps in avoiding duplicate entries if changes need to be made (see mistake in a recent commit)- update SLE10/11 JeOS README- fixed missing btrfs driver entries- fixed typo: s/btrfsprogrs/btrfsprogs- netboot: added a check for the boot partition in a LUKS setup. if root is LUKS encrypted the local boot setup only works with a proper boot partition. If such a partition is not found the local boot setup will be skipped (bnc #735112)- make setup of boot device and updateOtherDeviceFstab more robust. This is related to bug (bnc #735112)- fixed typo, doubled driver entry- v5.02.2 released- make sure xfs_growfs and xfs_check stay in the initrd (bnc #740073)- fixed rebuild of rpm database (bnc #740033)- fixed possible use of uninitialized value in string comparison- fixed indention spaces vs. tabs at some code points- Properly support image builds for SLE with xfs and btrfs filesystem The initrd image descriptions previously did not include necessary drivers and packages (bnc #740073)- v5.02.1 released- fixed typo when calling createPartitionerInput- fixed __checkTypeConfigConsist to allow valid combinations- add new XML consistency check to verify that type configuration settings are compatible with the specified image type to be built. - update unit test module for validator and implement test cases- fix gpg signature import The failure is triggered by a behavior changes of /usr/lib/rpm/gnupg/dumpsigs on openSUSE 12.1. The updated implementation must be called with a comand line argument, i.e. the gpg file. Previous implementations (checked openSUSE 11.4 and SLES 11 SP1) of dumpsigs also accept this commandline argument, thus the change is backward compatible.- adapt oem boot/repart code to changed partition layout- adapt vmx boot code to changed partition layout- changed partition layout to setup the boot partition as first partition in any case not only for LVM- make sure a new master boot id is written on bootloader install- clean Log, Manager, and Migrate modules to critic level5- cleanup partition code in KIWIBoot.pm- arm: add fixed mac address for panda board which doesn't have an eeprom- arm: fixed creation of boot.script in setupBootLoaderUBoot - arm: fixed kernelList() function to work with arm uImages- added securetty overlay file for arm to allow login on serial console ttyO2- added SnapshotChunk and SnapshotCount to global space- fixed creation of filelist for cache selection - fixed creation of cache meta data- run pretty printer on XML description to create a clean state- arm: kiwi-tools is required in the initrd. as it builds now we can safely add it to the vmxboot description- arm: if everything is installed in bootstrap, zypper needs to be added as an explicit package- arm: better JeOS description. added less and systemd-sysvinit also added a pandaFlavour profile which is imported by default and includes the kernel-omap2plus plus u-boot-omap4panda useful for panda boards. That way we can easily extend the image description to be suitable for other boards- fixed spec file for arm build, make sure kiwi-templates has the correct arm JeOS template and also exclude templates from main kiwi package correctly- arm: better name for the kernel profile on panda boards: omap4panda - arm: added internal helper repo to the JeOS template as comment- added support for arm based images with kiwi * added vmxboot image description for armv7l * added kernel profiles: tegra (tegra boards), omap2plus (panda boards), omap3beagle (beagle boards) and imx51 (efika boards). Tested only on panda and there are still plenty of problems. Don't expect this support to be ready and stable ! * added JeOS example image for arm, target SLE12 * added support for uboot loader- stay compatible with fdisk when using the CHS (cylinder,head,sector) values- make sure the recovery partition is big enough- fixed typo in variable naming, a byte value should be in a variable whose name makes sure this actually is a byte value- add writeXMLDiff method stub in test logger implementation to mimick the regular log object, this fixes the test failures when running tests as root- added end partition alignment which needs to be aligned to head/sectors (aka 255*63 in the loopback case). The end sector needs to end one block before the next cylinder starts. Additionally the value for what the kernel thinks about the heads sectors and sectorsize can be set via: * --bios-heads * --bios-sectors * --bios-sector-size- change resource file hierarchy, the resource file in the local directory wins over the one in the home directory (Globals.pm) - clean Globals.pm to level 5 critic - partial level 5 critic clean of Boot.pm- DB: rebuild documentation- add support for the new Amazon EC2 South America (announced as Sao Paulo) region- fixed xen initrd inflate/deflate problem. Xen see the bootsplash at the end of the initrd as garbage and refuses to boot. With this patch we skip the bootsplash setup if it's xen (bnc #736491)- fixed detection of clean-root before we remove it (bnc #736003)- fixed disktype setup in getOVFConfig- fixed SDK url's in the ppc boot images- DB: rebuild schema documentation- fixed/unify spec file license names/setup- revert commit: 43be86a0aa57fb393e914c03d9c621b1dec0eb31 moved hook calls pre/postpartition back inside of the block- removed used of binary only ovftool and added native support for creating the ovf machine description. So far only the basic information is setup in the ovf but this will be enhanced according to user requests. Along with the change support for the ova format has been added as well. ova is tar container including the actual image plus a manifest and the ovf XML description- fix the OpenNebula example cloud node setup to ensure the cloud admin home directory gets properly nfs mounted on reboot for 12.1 using systemd- fixed BEGIN block evaluation in KIWICollect.pm- add a 30 second timeout for the LWP:UserAgent- DB: rebuild documentation- v5.01.8 released- fixed udev database transfer. udev stores the database in /run and in /dev/.udev. kiwi did not take care for the information in /run which has a bad impact on systemd waiting for udev events which did not appear. Along with this fix the changes from commit 1a12ad0974ea were partially reverted. The obsolete udev rule is gone again and we don't use the exit control signal in udevSystemStop. The more failsafe udev exit code in the initrd udevKill() function has been tested and will stay there (bnc #731457)- v5.01.7 released- change the suggested repo for the aoetools package to be server:/ltsp the previously suggested project system:/aoetools does not appear to be maintained- fixed split boot. setupBootPartition() behaved incorrectly with the split image because the read-write part is also used to store the boot configuration in this mode- fixed --grub-chainload setup. In this mode the mbr from the master-boot-code package is used to call the grub installed into a partition. The code there was broken in a way that the filesystem on that partition was damaged- fixed boot device setup for split build- update 12.1 examples * there is no default pattern anymore * don't use recommended packages, zypper behaves strange here and starts to install a kernel-debug and other unwanted packages- fixed 32bit xen domU build for 12.1 JeOS template xen and xen-tools only exists on 64bit 12.1 distro- update example to work with OpenNebula 3.0 packages in OBS - open nebula example fixes regarding network detection on cloud node - open nebula example update the 12.1 example to work with systemd- fixed some typos when displaying schema validation error messages- fixed repo file check if alias names with '/' content is used- fixed handling of dm devices in udev database of the kiwi initrd to prevent systemd to block on boot (bnc #731457) * try to shutdown udev with 'udevadm control --exit' * try to cleanup udev database with 'udevadm info --cleanup-db' * add persistent udev rule for dm devices- fixed rpmLibs() baselibs setup to use a tmp copy of ldconfig from the host system to allow to work with the other library tmp copies- clean up build process * moved swig to libsatsolver-devel. Only required if kiwi builds the legacy satsolver module if no perl-satsolver exists * removed trang to get rid of java dependency. trang is used to transform kiwi's rnc schema code into the rng syntax. If the rng is up to date the build doesn't have to create it though * removed obsolete Qt requirement. The tool which needed this is not packaged/required anymore * make the build work for the arm architecture- remove obsolete code and speedup removal of files in suseStripInitrd- v5.01.6 released- fixed changelog creation tool: * date string is not recognized if not from a +X timezone * indention of sub entries not correctly set- fix the systemctl command for inserting and removing services for systemd the command is systemctl enable/disable NAME.service not service_NAME.service- v5.01.5 released- fixed suseInsertService and suseRemoveService to use systemctl if systemd is installed- remove systemd specific check, systemd is the default for 12.1, no specific entry is required in menu.lst - add quiet commandline option in menu.lst to avoid having kernel message show up in the console for 12.1- fixed setLoopDeviceMap() to work with yaboot- fixed setLVMDeviceMap() to work with yaboot- cleanup device map setup for ppc and integrate yaboot bootloader setup into the setupBootLoaderStages and setupBootLoaderConfiguration functions like all others- added support for plain tar image type named 'tbz'. This image type just builds a bz2 compressed tarball from the prepared tree as requested in report (bnc #732797)- fixed unit test for valid arch check- before adding a repo check if it already exists. if yes remove it prior to add it- v5.01.4 released- fixed parameter quoting of setupBootLoader() functions (bnc #729315)- fixed unused declaration of result variable- sed -ie behaves differently than sed -i -e, weird- fixed zypper repo setup. Don't let --raw-cache-dir point to cache-dir. Redirecting raw-cache-dir to cache-dir makes packages/ and solv/ appear to be orphaned raw metadata caches for ex-repos packages and solv. Also don't re-add the repo if it's already there. Just update the path for local repos to work with the bind mounted path inside the chroot. (bnc #731090)- fixed spec file to build on RHEL as well- added s390 pxeboot client configuration examples- clean up ppc code. make sure loader variable is passed to the yaboot configuration. Also handle partition layout and bootloader setup according to the bootloader value and not according to the architecture value- properly handle specification of "scsi" controller type for VMWare images This requires the "-o scsi" option to be present for the qemu-img command on the build machine. - implement new check in RuntimeChecker to verify that qemu-img supports proper option if controller="scsi" is specified and a vmdk image is being built - clean KIWIRuntimeChecker to critic level 4- fixed --info/packages output to respect image typed packages sections. getInstallSize() now behaves the same like when the system is actually prepared- v5.01.3 released- allow initrd variable NON_PERSISTENT_DEVICE_NAMES. If set to a non empty string it will cause getDiskID() to return the non persistent kernel device node name like /dev/sda. This is to support storage devices with name conflicts when using the udev generated node names.- wait a second before rereading the partition table in initGeometry- apply quoting of .profile contents during build (bnc #729315)- fixed inode count calculation. Since vmmbytes is the image size in MB, we need to mutiply it to get the count right because inode ratio is in bytes/inode- update repo paths for kiwi specific rhel6 packages- fixed call of checkmedia (bnc #730763)- v5.01.2 released- fixed creation of useless udev tmpfs in udevStart() because this is created as devtmpfs/tmpfs properly in createInitialDevices() which is called in udevStart- in LVM case on ppc the boot partition should be fat16 (part type c)- shorten verification message in suse-dump- cleanup run-init code, prevent redundant calls- make sure /sbin/ifup stays in the initrd- prevent umount of fstab listed subvolumes before calling systemd. The former sysvinit did not like if another than the root filesystem was mounted at call time but systemd handles this differently and times out when processing the fstab listed entries- make sure fat16 is used for boot partition on ppc- adapt common changes in the x86 oem boot code to the ppc code also make sure partition table layout on ppc is the same than on all other architectures- adapt common changes in the x86 oem boot code to the s390 code- use $pID instead of fixed number- DB: rebuild documentation- DB: update documentation, added section about boot image customization - DB: update documentation, added list of hook names and their meaning- added isoboot description for rhel/centos 6.0- fixed getDeleteList() to take care if a package was added as bootincluded that it is not removed by an entry in the delete type packages section. A warning message is added to the log file that this package is ignored in the delete list, thus it will be installed. This problem often appear if one added a package to be included in the initrd but the initrd image description marked this package as to be deleted- make sure the default strip tools and libs are appended if one has specified such a strip section in the system image description (bnc #720933)- added lvm2 to 12.1 JeOS- added support for dracut in setupRHELInitrd- allow strip sections to be part of the system image. This provides full control over the initrd striping code for items to delete and tools and libraries to stay (bnc #720933)- removed fixed strip lists from suseStripInitrd() and provide a default strip table in KIWIConfig.txt. There is now the strip section which can be of type 'delete', 'libs' or 'tools' the delete typed section specifies files to remove from the initrd. The tools typed section specifies the tool names in /bin|/sbin|/usr/bin/|/usr/sbin which should stay whereas all other tools in that directories are removed. And the libs typed section specifies those libraries which has to stay whereas all other libraries without any ldd reference are removed. (bnc #720933)- save some space in the initrd by removing licenses and iptables packages. Added them in the type="delete" sections- fixed typo in error message- fixed spec file: rhel vmxboot available on x86 and x86_64 only- add collection of perlcritic exceptions to the statistics collector - change collector such that only the next scan time is written and not he whole "old" content that does not change. New data is added to the file at the end - add the doc stats collector provided by Thomas, this is not yet integrated, but I thought we shouldn't loose the code - register the collector code in the hook- DB: rebuild documentation, mention Microsoft HyperV (vhd) format- update kiwi --help output to show supported vhd format- renamed image format vpc to vhd. vhd seems to be the well known name for Microsoft HyperV images (bnc #729857)- v5.01.1 released- make sure IFS is restored in fdasdGetPartitionID- integrate unit test run into the pre-commit hook * if a file is changed that has an associated unit test and the test has not been executed after the changes were made the test is run prior to commit - fix the runTest code to generate a timestamp file when a test is run and it succeeds - clean up kiwiCommandLine.pm, kiwiLocator.pm, and KIWIXMLValidator.t to critic level 4 * clean up used to test new hook functionality - clean up KIWISharedMem.pm to critic level 5 * clean up used to test new hook functionality- fixed type in runTests, also set execution bit on the script- fixed creation of initial aligned partition table in KIWIBoot.pm In SuSE studio the loop device which is normally the target for parted is relinked behind the scene to a virtio device. As result parted now sees a real disk geometry and that induced the bug in kiwi which is not visible if it operates on the file mapped loop device only. Looking at that partition code has turned out that the alignment is broken which in the end broke the repartition process in the first boot of an oem install image. The code is now fixed to work properly on any storage device (bnc #729636)- modify Makefile to create timestamp files when tests are run - add .gitignore file to ignore timestamp files and timestamp directory - implement trigger files * each trigger file contains a list of tests that should be run when the module with the equivalent name is changed. For example if KIWIXML.pm changes, the tests listed in KIWIXML.trig will be run - implement runTests * contains the logic to execute tests as needed based on the trigger files and dependent on the timestamps * this script needs to be integrated into the pre-commit hook to assure the appropriate tests get run prior to commit- update rng schema due to last change in rnc- fixed fdasdGetPartitionID() it was completely broken. The function evaluates the wrong information and was also syntactically wrong... I should tell myself each day 'never code in a hurry'- add Perl module compile check to pre-commit hook * any Perl file (ending in .t, .pl, .pl that is changed is run through "perl -wc" prior to commit to assure the code at least builds - clean the KIWIArchlist module to critic level 5 and fix the style to match the rest of the code- fixed parameter quoting in setupBootLoader (bnc #729315)- fix unit tests * earlier update of ktLog broke the tests due to initialization problem with q{ } vs q{}, the later producing an empty string, the former a string with one space character, thus not empty. Empty string initialization is required in other parts of the code.- include new EC2 region (US-West2), update the EC2 kernel IDs to the newly released v1.02 IDs, update code and docs, also fix the regular expression in hook to properly deal with .txt extension, i.e. ignore those files- fix compile error (errant character g at EOL)- make sure partedSectorInit() comes up with an initial value for the start sector if the partition table is empty (bnc #729251)- turn all fixed flaged http:// URI's in the x86 boot images into more flexible obs:// URI's- if an obs:// path can't be resolved, turn it into an opensuse path and try again. That way you can use one URI to build the image inside the buildservice and also outside with network access- changed cache creation. the cache is created from the image description referenced by --init-cache and we prevent the split into packages and patterns and the weird cache template in modules/KIWICache.kiwi. This allows to create cache only image descriptions whose only purpose is to create caches- fixed doubled my declaration of the same variable- level 5 critic clean up, fix up the level 5 list in the hooklevel 5 clean up of Collect and style clean up to make it match the style of the rest of the KIWI code- remove tmpdir directory only if it exists- fixed setLogFile path writable check (bnc #728885)- removed dead code in iso boot code due to the removal of the swap file support (bnc #728645)- added options --xattrs and --acls when using rsync- fixed importFile to filter out empty lines and also match comment lines starting with space/tab before '#' (bnc #728357)- use mktemp to create tmp dir in setupInstallFlags- v4.99.1 released- fixed importFile to allow '\' characters (bnc #728357)- work on critic level 5 clean up, this is mostly low hanging fruit. Also cleaned up the level 5 list in the hook for files that were already level 5 clean- include test code in perlcritic checks, clean ktTestCase to level 3- critic: ktLog.pm now at level 2 - critic: KIWIXMLValidator.pm now at level 5 - critic: added .perlcriticrc with following settings: * allow mixed case naming * no check for module VERSION * disable check for RCS strings- fixed importFile() to correctly match variable names and make it more robust against quoting issues (bnc #728357)- make sure importFile() stays backward compatible and ensures proper quoting. Also make sure the prefixed variable copy is only created if a prefix was set (bnc #728357)- switch from tar to rsync based copies. Reason for the change is because tar doesn't support file attributes like xattr,acls and fscaps (bnc #728312)- removed left over debug message from KIWIXMLValidator.pm- DB: rebuild documentation- DB: update documentation, correct quoting for config.- DB: rebuild documentation- DB: update documentation, correct quoting for config.- don't create a swap file if no swap partition can be found in the live iso boot code. people complained about the creation of swap files while this is not expected.- fixed setupNetworkInterfaceS390 qeth_configure execution - added setupNetworkInterfaceS390 to s390 netboot preinit to create the relevant udev rules- initial implementation of code statistics collector- added git pre-commit hook to check the code with perlcritic git hooks are placed as source in the git in '.git-hooks' - put KIWIURL module to level 5 - put KIWILocator module to level 4- clean up to level 5 perlcritic, also found some syntax errors- added new chapter providing basic installation instructions- v4.98.14 released- fixed check for empty variable in shell code- v4.98.13 released- setupDefaultGateway uses route but route was not part of the initrd- fdasdGetPartitionID uses awk but awk was not part of the initrd- moved hook calls pre/postpartition outside of the block which allows to skip the partition code via the hook script- fixed repartition code to create an aligned table (bnc #721580)- setup PXE_IFACE interface only if PXE_IFACE exists in the environment. When using zPXE this variable does not exist- fixed setupNetworkStatic to write correct interface file- removed static inittab and securetty overlay files from s390 JeOS template. The setup is done by setupConsole() in preinit- call runPreinitServices in s390 netboot suse-preinit- turn pxe PART info tranformation functions into a generic and a fdasd specific function- added pxePartitionInputS390 suitable for use with fdasd- added pxeRaidPartitionInputS390 suitable for use with fdasd- v4.98.12 released- s390 netboot: * make sure the VTOC table is created prior to any fdasd call * make sure searchBusIDBootDevice is called to set the device in $DISK online by a custom DEVICE_INIT command- added support for custom s390 device init command in the searchBusIDBootDevice function. This is required if the s390 client was not booted by an ipl command but e.g. via zPXE- fixed migration code: * fixed creation of URL list from zypper information * write current schema version (5.3) XML * fixed creation of KIWISatSolver objects- added support for Microsoft Hyper-V machine image format . This requires a qemu version which supports the vpc format conversion (fate# 309765)- fixed migration module to work again. Added 11.4 and 12.1 paths and make sure the global object pointer is there when it is accessed- v4.98.11 released- make sure the seq command is part of the initrd used in convertCIDRToNetmask()- make sure pxeSetupDownloadServer() uses a deadline of 30sec in the ping check. Otherwise it might happen that the server online check fails even though the machine is online- v4.98.10 released- removed __checkNameValid() checker function and make sure that an arch string as part of the name attribute doesn't cause any trouble (bnc #716992)- v4.98.9 released- arch check in __checkNameValid is too restrictive- v4.98.8 released- fixed quoting of parameters in config.isoclient- DB: update documentation- reverted commit 620e4e65d05b257e4fc8c6017908e6ba9f75e28e this was a parted bug which is now fixed- add unit test to the locator for the createTmpDirectory method, change one of the messages from info to error in the locator, update my e-mail addresschange URL in spec file to point to the new homw of the source, github vs. berliosgenerated html doc- v4.98.7 released- fixed appliance name escaping. One can use any string for the displayname attribute which is now properly escaped via perl's quotemeta(). Along with this change the image name attribute must match the pattern [a-zA-Z0-9_\-\.] and is not allowed to have the architecture string as part of the name (bnc #716992)add section about cross platform build, expand the introductory section of chapter 4- v4.98.6 released- libcrc32 module depends on crc32c, but it does not state this dependency explicitely (modules.dep does not contain this information). Since KIWI relies od modules.dep to clean up unused modules in the initrd, this can break module loading. This patch ensures that the module is kept in the initrd and not purged.- revert back to parted hex id's, this reverts commits: 47f8bf758861a3d8cdbc2c188024f423e6ee45db 47f8bf758861a3d8cdbc2c188024f423e6ee45db- v4.98.5 released- fixed creation of XML diff in log file- fixed parted flag setup in KIWILinuxRC code, 12.1 and upstream parted doesn't support the hex id's like 'set type 0x..'- fixed KIWIXMLInfo unit test due to last --info changes- call createURLList() only on demand. Also provide accessor methods for xml->{urllist} and xml->{urlhash}, don't access these object data directly anymore. createURLList() was called in the KIWIXML constructor but changes to the XML might happen at a later point in time. So it makes sense to build the final URL list when access to it is requested- call setupNetworkStatic in suse-preinit for s390. With this change we write the network configuration as received by the initrd into the system config files below /etc/sysconfig- added function convertCIDRToNetmask() which allows the interpretation of the CIDR extension like 192.168.1.1/24 to create a standard netmask 255.255.255.0 out of it.- fixed use of uninitialized value $free in KIWIXML.pm- make the info module write the imagescan XML into a tmpfile (bnc #726337)- added log information about cylinder size and count - fixed parted flag setup, 12.1 and upstream parted doesn't support the hex id's like 'set type 0x..'- fixed default boot label selection in syslinux mode- added support for overlay file and archive listing in info module- fixed escaping of chown parameters (bnc #725706)- added update repo path for 11.4 images due to grub bug (bnc #717836)- check for FSTYPE == btrfs in createOriginSnapshot()- fixed creation of btrfs origin snapshot. This is now done on first boot of the appliance and not after kiwi prepare- added baseSetupBtrfsOrigin() function which allows to add an origin snapshot for the image root filesystem contents- moved README to mkd style- adapt README style- v4.98.4 released- fixed disk device setup in USB stick install mode- added init=... bootloader setup if systemd is used- v4.98.3 released- update German translation .po file- make sure locale .mo files are created- update locale headers- added support for setting up which volume should get the rest free space assigned in a LVM setup. Example: This will assign the rest space available in the volume group to the LVvar logical volume. rest space means either the size of the 'oem-systemsize' element or if not set the entire rest space of the disk. If no 'all' freespace attribute is set in the volume setup, the default volume LVRoot is used as before (bnc #724489)- added clicfs COW file check prior to mounting it via clicfs_fsck if the check fails we disable persistent writing- v4.98.2 released- renamed suse-live-stick to suse-live-usbstick to allow package upgrade again. Details in (bnc #722452)- prefer systemd over sysvinit if installed- don't use --ignore-cow-errors when using a cow _file_- make sure setupHybridPersistent() is called before the boot device is busy- added missing __checkImageIntegrity() calls- v4.98.1 released- update XML data to new schema version 5.3- fixed kiwiRuntimeChecker unit tests- added a 30 sec timeout to searchBIOSBootDevice- make searchBiosBootDevice more robust. The function probes for the boot device until found and does not expect all storage devices to be present at call time. There is still a problem in install mode where we need a list of all potential installation devices to be present at a certain point in time. The function waitForIdleEventQueue tries to address this but it's not race freerevamp the EC2 chapter, include instructions for using EBS, restructure organizationchange ec2region values to match reported regions from ec2-describe-regions comand, AP-Japan -> AP-Northeast, AP-Singapore -> AP-Southeast, change schema version to 5.3 to reflect the value change, implement xml convert from 5.2 to 5.3, update the tests and validation- xen dom0 support exists only for x86_64 architecture in SLE11 SP2. Therefore we check for this arch in the boot image descriptions- run 'make valid' and store XML style changesfix repository path for EC2 repo in 11.3 EC2 example- v4.97.5 released- xen dom0 support exists only for x86_64 architecture in SUSE 12.1. Therefore we check for this arch in the boot image descriptions- fetchFile does not handle special characters consistently. fetchFile "some%20file" with atftp correctly downloads 'some%20file'. but with ftp curl converts the file name to 'some file', which is not expected. This patch fixes this and makes the behavior consistent- fixed use of uninitialized $count variable (bnc #455990)- don't ignore size setup even if the size is smaller than the min size kiwi's min size is safe but includes spare space. people who want to overwrite that size can do it but on their own risk- allow drivers section in the system image which will be added to the drivers section of the selected boot image. This allows to add custom driver information additional to the existing driver selection as part of the boot image (bnc #720933) Author: Marcus Schäfer - fixed size calculation, use 4% overhead- removed function waitForUSBDeviceScan and added new function waitForIdleEventQueue which waits for a specific amount of time to check whether new device nodes settle or not. if not the function will return- removed obsolete files from the suse-11.3 examples- added preException hook which runs inside the systemExcpetion function to allow further tasks before the exception message is printed and the shell/reboot/wait action happens- fixed the check for the installed system in the netboot code if the luks encryption is used. The check calls luksOpen with luks_open_can_fail=yes. This means if the wrong passphrase is given the check will proceed with 'update is required' and does not fail with a reboot exception in luksOpen- added hooks preswap/postswap which run before the check and creation of the imageSwapDevice. This allows to setup your own swap device handling.- allow luksOpen to fail if luks_open_can_fail is set - allow map name to be specified in luksClose- fixed updateOtherDeviceFstab to make use of the prefix argument- don't show the LUKS passphrase as part of the boot log- fixed vgchange calls to take the volume group name as argument- fixed multiple display of the same info messages when creating the virtual disk file- added a workaround for the cylinder counting bug in parted. parted lists two different numbers for the amount of cylinders only one is correct. This patch uses the correct value displayed here. parted only shows different values if called on a loop device- make suse-live-stick a real image example directory and not a link to the live iso description. This also fixes the upgrade problem between versions were suse-live-stick was a directory and the one were it is provided as a link (bnc #722452)- v4.97.4 released- make sure updateOtherDeviceFstab creates the mount point- activate only volume group stored in $VGROUP, prevent vgscan- fixed luksOpen to generate unique name for luksroot - fixed luksOpen to stop asking for the passphrase after 3 times - fixed updateOtherDeviceFstab to work in luks and/or RAID env - fixed luksOpen to wait until the mapper created the device - allow luks_pass to be set on the kernel commandline- DB: rebuild documentation- fixed race conditions in LOCAL_BOOT=yes code, we have to wait for the $disk device to appear before acting on it- removed %pre section from spec, does not work with older distros- fixed %pre script and filelist- fixed doc upgrade, added pre-install script for kiwi-doc and also reverted the spec changes for the commits 275a601c and ced64858- v4.97.3 releasedcorrect attribute name error, some word smithing around description- added support for detecting multiple occurrences of the same MBR ID in searchBIOSBootDevice. Also make sure that this does not happen by writing a default MBR ID of 0xffffffff into the MBR when the bootloader is installed- rewrote function CDMount into more clear parts, also fixed the waitForUSBDeviceScan which only checks dmesg for a string which doesn't appear anymore on newer kernels- DB: update documentation, better intro page and contributor list- added support for creating luks encoded squashfs images- make sure luks devices are evaluated first- added level sorting for LVM volumes to make sure e.g /opt is mounted before /opt/bob- fixed spec file, make sure doc files get the %doc macro assigned- fixed spec file, wrong use of %doc on directory causes the kiwi-doc package to fail the installation on upgrade with 'cpio: rename failed - Is a directory'- fixed typo, missing eol- added mailing list info to README file- fixed typo and wrote Linus correctly, Oh Oh sorry Linus- make setupConsole code more clear- let kiwi exit if a package setup script returns with ecode != 0- DB: update documentation, new showlicense element- added support for the new name element as part of the preferences section. This element allows to specify the base name of a license file which is displayed in oem images before the installation happens. It's possible to add more sections to display more licenses one after the other. If no such element is specified the default 'license' and 'EULA' files are searched to keep the system backward compatible- added runtime check which makes sure that there are no bogus files included in archives. So far we check for YaST2 license files in /etc/YaST2/licenses- added support for RHEL splashimage (redhat-logos)- v4.97.2 released- fixed RHEL authentication setup- fixed typo in perl to bash list dereferencing- use generic vgchange -an in cleanLoop to make sure the loop maps can be cleaned up even if we can't read the name of the volume group from the image- fixed sysconfig template check to work on RHEL too - fixed init call for RHEL, does not work with run-init program- added kernel to be installed in rhel-05.4-JeOS template- fixed use of uninitialized value- make sure mpath_wait program exists in initrd for RHEL- fixed missing done flag for info message- make sure loop module is loaded- applied following changes to the ppc boot code * fixed download of md5 file in oem pxe install mode * make sure iputils is there in oemboot for pxe based installation * allow installation via the kiwi install image into a ramdisk.- fixed s390 netboot code: * make sure there is also a lowercase version of cmdline params * make sure cleanPartitionTable is called before setup * make sure setupNetworkStatic also brings up the network- applied following changes to the s390 boot code * fixed download of md5 file in oem pxe install mode * make sure iputils is there in oemboot for pxe based installation * allow installation via the kiwi install image into a ramdisk.- fixed download of md5 file in oem pxe install mode- make sure iputils is there in oemboot for pxe based installation- use ext3 filesystem for the boot partition- make sure system filesystems like proc and friends are umounted in rhel-preinit- allow long names in install iso images (-joliet-long) This is related to (bnc #716149)[product] unpack themes in defined order- v4.97.1 released- fixed baseSetRunlevel() to work with systemd as well- don't use fuser -k to kill the debug shell, that could cause the kill of other important processes like the fuse clicfs- allow default path search for --init-cache too- removed local s390 suse repo- added SLE11 SP2 SDK repo for s390 boot images in order to receive the kiwi-tools package from there- allow installation via the kiwi install image into a ramdisk. In order to activate this feature one has to specify the following on the kernel commandline: 'ramdisk=1' The size of the ramdisk can be set by ramdisk_size= This fixes bug (bnc #717499)- removed local x86 suse and rhel repo- added 11.4 remote repo for oemboot- moved RHEL5 repo from local to remote- moved SLE11 repo from local to remote- removed local kiwi repo from ppc boot images. There are no ppc packages provided in a repo by kiwi- moved SLE10 repo from local to remote- fixed __getPartID reg exp (bnc #716718)- more colorful list image output- v4.96.1 released- DB: update documentation- fixed addPackages. Only if the requested packages type was 'image' it's allowed to add to 'bootstrap' if there is no 'image' typed packages section- consistency fix for the vmxboot boot image descriptions. all kernels should belong to the same typed packages section- added new option '--edit-bootconfig ' and the XML attribute which allows to run a script before the bootloader is actually written. This allows custom changes to the bootloader setup files as requested in (bnc #667950)- make use of devtmpfs if available- This breaks multi arch medias, we need more complex solution here Revert "- priorize repositories over fallback architectures" This reverts commit ce611d35662473365cebdc41172653d287bcaa0e.- fixed addPackages() function. In case the requested section type cannot be found the function will switch back to the bootstrap section.- put isoboot kernel-rt package to bootstrap section.- don't show output of pushd / popd in updateMTAB- create mtab link in kiwi's chroot instead of touching an empty file- fix updateMTAB() to create a /etc/mtab symlink if /proc/self/mounts exists. Otherwise leave /etc/mtab untouched- use the same version of suse-dump for ppc and s390 arch- the by-id device names can contain the ':' sign which causes trouble when kiwi uses the same sign as data separator. This patch solves the problem for the evaluation of the instItems array in the suse-dump code- add priority to the repository to the boot config of RHEL iso images. This will resolve the conflicts with the kiwi-tools package while creating the boot image.- added support for vmxboot for RHEL 5.4. Thanks to Praveen- v4.95.4 released- fixed warning when checking for rpc_pipefs (bnc #711389)- fixed checkLVMbind() to search for the lvm flag on the disk first. Only if the disk has that flag we search for the LVM devices.- last commit causes a regression for non split types.- fixed bootloader setup for split images- added missing done() flag- product build: avoid multiple handling of debug packages- priorize repositories over fallback architectures- more readable 'kiwi --list' output- make sure $prio variable is initialized empty for each repo validation (bnc #714927)- fixed inline description of addRepository() function- v4.95.3 released- fixed BuildArch setup for sle11 build- v4.95.2 released- DB: rebuild schema documentation- DB: rebuild documentation- DB: update documentation concerning the new imageinclude attribute- added a new attribute to the element called 'imageinclude', a boolean. The code treats the attribute as having a "false" default value. When set to true (for using zypper package manager only at this point) the specified repository is added to the image being created, thus the repo is available to install additional packages or upgrade existing packages from within the running image.- cleanup XML data from example image descriptions by the result of the kiwi XML pretty printer- added RHEL/CentOS 5.x. compatible repodata for rhel-repo- fixed %post for kiwi-templates. %post has to use the same ifarch selection as used by the %package section- v4.95.1 released- better version of baseSetupBootLoaderCompatLinks() which hardlinks the files to be able to access them from within the cpio archive- make sure to have some spare space in filesystem images- don't remove data from initial boot partition- call setupBootPartition() only if systemIntegrity is != fine - clean up setupBootPartition, create mount points inside the initrd - clean up netboot code, setup bootid before mountSystem and let setupBootPartition do the setup of the boot contents- added support for pxe luks encrypted images- break up long code line into two- added compat link menu.lst -> grub.conf, required by RHEL - added function baseSetupBootLoaderCompatLinks() which can be used to create the /usr/share/grub link to the stage files which kiwi expects in /usr/lib/grub. RHEL installs them in /usr/share/grub- added parted 1.8.7 to RHEL5.4 repo- fixed boot code: explicitly wait until the background job showing the progress information has finished- let atftpProgress() read output directly so there is just one job - fixed fetchFile(): enable progress only for block devices, without this it showed the progress for md5 and other files when the first image download failed. - fixed fetchFile(): fbiterm does not work with serial console, added fallback when it fails - fixed fetchFile(): loadCode value from the background job is returned correctly now- changed the image size calculation to leave not too much of free space. In case of a filesystem based image as less free space as possible is added. In case of a disk image we make sure to have ~100MB of free space. If a single boot partition is required we make sure to have min 150M to allow proper kernel updates- make sure atftpProgress() finishes _after_ the atftp process has concluded the download, related to (bnc #713167)- use $imageBlkSize as parameter for atftpProgress() - take care for handling of re-sent blocks in atftpProgress() - fixed atftp error output handling $TRANSFER_ERRORS_FILE vs. /tmp/atftp_trace - fixed atftp blocksize detection - with multicast the block number 1 does not have to be at the beginning- added kiwi-media-requires meta package which recommends all packages which should be part of the distribution DVD- rpmlint doesn't like empty files- added atftpProgress() function which implements the progress information for atftp by watching the atftp trace output. atftp seeks in the output stream which forbids the use of pipes for the progress information (bnc #713167)- make sure fribidi stays installed in netboot. It's required for the fbiterm based progress information (bnc #713173)- don't use pipes in combination with atftp (bnc #713167)- fixed typo, missing '\n' in info output- v4.94.3 released- don't remove netcfg from boot images. This would remove the etc/hosts file which might be required. Along with this change also fixed the cleanupResolvConf() function which has to reset the needResolvConf and needHosts flags in order to prevent a deletion at a later point in time (bnc #713158)- don't call restoreCDRootData() and restoreSplitExtend() inside the global destructor of the KIWIImageCreator. If the functions are applied to the creation of a boot image it leads to errors because they are designed to operate on the system image root tree- removed broken state setup in KIWILog which was used to detect whether we need a CR when printing the line or not. All that sucked and caused mystery empty lines in the log- make sure loop maps are closed before installing grub. Also changed the way grub is called. We are creating a file with the commands first and then call grub ... --batch < file. It makes the code more readable and also allows to include the commands as part of the log file- fixed zero timeout value handling in syslinux. A value of zero disables the timeout so we set the smallest possible value in that case which is 1/10sec- increased amount of spare space 1.1 -> 1.5- fixed evaluation of which output- apply check for partitioner capabilities only for boot image types which actually use a partitioner; netboot and oemboot- added pxe image type for s390 JeOS template- added more useful repo path for s390 netboot- added support for netboot on s390, still _experimental_ !- changed ddn() function to also check for the '_' separator between the device and partition name- fixed this path evaluation in build operation mode- allow boottimeout of 0sec, also set the same default timeout of 10sec for the ext|syslinux setup- reduced amount of spare space 1.5 -> 1.1- fixed suse-11.4/suse-min-gnome package list- v4.94.2 released- fixed default label text for ext|syslinux setup- fixed vfat boot partition id lookup in setupBootPartition()- make sure the text message file isolinux.msg is created in case of a sys|extlinux based virtual disk image- make sure loader variable is initialized as early as possible also make sure .profile is loaded inside the initialize() function. This allows to setup loader by the value of the kiwi_bootloader variable in an early phase- make sure the which command is part of the initrd- don't configure a graphics boot screen in grub if no bootscreen picture data is available- allow init=/path/to/program option for kiwi images- in 12.1 the sysconfig.kernel file has been changed into a sysconfig.kernel-mkinitrd file.- suppress error message on stat evaluation for rpc_pipefs- use getExecPath() to locate parted binary, also allow alternative location of parted inside the linuxrc code- When the Boot image's repositories are updated/reconfigured, the priority and alias information is chopped off. This patch makes sure the priority information is retained.- use getExecPath() to find the grub binary. Along with this change the extraction of the grub binary from the initrd has been removed. That binary never was called. - allow alternative location for the grub binary inside the linuxrc boot code- cleanup splash directory in case of call interruption- v4.94.1 released- added support for download and verification progress information for pxe (netboot) images (bnc #708711)- setup INITRD_MODULES for ppc correctly as ipr module is not included there by default. - includes only needed scsi and network modules for ppc based boot images- setup serial console on JS21 ppc blade with correct baud rate- added support for dmraid fake-raid controllers (bnc #708712)- use the udev by-id path as device for the installation in suse-dump instead of the the standard unix device names (bnc #708712)- added support for repo priority for the yum package manager backend- fixed splash setup on recreation of the splash.install.gz initrd- added function to check for boot image creation and call setupSplash only if we are building a boot image - fixed splash creation for iso images- allow bootwait post dump action in combination with other post dump action- increased performance of the splash creation. Instead of ripping the splash information out from the created initrd cpio archive, the splash files are now obtained from the unpacked tree and stored in a .spl file for appending it later to the final initrd (bnc #708357)- fixed xsl 3.8 to 3.9 conversion, oem-align-partition,oem-dumphalt and oem-inplace-recovery were not handled correctly- DB: fixed schemaversion value in documentation- don't remove zypper cache dir unconditionally- v4.93.3 released- fixed deviceDisks setup in suse-dump. The code there should check if imageDiskDevice has a value otherwise the sed call will fail with an invalid expression- v4.93.2 released- fixed config dir path serach in --build mode- added patch for genName creation. The generated name is now unique according to the repository name. This allows to use the cache zypper creates per repository again- DB: rebuild documentation- DB: use the 2 part version number for the documentation- fixed .newrelease to just increase the release part of the new kiwi version string by one- DB: rebuild images only if the .fig has changed- fixed evaluation of @UmountStack. There were some mount points still active if $main::global->mount() is called multiple times each mount() call causes a reset to the @UmountStack which means some umount information got lost- fix catalog handling failure on apple style medias- do not try to run boot loader setup code when no boot loader exists- v4.93.1 released- fixed installstick creation if sys|extlinux bootloader is used. Also fixed size setup of install stick. Problem here was that the uncompressed size of the raw install file was used and not the compressed size which ends up in a too big installstick image- added support for hybrid installiso media. In order to create the hybrid the attribute bootloader must be either set to syslinux or extlinux- moved zypper version check outside of the loop. It's enough to check this one time- improve the OpenNebula example. I recently created a separate package for the OpenNebula Web-UI server (sunstone) and with the package "cleanup/separation" from the main opennebula package showing how to use the Web-UI is easier now.- use the --one-file-system option for tar when copying the system image tree. This prevents the copy of files existing beyond the local filesystem (bnc #705717)- added log information if a hijacked command is called. That check only works inside the studio environment were a hijacked command has 'cmd'_real replacement.- fixed use of uninitialized value $ENV{'HOME'} (bnc #705717)- added %post script for kiwi-templates which removes old JeOS template directories for distros we no longer support a JeOS image from.- cleaned up relocateCatalog calls which does not receive a parameter anymore. Also fixed return value of fixCatalog function- make sure relocateCatalog and fixCatalog is called for SuSE installation media (bnc #705208)- added README file to make github happy- use predefined set of configuration settings if a bootcd without system image was requested. The initrd itself doesn't contain further XML information so we set vga to normal and disabled the boot menu along with a boot timeout of zero seconds (immediate boot)- fixed --bootcd creation mode- v4.92.2 released- activate NFS locking for nfsroot systems. This means the mount call doesn't use -o nolock anymore- make sure rpc_pipefs is mounted if /var/lib/nfs/rpc_pipefs exists - force NFS version 3 for NFSROOT setup. In that case v4 features are not required- added check if reading the md5 file was successful (bnc #703829)- don't remove /etc/netconfig for nfsroot setup (bnc #672172)- changed order of resize/check operation to check/resize- v4.92.1 released- added sle10 backward compatibility patches for losetup calls and partedGetPartitionID function. losetup in sle10 doesn't know about the --find option and parted in sle10 has a different machine (-m) output- make sure to unset the cacheDir if selectCache failed- removed -t option when mounting the squashfs image container in suse-dump. let libuuid decide that- fixed typo, check for dialog program happened twice- fixed and cleaned up disk size setup. There are two new functions __initDiskSize() and __updateDiskSize() which are used to create an initial disk size value and an update function if there are conditions which requires to increase the disk size. That actions are now also part of the kiwi log file- fixed setupOverlay() in KIWIImage.pm to write back possible XML changes into the overlay tree to stay persistent in the cow file- fixed cleanup of KIWIBoot instances in KIWIImageCreator- increased chunk size in createSnapshotMap(). This increased the performance of image caches a lot- allow firstboot and autoyast service to be enabled together (bnc #700105)- remove use of hardcoded path for the mksquashfs program by using the KIWILocator::getExecPath() method- added quoting of special characters for kiwi_oemtitle (bnc #702044)- added support for pxe buffered write on destination device in fetchFile() function used for netboot images. By default a chunk size of 4k is used- added network functions for s390 pxeboot. New functions are setupNetworkInterfaceS390, setupNetworkStatic, setupDefaultGateway setupDNS. Normally the pxe boot on x86 expects a DHCP server to provide all the required network services but on s390 pxe boot works together with a parm file containing that information which is evaluated by the new functions.- fixed evaluation of buildtype in createImage(). There were some places which did not reference the build type as it is stored in the XML object. This could lead to the use of an uninitialized value if no primary type was set in the XML description and no type was explicitly selected- changed 01-network.sh preinit script for s390 templates to use the same variable names as provided by the parm file when using the standard yast based installation- added function includeKernelParametersLowerCase() which converts all cmdline paramters to lowercase variables- systemd-sysvinit creates a symlink from '/bin/systemd' to '/sbin/init'. Unfortunately kiwi linuxrc tries to check for the file permissions which leads to a false positive rebootException (bnc #700603)- changed __getBootSize() function so that it multiplies the calculated minimum boot space by 3 to allow proper kernel updates (bnc #698161)- fixed thisPath() evaluation. When in create or upgrade mode the function did not use the value of the main::Prepare lookup file- Apply some clean up to the recently submitted OpenNebula example. I made some changes to the packaging in OBS which allows me to simplify the image configuration.- fixed build on Centos/Redhat, recommended packages like jing or zypper does not exist there so we had to check the distro in that case- fixed the patternType validation bug reported by John Lund on the users list. The patch also adds a new test case xml file for the KIWIXMLValidator unit test.- added a new example for 11.3, 11.4, and 12.1. This example demonstrates the use of Kiwi to create cloud setup images and a guest images for clouds based on the OpenNebula infrastructure.- v4.91.2 released- DB: fixed typo in URI documentation- we need to go back to SHA1 for SLE 11 for now, zypp is not working with 256 yet.- use hardlink instead of copy to create the init file in the initrd cpio archive- make sure options for LogFile and RootTree are handled before createInstSource() is called- switch to 11.1 PDB branch- fix plugin to become usable with current kiwi code- remove the call to sax2 in the 11.3 vm guest example, sax2 is no longer part of 11.3 and later as the X-server is self configuring. Also added code to allow the firstboot sequence to be initiated. While this particular example does not use the firstboot mechanism, someone basing their build of the example and trying to get firstboot to work would be hard pressed to find why it is not working.- changed kiwi version number from a two part version into a three part version number: v4.91.1. The major and minor part of the version will not change with bugfix releases. The following rules should apply to the version number: major.minor.release. major change might include incompatible changes. minor change includes features and schema version updates. release change includes any kind of bugfixes- update LICENSE file to latest version of GPLv2- don't package empty file euca-setup - update license GPLv2, rpmlint complained about outdated address- new perl complains about implicit parentheses- added appliances that are not referenced in docbook and are intended to demonstrate image building and appliances in a broader view into the doc/examples/extras directory- don't use a fixed value for the size of the boot partition. The size among others depends on how many kernels were installed. Thus a fixed value is always wrong. The new function __getBootSize() is used to check the actual size of the boot/* area and this value is used to create the boot partition if required. In case of an oem image the re-creation of the boot partition happens based on the original boot partition size (bnc #698233)- drop RPMQ dependency, package does not exist, but module is provdided already by inst-source-utils.- DB: update documentation- added openSUSE 12.1 template and boot image descriptions - removed openSUSE 11.1 and 11.2 docs plus template and boot image descriptions- fixed location of squashfs in drivers section for sle10- fixed ELOG_* setup for ppc architecture. We use the hvc console for ppc and tty for all others- activate build of kiwi-desc-netboot for ppc in spec file- added support for pxe images on ppc architecture- added squashfs in drivers section of SLE10 boot image descriptions- v4.91 released- added option -f to 'prove' in order to show failed unit tests- call the XML pretty printer when kiwi writes back the XML description to the unpacked image tree. The result is easier to read- moved requirement back to genisoimage, after checking the code- fixed build: unit testing requires iso and filesystem tools to be present in the buildsystem - fixed spec file: genisoimage is set as required but kiwi uses growisofs in the code which is provided by dvd+rw-tools- fixed unit testing ktLog.pm, some functions from the real KIWILog module were missing in ktLog.pm- allow username and password to be transfered via updateDescription / __updateDescriptionFromChangeSet- added option --start-sector to kiwi. This allows to influence the default start sector 2048 to be another value e.g. 32 for the old style disk layout.- fixed call of cleanup functions for KIWIBoot objects- really fixed setupConsole to remove the ttyS0 console if no ttyS0 device exists (bnc #695948)- fixed build: Added zypper to BuildRequires. This is needed in order to make the unit test run happy- v4.90 released- DB: update documentation, typo in ec2 docs- eliminate use of global variable: XMLChangeSet- DB: update documentation- don't store DOM tree references in XML changeset - don't create a new KIWICommandLine object in KIWICache- eliminate use of global variable: OverlayRootTree- eliminate use of global variables: * BootVMSystem * BootVMSize * StripImage * ProfilesOrig * PrebuiltBootImage * ISOCheck * CheckKernel * LVM * GrubChainload * FatStorage- fix the problem with an improper exit status on test failure. We now use prove (part of Perl) to execute the unit tests. Prove generates the proper exit status upon test failure.- fixed spec file: The functionality provided with the kiwi-desc-usbboot package has moved into a new technology which is not provided by another package. Therefore the wrong provides entry was removed.- enhanced setupConsole to remove the ttyS0 console if no ttyS0 device exists (bnc #695948)- fixed setupConsole() if search string appears as comment- use -t squashfs to mount the installation image. This works around the problem if libuuid doesn't know the squashfs signature- eliminate use of global variables: ListXMLInfoSelection and RootTree- minor cleanup: remove -C parameter for 12.1 style medias, -D is enough- fixed bootloader setup if split image type is used- eliminate use of global variable: LogFile - cleaned up init() function, removed redundant code and moved the listXMLInfo code into the main operations block- adapt unit tests due to last KIWIXML ctor code changes- eliminate global variable: Destination - fixed backtrace() output in debug mode, show only latest trace level the other trace levels are kept for further debugging- eliminate use of global variable: ImageDescription - pass commandline object reference (cmdL) to KIWIXML objects and from there to KIWIURL objects.- eliminate use of global vars: ImageCache and RecycleRoot - added check for global object in constructors - added perl-RPMQ as requirement for kiwi-instsource- eliminate global variables used by main()- eliminate use of global variables: main::FS* and main::SetImageType- cleanup kiwiExit calls- s390: fixed disk online code, wait for disk device to appear (bnc #693031)- fixed boot included archive installation in prepareBootImage- moved .kiwirc into the tests/unit directory- v4.89 released- allow unit tests to run standalone without kiwi installed in /usr/share/kiwi- DB: update schema documentation- fixed obsoletes in spec file- build arch of master kiwi can't be noarch if other arch specific sub packages will be created- make rpmlint happy: * don't package empty files * don't package non unix file (dos2unix) * don't package scripts without executable flag * don't use unversioned obsoletes * provide man pages with the master kiwi package * make the master kiwi package noarch if possible * require kiwi-tools version from the same master- fixed stylesheet bugs: Thanks to Tom for looking at it * A xsl:call-template cannot contain a mode attribute. Only xsl:apply-templates can have it. The affected files are convert39to41.xsl and convert41to42.xsl * A is incorrect in two ways: First a xsl:copy needs to have something to copy in its _content_, second the select attribute is syntactically wrong; @ means attribute, but which one? I guess, it should mean . However, in this case it's totally useless as it copies *all* attributes, regardless of the for-each loop. So the for-each loop can never act as it was supposed to be.- get unit test working again, due to restructuring changes - provide config and target location as arguments to prepareBootImage() and createBootImage(). Retrieving those from the CommandLine object is not following our functional separation model as the config dir and target dir for the initrd cannot be given on the command line and therefore should not be stored on the command line argument - refactor setting of XML parameters into methods for re-use- run unit tests during package build if SUSE > 1130- limit the validation of config.xml files in the Kiwi tree to files located outside the tests tree. config.xml files in the tests tree are not necessarily expected to be valid as we also need to do negative unit testing.- fixed version update script- cleanup situation around global variables. There is now a KIWIGlobals object which contains all global variables and functions. There are still some global variables in use which references options. Those should be handled by a KIWICommandline accessor- fixed unit test kiwiImageCreator.pm - fixed *.kiwi search in getControlFile- moved the image create step into the KIWIImageCreator code There is now a function createImage / createBootImage which is also used by the build step. Along with this change I removed all occurences of the main::Survive variable and thus removed all recursive kiwi calls now from the code.- do not enforce the need of a meta package, driver update disk is not needing one (on command from cwh)- cleanup fix; don't create instances of KIWICommandLine if it's not necessary. Also removed redundant code in prepareBootImage- make the user password optional; It is valid to have a user on a system that cannot login via password authentication. Therefore kiwi should not force a password assignment in the element- fixed caching if used for boot images. Also fixed the check between the initial prepare with cache and the remount of a prepared tree with cache- add SLE 11 SP 2 media style plugin, using sha256 sums for meta data- fix installation directory of 12.1 plugin- add openSUSE 12.1 media style, using sha256 meta data sums- removed global variables CacheRoot and CacheRootMode and cleaned up the KIWICache code. Also added a new runtime check: __checkRootRecycleCapability which makes sure that a cache based root tree cannot be used in --recycle-root mode- last fix using --numeric-owner was still broken. Robert has added a better and more robust patch to fix this- use --numeric-owner option in tar to prevent the table layout to break if the user/group field in the tar -t output exceeds the field length- don't strip vgrename command from initrd- moved the following operation modes into the KIWIImageCreator: also fixed the unit tests and get rid of some recursive calls * --setup-splash => createSplash() * --bootusb => createImageBootUSB() * --bootcd => createImageBootCD() * --installcd => createImageInstallCD() * --installstick => createImageInstallStick() * --bootvm => createImageDisk() * --convert => createImageFormat()- make sure XML validation happens in each processing mode - fixed environment cleanup, added cleanup function in main- fixed logging. Added function resetRootChannel which allows to split up the log at a certain point. This is used when one --init-cache call creates multiple caches and each one has a dedicated log file- moved the upgrade code into the KIWIImageCreator object also removed the recursive upgrade call inside the create step and call the new function upgradeImage() instead- fixed fixupOverlayFilesOwnership(), remove leading spaces from file names- added unit tests for testing the KIWIImageCreator code- added new KIWICache object and move out the cache code from the main kiwi.pl file into the new object code- added new KIWIImageCreator object which will encapsulate the major kiwi processing modes like prepare, create, upgrade and others into module functions. So far the prepare step has been moved out and others will follow. The goal is to get rid of the global variable stack in kiwi as well as to remove the recursive kiwi calls- unit test fixes: * move test repo to sharable location, adjust XMLInfo test * fixed removal of test directory, remove only if no mounts exists * fixed test directory cleanup, remove only if no mount exists * fixed broken unit test due to commit: c9c797b47cb4- changed name of enableRootRecycle to setRootRecycle, better following the style of the KIWICommandLine functions- fixed use of glob-type for filehandle in KIWIRoot.pm- DB: fixed some typos in schema inline documentation- expand command line object to handle more options. Also expand the unit tests for this options. This happened in preparation to the new KIWIImageCreator object which will encapsulate the kiwi build, prepare and create modes- move knowledge about the default cache directory path into the KIWILocator module: getDefaultCacheDir()- update unit test infrastructure in preparation for the new KIWIImageCreator object which will encapsulate the kiwi build, prepare and create modes- remove outdated undocumented prechrootcall option- fixed this:// path evaluation if used in --info mode (bnc #692813)- enhanced the ddn() function to work correctly if a udev /dev/disk/ device name is specified as disk parameter (bnc #692629)- integrate end-to-end testsuite written by Bernhard Wiedemann into kiwi. There is a kiwi --test-image ... mode now, and I added an example test to the 11.4 JeOS description. It's required to have the os-autoinst package installed in order to run a test (bnc #677789)- v4.88 released- fixed build for ia64 architecture- added hook preNetworkRelease (bnc #691249)- fixed the problem where the element is being dropped during XML file upgrade if the element is specified as a child of . The element is moved to every - fixed xsl style sheets, apply changes only if the schema version of the input data is smaller than the style sheet version- fixed typo in kiwi_bootloader evaluation (bnc #691424) - fixed hvc/xvc console setup, add entry only if missing (bnc #691424)- fixed disk offset calculation for zipl.conf creation, also fixed the lookup of the boot partition and the cleanup of the loop devices if the zipl bootloader is used (bnc #687927)- switch back to by-id device name schema (bnc #691199) This reverts commit: f1e31c85689d6925b9c3069a845f5e252c838936- fixed first type selection for a subset of types selected by profiles. This is a follow up fix for (bnc #690554)- DB: update documentation, FORCE_KEXEC feature (bnc #691247)- added support for FORCE_KEXEC in kernelCheck function which allows to force the kexec call even if the kernel versions are the same (bnc #691247)- removed pxeNotifyNewImage function. This is done inside the slepos specific code hooked in (bnc #691249)- make sure bootincluded_archives.filelist contains only files- move the createTmpDirectory code from the XML object to the Locator. Creating a directory really has nothing to do with XML processing, the Locator now handles local file system interaction, thus this is a better place.- fixed reboot call in kernelCheck function (bnc #689294)- fixed type selection if not type was specified and no primary attribute is set to any type. In that case the first type written in the XML description should be used (bnc #690554)- also allow NFSROOT and AOEROOT to be set on the commandline (bnc #536309)- v4.87 released- fixed initial variable setup for haveDASD|ZFCP- changed searchBusIDBootDevice() for the s390 architecture. All required information is now obtained from /sys/firmware/ipl According to this no additional kernel parameters are required to set the boot device online (bnc #689004)- added alternative location for kiwi hooks scripts which is FHS compliant: /lib/kiwi/hooks/ (bnc #688792)- added URL mapping table for the opensuse:// url type. When resolving this the regular expression based mapping table is used to create a valid location from the specified URI data. It's possible to extend the existing KIWIURL.txt table according to the needs of the user or service.- changed xsl 51 to 52 conversion. The obsolete usb image type is removed from the XML input. this image type can be either replaced by an iso hybrid type or by an oem type. As there is a choice for the user the stylesheet will not make a decision here.- netboot: added preLoadConfiguration hook: preLoadConfiguration: is called before the client. is loaded by kiwi and thus can be used to inject alternative code for loading the client configuration. - netboot: added postLoadConfiguration hook: postLoadConfiguration: is called after the client configuration has been loaded and imported and can be used for any action after the client configuration has exported its variables into the boot environment - netboot: renamed the default register file which is put on the pxe boot server if there is client configuration found. kiwi now put a file called: upload/client.$DHCPCHADDR which doesn't conflict with the files SLEPOS uses for registration - netboot: removed SLEPOS related code, posbios calls and the evaluation of the WORKSTATION_LDAP_IP variable. All this will be part of product specific hook scripts- allow parameters to be passed to hook scripts- added setupBootLoaderTheme() function which is called after the bootloader configuration has been written. The function adapts/sets the THEME variable in the /etc/sysconfig/bootsplash file according to the boot theme set in the kiwi XML configuration- fixed suseStripFirmware to match in subdirectories below /lib/firmware/ too. firmware installed by the kernel packages for example were removed- v4.86 released- DB: update documentation. Added chapter about hook scripts- merge in relevant changes from x86 boot image descriptions into the ppc and s390 boot images- fixed build- fixed boot partition id in suse-repart if syslinux is used as bootloader. We are using fat32 now (c)- using sfdisk --id now, thus require sfdisk in spec file- fixed getStorageID function and the evaluation of the return value of this function. The assumption that the partition id is a decimal value is wrong, thus calling int() on the result is not a good idea. man I really shouldn't code at midnight- fixed setupSUSEInitrd function. We create imho poinless links named linux.vmx and initrd.vmx which are not used at all if the initrd could be generated by mkinitrd. Additionally the links are broken if the running kernel is not the same as the installed kernel. Therefore I removed the creation of that link files - fixed kernelList function. the code searching for installed kernels if the running kernel can't be found was never reached. Additionally the function did not search for other than the running kernel which seems to be wrong if multiple kernels are installed- update config.sh scripts for the ec2 examples to ensure the ssh policy and inittab console settings are correct- added new consistency check to enforce that ec2 formatted images are created as file system types. This required an update to a number of other config files used for Validator unit testing. Added new unit tests for the EC2 requirement.- fixed parted type setup, use the form 'set [nr] type 0x[id]' this is used to workaround a parted bug happening if you type 'set [nr] swap on'. parted refuses to set this even though the help page in batch mode tells the user to do it exactly that way- removed fat 8+3 kernel/initrd renaming code. This is no longer required when using a fat32 / vfat partition / filesystem - fixed kernelCheck() function: rewrote the code- fixed fstab setup in ec2 format setup (bnc #687211)- fixed syslinux kernel/initrd setup in resetBootBind()- added syslinux to package list of JeOS images- fixed partition id setup if parted is used- added lvm2 to ix86 SLE11 JeOS template- fixed the --lvm option. The option now adds a systemdisk element and behaves the same as if the users would have modified the XML accordingly- make sure installBootLoader() is called for vmxboot image if a root overlay filesystem structure is used - move resetBootBind() into installBootLoader()- call setupBootPartition() only on first boot- added evaluation of kiwi_ramonly element for vmx too - added evaluation of kiwi_ramonly element for ppc and s390 arch - added evaluation of kiwi_ramonly element for non LVM setup- fixed subsequent mount procedure of a clicfs based image. The resize2fs call has to happen in any case if the image is a ramonly system- v4.85 released- in KIWIRoot.pm the fixupOverlayFilesOwnership() function fails to quote the filaname which results in problems with files/directories with spaces in their names.- Added a new consistency check and unit tests to ensure that config.xml files specifying an image type that requires an initrd set the boot attribute on the element.Fixing a problem with imagewriter's makefileMinor fix to the command line help output in ImagewriterFixing Imagewriter compilation w/ HAL support enabled- don't use the result of a getExecPath() call happened outside of the chroot, for a command call inside the chroot. It might happen that the path to the binary is different inside the chroot and thus can't be foundFixing bnc#679099 - Imagewriter still requires HAL- added support for ZFCP devices- added repodata information for s390 suse-sle11-repo- if the target-device option is used kiwi normally doesn't create a disk image file until the image file is created by a dump off from the target device. SuSE studio requires the size information of the target disk before the dump off happens, because it creates that target device internally. Therefore this patch makes sure that a image disk file is created before the dump off happens- moved from fat16 (0x6) to fat32 (0xc) for syslinux setup- alpha sort the option parser- fixed kiwiCommandLine unit test according to the changes done in commit: 7954bf3bed5845f4ece4991ef17f8f2978c8fbee- created a repo to support new tests for size query and package install query. Additionally the common test case base class gets new methods to create a writable directory and to clean it up after the test- fixed KIWICommandLine::setLogFile, it breaks for 'terminal' logging - fixed KIWICommandLine::setAdditionalRepos, it breaks if numAlias and or numPrios is zero- fixed solvable creation for old distros (sle10) providing uncompressed versions of suse/setup/descr/packages file- fixed init(), creation of global kiwi log object is required for KIWIQX execution logging- added repodata to kiwi provided suse-* repos and move the repotype to rpm-md in all referencing XML descriptions- removed test_cmdReplaceRepo_noRepoType test, it's valid to overwrite first repo without specifying a type- renamed the test implementation and data base directory to be consistent with other tests, i.e. start with kiwi- update spec file, added jing as recommended package- added unit tests for the new KIWIXMLInfo object. Also break up the bigger tests into smaller test cases- added a new KIWIXMLInfo object and eliminate the listXMLInfo() function from kiwi.pl- v4.84 released- added normalizeBootPath() function which allows to use the following boot attribute source locator prefixes: * this:// => pointing to the image description directory * system:// => pointing to /usr/share/kiwi/image * dir:// => pointing to a directory if no source locator is set kiwi uses the path if it is an absolute path and in case of a relative path it checks if the path relative to the called directory exists and if not it also checks if the path exists below /usr/share/kiwi/image- fixed repository setup for cache creation- fixed LVM repartition code. if no recovery partition is requested just us the default end sector suggested by the partition tool- fixed s390 LVM repartition code [2]- fixed s390 LVM repartition code- fixed zipl setup if used with LVM images- suse 11.4 doesn't provide the by-id disk paths anymore. Because of that change kiwi switches to the by-path method with this commit- do not replace @ to . in package names when building products- fixed xen examples for suse 11.4, xen-tools-domU doesn't exist anymore. xen-tools is used instead- dont't start udev using startproc (bnc #683126)- fixed boot path lookup if boot attribute contains an absolute path (bnc #683135)- added fixupOverlayFilesOwnership() function which handles all files from the overlay root tree and the image archives. The function changes the ownership of all that files to root:root if they don't belong to a user in the passwd file. files which belongs to passwd users are not touched and therefore must be added with the correct owner:group setup in the overlay tree and/or archive- fixed perl warning (uninitialized variable) and a checker error when building an ISO image without setting the 'flags' attribute.- v4.83 released- option -s for qemu-img convert hast changed its meaning- fixed pxeRaidCreate() function. Use --run option when creating the array and write a more reliable mdadm.conf file (bnc #678076)- fixed format string of hexdump. If the mbrid has leading zero's the hexdump call removes them which leads to an error when string matching the mbrid- DB: update documentation, new option --mbrid- added support for a custom mbr disk label with the option --mbrid. The default is to create a random mbr disk label.- DB: update documentation, new info module 'version'- added info 'version' selection to obtain the appliance name and version information- fixed start of udev and blogd- enable loading of agp modules before udev is started (bnc #659843)- reverts commit 8f5df54fd23cc6c16e7d72fe5954e62fd70bb458 busybox is distributed with 11.4 (bnc #679660)- added suseStripFirmware() which removes all firmware files which are not referenced by any module (bnc #681234)- fixed use of uninitialized value in __checkPatternTypeAttrrValueConsistent- DB: update documentation, new attribute prefer-license- added support for the repository attribute 'prefered-license' The repository providing this flag will be used to install the license tarball due to request in bnc #633664. If no repo with a prefered license flag exists the search happens over all repos but it's not guaranteed in that case that the search order follows the repo order like they are written into the XML description (bnc #680886)- DB: update documentation and examples, new element oem-silent-boot- added support for the configuration of a silent OEM boot mode Normally the oem boot process switches the splash screen off. With true as part of the oemconfig section, the splash stays on top- fixed examples, added boot.local script to the suse-live-stick example which allows to mount the fat boot partition as data container below /media/stickstorage- fixed kiwirevision check. In case of a git revision it's invalid to check for less than a number. The check must match the revision- DB: update documentation, kiwirevision specifies a git commit id- v4.82 released- fixed exit code handling: * kiwi --version => exit 0 * kiwi --help | -h => exit 0 * unknown option => exit 1 * no root privileges => exit 1 * processsing error => exit 1- move the knowledge about the default package manager from the KIWIManager object into the XML object. This is a configuration value and thus the default should be in the part of the code that processes the configuration- added a new target to the Makefile to allow the execution of a single unit test, i.e. support 'make KIWIXMLValidator.t' This is useful when working on unit tests as it allows to execute only the test being worked on.- fixed spec file. perl-satsolver from the 11.4 distro doesn't contain the code changes Klaus made during the Studio workshop Therefore kiwi provides the required version now in the Virtualization:Appliances repo for 11.4 (bnc #680549)- fixed 11.3 and 11.4 JeOS templates. openssl-certs doesn't exist there anymore. I replaced it by ca-certificates- increased size of boot partition from 60M to 100M. If mkinitrd is called it might happen that /boot runs out of space- The ISO generation code allows for either genisoimage or mkisofs. The checker does not support this. The patch addresses this problem and the checker no will be happy if either genisoimage or mkisofs is found (bnc #680148)- fixed typos in ppc boot scripts (spaces at end of line, tab mismatches) and adapt latest noarch code changes from x86 boot scripts to ppc - removed 01-console.sh from ppc JeOS template. That's done by the setupConsole() function in suse-preinit- fix the VMware image example. The example does not contain necessary packages for a graphical user interface, thus setting window manager and runlevel in config.sh to imply that a GUI environment is present is misleading- fixed device map cleanup. The cleanup happened to early because the installBootLoader() code accesses the device map under certain circumstances but the original device was already freed. In that case the installBootLoader() code re-adds the mapping but that could lead to a different device name compared to the one stored in the device mapping table- prevent the use of File::Path qw(make_path remove_tree) because it's not compatible to File::Path qw(mkpath rmtree) in older perl versions- fixed race condition in CD device search, missing udevPending - fixed wrong mountCalled variable setup, the return code of the mount call was not checked. So even if the mount failed the variable was set to 'yes' which leads to an umount of the root filesystem before the root filesystem was activated- removed local sle11 repo assigned to 11.4 net|oemboot boot image description. This was to pull in busybox but I don't want sle busybox in 11.4 to avoid compatibility problems (bnc #679659)- removed busybox from boot image descriptions for 11.4. It's not distributed with the 11.4 media anymore (bnc #679660)- added new consistency check to assure that all credentials used with any specified "https" repository are the same. Further the consistency check verifies that the username and password attributes are always used together.- added support for https repositories for zypper with username and password. Here is an example specification: kiwi now writes a credentials file and takes advantage of the zypper support for this file. This patch also addresses the problem that in the current implementation we end up using the build system zypper configuration file "zypper.conf" as zypper is called without the "--config" option.- DB: update documentation, https support added for zypper- fixed the udev trigger call which must only be called one time after the udev daemon has started (bnc #668014)- fixed setup of the loader initrd variable. Normally this variable is set via the kernel commandline but in case of a PXE setup it might be missing. In that case we check if the bootloader is present as .profile variable in kiwi_bootloader and set loader appropriately- fixed OEM PXE installation code. Wrong function name, checkServer was renamed into pxeCheckServer and the image file in case of a pxe installation is gzip compressed not squashfs embedded- DB: update documentation, fixed typos- fixed spec file, kiwi-desc-usbboot was dropped- added netboot root configuration check. The NFSROOT setup in combination with clicfs is not allowed. It doesn't make sense because it requires the clicfs process to run on the NFS server which would allow to connect only one station safely. AOEROOT or NBDROOT should be used in combination with clicfs instead- added kernel-firmware package to boot images- DB: update documentation, added a section about OEM -> pxe install- v4.81 released- added function resetBootBind() which turns the bind mounted boot path into a standard distro path which allows kernel updates. resetBootBind() is only called if mkinitrd can be used according to the image root filesystem setup. Along with the resetBootBind change we also had to fix the setup of the fat boot partition if the syslinux bootloader is used. Normally there is a link named boot -> . but on fat we can't have links so the data has to be moved. (bnc #678159)- adapt recent changes to x86 linuxrc to the s390 code stream- fixed typo in motd message of 11.4 JeOS- DB: update documentation for ramonly attribute- fixed syslinux boot partition setup, links on fat does not exist- added optional type attribute ramonly="true" which forces the COW device in a overlay filesystem setup to point to the main RAM memory- DB: update schema documentation- fixed evaluation of $main::FatStorage. I put it too late in the code so that the overall disk size wasn't adjusted- removed usbboot boot image and usb image type from kiwi. The obsolete usb image type has been replaced by the hybrid iso image type or by the oem image type.- DB: update documentation and removed the suse-live-stick examples. - DB: suse-live-stick are now handled by the hybrid iso examples- added more careful grub install check- When mounting the hybrid boot drive, select the partition marked as bootable instead of blindly mounting the first one. This change makes it possible to update the system if the image has been written to a writable medium.- DB: update documentation, man page update (new options)- fixed syslinux boot device setup if LVM is used- make the creation of USB sticks more Windows friendly. For a detailed description how this is done watch the bug report: (bnc #677246)- fixed spec file for s390 build- fixed spec file for ppc build- netboot: allow network boot in degraded raid mode (bnc #668014) - netboot: remove superblocks from raid disks if RAID has been dectivated in config. (bnc #668014)- added support for the ncpus attribute on the element. It is used to set the number of virtual cpus for a VM and written to .vmx and .xenconfig- fixed xsl stylesheet convert47to48.xsl. existing lvmvolumes section wasn't translated into systemdisk section- added KIWICommandLine and KIWIRuntimeChecker modules. The command line module is a storage container for the commandline options passed to kiwi. It's used to transport the data into other objects. One successor of KIWICommandLine is the KIWIRuntimeChecker module which does some checks while kiwi runs. This means kiwi reads in the image description and after that the runtimer checker checks if it is possible to build the desired image according to the specified information. If that tests are passed kiwi enters the actual processing mode which is either the image prepare or create. This is useful to exit early if some option combination or data set is valid according to the XML schema but can't be build due to other reasons.- update RNG schema ec2region comment- added support for the new EC2 Japan region- assure that the given memory size given for a Vm is an integer- removed python-elementtree package required by smart which was removed in an earlier commit- make sure size parameter is used without adding kernel and initrd space if the given size is big enough.- removed smart packages - export PBL_SKIP_BOOT_TEST=1 to allow mkinitrd to install - changed SLE10 JeOS example: * all packages in bootstrap to allow the use of zypper * remove installiso option which doesn't work because no squashfs - added an updated version of parted for SLE10 - added a zypper version check for the kiwi upgrade mode - changed all SLE10 boot image descriptions to put packages into the bootstrap section to allow the use of zypper - adapt README of SLE10 JeOS, smart is not required - adapt kiwi.spec to recommend zypper only- v4.80 released- export meta data location content keys for ftp tree medias- ftp medias beside first one should not provide the product- don't ignore blocksize value from config. (bnc #675004)- added support for --recycle-root option which allows to use and modify an existing root tree while in the kiwi prepare step.- v4.79 released- The default tftp block size chosen by kiwi is too small and not aligned to page size (4096), so it causes unnecessary overhead. This patch improves loading performance a lot- just compare the major version of squashfs kernel module and squashfs tools (bnc #674653)- parse all available product file not just the first one- fixed -z test for RELOAD_CONFIG variable in netboot- added unit testing for the KIWILocator object- added ensconce parameter -i imagename which contains the contents of the name attribute. ensconce requires this to distinguish between system image and initrd image- Using here documents with tabs in front of the limit string works but is not recommended. Tabs are ignored when searching for the limit string but spaces are not, in which case the here document ends at the next occurence of the limit string or at the end of the file with some shells not even issuing a warning- fixed use of uninitialized value if an improper configuration directory is specified- move warning messages about shm and semaphores into logfile- v4.78 released- added check to enforce the "no whitespace" rule for profile names- enhanced patternType check which now allows the use of the patternType attribute for all specifications that add packages to the image- fixed suse-min-gnome example, empty vmx package section doesn't make sense- fixed cleanup of shared memory segments and semaphores by a valid destructor in KIWISharedMem.pm- fixed regexp in __checkPatternTypeAttrConsistent()- fixed locale Makefile, wrong use of equals operator- v4.77 released- call isohybrid only once according to caller environment- add optional support for hybrid iso for product medias- v4.76 released- added support for config-cdroot.tgz and config-cdroot.sh in OEM install media (CD and stick) (bnc #673566)- removed obsolete TestSuite check in KIWIURL- moved check for ec2-bundle-image after the check for the Amazon AWS credentials- setup owner/group permissions only if the user home directory exists (bnc #658172)- DB: update documentation for netboot config files update feature- added support for netboot config files update. The update happens according to the value of an optional md5sum hash specified per file- rebuild rng schema from rnc data- cosmetic changes to the unit tests * fixed the repo specification to point to online repo * updated the description to indicate what the test does - improve the error message when an undefined profile is referenced - added check for a consistent setting of the patternType attribute value- v4.75 released- fixed default behavior for oem-swap. If not specified the default should be to create a swap partition. This was accidently changed- DB: fixed description about default partitions created- allow creation of ec2 format even without credentials. In that case only the adaptions to the root image will be made but the ec2-bundle process will be skipped- fixed use of uninitialized value in squashfs version check- DB: update documentation according to the pxe raid feature change- changed raid 1 support for pxe images. The former implementation can only use raid for the root partition. This implementation allows a custom partition table to be mapped in one raid 1 per partition- fixed linuxPartition() to be fine with a raid partition too- fixed raid partition setup. The wrong id was set. If there is only one raid partition on the disk fdisk doesn't require a number for the 't' command- DB: update documentation- restore copy of temporary files only if they are not provided by the overlay tree. This affects /etc/hosts and /etc/resolv.conf- fixed createSnapshotMap() to be able to setup snapshot tables multiple times in a row. this requires unique table names- fixed yast2 firstboot startup for old (sle10) init script based startup sequence (bnc #660770)- fixed build, unfortunately perl-Test-Unit doesn't exist in BS- added unit test framework and some XML validation tests- fixed typos in XMLValidator output. This is important for the unit test results- removed testsuite from kiwi. The current --testsuite mode has been removed because it has turned out that's it's unused code. With this testsuite it was possible to run scripts inside the kiwi created root tree and check their results. Basically this is only useful for testing the root tree integrity which can always be done outside of kiwi like studio and slepos does. Along with the change we will add unit tests for testing the XML error handling and I plan to integrate an end-to-end testng framework which allows to realy make sure the appliance works as expected- fixed location of radeon.ko (typo: missing drivers/)- added graphics cards direkt rendering modules for i915, nouveau and radeon for openSUSE 11.4- v4.74 released- removed split sections from oem examples, use the kiwi default split section for this examples- changed the filesystem type to ext3 for 11.2 oem example because we found issues with ext4 on 11.2- fixed __addDefaultSplitNode() function. A cloneNode() call is required if you add children from another DOM tree- speedup prepare step with caches by skipping the bootstrap installation. If there is a cache available we add the bootstrap packages into the image package section and run the rest of the installation procedure in one image installation step- make use of zypper's autorefresh feature and don't call zypper refresh manually anymore- offer options to ignore specified but missing packages for product generation- make a difference between arch modifiers (addarch and removearch) and usage of a package (no modifier). This solves the last problem for openSUSE biarch medias.- fixed netboot disk device check. In case of a ramdisk only configuration there is no DISK set but the image download should happen into the ramdisk device. Therefore the disk device check was enhanced to check the ramdisk setup too- fix arch= statement for real for multi arch medias, use only the subset of global required archs and filtered one by arch= statement- moved caching system over from clicfs to a device mapper snapshot table. This seems to be more stable and leaves more room for improvements- Revert wrong commit overriding package attributes on multi arch medias This reverts commit 1ef1a8b62df61899480285051c9b725990685113.- avoid error message about undefined $manager variable when building a productignore missing debug packages, they may not get generated (esp on noarch packages).handle autodetected src packages with correct arch (src or nosrc)- DB: update documentation and examples due to new ec2region element- added support for the child element for . With this a user can specify one or multiple target regions for the EC2 image. Specifying multiple elements creates multiple AMIs. The main convenience is that one does not have to look for the aki-... cryptic name for the PVGrub boot kernel as the value gets embedded in the generated manifest. Supported values are: AP-Singapore, EU-West, US-East, US-Westsupport blacklisting of packages via onlyarch=""report about all missing packages and abort afterwards, not at the first missing package.take care about arch= package statement for product required architectures- v4.73 released- DB: update ec2 documentation- fixed typo in ec2 format creation (missing /)- fixed ec2 examples- DB: update ec2 docs and examples per request in (bnc #667303)- improved ec2 format creation per request in (bnc #667303)- provide partition info in MB instead of KB- update s390 boot code according to generic changes in the x86 boot code- added support for ppc images: * added oemboot boot code * added vmxboot boot code * adapt kiwi for creation of ppc disk images * adapt kiwi for creation of ppc install iso * added suse-SLE11-JeOS template for ppc * added support for lilo boot loader used for ppc * changed spec file to build ppc packages- DB: update documentation: Added information about plain:// source - DB: update documentation: Improved smb:// paragraph- fixed squashfs version check- DB: update documentation, removed wrong version information- added support for plain:// url types. They forward the URL (everything following "plain://") unmodified to the package manager. This can be used if kiwi does not support a special URL but the package manager does- fixed smb mount. Leave // to indicate the share name and make sure we create a unique mount point with mktemp instead of using the share name as base- DB: update documentation from review- use -o guest option to mount a samba share without username and password specified- fixed use of profiled repository sections- DB: fixed typo: cifs-utils is required in bootstrap section- DB: added documentation about smb:// repo source type- added support for username and password in repository elements - enhanced cifs mount (smb://) to be able to use credentials- Fail hard on missing packages during product build. This is requested with high prio from coolo, we need to make this an option later on.- v4.72 released- run parted capability checks only if parted exists- fixed build for 11.4- added filesystem mktool vs. kernel module version check for the squashfs filesystem. The check has been added in the checkType() function- add support for smb:// type urls by supporting cifs mount- DB: fixed typo- DB: added patch from Franz Leitl, fixing some typos- added partition ID information into progress information when installing the system in partition install mode- fixed lvresize calls in kiwi which are all missing the '+' prefix - fixed createSnapshotMap() to know about LVM volumes - fixed partition based installation with LVM image. The dialog for boot and root partition selection was broken and there is also a small fix improving the progress information when installing the image partitions to the disk partitions- reverted the following commits: eeecf05d029e7e75abfc44a5c2c600263838c50e 438e83976cbd12dde20511ea5d000620082fa066 They broke the yast autoyast and firstboot setup. The provided config-yast-autoyast.xml or config-yast-firstboot.xml were not handled anymore- removed fdisk support entirely except for changing the partition table created by the isohybrid tool. parted can't handle that table and therefore we use fdisk inside the function createHybridPersistent() but nowhere else anymore- update schema and kiwi documentation- fixed mdadm --stop call for pxe raid(1) boot- check the return code for the image container mount call- v4.71 released- fixed partition selection in OEMFindPartitions(). Don't take any other than 0x83 partition types into account- change the layout of the install ISO / USB stick. The raw disk image on the install media was compressed using gzip. The downside is that it's not possible to loop mount the compressed file. But for partition based installations this is required. Therefore the raw disk image is now packed into a squashfs filesystem (bnc #665888)- fixed typos in kiwi_oemunattended and kiwi_oemswap evaluation which caused wrong content in the oemconfig file- added support for gparted in partition based oem installation If the partition table does not provide the correct layout we start a X session with some descriptive message window and the gparted tool to be able to change the partition table Author: Bernhard M. Wiedemann fix approx 109 typos- added check for $imageDiskDevice and the existence of $imageBootDevice to the setupBootPartition() function in order to prevent unused mount actions for /boot Author: Bernhard M. Wiedemann fixes from review- fixed skip check for firstboot and autoyast descriptions- added check which disallows white space in the value for the displayname attribute- fixed use of undefined value in KIWIXML.pm validation- added support for raid 1 (mirroring) for pxe images- fixed insertion of repo alias and priority commandline options into the correct section of the XML description.- dont't overwrite firstboot.xml or autoconf.xml if they exist as overlay files in the overlay root tree- create private __expandFS() function and eliminate some code duplication by this new function- added check for the PatternType attribute which may only be used for image and bootstrap packages. Check that this is set appropriately.- fixed typo in use of oem-shutdown element- fixed evalutation of patternType attribute- make sure fixupFDiskSectors() only fixes the first partition start sector and doesn't touch the others (bnc #664236)- make sure fixupFDiskSectors() is called on a non busy table (bnc #664236)- fixed fdisk setup in alignment mode. fdisk is not able to suggest the correct next sector if called with the option "-u". Therefore only one partition is created in that mode and the rest is created in fdisk cylinder based mode (bnc #664236)- added new module KIWILocator which perform operations to locate objects needed by Kiwi in the filesystem. Along with the new module other code parts which did that before has been replaced- added support for satsolver bindings provided with the perl-satsolver package- fixed syslinux/isolinux configuration for disk based images. Several problems like missing branding files, write checks in not existing directories and file checks in wrong directories were found- fixed syslinux/isolinux config for non graphics boot setup- minor clean up, remove match for yes- v4.70 released- fixed evaluation of kernelcmdline in createImageLiveCD()Make SUSE meta data compression rsyncable (partly transferable).- fixed setupKernelModules() in a way that it doesn't overwrite settings from /etc/sysconfig/kernel but append to them- revert last commit, broken patch- fix sed expression which removes the architecture suffix from the image name. The expression failed if the architecture is also part of the name so it changed to match the suffix at the end of the name string only- don't call setupConsole twice if systemIntegrity is fine in kiwi netboot code. Also make sure unsetFile(), called on the dhcp info file, is called before the interface is released- fixed releaseNetwork() to cleanup /dev/.sysconfig as well as unset the variables from the dhcp info file which has been exported into the root shell environment. Those variables caused conflicts with the network scripts in /etc/init.d- removed obsolete config file from suse-11.3/suse-live-stick- cleanup netboot code. moved some functions into the KIWILinuxRC.sh pool and fixed bootloader setup when using clicfs images- removed old and unmaintained ppc code- added check for first sector start after repartitioning via fdisk. The start sector must be the same before and after the repartitioning (bnc #659865)- make sure bootincluded packages and archives are not removed by the initrd strip down functions. This is done by introdudcing two new functions in KIWIConfig.sh: * basePackBootIncludes * baseUnpackBootIncludes whereas the first one packs the bootinclude files and the second one unpacks them again. The standard boot image descriptions provided by kiwi uses that functions to make sure all bootincluded files can be restored at the end of the strip down functions called in image.sh (bnc #660743)- v4.69 released- if ensconce is used the pattern/package list is already solved. In that case it doesn't make sense to do solving with satsolver again. We are using the list provided by ensconce as solved list directly in that case.- fixed ensconce call and parameters: * ensconce now resides in /usr/bin, so we can call it that way * pass -b parameter to ensconce, since bootstrap is obsolete * pass proper root parameter to ensconce- fixed profile request handling when kiwi invokes itself- fixed functions ignoreRepositories() and addRepository to correctly update the DOM tree and not only the internal hash structures- fixed SLE11 template which did not include gfxboot branding packages if xenFlavour was selected- fixed warning message when using int() on empty string- fixed use of .buildenv- renamed modprobe.conf.local to modprobe.d/99-local.conf on systems which doesn't support the old conf file anymore- v4.68 released- fixed location of local modprobe configuration file. The new place is in /etc/modprobe.d/99-local.conf. Only if this doesn't exist we will use /etc/modprobe.conf.local- make baseSetupInPlaceGITRepository more useful- fixed initial value (set it to empty) for INITRD_MODULES- removed obsolete setImageType() function from KIWIXML- make use of the --check-config modus in kiwi to validate and check the kiwi provided XML configurations within the Makefile.- fixed suse-SLE11-JeOS to validate correctly. It's not allowed to have multiple import="true" attributes set. Therefore the profile setup for this JeOS XML changed- added Option --check-config which validates the XML using the new KIWIXMLValidator module. Along with the new module validation from KIWIXML has been moved into the KIWIXMLValidator object- fixed use of createImageUSB() which has changed its name into createImageRootAndBoot()- fixed boot partition setup for non mkinitrd supported setups- added updateTypeList() function in KIWIXML which is required if an accessor function changes the XML tree the internal data structures needs to be updated too- don't overwrite the zypp repo data when in recovery mode (bnc #657922)- fixed cache creationfix build for factory (openSUSE 11.4)- added KIWIXML methods __populateProfiles() and __populateTypeInfo which are gathering the profile and type information as they are set by the XML description. Along with this change the following methodes have changed: __populateDefaultProfiles and __populateProfiledTypeInfo. They both read the data structures created by the first two and assign a new data structure according to the selected profiles.- removed unneeded KIWIXML instance from KIWIBoot. The KIWIBoot constructor creates one instance of KIWIXML which is sufficient for all operations- fixed parameter list in 'new KIWIXML' instances- fixed repository update in __updateDescriptionFromChangeSet()- v4.67 released- make addDefaultSplitNode() a private helper method called __addDefaultSplitNode(). Also fixed that function to work correctly. It should add the default split mode for all relevant types (iso and split) and add the section only if those types doesn't already implement a split section- cleanup KIWIImage and main kiwi code. The global variables ForeignRepo and ImageName has been removed. Additionally the KIWIXML constructor doesn't have the ForeignRepo hash in its parameter list. Inside KIWIXML the entire foreign data setup has been changed into methods creating and applying a changeset. Therefore a temporary global hash XMLChangeSet has been introduced. After apply of the changeset it will be removed directly. Along with the cleanup the creation and check for boot and prebuilt images has been moved into functions. The preparation step of kiwi now also writes back the internal XML changes into the XML file. Last but not least the global variable ImageDescription has been introduced which stores in prepare and create mode the path to the base image description which is required to know the location of bootincluded archives and this:// repos- removed xml inheritance. This feature was never used- restructured XML data processing by adding the following KIWIXML methods: __populateTypeInfo() and __populateImageTypeAndNode() The first method creates the %typeInfo hash which contains all possible elements according to the selected profiles. The second method operates on the %typeInfo hash and initializes those part of the hash which represents the requested image type or the primary type or the first type read in. Both methodes are called only _once_ inside the object constructor. The existing method getImageTypeAndAttributes() has changed to simply return the selected part of the %typeInfo hash and does _not_ change any object data as done before.- added check that only one type with image="myName" exists per - fixed use of uninitialized value in KIWIXML processing- if logfile option is specified along with --init-cache set the logfile to the 'terminal' mode. That's because in that mode multiple logfiles per cache are created and it wouldn't make much sense to have them in one file. If the output is on the terminal the user can decide himself for the redirection- require clicfs >= 1.3.9 due to major bugs in former versions- fixed __checkReferencedProfDefined to work with sections defining more than one profile like netboot does- fixed invalid numeric expression in reqProfiles - added __populateDefaultProfiles according to XML restructuring and removed setDefaultProfiles- fixed use of uninitialized value in KIWIXML.pm- v4.66 released- fixed use of undefined value as an ARRAY reference- removed unused cleanInitrd() function- make sure bootstrap packages are handled when using a cache - fixed time when KIWIImage.pm mounts the overlay and provide a function getImageTree() which returns the currently used root tree. Move the recovery creation, profile update, and cleanup after the KIWIImage module creation- fixed overlay setup for KIWIBoot modules. Only if a cow file exists in the given system image path it's required to setup the overlay mount- don't create new kiwi object if there is already one available- check image type only if a preferences section is present- fixed profile check in create mode- cleanup xenconfig setup by removing conditions that no longer apply due to the removal of the xen image type which is now handled by the vmx/oem type flavoured with xen and xenk profiles- make sure the package manager is added only once to the list when in --info mode- fixed dumpsolv regexp which searches for pattern names- fixed creation of boot image caches. It's required to prevent the kernel extraction from the cache because this is done in the preparation process which uses the cache - don't allow logfile option when in init-cache mode. This is because each cache has its own logfile living in the cache directory- fixed minor code duplication inside the RNC schema- deactivate compression for clicfs caches (faster) - fixed and cleaned up profile evaluation and usemake "mk_listings" call during product generation optional- explicitly call SuSEconfig --module permissions. This module is no longer called by the default SuSEconfig call so we need to call it directly- added the following consistency checks: * only 1 profile may be marked as default via import="true" * only 1 type per spec may be set as default via primary="true" * only 1 spec may reference 1 * only 1 specification without a profiles=... attribute * check that all references used via profiles="aName" attribute have a definition of - require specific clicfs version because the version before has severe problems when writing to a cow file- don't preserve rpm database on recovery. This could cause an inconsistent rpm database. Not preserving it could cause an incomplete but consistent database which is better. For reference a copy of the old database is stored in /var/lib/rpm.backup- follow up: make sure system filesystems and mount options corresponds with the default settings we use in a standard installation with yast- fixed cleanImage() function to cleanly umount partitions before calling init. Also make sure cleanImage reports its actions as part of the boot.kiwi logfile - make sure system filesystems and mount options corresponds with the default settings we use in a standard installation with yast- fixed typo in option description- v4.65 released * rebuild documentation * rebuild schema documentation- added an oem hook named: preCallInit which runs right before init is called or in case of a reboot/halt request right before that reboot (bnc #654404)- make sure /dev is bind mounted when installing the very first bootstrap packages.- DB: update documentation- put package manager into solver list when calling kiwi --select ... --info packages - fixed clicfs mount in cache mount code: * we don't want reserved blocks * we don't want automatic filesystem check * we don't want to use --ignore-cow-errors - deactivate automatic cache creation and introduce a new operation mode called kiwi --init-cache. Caches needs to be created in a separate call. This has turned out to be more flexible and prevent customer confusion - add default cache image location: /var/cache/kiwi/image which can be overwritten by the --cache option. If one want to use caches in prepare or create mode it's required to select the cache location with this option. - removed baseroot attribute and defaultbaseroot element from XML description. baseroot has been replaced by the clicfs based caching process - don't leave .broken inside the tree if it is not broken - cleanup the overlay preparation code. The code is in KIWIOverlay.pm exclusively. At each code point which requires it we create a KIWIOverlay object and let it control the overlay mount- DB: add documentation about PXE hardware maps- update documentation for oem-unattended mode- if in oem-unattended mode and we found more than one disk for installation, use the first disk found by hwinfo- fix bug in the format conversion from raw to qcow2. The 'convert' command to qemu-mig was missing.- move the two consistency checks (kiwirevision and version format) out of the KIWIXML constructor and into their own methods - Implement a new consistency check, __checkFilesysSpec(). This method assures that the 'filesystem' attribute is used for image types that require the attribute- fixed creation and use of kiwi caches for boot images also make sure the same clicfs cache is mounted only once and is released in case of an exception- netboot: fixed incorporation of hardware maps - netboot: evaluate additional VENDOR_CONF value- fixed use of uninitialized variable @configNodes - fixed solvable setup for susetags- update RNG schema due to last change to the RNC schema- added new element text which allows the user to specify raw text that ends up in the .vmx or .xenconfig file. Certain default options currently written by Kiwi may be over written by these settings. Therefore the use of this option happens on your own risk. No validation of the raw text is performed.- verify format used for the mac address when specifying the attribute on the vmnic element.- fixed logging for listXMLInfo()- move the XML validation and loading to it's own methods - added image consistency checks into KIWIXML as addition to the XSLT stylesheet processor. The function __validateConsistency provides a place to add consistency checks: * Added check: __checkPostDumpAction which ensures that only one of oem-bootwait, oem-reboot, oem-reboot-interactive, oem-shutdown or oem-shutdown-interactive is specified.- added return string to partitionSize() function even in case of error- added bc tool to netboot image descriptions- allow boottimeout setup for image="iso" too- added xsl stylesheet to convert images which uses the image="xen" type into an appropriate image="vmx" type because the xen image type was removed. Additionally increased schema version to v5.0 with this change- netboot: added support for hardware maps. Hardware maps are configuration files for a given range of MAC addresses. If a client of the specified range boots up the corresponding hardware map file will be loaded and merged with the default configuration. That way you can specify in one config file configurations dedicated to different machines. Example config. ... HARDWARE_MAP="vendor1, vendor2, vendor3" vendor1_HARDWARE_MAP="xx:xx:xx:xx:xx:x1, xx:xx:xx:xx:xx:x2" ... if client xx:xx:xx:xx:xx:x1 boots up the file hardware_config.vendor1 is additionally loaded from the pxe boot server- fixed doit OBS script to work with branch names different from 'kiwi'- more flexible post dump behavior: * Fix misnomer of oem-dumphalt, now called oem-bootwait xslt included, no change in functionality from oem-dumphalt * Add oem-reboot-interactive post a message before rebooting the system after image expansion wait for user interaction * Add oem-shutdown power the system off after dump and image expansion are complete * Add oem-shutdown-interactive post a message before system power off, wait for user interaction- word-smithing for images.sh and config.sh doc- v4.64 released - rebuild documentation - rebuild schema documentation- added a command line argument to sepecify the default 'yes' answer for questions which could come up during the build process- changed partition layout of LVM based vmx/oem images. The boot partition is now the first partition and we will use only one partition for the entire LVM as second partition (bnc #651331)- fixed compare statement, in perl 'eq' for strings must be used- fixed rpmlint warning: kiwi.src:434: W: macro-in-comment %config- added 11.4 JeOS to spec file- added templates and boot image descriptions for SuSE 11.4 - removed doc/examples/suse-11.1- fixed format conversion checks. iso type can't be converted- fixed checkLVMbind() function to activate volume groups before checking the device mapper nodes- fixed check for xvc/hvc consoles (bnc #650667)- keeping old boot files in /boot and trying to copy in newly generated initrd + kernel during image startup could result in not enough space on /boot partition for LVM enabled builds. This patch fixes that by removing the old kernel + initrd, before copying in the new one.- added languages nb_NO,da_DK,pt_PT and en_GB to the selection list- support multiple vmnic elements for VMware- added support for the XFS filesystem- fixed the schema inplace dochint for the oem-dumphalt element - rebuild documentation- don't let the recovery partition grow to the rest disk space available. This is not intended as the recovery partition should only be of the min size required to store the recovery data- v4.63 released - rebuild documentation - rebuild schema documentation- fixed repartition code, out of bounds partitioning- added setupConsole() function to activate xvc and/or hvc consoles if their device nodes are present- fixed xenconfig creation, virtual framebuffer line wasn't written- fixed suse-11.3/suse-xen-guest example by removing some old static sysconfig files. Also remove the boot.xen service script it's no longer required as we can use the xvc device for the console- added support for targetdevice option for filesystem images - if the targetdevice option is used check if the device exists before proceeding- make sure volume is active again if no LVM repartition takes place. This is because recreateVTOCTable has deactivated the volume group before- fixed LVM based repartition code for s390 and DASD, it's required to recreate the VTOC table here before you can create new partitions- fixed creation of VTOC table; close active device maps first- fixed spec file requirements, grub and clicfs only exists on ix86 and x86_64- fixed use of satsolver if ensconce is used together with pattern names. ensonce uses an already resolved manifest file and thus it's not required to solve the patterns via satsolver (bnc #643442)- changed the lvmvolumes section into systemdisk like the following example shows: ... - update to new schema version 4.8 due to the systemdisk change - if systemdisk is specified a lvm setup is implicitly requested. Therefore also the attribute 'lvm' from the type section was removed - Also the oem-home element was removed with this change. A volume instead of a single partition should be used. - wrote a xslt stylesheet for the following conversions: * remove lvm attribute * move lvmvolumes element into systemdisk * move lvmgroup attribute into name * if oem-home is set create a systemdisk setup with a home volume - update documentation due to the systemdisk change- v4.62 released - rebuild documentation- added vfb (virtual framebuffer configuration) to the xenconfig file written by kiwi. This allows easy graphics console access with the virt-viewer program. If you want to run the xen domU in text mode you have to manually pass the option xencons=tty in the pygrub boot menu- added egrep for dasd_configure to initrd - fixed the creation of the boot partition if a real targetdevice is used to prevent using the entire rest space for the boot image- fixed boot device detection for zipl on dasd devices with LVM- removed xencons boot option for domU creation in .xenconfig and from the bootloader kernel options (bnc #644138)- update and rebuild documentation- added support for setting up the boottimeout value prior to the default value in the config.xml section. the unit for the timeout value is seconds if grub is used as the boot loader and 1/10 seconds if syslinux is used ... - fixed fdasd input creation, wrong 't' command setup- call udevPending before checking /sys/bus/usb/devices- DB: Deleted kiwi-doc-intro.xml and moved content to kiwi-doc-workflow.xml - DB: Removed xinclude of kiwi-doc-intro.xml from kiwi-doc.xml- v4.61 released - rebuild documentation- fixed creation of install CD if syslinux is used. - fixed syslinux dosfs boot partition setup by adding the dosfstools package to the oemboot image descriptions- fixed OEMRepartStandard(). Additionally to the last commit, fixed the use of the suggested last cylinder for swap and recovery only if no oem-systemsize is set- fixed OEMRepartStandard() to use the suggested last cylinder for the last partition to become created instead of a fixed value. Also use the suggested last cylinder for the resize of the root partition if there is no other partition to become created and no oem-systemsize was specified- fixed boot device detection for s390 KVM target- fixed typo in DHCPCD option test- added support for partition alignment with fdisk. Thus support for 4k-sector size disks (logical 512 byte) with fdisk was added when using parted the -align option is used in any case though. In order to use the alignment when fdisk is used the oemconfig element oem-align-partition must be set to 'true' (bnc #637333)- v4.60 released - rebuild documentation- removed umount -a call to prevent a read-only remount (bnc #635159)- fixed searchGroupHardwareAddress() parameter list. mac_list must be a quoted string otherwise only the first entry is evaluated- use $main::Gzip for compressing the recovery tarball- moved hooks directory to kiwi-hooks - added and documented new hooks for oemboot preHWdetect,preImageDump,postImageDump- DB: Fixed typo in xsl:import: instead xsl-ns it should be xsl in the URI - DB: Added option --nonet for xmllint and xsltproc to avoid opening a network connection (should be done through XML catalogs)- fixed foreign lvm attribute setup, a value must be set - fixed setForeignTypeAttribute() to display the attribute value- added support for s390 DASD repartitioning- added 'rt' kernel-rt profile for isoboot, netboot, usbboot and vmxboot too (bnc #639217)- DB: rebuild documentation - DB: Enhanced manpages with more tags, unified spelling of KIWI, splitted para in separate paragraphs - DB: fixed callout lists for PDF creation- DB: added callout lists below pictures- fixed --bootstick creation. Don't dump an image file when writing to the stick. Fixed image type setup when usbboot is used- According to the documentation [1], parted uses SI prefixes when reporting sizes. Cylinder size is thus reported in 1000 Bytes, not 1024 Bytes. This caused partitions which were created using cylinder offsets to have a wrong size. This patch fixes that by correcting constants in offset calculation. It also removes the magic multiplication constant used when creating LVM volumes.- DB: added callout graphics- DB: fixed figure callout lists- DB: changed figure text type to Helvetica- DB: changed figures to use call-out list items- fixed check for fdasd partitioner- added 'rt' profile for oemboot pointing to kernel-rt (bnc #638512)- DB: added doc hint about the use of multiple DVD's- fixed disk increase per LVM volume (bnc #587361)- v4.59 released- DB: fixed Makefile to update Revision.txt from spec file version- DB: Added s > ... and similar entries- allow the qeth parameters to be set via the kernel commandline too for the s390/suse-SLE11-JeOS image. Detailed information about kernel parameters for this image can be found in the s390/suse-SLE11-JeOS/README- fixed mount() function to work with disk files too- if the --targetdevice option is set, create the image file by dumping bytes from the targetdevice. Also make sure the free space of the filesystem on the targetdevice is filled with zero bytes to gain a better compression result of the image file. --targetdevice is currently used for s390 DASD devices- fixed suseSetupProduct looking for a SUSE_ prefix too (bnc #637996)- rebuild documentation-DB: pxe: fixed some spelling and gramatical errors -DB: Enabled mini tocs for chapters and appendices -DB: Chapter and appendix titles are in the format "Number Title" now -DB: Removed "Appendix" from kiwi-doc-appendix.xml -DB: Added more comments in fo/docbook.xsl- fixed qeth setup in s390 template- rebuild documentation- DB: Reduced size of description.png image - DB: Converted informaltable to table, added xref - DB: Improved toc: Make chapters and appendices bold - DB: Activated numbering of sections - DB: Make s title consistent with HTML- removed unused root.tar.gz files in JeOS descriptions - added dasd_configure and qeth_configure to initrd - fixed check for kiwi_lvm variable - added functions isVirtioDevice and isDASDDevice to check for these devices. - added runPreinitServices to call scripts in /etc/init.d/kiwi/$service/*.sh - adapt s390 JeOS template to use preinit service scripts. This system should can be used to setup the hvc console for kvm as well as the network setup on a s390 guest system- moved documentation from LaTeX to DocBook, PDF and HTML provided- fixed s390 support for DASD devices. The main problem here is the detection of the disk. kiwi stores the busid value from the disk it used to create the image on in the kernel cmdline. We also had to add a function which set this disk online before we can access it via the device node- added hint about hvc console usage in README of s390 JeOS template- fixed fdasd input to use partition id=1 if LVM=8e was requested- pxe: added support for non-contiguous MAC/IP grouping (bnc #636692) - pxe: added documentation for MAC/IP grouping- fixed s390 vmxboot and oemboot boot images to contain the drivers/s390 kernel modules which are required for DASD and other s390 specific devices- DB: added make check target to docbook Makefile- added support for fdasd partitionier - fixed installation of zipl.conf when writing into real device- allow the kernelCheck function to reboot via kexec (bnc #636406)- DB: added missing dashes, resp. replaced with correct option dashes - DB: added set monospace.properties attribute for fo creation - DB: added common table id's- DB: added fop configuration for PDF font setup- allow boot disk creation to work from real devices too * setupBootDisk(),setupInstallCD and setupInstallStick() can operate on real disk devices too * changed setupBootStick to call setupBootDisk with the selected stick device as parameter * added a destructor function in KIWIBoot to cleanup all created tmp directories after the object is no longer in use. Prevent all clean* function to remove and tmp dir * cleanup KIWIBoot: removed cleanTmp function * cleanup KIWIBoot: moved kpartx calls into function * cleanup KIWIBoot: moved stick search into function * cleanup KIWIBoot: added checkLVMbind function- DB: added ref counter for pictures- DB: added IDs for all sect{1,2,3}, procedures, tables and figures- DB: added 'man' target to create man pages- DB: changed all : options from -bob to --bob - DB: added new stylesheet for html: xslt/html/docbook.xsl - DB: adapt Makefile according to new stylesheet - DB: update CSS from Andy - DB: fixed kiwi-man-*.xml: added id-Attribut, common name kiwi,Kiwi -> KIWI used, added s for filenames- DB: fixed some commandline parameter dashes - DB: added title page for PDF- DB: fixed man page template titles - DB: fixed Makefile, add kiwi-doc.xml to source files - DB: enabled index page creation- DB: update documentation, pictures and the DocBook README file- DB: fixed creation of picture files- use $SERVER server ip for NFS or NBD root server if not specified in NBDROOT/NFSROOT- added check for dhcpcd options. On sle10 we don't have the options -p or --noipv4ll- DB: added index page to docbook source - DB: fixed Makefile for building book- better Makefile for docbook book creation. Added pictures which are currently embedded as PNG's. This needs to be improved though- started conversion of the documentation from LaTeX to DocBook. This first version is still missing a few things, therefore the LaTeX source is still in place and preferred- make sure the lvm attribute is part of the .profile environment of the kiwi boot images. The value is exported as $kiwi_lvm. The searchVolumeGroup() function only operates if kiwi_lvm is set to true - moved the message text 'Searching for $VGROUP volume group' into the searchVolumeGroup() function and remove it from all boot image linuxrc's- LVM: added 1% spare space for each volume to store the metadata- prevent dd output on stderr when checking the boot sector- fixed check for boot sector inclusion- update documentation- copy license files into the system if found on one of the specified repos. The first repo which provides a license.tar.gz is the one which is used (bnc #633664)- added sync call before umounting the filesystems. Reasons for this workaround is the kernel problem in (bnc #15906)- don't call the grub binary from the image this could lead to problems when the grub binary is linked against a library which doesn't exist on the build machine. Therefore we use the grub binary installed on the build machine (kiwi requires grub for vmx and oem now) and bind mount the grub stage files in boot/grub from the image to the build machine while grub is called- v4.58 released- make use of the mkfs.$FS toolset instead of mk2fs with parameters This is more compatible and also prevents us from dealing with the changed meanings of some mk2fs parameters (bnc #635052)- fixed convert39to41.xsl to insert xenconfig and vmwareconfig sections also for iso image type- added parted as requirement for kiwi-desc-oem|vmxboot- fixed yum package check. the 'list available' command is not suitable for already installed packages. Therefore we use 'list all' which also works for already installed packages- changed iso image type for RHEL template to use clicfs instead of squashfs- added clicfs for RHEL 5.4 to kiwi rhel repo- fixed clicfs mount by not using losetup on the clicfs file before mounting it via the clicfs command. The clicfs command now get the clicfs file directly. Problem here was that with a loop clicfs is no longer able to read the size of the clicfs file which results in unexpected behavior (bnc #629543) - Related to that fix clicfs based caching now works stable- call dhcpcd with the option --noipv4ll to be able to check the return code of dhcpcd and to prevent the interface from an ip address if there was a DHCP timeout (bnc #634057)- added package/group check before yum is called to install packages/groups. This is done because there are yum versions which silently ignore missing items and proceed installing the rest.- fixed message about package installation when using ensconce The problem was that it prints always the same message about installing bootstrap packages even in non-chroot mode- don't check the return code of dhcpcd it's always zero. Therefore the check has been changed to check for the creation of the /var/lib/dhcpcd/dhcpcd-$PXE_IFACE.info file (bnc #634057)- added setup to templates. Use utc by default- allow setup of HWCLOCK in /etc/sysconfig/clock via the preferences element utc|localtime- RHEL: fixed URL quoting when building with yum - RHEL: added alternative search path for isolinux.bin- v4.57 released- fixed etc/motd for suse-11.3-JeOS. It was still saying this is a 11.2 system, cut&paste bug :-)- fixed suse-11.3/suse-min-gnome. Gnome is not working no session and desktop information was installed- don't use mkclicfs from image root tree. That will fail in any case where the image buildsystem libraries doesn't match the ones required by the mkclicfs binary inside the root tree- fixed suse-11.3/suse-min-gnome example. Some X11 packages where missing in order to boot up with a working X- fixed convert39to41.xsl schema conversion. The attributes for the conversion from to were missing- fixed shell exception handling after the move mount of devices. In that cases the tty devices are in /mnt/dev and therefore any shell exception failed because the setctsid call can't find the device. This is now fixed (bnc #608620)- fixed netboot building by providing atftp for SLE11 (bnc #632203)- update schema documentation- added support for selecting the default boot entry for a kiwi install image. The optional attribute called installboot can take the values 'install' for standard installation, 'failsafe-install' for installation with failsafe kernel parameters and 'harddisk' which is the default anyway if no installboot attribute was given (bnc #624228)- update documentation. XML elements and attributes are now listed in the index- update documentation. Better index page- update documentation- removed unused variable $device in mountSystem()- put the code which deactivates the filesystem check by resetting the mount counter into a function called resetMountCounter(). Let resetMountCounter also check the filesystem type to be able to distinguish different filesystem tools (bnc #627021)- update documentation, fixed Makefile and changed box frame layout into two horizintal lines- update documentation. Some style changes for code boxes which now allows also cut&paste- disable filesystem check for kiwi managed partitions using tune2fs -c -1 -i 0 $device (bnc #627021)- v4.56 released- fixed permissions and ownership setup of read-write part in split images. The problem here was that the read-write part is created as new directory structure belonging to root. Therefore it's required to update permissions and ownership from the original tree afterwards in the same as it's done for the read-only and temporary parts- make use of the --recursive feature of insserv and remove my own recursice insserv implementation which has to parse the insserv output and therefore always fail if that output changes (bnc #627480)- added acpi modules to kiwi's oemboot initrd. This is required mostly for fan control on laptops and therefore very important for the preload images running on laptops to prevent overheating of the devices- fixed hybrid persistent feature. The check for the bios protection was broken which caused the creation of the persistent write partition to be skipped. - added support for the kernel option wipecow=1. This option allows to wipe an eventually existing cow file on a hybrid iso image to start from scratch- changed suse-11.3/suse-live-stick example to use the hybrid iso technology- fixed coding style for driverupdate support in inst-sys mode also fixed DB comments in schema for driverupdate section- update documentation and man pages. some formal and consistency changes over the entire document- update documentation. Thanks to Thomas Schraitle- pxe: make sure the CONF contents are evaluated even if the image is downloaded to RAM only instead of a persistent device.- added missing xml object reference to foreign repo hash when building a split image- setup overlay mount method in create mode if the file $Create/kiwi-root.cache exists- update documentation. Thanks to Thomas for providing the patch- v4.55 released- fixed typo in config.xml search in overlay mount function- turn main::Prepare into an abspath- make sure the cache holds the correct copy of the base image and not the cache image XML- added arch information into caches- update documentation, patch by Thomas Schraitle- moved cache creation into functions initializeCache() selectCache() and createCache() - added meta information into root tree if cow cache is used. It's required to have the name of the cache clicfs available when running kiwi create on a root tree created with a clicfs based cache- improve caching by creating clicfs files from the single caches and mount them with a cow file for further operations.... still experimental- fixed xen/ec2 examples to clone services into runlevel 4 which is required by EC2- changed ec2 account number back to default- fixed boot image checksum creation in Makefile- EC2: changed the way how ec2 images are created. We now bundle the ami from a raw disk Xen image using the ec2 kernel. Along with this change the xenboot boot image became obsolete and was removed in a previous commit. Support for Xen is now only availabe via disk image and Xen must support PVgrub in order to boot it- EC2: update documentation about EC2 and Xen support- EC2: removed support for xenboot boot images, xen/ec2 is disk based now- EC2: removed suse-ec2-guest examples - EC2: added ec2Flavour into suse-xen-guest examples - EC2: changed suse-xen-guest examples image type to vmx with xen/ec2 kernel- fixed changelog creation tool. Don't include information about branch merges or commits which just copied a changelog entry for a previos commit into the kiwi.changes file. We also don't include the svn to git conversion information as I think it's not required- added xen guest example for 11.3- fixed respect write protection for Live medium (SD-card) bnc#623038- fixed MBR rewrite call in installBootLoader()- fixed check for foreign packages. The problem here was that the correct packages sections were checked for matching the profiles of the boot image but they should be checked against the profiles of the system image.- don't check the return value of the e2fsck call. If the filesystem check was forced for example by a wrong system clock the check runs successfully but the return value is not zero.- fixed license display problem when no localized license files exist but a license.txt file does- add the vm guest example to openSUSE 11.3- create the kiwi.changes file from the git log information- add the live stick example to openSUSE 11.3- write back masterBootID (MBR ID) to the master boot record after it has been changed by installBootLoader()- added suse-euca-cloud examples for 11.3- reverted last change: don't call root filesystem check for images (bnc #627021) this causes the fs to remount read-only on newer versions if suse; what a crappy reaction- fixed repartition code for fdisk (SLE10) (bnc #627807)- don't call root filesystem check for images (bnc #627021)- if a fixed xml size was set for a filesystem image we use if even if kiwi's calculation says it's too small. This allows users to create the image with less or no free space but also could cause the image to fail because of no space left on device. We don't use the fixed xml size if it's too small for a virtual disk based image though because this could cause the image to be created successfully but then failed on boot which is a bad user experience (bnc #627031)- v4.54 released- fixed evaluation of PARTED_... variables (bnc #627593)- added entire usb stack to initrd for SLE11 oemboot (bnc #627439)- v4.53 released- again fixed the check for specific parted versions. I now changed it to directly check for the available options in parted instead of the parted version number- when creating a new cpio image make sure an eventually existing old version of .splash.gz will be removed- put patterns into image package section instead of bootstrap I discovered strange errors with older zypper versions when building newer images- v4.52 released- added log information about used boot-theme- clarify user creation and group association documentation - some alpha ordering inside the schema- support add-pattern option in upgrade mode too- add changelog entry for last commit - recreate documentation- again fixed parted version setup- again fixed PARTED_VER setup. older version strings looks different than the new ones. We had to standardize those too- fixed PARTED_VER setup and tests. If the parted version is below or equal 1.8.8 we switch to fdisk. This applies for sle10 where parted doesn't have some options which we require- added support for image caching. With this feature you can provide a cache directory along with the option --cache. kiwi in prepare step looks into the directory if it finds a cache serving as the base-root for the system image. If it can't find one it creates caches based on the patterns used in the image description which speeds up subsequent prepare calls for this and other images- fixed solvable cache if only one solvable is created it was removed and not cached- fixed use of uninitialized value for $dir- fixed suse-11.3/suse-min-gnome example, added missing icewm and a terminal :)- don't create splash initrd if it already exists- fixed use of uninitialized value for $overlay- fixed SLE10 boot images using gettext-runtime. This package doesn't exist there, it was gettext only (bnc #625392)- accidently removed an important return statement in setupBootPartition- v4.51 released- fixed setupBootPartition() to return with a bootid export in _any_ case. Default bootid is 1 (bnc #625379)- v4.50 released- fixed URL quoting, we have to distinguish the quoting for local path URL's and network protocol URL's- fixed xenconfig creation for vmx if no format was set- fixed oem-partition-install for LVM images- fixed use of uninitialized value and test -z usage in bash code- fixed locale validation and documentation as well as some template examples provided by kiwi. The locale value in kiwi is always a UTF-8 locale therefore it's not allowed to add the encoding type to the locale string. We also support the xx_XX locale style only which is now all checked by the schema (bnc #620789)- fixed documentation about the evaluation of the locale information- fixed locale setup for some examples- added 11.3 as migration target- fixed suse-11.3/suse-pxe-client/config.xml- fixed changelog chronology- fixed oem recovery for LVM based images. It's required to backup the LVM metadata in order to restore it- added main::isize function to replace the use of the -s operator. This is done because of SUSE Studio which maps a file to a block special under certain circumstances which causes -s to not work anymore- v4.49 released- install bootloader for vmx and usb after initial deployment to make sure reboot works- added suport for the btrfs filesystem (bnc #596205)Finally added driverupdate stuff to schema- update ppc netboot image (copy of x86 version)- fixed Makefile boot image md5 creation time- v4.48 released- fixed recovery cleanup code - fixed umountSystem call to check proc/mounts and umount a list of possible system mount paths in the right order - netboot: fixed creation of read-write partition - netboot: fixed boot partition setup, IFS restore required - netboot: imageDiskDevice was not set but used- v4.47 released- fixed parted sector init if the disk has no partitions we need to set startSectors to 1- v4.46 released- fixed kernelList and xenServer functions: * xenServer checks via kernel systemMap and kiwi_xendomain if a xen server bootloader setup is required * kernelList is fixed to store the running kernel as first entry in the kernel list- do not fail when image files are symlinks to a device- fixed race condition resulting at times in message of not finding the MBR and other times not finding the CD drive.- put the information about the xen domain setup into the initrd as variable kiwi_xendomain- remove unneeded initrd.vmx and linux.vmx files _before_ calling mkinitrd. This saves space to not run into a space problem on the boot partition (bnc #621859)- usb attribute in vmwareconfig doesn't exist anymore with the new machine section. usb is always present for vmware fixed xslt stylesheet for this case- v4.45 released- recovery tarball: tar is intelligent enough to find hard link references. This causes the archive to be smaller. But when kiwi installs the root tree into the image all hard link references will solve into a new inode. According to this the recreation of the tarball in combination with an inplace setup will always be bigger than the reference tarball from the root tree and this causes the recovery partition and/or the free space inside the root partition to be too small. I fixed this with the following tar option: --hard-dereference- fixed convert38to39.xsl stylesheet- fixed use of uninitialized value in fs tool check- fixed evaluation of bool oem-inplace-recovery value- moved in-place recovery file creation into suse-dump directly after the install verification (bnc #620777)- don't put the recovery meta information into the recovery tarball when creating them dynamically- clean up setupFirstBootYaST() function- fixed build for s390- improved s390 template- add some sanity checks- fixed loop cleanup after zipl install- operate on loop mounted boot partition when writing zipl- fixed zipl.conf creation- zipl requires block device to operate- fixed zipl.conf creation- fixed zipl.conf creation- leave tmpdir in case of an error while writing the bootloader- added zipl install into disk image file code- fixed build- don't let it diverge too much between x86 and s390 suse-preinit- don't let it diverge too much between ix86 and s390 linuxrc code- fixed zipl.conf, typo when writing image line- fixed zipl.conf, forgot to add image- fixed zipl.conf parameters setup- fixed zipl.conf creation (invalid chars [], using () instead)- zipl doesn't read the configuration from a filesystem so any change triggers a new bootloader install command- fixed kernel search for s390 (image-...)- fill setupBootLoaderS390() with live- added kernel package to s390 JeOS- fixed product name- simplify s390 JeOS- added README files in arch directories- added support for the creation of the zipl.conf file the installation of zipl into the MBR from a loop file is still an open issue. We need to talk to IBM here first - restructure source tree a bit. make templates and repos architecture dependent because of the s390 implementations- make sure virtio_blk is loaded- match MBR id for little and big endian machines- don't exit with an error if 'zypper rm' can't find the package - check for profiles when searching for foreign packages also search in type=image and type=bootstrap package sections- removed SLE10 target for s390, we are starting with SLE11 SP1 - added support for s390 kernel extraction from initrd (image file) - fixed vmxboot/oemboot boot image descriptions for s390 - added kiwi-tools for s390/s390x- fix syntax error from my last commit :/- v4.44 released- fixed this path evaluation (bnc #619482)- fixed use of uninitialized iso object reference- fixed repartition problem with new and old parted. The code has been changed in a way that it uses a sector based start value and a cylinder based end value- call conversion module automatically but only if a format was set in config.xml. Exception: the xen image type, which requires a machine configuration but without a format conversionMake volume id labels nicer on coolos request: * Always strip -Media * Do not add dots when stripping * Do add media number .XXX suffix only when multiple medias exist- added volume label for recovery partition (bnc #618276)- use format from xml if specified and not set on the commandline for the conversion into another image format- fixed minor ovf creation bugs. Note old versions of ovftool will not work with this version of kiwi because VMware changed the option set of their own tool completely- update image descriptions via xslt- added xslt stylesheet to convert from schema v4.6 to v4.7 the conversion moves the vmwareconfig and xenconfig sections into the common machine sections and also changes format="iso" into installiso="true" and format="usb" into installstick="true"- update documentation according to the new KIWIImageFormat module and the changes in the type and VM configuration XML setup- Cleanup formats in kiwi: * create new KIWIImageFormat.pm module for the conversion into different image formats like vmdk,ovf and friends. Also added function for creating the machine configuration into this new module * create common XML specification for vmware|xen config starting with * added new option --convert to kiwi. * recursively call kiwi with $main::Convert set to convert into the specified format and/or configuration * added bool attributes installcd and installstick replacing the old format="iso" and format="usb" setup- moved the XML validation ahead of the first data extraction - changed the way validation errors are reported. If the xml file was converted via XSL the error will be reported against the converted file. This makes the error reporting more meaningful as otherwise validation errors are reported that are due to the use of an older schema version. - fixed typo in convert45to46.xsl. Do not swallow attributes on packages of the vmware section - Thanks to Robert who did the last three ones, great work :)- v4.43 released- fixed copy of root tree into final image. We used cp -a $source/* $dest which did not match the dot files in $source/.* Therefore I changed this to use a tar based copy- added oem-inplace-recovery option which allows creation of the recovery tarball at first deployment instead of creating the tarball and store it inside the image- add bugid to changelog entry- update the min gnome example to 11.3- use cylinder based alignment with new parted version 2.2.x. This fixes the oem repartition code for systems which uses parted >= 2.2.x build on a parted 1.9.x build system. Also removed unused functions: partedGetSectors and partedStartCylinder- fixed attribute validation, space and / is not allowed for this attribute- started support for s390 imaging: * zipl support in kiwi. This is still work in progress only the skeleton at the required code points has been added. * adapted the JeOS sle11 template to provided a profile for x86 and s390 packages * also added vmxboot and oemboot bootimages to be build The code there will work as initrd for an s390 guest within kvm- added alpha-ordering patch from Robert- added SLE11 target for migration- strict and warning should be loaded first- fixed broken patch :(- fixed use of global file handles- changed spec file requirement: require virt-utils for distro versions >= 11.3- cleaned up split image code: * unneeded directory checks * multiple functions calls where one would be ok- migration: added version to cache file- fixed split section evaluation (bnc #615121)- exit kiwi directly if the possible question to create the destination directory was canceled by the user- v4.42 released- avoid a Perl runtime error message from being printed if the XML file parsing fails. - changed findExec to return undef if the executable cannot be found. If as previously the execName is returned the caller has no way to differentiate whether or not the desired executable actually exists on the system.- migration: * fixed distro detection * added support for harware dependent package information- redesigned and restructure the kiwi migration module we were working in a small workgroup this week to establish a new version of the migration module. Thanks to everybody in my team.- added distro tags to orphant package list- allow plaindir repo for solvable creation- migration: * fixed deny list, service links must stay * apply deny links on overlay tree- fixed attr access- fixed file/directory search for migration- fixed Makefile - don't follow symlinks to directories in migration- fixed spec file to provide /var/cache/kiwi - fixed migration to be faster in searching non packaged files / directories- migration: - fixed filesystem scan - copy /etc entirely to root/ - don't setup services - use product file to add system repositoryDriverUpdateDisk support- Remove some code duplication by using a new getDefaultBaseRoot() function- Remove some code duplication by using a new createDirInteractive() function- v4.41 released- added oem-unattended element which allows unattended installation if possible- use dialog program to show dump reboot message- added oem-dumphalt element which reboots the system after the image was dumped (installed) on the target device. A message appears and the system waits for a key event before reboot- reduce the scope of the eval around the config.xml file parsing. The only operation that may fail with an exception is the parsing, while accessing the resulting document does not generate exceptions, thus the eval (exception handling) should only enclose the code that actually may trigger an exception - improve the XML validation error reporting if jing is installed on the system- also search for pattern file name in repomd.xml- fixed repo-patterns info module- add selinux hint for RHEL example template- fixed README for rhel image creation- v4.40 released- fixed luks + lvm boot if no re-partition code is called- update documentation, added kiwirc manual page. Fixed manual page creation to contain correct version info- check that the specified log server port is numeric in nature- setup xencons only for domU setup (bnc #561635)- v4.39 released- removed dbsulock from kiwi, hal is deprecated- fixed CDMountOption() to use blkid type check (bnc #610649)- use vmxboot linuxrc for usbboot too, make sure --bootstick deployment does a cleanup of the write partition if used- changed ovtool call, they don't understand -oq but -o -q- use "kernel chain" syntax for syslinux chain loader- don't touch modules in updates and weak-updates (bnc #609879)- v4.38 released- added findExec() function to check for tools - fixed unneeded kpartx call in installBootLoader- check if the rootEFD is defined before attempting to write to the file handle- fixed usb stick creation for sys|extlinux- make fbiterm work in vmx images too - fixed setup of initrd/kernel links, because of the change from a link to a bind mount we can now make that code simpler- make sure boot image has enough space- fixed boot configuration if overlay filesystem is used- added support for extlinux based recovery (bnc #606651) - make recovery work with separate boot partition - use bind mount instead of link to boot partitionVery minor cleanups to the imagewriter- fixed install cd boot parameters if ext|syslinux is used - fixed ext|syslinux setup in initrd code (KIWILinuxRC.sh)- changed ovftool options according to latest version- use isolinux for install CD's if sys|extlinux was requested as bootloader for an oem image plus install media (bnc #606651) - fixed clicfs resize operation. The command is now based on a 512 byte sector size value instead of a 4k filesystem block size value which might be wrong depending on the size of the filesystem (bnc #604646)- v4.37 released- fixes endless building problem if function suseInsertService() is calling in config.sh and system/chroot contains a broken /etc/init.d/ script. (bnc #605981)- oem: fixed creation of clicfs over LVM images - oem: fixed home device setup for LVM - oem: fixed fstab setup for LVHome- update documentation and schema documentation due to last change (dmsquash support removed)- fixed setLVMDeviceMap() function. The contents of $result{dmapper} were wrong if the device was a loop destination- removed support for dmsquash filesystem. This implementation was replaced by clicfs. dmsquash was a combination of a squashfs filesystem together with a device mapper snapshot as copy-on-write part. There was no way to properly react if we run out of cow space which also makes this feature more or less useles in a production environment- fixed size check for repart operation - make sure home has a min size of 500 MB if home partition was requested- removed plusSuggested attribute, update documentation and added sort patch by Robert- rewrote the oem partition code for better maintenance and to support syslinux/extlinux bootloader (bnc #606651)- update documentation- fixed packages type value "net" which should be pxe - added documentation update from Robert- fixed typo in comment- use tar command to copy overlay files which is more error prune than the cp command (bnc #476117)- fix for Bug 604705 - kiwi overwrites /etc/sysconfig/firstboot- fixed replace package handling and update JeOS templates accordingly. This allows to bind multiple package actions bound to one package- added support for type specific package sections . Along with this change a new Schema version 4.6 was introduced which automatically converts the type="vmware" section into a type="vmx" section- added support for extlinux bootloader for vmx and usbboot. support for extlinux and oemboot will follow later. The repartition code of the oem images causes a more complex implementation for sys|extlinux.- check RPM version of autoyast- added support for displayname for vmx type (bnc #605939)- v4.36 released- fixed in place search field text- fixed some typo in migration js- activate javascript in migration report- added search field for unpackaged file list on the generated migration report page- update schema documentation, schema doc hint fix- better changelog entry for last fix- revert last change to Dialog function and fixed luksOpen function to use the runInteractive() method for dialogs with input fields- update translations from suse svn- fixed Dialog function work with input fields- fixed probeFileSystem function for luks detection. blkid returned crypto_LUKS which was missing in the case section- v4.35 released- disabled autoyastClone() temporarly, we need to find a way to call that only on >= 11.3 systems- update migration css code- fixed cleanup of xmlused/xmlorig files- added .info file for cached solvables - fixed solvable pattern creation. It's required to lookup susetags even if there is a repodata meta data information to be able to create a full featured solvable including all pattern names- migration changes: * automatically copy the packaged but modified files into the overlay section and don't put them into the report * create a HTML file list for the unpackaged files to browse through and update the text.- deactivate splash screen for initial deployment in kiwi OEM boot images (bnc #600710)- start sshd for SLE10 JeOS- fixed rpmLibs() function, need ldconfig after cleanup- some code cleanup in KIWIImage.pm, unused variables - call mkclicfs from the installed root tree instead of the build system to prevent version conflicts. If no clicfs is installed by the image description a warning message is displayed and the build system mkclicfs is used as before (bnc #604646)- fixed min inode count when creating the virtual disk from a root directory instead of a root image file- set fixed journal size to 12 MB, fixed size calculation in KIWIBoot.pm which did not take the journal size into account (bnc #587361)- umountSystemFilesystems at the end of isoboot pre-init- v4.34 released- fixed old live iso type (no flags set) to work again. The problem was that we prevent --follow-symlinks in this mode but then we also have to copy the fixed read-write part as file to the iso structure instead of linking it. This fix is related to (bnc #599712)- typo in changelog- removed check for utimer program, it's not a mandatory requirement for the system to be able to boot correctly - fixed mkinitrd call, check if the option -B exists and don't pass it if it doesn't first (bnc #603338)- beautify migration report and fixed html code- fixed warning message if URL can't be resolved - fixed space problem when setting up boot partition for images which requires a separate boot partition which is the case for filesystems like clicfs. This caused a wrong copy of the initrd and prevents the system from being able to reboot- package scripts change: use File::lchown qw( lutimes ); for changing the a|mtime of the symlinks inside the source tarball. This means all people who use "make build" from the kiwi source need to make sure they have the File::lchown module installed from CPAN- preserve timestamps of source tarballs if not change has happened. I'm still searching for a way to preserve timestamps of symlinks (cp -a has a bug and does not preserve it)- fixed pxeSwapDevice to create the correct device node name using ddn function- v4.33 released- support partition type 8e (V) in pxePartitionInput()- fixed build- split up kiwi source into: source, repository and documentation tarballs to be more OBS friendly (bnc #601908)- removed netboot specific partition code and replace it by the common partition functions used for oem and other tasks, related to (bnc #601890)- added support for Xen dom0 over netboot (bnc #601890)Add cciss driver: make blade center with HP smart array controller supported- added cyrus-sasl to netboot images (bnc #600951)- moved the PARTITIONER change for hybrid into the CDMount function- fixed createHybridPersistent: wait for new storage device before creating a filesystem. Also make sure imageDiskDevice is set before calling callPartitioner()- added parted to isoboot images this is required for the hybrid persistent feature. also increased min space for clicfs embedded ext3 filesystem. Also fixed the createHybridPersistent() function to use fdisk instead of parted. The problem here is that parted doesn't accept the partitiont able written by the isohybrid tool.- v4.32 released- fixed repartition code for overlay systems (clicfs)- fixed clicboot contents (kernel, initrd was missing)- fixed repartition code for overlay systems (clicfs)- fixed satplugin hash creation - sort package list in migration mode- support new createrepo repomd.xml metadata information. kiwi now reads the repomd.xml if it exists and parses the primary data section in order to get all metadata file names- don't create empty /var/lib/YaST2 directory during migration- don't create install.inf and runme_at_boot in migration code we are creating the config-yast-autoyast.xml file and during kiwi prepare all required files to start autoyast are created by KIWIConfigure.pm- fixed skip package detection in migration- more file checks in migration autoyast clone code- added file check before moving- fixed regexp- automatically skip the gpg-pubkey packages during migration- removed kiwi's own pattern solving module. The satsolver approach is the preferred solution to implement this- added alarm timer for HTTP requests. If a URL can't be resolved due to problems on the remote side the request will be canceled after 5 seconds- v4.31 released- removed atftp from SLED oem|netboot (bnc #598899)- better changelog message for last fix- use -t instead of -T for mke2fs- update schema docs- added support for OEM partition based install (bnc #597679)use gfxboot.c32 if gfxboot.com does not exist Signed-off-by: Steffen Winterfeldt - fixed function dn(), added function nd() dn -> disk device name from device node nd -> device node number from device node- removed SAP related code from boot images. This was only for a proof of concept and never lead to anything usefulfix product building for current factory- v4.30 released- fixed kiwi -l output- changed info module to print XML output- fixed info module patterns selection - fixed info module repo-patterns output (prevent empty lines)- fixed the --select types info module - fixed the info module to respect the XML profile setup- nicer info output- added package version and architecture information when requesting the solved packages list via --info- remove 0 in partition ID detection- fixed partedGetPartitionID() function to return correct ID- added parted to vmxboot images- reverted last change in default split section- fixed split boot, cleanImage is not allowed to umount the required but non busy symlinked read-write part- cleaned up unused variables in KIWIImage.pm- enhanced KIWILinuxRC create/resize filesystem functions to be able to return only the command without actually invoking it- version v4.29- speedup prepare step by not removing the repository when the chroot switch happens- restart utimer in pre-init stage, also put the time information into /dev which is a bind mounted location- Don't update bootloader when calling mkinitrd. The bootloader setup in the first place was done by kiwi (bnc #595073)- activate verbose mode for --info modulefix skipping of not wanted release packages, because they are not on media. (#594808)- fixed info module to work with loop media like iso://- v4.28 - fixed typo in repo prio message- make ppc netboot suse-linuxrc the same as for ix86- removed SAP related code. This was only for a proof of concept and never lead to anything useful- added common functions resizeFilesystem() and createFilesystem() in KIWILinuxRC.sh- added suse-11.3 boot and image templates. Also removed suse-11.0 boot and image templates - cleaned up spec file, removed prebuild code and package which is not used by anybody- fixed bootnext boot from harddrive feature (bnc #583212)- forgot to add probeFilesystem bevore restoring home filesystem because of this only the default action (ext3) applies- also use the root filesystem type for the optional home filesystem while in a OEM deployment process (bnc #594202) - make the recovery filesystem an ext2 filesystem - fixed createPartedInput() to always have a partition ID- added missing "done" status- ovftool will create junks of data according to the image size to allow better download performance. Because of this I changed the call to create new files in a separate directory- added iputils package to 11.2 JeOS- v4.27 - fixed --build option, glob check did not work (bnc #591889)- leave /mnt directory before calling umountSystem - fixed bc division by zero- leave libnss_dns inside the boot images for name resolution - don't print usage message for inst-source module, works suse internally only at the moment- fixed cloud examples, use rsyslog in 11.2 example- use bootnext 'boot from hard disk' for ISO's too (bnc #583212)- added uncompressed tar size information for OEM recovery- update changelog - cleanup the yast clone config code a bit* autoyast cloning code added to migration- update XML catalog and format of suse-euca-cloud example- switched to parted as default partition tool- removed destdir check for migration- force base destination directory for image migration and update documenation about migration- added /mnt/var/cache/recovery/oem-trigger to be written after the kiwi recover/restore process in order to allow scripts to do something on boot of the recovered/restored system (bnc #586529)- v4.25 - added bootnext program which implements a small boot loader needed for the 'boot from hard disk' menu entry on usb media. It basically loads the mbr from the first drive that is not the usb stick. Thanks to Steffen Winterfeldt who implemented this (bnc #583212)Fixing the imagewriter desktop file and spec fileAdd a helpful message when there are no USB keys present- added example to create cloud infrastructure images based on Eucalyptus- fixed error which is triggered if the overlay root directory of the image description exists but is empty.- added dialog based OEM install verification UI- fixed runInteractive() exit code handling- added "Select disk for installation" to getText (bnc #589667)- only recommend squashfs don't require it- added setterm -powersave off -blank 0 for boot images- fixed udevKill in pre-init by udevSystemStop()- fixed pattern/product evaluation- set /tmp to be a write path in KIWISplit.txt- fixed build- added support for RHEL 5.4 in kiwi. This includes: * custom rhel-repo with hwinfo, gfxboot and friends * support for yum package manager backend * JeOS template for RHEL 5.4 * isoboot boot image description for RHEL 5.4 * NOTE: only the iso type has been implemented so far- fixed long startup time because of ldconfig running when KIWILinuxRC is sourced from the shell - don't use killproc,killall inside the boot images. All procs are written to /iprocs and are handled when required- added Xen dom0 hypervisor check if domain="dom0" is set - fixed Xen dom0 bootloader configuration- fixed --build option in kiwi- fixed getSize, +5M journal size - fixed install stick free space setup- leave libresolv inside the initrd to allow name resolution - fixed default pxeboot file, use kiwiserver- v4.23 - fixed getSize() function taking journal size into account - fixed getSize() function round values not truncate them- fixed typo in documentation- fixed quoting in baseUpdateSysConfig (bnc #587132) - turn destdir into absolute path directly after the option parser (bnc #584200)- remove empty dirs in rpmLibs ("clean") (bnc #536256)- allow LWP proxy setting from environment (bnc #586655)- support architectures for products, which are not specified in fallback lists (fixes glibc.i686 case) Conflicts: rpm/kiwi.changesAdding two new command flags: -l, which lists USB devices -k, which sets the imagewriter in "kiosk mode" (it won't list drives > 200GB)- v4.22 - fixed missing xen package in oemboot/suse-11.2 boot image description (bnc #561635)use fallback handling to LABEL for readme.beta string- removed nsswitch conf from being copied before the packagemanager is called the first time. that was a bad idea. Imagine you have configured ldap for passwd or something. It should use nsswitch.conf coming with the glibc installation in the chroot.- fixed root tree creation build inconsistencies because of missing libraries at the beginning of the root tree creation. The first fix for this bug did not work in mixed arch environments (bnc #536256)* make them bootable and yast working again, fixing linked packages for all archschange string in README.BETA to "SUMMARY + BETA_VERSION"- added better log information about size calculation* fix multiarch medias, when using metapackages with onlyarch * sync arch fallback handling between repo and meta packages- v4.21 - ext4 (currently) should be mounted with 'nodelalloc'; else we might run out of space unexpectedly...- added 'boot from harddrive' as default menu selection for the installation images (CD+USB). Thus remove the request to remove the media after the image dump to the hard drive is complete. (bnc #583212)- rebuild documentation- renamed Xen kernel profile 'nex' to 'xenk'. The original name causes confusion to some people. Also removed xen support from netboot (pxe) images and adapted JeOS image descriptions.* fixed a quoting bug (bnc#584651)- support arch= statements for metapackages correctly - make missing metapackage for a required arch a warning (we missuse onlyarch atm)- allow empty lvmvolumes section, if one only wants to set the volume group name but no volumes except for root- some message cosmetics :-)- more visible message to check the migration report file- update migration table, sources are taken from zypper- v4.20 - migration: fixed operating system detection - fixed getLVMGroupName() not accessing an undefined value - fixed LVM cleanup code- use $FSInodeSize instead of fixed value- add spare 1.1 for vmsize- fixed getSize() function. The size of the inodes are part of the size calculation now- added trang as a build requirement to the spec - tighten up the XML checking a bit thus that some errors in the XML are detected at validation rather than later during processing. - cleanup: remove the matching of "yes" as a supported value for boolean types- allow profiled repository sections- don't log commands used to create the XML diff in the log file- v4.19 - added a JFYI headline in the log file and print only relevant information in the log excerpt in case of errors. This increases the chance to see the error (bnc #583125)redo my last commit, still fail if metapackage was not found for any architecure- missing metapackages are no error anymore, since we need fallback to noarch (but we still warn) - remove obsolete codeKIWICollect: fix links for packages below /boot (bnc#579936) (done by Rudi)- fixed documentation example section- fixed spec file noarch, allowed with > 11.2 only- migration: update schema version to 4.4 - migration: update skip list- migration: exclude lock files- removed imagewriter from kiwi packages, it is provided as separate package now maintained by mbarringer@novell.com- migration: fixed report messages, better English :)- migration: use pre tag to display zypper solutions- migration: * added detection for packages installed multiple times * improvement report explanations- v4.18 - fixed display of EULA messagesFixing bug with non-hybrid ISO files- fixed duplicate kernel options- fixed use of kiwi_cmdline in initrd- removed commandline from pxedeploy section. kernel commandline parameters are set by the kernelcmdline attribute now (bnc #577720). Update schema version to 4.4 and add an XSLT to remove commandline when requiredBumping the imagewriter versionSet the .desktop file for the imagewriter correctlyAdd icons for the imagewriterCleaning the imagewriter up and also adding an "about" boxAdd COPYING file to comply with GPL- fixed function comments in runInteractive()- added support for additional kernel commandline options specified as kernelcmdline attribute (bnc #577720)Increase the imagewriter versionDetect non-hybrid ISOsadd changelog entry for last commit Conflicts: rpm/kiwi.changesfix arch condition handling for meta package collection- testAdded USB key insertion/removal detection- added support for additional kernel commandline options specified in the new section (bnc #577720)- don't remove ldap and sasl in oemboot it's required for curl based downloads- moved lvmgroup attribute into the lvmvolumes section- v4.17 - update documentation - changed migration to use root path directly and don't mount the root device before. As we can't mount it read-only because it's already mounted read-write I decided to prevent the mount at all and exclude any remote mounted location by searching through /proc/mounts- don't remove libidn it's required for curl based downloads- v4.17 - fixed xen building with empty or no type=xen packagesdo not fail on creating directory which might be there already. (fixes openSUSE:Factory ftp tree generation)runtime fix from Rudi to process Eula.txt correctly without errordo not die on not used release package- fixed cleanup of hosts file (bnc #579852)- update migration chapter- v4.16 - make setupSplash() to operate in a temp dir (bnc #579134)- fixed name resolution inside chroot if curl backend is used zypper uses libcurl for ftp transfers (bnc #578687)Adding a TODO file for the imagewriter- migration: fixed file find function - migration: fixed broken link search / removal- migration: added zypper repos to config.sh if not localMinor imagewriter text changes- update documentation- migration: fixed version lookup - migration: fixed report creation- fixed typo- fixed repo metadata download, cleanMount was called too early - fixed error handling in report file creation- enable noarch subpackages- update documentation- added bug ID- handle reboot request only if we are not in recovery mode- moved EC2 options into a new ec2config section (bnc #577883)- v4.15 - fixed default split section usage for iso type- added XSL transformation for latest XML changes Thanks to Robert for doing this- prevent double / in activateImage- v4.14 - update documentation due to latest XML changes - don't probeFileSystem if FSTYPE is nfs - mounting sys devices with -o nolock doesn't make much sense - use rpcbind as an alternative to portmap- update documentation- removed unneded xenconfig information from templates if dom0 setup is used- fixed migration mount setup and clean code allow zypper types dvd:// and iso:// to be used- fixed templates, Xen based OEM image should be a dom0 - Xen dom0 images doesn't require a xenconfig file- fixed migration mount setup and clean code- v4.13 - prevent XML pretty printer from swallowing commentsenforce the "print" logging again for KIWICollect for significant speedup. However, we should rework the KIWICollect logging, but using KIWILog module would require significant speedup there.- fixed build- allow image="product" for inst-source module - fixed NBD setup, make swap and RW an option- don't ask questions on oemboot pxe based install- added support for OEM installation via PXE. To setup your PXE boot server do the following: 1) create an OEM install ISO (format="iso") 2) loop mount the created .iso file to /mnt and copy the following files to the PXE boot server: * copy /mnt/boot/initrd => /srv/tftpboot/boot * copy /mnt/boot/linux => /srv/tftpboot/boot * copy /mnt/image.gz => /srv/tftpboot/image * copy /mnt/image.gz.md5 => /srv/tftpboot/image 3) set the kernel commandline parameter pxe=1 via the append line in your PXE configuration. Alternatively the image can be stored on a FTP,HTTP server specified via the kiwiserver and kiwiservertype append information- added bug ID- v4.12 - don't move overlay mounts to real-root if NFS-root is used additionally prevent the ROOT_FSCK in case of NFS-root - allow NFSROOT and NBDROOT to be overlayed with a remote read-write location- fixed incorrect handling of unit="G" values (bnc #574660)- v4.11 - added kernel/initrd update hotfix mechanism based on kexec It is possible to put the kernel file named linux.kexec and the initrd file named initrd.kexec on the first partition of a USB stick. If you plugin the stick and boot with the kernel option hotfix=1 it allows you to replace the existing kernel and initrd with the one on the stick - increased wait time for dhcp lease file up to 20sec (bnc #575561)create 11.3 fork, which is current factory. We basically need this to destinguish between kiwi 4.1 and 3.74 to write correct kiwi xml again.- update schema documentation- fixed inode calculation (bnc #574660)- fixed backtrace de-/activation functions- make XSL diff more readable- set XML element only if it's not already set with that value - better XML diff output in logfile- fixed build- v4.10 - applied XML changes with the following effects * the image type is no longer an element content but an attribute called image="type" inside the type element * all oem elements are now part of the new oemconfig section * the sections oemconfig,pxedeploy,split,vmwareconfig,xenconfig,lvmvolumes are now type specific and have to be specified inside a type * migration code has been adapted to 4.1 schema * documentation has been adapted to 4.1 schema - added clicfs as spec file requirement (bnc #573357)- added pretty xsl- fixed boot type check- print a jing helper message if schema validation failed- update to XML version 4.1 - update documentation- update migration XML creation- fixed XML parsing - fixed XML diff- fixed XML parsing- fixed XML parsing- fixed XML parsing- fixed XML parsing- fixed XML parsing- changed parser function according to new XML layout- first start of better XML description moving pxedeploy split vmwareconfig xenconfig lvmvolumes into type adding new oemconfig sectionAdded missing requires for sysopen constants- fixed missing ddn call to solve the device node in vmxboot too (bnc #571948)- v3.95 - fixed missing ddn call to solve the device node (bnc #571948)- removes sax2 and let the 11.2 based example use the X11 auto configuration feature in the suse-min-gnome example image descriptionIntegrated KIWIIsoLinux-gen-s390-cd-kernel.pl into KIWIIsoLinux.pm- v3.94 - fixed baselibs setup for 64bit image builds - fixed split grub setup for install CD/Stick - fixed split section parsing, remove trailing slash if no information follows- use -F for mke2fs calls- don't let xsltproc write into fixed /tmp location (bnc #571558) - prevent USB device scan for pxe boot images (bnc #570961)- added config function to disable Ctrl-Alt-Del in inittab- added bug number- allow AOEROOT to contain the read-write device- v3.93 - moved package deletion into own function and adapt the examples. remove --noscripts for deleting packages this could cause files to stay in the system which has a bad impact core utilities like mkinitrd. If for example busybox is uninstalled without calling the postscript the mkinitrd setup links will stay as broken links and cause mkinitrd to stop working (bnc #570948)- update docs- v3.92 - fixed typo in getPXEDeployTimeout() - forbid / to be specified in lvmvolumes (bnc #570398) - allow absolute size value for lvm volumes (bnc #570396)fix writing of RELEASE line in content file- more KIWIURL::quote() fixes (bnc #561855)- create /srv/tftpboot/pxelinux.cfg/default only if not exist- rebuild docs- don't set disk cmdline parameter for pxe local grub setupAdded autobuild script for generationg s390 cd kernel- fixed clicfs usage in combination with pxe image type- Fixed s390 boot- partially reverted last patch - fixed md5 file creation for clicfs images- v3.91 - fixed md5 file creation for clicfs images when used with PXE - fixed validateSize() to take care for zblocks- added first version of report html creation - again fixed KIWIURL::quote(). perl file checks doesn't allow quoted items (bnc #561855)do not error out - there are architectures without gfxboot.cfg (basically all but pcs)- fixed use of uninitialized value (bnc #569191)- v3.90 - changed default type to oem for migration result- fixed handling of oem-reboot request. preinit needs to run before this request is processed (bnc #563864)- migration: allow skipping parts of the process- fixed quoting when importing kernel cmdline (bnc #536309)- migration: added modified files tree- fixed percentage counter- migration: added modified files information- migration: fixed xml creation- migration: added a todo- migration performance fixes- added udevPending() to waitFor* functions (bnc #547862)- migration: fixed version detection- fixed cache creationmigration: * added cache file * some performance tweaks- migration: fixed path setup- fixed option setup for rpm -Va- migration: create overlay root tree as hard linked list- some work on the migration front [still WIP]: * changed to report -> perform system, fixed solvable creation and provide better information about package and pattern conflicts. Changed system to use the zypper defined repos and product information for the migration- fixed use of quiet variable- use default inode count for lvmparts (bnc #567580)- v3.89 - fixed dirPath() function, related to (bnc #561855) - fixed KIWIURL::quote() for special '$' char (bnc #561855)fixed usage of string relational operator in numerical contextsync more parameters for the EFI caselimit volume id's to 32bytes or genisoimage abortsfixed efi boot- v3.88 - removed adaptec-firmware from SLED boot images. The package does not exist on SLED (bnc #562224)- v3.87 - added support for plaintext passwords- fixed user cancel exception text (bnc #557100)- v3.86 - call scripts in C env for LC_ALL and LANG (bnc #558693) - fixed handling of dir:// and file:// (bnc #561855) - bind mount /var/run/dbus into chroot (bnc #519764)- added parted to oemboot- update kiwi-tools- update kiwi-tools- fixed password salt creation- added kiwi-tools- clean packs- updated kiwi-tools packages- fixed dump progress window- Removing cross-platform support from the Qt imagewriter - Adding native Windows imagewriter- update dcounter in kiwi-tools. Adding the option -l which allows to use dcounter in progress dialogs (dialog program)- show disk size value in MB and only if > 0 (bnc #562190) - put install progress information into dialog (bnc #562185) - track restored files in percentage (bnc #562188)- changed mkisofs parameters in KIWICollect.pm the way similar like autobuild did before - fixed mkisofs parameters for ia64 - added ppc support to KIWIIsoLinux (KIWIIsoLinux-AppleFileMapping.txt is part of it) - added KIWIIsoLinux-AppleFileMapping.txt to spec file- added adaptec-firmware to iso/net and oemboot (bnc #562224)- use blowfish extension for password creation (bnc #562105)- fixed storage of lvmgroup inside KIWIBoot object- fixed boot label setup for installstick and installcd modus- fixed condition for calling vgchange -an- fixed install stick creationfix repomd creation codefix compare operator- moved repartition functions to KIWILinuxRC- fixed home device fstab entry, uses disk by id nowimplementation of hybridpersistent key (bnc #557100)- v3.85 - fixed user/group setup for multiple users (bnc #561749)- added information about repo solvable creation - fixed solvable creation if only one URL is used- improved solvable caching code and added functions to KIWISatSolver module for extracting SaT informations about dependency and queueing problems- adapt perl code to last changes in satsolver plugin- fixed satsolver usage, pool_setarch is required for correct solving results. Also prune_best_arch_name_version() is now used instead of prune_to_best_archdrop the entire support for NO_ISO, since it is legacy and is not used anymore.ups, if statement should be in the opposite way around- v3.84 - fix syntax error when calling warning log function - backport content meta data generation out of product files from release packagesSupport content file creation via data from selected release packages and their specs inside of .prod file.- v3.83 - added busybox for to netboot descriptions and changed compressed tftp download to busybox tftp because only this implementations allows to work with pipes (bnc #559830) - removed 10.3 support- fixed spec file provides/obsoletes- dos2unix xsdDocHtml.css- fixed boot device activationmove kiwi installation source plugins from novell forge. These plugins are needed to create product medias for openSUSE 11.1 and later. The 11.0 plugin has been dropped, since it never was in a working state.- added support for custom LVM group name. Default is kiwiVG - fixed LVM based recovery workflow. the recovery needs to know about the separate boot partition. Additionally the recovery partition must be a separate partition outside LVMfix logging, not warnings for progress reporting.fail if a plugin dir is configured, but does not exist- added options --fs-max-mount-count and --fs-check-interval as well as the XML type attribute fsnocheck which deactivates the filesystem check at all.- fixed root device setup for xenboot in EC2 (bnc #559143)- removed kernel-ec2-extra from xenboot, not needed (bnc #559106)- v3.82 - fixed size setup which was ignored due to last fix (bnc #559098)- v3.81 - call images.sh / config.sh scripts in POSIX env (bnc #558693) - fixed invalid link setup in createImageLiveCD() (bnc #558666) - fixed size / inode calcuation due to wrong unit (bnc #555688)fix call of warning method in KIWILog- fixed setup of xencons when building Xen domU images (bnc #557791)- fixed revision information in kiwi --version info - fixed Makefile clean target- v3.80 - fixed root tree creation build inconsistencies due to missing libraries at the beginning of the root tree creation. Any glibc linked program uses /etc/nsswitch.conf and from there requires /lib(64)/libnss* libraries to do user/group to id resolution. If the operation happens chrooted, the libs needs to be there. The fix will install the glibc package which provides these libraries in a $root/baselibs directory first and moves them to $root. After that process the package manager is again called to install the bootstrap listed packages follewed by the rest of the specified packages (bnc #536256)- v3.79 - fixed clicfs boot by preventing root filesystem checks via ROOTFS_FSCK="0", also don't use run-init for clic (bnc #557661)- v3.78 - fixed umount calls before init is called. Due to this fix the df information after login should be correct- added openSUSE-11.2 target for migration (bnc #555724)- v3.77 - fixed search for gfxboot file du to changes in the gfxboot-devel package for 11.2 (bnc #556130)- added LVM feature to allow parts of the filesystem in a separate volume. The setup of volumes happens in the new section- update XML to 3.8- v3.76 - don't require preinit to call init (bnc #521456)- remove pivot root calls (old code) and changed preinit handling to let preinit run like init. If preinit runs the kernel already knows the system image root as / and preinit always ends with exec init (bnc #521456)- fixed exit code evaluation in Dialog function. The value of the evaluated exit code was undefined because it depended on which subshell finished first. The solution is to prevent parameter subshells when building the dialog parameterlist (bnc #547864)- v3.75 - fixed spec file for s390 architecture- fixed sysconfig/kernel setup for old mkinitrd (bnc #547571)- really removed windowmanager files- really remove inittab files from examples- fixed xslt processing. The possible change to the XML file is now written to /tmp to avoid writing into read-only filesystem (bnc #552617)- removing displaymanager overlay files and use the baseUpdateSysConfig() function instead- removing inittab overlay files and use baseSetRunlevel() insteadAnother place what broke the mkisofs sort fileFix sort file for mkisofs, fixes boot on crappy BIOSes.- added support for timezone in JeOS - changed suseActivateDefaultServices() to activate services only without calling the post scripts of installed RPM's- added missing usb host controller module (ohci) to all boot image descriptions except vmxboot which doesn't need it- added Patches from Robert Schweikert * added suse-min-gnome example image description- removed 10.3 examples- added Patches from Robert Schweikert * change deploy section to pxedeploy section and update schemaversion from 3.7 to 3.8 via xsl stylesheet- v3.75 - added Patches from Robert Schweikert * new function baseSetRunlevel to allow setup of runlevel in inittab- added ieee1394 firewire modules to support liveCD on firewire DVD drive (bnc #479020)only basic version of vim is installed; we disable syntax highlighting in order to avoid irritating error message on vim startup.- OEM recover/repair * make sure passwd/shadow and group files will be preserved * make sure RPM database will be preserveduse true/false instead of yes/no to harmonize with rest of kiwiuse yes/no in REPO_ONLY to harmonize with MULTIPLE_MEDIAremove not used KIWI_COLLECT_TERMINAL_LOG enviroment variable, we use the --logfile switch since 11.1cleanup log states (lots of Warning -> Information) and drop obsolete code.- fixed string comparison- kiwi-instsource changes done by coolo@novell.com * fix 32bit debuginfos- offer only languages for selection which are part of the initrd. The element defines which locales and translations are part of the initrd. If only one language is available no selection dialog will be openedfix 32bit debuginfos- kiwi-instsource changes done by coolo@novell.com * fixed logging * fixed several uninitialized variables * fixed debuginfo handlingadd all debuginfo packageslittle cleanuphave defaults for product variablesmore fixes for loggingone less unintialized variablemore cleanup in the logging of productstrying to fix logging- added missing config.sh script to strip down locale information- added bug ID- don't call ldconfig when loading KIWILinuxRC functions- better changelog entry- set splash to verbose if there is a systemException (bnc #547821) - check for block device when retrieving MBR ID (bnc #547821)- added DOBACKUP variable to easily switch on/off the backup creation in recovery mode (bnc #546057)- recovery mode (bnc #546057): * throw reboot exception if backup files can't be created * create backup files for files in recovery.tar.gz only- use cmp to compare files first before diffing them. Prevent second find call for backup files. This increases the recovery performance in repair mode. Additionally write backup diffs to /tmp/backup (bnc #546057)- added support for lang and keytable in cmdline. Support is only available with the gfxboot code from >= 11.2 (bnc #547915) - changed fbiterm return code evaluation. Echo the return code from the last instead of relying to the exit code of the fbiterm terminal (bnc #547864)- search .backup files in home and etc only (bnc #546057)Add changelog message to kiwi.changesFixing bug 547143 - kiwi imagewriter needs .iso filetype filter too- don't remove libgcc_s from initrd. It's required for programs which uses pthread_cancel()- prevent automatic CD eject on kiwi install. If the tray is blocked (some servers hide their drives behind doors) the boot CD/DVD with the OEM image ends up back in the machine. Therefore we open a popup window asking to user to remove the install media before continuing- added udevPending call in waitForUSBDeviceScan() to make sure the device nodes are created if we leave the function- fixed clicfs usage for vmx,oem and usbboot. Needs the same boot partition like the DM squash setup uses - fixed clicfs mount on bootvm creation- fixed error log switch in Echo function- fixed hwclock and timezone setup (bnc #546096) - fixed 11.2 JeOS template, no kernel-*-base anymore- deactivate backup MBR at 0x800 (bnc #539505)- leave time message in kiwi.log file- update schema documentation- fixed setup of doc exclusion for zypper (bnc #544874) - added boot timer for kiwi boot images like the kernel does- added kiwi-rpmlintrc filter for boot translations - fixed css file encoding in documentation - update kiwi-tools in sle11 repo- added boot timer for kiwi boot images like the kernel does- improved umount code for auto mount of removable storage devices. The function umountDevice() takes over the task of umounting all filesystems associated with the given device - use searchBIOSBootDevice for usbboot instead of USBStickDevice since we have the unique MBR ID in place this is the better method to search for the boot device- create backup files for /etc and /home only in Recovery mode This is done to reduce the runtime the recovery process takes- fixed race condition in waitForStorageDevice() - deactivate automatic filesystem check for clicfs based livesystems- Add cancel/reboot menu item in recovery bootloader configuration. This will help avoid accidental recovery invocation, which could be a potential issue. The cancel/reboot item is now the default selection, and the delay is now 30 seconds giving the user more time to contemplate their restoration options (bnc #544420)- fixed old X11R6 lib/lib64 path- again fixed stripUnusedLibs()- moved destination path check to function where it is needed- fixed race condition in setupRecoveryArchive() when creating the tar archive - fixed fbiterm support for SLE10 - fixed baseStripUnusedLibs- added and improved official JeOS templates to the kiwi git source tree. The official templates used by the SDK product and the SuSE Studio online service are now provided via the kiwi package kiwi-templates (bnc #521970)- fixed OEM bool option handling- fixed detection of USB install media- added import attribute in section to allow default imports if not profile was set on the commandline- fixed handling of profiled preferences sections- fixed bool value evaluation in KIWIXML.pm::get*() - added suseImportBuildKey() helper function used in JeOS templates (bnc #521970)- added support for , default ID=83 (bnc #543118) - reload MBR in restore mode, also recreate swap and home systems if defined in restored fstab (bnc #542648)- fixed stick detection if multiple sticks are plugged in stickFound variable was set too early, thanks to Axel Theilmann - use bc for more exact progress calculation- clear screen after install confirmation- oemboot: re-install grub bootloader into partition if the partition contains a bootloader signature already (bnc #543123) - added backup diff in recovery mode. This will add a file~ diff file for each file changed according to the recovery contents.- improved restore feature which also restores the filesystem before restoring files (bnc #542648)- fixed typos and mistakes in the documentation, Thanks to Robert who found them- limit language selection to the installed locales (bnc #539398) * de_DE.utf8 * en_US.utf8 * ru_RU.utf8 * zh_CN.utf8 * zh_TW.utf8- added language translations (ar,tr,uk) (bnc #539398)- added language translations (bnc #539398)- evaluate languages set by in the suseGFXBoot code. This will result in grub displaying the selected languages- added i18n support for dialog buttons too- fixed %1 evaluation in getText- fixed LANG and locale use- added OEM restore mode (bnc #539390) - evaluate kiwikernelmodule variable from cmdline also in modules.order mode where loading is done by udev (bnc #525345) - don't remove libblkid1 from initrd (bnc #505580) - remove reserved blocks in any case when mounting clic by calling tune2fs -m 0 (bnc #505580)- preserve ownership if xsltproc changes the xml file- added pot template for translations (bnc #539398)- added fbiterm to oemboot boot images. This allows to display wide screen characters on the framebuffer console and therefore enabled kiwi's dialog windows to be multilingual (bnc #539398) - fixed baseStripLocales() function- fixed MBR flag setup (bnc #539505)- fixed bool value evaluation for oem-recovery- added backup MBR to 0x800 if --grub-chainload is in use also added FDST flag to 0x190 for preload setup. We need to take care for that value if other preloads requires something similar it should be an option (bnc #539505)- added cross-directory-hard-link filter- update xsl stylesheets- fixed types in oem examples- changed to schema version 3.7, add xsl stylesheet which automatically changes to the bool values true/false * allow ensconce as packagemanager type * fixed bool content for rpm-check-signatures- fixed bool content for rpm-check-signatures- allow ensconce as packagemanager type - fixed bool content for rpm-check-signatures - fixed inode calculation, needs integer result- link files to create live ISO in createImageLiveCD() instead of moving them (bnc #412689) - do kiwi test mounts with readonly option (bnc #538355) - use option -J -f to call genisoimage (bnc #538390)- disabled check for removable flag in USBStickDevice() function (bnc #535113)- allow cmdline line overwrites only if the variable ALLOW_CMDLINE_OVERWRITE=yes is set in config. or config.default. By default no overwrites are allowed which should add an acceptable level of security (bnc #536309)- allow NBDROOT to be set via kernel cmdline (bnc #536309)- fixed satplugin getInstallList() function, did not allocate enough space to hold the package size. This causes the buffer overflow inside the binding. Also added the flags -D_FORTIFY_SOURCE=2 -fstack-protector to build the same binding binary as if kiwi is build inside the BS. Also fixed the spec file and removed the versioned requires of satsolver-tools (bnc #532894)- fixed writeXML- added encoding information to all templates - added log information about temporary XML changes for all modes of kiwi, removed the used xml output file- fixed virtual disk creation with clicfs involved- added option --grub-chainload which allows the virtual disk based images to chainload grub from partition one. This is required for some preload processes (bnc #529850) - changed filesystem detection by using blkid instead of a raw dump + file call. Related to (bnc #529850) - disabled partition table re-write for hybrid ISO's also see the comment in KIWIIsoLinux.pm- fixed partition size check which failed if oem-systemsize was set but the disk was smaller than the configured size- added release tag to sattools_version- added support for parted in oem repartition code- removed check for luks mapping in functions which are surely not called if the luks extension is used- fixed grep call, only return code is of interest- support new syslinux >= 3.82 format (bnc #530255) - added function dn to support linux device node name convention: Converts from partition name to disk name (bnc #529580)- fixed bootloader title setup if multiple kernels are installed - restructured oem repartition code to allow use of parted. parted does not allow to create custom partition id's they are the result of a sequence of subsequently created partitions. parted implementation will follow soon - allow only bool (true/false) content for the oem-* boolean attributes- remove kernel-.*-base from all boot image descriptions for suse-11.2. They don't exist anymore- fixed spec file- fixed boot default size setup (bnc #532371) - fixed KIWIBoot::getStorageSize function, use blockdev - fixed dialog input by calling setctsid before dialog- fixed usb stick size check (bnc #532371)- removed duplicate creation of read/write filesystem- changed title for install media to "Install/Restore ..."- added support for language selection in displayEULA function. The function now uses the same file names according to the licenses.tgz file. If no language specific license file could be found the function defaults to license.txt and if that file also doesn't exist it defaults to EULA.txt (bnc #530497)- fixed main::mount() method, setup of umountStack was wrong now using mount destination for umount not source- fixed isohybrid created partition table to be DOS compatible This means the first partition starts at sector 64- update documentation, add information about LVM and repository priorities, differences between smart and zypper- fixed typo- convert schema css to unix file format- update schema documentation- provided new kiwi-tools for sles11 without pigz- removed pigz from kiwi-tools, it's packaged and maintained by Alexander Graf now- make rpm-force content a boolean value- fixed waitForStorageDevice() check- fixed fsck call for clicfs mount- run fsck and resize2fs only on first boot of a clic mount - don't wait for storage device if it's a loop- fixed VMFindSystem function in xenboot (bnc #530200)- v3.74 - use resize2fs -M if possible ( >= v1.41 )- fixed bool value in documentation- fixed foreign addPackage and addArchive calls, make sure the package/archive is added to the bootstrap section not to the image section as we can't guarantee that a type="image" section exists - run tagmedia at last- better text for used xml file- v3.73 - removed -extra kernel packages for 11.2, don't exist anymore - added desktop kernel profile too boot images for 11.2- fixed getSize function to calculate required inode count for the subsequent mkfs ext2/3/4 call (bnc #528839)- added ddn function and replace all occurrences of a=$disk"number" with a=$(ddn $disk number) (bnc #529580)- added checkmedia KIWIIsoLinux constructor parametercheck for existens of README.BETA file* Activate ISO creation for product medias by default. * Add check for medias intended to be a ftp tree only (no iso) * Do not ignore random errors anymore, but fail ! * cleanup of some return values, still way more to do- v3.71 - added --select packages for the --info option- fixed loop between CDMount and searchBIOSBootDevice happening in oem ISO install mode- added dialog based progress information when restoring the recovery archive files (bnc #510041)- fixed evaluation of MKCLICFS_COMPRESSION (bnc #528743)- clear screen after dialog window disappears (bnc #510041)- v3.70 - fixed HAVE_USB check, usbcore is no longer a module - added edd module to be present in isoboot- fixed OEM_SYSTEMSIZE evaluation for standard and luks repart- allow OEM_SYSMTEMSIZE evaluation for OEMRepartLuks- v3.69 - changed oem-repart to allow oem-systemsize even if no home and no swap partition was requested. by default the entire disk space is used but if a oem-systemsize is set this value will be used and therefore allows to have some space left on the disk - fixed loop cleanup- wait for process to finish when sending int signal (bnc #525986)- use dmsetup remove instead of kpartx -d- add a sleep of one second between kpartx -d and losetup -d- send signal again after 5 seconds, if the process still exists- re-added clicfs ignore-cow-errors option- add a sleep of one second between kpartx -d and losetup -d - wait for process to finish when sending interrupt signal (bnc #525986) - added support for hybrid ISO's. This feature exists with openSUSE 11.2 or later. In order to use it add the attribute hybrid="true" to your iso type line. If you use the iso on a read/write medium the isoboot code will search for a 0x83 partition used for writing OS data (bnc #496505)- added mediacheck feature for hybrid iso - use partition not disk to mount hybrid- v3.68 - added support for hybrid ISO's. This feature exists with openSUSE 11.2 or later. In order to use it add the attribute hybrid="true" to your iso type line.- fixed typo- use blockdev to check partition and disk size (bnc #527016)- v3.67 - use #!/usr/bin/env vmware in .vmx config file- fixed file finder for relative paths in createImageSplit- fixed code box dimensions- fixed solvable creation for migrate, also add the option --report-packlist. Updated docu chapter about migration- deactivate mbr id check on oem install (bnc #525682)- v3.66 - update ec2 documentation, fixed public ari/aki table- update documentation- fixed build- fixed build- fixed build- added suse-11.2-JeOS template- removed obsolte tools/cdtool/suse-isolinux - fixed isoboot: added gfxboot.com if it exists- leave libncursesw inside the initrd for dialog use- v3.65 - added waitForUSBDeviceScan() function and wait only if usbcore module could be loaded- added cciss module to be part of the oem initrd- fixed dumpkeys call in KIWIManager- added displayEULA function (bnc #522985)- added opensuseProduct in JeOS templates (bnc #522217)- v3.64 - fixed xenbridge network setup if bridge name is set to an empty string (bnc #515404)- fixed satplugin due to satsolver api changes (bnc #521968)- fixed JeOS SLE10 template- openssl-certs does not exist on SLE10 changed to openssl- added openssl-certs to bootstrap section of SLE JeOS and boot image templates to allow use of SLE update repositories- added openssl-certs to bootstrap section of SLE JeOS templates to allow use of SLE update repositories- fixed liveCD isolinux entry selection (bnc #521338) - removed required lib* packages from delete sections - be verbose when removing files from the initrd- added suseSetupProduct function (bnc #520268)- set hal lock for mapped luks device - added support for luks extension for iso image type (bnc #505782)- added support for luks extension for xen image type (bnc #505782)- added support for luks extension for usb image type (bnc #505782)- added comments for luks boot setup- fixed ram only netboot image download (bnc #519055)- v3.63 - make luks password dialog more user friendly - update schema documentation- added check for packages really on media when using fallback KIWIPattern resolver (bnc #517506)- fixed luksboot link- fixed bootloader setup for luks mode - fixed default split file- added support for luks extension for oem image type - fixed CD eject in oem CD/DVD install mode- fixed block comment- v3.62 - fixed combined mount with luks encoded read-write part- fixed combined mount with luks encoded read-write part- added basic support for LUKS extension for vmx image type with compressed root filesystem.- use --passwordbox instead of --inputbox to ask for the luks passphrase- added basic support for LUKS extension for vmx image type- v3.61 - prepared KIWIImage to work with luks extension. This is not a complete implementation so far, just a first start (bnc #505782) - fixed inclusion of custom tar archives if the image description provides only a bootstrap section like the isoboot data does- allow inclusion of custom tar archives with new element. This can be used to include custom branding without special branding packages. This can also be used to include any kind of data without the need for a package (bnc #515573)- the inode issue comes back to haunt us yet again. The last go around actually made things *worse* for things like vmdk that allocate large disks, since 2x the number of files is probably much smaller than the 'automatic' calculation used for a disk of that size. The attached patch fixes this by removing the --fs-numinodes option (which is useless, IMHO) and replaces it with --fs-inoderatio. Kiwi will assume 16k for inode ratio if not otherwise specified. We use the ratio to determine the number of inodes, unless it is a smaller value than num_files*2.- fixed typo- more virtio modules- update docs, --list-profiles moved to --info ... --select profiles- added virtio kernel modules to boot iamges (bnc #515543)- improved support for obtaining XML information (bnc #513093)- don't remove mkfs/fsck links, just a cleanup fix- v3.60 - don't remove libx*, 11.2 hwinfo is linked against libx86emu- v3.59 - fixed journal parameter handling in setupEXT2- fixed clone to search in default image path if source is specified as relative path- fixed checkType function if flags and filesystem attributes are used together. Using these attributes together in one type is redundant and therefore not correct but it should not lead to an error (bnc #514412) - removed useless setValidateRepositoryType method - add support for xml file logging. This allows to keep track on the temporary changes kiwi makes in the XML description caused by for example commandline options- fixed clean target- fixed clean target- combine manual pages and kiwi cookbook into one- updated documentation files- adding man pages to kiwi.pdf using joinPDFCreate pdfs from the man pages and append it to the kiwi.pdfChanged refentrytitle to filename- fixed clicfs mount for pxe type (bnc #513826)New chapter appendix as intropage for the man-pagesAdded chapter appendixset tocdepth to 2 to show new subsections and added an appendix chapterAdded subsections for the elements of config.xml- v3.58 - added -persist option when calling nbd-client (bnc #513112- fixed test case- fixed kernel/initrd links in setupSUSEInitrd (bnc #507261)- fixed use of mke2fs options- fixed SLE11 template iso type- fixed setRepository function so that it does not overwrite repositories marked with status="fixed"- call searchBIOSBootDevice only on initial deployment if the kiwi initrd is still in place for a subsequent boot use the root variable from the kernel commandline to find the boot disk, related to (bnc #507261)- added list of available patterns for --list-xmlinfo- added getSolfile method to be able to access the cached satsolver index file- fixed url list update when --add-repo is used- fixed kiwi --list-xmlinfo if repo doesn't exist- fixed typo- v3.57 - added support for ext4 filesystem, adapt 11.2 examples - adapt 11.2 boot images for ext4- fixed dom0 Xen setup- v3.56 - fixed missing xen bootprofile in vmx and oem (bnc #510276) - added ec2 bootkernel profile for vmx,oem,xen (bnc #510276)- fixed call of xsl stylesheet in kiwi.pl- default to "no" when the recovery dialog is displayed- moved schemeversion to schemaversion (bnc #509107)- moved element into the section added xsl stylesheet for transformation from scheme version 2.4 -> 3.5 according to this change. Always compress cpio images (bnc #509107)- fixed checkmedia reboot to happen immediately (bnc #509061) - fixed checkmedia message (bnc #509060)- Use O_LARGEFILE on the output open call as well- Use O_LARGEFILE when opening an image in imagewriter- fixed documentation for bool value use (bnc #508614)- v3.55 - allow use of zypper iso:// URL type in kiwi (bnc #498437)Give the user more feedback when the imagewriter cannot open a file.- check for iso tool in KIWIIsoLinux.pm (bnc #478991) - removed redundand relocateCatalog code, use the one from KIWIIsoLinux only- added kiwi --clone mode (bnc #505554)- v3.54 - added fix catalog function to KIWIIsoLinux.pm (bnc #478991) - set inode count for system partition only, even if it has been specified via --fs-maxinodes (bnc #495135) - fixed OEM recovery, set OEM_RECOVERY to the root device not the recovery device (bnc #503653)- fixed oem format="iso" install mode (bnc #506983) - use dialog for asking questions (bnc #503653)- added resize_inode feature to filesystem before resizing. This will reserve space so the block group descriptor table may grow in the future (bnc #498683)- fixed clicfs mount, regression from my nfs fix- don't reserve blocks for clicfs without cow (bnc #505580)- reset IFS to standard value in CDDevice (bnc #505943)- added relocation function to KIWIIsoLinux module- rewrote KIWIIsoLinux.pm to allow bit/tri arch boot media the code has not been tested for efi or ikr due to lack of such machines (bnc #478991)- fixed typo in volid assignment- fixed/changed clicfs over NFS use. When using a clicfs image it's required that the clicfs filesystem is mounted on the server and the container (fsdata.ext3) is exported to the client. In that way it's consistent with all other filesystem types- set default volid for CD/DVD kiwi install media- fixed volid setup in case of format=iso setup (bnc #500501)- fixed typo- fixed volid setup in case of spaces (bnc #500501)- fixed doc hint for boot-theme- update documentation for bootinclude/bootdelete and boot-theme setup - implement setup- v3.52 - fixed clicfs mount over AOE,NBD (bnc #504652) - allow inclusion of boot image packages specified inside the system image description. This feature is used to setup branding packages which needs to be installed as part of the boot image (initrd) (bnc #497888)- v3.51 - set keytable to us in template files (bnc #504275) - fixed live iso examples (bnc #504283)- fixed group setup with correct group id (bnc #503117)- added bugid for spec file fix - copy hidden files to home in oemboot code- fixed spec file- indentation fix- make use of new clicfs options for persistent writes- fixed spec file requirement for mkisofs on sle10ensure that images.sh and config-cdroot.sh have execute permissions as well.ensure that config.sh can get executed, even when it comes without execute permissions- added optional volid setup for iso's (bnc #500501) - update scheme documentation from oXygen- don't set config file when calling modprobe in suseStripKernel function - use 70% of RAM for clicfs- validate MKCLICFS_COMPRESSION if set - fixed tool hash for flags="clic" - added free RAM value for clicfs mount instead of fixed size of 470M- fixed sap media changer call (bnc #486758) - added more clic fixes, still not finished (bnc #497172) - set inode count for system partition only (bnc #495135) - fixed satsolver setup- 3.50 - added bash quotation function (bnc #500537)- more clicfs fixes - fixed quotation of home and groups for user setup (bnc #500537) - fixed system reboot if kiwi initrd is still in place- v3.49 - added clic fixes from coolo (bnc #497172) - fixed quotation of realname for user setup (bnc #500537) - fixed activateBootPartition code (bnc #500454)- fixed quotation of realname for user setup (bnc #500537) - update documentation- allow setting up vga for iso images too (bnc #480336)- need eval to pass options to the mount call- detect if it is required to pass -t iso9660 (bnc #498497)- fixed permissions on recovery (bnc #489909)- added support for clicfs for suse >= 11.2 (bnc #497172) * ** not fully implemented and tested yet *** - don't run path generation for iso:// and file:// paths if zypper is used (bnc #498437)- fixed initrd cpio if xen type is requested (bnc #399230)- fixed template xorg.conf for 64 bit- v3.47 - added kernel parameter nombridcheck (bnc #498371) - remove boot/grub/mbrid file from installed system at first deployment to avoid conflicts on reboot - set boot flag after repartitioning the device - exclude install source device from being used as SAP data storage device- fixed format image creation for split type (bnc #497882) - use -x option when copying system tree to avoid copying still mounted filesystems like proc for example (bnc #497984)- v3.46 - pass -t iso9660 when mounting CD/DVD devices. It's a kernel bug that slows down the bandwidth if not passing that value but the workaround is rock solid :) (bnc #493201)- prevent usb and storage modules from beeing loaded directly- don't reboot the system after OEMInstall, simply proceed- fixed kiwi_revision content in .profile - fixed LVM repartition code if more than one VG exist- deacticate the bios 0x80 check it's not safe enough - allow non interactive installation procedure in oem-sap-install mode. In case of multiple disks the smallest one is used for the system (bnc #486758)- activate volume groups before calling mkinitrd- restrict packagemanager names to smart and zypper- fixed filesystem detection if root is on LVM- fixed fstab setup of sapdata volume- added ovftool patch required for tech. preview- fixed bootpartition id for install image creation- v3.44 - fixed size of boot image partition when creating an install image of type: virtual disk- added missing entries in sysconfig/bootloader (bnc #495909)- let udev load modules if modules.order is provided by the kernel (bnc #493201)- added bool content type instead of text for rpm-excludedocs (bnc #496382)- fixed identifyFileSystem call- make sure DHCPHADDR is an uppercase value (bnc #495557) - fixed probeFileSystem to take care if the first 512byte contains a bootloader (bnc #493489) - fixed multicast activation/deactivation (bnc #356974) - also check for include link to use --dereference when copying the overlay tree (bnc #490128)- fixed recovery device setup (bnc #493878)fix mkpath calls for current perl- removed cromfs doesn't exist in 11.2- fixed SAP data VG creation- fixed SAP data storage setup if there is already a VG- fixed SAP storage check and data storage setup- v3.41 - fixed URL quoting when passing credentials (bnc #491475)- doc revision update- fixed xen config creation for bootprofile=xen and image type vmx- update man pages (variable names) - leave gawk for oem images- fixed IFS setup for SAP functions- fixed typo- v3.40 - update manual pages. Patch by Peter Schinagl - added functions to run X inside preinit (bnc #486758)- added SAPDataStorageSetup function (bnc #486758)- added check functions SAPMemCheck, SAPCPUCheck and SAPStorageCheck. They apply if the oem-sap-install attribute is set for OEM images (bnc #486758)- leave libcom_err in isoboot- v3.39 - added a xendomain attribute in config.xml to be able to distinguish whether a virtual disk image should be a Xen dom0 host system or a Xen domU guest system. If no domain is set a dom0 image will be created - added xenServer function to check if we run a Xen host or guest system. The bootloader setup is different for dom0 or domU. Adapt setupBootLoader* functions - allow filesystem resizing to be used in isoboot- fixed xencons setup for lilo and syslinux- added support for virtual disk images as Xen guest. This means you can specify vmx|oem and the resulting virtual disk image can boot as Xen guest system. Patch by James Willcox - v3.38 - added root fstab entry for compressed rootfs (bnc #486017) - fixed console setup when booting into a Xen guest- really allow oem-reboot to take effect in recovery mode (bnc #487887)- v3.37 - added squashfs requirement for suse version > 10.1 - fixed solvable creation for repos without compressed meta data (packages and .pat file)- fixed build- v3.36 - allow oem-reboot to take effect in recovery mode (bnc #487887) - improved the --list-xmlinfo option which now also prints information about the repositories used for the image and it will print out the install size in kB by using the satsolver. Users can so check how much space is required to build the root tree of the image- added compuled man pages- add --dest-dir check when --build runs - fixed checkType function for iso tool check - include xml man page source to git - update template descriptions- add --dest-dir check when --build runs - update template descriptionsChecking in change allowing "-m" option to maximize the imagewriter window- removed KIWICollect_local.pm and also the --instsource-local option from the code base. This module is no longer maintained and all code related to this path went into KIWICollect.pm- better changelog entry for last zypper repo prio fix- fixed build, KIWICollect_local has been removedobsolete second version of instsource module- v3.35 - added support for repo priority for zypperadd support for repository priorities with zypperadd support for priority ordering of repositories- fixed documentation changed wording from exten(d|t) to unpacked and package image- really fixed this path handling in upgrade mode- again fixed build script- fixed build tools- added suse-SLE10-JeOS template- v3.34 - fixed ignore element validation - added suse-SLE10-JeOS templateTrying to commit the MacOS port againLast commit failed for some reasonFinished the MacOS X port- added support for arch attribute in pattern names- adapt ppc netboot descriptions- v3.33 - removed support for cromfs; dead and unmaintained fs - added bootkernel attribute which allows to select a kernel profile defined in the boot image description- v3.32 - changed netboot descriptions >= 11.1 to provide diskless kernel profiles named diskless-kdefault and diskless-kpae. The standard diskless profile will no longer include a kernel- fixed oemboot workflow for dmsquash setup- fixed oemboot workflow for dmsquash setup- v3.31 - fixed broken CD/DVD mount path in isoboot workflow - fixed vmxboot workflow for dmsquash setup - fixed oemboot workflow for dmsquash setup - fixed usbboot workflow for dmsquash setup- v3.30 - added warning message before installing system (bnc #484793)- v3.29 - added cdrkit-cdrtools-compat required for kiwi-desc-oemboot - added experimental support for dmsquash filesystem type which is a squashfs filesystem containing an ext3 filesystem. The mount of the data happens via a device-mapper snapshot and allows copy-on-write access (bnc #483444) - fixed install image size calculation in case of a compressed image. gzip -l was used but we ran into the >4GB bug mentioned in the gzip manpage (bnc #484247)- v3.28 - added crc-t10dif kernel module for 11.2 boot - added x-bit to vmware .vmx file generated by kiwi - don't use arch specific glibc in boot images - don't specify cracklib but remove all possibly installed versions in boot images- fixed build helper tools according to svn -> git switchkiwi-desc-usbbootbuild21 1362465091pqrstuvwxyz{|}~      5.04.58-1.1.15.04.58-1.1.1 4.81    !"#$%&'()*+,-.//////////////////////////////////////////////////////////////////////////0111111111111111111111111122223kiwisite-lispsuse-start-kiwi-mode.elkiwi.revisioneditingsuse-start-kiwi-xmllocator.xmlimagelocalearLC_MESSAGESkiwi.mocsLC_MESSAGESkiwi.modeLC_MESSAGESkiwi.moelLC_MESSAGESkiwi.moesLC_MESSAGESkiwi.mofiLC_MESSAGESkiwi.mofrLC_MESSAGESkiwi.mohuLC_MESSAGESkiwi.moitLC_MESSAGESkiwi.mojaLC_MESSAGESkiwi.mokoLC_MESSAGESkiwi.monlLC_MESSAGESkiwi.moplLC_MESSAGESkiwi.mopt_BRLC_MESSAGESkiwi.moruLC_MESSAGESkiwi.mosvLC_MESSAGESkiwi.motrLC_MESSAGESkiwi.moukLC_MESSAGESkiwi.mozh_CNLC_MESSAGESkiwi.mozh_TWLC_MESSAGESkiwi.momodulesKIWIArch.pmKIWIArchList.pmKIWIBoot.pmKIWICache.pmKIWICommandLine.pmKIWIConfig.shKIWIConfig.txtKIWIConfigure.pmKIWIEC2Region.txtKIWIGlobals.pmKIWIImage.pmKIWIImageCreator.pmKIWIImageFormat.pmKIWIIsoLinux.pmKIWILinuxRC.shKIWILocator.pmKIWILog.pmKIWIManager.pmKIWIManagerApt.pmKIWIManagerEnsconce.pmKIWIManagerSmart.pmKIWIManagerYum.pmKIWIManagerZypper.pmKIWIMigrate.pmKIWIMigrate.tgzKIWIMigrate.txtKIWIOverlay.pmKIWIProductData.pmKIWIQX.pmKIWIRoot.pmKIWIRuntimeChecker.pmKIWISatSolver.pmKIWISchema.rncKIWISchema.rngKIWISchemaTest.rncKIWISharedMem.pmKIWISocket.pmKIWISplit.txtKIWITrace.pmKIWIURL.pmKIWIURL.txtKIWIXML.pmKIWIXMLDataBase.pmKIWIXMLDescriptionData.pmKIWIXMLDriverData.pmKIWIXMLEC2ConfigData.pmKIWIXMLExceptData.pmKIWIXMLFileData.pmKIWIXMLInfo.pmKIWIXMLInstRepositoryData.pmKIWIXMLOEMConfigData.pmKIWIXMLPXEDeployConfigData.pmKIWIXMLPXEDeployData.pmKIWIXMLPackageArchiveData.pmKIWIXMLPackageCollectData.pmKIWIXMLPackageData.pmKIWIXMLPackageIgnoreData.pmKIWIXMLPackageProductData.pmKIWIXMLPreferenceData.pmKIWIXMLProductArchitectureData.pmKIWIXMLProductMetaChrootData.pmKIWIXMLProductMetaFileData.pmKIWIXMLProductOptionsData.pmKIWIXMLProductPackageData.pmKIWIXMLProfileData.pmKIWIXMLRepositoryBaseData.pmKIWIXMLRepositoryData.pmKIWIXMLSplitData.pmKIWIXMLStripData.pmKIWIXMLSystemdiskData.pmKIWIXMLTypeData.pmKIWIXMLUserData.pmKIWIXMLVMachineData.pmKIWIXMLValidator.pmrepoREADMExslconvert14to20.xslconvert20to24.xslconvert24to35.xslconvert35to37.xslconvert37to38.xslconvert38to39.xslconvert39to41.xslconvert41to42.xslconvert42to43.xslconvert43to44.xslconvert44to45.xslconvert45to46.xslconvert46to47.xslconvert47to48.xslconvert48to49.xslconvert49to50.xslconvert50to51.xslconvert51to52.xslconvert52to53.xslconvert53to54.xslconvert54to55.xslconvert55to56.xslmaster.xslpretty.xslprint.xslKIWI::config.sh.1.gzKIWI::images.sh.1.gzKIWI::kiwirc.1.gzkiwi.1.gzkiwi/usr/sbin//usr/share/emacs//usr/share/emacs/site-lisp//usr/share//usr/share/kiwi//usr/share/kiwi/editing//usr/share/kiwi/locale//usr/share/kiwi/locale/ar//usr/share/kiwi/locale/ar/LC_MESSAGES//usr/share/kiwi/locale/cs//usr/share/kiwi/locale/cs/LC_MESSAGES//usr/share/kiwi/locale/de//usr/share/kiwi/locale/de/LC_MESSAGES//usr/share/kiwi/locale/el//usr/share/kiwi/locale/el/LC_MESSAGES//usr/share/kiwi/locale/es//usr/share/kiwi/locale/es/LC_MESSAGES//usr/share/kiwi/locale/fi//usr/share/kiwi/locale/fi/LC_MESSAGES//usr/share/kiwi/locale/fr//usr/share/kiwi/locale/fr/LC_MESSAGES//usr/share/kiwi/locale/hu//usr/share/kiwi/locale/hu/LC_MESSAGES//usr/share/kiwi/locale/it//usr/share/kiwi/locale/it/LC_MESSAGES//usr/share/kiwi/locale/ja//usr/share/kiwi/locale/ja/LC_MESSAGES//usr/share/kiwi/locale/ko//usr/share/kiwi/locale/ko/LC_MESSAGES//usr/share/kiwi/locale/nl//usr/share/kiwi/locale/nl/LC_MESSAGES//usr/share/kiwi/locale/pl//usr/share/kiwi/locale/pl/LC_MESSAGES//usr/share/kiwi/locale/pt_BR//usr/share/kiwi/locale/pt_BR/LC_MESSAGES//usr/share/kiwi/locale/ru//usr/share/kiwi/locale/ru/LC_MESSAGES//usr/share/kiwi/locale/sv//usr/share/kiwi/locale/sv/LC_MESSAGES//usr/share/kiwi/locale/tr//usr/share/kiwi/locale/tr/LC_MESSAGES//usr/share/kiwi/locale/uk//usr/share/kiwi/locale/uk/LC_MESSAGES//usr/share/kiwi/locale/zh_CN//usr/share/kiwi/locale/zh_CN/LC_MESSAGES//usr/share/kiwi/locale/zh_TW//usr/share/kiwi/locale/zh_TW/LC_MESSAGES//usr/share/kiwi/modules//usr/share/kiwi/repo//usr/share/kiwi/xsl//usr/share/man/man1//var/cache/-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -gobs://build.opensuse.org/openSUSE:12.3/standard/050642c968de079f0d056fa95697cc4a-kiwicpiolzma5x86_64-suse-linux  ASCII textPOSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Thu Jun 17 09:05:42 2010)Perl script, ASCII text executablePerl5 module source textXML document textdirectoryexported SGML document, ASCII texttroff or preprocessor input, ASCII text (gzip compressed data, from Unix, max compression)troff or preprocessor input, ASCII text, with very long lines (gzip compressed data, from Unix, max compression)troff or preprocessor input, UTF-8 Unicode text, with very long lines (gzip compressed data, from Unix, max compression)  !"#$%&'()*+,-./0123456789:;<=>?@RPPPPPPPP P P P P PPPPPPPPPPPPPPPAPPPPP P!P"P#P$P%P&P'P(P)P*P+P,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@|pq4}qperl-satsolverjingzypperlxcdb45-utils0.42 ?] crv9uYnUmuoD9@W؂ZW׽fyv%ig[X'X(m(/fETp)3*ƞAG ۥ b\7d ejfw~YѨ}pW6PRm{@Nݷ Z@ e*vSWB!'E`Fس1napX|ˠ`=kq.j1~,y%;YgmbXyUW/ V/r>SbO@}:Ky0qTzrVsR2|~P٦TwWlu49m:$Jez$[&nlLۚr|YqҜl].+$Rn^C_<yC ~^KX\i_%wmj2lCmj/_ t*T͉qF|T^3Y@oN]FnMzsv9ۚޱ+K=nFbyEfr3 d/'NN6!ڈ"̙^ZS,H1Pzq߷J|@EO'dbDG- ,_Cbiֱέ[/)"Gs|@{[8aYL(+XFUyyzN)tVb]AoS52,b!Ҳҿ=iɩad33#NȒyG<3 xm5-KFm}Kz)7_-7!NN_K@0aV; [? ȟa}5Ʌ,O1Dtڔ R_N4 aل8g3Kq2E"m `2x8$Trl5s9 YxJ 4R_[B[?#X[FXS<} meqi牤8_+oC?(Wzr˫]~A/}9y s]1 в1a|> `/IkEɅE[bEDwsM?"Kg Sv+jbcsWf zзn 熬^'U6Mfe/=C-`Pw.f3r[QW&z_Pgif]` 8I[cE+Wnj[SM[?8O}`ZX_<.i5$t ZBZf7d>ӷ3}V(BحOO@ /nj|ˀ4ٰ;&r=|;V"^6iOT@-jp/t9,~, +Wx" Vu-[/4WZ(iz!ܧLoHqBTFifwi/9#:[S͇o=^MAGn*⋇IK/x!BY3 PiT_vkpI: q^J RoDk"ØqOl㯍Q]ZLg?,rp"5< I+^ B}թѼjk&5zq0;`[!8}>yE]iMl01 ԋ͈R@1jE\hm&jiS& %eJG,ԼA*@#` d-8+Z$Q,0 KN Ct.Ջw {o'Ga I0 %>V􌬱[5aHI) Fa'+We%g ,5ܷha:g{fh %iNCzƫo FOPm`ϸ5\O{m2v\[xΟ ,(Қ4p4#.dA < xHZ?e7Rmل}"A^= 6yO^8TIiWy" yJe}VL(Фf */SeȔ&r!,?FE3N"Q47@ٞf1jD0_'^4ەnz$[F (.rvE$@j}&( 1RIudrZNl3)C)VTz9C`*2Jx&nQGdPK :1{sez7Tj$ 9|muVFA50+RO$1m#IG\y߮@;q}"F_ݳ-hϩK@i[jIre=P3y W %i)r#EhP Ñ|TwK:V UABm3 2l(uגi{l!YNRf͟srR-soMo*p8*];^P㛵A{59p1ic8ҟFwZc{ F_^\ڌOΏ<]&C6J>jz." PԱ#)qE v~I ]mCF{J->OSsGv/`uyS>+6>b=suyVD0Ia$'+fG~3*] .QŬI_3bYRmqcE_ ?@4I_"Ruoh Moa Hf%զF ҺeTh%˅xR1(0x[&^ 'e~_UW~׵kklެ9H1|/U_ d*aK4%C rAqjf GV| :Ä֫p!ֹS5U@Otlئr 0B Orne N3xYm 4o^׍#׷|P8Fn%XI z.J c;nA ̊+Ǹ"&;&cg0HYQ䙱xzR ڛ8x4`}ZOY1kSkf. X4PX/MhГdK-0N&*:˒G#>wS`vސ^v;mwŹz*nG.|5jZn̎Rr_Lo|nʧ'k]o92a2} ҥ*6ac $mLW;uu&ii#|jjDuھK9nG/-tGcg%^ӔWe@+5m_^K 8@9m7F~zp8~Gl?G2J`q(K#nWG'm5n;_~恵l[] Pk"\&B߹;^FsSjB= W;U=E`P;"&fxφ~3`\M\"D ,Ȟ@ͽ4J׌mALQ4ޑ&z6/pDEbou[.rvn2\2 G/8S!;[#I5|Ͳf;:p]\;>߬:%fq29~Q@)C3+`&2`cd"Íb/l.f(;ЫTH*"d|*qdoBN7W{:@ǽdzNlAMeyۼ@W%,ryW݋)H&;pVɸ=pAki94Amʴ 8yKLע%Ok4ȹv.0 ~OJ/ɳ`ۧS0A͋Y}(#H=+L6|8N&wZ۵mAkA8 Y JA Ű`h:.QHB\ro5NW MTiMOk^r!01kN$*#F{F}(}.H_A8,"aaE▿3_(w3n? {L@ZdM`Qj|q2X, ,4'/ksV8tTU4:MZt[ȍ[Hjr66VQm{ꢈ*H\B2V3As:lQAĽ`C:RS.xRfUhyc1ΗѺa't}b0Aؤ&tTf&BD5\/8 "eC)'Nc  +ryX#k-1ڴ!ꯞEZmDK? I8PiXiR hJσ|ɕ4^}~}s GQ6З97ִ4,iU~;Z~}b~鵕\j Z OTg/sύgJn[]y(+ϲ1-m qIHYT$Lj~\ 1LRkWS`PYYYRm"UC %_شolGfTY/ T~|\'oŒjuq_uxp3ޫN]BmHU{G@]BJaO-ɞc-i`d0QB:K<"[bCuWNMc^Ոx@Ωig`,NMv?6eToXkϣSQ> S-WlF /FASs'41s-KAG MnL/& i9괺>LfԼI]5zoв%%vzuCTApJ2ܝ:P$&lF<>ePP$c$4q2)݉xZ 0z:߃LT͉R[R-[7|mr\Uу:RI[O=co-+_,V hgpKMH~_z SIT,`!Lvr>N.#h<os1\HPj:ц~Ӈ EJőQ|BHc@y J3g`B<쩎ᐤ[) J~G+*jj;iOWD?EfbM=: bDrPrn_4PՑۏV2%B N%W*rؽe]鷐 g4ο%>"PV$Z*j\jnKBJ8T` -D |C!hKs$t_|b;IX 7MrqEhټX2tH/NИ\,Z8(uhGogA79`SxWscm KF ) YaZ~J""Gz--.OhczKOOG/oJ Z3mp!y-3]iϒ͐S?t㷿0èq8E Զ|0ɤH֮ v Rkcˉ,9%I>O\a3VYμ^/@!SnWhS_Ѓl y'8KL{:c%GE6ف5m|MNmmjyx^z"V(#/N<$s4Mf+dTP*Cx S(!l{vГT2:C۷KE% **5rbN `+/vY6hjd(7є TxcJ:af¾.R+ZC.á,za?3kUֵ!*#{--Ur' LWhサ4[àvn!f\׭Fk^|D+hJ^|i 2jumu,MT驔~Y̚}+Cm7NAm@vFo.h(ØL@f+l=$؅5DAoj70j}YφPKC;بH >MoL5q3U'\s z.mGh=ӊ'7KES)-Ϥuw! (9 gfF"K-$m 'ulP ;Ukl*'% h #W,`Vz˿%3[PuPuS .pi0nK{%wKڗ2IӘrI>Qƭ8@ 5ƃߧG|8~BR^M=pTG9cF {s [ͦ[V[I+"y9{^`]qǥ2F]K()p:C@kd$t*缞Uhyv``IT{Ok9o7 ϫL[|!h2,y׹^!yn]x xi9W 38F7 i=@S'_2T ig3O .3)mh6 VomH%#w"K͔/(+ @'s0ԈGta C%mxOJ7)껤=!` oφ{w]O6d_jt'G3?^A~[()_חt00ݐ}o@ Iki3-$ QA+J,KT8.D"l^G '&D80xd pĸ̑\tq/>"<DwaGB)ϑ20}X nžUl/.1aaF>0$: M2U2,{&C[2% ^O:cO:Zݵ:k 'nB3Cc܎eINT?q]}3ob}rB{\t^婎vba.."+8}gnKn_(d.7s1r,2~U}ŀOVݧGR4z)Xf6 "2GZzPknd˨Zqsz:#8Ss;?LuCU & DyK6Ep wlX2W1@AaLĆ.3d,j3T]IϋYg Fol & !}"cJ@ww6<32^ZRsĥ)XarhKa2HdᰥXQv&ls0Eͅh驪Fe>BRKg*7@lHg-5$ &S[aL$Nghn̔=PJsH#J涫<2~,NzQ1dFq3Zޮ\-3C)[t'y!9* !L\N!RpMVЩ-kޫR-Ք:myHаhN;2?6nh#R~;B $O^&*u? /l8bkzXh{_BW[,سqs>Qc8];S>㲬yA&0b(*`n~nѹ<"zJl;z F^6?a?f5%悀cM)lU:c'ÚJ:˳[wl hxOWg+s+.dS:ů .z^C.ydkwǁz59xQzRNn4ۖ+k9 cx W+"By^703kM_Юa,p*f4+u>m&+twq-g.Wʌi3o<:IXځk A/ K+h y a0Z%/chb-U**z;XMCqke\`>֞tpE~2Qٺ/Agb=λ|Q+֨fygRؽD l+Ϲ#b_DQáQ\UdnJ7W"#mM*0Z'8r"z}z+||\gdQ~k\[~*dVPUM\kɂX[42fmcbqO|-d @;H~naKNO s˿^CϛV6Ogې*8p+ )@{(+B{S$ mzۍ p.]-.:G2$zi=zuë-׍Xzy)kZMs\^|5I!cL!| piœ6˽ ϼ85S[j_*&^~FnVtò'vp{Eel F(<>(X@Bc +vY}H0O%X4;^F6!rSg N`m f5q-7C!óbP?($^!_JYEÜ1mV#˶bݟr lCh'.(_ bw]hi, \pPj;e%Dt6i1Yx Ap̩Jzv!,~ (oj:PBږp/8AFvzd؉5M̰cLPƞ/dQi7<6C ڞ1s7e엾>ȗ_p}^!T^aM|6(w'k+GقŸ뛞B)/C-wHIX:Ɨy` arZVBerj;D*_Qlx\DgH4(-JBXfOm2[kN[pe7^XcI Ҥ&lTBjY_Q7!쟉ºɷ|ZsNx-)뗟&rH5{gH44B4"/Qb;|fAtERxLȴ̬b)ebsf(\f[P3Vy([V@㛓\Q#E^A]n_Ce{NL_b4T)D8pXZ兣6U8NXؠfQ<@X,O6}i'm#F*ր:/d[s V ^ ҄n0cj#/T=HJ@$g5 CV.~H:N:|• Y>̣߂z`(>əm]J} b(I*Tj|@|ʄ H@}@]Qe? oφ"xH<~$UeI9l AQ(0(Xi,@ ʒnJMQb2ENd S#eE| ؇q&B!`fc.Hpsf1DwZNvarЪĈgj,ť;E~xL4" 7\Q.ө!'Y#*]ePԉѶ{CZAïHUj</ȕ |\{ .,Ue͏"&1/@#tE(zFXSZX; Nb1- hf$^!V@ޟZOTDCUfv ~mY,gY@}=5C0j-u:7Ugj+Sd`BV\v8-bli5A ”]1k9D?)eMDN5Izir+&4h9K >7!9gUD6tKϛyC<(<r$ْ)Nϟ(Cz +c1am{(t+D 1 f?(#~{Z(]tyTay EÑE.)7C\ss>u~]q'# Ȫ$ 6ƥP~hȕěEyw5+g\vb ݮ1:ᨱ..D"""HM(oSgH\>ϏPbE4 }}E~\Qrd:ر^%i|\ Qv'!(sjqu:JZ ܔ”{+bQ1)pxd3QnlZYۮbxIrDH.V(n>h~# =-#k%JP 34йC+{wΚ[:YneNWCJ(ozGHFRXO,Ǟ JF S#a(T,v^RG3"1v:D122Yr%W4 g8 Hƙ:P*, 4Ů%VbaUzka ywBKpp [?C1.[.%}n^F &e^A,ꌅq*H%Jdd>43l`~Ǭk(*V&YJ=2 ضh J+yd1ZiugEI:u-B 7,r۷xg}:u*x=qq4BK}̴[26?]4S_QpD CbQ)[ nhT) +5Yɖ2*n#ٖ;ͦu7K \cQ 2."ЯhuSᥙ~_< 2&ASS7 O>7Q>g"+ Fͯ|aO9*')o^]lw:-xPb|M4t"ISOO]<EnnW3yBKs_PmWr{ z?7 ojaˎiWCq%C&MH0fGiHwo<ưiB/bXs=9*R9`[@9^xSn9Ob>?ywz/nr޴۸3"v J|iU 0@LrO@ql# MvNq$_p':{<Ϳ"Em&/p6aT5:6&ڍ*LJOnm@B: =[n1"66o9V6Y.riސPn wG4]ʜn̳%t!*&p3zubq| ԫ  ڢ"e+j r*Z~j7e-r32ף*!Sj4I[Q=mC{ i#|01+-ҪM7T8Y#dDL[+:IZ'!4bL_F/ Hn?1Pj\ #p̬#|c Mӆfa!{4[f?3JHG@jmNhJQ-/l,%ڂ9g1A 0Af,r_&VyZ >'TNgT chmh{9Xs̱FT\@pHK(wAgU )pU3v\S^Sɼ$#;q p1@+.<矄waڜJ~&AWyZqqmd )WWDMa&a;.GTI|#<t~o.$9Ʉ0+%-\R}0٥;Y*CwTӘJ(O%&ZQC5W?Ien{Xm_aO* /? Ds9e|+:O15nSh~ 2:0}ep D̬֑l+Ұ3Ál ަ 9<\u1dqJL<)߭()Μp iCsH}YżQUR֓ bDA{[{sPT]\uV"8bXy&vNLBBϻ]MטAxa\%]@ f"wO"R^p{;^ n~k&6]GV(CS.H7c!6u?\5fH&,esCDM=LyÞo}ևl=q%D 98tq_ 6 ,Wڄ[xykɣРT" t뉁3kFӬ!5kq/ lGzW-6%tS[/!INb.IR,Wb|q@yOpU5FW2{ F^R5^w(nO,p/ Ċ8ƒc:x!dSnǼR10[p{2.S^0͞g^Yt;%- +P-m滥UD]*[ 8QStAW]G`^W+I<CwbM)Mć5 ›27fDhCՈ l5ÛèPD};ÄQzJ/"mE:mن|Vxdk:.O,c\i5ouF~.. r ?l2 4 K_)48)z~*Kw 4!Obcu>b.Qot>_9?c1U Ng._{ / ?G*pVRTGϰ>?Ka!2Kb3kaa\#d{ZzoөE \C8 _#à&bl4bY_r=MɕGn4Fs[zP=g հ.+ޅI'K@^(^-7\5!cƓ p >GkT k&m/79"ӻVgį$Pn 5 A.G <;bZAYҐ" ꈝEN1J̼ 0ݹP^NۋKp"$|?K#u|ˣ뚂6Ų(=a:=D랚)b٢wlݼ:'sQ֙uDO^@>Xl{Zu5ul\<ʺ+5t'՘Wj<{+`}?]0)x4lF=}' ⢴a^0#!0o"b,a$U^{vZh֋cSB mF{K~2<R>lce8.XGá* })c4ʼn ">3j3tQb8KQUY<I:! |0L3ZGU{;*6,TNmISqqTԈƟu~Z90gX%4_'9!vJrLС\ܲqgtt3: j@y4;\EPH(W\A@ rU\HquUޠ. bJ_eez>H&E` 1ǨtcІ {ݥ*mCCBP{ gD=~+c1  Ofaϣ6iY5q)L]բ/rC2pޖzW,.Xuwh %V}?a2k}%Ewቀ x1!~ @e)'V48馓x`Cу;١P4Z-Ydhy껸gQ RT|CGt{[qܡS'WRW>Z ̗6Ba(^S1`w F^g!gQAG b`ް]M{1>bN e[-BS\Zuvl]_!Tz63g0GSզ^"W{.J}1f}6XJ0Ad?? =UG%^AHI`#KuAaQ;i!lOc?d/f~͂\K g/`wN ]_ vӵ˫ZHs/L"眓>jTm.R$^m"rq2fClmNdRK2X)M갎8]cOm>=?17N'a,+Mfݸ{.Oq<}R,ɖbSHı3x% k*wY󡢭c灺 >og2xD(Q%=8\9z(8`1oJw+ojL;YIp9^Sp2=B[l iHXC f(_+W-QMyv{xVΦT5K߂탁/2%TPTTgɄ0bbݲK41gX{>YrbexUH˧|7@BK_j0O@|'=aDE a_?Yl$t9v .Gck jBlӟi dA~-gPv4XV$a @ov?8,|gud~浔 Bn}""&/3(/WԔx?=&x+nTH @n A<&hcp _b1x7 6vE|via[ىkF9҉^qN?9 e Q::b6Z+Cu WQX}n(љ ErmuuT8Ƅe'EO3n{47bٳp;j>XPr^.D) d]|d|sEJՁtG,NJtD&/W_V|~}5vLʑbJVjp {ɛ3 y.=H ߰Z5DNy ]2b49K 2Z$߾S2v: KPaspǤia=?%!K3Sv0zhv^EZ?\մMJIbC޾\ SAd&R.I"wf}n{<M'&?e $e:Xm8ù̇.5tȷeF?lb<Uo) o' IY{\]i@l7.W_OjLѩk;=7UP2ӳ|g4[ 039ɂ .J1:WmU5ՠ`H44[a3i3'*Ɇ5 -Ȧ/RW=sB>}WotH9_ s DCʜJEc ~8z̞pR̈́>,{eFQW-(b,,7gO#Z}@lݰHV_ǚM0C-Yk N%gg]-s'C~A Lt%&q 3uE֊5jkf 55̶4a¦BP]I#z# ڼ=D;P-+3 5#Tpx5N- ~Hhm= ID!?f:Pb dS p-R})p/6גz~N̸0 U_gW4P`P%ʲ\< xT7}v|p&|GipR#m;X`i2X֬C1@$E|>tkRpjw]jHnlIbwXSLy悔OP) 59钂=%~~WIUˤ)b]d[f{s(fPH8@uu=SwVJ&q7DQ74~FEOy݇GwuӔVnjHߔNi F `pzuhOta7#Ji:vZL/%PD-_*Î'O..i[Yu+gLah}MYCA9XIK?gD/ c)%z8 G?kڈaܪ+dF6lWx! + OpgY忦v37O m!@GQ]N_ɥGG%(>R)A9Qekn-̻w֩`3[ӱ+yOڃ#lMsЄ ʇ,r#N|ⰅrwǗGO[>Jy$dU=Sv<^YAƇrTf8-bv{dnPc T)] O䮕k+QIu+9&֍d(}J c?J|w$zv)O) A[؈;irRd u~?R2?բCݝ6} e d˼^ֵ%=P\qy%E1jƠLYWr91=v]w[Ǥzʚ5DNlǍRgir̈́K݃6b>=̔K_f/:gD;metgRDeϼ|}M! ,DRM$fz,D&"9:x6t+ nz"*&Q ~^P`X6dJ(&ͨ:'[h<њLbo(i|gYFPF-jl@~͇J9SVzR#jJΕPBOs6٧y}x},E S+~֌+Mͼj Z=[ScP ”LGd̪keR%)$`yTe)f%V Ooʤ,]ZOIsG 6#V4 OD_~Djl6*c2[c|S}J83idh]g\`WI./m 'zlgH+$J[~vJ[:s%16ƺSk"WEPF IYݝ^)֛PXE#z-k-~\B=2*د\UQ ~?l!i3Ԝ-6qRSDaLCϩNHهnM1s4kx(aH dxmNp'@i11vۄ . H3R*4?L{!"92e''5p@{2ZV'5avϣiۻrI|WnÄtq¯KRa:3ǬJ! d1e~Hԉ9?mrD.h8Ŭ"01,gEP: U"Eowu_6GmU c|9un]i)|jdC^XUDf!JP˔@ϗ`pR9<0_$557_ydS;8jh;)J9_l~'ʁ|Y/b)  [yNV`4]՗o+*G=o8Q6 z!IfP솴z\=4SԺ`t#%iFtdWȉZ+1(+-͕G> Ph|!!&APx[끥^]I -hX]VL8t5Pw3_HW- .=D7R,eJ>Q Gnǻ*7 {RzghjP_o>L: ;=bYuMQܑZ&4NJ[O= MH5/쎱aSs ^?jUp0k%%lJ,{x\ntk9 ^>MXwJK\FJ!a dߐtRLTss ļAiѝ~-۷"`4z]^)1׶5]29jjVjZf1@,fu@W -ڄs9yghqDDX8.`o%gFvi[> ,D 3kT BJdeT zsH]S4 xԠ+.a\)\g:ސnRVEH 2l)yKDU[J} YQ=)(U[alScVZ}' Л`VLN6Y,R<_?LwE%d=LELD+0fՅIJF4{%/WdP|zm1_RLp]"X~L e6$߭Nd'?BEWh'x oX64EЛh5xv_!1a67|2FFCrDC7PR }JՕ:L[E8`G< %*k֯4.ƪűQn1%9o2L W?]vYs -S0dat 'S>:&+9y}/5SZsQ(`"L$U7 R`U#Lj\£cjNjxj/qR.GJ[m cXcWw-c`)= L^&+M:0jHjMemo\T|W#24T'wtɥ4[ o+?.AU)yoGY y*xq9-j hR|'*-EB-g7b>ejE<\֟EjX&Kv^`%;R.::ۏ>Dfs&XE7bx&N)YTԛ|f5h/_m"S?< Kg9LE~R({بx "fWhdl:c_y QU)k;"99|!60mr;WfâsJd:;j;Uo2~=*W*CN gKGl"JU/AN7@[eC1ji\ Nh4T'6M[R>*_~e'6_XAS>g)k]N9^|\EH.`_38S2#L:SSN7>h&~: JN&;2IH@8Q\~撰6I-Z[]pVeX3Bk=RťE?4Ǡw! Ax6äa"YNoc#:#:V0'7dgdyXd͈@& O$g`@,TbhM#Y gd:QTlQkRi] -ztD> ,1ACisƋ$vۑ2#1L"f}%8~9b΂(Tz[#oxIߟUL @.F'QOç+StV ~i DT'] t. OQn4#fW~dm=Lji:8a0߽ZNn?8K38©2+87$9!%iuMUfޤ'Nwש-_6}$]PVC?*O.7*w}T".q'aqվU0WRRG r[,؀O2 #Dx\%5%j&hKZNUGl1R\J/BmKI͍RxDćo+N2A.?q-s%}=>1*;,'c*Ec;vH6i0gnrg5@m :@MMOnq-(k|UZE1js!fpwJ eڟ5 9}B@8V9TW>40ȪE`Ht0sć0]":tf )SB"bE7d$f Lۮ9;,9m 3ln;W+]l{2ysIO;Z+A6}J$]SʉцZ|9 (l^F#7ã{qm4ZE+e4NDpiqnuj )adi!)Q">Nj@ V=΀j&Q@3J8vg_ ͬMҀ?zH%' &' N:1sǖdܺ( a )CfDZ.=EU~{ ԙt#_TQǷaP|QϤun&Ӝ,K$^m,HX5Hv$؉!.D:f,jw ~":v6=wQ5P[q\ Ȋb,P&R% `۫u "]+M[@sEFkzFzغp""p2xqtLq=OD<&,PMSdǜTIUլdH2RCmk(C ݓE-IpQ)W})AA瀞e 5p۫K9Ű'LS}FF6?C4j8-u{|@@!R 킡񮠦| :+ |*< dk 0^5໇]z!N)>ؿ΋gՍYhSSN+aPg9Y[bC 6z #_䦜E3(J +5&K$Q=枠Hx3QFɓ,O=jm ߈YeZ%[u}6 69v[j1J_ @Ai}wT [q{R;2DCun/EPa#CDg" 5?+/w/uO\ `t0C(aO:DX`H;΅}r\럞-%,ά fESք,Q_U GL`0?<?ϓ`%>܈D0rZN~p2;l*s):e1@}xӴ\ Rp֗F:Px¤. gn_8%$qK#Al9uRςG7A-@WG{ib+E.<?&[/0k@| w\a K-0JYkMfۘ+=ʪ(m,O f we֝]-QYi6aXB#z21dAj+JU'>D{*5z+,gVExk%BͥnJ(6Z+n%& hW\soq:ri WBH{56S@7pU̹VE`jHiЕ#PˤW/c<~w+SOK_=nqUMQT,h \ZFZU `ch .ȱ'JRT2\+Oo[N8PS\`fm4hk>?AK Xm)剨*_ UKDTIp*(Z8A{ȴPS csuTHO> P$Q~x;!Wo;PU 2e# <]z6 76= r3d~uԹ#{}NhM8Qp6˟ST TRÝ Fy߱@7f[[lȗYOߘT¨,T||B@ Ą?A';OץSDzWvKs\`EM,~B:cbio5{!%x~J0tQNϮ!_>'=(!JT=?WX -&1Ϟ4gi; 5*X9Pp,lՄ|Y+dXsYW:MrS9ǹ zp):vn3wm A5XޗK-!sLg*/P0έE3A$_4bV;2`z]㈂`YxcHe7efZLAے[Enj 4&JbA֟O<,N:8F$Ͷ[&Qɠ&FF&"F +cY-}f-_GIROdrVՁo-pLf}ݘ"]䇗c]s9ZmJ q^]C\Ç`2Gz?^?2}I3r? O~v*U#m,  QSk֐8I%nD^]7~KV_gO\E4ȁ`O.biUa:׹*s(xUPBmN@aJxZ:]'f]ʙQ謓N;1HB:I퉉bxj^~yш}SClDwsP_ulr= g F}9 ?3UV@@gZPp f-`fIpoN0?B5n_(jF2]nkYPzN6za,dKs+NM-k1Ns» &eI!(/}%}n kR !@];*2.ɘ=4,ݡ˦·+g̝;*3տ*97/ȣU(axg2Q t׽l:ޞ9…KU/O?VV;5CJÀyfAEυ8D7TԸΐn0L6%jQ0}"9DF}1Pp͉jx5 < "n]Dj}hI3S+%0$(f~vsPX)!eUFdlʼnoiBWf+0l_xZ#|`YmibEyՒdO(J XHP:)w]SZ7xJ:{4LC*6]A..D'/f__\ y#JTfKiTKƮ ׭dӪ=0_ŶPY2m |^1fە Ct+7qqhk7B̗ɽ%ٚд1\_TlꓘN"*s,xTaJ5 z/B "41CU ?u2ᫍ#T78ݿ(=uef77m ƥFPO)XXHId[E!EiQ2ϱ,TqHeUͳd"*;MȑܦIi_LN:hX֧P_xn J=D#e4  \+|?4[wYk6:( * W1( _n$taަ\ۻ3ؽQB񋩋bSB+ 9HA3(G$x'g7e]MPQ0[xCAGQpqddkӁW&3|[|iv&/T@ʋ//9 =)a+sZp1y{Qh|!AUFvͅVĪ5$&>N$Үr)D'n[&Mi*"^ 6 91࢞B(;r|%0MMcn·Q4[q3Ϫzt}7JZ9nr]I4ۨՓE? " R:ўGt1Szo"Z"DrÖ%4V6w[cH)]k|Ng`g=0&E`vbt#]/;-q R˜z}:,ֿ=Fr*ʇ=Tl|aFawN5.LO߱mf .%LP=; ?ϙ @ZI$ l~<0zM@P6]5|'͠2p1N&-Q}9K蕸寲cB`z8f3`Ovu .M`ůG+_$Y JeDU*6Oa<hf$+PWvT_";!8ۍi#'m".U.f?^Ѿe ]6 fx,gk=xo(CrXv?EIAƚ=6R}.ݘ(>UV!+6ׯ69Ֆ ~Uvx{ 0qBt?z=ۣ*jP4¿A΁D$# 7g^8t0Wn?}#ߧ /0 YTz>(Sм+BūxDLj{/ۤ&"̑,+ڝL`xy/낝c͎yɫ'өM/uQ̍27czVm'KǘPX%Oeot㒼o98_ڐB{5,1X ȥ.t &b%ǏL"Ћ9/ {v¨ ֈ%ne:(.6EfM];y?D{/-L{abZ+¡8ٍfkx-r;1=-VV ` Du4_=X7<۪(kx\1W'NsVxOcXP;|D374EDMz5??`WGWf̯v5`Yw :I&}w?9CSZVކĈ4qY0fa)x^# Q6ˌO N;I_w^/ oe^Qb\ڇ"\w s <viZF')lV#NjYgp$"K5ݓ}%O{8'i)X344M㈸A|[g6[l P[u:2ZUgNrtYޚ01qvFKE3ҰJr%B5[%MZdwmњ'o|ʪAuFB Q|+g(P$B%w 0W۝ob\_串M!k)DC.DS#PcvHZcK.]g3*rhn %h,5DV8@ӗ>Ⱦmh,?us™FQo ȐdB:,{52l$Yr_otW}uw 蓊K[0}|`^`EGRDݸRnujV zv;z8Sr AiăwD zzc0o.Uu!fĒk!X\, iﳶE%%9NxSe Vx@x։7صu>AgT3{ۈ{Nw7Dh? >h#E;]jѼFyk{ydjUE\)ofh8?* MF?{%RA*%vzy*?M{{ݵ5&Ǵ jjeC ޛHQrE ޾XGYw#ǂ0:w.XyoDLqmI;-QɈBM.iԍQ ]%gFݍ灔 mwp3+f}k"n^2NWmJDZx;4Bq̌/ssBqXk4,k]f`AHmV$yXW2Tza`gVk LS҅P-{wӃל_M΁ GDͼ5_KURc`I/GI&_SduEa3 *RrvSv ƢDWzzMWm!ۢ ,HܲwAEwܜDbs5ӶTbϰBy$D"V̅r+|3RAx, 9PkUq74*ך͈}4L7N/cԙ5^hOwV ³"GVPō&'4#>pVȹ`GBҼER^/V~ADX*a1mɯX!>*wI4dmvOB2mq8Iy`- ̈Y5P=M`ܑjRoRo2^h *v{G koq$T6\[zޢqs]̤і+-c ]L#?M& mDTOkn!L/!6JdMtsf9WO紅uCA9`yIC .=V#y?p0VH,@2J(1΄L0Qnk)95x5;5* ˸l&KD5i*0^[w7bbWxgH.톊&|^(oȱ?ߖ;j$:[OTh[ׯJYۋa2]2z-͆N#o/P~h:WoͿ~J*i *_,Mx|q pۈP!!KJԼkAb-"ͣ}dz%`V@pN{nn AkŇ×yOA PJ 8/x:90P5m +D3+p%?apcl$0u-+^K4^Ġs_bS\EMH^+ș+mR0wu2IX9VGSI]'_}a1Ti,l.r_ ͑SB~hM €``1MGx @0ngp2=}"ە x5\ĆZ:DAnFD*{X,$FEVǮ?XTT{Z,Oqinjɿ!+or0B nu@g:s(}b}ƊRs:cj|Ij❀&}^*&\p-*1cNEfDnυ`h(uA¯|pm~iw\t] ;uE)ƅ&Url_2k\)SY[tjV41IkH<]^RKddh5s; .Q(,7j-&v7`~La߶ 22=oX>iԓ>f'G|~˅u|D||mY4{l7}qٶrƏ{N-O2oRT]"j%3y`BiKX]vϞ`Eay7]BXͬYqw, yhno۝ޥ>r޻wps~{9v k*ƘޕHɫᵙWgZ0;rbuCkj2bX]{lҎpyM(כH˂S83UKqK^i%z)JU.7XfdxX=Fs:PIνZZ`LVl6#f Sj * җk{?3;/sEj][%fH8#f#/Lhd6~Ta~;/\.sكG3{<*[SoGfz۳jG;Em B2dbIoOuk؛]ઐ@%<@k(EUe+&pt OEEo88D"Y@|AJ\iHMi0-/fG86iqٴM/I*[iw4nfp!Hα8|MmVXtJ*pɵwSD>2p~R$?Ԥ;S&0.dR/Y}T|R8#XolA 芓XB@J#_W˔GsBywDmV& yzfMX\haIl-j\<5U* wTWJzBzvETKe꣧P⪜`>0/H prc1l{u0PʛBL>g0 *pyEj$&9i ç*dT{XNUnN)t A=w=t4sϻfN֘n>M%× G ]Oa ~ B2DcRtb m+zH.$r^g P<40W8xF›^SCnN A7ANۮ:*TWߜ*>u0[ {=@c~-MP:RjWAZ_W)g T7,Yr4rZlC3A w1㞌չ ^.0dI(LصڹX gϺ8v De@@U|컟=Lt>L9KMa&9&Qf3xy͋(`|M~KoիWNVRr5yU,'HMxECfR>#Ez42"xq7=HSk xrdI`$.6tWrI Q` 87eVN]WseMGN/Ge(APEDE^]: _4L/2)_@fi.(K,-No(h gBGP^;=uUJ {f oC:h[GGP81"en5G*IѳqX]=kGl"llZ[+*OI󓞓_5(0kt## A2wwemۭӷm<Vv`x 5tQ0d/] e,}_ q8ڟn/¢ȩSi_< /|rS`+b_S0XP, /'6́ŨCI~R:&-"[+3SZZsXZPFLډ ba{$[Պd&cf"k9ݣh;Q/2\% :HDJ(A28wug R;&'TCıB^[n\;)޼մX7gq,h}rn;%nbAaMml`q%o#]nA6sƗ"a*"`wR3lc)v^"<&t.eIuR8|WA=s_p$VX6跛Yڠ#!ЀNB(IǯP=M.|JtObٚ2RN@"6y*Reheu 7}N6CHliIB Rg[gV$f*uߊV˺}N;mAjPҹNECFD"s+IRhYT笙i܎ vҸEfM,f5ut^hLH1ҳJciq͢:&=7hL W#Ic0q6V?ÉqJݿ;~I[--h{1)"*TQ~~_{|Sjbxe"Ёzό}g|:Pq3$:` sPRgB%F (mbyΊ  w%쓍#[;Ù T)pVݭr!1c^l[ Y 7 w~'"Z>J"&qak{l $5j= ϭI(W8{á#h^CՈ:|~-̥Dٙа=):HWYLHWxi*kLiy2&qI j.=T%Q< I2b[x@K,(m;fߨ D8~siyi*;~I*\|Y4H3' '6IBKa߆&8;l@964M?2'"p5+))P6_pZ`1{?0tT)KN7C3i֤)/27j X?-TxǏGD&c:,H氽c0_3RAk+6hP+v[xE|-uۿܦF4=<,JN+ԵsYyǟW+f]}]\E~^sY͐'| o.2_LTv1nd*POg^պhW(nRܘ |ћ57vTC#j#}\q>۬+<7:WS1`Cu3ԍ,DrbI xUb2/S٣ <;}ZׁՌR ;ˑ$/? ;(cJcEЯpSÿ$W-Ug.Ij%!\ p` uR9Ig(Zsǎqy@ IB`G.z2} 3bl&EϧP{ǘ[/V~I {;6)JOƥ8J>2ފko  'S)]bTI$RM\km>өۢZ{?=ߏ|I3V~ϣi*]gמQܥSWP"-}Nb~"f;6ej%T,],z|?k: +\JH"Ru̇K"l53 >͌Z zy4*]FE#*BU/1:Jd7X66vƁlҁ#sx0D)= Id8X猲4ꕉ"Q; HLFh댍:/cA^Ѻ1n®-v|?^q5}2 H$e擞T8oZAqJ PzJMk`)*b?/WuhE\k!ҿ8&{s'Ĝ|XN@EcQ&V5k$!|&Sxl@F 6w)noqdPuMw΃yi6x+$Wda+Gy/ғ+ϗ17 uCTV x)h%~8tގx,+OdtS 8Gx1mj|fTu_E!AUi@h{d۵.XRcO{bTNж.}R$Zz,-<VPː#kde~'57eFql 纴NHkO;9c9Rݵi"F6go2J]Э 6 2s}3Z#[tRpǻ V-wt(Lsݥp;m&yB[b|DFGtx4,p ?s9sҘHHp>tj+~s( A Ӓ N#\v~XXAm. 񮧪 *ZZ=.͒Xx7ő3'~\ IXAШ6wKhǮÜ2r`\ H+K 26KP ;s:S 4XכۡFb.=v3D(H]h֪Ҝ4+y5$iW/Y>W*D(x2-GB7Ԝk;)V<1V L:TxeN685%SO0D&'UBcP3YZ7YGlip'Ƿ{޽ҕ 2GYNa3WOZ F B}a%!bSpp]bF*0^py}9!t\mw`N*I,<Ŋ (1(]r~6gZ&hHhk%D1[k^\ˉ"k6ZC}jmJ ,E!.JKy++?4φ oY =^Y+WL7{_?Qɬ6bo*ɮ<뾝z?y?7Q@A&r)[tJS.nfu)Eעgv< |?O4u5[ds;&?;ebȃQw| wov(#+wXe4Of 9X2!mUI+O7ګFw# }\%6k4}{) W|}2) fApj6nj+`iR:(bԔ[7utӠ g7cO=qalU'셋00غ'd=DjDŽJPv|N[ /~SOxֻVX곹f@_]ULe`z2/ɫ uK4gfnJ`^EpH:qlWo--fuNsn;۪D7džsxa&Qp^22Jw?!وՁ 7&\qmKLDc22M^4\:pQ % "2hXwKb"x ҷNU?%KL-$tGҀڞdgq,1'Y*jݴS=SD#zr+ޑxcDyȢuw2%(݄m< \gky"A)<jW~W:$G4U^ѓ|Ur*@AN`$ #!~B9 f|6z $} DX+"Oھ:w I2l ҕК)ƃz3^lzhHcdceLPbV [wظ""a40i :9UŅNUblr4phDP B&vׯT'^//w?UQ nN7>O"@z[Ϊ}{W~>6<+ydF.Wb"r*X8)^h$g"'|-~$,&qL'Zyktfr|pA .x%V5S.LdfV Ƴ ~zZ pCF~ZntLT[FTqe2]탑ɗn7\{sC*_-K fhYеyX-h~h-6풱 _-R1ICE;Li${ p$٬/ M>Wq2W_a< i+=T_/|(F2 O[`WG?hT΁MbV*cFvf:`.h,EU?YKF7 @˭șv@ bkrFj1\ V+Χ&:94ߝY5K3LeUqZ ȃ&rpjpT-alWBTM||_Wm};5GV恣of))adNۍF>٦ `D_ N;PUX223P9YQl:t!!d /۩q~)(kХSvi&>U ׿]7縘Zs I[ c񈛺C{w!/fa{Ya*(Zl˞hl=8+<5/+L4F1 @1_R"f0 _\KaN]+ 쵟+ASC_$kC"և?Ns6N̪Ft]TuD?=_I?Fuhk7V l{]ϥ `S npZ脏Iu[zwonbB?Έ D\ =wǫ|1D̨:pGMu/j RR-;O#ـn oĽc_h!!5fB%.t9 >[KDmqY:t ~PN&8f4Ӝk  7(nȒէ55 (lKR U~HS8،kY3p$5b}!(2 !m9gۑ"[$Y19{6 g}{\0`ҧPd|:/gg$ eJOl6 gRP2j21-cͯtX/ag ኒe}UI;'oo`ZT{Hxr A< GC| d+O(D =|#ͯHfWaڴ,G-Z"S_qr.lKyWAvӏp#aHӬ4Z<@%c 1^c^O|"mAXK'ڨQ/z'֯1ԋ8jdA9~̐MgR%B0Yݪ;m`G/BHY#'*J0WYqB;SבּY8rgw`ѡ=a~d}4I 0>5^էN.? :@6#ݙξZ{9 @6NE*@[*PAV@m@7.61Ȫ kclX`@:v/-~_[JG^Jn?C5̩V Mʨ.2TR0%<$ FU;hD g1j%.[A<9347/,=/X26;q .0;I>ŤjOaMF: "ʲq{i+*Ϗ0;wr ]8}DІx0,[++e'90+1!:C1Y$PI6= _gagۦrM~$s'o˄x%9_#~ ^`pl; (f^fA:6oDX\K^ "Y CvETRYwd?%h]k_dQ꙰&U|Ms973TZMQ Jx WxwHwKn׎Wj'5;^dˣR'9'A0*5)j\槦/eSfqK~Ѧ`Ufs_hM 94= "HGq[M *.'r/@?rD~hv3h#%DC^pIs }fvS~6<X6,JA5З\wf :fгFqs*dWM<ŘydjJT`VF0F210%G@FY-Dh Y e |ME'h;ytQ0ݘ' U '2.*EEoBl@Yma-ċ0jCgՠ TjˎMǁ{`+0~;uF4|ɽ? 7N-J_O ^}fe,VV}F8 YF bn? z9 tIK~MU^jP>AsN%ns8K/"3ovE~Q T ͓n 028#(}÷֩4{ {vWX9bI ;3nz_,~\]ߩo Wd> ^\޽!iS98~QGmdMh> tEee=Bzۿ(UgBM&&fpJ,-9D3Zi[4 mmCnDP O%%#u~J%dRͥgbL5%k:dF9ȨchrjRLc!=L {;7v>ṉQŶBK` }MH9^DLƃ`@R +⻬qO{FhZHozZ?)/|3AzFxO\*%J$dQa%ԼY7+ohσЙ:c3nMFagZg}$DNp~YT:7y >ʐ=& 7+|rqzȁimYcJ~+*)O`^x'I''G޻BF7φL՜=&r>] /H^&ۗ tH"Jzg򠣺Zj"^YƎN4Di`=c퍤xPcrYTQKInρVpŤ윯X\?pcUTIaT-|JdYp>(gm%|n{RW-϶ MJLq<@ Jm~{Slծs fg `(,PӬN0%=:6}W,3QrAwR,0{3jSܹ9E>~\=c@dQl x,diC0tmQrl rZ\PUςGn@\`s" "w)"87'p)_fP.yK+%$QJ1+vq5RظtU'&+Sǿ;ucv)7N8bR/tv=?WqloaMw;0$YGDN8i2FHg?{ZE~An [pBa‘Ixhp@Y$E {q;;i^k_d6JK-M|`q]9Mjz1A_FcŞ[P,OEEC[Hls۟nr8?o.[ȩP,41|ԟ0`9! e2`y{xb])^ c5 F :XH5U!;c_s#[1JVUP U(.#vJtdV c˯{61;01°K9Ur](% "gyF2WZ/Yzl3b%%hX\ YT[^⭒; Bb.D佖t 1R@N&[:^`7v?٫`w;]g#yP@ZuįggTtHBAa$if0|ƈѹv?. ^ڬ*Mr! ˪Hf/eٞx-Vzź_;RA5n]$NT``u ' G=n;xEkgƌvydbJdB :$e&-7XGK<<%--‰[EGdҌ"/L$^h!Hl0OJGq')8Qruױ?yHef]X/_όF+ospњ"=dUm8^Li?wwH[*عoH$ e[$W4B{#K7=EV2wEz_Ҥ@³[^NKA8H2ȣٝp iMzSRbNwTJE;Č'qll6ָ7U'я: Ӄzc݊{m02 n ݼh/!lH 5R,HɬlG3^֍{ :@Ƞ~#\ZaΔ=G7ے2-.vzYH_qTaoxsq&}i/I\y}1NQ{>s\T;kv۬Ir<Lb*<-,TmV#0PI[[$$J3(Lui!Z׻_ѫ~~-*q#KMiʂXF#H0 `o!MӝeH\l"Uq6C;Wv9%o{IRJxl}Ċ0$A^aa8Nsp#owr.Cy(xZh \E/ώZQ@ƔFiRޣ0UKJ$6NK gu28UkTwr"ˁ;zdBȢg<~h} q8PdnQ̎z(f͜FK,oa*cAD&;hbibA+5IENJ;ckabA 8!ɴެ4d:ң^)< a:lz 2WOI] CUX}Se;px>,6QI-e"Gx73[B@=h^0HlLw~/z6x"&ښU+jܬ!_oBѓjLsz颭V)-(QGCDU)؋vM~ W\0q.5(7CȮOr9<6+eEu`N7B 2Tw( 2%JOxmyr_g(d w_X.by ܝOfM]T7gƕग़StJ.Ud+}MD:nymRUt=~! m4۝-;DCG P#$=`,(p섮GUbxvFQjJMl1maT'} WEePc{ \2Pi֑;@UW&I2@Z }@i@4/D]V/B{wÓ]l+m;^VӞL7H~Q?id[R?]C⬮a=A}w-bC93 o3r`"09s@BpIcsdW,[Z7HHB'E8i/#>NBp Fgw: ոN7{NgӒQvvY[@d~8vzɼ%~S8p~FaSň_QwX@MT(~* Ywⶮ,:[ý61"%Wkkc/>Cnò\/.CZد,f\9[vZ]\[Ƀs*oJBҎIg[fi>2s!xNjr8P`ZBz*e10'͎{Fa6ce'^Bbyͦ6r\_[:_qKf|'U[e%_EFigNp.•ZӦ#} 8GMyЄ=~N&UPa)Jy*'%;Ée (ewm >A/EtݨIM|k0/N`/CH շjK#ā?1],m_ޤ[DC+ _ O]sF,&u<={} IHU~I>Z\S`?dMur'aM͑"0huMEx%"{L]Zns*"vJ\Fv~b ldO^V>݌S{R(2J4d%w-#uvD3yb"zZڨej nܾˋ$5<9gJ WTI/j+ۓD{b#.f[DZD!dtۉ~kٕFT;gh3jCX<=}m,1cNQT:)ε=j`;D*}Z{l c{bf41I㓙>]XI>IK0e:^5HU 쓠 C1%p@,dJ hǚ ' Y9nN=#8åz6E JR |*K #Ĥ8T6?w*.C}U1pZF?j8VWc'YD\^0[)\)gpgz٨%6@zO8 ȶh9GML{syy=5ݺߔ /%9VA.l^J43gdWWCX/ڢ7V@hP8kHS#ltr]ؔV`!o2ٔLx ֗#tA{HĝS 4ax%=iׅtœʵgҎޔuV8A"},F..L==e&rd= .Ј_ ԼH'ֻ#0WkN2If]<\ *PKVwʢpyuA*;>oEs9,.j6!E\>/$^YG-lEBZRPw#:g ro (NԒ"II 3ua Bׯj/׊ ו%@A~7e *~-ŊC>ÛC!I', eQ-+u ;?yL}[̵ 7P/"»lpZG, y7h7x,[ X I:y*z5XyHZT2 m4qS$e)q_I?rҾxHB) -G Xi6cFT^*=^V{U-ܶXoa2卡o #f8-)\M2SRꘀZ5~OF #h+4 ku w;2~΃kyx=[&~;L^\$:L8&7k-FF0á]hymy!]D6=i*xwMNۣC68G |C|~ ,ȭU<-k<G5:9ݰR_("hW1,-uUS\Nfؙ{:-&+ 1y@,riS>ޘAB 19kZV_64SN A! fQ> ;g~1=Ň@x X9' {ӫ>ZN]VG*E$Wp=h_<5>+3iN`eY [gAG!/jى^ +J~Tקl6G'BDyNoF+@9DjT&|HAb=ʲ/MGʀNdQO\˼a?|Bʧ;UÙ#J g|#ޘzOVkEAS (*V@?4eܙ׌Po/`IhQhibKn hpƫS橛|irxi>6 ;-T]8`Pi'lgNWuk&d8J p4bYXq-vN*L%{X oc)`Յ"ˇx>Ԫ{oWY]*B$x$Bɔt-e2CQp+Ǘ 2q+\4aؖn '3HXa$E7cZդ#A gti[׼acD`&<,I)rE\"TTvvǓZH QIIn7}7*O=/ AbR 6gym$M%*U08MM9&Š. 4Qt7oFQ4F"\(mmTC{$SVP&%!6jp^k SڏLgjRҔ h餑{a^h1Ps`Q#lo(ꏧFgef|;BIeC26~y>%T@'Ԙإ[РhYiФʣ[L[+Q1n_G3nc͋̕&Z~2U*j0>&*76k噮1Du"q7Ac *18e(CL4nOǬ+O ۳E<aqȭY}V&N};MXqd/^կU#&zi7uNAh9~u >>Sn\Ǒ4E"ȰsK70<'U c`ACBtn~^9:sNJX5'qA=X8VGM-;YMg6s7ZQsdZ6'=yj}og$@&Ó;KvƳj ~xp,KB"ldP Ekˬ!t<u2ǰ"-iXN|</3uG3#t(m=rމCl30xKFm|F o%/5~zρ z{5+Cf>f-"$Hغ,8/c-n[T6S*VVşk?_9R䢾*b r9^Fqs:}+ qҧӮYq1ótMX/բU_׎V Xd- ު6QM\@4k][lG:P:]>GzT:qՉ9av)}ٲb:A)+k?CF݀@D  ]vhA'C  N6NE"1pZv*4)Pz'Jk 0;>9PܻG6Ť! B$>-ĩ<]FgK 徖MYq"a $ؒIMm9fh+rTIBNgia]1°}bj@Q2Gjb1as` ٯnG&4KI;٨ҧ)4z)DXW.2ڢ+*ire"kpFh4hxg ||6G$uPlgܶxXWs%Mb8zKeEo|?6:0UZC[Sj2|g{Õޕ\)?/qk؂P,˙>ǯz9&  pcm@}QH]ǐu%4ɇOs|M.vcV4~1J 9 kg'QrНS9/D`E~x.P H"ѰۃUCR|no|%#÷(ƬoB4V ` Ah]l{o[D,HI2^edrMw}Ɠ_jtZxK.WXWodPAt9Pr,ٲ_tSL}elu "o/RsZ5WhNbKӐK ovRpM׀~fn09bk/>Ŭ<*4; "{q glurL ?ywU0ho#S׾sنm\g1lV.o(,;qޣ!ΧTGXZ:<đLXhW e#Wzpӏ9-wg0D8?CKCڳ ǎ#v<.ۡwn啤uc }DPvT A4hE\ u5#LTbB6'?WR{{'h9 Qkgy4˾Y[1tWThL(s>9?2l&,ދ w43Eu B$\x~ԮXvGRo1OɶCFqb6QKLMAQ|9MW<F ΚU:Vi@vS&b@/Yʺݑq/B.g{1r]Wzrk%4sh٤4{,hDQдKi.89gP$c N@kRؼ> mR:h+gXaoȉPu}y̥>+Xфb9m}rPe !Z%wTDh j(wX Lb^6Abzs\Q}z )S8"2qo6z tnh5M;X e-1e2T^k2lLɤMr9(#ԚM_ZHp\ӽ ӥ}NBs=$I*o­VWɟt/+{>_~΃brޣwGZȋz& 8Ne$_/LPkʒ1 XA/XsumwdIdwO),!]Q\'XIh;̵FY'i3qh@ؽEvz;0Vl3j9zIgХ=JbYw8Jx1QAyAc`LPV&4EO%Z/Qu_3>c0 gW+6L~6\X)RrAX*TJtBΰBSN-ĊT,]۟#|2@INΈ@m Ռh|7/hӼt?"0O˳@!ec;5VFu?I9C(Kzٻtelˎͣ, 7bӢA3֗KmӑAFiJCr3+Ad >~ӭRȡ+rCqaGE?:^?CB ͍2 Mq;q^sކzUcpIDco98_Z풱?XZ?ܱ44R^?gUW Ooה3pr- ܠfs= n컁;F@fk_)a}Ry,bcJ󖲰 Ga=#K|9 .B*=N O^wjJ@N4əl8Pt2.ThAa U{WϢ@3Qe KqL'o:-Dǯoр3o\o6,q8s$\v|# AN`yN¿:zm"&_N߾[m}4bҺaqMsk5q 7; A]I# CFYA=ePכKE%+o7S@DWhe,WJdv3xFv>EbAVé@ߝ{GHiRLTk3+*)9GMQ=LUPF30t@*ԊG$JܽzѣKfm’# TJX5 H8Qoddñr hOD[lFxJi'&z0a'7 ]і zu"c wrOAY? 'E 71K übBQ-va(pʐ|&ؔz;-uF9M475kvML=XM`sVd:bWp->9gh.w^~} ޅ ̩1b!AuOڝnV)zQmA\Uͨ)%g 1/k\ >#2Ϩ1YHo ^cn/ ӭ$/|C=e> p, 3o!:UeR}lޙ/Bg)+;m#G«\!}UrqWN}ur@j?IA*B [zAf #Q-H'vfSKQ>,KMv<‚,9z b^E619 N8ⓑ=-lrE!'m L0H9] Ǡ~KY(}a+,yVtֶEn-LDQa&$КJȤ^L/bN_L 4NW!"e .#S_ n_9n$[:~lB2u)1xplfWd3Gb~DhOMl RGap%E "s܃0i S KA+wXIg25?;Aa '= Z5ȚGt0) og+ cA"Z娥*W -Hi)` 41խf`9*Q\Yp,2Joƣ oV 3Zd >ZTzZl*0ob7S8GK U~%";h$%<}yYt W:1 CLzPO艋H9`Y_t).^ Í,x =IY42!4QXZN@O҉ i}L+AKx/^u ﹠x}ru$o[t%:nkLL-k.|{+GZZ}M1UW맇NR_:GKP_B @a. l}Y7SepYaQ*CƣoO>>g5 eB Yyo598-$~rl#E,kW'?F]3L%& n5*IoU'B 3ڙ([vn H838P}v<[X]VuwQ̠56. .W:P8][~#08*&Q**,E.$nL413/Smr kR> @*$H $fIH)؉% %]v!5c/!tNHWnW:7|6[\e0@~F!%PLs|-DmE?G<~dD؍Jf|(44B9pFy=\1+' u*l#ge"(.j@KAD@Zbo{19tlݣ,o\>Ǥ:X U9eh~P.^9DV_c֌%\&E@uɹ6өa5]ɽ-kݪsWn[1 3~sI~}viK{zeYv^zP&Awpeqxa*Ms?r+A#nyƢEBYwwhǮl3-G8sSZߚJWKB"mNͨgW{m_Q!r#]v:&~iQw|8nb$ %ȫYVsZVϓ4P9NG[+\.`:⟨O~ ,[|'r"HVf@Qp-NG3$) TÈixX?J,(B.a0Y멄aO#g G1 +u+N )wE17nfH1edH'DRR ukt5hҝ>/efqPAgaz{l)C׎8.fDfZ +1fW?Ո6.w`[*ZU`ކj-^4z]P5gq478bCj 3{O @SK4zM$<5_Fy@zrA}`}[ktLQu*_p Idps$|NgVWB/v Nɞ=U fb"e s Y%TPj[_.)&qrADAJN TH~k_]0J0/ Z'lCϬ;g!*o^Yy 'I1Fȅ{`"%^e?X20L6 α(~>mj2&^&ۑ8ff}oV 0Pdw7}u[VD3T^8}o'ΗM~AjçU; /YŒʻ?_/?bIׇ>z֊C_@/h]( 6&͇K#g澐oFF(dǧN-m>n8Dwcfgzc燯ӃYl$3rZس%J}4ـdFx٫BX WiLH(W(xYuktC5%~W*?bf)X2;Ax=Bdzs5 HM_sI#MMM`gNF5&Yc*2gp"q r\ Tџ)޸ PSl;B8su&PĴѣ5} 1wKef>[jyn"=`j+KYE2~sO>( b l|ɷ[ņ.Opl>׺M>%u%N8[w$ÞI zg6 aHcJ+GQm2҉ t)GTh#oPQEaw>Y€ܓQ@S̔^FqE0A$>O]/޷lꭁOT teHK-\i^(bOXҴoLQKxZLI[\L7ѱW_E:(-x{qՃ,zQ#Seݸ2QXF$/KgFBz-(^-WkEIbLQUEmgztsE.};G|Q_8/TWM)\qogPFV lEq`+T֋P.lG2Ƙ LGBX0(CN;Y!iIд Zb0A5xSȧ><0jcj'3xr'qn2TIO'8+8,e8)<*P\kGU7ĭWžQDe0v@$cPسM +8>IqSLMm@xs$h"p.{GTbkeYR0C7W?Rki[곯#UA^x.SDjƹeZbNO e0V>,Ԣ 䊋Epˁp2{3,A;OtVYܰ|9 B{;5nltpݢ< Mʔh\Eywmk;mȡΔ9( B3U8FS4ܲ6%* cSgEavI-Fۇz0u/L:L?wWJn*A78L3n鞃FO6iohӾ(#Ԁ2cΖ5]t$RR n A;puPpj\*%A5]TgW~p'[_yW;?%ciauƅO&Pbߟ:0CKT egfGo2P7#+{ cA 9wLbnRZ[s#a@>DFe5L}F➤H%#`%=T޷{ "o%B Hyfnc|4q_?N.Q *D&RA_2tq_ Tz,7,C"ey +V~:n\R2Rt Q* Id<筡dV\V!#%a(t{혦K5e.1͠ꇨ 6:+:_|TȆJsoއKR/pk :O΄;tI bI5{w8́[0ytgz&*n~#VUZٌ,l-zMB Y| 6jIUՌk ybR^:D;,lzIKp7UBSOism coW4ebFU?-m92y$WZy3. ue'X%^FJ ,E\i+^,<#-W.yz; .l/3U sIq%dEU96ȧUr Ґ  zt݈u& @(2I؞έb,A2Wsw)2OgcvA \Nv-yhd/ra_ƞ-R䰢Wxsvc w=mNDܤnqNh>Z-b^ά8T2 7ȞKuw`o*sPY 'К8.q=YL@ FDw,.y'}E#0#tƍ )If^IP[arIֿnsAH&]}{@916 sv\Ϋ\&R/f†EnlH.fmuXaͼW22记y7݌ 0W Q#Gry D-OkD]{^u>Bo΀A8k;> s.w+3&zHXoD~a7i6K.# &8.󹎶 ]رb m@Բ|RJtXD$3r3z2?6;@2r6ȔpV`~VB]I_^m*=9KFa>am< ]~Sq5*͡+$iyT4rL\ݕ?v0&}X.yH]( !ߧ;fŤ:X9m)0PZʭLu ]怉׭gM׫qHr "QٶP=qgT^DO. (7L$IAB:Bn̰՛jW" .*JQhٜ& ds* q_i9Ffj"ukB}b*K(,b o]qԴITfW9SAҊ~+j33km) Z OF ~GTe j Ǵ?\Iuil,:}txXy@/'L?KϽ3c,xBt}~{wկ:H`/D8hJ[(6$©Sp{0$I|/sġx,s,ZVHHGȈ$]zg̉ q3k%|~_uCCBUgh"oPgi,Z7X\}:} h6lrgŎ;{|Uc4%wg=pnD`.rOFOw/贈4XxXos{w-TNlHu֚ q;Ś&V!`o'ꨄ=$"4fZ%Tnō?xMќ5)ew2q'0riKQqo:lX4%c%.9yXꞖUet|AAsxI`: Pl?u9P ӽ9zx#&C 2It[;m5!mr Em9LY <9`stg,$[x0<: >?òg, 28`@1 Lgb;sy3. VO0,5FꫡR+.UY[r[Zd6e/'E(zp`fa5L. ^6XV"{_bNS?f 73t&8}E.btR˷3:/UѡF+ zYmֹa99 v/ <,gVu ٧Wd'rcHE㉸1Ұ~mpr7m/SxU5g9G5<*yE:W1 @-HCE:WIPik2{9啖)߈ {% xpB*o`@y%k/, N0H!hZ-2SXpۙv@2"N x A uRڿv,Y/-Dkao/zj{Y_ A=peHc"q~Gr1_FZl@ޛ)|Fָ1k"!n^⸵,IVv 8_gES5u9 ox22g(%Aͩ_v?i2M4 ,NGaJ0c\oA棠GY ا+@&6fN< P\`<:^"-ÎZbW[+ZMUB$SCVןĭ O2ZExy>=2MQl͇G9fEUIrqz^F7ԴCD?q?:X6gGΈG^Tj&shқECsH YWVu, " ĻXI|;kZtbB?R(&0.}l6n-M6+ljcT RԂ /_ù'q*(%~(ozWVX⡼mɩ^د .x pvy2#?.-guTzEtv }ƿcʆ%Y/x˽uղM; Cv7 ETu Amb$E!o7I Z0Q(m/A\8mzT- SղM/7vv+*lc=SSzY2$Xy9ئ1jpjW 0$ɴ75*R^\HSGxA I&['LXZ}| ^5 ?ⰠA(_쮨[ #CLD.l83F6b=Z ?Xl_F7Eڭ7|K( qI>sgaYN/÷#W?d7(L5% VE^>u+HOQ*?` =} \M(EZOy BzFޠFwrFr㭝wG`[#0㎒gzHƷCg_T)ԁ1G3 +wb:bsSz1.=(z˰H.O}2L%CL]|x@]ʧqee#>)ַi۪"K8`3m&憓*le ͐pL"dɀ E/)QSwgyP ްQ zH<:Ս5PlH_iLهan(ak2*\ޯC/\FL}5/lB2eVG"f8ZBG-<1<j(|`LrZq aƕQmD/EY{s^ݍ$sc |>(\>ԙ_s<GHdqXs>|i JeV.Zf)ZiGBwCUEΎ_f:%YyX~R1~hyőp5?6xVҟ/ZJEBU{iLxwN aj{);Τ`a}k`?0E(f Px!g^eI? fGC)a~{UJ`dh"M )pi\@ pȒ=ˉnmI1I XQ0K4{qvjMB{ iB_,LDG]e7Q;kYьpbrj@q,N(pDP| -ٙ x11JRTėIiQv.घi TIx.<ӷ*^%ƹ^1tл]I&BxK fHU@7XMwq貐KWo(#k*`GO":;@eխH6.,9@&Ư8j)tYM:_/C*OcRJv꧐>EH yx=/G]?`'t##nͼ8,yOd2z?a md|BC$v* _ڮÞ( sΞq[1;A~=|ѣES40'(GP6Q +$5spbX&WHn95~?[ԪB,89fq=-֙4H9uN!(jpz~~Hy‚ClycډPVEZ |t#ېi0f8&ڽԇ>Mfh3,Gۉ5{;[] tjC B6W AHa#vR,Ag23DosRcВHO7vKOƲJƅ4A]V> 3W%209jAŚoA)l~Vq]} Pz}Jq)؝wqqѨ&~>Mjxk}t,tP`ɩ>xLL&0L{|y߲>oId {^K n $ ru@];KpYP[Qո뤩bG04C/jX@SB:- ّz25`#?{_Ar*L.",lm#@Q'.kmKk݈>G$/F]o|0>8$D?9ȇ?.)i#ﯥj%NTbv=1k|' `_LB+WQҙwT;QM0 Rk8DYM F  `:`*UW82,i/D9ygb9eIq7byP-~ 86cfAڛDSƌ8ziF'S?8^2+CƧ{+n]w(j=ul\̡IfC,f>SJ{G{̓x g†S ܼIq"tH?M6 ,XxׄՕPer-qF/:d u+B;{v~sٟS +SU/zJNBˌ~)`p/X PIafP/Ъ+rs|{݀ ]I2+SmN4e1PYZqAҰSt^,ɷTs~Ptu6Sj=wϷ9r+F'WthY-17?rtI]Q +[jtLFBa fZPB6za9X+FK@09YF˩y8Aql鐽:#dh@.nn+Sxꟻ +!ڪ*.iB<ۢ &lQ15ijPFzü@EO^!)Ƙ;nV>.BSۭOP檑F5`&;0_ M ˳+x+&2T$jZ$COk!_ݖBg]H:tgP4g)NN96՜j5I,ٳm] $3'a7 mL-w*0{dg^cgqjܭ>^w UV`T{)o [~/kt{d?]N;h_Ј2iV+ӭ;y<7G;wYS"5swi-I<$sLR3Qdܒ/)r0\1[F2XwoZxRwbBR!E/Dp݃{ׇ$Тݴ O2p}xX\!j ีK SMu6YxY=%h >\Kb,oW) $VJ`,s.\z=)8qNrd$=(YCiNT[J遙^XjaN^K~Wq[%"=paE&xM#e w5dz^)!'~u @j'޻! 1>"rZJ"DJc_x a_rs*UZj3 H!ZLq+7 qI~ĩ{w<=0ڰ):&PkxŴݖΨpdCEݩ#-vڔ◌QWV!.D#q ]clS_l܍pPusRDR/a# Pn^8;Xƴɘ5<Ao=opRrP4ڀUւcOoauvwozݯcTÖ˄ϭYLmv ihxw0E?{>opQ炶l[=M<( s> cJvt9HݖLqH}q wՔ}53vOHH1RN9]KnJOcS7| p1!T4_m3QqTǝQ$QDtjҨukOj]-%j˥izqr}i}-;qQMA IGjk~xxbB- ɈA/8OL5TƴZج46#ԗTOs$Ew&GdPm{!!;AW=HZ  PqLuo=@wmA;La g9-"-RԖb.cb1̀Bk;tb{ sS+)ll{ʗܶt:wh5C{WhԗmI `]ÆD=<ΪpcwTqz kN+T 1|>6h)o\!q#!HTIskiI2ވmT~Mi!UbF?&m+y#AqM鿘 x*}拦kw!^>BԤp7A2e6ߩצ "cϠ﫟ϼj;[~-2JtJ~oVSĞӴ5ljQo'9۴ZЫœ\{iR~JF[(x@Qk3(p!CUyP|aU7.'6mk4-wge6\qؐ o,JxgyWN- .C"PͻL9&8W~0Tf[9CD.Vd7oh5ưy`$mfƬt xZ.)l=% _!zR'[d5o@lIBh݊aZ5QRc)pvkL!bFCHuh7ʯk[B*7mg"+o1 t9l#1ZƟ10T)_^9s*bSQR*ok^c&#"vC. hUrfby21u'g!t+V^BEI-TId\ wqu@+>y^O]GRFXbsx.[3abղ?*$2Xo$G,dy}PcG) x\p) ] 1*'d݋qmrԺ텨OmU&y. ܠuze9/ bB=7}I (Sq5/3}֨Ou'ħi#xZf zFYonSSw[gKqׁN p? [4bTJ=}x 4{@Yp 䮘33k$ f ΎJ>@)т_}M1 \dP}耭Olc4cTH(ej d#چK=G vb6h&d94V*aF35])ݡ_JxgUK~]bߔDM!?\@ `U"2!q{%3^z|kB6bmsZނ'-ÎWL|- THD(0G3~{c\jEp z)pt,%}=wv9}'L 4ϰzHpHW$O* [N`R},n=xBJ+)w*p[*z y`=ՓАqܟܞ M"]!Vr eY\P]Zż`;5Tkd"İq힨bNIga otx\I\l7p]o_Md愉5 VFiLSj{3ӝ #J*eȝVʶ Ցd36 S;B߱vʷG^Em;W|׼(5$q 9-8ZS1Db?h>P+"_@+&n?W*IҜw4 4]2vVhܫ;\Cu QS70͠<6O u% ]'lF|.hoga/+v*"<=#$z7%v:0D*`(x!kP N++4"' hs8)Q?Fŷ3rʏBTDy rNK^$$Զ_li27L6 *zdV΋S)_SPU6)+zTvl$dm4ɯ Pܠva y?4bv8-M8+_,Յ"wϩ ,gfvg"7x0ug(ةIF\:gECeGhK{ hN {FYÈvXB?5)ҫn[ TyU6: ߨ[0R 8Xm˟AcPr@eg,J;S~&o0p1ma7H|‹@hB lq&ej|2+|?:`JeNk};\,M޷5!0gu{DŽM]6}0ea}QG9A9UCL?ޥVIt/DvV(}G1m"5(v S%ЦY\?"L]#|y"kKH͠fuMَԹc 껐m0q1V4 4!ǘz3G^#KN+z+ 9c w̻#WkvdrDUGк6J$TS; V( +plW}ys/a-!")Oto]|Tm"}cw?h)cORWs{"b#F?';|>ge?l@08oAXS`:e.ݝK]7]'aDRQAxKmc^-e5O% b\&#3"b}QJ ]qDfi.3׌ab'stTcAF֥m +W6Fr0o;G$h혓sJڎ=>bfcy uŕgDJLj}ǍQZ`5JU.#YD$бl $H8i({aY65ZwS` ¹YҌ5ނ~J d)Msxi{F[>D2 ӛ2QhqtzN k66{+!cyKiuo_yK*[׎ KK+HVҗzʹ]bꃚעg}1bMU MM*8k)(X} p҇io>%0cA!ʗcMm;pdп\5;vM젃gHh7 fYŗhEQHQ\ѩ"<<@n5) rXhTjؔҪZy 91ec&/,,'GŽ$7H m?(Ʃ⎉=*S"a d;g 33ch9zY"n6T&2 %mVg%;un&i&!Z%Eɍ(v2!]IFM;6MS;Ύ8/9 D|Hh<$OG;bXn5c_GZ%m)'չәKq7VsK4+(d k1q ~Js5,u|7~*9/zڪ^&٪'/n!H|n+- 2+Ӽ$Q(=X Gj驵 PIjCESs գ!M#n}uJrOX2;Bh$-d\w|PTW=7Zˤ'%HYws+m?*@7t%`I+D? 9#4mvo̊cizM;i5aAXƃfs.FQ"Dw4@œA)qAeR0V[sHR-uyfYz@cz57OjkL} <&H dfl7@i݋ zA}'Q;d!h&Sy ~O?!AӴ5fPHsW{ƪʶdaEFT?pR79R7H3] 7;^3PO ]4-YFGd+T{WY-Y uLҤJ! "'Ӹ7\6RKԂ~)|NY81G)')2Lԧ+J<'X*0#oUFP' ɴ"pC!]w"jIL:re!X O;"u\;@fT8x~lkr* VawmhZq_Cg'xI5&K_RKz>1,%x3*^hu2cg .CA&y>JIE(~i&zg%0qq8EWiKLLV7S[jd<-ӋgWAm{Ʊ{=Qv=,#6-qƮx8 ?2o7hzQTWZIo]ep]px4S֜ۃ7 r!Lҁ54y]j=ON3 z*҈ Z2c[,/EW!Y{S/ci@NagE-u,ͨkٳJL86AGnuG+x@:R(m^fd Ug4V),gAO x'W-oA_tuFpPHV8'8\qss^r1;;S;A!=ޠ?ݣcQዋ]YZeɖ`&./[ymMQQnT/"Zgi ]ݶ_,w krt[VtaSunP2.38R'z/8+MSIhxbAXą~_t%W:G&CKna\Z묄!]l5ڄ?64DK/)ȖM?*/nP d^6 K) *Ռ_||HmAxO-8J$ϵZ6(tQ1&ʺ(@ĉRzQgYR>' e%c&NNgv􇁙wߩj|NI!;Wpa>CӘٰL%\eCHMX;Ac^ tzl{'ͦu;kA1ԱnɉnPYQUf(=%})d 0;iEсbXCo!6f+vEcl;a?wn7'/Z}@3gkr  Z *UEL) G DBZZYAY l*IߏqT>}| ɗ֪dޗw 86'RdSD"YoϡNf{}E-#n3IDnC2vu\S/C@7!,ZBJ7&k&=Jjlz_n {laVc.$@\c?.}-H8_s\ >3ءPNIADG8sV! PS &Iy.;^s( Qx~6.8`l@T_)ft-d#Ͼd\z%k̻)Oe!:?Q-8̇()!Iү:*(; 'JUT6ܪj|lj1h]H^i`/oRJI/CF tZnvqwj%/8K#!gRԤC_¬Q"¾ 8K-Ni%"3| xV(^'Vwsb2SQLN2vX>ڀS]]ȂXR'T]As 0+]px!z|~+!I0)F_OTI)^/-SX$јX bh*[G-rQ^7fƜCiA(%{;ً HʲN1!3xKB! u?LhbGiztӼJ%oF\-+!q";L}o#PhAĺ,HoA$)&~$ĵ0dmx^邉+bQ$ڻ: wQy/O=9:|ت]}WTˍ8Q89yӫsbo07ͼg%r-;^`IO! [\l8_o kfJz򤔬Co%N\HV\uFj<g%ST8h dWf4,>2,<.[KvݑoXմxRt@±O^c^;E{;V)`riD9c*rAw ۧ EaeHD\S4%r&;ZY(r.*pTF"3A:tvhKJ`anx{[u֫h"AtsRgՏ!l.N ā <:(z|6Z,uyhc3Pl>@~Z_%$#fZ݌N2hU/_3vü}\qRVP]c ~ο2҅턅XA}%ׂꑜ:ǑbPli~xSp<jŨ36 BkXaz`DC݂V @jCn|-1qfAX<-?S^\g#tIv>< ҢL?"f[\ƛ؉9ءoB`ܺbPI!5mF~2i佢H{-It Ր:Z OQT S+ xra%M;%[ (ɜpUUwׇz6ܫvѫŸʚ@A~U MDƽeDꈕ$%|t"Df-;0S/U0P(7e'f@v=ϟin4[E 9 il6~웼=u:Y3Z+UM7Y #(5Qݺ,̒BeAPpx[lO9]]# /Kɬ'I2Tc13ոvj\ܬ3zjUS:c4,Z)66di^F@^ɢ #,`,zi96Х7"xگt|br[Hy"S?9<١t8|rbʬ=5UضC^>~@}rWĬĔ9|VDQѻEMHW˹APUُ+ZDSa ȓq{1c;˲E,@m$>+YeG 8vs})?&h(iWNB`> \(\r`B8m>PW1֡XJ,4Nm_lv`=}9K@/R5bv  #o2AOLt]X6` < J;ap͙ZFxZqc(XQ^(v )tsnotN{J&ku_ lh|g{5m6Uӌ}w@ӗ@j*e;Ph^fƤ`Djra>!>؉ d0+pԿb!M[ AWr ŪIb\(⍌Nz͠[zے3[ *Zg!H~ EBEl3pxog@4ޗ[)|Q7Qs_m0:#p{b5w:ch6):Εh?{m}+$= |x*uK߉COj>Wf958bd 3͡>ܸ*0v=Gȃt|'CC"*;yb_d)DqcWʢe뫥<{R:B }6q4V g>?sߍ+ֽ;|芒2/T5y ZuCz {8fE5PG F`KJWYSS% it(ld143r8_ ^ LWRmCi ^^u|<*}[ۄ$2Y#l{&˜Irg^4fV `] X~Yqb34m^Q>x8ݐ}xE$: ?=-C>f!s|ޝU BI#'֣Ou0e0 b-eR\Sr²sfuA-U;Wz(h]@fhu3BSGVl y;W_iEefA_}#y}ƁYt=r'!:\0V[}l1-?S pWRcjW hIC2Ηk+[-< :_s_TFr 3Tߢ'ܕՌd>@ Eo˝BX#[7b?q!X_Hv:گ)^0CX~&~F֮u=Q {TzY9Xǘ_N"x!LHUVFN}8@Ûe{}Lo-ܑ:A;'٦"qUm١2<+Jռ]RA*HXX/\[=h?.إXU/Vn| Կ)Cgw:2H{⼵}E`tJy[Ek}<<iw_ `.6=#8dd 30 t>d4 J$z||[ɚf<}ʭ,}dXt6aR0񂈌Ap<7Cèȝ}Bm6_"1E5j XX)C)Ŷυ֥@|t7gIW$j>Ei-Q (}kBJ,.wQ>|~%aZ/%Dϯ0cq<_lop]H֌~wB4 K끄V wk*p:^? _$)o n~(ל|CF Fx &<;H`L6{RǪWvc\}BpX?^[d^FF(ur \=V T!cULG&MV<R-Ec O'D*> F&k%>=zDV('T dqP٤B@Kq!`qucT`6`^-燱 kl;Ki,ZCA,pVȽ oħ_q[6~Kn|mt9G/5Zp֋,Iհ)%IG{%G0HjkI3 T튀2W 5YicE-<5sv6HCCqﰞjqEE&825=Ǣ}]Y Ww @r|G?򵼻 ^G(O!j-(YVP]G;':c+Y&ES쫨c&\~ʐWu9ʼ$-C2.$8`٭y RpʝJTO_ti:eyCS!1mP^iNN%F^(m HlYm*KA}3m|cPt(erƼ֧ZnTJBK#~6h#{uT-bύeDmHhDe q,4 ɀ$j bbNK˾Ǝ^/fK%dK Sd IdeۻibK5H6%SHCWl394n@:B*?M>l Ϊ2ILtՖ&_FA]!e+!䬀W_ av@NZiɂ>a]OK&$ysg>KL 7w/[*\Ų8~\Tمe`cԠ`a=+Oy(p7,B5=p'wD˓zh ԖGfz˶.B4֌"9jC)ei8bAoAކeBS]D{&X*UړHoRJ}k;qT8^ ϙޫl YL~ |=pF T@ilh$eŮ< tJ3S[ >DbH4(ҥYVs`X+%Ǩm0we+D<\+} <@W-;L~+x 4wU{c3+/eˎD7|?yX[&("LN!߀~ղ![9:"ԤV+&. 4EnXbzi?h]l>\=6=ֽ1, I~Hkڮ!#˼ lX)uSI1zDeR2@٬_ɍ["5JpHNBr^DD'xXP~-C'ߧEy[X?x5#,pJ)y:-;@7_t?"q7kAĹj%R4Ϙ1U *Е^p}9"H;+ KVh(*hf1ad];cZn _217S0KMِqc$|BZGI'd}f_tA`!5lYo ?o 0Q}ɣPű3Iid:vvLr8W56^ ntF6p6c2;B\ܻ>Ab:;R}TE S{a4`9}*5kŠ(NQLzǾ+<'OPkħ@Li.x*H$7W֌@A ;<0$w%׽c6U,535sŸm+Hbi2Q F,yB٧@ߓMyUUUw߰-aP#+(T2m~}oĭiCӸ~ {PrV2&u"g"Ml}CdtljUG_#zcF.}?VFjmKO gH ɛV`!/[Q -uJisIM/Ihh~HN_a(XpF?=LPL8pF5;Gk~[3p\WDe~A$L g,UiNֹkJCVok)L]nTH nJLM,CJ#1Ȝ'D~ cylQlIXyjK+WQߨ-M"ALQmc[UEs^ UǒE:7&}J\Gݓҕ/~Ѓ|Dֲ? LKʵP@(T ˽{^H!gfv!$4-nn) 3ZXYdQV'r#LFJ4\)qh;R|Ծ 9o<||birf}j7W"6gGˏ{+Hk+Wǯ#wJh%A|N[ ['@lV:>!q vzuJ ֣'MjoB#"=jۀ|uk[×T=gb\tpW>ж>GcKXU61 /Ӱ}4Zy>(.[ T"+0 -}aeuXF,8Ur\!ђx4Sei>E@@ڸd氓/{LSvR+ ,} Lbs'MOKXa%ω|\<MI r_ַLј:DKH:/=M/K档S왥ˣ;5İW)E:07s[gg[IU3{#pl*vsBwޛ[3Kd X@d1z+o< |S,IU耧SSE}Ѓ[U!ʨl^5ܐϋA_s~T9H%`V_@:\R\U0+7bgJw5}|J'9>GFw V/Y񝽄eig{. c糙;H <j CLBx"\@_Y^>qäJ~c|)hu%vzaf\o^р?~,$F7:5+a_P0Z[.If##S?8FO6DSp"3Nc>&յ9OĖၻB6VW^:Y5!*G=(Gk# Jo&@в3 6V zxPlEw^#Wn8X4nקlChD%-Rw8v[sj59^>XBѺb,WXH :F7ho|΁>f7Ӟ&ɀ+)'gG7Gf~O3Xl{e֔axXJ(06 GaŇ_ZPH5< .;b%ak;*jQmJ< \K>U7`$q/l\QR`rF7?Zp=ghe_>Ce9Pt36i3o, +2y8ᗇ$|6 Ta9>Jkso~a ((,fBr %]G7+#/={4͸R|7ږsT.0hp':c OO0 ?K;7RXk3`C"M 5GXswGN1M \vvˏ^f~I P>wеNm6MyQ N(g[x6#}?8hiq-DE\1¬sR[lyB)1a-l#cN9n}XpxKXSѯ}0bq_'}ڢ8aڰ4y{u$|z6eާkX ْ;N%9ʀA@Tm!*U(Z_U1h"@bOW3w5aAsa> g*%_+ʹVxms-ltDEANJk:jRӟ$4^QBiX&uƞ5X_ O?Ԡ975Ę='3Q1p20Zh-Ĩ/S<#Y{ӸUdԁq(݉iTZZwts#DضȎ\g؋fj7X$"OTl!(")Ӥ 6zPeiyJB]n *Tuհ~ѝ; YUQtG󤴚A0YP7}Œ,ӆխs.vQ&i/Wk>L ^>¿=.a];m Op̤uK_E] }@ [T{zxj}1"#Pgz&}8F?'T75en>dY`@4tMPs5}K&w,_NV~4 f4Ύf1ːXgTqݽ'*<Hk8?8Qegcl?jQbv5 p$|Jr|ل߈ ;s&8(2U8f~2xT>qs zr@.TcDV ԗ(]g4 2H(ltXIMDaL_?Cr/ITç~Y_-V L l%emrw8k= 7ؤg+Ӂ[4PZUp肘61WMf@@mFK3m^aOsoj't:jlni-a&i DzH;K_E|EKypxˋ8Ά;" b^q#IW' FϬdߓZch\3fyel5ʿWU/t {%zjb~$6d@F+~*ّ<fm盘7!/S=kƑUJ, R{4q& XV;M~qz2 ֧6\7i[$jaW~*;)P169S9L,SSȎ*: 'Ɍ bL=_/ՓS^we>3S8TIM7ǣil/.ͣsRߺz"o`}#9x@[fⱑn̄3| c^| :4@&HvQ{y9+O߹@^SWt'Z_4`[`ɟKMIy߂ H_q Zdgw(Bѣg$Ұ(-‘,W 4a+_8&6y+!e\f~jreUBkiI#Gr}V#zTuߠk~A` "?- Љ)w6[q`F`srJ:z eZxb>a ©8'焞׍X B&m՟ dlnٕ: ?m4s#T՟"2,Q!DKK/=Q0Ax䯾,|TopV鸄LykkƧC-T6Wq(L%YfUЌ aMן{)N}T)֋.ĂE9{!RpɘUfSWZ-~7-4{Vvq4N@@0Vl nCc*.l`#AC% TB:0ؠ_|f[)[11A^bc<h{ؽ$/R+ Q $ kurZ䊊SN{db1cL:I*:9RMǹv8,M;dp*^wvfJOݍx%FD` kzNkt|V:0YAn*$\H,P0;WAʍ<|eXE!d4PѩG@&NW!e.v&ɫЏ-]}ϚlΊic˲0 vQzNENu5LgWyK[mU_k>}xwFM'Br-u=gT;K2jǑ[~&3 KGIMZ[ֿK(ȬB-W4^%OJs(HJڜB3-X_ߨ0v8^ObS{i\=5[[㻷eG:=$BC? l)ܙ2-DoƠ]OO5n-`-S |/I*(M:艭b@˜M:!fK+~ڏ"!Yِh^%*]U͞$M#"p~Xc,`7\'^V8|tCW&*\t.1S8DaX+C(eJcQ> Qh yAsZ8 8J;5PK<=E[P.ee_z%@2WHo|Kh/=SΤ-2QNZ9Tu),S+h"+Yj텝6A`wK%DN'^s]kxN(G ŰJ iU!ձ$m f-~9Ng?^;P 5p+5+H&=HXرuy9U|eM[iOaܹ_fSjH|"v{|M-OŰ9&mjB d~̆eDm*7Ǣ@pc>Au"%-QyJn(|,Z\,2@0=!'m+,za]ÿ.j笺J &>k6}:6kuoqTc:nŋ<|E5 =;iyHm5;%0v,2,h8iBm&q 9(3=||.NLǙ:<'-`o8DR%8m$Viو8l̐+O͒xu1sYR;7\p B;F넻 ewj^?H*nG9a(zT`Σj~ݩ6I܈\.֩HN' ej%9f2ȴ1UZ}ۥ؍Q|;9Wc+ū6n VtWw7 Wd^ ﴕ7Nk&~Ki$Uځq]bzt\jN/ᓊ?nB|? i3Q`y)bUJP_1qх!~j ˯ӱ&X/'>ty<LJ#NCݞ;/CF]=#J95A]ﳥ.Wk Ф :l=BK X@ -Fmh8xq@ÏWB1. Pu1l-XCP}u37mTQ MFKy6\$Ty'k癬? psyINj2VaP 喵נ'yyt]2TlWE_ g$O0:b?;2.~uljgt5ޢϽ"5Ycf߷veQ֥2C_*S=ki;i\$CgxiaYl0Op>==Ϲ:GqBU*wb܄ ?pRE] GU.%ҩ7{F6&Ƞvk_irѡҗ ̻on*hقT.1*/A(Y^ۃe D3rׅnjHnAQPW3sq .չqdQU#qXlRiH3٩zY c S@ݖ8O:ܠOTd犽iT\^s9F{XYTmKx2M^+N#"ـ3@: `o`֟ X,.teݼXJXNox`>g{IF%=[ Mn[H&}Yo|$S~cUï6 "Z*њuLH!.#,YP#F?TK:{,9GQ&jEfmJ]@6_j;7;G~cI<.E 4ܾ]X*}BSA|$g7B^ EoY!6?pƊH7Ȑ 3< J5'%HTqk?G\ 1(VC樄ۗ( G\Fd\&VQU!pbhkk9 Uǃ'BS î&6vqKΪVp^;78sd[xiw_%gi_}y^,1RlQaCס0lDiD/;s΢'qY1a&IEFt] =&IJS䑻Phg[tY3 <ϯ p7X'sW}w^mZF͝x+Ji th|V2Q^K,yxFE93;[HS"\F|U0ak1jhr-dM]²V2H k e`i\͆SNF=űl$L?†8 yUXK*` O-,H=萂EU[O) Xi7;JZH wJ{NQa;n(2k*2IL(=:\wB.$fA6s*` 14~Vc amYߓcH2Oy^PM\M^TvamV?B,c.ߒ*vd]zAScum㐀Jdo$ t0\s~ܠr|%;i΅vu N}"{B8$*ʄIb3RTJŇKNZv]#&VV;&A /%4k k V3rKS(DnCݡGm jXWс 4}mi^UI_~u+[FmKYA% +`A5 2$&KI [H:N[ɬczi]=u~"D5[ʗ,k[F9*iCC˝l9BU1  PbKoP720<P"'0 WLܾwyƎLgBY eΑ̘4Zf8.2)la.LK+Ga v"(m4nNY1qSv%ycح]㉕-.pȧs>!+2:rSPOXS9U5l0vn %3s+|]YS{FGET,X{írN& 3i&Tߌf \K[v,d+<77܏D_]^kug=ĖE-,2D>/'}d,PiHXT%v&r-M+t&%@<qX&Y|C^hJqp@ޝ˿E`U:Q@8l#a-%DH6 MpU-C?,ń \LhCW8Mסs!zGkٜ[V{$;juDŨSbRIR|v톸h:)i3~;`=:vjBb%G=&=-4aNC :ƃ>x˿$W%F`#II {y"H!$˟='n/8/X 7a.Wb_ٳ1Dwik+&*X?@_ Æ"c2e^ v|,k$k psVc#01/3̜~x` Hl(e:[jO97IdCv w%˥Cғ5sxyjP6gσQ\d8R5Ѽ7JsDg(D pdh0;Wfpm{{ ݵ_/ϏiS.aV]N)v.扬 0nXx4v |/%E0\gOQv,|w2kD^G9iJ5$|9\$HQϷc'cknE }] ۄdy?לdJ^#xվrHNڞ*,Nд闩_񈰞pai% 2&?jBTdC?~Mz$srHzfC< a+*>3xADwc` IPĝU;\?KOs-(Y^6eܾ-0R`51^| fZ_ט)AtXq=9KbYZ>c)A3 huw,u qO$aTfNT4q.vw,(-00%VՈ9ZrG ֨ހ*HN1ޗzmIOD\08(0׵Op6Q?)_MZ_qe7Gzv dPΪXSKT ֜+\`+)< :@v5'<J5|<82iu:#QWⷦNTdiyeҼ+K%QnhLkkQab'%Q0fƩPa*lT8f p~ɇwt} z ø{''sf[m9z EJq 6ؾYd6D ^F)qZԦ=Å3 I*''l%Dc:ݦ^tK*yij)h<- 5.'O@w&0{;1CAS,᱒("bU W_\Zx_}5@|ГZ SKu$~:#.m#s9Hwĩ _zbĝ+P7\/զQt(U0 oW. |YgM:KqjU+hKf_vp^\L#uVbz8!:[I.v;Œ R0t]Oқޏ,S8{hݞf"Rhڤ@я ޘ^aD11X}\JpG3·%@ c!]5+pʒY^hK~[XCFǾc O89+ l"\ /R׹#ھ5tD`ۂޓtYGVdo (WrUG_:4.+[=Ⱥ\$~ d^ ݹFeqWf؆ Dwa FU@EO=@t5%SM xmLurh]a {G%''n`:`EOI~GXd2kIj! R_!:ռ}gTE:j܆AzFf&1KP:'S}VS=z}k?{jMd*4'gïk-Wjtg`AtVSOn]EC( T8vPNr rI]#(@?^*BZHK8yXp:塎܄#9KdY=r$~s)GĉĢ!~! <F)Z \lo|(#hSvlFs'$ю- K| T֢g^,y}`'mISݶ;@ 1@nl9Z;cFjW, X9^ihj=NՋorRlC!wf$RI{'&o,f¶wŁ@>bFئ>P˽N̙}.74#T:HQxXQZJ^&>E 8G=*i, LPAq 툨+4=:WvI]`.+3iwB7VKӟ1`SyчM3:i%qkA7Ɇ:N6MaRAÜm8eOeebł'NP񱅔PЮkv (6ILJKr]s'<[9>Y{@Z&xA2%eV)u:m|ˁy5`;t ,]4Ƿ9 vJŲS~L4F,<%^Lh3fxT" xh\wC֫f/[0MOS\Ye~D~-qk8rÉ",|ַwé9X$Kvm w OAv4bim*,H0XheMlQqX^0 k|/wW!|SnTt;n<˜}"57KK^ءz|{)=19o#V)]EJ4jvf .I׿_T=n)VKA3;E灪T3E QiNBn~)08S@Py- 5Vpnn:,9EYKgU"gj\ 0h[97:$5h'^ݳ6eS ']lv|Η7,.L/ipwORʘ9z'bLC==Pi .Kv(,|?qXj_'Īj'^@,N{+=+4`,ԧdc$cP›mFMzBVe ^(stS?w &lFvGU&-/ry߲:x1H%8kftӮ&S_> k=,f+S@HgeUr˻.梯$HvqZzïO_]識 =V0pB :kb::`-?ZY \xAs0F*RО(?]Yآ8g#y$R#ʥBoBXҚ䶈T/hP,0q꺱{x˿pbU{Gw*wZKh^%x,<4r&}g0,|W ՝ꌴ2IP|~@m;[Pi71C~307^C>ڝ@bfȜ?Y_hFIY A1Irx[Zd{_\n:I/HHX_UVBXwm@ڃ7zq;>?Z.yEȩbO0_pE^&FnF4_dNFoaID싂 RҎCV9r%e|_mNmO{%U`:BG\HZp ;B,ENԙVބ'7ןJMUL`zcCTLSf^> W94cfzdڸY&1W^q2 V-3: hb;&vƻ4HPhSBXB=Ӹ9eWoBݠEmNEi T4X33he_+TJ8nh=2HW:s<>wE.5,idj|ˀ&@# g)Ped'櫲56+DA͇raA!ndl^ֻ+~W;'ǎHb.@A '}GA)e\ebz79 Z#%?{-L8P dž9&̳[gR+s %=Z܀ $R/)HO]M%"ΈQ(b& [0?s#vzs:ڷS  T~7VC"WcNki 0ќN+FbM5_mlxT0FmL3QE2!0-jc4ql^&g klv_ >H I,O/¾TXbs sAL`$IYh)8^@lv\|,Fٟcvy0>_Ž!]V.]o[iZ7⸅jP_D8@qDZ+vTB{E!͜HCUڭ;+)Tۅ+SO6l9v~ R ]2>JuR14Lɋg;ah+K0YiPB_mx4?VQ-'WޙUDɐeCW3\cPhNkwo!ul6˥ak)1P"9kfӯ$j29/&ƗÛSSJS@VF^H=Ɂno#D]U>4PenWyߺ]ajNo0u*ZFvÅeNzϵR}&g(\> g4ȸR/gaR7@(II΄$b(d 3Eϒ-lPʚurxY]E R+& J$@epM!3f ̧oOS-af"S?Q/4%&{7͕uɐNf*y,87|D?FlrI^5)L@NbhӬ`zo83Ge$&۸`!3ٜ+f1 ;4˕k6܀(cIQ8 `-)5x% #վ&Orz>]oʙA o(p(Hizx&NLZknD~~|#R)f4$/Jj;y&\j%,"e4oQQ2TCq}˶7UWkn(cW玬TB=TW'M>Pԡ2Uܤʹ)e匾e6+zosmSSb7ҿIvoh#HT ;2l܎4OHENN`5]LK\6s11ҹr7Ȳjr_B9`Wk쎕8XT$ٱY$:JB?!*QSd&Ԫ7w (PՑxMyi0#iߙ}=P&bd[Wl3}٦E}TU;·\ %`_ID{Rd ^'ym6էpg ΈhN:#>}H 6XI& 8k8E y|}0+VB_UdpUA ڀ%K{ezL&O*+"6[B!o=R-nV 6-_ykv.l-~ !?7:urw_ctx HtCas7抹c4%N.;3Db &D`R9YKkzgt_G8_zC4yQ&0o߇6 =9WgߩZ̠ೌ͖.z}ӚzR2rq|s59Bt}L&OdG4ؗsp'DN"w-T1*i̢_= #i$V}>~ܞ]Kp\;1%|PlxЏE[!Cc'FEjF#a0gk|fuXK)xCU)AF*4-ג4AF ÚCn~wi@@W,B?o^u#b}% :U| niƯNdsojv2N(-LK)_j+/0|%3[.`~0/9A/)MpN'.-1/ *½ʷgvkΟC perD(1N:jd~їa'MБ\.D3 v,~IBtc4ŽF=/O@)q'=i"<#V&s1fC~j04*}N #An;ʴȨf HmhmM///h5*3ÅtⳈ#:rp|HLM@h}} cO&B{*w;%fQw#ցWdQsD/ yTgG]%lXlHd1rּ_c2P>Cyw], Âlɢ\x^%[z#.s!P`p֓o0ű),>o8"+ʑadfv[9l]#_Ůnd}`142yoa&IUL8Rp{c"Vο&J0,*iT݅k,7үiJ>O_; ҅ JIVTzErkyS#)ƒ?6,> u@7O Mbq7ֆ)g+j+oyK;# ֱ]62&H:jΪRfhDףUl^adH࠸09= ;=]0hC݄?Fw7P"x#z02!# _E1, xR%;Ns.Za\RRq7\SHW\iM)|w#<}#mNJSP:춃AnpGpL>qA4nӞ)Neb;Y"X 9%%蝁*ڮKg$Lj UHKAqLlW%O"E*^'nFlB0>z;(u.2yҢ1XDubݔa ki%/DB ^l8^܎H*KqR\ Ϊ$"7Ʋ ad5IJO%o\W!`xd[]4e$t ý /*6zl)12,u|o61. <+T45[jKt'1 I+]-{?$d)R njQeڏcǎ1R;}+0[()Cd1Ó\B){ X%#\8G&%T򯘫Zbb8<:\ "Z< fY3دKqM)yg`{i[y)-Ei+MwfG〇/0pUWCT<!XlkRo67R?9>O)%kch* __C"ˎu21N|Ť6#MIi3h 36qmw_\G/"{t),7bRI$1g!nqq2˺sAZ]46ƌ F&zs|e:$?lC g&{*a^iZ3S"ba3VJm[IoCS'phWЋ2sCl(a|I_Ucx>, lhz%OfBAVfבg /zXӀĵ_[Z[٧&J_U˾|^Iea&g ul6cJ!@iuo"M[k'6p{JެE9;<ٙg OH:az%s.3M]{2P~,;(&QZܥ8i}:`5iݡ02ƫeS[&E+_eai ܵmZ^znk?(D>"lwAHHcUhݠ.v e1j(h~͛8JDRxyI. S%A|Xyk)K~9!ҼH $ybŔ8\tiJlXnԾs5E:Y {%V'NS̑:;V\'bMB|y GbNS_:+P1błjȔkPLJ@Nn͏i%]mwCgRoK: bS+z%UH|t)p//~ Sƺuak = Rfl2[D/[~@FN7d}"Hbϫqv" r]*ҿ;2k={ݍ)H(qY{"z06k|4 T}Z~SgtgSKϳ#r~=w?<(n}j;s[DCCSC!WQ(9;_H LhQ| "-瀽v |?POR9cN3O'8g#XJٙDXYΐ5<֝eQ/MA:CpE9zRyP faT<Y췶P%ؖL'w`5`GYF+J8k˰ǵ Si$e/-i=dcm~ 0Zkb/h? ek't&E2[F>sLϟ5+OxiIGql+Xz 4=۳[Q .+nx1K#z..a<ʘ1A0 m ّE'GdQc L \Q4[U}cOߪF!l5CZ.=4& y]P7R,s@k{lLĦ`ȹjn cݰߊR&]1BRKӾ+g1"y<_}C_EQ G?)Џ{| I\S<Q:*i:BGY`u|#T/_}|C>wI>\$w`]?5K_~ίSW0D6 db+:)2 \;O^S_G太I%&+[Kϟ!9 R<C?QZ !U5*lnW,>9L}$s lr07~h⋁Sn1f8B6B CQ;Dta]e]X)i`vkgO+M}B1-0(-ߤD#!roܨ>aN{Jz:%P^& 1˾!\Uxɑއ{E_#^KPŏŖ9H8a)/{GZ';W̰?@Dֆ2E=j'66 w'IG?;Q*r8}Wb--kY=ϗU',prt3>Vh*fDɧCD}ТNQ紴'"}bZfjrBO-:U ?E6#xU7]OE=QUVAV^S4gOsQy#o' #EIr$bI$ @3;Bi얘'O9QJ['>{o4( A ==|ȖMv#b|mKZ3FDTIY 6s% m=V_J.f#KXOY.^40ҡ?+zhx7> ʸg%>tН;#pT㥘a259t b&_$3_խrPd9¤W \)=e %ɽ3ߢ9`Q/l*wtԕC_5bb#ӆ1ei^v2) +_v;R!no7ZDҲc0܇= eYO6X;VFeYX Z* -l)I;c{1auTh_:\mb_ E&9-ZZ!Zڳ $N)yšy uDq9?re[F,'-sN}3$ z |)yI>%,'1$xK2֫ZL~h\ s3!ԟ(]8u4g~_zQM+72MgjB{lvQ,НxELmۃ~ fj fp I5]3nprf";7B׈8?GBF{W4': 59ޑãm@qHSrz?'if9)Js`)dzh^>N32vO0{VY mՂt-A$ :`(Iyi j9<`kd1YG3k=fɁ?YI9y) rl3ހd fii(uMҙǵڲ([Fag`8W}WjcӃ3'?QhRie*MLퟫ]B`t!\sr>̢}밂f"-)i$Zz⩜T<# qG#_ì8^ Aуrxr:)ewY?(~:5y\[P8CSOjV1-/g1>yd: ot&Y9B'(xGQ{~tQmyLL'<[n?_BL>QxԤSW ~;.s m}$YiLY1S .|4fj $1uHWd ): ²}MEkHXB?4++ Hؠ0 8"+4F a5@5FOv#! uykPd:LK`E5E\lxq# =;>1;Aj O~`< J俹d7_zqz{A+㧄x1ʙQVh*‡yPV)?mQV6xP([Ps>U;TtOJ"@5D/L c 5RA-a,MkƒhQ3(!n5b#%299$ΔkCӃE@zW)CN^ (<{te^+5<=!bLiLb闋HTѓ;fAHh'h'aq^OWbqAFhnM* #.nP DYvf4kpwO<e^OР] =3 ][1DMY~O3,Gw7q {?idIl>17qme7Mkwm pocj|E]?iWs\XÓ KV5~hکߎ{߇y׊vI~z8U[\<$/N٫."tHF4lU_43X;\@r 3[=Gxٙ pk|@c &>jotA/Q.3A߅XJrl, Ʌ@>(Y+)wIQM8ap:V걤X!$C W$9"b 9Q e/TA@+y˥أ=rU/);ق(Y:S(q\#W}S* :I֬ S~ou}(._rEXn\NYsS t.Ak<2U>Z3ˌ`/~MpX㝗LEUv*!{1qk-~12-5aF#(Yاi5Wo0|%n -#E;/odWf(`\xsoZd]m)]ى_df´*O~ԣ!OsV`z+fѺ~<pӴrBYfyd*FPT&kmW:(AŲo-vpZe=6l@ze z$m]4u>weduoMQДnjʯ؊)>ڷL.mkuli"s:R{E㸱 Sq$$^QLZ0>mKeavLhGŘ}5ᖂc7<@bSlVҾ0o=\ ̤ ʉejTGiC[5=o ps 0gSTȷU%XI| CsV#EUӡ9ۗܧZD~ρ%{<4Mx!JR :hv2vGAAɹ1堑^ދ)dg][T-gM?)5>.ܤ2z7{m2xH*Uyo1C\ֵ)C8ZӁ+ȺLu,zSĠ!eU WIOk"_їa|Ǹ1{-R6w{le2\QFi,>] '(.CtS)2߰*LT1t]<Nr A! |Bgx޻~2 `> ^^"KfژR_V'ϓo-b>XvV3Q^bP1cHC@޷'*ORGE& (g P _t.2̱(v^5p!Si67?~s gJPZ%k}!sOo/brxwW`ʼn]0qdnv&-Fd_nz!g(N6(E_q7J&v˵3j|mE.*xoאY+iI{)S~bҁL7 jG7ne }so(?b ڌ kKLt0䔂Kq2ZCbX}F?B8\yqGl'NbϗKE -![ŕBQA~\W鍺CS8SJ7JU%x"f4PMff}rb}m^ sAt (B\wR޻Hg@a"(~IW/HA:py2S4Rz30i4FbBb{ ط[%ŐvtVB|t M=WI*GNv}Ҭ\q'L`rmLp,qqUK04]Jt^X>F(TCQ|u-G 2kyzmG/Z.&_!d&@ JFn#+ID.u>ˆM\4C\хY\шP& (~϶#2`ek{5A!DsSͯH-=Gnݹ*:^)'=1ؚņ>ٻH1&א P _\kiRJ 3 H֍U%P6a77a:&ܘKZ=l~3۔hp3]:Y21Ѯ0Q,r5.ZEj Qoj iv]Dn*]1솆34D)s!-ӂ 'G" ?_U3X`S&y&1f䰎6Wg]SR: !cf l퉟tW]kP~sv)zQH]Jͳ<¢ZI_e~w|=!yR)%3aά4P(h>B-);t~Ʒ`aZ( 'k+׋97}}ì &mJL"ffa8,eeI -tc r_ޠBCOb5ӯ뮨} k/WC&zKD,T(.`Vx{Z%v5DŽ;W¤л-}\'E _mhơae<"jgtV`jX e֧`H[pj*u9ʫ CE^jïL&}fi[A~)| 0`S09iqI ǶX0&hP_Os;cX3J ?&=xY @ħT_v:hO$DcJ[ vT1Po1:1uQQC/QE !J۪2YblU0C~^* ߤwyCm (JT'1_|<]dIxtCp1Kr&Dtƪaj=E8j 7d4BQȼm^(=&AflXNw#D\\8xb W%z)?pD5jb`8Z0V5)Wr 3I_8͔RU㳃gsEM=?ɈkoW!Rj?ju!V<a\t┦e8{ѠwN[|fB^( Ac&u{n]/"2$,NR=~*I>ĭ}rJ[Jèx,͝tSw`q6K n֕E j0s F<Njfoژ]`_7dE%ttA~KL=p~g⶞3v ~_;wEO7`RzQdn5.eB|s>{@wO8h'Ɍk2~[:_"ݯu:B9H`x?)590*j{5'WU.#dɏ4f*s>tsiŶೳ5&hRqSs ToKΫ2/znF#Ǩ  f g@y%5ӤMc[&xCi"~ 7p8*1s V:RtE^Qť$#D& 19󺿔J^S@3jhqe"JHj!WtUe HqFiM@L[ÇX"]1˕ssAxvz(`VP7 A[qY(/uAa! =;[B_?|&,L;6nRJ I%Ц$Q"Q|5uΚ-Ԁew<% Q0B ʫ, S9ɤvU-reL{ޤD&F{@EV @j17ցL)ͰfvH t.?ٗjГ,k9ĥ׾se< X@rvGiýkمOʋ^xṾa4+"exfZ[vV%k0v`m.u:OĐ}]YBy='( kl+qx C0\\m X e- `hpiD C>&Y!%ke| $e\d,!OaHSknDGI :xxszR8o ] +Jx ɤ-!R 䬇TN\2wb6o弻UJU1~0ӝ~oޢMsl6Kj?6(.BBJu'Q`5Il4K8,~>59J;X8xmλ.w*z>/QH5u%Ee6iķI`봦h\ i*LΉT` h*Su>3E̶=ѓ3:!kLE?HD4+±RuTunc/Pc۹Lޝ~w;H([_{ 8}oRVޯؕ{wuiY^(Vi /cmj,3 pm8І*9EZ Y즉4(}+"PYXI{f&Dyk?gUB칫Hq5p:{ِ|.J.كmؗPs\_B/²u*@TS;0-lTda[QfD+}i\(Qzl(1,'}V B`m]4o?%&)lNReEbz?!bNUm7|JI`GVa,TwM, 6ӍqV1'aqbJ :Հ"u*Uc`l`*Ud GêDvϣ6a #l\*si`h}:"! !9}͝_a _71aJ%Oݐ穟V t[\|/ x)[ȇ:S4C1[<qTV;4 h}>l?X\M7x p| ,bKYo W+ xF[ V±ʞ٤ʍ4\H4*U)F6ޢm F&Fz|bTwʿ̮ y8p_t'aĈ ĭX"߰m8Ua{GG>H}Dq[FVަK>|oEJ`ԋY (+F* 7EU ֵ\]{06Ice7]mx. ] ]yO3fabޤh7W%yGl\5 C#{^l&6vo|Zh; edID =ݙ1"Ȕ:S<Q[X5J@JZnDYxooךhx`Va)|JHب=!fж@ Z2oYW9a ;m Ɏ/aO]o>-\\z:oH^jpYk|@H*C3̌kB)b~зT~P(1ۉckŌ 3~_`Z5(#:,dbu;/ #$c↑ 9>Dʧl$Bvj?x1guw(nZQD 8>#odG΢Q5 $jYɩP)Ƒ{@qK}ϝ)EpT  a2:I ;/\GL#L3O*:x*ΓKvNdiVQXn{;O},WL0fu/MByJwڂЦe Q$Li,w`E6+q< #جɨI jpE4:w,FpD0x6܌mJe@k;Oec~m+qh'J_俬q!^xh\* {Fel-ٟďRJFZ#q7gn ^h\EafUv0DI'bicXÛ|tS\&V&:m i9-D5uV`]NGFUYuu;d[k j#S DE & W)p?Lo\ #~gUJuU4Os8mjz.egǻL <Ԃ2Ѿ`2 f?DH M}#5:''d 믚%A @ZA2CNXnTWMS7 0KOdi:̃b|pƃ;j2|};FO2>{N9Ԅg"!zHU)Wf̐e/UxP*W SGUmG`hbR5UV }4Zr3 B CYFqkrN5ݞyG٠OG\ ^E̷>s8}Lbd|h֊%h1ggX#9ܼvWSYmr,K N1 ޞ FcXJ;*۷gNR)ԗ8MVɃLhaRnfh\%5[CU~铞<8--* 2ﭨ }ǪI3gs5bf6\wTBEV t _PD&.J2.+WaLo<{`8Ϸv!k׵7cȐZ*4 ѾmZuWBA_ >|?$P=Lc[4P8;bf xTAAX?f ?„]%j6HfS4$1s^Rwo.o˱{μR ^X(r m@y:/0~던!L1,W>EҚmZ >&͔`ؓOa>Yύ m~QWEhPpCC׸ 4@^?o ɖgVn2o b6E>v3 S7DZ 7 ,cE71j8£ndrUn ;2ô9}oP<:2:8\C%`Ɉz֖rl_p3ǵAf[NoV#? U 53e4!u&{ )iP $ERO0:y^kA[B6W7OqSvFg e֦BUH86l:(9\ :3ƈ$iN*ͿJaMq@XHh5>udxb$_y>RZN;B#jdDݖmR.%[psi+K^._Q]\$W’f˒.UL#\KH(H̴j:#z!thOVNA0ky:݁T3jlp9'+;JDlHA9_U X`0 Ff$~z~޳hM|rizs%[3ztŅv;6A 9:BͦW Ħ^#>%;G,7³s$jpXA pa,8D--o gMyf!o=w~g=j=ԞfRORqh3)r?`-eSj_lp2Jk|,yt98g%Յ-} ^BBB+8H`\b[*]S쳋? _wG"֪$50ZLTj%:|moxe>9Krg=v"{b9B$gFbzCI3ptVҤr  2ո &rl@ ~c~< w`Fث3 ,wDY}`d; ~m#O/Nm@=ǾJD_Y៰&o>ߔv^?l0Օ-n9 ~zqXljm$S,e LE "A`tw&&Mi^9Ѕ7e-[O+ܞp]׾^wH|ȷ-t4ci .ܙn ^@!9J{|c< ɤ{5ƔȭΌ,PbPL};TҀdMs*̪P"L+!G,;%\3j[-?S5 }mz9r|äMŊߵdj7'e]M$>[.]b<4SS5]J G }kͬmLUIwJ97+#cjZR7.YK*g6:x'>u `"{#lɊ>IyCu&(VFj7tf!#@Y0pW,e{̲uO< &Hao E MGn]+l?5T*kb&ofX\ "ombԄT^#n$[3c$adߗ@v=qQq~"]RS S6dԈEs,5p#I*_WmڨG>'YjޙmgJtfR~dgV\;HQO1O4+Z6f"ˡ{#"<t_S["s!ˊ+N既K)p+'\Հ5_yX\V/%'u[" OyI V>*aO Oy<dĝ,ir ܜ*J̀7(`C*ɏ]> 0Eۆ"QeL'o45{S)i==&`WZ7q<sKZn"w̨%g[=2T CB (LQfj? Zm/UUٗZ`.d됁x`JC$ImO- !`R82;)+*15T >󚇑Gv !7pBuup̊2^nC>6Fاð*V7]@p%~ J0"ra;GkǰؠrmT,Ǥv[ #-`^\jW߂Yix$d *֎Tz_skAy JNl2~mD|FA9B%L-g`͉@&RܵM^[ s"~_6j@Ƀn`ZC\.Jr2GO]$CcV0'pcC$.Vb@Nह1nq~%eu:<ޭ U^^x(: *G~h^k;=laҾv>'$/BFrGkܲ0W9OV#$e}Ws#ϣ& n]oi-'vDrL{TƆ&5`Ҵ6S}i?`\71%O?OtPiXw z^C ;Ӻ_(Msc䏗DŽY16EBLX\cz_򲢺"0^Búw|a<7ԷK*.䟨g~yy |@V6$efmfٱ$5ASxV eP1S\BcEǻT\@s+5VfC@NEifEf9;:<@l%2- wHqL2EP`u*b%꒹؅c!ʞrnO-E2<|@O\5?850y"-P-!MhV]ָЫ嫤]h9 NZL@թrCrU Ŵ^3A6‘0 nT My# #p*8!cBs51!i_.)H|"c9#Ѣ.sfh}ſJ8V` G Kytx_cӣ⣟n{i@{VՈu%jب>娔r`a5p^u"-[[Jo00nRyIFU$\3ֺ[e@@^AzUQG,|?!-W!ޡmg'K4=b<Uɪi}b*)aa)[k.*g2(if:m9Taw˘>xj8r`_t85h k"J٘hМ ڷфqیnS3`Lʒhlsj:g< Bs4eTr]=l|{4ICIFa<ŒQ$) O2r nO0廓R3QNk153(aė[_>x3 BZ !B` Cv9Naob;EL0ά>)A' in5򻦙;ݫOҭ50DU5%IN_<>nErĿO2я}"$ ~ (!MAPBԌrp4im63p϶>e5XDօi!xP`wo`>.P2RK 24 %- *|6(dfhZ0܎ȎU77PiVCgvs(pErH>*E sSWGfkrW?: Cd.ON0 C0_*L膈KU}52Ѫzl'g@g=VrT"*Ӻ @| lb>{Yȇ$ŽKv?ʡ.ѭT/i͚rĐ}POÊIh+_Nh&KNOkD˧[p~]9kl˾^dz*XE~3ж5?6PyXה s;يJ]>` Ns:/',67d%񨔩5J]>%nC_س0Ҩ?P^#PMҸԼim[- G D-h(EoQ0mOdu<"^YaxaN_;gCI\FPN_T2K5\ƕ&-[9?vэ1r ƟWwZ?R6S6AL\ֆ2;+< Y+`ʧfu䏪pX|fktx~A%] ּ S._; 2ۼ2,07foBS6D` ӯXK奼汙k, YrQEMYʘ6LM[3H<M)*)Mǿ]!E?wDJyܰI׿7Iu鼹WB⹏`r 5&IXmR>K@`G1oGIp—vo^!37Z槐&od8 O+& 0f.o{{$ t?@;s:qW-Oh"Ah(Q[l8u thA(Jjg'{JƁ(aTf\%[(9o"z̻,͛<!ݻW?L{4f:vEe^ܱFPO̥Ǹ%b'/`Ij *]%|t:Z|e/x8X:1AOΐz7m=m2 Ւ.7%V@zq 7bזhbp>f ~!TF%T7L!3viUjZӢǢNshr㬕;`8L3k07%N|*U,̭AqyծM3zݕC@;] 4R431\6N"TQ3rvb5.mdM v##l-m#󵶺 = V;R".v?CV%WE{8¦G<3[XdeI+a9t5l@,a~bbwLxԓ3Πm*K3bǜX1rOf%tWDc⋁7Iu#B*Y={ Dq'dbD *cnq胠 ebZr)'|itz/$X"c{yIi+C?:)acsk|Tȇnx|T]YrfqtSa4 ~:9 XR)7^ƋI6-T*ItBƯ_-$hCO$4˱A^FHEEJreJ/f[v=]%) L!ǒkylvO]ұ<0wJ>TUg״ed+C vy㻅޸5 hбZfq{ eut/6Vah[i{4WY16*"pJq82\& qx66-UYny:-f69V_SLԟo#!P&G۞ e\Ħ \ *H",~|^33MAc4 _eA'7Њi6ƵP~PW4@lDN/>$%d0i'KN"=/aPng(wh-n' )\Ud{r? ]ZMA4U}oan Om34觕qwP?,; ei8bAZ@?Lٳ/j{4[$7BÜ-Bmy]/B836p#28(K\\;wܴ3 p.*AėS|q}]w*I]L\CR%@0Xv|?8DW xH , **ۑbV.4"'%'moq%UT8j,$)ck5]fcά,{C邯[w.%6 *w7IʛU%eCm;S "ځ̳K/T S#`6jD<dSqRєB(WaZED&Iw9H+Bf~,B7eE}w0CTݪS^)-XP.#[=ȸ⛋6؉[" 6-ӏe.qSujK{ ( vƮfē߹ X TA9jhSl-Mb:܀OMuUPy)8%%zIGۗZ$`b2.!9| o2jm5.z٬^DXK<0;N6Β[&i6GsɫiV dWfѪ6XK8 -zspAY{n5ҕr8d3 wJcaӬ4Hj|5ksuK18H25P~xɞ ` v^˽e }gzXۚ I'|Z+v _izn':d==Kj$Ӝ{틋H be>J=^0T5/N$F[Gu=ҫ"Oϓ$/fA XhGTeS]&-0k? ʠ]=`:%0ڬż9q?]D9[Ι\g=m #C}O:dєtkmd692 *|o8R=PrÿObׄ٢5@DE >讻A>³k :DK< r2.-eBCK@AOg4@/*#5V/bt>xnV 쏔1^GO:ɛj'Bg(eAQ;ۤ ʌ)H2ȊI <]4xˀIs5.7 9OdfNXKa#u4Y C-׆jQ\ڧېx,jukg7Bu-|TLIR@x.N/ŧzD s!(*lӢ|0RP3 G$uUØݿf^v-.+_f;~݆hkEzvcHȫ_928eA̒QJZ>T4}|n 6/H~J!#Cџq:%D?'̧I`Ւϐ8S砷ӐJuS HӖf_7em|+WZJ΢!p˟MGA枣t<aLSOGó~>FFisk3fۥ<6`A㭚anQ~2HȦwcwUp%}m[? e)z)C9<|U-"5$hg_EubR~X_Y`T/pb)v [0TˁLP!zw`aR.e#?<Ả`3чwl9$%a[V4jlOfxrHv\" nq#f8佹hL߽J"*L嶄h*ye!)I.!>^ypw314Pd҇H`5 Y#H`\gMs9f^SXm v)h&-+BԒ:q/dmv1>/   P)Pw!20CwkYN p#^OKRlP돹qR r쀞Kk[H'#H>}u+.9W4 Wn{bjϋ4]%yylE+YQ|@n{QS w%He,w{np2mXwzDkCd+VsF/t\5ՄWe5'*2Ʋy)ØZyy#D B%Eݚ|ulE{l'l.\hh>?Z)).Ǹ{q^lX,lo rt_1C\ta8̲ !J8a%v8EQ=Gޑ34gxٞ OCj cPFa]VDoVoh]J龾!޸LK9q;.pqriܢ/BŌa%-rt,%TE=H>!pWu"Bń1v j_0 wVOR #/j);_۸{yb nCٜ@ PbwbԳcd0,np2pt /DS֤Ơѕ*hC|2;jia؎K^&N`h02h0"ѻ+7U7#V;ѓ!PwY)Ui" q3'o=gm̞ < 5]B #mtədm\VtYA˫ )ܧ=G{ T;!]&? tI $ǧIH<(߬ʐ[B$c%}yZ쯜Eю>4hoAT~(DԖHad =AA:OT_I`&gڞtt+PWVC>wJ#xWr X"4rߩlͣ*Q/& oñ=V2Ծ+1E"…TБP/Ҥ1(dbFǻ%2TU7*#d_\ȵ(X@ (g,jA>U0=\<%kuBݝM-~#ʿ#L@_:"N.MSUµBq$J\ew]]Vh;s JCp =L`wN\壡ܡbCeh\^)k1g{Ȟpj`g#<qht [I/<`*h&\XV(5F$cI9S; i)~s/*v@!ϴD{e<@`lS/p* 7n5=lO:J*sỀ󃎶MrV}ev/z"3!t үE#nGNs Z_ -e3E˕Fcs"i>Rtj8GJmo0(ËRwDaOe gB0:+'ELk:7nTR*hzē<{{Jͽg b'XYѨ` |?cnd8D3aaH!ap0!r'h5xF7TG +yeYB(I+Ap}1P7B/f>H(FoPrZ'ı*Y~n]9 [|>t5h*k%<h-#[ oGSMjr;޺RKTBuKݷS{"2&:Cz-:݉9~~^}ɨ)P[U6s~v4xY65X$>fgUE{>E_#p CIPS5ԀZhQsa3!29偓47,V@G2 7n,@ g ʗ _x +LaÂĈ>=m͑\sK/sPY6+CF75tsPX`% wp1goV*;:hn0zN!bв.CԌv2uZ۠&UUb]]]J$[%k;Eyx]678F u®#Z4ר@=iI:WAI0UO'1H4:\CI [*淸&, Mưh;OW63ឪFD]H Eƹ8#}6DK#O;6$4a4:K)2cEqbB"z 'ZCDЩ`7WMe&HĜqljf9UUq!%#Ca{=HBb4CqߪO2W3)[Nq<䪶y@R.đr. ˜/"@z/ G  `+Đ_I(\?j2p۠uuavzXө k>q9݆PBo>xxؓ?I ƴ++D"1*L&!w }%9t L7䑨 Gbdw)*7nkSKBTr*le$uQ 8֦̒$]=(\ [q4)kZ-#/6EEUg Ꮴ|qNKV{)u`lH'[0m5wE}~q~,8XURH9@ub2u;DeOXٱV<ƀFU[pIviRuR*Y3 t]_|i /I|҅Gfm~fѺƍ`kW]M4{$C[܏f556O — G3 {x 0 ^RwB7u]D3`>Cc*ZK,|q \#jtQH+F6յX{sA*x1BGYl8  K>_ Y\j~\3: Nz)"jg#oChiKr^։R01w>q@Z+EӆBcWOgLZ/V({{^N\ay2{K0J k1[B.f_"ޔd%  'vYyriN7D8x%}H/^Bݮ,).Z&OHP Go4{ .L0MZ5,"0Ǧ@Ű}~m\SEy,=c u&ٗ8%|"Vk,NyRn@!˿<mp40HjK 窆Y%%PEKOѽy-<@řWm7Z.[|԰qH+54tWnVqU8$8=O0Dնe⸆?ե @kcN-,@ `&dORs)R/H@sء )# <:>]ѝew>y['%(LXB ȓqQ$#!c9J`Oy^Gx}{ӘɥO@/sY[G}hCPHqs,Vݮ䯾gtE^arѰ_˃a5!c#1Q]sZ-iLJ!#E#srl=29 ' 'a_c`NDo&Vs봄ן$3u\Ք(x1hUbkXPYC |oF!W `< g)-f,#WC70b~i@*B$w31vz1-;عUksPkN'~s#gjgtX`kyso6(rߕ|?წD/魰Bn@]sg&C*X̭(G!ʛ~]ċ#~HLhEwML)lZ7߈J0rZk=Fzn"ЗWGx+@maͷ`LwEoU]X*tHv:z)#(t_{#B3kIP!N)ԐCYP47DLhAEf瓌nT]gPOajdPx## )nߍ56%K!Jyt"urȁh/%+0d%Ʀ)|B?)W-6!Hz#1.}S޿>휼|d>֐5ofUqN2{TrOkmaࠠj/,S*o)8s]c]}vI{ &ٰrXOKSݧ};,O݁j⥅')0TQ <(b 7S%dNqKsڍZ S Y'l( q x)Z7*I8I DȡXbTӎNR#P_wyxw|xqHYW ˜:R(!5Q+Q\n75M1ìn\+mXu~aH"^ΛJneO舙D5 XrE*&qrVh(!x-޾9g͇'mB&1-iz`#`l1 =kA|ksiX5ts~H#sj*=DlN-ڒ/~NIPC<~'@QoÛySelr+f] J#]`RruRRwGC;ϼ8 'u<Ȓ3QêjD{EH H|AO ;i~@Aw#$ͥ/ς6K|SBv3  `@>[n"m8` > P=<=P_tm YZOe?^L g!`94<(Z.$ƒT)ynYj],壟!I&WK{ i/"l Ҭ\9IHymh1=V1ׅ,_`ߜd9/|LU-H!ڮ! V@(b`Ipwkf/@PgԪ^tE_cXpQ [py5n b&ozpb34܅~-,‘ۥ0 ф_¼ M&𛕗 wex4+M fB>_Ss̏0&7@i 6 Z@=)Q1޵t7srMVRJ#BJ:'̀K*:H=*vK<ΆN| qleq~\>(O]i1^QR`k|吕Ґ<<$.WwMEmbXxDO|ﰱ- ^(us8~P7aW?8g .2yO8OY?[aoi06ߕ1]q^eofWԄ+6{Kų 9L7=\N3H,4yXd} <ś,y|֫Wt꘸y X8L~IQg+b߅*Y̙X湋zcƻx@ g{BM>Bvg.{ـc~[T;"͏b;;M*wrJJ8+AGj.}`Kf?sv+ir^LhCb8GУ5X6dԣ]BiƶytwPH?qHcь$xQ`L/% cd˭J Sy6#Y$J%73a܉k<<a ! 7}qvH>Ѧ7QwӌN͇ mz"ɼ<[ 9CSl-[|tp|,Zo>/^U#<Y^(UR@L (0]2i͑6ɢ:8쪴0O-4:!S诇d,Lӎ ) М ٪m1+TGղ<C\`nk!sΦb9Me3fs}PaI9]+OL X7[C/yٞM~]f#|!PY;̕MA6(*P&!p*~.2 ɳ\+eQ4跱1 Ї/_Yx6 TlY;(CjtHÈHS eeL{kYeU)%fy!'qKr@U`~4%oHG[I7 L  ϔ;ƀ@&Oj.q|!J~Hd<[0L'_-Fϟn4T2" ZIKc嚲Ys!G`b v䛟f4Urr'+X{ZgcN,ZaOqˈ ]_'%2Ť % Mb˘eMBYl4;ǠMgBY%Bsjx/xe[k-)fcd78L  %ATC֌`q(wHz0(cFQ$ۺ!w 42%^hL+|:RB2ޥ6kb؂?5ZC/*} ~""ehmL-Il+L2FQ%eu8tw"7#e:rvOMA'-w4eDuVOkU|95-ʐc*mjRSNPVy̲g%']ȣ`P&rSN%7XHGF }(қ?BTȖfRsީz%m8~:]Fb7>R(ڑ-iB]Xju,G`%"VuF&`E9ifD}Z+(V3=Gl|3E#e#@m>Imܥ5KJV?g zV{/ we|)()סN?mPvSGLE gnteHi%VX|N{iR~lu5LV5UY rh+1M/0DP.f5nzr*h1eI❢Ytc ӛ℀:I64gT太 *|JjoӣzP9Nujy"7i@5MVFCK&`A9nw.Z#kv6'%?6%&9t\K2yD?UWJ3}vCnW,n--B'GOȴ| <@&VO,RN!6 .{u'vsO`Cf6Wui@wsǜ2e3r pRԄp<`:ۣ>XIBہbbͻJx]%m5w6݊b9`ŋ\rYeK_Nb}DpAHOr^V6@c^5XHTǾ EW]?=yXD1z5(* 6qV;{bSX|j'Qs<6uK XzX>{m L ~{XbD ǟ..U3Qy@7ꡩ)CzтFk\-ct'ey;x|e.)"BԋTZh/!4vF)Vwσ#3g2,8v;yy)Ag@90:P>=7@e!sN&kZ *>y HeDSZ' U! OŌuP#Wu9mHIE'm:P&k%Nz . E0R[~FFaa猜[ R g0h*/d?nݮ1Ϋc/ xe/=o j1ݢzI_b֩C$c0lt<:M~͎msDҭywOT15Z2:dznrvd Lx|uϨӡa%gaA-3w:"~zf!ʕ"q<1d~cL;|~VF:V<(~%'fxo{+Є+)ER qJ՜'D/'.k\*e ftTۏC&IP2Xm6c٠ɏ U#rp"MV6+݉ԭ izi~ .HrW3Gj~7I9ྎ@I ɰD~_~hO#W Yl6mA/^b>{q1}zT} qyV t Ķ//v&F]8psq@6ݽxܶ[J#gfmZ@0uv#Z#IEh J Hoq𰴮D:5v/St"$X1MJOZ0k{ݐ65Ђ!.QF^*^bL9C9 -ztt2Eؒ"qle`܋L`&+DHmBMʮ&w39v>8OlU ϤVsDZ]]Np,/{^S^7/fK2@)Ȥ$q^w`p?Y'иd\rYw<{K*TcM?zڟ04R!ʁNE2}Y)`W$F' ~E]:^1\(Z<;ofWNT(''~q7Az1NL J.} cR1P\h\OʔPuΕ[E^Gt ɉ;Eb_,ܙV[wI~ ːY+2`hglM}{g/!HрS@gFkaO;ϴYDD^|oE"-%Ѽyznִ .!:\0;fܛW36Z*w !D#!R;ֳE}%*eJ izWSBtf1Oѣ;ܲ$Qv3,J+wOK 96az a!c&gGwdK4Gk!S!A(aA:bdUxcW/fZ<e7*]6 /hm[p rI[)_d0RNx+W~PDŽ o SY< ,99K~2 x jLc~L{@j H.q6_N "Q-ВWOj=)H mttSu[Xa #~Qװ ?bAωddk>KB~eY‚]8usN QuU[S60k(Q"'sf"<-*g"Mam^YaR1$e7jc u)MA`|f f*8N=2"YJ)mQ3M?QH}E\jt-Tp ^ZTqK9Y arD MŇp(גXVDh1$xfjv+,V' %=!0_b}b.@Sr0 o52tܨrMǀ$oK}5Kw["С'ĊE]J>ϕ(Gzg2R$RfxLIyZ[oF#A${#igEťV5Tۙ߹$=YrKR`PܸB&G6ti)J N[D!rץ]5LԐ2!}?[{G!؋[XXvDŽ% = a|+B C44\Պan9u eQ_K`TU_k %gLfPoO8BnZ,7_%}C_Ib=lƼ_ ]K!; wNOGaf=o(_x"ڬA*$#Mp[8̈qQqW*~%M&EûJ7TT<:t;Q.$_bFYq!|?e3[(O1=?4'ܸnvQ x'=DFiY/c$6nf22c ̗_֥l]0SŔ.zp:3~9RZVIKRp\^@yRE}#kSAtCg ^Ę؉2spBPx]uB~}UjB=9-`-?*~[wfp= Ҟk\g=;|g"I:,D /WR)Ud*Z{>iFDnN-3S N$*|{,oAvE{q?l 66"辰6fHy͙|su! ВFen6FksyX8,g"c@L-3ʬ({,.č$$p1i~~]^^[@ ?-B_K5$њTU)u3B)Wi?I#ٽv/]'N #hr۪=2Ij缧XI2؄~n jw44{/yUaNY)ۗgqHf̬|mxC(%b?õK4ƻ,_wWeR(usG\F#XWP-n{ ~c<..aJKw~V̦0r58up4m/ f4#!^ƛ ؈sdb7¸%K)D 𪰗Ė݁g R\ՙ @\-hny5w:qSI.CI TscX/MOHSճ#km޺f34cHC3ri .u꒫8;sAbk?Ot#M۞ez(h6r+,B>K63l0i;ʭu'v|xÊ=Y'$s1{𡋳Zӎ'ߥJ7:*ݦ>j T4P 0תӬb3VޅF3EL>SJl5leyNѵ6YBd[mݤ: >ԹпWuf_2{($Zİuyq Uc[ ,hlmaB|)xS= sLDUr̮J0*]ٟ6D9*|bi}4-m ]UuϻtjGy] 2Rõ5:L޶gj]2OUb\s_~u$CހfbS t7DD9rgy^f:74~PIemU> 񘱂JM=Q[6EՃǴT &L8 hg 7_!RYQЕ y`yq€ a OދH@ FL-ܩwD KZ{%7 ɞO6M#Lsʘ#UuC b<ƂP't+x踈s/w D=-;!PIqʓhGkjs%* А$l6Kʿ(6|RS.AQ X?RJz ftl5m$[ERv ʨ/G'C ] T0('Hgbr.a8MjRF"޿g ϴ\ Í+]/Dt[&NCk:arNTJ'|kn\Z2p(x*2<%[ԛ)"#oojFndSBb)z,5]L@ׄ2V"*R"Τةߢmmr_B!sAv/˅V"2 &PأbK-tCJ_f zɹ[xͅiϤaòcvgwϥ$A%Y(a6)M(ar*q`~'C]cyv q3ؑS5PCn@A3o6iLm._[q%8Y<,΀[Ef`Ec>#l(?GH/>0KGf? y@o,y 苙7Kno-./QAh_YYiV[Ё˖@}U]H[k.+DjTRvۍW˴kĤw":+h*(9P:THAޤjJ( Y{+M=iV0f)2]L`aS|PؙJTBKIa`!h'|#GNY.r{~_xeƲɮJK Kp)`)1Y8jXֵ߳ΰn:KTv5ᩔDSSOċd.ϝ:5DV:@f6%}('YgW * C.o? 8p>mG@ Ix2[9λgΞ~IYзSFk&23t߭DHgzQ?><`uf`@?' < _%^ꏾ061֣I3~}S4;>0ˈC+@֕QrƄܯvLoC/|ވh>x\]#c~-2JT9g] 8gIڠEqQKx>{S|첍Q鸽*λ-WnAkH#;$EX,O 6:6b—d`F.LV%ie!鹿 ZGY-IXj,HTy c8JsLj;yhxjWJEK 4YFm?3ɷy#RE[/H AQjSNcÈҥ>f4%jGDrs$4ɷcF^n'ѼV I6ٍ |5]hZOꛍR:ju7aWԬ+f4u!b/e]n0d+?C@F:ARg{cRlyn'Bv ^Wef7ʢ@:,&0EdZB3r,Ej 6]/Y;qZяqVhvﳙ;_ޤ(tDg5=AuT4iʼ4)jaxXBY|kr)"iЧrO| YţzCZo׵ z, ßq_[Ft%l~F=vScMkϞw~q;qXvfKWԞ-ra>04aq af,Ms7f"|vuo> H %0XVSk<\?c=Bٶ DnnS'-t׮:7P~#ApFaXz/:ȟFl׽K^cHT~2 Oo d @xX"u@MYu4}Mo{cg*F=<0jFOc % $̂3S( KҲƛ1rrZ%Eh ^#lFR`;0 H+ktwΠ/!#& רW<_Fj];fH % wnwzu5Ola!XM-Y k|?¿Md̩%jU ݳށ)Sx[=I|LAo n錖jZ%+x-JpiXPNJu;z2F%Q0M3vGYS<>7"Ѽjk ٬۾HHx:kyXZME@|Vη.])&Πe#ZtQ |ܛCȬRGƋjB+x@Jp_2N^3^E@661V\6DŽV+8t!w(B SXȸG6xFͨ>?$c,TD:}k·Ukel$t %3ˢA+b!}J|aϸs׏8{Ȣi (mc4v=:Ϗ )ol7o,,CNeK%HX9vh'Io0ϫ@ Y)Z1TʊPȤ #h{e@&츤1BY%w܄5pIc|-{ E-Wto/VYBy}ܪ>/~_L{e1M$Ee\o='"J06K0u'wBz6QǬ,(hq 2И`G#oYxw,>VPf5#wnjd5^!,k/2ڏ{j%{]J(Bٚ)#(7RtU -jMI‹ˎ&6d!̊𞥈s%bW\bހ^ dώw n-r%蚞}=Y?~G+ Ypl{Mףu R8/ޤ`doњJnDlvL9T#p*jS*E+@:`;[rwE G1 aޯ^IζZrL妈Tt-So}(̶sStxO.Db-{B`,  9L-,-SD( +:7\B>smӵ;^crxIz# fU2!G^vU.{cbmM@+yZ#+\U5 +|~&NN5GTŽg,]YS"oXڅgx5{&@Gҭi\T{x+E1zAt;}_lq*ѢaCӵ J-VoXNZu4G=,rk9"ݤ顲 /K Ko|CS*L,s0QE{S 'q;2`}YxցEgubIݍPRFii2r:zvVfnK5'ʾ-Lfy"r$[!<;_96 iغ7 꽷󰛽jeYw1HKˑT75{\,˥LwGuB3AqӻT47'3 ^mc yUeaT,fH1 4$c_>ˌRtzX["iC$G8tɊ*94AR~Ê@s1. Ԏ~7uB-)&Tft${ZopWV^ߎԫP&{2YX@qwq]UވK)U*ɼ-]qF\T<&v !Q/|;~Y0[˼49@*F; {?'QW\"b7aC'Ҿ7\}D3 xb#yz/lՍ`3%<ykcHdve&_I㺡yKq)CH9(W/b[ N-xw]Уoe-x^_?:ޗLDoW tA!&c32XBS~;׋H)G!HjݳaKR8[D6{+.O[Ns0i:ae-,`NrU/`1Qgn?`g9Lh\mJ7^r2{Kr ",6eGtV1=˒5>lhUE7(|T1hŃ$zw9oHo#L%$yѴ$%EnR'gҝ@pQ;;5YqBDByG7D@$lIqTb\y xN9@#~̐ԭ.hwۈ).96A޴aG_T^ȥX3d6}k]30 e~ږgFX̝8@ՌVw'}QbbX84⡇^JV Ed^yeK|;"nl_^gɻ1֘? y] l?BNxs4>5=6ᵩ]=h9gX1] Ĝ$00껇im`5XQU"x,b$phd)8=Yoxy_k~ S&Se&IUJ3nNzKRYr3Imb=ԟ˸:Hub]VdbW<3IF-803Bux}5ӣdKHW+Y:AMwsdq3c]Mm?jțk(Mٮ/iU@ wJ4Ek~YCkCejN*_0@<^-'3#'Tf$*YIr ~c!Շz1yiZ ";,Lr*۟E{"&ȼz\2:+nx\.T3%ھG†*ĝ;ayQ_kX]?>M/l :zwlRv:t>[<7c%/Z>‚Q<7Կ`CUiShyꦥS qËm6bxK,h*䩕{, =4GҊC`,}(l 8VL\'CU8 )'*)U! tpS=r'er]e^ٕDUO=dɯn.*D6Q^)6 zU JDT 2~g]9S\Ôo,Bd}X 9~rٍ֤V=*'\FZp UB|Vy2KM)v# DQ%C wkR[i05@4<1=a^|h?ۏR?kVWXgxvv0Q$ܙedm`anyMsaC"Un|y;kAXIJXߺ|,ʨJ Vexmf:=@ !<4}b]AUy{hxR[g&)@&[Ի+4m"4~Qj{Ip?g#V> b,sý '^䃛a%@5,4)(\D:u$hzi.H5 q5Kd؃ؒn3+k]!osQh.:wO!S %J{nE>P3ی3W7Ô }O! 9W\5$zex s]vj&/ J\!B g2׬ރ3h[(.-ZW"D! [krʶEg&%v!|ҏ|ָ=clL2OIQ Ү\9Ow3 -4@ 30FͶ?7A)1V{gI h.G F5~lEwJfXoBdcv<~0ug ʌ btr S}E4dL.tVg<(.88"ow+EÖ~S+Rݾ¢n*ɗ`u1|F!MEP߲Y80=NroP9l]X:=Y,],e!KIT.ps,c =$Cr6j)C+>Wf wB86 оtnVtZii|>0P8h*3\Z0sΨ.#9~6"njN6bJYej ڎbz<|c 1,.<~gTPcRL#$ T)am] i|$՗zTU)Dn\OEJdvyȶfNڃ5<ڬQ/ԭiA|kl<<^( ٨asnx(%"BޕW'k.v!lv3k->2`^Dǰ;Wf,7-€FK+*pY͎Ȑ[H)S:,Dq݆D,;&y3Г",fi͖F޺!P6Bɢ̼%ocbx$#Ex,Ko莌dW6jvjA|ġ&@p8|'S~՜=[KYIݹ m'vXk%>d1j*Ò5+>b TTYVV&+1B#Ik:ϓpPMb7Je@N߾`ixv~͚lۦn `Osyo=j2K( Ύ# ?`l!2q{ Lrc? `(|C%s2s!v3&6>MPNSC=Fnc8&ήQ7f:(Wd2b |=O55`ΠS T#vobj)Sn\|fxV;v;}4hPԞ,j̧q{YJ'ߜb.b'4'`2$nθ> 6Q:hqU V*\J鰠s\< 7Uj>44qxeLq\`1+2twHs}4^#CU[_b[-ێDߘ>YwR&\| t9@fҁ9J$%stlx rE1Gu˅=`ۯ85rRQ씗77a%4V*JYޅ{/EHlc^ s]ń"0}v~63W W{.@ߚ5+sZHk Odk3 )M(*Uoen2t=,bmU6tD+`H@ xnl.' !ٝE&((XF}cޥˮ=*>ޜ8󲸆x~8P^U{i!~Trj-j;^.Rɛ2O891IR8hs@8Z1۾ tjf8 L\Tn;$oPZ.dM&s5ɼΝy+XG[2U 8/:SßeL3^Q'ozPᤍj׏2߅5t]oc@swHW*%p"/<C澎P;$ YqfJW) -yn i盌ԉ.=?~Gl%ᕈEe0އ~ûy*JOv,΂%]u;fքFY #Sv?YxM z,ZJIeK gXdCpSsԖ?/I4,M{[+Oz2ҩ*5l/OWk?:i,Lk{1գc~Y2Wn5:O`W42` i!zK1L509+Z#^C얗Hޯ|:WgxO$((Y~,}JaӮ>+b2΅VR^Ty_ spA{$.1ݓi4mc.@%⿷LRϖ*vM6^OC"1z&Fʝ|"d}GeMB}D@vTF) .f&\܊5^UP&a^ɚA/?.ATyj6 calW(RW1뢽wȑı>15_Ѳs̈́V 6%J3Y!K iRs;\ΙԻL*D*%_*iDVu5VFRB@CQ! 0m4G_A2DtX;M?JO,`抦efy[SN禩[?c@_}B{Ox.[@)'hɞKn6|5HD!D|)KcvvNE8$cь2ͤx " k*:4 \!!Zn,7b˲A Sׯ@xh&Qa8S'LGx]Qx3i["._9'f%a1h*ܜ]r+=byowHZu̻tƘS|A 1'=hG/anB~dp+?鴢`2ݼSGN-1~uA7 1g?LaS7i$acDzII}y*ȳ G!~xs ؞m!l̃OJ@5Î|SZsU{uf ?5!=kG`h0T>W}aXƽ. S(^ cSaTD0u bis 'dpnE/F:CrV>9濿wъI|mW GZR@2phTTXqb^f=}G$ r]f#ԡ_D sFVˤFb2 6֙A8%X>|'\벱`) Ls)Q=IthQhPz07`YS$ImqGeb,XG󪈚4q&cv3@Β9d;ʻ:1Hz=yfk%,ӿ:`;@YFPNp"WPɈLTQD~UD֝Wr`4/50vYRNЀLcq6]#gqE0H$";hYim5ps8ɱx#%@GF`֩j/ܲڌSd@$~';Ihcw5@߶ć7r`k&L'zZ!eeʼN5,4*G:UL:>g=Lx:+w\&Rpgӛ781:zl}4nއd;0 ,q3S $N)ZZIk2a([Ar{jt3s<#ٍ` d;zJUJ SƋl/SVheӢ>lҞ9ДB Sxl/vG1"`{-B'4882~߿S"^4}EYphpæfݿnDK2Y73{dPSp(?͈=^tI[L,"K6ՠ#2"l~ϵ#tᅞ[H1S@9&"(ĸ}(m5LÖn5yL.e?ٶ mqnt- ]Od ƱX3{g%NBEWx/@Ss಩jֳe[^呼}h=ok_[ W%B6rP0S5ЈO9v6Gv Fӕ ʦhKE#BA@t9 55w]r~I5F.Q+ U LϤͿR~Uoi{~zT`g81+{aux|[ˈӭC?@ 2sְEx #>R N+)<5!S;;S-D,v1e/w.t=_cr i6A͋Bv̞#كx H&ALύ'Ч f2Cbo{bC@ӆ0Vd 'N)18ܰF1E# ;}Z4^ųH.>fhAv 0zvos=K6KV`^Рd d=1]_Lݯ-zVF==5:N?ߞ W1U\ӔK֦^\9Mɔ>s#gKPkIr~wyԎP7M O97 'nx]+z(9f db9shf]WM/8@ 2W9рOKƈkJ&2MJ 5ɖo8߈o݅.'i Lp|!P~O$tP ~UʂT-QJsGW; ֌ͱch|Fg ur`?ٮ*|D:(9U\lE: _|c3#ɮt >F6}"ιs.K?B=8]KÊ8z<1_KYk$ k*Z`Q ><6t h-6)3.k`RULE^X]dc?P%LGI:ꍾ! &քX3}1ũ9>1F6*djշRAOU%&LwQ?>MeY|2m˽#+o:D{p^ݑR|rU3!hm3\n= /SՉ#)s+ e!M"Zh zX$؁X@/GC6T/'`gJ" cHU55VU o&SOC4E{]h#ÐXoCRD\>%p,cܭw ճ&7ȄϠU9hk#UL6Y_+Vڒ~>k!C. Dm}DưI$.j{Q^t=[Srp_ N4o`;-5&呍Ab{agP%:@\;k +!^_dWaEnqLƏSTlì)f]ۓ){U͕OY>n%l]  cDfBAKO4߰7< ֕::=}WbJ17Z8}%͂,ěn{ `侯vzNfHFЧ"*ȗLg/bZAA/Ae7'ThSB~+S'Vx $O}B ,#L,"txdXј]SN+0U='+LCeښ ҹoN4< s)f,p${#ç-eG(+.D\<և#:CW^T?}PcgG"ؚ/_gZ+|H]i?L\~aV7seŰB\1& (MéQ{QjKANsPg¿\Vy"xhh"ztTRƱ_͎G_sGѦ=}S ďDu X*|<{/_`Ur\rju+7:f˚wIWdu+˟r iLIlLBEYcg>b~=ĸK|{;[jW- - 5s$J >Gٞ[p]K忱[xv_>ݬk.!%N[aygs;(,*b/ꪄ+ALRR4vY튡@H|{ 4l@>o&39s,@5E:< a\EJtϷ@ !5|Ef&F)y'@Z08ii#<2뎷=ʄJ@)n.=G*I)8^AA?$tx=zSmr}Kjn-<[J+ohh1xM9ȷhZ ߔK ݺ/. ~u#&ྤ&ԡ}$NG hrԝHS$7yt]WS5|PShS`8e+2WB~k9?J/Вv{s"]|\CqȸuDs8jyl1\eK3\Wfv4y.|sෑdD|I;4X9RN@K8_ =݃a')~ *霎TqT#`^wl* rmȻG `b:T*rLЬK?)/]6q 1EO"uOe$/`6)QJBXFW غW$EnYxIs'LNʻ#` ]5 ֖L:ީf1X=8F5 Kwrqh>>MTA%'zN77AG=![d`$ƺ~~6qOd)ik!o}KLJUh^8Q+ե\TDd p^ؽ@y_;=钱|2m]ą]Q(T>T!J!,+Gy]@ۤA b]Gefz^?Q O}[e$9Zgs0Sun%l [ -p5 nwoXz*e~30Ƣ*)l aGRϠMhY6Z6e(%ƤC X]Pǒrx8E4aY*{!07Q=ꈼ_eGl0Wa2xG pSC'MuEnef>8ɭ ms*@SHyh ^iOsN ̉kqĘz;'@X(@%.yG'77ַ|>ݾFLiLi='h1z *>cONւCDP^Ls9Z>[><K-(B uWHf%gݣ;dXQByiT'Aݯ`<]{L;*8fӨn|,rL0yȇe9ghypSE)!ԾQX|DaЄgu>cJ}e$^Nx⩵ƻSjwnM Ϋ8Dlҁɓ{%V5 }|.R"'Řv)6mD q"01qnJRC8zKfFwU=[i~a)`hԪ1QAknYW Wk毄%{jhJHD . *ߎ)b 8r3?XVg]ϊ_e7gLDa/4k@E ъ--ߟHtbA- P<8D[:bvDSb#̧`G#dqZ[GN~ 95vmukS0>:fR߱t%E]F ?X2dбG3vѴo}q(X@z*j>~`.n%jPSE 9trb*W-mz?|7 ;$LP D9nYC1fE(6>|G6EhSxfJŏZ4tL]9A= 2*qM}X55  `~$¶ntοUvL@țjA ѵ;#kŶbJ5}Ecm'Hh0|vpacFV(#Af-tgT"u㧓dpS}߿r%9Ibvr"mLx/iuN$A+X"gU wsԞi (K45,qr Xz6kq8 nTtiں>HŘ&)? 挋'y#2)(f}]%@oB:mbby ֊K{x, ~vwA +^KҠ%ͷ3R>Q`oÕ^"7/{#;ɂknft2@әOҔU8,y.6[YI;CƱМ~IM%ܱRhcr x.6>>f u-!:G1 \m?=[]V]g'fU`TQ~ܙ:C3-Z߀^X;eY溻nJ_4:F1x{0nF\OBuHYr/fraBwufg7! _4s)!g%s"יRe/PqbW5O| nfldB[a6~Pl"J{{t #tI쐛Z{v{gK #)fJ5D9c55 Zxv((R΁ڐNF\Ó<&_ĒT?|)wf4̺^=ĒAtH+{CU$H~(؀P"/ӫpšI@QffC=XDћ"%h3O' ~RDt%1chQQf@:TǴʌ%Cp1a£_N=Xl/.QTM =brdbCHgKρ|;\ϟi{NwB ЁҦ' ѐHCl^[EzX^⎺vf_[Q|Z z=P͂iV!vB8.ZN"_3>(F6Q3։Vmlz =nl &P?*սB{ZᲶ9C}y<@*{.~(֩1#+Oƽ@4y#OA)MX܇kAj9ص]=2n^ndԋ&OȜl}zcLOLF=c6#=a>muůp{jkź/cdjCtXj.<|"R4bp'I L=[h\[Q'u '@&1sBtTg?6!VR{0lM[?W_/;6k0b$:{V+KcVօJk -Dȟx}¸&/*aiYdz-3A&Rxk7Lqlp`z-72gEsa7mhI'Yܰ?^ 8B0#Z\$U4F{B;7˻vDPu.( ZִrLzKF6,Pْo =)f klF)-X$"Bퟜh3.wߖ;2܏u( A910, ;*{^ZFv!&0J_$ ܦNTZj#%ѧVy|iX-A 0_Y t,Df䷈ ڴǫPFY9båxֶ*\|P߯ t,pt.g$ Sqط*T6#|@q:\TZV[xZljN$sB}Govd,TI1~咪4M$tXw?U'ZD:A7=S*iS ./r 0K42}BnjF[&iΪ߈=-Y$6OFr!xܬ@b5h&Bڅ)e`f}g8`Aq~GRCET% #!{ fk"'-c2ލ9ν>b7y.nhD"nvɕE~|=zʪpE cg=<0O:n t΍blqFޱٌ`T(jdɑًȪBJ :$eyG޳Fq˩9ke7`y.ʇP=]xp'kyǪ,p6 (uQs b|Ga~YZ=7tu\!3$GJɥMii߆GbJϭFlz~=9q0C7sN]BKl(z]yĘ>u \%_rQHL;/_-[ne?vyh`tq+%U8t$3𫊾6E{껃}>M;Z[tGh^Io4`yB%kk;-8!zz$d)e L }ǿR&hd⿾6hxy,9FcD)"eo,HhbU|`2ozp<0';_]<0v6.ޟdM)]BgN9?Pw'ۡuy DY[nk٦'WZڞRcs@j$yZ:79H[vFZ[h舙񠎐=JjdqJoUhjz ǪNJ2[6Q֭7YLC;"12نS"]L;=򟈽<{@΅<+2oܮU8- +lK)/ Ui=`5.&b $¿!QH;2B[ n`P^vr>,Y;1,\Fgi9Zgp! 8nYg9[%l%d?ҫ;SUW6#HءFGTBl@79Wؑ[${3`}F(3 C%>rC)tpuŴ,DmOՋt4cXSSkPAGYջCXv~`/AlVπ$3IE YZ_BD/ WZ qb1h Y\鐞hz0wh*+VU> xNɱ  w/fbfR=#͠,wE.Oj-W -kS`V;qzh ư/Um%l{q6ÇYv+Mt HzYyO;jht94dA2$ |Є)^#:ƃ'4~oNV`c4{Cl=x'?'[A!)[J;]2!CJXN* kkΑ?5f1"y]dȬbo2'|f՗dM=5/,A+aǤj_^'?mG q<&DB ЖɩIàڛ # ⛅i!^ Vie5nz B!{u+ cֵ+992ɬU$fmTbm{'<`YyKF6l#[>dNK"[snvig4HY&c{%;{q]0Nx܉iVӭ}'`n KUUkCCL"7pr! b̮7gv|R/d 1F_i||/V?b4NW{Ghet:L n|Y;BJ(BTc"Ðx썆rp/%U#Ri9cMpi/Cʽ跫D<nwkjg٥yL x[CIU[/D7}w.H8=of&0ش?m=F/aӌ, '*nffܣ.^K(8llXڊW^NEU3^V+0'4O8;HƦݛӂRE_<`D[YFܭu#䀒!TW[+˳+Og0_1]"3>`u5Bk W*(9(:wYjv`\kʬlu$ՁW$,͝(xAMQ+]F[ͤerZ%pZVU  :vu?K F 6OWdM[)oWKҽmRE75^:#w'u e1'hw -mA'8y4%47S(<<9NII^eF3BuM lw9*w)-izitd atH吤 w{nTu+قHuiI7<ً["'?u<] ʚpf"7vg{qO7i+ K 0~.?=EX G ^@)۞sQ16M~ZclvfL+YK/ 3@/.i bIn?Td1oAN@J;@φĞJCoqg-`AhuDo r`ip+ kE M^LJwK̓{-*M%O9F4Sv3M ;mN|(a`ʓ|wN?#[g^\/,ŀ#˧vJԦxǒHKr KLf\vGE`le dbXk\Ab\_;kr~, 8%4x0a4(9kI-3>fG~y6wݾTx=2-*;h +O1# {lyE$[P1 [s88eM\‘Gz yDBȰɗdp(##vl~M"ذ3(ˆ:V!il|V]BtE;'Vf"sg#{Qͤp\uR,'V|m G~$tU|9> 2Ԋ>bN?vy͐1FpLXB9Y[vYׄx@k=m}Ԛby~-:͍+wCV-GC)7Ow,s˜9' U? in},Cvޣd*^ TnNͶ =n]@ K ~( Zdeί~]w$lTCU1qKMi"xc@f^6iș-iI%N .,,'8M9&@`cpS)DixRH.yg]&fc![$JE޽V6߻xA4 (u\&.dwΖ)՗)L/7¼e[M١XJ9/X"FOFsW{+*[bZz~v~i2yP'}S,߅ؘK.r@L>7QLaz U7ݦC$J ԚbG~^A1Y}OZ_M:] [F{3f;Ph˕56&ӔrUhbڻPaT"#kYuuˬ)"~KZq2ͮKyPwЍѴ.}w.i% %rCbqg:* ^ slo.}]ղ酇qaS 81Kݏ j}XGgipw&Q@tgFd:ͺ\β[ T;95&6^k}Ȱv4)PO>;㐐N|MTO_ )9e3NB8$W{iP"6d9抱m^͔qJkkY ڇ@ъo'o|g | rϙ3_KfGEW> ,RML;:nB& `jŽZ'1=07^'p=8Rw )'J,MSsANPINM/<%Ey勓+ NArን1d}ʏĨ7*6h`>K5P-ܼ,6Uy|9Y\U/leIF_:M-;3 .@I9)n˙]1JfnYzgk>\ V_z,c\ x=?]uvWiaT<jW َOi2q-'"Mފk[O)Ȩ{V!첸<ȧid,L0dO, WlN(M mH * ]`HG:W~>ľxwgLd<r1~q ;tˈ%aeQty2o? Ww9Mrcc0L/_&?WKZ'Næ2 A`a7$ yΓ--CYKc,Xsn% 19g?\eW@)9)SB~(p]fthN4}. giY5T'޴$RXZލVى6~]/!C?WQV!KW,X }N';t*{/dɚBgl֦jBX+/5uܩD [W,_Cwn%o!sչӗ?ƒhq8#p? Y_c:-y O7%|=pq 6Af]A+PR[]h%w'R[,E&;W b+1He8ĤTdJ3\Y6An6͚7bmBRTV %Z!Vպ>gKl\Z)9efn?Co#0jPJ^UbGh"Di#z,X"BGXbdjh2ЧU1G3ueOL yсϊCcԟ B!dM'NBIՇ'.^~Sbf~axsB _ <%H7H\ rWD"`K:wۛ[.YbV^tcؿorkT)LףqZxFRh: sWj|:r2˕sXyZ^[ %`Dn<$? k.$Wr1H<$*_2*W $@^ ȤfPBҏ/ Ed\$B!ɅD!XuSZY٢;(7޲_'\t/0-?wPut#ܩ=)T&fn\{^eKW`WӔ^' q+䪙Q8Z%G4*%495 $aYp-A@Ԑ$.ZjF##% PJ4ǯ\hUťF/%m면be1&U{ԏTx@ӘRܛӖ ^x>_M|vPL4[CeC͕6(G~uov n?‡ݷ OɠXWH~F$78מ U!LFsfGA]83+Ru.yE)bF "^#(شp巖zk>!d)4OUNO($YʜM7[wՆ c ]&`d<ML00P댰%KMJAy90ch3][KJpך* B e5MO{XS@s\@fXB[$I0!>؇͵qQ#f3b"?.r#`sF/%6]ğw>Sb?嗚HսM{;:!؄A*eX򡢦ֹt y k)4=XxjhP(]k))Xo>}>0tykVɞ_d ރXG7YKk0nn9w@ADi |L5!n/ LPi6ee;qtkP5ۅVz7qwEp 2,3 MѸUrE r{C9e=`bȌ^~Զ氞܇5jVvt1[wec8O <$"@O0Qn =?<*D␖#iԃ,V,[k>' ?hA`~"5*s _msS=DKzPaqZ..7N:Ўx rA1N/ "`9>ENJľwmOy\UIIwOIz7 8l\9 T^|WԔqD W<Ꮓ;:z|g6Lr G%$mqEP{sA8KjynV30-|wfQM$ 5 0#}s8?%pµkۚ1 uQ9KeJ?:e 1IG(<*(HV8 rL.BŚֱxΤq~P` /AJ͓YyzE=a0]0P|/j.`R|pqFQ~g,:W:ڀ!MhB-#w2ga -b'b 5[ogr]X.U[$ldȯRLvG.=Ay[>0t)=.qEP*$S jGL_vSMf /*AFŧWO)~~? :iJ+sFLL2"@z'J4e%~C1m&L Wʲ{-+ `ngm7ϼ=ֺsY %Jl3N*lr@-r}:jr?8Gdwx'gW5$Ԝ,s=a67F Mu͡ (1}$FòHߢCE.Aސt-d7u+HR{exQCzd3\OؐDlW[YAEl!?l 'X]D_eJXRcm"B[diʚڴ)a@ܱb9,h["s[qo繀xO´\+O0q]MYFGiuȭOto2ͱ:/ZV8OCR|:LUbe'28"&2dv]ff*,t5"k7Eql;~yLD=?N[2SI@bfVg9d0 ޢ#E# S2iFG&D"!A|z¹qn@%5..]m.`|r757Iq@޸&Cnc1(W%VrR^# (v'j}ԩ@D"߭7B)*CQ4FMJ$bжPn]ތ36 e 䄣il4ohȝP^9ڭ1dU"u@hEZJ..xnXHhN_KAf]ƒUE-HxIuR oP]1oj Z߅(J/kRWLG {y1t׳J9~j-Yc:ٙ ,] ֻfgQM@%XC[߶v?F]Z.t=z{MRr/?bz Y)j(V rɬ?mR5a?ƱG'D&sy@9N/e~<]Ky3mǶ%ӧD|֌,ϔG#@ twRԤ@lo!@Ŏ1pڵH?g-rA}b%6h7 fާ+%kWoK6$;cԉ !|ԑОh˵ [b_;3֠W GC oa[$W e(úYـd"{mJrPE< ZLtrT}*9KF7 )tqP5PJ"RЎoR M9ig:XjM@hY9遣vbggCM2Ca뙬7]\leڎ8ЁHZu`)c 6VBAtU\Yp3L]cvnE!>n⽱%ye|Ys{$(@5N'ڽ҄*`ۺ9w,Sj;FfлLϢf ƉS˘{iS\ō˃Rחۿ|Mg~K ez۸_}գ"B,@(%*!)*`:q0o.œԆ;t$K1Q2@d!W$9y9 /|^F{謎S·!@2q9JgǖsWG`VMg3QXP v ɶF@5X s4+UИN؉5u\ h v;GGf_x(NzBL6tyZ鷠)aEs`FR P4\HIz"vZpC_YmN`W*-ed7wg> s8vvrX uQVS->W_UN& ~E~Ò} YY;LTwҨvμzH2OB0Mrp F՗/ܬ]eKܧs U]^#lt0AzP2TeF,Mllo b5Ѡ=yJ  (-P 7v4߸pKehrMӜLq>NȵZeo Wd*Xu2|r"{0D)_RHˋ nj4SY>#0Bو!!aOSgRydM  Cqb?8Dj˸t@zh;fY?c@ 7y0Tir^ ~"H-C쌈Us(R=i)c4d'-[ZlI}>@~ym>MIMZ΁ﵫ5tUhsWgj%UwAA|^[QQ!d0{Yݲ@l`H׋ͽK)J+r#TS̴_A YG7:!.AXd:| T"V! jhb*\7 ^*WOjMYb_pgHqt m'Tho̙'wR+_B=C !йUB¼™ި )JΌxh8ILu͚t}*=[{dXA)O*.sZN(_ }9Hda*qFqXX })1!ƪx]HsŀA[ԯ^h}kYU8a~E7eگʈ$0?L["c-].)SszMt{Gޓ fǭsF" MQqjej~aŲ\NT:a<0_4|2zvuKFłk8Gb|`NzXh0C7c }L5II$쀚q۵br- f6EcIvr2?,OS[hfQWE \!٫a*%-ިdY2`Ʋ,b -=l2&n50橭W!KG4HC k,YʥR&Jկ{g+sA |)~3dL4Y,P"\گyH%94igyʴ(.%9M\LV^wO5켎Ma]Άg 3A)Eol;ٓfiJmKZy?ZhN _S;&Weh+}%?(1EcK_Lt^o`'K>Q>86iT{\˓'+\]DԚO 8OgV}M{3]vOդ_ \i !dȔ2zw߄(ה_OՅ5*tߨϭLIN_X8wޜv;#޾5?rge#)ØdQ>`ۂ{Tj5xst2N x=QT{xoƂdFakȞp; xGX9ei^st=7]D$Z*S"g5VZ!대CKPVUΜfY3VWsC2j8EE xz!<[3~p!u B6 *89m7)紏Z%Hjd/!R m ¹4ԉFq\P؏_?W? Ɯc<ÌjxkSBX;Gѕdhzb! X['>l#@#lQ& W)+dϧB{O(QѺu-2т7uq7 Q[d;$%MvTL,dWM^+44L߿y BZCضkgMN'e+SދmOkTɵzoR Oip>جYzk=DN{qͱů9Pn5CWn ppWk{Q_$h[]`ܡ(pF0BxaNx ߀`[Rƕ2p~TTP]1k>OzjsچYSddK53[ 6[,*Vj* m> zx6n]%f{|bDodۧehqK֬nL  )'wd[Ҙ}L!du~h<6)jbؔgij[퐶y]E4{3_FJ2!^:=Z3it!]ir&? 0Ym!kO(6Tme]=mx4z&+$u^Z!/@@9Tm &A<-D'b =EV_5a +>udx7Ҕ݃^{9I,80bźJ<9/x6[{m`,.l1b0?=;B&y30mjojSM87+, ^9 GOkwpdmxd@69=?CC\ŠR HKI:ڂ8*5_3++IU%/8˃P, Fʕ^+[k]1vU:yft7yk6T$-NY'Ѿgf#T"_2x -7\ 3l-, k sl{F)ܵa/ {%Qf"9$c5mmH_GXK8 2FIF6/=l-q Uqb x׶srLέ45(\+DJKmFh Qu?؂rxYآB;1dKf8<P{j#<!ɓ.~Cߺ+ԝfs;-J1OWr\s(w@ > Nlͽ|wCz@/e Ր6`3v6ja;zsI0`u޽v P:f?C<nk\v>zDzG9w\׀(g6fpTGa$<+ȡEe..,lhayPE(0Th@8̈#=J5V *'?Y'>[]~)d~Ӯ[R:Ȕd\v<ƭouഉ˱j#"m`VSШ.p#͕o Ϫ"0Bh 4/ OQ,fb^x,?ܫL۪-҃vZ,bDPGJqi:Cʽ8:pJ\Z~ i''';Zһ>o?%Scj 5R+q\gPmFᠳv\ǗUy|`K?Pbm޹rzRp}?5݆:Ma "YQۏ"-26DգBv¸ł}<) V7(zѴ]Cb>KD}("D`(sgT# _eVݠv}<'yUAd?Z+oow:1v׮c#u/y"8g(ŋ--[PABǤ$`llVdN10f/4UZ9oPanAYQ&\z̲  bC5C8Njz-pA-rm$2иv 'x9$U{HL H#ijrPyTAsZBB\]2DOzS8'Mq@?$&l8%pDVHX kexFpnPƳPTr!VPRihkks+/p .W FN Hy꡿/͔G8UGĝRT"4]p`e XkTwiLs !& U6WiN/\ꢅyo Cҋ&cz,k.CJ8b%ԁQ'USco2wemblt2okx,G7*,9/GH5JѰ%s S}#$ K~<0.au^({A>dtXK P xJo9:h*LiF z'ܡ8گ)\O^FM@:ۄ8Z߆Y ?b"uk590}IxZS[SP6n1y<$*?㻘mP{!g7UVY]~qO~Pn+xrkݜ5.ckrgJ:~.LVMIε4_qU:^237DL{ l2c5r.^+ yV5Ң,+1:wfM[JcU h#Tz:3ӡn8DbY]a.8E dBAq.8^.0 u^]: b8|F˓$|&獊zyǦx*R3hU^vll %U9 ,!\t_Ig#&)5Pdl.ܜ ܥC%>ssПջP'SPtޝ|utMhxT3YE m=3el,t}s*5<3]}&`PiȀY= f *Qf=K%ETZ)/Xs݁4650e^>R8DmV+r d4@g<)ϩ=X+{9UZt gxZs h튦i@l g%R9]k!lL+W҅} GAlbaC]K;R^m"*x O\@n>-MF{Ibo$J ̸{_Uf,f'|9m6NM``7WII'{90ɍtU${՞~CVDn|COtOsp%Їr<%GWiW^ 6:Gla6䏘w#켾:~@hs#08ptwsG؀׉K;6 ^Z`nOII69:O$Vu_:f~9K ͽ,0 To^73 v $Q^m궢!DU l0sSƗzQ.s>v>&js[rr;L뙼vYduU腻u#`Qr>GXڞKj⚳d.A`#TOo= 캛1aǐd&w? Q"5q4ƔEJ%_ed5=ծjd- Cz T߽kяT~;`@a4e RHcO"%b-<δOdB@kMN^1Q+ ;ò}sg۵vf"ǭ8&ey]Ɋ>be84&YJ ;fyd~;8ZU]-J|'t2TM6t .'/paJZ`3cT?:Ղ% XѲXDO3}Wze)#O:M_e7|檏tr AVPp7+Xt8,ÿG JVHf& Z:+f}=*NO~ʖYazҦjXu\:v1FJU{ ,`=>k )PO%b)1hѾoz?i> WH*ڢC6,r)l# E<@92/aAN8b~.gv:]oP;d8;u}\v3ü9QOr,Tzග{ExTVN{J3B nam Ƒf?MRm@1bjI_ d%Xdw4kHvte@Pb4jYs#T!ףԙLS_x(K5V0GqPhWL˻ ߴWqˈ;n"Jke&G=s (}섳ϙqAsrOWk@hg{TbXܴ{y bv v|+Yh|wS5bU*2WØw%-|YAS=#)͔ dՍQ[_϶wX2@'%FSY"$. xnՍ:m󥲭dyoыQE!#|,_?$ҕ5q/~gI,S䐒kWNTvڦ%*j`޻s}xL->S6m+)>Sle(-lkcϯ{ʆ:2 EHe%5`\ab#2$}߉ ـUsTd߭j A6x:&J( i!i *>|o}m\p&' '0iH+GJ"nFP/O#Db-+IX("^<ɜBQvӜ_z(kIJ|cgY 8FZdWfLGoIE ؒl)Nĥ>β 8=+y33q,ɮiC /-:aVvXH2He ކAuF#G$m"ȶ$uO ;~ɑ'䂦Lqr|<\Qec`lVrY셏Uד& W6F׫1 '*.  4R*kkքǵD~@",Y)h 82/Y|kRLeԲr1{ƁoFN;6&!f;jϑp fحG9v-g;]߂<V@A?MZѼMQx0kf9(pZKK~L\@Kџ6 5}Y F۲ĤNɱoqfJIcO!u3m‘*ɷ>ŢmŇ~(_Z-m*@Ֆh 8%/u@h@ nP*)m4tڵd%*$l!fRt 9HȌ#5& y䝃ͱݥ7. VD" u$*]Cz<3nԗ&sa<ɾ%sD?v@ƚZ-Ig3SFQ:vSɔks DNf#^}O!ϑ<m BHz딄,U`X8QTycB|ƗYR`e+23ϙGM]'B n9,4S= صI={>\#&U@ZHBSbNPZ/z[;ld9FD]C6H/i}O@ZSFe s2f~ =g9K@x%K dYn}\$2wѕxn̽/g@VDj+x!䌝ʹSd\ 2+1HsVXEu\8k!{{~MFz֜=*`2i֞b1H uڎX;&;̮:څ@3juKMii-kX6\lT]&lsm7JAR:Y'3Tu:j箂᝶u6pѧ?bS|tOuM ڬm=y5p< g:($w\%#ѱZAZct"N@,7 6y0k]=y"ʘȅJxΕB+BpLl6r#Eu}펟B17Sm F!RYLnxJx<8.} 9Z:[7W]!4cǯ`O'+J |^f ַM=XҝqJ׻ C K̫i#'(! ^P2P,RA ^W,UU9tNoʿ"O~,Q/`Xݳf!GMRǜǷUMlЪ<pؖk[͈: 9%6VC1Ч[0A.r ! xcZYodwM+ 0(>1!\*ޠ$B(+JC0>^R 25tM,HL4~d}I3{,MCAӆ}[*UqAeiwL#kqѨ>n{ \ksE4,fӆ1=/7-ȦDIB̎bK P \hFeg&dPR`R!q"SBKQԸ^#XAϽ͕{SLM`/Q6r:{?S Y=sP5%!K64_ԯu318̤<ݪI gIi+PAC4}yPc4T2;uA 맽tqxjx30q!IAEDi\]Uc)G sDɈfna>I U^7ω~GJ)2 Mͧ/ IP@xw`f+\.y> Clo>O'@#Wh^- ʐc[3}F/mȰ}ѷc). |x}/^CVf0{f.D>sKA3| QE$#6ryݙ!%kKQ̪.εW`Jt+lnӠt4X:s{2Hb? /氉gi@ $SZ2^lF+*4 =)ɾcz'~B92y *<5SL?$P{g=ʋǍ&y;П UG&Vf5{6"1~s:%(g@ 瓤~XeȞ3'yh en_3s`昙"S<>%?(<:Ri+| %IdmxZ"Tj\G/oKp|eZrS8LTl}xLӭ^۟a^7W鳴|b>*/~3fL:s!mPX\HBB}w'r ' W.ːֹ/zx`곏JX &5lv/kVij<% bAEj󸼸jÎ\ Hlɓ&14j.hYnmL\[KZPC0WN{ugg){ j^> ԍ@zYUCbi$/)4 N^;n8sGzF؜Pj:'Xn/5tm>2'?MB,'pƽVjP!Eŏ'W>C(b8[L剐Lq4.!A~K. }51WTID95*@kS0]ȝ2IASN{MS ~Լdg.TEOHJNQPdrӺO覼NZ̷|~XEa\yHrwސ| "Q6p,rw3Hjn3"C[/t "Jy[jo|d2 5CW׀y!VyO*6|,I[7 7R(YvUJX?:Cė!1ZCsfֆJč:ң,>=OyC:[ 6֚?}+-R 9&:04zWQJ֋;)8a7o K3|L2?GAΕsřX3' A XZgN{07k9k|5nh/XUI> !jrNvj݅h6ӽk*^ٌ yU~"cv>BOde:0n=R6x*TQloF]Royw잙_A< D A0%p|Zd#O*%w^6 1K@kĊ}K*ϫ#0юJq{h/yc2ia:n] {LbĽӉ|ʍP7պ*N{2#HN v]d!`ުE`M;}e̱˼\"dk뒀XU{r%Ib|(ZՀC;cvmԧr*2d}6$zw>4,6yj739*V ~a eL\()8'SY hb)Oٞ7O="UP"m>SC u\G{ $>N'F/`7BLge;QbzJ^;Ms/~#[i\vC<~ܪLy@ߩQ:i$WjVa?28gsZ 'Xڑ/;fDqڔK:l (7D|g*#t'aDu sGI0f^NRܫdu"-_%Y_P78qWĵp/qW}t r:68p7T-H y3Jށ|%25V1sH(kz}:4&qdn>cA@][v QW6E>-&a+ܦfu 60*klSY_ 3(v\ ٴ|%y>xfH 3ˆ"'XVװ)&z|KvP@(q&Rj,#rW~53.nˆ,G-/6. i`斤 `Kql JP]Yh7Z]@\$'ި۷ uDCAQ=`M+wK~pA#jĬ׺z/KiM$[S i3Gx%-P#!ۡcZų ), ܽ2tĆ2\~BȊ& 0Q_4xCMfOۗիoWYo}I$fjY8a@!.g#P2 ƂW^͙Z6laD!5掩{H8Dl/nTH1 F) \tpu}hcq+^5F,+Y^ef|ʄ .~C)" WAL=)O`=ZCJf/:08=ƹ<tm4q`omNޙ &m5\LNjgu|` QS&xb-Y9G?.hQ/s:ݦ0ABxH`s%Zԑ,Р.fH,mЈ@#)AmCVEi(^$)yO .n4 bS)rbh>#0"uWM2Y{uzx٥JQ]{+^բo[֌Wc2cazzhD 4"*|dr܅\CJ "g*$L d1H nrKi Htvj[:u?c^!> ؞J_K}Y0ֆ+WaRF7QO#wf~D#cPg "`'r ˜I R]uoaM5o\ouc 5Zߥu.)i]UEI╛I {?m'K}u1n%/knQ M+YUbFV$0;K7jYBBy?=Zͦ_1\P]DQf"giٺUhesx)|NPV\๏C}V"3<t{r TaKlԏA:K=N1|}UaĞF9>(FyRU(⋄T^]BwUt$PƵDWݿ݋ b0j\c,7@ݳEOD@cs݂i?d0&o%qÓ D4#A@)¦k˾.%6sܱMKwxdeSR=Vդ_lWX4/g5Ͷ8%Q"6}҉¶*Ib4F?`-;de–8#$Am=55XpoהvH!X_A-2VSB蝪) TKүҎG,m+mMRnjW A;Y-+/A"\zB3 3ړnyp4)v A Mc^מqO+< ;Z~/[,cw^iif 3|'Q?xL A\8^'i 5C˥f1 r"%PST8π PK(ygfa0kwR@`ۢ2\s0f\n֮ ;(D>ﺶц`DR[ -A!P+as?-[07mvbbdNE 7fZS~U ~ bE{O?Y&"I4Pt|5\Zٖ œQ'H)a2f5=\"ֳhJ3u  7y%b̝\!'rЋo'`i%] H4|N'!;c}IF?mtRvo81OPBi_p-`:9)&p2q(&:v%3[I}kg\*m8䣯ENk}o*;ނ8'.2%5EK=dzx'A=R"I\}6nY` Jnkl=<-qA hv=Mm#x`N@ $^GBʟ=X%QWuF&VB!&)ď7k'ݯ!Kcbx<Tz&s"l91 UB@esk8 qhP!j˥}b_M;&"cjˬu+-wQI[kH|6#h \=[\z)Z$WߨJ] 4ce yC{M~rYhߞEVd[V='y"XP*u`% rd#6,$m1 cbcrLj^0Wm~LBѓϜp? USZ\.J +AL%+$W#۷J8}=:V oB_Կz4Щkw5PP/p5]v* ɚ2*Fz +7kr@tlrZ~c+: *\%j}0TsMН7T?ze@(JԡNE쯝"']=c+9: ߽Sz$Y8ꠙ׵:*5{F1Y7!^ j#DzJq|,ܕ\eCYc} ._A:. eއ$g[ߝ~3~q +ۗ{Ц?#b?+jPC&Y$ ”+[*9i4RDUh*;,0dVC]6fLKU{"`h\3CSt?!Q.AdZ0RiXŇ,pۖP V&_gpvNLG̱LFDPKۦ:yI_VXj>).:&/ZJͯG0<ǧWԁzУ/Q K~4/-Px.Io EV"(c1Lxx ""[i{Bwq ȦbX֐o#^q*9]GjR Ea$lAl[rZ/LlcP+6lG8y|H'J/ױf8s_``K?F̰,9{ B}yBcbbv6μuXvabL`._n!@6=xO#~=/㺡hPKQӶ^\+2`&)OCW8Ev xF6&CgK]J]-!"OMᵐ~۩"Pe9L|5붩/<544Y>)',`Rs@|i;n},䄅%l!'3`XK:XΙ+)|$8P|9TNқKtM-/z^X= !Ajf׉!oнӀ qtReW/AArO3|;>l.7sEG]12^}r {UBJ“i-ZZ$K;v*yfK*'mr^B[,> {Ή/x;UvZ]K2 sH1U"nKR9yWBZF#&&N:!,& /H2taGy\UWqJHwu.>Xq+pL~LKI4!PxRKEW]rKIܕ) K7h͗,H(Ih{H怒]AΟvbw{/thF2UA.W1"K(E%95(+$,ZJ0FO'XW*ga`wAFrev8xهY uo3{Yrj2!8qcf[?À-%Hć:,U~&/<ά>o*s*UJߎ1k"XU!t nz[6a"w)PtgRϋ>? &aM_LoZZAN[勾`ogVЙZ  {=1; hO$`>P޵pMYY8Y$vǃtp,2&k h+?Š3#Oa(; c x gF&szwMg*[ɑfd!مI /E͑n8WIvxb]0nY__)d8BS'<JEqW<9 |;}>eS/zɐ%WirHdlYP:$:4:&ikjLĈ_RX89*8Oy>o`dܩ,h"˃GOLoeV3wD/ffH:˾c\imԾ@1w}׭;5~CZS~g#lie1ȉ jClpꛨבadhhWzMW?:0ɠ$+;?jʗ SZ]eN@UxN83GEdRzZ#C\y;ɲ#vy$~WBgXdj^m)e =C^zJ*E^uDzNw{ecjP*'| E/ϧО*ӄGI}*儠M +}pQDi K Мݻ# MzXwxWhϏExXںquPQr\ʦ$Y=3+ S8}B SܖZ+J,},#Y[.7X_P!g kiUF!6Cj,6|y4lRN>Z*sқ.\%A". ds[٧s>4AQ|%*!O>\d|jYszah`.g#<qKf1nX\-_O I~3p4!U23oWT';F-@_'^Na`W uBIƞď~,L*}gH*ga@/ ՑNa(v\nF&Id idо?Ib p$ӛ1< 6lIfe'#yi< jDye'S%vjLYHSv#~5v< {^B2 ߰,$_Rm~ۦwԓH7#q9 }7 /|#C% @CAo;ө~3$$<‘Wp^+ɦSR.Uq*Ϸş+ꆒ!Jf 1 0IZN0済B8Xt/`ѧlp?{"1C; b^U=?<CH]F/}ǃWr):%RV>zqe_+{]#6B+2 ?ʔlvQ`g  9vhtK a:S;z~PS(D).qZQGɈtk^e;# @UҮMP>m~a5zUu@n;+khI$IU:婘Lav'?Bn+}pBdJަmbBhSxpA4+ bK]jW3 7Pl*vֈ.kSI SB{;S2Ƭ\ T L6ʡ8uQ0y7S5w7pi(D"lX E;U0^ew_㿇 q_pǃ za3盭XduXG@.Lt3fjDd18h\rkQ*QHB{N^asW?Z ϗSNa87ڹP1$eQ/]bHVjycTvi5Ln_$Df'5ӭ&&YϤn޴11Twr) >ij<%+%+ZX2|x[J=][8/f%d]v"۹k] |=2< } OCH_2qfb:8͹AB t6H@j$Qs#<.p.Ϻy+ҌܹtkNu9|R^ k!{R8Wtaz!leo//Vw%9]ۨlEޫ VkHH>7Vz {Em#麧\ᵃ2;=%!X\ſ΃1 53Y=.B&:)->s(-[חx/Q?2fIYBF?.p1{2)yG^\~k*yV|֊t$H6=gxHI9zZy(vR\4&*ΟPP;l#dFF^m]"4XnHbACO. RYC f̞Ŧ >}`o;`耜0:w/rӁw3guL)EO{3"1-`Y|̜@R{%L Vx ̔<+HXHU}Ms܀s{ZHJC!+jgk/bHq%O/+V{t7/-N*+S^B4?%uv"Y7sCy;c }ɵJ,GZﴃ/9Kka󃔙}2n[W5st- p-̐cb%@C7IKh s[26~ko2**f9 y9hSAX?Mwky_ԧaKCy)1yrʋLvvԢD&Q94Uv?vYv|suZIG Ծ۽3Rj,@Z}%f͢_pL*)٘zM.ZO~Y3ImY|cJ09>JA5-n߹leqk *>e%B5l)!O,ޭ]SOL|RȦje=Š~ )$U$~sA Y,pُP]uj%tt(}RW ,-d\M'R_?WkDiXHb4`Kf祂` SMlO6*^Pv B[:ZvL@赳r l8b/PD 6Ě?|5ϹM9l7 2ye!!Բ$ *sfT쬠F1v[p^AvT~ ~ӘQ_$\wAۯ'_f)W'~+fm!|^zKN4 d2(=0@y -bQj 7G(.*= C1e{E%59]\n)^$D E>t)['ņip$q@ ^ӷnAڎ m/أҼ_Fl߿9@> yۅ2ӁKr3 ]0 T1ꍯ뚜3O'#?oGHa^3c>up)P^6/abvhKxf浈9Pu̯uuٽHZЫQ;שwuAI?HhTJ,u_8f0cXΘ[qg5K.@grz֜Q<" "N֨/P U؀9˲! kRWS1PRrY5+}xfp_=t+t!v~0eP Yo=jGts  |ϵ9!.?p(kGͧc΀c)DE:2 ) QVۭ*G7#Ŭy5ۼ^JZvaYL6?SU`kiV]ќ:܍k Ǽ@[Li!2GE,Ɛbx-FJ[ D( n'Mz^tR FK#8n 1O#9dT8O6ksXTkЪU x"R StJAUĹ D{xQS1NE@a4%TK 1q]OԤR sVUrsLaى䗾Tbu^6snesէwgSE/b>eު"uυ߳+&N,G4g>Z\c9V8p!:d7zϴE7cF1̦ S"t@߸0*&!Q4$d5N6 _@\G;7 06'Mᆖ@ M Vp;aRƿbI]/|;.m-(.! .)i@7Rs~ l98^Y;O `+uf.RvqFnNF^[bs. >ʽk*. TVP'Ɂ&ױED~t飊(a>@S~rT761 CAdMdiՃ<[ax6i=Mo~w__(= 2r"4l='d?RO m= }؀y:|XÛ#  RT50bԇNxˌ'q.?& 6IBt苔.g(G 7'FZL"!`.eջДUj+*rZ\<.aAFJd<_:輘Ŏ=uğUh8֌bTG۽e "Q[P,Vmi(MGsjVR4BKk ~ؚBiZMGjPhޏFypF,9!uX죖UyA_cϚH'Cb׳05RdSu }! l|T%˙(y.Ѹ'k| 5V:ExALwDFSSYN0=GC[q`Qws.4/#~IP1JOgO#0ڹRKy뗼xЏfh-*Q抪!3<;-k.+^RmYO8%x6a>8#nY ҽ:[ uTJӆJ.374ۃjar{ӍvJ"P.'I*ϗ;| ,_U!Q<>L0&WWknad K6 N dlLPPmx_e\Z$$@ 1$2q'VH`[>mbD@͙m d\m^3:RE_n3}oɨ7jtڒʉ;cк^xh֐ObS<]_*޹Maԑ"<,ԯGvp6^_@9%˂MK72ix :2UA䗚 9mj\1XSXf><p'0 lH=./ިb7bӪ>+花|R"julf܉;7?l#]93waԇynMʼřSq@S,h,V(ᐊZ5 yWqmi@n1x)̐>iW?-|H"`eL2ȍ5>/iaIf`TSǿebF) }z}JDC*ltͅf2^8!0MaEc[[a0"6u8s:k]RE 9RmFtw  =7 gtI(1Hkݯ|處(!=zԏ"!.r[ǼcŪ 9׋!- fj';pI,ߤm"` ǁB6mǡ+6PQQk'c$&5eeASyJu@W:!>NPXդ&CFx3>f *kJR 6| gGh{l Bdܩd͠I[ϝwLU M C}%t;oc YQ=ַ$NV+X7zq wh]H;'PQ: 3U~'emzk  |1.`'\= oesAKa.L\!2j*JeӾH0.:U0)>뿈iF!hzCsϿ@T[Qb,JyEvGčM> |كop#Ɇf֒'^3Hh I$0~ 5!9s)ibDsr6ӪĜݭgv>"s E`3'%yuXD6ZǿF?( G&uL" OupbD0#M ͵GWlb+UW'g+h<= Pw>gU踛Fc/0::^F Tgd/9e*u(ۃfQ(h f,hσB+mGmb"P'*!=+pkTB%HpWP׾P}.|]>Jsz,[[rJ5]Fsr T m˩D5LbR2 I< !sH2 i ;T"cJtbMB@ص3otm6HṴN.=.WG|PcNnZЊP ։dϙRm^L0] SLvZ/}Ho! l|F=!iWb6DVC5T{L̰'\\>r:ߵ 9]r15KzTwUzA%-i?] rLfp68e?;4D5uZߒlT}RI6uA5Dˠ()dטR9{grmz7,(.^ӮaXv9@! "n_|PU 'XeҒcLgBDGM 5Sj}y|!ɗjEƥ8CyC K7)h/Oy/pP.ѵUG*Bw7 yVI⦗!k=qi7! 7@li2p4/li^Lc'‹f;]3X dj ]͌["pѣ溧:%cKoJeK$i7-9V-{R+*Иcж-xv̯B|ge 5eHy_!MS Mwyƫ" 3Mds  ]c1)$l)Wۆ^lL{n4@wM? B3P/pT"8Z Y0=􄦄3R&!2:\$9۸bcJ kJ^B ggۺJWx?Y AZof&)|pkہVjAY$Uo$vK9KPEŸ*Rg #@- {rK[HqJ䀑@eۖ^ΐhz8;krMوU% d[$'8SI&9z5kr]W{<0 +aS/I6hS2>Sީn K%^p%5ϗQYJk@1QXl:oN:؏S qe3u!RRrJݺˮ]t2BkLThu? ]t

aR?zy40 Ňw8aB ԏe~k2K5e=2|(.;n(ǹ2Ebpʎ kax'=r% I؃u!Qİ ΍zu:"p-u73]y9X`ng+G`;{HHnQʸJwko$3Rغzif߂a}ŊqPS}o}\7\wxy&2M8}T,TDpBgbÏ3AMMLO6#Rq;"I==6r|c!}R \G'$%߯~^ K[m4gUX|R ިhNj,DWQAietZ&0FoȼLNeL >hף-]$΋8cp|veeoa;Ba#lޝlpP@Ed!a_.Ł p{PHQU/ހJ1GpP:2I:C wb ?*5t4 fpQi,ћ݊ů/gw'Ky\]PA<0oqb 8|aAv'V@M'Ox> Dl״-N?Z#\IOoݞlh |\uaLtctTFFF_= nx A0f1w]@(쇑xݣn=`U|D?gx2*"^A_:ЯN\-ģþm}5ԙ*t7= :wfy(MV{wdž&'Z kNY aBsJ׽5 2lp*Fx{rLk:eCoeF[ ױf !ėTIzlW1c'3^o yCQpӐݕ@bLGBZe|,)Dv1.f`+ XRhA%밳)b{rҋ}k"Yo(Li eA <$Ҍ`$%|ucjl-3ds3oͨ# ܘ$Np Dg#= V=y @ڏ$}װv4zqMލ1'@o8~ U.>V%{'ҷ- nUEWNbd"n TWǽd MbwEbuՁƹ+NW~Zu.ݔ.G6ɘ֩{LȤ -97tx>X mw`/3t5穕^ܵaQd.Sq{W[M-H/S%H/S/~|}"FK7R3gךf25 _Q/#U[NwY푯fl0iD6.GL'߭?Zr%(S8߇no B˵4+]A6ˠ h3 ׶$jU䷧>OӸ\xh;E?sB]-FSz9G?kԈVi`{bh{B~V}Uy7ʒvKuO7ndsq 1#쌺\Hb}!EyyagvsG,gmt,$@"rU8zecUUWbUHH^m>/X_Ol|C{+0`tR- "E$QH8.{%A&S׬AQ>D8o&)vdPj bJ,^1gt#':<МnSܵ'H\ QRr_R /}Nc܍J_rC=(Mb?O2Ne<59/ }9fޣ5tU1 0PF۪lDeV@@;k?^Ȓn3+(z 5i2q^ctv0B#&[ÁH1 :8@v3=0Ȓ%]le-ڦk$/e/V$'zĪUD k sUC,$E8 X\] q"W2BłM?0VٟaaՅrr\p[ Z>H:k ZsKĀ iwӖ1Z88׌?Ps {!a ; _ɒQKF8 4x2  lL]wM|ya/ AՉ3C4).:ߵhYm1O1F> ɉ<;v/l2oZyn{yqOH?larW- ,l6 ?LFŦ2'Z߳ˣ6Ɉ?6*X-_D`x&.B!Y{ub0KR4[VhUԻ||, e8kVEWoOH*!jnK2di_E{݇dZsdDo ^]wXK8*7~\8_}9!XC[$%V_ƇFy{D\nBs^CO|ڮ-߬+@IT_sr%FiUyrOmsaTOڜC{#[in>alκO~䓘&UX_W8X+L!jE$Sѓv@^sfA)"!Gxw@<7ocTPÃSܪD@z8@2qj Y4(.Z;}#Anrp䙇Ez:?Iʲ @!w;6D@rnqq~mXw b&*PRD2jWw [R\5; bUH՛&B2wo7=kF 5Gˬ`c'1.LzlCoW`d mjU& XEґӣ>vNY$*+OOM.37|8JWc-q2t²ssɡ~d{(ҁ2 Ko^-{QN C9]߰6M͉|."R7q/~,WBzW²y{Pr_"ZеkqRn&?zږ髀Em'dJfM<`7K)Tz6em}8{Ev ڵ4(#`r(M|zxb"#lP,`Xs(v8|ۢyhi&~Y`PƵЄ~wPð=78BgD h|& %Q̻v2A)q<5Y-A`vNeG1IerF59p ՍX%.8ʓ E7Crwb~`|E)RBOoWwS'aݻu@7i`)<3wcZ1Ea=#YOq+%&D5'@FhAU!؂ /iًyh7 sMcMsL.n- E786!:ɡHM0.Wd"{El<>wG rG6KsC~uw/}H:m1+h+qDi]]m'1ZΡ% .7ӭ[B5_c鵼_/;j*EBvGqHm$ @PYx7Ǣl5\|8xC~Tf\Lt ,M"kY6c5Ud!SjcOfT*,=~,(7Z#neay wm -ҦOK+RAA2Yls`#NX(H [o*;x.PSW,g]q+Z~f*y@c!-_T~5+=1/iguʹ-8;hPw%8Kv@X[ ])pH\,y1n(#y0^UBҸ X1ah%_~ ǿ}-#RPPlVGck n>ZZK&^y/<1p|&L.e,"I W-KXR)GOL^K{a?jw&ZMA;{՛=,0i P>s(1BKɀn[WYTv?ORYT`f |:!Lu*"hord8va.TseۈvÕC",qU:Y:h#VATUV4](/yU(nh\ѫ 9JCyi[جW:iπOEƧr%:=nc ׾jYT>zuLM}6EV?< x^[HbW-PeZ$5ź }KK_:D;M@1ujE)zfU_]&nkt,cvF8 ~ sπyh8A G +tWrqd7#޻C\9$eCxk -|op꺘HJ0P Q5h?L:,tilR7@#[{z׊XR6t/@*."ӵC ,%e!4J8&)=%݅iK{)1E02R &d-1<_4Y%Ȍ"H2qpիjT F`#cjq-=kp!9̥m#ڴ&dюPnѲfwIu ?\o}@CEbN<}WjBh*3vcncA;pF7 y.C@^OS.j">bq|_<^ 4T:,b):>3j%\Sq5Ps`3/>mnD; E`5XV,?82z'FWBMM{TaJ'(#mm GS2fc٬= (O<*1#ƅb~JG{\k8ٝvKtg6QIp̡ʾb5Jv®R#"iu3zc+Zl 7JZ+RTTi4x-_ԮI t`'T;r(4ES)BBFk!q"Gg s'QCJbS[&1 v+[%8z)OZGYO1GPԀdG/Q@Hґ%,m+K.^"jbu'W"1 aޮ\|rAaƐ9"+p$a%hjsL4NMir̅bcu6}y5փGEX'#2t>za- FТ\ͼOA-o1dˌ75]lTF* |j{Pmד#vOVd."yiYozPLs ^$FS}Oe&>ty* MmID+}Л#m&7 ͠h)im8䴺E5L̶xW̿@^& XgB8~,ek>ߔ5jwNh+PQ%HS-,r2=D{H@_YXsCFPY&ZXc_ncEm"3HNG/dr'>[{D4ݠe+ BI).]MQ4>2X @]TO!Aӭ6 "W@– l&36ZAKЙ D d:.$F[CD>"jl{tDh<\2){yWXHM4+S]817)zlb8!5D-雑وbV@_&&~0PI*)-2_BPBFrŒZQ[a_Ed.nP$fݾ" 8f;!;a/||iTLct8k&%HS\`Ff)|qQEɽ?i焁ty׉)gj{,.:Ҝa#a*ljR-msFFr&d E Y`fVRZ}-UooDA=w%z{_}0!'v~č\.8{pd@af.4^> (bf^/σjYm\L׷&,7Nvӝl WkXF!Mwi 6!49>?\AfdQFj:޿0gƬ3(+X2 >wLxrCqh&mNO cC0E =EУTwWr8 A鬇"͟uko4:4vPP-))&QZww/廗 9x{QЗx:#KnYMaRKBe.Avmhˎn4|SKrk}  2sBF7+U!K[54IKª0%J:Pti۸S7MS"!>TO85/UO wWDWe%r @M琓yBBVG(=OoQ"1۰C|[(ܶQpΞE.ܐzujWS W<-y i&yu'CJ 4~y[IAHڈB}ipšb &`u(7XMWH>JQ}A4ҀAuG7,.C5/Qz% @-9+h2pj)$0+b MMK: L*xKcE< Eu$Z=|BO4Q1bu$|?hmXFQ?-񈩶x17IǵRsc-zaKnI!^ahS#L05Sl:‹ZV 0RnL&ODG֚jI{PpbFꃓj\3 0O!-iy#"ty!09.] 4b6*],F;xzO 5H n=jxx󚱍AxbnD`||){Sp'݂Yc;n:jbSMHӱÿ޴L)[ܻ?o(viUlz: =,{{R3:8)yȹFL U5.9`k8MŌ.pAc4`N8:ɀ`X?JyhfKp?HIBqy V, Pz՗vˣ_T}zGHu# ƚz?Zys%iXœG\؂->wp`rg4i L-vOi77<˝Ж3WRd&E $YDˉ"LPUVIȀks׭DzH2k{n8C5S1(JNP:'@N֦ԲBj,e?>Uqo/r@rH{av`Ջcc%;v:Tc^C[%WӴT]bńAP׋i=t3{ bŋTnjy(dO1+o^ mNn畍be%Y#=CoZG$RPK᭏WeUunF0/]frjn pILΝJ4PwA3\6C#MEh8}>آ| @ Ou>5*e;1#IGMYWi]ldI_甘W2-wBp3{=ntՁv*z-N-[4w*ۆE/"ILZu 7>Fb3RZB5d< '08pA7.yn9C"4hP*'A Ӆ/u)~hzr>1p28&[VgULqoQߜ4̑$_ji?3*i}Uj,evGV)~Ye~x:{u׷V~t^YwZk$͂! ZN"6ұ'R޻$vɄZSwjֱ 3gӱCT$"-|,T)s- )*ie$[J>QS5=,Xf:1yЌa\ Dt7*])bɬR @O=X`P6 -R0L}' M-KeVjPE&Ub6rB0rSa[ p> טpvCwCsղ{Ư>e% WD9#Iil!F/CK쏧ό[`u G몆j8{3ϟ6lKqpì]{=BJTJ*]'DFEӒNE^~DBYyHRr Ù LDk#[Ξ}r0}ڵr1YR>bzIqŬ4nM4";A궦a=J l-Q|鄭KW/2zq]!6"Y݅KLH(ecӶn)\VwZor 6Ɩ.q?Tۜ* $ mԆAv,.%_64 5gjK]J(b?ŋ pDB-qW0&~yb6Y[&d4b ͬ72U38+`!q|J"v€oUfG(|6w ZoGZ褪96)֎0/e2GOLM'] Qn®nr`<-Zbr~b_Vi DX^Xo[EГ='lN@Xd-:t&D֦xRsX/|k|Ϫ!f*n<ӄYؘ-\MB[gdϘmHӬ2®@OZzAF*(`q DXxTcUx"U٬G+ }fTw%׳/ P B?w[M19$¯6syz*>u&yp8X* ^hE*$o {zɡ X_q-6g}Zٯ1 NPDOP݆%%)˝:Sm htL:EcmJ0I1cgeaNԋWف{r^6ϱ#$XM\e/Ow?mK {q3J^qm"tO0ɔbx-裏~"|5xy3ϑ1"6TڎdF7fDPq+txA6%8w=&oȺP6#Uᖸ1EFJ*9mKB3H)=lS,C&@-CP9pJ%=" lw46fW&!p5jc`|~(%S oo}' ,9Qx.2r/@2Rv@DwM&@jI|7]W^r闞AO ISF[X;yV&CIpu$r-΢Ytgqֿz:>.E^ qD`VsUheX5~- ?5JŽv/=]ŀ6 ?>p8DYU$KU T/aQY)V)u6O^ 2,&UxȭW1;=ّ6~Vj[v7`K댁_|IOp絣bĿL-32`u #4;IuXnfwSTeeVXVV٭ߚH r|UͫMH@?Nm4DO !R%5̓xʨEL}s&ΊhwJd|C 4"*]"TcUSڟet~ wk3SR謋hEvaw`c8X 6 "gc㫶:gA7:}-K gRNdT#'HV5s }>= <$ox:FC%;BX게?Rɇ6r= Q0Ȓaڅy525mwl+[lc0|q 2<藽2;6N>Od~( vȸʪ]jgXox.iAl^ /n\Nx)eUvt A{XǦpJø<iG 2:@sͩ$V'A7R%Bis&؈eSmݪ[96:a6,uH4&ݛw7N\:0ة+:fw)&ȐvhP켜~\%Qq3r26<_7_$57-N$kDfq朗4M B1|n]OVHWwmBG4*6[ڨYR諞 )JkfX.~0tHG#քֵDBb^{Q4QyYp}Ldz7կơ+|Xnh\ͮ ZE`鋎`$ oޡ1 ~OG]LLV-gⲳ􀱈|!Yƒ[卛JcxʬgWA]AҼ>ȤwqSkp~(:Im7o'#@ڿ*hPI)d4#/\h }v\,_}~X3M6G];slk__!l'Ao023do1Lnr~1v+S?NVEQfZG_]qtN4ԳTA^g.!D*= |k`-8 /iuzEd`nrLcƇucTH.m}( L?q R:_¾_ B_M_ [Rnf)hCt{+qS!l~Gvmapp,:sD=S<$>d͉qAΣv 1Ar؀1qRcnwHs}O] Fc!(|\W~?WJPW%>Zqqɉ z!rkOm(tJ܏ĦY#?wֺj/r;Th)p]y0\U&;`lC`kThhtڐ ]0y2%9HS+11z[% #2u5cK7Ae[&n{ KaP{K Y* !\sdqٮG1<;4R@CJ*cyCGLs"<ƴLPWh>nnA|\ TjzAw%4Ьs4aQ꯾*Sr>1ǣngzk?.809?;Hm(B OaK*`|ںawױ !su_w_MIfOGw%dsLM?K-n*SYGαGc\շcDgY^m4GWif@jdI:@Y5risv3 ;D&}C@$N/z\^Ulk\t`ˬ(Z Wyl-kih_\fyǙ&=ô̎ }TR1,sT]ƣ0x%@ Gۆu/7k$|)8Na?vO w*t1Z|gP񘰙$ww楲'P+۞NQ\ 8r2*udI.60inO-^LyciUM>3Ԛ_ZȮ,f^5ڇ!ÖB=BW6gSxU1@ԌGZb\Ȋo<Ml2{T)z".CA-j:63%3s5A(-ڡB8=l+,D#Ƣ(opDSN6:e _rR\ *Z2PB[sp l:qoj!z' 8O,e2[~$~4P>m!& kmgJcH  0>G #fxoZ3(8k *7Y~gݱ;;6 .bf;.)#8fd9m0\ ErexHҖ)W'OQ;iNJj͉^lޞ;Sj#=>W1]wfY{mre27DV&g"wPJx0b\ @,"ǩ0-y)v35ȕK闄(TH߼xo,֭O";OM; q"~Eq?6A!Qra;=uba?ӳi#8ߴ!2n|E-6m?Fz  ]m_+;y 7l~GEU =$ r%%0ܞWQOY+CukNN=:Eh79(όh2u1oӶTn«8߽bwg4 *Q6{z^pR:ju`&=nHVCxղăv6g[z@۱,_!Ug?Ҥ>:\@Sps׾&79,ѢmCɆj$_Fw66-˳,!\%G*5|BVHfv!>B{0=4sI+DLn.{ί} ~u;X"YOqF~jv[W%5R nF<$Eǖ3Cݪt&Qrſ/ |<.v)Owmdo¾djgIVՔ^%̅[Rz3rrS:wU7AGrX *`IѾ4%ޕ弄SGuJ?+}tsQ–ņW*xh.o< Wuq!h𲚸Uk=6\ "1OSsKѵYnXxC-i<{`3|AOXyl/yͅwX PXT%v_\UhɛS^I"CY =\3˶ZiaqSc6 e(nR̐wxŃy&̓xhLLeDT~y̤xπYQB^됿WHM:nVXV.PPGQ lly5K{O~(7՝Z '.g$YIZZk;y.u->2H>Bm5݅aw9NUb%z݀뎼ۯuX_|wBw"S¤gFI£D nJ\+:#.!tXxP]5 eMTYY z'†C/QgURӎAJX80"j%tnx/g-04n}sD05l<O äxL3!fIF|caE}IMdM.{D3@fDJ߉G_nӟT;evu(b`EXܯYޣ x)V¿}9*gjڹ+e rCi[4k˥ ,($b*2 CNm -_{l?EPz@3fMzYUDV_@q#sy0Nǣwbtk%k'PB/^T^ܳN@o\X"jvwp qFP~;}6$vKµWۍ Әp]fE`eטIXB8,jnspiکMH]U'jj;E1\1?,[8mTtv#H\ V@VZl%z=. F:Q#+קcUT1+EG_[ha` ϰ]I[O|.'h23Ki?, 0<]HGKբ/fdeLDN@0Z~ Uy[֝msQR`m<K40팭~f:(@I^d"A1tXG-nB(͙;u=%뽓_BC` |f0ᚳ"[0Qnzj*TH3WRclҪzT6텵)SYZ|Zf^^y pQHh'ٝ=/l6\MiYi{kT#G41?$UaHG"cA71/"Մ\BƝ\pm w4T/}N;3Pj㷖5l%(J%gc;`TE{ }ʾ 뎥:-%B_Bj[WoH{IQ?и .#q/8^gi|֡%֤sQ'b$)?˽:|F-(n%% &)2'}(%@*u)6k?o,|:q q襭WP}ݤaz0 Wo"X꒠ *Qvb wi %v3~uA Ϋy/Jhjx&z| />E%!(k*7)VD|D!2 xao|fVB1F`G(N6oDԷSjWHT C =N0 }y@ h}#9nTl2]fma䱆BY:֬,ڶv l$ߢic( s^`NpE(h 2Ѿd#LYq E  c.o3+eAq<}Ŋ6 -dTc؀E$M>-y ' Vfѿ6PÂKoXc!Sxž;egMGlgpDo0ىfL %^^ܝ!SinAr VĨC5޴{Xa"p!SK͉~3i~k6abqcc32^=I.L{H73A>q{ _r(G'|3GwAx{/hJber9A)K+~u3XtdC@iDA7DH)D·bi=V =@ҖY"ʕݚ~fSi ·$㸯˸}NvKy%;)8#A=,(h)ˁgպmΚbIVߦ0fv\`ݴ󤫃:L{J_VPn 3'r2[r˖[ia扔TKpDkh/[fc^~>/vY,>m\l2}EPn_q<}5]L[ZLյ%ښ_h32ז6|')Ka/g$o뭅"+=7Zatqf Qk1 T!\־Wsxn-xdi]Iǔ(V91_Jo`\4\y-y]7t!Sc0ѻ+&"/'vBF9V*Ll6j5m4 [6dwoEh.S5w@kmy έqr5/լ^Ȋ)bƉ^;޺El A mvY1\*(+h#KHpC(/KXVq{d3ZB,DWǝ` .}4w[.vpž4X'׶lq5x~jIL frSfǞ-`L:M7lmҍdln9tqqær g'+,?jp,-œQ',r:2)XHlFm1kT (KG?DsF`aߺZr~S&-hS8]iw̔&P!C(,P+ņ)L?FRlňt8TCtȡdq$H#fg$K@L·#z4˛9vg9JY'UQS?Y@@xvZ"U"]l_>)| i3V@߻d .1ە6=3=񉆩w^HUGa"!N+J_=5tPni+'4vL3]65& ӵɾ-šlZB%\xh:8p ja ۅ=.am ԎZ!χ}cd9;J kLXǗLnRvMSЀ)~pv!c )I=׼,01[/E3OJ/^ !ږt %$>> q\ޏ&?#oe.a݆kU;pYm\Wy/j4Wog vYYUY"W?! ͲM?rR{ I!ۋԍZ`Y'=C:K\זДf30= ])sD6c*I:kf" D/;-LKII Mwga˕b 1Aθv1jaH13@gnhXP#@tӣv}M"\ uIZ /@VQR8'i{6 +H/XKyyL' BH; ԫor]LbF>.>n$Q%g:fM딑ƔNFռE(Xt-MRw*K8$&k27- `|3F"N}$.)Sx;dv7  d-6ݺ[RVpEc}7ĭi'0Ȼk 5K >b󕶣~poothۺh.9XsTi1 7wFp + ʝV{Zc9}XA6/:jjM䖻 V/Y[%oz?ֽ\W8э@PkVZcQ1k 1{N_TrMz"lQ2 mAƘE5ס}+4QBOeJXZ_D|M+km!f)BR?hZĬ{EZ:C\J;?`C9sr|izP ;KMfcŏ[!DŽa~_5JZ =C!7'uOrnJ9]7EOKq!cAץdZM\Av?toO1Lq 82w)y2zSwnC RqG1WXI04{NՐfXߗ~Yk#-K-5jS3O[wd_hqED!eT0 G P4 ʍUj㈺Gm)]2/^؅>r$''aęyRrfUDіh$ؠP[lQѻwD7,n^$%$i'!]JҺc 4BI$Bk!vݶЫ#oW'E aǼLϑ(׸*}I?f?4 cׇ2zDP(#s-~ >&nw[[YM˚L]Vaam >tE)EUӳ}(I뫸IDcT f3P 0Q2ȗT!ZM'2kF )CH(RS&;7{}*Ij F[-emer$)oG W#0vh!h,<xsZE'4錷Zklܿ k4uJLx],c Fdx'hjXe%#![GZ~#&z$3m=,1 =!6?2SO?j\ӫf"©k}Wf|x-@9hտ{LEST0ߋdpwguV,P`R5rP;^!?vxEN0p娌pT'^PEH-P޽Z)؄{n̈sjJ*6=Nhd5޳.s!|:'V UxP6,Mu2x %cjd;뜼mo#l5Uc I3vTEȸ d_nB_>GX&>> y 7%xw֪!y~75\ƞpo^Ҝ?Q"ؿ:S|stLLJ*kl0X;ڝm"[C!v5II V:Q Ո#Eu8[P?a$!{c:(?vS"jWسA2^T"O7co+ d +p`f.D:P/`5oTt7F߹Pi1zWzX Bpʭ<2 %cOM}b8HDk& hSB;5\җuY3d'hkx?؉|jpJЦm=Fa#:pMЯ*&JtA8%FhW&Dodٜ Pg t';ȓ}Hͬ5ͧj͋"7ɬK>#in FFkwv?Iep#k 9@h<]YA>JtkO66өB$x=t8?+z!7 8_f;"댁McY2gܰquF0CzuD, ҼhoLX'w^;;x 2<>=,\60PH(FpVn~|&rFѰXOw#' s"㳷g}}.TO,6NLǒIb6&Fz!7M-;ra-S* DN|hUR._=y'lOD"MZ۔D^k߉MtчX 5+? 8q= JOR2b68DgL•:QFM_ަ-rp,-1@7T6Y_:CUZlF!Kn&:Ĭ +::Zur  4]1d~P%F., 't*$}ļIJ%YSD|ty}?ZݎR.v @$ [ .$iV˸ ڷs#ӁE8lBQ/gu <4\W>fd7~1N&U d&/\QSSD:ۈJY~iHb}E#nL%C#V"/Vw{Y\FEcgrQa}j+cqn/>!$ U"7pꤤ4owe ۮ,F("[]FBQ_61C*:#QeӢU" Z?cIM)ᾣZ9y(̂Cs*p67 ^OotjD-t/BgI?J{P|6bK] ˆ(OgbqWUȦgc ]]{> ҎʯҰf,0iqR@9t雗}㐠_.)S@ [h(ъmݟSTm=(RgJSr@vӡrD@]g[H۱k+Rۀ=GdJWvjO` iԑ>1%;Rr\&\?g#6 mZmBC'wAO 5I@2SQ-iV-(U, fǿ7/tĜQʩUGa@_&dA84Vʑ O|tq W _jv ̧iXGg3M6C&Sn`=%{GH[=~¿Zmy9s:ʒ2F~fHXw {{;N4 k56GpC֦ĵT{U:YrUP))mo.n y7&35bynb e wvyePzDW UL #l@{ȍX;_ÊA[8ѽVk\0(R {+yVm租 Ω[N4]Q#BQrMmv+.L W 5m,y /hֳe[ZOb뤿 *[ZMo8rKR&Hg}۸5ӥNеEхFXvxb 2f›  s}+ Ekdޮlf%5 az t#v#^Sl!<*l:ՋPH _x3Ud90he9k~bQӓ#-Zv$83w RCW9>Y16*[P@fYZo.e^[h>PM;tiQF;hnIj4JCvEk&|Cᩲ$(쁈kb* 6j[JBi~S 4#aSp͜u* 4a(c7) DDO$~yƱ- Pع ?|;)Q:4iX5-Wvĕa©[&Z©$:ۀy43*<-B6 P肒Z7pyd/S5S{: w#{hx|% y{r͕ =vmG@!)˼'ɞ"ONP0#Q=#J2_h?pNl&1瀱ʬEm*93NӁuO<+` Fu+{& >)ywn5ܜ3ܳlD\K>3"yTI8?%t L?HWy$O(={YqWlAH&fA9k{~#dށAF)MFUrOrP=+CP ,mn dk+*cb DCaAe&HthbzیBGT^,9@`ݜzDI+S,sX}wRZYjÏj  BU!TL MƻEʵhl,SlO1Kϵـ .F``Q1xBj6?1sQ0ͥ6D x`E$l62,JEqX` T~:{ev7!߶s ]4)9b}WWb5vBTLW<>z\p]ZA73zH8iP(ұ;[>LY `B (d( `G%G3;ʞkSgUNV~EN/-L[SU[e*Вb`D?x3h0]c'ٗ+G_ f\nv7s\@ٟ!+~gɈϝint }(CQ#k 9#2foZ6YMHksڃeߔבo>7T厴!ܫ?<85VeiR? ;HU Dsߔ?k|A aLS$$zqw*0(90f=QXIhTaL[xXi$!M-#V)g&fɎ 6 쐃l,\!5﬚?,!)}{-FNyl'Cv>/V8em |72%hSx6;װJUQ<|`I,Xm*{~~hC4^_%<~^ļ]ichpp23R`6#SI>$KCRL/`%s"?oO>ܡԷm_=He%@_kљg,i '6͎ ;yrG9w5nTb~Jo;ͱ{#1tBVp?*8 sK' 6@ ސZۧCxu첓97˝r"2x%U|jcZT-H*WPWٛ5,05CRg0jh j{[q [6_[v-!)p@7Im u.'p<ֱ5S;fѫ!M-rye1/u+S3ί"}kf3L| cR]u=ȈPMW'F '͇f=E:ڝaS$8W:UJv۠Zq T낉 z1& U^"8{%w[K` оQ!H+b6 Am @ ZYb&l6o[*XNs)N ɍ "?^a :(shVZɩb3DNPYq?}ZhZ' X oߩc3+6O/m-<캈HLuOo1*SzsYx0pk /Z.䈄n8~^HfN"O<큐_qv)~MMAD5N?@% [Ҧ\=""a~V pLh%R99^ڭokqO&3Z`<?bN:`cKT^fc]g<9-KjR^?Ngvw[m`<.g\oP֩3W)$京1Or%$a QF-1djfH>C:su( xx|Sܯx-0W AR/'™~+I'0pMA,Hy} ow89}豯5n.RRߏwN3D^㥶lGHxJԍ&J?as mg(k=T*m- z8IŃ@4d؂C?6a*B'^%<&:m01xr0s&Ya􉎚>2W;cs'u~kFKt޷d6cWntv#iӯtu29.هF&cƇzxC4vm[Ky٭o@5l+M+&Q| J%͑n2}kt?ol\Ø<nmP42M_p7Be0A~w+dY }LϿ+UpĒWa qVZ1nJ2m*}R)WwN!8SQī{; [` 6wkFnډ26 Hf жlXpq(AC?Ge}Zye*/> <  E "¥3-8̗!:r qKPlrb LbǣlCR>= g%7OyЇ[I򝆘}~Xz&m !(դnN ' =(85k=0*`i8Ӣmmo6}*(YHqAXfNم>CX9 Ք.u|uؐ6F#?7 R[)A-()^}^cd1MG:.~`ܱ~.}Ina.7~g/*`#2>慖E(Gc!ꗭՏX E_Ie6 7d^61kԩVfх Y@pNAĪ#ڻrEf]1Zo,b{qb;44h׻;(6 htpTEvVCr3Vdɩ*lx^'~>š!6"Xf-a$ CW;gpysLS'g58h3u-BA_Oचկݐ:Z* [5}w0r7*5媆x]K2!v(TNEGP$`?!7f;O rHSlo'6gH1%Vѭg;D*]t0z16>͎XwRe0a:K<Ce3GWcֲɧNqf|\VLrNl5|'QQ>a\;Yi|0@$$v?(% *F, MF^Ē*$( q3DYWH4Ž%Ϥ^hʑ $ Tֿ2^DA@l7:*ER3ע#EDifB o6c@0M;fVặN"|NѭG@;uZ m%#=<{Yn uR0=g6d<` pGMivG!r q 斶 sxPSssR%.#It[*v-K),$Z k'Pa4\=1 UTm˹Po S* u|y|+ݓ}L7)Y!x㬬R)-Wޗw5M`/l,”"a 1J`ݙzO/0oF j=pXo\Epֻa~ߛFwK0X@y$w? .\Rxg:~⭙.OMD BIWsMBaSgo_G{ӆ?H?}&@XrgId=(Dp꾎6_} hnÛB{nnIXiA ً/-a3Yo-eHP "G:Αn']5HnGusvKI\tO@?}rikmJZG43&8v|hfQ|.etp<| (oHrʪgы3޷[ UZZEy@P4NwAzB܆F v3FmzԨL,l^<5SxW]B ǎoiAHLaqPcyϣiQ5,ҟtY^2Z)EFv#X/=WB۞W@(.}on}d::bl7 >DjK #X7okVw%w rԕ" j7ۧʻ4Ú+X(H.@݇t~KU^Wy5yz5@ n#J<]'6ms;!oKs/\fYܓJs6E`d##Rtm(fզ%=NHf\om ]b©1F`Gڃi(q\EUJ0;{bzuk"AYϷ&eU<XL U:)P] Vkܞ0i8i)ՈK4-f=#ea)bo^I?OziUCa&C$>D 0K10Ҫsf".h榔 _\Q粜L-i1TY] zH W+;:SՍ̽2W_G.]Vwf>i˵Z2g|(K)I|M&O`kW{BU? |3;Dj FJdZ/*F Xg=` d PuĴ >],$A^=mR,C]0a<(-/}:tUC u}%PاpD9ɯQS{1jXU܋dJaAD;ܼ\ݕTč`A C[$2f >||8sgwA hJ Rr 8Q_TLzjUV$awU2G0aMŐXC*<} =͏R`d o F%6qLq1nFC)]8ٍ1ENEADD(1`W}}9 qxD, _ "Qf)؀h2eTՋ 77ɚ !PC n)'x{xG!@YǙ˵8 x4~yI.9N7H%$koW πֽ 6IXgBr!_<90nMm11ǟpT`J= Vz0|riNt.eƓv<].a8T4tLv(ɖ{GE*c%TH *LQz FXѬ4>7v<>Bdef@Ibm# 2ݾ>5[e7Vr5s /ka[O/1hh&_|*HC8Jէ+S:Ln/!m[DwI?}?aHf@.VqYkE]ŮcqebDi2!nk] ]? ~˨XTNȴ-+ɡs@ߎSPUAQT6勞@⤤+'1\t|)\|)fFSu',kJ]-~"uPzCrwn.ϝ|O f/v2ZTxIׇNv E^z*Ցh)o"xt[z(G]^_W#zQ3Fj7U\5.c.˻i.׶ !%CeOg?ƷYG+':6˕FT9^ `D|ڋ|ݍ|q)Hѡ3"Ocy_! Q|jxZGGۗRm2«na?<"sDȔX6{Ӳotnm)rt=I 8t#6UQaֶ: \tMP_~ =ꪵٙlNV ,J3 3`DZȷP,BUCV@P_FNb̔ cWWĠdRh]ONAd'C*p4̯SnB%r_YWQ4heqҘ/85O+nlPxgPkN kϚEV[ŤHf~/`p:%T !d̎tihkBf|sxJD/qNNHx_.d_YA|u*YI4}O0$Jda%w(-{ld6t%nEPTXJҨF8yAMa*o5"0ޟ-&8h3A OY#+&G/ɑE8¯p4RBZR&r@Ꜳ+ȎL(Ve]>AInVg~-4,rCd_m1wpgJ-pW\\R4yTkC@ cw6 {܏~VmK7=g5Af눲%p09nt }|]Xdp"Kgsc,>>jn| iQ! n*.j5)Y{3G"ϨKKMжIr3g^;M O7fcc]-?^!\~a9?]95֘lY;{6OؠDwƇb(a@@qmNj>)|0\ٓN!m|K:JB o=f~c8Cc$s dv⇞J9u;vVxwF%+6&RVt/}zأG)0#R?oE2<Ήҫ%[gv _WL 4F`}1 &⸅w۲s~hxr'gl-M`0莂i4(Ta`OIݹYVdٰ%f[Uk0u]*kPrI(syug[t6d/^u5ġ21wh?490ay `F\luM-[# F$*#QiF"T#|}8mƙ` Pq(Ѩſ{wx8#VEDQں1cSY5uH"fƊDK_N LHP+bUŚ#Tek X`$U~_(hM7PHMlM^^ۣ{(Sۍkc]~ư ߔcw0ʞcc(m 1-lXveeEsȢ?gW?$Iл$#V"į TGg_d<7ݞ ZDJ]$Eu/c3Ij + I"nie4ԸT1((00H169` (4$>M@WXFwz*A}]-HYDx`^͍ZWźXԐY̑X`i.ĶBGO_}$&->s$Q>8\713MaG] hQu)IW2U axTě`cykrRnAޓCU-VWp7v#KbkX埶pFtҁGV!.+ a8e* dRv~Y0)# A8tjʲ Iu H#8@SZ;hzCNCWbN Š{Éɮ DAHTbjՑTKsZI/i+ma? VCjGn_XSġeAip3Ԧ4o\)Z++(c pZÞ׊rrcTO '{xH-#̽xi^Gs&?g,4Po0nxg%/C pE-='>}u UV6eb̽YwC?1uŹ$to ?=ŖQ8!\/N_s9 I}8Y9uE#3Nw f" )_fCPJN)rL -d`;],58 SWdAc5zҍf*/@w-[va 5hvI} V.n(߹U `72Z>- W2+$BGRY#pwf*UIĞEcrv+THr8RQܾImJѤ<Due1r8 a qjSxI乎{(L;궴Uh\`wZ`70,^&jmUjrÓyLVce L9W,廚ͫq]Twi+`+cRcDϟW FVwbTUarGalv;d?>IUm#?gg(N5LFR?˙2y@ pn/\LC:Alʷߓ_q^˦a1L_æ3ޱ|rn"֢RAI\)&$Z&ݿjaC]d6`ϬX-/Ah 6^LzsNSm?YDcXym$. ( #{z .HQ|J72q~H_b .Rl󉼕Mvܔj"$iSsxEwtƜ>^\ a8ؒ[AWp~%Y"˩d_#2TiH⻥UkrHߍSNvԡIj+/^E{-~skY=9- `jdp2p{n4f~'r 9%ЂcJMAHh1Z0rS;$]Td|˕O!Fg*· ;䮛b}&BPX\rCod] ^+"b+̈́Kq992K3!/Wm][Z([!\8TwO ɝ5 ŕKE[ h+¤vhd|$[-b<uݳ0GI;^Nk\%ߡ0gkNbzP-Sk&fV8;4/V,顶wg^2&N,EF |~""h193,URV?]e$QR[or3TYp\=!j _"蹒8vHmJ@Q/:A i}-3A"u@Wa'`L\O^9M"Tz9&'`2%4crcAL^JSOSSl Pk{,eH:s>7emm B}@1ߴ]r+9pJXs+oR׼4Q\wO'l47dg^' Gyj6 Gt ZO xB %{}OL6kah 9kU#cw7jlTCF@x=Z @]r,V6NWAPTr^x?NyM=Ņ*>_ '$Gp' y [m| q >ԅDMXɐxK'$[| O3jUww>(*و|? ⟸mAdXfY {Lg'eV8,y4ng mg^WQ],b yr"$X TLTk$86@%]y'09B4jBU\'qr-]:%d t^ϱ&]ʄڝ}">gdP{bݶS#TAG}9g1}]]ˈ+|(3.|CRbN0Wnv{#$-E歉> gߡ/sDھHLqwhj5=u+|[ЗYAb+*Ie2Hy*r^2j>*M,kx )0YBA{:#[ K:ko: 662sJ'GD3ivYг!Sえs.Kۈ$[ea D6[83wL 0sk5HrOISq%R9D :ropvɌp^).22sMzDbȊt2 OU c2{\V($ S6ͪ: <^ ,+㓀ɖ?X~2rĝ,rG(gߪ{'#g)m;>r;3$s<x=毺<2fLׄ&v0C xSj6B] Ý-yh*KדfOg4%>Yx1$HԐoG-Q_6_]u0ػfBRϭOcz.\Ee/Hxg+Ck0ՒcojiG[,6{ d0gؠK.N`tye&Xpٖߊ}c?Gv|٠k5/g\YzΕ_UOB^.q5CL^v8KL\{WPN3e_bjb'ӌrs|,{F36Tx.nڟхqхv=TczAo^]prdp1тذw Tg"($sA;qͨתi$bBb; iYnYu[v!J4! 헁2Kf&8!緾0wXڔV_'/Sn:+%A3m{\Cn\,|ApcpoM[uThw.{]1+ͱ.*˴ZpyҤZSqw/KW EXem%/`j3#]{{2׶=UܐTp6S&Mt0;ƣ~yW|,EpW;7ig 匚E3d[a^Un%TuײDT. ~ӡ诜=$'X9:7]S#c[Fp{HC r aHDZmu)dOz7M&TγS.ͷ"^3QHA9?)Qda2vtp^K5iŊln0Q?d$Q$ͳٛLaP9+#r=W)8U4&L1$G0HgIʱ\gA K'Q1T)uO2JЧ\h#vZӇmw$*KHjU<,"Xw#׸g?n,FRyeWtB^ÐzȆ,&'82Q БU|AqͲ`'@84s{SKR-N rRw\TJPˆd1'.Q nu?n`ٸa}BИrC-բK59LS|\xʠ~_26VUMܖE)7ۯS( {šɑ3`Ϊ-V3@`S>,$p]3żݯ[ӸD``CM&o~Y Q뫝n]Fx_,m %bG{B2R"'`Ii 19%qQW"|Q)n G@ Hٷum2ZnPM7ОZ{6A~%*{T.4bB B.X-#CY{b6+&""ʛ"Q9/uS$](bi7(Ó=V<˝jz_Beg7߁ÃJpm\EGC1n1i*{Κk KmՁMd#/?d~stޔch,Tr۪/m-x|Ii>}gωW.a?sNȰ|2&pܭ\,mڙe{yVLםg |RE^{QyNч˄̅wk{B lsDg7X*X>%C‘uvxaA*=ariw2i>AIu|yujXh[qV A<ں|ud& (`(c1%_~HXPdnbK4 G:&^gRNZMpU>i7gC+D4W`w8r x ߂]&jEZUzg$ߧT)H%@ Lz٢VX7K}R{㦊_[ Ț7,V(_^;rAfc0( z?'/l g F;2 C:9Bl!t{n2>DcE_NG[{BPtĆv>_^''\)l:6s@AI{6X NOi: n(J7m * FʻkRa~P8ڲrX uIf#0Xw=%2nFܶg0fJ hRuxXN1:el+g ށ{1ۅ~dNdiV?P n6?dß($ j!LYQ9!´i*¯Xa=I ~w59żR1]+ިDoq(~1c|sɛ+ށ겴;3e_ՐbSx8h(iCq𐡄n8|' m[g Ai&J!z7Ϳ-0_VDfBlg@j@%z@SeOfi.{ YWm%Aqde A/Rakm[P2;rs}jadN~ݙ9fd#KLX5'a.e18{萨H^Z"%ەHQ^r.ˌCs;<*IYAM'w]D(_'& Q3ES^@ܱC 8O[)|ICl 2'bv&/(w2D\k#E7;VfCI0zIsd> j\ yԲb,~4?'ocw2 e,ѳ7RjKo`1tkR=akXvDy@/;T 7d㧍BSgӢMf]jU3gϛRV~@~Fm)Ċ!`vso2в,Dx@i䃵+aІ"vo/8u;}裷Lb84AK(+ wa']ps7 >0NF%B찕=lqc? aT\琀TA;\m ?>?!zT3뒬Sb'WZrF⡢Zz&]ᖞv0DC*E5ڻ~0CaPe`\:EVٲT ѦtRlFZlu~n`=b'q$K:%Hf}Ǽi겎VrKԲ\rk H'!jeDs K<HpENQW#DErTνrTT˥g:&L?XHcQ/1V4hfVsŨ>-%qy0ib~i˾]q*y3;TM?ܧrJ\+S )kzoY6.ġ/@>CC ۉTDծ{D!?͛b]jq?'앦Pt(5ICοS5#0tQk /b9W nnasaT[zb49PB"cQ)+rE ƣ&'ԫNf[h@U؞V/)yM>Bjz /N蕟hNZ=,~r$s9lu\Ki|C]&:9oJ & G ՜eZA~ľ]TC0Zg.H_aaoOO.*c5ni&Ldm1T)m)=p3&)VoFHA2cwcG}|#q*Ps9 *Լ/cOM@/)q( 1-l x\D*6Oϱ^qD[.ďp6' *Λ~$%4QxE'6픸*gO+ (/,23HsZx[hZ\{Y!cDGa5dzUJ˖(s$}{w*x}!>5.|}} bno-@ Bt }5E5xkGjJhQZL6wɺz6Tϵ#tj^5KW )r=j9ЛNqڟ02* 'oHKE+`9 sզ&*zTJSWI,1+ڕEHkY 1Xp1TrʱBT`)[?my'/p< 2gh3?TPfR'}~ᶸ<|ǹ]z}bn *>f?G+k=#|mM}b|BM.R-|CYL=@I :n84Dl~/g7u!v:>Q JBEhr9x\pT״{DiΙ߫-Q$d"jCT>5 gHGR@5dˇ;">*RfJ 'GDC]Z)}toXQ,ۤއ[L_/uyt>=_u{ oP=Uȫ*wd`b2W8f-75kdx,,\̖mzX;2iwROGDI0M uv="ZAz% Œxo@>53e=IytL?ۣV^|$׿ &N@I+yX2#I:N؁-tq/& qGUX KζQGa#U'+ltw!1 -|utSq@tz^v|Ŵ5A F y_ .3į,G8~~2%sM( wd3&L;,z6iͫ[І`r@@p3yi҂ $R;L*c!\pDBӋ)uKknEΐj8A"q7*{$VIX^joH=aF]C,}}&}hԙ@My0 N  zrfQHp-bPXSb@!oM"UDTfu*8}Sȁe Q.4YTcmV+J  Z؀=nm9$8$EK=RL0Z:G+upe^10|R.n|,G)F#άa.æ`J]e3cs5f6 LK,)w`%υѻoOs Z71]k:(z"L5T4 @z"~%,l4R$(šM~tNz:%w4k~H}|ob |l'/STG֐:aZr‹o,JϷJI(~юB1#ΉcOޖƏTkH6jU2BҳSd&iءے-l),5LBT[;]_3d\ߛxCU4MB ŚL¤ a暿ߎU;q $\K3}Yv5%.ͼ>z-n2qJz\O*fxqBFFFT-G^B۷t.#6ַYQze!avu|H[B[;h":'}; 6rB!*6|~@_oOcF~fwϫMnAL/uYq MYpZ`L+k{wk5ME_[ŚGj A+XѸ¼Ic0Q%/?ֻTSn>džOd-{ !F_~I1*3Q\ew5m3+ I2|:U_%*X!ҭ6dU"JU ⵰1=ܶChOЮũ^eKF~c4uv*~[t(}Esb_<!}*la^2ؗrH7'ک"0b~!̿31SpJ S2}Ve#LwQ r4Tba*J8</YP;D݅<@Tϟ}jU+2~U#NM% Ɨ5K&h ; 5H!UWwEwgN6>s]]_.!['h_^%Yrߢy'v vK`|Esц7/'QzFy։,Z@ n3w>0kgU3 kC4#ym%PZ(^e\okx@.lp4FF\I$A:7Z&L [X0F/ Ss2!>ApD\{޻ӱ hþ5$EO?]M<&: oߤ[ܕG.eK8@.5x":W?IbV.*i`ų9voAUIs3znXOk$*5s }Q(up3ɄZb Ⱦ"''ْ՝e94J+ou6l*Mۻu#|G~Q-(>.FSLK*'g:\}ZHsekr*S_pr#?h^ݟ/8rFhV8B3U*}yHd95~1kCD#tX ״/2 jv[OQ51GO]>~V P} 5 lcĤ|[̫P^aG$]}·N52Cn@!*i~ O1 _ŻzW5Օ8^"#K2al<} _g|GXoT)se7KGoy %)#Mۿ[ry` O+Vp'GT `k`tMaj`K<(kk(o0/`0+^L/ J?K>'H5.CN uoJo-eU)1Aai$`S?>b(9T}iiQ\όڋ\z\fv!מ`bgam>3-eK"2ˆ 2N恕W6Aö4'uv d={T\CD!7`ODYڑ)| @lIS@nsu~t&EP9Lbek`^g耪Qej`h:ÿsu넔%2Y[k}rc'D`,/k։|U~zYq9A]TK— 3`lgҤl،S!co9|8mliōpyl< 8C*_-Qb*SOS','޺ހhqkr[=? 8qPT LY)\<S? ٷ $š`eqNfROPM UtP641FpRÒTѕ,>q?R׻Qm/R{}Ӏg%(~=O%z~[r/ [:BW4@ VU-*υ7nRXl3eĭ8ad{EA)#/!vevԉSO7 H-4ͿtRo}uʅ8ls)b;iC!ɷAM|l(ei,"Dtvu.sMdAfl"W hpSƮOj߰,ףEhaPK@(V POrC?;JHI`gR{e|kw&%ؓlPRi))phZ;: IRr$#) zlxoĎ6tVKans1F% `qk֨xp=.6XH`t*%0R\4D6(.u2lXř}iV5;kJzƑ""qsv4NI$_79!֎mN{ŁP\e_oܤ~Ş턤6ME2?뿃ʚq#j#sz&^&GbhxVޏDDhxi1k96'̀9*'=_>" %JQw =VBAV!jve5;˭TGRE݄԰bCkqˏw҄7(En5gM}t|d4D<)M-ȹTnDlE*L^GBc`i fNUїB[.%LE x.kN+a܁R̫4(2޽ %GrP+R]E{mM"8Tƣ85@}I R6tT^7{;/\d|zM t5زjd3zs1Qްdsxeu kdEEݺg8Z2[ۥV2ţZs*#6\O/Nj/}d[OaWNvQĪu(10(.gaZ0 Kw$4+ƍfwyO.WADw4XЛø\Ϭh.#۴ߢ_B/"թ)/Jm4~6D9R&-Yk'' { _f ے3 ;QF/pr-i6-?ɛ^aUG]Xt_p ^>q^&%z;Pjۛ_GX-7Q+z8W~VKu& ltC ɬyݏui7[[]o!nIUuی07dY4-K^Ek1LOڍ);ʁmIď:t3Ŕke9q"L{l(R$&}#F LC+MŸ¯.k۫__2sRwvye<|y?aOV5|Q uшK>- E7*Ke5ݺ5Rz\"U/qG4#*&Y$!#ɺ4MnPqp]).`=  PO}K1W*:_)c'V |!HjKʕys( [ţUVVfS$}XNRũgѹc`,pO01s}Z&Q8}SyggAS̠+܆YcnW]9"DY9D]@shdz)k95B!/}'YV+h[05#,rH/js#BZ7DK5Bqac>rSo")w_NUZsb+p\jw ?\h=X0Fȏ0{70Fq DNS]$%bW&3iIЕbzDQIHkl0KItM^#UNOK)^!w&7|`][tv,\8t4gwE&x3Vf+k~/#,6Cྯ?ZffrSvOtw7c dǵgS5o(|Ѥx| K`hT$j~…24g+ S`$j-vTr Xm4teS~- =Ӽ rޚ|xWfvObsHA?hpS~c`vgT;l{V>sgeW$s嶑J-2bnFT ^Y?|~! .B?#b% qCFzlԤ ^~Y!my@nV2{i[>:j&*DOR ;"*yUnT؝TK@Q. e4eYQ7cxI:_4Jd _Ê0{%cd+W슍+'7P^% @Z} ͸'͹ų ? )]og$?7}'vMY嗂0pJXh  Au/,Q> -\2hF/#|Dr} 1źzO WpC&].8;Dq\<1wb9ZrvWԖ՗7y~~ wWPg|d9RS( Ec dKܐIcvۨY\N߸hӥKKyF4wW>xNpx Z[mQ˭{v[ ,բOh\{QMnBV߀v N; lMJo15TܔS9$s8pZN-Q2Jߒ~͵яAAg(vSGo}R`|kCIx=dK<*4K%lCo\K!K߱(|++7P'mFWWFEdNtkSQ XG( :ғ{jBTK qpwg4r\ꎹ]M Z{#/k5LpD8F4C)9Tq:ϸ}6!'x0ުK,`J@BLxWTɆMʼ` %pWB=m9tPZN2ٌ9ȽW>xQxjSEE( 7 ^3bW\Mb@wNe< r(RL>˦K4#?{}m#fi#b w@8orx}׺Ju1P~Z{D.o׶ P|@]鹣Eު=2 H-&#[iReA֜TRL >0+C߬3^2Y3"t!ź==Ǖx#@R(;(R3 C|軒Խ4 H}=kn)lLeP1K%RZ%6, U8 @{1YJ'3΁x#F1ijSXu$=r#:cHr0M&s7[u%x9TIzӽs1gݮf,dbj&ZMLsrݬrKEͥggږ:VfIQD}7j*_ @/ct<G-5 $02ź!\/dE@珸IX%, M`ς^SO&?T2Ƀ߃pN pUOpյK'S20,~:SYrҗ}9AV$s()xM"uM[jOWv45ѠEN'C@W@uSiQTn oz8`&@8H!CiU :*y|Exg+'s3Xm҃_nt_2jPdtjH-\fk =nvBvw)ox6Z<5lR O=' b}g&y3 3]86#J7JEo5؋m W7^lPy8e=6rs :Z&3xZl)&p]Ǣ6}r@ԜYfzzQ೏ҡ"Td TJ{z*8 mؔA&5`Mur3Ir OwF1.4FRɒy/ [?v+e&_34_}Sԉ5 OΘ:PP٪7G46)lš d9>Ք8W6af `W%a5r~B&dAaLᐴo쳤 Ag4wY}RiaN_¹ 2G.<;kZЍ>^]VV/v\>ˣ??VI?I奻3%bidpw=J!Ên&l[ҡi[\ Ct/?Q11ġQpgYc("Sh-Z(ޖ8$Ip:uCW4+T+%:=- {A  3ZeD o!mGȌB&SV/ 7B]GAJb27UL{:r1ISo'~`[P|u.BWgiz]p^cb$Om5Ն߹"2F;$7. ]$'4)քͼӖβ%E}b%Q1qN͟O` PzXt aSA^x\-cL ./VH8ӕpY֗Ld:XD#>3°2oC9;2QJ'-U"V]m9#UTot[ʴi +WmFEdw= X Ey\Sj`9lpֱH /Y-OmWɄAz v0UN`ss*I-DI-+NvD} q9z/5) >]"enKnv=0 ET #F)%k}ӱ} -Y4N(Y<#|V/C͍R4. 9Z m@b:]m@Tht֤PwM~i^Bl;-d-Xh|˭&9܏Ӿ .|) şN>0|%vaU }Uu,7HE[,xK^e yr)zp08' r9Y:aAw%QO4kˑXÄ hDE ֭PrM<;(MX+SIf @@ȎgR <#yV2;4Et O2L#Mw!X3mbf,ƟQRYwZE2јle'\Ur4ř!q|r>Uf|? n1 @ijEz]*pEgFi+ Жۺ#vz"cUQGIoE?kIɨ:UY6tA̫Xb=lc&!2&ڞ4>H]H]V7Z.=c_tbPy'=L}?5:fTzLF࿾b^b\"Du ؈^t䷕ME=@ |A'y/%7 }0hs7uE%z0}#%mnշ"q#^߭. " d0]4R>n&08ؒI`*v}y!\oD++Kȯ13L\{g 4`avOΟHsP;w Ogj>A^kY)@fQPg\xee$ ev!F,:8Lǁ/dS*GVWZM836&Sa75.,*?&B ^$^ /XGޱEv̫ {q t [NJтrҪ<;嵿rjt ˮ1#Tab {JG{͂R-LlKBy;Kldy=4v腔mAߑ5G2{]Gs^DHk̯i==*[!Ю1{@b>(;}"rHۅ{4 IxH iap H Q dJ.2::e+uh֪hl`s#k7:cd^ghWN9U=9Vv@>J.g<)tD; \K;; bi+-F갠Yb$sFfO'XTi„35;AZi! U?" Jp1Q g\F!GD-)7֭k^On}X̆+ ꄔtw\p؀L|kA(/ fz|lvv~7ozN[17X?a5 Y|$3G0#16ϮMD"Yefruۦ "W6iS־XMlTL1x!:r#%aax{R0oYhO2b8:L%#Ȃ{AoWW<=U&y|E gK l'{P{t93jd#D<IRZ4أe08e<0&p!pSmui 5hBfgt]Ihrn3 Js 6.]m5]#CzyBZ@"Т>eU Uz>?UG<".(K'_ϚA;<HNĬ>48CRc{H+؃$03 $i) @1ɑEYJY,g~;rYn*˺ A45TZ$!i#)pasl\ ſ~-@l$^sjx5ݮ~hG|uޠo'b`lN4wIvr#V$$BGZ :>w6, JJ]TȢڂ;ZDռb[@kAwhVz(!磌Wc1b>ưb>lL. nH{],\WAv@g[1Y nq>ea&d:e[j!@{ɝ)iIl ?kt~V+ugTŴa}J'HbCCY9B[$2:%$IsUnlc'fN6LR4H~gdp U!ꆲX!ح4p|q3J녂p̹c  MG"nV0|i:7ܸ?@YTOJKz HlѻE6t?B PDgꝲ%ϘN#z ?;Tm D2| w`\\ARȱ6;>;ruzj0;܇XH:H}w^bSw)Хs9*tvル|h=5٭X)rpO/~D"|o+Dw{4&ɃJ'p`rgزF;X>5Ǵn]kڬLXv|`,u늊arPM(l5C` 'T5p}7fl,A+`v{kP}V>S?Aj^sdc)M޴Oih]&_nltDV@J,|v3f!#z5'<*X\~)۩Z 6g-7qI ۩hUܺ`y GND}Nl A1HJAÌIZLJ+D&pkκDHE}r3P/ѐፚ\դYe`YfU1]HIu7^C8lU-K戨{LF# R5 4HbVأPؾy.b h  p#>p㇀.9%+Í˖@EX:K8 ==F@4mGR Ȭj/3%({^djJtR m2jUҳ ދASI7V.k d`<,"]DDoSwJ,3aP.rn(JԚ\*AhYl=Dl.Snv^&[r{K%XJhzWFATZ q >b@^8Ml-8c -oym)x\@/r:s@w9cw.pK`+O  dle &!GL$,ktLZ敁 9rМiL ůZ|2 zڰNbř е.Z[֫{0ߩi?Ee낭`Vv)||~!pLz˃DQ_)OS$%za/LY zTZIuwB>C>)zלߋK-rU64g^!fN2 L3a!*bFoqĕa45яk[(ЕQ rY6 [$QvX}J)T0_: KjyW"3WsxC_l.3{2|%KdqS&4ӨEw:$7iJژ6ILp8Sz`hkUG[$ŮW3 U t?ˤo) rlQ.Lm߂] XE5"';Ö:pBà^ &sDo:uB)vƅ -k@Ftk@RKpHl@0jyqY'vzPbٟ̬ Ĝ4\+&HDyat{!5{(?̜]i=D#58=uco .0V?K9M4-aŖDH[U !@DڼB2禉?4VH^;tDVU'̽KNiFzB|96J Z/XaY]-'KN>#B&^6p{Q3܊o0ߐ뤒xUOgNAD O/ūbϹof&vJp[&tNa{]nWC}bE0a) Mɷ:{@fK|OEaowS"A ۑZ1K 6<"MB!XEm|K@ÔO7 Dbد+D+HFٵ.P.M9v#{J4t Y=^q^bXҐj䌨Y_ypPPAAj{c::}RIzuf?TXH*#bg|B=i]]Zց>gElhuü g_YBȨX&,Kx;xWm"6kHT!!߿>J3›3laλgoiܒavhq/TmfNNd8u=$AY)t ]p>Jt+MCOsu{[MQ#Xxl &ڡPzY6840̨,1LHe]ý yYLp"{ϪVo pVM5'*5*eM:wDȯSb{Q%=jBUhap6kz̭QR yp5L$n>bD~ i Z|ΰV^?(fl5 NQiA:h(^@[px:t.4(z;< X ;kTzRJE eU v!aI"2unn\h|&w7DeziA %vJ. *KN= یiVws78&x_6%iQ;kW62~HL(|-F[VKsP o|7cJ "֖Nqk\QuLe95 ٢8XF{T)rY].#]4$\PNivs9-f1x%[|#udt)A3'<9uHSKN 5 K*xrQkaSid a޶XÐޒR޷mwMYP!z]4!^)Q;r"~:2W:AC@òysNUt#}=O6HhzC[ށ&A%K5i[c eYæo_rlܴWd Jju"8`DӦ$U?zj\:THؚ?8W̭Rԓ.\>~ؿSRUV8 ~t̚wڜ5jql=l~Y8h$6zt+GCIfMǂN]$'R})"W+ݖK?h+ !n@x1x-FyPJVw-V?a$]q Yk&P䋼 a^F4uns]*ӸQvKXR[ۆb B鎬|lKOhpL}FJRޮ /u 8fgS1wT%_ +rO,jϽDC⛟QB_m,7p_CF}! U_Vf#-Fzcw/L6X[Rةhw].Þ+C L2 jpH#oL?#T'GVd?"rmh 3SҼޭФ LC}%>aLJ ׵gLIH򛝛f\JO,(nJ{|'i>3KͰ/R ;S!mwIftpd+pup!Ea5ENʱ58m?d:^Ҭy*y2 yaޗ_]y85º>⪆P9<7<+AE]&<ÈFHϑÌT1y2[/w#=Ņ*C;,@Zgdܒ7 JoN9{f±[^m\5ҼvxJM32O2o;ELAEۿ۳f7|[xF +P^c[( g53`t g_7@V][Dq%Í)MFVڭ#^zWhpcL]pQC8Y{ yЎ;!.+]ٚ8 ??oEȠ\JlMb*RZ򊣠| x}eG6.OCqtun%cAm=V.m qWR x%Ln%>R0  8*XД|ő>GnZyB}|;Yĵ!'6榪-D^" ؈D-4=QSh{N&hZtmwTD)0<E#܈M & LAWw/(oݭoz9saUaGju4^ ?85uSL!ۊqȹX(~6Xޞ W5(%tt@M xM\# <,jo] Q*?l4nh%8ʴ[}<5ӼAWg]i@ۋ1ޡdOnrHiN~D>xr<$KbH$!KmGzQnŃ>wiyvPܛsP@ ;9-;iO'oi1M= 4 RVb9}qLl6Ntfz|oMv̎D&%hk "t\g+-O#k<Lɡ^G@,xsȫ"2]TlYjp0_M<1Faޓ qcm"'O$V22`ɚZ̔9~%!P}5c2IKӎd/KE1' vMZ%~-7([\EqFX§ZAl.v/ W2̢=U 'g: 1FՑR32Vc3z'(w!&]̐(QKpa+҇BLѐYbnaڐ&-zH\为-Z Z\yﺣ1H!%IiNUvʮ?8TSh|e Sf3a xfYy>/n hèL,9\l4͗ 6̨pg7E$Bjsi*Oߨ@"Dl}Ī"nO.$2°'!4;}r^ADr[AVuHְMk22{-8Ӂl؈~Rb @7a[U]p^KXWI0 ;7YsǣNΥo\luEQp5Iz0--g%|"z#u}F Zkw[| Q?!~v7k=" cҲ/o Z¢ tE Y w[Na!@(=qۀH:mGe8L m'˫T,¨!tf8o|Ɩ 4Oŧb ҇kj$FN_7"Ҍ^6au}cEt.r ɇ=0<8QF|Ѝɲ5vh93OxS\(_aO'Ƨ,vGgLna;SM%5usY]H #8V7 =13G{ѵfd-c5.], raQWwѹA@Jq+o7h>THZT/h&o|fZ|6kgZ4cf3f+I<5gVL-l5cZ_Z0L,pU#T[yB8Y|t5um.?|2EGg ffMcE4I_qb_q͙DjO2~M_ SepKaR7;?3Z(@dJ`<67zpw~тM9p eFє|SoĠagg[ zW$j3פ@p& b{b#3!5H4#7HLy"f0nJ}r2ȍ]9}Cn68TTy j-s ~IKcmOl_^+ tQt WeSN2z\Io0!Ё}1Rx/DU*[wܛ:#&VK*# m6OjTcshoF_Д:ѿyNјň嶮 \̎;vA'FPz 'e%r$e5vCPɘG(Ұw+tnCqO}A;po6Zk4}V]&\iJ{|kW_dBkm=HHITݐirneQgh>A"uN(UX78I"Y\?#7ķy6RG.V*&y_ȉ'=J-V q[GU'YP^UXy'bKq\ʸ{K(.݂yxQ qY`;^sTaK `ڃ)JN5|~lwCI{AF&wEgRU)0ːlˁg>JsNW߂[TW2#U33%յpLPy/(-`+O(hYT jocLӾ@Es^O_/QBڙ OzngB'7a/jV-4MXnzqLzXƔ~)ئ[݁ht,;/\O~kAp ]3UҠw=kJ?{hGۯXGjZxKax@p?_7ޡ ~9lVl\!h̑U̡}}t<Sn$ܘ;aϒ[1o@`*,ЈUjnk0#x'`Lݞ7Kȁ5f'Mp1u^}EO"״@$8:yރQkZVcdA|Gt1L`lb.*} w2 2$ش,1RR'.b\{u~eQ緲>rb &4D钥Gv[pE[SD:u39ο6^anf;~)8[<)m>΍aO)q.9e=6w)v,|( oH"hImwFJu${c#-!([{wց+5`'ܿ+٭&ٚ/6$n@J5v$ ]oi |G}P~`=a7Dž:r[>iM%dVXL)í wqtGd#2m ghWa͂Q 㒴?AR.OVh[.5Gv͹iua/OvX)u碉աz: Z)4YQ!R_-dl9/bL@!VQV"u@~-^]~ 0Ja>U?w߀sẌٌ9>P|xEXmLhk,||R(Iy<'apjiW3f]Rȍ:!?Xx#ƮxnGJ˩ Й wLq>խ(7$\'Y9+w)z&?[ s+9 =}( _v *Fx} $HX҉|q%i;-5^Ao8JJLG }R1""Ǧ(DJC%VoSմ"*_"\QLW\83A\@T$>1Yj 0 f#_Sv\{r: eaF4ֵ\1-pYÌ^Юa! \{rd.-Zh9^as><ɻӶ\H,)#@>u-"g8λޥM5 SՑʗ5 !K#E5"U[L iX (hT^[%eKt ^l5խ怔L ޱkS^0lnMEZ^| U,8.i[mmYֽQq^"׭ńC A%E%`U PJ}1a}[ɓ2ٳ 4K눛0Kw~KE"sG6h6u#Fיx^mʖl۳Ÿ }8DuWUMf)oHגZ671vϟ-!~ N1,wLBbU_O@?+Y>R睖cX\|``A 3ufLֲ}]QNABX - k[q{-x\OT3JYS+Yy9pB{OW'/ !4&S<쾮x7M,Dqypœ(g!Ӽ2_'"UM'WAH[DrA +/.GSϠyRCS!iݑU_q )D e{*λcթo zʦ>zu"d#([ Id4V'-̮}mŸaUE0ˈȻ8<ǚrcHqFV$<@/~Oﴏ,?>K~E6d< ^޴ՈIzm+ c|nX?)$޵*rNvX"`S͏?EyxwIW@rASS0/Fh f)51TV)pQ)Bl!_?_Њ~l*vWE1vr47u9|!l<@U Š6W ~3+8h?!&襛cp ddxoW)]` Je B3gηA01ro ׮ܹSz9Y$^½*p!Z=@vj~S6)eVO2N|e@hw &HǨu8N 麟Ob*koLK9}P?nMS9ObAvW*`Ί@p݈~Ҁ=֚fr89pEY,#o0篽o%07ߡ&FUW\"*sa~!E~zeG vާ yy߮ ?@O0j5J.I~;i|ſgҪSA aqQw+l)0x4RXn$ ǁH3!,r7"x#x Z =CFnVmҜLPGzϴTɘ g?Љ& ?>[>l `*(2+Dk^ )}"^ -)!hX- JvG89Ryg0{K#vo_2)¥b5./ݶ׵O8kLGJo@rs*q:gaҷyn |DHrJ-IITꊣ~e]>LER4lҸNwoݜKf)KU",+& e%S]i=u[: $ 0$ыlt(mz;=<Җ+f2d73[6A v)PٻTaSxDZf1m&wTH+_j>]q\$ѓP7hXq ݶ@L#E㊆&0W<毧koa>zu88N,NR``;|4*A>? 5TPlVC=@8H_#~ )//' l!OsV's4!3Fo=" "v1_X׆/v~!,c0[;z5-[;ch$l m*(ف uC%gnaA.p6/<;y)v{3a.),5eiEh~٫8*' L\k-cӨ  t8+i,}^h(sJ]IDwE{?#j`EFRWȺ-w!BMʍJ)44yC\uOȳ~!9l|X7UXGqN; 2Df5hןW'[ EؙDF6.f~ xY0Zd'u(s%)Ncɋ/n;Z,+n)Ypعa?XՀ^j ^pX"`hAXZ~~7.pZS3kHOp32S"20DþR Ur+uyz)d_UupDK`7UE4P .އ_MRcl \yj iR%2kR[4뗭H ߴ^Ch7^̮>vw(c^p[;˸T#E]&{c;̿%TqT,S)wPYqXMeyNՓҙrrLg ]Lcmչ5O aq-  1GQ6 (.[ϓMX6DЫ{fNdžb:K|wD+}0wG?k6 r< Q7vyWniM}*[nԹ.`WR$cßݺ\59ctSUÊXrk^STX1 )bU C1ϙiƄ6rU#B߈iݛ{;Tx=VL3.)p{{ON{.INd~D Y,7_T 1*d_.EA 78EJ)8 ^9h rY9RDQ-Oyh=D8jC`P?J5q%aE^]ЩQ^Hct/E1 kU^0]CpoMq5B|tYHҖl/#UeZIѠg~#>Ӻ9E)ۏ`ٖ D MNQyTp19&ZZ p&$5WEWJufRZziEw!h D#_ҳh6c ܂>~03{lywq4c$j4$Cԓȟ=wjީ^}Kߔrą(~30h!t/F +V<_[h0l.xxKHe/~T|@6drA i[Ah}:&{#Zf1.~Sg_(&8#`'vqCBsieY(WkKБBf4|K~g9|[c.nشOSf.O ԘKvpF@;KL‰uƘp9"+[Mn~媠zxńdf!vZS^+)V°~k L*B4+nfps<ytP 9 a1m @[&y~w)h&d[LK/`ȵ Sߑ\̪5s *^HL)+-f˔،dݛc;3BGf7yQ#^Z.ud;_8HDM؞O[t —NUBɴ: Vٝu>f )zΦvqS( _l!օsxmM@2|쎨mbk.E)˿zkz>4qN9 m^ Ŭ̊R:dQ(vh-PƮvX09jK{tm~2}@j'b$f&Cm%\רIٱ_teD&qa$Tv-x4ʇQ( XCVmD܆_D.کc7g+Z( >k0)[2!d 7ج^[Tpi`,FI.VI;WԞ#ۜ $'IC04$f@eG뗞*thDۦѺÊT*e۱hDVHHQ8i9"H=Dͳ cEv?x'SlYܖ$,uES%:4STrҀOajKg,)+ ڇPUP׽O r_(J1s ҅ӹb8L[q5*^ckJ󻳁֌U+~;=!6)]Mc4*Cr$TQ|[oJ ǞԖ7W~| w54 '+wz趌LkRYoUNqMw4r=v ?\yA5G.E>q 8^lfDwO<@־h~ʌޅ?u$*p#iOi2O{Ųh1߬j£ȟ]L&9K;Pb‚I x`wT_=(WOä)\} /1=*ެ?2Ea+u6ιlG8of𮊋kǪYFQ#1LƓ_c&D5W%*=Ľ65xO'4\}~1ͬ7 KzH 73XP:CxvA R/] *pza/<#VLiw?;\&XL0,25$IND8#Ğإ~iB7c$Io`ÂuZjǖ@)%Ef)`_Y~l@g=z3JQc*>)Z g؀Ɠ""i6Ĉ /g\њ]=䀉Ջ Hh$-ZLGªD>^7`jn~~yq]rʇdj.Y^rc(w{Vlj dQ@h/HlA;W)L#i(ACY>ʹJ$?)W\%l/;AR=ܺF׍''!=:ce?N{XxQ=kHq1턏ފ&NL[& Nw="au9>H6 :zJbޘ0p|?[Hh)a'O3 mK&>#a[߷}7vp77/<ϊHs'Ž\lq߳=:{s@d>g~c)7ogGXU!dekb/X]f kDOÍ9ӁWTu`uGEC柝 TȎP2BH.8 HJn*`2{Mγ>5P]!bYgG{mĭj] P".IBzl){Y@*+SyN_'IL7K7T |hJ21WZ pMS۽0*XM|Kfj :JKۺ:Onshϕ=T#ư: ez&:ktUj.tqkG<;lQ%&WJühfvu0 `$Uths#̋]΀L)|ŋ "Dߔ̿g"ϓEW){:R4=m|3S̜m gsAJw[0/E]'Legے\V }A&DjJLd*F\Ǒof9!\跓OF_O̓/6;P)[-V qJXt͝PzB+9/q[j{v1ǥW|wQ^a5ZEab<6ub$>[c_L4ٲ}yd0O!x55@8 m\lPqÍmo EWTaj?>ij`ᦳJD0ris:"S[ > />T6wEVkiqw4MIhwԸüy3 `97F6]B?=ҙ!hs+y NvL0b(,P &J8XzQF OOryL{)bV~bCQ75z/3G1f}DF1nŷ$RYp~dvbNz{Fs"V|H}}OpT#^놵\o^;Vv%!hI6\'*ɃPC=L[E~ 1 TLg̪CI5 Q_I1gWg'1r$1M?/ rr_sdDEM)^A=tBo%Ng: ]&ahDDM0x\CL9:->٠Hʽx\/X=L9ڶjصlD{L*~JQL̇꯷0Ώ˫]Lkp6zm5MTlw⎷b"x?q|jQ|SU. TK&U(]xǬy` "C|@ĝLSQ`|#sҞdwnE%J͸g5yL3Zdx0 OuG9nq{{Ӑ3Dv,Eq^n |,QR ^hn6*C8zS`~ŌZ?lOw-2u-'"ɖ9IX_Ga"pl0DUe+m;izdj¯4=j5\HK$_/-mtA6 B41x^A`JJQM}PxTZ ^<p" ߬}@R5P^2mvmxN)|~Ű2d98")@oK>dkϜRxpAJy l;bj5 n]Xkq;O&\E.t&RjxWV;# L=vcՇ| {w9U9ˌ&ˈYIf}bM.op{ >)suχ->E:琋ǖ4 Uzj2O3n`/] 1ʽjIϛF숼O׶7CPQyM:Wۆ gTh8 `ԘE&T-UG[Kkc$9A>5vUɨ} LaX۵_ m'.C&D ۴"T3iA<y2!~ P~g_bxYI_D^Fahz Fc#vz_a'Qb1MgO*CnE$lekrBz-7K ?ٖ@43el|jY-~(? !G/leO~$篩7z6iNv}ʅfK%@'{꣏!AQRE8+ž;_ogM󡜃7X۲@f++ >$cS+CQ&aTWk"JAyeՅmjӌru6į0e\FT+bd$ zk?g^<'Gcpڊ i w<}dxΦkuaE9olregTk9M'V.L9r= (^$ŧR>/uS=U D (mbmԩ7"0C;i 7pх3drm^5N֤glg9V}^v$r^gir`sAg lu7kzi i"0`~ !m{sTwKTS4*ٍmq<|E+1;RàTgJX[`*P>F>DCIG/SgO,SYDݡD7N={⚒LLy8J2KBu@1fէUe܋S6;2fzsUÉUJ)p kՇ0J%COI/T&(gA*pu3wl~@پ| b\U^  G4rKny 0qQ6ip6m6•OHbf :cmHF\2+Y{ܪ%#A.9~h W擪ܥ ]\.ڑ|sNꔤ))No"%̣AmdD[ ~)=U-g V7QeZ uVf#AS~n95-Z[{ ^՗£@u6< ͛eR5s`77!@y3F"3YRpjݟÑv(TҡKBwq4^ %oikv0R/0H`a!d6 <=!SpqqWIy*17¡5"u${rT*(\%A!k!.b3||Q*?L\26@.*y%\8uf8$>e/oJy N?riu6=J<ȊehFBzo* ] J8v;`=ou [{X bk<3_78u?dwb۠;c nxeNk.ξWc2ᷠ^RdR+?Q*.f#D#c&m_/(F[ux )˒)*Qu*Js"7X}O_KRv:p\Q.ك1CgEs^svH9!Ҁ; #=)IBq`ada%' 'O-./O^zȳ.En&J(-OW1Fڛ)t\^J>h?~0O~`<Akֹxv4mI+YY!.@u 6aZH@Ap!rL3lZ֯Gs׃"Ԗd. kRn۬"owt`N-=ǶmgĀBGWgIfIOԎReW+*KncX7g)3iI~(ՏO/xZb.V ۦ=}6HIBʚ>׍j`\|Le,R^iV!Ts>ۃVԃ.yM n@FpŴJL>}kPTWMQ{#V§yu7ӬF@?d4YF5g*=|9 {+=#9̚} H GrIIB^UeO~+0zܕDu/u4\a%<-,?j&Y2 z^{(Vv[:IkHC5ܢֶUt1."c(4Z k *%-K8Z8jOօX;z8TCA (2rJ(C{A$viNV2U#+syۓD"ÑL-!(gB-|6lEqOvB6XUz쳖`գI1zN-Wl_FNn7!K9!Bשn"셆hwA~Ȯ!z Vy;FiY`9^Ǡ:?l&x_oo"4Hٚoؓ|aYz#Py'Ԥ{FZ. ʽew)2'TX*v`# $}i(Ov ׵FCc`[v:bcE&S ʡJ29 y5ތEB9z8;cO=, &'VF( 6P8E$a]ku:2yKUն%\u߷}@ `>yqRgPTG}A\OjXSV]E!J1|3~g6\r69_dpQbYH?K=[?sarp.j Y]/nBvCFT |lG%֭I-OԬt2$L,uUѸ Z4_%v PT3f8@S1S. B/E|j3=5&pwM|fC0E/P 5@.;0HGLoQK@`)|qAK4LβdfjڽA4S G3+;u'#obo>-ش pukxУ7uǽ$v##& 'vQҼTM]GO<(҈N7p5Y^cW3.^ KilR. i;Aohmƽ-.1^mИm⧨[xwʸbI9wE+ݥ2kk&Џ],uskQw8`Zⵌqk `n݅MzٶMY%owsA`r97Hf9YA˱U9r#l%VA H{.9N^@BY xRmr' _wA5S<3[GS*<gQxvbASUp)^LCiѯxuȾdvs)7 _CEe3XXdWvAs I!jZ $f&`hPxV Nvd_g"L"p[>sn= ~VaА6g> ǫ wz0á8qzQT.|(^yP6u(\C|N@0Y >buYeER}5Xu9>8ȳȃ7>KOؑ}?:#:LoZ5W6# D8W2BCʄ9?ɞIv䐉PCıIOCȖt)Ϋyֹ<] BfuvEr D_:·):fz9h%;z:dfT_!Hs & 7#гЮ0?lAĝgV6_OJ WՔ\,;WHU[6'qKeywҶpz>j{B#9Sf :&pbj(ǺN"bɋ6V xd'y&Zh9vwAxZA $r`e-sdC9TVDD4$}˝{v})Ue~#N;]{pc4F9糵|4N[9bEK̟W9\%ۦwyZO,ܛ _(N74h-fl>}EWvMKۯWz Ѽn8,G[4ig^ k|9\^i&\V,&)e1;<6B1Uc TsOtU(m< vwt.7*Vۋ̴KhDeA%K1p5sd1΁x>/rv=V:$gBHf?l!=W  \5`Og߂+_S *yhg/  55$. iTpN`6o.'%G"K2bS3YK1ס;ϮzF": IZa '} p CqVěz@gڒPݢ N|b<8q$^NSdLwf-Հ\l3j I2 5!t&p%0GUt9lNit??ΈPK'nvPY:~4fR,nQ`yGzd~N[349 0OWltkWˤB`Ѭr |EL|BN3\uap:_d:}y3ȥ N Vq !n˯Vb -3m M/0Qjcp?Lg_g]5Ƭ9 *^a [((:[F2~[l!,0#۩-(rHASAAP;kp dQV ƏV}ƫyGc,9$8%poW$pVYi co$,RWD&Iw.ۅ`WmP|=-F1 êIz3--)ne<԰+Dj:^F\uLy3A2~$?e31*D@8픤$_#}\'Itrjn^sCacMZ@p ʂB,#NsXuEN=n|f&Q,Xey|.rs04;:twcO`X2Dr;W鈜ƁCW]Lb 곿^JTxw~E37bfJ=P rk@6aGUy}K>=`;7Zׇ&.fxb%5Yb_W,&X90R="vK< Yikax2z=vbk؇+ [L#<2DV=<^r ̠Ano'!=S%lDT@bP XeIԒ@jT~?NBg#") 8|)#%7=T}?(îZ:8ci!<)Pƪ JS\trrB_.q̹,*J ݕ0; +ު*l@Ͻ6,sէ2zh$ˇVk'eH_g f&E']ANkZRVP8 ]讉Q$B9:~Lsz}q)F{petvQh볰Q/ fyMP/bcPY[NWBWb|:*>`G'7;- f;V F|\=^`"kv`_K=s5`?YBMQR c8>:YӸkAXHW2 ~N;|89WH,? $x"eO|TTLTuCƕ-$*r1Ιfj+?3׈KkE?Sʾ5BIE)؋í.vP Fm\R6HEvVRΓ4؁,pjdaW'86#*D\"j E;:_w)>5јV6r>:OhxF .܍ݜ8NV![lc)lOl}/4R&J@doZ 2Q6 ^R;4zZ6c5[yOؼ{|T5 G_ɨsu/Ot\ jʢ̚>w:<.1୘g#OF%*"-9{ah`\e }RY2Y"~bhbW<(Y/\-T.v$Є,ݧgņ}oh@O-ܸЖ%Y@?2h^INtĨ Kuηk7~#^à!ٻfݸRY!ݣ*+3f'B_eÜai9|AL}}ͣ" 6cj\ӓzAםaw4Pʏ/5;=̷H;v{֎8s%} 7z*] !-HVs!|zv58v&0w %*i&ڒPp.وAyR3:hb)7M9\C- _0Q|rhēU$O|>+צśS8nrkb,tP,wRZN)F7Ѳ:We&_WإM^SIN̡E?𮢓^)MGo42xɋVmﶦ]zR͢AX+ ֬n󴗷 bEطUD $i/䱶PqE|G%u*ꈣM[%Hw,ӝ4+I<-y ؜ X\;HOܖjUoy.*JA7Su=}U O@{'0Y9VTVFy'Q73?󩧗h k:TcΫ?ҴbFS\*P$PVaN0FLmm:5UjovGJ@m՜|ȶcG9_2}mk%FB-UKǰRu%{'pgUC 巓*G"}V/ayxIn?{kص &JsՁ:LgzNr͘!. H HnIA$UzAQŷt-1|.Pa{h&1De:&5Ep \>)pjabWBj&04^.Dl:(fOv4PR5ݟiVkrhJ"iBYգ5nͩm_\J㉀qnxX0m!wKI 9/$ of`ExoTx0[ӈ>fsxFid׳?-<)^ y N%Y(mUm$kEY}Ti5^ha^7;$tH T_Fo6Zmd_aY'uGCjj@$E@͉r@$nwØuGbAw? {:K|p : d 6Љ+3~n$PqMR|Tqo_4}oBi4HpQ(S;9`akK፺̘9:_Vq= HhއEb֦W ~VU=e@ JVa+YU%WPhm|=ֆr..@Ԛ@u+XO+JR2:H< w/*|ZU.kl%be2M„$ %=ut*'{>>?:q07r&JmIT0q6.!m햃&`؍.ԋ;D*IU5&Q3D;KmkQybMhL3<|PVݚ>=qaϭ5mqU=Id/rihw&NS,n`((:% c@0"M('D% :xh[uVawғNcGV[`a& 7^G"J,Z'4%3N0}uSAgLNurSũ^!VP%beU cf;NP(o]ʥjӠbx` "g`B U͡h(-sABLk+ȅB8ے: &-~xO#ɟުa o'Bd$ן=]agCc[b~+Fab6 Sor Q!:g%x|v`ay)38 Nrh8%O,9vpan/t׳Nzn 0ϮȎKlzw:RJ.|;u' c"ܺ't T 2x&bdz)BΧ%Mxl[&* MLZ_ F85p aC0ywIP2jca=~)ƣHd^Z`Tc{Ythud~TWr|EC.ScSпy7@yJPZ,pB[i/.3BTq6wq̦t1nГ \eCɉ}"\ZỞF1/XNDn-]z١M6j2+nX&5l'B kX^k%8궍"ɷ>4أ?S%5SFN8l@h[ n\0֝5+xos Q^%'}jKt8P% W_==Ԧ':Rv%.|,NH^T F|8 i&la1ɰ0Mz>b>X2Dp4Ӝb5.sqN YF,Qxp`@ 8a4D{_+BY\ '^` U2MJajw3dxZPKKvzN3JW~LOg#غax{H, _6̕I${w֟?Y(4bxQ u;?[i O#+bh Lr#D-?}=>[FŢ++DkP2KT :ho`WV4"ɏ  Gյ0W_)2,m_oFC\qs*ܦ wqrci-Ϟdo;`Q% w'*7m[MK;q td zE+׹JL>Ճ ^aR7ErhGJx4t"66 :3i7LP[si\]# K8dK-l~H\<[]ڳL0∻u(`"k|}߁Q7dBFfFE(٨/M~(2%\tօä~LlD)SSEU} T!R_FdTe`=5z$~YTo=&?~Oi d{ ES1x,)՟; @\|Y=Y1*psҩ!n<KL J+5 l;+@ zAky~eד]/,i1Ȫ)mꪢ7 k+Lܠ,n5U$|&\UEs~ضuY^EzhzPx*&(F9ٲ 8hyO乄-f푡|$C.嶐vtUS?xjY>D\F7wt0TFrָySg|ƒ S,[}S@21d?dcدkM!Zpka] (t,tyiq DcVa0Y٭zZyTgO1e5&߱Zĭy&qp$OVXX1VzVLUpV(3_`HN>ׯ9BM {VXwa p]ÂDQ)2vV1\֦5Y;~u|?zh?uP{ʹ;ȲAΊEyufd#Lv ޹q]0 Iam^ᎀ:UOMYG}/>x^T՟ݸomZbf܆ϻqIA6\PSH>E_rHKwp <(PBkA(Hjp`l'`JB?QԌ%̶u[\d)h`vG}'dܠ$@}J dCM'쮧2/zx3J8(4AOzp̪KOi(ԥծ 9,$:5&bćGE>Y`Mx#qzIEpcRwl4}xP e\GTF|=빍ǩkL*}: 7 ΖMdYe(!1bsyQNx!{R_;]kzdX)A85F愥ire^,!eqN(cǕ[}Ѹ#}Ҹ+WVNC&t<̧+SN.l{O*A CHqJC)i5uJ2g%{"kG?kyQ,̞ eK:4U5_<09 >PT rWfgfWyҤ^c1GbD'HAJ5mԏ@ڇ2žc&Is3)CCJvsw[g,j"zˑ cqW-mSrzk$Z 6ʞk۶j YG{uDF-N`N,]Lk9jҥ9.Ig\aL.G*.,i7V o,Y.hD_fwkf>[ a+zN`2ZWXL%/'8^D|΍K0;f< U?t#مk3VI0C_@aL6^{5ºLICβJHP.q4hdb/XUUz~Li|I KZf~9O~[^#^U׍C ?*]-; &j&.2@ؤ_AE%VWbu{5yidl.#2SGw nZsrv%~D@a-6@yӠ(Y/]m]&W:{wQ[ Jtrȭ!@(, I ٚnO4[a=.|@]o޵?{T§3v=.Y2 3JoKA+5On<)'K oLJ2ῒc?Iن^bG#P7ÈKmm-l@y=:  LHNY$.!U fC+MT>okMu(iH]9#0Պz-VM{{S>A@Pd@^$Yt5FWy-WqMz)OB/ *cCA~7JLPnΩ._<jdݡ3uTGV{b-lYC+?ϊf/Ҷ]l]tG|SK"8.:˞ok!Ap*I)}jMNo^ϕUa*Umɴ?)ec%_^6!Sc>(5]]ciOm+ qy!RqokfCD`muZ7~&EyG =<j?R fǜ[ q!0bV%seQGXNOk|=4G avhô9mOҸ:~}㌱V$v_z(TM)m-uBu.]3a3G t/MZCg?$dӑ6o`*(Ak}%DV/Ut&IG~FMn:o86c +Uv(x(wUsG= h AD[m-a6[#[g 's= F1V*M}}DTÑ"&Q5КvDӎ glTQQ}a*X9H[]*dDܔ  h L쳥 ]Ln`Q$gį5:Qg$?T\">%Lcw6>rS WLrb:.xaȶߎ^/=`c1=m$|+MYx>J-Z5ze^f_FS MRV Z }.}60#8ftE4]ؐIYeG,j ;^)Kʪ)X!]Ղtv9p(7XLO' L%!.pEsSgx~oiRaϿӽmmCUSJxng<JYݩ@ې1:Eâ>p!R/yt;"b~m,RO /:e Uj4p7^ӵ+&!`-ԳvH ;>\g*_6gfa?WK ʎԼuT9R*![JKu=2m#tPU|Ǟ7 ?WV1A[nKU%S pLBBs1fnиB!F~Y u.^.kvmA!9Kl~J}-s4c.vݲ8*6Ǐe7ˆ1-J*M"Q1/יj3}@ %mL6mN=o~Wj{9L]CP >)+@gj,i֨) 8kdԶjUE0H(? X/P[e/uߦJ}.S+ wCt1BElh%ɱ6R*Pfք.fa$t!%=G ꎌ,}PZe4=WWv Gh(NGO&42V_xըI^05wVzkK;A^q'dݼЊ/Gbi<9|*vvNt| zgzω$7Vv?AA2 myvwջ/叛lŻ_? ]M+O}`lBLA-^k='ϙo8ҥȵ@`U][!\Qqh~+yj\l>࿮7,dzWw,Dړ[ [:QF =1hb㲢Qi Oֳe#ٽTfFN9֋w1;܊mjK`BB{;fI#I,$QƗq.bl7 ≮^*@0etsg'`,@z0:~$;+XiXI'豰%q]֫uO#D0u9h"}&͚v-1S"9T1%ʣX.`Լ=V󑷬c0,av'C V]! ?]޻wcΤE\5qBV{*(ԘɟRh̢"tT` +isueAܗu͗54ҽ4$d14&r#b \/^caqpEm/a$M%^hsWhq4HDW*d%S"1"xϹ0qݮz_֒b` 4"_-o'3Ď!*wx?ŽeoUk_;-JϪifȘg:: 6oEX^NEbU fnԼ^NqyߗSTa)ɽ.W;sȗf( twWL\Q%-M&8׮t6SMö_'cYklm~!@6,\-\9\=@pl ɉp/V$IuL05::j䡥@C5]1ْ _5ڈa`lKދ`ٗg:|H,&1U{gpXni4P-EBLW8 [}hlbDkzrڣq؀c/-ajM\`,VW{TPXr;Bj.D Qk@*}_ ct:#erL{F2xoGHȐCsW5z$ȅJ*X5j9΂PP|P54+Z`pE&aLjwVA;4r6zDt!'-v|nZ%mBA2dt:d%YM$yI4%j5j^7Œ d+`WM(.G ߝ9cr|Mg FOwpkE"Lg>&RQ(rkdYx5ouV2Nl Ҹ$17 vI%O8!?G0TWg$ozDk7v+}-d)V'[œ"Z)Cfix3Ǩ0Z.d%h39l#u5R;?4{:9븼ygI6{ %g#-M.Q@c>GQ`Qc6ù#SÅ s/z{RNp6r4JOJz9b%!UwVᤒ+ "TaeJ w,$c177G`X8 1>%[tfwҠ [u" $ ꉮ"_.2ܼrN*G*)jFcjf<=3 ޖEjQ]l1o|%|ɫ\'ڊՖxsW!Es!_jJlUU`*q0%;ӝ˃ AT"'Z/ouo= ғC SFZ.%z$h~CG@*?n2(b-QG[4 ck?T2aE : Pš//Cz"p>HUKI6܃*f$|^}`T=7#^>FD>2.̍9ǾȾ6V!& {e'ZcS_K;߁ YSsދT~ ~kM<&'feh29Km@`bl=KR#IufS1'd FٕhrQ4a}Yh9dXj.imVZ 8jN2N,YRu&f޳eqߍ=S]3Y%u0 F+J6T} ^tIlCr9.yKG8!JsrA1)n(6M6^28x69n(l\]r&a2X<+D $k§He=bAucE+:ϒXcDMyں^U,Kћ$o__QjNc.YiGּOv^&~_ J{TGm8:ZN qL[%}M*(ދ"戵Sn ,E}_ِ= &ᓘ-9UN"NQ9U=얎 vyWuI_ )s67<ψ?yt]H|A<7\rqdм.B ZAL-rԺոcQ 6_͞ D# !V-#_0OɉznڎGt)rzj}9CH-"?#,hN&,,CB 1E%n hWwFOf qTT4 6EFՕ\^~*\? ױY}K5q%xT#6WntǹZżUtC~}j-x2eTqQ 3ѺNޗiR:9ATC@N+ X]/17;S.PLTajs`k3IjXZF/}a%>s^^[ !SxGk^jSeTyqInBaF(y=qӍd)R_}^ȡ[f +`#v޺W*#KЅ#-B2A@8_nl:h5vjRX?*³ tPnʹ~ye&/Vp=NhF L5Uulk!Hn)}%'o(J|E:NDKΘ@FWfY㱏r/ +N]lYӓn~܎ Zfl}?d1pug|Ƀz ;|ETbHFN֙a׽NF~ȫ:^_*)ߞMF̥e( @^ӏw{,V_/" ݿ];A?6bt!zPdKUTX{MKM.fTpu(QwHջ\q*-MWcP^%&;r͜"|fLDl @>tQ؇?6 Vda+͎CrYX@cȔ`X$N#:Ap G{sF~y=_`op K9E$OIQWKe!ИU$Q5= L_ J⩭W?ߢr 7H[zM1q9ّ/ iD#\[3/?ԜX%q2bg?7fY"֍2aF3SN#^ >ۢBOgg؋ˣ֥lFߐ䤀#gEV,eUOjڠwFMd:E-z0q?GO&`l(BXM I>>—bRЎu/;ѡka<0I%`TȡȷRP]C^nj~evǺҺ}A^y>OnjS,Ua}"L}ۙq=-wB?yr:l۹rotY;8T&?z3-4jrq)% R%&'#v7kcŁp3?kAˮ?GLxc3=Tx5ڮO}{}>1:iriׅ} 6!?̵tR6xBT<"W[% \/GyC>BuQ?}3_ hEl-6]CȢT<"RF\ѼIa't ;-z*_0dJQ坅oZROIE/G?c].owl𓒇(*e.㿛C[)a;3*BC9g8 4"O!ؽ壘h?Iꮴ?f)@*n6^:;Cr&JuPAY(D<,h()li%EςşT2uqyS<`OA;~mPjѦA{GR xZ>:4AonrD1O A8ЍylKe/h'^|04}F`A Hpa#V0u=|&Ui9DM1CCZ6㒒m[evpOxg2c\s: !iB>x] ށxi@x` JKsѵ{y`}y8yh;EDĆhu$(2OwM ݏL0A7eE!in}%1!{9 9p /no\q bꦂ$a9ԀJgmwLNlB(R 9/Q4YWb}Ϲ4Cc8 aPHhTX7_D]y!bO7%;|2bq@lW%*ZŻi) "q/qi-p,h)cL!ҪԯRWQ<w7Z_,{5Y:4? S'.Tn81cQ~#}5Ks_Ij+, R0+;DRf));{O8Lq~Ң"DT#՞ib#ufuxAES/3-(w_=w? wZo?PENj?5CB  !K_PD ] HdjwZd-1~kc3uȷ`,іŨ[nRA3% ƾ:n8gt˴IߛGVpW:oƵ7(~Nȓn H:o%~;ηڴoHx7:.'++:G&Lrh5NDHacq+PZ)ZCqۗg<4mk[DoWJmm+22f? 7W߼`+0Gt*zd " I0wR!XMF_vmؼx/K?Jt!Vid<~5 F4|Xh%I"϶;4ޥ+ 8Wֶ{iW}f;ݚC_`r$S 1St?ڟ8Yx0fWmݤG:Op}hH4fQveZ^ͬ_?,!yK} 2y^BBuX39n;CE]iVQw[ X[avOG1 ٔ2R_z @0uoU{B1l+1-x?#-ẗ0[-<4S\9v~g-,%HBeNSs$tA^}0˦x)uhc6zܞBڅ#W|'T&;C*%0?QussNA9wB=ewoXxrG6PglXʡ:+ ґ):Qh_wE-Lo#:tw\貕8]鈀H;$J`HD4Rj::pcNz!:~$`UY>f+}z,ez$QH^X.T>JT(&'O8ZP{İCDX>O:>,o>.mͺŋcJLTBuw 7YYAL$Èu;!$XLea"ׄ:W6B(fa;Y2{*3=Jz[21j_4lZdZ}DXAX/ˆ|ˁ +y`CpG3sT|l"+.]/>M3a_&l59a!Fv1yueU I,8]7MEX`ʕޠ51] ѹ ѫ3mnL&AEDedRQYR=_~\׉ *1UdW7AR>crShwKiZRN?`(l+pb"PU}RDid`‚/}& PKˣC/qW:L*(+G o먟ce0!f[Rh>֝-O0Gi+'&ۯff E4 j)G6&uچ UQ3$o T~/#d 0~PȹgL}n+H^R'}J@P>_Jqd#1w.RDI5 (lIJi&WTNп-8)#H-f"P-- `‚6$]74hJI`@"؂ꔡv(}ӳ1t^C?bO?laEb~'a%Ԣk g`=h@-kD̴JH+gO&X.-N1D=C'P*u|4ýc&i36J]2Ռ{gilswxwGDf).4*Tg_vzg'iM'5ۭ?۴^0%i`䊡\iqLiS0Ϣc6xĚ^XtZc4F;mX{'\66dԏ'gVlAf]ٺ;sG(GW6F1hO] zZ%5WvֹPfE­r6]O٫n6B("AD3{:M~hF"瑱wB:VE 9zyR )Lr.d |X9z *{';6so~7dѤ5`hgJW䍮? rVch&z4wqzd|%z8]w szULuk$r $,KKA\,Z{C\-q)ϢbA+!U ұ+ݘzdb/ +FdgAK97%|,$Job5=hF}7*4ӆLQu0 IOlpL-ippP#AYfEŻD"􏃯Eqɿ];>O#ZGg?Z׵,ڬB8ɜWߒm8OsZ>V;^h;b3k?Y2 zaIɔ-u:{.{۝[LXm]%OyAyowea޴Ů0_ł@ٹN PAa kb9ͼ=̡Fr eLF4p?1 м10G9c1EYtc]m,+!@%􌕰QdT"3cw1Ps⩏ʟ1STguOc!Y,ጕ㉱ArG94xWq- ]T8Ig DDgGWݒ֎bs҄ `ᐕehI880vC(D7/ VM,/8煨T-['a;Fߟc,4=jFӯ.ɦ. Ifl#An\OV.uF|㥺|g=&Y+fV.K6p,Rp2Zl G2Ag)I#Ŋᗪx@on\*OYnkFN,"?@hJUDҁ%^<{qk# {tr25z&A_0c NN9'ˉ齥/7. T| ψg`-Sun=UJXk9{oP#-@6  _n sav^`cA:cyfCai8,lFQF0Gˍ"lJK@g"t 2XY\vʶ~vɌVDՊ_̯G@{5lxzyI$"Fj2W6Ds|zXOLʹ5n%ds"cNjz /hSY2#Buȸa]xhNX&pnʺ0wAoBj-igr Qt[9\Ӻfچ+eE6 eHJyʺoJ˅aU$#5Z@D~KJ1(%* o[IJ!vQSKME$Go@GK}3/>uerfF4KJxK37ɨJ)ͳl϶9"Kf%@BXfelW,6ؙUŧ IŌ Կ/9e0K#D?(]ac@S[xA.PobWP/aTnoEL9s1As }rI\D_mxC ᝮie<+66tޏ_')L0!*YۉGJݷ 2RS]"SQ)r D-GXh;;8w~o{̨IpuuC Dֵ҈}zT0/gץ6f,C:H.9iN%nnD@Ȃz}es0nw1qid MWr=X"bez! 1]92Pm5`Cf٘s*> cA]⍒G+L RyثAvƟm<M~̐4+kV#uῢQLլZ:\b[68lbI;3!,ȎSy( )-܏BazEsP|VjCq~#R| Y8л+ž0\+eR.Q<h^+jk;Wf _Z>iPRlSb&MD<|e(aձjO8d+\5?Od8T^7>V0E;oU=Ns1/ ^}," .a4QTS.9 HN9ٕ:euCH> gN}hsC+`꘯Sm =dh h7X mRC Ⱦ7',~Zj(TH(9+ih}!n(F?Ri--FtAk+#9`v=S6H#ƛJ0h@єk?_K§jKGn^s½ILT B '+Vm0D^!{ H$W!#;~?Ac0"yȱ6Ŭ0Fqm;իV:M:oό`ڶ|#*V%\hE39=5%9 `i}R&wqWD+i;_eS/k {~,jKUw4G{Y(TA YHW b8t*⨉bgݟEkO[(i%C IcZm7Ѡ[q ,`ؕQ":)k 浢:LANe~$ >MRny:6յU@[dks5IB|RA.N&tSqRp5 <:oBr)nm^oe' O8p լh_LMO>rm~ox<&ky`f,np |6,'u/a%S%Ήk%}|<|5¾)uHMħC-dVe#Ɯ(MAIfmz:\tnd٭F°[ XkƙeS`F%Z^]Fo{-iP>6I|d4+X"n;E]YH(Y"n,{Lyhm[Ya擫"7%|:S'9.NMv# nږBid#&ִ&}Q[bjs]C5sNg{1産ˁ^~&(y-RI'Z<՚ף#m/`uͻS<3*"KDxa9EzU|_ Aiv@շ:mĘdq "A)'( *[7*ca/F(wz>^g-!ej3Z#Ro Đ)Я/ώINߦH\Ya#<٩ц9lr`^%K 04Є<1jęj͍m޿ŐiV>{ 잳l&-wՁ24R ig}paKSk9hkZu 䩵ASFze f^,×l+0),3;CJ;-+z"m4Y;wJN:(bԃX0h!QDqp 9jOtgS +lbrMBwlDS'-w773ySKf"sT51gq_}Z>\Sw:eP{ړC :Y69+: ѽ%C:1c\nPH:y/ :ng~5/joS~ U5~@t F*n! 8A~$(*G#\]д^IejB3QEw, >J Xx9;ATo%揼ՔH񨳰ڌͻ"Dg޺*N$ua໠OfAgFx7ՓdkmF#9d'"Ί0N1*n/ -~w1JV_T^C5"]~Ҷ8Sh:wT5I؝4#\\"e HL2d}_Yn SGr r~#cz!p7'0$K\vJ @qCKsoB?ʡ~҆}aǓea WbFYՎm2`͒Vhѩ!霅P[H\N[jճۉˌ#|S/?z`+@)ԡ~8:0݅B?V 9luu%߇z6Z*XZF sx2/N`g:Hr%1H)M2x3y-4G E燣,Em:bo}@3$0VvzY܏5 |-`^w =4#e(4 凝`~t/r 17*aFW.-` PldPjW䒂SC^(ftM+`q녉Mΰ=+ХZ׾Qh=v" t{JeZȨMMȊ1"sH >+gs,wg;y.E*L@ȇյ1"!դo0ELz3[nb5 Fه:rP߮k<}j+痀O-1sm6ik͉j<4w*0 $@h/qٯ#qMs]BZֲz=˨eFl 8}TdГOl@GRaLO+^*P]sc:p֊޴b;9b{hM֙= >q ! 2^ 7m`́RHMT1@Z낽d2ۖk.g*ýΞ koGy!gŵ@yz$-J% F nrFNKh9 :ەY!$2&И x^_̜y61d  CHbufD-vfQ0@D8wi lDR=4!l,P ݨ WVTKpM&U-*6D(Z- 'ks +-^f: ֎0{ؙ0)*WC>o@v6iC,/YrIBqs=;$ʪQ*"E5^3u%*Zw,3$òuҷtE ^ɦtMq? ^Y~DA@AT_\=Q!@! k/!MOA#F.ϊkr)Y/n|N;>1`9v|JG qX?#'(dKDWCpd֗%Dp,e|F+|F2Qy ?hw_1{n^a wjj"P0wmU<0]'ObŖ؋ >Np;75z$$:IƆ?'U_OH ,-Ma] z/)t 1.2}R!Y|ա|,n`bd0x&E5U 9_@-MLnVLswSo?r/odŠ)M){LoZSth FyUb? ^!8^?JnY\! 1r^v@6I$nw:xOi\4C$YȾZr s) QlKq9og(M m uKc&kRuHv25]O`SEL'NKJ:*ӹd x 7cj bxi\RC^ #6u/#= gW!cqO~'qv[8|'g%9py~A@#-r+VF͔L:LT~u[ջF.{An2}=bN50lI9tehM<}գZzxbk'ѧAyՏKJ:'U2LzC@ /N:QէEGp~?`06\+n\ϭrx,҂}MRxODK(Z9T|Pyg|y^`jL;*K 윽sR!X1?&Ur_ˉIֽ}߼g{x`_W)=?D*ӧPdoc.詄gNLөܤy5C8'F1UT~d}aoh蠐[]?BSu!4@Cm҃)@V{-uVc%F5$v勺"ih&U| t+4AHg_"nIqh(2IwSY\x'΍ۻ/E5&IڛDxN+Ba=cM~sX+E_q@)l %kMϡ.C n4OgPʖeEΌ ttYOȦ}/j?˚Cu j཯3EbqG>2b)D6.reI\&T:N=ܟ5CHAyXgž-weDHlW+Z7zlЮw5 W)jK b~ 0H*X*)G.^$J4Qۊ+*W\x/h*k H u:+`J{Ffw)9;KK>G|Y6*cu_KT_\LW RG+_/s{`О/]Ү϶\Iچd(6?O_ݚ)q obzB;)Q!/ҿaM[/O%mPryy\mA*F#[ftMxeJ@b_+W[#.jO_HA+GOO>Cyk}9wK.*ʏh1hcwvȤ*';mV@վ;>p( "Z"A '5YZ'#R)`,s@q#ue}!T[տ~܅TPj+'nOT;1E7&َb/[lY^[ $m40xo#9$q-8`t݂suKIZ)Hw-}ly^C9ԯBJX[hUhFѤ{n]14(J'%KS9N.'[Uiվ|LYiPb LYH[]a`2YuϋЛQnޢ^hWozxؓ(m~Qo`=<8?*|"@͋{#HlP+g@y.)+0떣:صjlTHwt e݊I7!F=3.+5F$!я0I _̀>i1NrYb'z7HF2ǜ-W2*|׃kfG Bm ˒7o` ~3wo( ?D2lca:ҠGZ}$7sb g@g1eɥ՗ 7+P_vv]QaL9)ɵު 'd0y3E볰 ǶwQujKD _Y>{O=u0Imeuڊn _|= Y<_¿}̓.GҲ*Ez qF 2jjTmSnWmz):+߽QuԪ$}-R\N,{/Ru!~C }҈ *m3!Kَ"1dhmWOO+2m>Yh<.2GrfBopi`\.EYߟBh89\ Q*'WoHrw/6M{1y)$e1h}C[,os%8.(9XIQRn}%Xp->]Ǘ-CAU(w6;5'>,0xP6?WL,) C3K-$0df?=)#$87A"NPZq#q2 A_0tvPpAFF?̭:}um]߉Vaݔu'˜6V1I(1Y$HGrT#]&̸w)z̟.f5fcrB.ؘ <*xZYփp:w +m)/Qwt;,l ք97QHfB-3djĠY) Ϩ`a#{PunM᪽/ 4&7 |OE5lȴDG|SX+!: p(%~"F)0⬾~?⎒[͕4OfJ}Pb&L{q߸K,ԑl Ge(X O:} w2>ְoa٫Q1OaC=n2E^Bl"4+|*or5 zl` &mxN3ג o iֶfdiJؤpvbm 1?s}!}{\6tV;NAp$fOϧ|kNz9r_ hHgY &^ _^eaҢg{nVU Բɔ #QQM n&G!@fm -B'ʻҁlD[hQ(O5[>I˼/EXi0m$,mRmR[}|gBwp_!k/jyqS!0xDϓKkZfgF3WwnžvʲN NdsY10Cmj.V$W@&~W'Z_scc5qȂrVfzMmAru)jlwu|n QKJ (<]TB˥Kpצ]L>Q vur4׎F*88>$YP';"6(90n4[AtJ WWF|bFP?NcH֙{ϣp7H6ځчq`i3i0ٽxE:\Dǧ G.^<$K|އ܀WG0(_9C@{_"s{gD΀KeU]Tz/r91csNdKcD{_|ͩ:fsoJ gZ'&: e_R/`|]hNB8m`tO}4G MN}q8 ccP pWT&RvaZ:D~B%m35| o:VO$Hq`S>0Ѩ ˆj=Xz#.a#I{wIѡ{(>}tJH]f05C-\ 2SfAR1F*P%;L/+72x}0w݈ڇ /A" )ѫWp7ۮB$>P9S6D؃gѢ1sY-k3aʦlačuDI!7̨90ݝ,zU! [C$o pz=3XkÄ\O^in^|tF9.v;EK"䓑N*[fP[)w} oN1Z*WJxD. %\xڄL))4<RYŞabBVrf=1V) =Mq ?sbaj]h`ZB3r{m M*Esi#0^rDZ7G}b~I,Xx?70Q}AaF`+ļPQ!UVXrRB759"8~?CH>{a`p6掎 Z D=s >!͢s{غ(?;{F,}ay8<.szi.e$O{-/AN`9W0?ccb)ԜHHm'R`B39$ c:KJ8ZDBl|ڵ^JSgɮech?kLz %/R_I 9ONl&N@6=~cGߢ<~l] k# ʸg);y%b:٥8r,Htm\{ҷDa$E%:A BY@׿Mi@P>F)n '\\CI2W\aH,1 hQrxe34R#:hqN]CT֊pM>h h#:sՀ݋a H.3MG1H+I.QnF%HD ʻ`*'M5V_x(|t{n (!{@?5^Z[_i O?MuZx[Yj>hʀ,aIԸ2:9݅==bHm܃|kWͱ"$x"S"S<(r,vlW n:29pK~3˥\[VYV b簚PϗP/1.*%4vϪ-_p y2#Bl 9[__I5o #zyd!#-wd4A_)+D_P ZXjp3=cX8c/n؈M׊<*0 lD ]G=QGL$ .7o7!qYRm}ZvU>4([Nnbd>6VՔ,;Jqɮ;)#pz>Y Ѻ6?ritHzQQfa>v֣۫落:V7]B<ۚEz&luC$ח?ȖJcj"-5@]oYqMY!BB"1L馁e> ESsDM{IfhHL8PqBҿ]HФX9E}3"hq~[ղ<5;ҹ6&H+wLFj1\/)^'f w(VeXvVut9TO0EӖb?) R~ΆZAj&0"Np~ 1eԆEwmaBGW=Mn!0 R>f-BIP1r-iBBmSfV Gyso$uzj#R0H->iSՁN>yGFˆ`m#yS3#mg5:nJe^0{5k *C-T]8Aʀli:OY;ьW pVu9o`m]@;6:=վZnpÝ81P&tBXɴѣȀG n)gS}-i6~Ym x;ۜ=. )7H9_l*ͭz}4k[htZ蕈G.~#%Yǥ6"v GK13*!Cv :at&" 699rb fZ~R8ZE Z3Hn oMCAES;6CuSlƾ)8l'^sAь꟫ب<Չ rϪY%Qv/sUfJjnp8{e&E 3Άcm &&z SF^ &+%Zeg)DAfxme* ÍB$ߌ2MO]Z%ZqZnP|2u(7`gKG(oe[9!݅-_g ^zH vťiW5}IŭGA #8NœBPɔE_MPI*j~1?,hݟ;( G~'lS/u&I,S]Q~:0,HFT.O":'?!stۯģ /C@*7[HSa =׸tO#>3M߆%%,"|ՃřQԾYBVVT6L鴢{ܿ-Y *ƨ1i24I 4Q30DyAnuW^ޣ1Eyi8*6_jl(+}i\ ˉƖ@Mq-11oD$\X;/x,[c@!?ͽ4zkVp:22q%6莳19:=ҧc2YH^ę"o=8CXv\Tj }R~|\դMߐoQf0(*#M@U)G@ъD=:Z6>`Y? V[O&LQ%&Z9ϾS0D&$rщڞ恽2<{qwIY'}!jggMbo;K#]<Ak,zR2cүAX?\E!h.&3l֬PF3$Pe.Lm8Q)` dV>Abs`x,CP#5-aT`AL)6MGk/ߦ( <v@t2?D58'yA6zalUѨOk{[| N34@O!rO^wF_xD {]{RM>|&lTNQ,yEup]F6uO`'鯞s$uw>n(wyc~£shSMBܭE:̄&_1:LlY;څONaۜ"cJTc|ydgN[PXG\:b1P3ߢh d$8kI#gIQh]R@Zx B!= ȷ2@=ſA_&2/ i:4JM;cmB>8 U"r|qE>8-z5 mzJ3 /qF(=Ln䋕r>.UaY9@ ϩEݦ%g> dfy98/P)cPq?7ɏ1ٛ?in%͒xqsZ/_BN;:I( <kfq}‚P>fsrW%xiVGȅ`9`m(A&513m^>JW87Ṝ(tS "x `HS;L2s;2Lb_aTLdvLLPiD!1xڲ>wɩ HӴV{n 3ZrR" 0)yJA/(jVyJX0 ωѩhȗo /@߫{g{:..9ܾkGڶwl|^gBo`1%#|Y~20s~{a@wȑG !fQİR<Y Zp&pߗ w8{" Q,܆I@WcV^)@PZ~d9v7N%LȂ <)F}Yk DV5e"@zIa4p|4}&F!-ꋠw*_K |9 J,ǂ;.."r?kƬ յn&'1Gn͝>,mΌM-Ƣ4Rn~%>d?:m2'ŝ+?!hM|PZ9:U].Tv)Xd6E-t}%1 R$$^i,(n"DI:"fΊTB(ΦmR0ܥN%Ltex1}dVpY!U~=PB [&i=7HsPCù)Cuæ!0v:~T9^j@4۞k94ݣ+Ű}/Y f|AÇBg1yȐbEBET9cLb2:ccP1*÷$|JkmfW,) s׫N&`^n.t6ˢj͔}y۴-6=gI>æ ~+$D8I|"4P'b_NEzH%Zם7Cq%?&~e,z4LIɣHy~ n"[(92FQuZZ dKq])2H}ϻ+n9 z3r Qׂ=ф8b N l 9!/sQ&4HK6 y!t'+!x7ylAt=@㨷tԉo~D:yPu-Ԩ@)j)1S1aFۡ勝oR[B* 19Xp vo@cW5¦`%k; OPK7魯0Uqܵ(ݷ_ AaU ˊz-e=M j1zI(}opk:I 5y(έ։f&%p(vD =q*W 2F9S5`Zq;dž*}dl< ^&+ #IQ ?Uz׶yceLUvܢN[;\(a̽7a!?j-+Z(⏁"BԽeggݽĆ_6WWJ3t}ӌ&H#k@1@(\7VTʛʱݩ3p<0/*1K< y$JTӴ3͘ /F779Q"i1zdNÈ 5Yc%á(hFc{G B> EḪ$Aw:FnRO><ӨRӓ|ws`Zn8PbȺQ- a0gz2y29.zDTDd17Pt~{K2;gE Opq`m. b)5)Ԯ =IjF}.M{+` ^6QPITՠ&.Ky+)3p"g!E1 7A,QV3OhAjh6E,aJFmzl9mV[9=Oz0GoV+\pk^7vgm=\bLcN{ג0v GF"HDw=o+ER KL{i|V>JjG4f.Π~%Yw$Qѹ.~噁0E-Fٶ MD~n߀%q*̋)TiPz AR}p; b@"?ȸ6B^? NC6{!%InlYW2T ZbU^H˳mb"RHM&zdCb%uIW8?[N100ReB&($<;m](Oēy*Ps*ݨTʹQd^=g_z%Cתud΃o;U>*oVj,խ(fgNYS)ls*8.*˰37,f[ݹHt3D00^Ek݉{iWFXѰ~U-O^WڳuN:R1C}R A0R$[-+z 4ل) *xl)Fv{'(Z.tI/؂M=[h9у!wHߝ֩+gMZmA֮2 U}JdGSOPVD2Č}*L0İbș1n#'%}a{!RyW>tCۚMKWQxעIX6j|Jk(*b&7R&D' #]sJ_Ξ{.*,Ȟyb4ýF7yx,n@XשS,jcWjA\<sMM+? F"} 0oQ'tLu]vzfƷzKh0  ڍ:ܐl&uLm8T=COϽmK $=$Η ,.,̮2/jg_;m"for-]]0jQ.ͅ ʷ3`sލ-] 1tG*aaLGd߷QnWo!.‚kNPm;ˊ?XcTކg /;/Ek7q}&L=;# ,=.uۋEd.#=pVfGC[M{zaݤ}º.|6k"N"G5dB4'XWc5-Cs^.mS[S %jqFOui7^\"|n#!`63 (PBZyuO,! tƹLyz E"9#tG{뎨y vp_sT A=؇q6R/L[i)~U~c_tK$@XˎsVf[*ᚍwS=DS4+TfL^X cA3wPj X>)^7~צ_b)a6!BQUޑqbʛi~`$H qѦ6B!VJqG("r^l݈g%HMH߅8&A΅H[׋0d+=:KDKXܚ q^ڨEJU8'8v4䞠Ͱ1R("'(ހM\KtoYF?vPLѦÂ$قԜNgWXܐFJarڡ/Z]}Bu[32`;oL~- MDbHt4R8M &9ե:~j\4psnNth~I?4iC(5+Y,cd4A*b_SN|M&;?j|%FAjBPok&lqBލn; ܙƮ!DEwX{]"817 4dt#l"܉ɀ8DUK 8LqbF07=h|*7]@^ʨ] _*sx]WHKl#m^cpgyR0΅I_r7bckր((Tz(zV0ll;x:*˛kwc3!X=<PrE|(0M.Ą /{+h< \ˠ~t_"9=dcms*;bNJ0O,i`2ۤ+Gz2{gDx4IoZ_tFw`]MCuF}`^sSPD {hw7IT-]˶?>pF> Q[KLyb CAg"Gydͨ:יrylnOjݯVYNxhNIR%S (XCB 50|0d#աgj=Io>}%NyO3G+٧tJp{o׮o +6..pGtѥ fôÞ~vcH$qJRvqឞ1` sZ%fsY_Y$:mc날bo!lrs: e6]b8풡VA6jL7CBDfrpIOnU"6 a%#%v~>>  $E0? 3I\%d7ܩä 4{J}H꡽^An&pz' 0&,i^*SHjlSckƃ6dkK ެ Tss#K5%( @PXSQS^jJ60TwVpBa-V3w zn< 75WOlyN(gG4C N)?%Gj,t'I&-8ĉT_:*nfը 4vڑdԜY"~:}"Q_FAYMX\K7Ey.v=Yk%BїRezgOsUGʡSb+w;ƟY섣Փ OR*3Xv,s^>QO=%W 5[NFEcG+%P&_ˈ9 GP+pn+֤(Sg-aG/p>mzE?ACvm [Ӵ{'R+'aŗ$]{\"*S7!vȩ|~9=QN%ۧd:i: M/ì5 yGg7Qp2)BTl9'+Ⱥs.G 2Uˌ{|圤Uz ,\hDd,$SÎN7h#ʉ936l|;s3 ڨ:FLE4>WAjXe*X }Lԉ}7,6QX 7gkbNT@w_p@+&אtS*6঻5Nq|`gԏ^)\gKҞS@qYrKyИĴ uS5kms-*؉(@ P'V9^G_BgeUY"-m?FulթЍIj.3s}b65m?, .P66w3#eR(A)*tIC~]c'P6ͪnvZϪ|y1y, aktЇ#ނO^|Mg*N&g Dm `*( 8:QyuڂHČ9!hnΑx;/?s+""HPX(U*U˱k #k17&>qpaT|=%^p|xeMJv R9 KIZZ ЌrmR\y>ohh y\0}V2q Nk ?V(faCYT@4 GKhi"_uK Z3vZ"ר)*-am[ILƥ3*z𨳎gi`0m vȰ|TK:3ãBϠ.I! Ouq$$JmT.'ئ "hP1bHP44_K=*OHQo0.2S4$<@ttNۺ\Mrf4GTH#_5A] 01Q҄!XsyGiχ?3)8N3k 8ZNہO9'񜫙V[he2'𕾐-*xe5p*~ȣdu6B#1 r[R|[+ rFU'ft( Lߔhq`Fϟ!tRPEB " fg7Ur0.=7ӻrmO몿 2+{^/C[hb#Gp8}@FkTrRtؤJzgX7KO#KVCC*!**6 R*SlR*;&dA2gX@{@huƿ @ ^Js6+{E^-\jȊ+:A:eN:7zpJZXN(;F^~Zg#Ǒ!D;prÓf8̭iIJқT|(MKĆŌC 9dŨ9beݾA;1/Tz"B-A ч4/99퟾5kZ%a/*wIvq(RG 4_$uc7څ⃿w -R } rMxt U~DزTEXDy$vLܽZ8}^f6Dc`Z$s̼H3 Ƹxh ìKhH.vq:4!ň\2]~ J'Wz|ϊv^,$DAb\)н҄'0n(3Yih}mr߶ߒM~@( !t_z)T!calKjuruKՉA%aG7 1c6t"t  LeK=Czעymh ?cy%dЅ0920>KfdU TO7d plhmDλWJw(MR\EcRJc?g<J+zRZasv!nHگR'C8S(rgA ["BwjK-b|T5on#{xeoքIgDؓ^~q$S9:.7JTUaf6+,i(lv3`.~ҲEnD](pa2y8({ttӆ(GQ8 qvF!=2xX([[H0 A}=̪ac9q cIhAG_Iqc%o^7ctCOp6O+ƙU0xP%)|pS\kK Y̫>Yx8z[c :=Kt+'ca :i1G%zhFV)UuU) Or@m&Ǚu[1\s=Im<~4J3gnW'.@ b,%#G bه- с$yvY藉eKmQJW/4/qT.vmAJ/Cfƌ})/s n)9`8έ7r/ԩ Yo|"g<=QsRYVwWt0!q9&h7p_0X*E㤖9lg V4WUv'G) |hް32/{P}h6nV E;C9Wzjguv$[mp"]3WќJ.~c8JӝSY)}GnkuB(}_iY'ayʄFx6[x-Cwa$ᩆ~넶ĆqzFcC$Sc{~ILyX#~ٍ 2kSufL? oml>eyF iXk__ryV3 ұkb3Oܓdٴ(B̩}@nk@V:a[+ zmAJBo$%seݎZzTDMo,Fn,*İ>D< ^wQ͓^9T L`"GQq]_^['^ ¹dZ }ȧQm NJOLyv=]&yF,8j:u= .}C\) DY @/CF˗~LNZ}Je^5d*ʥ=uJbTmS K)n+eqoƏ DS