python3-kiwi-keg-2.0.3-bp155.1.5 >  A dkMI%z "?Y :!CU~av H듩˩I:=+J6 Qԛ! y9)"8z_ 89Sf0)jQݙFK9bG*ZZ;u{arX Ek|7:|V [wf8 r lєz>-d7ǚͯݑ7X%BS0UZJmgA [3(IUGRlH D K%vµryuu76aƣGC-x85Gk>v0vdO`ZL_zlxAeszʸ9ͮ=luKfk>B IIzV%4_\cylToƓC:ɢU Ls F2іlL}wWnpSD|2Ԟ|Օ ?+^c0ae607c911d7aaa65fea7992e2d2ce691967730b981dacd0471663611d129dce4d886841091a9b20e852428b9415cec493f1f3cjdkMI%z YGy J<2f M&Z6/E`;&ZV~ c jXamSueuWۨ6\{TQ(EH[7inz{GK}$[X{vkuwP o㧏"Ks./cU_v*VKW:h~R1 .|? ]ఙKg#TD_͉Mʰfjtîhݬ gƤ\9U'eHM , 8m4"gׯ]+!?#˖>yoi=)M2+79J&|%jŶn6a>V[[+2 H#2XLϳKRx.NF&k>mr?7D؏<&dzºmLh\ {e`GZČSl#F*p{ncsEO&[=0{>p>?d # @ $*4=(= = = = M= === = H 5 (d8l9:,|FtGt=Hu=Iv=XvYv\v=]w=^|v b~cRdeflu=vw=x=y(z4DHNCpython3-kiwi-keg2.0.3bp155.1.5KEG - Image Composition ToolKEG is an image composition tool for KIWI image descriptionsdkMlamb58tSUSE Linux Enterprise 15 SP5openSUSEGPL-3.0-or-laterhttps://bugs.opensuse.orgDevelopment/Languages/Pythonhttps://github.com/SUSE-Enceladus/keglinuxnoarchy *  /3  EU fD"l2 #+ s"@MAAA큤A큤A큤A큤A큤A큤A큤dkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMcdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMdkMcdkMcdkMdkMdkMcccccccccccdkMcdkMdkMdkMccرcccdkMdkMdkMdkMdkM51e85a93680d1d62e4d175db97a5a02a1cd7042cc5911ac51aabcca361871bc1c4f796dfe940f9ac71d90064aece2b182814fd58f618ab2dc2a72fb0872765420bfc0dfbd9ac5923270e981593533bdbf831c6fd478f42acedebf0f11c202336840bb986a84b426290fa9280579b91e00d2f917bd8edcbfc99a3afadb60f464b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546bece822a270bf4e6b364d0a09e5e94c5042ee463b9023652925e37f6503e101a101ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546bad48156807cc7e7949a2ef72dc39db6e0d924943dc8bab2d35047f4ec7db6f6eda1e4098ace03f65fd5329f30a8ddab5bb659e74933dabe4f9e36225961d2921173aad8a01b1ec005705b4092ae74ab33678e0aff99b48357f7d83c443e4267513264507ad9801a01aa4f495ab68ec4be5305f5b7b161f208a97a07e4346864b45d783d82f0fef149665a44c526ee60bc8aa7e48d19f6e961e0cfe0564923792a18934a1d193c88d558a14fb2629069b53e0c3e813df91620e1643f4eab1637b804fc69035e65cf2e83da5fac0247534dad13db3d5dc902890c8817d681f557da20b08d9faad66cda119ef540ded51bb7bafdc709713b80306c07a24a9ddb35fb5b32ae701a6316b23aead98a874c62020e036e5554bd407092dfa4d4eb92260080b9cb147eef4ddecb7f16f600587548f407a9b58fcef5f42e9238b98d7268bb4615488a827a9810aa44c130546e1078fdf05a4921269236fbfe7414bbc54c38a42fe44f83e085a0142e7cccd1652b96ad8108abd9a8bcfac5ca89b348a26f70cc48d754004fd4abb05137476effbcc70cc571d777d2c770486e498939cb1578bfd9f5bffc72c4276e49d1a3537144f8af31ff8fa85e8f6f58a8930384aa235135ea4a76e8ff611629cc39d7b7da1baa0fa3680bdd5aae1c135085bc51f0c283e34ebd7cdd8b01d5a944aec266398486d145a21d962ff95c221d5c285a5c40b65b6be0931ac776e626b9709ccf8e686a8c5b4f436983d050ff08778c682f654e1457d81c0836b68ddd7984896f4ff043cbeaf22b2df5dc4af78df95e130ef1d5d8fb13e5506f39f8cd397a678c84489193cd977c4da9c0513f9a3f45d2390afe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85564b249401518a4052ebc604b25b76d1c48bdb43d8dbb1856c94f4c375b7f75f0aefd502699a07712558a34b23ebee3b3d8135a8526b7916907718ec49f3f327093ae923c79baa6a95795550717566584959dc1bd777fcb4bae8f80f8e5a5e4858474621ef78e8e9441327b516390d6097161f487ba59b1ce790232689a10cd72821d044e22f42e2734cd121ae760df40fffec63f1a20053385d4f3faef32e25adacd44f2b9b38bcdd65156bd62819c6c720e08ff9d3a2e952aa503d66018e4fb86ada0a2ecb694cc7846f592410b16c8cf7e3e191e2501e22a36d4bfdf57fad8ab32f6c98ec3021b0d734d38efa8995a3802f0f4eb161517832d8f46857f091b8ec52457eec753a06d343edb6edee8445eba6db0be9a93566138c103c1cedb451c229cfc272c5abdcd2459d2a72292c1cd47bc4ec7ef0802664324f1f338bfeb9d660e60ff60bca5b3d6aafdd8980ba0b4812db13615cf4ee278ecb2ddc49a272cc7dab53b34948f9311a38eeef565037ec2b6603b4119369efc58f2203548dac33d8690c73d9d5974a8092440abc5cf057a376731112151d2ffb6d3e195bc91e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85592740e20fc5605dce2ceadad588477a97241ad6a907cb1f212f664f3eee0eae148fe6a83631ce0017405b76ed5d98cb655cb49645ff7873108bae50d85ae8eda65b7014513a8ba7f667de84c39e305e0d1fd5088c1aabf5be112bc68df4f362998d9f8cb1928ad20cd5d639e41a28cf1c84a398186b2a99b990d2ddd0f72aeeb1f05dceeb5ec4802dc4e2eb4787928c1f7b1db44af12737c4d7a808b845835f6d6147e3a1016fbefbd4887d08536dc9cfa199c33fa10ab4ac18e92ddd673eeeebfbc200ce02a530c11103361ca6fb5ac3c5792a81306c8e513ab5adfb766424f3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986c299dc9af37e56bc466406fe895371a14855ac35d944f69bf7987a40d9bc482f908ff9b10b54b83bc98b88a810513835710ad11909ff4a1f9b96c5d909b225fca2291efdb03da4b814c454a3268901975240eb39613d16c26ca925b96b2e5c53rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-kiwi-keg-2.0.3-bp155.1.5.src.rpmpython3-kiwi-keg@@     /usr/bin/python3python(abi)python3-Cerberuspython3-Jinja2python3-PyYAMLpython3-docoptpython3-kiwipython3-schemapython3-setuptoolsrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.69.21.213.0.4-14.6.0-14.0-15.2-14.14.3cccwscwscn9@a{@azay?@ay?@aqV@ad'@ad'@aV@aLl@a9@a9@a&0a&0aGaG```@`@`@```@`E`E``@`@`@`Z`Z`Z`Z`f@``N@`N@`@`@`@````~@`~@`x*`x*`x*`x*`x*`x*`x*`m`dd@`c`S@`S@`S@`Q@`Q@`Q@`Q@`Q@`Q@`P`OL@`OL@`OL@`OL@`J@`J@`H`H`H`H`H`Gc@`F`D@`@`?z@`>(`>(`>(`>(`>(`>(`>(`>(`>(`<@`<@`<@`<@`<@`<@`<@`<@`<@`;`;`;`;`;`;`:4@`8`8`8`8`8`8`8`8`8`7@`7@`7@`7@`7@`&m`"y@`@`U` l`2@__j_j_j__jgleissner@suse.comjgleissner@suse.comjgleissner@suse.comjgleissner@suse.comjgleissner@suse.comMarcus Schäfer Marcus Schäfer Joachim Gleissner Joachim Gleissner Marcus Schäfer Marcus Schäfer Marcus Schäfer Joachim Gleissner Marcus Schäfer Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Marcus Schäfer Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Marcus Schäfer Joachim Gleissner Stefan Knorr Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Joachim Gleissner Stefan Knorr Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Joachim Gleissner Joachim Gleissner Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Joachim Gleissner Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Jesus Bermudez Velazquez Jesus Bermudez Velazquez Jesus Bermudez Velazquez Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Marcus Schäfer Joachim Gleissner Joachim Gleissner Joachim Gleissner Marcus Schäfer Joachim Gleissner Joachim Gleissner Joachim Gleissner Marcus Schäfer Marcus Schäfer Marcus Schäfer Robert Schweikert Marcus Schäfer - Update to version 2.0.3: * Bump version: 2.0.2 → 2.0.3- Update to version 2.0.2: * Use keg instead of kiwi-keg as source dir name * Nameing consistency * Warn if referenced archive is not defined * tox.ini: Use allowlist_external * CI testing: Use Ubuntu 20.04 for python 3.6 build * Fix unit tests of OBS src service module * Regenerate docbook source file * Fix issues with man page sources * Update installation documentation- Update to version 2.0.2: * Bump version: 2.0.1 → 2.0.2 * Fix spec file name in .bumpversion.cfg * Do not obsolete python-kiwi_keg * Add unit test for missing include path message * Log message if include path does not exist (issue#113) * Use kiwi-keg instead of keg as source dist name * Rename package to python-kiwi-keg * Include doc source dir in Manifest- Update to version 2.0.1: * Bump version: 2.0.0 → 2.0.1 * Drop rpmlintrc * Use argument defaults that match type hints * Add missing dependeny on 'schema' to setup.py- Update to version 2.0.0: * Redesign image definition layout (codename 'minikeg') * Documentation overhaul * Build man page when building package * Install man pages in the correct section * Support multibuild parameter in src service * OBS src service: write _multibuild file * improve source info tracking * changelog generator: output dates in YAML changelog * make keg man page more akin to usual man-page style * OBS source service: add support for change log generator * changelog_generator: support multiple revision args * Support multiple roots for changelog generation * Support multiple full recipes roots * Add changelog generator- Increment patch version on service run By default read the version element from the written config.kiwi file and increment the patch part of the version information by 1 This action can be prevented by the parameter- Complete obs service This commit implements the actual keg call and store of result image data in the output directory from which OBS auto commits the data to the project if called on the remote side. This Fixes #68- Handle errors in input data more gracefully Check input objects for type before trying a dictionary rmerge. Print error message instead of stack trace when image defintion populate fails. Use separate exception for data errors.- Add dependency on Jinja2- Added mandatory outdir option When OBS calls the service through the API it appends the --outdir option. The passed information must be used to store the contents of the project. OBS will commit everything in --outdir to the backend- Update unit tests for kiwi API usage- Rename service to compose_kiwi_description In addition to the rename also allow an additional keg recipe location to be used in conjunction with a main recipe location- Support profile parameters in base profiles Copy profile parameter section from the base profile (if exists) into nested profiles and remove it from the base profile. This allows to have profile parameters in the base section rather than requiring all profile parameter containing sections to be in the nested profiles, potentially reducing duplication.- Added keg obs service The fetch_from_keg obs service can be used to integrate the creation of image descriptions via keg with the open build service. This commit creates the basic structure for the service.- Do not include base profiles in _multibuild file- Drop check for 'arch' key Do not require image definition dict to have an 'arch' key. This is now handle via generic schema comments.- Remove left-over debug message- Add support for nested profiles Add support for nested profiles in multi-build image definitions. This potentially allows for shorter package sections, less duplication in overlay archives, and shorter config.sh scripts. This commit also streamlines the produced overlay archives by not including directories multiple times.- Undo spacing change- Better errors and dest-dir default (issue#58) Add default destination directory (issue#58). Do basic verification of image data structure and print error messages instead of stack dumps.- Push rendered SUSE documentation for release- Bump version: 1.0.0 → 1.1.0- More typo fixes- Typo fixes in documentation- Add parameter for setting image version- Expand on single- vs multi-build.- Fix missing mypy library stubs For static type checking many modules startet to create library stubs packages to contain the types, like header files in C/C++. This commit installs the missing stubs package to the development environment- Documentation fixes Some re-phrasing in "command line" section. Various typo fixes.- DC: Update to new suse2021 stylesheets- Add note about profile specific parameters to documentation- Add documentation on keg recipes data strucutre- Bump version: 0.0.8 → 1.0.0- Remove unused import- Improve list-recipes functionality Instead of looking for directories with a image.yaml, try to construct an image definition from all leaf directories in 'images'. This adds basic validation of the image definitions. Add image name, description, and version number to output.- Fix return type hint for get_script_path()- Do not indent file content in config scripts When generating file content in config scripts, do not indent file content in profile sections. Also added descriptive comments to script_utils functions.- Rename utils.py to file_utils.py- Drop obsolete template files- Generate config.sh and images.sh directly This moves generating the config scripts into keg rather than relying on templates in keg-recipes. Use of templates is still supported to generate script headers which can be used to provide additional information available from the data dictionary.- Properly support overwriting of keys Keys from upper levels may be overwritten in lower levels, but adding subsequent data modules may revert that by merging upper level dict files again. This commit prevents duplicate merging.- Do not generate _mbuild if no profiles are defined- Add support for _multibuild creation- Typo fixes- Formatting fixes- Fix unit test for create_overlays- Be compatible with python 3.6 Do not use shutils.copytree for compatibility with python 3.6. The dirs_exists_ok parameter was introduced with python 3.8.- Generate overlay archive tags for schema Process overlay data when the image defintion is populated, and add archive tags to the profile sections for use in schema templates. Also add collected archive information to data dictonary root, for easier archive generation later. Simplify archive generation, produce tarball directly without intermediate copy, and set file ownership to 'root'. Change mockup recipes data to be more in line with real data layout.- Add dump-dict parameter Adds an option to dump the generated data dictionary to stdout instead of creating an image description. Useful for debugging.- docs: Minor typo/consistency fixes- Update documentation title After a converstation with Stefan Knorr from the doc team we agreed on updating the Keg title to be more specific. In addition a short information what Keg is was added under the title. In the rendered SUSE layout this information appears under the Preface section.- Bump version: 0.0.7 → 0.0.8- Fixed package build keg binary and docs not added to spec filelist- Bump version: 0.0.6 → 0.0.7- Added MANIFEST.in Documentation missing in package data- Bump version: 0.0.5 → 0.0.6- Fixed sorting issue in unit tests There is a code test on a dict traversal which can lead to different ordering. The unit test which tests these contents needs to compare on a sorted base- Bump version: 0.0.4 → 0.0.5- Use template to add archive- Option to disable creation - Affects only root tarballs- Create overlay tarballs by default - Tarball creation by default - Add flag to disable tarball creation - Add archive name to xml file if tarball is not root- Move root check inside method- Fixed doc string Make sure line breaks for data type descriptions happens after the type declaration. This avoids rendering mistakes for the documentation build- Added information about data read from image tree With --verbose set print information which file from the image definition was read in the order of their reading.- Generate overlay tarball - Use the new defined overlay structure- make flake8 happy- add unit test coverage for delete-key support Adds a key to a (not actually produced) Leap <= 15.1 image description and removes it for the Leap 15.2 one that is used in the unit test. This will cover the corresponding code path. This also required a slight rearrangment of the mockup image defintion, as it wasn't quite using the appropriate keg data layout.- Better performance for getting the files- Make sure recipe list is returned sorted- Simplify list recipes The implementation used os.scandir which returns unsorted information that can also vary between calls. Therefore we saw periodically failures on the unit tests and the feature could be implemented using os.walk with less code and sorted output- Allow dict keys to be null when merging Allow keys to be 'null' when merging into data dictionary. This can be used to delete an inherited key.- Add archive element if not root - Only add archive elements to config.kiwi if not root- Update overlay structure - Parse overlay yaml allowing duplicate keys - Check overlaynames are present - Create different overlay tarballs - Update config.kiwi with the proper archive elements- Bump version: 0.0.3 → 0.0.4- Update keg documentation Add missing information about new --list-recipes option Also fixed a typo in the docopt usage string for this option- script template file is not related to schema type The script template file names for config.sh.templ, images.sh.templ were prefixed by the schema type, e.g 'vm'. This is not needed because the contents of the scripts are defined by the collected data from the image definition tree and do not change in ther semantic depending on the schema type. Therefore we only need one template for config.sh and one template for images.sh- Fixed comment indentation in script templates- Sort the list- Fixes - Rename option to create overlays tarball - Tarball includes only the overlays directories- Add support for images.sh script Unfortunately adding support for another script hook was not possible without changing the layout of the image definition data for scripts. The basic structure for the scripts config.sh and images.sh is now as follows: ```yaml config: [#] config.sh setup config_script: NAMESPACE: - SCRIPTLET_NAME files: NAMESPACE: - PATH_DEFINITION services: NAMESPACE: - SERVICE_DEFINITION sysconfig: NAMESPACE: - FILE_DEFINITION [#] images.sh setup image_script: SAME_STRUCTURE_AS_FOR_CONFIG_SCRIPT ``` On merge of this commit the data structure in the keg-recipes repository must be adapted. This Fixes #35- Show paths instead of names- Add option to list available recipes This Fixes #32- Update overlay creation - Place the overlay structure under root in destination dir - Add option to create a tarball- Create missing overlay dirs in destination dir- Add support for overlay files This Fixes #30- Preserve XML comments The KIWI validation does not preserve comments after validation as they have no meaning for the processing of the image description. However for OBS comments are treated as project configurations and therefore the toplevel comments if present must be added back. Because comment processing is tricky especially for inline comments and when moving to a another than the XML markup, this commit also includes a processing refactoring. In addition to the toplevel comment preserve on XML documents it also adds format processing options as follows: Added two new options --format-xml|--format-yaml which allows to explicitly specify if on top of the Keg generated KIWI description an update to the current KIWI schema should be applied or not. In addition a warning about handling of comments in this mode will be issued If no format-* options are given the keg generated XML document is only validated against the KIWI API but not translated into the installed schema. This allows to keep all comments as created by the keg jinja template mechanism. This Fixes #19- Keg vs. keg consistency Use Keg to name the project and `keg` to name the commandline tool- Fixes - wrong indentation - remove extra blank line- Use property decorator - Use the properties available to access the attributes - Add missing properties - Add setter- Update image definition populate methods - Add update profiles method - Add update contents method- Refactor utils Turn the code into a class. Remove code duplication in some methods Update a method name- Improve overall error checking Make sure obvios errors like recipe path does not exist or schema template was not found are catched by keg. Also make sure validation errors from KIWI are part of the log output- Update documentation pre review by Jesus, Robert- Add back 100% code coverage check- Reference the Leap example Improve user experience with keg to provide an example that actually can run outside of obs and without access to private SLES repos.- Fixed call for create_kiwi_description The CLI call did not take the new markup argument into account- Fix type hints- Add type hint checker This Fixes #16- Update rmerge doc string- Add template functions tests - Test template functions - Add type hints - Rename parse_yaml_tree method to get_yaml_tree This Fixes #12- Bump version: 0.0.2 → 0.0.3- Fixed unit tests to respect keg version updates- Bump version: 0.0.1 → 0.0.2- Fixed bumpversion config Adapt to new location of version.py- Handle unsupported markup types Raise a KegError on unsupported markup type, currently we support xml and yaml- Test if given destination directory exists- Added release target to Actions workflow On tags a new release to PyPi will be made. A new release tag is only allowed to be set and pushed via bumpversion on main. This Fixes #8- Turn README into ReST style Allow the python index to correctly display it- Rename python namespace from keg to kiwi_keg The project and namespace keg is already registered on the python package index. Thus we need to rename the python namespace as it cannot co-exist with an already registered one- Added install chapter- Added doc_suse tox target Build SUSE documentation from sphinx based project. This will be the docs that gets published on documentation.suse.com- Added Keg Documentation Added overview chapter and update manual page This Fixes #7- Fixed packaging metadata for pypi- Fixed leap/15.2/image.yaml in test data tree The wrong include path was used- Explain tox targets- Added support for YAML markup in KiwiDescription- Added anymarkup to virtual environment keg will also support YAML output. For this the anymarkup module is needed.- Remove dots for build status badge- Update build status badge- Add information for contributing This Fixes #13- Refactor generator Turn the generator into a class. Apply the single responsibilty OO pattern. Add tests for the code and give the single parts of the processing a name. Update the keg commandline code to make use of the classes. Keg should also be usuable as an API, thus I think it's important come up with a good class design. This Fixes #10- Flake fixes for keg generator prior refactor make sure at least the linter is happy with it- Fixed main docopt setup and use of logging The logging facility was used in a wrong way by passing the log object around. This commit fixes this part and also puts the docopt string to the python top scope were it belongs to. The result of this code is now also covered by tests which makes sure to handle errors the way we want it- Temporary disable 100% code coverage in tests Until we are writing tests to fully cover the existing code this commit disables the test coverage check such that we can use the pull request checks- Add tests for KegImageDefinition class The KegImageDefinition class takes a keg image definition and composes/includes recursively all data that belongs to this image definition. The component data is taken from the provided data tree. This commit tests the traversal of data and checks on the expected output. This Fixes #11- Added test data infrastructur For testing components of keg we need a test data infrastructure. The proposed data is based on composing a Leap 15.2 JeOS image- fix: some data dirs may be skipped Declare only actually scanned directories as already scanned.- adjust year in copyright notice- use docopt instead of argparse- Move to github actions Due to the strange travis policies we are moving the tox targets to github actions- Add support for config.sh script lib Read script files from data directories and make them available to config.sh template renderer.- Add support for additional data trees Add support for specifing additional optional data root directories that will be scanned after the main one. This allows to pull additional parameters or overwrite exiting ones from a separate repository.- Initial code drop Initial code drop, supports generation of config.kiwi and config.sh.- Added KiwiDescription class The KiwiDescription class allows to validate and markup translate a given KIWI description file against the KIWI API. The translation through the KIWI API includes automatic XSLT processing into the schema used by KIWI at call time and pretty formats the output- Fixed status branch name keg uses main not master- Consolidate README into ReST- - Initial README- Initial Application Setup Setup python project for keg: * tox based development environment * pytest unit tests and coverage * bumpversion version management * rpm package spec and changelog management * sphinx documentationlamb58 1684753894  !"#$%&'()*+,-./0123456789:;<=2.0.3-bp155.1.5  generate_recipes_changelogkegobskiwi_kegkiwi_keg-2.0.3-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtentry_points.txtnot-zip-saferequires.txttop_level.txt__init__.py__pycache____init__.cpython-36.pycannotated_mapping.cpython-36.pycdict_utils.cpython-36.pycexceptions.cpython-36.pycfile_utils.cpython-36.pycgenerator.cpython-36.pycimage_definition.cpython-36.pycimage_schema.cpython-36.pyckeg.cpython-36.pyckiwi_description.cpython-36.pyclogger.cpython-36.pyclogger_filter.cpython-36.pycscript_utils.cpython-36.pycsource_info_generator.cpython-36.pycversion.cpython-36.pycannotated_mapping.pychangelog_generator__init__.py__pycache____init__.cpython-36.pycgenerate_recipes_changelog.cpython-36.pycgenerate_recipes_changelog.pydict_utils.pyexceptions.pyfile_utils.pygenerator.pyimage_definition.pyimage_schema.pykeg.pykiwi_description.pylogger.pylogger_filter.pyobs_service__init__.py__pycache____init__.cpython-36.pyccompose_kiwi_description.cpython-36.pyccompose_kiwi_description.pycompose_kiwi_description.servicescript_utils.pysource_info_generator.pyversion.pypython-kiwi-kegLICENSEREADMEgenerate_recipes_changelog.1.gzkeg.1.gz/usr/bin//usr/lib//usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/kiwi_keg-2.0.3-py3.6.egg-info//usr/lib/python3.6/site-packages/kiwi_keg//usr/lib/python3.6/site-packages/kiwi_keg/__pycache__//usr/lib/python3.6/site-packages/kiwi_keg/changelog_generator//usr/lib/python3.6/site-packages/kiwi_keg/changelog_generator/__pycache__//usr/lib/python3.6/site-packages/kiwi_keg/obs_service//usr/lib/python3.6/site-packages/kiwi_keg/obs_service/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python-kiwi-keg//usr/share/man/man1/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Backports:SLE-15-SP5/standard/8860b519d68b25bd2153c242e87bd397-python-kiwi-kegcpioxz5noarch-suse-linuxPython script, ASCII text executabledirectoryASCII textpython 3.6 byte-compiledemptyASCII text, with very long linestroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix)  !"#$%&'RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR}@9M:_Dޗ(utf-87162883615251951d3c660203dea4d3ea6c34917083c85002ab3085a722507b8? 7zXZ !t/㠻] crv9wMjeKԇYs#c8I]sgQ*굄;EB62U Ee:EN-*,Z֔'CHz(0͙Iq\螀,9\cQd: Ȅeqa&DM>CA,i;Y Hk?E)CAil8!Jxm=mLG8`==F.7s507xuf^8אV%\NjVj#|x]1DA("z~З5wU`˥,Xݹ HY^\Bei}FQߕ? èf]L\Z.3W#v>qj߭c/[)[l΂}0s(iƉ( [=e u#0}&7G].ijv@ݧXr݇==zᡤ?,77 L-E)ʨ;#i*DA!J ւ_da4ϧ/hu)onEB~+창+K_Qfbph1jv̽]MߐM/eg4/.Z7tеbje ؾbڰ;p2Un-!V^~7A2@RW!! r;@s1+3u'^BB.fZyuw)h'm9pcw&en`N4r"'cz J'#ԯަ^znM3ȩ!u@hq ж~*5ܯ:Q:]׼khk$XH=_g֍>lāݮUE"f٘޴9'>asplQa-*b6[\ pGM VRXP3++^5A7npSj&Rcq@Ӆ!7A]H0fr/a~6kF #AK frfR(<й ugNbߺg͏V;%yg/ܻiUu(L;*\nP܀+ꮝq'[_?XRsģ+4 Y}!shSw݁WL.&Q_ZʍS“C)yꯤ ђn Ph* =E0z$gcl&kM4I 3Vs+h C՛W:0*e!6HVϗ-b25rA7ُ*):KV!c:0WEiL]XݥOWp7BnMUۻ1g dFՉ k},9G>ujMօd@U81}:ѾIpM_g̔IZ~s\a|DU*j񻈫.O81wn*CykmဎpptZ, ӥ}. .EϹMJJsQ;Ǒ$A07*?ՇyĽae(/X =ߠ8kt= ȐF0דQD} }8ִwYnq3aznxKܩp 7 \7Ry;qUP+ |fc˘8b W"~yNanÑr"n.z'>.C TG+DX;Ėpl%PQcs z0ˉpI .7gIZ\̘5lL YY)Ě[j K s͏ g= 2bL?8p5ЌE#OxTq}P` +BADVnӜ $($s{I-wIo?물 axÌc1C.C;Jx``QY-NY}@~ ijR}ME?``zӟ/ 7x6z‹/D/v6A~e 7LCTAɂc!UvLX~}9AX"h6# ǦD݋M* BG3Uky#?!t$lWӓwF Ιll=_ |Ŕ UShhƐ{oRL^~E $LL`K=v-8pAe@ίfYC0^a++e|R˶vbFy,ؾq~@(994X`(/?˥⠣sƖ <4"i Q.ƘvnP"Cx)26lSZ/M0h)h|xZaxZ~ݷZ-pe  5~1L4ioGBX4vUGGV_2QUeƩ\{FH zmp+SP?]M rD<MpClK6,knrVٗl{Pz5YT1i`Xtr!ݗvs\@LHK8vY>- jYӅA/jqY~iGC舉#ѳaF= e$S4rٲ:q gYf޲muc$x2+vп'DH-I. 6ILv)bRV Q~H>:3 :FPek8YhjeA7\:&"HͺF+fB~'>_IXLmA+;nX$AlSv^~vR5 Ϣ30?hRn-9Kh jkEpRKOUpf-]oI¤lGΥ[Z]y3KmD[Kt~]Yg>&˵"wfe#gËlX \ѸB,Re#Se?%zμ3W>^0,] # 4Ѥ_z;SglPPa4Y!!y@^}dr+둉-."7,n$P~3[M r CcZWHͣ1;\F Yg[zl;kZB8ſA"}̈'q'; ㋨^!jϡX~/嵋l"72 "67ZZc,@]Q8a( <.0ǟ˼EkdL6Eu=6ebׂzo&v̌A{bqXm ΍4XEG;a8L/5k?9ݳlSКe-oK&H :M hsgNgnZ]?:Hc*:,z#ÞhQ 6bkPR#GWks(0^;wǢٱUK3f1xrzr_ IZ̳X9>j/1ED6UIS GH%qViܳKޏ"Ioxy ka޶uDJ.X tr QR|ȏɎj;~x?cUJ1FO.pHO_"cwBX!Nweq |KJ>C.9v:7#M,F]1ՂA9kՠ ^1x08 1J\a# EUc+S٫Vl _j5%qxGR? s<)r δ"G7Ѡ6n~葆ũ?) ri4h2.ItEIB\CgBfq&H&V*؊' 3w TqRCsl4;wāV+5wpee3'aR(ҙFr Ct>nS -?^yrUP?:(O5uɺD'F8'j,-sX!ؗIBNFGxTYgG\Ph#^w(S9ȋRћ5KXnr>gsxxZ<Ҟ|@ ȾqV/?`BQKEo~ .E!Qd;"Fuڷ"U"?|1aƆʷSia?6PC_۽fcna5tb=|%+@*2Co,Ay΂?3VXF>Ci oQY&Q,>˃#@]>Κ&]yɱO7LiV K( ח_VB 4O^L < b w Mņuٹ- Hh"ky<>rƛ̗ 6o17 x k7;[qzj"%X?ա9`wFoԔJR/cA/Ԑ>Rd >]} pͅ*BYêO-j% }|*{0Dd6Hߝ^)mXe&hN#!`VB417sCYs,+2' {9…!{Q֗"E?D<yzܒ7C %\u-迆T\i ԰oN㕻HЇ;F+ 2tL 7#B?FB-)ձ˶˞M%#^M8E`(☞AV7DLZTy!DDɓM=o,l%ʖ)LцP4Oc_,g=T6<2NU'g`0orN2~/~YG^ Y[r <_ɬg7MIX-&GAC==f(\^yOy{9;LimXwR(cس?zeOZ&km0c5#U(/O"n!Y`Lldu6!OAO?nqE{rfDJgkZz=xn!'TWJUa 6]n,BauI\'ܫ~$fnBRV'Y lY؆3M{")^=r~^RK*q*Ls0=V4ፀ9nWS Я#aCBk!&H)Q⁰WfG!aKdƒעr0(G/6'AZ3ǯ|%xuZl}OdB^ $76 $h66$\nhߞ 1{76ax7/~$k>#An+ /?Tbⶄ>`k(JGXöJϚO[Ahnu0(=9!MC4cZֈw_mΰy>o~A 5zwbtg{{:"ތhL4DϽ[9Eqtcݛ5D7Eh{K[+Zܛorw @{#aL s RČr=Cz闄\/ J~.mޤ?"攴=?c}, @(%k.׀x$$ܒ]y0dh-6,u25$R>>W"b5cӤ&ZǸ }`W8?9Pe3qX;8)}2e>&m&/C!WZl5BΖ}Y:J2*0B‘qTr8@VXy^z8&בY\aCkR+㛹EU Ls?- {t#$m<ghB>ː;"V3w'dQh"V,vE=%*K6 8y 9if_HsuJiⷈl[֓TZ0a6cPg5I?>>4pzM5!(٣BZv'/zP8j[u0ZFD9C?^&,ӁT^/Κ6F |> w`gWʧ,&po+ aތbGMhl} sڷ %u\Y_ʙSynOmQ|)q:[}m.)PV_~#i\4 g|+%U,MQI$ Of+!6Uވl:}IO 6trTW_?y~m 'Aj@jhM]јT,*2}4ӥW0K&xtݣhX ϫ敗z7Ȅ{CI-جvIr )_Hgh, Mّkpe0kQ]lK am][V[ďvM~y?״b6-ӆͨ > $ bcU2ByQd T4sb.h :2*L7K;[}\g;UC@݇ͯCg#L (R)U/v 3%۾UMB1>ţU9FoWFv~3ԉ+W]@n6=L,u8Az ֫u+eOx O&} ؞#4c_MKUsg87y=fm!ϺU^kyXMDMp1U3+kg6#-b#(#j~F]6#D)$Y\QwhjBX7/w@17+vC3p!Y7d_F]ӿZ} LF̕LQavQeaρ?W.=<#,v91}|0KZ hA{ J͕'3HOD-T|j#e/iO-W< >f&16HY l2 rݖrz T:ܭ5g3YaBU5]Gq-iA긽YNK0_FWy[!djQuTF`͆fWZJ _"ͼFk Fyg8?s$k*|MoF3Įv>ZK*-YŢ Rǘ$6!c #pfcr>Dbi -)pm1AД9ߊ OVW313F%1`?N#iܶDXqB%+n9fu柗uh 8$^<* %dJT_Gs{GΗKM[(%c>`&Xj&UyXqlm-(!I\ͪ8mawӠh˾# ?k_^cPP6'y_r'ϙzZj+ftvٽ3,} ޴M9=8s hYES;*~tz )9t;Hz ;C'BC$(aNpL9ų900$z]as[JM7&+vM62Ҍa\$jnok#ﶈnkEd9VC%14W?#/#o&ǧM9!3i?Sv NxţE 1uo>Kw%nF\u% ff9fBoN-NbJM1ip?AEmq"VΩN=+`r&XqkTq6^ǝΩxj!-q_B1'şۆ0#.qs=LT_Wjfg+̍mwaX/hJ%9 7RД5_HR6e=C'?FZF_$-ǐ`܊q->mO>0F(i4$ Ī&X4H\A-ʶ8c.;fgtOyPRE`L1;a!M_Lļ/uA=]T^S!Ot:8T" ufs(n nsIbͽ,1>7&PKPFlT1K;S J6Q'/xReP#V'V".f{%=*؍BX?KyJd,s{;-ClB &8Pj;X&mF>vXT؝B-`e]oEEXLk^wLhޔP FΧ-t eACqɮѾiaQS?nʢ)aBky-@, i0~ZϲFh+D!Uaq'<' k$}L bH.)gy& 2}QRn GI|F4^ת}LwiOYq@Y4ݒu,7lD:9Ee'RXQzD5Op#6Ezp1Ad"ހ؊"4#퀰uü]2KiϪ* (6aLFe. "py֪C k8sݠ޿'?/k}>&זmR.^Cyg;Z/ |:uc'Z+ kCa&I:~ IЗ-|⪥+![*L *, ,`(F?&0eE^;ݡD#@tX-~ bx+ՎʮZw"rvͲ:5ށƛ%-KG6xXyU=ҴnM8I#/ܢqUFXaT'u$e#)0:2|eWjd,"CN\2 skRPJ D󎎐PZyPL )XGHC B磮/)_}goyʫo[ǩTxruwI43Tx tGň7"fii&goKrڴwCm! {.mP8L/,hj6(נJ>m3 _y:3L>C KJJ:9 &_8Eg؍'cDv)p!+1)ى6<1#28x-5¿0lHުDl#&oB]DohgÇ0ۄ=6r7v Ds jq)= ުO&E:fMW5Kfϙ:'^r0X fz1h8 ܹGqz<1Ez69]gt=M wHqp"o0 iq bas}P˾ZBdދ9(X:0oT3덗>K' a8J*I hDI{ /?3D- yƗCfpnLlb t}fy. ).g~ʶě}Q {p=fC\B~^!?ڼb$&l>l"Dh^N.ghY!ʙBu|}Kc?;?Umi݅%bLf4 &[6X6?#"x98a{A蚠Xfsol U0).j4%ja-);l6*q,E؋x,2W6 Y~CAMYK6z÷>'KKzFlX]::ee kXQx#99c{5!#AM/JW+!@Rڥ:ra( yۜކ֯}z i5)жT#Єm.:8l挞$* Ǜ[Ǵ`Ǽ_S)+4 5S&#H#5O`k.1))fg6ix]B[VѦWxˮga!6 Q BS) 8EElFVd1_w/ MZg ii$KN&1F8v4UQ@( i3Y88[f'v{h0zn9+T$:>#V 10ݙ,[ZndT;q/_@ ZP79]K/!ŧL42Kjus9qrs˥<$#v!دkKvn~u5<,i0?ϕ υCS-.@*>z`W2J8V~Tԯ| CM%l۫S!w#ٸ~?%SVmT#PGXEԎDcSk]BOkTdb:F8E>U c KSÜWbÌ^ijNNyuEcd.oF%I<8͕ln+A?-yA\k-V**cUh[Q 8RٲHWyoQn\`{>b@۶k[VVMuq@<;PSPQa±-wbSgVr(T*ꃋ>"[}r>g nH/RbS-Ox8߾'P1uGd:F8iơ x^h:'jwrnS?=.nùȘE ᓐiB ?{A6C&_}ʾH?z><>;!/U|Ѷ'צ86\ ĥ"X# 9Hƪ;ǔhU%sa>RT!q&Yƚke,ߢ\s .{a J3w0WE /||2Rێ^9ǀL.+ 鳉w}>]*lq{.h+/4k/jntV`8бY5;RI0DzFdy> <)\˩ WG;SzrIwm؁?,a .ӓ[6|-(, 8̸-L@/7${Ç3}|P_'YT1#דp{BxU[%icCe-#5PbetVXYp"/$"q] zVL!.[ﻤъC\&anxYEA/5Wِ^T_(`sb=F( 5|r4 GVfKNf~)nc_X̚XE|C`:F#WYNZhpyŴd 5KR-ob@0uK {Cz6@OrX]ޣvW7xܽL%l"c Nw\6KX LwhYHRT-1]Jzh{0QM@w[ۥ y-Fe!Έ@{.z}xߕoSsV TA=~ ƩxpsOd=EZkA`܋Cv"E*P +3-li7&IQsd;óԫjT[{<} 5le/!#_L!D@h~ADe%wN;c<9.WzaOL5n}.QYJbVRzfbzNA碱wv)yI㬇DRO$ ' Wn4Jذ^"Í(݄VAY+:8{.E".OIyq-aCab*丿f]RF>sh-db:(TL` 7`>7}6qb#\.ҡΆ $gq("wV2u#zpw`:mmh~[OD7ΐ}頱drc`諀'IxnJ {E\]k=0Xvw'A.Yf.6@Bs ,#9JCfM`Do1hk R9b"hOVO<`KkX6!󗌆 ;O r o1VQ*0LA̎a\EI8;6pkҾwӆcDF]j5;'V >ށ;/"kR:~0Tc=5{k_ܸǁa,Jc!lL_ZQGg=Wv)ƵG*=MmC| ׬Q3DTHƹb+yp`R$cfTxT9&'LrS@Tν.+)wUB݄ B)BV5ywvr^ 97,FPX ~ח,[$nV vj]TEMNޒig{ݘ}"":)ajH&䉻7["=]{[騛2˯p\ou~5SgԊP_)G(8 Ol`]Ca \>>+i& S[lJXj]~2!C efYYr@0(a&mD0%wpc ɩҪ 6U_#i[ڬߋc t0McJc/"y4_H3-6eNÁBI 7P|n" 8?p̖w2 ~n<@7ؖ +d72jNqMj9p %-0dsMƛ櫇G6IAW*W^K+'/ )zf4XGo+15L~YϺ^9DCuFnHt=$[4Ql㹙nM0kY!T5 x3X7TrY,3@+<_2~0Ĩw}I=@bGvs̯bY,^UfWKin[࿵} aGÌ("^ x5~Wޙ&kxc ->۟0S3DV%JJ: t]߳Ӛs`)(0I =\ @q̛zi; l-^cϩe1[pyk)*eGo ؙ h1UdIa+oo, W&nj3оW8?3>]Okʶ7.0>(?Qx©)-$ =vCc+;C v j݁߿7__0hNv!9;"Z lbε[NӗDi1Pq&8`p\e{wu$k:v8ʡk: Q BPx@}9i '= EdTmpkvj׳~ YInYF6t Mnj^<,cu,—&SM6bE$sǖ#7|!Tx{TU4< 271(|ޓԖMUό;ūD 1eAEP"l-`|,<ݑU6}8XuGy% @֞i}msIty tPUcJ#.#kGPi\xܗ;[*%ݫ|ƫ:.YM$@!_빕Ma,E!Nv$Ppk(!}ܼ8WEl罢3 3NOO}bl_W4%O6gͼ&q&kD,tH}u4սE2^s?*̟_/h:%du(|Jy'I#zp;SYˤqK: pqeåcW:JR1b+zY>aHEc4(M%gTqCn!Cxk ).U=XGŢATkk'&\3љx]ύkI!O_l yeuF `I.5ֺ\{v ]FPƬ}3f U}u#;oe?OIGT&Ȯw|7þə3>D`-=4HGl3q@xZϿ /qbVԁ`"F`-[P8?+bYBy4sz*6i\2מ2WY`/iloKiM0[`-`s 1>%zj["f^wy|K`\AX!tJ̌-V,ͪk?F87\e˽) +R<6*]ڍE-RG?25'T{X;+u啚w.L>Βv2T<$~mbAzf {zm5p~6} ŧ**eDrv*.<ٝẉ` _CvS`I+ LwI+v?st$}Ѯh :IJ9Z6nbR&_V";v^:p7VѢVYk]6L/~T6oU]m;ب2WH?4lJ MJQOLiACs} M2ԵA;M``(2@Q@']heĢF)Ip&R/Oe^C–m6Ng{.7Mclf<4sK#i^lnE|ɐH;),] COQhj#\md5^NRȨ3]1V 9/"N ҍ2htptڝd/ -aCu%k_Ƒ#!I%i[NS~̓0x{Y Xajs̈Fqh6d7%JC @0cuEv$]7C9ic80v8wdQ҉aw|ho%Z Z]Ʃ}AĪP(unϽYҧؤf"%cХ=+ϜGO>0KqiuzNʡ'Rz%xRImS mA]W udzacK#c&;~$p7jS]ccv \E4MM/1R6`r †.vس2`#PR'6Ok.X} ^#YWWIxq 'D 1.Wn|"9+=ղz@c r%njo.l®ʐ1X'xR{c"n:RQE8uFF.5PjO$%;pD}*q=kzB{% Г'sw} 2F~:he|[D9Gw>Twn Ȣ-0?J%Qz{`gKz ls#⨼OI/T`?bAj%v |ͬ""Ghq1ժݔĿL]{-R)nu=)ra[<=4>4q# fM5 2,7ݻuwaM:j$?"ܱ\X"(A5ހIEK _W4J}.JRC|n(!S`G:9f82R#,DQLI6~ogT={+Ii6:Ev ѭ2 ;A:# iZLq9w,r3MyUZIjGpVx/49^+_LwWf&M٬j#"Ē+Ayox}]|rzUltח-0N7;mlqRTt(7;G aEWިUPaW2Uo61*Cw`U# $[C*|3;eMX"=bSss#$)߭ RKʶ|UFa+R#зͰF,<ޛmsmhli=߉qMVIpvצVoa?8a{;8,-JqGe20,T8_W ]@]72l-KY`}*QCP9>j,vubemgAA`/n.6dA@Ӓѫ&%C|.ĥvFuv$ҒMv2%34FFKD'4t8 |ocJ8v0AVw2\1#YXP49[)h0]$/W)f" %cVɼ&q*#TY_29K!ɋ4 BN1FWWz IcZs8[џ=e7"凜K2Gu[E(aDtNܑs80}$W_'0Ỷ9[rnӛ1: ,E ݬUZLnu(- I0 T5P߭ AЯL3Qa kH i%y]A19~m߳IQ(Lꁇm[CS~D<9'8<@yik~4yxoTrzz^ʮ (h^qa`y7W0:rlۜHkR`ukw 8%NM>DXNoƣ>*K>47*fs pA3RJ[`Pت[{3cO(فRҶ_FF;`/ZۄnY` H;K~#WEٱeC =W/\Ij{ ,_> ?dwd`ZUHҟs`ir4|ҟMcݳS+{eJKlE7a==LZP;HP`* ,("[+JPX#u֌9p^Cd*%A-QK)EhUGڧ34\eB^tU&y6g89x- Ubq̷g_~ӥ<,E{BUDt%JWltΛOavE6 7H0gɻ!v2ˋmr@AlqRI2T(ꉨ.^UJ\5U ƿGl{R=lހjd9F8Š}WړpyZ_9@̅?d/RZD0B60ChEVTSPQ=:IRLG,rQRd'4̈́AAfzy1ĤP{~ǐ^Xs n9 ފjJ@(S& n 7 ꓝvT6G!ɼ^SR' +2(0>le!ԎC! n-6,!ZSz5ʾ%78v41)!Z|hcrֱICjc(PL/W( XA^~y %UT1%Gx_D0 H,ҕN䠳k̺v[8[`^*1̫GDžUdpq&kY.&!YT)Xsnǝ #*eDDr-|A,aq܍hCb,;6^ҳ0I"{$t6ѩ[Ɨr~>MVX$. :h;ё+:|Ygh!EYĈpso4oNفH$pPb \mnX?)34Lj ;aI @ qC3!A$akuLvTpط@N$#2sr ٺj+>L󭩳(Uבdr'*|}. i (~zM1m2 D(HGrn8O5!MT+` 0 J;!/KS{<1Ůmo&VP_d )㋈2 xHߩTɶ(ų~2Tb_ 3)(eY8Yaei5UN/r&0] KRRNxʇ8 df+LSSdX!5U^M*5*+|ŀ\ =kkK.܌]o:a!PRv%.mk[QÚk! F|^<\%,`7[ߢEƟ[v@/U=a\M)YӺ+@jCx*BPaDL^J[ wR=eOL`lRwsKص뺝~Tz5"\Oc;u} 87t38N|1bd YoW(&^?ͨU9;x,,CmR*]~Z~(*~ᢛ3j1gIͲyh=p<X{Ƈi;RC"bò jhH|>'B_g5Q^ף<#+vz.lOvWZ*u]uxZlφF.ٺ2{O/R8 !6% ] P4h޽Y-KVB&Sa9ʫjB 6ܙʡHN4pQ*PlLsw-ն? 46 a&[HRz6Eg]B5j`hIUKt IMGᝦNś(IߡѵOh"9n W9wѶiI<]jUYzoyV 㧕EƩ?Ra. UwFOm^VdJ*#j|]}/ !+앨٠a@I[Ёq&[7<ҁ\CdKqx<_$./\ ' F2 N5͌mr4~G3@D͜)%#ģҼgw\ss|#nPýG{ueD]o9SFz.N UR.r# 6våN(p|=QQs+'ݞu4|QJȅ\4r>UzyMg#]Zh'2qI|\!>M3"' eTع;MZ?j!xdZGqV[(*Kqa/((Fmmšud94sXj XQ5ڱ*yVm; "]*7^BVDW2c\ثaraʒq5 !k݈ƆOBa%cArzȝUBZVwηR\Ui +uU}-#$ Z% ={@kLbEm0RLMX/,yIeS[0$ߣ5h!; 881n?x B˻xIcWÛ L4%2=)3 "%;s*B(?l_'a$Щ]*9Q"g.`vj}x½?3Y~Ȍ]XYA p|1+o;iz5dDï/AOޮhlMB@L=aY_'ͅPsw/m܏: O3 R^&̈́E1eCE5a/9,zY TH2 Ȥs^\1tLE>n/*:uq`M )d:ؤnNM]ko>EԱ pqrKX8nY J*=7]6-K<(;"Xp>ɀ4#sϐ;^J8],6W,6|%,3(pጔ}Q-(0waNCWR_6Gi R!=}f@vox^-;\i4EH 8udXuJdYX{*ZT~ 8v#&")e(؏ 1-"`pԥF[:zI JjS<}ѩ=uʁ.L&; lی_YkVK*&΋ 46d|H{=6Mg9 kDž? r-W3Ae \ދUEdVB^RlTe 1+#;σDޟna>B 0Z3$^qb4q6тоxW\|&L5x#) ͤ$9+Mf93,B\2hGLxr!Kz]o15x߮B<+B(c\yvͧoEpG1ȃiBM"P#xHm_߼ oT(Vu+bƸ%&8~.M|>ϰ'e澦]4"P Hx hx.k8}3`G771fȗS!oL*f’>ىx/:wQv# tLLOI+nB4/܂Z1cG;Ʈ%iYL|#1W[~-91Zs[`t~ʂ/ ?H9np vPfT<H\ @.rfLf1\Mx9h_);,|ӘDoG(N8IfF-VHPD SK4Nb HC&(i ;YgY; [  : [.&bVuܨ >3iM-Q_ܳlVAb*/֭講+Pc*)2BwS_5c3<hԘABqX y)\wPo4 nO{UZEra-C p`&qf†?Iv"nq"|y%s秣(ᑌBa\A^iR@fe_kjAI27c'‘j' sD; zEf@5P13^2Ͻť7|V'jleNBzUͺDwlUGh?|w* hE&䫴TTnc@k/լĈ_XpP˜7- Q5㫘U[o! QF*9hX=e` 1c\<)$ka]@ᔴogQ\0mwS-p4la<\l Ք X@TUL %\9:HNܞ.f{z.$"lTc Tl 4ڵЏ.f籌Ӏ{ڎw}=~ I>`N8`;CuTv]y$maceHn F(;6{c3;΢VE*1Uc X8TV9=X"WimZy 2LXe .["QܑZ3Ӣr 8rvyZR#~b3ݎy?kZh@ TF??D"YԐ~f,a* N{a,֍jLQ_phÆscxĎ]%CoFH^+Du!J*At>S*W E.̰?B*pS HEtL+?p"g`:i(ky̑tC>tNeX +Ǩ*?&EP礒B(`G2N{v DN5wTϹ~op~ׁ85it6W8Uݮ9~+&zUfNr&0 'ꬒ )I's Voڛ=D΅"Ư&,W1 Nv{A9@"%dJgE`iAM]AdPZ)EYC e# 05 )J H&K̵*G&46[c?Z5|˞\7鏻G.3tl=W~S-ޘvLRZt-(2Ixj*46O1)RIm8?t7.md]Ԧ0WV F {נy#rn4\]F̽O ZX.1!7RQIF\P&O*@T\a9q|b&>G!lDtsGJ[?O=8O:^m 5>S&Oz^CY_"3χ<~!j ,1㆚"K[LHUm$p ^ѓ Ȟ&'2"ÆYQbJJXhrSv86dU٨җ*a%k#d&{וˊ.Yh}LMDV)ORE6>͍+\-(PsOar*}!08@םBRO3Ē>k9 MfPL|`|d\3B\>A`jm3*<: ,}4"?D^۟U [oqx%xPrFV!葳rLt=ZIQ._|v#!Iq,O6[ʔ'H wz㽔Q 2s+V<=Ft^@ѱK.˪g/LmcQt6&,MѺA1I RHbq}dzB9qo㽘&и5Bn{.v+ {LpWhWeQrޙ3@[d=.)5]0P$2\GY磷MΆm4܇Qa>qT:* ՊQ~ؒA>%yb"/zzJ!f =g-pP9&^nUP 43 9q7QA7Ra=furAM„x9F6P5"VpK?bUP#xe0Nڨf׌;q_RR`S"@{ 2Q99m 0e쇲'+j-D{%q@Wy|~ OόrH~b$ a.70jBɘgreWxEH `nFŲxo ;ZJQྋ: `7f]]4 @?C?[ j*D"O_*eN8Oy$Z; l\,4~fEQWu@wHhWO2t-aH"2OO]ihΔ=ϷW #zWT!1 ؄FkaH݆ Zf c {\KI#\4 jԝOFx1&& 7 ;4`W @7y)a$~(h`{S~U^ȯU7׎2;SǦ l<7FT~Vd3gl]Hf!W2U(hU +g9~8C*$26:nH(WwtQa(l-ɚ%*MZzC&nOMD/Fg54Ʃs"lz)2)|Mhȫyp0O.ŐKN$2$1{"hN+?X4RFL]ynqzoogUf ӴoFs&m Rc4 Izu;5G$3<4$y $fdˎ솤-Fj`_ GYfeZYR`?RUk^vINQw! wIv!' -#Ou $n, VWr{m@:yO)TnBےDCBX!tdڪwZнe)vQekFײFP~V v~X `Z-xlB+7:Ku+ I [g܍k~thW( _6SհQPD`(p~D`-72ڶkEU]Y2TYV:yZ)tCLɓDp,<ׇ[vGq~Ę:<DGJǰ:1<=ҁ.+Qȹ(e6_j# kѩBK]cA =-6݊oD9al=݈PW_їRTѱ%HXsAHgAB+HcK1Io"ג#-Of"NՏY?ԶME &]lzn e@ 聕a/n;Lʨg6'-1 k_ɽmnjo8^r̞Hf`w@ؚ{Eү?XsXFIÈNd Ι]!čxBsTv q<:奀_R :S|VMY.^%x]g? 1 M'bvz}pQGZx'>n5EB8&ܑN9-#{Vq'0)s5ӻj5M/HiF sU Q:ю+M/ΩpBWTV7a| ^(|Lh8D;#o_`:~Ȅ Lb.D9weLp|9! \asݕywE<ѮRݶP1I?m^&܎~+J/9;WAdP0ӕcL缛TH_Qm"gs %7e7; zx'$  yf/!7 C:4ý2b++t 2Fn]UKp` IXFʲSln# *VD_{eާh~]g;S\U?j)[Uy!`@EoBnu@߽!d5[M?"..B@ ? .8Cq2Rh mcȗ>,wS!ET3?;:sQQdK*ji6sp h"Ytq?0+=4ܐ:bWSsLOBۥ[ _%\ciS$ <KYK>F{&a)`Zʣ̤":Uh5MYnĚ0.cQeIw"1#>R2{:[aw,B) sG;Suc^kd)iTBj6LI/X[pad1njg~Bmv'[0Ђ$qg*6 j𐼛e:֮ͬvRgHD rGeIJ #>qz099t k"ۏqdylm84=*QÊ1"ߎ|}„~!@δށfwyRYx900^HomFΫ$ /B}v Ց2y[ĸA+cގScI+m y JрesVQ+)(]7/<#z1qiJeog^"M0~UX6}ў27ַn} 1^m$xW) %VM餒du⁼?Ȱ =&R'4Z…!{wϫ%MFfm@5#۩"9-g=vVFвF٨SNUf&0,$^{\աd.7ܥUlGNkew8*>H4pAmKH41] E!Ÿ~w#?ȂV / 򡅨*]#,JW)}( 5b ݋P%X`^k0ר5KuXٶ_o V+i"5Wj IA[UYCOOu@Q ӓFJ:Xȝ~ 25q!zu6^P%owvJNKVxâEN['UK_a҄OhI"'99rd%p)ǴקyP.2;"fxA~g‹@j We9!O{F|_`ᴶ+}ߞï^KzE*:!NR**jdd}响ؖ@Q[ZTd.eԹ9>tCbc)j={EhB90`C_Z]}&8j5ZDE zGF0Z{)vǀ ņOAÛ,N1ӖĘIaW +-d?̺V h| NJM vXИ I\emc2& ɖFP/Yto«Ev~Uo!.:'H&ۅ/4ze˯4pUT8 -T])Ndu-O9$D`ǵ‹Daz0tb$B'[ O8 ߾cW] w|9E 5ϣ뉛逥G^ zDҒ7M"M/AZE?Mmu_^K\B\y:#v8,s$Z2줳r3]0 qܺvsgA> 8@o[#,fNpX]#]2+lChfTb'cc ( 6ȩB]:2p%(2OS$D1r_l;<@{_Y$G}:N cƢ3se`PDň|s9E#;vOL=]j+y']ʙ~1 Q)EYhpo6=+*l#T7_:Яj]6?TNVB!$_k}m^e骣Fk(~E*[q2;0sۊeMe392\t9?K|w٪-SB`duj_/<|l1'xrļaʑ_ԑ_"nO֯1ّ?ݨ!neʹ-w@ ts(.7EˀP}% Vi誨߽@K?$be8F%sIp84m]W9; ($'B = ֹ|nS?YIO`ޯc1:Zc藨q9ŗQPAY (e\AN0snfl|̰߮Z(s=LoO9 u>?Ӣ@@څ}9eˤ$f3sQlq*K@nY o 29tl6C,B}hTER/1ə@G?Jn @_x?ҿakeCf?5!f8j*0s݅Ѫo$^.岫Sz^=G1X`:8uGcҞeNcW, ˉ-@drz|@4[FԞWt.@ܹ՘Ql  [#<&ʧα)PGdl'cW;0}L)IV64v+ۖC%vqjQŗW+hlwIVtp!um^ :JP~B4Cڣ rı, |27*9iEGFU&"mYgݯsl-|(FJhwE,e/3w9lrgz],rɦI' Rþ 0m^)Yjvӯa>d_ vFǼa5Rxȏ-(2r̗efiVS$q>ɜ< [RCԸBttjjcb~Ȍ7讯`=3K'*o**͔MK&bz_ ,\$κޥ4dSr+ gW*쎦h!8{ k .,hI0YqW!=*CoyDܤMURE"GzEV%nuw8O3 kB vSj&P>,NDl,{g'n̖T)Qqdb(Bj,<i~])_\}6r@||KA8 v~FP`/ ~Bg<އ)-&c=iY}'frW.[}G%|*()ÿD|3#k=A75Öv2L}ºS 7'lg Wy#L -=I/o:W)uqa dCQ:`k[gpOap>2q̱6Rq=< Oh>Msj/`m. 9EZPq=fw!-97~+< 1s E=]Y!i{);Q/P-0NGvϷR#؄?~% SzuhjT(K$HݢM3q")bѺd0)BL165uLʳ)4d:ȑO\ >ٵjf4ٗOK8sY˒XB#aLaybe4BZLY8:)ykIyX+#/JHj#쀀aQʆ(:+?ha.jUt27~]M"7!w={ AmXpfJR|:tHc}FF-Zٗv0[I&xc5H\ 汥FVk/#>Q$mkAjV`хKb ;bE\'ITkhSNLG\|"M674b%9bu^Oj.DMYApp @6+ꢒnJd0(+Ѯ%kV2 )5Q]Y`ŪQ&gޘ+1LB+|C>TA#C;?jDҹ0J=}t+ ȣ/9Np t72>t/~Ζx:"+!2l'mfOu\EcD|K<"rw(b/e}"oK"/pr-͢ 'ψ)3"Be.['{bxn5^o~}!o+F[vߛ݅ -j\fcݴo r5/2Q.!,W=$ NyD q7T-wn7=^}s#\*M>zD"uJ'4{!-CrM:yQto+ڥRHAЖV;B@ /S/cx͢\&7(Ί] n`\@;p͵W Cx7W'ka'Muߌ3 Bm칗|+F,93ﭴ] RO!,s69RƝbWS;“ɝVv 8Gb{`^w 9d<LJ٩mTrv*L@Bv/;粹~a֎> :jqmОaJ CzS~ )d*?$%c4~6gWw*qK,M "4x-ͤ1*5axR hYTUqagp}f=Z~Xe J ^[o7a\հb;&$ciKQ b/eap_ NxoL,QFlReXJm]8'm}kũ*M1 rd0L;+ 1S/դRlJ'yhw;w?oYb%h1)jo2p7wNҷc gޜF6qܼn¦!=2޺ 7Vz^g,c%S{jQygl| u6$@z1AT5ݚ6ͭ*4ȞWE?iVDm0faNek 0;/.KEz$]swAdA; z'ƈFZ2w^QLyJmVsQٳx/͝ڋåv]t9?}F9^,,5%f ƌ4lp_p5 `4DsSĘ Tû"hgB,ĉ@(܆%r爭ẓK沢 0ۨ|,@%Y/*,cCZ} |tV97EW7vq{6J ݯ͐'S.@N88t='}øs$#!6Wx&,@C6Z>ZrqN"i#5xX AK6`5wC'<7Jn-*mSGSkzs!E=C5Uە1cnf=w qRS^FP78g*cW2QlB'ӊb(+a*<=W\2ߔ}x[5:kL^Gfp.ާC }Kwvz,xnƦҁ6}a+|H?b?U \ w? c:f_̄x1%Ӷ>7Tv_Lr~1UbI᮫ǩzXmTul&PWK{@ DM i/6nG-Jܙkqp RZWTr9 ڠrO0_6rCû NaLnL1~ݽ\.U)TZ$4䤮5?ѫ4sʐ@OUҮ O VΞV|!sq [FuYކ.4jU [Q#\R a2TEnca+x \(R>ImDpѐ;\Xr}_AgoF>CIKI[6PO7WNuq{B)p "` d6,陵=_^)j( 'F%J[9n6)@)ߒ7A+ rιt20FSR+gOCOZ@#HML`n1jR89`!B C#f)+o|Jf`^q!dlNK&Ţ݈sg1􋥎 x}BL۲jGM\Q.z%}9vy-d׬T<•4*JΚtfawڣ(0vbhMHRuˢe݁oǵ`֣,@㹌?_Ջq>VÊ=hi* b 2s ^4nSL`T)^`mgo@֧hMGt(O- +']R_MQ:}?乣b;0g07<  +BrK1rӺDs16!~lMJgWV$)(4Sv2{z'PO~yF>1瀛M{+sD_M.`r" o|B]u*WT)ܤS|>=lO<3aݔ}uR9v$O%;s"EYJhUUFufmDTY ~`9{Fy4C52oX8Қj1qD$e2"~jʀ4 (̧2:KHh Q_d.Mgc{`(")fޕU?R^HlB)³Oתw6j&;_^~q[\!^^S( 8eͧc}I#FK^kpJ5=89q4VeE8ǍU]tl{PЙNm\]xz>xP髀u-jԐ\VZ{w &#w ӟP_KPZ06H9-&5g[{S!|Ft"Ǻt쵝9Euç)6nB(U`:W8j4n F!qq1. ;J>a`]tr7&A/l\' ^*Jsx/ 䊫b4akY!=}Yy}.Jux8u4^&T@msc׵`~+msȼ{DG[S]cKfp[Lh(Oc7+ u6H`3Hw9~|$3Jr EmaG ,]6`F;l0Qi!MkR8p(~'"]yD[bd?o.Y+/B~,VYOۏQxIt㉤¿97^6'T屧,ʻT]߹6[#O8.]T:`ڤN&D/-EbA&`!mlQ2խf#t<KU8{ft⣘c'E?sA-?ݶpkeiZϨG\Hp$36˳44I-GFISu\uPX+ O3ukYdu2E\h[b1:0zƃL#A D"e /j7YavFaoB͞ wdo'R zPM Ӊ '3Vl{2]J+ȄN:Ƚ#$D Tl+:룟ًf5TK~\r+ft$0>jì$Ҽk^νC!xCG8 "xPՒOhkn/r!l%>R_B$ist\D.UMp'™͛(lj|Iw Id^nWbԱ9<̊?^ Jvq{~8g3CYs%7>+&ᄡ j$O)~ 'vd:`E$eKg}~vSMφ0N1 H1xIu1ёTUnP]Iz;)D^">}E,Hyw\w>/o|GJ8tC@mأ]ZKe1G_t :JMx*D&NRXa Pu e)_ Of{{Es ѐ{_X S.zS[m~=NTD70lJ`7$B1! C%M/MT*ۿ_HDڤ#s;Flhi-`%03i=[5׺MiGa:#A2IPKjk).f ~[ѮuX,bA9QG2;U 6O"r5uTʗttiKP{݇PbaJRҊi{lã0 ~9C0 kS16X]!ƶ+Y®= -$[UGє%0̕(\)&fVVii$%Ç\ J5}[,#Qv$sGŃQOfd3gh71QE.^VIdVJ YSFF~TKq3lIJɂj\r͹O;>߱-/S%Ƶ?Mطu K柳d$QDAtZМ~!r'voDq0 oD^<*C VzJŐc9ș9qgvkرlV^ueW46ѭP_%tr\)^+0u:rKm#yup% #޼wX$DU?rD$oJpCA[ʽA03)V7K ޳#l»0<0|pgiip] Pƾk85䤈7Xx%Q6L RUnb~ iܖA˞4W+fD"g%~x$|E#e6T']T]%XQS9 )g~?Kr<,=v/pT W˵9xDP)Knb^3&3t--OG_1CM7u(Pk*Iy.$}DBz}4~_ϕ^Jd~i~<֩a䁌A0Be]~'*:PCLQ2=F =ǡmt G(f>;U!T u^t*P\^Owg΀4ycg&b48;zZw?bthVƗ;lR/߫dKRG 1 *!Г?UD$_=qΐ.-ի_8ɷhXJT HA$4\?P2k=;]^&)B0dYS.5Sµ64d*˨u۞ 2E2 N7=ˏl:ruy1؈.nVe9qM=X|s3$RQHoaM{Fdd:Zc5`ٌda9zR^xRXӄ7AtCd@ !Ne#=VӐL9B?#$b2j?{5zκ(0龌 )l4.-Y05W1 t V ]uyv ޗ~vWy( ^\tsFGÄtgGTS |ffL8Fy \@{1Gh,N*-U06JvND Xgl bkedc܌j1|ks<(eڍYR$]"y'K"d:II9aX?R&H[rwT@~c4bDcɣnDt&R߭ \&v)MSb@iΑ'*TͻZKɳxB>RO1GyU0gΚFͱxgv tӚQ6g&0C>GRAfxhc ˜uW9Xg2FWߙߩ]bVTζZW1hһ-s?5v $,ߞO ɘ||`V}f$*n<˩u$BIkA wK >@ 8#*L#yGy] ˋf׉\bb~YH~/׈s:|:ePJ/sFIX-upԸjfH̤f.z7{v] cIqdes.5e+/%Bh#֏<-Z3;IFQV[Jzd c x{G=:2'.uvi3zID2ZCvF:8{I@3EHh%ݹ{,_&ЯH#_Gw )&STbφC7 ĒO>K{lg'`j'=^pL=}X˪C([ :4 pp1ڂMuXj[f0ҝYf.E{9xiπtCPu*Qd桌c_z1VҧuLP@AgP?[4OmJ#/REbޗy* p;WΤc:G<|Y^ ū Tݽjߜݩ]Nc % 8U(e:SP^T>`ɠ/ʠ0?t=#4=hAO1LGİ |̉TqQ`t8f`J:4xxY%D9a%t^uVGG/,{dBILزfE]%L$Df`{Lm5M)u!sމa)KHK:u=~*c&s,xM5UyGNE;qP4G,a\o 5䑹l}Y\DhU`x*krRF\IˇN|Q{،+ ,G/F6&d?f:kn/evҬI*-TNrhcO{> ucGk34<IXcE 90ͥ9o5 C4nk 6ArbON@Q{(f\Crq;h~\ ]qZ\%y+sd>̿}GQN,|6MuxlnLҌ@À@r)S;KW{’hW$\6KB}>J]qѢx&n93KTJ|py2 %VPc|lcC[V8F2 [߂"2Zr$͋!UL/`!*4&]UX;Z2ݗ{&ly6TXax-#Eq44i_4>ԛ*-Aal-ʤ.BO-tBwjT%hy#ufRc8OY^껭< 擊_hT:\$XP8m+)HWh8436{ S:3[Y|G289D|M!.l+ObII@ 6&ZcLiT@o9I?QymHQuR ޻I95M7c&)FHδOE/4'YLu#C!@fPg4H}{TfB,OP,ֵ/'^+u?JH|TPho6LK>{'jXhY>6f$p2Z uO/t { @xofҐ{ʰ8K(H/nlLQglDК6퍲فHaJnݚ v.Kg{^H޽a?y5,*c@YSg޽H/1N)O0^yKS+~ݴp,|,_Ė֖o/z5TޠU|eд@}҂`)oQ"44PR^g9 PCBNNJl_}?[!8$!{.K9Ͽv`i1xRmXز&'Vq57ͩ]@C],)UJ(X\c|S^ʮ%6^d O9?]k 4mҞߓ`<-e 5aҫ]`SSip`E3 JG?ޘpF8B-j`UrM /24ڬBB^i @3pYU"!-JI𢃄U?X U{۱7N{9QVLveh`txsQ434?&;B/v}gGxWrզ_g#`JWgTؓPՒ`!w ]CM+yS:?Ugh>O'l(ښ?=)1ui@L,u[.i|js[~%YP%cLKVWS>8 Ǘ9R3b߱[8b 9>΃&/ѩyXRbHFq.QQW"&0S?9ȅ;/kAəpJJtYeqN:<ѯyP ,pgmneDG96v/-Vqwp_jmA/1ruę):M>9%UP=,#[4 9"H0F|WJlL\+'t'a9fp[!{k!lXf&P0o2,M'}湘\ ~OW'[i1/aDBp\{ʜ3Fgr7PZP9%o!q(*)ۿkāAđ׈ri }"Xkn LNC6M`ҺJTw!W7O:1pMsgVb9H^t{*8,Տ}f>xɻd! _$Y-9䌈63lY)˺BK~]`1&Za5 n }QDIQ9M#"AD&'ASdM{Z)E):%<$1/i;p5 4}?y"Xa3!yAˊ>ie};_fbB> xs6NNؘ<*Fz…7)gDžȱP / d;:8oPY)HVy;QC5z]V#i@g*C^ vJg N]V F, >dy[#ʎlwUZm,P۽q7.;8ܱCs8,*7PyFqr7POnƞ[3-vdى,4Q!?v~ BV3l <-+R2gɸ:5j Ld]X<]I:ô~24_m޼(GEwF Njk 8FD#V¢kx6Jw9~%b.Kh\Tw_)$jWF]gm[98Ţ#kB//O)=f`S,L)oԸZ]`pgCߕT$qfP{|9n1֔J xRwwoAnw/t>29%`0W{YTtHUj5O!xdin3 .^ϑNKU"5 -O\2Hjt&]^]V929 T4 ՌGT*(1uv9GC8'jR[0l7ڵ(5?T\K15VvQR&t 2ȶ&r bWa|n0^p l 5VXo⣜-ӧ5 ܻ+ 3q |VRյ>' @w"Čݬ;%6̭\Ybe?܀C4V"; 6 s_dȄ¹Cfut[gsO_CɊ˓TuPh0NЀ,㇍#j8=b>.B؃}QݢMh _I 4s ZEx-,ȓd;Km_97{GS-z il~ݟ9lk=l/( dLJ%"h}*D錎߯ӷ>^OoRab<&܍Dz0"čYa'Bꚜ,;no1Iyl`jrf o9`=g0MיXUj}d8>`-B_oXԆR/e*>^T s0]p(s!ԡnpce%8ai&z3J{k@DfidR/HI淿 ]C0i9 <xm;P: ̉v8^d'wuߖQ=NdjN;F- ;_Ad k4N4++g $:?l,QŅClrm!m~8 4nxҊ@x)LGqkX FBa9*|)7H: 78G "<}IHæ)P3di/0G,Jj :q69BvT V@-?NfThE}cAh\1bg;&/iG] l *kFCXj̈́cYrv0\\)/B]2]$xq5R~/= p7Kb\2Ւ٦y"8mj |D*O{WJ.T~OW5y.&^/(wIv5L3N+r +W87l&倲ɸQ0fZNY*N1?LϾ'g BY1uC-F YZ