python-defaults-debian/0000755000000000000000000000000013214346732012317 5ustar python-defaults-debian/.bzr/0000755000000000000000000000000012057417145013173 5ustar python-defaults-debian/.bzr/README0000644000000000000000000000022312057417140014043 0ustar This is a Bazaar control directory. Do not change any files in this directory. See http://bazaar.canonical.com/ for more information about Bazaar. python-defaults-debian/.bzr/branch/0000755000000000000000000000000013263113066014423 5ustar python-defaults-debian/.bzr/branch/branch.conf0000644000000000000000000000014312057417140016525 0ustar bound_location = bzr+ssh://doko@bzr.debian.org/bzr/pkg-python/python-defaults-debian/ bound = True python-defaults-debian/.bzr/branch/format0000644000000000000000000000004712057417140015637 0ustar Bazaar Branch Format 7 (needs bzr 1.6) python-defaults-debian/.bzr/branch/last-revision0000644000000000000000000000006413263113066017145 0ustar 441 doko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 python-defaults-debian/.bzr/branch/lock/0000755000000000000000000000000013263113066015353 5ustar python-defaults-debian/.bzr/branch/tags0000664000000000000000000000540612474363312015317 0ustar d8:2.6.5-1048:piotr@debian.org-20100725140021-mw3edly1636hbbuv8:2.6.5-1148:piotr@debian.org-20100728153820-75n2utk97t47qu868:2.6.5-1248:piotr@debian.org-20100806012316-c6w4omv8uzjol2g08:2.6.5-1348:piotr@debian.org-20100813204144-npw781jlzkzvkp6a7:2.6.5-247:doko@debian.org-20100617220338-eogx3ma9nupfn6jb7:2.6.5-348:piotr@debian.org-20100618093948-ai111gymkbkhx9i87:2.6.5-448:piotr@debian.org-20100621222817-pwrah8m6u4j01tub7:2.6.5-548:piotr@debian.org-20100622194019-jd236om5hx9itrh77:2.6.5-648:piotr@debian.org-20100711160448-9x1gdp17zl7u4ph37:2.6.5-748:piotr@debian.org-20100712174938-oouzot9gaws02h0y7:2.6.5-847:doko@debian.org-20100717111311-auqwi1370gflvv327:2.6.5-948:piotr@debian.org-20100719193800-dz0t5w3v4pbelish7:2.6.6-148:piotr@debian.org-20100831171745-2tte9237ui6ay8cg8:2.6.6-1048:piotr@debian.org-20110110220830-q0a1rebt5xlv8kee8:2.6.6-1148:piotr@debian.org-20110228193600-v8zf2geg1w0l7ort8:2.6.6-1251:scott@kitterman.com-20110321145302-e4bd14scajfsz7iw8:2.6.6-1351:scott@kitterman.com-20110321152524-08oczp49qqoi4nby8:2.6.6-1451:scott@kitterman.com-20110415125745-fkb9anh4fxfkycba7:2.6.6-248:piotr@debian.org-20100912165118-lm52bok3ad3zak3c7:2.6.6-348:piotr@debian.org-20100922211440-bm6rqz5c8l940ytz7:2.6.6-447:doko@debian.org-20101016102759-t6sbrgczdkek2n5e7:2.6.6-548:piotr@debian.org-20101017214447-uy27ema2uy09h2c27:2.6.6-648:piotr@debian.org-20101201184440-wa7ku1h1pad05tye7:2.6.6-848:piotr@debian.org-20101219135925-2b878mizmsozy3bl7:2.6.6-948:piotr@debian.org-20101219193551-dmmubf3txxrih28h7:2.7.2-151:scott@kitterman.com-20110601132454-imukt7d7ysbgcny88:2.7.2-1048:piotr@debian.org-20120124214806-evepdnluy2vvh7ny7:2.7.2-251:scott@kitterman.com-20110707050832-ul0z1yoixu0ycv887:2.7.2-451:scott@kitterman.com-20110727220457-mc8gp9inxf81485i7:2.7.2-551:scott@kitterman.com-20110810211508-uss1oub5k01ac7gd7:2.7.2-648:piotr@debian.org-20110924145221-13619jmdwtxy8gvv7:2.7.2-751:scott@kitterman.com-20111006204609-f81ymtictnht1xkq7:2.7.2-851:scott@kitterman.com-20111006210224-xrbt82213kopu07t7:2.7.2-948:piotr@debian.org-20111008152311-49wg7e0atkc9nb1x7:2.7.3-148:piotr@debian.org-20120630184213-bzo79njiqpvvmodm7:2.7.3-251:scott@kitterman.com-20120726222445-h7mzhbldpr2fm7sb7:2.7.3-348:piotr@debian.org-20110630213915-bz4n2st88ejvx63211:2.7.3~rc2-151:scott@kitterman.com-20120606030651-vlh9lf6opekflrwt7:2.7.5-348:piotr@debian.org-20130802065558-7ywpqglbyl0nrknj7:2.7.5-451:scott@kitterman.com-20130813043804-85vortokgsvip6qq7:2.7.5-548:piotr@debian.org-20130913204222-gsx417pyl9uu1wa67:2.7.6-251:scott@kitterman.com-20140521043921-q4jy6r0vn3djvytj7:2.7.8-151:scott@kitterman.com-20140711230636-huxrnvanr5d0mdqx7:2.7.8-251:scott@kitterman.com-20141024160532-z0pcd1j3rgry9r0y7:2.7.8-351:scott@kitterman.com-20150202213210-04ww69oocsfui1na7:2.7.8-448:barry@python.org-20150227230927-2ai8eqgedcdcrfi8epython-defaults-debian/.bzr/branch-format0000644000000000000000000000004312057417140015631 0ustar Bazaar-NG meta directory, format 1 python-defaults-debian/.bzr/branch-lock/0000755000000000000000000000000012057417140015351 5ustar python-defaults-debian/.bzr/checkout/0000755000000000000000000000000013161161453014773 5ustar python-defaults-debian/.bzr/checkout/conflicts0000644000000000000000000000003313161161453016676 0ustar BZR conflict list format 1 python-defaults-debian/.bzr/checkout/dirstate0000644000000000000000000013700413263113066016542 0ustar #bazaar dirstate flat format 3 crc32: 33634586 num_entries: 208 1doko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 0 tree_root-20100517105039-y43d08zy8mqpvu1t-1d0nAAAQAFoxzdpaMc3aAAD9AQEEFjsAAEHtd0ndoko@timbuktu-20100517105056-67f2qkiwcqja4z1w .bzrignorebzrignore-20151209122042-byd5ku9ufv2ngwz0-1fc83359a343cdc68440e2926965bd30a05cf23c29555nAAACK1oqbP5aKmz+AAD9AQEEFngAAIG0fc83359a343cdc68440e2926965bd30a05cf23c29555ndoko@ubuntu.com-20171208110014-38c4d4bm8fpl75pc Makefilemakefile-20100517110040-fit8b8o5se953kq1-1f8977372ad1aba1e704228faaad908ca4e57866f62119nAAAIR1PxsvtZxsXVAAD9AQEEFm8AAIGkf8977372ad1aba1e704228faaad908ca4e57866f62119nscott@kitterman.com-20140711205811-y1r66spjgoisyc2f README.derivativesreadme.derivatives-20100902175855-mhhf4gr4qi9mejd4-1fa34337e724540ea71a796b2ae6f8fd8ecf9881e01502nAAAF3lC+HmVZxsXVAAD9AQEEFk4AAIGkfa34337e724540ea71a796b2ae6f8fd8ecf9881e01502npiotr@debian.org-20120604203157-u93jqyk2licn12vb autoscriptsautoscripts-20100517110040-fit8b8o5se953kq1-2d0nAAAQAFoqZLZaKmS2AAD9AQEIS6oAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d debiandebian-20100517105043-iufg1bsvzkpqi1f2-1d0nAAAQAFrMlhhazJYYAAD9AQEIS64AAEHtd0ndoko@timbuktu-20100517105056-67f2qkiwcqja4z1w debpythondebpython-20100517110040-fit8b8o5se953kq1-3d0nAAAQAFhW9QpZxsXVAAD9AQEEFj0AAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d dh_python2dh_python-20100517110040-fit8b8o5se953kq1-4fb9e67e946cb6d33893a2af4fa49c31670941103531075yAAB5Y1nE4ytZxsXVAAD9AQEEFjwAAIHtfb9e67e946cb6d33893a2af4fa49c31670941103531075ypiotr@debian.org-20140818211345-p50q94xh6eml43gk dh_python2.1dh_python2.1-20140711205827-sbydz8w9yofbhmx2-1f054a0c5a0fe34ba6224caddf41dc66acee15129a9095nAAAjh1PxsvtZxsXVAAD9AQEEFncAAIG0f054a0c5a0fe34ba6224caddf41dc66acee15129a9095nscott@kitterman.com-20140711205912-v9it84p2lmf7qj8n dh_python2.pydh_python2.sh-20130702211350-2h0c2gtkcllwours-1fb071e9c0314069a442d04e711a9f562657a92dc41056yAAAEIFKzJhlZxsXVAAD9AQEEFnMAAIHtfb071e9c0314069a442d04e711a9f562657a92dc41056ypiotr@debian.org-20130912210948-gvruu5cwc7gtxt12 dh_python2.rstdh_python2.rst-20110206194734-wb74wtb2vbs2w4fl-1fff698ab1647370e6d569fcdd0753e884d79dbd6a7807nAAAef1GwjEBZxsXVAAD9AQEEFnQAAIGkfff698ab1647370e6d569fcdd0753e884d79dbd6a7807ndoko@ubuntu.com-20130606133630-op8opswqp0j3w7ng faqfaq-20100517105043-iufg1bsvzkpqi1f2-2d0nAAAQAFZoHUxZxsXVAAD9AQEMVPYAAEHtd0ndoko@timbuktu-20100517105056-67f2qkiwcqja4z1w pycleanpyclean-20100517110040-fit8b8o5se953kq1-5fa58a654615f5d7d444bc40f9094896f3b1545bb84124yAAAQHFnE4jpZxsXVAAD9AQEEFnYAAIHtfa58a654615f5d7d444bc40f9094896f3b1545bb84124ydoko@ubuntu.com-20170922102408-5x2wb40bp8lk3acq pyclean.1pyclean.1-20140711205840-l154rn4taxgh8p5g-1fa1b1f69d05a7bedebdeeac536ab410155a8aecf01330nAAAFMlPxsvtZxsXVAAD9AQEEFnIAAIG0fa1b1f69d05a7bedebdeeac536ab410155a8aecf01330nscott@kitterman.com-20140711205912-v9it84p2lmf7qj8n pyclean.rstpyclean.rst-20110206200014-k3hyxutygi3mgu6b-1fa3821ae81ebc417bb3df46ebc22efc5276e5a989532nAAACFFKzJhlZxsXVAAD9AQEEFnEAAIGkfa3821ae81ebc417bb3df46ebc22efc5276e5a989532npiotr@debian.org-20130913204019-4x04ht7yhi99k7bx pycompilepycompile-20100517110040-fit8b8o5se953kq1-6fc1983dee0505506dedf125156afee33a166dbbae11895yAAAud1nE4kFZxsXVAAD9AQEEFnAAAIHtfc1983dee0505506dedf125156afee33a166dbbae11895ydoko@ubuntu.com-20170922102408-5x2wb40bp8lk3acq pycompile.1pycompile.1-20140711205849-p7e2td1rxjf0velm-1f5a541498984577d4a88fecf64f3824ee2e7b2f322390nAAAJVlPxsvtZxsXVAAD9AQEEFnUAAIG0f5a541498984577d4a88fecf64f3824ee2e7b2f322390nscott@kitterman.com-20140711205912-v9it84p2lmf7qj8n pycompile.rstpycompile.rst-20110206200020-s2i57z54y6g06c1s-1fa83150148bcd6afd485a5bd87c10bed0eedcfd481435nAAAFm1KzJhlZxsXVAAD9AQEEFk8AAIGkfa83150148bcd6afd485a5bd87c10bed0eedcfd481435npiotr@debian.org-20130913204019-4x04ht7yhi99k7bx pydistpydist-20100902180136-waghma49xnzxulcb-1d0nAAAQAFPxsvtZxsXVAAD9AQEEFkcAAEHtd0npiotr@debian.org-20100902203907-o10fpqatf4mx1izv python2.pmdh_python2.pm-20100614213844-kifmjo6370efsqac-1f6aa189f32e99793cd9cd7df60a626e236722fdcb231nAAAA51C+HmVZxsXVAAD9AQEEFlAAAIGkf6aa189f32e99793cd9cd7df60a626e236722fdcb231npiotr@debian.org-20120628100136-czs12o06uo5kp9es runtime.druntime.d-20100517110040-fit8b8o5se953kq1-7d0nAAAQAFC+HmVZxsXVAAD9AQEIS9UAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d teststests-20100517110040-fit8b8o5se953kq1-8d0nAAAQAFKzJhlZxsX+AAD9AQEEFlEAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d autoscriptspostinst-pycompilepostinstpycompile-20100517110040-fit8b8o5se953kq1-9f8a62e6e21da7364240bf391522a5cdabb897995a75nAAAAS1C+HmVZxsXVAAD9AQEIS60AAIGkf8a62e6e21da7364240bf391522a5cdabb897995a75npiotr@debian.org-20100617214513-lcvotmvjow31h7i5 autoscriptspreinst-pycentral-cleanpreinstpycentralclea-20100627114548-81fsbjypr53rqqwl-1fa69453d00b49cad058ded6e9aaed77b47ef92c4c233nAAAA6VC+HmVZxsXVAAD9AQEIS6wAAIGkfa69453d00b49cad058ded6e9aaed77b47ef92c4c233npiotr@debian.org-20100702133544-pgjw1264yxzvieoe autoscriptsprerm-pycleanprermpyclean-20100517110040-fit8b8o5se953kq1-10f2d4d5caf9ae9bba07535b8540454c91dad30f211173nAAAArVoqZLNaKmSzAAD9AQEIRzcAAIGkf2d4d5caf9ae9bba07535b8540454c91dad30f211173ndoko@ubuntu.com-20171208101348-pab5mgpg8pj1imhh debianREADME.Debianreadme.debian-20100517105043-iufg1bsvzkpqi1f2-4fc721bb46b72f2b9f236f6ae8c90bbb78d257e1a2462nAAABzloqZW1aKmVtAAD9AQEIRzgAAIGkfc721bb46b72f2b9f236f6ae8c90bbb78d257e1a2462ndoko@ubuntu.com-20171208101348-pab5mgpg8pj1imhh debianchangelogchangelog-20100517105043-iufg1bsvzkpqi1f2-6f0ebd8a49b460c8c41c260a18e2fa6c5555f6730b51922nAADK0lrMlfJazJXyAAD9AQEIRzQAAIGkf0ebd8a49b460c8c41c260a18e2fa6c5555f6730b51922ndoko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 debianchunk.xslchunk.xsl-20170901062834-kfut8h96lk0brf6x-1fcf90391dd92d3bab38cb76c4066712c16a30dbf2769nAAADAVmo/gRZxsXVAAD9AQEIS8IAAIG0fcf90391dd92d3bab38cb76c4066712c16a30dbf2769ndoko@ubuntu.com-20170901062949-1x83irtzc9gdp6ux debiancompatcompat-20100517105043-iufg1bsvzkpqi1f2-7fb6abd567fa79cbe0196d093a067271361dc6ca8b2nAAAAAlhW+8NZxsXVAAD9AQEIS9QAAIGkfb6abd567fa79cbe0196d093a067271361dc6ca8b2ndoko@ubuntu.com-20161218211532-ip1618r6l38eac5a debiancontrolcontrol-20100517105043-iufg1bsvzkpqi1f2-8f428dbc98b95f6a2a33ebb1fda60ad45da16b80d08528nAAAhUFrMlhFazJYRAAD9AQEIaP8AAIG0f428dbc98b95f6a2a33ebb1fda60ad45da16b80d08528ndoko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 debiancontrol.incontrol.in-20100517105043-iufg1bsvzkpqi1f2-9fe15d1328759e03fa72b8ac7106e4d75d1704d5458491nAAAhK1rMlgNazJYDAAD9AQEIc5wAAIGkfe15d1328759e03fa72b8ac7106e4d75d1704d5458491ndoko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 debiancopyrightcopyright-20100517105043-iufg1bsvzkpqi1f2-10f320502413a4992fb71d0f621c235a250d5f0854215962nAAA+WlC+HmVZxsXVAAD9AQEIS78AAIGkf320502413a4992fb71d0f621c235a250d5f0854215962nscott@kitterman.com-20110415044837-1cix0kn5qyu5sfso debiandebian_defaultsdebian_defaults-20100517105214-sedesxerk4bf6eo7-1f055b414a6d0b337d2dcd0f9b601cd418c07f065f343nAAABV1GG+lRZxsXVAAD9AQEIS7EAAIGkf055b414a6d0b337d2dcd0f9b601cd418c07f065f343ndoko@ubuntu.com-20130515200716-wnw0v00j9rp0zarg debianhtml.xslhtml.xsl-20170901062834-kfut8h96lk0brf6x-2f8233bf41a566c0b6827659b2360c4839dfa45bab495nAAAB71mo/gRZxsXVAAD9AQEIS9EAAIG0f8233bf41a566c0b6827659b2360c4839dfa45bab495ndoko@ubuntu.com-20170901062949-1x83irtzc9gdp6ux debianidle.1idle.1-20100517105802-2v59et21wtovr2kc-1f12907376133727a492704f0a533280260fe029bf2524nAAAJ3FC+HmVZxsXVAAD9AQEIS8kAAIGkf12907376133727a492704f0a533280260fe029bf2524npiotr@debian.org-20100711152731-wc90x1nawtybny6o debianidle.pyidle.py-20100517105802-2v59et21wtovr2kc-4f143fb08ccd7673191b010d1f7839c7b38b4684a091yAAAAW1C+HmVZxsXVAAD9AQEIS7cAAIHtf143fb08ccd7673191b010d1f7839c7b38b4684a091ydoko@timbuktu-20100517105806-75l3swei83qy8i9r debianidle2.desktopidle.desktop-20100517105802-2v59et21wtovr2kc-2f9e0e6d1e0168e0d85e0d947105ff4f89124c43e5219nAAAA21Gwj7BZxsXVAAD9AQEIS8AAAIGkf9e0e6d1e0168e0d85e0d947105ff4f89124c43e5219ndoko@ubuntu.com-20170923081542-x4ktx039htv10swx debianidle2.lintian-overridesidle.lintianoverride-20130606133453-6k6xs20j89qxndhi-1fc1c68393b3282bc1f93314034f160a195068912e199nAAAAx1oqa3laKmt5AAD9AQEIS8gAAIGkfc1c68393b3282bc1f93314034f160a195068912e199ndoko@ubuntu.com-20171208110014-38c4d4bm8fpl75pc debianlibpython-all-dbg.postinstlibpythonalldbg.post-20130813043731-4jq7hdne5sicf18z-1ff7d7a3d1a61ce2e2b95b6ba13592e7b40f074e5d188nAAAAvFKzJhlZxsXVAAD9AQEIS9IAAIGkff7d7a3d1a61ce2e2b95b6ba13592e7b40f074e5d188nscott@kitterman.com-20130813043804-85vortokgsvip6qq debianpython-dev.dirspythondev.dirs-20100517110040-fit8b8o5se953kq1-11f80d09a51fca49b2158e0ddce906e55ffa4e7a7059nAAAACVC+HmVZxsXVAAD9AQEIS74AAIGkf80d09a51fca49b2158e0ddce906e55ffa4e7a7059npiotr@debian.org-20100616210548-v2avwfbd7628vu6v debianpython-doc.docspythondoc.docs-20100727192625-fm5w6oxw1i5i5da1-1f02c8ce7c81ae6a6a5996b29216b80723df10fa3322nAAAAFlC+HmVZxsXVAAD9AQEIS7oAAIGkf02c8ce7c81ae6a6a5996b29216b80723df10fa3322npiotr@debian.org-20100902203907-o10fpqatf4mx1izv debianpython-minimal.dirspythonminimal.dirs-20100517110040-fit8b8o5se953kq1-12f80d09a51fca49b2158e0ddce906e55ffa4e7a7059nAAAACVC+HmVZxsXVAAD9AQEIS8UAAIGkf80d09a51fca49b2158e0ddce906e55ffa4e7a7059ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d debianpython-minimal.manpagespythonminimal.manpag-20100806004934-xuhat4wfn4b83nou-2f6fe53dc4aef957c7dd92ecb426051145c4df6e6422nAAAAFlC+HmVZxsXVAAD9AQEIS84AAIGkf6fe53dc4aef957c7dd92ecb426051145c4df6e6422npiotr@debian.org-20100806012316-c6w4omv8uzjol2g0 debianpython-minimal.postinst.inpythonminimal.postin-20100621172725-wqle13q3m8uabpqd-1f133a6d01b3d1959bdc3518a60fdc4bec03de8b1188nAAAAWFC+HmVZxsXVAAD9AQEIS9AAAIGkf133a6d01b3d1959bdc3518a60fdc4bec03de8b1188npiotr@debian.org-20100909185647-up5rolezqv4l87xw debianpython-minimal.prermpythonminimal.prerm-20100621172727-rvmi8uxth6a7h12l-1f75f33a07b845aaa9dc8a99d8c0205c17efe419e081nAAAAUVC+HmVZxsXVAAD9AQEIS8wAAIGkf75f33a07b845aaa9dc8a99d8c0205c17efe419e081npiotr@debian.org-20100711154532-9zyt65w4rmajbfo2 debianpython-policy.dbkpythonpolicy.dbk-20170901062749-hnbwq89bh5ybxvum-1f5946350a52a63aa29783e8627f2134867968596348528nAAC9kFmo/dNZxsXVAAD9AQEIS8MAAIG0f5946350a52a63aa29783e8627f2134867968596348528ndoko@ubuntu.com-20170901062949-1x83irtzc9gdp6ux debianpython.desktoppython.desktop-20100517105043-iufg1bsvzkpqi1f2-12f2bc925e45053885d8514b9b905846921788f4c9f135nAAAAh1C+HmVZxsXVAAD9AQEIS7kAAIGkf2bc925e45053885d8514b9b905846921788f4c9f135ndoko@timbuktu-20100517110027-8mbsk4jx2gw4r6bd debianpython.doc-base.python-policypython.docbase.pytho-20100517105043-iufg1bsvzkpqi1f2-13fabf9d244d93e231c1cf0498d5f079e23913e2517626nAAACclmo/gRZxsXVAAD9AQEIS8YAAIGkfabf9d244d93e231c1cf0498d5f079e23913e2517626ndoko@ubuntu.com-20170901062949-1x83irtzc9gdp6ux debianpython.installpython.install-20100902214128-du79e45ls8g3nrc6-1f04faa0be0a68ecd4c512728c4abd92f1e4a6473740nAAAAKFC+HmVZxsXVAAD9AQEIS8cAAIGkf04faa0be0a68ecd4c512728c4abd92f1e4a6473740npiotr@debian.org-20100907180451-d9nwdpvrk2ydrt89 debianpython.lintian-overridespython.lintianoverri-20100618090233-az2pqwi9c21j48jn-1f51949e6f03448f282cb59d0b02688af933461756216nAAAA2FZoG7VZxsXVAAD9AQEIS68AAIGkf51949e6f03448f282cb59d0b02688af933461756216ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb debianpython.manpagespython.manpages-20100806004934-xuhat4wfn4b83nou-1f2f3edc7ebebf4820e95bbe9b12c0be8b7a9b732313nAAAADVC+HmVZxsXVAAD9AQEIS8QAAIGkf2f3edc7ebebf4820e95bbe9b12c0be8b7a9b732313npiotr@debian.org-20100806012316-c6w4omv8uzjol2g0 debianpython.mkpython.mk-20100517105935-91667ef94je9aj6g-1fce3e71ff0a11eeb7b60cc349d546d5583ec0a3a52157nAAAIbVC+HmVZxsXVAAD9AQEIS88AAIGkfce3e71ff0a11eeb7b60cc349d546d5583ec0a3a52157npiotr@debian.org-20110327154239-pxb9nf2j3mg3r5wb debianpython.postinst.inpython.postinst.in-20100517105748-4rxd4ukmnj9mi01y-1ffae972c26807bf94241b6282bc8b590a930521a84817nAAAS0VC+HmVZxsXVAAD9AQEIS8EAAIGkffae972c26807bf94241b6282bc8b590a930521a84817nscott@kitterman.com-20110927163243-9010qb4h0syx1v4t debianpython.postrm.inpython.postrm.in-20100517105748-4rxd4ukmnj9mi01y-2fcc4b7d67ef8b403ba175a9935e49178f9abb092581nAAAAUVEnOMRZxsXVAAD9AQEIS7sAAIGkfcc4b7d67ef8b403ba175a9935e49178f9abb092581nscott@kitterman.com-20130208213447-we72o1o4jx27uywh debianpython.preinst.inpython.preinst.in-20100517105748-4rxd4ukmnj9mi01y-3f5deadc582f7e52f1cc5266e5a07997845258dd072289nAAAI8VC+HmVZxsXVAAD9AQEIS80AAIGkf5deadc582f7e52f1cc5266e5a07997845258dd072289nscott@kitterman.com-20110531114859-krtfbxfuda1dvost debianpython.prerm.inpython.prerm.in-20100517105748-4rxd4ukmnj9mi01y-4fefa295e53ff3b2155812397cb7e3dcc664a08267105nAAAAaVEnOMRZxsXVAAD9AQEIS7gAAIGkfefa295e53ff3b2155812397cb7e3dcc664a08267105nscott@kitterman.com-20130208213447-we72o1o4jx27uywh debianpyversionspyversions-20100517105716-28f040anqtdkqx0w-5f1156bcfc5040637ff041b7e86a365a9ee755781a106yAAAAalnE411ZxsXVAAD9AQEIS7AAAIHtf1156bcfc5040637ff041b7e86a365a9ee755781a106ydoko@ubuntu.com-20170922102408-5x2wb40bp8lk3acq debianpyversions.1pyversions.1-20100517105214-sedesxerk4bf6eo7-6f91cdacb60095451cf8a65f3861fd08ba31fe45cc1196nAAAErFC+HmVZxsXVAAD9AQEIS9MAAIGkf91cdacb60095451cf8a65f3861fd08ba31fe45cc1196ndoko@timbuktu-20100517105906-klz9g6zy1w31tvwn debianpyversions.pypyversions.py-20100517105214-sedesxerk4bf6eo7-7f58530bf3292b25e5eeb8450ed7caff19a988d06315106nAAA7AlPxsvtZxsXVAAD9AQEIS7IAAIGkf58530bf3292b25e5eeb8450ed7caff19a988d06315106nscott@kitterman.com-20140711203806-sdsjjchzvhq5zh8o debianrulesrules-20100517105043-iufg1bsvzkpqi1f2-15f9152718baefc544ce07262fc3306049c09a9e28a12984yAAAyuFoxrDBaMawwAAD9AQEITtUAAIHtf9152718baefc544ce07262fc3306049c09a9e28a12984ydoko@ubuntu.com-20180410104710-9rkhcvgn9etfyr04 debiansource.lintian-overridessource.lintianoverri-20100618085318-jtc52ojwaoby08xq-1f1baf0574d80724294d4adacaf41af0cba730658a560nAAACMFoqaedaKmnnAAD9AQEIS7wAAIGkf1baf0574d80724294d4adacaf41af0cba730658a560ndoko@ubuntu.com-20171208110014-38c4d4bm8fpl75pc debianvalgrind-python.suppvalgrindpython.supp-20100517105107-ey2042bv55gohtgg-1fd2510ba817bd02352e7f43644e2dc8882d5556c27909nAAAe5Vcwfe5ZxsXVAAD9AQEIS7QAAIGkfd2510ba817bd02352e7f43644e2dc8882d5556c27909ndoko@ubuntu.com-20160509121104-b92l7ck8m5ce53ua debpython__init__.py__init__.py-20100517110040-fit8b8o5se953kq1-13fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEEFkQAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d debpythondebhelper.pydebhelper.py-20100517110040-fit8b8o5se953kq1-14fccc5eddb517e118bcd91cba2d6996d94cbea921f8830nAAAiflC+HmVZxsXVAAD9AQEEFkEAAIGkfccc5eddb517e118bcd91cba2d6996d94cbea921f8830npiotr@debian.org-20120630123333-irll2npxnehe45d2 debpythondepends.pydepends.py-20100710212524-6ysklowo8vnjdlm8-1f8db0b295b0823c0040fcdc54a65549ced8d9b1d77210nAAAcKlhW9QpZxsXVAAD9AQEEFkMAAIGkf8db0b295b0823c0040fcdc54a65549ced8d9b1d77210nscott@kitterman.com-20161112194630-tyuocf14ivkgx1nb debpythonfiles.pyfiles.py-20110410224046-nenw6wt5fl5ditno-1fd2d29723091ea24dfe7f1a4cab1900a82ec682903054nAAAL7lC+HmVZxsXVAAD9AQEEFkIAAIGkfd2d29723091ea24dfe7f1a4cab1900a82ec682903054npiotr@debian.org-20120630123333-irll2npxnehe45d2 debpythonnamespace.pynamespace.py-20110410193311-6a76dnfjv9v5nr2g-1f80381d10d7bf0b8d68f0107514b63460b96ea5136101nAAAX1VC+HmVZxsXVAAD9AQEEFkYAAIGkf80381d10d7bf0b8d68f0107514b63460b96ea5136101npiotr@debian.org-20120630123333-irll2npxnehe45d2 debpythonoption.pyoption.py-20100517110040-fit8b8o5se953kq1-15fa80bf7e64e580199e50c9d87c8052ebfd80802a01886nAAAHXlC+HmVZxsXVAAD9AQEEFj4AAIGkfa80bf7e64e580199e50c9d87c8052ebfd80802a01886npiotr@debian.org-20120630123333-irll2npxnehe45d2 debpythonpydist.pypydist.py-20100531215505-9yp0w78gl7u1ethk-1f532cf6d34c8475c292f7a3429734ed0ed89a0f8b10408nAAAoqFPxsvtZxsXVAAD9AQEEFj8AAIGkf532cf6d34c8475c292f7a3429734ed0ed89a0f8b10408nscott@kitterman.com-20140707064810-q9afeypghf5j08m3 debpythontools.pytools.py-20100517110040-fit8b8o5se953kq1-16f5c2ddee6bcac5af8213a3a2121fabec66e2d118a10133nAAAnlVC+HmVZxsXVAAD9AQEEFkUAAIGkf5c2ddee6bcac5af8213a3a2121fabec66e2d118a10133npiotr@debian.org-20121021210539-ksaqkmcbr0mhj486 debpythonversion.pyversion.py-20100517110040-fit8b8o5se953kq1-17fac23dfd7ded59014c3a2b6f27636b309efce40129749nAAAmFVKzJhlZxsXVAAD9AQEEFkAAAIGkfac23dfd7ded59014c3a2b6f27636b309efce40129749npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 faqFAQ.htfaq.ht-20100517105043-iufg1bsvzkpqi1f2-16f75d464f70344ec6a0581b7e17aaaa8cbebb30aee661nAAAClVC+HmVZxsXVAAD9AQEMVP8AAIGkf75d464f70344ec6a0581b7e17aaaa8cbebb30aee661ndoko@timbuktu-20100517105906-klz9g6zy1w31tvwn faqFAQ.htmlfaq.html-20140711210756-ksiy0nhu6x6gxzv3-2fbb25feba00f91462926fde0dbbd57dfd431ea7f48372nAAAgtFZoHUtZxsXVAAD9AQEMVQYAAIG0fbb25feba00f91462926fde0dbbd57dfd431ea7f48372ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqextending.htextending.ht-20100517105043-iufg1bsvzkpqi1f2-17fe7a3ef05188437ee07a53a2e5516bfaa4fcf7d5418362nAABHulC+HmVZxsXVAAD9AQEMVPkAAIGkfe7a3ef05188437ee07a53a2e5516bfaa4fcf7d5418362ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqextending.htmlextending.html-20140711210756-ksiy0nhu6x6gxzv3-1fc6bf607f6549796f78119e7590178ea4224d66d334861nAACILVZoHUtZxsXVAAD9AQEMVPwAAIG0fc6bf607f6549796f78119e7590178ea4224d66d334861ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqgeneral.htgeneral.ht-20100517105043-iufg1bsvzkpqi1f2-18f031979956c412a34e4ca052f6ffcad8f7b12b3ed62109nAADynVC+HmVZxsXVAAD9AQEMVPoAAIGkf031979956c412a34e4ca052f6ffcad8f7b12b3ed62109ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqgeneral.htmlgeneral.html-20140711210756-ksiy0nhu6x6gxzv3-3fdf8de88479a351b4cc301bff65224f68946534d692456nAAFpKFZoHUtZxsXVAAD9AQEMVPsAAIG0fdf8de88479a351b4cc301bff65224f68946534d692456ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqgui.htgui.ht-20100517105043-iufg1bsvzkpqi1f2-19f960514da2a9c24786ccdcf406ce71c30cdc00ea16187nAAAYK1C+HmVZxsXVAAD9AQEMVPgAAIGkf960514da2a9c24786ccdcf406ce71c30cdc00ea16187ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqgui.htmlgui.html-20140711210756-ksiy0nhu6x6gxzv3-4f165a9f56933d75fc88e0ea38856d1f60f933548518084nAABGpFZoHUtZxsXVAAD9AQEMVQUAAIG0f165a9f56933d75fc88e0ea38856d1f60f933548518084ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqinstalled.htinstalled.ht-20100517105043-iufg1bsvzkpqi1f2-20f0215a1623179757ab88d48ed336b06598a89bf4d2523nAAAJ21C+HmVZxsXVAAD9AQEMVPcAAIGkf0215a1623179757ab88d48ed336b06598a89bf4d2523ndoko@timbuktu-20100517105056-67f2qkiwcqja4z1w faqinstalled.htmlinstalled.html-20140711210756-ksiy0nhu6x6gxzv3-5f38e3a42b3d4dae9158a1f7c862cba353bc1bd40510067nAAAnU1ZoHUtZxsXVAAD9AQEMVQIAAIG0f38e3a42b3d4dae9158a1f7c862cba353bc1bd40510067ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqlibrary.htlibrary.ht-20100517105043-iufg1bsvzkpqi1f2-21f9cfb338b10d065014e8981d13d669529c3e792ad34352nAACGMFC+HmVZxsXVAAD9AQEMVQAAAIGkf9cfb338b10d065014e8981d13d669529c3e792ad34352ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqlibrary.htmllibrary.html-20140711210756-ksiy0nhu6x6gxzv3-6fa920367c88e9f0fe2b8b56a8efa15f760365016558526nAADknlZoHUxZxsXVAAD9AQEMVP0AAIG0fa920367c88e9f0fe2b8b56a8efa15f760365016558526ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqprogramming.htprogramming.ht-20100517105043-iufg1bsvzkpqi1f2-22f453de3ffd21138d7a3edcf96e8a994e1d6ce028f64985nAAD92VC+HmVZxsXVAAD9AQEMVQMAAIGkf453de3ffd21138d7a3edcf96e8a994e1d6ce028f64985ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqprogramming.htmlprogramming.html-20140711210756-ksiy0nhu6x6gxzv3-7ffbe0c7e32e94f8dc88779009f9426b43cf97e72d102402nAAGQAlZoHUxZxsXVAAD9AQEMVQEAAIG0ffbe0c7e32e94f8dc88779009f9426b43cf97e72d102402ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb faqwindows.htwindows.ht-20100517105043-iufg1bsvzkpqi1f2-23f38e5b4fa585b2fb1a43aebcc5a5f02c84a77411a24862nAABhHlC+HmVZxsXVAAD9AQEMVQQAAIGkf38e5b4fa585b2fb1a43aebcc5a5f02c84a77411a24862ndoko@timbuktu-20100517105822-79lzq8xyizc9kli5 faqwindows.htmlwindows.html-20140711210756-ksiy0nhu6x6gxzv3-8f0c5e61afe84c6736054c1eb42327b8c37c566fef41623nAACil1ZoHUxZxsXVAAD9AQEMVP4AAIG0f0c5e61afe84c6736054c1eb42327b8c37c566fef41623ndoko@ubuntu.com-20151209122706-7h8kwj3copkasuxb pydistMakefilemakefile-20100902180136-waghma49xnzxulcb-2f2168b38281ccd9258c2e418d8d4bc62d9c9555f9165nAAAApVPxsvtZxsXVAAD9AQEEFksAAIGkf2168b38281ccd9258c2e418d8d4bc62d9c9555f9165nscott@kitterman.com-20140711225741-5okv13tq3s8qf51s pydistREADME.PyDistreadme.pydist-20100727192617-fmja6a3s7tes6j9s-1f7b115a0007bf0ca6cc83a4909a8b98061dfdf3ff1900nAAAHbFC+HmVZxsXVAAD9AQEEFkgAAIGkf7b115a0007bf0ca6cc83a4909a8b98061dfdf3ff1900npiotr@debian.org-20100909174035-b6fkwz370ixiu5lq pydistREADME.PyDist.htmlreadme.pydist.html-20140711230509-ut1b3i0k0qjykkk5-1f5a90abfc8065be60cc4fff03718c2eeda6fd4de410278nAAAoJlPxsvtZxsXVAAD9AQEEFkkAAIG0f5a90abfc8065be60cc4fff03718c2eeda6fd4de410278nscott@kitterman.com-20140711230531-ozf2sn23vsyeqamr pydistdist_fallbackdist_fallback-20100902202317-m97gu35sfniegksa-1f196ecf7435812c07e3adae71a57dae5f8d10eca016753nAABBcVC+HmVZxsXVAAD9AQEEFkoAAIGkf196ecf7435812c07e3adae71a57dae5f8d10eca016753npiotr@debian.org-20121021213101-aabh8oo7hb9qy67w pydistgenerate_fallback_list.pygenerate_fallback_li-20100902202317-m97gu35sfniegksa-2f5b2f95a989abdc7e0e14448972f3ff3bcc9300a93114yAAAMKlC+HmVZxsXVAAD9AQEEFk0AAIHtf5b2f95a989abdc7e0e14448972f3ff3bcc9300a93114ypiotr@debian.org-20120706210934-anjvosdfqz2yc1bh pydistsources.listsources.list-20100902202317-m97gu35sfniegksa-3feb466ce2ae2c7d61451096b64ce14afc7b0b1e67100nAAAAZFC+HmVZxsXVAAD9AQEEFkwAAIGkfeb466ce2ae2c7d61451096b64ce14afc7b0b1e67100npiotr@debian.org-20100902203907-o10fpqatf4mx1izv runtime.dpublic_modules.rtinstallpublic_modules.rtins-20100517110040-fit8b8o5se953kq1-18f83107e6ec91a03a7dbc5c0366b11ae33f3e3b4be375yAAABd1C+HmVZxsXVAAD9AQEIS9YAAIHtf83107e6ec91a03a7dbc5c0366b11ae33f3e3b4be375ydoko@debian.org-20101212172809-qqm409jehpt71289 runtime.dpublic_modules.rtremovepublic_modules.rtrem-20100517110040-fit8b8o5se953kq1-19fe88e55913e7c345b8a6194be57d45974928ae062316yAAABPFC+HmVZxsXVAAD9AQEIS9cAAIHtfe88e55913e7c345b8a6194be57d45974928ae062316ydoko@debian.org-20101212172809-qqm409jehpt71289 testsMakefilemakefile-20100517110040-fit8b8o5se953kq1-20f3633b0e135de33c0d34feafebb756e6508261ccc354nAAABYlC+HmVZxsXVAAD9AQEEFm0AAIGkf3633b0e135de33c0d34feafebb756e6508261ccc354npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 testscommon.mkcommon.mk-20120628095038-suy5qe3v6btdhblo-1f0090aa76c564367ee91e372e2784465a84a7fb10378nAAABelKzJhlZxsXVAAD9AQEEFm4AAIGkf0090aa76c564367ee91e372e2784465a84a7fb10378npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 testst1t1-20100517110040-fit8b8o5se953kq1-21d0nAAAQAFKzJhlZxsX+AAD9AQEGFuAAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d testst2t2-20101130223752-kq0n36hbrcvizqo7-1d0nAAAQAFKzJhlZxsXVAAD9AQEGFwYAAEHtd0npiotr@debian.org-20101130223846-74n8smiou1dnun4p testst3t3-20101219192713-0mgkfey87gxazedt-1d0nAAAQAFC+HmVZxsXVAAD9AQEEFlIAAEHtd0npiotr@debian.org-20101219193551-dmmubf3txxrih28h testst4t4-20110217190548-xm1cacy4upwz600f-1d0nAAAQAFKzJhlZxsXVAAD9AQEIS5sAAEHtd0npiotr@debian.org-20110217190658-b81xebttrqsf1j6b testst5t5-20110410193454-onrfyk73ftifykbg-1d0nAAAQAFC+HmVZxsXVAAD9AQEEFmIAAEHtd0npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv testst6t6-20111008151613-hf5fmj34w4ofi4gj-1d0nAAAQAFKzJhlZxsXVAAD9AQEGFxUAAEHtd0npiotr@debian.org-20111008151657-ugabetun1e9e1odr testst7t7-20120610122018-1hnxb9u0z06jbg5q-1d0nAAAQAFC+HmVZxsXVAAD9AQEGFvYAAEHtd0npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t1Makefilemakefile-20101128200908-9yq3f0i87ki3zvaj-1fda0b990f77d818346f39c88d84e563ad29df595f733nAAAC3VKzJhlZxsXVAAD9AQEGFuEAAIGkfda0b990f77d818346f39c88d84e563ad29df595f733npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 tests/t1debiandebian-20100517110040-fit8b8o5se953kq1-22d0nAAAQAFC+HmVZxsXVAAD9AQEGFuIAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1liblib-20100517110040-fit8b8o5se953kq1-23d0nAAAQAFC+HmVZxsX+AAD9AQEGFu4AAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1setup.pysetup.py-20100517110040-fit8b8o5se953kq1-24f1bf68dfa94bf06abdf6e1629aa1fee7a2e124005606nAAACXlC+HmVZxsXVAAD9AQEGFvUAAIGkf1bf68dfa94bf06abdf6e1629aa1fee7a2e124005606npiotr@debian.org-20100907193930-z2yyi34qrcvmtoy1 tests/t1/debianchangelogchangelog-20100517110040-fit8b8o5se953kq1-25f18e62e5a9c869f6b8a39131757d029c655046a64129nAAAAgVC+HmVZxsXVAAD9AQEGFuYAAIGkf18e62e5a9c869f6b8a39131757d029c655046a64129ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/debiancompatcompat-20100517110040-fit8b8o5se953kq1-26fd3964f9dad9f60363c81b688324d95b4ec7c80382nAAAAAlC+HmVZxsXVAAD9AQEGFu0AAIGkfd3964f9dad9f60363c81b688324d95b4ec7c80382ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/debiancontrolcontrol-20100517110040-fit8b8o5se953kq1-27f8f5018b33c49eea49827085574d1515247520319542nAAACHlC+HmVZxsXVAAD9AQEGFuoAAIGkf8f5018b33c49eea49827085574d1515247520319542npiotr@debian.org-20110308225802-nzqbdbda64yrvbmr tests/t1/debiancopyrightcopyright-20100517110040-fit8b8o5se953kq1-28f455ebdfce4c7839e2a97e1b031c76e0010d77753108nAAAAbFC+HmVZxsXVAAD9AQEGFukAAIGkf455ebdfce4c7839e2a97e1b031c76e0010d77753108ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/debianpydist-overridespydistoverrides-20100613220846-bhgf2aoueh2cza5m-1f3e29875041b1a4fcf92240cb27aa383927bc9761114nAAAAclC+HmVZxsXVAAD9AQEGFusAAIGkf3e29875041b1a4fcf92240cb27aa383927bc9761114npiotr@debian.org-20120629224255-i8rxhur35f1mcfop tests/t1/debianpython-foo.pyinstallpythonfoo.pyinstall-20101128181127-n109idzqlg1omrsl-1ff21aded79023e04078bb4bda89f214b3fa8cb08224nAAAAGFC+HmVZxsXVAAD9AQEGFucAAIGkff21aded79023e04078bb4bda89f214b3fa8cb08224npiotr@debian.org-20101128193544-bov6c4yhy3lmt4na tests/t1/debianpython-foo.pyremovepythonfoo.pyremove-20101128181127-n109idzqlg1omrsl-2f8b5df1f18aa8d753009e293b903d89a19c8020cb29nAAAAHVC+HmVZxsXVAAD9AQEGFugAAIGkf8b5df1f18aa8d753009e293b903d89a19c8020cb29npiotr@debian.org-20101128193544-bov6c4yhy3lmt4na tests/t1/debianrulesrules-20100517110040-fit8b8o5se953kq1-29f3dafe24a1bcf44ac03e2ecbad2b499e28ebf7027480yAAAB4FC+HmVZxsXVAAD9AQEGFuMAAIHtf3dafe24a1bcf44ac03e2ecbad2b499e28ebf7027480ypiotr@debian.org-20120629224255-i8rxhur35f1mcfop tests/t1/debiansourcesource-20100517110040-fit8b8o5se953kq1-30d0nAAAQAFC+HmVZxsXVAAD9AQEGFuQAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/debianspam.pyspam.py-20101128181127-n109idzqlg1omrsl-3f709bb3ffc70c51ee38c65f2559dc044d08e82f8513nAAAADVC+HmVZxsXVAAD9AQEGFuwAAIGkf709bb3ffc70c51ee38c65f2559dc044d08e82f8513npiotr@debian.org-20101128193544-bov6c4yhy3lmt4na tests/t1/debian/sourceformatformat-20100517110040-fit8b8o5se953kq1-32ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEGFuUAAIGkff8738a6566306ae25f93456a019426af51ccc82713ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/libfoofoo-20100517110040-fit8b8o5se953kq1-31d0nAAAQAFC+HmVZxsX+AAD9AQEGFu8AAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/lib/foo__init__.py__init__.py-20100517110040-fit8b8o5se953kq1-33fa6d88fdf99623b7e131bb4d8f23ec2a05872282450nAAAAMlC+HmVZxsXVAAD9AQEGFvQAAIGkfa6d88fdf99623b7e131bb4d8f23ec2a05872282450ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/lib/foobarbar-20100517110040-fit8b8o5se953kq1-34d0nAAAQAFC+HmVZxsXVAAD9AQEGFvAAAEHtd0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/lib/foobaz.pybaz.py-20100517110040-fit8b8o5se953kq1-35fe7fa1d8c2d52f5519064cf037172d9a5c1f9408954nAAAANlC+HmVZxsXVAAD9AQEGFvIAAIGkfe7fa1d8c2d52f5519064cf037172d9a5c1f9408954ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/lib/foojquery.jsjquery.js-20100517110040-fit8b8o5se953kq1-36l/usr/share/javascript/jquery/jquery.js38nAAAAJlC+HmVZxsX+AAD9AQEGFvMAAKH/l/usr/share/javascript/jquery/jquery.js0ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t1/lib/foo/bar__init__.py__init__.py-20100517110040-fit8b8o5se953kq1-37fa8217c2f6a40f01afe7fab388bd9590806c80bad54nAAAANlC+HmVZxsXVAAD9AQEGFvEAAIGkfa8217c2f6a40f01afe7fab388bd9590806c80bad54ndoko@timbuktu-20100517110141-60g8yt2vwwvfa90d tests/t2Makefilemakefile-20101130223752-kq0n36hbrcvizqo7-2fbdd5e3cc4bc4a66b71da09179aa7f7c3dfc0deb0337nAAABUVKzJhlZxsXVAAD9AQEGFwcAAIGkfbdd5e3cc4bc4a66b71da09179aa7f7c3dfc0deb0337npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 tests/t2__init__.py__init__.py-20101130223752-kq0n36hbrcvizqo7-3f0a9f6f8a82bc5d49569aa0820f7792ce2fc2d81525nAAAAGVC+HmVZxsXVAAD9AQEGFxMAAIGkf0a9f6f8a82bc5d49569aa0820f7792ce2fc2d81525npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2bar.pybar.py-20101130223752-kq0n36hbrcvizqo7-4fcefcf7bcb8dd510f62fc3b08f637b0482689aa2317nAAAAEVC+HmVZxsXVAAD9AQEGFxIAAIGkfcefcf7bcb8dd510f62fc3b08f637b0482689aa2317npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2debiandebian-20101130223752-kq0n36hbrcvizqo7-5d0nAAAQAFC+HmVZxsXVAAD9AQEGFwkAAEHtd0npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2foo.pyfoo.py-20101130223752-kq0n36hbrcvizqo7-6f053030b1c8c7c64a2cef6b4d87674f66add9f5a717nAAAAEVC+HmVZxsXVAAD9AQEGFwgAAIGkf053030b1c8c7c64a2cef6b4d87674f66add9f5a717npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2setup.pysetup.py-20101130223752-kq0n36hbrcvizqo7-7fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEGFxQAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debianchangelogchangelog-20101130223752-kq0n36hbrcvizqo7-8f18e62e5a9c869f6b8a39131757d029c655046a64129nAAAAgVC+HmVZxsXVAAD9AQEGFw0AAIGkf18e62e5a9c869f6b8a39131757d029c655046a64129npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debiancompatcompat-20101130223752-kq0n36hbrcvizqo7-9fd3964f9dad9f60363c81b688324d95b4ec7c80382nAAAAAlC+HmVZxsXVAAD9AQEGFxEAAIGkfd3964f9dad9f60363c81b688324d95b4ec7c80382npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debiancontrolcontrol-20101130223752-kq0n36hbrcvizqo7-10fcbbcd3028f639c536ef301c6e30532a066024dea469nAAAB1VC+HmVZxsXVAAD9AQEGFw8AAIGkfcbbcd3028f639c536ef301c6e30532a066024dea469npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debiancopyrightcopyright-20101130223752-kq0n36hbrcvizqo7-11f455ebdfce4c7839e2a97e1b031c76e0010d77753108nAAAAbFC+HmVZxsXVAAD9AQEGFw4AAIGkf455ebdfce4c7839e2a97e1b031c76e0010d77753108npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debianinstallinstall-20101130223752-kq0n36hbrcvizqo7-12f8fc02421f39210482e0b4a2ac0f6cbd67c5ddf2c97nAAAAYVC+HmVZxsXVAAD9AQEGFxAAAIGkf8fc02421f39210482e0b4a2ac0f6cbd67c5ddf2c97npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debianrulesrules-20101130223752-kq0n36hbrcvizqo7-13f984b6b18a881ac95dfb47ad51b1b893e71185912133yAAAAhVC+HmVZxsXVAAD9AQEGFwoAAIHtf984b6b18a881ac95dfb47ad51b1b893e71185912133ypiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debiansourcesource-20101130223752-kq0n36hbrcvizqo7-14d0nAAAQAFC+HmVZxsXVAAD9AQEGFwsAAEHtd0npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t2/debian/sourceformatformat-20101130223752-kq0n36hbrcvizqo7-15ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEGFwwAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20101130223846-74n8smiou1dnun4p tests/t3Makefilemakefile-20101219192713-0mgkfey87gxazedt-2f5ac04282b67d707f33572ce26546ed79edaa275f1059nAAAEI1C+HmVZxsXVAAD9AQEEFlMAAIGkf5ac04282b67d707f33572ce26546ed79edaa275f1059npiotr@debian.org-20120628095136-db0eoaas0okt7y6g tests/t3debiandebian-20101219192713-0mgkfey87gxazedt-3d0nAAAQAFC+HmVZxsXVAAD9AQEEFlQAAEHtd0npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3liblib-20101219192713-0mgkfey87gxazedt-4d0nAAAQAFC+HmVZxsXVAAD9AQEEFl0AAEHtd0npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3setup.pysetup.py-20101219192713-0mgkfey87gxazedt-5fd9c5c40ea2d18f9c8abb3e145f6f26b77d916bf1395yAAABi1C+HmVZxsXVAAD9AQEEFmEAAIHtfd9c5c40ea2d18f9c8abb3e145f6f26b77d916bf1395ypiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debianchangelogchangelog-20101219192713-0mgkfey87gxazedt-6f044407bff649eeff477c392cdc14503f6a4cba81129nAAAAgVC+HmVZxsXVAAD9AQEEFlgAAIGkf044407bff649eeff477c392cdc14503f6a4cba81129npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debiancompatcompat-20101219192713-0mgkfey87gxazedt-7fd3964f9dad9f60363c81b688324d95b4ec7c80382nAAAAAlC+HmVZxsXVAAD9AQEEFlwAAIGkfd3964f9dad9f60363c81b688324d95b4ec7c80382npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debiancontrolcontrol-20101219192713-0mgkfey87gxazedt-8f61394bb93e5f5308d32f8cd189b38e003c14d3ce557nAAACLVC+HmVZxsXVAAD9AQEEFloAAIGkf61394bb93e5f5308d32f8cd189b38e003c14d3ce557npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debiancopyrightcopyright-20101219192713-0mgkfey87gxazedt-9f455ebdfce4c7839e2a97e1b031c76e0010d77753108nAAAAbFC+HmVZxsXVAAD9AQEEFlkAAIGkf455ebdfce4c7839e2a97e1b031c76e0010d77753108npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debianinstallinstall-20101219192713-0mgkfey87gxazedt-10f4aeb1783d906f6ae631479fc1b99dce60548528079nAAAAT1C+HmVZxsXVAAD9AQEEFlsAAIGkf4aeb1783d906f6ae631479fc1b99dce60548528079npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debianrulesrules-20101219192713-0mgkfey87gxazedt-11fece6091c131bde42be00ddb3256a894f9ec62dcc1513yAAAF6VC+HmVZxsXVAAD9AQEEFlUAAIHtfece6091c131bde42be00ddb3256a894f9ec62dcc1513ypiotr@debian.org-20120610120626-ft418n6ws1hfqq1e tests/t3/debiansourcesource-20101219192713-0mgkfey87gxazedt-12d0nAAAQAFC+HmVZxsXVAAD9AQEEFlYAAEHtd0npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/debian/sourceformatformat-20101219192713-0mgkfey87gxazedt-16ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEEFlcAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/lib__init__.py__init__.py-20101219192713-0mgkfey87gxazedt-13fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEEFmAAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/libbar.cbar.c-20101219192713-0mgkfey87gxazedt-14fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEEFl8AAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t3/libfoo.pyfoo.py-20101219192713-0mgkfey87gxazedt-15f0bd6e1de9083591651aead1215fe56f9e8bd389172nAAAASFC+HmVZxsXVAAD9AQEEFl4AAIGkf0bd6e1de9083591651aead1215fe56f9e8bd389172npiotr@debian.org-20101219193551-dmmubf3txxrih28h tests/t4Makefilemakefile-20110217190548-xm1cacy4upwz600f-2f49e4528ddeb87946bdba58c38cdfb4a4a39ea001505nAAAB+VKzJhlZxsXVAAD9AQEIS5wAAIGkf49e4528ddeb87946bdba58c38cdfb4a4a39ea001505npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 tests/t4bar.pybar.py-20110217190548-xm1cacy4upwz600f-3fab7ab5728f02e563e317c3c3d5c56df00fa91ea438yAAAAJlC+HmVZxsXVAAD9AQEIS6gAAIHtfab7ab5728f02e563e317c3c3d5c56df00fa91ea438ypiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4baz.pybaz.py-20110217190548-xm1cacy4upwz600f-4fbf62b166d8d3afcbf3ed2a4d1eb3a3b6e3b2f04255nAAAAN1C+HmVZxsXVAAD9AQEIS6cAAIGkfbf62b166d8d3afcbf3ed2a4d1eb3a3b6e3b2f04255npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4debiandebian-20110217190548-xm1cacy4upwz600f-5d0nAAAQAFC+HmVZxsXVAAD9AQEIS54AAEHtd0npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4foo.pyfoo.py-20110217190548-xm1cacy4upwz600f-6ff43c337cc892efac1b9c4ae1f74a8da1e535a56e38yAAAAJlC+HmVZxsXVAAD9AQEIS50AAIHtff43c337cc892efac1b9c4ae1f74a8da1e535a56e38ypiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4setup.pysetup.py-20110217190548-xm1cacy4upwz600f-7fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEIS6kAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debianchangelogchangelog-20110217190548-xm1cacy4upwz600f-8f18e62e5a9c869f6b8a39131757d029c655046a64129nAAAAgVC+HmVZxsXVAAD9AQEIS6IAAIGkf18e62e5a9c869f6b8a39131757d029c655046a64129npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debiancompatcompat-20110217190548-xm1cacy4upwz600f-9fd3964f9dad9f60363c81b688324d95b4ec7c80382nAAAAAlC+HmVZxsXVAAD9AQEIS6YAAIGkfd3964f9dad9f60363c81b688324d95b4ec7c80382npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debiancontrolcontrol-20110217190548-xm1cacy4upwz600f-10fa4a83518ea9476a3124570144c3fc6d53e1c6dc2434nAAABslC+HmVZxsXVAAD9AQEIS6QAAIGkfa4a83518ea9476a3124570144c3fc6d53e1c6dc2434npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debiancopyrightcopyright-20110217190548-xm1cacy4upwz600f-11fac43fba888a98f332843f25d6742a3f2f54b7034108nAAAAbFC+HmVZxsXVAAD9AQEIS6MAAIGkfac43fba888a98f332843f25d6742a3f2f54b7034108npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debianinstallinstall-20110217190548-xm1cacy4upwz600f-12f90a0df18b7fe89e2a64c7d774666988d7184395a69nAAAARVC+HmVZxsXVAAD9AQEIS6UAAIGkf90a0df18b7fe89e2a64c7d774666988d7184395a69npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debianrulesrules-20110217190548-xm1cacy4upwz600f-13ff00a5f1abd8c2156347171ced93531fb3122e3e1179yAAAAs1C+HmVZxsXVAAD9AQEIS58AAIHtff00a5f1abd8c2156347171ced93531fb3122e3e1179ypiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debiansourcesource-20110217190548-xm1cacy4upwz600f-14d0nAAAQAFC+HmVZxsXVAAD9AQEIS6AAAEHtd0npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t4/debian/sourceformatformat-20110217190548-xm1cacy4upwz600f-15ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEIS6EAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20110217190658-b81xebttrqsf1j6b tests/t5Makefilemakefile-20110410193454-onrfyk73ftifykbg-2fec06e357a42b1eafd9124c839ef75cdb0daf367c1422nAAAFjlC+HmVZxsXVAAD9AQEEFmMAAIGkfec06e357a42b1eafd9124c839ef75cdb0daf367c1422npiotr@debian.org-20121021214116-d29w4zyqofqaupom tests/t5debiandebian-20110410193454-onrfyk73ftifykbg-3d0nAAAQAFC+HmVZxsXVAAD9AQEEFmQAAEHtd0npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debianchangelogchangelog-20110410193454-onrfyk73ftifykbg-4f9aaaab07f84b2182da9414acaee3301c90ef0ea2129nAAAAgVC+HmVZxsXVAAD9AQEEFmgAAIGkf9aaaab07f84b2182da9414acaee3301c90ef0ea2129npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debiancompatcompat-20110410193454-onrfyk73ftifykbg-5fd3964f9dad9f60363c81b688324d95b4ec7c80382nAAAAAlC+HmVZxsXVAAD9AQEEFmwAAIGkfd3964f9dad9f60363c81b688324d95b4ec7c80382npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debiancontrolcontrol-20110410193454-onrfyk73ftifykbg-6f948b83f841522c9786fa592b06a94c0c2ae908d7448nAAABwFC+HmVZxsXVAAD9AQEEFmsAAIGkf948b83f841522c9786fa592b06a94c0c2ae908d7448npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debiancopyrightcopyright-20110410193454-onrfyk73ftifykbg-7fac43fba888a98f332843f25d6742a3f2f54b7034108nAAAAbFC+HmVZxsXVAAD9AQEEFmkAAIGkfac43fba888a98f332843f25d6742a3f2f54b7034108npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debiandirsdirs-20110410193454-onrfyk73ftifykbg-8fb188b294bd0ad2241a14f26c25b63acebb7398c4131nAAAAg1C+HmVZxsXVAAD9AQEEFmoAAIGkfb188b294bd0ad2241a14f26c25b63acebb7398c4131npiotr@debian.org-20110414212549-5hpm90yyg7ik5lk3 tests/t5/debianrulesrules-20110410193454-onrfyk73ftifykbg-9f64819fcdc69e49f8dd344eba1adacb73fe89e2b5488yAAAB6FC+HmVZxsXVAAD9AQEEFmUAAIHtf64819fcdc69e49f8dd344eba1adacb73fe89e2b5488ypiotr@debian.org-20110414212549-5hpm90yyg7ik5lk3 tests/t5/debiansourcesource-20110410193454-onrfyk73ftifykbg-10d0nAAAQAFC+HmVZxsXVAAD9AQEEFmYAAEHtd0npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t5/debian/sourceformatformat-20110410193454-onrfyk73ftifykbg-11ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEEFmcAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20110410230729-h7fqzm4kdcnbp4lv tests/t6Makefilemakefile-20111008151613-hf5fmj34w4ofi4gj-2f644454cf948508c41005bbf01a15f3a9ef9dfa1b860nAAADXFKzJhlZxsXVAAD9AQEGFxYAAIGkf644454cf948508c41005bbf01a15f3a9ef9dfa1b860npiotr@debian.org-20130913204222-gsx417pyl9uu1wa6 tests/t6bar.pybar.py-20111008151613-hf5fmj34w4ofi4gj-3f00dadcbe7292375cced4f0d126ed058a80b1272f35yAAAAI1C+HmVZxsXVAAD9AQEGFxkAAIHtf00dadcbe7292375cced4f0d126ed058a80b1272f35ypiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6baz.pybaz.py-20111008151613-hf5fmj34w4ofi4gj-4f9f5cbc8d3d46a2b26a10f10167e371a74e85d41635nAAAAI1C+HmVZxsXVAAD9AQEGFxgAAIGkf9f5cbc8d3d46a2b26a10f10167e371a74e85d41635npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6debiandebian-20111008151613-hf5fmj34w4ofi4gj-5d0nAAAQAFC+HmVZxsXVAAD9AQEIS5IAAEHtd0npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6foo.pyfoo.py-20111008151613-hf5fmj34w4ofi4gj-6ff43c337cc892efac1b9c4ae1f74a8da1e535a56e38yAAAAJlC+HmVZxsXVAAD9AQEGFxcAAIHtff43c337cc892efac1b9c4ae1f74a8da1e535a56e38ypiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6setup.pysetup.py-20111008151613-hf5fmj34w4ofi4gj-7fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEGFxoAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6spam.pyspam.py-20111008151613-hf5fmj34w4ofi4gj-8f19661e80ac34eb48f5e79e648ab55d1d52e62ea614nAAAADlC+HmVZxsXVAAD9AQEGFxsAAIGkf19661e80ac34eb48f5e79e648ab55d1d52e62ea614npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debianchangelogchangelog-20111008151613-hf5fmj34w4ofi4gj-9f041c4922978748a2380e7cc331a90e099ef27914129nAAAAgVC+HmVZxsXVAAD9AQEIS5YAAIGkf041c4922978748a2380e7cc331a90e099ef27914129npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debiancompatcompat-20111008151613-hf5fmj34w4ofi4gj-10f136571b41aa14adc10c5f3c987d43c02c8f5d4982nAAAAAlC+HmVZxsXVAAD9AQEIS5oAAIGkf136571b41aa14adc10c5f3c987d43c02c8f5d4982npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debiancontrolcontrol-20111008151613-hf5fmj34w4ofi4gj-11fbae376bd47468cd348a0c58d9884fcdd6335ea24629nAAACdVC+HmVZxsXVAAD9AQEIS5gAAIGkfbae376bd47468cd348a0c58d9884fcdd6335ea24629npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debiancopyrightcopyright-20111008151613-hf5fmj34w4ofi4gj-12fac43fba888a98f332843f25d6742a3f2f54b7034108nAAAAbFC+HmVZxsXVAAD9AQEIS5cAAIGkfac43fba888a98f332843f25d6742a3f2f54b7034108npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debianinstallinstall-20111008151613-hf5fmj34w4ofi4gj-13fb12c1200c2b119eda55671935c71948d3dc2ee83149nAAAAlVC+HmVZxsXVAAD9AQEIS5kAAIGkfb12c1200c2b119eda55671935c71948d3dc2ee83149npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debianrulesrules-20111008151613-hf5fmj34w4ofi4gj-14faab5a53b87939328c93ddd38b535ee8cfb1be917236yAAAA7FC+HmVZxsXVAAD9AQEIS5MAAIHtfaab5a53b87939328c93ddd38b535ee8cfb1be917236ypiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debiansourcesource-20111008151613-hf5fmj34w4ofi4gj-15d0nAAAQAFC+HmVZxsXVAAD9AQEIS5QAAEHtd0npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t6/debian/sourceformatformat-20111008151613-hf5fmj34w4ofi4gj-16ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEIS5UAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20111008151657-ugabetun1e9e1odr tests/t7Makefilemakefile-20120610122018-1hnxb9u0z06jbg5q-2f9ff670c2ae2ad6551020e0961de8e2b1230cc240784nAAADEFC+HmVZxsXVAAD9AQEGFvcAAIGkf9ff670c2ae2ad6551020e0961de8e2b1230cc240784npiotr@debian.org-20120628095136-db0eoaas0okt7y6g tests/t7bar.pybar.py-20120610122018-1hnxb9u0z06jbg5q-3ff41e0632893d2569bad31d7c64c53914d59ede1539yAAAAJ1C+HmVZxsXVAAD9AQEGFwMAAIHtff41e0632893d2569bad31d7c64c53914d59ede1539ypiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7baz.pybaz.py-20120610122018-1hnxb9u0z06jbg5q-4f5c2188ce94fad39d71c088988d00b2aaa0c5acef48yAAAAMFC+HmVZxsXVAAD9AQEGFwIAAIHtf5c2188ce94fad39d71c088988d00b2aaa0c5acef48ypiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7debiandebian-20120610122018-1hnxb9u0z06jbg5q-5d0nAAAQAFC+HmVZxsXVAAD9AQEGFvkAAEHtd0npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7foo.pyfoo.py-20120610122018-1hnxb9u0z06jbg5q-6ff91bcf0bc7ebc7fc24eb8d1a036e818a028e4a9375yAAAAS1C+HmVZxsXVAAD9AQEGFvgAAIHtff91bcf0bc7ebc7fc24eb8d1a036e818a028e4a9375ypiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7setup.pysetup.py-20120610122018-1hnxb9u0z06jbg5q-7fda39a3ee5e6b4b0d3255bfef95601890afd807090nAAAAAFC+HmVZxsXVAAD9AQEGFwQAAIGkfda39a3ee5e6b4b0d3255bfef95601890afd807090npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7spam.pyspam.py-20120610122018-1hnxb9u0z06jbg5q-8f19661e80ac34eb48f5e79e648ab55d1d52e62ea614nAAAADlC+HmVZxsXVAAD9AQEGFwUAAIGkf19661e80ac34eb48f5e79e648ab55d1d52e62ea614npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debianchangelogchangelog-20120610122018-1hnxb9u0z06jbg5q-9fe71a4becb4bf5d370f3dc44cc0e8497acb0a23ae127nAAAAf1C+HmVZxsXVAAD9AQEGFv0AAIGkfe71a4becb4bf5d370f3dc44cc0e8497acb0a23ae127npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debiancompatcompat-20120610122018-1hnxb9u0z06jbg5q-10f136571b41aa14adc10c5f3c987d43c02c8f5d4982nAAAAAlC+HmVZxsXVAAD9AQEGFwEAAIGkf136571b41aa14adc10c5f3c987d43c02c8f5d4982npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debiancontrolcontrol-20120610122018-1hnxb9u0z06jbg5q-11f747bf339771fd0efcfc483ef624de7249439b629338nAAABUlC+HmVZxsXVAAD9AQEGFv8AAIGkf747bf339771fd0efcfc483ef624de7249439b629338npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debiancopyrightcopyright-20120610122018-1hnxb9u0z06jbg5q-12fd7ac7d62bc0c944038609e8b77652ba702f0012d108nAAAAbFC+HmVZxsXVAAD9AQEGFv4AAIGkfd7ac7d62bc0c944038609e8b77652ba702f0012d108npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debianinstallinstall-20120610122018-1hnxb9u0z06jbg5q-13f5789c21b2b9bd51c7d4627bac6def1f160dc8057168nAAAAqFC+HmVZxsXVAAD9AQEGFwAAAIGkf5789c21b2b9bd51c7d4627bac6def1f160dc8057168npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debianrulesrules-20120610122018-1hnxb9u0z06jbg5q-14f270523e3e0479f98126d194db95db85df84bb7c1262yAAABBlC+HmVZxsXVAAD9AQEGFvoAAIHtf270523e3e0479f98126d194db95db85df84bb7c1262ypiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debiansourcesource-20120610122018-1hnxb9u0z06jbg5q-15d0nAAAQAFC+HmVZxsXVAAD9AQEGFvsAAEHtd0npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 tests/t7/debian/sourceformatformat-20120610122018-1hnxb9u0z06jbg5q-16ff8738a6566306ae25f93456a019426af51ccc82713nAAAADVC+HmVZxsXVAAD9AQEGFvwAAIGkff8738a6566306ae25f93456a019426af51ccc82713npiotr@debian.org-20120610123229-le5kkmmefr27ydc4 python-defaults-debian/.bzr/checkout/format0000644000000000000000000000005012057417145016206 0ustar Bazaar Working Tree Format 6 (bzr 1.14) python-defaults-debian/.bzr/checkout/lock/0000755000000000000000000000000013263113066015723 5ustar python-defaults-debian/.bzr/checkout/merge-hashes0000644000000000000000000000004113161161453017261 0ustar BZR merge-modified list format 1 python-defaults-debian/.bzr/checkout/shelf/0000755000000000000000000000000012057425367016106 5ustar python-defaults-debian/.bzr/checkout/views0000644000000000000000000000000012057417145016046 0ustar python-defaults-debian/.bzr/repository/0000755000000000000000000000000013263113065015404 5ustar python-defaults-debian/.bzr/repository/format0000644000000000000000000000006612057417140016622 0ustar Bazaar repository format 2a (needs bzr 1.16 or later) python-defaults-debian/.bzr/repository/indices/0000755000000000000000000000000013263113065017022 5ustar python-defaults-debian/.bzr/repository/indices/04e4bae51d9d827d5907b4655509fa79.cix0000644000000000000000000000022713212461070023764 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x 0 ԙ"#/l خYsš3H5@p]$#V (5ԥwpython-defaults-debian/.bzr/repository/indices/04e4bae51d9d827d5907b4655509fa79.iix0000644000000000000000000000026513212461070023774 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmA0P֜3YxHhu^~󜎏<.zzj  15uߒYIH;-V^m wc$$python-defaults-debian/.bzr/repository/indices/04e4bae51d9d827d5907b4655509fa79.rix0000644000000000000000000000026513212461070024005 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmK0P֜(O WQVGO|W>ϩLuա^Vjw  $&${2#47>1$,p!($python-defaults-debian/.bzr/repository/indices/04e4bae51d9d827d5907b4655509fa79.six0000644000000000000000000000011013212461070023773 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/04e4bae51d9d827d5907b4655509fa79.tix0000644000000000000000000000041113212461070024000 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=3 row_lengths=1 xA0a֜"%daWQd%hj/ާz;&N{Ch% J!d4-O ";>㲩\`K?>|)GɾmcEFL;+hLV.0g|U~XNڭ ?Ŧoܧ/-,(Ur python-defaults-debian/.bzr/repository/indices/07f0251915e44aa431ffa1a9112b09ad.cix0000644000000000000000000000023013263113065023770 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x1 @f^Z(ؚR88{ۏ5s* bJ9̃dtnha \TQ^[BEpython-defaults-debian/.bzr/repository/indices/07f0251915e44aa431ffa1a9112b09ad.iix0000644000000000000000000000026413263113065024005 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmM Pמ `E^"h@o _}J|%v6|jr`o^>2pD]ӥr-$%e?]#python-defaults-debian/.bzr/repository/indices/07f0251915e44aa431ffa1a9112b09ad.rix0000644000000000000000000000026413263113065024016 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmM Pמ `E^"h@o _}J|%v6|jr`-A{w|ݟoztOanoD1?]#python-defaults-debian/.bzr/repository/indices/07f0251915e44aa431ffa1a9112b09ad.six0000644000000000000000000000011013263113065024005 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/07f0251915e44aa431ffa1a9112b09ad.tix0000644000000000000000000000044113263113065024015 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=4 row_lengths=1 xQ P]yV*kXiY}񣿚{s<'z g@B@ 7笭.iLq'nkBaQI13Wq@n4 ҅SPrI4H4m˜qyQ8P49-m1 B9w]BH-_jՀhU&python-defaults-debian/.bzr/repository/indices/322a8cbef044eee46709e271b0f167d6.cix0000644000000000000000000000027713161414101024104 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=2 row_lengths=1 x%11 S+ I$;@D3hycu7t w}J]fh:E) l 0. SfRtk=:8p$%python-defaults-debian/.bzr/repository/indices/322a8cbef044eee46709e271b0f167d6.iix0000644000000000000000000000026313161414101024105 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xuA Pמ  ^EԦ Zl yuc }±%#T' ^Xe ^W;J?Iаҵ V#python-defaults-debian/.bzr/repository/indices/322a8cbef044eee46709e271b0f167d6.rix0000644000000000000000000000026213161414101024115 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xuA Pמ `>3¢I"VcPo}LuC|g1n`z8bX "![{'Xv Os󡉯5Xb0$My LVB6!#FI)cs+$U( *`tĐ8ܭ23L'Xi| UeE`ΰVٟB 4Yin۵I[oCAEHºB$hQe5ex 54W^hT Zsf!cGߺ!Rн&-/g_VGČ;@9΃ Tk rLU?}\ֺ|Nmpython-defaults-debian/.bzr/repository/indices/4a0ef7bf2dcf66bb44be8e98d304c0b3.cix0000644000000000000000000000061612442272363024414 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=9 row_lengths=1 x]0 D/*Ep1([ ]L63$џ@ PXB&Za>>H, <ʥ]{1(˜;}!=QbR9ZR\Q[녢DKp#?ScZ渝+GR*"JyK W<,Iĉ R +Wuw<@ kvuֻcaOWH\ ,#w5ni,835q&A]!S m4n/P+$P3Cwz7tn&SM?첨Qz-Qoϱyn?W{j R zE`hdqwTô2<}$s&TV|(]-j*lj"PRK]3QgF/5GM(XGk/>(ʻ+IݯN@`oFLUICB_PWVx+ mXIR ~rQ;a0L7Wpython-defaults-debian/.bzr/repository/indices/4a0ef7bf2dcf66bb44be8e98d304c0b3.rix0000644000000000000000000000101712442272363024427 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=10 row_lengths=1 xM0`מ d f1U^%J@E HфuguT.cϡ d +0ڈjyDH e F 66i3'2($2" SU{jnO# aZPY;^LnlCy$@"`^׈Mm6 b* ]%\cMoȚ;v}Y-(FXu~ԷS@_?15:N\!:6XV&-quokrVN4G빑4J :Qi/1$A6郲T(/(`vr|yQUzhc5J0 Ŋ%}ĿHsx|Gaǝr'yaW python-defaults-debian/.bzr/repository/indices/4a0ef7bf2dcf66bb44be8e98d304c0b3.six0000644000000000000000000000011012442272363024421 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/4a0ef7bf2dcf66bb44be8e98d304c0b3.tix0000644000000000000000000000174412442272363024440 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=24 row_lengths=1 x[r:UxJHSLa,.#.mi9u1cEt/?jdH.g bder Kv%dE/{W ;\ 2RNЇ<&A'!YamH./4ʭ4-ߢh-  ! ;eg]/biKݕI'c$ ZPKl{^.9R#)z& JjFN>d~hTDĊDc~]vcZ?gIwo{"3Xxg\DP|l$}VH$ũ͙,f|- ꪹ m2^nGԺH# A cyR[Z<"ka?+ӌEkZ{pvb\u;9.S0|zZsv6T#pS|!rmuMT͗IK]Iۇ.0=q$5T&z \tF}cIUԵ"r D_c*>SUwf_lG_?r 9JwکU0\~- zki)a2_9,+'ts<\'&}匒vjz{߹=5m8h V.Am}|of^&+*I-&l)=W-744QE~[m0;424-Ȩ,Rˍ sI[)х:$(ݵkU<׺wkd cXNh- Sܮ8XgєYc:䣈e_b<92 `M k]RhhC07_}xpython-defaults-debian/.bzr/repository/indices/4e992f528c9a637cebc57da8609c6d30.iix0000644000000000000000000000054613025572412024146 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=7 row_lengths=1 xK0aמ d;oVy Q (&3'`6UuWupǛ=_Upe'PJY~<[^>mm8:{;/@) ;D.BAiyК 9V}ڰ֥>tݿ7P?Mmݲ"YTpFެ *u .8`.țow}aW\ +zoImͯiވ]`VLJ/[Sb:H'm 3 + Wx*So >python-defaults-debian/.bzr/repository/indices/4e992f528c9a637cebc57da8609c6d30.rix0000644000000000000000000000055513025572412024157 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=7 row_lengths=1 xݎ0`} ^saHT~&x%loۜd:q՞:pLUc2 (A,N;njܽ}/DT%* N;N| Z^r$LaKϻfx/n4|t3ѵ1W "'1^ 4]SW[.RO^G1c 挼v'?EX(>\Ő0L]2k%]# J`:SzH'mŅYVe*+1@#R"@S 0 =vWKEVk{IktLJy VsП?la#⇛ Jlsנ.Xsh#xR-ug8ʲ{EI,Ԥ._[c!Bql(zJWSjCl3 9V%jtVG<(b}jDU9=<9]WVR} Hv.xact;{8IjL]fkdFA9 K-wh.oԋG85xqĒ(_x" SzYf {_>u8Vّw PinzP1NVA)6sVս c؜TE=c,p cVyV[_(GGB>9Bb43NuRE|-ҹ)(N^ ^]Ø卂L y !0g N P 7k5K+ХIދ5]M%]8HzT `Qa>]s렧_".(jHUGY\>PD4nvC:$sX\W] j8~b1DlXn ye,?hLM0FKL} wh꺀 M깘@eACB9QpOF+%zA$;c_D蔱~GFު90D\hTKz{у>|MQH>PUj'd(tPеw~PDCH0}&S0J2pN=g8bzr#8)gm.YHy2HE$goJ.%#ՏieYO`oc=3/.l`̮:en*9Rp@SR(}9.NwCF&(3k\A=8x[`t, gd kb|u[)˛Cjcjf ٘^ZŮ6Cs8?]8'lz6\5LeMIW k%YY\O㌑)ią-1:C6#ShǦ(J6֏|6#kǦ GahN#m2$co22E!:CX+%vB%L-z*~Or6l&pc]wXG'#ӈ/8ejj%"lSYw5W0# $!-~0VKWAE{)L#ܛqPV^{džHo&tnnRKd=Lk')# `)U':New }7I53R>tB8OS.&jx^Cջc¸$&l*ȕcڗE2Ǫbb-L;WYTcb'9#UsʨPL1//&ZB1#UTOTgܪp)~ i53RKU Cʇ_.miH/UmTTUmm/۹z3R9;}2o}eե>ؓN继hs~RK ũZq;m2†{r\aO&'Y#m<~PA4myԣ$Ԩ>{L8fz9màay퐤}XlWTӣoW =KIƫ m" P2Yw-XVWݽ]6]|K *w#E3(IZm@+zjKrQǯ1;E{miaΗ)|qSe8.li$YE|`2gO9nj*B󐎭e> S~o @ t j[WHƗI!7%0?2|t?\q-+HPث@9;XNa1FU -X?6ddtRb؁6R W*|Hؘ !ܯcQ+řGxoQ+-6Dž%R-9raFۙzɿ Q(AAUXKr^q},cO(>_F35ddM&G̰@3Xa,ķйf4nCo# 3d0NVQf0seg[ھo5~uFb&-UwTSqQC +pE"rt nB8pܤ%d5csꚫCmoSj7Dxla-5L \YKi0n 5Yx9)_V4*Yw!w'|hPˊQ 5󌋍mЃ5 OonBu, [ q܋q#A.F>`Dplo~\jM}S\o 12s*b~1Iբ2h|Gj^57ìirP⹴O}D^ƞs?Qb/yP1-U4hS)n~ˌ҃ɒ }*E_h:d#P;W[ܧcK/;Z@q+,Y*f]i=27G\e )ҽc?mWڏMN> ñfp c#Z7aB5M.w-'K1V&,9L@156P-Ge@NkkB7MF:gAFv%zil޻sr|oK֭Zv28|ɜ!zWid(_6hJT:۳{LzCeoIL9 xSIAaGX;q!v~Իia/jOi Ym]!!ae}:ퟴbZ#Ǎ,vqr]7spython-defaults-debian/.bzr/repository/indices/62cd757294b57f1f45b8a4b5fb07a5da.six0000644000000000000000000000011012374331373024211 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/62cd757294b57f1f45b8a4b5fb07a5da.tix0000644000000000000000000000752612374331373024234 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=126 row_lengths=1 xY붶sg5mo.$%.ZN*,: `&@\I=}[DaVFA!%F1$)^;\ҪN86W5wqY.WcNw4n>g_{*oJ -~eOJrJR+/@X0J'O(b©qD$k]T{%Ϟʃ2-꽾`AQyҮt؟kB/YKS_ KX9s ='Xv!}#SΉCH2#ɺgdQ]Wz hb>8Nںu^̔'bi>@1P+rB汨]Wj^Ђ. E( 0:ʳ)8簚mD)1錡$%.y"xCZ* J KP0 I|7z( H(`P4L5 'K@ߋL.Xv0pSיK琔ІX+ *Ԃ>ǜ $pbDBgT6 V@H} s*v+t,m5)'ǺJ/Q0=!R1;PCuF7)Vma@6`Y8oJb7Yz-bIEeH FX;l(&E'fh[bGHŘ1.)mm"B/\VOʱF0JLw/S-=Y@R`T}y( MZ mBY@`'5E9?#EgMi ݅4MV_kG&=P;j!8.Mr8#&MӺ-aCGƕnz f &whX8iCi [R .Wla5Viv{2c2AkM@=,GǕ{fg ?|E!(s+ӨJԵ Sq}|0blP=z{g64uuw|*o#mJ|rj¹ⓉT99tO%m٣RQ^B8ν4kij+0 500o'1d,"p/xE{0| $ґ׳58skǶ"6CxӸʆsa l[VzALuО~|_b/yE{0Y,q3F:Ge>ٗ"=V-x̉]Ţx!b~wne>-x GငdVo<:NjK{2Ǚx^ݍ%͘CZA 4+Pn|+z4f%a$qA*J ;LL>q'"}hoIct~8gmgw{Jj|jm ap^HA_,!=N I )0KHӈcG1z+ScG^2`'BCz&oŗ9i"3 >,8+=Nh=N@7p7Onu̓Qq0)lRDXJZ[4x`j'm7P:iT0*,w5/-a4+R 9r-?UKMxh'5CpOuTc]R儂!tS%oCiZcanb9e T_T'= `SH@mޱ;|EcN_K=LiW00Tt皞Pd_fݷ H' zd.OWeF2,P0rT^ɥ.冒{Oӱu[TE XLWܨ"FcgW,]ޅӉN06OE緑׽ɰ@?7ϟ'5iQ.)f? )XNQ*YaXB gor̜ws!rK $ % `!wGTX|$lC[A-H]nN!Nq82㰋rskoyNd)`uۼ,Pt+/*ڪ}.ۙWgJxLӼ8wig`16mR|?8x6xh]< խXDB1[|__h0%oMyfR3W5ӯ| 4KD#8>}eޥPT1n)! 7tX.]nݹ ə6ڜ6[6`G#7mò7rFmG$QN#_zˏ~$aTtY>n*7袯"#b)DCGkjM22y&1]eP5R#Ks^;?'=_3 )S)|python-defaults-debian/.bzr/repository/indices/78e236d4697fac0893f3dbaa9557ffa6.cix0000644000000000000000000000022713161162315024217 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x 0 @L'Ab((a{^ǵȰhҫhQ_W9we9J3Y#R,EoWNQV=`ɰ48 [Vl 9[Wj$cpython-defaults-debian/.bzr/repository/indices/78e236d4697fac0893f3dbaa9557ffa6.rix0000644000000000000000000000026313161162315024236 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmA @Ͼ.ˡI"bcEz']5U`44vA A'ֹxoF!*aoV$Xpython-defaults-debian/.bzr/repository/indices/78e236d4697fac0893f3dbaa9557ffa6.six0000644000000000000000000000011013161162315024226 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/78e236d4697fac0893f3dbaa9557ffa6.tix0000644000000000000000000000056213161162315024242 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=4 row_lengths=1 xKr0 `9pF21*MpۼɦHy֛9m.AO8vm.XGF <ѾZݲk?<;NP!r[PwYYQrakoؽ'L)2)J!k^GEU2Fr7e:kSrYx\؜i KM 2g2E2:Cq}OI= G *T\4[ Ĺݍ[oĂW=qk8z[ɈP6tpython-defaults-debian/.bzr/repository/indices/8f58f4eb5a9f80e8d1304d11ca1e0b1a.cix0000644000000000000000000000023013157701442024233 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x 0 ԙ"#c$qDHа=ww㚶s<`kgR;mʦU{2ܽy$P&ID)jpython-defaults-debian/.bzr/repository/indices/8f58f4eb5a9f80e8d1304d11ca1e0b1a.iix0000644000000000000000000000026413157701442024250 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xu PVAdv!3bN#bS6qZC룦ޞ9J4Ђ% Zgrai.A$Z*>TjCA+Aδv$python-defaults-debian/.bzr/repository/indices/8f58f4eb5a9f80e8d1304d11ca1e0b1a.rix0000644000000000000000000000026513157701442024262 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xu PVAdv!3i%($[c[C~WM{9J#}O/07"F*bRXآP =y$python-defaults-debian/.bzr/repository/indices/8f58f4eb5a9f80e8d1304d11ca1e0b1a.six0000644000000000000000000000011013157701442024250 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/8f58f4eb5a9f80e8d1304d11ca1e0b1a.tix0000644000000000000000000000032213157701442024256 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=1 row_lengths=1 x PVadvWLZ" |Ϥf[sq @FP&3ă=uɟև'ԨA)'i8ܒVT%-a UT` (x?python-defaults-debian/.bzr/repository/indices/914136dc302b4cdbaafe4964940c634d.cix0000644000000000000000000000053213025572412024077 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=7 row_lengths=1 x]1n1ESH9mR4}6 +?s7jqtSsn[rm )Kn 62<`Ե0-$b_)pm'ƀ@:[kmCc-לI4!4(dl鋇"JskG`{fQ2Ulg1Y.(JIO. SÃ*Fi$ rtLD趈'SV'zOj4_r'8;.}tIf#'l%C*8.:y8=/taupython-defaults-debian/.bzr/repository/indices/914136dc302b4cdbaafe4964940c634d.iix0000644000000000000000000000063213025572412024106 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=6 row_lengths=1 xr `y _ U11D15kNepg]eb\ÒN߇xd($JFUztmlZ6tmJ.v̬S B`fj7rPy)\Ӯ>jW $D\Uvj{:q4P@ [c\teCPOu>MHyc(kX7dC&FMSOM^^M$]悿9\'3afnU  "!@ҹ1ZaW;pm"`KiuO^ D\bX߃WCm ?wE:w_+ python-defaults-debian/.bzr/repository/indices/914136dc302b4cdbaafe4964940c634d.rix0000644000000000000000000000063513025572412024122 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=6 row_lengths=1 xKr0 9pFEgrcLB01N_vXv/RZqs*rt 13#@ DqT02mgWƦ- )|6t?=[rB` YL- (GR*G)TY|8ծjͮ $DXqi5V=~o@ $'`kx*)s*4|S5i'D-ڏmoú @5M=A4y{-vQHȵwK-_P~roQޤ""J]s7F1f}ntДHͶiт ;+{} gZ+;uU)0,ָvL͑?~xSOl:(}]uL BB:iO#mwN@JX`Xۅ}vxϯVk+,,*헨J4O-=aĂؽnXQg$'AFh";/"uqʔ/;v%yjG}L"L^OF ;ߤ"I  ,GFBqX$TG{aQ.|TT'nSE<D"bAbo!g 0 ֑D*͘kT  F/`̫~Q\:.|?.)\IۦR'} fYǂ@U޽ץ*ȕGŅBg6'O&A yH.=.Y1Vl=Pж.}ifK:8ҫ:~FmĀG1c!80N1ݶV{?/Dpython-defaults-debian/.bzr/repository/indices/98c6cfea9772711d83e0aacadfdda4d1.cix0000644000000000000000000000023013212462740024463 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x PLmiALCk% python-defaults-debian/.bzr/repository/indices/98c6cfea9772711d83e0aacadfdda4d1.rix0000644000000000000000000000026213212462740024507 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xu 0 PLRنs@bRq&0}';tũ{O\>|xXl!8YqMֵ;Fyʈ7sAɛ؀qܖ?!%python-defaults-debian/.bzr/repository/indices/98c6cfea9772711d83e0aacadfdda4d1.six0000644000000000000000000000011013212462740024500 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/98c6cfea9772711d83e0aacadfdda4d1.tix0000644000000000000000000000060213212462740024507 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=5 row_lengths=1 xKn0`֜ y^TUx‱!&$JDIW^Ly5Mc9vzp"0PQd|z?h IzwXe K^;{(` (ȗ?cXq vsI^wmBf"8PAڍav.q3pF?EnƗu]gO-Luͤ~ֳ:Ca|F ⴟٛ ѕ)Ϳg)!g֭-V!a$Hg]6V?/ּ>,Awe]/mp#0ψQO1ypython-defaults-debian/.bzr/repository/indices/a6ba7fc60ad5455ef77b7f59fa697f63.cix0000644000000000000000000004241612057417145024315 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=391 row_lengths=1,4 x%A1BdY9}8^Ug^;lڭ\kJ:,^DZ, fVq фVC6^P:s*ha Y!->gUH~q.6xdInd1r{ݧ8 > Gxыo/ޓQ*T2J?WBmC]a鐜lD5i?JI~TO rKÑ]cĢӊv>>@R4V*O[-ce-#=/@D\ RoywI4B#k0N=r;Lb'P.W=꣈ JeSNLrL-b={+#.cN{l6ט#Qپ4@/+--vN՘m^H_!Pf)lNk}C9ϙThKR0q^,f2rP·o 6W!`-JH_e&+Ð2{(&zp ) TeKJ6W 3#gnNڵ{8>Òjo wvu~фhmuڼ:ZJJLhF )3vqiY/l̕,#QD8I^Z `~seoLKdUrf tJa5K@l(6!F5fOuD#@>, <}!-( r:̻dT-𗐁[3geNq*&;N3n TXF<ȇoΔyG+=7B@5Ä&ieiu@ڿCRfq'菢p)a8N6P"5e?Pfxv_Iwe̞C蜑,HIUWV*T_@'!ƙլbQdZ`U2n.䃛=񃻠„oп h[YKXzkFrI56N^5ܠς}l;}CmmFh0(#I DA@͠TBM>DXDMNق%B% cģ/ЧŗfЊ\$5Ptҡ" 6:&ְr ŶWOa]@]tl_Nlc>:̯[qO'xjrE!] T@Du.WELI:*wך Nt9\Iiuqw`/>l P>n 4A8 /R~x}ЩW̹-LTX'٩ 2<\WBG4μ}i'Zcd!1i,GKqEk2U.}WθV'[Y_vpN_r#Mъb}4CNL:ƗNB!󑤸:p? UU #m#{|i@4p#bI_3XzN1/-7A!*@4"/ xlwĜ;t1(_H~26| 'H~e^ѿEM&x?9@e !U8+txo&uyrCt҇`u@,(u;4/Mp,d0=%mFgKtǗgtc@XL"6 XOw+%||fBξqgtIgg;`FAk&[x8`JNbp&-A[m柪lkie'b{alh׳K0Qftv:ڙyA Ghv^uL!PQ I܈C]LD WaTům@r̦Ս4W-ao8_r? z.@ tˤvdo2< /ւ%_p(GЛ XܑZ<pFsEFJyyXǷj8Brn\ Mm_jVΑ#_Ͳښ H͂_NNt-$${C>;kws/. Iʣ@W{6wvjw|޵ An%;a}@L "*C{s"Zf,e3kV ƚɓDF=J qu:=JX lFYh7CsK)NjrVĨsvO3_x AnCkV5 qx>\T ikB}har8aXF / aH'Kg01rmtu7#"< I->7gw1d??@H'~F[ c2N}zCf)[ƫ!0ȉ #~nߋz(twT'1(+lqqM3N8E,Ҋk3SQMlGXz%BdI> ꆦ)%הfȹBcZ^6sjO(2s&Y^U$pM0܉RyG򇟗*B$`,,,8}jK_}]R J*~wqS䴵Ax"qOWRXXrp߾ۚl gg3 u i@e3 H4j{`vdPs3>@m@ߺ:R7 }QFwU"s|D]h Q=e"3 oDͭкsۓ'_F;FVCe|`{>Bj{EʐSʜ56 ٯBy\5bV#W۟9Rxf@# T0^l"pHZmUXZyݢ8/BEG\ o|RmIGcNGR͎6Ar}GxdIc=*dbآxBL߿_:ZZ#,):aEv(ο-ګhJ9PY RkOX(iYR5> rmX@ >Δ)X$-[zZu5P4զ,94y5X Swn~_O]׎j̚X>)#&ʞ%r|(wX,ٴ@ɇBnG{HƖYr{i0ngg# ].׎jFi?.Ր6S9yJ6 })-@3% D) ]-)>JadV,<זc{0I%RsxezڕܧeT )5,4-O%d1JTU,21Q;`xF>\v~IZ`PgM)))p"#&ϕowC&ҝX$gDt5x`PK-Yk{̼8[]rٗZdSZo^i >%=9bFJ G~Df^i֒Cr@|?0"yze'&K[6ެ⇊Xo=Ϋ׼ތ6bz%5+;G~°EƖ4ÅۭWlsdmNm7$ p [k`gVZ6ǻHh{I"W '6;VljG۰ )O~:M#K}*q{UFL5~T=D4iP#fcR0K`-@ÌGѥHW3"j)OjӠ v1ʟZf x<0;9I?.Qjqk AKmO %i6c!eGA=]L!.OixiO3($Gd3 F_f?lM|>Ij3 Hth [̺eIL' ]< % WZ".;U+:[c+IZl(ha#(8Ikkmhd׉ i;"vxhŊEh(EIݸQH vōhz3ܓz}7pVD;fOTCd(g{R]R#ZS]p5<;Ja~S䧠"gVLuS8uC_3hzV]MNCTqR-L `` iƢTzFa0a]7Vb^bhM9UTnݐ"U^xQn~v1L-|J˜c6SبՏQ$@ E0-ށɾbVJ 6`M@z#ÁkiC 9Q4~P$ X<g*ʩPdt<K4Bh1gy髌pڽjF͠X>}4l ȬQjAKCp!d1KwGnAt!*vBnmzrr"7v O^V?[#tNY,̴dfL5&>/hO)n$ A6;ga74nIvuǓ|lIZõ"SXJv֭ 4Bs  Tpx׾9T[m 4nǦ!{Aƚ@Fj̈@Eh dȋ"  ~iDXRiY!`462_*pDYm=TĽbrdbA~^+6MMCnZ .3!~eAq;$p;k87Ќ0yalH`2\[t`!E[θ-d:> Gtd ;4BB,0.~A05/ed+A" ysFA |T7 +Fdb$&Qu9oŗVkS? L#ƥNqܠhB4F ?`N:>bč7tSͿ/U5;HM5.oJB"ё{W_AFmL(KgʐyqoZ5gcsUL>aL܆I "_5 8|o;8d=F$ĿoI6?|h\D,Nb =[eϢ%[..RQH/:I,)knMZJz-`:֦ @߁^vno*!=4 Q{Nf.`}3jv~NĵJ:%,eF=.Iz|8U4:ly#0.9%ݴ*\G'R G4 <48-k !ipcyb\ Tn6ɾ4dݘě+Q1BlL->TTm1bfa%(c5뺻EY@*i*fs}0K헬,4*\:3aGGe Y纯gb%v9)mLPhx4fVCOo3Hp $OCPݷ{ߦDv @'U85'ʕQ>¨ea pú' DڷQ] |ޅ`=S B'̚\=2TOC &T]2lvb-oF}og> drAݯCV,O,&K>Ksil_!l(#KC8`6l(]}GWrņ xO vvR&`oC򑞻\`#}N"x]'#puL#{0cr:%.gv?cyѰ+J^XbA8y\{_SNͯ$%+/ý㮙Qi_;@_\V6p:y ؙϬ+kz P؁v#LVPv\0bu_yҘ'P&mf( Awq/|W}&3ӒR3NRb#„ž+q3~B#cA򲟩8{h|F{_ցx#GjWطއؑ|O8x6ҿ>2jX?g*B(@u?4RWPrj5bSp'b#o-}˜0^Pw#8tELn!1{WD_|p @pVįV&U١` &uKb,(RK @?t3cz+f>@eC Ç0A=sœ7x$e爎C)Ci+NMU_A^8=?V"&/7eA/q_TݰU`f?v@DT2y -s_VוxdI$)q0c}7>rOc ɪ s҆߿_1,ʙ]f)Vnm*[)"Ss1h,Z{iܧ-pR}晣rr_ I,orm͙T D[M |Z'̿|no&}}119\t19~Y%{ftg+B(vZJ\R;:Ih O󧄜ٵmh|֪K@F"I.ujfOr,49<3_8K~YV]Ftr'J]GMM87g^ra$8Ų-#h؋/-Uks24lM,w#uZcT" yfS,n-ۤ?Ej}$ ԥQu!3<|vv\ M8_O.g/_Vwg0s?ctՙ6;n}UR %K|;hsK}䩴CewKLW*XroȀ= Tg&e.=64vb[}[qju@ AU z>{:hL 3J ! f4<{D4Ro:ZubaC t<~ mҵ-zkG4Er GgR\%^L.硹{o!Р'_K=qM:Bp*:EPi!33DZ&;aceFCۦj&oҊ6rԂVƵEMoRq~ ǡDc5PE^G ! Xc ОIν֑xp/Eߣ$B! e儦+Zc\j{G /U^$b/i@Rp[Ϫ0 2Eְrl)%OIvYH'0|8yrCMc(aMTGפV!;(C`C<Ϛα >h47P)A; }pI:t$ڬ^΍R {،[1[6u Aѕ Bbb`%ᐏòv1m'ݓPaɒ:2Fft/);zklW%Q'ęfjY=Y-k xq j4Rk;Ϗ9h1G/F8r+jfIxtDtl%[-9kr :OoŲk ؄G2،;Bsu!BMt֐'%}Kl;gZ.gBѦSdƀv0O*/ YB!R3@*=I(C(,aI;W"ocSR~hl$7A'ȣ zS|># :6 2OUZ0Pzx7Љ vCSN騩Xu?zl"xhp Q`bȤI1zBY0 Jm e 3R7`~+LK edߴPGl x]z9F'*hxJ"eg`Ѽ g]7a7o4Ypp/OX$=<28UӡL9\zDjf@f/dSm@{ciټit-Nu^ 4*$0p_&lwxHnlji0"#P2xD 蔁w!Ayi{=~0QB;ȃ;%@ !.`Q B(glki[Fp82h!D^q  =l9Fb:xKa_3c$ w fH_~pWNBͫ ,9nz{Ǎ3G"aM@|_>]iX:)+A䷳:t{Kf{û~$2KL62 5aW~bjPF#fC>u|~-sm@@"S c];e±>諧|WUOP'.ubֲ4+ *E-^!>6s4+<́' +I0\쿁Xf#`TC,CE/jm0-5{Vp+qGc8{5`xӊ_:TwG5~%ܐ7THGWfd@_v9𧳃ǡmemP[x~{KVh@H>¨ίbII1(x>ξ5Fɞy O[LLFkHCW¥mG3>} @.ZHk,!o4ڀuOxs_|} Y9ك^ >sDm0K}YJ'PA,W: ^=M 'x]3R0Ӏy.4^h5Cf I%;KT> bX@6:ևBq@, zFwEgaٽCj+RߘL40^`4mB<͈8x6K'1UrGo,uA['=} #W( w51Z h ,ZwWtF椧oOOBFca{5e)o s!-<G)~w}ڠ tqOP*P[rr  ~+@¯ mf] 4!i%L{⠼A ,:mАlVxw~a@!c 7ZM*x֨X|pLL {xFMؽVF>ܮҨ`|lp ƫ`cGS<75:-]mXJ -"sCl{r{3fq$%x H -'%Vޒ{wݕvH-/VCڌ^LWH4͈| e`J츳Pe=ꇥ{ j|[b|1&e2o,(%f7#xeVG#NGxa, mt{EBd:(P3a??ϸ~]J^/o:2۬\w?G~aVdu=a:IN C~QNFa@}$D]]oe _c~ bJc/LotU)LMuؘ^S- *JT},ti릫vhjm Vww5h6|fx)>=ׯ0`?1vqy 11|F`YF 3G24k'r8u:JOQ0]uH.v86îux) IKTde*[|ʝ Wu3ȧ~FEw I>7>4Oϴ073!c_ ym\Y-֎SP}] fɸL#~(IO@>;bn>ee)jPY(Oƾt]IdXщz"Vg78`oh]'LC0lloA(Ge7`5qf,zJrf/ HӃ?@) /_ sI~,p%@k) vNʅG% cb,Kʭ1\RwγA&R@ujC;T2fC Z<$5fb^V.eg;/X(?H$< @^|{k?7=..o5_ ..Y7_@@G/TZqYf|٘YoGuپ]Uk0 ^C/酣¯4=J5/ X j!8&1U6 /hSM0">Zz#gء Tz=oNÇXשW䁭W .S6XȗbJ_획31 $H=z>Uõ-#*K BqfA;H0\r' 6cR@Ɓͮlpython-defaults-debian/.bzr/repository/indices/a6ba7fc60ad5455ef77b7f59fa697f63.iix0000644000000000000000000004031512057417145024317 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=352 row_lengths=1,4 xmK0}R3 *-iQ<=Ŭi$kfvCEd !"Q˕uCuz%]jŠlQm-fEziFDdC5Pz<*7ExI(\)EI}t/AjYB?]r׺"+D1XELI)매[{ӭ]܍ 'HJ_+ݏc//V22jf-,%G|ߔ˨~wW%L#W穓;W_uP*Шz>7j>Xq1ɎCq䮖ؿ8w1v \" |O\izQ@.rAU'3lc9& N4tav{FjeL(DJ5.C]bģSm:,a We%n*9Lk|0\BÆkEHV6lž pa "rɹ3Q0PT@Ikʉ\.t.KbSx^^vI1 DCmA- VMzLmZ xQ[YE r O?~29?<"+bv]qO;:0Z.޿b$,J%ۢ(B0&crnp|+CJjl4*Ww@GڍdLr,֫aV5v*[sI{3]G\n0CFWN̄@N<%Sk 9~1F0n3mM^rU<&vrNb79b 2eZَ9:2ׄ ?73ڮ]13!&8^W)Y gׄyᄷI}l-_mH71a]]nSP5ׄ)%yi>U&:Gw"?7'6a)G;Kupcl3_&#&_حms.RL|M蛌GokX:_D̷Iac&lZg*\|MDG[S-}UYΘ735Ji]vpewׄI1@gadwZ1%o9æ)ѱ(fӥ }SI14nGׄ)|_Y ^Eoر7 J 09*C^lַ&aj %&Hq5]~32`HluAx\6۶J6aj0~d[:R/{LK (P;7Rm,(%L0dF4a%ve:I붏Kؘ(Cfx:58ͽM$"ʀ0Z٩ uc 23 F M6yXO1\ԡi~dHUTfOZm6aj*ɢ 9չqvr)2dJTΤq>1SI)2djTHmC lJD0Qtdͮcoل 2`r,'iMs[f.ajP?2`eW|q6!305 7Q3Wp ;殯 xwp:A"3?7h!Q"e1*;o)OV1GU8M^kc[VB$ Ev SEy?w4>>!n?:ŚtJ2/ WVּcMmC"+ۯ>3HGΘ@:ʪҘMrkg$?3MrϠ!`h]30$PTa~FI~B"8h+5d} @KMPYt[/pzcѴ}vRX?ҪmLr?ܚkkPR@^O^ۏvv9OrTXdMj uV7R|etKyێ nb 8ih[7$;$'0$OhMj6qXaZ0gR5:Aᰗ -xiqg^.)]Bf+7je)~iIhYm>˿gd(<15E_ދNՇo6b^!=3ﴳ8Nle:OOS9*^17nQc9: Y0e=ʢrЭ7-QiMU_,M"j,U%Diq{Oݐ@N*KMhɁ~DXVeABof\ JDeT*7ˎ  &8ݎ*Ltu.vvZVqMUZ]ꖕ.V:` tliV\2n9lߒ{8xmpjdo޲S3Ož&f:j-[բO0;xGd G9wC&ֲf- 8{O?cN% ZZr <-:L?\ejDZ a_,0vp=:j-+<ߒގZpU_[ EWdBVX""jcRt&is?uoMloɫti_{pFpl>lSS]vLba^ 00֊e>A񦬺^bkxP%̧BCw6.;w R# z"'C}ʼnĝ7ªn^N %Ni 2=,$߸|g7d"%Q ߻Kaj!J+̴N_^ V 1ؒ?)8xܯI)/[CNUC%n`n;9r4Es7^oL,|Rbaa 5fd{Q!K`ٲ"yd YBe3*P726ش/,-,ɲH7*4I)K*"`=a8T - ckx751-H*7NUeUJ Ir68_FtI.$NU(J]2a#fkw&;mqc>\̄ fܤg]+KcLǏn)%xCi7[Qd >8qҢ+՗[?$;we uڜHg߅PT_?~LfHΫ/7XvV~Br8'Æ:0Ȕ^?Ge-c2m.+dy) dAFZqZ#9/K?" Wԁ '/eɟ2 xX$㗵-'u@$՗c2we\E]ƫ gPFe7#5 wՐv(-Ͱv9/3%?*kF‘ٽ3jjZ`T_5"-Is]j1/?~DצISLázV6LǏ 5\93lےZC$Cya#]l?6_[65Zl~u1^=tE>`7+TuEYߟ|ձy woI%'f&4kpsswDdO_fpZ_~Pv]Y$2^Zwl$/+?$O; Oewb*th@Me2{-1*|Ɏ:}KƳLb@<-QBꯘ@!ݎ^qm=\,>>n|taApKê>mTm|e뤙jS2RM6ZϢ3Sj*Sf!L YNzyo]Xl,pfsn OvT6F-<4%T?7LLrX32Rj*ka{LGY[b94Sj*+ͣT0qo1}~~w| 7۷Xz,$`FD6,02;ֶ.=8ÖϓwVw]/9ScU2UeskT),1gM5 z2/1XJQm-];6aeJMeZထI~]L?ƒscC?Fvݵx6ɯ ׿9oӘ{EwM}N/9Wi*kɐP!htgdkușRSYIod}JMeiQY]^mmݾivfdT0H =o.&$JMeHle AΫn۷gXd5Wj*ë,Z] Wj*0Hl΋0d~{s4Uz{ߥ2BdL7B-&(Ăh,SGdYhR芥/$rJMeu1+8$X4]y󍰔XӶ++ )1"dWrBL*F4y#|˒ U 8DCxz6LAoM*_4ݹ/1`VpS꾤!95}3Ṉ |{ Ӥ2i>$޾2N:\O, [gYwmԻ4j-s|wqI=_F='FeU14e}x =h?#r>!KZhk0FQ:j%}cr buߙɪn xrDeyoeŤSr}g?W!QkY Q|DV\3IF[߼Qk(|I }D(qBIh*M+$􁲢}72"sQh}9jX>#2͇zFw0khVaz̕n>,'&A[,4KpF;['S|L.MOMPOSH[3Y$տ]|A 0E019NJZ5%Ŵw.pML 'ArO5BmuT߳^&gd&a!-HԫJZi7Mv̞gkwF>Ovn "/N7<^cy['޴[F|c/h,I̠Ƞ*4;`$k,E@4iihTegT\baUVaf;Yt(f`˹ rNx|Y*|F' 6M)*:KsKRT" )Xs}VEgn'iiiXPLQe'<(#sN۽J7HȷJ}k!e•Xdk 휯H͹F.S.0C=XV;9ӷUiUb%h{ Ω>TLÇYZC'f5n#,uOxҕ%0kW[3X̺})Fz϶v>foa1Yr2k9hԶz &tA#_<*Jp:CT1a]S*8 PT i [HnPn"7XDə$h΀G?Id)M2Tۍ^ee0+ǡ0 .v-28aX2lsüӜo)Ta@LUxUMb,1ۙ˸Aqa͵Ux.9sȥxafhꫭ͛NɠKx9tt74rA9LN4 pXF79ss.W"2 Ka['_ʜ9hb`7r{'@8ֆMdB~Y{eعÞϸ@ġ ?ay4rCOs9 Ȁ\^*Z_\lM\7t):(/<۾̹F.sn򒸇YZ>KAn2h2o3 U'1ض˼d̈́ǣjǝ+UƷٻ>F.Vx:-T晙>M*/>&n]r[)Yp#A6gvGo~wcAwfǣ.! jr6BGjzr:4p0va:5zϳߋ~oAWJ@F~}jI \S..@|ZsP} Xx<*$R6cuS佅O \+C W3؋qZł޼g b ɥ%xM"U]mQG*|HsޓnKFT?O5\O|4h9q;EgT|' kDRI-i㗛vTOzixq$-a ?}k~` *>9 Eg9'IJ9-z[&1:$?-W яŮ 7BzT쥂-߯ ѽdO:i"x3gVؒ[*{YRR{:,sEκ`'ȵMq>} T[ -b^Jc'>WZq1(1g5e@*i{kHC voqج?GK @ 2r\MRǂ@ wۻn,8"s>"fVSg({2s NC+Wd^L>74FthlMa hzѕ>Hz(b.#v a:OC:OOG2%vO}l&yRs -#D ^DByEѕT^ZI0T(jvtW陦˳ C_.:ǞKST"kS#R(;nŰ<&&oJӭЋYNӸ? $2Vv4[Ӛq0>Sk&WPܬGV(*1WMjt+t׃f Medϵ4:øBGFiſq".m,, ]`( )q@2 {zV|߁yz][AON{ dM\9y K>ɃkLfRp4{_΋fc)?r @$*IbQ{>>wY)|\?@_HIdCpc&*rlդY q-mfEv[[30LxogDT#n~R1ֿ9(qXSu6ftǵ7qpython-defaults-debian/.bzr/repository/indices/a6ba7fc60ad5455ef77b7f59fa697f63.rix0000644000000000000000000004031412057417144024326 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=352 row_lengths=1,4 xmA ;R`W. 7{09Vse|*Ni#A7y,wm<"Z0\/@pE<ݢQ-&OjXdxd94/?cNF-3GwuX47wxGn6` o{VE5Pu\Dht:,XIN\  0% LMOY?%+~O֮Q8i[(QC1Ĉ !R"%`ip1*4FPHCq #hX@>\(cFIèT ((  #P칩0FRz(èdr@nb˅gU PHCP1$.yaֱxי!l3T ͯ! z L9ѱ.vCSzQq#"dvUmRHPTcXU%q Ϗ%%+pXUT2N<{bɰ6T&T.'>xPҩÀ*1ErzAPT S@춲Kig=FFA$s USmMKS6wr[\kaD-= m,JƩf״NcT{&n7L˗t+oM+tLv^Vs*[K4GTwIz{"hLrY|T^b5(T0csIu2~H!E%簪&Sa2C, ]rEV;/؍⿷7bSխM^RU#9 z a#;Y\+\3=mJk<\=lddBsa99m5"$6 _QmzS4P?l$LM7Չiѥa5ca u7}-l!k<L>ltr hV 9 @@uMdY_- nwIr;Pg_y Ra# _%usRhT|aP܇ϴv\K~swwa1vQmji' _yp'/ޱMU1r8bK<d>l 'lbI}\MK_y a# c(bX0@ÆA 9#^hISjY<*5Fʫi4-,xP*6Rڎ;e@<>ǎ  +rx8=H4վ-"e{C~/eRX isbXx %,н[{Z_W, k'اb=\$D4amy_$~L,Qgq>x?P4eh ְ!0/f@t<`.^ n" W=)oqC_@]L ŨkO{nZܰ^n 0/)#@ʅ3<XBFُz~WX`Yd2Tqp‰L9um}V@坍J lrv=/K@Iqd0;̅9e\ G /̑ XL sY$zF5 <|)DB Gm 5Px>K@ _yv!^r,RڡoԔ,}R˵Y>nmP0g0mwqOkg?m4H;SR%[4A1 aVXWKz.W)PZh+~_z"ebM# FHTmv57z r /Y0y!}yU@Yz" nMZjsr]y.5 ] 0# |OaqA\RPs˧N 3A`QP9An$߈O@x ȤE]f^.? I:Oy/} 5'1J=1o($Fzm>(iQزHٖxJ|bߪyN@|b_hV.«%pda iQ>MJ"bX0%b\ F~hg®{er\0@k<*bW[kA։^KvvfʊR11Q&;'T~,Ou҄2cjMphRw7 %tFX c%.dr1:5 g'(mDZAK Ds$~8_x &,"4; ܘj(-C4T0aZT! w\ïԎEeVXox IX WIn謰RkoM7!. .^\gcX(r^ qTYaY8fx ;MPI;hYYUTGsnLmi`VsY8~0M;cLgцYaU^@~[g(pP$z 1qs(i%U\@ 0 Ek~Z6ߛR܀RҐ"P'lL}ndXk LqǺ Wɰ5~ah49,I [KUz) ގ=:r2⌯p 49}t,(%^:9Q@0 w5\ǃ!Čqzkҗ84Y𡾂vv;5UAρڡ+_Z˸XƮ$08]H↑pdM_etUG}޽wb<86̫~+X"Jx"y1%Lx !f`[RYenThRUdEn\a,M #\x651-H*79UeJM_}9,Cl8w2{ +b)A1}NUT=x G媲Mv]*'ԃXA%#(q$V1}Ne ;6E_1}Nd?oMM9˹ѕ>ilJ̃X-c+Ƶ Y-IX;P]fNcXE(rdnޅ^QA6c` U-ْ4Wqnosz,|pT$SøzV laquR~6g$۶$rz6C,4Iya#]\?6[6O6 [AqI5v {OxՆ'W?zc)9"ے 9_fRU@W8tq>f\pTL=xbH̺~Nf$ bgGbH(XFs,XERK| 6s%[|[ S6e\F%ɪٟ%>p(f4XxZAuh2jA<|ۮ LQj<jE7M3 &y)Z;oU9X?<fc^VUO߉4K弰*O~OAu.rŗ/~ð5Fb5J o|I ߋt.G+bS Jaq"B;AUb)5kcKA9CԝJZ޺Swd(uH5|Lp(¿5r4T6|3/c(Щ}''s=,55'*`7J*AemCS)_ 4-c(,ZYUYT;u6D4嫉e1~5g;[gFfK-ΆKMCSX{3ok8 # MJ /G{PK6-S>(tj^ j] v]|P'6Z2Jre2ʺif-ESPz'n3[ϧ AȼEC4+qPz*][MzC2Ά%E> heZzA3"S^Zn5dM*/PV] 2Fl OKC /$$9YS5$MMz9{ljx֢,\91#)^|۲ E_B.5[/(S4yx0Mt иCkhqq + ,8:$|gmiчNc3MB9 y6#7'U~ӌaCƠp\q+}2jsUGxKJWfbtra4:]Q8#:+e-MY쬒 BXNi[aU1d4A]ő=V]eKb1' bʔ̧uXOa57<Bal:~YXQLa^p ic C_-A VRs*fH|*mİJILsIk9v/SR8~PL(ƽ =j{9؄RoX `%6 Nχ,d<)+@{+˥^nNg 4j#tUMP,a)fqo[9(5u '\9)02dzgu*fR K~~|I }ńAS"ZOP,߄XZFT6j'nk.0CKM] >xg}H.ExBU)gvlEtDX aDW%'-) HƋi@k׷UN<'ɜ}NqXŒPoe:H=ϙ)64d{WPߧ~, <1a޻gs3aK`Cñ04 :MMLX)V@\ ~*M?ێ`39~HƓ?椵dZe+^ 'v| ޅQ {:2W0.K)m Ycrl5)o-l䬧?.5=&7c1.SCg#gŖ}'b)6Kx+%|uKRp${SMvn6Od9+;X,E`a`ׯX#;bE ~|K0 =wArqZQ6T9}RY`_ o$)t 4iyv=AblXjX Hq1qf`m,5 n [ 9+αEʝb̈ØWolX;~c-ˬWodia^ng}f;510Xrx|I8\)ӬEGU @p*RD&X| nEVMY0U`,$8_(Ցe}Q94D+^?C%a€peb,0C=~f;8+.C7+JCUL*Oک}Uq ykDK(+ _iυW][,1YU})^d4L u ![E UG Fp|6<0FyAӪug0(apQV& FhpƟsf4-eHŰ%WIIJ&0Թ=˦.Rp"ꍥ]xer4vG6$Yp1 0Tۅy{S[IhP #?2S|,!kL%zNbq8׍s74"\)* }JAtEu"U ̑1e.x̟){þкG]7{ke9o,p)6}l.56i伱a _x:̐LU6ֲUJ)+NiueJ qask39ƞ{O`x\ ?mvxR2Ww؊Ik Z]x2 W;˦W/`#9o,;4ˡ[BXjɳn=J Osfsќ7V(!G=/mՐ!KsXՅ'ٰ%7jT'bn"e{)ׅ MoZc]d"}|' K":wZǣGn# q*d0.X̄3tde5#˨nk NE O@cl6GgݴMycdEh*3[z(tC>9o,?x%~aB㝹@gN\3v1+gʺÔkjZ9ֹrX)eϿp_jW]?n;=MK(weU.\+pS׳m^9F9'1q˰}-tulᖀJCyȌRz#nLP"k2e |1 bՉ;VDYu1,1#)LPѓPs?F2ґ|85`%e ؾn3䆌%s,,e3XQdYm&.Fs,?x*TLyԭ-d΀_xmd:aD7kl$/VbWUo݈'L HGY58 ٲA-<4Ԛ^xepΊ ~l/}5 ^x=keƼ/[d΀P}٥8i ^' XAqP6b޴MC&hG+d΀eOP0T>g/"9RvV}8LJ\U?.IѦ sQW=:,ur~d_f ss1q^y䢵-c;P"U $ ØML}b}|U"܅>U}5/ *أ5j(>6%,ElJ:SބCމzQ v}Bk'DcڠA1&* 73u|'{ϪeӢd_뮣 d(ZUz{ԓ o)YkSvwGS,xl:I EI6g&#=3 ox{6s.x BQ Yge~n=<4QIίN)RS:,"Dv3?7zaD* LٲnN:AKEWHM+:+Ngf$p跄4\N4궋v֌'e'Q(8S+\qV֬f1wY)Bw@ET'+JH I,KYpޜ,=\uְ\3励ްlؗ@U:ϫl} 6T ֜RHʜ4/m^5 %1,y6E8pU'TN5X NZU߲na)Av|e#8|e^~3}7AWu9lȳ3aJfϦˏ8/S Ã(xQL=%ϧGnf.\w\Ƨ& a5k lBIa~K90ӊ $׃n״e bps{/?&CtpXr& ˎ E/&""Yc6gP'~:tlBaoxY+wwZe*9^;ZZ"Ǔ!ngz 8_/ )GHy1cДv-gU9#]˨ْNԸ6>oy/w2%4wJ8{^Cbhr=Rsђy?RA<'$jozgс7$ ؁#Wp4xcڹBRUmYg!?{]&[Fl!p&:,{ ?/}Qůe9g%ї+cmDЫOqk#<(x32o͇/8d3ykX& ZE)O^uw&VkGQ8Tp)\E9-P"g ډû(ɵrkAH5֭0L6JLM.)M,5¹D'H-|!`)0u s-ahjRg]"Yn*@N#|4M,//fʪĒ줔rcw0妆P'rd \IߏxKr D)|Rb*_EBAG9}X$lE6oˑex],L $H2sGcoAMbS |TW3cp0 3YaFYZPVv uK_r_ jDdVnǽ_q f628l)XtvrXҺRIyzq python-defaults-debian/.bzr/repository/indices/a6ba7fc60ad5455ef77b7f59fa697f63.six0000644000000000000000000000011012057417145024316 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/a6ba7fc60ad5455ef77b7f59fa697f63.tix0000644000000000000000000014342712057417145024342 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=1152 row_lengths=1,12 xn EEdl뇤͢2>ޛ0 P8% :ҵ#0ou^\0NDTy1T4Oe`k@ 1T,NZ|k\=t$ra^w%Q}jxzb(  -&VnI<\{ $.18,K2 ǡOkڲ{' #pOאR />A7@P5YJ8ͼIJ3E M" K C2 GA̬kxz~3E(2a cI;C2*/_@V-F9JEd̐"y^Z=,`yWۋx7=*`op_&y<-Hp2ρ$a㔅Uu_&TPč6iXF5sxMq=q{*0rEkuN;GNIV ql}H)yzHjh֔ 2,:bѧ۰_3o"Mס7G\{#4H$*b7BōWqsOYF׽h).2(uX4Ui}P _eW'Ŝf/ź}ӮL7z% ^Fk1"LJ+Qa|JT%C h"<-͆#[Jd %Pp%mK0y7dr&e`'^}==MŊ2εy\' Iٔ%>ά$/ #qM>_%`d̋`[ 1yp/U}8TJ8p(1Et6 Rs_A$-l&j0wu cc|6UPY܋fɯո"F6uѱȄ2wx_dnJ)Ϡچvz;9{ϛ=iûnf<"4F)>uDksAr3 Hu_$ҜPLi49.n3כ'k{_iAfJ$2ACfzrk!)${5tMj&]iN;P@6S*Ϫ/Tvu,!,FĝMi4X9/pD5uҜ%)jo֪p͔F#h2,*ghM9頑LK *qGL| J ª޻[,4?ϝݻ:؛N&&ŴӳmuEǦw,MS!4aixl& Ũk~fͰf4NIkn0öiR>&(M }Vg7tSa2i)Dd]~ok_:"99M@.YH;ϝ ;أJiR" B.# ys|,Ā4NC& !mèA=`Lvk.ˎ  9j-/SN$Z&1X+! 7#o "|sS)Yά<ݰ%8)@L4n,ZEiJn J)>I3+T&i|Cƛhy/H`:qݭ.ɏ7z~.]Igu|׻ CI9@eٓHv0 'DW*)[[v`lj"Hp GPf#0G ywjv&;?|%eؗ}ȨSsT&߿_[ˎ oB "|ΌA|~Ml0^bTц2` ?C}_]0aۢXJ?AJ>n7ْO=$M'q8t|5 [ @"bˉ,*za/~iZăC? zUB͋ J(|JS:gP9N^ EIdjg-;یtmJ!%V\ Qt4usݍk^h !y^A]D7%ߨ"?/Ը<1"9'#s3Ϩ'`δM444LNΨ̤Ɛ %gn#M O!oϸ UxK YQUrw~,"8H%^) E>_atGC2 AUm~ $fu-[S,~#FA`FV$ģjT*Oj>eAL>$Ib%M_ojln1,Ia MaB;- {.) Iҷ ܄!J2Dhdc6Xv5{}`Wcoɒ0{E)-b7aG r/YKnmwA/4R V'8hxr_!Ns^W? 8d &ebW2SM}2-v51#OɰБz_2>NvmC\v5 ێ .svR/7kĄҜ03PT]n2]O+tF?_NyA/L|ٌ31ٔCsA:cڋ w,O,bsBܫH:(,EOJM[ƞuh2d'%e´Kg: t1$Nfe7GHJi lԶ}s{1Ypq{kyXFUc83%Z@3MD Y& *0L_D[,N-F0hRRf)zD$%kO ;$Yb2$c\rV,`G4PL6!ai*QLhdIĂLPD`u\X5,|vq&&l! (_XnEE!g{3rU, Di_a,L˕~rMOin#NJM-=\EPEJ6Шg6˾~n }88Tncb`+c_ES_oI|VH!rz 6&@AGz)*0NAU;dѦm1lZ+k7ҡV}"ӛ&A R)PE#uM Kd"_lD90ۮ)&ƒ,L\O*y8 T&ʲWFW o72#RV~'MM13ci` KbcC9Wѭۛe Ld B_1;ǴI<lo"YA[!s1ԜwsٛnLW ɒ .T(DNb .ħfiŪT•zmFs}omYcLL¤Ir_[<|*؞"!1*KM*"Diaw`ة`;&eJ0k(݈NȁʡܧdL"~U]Yƥzb{'tʍI 2u1|?|*؞ Lk LtZ\Xb@&Hb5v.ZgY_s]KJQB 8Da\zˤkƷϼX<*Ճ\anE_|Q7Q |r6C~n,\^K ܅Pi>}øƥU*^89H+^K})Ԇ,Bc cGَB{QNAq%6u+]Kq/R,$ v|ҺT~)fxB3}$FYӈ)Yj*4y\Bc]`Bt1,٭_mQy2`; r2Dr߰4ME̿QD9Dv5uy{;`{SN&Kd /uN5([KÓd?_K }BGK}hkRv4e㜀|dcYy,˅f7g1rS 0LFRdW4ƿX!þ2$Sd_}hP}醀qG/cbUa@$sMjV|&M8 T5O&Qe: F7X:\?.XIv .$XEL*n'R@B@EHܔ8#M4`[&OZ,S+(QYhhDb:؆IW3Y&M WQ"C-m.`*"$ f(T5C:_rMwF.P)smic,/~[b1M&T@eRܾ cnC7Dن<d&\8~%m֐n| |JL_3f/Y>ma+wl{T>B`S#4,X44|v5 `deVhS赟BccB]I9'R%+AdT]N-QxK0^)H}&`'d6R+V"_;bWvJ^\IPA9#XVw $򣫜?sVI*'XlU.3YIc͐\P}X&f"kڗQ)#^v0eLB FqpXo\X{2q&Dq^9+R>e:g6|E1qa^C2yR(9]&u`}S(paMɦ^4dϺM?s%EdSծRb4KeZ?`&vۦ7,Prn3Lhd]>tlMCEܧ~-3^JI_}T;.o/tRv`bjE0Izۜ(el;&P%k"[+W ee3{(8eEXˤZ<o3{6iP, #JRxzU2|Ph$e"zKJ HC4bE]7-zTk6g0z0a3Lȥ85P:H,TZ.~,Hޱٟ]'\Wv`q~k16@:PB"-պ*uV4eqL$6:*G'!e`c,)?,K@L/;1Qa2\4Id-яn+sS7;Y&Fl7z0Uyr$  4pC9 FhIS0VZ^JE h"qi7"%68f`420EOHB7s&F13QLʜWbª{SSyB(o.I)oQM}ɞ-{j.'f:zؑIo@L8FR )*PL? v`\^l\ JF4%]K?AX?bh,fƵjϏebLFή-?"m*Gl5]G#5r G7.۵֩;odg`گ_iYo;Q,T f]q}Q;(X( `o Ũ 2BPhYvK95k+ ː[ef1 v[|$e۸ ,o&oso`S[Bb)Шk'M߷h )l'2w_Τ ]H,\vm~lѧ&&=CLrwUY\R| #eu7o6 jtLP٬ejKU*. }(^?ϒgndK@\|(Gنv82],tFlaJ2/Ld!?sޟbs0UE=#KħGL+502`׷{MdƿȖqxVIfdpYlr_6"LVuЪƲnKȤ)*b F^QeX3dL.X];FMLb hRasd1zn-㌣|ldG0rɉ<{ m {F8JmmO/IM4/ +a˓{%4\\>)[" Y࣑p$`X{R4u=NPG$ 6~,Ԗ"b %9;cڎ:ÎgI,ͱ3eKdZGC+> Yay =Nm˂lѰpp\=ygGAUCE4Δ-G%ö@+ZpndemeZG#"hrnlzBW *meʬ>B`e_rYY=>n$+n2Y E 㫭||}u5VcfՄLfd2ƚBb3̵,٭}^dvPF$u=9C"s}dr~/ldn$7'#LJHl\@6}C6(uxˬZ=XE!Պty_MtMss+2-2L3 ˊ-a:/`.<̼ĸ ($*5l!AD &UƖ%%UE&T 0B 0F,^xK *j$<V|xkm=& |rnMm}2! ƂH ۾WC:G7*X]ENH:9Sq|3]{ZZ?/F&Kk *4sB-7a.kJ6QJaGD0/Z_֜J!J$JF*1N4 "J%聐pXYsw0LD"!#LJ֬nh&lDRHF~lIP*Eqt^}o(s]70LD"W#Q:Vr۲{lDu!D":[]LWUj> d =s,!)&Ql IP"a<{̦*{Z!$B"z`$UO0.@$BBFLRW{wWdJ%T<5nmD+H8z@$B"{\;HIP*ZDD?i[}3$W(<3=07kt $BKϯ֏DBmeqOF)J"FZᵢg %}H*p֥s s-Hzɒ0{"/)*`6!>arQ`]> 4RK!#n*m-- r$q/' TYYBDp'͖:E/W{3"9Kȓp}ECG[Dr'aJD@^jzy_r/A%O #K` 8t yʁ0{y\)l{3ȋ< *'))y:GhsEB80ITU+D%I" !DD'\uc$K@}ynHlh_iV$F;u:t:[26VY~znۏn(v-ۧ3(&ܴQJRd M)h>؞/Cljޚ^^]? ]y%nX*~H sI)y:CD3~1ɺbM[ɹ{y@}g$܅n]kgƵr va0Q=QSFd`v^Ufduf11AMb*+`~H{o>U?~I09E_aSE2,\yb8(8}-v vcee4YxRA\Tp$账7%/b ߥrxEzG INo8=G-g>KTXdR̋ˁM|>oxK0.`DY|]M2-˃MCMKZǯU{Nynrx 2*hqT,sp0:Ę3sU \t:8a(bmՕ vntRh?M|N #G3G0tkE>BHWsxmfL*0o (mnryCU A(JN,~Y6!p3u baJ qo!>Ivj0+@bl4q,(X5\y)+;ETe;U)Mt1K7Nq~M si$b~:ɤ ì(S ax$<0NVr4KL#XH%xTЭ'sYb6jf!HRP)tXwAdV:/\N9ƘjGˍ-3<WE( +i{4 r<[**:XvODdI{*FNhƠU۬*'CE=TT-(@X,Y; ǘ{4 xdT9ʌȬ&j%h5 x!gKAf!z?J'O. /2K&BI8_q4%Z 'vp H[ A+4EW:\ozxGę~~ɒ0 . &l [NWzN , R@M(Nybnŀ|4L}]4#$ntxz\C`J^ʦÜ&~§E+1bJ 򗏘TC|8.sȹFE4)a"LHFqJء e,%@p=Wk,E'+$ .|Ri@Qs+m}xTlQ:RBt+¤Z.g*Oo<" *eYשuMb\&EofҚ_ZJ[0^_` !Z TQ9<r21>}Ģ6{:~_Iy_cHEN>7ۼZQ(vMj1 ڲ4pxKasL>W1߇DD ]DsSX E{MDz$Ғ>~}1 4*Vc\p5[M~O@އ3|бR=v>EZPw ˊx}  80F$}Ea ˊKC tDXVr"D|:"F4SVL?ˊ_@"oNV#1 Cѽi+YdH|[ͪh]jE,3kECZF֊XY^`,Q1V:DMHj~E%*f؊XId{~ܱ DiDdMFx6/Jϱc;2Jdٌh-%Q3c @,nfEs`0?rfD CD1 ۱ DmĸbCnw 4%ŒhDE2+ޣ Ct1#k %*bXY.0Hʔ1VoA6DX xY6~S8·s}tP$w0aX%|?5m]WEm~نP@ Agy-攘uzjTc\4p2gm4 @4OFArʏLɴm֜PWa]E( =aDĉǵ;5dے`aD %:/X 4EXW0d',9 &G^uDNS64*f$_CF:iv&8dm׏mj⬎ 3\"b.vcRi?p=Ww*/Cd+^k9 җQ'u=n, 2X4甑G<`ITԯ.IOVGe|c u T(j6nfkTV\ zԮc[.牆TZfQo:|kH (\>\M1Ĥ}; ?y\pIҩtռ<-loRP ~BHN |躤% `ש\T%aXR3Aߤvu>N0.K9/\bCHO^ w$\y[/z˶q}ͅ'/RdǫuUK^EYACI8yO;)b]ʭQ ~+E.sَٝ0Ey]^WOVAQdΥւ,pPM}9)Yoと>DZ/yPMPP"Xc4Z-KP.BC`4[E=KI%NH4=U->]Uò} aAD[vvǟϡ @8|J*BMIlyD{ oΡ<0bx"SRqmV8'4NCWk>M~2^܁vc9t> Wޚ21е}Aq-OklW3 =#:B=2vSְA# :m iT|tBSb!=ѡhO dZ% K}r|$Bz{Gl_&5DYb6Dw C-'s谯_> boMl۸S@_}Ah(eџ糙G0Egݧ hB^88 #LaN?*zfE.*/ d º,Io >ׅ,! E66BƝ3gt:!d뢥 0 K{8 .Dﱩ}(9z׌PtTkA}=r k 3HT%0#ukŞ`%ꋯGqpFm'nJWLA>1r\,b+ݕY=*H4%0&J&iTC`X?MmR*ћ`èM% pC3.Fs#F&S}k;CrIWkL(<Gu՚P AD\(C2v)yU@$_f{[pťnN0ek$GK~HŤ#wmT.u}A@j /XA"Ӊ(MfI JƏ&n4Er/[.}]¦ǐ@βaR5Yb% S!+H83ڗe˱IOkBFK,Byr?oHE6+tO-xry<ѷѝoG_!Nz~>"x&8|[:8^!?ɒ  Uڲ4#JL˘O?`9PwK.h%\V?k }}/ҁH(.KTnx}ďH~uI릨UT.__H]aS`l8&S|}zs"t@`2ݷ{Ns]2H'I6du}v"I4-d-GGՙf'>uBx!t pJmeu?BK0H"]nYθ_JphGgTK锂 I [%_R\}nf]t"B[0E] jAP$ڢTW/EBP~ss2!x(\+VvLס9\)Ϻ $>{jfr6ɢ%Ƥ7\\0٢V7)|\V?̡|U/eF;T)4#ۦ161a |ڒp6nMno-qzI ۱&=Q2<1+W!YEfBWU~OK }h+rG-i;7Xv2E2x6 T6Chh기}YmЮ|6(I5㴑a[t;6(hUb/ŲVIWO|'#6E9mdvvtG" ж/y{Qv2l|uvCc"ڨWgm% ~۱! ̹d6X)|$#|* 6@Tڶ%:; "9Xr{ xu$IpNg&;*\9'Mrj>\K wqFE%9U{YqZbH͠[B~" &Kfv֊jhZT[%u;I=(eLR\>/X8<\|ҒW{@0F .iMb=,|(MпHb6/WtK1,#o-Ur³kWyhx}¢V`硖;ťA{͵c_aĞw0 Bc3h`&D:aF.n}?OҡBhk]J͇Gr L]x\ro4븪]H~<-uIowaTZ(Y?q]<?%-W% 7i)&xI8`s\7ihfQ5 J@!4 pc~qxnlHmo])P"@Nn⪴i5G_vOj2r1xD3 d 252u?P`)QDpݤvq!7'/KhҴfQʎfIMj..?& Dct[;v7s]}9Ԑah95-Ijsax]@00~2,b}f6..`xB$ R\uaq)G:6w_xB|d+BCnRRDEjAsZ )%P/R('/ˀCyۭ4A\_RƯ:bM馍bIpݤvq)FO^(@zn\YMub\ []j0\SIb5R(r}Ŵ9y!\u0DC+mm6$uE KI9vts.. bcӠ7g E`Mriюs˷]\ }Njr;d<.i('GZSѹSu'V~;_xeak;}~G_Ն/z{͵ חX}GFz{_>IsOEa}~0Jo [29'7 IDŅt@H=WiH!yS&x*x&1,TEh9#KTPLB}L6`y2R-PT_dSڍ!F7YdJ #ˮ yz I8gg aą2ª]5,PKFbcPѰ=)6 `<O*YB S(n9Ct7U"XE;V hP`(jP},V >W+Pmx,Vmq\*uUk;E*ǡѡc\O3}㗗?^bչq\*RRsӝ^j2^8Y28)\ ŝxט,VmߎRѩ҈z ڟf^Z`P%"Uoo*όv \OMFU*?#UkɎ  Wڅm fBґxѼ(*7QP{*'ّBg!Im45+gѐ* Sz⒨DP&-}Й)HB$~x`U 5BOU#>k2, 5&")GܭlnX̼L6(ʕ$~?9c?1Eq;VS}eZbʗ\c TtdWFk;+{} Y'. V 0&"]w}5?:\"'9pY/[1[E$d T*%/hf8Ő Yʸd'.`8(饩G/VT,Taԉ[ a;H!4>R / M? h FDBN*TQ@O ƸyÉ2LDJ+#UD2<Ўa޻f15{I8"+Lm: S$bdJb\J% z}q;/H*DvR5-$詀jǮ0ɹDV G0AoF>c)D@Kplꭽ3 a.EvVWJ}p` 1oAKe*s8,ՏY"exN8ea9*  2 _Az QWc@kdu2ˌ-,2K+rm , =|CR{t }H4XxI0`s\@ּHUn2-bs LJoZEEz;$!#@ @,RYԺtLy8GFkͷ$jͰ8_P `r+G@| j:hٸWmu{&!㞕+!ͺ6(Ĭ83ޚT sU? ]J_3.;ޑAtZ|]إC/M`m*i "->1hYq֛@ K*wתK}G|`푯RCTqOP>Nj]b͉jGϬC0y&3CZkMgRGWQ-1M$3CRwSp{Ìmoͦ⚴&MܙA}eYLN, ;KGp3oГ3jp˛>% #%9{fW)5;O[7 #0dX*lTW7L'3igXw8B K!LwDžޙ|4m>ZBΦ|A$Wp>nDeSNyι++B$x 3KƉ=p>|vǗʼn9y'O&Wv_Ͳ БM((1DIDM]hLܕ!Q8?I:$& b6w3\^{~!+3j_L(Rqڶ{",0;2 3t*Nw%kn}\|e&__:;t|&#^+8C$E=~hZ. əBtmUG7avJK>r) &9*J@Q)uTօ˱Ɵڷ_X+.!Zͬx_^95uc_lqLe v7C{BU&Y}CnD`9r%qlu znG$+1d(sѽ;^)Vt/÷A=-Vd"t¶}blKbX9p4o/ M臒`\ v\$|0idqf*s;p}2ǩq;µĬraqh3Ѝ!׬/V3a++y͛e)k.v `գ|# -XVM=P m`| 1Sp܂e5GG^"UloO)Fn3a T&ue?$L9NEUl<N51x'Ӝmg4|5X"UVf5 ƃ8Q#?0j oz:*j\RF~S]I$֧e Tma+q|,ϯF߫pdFJ&C8!Ot5~ Eꆡ)Q銮?t-sP>܏;<.\H#皺5pњ;П8ne=eu KHhfÉA0E܅ҖNOc Fxzǂ B*հ}?m}˶2~Av5%y',Er(=zھ#|}5SL_rrjzDtm./d QzDzͼl(h xqT3uy: ’`Y.f`1Wx%YɄ_='rp0 =.$cl2nb&P*c>fL"Fۺim|h򜬣+ȕtW$9;iqXK'ͅ`ʘEe/ݜY$O/Y^PV<@ yui2$8KXjDx5BQ4h%dza5ã3 _'1l27 aXg Sse y5jvb1uD4SX.{JU&9.U-l EvڤC6x=A E]{ /Rp&]L5@Ů)~WY*S? AA,hg|;Zďl|,򼦃?֏Fkr,TUCxt'H%F^1Du%ED&T*ՖwRD *听.̷Cs!"SIjDm `zmo;oN~ w VM{ j⡰_Oc-'O"c:"Q ,\p5P"%^=|3;?q1^TJkѪynޟ|H9@dIMd~bD wơdL5$hHnz5!Sf )Ѫ?M }?q%9}MM(89pP}ORܙWmhL&PeIt[ /L?@F,@MM1((KM*)O̡O$ 0A6xI8`uu(S"*L223W,MQn荵~D&QfVEEf]@aXX{qό`E .}3b "a GsS<S֦!%UJ1KScΐZpcT5!,we}y.dYsL/z6܄]E?sp ^8M M/m|EGGXMኘ&1ntg$Л8 u2/p\ycGګ8pgEdKxP]d{8 HZUClY?ϝQg^GWpU@11T Mb s}-g/ǑU_;AQʶkŋ4㆗av*;  @ EkgPCf2iwMd{*Aa6.3QUՒ&]d;UX=j$Stͫ^Lb/joj6-fp.)L)IO8NjYqYmUʍvɀ K[L+Sn%ܼv&.F;[hC#:_fk;Ry:2)\6ڿMlXJRU:FҷyB<|?(15$iF/WOd$4h'ž526|ƚ𣦷yMo&B fŔڤ'^35xiL3Ew^-z&sb=·%G!ݜm^;jѾ ˎ0E{=bv9 @^d|igXd^yrXulìc u2NkR0.mXh ӌ0P!7-IsKƉg3Ҕ# m>_A-/_XQ0Ӫ铕nXtWĩGKj#kkzoL) 7,;eӢ(u^9fZT\%^G*"^@n9/'&3)a%Cqk02xX>_m$-)HqsbWI*J>?NRX"˾t ]w-Pԣ2Q i (Lگ-Ӛ;oI\ALs({^X סدr  HgێZsaok5o`Yc߲לcl hhM͉Z\ˡD$>oLR' J,ϡ2K쮿$pـFɖ$ۮ\Y0%/]eo_Iv0 =E/@4}+m)I X/m]2V9(' qN5m ; Mܧ%#$fIsϖWh5 6zSs6Cfϗ]&PAYfp9Dn2sJ= {4R(R`.z K2%8=G,QyF,&Q05C#y4isn=錖 9AMK8VSD;\aR2AL`9[X4Bi+=wBo_,^/DR [ څ:ARضrQ$b 0}fsrKK]>}G `r'0ky?A0ε-WHF;BD0iVtw漖R>k[~ю6-W-GL'̓MJxi,~~U.V|Hx]SXOjŗgZ7_R{'Th."'{oWB-D'k$ela,Y wB2)qliv Z* ' }x<N;ҙh#\c V@]_XR\&aQk9 Jז(VDDD`DlW"4}ZnqїrQCL@W{@te1Da"JxuZQlv4+tCgV+Gv\NjEVӰFi E!G%9rd" D=-3B $"k%5 U|i| ւΉ[Viɹ{ Ie{236nZ;ͿrdG";Ώ, kreӭ'ՋȎ*!q^Te\DbYG*[;΋JrE݋.Oaj'/TDryPiE ˰V՗U$\?edGIwu[xQ.|myP]DvTi">qTJ)ђ _ugF/T{8O*27|H0TTj;}kL !4VIд("OThayP!&"~^}UdGQJ8/*7;ІE\n4 AuIĎ"׬ mZ&0ΰ}I7E߱U7kCȞPRRI7Q8Áu`|)R]$vT iPs)Yt,.x܃nUTAEfMJ!jMVWȎ*qT[Z[U:lE9{P]DvR)E%w+dV5y!+ed'k0 d&@TN?,XD"kIDBZ cHjh%ziV**]1 2SA$ek3Η=r(C<4vnӔT6:JM:ьOSPZWdfSKǸ9D6P] IILگo%a jTZ;G_ y/Sj+ t#+!'Sf$u-]+V2o@o)%̭y5m nhIU Ex!0┶a겣q1 ?~ $ӥF-@é Na~쳺s(8R FęfyWm nlT3sxL卬J .fST vo8O*bs40uǐ'aOWf7+t,Yw'FV*`yQٮvoe1 I% BaNw'}I*#Ewܯ/Y  PqE{q=d@S"%'SFhp$*yxuq6tOzw|T`D.W,y5DuYN O^,|0lT榚:$Xm8w0SƦv*lxHTt\L]D4mݦadpGrK6g66m/)zv*7pZ"uʪPIMg)팘/rp7G#UVjp$* *Ct PDU/ Whk]wUz,0 !T7.p9] qd;6n0{Œ=WaI RT)Ή M,t=鵄LT۟[Fr;qTr+hI9D j,s4q1T.IF$]uqAu٣J<.JS tMl&R_CZy-ƍg%Y )8ט7}aIckda-ML* bBAzqΘw1&Ad*A__,ߛ$h>CM<@Fy\ p# %3&0@6; !H2(Jde'/ {" 4d쓔mq aΗoL-*pq/ӂߺ*5v~ŀNVo8 :i spq+EK[6m&(E쓦qbAP,Ea%G!-9%^qo_ֱPBfY&u&Sv&|p>C _ַ&q-$bz1ĕc4C0/p~~aC=InA&Zmu:vg!We5t"uK{,G6mY=v7uiGS@/9P Ӿ ŋүNxt=ކEU8.(HTW E+#p;|}ȭAے {L9բ}Eӝ-3^y%_$pQs/pB!C6ϐ3ݥC Dm):ɮ'vVu{;;׳f)6WzjM)%J+] бj`FԐOFH(!@|:D#/\CXWZD"5NBd't3<s Nhkb$Q2Evn_զuyxڢ7J&vm&1ȪOH0!.f ԝ2I3mjt۩dM<֪| aq[RZ!y8dE -m14:Azx{Ċ^=n .$YhWVb[/&&p 'PPS~ΆBkv,Ee;A ZTԖ>k#hW[?3 5Ӆ07~G2~.Z/]&5?mqx%TMÙ u62>Aqzi_65qsdgģ}`zPbPK8Tu2CF̅Kb m(lPey!;wq9XgE‚#e t33*r+rSG,ŏF0RՏnIeafyyQqE-1hjd +N`#h ԯ#~;- `~}m]3tDK[0bWHr JRIK7qNmCG tSMR MҊ3)) L[&\o,2xKr0YRj*_e0ӏSd<Oyڍg#7arݡ,elѸ7[ c0L!V kSq'aD4q.Ιoqy|N8a2LWUiY âXǴzjW@kjc^NCqڥѐII'.R1so̫A HEp3бy#/V}[nw@$L(I;gOQ:#U-!%'QQgG 痜hUDbx)f^dr۟Bԙ'Te+m]b"k\'җ&&HOg $ ^+&ak0yO/B% +6f] m\YH yv2%Uf:l~ 1,{dL/g6ت>$M2Alq)?=R_>Lw)'Skr|Mbv$ VרP޿#4nsOkRm*tcBBTaSm 5#Zt[BTߥm**|ޘpI{BL%` W#]wiq-ᢆwU/x]n]fǽ{?}{ҿLlV2SoKlU^5S>0|*zpz\az0 wK4DWhgne QI~I黳[_}BQb[%zho>ޓ/ @Pn^f1SAIfe'V] "rBK.~>I^=!]Z1wy6aP^A'@~Żf,SLr$62hɚ]Wv=d B K[^<K`)c[VuԦ!;^~"bB:ZN s_@m \ K,n׫8l9e1Ln( e0w!OOʅ,Iy՛e|1G(6V2֭5kX83u{+4plUUAM%'۾E(t6&*hw4u̻"=#͢BYwתGۓ6`=#B8+qeȻkF! " nQuY1f' l qiLbFLJ\@=#"jȜpzaR$4.$ sVh#]exdj|FhY?~[  Uؠ5uiXS5 p\]4 Z'1#6RPMuH_QaUB"`m^ݵ[=/XGC=*jaݽZ58g(n\6٭Yw4^,ݽ61#[G|hwo>0_`9(h؆eߵ0s _bF:)jgֶx}Tng>m= gKY'HKw^}$\CPhs1\0/цɴZyێ }`öPQ>b 3Fr˹oA aC-nݍ1ؕW#Bv{aZvlQU7U^`W^Le7פSo,>z]F6>*bFk/W<%sa;o;{]yB/x-,ܩs,C"v u&妊T0{%}|+UMMSpʂL5Ʀm~iOoػ42zFwp]`xտڛ= 9K ^A }b# ^ZmT<}BF&+?h;U֙*?8Ru2{9BO%>L6pXMSI(Z6PHeKZuBDXeD·Z">f|x7-]\2Cs+ 쥥[<׎ղqV\WS~Iw?<\G ,`jf8z(l8"^JKe bUx9R>OBagn,ۿ!ɪJcȍdcƪ&:YUk RNlĦBY>vFC0Ʋ}pB A }b8E8mZ0D}%M&Þ!Nvl z fN. Z!!OcP`,oc$,[,CB*uErˠ!,ə[$y!, ə[,co>DB.UOԦrP /A؛  Ť 8:QqQ}q 'KHPq3Z0]՝M})0:Qtk)Q'iQQzH!hHB;jGU NeD3^gX*|sN,WoB^Y4"IķRV(\ޢgOo!|xIr6`}w1c*_$pDOX (K! _ooMou~[ EN<ˇ%k~.dQuM/?PBAA\OqHAQ! vֺOU}B4FAR+eߐ:?j}޷aktR5QsejEF(DrT0M7M bxN{%BjhեJي L71 d?!uݺ9ci9I(ͮ(d3tiS2ɣصa Sry),lrq˗I/['Y?8#v,J<V:%}x۞ڏ{>$,UAiW%|tXJ)h9&0ej`̕DƿdȑH(4Sb^vROYo)p* R5m^e1p!Xɹo+]uɋabo„ gYŎNT][䊌7ѻ&ߺ7Z-s\3/%2C(n] .h)yG5twF}.6@6Oֻ#!'>wg4Ϯ x1}i"kgyUI;қ ^X.'Q=|œ,=?Uz%>&!9mf])G{/~{Ə9XeDeWCvY8{_ IVR]D}|!H1 Jb|[&N&S*eJr+t͢fWuݓK~}b{U_s>D{X]:;WYv1DŽa@D<Ѭ_F}AD# ,JNnBG6ՓqMaEZV }.l)-!m`FXR& =KP'5L^nhDqu,&dljQ+,ш4!XR?[œ PlED# -~:M(Mi*g-} 6;K4"^+r]i\ZʡX"I4aX̵[>+T4 %QhyE  572z" ,Sy0,ۥƚG[e=%Qh/nBh_Nߥ鴬-%Qhᐞr }߅."EIJV~9 apʔ6)EjD=)qR2ujD65q(ԘV#-M!,pwܶ9CX"-!e0Cb aqj]߲f:^'oDNxBX0Et^P2e-"~| }wrɪ͵i_} *$\*{#FٜL1 xDqelGiC pMxQJsGK'D҃<bn^HI(wHNv\95>/rmm\SH]Ds[JLRE8[TV4jzI&=u%0_qȾ~ˎ0 E/Hy0V"4Z|8BYФ!ؠHǶuݷUL"l$@\f=|TE`z7`Qd[B{\O\b"H %:{&a^P~b7ɮ[a M0}f7b~kM)avkdyDCA"/V v؟v'M~q#$AUClüa[w!Py )Ɖ .f6k@ O t龙 qܶ PD,RbeXˆpA6jKn0}bϱ94P pT"v*\`x5>$xV}bE# \".N/ W5_0rnì".J/ '  e \o_:QYZ#/k[aXx^#w \qTE\Rx߳ O|蘓{)zFxX0@ÖZ},q T-ˋe*Or7Kz-RLNy3>aPl})F4sV7hwVH_qaJW u?I¬""I0E}Kx>Nl5EʫR}SGdŬl6ZmjCS9iO-r"Y!Iwゟ$ՖH(&;G̻rsde;\"k^Ֆl'[2! J*L/;7U0=R׀C!+峰U/Y{gEJu^ %ו:d9M:RK Eiڍck f1eT;vޜ* $i:h_%ⒾTe6R OltWvgz<O-9h,p|',@MFp"4꺶yj|pHO>3VqSRY8 =PBhX&\<˨fN_([u}|puiBGZw] Qy~~[0Efn@ӷa9 -XyK-%"|9s0O1N"$&R ya䊃7maU4QDױүk+0ɟ߂`2ii`SeYEog2'L3W? UHn.i[XM;nTN"drJԒPM#6ͷiӠM3^7r \df̫׉*"BoUݧԄ>[p㰎r:53f.%LT(VmV&P$5ӌ(NoIMHiP$C o n 9A?\K .tP8_Qמ)-E gꆬeB!m 0<ՐFT05K9k~Qp]d4$yӐ?o?: m;{)(A 7bm+昄 5 +GyYm**{ Ve)`7|28aު24M׫- BJLqJJT3P-|c4N+<x[0}Uҕ? + p)0kJ:tuge~>K%(B3i8h;%TpF4OgWN!()#^89?8PB43^UM9M=gD9~adJbeiN+x s5;r\&87Gn* TpKEɹ\NV"˶JHV MiGH۱e]#"A7yeY|,uF7 P4cl,*ۦcsИ3(]1Z%++ع48R12ΐm{3WW5wP,}- iNKê4iF=)(mUz[[T]W]^>&*653B%O޵n2pOAe̩fΙDQ'i ~ Ķ\r O)?-Sr~6\BZpVaR 6*l)t˱ -گ+_.Aqwamc-Uж\/M~('sFR'*nh[.:׀9ez6I- -Hޙ@#t9 mŕ+_ . JDmGr\v΍Gm&+_.u+Y$l.fZ7Q ж\ɕe7UQthz`2~톶,WP\\3eQ K^zچ)EV\WͨtS29}ah[.Kgc *W:$׃ж\'َ0E9w_3J¾Hѐ&q#dQ7ۣv u)lK{>1ld*ښK7.*~;!}a&;6kJ\b{k8GX%i]$h\ɺYmhԦCRvl8_i͙WI('ߋqcGӕ߷A&8RZk" Ezєv,oQƈItsZc=\úO΁2V7S Uk54JSye dV`P3 WxU,;%e[/'8wǮ.h.;$% OHfMDb*E`u[IF'liɛ[qO/؀ISmN׃o=W&-̛[{zmpĞ cNO^lgd-ٴy$氋I")v,x]-l n0ОW[f_!**'Q:87g69΁ffLLʎc6 _r) @_1`ٌlq :ˏ.n|@j`""{C6ImQQv7tWln06x;5oLb fzݬeK9ɤ3#w!:Fwa!y# t<:W%~ؤwc &ݝqCoCQ:3T]oY wsGn*Qh9$X/dy*QMJsN>f-R]&벿v(python-defaults-debian/.bzr/repository/indices/c55a83ee7b04eeac7f83406363562ace.cix0000644000000000000000000000071613152177142024177 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=11 row_lengths=1 x]=\! *)1`)"%MvFwƢpWeNtde-&<3w1Zo YABrK|oLXCc6"uI`pMNPKn)mn2 ir~Sƥ`/ed3lACYV0mȓct3řlrcj&1;#މnt+9uEa{Z^ Q@ `{%9ۉjò.@.mIn%zyuBy]o >X*\L.p-L"9Q 9pDNhtz ,V 엡K Mf ]ENI5M~غpython-defaults-debian/.bzr/repository/indices/c55a83ee7b04eeac7f83406363562ace.iix0000644000000000000000000000075513152177142024210 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=10 row_lengths=1 xK0 s\SsU 1㤻,B7.XO"=s׸c^duqd( AI9hpnyєn.cSPk]D Vu_r 2 ODBM I 4i$AQi7--mxwH]|^^]Vms%$w'ÕW2hE:3#_  ;(Lr [\I"wҴY'rT!* `YUVVarhP O>,֔y'W'Qo?K*"z,-)Fi,r[{r8+ y|d&z[HW)QMO9&zZpython-defaults-debian/.bzr/repository/indices/c55a83ee7b04eeac7f83406363562ace.rix0000644000000000000000000000075513152177142024221 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=10 row_lengths=1 xK0s\EK gH0CN?E4A Q|EǵHcZw΋I_W$(8|./6zۢ;օpn 5pCnF\׾.ptB N"M] 5!@d}mC(I nT݄[{zKswH5}|^^]VrI#+vP2dEz_vЃ )[Lz;|hzD&~@!l}֋ܪe(ƽ, q =VVzq5*T O4>Ty/W˧h>O>K_jɊ9}m,)Fi*r[_6zS8+ ye53Y NVXߨ M>oqYpython-defaults-debian/.bzr/repository/indices/c55a83ee7b04eeac7f83406363562ace.six0000644000000000000000000000011013152177142024203 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/c55a83ee7b04eeac7f83406363562ace.tix0000644000000000000000000000200313152177142024207 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=28 row_lengths=1 xr0^)d7tU8Tx?J;#L1fvhe'ai\ J9Hz}BƢ /)G_2S"mlwiյaeM.4~q[>SDi$3Cddڿbߘ{T˨zSsH8@/)0 T"(Ik*nȢ0[8d[8C7jET_eZGj56tu'½7Vos(>60Jy1tgtC,7z#vӄk HƢ>m(>8CsoIɁ۶/q>CBLNCFO|]{$ZeKo]?vhPs8 MrlrZQsu0yHE'tSW^ob)ުLAEXԥ6t믊Um^}ak/.Qc`8 .몦)\O6u䛧]Cpw< mL%}QpֳȮ{yyѮ88baa&6E,-I,-,s,ein&6ei$w{DPh|C6(l<'esbr=,zN"OC0=`D6yAQ[էot, 73e9O"ZH ײ.:siQ<橦5>>Iw>7go@) KA ;vpython-defaults-debian/.bzr/repository/indices/c9c48c99b9e631b3d2d9aa8f4b15a0a9.iix0000644000000000000000000000026413157455520024276 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xm 0@TAF{6V+A3 ЎeҷY..=zDb yCB;j#y_'S[//v$python-defaults-debian/.bzr/repository/indices/c9c48c99b9e631b3d2d9aa8f4b15a0a9.rix0000644000000000000000000000026413157455520024307 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xmA @ϼ첀phүTцZ X_=⁷Ə1JGd"{*5mڙNRm>8>:Fi v$python-defaults-debian/.bzr/repository/indices/c9c48c99b9e631b3d2d9aa8f4b15a0a9.six0000644000000000000000000000011013157455520024276 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/indices/c9c48c99b9e631b3d2d9aa8f4b15a0a9.tix0000644000000000000000000000040513157455520024306 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=3 row_lengths=1 x 0yf.P}0qD Rj(! pw5T*꼼}SuqAn4=pX49O /$FnoFomw'̐SNӲw`3S$PEB6/C?[LͿ'P 6bUb ꉍ?Ԥl4׳Epython-defaults-debian/.bzr/repository/indices/f4dd6a3a32eb7e9808d65eae414b4c7b.cix0000644000000000000000000000156512714077001024337 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=25 row_lengths=1 xeKnI D)t2_>L~b؛DJ Wh^3A֟8hxkJλ,][Ь%jŷolY>C‚o4&]R-Sz{ϓv/m#>nzcTWd}m̻n+rs<0ILj=|+h͛3[}b+j/QT+[wqLT3'ԌP؅RnO.Y3=TmjƈO0{lW O,nD~{cVtoJ։SD5J5ƳKG=$sg65n v^Ms!_ݸ}'ReHK&.ڶi8׍9"jRdD#̨f|ŒP嫛躴0ꒉS#GKu\FߘŹ`xT>j4RlXj=$D:SѰ aNԈ>ˠTbdhJӥ`5!`7&iQ#mH%no x/iLf Vr<謄E 3<)85sY7&-Hg.P;_GRueݰ~Xʹt ;iγ~ cٓp4iENnvcX:^0TV|Kh#{YRocBxa<-k8ֱ,mԯ1As^3plU6vxZ26>jYgnNxN~8?䩫python-defaults-debian/.bzr/repository/indices/f4dd6a3a32eb7e9808d65eae414b4c7b.iix0000644000000000000000000000170712714077001024343 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=27 row_lengths=1 xn8^W/W qp~qUr%H7( ~python-defaults-debian/.bzr/repository/indices/f4dd6a3a32eb7e9808d65eae414b4c7b.rix0000644000000000000000000000173312714077001024353 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=27 row_lengths=1 xˎ8^~Vn/ԯ{I~LF-H< "?U.e?*l֯q]Z;|کAL4DAp%wv+/()bJP Ä/JG&/シ%QS|<Ԅ`V Qg=ٿ ʄB&r=adC7k8yL SxV%kHUC+6Ƈ *Pf3Sٝ:SĔ8pJ_ם"AJ9\dx%Kʓ1%('kDKwe6UmAZXZc\}cp>H\fw3m<[X{L2n.e[d˻r?~11&ԁ- dO!j{x Iji ms~—wIGm8>5f:zf[eGdaX:3Eu5b0*֨€ {X|/z python-defaults-debian/.bzr/repository/indices/f4dd6a3a32eb7e9808d65eae414b4c7b.six0000644000000000000000000000113112714077001024344 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=19 row_lengths=1 xԹ0Э+\px Wt[mį4LeC7E=˧tT_]; Po|*{g̠9!mG}?qB)ÞwvmMKIlx|ۈ#PDNqÊT\~UB>8eJ$0WjK:=lZGx# Gtӽ(⮲D΂ekۤSX?_\Rȹ!|Q:ǎn PBFc5OcTmѻp'Hô_vW2\ {@| b2$n%+hz݅{}Ee('q9pZx,b2$ |hyM2T~ BA M.{lI2dސ `Xm}{?Pş78܄hwتnO 50python-defaults-debian/.bzr/repository/indices/f4dd6a3a32eb7e9808d65eae414b4c7b.tix0000644000000000000000000000205712714077001024355 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=26 row_lengths=1 xݎ0a*<|_K6V+"qdh6l6Xy56y-=M_lI( G!brEI?z^+,(>p40]7 `QdUc6VIWYc.q>͑FJ%"O,{7%;=S>LeEN)STϼ5*5 n_2w|y8٦*}Y_zo]w|z]ygz)J wWPq^wGGTy#˓*nۢj|>T!v߄/WXL;txOd=J -~Wsx[9C!e+۟NFSCH9W5@@9 1;QaRVx!b٭f.; 2PF) 2ge@__ͿQz+$5@(򊖧@۫m.?./kr TN::-P7r&@5@89IXt# C)P(HX٦V<բ,d7r] 9i)Aˢ`TR5NUC]Ҕu*d[%S)6{2"VW|$/v &U:?/=o蟒d/`&H[7͗rVĒIQ6Rw}python-defaults-debian/.bzr/repository/lock/0000755000000000000000000000000013263113065016334 5ustar python-defaults-debian/.bzr/repository/obsolete_packs/0000755000000000000000000000000013152177142020404 5ustar python-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.cix0000644000000000000000000000027613152177142025723 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=2 row_lengths=1 x%̻ 1EQ[K[{(f M|_\|Ep =}$4݂:2JQ(QeS+Us ϱmɈeNiCamzbh{ValAhΤ#python-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.iix0000644000000000000000000000026013152177142025722 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x}[@ PV2+~*x`v|,rgߦ>m1ƯA( P#IthCK}QLjRaU2`H*~%python-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.pack0000644000000000000000000014070513152177142026060 0ustar Bazaar pack format 1 (introduced in 0.18) B291 gcb1z 277 498 x}R ڧ`x1&}ozJɦl]LԾ$vǨ`}9'+D1TPXo=u,2h+1{qTxEYA?EvJ: d]j`'J^ c}[RF^.; "LB.xu@g)FURxH,+Kч&TE;hC% ,$FgNd]JYxՇHYW9Ojz" B2074 gcb1z 2058 9430 xXmo6_1 >YnФk fqF}$Į$Hʛm~/?^iR /Kq8<3]\B| 2sCaEbs#dVO8JH%~ 2 8k&2Zš DjgC yRE/d!Wz W4~p 4}~[F~)[g9}j+Ôf;8iU!]g!nS1Orw3mf/ o[,si|ɲ8ҬhU K'KdqsV;߈kǹdZS baJgKq$r)t^*ƽ3HYGW"cjHK*tƿv0#$¯tkWzB$iz3l9?l%Qd<9v^)ζ(Q!3tBo*7Wb'P=9v57{Jim6A4v6Zcʰ@Gz_h#Ku?=Gm/h%st8Y̲bTgF5gѭyRzk?շ/Voέ3@ aaթٍP2;]S 3܋B{([Om48L]47V:TwA[i0FBY"u~]yCH8k-s=i Mݧ%FKd\n6" ]iӥ9I /Uk֖@CI__^)3 DY}̳{XlʐࡰQu7U{7lLrvOֶ5յmRΜfbȰ'I:.WqCZO,|bG$mr:ۖbAGwp{H .tT{L)FD萰l.ۃ>c)rjÚQ8 WBMl4r}F+i7Bis >>>>izR:}oǡO|?P9_&5UG\ՋZOXVVN6y)f̦ Su6兘$TYRmVI$Xb-3N|tuaߊd )DhZv#E1Sa C#tr2=}sn@%ՆOV*)Ge ~}8nB14173 gcb1z 14155 50660 x}KF; DI]C iiso6 X6noĐ8WG$8Y=3:^m`;x(޿oz[:_u*oD}WQ 1řnF%3ҝsn FzǓ<)z/xERqZ9N6 \iltxg,&+y 8yE9<ϛ^X^`m ,Y{3yϐ>MpЇ5=wpi{OyuWi1J ^58H:,[![3K9ë ? GCحoN2w=ʳ&̯? &N 5ui\'sa(-)-hlI $KF-+<)7:Q${ ޺na0r[䗫dz7 Qv5̄bkqVQQn30g8':TXV '2MRY伲&Gu ?!5IdJ0iI8Bu dڊO#nYhO$g1AwEӸl+fɋFh/߸cm( c%A V7Kb$8Ib=) Ȗ|UL8*;t'gelC!CoRjoίqxo ?ߧ*8L`ymp:u^u]0 V +' %\g:nylOw0}:[rѶ5נVц K:`"z!Ѷ̐fmwD $@9JιkRنm:#BP#ږɊNue%|DXƲ\9V)%LfPA{ )DhjqtSXϊێ{ߡUbdy;W,y>Q ɃVDI|`?)N.}NMz?`TX#}-N( $ȁfsd -E* W/eah<<##KBZ.g8L"9 m:Uvڦa_4-x(eV:kt塽]aծE]wf4x~D#N vcI ߕg钍Q%F\ Ȉ?rDr J&.=(,uE$myR}OjΔ-6{"`ЉN\V|؊^W 4DQ2E;#ޢ n9@[{a08IhTkd8j@aIAQBeum&{Vq6;X#% = , S-qR!:W> F$U:-V l&Q@^}w*'oh'Bav+DTw֑Rs#WY;8P4]PͱZlC2#ݑezU-3-6{}XE9C)Td=-3 J=QrYﭞn{s~}`΍.&y~uUcvk=ѴM3t}" YsJނ5ΗM3v&9p ';? 7h$끌? GC|v(~0*TS&?F_Lo+Du̅o]5h5x F/EM 9G:ŊJ _̳@0{H1V=; CN!7|4\w lZwMl&@-njmg TRJRXD %c7Ԟ5_Ӣ퇯{폯]O^{ţ7O芝di|*\BKַ]r@'m9&Sd4O#_lBs@u4N[ M-K#~HCz\`7|O=:m\B-j"`qpn=4O3qKyƖ/.[LVZE5|yr*aw ´`T F (Y]=FuѬyl~6_Ց('әMYvRXEx+b27ŋc<`n9& {D~w޽~Ϟ:qzsn*etB7qJvH+3E脚=6ce :cgd =׻udJMc9uTm-\s 9mGye甕Jf)SS%ׯ+A=f1T(P| {V C %FIGYhcW̍LoMg*kӇ)K$|u)a_=Q`f-߽1hX5PB8JXf!̨PxȹHb8c"@(w-:| 07$^4k E;5`61!:_ `v9jETksO_aB wfG`w=o,Ul А~po᏶ZհADgE9q7ꠕj$>~x7q}윸/*U] Gra->q(r08G4( h:Y^e(~s^r~r1 }f~w$S/(3HQVU__9nb'Ve %7i:AS!OuF9$e~lD{Mn5C۩cN۔DS:L Jg4>:7 :Q}%hQwͽ1!"yR2"HKx3G**=> 0MrTy<-`G&D7@sܦh*Y:Y37lgh!{a (z\ -Q0ݺ Qb%,ڑ4n(I >oHA7ht_m: ҇IpT555a-dJ't$CLy4 Yh? n:FPG@m=#ѳke[sÊ% BIbPQgX"tDB{m ;O8+`9'2FQհt{;8Dk'ZU2 z!AHI/@M]ĹmlQm/ F[G1JD jr,Y׫wHw,߳:~xB`u)VD\;` '(O0 Q}4TkVpW[,)h|, x|3PmoA wk_4a&ↂ>3b ?Vԇ2d "No2F=tJ1+GYW8$$AMQVbogb[^D;7R灟1.?$ P?NewOI2Hj8WַJ*F}^G WNz`@ߎ}ϓ5Umh9G^dQ=Mt:Ooѣs3?qy#P簋(j3D؆dDq"h[j3PbAٵrW.zszd`0 `:ٜvیTw3QӠS79UY_5=T")HhQ ,ݱXZⅹs3N.69-8@kvtC^0vt+ ͎cMD'kNh) Tx wR0&Wrc p b$κhYi D?J׻@i_¯/?|هr1/P^Ds^S2XZfLu<"kTYir7q)ũ;`F&;{)RDؙT)C KLd *!9%+=DQj 2$H\+8^JE-JOu TGV ']? h85'QZ>PZ7 u439Do;5z >ھà߅+,4ϟ P,lIodvƠLl"yp+8ϋ SM[:kRUgX ptD?C??O$iswA.S3Z*¡ao&2; tn##GH0|؜}\Jƾu;8#`bMטYql9*ۯ_}Br<,m*S&1p*+v*ƽW_:T[DeZKqVMU(h0HS3k{ש ڛ򄽞N䄣\{k ]M)ab!Lty(#H'A~+p AUi xܚ vrcBJ0cv1YA8_S]OPJ-+cStY"2K*Ur0iWBFEŗi#q8];\3j†43EZ2*WeL(fea^Bzm>ֈuy#C4ŧ Cl*:ȦUePg3pĺZRxz4Ɉ< yDDؕ .UU pĊO<ӧ^scRNT5ik*Lj=жc!R"j[vo>|:P`NH;1)ۅ]0O0~-/9O]t>J`况  4/?>V[`,D+Z酬Ҟ(+H%S&'elB4(5=4{]-ZeSHj&U2#՜sbַd 6hKa;xHҾS521<шU$sN)4#M ?WM+Y %͌M`.+1Ac-Ub'F;jL^*>l^0R V'@5\_B6XQ9Ձͥ21⬪Z[0S(3?F鳫O_5|xf 2PAg%]mA$;V^ E QsEE{Bڤ(;zF90OgSæmـAKWaQvb\E@rFrqb:ym'?>]%Eƥߔ[Җo!oWY`ʩ70;y&hj3P?=.> #;.(]5UsX#g5o&T@x4:T5XSÖV4}oZr ې!@պI7~^\dw٭hy=ZdgRIc 56&h$}ȍGO3|݁^۬?9/ߛgz+;*_H-n{9MCtKA@Z!sT*s4ieCm-jsD {;ݫ([aQ$wS5Y=5:@N.a.y އBp> ,m&TeSme$5oyaOՉij!Ñ?hxթ)9(K / oM fGN90,'..S)/|AWriJJ-M ~,F.eib G;]4rm^! yv9Ѕ!a,M&FPu M;(N|nvl`BacO9ыuHi)2W,+IkOPNQmqJ);oOjOBJ9d,e+u9E_\)4AyV[(T+ٸO&FG{m gC脗Z]< Q;uyRs]OEE5cHSg: ]lsH66 c6 儯 ȷ4oԛAUH񫒽 )ٓi]v3N>Q5O~jDZ݊}XVhnXacۜeRB3cӬ;ðr$BݪvBz (dtK5j.=R0'7p|ёFi>vr?NRs.7upxŎZ*fP~PKb.4 b9 ί`2K\#CLn%wgtN*NG&ӟiԞ9I#$zv4u2APisgHmJ=ϭӻ> ((J]yɷ~Hʭ嘬82jT#%{)7"X9;6@@a2JU:T8 +9`m57~Ҏ3܊tNJ#R> uR {Ʃ{&CY};Ax7C S9"(a_S˱Slw<=G27‰7p"-DT|&D'$5_H\V `ʺ!t,,kC[ޖSʚ-{9RRÏp*υcC;]1yYZ QUJ1N+i^q]KPx1FIs#)I.07OwF'ϾzfF`C8"9^C꓆V pԤ(@~>NmR7pډGtďɂzIEs `xY尢XCu}_ǹ5Yp5B>u.VlS"X aVn2 PU`蚟0V S=(TfOb\uGV^\QnR}iAzDMa$T*},?>TlDGSGz©7<˃SÖ>@#@#w Zޥm] ǡo(6JICb' kpw/$]ӈ!m4Ҝ\'H(eW玽#8&XӰaa~,JܻrbT_kuo֧v]_*Y+烽K+no>#x%EkW;>>-t\>`)C)u] ّh]W~pzލTe V˫pQM1]()GY=hz/}JP*laTx]]uG]aO"ǜ\vRRŬGCo< I?3r+Đ >LEw cefQc0M-@ )Ʊц80Wlz5t hڦY. bp*)كX Md9B&jԮW>r p/W ]=2P,b+BҾz -}u*˄3Yq}w0?K~6)tVhxO4^QhcךwjnV fmԛn؇\t e΃™ `mw%>._еX2-NMV*Fc@ZYٵB':^,6XGBo']H= F|zGM܆ٷf>훐a,bgqqUM,KAJf}:Ql_vK0R Ze疘H#nK:[vѴ#p 6 v#@q% fz\ֳM7ȇ 7:KRa8|\y5Gz`ԅrW*.ПCuqk>THӶX}#M緘oB%(dYF-'T8涜v&a^=#"aiwع㛂O9obsqʹr:*~R`Y Ew>繩q  n栥zUJ>0@\狐+wu?Z흮2Yq5c&*UeÑZb8p&GwA'4 n`aH{DC%mNs n3'w#6zhq9W_4.Q'Bϛ[Ώ1(J uks$Р}~GT'w`jYG.ADڡV[6neԶokuO+r*DlZa5J{Ďbgn$4<|NuA0[RڎFVGevrͬ`{|Vw=OoD4Q [ߨf]b8}~3ec RQwTؼ~5хd'VB0ېqR:*ʃ\#yJ#_3*lZ̰N K&7r]_B_8YΧkBv.=^4UǹBo@zˏeos]bԲ0t,%~)>CcyP3&]Vɦ[dNOT _I[bTg^1>+hf$ (pxiZ#]u_ NN&.Oӌ,徇 TTWtVcx+_ct`>rvMtu_Xw!ld?p5j4^p*"#!iq$GX4y @ pc p4զ i[`&}wzj_r%ӭ(L$O6V0[*[ "Ԁ#n/xsi-VLXG&Z~7砺L6c9D{vG/TGT?UoۇTOp ^+Z6ͦyLhH GTxgܔG`뀂*t&vŐCzֶ]m';7NR[E5@XƿadžX*ZvK_% &mHn$ nPJN94?$sz̴w> Z֛ ΒS\*վOΗK0!RuܦFTM+V} Pnӕt{\k_O,REdAE JY~xKuꚒ:HTiiXa5|b_ +RTR >䒽9qS)L.Oh^  65b;rNXi'g!z[p~?S{jvXdi"aޘyaii׸Ǝ= (9JѴ= B_Bmu4lX+">bw;F.<腡EMF֎ Հ ,pzA烶ku}LJ@vIIEMs#F+M /8c;|]Q >θEþb˜44Xx1 ps;D|M"T3پK^eW`qTtGR\*Q4:_&d{ J̲vdMͳNRc?).}꣸.4y%xt!魠5 I, Ė0!M1oYBz7Ku}s^b*wu~pxwL1uߔ dz.G5Chj[l}4(m=wי#rK|o/XNyLmxҭYڸjܗ.Qc@Pw$Jw[W>Ϣ"GoP@ 3_u06n˨4B"a"[|ް},a7UsL6%EfaCRsJn#&󹈈uW~;ty U֖Gono鴌Z\Vv_ -_9VBpSVy;*W|4vSR/`j{d][[42g9[첿2Ǧ-+* ޱ0y nӖeؽtj|a9V{_vQ%oBEN]'bm0^,Csgm3f)C}㢙Î4uN{s &!>;ي)~&עD)NdwMeZyPX_VfmS' 3LE(seIuL(ŶTC5'~5FTR.x4B NLő$h6˞j`=sK?p7k]W#V}(mAzYǂ] &_-D9VI/rW^*%jarmՆOLWC+}?f}?~5B339 gcb1z 325 629 xQn0 씧q{CB4@Ht6nc&]he'Xha; )GUE9t'N;g:` ,IZ u.H$1>C1iɈ~[ɬIx5.Va q)Tb!ۀ)>(  X޲ ؃$KedJҪQe=?Gu 3( kllL@zŏ۟e4b`2$(/kN?1XS\(VӬsidCςf-Ty52=ob/Va?dt{H\B12313 gcb1z 12295 48532 x}rGrhyvX=KA"- \I~aL`z5 ٧:Ž?8O.}Hh0{fy)+Sչ-pĔKWf5oWϒoW|t>yv|>z4yjOOg>ϯg6zjr%N7n5}(}HSreKi7y,L^횵"_NLL[xX=k2ݘǧɋӹ=9ۊ~:_ƔikӹtLM˴]FNWa0ӦYi= ֿ6[{2[Z&o*us@kS0X4AD&S08?V^@|ww2?LۅsM3B9lX?Rs>[͇$֥U^i!&/K;)1==q[ânt<>ݦU Xuܼ$|/L4klKbWʲs`t%>0߿x=./wIo&i,GWȞ:YGM .SL66Np$E6-iU/m% 2A9GD$|ÿ%|@“R#q{S > ~@ilшoo,L|_7Zp~F$J B^%v 悃.Z3 &^E,Lf?>ɏg?p/l$Tf[03Jf+?oaٓ=ϓo^%~x~W/ϟ͒#6 c=)) fLYüyMRll9-pYhsYlhc-,1GHRi mVW ֢^-_xL/bz9~ÓONglʉ"&rrnWNwt2~'N p vVbvk+͵Y7HkڒiT'$QQL&K|豱8VKc$vK{S&@I6|1Bca@Pnk'~iճW ԃ_mHbKGt1X1,0)P*oT)M6Bru s}dP^ʓ Nl&1yؙnRz?W+5~g8#$_?"dA0"anp'hM% nMQt@2M;C3yϛS[4H) ʁo{J"'t\pN ܽ6Es ,2z]x,-,4̣X)T*r HnuZ\:W֡ϒD#[7uI%<8D 1ҦNZLP2ys HlU|vyHy/ZE*JT]JmdA}_iH5]椀[M]eZt "p:+  / pJۢIbЉ/p;69L+<ക)XkCne;BȽ AۯFl4TZ14<fD|^Y08É-,QjBeV@T$;kSI2Z]AIr nkQl=b+Zݑ-E:u\`c|N)(; cJV+hLaFېnfi~Yz Y$e8\hjK"xjAyv`?'AKVfPgIf~@*Y5(ÐFbn(45XGCo 43rd ӮȝlƉ(2JZ3=aN zfsU*>I@[ 85m:M$/E9L\"HH+(#v$EC)Z @(YOt6m`w-$ZJ~ZdJʒ @22 e%w2?09{G]֗h5~&CrJ[6²6~t).g!}6zHL&V:HO  #S.aQ N; PGdYۑj&c gͳ+@pWt:EzV>I+oMSw1GJ,V3`7r<{%o~'Φ>Ȯ6̉duE\竀RɕSiybhI9*K>;mS¥y5L~0q_2&aщ2=Ray5((K_K(VR˟2,) i vNDV/Cp8d!O"'#܀ܔM Y8(T=?LtSC3˖* ZM9ʺ3Z' @u|&g :&NpIJē+G^^FLCEAwD@wE@3:'~nF?%ZhW_Mf{MD3ro1XNcEYwWnDK"ԣ%t+ҿP:1|L^0ܦ%B_im+skgxs0@7H[w x-pNv5AuÜwY%HW描fli}Mr#N~/tw]AAbE=m %O J"$G?sίfWy-ȜoMkt0Dסoh6:ֹj r^:%/|\,neOpFNjYo9r'?1ȈjW5K{&sy 2AR"ltH+L{XR(o&`ecШl}y,L5bW˥9>|el_N3Iʍ76$dA *`Kbk[MO} !:'ČwL=vSnX4@i/QJSYW;?e'8_0uipA7OՏkcc6yŽHgqˀo-G@ma7kk߆*;f\%e qCkuA0 įaj[Y +t{L7fNAHm8M_a2kL^|lR2ÍdzfD޾/W9% ;A%nnWF/m\(߶|^*T0<Tv̒ö7ǁmeVDl8s L$ݒ?>dF脞OOn^VuZe*"O,sj#l 0{i`Ega6ajdd| smCZp\9>8_./pN/F%kL@ f`:P]|s,GAN3s=lkѹzЪl׿B O*+evEa'FiT=Mu.Yߔ)R67 G]I۷g&5GChbõĀ`ej]X"k]K$ojSҚ|K6z!ςq-#OtHW֠Ye +YRT13\]]m6u߶OfAa%0'ր XC 3: ɏח,UEը~ ,hV\a asx5uɠT*ftٰTR헁9VHE<(YSPw*E/Xs=Z ?%BBewWk CMHbsUT-z|w__ZO02$˟; _?{QgO旅%Jͤ8F]^NšFtu<^0rn u4vԪ WdJqGJ/^ >"=ħ *DI I9a`F^ wJf/I~`g>XTOvlsi> b5ec+Su&{Xڲ8scsWs.V~ R962 Z#ʦL\lD5skY=t6<{nAQ/|ysHg gMZ?Dd}7:B6xLԦKe$R׬9,6M= &+l dQC^7M. 9 ֺp*|;Au;jX Fw%@wrmh aD|&<avBmp@g 8p6k9lԆfu7#Zqz5@wehTt2^t&{~HpkTFig}ԯ)s k*M8y0'_&[ZvSZO6y2[ݣS;)Eu\܊+> ]u QfXLTJP fda {bAa%>?!+2j)ӿgcNw,!h$Jiq6/2}8ïTƴ *b`>-2E$q&e|`跄dxvpJԡ!#|C3El'lZHF]E,h+Y`QT t: o`͍{'-$fFv 9+c$$Cjёs$0HeYKYo".z/t>jreئqg_vQ[*E܂V";N$ʃܰScF88km+!Cퟨ.3,YVyLHb`TFJѠ./J~ҩ:2 m!]9'/H&:ťcWꩬ25^֐$^exDXw5;. ɍ{k4M%HuS:{8ȉN+cSd\VUK< |A"1l)AME:7Wt#$ f!yZlҒeP~ioefSVޔ>rCO̳ Ɔo(*n\'f(qNo(&A\=s0S)ڲ\ ˺PdNe L6`kʵ$ގ:$:ч=IȍaA[[jLϙIΒ·ܪ7'-Eg&E=/5z#7>Ku[_vlr0TgQvs-ۿٝx4M%aܲ^m>K5zP_L]V+ӥ:2-:&V "tٍXEeHE|L1jC*3$ڭm^{r;D 7 BTi s,UX?2: Zfٹ7@J1Y+!zs{ <%H.,a?ԏwH2jԸ%+?.qpXwF$ǥsPjN3+ s!PJUip $T[9澳DC&FIҖ dő[4K<><H}3(8?vʄ_Wa #/Yb~ IgGqM1 L(.Lw6͛F1\[RSa@ c{+8w^a-CνN5Sa) Xs:Zx[.v ﮹# )%op:1gh=#Qb-؅7 1X0SV-+vKIv1wiKIȳ󠐺uScfdڻjv]R%z. :w.d/<bj<ן dJW,]b}ͯyhT+$ㆠu0F^KvZװ|k#Ƴ53ͼn3u .N'H2V]jYerTf?y<1"}zl/.tֹ<owha-~v4=sG*۫٧_+sAA@X.EwƆ5R.3-}wެUp.Ob C$/;;*grQ4}H׎ vlZ?XƑ|Nuc;8j?z@pϑ a Sl&ىg4̽#ȼ 3S|ܨ4ftg@5\_sWEaɒn+l^N5 F臸PsYmoڧ)\R ^R* r*w9yҥ#.M{c?_y-S$NN0ikSUùA7<4ı׽QD8F4V)^}Z=v#OjmNNO,p@0;r`h8Wl̀l.kx9@t2U]'>bY;HRЌwC5d-w`ݼ=cpn#wBd齏cRAlu ~sZ?߸ؑ?Qۉ_}[F7nHo3ld7*:{j `1I KmSR>%TP1xGx̻)`ug_oA,d Oo1@)#>:)ѰGz+싱'l@'k;oGB1:,w|_gGA < ΞccAh"{gjt(qeBoE:1zh'mMsTR0YK>7hyT>!*;7'DŖ.O>c =^+Փȁ t\>Z<+GSNro]+S.UL9`㤾iQ :TB358 gcb1z 344 772 xn0JwlPHxnЭ2%pw&aH-7>WowкlmXȹntp eb.nT!j\.ӣzcb+iObK%"`r4"TvY]oy >۶ Fqe0vC8` 4bV#x:ERI~'.=$e-Pʣ7PZ_"Q5{%tmu 8yW6"IC|b._3 KU . #bF~+Jx6_F(9%"Qn Xnt|bVB3555 gcb1z 3538 13651 x[}{F[|i"'D6M+Ǿ8.}6 a>}] KF;3;;2Ͽv2C7g֔1vš ]7cC ' YԁO^Ob#osyGmD1\>\hpamG 9z>xs|xiGOO/.ϞC-zyӱaEčqS 뗗/q䤠oώ72fO,̼`<[Zg\iFX7S5kawED6&F.kgcoȁn  |$Gܫ!Ǒ;Lb\Ik;A1aވ[]0Y<LJtܰK!n(Uﰰ8k8HŹyEanQ`cXbb (;.;H+ݥ3Ri n[Y=xO7`8,\GV8bv0Xk̮,Oi׍F /5fS,Tʹv*&`i:3Kğ ,Ɩ-WA8ۄϐr^/OO~ŀ9s`pO>1-ԏjDMTOIUtyYA*˔8T)oEO0F5VQJ]]H=(I "*)ďJZ΢`K4Eurd#vǒJ! \N8Ⴜ#:gvHI,ܼju\fn;3q[q5+ kP${M)R3JQQ7o$-&BUqHFG=-n{f#ٌ|[6ۘ6#7Hp'.a x1 'ApI)0 'a#o8/XLeUD\b_ڧ͘J1 "fa:>!=o &&sA!WZ,C?p%ŕ~u&n{5pNx.#E̛MDw(@t(TG^NX lvFbCPQq+.nSwÈ {EWO{BXGӨ@ &X CwAH<@=p`O̷f s.׽JN CMD MIEO,KmK + X] ^,,!~y ~ۇ -:|h>&|e sė',,3fL P4,ZcCx媕 6LΏ^wG4yP[C)&qouY0Ȏ -0C >-Z| "kM8&J{M]q{MlأHH_{䓬mҟ4|FL]Q:WD\V^)VÜ` <-S5 W }˷eg/.^?i#eviT냀)KP+"pW87 ]VxCh BK^;61s!d[u-hE G/( :"^O`SvZ^;cl[CVa# w[Y80Ae=1l"a,C(`Gkx((Cu2ߍ5rZd<-_l€.˪AYkn3f< *q+uG ]afE~нY!Lm8[ @KXa`E%ʎ46궓/Ol);3k%p"9d23 `d^B{G.ϗ=A-rkn.bhBމƱ/C=|ME%Nx)gZ&DXFmȢYsx.Jyȓ*-.+|*QJZVEEPaUU(vE}(xK,5go#UbN3֋IeEL-6Po uF,Uu)(ĚbiKjy޹P0ۺ-=J?J 6$ְvDl(ŕ̊fŴbT9CN8^EQT >gf8XIMXLVMWZyvbYT*ٷ8KSl#JZ1?Umg8mǷ[BׇP%T:4$`90CnA="ꕫw`xmpJ@K+%6$c3˩;nV3ss%~=!nM*\ley_Jz/_8; B&NbkYrC[^S+*uXYs+[cMjpFMmb{宫h^_2Hoyy2۵C5jTRQpȤxUX#Ju(Ք]JuKlL vn4zXR?˒{Ed%+^?7uUI+Q-\Q-Af_ w2 eAb-\rŪ~Bb+dKO`W-/uWʗx3Jĭg ,W鳀ۋ+j_EgsWQUTyb*⯢?Gq)Z$˽M=?=y[ d?Q_ʈuBuR|3Ɗ\dqmR_|\!>\ۡrlvB10455 gcb1z 10437 49150 x}ɒ#;eY/+<8ժY޽GIy{ JWڻf73#AIYˆ6b㏷չe"6MvF#tM[4ſuX[wüۣ&,&s]Y d;v8`xjt1J˺,&cP"΅m.鴙[v[nfmN@hdjv,g ܴg菳W=Et3p׭Vi} |MZ viyjwTX{5upcI9t$LpGt\9If;iNgد1>TyBNStfM]:ePL'¢H$P&c@/oQXjɈ[:^ٓ"H{AzP$g̴(< SDDr  =pNB&N ȏ*F":(+%p ` MNkpE O͕||dYvQ~(G%mhyc`[d%di, . K$GeI6G]iD\ʼ( ˧dYvQ>Y\3.GDku 1, yLF&vlrtoi7zA ݻbyEjjkAbJ>`V(:AGHhr,Əbg]}Q=|LW M_4z Hb$3؀dLKOO6oFa%JuH%ClT"ABĸ`~DE C_=~®6TG+X:Ch%T x)PJh(3 (~(\zPtr?E;ȅSOgr)Ie(4OmGGjrYQ.?3ʔp.t*vݍ:iƒF"8A܎UZa­`vh048X,X1rN7$&-\Lr\ z0赕V1$*9h"1& G@.t |F"*pcȞD$ ޓ(A=؈~1};mg]9Ӵ鱑)q$O:2@fcltc !)H(TZNKQ2|xO?U41htݟ:t0veqLۊ2ݏ1Hxx ZgfG+15Z($pwXdJHa5X% WxewO@uV K}C+iE 9:Z$͍!1Tc{2-*AIj=0!C!Ld .I9`8~, (0^]AV/,0i[J8K[,ҝ, RqY8 G, `O%* Z@ HK P!ċĽ*aЛO~"-o!}"1+=FZ$J.v쩧<CI a`JXdIb`U4gy;CArvvΛo9,sYB(8tkӼspLoYdS} |xeL9dUH$A;mE!Zp(98K H['"Cli*j.(a #@($y2qg p e?ڒ/[[ڡ*h ͳ\DˠǺ-;^ODpW•̍R4=hI10P9k4?W v` E1JY{4ڥڳDhszuLFŪf뗻?.n8ڟZFaDtt~r"ӅXbˆ3l~ KNѐ+g\X&H ]2_*dQ]BPhAǃх#xCDDIPJ P{<>\B>nӏ?#%! @B 2x0O2Zkk4rg&T,) p ]` :R\ $ r_BCHIte!ԤHN0%34%1Q;`*'hlygIdvt1#lf3XqAtyދWDzgYȀya45Zsr@%Vӎ! ,F9i*trw XOu1oO=#JOʯ Jg=uiқ[QXuy3!@wCOz]Zh=.{RK>%VXu]#d!5B!nOq3d뷆Iև?9ɻ(*H͊|ͨ!B"qH8IQ6Q Lj8ߪv׵`aE!T6 L0hy;-K}X\ߍ`@qk>ĵ}~a::хktp1#ь8B1tRT]밮zaxkE@Sd+ANc3iL*Rsme6AS|!NW_F# FfݺsGs^&7Xw> eafzK.$EJi}9 #cVk%F{@;q_JHL۵:c e?-/teⶑRmge8RnTH*dd\*RaloĀα۲#Y?*Wg6o%+\myG5)IC &o~Qkm&^ u *ech7qluP# ^IOqQvtN;ohed{unK5vf}P#O Д!%+ %[Ҡd1zB($~p[3*3Xyt6MTDŽOb*F@_1.Y f8_ϾHn'gIN/`f_oxD)J\Ȥ4&*aU:Z$RZ_ի70Ęa7TPj}:WKT]1هɏ3=r;$ \ *k$qbclmXFd&sL,Ȉd" 4@)Ѫ*-3 E\q'Ln͑^ܚ 3eכOCA-2LG !V3t i0̹uWZ^  %jw\@݆൵tN8qk-[c XupsiO,JTN(,]Bi*)6.C!S>Zܾz]̲@ݎcdq1+a1YO`#Ecu4 .ZXҦ\/Ȣ@V_ diU=>eraCOyD.#XÛVDZb`-?Yײ}kb-Ja-=IX C/c-:9D(b-z}B''XgQ\čUŌ_*#6n!=Pf9D D`ImI9ysE{@׈ FBy'Wu=l؀1Im@ A6pmlt+PǴ Ck6cgF8Fr/)hZO; P4w3OfwdDL7p 2kY*->>*"$ZHsw}I8kD}am΃kjB$ACǑg-U鿧xH9)qP 'NՖ8% &$ Yof ?wwÆMwP-31H _ ䷥Ir<I laזLBoTk>-xsTgrO Jy%{fTp%&ER$ c>04R7t> )ܫFb % ШDYO̦9%hJ0wrWkR%&}ض3E4|9E5pd^el"RHr@|RWȅ}.gq[z>/-bT&u0Tde&*I*C Efo\%:'T(É :t[V#- 3^5/@rs P-&%]4Q H dqs~{^˿f{#WCjK~9p'oo۱ĿۃR۵}7Zwy;լ<瀍 Tu&& ]Oq7z[-1ljCx_qXDxt:x=jjެ Zr:&+^7 ZI}d-pYʅaQ Q䒡ٴ7g`ITmns讅O#E6',M` !' v45bQ`Oa#:A-s iuLb+ >hüc7Ә< C]/2({>})mt#v>ZNgRZQ{:Ykkoqz+-#c{ r1tR_& k#Wq{8hS2(k&N|/)2/쒲xK";ūB#5utc'5L#`=vo䍼UrtkkD]t-V `4$! Io[K,z AD=#X)s +cB6Fi8W#%:l^ʌ5p.ݒtrQ 9nĹP#GRAH2㚓-F`"uIF,"Z.8˖k h Ga-],5O(Łe2~7q0s8Cj18M5cOM`"uU@d@ seH3EFKkqkY.kRR Ā\Z5,t{QCͨ ǑHdX9ņ:gؠDnÓqsuL$(_8Hq)8n 5d#j7Y.$|N 󇇒.c  ]&,_:S[:–5Da߄]h*4q8}yt0V(#CV\͢K͹MY@@oiںj#f>v&>T+ח_oikh>v5z?R&ጡ$.ccwcx[b :u ZD7B94'] ͼl|||MIM^*(O 'p$)#j>\tm|^y㉱JVtyJ!Ly%t2jk D'N/;jD_ EUc!RpԈRGAMe"lO\ b[x㢞;H3h9ǫh4: GMж*8/<Pj1Oa qCk2nDWUr/൙/ uhhT%hH| 6,]QTzz.|JR풒Z]N>r-9QLi܍wcW-3(j0ss3hJڵ)WqDyC8OA KmqԂ6$u_yrΖ}3aH( 9;3ƀ N4oHtrȌVȜ}]j'wLY40Q69_eA};PZ=w)Bhqjj-{@ƙl`Ab6 IEGK6=ϻape,}EZ"=ʨK&0`pp)24Z272O#//^Iu*o϶z/0(#ZVifq faCB YXvk4 j|+.UuF<~8əa0P|22(Dr f 侎0w @R Z:f5hE~lwpL p/[F~@*[/}9c#Ұ|E94EqhAbqun GGH;i}2q 3vurf;|#Y蔓c\k>7ew":(q6ah19k2OU(=xtxJgGʨYmЉ\(_g:7!$%tMWw;i"Zz)_[Z_6dZGP-0l+Y3N|ˍS5¸'$ 吒;+r:~L|XZ5m(Zrѐm>;)ݥ%kH$H&|\G "hc4cyp9pM3NB7y5b~˂$evSR#Ǖ^ zK؋z𜽅1 9b 6%jlQKpSu-gu;(WϷIhR2sΠKh' lˆ.d0l&nkI&E;6y|1|:TD6'ƆSrA591h*$>|$|}FOTaa ߪ]wZ%J_ U@hLWdrl(w{?R; ^ήSjrڟ`q)wH2&dJt*)REM\"jˏĶ s\PKJHb޼*4`e b.mT|~{ZzpiqG9rqR?!#Na5`0eurŔ%J?:(3>H^? 6E6 wc l` F:ECeR   N:h7"7Q6&oc`0TňhZRQzW٦P-&:Hh(#sLvkj\29G|gHWy\< ?O:N0Η> &)cG-Y뿶QYFNQD0I;KmK'p]YqRJK_+NX0n8` jD0.@}z>nt_e ?yR$R@ fi4MhІIvZ|{K};Z~;_oqW5yp |{kɐgi?j9adΡr8T06&wt;^hZy[Z諣ZEꮢHƾiY"ji#VQʵ͡Σ~Oϟ㯎:>;>ؘV{~u Q{|Quq+;&S>:k%xkC#MxAcK% Y=آu}`huFM#D H4%V6^-I/βD%+,Za8k˘>x51WWkHjүք՝Y\M\ٚ0ՔdlMΊ<Ʀ}uUwV75髳5Fjl]yis[.gۚΗ ykTĎk={!;h 5 !Fp rr6?pNy)# j^j P׈ f`택6ELWwW&)xuAru $]Ooͷr4@3lTυmYM h\x5 BYSAU{kԠBsB qj:\:G !^UeY R:m,$u:d*56:S|7R@m._v]#6 ŃHEmT<S$6Ӟ+/L15+#W!B3208 gcb1z 3191 20321 x\G TDbUߞn1bNxgދ$W$ ns%o=bH3 hҠQh@j=f>{3[[v[eۼf5oQTSY4m7-({8ܒJYy[)pYA{zz0O:b0hk_UuOK]u6El P;;v-| Oϥ*&gwunX .ܞIY0@Ͽ_g:o{y!7OB"Ѥpf1LL@tYzhN̜v`BB+3bbLeKYDT$ʾh9,i Ӌ?]6^)k h|o~'PiْА<}2)FF-E%JGFV-E` eTKy;^"8?X>1&= ҮU=r/7vsHX*.*o"v /X^ٳT2#keD^&vh>UJ6+{PSʒ Y+ & AFzØԳpDq hfӃd69܃8&΋N5~)/4[2?7{W83;)+O83/UԷ,6GA~ZiI^ui DsLˉhmG~=}Z<~%ދ~;I0BItDa#>m7ɍ(W7#d=4ȡf޳JCXdu7m(8E:#&1>CZٌn-E SYnr<3vT؏1;g4w.Y;{3Zlqo@ ,L7a?}g gBkB~h%/p`/oX#3Z#{CPCﵴxAv{ҕ'[ޑ3>Twٴ P^a -a|f,ϼc|n&z-L(E^}bࠍ_'\=rTz9]98C^`<^o;fyߒ'޵BbÆ-2@ br'Ey8KA` y!!W+w\v,i\f"ϼg\uׂzB&QpN{j i3H.R4H.bcBC+ y]cy3ys9\T=BOKQQ*k%2!a("@$-y˯^֐J4kBhD{Kzq Mi:(1@ ˃ͺѼFRQpT0ȼfQ3ipf3V_jw S~%i"e +I;"1΁] 7e[Bq$'XkAĽG-s8̚u,6AX(_TwD\SY`,:*,c@yKxfHrcMY_Gh ,%#Q*NmTwD7XuTXN1l ;IX(َ^qo#b9ǂBNX]9e5fr79SBeU3SWX ؜(S*3/N.;wKJֻS+^\1-N@/}SYlnjnQf?]:i'~0\"B/#Ηn'4[ۺj5~)_}f]:8IPᵟ g&^*# aV2&c?L[Eh'} pZ 7tjuT(*=oGB76Ne礱ް#2sk;O?s:Zwɹ*rO΃ {|'Av*wɹ]~i-: %htX}-6$ϛr.-?뒾"ĬVHR6~ە 9(sľũcLp8X,'0Lkd-C+Y%{p"G;k t9#ࡌs]mpPHzy(hǝ.쁈dž墐cpXcE9[_a7.B=.A!9:П[]j=X?v۲k@bj<)P])IK}vl)H&a1бASٮho*}1N:Nғ2JB247 gcb1z 233 297 x%Mr sR*72#ьs38Y:q#,%o@ُv]H"); 았 ;@?O}^ƛrךujKq /6MtA!H{2IT7pL۔WuHsݾݧҁB00r簶 uԧBaNhPG"G/P+  b$h _B367 gcb1z 353 483 x}n0 ny ]v%YgYBI MUpJ!wOGu(' ?9B'L)Qe@ޛRfo20yϛba/p^rz%0ׄ+!iLts;rs16#Lf %znr1ʄf;*ݠZh2䳯~R#I(=WB5}|*o7]&A,u>O.u7:yz>*ӹɳajk;fd/ l(e\ 9 Tul(ׄ|" +2%\͔F /^GK Cu#5^_ʚ|$w2gEpython-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.rix0000644000000000000000000000026213152177142025735 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x+,HIMLJw(M*+)K5204740403450,*JLO)0+`H*;,(4%ټ0PX@˜ }$python-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.six0000644000000000000000000000011013152177142025726 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/obsolete_packs/2b616bd5243faace6ae6f83adf92756f.tix0000644000000000000000000000070713152177142025743 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=8 row_lengths=1 xKn0D)t 1\(Ӈ 2@Q%UկߧP_.c[͑!$Nд`Ns "u E鮇Be59l&䇼a[WzM!ɀdA"Jmg,Mb,r8PeT'%↧d|k?eg {cQǧa/Iqߐ!yP iaHbZ;7+eSBS_?.r!m/?{JQ#]nrC_Ee1e}Vt|7-\@N3@MdSL0s<~:c At- il @ ̿python-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.cix0000644000000000000000000000022713025575536025643 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x PLQTD/n{wZ97.jDŽ)@c"f)aV (b,STpython-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.iix0000644000000000000000000000027513025575536025654 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xEA @Ͼ.į(bmԥ}cMNcݤ"M ;B gXݲfy9"%eɁ'Aw|xbfKC!X( f%vpython-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.pack0000644000000000000000000007347313025575536026013 0ustar Bazaar pack format 1 (introduced in 0.18) B13999 gcb1z 13981 50041 x}[Vރ+%EtdB6x*[jhbI p)Y?~ۆߝ'-Ɔ5O׳_ryvp.ް]٥EM]Mq9\%Q|ΊGsnuH)3G5S_|7*V|"xɋ8M2*cGəܙ8CI\8Ir&Qw.bt#Jt'*LYZ$Ezd<Υb7-ʻ(/pnmwdtm9U[=]I*l}ĄX6<&@Y|' ?RAo'ahϜ`)Mmblx6q%*z&vIZP(OKsABF^Gymmw|cuTԶ88h-$hF|{}o 'pyߨ4Vut+ `3kLWftwqVȜ\-)8@yO;8Y"d)꙼ɳd AVdZcm5*` uyc3Xt%$0kހhWfxfmD s pY%I5lKp,]eݡ}fY ;mWWJq-:G]G3wO"!5x5sO0l[f+zR]L !Hh DC-ZXvtY7л] s ǻ+0 P%Q# +O@&*n3i?U |bagk,̳(LŶ@I \G{KhDHX2Pc͛FbQJxX0I؟~ ڭ Pi[[sQᯎ_+?N6%һ G-8* {ň~6pRY4(k5ƽX@ rփ^[=d-ȘMd'U";UW3LF6pILx4d-xYSsƄ=l㳈XԟÉ4S@WIGcb} R`T, '@O0qG<:׈ꎨ 5P!sQwms^hkϹD:ꠕ6s1*bH0g-Q[ sݡ7QkkkBuԿf~0oY~uT]p{\`Pʎ"ꝲƔ,^\ ;P{*10ݢ'y~yw/}UW,]$KcT/eZPt7eT9j;'@b:ߜgP{f4P/Ȉ$ցF|oS>خzFR?rl{]LBJ-Vn=G0E]ǸJ8j*) {UFS}ЂMcxtKEsDri巺U;?DZ Vv~/#:gȎKO+z -@1]mQ_`l/ɵ`yOFicF>K?8YJ6tТa7 (an\}#L\FNL0 3"vY!3& G6P(5 ӊł4e <~ 焸CΜ d-AjB / T6cdBSҡ H\=Z9>3mryʐ-v)FCLQ"1cPFB̠?Ծ(Tp0A4,ma(!m߆s=u,A3>nI5*)3./6ˢ]3 -Na>Y;غ Η].Oh=vQ1(iZ]×踸+]0:7Ha1faT16<2VUlYdQ1Ngh!Gqgw&oF+Y91_T6:2&BZ| PПeap&h&Q8 р*Y> ys\u;ȱs 7D ;haOuHhO#AۆU}_|=X>1>*OT7@h{ټ|C" TK2)M$۫3ۛ3U hsmkiwHR>'87xSE;L g46i@Y5`%hQ5;{ŹCD|eD/ GzA[sl@&8OF^! @QsB2P+w)Nf &`7>Zbw3 #^OdBPQ#ۂtG.J]D"X{m{ I3t'yҋ{wBXj.pE'@nDǔTH[G ~eͧˮraѰhMboT{i2Y bI?^0vg..F,`X hTG3 .`*Ci1 @%*w$*Jkj4U!M)\8Z"$'@(tByl1]#$lʚyx-y&27g$XUra\*[d&[/jTڕy™S !=зw_d{U8o)D6*ZAT =)({?t'tnѢc3F}j6dX"ZDXd)E1"h]J3PbAٵ2W.KYvzŤ3>+t:ٜVHW[8BM_LifU~XvAR[؈"OX<7``5ڂY;8"b#c- fH1aGGrDD!d,1PANJ\dJl n]AVD{k&phGzHw=kx{/JJH4 &̈́E ?%寕hT-I""w_'viK%(A.S3c͕ vPN÷M'=9h:xx"v@>C!a~Eat%L06jXnYQALt lQyg@r,wȠ)RV<˭8ι"?MC'>z4R5H̘Y`KC( >f4q.-.O9GY``b%E(#-K:>{E#gKN1e5LQpr^K9-Ig5yK5AZZ.b&k6Q<-#Y_356eԆf3]til@R TAmVyl yOC vaUfL;y)(fv5;)뽨\U1,b IIȓh,5&2JUR)*HS$'ElBU5e/5o=uCO=ЪnRY'Q9O~pbՊcV#-ܰr.nsQH kLnʖh 6 ś) |.֨!»Hp]-ve8K=[\?l' *q VgRHe3:헬 %j<'{ (#1 ?#r]` 6Nn%:J8v.lɜT!^Ӥ|:͜[S24;v$65dS͎J&*epo0iK޲pzQRO:@I+^9o?WI #]Fe՞~]b/%:a!WMmp#VlyJ!?-s%hF+DjK ]E*,u隬ZT~7u UˊV9I=8=KjʲL /CrLs9z\[LScݩa[F<IU1vF[3bKKUe"7"o)?`;l NF2) 3IQJ#sMQM21 gv4_M *\VHVVM 5j;" -f Vߕ ɱ"kuͰ\ H{;SHFy˖Qo#!q/VHQ=sF\)w}*z?*I q% F ߥ@om Y1u9F; # u;Ja9!lPeBt[֟OdpT[T*NJ"Z޳ MR kƩ{&BY}+A"{7Cq\R"(`_+SʱS-w<=mG297D4[(#LIk>M .4@EݕueCnYXg׆zk-؍5Zs| |eUFgٞ+džv:c;ekmOD`Vgx"9dz^WG0G#S,ܝ}`oz(6˧Ͽyn>F`CH;G<r*:p`#rR=CmOExЛX]aKrr@x@k_Ժ5eoe8}SGQQŔTR;DXXбG}I5҈F#Q/tBZv~Enx?#eB % +eP OW]}n>R Z+?ǝVަ|@F2?%yukX?Z:\BPHZA0ϫBu:&H4&Sh+?8< uTf ZT+U4%xn/+{yS -0+h*j]XKя:đ5Xlb{ V2\LAuʞ5 FI-/DlrFͺg/~!o _tؔbؗu\a4+wU*(dDeR- )Tڊ-vօˀbǪwTDm}kӡ vӪ"za/s\Th2.KD$eاsAK.AP,Uw\5h*D='@*q\U򼋦lO(q ,pyw3i0О]oA>TV7ɡR'1夰3q9V7096+#;P}|i}K/fxO1'WK+F\S,<654Nqvэ4p4^L5PV"J';ʞRkVY&3Fl@EyRK[8<ڤ.ȄfGv&}@4҆>{*`ga=6sG,RaExgslLe".@/.b5?nuj®-QW;Grv [nKer:񺮖y4+b0n,D*v.̇R[eGӁ*iM#zLg?s& esz FLߺ0rtH7Rgn==𙣈hqu",F'ahޣb}_&PPu)t!u a`BO+Nߔdc &VlKEkpWp$f|-ִm\:isH֎CkCo"A>*%鞭=<Ś=xXԣR-^ zP*i\kvBkƷ4 -?!Ҽt` B'ob\t)l0:g-[]6}wuZ*Jd0n2+6T~вbU*nGEmF5n>Ԫ|Jb>PёQA"+,v_U{NGU{&0GI,UIu\ qGp _A o6:l:eXtW rW>xƊ__]\;y.$`KXoEf:YW a)) pD&YMW!r-I 3Uz΋zzױ&rT‚ |fd_62^;_ySrWʐYe(o/(Δ Zya5^Q$"VQFKZL\햪:ў)^_/-:yz$ɧb=oxUʀRBa/uQ)vsT75ȭ& pB35qK>LU,4Q5f͈G],z;FZc,?Σ.7h:і`;%Ge?\1[bYme`QI#y~b Q'wSO)_VFiQb_lmԖ`ʘolceaB]IkZ/ly>FR.|腡EMFN U 4pjA>mͧ+uH @7Y EMs&$-z+$M _ ʆroW<:j3CѰngk! }V,QÎ"Mu>uE"$3ɡI^EW`rT TG\\2Qt&D{ vXJчeIIG{9C H] gvsLLG~]iJyVV;&d0 4Dp& I\AK :9f䱸-cGRTBd{-VY:5j,V4?61e<~9Pi" s裚q&G+^`gfQ0 |OTHl }2͵\w#YB._x jNb*3K ,>`24zZ@ҝiZM|5jhv>Ux>y:(Ck i,r6~=Kuܧ\-ŚG\k $9|!?Nܵ>}EM 'haORxq N&5MZmw?Uw K@,l}>?8}k&WB2054 gcb1z 2038 9375 xXmo6_1 }Xi6\nФk nr)++:v[4~}RoR Vpșyf!WʭIe|ŪhGFȢ.JdI,LÒ Ljg\c VR%/d1WzW4~p4 |nH/&p)QeJnZYI#}xŔ¿lg!}lY/xɋƩg%Wp;r7vd̞;OsVl)f=Lgg>e$ߍ)8gwXFNl]b*;uimyQjL9N7MഓS]Wve40e,tOԔunG>w$}LRj+qy,Z[kj`TQ* R8J4Y&7[鲾ۓ.%Kwсع8i*Mݧ4FF8-W+Y2 \BKL5%{Zp 33q]PYzвAcU@ i[+KOso Af,BNaipY6>o[&^sTL,nzQ7Thi'&arOR%'׊E)187r0s94^Q!7Ɲ+Cbj}lVwmrOվ 'l0;:6%M쮯ۂVNiWBis =]{ 6wϕғֳ}=}C:@k.:>zͪ_~²Ŷvvl`<*2f[^5/%f-wc['KYH pζr &&z"\yi؍1H#IK ׾VީGm1y >x^_\) O C]}@HHq /ǰW>s]kYo3_,LTI]%tH 7b[_"B3468 gcb1z 3451 13455 x[{wF4kY[pH@.$$в,mFJ'ΌdI =XΝ$u2S#70}늁1ֶ#Fq1J xSE,/GYN !3yOm =;|vA,4Te^v,HP+qa,:m)!._>9>;kggOpzyDWÊ0%>9W/Οo$ (HA3\99\[HƠk= hުȊ9˩BkZm}54>4(vѤm];/gǯN|xU]XhGA y>푼1?hLÀ8*VD&|53Ct:u^Ac$ҍn `nv tޱ"7n2>:}74͢F?A%9o].NpMs#t I`,w7SڮV0vS+H,b 0n 8 0r.݇?~9+kBM.VZ͉ XCz*:#q(rĘ2jGc7J7ƽ#>bfzȔ˴;hCn9͂ 7&٥/Vw@]&SR!q$8x3` 5čn ' C)0pU# =מ!4& vdUI>[5y($s(2 gebcx\O! \X!_YvHC^|'LXa C4bh)0cv~usr+5}lJ{!]^#"ue%G*sq׼^',v{[R*R)dQEsjIJAԡ!,0:֍-Y]cD$"<S{ ɩ"RRDž{gCރ , b/Ξ<5}SYf2K߭2%l ʫRsʀqQov$-&B UyHG՗-Lnu}5,n qxaȇ)yY&,1P 9-u8b8)#vF@xd.Or+/m~ib7"5F8Q4IiΥ&aD:]6^<輵c(^/mZ&994:{3o^>=SkuB) kx> A+îa(J *n%e JtQ}cqS_'a|O|p v wOaEhUWkw.hȱN(v? fg3̹pCQv'k:͓+)2ɞ(E)"F^rxGX1̠I K_^#t zxv~/&CVGcf/ ܙal"En# #l{#8XAhLa`GxAN{ Rfܝp/,7[2v*$o' 0vaT6ƒ^4{k,&W 02"즰@'7׈ÔgK[l Jک>e ~"]'Ow2mwajrC8}Y{EJHPr쒴% x8B]7E{j_Q^3Ki6ic}CV1ɶ[0<}Aõ Sf_]C7QtD??mt$m1R>vF^3BQXB+z就+z5LYb+[ypc HȐ6&(f #\qe_eFM뉈'yDlHDj_=mP9eGOjS7K5;ɏ#FTi0uᣵ<Ń`FY:{n"n`udpt`E_TgZ+si}ձmX;VJ+W0+իEoE<7˷A.d<`*=$\V<ά|6A(6/тayպ "_̭:y y+Ǯ w68Q@s|8S\A6jc㋖\!9y:-/K|V*ZVMEPaYU(wy}(yK,1`-Uf^76eEL 6Toe̵2PDu  Ųw[zB)xXl2H2)t[KHϯg[[W3k]Q] ]:lzGQrg[c)5Q,c9XXٿZzhjUn݆R_PZJfH(gTRpb+++MZ"V?:w=S7M:ju61fa&1(uq|*g;=DxAv w)gǕmԣELr/yE4tzTRSp%ȤxuXZuب5]HUKLsna4VS?{Ed%Ų7K^?u]IKQ-\RW-Af_w2eA[|b-^zŪBbKdKO`˖ʷ:s++ K곀CU^FY/3ŗQչ˨\2:1e}QL$-CAN)W2oe&!:x!|m.}48Dg(>mwCǥ4]B10360 gcb1z 10342 48678 x}I#;eJ/y<*K$wݻ\`L<ًVNw R_` SOZlL{#8 Ai~,'߿-A!% qSVu|45n1ld::Gf?vvGYp+Hwp<7Pmh<,pnc F&z$ jU&v`6+}Zje[˼G Jkx5hhXyЊ`HAFcRkB)do81EPI;[%cqevxR͎|yWnY6GqD+RmnrdET:im RE)5qDG¼!3k"1mb4d.r:/'cUr[Xmi35[fn3Y/' kdV 5M7]zqDu{f#u9zuccw*'x #(\oZ/ziV*P87OKDtZ.DuVy1HEAEL`#X#T{Z`gܙWNj@(>Rf^>y\VSfx*lc4K"" (x qq0#H`1i5<.Y'l4hvCywI.ذ/qw~ w6H,q.xD^ހDPX^Z;d]_ 4;,IJnfE"ށb8 Ap) 8՘y䨾1PX^Kb++לD0M0J,׆;5CJWˇ .[҂X=D7xbRCԒi8[> rdnQȝu3a%€Q2hɂEZ ˧d^tQ.JV",G%vH)G,qaWzLFnRZ֩Gl@ gLm~rEqJ]d( Б#tHR嵅 oR,ƍrW}a=\fGҊO2m^>:҇X)I0#x/n r`w91h" G 0|E$Tc<zP'wŦ 3 8!ВKvDljqVpA Y'șKcHe#!h3iYp{샯F9~d1bOMgmLҸO;zN2O30Hp;q}YwKbC1ɨMv03΄@).5 酜zrVr vLזJ2qBA:G)! r- @<@> rU!{J)5sŴ4"Ѓ ꤺŢ[Z>& iX|A؝y@G*d]~"@Dhb- !\1tgx9Gy>mýf9MZJ(Ҩ053(%jXG)ՂE (T>byy>TTb pRK[Hxr^WS?a zsN!gȟ@q~!TCFrt1QJ& ɈEάD`zAgXœ$yRG ` ,5y1P =Ɂ/^ TS3HeX# -|6%CrUm)&d3 [xE@;x@-!F)n(bQqkt`q z69԰ >Ӏ~ԫ^zN=QG7 q_{G_>׹-Bo/oQ] Bun{У:rR/\XQ^y'w}Ԉma{ QVdyn-B<BSYٌĹMy#K;4;ϰrHFX0VG}b'\nVUX',NX+ټ;v개B=`P%7y߹06[d)B]zItqOΙvJe# ®=rKz"fd+֚",挎fAJqVxJȢ 4Kɔ_: +"ۭ=:sxq"^%&_xhӘ f+2_D%,]vMF1Pf 9}d;! !%jhؓ_ŭ3{v6 *Q۵q:(RWC(hSѺ}g+0+) ZKMr;/}T!B f{$Iڣ츳`໳7^FiZJuqBSzQX,/0s8Lzb^jo0TH>+a;.+dfn>?vͶ_%r` r ZfhwA|ka"ax#%D^ckg%l/i)AǒSaBy$'3>b3б,RVRg׹>~G3[f!0\@#lZorFy:9XIA+hFXrϝMcpRzT>­1vN^<6Xd+LjI\O(80R; V& N8UL)o\9 &"B#R67%"U8ߘ֦< 0D}@Z(zFq02FҀRSNb]Qw<ι얏Y"UŽM$tSUlaZ2+Qeʟ(.oguA*@(O 6oQSDNtHJ,H }^YZY+FY)gB#86xeELG >ܖg{}(q̀8FF9Ia318冋phܦ\/Ȭ@V_dn]=>y E{: (ATADf4m[u}/^?>zQk6.q+8?Dȱ&`u]~v;kyм#־5g9E/֬ܓ$5coŚ}BkXs'8kV kIǚ9zkXO,֬yk'a}!5dkTaeؘyQU%U}Y Hp CY@qEx 0tX57bOO;RʱeA̖.sP N&0>vVZaJICJYkC`xD͍VX SF#i n(fbҙpmrkʼ!FJ8]dH 1BF`¾K /D lu^S%N)VC(: 70TwyÎ;l8T b?JĜHۣ脗;YtTI$,P 5 ht|vV/OUhJtZF+h# z>,wе6`b&N[JOK?|jJU|_0QIS-$Dx4kqEk1r`HٳJ$*lK/Ut{ Eg5ћYIKcJwReP̠Fcۓvu0Eʓ?ڬ$Ut0#`W"Yܡ(B:}$a}z.Ch"y~,E b /1hHH6 l4A>bee *]eI/%Bn+F4;lD{E۳hs1l9b17 &_YH7 }!R؞'P.lCL%=Di>D@)! n%Xr#I`\ mYXZDL7$"/|@ xse59%!3!LtET7+f߶c Uۭ}5Zv"w?+<+K*1R}kD(s>oXf_OS0&z !t-~v\({D6JJ^Y!*~6n6&+^7] ,,L&A%O5%io rBfml |Aav4HMO֜o8ô0 _C].R_;JUgbHlÐb3;TNEc Pc LopdqAn1P!S\]t5aZ`@CLL\eEDښn5gmC27'R%Y6ȄK10ݭV#[; `% pyM8a1Y' lwsuZU$uNMM`CS;+RH- (.}$+(²/ORM$c#|8߬HYXZf:ps!9ہ%N3a`>yŵٯE33,n Qr\3|D)4z`c@5SiKI+f0OF kvk^,cZ TX`,p9P#$Kەq1&"~} =:ǦSSHK_P0@q1x) hIj7Eev'j6\<}& :pW&',)DMisXBN?ߐhgW ,swvô;R<W)#H{T0VT̀3֪kIwMy0 opyt^'^KϷ57=,DYMvn"L;>l 8u%XDkȕ{7 xiz)R#W͢h~pz|4v#bռM,H1ǃaǭJpA7ژŢ !Z, ۭtHh>]Si%xp"(5 RKZ vJDdH7EYT")5Q1eKYFA#2ky0v>qߧ d^O7 `,/a9U=?wN'>Ѯ 4W; ѤnT$ &锲l;D!@ikn56=2? ;j9D|[p6X*k4Q&o(NwKK(V=l-"jÄ ?Φ쫑C0hm~v91g%ۙhVTVȼ(48I#mT_Sal⼜iXka#kgt|>wф.F{a{I>"EN@[vBl qxLSc"&i-" q"E5BB(0<G(|Z2o,KFh@!`4ۻ]ݮd ;7iD0_Znq[}^TϞƮX*l73sS/Skmb8FȧH-hC0O=eN)=M"p[Ftb0j^iصuyRΖ"1> ɊJ+cphHDmN.v Z =%ҀQHI)җ J-?7=|Əlnglz"#SS)UV'+4;i~?(slu5T+s>I/-vAK\J͇``l«5Ij^VrF6^%TG:lf7;+Ec##TpYg嘱l\K4AO"`BV$M.RZEyxC vDg90_Pʤ{&0pK-`Wft 0k^i?6;vKf]v)Vƽ適։#L9o(Flm)&hcAǮi n 4h32`D0 [:Yd mcD9j09W48dI9/|ImNgT/&Ceyڲ1ڞOvM4AK`ڧjFtd4Mj|fQ}K׶3 ^ IJ|7[4/!BFt LX mUCkdu. Hq6hOq b}0q2p``$F OlH%zTGeJgEhB]b ̩@sB0zd ԃ_i]BV3t09La/Biqt%-+K`J HPT8 &HAx(Ota1t}t 0\ka!(@!G06|jVL"QX]Yz>bPCtUuU hvy|Ŏ-M-.YoaT VFC7v_B96y:]t#Bf0Bq+jq~-d9YyzJ~e}ɓQ*6ާ"O\:!Jߝ&v3f1Eфzysv*E<5]aCj# +f_M7͕<yB-XsmK_3EЖJN=D#0nڟvcaR}sע՗N#J2#Th1F{r`A@P:G"z-^7VC߰Zm[r9‚IKP ĈrHTe[,}è̝i,"Ύ*4A(mQ!gs*}(aؤ¬Ģ0RmL lƇP(&n\Y>ÌvIa{k4b mH,ƈMFD|H%߉Lq^/oX*Pn-Vc,K%0T7 0mR3N~Pا TD7G@I43@|C'i'U0foy @@bVX`<];slU:C!fh(/Q|Wj)[<5MH>`-,Gb@RnjuH7IHwz@y!aB%vk ,Z 4]hO"?_g(R6F:05$ o@zsW~Xμ@y Pp.QMrz :\c7G>=@_9yDo )5)C=[0KVi[e 7R{πIۭV- R ;3) iB ekp;]w !b3$@aL9w&fEf?i64@(,ȃ6DH`$nDn@hvܥxvX Y)N| iY?y YOm;Y[?4+Rv#54FF5H"eQHǬBZZCڗG)6kGiS_u|tژ{|q {<WuCL߳殸{_u~e{(oq}Ug57TR1j;I7=Ξ:v/zn*Z#whNqkB9G ~~vPQrMbۙ'˄p!ppҋtiaE:b&:iZuu+"ùK%j h#BrG` ;`UP$l:>yBΗ:X BQ#"Rs$h1z$8/3kpw;\AV3 p%oqO?%u%aggKBzWW~v$-,m%>;[RũشΖؿΊzYb>;[bĊ;+\a۟-JNZ#umɎ*dz͕/CZnbI۠VP˦nx Rf*I&wTw+Ђ^`nv+]KG6.iGNT\}HׄԫGƄx+ҢJJ.NLJ dsM3 3c-NeŤ(z {DٕPψ?A*Epython-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.rix0000644000000000000000000000027413025575536025664 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xEA0P֜?&\KSj.}giI V7(2!3@,jX֬w=U:vtJr7ťq12gp%Lpython-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.six0000644000000000000000000000011013025575536025652 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/obsolete_packs/32a9cb83a210fdccf059dee147c6c984.tix0000644000000000000000000000046713025575536025672 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=3 row_lengths=1 xKn0DYs .v۰4WahONXeMPj_Tmz;!-VbHmcV 51[ӛ0(xv L?]ao.2ש( Xe,ljj[@Asg^r/2Rb{1{0aBCR5~{tY_84Аj;B)YyJ[:+~P4 .5ȹ+qN=" #cHs9b ]"{"S~ 8DuHQq0|@WFTdI"S&python-defaults-debian/.bzr/repository/obsolete_packs/3fd299f63f434fdb9b6b517b281adf6e.pack0000644000000000000000000007116513152176457026025 0ustar Bazaar pack format 1 (introduced in 0.18) B14122 gcb1z 14104 50558 x}K#GA71*!WOgޮ Vk@LT5Hq:?g$w(4)Ifc.|nn;OvU" {~ /w߼{œ2f/<ݮ?L?|כURNz'FEfUo⪺IRib'4zy;^iGyN6*F #;/>;6RmLBm4/jijxjQkf󸘫*WJ,^x׳ԟҪJuoDY^d2W&ti;k؝nmQA_^G'79~9O덺K:[9y>SZE.Vp6<jWE~x^D=`*ᷨ6]aMa)}ZݨI37oF}0 .;i^)YiY%Y.xzr;-(qvɋJɦY:MWHK_Ó&_4^?fۢYƳ*%fMz̐>'~4OЇy:^v3*uU$<&nic&r%;YZ m'?~It`l[%Xz !]+"!,0,WF(T$(ggp*aW P(<-% #%%Mf TXL$ _Lf4-;~-~]Zi6'7.US?AO~ GWh{hmKgm7ߩHA^WjL@ -I3>:SLӠO$JFG^uoTyn6S$=#V|UU0UJWd gE'pF5E<7yQ p:Qߟ82FBF^Emm' jSmA7IYER߀Ux%$A"{E5E%~[7ײ^`_dXue+“1 &+U&=COװ: E(`{O[dʫXGXԾOCEOQjBP4aD:v _ ْ`9^H0xi4t?Wn x o0ϐmW۔33j,i\%saI/9-lli$˨F#+jL֛]yXR=Uo]w0|}-U:2wJfg@chI_\ ,~մ1)L r*xe)PM~BkȔ?oa< ӾI4B-dzG(ԫ&w"hi#H^%g Awe3l+*S_/qhQ$+PTA2JPC @HI 1zҚ @.):-Qv}I\!v"GsD%0 5N5^>KCNV/9Gޜ &"`Up$tӛj:L`4(g1x O Hi %JNSmߥĝ`04]}Z%3M0mgP TAj =te ?E6; Bm#sHˁs('Յk lC6'inh}mtEC: N>&,Dc+^G&tbg=`Fb4`O$-g]G=1*ŝFd}}+< p*yɃVDI|`AS ]>(㝞<^}.=jm%4Dß#-w%ڮB6{ vg 7GӱF=Ov[i>8H/#F6Xo^+0ǡoyrr@A%B4g@0baնѡsZm65`[Ccۂ~1XfZ v(G37A;O援:×~ti|?]v),=]14YGXqZPIv&%ǥC*]ԱO+IiV'ILa'2OAۊ[+J}z`2(+Fwhg #}D[!WͲx4 g rlz F(:l<>h[ Y5 z*ofS+{"_g`CQMa*2N*8;vLe渽%rPÆq/`(*l>MFAɺ;Z.5S6moo̹Ev$//zy`2YϤ6B$3#kN[I\s΄11,b1'pⅭv}qGURxu/VFyxBto˃ ''Qsa _` ӛ E/eNl?!̹@:%* _D0{H1V=7 CN!7|4N o#yEL.QH?&KnWAwo~*z..R<R3FP1v=~SAX -^1RO@䈟u/&k@D~iqH&0z&g }Vv i\Ɓ2ݢf6#?N~WLUJ}F#f\?&2>Kk)M2N+χ~NO@@!$zRH:e1tB7qJSqH+3e=!Ŷcm :cgd =7MdJM9M Lo-\s'-9~GyeQG甕Zf)Sso*A=f1t(P| {V C %FIGYhc׎̍Lof:kӇ)K$|S;<_Hԇ.1fڂSY , %H@h&[2`JKˋ4C6+4{ס  "GE`X@^sm%ڡfK]tN%*yZ1K \\tԕ(qKy!=`426[vV7l9tQsNŭ>hmi O0??Awj~%;'aÑ\DAKAJs1~4 ϲ x#}JxB+C+I7sY'Jv_bD\ggt#0zVYW (y?ѫj./׃UCI$ō&vbp)ߒ:FR#r\?oStu{y}&G7quSx!,*sf|@6*aZR: u!6Ie݉/@f+GWheQ V犈K  = \k}䭢hr&GU) vda(ZNZx 4m8K|I8fAq`r;B\o' M2YݑcA L#eF.?"v.1<˷<=@Ф9a:0| ly;!,}@v 8_ Nvb ocJXij_:B~t5;Y.p9`"95i/R&g! v)Gٿ@oMU Q$/ ӭKX%v:P+릮ڤ&U @Klheԑ-P-&6p>NæM~k!ג?c$:>fI_/YP&ӭpp= }c=mEx t M13!=۾N3x0Y Tjp-dNJ$NYCӱ $A&3 "ߢvtH޾xq-[dVJPaG7$:>)I|H6=i9:T'V8Q rQ邚Ǣ6K]-˻]Js"&>=7 J> cj\maߓ"s06G)onxFI97೤X,TAP/S's~ eqCAe] c'zY:WOa2nsF3tZ1kGY8$$AMQNb1ogZ^D;7R_0.?$ P\<K:beV:q l o|xzPy/|_FL؁*k8Ro۸ Lbl`D4MAfWwUH)0>-F4yG>col(ֵ$ya.5q)EF<Ǽ%'Fh}adr8DD!d, PA0{cy-7.A fkJQ?M+GzW5Hw5+Շ5A.JJ L4n8! @?%ShT#I!"FGϙyx_{`{O8c$3@yM/^J7:%h6Sqaɑ ĥ0$<w *BAIu1%襙$\4r$ԔOgE|d`H:pvP!4%~pI? Ö`_{QFJe;/Udksk2IQkM^fm,Ǟ*c|FLBv=C&Z:^R?MɲeDj,Vk]  _ŏwLӆV'6ύ-ҲԔ6ѹ*/f(͇yCqw[#6Y32絎I+۸f'4ip+*s>;ɀ 65n2ƃ3%IFl#"­Lp E@ ` TIZP+>%ޜzÉI&Qզ# ];)r?Sa$V̬L2!bv 3˨ ˷\ʣ=\{XS}5}bPFJTM[:>{Gc5+& Zl #|,~ܐB8DQuMy 'Axb/F'mb&">1<'_4]U҆ǖfs] iҀ 4A7^ybyOCJ]\u+3fϷ냘U ,=5v!{G'wjkYLeCkueDw䤌-\棧fUl iYJE6oΌ 7NB<^iߩDB\hE*pj'm&ULl[.K\eĒf60ҀwX㖕ؠ1sq@@cG&/U>|U/ X)_^.^=,B[՛Ix@LvqVU} ,#_k4q$ABe6lZڒ|InD&S?%H-5ݡJiB<6  ߕ@!ɏI{OȎ JqM@șt Ɇ5P:!>ww@v0AְU'y`fU?p]'r O!Cnnrw0 %7h=eUΌvkmLB;J=, 7&f>m5SX^ ,m&te[m$=oylaO݉i!Q0lx5)%mSN&3Ra#Ť~ )j9l{%a?Iח/c.V|[mWA7|u6 ~ i`Hೡ8iISl͎vLLu)#zU5)ֽ#'Jl,J<TtS{w{ۗ!Ɠk%Eq@n?KI]7|Mk^e2- J6œ 'Lٵ:>#2r_G&.1N]q|SgDQM25c,ҖB-:GmùmoM8Abr7T[i[b7͠J* quȖIѴ.7j''C?SXn>o'r~fw4/1m2(}~;xmVխaX;cnUS;esovޣM5Dx)85HcwtvLz~tkG:8:CaGY`}}Hqv-Tv3hn`c(]?1cOPA1i qT[qp%l.Ny!&g,m6'w S#xR/4snOȞ$Evm=;:x9óD6NyB㴂L lWVo<ӓ^@7"-j8&kNڪ=H-^F> 4V P R=JX[-j釴+w"ϵ38^y>vx)swQIQ5kjV]MD[X=-.7dw5*I1L%.9SpDogzxwg۩4{+`RܔsoM&unԱf4^؈-d 9REn;D:?{N/`km++ڤPLHg)(6]ۦies2uJک~V7`D6,k#⁥p|MqZlkj&kuͱ(^H7rKHJ=W'*G{3L5{9J-R{4߽BGjL63jΕvN4Es?໺Nz2|B/x\:C0gsi$(Fh8O7 G+,!z]ClOsMhUk@'@m [@J{Ƴ#.'cDVrmZk(62 {DIuȄE<}&Y_VZx̊"syEA0eѱ+-"0H2S?*|G'on.GViNHTl@9NgeΒ aIe,cj;y}F rg3#TYⴱHC'n:;C) ' V,!~DThoc*7?CElpzAsĻm &bOɒޟuA[閛dwmfE%)۳ީtLK n t =ͯ{o{Eя9N˙n8}D6z<+Oq>Hwva JT#P%czv96~=gHs8QF5ND)+գqM11iͧ:8<rÅ7.x e]`]u٭;Zo)v̖=Ɯ_S)G8iYRTrG^Ӆ*hHͮ{%(DIM̴ȤpfZm';ճ\#xpEy`Porfz^ZQ%+>WRܼv%>Q[QI+746g| :cÐz1!;MKXNۻqB]jy Ar&^~), %蝖6 СM? O*c\/qg!0 K7'I1uٍS*`_h菇2 gf4Q{X'k(xNal 훐Q,bgq1qUM,KAJf}67ql_ ;ͥ]3sKswۥ9-ϻh:xH[ 8 w#@q% f\ֳm7G w&KRa8|\$J}#{m0B+L¡~G*$i[K}Ǧ{7 2jSKxI&ܖ$KDߠxX80 @E$-4a/xO1WK'GC. PysPѼ:F0mZ٪Ww uVI~滎3s7y.+glDEy8RZ8:ۤ@, i{h cU~nr9mxVH; |l1~m`=fX<օm+l&?cX >X]48֏-Ք '}';  65b;rN8igg!z N.ݩaqy@ycO-^뒪[7n/'o( Dү&L~qnO\8|i o|TaR_oQ+f Ѭ5vE/ .m5-]vNO`iFC 8 m>YTaW9ZL|eb8sdh%gSx\Ǡۯk5Jh7KLuo43&.ag ۝OsxIQj?w ,N6]JW`@K%>@˴:L~[8Yt3tqiEIjg8ŴO}ץ1dx<)~tj1p{gބ<&fcq{431e=A9e"-۳'衆s%G`S丱nQ0=p%= ÉΏͽεsqz40]Dz+l%<4$`gbˎCKA_ҦSXBzg7Ku5}s[^b.wM~zpxWn :oKte:?y<ͩ: d`EDg='ǻ[/|72FwRCP;huPs ^9]/^ajUP1J#Yh֋g<6i7EǟD.:s`BMkX@][dY'>6<ѬIGBIRZaS^d&pB1 6ΡD{R3]K.5~S61jP1_ާd;5t.qB2060 gcb1z 2044 9399 xX_o6קg+mF t mgľ3%qJJRnSnԿd4)+r8fGY܏y=]*!09Ȃ&X- q5%3f-S9r#y(XH]\9\EQUr84ݦ"F'Sr7 j+Ôf[8 koWHc Ǹ5NyZpG/oO .6 }cGfy03$x>goiHu+r9}VciJ@?{oS2uSߡOoze `tN;8EjY~Z,ins߭p./I՚J\{%6֚ X/UV*D_yK\%|4[R6՞ER8-9SyߏF2y{'@A*J61~ܢDOhӞ;.ZoMo3{RuD<79;gWW+%"f/MGRJ'[^,CQ$I\*y#ϘH#FfWp|nu"_5"+2fP¬:Rp%W H~ox 2 c\JCDcਂ8{piO*&{>lyh' /D)Ӛ"0Bf 4 )c+<ȹJ.Q,C%;mx,&iيòDH>1l<kpɰx lq䰰 OjWԾT NwpX:)VgSӦ^/ֵIuaw86B3&Awtp\SaY3#O094ޙ79^E'i0ۓef_ςٳ2,sS}'m.C ^Ru葴A6Y  ;p1wd\# /5إoҭ 7dWôjL)Vӷ/İ^}r#M# Vcai흂ߢle셬"j+M&]ẖ2uJcʑաWv񺞒og拼&ҹǺڪMC$t%^w{Ӄ>o]a tBvn"xiSx)8u JDD+v?}y#/Yfm d}|C{eLԉV̳{Xlʑ_uiPXWu7U{WlL`7d'5յmRΜfb=诿ȱi:vӋʸECG>1{6ayX&mK] ;y=#R E-"xc|  :$vǖbu,CN[ y\4-^nZK_~iԝv%6P٧bχ<@Է-Eq#_0'iuλ蕫zBC+ ʹ/MwCsI$*TdMy!&?UT7-m$NR %2 H71XgM:@uDH$B$)bX3G7B<!{.O WCůyżSC*\ZG!cj}0y븮Ut >] &-D9asP'W-LTAm(lr:xOY\ٯ/YB2085 gcb1z 2069 9360 xX_o6קg$ml#Ip'6.l@I\]Iԑ7ۢF}uCRV+'M @3"S(*)S%k*zY S)BOY+b TˆS.)G|/"0\/)'r !W ~dJQΥX~ȳ.,W~D\38/HW [7l<_;۾.Yy3Z<­q*iA|߽?v"Þ~uRxH?+4|G. e4\,zXOڍ#z2R׹VED$[4xy3Zݞ(UL'f'm(׿fhzⷖMHsf1)ֱgWOza Oҩ $U:%tU;;8,6ZՀJfSƣ\*{), 8W:&'ڀH"rsRRLdB`bsr55[}RF 엍u XCAU[顤kZ0%;jMӼZbɸX7VUc4)3']RTX(-#] YP &X-A0`0ā8ja]B@*l,aӤ41XsiM@5a4v8JvI=S7q5;oҕr hۉ$h{[-$p}???$Ll mc Ѡl޾,l;Ը/goƽ9\ @Ca) ߝf.vKGч7<}oQg汼h'jxN.:k݇/݆?cz\ j@ RtE% j!6Jǿȍ>fvYUJ>sodՆOLWKtH7j[_Ͷ.B10372 gcb1z 10354 48676 x}I#;eJ/y<*K$wݻ\`L<ڋVNwR_GGS@n<ΩhpCh߿'_sKFc78): E6q2kX]wnaQYdaݾ/nC4 aEm QsDDAͿSĮ{FxZ B bkWA\IBa --k6cZ,061h,Uz5RH8 g1*9igkbl70;>T#/zդmbbͨ/h%[b_l [=9A(&.W7a&XcM$-Zf1%]nYŚľ|Sqtw:m&cukwm&$al*f v_"nόz.gX{ wr;Vhr fJ(KLǭzBtQZg(LPTTZ   1 5LvƝ~ubH 4;,Ȼવ 6mSac\ \@;PG=w\a UͿ aZ8Rvd]tdVىA%l#cnAM7 NĹYD-!n<{&%JSOÁK'Tc> RHxeDӗVW9``Z3X w8jї>g(][czꩉ,o0Z%1p2|AfJsE#wBτ!6F]i$ iQAfȼ@| 2(#X)4!R!K P 8]e3-MHrhY1ڳ糽Y/2Ug÷nu$9V㔺n536D1Pq<#5F k AޤX_(̻Cm'8v{V +dp|ud1h@̖+<ö`|c\K# g0΁H_ @fTgOﰋM1VAg0)capB%= #X9GY>܃ 623җ3L1Ɛ1 :F&Bf`;>F!Yd2=_r(c@2n癤q7*d g|5WaBv,`3vc,Q1 xfƙ(Ei" BrV9Q ;kK%8N u H<9@ g|9F*f=rO%9b൜Er i-a%ׁw=:R!¶`H}c1"B!mO y{|4"?YFYf$HŘF1#ŨR#; H\[b 1Gs Xa#!+!< !S;`# g@6nh0Lj>%`G(7##dkA?*PC椢:eF^Ji9#yqG\M? t%gs25$9CBrS<B5D$:OE 9Q3^HF Lh c0djHr, O0jHIt ۇh!5v|؞fl!ߪ,35=aSvmX ]f mYJ'A@yC2‚ eJ=jop[ Va鷟B&@8a8ogةr 0B}k -E&脗Q"K4HKxrδ >%Wb/IwvǺe.\ GJmٮ8Zkv3:5V!(Y)Ub"@S,$,rb$S~[뀂tn_QhNj{؛gcƤ=hP7["T-ak02k!#Ky¸RJ6FǞZ-n ܃ NPBܮA\~f60l1w|acґ(G@"*$!;om@=ZɎ;KvK,· ; a-e߭T+4G51 C <:m~äA) H[UQKȑncluP" ^WaQvtN;o-Z6Xuct0zd L%##-{|?%Tnx|ɌgX)zd<,tl0D8­ԭTuOָm4 H,ۅ=۸lk\'7I|>uhK|Z^Ni /G#cǪYc.JF(Iƛ%ΣgP'N;pWɶZ\c7mEH+Vl>MOb2$ _ 6}Daߵ9E;Nh9ދ.Z7//FA, E c$K PJ_ԫ;7-Pc̠ (l_C?g'&Dl~#q9#ŻqH`1meDSƕ`(2!4>,e|Y"RIh-1X 2LMDyk=EeZ;)|' 1.(;Ov~tHUxqo~G"A%I7T`k"0h@xr'.x~.-kU $Jn\@ن୵7Vp().B<E 1vND($ř`5`U(?c X\t!m}:784y cdQ*Sh10Snk>6Afʶr s[} f@kl]DGGX@I "( "*0is݊S.hJ4[\x$ET*#!Lp a"Fu9C@}'h}krAY'Ik޾5oDkXs'8xkVkIǚ9zk }'ykӼ5a?Św8UXGa6f^3~m|UIF`_mVnRk.P AD3^Ei14Fm$]"VGNԆrls"(fSE ̀O{>yGiV|'p9!5z0q Yk!l6`b&N[JOK?|jJU|_$##Zz !I$G<h<HyI?ɐG5HT"^-V91L]DordC&, S7)IKeB1nO8^o'YIaG2E ̹CQ8tH\z.Ch"y~,E b /1hHH6 l4A>bee *]eI/%Bn+F4;lDE۳hs1l9b17 &_YH7 }!R؞'P.lCL%=Di>D@)! n%Xrj$LxnH\_K.T,,Z|"& JUAPꐧ,Sz"FYzy|fې<)ߒ,d%t֑-P&;9:l} *:Z}^ӈ&J&r0gS;+RH- (.}"+(²O\HJ}\?߬HYX6RX6f|*qkՆz}{OV+oikOp:ej4=b"BIBcfϊ0L^`0!Ȗ`c!W,e<+F^ER letrċ5V&7UR"s+Q"Uhc+@P)Yz?[鐆?}ҖK EPFk.җ;? ' (}Kol@D!eQyXDŔ-e i|$^t~.Plz=ޔo6iˇ`Wy:D^/0^$DQ4PSʲ:cq|ZfCC?޻ sݔn!T&(8 c܂TOa(7FcKT^~n-"jÄ ?Φ쫑C0hm~v91g%ۙhVO*+dmz p6|H_Qy970. Na#kgt|>wф.F{aI>"EN@[vBl qxLSc"&i-" q"E5BB(KejqgcK#>HL7]a4J fml0Vf]nW2Ǜ4C/Ǽ\=oyn8b\E3JEE,tC" 9%ݒ  :E{3_:I%y@)6T@!%۔tGSM:̩'\ %Z]d\r_-M78>Q\q؍gcW,S))ڵ61WqS4!2h2ӇQJFǮ%oLͻ trxaLTHVT_4!pN4o(xbjh ZI`ྮғY" uNKz+C٠ǾVhgV-vƦ'2:!p005^= mu2BƜyOf]?P)_ε_oXl&rP-Epe*VDE‚F|PلWkkLƉ%R'Xl2"J]e)B/~uovWƀ!GF5-i>g7*9S"4Uh4M#E B-m\~`X=I:%W*I'ҧy ր0k`hZ%oiU]g'pY`EvE{{o?+p#7Jx eC.Q_eQ(*ޟ!y u+0Z:+ LJ)3S>~wۋ Z=!@` {qhH-i!]Y.hShXF>mj"oEw: pn?,f`>\Nak-,%($҆O ܊i<^! +UK0YG[ljxx;=F}=ZA8v|cKDp > *e_1M#藐{:wM^p>݈P(/9)0PkʤZ_Kd1YNf^޿RzۯL;\v/y3e鶈D|5NzWI݌wG뛐[o4~Ύ1XE<` 7v?lHZgUc!l+>c:OHշkwuFڲ@ɩhR?s=&a1Qn,cӶVJ~Z4K֗N#J2#Th1F{r`A@P:>mڎt W3 &a0` s31ZM8Ӂ P8 uèԷs[>TO߉`r "˅jTpo֕$e{a0Yo~/ъRp6@0Ԉm88s4;{bt;ʺ;oH.:/*>?wXv{^"~:voS7k~.]) %{LLXt `QPůثR\?Χj&[J<;QZ .*8zkaO &.[:lI.FEzWT}(gG KǚN`C)?q}@$U*?Fa aSR%J_N4 QZg hr|Hp 39> SY _clRaebQ)w6&hl6ϔP(&n\Y>vIa{k4b mH,ƈMFD|H%߉Li^/oX*Pn- L߹blx/n DXf*Jza n TaA`ڤf#ga~@EDyZM TK17xbpRp0 Si@(hV 0;H9*!VBh4w Ɏ(ha-&r@h0#A l)I?5:rˤTݟ!}!P^9|QI Ldc!L_P5 -ńJ4sg`/ Ef3)#}_ Tlg7\kXKT=Ĺ+?lg^I(}Xn8MĨD9M=USEX}yrky:QGǫiqپgcqY}UG84=k˼=_g) _\}yr {aWuۋYyYsz{J Tt8G3Ruo=ͬ%8rvJ*yi?6, y԰o%Q*Vo>&X& ^H +3I,Ԫ\)у]*Q5omgFr@<K!C"1`A Kr άZ22ay:s='A`Dsu֒ K2 άYpY]Zl +i?ZtCYRW~v$-,gq%qggKbβzVR鳳%U;yZMl+7%鳳%FҮTt^۬5b]7ߖXpT!Sun|zpv)Sj}&,uCMz>œrB1V(PUDSy`d?2I 0S93{|ԍwIu:h&sfj]toO(,^_FFc02N)E<\8H}.GnP,窒_-כ3.e{OߣfHAS&M*؏-⫤ +|YYO-t嘚`,N%fd% %bըߨ!R(lbP Ig, nCZt\bR|@47B246 gcb1z 232 297 x%Kn0D,9\QM,0c@9gdR-e.ڎd2Mz7LX~LiR8k 9 )}r dB·;(#uUZVsD;Lb^ cXXʒ_Suv4&SV>3Sȯ=5ބmw B{b.%'ɇ+~NbB10383 gcb1z 10365 48712 x}I#;eJ/y<*K$wURջ\`L<ՋVNw R_0<PĿ7s*$rXb6Nvʪot-MZ'`Wݸ[|>ݬnn(nC4 aEm QsDDAV]1JEZ02"(^ ZZ6l^?"X:a("lbXkp Yz@cL!TrhInarYwT#/zդmbbQ\1JTŤc/٪AFG@{sZAQJM\ 0oLƚHL[b8+9:Kܲ΋5}+}/{tLDִﺭLV H?UBnMEQݞH]j^؝ ^ [-{˽/s NksS+,,ֈ3՞wf"FTٱeA%WUnYo# +咨H ށ:Ghh kj5XL,`Z#)eG MAfxP]v?26Kt4y 4K E170$6?Ix(Гza*F;U \zDt-` &Q2s ghqDF  "cŌJuC2ϛ5}tA>- "\1tgx9Gy>mýf9(Jg6i +JbTאC@ aYC{T 5Ķ`)lR0l'g>Y qY3ƙa6+P/r8sj̺ TaYF6Ό8sL"3C#řQмD ͱ0\b˰1 CX!S3q*sHAwai4T"]6{ 5.p$OgEx6'xifyK>"pFwnJ&a%S-%cY Q$$ ӌjR0&ݣHBo_XDe i$\I댔,r Z+y3_OV\GCzaHpvnrB%_|]C 4L5Vb#‘2` * ȇ!bwu<m30DnFQRca f0=amix$tD%:ƿ ;e.] "f9Ycu2h&R!&hv 4Kɔ_: +"ۭ=:sxq"^%&_xh:I{Рn"EZeYeB3G¸m4{kuP`F00&`;A% q6_%rUJjxm`*Zwb!lö`#%Ak)n祏*D THBw!?lD3IY{wY/|w@[(أV[mң\Vb}!)8mäA)E#J؎o˴)G-#GFϏ~Aܻ*RJ jG~ ! Eh!`9.!\C4,d}ǾvH/MI <\ -#96+ef#ac0Gju=v;7 Ndr|0m0Mbu]G3/~ldž՟Bncurl,Z%\a$PM^~Qy3K 8rdSkRf1ԛ`[J=<8=Ox! IưtCsxEZ̿H򃢝m'gIN}Z7/s0Rj:F+\SM<u3(&iN`4hrK$&sD0䄘/z$.g|xw8.=,LHp" S8P0KqE,DT(1vH)J8mi-& t)' 1.(;Ov|r l&ăDK\p:OZ64-E`Ѩ 3eQ]}\|e%7z Hܳ~Xweۂ()b\JK3ą(R)$@cbcs}eV}gp׀}\&<.b:`>{!̼@پcdv12()MB4[ wN".?95 2+P{dv'd^l02]c"N?:‚jjAaeQMDNްTB'G/jͦT8a1;@ (&D4CYs%fdwն}9)zf%$y{.ּeXOf5ovƚ;XOXsO 'X (,̋Ư *(t@jͅc"(btƫ(-&߈] =KĪQF5xpA;/! grjM`|߅ϭm=M 廂}owKR֚m=9r.9nRi ͍VX  PF#i n(fbpmr>̼!FJ8]dH P0X9̾,$J# 1V)QQEq 2&~~'E"Ł#2{<*(?ϾV̉=BOxi]E Ie:DR! O9"&;ߡgb?ڭ>!^ူPybdB|7^f3ViKTiǓc^-^ R32J1H#Zz I$G<<Hy",/>+L}jthŧ nHxλɥ,UZ+l4X:|:Μ\x A@*=1tsD%JnY9DYM)O)0RAئwSJ˄b 5Ynw&_+XGqFp=S$ 9^Hǽ5ׂXO]mVCm @z>#PsA1:}/])`ޱ}!R~!6KkdXYJ9sK TRo+F5;lH{EShs&#6 9b1@92MTϑ n>B[< )ђD:=S 2 o 3E^"778&#x^#44rȑJSٳ 96)',z6_e oZ#WZ]mf65s[kjL~YxYvTtL3վn0{Zu dO/N8O}&}CZmCkfXh{zDpzlvXZܦ^5 ҦoHx+}c`'Kڗ6k71\-]0a3(18ю)㜓'Q.F r$+0<)tÁ MerĦhUr}!騛lώFi)afwBR _Cb B'jA=(JRV mDw'Gyl$?)7z #3Br{h5X3akNzZJi xX1[v,F 7r#8"a\S^7l^,e:0N%5d ,[f!@kzkNd~`oi cXr^wqmnD4 "w PDo"ANẅ́Y|V0 t6xǒ!6} H͵N46JoX; X"eiWXW/QFy=#ZEخ 0(a8=_nԉU>6]JhF^Z兂aK`@sMR?VI,*KQ#Tz5Qց#JEE9 6}I!(=P[Sul'>{~b Q` &C[ݑⱄJA % <:Մ3`ጵ?aR "c> ncn++(vz^m8ݬǛqj-mz@Ut+ f]GL;Cx7 ]hώ0L^`0!Ж`c!W,e P#2Yv 2(XC Xivw}]@voNӈaxr9708`ьR` !ȐCNFcnɄ g"WEroཙ/ʤv`ߪ]nxZ"u&&a`WYJˣ_63rĢ1`ȑ*8O~Vq`ZLa xJw0Z')GltS i=1/`G'=Q O*`COg[ v&K7â2 TH]KSNٱc\2TId6M(! G-jvs2B IYNLvڠS#e f] "mif*F= dqˆ q0vuz G۸TLj !Xirւ`shpP\?No%HYlsl?[,z1A|pZ@:4@C][6F خ&hI*}U3~TP,hJV ͢Z!6mfi!2&c]r>t-} !j _t LX07 ?h_]g,"u;=Ž7@ xQ8E ~+ʆmGu .QF;xVh_&jR ̤>׽\~[﻽C{o{_@` {qhH-i!.hShXFD>H0A۸Gѝx'Y.X#;SaZ Q  }>!S"Ϸr ~_*2^0tިk;3/vlinu^%z4YSI0X a4rۊ~ ~WweSMRhűv L*ODda>*cont%ORFxnNħ2HQs餇,}Kޘq|AGr1LtƮ [+4tȶj8Ě~7<\6WtL 9c!r3~Fڲ@ɩhR?s= &a1Qn,cӶVJ~f8㔴r ~d@I6vC ࿷:q% ko8L֛ n< /$ >5b% \ #=繴ADw`•5F5v8ˑŁ]Ln"U"}QYC1}2vǻ^"~:oS7k~.]) إ%x ,m[$h9~qZJ (WU)W_|=A-N%(bSLYapD;ٵ'`v}-5I$oqd [O"L={pWS}(C,ǚN`C2}3;BC^a>`pɌ~i#b)/t+wa+zSr7L>_4 QZg hr|H 39> RY_clRbQ)w@5&hl6CJ(~S\Ը.l6Ma!܆bJoḊTD6)&b_@Txb/`ZWzauq"XBWV !.-לXu|(CH*Lob ̤`!4Ē*mBOHwhҼ@yma Z1+,|0[i.H9yڠ@AC q3 4+P^$;6;Rxk [XQ ,%.o H520}AKKih*3՟E9r\'t`:*S%|kIpb9,Q.y'8MSc4]4VYN*a hON^.;D!m`J D fނY L*+n Wjn%@J᪐){o1Аfj/|Pug )X 6C,Dhܪ1iHqsgmVnksjC2|J1m X@Ӎ't~ 3>4'Rv'D.7cSZTJӇ"nNzQ͋]bxQY;y976ҬG)EThjwR^޿&X& ^ H +3I,׼\)Nx]*Q5om֧Fr@<Kޡ"Q[C׳AKr άZ22ay:s='A`Ds%ř(d|Y U((nvĴ]-{a,+ K?;[wֳ%1hqgY=m+ْ:Nŝ<Ħ}vwVԛ#VYYo oiW*v:moKv,T!Sunzpv)Sj}&uCMz>œrB1V(PUDSy`d?ӽI 0SA3{|ԍwCoI{C ˨N>AEkN"u [HF̠݀9U%U53Z7g\Jz5Ĵ")  w#;n}q*Š:_mV*pˢ*}~*]7&XKt?)Ʀ!x悂@tX5wkqOQ)&`ā:,()nX*?EB13592 gcb1z 13574 48701 x}[F^+n-ƅmEՌ4gz; H$IuG'GYUI)>q4 Y_^k׿Uv"ڭ¹{޸]9go=˗q:n'nuH)3^ny* uV6<&Q?8ծx49Iߟ{sO>9:QҢذ|Kѽ7yT6['3fM8:ʓ)WxoqQ:wvoWqfg8fN4+wڙt;I*m'1,+K盤,|~[76>,ZK:^8otݰa)xUyɫ*ɪ&7Il`"c`slYd9ƹwsWlv)n0I0j:*2Yy" ^5-ҶηKxx'd[ IQEU#'h)u?ѫN2w=ʳ6Wy'aLIwОG$K27 S8)&8NqoikXh/:&:<<^ӂd G{S)oX^#yLhTV}i#Ch9 ctDgylm{]jrjs K56MaP̈́C25N0]u㸻5 x+H!NQu%`04\J$%3EZmpF |n@+ ]Wwm[$0k^mU Svek")΁{d'K-.Z?Wz ͂EI\&kiv R[݁+ۊ+іaAl t'ȐByV#O;4Kod}>$ݚ9p'6rA7;:ÉlQ݊7[+@e QP@:F@c%pHtɖ{f}ШJQ{X4O# lBun@*NC9 #l[qaOA1a=#/9hqIL>'[Cq+qU[ϑLp1*ڬ yʼ^U>T`v8OerGVB@ɚPXʗ'w(RvL 6+O`4‘eV]h-Fr:$Y|sN3Xd=lQN q|9񻫋*$m:ψK2/eh1'*?o|wo>{]ϹwG4Q4TF$ @eשf-HWMBC)W'M/I'׀4ױ"wipH&0O36Jbd6Lwh+EquqKɎQ0laj\1ƛmʹ_?@{)0cM5`FChMi#5h{ LЦP )~O.xu0hgyj=]œg+YD/Lppe FR\"w~o 0O /@kjn$"k*b|}A`d B u68+6_<PM I3`""R ruO9{'\.L$K.o]ucٮE~\h l=믭3}/`wɱ^yEu!(+r * r[L%,PB l$dyX6F9pZ<\<KC.'PuJ4.踸+]0:7EwuL'ivYw f UDti1YTY~6Zi. FjHQY)p7Q?JVNͪN=Ѓ8gbp#pG{F4wGfJO%p^"Dc~?'87xSE;L g46i@Y5`%hQ5;{ŹCDlt6qD/%t ||‘^EV'& *lPԜhЃ T]yLoV |3߃0 gFbu4IfVG12AK \ QwD.G>qcAf@eOt]n׻%%8^ۋN)W#GH=4@:!d7O]&"(aњި0 e:N]:슿]0vg..F,`X hTG3 .`*Ci1 @%*w$*Jkj4U!M)\8Z"$'@(tByl1]%$엯Af<>7WhH S>tÑ,\3miVS}Xvv#YEzo 8GiQ &솜>3b?Ɩׇ2d| -qzuӕ`VvpIl"N{gbk:ߢ_dO"ԹgL3:yl9dOI2Hj¸TL*F_\$ D2A cD&@V6[85\Aŕɦ-XXʲ5`x27;6ڂJ\(ahO[]ZyR#JrKԌJpYjۦ{m 4AG<<G ; Xb9asqmJgXV   k\ad}nf@U_w4y͙ P۔LlY(;ԎU{?u(Ҵ&l.lf( h0'pS3j{ס қℽNd\[k \ )` b!Lty/ȫp'A~,.+ppJ<WU AdB;m Ʈ6Jc|lsRϧ z*5$ aG(eƙeU oJxkY"2KJUGb0iULFE6jq8]4v}YSjĊ3IZ&2*VeH롨ü& ی}y"C1cwgYC흎di: kKQ$"t4 ag&X"c `J8VY- (-%^z͈A:PՄ#CEHo{e S4kᡍ-by}v7b}KLr*a tV\ՖdK}U7Y~!17h[*LӪ{ nO)g1MUEVME6\LEg3q ĉFhmםl\|>cq(~St..I[ ֿ5\Pa!ap }7׸EaBUQ50 x` (FY ۟ k*RYB޿-5rWKU5pa2DZ wA88mv=vC쿪?ۘ1DnIh%^~r%QtEk@rY mԿ8.ߛgz+;*^H -j1lMMtGNHX!|@ *}K *JEMXY5P|NE1 :c@7%YEֳ٠ DB}}(J)j  |O IRfB^6V6OR㶌:rTlfR8W\ , k`Iք`F/}М#v℠o{Wy%&d2:hߴ_[ G]4r]Z!yq9Е!f,EZ'Z"Wu M+(F|n^0 SOuHjiI28W,7k 8(OPQn4֔`s'9BJj'HH!]x (e+t9y_ (4AݼHeZ*1RߋTkÃ2k:ChZ.y6svIkjR]MD#[X<-T.+һjZ$)r',˪)~83- m;3T5smf0M!nuUoM&Un1f4n=X--scVd׆{M/09&wBeR'Af$ǣF*` 3أjeb2UO%Ti|?;TٹdD-kd?.[2GU)tn^5/PZ5# GA ٶ-s1}Ս?*I q% F @om Y1u9F; # u;Ja9!lPeBt[֟OdpT[M .4@EݕueCnYXg׆zk-؍5Zs| |eUFgٞ+džv:c;ekmOD`Vgx"dz^WG0G#S,ܝ}`oz(6'Ͼyf^F`CH;G<u.VlUXD!ᣆEe+Ǧ5?Gaz*ɞVڕ~-9%tRU^* E3dXv|ȩ\у=J=Co2cUtyC.-}ˑBB} ZRvנڗ8ME]FUSRIiHbaCj8݇3& p4zH#~4Ga? iٹcGʄKV,̏łBW.V>>]L^Kt P-N$KE08k|V;b66. ]MT7JrBzx^e zpX;Q47dGi6 *@c_q7N2UZ^EMGZEJ?QӅ}JK)гRD7Mq1HFد5)sSa.qߌ'c.e[OJu)zbb֍7JㆂDbwr{;2QXօջبCiY+GjU*ZY. b pJ)9X md9B&jԮ.?ުܬ{ N @WMo(}1_&i_HSrg\UBaK^a^2HVqL ],&%ӨqWD!6?DƝہ*ÆrW8b*HҶX}+UoB)dYF%'9Tee9)Lܼ{ :GFʡߑ(c>o ?M%F3|T̥QP) USdqsPѸ@;FP]RUjU(|r%e[s,W#6`"YU JiC=xDNXzٹ#"E<3X̹I6_aӸD Ћ f s>ηScYH~:ܣ^{TQ3U sfT}ÂF)Z;m^뚔By +! ځe8(tlAp^.tTC6-f S&w}o亾'pO7@ v[ȽKtIqnTYDzޗ="ٌ,]$K_bۆ$smTL7IWUa)(iڹJ0,WRX80WJh-g \m(HWhgm8fo<%K%c>ɯt`<2vwju;DdH~tYsJ8~/8S48}]Lwzj_r%ӭ(L$o6V0b[*Z <Ԁ#n/x6m-h LG*vZ~oAUl}h/HlG/TGT3?oh; TOpe Z+笶Z6ͦqLhO 1`Gxg̔G뀀*t&VECzֲUm#;7qWNHvHjj ,_bCL-+^{TfTHw.$ nPJ)O94?$uŮjȴu~F"hY=`%*)N}?qI0h!RUܦBM +V} P#ÕpXk8/Y^եL~ɂA3L'2J! U5%eq!.ı3*ľV>pJy^O:ײDSJZX0ڌZDCk8/̖^ V2lřRR]+/+_?jSZ9hɣQiKRU ڳ;uᵥV]'O$@l o0Y 1Z(쥮T{-j:.6tn 5Y_StF[7%.72f>(&XiXPWkA|R} [ްz0G6zahwm.@įh麵G f8T O6擕j  ҍ,o"S&` ZUCx/؆AeC7+5JסhX7CL賵>+ިGL\a\N::"FF^ʙ$+09YWe*o#\..(:V"y=;,GòMͳRc;9&C#.4OY%<+ n͝yP i"8 $̠%M@g3siiX+cGRTBd{-VY:5j,V4?61e<~9Pi" s襚q&G+^`gfQ0 |OTHl }2͵\w#YB._x jNb*3K ,^`24zZ@ҝiZM|5jhv>Ux>y: QҋXPX(8m{~O1( Z5)@(IrACA4?k}>‹lNJ1t;;՚ԤjFF7ɒkݭT݁,MTwWw<e Pb "$Epython-defaults-debian/.bzr/repository/obsolete_packs/6f07d8044cb5120a0ded423615cb1d8e.rix0000644000000000000000000000027612501654654025477 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x%A @ϾँV^ժc5nBopython-defaults-debian/.bzr/repository/obsolete_packs/7069fce0922634317003f2c6070ac0aa.cix0000644000000000000000000000027313041647737025235 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=2 row_lengths=1 xM11 ѭ9|1&(( hnXܟn:sDMFNmI"I޶&*RWEQpXcߚ "python-defaults-debian/.bzr/repository/obsolete_packs/7069fce0922634317003f2c6070ac0aa.iix0000644000000000000000000000033713041647737025244 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=2 row_lengths=1 x; akW Z8VwMwZm5ۦKwi aiq@ (ۖY}-Ǘž?Ԫf<ZBn ja& 9ޙR\1)N{+e=/K 9a *+^ TS@ G6b61zz>ɦ#\iR0ǵ_}^_ PFHCL;B4OM+緂RN.0ԖR:@ əx'IS!1VxK.z:iUZиw^K~mw}}+(kt{5;I :>g36Q\n/9 R0ƥB@yo:+h@}X]ohu=oTB307 gcb1z 293 394 xm1R0EgBSfҮdTYZas pRn{oߏô紟]};Ņc־DUt̉_ ABzGD7}BTevn;sCSG ѐUM@ bG" HR۰9qșM~>{B5QOLfU(T};,ёhYA v;|?B#4OC܄̺4eP!z'U6@^bFaU |~B10471 gcb1z 10453 48766 x}$9eR.a8WS="=Դ4U OXzV{xy9%S"i SOZ?ͣMn\6aD6oMoZ[F(!*id^]46Iy5!y?^->̻=jj~pЕ@[IFg阬! cQ:p$p&K1! Ն4Q4 57iz Z;)AЉ%B+4F ^gZ3TgOd.*Xb:а<,akL;/6HR0Y,h*&03ja,FZ{ Ҳ.5{Ts!hK|[_vN@hd?jۮVg ܴg^lEt3p׭Vif侮kLǵVr%I$r4 Uw )A K ۷֟>KBRH 4{xPMR :Mߢ﷛]SuB1B;pσB[C]8bRjDZL9`&0, 4{2țPad]4HWal.*f,>H$P&c@/oQXj,//It|s@މ, 4{"IΘiQfEL[Lz8%x L 7UDtPVJ%4k&*&D+}sq@Ȳ@|iQ:5J,KX#=Y]AI;Hm,TG*yQvAOȲ@|(gTk $\&(F@cYMm lk9ґ-Gw/2دφ+_-/RXNSW\ ͼPDI8 :B`Ec5~l8_z҈}LhbD=@WG_M]PV81@t$vv6ƹTCDoB> 4w60V 2$Gԋu%~ $@fy5^8Kb /ZZ e?!h~(\zPtr?E;ȅSO(\)Bsp6ﬦ}.(e:> =L > jMi?ݨA.*W?zs$#< Zp'+13Z%12b@LitJ+}E ..*Db4LJgd[9:Z!1BR]2-*;Ij$h=0qC! `LpɽNj͑g z5η8K, W8 O$0Ha ~?t_+1ĉ^|E9!2˷sh2k[M$5$ 8r%$1B`!PGN=FPd+_hƄ&]o\pcG' 2E {ZxBzE8p:q\Ɣ9AVdIS6 w?C68`[۽cDd-MiX*i9e H`a. e{ 9Ńq~"4@Z[ѐ3f"HOISiH/cP0dБ2!]=\BJK. &%Er*Hfµ$&ja 5 q&8PnP|G Y_;l~[qy/b_)>ꑧi H FkNj1$#'bBR%MN~3NO4Q=}Գ^?:"=.{ӏ.t}.:=Г^+^?U9v^7+b_t/>ץJJ+#k]^?qaU{^BL0R(-ngyw00[}6'yזEe{Zȑٮɻݎ"Y2ǹ ,x4T{.pWUQ;Wzk]:.Bl`n6_VBߍ`@qk>ĵ}aq6zKcF8%/p<c 4F1z*a]2.]#6lׂl e\́f3QJNε"hN"!h8%*'(v]yxƺ>HE裱P lHj3K\pI&)rpV2ކ uHci6{kvPR` ĴX߯AJj=f۠\}GيJ&i-&qQ#A$ BFƥb,=-H ()8;;A|u`[8֫Y)?IIm4y'=ZCP& m4QJ؍cpW -FOvׯWU rZphE ƚ$p&l &SFGZx~Jn!σTb^r>d&385yp؀ Z Iτs}9n[~vÅ4va.-'q40%>ROv4^%~[16ܿ/OhkJٜ:5.4eHI"Ewt$zK4G:Y~lm k<}qkoyl>MTDŽOb*F@_1.Y Nb8_Z̿H&gyg }ћ}Q;D*qY(#Ҕ!ThBHj~Unܴc-PAu\-Q9Dgqbbf$xZ6JV&D/suk&5CĉaWA8_1## &S$8F4sws΀lqyHs&e7G^dPxqkv&F(]o>E.05Xp532N]\xuWBow֋[ @QYsu^(\!8Q}kI%J*HHC@c zϥ>ы(QYMt9k!p ~6ڀ Lh!`Gruqoo0u;s׆d=uƃy(BUNKr u[}%WA@v W u>UgRRKjK` o.[i! /?I>z1ljŵB6Wq: IP#˺v>e.p:־d9e/֢ғ`o_Z}Ddq\feڋ(q$)c- .ⓢi^Z }XHt,b-;AXGqv^3~m|  (c@1!%A'(s~n6P#_ ䷥ C{x dǮq}ʙ|12f 1,>PV8,°\(rElZ[3@^Ҷ|94qdHtцEi< Sxa6Lk0WFFl05pd˛A-s iuLbK>hü< _C]/2(?})mt+n=&gFaxCJ-r=:H8ȑ1ƽ:aLumOЃ ܑ8D= R)' q5ykᗜ %-ɺAfBّ& ñVW0L`ꀌya7Bdwȹ/˝ӭ9ox"f~GS(RH[,,(.&%h9H iqY [600"5`Ʒ(Ri:V{FR WZl9p~`-ЃGXK"uٺk ]Y#^֣4s2Qswpʑe 5g~[En^X0E2 ]p->$,7B ~`->ZXk4P ϛUzh'2`p%\t!)qkƀ`KE2^X ɀFO!BGfpٻN$Uhp@۹?tut0V(#CV\͢Kwmy@@oiڹy|ٜw^KϷ5n{X4BMOI8ch7XirJBoB 2"AAB<]w=򤫔!rõ]?Ov S]l7 V"KE4x%Dp2H>\tmbQyJVtyJ!_y%t2jk D%N;jD_ EU7E!RpԈRGA냛OoU8 lO-b,a9E=?wNg>n6 fh4:_FMNY*8/<Pj1Oa qCc2DwWUr/൙/mhhTJ)A3@bK9e*7o՛0FpK.jW,!|Nњ󚜔Ձxv7v2bv 37'y='1%zy8x JxfXBn d$i.%Lͻ usx]w+?0@r@܏1h0LvoÖD> hץ@~xǔE S%iSQo/ط ?Zo?a N.4 1"dV$vh~[ty5 oްl+䳅4!Q-ЕLZ {HVޘ Ai.f^Iu*owzė[/0(&#UIfy vaGB YX;k4iDz֛$MAO?0P|2Drf d0) )pK-hvtH4k^alpJKp/W[F~?*[/OZ}iXr]e)8aS -̟s̺]3 24;2qWѡ3av2)|+NASMXJctI1E2yrs/_xmgorjB?NR6dݍ1ٝM(qϙ`Fe>W V7Bid}Igd!gaWjOQ]eWӸ'*y΢k^4R4v4qݪÇO Ȋ0lO-ZlD6xVF~c,sL1 (9TT co7npGYeFDqPFsjw*པ`sRʙzV7^ 3|0= M &+he-+KGCpJ,De*k* Hަa6-INt"&Y/8\M|T^SV#%)$O \i_ajUK4˓𾙏ja뢌<Ӄo45:J{X&[95Y]W)`S+aM#ם觐{a¯c|:]|#B[g0CqjF+kq~-d9Yyz҃Ki/ۮt)O~Z:ݖ HȵʫW4˷)!(kBnoҼ9;h"6H/&!C_J>jf{Xj7Gkv 6uJP[)9b.gwT=.&KƔ_WKnt-gy/ L]ZF*AB4ZkχA{ S$KD#vo Ä# иt$vv6FVЧ$\\pϬW-jyWi>g:}>6otwY/4DVo])-qَ.h 3^sRuI#i(weW`j$evSR#^ zK؋XỰN8ވ^k <'q!t c) ȶM/*(:b{ ?ӯhNsΠKh'l.U?1l'GolI&EEWT}(GGGcç\Rvty$ZEF"IO8(*.T# è)/|q'fSrK>?-p:fwmrM KHޢ"Ju,$RL . z9NɅYqL{#ۘLϳL|cQDD(犒AZ !׍k1̛ :oGH (Pe"kiX$1G60I6 ރ,P_1b=I͖Fk'Au=z Ƭ-]}@@#J*۴\ rd. gdb!LN -'@#-$D %G/!&)u*spg E f39#_K$B,.5P%`ҕY/uRJK_NX1n8`)=vø-D%c)d<=LeHQ&5%4rӆɫ{e@ IB-?ȯw8K=kTXHi3|pؠYWg X06#-FhݪFeY Fw]/3Տ(RwLˍC@Cw%.$"!?x$Rw G3>7,P9 R &6nNjT"upX˟|uTҢHݍ2Ғyi#-G-"-s*7R_־>J9yԖ:QG2}}/ם$}/?|uhP{Uy{.|5/P@l{O.WBߋ*(TcL ʝ~tv^̺owTu&11CIM#/5b9 .wkn|TSGXvfI5с>^#̧[`W8/U/R8Vb׼9ĕA; i[MeTqjlggk_ugpYc>;[cĪ;۹ʶ?[ە;6jٱ|h̠vKˈ@H6w[OAa1J _ؔ-sKYT[HRfZ?GlH4/|,G&9Is.gBV{%zk{@i>FZg\^?&0쇳*:W ZkҳFw>rf> AsϙAt21%t(3ɅB :}ARuXO($+tRrmtHXR0\sEA Fl0j\85xxH|m(=W^Hbj Gۿ/_;t0Tv{-6:|&ra^2O!X\>%WB25750 gcb1z 25732 94237 x˓g'waW:UjwUA}IMJy%͝1Pdf&=+Gxf3fvc/ L$ z&&{Yqs.Zo4iϣp,9q7^>{|&[Dl*Ǜս{A(0L(g6ʂuY\l2Xpey̓" uIx(?Ee0_Q&iqպ 1LiY|ςi6HU,`v2?k3KWh zg'n4&ޤn޽]{;6 ,hء':֎uduKgo>`._.aM 6YϢI`wc4[}D- i4Cޤ7ﺽ;L{['Kجp\9@pQdQ1 ^WarM$J$h;c Gfۆ_{.Ỷ(aet/e ^9,^w{#&KϮa!W߼ ,^/"6Ðl* BgwY i j2 hpzҋ"]U^ZEɆ((XIS n,w^qެQLfܢ[yAMJf䊧@~Nǃᨧ2T, '2U*@5S )GYD[td26^!S/afфAa?/:F/[mhy[nLdy~/ ߸c4Ȣ%m( c}pe0z(o2&D 8"FCОX Ȇ|O(IxDcPqYW6KzYr\ܝw \28GV|28|-@*[?Mzlnh}mxIC:MN>$]ruwXq{ՎL922.vsfI!DS V$}ߴӟ-ZP>zv.N N9x;?,#Q\#_E:HȜ e}{N"666H"M J0kCc܀|'EװY 1k n|m֢.ڻ j?&h|>3|ݵJmZ.Zp=KOb2!rư"ȑ30N VܤQN/7݃! u[D6>']١kLa_OGnoaVrLpW"/DA;^Hmf@uqY|t0>>xSrtȀFƓ!ZBuuOͤ}ʯ"fS{,]g]yjQqMdiojn '~wn?[v*.@KPXS15*jԎ3d[G͗sٓ_{W߼{N'޽|/>n&.9.%C ]J@Oj2%f=ݱ=M'3=I*.@ gWItcT9R~AF J"~mw$U=.HXɏcG~%6n~nsdS$eqA|1Ϻot]Lkhv y AیZ|Y|"i.ne3uŋFǖ@,j]=FzZ$E|L3dyaD r8L5h!}*zQeEB2͏;λ ~#f^V_w_At0tإf!$<1B$!v=SA -7] J:?uF)[ud| 2br&@cr0Wqo!0Eh( Jm`v\lcQt~{׸"DhWhT)2."C%{z>8(thr 8qڞ/i)e((DO*iSbQLYJқ`ͳ+8Y^⤋xI菾{X6t0a3 (aa}^qt:4uD%(H6) |JN2K8d*$hDS|jٻD&EaB~|6,@5̙ FF 2\j4 X!uF9kM W!{zerކ;uH9AvANV`]gNNRKnkupV鱧Ϟ?9kÊ<|[E+ˆ{sM姼꽸@akiw;kh5 WhqRSw럶OM.f/YnX"oUk= ~EQQf9{Ñ^':` 13шA|XsD[8L1RpD\ŹaA2Kp> ktBPoHcqHK3yk焚=b!x/7 Ί 4{f=WU0lӈҨeit:QNxSncndexˆgHYB1OGk\,@T1OlF@e 1" V C Zd[r´ #ّ]nC>L(ߗ=vd~E鉜19`f ʘh8:k%u 07ι|GpfE ,ut?"9^^1'/ڡq׶ylv(( caTs86Q[FGpآ;+Rؼ&i9:oE7h jtk1iv͖ &q>~}'fl}h~; H$Wt"Eu*Gp8:d6=SKGp'4jYJ=c.3P %D\p=ΕgtGa}fx%y*%=GBw^UyG>1q@X٤CPdY8p(cɃKHq>L;ܨ'`m̍Q= cNp;6ug̴>mRw<Z❈ztB=0!< "yT""? x}*h}>' ImQm jl8ޠJs&ES%d0Ɣf%;aΰ$zr==V=۪N u~N(a&t $-"~ͧrhZ'ְB,>s NR_fDyފrx`<G#|ɨga)zBth%;M]5q5U/pIi Hm##D9Gl !@n6eM㮅jq"gQw9 2O7=Ѡgt-k#E|NCYc=#ыŝ ǧ% LI3((39wEs:P"!v !yON ̠HofGf~X:J"yu086tT]$ v]66˨} VZ˜JyqBNz}~yy^#M?W,"9;` #'> cjmվYn`l U#OW2(kT([nVA )#9z?Ha) rYӸz>>w>2Q Gujh^͂em6U<;N7b.ŵ^D;Ƹ7P .(NuOI)8b[t%ќ̑Wx3T>itѴlww_Exg):#2/9@T \AgE-cѕٟmU?{\60xH)8BO]Wo"lC|ɠGJE'E:+\LW)vPvA3ؑj"2T0S^1V tN;$[X(i2ϏSb 'l08u ]G 8upQi{ӖAJ)BUXD`CqRU$^";.pD'{q\c8:9:[meh]iwk~Nst'0;_QpP:/DoxxCs BXTq%H>NP υa>{Űۛt ݻǩ+8֍L<w\RV Uxhg\$uJGh35@C|: ٸ+ʂ(} %.hG'NpQ^)ԤOgY|t0$T?8p8 )~ ʝyZJ`{u#_,eLo'|B16j89uo>?ߏm}|.Mׁ$'jX:f)xqPd+@yny iʣ:6@ݦ4ebwBqiN35F\ܢ"JӚo^p0fd( e,rS;k;7 Q|M8^ ;3 UxPHs|@Q+| )NʲCuT^EkKi2IQ{U`Y 7A]λQ@IpBe Tkh1P|"cQdQ 2 Jev vg2._ďT&IL*)RVg1şJ?#/es1(-,Xܗid*C*ü$ λT# 2^Eą-\cu״p5ݟU|vɀ˨ 7kicL4EDFC`nfc( m"ja/jZ1)ǷKN|1H<h['R)\58-7}ŷ\$X҉ݔiãC4۰23(01h,g! ihd5/dt'rN$Y7V`v ÅѫE($_K걢t͉Q0ubTTQk̏"鳋O_)GIΤACe 6lN//UmA$7Ve^& c?DgH 5ݡr-vF90\Ƹs=އTZ R̰9"V D:yN^ =e [_CnwWahE`Mp@!OQsRu$;UsXͤ6o';C%?A`U{ y/Q{RS?rk4C.uny`4> 7鍑hz6{g;3ta$YWXn:*R|.ZT JY޾Y4.ߛgz+GR>sp t3(d=N9D*NO7D)yk`zX-'P/s2xhL5ԃŏV5@j0'p@nJ"r&gB&pr s=(>j 9oS_.dM2\{f[<8Mr";1mZäF磳!@S#c& |A@sjD yVQai,{G+j8׶w]MUǻyRGbFA)X+T>WU6:Jh Fƃ #QzÛvP4&Yoj ^]O=e]II$/VKxTB鵕M՚c,~iKɠHH#\ϣ>A/\@h+9Sw &5/ kK9p:j&d2?:?L̔)ή^I[<+͉!aAwp9fɧ"fxj!XMs.#ZއC Eߤαmڮ'|EB9@h62]Uq$9eoOG6eO;a]nO8n,8[aVDy6F_hV}Mt[+[;cnU;`)Rm"}󞤁I 76cO|XD! ܺ+G2xsuZ⹃(6]ie1\7 ;eOtUH^VC6,k#ꁥp'$ n 1RCmzmC  S0p-X΍БQM!2̖WbO(7Aq6HyT"Gjy&V ghަ?я9= O AD&k88:ݧmUG.B&b,Os3Elg%0n6(̎:|;fNhW6U#PĻ&)6: [Ԡː,O&㶋y'&\/#`+ 2h ,cfKkB[ D HyW_e*tfnܶގS™x_P;Ast9\dpǻ*S%g"BZMDxm.͌Y&;ہ|ʦDyg/_|웋gaTrw\3NMjbw gVGc}fs1/XؒiM1UaNTMW{Iڶh@)'FJDa:ee X5{,68`+z],`M$c'EO<=?3 wn3㵱>>-h9O m;1@N^x_R-u`$q6>جSnq ָspqTiFZLסNZ蚊cQDw.$5?գV 2Uq+9\^X4Q%j«:=U-q(lӳ;M501Sv wjzWPhpyk)$0)$]=}k=o(6\]}pa <:vΘnhCfs`MF{k?5eB&F cXr!w1'5Mt Pnvyj;MSg-9{zno[>#׼Kj,AFI.-7X6g08)Vv :.H4.]hܖt\AWQ[D,,L"j(ﴖYЂWZ NqxK+zGӮ.Fn ~T%IX]ve^KQv;?-i=3#2b4>LrջQp0Z,}LbGS Pa&865#eqU+E +"5Mq9]X >(b,N3BĦm5JfUZv pE/( V|ҡX|yLmH#0Q&du9vg8#jI?Fxu\`F+hh ݨً;݁Y+Ább*0ڨ̶iYDj#<YyZiKqzA#ubuX_=2٘簿$"—_lGx?ءN ѡWU%@NqO8;!yfӼwV&t&CL%Y7*Cmu@@&y+bHa萎-oLɎMmSU)Ia\Q E vS=;J{VTGg+& @wAC2Wh[*\{ <~QF Fj9o)bO^(x п4 *6:l:v885U_\릘/,8I\RctҢN-B\5%qHdXVc YgV.Ax* ӻZ.1cR$LV۬M6d t/`#aM|!D xg7ƋG+~LڏZFKN.I7 AjSoc/k|JJ;=@iT{f:a^nHY XzY_EYhڣNVu.#X9Fd^xN2PۭáWYKQzZɰWW  5d;rN80!zѻSڋV؋Mjhnm>r-`_h+T!ޕn}NEcRL7'n"{̑ MD%(W of Lց1CIKӯ5r}y*JQ Q퉖Zatt;hi<>Їx.`{}ܞ~yi" SzP9_ R` FK%% 3Iphw.Q{ޡ^ɭAs<.LT4z&[ywpp`!F3 ,Yj1M.9'8'Kbl[/a0b)BM@\ {u:F@Mch36؃ۮAm`O&(ٶJI -qgûw ;gȶ 0'(m(kR6^knE 1=}j?;CghM 1ÿfYжlG=4=I?#Z".XGuŦwp_f} ="$ UpeOc:†0wV?Nt=*]ڱ*`-^^.(wqU|O<WtQ]峫$^^%|/ƛsM.G/.Id8X\y|fyx[}}ܟ7x'I %ayIN a+׷=FLdkaqr#y'Š+>K7N^_QC=t+i"L:q8抃DZŮY?2pf -|P>[s ~t :% m pMI,5P\<ئ=eь \ >P||Fe2A A5_ԙgQ ˛*Z9,9ƼH}cbFl!`(,p晸~Z%2믁MYviȬӯuĠH :}%: |o7?=~7o܀/EW%*X<)Oz˯O^|\oyvq_ćT;v L7/>nj:Dq:f|`@7PWE'''EA&v'3,K2*x@+n%T޶^P?tJ6~+L;ɹ!N+'areq<'i^_=^ VJK׈1ݻ̮BL-emp {Qţo@c f=<jeR, (3 p> @Ɓy4R`E gFu12$Qt:]#H"~YՁKlp)ĻN=T7nN:Z^?{Gf. 1ӑT XH1etpdH dgy?ca- >u88JjQaRGˈLnv**my~M4(/>n%1ܦA NP\cӥu#Y ];-a/`nZ V5EqyB 3q%Ayz-NTYU˒$˜ ud'r'N̊v'q+ưgvq eBA7@:Hy3ٍsFM#ϔ̑L "ݧ!"GUP5-P"JEp % @ bG/QzWkDゔ5r/>7@!'+X|`^i_8­I u)ތռ o~]< 3tva&V7C`%As`N.rưg #Ye!SD7 r ~8cD̵]Y͜_Ȯ1r꾈)fK,Ư̓Ԓi%8 yȢ/V&WQ,ZT48ˠ/w2*zwRd񃲪;XAsCVJ}C#hZYfDIUԔoŗr53ڀT mG^7s-|Q[mUK1|6KVDLS[lMQ)v,k'0ݚL\IOlڈ2 k0"mpEwd͔7e!MD `%@|#6[W+*cyYTjWqQrļGpȲ7qS^-}>!`g%ݨ0rcI7t]̺',|DEeQK4q+)0-(7 #/p척GM57=@hȀl1;KjI}Q1I G?<? {Jn_)p%U'22L/DuM, {Ab)4N8ywt +qiɰtobM[Fw F@*d7k4"f< ka^ce+Q\UF !T:Ћ> gnQMx#" n *DK,TC' xʿ!!*\y}gso=Vւ` tuz*â_}p1>paU1p}):gJ,^ T ,DГ%h%[5*Z&f:vkoK)^=}7;!q=?iѠGG}E~acR#ҍWIJ yI@4twNט:?Ǯx*0_yե^^IUR&V;o,͈+K)fN6lؠ69G~1z\Z;}ݖᶽLTqJ"&:TL#璟$Afvm:Wa_EE=P0g+ fSʼnѬ ))xD_v;K}I-^hXR.KR),G:[̭ĚԠآ@5S?ҫ&HH91I 7q.@ís~_MRIt޷ѱo6KIrh) q=u}u0_5דunQͮ,tc霔*T~ۯً{iiƒ&ۼC 9 O-z/5Jتȴ_>tɃE{k:?kn'E-(Y|40ԘV8%FieyL[7.Q#ܶ7bpBʮ7aFCgԯQ)i3 R&Jv * 8bv>1 jko+oM=`9ؾ\VTݼ2*/BUd|t5W65΂`#I]oXܔC'f O&2sKKY7ӶlG )շ(jJPKc4q\wwhz xNPB7Dž̮ alȖՐ4>mJ9"mn׸9gg:4E Lcev[cqlsdzMJ [k$ P[NvsXndDDQb, &%sWc>5ֹ{Cƅ|y@Xv]"VD榝*'\iEk(0əZ7⻫(i~C0Z"#b6t`#v55=_z+1J>غZiV&o{cXaA`[lQGFJ?)U$2ʯFI<47+#F,z?3zhN`ъ'91dS>Q4;#MnI@Fd.&_u6,vz^~ۉ6sŀ=z5#-:BMRRvդ01n ڰKelpIލNY# oϮS{%vBi)>n-5ԅ1:ňz+E/fHW]1ٱ(N1&n)ϝoL8@K6YQHT*!{2+\yg`.ό{<5 +Kr#B8'SNET*%K!U? d8^ mLS>+>ѭ鸼@oDޱ*ipUk`߯B}kUaR!BKg ix9vL-%|ɣL2me.B %%7{$Q85wʽ5A;9&@K0{^h 8\yXK3]I@sՔ L74ђWl-6%{s;\q^P:i mcwE [9ut+tvG2%Gu+>źryAHJoqR#[]wT I-ձ:#w*۩8cqNMOF"½2 DFxi h3Rp :O3UÑ-ܰ-O}Y+JYJG?Ne Օhw#p! (HpZ^8CaK$\\-5_J:'~ʾsni5EJJY >m,[JQIqz0^SIشzr.UUAEK_q>Rr SHHvdƗΰe`x#/1%ͩ1" ~hT rDc E9 je9%])m1׹R{?P;L5AFufvDޭ7u mZ+g3Z*f*&ʴ G/+LEu`%O\DO KJʠ3W)$[+ULo[%ikcVf;D'(slHTR lQ.Xo`\$@dR;g~ɪNv(ü8l0Yga⻧C s' (csY2Dj>#B,A IΊ`.W瞺~Vd>,U\PBe1mB9<(BWƎV=!7Ae(9%C1s WK>b.Ff?߉REBH%@*HrǃnJY&%$KfNOz7\b_G:YDOӼL+Xj#_(&KHPE!IbsLZJ+ -k} x~cBn"4"J*oyBk&OnIPosȶ!M>=>9Uo?e8[- e!I6m$/gVQH.D>e$DIS_͏[93,e_2u"un>tr-FDy֭k|C"#؆~MT]^F(gA}<=܍y+Ρ<B>%<epC6H4J00Ǝeh pHOLS %r?Xת%gJXŸ?![\ U$)Zj^Έ̽yjCB]Fqfyڱ)߰o}mSִ;:R'"-v&lMe9"#5tceeVNf{&NAܢ&`э$6\ }ip^ÑW#KUg(ȓjK^i{(~)2 ,\_wZ@`$ sDc99h/6@I !j+.ռxZTd 9cSAݭTE 喹~yxQ/wFڞmV;Jyߙ¾&bo¸ĉ$uR|E- E6`&ЭjÞ6760K!\<p ;-\ EftfHM|Y\IEvvY|?-;Q*]_WQprANiqZQ0[ABw $j,Cfk,y#8n$&{sB9{8j!{HҬTwe}LﰭfH$y $>k" AɱXuc1Ɇb SO_0fy׫if xM=o[i@uL=N<:BpKjxܐY1/-|ąTr(~5 pZXWu~yK ցz$>=yOUSH:2p@UЭZ[^]2穛*p\>h0^] UnW|`k\VX*LahmVR X!w3k*yć9_ԕN+b#3%|.-dKK ?ī-:_saI;,suXW}| A^Br#6@Ri PNұ)jsz|X^g sg}w",bIjhWJsyl*eGP˶0OsMaob^eCE\lc)!OL;bbZ{a.5QpR"5hN2)ƫld{{m?JUTdSHgq7m2Ow^bVd)6$|&k )&UO<wN+oHBE`Nd"j P`՜Huqջ*n> 򏴱 s9xWr2VIDGN؁Ce̸Sbht)q0(\cwGx˵6["8˟U4˟q of*FGe< ڹl[. e^4r3P2I d6_:x0%K\TKD+ QBkDU ]&2(mV),֪qQy6ԅTG/w=IqD˫:xp$ӭAB٢BvälKKٺqnSKcHOUDލ!엠 jADz$5Eek\TAmXwL6_/gҹ=N[O)YbwqԏQ%PMا lRأ&ŏD~@DO{#[W_JJb|B|ZRYe )e- ?J%`GAR} \ j`k(N!90-Z, @ *VGwmE88:j*/{ߛjOvJwjKy4RKªr],7-oPulUq(޻q7e[}JʜHw9;^۞]8G£ؐ2^\'_d0 &t .[۝g@eeDMt?84֌#^S'qCbdsJ$RiW,lMi$KX(A`2PY6G|gXy^{u,]bLW 9giI[`C3MqUy)vXg|aQ M7r[ @y_cmj>@8) Wd݌71pB:uoTWG'j-%RP,2l99>\޴J"M՝RtwPgwUS발-n宆숹+Ȯ3|[-7höLߜS?>qKi4l-V 8R*Yv # qԺlNG@&iXkZ'U+̯& Z)\M+=X^~êLv;_'ֵZr 9{9"ĥ.N+Et- |ǯpGnX`6׻s*/O}mһNߵR_e 5]E MZ tUE rckd?ǐ\j;P~Q"x̠ژ E5ϥC0[̤o''EғXhw|AZF<8 Xy~%Va75HmBnU*yh7PS1\cŦK"̧;XyfFׇΔmh\uLnckur.LpjrDwI>V'\{v_ܡh Ѫr*zfl(NS8a.OrBv^Ȫ\m ;LmF|O\H([]5M!ro8=J7gϣ$0e eܹ<*6k­?yQbUJXp C~)UJ`GuX_Hq"OX?OrGǪ`±BknhҜEN[^&/@ZmN릅HÕ"@$t~_H+Pf͌MnSGJ7hǯ_0V*mMiN a&팥j g=T}{I>욯[W>f,ehʵʝT6} Gۇ1 tMeNɝJ`kc3Z(*f4э( QrV 5 j%+p ̯쀬U_x3$khxt ֘eV&f¿N8%*kպ?⋍VW;M*p]E,{Gk3Z}wܸ|_>}rCeį"ms;kN-jo8[ٛk/s߸$ZaŽFtϓKMhq} ](fWVA)U{bJ\˫|^TXi/:x+R j־tAlخIӺ D_J-2&/,qPHكO˔T$nSՕ앪Sw2q/'784@ Ljsm.IǦ2 Θl]Qai6M=9cbt|^?)g=)(0Gy^Lp:`;҅><1<J}q87mY ݙ'%3`')]$-Oo[agTA< h8mB𭴒txMQs|쨚{UW%%&قJDk5@:hRYʍXCcnd< hq %qj3|OF8N'{xtqך:ӿؕh60S.`Rqqѱdz|N ^`͘Mj&.=8 VT\eQ˭)ͽWѝipEk7U |bHKj%FO([TZx%փ5 0a,&N#][M\l*Vm!E**8Ѭ3-U([G/x:uD]ʝCvs=#ػ% wv ,mz-Ҁ8V+0--JO+zՉRQK !7ZjGyIpEGQ2Z()S&PMN R\1/$D˸rQs Zr\Zyt+< EP RqZ0F*Wp6{%*4&NI.CF݋p>`Vu/0pQ"Il k.nt}e#{% D96|G8Oa${T1bn6DPAEq+,YܬIp:O%ɽvī 4ppY|ca ;asE?oῊ/N$ɿ7r_7k_?MO/KEpython-defaults-debian/.bzr/repository/obsolete_packs/7069fce0922634317003f2c6070ac0aa.rix0000644000000000000000000000033613041647737025254 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=2 row_lengths=1 x;0PjNn;H\ l0 ۇ"iSM19:벉WET"@|Ufu ѲDO?b6'wR4?: 4S¬ĠLC[Tlv9A/2DrIpython-defaults-debian/.bzr/repository/obsolete_packs/7069fce0922634317003f2c6070ac0aa.six0000644000000000000000000000011013041647737025243 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/obsolete_packs/7069fce0922634317003f2c6070ac0aa.tix0000644000000000000000000000047313041647737025260 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=3 row_lengths=1 xn0 y ^ *U @ 4il?٪TB8J#\,òwbMcwm}Ȏ4X/irt/[ eUG+-< ^i))bɰƻVo`z\$yP}Tꈔɳ4c ȴF pe&xǓ~Û&.python-defaults-debian/.bzr/repository/obsolete_packs/99140b5022fbdd113863a20ff50e61be.cix0000644000000000000000000000023112501656275025371 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x 1 PfNZlx88my/l'|p^1/Թhbnocxn ʻZ$Q$fpython-defaults-debian/.bzr/repository/obsolete_packs/99140b5022fbdd113863a20ff50e61be.iix0000644000000000000000000000027712501656275025411 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x-; PkO,P8U bm"r4hڕ#+=%߸tp7=0B̖jpS=~s@W9`C: ~E&python-defaults-debian/.bzr/repository/obsolete_packs/99140b5022fbdd113863a20ff50e61be.pack0000644000000000000000000006412112501656275025534 0ustar Bazaar pack format 1 (introduced in 0.18) B13577 gcb1z 13559 48699 x}[V^U+P]s$.omOZV[5:r\.$A}H:c~@H򐗼Mw!k NIl˺|\eiw/ݺ,K7썻ޕK2?8|x6}8v>΋$K2s|:/\%Q|Ίbf$J{Yy/swIOܾ{s>;:Q<:_EywEtfvl̳n%ydw|˷8(;;oVqag8eN4+wڙt;I*c'1,+Kۤ,|~[76o 'p⍝6lEж/`vN8/y7^FX5&I ,$ry /qYοq.gxp0էY< &? F-[WW1Q&9/āɫaD:v _-IQEt8GOѠ)u?ֻɼJ2w=ʳ6Wx'a[GEÏ7)vm0KzW8~Y,a[fVÏ6"^/p ~خ38yk|ap=~GiCU?Pr(o@(X^#yLhTV֛NdGT.]x_(ĎQ3I'iLtgelK!CoR`ίpx&"pOUp$tUYw<8_#Yg4!0P8K rɫ<{c{8t*hi-hnU6t=o_Ya["z۽: kqHˁs('K#-8.W=+}fCT&.54J8hX݁+NJ;ёaJ@l t'ȐB\Wy}G=*x%%9ڭY ' |a+##8O%@]0]? ]zJ5͜u,w@ Im!>(gY5yڗP#Dx;r`CKʦ} Gi+ 3 FqA!ܢ\:>tr>e3o nxk2M Vw_jk kp=(8l7t.^CG@5L!_(u/SC:k~XRwY{f1B2M`EF[1<ق_EJm\5{PX$*>$myR}OfþNpz-}ԶV RݟL!{3x _F[!W2bxo4 @#bXk<-ZA)Pxx҄}Զ@uPYm x?tIUbfS+{<[;1UldpxuIՁN5!5DID)uwg.iC0y&a-{TVh2KT*@i|gǢ_|ĿV.-nS 0]P룖UUTyLQ=b>8`d^Uˬg(k ƽ~b3BH6C:d=%)kv0WGlYdP8PqI`'u^\u՘?ZAd4mӬD]\!5-|٤(.@9cgž?,br1'pt=qUh}/wѾPgBru5A$.]<5`~_";b.ԌCdW!Dkd>6z)MɾSH\"cha/Y\ ]E?!5Ra`DYy[2Aq|4\w lZwMl&@-n?!,mG;Rv&,ޤ.=k10ԧE哧_7wo~|Zo?zةYHwIaВ=L>@OO ԛrTMقhŸG- yIJ7hJ>vxtov_wU!=.HXO-Z.W.!el"c%4[ yrGo}>hq^ 4=y m&krBbE&_G;aZ[D*AY,,0zoz!ޅ1c$\!ga])(rr0]H/^]Ta'U"&sxp.QH>+n9WA7W'NQ(F5ƈau : ¢i)4u>uw#~7$8\NJKSCHG6)9nhwˤ,v^L2}(60;nv);> w-찍+&x-_9w+`4BJ`us)82( @-q(yڞ/-i)(DO iQb+Qc/ 4"^7]šg+8YD/L82e#).p;zH $X ڴ뤼J8_} CAjyL֠Rg+"/cq ߔ04ㅿ1+7.r@(WX.cdtK8E\>`Ҭ˿SW~Y!lע~\h ?돭3P}/`gco=ԅɶ&/(mm0EZ' t1Go jMJcXG^.?a_G@ װ6S',tKȌI‘R!xS( ]Y[ܚ F Fg C3v#  (-rBQ"1HǠ& ;&x+ REgArLR8}4Ǟ<}0{UE UAa:W枤͊Od@Q"V{&yv[q@:0D]c罦顎{#8`7g~nX"o i{#H&Ew)s{> kGexPx4@=ۍwfIi d fWqaFD@<l:pM8 @q5虢srB͞ÀDb "DgL& !{%zV*NI2m!D5cp8WƨjSn]8<.n)l;;eYD|{ DPf>y *wǘYVZ|BI-@;rQc}ژ#ĕ#s+[iWY" a~oS;<_HT}{h]`l{0 F[X"JH')\pKLdj9I `lVheEÁ?!憖$ыy0hl@(_ `v9jETksŕFG]Ž{޸nc6IshHwglxBG[j \ɢ✸[ur5RC}OMߜ.wǍײs⾨Vu1eLġ?,Kр;Kܣt'4;:U\}e(~s^r~r1 }f~w$S/(3HQVU__:nb %7&E6Š)ߐ:FR#\?nwS/L{{&GQ*4<kc}v,*sإ|@&*aRP: u!ֹIeՉ/@bkGׄhEQ VeD+UmUα{}`~.y [,LEˉV o\KqY>8C|I0fq7VHl&ЬTȱ ]&R!nE3@zg; hҌ0I6OzqO:z'c{ r1%`j(z_YB~t;Y.q9`"91i/R&g.O;uG+v؝ (\ -Q0ݺ Qb%,ڑ4n(IVeH7qp D:IOQQFbbC$8@g<0𴛎}mԪ/*|h:k;F[HDlZbIPARb*෈9(^Y)geN X&hNI&LgDy5,p%z l֬ ânHt|+R (lf|Ss`uT['V(Q Q橂K]%˻N]J"&>=7WH JS> KQ}4TkVpWZ,)h|]bmgqvo/Sǰs~ eqCAe[ۆc+zgi2w8ЕW+Ŭe]6E=[v8Dm%{*'$J~4~p0@qG; )Vi@BYIרϋWQJJ{sp4:xz6 M.~vŤ&DUr@ my;"Ek˽eW=<#j$njC<)23O8Ac={hW:Nv%e)i,5g$\PBSIH2V{1.&r)QK3Jwޏ%a>a>K)a\+l)Դ$cϳQVA\u  QEg@s,w(R;jV<#ʭ$?aCbIGێF< fT3k yi!]2x2Υ;.Q.q=D,ة>wK1(r<'a˖șRvayh p >S?pn[r)Rzv]7bMk8񃖽LE:z T}4bxZN>fi,>l:ǥ O-$'9$?%hvl)ÑX荳OC vaWf0L{c00kSq;1%btL ,=5v!{'Nw<6<(ъZaV) Ne UӔ|vvʦP:jNXϿ93B[T2^C<^iߩDB\hD*p%j'm&UtL[.kK\Eȷ#ٷTj81y\iPpe:"%X~NJʩn5)gUU31aϟ_%Eƥߔ[Җo!oWY`ʩ70;y&hj3~_?=.> #;.(]5Us g {fo&T@x4:T5XSÖV4mZr ې!@պI7~^\lw{Ѷ{6eUΌvklLB;H/ 7&f>m5Yr^,ʿO=yv3,Wv.Uș[Dݤrٛ,ɇHɓ鎂(5B=-'U*hʪ[\Pw7?Q$=I1""k(z6t8aH5\\h@eSI7Bm_>(}R7XL˦ʖIjޖX7Q-"ÞӴB*#pPSSKP A_aL9ߚTH4sdX8N\]|R^8ҲÛvP4.jWo0Tr8XUb;R:dgq%dXn֒qΟ2nN=ؼӔ~Svߞ)5n#!,rv?2pYVrPf3Qh^&ή /(x͵:QAwhnm<jc.tDv!։8j}mm|xmB  ȷ4oԛAUH񫒽 )ٓi]v3N>Q5O~jDZ݊}XVhnXacۜeRB3cӬ;ðr$BݪvBz (5dtK5j.=R0'7p|ёFi>vr?Rs.7upx ŎZ*fP~PKb.4 b9qT[qp%l.Vy1&g̳]:'w S#xMB/4snOМ$EtM=;:x9óD.VyEI  %ٮxzG_?nDZ$rLVtU{"[v|[xh 0** {`kv?UiGWnE+g|EvZ Zlc}l.E6swVIVkjV]MD[X=-T.+jV$Vr,)q83= mv*k 7ǺS&d Zcn7]3|^glĖ΋x 9REn1;D:k=&K25vؖ\BmR(&An$SdzA*`I38ier2U%TY|87sV!yY5.LXDKj0)|W.#&lMj?לa?йV:Bwd>x?.[*G{SL5>x9JR{߾BEjL63gjΕvN4E2?ỺOJz|B/x\:C0gsig%(p8O7Gk,!z]lOsthT+ս@+@m [@J{̳#6.+c|+Nh1]#Q]Zd27XG /屯y^|yQLլ/tG {-<`HYT20zqytJzH# )c 䄯lOJ7ϒÉ;›eѰ {TR P*4F'Uo{´nXRkoEN^o{?i+ wHwhw1aKJT#P%kczjw9~=Hs8QFNDE8ϤĘ$=TKkB p{Y\CYW6eqvm(w}fcίT#,sNWrG^BTzRJoW\b=^Qo &hfJdRs M6QxnLttig4kb}H} ߍ|?S v74<"%+y^p`$q6g^V9(P]qnMָwp1r*6pto#rR=SmOexԛX{]zaKrr@x@-RvA]Q7}u ]LJ!NtŇ5p8LiF6i~$Ҳk+zs^i?N`iذ0? %k\PXt1yO/ѵ:@ٷvS;Q/䬵^iP̏k؂F:]BPHZA0댡RNuǔ:.H4.S h+?8= 2[u}ew8tyՊ(zU&Ҙ.vZ,HC 4З>%zl[Grx0~<. \|Sa.Iߌ'cN.e;ZOK})zbփ7Dbwr{;21؎օջhCY+GU:4plmSuN1@,}6Ooy!bk5j+=ުܬ{6\~|񆢁 0{S`qEHTWW_ep&5θFqGtɏ&cmiԸ]+mw[3vwbZN @l+z3 0DyP8<+.D.:_#Vёe\b29H O纂8ʗb]AWBNs Fj`AL xviVg.Cs?<#[n6OŒR\kVzvU`P?[DVZqI* O8Y;/g_#HCJ`.>mm6ч IwVox_M3˨%tJs-'IbϱAqXa8vDN[bX=\\r. b/XVCynjj\BE,i*v9hid^L7P6"J'}:ʟR{VY&+flDEy8RZ8<ۤ.@5, ih cU~n39amxF<`73&ÿ%D܀^\h60{y|pQ#E ]w[xwݠ} Vu]-h6ax>H; ]L1~m`=zX]{aXwqu"lNc78ykULBU~lv߰Q! &#D>ŠCHv`2NJP@y0 {$1UipkFŐMw"AId]/ , ~!@-o] ܠ7 Zeos]bԲ0t,%~)>CceR3&]Vɦ;dNOT _J[bTg^1>+hf% (pxiZ#]u_G N&.O,徇 TT7tVcx+_ct`>rvMtu_Xw!ld?p5j4^p*"#!iq$GX4y @ pc Np4զ i[`&} (޿MIK[Q<IΟ(mܭ`b%Tg}eEG^8M[ǥ vLn81`6"B1oAulshoHl_婾gE=įB= ѡw%@O ȽVm'mbM>ٙ"#: θ)͏. uUM쀋! fmyNvo]: 9 #ꁰŎ TX{JAQ[QM‘ڕSVI*PݠR>rx;*iH mWәi3|A"〵7`%*%NU}?~?8_/ JqP5rXy:)C+LWU=Ks'n]b|=q+yn[,4@9aAiyfBo]nOaqyDycO}-^[;n/+o4( Dү"t~vnjO\0}o|e }PMӰc׊[I|dVx 6qJ͖[;z|TO'4áyBWw0*?J7>1RB՛x6,"h)GVVH! _p+~9v *ʝ1Y|q}3Ą1[ ih^F=cL;v(7כDH;yfCʮdݕp- ThtLʣ;Z찕eHG9C H]Mg~s\LGq]iJyVV;&0 4DpI]AK Z:5fk ,i=U*jQ ZQn8רt[xg|lMn@4lρԣjyzOmgE9(Dçt"8O'έv~u}ԣ7B[A(AkP'*Y-;-a8vC}Ic4L߲fZo**7yU2t< &,b@)ɼxSH/: zOw^ nd->ǠvJ$r^.yEc4ݙF[1ƿ9lSӞ?]]<:Gh7س[W}AmmҬIE̵BIRa]S^d$p6 6Ρة&S3b4I\^nUdm7ՠcҽOݧomSD o?%tB2047 gcb1z 2031 9331 xXnܶSEJ5ܠI@|1b7皒ۢys{ާRv~|p93|חR?rcRY1_*3ڻh& %fs y & :3&LONc?<J^x?d1W.#i $*gja _LBH/SrWNKk+Ôfk8 kJd?%/bR\Uf_ۑY0{f8> q?z82giNXu_ev;V,#_'9 _b*;tq]{-s^SL:pɨ.U;2tLtvOY! w5%V}#'tL& W)g~ӥȸ 55^(U)d[*8~g\7] xz\"g|_I?V?rϱ8A&Z61~ܠBGh:.p/GY,3D09='JqB>RT;zѡxLj9 9 %Eܓ9Y{lJϵN[T}ҎJR:ZGJb`Ua搊$3~3/tV2V$5pЃ & T;}sMQV.^hZeLk Z2i4%$RRyPpjh]XK&7XL%e}b@2^Df|k\3x6uPqE8*l`'xx!mUӦ#4 X~Ng>n]dwWa'X^bY͈8;Gp??ۚ}#LF8 d;8BYOUIYif` T#`a6*PJPػ-S8%.Z*m~hlkP )q ҈E\cRJ?o t>.@`k7w[Vt[1]Sn@SQl.60‘k\htǵW1oVp^⥩Ѭ-+, ꯯ohRփN/ˍ-RRN7pU<]W}7u{˗aU7`'u Սm[gmw8郝|{y-:˺%1m|yd#0#{rU{B tK6rm}ǁS1]Fco #SЫy;n%oRihawK/?rNJx y I'Gug ч{wݷ#x Mƻڀͪ~ACk ڹ6{š=y`YVd*˶eD_jK܋ɿ-m$QJ,d!19@ȑWbN%0tꉐrIkI`RĐ2Gm.y$?nLG3 MVU}}?pkgk:NM(|{oRtEBh|8͝n+^ۘv^>sɞJS> YsͿX CB10386 gcb1z 10368 48704 x}I:eJ/y#1]T.W!m6j-2`e^EB#q% Q5| l= hEt$ PD T)5H!7 Ƙ"B]lњݹmv|Ŕ<}q7YvblYw~}\M"*n 6)@#^a>`5h5YpUrr1or:/,gcMr[Zme75[xn7O' klV 5]w]wzqDu{e#vUtĠ~w*'x @P mV_|aӬTpݚZc@鸷Vo5\.Jc jJ"B!$F`aFθ+;no3́=}( CRpZ/>⹰X..h;.|ƍ_}0bbjy\);.d> 2+Ӈ ?$lcA]7 NĹYD0`;qb vÖ(1ɨM 3L"4 C!<C=ta4/$S(sbni" gLrg~9`68^#TH3PPLK,=Spժ[Z-& iX|I؃e/2! vPW?S/$/ uG|6b ʍ1 +@XG% D*7-F xc7j- !\1txgymýf9MZJ(Ҩ05d3(G%jXG~=ՂE q-eDu [%knYp)mqw3'P$r834UX KT {s% < 0:g!TLg.ߑ!O$*x8,iD>S?#5.duZ0V)(S`hJ1o'юT;J"+Dz!rNvk``XJ] "Hq.y  Kۊ7{Ej8  80ۈ@ !ة`&w7<556ZifGSXiKU@B #>q;aFQ;R H$s4:9 0ޑQna9/ :Q pM,!GL0a웝M<6/Rj3psلuAkXt Jy05|[y9HuIXTKG81EC8I4&Fk U;^hٻpbv8 _uZgq`v-,iDIuFJ -B 溛MU.T1i=0 $8;7ŚoG&@?k>cG(7##eT@C>*T>>`}t9hRr`~@r <9/TC@>WS?a z sN!gȟ@q~"TCFrt1QJ& ɈEa r sN!gHAr 29/TCLsO@'B5$:KP4NzA,PtM@:(+HeM;hhy+IUUSM _l\[xE@;⁵BBpl讁"YL;jrK, .Z!#.fg4`ဟ?c|y_yMBg<>Ч=un Л[ku~C!:@COz^/h{\s>%VÖuC4eqY>/a`6}oIߚţ=Ǐ@sĢ=\6& ܦᑥTzD gX9$#,PF~ԣ Wz{ծ`~I!d2 ֊~Ν:~R#X.TI;>nNn٭2 I1ުewZ!r7  k0 kK %1y4.Xs Gdp%2s]"NAȠpVxJȢaQ,$,sb$S*~{뀂 lY_h z؋iLړu Y.%͢(&a9}d;! /Ѧ_{fu``]wJ~kܰJ䪔5& TmIı㋍F@> P! نP$Iڳ|dr૳6^F)mQfnМz(2 \ [TH>*a?.+dn H$Jɑ}\d7a$>Rf2]%.ǥi /?#cUs.JFIƛ%ɣgP'.pWɦZ\c7"zUrƛ LeH.@%l4y+z;kr"v]zz1hok_Z[VvviޜQx^Kx^: FypL4zN`4hrK$&sD0䄘],D]n$L63Yp" zL@@,QdBhǰ- fH'BcD@ 4HPQglLk1aޢKA~vXsEf5!$ZyOUiF(F )+ q;1xQ D޺+(BNE;ҵVC\"B{ ?F/d(w8sS 8,86x1p7`3 QGtNiqj<c78p ~ Ȭ@ن_dnUٝ!y s: ATADf4mn[ɳXEy0Dk,ּé: 3ˢkJ0 jr;$`."j/Ɵ["]]WYA<0p(f'Cz=#ߴP+^+80N$ +eYOރ#Wӆ[57Zic=/0hCAi:)|ƿqV4r(%Jgí0 R*w!Ď"BF`BK 0D {0^(,XFkD50Te'Á;ȢU*P~"oq}%Iq{_ڜW.@t#B$br(DM:v~q6OOU~o KtzB4KoE s{еvw0N[=Asξyx*o?^0Q@z[M"bee *]I/%RJIzֈhA D)OϢE`0X\4R?GBP78p|>lBaQJ@ׅG,w q2| [&?o\!Zy( ,R%tzgmahe1߀g>D/op>LFFhi$#gsmRNX21쮿K8Q+`IFg;wO.mnN^{ohٙAg fhS1nVNlvkw(LR =OlS|?sxz5r~LjoVݡ[LFlMGiF`HmJ\ m6dښɼwf`|IT}jvEK; 8Slh29y\`jԯh0ΐ)gMฒY 0 XN7b[EHZ.Jlf+'WbOHlJVl`vh). -/2ŕ?AW'EV:)ĔEH eqJFD7ep ~w-ݫmxc'D. WVux4LzN*?t}n* y k h.fV[/%5Ifݺ.EPφ끧D8\3Z*$%HT*_ůd>%ٻ#gK0q0ҝ4O%Va,`0!֩& gU RA);t`_n^Fḷfn=oƽ&^KϷ5#U ҭ4 v31 ,t1/>7´3sG>xS@[E$w=򨯔zmV{Ӄ=͎MΑjղM,H1ǃaǭJpA7ٙժB!=-TJߏVn<4F..<8Hњ (NrD%/iMdy@8g&JRqHҞ6ұ)xRr~:LWIvR=_id/77O}y TMT(uvbHtsQFk`FNFzCMqF̆2wVϱqݔn)T&(8 c܂Tg\K2Cqm[jxFDEqQ<|*t6`c4Bk r`9ۭ\&S}bY!  @l(TC0Drn`]rEo>ֿ$O]r<\'3^$t>=ql)ә i/RW8X)L? q"Ee6;BR(KejqgcO3>HLGa4J jml0Vg]n72ǻ8t(J؁LRl 03BLSҍ#n,.oDaN[2l;fk.xvz ji[ouRMaxb8M)LanẙL##<9$w$ʈNlF+mPճ[ >?B J[v:t0%THVT~_9c{AezQn@{u+DiSMuZ ܤD|@3;| qj%ˏ?GDje 6ə |A*锱؁McNGۼYOO]?P)_ε_oXl&rЂP-Epe*VD70E‚FS۫7klL˽Ή%R'Xlbbv >i W;_A,g嘱)fnńSCzW F6,͙RZ?36F4U23Zg\y<,x}4PqF-030 kz85vkf]wǟ*)G#JHEęu:ͻ%+Flm)fh;ﴧEkB46d}L=BQ"!n.V#C>1-R\!KJۋ Z=mt2✈9L(NBiqt%-[[`J͍|M pĽ`4qϢ8L\^MG#w.H õ H} CiCȧuEo.5.'[j nxxx$Nt:i"cxT2fiL%`e4}}+)NU}WܥO#1ۇ!2cXTkf, w}TJW/~/SOV?t W|cnw;1$+!}bf*l'zC4~Fa%7øVi4rX5T}n?uS1|"Gb{Acro\IZv;6 n 7ZQ vBVg.@Hzy,m01DؿpeQ7raq`SHHBTP sLm Ƚ=h'MN-.]) إ%x ,m[$h9}qZJ (WU)W_|=A-N%(bSLYapD;٭'d[:jIޮ&;U{sWS+gcM낀\crR FL!QE008dF4?w{j C؋TF\ w%3;%CVJ4̎|m$x~nJSJ~,o16@wr(n3@uX1% lQjvoׄװ5]a!܆bJoḊTDv)&P@TtfvvŖnv tDN:c˭ B, \Z:-o9)~X̧ǐ Tw@I5E3zC 'i%U0fy @AbVX `<]~1=SH|@>-.GL߳.7H T8g+Rmo5ͬ%8rvJ*yi?6, y԰ǘZ o(+[Q,…TI/wtE[^inꋔ'~`Jx{!F!Pw(!HTkz:!yBΗ:X BQ#"Rs$hn1zZAyBƗPu8;\A3;p%oqO? %u%aggKBzWW~v$-,m%>;[RǩشΖؿΊzYb>;[bĊ;+\a۟-JNZ#u}ɎeKO2U=?0C.Vj:gJ4@ AXXĔnIGSN@<E·"6jh*ߝr{y7k*hfOOaҿ/)'>jCÓzqK'g7J*CvY" e(1TSK%?l-O_K.Ck!dVYv6^PCf< \+/#GZZT<*.`B374 gcb1z 360 535 xMr F7^)XqPшSlS>B? #gMN1y],0D7(`jzե,VgŌ2huhb|G'Ub@v S[b1OjL:kVv+K tYdNO>HhP xwg)dP^m5k'ѫPZ8I ׋ɬ CΠwW_)Uq[,%m,zBpn4/SRԀF`F!Fġ,59tY_Xě(<=F_ɞ.dw:F2Hk#5/3CVS3A0vB ((!Epython-defaults-debian/.bzr/repository/obsolete_packs/99140b5022fbdd113863a20ff50e61be.rix0000644000000000000000000000027612501656275025421 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x-A @ϾЉdT KC{Azcm8˟w) =%!P̮k44( :+%O t}python-defaults-debian/.bzr/repository/obsolete_packs/a8221a7d71fdb12d9ef4094be36ae467.cix0000644000000000000000000000023013031374442025542 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x PLTa D/n{wqE~Npa[cwP !JL@6jVjBLpython-defaults-debian/.bzr/repository/obsolete_packs/a8221a7d71fdb12d9ef4094be36ae467.iix0000644000000000000000000000026313031374442025556 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 xm @VAe]9؊'OQ0B 29̝43C"(RXhr{p̿u&}8W| ${1MNV&RS (@zh$npython-defaults-debian/.bzr/repository/obsolete_packs/a8221a7d71fdb12d9ef4094be36ae467.pack0000644000000000000000000007105413031374442025711 0ustar Bazaar pack format 1 (introduced in 0.18) B14069 gcb1z 14051 50286 x}[Vރ+%EtdB6x*=ӊD $AH UMi~_?G g<$bKƆ"s͓/,]yypް]yO^=}{g/tzϓKEv&O<)wNp6&ZƅȳSQ:SfN),V=u^FeyD*+byvqO(e,O:N:Oq7;s>;6p٦t_}h8q^(q={7teYdy,Ӟifp6*TOumZoK{x|'"ZOYZ$E 6'^(o&K'7y6Βin-{]]ͲtK2Q=ϝ'%g"9$F$]:lvi̶y#*fe2MoqЇMp!a7ٽVKSn]sUq9v_QzC (Na4kjcZNl[8 K~MnKuÆZEcW7jL˿L]&ZB)|&j8{f,'evA֠i[盛%<%>+3tH0I8ttN lp̝쮸Ix8<@:4 9bRxB($}E SpugL֛]q(X=ez]D<*^Żd!M]g@b(iI^l䈒#0pCOdYE3؜4I.בHg(NRU&>L}{hȴx$M>iL[zd@E4'ۈg1iW \wU '/zMtyۋ=puyE,7dSjeM@ 8cF#Оd%)ڑ-Qv8*Hx DfPqylm{[jrjs K56MaP̈́C25N0.׫.hqLRY~̕;(q 'K :E=yvc{8p*Ckm[*E5Uyc3Xt!OI`8zQBmᚁn#R >*O:熯9He]謙>{z ͂׶LV;,+a#҅-{[mŕR`ˤ#ج G5!M5 ΃VDIaAS&I=;5xn]?IКR*N2ܥH0 2,IQ< mqΉ#D߽}90lCsʢQV0ǁgy*PLS埨nf@E,76a7jALe3ZgttGU,8 ٠7cJ$O!/a g;;/Cmo̯Ev$e'uޟ_]tU?\Ahڦ>j7?)y 8^6;9cgŽ6I,bOB 4SVIGCbu PZ@2@$.]<5`~_Vw\!.ůC;n׾|lֱUOxR#buJ[s1Gb>CjBL!7r>]WԢ$%\w l~޵7:_I?շ,ۺѷYzd.RI Zʖ"ꝲƔ,^Ev@AYhѥ],:}>K!m Al$t @<(U(gd< h=wfN dWqaZXZC5l1:pN71 ] L9:fa@,b "DgY0lfXns L^iLjiTT-^-Z\} 9m?#|?򽐃 Y KbV/~]֣ی܆‹ͷƈ,@X)4% Fpmw$ϣi#ʁ[+GFئ3F0Dbc{Lp!fPm ~EY L %ppKL2`J ˋ$M06+*heEÁ?!'ыy0hl%ڡ.'P (L% y65..vԕy q RXwu&iY:Y7ܛrV5lP\ɢ✸r1R$N?E7'~3\od}Q٬d8:FC*,GL,qܑXa0Ш ѡ^'ϴ]8/j뱎\{'9Θat>3;lW/퉈?蟨Yէz׎ۃYCFCPd^ Z 8E1TsHr)N$k7YgtׅVOژk_#dNC9ئA&*aRq2IʪTEKV.I1F1X;D$OJPF@b .H?`{H"h|ۀʻsXvd!-'- Js6ISɌ!$Lf8C ݛ\Pґ\'2M2YՑmAtG4\JvA.]HIN&{m'{' Kmf]/DOvbBnEǔQ&t$ͭ"~aͧˮrahX&ư74B,~suJXwgRzm\XCxɨf.`*C촘h%*w$*Jkj42CM7q p4i@F.G: E`G8Iٔ555-<'$t!RMBEv粊,4O;0𴛎}amU#_д6F[HDlZhqkl`X$ U J1 a [6H}-IHޡxi[A t~d"I57ՃS C$vq Ԋ Y rE <,"4YF_>,ib(Djp,Y֫;w,]bOdUrx*އqTrʹ0OM5j}#E6(thuf8_SPY'Rs^DK~KB{,J.K$R]@fIi }IRe2.R%L)wLQL)\Vg6/ `'i\L*c ( 46H롨ü& ی}ȕ G@JE$)\Ocp1m*Twɀ %.2ƃ3y yEؙ :0XeC]+~%Nz͉p T551b֢J+,e߿~WW,ԉi#xU 6Z1@c={hWHC'; D(%ퟥD $9@suԌ[vl wp/c̠*B6K 0vjXr7,QAIUؚ710-%*{ ɁXnASvX4xB[qsE4qhO|hkF1`s!" C6Vf.[1<-'Y_356eԆǦfb{ Ul.4O`k) 4A7pd/<6<٧!]\v*3h 3gALwjxNݤ нI#ȓh,5&߲hC+PA NHNBlB4(5o=uC{U-Z)4**NXߜ-*bmAi<$^iݩ"!OTz4,A@I8 6H,PtM[,k*%ŌM`a⏝Vb[Fq@@mG/U6|Q/:^^.^/BJU C]z좞ƥ߄%ib{sq9fE=Mp ')S8.⮊p1d5oTht kdT TolrWKU3km!@պN7~^ۧ0 %pW٭hyݛRdgIc 5&h$}ˍXGOa>U[uRjxmd\,7O>yv3LWv^H-j{A&v&Rqd Jc}V\%*J!yVVjoQ#ӽjp  MID`p*\\hrCBϪphO*M2ɶyΓU60JHu{K B(ToCqx &ߦ[Cu)#r*RzGZRL,΄J{IU!,~$GHI$p )$<'G)[~{j7p yZ--8]x0A5:?.S?3NxψEɳ\Z#ot8_?VvzȳY &0iRDGmn'bBѦ7Mh!ה[у ]ȷ@7ŠL*8*eoahR}eG-?cy3V˭xX"'VGs1ƺ( 귥.``EucVD[[UN(\OA⛝wF] yO|I 'ڑz4wtv|(spk281c`O Hk1X4zTKq(K#C'\K4em9SkO^SkJf'я.lTC ۔j[- w%%(Dd~G! 4")c˨߲K#@G rvlB0rUT 7+9`m5-oTҊ3܊Xxs{d=r;nT9hc]Q># DctOup/y$e M).0lʺUvYXgVjz[N+k1f|RÏUNgٞ Vt( w<˂kmOD`Vgx")dz^WGeFX&;7hޢD}eT/?~\t0z9 5v kT> ,ʒ_Xc\&jJ{bD4o:H;,+QX V0i+Xb`Mn9cW{ ]p8{u/3 طe=LhjRV?~`C  ; HNᒕ#RgTJN+noS>#蒢ەD,A~d+ +7& y@UPÀa"o(ȎD8Vƾq{7N2UZ^FMG%O"^~ɣ4 %EQ+-eCV4З:%lK# <[cCTçMuE]D \e;ZOPf%=q1qCARLK\ 1dwr{;2(f`b;JZVoSc qe,_=VR.&Amʞ5h8.A)%{*~'Yɵfgw]W=|EEN POo(}>_&i_HSrg\T–¼~2a$θFv%.BWh16I4j]@Q[1v{Ss;ʰiN 4uE/u4n@wy\"TO5+nxH}q\rsr *oQr]8A ǭ;P Jۊ!7l:E P qf*P)zΣrL¼{ :hC(c.o ?M%F3|(tT(#pJey{`Ǧ)T4." bcի:@Tes/Bү^(޵Z;?we2*b*UaK-k?do#T إk#PJUzn26sH;T ]?kr]&}[ۭ{ !U"b /)G옪.~[K?'*fT!H|g|38E0v;X.՝t_NO=s{qk{ 5Sux+>5k ecRHyk2 A'VBzځe6`u^.tT׌!3LAlAc?{#?!5])'th?wA|MT /?Od3t,%~]!ݱ I+Z4ObNxIg5GG8;&~/N&.Oӌ,徇 T TWtV;V$v3x@DlXw"z?p\5*4^p$+#48.&M`2C D8ԱVp4Ԧ i[L?(ڿM%ӭ(L$_6VtbŶZ g}eEA份s̽śXK'3 b:phc۰u|dc>&C{IDgk?2XS}SO8zT_zڋCo_9 ~Z7+g Z9em6heBDb;;4/2[T7.ֈYFW߄] RKE 5@Xƿbņ*ZVJ_% ͨ‘ZS]VI nPJ)O9\esV=a$`-',dW%%שr0 ' I=UT耲cЯ@ 80\{Ɗ__]\;yr.$`KXoEg:[W a))wDI`=fV b_ +נOj(sӻ,0T$L6#7ؐ6˟寗U*Dy{!D T{Ϯ6UL )~hedѨahlT1lruxiYI>5%կ2YqZ(K]Zt.6tn 5ICf6S 7Tageiz7c1،(yp`yc5bqwɼF׉䠶?C\rAoXPՂ<~B=fV*@vI"S&` ZUCP_؎AC3+P4!&Z>+QGLÎ"Mu>uE"$3پK^+09YWe*o#\..(v& y=P XJчeHG9."w5ln6H < ZG V;&e(hD&0&7G365us䱄-cGuRJ(tkt[hl<}c qy&sDgG5MVv&&paݢ0 =s)' SÉsΕ}z4ީV|J ԉ8`eFĒ0!SLYjʥ}sٛyeziڿ3b01wЁ~'ɼu{C'AzOw^|72 >򥈇T픢IL5xtx.&~Ic$݉F5[1ƿ>lS%Ӟ?]]<:@@McX@xI+>aPpqGkR%sP hؿ?qא}>‹lNipnc N&5kdV@&zX ;+;}zp2hMr1OB2057 gcb1z 2041 9395 xXmo6_1 }Xi6\nФk nr)++:v[4~}RoR Vpșyf!WʭIe|ŪhGFȢ.JdI,LÒ Ljg\c VR%/d1WzW4~p4 |nH/&p)QeJnZYI#}xŔ¿lg!}lY/xɋƩg%Wp;r7vd̞;OsVl)f=Lgg>e$ߍ)8gwXFNl]b*;uimyQjL9N7MഓS]Wve40e,tOԔunG>w$}LRj+qy,Z[kj`TQ* R8J4Y&7<ߥ]`=sQep|{( ڝ{WBG^LnmbEUЦ; v\7fXe"ixasvςW5JTe 1_Лʏ3OX{"ITF= 3G̶D(jE^Je)H$YuDJ ֓HR?7<a1h%!cER1pTCnӎ='`ҾɎja"*W M iMV!B&DXJ* n6RKdV sDⰬRO (["ҁ:J~ +Ѷ Mi}Ҹ ERhpqbMV<>8] kS[OK,y?o|'3nz}dWa'_Y^be͈8{'q?3}F4wp2 ̂gYVF ®wGWrr]HZbM j;2БAWkPJCIֆL kJ+aZi5)S|xyjbXtk`}99{Φk00̰pԸK;pBd=#u^`ɥ+ZRfNS`<92:(RgwJ,͖1CVt'}{#5!q( ռ-Ħ0?)"  NT ޺"Sϔ%^sH[Z:&STP$<yleܼXVXmG| ,ݝWZ_uhup2_11ut>aĵa mc_ .^[txEʊycSg=6GWnZ~4~o_,ޜ[p2¢W ΋dazytew{A&wp{8Gߋ[:jOhmr%5UG/\kZOUXVnmWLUE"l 1I̽nyl$qr_b) Btua߉ѤTOK"4^#O"89pgxbX*~ 杪T?47&  u^uP =ԥ?芄$0b!Jq {%c=U^>sn@%۫ URA9p/8B2080 gcb1z 2064 9356 xX_o6קg$ml#Ip'6.l@I\]Iԑ7ۢyw}Zy8iR `E׼!BU ϽH*\P1R0.Nz΂\SXF$rI2sh37)^̙#)ʜtdFHͫ5.juyjX>F"5C_uNqNeu2u>_a"?j8N-90E`0ā8j a]B@*l*aӠ41XsiM@5a4V8k;⩛f7J˸_edJ8ro>`RC [}[]iâa4=02s;0Ӕ:& SWr1fy8_XwE쇵W7gl+8^ - ,sononQL $$"Sr橁$?Tx,:۪^.Hr|7=oΜ^lULWzKcH;=뫜5 {`A@ݦ- ʸӧ{ )踾UANngYU|١NGg!z]NyhaI+E7都m:gRγwQsE3'+msvbObB{hv H:xϗ# ;1S8}"KshM)Nd٭o]ջZyPX_VnmS'̪Ԧ"m(seI}lvql (žĂC-'üѓTk~ 9;"HB7B4d,{. ݷ˱ؼeT5*nnG{g!Ǩh9-븮Ut t`5q },HxDnC+I"7^ueU)eW JW>1]/)c#}n}?v%B10365 gcb1z 10347 48676 x}I#;eJ/y<*K$wݻ\`L<ڋVNwR_GGS@n<ΩhpCh߿'_sKFc78): E6q2kX]wnaQYdaݾ/nC4 aEm QsDDAͿSĮ{FxZ B bkWA\IBa --k6cZ,061h,Uz5RH8 g1*9igkbl70;>T#/zդmbbͨ/h%[b_l [=9A(&.W7a&XcM$-Zf1%]nYŚľ|Sqtw:m&cukwm&$al*f v_"nόz.gX{ wr;Vhr fJ(KLǭzBtQZg(LPTTZ   1 5LvƝ~ubH 4;,Ȼવ 6mSac\ \@;PG=w\a UͿ aZ8Rvd]tdVىA%l#cnAM7 NĹYD-!n<{&%JSOÁK'Tc> RHxeDӗVW9``Z3X w8jї>g(][czꩉ,o0Z%1p2|AfJsE#wBτ!6F]i$ iQAfȼ@| 2(#X)4!R!K P 8]e3-MHrhY1ڳ糽Y/2Ug÷nu$9V㔺n536D1Pq<#5F k AޤX_(̻Cm'8v{V +dp|ud!FHd4 my# T(F 9̜f).up[ r3s @Iv)* F;c,N!#gak0? (z8+{VS?!fvVrAr#6F`Y$C=riY{|2y샯F9~d1bOMgmLҸvN2300 Xef- 2X$b< 3΄@)NQ0dr'2}ȹ_r6( 4xm$S)sbni" gy샯 gH^lpG͜CA1-`@N!-xE}4LҰUݟ:Ѓ;?GG*d]~ "@DhbJbb,vXCБ17|/Wԫf2,VP Vv&],`? 0fK>6nh0Lj>%`G(7##dkA?*PCsRQ íeF^J 9#yqG\M? t%gs25$9CBrS<B5D$:OE 9Q3^HF )rf%2:39:!$9/yR%:2~!TCMrKԌ!AY)w- -|6%Cwю'*7:I{Рn"EZeTaeB3G:q!\m4=Z:(0#kg0]7*%|5m`*Zwb!lö`#%Ak)Pn祏*D THBw!?lD3IY{wY/|w@[(M[n=WhJr9jbZ@x.tIORK G%lǷ!8K#nD]< 5âV;:9ڝvZX#A;Dam#a&p d &KFGZx~Jj)cɩ0j<hcR`xX`p[Aa[+Vs\lwϭqh.X -G{ʷq9 No|J=xsg^W G5ƎUɱ볐k\r P@7)sKG1 ΠL vV'ѯm-J&CoۊVeN|› LeH.@%l4+z=k1r"vr'1:]7o`_ f_d8@) XR(:H*k OHSWwnZƘA* Q4پ% NLGrGw㲑3bdTz 2e+g$QdBh}XD ZcAd z0@35ʴSwSNb]Qw<ιrl&DDK\o:E&60-E`Ѩ2N]\xeAճ[ת A H&ﭹB [koQdS.]5ą(Ry)$@cyϹ>>2+QXI 3w8k>P~& hCЇruvoph0e;ȨT:4 8lc&`9Fypn{}m m@(̀_غ`DEPXDT`F;_\О',hIыZ$UFpC^19!&D4CYsȇ%@O;j[>֜XXsO<֌}k2 q͛ݷNp ֬ܓ(5s<6֬3/$XO,֬yk' a}!Ú25p2l̼(f*ڬI \8,@ 8"FgbbiHۄ H:Dʧ\ 2 fKW9DQ(̋Fws|r+|@xNPsJICJYkC`xD͍VX SF#i n(fbҙpmrͼ!FJ8]dH 1 `p#Ja%}Y"Ro)G Jqq Fa*;L<JDЃaGq6d?*(?8̺21'4:9vy]*"$pG T"2!Vူ/"9Foޡ't;fCViKTiǓc^-^ $cdbvDKo!$D('^ Z{b'`):'B>RJ+*s=볚MS,R`ȤsJ1;iL(fP1rg:b$6#I"H5UH@9w( g{kuX]υ{hmVyŵٯE33,n Qr\3|Dx6+Ri @.j8 V@3` 0ּHY+V(䵦 "@>( XsF^OIf+B?&"~} \OXUfjT.3*/ 3P\̬^JkMeQـ݉* Oߥ2pg9U*IK tBDA*=ů7d>ٻON``@۹;ta)K$@=K*yufk5s;&|@ Q@[xc"ڀ (C" *l)(hDy-O#'tb<|LE_>,x=縪#'zj'!ԍJ:Rq(<# 2z_MXƦLtZ5A9p ֠ .=Z2M `R#1%*U?YzaDHR PKgSAH!{K昳͒i4V+'2~6=8 NH@e>(Pal⼜Tjmo_ 'F|Σ ]`/z }E4D뙴PE`+,MZ#DDpͳk8%7셄P0<G(|Z2o,KFh@!`4ۻ]ݮd ;7iD0_8tJLRRw_M)KW~T|?U,ބÜ}…i0^0E8!t# x0v2U1g¨]ky5G>EjAy)sI&-#:1}5AQY`tZrԼ{@AW)gˎGn] _P@dE܏1lHDmN.v Z =%ҀQHI)2 :| oj%ˏ~~Əlnglz"#SS)UV'+4;i~9ki ~|EC \ef,K ]xRWiE$}!X$,Xy=oMx&)V˴q>ߪ]nxX"u&#«$U*W͌f|h rd C>3փk霆(|_*!a.d>NR^ؔ*ūQg90:j7HqLJgCȞ7yeFw eccǸdVerjeܛ~25һa:qdi7'#Ԑtc7A` :8„QV 0}ʝt0wMSpXƦA /=\E#J$Q@e$S'm H#2`AT  Ϲ!CMʹ~UMoLlsl?[,z1A|pz?/K%Аvז|k Z>}T3nTsP`E ihT,F6H?g[ڸ<# 8 e{ tKTqNO!D `4L4xѨK(mZ#[ƟO l`-6W@+? )FRk n*ʆ]: (PU?+B4DW`NtV#Sf|8M}zhm?=CH ΁1Z/(6G1[B]Ѱ |Mo}ID?t>0~Xrz|4]8ﹹ &# ZXJ0PH#$ !xCVl`'pl?P)]s]gwzzfp<>bǖ|JVURYˬ7Jÿ0Kc+!Fn;/!}ucZ.}Q^r S aM8NI8b,̼pGtb_vFg_g([mT'j.Nt3"7!hc`ytMjojؐZҧlƊCW|e}`s%OtocK=\[@eS;~*z6LbX9m~_-ܵh>[/GdjcG#9,c.V{pu@}"z-^3VGLoXj{r-xwa%A(n!fAg9@,r`Šo{NCT,;?[ \FVo]IZ6f(gL; O!JF 3 Nሯ߽<^,/@Ah4basxo71!%roanc)nov:ua旱5`ZG `[ĈIk %l XKe]*u?_|&hũsE`b)+c'Vİnrﲥ& b S(ӛ3&coH2 a@ :4/P^9l=8>-4ON[lN{+hY!4xfʋdGUqǰZzCR 4b ˑ؀ ۟E eR~i(/i$B&@/(xi]8Z 4]h"?_g(R6F:05$ o@zsW~μ@y Pp.QMrz :\L*@}(/rr%? iSj Rz`J"n8U[C-?ۭ[Uɥ5\2wp-fRC템v B2 fHŁ [5" 0x}#CsL͊c~PmhPXfmL;tI"ݠH3?A)iqⱊ)c- cg:}7T~dzmxT"epX|wT ҬHٍ<Ҝyi#͋G" ii)/k_ڬuezN}qjcZ\F~ŁDX\g_Ց/ 2}Ϛ2C}ׅ/پg m{^3eUbV{֜䞥*)U;9Nti{O|3?xk A ;D^ `5{gE7uogۭO B*z;ŠtLt"54WfEʟ~`Jx["F!PwHL#جuPC`/3ku FXEcI$\cz$8/3kpw;\AV3==}JbϮĿ=vԕ- a;KY\I\ْTflIzVb>;[b;+Mdal+sm+;6kXͷ%;/UT]+_8`-ݠxʔhz)KP0x%l*9b#T^;h3YL~ps- T8uݨ-ro?x@q:Z\Zp8ݛ5 K:חQSJ94R_T4˾WK^iE$RPaA2D& GPvwUbURuڬ'DUEURrLM'3R2MC`joBp61(愤3!rT:.D ap> SB246 gcb1z 232 297 x%Kr )4M(>Ce }\@9gE nrⲧ\nh6e ):gD}]a1=gZEKz&yr\+Z{!>==Vv`s;[LiJ_=tiZoZUDƖ}OjexP5~P]ބ*Î+ NA(@'`B326 gcb1z 312 438 xuN | &cAKaZLL&q_w!HRY zF¤JAL¯/S b/U;|(inːU[4}4D*{W piaaqpJΓ hnyaԄg\FKZyQھP!p)LO!GlQnk-/Apython-defaults-debian/.bzr/repository/obsolete_packs/bc227457473feb0ee354172ec6fa48fc.cix0000644000000000000000000000023013026203612025540 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x PLm-k0J#)python-defaults-debian/.bzr/repository/obsolete_packs/bc227457473feb0ee354172ec6fa48fc.pack0000644000000000000000000006062413026203612025710 0ustar Bazaar pack format 1 (introduced in 0.18) B14012 gcb1z 13994 50101 x}[Fރ+-ELdBUՌ4gz$A$C:W/qfVfU$HƆIuYv_;n]Υ]9(:˗q:n'WuT$*oY;/?w6[.΋$K2sTc=u:]6sgqL{y<]mKS=z+lJ/΋wO84+2^.YϡmaI\8Ir&Qw.⸋ F*O UrOH2N9/vӢgZ,/<|7K:)M7Ж]=nfYY:$e(γGƳd̜iFIM.mNf{4Z]mdu=bfMpw,?N<'ٽQKSm]sSq9[9qwU>S4X^Ï1-'~Euj1<5N(5zo"gH,8*w9"͜u-N(gY ;9:Ԝ#ʍ?K vdlʁ(YE@e aԙƸd}uÆZEcWzL˿[L]&ZB)r&j8{f"'evA֠i[%x'dK}f Vg*Α`pp4~ [~-(p=V $Y;}qp<@:4 n9<bRxF($}E S5pugL}r, Ȟ2.;h ~:^Żf!Mm4 |[+ ď+VO()0 A?DʑU1ɁLryf PMY#ʚ,2%= Ӿ㹓p4@2mO#d~Y<(n;Yٮa{Z/x%~΀EN8a{=n#״(2`oJz@6VF d,<&Al4II6PrAi:w@jZ :gٖߥ&Q/1`,pϠ+L8$ZUYwA;`Rc-)8@yO;8Y"d)꙼ɳd AVdZcmjT)o@+ ]Ww-)Jù  t=AGV|ҹ4|A*?Eg[hpeveݡ}fY ;.Dmwl+^G[&vP@ן= )Dhlqt[Xϊ=,sAlyv '|a# #"#x8Ov{ j :v9Uc+5T4|dIkv`#`;KeY%yZTG~Ewp9 E* Gw_9JZY:`4a[KBR.{80M?S> Xomnxl=K2EJ0[Mc߁|UE(@ kE'l7kQ7`]Ɨ }

"9[ V2fh b@8)>-\)Pxx҄}Զ@-`d2;@|6HX Χ,HIyFyEՙ8)apcqh_| - k l&Q@, UN$OvJ VFB4-(#ѕtQ'P4]룖YTyLP=ň}6@Gwd^Ur{Cz]A.i[@LKf&':*VdTTS`Mb0HE2Ũֱ94B}Dh6;HA[B&_|dEUmuq<8(^$3ty7_Ŝܫ }7o{3'Nz]';ʥECH@E mDHBQ :Hk^vaւxt(* K%4u]u*=d$&0O3vNbdvLw+EquqKɏQmߠ찍+&x-YrWhT)0bM5`FT@hMi'5h{ OZ SQ(PoVJ:4"^.aγ,j/Lppe FR\>Az[0xgxVvVs#yw\W?竏ah7h37OgyL zEփ'acܱ(7% &xoMj9J+E{A1z<1ܸmۼ@@tD;aD!O?|+u ;z~CgƂ]IoNt; fhU ,b8'Vm\@4}M F+Y9q_T6:NC?,Kw$Gp'4j~wtldD (مvθwnFw3Öx%y*О#AێU}_|=X>11 Ln4=E6Š)߀SD#H8,s:^:ۨ\Z=kc}9YT*chXIApLC&Q(N쯂_RuY=&^`q<_b*AD/%t #9vOOo*P#/a ؑPhЃ(hΕ'M)Kg3`p`0 -`r1;B3JGbs4ɄfVGuepW*Whz8َ'$iF:Ic4,An zƿ=^ۋN q~+SW#GH=4uBo4.bg7%NLDPaњޘ0 e:ԝ*R`ݝJ-wqQ7b? [@%:!ܺbܑ4n(Ve>oLAi&% ?\ud *bҗp`)kjk9Zx+H BC?neYhvai7mHQG@+imȍbISARb*෈9m(XCӶ.4n;D4jo^ KGdH<~Z$G/C$ yY4Eh,cj|Y0j%P*+ 83b ?Vԇ*d<8tJJ0+GYW8$$AMޙVⱎhŷW9ٓun9 ~`7o,-|FBBIרǨR^U|up:xzly*7]q-̋q p,HOAE~h [̣sc`=.MA3tw8"O-O",CPGJE'E8\W(ٵPd]tcP`L}WX)t9h[8B:LoLifx~Xv@L QlD', X!cM a5ue-,;!\DlDs-;@kvtC^0v44cMD)NFR%JU U%|Wuyn[ G gPgstvѵELK8[KzJw=kx{/@G %H4/ &̈́E ?J4c$Qd8Ӑ?OW.K1tKo72 IKyC+c#Sh35l@ThC|:.J3=QJ 2$\K8G/IpQ^ T#lInɜVb.2 neQ2ٴ[Y&WzGcc-ąV E\^إW.?$aNz5?kTpv8yH׮@8 1쀼bEzؔ1jZlh+؎Y5YYql½NHSۜeMibNXŸzsr(Mk¾yIƪ@;K^ ኹKr|a V&>njFMSwϒzTUzN=?/DN8ʻε& UgxPHDasGAQݿWH$_K$ jPU ,ZwKNNbBh̘b0 1ڵ7vݰYA$8&7eBRR~TYRڭk`ҪTT/SG0]Ƭ+f&ՔN.+3RcL.&1eVePaea^Bzm>Th3(s^@4kyL1}nfj*->l:ǩ OM̀3] ilR %htl ^yl yOC vaUfL;y)fv5)뽘\U1,b;v&@$  ONW<֘ZBV'B);!9 e UӔԼ RVvBSp(WgLH'oΌ 6v l4TkoL'W*=b $p҉Bf$a!jSz%˚%.nbI1cwc1cQG-PKrM{4_@ԋΆk}$( WP`_S \kS_53#lGs>{ݳok8?Q+aTo8! RH|U[ƈGto~$\CGq{,1}S5Xd= :0A '0ڃܐ.Ch*P+<ZJq̄llm9ur"SubIp2^54Źa lXּAIք 0#>X44H8!h^A^8`iJ mMA?W7=u)Kӱp#L#'ە[@*GY*]%hB`CKỡ8iI힭v ̡:XU)V#-C|gBf-r*ru`NSaM_?W~{#xXzd-rPf=Qu2QRd^<}\ L)8]B'gעYo SU/_Dku;lT,UO?D4)pv#6NQpnhS`&CvVB-z1( Jx`=luQO|r4LĪr+a"ܰr.n3($Bmk b5XQ-Vչ7S@f'#]QCb_ cwZ;Rn-p/9 vx,5-t+g0(!WMmgYkAmy VqV乂?+ӊgcR=lS{."Iº隬ZTc)hd 烺 "fUqN i!k,q2N2#z;oq?/ːܶ3\N^36mqs;5zkǠ5*vÎ5w뙜Bli鼊`U&B$6g9Glrm^(T&bF2I}.) ]OT7Jp rCizx^e =  :.H4.Sh+?wp: *3[U}uwtTT+U,S -bV>j &ua.86GZbۣ^`*bRڦY.ƈRRrb+yx \Qn|{rK糟o((/Wvbb||Cl:0IB;U+ #Yv}w0%?vG YMJQBm݉kŝہV MpTx5yv."|ٯpyv îȻA>._е!-λMV*c@ZٹBOtBY esK{;Be@1c;*"6thB]zjqXE;n Ye)(Pt3|)%t:$KU4`v B疘礐G.fU JiØ=C YXmffvG*lH V3snͿw?4.Q&BYϛ[Ώ1(J u%7xHΡA{ :GT'w`jG.ADڡRW6.eԶok@3tJDla59S}kp|9=vPu[#Lߺj9:d3Oמ?r"}ogn峺1GtNs:N`zmQfbfTyLlr߰Qi6uMFt!DŠCHB; V˅NX=ۘ*Q0db Ȁ-04SL }o亾'd9n)-o#. ܠ7 Z?QY凲ޗ=5tlF.D/+;!\F-MljNln +JDL:KaeK\,XPoJ+gZfY6irTHWg6D~qJCfjފ:zF]z]֝CDdH:-9%W MFʩ $M>`tIg PuS& Bc2>O; =8}S`t+ "壍X-Y_YDj#n/x6m- LG&Zb6,B4샪2٘^Ï_gE=*ůB= ѡwJR?3kNh6}2EG"1tQqS.QꂭɛXC DeyNvo] RKE  @Xƿbņ*ZVJ_% ͨ‘ZR]VI nPJ)O9\esV=a$`-',dW%%שr/0N@>I=UT耲cз@ 82\>xƊo_]\;y.$`KXoEf:[W a))wDI`=fV b_ +נOj(s^ӻ,0T$L6#ַؐ:˟寗U*Dy{!D T{Ϯ6UL )~leeѨahlT1lruxmY#I>5%Wշ2YqZ(K]Ft.6tn 5YCf6S 7Tageizw0c1ٌ(yt`yc5bqwɼA׉䠶?C\rAoXPՂ<}BOWw{3H ҍh@jzo0܆I-pz˪ IDSuGP_؎AC7?W"5JסhX7CL4 }V,}us ;F|׋DH;y)gCBW`rTTG\\2QPGW@5a)=jGM'#嬺Xհiy 53b:>RLW2hMϳ-p[%n̛I&3X@Hz ZR tց1CNK%OY{?(Eu(D\RjE\kmBc?C]V<7&Ұ<\^9mr5y eQiӇOO!I-3N[v~u싽գ7Ѕ$;PؚMq4Ca;*I<YfG^>8ʫI,uQ_\1JTŤc/٪AFG@{sZAQJM\ 0oLƚHL[b8+9:Kܲ΋5}+}/{tLDִﺭLV H?UBnMEQݞH]j^N/[AwAk^9J 'ص橕Q` 1[kVÅ袴*9FQ()"B,@bkęjO ;xŞ,hvCYwIUk>mۈ6Jc$*"wz7A´Lqq1Ⱥ8a0Ȭ@/ʃKrGƆ~!oAfs<&"x&Ć2ߩ'Ԏzd^ɗeA~HRBt;|6[,ByL JNN0ǩs|'G䥈Brcy/`_s4f."*$^p )}/_}.62/P(/o-J bSXaK "PK"bdn . sRG C,l,FHp5,Ң.!yEdvQrGR.ha9j/CJiQW4z bqV~;+}nV;mB`DQQG S1go DZc~FyS=I.6Xh`U !\zD,` &eSOgesjJg3D<@ rU*rO%9bZg|uRb--f 4,yng Ώё fF)!h{bXsid2 2@0K% D*7-F xeU}E$+cNI;YF̩ (dc HHSLNA`3 g@?ұyt"݈@ K aBqs9+QYs`3fjx0<%Q90{B6=8/Djln*NQCb¸NxN wa}qbmNu6Bk8aE4\w4lSf&Dq9_k Dmz&)L!^VE0тR a my}!Ro:\$dѣt 혢!d$aQmTJ{k5/Z{= 2a 6nh0Lj>%`G(7##dkA?*PCsRQ2` \I)-)a1R? gy~9/TC>ǟΰ sN!gHȟ@s'B@穈c4Z2Z!' LJ4dt1gs25t$9CHr_'B5$ :GKte<B@gɉI/CT J)8F"aYZ*lJzyrUi)&d3 [xE<;x@-cE7 ш{Jj1I5Ig[O c9 xa_?ώ =@(xY罣/z}7޷(.f|Cuցˇ^:^zEi~^|dK.(o/뼓>ۇh!5v|؞fl!ߪ,35=aSvmX ]f mYJ'A@yC2‚ eJ=jop[ Va鷟B&@8a8ogةr 0B}k -E&脗Q"K4HKxrδ >%Wb/IwvǺe.\ Gٮ8Zkv3:5V!(Y)Ub"@S,$,rb$S~[뀂 l/]ʼnǽJM𳱿Nc4|zt5U@5a\)%WF#cO~ {'D!n DJ _ ?DA]tH;>[m1XHIZj y@ mŏ7 LRdǝ%%Gߝ2JV[mң\Vb}! 6aӠR{iBQ u*%ch7so:({WOB/z+ǰU;:l{NvķHQX-BƈG,1:r \Bu=x&Yf}푖=^{Xr*L|Zht>d3Xyf=2:6E"VPXJ\:'hsk6 h$Bўm\Nh5a$>Rf4^%>-/4գBncurl,Z%\a$PM\~Մ! "5^܉ :zvKZ25W(P!xk퍢",vʥKE*O"dH@z]?9Qf% + dq.g ا| A!1-xps[n  f^l12uJ&! 20Snk>6Afʶr s[} f@kl]DGGX@I "( "*0is݊S.hJ4[\x$ET*#!Lp a"Fu9C@}'h}krAY'Ik޾5oDkXs'8xkVkIǚ9zk }'ykӼ5a?Św8UXGa6f^3~m|UIF`_mVnRk.P AD3^Ei14Fm$]"VGNԆrls"(fSE ̀O{>yGiV|'p9!5z0q !Vူ/"9Foޡ't;fCViKTiǓc^-^ $cdbvDKo!$D('^ Z{b'`):'B>RJ+*s=볚MS,R`ȤsJ1;iL(fP1rg:b$6#I"H5UH@9w(tT:}$zz.Ch"y~,E b /1hHH6 l4A>be}tA0'LJI҈haD)OoϢXxoMpp.d~en#!( |$4Hyb{nRT@%V[1L Uqy0K/pFcR~G0"q}-4&2S۲ 2 h o H$D^"78(U4ʀkrJgEC`g8(B"z6_ׅ opZ#WZAʭݿmf65s[kjD~Wx~WUb*:VQ|i۱.\oGV-`)LBZ2āӹ({D6J{xBUmvl=LVbn"8IC=6@XXn5rM;*J& o%A'R0EK SLh29y\`joS r!Zb¨ '}p i kaf!yi\*>}0nx#v5uّ(-!!fvR ^b =P!S\[t5aZ`@CLL\eEDښn5gmCoN|Kl cx7;`[ӭZG0vBAJpcN@4<괳2HjyM#(9LMH#͎ot7L@H +`<>rc#) ypd|"e6c@adFTR# RQ=4Jz kNvZ׺i xX1[v,F 7r#8"a\S67zl^,e:0N%5[˖*eA79}5'Rv;0?i1 ,Gv96UhC"`p%׍Tt!J`xk`sOfE2X(Exǒ!6} h5̓Q}ÚAƚ)K8zt~! @$( 4r0),ve\觘„[/|!L7]EwF^Z兂aK`@sMR?VI,*;Q#Tz4Qց#J49 6}bI!nB(=H[Sul'>{~)L h;wn8L#c q2gI9aN5 X8cf|؄Haۘ p 6 ǭWN7=Z^~Myr?L`g& q>+´3F>xS [E$\w򨯔zmlGOK'xOa1/X͛TIKs<v ϭDQZkWtY, BdanC@c骞J[.AY^J_Ԋ_ (D- m@NtSE!bRCSe4"xjo{}@IVJzS"/}s\stz`HOxMFK`BN)FzCb j /x&,^cuS&gwtPT8gq kPq-& niת[,0aOsj Zۀ_]sfv4 w@y'i 2R J*Ms#"+zt[J8A6vF~wMbv{[-\e'G'ZϤ=5*K]`SYMk[GH)5ϮܰBG^*S;\Gjeʼ, @e Q0lc6o>wu<ޜ|8Rassǯ,Q*,|`!a ը??/ALp)o5P$ޛaL*3J) /ߦ+?*T*oBaN>4]/v"[r hiQoyRrn<{bMɿLaԮ#"<9$wDܖ>Wڠ,0:v-9x{gj=leǣHLc./~(BR| av6~Cy UCJsu-DiSMuZ ܤ}[>7GˏM??GDja36=ёm |A*i4t{ 5۴|EC \ef,K ]xRWiE$}!X$,Xy=oMx&)V˴q>ߪ]nxX"u&#«$U*W͌f|h rd C>3փk霆(|_*!a.d>NR^ؔ*ūQg90:j7HqLJgCȞ7yeFw eccǸdVerjeܛ~25һa:qdi7'#Ԑtc7A` :8„QV 0}ʝt0wMSpXƦA /=\E#J$Q@e$S'm H#2`AT  Ϲ!CMʹ~UMoLlsl?[,z1A|pz?/K%Аvז|k Z>}T3nTsP`E ihT,F6H?g[ڸ<# 8 e{ tKTqNO!D `4L4xѨK(mZ#[ƟO l`-6W@+? )FRk n*ʆ]: (PU?+B4DW`NtV#Sf|8M}zhm?=CH ΁1Z/(6G1[B]Ѱ |Mo}ID?t>0~Xrz|4]8ﹹ &# ZXJ0PH#$ !xCVl`'pl?P)]s]gwzzfp<>bǖ|JVURYˬ7Jÿ0Kc+!Fn;/!}ucZ.}Q^r S aM8NI8b,̼pGtb_vFg_g([mT'j.Nt3"7!hc`ytMjojؐZҧlƊCW|e}`s%OtocK=\[@eS;~*z6LbX9m~_-ܵh>/GdjcG#9,c.V{pu@}"z-^3VGLoXj{r-xwa%A(n!fAg9$gȁsaT|uf;Sw"G\l}BLJr[}u% ko8L֛ n P0$?(5b%,\8 #x]"_9Ұ>KJ)k(ϝk0a Ƚ=hԍ/_ƪK@hJi !$Sm9#&]E6ct`-%u++󩚠NVE0AD`"ZXfr0˖$h8ц'z;U'UbұyFh.19PFia`$62EDz*?Fa a &6lTo*T~ɇS;%CVB%&{>_7?7-*pNBTV#T;oXFJ <3% [.W@O0㶻D]z؞,6 blBp.&1"*q}3Rw"Gܤ, kd 1V6l7‡c,K%0T7 0mR3N~O?CT"A?&LɘR`w)!2ւ`<:pVJ_pCuw<цG5/Rv75wG5k ͊H#͹f0ҼH},1VQʭZQZv~/G6e;_Hd1eU +.>|]b{|q)|9[\g_m/f噾gMY*Rӝ㤛MgHֽ]7 A(S\@!ڰ0xQîwkn|V~SGXvf`.Nz#-H[D'-8\SNse_yGvD׼Y!mXqUN,A{ T؛>Z56/Q28Vk!pP8`UA z=A>FYK23/Q28gQP|eti5'$jI[agI]IXْŕĕ-A;i[IeΖTq*,i%6%DΖz;WgKRymֈu|[cQLU{ev_ ZL! 5s XHZ¦B#V1M6W7'1pNQ7ލޒ.'^ju̥wӽi<~Xx}8sH#LAEkJjn~\_oθ>}9VD"$Ct oR~ewmQu/_%UXQzBTnY4\/+`q. 0#%4/y\PH .FF ! GabNH>c0_p*GB krB244 gcb1z 230 297 x%Ar EsR4 &BSZFqMɲÏ󴞴_}~3]vu DfO)b8ְKw?W ^t[mI6N_VA_(Ch.RV0y$6GE7Ҝpi[Hh1_ZԄ\c w4R3$lO_&B295 gcb1z 281 399 xuAn E6 TUW=I  dz2R7m?}=x/aNYqZ) 4oҽX{Z%ٷgTwg wprL9۰,hҭ16{ZZ3;~>I#``P%^jT0u0?VrrbrZ˹iJf F̥6,Pdޣ ƅkC|ce0p$lhƕ` 5L4H  yn+'NMǺ3h5+Epython-defaults-debian/.bzr/repository/obsolete_packs/bc227457473feb0ee354172ec6fa48fc.rix0000644000000000000000000000026413026203612025566 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x+,HIMLJw(M*+)K520434FfɅf)%ťɦ ZfEf9ɦ F&f   Ɩ\>#0python-defaults-debian/.bzr/repository/obsolete_packs/bc227457473feb0ee354172ec6fa48fc.six0000644000000000000000000000011013026203612025555 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=0 row_lengths= python-defaults-debian/.bzr/repository/obsolete_packs/bc227457473feb0ee354172ec6fa48fc.tix0000644000000000000000000000032113026203612025562 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=2 len=1 row_lengths=1 xM @a֞ ӅIH+4˷^9rbpcnBL @AA+\ ]6HB!-Qzu t92`C٫W%D%ILQr%-pc=python-defaults-debian/.bzr/repository/obsolete_packs/fa066d7fe77aad6bcf78155dcc40b833.cix0000644000000000000000000000022713025576170025722 0ustar B+Tree Graph Index 2 node_ref_lists=0 key_elements=1 len=1 row_lengths=1 x 0 @Lo"AHа=wwyLڲ zD*an:wpython-defaults-debian/.bzr/repository/obsolete_packs/fa066d7fe77aad6bcf78155dcc40b833.iix0000644000000000000000000000025713025576170025733 0ustar B+Tree Graph Index 2 node_ref_lists=1 key_elements=1 len=1 row_lengths=1 x}A P90c^Ť)(E}z.cXgI~>.e7Lp`xIJyecX$? m9NޑhҤ6  "python-defaults-debian/.bzr/repository/obsolete_packs/fa066d7fe77aad6bcf78155dcc40b833.pack0000644000000000000000000007100113025576171026054 0ustar Bazaar pack format 1 (introduced in 0.18) B14024 gcb1z 14006 50106 x}[Vރ+%EtdB6z*[jhb<I p)Yh~ۆ3ds@%{cty?\eiw/ݺ,K7yA׻rviQFu{g/trϓO,WIT8߬"v?~&0x|1fl`"긫Ŕbq,c.g">nv/)n0񀳏ZfOH<d qhu];![b3K>CWq۟Asok= G^&(ۄ3_Lj$׉hp./73D$^')H/-b5_;`U`I@uAczWdz 4Qv6ZB0Yl0?:*JZmW<"[<9 4*GV 6'2MRM$*%@59Sxeg(kȔwLNѤȴUI=mf1FxKffil/:&:<<^ӂ?{S)26Z cyT1q bhOJ Ȏ|]L_q"O3J` 8 B+vj.]ȗrA-YO (v4.onV5g3sw fOau6iumڛU4[VHqd;:7רp T$a&?'[q+qU[ϑLp1ڭyƼҽ|Go}>hѥ]tc#/󸸥x8dzg3Gr!+d)S3%ׯ zcPxQ+C yԺ>3mD9p1>+OT7 Ln4=E6Š)߀SD#H8,s:^:ۨ\Z=kc}9YT*chXIApLC&Q(N쯂_RuY=&^`q<_b*AD/%t #9vOOo*P#/a ؑPhЃ(hΕ'MyKg3`p`0 -`r1;B3JGbs4ɄfVGuepW*Ohz8َ'$iF:Ic4,An zƿ=>ۋN q~+SW#GH=4uBo4.bg7%NLDPaњޘ0 e:ԝ*R`ݝJ-wqQ7b? [@%:!ܺbܑ4n(Ve>oLAi&% ?\ud *bҏp`)kjk9Zx+H BC?neYhvai7kHQG@+imȍbISARb*෈9m(XCӶ.4n;D4jo^ KGdH<~Z$G/C$ yY4Eh,cj|Y0j%P*+ 83b ?Vԇ*d<8tJJ0+GYW8$$AMޙVⱎhŷW9ٓun9 `73Iy?#JZEV!KE`[`~̤kcTJW]i/|*:O8sj{<=T6W<^` Ѯ}DE a8'Ӏ"C4-ztylȹ1Zަ:;Rvpb'!Y(#"ѓce.Ҍ+qPZ rW.KYzd`0>+ `:ٜVHWE-ga&¯Ans4j<{,;E p(6O,ݱXZ: s2g۝."69▀ha5Gd/; vϱ&" )NFR%JU U%|Wuyn[ G gPgstvѵELK8[KzJw=kx{/@G %H4 &̈́E ?J4c$Qd:Ӑ?OW.K1tKo72 IKyC+c#Sh35l@ThC|:.J3=QJ 2$\K8^ ࢆNWoyldĤ1$?;?ߟA0ůDy#OsٰlOndhg %DD^j;1<|a4x?w |?aŅ>#lInɜVb.2 neQ2ٴ[Y&WzGcc-ąV E\>إO.?$aNz5kTpv8yH׮@8 1|bEzؔ1jZlh+؎Y5YYql½NHSۜeMibNXŸzsr(Mk¾yIƪ@;$/pܥ@9~0Yo@+zB75&kgI| `u* 'ܞv"'][*hM3 q$d 0湣_+G|ʯց%RewyA5*;ϥy`''1F!Z\ fV1Gnج P2b !LjՋh)o)^PEeD ,)Vᵏ`0iULFEė)#q.c֕~xR3jJ' )rK5IZ&2 2 Rz(갲0I!n6c*rp9TD HR5 idG:螑rA$H2V{1q.Mr.b45>C/!a~at%LC;[ 5,byz䨠\t lQEg@r,wȠ)R;jV<#ʭ8ι?MC'>v4Ra5H̘Yk0%!]Qdp+3Zq.- \s*pSbJmKA(#-K:>{E#gKN15; UPpr^K9-Ig5yK5AZZ.b&`jεUϬ믙JqjSS3`*a@C'B 6[B8zBS.]X4Nx F]yA~Jz/;qU X5Mo9 zE`i8wPHS\xqWE@6x2.7 *Jx4:T5R *`M[*KRUqΫ*r56ygj=hk??/SlrI{Mk}U3cd1 J4硿Kŧ0e5Q4.珟~+; /$|Q5 {e;y8y2Q>+?zJߒqB v6γU62JHu{K B(ToCqx &ߥ=[Cu)#r*RzGZRL,΄ZIU!❦Ú,~$GHI1^DH!EήqoE.t!a ߨ2]?aoH𫔽 IIX'*INZq,a*ۊY +6B/4ߖƺ)VՍaXmnU;xs=ov2ޥu1D.=R0&7nWkG}2VK=í].6D 8C3s R͠N%Cɢ|>A0 `q$3Q_ ,i&/悎+`rvpy,|yKNab>*iRH>efέ)D?ȚvfGS%d2g7DRA~i,}X UWΛOy0HYɊ.j>R|.x ٱ pUiSa[3ܬ䈵ՠeS~H+8s+\MiHͳuv)=Gkh ka]tMVUM4ABvYU8'IǴ58gXVMY遷eHnۙi.Rk6i9֝V5atcКTsaȚhL?a!t^K0v*rY!^3mB 66d*B1 r#>4Rq Plfu`2Uv,_M q.*$/&х ˚Hx`)_m7rb0`k }/tGv (_;OWrْ9Mj|9rR{߾BEjH43gj̕r'Znc@OPx+3Tq&.,b8 þI~3b)dJ04V89-҃Jf ]=H)w,v (SOyte!TJ8~Sim]5B E|?ݥN!C{tQ2dSEGy"i_^T$DK+Ց~Z X0dV!p0ղ+alnj^m \1@rW_1#*ͳxp&f~4l=U" ) PVhN\+ɒ NÒJ{K[,,Tm1ȝ!O5S gSƒ/]; Zn:;CD3!^Jm8Tm*׼?CEb pjBtvcLLĪƓ%?6YJv- 05L횎4~6R3{56KMo:QOZUtVa 𞽷Tڏޫ~$(v8uD57x4+Op>HdwhW1aK(ژUhAi?89tITQ$ۢuFh3 Ik>M 䉸.4@5z(VeaY][Ыug_m9nѲǘ J?"sV9e{[,, =RqZIT眂“1BMDx]U9bbQ}z7Ǩ bs G&::jQ0 ƪtyC˃sa ps9RH 1 ]ӈ!m4Ҍ~JӲs+rs^)?N`,iذ0/W.V>>]L^Kt P-N$KEVq>X+y;Md~Kn;>~ 5\BPރ`)WCAc ;MKT8΂VUjy6<<Պ(zU&Ҙ.GY=[B_覲).9*laDy]S] <7uf{ya>,bgqxᎸ[媦BGGqY% )3T> (_u ݯΏb*ԮVH RҬʖ]4f \B8-[j6Τ_Œ 9+`=*0t|j?-jVXV S6NWx F]!wI0T6C+m+n{Pox߲&BLƙeT^|R@9Ob.I3 R9V7>-rlV G~<8-49^bNRK QP) USqsPѸ:F0]RUUS uI~UɌ HV-póM PLh`n`bHDC)mgW; r²H)yjfM!KІm`&~F Hwm 9shB?t^*;t0Xụ@Yv "P)t ud>|mm(`>znk\[S-Gl#uG9Bvr`y|Vw}>9?iQ L=*LB*)]4J"Ɉ.[Xq]@h!cP:*ƒy GrS#_3 lZ0}Cd\ty, >Bݣ5ARuD'* P?.E%B|tt6$hbMB MwMaEɲ4)^gɿ?l* Sy@k>8UV&M*s8bp_;2.P)xPqY[AGkU~`9JDf$sSqը dh{ BF4y %PZ;eP.=n)3A;4Sk7L0y,Q>ڸ[щRh-PE=a3ob>.P4{dr5!(o"A>*%鞭=yn[,d4X@9a ϴ<3B,! ]naq s|RۛYEܕn|NgEcRL՛x6L"hI[VVH" Aq+~c;RLW2hMϳ-p[%n̛I&3X@Hz ZR tց1CNKǷ,n=UU:".k)q6m !.+X΁JiXG՜69Z<Åv2(Dç$ؖGϙ'έB;?:WxrB[A(Ak'P'*Y=Kvpgc4L2fVo*3 goU i΀i!BM@XP$:@z:֞ a>|Oa$>>9zx˗"SSV'1%B(7:L&tgfdFlͦZ8!O$O{N:x!Jv5参SfogٷAmmRIE̵BIa]C/mb8A 1t;;՚djFn%j[Yb1T`Sy<[5t0B2060 gcb1z 2044 9395 xXnܶS@탕6kMp&6sMI\]J!)oELm߫3V@3G{~)K9)v&5-% y=](.79NP( 15'+jLʩ&? 9F~<*yRIc\F7Lz dbB.4[ yEڑS閜_1l S)Ss&,= f3vfO49 S>z F5}ToG N{2LLK_T^? ye @Rctnmz"]5TҠuÔ2Q6 WS4׭bNݦ $LƇN\0y4Xk*`TQ T0V8B-;ӕ`x3*s!ϩ+wy5_qͫ?;V՗%xB$qz3lzy?|-x(< 9^)F7 Q15̇|o*?Ub'O@?9޲BЈu0['q5;,\4G̮`+nyVHe)H$YuxJ (ԓkFR`L a!`%yR1䨂vN;ȅ?!&v@d#Q/~3,׸ Tk-7)h"$2 #93[6KdɄ6,#4Fi òH>1"<RIO' cy'd jM5|R 9J`#׀`buV<<8mk][OK(Y7o|'3nj!;a2{GU؉157P:3<l x΁Qy*:c/}zpg "#47@ANSb4m 6..6Zq^)wǵ6V%)y Zp ֿZ2j&sDkY ZٽHhAr@[s FBEJN}o fW4Nʶ|7l(r0[ˋzM/** YD;LHۄeat3-E?{A&p{8Gz[:=^wpHگ-b 8i-d'ǹ؂xʩ;+mnóOf\y4=o=[>ܷ'`OZwI WVS%(s_f<9f]:LD,6s+?[:Jd.!ݑ݄`ݝaw"Bq#%' <&)\" q='׼`ުO{Cp1jy5>x^_u\*  C]}@ HPa /ǰ9(I Ǭ7xe lP> [s_,pB23 gcb1z 12 4 xKcB2081 gcb1z 2065 9356 xX_o6קÀ%%7 nFZ 4[I=DK)Q#ް;ukwYV4y<~w#_RElBIelAKaw"e^OxKzBdTxssLMȜrBjFNcg1 9ޏ4fJOU$!schNN5- (Q%Wzi#]#*&?Q銜˒؟1l S)S39 㯟!x =FKkM*J WVq[bqQ 6V՞yF9xF=9UI?F3IǨT?JDRM w* ڴǀj m}+QGKrИS(x<>^*F Q15+I*G z4bC[+s2$eA+YL͓!nȭsڡG.1iWhCGA<% "aZcDIF 1TəYI$`]hKFDa1NCV% )twrM |?)?bѺ,H8HN6sԤI7 *ŚܞY[V'3m_޴i˟< NJY7g Nf'6: ;88N aohV@UX-cHGvv!EߪҴ9 6d;8 GeX>z]L L {2u瑴_6W aZC9ɸG{. 4~pxnmH5z9vZuJCobs|9{1RV ׍u PCAU[BHχ;Du[}b#Psͪ5#(/tZJ8D5_۷"NNeuѬ2:(z,x5آ3VbGBAb8Wc@(V_T&WuE)^) &!R]hes+\ĩ. Yʸy(NIF\`@ӌXiBFCDui٭r.}0-6 >ȴ>dmnf.YҼÛiHm1ӻXt֭^ڸ5uoNAbPv,JwKW M{aD}p{%8>3u0ǎ6O>emB"a<{}[W|ְ],a 'xFvn&p#j!z9u%㎇łGȸ+b?}y"upêuk# xk-f<ǖՠ%ݛBdWԼ<$+r]8\sWuUd 7,:%s#ں駘9٪K^\ןВhTnzZW9mOη|M[IOCRCqUNNnXU|ޡNg!z]Njt (7︦m3d)繻߂׎݉\is!MB'Bv=;׳C8}"KShIu2zS+ T۬MwDsQ0(TMA^ TTǖn懶`"E)%2⌮IȀ|BO88@AWKC+J.Dh84˞p?ƒCr_ l2w+nn׽Qx1jy5x^.:k݅O݆~ /H J< aB6J/^}z|2ɞJU>0]_RA1K8_CiB10340 gcb1z 10322 48676 x}I#;eJ/y<*K$wݻ\`L<ڋVNwR_` SOZlL{#8 Ai~,'߿-A!% qSVu|45n1ld::ôߣwg}_3 4R9h47T2<%a^!tU]1JEZ02"(^ ZZ6l^?"X:a("lbXkp Y@cL!TrhInarYw}>YfG^>8ʫI,uQ_\1JTŤc/٪AFG@{sZAQJM\ 0oLƚHL[b8+9:Kܲ΋5}+}/{tLDִﺭLV H?UBnMEQݞH]j^N/[AwAk^9J 'ص橕Q` 1[kVÅ袴*9FQ()"B,@bkęjO ;xŞ,hvCYwIUk>mۈ6Jc$*"wz7A´Lqq1Ⱥ8a0Ȭ@/ʃKrGƆ~!oAfs<&"x&Ć2ߩ'Ԏzd^ɗeA~HRBt;|6[,ByL JNN0ǩs|'G䥈Brcy/`_s4f."*$^p )}/_}.62/P(/o-J bSXaK "PK"bdn . sRG C,l,FHp5,Ң.!yEdvQrGR.ha9j/CJiQW4z btB')i'+ڈ9U6! +gi }ڃUNah3ρ~*'wŦ 3 8!ВKvDl LpA[M r?YșKcHe#!h3iY{|2y샯F9~d1bOMgmLҸO;y ș_UP$˸,̻]@dT&;fgBaQ(29Y>܃/G90-d 8tR - C$x,[x9/Ӄ}, B=(Rk iiEr i-a%ׁw=:R!¶`H}c1"B!mO y{|4"?YFYf$HŘF1#ŨR#; H\[f V빀HjtJ45HN8 | SO%jxGi9ՂE GTʕ/W!\!./k뭇9Ŧb)u)30D"Źd=' 8m~Ǜ=tAx"5N9?38!F`>YT0 ;܌YϚq`4V#9)ySGm}!R`sS9wŌbw]0%Hhts`# ;܌+hs5^663uXA+X$CaeØ67 ڼHZk j3La : R,`kns nJ&a%S-%ch Q$$ ӌjR_׮Q\$TxjY1 Ü#yBG<!%Y9Z', B5$:KN4NzA,LJ VJ5˚8WaS׹B6,J:#K]^paEy{^>D'63fiVdykĢ=.ToVb6qnSVR*="Mm3Ll(7UQ{W+׭jW K2 ky;wNS?_,XK`mvww.b69F'YEP^wƓs]){Hck=U.S7vZd`?vZXŜѬ:@) OY4b!f鐃7#^ ZqEdgQG}/N?UbouAlE(Sˮ(ʬ0g,uBH)4i{kuP`F0p&`;A% q6nX%rUJj=& TŤCbJm#JGJRSKU@DlC(~޷fh%;,9-98_$,ƇͷQRj{\Дr(2 \ [/L#J؎oCpVG-#GFϏ~Aܻ*xzk^9Easwtr; Fvj0Fb3б,RVR׹>~G3[f!0\@#lZorFs,$ Vוz4,iy9Φ17<ԯpkcg! "( $oR"G1 ΠL vV'ѯm-J&CoۊVeN|› LeH.@%l4+z=k1r"vr'1:]7o`_ f_d8@) XR(:H*k OHSWwnZƘA* Q4پ% NLGrGw㲑3bdTz 2e+g$QdBh}XD ZcAd z0@35ʴSwSNb]Qw<ιrl&DDK\o:E&60-E`Ѩ2N]\xeAճ[ת A H&ﭹB [koQdS.]5ą(Ry)$@cyϹ>>2+QXI 3w8k>P~& hCЇruvoph0e;ȨT:4 8lc&`9Fypn{}m m@(̀_غ`DEPXDT`F;_\О',hIыZ$UFpC^19!&D4CYsȇ%@O;j[>֜XXsO<֌}k2 q͛ݷNp ֬ܓ(5s<6֬3/$XO,֬yk' a}!Ú25p2l̼(f*ڬI \8,@ 8"FgbbiHۄ H:Dʧ\ 2 fKW9DQ(̋Fws|r+|@xNPsJICJYkC`xD͍VX SF#i n(fbҙpmrkʼ!FJ8]dH 1BF`¾K /D lu^S%N)VC(: 70TwyÎ;lȬU*P~kqu%ebN$itKsܝ,TDI*$ EdxDDM:hCa;u'*a[}pC:a#_4KoE skCO;Zwć;Ӗҏ'ǼZRbe}tA0'LJIթw0͋gb,`7rp.d~en#!( |$4Hyb{nRT@%V[1L Uqy0K/pFcR~G0"q}-4&2S۲ 2 h o H$D^"78(U4ʀkrJgEC`g8(B"z6_ׅ opZ#WZAʭݿmf65s[kjD~Wx~WUb*:VQ|i۱.\oGV-`)LBZ2āӹ({D6J{xBUmvl=LVbn"8IC=6@XXn5rM;*J& o%A'R0EK SLh29y\`joS r!Zb¨ '}p i kaf!yi\*>}0nx#v5uّ(-!!fvR ^b =P!S\[t5aZ`@CLL\eEDښn5gmCoN|Kl cx7;`[ӭZG0vBAJpcN@4<괳2HjyM#(9LMH#͎ot7L@H +`<>rc#) ypd|"e6c@adFTR# RQ=4Jz kNvZ׺i xX1[v,F 7r#8"a\S67zl^,e:0N%5[˖*eA79}5'Rv;0?i1 ,Gv96UhC"`p%׍Tt!J`xk`sOfE2X(Exǒ!6} h5̓Q}ÚAƚ)K8zt~! @$( 4r0),ve\觘„[/|!L7]EwF^Z兂aK`@sMR?VI,*;Q#Tz4Qց#J49 6}bI!nB(=H[Sul'>{~)L h;wn8L#c q2gI9aN5 X8cf|؄Haۘ p 6 ǭWN7=Z^~Myr?L`g& q>+´3F>xS [E$\w򨯔zmlGOK'xOa1/X͛TIKs<v ϭDQZkWtY, BdanC@c骞J[.AY^J_Ԋ_ (D- m@NtSE!bRCSe4"xjo{}@IVJzS"/}s\stz`HOxMFK`BN)FzCbJ# 2z_MXƦLtZ5A9p ֠ .=Z2M `R#1%*U?YzaDHR PKgSAH!{K昳͒i4V+'2~6=8 NH@e>T8/FE VZp ld팎ϧEjAy)sI&-#:1}5AQY`tZrԼ{@AW)gˎGn] _P@dE܏1lHDmN.v Z =%ҀQHI)2 :| oj%ˏ~~Əlnglz"#SS)UV'+4;i~9ki *ѹ vͤYAjL%ҊHCHXZ{ވJs}u?jMRpZi|U#8DMFWI,%Uѯ9 b0?}Y9f39 )!QUB,\j})SO5TW+(8sat1nP(,kJb=n~lʌP!f-8fǎqɬnS#ʸ7djwâuȺA/nNF! n),[tJq 4ha;`iM6S1@_ S{FHHN ?LA8Fd0J+ sECsǫ> j~XNb'*j-Z^f? J! -lD$}fܨHN@FTѨX7l%~ ѷqmyFpa$p\ܟ&tK%BZhiQkAQVu >F^?e)f)Zl;V~A,R()T ID}u .PF;xVh_/%j ;'3)G̀O=pun/*$k~z.1c^)8šQ#m8bteɻL aA  ~'|a h>pLssA:MF`G#HJB>5p+x(W.,Oe=nR**hvy|Ŏ-M-.YoaT VFC7v_B96y:]t#Bf0Bq+jq~-d9YyzJo2 sqۍξϔQ*6ާ"O\:!J_&v3f1EoBoѼ9;`".!okOCVPݯJ{#GӥcM\brҔ8CHld> `Tp5wT#¨)/Ll؊TF\%?svK(oJ49M|n$8nJ[TJG160w2(n;`4Cy6gJ(~S\H`mwd$=Yl 16]LcDTt&x#g>D&IY@7,(7 s@blx/n DXf*Jza n TaA`ڤf#ga~@EDyZM TK17xbpRp0 Si@(hV ̖qk'x-J=z4Ĭ<]C@@#o*ڸcX-qqơ LHl@[JO͢\2)U4g`H_y4_T!XS .ab-ńJ4sg`/ Ef3)#}_ Tlg7\kXKT=Ĺ+?lg^I(}Xn8MĨD9M=XU.R BEhEN^.D!aJ D P5̒U`VYpCͽ3jvkgz *CBLJCyyBbם@H<` 8ap@d!o56zzΝaY;y`  ,9iQ2;IiƟ'Hs"e7p_ }4S;RxC:^mL=_w8=c:šAYsW\}|?L} S\sƷ Ͼ^3}ϚӛܳTR1j;I7=Ξ:{xof=o-;@PRaKCa!`̣]??|{׼(9R~I52!\H%"]oGZXNNZdqV],H܏Ryk>C|?08X1b7}jl^epfBࠐqȃA0 {9 #}^dg^epf-T΢n"jf'O8^ILՒΒ%!lqgi=++?;[wӶL-TY^JlggK_qgE,1L-1bŝvvbfdDz vs@ֳO PCC>71ej"2@MZ?Gb$ x3m&KݯnNbʙn%]Nͷӱ?N'@4K7S {xFai=X'22*qJ)9‘Fw>rf>WTjޜq)K|5s05D *,HޤB!ۢ@_,JW ܲhJ_JW 1]`FJi,_򀹠 ]"VB(&Ŝ4}a 6UJDž!6,H|B244 gcb1z 230 297 x%Kn0D,9\maX n 31e-^ի1S\N^ژ0/cm%bMWS]cN Bk=kVʥ`V'UHD4030On=l͓@t!Q'$n)Hzn/xSIJ9Ђ96偆Mǽ'w[2tXw/)F2ؚp1nk+kwI<-4xG'[P"Cx+k.r {ԗg.jOq/C6|3¹3^35c(|[%iplcWeU#|;'G#,TYF  ݖ<n"V;J 0Bfh.LNM=zƔXVXjD_TE^Q*Gg䉥i@ T^}V/G*f~do(&r@(ĈZ&-|RYܴ=!(6lf|Մpython-defaults-debian/.bzr/repository/packs/0000755000000000000000000000000013263113065016505 5ustar python-defaults-debian/.bzr/repository/packs/04e4bae51d9d827d5907b4655509fa79.pack0000644000000000000000000007177413212461070023621 0ustar Bazaar pack format 1 (introduced in 0.18) B14343 gcb1z 14325 51269 x}IW; JRR9JllI~A%]@&^Ud/ĿgC&DⅽX|sݕ,ET¹{Þλo<{t|ݗxTO>qϝ2:UKg'Y;'P摳r\Nw>M<:\%Q|Ίbd$J{Y<ϓ㎜]oxdN#纟|rtմJʻt\TffsG)6΋$Kfo&XYfβ982JҢtq]"׸QUܹK=c9n_85~HׁcEu<Ǘ3I\UE~fѺ|=q> MF^a8QIٝ3uI#/m;uTv?p>o4p$~ۑYT:>|֑is=9)4m`h'W0~}V]'+8!؁lvMkͳ5fW^KfYvsy}6 /ayy٣y/t4wo}Ay^ 'ޠ}d[H~ŹalWsY\w-axYV7IYư[ *(̀ro%yw),Y$3gQs 9o+`;^ǛӟvplA zFS84I(~i;K$"U# W~&dPEϐXqTVy"Yg0Bq<0Hg)|.+i8GQ 4) #MfTXFZO, [NJi[vl[6Z/t"%q( XԧzRp -BH}; 3mFuBPUC71C3K2 O'kX%-&N+ڢJ*wx+8^0q`Y[Lm4i$'nuZn?rQ߃8(2 !#M#V;]wвI՘U}cyxDqWke,:3sˏ[x* AOщ}U,E!|{/oْ`Y^H0d^Faseku=u7Lgz/38(HM[(MR#5_uϋxJ(ZM$sRKF-k<)bX=eo]D0|ͮG2қw%J(̄bkv8Gm?+e 3 S:T, '2MRE䲲&Gu ?!/kȔ?x@}r>Ghv~ O#nY <\a({.x-x]g pմyNjo1w6U?؇ 0PVCo @HqkĚ \0D8\.]x_d;Z%0Lj`1ٖ^o?KCN-V/9!H9)L D|HIruw%XQ.c0PSL yvc{a84]>[VIɌFk U07ֵцKK:PڒD=z۝1B̐f`Hˁs(' #-8.tL?K}fCTF*54J8l!>־XqXzsu4CQ fdH!BW V8}VvԿ?Z Zlв>[xk< `*y m$9Qiw.}'N۟a>.ޞR5zSlIRڮB6}~gɎD#*=O~[2 $ȁfsd -Ej W/%e h<<##4!(*\(p`/Ls7&bA{ o:uv'ڦa_ {ix=y%Rd Cyu9p|k{`txD#Xwu۱XRwY{g4GHH1ĨX%mvrm=,,uE}Wf6OI[LYUt A'`z'o% RߟL%ْE? c^bHmU]`" ,D#Xjk`*'M} 6@-Tv<}*V1h)K=RR1@fEQMab 䜔p讣|%H4tZ29ؑM (%{3g.a|C&dzovۛsn uI./"d0A+1]d\|y?Z]+$AAXnʪE w.z+-}ַи,erKQB6؀Y˓[Thv#T0T(Y6Bc1R\!-[Ɩg& :SP`z&_|d僺Iih߫eEB&\Px|"Эs (xۯׯ{S'No{m'x:RV Pj6Q RG ߫SAD -^16p]_;^N\LҔґ`}Lΰ:*)j iTٴX)3܎*8}Ahf;WBʹ[w cR 5h@Ñ;RMA+~iN`L)G@)$zR~= *t&yQƫ X3!zɖ),IqA<{dP6A":qtP૏ih78n%/A 2?g'ڹc!QKL߀1"R zr0t̛Ys+qnv.ͺ{l.VÇ1b̸#7I 06k!?%;W%l XmCZa`m0OA`J]a睦{d*2Cv?![H[xZGN1(jϼR:k{>(vF ćLDٽۍFSC$i d ?^I0X"HSfc·!  &4I9==StN=rA~^T9!$ ) Y,zV*NLQiLfYT48ݔ7ECیsvfe7|#H^ +5dPS#KT^@գO|F@e + F0IGmF,@VMoQ3F#|P"11hFLAȠߓ0׍' +{c*CòY-,%Hp Pˋ$C0>+heE s$1y0hl9%`. 'PO0<_:Aq+~!=fHwpoG_ؠEgE-8q7|칀iXY?#>?pY;nOR;ê/F2ba->d ap'ր;RGp'Z~wthdD Dh b~?d9IΘ0膭13;NæCZ5GtBC? Ff:J? th#C>‡!7{F:$B[sa͓Vs(SgXpos:P"! g!y*N LA&2gQt{;$Ek'J'QAU2 z!1AH⻯Di#5́mlQ/ F[mࣘJ}eQqAC7K.(#G&_ZDssNv@ZO}J(Bۘ}4l=+Q6>ۮdFq1hgqSmoA w8l<^(7\vB8VG2d "No2F=tլ9P @ئRN跋tC/b^蛔R .k&(.}|:_b#fPs | oQ+yyP*Ԯt>G WNz*'8y B!8q(Q&sAz:`'ķѕF]zz,Cg/zGF^."8fω ɂAT"DO "h_Wj3Ďg2@9Ȃ[_O.Ԯv+&G1e\R;lN;mF#lD4mNfWwU()0 &O< X!cMj s"gV؝.JmDs-8ʀGd/; v'&" SNb]T|wRM6ac$ p lMIS/{еeJK%QzUͤF{̚ %hJ B4n8t5 6K*$_LNFR υy>G,&.{ODŽIfNQ=H<36%}’# -`HNE)8{AT nhtG/IࢁRS]v?՟S!9pBK~-b_;hDֲ8v`(7,Do;] >ھC(|5Ey?iY<<@V*Vq#F1"S@lppk4ryQ\jBԁ%XUg&x \PNdOHC*rPBʩŮ6δ/)Vivh(ӡwBg jN@=beʹ)!JQ k\!>4@; Eު_D2hJ_L=Ptڱ9*G^ҡ"*ӚHl^w`u KEݥD9>0]o@zA(ijfMހPwz!T]{N=?/DA8ufɷVψ:-$n#?T$A4R6uw 켠T '/ya 1f!Y\KfV18{ʇN@"8!m 9lŰRE@!<6%K%n [k`ҮԅJq/GL㆛0:/8&6~FQHbRSX*/ U*ü q띷PZ#6Y[@ZG$i\9;ʦ,ӃN#p Ħa<=M!"!2r>T\1WpPYbSieNGPc$@1`w5DD Vxˮ{^}ݷ ,x$nËC<|\(01hwvd> id^"JIg$0pnvetSxf$?wWqeEnj@'Ѻ, +ʇz!3PA t'$'!LpJZ^Cj@ZfՌ;B>dGܜ93C[T2)8a;dz}^{Ld""ӣ U S iFVsH'֔^z˛eR!bf&10.+1Ic-bD@cG&*>l^lW:JxNj0{u 7Rr+m`qKPUFঊx@d鳧Ϯ>}ьT$Nj& *Uj4%५-?(dtkdQBM{QcnPmROQgH{ncY|_E;K [r o- ?@ȩM|h )A٣oF}ㅔK*!{rVvd*vuz!6_?W{Fx4 < -rf3fk^"akIGWI/LPώ>j&Ϯ03kQt7WVF&ݩ+Ηϣ51lu=E6 $S"M ]/ B#y>(4&= 'Hf:B7-FTD[ ?^dOº'>'M?SXqla:ʜⶣ_h7-{MlӬ;ǰv$CêvesZnv2ޥM5]uI84wtE\Ƽ9+:xpǑŎj!řf`ng(Y?c`O H[14vT׫[I2mls+q0;=||[/SkI38NgG['u^> 6UJ=/ӻ> ʔѓo}'! ,")++0Y eVXn-RoEr lB0JU:T8 +9m-o$TҎ3_)!a[VH1 ILQR R +tndr=_M*\WHQVM 5jt|MIZ)}jSlM韂kft,d{wd>d?.OT{S%\^ /L-hQ{Xֹ1]ѻ'|W7`ГzA0 AD)KJ}Yh0M1Gk,!z]r秹x:H_*[9>vy/U@m tX]%=`:_,ѩmbs*ںkjnZe-8a2i 7Kkݑ~^ E1RdV#Aa- G7GǮDlx > ; 'r?*s43c{b͝w|ٷh#x%ek*&70Jp u[ x^g uyKCv$4ۻqy+Z^ECG#Wh(BIeN6 C64衲)n9U¨?tMw9duIfd{y>p9Bl=AMRTYx7iMsC6`tQz]06Zì{8LGS P*<6F+GUu@,"=Oٳ9] >dWo$"6uFyG[uf/~l 0S㚐/_MaK_a]?Lj3>.ۤ?Zy̢mR=nW*DJ9Ss;0[e84[Vl"cs@+q3ͳ"RHLrBb1BZw,'*Fc@Z]ٵيv?|{ msz;BP25p[fBhgQ~~pّe\rP%3> (_*|_]RK]4`v 4#LpKd.lyEOGzz7 TT'rayד]N̷ ?^Owv7<褾8.)jo 9]@ f}tmFq"ބJ(P8Z«.P)zXrLy) :bhUL8P]r^"b)b̥Qp*3x2Ew>ԤYD7ҀUT9hid^= TuVI~]y+;]?2:b&4+H-o? h*] |k#XPIU~n36sr"Rֈ<`73:ÿ%D܀^\h60{y~pdA L dV[xwݠ#}r&hwUl|v ub>"iSz x̅m+l&?mgnp2o}g{]P ?ly !߈yn=="]ognf!i7CcER3&]E:M+NO:T _?bl 6PyAk>K8uQyJ4<58%0q{~"tydq2!Pпޥ[cdDl=꪿B#"UsXJqר!h{ B(.uh A:T@Skc GSmPea tGo*X2݊"Hrcqfb"P)w{p{Ohb1.]P/4{rġ!#"|setKDgk_~|>qBzįzN7/Ā޾)z~Z7s0PzmhgBdbH8;4?@c (Bob\L)lҳo1 _w5t %!3ꁰÎ Tر]jiEcE n3F+ߥ 0oPJN9 ]mr9LE $c-M|ԩ\.վ̟O`JM+N>b(t\4W|%&U]\$`KTؼBnEW:hɱj]SRQHDĊD̬!b_K+7O<T9ϛ]ZXqd)$6L6#7:˟oATDTӍU2fޫy7seRڏIUrPRFiKj1ljuxeyɓE> #1Y ZWVn:a[^n ukfc_@ز5㋔jizb1ڂ(yxuc̮bqy9l71L> йhpSN+]lоJT,4@Qp‚AyfB?awxjON) 'r-ZTyC~YҸ$MKlԑ ҄NAlcUaǂ׊[$hvȶ^Ĵ»Hc k4[n > q>8|{ì#U?J711 RB՛xs[(GVVB4ʝ1ШQJ>ΤE˾bœeih^&bv,=Qn17D2 R'!yFW`qTp HqUCeRӠVz4fM#'bXy4f3'ЮMեsrb9]_7g;4ӄCۀ.H'9Ur3 0ab } ȋ[}ޕK)ekz]TC,Ec4ݙF_1ƿ9lSiED/Zs P(8m{s0( N4k⌒@QA  qѰn {}ٶ =M0tR;;jFbn[E 5w׺wH<m ЛtTtB2082 gcb1z 2066 9411 xX[oܶ~ׯ.VmpnФ6Y#y$]ITIʛm>3C꾲vnH\pșf#W]\RE|άe|hGFȼ.JdA,Lr%3f-S9r#y(XH<]\\EYUr8M!dlBLɭ8-KW^0v4iH޶/J/x8i=xqIe̞~vfσ )f=T)gӰrKSo)Ɵ bRnYj;ܞdLd4 cbA'|̂'K%µ1b:nۜ\0DjYn\,i7[QH]:I_*5gaӕHKm5h- T]-q;Tny1,OJ4*sڱV̺bS>3Giv"5<״ Ja0kH WH _IAV ub,i3`1aNcV,Kks ~ kѮ>-.XW3xlCCo(*B viSo@T~{$XbϺy0; q}!&я*ĘeVΌS'8njk|d(ig<;1Ok`֓q0GYGeAii'eX)}Grr]z$-vMBq&\k 2 K`5v)NCIֆL J+aZj5k+tϖK+aЍ!XGZF0éӐ;EYeBYyf&p]K:%NA1HЫ`x]O7ݩ,r[TEX>{Äg;Zzl8͚HbT#`f *egdio˯9$mn-i n"j<2nf-+ +~ hZ+ZL4C8~:J~EjzqYCBh~[>ķ.xx5FN-F=]wjƂd_:e0`N8oҭǛ|wB}Zap"#o> 4bM2jK< QӭdH{]썿^xö9;-ps=iJ ׆ާ:ކK8.W+Gwh+8r FVk֖m}^^/_^3>Zڽyh,X[ F4x(vTUU(_".YIzum`鹔4{ݵU1_^ _Ӵ]RCʸʳ,̬#RhJ3qM5HT$VN} _8Mҙt&?X`wկע|c!["ʹf"BrM噆LNɂjsPb-.BsyBF/䉠!jJ5kdJ3rpb]MxH_Ȓ -Fب5'9δk*JE7QOBwrp4,,ə$G/_? ?#Dd t M)Ͷ8s_]hX^oqCBwi*3ܜt.E0r5B*Cނ_z'HYN#Ju>7gV@:M3>T8_G=Eٵ;>2ۧ%" x”,i6֔Pz%kW!a\,`wqI"6,R&)xJr|3*ҝ;7?\r˨ d?$~X. J7׀X* |+UƒeZ1{v켖AC n $+&O@ԝ;W,OhZbwFf=K)xؒ`)I}@osFE\U=i.3c?@V LR(w<݄ݱG A+YHECJܐ;c,q[Ũ#; x$ "f ABKpDhEĊDBWB:$cz#䚀u) ,U8QB[aZ'8'$ lu*|4^}y !Pf\2䇂FRj'",!^(@"1[mjL?IקDSf %*__sϦQC!Um]y6s~c@jUV/iޚ5 u Zmz`T؊u#DbXD{ӻBqIEѴ:2Z/(|,zu_7o){i$i$u5ujbSbo 5/EuW]G6 vn#%qvn,42vݤ+s(~׉ (;H̽wH?}H-HTqZ9&GSۼc Ѡ@5yD3\8(' [m?=T-S2$!$7kAK0>ojyVoHyX(TL׫ݕuy|1u;mQ1Z^_fR^CYi\_嬦89&m_DWǷ_f%:rȗ-^uTyz^ mӮov̶M%L<8YIYj`epޱKae˽p/LT?Ù7O>G#k=VmÏ_"0,~@U-n=U /5MBZ$ ciIyD BdB-0QD(.ZPDP@Tw$2 BoY\>?fyͽJ@g0>{4* :F,aP6% G_-$aq}ŪYV\09PvjG%T_-PPB10499 gcb1z 10481 49152 x}Ɏ39fa}S5P=.̭N ڷg`("\.T 7:?ii47̓oT4!H5L|-A!%jd6hNgkb,,ֈ3՞wf"=#Y*ˇ *| v۬OmrITD$pA@q#4n45T5i  VbJّuqFaYf'^>yݏ p7 Bxg$:gyLD 8-!n<{&%JSOÁK'Tc> RHxeDӗVW9``Z3X w8jї>g(][czꩉ,o0Z%1p2|AfJsE#wBτ!6.dmɂEZ}32/P(.JV",G%vH)G,qaWzLFnRZ֩Gl@gLjBv?\H"pc5;NV3ݟlC4E:RcItMոY¼=v#llHZB#C% VHsI\\ZN N3j`6s'YgX@lBaÜ,>m9O~~$ cp B-h'805_sM=A={x)ៃ!fvVrAr#6F`Y$C lGGp(<9h9/Ӄ}𕖳h#)햛xIwݎzީBrWZ cחy+6?4cYX03΄@)NQ0dr'2}ȹ_j90-d 8tR - C$x,[x9/Ӄ}, B=(Rg iiE0&dy_>N! BEY;k1!ԣ#25AtON6#S~S9g͐"o#~UrXtˏs(Iv?uaw~l]qL ۂ2ݏAS^4qcC)Χ5Ldjƃ/BTPJQ¼'g!Y zuYͭƙa>6+Pr8s[ҝ!}*sY6 8s)3CřUAC@)4ǘr-79JzF"Nti~ke i(U"]6<5NdE fr+ₓc̓IC`y;S*Wz;\)Rpem749,RYJ$)%09airLho^Ʃ>?IJyq:ҎSbDX%NӰO{ Dǵ͸VwYiDuz`%S-%w~)D$L3mJiO׮Q\$Txj߫!!.:ZDT*a-aFO:o&b ՠlٺnlۅ ׹Bo/oQFaB8unkУ :sR/\XQby'w}Ԉma{ Q~N9gI$;vǺexo E#6lW5;EXY)Ub"@S,$,rb$ӕ}[뀂 l/]ʼn^%&LiLڃf+2_D%,]vMF1Pf 9}d)CBJB֦Hjq`MwJvmU w1Qu-&V:la V:Rv^(  IH6G}[h&)kVΒݒ#aEh|| xiw+խ MQ.GMB+c Bo4(żza|:giqԒ1rd71({w^IaQvtN;o-Z6Xuct0zd L%##-{|?%Tnx|ɌgX)zd<,tl0D8­ԭTuO?ϭq 4 h$Bўm\Nh5}5M_bu]G3/~lq~}[cXu[> ylEh:&J&jr t.(T1E匏e#gŴɂN"dʓW΂IȄЈZD ZcAd z0@35ʴS_$SNb]Qw<ιrl&DDK\o:E FdC#d+Qeʝ(.oguP*@(?[se()b\l Q,RH{ۅ~s;}|eVvBgJpր}WM0$`rт72e;ȨT:4 8lc&`9Fypnz}m m@(̀غ`DEPXDT`F;_\О',hIًZ$UFpC^19!&Dhu9C@}'h}krAY'Ik޾5oB5dVy6 Ěx{fƚuCsDkIŚ4ob!/$zXOfNQXŌ_URw 龁Ԛ 01D'QWQZL, isAI@U~#Q+[l1 yh3 .|m1#?FV|'p9AI*5z0q Yo!l6ViKTiǓJ7 fG%E)"LtgJc(=3kQspE|T8%yQ0k|N0Qt}VipJ F ,84)ǔ2A&7Eo5|Y:aG0E CQ8tH\zz.Eh"hsL!b"Xm> 9Y#|T!^J&HU$V+kOٸ͋gJJ΅L,ft$Ea)c 8&j! 0 "X W 7L~-RBo &<7XFK.T @+0 5A%o@tSa@5Ac &qN FH$=]1}]f{^W5rErڬ~vl6oSs0RFˎ 皅e7JLEr??+*zZ7Av 3Ǫm $Ha Mr엁o'Υq/'z_<ߐVڳlbnfauIr+kM,T44Vx ,1cR.Uh[۬ݷpR`@t„SD;&ƧrN0F1Dh(\,Fh02@@ ӞB*|\*>}0nx#v5uّ(-!b3;TOEc Pc!ȽFzܡBjDX>Pꐧ,S>&H{ &OJ͉)p >w5ݪux  Vׄ+` +:Avsu ZU$uNMM`ϦvVБf (.}+(²OAO\HJ}\?oV,}{sFfH5' }Cp_k^M` &ݡ-HXB\ AYR`CXS7X&exl'm̓|UxxNϫ ؿx^~MyRz ]<`g& qô3U>xS [E$\w?(5rY?,=͆]F.GXc5o"pS%) `/%R Oq+<E!Z}A7ژŢ!Q, ۭtH4F&<8Hњ 'N/;5ol@D!]eQyXDŔfA^H^9{tz`HOxMF[`BN9FzCb j &lz&,^cǦLύ ; J΁sl3%D8]-5XZ>I@ yZ~"G r3jܺ8Ȥ2Ek-0V5`n7sxpd;sՊ9e;߬aB4!>FPalPbm+AOy4^ERoOspƖC1h=tKk[GH|k^a)a/䃢T'qk13P0 \adM߶JdJxsFtţ˥ރ3 n_+%,vT).XBH0$ ը_ӗvK&\^8 #P$7TA) -+;*R)oAaN>a׬dЗl;jmv-Nxr9|}4] xbMLaԮ5,j4|Ԃ&3SM"0[Ft5AQYs^w(UزQ$ۇ1qB0| Vۉڜ /\V D+ ׵Az9KN5i)p2Y^f(tзJ,?6٪DFG7LɔUV'+4:insluaεoX:ب=ak(;  ~-5Kd#Ǯ/g^I U2mϷjD'I`xdU,+KIzyfF~‚X4L92B!OVj̵VP_%\= ֟W Jd*ז|k Z>}V3TsP`E i*Ii ULjl%~y ѷF,`-ê1H.9S?M:>Kq,0]G6XFHܶK5clx⺝mvў0 xO8Eqj *kH%Gr`J3ϊ < S-z`&%Ȕ5>>z?Ed8!@` {qhH-B]Ѱ  >0 ~'|at}>`t 0\ka!,‚$G06|zE_e<|f;5 UQu0^NQ_lwg:_4܂O1J*kFi 4_2~m'%N&p>݈P(/9)@`kʤKd1YNf^Gtb_vFg_gQ*hOE'St2}a;}Xܘq|A FUx\kP{cWkˆԊ=*}̶j8~7<\6WtL 8c͵.}a,Pr!?氘i7F1m[+~b4K֗N#J2#9,c.V{pu@}"z vL=c~~k4jDjsd81`a4=)!*hsNyCl'~*sOTh띟OpX.Tj L a]t4TBR!M% MBK!@8o'7=]"\YATc獃iXtas`xP+݃gӉM·~;0^XuM[,-#d,gbڤ0+̓l JKe]*|'hũu E`b)+c 1'°nros& #xhSzCρb鶱yFb.19PFiJa`$62D .|0&|}OXB4n.lToF\ŒA_4 QZg hr|H 39> RY Si&G Mv1A3g6o-+k Ǧq]". =lam26B0! iETt&x#g>Z#c^oX*Pn-V(+ݤl`,w!f+fH<D,ϐ>%oPO102fO,G`AHWҼ@y)@@bVX `<7slU:mCqRJ~Ь@yFM;Rxk|[X$],ꐮ%.r{H~TBszB|%vk ,Z 4K4sg`/Ff)#}I Tlg7\XKT=Ĺ>lg^I(}Xn8M7èD9M=USEXx%1WWK;KJүΖŝ,$lI ZYVOJJ2}u|Sqgy=O+i_-ŝ&0}uĈwV۹¶[ڕkFے޷*dny-CZnb ?B247 gcb1z 233 297 x%[n0E~zoN,?Ƃ&sϤߏ0ަeǥr dEWhox8\Fq)9W;R =QT*)CH0oP; wWլw+T[M7Q``AB/P$  )O딗w5[n~[|h`^`20!DB[n2RjaT:q%$J:*ؓ?1f`|B326 gcb1z 312 433 xuAN0 E8EHI:i##V mih:s(HvH,cZ,95}\GI j&g3{1#{n Ɛ[:y7pb"y0]Y^hp\|#e @ B [q L³ˮhݠ4n@Ta2@|?l@E?'yծfڹl':ϟ2. "K' U .d#VvԽUzhkεE)T%GM ki{`oWeNlM.&G;%CMȪ+;E߬OWEpython-defaults-debian/.bzr/repository/packs/07f0251915e44aa431ffa1a9112b09ad.pack0000644000000000000000000010676513263113065023632 0ustar Bazaar pack format 1 (introduced in 0.18) B14532 gcb1z 14514 51926 x}ْVޅꎨLu{KU*IHLt3+%k.s· $s@LdOL7R%I3OvUYv~ͳ}޶X&u2O>Ͻy2MrgUi杽JgWq˗~y/Ͻ'٢]ZUy}u]YUdHY^ټUgoW$YKҬ*͖,^:4Kw{d^ZyiӲ0N{WUޟWyx_y=ݼX&^{6 I/D?>ۿqN4amo6]qUPxY%Uzxv/KO&]`D$7IQyVNap*Ƹ9Ŝ(^H-&aE:-mZ]9a&vi:RjLRyr[|aF^ۖ&@"Wou~\UIJH 4T@* /K9TjuTPl6PiZKG>KJHӕ YxA*2U3ٶ{~MZ)5$JXq ,aQ A_Q4mB*o{(URy3fUE71C]i1 $OGx.ZSX`oiJkq9.`"UEX9N~+g?mQ1O mpZ5:f{ qQdv5[Ecsk[lphmQcpnf>ެ+%⹊Z?肽[v+@@oي#^𦸉_)7p U?;FC9w6S5pi{Leuhtduf=F! A Q%>s+3*)`YI)~E~ &4 ɹ-S`BySp*""V-T{#hbRݛ殼 T,)*~. f*^ͻ%CTcfg)|UO)0k QUeژ@iHBVN'd uMr[ȴG Ԏk!ӣyB@CH&,mǗ|%d/weZ߬r8Ej 71wɊ6UL>ACo @HŚ&5`Hщp,bUN;$.ɠ!v"GsJ`)8"g- }:^sCR;s~3>-0hLa`F9[xR@EO[,U2[7.t Qg*)1hbm; fT٪6qxH Ml7dI(u;k`kA|98|wf嚇T!yE.Gpnn}mtEC: N>&[r|=V)^{G&fPA7{ЂYRU>.tF7On$hFd`vD ' |aW{$n[MG%Ɂ}o4E۷>|٥^nyoWsS$U C|3hWo GGlqYKt􆢄`m"HoPٍŭL`4#  V`(4# Ѣely9lc2%QA4 NJ(o}ˊm;@"E; ~#^Q/o߿~wϞzIvn"ᐚjƈ8PK $H5NhAZFM|;ʎꁪJpn ((Y9I9Y=f?uhSpї+g2 ImS',E%24ԭ>b 5Y]""4!ٶŘ~, bk,VWH&bԙx&]|jnP y1h)h* m,9ATw%Ò REϒetpk pV㱧Ϟ?Ky:w^Y `)Xc ~/(݀њk7<ĄOw&#_ 9;n\#rem׻O\+sFEC Yl\9}e'c 𠼑h ּq6w `H:LK vGl 0d!5$&3ǑVgʋjF$Bۂq]lgdC=U_Cռi#A:7snfeה|z0K^ +5dPSo*z (c0^l=FdJsSQhڨ2"(Y&΁̍NofG0DcЌؑA'aP6(3\"fڂS f7Dp6Ro#ckc"B^ ./haadw$)USAk2,(کy׷yb~(% .D%O7}scutn z +RؼjOҞ~slt;ߊmBVwlТsB͋k>h\@4,OOvl_ivXH&Wl"̠%L9^?NG|B5vFVz.>32%;/1ZqX덃YN3v}0֘YWRi/퉈?R|jV\_z~r'Ve HM€vbp$(߂SDH\RRNOv}O$&Jc17Fyr;ՐI clziIpLClr _D 3ޥGd="gK,%b 4r ]< [U圄'0&GU)gB(zNZxU M%K' ph0 ݂ GbwX3l#8OBRcAtbG-\lQw:"\]nMMu<&]v6v"Lcj\m;GEolջG)odFI97hgI`?y;G-Q67\ە8 x0v>2IsXIv7kf́IphIb`1oz^D;7R .?&(Nub#fPs | oѕbd< W& _+A']c}5Uo:E!H|4,Fw SE%>Jly #akLGgfkJ;}ك#~(lWZo-1v/k&4..ח>`:x\.͋*6<<ԥWܻn!,jAlT$_LNFBDy gBCNx4{#\aнGʿc$3@y(J팋Aɰ?D帰fI-* mDIuu%񦀋J᧦j>+#%!9pBdJ^[>(Fi-km>:9c"F1 Dn~@cm_dchaޞNj0 ;`[%Z2 `Lb[bEqp+4r<+m5m)VNܪG^ߵKlvb.\3LS#Ir}`9cTR9ն9CJU;M Md&^ nM$ؗnbX"cIQ䭺%2')Sc ~[2{T8C'Vs5GZ|AET5ؼw`u -STJR.Fwf`ITY7 u4^9Uބ~7OK;Q G*hmh I&db|@YݿT$A4R5uw 켠T ;de&z&Zø{&""!2q>TR& WpP-OT7 7@U [cDжV#NqNCxE*_~vO/M#7cx|Lf[6_װ4 LL;7~Hb44y=/dtrI$H^Sɚ ȝ&ARs,uGCKMIO1{ik <-[by UF?yR! ;9; $cEM5&8\s: Yn2hⷵ# q"wS9Fbʀ!( =!ߘ1wXp v\ vjORL0V*7' ɖ)')J=)0}"$^MLҹ[Q }5K~[9.mxhi,#ޞR `JcO m!Dm>·^gq`η'av?VKWX${jCH&Aīfo0}VD'Z̰'B1Нزk*Yj9zz vʷ3noZV iss& mP{mCz1 jG+8H gS iNV9d^ukBz04X6],mfl#  ܲ4R}..0JH4&p`Z\.Pj^+e:I2Kr=Kc`8%ZpSP#f~޾{M?j$Nj& *atՖKrsUvM)Q럓gH-5ݡJm~ZR% ` qЀ5Ӄ²3|'b3B a!ND a~?ۇ =2lCb[ ,r 6 ?@!OI{O2g#;.M@șt F5t<B|w-ppX[ÖV4H{K*!rRN;2q;]:vgSnO6_?UZ#Zkjw&fή0ɵ(xVK'u@mo瘭7"t},cH[:b Cls@6|xmٮ'|E5;4|KplU~&Vđ璽A }[탰.7kO8wۭ؇v2'vG56ƾ(>o^[61Pݰ`,EFS |IlG/9鿁;c7dcv:vLx=S ~/:ǁÎZjT 303.x~O,2V 6Gr1 ?ue-ؤ B p%\Ny>`Rwɗc8EJ hfigM9dߞ$Ƒ$Dvm=;:fx6DZo3A~攷,mVXPSRGOg? a`iu ]Nm՞rmQx/UH`Pҡ±gxXoly#vqN湆?+LJ՚';cw)?f]bT76ʺfڪZU`)hu睾 v"UIMnj3=8XNOYw_eH1io뺿iyΝN5t cЛ䎹5(a#^&KpvN*z!1gG[lk]Y!(&rFE}2KVtϮdr+=_m߬9Xa F;=?8'0EV{徒%0av(DfGGl]b} DVrmZk(tU[NZI:d"Kdy"i|PLn֗պ#b?ȜF^ 2^afsЕo{$fgT4'tB[M}o51z* aJP(*N'So{´nXRkoKUN^?twR8vBmx#7hap䦳 qS(?`*(GTA-.<0S#jd3q5|}AEbHzAsĻm&bOޟACZ閛dwmfE쥃Yc`ܥ7S{CV!-t{oeD|w~ɱ[?~:-gp{=L!nVv}(mdc,gTP3=u8vǃ5qp$sy)Q1lqLtFhIk>m䁼.@p-TֹkL8;)`vƽ uf+cW2qD08-x=״3ܑz^ŊqZ_IʋgR"JZMDxn͌E&;7w|Mq;^x웷h<8{083Ξ ]9}=έQͥt`aO~-0 s6ԄT3_]KLZBd\-Hh9Lt"޷l,!뀗[IoR(Wj #mK|=x+)u˝Ś-8̽:%}w2&gks}H} M5-KaB A`HJZx.D\ > FщUk7Z#GN.w.Z#1NbukEa5&^- H(B!Ħ5?GaS+TYdq}_#WV'J9(_&Q^ m&J'Oy5k87r33H^80V|C \ \.`-{ 48wkP{q?}M .ƱR-iH]ЉX8|9G=IFi$#y%ekW;>>g%_^9h)z1AG1DҐ=$p{vn`^l^˫oph!W3QtMg ](ﴶYІ] )1CSrUª~8mw9d04uId{y>p9Bl=AmRt5lG`<-i?3 b,>LXEw ce0JG$~4u.fFbX<~9jg "3]gӥqJJvL,sHoy!bk5+?U^u]8o)/nabwbrC* IB;)+g Yq=0#?K~6)tQxVxO4^S軻~Ug{wjof m5n؇\D:J\aMlmYt($sGb& !-NM=+i ].Fl'&_B}ܱNz }P-?|u!z/4ܪW5&;LJ=Q!-6TRK=~uJ){i.L 07I^;B#m0|!ޕ 'ѐ/>mч tfiG0x߈&TBBƛ^|RBziI3MR9t19L8P$m\risK|Xs`.8~R`h̻xjRBE,i*hidn= TuVI~xLU jVFÑ:bo8MG(A'' ~`aH;DC%mW ' -rH[#RG$̽_YRN &ql#A0 ?@vCԕΑBR]?z'%ǟj:twm" jnkv]\qZAB,s!b ۼϩG-~Z9[?7Op.fz ߈yn5p "<ۤ.25tOOo഼ [Q3 qs_sQ6no8C_, N7&'Tta- dN؆L@cszv1 X3*|ZΰK^0PJ_qO6T]=^4Յ1WWi0l.5~!s I,ln꒮R -HSQMr''`*7U[b*5395h-'. |0mҩ,2`G^8M[0e v\n8t1:mD3ZhρLc9oHl_l䩹'C=\;B=Ǜb@oה= ?9(VNm6}3C{21$t@Q S1_Ti7.ֈ:tw߄;:[E45@X&bdžX*Ջ.}4òtw/G+f 7(eT  ]mqr9LE, 50vXy,=U-R ɋi#Uqmjt@tXqp:)C-LW¥W7-1x/,w"[_urL,jI%ºdr!-9C3ľVn@x*R7˻յ,R$6L6c71:)BTET5R3?q^č\?zc~Th`|D{N5zy:tzɞ"S-+^NŖۡ"Aol qk P=,gj o"cn4Q׷vV6CWOXٵV,?]21tb"'6BzZѤcU`ZlG yb Q;57-nQ{ȯ7|ڣ0{XZ?.vrp{uGI ږ~5g&i"qѠsV8~nSK2(*}WRoYk"kiwm.@htȇ|:=r/|p,qwT!ro(ƜN(j0 oYDtY=[h7@ʭ10QJ>ΤE˾Ybœci^q&bv"=qa17Dhyfݐ<+8te*5o#\)(:4_!y{]0 J1̲Ix.!76M3&qSBLGy]iJFGGVˁ;&c(hfD!0V!'u=nfFGJxԘ!Քך_9>A8EM*DCjIa6'0 N!.+؞0 lώԣyfOM'Eat(Çt"8τ'5{kh Se>魨h$*y[;[v[pG'z a6\wd Z덹T/e$y]5eiֿ7f0Ё^40Ys&AL0C~{or72FwR}vF4r^BhUy1J#Yh֋g6)kOWP(:m{kGFG5qF^k5r%7O do"6S Njgޓ\XuZw?thAZ>u&Mz^L@)QB1930 gcb1z 1914 8531 xX_o7O1T{\D©]ߞ9ze{s>Y_ޏԱr@ !Ǟo<碐B 1kH3UL2!^OAF@7#,)̈ FBQ8RLEr~tKL `7Vz{*9gQJD3-?GGp'%%K(h#0ҏTW4$CApiIqM #Ω+0IR M%ZE```r[LyE/i dI^ pA^M:=C,NL'J K^ZC"DP.+!%dj4Ms d|iQ pP7_HS;IV,ZW#XE)dpb2&U(^TH5\ ci6O"E4c(=0"z5Tb" HtaJFn!3Za2D7Nn6aw$ͱ $,txDcde%ߓ#?]ԙt|UVa &wttcz*BElm #Pvx.)Rx!U SpT2x'B0o\mh\vkCX90.t{<铓ih-,v4WZZ0d\rU\Yb%9_oƸk+sق'U{5^^RG`$E9iQF Ԃx]h<܎Ӽ,I))N:#'fFʷ٘?'ggX9oPN|R:7ybBoZ&WҰHDf^;0ڀøv?o]{UDLM)u @kk;56xr Wal$(ږ]li3ufViL*}I3ާn3ݎҳcpg#,$+|c#*->堕$ _ gpTQQ2@VroF7{'FBwQLJ;'čSh(a790qF7e}uYǁHӜ!V9tܘt՛1Dd;1M,dž)CkFw[jc¼2"X3$gh\w|Ƭoyv[iP87FpggJ4"+tvB\;P>, L9M:ԫV,hh8H^jYoR3HǤs *$3$=bLD*({x6VLW8c͐>r -8M_UtgZe{%Dhۃ ?S0|@w \6c \h|< ;c0!Zmzey H8o8,PX6el ]2+TnYh'DglYCzĊE:i(^,g" ߋC50pwm08Dsʁz~usQ a5Z>@%D*SLjRJێ֛g=GB㷒TZ7tzJD&K"UQ[o'*E6laoʧdd#~ IrJ5p"+.NP )kUaό̛fnbx\xicx5n:rRdޓddZgQF˨ఌǨ7{Hӆc5=8.kF#lKOؿ`8ȇ!XG<6 ]FjN? > B#Ul,hi>>)w7Tݢw 3 ǀqLsjb8Atu7"]7-4)Tcų:d^2r^Nt$w@xO(DvчFc/'1p} m@m;Cl9." Qp+.\#c ;!0V'hLl_G;Cr/散i]#Dd .X CsA@Ħ}'jQnbE&^duN{T=tLG6&Ig܍Jxf-WՖ +Մ0z ?sw ~q;?R{+؊.i)>痧d#Zϯ^^^\^>o!ehThӦ/Bu]aP$(vEXñ(6͢< /z KKY%syI̲Vló/v!p̭I_:GW@;O'@)$j@+x l)VJ^3Eafl蕝͇ ;Ӵp`K9jw3'XDXy_|‘%0k*Y“{CzQ(rPjklY!8l y\B FH"-n sG\d+_y),Ƿ#'(wdT9EP0=QTs>{-U)6l;灲v쓩"SgZ9=n8SoeҬVƈ|oe&>s) }L1ށ*K3w)%"q$.6hDv-6eb0![&gE[TXfS[ܦwRX`.PY*y4^6Cgv)1]٠q*|f kݠaQPUMF9Rq-խCɨh2΁͒9 la |ȬlZ _+`==l݄P"9)n _8ۏ $$N,G]^+JeXshn#QJa>Uu>w]F['I˳ldo̫[sK-[Z2NFL[gPe(t<{H*YGIT?y3G^>4IyWRpIi4zܪJ!̬"l,R0bed{зrO62yi1}o:TV!ԘzY%s[QܹҾ 2;lnM?pTL |t ف(;Koi^r?Y EoNYh%3?ϵD]]ό\H,[)R_/ghop*OG'@cűhq`~ľ }L>:h,w 9Mk_+~2;/;*uIbߦeCGQѿCl.} u B1954 gcb1z 1938 8494 xXmo6_q,,9Nf3IYkHlJe֔(Th¾HN6i#y}t.2!K=)ɸV9 4IL$DjwƄ%Q91zƈ\( QH}FO{ TC8iMeL8Pfb4/'@/z0aBK 5gp),7ֱG{LSx4.(OO=_F=+ߕSN!I43ȌlPs*歡^lÑNzι&IHd uo=q^$¨̴NbEܣZ'=3j$ ^y(\2IEQ9$ܬ?e*Ǚ`n)t(ӈL$.ys.4\u(3cpz?|YBrXSI!f*㏽" g~X= JXz9y))gACK@-1=n;G9JdiH4uJBBlwEm猦q)zievgDK6$hLeJU5\I:,Njqlb,*,3f* K 3\N/)ØTIeh liLYSE:+d, xv"^i(!D)a3B+SOt z!кH@-1Na8-2ʦ3(y;c ={4 |aVE8QAo`+ȤD.GG2'Wx-$5CՒOH2\[!fɥtjvhb2o6`*7~7O5hL$vr N "qɰBNWw7֟u֑ٟd.eAK. 2RCf+0vNg֤T/Q6L2- {[#l)J-CJa0CGzi)D"[jZr'jS LɾImlN'^D`Pu ژzAcw9u'(!q]VhP%W%j 7Xvj~ 6@lTո@yƾ&)4I^z Z7-*,5QOC+[4DbSWH5ZqـriUCg` !!DJZGU]]{~,m-7(GB`3`6jʢdcϑa_ J)ېje=] 6!|3ף䴍{1TX}=ΝMGV18nԍ'VsZLt/-INSQLzxijB96o *)EL4_-jc-ҺIY +NVrh' w-5T|\UylXL GjR?>G#f 7}0(XG7vc:y=tߧUz%"\,B'yvti{p+GgگxaY Gd%Ag}~ 3vebOTVhcPڭP'">hw Wvc3pfUom^%s4̻x%@fiӊЍ1*E_/6!2)tUb,!|m}19"FbcSHc@. a 4F aej}iN)UMnTQ]q\uRF.3({0y_5\W+]f MxECQp J4=2}4pWRÿlNV]:"uy7/5uMv?V:xT#/zդm bbfWL-v1/KjQDЭ EPRHt+‡0&-FJN3]nYŚľ|Sqtw:m&cukwm&$cl*f M"nόz>j^N/[A7Akp fJ(KLǵzBtQZg(LPTTZ   1 5LvƝ~uŞ,hvCY7IUk>mۈ6Jc$*"wz7ꃄi  VbJّuqFaYf'^>yݏ p7 Bxg$:gyLD 8b/`S:N "F{( %ʍg=}Il{ 5sQ%pfH+}9|ȼ@|kQZ5 O 8XjZ# sgdVtQ>[:rg Lb0`caԅ 0Faedv .ʧ ;rAQ{RJ+ u܀iż~n&e ]-#FZ{|x \}|7|]{_[$a /Rix1kr3Pq5|(@u  `xz ra9k2,Gaލzh;lHZB#Cb0̈|7;:yX0m@ԁ``($EE0g@?ٓ'bS p_YBhɥGD;A`ꟐsM=A={x)_!fvVrAr#W!$C lGGp(<9r^9Qκ߿2b&4er3InQ;U<@܃/G9f`T) 9J1XHCl LrWl$b68#TH៙s((qLy}G, v;5b>CvũGG*djWT%lvNJO ^OmtV ǐ@a"o#i rXtˏKD! FN=c;e]씩{?ǘǣҎ'<=>FF.. |" n32Z*^-KCC+pEsJ ~T1* ͍z. b{#M 2A{:lC`>cC)Χ5Ldjƃ/BTPJQ¼'g!Y zuYͭƙa>6+Pr8s[ҝ T8,mq*Sg:3%*HSi1Q[nrD'63fiVdykĢ=.ToVlF ܦ<ᑥTzD gX9$#,PF~ԣ Wzkծ`~M!d2 ֊v6:,~P#X.TI;n ?'2`\lrNxi-Ds.$:8'L{H/cgaz\no~0튣f9Ycu2RR!&h4B"!o(F2]Y_[qEdgE;^HܫބuAlE(S.(ʬ0g,uBH4i{Z\;(0#kg0]7*%~fJ9TsIľ㳕F@> P! نPm $eJvYr[rdq>HYo/4n^)=娉Qhe,i&= J1/^F*$_[,2Z2Fv37f;wU$} ZfhwA|ka"ax#%D^#kg%l/}SǒSaBy$'3>b3б,RVR.>f>ͮCaFb.)$f[:9XIA.+hFX;ƸRxT>­1vN^<6Xd+LjI\<*Qp5`y):Y>J[hrM4뗏<!ϵ:'Nih,f*C@pu"/a1,^A@]݉$?(vrF^y|b0v%G"jvR׭ff?JTZD0ArT0X ^~DEq25 ZPv?t.(o;;1!bngO=g|xw8.=,LH p!SrLE&F܆l^0KDp1 %<kDFtU+ P`dd2-hays'e?G\*5[ ђ$כN} 0L5BFtE4j LeWZ^ Je%{kPlCe:8EYKז q!TE "~ypsnJN]O* ƃ,C.b:Zܾ{̼@َcdv12()MB4[ xQ)7\ka^sr e[}9wAf@v3 4."dGGX@I "( "*0isيS.hJ4[\x$ET*#!Lp a"Fu9C@}' h}krAY'Ik޾5oDkXs'8xkVkIǚ9zk }'ykӼ5a?Św8UXGa6f^37 #{ 龁Ԛ 01D'QWQZL, isAI@U~#Q+[l1 yh3.|o9#?4P+^8vvRҐR֚m=8r9n%Qs6B3DHsB_W3Of=sXt&\ګZo7h`R 缋 $?! nV)컾`8KD1_5^蔂a5T).<x3L})^.R~k"0A!+j -a۰!~3~:>ÆwP-4w0'4:9vy]$,K Vf$m@DؤsT]zX65d?a=mFt:fWE9Fo߰';fC0qڊ8m *>-xsЫku|,qja*tGYĩ:H$ՄoS?*{TDD^/1L]Do-mJs1%;iL(fP1xr:Mbk _m*:Dj$L,Pz!> p0ڬH<},qF1uiH!,H6 9Y#|T!^J&He$V-kO͋'gJj΅L,ft$Ea)OWc H&j! " "NV;8B_’ɯ[*WH:V„hɥ0 Raahe07?f>D on5 "hqFИ+)AB)l=CdO9L_joٞ@f{\i6+7o7lfRF o'eWJLEr??++zZ7Az 3Ǫ $Ma(Mr엁o'g'^Noy!g隷7+ZfFd%&4c# $VX)$H5!Yjh2Xb tR.Uh[mn\h)0[ `Ca_Pc)p RSn9' L]"V {j4AXRAGkU B4G >o8ôi0 .J`f_$CLמFj:&۳#QZBC S>1@30!ʽzܡB7jDX>Pꐇ520ʊKc3 ޜH&l .nvt[oa섂(5 0cNNu ZU$uNMMLMH#͎oX7L@H +a<>rc#) ypd|"eEc@adFTtR# RQ=4J/z kNvZJi xX1[v,F 7rs$8"a\Szl^,e:0N%5[˖*eA7š9~5'Rv2?Tq1 ,Gy^wqmnDL K/[D<&& CsOfErX(Exǒ!6} h59`(~` c͋XbuB^XP P 9Gj\hia2.jq_HqzܐQԉUM2;#/a|B0 pKD0&wݤ[JNUanxPA>uiRPNMRJ%*} VT۲({ߐ,wW<9HXmiwx,!RF ,`0!֩ gU\ A),w3w`^n^Fḵjf>o'^Kﷴ5Ojg8v51 $t1B3Nӧcv&}/0pdK1א ]nSR#W͢jXFj5œxuj/@OP"6 'CˢH!)=2 A^H4hs}1IF̾g)ld>ˇ`/x6D^/0^`(ݨt+,(,:ca|ZfCC/ ۿ޻ sݔ5;CVMP*p3@pt.=Z2M `eRxȟKa'r.Wj>ƭL .sY}Q骱XbJaE(Ã%ۙhVO)+df p\6 !}5 c@^*VֿO%cF~wMbv{[ӭ\e'E'ZϤ=5*+]ÍG#$DljWpJ #/kZs #(b1&o9E Xi~W]@voNӈaxr9 ׊q (a a:1 0j_ӗvK&\~r)o5P$ޛILPMaVĖ_S҅(ߎw0Fd/v"[%wfi@:J5=aev337:3ZÒ*ꦧ NRZؔ*ūQg90:UHqL:BtyW XlB [rڏ͎YEF%qkH0EđuN9d+Flm)&h+)Kc]!ĴƦA /=\6#JdJ:Yd m\0Lj !Xirj\&%_>w HZ9y-S | JZ ֟W  Jd*ז|k Z>}V3T\rd4M%) Ļ fQ}K'dk!VlAwə8nAi^*5`?t{TEkdulx⺝mvўņ` e'D"E8p5$Q6l@Y!~As2P̤V(.^TH꡽)ݬL7bhSp؋Cg ѥOҝ%F0%xi$(>%$}`TAx(O$},,WWc )l0p7I a(mz=?e<wvK UQE/xvި/'k;3/vlin`u^%z4YS/X a?4r݉~ ~W_wӅeSMRh Ʊv L*>z_"r0SՋ~e+}ɓ)TmmOE'St2}a;}Xܘq|A JnUx\kP{cWkˆԊ> }f[5VBvn>6WtL 8c͵.}A[(9Sb.Gd9,&jڍcL~JՒ]f;ȀLmH#y!eޥjX0OD$"vǵvt/~iFZƫ7oxqΑjI,& |[>TOe`r ˅jZ>i!FJVY*Bs <[K++jq# b#U"}PYC1{hHq{^"~:VoS7M*B$, #zzf 5+k"q}F]z؞,6 dlpBp&#MFD|HL^q^ܻG,(7 ?2X5)1`J MUKv0 R&Q)GǟE|ҧj971fRP pސe: 6JP:i@(h=-4ON[lN&hW!*xfˀdG_UqǰZzCR4b ˑ؀ {EݸfR~i(/i&@/(,g]bB )X?\X˿FJHRqB>UZ 'U0q(/rs_,Vf8MWèVYN*a >M/˛\wuOCھ&cͼd&UV:܀۹-N?dPv+70Ы<>\2oo-fC'9',v,eΐ1j ĆA0Ո7=t=0ڬH<> Նeyƴy(` L7$ 49/>w)!2ւ`yrmyQWǫiqkپgcq }U384=kK=_g)_\~yr {W5YyYsz{E Tt8G3Ruo=ͬB[lML9N9F `)4sDIӢ2 wDZ`?Q*Vo>&X& x^H +gY.YU+i=إ5^f}r~``!q0w1"11`A Kr άZ22ay:s='A`Dsu֒ K2 άYpY]Zl +iZtYRW~w$-,gq%qwgKbβzVR黳%;yZMl+7%黳%FҮTt^ڬ5b]7ߖXT!Sunpzpv)Sx)AP0x'—5jh*Kh|,Wvz6s*dfnԿ:t95""Vt3.p7'kփu/#1"s.i|+;hJsƥw/}Դ")  fxj#(;n Y|Ta1{ ܲhJJ 1`FJi,_򀹠]"VAAiP I, nCZt\bR|@ԞB3213 gcb1z 3196 20323 x\Yu~=PGT/UI&pLƃ2ΆcPqk-$ q$gRi|:s[O]-@4 Q ['gofUy` ڢql@c- t*eY>[ _eB"KUU?ok;.z>hOW^PGPbs˚⺪zkhY!jgǮar=Y`N~ B4gRV1 o?N^_$D^ȍ<"d"tyry4(0Y #]kF&Su3gDŽ n̵|J 12%,#DZ*e_a4Μ4y.mo547N~atflIKRhHH>RX#L t"xo[WG1`)! &irBA4udR>bMt1hv5{Q|i}9xNxYF3&Ȯ-&q#keD^&vh>UgeϿ];, ½+`0بi!Qd;iL=~Q`n+.WP~fv^ڡ)<]MfF{?n=ȉcTbAS݊Oז Y[߫ԇ™NYyǹɧ8٨e=H ղHcxN|#A,ν2-'u*m 98pf }YL`!yފs`iz '4m絫Ѯ{w{i24yDeu-+1~*bJ&Y,Lu\}˾{.\3lmBG$˯VkR>"[+ޫL(c-'W;N3o" ql$ΫKvq. ˢoou]!5Lݥێ+TStFQɤں׻]8f>*iXǹf[krnU j{( -mʑ8ZA>mG~=}Z<~%ދ~;E0BItDa#>m7ɍ(W7#d=4ȡf޳JCXdu7mUT(8Esz  )܁v69%l"!lPJ˱9{ < gfK!J5 F6J+E:wʒWCWL"X8v%TGߗ1/2t%,}Qgc$'XkAĽG-s8G_gm5Xm2PR'sө*"XuVX ,sƄ-%$<6}!d$*C%uةΈv +!4ʺk;^-3F-XEJ{{Ž*Έ+ +H:"s4?sj8v͸ds>GbeV:L_i1P\GxbsOyqvyEع;XRŝzi$tjoj1l|=!^r700eHRbskGE!9S",퇩qDvohwLhL2$La7߲0xSnM-l+=?>25jM7iIȲ)Ņ<%(%fx`3Qbg+ϨT%ntXg˫hPREQ@šTW(>sR.ѫ^UpI,F3/EƟzڀר 0~w/'M!M4f HjE6q^tuV=no ("E L1ȽuiНZ`W'JEI~*~?xNozi:'#b,S7r>@Aѵ},tG]91ψi,-mfQq fjݐSIIBUO._q)m}\>% $c6:64?h*Uz>ϛJJR''&JB245 gcb1z 231 297 x%Ar DsS\&|>2 )r38Y_oy;i+)שffj6tv=)3V2RρH620辊j}>΃uՌ;]TS P{l3 0J!G-H*DIB.9s^Uqc+;rQ X3ͧyx~nJDriOw Ȕ ja@:>aB409 gcb1z 395 567 xm0E7]j J%YmQJ򠫷qx_qk -HwvKqTWʎ颵ne,{tM>OVdn|y{$[Er.x&yfb++q{e7q>v Am˛d/& &'8PVٝ7ޤқ6H彊:nYd0/Mi2NU;򼫸ȻJ^}?'#868"ٿ7˵'ڲSh!^ FeK'70v_}+BMxQ\FuFŞ@a{Q ="#dþGS&I [<~g]?JwКb 'FRR0C`;K6I'Q< mɊ @>o <n6ŃaHeQ}KF9:Co0Fe1kKBR.1{y0M) Xim}Zdw"m%(pzo }6/a[+,6]l+X.>`qEMpx~p ʻy<c8YGX7qZmvԹQz鬪rz WfoNkLf'2: #?8{m+lW8+iT;5[3Q%lтZmT~;?h3S;hd@Ɠ!콶jQ; ٹB}AZutag ,PTo6AbE/Iԁ^ x gبG ^h08D+ +[% Url/E9O d53WR&b9n/r춭YݱczU-3m6jXŹR(3k(KX?(YwefF17D쬼ή[f2W;j2pPBx4-XxŤSD [:X9u#?j$K>ُ. CB@2p.]<G `BnP3v B]oCxlEj/nz*~B< dA+]4K TfcXitJ,&7|:^VԢ$#|\~ލ7:߲Q'Y~?F߶v鑹J%h) 3e)9SHri6lvPyGv͏fh?;{zo߽gW^}͓[jfY:K| @쯧@BH7V5'3Sfh3&MoeZR{uOWɭQHqf:7KHſTĿϟ4&g۸uYLp ƭi<^U>Uѥe֖/.[TL ctBPoHS|챥ș=<ϳMNc68.b2ł!͞Yv}L^qBjiTӺzskTV(f8Fi_IqCpg>vAWY KbV/ո~]c،EʦXcD Zd;r´ -ّ6 >L(?=vTc L`;mA }8}Tj]D(_` ^}Y&X4{ס~/ ; ' ыh\99ڡ'P 0<ߘF;jisy7u:tƃ`Ha>9hHpgG[jؠFY9q7li?">3pٰ5lOҕSEeHDAK8s1Nd6Fm l :_beJĨ 9rNgx$8cEkx%y*О#A!ﻎϪ>ճ/6,O+&7g4ES2Fܸ_>]ܜho_9븼.z%{)LbNp:6+ MU0-8Ai}Ӥ eՉUKhw)%iw4"(sS  #5஘C}i*h|Nۂʻ3Xqd!-'-Jsf08K|QfAq#wor;֑̂\'2M2E趠:Oӣ.J֨[-yEv,cxmm;RAfabic4,ޠb3=ߟm~':E'crQ?wNyXf9鈃ps4,Mޚ0 e:<';MS_f=$EފzxnW4^2 ­ ;fZ ĥuS@iM\w]fFދ\8ͤ$жl#l } ' 6A8>|"tDʇQ?dv~sYE}A{7 N|emU#_д.XHDb:hqgla_$ U J5 a ͒dJJ$$d$$o_=ᴭD@udI57ՃS CB$a tG%,T߽1lvB92΂V8%(RE^9AyPPf. b^2ϋ: ~d@`E>=7`4d8އqTsô(_ś)lp ^NG2V+ELJ,Q2 IoSųt!w.#Z5UB]~&4l^~o@88{#&K<_o`%Ps l oљT|fdܨvEkQ3A']eЍ}L%Uo8ȼQ&cAzb.@OܢGWfqm #ha~j'f{a)ED0p f2\ ϖt1骮ܠWB c8r,`zٔVˌT[ߙX(m2oNQ)$f#LxpC4b]kAj|Y-;!\TlS-;1€嵸GZ / 4VbMDQ)NVbɒ UHUxlZƈh=h9쇢v%9QeE%<}=F޿WB)(+KmB'Tv aQ:;OEǘ%MDn8̏ 9}p9|Bq*:u#ֽ;*e<2.:%nm”# `O'E)8wո JBAqu5k)NW a~jnQ]8_9(1m Ɂ'"u:(j5(zi.K񃭷 ֍~O1OQ a0uZѩQ<0g|P0ɭ5J8cE@ѭ\8*q6qp+`x.#ݷ$XkJDF TE\_ج*>$eN-zufliPNw]; 'tn a'Rی>M Ipۗj{[ uL2V(ҫ.D4h L_)M=Ppڡ#\,~"Jo^*͆K%\5w)P/A#;#0ʤ'Mn;@/DJo m Gy׹tr4& ^ԅ$22b|acR>Iu겻<T <Sr_chN+;[b A$J%pDP:ѷ@h$1R?:d^UmB4f^SXM,-fl#5ܴ4Ru,.0Jj80x/qADlVJxN{r0zuRz(jO(:0v :TQA鳫O_'IΤ2@g%/UmA$7Ve^3 )Q7sEEBˤVݣT'p{.c8xnS<ЀՃ¢3lU8G ]5B'q n8<]z죞e؄%9ǝrEг+X&j*#P$?'5.>J!zqFw.ưēIXlTQJ)uGG5l,ՑB޿[@Us^Gr)_3<"ֽv=ݨ;Dmvk=v}h}U3c! J4箿|&s"ŧ0/e5BqMÌ {W`7gb *_=nő\L/G]zY` 6IP5yI7Wt^Cc;zѝ"T%|T^Wigu9d$EִM5;*f7DZnVTIoy8-+@F/׏|g? aiq']Fe՞}|-":cᐫҦ¶ܬtՠS~H+8s'\Mi%J͓sv)=]bD6ºڬZT`)he睺 v&fUINnj35$XNMYw_eH3\N^35]q;5zkǠ5s[ +kA39V2s Wћ| L=+)?ٜ`; IF2) 7MQj#wƋlrS7,&0~S~ _w&V!yY lXFKh0)|gjcEjkfXtjL]ঐ>.dr+tn^$5w/H-JA=s\-w})zR} =sBD~g8PDęjRsAo7B&#,Oc"Plgr_IJ{"-.1򾆗S)9Z&UBM-nY-j ːLWqq>AE2XߪR'P!AzaZG7ښGDx)s@b6@N+ASD%To],Ұ+6(ŀrBkt;֟WNfpT[ے*s42f\o#v'+}|ٷW˨<8;^?8Ξ]9u=έQ%ǼT`aK~%0rs6TT5&j{!EV-HhL'uta3>>-hOa&@`'fAc`ө\?3%Qsld0z*}`{;(P|Z욊Ƣ5l6^sH(B!5?GaSTYSdv}_󐃋+lvߝcG mwT`^?Jǧܛh訹+3H^8&7V|C \ \.w`.{ t8WH_n;}}[vC[Gєb+Քs=ߟ1)Ј h$Xrs+r#)O`"iİ;W.N>>]L^Kt P-$KE8>'V޶|@G2%EM X_Z.Wn&m @U`a$^HQt7dGiv *@^!',pf6W}PUwtTT3QMPRu^i-ڮtCSbƸ<ҫ=ݰrx`๩>K7#ݓ䱀F lX.fx8þ6n)HIsK6i}g(Z. ޽S -bV>j &safql!lWlڑӪVKHA0GDjfs<#N@J}PJɎe_i-/DlzFh_E=g_zrE@=w0Suc_LIITE#0Q&duvޠڎcwn(Z64«SՀعt  "oKLZrB9b86YTv,#Ƣtb3#rsv?x[ epsG{;Be@1b;*"7(iׄժ͢vnPw^T<)KD4eد&8j]AOJTJs)Fj`A3:<'T=n4iM]~8"iGj 6ɤoŒӠ ~ 9+`=oA˵O5+nH}cp\ )M҅j*r]8pf}(LmFooB)dIF%'T8;0/ŞAGcczh9I%M!)6Krc.B1/XΧ26PѸ:F0MRUe*\\Io}y׼v&:tU T%+aKk&#T إn#PJUz3p6s{.P/4{dr3>("vdc>&t~ bO}^ş?19^z).@rj{]g64 !﬛>tP lPI RX":,Su~n/%@J@DTacT':bǫUpڌj=|a;Une*|Ҋ1#}A|Z/מ3ȴw ?o+#Qch9=]Ք\վȟt' ~( z{T耲رt[ rSU=Kc7.bz`ܽl~ɌA3L'rj! q )Ȱ4 ir? !r CL޵/e$i`\LI^ +I/zٍ"f<ʤ#'ke/F @;6sAjSo7K*NI)v?e1ӂu/R]l6M zkf_=f6S 7x+B}[ngƨc(bݾrREġe9z ndYO$%Gѡh34ؓ[_ 66:R#JZ$A -qGAs!{;T}61lM0t;x՚djƢ.ӹ[E1wWw4ueКb mB2117 gcb1z 2101 9436 xXr۶SEgjwD*GdTO9 HB*`Њiܞt_8Ig#v\qys)d;c%k(rY S)L/Y*KD5#~p HqpŜT)\\))EEBR8zbSNxO^`ɸ癞ij+"C$[8u쫜š;MC<4ΨGpeOxv1rb黂ƔHSHOI3Յ ˫9֋!|7$n nOT&x0rIC"Bޢ_N'kЌDRt* "/K9A~Q)6ÜyYT m9)]Q\48݅aeR<>ӆNNXwrԨr4so%p9;uOI@xcҏ'~fO }K Zc1`U>2kh{XY}' i)sꝴdpMP!lly}IN zej 7@&W3A_P)1 OJx#=Kx%"6N?I'ƹc&__sϦQC0ee]q6s~mPOjV|(iފ5u5ڽJH8͋=#,1 * <&EӻB㘓 k%Iydk!s}@d~` }ݼ&p 8GM09u@H%T*׍}MZS%ϰ*PU}͆U-R`d^j⩙&> ]7J K_2IZ?ppV 7.`!.S3GU}hj >mM|m29f3O$m>6ud x|Np-]r1A3fc0/go&)\ Kf( ߍ_o &휥Hנ~wݡp,-> 2&xPy=M|hXoo\(E?HNșP6Iي>@e߄YW+h^Bg(8*^⓬- x}xOKkŋIVOUԺ|yj0  -)]!1h!kX]/wuUթ3kry"zKq igq]l܏H봥~5::A>woCr?:H,soJmZ~Z:3֬bv [&n]&P8V|HBS  Vi*uʵHX:I(\XRfvql (پĂC*|b-"Z9)r w&" FрaLG3|h~σ%03Y>{42 :}xNS# jEKP0(Ї]iAԏZ؇ͽWN(%uja2PjG%e:xY\iח?Pp8B2089 gcb1z 2073 9475 xXmo6_1 }XiAnФ6Yϔղ+:f[4v_ @^pșyf!WJ* (vf-s?+VF{W<2BwT `d"7,1k4J4CC@KJspIcga WTӇ6 ً \ iaJnFiA_Z')2NC}U4xƩ5O ݇ &AoY0{fٙ=/Xs|RiN},MIk*eJgiop{82Ļ2,h#u0 ye `tnsr{iog)q^\:ʦojJpHnG!w$}L֜ŇNW".YT{0RGtU§8NS:/o^홉\d,C3[Tk=:ZT?:`RVqp=M{ ho6ͼeJE({g(c:7I+3[^,CQķ.xx5FN-F=]wjƂd_9e0`N8oҭǛ|wB}D0E^G|ho!>FdԖx죦[;. m'rBw[fz ӔN !Ou p]V""^]ƵAVp2^⍬֬-,^2f& j[+Y}4{XlˑǷࡰQu7U|WlLv7d'յmRҜuVGxyy1\cOvIu **>Yyܓ 2rq.I{Iܖ/:y#_ܕH!>;]2$`)վ5l0;:]YMMl4]N++/ O/M<zRz}oۗO|͞'9' J,+Xl+j_f<fUHQBE,6s2?[:IؗX\b3#7`ݟb؇%`4!WKcnaTI]H`LG3Gt8NU}?plQϫZVm(|`RtEBh|8ͽgU>sn@%۫ URA9p/8?V3B189 gcb1z 175 222 xM@Dc{_+ Pb8aэw3"6t7>kYUi]TڔDMTxS xɿQ(z N>)zc1ރi:N g㴚23).2 AH[\lNt٪`t.R7B3559 gcb1z 3542 13666 x[}{F[|i"'D6M+nmr>I[J℀`[mz_.%sOo/̄G͙5e`faC(xbŐp Bu৓`p׾f̏Q+',,pXGQB?=8jӋ߇f^8tlX=qcfDԇ}勭d9)h۳㍅ 3/-/AeVYFWZvZoXx$ &m6{?~8}} rƫº F_8=j5q_Na|HX47VQigop,%LK89覆ujڽq<{n42+#71E*nx/vCtz, njDE ;o( 935P}h, 嬧XlO n&3/]fS8cV1o!?$[DZa J9Q9:` ܇}9+khCMt6dV[͉u HC|;#q(rĘ2j< 5nGn;n{G|bEܡ)iІzj%):7gRF8|2?&8L99B2D5p60q=<j9$JAո;,,NZ#rqn^Fx=G[aؘq>:δJw) TZ|g`z|a%(}gqxN2 1ƑNb!L6k/FZ#uQK= U3-=XaNR;Q'jzR/!]^VJAD2%j-mL‘$n80< ߁ f}$HwS惓0‘7lD,ƀU&l*z".|/SfL¿0C ܐޞq7ͅT9LPǂWw񯯌}p%ŕ~u&n{5pNx.#E̛MDw(@xO(TG^NX lvFbCPQq+.nSwÈ {EགྷWO{BXGӨ@ &X CwAH<@=p`O̷f s.|׽JN CMD MIEO,KmK d./ FwtNDMY>4FOasg9L`z3& K(KI 1!avrJԅeSOLJG;g#<(ˎ!A8: ,dG|ކF!h`ed-ȂJшH?&Qo A=ަ.V͸=&^duJi6{iQow$_/U=I6O>^&a.¨hp~UD\V^)VÜ` <-S5K[lJګ>E[ ~2]ųgG/Ο2;}VRǴ݃ZiAYV+ ǮH+QpUTաY9Kfq zuژp_uL: x" v_rPcj CfӁztG@/~'@)I@kx T {-/؝1BQX!B+zd簑-z,mf VN݊؇č60!GmW7A4X-P8RDr<C˞FM멈s3yBFlH Ej_mP9hjS7 I5;ɎFXj0U5-2a]GQa@VTXeՉ>zߌ'7-Es!>,u[V'}Tog~$p:m$I7ac, WQ+-ř/͋iŨ*wsp>f1Xã|p53h{q𵱒(Vﱘ\u,<<,jr*nMa.(U.Qo%LqF3, 9j 1ĕ˵&͟(EMn;i;H>*t1Q&q(5qgTgr 6Q/`CēΆSrZ0|t)$YN=GtkS,=%ؽRY ǮW⢅.ޝd2!k')QuئZRq/.{Eqm6]Mh*>.23a-+?]d֭!3H uoPbs,\{1HopJ5Mw[˒tJZQʚ^AmR{3jjC|LWO[/w]E[yEz˫lS͋ٮg#!Zrv10 E'mTd-oSB鰡5O°䥘9򊂴QYpϞW:@&Ө]UF ̬׮lR2[bed Vзsٷz\T.ߛ.z'(!-XsͨZ\OZUjYܧjnM7O4RT`m W(S ku+V^(_^޵>Y8@i_]^5wR%4_{o/.ʪ}Uɿ*EwQŻ(볿jbB߈Ƨh,)hZGf MpF<-3-P7VCO[ }*yB94 gcb1z 82 80 x1 Wlbf#D߫4!( h$mjIDɪc*:!xfTWN[ fk B10482 gcb1z 10464 49152 x}Ɏ39fa}S5P=.̭N ڷg`("\.T 7:?hi47̓oT4!H5L|-A!%jd6hNgkb`5h1pVrt2wek1V*N9ǭ_,6鴙׭iu[vۗ H?UBn}?8=3ꑺb:1O; ^ [-{^ RRB6߬Zc@鸵Vo5\.Jc jJ"B!$F`aFθ3ۯPRf^>y\VSfx*lc4K"" (x qq0w$5XL,@ƑŔ#ℍ N|(.ev%:oItgyLD 8-!n<{&%JSOÁK'Tc> RHxeDӗVW9`@J,׆;5CJwˇ .[҂X=D7xbRCԒi8[> 9ܢԑ;gK .d4\ ( gd^tQ>] EXKRZ)%XMî&v9Si^,G j7r*m~nD8jvR׭ff?نh 8.9tTym!10ÛKqcy7zdGnj= uLs !2ChfN0nLI% 0{ i (C1m9O~~$ cp9V'ZrNpgak0ѿ (z8+{VS?9CğivVrAr#6F`Y$4a##8kuOf9/Ӄ},ge X2n癤q7*d g|5Wa0a@۱˂ͼ[dHF,x,fgBaQ(29Y>܃/g90-d 8tR - C$x,[x9/Ӄ}, B=(Rg ܔq8~98m, v;5b>CvũGG*djgO%lvG~%E ~{6s:+cHPm$In}%QHSv@λ>rf;esLziGruX\0 \:@N% D*7-F xev/@ Tš8"9%dU1* ͍z. b{#M 2A(0!SCZ~2C`Q{!*S (a^s˂Nę#AzfV^@VsqfϠf*8Ugn=Y34y "gE3q Μ@{PwqfwUмDi 1&0\b˰1 !@G괒Q3i~ke i(U"]6<5NdFDF-H7D{KMFrR6Aϼ|H+^iCvb́XJ]g L"Hq.焁[C xLho^Ʃ>?IJyq:ҎSbDX%NӰO{ rVƳf\+;ͬ4A<%Q93O]h`7HͩrE9> "L@" i4p3P Ix@bF]D5Hz1Ä1loAyW@&g Pa |Z)R a ?my}!Ro:\$dѣt!d$aQmTJ{1yOEBՎZ?5P V,s-9q bNbTTb pRsK L P #t%gs25$9CB V[f`lƽTkǠDj~f60l1w|acґ(G`(D THBw!?lD3IY{wY/|W a-e߭T+4G51 S <:m~ӠR{iBq[UQKȑnclǠD!xzk&=Easwtr; Fvj0FMOb2$ _ 6 Laߵ;E;Nh9ދ.ڛZ7//7eA, E c$K PJ$/՝A1fb H)sDYń/z$.g|xw8.=,LH p!SrLE&FܧL%"U8PBk fh"[E(FF(zMJ~ݒL;avGq8~[sE‹{; -Irݧ*ôX#dIWD˔;Qvk]n ^T Qr 6oQSDNtmHY,H >v ʬDa,ܕ*B!`@mXsS bJ<`=IX3]y84/$zXOf5ovƚ;XXsOkdXYJw7sKɄjĊQ`e6Ay|,\PiS #6;zùIRiFGBPo L|1FcbKHcl!N!qPp/!-+V+`A"7Zri,(2SS*,,b|& MUA 2Y:!3!Ltu&*›y\aȕjr/oo۱لMJ߾-;kXt*1k@i96hUw@Hl Mr엁o'Υq/'z_<ߐVڳlbnfauIr+kM,T44Vxƀȇ1)*-m[h)0[ `CAa/(18ю)Q .F=5 ,W#*˅Q!̣L5`<o8ôg0 S].R_;HVgbHlÔbd*1r[*k[*d ~<PjQUyb01cr`i/$gI9=زI&\nMj9 +Qk0`d ^;9:m *:Z}^ӈ&J&r0g)t֊AV iaY{ҧ 'Gylď?oV,}{s0jNx^jc$A!PC5Ca͉юWZh4k3fNŨ((be$#\ D2EzHהl6)K3zbADḮha` Gfa͉]O-Sa K].~-0)`ug5U;obrln جHYj+tQ3ƱdM,A `N6JX;X"eVX"V/`F]Eخ ZP8 E)2N2깞:T~鸩>&pg%̯U^(fYn FIn-$|NUajxPA>uiRPNM_RJ%*}VTڲ(~![U޵_xr&ݡ-HXB\ AYR@!֩ gUT a<6RX6f|*qkՆz}_~{OvTn/iҦ<)=.thzD3vЅ8M_aڙ*`C-"\Ct ޻YK^<J\hlgOՃٰkMn$eD9 ;nV(DQk1FXy"7 ciѧ*mRef{B S+ |2%odHWcYT")5Q1YFaDdz<`>Z|Xt~nlzbo74Ya99ux~<N|] ivIݨt+L)GHowB̃8>@-ׄ_݄klؔwtP=4A9pΐ>-8a(k4Q&o(NiK7(G~OUUOh_|F[7_ Uc -nlgNZ>y ,QhFCj&˹vxV Y;i;&t1 ;H-|.pزbc#gҞCpZ#)WpJn #/Ikua9tʑf1 7L6Xi~S۫~nW2Ǜ4C/\=o<7apZ1.a"`ԁaH'TR_-py bS$@ܛcKG1B̻g Ŧp #($pK~X]95 _adaWklq“S;!(+tj4{vTE_f47:3Qְ$ϫ8)R 詧)&#D`aּEeϱkAJ[vߪ]nxX$uMFWI,%Uѯ9 b0?}[9f3ZA C)|_*!5Z')/lt{*ū(8sat1P(,kJtBu^*$(1.UtHd`ܛ~]T_NY8e5$}$;]Q62EfkN)0J._7wMSp>mb4@p ()d2)tÏqX#2`ȥ {< 5)W7i|A2ղɳloUգkwyJrmm'|`&%q鋵p":+MSIJ?Fd(˃V5׶gdk!VlAwə8nII/IFFm½mUEkdlx⺝mvў0 xO8Eqj *kH%G䲁(|g(׊ < S-z`&%Ȕ5>>z?Ed8!@` {qhH-B]ThXF|0>j"oEw: pP_\~>\Nak-,%XX҆UyCVl`'pl翆R* 7њ±L[&[)5X]WIe-( ?aT VFC؏Ds ;ҧ%MRh Ʊv L*>DdaxTJW/~iont%O~6ot[Dp">;K'ӇI΍wG뛐[o4~Ύ1XE<` 7vlHۣҧlƊCW|e}`s%OtʍcK=\['@F%wJ0nڟvca߶RaI.Fn}9?2$S;HaH2haW,wj`X' ogMt;^Zi;g{:FFz(޼9G#&!@SгR/ \S^G6I|,zg:>? ՠZ},j!FJVY*Bs <[K++jq# b#U"}PYC1=wFHq{^"~:ZoS7k~.){ %tlLXt< Di)#AW\~M8N\T,2eq B!d_6Mt$a$y#mzaY#\uH9<;@,}>96t>X%&(M93FBWE k'g%OS\VVL`ʕ_,ugNcqvP&ɞ׍ Bio 9#S-հ>iR ڟ`Q)w@3&hl6P͑%qe D4nK$%9bӀ@F&!m_JoḊTܞ\kdlRuKMµR e .3LB|,8I_H{ҧ j)71fRP 0ސBeHl0t:4/P^ 9l!=-4OM[lN$h&qJ~Ь@yۼ6VKqq\qhBSla9DtSCL!_@#͗D#6/- ^S`RLH7XG?4|6r03HK*NtTާ:`8+ZrX&a85N2@q{riF5%iU.R BEhM^.᫺D!m^J D fނY L*+n Wɷ䧚|jn%DJn骐)|{o1ː4r>O([Y3Xɔ,!"4 n 4$`o56zzΝaY˷yO}  ,9iP2.:j/Ɵ ͉]}4yPK XE픱QD"^O^PzY͋ݼbTY'H"eWQHsnmYc?4/Rv54*>yrkyQgǫiq+پgcq}U184=k =_g)_\~yr {WYyYsz{C Tt8G3Ruo=ͬ)/uZ#whNqkB9G ~hǼ:1bۙvieBj78E׎9}&:iSuu+&ϓ>zK%jh#BrG` ;`UP$l:!yBΗ:X BQ3"Rs$hW1zZAyBƗPu8.K˘힞>x%1WWK;KJүΖŝ,$lI ZYVOJJ2}u|Sqgy=O+i_-ŝ&0}uĈwV۹¶[ڕkFے޷*dny-CZnbL3_=\@ 91Gx7_zKߛo{xaVt3.p7'kփu/#1"s.i~37H˾tBsƥw/}́jZTX ޤ !EeY|Ta)6+ Qep>3nSc cXsA% 5DŃPM 9!i~@|mH ClX?B%B3213 gcb1z 3196 20323 x\Yu~=PGT/UI&pLƃ2ΆcPqk-$ q$gRi|:s[O]-@4 Q ['gofUy` ڢql@c- t*eY>[ _eB"KUU?ok;.z>hOW^PGPbs˚⺪zkhY!jgǮar=Y`N~ B4gRV1 o?N^_$D^ȍ<"d"tyry4(0Y #]kF&Su3gDŽ n̵|J 12%,#DZ*e_a4Μ4y.mo547N~atflIKRhHH>RX#L t"xo[WG1`)! &irBA4udR>bMt1hv5{Q|i}9xNxYF3&Ȯ-&q#keD^&vh>UgeϿ];, ½+`0بi!Qd;iL=~Q`n+.WP~fv^ڡ)<]MfF{?n=ȉcTbAS݊Oז Y[߫ԇ™NYyǹɧ8٨e=H ղHcxN|#A,ν2-'u*m 98pf }YL`!yފs`iz '4m絫Ѯ{w{i24yDeu-+1~*bJ&Y,Lu\}˾{.\3lmBG$˯VkR>"[+ޫL(c-'W;N3o" ql$ΫKvq. ˢoou]!5Lݥێ+TStFQɤں׻]8f>*iXǹf[krnU j{( -mʑ8ZA>mG~=}Z<~%ދ~;E0BItDa#>m7ɍ(W7#d=4ȡf޳JCXdu7mUT(8Esz  )܁v69%l"!lPJ˱9{ < gfK!J5 F6J+E:wʒWCWL"X8v%TGߗ1/2t%,}Qgc$'XkAĽG-s8G_gm5Xm2PR'sө*"XuVX ,sƄ-%$<6}!d$*C%uةΈv +!4ʺk;^-3F-XEJ{{Ž*Έ+ +H:"s4?sj8v͸ds>GbeV:L_i1P\GxbsOyqvyEع;XRŝzi$tjoj1l|=!^r700eHRbskGE!9S",퇩qDvohwLhL2$La7߲0xSnM-l+=?>25jM7iIȲ)Ņ<%(%fx`3Qbg+ϨT%ntXg˫hPREQ@šTW(>sR.ѫ^UpI,F3/EƟzڀר 0~w/'M!M4f HjE6q^tuV=no ("E L1ȽuiНZ`W'JEI~*~?xNozi:'#b,S7r>@Aѵ},tG]91ψi,-mfQq fjݐSIIBUO._q)m}\>% $c6:64?h*Uz>ϛJJR''&JB246 gcb1z 232 297 x%Mr FsR4܄-,32hs'^|~~?|\uǵ|>O;hK\J')U3V3.0&A)ϩǾA@67zg ^TSo|J0r!0`Sx=@(N8I}.sZӐmۧOEwLbGuV^i bڧРh-\I }"p_B328 gcb1z 314 449 xuKN08Hi+! 7p ؙp9۸z_!zJjK i]=357<{kHrGT)J_)n zF;{NJ=&ڹ.z9d7٬TZ6F5 OC U>Nu(`"B=|/\fE eT0n}XjcVSsAʳ tSlpjjeo-ZDHBz|P;h!;EwfRӷ{gE,ʫ?ݕBEpython-defaults-debian/.bzr/repository/packs/4a0ef7bf2dcf66bb44be8e98d304c0b3.pack0000644000000000000000000015461312442272363024241 0ustar Bazaar pack format 1 (introduced in 0.18) B1663 gcb1z 1647 3500 xVM$Y,klXx 4Y; QqqpË/"*[W&P܋K] ?΅ /3z>]XY"n{ϹúEh ׺bQ ,/޵0_AtnU1T m|q DpŶq|)h;˚)-0k`z៲2@f^)sF'DIJWU_PF1<)<cYGNYƵxfoןEET֍5zVc,ȋYA6~fDžNb)Ԝ:%B1jK/ #L\ H7S5T{WuV1%$z~Q&觿Û^y~)ي4X09/ycuƔFF ǎ_x9-Lҡҽ_o(=m3ĶT@nKzIN՛UU0L8݆ 3J"^j~>~Qs6?N?v]@pu@%ԌhEYX45ܫ"BqY]-! C(SE Tk;B?hb{+t:jN_LbZr*&"eFµX0^0f,3ўHׄoS홇4n4bZ׷IԆsM%K;,r!p[zs*!ތvV,<~Z~sNhTd{[/"k}߼>Y`H/27o:֯ƴVc%&X_yU@0TBd5zѵ-Wo=C5A ,n_}J&3NXKC;[rX̕bٙz'ln/#8gwvd\fe簡`2; S3q4z]/|ף{ƙ$[ӵx0wZ $MIT&MJk-[W_{)O8x?B783 gcb1z 768 1406 xT;Fw2&438LPj8#G+8-| Y؀:7 ${7y.r:?vg5W[WǷx^dLsWa\mXEV :*V e2cwuoerUy$Ihsp6DjN9X=tU.f8|)8>m7(uaG#F FQu殍@g"I)ې8`,Uvo>xqa>=="/x)e;{_X͎-&N1RS:4A&:;n>M;W!DM4p i],̽hC1`j8 zӍ}ǧOw-iJaQ|O֕8ʳ`$5(-frh RmPW>?r,I9FGI ,Ħʖv\ڭQTuʷ9N4N Ba0!>\ȾD>d.u]a$TFQJRVRo p ^.AŰ蔶eBst(tJllb@Qk츼wCl=(OP-\NC 8TT*dlJN%#E|äBN׺9TRڨ1hfZ8$ ( 8L Ci¾-};z`JGlH^oܶB13334 gcb1z 13316 53571 xŽkKvs|WO186L13da@q]{{#PQvP"%#?@| GeɊP8?ŸFHT[サwc\ӫzVZYuY|qr6tw}JopmUG7&鋟&`6c~ܣ&F/7DzTО"}_nΒDǭ)ɤ$r&)[5 6j'm9olvg`v*cV1uz/ɌF3fhdgmu'mՁeɄtv㣕!F)1%d/vxJ5kvGGy>_¼ٲ,ni15pqyC*@AFHڲX,*&OafR4=2rݿv7)kӺ.֌D q.%d3___/f۬g׫ȾI4q: 5eJ/go$Gbnfo79NGo7o-}ZwᲽG3k+lZ-7Sll.4JBHQd)S)";<4 @i2=:^{!7D]\Yh⏪ %9c7Nr4LR^2.JDg9:($TDiSLr@޴b$eK;})lFx-YkY Th 4[A/O}Nqd]yӤ5*])2'"M;Ue"X#ssdU<6)m B9ruFi UeRNS m'YI)ƄdEtQ@DBhzgH:Ҭlh^lRWPIz[:&2FڤlCl.\I#b:O `'0#+~ɎwsL$l0 ن7`HH(ԑ0S̾\#0 1As]yC~r!>g%lJ9 2*ʔ:xg)`qf2G?4`IF8 RHћMy?<2 W~xiŒP@Dboz<͢ \J[4X2I\ 1/r" E F ƐC»%bmLE\g e Wx r56' S@ed?!d.x=%C̦&!SV\$U~~<'euZXE1O8LNnXTcНSȃ;!딐qF%NgOIõCygE:;̧,'1 aG[?Y6="Q0aqDk!FŹLF@O½ %枇[ Zhdn9-)4Vp TΏFrx/|\ R/Z Is{=/j/}瀗 a $]^T.ʫY^8Bek< K$2#,#(v9z`j ubлBcImMYZ!@QW\\B@w t)sk2]hHr|u^qf/u!#5u:c5pߙJ OY I֠at$uR W9;.ԅTAר']gg@_BOj%jtT̃jZ!7dJ24aӚ{hyls_GNGǏ>^M4HBFd"ZA=Fsc 'whE#i]Θ5z~sHS:h +'n= 8aM/Rm':]N`w`|t׵eu/DVg*/ʷ z] kyGz][boN[}#ۆ׽Ze?86j"Uiu#JeǭnM߹ōLכDrKȖ+7DJ_vH<:iZ o3&LnwqmD=Acks(i\=R]L~5v3^<BiCvϦ3 dr;R4*-UQܲijpIY"Eg:j/me'g0 ,4 5&*x97;NĊ!N.Gڟ>޵Hto~`r͎Gΰg?g)m--l 8 F "0=v084qI i빵Daɪq"g7ntz6ZFD."URE@ pK0,lF7!? 9 dFxp1\X0oӕ$ "To;[smODYhyǾv5XN P%K.BB$U. mc+.nݱe)@ )3$tR G}-͝YhWY[{+J)uv :s`"yPSGJGIY$ ~ J4+a!]%EWi47NI\b2|I1S.K0 cPZ8Zx׾ksXϰ~X+XԸ^8Zeu\nXk8$֪3_:&ћV) qKYZ4oZ ^8Zek=tOӴtVyX'YSCmTAPHHDdY\4Y{4zxx0ύ: OKL$EQȑ#OxDG+ cڥዽeC9abµCԗ4#AC^(# ENWk˩Lo-}ha-0,/*t1f{ג]rmU: <@Fd\q*eƐTIg%zst^iK[Hx)9:j ZJ7Mgzh"W2LFZq).WQ/p/?_[ &Ro}DFPL2T H2yb^M߶r-q7eaQU.3 "41 /$6oF#tFurʳdb nsfoʙ⶯ܿ\Ɖoj?K}s]VW}lG-GWnjptGOۓ|l눩6˾Z (=;!t 덾n>[M0Rc/ɓZA&#r6d^q_({!gv\Fv8WE()KZҗ#\Z/ohdY+t6NNK/Omv]s[]Q,8 s&86 \!oCti]mtgℤ{0c(mRlKhհ9ӳdhhoiWEZVIFG͕'T 6$Qp٘ќ{>>3Uvގ((RuNgxDvHù~Baist܊FkWF-B3љs9J .cZE[ͰO;{6 LV ,yiM 'B$IVva)YػcR ,;q_mIQ 2wxxXV.(v]J$[[L8*V  HDqޗ3ܓ1Z]I8.gYC+ RYј 54 MjB:>h -ijkrdM㦻-%4I_o2f\*BXBRAsMQ?lڪ*EN[uR3&I,! 1PDm//ŧ7v{RwOCTTa@{㰝'َ۫ӁFnebH#³JZR9+Geqr@X'm +/%_.qo歹+9SJBeJ ,5N!a+UAPGYa.'he'J"]I!d5[.,7h.&FU^T᠃Y&;BGɖv;.`b{]yQVJ9'x H5Jw~k{s:U&4<RoFN oaJd؃HȰ!gܒqeVl(P tuRިY>_ٔ)%0P/I%p$΄?-ǗbnKg2Kf­\^)n$gsӦ?փѳk-)~lb0崟Y^3N#-+gfQ:[PsR][~6iW ١ru<<dY^6K.3<7<1P[gCyK<N[}ZѦ}SaOo8]%o1?o^?ag&~5W׬KcÀI8t12dˉ OfmyYnU֟𯗻_|weB |>[9ryBL6$%BKJXy#y}|MJmzqxe| &YՃb(+tr BDv8eR" rΞ&ńqgG)" /vrFJk5t﬌'-[J!7 4J|/H=p*@BQ& \! ~\O ZTxçk쬍(| ^P;1lj6f}Ұr|e-a1kg {HY8H*i*Yw'зta!J8ȣzko]!KM(;hQ^@()]vpxS+/Jа,b3LdH5Npwʦ Yb@Vk&d5 Lʫ qT`Y^JV:ӀrҫAM8}hH \%ftVbwlwXQ$暄Ey8&C4q^ϫ E.?o EFh:oq -62&4I"PddDG"2YrEݰnp e|*n);fe{p | P A)]/}˲en>jFmC"N-[[1$K`2g'v x2Bh <;5ѡJ+^9BPSNZ< >!8o{]]rս)0,}:,WWj():(]a϶*`Ǔ&#,r>.Sx/|ts) 0B#wK!݄ߪu@zqD-9 )GK.Nm02< É/Qd9n7ً<2ڊYo*#R)[Hcܬ\BJJѼvJwq|'f|_o1 =[-5fo38,bll(rHD3~N myPr Z1 gto z=PN({[;J]-p!9ٛZɝ%y-3TB圳1h< 5 j9&w#VT_nqWJm\m"c\TF O,{댌5%0,5܈mZ>3M8Z\ݳB]T+DOlR pU5#؀٠1Yj>kL)BBLGy^{6bov,3ji. 5'\JdnTy x)_ ԪgI 6ro^]/R\_Ul y30r\ !H\Ժr˖^1%EK$kd@.>^~OȻ~=ɲ =-U(潅FdarA #p8ԙ}İnz}Xe+M`E)C;IWQŃwڪWqQ^Z.7-ZG NsJ7^$9M.2lr4)dE<(I#[oiH^h+ɽ~bõm;K \ʣ dx=RHp*S4bvMQX#e{5Ɛj?9%~&Z*R&Քjnl$&9>ULs&\r'Er1*Lִ,ǀ.ۧhVK8x(r*S:֛$ei]]B4Keɕ(B,RC')'r^t\g!=+!}/3p7 EE:i?Zsba8Fyr%( MwΊ/ x)j{?κ@'I^nq˙ G5^rQ2jBnW@~N о)z.`<5LmA(Sᖼk:І)v.vPv;zf{2-/>X9P,n~?b3Y HLfD C!3LڱDuȍuiUvqX/:nOHr粂0 @˥'MlC^!3yiM5 Hk CIoX&`BR kw6ܖW#Q[Z{ZgVE]K#7#:H".V_ 턴mҾ,ͮm=PuqδuES}oHT^q+SJ߫uS}o}o]D)|5ۺ"_*aߚW^uwrΒ䔦wͮvn\/V&~1yg4ˀSָEA)QDI#1}wn|x6;b3~&yTHCQ;*p9hO{i&moWI]mR֝Y\mr֝i[LmSʩugewƧ=vkYEqLmZwVws-~oۮtX<ՉfUˣǞ:tnM_JՀƘrJrfTP*HqHpZGH4omݸNIf$-LRo7I'heTgk d:+(B'VZ2 E=i`zɠV6Ie>ܽ {1Ei*3L9$nJ`AճݪU'IeQ6;&I/@Uns|Ԕ\NkAk&/{EM stΨZFHFN maTJuxkh֜6~|gR@4YH4AJ ;mMh,;?^Ck2GCP3kƼVo#[?ҍ;n|]le9ʖrr403s*rSH,~<_ѷmҷ4%=:fsx{5m$l8QD/3traf}7/@~;$a@f1Vs 1Zcabur$e#ɫjf OM.1X+ pSʤO2rwGBT /n~G{Ç8FIɑ*!bw}qSw>.1&\݆M`kH0R lȓu tbIsXjSA=_"c7w륹f 1PZ2"Td"J??{>Ϟ~PX6.vZ/65ZeLQw-@FAh$T3G@OwUoƔCZJ1c =2ۿgn;oۨ1PwQRdGؠ (%sn g*'0Mo$S:dQJMxCĨ#Ty(o>껂q ~RUf3܄ 0N$力)/KZLRBhեGy}63_--: WfG>o}?/3p3RK_VS*sY%o'++U}{?@]o?~3})]),(*/,!ReS[o~ۿ>nntu~ΫMr\)cHD[¡q90ƃQޯ7>@ڟG2ZVTEJ  6F.A|8`PJo_"JsO; $t>KkQ1`2hv#%h/7'"vzO ޱ4R7 5F nU&X8Уjj>8|QXfyTtY.haq:Zomۏ6|n̏u͂<\*ּ -/6UU RP6gYf?-$qx[?/ܿTElӦFDs`?,/r9. Fm .D9O.}ſSՈ<gQ)SPqxêl7pb_?Wr0r\Ej67X7j6\7JE Ù.#ݰԧIAX"k_?pg0$ =\O M!SQewo_NHRn7-{irgiGMGz5 q,P>l4A)$_/Ce7.grH׋)u2 ,D*bXq1` 0C;.=cy 1P#6z : '6ruD?OW~@/T c3iAUҍH9A6bhlh4NJ_͏}?|+*=9zs5PC$erFA, "H]  yN]Y$+ 5 6* &#,]¬BA±ބŵ!~\ 4:̳"< @бCweJ)r.I7d-8 `FJ(0KiQNj6y꛲奟O>__~O:\!zKҟe͚Գ/(BC3pR( )"FX=h_4[A\!M8ɸbt~S_.1`~Q;h?t\=8P+s;ۡBp)42 p#~=?QQ'\eU'<*rgšx6׺NB39839 gcb1z 39820 145219 x $u&D,A$zvUUuwwaf==;=G̎zSUYrlѤÒ&TRvfPx)TEA&M A۔{#]`;3~w$:Ŏu(r{ͮu['Ғe=emv:5h7a k]VkqN_|:VnG։Y׏ Гe+vn8\Cȵhk90NކыEEZеu39Cz,Skm[R*5+fd=]*JKK^[xw9_w;r| YzێƁ'6p͹ o7Neۘ@$ (7mm_/|d _j;F:j:xQVvWby@n"x036oikYU 5O-[x%'7emM֨ V˒,CP37A ɞ(n$'`7)>E/ Aq:j7*ZIlqQ3 &p{"w"']nwc`Lޭ7n^ ?e ;] X@GaZx.@3Dc;bIY0FC]$!_$4K@ dq[d_T6ԑܚx˛ YtHkm;t Z2~B7rdS)S'HkZy~ۏ"9/\i`dGa@M@=9hIV]k"ׁݯYm7f ڕ9txI͵[O4( jk03`.ޗa]'xm" nq;QֺP9x FI߭n8|O}ࡸ[q7\*Խ$Haf#4w@xWPpA Pnr@S/ځ7Bz8jzSLX:!*lİ\U{î 0Z`\jzeg>d|d/HbxNbITT_k4l*PxOD0S2.;nx7|^)b[AG>Pr),mVz7ڒ DJ= I]cO 1`Zv5BBvI@ve}&!Wbyz񰍿@ kI=X#=Ý@ 틫/'Z:@~S}JAÐY,%čPӈp4a/)Py.lYQ@+"-kJ:L 3wFivRݠTe PTJZ![ 2Y2NC=^b/i 2yZR/uy-nٶL.ߨ t a0T,ĞLtˆv| SlP3 P^7f8bl$!I4C;[Yuxgfm Off*ōr|۬bg(D2KSת i( ֥&^krYk̔*z%."8( "bZQ^ȡYjӭ7kMxR,gLwml6QCXqXUrs筒 2 (nwGfov\)6nIfeŋlԹदqz/o8#': xFG>iTxDtA@jH|.ZݎaCL&)Pƍ(8 ,୲xJ=t"$9·vI>`lQ%96OMoec Y HD\4  pjYTwjt;B3BFbu=H4If"#eО)"uMu\@oC?ΎINL*{kI=3>r"4;; -Lt ' T 4x8!d7zE%a!"h^cdtf2nw]:eپ,7v@{QmTui-R.m(wϊI,@*#ZYN`,F;|q~Mkg N3 -$$> 6R9* !!0a$ENl]YFm,(%hǎn+ǻ2`ЛKPכ!֝KmaC*%^4cղ2ӱZkFZ?Dp^ƙpYBoqHݘ[m$ J_u;Blclm%zӶ,S]չnZ)HAy餠xHvwFM_lBl , *J%v͐h S$yjFZԬ5yTq48h?R__B9"ny@t(hyQ}Lh WD;n-a$7%,9;#'> @m-mCgeSMySX ;G8<#7l;#D _T?Gqr4>0Z$!OMũQYhl^Uz"ûQuZ0fa(+* JmSgS XCL]L-1k *SGL;f(*T6;%ݓ-b,j qJ$fkTsʡe; /zW Dwp>""}\8a8'aSa'H[ucU⣵@2R;R;lpb:``d'AGTOWbbBhȂ;]Tg9 աrIQAgLrytDZ~ (j0<: 唛[OK* dD'O QPkj ҭ&B9b0SdN9Q@k6-Z -F'k"?-Y\С">^`a3]tGgPfKR9r ?M+lЎbjL[m9*|zp^`Ym1cC#`%Ƥ8ɻS g)㽘>pOq0/& !RY'GfVTH$<3J%+5ԙfl׾'T41W{Hް- R6H4/X eE"J)( Y(1p/TA>_kjju7F\{^ˀ`P 8i-O&bna*Bh^zQ+G˨59NaRv1eu日8 &$3]ac Ȥ#e+8> R̅/Y5dv`P+DԵBDbQm4fZ[ *i=C9?}[% X'+k]t4J?wU مCNB7MS-e x̮ SA>N:v@61<קKImJg8+HF*uIf/bĶnhˁ(<[ \aa2󠶮ؽs~FX:!-cs_ZbhOL!5`e (JIgi'V<#]!$Y$5k1q"M ]2HйbLB?Es{02bZ2]#]6#, H?"[S; ,p 4e)pr n]v[ʃPYo3{BO3hȴէ9̘`!b -(Y|{̩<rO" 5JEAN+Uz6 CԱځI2AZ-[LQpr /p"Ja3m?$b҆n7@1C?VO]Ru)c`.@DW~OؕYɶ,%P' I[ڸWMK[OÐꘀjۇ"]}^+@#,6b`Zhy!lYW;n5@G&%w$ i |;!܉|İJCt̷K\&U,1l;10L+Nc-bF G@bS&/3>{}eP}V/e6R f'@9\:ld쇴XQ:UfU rbQU:GAf^鉭[;{BZ2iIAʀm(F?E%*J7>l#2Шѷhvn yyȀR8^x^4`L 03,>d\xrD0qbu'S.(+5z\B9ʬ\ɼ@?k|{i2jyDO!nO'qR{/p:a<ОVcB"G^!]i֘sޡƃ^~3sY`)וY \׷Id8O2Dډٵ3w֫% uەO7y٧6f,in3 $f"g^"n `Qp@܍(ϛ"ܺmތӕt&?EqC#_F [v&⇁%a+?Š@CH|+*#W:-YW(Z#(9Ǧ$"cHz48aH<\PTyB>iB+(|RncYf06T!5BS4I0&Ed'nT3H7F~Fƫ Mr,l c 90#W\ThNF {,B^gA,&-xe1{~c[^o@o7[ GE4q4Z$Bg`mE' Zo/cPH,lM H(4@ŸudN.řvexkz4Cic:Ƞ]^d Ѭf"RE瑝 .l.WkfBav2BZ #3On&2:Chplɳ,߬)ot8/;hw{0RTd TMu9)pf#ڿ1QpXDoLbR2]*񋔽FX==5Z.qyRӂ+ VX3mxVǎqެώ2SlېXj 0%JC5ͪ*wBd 0~_85/Qm$"y_9J:oԟpb=E~sdgS *q 1N%fqs meOPb8QWC,iR7U^et^u層 C*Gu2>ęEkJNMdvrV͎YL<ʜ` `<0+gt-"x,PHQ6~)] hl&cF:ʪmIH-ސl#8V P T6~ofy eOC s, 0Z qv^'d.Q,iŬcΪ5Juq7y5oa[(]IJhU$cɩKc QSpo Z W6% T5sM$0B,R"t@cPs5R2y,6nE!yrO WtN6i'PII',e'1s k}أjc2E'dة^7c E-=Kkc74S.L &-qHpt\s@;Brn^ru>dqj)=tTZ-Vx,wc*z PcWB PXmlĢPĈ3)I@X_:M#>q.|U,NsSVEzlD*KBU"%m6vE 4Jg)\*FBZa4ӐS;#xHP!@DCoD\>LMQo ZXaMbdF!zQi2f]Ȍ9P%jgG( {D$*m_k֛Y%gMa9!! dʐ ҉7'KfpzT[y̒J^//NoZmbqBYȂ%59{!˩D+CC@ 8(e`ZBF^&`u] m;^lbb"VԖ,Y3n`0ewp)p䶽.(ɯѨOKvptY5. wqJYKD:Q{kat۝Ua{8`DBQ{k/lkì'fj x!kۡYFYrF; WtˬrԙvVvpDsi(q뱓fy-G>ckcAb2݅dteM5Y4E#mٲŘ+E() vZatۓLNe2sdz,Z'P1+ѵ87Ql_$ms /F3i7E|hfdstRՒ0SHBFqum\tX+3 1Ϝ5Wk#T%&R[n g۫}}}ث@VϮW*U3I@a' {dT2?x]%utdPWyE+?\4c9<7Xz:. a:+T\嘪bHvw{Hplj^jV= pj&Qs"sUuS\dy@}dŅѸ= [9_"Ѭxպ]SZ"i2} ;>dtS#M%wg^Pi^8Yfxr \n,\\dg;VcXṋo+*a# [Li̠baC踾^+0w#2He̎¾$eFQ./Ռ2!lcNÊXZP(X3uBh#:Pa,Y%6%]]*Y}XxИ[HH:C\ ۗ6Qy A/~_K+7$^T\2=rXoiBGD> ;"l4qB->H1tT M ]jG@ZYlS,+No!1fEw51+k%]] <7K'ٓ1c魧Pfm%41+k5ٹ YLq@ hLhWF2jPEYThQ0M%@mMCcѳgFuj*+ù$ #5NilĈ RR$A-/lZu3<ͿlFmy(%fbbS6# ;#4+w|l(l+Q&jQ+5GtɏY&Q̣팼iTr BM쎥kύ;w ;jqh%04{z.F:]g%Zdq$sm&E h1}©"X4VM3-Bfnݧ_!48xʐQ* ˀlU行@iF>Uzug븨x4ʫBQ$5QF2CeA=]a9KU-4硧-@*-f4bWz J&ő܂py 3i _XB9+=c~cZsPꆙJ꞊㒡0>f׷Ecx`ąT\`Y]CO6gч IU VߕȻǪM7 $2Vۧ'9TBۺrYN ;n^=GFCߑ(p]u|y=Ŝ\%b.pN)^,"k;8ڙC7ҀxTjEȱOzzڭ ةCߗ+GlD%gQ󰥆X[k6 [DAJ xlGYg, q;4҆>{ ag#_GNz޹ T}Eֿq}o{_z?3t# b[0(ٷ? 0d#-JR[x/f뚳 whk!iJxmYK'ዡ&v<֣V"q giOQjcbR}Yo̾yB؜Nk?KUA%>[RGt#qV\YQDh4c7 VX(<\NjfO8#*?u"j&nPy!FDY Q" ɻIet"oa vC; -<(nL*K,–4`q@aa,U3)ZT"V@M2xt8vq6Ld(ʟ-\oU]Xm-d =4&PY f?':ZF0PQ;ƝC(D&K2>Z,^pR4jvuJVN;:BR][¤T)PNuC {T8 i aZ[Հ6JUNߔat+ G ѺŘL,ȖY]YDj#n/hj-i>ڸTB= ʭ:@.5$BQerf>&t Ŋ=mA0G`hKDOpa Z+@۪־YZ@ O  Gx͔ CEuA*y+Ka!=U4}^U%@CRyT aT:bp+abE nJ.rc*I7( )O9 I]!U~E98çlIH:ZHbg])VCt: I/ Z }+e ÊCOq1]zY+L1sݴvZI:KI XZT:IZKue! Q5eC \"QI [̌.E}̭}SLۺLkb"ǔJ-,Wm:e{nߺѫ~7A*L*g3%&Jya5^Q$@M#k%ВG#@;7=Qpϔ)^]/W 0:bkvy-oPB^J]SuWUAޚb t&x%w"vV`dtuԊQX1 u6л631.]4(Ib;4{Rk dƊKk?:USVY+a٫,+d;2Na ge=C,! T#wOeNt( *&A>0SHR4?g.)k efJA%btOg+㦲UJy# o`daP\TkF(ly1F\n Vx 61X͖["OiD-`kҡx  ײM洐7F"Q-7ˍf4c9pj &ȗ 8c Xy T(9\b42֐4Y1d$ 0mkةN,!(K9KidU)6x]aU22E>K/ʄh,fh0Rzԏ:,焔tbRӦ Rc;"&4_|ӬչyF;da0`A"!@lofuN X:P9fkǯ j_(+1qrH,"n6mDcW6*Ƃ6 S x*U&2<)GydMQ#`͢aTGtӇ/4I-+یM뮈v^Q:FQ^ԾސN|:\<. TD}r&ZF&æjU\\kOo*/g^%Vd$y^J嵵Ť4aa5  tUC3w{S5Z'F^:uic4^UxG{ȗ"fCV{.vQ L%t fŬ7+kΪEfFĝ]VIDI/^3只ilm]H-IsbP3g[SIxd_ Z[_5"89DR SzqkkR4:z^nq'dnlP1֧b4`6Qu>=_?i˓?ݲ;02oXw`U*CT.• T[7/A,lU+}M;ܼv amolT˦ (2JAzliRzr\چ8uH,6y?R/'?N>rWU8t2*KW{sᅬ5&m,d*d^Pvb=JTǵWw2_^@vCK +簨]y׍g־V(`%~(5;ɣgt*,'!%zDxNIqy(/EXv! Z1y[~r**OhҚ|. Չ'>15+9@޵r~xEHP fcXb9^: ¨$.3_8'kg~A;u|fr&?[YL_ĆɾvBEuC :лZzm/*"FB1$C;lDNuad{E( K !-"Ꮥuoɣp}2q>DWr˓to{W7# 'wrEM߅ ]CNeٓr'\g23LO"$=|g%ߖ-;o[O@}LUFi'>( 2k6Lqbslu+ Cȿo޲> >j5OޟOpNǿ&4&kk9D&nBE$"E/ qePz^6fI뇿kM8LxJPޫZTLcr{kueNup,npV ںsSV`f!*ů cQit^(dH(7(pGk'j g2U4鯅b=͋B>\š+5yY $UL^8tX`BQRm蹉BWAeҜhgT9{ؕ3]L0TXo9] lIWQ}0$ BjAH} f۴jN^^+5IYRq]ؾ!􌹞yB㽋rL{)FGnnn 3nC]4Je>I%zFwOJ,pt"lHymM3`#I]y /Q4bϦ@3IZQ2K3Ea?a񏥐{f{]ᅢ5,P^CBmiZ#rSEkXFpx?duc?Ⱥ?d>w_2C坖l!9L?b0ɻ~-O?5ۿ~DɏwO#&o-riqOUM"[AXZYMltKIs_Mc_tu )]ZWlؘwiDÌOvy.cژ&Dn= < a4|AK2J$u9FĨ/,a6AW(za^ܪ3=Xm"-ɢhdY'tw*/}]ECcTZR@*YnImU|['%Kv9iӺaб-LIQ/ Zs/YT(%v`sBt\E)%Y4cB( OoDeIDvBnMƄ\ ~cEnH/aoLč ﲷUXע?+/Qk 4*E.>(>|\ lFTV 4JtP%rF/2peثB{U-vѳ9{qC.f.}⇌cYD@SA&wN8[CTfw!=ǩ^%j)mF= XL~S˱ooߔo2d?(%\S} zaqqoҕfh 7D(ʓXN%Y |<~0y#5^ۊ"]׌xuKIW;e!0%q y'gJO`i 1no%fn6)d~h 8¹ȔT$+vgToFnL)0NG2>Vt Mr)Ý#Ѯn$Gl_,'pTq҈0 Z g4!b20cV+.В`QB$|gK[*$jJI~m|`6?(B[_QF]i(,fM )%&Slm]n38mځoz.-o0~7nzu$9WcyXcIE}k&@uMfM2[] Ћ2v")Z~a=@y7mvTliPVNGkRgM*bXT7 BD8TFԅd@!peM;1O\e2'֋ל6k{Z-z[qG<)>Xdm$sr݄[df;&4LtC[!\=Wnf 47; B,eII2"0qcu~w 'uGCIˡiBS!\Z{SڹklM\MBrtm7Zm&i4C4~m FERsjSȪSV.eÃxUI9LXL>|">5c:}wn^PUt&vN%b8Gס+ōEs w[`50mHIjQCqT;G:qI}Ƽ7xKxtGӰ}Fy+/ 3{_K_kKJm0~b7LVDXjOʿcT?K<~qn _=%~wOpE @Ք?fc˯_:z2uNn_\~љOꞮ|i鍣-܂%?/}9ؾ_zbKdK\_YU琿>;iu07Px/4嬓s#xtr|3'NP_e]G'S>Stu}S9M(Yh9"[tlNg,dȥBD^0Wq^َʛ%Fh[0۞]:[Њ-?ʗZEO[xۅ_!_cP=nO5>!g[_7^xXqX0ćmw`-@qj E"`#LJ|iZsꎃ! vE:VGs.wQ0IU'G >^ΞjT\-pc!igIatGbC\^عyƭ|yK֍vo,[7kWwKWom\ֺ-߸i]ݹsyvk{w|]]޹y|cڴv7n\uusڽ{c_߹~yپ} 3kyڿy*mނ5,K7v_yMʍ[6nm1,͝kkk+lCsw΍븘K7܃? ֽ ;ksogry5\&ܠnm=7 }k[uimmo^`'x7e-at0c)&1`'O~{0vs9qe ( 2=⣠`%:}uȉ^:}=t M鷗@ {3|= Cp0:v&M:J~+ $R)A G= V{T(O䌦޺xuvr(1S3w];r(LLRl;o|i̚.bW8u^P*Dh%8͕*wo^fd.XO}$+N^ly:eYĐ|E'`XX;S=%G<ޅ^ZOG} =Cсp2UV@OײO>#ǣ:瞸3†] #XxVD#} yU`Cggv >Xˋ[b6e&6|CUG<:?Wך!}j*,BHC?{n۞$}]zY.PLo<<WNV J1,ddԌ7tSf]8o*o:fa'HB`YSúFX򼤎r7 R/o>d:S #ԁi?SvW- Y߆_3{r;\ҽ ;*C^ٳuPa׬bDZ]qIӵi@` .vS߁d{cL ]nH&[nJ}J W}n'co6:̐isܼO36@}΢,/ROkw`RGEF8f&;=h%Y+Yʼnx1-%%o!R~ K~PcHc|x?j7 }Kd*۫^,%| 2Vbb,B2p|146]#i-D0 d^!OB%8x-&sY޺`1܄E$(cp<qQQ`{CP6X*TVLyIc!ZIP2h#H G;A->tIX`ܹ.K Aễh0\; ꁊj C{bHٺiN(razcdqu K(iY?J.ks%U_fhW暆3E Y"t#+dnW Ar-Ѿsy1[\!&m_,ĊYVRt/A!q\6kN d.  Y_NT IH$j+Ylu"ϒυkv؎N|;ݨo#9" N7g/C%Q@Vd퉸VR ڪA#C"KQMF* JCg.x%{dW[t)Ѽg+X:%5?v-l辜],YR*7Xhd. 6XVk vixZ QQE?_v LTU U&JL5<8԰L7(-9R.l 2e[A rH?=/cc6lG;-^` n*^<ԥETø?EbKSϞ1*- ` /F r=9~򦊲bbo=ڗ'矿LuT@O\0ct7d,B3𭒁oonRBMiیbQĭi"@H\8yNQѾǨ1|f;bcoN) òO,&.׷*aɖj*Q^v3M-j, fzdOYx,{Z]o1u[HR9t$w{QN Iӊ#\[q8*ayEOɆ\ J0LUF!Vr-5bONƠ)@-"aPyx! @@HB8vws4hLzC T3hPKhUh ~ne"0Pf7q],c\lqcw=PV.Ax(4K VLs*jӱ4¶޳=+#q^զjJUO[[<_H6 "ĢA+ڇH9Z/ 49=?{?I6%S:d@t?IcP%:жcGSL5J3O+e"xފ%A#P?ឣ$3cLmav{bqwԢ!M6˘IŐ3IiaT] d}vsѻFhόӠN?F$b97nCXqŒ2vȀ?[/reG$Cl(F9Niʖ}RZ MD}!;:{q0Ls??i^?d3Dๆ)sA[B$Ȝ厩Շdn3 ƓgvOnܼ2;=eAb-~{:umYvǏl&9" GS,wYM:NRߎ@FyxS^{=pm+'S/M=Lf0%t?>ՑXex&fXO\>xT˟Px$N&"YHd%N^mPgRmzCJMENrlaR$)׽b~gΝ(1LL,e&-5g?N;c}j>LՕSɔ-^mP@mS g-mp1˒p);Bw ͖!t X2q,& Zdo ) K6Yeޜ 8_Imh*AX ULeOJ׌iww uag7: O{Uiw& NKˎtQdm?SɹN=}O0uˆCDGDJ揻)Xbu&.Pr6޷q(+OUfVqط[__sx}kkghm?e<H@E}laQ*(Q!+˘OfOC1fT1!sS۰Jm}6?2z./ίDtV ny펙(q͑1|>F G)6TTTz$䊰<݌@y ۝~2nN|gv|.Gx*iz"ZTrQQȿ:] HF2Bd ׊dwbDtQ~AB:c Q3b{Qٖ(p` !Lj.Ch2.oNJ,$` dc>@GPMB||Q L|kVM3J5*y,XGJ1a}He*3BQ !E͟J滌mf]p4ZUęx[N9h&'Y Nέ̩v%U}z`e,>MNHPN%_وʁ%c3--a3Du%05sJ>&?4cL]/ p:QYfYdSZO~K2*%2c/Z+D Inye`+/,'F}`vhuÄA69|P&cF4Stmeз\S2ܮzfwf4B 2]nyJel􊗚ȦCܠV3x[\&P1 ( p6onv5ópe婎 d4GØb$|jLVT.֬zUJV7BK%DLfi3ʁ;;~1>X &%bt0kgC*2~2'Z$[2n\n/q MCZF2i2eqEh43ao&[TU;72OqOwd} !Ҧ|`1uNtY2NQQuevfbb_(^՛4{ڡs/^S#.$+"fvz;~\bgA%tN=ε|\E}w.ă g kׇSprnU_< K8p~c3[iA ˙ϭU[v׀z$Mv ^6]ݾEλ},F5hc-ĵ^ܰ}8zF!ƃ5\m~MzC&#ܕѕ`\tP-^A~X ].%rnUYRsj#XM wcזqݕ'K[WdC/tSXRLU!F@| W,{qx0pxf7*oll|hqWJq_"Iq;C_7Ռύw`B7?LWa=/sSU^\ 4+u8zrfWōъ{ueZe `ĄTY}EsU(2\tRzSRMm(/4vW;9"UwbAق_bsy9^-0m8 8։q&-k%)8[(쉅o۩IG8!=E XcWݽ Qsu HUn7Za4/c |s–/$A}oȎ[ȉ0GÚ8}m`3k?*X.slbڦU˥bZ*[rVrtB<Т" M>T^oڇ9ʶ=^ 7IBpV :q=!g Aoc FpVMla|Dːàel hHh(vDNF;^_ED}#輀> e!T9[ޅ hqVG(KRm] -_ u /p,XtnUF}c0|#ҴhnO;܅{  ]#$ꗼ {e6e6s{WR[֯a*19iuD<xG@A\g/XTe:1;<'^֎ p/pD}HSw") d`}zQKHtd{45{n;is&L%^~ 3ol<ܪZѴIVP vVyesʬdGh%;#qoSwqݸ7YjN:Ou)Ѣ`ؖ6}DTE.8i SӦDCzǼ(4ROa} u!O2. v%b֑h-oR 9ǿ\3<'帠({lG2`Gfe>u@NG ! J$':#.a)4 PY-7C‚RFó!.(( qR]BՏ# rlDWe茞NsPIzC AV94XmWva[zOϤ/BcAX= ސȮk NJq+Giy;$e cCN V`Cur g6 &cЇ(&^`0"0X@JAױ!dz {/p Mm I:' Xh,4?{yJ%^u")vz6t+F^2R ~E 9uÒܔ0-@4Wb6$!WO4|HKY z\ bɒЭ"vH mB"JHRJ,$G0dEcccEv%˳vYt0n`i5$BBSRu %v(^%[p苾'vWLGm362b2&hBJ2#'UǦ?^h!Q.vDC-SJ+ oy\'n:B+Luq_T\rQ&m1 ϣS-h>p iaJhv2s̀LƦIJ``:-QBA<}&/.KS6ڄ1^8`a+"Y }H#AD?}[ldGzHiw^;nFسJd݇"9gH3ifd85ai}SnrqF@DZ<%ɓ& C.AO '/,\QjاN|_|N&2T Y$G>z!W'$x3QȱS`EUn wǠ򂺄~~5Dbh&;%6xX/@ khR:-^AopP +l7YdbpU4-k3>}in>"+t0DfA_]?37"pxZab&$ȸTA+WL(ua$hazJ@lN.rW*uoqyuymOޙ6x%{PYiF~-+)v9^8ddsRh X( ʐw^ЫIע] rދG 1}k|tJʢ%fp']*ֲ!JzUM>\ƒ145ƌsL0|S}1Xؓ{mT](6+?yx!`kˆ*2[*eůXIjH,TU_5ͅXmm"{{.Tх _!NdqSO±cEXҼCt~F6bѿ#uEi "^Ӛ['= 7qc .dMБh9 G 'QS7Ahs r{BUCry1W|tQ.5|x\[m{TC_?JvÂH?uc9W6p|΃w F`sL jg%H3THd&ܵ+}tdW5zyV!uɭYwF6{qʹST9/oe]Ԝ-4:'ًۥDf D1.(4ny!2ðL LMhpb>}AIQ3b+6ͪ5q]Ms c3A%.E I<3DQ]Ӡ`4h!IQ169Pth66('Qڸa9I;([Rx2V(m '84:! 2 pfpEIBθKQ]6j{9s.̳ tpgྊ B(x(``֌l~>QCQcіkRէ VUd']|8歗GZGpcZF1k;.2n@#1 4 I* bCK,l ɮ*xLW S )ڀJs[s3 O,ܼX f~/KTs1 Il<-a|pBX l9+[rWAH@W]Xg` K45 %7a] hcK\T a4kNm'c^6!.ՕTM49ñ =Rifei;|EL,Pgw`J$ӁcF5*0X?0Lr`yq}$O*]H %4  eG b@,)1Fc(hFdAu3aS;Q\^Q;6 bfFA5vOc/x8asp0oIG)DtR JŨFg2o/o. ޣjzJE(rWEJ'F 0JJ|C<?4 &}&-?Nrj:PQ`  {鳬(uXVڷym Ւy~#a7rZnYi:y3\/a?5C2n}!P z+Su, t:@fh'Ѡ)SU-:Y\davuѫ;y>( Hp?۽q ^h*C) fE{ ƕ>_$C8 : g{<=&XG`$ml[J @d;;]}Lҍ Mg}I iFO]1EH1ԄDEFxJыEM⅕ Dk FhUMA1a3%{w-[hzv+X1BL0AzMcZ0 fF# >eT[[td spF,ebJ{P W}ҜLvޡz+?F]%]Ct/֌ <59Pɺ!"Jh7D6=Qxb2"m)SEY#Rn%"l̶|R3U/ v-'R˶Y)8GԻuCN\)DT*R} 1I^GB6q1ܐKEf ˁlbLl6U.I?Tu~?$Fa^%e1MW!/9wMR'Y#&߯3w2=8#e:K0G]q[/y:AsD0;ë@aߘw9.ywf"; މ$r@n Cè`-g}v%<9E !EJ2he"xt!D54{NLB]Ҷ9v5[ i>w'oL|,|ƿo;a위8][j^J0*CN`3"v5zb^J^!*$e""$FMEOH0޾F̌Etہ}@yPF^ts _g“6QdfP 4z=&820JYPVggFMDYMfd"=ki ,`.>1 k%zuG.]B+6U.yʥ JE0x۽ZFo{ P%9vI:.*@ǦDx.]d+\;t` = Ef-X(}IAR$0/vx2Oy o|<Ĭ l֪6;%7(n~Jr0J?:,Pd8gL !vl8w@^]% p[1}oxڳ`h[bmȳ7gfCj Juh&$}ns`!JYI? 3^N]gn޼ mD^1}xq.Ag ?py- K@v:O/ ?tQ t?~jdNz^0v8E34BY.yJؤnD8=[ [ưC&&)3E~֬z #g:(TE\qmYgްhοK::sQ7s+jՎ:POX}, *{tLxa*`3tYތZ~p isǼy?X5.aqfg(1<"|%| -T)JWk:ߩ5i!87]aߐbCSqh F1I0pnf{+V)ipUK]v{VE%-@ Ic9cp\'V֩"ekd,sXr@aV|G 1|u~.rho[غm`GBA?Df#\5!W$V!yWI}:])W[ٕ&`QU @1#v<9 ]x_}}44ktJ <4$ȤU&=C[aWt2E+%Zoׄ6W)᭜ͮ4!-Tƈ,p1l&˖VAaY ˣg p` A'vB[b / 9kqO.|JZ3.õn҄#nV^H&' 2]%xАfeaat%-`!X/-,xzZe$6#*e]Ae=\3 *E[,cJ Cr{;Ài^Mba噧]D~7Z6!)]IPHa@$b.Zvĝ_%;aJ{$(Of73tr.Hl,;Z$!i)ve 1!̔Q0u'4m2޵Nܤ|@ܹ*qsR<15!+ rH9f@ƞWzn:4~{EgW3 x ?pKOS< gb[TŌ}`x}~ڿ>Ebqup%WAaefA*Ք 39J,{̌ զF=W-[Aזrˇm7[z:Gӡ;D4: D_R_|,>T7}ֹfץ# (JSv:bժ\-)O7. MO}mm e/Is:niONI=FޱIt\2ud&PQ Ny<9 ɡ/jIb_$ L`>0kOK# PI [m Lbؘy)*93)]@|T-b:;vO}ynKOwIp.V7rEC|Uµ LWM*eo\H4ӥ@vBN8W- IĦa g?D{F6bK's;bOSPOZGwxuj/)at1Zr"<TJcPxq.TYyltrN#1VR4+IY PȘt=7Wo {WʾO+C x|`@2FI@ hR6 ztPjs%$j4܃.sG3A]\AҘ򺳼ckB4PN).Pツy;BUO1J"hETr GUkU<nxZ.xsX`~Fb&/ a68]!#/"ocB(8Vs!=8¬8{P&}8z5\/;p|ِ]U $;Ĺc+Dkl< Fl5~{:&brpEhRhi;zxmr} ¡7 y] 7 ^4^OקUtd cU'β%nb͈{%{5iQ=S6V̬4 FMK lܥtay:CvJeU7{VؗE-aa2qF#&ǵ@"x~\|1bwba jh<տCU剜QW &awֵqM9Ѣv͌p &\-p xWcكbתmiFI YH#e& A70mci#\ˡ,JLQßleVC  *gUNb%h625 ~e@a=n:m'j!g?Ih}Zh`5^Ֆx={B2ƃ_%pJHe5DfJE)Y?Mu.zLk/ۑ!pKWIoT2?4[X"8ݵ^YY0ԅ׽&nHT.EVߖt*);sls=y'hf >`W3Tf,Yf{^|+ƠLzŒ2u3o5Чt:f*zlG JkGkőϸ$`*R MEaАXzFnX($Fr``%"@M4oi+.m+>d90A`F]/)ΉigKyf+b[-83⵴ \Tآd-xr)3a;زRd,5huCLTaSӨ4] r}K6.@'X"d:GݳC&˟0X\t}n1h?]!zX9e 2~5W3o{e-VXKpp _ISDI =|j7;ՙ21+/L_O7FsousDIGִe v˧**%@b Yta=${Zk=F~M^;otˠUf]oX\2JSEF)AILR*騠-!K1x1Dye*q])KQ;(PӋ&15 v4&)׻˛Oih_޴)0QBsǢ@t:K20ЭJ8sKKh)7QaûF42X)i0$T]BK$T^&۽O&IPU"t "@A-gz-hQLGp K-/h{znv fS1<2K lIVSG jzK'qO^#YY*V.ױ+0LtZ+-Gۚ+|K܈ 9TJlRi@A)Wwf%y>DogiJ d…)\QGNeϹ >} $A[]U`:]MpFb")Js_Fޮ`TYJ}ُs|VLʍ`e#\bEs&<u`H$;jz~2O㪥2vlo@k j_gddvξsk%U:[6 :dr'ȅ$I&WNKRrs^tp+p|?{t?[g_̽z?x*6mSBw;ݟ=;>ً_̽t+o0̔]]gW~6uf)w.833#k*+kU?;XBa[oU.t'7t O;? p7^73Ȩ34v~`+b>K(㗁_F0>R %p;y{|{{kRyͽ;v `y+lH Nus51 9?_VwvZ+*66ٽj^Ҹ]FND.ԓjC>]!Bng~ZP]jGv&F`̽^k݃!QWtMU Qg;f7)`oL֌0V_MA.hu=–yւG x4ЖGsslT?WtW@U '߮w\NP[ ?__&!z˴-<ֽӷ_܉#"fa%#{@\x>`1]}⛫K+"P`}~|1?-~ț{J~9МIJ2vVV l`uiif鄰ӒqaړQw8f-J->qeH…2jc#S5%8nپz4G9 Iwjt%|iuUh{iݛ̑tm\0 =ICe#NC4<߫}U<~/hTORsă4x)Qk EtQ-NӸwD]etlHY&៍&;1/Y\%`x5L{,~l*rZ{zGQӝ^= tퟮՖừ8C 95—M--,>ٵᄑ7C~n^|]۰(XbP(0 k` K'zcLV<ěhR?_}fʇG5Cc$Q#TF2,׳={MGfXuX(Fq?\SD-=f1qi|,55 {^jŏKGF0~mV衽?n~>ӏ󙄫4q_3{m3 =L]& M1C?>xttѿjozt>zfZZLEހn.XGK>sny{,v̎3pgYVQܺnaFp'!JKKwƿ@0&B)ϴ qz4Ms XS>EE7Qz ݼHA]W;ZߒuEpOQp[>~̳:Ij~0kH@ׁi~"'nXMVYy%u0]l+Y4`25 ֨@\҃8uNxxEm+Y=S .+ Hnĸ.שOZ&({Ŝj* FCaKpm6d<2SΨ`Vd5A#˦,͘Azs>LZh+`<̥65cw'RmoQUzP {;ʽFs߶]6c[Cs7W#;GcM&~@XYbbʊ(3uof:߉ZDXN$6`D>^]`Hml d*TKyJ9-{Q،T8 (=175 I8@7\h`9 )e2D\ZN# ::Ĺ:]=2B."QZ$թ6˥)㱚U{Ǻd`Д2'.:t/__rV楕ê,3_Żu#k~ ce?xyC[J~_V}6ϕ!ͧ0d$-}EtǾ^"+ 0V׺M#{p1JdCa7ʥE]$6iԓEs~d=ju7HCR!&OTE~=]Mqt d Xau֐5P^VUd;=U_=ڹuX+)SQfR(}n2g{ʊi?\$+QLcbaTӑ3>pKT4 {VwI:T‡wK)b|eHm`h"4?Ar&"4w ˿<ӹ]=yW˟͝A <1d9O՗__}a?ĔcOFP =J xP8_/[ro__$ۆ,{S*$tO!I0$r@x4n4By81)L"̄D NQ4F 8{ɕ^ ~ok,3o)L>H^] fWHԩO sB`Pugae⇘ٳK_k?۹pۻmDncۈx k+ [ BK7l{ p[.4eG5w9(N+8DVdUĔ1>`efLzqzvki?2/^ξ|O=7_;5տQ_{7a1hw7W_K|dŹKgKk;?|Uٍ_4rksfbEpython-defaults-debian/.bzr/repository/packs/4e992f528c9a637cebc57da8609c6d30.pack0000644000000000000000000013200113025572412023746 0ustar Bazaar pack format 1 (introduced in 0.18) B1096 gcb1z 1080 2067 xU͎DԲ +ADZʁd%, <O۱ۛ>ќ8 ##DD,AK 9qm˫:oUe2"K :ƝeU KE $!!XC!?:*3h"Wb|6wXc Q B+QQ50np U!T`8BCN94WK6θǔ1(#EA!13dyCgV"B<0ݰ*F# +UcDH!OayC dU9G@G <vwoH*1bbs} : EZM NV0C-u휵s6[`MEm;ljsL3!8+O{2J)X'˛\?yb8 J3\HhkFՌ^+Qs*p!BJAtj.q:Ɣv#q2c:R} 1lڐV׿@oGª&uk{*0%):y1F8+ fk^3[CEEwg2SL_CNT!k,-/l ׄ[l X 5*4RDH)nc}~ctgǜ:|橃G!5qn \?{^h>>)5A]p]8UJJijNEIbS7_No8>^ \dFrF! !,4Ί\{(ԷvD\,~\RDK.;).{t`FV؅\2&^z$%40T@ngAŠYVA=GE 3})sOi}s5:<) Drی%]9d]H;!{5*SxU`1(Rd#lXzm]%*SSC4%Seڄm[J[@\nP LzX!@ߵtfq{aaڦpxB575 gcb1z 561 882 xmKn@FUY QwWu13{-w)W q$ 4E}*?^k#8aJͶu;7M84кk5mis=O-UIwZ];.8X݅6y+?MMϊ^̤sԐђB&mXUC;/i目g0Icc+$ڍ;O{I^ /^DA"ۈDBf"2I'2 W^}k)RIzY/s!ZwAɌPI aOg(++9u\I(8QEEZ7y]ƔQxJ&%,Yh؊r)@E@4ڀ'oansbVfSFj r`8j5{? WGc7,qߒDGpIa{L$=&oD9*19' .1Pٖ@_%zNY;E~ԙ |Q)O%rE!H*}aHgB11019 gcb1z 11001 49589 x}mKr"aIWd ZgQhY`@]s/EM F$d$ A@k_q^իUꮮ~׿퇓i'ˆ6Ȧ|/S%DPE7 mm FɊjh~bMny5a1Yt;d@[Iea! cQ:p$p&K1! Ն4Q4y/17i Z;)AЉ%B+4FgZ3YT4LtafP- &)S Ҳ.5ӑT>s!hfK|{&N (IwD'ɕ#hFoI ZXjg[$ IFV݇ _%Эv^mKXDXGށ{2$l-4\7-&8I٘iq7Ȣ@w*| ݜF"B EL%d -:<K W e-Ώc7Nef>T"34d6i)x4Q@#iC>Ӡ/! 򩊑 ?}lZ 5Dc晾|dYvQ>=(G%mhyc`[d%dit, . K$GeI6G]iD\ʼ(/AOȲ@ (gTk $\&(F@cYMg u lk)Ҟ'w2ؗW]HtC=9_,'v;$y&qk(qt&?oq\ x;ڥudZL<\wi6~t2nzCZRthpʶd5LN y dv1 N*\%4`ݸoQgQ~S[O 1Q"okg4B P0@]K+|\m%҃ooZ ]\x߅\`r)I(8մ rEF肿(SOA@ixڎw7P=d 7ga vin })c`sB!1hY'G07 e.!;[ic9Ms-)] IDn.z ۓ\{5e#rk/KLK^I"K C7]\P26n*{?:<T-OSуbGv1E4VUQp/5C n@"rn+& .ńΧN0kD0ԅScZ'WVHda o1yM>I72{MԚ3F8^y#!0]0=3]f a<-0l8$ cu*69$ Y K:k W -on)˕>^hƄ&?\p#zfG' 2E {4o~ [To-8w>1^pSmdDpfĹ!rQg--Vw3<$p3:1~lycslq\:W%- B '/:xp Pv-I%hpq2LVDxfW 7i'ڲHW[[b&]Gh ɇ 92h$nγ>6ܢUp%sMh$qR p2T/Fk4W v]t8ʒV@f[5&i˒ay9'Xנ>#_֣~}e iQd.Vؤ͢ f@9`$NѐSg\X&H 2`*do]B~Sx/! GJs5*R|+D\P7~ L\CCʐ D@.|G).<9F1gD ?%N4e A\CIʐ {A.r vsY1).Q4n#ԇ@ JP֫ CiגRR0ga 5 /a.&"۱\d˶o)gvN|yay/b_)>.4FFS5'մORsT&_-tץ-JowoU] J݊ui{ңuJ.Zw\XU^e'w~M/`M qs $c^~d}nN-!0?=!c^'4D:d sXi' D%\0VGj'{=,$`| 9Œ(Fϼcme.XWL|muE@GRP`8d\nM,T*b tSr˾#B3n)<9-Ύr{= 53{%ΒZ.I!$Ki}91#.Ǟ}YΞ;()0BrEbڬA\/%7|3mP.[lAn!&K7j8(ÑrBU!#R1w z-H ()8lۻ ;@v|t`[8ԋZ1?IIm4y'=ZCP& m4QJ [WyrAZ6$ ?[5rFnn'E ƚ$p&l F]FGZx~Jn&σTbr: h"85yp؀ Z Iτs}>?fmө~< i$ŲM`Oox{J=p8:1l{=*vZ7ԋ::Iuh'\hʐDn͹B"@I4hE)E:lok]}]vk>4zf2&*c'p1s#QVyI|+1xMߝHlF'2QO{~1}>(R",IiJMTtk!HOSWܴBc-PA~\-Q9DYqbbNOf Nv7JV&D/s}&7CĉR75"p>0 c"Eg FF$3LIp.J8V%h4Wy on [",z^kw41dFzIzȕ!E!j! 9«zk%x 3D;kRnCJWN8qkZcH X| ϥ>щ(QYOt9k!p ~6ڀ Lh!|oy75ec9Wkb:F<`i\X!e>6:AJ K[},u, @/|"Ϋ?gRRKjK` o[i! ~ k% _>Ԋk+D!mDt 3iGu9]@@O+޶q%);%de{(ֲe;XOǵlvZ:XWXKO2XΠkߑZ|R=̓X>  'XAǵVŌ_*#6{n;!=Pf9D D`ImI9y sE;@׈F@y'Wu=l1Im}1 gm|nv:>hxN`WmڅJCʡ~ h y%#ƺ܋D S{1T5 /~ v9Y-Q;FBdJKO@l-m$9{~I8kDz}`m?΃kjB$ACǑg0_ `/L2z.k6<Ϊ?nueeRrs{؞$Q\.T $bE$ FŒKM>h~f],] W&* 8A @~[J0gG k}>ͷص>ף/r"Fڬ0}=U~<=3*8 I")XH1YZFW\&BRVCDO*S9đ櫓uCs,hȔĥsN){v 5Xv{4lY.|H}K#IruT칵fЮvom7Zw"zWy~WTuH~uq7\<1ljC0̣،<: x={k yJ^|}&j_`-j$tj%EIg)EDkJfӊo_[5J'R;aO#E6'lA` !gZ v45bQ?`Oa#X$ jNHc#\!E#- Uxz^<]Mi{k)7`1ڜvp}c|"u6cu!Ƚa+e.`yeUy# =$RG;sͼхlIa=jA3'-8* G 1Yp\s6ȺlY.A0PD+gqrCr`r-!9-%ہ}NJq`9iH+[.fMDFPἱ.$%<΃`Sv3liآH]+P>i:x>8#'jČpUMFKhB)V'cJ-Gņ?wgۺ~w,jQ#> 5 0m#|sjתo["HƂI#RQһ\9} kw.#)C#MqMҠETY%e+ő ?Wpz}pF0lv‡n{l{C-R䄤#!Ñ1厍R4: s<$g,&/gΞWByV/s,sit2S9A0ZI!0mcC6<۟qv">zV Z4u9.!|I K8r9/#톍z)n:5P%aL.ن/FPQf̗_sҙUn**VoBÜi8^]P+M0;E=F 5%9(=jezofnNMI26r0LbLg;4p̰LG-hcIK>-55lਫ冃b?Y1=*̎[@1`B#>wk.X6<22gt_bIS:7L9oMNKlcߋduӷ SG68Z0tZq&XiءMomqwv?|e,|y\ -Yvj LgJXCtD:Js~e6ٚZat|j쭍b2"J]Ta懰ܯ'[+hȉ:`]`ϥsPUzĖ(煍AS2Drf d0) )p]-hvj5hnhpHsp쭌צoL.T^`1x1eҰ|c74ESqhAZ?/t0y رt鏻%) ˣ3N8MAT4%b))'Ǩ mι?U> @>Mf󱙍=}K.Z]f?Jΰ! t{6Fi?hjk\+4Z 'C!m۾Q\=Dt]ڝ&t%B; zdsKhz<|hxk@.H Ni, {b#B 2 ``QFȡjX%TGB2*%Q"&ˌ|.3(T{)3kݴG{C׶o!䋆g\Ph ;o4 XAǘ-k!_Y >SBd!*PS[p/@ $m\t$F'Y/_/M7|T^SV#%)$7 <Ӹ4jhGi5l~RCO^1YW/uhGknNζ0MBrj R9pj\ WFFwB9 ?m@wmJpMr xũLDfhf>zJ^,L;\ɷQ+62 O2By0ߝfv3!$%\׷>ӼsvJ*E<uUdC?Kz˶n)֋i|ZarmxF|j$Rr0AgŜƯvJ}=WKnt-gy:m8RK (P%HȑfYkM:hDx55\/wC?~½qc85kֻV с9.$QM_F|lsh14˿3>j \D Qkva 8Zahc4lp9FPG|8 =_\jgy}F_hϺ`=>:/k?\ݝT7Ϸ7a3~OC@xNB -oS拵D JĀ.^=ug|&慣sŜ3h풆I#0sa7 nG]|ؤP kX,\G{T(8 KdžW C9lˁHZDNAGp>PTsw^@]QTa5o6nl>+V~ɋҩ irx⊌_XBVϟDDG)50G28iw[d#2!i2[J~PϹ\E?LSb9)l\(%t{Rw1!DM V!LeִY@77 jvD DeI$y!EµL -7zDpgzoQ ):"Am@+[@iY*mŚ Fy>.WO :/[1<ZD G>lÆjEcs$5SKH0v\39]iOǐ/ri$!'u =>ъ%)cG\-\XDQYED0I+;Kms'p+t:p˝җ<V|Iδ7< XGJ}¥k7K;?@:Do2Ǽ )dC4&UNy(;}͂ꓺۇ^ۓcop5{pb!!<>iang]Ђ`XbH8Qtbte27]uT7ڢH=2G0-7G GzRE ;O|BZgҒH-;HK4^@u2^[_HS*p<.;^hݣZ[Z棣Z7EnHƾiYNjiV!룔6:=S:xxocZ]JՁDX]sՒ }/R]}/׆žWn{Y—^2ե?^jV^{ќ>J'Sv-p'7UoIx @PRS`A)z'߻2rUPGXek)}e 2_q'F:O&q4ӫNsigvZ>^Y"&E1rHLpu,l:.eJWY:HI&sIDe$BE+󝌋^-I'βD%+,Z~8W;\AV4~o~_~~mno~_Psj} uh%\x4l3\Z#_C!qO~"i 6Z K],҂;qCAU~og _?\I8:f|<Wq#|~REoObvw0__mS$:),g8!qDa)91kc3WҿE q7S%C3.H[b|灜)Ͽr?1`TJFJa>xJ6ČOU[?yo ^lv1>8NS^)"4`d.Q;ns^E\jZp\5+')I;@Sh_jB33319 gcb1z 33300 124663 xK$iz%eSH0XˮwUzvQꪞ̨HFdVur _| dKŰņaea 0L 6|DDfVr- r+#|?=_&0y4kF ^>{q"Eh/&[[Aq4,ir9o74(9"a4C,:_pz<'YwڍAsxpY$e4y4o$F-*L`Y΃4p18i`j7 l v /kh =F7Z8È@*U8>\o Yl7sВ^D*H"E)bFHi #E'S80HwФ*J8 &dep$ h1$a<6 '3 gA%tA|i8_a| qL ǣ4 1ag"G$`S6F<9+_fFxAŃװv᳗a4]uFWpW:|MzYOi%? S^Vk5{eT021GGCDdq7[E:ņ ~"*|,Шn"+ Ɔٞè#PԛN5WҾVA4Fx܏/04;UH:.$NX@~QE}]~fwk {)幏TC6X#xxhK}0W:g*JaA^L7,{sЪ7j84^Dz+YA/z,'q^ xi*.49)2,F1P`gֳ2L{ ""KqoO 1pa@~8mW"=* m; ze7p8)i<ʡRY X";W.d|yff;xF9赛hL#$Y JS@@Doьv;׌l6ɢlI*< 4oi4&" ?FPZFrn'ňQ 2Ĝ ]D_0# 9~TA _44d߹ꙻNcTaͧ8<$އ0&\anp:|2tUgQ:f\ǐ-<)@ik Yd1N*FrVg,)0h"q; Xmh6w0M3ýVWX!$\\mo;Jkbٌ]$GGmUxLCO9|Hkޭ"zL98 οT9F}]UϚڥMPޘ4 vWRzYByl LiOw'f|ËA`zo%]vkju%ԦXD׉SnW";z7 GT>Op-=a9PAMx1  W's+Gf(Bΐ.,\dΨ6_ ='@kW6jɵpy@B0Ǿ{BEְZL`E 7l8Y-E?W=Th '1JNYP ޷w$(B~ ;䏌9H6tVJW(ɍxw's7/|Y  if.@ rA}45][a3]S 8D6I chxv"[b6JAtqI|`݈/"k+8Zx@@$@r vnRTQݝ 4jԾjep1K=bRѲ@bQybRNpxqx?|#=$\&р@8%yHFsNjRn᮷Jd*9g!UQZ GoothLI-T좔-2F٩Y)Fnkf5;?)Ƚΰa0Q Y |EAZ;L l͒ w+d+MdKU"v';gUpALFv3$ 쓵`·Eρnr@GmLL^gWoDV4.zJw?݋ux jiV`͵ |R]S !.C=4+d$2hǛB4g&6we$P >AV|;c-oF*(ph؟xb5qv+ﻱ&"oڭ`ׂG ,-sDɱ }_Ks`%jYxzSCsZt_yx|g>|{旧/xxzj2Gvɞ/6A(.9O7q(t)&I\kj*1DwUi[}tS2)8g^>q~0W*Lc<6q(`Q ii!-.p_vWF i/x 8btI,@1:49i<7!Lyh (Jlnv-d3h֨r%HMfsKQ8? fl݃akjJС?Pȿpo:hSJ) T6_"LJeZYBL;%,J/pqxA PL((jc Չ㛚J]56 ]oS7[k[ ~S  kXAL[G'mvF('Ťm JQߠ 5dl]""T7!^?w;l#5Y zO1b\riɂ N&Q{qscЩZ^6B<Pvbgg6܁bU.hE$"E(DDYc2E!ɞI2r0%Z9$Q 2RgZ:ehpц>v3N2df#{ Y"Kc_?@T1OtFEˆ 1F`X) jhƵ],FQ2, 3]bJ!SHD-@vdЏ~Y3 @~ cȬ R r(mDhz0kR`@3`q"ΊzY~l3q(ihJgXh\D#CAN=wpL%2yڿQ}]#Uum{iu FP#Te:j#"]}.aalG]WlPsLgN|ЬI67C9F>5W6+rjߌxrE&BZT&PПci;4q7( +flr˨(Yt.q=Εkۇ 8gr;hawW̚5J>E Ĉ?bk[ݹAPx{8E1ɃK1|3|׻ۗbor,_fF<mchliTs۱YojqFֆM*PFϋ_bG _=Hgz1$#L%4u6i/I>h}:' Im1;1da(jN[A T)nҖ6&@,u{nZ-ha ]`qe$QsDTha* =AG1ZzTEZu*h] @|I25 I@e\$aƋuWDFwȭMt "oetwBvaT5Yvp;b`"9Z*Vׁ)ӝomMζb_f6ZDYʲ{6;zInV(! pH8f9`*F뻜'(z.fZB$MQD{l1A\#$8lʚ:h4u>| i`|ש2_޽>3CL{0f:זG@'aY!7F{F<$׉w>{$D5OT0cE @ w nɻp:VeZA&*g$DwK!.Ӡu^6*HJsj 4CLw[FZ9'Q2})3ڛ3ʪD m*{v;]w]%MD_eLec Aѷ3M}<$*B'P ct oѝxFs^FTKcOQ;сGz`} UQ0[sHHgQ>Lׂ:PԬ}R ?{]Y}5 St:[$à`#` )~n̰x =R,"= :ֈ`t]dϪ#A;]`; թHQAgL~X$Ch͏qQ:K)|~,;ECL"0aq܀CZCn5 `''ٝ"\mC[rbk1Tɍ~D4_!)\'+h1g@*$Dw s@@%\ W["3^Es[&ڌh]f+2G3 1ϡXHsKg @ӈѐKH("e*_GgP%@ks9#>@U1Fbyhyp; 1acr>~ :!c _{4 ,L47e6 0J&(Jg$<./ jManfm2r wB(Sl45$= X0 0ƖAk G<5Ħ.]G""D@ƿs; (c@M98Zp/7SsEA<QYt&3c #a 2xŒeGקג.=@,ԬȦ7):e8VA9^{ H7h RI+3A8Z+[;|(~-Ɏ5I55L:~Zpi0R\mFcp"[Ϊs`y{H0[.IZ,P>/pɌ"J=l!O5?$ {*@eT@1C~^.u\`TM /? SͲl0VDY5՞8Н"9)b|Tr4 Z쁠:OKW8!'lm:X .2+jMБA$dJ$Xv;ѯh81Rq8|iʆ^iQNR`Wu;LqJXlKZ(#-`5s4N5/T_ի̆26V$( WPpI0~ŊҩJ7{FԅKWXBfk/W?V׸x+v1^ qja  b[Pzxp qݵ#d7{(*jM!/W"sCUr_krĄ? IH;[\VV'ßzNݘ=v۞?Q1aIv[Y 9ɍFXGEOeTZk u)X귎E0]9x!3KIbŚ)H(9uIX!.}K T8GmXxhTkճRRC) sSX$= 0A'W72)CTZM!c9nZ'YpӁ^V.Mu;cD"FL[a]jBS`@b 9wMhfZ7S2,'n}]sȋ:R/&ͼWhE̞M6z7eYumh5cHV1(H a* Z!?^ ZcU݁MT#MnDkY0 ^eO=yYQѷI$&c ('Q醨Ӵ-bM._ߔ74G!ZH ٸGy ^byʙ4AӜL2,-e@-Ŵ|QXX)SP\ݪ;Fxg$mQL7{k :ݩ*1wLf&,jћ}6MtD؆n"?jI|obۄ5(v[]Oy=983|3 a{enUs^wlʞl/ r[|9OpcXnuXosauzǻXwuQVߎ&-VխbP]ɝ`ڜOF0NשF yO@ ֤_鈟?mj5[F9n]<su^T13me(>1p'( H1Xɍi>QeXM TwU^5:I(dX*d19EJBQxƙqfӚ{hG٪\UcU%$^3< D,T|IojaBē+)ߵ96wإBeR'Af$'Abciͧ:Xb\r݅dwe"@1ZWn[o(vV,_ɡ#8idzwYZ'TNVv_%E6cԛ\9ZLrwnZVyON?;;nwݒqJ<+GaS-%)2ky5/9qq|qqqۓcGhUj^S"y>εpkN[j, ʌ.ߪym.w.a/%:%]3í0Wן=ai(6\]mA'&¹3p]=aw#Hs~d$Xrs=Ѩ6*VIv9 ¾ ,\Ȝ||jLIM]E_ڒDwTX{2g6aɔ7ӎ&=>~-%p m9APqzؒ!|EAvD&ehܖW8w3j-Oh4i8> i-j4N*#1H['wu[]/7fT%ꛐIX1tS(`]̓n1HNr6 i}gjce=2fȣVa=J: ScQ2׷>Q2\D"R35gqRRJ "ia?K$./lV#nF|tjɸ^~*`M @Wl,`O#nCN¼~2HVgv{#/QL 1c9i4r{uw) UvkkNmw`p~2ZdA@: budA?M^*DPxͤ*Hͺɲm 1 ֊ qEV}g)`p=Gzۨ!uW2 ib;*"P_OESO}Eb/\Qsjʌwd窉 :h MqT݃#X`=cР9T='T-n4f{fHWAsWW#I&" 36 ]7$g:;Wup-͗;C */Lˆ\Ϣx<|`!J 6{}n\\ݣ}_+M(L0H$V$JV GRK;BkSf 5 ,ymY~.{rEz"w}C|L=6Dp6b@MNk* ojĂ~#XjV)^h-'u,|ִ1ڸLB m>An|9$/ZӞW\簾$"ٺo$Sӏ =^=A(J₟Np6JMtu[u/L ~'#JfJ CUuAe&y+Ka!5,/LȎMx\5S *J0N(Tvk Wpw܎rݽ|n瀡|j*Ҕё#p H ŭ˵LdgݳqՔQZL|³T5%7]DK0h!p9WܦBMdž'N~d/joZ?Q)&p{ eU' Jz̷3^ZT1I%̺ZL`}EJ$rX:Vb Y![9KLZ(UrK$ ZX0AZmn!8xϒ_TvTb !3>Q^Dg_?jc>rVJ -y4r1 trd1{N9:sBu$''Ķk]++ Bh,{qKSU)vqvtjЮ!6 JK34/x2Y4V ;FK;5~޵dNtb,')+%;N^zZ^Vﲾ ,jvdp 7vXBFO]Q%T |V[?aݷUt_7D[B(:Jі螉6Mcku;5+AQ7N7x)u,by9FZ.~ҋV؋M,kůjЇ =>Z:KBrS9mѐZ$^kWl&D4Apنrm{5JǁԡX7Lu$ sWy#1 ,;v0Dhy)gzh LN6U2{`k&} ^$oK8LR^.#H}MM&vMLLE#.4Y%[kG'۞y=P0 40H!8T"!v}ڛZ;0Y& \MZ>Vw>Pasa0IoDI/wŀZil{HM1(ܕm)%@1IsEV`}{E6]EpZk}6(kR4:G^kn ^>U7AS 6?~˟y/+']lƅTy+ßW ~G75oW?G__t_w/ ,܉oZlJDOpeV{ker{ ܦB*&^w7ls`0L7v^4jZabŸ1|8'oЗ4J4MBI:Gr>k"Pgy85p e0b?)Z_l97Va(a֩XRl:rS*= i5qN'lsEI1"$2x6K>:q`ٶL+3L1d+`D5xUɯ"Ml녈Υ\ndK6kDdcJ^`d0* 0y:fA|kN)A2$@FnŽd3D }zӠuQ{drR9E"I"! :*Rgĺlά Ms(?1 C^bQӈc4,rKoaٱ+@&Kf Meձ/z ' 6t`#9`.Ԫ gQZsρ&'NrM{*a+6;KAݫe1,02o+X$LΓd9BLFamIԔ'8<-T~poIUIY!(ǺTsIHiMn</ʫS||W)~y6ZAe҃րn^f&[Ɣ-6"sX.}?9Nf `lv "kVhg>Tos`UlZ-&%F^ v|a-DHT2qKFu+O q1)8^/su\br_[`OYqe >Xl DQeϱ^iHP~-a =oe2mlcwrqcJ7/m*aLQ360铀Z*,S sIt5,ΘLM1#̣0@ʦ!t/ ?}oyv<;-0M h{俗"YFƏC"e薂0c*eݨr7wfϚ8юU&>qk VbT `0>4(%B뜹.0UL=^-%l-yמ/9_-r/\k 1E4r!W{Υ(y$ZsK+j*2);#I=ͅSyoo`AQ5R#hrMF8W#ot\1,y_,m9a X#:>1'BH ZoXO)"s,IlnWg ?a2O-dcWWuK$."O_O?W7Wq/=G/[.~w_w{S7?/<}?O /˞ξ_ÿǿsJY{:^?_k'??gW_,&0;//_~ ‰䥣?˿¿?fS>/_i¿OoY%:c#'B|>OJ~G|v9(??lgs+!tw U1N/xyzl<0YۿC_m bO}=-4)DT [ע ;YLfᤶc%kTe ξi#\Q>/w+aΞ?:qprx] >>9yo8zviQp['VOb_`'OOï'q#'ϟf<v^_?>9;G/N,^<D7i1@^_!GO`48giᖖdgCZ%B{ݬQCSK}xS1?U h`+[TmfK7/!{ɳO<<> > x\)0[;[[WxCv\E' v~jwkk}Ig(\q{{lt(:ە j5pKJ\^a)WvzE_fJn8]Ӝ*~|;<4gG&H-5g9[-Fo_QM MD AK_*̎ygLbBbPC;]vWOb6p[L6 4C4-o3 {`M!\说Qnx׽|@f9KE?Z~V_co*[:Cۺ^\2*)HbQcGA|@OjXaFqf[o7Jo7@hټrXo7tɼhټnZƟIL[7wlB1d6 δIE3K |kHG\: @#xp-%\8Hk\|v;7;uhQxQٹj]llz@vǕgw@RB@wq?7pอ6O_7OʶH 0b^)cmv x)iaakC&v>t՝xC~ 2F:Q:Sb5љa ^SN : .zkl"* ? Mh!h@$"t0/N]n>aoەR`AS;wOn};K؎Q)m|B遪#$[54u 3ZnY_LjCP80@fwrD2vxtF[ Ds(w:j+|hnW pjYchΝ|\+=sw;Xsw5 'CwrBY{8_*K#?S윧hBL՗Qv ;ޒ \kk mW)X/Cq4hl7C@Sg=ӥ|`Q2  i9+E>SΚ&íHiq<.r>e@IKF+H ($!*OՏX:5\v5+T3 h|g(eP\9oj| |L7:w4kViҐo̵lzm|[R7T"F͌R &O; eپ] ;zv1[]0@Yg9·{p>RC(y78yO #f1d]X{ϝœU:s1]r#]܈=ɋŻ*])%x &ǹ ar-Ś,~5zv+bxJ|l%..?4L(ߖT{[[wo`$y}F;cGqOI6n{w޹V{xlpEݣ1 7 3ywt*$s5I6CFp$q_3b_`߃_d(HrCI8}$/&S`'G^R:f 2d6:4) M~yAa-\BX=[Wk'[f5}aZQ{-yQ4JrQwޓxxyRMم֜,Cjowk֬?5B-&Pse|~8<<0.ߧH֫NSqPRwd3@ǨVQ܃0$ *: zK;2m1Ō^\"`Ɍ6֕=DpRld/6Ԣ}Sy @v9<Kpn?!Pf9( ]v,nԷYtc9~^~t}]Ib,`_gB-Ew΁_ ,~ĂQ7nnG> Np~8]g@a"V)de{>6R{ Xx{̫%$c=qBE :`+9eR>j4]P'Zqc4W:u61b}|ܾۧr/qH4 0fRz%X_N_#w&m}2 45ֶSaGOեz׺/IbRʨ|]w;- TY (g p ߐ0'4=Ƚ4*0Mf\&?FIw N$n]@[eǧ}&bL!+Bf9Rz.%CCHOF8Y6חDBʈcILa..m9ըXS4U:jOoھS.~.u#cp+ up2\~7ћʙǦsFuDGQ(&=U3G5Yb(~^x 2 )Yk+9yIsvA5Y܉=e{EpY IpvjMBY^ÎHWÞK%2\iVA\Fo ^ ~j͍!rf.?g"V(Q>|>;,[ߊ8/cEN bMd.4޵m\ߒTuIXVS|nR]=aVP=*FՎ4y Jk-X=d.|tM00LمY2EYˬ-A4SxV;v(q:εIɔy9PoAk1rTdb=5t k>|jiD!U~Ob69ASS6 .CKQ4e  k*H,LR=NDYIp"؞XLsxhb@i44g@yrĸ ~ )\ "!PS98ԂI+*Lu7 D#i %>45|RԠ%nz& 2&ub/s+pm"% -lc[?%&RG4 YiWEp\yS?>?,XRcYWBHnZ473~*D0khqI/Sґк2R=~_}T/o[ŽjV|~K[,?un/DXhG 5D?s7#.h=* ( mNPԫE>JHFr}^`\H+XɌ[Jq)j 0˶Fx W?2 8ҩf#[\Bkn:2$"&‘!$uV럅C!̉.v7( {>+#r\?)R3 #m#e,Xچ~eohg̰a%r!;oW+YQU\~snY{4 !Eu|o ]8p ogE$ĬA nO/((9q [|gPEŋ *o&7:B[W4*0DID^L*32% yY{7J/7lF*3wYqpA{9[%+.ilڙ -ݧELMNbڝX$>83nnkfSqBk[c$WT֚|qr1{I3@b:l喝29phl>jBV&#ew~ Ўd22jg1Ytgi9m=̡JF`RBR,oAp/z!G[qs7לRluյ=Z\ŗu۶/cvabE11~[Ys$ dJXXSV$lA:J;$Wm@e.Rm]3xz i쬙ڗ{х#XSg]\Q:kJ̛kg`lK; 4o旱4~ ]8T;B-Cn[:184[l&VNLh2~[Ҋ=[= 鯆uYHuy~g5J|g˯8mOVՖܸXې  *_GK3$+A h^$i Oz~]s(#jQxGQrmuP ԼR bKlLPGw/5$9A>qUbPJlJ/ S5,~%䦎0!0%Nf&e0^q}7en]v.#9P6|ַ#c_-'.#Pt6fLdfTDG])n]nB 2JPU㿱~zӣlEN!kYvfBH%Ay~-Gx^J@$ʤBE[fe}ό=7b[>EYo8BGubSȞxDFRӪVdbEMW,]Q(րwtI!b-,JXA!pEL YESGC$lyvv͗i#qA #d+|Q-(O'X( WI@x6C'\%if^n6ie+ Lɣ\/jBRݖVac" 8. 5gʎ̅ m1@ |`'X& E4~mJH9p'q,sVXp ].616|[mhYS7vL.Y8X۰)GXVx:P[Y n* saCąti `ߡ+=Kwnھy+-H&SQx#>ϸo'X",#b5St֭LYG8s1:&fY"l_zhYALc;,6X5NV/qUZ75Ήb\f8) ~'U8昵l b6ɪjýj\bךW~c2C 8A<ɭ1Po 18_lK˘C^ApY#nڍHJt y,R4yC/&c~)$.hI45@+n\Auanl pKhC۞y, zdI􉓑snb4Gu,LXoK(Bkwրe9"ibĢʲvXY#9K^GTqB2,ei :$,49_(6̍*o&7vexVµuNmI^E=r1$5W:BIRRYL #)׆L*+euMnz4DY&ķx8E#keW2nOe"ǭp9f'QE-]̓ eWEAJX<ɲ eϱN;;F%$i{.y=1K`c2#RdiD mۄhm,2 9h:8^n8N>@;h#T[(hj.-r)9:Vğ]: ^UU9&f:Gp"9/ P\ \A B^fƭvnfb p)K_DTSה߾_::xX ɱp.'TM3i]IJ;)*m[uG ,.v)jňj@8F6Oh?Xc9l>70MV~G!wvZ{qBԏVu6&w@y\[uA)Y-;e3n)w`h%Zj3v6S=qa)ˈ2(r̹dϧl݀&\-#s.YI:Ō>Q'W>Q$JJ>W9PM )W@YR dK) Yc|-;;JKlt ՂJҼs75YnRF$X)$l\=;Trf`g?JԆ54\Chs$ _TmLgLÒʗb`J<Mtg/iݫAI?4чvTur95f FfxK5] eY!d1 gkܻbNƂ0?Vh! gWB+{OwObc +NQ?}(VN+. u._Ah)=0#EЂV>ǣb ómT%w(S5P%J*b"Ж|%1pH$7M7T!0p:Jؙi<4"iJu~Acjx5;KV@+&em(,_7y _: 1W ֈ^wTyIoEs#r=%5=!e)K!39ы8s27IBmXhGEZՏ/?+{!Fְ`2P;mYO2V%-"+ lmShH7m;LԹS6\pR p0mV>O<؈gQDDc;Si|6꼶|wqfJ|5} .QUU7?@0u<ƀbK(cS,(H_vTѲ4.F.<-dGh֔8i#k/q8H]T3Tn1R!Vy#u$N /N/A͡8c=ғTT ͬq-PE+^*Ix׀u*P%Oz2*8 qZQ.c,-2mZi'i|Y, HDZ /.C^Vw]X<(+<p|-Vr鰻C<9Ϙ*Z^e0f?RX`nMp*q"6z糹I NRp:OK8z!)I[6VV+>W:s稽qL+yfҺ E{C+CPBla,O9۰K}9sGbϩ@J:ZǴz.xe Ij 3Y }KV]9**tJ<{L bˋq JK|.h>Ցfc} ~_oJ O|$6< [(gDynDw\Im0QCK9&gQ>[̝ɍ)4+CvOϞ,ɩ_c#&S0TeG_"Ț+b*8rrb=46+v7n\ {XF^p2mUƍ/F~2o;?Ϳyk~cHֻ'ntc#B=t1˅ܯc@L,8 vqB"C!"|J c +c hb:â $萙&PBJɊq.j[r+B;a[^K"ѿq;19e+8]Ql51$Ȣm47FKƉwc(J%!6z5+uZKLTAiUwL_&F+Jg$Epn*SR[E3㨯r' lAEL?PPWQHh$>KZym'>* -^4`y3F J}a)쟀8UP&Q]Jbt+ƫ͐oT#Ha@c\."ll%+XwVB1ߡ6Ro+S zBOQ䢛،H t\ill˸'zd^TΕ}G?)#1qG$c&e\^&55k'NT㓻BoܷPI??c|>^Uň4Br,OT0whtP_ OCC˨ ah3H8~+=h;+F?6K,:kVV W@2אI=Z>ZsW]J0]*1ܘF^dJ0~lOQ5qy*O]v,)i.ɋ̴l)/A?oI8-;,w2Q=JT#0OLR閔E8=o&ޱ%` <ۘc/+ʮ1wuJ1y } K ݞnD5u(;=Vd8Y';a"%0IƢ#l"W6ʛEn3OoCeg+ 8$8Eϝ5e77_UpjS Xء;b | ϋZUO}~#_H+e%VkS~3X)HdqU[i AmT~m6Fլ|.}ZoSr05c4ll Qn(D?\ E .tfYx< k푓Vr~kĠ9e6{jtg[u- ڈu{t)뗳bR}lmRd^S]J #ՊPb:+P`nvjBXTD'7Y ʥ6♛~a=Lm/ԛ3(מs\AMz}HV[= vpW1V0]UXfHRO8*eGb) lKg<Ε]0. 05ruW8 \o~pnyJeΧ799Cq8=dd"yLF8p?E{UT,Rn =6F(93E"3e*P(v؞ )Vzjdpv|M4fңF}Iar].r29hY4_(nI[*` 53(@@-_x7 l(B|&OYT?ag@j(9a 9D_c.]l_j d%t2Y'papp' H0:/(H+P%b̈́L5)jJDV eXʅ{!_0aP?diE2$%m E]H-CNr ,*eWY03=3===38ڗr)Pyu_0@"ؚ2‘|ZF!ZPݘCb˦]ԕ1vC"_AЉm5}6G݇o%>*K~ی=u#znNEE1!`҆USE_sf&f$^b5яC7V<S'I[Qo1:aMiv%%]rd45e"ط-Gsd2^wX 13A$ 9lpe'5ƿyl\vT-ZPv1wS"jq}3ɝH{FC YaƨLNl["kX%[)?>XGI/T[`;U-阊_ *.kQPY,q>drU+u#S_*]l8%J蜮ف\ 6K/h&ՏelK\IX3^귲^4?&ߛH^ 8Y;t}sh9Ҍgo٤T9]3t"5`PB5 #| 214OmӬP u'KRHV(0&}vF4I&"aXݺærJ&/m+`fĉ^Li<{&`v.y&*DܛȄ}^+Nc%dIċa?m(,r txJ ﴲ.iŧfĮXOӣm0bZ>iM;ĵRkFlWI¶`1cqT2# uihzI j*hj8MXE%+lA7vBd ݶczGHSMlgY3+wkRUV%x"@)ʆ@:j=W EzNc$rH?v64gB;C^4cW8V$ʹVԽ:QʣՒ k1K7: Oʓpߓ֓|ƫ[)ON cu֍qz-ӣ>O0(TcK/lA7@o=w1F*W(2>dg2%*ԛ*&$Bv &FRP?Ɛ\Wdig sXhNlоZQseC ~N&W;]vhQ_C(#8|At~P%0k6AIBYg8 {|4n;/{~+CُxZw{m,iaN 9i7E I_|&Z[..B`S,BBzYr Liz=x4/WO_OC>W 8.࢞<Q\͓Jg;Q-d Ο?89~'$` Ҩ§l >?<*7 *:%n_/hVd]va=W Fz wc=6,Ќ)v;~(Ŏh(D 6h|^JجluvBW"20jKdaF#l4QuQ?n xj ,9vlcՊrӵ{15ޕRxFi^ h~1LjC1mIVWn<`҂N[4j Ej.Za`%@9`AݰWcC1V4xsƼʀJQurPX&cfǃ1v^ψCUP-<085cR[`?2N6K;yZ`S+@YFrfcpKR!F=9!1{"!AJwnfkͿ/6+2x «0=d2/n!wE\|/R!{.?z*JQUڸ놔mKx~QVP[?zPU!@U5{0sa~^>ɝ7qS1#4*76F-4\zW zHO!_?C*ɢ;[8HZXܪXI\}V[?;y0<ax֨3=SŠvKpjDoMy m˺<ܟ`yED^*+1Zr\ g4j&x5T:y(,9-]jDm=Q@.?4Z%>P`]#cDLT`6\`wftƻD8*qVR1{],qKQDZ–ls|acf&1Hx[}vBv~JoPVHF\6/CMpmK) VRE)\ea\NAm`TVo)C$!xL  6d"R>M~`PNX `OĦ6.mW&1@K>xT~|꽓GPS0U.Nwpr-e!> ;W ol$,m_%q;7I%N]ꗵ=ezaGu`Iv+JyF-I &K(4k:65%Z@ jқ@ISF|: I%W6}B)V❝ xgR)"J1Ւ lq,^eseZvQllnA6%LJkLP!7R1Ye ,iõL~wq~WmÅ9 ˣvaVPUE9h_ T~b-`bKQjE: Qu;S5})t9 y5O5Td&uP\Qr5P¯2nktit@ѺB*I m{{˅SЪw#M d`WДTvΥXg ]ՅlZ_Ke-N]LAiAjy˞O&-wfFQjT 7[!aHp#&Ooߺya!YVsZcT1y[pqe^2oI3J ~">RX:6Wa57p<9 WQy>FeKǨl-ӏQyQBlM<r @Ԏ|ڕT\* L cSH?jжL6.ק~ow?OEpython-defaults-debian/.bzr/repository/packs/62cd757294b57f1f45b8a4b5fb07a5da.pack0000644000000000000000000057222412374331373024033 0ustar Bazaar pack format 1 (introduced in 0.18) B6080 gcb1z 6063 13976 x[[$YVgm;RR8N=KAMLxqթsNuDz Ī /$VHABX\H p}$KEggg{Hl=]_SN?wl04/0~;6% 6=ˡEVፇo?SgC|cPF _֙Ɲ4#ۋG)u/Χf2+!̨1 ܫͰkE[+ wŝO*fU I E7-GS3*CC7]fJ?߅S{)FNa\dl4"-OtaXr(oM~ ;feiiMQalދO4ep:"mV1f]:(n.BZ_/.yޟbZi){Y*5é3`d1x #ZZE|A̚`uȗneU}>csݫgO F/N4f#X3u^٤`6I38T:T(j8&%:]3یb[!yK|nh k3F96:#qlY~L 6e|O3wǥC_l}*0iLJЭwo\BDǃ^õh0 ]ꨖB7r 5'Yr t~M;gMÕVwLcD%iL;{۝h#EM2I;u{fSAYv(0^'B 0 V˔#~F)LFNwU'B$n\lZ u Ln.V؜a[xcmR?/ 5LV0TL@Ed"p .̲̇</U/Fߍ9[{[ѡo67=Alkw[QZͥqE1ILYZZXk@{)Ϲf PIo)) b1E0p8rX &2lUR&Յ)TW@8_l~^V4ZdwB]Y!O@|{MJ|TZU;Dϙ2+-ԇA׽k O0(\o%9ד_P\c%ЃeQLxC~@1RT H 0턅Y¢uсeI_B3 ﶷzo[@bY[ſ|EeFp\ )p>1;=dI2Փ._qyثI/$HZ, H)*`;qOLsSQ?*BBkHZpc lw(tDt^lvs8TD& R4ȀKRAP"81 Q8 k}HAXmi$yigAZ/-C V#sau5 p ^^uK)qʙt?%[ĩQFŊIMo19ؚ4P~;9i SMxX' N *" `!Yxxg񯷿 PvrPeԗ~ϔgуExlw%y=w1Hj|Җ041BHܭv|'<;*ľ-cX^u_&VT AץpH ¼pjp8EU(A洢ڻm}":7*ۚ8x7{ FnK_BPX_ɓN޿Ӹ+(`fTk aZi-yW[/?|U,ifs˙ HCB3l>*8R듫 OB#8tX0CyodS'O^dL0+4Kప01 {X"Rn}"|$Q?\AY `MCVemN;13Kh:+c5-}a#\Lh+9@_J#bprPaZ:ü K[w_'ҿ&C΅O=Q~oD86E| *"_Tn5 1޴K!q&DLA)BZm!صPJh(@F,e&+po0[a(ie󠃾 aypn܅P) B6u3~뜺C0 @mw|Fex/*w/0ickS)aPp. YrE^Հ͎b ӌ}.2osU!}m[M[8\,W g[9# |zh&m,1B:Y> z:Kg AI{O2E1~fY dMP&tQX#;WYB)ryӽzdHs=.xJ^.ORgݢ6tox Rik,PÐ [/6<. 儻2,蚇 5{9Q QXN9Ž=7eZJLaƖ4 x)@6 L%_6Zӛ,Қ z#gJWߖA-?tۛ>4JːB+" 8GO_z=K׷$̾m@ZJ((%"L%}7(qo$A Y* )9Z_DPG4tw!xYdf@46`Dj̫Վ9ZmbmLGWڠN#A#,:LtG0 b߰g>zj3ۋ'?Dn:N8I{;f;R|=/DD3r)# vT"B{,?.7ƅ,^z2={s!уY w }ї[qqki8ZmTtLcZ n<8:&,r!)E#L,sNFslJCTE)qc+&Hx%qvvg_ QJ8$TK9 y%MjF/oU:QUȩK81"x 23BoCAM}ytM4zwtL(.9La榺x<;A=c{qͤwCq# E pa1V a>Zd5:bF֓|^"WTy@blrN?:]Y8nS{⻟|߳=xg?O E 3Q/ޅ&B2822 gcb1z 2806 5437 xXˎ]G EWdD脪]o+B%Q$M=>eJ@sfQ|?C|:qǎ#v]j^]>jNjC}o6y]~vuEJUg?.nVCgLqÙbUhw]{:8v!O MYmQ,GURqct$Ӂ)D$k٢ϧa56dHf8'U}*]. \q!v{˙RX}L΋2;%H7j{Ø;H&%ܨ)(kRR F2+*<ħ_!)#y͉3 p"uY*"ܐ6>I"[[<jo!3Wa ˥g"DeB1ƒTr^E9ӄSolA0c4kƅIjod F<\F]HQx Kl<󶛹LB(ud'IF3JSJ%\ݿOoɔTjnm3(r"RH:":(W,IzLʂir%Ky-U(]cj{z٬c2s i& hVj).wuS6stT|*bYf~z%+D7X7Qk$@19J hc.r-.̣BD`9^+ Q&Mz}32)MO9wjijH떬L^*c hF^R^ky[7t[c>`s]B1+ 'I5ն^|09[>Q'F% ,`Eg ?faEޅ~Wٸ \eh3e%I.|3590.p'0R+ !c>`c JZ12qB_^ ٿ;ALb+-"fTNp[ǝv HxiQ vGZ|RW_q۶ޖ|3${a2M;!gXrw>QP%jXNz_s#ESZ%d rU)4OEE:uN{֧qXF> >)GeӀ-qtUH\wEt Ûa/ǀU3OR+?`6I"x]%L$l82g29+,:EZEW?qW `zƄ9G!U蜐!t/k FRMXy}DhZQs42pLT4A)&fCVbȚ[ 5K=R}> q["ҫK:[R䢒!gj0lk+q+r!H1)QPĖx+l fۻxrʂފ)5(U=Ji&$;p0Y庝cj 6!Ap `Sv>(d1by mL&F,cs.%#!8 RʀI:ك(Wpjm`ZHT/iyҞL3LasBT.:E pVD0{ 3FAD 64Ofzden24ju7+~Nq1ĵ^L/B7w_78-Y/,`Y $='Vcmes-aܲ}8#(12\h#2@ܧ|t[6*jX啂gQO6?ck׷΂_Ac\ b||)&ת!"lW֋1S3p L`1O-נLJP/xigBWԛt,-܆K `@ؐ,sp'5*bJ䆺o!qm]Jx 41 S*9,"fF%Uzq w 05h,3B __2jUTl\_ܒeP| zHHG8 ɛȽi FjMdߨو2/l%T@pioSۍ< \Jf*LJ_Fb-Ϫ9.$VJD@\Bt,l~ЋςB16985 gcb1z 16967 70968 x ]ƽE@ "&C+Kq2sg1!pl Cep+U8NɖeK\#qɆ`'eCIA$;wzf]2w?='Z))hň {s0B TSEN͌7#9MV1P%ʽ~zڑU1;^c9*Fo~~0oRA;-GYu<%DΤ9e+!؊TObߌqΫ<]3,xv*cV1uz/ɌF3fdk֕͘w& ӆQXVNLIg1>Zi!*]40Ƶd1rp;tgkG|&o_hInh14Ao4q8Ê8U6`l:G #YkBb9h3Z)ANKI:'=D\Jډg>;>tF0Φ QojET&)==f%pY 9YhN!4ftACk0Z ۋofM zٴ7D<6!h:NGk5B!kQRdŵ'0eF$%)Lx@ K1?\(BFlJPĵ?eRI'?MLKL&,IGvG;K7{7Y#bRf\,(v&k GLQJݙ9f!M6QTDOb%!(2e L7ߙoekT=JΘ<8 R0!JDgȐ9:($TDiSLHrܮ= 7"j|1VҹVGf# >xLX@d-C8{.'5՜ FxgCHvwLri*00#[ltL(32r0VDy!e1$6&No(aW\Uv-;X'j@8n A5H⹎ g<q=_C1]G;c3Qi.KTPd+5A⹎ $g<+k1s=Q`Rt4y6L#L_C1] PvAG<pZI&,íY4Fa49Pq%]c/:IφMBFdZ=Fse 'h#Ύi6mΘ{sHQ:AoNEskqÌ^fka&2)_oͺ6y?fu Y_}9u|Ämֵ t&5[boѶ̺>6:V74%]5)YY'O)ysHFEgbɁYye2Чaq䤬٪.!vrHNd"RrCE9G]*l"4DAM :ar?[M3't֩0 >%,0DG-bd?04؜%8:M D;!;fy<9:P4*d/UF[ ߲ijpIY"Egz:O7jNN}gm6+@̈R؎'io&r88eZTF SQO(đUazƷ5'" ӝ_Q1Tz+r֯i)YH[ o,ɉ c"1(BJ̺BgwTT0 !:=D⚤<]MZ |]Aꄓ)e##yphӴRQc3gZm9v:fE WٟLkyvl!r;oj|{V(=:C3:.Ƈd/pYYW1I*Je7ђ'cD6zJ/ a=ú$Ad]Mn*uW9х w4eX7;de@#"o 5ʮ5 zp|ϛ/v;'(x׻ϓEHPioIݹ:V{'G|Cm o#1z仔FE.-fr@[+U9. "YV9M֞2STY.s"oa YkoXf)F7(ڼ1X0F.W s?Kޞ]cЖKZhX[Iϲ|"Bk9s(Wm)r{yElL㵴GEtYKmT1dATHNO$G+EM)N?%>bkj,kHB9oL${Ka܅ VfC/zA86]FGvՔWJ9,0c:tjT Pb48YHNY|jLӃ 7&kq[odTvh"TD?+r%>A$+3 Sɤ7u;>n[Ž;gq2F(fu(M2S2kYT\ QL&4_T~QhZr_f"2Ix9T)sc"i$Il*r9כgAw_\ EKw7r+@e)|H=Kӳc k`/i.'⃆ PF8ANgHחޘ={cM F3°D@" $AƘYZS+vvnkI_qKBg4W msY1$UY^i{rwn!i~ZGb\ne1DQkRU:ij9sq5 lu$e)yG$ •-HXP|P,`+,cTL.<=~rwv-IdZ^TshB Fg\iZҜ_evwC$ݜWL<Q8J7 k:Ñs}:f:]7"->#dt0KWI üBj&:s.uy"GIRԥsLC\%fk+֓4;{ts d&h+rb mr E^kvwZGdbO JXfd9屛U D%( Tq\Od- ̕(׽.̼n1a$[\J0md J wEe<#<9+%^kWZO=BQAXجhL zhizB1iQz_!s/ }*d(fxk&lAso_"Q:DSrCJ6/3Qtxwy<-z|7W~ n}W_W=8v1]ݞWW74yNrLK9HVzMӆPmrޔ-5O#c^G^R 55JMƊRcũ~ΡNlx?\ys~CN oaJd؃HȰ 3nɦޯ/#)I}"*Tn@#fW6eJ;( KQE I3O5Fj|x!exx}Xҝ%pfY iyQBId.B4\]cVuqk,غ{,``3 f ڇ֢VXw`<Ég-̍‰+hA٢q=8?3k-2&_;=39'\f:ytXm/IL;unjEr{hݾQⴥl|q{?f{ 1Q>V 14FFSցl9X;4lFޖe x1o/Qa9h!&!Tf h%< /inLpTM(WΈ ?*䭅q|.BG)[AL%K "t^gZ-0Pnԫ Ap>t{g!Vϻn&y(HS;PGU' dg{bry9, #'[;b 6f9 U,dݾ}|oo,D gu[af'D.|J3qW$E*Jix qW_DKO%hXG1? G*[KacMSwELH̪,0e#V0QU6CgyXLrI"A$7zGZB"i6K|Ve[b0$,h#@0Y!&\Imh `H9̲?h<+A$(`U`R^@eԊbehS͔+!MDqsH1+\+, ZJR•=/_ֻ/ZPClܷ,8G-h*C"NP)[[1$K`2g'v871,SLv@.xA{'anW"fs7tʱsrZQP`H̑ y} x+j3DXœqiZR*¸]|E_#IJL ]b9X)m>:co繴gTL\R,]o*{Łt㜉ZrX*S:Z`eJ{s􆽁7hIY6oykpZKMo,mDbiAG`-nV.yS!Y%%6CWOaf;q?Q>3wpĐ7& [-5fg~('~:NjPS#W(9E2yD5|gU7/0;Ȁg]t%RƯ.$g{)$>XeHs6cM@&Am"@t}top[W@G;ezZ;'s=Q8d.s&@MN'G$ 7J4F K;|f2g`|Lv"٨׮41MVpdf9L=xP85|w.v7܀t}l3ji.4'AC.-o2T[B4q ꂲ/]ʃz^_ 8ݓXtͨ$g=R*m3ܲ%WTRRd0AVN4yՒ ۿ7y'Yużvو,W.T.>yܬwtVv4$);n7 GnBj 6>krlxy4q.~JAӈy@%M& {Tcjs^E5ʨ}/|gi05drO߸|nR-;^ פwܛHRHp=L& D{9WGe/Дg@=r@˃K o(ʳԴ3:l:dhLc7T|FMOeS ״\IѩEL >5M1<6%h#RMMd`L# UEZuaҎ%>_u}tauLo綖ez^ku: “X\V@\|V 5LഎUk8{HJ"5G2vx^X˴ⶬylN6mj=I??zS֒4Zi]1~;$.rZ`h+N6?!ͻ7RNl*mf;waw`&56ϔuMmR6,oԕ'ۤmrs.Qx ӫ̴ʃ2*B-cVT 뜏ٲ7Iz4r똻\SrM@8bp^v}d$+F 0s(}|_ۯ ݃~rWj:?zɏ|?{/߼c㵧ǾjzLL9o]99J9*ZҔsV|r|c\_KV3?fb54:DJ?3!T Wg tw2wPhq&s]gH"XJ/kQ2ct_Ho_S\ɯxNQ*d/O8+RX]qͤW}ϫrp9pŜ,*dJD<҂9bV&sQ")~.W,6,qmY>{BtN€S\bb@kW?5[}7ſeYw$&F<.("@0FFi47[S>/jZ;`??~m[w7ݏߺӇV_}?V}QSLu'?LyضBdT r0*3+a@?}06xV/?;6ܫ>sw|O|ķ/}EϹ۫Os{9x;@?#Fʓ ?Q\Vder7 1bsipPrmoo8ynot%YBD cL[A>6BE6TQuw $mO]{x&c0FVg6` /,:3\_!}bH+dMpwP8@2r0ץ׉#?/hn 'dysN;A/t$ˑPT+5B% (I E8Uԩ@JKҲ%JZSVONHq"Y1s2jg7<%_ZyNJ(1D%B ̃t@7ϩR>׼g] vnRBaPĴēhͅ\9KJw]H-M_~g{ DDTg0e(Mީ:R3ի}ݪ3_AXUbŴ`3 `8h"Ҋ/pkM,Y,0=pI 6 (rPJ7V_]?%~TyTtYT1- q_lyWoYЫ/9Đ9u$yU6.,wV'>W> pV C~c:VwN>H#U.R!FN&$@wmuzۧ1[@jR`Lԗ*p_w'rSHT۫w~a\NBk+0y`arq"S~R_?0oGzG?_o?[o~ݓ@/[/{111ˢ #ϒd^^ЂyFH$_j T:MN C*5 x`OK0tVTԆ"6oʅ"I8"c`BP^S+-܃ Cac w%/G e@ayhFf]Kn?puU=Q`O9 g1|xaJ%{,'w6Q_^;BBqw{^`γU/n;rӗaA;S)"PP\0NJA5@:V_{򹷖գ zi;̝0h gʊU0g.#qo3\::! r,w\FrYxSfZ.տzEw+G9}4h ,NR2Alݺ$4pZI@h6堖q>@ A[ҡ[`H X9Qe\\ Mf0@z|WY[> F*dNVdA3>zY ɝuk5!+"Ɍ3:\:w-W7^Κk#yIj20ṫT.f#VXn/r-*jTh 删w&&))'j}fC]߷^tα?~Ŷ]V89˳7E409"%͂L^#9@ t"LD7 ^y)%b{雩_=˓$`L:c{)WFn2L H*]Yq|(d ͩ'Fsk9P<S4#VI*3Jo;-%I9|zd`-^oy=3L "Eg@A$d,Ũ+b} Nr]reBڥx{(['wZ<O]?`}m*RyYcW eL'2B\Q-,ݛܗTT6@󃯸-kz3eϼHEQ CnU-m+%O.U?zځ{ùșke'r-[Qo'od['%x 19Q"ӿYb$*b=[/)~-?x#Y?%Wgjׯއ߂PCq+, CT^P>#8R)rꌽ0+!QJY,')%Z!|A|]Ͻ a)#$P# ILc*:DIi;#ǭA0UvVjת8֊9Z9N% 6I!Uk |h"Tw ?MW>'6@;z` & @MP6bGm"Wh(+mspikY ̊6 qKeл:O*덚 mi6b,f drAxK/ʼUGRXR*8 #-RoF9@hu]jlF4$⇴[s}AU)]Ia {Ef9ݞ~?(f際%II4+f"gjy w8DBD1LFZ2#eF]lhR@+reomp׿85Q!MRΘ-~U'.ZMׂa(Kfaޏ3 Z2}S6 AK܊ڬ\#lL Q*2p ޔ"n r rw}綏ޏ"qHF 3DP' 6+)jWS6Qn&D,O܊k -Ȑ=%()цd&n+ ]#|]9OGH;"39D5l+b9#>26G` /a>Pk\{c4m:OpVyy'͙+HPikqi mږnI `['}9fXko_i 黃߭OW}|w [ me S  6)RFV7z^vgOkUhbS*D ? `]X2B.e|?v-QdXDm\DgI6/ZpXeC~#FMy|ZNj|j%gB89 o!D|u{X%gB4U1r6DkSp/h Ŭ7WCC_谵 rWϹ.tWVYw¦ ax^Bo1xŨ9 4Ún8 ɘi0юMv8X(}^"~8m -c1 1ڡ1Gb@Q{at((F=L1XvGhGh',FE0PPzYR&bc6B> Xv|bc6BhbS6Bcc^1㔩1QPzԘ$J{cjL15N툩1턩1Q 11ԼBk2kȭ ;i߳LJjJQd㡭fҎMdQysJhr!N J8#jFa⌸aI(Ê3j @S*Ψ7#M<@N["usc23L`|խZjܠ0$Z Tnw$;>?0CU/6#)t98fス>yi uBݱzG[?6r+0֗OyGgʻ߽{wk_+_;aWhyݿGy~zO_y} /'h_p[t4蚋_>=<}׿qɨ:ԟzr*$ZB164314 gcb1z 164294 572042 x $Wu xV/ AJ=)eF忪PuWuwAnVtfFY%Y4xml69L-c`qf=xسc 6l<{ċOJ-dL呺2}ޖ6M\-Ub6KkծXm7j=ivG[Ԕ=Y0fOQb4MW3?eyf9|Ǔ㊩ dmcVang3]т͆L ̢eD/V4'M?|lԹ'^8̅W׎Jgyui55wݲ:WbVGtJfaedҲ]S{a_i5|X3-_Ж̺V/\Prڃ|.755`iq=2#tI[l} qXemckOJj[kٝhq-65<ǰ`ږniV@gmhmԁ2T+|wl5;6 lufkVg[-ft. *&S\yf5XL\n;6R=i=-xmv| ر-;_*km^v@vmmӺj63['#|Y}sg7/[;m]6 wFK~[3Ln{0da/Y  ה#8}W"D۶ \򷲼U:3.n=MK og=#uYˮ- Xߖč!jZXfw=J pL*7!ٳXJ' tAtQ7wWkYuFs5q+\)'F3 NֵN]_a%BvYB%ܽg9]>mqӶ Hp:~ܥznjYW<:|ElM\|h+mNS9.0BfyVgi mQ{- Jñ1YI2H0(x k./ (Mu] إm}SPGbk͖O,dd.mlt}q Ȍ rMȑNA;6,L-#R.Jyΰio<w8:kw^hˉ`Wp{ -Ζi>+qzN4 v4N0Y" 6y͵& EA ~uz~y,<W (mx ,zݶڦc9qCq ;h 8Jp<0ZrQw.xӃZg Pa#: Á*, zH͞9ZYӤǹ?Lggk1RfhT'1$FXF*U*eF e; (Z\ #I ӽACX > V/6؅nC](L+=ma"yDXp` G-i.Mds@h\xd{ϧwHA`u0Y6bQ@vx1v{qzI1F c7ҧ4AQB7r#eFS1j2^L#L_gE-\ U a„!xBQ-WV()h1jT42,aV;"4Qa:! `AZL/减 ņ>MB Qp<-1xoG$]mݜk$ͦ6=x#u86ai8ݝĨ7OMoiм @$͉V #!9ENt&&@|TjaZPȖG" &0DI*4g* :b[PmZh.J&QgI[ ukxg;$'Iݲ{p-$a Ju[&oJ 9 rLt@N=H]@i; i儐ݨQkf,)\70B36-2Yl3eKn4ݹ} zgϖJR(KJQ٬!<+*hoӆQ5ߖgj+`pIh! fiQG4pQ t<(/$f^5/,Tqx aq3+ks |!dnܹ-lH\IVKA{f:n>i#A-]O ;lI 94CBzBoK][i2$ Jߦi6hC fl+9sK8m+2ZI?Fzp*wpV\( kAk-eR%+ţR좞G3$>[@"Q>r cUmAYhh)[l+fwplh< '0~#Y|qa. 5DHr.B/h1bv_!Lp3tGgPf S]1tV!?MWjEـH7[3Yx{vcf"A$b%F: f`[% z@IT.:\_7%Ur mfkM_5M <)3`v 9G׈r&XVA)IM Iﰾgݍ'!nc[k 0my U_» p,Pubd W͕FEŝ6hʽZOgZg6aýz .9ʱA x12)LM jϚݺeܛzN&s;Dّ֚r=3#vcXV'* :"9# @ >Igpyw &҆j2Ev2BgF}e0YtƗ \yT7VmI|P%" u(#GBxuZ5=DRn0xvL &A%Hd::E1g.c!5)$t"2؛\q4B@ Jsm N+C,OX;ь;=gL򽓑 1̡XM!V{498rP3E@@`ez;a0Y -%xGzȈA2P[c1F@mm!AIjh وK6έ_9wv=&-MȐ1LWz/5P LhvU!%` QN̢yF] HI֔/-skƱ٤P.%{ (c~45!:wQ<$o{hlh C[\6-#W#=/ H%[fQÿ;2,pf 4ovZ^nF!fMz \yH`Qquڔ>3- a!6;  3RR.Tf 'F E SNGZ҅!jhuGř  /[LQpr$)qG.Nה_)}9Bj8#a6#u"`$P<#糴| }oK4?X,Bޖl ɔ-EFz t-&P>/pv"͠bcWnf:t='8z7˝ܵ!Tw;jxَd/ @dhLyיh˥DY<쉢X;ErRĖo\Kͷ!c ݫoh Ӳj1` =K檥J5? axqK6:21,m%Q' HRȝ[@MV)qH:Ҕz%-4C"0a w ێp;LQJ|1-F1BL^d|6[vMP}V/d6R f'q}r{5l5atͬ0ĘGUjl2_Z^?Ƥ&R83G2`ҩtw$xlIJz6̰[b.#2Ѩѷv YyȀ9\^9 ^xT4`@ B73>8 ĉ#4֝T W.,LDqP. âs$ rq+>Dy'tÇc x7)Ľ b06LhOݷ-҅IB [BvXeyzfo||5_01[ C]׋$\H$C?NmSX.bԥےۣnwobO'6f+,inC $"g^!ft6cQp'@9^V#?jEtfY+k)/$LzFAnM7_tZ(!uLX!V4*E9aeCm戧hKZvIVb(:MIDdhp`8ps>;}(JTSp VnP$DǢ`+Cj2&ib^zC(6.vxyrˍ|*&^J`P8b,e/V~ʞ֥z-x yS VZJZ : ʁc/Wã0\V5. j0%RCUͪ2wp 0V9}^a6D.=1sÉftĞ?])fn4z"瞇[0΃jx 0(Q,0>8-Tnf`=ŕ!8xmbE4€őԘQ<3b 6!pU%\DG(q'<|4Ȝ±ڱ\O ̤5%NȆ䰚* y9ý@vca WJIo+`B\8.'aEza2`ڒЏRKuF܅c9ܰ ᐪҦ¶u,+F"qS \yğ*F+/9]G=K$KZ31AG2뀤g*x7y}sn! v"+U$LNX8`)5emB Bj>s!8JffXFZjX▄h jbny|!| u<egp@xr~S1tёS/PA^8af`rF.W& \.\.Zb c 2b,XXV,aê1[HiԠbCM<_ʍODđ\q0 GGaLRs|#[g/Ř2!x㜆+‚B+\%QjcFE՚|$KE08|+4`m$! .m K`ӷ@/vKK+7$-8T2 =,|HAvD&Ah+?xx\ vXf6 3`QS͐Bh41> Ң̂(蠫f\uJdWv AG0+B{g=jra.WO BAV%kIcꭧPfJu)tab ssD=3ɉV+GD}g(zYm$i쒵K -`<+L\OzcӳeFy**Ù$ #kfKRWYk#.%loy!djCX|[zRG^'oI芍ؔz44ZfHܩӁ񃢰¯0EHVR2쇿DeRru_HoϞa-;?eb ,jTKsBybk#XTO(!spI3T ]>kr]~2>mhABL^`V8L|R{'J +re4,RBxiK ҍؙk5j|a^g"B39NB.zH@5N~i>E 2/D5Q5eԵH0ykR]ȷ0`X<(<8/.tꑼ #[3214s~ L)?}BWNZBY G=2_8UF[Gk:Ʋ|*<{BEb3Φ 隺m2)ۥb[ƮDI* /ψ?\&,7Kg H$9PB!VY$fO GQA0EdhGH8"F0irA:@S] :BڸuE)J% 3Jng?7EX2݊cr7Fkf21#[,Z gyeyAw{AsHkaMlK&s=RPYC"A+L}]څWy|>-`ϟUa)~3x!)VSyIyaXPAO  Gx)R( eAM.6F XdȎMxS TئMy@lSJ]/Kz <ʹ,$,ݠԡ<}tpxgX H EjȴuϏ3|@Dv,"%W RzX{ ^(*nSʦc%NdzntEV+WM1s]VZFbI~~&%=ҢNZ2Ȭ+ a)0>K$4X3|bp+BTxwlb"ǀJ-,4Z !͖vtσT9GBΔx/K八׏Z&j/*Y+<ڹk{N9zyu8hA$[s`+_07Z0ً]*t]2U n u1QW1t&x%W:,vV`pT by :r ]ˏ}*Nݷ;4~"kqDFRKNڏ)vX-|UFBBE D'0 ?C,! T!wFONMuQ1Ty|[?acHBT_ԇ.ɻ J_% =-W oV}Em%; ?xɈXu,ӫF7#k$E UzEM 1FH=> 49rmbTR)ݷ9M!HT| YDqD2ܲB$!x/Q ̆?x d(9Ȅ>[EҐgE7 .M^N0:;""y)gz*jg,2WG DCb!- #K%%\tQitq;$&(_|őyJwUB$`P]"D`A26u s0Uo)Ծ*rQ &YQjMGJm[.,* m .+O) 3;YD5 UtT5u&62 <}xIBmI.sĕ \~nn2_bŠ=*H.GٓJ\΍',a^Jdx Wdnd<]轑"ƉV[&+= ,^e0-=-&4)@VgSgčIg)s`@GA44ND1(ܡ-(r"{KT}/Fp#1F6CsgM-XTMKmk-݁Hq6T֧d4@+)`*6Q5{n~ԅk˧ח&]8|{ND~EoN8kBu#7~,l_ӗu 4+zgrYg X[xcZvӱQkW%}5,;}fiܚi/S(*d>˂Y` &%˓%J([t 7b&V[`ә f<#-/Mw2/?s6Yչ+Jk߬A4&kdS&:x˜\I>0~^Y.-sJ?>|_zZor7?}9)x}._̶~ Ȼ[̣xwI%[@f,"l'f[.|qCOhK0ON$2`M,fq(/,ޓO9n)OF33F.M ڝAG,?_ωn w^7/5n`'bɄY#:;OV8 Ż]{ SH-VBc53)D8/#a[ߤZrw3?3<Tday|cny@"CRWeci /yw"b$-wwwǃ@3nv[Fޞ[@CG^Xt~ 7G+a-bVQm65X$aiplEqOW,!WT d|=&0x@ D2GD_BSL"L?{}XODm*ef;p%zF舍KͬVO']MmfqN @2S@= L@Gs~OS8Pa؇ _1A?'!T5Xkoyv|l S#B 9aJ)^Vs=t@@deؽ[l.?Nfi yK&Pve~aW=-Q]}']ʵJW_c,* |BdJzR& 8̾/I S6w/*߼/o嶭÷E%*SQ4/y˿01?[kg7s_qy7hx; B P/ۍA ~P|o/<o?~~ 61Zvh ' D&@2^Q Y{/UoĽX791ӧůS/r/fYm?!95e^$Хc?u ko:ݟfC:SK%D)}(wҙ'nRY+㥣#_X]=v~y)~}ڍ&Ә}"?|+ 6όԔjUX025VeR ؛lM\>5E/a퇶ݩN*`7e.6Aܯ* ʫ)ڮbS5.̈˸?6kf4PUnkbߑt`-f5.iU/SvyΎ+wS챧hԷtfFޞ=>rmC`!a}b-4-hv5VȽoy= 3:S1E4WNI8trU3=y_*L4Y;u^  /єwbTyI, -ρB.Gux% eN6C"3d?o oZBlz oۦWif[`6N뚍NGiJ(YzGdXY{E&5Oר0]{Aejslhiv V|ӣLauMhzXoA^wj7N%[u*rʑP.=Lz)6V" */Q!zXɯX7Clb0+V3ƣ_bH]ܗ]0Um*~/Z zdX)+pDNNQށWɊ"B^\nԊAϬXQ¡'5$u(r6],hW ]]Vs`vqmE$p06)#vd,Wy)8,F/" @u:%G Wf(s/2I|]C!Oa|n<;ה`)p2NcĦ)">4HZYZV;#:6>C,^&vxs.,)~wkMw4mw.Z{26"pvw!M6QO$v5!;oSN +oJ`F)":AXbs߉t?/$PE^CQmp3BnYm TM&cmd%!a$e%<-Ke{H\}m'N?[\k1+;^ws3[yK:WРx\_~% ~[0w~q[:s[e|w_㯯o_4;7^=TN`{?ĩ3_f'c>s 5O| MfW_H>ǔQK]j"-u{o}yl V VaUh6ZF*l?&T??kEm_r"QCs)\l.e.e62Kͥ{3LfaIOJL~)9|${'̡s_7I to Lo|c$vޑÉ?ĭ>É[NX} /{pL%C%p4}&^ҷtoL}'>{3+]skL׿tU#~Η(!z{IsnY~o&1 :0#/N+N%~p{&Wޜ*{魉נ T3(1}P=ӽMww a܉=J2Z߸c)[qKW^M_{{V7Dl>O),N!zt/n2{Ⓣ[w?Z_*{Ju~>`LT"37|׾װqHx㫏&f?go?gÿ??vx%qw9h}t[觿~-r{wN`gU!>nτ7ަm$g?)q:1Ewg*{7%^ _ěޔxsook3cM$3fŠLH߰[, %-}pUʺ^3bIoڻ%l=yb`9i?7ĿL={?w[n8/#gޖX:row$Hlw$nY{5{;"|L((Lu" 7u$^;-oynoNi@/UEs|Ka=v[]Co7s4g5k4Y][~ϿVw?wG}k<5C7}/Ͽxe/ N_=q/HQ߽K_yOe_QOuO-}6bE8׮/}_VZ??[߽S,VX:+d?K8 {~C>ܬ8w(koH޸/!qoh^%^ !{xX޻%ͽ+@w}pGÇxJ,oCt>ž{?wV`k7hYK1QqsAᗩt,8OmqP7\ĽVLB :{w/$Sx_{|چEw{XGoyPC^02y:KChwq_s/>4-?3 .Hŷiٻ# <8c,o˃^:0o`4oK15$V*`[w*d=eNkwH'v+y))EzVw,:a"'r,}gY]XW670vwױ[z,S 4_+]Ũa.阘w::] OkXNaj]e#v0ø]C( ȤUyt]6k?)R4 :+^."msmMi⺽Zr2~'/f[ZfN©A!yoDzTUepN=ÚԪahT*P&YqiXTJۇF o K<̘#w X TbOnbyT ї6ZMԲ~זumuܣ+KK:=[9܅xڹǵ]hWז׵skʙ+/,=gϝNYѐuSⱕ+@W'VΟ~O[ŵ+/^\V/[_),AgWΞXq,=ø(Z<}/psѿ_)t@Tֽ}t/*I 랡>:g^ R\*ޔC䃟)6M/=Q[e7cߟ-bYF{"0^gۚ n 3+a3ghT`mH`~F'ѥYrYw =4:Ǝ?WG囵q\Ѡq 67lAT `i j >4 |4 (ʰuJmH%fĊ~ Rss~xJxIFLHѨY#󪗼NP݄hQQ;I%QOMn˗J9v;2[)%@Fϧq)w9ظxh yQz>]XzAШ@]4J[ۃ/˃{#.ƮsLh䊠1!`ؘ+` !I7=,\7r.k哢fE0o")c6ͫ]*~iKLԲ$H8EétFsO$QT*l{ue19i q>\˦*p{(G1?t TaPxi\CL|-j(٘ܶрOM0'yU6;NV@B.Tplg4TW6Xցn:`~0x>C&Fй 4a4uLUSW" vU3=s4whiWx+< _(_!ɍ VocCm 35bȣ]7we}ɯC`v_$ jL|Q49GyrqhUA1 C:\#,euU3rᴱ &@~7nODN 0j&D8sn 6n}c5ɵU lCؓ)|f}}kbUSJ'-hdJaZ![6!RahX+/Xk >ozhYw8KzK+kkaEc06|pg Vf~Y8tmy7fԣuw-v134&Y o;NSr#)Ii ϬٱӍ6Ԇfhw1\p{mý ';OA3`D\N9ɔҩlwob< h'M,3gu@.GEEyxݲH.B !ӕ+"U: t`kX "bΣ8BoJ#Ϡ:.0iD4MiC1}> QM16JѠM={.h tLhT`-#,Hf&jgdmCA܅);:$5WJ-җUXZ*!RJP!0úz@ƨ ?%h.8@gң:q߻ snyDSm`{8J2lV;& [٭>Ь//1fP0 g aܶ94Ö\ڮC֦YEeQؿ7 [".81f45E2` ƀ&ttv@.TH5ݨEFqO7EQ"t%MnAԨWc6"C`T KhXjqi57T(5c KŻc{ ֋OAZۆ$%;bBF)}SI Doz1jiӞ%+(v]2D *ߢKAm6~џ^a "po';Kkkj7aQǎNl )|0Y`X4Wck!:@aԢP"U YaTFGf b7y,, nH!}"o^Y\`pJd vah*;o)/"K5Tॴc0:B1hx5\zjINȩ3(CxG&Ā=T,V. |"HXhE-:5< ziu PZrw;33K-f޶ AQ& al;ި@\ 6p '&81ak$$! uHU }DɌ*8N"ALlx IbG<"hsL*7 8C [޿ضw4ք﬏M@vv"yxqǧ6;bTZ^1:]C`cw e^ nhSI*j8 Ɖh# ᴄ!~.ێմ:F:Tio|a7K$a 5t m3FE4C$7Gг{uoh]@Gs۲{.yc5 Ral->L(,gZtcZ<-:2l F=y{ ;`p.l";svL$ l P))nb 1zOC"|F׍1iZl]j!.A&L>_!Wlt]%cvZq@Hu#wL5=V3vϨEeZL&pm܈ Pl]T ,*X )'iR,H q޷a<Т'>)i!O}e/8o0Vŷh|(cfJ}H*5T_^Q4#~e l0ɑ;FJ ,Z~1&X$q`; E-DzcKia%AufIi4elZQ0&Fd&ts;G}eʼQE5-X_Hmf4= VշRX5"6񟙠t^7u H+DƈXθ,:7>HnC٪LeP{$ X?ANULE@aˠk\dԬ7NTң:rE  a-GtZ{HڶBC0')r D<Db5ͦtdZǃO1Ud܂u|$0Y -%x1HVᐅY+wqHƭ$ zr#H@)HK!^%KlDĚM3`Ȁ`mJjAqC$cȒPh:axJ7tm: *[ej`Rǁ2 ciD2XR Z$8J2iCXjDgzQ TSY ?F6GT[ىnh5sfMyn5z6FGb5:LlP0MNjS`*agLĨ2{NArLB:#4D#-!5#{} Yg'噮WL{d?;9|^\&b |~}u6R|l ĒMbVN[ORX 3;;p=3dqbXe)!q#~w)*J5[>F!A>| F$b9Cq̌2vȀ g#F~k8#ވK(e FRy?~q8&>N!ۊ;{A0 r?(xat\к$2OF?(*ߜ\[ }sdHv>%ifYa?G?w3NG MDAd5j'N8tzDW VyxjjM5i"0h4E  *:,Ŭa+}G\|bC,p2q )'nY.K`i>J3!V|ѶCJNŇ熿'V)na"$ɘN*s' E G_I9d-53pꁃ>0J?ue;WT8m< C:~pqm, q#lRfg6X4PPhո ) Kn 09ZD7Ă'vL#toV$Sf}Op'p`nzvxG^afRuc*ͫuic 9Zˤ˚XrZ1<~52 8x=>GM-ە~KGK/_^|Y[ZY/jk' 'x9tbSiG=?S!O}mM/GYie4nˠsG.^X0]h2 5&yuMf28R(sXsZLq؄0@0bd2 rI-ÎorŽFS;`"6%\bͲUe(tvt(—&kŦc)KPЊoZ[QNO'f\6=>dh'7xMl,>D(jƚFQa1.0Lc 8dl(8cƣAeYa1ɥ, (q׏<'ʡzX.&O:(W@m4xYУ0aok<3 p< %CYrT.8HYyhw[C"nX3fyȬyC*V벬MAT{`"#XV.mf yVeI0}K 4TaՐncO]|ܟ%QbR *6DTq?HhxOKNjC騷ݨgX=3)׉ t>$7#nӻJ ,=fDXxOTjh($ {M3M\I#aET-fúfgVGcaDoO3Ó4C햛MS$ֹRlh Rrz:=\(M2B" (PkA&Vjz쪅m{" X5Љ-A%ߌ zK%&pA"{-t**ȓ!rcv60 V;Rc"]rWY)ՍpCB@zhMHTعͱ2ӍZhQc%e crf[6T~7޺9 ~uwj*oY""؜akDp鱄8K<< FHEm2bUdx0O5_"ungTbcMVO^dG~F8K|6AH!%_at#dzҩA(_K_ΆTta6 g!kt\Dn8V^ZP%QBd(HeGGUmVaB)'+a!^lD +{LTbE"D!]QEC)2/Ǯsou=S1z"\sRl(*?io`ou+T Vܳk5ʣ1|iG~Е1Uu8lL]Ib'0ɘE׊WQ./ 틺+n#\D +#y/ B$D@/5U *|kq30g]cʳ0(xdG+Yǝa74\5dkf/9pԼ]u.ԽfH @>$C Xq1F $G~Ȓ-YYe''w?nխnΒU_^8(r%=ִ[{)+m6z`Lޞ>)3MR&r֞P$B&1ɏIߴՉVgIAd0Dg* O.ϲ0LtR?'5cuJ^e9 v詪lL$$s9ҷ' +[(n /o!rcۆLMI_^dq%Ѕtq .\X_q?IMX󦻐vZx%^@Y\P/O4/dөgzME-R/ 8A~"XJG"k9&8-7U}HO|rẏf/"ӂXY:K a`\L7l6Wq5|ain-ԌdԁԢVcXWE‰kuƏ+J.7JO%*VwS@抵h򪙪fISYXNIh~t,k;A*~1{ֳEL8S#Y5ǹW\^ʿ|7Wo{'[ӹgnm)|0dǷw/ܸ޽+r87'{ڃUeFi qigUЎnw(Ĩ)97Yҍz}k-\x>`Nzӧ_Y>}Lot'ez7? jK<\.{IPylmolnا؜p5vC̎>M/Eɻo/OUfxی3|D7Kiq1vM֋ &pu7m T?ͦXѭaFv&$؊K+^Az PPH VtpخBo9Gw`ZHWӤAs`=#?b p·tzSB4JT" x#@N-?Ԋw/~yqJ-$ ~Hfv{&6x9!F~fPmfp>?\xY`wY_SF$Md{q`3l\yzDl $rEqN*2 5` pYO)qAl$0igt>6QD\Ҁ`h8l |AJ$:G1arP$4u_>c -¦6By`fX=!=u͵u ,p>C)5nT {Lcs%56UfttO=!, ^D̕O%%oHE)ϘBLD[;D % :V`I6R$!s&) ƓOU\ER1i=$gLXK xX]( d833ih*@MW-KPH!ØE4c+[8U$ t打 &8⚨,K9KIYÝrBY:Ʊ]vRCѱAl2fe өmTa~ (dw/#$X_kͧ`e`=bO:4Y?zbGWOX 0bs[#iP :Ljl3X>V'䍖i-xAR v ,2%9쎈\ \YEG *K'‚T@qoty m`!Gbې K화  a]-+PI2'BОӜcw#6Btt2j8bQ^_,.`Bњ75nNQmYI6+RZvN_D zu ݘ^=,z:pڀiFۏR l !wm84a[ ##=E3*R46A$7dm_-.,) s<^~YP ?ސύi69TFKJMAG[-kX'm{mꮨ"î\ڗUdgj^:Ph5Ȋ?Œ(Ʃzܱ+#2;Z%=W8w Mm;aZ#y[ %zhosCEᚮ a&BqmZu.b璘->"G5 i͊emzH1t묻ɐpU{Ȁ^%P)hqrϢFmq -> h^([`bL0L>)OM$\0% T+ܻ/ [qAY NRxMA/9 ħR!0y)M 8-wl?/v N> !_nSx?$z=QصAp`<> 8A>O&9ɳ)y\m~Dy+sX\d;3d5@a.">qz 0wnm"6 p8oL1ix*0C%fFO>f>)5:c0f+!=o>fc9ԋ ߣw1B6 6R|JKO8 ~x_\c*LZO]ū3.a#ƾn۱WcGNAzDU5\YZ^_W3ᮏe@|Ia6?K׿ 7?7CP{pm8 `AbNհ.kC`5,e/T`,zx r~2|'|׉(ѯV~<f!3Ϟgb]~feل̿]{_?*T*Qyǂ%yJ4ǻU>߯8~+W |o_ެԎ_ʯ|?(+NPM*xD+B>ˤg&/}wYY3|=߬?SR [ TdoU *쳱ۂg*?%gzWYFã}~vە &q+qCJǿەo_*_ùOͭٳǕ{,ǕrJζl&XFIwogZkN&zYl}c)7?ʏFnMp~u ̜c{K[d|fl .iЯ?j;/UhO}? ;߫<+u=3gvgV.gzL-\4 +K-tCTPkW(@.|x*_*_~~Y'(Ȯ{P~)(frPLKz3 to^^?WP_ j 1T!Wg0.v~:=򺵄cG.PmJQ 7?*_%^?_5X 怭M}#ǷrVO_Vר?OީJ-Qjԯ*_9yʏ~޼N}}qGbR4hݛ1Rr~\R%<+R{\ &e:$=Ԏ?+DWUj,࿪T?a36-Mq^?x4T_T< a?Ϙ1ʏ]T).S5 ˯ѿVV:+7ߐ.HPA֟Q1eklJڑRlM}g;OT_y:L`(0/7CWhӗ® ?eHʤ o )<))(ɺhI8tSJi~|Vx`i>7'od.:-Fs3N.1{6pl-qqX1tPx" h<Ե+_7;%TzZiD AK__ו_>Tj?W@:@66|Z)G5$|-Lq8a6 ܢ'/{C". B9~7N+?hm[I۱Ks$F5Rޜڻsn￱p}Ͱ RE8-.>~xo ^u79c`9:]aޣŗc-ެ7({0=F07OGMQ5}_ܜ[EGHިo7e7,6 }.ŢE cY//:dc詫4=|Q`Iމom5 KIf}E5. ^W2G3#Leegeو^$n6e9(~Zn5Wï/,U\w/_]Jmi._[F-lإc_ VSAv*Fe q܃8VՅjK^7ixV%W!|!_fǓU"y\sp= O0n-5{c\Gط_orF˪'T&{Ͳtj~gz8I#.LsN^H:vP &su!{⼫D  65&vRZſ󨷒AOR~AwGe#Y-O%u"qm`qAfNMBYm&ah\ǨMp5RqѦ7ps{I?y\ )7p vOfyiz͸,$1o1{q69yzQ/IE/Z Y>n_"OFCRo:)X7$ '%yp9p1\ƃnV C[(*41fd.yb}6֦OO5ߓom:جP.Pn*cF}گh辠n<]eCY1)OA3+LLGq3vAPv?k؁*/VcP9%iF%MKzlџXxQ۫եu҈F$r `l`x0 | ulst{'1+L_fq"Rڰ x*S|n&$^a{ɇAjYkeO<,!'W\r1p8޹Ut bB D瞿{kn뎟  {iRdOЩ.$(ӕV#~x}z4obfP8jI>F3skX3y!XcxIL ѵ\ (SSv`Ფ2.FI83 !3YehԈM}Qߎ&O5MiBc~7A.o,m>Ar0BMٵʻo+ CxOi3MI<;B'\^A"45Sd݁ W*iV) :V [qNi3@7.hL̳d,7*ꈀl c2Q\yVϾVz:#a;cfa^[o7_;sMLVK SKW `٬ Oz}?k+-݌k_Wncڲv#^7_{t{uaBP|:d q8? 5ObڧM!OܬM q%,7)XB;k 0Im8 >+d\̙ v>"9N /EIɆ~P /dr\}-S.$儱 Gؔ Ucs%lcr0^6v@/d#<Ίezcr**_s?Sc|/uvU@ݼU4_:MUv}l|ot>:QY':<ƅ;;DɸQ/(K֤{mw~6ݓ./%=-\Z_䧷^Cs(\4oj5yik2v [C9%ssEc墮GӛǍShiioˀ@65oAzּE NY<לּwyOtXO`b s#ts>d\ئ_w?8w-p#^Ay j<_3v't g/cQΔٴ77H5XJja9&<)j:ĤܭzY:iB[)Bz?C1] hQ%esVoc@6jIVkGfā' E.~BfFܭ+#|"uT N/"f:PQMv>CھhprKY n/n]BZ&pӁ sm7t5C}8>[N|>cS1^l ͔/cg+9-|e7S^vA\I`؅;bZG|H䣖Ľüm'pe;'Li;($GB;0H֧P.mcչ[0v*_B*cx05&Ckv'˛v2nwd̡³m;MA/z|p҃a:/v/ً_Mo,rp^א)[a/p' :.| NI7vS)s;vtj+ܯℱB<&O-j#NXIul0tLL Bi%D=9D YGA!!dEgF<$Sv9]kSAcqL_Ρ0oRaX&3L9Nq9@~ޚ#.%CA LB|XBo,Hi.Ǽ:`M\l VHKP%A80C6eK`6 $s,O` s:?gHءJ~,]=^]<&HYW5X6xk9Qzz\6o}&0=c j`C ZE2b#Bp`^롸;t"^ؤ_Иt᭝a9[*m`J`-o8vabz:F7YJ*,K#ۣR:Y48k0(Sֆٰ?Dl?ʓ#̍lo^S!ԃx~VG6q-uo#c^y~mIRypn G">ؔ)8Eˆqxv( v҃s4 3SW:BIYAtzFg d c^qHQgO&J 3u/nUp޹^ /anQ3GOilqwyFt2c~6:4 _{=$qȹr<=3!G^vf Ь '8C".sɫ#@C,9!$ڀh Q8/Hk*h*Hqp8zQХvɫjweΦg4Q7ҬQhp0Gz[?8M8hr_^n$5k5 h:'V%ސ>&9I0,5`z[z!W?%$ Ɓ !B;zX)#]V)^Rۂr:zMpK(TǻQ|}C Q KgiD%4;Jn>ٺ wh 2ė0: G!R}|1K,[;Le)_3Cg9 4ExT6Z |Zt#鏸 MQ%&q.l|[? t$Ei;Q =wYehk#?@0M} t 6D7^rɂ>1 Eh.1 (CB9{Ja`b E,0OQ2ɂ;] g fiR71e!%d39Y۶ec(Мhg,'tSق0M>0,h0ӑD%R6 hWe1l3ESF2]$ZiB;:}fb$Z",eDh:~ܽBs\Oi= Xg,6EnKkGأVI C$Ofnhh|͜#~2!|,xr=d00 +R2R>ڿ=uag jy->(v@:FdB8a&pڡ ;`5T^W]On!άTx9([4 reZ\Gf4}o6t4DyWaõ+dz@xQ./Uå`3ȊD䟅10[ڪN Uwq0]WU!N BcX'pUbWJ.APL;>opKp=Xp+)N62ng#[x%il\^U dLv 1vƌIU@lQ"U4ʧk ID0hae 4S:cY&%@Pʭbyl°pw9MXHAdĒDhXi[ {_]u҉ᑭ1ŝւ  $'TxM IoK[,S~; #8Y/[2Ziz6iw)sƥN:-+{a,\|;#1zžEU !g7^SOGH}|[= |^[4{#B/\mW pVAA #T^Jl<W4`5H.zj )ā?#kC;јN3GZ''#%|֤~W'qYHxɣI. ^ƞ/KhJfCE)54 gaW\k6C㿦nV™}in#5 D#Cb/:S-Q6uαi53L3H~^ 9_j|r[͎9 J̄mwU e8`fNޖWC8љOha(#=M"S%ƃ!ucSXLGrsS@;L~'Xg:YrBG =laLؤ~h.2Wҿ fwXcp{FyyFmg$c:lEJ;O5X5c 2}q4J=La,^|BI3N,@KN$/e@(SC,:OSήMӎj 7o[7饃 qW.cp6Q4㦜;`H\anCsDXKȉZi(ϝHhY♬YCx6ȥ9f!HJjZAgz5ߦbĹOېx80``N+!<\DQ_%.0H~'I(ۏa=q!-ڤ")J!NxfSzmP67ӣZ;@RR8g/Q.R^2F]2V#cR Z:2 ;<ރіŝlP<0oBTRb>0)Ye=sDVeG3Ѝ#fD?@{9goFbY -0]wƨ4(^l1r12|NUHdOe!}2܊#`_6p; Kމ;/J*bʟ#4G:(Yh. 4qEhD{A>_%HQKW)C3T4c$͆R=G~>S yG8vXNwWgcf |;9 lD0*ɨkvb !ZNcSFǵ՗ +A{DsN8'0K-R`OR UPsfinKh%R y Ȃm0  x!%xP2Gaw$9U3UϟiS$'qSbD6vZۨ:\ă)ejhc_;-A#DOz9ƛ+;n{5.R;D8%a|SF,?vѺKn:7Ks!)0oޝ FQp};oZjO/.nm{p?$ FЗ-ekf7Y`D4^v{'oϡj'cY'byD0j#}qsNFx.ԸK7Rdq~Sb@q;]tོaR}yy5tTRp"F݁\P%$^^kK+Kj;MgȐ":X `5܈H iUO;[VWV*Y_;חr-_>k mJN2lvHʰ 6fx"7 1xi֐51cqNͬ<o#m)oq N Co) a #1XA/$3ȁ]lե jW.tUFg|NS97Q@uN7TLz\]d =RH܀0wH DD OaR5 =\o^R؍$fLk*P+%rՈ/;QB{vlRQd#W3{J+ތ逥JmU+璶x3vxW=Qq͢q,+0-f/&8I5,-emQ"hsp7dGD x!R*m)=/@HZ7LZ|Yd φEq䈕M.l,uէgPn*c]Ô⾒4agcm6M,tm)O(pH]>ڲv ,t:u67uQo'l >u8SG$3u}ٗ+]^xQ'ÆD6IeIe MDx3H5⏼VƤXWr.)7 ֫!|0*O<^z>!g0g>yHb)tV܂ !Tc ܻ:Y:%OMȡэu].Q ^ "-?j>~dAa|6BMrMOݛ- =Jy{5UٿNшDY _ ICa$v&X8)mX gc cc7gk[(^à}嵲'vTE9}8SZ u޹%ݓa_#@ BCᙺGE:[B?xǻ5<-t7I&zASc?tm>=z7@~3K(8$G-`]ɮBǂ ͝@tu8o T6GvI;uUáXƥuߨ9Izf!~F:K cDM4j4O:Qo d̓\X ɔd}@kK_wQ߾W.1P"H ?t6' h'y\c "JHq^3E`7JiV) :V [qNi3@7.hL r}\Y]nJp3 QޖO,MƳ;^fz͇Pca^P'oI81!j z|k\/<`ѯ;Wn/m,]Qdbz@֯]]Z!aCr%v|66o/-o'=Ku++G{:_BP|:d >&s}S7~ShqIJjt,a 7S Ij8-ϣE sf#ɝ(ⱞ,Er%h4) J'$[#,kzdt!反('텧Xp=jWǦTh$O`+as?a7-TDøӬqRGyF TTCV?Sc|/uvOa*Nn*/*B{`67: /Ov?q!4n ʒ5ynBc~߯}d'>KrrIrlO8.`v)_cʭjz~k&8%M2[VY'4qu { :(jŽH\8g9i33j\ɏzWWv8C(2[F$o]gM8 N\z0}ڻŷ͛|zH'V6w֪]x{.9AFn޾"~zkefgXOt(Gnq&7bzbܚ.AP,#ܝՠKrTr/L,tLIfҠJ4zwZ!jGO]yk|KlzIbCpJz, |WZ 2&P*G?k/C=6j5e6F5d'5cm}JNNeI1`(9yFU77@ @He_;$ÄP*m!R{Krth5%9fvϿ浤 [-Y`&+3Oʹ$8J` B#a|LeEbIM*ZN5ZF\*'L ~ 9AeHY/OغbNTjAzDcZ^ 95LitY!E3ɬRq>x;|;{;=5-@ć~qދ2}u#NȞH旂 ) 3(I- O[+w Ⱥ0GLyTcs!dYXI%?`I T]Rk;9o0G%vd|r LNz0HasG>j웕z=@slCrA^ ΄cY[p}(=lk3MefeJ/F!9ٝy" 1w,OaV24 EQxWb.KYucXwPlGkϿb| %j]]QZBF2h 3;4f}e8M&l_㼔wjP C+f#G ;f%$ h +@2֗Ja+eHt1uw)Jr,c Sh#F^(DàPEz(J8֐aŅdQ`e 9}*҃9["i HzXkvW0Ț B}ؼ6>q1sJ, 4(K{Ji?bMJ*K\p6) uLb@Y@>PA_Lp1dAhGؕn ?b W XzBᮂ X0\ihymGg $1خcl%t|=@ ai) !U\t(KWPt;Hs =>Aj4M%i}f`k&;y5d dIkŨY &t$d>LpfwTH}^""ƚ#`%̲ nJy$ȐIUZ֐mZ#1(TYЌ4 ZZ j0 ;[O.ic lZ`ypvĩu.=1]8:D^HTFf/B/<`@Q3-AȰ :rEt,Q^(KyX@hwPQCC@& : IЪ_4`.xo} .jF zd+;. ehJ Ib.;-ְR s"0ucWcS4 s,EjڂdowTdő uҙ>->|n~Gl^,0U;w0BL!NR:d~a%xQ,d6ͣolؕC`PTs!,G60![[x P"Y H,/&ЋU >Κ%-Ϋ:"H˝0){J)/fDm,_#"ThRWܮĬ(kSc5䚰Y%9tXӢ5] Qd!erЈ5}ߥ)Wu&H'@"U̵nqIrVI^b'4#nV7%BUeVLG yL! -ؔ9bcv7Ba# ;z^\4SNq֜Lմ^k/ 4 u`3gIR$9)?. qꥵ4O LQ8sKCu~ /BgńAtd*"P/LK"T-[ \&DY;AM,Vx!2)<ZMx9,+b.ćNTRvi}qt53Xy3b w0L E,5}~>97bl''StwGdtKA/f"HN$9^*0xztO% 4Ҫ& i#LP0h'e1N"Z{7`ws#L1?0AM,lKvQQQ bdR7Pe/L!{VZTƈo/Q{9v10FY:YIN=YՇsArOkfBpb׊†؆_7{KJAԐņ+z o |[x[ 5{nI뇻+.b KUMZ2>k~V7&|Cb5sKYOٚ1#Wߪz?^HBV QEA6duIx}Q{n%R]s8Hփ,YE̽)ǬN\(9`2L\+ &`Jy< fM7G3}Oaσn9!R2A {BC8i7 ۲!Q4E0Qԅ6$y`ڧeG}'Z {# )8 Vc.9 4>7(ʅnЄ)a? CWS_]&f a&\viHFx*ir ;LLl`z =)}R͐& TF Tfijeΰ 2#xΧ!XDV1f5%fr(O )0隰yW54qXnj )l%Z!;E &εRxX(nlmŁ#47hX[}<ʿQ2Á^u6Ѣዡa ؓkc+Aq<)e^"~4s !JUkd9-SM3)uDF)-@dC/E+.о8:HuS.ח]d=į{'> {opjR1MN\nmnno5hb$YcGqy#X,Kdf}F3wqtyIp+#³8k R['XIPIf40n`GY`Z惔IJY C 4qչe2~bRlP5y'my۩">ܯ=YSm=Xnʠfq^,BCԉ<F8j*85issS}Wio}gqkx4}B#9J%҆28(gX9)sȎh37-ԯ‚4m˲IMPCz=6o/o>H_;9|G`WP0@Rw\$:),YFsZ;&ѦI}qa2ITGaЎ?_,f/d9ï-tQIQO|DAv dp a5ðg- Nw{T`"=8r@[5b8Y;HhtPztjDw9EΣ9NJPZC@UĔn ϖ`  rGv2HNL8&9nt4zU9 bovDޮ\baB 6 G<)TY)҄H^]1Ob6XH6Lgbmtq`vi,Qǖ]`a},:aT8b"'߂6l+ҹހ.{Sq De:ϰӻˊ`V#~O[tkXOWN|.HXxF=܌է3 :8C.6R$VIc/`;;,gkw2(;z6L)c[Q`yN!z[.'^U᣸KpC s-qoxQDI̎w+%p5+OocDvV!OFrtӁr\)Y/k%\p8?;KDA@3M9P^U)5gH:#l>Qd LCCGgEըөH9pN)RĢqq8''M7 㴝˥Dgo*:㺟3Q!3Taopܽćq=`hܿ̚5۷ɷ92cΕ(sMsg$j`! w\J:7!gg,2A|%Ymmf܏9 !Pاô̊QBRԗY"^cu;u"jBPy R]Lo',' lU]T`% 7 ` p+L[9j#56fJw$od {|=Q ;jrl ;oJ1G{-|i6@di~f< d,Kֆ$V f1YS2,E`FlDIpȧz"OB- 2B?p!?duuZ)j85BtpO1OH~4Y%V-8IA U H0o!]jjockgDgXbZEo& :Ixe`Sa8 Z x,ȄoxLГpcMފiv5Zxenl_ iAm7jCx3o@ǰhZ6J6ޡ]`s;ܺm|@n --MX%2LJp2Lc7J4{ ;@Eb#p#Ѹq^I>Y!ɐC|I)H):+*ތ<s8Nj2ZW;444GbHPj.PeaHa(QJLD5|?hF{d+CZ<1,, 6^.п9L~?CH^kD&ؤtd({p*T0G'"_FUn-="9Ԗ&Y0 ͤTpb C?"@"a]W&FJs gdG4iXi3 ,1yd Jc }t4UtWqjK^EJl4`eœM^"{oK4^QKEpGE/)f/b0,>{=X Xe헸g*w2FYn ~f@԰_:^:k\0Y2$>`wS.ǁpV{MuUO4~&5 {C`fWj&CDk"7Uͫ[DcI}jvB`ZO'OIBx"v[ r%IMd` '" |<?RƮ]31j˞f3nYq3V|(4Me\:@I 51郈mHBޞ 8ι%HxD9*Y؅ uN-Y8c>qx4X_iC=M.fKpft6Z)5(ٝ]Y==_dda_ D'5&>ϥA<`LlGr0 cxq)3' Y ֪nGh_Pn-O6+ &6=Hk,(a~? ? /_B VIj%TA d| ?>)/K!](0.,+sfՐۜ-iaf ?y[ E'8yx96i/s#Ga3ĮvW,a$l4{fj:3KwÞ%nΰ&G=ڞY̌HVfWc/ e, kaiA.° k ?y_l?DVVUš&2#N8inNkٜN ș7ڈ!Fq\kĢi!(,A*ayu{ӲKqk>Pi_+^uH!Pe!>.#Ko@: Z?9IdT>XjJM<uJ*cqsT7}%6ɲ@tpt.,z{$ыF*+7àq >䐤F;%7uL] b[[I|Ӝ[?K_HJs_%(Wj1.q|}i^Y Lr{n=KkOCwݽÍJ)apz͈?oKP9* _1(V/[pƈs2 vD>Ǎ~ww#-w;_/x2OrXmYr:Ly*a:AbOCMua@b{(]PÖO,jk|%bb7F.xEǭ],:c?Yih=o< BkaeKKh0+\},AV' Z̬ZbU"X,Y`/F]|Xi ^[]TCv"> 8Q6P^~rutP*Hu4* 5D,pOWat|Ǔ@,t਋pswjC5Չ4D\) ӢCdDǽdX>g(-Uic#E7.kC*;i.gV^&$ BnJB`6R*{{ ^e VIU ҍ#J[\9z㍛y}3 > BX]8ge]3g1yd=yK4Iy"sX:CC1u&NC': N?0a3&DRbuBy:+<w cOic|i=gP> 8$D B-FE :Zx^Xgxf;ȏ,1WB;샄8ƃD%+Sg<|/AvUp3e4dKFݎf(Ol[ NJju|uZvϩI.B1kW.F{TFA%0jaeW'OGB5OX!L>u$pH"=HbPX BɄڠ  a6qOÊsV}w2BL}V5*d{JBݗI4n6LJPė3tv;dŸ)gHZᾒSO>rRƳ*O^]#,# H%R.I#Bq(3&$Zߊs EpGtES65)t9XĚ6ϗ׵V-e֕VݹtOZo-w.W6~K~/y$΂t'Fwv睭k͑kN܄ DGzw|Ki*3-"}kV-b@$d%;[ 5WQnTR -3Ʀ(~xs{aT{`ݙ(#[@S⨤&sp:Јl d]lI&4'|2F^}t +7nQ!o4ӼK#!vQ!Rb4yy=" "'$}/ j< 9M넣V*%eMdFmz#6 e8+NB>fA.? 24$ܮpB۹[ox^%5egcI%]r4KT$+P gTi0Jx*X441ʰ ~G! ܈뫺 6I ?>CXmG!F\ U)wz#"A!6Hg&I3OߢQ$z 㕚'=XڵvԆQs YT8%0 \$kRܪdWP%rז=HH: zp8u,Bݸ%MQ7։lF̖#(I)Ef/hYm3 rBi>R"Gˍk!UO N~\ީPraҒ"fehW;xK B]XonD#?tZO,N/Qc4EμÒIBzO?:^XVXf_=ςL*AD%Rzp'/htHM 7֘9z2<QdM@])ˈ( ^^Byr[=Qtp҃mKAFleq6*eѢ)Iz-ͻi9|)mi皽 Gg7nG`znغtRz6\R6g'(ёshrbSO[J,#Fӡ m G c2JYW=eU /K4%n}PFBr,ZE$sFpS}/L#| %kn3|;6kp9z׃g|r-xۑEHYyyyi#ToԠc]wѳ;NIAlN3sh%%#l}uFvJd͗[v4Gt ]e_Y2=ZQ wԸR=7 ѣs\GJ-FDէV`oK5j3" Am\/}M In1ĩl-j@'8TErd>FiA ?u ZY>_Ma#H^jV(ҹb I# =YFHJ!N[7A S,[*1H&YN ģxz3`(RM8r2'm<!cu㠷dFULs--R]BZH~_/%*aNܹ& TnZUr@SIgB4>kh?w=_,\gDb`Х #$y#HPIb\dc56 iUި +0S"$au%[V@O5T!}S|rIrp-v3d|o#xـ@'$1=يCCBfZ*/e.2IF#L=V )HюcRÚA6,iDS䛟zݒ/}q1R^fQu_!=Cm}r0,ܘV3߄ fYe\S%\q/unp$MHǍxono4'.nvwC~n`%H PйSQ< ;lɜ6q(T-2X_tlWaṉm\2wOB-SE.Du9ns&6,/78Ft`p{|5ڡUݛO'̐K^8۹MT`(nƉ l5Ilb玲/,EZ\hZYoXKȅ3ݮ'bo{iTFD@uYק4DcC"y pI7sy=4faY./h;*.:F: -6zqI ˜H&_TՍ!"{lX+vԅX3I4i u?!= ZlmbU976C@ ߦ %W,V^Iȯd..7=U-QɽNzK$r F&)yp6X.TKj5%|?h:,CP8e9!Va1(ʶf p Y/Ԥl9OwP⯷O7. *|Z;-d]moҝ Ј5-t ݜ R@Y`V(twd>] U,ߗe=Kt>5 6ӧ7mu0b#ambh;Zfpjz[ iurO^Blv7- 8])z9*?!ՆdDK,E~ Xfx, >- :;FW/${MRq2 S-(FUC`NS*$7/;ҁ6qFezbD\DЬk bT!3hL쌍ҝN"O w&hq4c㑥 ?*+izjL Ujdk~ 4A:xEm/]Oڴ "NO{[\ZP ?k1&_/4MhwOO,'FOQŬ{Tr4:Pj~`U M.++NO' 6wN(?T| 5L̡xW :mɷ)w R6I d?@\T fy$Uy\z =_$+)kڠ?g'@>iFIf%y#f5&q&9ce0 H0v'LW*ݘf@(\lHcTЪؗ}3wytA,aƻ̢JhKfA ?v1aS|kԕ~3bO!& rYq+ޚtß/KӝRGDJ?[oD|@ֻ񷻋ܷ>#'}·7BDj]PXm8 G_1369Mj&: BͼQK)+?EAGCFyQ,ՔsqUp;H/:L|KP6:|5i*=10 9>_X%[3q-;4`7O]BUɡ ϒ}̜Y(K`Ưyb14nk#ZQ+ibG4֒Eec}cFTeӊ tcTLܟ6|h熳zY:ɬ/ԭ)hNժ%颢RbzD{DU5wAX'5 ǁƋ&0J^ؽx9/%?GۯVA*jofazƔ5qf3n.yIаqq d/f!UT b&$=~S{V9m2e( ѡ4@ٺ`20u#8WYsJѾ$ʓST]{|JmCׄB,(-$&ES;Kފf]wH\~O1g.M#:J9 he)HSBhO?d^)YJtSϷѫVr"FsT=4NBap?%ɔ(%Y9n&FsLbt+X9*H^/~y&3%5^MT,9+Gpcӆ]-C+lu 9s nKxϧ]ܒ\H,EZ?P :&gi&?w3xnpY 3'P0g#wCUkgQ>38iZ3O54_0L 2/et7ϖKb,ĽcGqpȡsiB)漢6浾iQR$}9Z.vToD`,'rlR 45e"$ʔ/CU$UvQ*tu nN1Jߟƅ3,3oV B(!h n5}$/2 c \8͗2ow݄ӓd@Ÿp{3dl`klz OE 8QF{!`bE e=P4]u lBLܼAMI .0!ff3/fZǡQSB{j:wolCfbhq28XԙAJ54mQ0H%of4S@a}Sxk0%8 EMaбuןD$kчg7EГ;a< \$GeSVa`Εtq-dE+^Niۦ5-5ق`zuE!xlX6 Oda "|#-hx:1tM/ICZ{\)R G`e';WXFr$x}-{nMi+߯$' ::j{j%"Ou‰)wN ,TMxVu2aL]! cLض!ߒ>KF=潲#B׵ڝE0:=M3gf'[k+֣4?A "]c./>pMsm`zdNH-Zݡuyꤚn-k|UE&;K0MfTZ?lуW}Hdp%FWwdo]ca**X:NX\0Z9qHpDm{,4kS Ry*%1l"/ҮO]L` ɹ^~j1(|O^l"}ȼncϻ}|L]t؊xW9]?`I@da(%pSYκӾVa>1FXДfo[N[xZ uts~Xò&mzF+Ժ`g%ؾU Ha2d#avt+G7 `9` &(ɏzOM6[~X87 ! 06D&\HE017@{hGuLf/ YE'5D rK |9X%~flv+g12iڛkde-iH$Fd\uCvj:ʿ HHb⢻q/M_ЙDa}@H?FN<([T$Ń52U]|[x4*9Y`F/It*3pƵ$wy~ẗ́BآV;fzI4u1(jF*i6&2b7Ayb L]'(&i#}YG* &BD[:DYA )XLay8Vf45P.h sw@$=Rҷ<޴ H@?XcpmO:)`sRB>pΚpPpʅOaZ׫ t UF tm| j>tϗ*aK4!/$un!ʐa\V||\9$4^CI~U)T wVKdӎ*;'tSuJ}oczxQX9;2doJ{ ߆1|+܈s RHa|ÚCy20D,9R|x'ɰ < U2emt苏^{;1\NCw54<^gkJaҲ_8C(m(yB20?Q0x3p}{`AlV`-9"d3*B}ov$Ht p ,qtS9NY)H'zW}+xJfbZCָ!bfh]CSjvSsa3(D9qd(]J`iZV+INNѪ&X<ѨR5{ AL=!g#sɨ3FJ(b/1Svﹳ$Ģ%$FibSa պ!""v&ӂ $Ia< h% Y ԶgexMt_dMQ4j$'Pu~ra~Iu-%%.8dlArb;oA4i @8L7;뛚*TkoP{ce~}cn:IT.'H{VKBaq%j'RiJrZkcgz]dn+` p]&>,U4qwq,1ZvgZ^z !ýfѵ[?4#vbsuh [Wm=l&V _%2hx37t0jyYz׉uDžcǼpϊfe"T=oyΰwB@GD?˦Dxq"nDZR4F7["v8bT~ MgC|R|M" X"b_4 xBvND (e5|nTȧp),dcj)C CpN# zEqMHBVӉZֿ;rI0R5JdٴJR+3p;]<~QfղVHbo"=*%e@\)sƗ]W.,ZƨfLjI""F=E3DGDC7{H_fPchM"׮ݷ)WL[LS`! Xv4'J|+Wv~b}J!+(Yydg,G5F4-InTTK>{& X#X^d$S% rc׈ZŒO4b3K"2tH ..dH PtCf.>]hzHUA$Q3IMmU4e.9n`aPK#;R/Jp;K D=b҄v:%C$KGU#,o.],~%hy鑪g=Ζ5ўqE|/^ڿ 8-AcT~@SliuzM(k k'Ȏq+ԣ<~)\V>HxEĺ;@A=j4ϋn}wTuq Yi .-_Oo *c|0ELfil)-xbXJj*If)IsOsAX+G"a_"UOl|kb`]~}L ,ȹ'NBxM0F)f"S1qu/+oOvZHwv U~.˺fV'IIe[g("k3Uł" ./=ÐUɘພ{ ۷n)@y\/u;/_@ 8QT_P-Y(U~w8M`@LLGt:gcMzſwѕ3/9eNmhPY!:#F tEn*NU 3%U'jOHA H#!jbrZbƧ ;GHQ(\httr"FZ<$O,9K:Ϣ:JR„rlqUI$^gR Iu]xr*bH֏#GEvȍCe=iG3%y ٍtk * 3?}oQGN3,1qݺs*q:-g7pM =8@@7KOFOoPܯRI0 p4ʮK`0z6 ^*)>Dh6<*BlREe ⦙yo6CC+j2\p~,/*" ]O z#.gu}H1n#&g[rigY2ilyUq;(oyʹ-߼vZ|s1}ؐsFArnDɎ8ѐ( =`CzDc+W,b:TjGMf.FYjr;SS1Z&|$bDΔ0PpzH9Jߦm;\`rm(_Kb;;[[qtgS)w\cn#bNbtklEH [t -tNN o -y^^́_|2agE|1;SIV*x{x1+EٸeC!K+ rfcع jHaX6EC@E4HDUԀߜ:aYK<`mDEhD"S 8~tJ=, !\28 I,e^bC fN?I]7(=DGTP-Ť%5ӸU;bHh؂Y} A+(W+e>M&Vrl(_ZWh B[Fbkwq=)]􉚌Z`kNaOOGEӬ"T REhH%VlÁc#\-Mtl{m*T6c Pй˚=y&:U?[gݧQN7W83$?u>`W*z!@̙XPyϮKfw TH́Gn/^\QyN:fFʏId[gYӄ* (S4%Qվdԙ뛎$^"iDpSFbawEɚ eʜ2DƼjaȟfl"eK~*AoC>16+&`![UZЎP9I:#`C3dID*(EvL%KԠuV0U_}|RƢa։&`7HEʧϹ6SZBҧ +(I.%Lس5{dfUuG.ݭ3Urh)us88{v c*{xǝm (퍹gi ̶GNT&ss9~O)?ʧ=xa5Ҝ*"c nv}:Ei;]\4:f+$ ѰW),`eT-fܝxd&*XN|f泱r h><oocE:ڤC@˳}$míFOɹ,BƐj,=KlޞR,uYp .i>7bV,{^LPZ`P&Iƅ3Z-g ZY-'#V Ī)؅&X ˸֋PfC8,cHAAbHi]7&sɧ \DݔeL+l[#Ƕbi~DTSP$O3ByG:ק-߅] !q^Nq_Vj+"[tFޅ)>ac4#\>AUX3r'nEUG`Sˬom8WAmFi1dU6А%YJFܯ%17k]D?"V+Z0 4&hΜaέ%"صxjcI(MbąN[i>6W|ϰ͉ݖY 1[\ˋJZ]7Cq\!68|"VOo1:l#HNC2K;0Zq$^-Q.0ʚsB[> Drawz~cUdk}* ՊN_tOS^|9qqkDGd35فmOaɹW<@tyoӱ?/4EvϰYq2h _q4e͇^z)EMj^B:VnzFb@1DTi,$4Bu h~Yj]Ntl0.S4|C  Qͨ@ i&zӲ:FuҍuQiWFu)\}wJlB̗uu BTW⚺ϓYW5vNNі4^@v^\qL =H-IVRG$@&~_*3fHꇊjY4몮޺y=欌'9֔Eb` 5!TH-^v 9I,/Y0c>Vun],Kb/ƴ;k#; (:yyuO zl2k! ̧ȣlRre+B_ -L_ *$ Cknqsk}8>I>jZfY}5>xjOO߆0t\dc١YOݤWMcR"*&5n%v׷W7xƓX3.G#y˔XXw9M[O+LQMXl>ޔޭA"RG*J8B#бrZ%" u5߭lpyvYxN#bDT@rC[Jh9)D['_TGg!y,!OLKpqF:YW5 yȒ'ޞ̦H>_'Ԋ, Bx&Y}!cO ;/ x!R>tM"ƴBpLDnbEH 7q*f7k1-ʩowǴlXbBgINJw~Ch~Y}\?COjkWr\x5}<yQW'(Le+;`W{ ^Ҙ*_ }Ck> ^fԕBfFDn`^$Q0Vz7N QTxC%#% a;AS6qSR`83E|v}Mί<ȲAq|ٲ;mӽq= @Bw(53]O<2Njc HC6>,GEh {ڰ;__iB0/bH7$.,G#SkDm{.'5Z`o^x?9[R幐27ոL 2 aN9ZpkXs`eeޘ ;t}#NCtɓ;̕eyMЕP*#O|6|gEheF!ےXf5e;ɑvr[BaU.W|e@;( 8}˜ 2*\bgFשɃ+'>"'$ah:|cHHC]P1䵎yAN~ѭ8X+܁…]w.+qa"Wr湽ܝ\g]Ǐ9x:̩9P'9m|0a|$Z ZTRXXV"殊Hi܄RD"]hWݳZ0s͒}ʓV/j$[q[+* ~Ň{НmФ7iŠl,P׈ i k`OrOiPьyِl|f8Si|P99QR"֯wT\;D^ݺMaEKjVȍSZq6>"T ^Np Q1;WT|id⻺}ӛR--Cuz.pm+O!ʘ5iIdMa-14:?Z V\[N oWӎ{7Nt|Kko|U/l3$گ{?F_׷צ_h3ȋ7l-?}qێ`hɏϊeUC?Xk]YvC톔7p4?_J&)W.9_?D:XC1«?"yHjwSLwK =|2(G~G_+^|?t^b1SO0*gqx%2Sߜ%`Ҡᑇu_Q;nB_^YG&96?P1M;=@qNA\ͩ29FJ ĈU[ ˁ]%ڔ7Dw .3Xce+D$ͫ?ko?\KmnAFsᡫn5۔vng1xl/c?Ƣ:5B,T?VqF(̼N^Q^̭}HH4y {6*MڕdP c(3?`9w=07# LVh"~, !Yso܏HRl=󽺱+xnD3C߾W9k_Vvj,tr V\X8bJM{nXoG>n`*RX5xyп3?SDi-\UO\x^̝[:swε.EN!MLKN2`dH 7nylqhK/>'Ov$1z?C6*@u U9 pnLO*E??/7;~fS ϽmJ䝯\xSMOgySr<߹ZmmN6t3+  s&]]m9Zf mS^+M+$ d~=9^ܝs 3ŝ9 fvɽ$^8Uֆ7}&̽P/%4h 3BDy6;v[ [,͊i_[8E$곰Z#H_@0qx@:_F/в 0%ThTa!ǣzyn`?@*{pw_0na-Ub(\ZMIQE/ 5x B4CW~ݾs΃{?|(~~|y4 4fc?ݒׯ l>s (T^{a}fŁ\ۺa3,JG&,aG/k$Ҙ7*= )EKz"lI)xfZ3c`{PLnsl"0f CD2Jg v$ɳqrW)Ȏߟ5w9FHUXeF b239|aG 8-ᙦ޸u~#dBuqADÀ/{WOճI{@40}p x[r7BgɽwkkVMܨnnNG,yޚGlRd]x"=._V,lc'{۵dX80w{0ɸW&Nۏ z'tlX::rb,0ə?>H%@ +~ZėF'4ME-='yԻl8t1AJl.!r!ŜTLK;~T!n]Ճ[o5KZH}΃{W>'P)Hwo[[r]oιkui ,pUH1Iܸ=ssyч2ؗJ fr~F5q鸿7\ugΕn{w'ݹvoo8tג{d:RU9\UqQ:urjވPD%VJ1O@yp#sb~{uP%':W1֙[&Πxk҇N- T%.Ѵ.ӈ\\}e}.Hӟ&Ʌt|)7eA'kA^V'ٚ0JmpB] M:xs ]o6b/i(S<,K|wt\ps Ѳ;ymuʈ2Dy{4^nC8ݽ=gm'I:t#uCa0OҎsݥDDWV| '-/JFJQg XP)c`Np n&?XvY7le=1xmӨAp,Fav|7Y 'ڇH4^ [_MlX컶z9]Tߙ.ߡ^_~N~fuM8ʒ_Q,?D~f,n{ abt/muܟ\â_Hn]oXfG ,,tqҙκS^>;c.LvZ9]_,\v(D^ W;,|s%}sbO/v:Z խVz+'?L.ڲp8{X~棏q;\5 :gaywx ; D<4>SQ{bM9S6(+-t4w#eLi6wRNx;˓+B'_xa&zf$SN P|Fc & =*.gWڝoղwWI9HԢeΛi]ݳB$j6@s 'ى U[g ^~1j\۝}OiYZ^~/t۔vb]&7}rÀȉwSѠB,5lTبtoU'v-8gi+tCn^us cIxlG6i\Q~QVO/:Clpz0kG톖}L'iԺZ z޼޸Y>SݣF\}wͥbG Q{׮n_mfG)Kvռ[BJ5#wޝ;حv}}m7̠|%Q$Fd3mĴFEj1ɽ _lCחA"xD50\@@K-Q`yRMm/XC iM79n$d["ŝSH=}q?ݙp~Rq_V`Yfzt<2[HG'}Κ׼ᣃ+5.O>!}-|a.;nTSN5̇6vGۏzEWכ'_Eݲ|_]VgƸ ~5|tO*}a;de~r{ÿy_܈N z8ԬY׾AXl _i촅-~==ҝqwe:E GukCb|XBhUblN(X<sLeҘ,eaueOrp=|a> ] @XOes7#m@}P9 (a[ߺڼ;=~>λ7n#@cj ŜNx_=_^(km N+ ݾ=%?M?u-6i86K >@6Үr-w6tmk|tR}6,pdlQgg N9㻭)KuXxQdmYzs oJ}CV[nP󣢎Oc %ڡ^-u\E-hwH8a5 h q\<BQ{5 P@)@wl=%oآqwfB|yrtd+rS"i[ث(h#`vyBo 6$ͽRyh(aJ;Ç(VmE)KAY֬!U0RKzD<-7fxN+g7[a _fƠ䄶Ү|b::dY}|u8$vMET/ˇrVKiw0w| kaDZ[Ұܣ   Sd*tT|=Rr""#`k _3?$[Q Wdwt] si @OҗiЙ%sIU(V^ůI@#OYCC^yuMϨ%Ο¡.Ϸ=C+{ NL= ~v5,}DNg=m 0m/57%Ы.=y; kJ\ABl]r +ot;fS=3JEU K \<8t]O ^ܙi ]IN吡 *$nU!w>]H"ñئmQSg6gS4eOzG޽ aeOH7vw[}WjZtCZ@&dx:TԆ(]w8;heۨ~}V (ܢ2;}<ܗҔOSZ* aԟ&H9=%瑟LKe[DR"y,+ G ,`0,CNEBĐ5:iq0H#`e Dў,61^=#|"k1 JZ3wN8('8L'mTV*,xt>=%ny\A=pj;s0SE4Òv ! v;FH4@ !I$GX1s4ogoثg&J1dmPpH![,_N׾zO4,T"sMD G4*Bnt>uS͑xmD4ʵ/f֦1w:8 t ztN1` qr N\',gi__6XV 5AUőK=ku8xB0zWC],P߳/=m½_`\<VoZS*:ٙCڈS<@v tBX/|gJQe$Z9^@߄6ŝw 6w'](3@Y' #u] CXy\l|0|lռt(tI+E?]ȏ])u9g.~uǓ E6A4v8dPI<-yOa|N|vj#irev f+Ts׷ ;2M}4082{##pՇ4sZt^ɮ }`~0i6@!Da[G %(Ohӟ{_7'  Ѐ,] f~&r{ϖM]|׌5b1tTU1;qxļtI^'ݎih `qg&3Rǻ&kEݔy!^)̓O=>-!9sO`xf`=0CC7Rϗ Cy K\YW3t{ۿ+<7l $aԨً|_nRzy_oA^b0(zej,a1$YN溰d8 VӧnIOIOiG ·?7cD6)]5ØXV/ot??"R\ L\a=a M< 7 Q>j釛(y\ܭz^2;7TƢl)f6זb.$?م}@K (vʆHʁש [ 2$JǨ`UNvGmӝ'.t$7s> >iYdA>\A tgQ;CP1LEF6gJ}7۽<`[ƒ՗%n~J";&e~%{x46 P<&?'U$'Yv)h6fÁ!RD7-<2 ˡVT>jHQT}z  Q=)Y73_ӁY4nnk]ulםíR=x!]^]lŹNW(Яb3 1 Aމꝁ b LH@Y9g]Q z9XdOoYx1]ک{n1o&?'W>uD|i7ӿe7߻?$[v[iO;?nYew&qK޲ÿy=yfr׏u+  1>u=w3\GQm5F;+$*=x)'go~ߐIxO2&nȃw||?|*Yq,_qzq1|&Fjoɝ)y1.maFnH“j>, 惴% qɯu0,G[g>0'#]~wICxEuh+Ŏ'tˇO} *5rY$ WlO9zA"u\ߊB0vFZITyszza}}Ɵ"UYG 80?}Sm6FR gؽJgI.q(|-4𚒬YE/M;bz9v c=.̟2,MNhD { &ҥ^{V㜾L)8Yr,ӕ&/jtBC8mχ-u&r2!GJ>&,|q3ϫϳD&>7{|ϟc=P}P f2ִY[T+Y>e{6)M¢$KBZD4ꂾ╬xh=7SENF jXfTOLf,0Xd9DŭrDmBv0s֖c]CEkj#zMhŭ[ 2`F|\—ѝ+gz'3C0s;_{4֗T,bi!s9e a s-1)4rЏc=Ve(0ǚ?/93PcDW:<zȑk3I3y2guܱNs p o EOl{K>KgZaNzfm&ˡ]o|u7= p]<kZ&aE'2A$ ^XuIYE|/L8㌗[[¦ ztxcG:ww\88 4~LRimzСt>,{za\ %R 1V.dJRn8N\벾'P(x~}3]r]R7pux-t1O;*EqŤ\\nESZrŭ8-dY*-|LpT#Y}@kKU`xMs !LX؆ƾJVyAkfVSʭ $P34D3Aڝ9Pn2t&Xj8ٔxYmS4khvIAY|LA{^%gϓ)"7-U8]{T-Y.hՒp'őct" YG8Kd)̰D'8- r֭[idk+5E\|1LS. U 2; *bՆ8b)T(9(DrBH}%@sQgCfry1X+Kt\ޣ-7!!١!>1s)y4tMkU/.Ry+HS;7uCĽ͏Y/y~c VuMWR=*I՝3U%uI55=*Mv fFdAe-ڀ ?;^^<{?ι7nL&SRV{>*BW 2PO\zkmps/mȄdӝHdo~jFWx֖ICȾf,GAʘ.nZ̉Jr3c^USٴPLrнSȸ3K*ݧQeVXnaԀ~B@({eb+N@RD~^_:Jrcikp^d:aD˃H:G i9f̀g"7[9+B,7JҐ[0:-g`$iO,b1Ii6փy j2o҉*ShVu/CFA7b,AgNkqԟ zDy \ot6炓(5mB)y6d(BD:zhtn&6]+W:|D3Okq3 |`F%GGg 蹈d*磦{MbRp**zcqny=dW+2*9agMT}3QI0%%fF; U^j3C?= Jw'"edx *Ϝ1}EUg)Hl)bl+^یqDq7>dOA+MCQz[7wWUE]˘n"AHJŵ,_^{D{Ҋ 'eb Lj&j 27$OPNa^c6SGl?s>z̭:pb)NBb+01-#A-P2\pw֖$H-<@'ړAŞWwpU?Ջ:_/&yX+/ /$ qX'":nU7Lq֏:[Ev6ܦԆ݊n%|kjF!'3$dLC* C͸ފ3LwTs.θUJbֻG,x+KBoX H(|S1]WNР:aVop;)obCaۻ_|!ƈ Ţ]&@~}O]4\0n$ʬƬձ16p5?OΉ5 ^O]!pq]uOuuY`{-&G;6!Gt% Vcu,qd ˤE|Gg:@鞖:D:9p99ȯ9'%p?@v G5ԻPA~`EݹՌ|*2FJ z; 7ާ 75֘cqj >[hH61I&F y׆ iTtP{kB%cg͹98"+V\-vt"gb4)U% #4b^3h"]K :- }(킍"B-'C0mi-xHhl+vDUԡ=RaZ,O!Jd!~>{"ڐ\ R9Ԡ+>T$?%_20߿ŤD2lXМ*F]%@NeYY+inXd0gfd;Goh5!%skx6> /CS^:m4:GЁ|pAU4 Xz>ҼsR%/1̾>ة~M:I(ةGDvDbd(q-C^8+UL;S 3a\Zq>9t+뢒OYz09ΞYa$*}Hqs&6vt$:em0>4t! ͍XL!B2zyXsXB8~.X9:N+i"8unLByN/&N`h[ bLi,4*h wI}* uw\s:#xjjp~䷎[pW3ԶFI7cⰲ>V:6[t^7~Aт-m8Ic2YmSk*y:[Z_з(߯%-azIǽ%T;Hh r~^=۬Lݬ՛57ZNQs9r~Hޘs56*<3U͚f@#5[Dz+ʬARw15 9\h3).r.-&|veٴ(!%T؝3ݴrYαlW4޻r>QR_@{}sgsXk?wT.xB\VDG ùD RX ľ^ڥw'TM#dȾ{-shg/XV7aңZ(5fz}|/)]@rj#߈BQ0—Vy|L_OgA3{3!cG;;ǟg,S˄5F |GM^ǐԠ Ja2W( w8,wa`5+ltuUtmhؓs_3P#?^^ ɽT(t0;1fElǓa8XŘ>4|>|;5i a=uM\̆˳4&B/bhA5: 6@ldEv9?+j!mg*Jٽ/se8**FxXpf`,JD H EnPj4`?݁g˪uUwEni{Q8T](A1܎5L&Id0U0'Ķn0$ zڕl4cDuԏ ٧2í(s?(e宗F@.,| %S.n<\aJk>Uk2b]hW9ϯg>Ưpd~ {YӜ\AOJ7P89T|}2 -A _,|lSm-ٍL3a?s5't hzCsp\;!L)3Cqe 9'!MfF{FlazhGrߦz8~|eSH^I&` #7A"]Itil^kY4+)oANUζ4qb#}niy 4}!9{әl(jAG !ܥ6 JA~^"Џ7M[N)uw&gsxӗxH䪗ͅTDf[=eml= ܾ\U\!mNڏ%'V3~l:B ۫)uZOđfQ=9HSIF>)aV<*N[YZZS9XU?9vvT%p^TQDV6`\jeЊucG.fdYb1b_`6: {6^i ƿZ.ȫOS(SLP[$R@;о㥖 D[R쓽+(V| Ax ld$d/+ g9WmPodG:7bvqŬ%8j汆k|Faڲ fE2.qLÌ.?ƕ/s_SH3T<$Z +RO\g꭭ a[$aeǓYj8hJ#2>MLs"ËɗLjxfM*Mmv\vKW6}*̍Q0 pw՛'d=· 6,QmA^N2ПPn՜̋_=sX=?xL~ἜO]̻4\ds?&5/WiKeYOZŌ!]V?tEǙh]9o5Yl&ޣ*8xT`H*Zq̼f&e)gVVAFcXMs>8yI|p鐮֧M/G)V-MB _"ClYo?#z-B='^UV*9iM~^%=W7+l[:N׭ld2Ɂьו 38@1I&W8~d;(Kvg?jr±]!fQ7:ONij5Ê\q-c}w D,ч䖹M ,`ѐRfSB ݻЊ7k3G]Ϊt˪ARг9`)%H~(L80ƴ]r= =>Y[K"9XJ\(V"/clL["CN3ؾ?ܚ*u/''!% xL^61\ i GLp-% ms.`,9YɹM:jp9"ss#{SC Z.:dhC5[0W$&:(=M"eBiM8ʞ;g0Ś.lթ]8ScFBv{Om'U\-Ƕ q)=}U6P<7%wAbWjlZ8Ȩ.PJ/`K8_&*b\8[g3-WbE\_a$ ga+7vwvA3mGn":hR47[؁t9mn*g`d(_-ecT|, (͈NgćӅ 8'=,*& )cv8-ګf[<}LՉl/&콇p/ja6g~wQYr(|s$I f:b:)PE3W`NQKŌww]>MK \*lGDHɸx:QE.+L\)YyRZgNCs3G`1ѡkDvzQZR)2C("3XLY¾RTDvC8ZAgGqV-#3V'lGWuYj,ak[*P.1OǺ Dd~<](`PSMzrG%аEbk>FLFuT1ް*ݎ7>e.*<.g2- +;;8gpugW`(}'vݦ+3d^ x]jt_I=6WF1]ʃv^(TbavO-"Ӯ\5BqX#3+8 GkPPsծU=b5U~97A:z : %I todo]a{y>ќR /c9S"`-_V e^{RC>j\ٵe]Z[Y-9`?M.đ;CTem3[gdϱ #nK5FZ%s">\̠`įvZn UlRq !d3^ z SrD;*uE<]*WfV6Ѥ]5Pa&2m LS?}k-WZ4n\HM%&4r_vg"\adHR+Q#^B$61=I&,륍 g;/5ݛhȆVaM~LAi!"FG.202& {vTNꇒ$M) !(AplVL 0/i.d{/vO??{</}ϟyuvW2y(EpXyL˼nxZ=̱+Szv6ዷn 1}_oņXĒ //R4ӆ G۷'O_|ru X㏿~UQcSdH~E~?NVUmv{Iڕ?V ۫;}sV~;qu۪U꾭_ۮJ`WͼX6\aˆj 훗MFVΪ?%oP^88¼E@_;\:?H'N2 v@ϓ?拗G=[Ea|hi}]+v;&[TZ2F/y/>WWT/_.6`m

Yq;_ulY:Ѩ_G??O:'iQʅ]{#POl @* ~X?_V?Gӟ>za//ُ>o㟭t9Jks~seodCIhA 9)r45|Zr+鉈LF m ~<7?<}_ߪGѿ/8+n"$3G(_Ŀ@G&S U]:n~9w\w8[hna!xWw1ڏ/of&?T -gꢗwNWzeM@hì8}ͯ1w~;){[gnI.V[;[+:Uh6SPjnm%{?䰥:M}gaɋ%OugN\?6n~p[kgG ~.!4^ng91+{7=>ɓg_Әo>q|'/@H!~9Mƚ)no?Fj]ove4(G+ٽ}.qt#߈'!e6ڿ="_' g?x2AȦbX^5$ܺ4rZ'QdA?$V?hmogv{w|)lVhfth&;jz?IfyއBq24p v݃xogw6ۇw!,?4;=+՟=C9`]hOs t ]:*/ W>n}8.M-ߋ̹s%.ӄ:+|ҏCЉnncJ}Xe*S uو~RG zx6x'ySLN9w7C^7~bɸ E縪 TM +Ck 4vtqP3Q^Q2=%VjU=-.ኆ ;݋Ykݼ,2W[)v &gAN)ô=@Z~e9RT}l_) .ޞxu+Z(rݽM a~. =7cpY044D>"m4u Ϸ4Aa1O(FEx3y[/Aq˚2K\UiE~Z5FÎ:ꖶu t̂ w,]hRH~SMΒidrYaT+D3f-yuaAtw6󉾋$!b|li7*8Ceh`!΅%"w%f4*eTt]=q"N۠ktz0jZ~_yv|zjn6xP[i:J8h9:v?ݤ{}Z;ީ& ޱ;<ٹ`BY?iP;X~,VE? za"+959x1 :gwsrS}-d\ՙ=~<9-rWN.%eF~I|5>rAsZ|]%9YH+G%ʚR_xegiGg! U<`-TcpύU?8ndE΄5L&_l}TG4t^_,<#7Lު''ku ~p 79dRH'05~s lz8E,K_!$"-~{{;L"_J(J6^Mzu= OU\B,tcP*hJIohN@O^{tCŲ 幩0G3#$,&>TrUF$Ryr!P?+*p{wvo߸.@U{x]eQA{]0 ._}gl2?3 yQEo<4Kqym=gH]ncDgm7AM{r.dCj] &H!;;&_] ͠)4E󥝖==@ 1Le4ɵƽ%M)xEpk^uˈl\[$MM\+P;,W:R0t&aW5jz 34u{ኽ/ AX C>] +IEHݓ>f9;c-v[ 6n &0:_1RےU+P}0˱צ")<7͋ Tz }9.4”l Vnmw}]_A(j迨>2VC1e,Iy?:0϶ 2Sƴa4m_aɘq~{%8J؉!tz)% >c:2j γe5衪d*Q,c(y>|~CYf*{.QdC@Xxq}'sE긢{k&5߻[z"ȗ+rmi;uNJFJ887龰dY81~msyGse]}:b 9h +yEf]>&*2(V};5[Br4ڝ銻xj>c&gV 8*^߅s,`% Vrx2て/#s.3syOQQ0V_ԧQ yG@Nlw*}ߵ=tm%ߥ)cy1ގwwTx{=I+(`Yx_>:Z(L]F#}ie=mw[e{Z{uO*l;?y7w6.%PM\f-۲S #[ex}\ǭe\* x_ݶU t B{ghB΅ܟ$Cr8=:\yE2tZ\BeXϥI!l$]kTOk=U=B~GsY߄+`}jzgQj6p+vaRTHC6/x |8NAڻ{'㹏`(m}m>UG/ǯ\- ]Lە(Ons+F{yv9RJ& £#5^/VC|@Z"=\~.ʝwsDe?ҚxwBwzJiXFS{%Zr⽈"m`ʩ.M]8;έFYkTla֨{lW4Q {{^~ jy:hW9%)* r帝L|EV5a%HcV$G{&nV?JY!(DZǫe7/q}:JƜW҂#Z.&]Hɠ}位cyvꆍzg4 mख&lBڎ<+z-9"\/á;*kA{^:c\!ahy_h4jx-A5#N{Lp*Xx/u]fl oq3u.:nѼYjqP%8 OG3dҤw֮oCrL`u 6~g=o` "kg ND;9il]t쭋:-< ?K?E„-#aFOS(R,~8o&moRB,d4fH:Lkm*w$eK76/f@Ll҉cobv2aקX:,'uRNS IJi&n~?II-ҪA>,(#O2-]B.ˮHouui?2/, ׾/P"T-sD~3 !vA.. D S>'_;0[Zh=]|xrE+l[rVCo(,ԣucf*UTM3S/G+n(kAQ&{m l? hoe>;=,tv9kWŠCSU&f y\ƞ6rQF0 j=+%] K>2ttB E|]ܻ#M¯7=2xN&M/ϐ$7G:LN@sy#4;14ť%ow⤘EC f&pp#w*irCYyN: l51?y:7(RIrXV&5J9%?>+ UKt'X"dS`gI?MG|r9/FjƱfcpߌ<EJe PV&ʄnF +EV.h3a vЍTZ7Yhb:~^ue6K7諰B6\lqو DلfqpG]`"bz.4 멞oSgaaȑ`Ӌ [2%N!Φ<{V2UeAR&S%A-U{ӯ^΃20N 607qGX7}RGbhU.|*ɤjx"@y zT h"5t9h'dݭT7#T%r*OA4wtx0F B8FZL v۩'dKplSTkJK m=br:JD*Qs1_;gRa$]F=WhF'(4)Ǫ}yAJ|0( C0Z")RF (S$t Q ,F"}`*ti] IFeݓukB,FiuaLүj8`I?V]䐴PYt8չD?η7辣,;cV(V ֬dz;B_ '`=!*Tv8Q d"Ba*^[zj4o[MHpIf>рؼ%_G>È֡uSd"-I,)Sf~>`fm<d$ 1˜Ӄ^}e7BOHskݽ-Zo%FzYU3ящd~xCO6r&j$ś@\L݆H΃PU- cxknůZ[wd_5v[A7ZmowyϧΤ4+B+ y` uДtݹνVӹs݃;wܿs/4}ȼcnA{3d: EG‚$.v 7D>Zȃ +A~tIewVx~m˟),u㡞CQ*v[^ov*nmn5sUǿu{ػU*nownw BHDG\.QtsNYW.Ul)ʨ. =HW`{hm+<*8-M0M 4vF܅FjAIcl\"N&dwIҪ uTq'U g2?WG{t[{5dYr>y @fԥGzS&uzO|V-C/}U$<jm JHX?>0L{gc0u0&gG{PdldaK`n1+ʢƎА4ճH+=Lgνfm@ẍ́?L%ʵ88!4}<50J er+ۺت맃XzrTNpb!0ʆb,np0J5 6(Y]*T}fx8Y꯮W:J3Hf1 5;rSJfCMםUjZo MNF֐Jw(cе/;As1^*: wXQ!("5\)킊o2O]q$snׯX B'uj|LY2,q¿w6-|[#.ԝ4_Heݮy z?$3HB+ < Bdw!jB`{JY۩mB9r?Per7XWW+yZ>wDhwax7Xzo6h ge0oep;U/ia+Xx t@5Eef?|OA"k%trXh]VNv[:eĪ_ћ)gZ'>OL|ծ]k0]ُ35/6l8-Rh#OOiz"\dC>z:Hrd7ԯ v:;m͵dMW+fՔCXV#};gi/y@9d#Ow :ůcIP/ g/u$Ze=?Yד,lui̱`0 !S?r^cr\C8_D:rs3z_Ov /wv[!='A!(M @M'}Jm5ȬpSe3{/r'~A=q<0<.PS Ӝ"Ӓ;sC$ؤ%7ȡR%TYhB͛-ٸ/)!6y9-.,p捾&n9ks¼nWJkQrhyH*e+7J~-r=p*1+\*KL֬$h3|`,umx*Ĝ[^K vNb#kdYDbd!/T, Y?GQ p>!9wzS2(d{ V"t> b5FWZJYѤOER(MŅ%Yyct6"OwɅ%L({  ջN"w-zmýC}uVӂ{"bl!kcަ;7_gDB YP8@lSmD:6ZOYn$8 "+DvN;Wr&1F'&%jh.}|1F$nȍ:ׯ"B趃2?~ F~IxV]:B~8og Sš//ì nx#.Bzk(N1vFmP:lxNWgO^::ܶcҹRavo8S\۩evtCɏt8֔C%dtpH3sX$9Z8r燌ς NRQa.0 1C'/`bjw>]oP >Yjʧ[@Y7a/UJ<,@BRjYDfZwpDyљܥ#rwF:uUP ;$EsS܊ l]pP2',ń֕NA ^͆>:kڲp3P cf!+cW5%-HE (]ky\4 Qhgڶw{ym |9R?X|nԗ@j<0M}R۩ŢY9-0)ҍf Xژ%^>bD!q-~DJ0+u Je[ҔEİt;e%V=n@d|U$=۴@q {:7 8=Rw ثB+ fCt^{#Zٸ?up\hSaGn3Fz[5cy 0FǮ̀wRͪ)Q'Gxd0om>kdԔg,ɀ85ƄA^z*ݨ/&)Nm>EF$):jXb˨&\)yYBh ɫsKs@ԏv%e ϓLI81lO5aL@ys$r$~Bo$6$*,腈J+tvS~F UdHvi㤖Dj^" ΆtT+[A8mj h7e7YW[YGc WBuسءzŨeJ[}qЛ4vNH'%H)UUX{ߪI΂Рj75y#*HxԌp);iDKSLWT&~Ԕ0YQL ZrLcra7~67/JcB? 7^#fz[\3mmqىC(_K]ֽ>질NrkhEɜcrȭc}X/M3<>zŻ;;ةPCDHeygXDz-ZUn  4(oъt$g-cZ5w`Hƀ XVxWw*cosK@w$ud}"4$- -l%,aMЪӴ,8B@7FplN= BzWu^ݔRE[ip+T^=y}t2WU=/ݞMsUdN˃~6:̧o]pS\~lyP# F Ԥ,VYZ`q:ɥu$ӯK~FrT;ݣQ` ;ILj24:7V U(J'㯡/2hS +.{gC=`=УFtq+Nc}.OP\zAT.}~S te4CڏXrX۪A3ěVfWFk0G%Ɲ5.\5;3Rŭ6Q`,mcBژglJSl| 8.IZEtfQi uyFz_2H BpJw:P%cl{7%\ڵFZg:*vD0q>^o6ΐlҲrͨ\Pm̈NN?/#pt׽3o\VC_OY:Ѥ=_i:G!e@Lo2fkN!4u'DWZ9=q 8@-{jjOCKI0YcFZbg<>5s2u:(O.u0YKn;m`M5}=Z@]Y7XдqFtڹr6lgzortR` [ EuXeܠם<;]Ϛr\7H~eˠ:ܮ9?kȒ\"Px&ohxFVeU"*PtE,PoB»|=28Rm 90sW2VOBJMc)~4QG"Jʟτ413^''GVwv<ٹ1\fXq @oz:%2%nQ|XEpRM#cNYoϴf*UD4U_H3_6[Q.W[ ϳ!!]d>ʺVYm- h|'A?,C TU'Ӊ ZoqӜg0q-sO о3 مPM6)Cz iZutǧ=ca~ {dطr]N tHt*#\vRyrF:O#OCqCT3@fĪf!G-#@2v;6xECPrЖTђo\r.!w.FqzE* BpqSu{vJ(In ܂(H~bwWm 6N6nZ.kO3 olYew 00W[ HZg,gÞϴBg^ɧQO09?20O4=7;S lH)ɰHrSw9nj,gR#NMl&q!=}L(Kܠ]%^.r>I1*k谿1ُ\3hn_f!y~83upG݋/ߤś){TM;6r&ø}#Kb,봋J![Qܱ> \ƄCZLޤ4Vs1&K&#:a"CѨQ% i`8{eķ̽a-SP]gUg5752uWV6تvT4sB!7ŷ]u"8B`U׍E߀/i+y_ݴve+< AtH;>W] `A~6W8|kC..dCf^KqTׁ@؉֠sVL@rLjuB^HzRAv5[&."^Ts[UȘr(G4MG {ujhi%sb1u4~j_ff;f;EٯEo (Y9V :S}fcwXYQRttFyF[5nG(.p&S} ]a'|8WEh/Qrf "p3h , AT/ReTvkZG)`EL $,Lě_F˯ vc¬x+{2 ?τȰ^)Ս({5xkPߜfF@skn#A͒Idyz\#~L0GK/;.k=hȬ"YC&=;; {5i5G ˃s6*pR'V'"DȽ1x&¸Pc08t{m `rM5\aRwYx4ڽ{oS;H#mh{{ݝ uMJହK@qb{x“4c<>7唴 [*oXi(-'M>"g my7-oByXcF{Qw|#7sV<ֶ0uHT2+Y>{YI`m8Ejw L %yYG(oƪ>;eM[Nky"M3?"ڑ*U2%*UdmYdNR&8v6~ĘI0Qݟ?Ukq->w H|JWکԻkv' iF¬ ΂qmZ6% 뀹&Z_]e'"<0K~ Xu=8آÝ|KɌ]9_ 37ɥ)ˋkV,$Ƙ;8VMq ^-zt/]ШYa&dBwWk-cn_§TЬ=5IkCmќ.މ#nIUw:إ RWaGwZ2^%UuDZ!L!X?C,B vlK_ֆiOe n ;-\!r3SNѹ.u{\!V=^txڶ3 fśCM@[գZz]dyլ4ɓ՚ͅqeG+:9ꓓV^l5;s@S#V\ӁxSCR #&KӅY VHUMW4z,~p1neI,Z)e[;`;_jӳ*  8 vץץnM\+V\vy]j#Kr{F,xvy,_fGZ*i4W IM,E&LDKR+TU<4ȴCdܛYB9POEYh)M8=M`ye/.׭U觊lnwvlN};-pD7U4]HJ㣉+fEmmztn\c=) ,-M[ȯ#G @ު|AOԻ"fsͳTM1|: N!\SI]_aBmeu j5/ơ'?-sl^/4kלOکI3ڲAh魨^6qI.gPd+(4lw~y/yS e\y%YQՐK"Qwe/n!h[Aƣ£L(8:|q[EOc"FP7ȚU5:M˓l<}o" 5[$_]4néo=( gc*LH 77+B hf~6\(6eBbE OotFgHSE 7]р՗olXu@k -jwsYa*0,S!ǔ߱Xuǧq|<ɡ=!l}+E*j JuchKDL5콅`wRwX O8ahDU|TOjsڮ+np%ŕ"~fwϥG$G,"Oe}_/j"`#ٯLߍx|QSD }ţTu%IYW -ƮcPj^d ^$p4U!Ci8"ͥT9!{*Űv(^s>|ϛ}#<͊{(oBZ6Fms #ITmm';%oL9ؔf팑,yR7#[WvF?*T5\y,fy/ ^ia2!Z2B:HX977|?SڡtT[W X6sQ%i Q5ԕ6rmLF؅LިnK=l9Kzi[261Fʡ_@A "Wyq[ WVp |p9$No!%欉YfYnXv[r "V*&)C0C1{tvO zs ?i-q&s)J6ďIp BDG/fyI+p;Y*5w@L4#wJе0`ayr ZK9V2wfvL;ZIήh€|sS TÃY?~*ѸO8"8xJt.tVJCD5 X}oĪ Uԓ3L܁U|̬؞l"I>LWa+X^dˊ/ijYv>߇O83戏TSƾ8es8F(È " +lōu4݁c[?rC5PE 1o μU_Fց(sk>Ԓ0"k%IRQgJfC'o;Mw^쮽/}q߳Yӧٌ!&?yhɮ6EHݸ'a =%;w3dG<]ReH8s#Ҟ`Qe-"`0r6W/ɍ5 $B#fuE6փS!RGyʙCp~wtgFʤ 7Tq8,0:x^y'AA0;c|2\:$8Sqѥp&)L:kEUovoՄ@R_t#AWII脲o .Ä?7:rk-He;@B{._F<֓ԊV?qV?FxzP !o{L;cY)j)Q-> ȀQ,Eώ{ToVoih(;Ym`x٦q'i`-ën :~n̬3j61 w*YHep7濾Ad_ Т>[#s>\nOnvdL^t.NܞF{S&[Jn, A?0VO}K!hbhsе4Q(AۖbJew 4+z*ʄѢ<(I/8+@j4mUdxX)鉴^#m{ JA !O2*?YVNR!v=XO{:-딇&n uAztph "B+**XN |< ]>:-o5+nj_OK( VSav}iÊIҊ/c C&,gr Igu{_o㹆 rU@n\"[N{&Uqop.lI 5<aB|D7Hmk29cDPnlqޓXn5ǎ.C!w*Q+.7 Av=rFـ=č4ͥ-oNUy?W欶X+DNDπN毑L~rk*Z y +뤱[+'!8m'Ӽ_^X/|Qskpz%X 5V[]WGYo[#tQ:EޅOrlKD$sFW32KHKR]4rZ@lFTA8ol;E *^~\:1H]̅$~DƹaIQ :~5'Ef좸Eϱ;odv*$ y2Ԑ'PG&}Wnn*y!jˁq%Q>&tEw~6g5tW,qsXq4BSQlz&d~D,tV g+|5hHCb(ZAi5ZۅwDٚja_ Q ԙ!N_ѵZc32!~*GQA  P"%r[j&z+}Fi|'M~웦؄ "ǫ[޽=(%}thGހihJQ^H4f`ʨ IӝhJA<$Tٝ@S#y;\y%, Ǥ!NjKnwpN&mV,Q=) b6qiA'} |DUW3RnHg;%*\׏`':) ք,Fh8"C+ Aæ#w@nᾱGZ_s_-'gi("G2_R̃+aNCwT3*ܢZaU}UbQpQ^6%67nYD{1xw)H_DUIhsy*(00c\P2E"A7>`úqTbT9ÜOG  B.j佀S4f^2? HD2Eҋa/NvF}39b*,`l I@gNe* d(8KQɜR(ʘҕܠ 즻eµ#Xy23O#=*g qu5WKS957};[ݖ\("b}VрZ'ZxAp>1QCAޜ]VѻbN۸O8KVj6kusa`Mtsu/+2zlGm RUʁ%XR9B`;䨱8 5> F%}gܶi;&Ѐ̎t^5 㞍[H'jt&n$~t%  2f8Nh*%Z8 4P~F m'3x8!Hsuu0E#`s嵙^K:!/)'nHLMMeqWp9qH]+zfaz!9pNSSg>@ ,xmB!JPp (X㓪ÃˬoYOxDZ} w}ƶ򎖨JDh݉5Քj["IX1YLY&l)>g7dz dGՐyk)FX,C3H|3-yH|WQP/a#܏Q\Ŭiqij,cbU7i  gEA%!Ln;qy3K#S"| ^5j  g8oBu5SaqDo^N ^thBEIݢ/3̪:#fǂ <'6 ;~iF| hG]KۉyO $IGY `xLJ1QL%Ө&\KL<XHfHR&5崞VFRAic%OaSȲG^6‰M`ҁ:kJ{MZSE_ vl Ww[(x~btp ]##]/L:axo+$,VRaleh#wϟ x l.!ޫOK쒖yyvSm)iBY7~JrNV&pj:u0+R9eL@H*4VX;W>겷ـFbWc':㝧"Z!'Sf~|Ȗ )mpz,Sv/LuYPA}d]IEKm6HcA$X P:;I#p Z,!vZ(eJ{ ( 6i xY`7}}@JTؘGy.䦽=2XbN;@ёSRTMuo4eD~s")ߺsѵq5#Øl6:ɧN&g渰iF9>O'3"KW E 3|h~^Opa\ qi>;hz: CFovIH2be䀦吞1"9(ƻ*R2(q4*[&i,'fTgˇI>k0ybv9ܑhЁhɴ~ne$\AT'epdfdOv5jar9jӇ"YOKӊ=Tq?#ZzeԒl}6*UjOj>4.ZԊf䔕!>#G~W{M(%%)H;c{\Q3"}[YfQ41SDK9&,+2A&]j /I <5ACOե>şCM0f 19ꙌӑYw@UMa~ TLS7od9#AhQvx9s %^: tlD'k;-6,}7M2E\ܙ`-!PaVĸMwa?~15I+YsRNK i.U}pe3 f+۵z |GkB>9Ns})[cR X) m9f=7-&eFULVߊ5hRNߟJHh}讲Ċ{DPVeE޸9#pQҲV87G@Gg 6e|Q&5O o9C&+z7mJy+3 NKH[t7q6'D?3Ѥ!6cE kB$T^}!2xVYSZ:Fbd.U~. rEJ0w)v.{T>WXIFtYr#G>$=T)0=&# gGuҢ`Ae>R[),7 I(=FQĄ١j^0קLC ;i#+ 4)R28S\Z悏e0>L+yIɡ\QC+k{ct\RY~ {Ei7=@%ؠiPX[tN8$ri<<32d;\~Ew4˻SۓdzC歫ad 9;0;Ɍ 1"H,KSKgMnf4cK(:;[6JIcc$,YX2FsDAK&"2/WKN`x N9ɶ"Fb2 $0F)"Ⱥ9r PIгEoJg(9NcS?6ͣ0NO'YC/%_+^D@y mSڪ9I*Oko+jgsF_^bύ)NZMt\Lϳ.!4Mn^DmKȡ́~lqy$ k@ftn#5 GPg9(6ZM:+H섳IL#5E,vkþJz# `j^"lA3&={~r *9})ޘh hHC̀ކ@m+ˊ郡:* C\xxaxk/{F APsfs7xBO_6]ZV9_.ݲG~F' (<ȑ)z F)fF+lpc{qEXX-s*Mivw'/ŅQg?q qiK)t]㉹7WǔZύlRq =12!jɺ]0) ՕPB`p''LZb~[`P9CVߘmt+n'1iC}(0StOΈl.*tc>u0Uޮj!1#R1SI>=pVԝR}Yyy !Om3ݸ}Fdo7k }`KbO>4 ~2^`tYW7 90 Y1 ^(:%[;-9 6ݷ H+\NSL u{Yi YVJvR$h ^s^觘ŎރC6u;i W{tpH1 w?@}wm6 hVE^[ΙE 0#"(3CY4\F5kkdG;Pn.‡&퓀o=px߄Ei6œ4(R#LzZ=s9{;Hs j6 0kMTޛAz,yD7{y~Iqlb`u" K*yIl3 eƎM:Y ;]O3 CAco,R@>3+<̆J0^/~j5J4ھ);Z:C}c0>aM ?N=*{^bDZmz`oVT t.E.#6nҖG$ $$&/9> cZPaH g?:mֲEB<@Q2z9A6:G}VOQ#T(fs WKiBJz9*l5EC U di^;N2LIjBvv$`Ћde{#5g2[Ԭ;30KgufT8GC&1uu I=QLo+Mrqi;iu82O] ԙ{&48==JyH8呎Br81ǀ4fdM mB! +tb~EɞJ/弬ԻJ'qo{{$|YmЛFp^Fs03% sWC1@ :I/.CFV)0@q %/Ҫ$Ū +㇐MNOn+X6,<`Qs5ǃ&"omjk:!CCΥˮUO%S+J60-Op|1K*OO$hn2NVJpQ;#j{;كb% nT$1ːҥ&\ѺߐZ\9CYL{H0s77BCx(tln>ɳs@=| =5U}U)42B \y yn+pըZ9jw1u)!ƻ'Vzg$`WI(Uzkq4ZUĆT9N 3& h`؁qm0:R xcU$YŲ.k/~1\> U>[l< <7&D|PeVDE)ay]4~HU9i#vf~?uK$YE ӌP+v;+ז+%"U.?K78 82%g~r7[߾ X iN?k/S $SCzJX _s?\Ҋ;Ϛ`{Oo|zݭ{w}pn9+Gp.8?͠~Oٹ+?'/}O%TN?9L[ӣ?9ss\៞ f1&/^R oVGbfE {_yosO_?go>;qۿzyogzMS]۸N쟌Um1O8DMӟsK? ZA |4DU==0Zk9pϚj0rz=::ۍg[Y>(RX6זy'a|GQo gQ JdނfVy;?:xsK7?va+W1-<&7.T> Z=΍֔\%txM*9g0Xk%{W޹/|lN}녬WJ?)gZvLJxk8bW*?.x1L|{6yZ |$xܗ^>.`Gѩ'[BYm,W`z%ò;v!sjҳJxkmrp?=-$b_k0~'Po  >(Ъ4ww6[HNGz S^JۏjWN_;_=W=⯟K/VXFu*?:K/j] oMEdH;幟KVɥ G_/@oҡx8 oLgg>8Ao EǷO>' ~g)gX Ζ#t'Gun8?>wVN mz>yH]Jc[nnں4uwlG<l~zoQǛ0;wA?Ʌ|l~6Π0G8mڄmf:ݾuٸz 1M)g6>O8NeOx0Lˑ|-ȢNLLQ kTny;Uªl.aФJ&dYjlmriz+1b(93E$IMʝvH,٭U"ѥXlϮC AjPÕUW~ OP2vwM+ALuKM 5ȕikқr\bhe3v8!G\Rt:^X4LW7K ^׀iNd5݂SԬeϚIi_W =[}1\y>YC0$/jOņOւۋoe~M$MU]+g ~1#OyıcJv|0AUxgϷעRSў0,vF*t/;ՂQ%U[kϪ-T0bkhd0 H[C A8Yc6/_@?uq?$5CAK>d6^[ ª{U.=*{TV- DBHɼ]$ f* K͓eNv:)YAS֊2 p* E[g *b)Y*!WƏd*].ˎ2}w߳K*RZ9텍?9v򔊰V:R-ܪ?p{(O#>v'K9ZfԘ=NkݔmS i ;_3օp2HxV7P?/ y e^d<8i `m ZTmVSxW\F;; ՘3 l?G%HbJ VC.켕2&IZdQwp&Jb/W*ۏ6>,3N9>HƟ[OO[ UvIgoXt'5j-?r;vhF dڞ`Ni*LMm~ZZvb͕u]=1U(|DǦ#™Ik?M;'Fk0t9(vNե2.o Bbkq Ajà 6p S rG%ٯ-.I~" ZCn}KkUya?G_S> z/N}Fn6QFWuJOxIyBU '˱d(#TsQ{Is&ū\ z Na #rR4<)^ٞG^QoJ` X?̉V)?vwD A,]IltYɯjpƴ/N7:&McٟRnn>5Ri˫%-ԠEe9)ĝPIITZ=U}5i/"$fu M*QDCZuGJ?2q7G e*uiӍQN_y=OwOhTB'q0]xawŽKɸ׽ ']N(i̷>A|_#9Տz(ݸ^ o.3} o;I,b_"HHF1t(7OT·)0Ȁnk c_墈\PL:;Y3fȸ⪙_q Oq~#Xzw+K }ϗ26a-KAś%]P^Ax.}俅}Po3gh`<_X}-#.X|HM UT.L.Nq]}>vsOݮ "YR\V qQUH2G58 xt]j갌|øSDvQByL?s8Y?i/M.&7|^gN ֝2 {+߾gPhU&HɏG>B}G~"Gx\`uq8<菑Ɲyj-<:x@qO4Q<jS؆yt6ql% /#]:%[t? 3Jz)0ݔr F ޔXR{Æ}$Q"d( Sle4IxGB, (qkYw:agV]W{D0DNQx^$ݏ#QOЎlQ т`b: cM;CA|Nx',ҸoN<`3!a0Bv`94 ثrF`la"2"LLK^J s 8Ibp|a vƩIb I/m5.Э%n`ݦ;PL׵Il^;/fK! 㹇R.dhO~O9!@f zEMt_/0 7B(jrP1BP([6k[~TSP RfB:vpY⌹PaQid]LV/ n.+CFZA$n*ʽ m)cXvA#x /5'ߊBUu,(M8HV]W=m/тu\uXp@GϥMKoy|% k |-"PL8% >r j5^Doz%"s巬xBbwIi l/˓NI; 5 aXo1?IIf}'ߙ7):,O9Ccʺx+5KJ_^_s%Xfa24n: 47Q7-A1+Uz2Zn dWʻWDºGE+n!jUN1+ JTјrQ2^p $_lXdy-.ӡcyb r-twlΕu2,8ִu˖*hZ|s{&% :(}yM\lC3WxȀt$=e18܊9MRdum)n`]:.|@.jܒ9fK/AZ(CUJ TE;B*%9C*jK3G7m>$q5PW]p#+չSO|15 u@Tqw@٩hLs'V 7W jzvߎ%'gmS؞-VŻbf׆nL8[#M0}h+Uwנd+4x#kQh0[K,qyJcđOr7RYR_\N?{P ucq!ݯD2й S¨.:Q`rI{[[vXr Gpp*jSxbhG8D$5ER1kP.pJqJNiix--[Tcp'{,Mmy T#Ӡ M/#XrrJϑH._J0nXab 6JKmc,V*<7cWKɠ UxxK8,r޼ 6Y)w 9rTo,_KʼnUrUvl<[-ƥv "/3h/%q2m_YVXD6lhe&q$R.1Bd1yRx & .<@v{<,Ș @kgRUBMLq {;=ΫAII⌊mep:g{jNTf&Vp$[[j]ā'85>Vg%3"_4vքKCV3tC2Q b(}ԃ9S2TH"N-'ҥ8FZ㡫;=2@L('l%a 2v_UbGHb =\ 43ݺzsk#@/0G{s t{L\iU 6ζ]?F3ƴجcvuU$Ӛm| 尕'נF  YvX0)*'l-{[fgw}X9n腬͜]Ե`ɤvTvu0*=RxȊ$H)bѰS]-;zuK:kO\Wۏ xC:\4uWTml%/xtv$ov6pr 35Jga}@~QOΛ. azҖxsӮA&;s x+m=E}@G1;)[IP<()9K2l:Mye5(6")~9*-<͜1cD2Db4=r%No跡A5mNJ-|NP"渌Q6IeRd '-'gyO0aoW.̬ȷxhe-xf&]S{)qθLfޡ{ݫxEMV<[Lq`]vx/]@p`]Gġ#8K&^ص2zzl)ּhR0e%Sss'dSn/p@%Zct  a.i#{ +^u2 %JQ&yi%hk%AkzbЁ.1c|Νdg̠"OD?td5b!{<e.>1jG d(6!.T|a@څr);BǤ|UH1 FzLaUj(9|@zXX]d`7F\ӭe}WXs)b{%jdEoy>9D||!TLc炵-%=qnvBj]ʎ L&& q2oരw | - jD `(6H\wƼ@IHk^Jh4\~G"m+/aEHUDrN$Onr5X_ ~\Fx &ȟUzw<4DvFGAP>vا dq}sq%8KRRAnz?)C:H'Xf>=,NqJω!fHutuL/2R'**dbv0\bk6!;ftܻ8JᅭɁ1ۻ@v}ۜc@LPIScR<4F"6*:֙5 JG$|+rg;껠z$sT5Oڟ =Mя*>(gʺuX&jFZU:M[FѬVő=-314 %-r[5EH]•6e!'P_:XR?ܘ#)]hH Bg} IĸA_js[ej;좨65a lńX..#lv`ʿXs`1ܷ/?>j.*Ӕ6YiJҍ$y7̨麇HQ KƏQpO#.{m;(t xzAԪdoMC+0D] R[hѺm˖-t@:r8hxJD5Gepձ^;-! {KKB ZⰣ!F+/w>6scmoDG${[5WÞ/s" G7+"B J ]{6, ~Ll.:[cP>m-aD @xB$#.:#DN>ڬ @H]^QՓ](9DGކLˑz"#ȷHn ]|S*+*3FA>"8h$q4nXc%?3>lozQT!t Q(u} yiRodUL?rRGP CgJ軠q YONCFn ,P°wfMNW!8Jc--X.;Ei&|kH2 E0n޺06݅x3^xYRx.ǢD'H7(EXzHT?h-.cOUc8&U}٨iY_ )=<ǽ]½6zOAwZlS¯ML0(LA$}.$,V੢Κr_?p2;3^axǺA@9bx@6>~̶r~3%F|7n!kڿnJ qpLsHLyy떠.~`~fvq? 7w2R/Odam=V&Y׃ףƽ&k^O2 edܰa1G;dB|E[(Æ}߇a0O9źo`pt(ҊZ[PEMA:SZ3)}6!gjSF>S8!9_nN΂qvjhBtǥn )P',On!d2@}}P#⸕;U]ʴMe\=}Ex],J .,;t(IŋF$dMuk*QWU\#8jҎ$L#Vs%AxhV1w:xϻ:N |ͥzy-EޝP2kZI[h0&w_SK+2ܛJ1FIDWg?RfYx3x 67T4aEy4[$ $3!'2puer&<,"~` P޷npX Jb&0c FqU=|s{ 1d@BC3qQ]"}D}̘N(,5uv⊲_"w{y& _hǧaOG*θnW<Ĝѥ9;1o؉RރYA:K\i ɒ&WƏfz+(bQuUdg헸rl&ْ;61ޒNㆲ3ꜩCEQ6ևrq4cRvy功05Ųj7k*l7ZU%='iƛ<g#MB0*`?Y׋.GR#(I-]<+I>g>"C}JNPITWq'bNV3z<ǯ$[{Q92 8I{+bgJqx7:+h`BS_b\Q =auNzm{#xtцlI\@*BMQ+;P8-;HX#1t s#U.!zh9x*(6pZq^3ZӄR(2]*PIo)82X Y'1+;Y/\. LGu-%ahȴCQ⠛F¨lK:9Z;7l":g|۰JXGRLW c?6+ p9{onv8x?@D$!Lƙ9KHv%Yth32lc|h= ym,m%4+CEep_`gܳwFگ aKpnK4@)e!Р AONvW.v-3~!Խ @RPjW }T#tՀlD#&zzaׯ/Ybh'^dE+n+WAd3cr2|T;7<%N(.}|Wѩdd2C+b0:0E9˹#>#ODNϿqG*v w]Xz%K+ԧnmY{h<&WH$(:ӓǥyH^!ˉ} =t N.o'хWxGǟu e&tRsx~@8 v"2q7+ k9Gyg:_~.q;^tf%W$"`"5 #o8\iIӓc Xu* DI`_c}8)l@x|eDp7X6ểBjSG;Z+&gcjR2 RQ̻ -) j[=uY S/P^pܖl&q&֝[u?qS(yxUt v$m:x7 fApļ3c7m7G~/bY$"`G>ShI'7mDBp~"`cJ~6}U$ tph"= mu@B|6yɱ/1V6cÐQ2)۷A8OF4Gl-rA aEO Gk ^n4rM(Rzh&:͕#SW!W?70A*%)g;"" R84Wў7\X1˃]#'ۊU} ע#z#@kQWf+DfnP*\>ZZau;P)#ܼͶr)"<>.I E"M毸G:T#OXӅ`683ࡕ+~S6]L^丘)%P>6fhl yu ͫ@DQۤQ/E ܩQ`GAzퟟܷ?/6|pP-3N(Y!Hq ElH{&uN=>n[s|(F;+S~&~z/|A 'f[;>s I=F.}Oz~ƅO>_8ޅ?$ý o~{^E|?_/*kNbt _l_X^5pNS D /_򮤧Ǿᕠ_uMve[_;&/D#O^)o/\Ɵ~O|! r ]>ˇu9_ǟ'r¿./X/HO__j>33o$OE_ wM6Cn6:bu(ZV=8-ơxԪOoo~V/x,|֮YuzP({ѨuX'_"I_Z5YEZFꟜt`D`5geQ/:%xbP/w(3 ;' $}ԃ`7Fk֍ƍՐ)HW(M*{J3Y"v b':b#޷tg|8քγ^QxX9ϖQ{xwUK Isƚ[c/ieW讷zjBcby\6 KS̝q)k_W-s02ZM3N2PV No|W.#Kss}u5Svpz='k֔}?{jy[UV[42q&ﻻ:yͭ,knږve|L ,-oḼu@%v eom䃇?~dug'ŋY{6}N3gZ=wF FV:q~Jז,[jvcy]RV}r,βB d56 ;Y2^[*POvw l嶼YeTʤY~bG-Yo@!OLlӨzXR;9Aͳq!rU̵,oiuUwQf@{a:S[ڽRיgqu:!g⻶-sV@'Zgx `tR5s?J_Nނx+8b-m1jḐgi t#@/f4 ײQM&Ŀ Ε滻!]sr~,DѲ6煶9$5+1mNGx7!?bԸdh>J S+X[jĩx~ uW,cbCX 5bzY:+qd -3`ZU%>x#s ȊWrpzaTpQqUFjh\2)YCDIT ,lߤYzFiMM>&j>ާ% GL[ yF;dh=nzTPMAS@eGh /-jtU^>Bu\\\ C6?فiP}>Z.(ZLrxSzpQTGRQc֠] R| K e [ΐҊÅrz3#Z64u:EqPjQrd_]tYs?S (vOoJ7V!3#mԍq-n ï ɘ(0Tj5|T=)_eQ1DW&T$!FnZi\VΉK~˩>?w*nc`b)0@`s,%FV sQq Q-sqʹMDLwsa~&͏i=57uO3KG;Kr'b^j%KA"+L23Lzfot59yn=vޠۀGVcclU6'LJ6;uڗ(P&78=a bC,'!k$xv&`tfTe0 ٫ Pֵ1f3G6&S1*ibciLa\//g[_rϽ+/ͼ/g_y̶̜_^__}D.ޭ~^~W%f//޽w}i=8/atϡ*o)es*ono'<p}cocg}cgOԓ=mm<}mY?̳ۘbٕK=gғD[d.2[+s_T/>2q[>É_ו *T7!i/|~CLs`Ԩ61+ D= ]Rx,UMH )2IoXp w[ٽ<%7w[V JVLLW)&u_Z4O*<һ~֓gP suС`-/Xq;iݕi1K&Li&h14Y踈BQ,q77L79)X+Y2AB9܂DL+ bh˶ⅢlfU^omlK3#)ZJRx(V>hVz2~X?qwO5 Z6VTM{^xzq ]ÕQٺ&]Wa5=Bac~8(SM{,?-Çx=E 'InL, C=з$oۍ4_Un|!(A"O<']=' %x:.+$ ]v:YP~mx"&Ȁw)9"]8{'6vI* ZJ*6(q®*4P5%\ncu}{:g 5 ް4q0WlT!VobPSL>5l?ukw HRFd7K(*7u%wfLV1DhAҍbg$ q,] cx .Ǽ^,)S~ 3+sKIz_Vm,VQrX^1>;V6飞{T, U)އ'Gӧ\Hh eC5yY5esJ_9N <mpKIj@rppz:'^\`fG,Y f nR.*aq1;ʳ}\}O$qA EؒE^tt-t:H< {T[Ҁ0>A unl}0Tpﱼg s4'$Z s%FZǘXvu)zå\&r3J? xЌReUlEcz6䣱'A;dB=!T}0?Y`qDD$OJor(H E>&m|I`Zm-D$6דIk6Rnel_!k {LWdcbjaV4b/g 9w;'S~-pdžR$C<:>|opk:펑Lrg9OְF 2Sݜw# AYNV/ w|}iBʒi}) 1}L1fskm1~[ 1dF-r% }t^X$ rͻNWr_;o]=+8g?yo>yG3̼Uy+[_?Y]gVXyVk7ʵ~{fof w,K/o̿W?_}{t Rs)=w׿=orsZytx_7˟;\WxlQ'ުAFy@aw8 ,"3<~H`217JeXB@6 N8 {[B^_4:~tZR —MGz*F{HxWNl,SEgeA7==hi?Q@k%VhxC"Iˏ9n&.'pg- =~Z%O #ʵ~9tU]TC: Rh+܉` yw?\XW<[R7>:TPbus{_|~msg6>88Pls{oksnm=ZyA͝Cy`wIq7@ф{[{w_͵G[jtal߇v67v+.Sƒ:xG0}Z|Cpwk}^ۀޭ`hk[%k!>7% Q><`̓Z:V\2w_S.^@D_JƗ}xwe" `!3LOO$ޅIQ XzHz9xǯn`B=A" Z6F'HlxUaN<;`o%BґsG~A'c?|Y(83,q^d4DZqKIRNzNshgWN'+ uCt{DgYINb}QVMTMdRX FRIf0 ,"*~ZYYQAa<ƈ[%5_|*h!tP`WP R)eВ\N^p GmQqID~cY;?eVg+)wTˤǣGإ \D.82oVf{]w|rGA :E0UH^'5TΝsǮ[˯k2~%KESsRENYDhbJ7+AUK7pwܥ%lQӜjU", }UyEHqW o]$?>4b!JNÃ.RU&,p$3МTsʇ:Eʇ'ccLvq\[JDFU˜qoK{YX^-0G[>(,$t C,1u,s&` O%-/MtHxYPoe< AVlE"r8NĭELoDcݪ5B-NrdРybBM+豀J[fh.2\T1"HՌA ``zMd0?V2\ǦS<8E͆4tsCi;RsdQ0jj%ek 9ݻ"}Br 0 =U+SaӨoWne[Ojk:6nrQ^>0IJLxܮ ZT&D܌MTbYq&gfN}s|$@ G3̸ ~ f(Yx֓?(ΕT {m-φp}.𚽡.HZ1eC0H!Eyq}NI}'PQ5 a6VK=-A9Iԫ.hc0xY2^o󣹑QrXjCiYєM@73'*}:#D)ϔ/PU]eRmCP.pQ2Y?)iy L* nW0GyFơ4XYZ  ȱd2Q.a\0` =cdO1!? 7{x(>gV7vfլD\ܢg9jVZq`^v=;.v* ax.fzFC֝/b<`8e,rBtu ,SQPcyD Vuu+ڢ. vFϋ ;9%"_OVj>?P\Ͱ㑋a6zY\@ @GsA *&Egqn_8ZRݮ}rj _ P ΢qBjQty:R BK{]`̥]wӍ.H[? 6gx̷iL4ZrҹC"ti8?č1CŹY)eA8]ka %v!?H *\>^/aE5v+Մ~3_-P,WS0fY}O^<+C:i@ 0/ׁ̍Ɓ*]{<_Y 8*/ .&9'4hzqrs„2%U!hРEJFb<[Ee[>w%f>8h1~e2=Wny $D.9hkt0c!MTSCSӶ[dZ܎CрE0 ̫F'?8 =ՊX}^NCWnl>fЏ P%kB$_Hs^m =,:x(=6F6Tp˵󊋙)f;Y_ga~0%ln?x0(Tpc$!(!8]_G8<}qEܒE^tkϒj,$<v,aD9,mG`E #/HGR`#+uɫ]A_&[WU42hG8 :q+,&J0De&va󏠘kd;5XS`<ө|,XT~좜i JdG8:^;NLX;M$$UO0,4iD.eb%iů2ZKwG/E5,x9<6R%OAƏ{ S8o$n[K뮷~'B[;ĬWg cs&l{2 c-Iһ9$IM6ըL0j ߢL5{eRjӢcd B%݃z7p"H#e SuЏ͂_!NquBnzb9SGͦ|6 eP& E ɸH׌=v/`R ZVӦC tn^ :,a11E߳2ϼi2NfAW]7>_$_M3*@/^'w z==(TomvS< ǣ?>.ڂҏIn/|t;U̻ĔRs~9,ȀkCȑii]GF1}%{j 'NK! 6< -$c%Aoө oi>Oi3p. EFAѬ M`B*V huXZ7^o?:n?0BvT7]8uf`:q^d'$k=D-|+ zZBlNqksArE1+PV-&͖SFк$nKޏ~kyVmHK¹ui"Co\5 hDY,<[>b6,f<6|<9 / , t.#8\ +teݍŻ˵V@xZ Jtm]hX%`Xevk{@%$ {ngVQor*Y]Pq5CpXl jX(GgW8[CɁYKrBsFz4(ʮ(Y[ {J^#/? .0d&ŕrRH'R*8'@TUwqzYFGjӵac #:ٕ[||zI^z 00"CZ=j$)zv0ή|7v*Qk+Ea)L岋[p_61V8i/zgW0 j a17𬘜\t{M:qkMM=۳+6Ӌࠏ'X^k "}p͛'G+3PQw |ke4i!"a-r s9DKl4`C{ dh)l'Җ%QYH8.H jkKf")3HOb\Md "~F+7~OY^9nD NN=V3LզDZXGp_+ZS3n0JV o=*d!mB-@APA83`~ GX³b %aYW+0QJBbT&-qXko)1oYkyA[8O ψ6&N REP =Bbf%|'f(RCRD\Yę I@_޴֎nP0hi>9Ԡd#fK.NzT?C'fWK:qTRbc G_}q}.s)"M*t/Q*"J至Ed:C!jiLKgirbw3e*? hLe3D~h07~$ \d!݀ w5'iZD`)àgar\#Ȣ3-2J'vT$zu<E=?<18DB;^]Q9O4xQm8mZ.At .7!J'BOyd]Pn{A [9/"$$6Lgl)yO<XbŚٜ 93<3: ?w$Q:GhsOduTĒH}`Igg*dLE%<3r fj U<&܉;M\Ϥ^}/z#,퉔$etuMmS([TЙȩ'HOf9`9,fЋI⑜8b%6~M7eZ9ϒRBҧThAkx౦<l% r'M@"^Gi$3d c8I{\[a֪4kܸ/6 <$^j Cx&9`1¥[.dQAV;5ygsږ&Ođ%rj Ki+S# Zؠ8H3#V`!񯂡ز%ܠ=J9cs#4A'og dnods$.nOxukQӑ7ykJHKPӣ-nMڮڤSTj{A> h|E KۍЀD,0mbFħ|!qс[k(1Gз}\\D ^@] bpi-t@qHc4FI钐 Xu&IWp׿?GeXÇNEfg0#vv-fd%@i''>CxȦVrz xboM4 2о#or}+}p 0)dt#yWQ~<}1>d"">LD *uP%F!l7J+ D b8ᚒ]|% /jڣͺv®YXB}DEEj=4|tBMzh_kQbOa6ΏJqDMmڏûSt"ě=a@Ddn[c4.QW\&C0ub`|{`'ɖC*Iq?\tެZI,sDPPCsX]hW^1䱘'[(&{ }P54KhN2":F^܋3un#.r@ȬP5^{K⇆ >HRQ7}RgΎq:a )]Ƿ~7޽$.A#%\EIJʰS|?()Pfg'fB+t/2DĽ0b+6kԀVh1GrudF'|9N2(a\C^$en]O R4'2Jk8TGLe7s8\KT'rPH93Ɛ(m)S3Ji_-(7B7xVdXt0 ԥslU.T[6MԣX՚Zۜҏ~@*rF":Mx^4W9ew.ʫhtȠ|9#);k<&N5{j6ս Dv@u,(nCiB,9/-M|81\OHKfSb%RuF8;|Ls1] ^Ɣk;yxtP\RZUM5~3P)'!>/6&Mq}hTmAWUiR/gM4$ MNjn4,k%}f_u+6Dľ\[$bA>ECTmᑬ.#*)['>e_ 6j`!˦{!6{n `.BmSJ,(Ģu4 f ^)cYZ^Ey'H1A\L [-cC'Ϛt;qm-[ٞD/Rx`C]o{= 7YH`; `i2iO6_[F7Ma߲]rirKG}K E=G. 8 AOcPͬ}kXtģ鼞YQ⹉gekQLqGHrl5f,8n@ni?tG'tگXcɚP9Oo1:q-4?mCQ`ɕaZ)#衊mI+[p x8MU!&N0i;9]&lg p1f=':B?aMtKfDRwbIkŷ<0=ϏvVWnl|~p}$7K0FmtGB{0=pP]7; ^ "JU\q#ImGo I ZGBHcr&jѼ@&ΎYhZ 'zaqƀd!> BKEq D"Ai88LKU$ %YҘ=dݦ 1b,Q{3E"δ5]fcec1󸂸TAgBʋۗɝmTԜ189ԭA3!1b)Sl2i'ɷҰ ֒ca5"ɔk=j3L>NС2E^8>vX#w!'wͥܰ/XM:U~MAdj7bs~?YΛ=bZ 3Ը$~p-)}?l(o /W改O` s3qt& 2K@+:=p8F7xhoi.GHC.\ӡ`/i "cQ0s5tC}5` KS)-?p8B p4<83H\9V%_t( -ٷTzI"^ьVD,^0Y\;&:;A8 "It§o0qeڍΛFQĕ_TosSm36wY%sN%Kd6h9eL2OݪrPh8O0Պ}P0 ERp>\Xɡղy[{= q z@ńUWY1]aBbW? "B["KrĎt<dđ׳%&P7_&QBɲQuzXj 6jߜ+:P*J<`gx5̑& TFg&\?['sDF5m?ܴ7/c]&sXM\SE덄/MOwN=(%^UXEKKE7I6O" '14L,?1/ų~&ŇH="?QFG=gun;٩-a$$sDs62\3ۮ BiW(8gʒ2L+ 2rD,DĬRga$$uĚHF&_N{Epr/ ,_@ENkN C/+ǧ2nskY+Rӥ8rCH/$ÙH{ǀ )ǨbY>GgͥaÏ8:n_.JJn4kA!dۣbo$v!™DI4]ѩҕL: ]% I(L8=u|BC~ItrOw*io2Kl-ߦh|:3'cDZ 9c^kQkGD I?u1K-Ȝ*i)YXLDtVvaS=<[vѶl>K^ 4 L~i$.Z1hu{8vXURWix8[c#:&x1q@k:>_Y'6 4 $&TŴ7}W^1۔nD`i0}lsC͑` Ah^D6`7-@&gsRDdyR_&~ӳ'XU%mSYc 76:sRBaٖ% "=В=WQ~Q*Nk+/Xt(HJS24qp[rC A5%FnBG'~Hhv r+.LZa42LY|h7$1ZT\ʂ%~=Iv‘d'%BQqBd`fa\U7ͪkCZ@=sʯ).K Ɉ76@3;M#D!ɩA@ɪEa13BonMU a`8{A8?pr[Epython-defaults-debian/.bzr/repository/packs/69717da9acbc952cfcf33c1029f76c95.pack0000644000000000000000000011073113212470305024024 0ustar Bazaar pack format 1 (introduced in 0.18) B2087 gcb1z 2071 9431 xXݎ۶S-,9 dgݓsMIĚUZ-'m<Й!o;@ "C73,UؙT~ִF{,2\wTD8A<7YQcRN5YHy,7򇘅T3߅4fJ/u$!?schN5Hf&Kȿ*N jTUny_m_\,akJ("'Ͼ'|w:!qI[;2 fO ;;aYC_1fY Ȟo; Q(ާ۳ /S(MkCXo62`+h!L)v 肩&T3O1 Z/Mi.se75Eo$|ÐC:QITh|\tӞwEsKJo-ܲx Wqx3*CS[Tk=:ZTt0#䃽0U'O>3uGNl cT@FmǏlGW~S{)` :'r;fz ӔN !Ou wl^9sY}Rl_>ms{ YKZ~Ї`ՓZOP6V^6yIf]@AD,6s0?Y:ؗX\B3#! ?ITGKd,^- Mz+yLRH"0FE:ez<ཡy5ϜU=huu:qnHګ *!Ǡ& 7bү'mB14372 gcb1z 14354 51360 x}IV; DI&N-FZURʪ:%It3k/t$,~H$qq3;mv2Y2t.feOVmHu2KO>qϝ*82ΦH"vN*bgNLw6MH.=M&]%*3mRic]8yz<`JK8&3md3 GDBpg;[K~Ǔee N*ɪv1K -@WZn7"l;M' CH^}fGX^`m DOtܛy><%hfë)Knfp\%IH*2t*.7 92%*4ϧےh^AMo+""̓ * g% lKz*c:h*YA@9Bei //efp4)i2kr *NWz" gtdZ Lܲg~jQ֐(aečs00΋E}}?P:ip ,TW߾s*Prh >XeE71C3]i1 z8HewV.yjd[ڢXe Hj|}W}2UgE8Z9kq-(yZA8kq"{]Ao YU\[bE;l -Yq7J` uq8<ԐhEf_*%>+3*)`Y}s夔a?I:ͫprʛT3[j׉' U:-K-]""V-*FQ 3KK!ͮ\*tO[- _gN]!*W0ibp>*/}%3Փ~J*eژ@iHBVN'd uMr;ȴG T뵐IUN 9lo4bҞs@J5`R IL2k N0YV aKb\nj-<)`"8K)_m:KGeNa4AP lUm(&2X_Nw3F/`Hˁs(' # 8.tL?K}fCTFk[+::IWp1B4}=cŝbupdQ@lVtG-!]5X"oJkiyQt8t#A5ZgKs%g0Z%O< ypj:(I{=yڝeɃS`صO~wO_ )6H])m!=bt}-ɘO؎};t` CKڦ}KFY6C81KB^`PQ2_v` L00^oѡsZwm6%71DaYc(5w^Vv+&7F;KfXK4?uiX+a%%מ' qFYLRXȉՁp`dMR˵yIu[ /$i1nۡ/6I#aK$2OAJx?]p*%}~14Ƽ-ثfQbx8g mV@JFVv4a-ЊP:A`൓=H\&Χ,QHIEyE5-sR!H];KTh\es# FqF:SΠ]yQo'h6nm9go:ҟju,#ʓ7ICI!UTTyHQF]c(rꞙV6쎺= 1PϧP((Yxr-ISmoί̹5Dv%c's~tyLϲV{f21FhIBȚqw J0aǴa%9ELq4{a+12.J.ޕ CB@3`BhCj겖K!m M5!n)2}jm&gk7cl= ة+eKiMJVToʸv@Z}9|>-:.>{߾w+ɫw/߾xחSl.L3_H9 .%;qTmق+`2~MtYu e<]fɭ6qے!WhkHHCT[~o6k>m!!qe]PLpW ::yμB{r,E`a(Y f-dAaVE0Zxm֘' 0%0aN@gн1~`e?nY"o>:tʜ~ EP[H|0ڄDp@|xPD4kYk;0D $@㕄K3%4e6j|l BnHęSH+3e#! 1;DDYa2Ń!˞ErY&Y)5:9dQ͚6R4KTo-g98,)o(.l;癗I^ +5dPS#KU^@գO|F@e-1" V (\F9)m}ڈreܨͷٔQ&HBxS;2$ pu㉒1%`-߽1a٬Q m$}LzmCD_`KCy! 4̲hעA?z "KEdX@QsoP0f ]SJ֯?|Kmjv< ^xG )_u'iOY6:wbb:'=P# K#'F.V+s*|Q;b$+6fВC&@L ³ᡕ..3P~:\r^or1Ӎ0[cf;8SӤ(y;?U5zŗׅU$ ǁU;mg?o)QH\RRVOv|n.oxtWR'mtQ2N5dsfr@&ô$8u!6I _D 3ޕGWd"g ,%b 4r? @GU)ں$6.3@YEωV oPFs6ESق!8쏃v < 7V H7&ТTxwԱ H1ң,\lQj;_*;) rPWc]HZFGC& W{fHps4-U)qg'h;UJ_f&eިfz(RE:"ܺ"`%,*ڑ2a (MU>o@7kF)G:J"AR!p6UM ` |> _DAP!t|Dq02{_QPiW8I쏞6 x چh鐈^|_ -nͭ7j$$CB8Ò~$с ?;Pp:Vev ](ˤyFA[WgpkC+D)V <"|lZ!4]G|/mSb*UD5r,D;$](#G&K?[-"';` '>Lcj\hm̾GEogl=+S6>,eFI97hgISmoA ?h_6GOia/@ cMJLa.v`YY$v,H$еWb@*$AM-`ob{^D;7).?] LP\FL ;U2KpVB-o9"DMtPt者bDWf~;w&Vm E{Ss>'6s=R,=:&}]d;ڟertу]]WB &c˸n3:vی;+ޙ(@iЩ*,wU()0 &O< X!y#Mj 3"^V؝.Jm3-8ʀG\Pxi\)Z 'chfI.dHD;p&հ1tt zm$ک=p-Cd xkqn{U3&qqzf+B)ڼkC]zͽN(-E ҟ '*4T!3s!+.0GA1adfrR팍2A r\Xrd2q T-J9$Օ(8n)E{৺?+# %CrIPƽ8 [ο%~ ʣyZZ`{u_"gLg jvt5k ÷~υ=@)^f49,lIoh7b$!2+ B#WY奩-EXʊ51[fiN jF Ty$z``{HEJR9զ9CJU;MMew:N 5Pc$c!R"j[vӯᄑ>P`K'q^$͗ 5l<jgGQ:Ov%t|N 3*\ ɩFfBm2o Op/5g̠Yw4ݿԔmάZy`KR wC]2b8ϭkh$ dT|GɁXlQ@S\,7K]sE`88]hHל #bfCD:!|ؘѶsaY;)츲{@,ة;>wK1)X)j:qopbKGghL Uv(aEhm "N>87-P|(&_w <Ó{a71S`j%1xZA>fi\Uǖfb{)ujS'ؠD_n !%J=KL#O|H+ׅ]0wO1~$O].}\Y`况l/@yamnSϊhCkD [&PwM%K-GO!O5{]B>tRܜ93CXT2)8a;dz}^{kLd""ӣ U S INVsH'֔^z˛ER!bf&10.+1Ic-bD@cG&*>|^lW:JxNj0{u 7Rr+m`qKPUƷঊx@h鳧Ϯ>}ьU$Nj& *Uj4%५-?(dtkdqJM{QcnTmROQgH{nc[|[Fv0FaKmN4m_c0Ү:y7Ͽq-S!ΐj{??m.¨t =Vk{Z`RI#L6&h%xMGEO3k'm5ZBsOÌ۵oF}ㅔ.u64FHxAsD: #Q:*M;46k 0ձ:*b=:rtȴϒJnXc?ʸ6D^y)}l}U#Zk4VB,rv?2p(e 6ٯLٚ׼eZ*AѕlK&ֳý6k! «Z]<+͕:6qIwxŷsL]OEE5CHSg:b Cl3H66|Gxm ٮNxI5;ԍ|KpQoU~"V#%{}?"SGa]vp͓ p,8[kmeE56ƾ( e-``Gu֎D{vXUNln"XNF{[ $UHԿ]W[G}vHx=s ~Us/pkOG:8:H@bGZjT 30_3x~՟X1'ldc~F;U-ؤ BKBGX8KY )BUG5KKUOѤs{JF$1$!lDجg@6Vyii eJ_y7z#iV[+0Y VXn-2oE lB0JU:T8+=m-o$TҎ3Ao4Dęj{P`г6oLu#X؞ "}Ql彌rO%av(DfGGl]buYS+96UBu(dU[5 5hA'됱,屯y>AM3Y_V#Zx("yE~Яe\bf3ؕo}%0H9ȩ\}%hJ7ߒ탱7ěemcUb8PUhN g aAXRǬDC/bPws43Bcf{b͝w|ٷh|DGSG=CCxXu./p.p9:\Z448w_}( LE†qT46DC,,>taϻ`RwM#4vs `Kˮݯ GxMH0XEPwBi8Deߢ6v]_*`䥵iЌ+Uw|` |%_ir-i}R<3CCz#b!;M{HX8Ay-á\Dѭx4E%t}xUСk~>%z|[#ux>7~< . #\|Sa.IߜlO".G貝'(`_ 1 T?3 b,>ߙ.1^ﱋF``Ihjj]X0>āxa7FU24HlSvuNbH*)3" 先M]ѸnF^?uzյK糟),_.LŔbu/f&$ iW린Q&d>.ۤ?ZyLMZ=nW*Dݭrv'qv`pIؖN }EuΤovؖK!4]rk!-λM=#i ].FlEu=6XGeu!u_2 5ZfBF.=ZYE;*ܪj*uvdTDT f8.ʻ߃WRW|;ͥ]H R9*"nK:[wt#1H[ 8U\FNAI%|"f]|Y| ?A'q)(O9mWӯ _ȡJp6C;m4=7x߈&TBBƙ^uJu'Җ`g*Ko{D{8bŁ$q䦔Ӕַ(Kqc.-BS. y(̍&%T4/br[F >0@]k鷯u8s>d?F'0o=FF. |~3FaC }-;6ouMNtЉr>v`2PbΫ {1aŚQ1r@,4S, =yO(,l/T#P? ݣ5ASukī\^}R~O]#Be/;;!\ě 5MmUԪ0d v<{܉LJj#Ɩ `s@לDSAó^#]c\\Π!.b.O ,C&׻l`x+`t ֣ !4"r[%Y?:',$wmFʩ $M=b_&pCD8Ց6p4ն i[Lz ? 0y_J%ӭ(BO8F5pWQH {ZE+qzA#['u s.x["=[;<8xӷKz'tB u89DּMnmG;Z CBޙ0C.:J]p1FtHږ7˿d&|jo@JBRga`T/`0 ߠQ>&rd; BbwsV]%HZ֛DgSU%N]}?y/p/oUqP5V,} PmUp{\k_LWuq/Sc:}V_餢%ºwMD #-+1< g}-܀>TRzBq%xů@x P׵FRq*}(Zl-KCeo4`.a ӝ9$BQHj?3uWRMw+`@J}`/֐.[lGhfY;r1^.eHM-I>Q^rǢ<rμ1E( j"8SH]ڳ6^:5fseik_Y>~0Eu*DlTK'ڬHF?38`{'h ;\&Ҳ={Rjmr=6E[Q@ʇ/>Ep, F;?:>a"[a(<.IT$<7v&8 Nl pމ%k7~Su.'8%qb䗁YN_i¼Bzm@\XXӜ@z9֙QL0T1޽z! nd >sRCvF4r^BhUPxјiMwfg-f8lE sل5lu+Q\imK^=˿TGن'5qF\k(I pл?q7=>ċlNxB?N&:MzOjr5cFBkuܭӁM;k;$>;O8=kB&Bu1jtBB184 gcb1z 170 558 x}Q DQLIo&=S/YZ7d%^j!%!;y;ǻ<_ytPDĀ4j2DoxT/%}QoSV){$⺌J3lqBQ]d"8EIaʑmᅛ'B2112 gcb1z 2096 9392 xXr۶S3;"Mܣq2Njħsy$!IhE4ot _8Ig#vXZ2`3ou,27d+Z$Z9,\dՄ\H3"r<YPcN)Py|N3O<4dRu &?qLiF/Yr%RlԚGZGrKCrWgWOB, akY3I^<'xw<"~_g#Dd g$3mq|y;:/|y5őc E vߦISIΥFεYHe[qě:ErATbxl<{j}i1Dt*:rq/ʮ]a>/QdhxXxgIK\ Jg$b!-%kBY4!G7l*|4^}y !Pf\2䇂FRj;",!^(@"1KmjL?8I֧DSf %*__^,M)BںNul!fƠԪϭ$xI$fC\tX ݼ\3 [nH3`tcbyU\Y٩ȡ2V[X_P i0do0Ğ8"ƀP44n\MlB,_֍v{ȡk0Ȑ-bd;'NjXRFΛyt/ ;q9ES\z`V 7>`>~S3[դ}hw > p=W6\s?z 9oҖE1:2h/a7DZwml+xNmv|k{bW4a0GJ βXs)3-+ T|0(]܋H*tLlޑ>ݳzN:5F0uOzf/ЇbZzPP?VN ݪFͪ@SuI&\ZRnf_dy869H+tK|LpFaI *H`JZ NT@hP9 84Þp?CPͫ<:(Ѯрk_`( y `z}f8ŝqUN,ljarrԆK!g-&ͿZtɟyjB3572 gcb1z 3555 13751 x[}{F[|i"'D6M+Ǿ8.}6 #jTofwA@/q{`wfvv^ dWf#s̚20F\XcడkfxChkf3(ȇk `8(!Goϟ^w5s>4[ cÊ3%>//_l% IA3 .ߞo,$e5͞Xyxpmy _Zg\iFX7S5kawED6&F.kgcoȁn  |$Gܫ!Ǒ;Lb\Ik;A1aވ[]0Y<LJtܰK!n(Uﰰ8k8HŹyEanQ`cXbb (;.;H+ݥ3Ri n[Y=xO7`8,\GV8bv0Xk̮,Oi׍F /5fS,Tʹv*&`i:3Kğ ,Ɩ-WA8ۄϐr^/OO~ŀ9s`pO>1-ԏjDMTOIUtyYA*˔8T)oEO0F5VQJ]]H=(I "*)ďJZ΢`K4Eurd#vǒJ! \N8Ⴜ#:gvHI,ܼju\fn;3q[q5+ kP${M)R3JQQ7o$-&BUqHFG=-n{f#ٌ|[6ۘ6#7Hp'.a x1 'ApI)0 'a#o8/XLeUD\b_ڧ͘J1 "fa:>!=o &&sA!WZ,C?p%ŕ~u&n{5pNx.#E̛MDw(@t/(TG^NX lvFbCPQq+.nSwÈ {EWO{BXGӨ@ &X CwAH<@=p`O̷f s.׽JN CMD MIEO,KmK :F8A XXB,N;5Ztf|L=!̝9/OX2Y#&g̘$.hX, $1U+SvmN>;:͏hx/;&6҇|gCSL1߲(`AzZa|[" *F# #E"F2p#Mxp[5xx=,(l辰G ޑ|T'Yۤ?izt;;x`00R D9ՇxZ󧌋k<) O/ W }˷eg/.^?i#eviT냀)KP+"pW87 ]VxCh BK^;61s!d[u-hE G/( :"^O`SvZ^;cl[CVa# w[Y80Ae=1l"a,Cw9ÆXFt(n#4Sx]zK) 3ohr݊\SoѤމִ/-8 㥨^Pgf8XIMXLVMWyvbYT*ٷ8KSl#JZO"V3?Hnq]BSm:B(883Tiࡃ r)9-? W>Ll,U#[A)VU^)H4hSpTc+qBN YXN2z5n:lS-ztὂzLA<4[_,ڟ/2vغ}w7Irs9)T|m~|$78 Ԧ;e }>wo%{MaeBV l6=5RL>z}ɼ"U6rǩElijޑbz9HU_z6V *2ז7\)!tPŚ'aXRyEAZ,VgϫQIEuW iTaܮ*EVafkWS6Vt)-2A+۹eJlf.K*MjKJp{E׹fTw'F,sE^̦?g})F*6Ʉ+)mzź Qo/?ZZJ_-/.g~/Ԛ;[XgWzeվ*Esٻ]E1OSSHr4sm5GG}# QיK]+r !O}8nkpGB108 gcb1z 96 99 x 1 0 WE6ڠhq98E<%ރ18觡˭Ƥ/]dEJᶂ0o|w5#B164 gcb1z 150 202 x]10 EŚSXZ3miNk"0?~x_9) tDYd7ZG$J?`g}.. й2Y,LJ@rm@K O;:Z\OT6RAa %6G2B242 gcb1z 228 563 x1n0 EN> ]B/zڢm( *G8锥$?s&!QIcyYc-O7)F1p8:X&6ID`p݈G^VC!`KowOJMhNwD gf5겵/y̯Dn&tX1;빴O6JLcvr/aB~ܷm_s}.FrRΗB10573 gcb1z 10555 49441 x}Ɏ#=fs,Ku{nuJp.׾qcuR(pQfFH}Fr`5h1pVrt2r:/'gEr[Xmi35fn3Y/ kdV 5M7]8=38zucO9lηB[շ{=^0+(`V,,ֈ3՞wfC {FTٱeA$WUnYo# +咨H ށ:G(h kj ,&0ƑŔ#ℍ N(&ev%:oIt%"pxH@$4?' ȼ@/?ʂvlX!((M=>b/`S:N ȏ"F{( %ʍG=}Il{ 5sQ%pfH+}9;}ȼ@xkRZ5 O 8XjZ# sgdVtR>:rg Lb0`cׅ ЛFa&edv Nʧ ;rAQ{RJ+ u܀iż~l&e \%"FZ{|x \*:Cvn%TRbRgvj.5NQʁ01 -A\ reY¼=v#lj= uLs{CSMLr$STA\p t"jr1m9O~~%cp_YBhɥGD;A`sM=A}{x)Ag#;+9!} 9+mbd!a##8kuOz9/ӃU/g2F )햛xIwݎzީBrW|& n2?lҮ@ cE2*fco48;BDA9~@!>|٠a4xm$S)sbni" gy쇯 gH^lpGD_3PPLK,=~9u/i(YX Mq̟:J4->):>؟5&ڴ!!;, EFHqn薿OU49ng Ώ#.iva[Rc &GH;ڞ\hĺ`tJ"&Qh1jTW+{Hw/%ua)i'+QmĜ`47V빀xPj. 45H録  8J0QAV(E [t w9`f*d5zg ۬@-3Kw3/PA̲qf8ę`O9.  M9FKl6!HVCS1}G_ZBB+=G%JHM7zODYr9CϑrCE!t}V)͈hT+J"+Dz!Z;ovi`XJ]g t"Hq.q (N ;7̈́EjsM,kNVq*BL$ة`I{mϸᱜ9 N3k5 H%rhts# ;܌+hs5^66BШQ hpM,!GLa웝M<6/Rj3psڄL2C2 J`k6os nJ&a&S-%w Q$$ ӌjR_׮Q\$TxjK8wR)#X- 7k'Λh:~XB5?Km1va2C's-۸J`0I^ӀgMvWZlГ4:k?\_茇Zu;-zӟ~}2 3/:ġVg莿EsKmyXؘkuG~Š23;˧}f?oR#N x1EH$oEEU[$qyDzBf3j6, V lTFiJuqBSzQX,-s7 zb^jo0TH>*a;Yedfn>?vvX%rIE/)&jG~ ! Eh7FG#K.[$K0l_2i)<%tǫFHNf|>Jg#acY$nnZ]/c}f>ͮ]Fb.)$f[:9IC.3hFX㴟;_TxTh>­1vN^<6Xd+LjI\<*Qp5A):Y~,ߗ*h/?#yn+BZku:O>'  TD^FcX:9t~]݉$?(vrF^q|b0v$G"jvR׭ff?JTZD0ArT0 ^~DEq25 J\Pvt.(o13>R; R& N p!B<'c-E&Fܺl\o0KDp1%<kDFtT+ P`dd2)hays'e?G\*[ ђ$כv}`k"h@xr'ʎ~M%=(A H͹Bkio\)b\:l Q Y,H6V ʬD Y#UY)_B#86xiEL[ >\WkC([q̮̀8FF9Ia38冋pXܢ Ȭ@R_dn]5!y [u2,PR + h\"b! /^>[Qk6.q+8?Dȱ&`e^~5;kмDhKvZmkǚbkVkKǚb[ơ~}!Ú2ۯy6ĚxfƚuCcDkKŚ4ob!/$zX_fNQXŌ*^f2H:o 1L eI1:UKoDZ&|\@%bը߈=}T>Jm(ǖ91[lCLpʼh4a3rRZ ,nđ3q- 1 j4FjBUP _h?)bґp)rkʼ!FJ8]dH 1 `p#Jaߵ˾,p~YהzɣS P8 # 0R-EC\|Vf{E(aCV\[BJ Gø5aM_a P#2ޕ C8L2Hۣ脗;Yt$L{YH 0XD$IDo"&ߠGbuɭ' < #v'Dxwh{<5:90fYT0c4X |AۺCl&>7Ӗҏ';ZVO`a'`S #t3MxE,#TO|ҫQ%|k|N0Qt}Vip F L0;4)ǔ拉2A&7Eʏ5|Y;aG0E CQ8tH\zhz.Eh"'hsL:C RǴ֥ "L\##|;ط/Dʏ2fg ++cP`Nz)"]'bhY#~tm^lοj/ٞ@fk\-_eV.fmm;69]{e{˲PX%mmH- tȆת $Ma(Mr엁o'G'^NoyՐfڳt[ VCu0Y$  `a`5 Ҧ&$ <L+Ծ10K Nʥ m˽څ -f Dl( X {L=0NAjb|-siKĪQaO&U*q-raT(%H0--,$0/½EW)ӵgbHlCb#;tR ^b =P!S|jD>Pꐇ52ˊKc3 ޜH"lY'.nvt[o(5 0cNGCRIS>iD%gq0gC;+RH,Q\z+(´ 'Gyl$?>oV,}{sЍ.0H`CTšRk<Ú)4<Θ-f;yZP pHFJL D2EzHה l6)3zcADḮha` G?fva͉w5Ua K}]\[4!3S8jf"J`xk`sOfErX(ET%Chmz h59`(aͮ c͋X?cuL[_(IP 9Gje_hia2.jqZ_HqzܐQԉUMdwF^BZ兂nK`@sMR?VI,(:Q#Tz( |F^+C9 6=Ig?JTnx}CYֵ_U6RX6f|Vnopyt^ʵ6Ut ]`֮F#&!.4Fhiz:igU>xS [E$\ԻY@CR#W͢,XFj5œx0|C{E bpN4o(xbjh ZI.w/DTi.jH3 : nj%~lnglz"# dJ*-ih4"mS@٦'u5T+se͞ƼB@`۲I\le~2Ş``{{[5ˍNZ\DJee)B/~uov@Xƀ)GFϹ1jR幓ϪnkALlsl?[,z1A|pz?W m Jd*ז|k Z>XG*. f2+) Ļ fQ}K'dk!flAwə8nFi\*5`?t{TEkduUlx⺝mvўņ` e'D"E8pkqsـ2 %Q"DC4r0qTKge9!I9=2%|ïEqUBV;Ldeڿ9s8F%^<҆ jKZHg 1PX'&6.Qt# b +1=`t 0\ka!,‚$G06|i b_/|OG[J3?-Zjm>wl§"%0 rҴVS`ݬw ,' 3/4Q)]={W&aMo]02Jшc} *j.LwI:Eoao^Y- cp0ytMjojؐZg\ƊC$W|Ji%Ǝ-XsmK/"h+=?J=k@K0nڟvcaR}sYz\w0i$Wcwi/+; =0/og5# tǵvt/~hFZ«׶x#ÉI*hYLTV 0{AaӋ&o' Q̢Yw~>lP [ջV0,uAHP }Ԥ;zFtјZOϳٌ?SB𛚸feMDzG$%9bӀ @F'!>J%oḊt?+nR~{FRbu̝;F%>S  J.Sg~@E0yZM t*c8oH2 6JP:ih@(*9E)Z1+,{0[iH9*v/ LBT4w.  ߒQ|Wj)[<5MH[1$,ꐎ&60E t R#/Gl,D( $|,XhHhD$_ IfEqB>=` 6B a,)`gμ@08+2i:9G5%@r TS5nB }!P~):|H4KHa"<[0KVi[e [vXMBs *ran *9DU!Sx8Vb&#<~yBbם@P<` 8ap@l!CPx#.CsL͊Nc;j64@(,ȃ6CH`:&nƟ ͉M~4~vܥx"p>c- ƣbAuz7ox֣ j^drkw{5k ͊#͹f0ҼHA,;UHK,ʣkΣx8lx1-~Q`'l3m@qhi{?|?[7=/PNsmŬ<9=KUSvstӣӺxbcS),9,&ݍF4Lqdr7u/g˭O7 BI/ҹ3I, YIRy->9|?08 G` ;DwAx`A Kr άZ22ay:s='A`Ds9ku֒ K2 άYpY]zW~5$-nYRW~5$-n,gq%qWcKbƲzVreWcK*n,i%6%DƖz;WXW{KRy)ֈu|[b{Bܽnv_ ZL;}&}CM>˜rB1V)_PWUDSyGQWJ1pNnOV%]NoŷHr0@d.L- M `Ȩ` z) G/Ot}f:WTؼ\qL>49s04D *,Hޤ+TE&Y|T]C2+oZ*pˢ*ÕcSc:> csUIjtX57nW%JbNHp/ iq!b K/ TpB3251 gcb1z 3234 20455 x\G TDbUߞn1AbDmƋF I?x d*iGRlx8c[3Se  B   vvmuRm LZ۳K0:Te&Eӂ˼J2垉4)+[*+̀ϋ^ ӓ׃!}"4'$a\n~kV[09$E,bru ,s`taHKC?}S37IOԅ-"y8SG+ӽF9<,`٘4Z;v,5:49>VKn)$䧤xHT}DT;sX3]6gRа5wV MVZ:-y6[3(5$N;AN>@]ZomyQ|d;9$%pI۲zJQfS~yeup>b4L1yoq˽Dī6. f͸!|4/V6B#>+z z(L-_[ GM07`BWk6[vzgsOQ_Xnv7Qt_!hf ^&+YÐnQL67e8wے[XE/OcZ|z%Aۜ1/8;׫.q~);΢Vybw66]+(B*O$I^b;^L{~r}EwN3h7s__u!]rZxV&@|Ag9Ь#\ԾEw`6!h-q|>_H+E_ ts04M93=[L\2Y|}D{@4/NR?$[̫+M*c[Ntӭ$e13&@v*Az7@˨t>4[VZg=CXG]6WFM5eWlWZ?+C[|sK7EǩnI֚g"uI yWJ2nco{:H쭨 6'"]S>-MD/\?U$|W0db/Bp|F$7N*²^{_l[K2ilr^_STs([!Swu ͧ>tIke5APE[b،ڿ& fE8[C`EGzE}م P]ok#uOs2k̖ W dA _: M WkˆCdUvrJiqNJ:#fad`T0ª3BWh ;(^H3>itah|fz >luAW{Ѣ6 D5$NT]xA|tvw1zu٧z;t/T|)2~Riޠ6@-aߜ 8kWٛz7dž5|15 Emg٭{z _'̽ banEn^n$4BrP<]fUooչF) Һ(+i͓wjE0"Hq߻GL45P~+ow|Uo J7#LK#.MVϟAl K[ k GIZ<81vB244 gcb1z 230 297 x%Mr sRrrє9P,{_~?8OkȎPf  7\\G-NT0Θgɞ^JFf.rAiVsvf'Q|0"BP&O>r1%JJR)js:3v`7%AEg@B[n2nQȀ`;!h^pc4F[ `B305 gcb1z 291 415 x}MR <E2eҫNq[nbx^ӬMoVHU ?|ͽy,_7^^x-#NJWd/g̻ܖ*ū<}va1&*y9oϓigݼX, / d~0pD^g✦dF>ݮ7n ?וMA6ve{㧝'ڻ 66*_{oEx%|]}5y>{7?glSXlRT]gGðޫ79B0rʟIo߫ɮmui^ս/M&|앰2d! )^^8YRd@@UDnA Uɬ&e϶ƫe:C7.@yvWe <A!߻-BH~^U*oی. @sή.- G6cI8]+ f2AUe2Y-p ߬r8Ej 71wɊ6UL>AC @HI 1Ě \0DDrځ%qI -9>UN 9lo4aҝs?ڙ[@9 d`z]W+6E“*gٚmߦĝ`0z4]>[VI錩Fk U0נVц~sG:Pb!5 Xt7U5H >GQr;rC*ېO.j}%Dß#-wl8Ί7GӉFT=O~[1 $F6Xo^K4ʱ8 фܠ\?tr9ȃecs;焁$6N9;6U`Cc݂~"EAְ[1ZgQWVx{low~:×~a^8|pڳt)("i +9H9¨X%m~rc=.E /$i1Bl١/7I#rÖHd : ?8r{}+9lWte(͖-HhXcD[!WͲh O@8%>.y ZPd{oVBuuo'Vy6;D#% # d9[ 礂CBg_@Cg,13ADߝ@ MIԞq׆5ڭ Pi9GsY rĿÙā&KZY^Nek׫9aoQwi*.ĔBH>C&dfo͔vۙ=sn tɼή; ǵ^xd]+~FN!str0U |1ϓGs>hC꼖K!'m O5!(2jm&gk7E#۽z.SiVʖ"!٤ո4@:}#{KsZt;{ozo/o_\O|'}sQ?5.9!RߞPR !Y\#GJ,Oq{=`MwDtY=_W:Kn)G/4сDXK@ү > vGf+sbη9)*]Bф!>͙g۫.Cַ#и,%UzKQB6SƀY^WR@VhG,Jf=APh #FuE}L dyad J8L4i@??VQF^G wFE1@wwF,( _ݷw_,K'txcJ*J!ѓJhVi & m,WMgfBp"/3X6 xn&ɠ6Ab:qtPI8kih?:n%.A 2?u˼ g'A\U0,1Y0[.@(UWļCʼ'q%meyG~Ց/e'{=2bD_~|/`g}o#U-@1]JWLQ쥅Q,3Hs]rz6 F5l~%1/Wad@44l#/ۮOX"Ig̅$<(uBM%Gȥ5M|w-g1&n gAx18UtU? Z#u&^=s#x4 (CdE o yۅyN*|} ;D+Tz!$F٧m)%\VlxOf蒭aE>.Ǖ`=Y f-䧲AakVE0Zx֘'5 0~dOн1~k|d0p2YxD,ܷzkye?h?=_{6!< 7)!&PqiGqD@ C6A(\Mi8s?0!{iz88aD"y-`'vVLx0dٳ蹾\')16M!j޴nNƛbv6ccw3t.󤼡|g_A_Y!Kbkv/ռ~ScO|F@e-1" V C Zd;rR" #9-ٌQ&HBxS;2Iԇ%cKV[;cجA m$CLzCD_`K}E!X 4̲ס { $ 1ɰh\%%`. 'PO0<߸&.΍u~4.ǃ`Ha}>I{ͱ Б|' 9ZݱA -Zp./ns5Ұ$>~"D||o< ag~;a#\03qbz0:Gk' @[u̸ h a^7Nd9I1Zcfagx$_IѧI '"HQn«j.˯< G92 $ō&ap+ [pcɃKJ !N?k79<Ҙ'mMQN5dsfr@6aZq:ܤe=8Œw)%Yw42,sK  [].} roUE[sUݥ`FH 9j jd;Wm3\4,,@YL$lw B3!alΰ$zAT.e6mRZn 5Z@%:!ܺ `pH\0u&h~U>o@7F)G:J"AR!p6UMp<-|! _BAH:"Ѥ12{_QPV8ޏ=mEj(> 13!Zܙ[o<Lcj\m;'EolջG)oeFI97hgI`?y;G-Q67\ە8 x0v>2IsXIv7kf́IphIb`1oz^D;7R_.?&(ΞNuob#fPs | oѕbd< & _+A']c}5Uo˛6#uLbl`D4MAfWwU('lX[д;xĹv'x%'FHdzDA崹\)Z 'khfI.dHD;p&װ1tt zm$ח=8⇲v(nf]N~}f>|PB)ڼkC]z̓N¢;OEu ̈́d$-Dp.4O9~0 {$86L2wڌR@TθH* CZ Klf .!9l*| 59$nh\xn)ࢁR)ϊA`H?9?8כDQįDy0"OkYKls`(38^ jvt5#k ÷;G^~x=dtݽx ?RsYI*ђ9lH0Cd+[YyniKQrbM V=]d-pBM(aH۬TBʩŮmʌ/)Vinh ~oB 'hp8b8}+ʹ)>R}QpkFd},iv U߼D2dSJ_LPtڡ9#\~"*ӚHl^p:ݖ)*%\uw)QLA#;30ƤYg*M:@/Ĝko ](Guׅv46 Q$21b|a>_@*d| )͚v^PZEkKkr)HYcגd$mu}n P6b z=M[iT~"cSlY!2K*e &J]h[|?G0:gә쇧 7atJ[q&4~FQHbRSX*/"U<*ü λ}(-y#C6ON4 9;ʦǫӃ p Ħ~0 h"­LpE@TwIU-TS/>%Μz#pT5Imk1w4DWD Nx˭{͇޾ݷW{ ,x$nóc2۲27Q`bXݻ=Cz+@ɓy:Nvet_< $?w}P]"Q Sc7l/@ڼ06^mM7}b%:Z/d=*$Ė .]SRkfUqsӲZgN67'fhCJ؛ 8 l,RkoLP$W;=Z?PEN8CDMsİJ![Sz7ˆɥ!bi3ciwX㖕ؤĖsqQF"1׊*v?辀W X /I/P f`_ЈSI\S'/AU߂*1e=qwf_87h ԆmYKKW[ P,UBdqJsGEwRۤV?T'H{nc8|M|fF]Hii^.u6:FHxAk & #Q 5M;Abmk 2աŦʤX)[.+x'SӅkw60`Sw5BƓo%>EN籿@n@F6;[WY [K%H:M{dzvI#31Ӧ`wvmƘ%pn#ƿ06w Qpjhh&!zT[KȷDfPgmU@)~.`ط%{ >r k LcyDZJ}Xo's~bw4_ccێ2|v5lnڑ P+zzk4ٻX$H񝎱)e1bkͽ}io=<TvׇgRCJLtQkb- b9i_.Kl&ej./抎p+q0;=ZKh)BUG5KK?k̩=%$1$!lDo#6dzA zQ3euⴂ W>y'_nLrj\#[nbxhB  R=Jx[-f; ?+w25\dV/{Gn:;AG;V̡~DT35FF;#WYt]/48:H&/`a"v,YԪ;nIfx6lV^:H5]oz3;z*.q #˜/9Aݢbǜ~^n8g^i#x$w;t;4(`A}LO.&NwM\t 'r8nTD []Q= ,clO[up .y m+i0"\Q3ut<Ύk ݺuvbWl%b,JR> 堳ϹvbT;ZҫX1N+iAy_BJPd1VIKMјȤt>o)=~W^|{>ƃ.7 =Ѕx;3+׳Z\ K0k`LMK5SյĤ5m/i@%rOtJ)}x/5rxŬ68`;n׃7Rw!\](lgׁ(޾K0Y<=^CӆVhiYX| mvb64"*%ky^p1`$s6E'^V9)ސk8k<8߹hnǘއ:bU uHpx, VR^ NuPe͞&Nƕ~͏\\Ym+ݞ|=Dmx~w+*}8>|DGSG=#BxXu.}(pyp*p܃i$HGA]QQ4-lJ!uA'b  &_[Zn~Mo8D{ڄhq,5B`͝+J.&I%N(Nsj ͥ"ZqJ'/mfd畔7]iLTa|ez[ QxZg FyKCv$4۹qy+z-o¡\Dѭx4E%t>fA:t]C3ڧ OqxW zзaKo?t%雓IX]veQK< P̌&*W%3]cC)0+Թza}=#cۣn䌪2 HlSvuNbH*)1" 先Mh\7#|zu+w?_Q6P-_LĔb=WUR4+wyuSWX(A:{`TG~DmRgwn(V4͗k6S݀t қ ۲PHL:rBa1BZv,'*{Vc@Z]J_LL=68Gct!@2 5[fB;hgQ?c _hUj*MvdTzBZ2Cm쳹 z{R,u\xЌ-u Ո.lyEaNGzᑀnpygM*i04H x>'ns/ӧA uRBa$}aot彙}G`B+N!_}loQ}'{ěP  oSKxI =M-'4Ko{x82 @ExwIrSi*-1^"b)b̥QT(fKe=0b.sI  n(l7Pq"Z'}/8w{g\W\GlDU2j{Á?m>@E:=Qt C!*iÜ@J8YMnfOnOD?'9f]~ﳤBMJFv`o ~4)l톨+Y## {C?N>K?Cx]בu;n#D |l1~m`=fX]#DxwI]xe4/=\1k龘쳟v߈iyط#fS>Tlv߰qY6ouMNtD9Z@ȜB; (1B')cLGfT aq(2  Ky/~ r8YΧkBvSޮS »h@zUǪ.{"=<[Kͮ!tHcC97jj0t v<{܉C'JMm#ƖX9 oJkg ZnI cdY1..=g؍g'q@'iN!Ն}6k0o0:FFAԎ֣ !4"rW%9?:%,$wGmFʩ"$m=btE' jPNulC.MB}1ϣ?|Sat+"-&MbZ`8+(C va<Ѵ c\^hk6CgC0FD0dk=&t=|QFZ<xb8%~#sy!vM Sӹkμmnm;:'CB0Cu@Ax;bJa萮-L7ȎMcSUT) Ia\Se+vlRȎWK=.+jHwAĻ]f*i|RFuȑ` /3ȴZt Qc7 SՒ\.վ̟/qfa0B[wܦFTMǁC1Trt{+>usr..% *zl^!ʢv+4Zr(0kJ&!"aiX3~@>Cki"*]ek_] 9,E;Inaj3v/k}o)_z=+De_De*?Q)5^ExIi?&'N^AKN.˷KAZTSo7K+N)in0Oh_  ljvp`'g!z ])SsGy#ȧ= ~n뒪7o/GPZwmW{m& a0>a}&_;i+">bw%լ;F.>֋Vx 6q~fK׭z|x!<RϮw0H mlBjQ`0 EDG̑ճZ}K0_AٯkLP%&:h"&\i'<;sxIQHj? 3MWRc;¥*ZbCeZ`h,tRit|xI)BcyBp0׹v.Q 85>Pފ@&qM" 繵3eǾ% ~trf3zGЮޙMR]9OpN1{K}_~0f{i ]paQΏOs8g2τQ#1(֋\ w##/n`yG.EgjgNj!++vQo ]`1/3-N4Ō&!mq6Ca3&O):t%J~Й5폢C vk'&{AmmtYgJIZ Zza@/m88;~`v6=Ռ]K)5qSO61$juSi297tM.B105 gcb1z 92 108 xKRVT/-.O/,3-/*Q(,bĒh+X[huĢTXʲԢb.S/713OC ݗ%B1838 gcb1z 1822 4127 xWnHc3dZcZqv.,c7;nϲ/pptU6!4_}WuVûN%NވCև\Z&PvLV@Cޱ7}s.ͤW_8&ʏ[\`LnR\Tld=eViVxXAydj& xVB{C^A %V> Ȕ9 ﶬҙ&+^20.Dg,+W@%sNdJKLyhKV(CB?Z}3\[\m<(8/w9H }9+4hBEzj RD߈So8ٴ 2#U 5QH`%Rܓ N~I_R1RShqc~LR,alP5WlPg%BϽ#XDQ@yN tG ۸QKc@ұICɗj?ط 7d^) SEؔ?1xKco1'RUѤ/"m̭D aDŽY !{.@H>|eKm11gYY4bSb>ߛG 9{ ֘2=|ȷ~?`, 0'zY}o3A^00 w?X\'*c֊oM`_L M4a\p}Y 'Q%K5V?΁{)bo3B*+[*1ٮ 0iоnAUv01vi.fF!Sr0VJZFoÃmi7lיߎhNKC,3ii)>v۔nT8mI:gͲ5Ė~vgҥDa: ͯ؃v{4i.$>q%bHƱM Un;XfBJGp4[ej,+옴ӌk|P7rH djYg"84@Ƣpzqɴ+X'XKI)F:$p14¯Ħzw9{Y(yV`7PX_wO~v+V7~;ZF`/%tbUq.;hM3#"MiNO`B4099 gcb1z 4082 11898 xZrrϧ#0-IJnZlJ$|) $$@(3;WL!TP2{{_O^"} !)}b?6,Oeb'&"Nif}s?o,M?4~焞8ܶ]xQ+/dי/ x myʗI(~SYfnxe1Kx* ^f^AAtͶ@$u>W̏WGurlɭ^qҕd|Dޚ)\di",=œY]irt@ AFXӿ\ 0B3<p#ZY^)<$ր#RC EtRlU%6ե uF *?$տUFOh:\ő\\o2s)2vgXAHJWb![r9" Fx $q*6uFvz4ӏ%;>w p¦Wl8~O.{ly6޲7OǓ={]o ]L%Il<%t7ߍNj/=/&j:gC6㋻,\d!⿋x:!a.=:_?oG=6oI-W IŚDCJ tw;*P`IÔNNᲮγ<˂y 3Αq~ƛ |IxŽ0A(̱0yReD`y$^-@ @?a=bx&i;Ϡ%c8Q%Z'@T}cLDjS#gXR᾽`Ujfq&] lP:4Hg`uG`cte=Is&+;yW](*Tr T! VS(?yjReWƓ[w>MPt˛bz9=Ǿ|;.%/Aty1;WX` ݬmWUnk`{iu#{߂A\7QI E,M5B_#y(<| xRJh_9=Ŷ@r:1n AUnu."?i$\Y&Z2reR5Ȃ3TGfPy~de.D85m*}I7]B~[^Ҋ RƦt(ߢ|PLYեA#kBX{pJSBu@eH z ՌgZu|{ / Bo"[0iuuDzuZ\{Vr"o!gàił, ,9)ՖmY,KvV;%Fʶ'qŨꘈ-Km,\lLuw!ʆorB*bP?Z&i7rAZƒPR0# CA1µb_36]Cp_j0SgeQQD 5K]JF *>kh] bVn4)H!;*侪/_ kOݟxA_rS[f"L ccsabuԽ~Ŀ&Uk8RV ojGg1o˔{5aN)!D/o2Q9&~xHIW]p6i'Yqݰ/ KNjlf*Ss=jhJ{G;γګ0FE:z׼>PYAYt1Aw u8;w0rひ g}~{x`TLml>zO HzaZ_ ~9 5 .ʙz)K^U 1PMoms%6Sxk` 4CͰY4|* .'Kv%xqCgG^(^K4h牮Qn^RLQX1HH:  `[8gSnw*Dmy#OH9&D$jt\=0VKu*n5& c}-5B?|ע/%@ZIABB+Gq艜 ȗC;aҍ蚱s3=5 H:JwwﭮUT*,In G:琢"n[4cT=рI[~<~'NJv-J@2Ӓ%]1%BIftG, $K?h?!#dЈ]DlWAPGoȢgZ ,@Yڻ5P]E?A~D>;bB"ŀ'frtmZ:36~nTݠz~%>yi?yԅP;huV?[y#g"V濍Ȁ5PMqNPB"l3.Te\=nT# Ydn]䖅tKPW<2o=f~},mFHOJhRR.N%VQ2PF:6=}AbeXQOM( mTthMrY~ Xpʄq 5㧖]+*{5]Tw P­bi>GtيWB@_3GBN#b 2emۈ6Jc$*"wz7i  VbJّuqFaYf'^>yݏ p7 Bxg$:gyLD 8-!n<{&%JSOÁK'Tc> RHxeDӗVW9``Z3X w8jї>g(][czꩉ,o0Z%1p2|AfJsE#wBτ!6F]i$ iQAfȼ@| 2(#X)4!R!K P 8]e3-MHrhY1ڳ糽Yo2U rpݢ"q8[v @ q\rH:$Bc`7)Wf9 n+F>.z#i 6\/B dX`\Z~"Gː]nt< i sb3q;M?m9O~~$ cp1V'Zr`e `AQ6qV8 ᭦r?YșKc0c uL?;v}gC(ez3}j8k&g~wyy(_ E@۱˂ͼ[dHF,x,fgBB!` ?O geslPc`ӵT) 9J1XHCl LrWl$b68#THᯙs((qL y}OBEY;k1!ԣ#25'tON6#S~S91$H)-c1T%QHSv@λ>rf;ecLziGruXW#c#SI1bFFQC!^1}E{mqhhNcNI;Yj#TXăRClvQxAB&7(wtt36$|*QôzHOf,jo<"Du [%knYp)o?qHW7m38m*3u,ϼ@z3ˢƙ8|gN=pfӻ8*hh^4eU.e #uZIϨCĩN~"o !}!Q#JݦtTƉ^|Bw!b;Ym&job $A&yTJqR8X+˜l4qŸ]sOE\ rH"zΛ]l9,RYH$RKas!3AynZөvS<'E,3L> p7<556ZifGsSXi !0ԅl~#pl_8TΝ1(5`¸NxN waqbmNv(5J`& @#&hq0~M<6/Rj3psڄL2S2 J`kns nJ&a%S-%w Q$$ ӌjRݏkר.vj%(fDKk+G"ím4U7ԫf2,VP Vv&],`? 0fK>6nh0Lj>W`Ü#yB gy9/TCJsπγ'_P,98@35c*tPVJ5a Z*lJҥzrUm?SM |N2\sD'63fiVdykĢ=.ToVb6qnSR*="Mm3`bCRb'\nVUX,NX+ټ;v개B=`P%7l@Zkˀ}sa6:m-R03OF|? c]2uxo E#6lW5;EX*M 1E)i9xC1>t"ڳ>wю'*7gcƤ=hP7["T-akr42k!#Ky¸R6FǞ| {'D!n DJ ?DA]tH;>[m1XHIZj y@ mŏ7 LRdǝ%%Gߝ2JV[mң\Vb}! 6aӠR{iBQ u*%ch7so:({WOB/zͤǰU;:l{NvķHQX-BƈG,1:r \Bu=x&Yf}=^{Xr*L|Zht>d3Xyf=2:6E"VPXJ\:'ָm4 H,ۅ=۸lk\'7I|=uhK|Z^Ni /G#cǪYc.JF(Iƛ%ΣgP'N;pd[{ Rf1Л"z~Yyrqz6&HCC'`1S y a0^Z̿H򃢝m'gIN}ٛ2P "Jk Z(S%/՝A1fb HMCb!_ى s;_H\Hp\6{&XL[,8jAT!BU! "5^܉+_ ~vKZ25W(P!xk2",vʥkˆE*"dH@z]9Qf% k'dqTg ا| A!1-xps[n_  f^l12uJ&!v <(op.­@ϹMAYV߻ {xC e;[u2#,XQVѴnEB) K%-_.~}l*I\&WLq80c#Mv!y>־5g9 ֬ܓ$5coŚCB5dv\fm<5+5$c5 ><5iĚ CX_Hb;* 3/7 #6+A}5ab(  NX|#6.FFi'WjC99RbJ3)f]nc>yG~hV|'p9!5z0q ÜAaGq6d?+(zkqd9G /qw˳R$LgYH 0XD$ID`l"&ߡGb?ۭ>!ူ _4KoEˁ9Foߡ't;fCViKTiǓc^-^ dbJvDKo!D('^Z{b'`):}>RJKQs=볚MSJ0R`M98w'-U j475Ynw_Ƕ9_,R~YE#8R n)eY/G}~s-F)ΐG`0\\P \-.])~`}!R~!6xgK߀*P |d2YpGaʍH&{އcN0_kJK~Yvlߦ`nvkoߍ@O5 +9@c~5WtQ ofUw>`)LBZ2āӹ({D6J{yBUmvl=LVbn"8IC=6@XXn5rMCJ& o%A'R] -f Dl(LX {L=0NAjb|J,siKĪQaO&U*A-raTC* >o8ôc0 C].R;GVgbHlÐb3;T~OEc Pc LopdqAn1w).%0AXK- }!OY &lL.""7".)y7'R[6ȄK10ݭV#[; `% pyM8a1Y' lwsu ZU$uNMM`ϦvVБf7[)Q\WXQ& eK0h汑<~2YĢZy02#D8aRY,m6H=Dj(f392j^ˌ5avlQ7ɳ58Ђ"V[F2ReȑL/SgqMɏ?f#ay$8QDLXo ,[f!@p kX֜He0DWݢ  _7VS(yMLvB~m"<)Kz`c@5SiK2txm505/R_1 y-aB@@H@- 8haCYʸϨ G#_ArCF=S'Vo>7U  3+-暤~߭vnYT%{wF WӇ .GN{rlB$]P*Q{:–%D ٺo}zœS4%8vnqvG*e "pϒ sjJpZuM0) r1s7Vm[;=6nc{ZzK^@v0kWMB#44}7igw|"AHs 5xf/M/{=Q_)5r,NOf.cd#^7)x'[@:FXx"JM4D\)2Zp!Uߩ`A>Q@[xc"ڀ b,C" *0(hDy#'E&YS;WMf&_>,x=縪#'zj'!ԍJw:2q(<# 2zMMXƦLBjRs">-8A\zƵd(7FcKT"YڏRAdR|{RN5sPU [G),ΜFc}NY!7k@X#fT(/EUZx jd팎ϧhm V&U?nW2Ǜ4C/\=oNyn8b\b7JEE,tC"8%ݒ  6E{\_:I`=S) mJX-bt&|ImQ\. O.Op0[}^TƮX*j73sS3Sk K#" <9$wD̖x>Wڠ,9vx{Wb=heǣHLc./~)B,| Vۉڜ /\V D+ ׵Az9KN5i)pY\f(tзJ,?6٪DFG7LɔUV'+4:in9ki ~|EK \e͞SƼB@`ZR$^ .O6z~6՞Z~/|Ftqa V#`YYJˣ_63rĢ1`ʑ*8jrXVf(|_*!5Z')/lt[ (3bDL*T$8ˁZDR&(Bt+3@t ;%.oKV+ޅa։#L9Od Flm)&h+)+c]!ĴƦA /=\4#J$Qe$S'm8Fd0J+V{< 5)W7i|A2ղɳloUZTP %Sl>]MВ8{p":+MSAJ?4Y@A+DƵYZU/c]rr>t-} $j XaFm]F&n[%x~yz]|5|b^ng]h>b8 QHQ08N-!`"\r ID}u .PF;xVh_&j ;'3)G̀/=pzhm?=CH*΁1Z/(6GQ[B]Ѱ |O`p}ID?t>0~Yrz|6]:׹ &# ZXK`9 $ !_yCVl`'plP)]u]gwzzfp<>bǖ|JVURYˬ7Jÿ0Kc*+!Fn;/!usZ.}Q^r BS M8NIGb,̼pGtb_vFg_g([mT(j.LN'27f1EoBoѼ9;`".!okOCVPݯJ@!ǖzޥ"h%wJVll7DO0roZ)ZRk,}[_; (Ǝ4GP rY]:ʁA DA)"nK{\+mlO6jDUx O92A 0 ՔZu^j6I|,zg:>? ՠZ},BX4TFS CS%$xۉMw?# `Wy &Gv1FDb9АJ 9D-}t"EӵNn|92V]AS0KK !4˙6F-̊4j6.~]r:?o; 8nq*e.Ck5Xd &Bɮd0l&kI&y#mzaY#\uH n >nk:]g,m e Fb#S!HTѫNF0I;n?M!p[ [1(+X<3w`d֊8;^DdF7ΩKjX@G 4O?R(n;4Cy6gJ(~S$Hmwd$=Ylp6KCP~7"zC*mOd򉛔z~Rrpm#ThBHR?H#8%qxiOKBtY!}*PJޠ֟bza& e )40X!TF  L= ^H@ъYa܃2NtDϱV9A`bG{?xhV HvDm\Ew 8n884!B) "`KIY!]K\&/ ϑg"` D)Xh)&$Ѐ,#̍Ek9mD't`:*S{kIp-~b9,cpkdJt3jJXe9:\n7>E/ʫ\WuOCڼ&cͼd&UV:A@oO55J~^!U!Sxb&!<^+NT|;n}6MLR'HڑV0D'-8\sNseߤyGvD׼YmXqUN,A{ T>Z56/Q28Vk!pP8`UA z=A*FYK23/Q28gQP|eti'$jI[~gI]IXْŕĕ_-A;i[IIΖo*,i%6%DΖz;WWKRymֈu|[cSL-{ev_ ZL! 5s X, |]S֯GoKha8:fFCoI{m!/ұ? Pk5K7S {xFai=X'22*qJ)9‘F>sf>WTnМq)K|6s05D *,Hޤ !ۢ@,Jw ܲhJJ 1`FJi,_򀹠]"VA(U&Ŝ4}a 6UJDž!6,UB247 gcb1z 233 297 x%Kn0D,}vc*7ڟ圁ɲ~n=kV,!~Gno-]Ջ1>u_DeD0:Iss7VJL4-xZ:Rm!CۀHLQvl4s/㻚PrPt~+&w4ŧ8S|KT&!r]`9jM@`3B413 gcb1z 399 587 xuK07%CvyX$6W:8vvӜctBV%sQc fL,wy sTtu*ۅ~O pVR2+S0 [ J-{烔2.+aTPdךUR [ YW7q5k30ş chXSMWv : BUiB^3Uw35R"i$Fַ \z /$X>z+mW:B$;cˤg9\D&/\6^a:lQa 7py0Hg&Q?Cm-gt'C{o'?eEpython-defaults-debian/.bzr/repository/packs/8f58f4eb5a9f80e8d1304d11ca1e0b1a.pack0000644000000000000000000006127413157701442024070 0ustar Bazaar pack format 1 (introduced in 0.18) B14164 gcb1z 14146 50686 x}KV; DuGTdwK㮧TURMe[HLt3+%kx?ⅷMgxdɒ ;C]Iy9yn{W]Yw,ݺ*7npgޮX%MHw>ϽֻI23=GϤcٮrL?zo_yqي_~vgt~-bW޲7"qWo^c'<}}2EIUֳ C:YovU_e#ϞzO2XŸJoK hmd  [tVW43Ko`8ϹgWEZzL:xgeZVIVan>7_feu%δmyQyE-n5҇vC$] 8o#'E둃N5,c+ !e??ʑ|Wz^c-"y]o "#,0,9PxY,]B8~ BjS Ɵ%t^`;yR`6@@U@nBd^ə%dm׫"D03:tWe M~  0.C˖ίa"W|UE Rd^ !bO|ievCWI۟^yx oh0@ 4 "-Sꃌ` Pc=^Y!mvѢ 2}\]iwh_gy^DŽ-w[mŕbueB xflI!FU fHi}^t߳RD's ع3Fgx\@ׇُ6+AACP![ O`8VO&p[my0 ;.4}xa?96"qKo묫9C:KU.sȓU >Đ[|䔵-GlSE5IvG(yލ5>_i?Y~?{#sJ+@);r;U)9SH?)4vgwnyhvg_2ERvO+s.@ Y4Ys~=NhbC Í֢}nG[8 Sx(x!Ҷ Cq>14B7IHؙS|챥5șs-<]AƬ]dCȞY*8l`!E# F*݌Ŭ-.zi_IyMpg(>v@R,y6BXTM> *[`1J)PC l4dy4X_6F9H2p6dnux]6q (1oZLH!fPo/_3\b|צ ["(JHRù:Bפ4M:+4}ס0 ' ъΰh\%D+C̮V'PwpL% yQKt\tA4;tƃ`¦C:IHwl7C6VWl9tY3N5o4k. FH'BOa{l؝_ʩYɈ'W0zВCCL?E'ijà? ^ό́]8/1sq\ߟ'9q[mfawt_I֧&_R'F]Cg՜_z~|'fe4&7gQ%NeFrrL?w3/D}JMUi h cki29eA֛aZR8e!6Oʺ/ޅ Bw42A/s S  =5\AG>Wu>' Im`,05'- չj)edF p aZ=\`8I~"$Z n bUE+QwF.ڱG]n $ Ӂʞ;8i/ am׻8>S5~N(WcU@9!d7ZV] #&"(ai(V׆Q(әo9A*}@oKM0Z hTs .a*C0 @%;WL]q5U#MW\8Zb$G@(t= .@Nl6eMp2mCZ'$t5B'Hp<G@f;0(f8>c}mYz{d t 13!N3d8iTj *%;I %{['dHޑZi[Dtax"oQwK{dH޾xE~[Ѩ =*aG͐h S= (>2˨c/t)+U8<jp^D]]{ď .bH[2r߇qT ô-{Rdn&ϭz_cqH1y핌(); Vp{p kRln3,wkWqpx}d\diۻ$X50Θ@IhKȍjWR{eB|>O8sj{2dn`J-0xW^}DE8;a8'6Й}~J-26jXgko3@ޞ@ў.%IeHH)Ht%Pp;Ϯ@ȂK_wtU3镐Θ4ѱR Z9,3RsI-( 1[lMXW[PwopsN.*6-;1€嵘G :&N|MDHNhdI@*U_";p-j1bFwt r1[ig!oigkv^wQt/>|@هqPEbyG]7@;J o:>!My=(oKS&6,ǝvߎՔ{?u(Ҵb.lnOJ W]r3H 4L5iB=G SuMqAin'2Qua5\ -`b!LMyȫW1O"Ҭ)kppTV`A5p4)d$F/5g*ep/qi6]J|_FC!tk͡f-*"cQlU!2+Jx1*u&".eKhyq1d?mI )ee~A\xnŤ< ǪI=>>,@۬GRy%(sQ@kӘcn=dz{g"pĦZ%xP{4?f&8` `C%mpV [yxЯߚ]o1(ڰ51mI+e߾}o.$Xԉ4 i=gdc25O$@c}ZP铭# @'E),gԅ\R@W HZSП I.M ]2fYv4քM ESR4c/pQ/УM\]LvGLAwd,H4XpYj'xC+ V8GWFw3k y&a]22ޙ魤 V\qO# Vj/O]RtpT@9itdI''h I;dp,[;)Nn$Kr'HRyMyatd-G-bʝ6U<#]_25NeFMT9ؤ?ŀ TAm(VEb y!]^t*sh 3BAUw X5P}Q X)^D_.^=C%ſ4C-VNuqsa_UUk|jl{~5q~Z$gRzPW [怗d [2^┨O $}nSIa=G0O\8pCmUAn ˆϰga+ lH\#4ם\\}>P.ö\\cX r 9 vEDmpJǤ'c8 ;"k+R[#]Ks 8#UGǐ!Έj=hk??/S8ÓK{7FڣnXLh΁fa;qB7-UIQ i8Z@?86O_vli5cHv1wkp#{ޣCԷm_``,H ޴j)vNv졺ਜ਼rU֑#C|dBf{ *r!O5eX|ThK4[ i@"'8 n?J ]7n&WY 8]&d0Q;?)S?3FxHE1ɳo.=ot8_|;|5Td,UOM>苴)pn#ڿĶp6BѶ7h&!v+-1 f1(3j@ ~Np4){}oXLO8 N,8[ k=XԎ1m2PB;v`[+[Ű%FCuͪ&wys3ZnvާM1Dx)N|k?1ڻOrZ%<)_s%ڗv<=8CsEO(Cϯ7}€ HnLO:?_XM */asp+`2vHy,E"e 2UI>,-5I3֔؝D;vfG[%d2g7eTIoYz8'`BOW/~is 5#]Ne՞~|-x *İ ᐫҦ¶YmS-Vq&W4 *5OV'%o9XĈ$.,lu ڬZT~7{u 9V%9I3BXd`95eGv~A!L{9f\WuL[ܩ[SF<Itǡ3b*ue7"=_'WR96wBeR'Af$'Fj` uS1\vϞtDD+$+!ѥuZOZ`_mV3l9@mzlC#0@ꧠZb]s0BG&2?vSH{v/WG2G C:GCj/_Gb89Vcd;>Qy)%=sBDQ2E!Ĉ3ERshwo,טB&#XFX ''0EzPlg@@e YU%=[c1S)9Z6MBM-lU;="$2d*Sxy"i|TLS.֗ժ#`?$ȜB^02^f [+%ކʵRSJ?*on.G)4,'(P*J'o{dii aE-cVj+y}6#3a*Qbq,Z~ᑛNnD3á^JmyFTh*7?CEl HzBtvLLĪ֒?6]Zv-0&B횎6~rt`k]oz3~*.'q --.Abc?mrnA[3fZ e)J6rFjd}L*N}\z:$9n\;h8ƺ~|4! &0&Y%kB[ D HyYu/$E&cԛ(\Y&;wEޢx2W^|s~)GvxxBMYtnGi R5%(0Ba w]sLZhۑx=1R"Z6I$-%<:VR[T'3fn[v%vJRчpyXÂI+oǽ}.dZ_RBhe l70&@N̂?SdHTKr .:ɠ щUj?Z-G5\]FӇNbUkE9jM^  !;6P= 8ՃL%{8EW׮5/9qqe[.s,tZU6ϴ> s&::"83C$/zC<<5pyp$ps9PH`pѾGukXd: Wc[4nЉ pΡ4<3& p74H#1i~i$i5# &04XؗՂB{W.N>>]L^Kt P-It7`p֚|VtZ3{M@7ݮ&w|` OJ6z#i8R<2FO(tM-ّhMq',pf6W}PM7tyx(zu.T+eC :%|KGzx||[]<704u=<@Kp9.z eVKSi<Ȟ$*V%@|Zߙ.ʱZ})G$z4u.eF@,b{܋V2\Bmtʞ3"F=ei^-/DlzF哿]Uu=g_z钼>wgSuc_-IIԯFPؑWQ&3qy.qˤ?FxmZ=kxM2CNѸS{;02lhv,"cs1ҁW:KoV׀ve%LrB9biqm[FEjvF|"f+~>5 lz;Be@1b;*"෌hӾ 9ҧuE:.&^V4ޑURU 9h &8.V]A#Xa=kР9T='@q\S򴋦Á?RiG j96ɤ_ŒB@rV@{1vk>-"+nxPI}g4Fܧl&IޛW<r]8p;P J Z1ބR(xJkOr=i"e9)Lݼ{N#F#f{d*ĻMROS>mn% )*tb: E?R`"kXxhBE,i@*wHi5[큓bZ[]ӟһF|MT)gWf_4t3lԻ~!>BnYR1%]Vcg;রNO* oh[jbl*5#)ZTOb^Zi5ڸLB mp|L܇%鞭;xQ ?5x5{D7tSGxB4C S\ӹRkθomV&t'#JfJ.: Jpѥ萞,LȎMx5ST)IaP U VlRȊWs=.3jpwW̔UR J#GֻA"+,n_=g"j=gyO; 2KwUSr:W=y_/ ѷ*M( +N PpX릘z,$_urL--j?I%uWMD`}GJ$rX:Vb4y8 CknFE2Uzfzס%&r3$Iؽ] :dN|/`amx!Dug7ʋG-~LO<ڹ,߭:ў)\/o/:yv ɧb`t^ʂQт_Vt]l6M zkftV}2Xh&ۑq @knf=RMt7FCj`8 IDG̖սu!gWBx\ PnDq.u(ZlaΊ7`؉԰3_ą'Y$B(K9ӟ9MURm:… ⚉bNC0h-hRzԎ9,t tqx4" 53bbڧ>O>dt4=I~tj>p{gޔ,&Ndeדvoft$g`Lƹ4}||$q 55^h6K'Amۉ'p8<ц8`y'l3;G&Ҳ<{\>j]rt5E [lCIJIBmyBp]scssm_ܭap}}n@r+j%: 48`gbɎCSMdA_æU Bzg7Ku} ۳$y5Fп7b01@XTst={Qc1֋8@FƳ][&T\CfN׋WEY1|d:/4zZ@ҝi;OC5jh‡v1cItB3!Դ?s~ =Iܧ\FG5G^k9r%?N܍>}Em ':pOo:ɝMzMjR5cAt%V@&fD b}8x}g"&",B10496 gcb1z 10478 49150 x}ɒ#;eY/+<8ժY޽GOM7("E׵wnfF 'h) mMhS%DPE7 mm FɊE5i4k?&DH$P&c@/oQXjxɈ[:ّ3c7Nef^>T)34d6i)x4Q@#iC>Ӡ/!\HJzcyO_2[A,ii >bXi2@җ>t, .[ҡqT"= &7f!NFX"!AO'Ȣ@|(MyD@Z昴hcqԥ8VAը̋dqt, .ʧ RxF@hhm8fza4p1h0_cnW`&XNALvfl>8IKq"`_ _W݇__:Ρ/] ͼPDI8 :B`Ec5~h8] zҀ rDUǐ=I'QQ;z! |qL?Z 4vv[=4r:!n?}//1`Zz|ޞ :j>wJz R*<k b6[?fOU2M 9nv'|/6 tq^MNGs"Li 7 6/"\rZs+qY"A fQͭY`>Ӷ(ЃSpNY;]YA,q8YJ8 ]],у4U(F"7x7Z0S>]҅Di(D:߮ӗ.੕D/M>۹@¸-f\|3i K" # 'yZ 4:'M1WNϼzH/Wz۽\9ь MX;?\pzfG'x 2E {4o 1[T-b9s>2^pSdY%y6I^ps(dz\+;E8gI@pO!pGα}!r"60 B '/:xp Pv-I% @\cЎ)=F#loNe>kŨM $Na:`Ch4Xe Hn*PQ@c8)q*w1zOUB/{s1cjhŵKg(p  U/g/LFm\p?経8H&s:&m g0!WP2AHRa$FB z8.$+Md֨Hr $:'JRJ߃] PqCܛ~9`a. eg 9œq~!ԇ@i 0J"HC:Az$Ӈ!ɟ\ PRR]%te<B5).WA24%1Q;`*'hly˸I)b}vN|yay/b_)>eA#o)hUU4▄[M;$\}QLVVPOu9oO#JOʯr Jguiқ [QXuy3!v@C/z]Zh.{RK>% VXu]#dwCj"vCz.ɘ'Yfh+$l26%9!B"qH8IQ6Q Lj8ߪwW{zk]2Bl`f2]z?L?`POqk>ĵ}n~28ҹktp1#ь8B1tRT]c]2.\#6l 2Φƙ(UDx'pld4RC4,|^[>Dhڍ;>"ǽ؛?賱P l:Kj5s\pI&)rpV2ކ uHcI6q?c9vPR`ĴYY߭^Jn=f۠\lAn!&K7j8(ÑrBU!#R1w zs@$݆ MW ; n-eXrsX-ɘ|Ф$J  BG!(\QG%l18˫L gOnAܻ*xzK&=E~ j=n1uFj@ ⺱& Bau9x&[z}=^{ ;0.gN57jv\ 6BBb3$ǥF_/s}t꬟\p!5qIQL6~_R}Y;n]ţb muCX3T}R )I6؜).DoI_d[tf[{ \c7mXd:MTDŽOb*F@_1.Y f8_5~;e;ٌNd>ɣ{~7}>̾(ޔR",IiJMTtk!HOSW7nZ1{nDd>t811bn'ӳ8FRʄeAswh8166,uY# 9&Rt`dDA2d hUFs`d<i*h;ϑ^ܚ 3eכOCA-2LG !V3t i0̹uWZ^ J %j߭J kkop>_[$sA%$$! zϥ>щ(QY;t 9k!p ~6ڀ Lh!`Gruqok0u;s׆d=uƃy(Bka>6:AJ K[},u, @ |"Ϋ' :p5Ֆ0\"C)J4||$E_V Cڈ^191f&A=4C/Es(%޶}%);%de{.ֲewXOǵlvZ:XXKO2XΠkZ|R=͛X> ;'XAǵVŌ_*#6{n!=Pf9D D`ImI9ysE;@׈FFy'Wu=l؀1Im@ A6 B_mLG/  j}NP)yH9v>/6M;!6±d5X{H@cԚxJyo8ſnT53'%jg¥sHWYRi} QQ !FRþK*/Y# mepH^kV˵2$ :@4LwoM=EomNq׌sb$=q1.IN7!Yκ.x0aT^e]lrzW+Pb7s 8mސ#'U"*e)* DIFŒKM>WA q3./Wns:JA @~[J4.hߠOG-vm(wଡ଼㆑6< G?ǼxOU|^$WgFXbR$E YO0&0C(u}!G5HD$_~51Ci:Y74v[I\NS~q@j1h٢o|j; mut#Y${ywA*/BH72]/EmQ:Cm2@ 7rq)r7LQU}kyD[o;H=bl%!QT:ܐUP f8rFD[x'ڲH}6m)tZ \>u VD+ŒŨ9.pˁ_'"y%RJ#ä9*d 9 1D% ^Qpc򭕫d< /,91J(p"ݖe`HK db̢yߠ\GnAF4ThkɼCquRnBd6.Ouh6rGDW=w۬u߮Ѻ۩fqe=l'3}-U]=7Qz37rq>h9NBxaf({D6J{y{&j_`-j$tj%EIg)E&DKfӊo_[5A'R;>9.P4 d ϣ2̆X. (;@׈F=,Whi'1YNH Nb*|uHlU>=ѵxmNF=)8t"5VZ"GVc=dK ~M0D\!rIM9SȈ; {56 V"KE4x%zdN$eD5؇*o<1vc=7GR7urch zѷ4DrxXH:`Ģ *05TAyr#lv:[S;WMfF^>:x9縨#'jČpUMF;hBV'cJ-Gņ_ҵwg纩sw,jQ#> 5 0m#|~sjȟ["HƂI#RQһ\:} ko?j )C;,qMҠETY\Z9G'$VR`O4`']*K Ic GC##c&5å+xcؤ!aqVEo4jpKH8 |9܏Ha#0:%M{3_>Ш*J mNYM۩b&t?̹'\%i#r-9-ATh'cW-+j0ss3hJڕ)acgwk.X6<22gt_IS:7L9oMgylc߻dc SG68Z0tZq&XiءMomqwv]S2~ü].Ϟz'S[L`DSd0hsleo2e؟F^^?_~Ox'9mةu>|X${룘RhY!U!, ; d-rb>`ۭ=XjR+򭀇Tۊ{fa3Ơj)[UňX`cLXNL3r_G; )x[-hvpH4l"q7[898oKVƭ'S# Xzw/l@?(G@3ٹhr#N5H 1ι\nr5R)Nc9@_!ww J8SHnGg才1kqpҔ4F$Z mκ|UmAP[X&F~%[ w?@>1aCT t{6FiXk#$k\KRZ /C-m\~Q\=Dtڝ&u%B; dsKhzfu _^l]|5|b E^i'mrǴ =j!Fb aa0:N0`b"ay^u ʨ|Gϊ,3" 5SSzT C[O{C[OO|gvH.(47bcԖ/- )!RU懲 .O I&48HN_^>:6J+0F: Kth9 %, c_Vy4jhGἚbLt뢌<Ճo45KOg[&[99Y]W)`S.+aC#׽藐~z~s:]|'B[g1qjF+~/h>izҽ}=0]KLok}-:%#W ,_ <${r{N)EFW|w-W +Vi3jjX/T!(r@0.>+IBm9<`4Nߊ?Sz?q;V )m[{J~b4ti+]ZF*AB4ZkA{ S$䞈^7H>o(0p+mPqFުn5Y-0ƞմTF"u\hbכbPQ?g:Y6LVGrx8Š]X0Va؄3m} 2/;4Q >bx‰^x3t;?h`=Fಠ>z6k?ogȇq^#~>Z&lc?<+qEsJ01[$۔F- O.cP\???'ya^8KYP9F.iH0 #N°vmS&l8L0Xjdfq#Sw/xvA <966|:M9e{X@UԪt`t :dG NK'#*ƍoe_,T:t\gEd\qU KHޙ"Ju%2K . z9NhqL" YODRh=E/ꫛ\WuBc޺Te2PYrM*}W=zYs}W˷ yNvqB !c3"`FѭZaTE_Kl;Sh"uoXHxP:p$.CI`!x$RwA>7,P9 R. &؆"#/zQ-ݼ-b-RQ-'H"uWQHKnmEcߍ,Rw^Hk|H}(f_Q[^/WGmLw\_:(`zաAEsW]ξ|B}/ SRKƷ﾿O_ }/ӫܳ R1n[/b| w"{O~3?Q1x %5ZH X{^6A \>|}cz:ZvDRk7xdNt2nM^9hdT]ξI;ص}!&E1rHLpu,l:.eJWY:HI&sIDe$BE+E^-I'βD%+,Z~8k˘m>x51WWkvHjүք՝Y\M\ٚПՔdlMΊ<Ʀ}uUwV75髳5Fl]yi[,˻/9unnj2nMf1h 5 !Fp rr6?pNy)# j^jP׈g֣yLW&)xu^b_zKߚo"2ΰ=> M`g5U.uBp #,!g2O}UͲ}^Rw Yރ 1nǩdbJrP2&gx+ *{qTf*K|ٳQ8HV|ט<.NJa|J@tXoo"b)jR OPN{2@?QB247 gcb1z 233 297 x%q Dgr 7@ɝ0"K؀(`縇}6~9dp 0]Ԅ '*973J0#A%% |Dj}܏6LJPËjZ6q7&6( XpSܠ"׃N*뜷w%_womty}H"dľ)nǦ,_+.ӟ(BZ=`*>zr-`B298 gcb1z 284 399 xuMR  ,6Ǥ ^( KIҍ$ m Ѭ0'J8)3Uz-[{=L[}CдPGC?ͱ7qovnkw#yV@Ь{@r g|%K[I) $rϜSZ۶[~<*.b}9+B臃F]ֹQNiFZLy#( KR{ƜVD[zuFY[ c Ƹ~X{zݱǹQuyvЯBׅf oƝ|vm0`Ұ18I &ɑ >&!*)VE&E\]؛ *;;,=&j򯒒B;Q֮ҩTL7t~vP>لwX`% hc.%@:*SVP) ]§)hn4;m*-a҅L M #>r{3Sg-;2?qCq~_k*8ABh/dRy$R!;E49Z8iH*'3$Ӽ*i`| y| r+8T _Q#uhB0g :߸)=vs %]=_jn\jFVU UW*.RSĒNjŢWPFE%"aFHhHW#۩hnwMp /ڦm0]8;sȒ!J NbF%MP*~xyCJd THJJo/H}0I(>؟`^ mq^9*E'-Yc-/lU,?/BJ * .LxE"guf'YJ\tD[N*_*P)%_Jxc&kKE xfo[ )JS"8r*#G6CAt*Y w([bm0avi܄BI5aHSٵcP^xA 0%#Q"g "26U,`ܴ4ƍ^?Sx m-76s떢 R/[UMB12373 gcb1z 12355 51955 x}[u[VˊA&-ᒆKGݡn~:޻v!j(Lk &_H! H`bwCO&&@"F붫jתvW5ߘs9+qr6ytz7#I5_peeG&&Ϸlzaߣ&FOTО"}]";Kb$“ș>l"Xr4Dې ɳT4&lbD9^DO9"f0Π@ƻmՁeɄtv㣕!F)1%d/j>ӽ]jVCOG|8[->u1t7E_bjlMt= q6luF֖r`P0y3Z)IJqU[uf<'-`Ĺ'|uyt[n-bxZkDO|PZb6[=>K$ᶷ<s5ŚB?8ۭ{-[K[ֺM8=_4k+r<;ZX3u!吵() f{ba20#7T?I ,,D ӻV7Wg$ 4+q*{I%Mzj/3=Sq^;/53$Oށe*f4,MN44_i I <9b#fy(gAV:P佤ԽuZOi!$|̖YB"HJ^QYn|,,`z\ur~d]YUAIrloh4`zL(ΌsuP"HnҦ݁jHʖUwR Z ӄi-B&\S͢u2l1<|uUx@O#w9Ȝ4yW{`OA֖AU8ڢY0 gbԕNME2jTE| ]GAV FM1 ́h3Wa:[ҮD˶HF9Zu`#2؛oWگ0H8΁mxr}fA RKl)DtĜMЄx+{uSχ4z@AǎB ĘҢ-02knЅdna5S ~QyKu#00cY@zؓ9֦ c'D٠$ ee3GWe{x;SBďȕIODYhC1PQw WQA>xj2i7.vy^ y2O W<5;a Hpoj"F1L_4dDg#<< *\p)qNh$e;U}ȵOr5(4 q!I9uKڔo>@A>x r$*S@Ȟed_H2j<\Mf7]%ozVP~~<ۣ#dUZ728-xخt"?K ` ,,1mP4<5i6Svt*}:]\1#:ۍ^n2FFtupĺ1Ysϵ39QXhǘ:DQy씂[%E4LPLD+HAgC0-<8+,भ t5mᬺCY@*2W{ygMЈ0C@Di=JM΁' #H'Wzr0& aGl~h0r,Pb;AbZDhJ2F8-zB⭋tqt J6*q"9sD);\#᭹s*ųV\+[dlBzn!{!5`H[ʵs, j8eBjHx*J01Fpnhk]l l-Z:( `Uv2OK#!3UItq5_b6#B)h9Ĩ81(l֝A'DpW 8έ4GR0 K0dP: 8BDjT$38X2ΙLFsWkrt1ck2]Hr| U~` u!%U5ZA@Y'P*9V"6;MXƲf4ZyZIr()I~c E_orIL1z"Q!ZcQY"GhnVh}Bjk% DҙGM9qE7i +zS>vDғt5r P{O>t׵eOxVu^7[:C:Е<Љ^׶[z{VI~^|d['\XJNn1eQɨ-SL˴ U*~oulf>kPIٵ%DSL7䂐38'WnotH<:"Fi"4DAM :c ~zԽk;zv;4 Y`.Gff.gq<1OFPGqps1[gӗy D;!{f{)czOі*ڲijpIY"Egz:j/meW0 %[q9Pi2?jMJ'+T*rn,weSC6]_޶Htolv`rG+ῡv_g)]X[$b]0ɉ c"1(BJekͺ+Ǟ9vPQ(荆035Iy9wuRcǬ13hr WKfDgrtnӲQQc3gZm9w:fE WoO/@b梷ZlV]%ۈ<>kg?l^9bΗ99=79+k }(-[ߘ<#Z4T m*$jlXAתHwZM ѭI6բ0yD$gLqL${!mxݔQ'K'K۾xO X&?3c{5S\.Wg7{FC`1\ T&V\.tnrXEAjv+u ,r=~ÇΟ3遷қZBւKCI.(5DJRp闅pfSq\cIoۆ㫹I3)$|]Bܥ|vNQb k2~t"h9ܒ`.U}WW`tϽ% TaYh6ڤ%TBT`FߪW̴. -vNDxZ:1/F+WW[tu6ZFD."U"R+AqO$N\Jv=FWLB; ,S9&0@9 NY4KK7MӍڬd8\Mۋt .8Y͊-gԃ SK3 n% ˒9rkwzuCpWc67\Kvہ`O +T)M?Fo'J"PY\Κh,*%!e(U. AmnC;.nߘe)@ )x3$tR+{}mYhWY{-!uv+:90<(#\%C#$,ov[ytm%%⯐N?Izl͍SRq(K`)% iwUs(K>)vZ ֪'Yk޾k2{XOVǵnv_v~CbJچS/7l~̛l-v&8ˡ1g,Q!ĐQ!"?m5%}I+l# +;lnr HiV3̔}a7 zp!mZ1Y.lV mYWQ&LsK.mV[?ݪY) @4pG3eL,9l"ܔc{1-G[u}n+iM*p4XQޖ'ـC+tmvaLH].93v~91,Qw_p$Wv`VG$3%&E̅`uydHS5xr9M>ߚ]4dCMsIs2‘Rt8"SIfnaWaxsHVG1ݰwh"hk.y2ȩ%CR%oOc{B}Z m5đ:'S.2(tZ(J97M )zh"۫hk1Xv&r J(5Kp,gpA'Dڧ֫iE=GT: 4H)L0KG)m+גH^: ׷Zj1IncX hg[HyyW@&q'OFd4)łF`A}UL|7gq5Yn' O|\mv}o\Ez]ݶcNZߵKGc1:zV~BǺߜnisKHlqrt({<߿cɋo6D􌼘-VQy1FF|iY%NWL"~OB2۲2Z5tv3= wvljWEZ:V&FGŕϣDC  !-u4|#EfcVFsVEeڼQ&Q8JuN ͑skZiG;N]Ͳ"̹%VztZ0+e3R()TDzik|Y[iu6 LV(ò& X+ǰD mⴠF\md+7!)T>H;ߖ:m+d}.wW9ESTa@{p1[M.fNqq%ܳJ`#sޛ]+w"AJ8W6?۞/$_`歹ۗ+9râLTgʔ"YjBIa+4) [" Bvt ]LS+\wm,&NQOxOWMW:S3n2\$KM2)U^TaY&WBGɖv;n:O oJ?Z~3~tLr$.Y#dž0蘚hXeA`D~[)`['x:wW,0g+iK dCZ"L!=$O6FQݫ w֤צ׺lϧ,nQMF,`WEIM('QG陝 ݾIZ?^d*АEs/dbdfӾ| 79h0XY^3:Ӏ@h(ˑD{O+M\2%Uiρ!=!оq8Ld+/iHrX9x tUۧ@+,BQY E( &aTY] /DvGYh_־t brf`tԄ>}@O/rrr #OeS[)TVD Llׁ" e;sp3vvK yK=q:ȴ{b%<һb퐋9d5‚ $3X­:0iR^ߨ]l5w[ZPyI>DeX;ibiş#Hk"n@Zd 2Ej y!d.uֱ|-ӆ۲߱G;W'Ns\(QE*3L9$ޔB!ge@,Tˊ:mv'M^d'MRr]SrI@8aX m:~E !R GQAi^>c(/܆&pR9F@ _0˟hlY4ow?ONe9uujbzE'X$[jb[9ZY+KIj(]Hq4ĵknf1bєkҲ|N* GJaj:Lw#,/i,elZן]~|ksTw\J"Xp0POM9Xg~ӏTUdf B,6* ~3beGBT /ͯ|ug?_oo3I?ɿM{ߝ(߱[}ʷ}"Briߤf;ܮW\zn5 xLI4QA^k=7_ͯ~}oO};_tv& :Ycd0\&`I!u6yyh%W1n~4[h߹~&&jmQ <&H//"fCXYc>?__n_?7 eۓf^ g5TM2\"{ż%9avͯ?|o5inhpiB">ED>cBw, ?KB w>M0WٰZ,q(G1X|p̡(9#de__n8E0v~in.2΁=D!d,rJ{_y淾oS?K~i}Ic95YK{1LaD`Us(\RLd(7eW~~cpٚ`FE^&JVC4Z0yފWxCxG0LqL8Lt/mχ9{Xl?uG4|DP<wCC Ɛ(sN;JS\3$X, #]|׿{{;\~!I`&1TŒS2})bM*y,J3@{W~[].e 8II)OPzq>=ߠ0\,h rQRMED7ӽk ]U|G A+IlQb|gõ2-+Ŧ)TV_b\%{_JGwХU (IX``oO|^|_ZO`XpN,KNWV*Ȓ-߼S H%YaO&܂|1}k pYV$ k^>CeVB!7?\ -]ß%4(`~"Ɨd>8_4<*oKtŘL* 7kj;_E))⬥R|WG$cAF,U&,xgw"[0~~a]}a\~_|a_,~6O>L/ qOÁA,;KbgIN/WGk,Ki*eXJ rO>%ΩLaX'z}~2$; jgYnY$& ,n!`$lhJ!{/IYMBYJ\Q I9\7ԃ*ՅUb1`/ņ%-5ՁX7~hB3145 gcb1z 3128 20132 x\ײun.F]f.3I^ ESM%3yԈbAIBbj/~f z4)a<5c?uY0(A 쀞_k[nז_'Uۼ¤= s(N/CU6mR4-z̫$c\Y*95{ Š=]y]'BqBB l6޹j׺fu>E|J8zn- OR$ϩ"'[ǀyi '$]A>x?~c rvRu!?veeE^i)"4/5=[o~"(ZgNqtOBچ*Yr H@Y/4Yi.;A1%@]ZomyQkS'K۲z Y Ҕɒn//<>l 1&35 2ζsAho (sJZ+ ۸,e ӳ/zT3#Ŋ&Ch?tj6+z zh˩Y _[07`Bgb/?\U"/҅L9B -_.,>'= ]g'O )YcTN-)ZU&w1|SX깁7IYL̬$ -.m^ o$2+mj+UY64fun;߯RMs}wT)68>E^oS],"5]5t7E `=2FeF[cod=g ${O8@&N}>_Cѫif!&&(DnٱZ/|TeɽwO* @ ' ,e^7[#7EٚrTBgDZ/( S8xRr))iz7a"^Wqa <^56]pt]Y]1;Rg4w!lY{5:|~oA |*DAWͲ kT"mYfKy&0$I䝑XнHi ISxmg}7aQMEܙw3? Envo%E4=2+j,Yj :+XfSUyElmˬXUK ;ZӃICEofˬm|!gd*CuīݺȑvJ+4j7_.3F5tJWRAyk 3r9NJ,J R.uDϜ!ƪ[snC꜏鑧BUϗq8CWZ4בކ,Sa^U^Ap 1VoOoi":y75 nn.qen:|._x|u>;5]X-k̳3~Cz81Rr4:m?!.'M 9on !T}l\1շAM.hTn !b[() GK6p Ķ?.rE(s.ļ =@a"eڮOI9[$-Ad#b5aX3'kZ&2 5Qae[,!@!56P];pFۺ"ZWBj!D`UڏAh7lA|Av߄Sv"(oTޡ[Ԩ7XAlM(aE(Fe"oٰAhW߬Fe"Fg"HuX%3Ԩ7LM&D5 S$nae)RoM5 DCnC/;Wz~|d5  Ȫ)Ʌ:%(Fx`T3QWgBh Titah|fz :lu:ʫhQRqH\'gh._`$bן>4ekhErUw2/ҹ%d?s~h^O.GJvI8H=N8xԝ5 faAدG+yY8d^+&yE#w>IbԬmպFythk<{ښ\wnΧ3̋b? $tb^ OOf Bgc/r aymƧn `#q&p)UƉ/?x;0rgbQ9ޮn;0pc*z;~yx.I͹5 c/9׺;;F X:$9 v^O7y9ka4~qQ׷Ӭ7Nk{-z^_[]NSv氓n՝縴ăc7:Ohnïā͡7a\]z=g =n48"^M.jޡ&o57 㧾hK{X zp'G]@tvH+1[uQx}f9SuyAG7Oa*W؈ s@?Vx>TXA$.!]w:BOфuff%.lס - %ƀy$h]y"hA`q=`zyǃ0IIX c|S68׹sm91ϵPuj]0V!`mYvD#h6Š}ЊM:EH‰3QixFq-gрkl/Ecu#o2{Q8Y:Pi>QJQ cVmBlj c/ b,cFxY@9c>38 $F$lzn\6oV'v8q!hUux~C>~0% :5lB`jUg1xI޹1%sv7ۀx^۫#7\:{ȋinwhUY8QNg[̡DWY6Ecr/ *>u*>ēB8prAKL0bdAO]Xq>TUOf{zppDOWS-Je7Y,3N͜w9Ԩ?/Y'Kc \`9LY&I!{S/g~(Ka9 j:-K{7O<8~xG';TO=`֝U #$!(4ޮ"Jw pqy/٪"Qbeű bp^{[:8O=>uwX9b~F&$8LU~GT+9$~3>?ҼENHi8 p'ʍ Fxil<`Nj 8_xrjTܦ?A|,g|J"_!IE;dʜZ::eѰ?౹r}]hv@ hAEۢN:,L=؎A m1:ŌkuSJ.f!3oX]r% P !*8|O>8zxY9s#wz+)a( AhN-(Ns1s!D#7!P ΰppO }7qC!( vQ4CBj&G:%X0+t9??F#K qSf(}[;Fp$iУ16EZ'`%"OU"$ 0QS}2rt(ȟs""N8`#\f  %Hm< NΪ&t%ڕQk 3ř_g'sѐ`PLdY;]=yy GL).L3߅ ª(UљT/oUg]U@5b;WWq$giuM^bEkKSrY"H_ԠhϏaP3tLY]g6uPa a8h&je/R x#'O#`'%0d(@~䡊݁MƬ]"<@S) 4{:;6U%|9"tz Ydj0BE7΃P4dnk =5b;H9B|E +8L:QGϘJE%OաT9jkj{wgItܰ4vmĚQ4 sXMK'qPہ(VEݭz].ҋh>sv`|Hmz/Lo*^vU )? KpI|OeV4!ĢȨhg9oÎP*{lit&,PE(hKDT! qzN/f^@l}⨆ivZ(jhqQ>pY#x\zUzSԔ\Ocntn6:]lh`cV ٓ:BX=0mi"u(8bV&<5#f0t2-Xx}X8+2grxy0y`|5vD2}wT b 1oMe<;)?ub0O<=-"V%pm6a w LD-ZQh kmU)(3;PrmvA"OW7pQVQU6nڼ;n]3hԄEu' ff l9:C,y=fH~wv슝m4z<)R5;[r,{2’+x"yy,NL.LELj$#7PߖxilȞP 4y3=ǧkJ\Fyq;g$bvX n5Hg֬n-W)#?MBo*{1^]+OP% `r۽&^tܬv(qfQKyvG SeOWO8379{PE%}c T)yhW1}$Ci+Q? -|6{I=Њ!ȹC@?;S/qרx ݎ։?xwݑJBk9@ڥ)9,E0$9ld8t heDN_bA Kw3# q=4IDWGn c5=E\u*TIp.;'(iH<~8c׼8,ޠl2څ߉!oV H>6Ңud !Ѱ?*]YJ8`""o7h/FLg9As`?Y0$6{q|rCž$Q UVO(J_y^aLP 씜kT%ȍʮȥTi#d<̩u ^?l4woyC {;yԍ#"/@v V}=鶫Ph&w:s,:T^Gd`[1r2A4 D+nL8KqƂ53<02 k\HQR?"j&U4b$ECEqOaXpEMF<|S5>RG΀ AT~[ adR,|8m63$i7:mE#S0Swl#U.D4sp"za BaN[cp/mɇ-0.lv?(+]2c>bcTZT5+ Nԛz\DJ&"Hik:-,ٍ" KHO*tsE= {]b>uҴB.^8`BE A#J2VBDjRrП6Nv&dh )hn1 s޽RL'C8r>P ұ KӞ*͡)J [طdx'!~"g`d'>&[ 2S 81Mpƞa̕MzD.\"CP< X8pCOI<>WRSrTnkc$467jm.ZCwB`(;'<`S'tRZ K3o0gbO&]z*;YN'y)),&g 9&$rHRSӨ+6r g\pƴ75ӎ{E$Sg/ Pʖ%50{Tkȣ<gq`k<@s d{#[gr爠)R)cV+\B\ݫw {C,|4hȬ5H(gȒpCD/ #(^)|{.ByX+.#,KW]R4ʰTb::֒%YyE]gɘ<ռE}g⇓KR'yIPqMY'5[Kb{ZMzHgjSl< %^O25EԶMM;eh*4Ab )yy8 -ГaZة6UX4S} K <F~ :;phcEC0MHy=9s'sOz^5& .ѰfVjO^AN䱥 h*bdZ$NٛBr%L~J lfE mӀ-MXvqE%*eI3~ŻG`.Ѷh64),{K! ؞5s흢xyZMEnT)am"Vx4=pPɻ\v2z:mߒus@ly,s'M!^*@FWhI`ZEpWc^qbȯq;'UcɌ ^e1;۫]kLv XQkrCfO$ sh畛 Üw#pgiŹ牻y ;NweҪ;3EQk\uorOw꯬6H JgV_AIU@Zi5F~w@nFzN$)/Pɗ3(r;&bɈX԰8- 'PaW/ƨlC%RcS%zy 6@aL`E:),N bK3ʃ!އd6ȯprdM6,Lpdme$С":b"fS6CHoĹu %oƙc/lhjj-SWhLw}(zR~}UbvzR:hlwv,3dLrRLg8(v;[[m~h!d"^WZ秱i(""[`Y?VS^@i ZE%-.c܁ʌ)-bp|ϣ*kL?C䠽ӐGC4NsƺEz/#}6a62#Wmvh=BP<2}N,J*[Wb0@/ϑ o o۽FQʣ[LL036HepZ7ׄW,aiSjoٖc(UgzH3B*ݭJXXjʄuoww.lbhg{X(pPhz6E2-(Q9P+t]G:HpfHg_b`"fԚ,V5;D*x  _lBK6tC5/sw)MnTސ*D ][j_nDhokQ܏ګ?@3f8gŽ·q&1z׺C36Qv䰯龙Xswk҃#V9۶N"-O)Mxi9ui.ԩ@D,Ӧؐ8&+VL+,ر1Z1Jy="sr{ʎکQA,K偨ƾ=I-XrݾADZ䛈 9L2w.Z 2b>ڿ+#`nw[rN;9Po2FZj5%ż’S`p&Q:IfS)ܵeԬmE$ 8[#RD4BI}r[?F3ffֺirv*Bцp Px\%B / Taz{O&B[fe6 D- i:%CD$SNΓ Ywe[amo}W6.v2m0y^|kb8jܙ;G !=lԴy(r Ts*Sv3M~(euݯ*d|41mdG_Sk/ yHCO9̵}e#j-j ^ƲtyU:.w8.a.9:9][ݗNSQT)l8JeHo:( :FÝvI:+7F` r`NˌݷFӨ/4!|FԠfʅ؈ǧm=Deޢ[MmAT&l烵D[HH9]\u;:Qy _V‰rWn0'P\-3[o}\GQE^X%(yp8g#9냔Z_MG&O5E͆h"7BIJ4 2Cd4S x$G;ͭ.F<7vV2 $z,uٴ֓+`^T1ƛ[-ٸ LQshOwrԻ˜hQ-0 9RVc Ӳb_]kp1ꈈJ5Lj>($b+gFx V#u݌ONf (9f`b3:eqC؃ijy!}NUYa^a\?{OVvm# %?fG;Qi"(>O؝KaT\6I'ScsӁWu6bOwQT"rV0WH=R~\FOYu'ν[xW /w_X, ʴ5`J=C7 D2 2'Tsi9Ly :Q96+ #=Pyι=iO[b)Usi(T~8x27Ew4c㡉*Hg.HW@..B?{*;Ssa(gl{l@%eeyRCZlou;MGYPl(.b8!lgBf/\bYXY=' M\FSV3tx D\+נ5won/U~!x˛#0 [lo[^報Z2b];kiRxmKoSuEQ3pD,a4yB{cmc黽N 9]Uɂ:K|>76%L^ F|&vę# H^4TS`zhV]OQ9-zTvkVx>'JV11}ÂZQWl뚄Xz'-BjеӐ tقCB')隑0x@-נk:zS'$|dohqp_{ ,O^ ,+t~72PZYe1nm,̄Xb:;ԅJ UAM̀&)zԌe9RYM%;7uUNRQ0H* r Ob[*n-YY,3FQ l<TZ%>`g@A)8}4 $q˹g~kH#sx͒*Cr?8KZaPC`[ gܦDMNJO0$8g]'iX;f s`t|ɈAglԖ,RD5%]+"E"IÊИM;䳋eVN>PDJ͹ʋka ǂLZ0A\隗 Cz%_ǟT/O(){/+ElG)~ ڻFJ.%Fʧv.cΎAgrSW^ThNnvUkif5B`ދT;b:.tj䭙&Vr W=,@f*T/Ox\hZZ]gy ],rG}k8wDiN"`۵͡K$76R_]ѡrZv'ϲ, "Lj H9aA(51(Ss U_~?Ş94,4s'7:k?aWథhiN)yj Qe J-B),rSiZNSj}M850cW+BĚ}y ՋмaX#.BwMEVx 6DFK׭-z|8H-,3m:{ʹ=UJ:1ҥjIé-2ȗ8…T \,k`404Y1$ 0lOS5HgN!(bײ*yd):xaS2E>K?]Q˓]`uX /H}MÍtRzUTLY#.4i%[KGùͲ;zf h`E$#@N5$gT4Z󱔁;FsbW*STnT+"ŵnvW!`yM\fڹa"˓zT)7шOE!.lZTxuP=Ët ؖ}=){;o{}1z6Vկwj߁Zj 0`ĔySکV6T 4KPLR]>s>!Y¹/eZw"&L"GX+K'=T{v: {=lKCz-v.w#YAê1Z{\C̜Oеx]T`:/4ZZҭiT7&kYGӼ>̆}~\e5Z 8]cWo&\Ѷ$kb@BAjnWgooEETBaFn>t"vs$jc^nc5Q $ 1oeڧj8iBi%//\ċjѨ64r}~c*Tզ{npa$1 ӻw.!N`AjμgZ^XʦM /.c#i(hF#5޾yo[,kKr$[ޙ;Šp/\u~uy4$BmThv͚CIEl^/e}GvfNs|6q9]|9fxOL3l.yyP{3Iu1q@Z/~Vmn=rRz٭vǏ)'[2 tqTL(_܀ t} H#,1^_ZdЫ]̫(}/ ۗiO?v,IvIWTI.Y : iԻe9qd?=v)Vx3?i!IA'x :I"Lg[|:-6Q8˟ҏmt$Tᩰbϗ??aL6\Ю3͹SSg!PҰrllc? |Ƣ1DokVtr¾!$D[V XaI`*`DsSw@_0TM|oGn ' zQDoV)N$N r.cˆ.j?3sZ+1#4KvnU ^uEV fy>2C vwZ185a4YG 94IqIP? E$3JFIh8}.{W*XFy`~&.6v0]VF,-1|̚ ϩk).ippQwho||f_oZp./3rh nFȡN.rк5ZI\#$āX OQW+1) ×ԝ?ό<]b!:hQܳ v;<}7g~/ϋxfxˋ_t>rw gr+r_Ue>FRz ~՟ſӿ#i\//Ǘ_7S ou \~GҠpWvݿ]a._qh>7`o?~Ǵ7F瀄<[?&W+_ݗ+PmA}'o R[_vwϿ_g`W_c|;Gw8礴k,}k"ؿ',dM`*ػZ x*+N8gdt-WăOV~ N ?5׿j@2~(`~<™Ŀ=]z{iz5aImQǯG;9yoSfދ,&Wƚ@Mlzѩ7əDE` I5=LvjU| gЀ7bMb*Uff#,'C)' %3OHJϯq,lH=y/jD3٣[Sy{iOL1oeT{X^'kڑ0ȔkYܡ!"]1i9Q +z쮉3 Չw"Z*lz(ɏdJe>ٻ ;C&*Vܞi#!@<;"Ѐ&X3áDP 8r(TD6B"\P:ɾc<0$;@ юSù;JSɒM4*m7 R:~n<쏳Q{߄Lqyǫ7<.hWҷﻩpD6`^YUkXew eFt Z֨J=khY"p/<k{b-Andx?p@ Ad"d9[PQӱ& T 'nLc3nfsC;wɑ˄zN9K@M&KO΂Ff kT;AF:1ӐQC24h]x8S&e+Lti^]|poT>iƲ͔|}DFvODW$2T+rOa/*J f8z?2Y-8&*RPژp] =W.Eg-V$T[;XIm{KwʮWamϹT}"upTuM 4mz`2|x}SNtCs{Ʃ喾T[W=PKDE|U映]Mn&F`qp4XwLnQߌ)oz ŔB,hەUp|3hcyW~XlmYWNϣevuY;u8]a\-;i E@H* ӪlGpGs/Q74hH/O{!6^֖sKW~&6o9"Ӣ"=1t˼e?"&&1T `Q^\E5M8᢬qI4G"U ٻ@{8[I=T)8#\X7*sxX\7_8{{F^R:5zGoWə?8I|7kPd?w"*Ӽ_5~0G S{W58Xk$ )Go R:x-4'ppq|`s.*֏Ercs '4d#P:`\US_Aٽp}bh0mECMO+t`-&xApd206KEDT\fF(naKGPB q(L&m2(nˆE=U|JY=ErV샾bƃ[Πƃ?ݣ}9<=o97BPclѭ;s݃Uc9Ã[9oA??A~8wvΠG0#s{Goyypwo܇޼ϝn=WqvO@;8C,ct޹]Ãq2x?+0ף;gу{8M\X󀚁\t{o~ttwBkQS[ ?Ž0/{rs(]ذ5݆EA c-"63ЏLFK`YGkz*?GQ9~tH0trgBIQޏ>^C_o?𞡱|5a4:;o;n3>1d4<&HVPTTɯ iOLUcR}Bgp+pJVGv7F"4b;J>E~cHb|h?^>nٛVit9c>^$9|&pPA`.mvXkxDvi0`J)NSyA'pn8“Dce ѳ`&Ud {|JT%P`{C0HY BMJm>nWa,OP64t@5J$pxj#[V(7Ibg!`#Q;u&7i̍52[DXs;&eӒl| ۋ'geNg^k+v"8fgn%ziKܼxhw#.oK% ^Y$*d-UK.mJH27WqwbxjV%T H٫2-g ~kh $M4 y%kpT H$n50vypL Vte2Rxzn3tP6 ٕQe#1""No1-bQ,+뻵6+mSF&0zFJ& RFWAA5n{R<܈ĝ3)O-5j|x`8/\z٨N@p:..!/g>P҈(H@6pNPtوÍV𚾥# 42OhYiźűe~04ZPu;yAeQs˴͚A$qI>̱;4+֣ݾl`A'bBrT".@ҙ*4H;o/֫ o-FD=台)(q/Xn"!nk}t~h;hKp,n<=T(r .fSai̼|2}=σg""$Ny_T?{O[KQQ]]ن̆d ?pc"e-c^-p Nk%=ԡ̖>Vq0Lnlld W;7Y t_ x KS^Fe\`^0.5\D]Sb}}W eO^ hkZ듕oV&?ʡb-F8T,Fޚ9q)x9)Xp<%nMML;6DY]X|j'֛+P y|r!.\8TyV~*j)Q^8N=PHzn4џ:r^7Tf~͉3Ssj3Jĩ1Fo'TTs6Ź{i/]y85q?KdP|bjI(D*٦d9Y29_ak1O&ZmQҵBff Ņ7n02jFR,3d` j')9a =n1uW A͂t7tMA䙚0~cS4h#ZVq2K\&|`ӿg~8͇3Gpns ]Eм1baPK]]rDm]lY=ܽݷwW2 CZ⯕u5mXR8fdҏE9iV|5J)ˆBis^ G8{g(?2_ =xNoH>h|"cn,4+!uZX3,-YyҰl2}+*}ݭbj䧤T6dRT(m^1EVkr.=;בA5t:[Eţ";W s,~%bq8>ڻ94।{40(r ^ "c5?Æ$0O,YBeZܿZgڗu]lܘU8x2\zl//}·xb5&_6376Hd#=y!K`mYQH"Q~9Dt%Sg HW4PWRS&(H,O\u+,N_^p %-Ay5BHy o“Кnt|,l9~#_\b7,5g$cE'_>uİWY^L߶[2aڔ %-ч|4aɈU  `v Ƃ`nFn86a~3.1)dqn~l|vgXPP5GCl?8:"MBeV!40qM (iB^Kʥ |2`uڿ*_J%~"T7%#%DOJ }U?4]܂f<ȵF{iTiob1W=E_|J%>Yu衎[+ x nK;19?ч#\8b1>7^+L١Wv[{ǻO8{G]h-L̤TU$ CָQW:npe7.SZ˥n76}ɍ ;%A7 cCxd8R☇l X̹Z4 t L=0x#J˴a3nw0~锈XPD& %j7{#A^7xEx%)[t}>]t}ľ)FjF.^efdǸFŅsi`1Ot[<5ksKX@j)tT_ˌ{1aLbZtu|ބwѩH} F ΦB1[sQ)Z(7p`p g8x/V<zGߐ'<@LMC奬 op^M1fxB&jp̂\0wyc˜leF-*:Q _Ӛ^8A"Zz5%Ȭ~>O/E"qW ^/J nϵ2}g@\t,WtGIzjdV+fng53]THtʻ G,*gf>''G60_t}?$Oj*sбPg)&e!$x;2Zf5 P8ɾ2qQ,xV }0u얯K_aDypr! Wx#vbfL9H .>n^? זؼL5bc; AlDUh2qv ذlG "wiTtRׇkr{ɳl-f%YVCCn]MbR$ +Gƍk ͲJݰrS|/ -,,";* za,s@OJp;xP6,balPFY[x?x?.H9We~?sjjYvl0&`ޗFvg̓ &ugW. DF! N7p:(dM(]?Ni3/zS/9a@9 稲:-,Z"{Ձ" #n>8ggƆb/h%ezo棷yh)喓Ԕ| Z@C$RKV}4qS2MtнTq*HF͈`ed13EUTO(c*E2H!aMM2=R&Pj=~Vɉ=Yg|/sœ!ÔyWmc[$ehb,jGqPGqЍ49Ⲍ42P AZQŝ'!wam!]j`>~3ەЎo߫JJCM7䗪X֜bg"g R+wv%b (•`^HNh$V`W-- #i\dѓ)'5aAEAsy ' ,W,p&!J>HI6?qU;6"[UNmGdag":\5Ǚz[ԍ+@SH i@ܚjk7b+ov(g@LXOrIDEp#JGy XߗYZ d-A38?L%*p6o1"C3lh?LBY&*'#h>+C1%C49#|!bj&҈7+Nz&7 x$a@'r$eA_o oW䓻ԍ_cj#ѥ/;Y\N<.a̡r?NMcH*şNm輵EɪNe/eS'ijtvP`I/FȦϴyM*-+ޔ0^=AMߧͱ)FLNFQl8toì\h˄i[%N)v;ZV &3}*~Nܚ ڸ$1})W`X-Y,Ae&/'eXUDF\Vq8}>ԭڸ{`,n?YwhS7-*2U]q2MHQԙ,e6NF|W&՞=ѩ+H4?9sur"sz]tSnI>OFuKoރ[;wNID;[{wy$ 6ktIs%7RlV(Ժp#^8Lc^k4{P<<xtW-Mn3>r۸Ӿ7$Cݟz}_[]#6zm*''nepばЬͧBu*,5օI"XTf` :,~{p4r:rGl,NܗڵFZ>Gyמg/dg igyəQNTUHk%_oUBb%op`̚qrj2rẼH)T>?jt@t(U&-cyLQx(^QH V=A V#S1")D'uDJl ŏ^KkBk4o؜ >b }7v8j5 K]c{ӞӮ7 ]1e!jѼ|XpXS#,[oZ7֤5I;mHnA+IH50K=0)-ҹɜIxyڨ*v6Ny%;y9褭FK|΂RY>Ԁyqzƌ<ۀX#bkuw<ݟxhua45I)ZL/`N"OZ5s.ci/@f1(BG5?@'&jM9p!H#ƥ=?8EChQù|9⫵p *\~ͣbߠ8p}qf d_4( ٩)H gEU| ZwFeUx bI[:Wzd'2 Ͼ7a aCvFy}=9~\=ua؁*UPU@f!#Y;ܒs (;a#ix^y`QO"7+<Ulhg|'<Ǜ`eEjRz&\k pA~eo)hXO6aHOF?+9.J F7Ð-nʑKoi.Ɓ76 DkfdUf".R%UqFU]]OCfF1ʌȉݧ+oYze?Y/^}.$dՌVwIdfwح;orZ5C膻Y Wh/&yyڞ ܽK&7Oм@aW[MJ$ NO#q-{w}u դqH@k숎lo"T5 wԏNӎ-#ܿK'#/j gf߿AӲ1 hdNY͈j;|6DΦ.-X6bdiNwܴA9MVwEne vqŏq kMaa1 kܞq>^=>rc"#~>p1^{d1~618/%NCQZx6t?VkX_hEqʐIre=Fb;I(cQ?͛uZMsyCв>蒔Źlˏ tjTTpPS?lAzF@;ax^2dr3n9ռ˪O rg~a?蠻7JzxN"}fqn?G\ܚ~jC)z1ls)"f0ɏn[~(}2ގmٔmؘI"VAd,ͩlR`~rp?u;G+631}󍧧B{t{&sh,ž* 5Q!=$zlqYWӳ3/kdEoXhf1| FF>?=1{ TIiF'C7Ne^Mχ́_9?.}@Obc==Y]px|YߝO]E̺A_YD靷ri= F0OiTÝL2.lQ&$e Ll+ؚ#oï"m_Z(,8ptrCX6f^V@\ˆf)`|&:K9 =ZlTvၵaqkcD|>DuHI1)څ""״AƿiH<ҽ-?]s: ҿ|۶DJ`Ѷ 7"JIܛɵ歘]'g\ -\(GIuM,=Τr#oI $g O) dlp-f'3y?RL("<XGL!-^*Ƥee.Ỽq5a >R٤"V)!$90m|dF4 TK$HnPås/:Ʊ?E>`6ijQ8/@Ana2İIڸeei%S }̯GlUzX5F'z1ȆOtZ.s͢?a/ɓnjPQCV`?*EʖNqt0,`*=Um;z rVzI͓XYKYN!`H=lGͦuM42!DFDw8 k&aH뇃oH5MY%ʊ`> I̥K98ǣaLPGPD yK]-+?A/, vb& z=~n ޴dҍvk<]wl.9zoE@s/L\:Lb@}&zFsx?r"jHb0JU,0/x!R',P=#Lab&u5Um>LXY wkvQ 6o">;D9g`HE5Gya3mQ%)WyODŽ H79Yh|J';x Ն3{nSoeg#F,Fd-$^&@1o2|XѦ**S쬋xbD}@tT&_G)u9#Mį+U6?G4K^\{/ِD ))oxby@1>(>ѷqfPk3U tXriZRq dW]Pٵs ^CUvydJ%-|&̟3aÀc2:l;`lW-D^}q9BD%^d̼PX,\洸re>h,h&(wJ\}rWagWɨ{@yQҽd[3:]Ԑ5=?;W ^'E>dP}Ks/ZcI]/zܯ/ #>@j]4JtD:gF4L^rH%)uq֠;㼆[#bkA<8 )2,oQguzmmH-"11W)NGL(;ΖA /ZWH:(M^0"Ex9&U dZi7G6̱32f!e@8H@l``e/^O+:?n뮋HD0hi54SKYMW*G-Ŭn60|Ǭér"`)Vj>櫇h)$pvO;;G8XPf.@Wϟx;L [AH]p¤,wO[Zřhwd뭵ش|*$~SrqgzXߑpV>&E?/Lڇ / pu KA  v1)A4,3qr{oAH%6j(8/:+6TcJ)kjg|.~ՉE"@-WB: x"eȗ"7&aFl\ĪVGѵͱ9a\Sf ~C3yS{{.& ̙*>;pTJԓ# ȓ͜ܖ+[qi0I.4}$Ԉq=jSޚXMgdTOO#Xr D.@zh0h6--64 PfFwx8vY:?2*2"ul#9$YE(?!kja T;]L,L;]9wNXDU>ix MWS\^u[`zcMFІr![Ս;ŠK()'qh<ЄeI|a ݠ]o߼tзtH䠡+EƞCW6kcZal l9oÃo\&8!U\PF6Н3FxVx7Ss^Z).VL'֘;9W gmNPjkY@I|'{xĜm0᫷€Y?|Ii_kuXVP(s .IYx6+6N+e:qP(1T&ĚF$kn~&9iʎmz 9>gp248Ǖ>姢xș֜63䤢\^iXd> <ǂNwX\3kR6w`>j*GX^_{>$o#LN?+(jh?D 2њ3=|N }"aAА~k!A(>G|cJ٬&o} ╌:ϷKvaw@Mn3%EZkeU=@2425,ʥ+i(m< Ý̯ P^xc )i}H5jGz ia.Ϡ4YrOޙ1pyp>'~ںL$N:P>Vj9ӌS91Ftq#_)P0!2?~q(' 0'hz|ѫw֛T* :Yя E^IOLLXtC}:ȼG\ƭC hU{/fT3j'm#54c84@?z}lXذtYz{ڽ.owGt$T%<߆#+(=ʀKwC斦>6NǾou*Œ.s7J셪h^  D.K|cuBndė `ş_ 7nvNn~.|<0+-8ͧXhDnwvM%lrud,~4Eioӭu!!v> Q;-p:7gJC*D$T52ʋC5$ zߍ?-Ɨ!b7Eo 4Vш06j#?mB V7p<evֵ4#-D^M;BܛHnoYGwHI_ ?Gנt[;lSXDQKhk,Qq g響OB6"?e߆eu3'd `? G~q6}#Hw[0TDʟ+c&:Q ~S\ʒnkkuJIXĿ:Kk!E,76wv0^.]\_ppdF*q֟S`{)G@\8ۜhO//|ry&܌!] dmd7SpC 4!䈖|()wXw~ /F~qDVزSˢI"TJQ~kQ]-lSj4Ci2yleމaÚ}J }|D?WFu6sbEnx?%q08sr-,G!6baMh[J+O O޼ޮa];l&p21|\2xd@)ݵE9;7Q41#"4 X9\A O- 75c8X7W CƳ݉,1}95]^Cu6YdZ3ְDbnj69[OK#wQV)܋սVfuoE GgmK_>I-IVTdvZ-t$`6J7d*Rgsx0 #Y2X==m5 6 #`xwH>ˠDgjZ'ZC Uف⓼]ܨ񮪳>cxٝ]8sVw|y4L&>if:EyfrjCbbkA_Ё{BjJAWƥ.MD>B`=e>+(x_ٯW}yM(4>n>A{E 9(_Wns3w]},ͿWo7m,+d˽W_U`̉I#onŞ?"R_y>>9wⷭ[$/K!C>_|#"U5mל߼ps(p#|do(QD9mvڞC\o2 8,'t so&PjW wtscr,aR)7`o˥=to"V؞oq;o_?}}7RɋNwǻO=M/Ri!}Wg8dw٫;i,9޽o7vD(5<`aȬ'g)G;VŬn1烙W"b)CR&ou,{g^Oc* Vh_'ZL 9I΀ 5gU|䩊K鬴9grZY1mgy[qapJoBD=Z? t32SJؘ4=E&N!²5GU DIϺ/C ߔqK^jrwV Q!ίML@d =ZH5 H DdЄgaZ5UMYo^!G)YW;GFu^/w$X5jk ^~r;*9P3DJl(>ʇUM-ޥxA>+wV*,M>FkJxv }^6od@Ǽ?:GvJIu. JY?BhY_DyߩQPBӝ[{as\9aeŷv&u/.ϦFJ SJUԮZ16qF~'K\3<ؾ< @| ڇXՇ]ۏ\V!Ka`L:cu]hwl%;~pl+.΅ᢗݾ{ۊkKſW+b׹^|MZY@ 2/D6 $1V SVr۩\ ( xkTʻqQ pGr⇡ \K" ?JRƉkl\➗GpSXsϋQ{ 7*0,~4٠05uisl%͠˦3xM;_&"kHfKDJ f-ެIR[(û&g=y݇_| OcOݺvоϒtWxA(y|f߻tĶ6tϗ;X{IyK]>ݧNmVJ/^X~ |i=ᙨψ^",P'L U+\|=UtTKs;m1:-M~G0398v5:0_ȯ7yqxy}:L1cvY Sxf٧Ȟpߢ/ƯN$!?[;>?ЄQ,/(%k=7mEO[_ĿG/\\!2.˥}]~J7z̫ŭ9A \3'qh> dhw̯Q,j>VNZ#2;#ږ\zG[sk4W1Vv8-!7Cm]裧Y ύw|6B`N}ESoW_{mƤ΋}uFNHez[nܾkag!>14yd.F=!ß^xy]tw@wV^1Qx : pLE`P]u`~5/B C.w^b7"0̵E6tQƫ҇?_DŽʝMFyeaXF_fx&Qnl\PPJu No2Pz@vÄP/:@{`t=}iܨ+ч1{5n@MP7f.\Ҧ \%06u"1>pwY :,ޤNXЛb!_"ȷBk$)=Ux_ -$&4kQ〒}Ĵ{č1-YQx#>hY{Cipz|No#aj;C.4#:!#W Fft?Zt."m][@֭{&48BL]խ`hK{V"o5RQuE9Ήln,nI[kaF&{n>prglVsbI=Awm!Y׷gB6}>RG>:IG }~fPU2Oƹ;h~; I;'n-RFCXmEy []M%6e-ndp-`<^{"J"BaQYߺǧM%4%Zqn5sNP |؈mB'Y,F3hX 5zuHt;uOIo EAqU}i (AàP"%hUZ5} L?r7SeQkQCcR܎IF01 HpE]}u5G?H)q\lW %CT%O&UMn"s nV&HB48kitjMNpqdGؕ1< 9 XFB5>pm\E="O̙dl_`lkhw:t'ii{;L`X7BV!ft)_bt?Ls&o3ڼ-Ϥ&i =n-,B 669I8Ԑxal ~uj;'M𺦙(蛾MUb7B3O. `c 4 `B`yԺ0 j ]O tNT ]O5"hRncy-]m8)Q(n:ioঃ~G%㸏 g5/(U} zVP-+;. eXʨ D7TjˏZ sbElkQz@Mf MLu(VlRZ|A:>͋嚦'%&FXGRV툇a h}l/!Njj!grB]rkR _aH@/kOzG,}⦪8o@]f}^P޻8b#{xfr='ZՕۭ1+Z8뢶&lv;}I/hA_Es56T$0 XOG} ?$ H8Eϒ $%zāwr;8ɦ' b!y:+f aWHB h$$weh̞f("F9j?MT"?zruK#9Ё<`rhXԑ;%][](~d*+u)uj,4q>է":d|ߠSٚI-XouYF!#+a1È/2hfPxlux3[cDȃ/sj uqbkCP 'nᶣbot!:FU9zL).C3)վX҃ fBM+ŗr\]!C Jx[ '҉~ƷV*Xf1R s*Ovp lӬ?U9^ Ej푳G9tg[JʪZ gἮe⭛SOUN {$6d9o5B4[T[g턓:;q(X1Uav|Iik۾ 1"mNu= x[A&:g9bj? =-R!V|aaJG'j8ej= 5#*wė`\><MCbrGz^pTWJ}L OpoKIZw7!f UPږx,+^4TqhWq #}KMhhybng:aO>zա1|d\Ӻ*n}ǬO\)0`L쾕6w$]3ӎc\'L>% R5v'6yd1rOySdL=Ⱥ.ѻ$ɵj?Y9Am4`uWh0HZ:ybܱwdZ'Y`:AS.P"HcNV!J 쇡D(Lުg LO h 1A}R`@jqt,7Xi1#OD!n6Dek<_, [X!3:^6iTO9_KcZV$L$@|ꅅ pճwC-Oe w?:~O,#ğߤr%'} I^ی`ܹm]Rbo>kB 4}$i򡽓 PV#% /ّi(C6J|M%bxDN֚Csú22F[B U:Esaa b`W?g }0şI' yd73o*u/C$d/Bp[i^wbX@. 6ݓK.A Q/AP/^ipQlf [e叹XI(* fA3l8WY ]j.9R.:M_P+%_m+`%8kJ MV:Yߐ]U;]8p$n9}_J`&NĢu?e2m Y+Wmޞ\P$$^':52zץk^~Y~|\^0`p+4-XGikfԅ2NDjahNZv;T4Fֵ"1y6]I=UvSvlɤ3{{ \T6:i}.+l֏S ɏk\!G,|3Y67yJy\JWfT!H'(L*Xə~0ƍbʋ"鞅J/:PA;@UY^>9s5Z @a!eK~%S0>tV2@-@X#|1/o;`5gmy:O1UB@D` ;0؞;wbP3a(}nB}*)Ո$tA^3+T'^}d"ҶH㓠܋4K?@J:$-u9rUor10b'1z!םG(j*[9mp hC?_VSuwTG@ɡz/w˛%rgh qh3B܎TPI" '0NgπdB Rޜ;|R}af^~I^OBRyJ!ayk/ vOMy/#\έKY6/3prO" eW+?8u׻$?/VF7JÂ}P|6c` &U%k. 8dQ*@=w (6bwESgR䇷/Ԁ!='&mv9n9} isgsk{Py"N`(IxmK!`lf ؋86-vKqDvKmdlrC A-%9W[q˽)ع]4+w'+4QK(tp*Z$]z'+KXrIFlKյ\ex聪 `1};E"g, bül^|ޱF&H7KVFQH *AE|&B%,,NHg0EzwT"#1 /jY= aZ1E-R[E8Ow&/$G_a)-}ΎHMգ?KOatV 6\ Nr )5`6N?X$1SH5y7mtf4]#T][ 㻂޽{̀kM:hG7B}Q/W.}R$, {nkC9]C.|RD5qN&GNÒAeȀ͓iZڭ(0!wK^/~MgE2}߃qF"{A]4=Zlh+pY'͇i68;FEQOj<|\d'W\[CYuHrzGAQ46)$_ԉ@ɡϛ9h3hv`E )VCI4P;aX]jϷU%٘\a+tCUA*Xl"4\v0[K!g(h=G!DCA~M)}&WRO%݀ZZrcisaEa!Zu[m,m/}ajH{]\c\3zPL`s.U.Eڅ;IzNNyCǛr R |,$a&9\!KőADB\^-LJ=3pV6:/KKi5CBfr?uˉ:B*ԵI,ᰚnPp>.5^7zs\iѸdCd͎>*(tBs(\kvřzWpSv*!q*P0ԛ 9| zZL7}(ZG~81ՑUe[R}lЖ>hcneb?ޅrSb{x.f5ySU2j,EF Y!d0|Z.p ķS2z䤭0k&ᇬnQ>;W-Q#嚵 {y"G.c̢_Q eIۊuCg7(`.>~ĤKC:"8#3}TuDU"T8UIHZT|X !|<`**!cy˱%41QN0XtLkR0ȡ89%I>bUkB,cU0<àsTˉ6J)$B˓=GHcNrO̳1`~-H̤( κĒNƑNaM3}xL` CLC4r~ H}4J' ?܍P G̭4GT;ɚwE{^oy٫w~u~ǯ=;~qr͋gOaZI)}\~,>O~x'K_<Ҧz~z<=:>|RQl峷/8GoG^X3x^<~Ի <ǣ/0G{f})1}cdX_L<>~Yt3^Koq݈^=Ō_7|w(+o㗏{ƭxZqXV2=IKeA߽=o<1f/E%6NwϰJo~.gң㧿w,񑭿=Je+BFQb6JoЌ(O&>@8 qåQ$LZH2"EXRˏE]u9U6?Ѽ&ܺZ,ah -@,7"9=Pjn.P5i+PrqܼntJ<݀+#Z69NBŐ`?rY3}Hh, ~9+u $A::ʈBF9k>ILlTn+RsKotf  [^,zaIKD)##XIKJU;7 #ttӡ8W*lB}ǖbW]5kC, zUYȳӀ M^}E>r;87Z" gmbA!ŭ E,E h[oU}:FNu iȆeS$~թqՌ@N*d>`8Hƾp^PCbB>i.iX?-<㽴$&q6`2lrwqqH i?2Ԕx,@;BY8sEA+ȌYoE B3> !lUck0NJ͂DS{0。˗v|st&ց2 V'%ݠ3 d]6:gI z?|&eP%q^g7GZæGxZd8HI,q׼1D{1ta-OC> / , ʌx~[׈OlCU(| XPOoU¡}+*,+4,buQA &lۣ\n*_@xjuUITmtxo=p-Kl 7*)x:Slc*N>`W 3)6|m{[;7]l!osfpI_=NѯQYRc7_KMV9#k`a,~XUu j_L(. n ^w>0 ADlC|R2y(oȩ>E "\=ec1ZQQZ0]) 5DU6OwE||qƖVN ]ذV m"nm]01C˝i6qo8TU)Q kKQ,`ZqrL 1y߭C*UpΕWZE$G)Jui(_SCPz8diȔW0֏e %AW1N?b|.TO&'H.̈́sSVQ?kT{Yp֯Rmi깆'*<3ap"ys.j0) =a٨ ejBE+<v e٧1o^qz+v P1L"QA(B$"N~K(d .Y o+~sյ1k 䉲8=)i< "ݥ52eD".B}!kDhCDtfտ $8Qh=[icXuJu^Du9[ƚ]bSxeUŴtnm7 O4jo=y{q??㗼 h`w{2vhP2\_ܓ[+]:+j"d靭*`{GcՔCcJ=rA(JxATnٛ]')$@F:.m=V.;;ߦc ъ,tyy;}E&.deS("ڒ]@\8z?.06mRA:t&#5tJS1P)wl"kM8-6 iR6SRwETk9oE,r MY8KJ,E샬7> T P #(EL\_kTd/A.27V.{P]Ol, ?0|RXx2q)w V#uN--) 7~43v4;B0_ՙ)W'[LJNDJr5$SVdnS;l1YI(C\'`2: kPa;W"&f`FѭiIidc/<e9*ËU2F[yF&TUT( V^By s[=QtQm@Fdpѡ)Izݷ9~*_z]FEP1%|+9p̢S)0؉\rGA)OCa'byaGH޿)z^- 2MVWfd,F[()]0}Z2)Y.d<"G;g(8ABo{aqc'X.YZ.Et~9 0wc>gLBgmgW遼fQMU .r5L\ 7K\%][rfl/-6 9oY8N *e)9)x`Yϩu7?˙@yb2B>}u(;yax%`n&+ 8ɛ曑!$l(gN7\0xBXEx^2? `bFSԹ,\ܖ ~j"?J` _qzKè[l75&9UVDҹN*/["2׫ :z))D/Yz`n0Bz'9P> & VA[ca"1;vvӊ b~<F$dՠ}Q3{IնYX|l&f1&#E`فFYd/]!2KAViiua]r%(vf>c zklX*3`4*)->VݒjƿIiJ/(ѺύwVC}}G+,ULr0uQqNGip{4!/b6Yo:hOm`ZT߬KKC XT{W!a87baK"bǂojR{dFD@mUȯ5`:hK$C"x ܴPC@mJ!sXxU&+zhH =پh'lÉJ~_ówΆ̼F]j0)96;Ohϔf-=) tv @@;! j'3wad,.7=s!hL/zJI)'a4wj \ļt pXN5(,d Jy14Y].F~U5rMF=<ZTadrG__lqcpkDOCؽ^U/ :w EBl'i P,8Pah܇>pŮZ:ÎDzž%6t~$[AofDٜG^l8a8{?\:PZ\ K Y5+S cv? ]2SBNgr6CI.i@wE"=e;EpSS/*eF4 [ 3/FEcB*467>@qFUr$'W4?qAK1- 4Yzv%I]1N/kl" w #K( aЄ>>><:r_;8+ a?tfXGRo}!rz i2}eS 4שǡƔP5GNŧx @tPWfѭdM焴 &0\J|858( .iуkIrtX@2Wm|ar5ί׭gfd.iWM9ߥ,H†)O0!hLb?::f]Yl肒F] /؜._<B_ˣVֶsA#Uw<)9w_72pu$@8K;W^3D6/rnФo,Gޱ Ft?2'4RE/h1]k~p޶Z;AjTfTȊk+e"UAftX+5_MKy~?%'QߦʶDCNoʷ>/B?pvs m2a+ &4J x؜5#qPT3S t4DAl?MѾR .<O yEd۷6~h[SϩiSs5ga(5zQ5P9л+lv|RfWm {&jN)Z"xsTdH&.s1j`lfwԠ!yOjG"L6j\(.6DֹVnZT1{-)qO7p2܈3q8/X8 FqI8O5?fyJylE=Wq-g<>G`iʣ$E& eU:hY`~:M<`bbQW(sg%YÞXRA *ffa_z-5fLan q5 |0i(I_BVzHLgIb1ޥ;A ̓9&`۪&5x(hEx_:elz2GŹǜ 5P{Mq.D}GaV_v Cj&td\:oFFmw(,݁X֭]KF tD[QV@-KYEv*PF@`Y3垸a@3'!dձsh {rhwuJkrpL W K+{31mSYœ[d0R1$g|T؄Mziw^ئWk0'cx_ zqOcs u<+yRcM;]F6饣$8es_υr!Q0gGͲ`3(Yș:YZ7$4n0 0.it%kϞK/Df9t p PAREmsCRI+=Խ SaB1;g(P4!/͡ф(T (X*Z㮕`kسf1JtӜƒ9¥2 COfA:SfQ_3EQ2vyͨGm.7`(mO 7b $J#=VaZ;~?Մ5Ɩz\SbSA&k0MfT[_ yvރ QϺ1] ֑åv)&>` @E{[9a-;sTqDm.L4YSR펕*&1lj"Ҭh,ڮO)!&\&EJ0?u1(|9/xV>D^WZLF _Pm-XtIe|ShRJ8@hVv{)ڝ%&1`gŠCUmUZ046?_UkPt ld|ΤecV&"fHTWaA6fGBzqP 62t;{Zw[<7·2c8[AƆȄKz&&6i`1{]tuǀy\F'5@ 5U#~FlxlXg37oIeohe-HߓF%dܢe9, Պ:HHbⲹ0M_aЙD[c0xRg;_FW- |*& g^o|7#TSJ 2 EIm|~OE@ X# |0 ԏXq|ٸZCrB j}UMT \pw6Kj0iGD!=qFEh9LCt{%'߄>zԻF @ܔ d:ue&c`X'*8˗I?Ά"=C(ڬri֎Ax׼P}m#(  53B0˲]8+mqoD ;??BV0x'Ժ9 S_.F4=Rgw=tdDwD_UdNlUfuwj=9q"LEĉs2cB,!D#AZ_ hHp #DFfFVFvWF9~ԀsI0evdhI>ĩ66:c#8dħ M_Z(с+y,8q&*zɲ_\X\DXOaJ}MW%c Db҄v>%C +KGU",o\3]XJf#Uh*owXu!t/w1~CTmd0idx;V YBhc27 ^+Jˤ̐gȎQ;ԢHuV gpYo#!xVl|L- R~Dgt#mk9Q F>Ʒf2m~ V2GՆw+a ~vO\XBJ *^X= u Bƣńϩ8a[X9B <Z 5k(_)0 枡-k:wD%a 9SV0$T"3Tok r]5݁X0ucAuQxH#σr=)D:>GsHEn[Q=L0ſΒ>=Npw8`Mď KTX.IV<ى($YpFxT(KPnYVXV񐳎nbՔaB Q(ze\EX(YĐ<~Íe{;f#fg.O"y2=\-bZg,=6{Fe#F:Ջ㐤6,ҹ6vH "`I<}U}'_pXcC 1\y}8R- %H 0, eLЧK/~y롩CW, AgRF#ҧG[nZm68\2fI6`V3-"\ PXyr~9.oL@Hr& p!Xt9Nq<=*`P,y%Ua>gv|M-Y,R=ŐIO]Co*y|N_C|n AW~4@(GiftwKh5oX6A#y @<̩51rE%nUcՠu^A:E7^XqLy -- V+ՏñLfݮd &A"* > NH ZdƙL5 Ubͬy``jPa"ܤi4@M9ri$䴵Id]q(5wGQk .ieV&,~V\vcQ{_,$h(IKl<^0 G< c{;D&5Q1)MI6WhhmaLPdFZc')$&AQ؆xO#YA_؃Oc%-W:6qq5:TDٕ0[hfrrVk:[4xU[]sVy0۹^WVZI8ƚqu9 INd_uÀFFD55U@DV.r5HΊ!)=X>)Z=?bfNm=?f=V& "?͘p/u9)}26 H/K -G BÉfrbGg"X]9NsCLNp~F88jȻEUdx:A\?K8zOH7Nʾ҇>.Dw| G5 f1>u:'JSY4)^ iQIG|{$z0x]~$WC g?GU 47?ק~y~߰b1/JŠ•h4Xƫ:biL/4DT mPl&K3<̰-դH)` (o)#D&A6q1$p:rs$* _8&EBNU{_ix7ټq=@Bs(|/tey8=:.* pv(cem-2IJblyPb| ~CT&qE< imbbq -DA{F_XzQ'3C`C<\FeqzsS"99H 8's&}-kn:4,DGOrߑ)=¶(59.±^ytjTDC+1.(|7dn`-n6d)fYMaZa`ntK\aE*WFb| e'%Jg09B$d~ȱ0ƌ6ɽCWl}PXf򃆙vJs :4IP!bk-[ 0NqO+mks%[ab"2^έY6HwaH5g4XIig#aAX1wUDHƧEȾIUv<r|^Y yՈbE DsC40nۅZ2#J|ÝjN>il@nkrM.,P7 fkvikYok_u3߽QY @WQOKCh b_x+ w͕o{wo747ݰ9ŃlZ?|e#| WV^9=!_ T7~]>v`?k_?IVF:OWyz)V>;͕w sc&INPu:N8^ k Z'[olLu'쨅⻻Vn|G?IgM! { Ӟj'TuӺےqW#<ީ!PMQC-~{+u'^5+{Ok?Yݹ-<]yQ]/_VN[|i|㽃ovVD$cwRŅC@$rO7mn(ۧ_{ LGm11 æ0偄`e#[|SWjag~.CHj0 >Ss'E|df]MG\ӳ4iY"r.v{ ҆aHژӽte;);|!8Q-<~yaFQr?e'nN鿾RNʄ|~gNV&}+خf!u#*ܮrF1NoZDpd<8n>sL i؍O.n%0jAᬲ]#(@aB8ҧzn"_jNI4ĀXF>#9Hr, $]ߦ7O_yd47J Jܦ.G׮N;Żnz?o}g!50:tVD$D =$1uSv%\ m̧n]y(rGp0MKʵLh"v,FB6o\_ D/]q脞|>Mm~i <<{k?Ƴ/HU|zĵ3n[24 rQngR F@CCۆ.R-Ngr'w^@g~kcG v2z$I1{3:M*''%ЇG+o24?_ؙx84o{Tl :zQԞNA 86.$8[=ߖ>ocZy#ˈup oBߜYiqNņ7hs ۃD!&RR>_W7cnD+%[?Zy?NkN]R+=`0`5]uxX> Y7NƳb}:dkE(ɝ|T ^"RN9<^:ku+=!_KWZϤp:mtY_Mps\ o^׾y槤QG`N|Rv>8DRa)5u5'p,6KV!kEw#wǟ"LڢP$ d Hg3R1; gW5Y>n(hDɓ F抰;;_y9>$ bAhT %3r|? Ä[ ӳU|_p~柎f]źe{hO_y'{{g.9 Vߐ&UgSKN@i?/(YJ- \^qV:p{wotH~?>/\Hi̧[z(NgaN %R6xXW[G&Sx皭BJ&85g7o[)6uVn9uoyvuk\8];N`$/^8Uֆ7L}{_ Fk0A'Sd:iy۽Z'K5#pe-CLgn9fh_@0ax4GE @/q3lL UFoK! yԄxO3 pb,Eyÿf5Wm8:%FTrq,t_ixo.:ؼu/?!S?7C.]GךP4閸~-@Xpr  xga֎$foՠ9u^|4)ų!T捕5AEv)ECZ"lI)@<#sS͙ 1B=dy+S[6\]СD"B80&DⓧrN7׳هYp5?y g?6)FHU:_F@|,\eft̎xLdRUӂ?e"|CWQƮ +hsY*q..[ETY 3%iÅ1mĆEB,Gfn,N3'fPSNϕEHKx7t`71KN_(v!qHbWH;?7ٵ[g__k\{eVҟqo~[f4Po#)5Y@w߼/ӕ_| lDQ +<2g{NPg= r=O͞)<ܴ%$}&#8dIe&L䀘3)Q6H:$? #PXO3vX.缾G$o=u++`Tbl- -[|3;rL|"hٛɋݳCP~R <03akl'C/"/W*13hZޮG9_r8 gs1A1:qnXB,ppX,+w47#%Cfy?_S|1ڜn܈$dز*@ٟNNaYqLuF$o?4CX ~A:#NdsΆ{6C/)a!tH S7ԛ'X2YHMXS:XRf4-O J-tI Sq8s FZ?{u\m3qGė$z+:{ɰx44~Hْ"e_B^vYeNokB?;= Krou#lS5{Ӳ|g5.ܫN ssǫOO?8/C+W~ÏOP&^?ef[ *VD;[+o1{h5v v?zT2l6[l#*8`lsӡXRﺷ,pk-dM{jNsR"}.UHz:(n47oIIگNhh֔KA4Bbm֎䏿%\vvwo?Tfu:6[ͭx ?< hg?8wrGEE?嫏* MsS|7^ǯůBC;E_?+}Z_?_~YPV[`&*eLo+Sgj+?y#O|#ڟNi7z4Y y|zC&q?9 Ԕ)bE??U~)Y~ J^,הvfx]$cbax.b5yczb'ȉ~VOT4LǏ̟5\6OK%*柿v8iKRtEn^t.r% A(γ᪬7SI nR΁aR/ZZ^6_GPGr(0vА/i8)/*(]o }5vcoUyI:{woolp"(J~J l tc;շ'㺡6÷u[[K Jp2=`.WEbcԞ- 0+-p~spqBN\|s/OX7gIW7@Gjj `ŅHkk2⇺Yq1gv@1Puڍ7'H lW 5lU..]H 反(텗6,f_s]<$߈Qo Z}`&;n'0tg?%-tN^^wvEv?U5F W-{j [M j8[W|pV(kt,KW nls+6o݉7\\0M;-Z+P")Y$xԚ՛ Ӿzї)rvƻB|9JșdgiƌeƖf%辉|e ]0_YMxH.')hL N`h&  E+ĄmPBl9^1fɲ}zf!fރRE!ܐm.F-XVjpf AO%8<ɺ$7-M h~^ps*q* Yߗ[;'־-/8׻C(MbrxFb6FKjw-FYVUS''7[TyuY^t3JrpLJk S]9Ki=B(@G48-Hr4lQD bREKPMxu+Q1#J#=5/,h!d~B: FLoc׼7-:n,|'Aޒ\^Ɖ*Plu)A0\˦d-@3ϑZ2Gˋk~`Gu$<~IR8 ,pЦo @:!6 +r2 Ɉu IeMQbwV#^+튭]ku*jګ?m/%ԡ`mxot(/XP_{O#1lN:4LN9” pI3nIey-z^ͥ<~>/ŭvM][=m>Rvi 5#[%I"IQT:tǵ;HmX` cY$\t 3ңQiFBtiJE?03P=IwÐ 5+֋p:ꘆV$FоUQT?x Օ $WlòX@dS̎{Hh.iJe-Td̔j<Kl!H=aξgyTC.Qx771%xϽ9zu#+ʀXT"+3֛JF/Kk/o0pCRVnh${Մ FǶ#CS ($޷^ jE!_܎,Ksjt_$RuTn0R!l#vֺ 5.J=,>Tku_HvE xż@=@4!Ay%&rL˩)¤41SzOQ%ԃ+8,_r_*mwTRC"X@Ӡ($)^ )^HhګBe<r9*IOՃWh_Ly]EO1ȩ(h޾qcJ/ :}[ #5(ބDp*otAekWקdI4H4H&e`ur_>?/LXzZ̐瘑l s`R] QX {)\OGO퀗[-<ʨneO7gzqiJ9Gh|.MaʨiR]ɺ31Tu)qC)FEl!yov5JLpu.ڛ:t2Põ`hЋIǚ!!n,8*Ǐ@ԙ*8UT~I@Ǭ)i׺So HIœY}B ~$k+rGC bF/7ߔ_޺9x\:8K&szZ[FcW玵%*Yy~iLcj`G}RrK3(x"7vxù۠æD3?j+"`p/p1M}WjDT*<1| cCmH[Uv1OAc?:*]ǿ "i9Xk"P/XQˉ<#r pHLy$WmJy=̅ĜP"a MY#PJd?0F|@hr5~X1vT8zh-z !]aV@Zbi΅ ':'uoS~=:*aTr;%G.~qÓhDӌY5"mKQ u˓^GHhm@j]Z )mB'6r1X'apeq:lHKN*Hf謣kCJ#k_\8^2F(/i[^"yuTf, 0a>M)~i^upؚɅO–V1LX rL!D~[CJPk/l519Q'5L)#Dy`еɢ >}0k\tUg['x_ r4$/Ihڱ:e=u7giDqA2$59BfS'| o3,ao?TVnwabOz?LFZ/f8lA K%HV#tw' nX^  ,2%k磔_Bɬ:e(UYrb:Qǎ^ta-4s9lE֣{nIǏj+̕cD6I]17c6\Lz\'G( qH"n+ɛOKWX;Q9'L2:YIh#CN7}2 %")j;L=Li pRX`<,ļlIh*K d~Y, =r!U~֊ WY<@.vL{zi?H4axdA\ԅ~&x#PFs7DPcLY`F2eJmx{l0}ֻƂ՗Dp,4InՊ*;&3= ʆ3)<*(QS' #d"_nmћ4li2 1-/%{գ~~+_F"ƃ>QNfeަ8o_rfTE+`QG;7z"_>`?|+Yr,Yo>?\ ^=s,_BywiʆE48^6V`F KP#e/g 1a'o`NXԥot[N򀣧%+[΁|h(bkHX=Y 69gY|Ḧ́OMpA鱶l=eVQ:-,G<7麬 A[f~4";O vic Kڂ.^ 8x#R /Ms`3д ۄw.}q@tJ3H_ΘeMŰ0b+4YPa3J-M7p+DyY9enJrʙhLnb%Ԝ|t}ayn%'#Rnz&AĿZIDZl 9V*_L0kh6H+ha N1Fr+D-_-r< M##]#̧_ܟh+ @/_>!&o#5ϣ }}JY#UZ|4k4B,bҪY GGɯkg$5̈Qp2M/бA'x KEZV1Y`YD+ v3X.Z6725W[-aQ"  ;ox:8"7lP\p˫ aS\zײ77/1Z|b(44/Xd\ imzСtUj7Bs /V&EJPnu8w3푬#Vtu7;ֿ}T WNq~[Ky~Ku~ח*`n,UQE@8G8Z1}|Ċ_jq$'ҳU[8ಡxWGR[Rz@kfK*Y`Ъ^\-{tHX M\z~`k=ͦn9 ( fh2tq8k{V~tiIz0sQby?ҷIxi#-9Y;MQ+MfQ<7u}KN4F(D4׳raAt8$+iFWh8D pgڅPj 22İig,CEJdNl줬$Iu@$Z E+]p7 `p2_Aۨk|sB)SJ<CQ EUTBTl̟7eΚx^#Gr8/KmI#ULw~#1?>,Sr%wI=bnV=:!g`jxlpEۢwO~<1N>sc5v@e:Dc"-K(T(>kn~Nr{IǛsIʚm7 Rys~P$W^x ?~M[Ѐ,J$[ X?I'9 DFDZ$9—p`_`;!kfX"d X]6ئ@b'.u\rcc&<IH+ @#% *bن8i3VH~HC/G,I0X8d"Ovc%_+r4~F)c&C=kZg)". <ͷaګNPF^&3W6[?IvB(BEpB$)'тCzH7w KLێ{k׵S]]㳐x֤AC Yh] E].tg14#\ȳsTt(I T>nZ==<ɠ[8e,0WJq|I+PGG஧BQ1->h=sr6#}QѴ?#ﯲ+1"ٚ}H52[t)d@txS @ݐy;IsyV)~fhcwdP>.&<8:>A2oBqDm"1yZynٗe@C#Y)yMYёf:ϲIЩ!EfF|W r{7H4 ܝLS$Ί$MK@L5<7@v1t-xel:n\Y=F}2#qe ZaZo|-n#*~(\tF I)owh,Vl}yEV-Fɉ]$-=$*Pl)X,xMYf#)!if 7 f{p{e٬B`lNq;eUs+aSstƤ872Pn{섄3\dl]yx7J^GrPЋ7ˀ1SxKvC}*IgS KK/<օq<+ Te/NGә{q *&F|ŸK"; >xt0X|Jq}p^5 y)I6'= ZWAr{C,]:=Czf' YhGFEe҅ - sW+XqZw2|͂-%kkeimج8lV?&rq2*B Z)q C*f<}|AWY̆+|})ɒ8Kt5ui|lg %(_z8QC*wKr,NR@;  Sqv}1\>wV,K8ޏx Iiz{,8?<\QhуI?[!QTΐqd S,i?A6tȥF(5m*a7"0 CG 8J@d %͛.xjřcl"ecs⻽XJI~Np!aqd/| V.r=EF/C+1<}66%yuX?hO]Jm6bVaY.qutu9WldBZH`6Kh S4Sgvv>wNf_}yɇ>jDN;`%`Fi1U992͖!~J(:vSX*5̌uJt9FUp#d ٣:t#?'轋" xv PhP@nL&7QjC3aokG#Yitz࣭< ;, /:հ* F?3l J2|uXh:ʾd% tDfBC| DZp- )R7 $(0XmopL," u1ﲌvTc iq4MB:V[;[H\Zc퇣X3>[Ԗ;<Ǐ},./=$?7*.݃Jǰ﹥cnhyV_/zqV4ZqTKUrpRͱjdrW9`^|S VJ<- V[_i{$Łf#(cN%=bnZ[s՗#댴K{zq+󴉖Ĕ47_Vit{+ʬa_$m_p f\SjTL:s [I(!*L=`șvZkrUGl2Jh+s%sXk.Km.QjC[SCOxΚLD2&D7ӽAphnȖEۥiHp$Tmc m p^{g震9!pw&Cr/7Oۓz za4lDwc y=UZ>w5:CoMaˆhzsGC)y?%/2Es_g]/ O>$*47(~f9{Gg%47CpkF <^ TlK0X gQtg7G`piG%9܂!4EYdp F>UvB)]?'^)Tm2ķn7CUeYa_$m? 7sOdt aH!]A <(t WvJӤY)HyT8U;Tc홬KbE-PM+є[$yZ@A~ NtfN$"zYmw{6!|uqѽ>G[ZdtI>]&ɡ4iXQaS1c(8*UHM`Ђn`)-1$a[LuiZ-HS3V@(b0({P(j\ll |ѽoʠŽ,g̸{f\b1`;_L',t&R,zT)7Q.w٨@=֝̍>i9>Ss}h{}kCѵCZV$ &+ :g9WMPo[69;b6q,ex%IK~|Lp&ZYdO! :MI((Lkjr2F'Ȯ=Vzt `Հ#Nb "Zj/2">Ѣ84.C` 9+HE>2ڪX3=ZC cIG=JcZ/'y0|I9+)^4;@|xxORiS?HКM00/IiŬOg j3ᄼYB 5Iec cAuC5X\9C vuް+OVtlq1Ԃ]׊IҵaYi`qt$`am+R1`l Odty9T4m}6$9~0O;cE=*XҙK,w0E"89OEE Kа@uIˎo7JAS H=ƶ /#{59D4аbUink%!/+U@Po .݀N.;Dok$rokhf UATV?!LK@8. EG^Y,W\IgZiz[UR:I>ʧEtwqEh!z?t7aumOW)4NJB"JCF0m+a89{t֬l ɁQY+w^9i\4L2$'Ѕ;w?|у?葸j˱h-,} M?ae+:p$s 찠<{MA#q :d`]#*1c"=KɕM[?"MsXb^{"r3$|FNLrl[NJ^IHFfq)*XG>Լ 0>c}Xb%b<.&WW+%@Wo.9bpx)M-pQ\N9o]/~5p-dVy?966u.ݶKC<7.vq;Kgf]dœ&X?`.`k}/N=&ܾ=]Z/}WDSuw]*FڳI:H٭5#He+@E|}~r}V+ݝI4ZUsxjh{ }H6Wa+ts6K BBEOS@FmFXהcJ`RHŽfԆF*F_kKWgu/z:i aLY9 p=l`.6pu0TV䛳i˸"9~J\#fdpX`4& CN>|/oάH!7ጹSCJxN6pN9I zT h \5%o tq[\2mLJdjcyq ʌ솆LjjXv S Јfq І*A.I(a˔A#MAZ<7PJkk`5ۦ]謳u/Ij$ȆsO|'8U,c]ے8͎J&P<oC.BN7zV*\'X&&w[Fl*t H0a y ;~"Sh=r/G=4q}3sf'kqmscغ^3 D;Zf+Cm6^3f4΄!$WttKZ^e0J3'B/ |\Di^cnH^Ex1kW+`|Dک~_,Jj m ݲZ8ADF _.0u)@^|C:Cewbu`E;/b nmrԎP%Z]K {R'rf~<JWr4EWtGM!::y\$!lrT-"H;=)p2["01n|Az3R_uO)OL"ŔYi!9sh lpw U.OmmȌYRĵFvW9_}6;,QyU<-S0$nte#•C#vkG' 2Zݍt-$cDvoNpM0Rʠ(^asvg69Zs6% RF @g;7K"Bg@Xsq!-hYu[\שjcJ ] -1t4RmIf4R:R@qP_B%T/>k3=6jh2AfϯOF!"IvV=1^rLU,gCTsA/#!-},?R|k^  WvMjⅠ.Lj2`KT9Gn(fm2[igϱ?!.K#%FgZ%3[yb}NpQzt8%loVP%5 W7AHXsp]RPwS]Ao.H(%tT? o<: ~6T7J 3i 4L,_ʣq}5E갌yٞ*p%H J@=Fze b+^3_`hNZ{47~Ri dYC?i |vL4+F20m/ { G=YP2?y "6azEf`!tnF v"n6VYubouZߥw^=xwb?js}ÃS2Cj&;ơHMHt;b=. 6GDߘHFH+CZcGf+)4C^n E: ;řahb42m|s` ~J|CЊXǐo/R ;z)G/.ZNEWzvIcUE7W'hɕzU \&Yڒ0><Yˊ;9xu#8(hI|+ٺjAŐ.ZBO;xgAE$gFb{W1mzv^;f?gȤ;ہ:ŏI+P=f7%ݜl(d:@pOVocA; mw~݅ 1GŁ^yӣ7I8~ވ+VӴ٣~Հqc<W?!gRMxNZonL(9 07Y =oT a9ֲ3;!~kF:IndEu,+nC:DfD蓶'_%G9NDZ1n $!H^ 5FаE?F:ԣ]0m/s6XAz~\wlmNŹ-9u1'ˢ[|W[nUU2ނMz |ҘY Yce? /xίCHV)wbE~kiWbxQczWg\VJJ eG1H{ߺE[~zy^ȐpSYA4aA7d_1";BBVN_=ݹqݬ6Ǧ0Ay J|)CGIe7y5AǏi ZK^R9sn߉o. 1~勹&[i{B 6h$75@t:Bdp#aTi3'fK{NjE_n2{,Mw@9'-&)QorN*έm35nT J( -1551p^]2ym=/3AM"-P#ġkS >Fܚa!XceK{(3k?ùO戟|Z'^M\Z'I`wB3Y2eh 0Vͯ&/*Ѳai=Dհ5)W@'k /ۯ"]^n7I8)CU[зO_>zQtuC򃽣|}ѳLLVWjpҦoF^><=:fOpH~R}[Ji蟛W7_o WOҾ]8S[H& ~ϼi}w'~lM|:pn`]GX42]0b(B#Т'BŜ9^QXi#r?뗬%Bd$[#k&t!iQ;k\:)Uo`+a? $7 Dt2Jznhsl}**_5_Sc~k{ qɇ:U5o*~L{`7d^ۻ:W|n/(K֤{.AhlO*VaG߁$7$WuqvC}SfTb%$ $7nqq#An (=l;{qd{m=χZs~T'z1ц eh/75Vy,ww#G-v4 x7ml@V.vQ'9 |ܼ}Փ^YДaa> l\=e=j|ÆZA1o .='7{'>}tB|,2X^/A.s],sʔjbhc?orkHR,nIp$ν'd r{N@Y]!]|HP2ssmH &]:Csq^rbi;?e.>LXBD} #r\ԍ`2:SNSi%kqpF U-mCLfCvO]~$GB7*2 .̘ ˹F!dД8Ϝ,<$7!B0L.S{7$(,SH|@Tڈ#3Z mKh'G !bk!]0ۧ0GAm860nU߰Vp,u ǒTdU"r(>dXe`n9a+ssc O՗j{4][˱BQYxVήyŬnHŽFiN>)+8E1]8n)`KfDx)"A+Bs9+GT곎YrW8W[tkMVC󺂒\Wł9BcϘ44nVt/75*?L64l*uŘ[}.Աia>0ZJ}}F\.n";ln0ԧ?Kd* Uε|I `AzCPD)mcfGw|qړnL>w^,IPl2aqwإ0{2#w?}{\eTGؚ 8eEAArinLXw ̸Yڨ+O}ÛObQB۝nEwQRÃ2YxEmNB=\'͙c${5FۋVڳO+G]IZ鞸ch.Ӌa?2gVNeEZәܠN0m┶[eD V~Ic2< ۆ*ꇧ<rSeh)F`7Sn&(ռ8@7dFR4蕳.ƭEX@na^qݹ9홓GT,\os.""ڊctrcbE\ѡ{?$2 nsWn$+ƷM%,TXPXp*f^gw$F:+/~E=Hm%U 6CL-W7I-/9/=CkG~It3^Nⷾ7ɟe_dKɉжUWr։YriO華wdY*\*ٓ6.܅==ވ<;+?=*_Y9w)tyzS^NQcuNl6o7>]qN .hˁ~1F^;<1Fxҥ@ $i+tAf$ta>ڿy+ ձ@N !dMU!J0/52rpm+S"*\ xYUF^Kq~{,-uFY" ,Qe.*cx{ܪ2rCřjF5I/s/4V4`A X@j? &aN["i u13>юsio5)l[q(c j@cɈBdLvvD'7~Aہ~Ǡf@1 m:gAz0]2JIOZq^DZb+4vQJ=۫+a(Rj3`}EtzhnhL,YR | ←Ta9gY$!N0-CZ`si$|RJky&i)IJb3DVN ӈBy A&W]ޑ֊5Ӻh_}c}"rmM> 0P$f/obxQx1A($ZBkv_w(?)WM:U+88K* g7j rqQßx!{ |˘Gc< Uu _I?!LAF8T8\>R*,(lbe1+Qb}x-o%Tg|)t:ިD-q'xӏYzSƊ:FjPйHQR%DWѴbHA%l/8Q,0UcIFkJZSv[?`3bWeoD$]<o֋yo W:FM& KN0h~A* V a"=?.LիWq Wr0ڇ67?Q4kN-߿mTlFxpPJj&'Om,pPnJǗRz8ʵ/fKbslRql$tW7=_ri9.2@ L`st\ebA;.S)Piȁo2 uZ\@ݖ] kY +W rU{+䦴Ʉ- ]-bKLd"ݪk+IՖ|&/+`Ӿ L,@A KG.`:bdBOYiLQ׆'i5nG5O,wb*i[hbh[3>j;uo5<;K-|Ū"BRօW+TZT0e-`kupgRE<(V4OU7/P5nr(Dz:c 4]RL 5cZ*qGW-SLjIoT`VNDI|Y@N%e^TO8O(2UrkUD 8݌?ץaA&cۥȭ׭"NQLK.)MW1uT"$ELH/r }̲[_T5ZwWw)Ok1_[2 ͊nB67,1tniPzu+B+b^^Ļ8X.+0&+o#,L vиTWo%$`p`N)Sa^wtT%iqLM#r}*wWQ*ABwU5?}`sor.H%CK]cgM(7&eYYD LOpl 4 {j?Bp>Yji}č,g\'EE`:i\<+XF)O̤XGfA*%固KNx.YtB b\4pUt!u~q.X9v)8)UUWh`jCC_]tIP!O\ *ڶRi: >b[cՀXH%"[Ԭ0/SsdkYb.:~qڻlNL7+Bb6˜,~Cq96r9g,Vdo۞> !*a7;.źJʬ~bH+Ȇ+N*Q+u"l  D#,(:Jr%~LQ5'dRF[ Z)Ss~r8p;2l):eo-EiOHL 1겺-]%Q\z`w?oR*>Οm7ҨЬ3u7m^"3W?+"7|?GN (GHb suk %R:3UzqM[ahY EI p#[JӬWB͈IGtVؤ/"HѶēp%&2e7J,E97|&F3YE Xgf@;\I'Z{Zn) 4_Z]JM 2M-)n-JQiy"6OoHr#s15V8T7Fj>ʰŘ~s?<}xr$4}Xxڂ8[!ox='֬Vp zHJR>$K>9b)y땏YgO x=|s}ǝSvʇQ|sOыUښ?('cH$)ofNr@L9@#;Bw9mHwuRFS|>Vh!(RU܅PkEzɊ]0)qpBEyJ4aq]R&(]Xψ^VeR?[8_ Hcm/{qdʺw'3؛lEdGH p,@ zV&) \삑vB? Ukp9iwL %V f`9yfq_RSaV N~;՚G4c'YϤMcbETafk8ţHq5S6 )r)=Ԉ"M/HlGG_<铣QMpS?i1iKXt,i`sFkqf-Ώs|$Llg8@:H(2brX?v{YuVYW,4˺mZa{59 2 s&NzKǯO$GqӥHV$/s 39'o8yA?5<:j{!oTnOsIa 4qTP"jzz'0wQ2^udH\'Y|TyiF>(-}m_wg:E BLldd,'Idb3VuUZF1R91zP`7u 3 w"(4#5%td琮$FHJӚy!7jK~r "#(Fb$Ʌ CK[ϸ Gz,hljFO@ "jC(*;Y͒нo:&)zT fHiFaXA5Ef asrӨ!& C5aɒptdr2K(p' r()$]١iS{tjF~ߊO.8Nj!+b g"Ti"Vbҁ*AƖijoJre" nh-bµc'803>8)(̿ Å<$mw8p8D/GuL2)L7_; ]PMg@o1:ڨ+i.1t6F4Zӿh(FF_r=ZcVZKԊl@L)w$E}5ѼdA En%8'mq#+gѶ(E8Co-(˧Q p>! . zqLhfˤ{}"'z{5 ┍vzɈ Iz2.TfPB0c.bMcH#dr!G C5ID]a>G߿a(cs0,>qnldv551oȈsk3b% P9@$K1Ǭ&Q pniǗ|&?jEԊ AtiﲷÑ*䍞"M,]pJJ-VEKl87AbtנL|g-28@N{|5?'F6;4|"PvNs?½o)}B!m7k4lx=N͛:VB0^mرcs QcX )jfNU|c l L,r8,n2'B$lH3s`1irq.a= ? b,$IԦp9"j1S'_0P1 wj`19&K\r~'7c/ŦFg.&*@@S&ji%̶퀵NyЙwD;*L_.}{ ŝhE`ҠL3GVNAWCek@5h:UDHΐfW$=H~" (]g}^bNDV^qz]x W& \C?8bF{6`.hcqNF(R5s@h6+/9=0LSha*Ԛ !-a^pFuI:<ӋAk+aoL N e{,ecXgrVV"n@d\SLz$Fq82wR 3#Z@HqQ\QV/'*GYD=B˙(LؓʿT*ۦUbV̀wR}% e8Poe=+甥h+'X ɀX(P:%9UX,7:H^`9QXƶA2B^5I 3EQ}NIjcϭ_\T0E3l PgecݒDN1KbE56<HA3F :+!h5(lH!2o.9٬ڑ ˆʕ[X܄ $ ˂ک }1>ZyCY1s5L$- c|}a}}P/G"7|βx& $[Ip^z+9 §܊dNiNj`&˙lj+X='ߧ9ӿ_Јv%}didx }-bY%vICvF0Tx_ÞHuvr<Iz^tS׃$.yb!DU9iRPm4͟N4 . -Y~vT3 TH:œ1 g܀!Q#UukYGBMb(nxVэfc@l*C@Ev;Mb6D`v-!2Y FP(lxi'[ cz֓<>7RT'H﬍KzijLƶ# _C՗.n KO2 VP =g_?:Ne8"B@҄Q,*8aսwEHXe2N]m$"SM¥Q9ZCKV h~6BDdKG*'8$_8["ʑ~G :mHS#@>td%Y U|OZ;l^NzB_e]mIYMww ^=uG 2\W{i~?^p6a/,eFEWa _ޤca4xL⚹{CGzlU#IMB ^7w7\<7@7W%nﬔb}\Sr1O`vVeftn&@bUm {ZEf3 VÜeLa( pU] "fI8$ZFLO+jİsDV"dҒU k5[b>If̆ɼ\Nf61#w鈛1˰[rT8ݓlE<$GZQ!Lo=( gz"Xp;|gf4ƨ?JӮ(2BRסt:bz *[q uv]pbPzo~ ҅d[5y׍":26)v?+vO&XUn`@"}K$6=椴 mޢLVLx5V ߇n_OHce=V]m5 EQ@QbTȑ )XbſxքCo'[ _vȹ)L\GzI]3L}%d 3bTa*Vʻ4vmu doX$T$6Z! ..~Fqd#&2A`JI&u؆3~JļI"ނ( ͺBľ] xFŪ+Nyc߷WoZLuS)gzz2s 0 74XgCqI^ɋh(t HLuxܜaNoiә+b$x+N+Ru q2)Ӷ %\j2,]tdԌaeiK9dBAt`r -4V&iqIyjlHFXÀTa?n$Qþe!? *yW, ~HޔY*<62Yܒ]y?2Kbeq̅'ұk}S\ErJLX`x[ db~Vg\aL0ī- o(ő}=mxvԠ4AŴ#` xEjt ֗8o2_MEUO "]c_Z% Z2ĀFH_!d7gf/+Q" R yjFTY EО϶` f}KfB0A== A~hL$A j0 y }W(!j%p ֆGec0.bZ!W`<k &Pv"kw9Xg Y(0WxP"1,3/C͔[?93.PɆVD$"&5bϢ;Ds~hl}iaǰ*k.s('(T"B4EJVcrJcX hANm ?+e`tR\'%hĿ5j餁炃#Hq6!`JWgnvVgW8?D9=mGpK;jkߴV~gM_E4o9LD,3M.up~Y9շ5nvq>bb;H?}L'5@҅vc}Yvk `UYNzyoӋo95vuvvz2;y~o;C4SacQvuoݢ 5ӹV2ukzƒާw ;owtw=$ φWE+zt֛7yͲ}H㣧t8ξo^Ry5\Wnu^q'{D_'G M{MEg?pПK}ԇ~Wr:/G}_&tIdnfjE bBLMkkn|V^ `Xg". D"Lu6*P;H`QT0kGoQ`sLӏV+"#8U|OFOC܂Zʑ㺓.j0{ o~r]m0UTA,ZyD.΃a3n`|=dUSB'j_FO*SFtX% ;E٨pE՘XY 2f5vÁ7rN en aZ`YR=R8,j)KvgpIg`w,ܡ.nR|Zxw OU[0"i[@kJ=%g5$c1s։T,8ٵS1vfʨTQI gY&+2:k7o:e\>)R+6'}j#+ne?Ʊ?v+,3}{4驣)OM"X6dc!Ypz\WXKSRxR K;° Ĭ!q.P#frK`yt"6㉃a(f IuB ?`9iҸ ͎Vcep͍sV\q"0[hÐ:j6lRD;tY>Vj!|*MdgP\6;B~;} <9>!uvn+zXR1:<览%GRh)ҮmSKRp' f0Pmpf˞Vޕ$Aös0V"^%baxںKAZdMZ5d*[oUKELC9Xrq=OŅP_\ݓ{ RLTm`~oI%_ĚL]ꩂ|঻Wb;nlʥVBF탣D-Z)( z҆ qPܺ``cWU!k=i2>]n.O.7 m`z]J'kz>,|B,a`jJS#&!D%Ћ{NJRPvvɐԱ pTA4-jB(ofQf wĕ*Hr'<:K`UN, vN˘IH;999Dwu[EE+'tP{^)Mjzu܁WG+;ANwgT 4.ȯSG @olHmb.֊ G$E)gO# 2NdGK'R=@.Y?Xhɍ_1u+#?>`XX_R@0iG: y >hMZks{u4)"wLIQtqKZmTTWǡAN/0\jjqyJ9>W3]I\kv_1Sr8:?Dc0a"p{}DHa!^bn4V/IJ+ags0I( [HC[bTޫ%3ebx$QOewHQŋtd,aߵ |~,1X;L#B$9Fiu6&O4mLc2ηTfp݇{Jo{:̜ 1bK=<鸞*V&gj-sEjmnCCwNT?cDcY_*М6ҕ a&6Ifd $)VCin~*"rjGb{66_)9L],)ZۋS, N"y"ݔ?ߐIMK:ui}Gnj>8%3]&.7-Ϩ<3~S wh܅\kGӻ)ׅ*|>,{vᐘ,Ch9ٻI92:x tfW:W:u4M)?ťܐE_8{o_~AulP1p$Õ<~>15QN1K*|XH˓M҈.jɰHLA/ Ho>GH ZW^k'K'^TE"]9DU:!mQJtǬg.'(jìsk #kDA8~*E%$`^J F?zxY‾Y3ӎMQyIzx^h͋h/EOCNj#^^HI-g{ Y-k1XmLg6ȣ/>-^Qڸ\OL. +2sn9Z`P^28Ŧ$i] ᕗ@s4_6Myw2ė}Vg˷54nƟ*{bIO=ԉ㔫CzxuJ0פT][TٶN% q_X-2tX(o 81LzV5ۑ )0)_ßT}[l;NS𰻆p ոQ@ҿJHF1Y[LaSa2k2AL+2Dp2w'…30I,``YI$7;qq !jsen"W}Ήǁ{'8'+ډ.c6$Fsشy*fGC,9.ۦddBalXx`H0wF5q֞=Wᆣ}y IX\isxwJ+^[sc@O[3X`NZG̮wBvmI@v=lnqΘBZvmk I\TmTŽ}'Ϻ( Nj.3Yv JלD]1۞qT4v.ڹf d2禗k[v}8L+ҡPZ2);B+wCx^;*bx{Er/1ihmڮ7av|:D0QL\L!v{=4 5Ӥ`\+$Z/T]h46 %[f*X5bٽJt01HHjbb.z>ny_eڞx}s&/%Jgv4Iq _B2BG/felr*-wLdj-&ܴ Uð7fh HC[iL qm2hv*Ȑ,NkN5-P &r88xJ|.íX8tV.DG~Tco! vw ͺɤWfwTGFj$M7eL`Lw j}?YO-B#ui_'Ag@d|Z,#I j&|K"z|z?hetoa6O?|ttg.P/YriDLx| ’΂䝉n'!<CG\d oozԃEs=HvxSh>aa ?gTX^ށ k^t|ZY/  .[^%`| L%⻣yG^-+̺7CܻC}q߅1 X۹&-d A`-28la憣"jRY\-R1[heYpX՝r/̙ճg f5FtҮ#<yܖ!pmj7@ u:S~I]Omvi|uրrW_DқBR5c>[*7+z}GoJZ#iIlFk?Z:0Y1Z:6p}7| jJl@b%J :cyj+a(8\ L*ZN6D A\~`;Ժ(PJ vA7cTF<{VNK ]NV78 aP\,v Â+chG o&rn81 9ͻ anKۋ\Vp쥓X(+!,grAqDdKW8?_落\Evˡ V5U7<+Y-*D48WƮ=cܥYfZn1^ V+ 7}VKvI5A_ ([ՈEt?i|";x}|0}ߛpwQ> w$?>7.L?g3 T3:T{yY=5%|4^qߪi;N(4vɽ°^Tx )DkAkڸEo@]]]([vt޸>n4B9ҥ:ɫyc`7+RՍae*#B8BR m\ܿX ~S)4[kT۸X%RHV͙( }<,M`j!#2) qp1vcp(Ht7(&d̹..Z7$nlT8Y㒋vm[5r93P2-p.zAe{н>  յՋ$C H:$R! 8צQh ?0oU@b*=ku.n=|!&G-0A2"3-J[Y_Z1/_҉/vXMU?Kfqoɽ ޖ.s\b)F1.$(6=N 3ӂQ}\ewz@+Na!;˥2CfQbohmr0JS+ rŬ"g.f̬O^P/e%YMG`#0!B"Q,Θ抍~~lAf%ot$&]Րp :o>qqi1`CŢd&T O5FzhK Y$,08Z3*S,[(p kq=Y-iVuY}.#/Eں}[.B&R%׌bu(!Hnad ,Dl)}C*RmƯ2cm/qD`ZAlpF=WU:$2'Ax=[e&x\}vN1 Gd)sGE#|j[PhvZ zXzVu/lm$ŪJV]C꿕A;O w@TH( ?ť R͌uTlT;=H'~3`,!Z5.LLdTe߯/0>TˁG~[wdVY}n`d$߲9E;g\ E[QHfz!O:]J(M1bSKy5#S z1TR{C-ѤE*(Z1U֜Qp1E")$DM'ݤd*y|" N5A)3'M&AB8Dx^K nKgsQH~iJsT|i >+TrD),| $c YJj$B=$ ^HJ PQ˕ܡ*fe*<+REⅧSbI@\b' L򴬐zq" ^7Mq Ϳ6'& KUD_/T@5>V`5P4-^ϗƋˊ/\\GsN$=TW5tVR%ZݖZplm]J;'hS54\%?Vlbݢ{lFod*W+n2Zp K`*e8Y#0r*D:9tG%M3l,II6,2:A\y&-~z3~G eo\jTȓӤs upE` 4w$c%T,,ɐtھ,J0.'f+DڵZ *)9(8g%`6 'ʚy(䍗 KkP, +Iq@U4z";Cvm-aJTwl `p54Xcҋ܁ }E׮C{܊ߦ k879U`5Sqbo!Ҁw4 xpPŮj>9#+uIFdl1PAukI-,DX7`mi+l*^w1B0#}Wnפ L$ wWX}[#bp|9%)  <"==yBv?fVZp@tɬ`#c^0efaT .ͩB[d_q;QtWh\L*e12S4jsdwRmh6S.63lRBN۵mn9$/дg+Gb]%&JbG1 'a$s ,W\" 1.8]L YɲqR,l12W8 uA :턇[IzŸ #qEJqLj%U]ƅ6rvf Rd8)ųC@zxZ>F78Fo aTՂ\v<a63FweaC:]1/i˨٢}bkn%q{6}Eg Yc !&,^Lw=TvKh0Kw9 ƌTHjd]~y> J͡*9 YgM[FA~Yw.X'^ 3]PE}HErHm9A$,`(Cu.Rbg95^鴔cE!%@Ikqr@Z] rk7]\= >j.ve4ĸT3jF`h &r2* 6Up&| _ft9X>vbEn\H8s~WDȐc}cXgZ0Pu1Kvgp™<0+HC:+֭ ̈́2L}X.㥘Ya5m"fhmZ "TE+NFe?ӅeHXTû\~քܰt$8.P=ޑJw :QvYp1UTR@9 #N ѳ FOQ4d*Sյ":QmO8\.z;B b95 XcGՓbKHG [tM*F*1 ='尝n9(&R:9A]ROn49͙Y.%q̴J2(:CHhlݓdC &HFMWT'yumgr~-iDlAv s͞7vFVmm;_lAƩx#zUx7?ĘUVQ,-NW]hO|le|m.'?є<%#BbVltT8o]TU`7}ڸ,)ܿٱ6 fzq/&awb~8s;:Z%RMF$7CogD)s|Fq3m!p5GҸ-.,!.׫˲߈:9gT #b~]Zqt{_C!3E<:*KFʷ{xK<*}郊NۍeF`Yɴ m}rVrB[SAJɪhYt Z$ZJM,x/\TnS;) 8˭9i?w"r >bK7K\˞j*ztpp_I Ho믩kX̓AYVto}e"v`ov,NRŇ|l_#X:׼ ]I!.A&H>&O*ssRcmA~49T,&18 aB@C =T Z깊ӉnUw]TX"du'pLO\5 ,fG+a`$}p!6^q Lq»r+(qWm$ tlZjҽU¦ɨX{aC@>O^wGġJ;8$!jb*嚖2sTW+Xez&4׳ckX{"?ծ-c Lj9|y+ڬXzN|dnsy2eEgZc]?.?۔sLѦ lC@,`hbL- %: O*du[j/'Z'0׊@ #Yy`EI"eU8%ؐO:u٩`t-`KL~6O;Bڱ29 iD~0FhP C8O%3j\sv:"m ċtZ#Pu/6HJO騚o8:Ko-; ,M2Pm+U͐=OTOB0@-(.)r+;W.AuSՏVqak"ХYn\CLt.n1 1^yI#ؐG*4iI )p$Bejܻ+l¸8%/f"LgD dmCvNJMDI1{e Ru{iq)2oiG֬)]:jNgì*jK^Q 2[W0,N_1KWv$ʜ4]eTW̊DFs%+Oyh9{C)%KJyך>v;B:c!Giƫ"3bHyY=,[Xϴ ڦ\:+kBi` AbEflL Dvyꃷ4:w_,RyZ%^&L5ʂRCX"d# 2sAl&MT0e^A% :<Lj?RWn0He{PD@kT#kj9ʀcTuԲi6csU P4NevLo>s^(A2Q〭׵(vs;ZV;U27LUk;(<+ZkOz~[Pe5 f?|x^e Nwv<lg!=jP{+ ,VqVsX2܀]dvAQtpwR}S3+ Msi„sXDկ֑fV)>zik>K_iЍ^q0ZBEI%c>S+-t,~ 7 j),+ds KE>e煓L!T:bՃ,P,͊s;q"RW+-S].۲7,F=?VTޗ9D LvFuYhzHocI֫sH)ikyNWA98вH.@D0)I XVm\ʪ8؅`em \p\V 5r⶜صI|ʡ*;P:/olbb qTlJ/k$+t(RG{H흆=9-_.)HN*-- =tuȸ *}s!F< I p#p6Rx54Yò^5`v>>:.B_*_ ؤuuo>L@BfA_02 i8cG?ѷPvg G.4毖4l9<?_ q0'e_UР}]pe}Z?_'i3:qOH<DŽ&?7{z_/pAC~]AjX Q*dX\wO?r= ('їzS֜9MpT Wlvuٺ1W|*pE?wQeY?OGIyNjѮy?/4X֎=0<.fv2{u9`ԛ+ x%!f+W@v4.J ItdgCuIs|`]Zf[M[Xa{}At{zغ6;p|POg[HEVgE\ss/\4b儍xw͛?3~԰$qPg_?c߾~7o&~ͻ/ś]zD1܀K{MZ5IIU$vS$%^#Rn#3#hffdGDʪ1໻0`{ͬ r <"#_j|1SbFs<>6p\`=4 J ZgEhNR\}n{gulŻWF=/5CM?0Q1Cd6r bA/c΂=#=8YxC ِњ/usAUZ&4FHA}AxX, lz/¶m6{:+V8>dVlnбv 3˅oG"Dp60쎜}a$9ŠIGrY\@yE7CSDy -s䡍 8} 8, AqXBa@azśD`Ջx߻vmFT0pmcH 9WR4B05J Z`gKV:nI| Ch,{)i-KoZI낎 ̎uơCT8db$0H u ٥wiv*SGdxkh#+IB~`X5⋩̄wj`쭛)y[>`'w&Ԓ*͕͊{zXmȽ:p`VY5Nڟt%+bҞ%t 0qhQ=Fs.ԙZL6*_.!(ε/M{F,ɽyvZ m ?bS</-sJC-ka+b~*MЍ3o00z^G##,ڶ܂o9\?=|fh$Ȝ_# h@R,qNFvfx`zyޅnVrQ0RF# /x0*ފ#[4rQE4џ A؂lWNյw L%y>&^80y萵S)vDJEGKiPUmX.qHɎ^fwD_x{L& q@ጜ/z-AX jOtBٰ <,!OgAn37ve[2,pX Xi Uؤ4䙭ÜSO H5|̆YsC -cFVН4Bf܌;?!ͲTi\vD*7(tk!i1^bRnOBa6hJE!6e7HKl e>˗ՌI+l3n$ :L:۵knQ_BWț!8 c^LʇݪN3L q%BI%!X ]Q̚1e!*;&fHW>m֢ v<"2ue%:!+騟Cd&e`$v裊ƺMyp|ëP;zq .ƃp& awivBKřQ]t1RZbNKRLǴ"@+✏k~j!;ua-v2>Iaa{Ҩd-ۇTJ.0'M7%Y(+3u.R4VWuӡf0GRΎ][*J-$.P;w DQ񆨭!1S\AAI4:( С̓^GT=iXP@qhTDUr@a9g8?2/B h=HH00 *KsGkh軿@\j(mY@=PhLpFRC.FaUD'e2;H τt6d<9Aj`WQxM2x (/޽b6jX{j>=ZU̝hq)cZ|+rߧycJjj04*΁T[b7 ^9ROEZ'j](2s5j ;̝eICLD;X gKJsdsx[N]v\D`@70AD)NI*dВ?ڇ@pNBdyUsg SgгnğYFq'^@hBm) aqf̆Gʞ5W)~{jƮG{V'oE*i5pNsI\N z&'uo9̂|~2,ìf:+1ŷY-`hVפ827_VPUNXֆQRV3j^m<ܙĎ̨p83.WpL^WAS:ڻ (KR T(+q55O]5^n_Z./^sֿtTSU5JIΔKmUow <iw9th1B4ܲ9㮻tB |vɞtXuk;I ԱT!Q"ws9a\=1g'_?GOwr%g6(]3T\|MbaM<廹ț`h$u5K1|AWnϫֶwb.6FwSJƹDcѦld=vjGd&P@Mj< ?|KΫ$K QB+%h3T(0U؛}G]{0x>Y7CCx)t)1ꌆ[@O'hR~tF-Aҩ.~LƘS.JLg !k(;u.ne<8㴱ҀMOئ_4lsb@:}FX+k#TCI{l}mj*:e7m{f=Ķ >:F4"ƜvWy{iM- 6yIkVk|SGjڹ2Vb7nBFgT4SUA$# ]]2&z袛j!Njd/#;Cl-Ya,4Q)Э6Œ Vdh-"M"m)oXuW=ys{v*N` )nyy[˳Dc87s,Nж<[4i@u|3%ȭ9j^vJ+1޺}- 6۟*r2B&w\x ʸ_+[ڜLdzOV7WC@d%~m0N%'eVӡj7\WHΎ["xgA1*tPg}BƞL[Є8GAӐ,=ۦ <6Qo]] 'R.P#h7K|ƪNdG9.2ҽ?KQ#`:1=,+YN5TI3ߔ.'R};\f&'zc5m .g_亚i &{-+ie4 qAe^9i|Y@fF )kR1hѵ:gL2 I\bI`w23Ҝ%cq (kڌ2͆2U!ɺJ/5bhjZ[ng>X.W^kh^QB ,"i;\EJ~2Vu {wR ^G*Wĥ\97ݝ QMQ{!>XbgrZº 2u~dn5#FT3x!G5pk{.;Pv]<17:8s:'Cl$Ds07<S d$!\b|XPƧZzu[sP$~=/C*`e;ۃ;\VYB=6&sX9*1ʹ>0]IDfqʥ]Tb7N˲lC3ypKRƜjӜT.#ʭѩւn Ek7 Pvű>elZ eXa9'd>]z [Vq?Ea"xpkj9EHAI-w8I)nڽ'+ڠYpre:sd}'Y1¨,D]ЯaDu];wa^,wDG8?+=C|%sܶF7)~B?9g^o쮪 K(nvRZs~Qaqjs2$.~T\VːT2.LJ&I0; Fh G}O#+_K$BQ1TacP}WijࡣkB$40T5Va[y]-4_X/jt;e\Bgqm-iJR!a6WsBla> Un3Mov_7zz[x24B]FñZ?&cg ȺsntQDgN.\n\n9ck]_ X%KJ9!o8deJW]@_FԞ&ig~JLLLʹVX;2Yg kE%: w .26ۭX0aʆ jFxuI{ 4qxj,2AN{c6*@"d8D:#m3tr}P zR߀Da(Bi}" NjC1x) .QF^  }'cLѾ˝UZB$$>@1/Lz 2'J} lH!F +P!J/H)y+3`< m7Hi-8QS>t)(U,mscD&el&w 6UU2]z,i7 e“Q fM xXx\5;ݨm6'Hj9 Ea [ݻW8=Jbl'nAbx1|Gl+/J@0۔hoì2(p 7y4)E)ǰvct!(luY篶!vӖ{2zw277 *1)xD_5V4`c2JY8MSr; bI|?fcq$KcVgp'B߉3sDgC+`RT2&aֽHSNi!u?F2O> `[_:qJȪXU;@΀Q,ҁj E9`qlvO Z1p(C7w{G 9$7J̇C./ 'f+Nvݍ1dn*uxˈ(S.K;UEa>0ۻA.fdJ0LPvm]vqkWb0,ZѠYT^g9aI{$ Qa+]PY8o,iUWDِqM2~Q\ZR6cF݋$ nHmRL^(jQ]5WÐgE #⎰e|[͉Y8/S`03 ^j B9=bs 6ywSBB\k.A52{.ۿ>n޿4!Ia[)zQq.7̨H֩sKs-U߸#VXmY(&XRy"c\O(ILRMQ= IxnLL֫IQq1 5۶M33c~E.81a8Q"&%5fo˵{{t88C*8i^cЯư .Öwщ!\V¶D_62:Iw|΅SNa͐r#T.s"u {:@r#a̐(3Rھ(}DFQS\tK) Ϭ4_ODn,\PjLOzHF:~x:/ɌG&(_/u/Ѫf3։9 +qR5J`:;9Y؜K"r15߼C=p.VpHUB(`un_#~KdC 0jq-S:f- $9/a3r4 MYYh`MWZ<(nL Guƣ+DNjE;SYrTUV ΍jȲ(Ev8$3EȷYu1.֔k&)g񉙜F%T5>KhL0d{`]UDqfNRZ\w6n7›։3ʐ0!J$޽%Fh$aR/Ԍ!)JMJmn\f4Igܴ\7iVDрlPg6mBk'o !𬡦FA!kR/dttcXʙ\jΈ#{ \5' ||J.TqM'vH\-UyI-9񡻒YG(+iݧ4ujO 7i(% s1VWwkZٻU3(YB>E;.E5l~|L2Z:uBiQpYB*OM%+wt^#;Fxdl P2N ,~[_qqBOwLr4pYf^]B!H%1W8`6[gMp-a؏Z-Vf"EƋ$DyȦ0*w]!Y">_h j3|*`wgE"Mp#aAZPEk l s6XץeslB0&aH.j:!e 6 gJt"ǒ_@Gmb8'S/ҖHb̀Rs@0 7^Jw^S*ȨkS>H###lŜ(=[ r=hAN~ bV 7Ikc).F52P1&vuu*SˡhM%ޞE8sA0v+aI&rNV-}rmɬX:iBaܮWr$V`+ǝaD/]6NWfЛ܂>D0M@qFGKq +A|. FTqMjKE~4{5R\W>|a+#IdM k[#҉"LYe75i/033[fFXkU#8C6<,iڭyY6ђiض[[TlB8JB"1xf"8 edC|Ȥi=i+Ϋā3E`yP|G嘀kon8иS2ieّuCUR6t>0pha !99ʪ!as̃ 7pnjkDى@wL'V?ŤH>iŴ|(3ijT=au^%%sJ!xRwj^X Ei줩-k9fS:5lpTWv^K%o3Wl8F V`5B$n1u7- 9۶ZF`VpVJ6&݊-QcEFI[2=V-í[pTļH/f 5Svͦ 0Br;o^Q&if`Ty/wH$H4]gJNp2X#?;o/|ӭEN]i?܋;X$؃0JZ`әp+4Mn; @sFQPGɗ;SuVq-)Po"0:9V"iʳ9Ψ'CKuU;_!ئ^UtBFEVvz7x"^pAKB^~p;9rm>z ~ wHs㗇^OCa|Èɻ<ɨ _BݖA^}wçApp㓳/ÝZ~2P'ͿxNpFm8;ʃhz0gW`[jUxܺuat}mCMѩß@Ԃ-sg߽8~aSf*Na޾qoixը˳ȃ[legr Ι>ovS47[[SQw37jM}nF`[A<:/.GUwMB-B2ktlN(.fln#$3љy)ȃ  k;5Q&SsvS X0M`MP%p=v/&5 Ŵy:yis߈}ֶU8s_hg1,2 Zj`-n33JgϠxxgewNM7[OЬQ]1c M T=e0/^W저 }NVǭZ9 {)lw(ܘ9Q淋͆a3W 0}|>A nWge Wuo ;37q}Wj7Mky[Rn<V4녍OmtNީ%}EF㯔v1l^wܹsN21"Й \BAL1H,ʸ5|z~XބO9xwȰ-~&`c$OnWiZzymx:~-0 SͶrRT=R?9";aCQMIHx1P/9 ^l6I {6%yx>IHU6a0+pr&[i'K/ѼY>c4;G' `\r NVaqkb]t`k! kG%)K0B3ONk?5_86f.~M[ WtR/sX""BR{Z5:XixcT5 uURKG'Qfr}[^LOI^t(~,ꇻjmp_â9AU6c4ct u8r~d(@љ˵uW[fv0,<{o8<6koF-jm_p~uw~lkSrh/Kߪ"+(adG!wGKm;tUyiߙ{[rͤ4.e8CJw"~?@X~J QH BSN?k}#o n1n?(w4 {H? [ᯟ`x&l|[f~b߄[--忄 oc,Hzu'zpI+Y9zf~v?zwrpw hivX6}ݝ{`Ǿ-(~ywB`\+!<<چDݱAafY։ |e>φ՗hg n5bz1upxԛS%Z٧٠0ܾbF. 6jyeܼV p$['EF`m4jp׸`&wFl'*qDKd&ZOE %zw NCNH%J"q| TOpk}jWp`8wȞ̀faS,Lz0+VԱk[zla̓nY\х~ Ñoz_xx%򯍓O,˖ i<\܁?͖u;.lHW f_ANuCu  yͽa=gԎ~  Y"O@T,Y[ضhy&7'of qoϾ;Gi\f {IՀfF 'VQ wF33c!aVi1[ܥXkHv0*dc/;ɧu3=|#)0We1>VG[8;nc.a%jP2< yKVϢSh`~8QP[i h'ުt_x9\9̸U]g]Vg<= 4 ,#l^gq^Ǵ*b5i {~YݝX *(oLzXg^95^,nL?!@;ST*9OY`<(R ʧCD HYgKZykGSe;p8`+ŕ&޹uک閮} HnѰ9u\}X[: A L^wvn{o->WTa!Yc-o%; Ø*qaj>ֹ[]іz9̏l~eZBmS h@ڎ,9U48\8 }dswӼ!xo} ~oe5WRLJΤy6x gUCVfY>9`\eXe|A^E8֫o~6G*U?Y[6gcjXpsvQ|n Ϭ H?k LZ׼͚W2DIF^/^gel)ɗμ7n|fxUÕQ\cTk*sQwU~aQ7FqtZH<i' 7?~eD,㳺| A۸|) a]%4# ! r]~;AsoG~ͷ_7_x4w_]76o}8ϣ@Qå<*!l~h(VʁNn5#i(B8u2q&U$$m'm KvL0(5ލ))`(%t6/-dd環q?hVa;-# q&]_ynzׇ͋߾ ȇ/XyJ8d?XfH҉d#uiRY1w[_a%ozd \{vpitjYl61a<$71=LdR-l͢[W+hngy9 ;yi .%E[ΐ7a&o-=wp7/^JR3IbW fR3K! 0Tma9)i.l(;Netrn0k #q? ={>wㆉ0>61w3?Tksp@/8aӷ(Fǒ[pL#0_O.Đ:Pyc`^elFS|o0ca#<”=,3#y/9kPтGxn^[m!. (ѫa\6l3NTKqtˀջ1lDv;h*/asihgG,7'6oaxy`WǗT 0u0} }01brN3:{7-8:i ~rcY 6'@B?]6NUձ y7}M=y&aJs{_bg3؇O#Wo_>|srvћógG{^:{9e&:?7I~y"{df,LNfXB b>טzכͽ,7g9Øhtf;}xp?|̙YG%-aҹJ=Uk@-!go:hc5.vM0Da"G574a;?QFZ}l:.RZZl0#&o6˽MEJ7<A?o? fB ӍIo~v7x냷I}xh?h탓'_aa$OᛍpC2]__)'k;˟NhX4 }f9ʟV #vN<m/vĸ!t WO7`('qA> FG9PhOe+: ܞnH4s:].5sʔ{%YaqkmHA+2G|U^L7_wW8GÐRB7YS?'aѫzx';Z=ao8 [cl|0c̔ N)ac"JAcx{ ^A<Cgd\GgInFV磪!5tSA ŢJNZaWHz=YlKroQHM̭}jwًiFzi8|KA_&iqrE gB;lncls*'N{ MSһQA^;:[l['KES3 ](1.#}˔5`ڈH>l9a~]{:}xX105c"8, \/jEy7shtg~FƗæ/P=`8@ Dg7= oR_6h ~h U$c:ȏ ƽd2D܇ɡwm3q?zxs?;݂#\Xf̯YQ̝t`s;Tn2O+㛬w݂kJo]B!/jB1@iIXvr.r.^EOƼ+[;(]&ұ&E|3c%F5Y CዶSD2Q@@bˢ'TG5=.?=Bk8U ؊.|@;Q=!l)PSbI oF0#cm)[٤\Ȅu$.27^?w]lHeC+\$8Ɉtof$lI"n5‹۳U-T=|87-i>gN,?Y@W6 ] g̈9{O5}<"Gk?Gߓ*_K'yOԧGefW9nvyҮgDmN]l YW-Q|$`dthDGe:_?(j*H-.'gs t" dD44Y4_D3 Uqx<1Swќ3ruc4#h T =Fcӯc6:'c>;4ECX2nR5sx{kF4*χ걒20oho7: fcz=򧭔<=I88 \fp(iCP>FE|z<xygzTz=t4vPq7Z;4BZ`x;H K/~7>-2G~:};qA8 ]lq zo{P؝"i;[Ͼ{A\fzt{'#K}#8W£ХlE&1F$4L& b˗",XФ}s5|EAV0ԤSK` f%=Hu0sEE2guf7)7lfqbfQPA, 3 JloJ~?t;]{|ssE̗6QQmO+U\ސR-n 75J&خaFPпij}K# YjO湊bS lX`rG,'pUDE]\`ޮ5³.'[2tv{1R M\)k-%Q4/gVn'h&ȌۅEχo vDn h8()G7vdS'szYaIJ8;+}^7{i3zHXHݦ#zyIoscw7N>~ezaGTX 2yR-L42M)݌?pqu[[ He 4GAn2iaf&4C6YݞNj)D.‚5sd,l1V\af?9&%SG2~ƹ zY\V]nF7\l>>) c&MCJa׃Wn hܤMbV\X7u7vVC%v4:%E Mp33':o6vYpg0:Agq&4 06YA ^(]ѹ~킹 f8^0C^OmJa%M:GL!pqq+Bf'+Le2f`{- y Q`P8*.9 XdЄG "$d&U%Ha8fƄ$QCgԛ@j?ŢkMm@z`k~ӢA_KXb1hJX+M1 >8\b y=f@67( gBs; Xg8vgOf@6+^՜fL?tȊ1'GDEÊҖd|jzTnVw1 #y>AĝވKzI[ãGz3YAtLуown:[?!0 7U#H")rE3n,&k&9F4[rOX.O DtԂ>s |\dWfA-۽Nff@07+(GqW[~˙j{2Tf䯮#L,q˳W Nj0SDY2}+ `{_&qNy{4FD M"o5L pW u1,İSv[8i H>fJu1g1-2Dȧx$E1KN/ 0nq7G6L4ׇ`޽{;u/Ɣ`aLN^=0"oU&^\̶ɬ,%k#yF'pa7 yqpxRkJ~N~ޙKdTڗ Q+se?Ip&0|峅YxrdI s.|G`5|pHyy) I_KR_PO!i8}*QJ.rЉAVfou}g lv82{lupwNs^<,:b:0bn b 986J$73&)`o6 .}/q{ OyNÔf(7yt: ~<N;@ViAV l(^ sװ|ܘ+90;h|=VĚ!*cшOD1oʑ4D.T< 99SK18h @D$n즁 dF8mR٭ }JMH;`h^ouÞ7R99rn<ـ|8 (9 l¸BUYzD 4QQ8Eu&E! `\-,5%-r-.F zimTeɁ^#ɦF4`{O*&y)TuN0.iʼ ƇQ~w)LI4L&DaU*,`^QrxuRb$H5 B ׋K+h2ݭ|l$d6 e-3QXܤ4(Dƨ'>l}8y{~މ ]ӡ+댈L~ ,TX8sdā? |s@9a\װ=3Ra"l|;sq(&r u13Q649l/ C\a> ]MƬLC{+TrʣN+|B]+].1 (\ɟV5RUJ+/K8!.y_C,E*p 5|2+6"z%&v+eG &r;Q ~2TDqbRJ|Ixo \҄Q0u!ҭhw|=kdh3Q'OpHRc#'m]i"kDt唲ׄ‰/BޤF#d J K =EYY|Qie+JxHf$BǬ w@VJˉfO(Qg\Hi'"'0JnT'jlEAjam^GƄH2kD>;1-}&l2,UD +IÞf/ʥ+Xo?89G8%DyJ;HbjFqܛw$a׏cNY8`<E9%ŴfT iUXz vwoU( /"+ %\L~gr~bM\jMnxDSjGi>eHl"@"ta.1{t!r9ɸA*ŷD }E沭|RCB tT_67nEs5DsAgkȈ4aui{Tfor:>^G3ti4ؓ=|X6=qb;E! ͆@s~WnU ASA#h2rf\SNpٝao^şpغ) d/ wCud4R`?_ ׬:k*M}#VߡL|5ix0y&@wJdtOGΆMTa axp7DY aD0:P3~cCCU)fUq'y䮌q GDžA?V@ >Є9ԏ#N{w`_P;;߈N+[B* WKaȈ#v`9/HZ"XT*9e7" U1!E RW`c3q>b;]n{6%RŸ%w"a--"BS$- h㍻|@֬p( A;Z,BռwL!!Yh;JmqUR} 7|A鉮=p<,=M;.҆Y;Y-9_Oԙ@1 t-UNF*=rAZ #3Zqۡ}ȁ@c8juZ 8MqL5Ҙ 'FF-[z8+rVfb8_PղW$XDCȲ̂|zE M,#")"Gï(;}¤ 8iF4UQ,nҦy-K$L8b5TDGdtRZ5ʌGA33@qn![CsiA2䍐W=;zy zXs4Ǐ K74uFoh[V_CqV}*j xQ.q&Cq[M|zC lR*!tTwe/5 3w*(Z9,fy"\rQ8U$ О~"~Jc #*Kv[lheFFW*CL(׃N0;_ϝ u#e!aujN¯^$yr-We5qF?MLdAv̅7q*!lEDLPL 獃)<Lx|4{s&ae˅:1ߗ%-IyMc:G,8`:5rwd GK2SiE$ 8B98qqmHUmpPe@EWmÍ:6NRM L6XzE;>2F! "7':;8 ͚`\/Jܸ2}W][8uѺiXrmnp\v1]2'YD?j'/̞[y n/er kЂ諝ʗȞr[Ҁ,"%)([ޚmHE{sgbzjގ;fjk0j,*ڽN^<&tv/_'g'KwH)e Kr5zU'qF.Ǥ0eK)'ǚcYS_lܮx$ݻ BM_]& v)]ۙtDPɲC-;Vg/wNyq4i8~Xd,(*ER`9S"]r\NrSVy?X]g,\e*$xyU (m~&&CyTb㗃z!xzQ+IټŇ#d MbuE-G hJ*.x"$B!HOw2tYUM]jdP-NU#$HҪQ|=r+a\0NM8 p J8 GYɋ5&d2:G-y+|q[z-QAkQZ K svO< j?ܪkX|iTwy EgdM~?QxU'u\Ib&I䢢@'ꥪ|6G`J|' ifDe}(vtJk]o:+29}"$w1;`l$fB ݪZ=(9gmmNk*+/Qpc&&b&jJAE:zy H&3zQ^EeE5(,r"Iwpic~GJ7T ͗f [eO@UP%ۗOX~{iMA*yS*A9ʷZ"sKhzH6%E4o)agt:Rj\m7:qrQ/ķAsƛ/k+d/uFJt t zÜ8[=$\\Hf&f,lEFGs!P2q άFz7=H`Z$M=1ANR1pdn_zEJ}-RC:IF{e` 9kkCH F;>f Ա!MI~C >PH!iH2fz h4~Lj%Zh:eV_J\coS$¡}ɽQ22G?CoXNyY񚐣9~?oGu ,I,1[8|+UX,$"8pB+8'e'm/idZZ> (Nh5? |j>6.j1iX0FnZURh38k EEӍ<5Jn4_^exx^((q\_&HX8 QYFCy:xYhst˪Ԍ B czpg/<1꣟e Mtb<yԀ\q[kM dCNb>5kVy[12EfQIbÌazraLZ (wPrgm}7.pۀ,mJug&9:>.YTMu#s2FW؂HՎPqn5x*)谏\ˆrhI5f1rlQoEbe"ӉPJ7m)(ALeCnu%?GaRnH \hwz~ fo]Z4N:thbVKYso cqG5BR\VXEG4 Nxî+~b'O OBeL"4P\I$mN:K˻ L3$ȗV'^r6,R؀Ԯ-S9KZu24|*_)h 8Fj6WeQkMNw`V,cN8CNOfΌӷU HrOP5+Tb^;XNd 8q{A}A}%`)Up%)t`Q?_ #+*ɇڦi[h%Sqd `?07Ufpw,`?D2>d)1shbIRw}U9u30m*) 0ﶠyq!M&D_ 0?_j7@68Epython-defaults-debian/.bzr/repository/packs/98c6cfea9772711d83e0aacadfdda4d1.pack0000644000000000000000000007306213212462740024316 0ustar Bazaar pack format 1 (introduced in 0.18) B165 gcb1z 151 176 xMN 01+MS- "AQJ{cꋢ~hn93j)5\_.,Ҥ{bo`s\5[;vl̶N ܩF/;DSdGӒB>;ؗqL/v@4RB14384 gcb1z 14366 51362 x}ɒf;=TL 8jUIu+Zhw@$Il,J]zo?_ oL%7n$~Ùw?mv2ϺdoWU\AwKݷo|;bdݗdnן|8;Uqe-MEZCUW=*/èF=kx7Izo:Yq;gMŴy~p+$LQ$źK*/E)ye=}4q69͓.qdfYs2kގ*F&5A;hC$"tӪZ78YY~qF#by^릎zsa4߹~1.-dskӾbt"#?Yf1\^,:_z/yO=+8K1,6)m9{ի:F7{!|綽kupw>̫$;T)<4*直v&s@boL֛ <;lpdө3I9Npݜ[*~7?vqo'!ٜ3o`d퐡dNVm|ULI'_Gb\i dmlOHl\z{пwkU}.l~ 61 @JɽU&r<8g읠4^NYv3*I^WERxSt}dpY%0/鏮H|-IMD˯$6()vP4(TRfǑO&*Rt'r r^JL$-;~-_{E j VF8(KXԧyR!kuLۖNo`!S]%3mFk F`]Le Tvm4zc4Op#3ZL7umiJcq9.`"UE^ V5R:^0v l-jtP`c:aAwurf]'lfMWqwlnm N-4*~|Lf>޴+E$ Lx>聽V9]7lيjLa*]M r<]BbcZC,׹*5F]~'Y]b} O㬢(5d!(_zYlIO-J J $ra\9)eazbNp&̖ec'+u 8CNKfˮqmxOieɖfpNJ{i#Ԩ|RݙfW.K ʁ_ٳJ'WzDUW0ibp>*/}%3Փ~Q=C2mLp 4c^$N!+Kj T}&9LId'OgjIUN 9lo4bҞs @J5`R IL2k N0YVUä .r3𤀁[,d:n2~],EOeNa4AP lUmzȿ&2X_No3F/`Hˁs(' # 8.tL?K}fCTFk[+::IWp1B4}}7rձN:82Y( 6x ۣАBq75O~;-%ٹ3 ': Hܶ JeOyv'@xԻ1v(2)U+7&ti+: d7qVYN4/% ۑ@>n>CRj_}RQ G3hCj겖K!m M5!n)2xm6]G51PwOnzmg TZj%+b7ge\;` ԾvRgO=~wooٕջo_m!!qe]PLpW ::yμB{rh}k>8aK2/_]%k3%\"Ef7zJ +LE4pE"ìFKÈhQ2<6Y^ՙ4 .NJ(F^.+27C2n XPxD뿼o_{7o=uE!5m0 ! # qaw u:uDD eShS K,U/! L ùҪbxa:+ll1Vb zQKムpO~`wP+!BDՈ}-@߻!tVOWW6bK)qB&h!4_ρ'K+txcJ*J!ѓ)QYC/@DIjL.^qEFR> 8Db G<MeN?7TG*c NG`I,E`a(Y f-dAaha+"@ I@k̓j~Wiiz3gN?pU|d0pG2B,ܷzk:e?h?Y{{a vmB"8"34 Ě>lN tI1)8x%Ҍb M8l ?DP&$qC8 L9:a@"y-`'vVL`ȲgѳmIV ~ NfYT(4Ne7Mѻ@6s% %mGLcj\hm̾GEogl=+S6>,eFI97hgISmoA wFL };U2KpVB-o9"DMtP~者bDWf~;w&Vm E{Ss>'6s=R,=:&}]d;ڟ] n}=PIL4qIftwV3QNӠS7UY_==T H|4,Fw SE%i; 6٬0 K3h5%NA?M6+GzW5jW1k:8\.͋*6<<ԣWܻBXx/|B3:I"k8? C=T lF&;mF) UJH*L-Dž%G&3ZNJ^a=DP<#AR]9#襙\4W ~n">Pbj0$NܟTt`#,kQZ:9c"?mQ۠X0G.zMzdtx4?P &U%s܈` T"Pl+[( \eq^u`I++`xn#I6;1.T3tSG)mV{u!9(KbWVnڗ +U4};4qIP;3Pv35xpG '2Ŋvq3mJ<|$iǾR>fwp#@4Ś.% ND/>L9tm T붕)GN;vb5^W;T[DeZcͫ.oJrw)QL@#[3Ƥ^'JY7 ݳ4^9UބznK;Q  v46Q$2֍bPV/ c2>}fM]C;ϩUBkKkr)HYmגea6ƺFT'zC!v=U=M[(DǦd٢B" dTvxLڕQ"neZqWs֝~xpFY( `iZLjc0Ve#PY}54"n`Hk&k (sV@2kvyB>g[tUezi$.c?PԳ5Q5g)Dq4aW&X@ `هJ$*Q^ }*Yթ7 @U[cDжV7F⎽H oUvO~/@/M#v0cx|H[6_&װ4 LLC?OD<فCRY:+ ϨrI$H2^yΚ .&ARs uGCKMIO1{j<-r7,)VACܺMBvKLow,h4XpYժr5WAc=IӅzͩ0+fV y!0DDaî2xm8Rp+Ăs2#'ttδP5iBV 3sْ 'RϮktGk0{1<v3Vҹ[Q3kea[9.mpli,'ޞR bJcO m!Dgi䩂})ۅ]0/c|[]I+]"Q Sc75^ Tx, +ʇz!3PA t'$'!LpJZ^Cj@Z)7-|V餈9asfַd S p v!JN֘D ErUG#8H.P;ѧ@h41RNxխ)R7ɥBeR͌Mbaa]Vb[F;L^U|.VATpt2X$pa~ n Vo*bET7WT𗠪koMC0gO]}M?HLT ԆiYKKW[ P,U\┨d ţܢ=TڤV?T0ϐسx)4`W²3Y8g@ C= iɶ  z좝Υ߆-9럎WY ԋ̎z6  ߕ@!OI{2g#; M@șt 5t4C|wͳlX[ÖVhۿ`]=u+q-S!΀j{??m. 0:[m~=v}dUv0chZN~|O& "ͧϵ|݁ԕw!E0#(v-Q`sx!%g.8n1u J4Y"5'O'[J4"`FX/-9'dP/s4:P|NGB =tXsQ@n*"&gƀfAH!4PY|OI6^6VLy[c]DbԃmR(eKū8,AlĞ79iޚf~1E:H&ͺWh4 sm,mlk@bFN6+L>u64FHxAs: #Q:*M;46k 0ձ:*b=:rtȴϒJ^Xc?ʸ6D^y)}lߞb5n+!9d}]WrlMk^d2l- J6% Gtٵ}Fr-.JQĤ;uy9덮fdj!\) 1!]u$܇sEd#6lW'zޚ\F%@8ި7*]?hđ璽 AhJ`(Z~"y3v+a#ܰe|5Lnڑh P+zzk4PvR0'onW[G}"?1Uͽ]iH#C3k!R%~!P:Ub. b9i/W%`2e./ aW` vH{,e.2b U ,-U=Ef)8NgG['uc^> یz_X-sw|(())~K'<ُtCXeZmd-HS[?be(F*$ p(UPXSWb8 )~3|%dR+Z04WOZe ?.e- Dٿ'2;:b]kx%:Mls_%Z[wP"MYUPS{tR~YH/4ӘeH?b)2WE~To˸fѱ+-"%0H9ȩ\}%hJ7ϒ탱;ěemcUb8PUhN g aAXRǬDC/bPws43cf{b͝w|ٷh@#@#Nm]Q]Q7}u .ƱRUҐڠ б}I5҈FQ5@--v7p9Bl=AMRTYh7iMTpC6`tQz]06Zì{8LGS Pmyl!Wl{5 YDzfkgs0#.@Z}PIɞi^-/DlZu3֫_:|M@eri`*v/,7}1[%5!i_HSr' .kﯛ–º~Fgwa}]cIƛ{ݮ@5U-9[NNl@|-f3 0H"_<,I߀-.DxJ̤+!t-#yro16 ]hWP(>./Qe'O.dإG>3hpG[UMΎ,R*6LWBy{X`3+ d[='TEviVg.Cs?&i'jȻSPmRI#ȅA\OjV{v91v|Ƚϟ-+nxI}q\ #Ss}++4<rRq8ǽ;P!N, f"7:E Pq9W]>)Rlj$ؙJR9t9Gq"I$)4%-1D=R\ŘK T(fKe=0b&sI  nz(L7Pq"Z'}w-yt2Պ Ҭ# rG&#T仠JNG0=6 ī9amDֈ,a7s:]ÿ%D܀^Rj60{yc~pdA L dn7D])$5hAG?,9LVu]'xv "P+t-^`2|EfӺb9 VM~N=ʏܾ8o}g{]P7 ?ly !߈yn5<"]Rl Fnf!i7CcEP3&]E:O MaGɳɝ:T _?bl 6PyAk>K8uQyJ4<58%0q{~"Ftydq2!Pпe[cdDl=꪿B#"UsHJqר!h{ B(.uh A:T@Sic GSmPeA r{R7,nE򘧅|1ڤ[Yl1Z g}eeq8̽U4m.=ruZ kh92Zp%"ݳ/?XS}S8E=\?A=b@oߔ= ?9(Vm'mrm>ڙ": ΄)͏.ꂯ śS kDmyAvo] ⭢HIH z ,_c,'vtZaXQCGwLUR Jc"GàA!+-v_=i~SD{eO@t:UUԥRYXVUq`Ч@ ն<0]W|-v ydU 9=6gjeQN*Zr,apהLB;"ai*"3kÀ| OE*Uzfyס9rY$I ؾM >drN|6U~J{՟];/sLJ1i?V Zh40 trY]pw =zz}F^Y^a=u@OÈe)c ĖChl{jNŖAݚ,W$P=,gj n"chڣkm Jw<zkX~\d^cDGN 0MӡOoo-Bo[7u$.B]>u4lXZUjxDZ#.<֋Vx 6q~fK׭z|x{AS'K>:Ráts:+ (T=eb8}dl*DK0_؁AܙkTP!&Zh"&\i'N?;sxI* /Lgt'LWJW(:_!y=0 J̲wc\Lː;O[ R89!}꣼.4E%yVn͝ycP1 4Dp)!g3%l]uk*?<X3WQT ^V+N mYn ~C]V=㷅.iٞ=G569Z͞"Ǎ- (/Ǘt"8τ {kb0"z.$߁LDE0scgbˎCKA_WXBz7U2}3^.wM~`pDL:o‚2%U:%tۗi\M~Hj@P3)a.⽐D\cbT:&'ZH"rsRReLcw9-M)`ںNul!fƠԪϭ$FYI$fC\tX i;yfe'嶊pX%V`yU\Sc=$ u}d~(,u_oH)&{i$QS+LjRa Ħ)ukhws Tf_3dlqs˴Ωxjg5OC#cM `>~S3[դ}hw >Mz~O㭯lݹ6yEyw;y7kr6o &7k&9{37e0^6VgwLn5fF觙>"o.Kta견 $Ș쁆>AS8[<@Кr 9ע{ g:@:&ekVU}2f<_Xi{y;>\ C[QiniHgn,-%jd/L/?ھHZeSIPx,l fTMY- )og$@ aajZ]YכW|6*?ee I%1Uj:>s?z 9oҖE1eV^nc)W|UGW'!p]6h`H+Agwt:GJβXs)F3-+ ^;'^1!=l`PlU.阊1ټ#}gtfY=AJn > V>Ej`tiЭ:P`Tެ m*Һh?.MA$ߕXcS"p=Qg% z҂%sM`J[rY1a54FȜ aer8y{Uh`рk_`(1*9>xN.Zk݇fa |((HK<~BR7!,;\ueeeW k6| =\BAŏ>k1o[O4hB2086 gcb1z 2070 9431 xXݎ۶S-,9 dgݓsMIĚUZ-'m<Й!o;@ C73,UؙT~ִF{,2\wTD8A<7YQcRN5YHy,7򇘅T3߅4fJ/u$!?schN5~aS"=+."OVo89/KW넼JtKC}QrKVxST?Q~f dwNJ[w$XFh]t3+n<+2 @ì:RpS-#)OR_[& WD<)rRA:zvULz>(Nao 5.# BdMJ45I9ȯHV E3Y2!z sgY`lH?7)פp'BB<'d jMhRvErJbGnK^YTG⴩7H ,u=l",gݼ}̸>| `qvbL {K*[gǂ !90ڙn09NEsZ,d`Af֑uY`ZZI)G B߇eܫw(U{@e.Z(BaL%82 K `5v)NIֆT7d׌iTT)T䃽0U'O:@c~'6x1* ð8^ XöqٹH4%kCSzo5W׃qu;9qM-֬-,ܛY½2j&NmemDCe.nj^X45)  zUyUl Ȇdw+}Rdep^]6hz.&^wmUL$ϯ./shBKch7\6<|dgfarOV&, Ct%ar851_vI7Fkbכ}h7Vw@f@Ѿ5 )8][mLl8]+k Gb'{; >/=[jߗGm`:vIz2C+ʹ&;`R٬K4(hS>V/%f7S[t+KpFw$d=!X1PtꈠrūIBo%IJUI]CLG7t5󠪇[O uC@Ǩ{oy-q].~`PJ0=AA2LXHb3^ Po޳'.[X\{ჰC%T_,PCB10487 gcb1z 10469 49153 x}Ɏ#;eyU=^^wYyotPH] ̌L7:hvylL{#8 Aiccun q,1P';eUǷAs:[ӿ&Nk|n-_>L=j|7,~e1í@#uޑxF#xC! ,S¹!j.VH7WppJu^ւP+ZU$48bWEXëA@ƚ؟Dad4*e)$BSD5ZR1w|;>WtVّ=jy5vGdK]L=dtQtg`RjxyCf5DbڢhY|MX3ؗq9nbNdLԸnNۺd۾4@jvt,̨Gaa|ݩ4tCP8 }V^ط إfJ(K\ǵzBtQZg(MPTTZ   15LvƝ~uŞ,hvCY7IUk>mۈ6Jc$*"Btz7AYjy\L);.Nh: 2+ˇ o\a_AlD'+q.xDQ@DP Ix(5G$d {'Q@G`>cC)Χ5L|gjC,vIV(E [t ' C0 [3|6+Pr8sKҝ!}*sY6 8s)3Cř]UAC@)4ǘr-79Jz.q*ݵHK+CH_HTpHDr/#]/) &W.\Q8|`цQ< hFgN>GT*^OW!\!.?[ysMcP"Hq.AXCn3Ayn~ZӮvS>'E, ~*}^3oؖ556ZifG6)y4uyB~_ 330u1a$d20.D2G40̈́B16'Qes`s+ |%v "r  c?T>nAyP@&g 0ai@y{A)F6<fdf2RQxwLErN0ͨ *=~L^FpPuVc/vN26;#9atH;>[m1XHIZj y@0"*$!;oe@=ZɎ;KvK,· k2JV[mң\Vb}υN`4(żza|:$giqԒ1rd71({w^räV;:9ڝvZ#A;Dam#e L%#=^{X *L|Zht>d3Xyf=2&:6E"VPJe_bhsk er|0mM_ur0}X]fь ħi?w6TDT>­1vN^<6Xd+LjIg5yT jSiau},ߗ*h/#yn+BZku:O>'  Td^FcX9(^F@]=8(vrF^y= }1x"{SJTZD0ArT0 ^~D2^ݸig-V.D7% U?g 2v6#yGw㲑3bZdT  2W΂KȄЈZY"R #Aa&&"P`dd2-ɔhays'etHUzqk~E2A%I7T`k"tE4j Lg'ʮ~O %K$$J\@ق൵7tp()-B E 1zJD(řR5`ΫPH~&0 ikC҇tuvmpHy cdQ*Sh10Sn>Afʖr sK}̮ f@ hl]DGGX@I "( "*0isY\^$,hIՋZ$UFpCQ19!&Dhy;C@}' h}ksAY'Ik߾5B5dVy6Ěx{fƚ C6B5$bF7c='X (,̋rWTavor$7Zs&$*J7"->`.H jo>*Vr6c˜-!F42/Mr˥7Ӗҏ'?^-^;_/hoo<}HL>D0tgJc(=3kQspA?DqJ$*yQpk|N0Qt}Vip:xn)`rhl)ww'-U j4@5Ynw_g=/)f}ꬢC@ 2_Eq#qN ͊_hȣ]g0bP3[iK{D`9xFG wP/Do2fg ++cP`Nz)"UX1 ?f>:6/R~?6TT Mp.d2Tё n>B$nT1%V[IL36NqyR;KH25}K 9g=X0xnHɍ\ T @+0 5A%o@tSa@C5Ac &qNȤ FH$=]1}]f{^W5rEr۬\~vl6oSs0R{e[} ˲X%]}o]H= tv -R0DZ2AqˉwmrϷ7 VCu0Y$  a`5 ҦOMHx*\+}cKØK{.Z .P0X {L=0NAjb|:Z(@U~ßMTZb¨ QH07aZ[YH`^zE/WN$+3]MGd{v$6JKHA؀e hjJG$cq bߠ Z`@CLL1eEDZoc3 ޜHl cx7;`[ӭZG; a% pyM̰k9QUERTkDل~igE iVZ WpŠ2)-LkXD57fEʎzuȌ愁6Fzh5_X3֜Hx5o/F0G;cYn"V@XF2RȇL/Sg?f3aycF+8QDLXo L[f!@r kfc֜Huȼb'ƠXWݢ L O/+D܁xSh`sOfEʎVX )4%Ghmf js>Q]Aƚ);a1 y)bB@BHA- hai8EڥYʸ?S G#_ArCFS'VutqT3k 3+ ,A5iMeQDP끧OE\3Z*U $-HTҷ$muN-K} ٺ}~œ}4%8Ph;wn8L#c y2gIZo]$'ڲޔo6irm^x6D^/0^`(ݨt)<(L:ci|ZfCC/wcS&B@9$| Im3%D8ݥ-wQ,QyD:];W-?pR5n@dRt{RN75sYZ9,Wft pli?6;vKf]v#R.Y=FzG-j9dn("A`0J^^7wMS2mb4@p (l9Pe$S'm8Fd0J+V{< 5k'_ degb9Ջ ૄG RA 4\ڲ1ڞOvM4AKk5#HEu f2]fQW}k4.m??`=I:ܥ`*I'T'Qk 8ƒ7 FR]WƟYEvE{{o?(6W@,8 ) %$LTU![˔Px*B4D/WNtVtGV'._TH֎C{kSXoz F!8:(+K$xi$ %$}_TAx(Ot}꘾_t 0\ka!-‚$G06|x=_e<wvk*`<ٕx ;tرi"N *e_1cD+/!u2yp@B2Fy)X1q/jާb,̼pJo+}ɓ Fۣ>O]qnscQ.+ͻmc ^cPHƱkw }FeS;~ekl7DO0roZ)sYL<?2$S;HaH2hfW<wj`X'ogEt;^Zi;g{:FFz(W/T#É )YL\M PWAmHf;S{"E\l}BLJrVe,uAHP *Ku404BAr.x;bv;?peQ7rrab`VlJ*k(i71!%roaϮ)nov:ux?ǪK?h:H:BH>r&FMP V`fYZ:P{U)W>?}⬒VH,0Iz@FZ<2`Cv)mb39p[`K;Mƒhd [O"L=9wg'ƚN`Ch #)$$Up,C(FAa RS=r7K۲X2DykE?DdFB:ΩL`jBGj4O?aQДn; 4Cy6gP(H\qe]D4nHKBsXŦNnCZdb8ݻ ވ=ؤ@g=" ;Kյ@ JW8v3 v:DŜ OσKO2> Sd ~ӛ3l(c8oHɁ2 6JP(p4{ y4[ D+fzn8Ӆi<[< '>4{ j_*ڸcX-qqơ PLHl@[JҽO͢n\b3~iπJ_y4_?GXP Ix)xh)&$АG+?4|7r03_HG1ҧTЁ騼O&Vxå0ELpʋdKN0)E=US m >M/˛wuOCZ&cͼd&UV:`9~{;TsbZ~[0EJ󐻺*d oZ̜fHOr>O([CY3xHʔ,!r4 a 4$`Ho%;zz.aY۷yo}  ,9iP4n:j/xƟ ͉ݽ}4}PK XE픱QD:}7r lDj^mkj5 ͊E#ͅf0ҼHM,w@Ő YʵQZa/Jg_v/_HdqU +h?| b{V~q)|9[\qw_/f噾gU)R9j;I7=Ξ:{x/f=?T%8r vJ*yiH?6, y԰˗~ˍQ*Vo%E8Ζ8z?WwKRyi։u|[bSL=[ev_ ZL! jl Xs@RbX5VGW&1pNQ7ލWޒ.'^C^mrp@d.L- M  Ȩ` 4Rs΅#ԗOP}*:WTm[4g\:>}z90M+" !›T#a㶨0НWIӹYYJ-tߘ`LNfd% j%bը(YKĠX8 †Q1Ć?|!YB245 gcb1z 231 297 x-Ar EsRt #MځQ4esFCvJ^ZhitTKŦl$PZ֭8T9 j够5hjK}jBՁnzxbm׬ܝreΧ 4mswt=X? i`^B422 gcb1z 408 587 x}Mn07]tW@IME$܀Fc;'J]uIοX9$ΙR0uLT)Q~ِOqemkB3x4]O6%21yTIy4c2^|3V[r=Fk獔rrIw L&nO+ʄ&5?VF@Ў&q(5nYnTB_>~'(k ]n᭟Ѹ4"B4yQ ~BIyَZqQԡd/#2KoӜ} #eA kEA%dL,-  pC_ *}&n}{$^%ї[Ju73qh@s(:uEpython-defaults-debian/.bzr/repository/packs/a6ba7fc60ad5455ef77b7f59fa697f63.pack0000644000000000000000000154265412057417145024145 0ustar Bazaar pack format 1 (introduced in 0.18) B37237 gcb1z 37219 79652 x̽ dYm̕LiqRyQX*suP{˖kA&hMGjAUOdwc,gЎ|)t\]w3؅0N( 9[,㔶 =썻+ۣI'=X"Y! ]~>>cs Zaӊ1 O1TQ9M 7 &=UAlEٚ(^aDxCwZΖk,Ojûǣ GpQZϺh^W^mA3{1Lm/ز[u@xx6t=6ݙ_pu8ΞGtZN5 8q*EƮk Gغ6+'nU ;e;l~5v(i`VNٽ-X2ۖި vJWt/* IdBl_~OX1e~Ǝ<HPLƒZ ϭ gE.ƎW`ZѰ'2{dN'Nr?m$妱Nu{Ge,Z/QFqi:sջs !SJշŨ8ͣV Ɠe\mQ,$-!dgC崠49q vTόơ^/@\sV[Ч+\}FOtuKzP͆.r\؅gHyas49e\Y6<>aQ>!+kQj*[ HQY U1es{eT+ҖTWVjm]q&iР9J/cN AM"y"0P4@O'$Vo!MWAE\Y''AǯrK]o>k p UQ={o&RK4Yn",: `p<&dj#Kw``9wVh+r7zZTGt:6t@ZUAn0b+v:YwX*} t4Hotһ2)5jـ#i O69SԴ5eI_ Ͼ0EUv0BƪW巠ҲzHx6pX@n FT9Hyܳ+?D/ 帏Rs S17xx갦 _}s^xu9.M]*"N+Lw`hRN\|t M6bbFDy<̦;zߙ##_p+`у,((; ˥ȣҒb.Ҳgek4&i#?lhFd-a[m+jDyDxv|HU-hS;;h{t^S)Xl(tKP_c=v]؆k(dw v\}ۀ5CYCCH-x6?t ]xJ6prd\I M9U1? |EY^զWOjӆ~-DT΂}4>6tꕏ;mufPÿ5Ko,a4 7Po ih37억=|30u6#1;twx|=C ryrTFGO>%<,[^Hf'pYŅ`&P~,<~T;ew4'?RC8$Ÿ os߮PZpLG/^pS#eax05$.|Y8 }zm@H]ȢpF90 >rӡX/;_R<)%NH LpAlVLlMs5'Ժ , ^r%% ZjcXJ9R`V |n?&׀7&*rd`mw9?=xk%ρTX0F6mIu׀ Ï<zGP&iWN5͕I4ܢQP3x8_Lڙy#Rz!X!s&pδTқB[@+ܔ|3 @5W+{U>x!I/$ t\D .lĹ n;|TǺ{ɤ8V `&. Ap֧w2ȁ&NIG?<P FF¿5KmH@N 6K,t*$H U9&X V]Y@haVL-0e+%zT0`~;Uxk BkDpO<2QJgOx$(d r?2WϾT {#Rk am"p[,-}K1xY$(e,@2`- Z[&u;`BT ȏGtb͗6$\q@,ǃ}w8 PX 00^i!6SA7 Xq+!ݝ_SFm"wך28 Q }1>&[!.z8\, ŗ:]-6V{vՎqJ^m6e˵z%ƙ@@ʪ7"w~f3 bwk0cfa0.>3(z܁{(b_r 4 ʹ>AQ?45i ]*ܻoίy?,>,Y?$pW?#wU|g2ܨ͠{<(GK (W哔p= x< [-H)<&:0x**dJVW H ²` c V2 K6"-ܵ_o&,h 8_Y 4F]Iarpxϒԁ*d44S%s`}VS\K'NvR k |`c5?6 8J?G_Mn0ȔIx<əq~D\s6z\L6FmWf#p{Omվ^ /7:x+ ,YUrHg`@T[uL4Xds7oQYwƻDCϕIPyw{l n lz+xa.p-6;?qeQA<& !N'9(8 bNQK-"6vɒsa)b\Fbջ[w4OmboF~" t\x bBb^`;ch. Mj{ ԁF70~kW ۻէ_\.+Uv5rfC"O9-8b#J@#(%F*N0J!XR[m ~SJ`I7h'5q0.[<c{+8U{lܗݙ:blG~f֌+@ Q8,u' TI1i8G`X6[ZS#` "GGʋS1t(DoRs%\YTCuGݏDW[/O봎Ce fOlP&2i6N&~:lP+1S(}5D;ݎC`bBMMYo]"}.+u-}ecu>sy|ԛm>Y5_^KcFNEnmт[1Yx_h~uޯELxۻ%xX9x%<ٟnuk9q]D‚$ϭ~Gv`J}/zD:~pLvlW yfBþpd9FKSM"CtD&m,է!g׭% P>'1LJBE.~32ϥe* C@IorSH\S-lV ٲۑ5J%wBjO".,7G.WmMCDt $CIҶ|u "Ԍl ْ}YHRq )jÕikdct[? ''g]Tr, mcn{9勇BJoVZNV?Y x̮M!#ctrK*g62tq>%"dxT&J+H n6.h}{{u_MJy(>N)^ 7cJG~gЉVg um%o,<É<{Sn&jrx 'vf9=>Sbrм*A*Gɤ ,кڪ2qb{|79959jJά?@v +dW}Y ld*_jmy)AAx$/ʞ7Dw76peMZ|3U1ƝjHHie$wKv?ԱĊw@s |3Rwv8  `$AˈTcq @.{[2Gc WDOVy?:.nm߸F*c9'ד<\\(՘4r$3B? g*vrۃ^xy ]k=@V"V'iHUD y0,L[AQD ۑ[ O fhv?bTU,CT̝R8/ :\R39:ݛb~$xK}ܬ'Za7Swk;#ښPϞX~ia0341Ѽ&YPA͔CFbIߣf]];`fGd^ Z\3He>7sQ)t̷nz4‰N9pR!n NsoP{ʶ]ݫϚ:bp͏&Ew&$V+:ĠtJ\,M_wKD]3wT\aEApJ(jk /hp-,lrq8Gh*?_ >/j0al&səjCiLj/k.7VpZ[nj`fa|4eL=k1psAΠwE.},<}zDX,A+{k[S@MU@b\ҧ[6C+_>D.H,$țEP>'`1rݤ&x+m@?Lj!"yֲ~RͨNUC|28&LY=|2%,B.| u&*˝y GV1}s.j kwN,֥Dna=Lqw98r4*ݴ \rBRe`Mm Ʊe hF`tڟ6,r3pJ ]’ x sn5`(I#ʪ!6 u~M1@w~.mI6\Gl6rNxB Tuxq9d4 6B%Mf2+(\MI?V1ٶWE_~B22~^2A+š]|JD DP(h~%T [}s$o8f*>zanM^z&quo\hww#;?xV:ElqEѬ8 R%T51D#.z>+KS]@o|3wN(`)LW׮(1!s9|aA!r7kqTF#!8a[rXφ'1 u{~:U'm}[' 1hWP\Xt ˉ7-LhH Ybc2^`~<TfHDz ІJF>(|tR̓Tpڔz+{=T-J9\!a-;. 8"Vi$I D9?rqd( *'^O(b+&)N1w<^^pNɰNvW[| (O*ڹ}shtWkwWPbq^,`\կSheZ9!49X6]3v>J5g[ql zl X.dja4<N`izMFlsF%Y-Ʀg<#UdY.{ g5ɥђBrTԶ-Y#*[ʌSDj[UMA3?o'-i3+&7/ǔ 9( 8,>Zɴ+Rb.Ƈ}^_t! W68tå}oCJs; ?ǡ7Kّ@j(r 8&9llz $g1~ݖZLdi`lV` dD@d ۉ UdX^mwJ>_UL#|I@"u_x$Dlg=EdjrSr\ BKsS;)w90zG űÚ[-1o\uݨC0:QZ=6˒iwfM_L˕>gj#ɇ7d *[ Q8o0 1yV}JMV{5{<:N٪+o(@U`d`|#'k_Pap0=stHy`2pփhk5j"@GFb+&S!t6Z *S#p0`1*3܍%^o|d"W?J۰ˀ,Pm <xwɸ t0"pagDsA$mE)ru:/}e։lVU/f+*;'Ҫ'k%uvpp0u$e\A/Ϊ|mG^ N NSv ͦ!fOdp YOU;,:$ĚXT?O[RfOxp D<(#EO{ 6˛sthdQu,oߪA۬7mpӁKbf1dY,ٞpOp.GVA4;"mSn::px 6AuJh]P##ת5h `8z;jG\nVE5~ttK^HX1Q@Ȕ5INkw{ɖbjK cq(BAB6BKo#F LEmaOrMML"Rur5W<~p9`{Üɘ^LKdbf kt 6c*&,7p4$&4M\U"k<_^;Cbk?Mw?~Ϗ&}"osPs@b.mQ,ES_L>tȪ64BQ(+>3[Jmor0fo} Teメc5Gic`J;EQH@T9}o,r[:oz&Q_洊$鋓m3u#$G66Z*s q+ nz1V_>IWHث"eK;e>1BLاX 6LTnn@ZX;ǓVT:we5eFIӡ|^BFȮ&8^=UReDl:g~I}? ycJp}rZ#fQ舭wcUT7;q! ID= _3s.GŌ,1 PE/Yк3VeiIv#:D^Y+n̒ب >Phxi'~X®+np޹J?BY\%@K2Qn*\uϾ@D1N!;/"~sKF);o{yeiawOW/:qp fEh̀b]_x*G$+FC?b9(wN:x[ z`4>Qxe <l{ٻ@\5q]8B qZj։Df0;5`'2QYEWSLg=I:PqUyJH&3,ew`:T~;pu?j:ު'$`e7<#&(F ň٫~˩f<2Ǿwgg_s Ø 8FxVG`3fosz<nghK1Hvj8-9ff:_Rg̸\gvΞ̪fOTor9 |vt"Hnt~umշof`w=r$c{Xy,_}laÒe% YBy`2;xQQnkXA1|I^4ֱ;]ᣟ1m T%_u'bF.-9ֳ8lx|A~PH`|b uSh']2T@7ɫiR!PKͻ\k>A Yr'Ξc5-Jc޹QjRlX/\٨;u0<Ac #H\iʽSAz}4[(ZGKW4MfU߅}dW07UqX{WMl4#t P@ksTJ8擘))Aea7U{GZԊa5!\D[ `ɓ_r'8?|"HJdk {|!IW.7<@-ﮚYu` 9#nXepXm P@l2?^KU~>(<")cEwFXZ.Lㄟ `(螡T3j trI1tݡ+[su}~֯3Իw߮amp<| &UV.K20ybPnEY! "FS%{C7pmN7FѰU'y48&A5+6x̉6'{#9,Džy*3^z/ZI,(DD;BxV@UjZ78Iv/˝~ ͏0Na+Lw(xIuԊc9NԨS؆oZΪ6|:Քi.D#M~vz;^jmxuYyWxR5tt<8\~qCGreBNű׌ j9fMղzPmnKkSlW6ƧOG]jؚ m@dfd!g (#g9"Zr[ㄎG)\kpf8uPt:s񩝟?J):Yy4/ϭK6e8b?#w@@5[ S-Zii8xPck)ࣗzSp?L}}Ol#hJ[dxA&9UE'8L˅܀;^K؍Ոһ1y& ͞\gtYzS߫zFZoIG&:+::yOqN2Ќ]csK QԪSnڐL@$!6YhdRNyɄnpdfQ5xz,j+nd"NXlnˢ0]D,xNεPhā՗qzgu'\Nv0 \e&q^Kӄi ͪl:}F*wVԘIRK g1!EzS;~Ӝ!\V;Z‚h3v8t >\,6@ i6tJd4 /UUV/|$xɐSb&6\C+nۭy2]V5 Mg6+DI۰?`zl қL|Q̂mGHU.0ţ5Q9,.v@V]{M|&q;iz`;^3?/ 'D|:y )o62pXyf/cEx +$ !`~G4e.M) }u}s[5SqFe5Sn6K{[Vԕ,5c&qWFyX3͐wO}v dh:7VG06;"?kJ-r(.B"\: QD Z[ֱQ6.<Z{}{|\_DSuMX6FWBft(󉜁qP}U_Hyg>B.|\Uxଥ6 4kԚ@ehEBYPUq7,khfu>!w|봇wW(!![7Ţ-;L]r0B ػT^{#9-,lFb`w\BysĨ{CċykY>$w h<uY0P8qf|*{yhT8Gd>q|Yքp9eQQ pᱎ T; &@NjX0oC]j#XTͲo\.᣿|,ŅƢcB 88+ uofyHYˆW,E@k^),?-IFB}B1! Z;Z+{.~4^V MS7g.K$um](=tCuooxǾb&x%,Y.;ۓGk m`qt|P^\ >l=a|=z^7\e ;Jf־=}[HO9)u{1H&$c|Z߆eپ.0Q\X/9` N[8)m<{}{k`6K>^/7.=ŻZ늀筯Bn>⯞+&ӀVG<.|:XG$6\fxVѴLg5@P/N[ 8;[A{Gj {-w7ݍy)Ubha1Vbko*b7ݬ iq7~ʕJ_~6Od[Yq'VqkvUjh<nr[S Įilh2۪ie/6Iw4 Gd ^vI1ԦFAx +e( 5"<| K|Q9:o&Y?vp/AUI?f6LohpWAlyZ{h:!#{%Y[؊#LdČXQW syqƃQ2X]M9,hu-<%&x? ѰzǛw=NG_@aCw|˥5B#(u7%VGX0>˱`4 L~ ܜ5߸ S7rΩ+|U/z1z$|ZDVFЂs5حziPqVˣE5 NpxUŐt*zs&ޛ`kyzrmٓ޸ai*wn@]֓VY^V@~O^rr`{yoê̴%p:?^s6)@,>ȈOBn8ی 8ɳtUl),~iyfDUS7T =N:{oBy g5ỵV Ɠ3oQۧLK!,wAF}I1iI4/3ܪzOi?GT$]"6q~TMİMS)Nn]'M QVvQ UAI5E֥мi=SE9g6oKx)~m)F vB<: <&tVNjJrsz|ƨzRqN[շITDvYΎiG]N"sÃQ`KOtޱ ^-A,rP1bdnݶЧp9ZlL!5>^ФwSSo!c`ShZ-po;eu;/%Z4㑶Ãh0 8{< n">쬠0׽5&3fj&-Tv=':0fa;38[';GgffHDgӡq.YTkRVHK_0{9ވȣ<n J ;iA?]H Ywx1QȰ:~'Bˆ< EX``A!ᴢa7AfX ֦{oCr6ɻ.*;:*GW\cC8[qqLx`E,Jy:M2T4 :XCjsJ=?K􇝣b;*'Vl zU "\Arzb) kЪXJ`q./w[Iud?pYЁ/FyL3͓1e˃ [iC^W_s-WWͮ7vK|_m_Oh3h~N5 t:]k|ѵD5iƚ`/( #gn Odݩd1<$C1?oUclEf!IPxpz;F%q]sC p6ȱ&5յ;MnmRsu9ݵ5w_W:ӃGQ:e\I&ί{~6_p;iFUލщ˗҂UKFDF7LURy!uzdC1#$:ym}7Wllת\!f췫xF* %rrGΕdԛT6DD7CAWS̓c;n ~tOyCZG&q[pʭ+j[#\/jR(?)LY)_Y0dLΏs ۵8){gxu0|Sb"ǒV֑ƒ.|OmmD:'Mlzx#o~+~co|䑇}Ik^'au'V*\?W y'͞*RJ'?F+@t/tF,KPlŨL^V$%@ lE o|i l]m5W }7XUhWVx͇[&n?DUa.c?!H9XI Dh ^ٗ> B]oy}:׉D5fûX.LwiM1}l֓X=iRBp˹ZHS / rɷJ%T՚t]s!V\ ^rowW`l6ሜPPDfiJ{0rsCC1+jOUd4F(q@dKgv[_NRd5wwQ֎Pu@ͫ҆Ty_U}#6S`H# SYVLF|>=,sᯱFX`02 \a5`)PˋTJ׽Mv~!hjHb,*c6G 0 ^_8_$0p$L0J$M lҢ^t6.ouM[U5np6O?LUſoog&~(K,۔=c\[BD*+`gj^RxqCg  Sn?\q:thIOOɸTrKpPԕ%.`01Y/k}ƽw[wJE uS>^knÈ7L4~}t6 1,ӗ]x/o+jέ>ooKYp`W۫~K`< 'J쨿o|) <~&AT"4@z`6#uZ-]{cPs)U+N SgOU Qb-$o4|VO"EC<^gn9XN`U JE㌆<ߞʪBaca \T~*2-ZNd8h!s@XH曱Ub@JI*U2E -u&zc#"$DL=xCNu@J>l1mw~uZ>UwA/YƁuF |b7UY,T^,\!lcF& [is. *#>5XWQ]YUcSDnI*!A,Q^@: 'lfh );´S o>($؀ 0XA?sj ¦I*dVؕ E7bpk#xOޅy PV~ vQ Jc}cnR8up #"8^-me.Mߨ f)Al ~RMRgjZ3յd']$A[(pY&:fz0jFI@2Z9 PX!*fXEJӮ>w=_VWƧ87F ,eϽh=_>-}Fp`m?#g.~ 9[κNs:,&{:%֝/`[7J#& 3auXX;=M\>flRַ@ k_gR 땚f:lp= +fÔs}hMlUb$ IWg*b H"y;ߋeW<5.ZL1,cBlAx`A8!iCw'm'v}uzWKkIzUn3so#HNjEh~2u-1•42K̐ENĒxmST r*(>V#A/xǩXPZA";YZEqYQ2t?h̦B1k3 9B}lpeՕ0q(|( aYi mDvkPfeFf>ueDyd2(CիbGb;-/1ƅZ/2~k1wYQndn'<ɡTj ~wdYSs[@zCL 'ƥ`%0h~"lǡKI,Cj0J])G#G٤j. 2GnYk/1MH/U-$eËF&hk1Jf3Q5##&ԩ$KLH*]NXXjGګk &f`4SLn콑S3m3,5rX,8 dR;=sz9Us&5^7O*iO?q5D"$vS ?}מ6g+(ym6$^[xԻZ TW& C%(IȤI~ 2 X]byE=׿|OVkHV!} &y*⇞&PJB:FΈt'4 M%!$6ˤ!u,#DWpO)Hlҁ0f~LLd4KּT=7*[j$L4xo EReNffXf@+ efj_݇믿rJk櫓Ccaey'sU 4P]}oZ/|NjI7oО&Ս2m9AT1%2PzB;8QXg}u K;I|c׮CF^H\ <(dk]?Lz`iSdpiwZ j! Rkj<zwe.S"YEMKlteCn Y,-:j%,Fa:7شI~͆Ae!»@J a]S8pv q%<Q+ي-2oIsyS7? v'*te0F擹7ki6Y"Qgk&{:!BO}5􎕗w(9g9,$VuV)KgB&zb wbƓ0 ۓ)!)d'SԊ JÂ)*lHU hjIr;e0`{mX|kNWP^$g('2O&L+̪.I"YfIfD$SkW]gtTrUJ,1aISYqXHe$lɗpn Y̊D!ɑ&[uV* 7Ï^.uQk]zwެz~4m V}D3 6ehB*Nb[I`E_VVW&mWPqTM&ÝMm~s%60YG뷛ak6jYe^*0XLr\(02* U: xuQU5?!d]u*aҵnC52- ski$IPRNN5`ΐfXP<1k$>2`KNCDB!+midۃ&Mw_`\W=@-L귶GZH Vs;{&^:KrB&K I@^_)o(sカWí+Fi"m-@gMPnh;]L䱃%zk 7e$2m "!ԡR[%DgؼaH׸$Fc -9u>Y263"C~hh1EB~.3յ1_u 迁#B"^CR i RrIO/# YL`5XL@fSDЄH;QsT֩, +8VGZD-jwX_<~I N/ ,꩟-}{i + #I3ϧjٛ&+Ql¹R x8juiFi_DRw"bG]<,$?E.čb)Lr9 `֦W9tWAGX] b@2r^aIAa>>w7TrmSO꺿Zv2HYeJwUwWts7\yovO 8%1](EП]YEaiy te"X\ZmMZZ$Yt]nT,/Jb&d^7Q~ [b"% ;8 ;. HcJ%eD*䮪)Q۽@Hz`rVRJG[~|۝OZ]:J=gA0a4"L≽k4m<Zl<))y{_Iim؜7 l4LtUi8,(s$HwxݳD`njC-ˉA#OzyZqCPf:M+Sr# _F/ a1Z*8́gtZ@*"3Cn}<eبvI;v=@C|24.=יuZ$w#i!xGqs,$XIA=ZT֌܉qG4! ^gY OW6޲4jyk3z kU|gc;i ivJ. Lĕ)|dN*M'D~h̯= +%p/_{EAig2-7 ZSa6gYƋS|(!3]ȤuwʱEJޜըEP쀟YcCoٽҸs񷮗@jvl:60/skYⱩQRoJIfQqB?94Y5bWl[HjjoMPig|{>Pl(LpӠ) QH}c gBt+O@EmzظLgI:Ey2 tc3Citfg1SԹ< hmefݞw%Mbn^$B/P&ᬔZfWcJ*ufhӭUDԦumiޒc8|B\84@UQL![s%Qw,VQ5~UVq3Ql>!+LQ >4 y&ĸ.qقs5u~f& <:7C[V@Lcz2 qU8 ҙ X)"Ê;MF8Xg xzU_v]Sev oUVX D P1F9qxb2S b4B88pgZWS-[!eAh^ufuAN%xmzqf#:wA:%:H_J!8 )5#H@],ڜ.@]sll[؅˨ifƤ*`s\|p|Y/o`1$ >,jvWflt[Dfs}GVM-UѴ3Q^!IJ3e5Q'+c g*`*V3n=8u::~JRۡU=8faփAHu*2D(ZXzXcڜ>{_: \]>g-eG˅ES`ItdjPq]vZSt]KKY[K.߇K&4$J@ma,Hhi>]ZU+ &'av36ǂq0Y!kEi۩..:k2eYODٲKvck4ZB/ o  N'&yYJ%KҮ(SW~id,AGtu6(B%%ˑP> ΐ)VЌv5D)Ѯ?ܲ 4f:5qѮ$3F! `1s*ҘE*N8.~Fof4=j yzc2ٜɄ "c#RY,'2NtoF0O  c5"Z2pX%#iDXGhsGAZ*3I:xEOd [dUFJ"'$!)2gUl|8ݴ â͚% #_tcψ%I諄wvq)8ȑNw`k(Ů>\/a$9‹f'w\q0 Z_yo2 POYd`DX4@: MƥF4Ygֿ[t?QQ8\J[?+EHz?\(Tk K=^-R fB9M$X*(45F8X/uoFf9l˜Eƅ\g _ CU=KOvŲ:3cKMew.;eER^ {eKH K+!Th[v/*"ME2z^{~ә]-_K; 7*2I&YŁk"R<{\ O 4[L}\V5Ux~\ּ18N'E/%Fs{+\us$ڹ(suNπA$Z!_CVJ@nEwX.I) ED4(B`aRx =Vs`=Q"qW0^~/M]oݗM&، e)GZ S`vwY:CQ0< #8uԵUTjH,SC$Y9؊.~z@ؚvqGK=;fqMrpi:I 4$^U; vT:FC7FMج7,cyCp~ҍv/YvQvT ).޷&CyW[Um|x&QYf z@ ~BqK ig1x%*j.8 ~H'+CÜ,Hd6^\5MM_S(OnzdF$sYϒi |AzpxKCm8f!b X溭Y?"ޘ\sqK[k4t=9 J$B&ǕM\xX|އ;4)V7!p&)]qj Vr+ZIu B\ idJ5 Jã2Xq\'y!eX&lm›`f=7oF8mXGzdxmg(y9^6K,L0 -EpߊQmL;cWb-u=[-_R3EgCS/yS ۹FC>gh Հyus&ope4yD1mS.mlSghko?epPe`+U>rxf8emڢ=mA6N`-d| J23͹ $zUF9/:@.oS}ilMN_ }IF5!]`oKT9Q.ӞsbP ^* ?R݈{o=cL2?x_AX Ll3s9W^s@ЁQA:oâSUj.ڃ.k{{OXX2-Q>8t8H [tbHHM2Ej#$gcmNX֌ȅ̖ьL#g˹1 9Gk|| b,QopY:;o*EC:>sjқ_Fb`t\SFG=>HVe]Ar|O+G-l:X=`jrZ\dLa5 E:Υ@I@DJ1<}Ŗo2 GxPشPrڰ$ F0s鑆8g}CG$a0 !XQ?)۽lk,& F_F]}K{2N1ɇBxK`RJR_deW~c_2F㷋?^GwGGQ܇D6GClo>"4UF 'Kn7(#O`=l%j{ 7]n-!8&ZWPz=%nX-lc. Wa2 yN03jj=ҫ3h U!k lQKDveb ;,Y-i잋w%[f -ۢ"+ޜgiw XF5d׾ɺJJsI@`f!`Ȉc4cUA˗Pa QJ0Ȍsf_ZԴ2M#U%m[RNzSf\R[Doϔ؂Kf>ںwmc9m̕BHV'krE;MalIӠbǫT`2G {B7T"(@1rbniJt;Ͼj ֦̈́hS YݢY+J!B &8_/$Օ #[G tw{CU~ sa`ඹ"n7&6rμG{ 1!ɛL':eVA.lњl،/iKƂ%x-,\u?y[0}Qtχ:. λLZs3d4wsAd, v ,~ij<x qIވM$w=v&9~oC`\ ƪrJX<|)9sR'k+Wr4XRPdJ/Ȗ]*$La!Ԁ0S ^C GRS{fn c=zOƒs K(Z#r\ht 6&l_A¯9!$!"96Sh%rBbA~0q1G.HGl4PS| V^K{C*ǀh!EH6+4{b>+;;.4`Vͮj:Wst0b ܃-# #nkw WLan]<_"V%uqZ񴝂!guk-tqGđD$3$sk2BvAR),9d2C6Gn=qObh xmX`R4׃1C!Eu0`ʒ:s7i6qHX  f`j7ăF#C0H 荈[bg}JBR< EѕȂ{iE1"?b #]m>wn)7Fi 3^QE *9V ChK ,d yY`[DOڈJ;Szf.;#4~Ce njt8cšdy5.`DLЍFΥrWؼ(k_ds5mFV-B<)F`5ݴZx0yq`U'K;?pXOG<О߹D\"mCW]=f<IS >YKQk`{-(^?|6!(Z7[  ,mdTrkDZR%x!ʬ'_bT˜R_'sМ߹ 0ˉsmK^&ZHE(tedY+/ pzw_G`z[0/6Bo(%^~ds6'[CL_e n[}7,R]+Ӕ'-V%A|3~9inK+-/]J8!{- ayǖxZ;g~ b!'/O=yfG ?$N'MX~I!0Pp</MjcP,$(mbM`^?jA0vȀYA)$| Yq r ߤ6ҔawksFcn^t~񱝟-P'YM[VP#!9[@~!1aOX#"I*K$ViZ"oܼ2u/^q]wDIz4!qfyb3gX b3f20_#/|ZT\4m1ae`8>7rNG8[~ޱJ~(}Rxd_ceEMFlL06ZnTǗ8P$:mUΆm»>nÀ->بK_3*Qw٤ots֥+[;$ň qCmmq\pȏym. R7|roq\c5v7i ` H!/1:!gYE5X^gm- [rDE気<}|?B < *%Jag4 OH] q+ X(S81Xl{c Eq[Ԇ+3pD7RG{NHZ7kac[v.ts. 9eJ,Y+:0LgHRJDrnXήU K!w&=R5~m_nR{c+ya54D!ĝ[=sa'+V $6YNڦD: E .ͬV&_~M} сgyR牖FTTL~]D)"m !nǛ*8(z;/rH&g(x{ *I'YRTKC*H&tK1"_mˢ[z:j_3}H lYʊ[.EN&24CE'A1`Een#6#+ƕcNzn^x;7X8kx7k?}3>0/ڵE$'갷qU!R, H$mmL zRx]-[(5[U SH浤xWj(w܆tۺ{i056_# ٺ,Qx~c!MBVǙ, I>4śFd@sSSJЪCu*_=> hA4\z$h:gT2jzˮgj$:CJ;|&I`Sz߅ᵮ<8Fkl˹(z+7u+,E84>J@4[È.rV~NGwIl27w{&O˹ެpH*ԕC[ MeRC^\w̽ !c5茗m2[{!c<4<`E,!:$E"w"\`況-  ]fu])xŝd¨%HQp˅G1Xd $SiVLPżLtbU{'୮[TkÒFMm$VF0_Y3WdkS$Qb1u"of7+ZAT^`:y1HSR /( ŎCFjtBhf^FI*cs$i 5H6W݇k(f'iUo489'2w)}o&H g\>d>Jkl?Ì`9S> Pv1 )<ヘ`1`붻vŻ<ަ=)5k7M GoO_޹pdlb>Uդ'_q~b\ ؕ`"s&a?Ԩ9eZdbtjTI/@gnbnQQ %z9Q!΋u/RzwvȲhy%(r[KHR#چv]\u6üF\M}YZi~-u?GpѨ]6ts;x("1u6Jh)8 pEx_I3ۃ(_ Bo;3QأńKn  ]GkobLu ,kBCdt*)l j%Д+TKyTJAHl{E#¦(=S\]nZ&a*ϋ 94 VvEeb!MG02zNP,R^4xa֤{Y^Ӳxȏk/jlws+wج^ۛΏm֋(:;H>|f5 =۟7WLC. gt,4y2‘Jw̵p^^k c[R]bDJm*E*6u'x.>"L6ê3)z ju1܃;2ɴG!Ŋj8˵.o)%kœ2UHyQ#Eu}4sks(sBuNPGC=,1 s?j#~@'8m,VFA"2p Vx*y~?[L*&Hk)I0)7}8:&3pH Mbs  qBڽ] Q秱׾<ֈJ{(eDZ\pAM|+[5f],MlfU/>bJ6CF":S7QlSh7ϝ+K\=[CGVqӝKU)5璦 t3Kyq%:.9W{V0FZ…iBl% +7-yY}  ?W^w~JR@x%QPykٱ,Zg:=Hy8I`_ ȸz9J2uNds77l+:?wd!1 ':bA]4*(-rcY|ځ< 93_^%k(H)+d&#Z,-gs,οf0*zM * N7;q15Bc9iΈ0 \L vC=98qRRFDla\ʨv+UU}zNJYq9ppOc\%fWsrכɜ]o=K xC)oIv[攝afnԊJ6~yYFXeXO]n9RVdti=9/\%kOu/b% t#?wږ LaŠƍ 5gibfWdr[`AgX~x]Q_tj0k'uȹ`]9KkYwp LAb0bqM@Ny%غNTE/PE FcD\ZB17934 gcb1z 17916 33444 xK,v%$l MtKD+@ 0),$gf#"322"3DU,$$$4}FVIUM$-QE@&cf}}}ݏX֜c\3Rn*Rؗ/p,Wm }?ͿWǡ_8c[4+{||l70:~1\ Y4uۑjzxgZ"TL ej/m=\bLsdgzSc1`Ru" +U*%%7K,+7o//ߓoݪW°)eͼIqqςDcNRUaxBܺwc^ Qk-#uŇ$j 3/?8vya8G A{̄)qS ҫ5Gd>fnv9j0WCrPIM&)DŽUyćean?\r٫YRȃlet"XBCa/=,c;ރ?C{?>< մ ^wb񾹽xalOYIqEvo)O}>~_pIy30<{>}_(Gaҩ“2*~4A!M !h䬙{{of:li[4)F%e*P1GӃdD=d$õt4^) 5ZaLq1+w1T>L/%};e8"<ߦYa*Jfkm< ^AQ4wEjS{ /Sg˃Fa Κ>w!oiPbgJ V[^Fw )SͣUna~Ndb5%>5hb^&tz~{q4hu^eX|9Hw(VXa Xv-v:S2TmY Zʬ,a .e?0(0uLm /{9NpT*0p^51R6p8tʶ(`~J&DS&7L%*8:~`ci̓lM]84(8qc2j&yDXCC~JiP«WA)Lg1%+LHDOIO}bPx5 uc:ʠY;[H*g< c87h`]ӎ~w֝pVsyΧ,>R%U0UqKӤDžk'_.k꣏9òCfj. mVɿayMsdhf?W$_ldjdWdQ_~[$9ĜƈbH A g=?sm=i_&G#:kq xTs'W?|>vkQRPMC]qQ+X< ~J9Gk/A)"]x,(Q.ˊT1Ij`AVDvFvn׽>\١]4 *2Jg5!%$!+w@䖿x~@_u "f 9\‘J -隳d4.Z%7c.R4u<&w;leY hɂ묑BO8izF@s(z?KLSwLYt%t# ϲVoyu@0dx) 0@"Oo'j꨸|z>%EE>E`TSN!T 1 &gϿ; Oe_<.!J*%KbތL5%!!"Ȃ2(%M$u|laf,k0* i/TL% qX5G&V<lN$ ОB  u}Uq{>[Aݳuq _9B'oFxËGf$7D%2nmuד8\nB`ӭwyA^J1 ;nCy'.c|xFе "%Y?:zm}8`^E ؔ/gXmTЀl <3`lTN;\b[< Դ-րOw+P]N \xdϱig#a~ W İ^lH!^iuf>nv\L\o׈9"/[?A\7fopyeU:`X-1ea L> Z?Ӹ >:ٻqfvJo8a3j)\KBI-Ük}0:,~4m Tox+a*q=Pʽ0Iq2I4v!^:%3$P1I? _0 i{6<2o7~X`;"2<>&="V+*; 1fݤlG<6X} g @d䀷03R5ӵ> =MrkŁ@ [ R4HaFvP xvMak6hNT,oR(1MU;b`@ <rȗ3 $J>@+92 ~pGx0Bjʤ6oxdʚEw1 s{ T0fw I!W>)}{n1xއ'(He$*9:Ewr5=!M^ j!{ MVVGUd$BO!͠YwgOb% 2BgJ:Fe) s xiHtJt.gU੆q_0Ґ2I\vp@p N[JKSIrSHc xRdcru/ir5aS1_vK>sP#h_%g"O"SdAƔ4<q A-)cTe@*¨@ b7Ȱ]XdΧn僚PҹR. 沎YF!G!?+<9mcm;v|Q_2@VzbXzȌ$QވM`nrs}YW,3H> 1 O菅AtLnsmwCAԷp2iIGZ ګ4qڦFxž8~li ծvtQ ˄?#hYmT!…x:ldw$ކ:s8)$&ψ|s ONtAZ4aNp>h"X!^2 :WsC' x>[3>v]>j;ӷ !V*WAkH)@#^:&xs鼹*%5<3AAQ5"6g? wô?7"Yٺ9Ne䦂*⑀HPU 0iņ3 H\}{{ܢxqF#TIMjR֒T*kdy0a|ڙM!҆g0C !u/#ܢ܍QxY[hihv|? }ϕG"4Mw9=ή(A|MY0LD$K _KIB N0(Cu2:Wv I2V)+NBd$Վ݃/y9Ml`wL[SM).$!RULt@OHaT^vQɄuvbRP&)H0{TYzA0f>0ηqK$+0r2ݳAV4*+2مmQfQ5 ?0`LjE (r)/0“7Wςb6fl=]Yՠ$vU\6T ^ ۝ K@i:42abTV z* HT)[uI i c34Tp0#]w^͇=ג!Y୕+ 9r#oW- K;j1+^brF VG|ϑ X9Lȋs5Tv{ܜDͪ5s0 +x4UZAWAѶL #[ԒTg^m8% [ 6!kUr NtoP/~qqeFU B(h5D!5K pUN;N;\J.Il="f(`V]h2 rfzUΥoi*c VCid$.G%/ 3k^ԳtW͎8"=]7!3E CȼKzLqeypeov^ T>O6HB°a ?'OBjޘqO/ݽwۺ{fz}J+tIf?55 ,#B?9Mb"'yH!kSGFR^xG##e=AA*>:t:@C:#ʠ/fR1ܡ~٬@uՅ{f LBXƐ/0E8:1xODɛ7ОF.oA嘡z&se&ЅLGS|]`pݶ,ӺɆaUa- fsf H XS*(7S٘ܲ ؝ p T`RdT2C  gI&e )?$/O6u}趪bXx]P.3E/-\TĔr6<7~&a)YEjX$EŸY_qDa޸ݢ&1xad]dl8v*l( q . l wp7z{:zvolׇ\|DZ@*XgUpJAs.Z!n!$o95V„hQz΍^5!V-өQ*}=uR7qbzeϻu;T:mY3C!h!(B,?|O0UQg veO/'3.lѕ*B:HK(i_JHߜnwUq#=/l's/ D1Dawj/q8~j+v{:lMQ-wIaW/. @+%͊zj d0 .|v:]ebq)dhPl.&8*%BHmJU6C:). v^v@X "'NW\e.R8jCK;O 9c8vni+ 0` ҂\I`0/Dmz2]v,om;kqz*?  -<+d!eܧ%1kWxT/2=(.""RiI|j kq8_*ߙXA"Oq:C8'掇[*8_uF8*t~RA?bݼf'\|=X2 UHݠ7HZɧT"w7dip @oC&Cې-n K\58ދsfœ耝7**UAB3^ N%mхTw>Ke}L4T@,pX,7\Q4]PY%l xsMfH_:Nb hWLM6Wug8|B=]*2q ঳tj͕~b ٩7mΏ] "he6#($PFNz^PUtaW&he t`u1 5twGWAEڲ@ B솣3~>ƕK9WTfh?xrL{/ #_s]oOEʇ3;oԚԵ#MT"0p0]b ,rqͬC?5.Q|41H.FȨ(ȰWsLD&Bۙ˾Nv/LCA? T^F CCf`{w`WA-.Y4>QaF5g@ufG@RA@d=]%kV6D`UTIE +(tym3L6i.Z9@$^ueTI'8@=]p?4̞^R)s>vڭpK)sDւ{^S - -#% m%Z`94: åB7":xwRMC^Ѣ p!R9w0 yb{v? YrHz5CFD}9a%Au:?nxĉ=2Tg&r5"[0^Dg^+_U<XPp2oܶcfm%3;t ,T Pͩ>*Ռ6=݃'\bj+tls"1a0"h `$T/[9֜G`lO#P-̅[- ݰ`xV^@h$3\N7Ҭ_z\9) y&F(˾OCn1Uswi1 #O0DAiJ IeOTT#EtЫ^,D*[sШӑ(I} Hnk[CXt +:<"7l@GTgo) ꚺi9eHc-Ur*4|0J7VW=ŕ'R _$\k@S-VJ5LR][i4 i+.!1u|y8eP%";u|WԸ=]QGoaxqy,Ϫ~pDLGz}~So_7?IcIk30?^d#5OT\~'tgXh 鴽7 [[8;Xap0|TP bLS;OgRu|['~ 0 c<ʧ0@zPޑ̎A\o[) k {p\k:>h ~~ <48l#^tG_?0d XU:F*/RL;JM<*##0 Z04ZR,% Ïptu>5ZHtZt 8* g{d 4a@eG>ix@AJO M 1hod!IT=g#ụRF`PA]RcO^KGǂnȷGˈmO**atږ F bvC(B\eD V:@00@ R,ȬS&UE0P}.Х|w?y-tfs:T9ay F}+jB` Q g?|i:燴W}8/U|CB 04x/ Dx>0UyCT!MDZu_<@ A,8LA$TzmAws>M^0t/@<=Vg P"تRP뚬R=:cNL:c:etA[=gtcUoJ-"O|*у^+=?wuj]Qm1S=r}84ĨY  H(#`dJESC "-O9-XR!W"RV u?=݋7@F'að߷q9@JAu|d̟;k +YO<`#c2t25fh ^ $[=h#Y~pӹ,RH:T@WW:bZfi+ZK\IqI9IH&SDTgEӡ'A3k#%RexuO9x/ 2TM̀@#7?t?ԭ{,۽I>0a$TTў@H*Q;*2fD( ǁK>U-5=>pI/tWrUa@H(?c:z[_np<("aMr>G(dl4gY@ECx]y\ ,N3;NjyIBxA37;Jq#G L#2U#6RH˷!e)2ạix$Pȟe+g^ JЛaKX*2h# JT q=$L̬䮏]K>GВ,x)ȒTQ/ts".5]\ |j-@6$5?C5`'{_]СɦȉOBvp)?9K}+K5&$;qގʞnM(PBNLj .ƀQ/bw,qs ,sqx<$HWR1X\խQڀZ{ U;-iȩ!&e'dl]ݵv8юlN"R=b՘WT%Pa4$b2ڂ9*JCF(q%T:E6.C %lJ>^]؛OB4:U%ijODnR5f=լˊ? %]E<\3MӴ'q_Ϸ iC5ZSҢ@"hߧ;3 6˙oGڮ/1GZSX{ha预n3Ņ}VA LXEA+])LOn0]kݤΖχ;0Zwx]BHl11_y3>-s wVJ#5k"b42:52BZ&kz:rh/k)K PV * A80'*3Ll;suwֳD\+$PȸtV(k9O3g+Xm-~fP&dHς@IE͞>-QNE[w10Z,xc' PR"!h999 )2_f8"׭7ai#1+<-7z[RiZ/+U,Yp"@<54UeLju둮 -[i!m* &j1j<R'zeڥ* |qWu.S 1E*HHf SZ }4zV1b;;0`qQMŸAX+,)/T:'n xݬgbH$ڀՃ-*J5P%>`af8tJ;c环1OH@jC7>(<ފ׆i *NG)xM]$INR:у ,GS/oM@2nv  p(\VTUTSC|҉a$6ngOݳ_{0jDHAś/5|mt}WXT%&%s)G y YeM-Bo77x'E:g\ r,9)MykO7]i펭^sT^ M'\㧅frmqNq!5_Ȱ*U2k1 +' alXde5x7/)蜢3NjoA@C!KSuA BO;C YX}:6đ=A\Nc>>)2l(,CzmQhնQ@G[}gP K ]V *`ӶV xH^C|jpFmvSɵ{κOtMIcB-VqIQ| f/vpl R>!sxUpU*F$k_S Xh g`bO3ޞ ~ƶ=M歩 Ƞ A勺3/gJً:[Ζrאs͛uX-z bUEG@@3o  x.쨵\ۛoatxL73 n1BLm4 4avׅ ɛԗ%ɨ1df 3g>:78̺/𸰃Y 4`L2ǵΌ*$hp0A|I46zc6uw i7h&mu/!FCPOzO|:^NYs4[^]h ebxz7t'2,xC T0d;ujז,עRPCttKՃdK5rB[,"=^`5ӗ 脭 o,ՁIP!).&iGm89QT}s3_ cvluX+2T|4khw69u Xu`O~]gإ66PCUZDڭ>}/j#} `&a]i%8pKǀ̠" = T:U`x7!4 yjB .qO!q*pԢE%J5jEzh3/]&wEZK w.'!=]uP(O`$AV_CĎJ~ϐIOODl3xQ%Ay'}nv%ocT;[pyH*55ᅊJſѼ @54q[u&$0@# "W2",ZSliTf?qt K>ji[@< {$ }S)-+@Aۺ|Q[tD̔0S>K vU%t0C.(9E^:}:D7&uOz*oU V̂ړ$NJ貢IW + SF00 fJV<Zş-r&uM#=jJ[;zqoGy9H=Y d'*2" R056kmŭJ)(ih!]v$"@2:Bx|I;hX|#@ҁ g(t̘i<Ϊ۪;rx=J~ I7LrJaGx}͡SSoS¼ƠWE "?G'}a'Epۮ̹ߚn-ShjOA,2?Ի&w,8APd Yg\xd냾ӣ@W@+L1('06Tߜݶ;Ӱ^=+D{X2EۿihxAYJS׆銰mvnڞAI\X?*}@{w>YIKΪۊD>tCjF(gOKљyU=f~^.QO׺ C.7ag0s:"dT"J2>z[*\Ĩc%=elrdڛTP_AMKZ_2Lu*.]Sp2@ͪE^vY ВZ0j4H+Q:Cg.zpՖ+&?3'A"ǠY}<*=(öoi'8+[4;o?*IϜbP=!ϔL%Sb| @o~O*;^nb3jpB'KWeL>ڦ CЇĖw/?[-f{t?>+ I9*԰:3$"`p2ramy BT^/rCKٲf@> uD"݁?Rտ?_d7n\e#A6$4uu>XEmL >"$G4mZ l"P*CV&f#H;?E+k&yvN>g,nug8<>9J J'זۺ3ݟUu Sg12u *.d{gٛMg{-@*okfA6A$%g&9 jbJ3 y %d@_j> }rhs,9 kCYST K ೚Ns[^WDQܮOQq^sm#G b&Yno`n.qBtKk:`5}0mLH@As|e 9ZFE9PvB1SxY^_hMӜn2tv+92!P?-dWDW͐+J+|wHvNj9"~/p#'3S͑}jAm=m2j*n]}ݵ۵Vh%@d,.]QO¦iߘǝϒӺGHaV E9Bb9g-R GWZFw1KgH >ZX z;iKM TP8BT De?$iOCa/`F_)YۃlḻyruP "|b[l/((2<9ʨ<܍i}YB|.J6%t"ŋDq&iB4gwu+,/&://f@EQ*0.+HLֲi4a0қ暚rcy2Sc,M\]cϧW VWAFiD}=ء#YM0oqo~:V)HfXX`Hu`x ,8̧MըkԶa {D;hj(9"Q,nzBID5;y$y>dvLR7LXK<^õv;q LR jҀh>I{|yy`_{߾۔aY߻q޼>!/ib9CjMqUdmv /4Fʍ/M`g  n;v+ o:e`qO >D;,S UQ"eHs99*I~lǾ 7ZbV& 6-2E;*}1hw9עI5v>n.d ] S /H ,-}{epJ%"S+Dl&"FQ+3#c8A Ճ/{q0`9`̠On71yB64671 gcb1z 64652 375631 x UFy 4 d `n=X5Hs5 %njit]ztwu-c; B0 K^(12Ƭ@;{W?nG }>}Z&_T()*hA-+';'\ߞH)?AZ36 (YɷvhOEtӋLoOq5xd^ Rmc%[SIyILJSRj,q9-Hx#ȃѧSјq{Mf<41D!+/.x*JFu`Y9A2.'h%`wbҔrגvH ? n-JbV,ow_ F}3u.Ye HڲX,* &̨k[ijt{8uX?5Ԟs)i+zx`fd<ag{Φߨ XG8n)}&FIIV&'&+=)nsJRZ"ihpa*&{<$ cGJJ*iZ(M R3 KR!: R ;K7JYǤ j#bO rG7+Y)PU+y*)ukv>'}l8,.4h%!(2!;xi .)ɈBLn6}[,TZ?TD3f[$zLOc%h"3cyd suP"HnҦ q;S#sZ֔,d+4גepM`"d5,Z'Vc˭>WG,PZ.(.JS4rx&*q2UYd@]P.W 6hr3¬+`6W A9d%|)Y-PK hcx怅 kpv$lmthf-ug+HouuS'=鮇Ao2[`D#v{i{ѹdN\ `¡. $ A0 4XF!eK.lNfn ~:\GNj#a6( #eU,ѸRf^9}ӣr)]fە2T!_r%B}Jؔr$1P ;C\*r̜ʕ?\5˕2%r!Eky܁s9+~jgŒ wzb+Hsl͢ \J,I$\++eUY$Ȃa!iƐCwKڔHȹDj9+JȜcYF!X?!d.xDޠ:ib5LNʏZeqXC1LG(WI87"vB8ǂe8|/$IrzXmw~fYh@Cf-. DZKE]{y?BF+up:İ1&kv&' @e@-rDQ{n2[˄+ Dҋt0`mYE"5+Pc%KYm@~QgՒ ZXg%^.ԳJҳF\Vl,RZд=;zAd̃5ox ,.kZr/tDް\JPx8讌ss修D:krg```m^ayi'4g$\("m;\ݥ"br)Ø4;>t{s0s0L# _2qp+nYoH\ C6HRF%N$g(EQ%WeoW"-6J&Jي  -O2KY6!Rc!C*`+[»pnW4U\#Rw\r2`T XaLWjUmԌ :]kv=ɶ)h:ŭß`Rx KC"u>B Ɠ55G4v ج7[agәuE`1CV:iB9 mf@ˈ@8*Z<1qU'#Dkm8G;.z3FpX <F ֶMB9G͜%k@8C1+Sq1f~pt&Vh.Z{^g~D.ֿ%-݀4LoN! C+ϩ:H Ts`TtL0Z.3Ʒ~.--ݳd:mΖnS  L.$5f+;hdvݮwax,0L2=.GIfr`(qCjfv='~` 'y%s)k&:Nl ^?X殌qd}FL Ef5!x ץyH3 0K Nf7}:z7NrV.7 Q>p%sKN84 )+Y)㛙}JB-+%j^Գ꾁*ш\Z)K.I+K YTh2-@T(YeAAD@$Nt|uU9B%+eUJVeU2_d@ %oZC&>ɛH*ja& g9đށlN˚h0M&n;%!$%&3R_0岤f3\uEVK+ZKqhc_{y]KwcS@'!%4 c2‘>ݖ#PFCE[vJ;'BNdc@g< U V4s-RhI&aьWLX"^$AƘY(~^ՐV?ZmՙV<fd`SmCRHpׅ絭k YL,q$fj^%Z ,Pk[BmEԶ*Y<6E'h[`R2H]FN>ŀ&;TGi0 ,x\2xLiP@2%u ,B܄Լue]AAskC#hx8.( xΏuaiXG)7y@1(lF9D~k!?RuNk/5]TD7΢O;'r<Ȗn=m]=iunj4Jڽ#fcHP4F ,bi\9+~ p؉itJ8 nvfn0I,8ٻ}NL櫑<1k4& o/IL; Պtq<7.->1GJ?"r[Xіg=1T> c0Kn_-A1Y 0{[n. P` BPB dCa0JABVM(o6B*|z̕`baZq- swdڼ? D 6ʳ&) NU(9!)B_m3A8-4 vk1*OnP#pEmupSah(x0N_5N>-dC)mO{[~kcvL!%IG=:%'j` $m85o 4D_à 7{/ԗl<M/ZAAoL6]&7QYF/{,a1^; ksc55!RȥSb3Y !\)LS)І}omC IӜ4%"2BE) O8d]tj,K l!tzQFGa\pHq YhwNj 2]1.KVG`Gn%r;L! mD:*] D/5f@(x Y9 B!3 Fڬ. \A"&#pSfGBm"|$TA,u)!!2i.G ebM,}/ %Ӗ|<Ȣ(`)>Jqe-pĴ~Z zUv_@(N^+\2q NnaH$IdkhxU=s%`2RMm^GR/_gH%]r;KVa 6p>b1B:3"l!CtA% !O]zv5?푗+Ye*o'˂ZނF \ %x\^bV+Lag׍;kǤȢ=;KQ7ڠ:,3"4MftS N |)Hr:!hL15"n'9ՐCmBGzFjӎ.F]GO᫦/ڬT e˫w5w&ShkS$8Wn_onmCj# ԷY_/֚,;Kl!DK!G/Y:,4]* wTb.pXJ/!vya!q2& Pn9M+V Կ׼\[xf.X.J0X\V $U'"E+_iQz<ǂэCS2nPq,HM(6Qg6$#:٭j Si;hyu;vz<$&.r a9ȁ‰2/ٹW3XJzu|qxJ2)/<9ϸV8Ҡ!!4grU".٭дd@."5㼇x!dV)uX!~mVԻcWk39J_DJzΪ5 #ִ/ִZޕJMiiݒ1~ YqMG zl㍝i횯^]$v"Q Xž*Z;5{]uQ߫}ZꂾW ԧU}rk^"YyE+ܲrJ{ṋ]Nb\.=Sˆg5>tƅAdW6Lˎyk $Y}?m5~C+:[lβAyb,,'99Snt5jdZ-q$%|ND@^y@"SXPFJjfâ!$Ev+xNf</ւRW0afJko3U~k_7"<y0+ Su"'IwPT`@: LHsf6P"=|<0x׏sVE k}/>?Y+oxrad!lMٍ7l(>g s2V:*/V b>kwgK>{n\p֦ޜn6NXhevZp HfyVK4,ˮy?Wz}mu@ccXSȨ0?E/,̱7T~k.Gv[.+<,(L>?( C NC?!Z,ѐCGH DG→|;kl0A};1a!"͂E s!$ ˝Y'lX@=/ɍza>%mkF~q+mLET2\XѨ.>h+8dro_~$#k7g,ςCI HM2Qf2MĘD db근r@kwv&$H1nU4),,x3hwܸqT_a m12 1sPeCAk^P@.WϾ&;%Fd<~2P@~$8S1LYr9lL, RpED_Ǐgk/itpw} 4FI˜ Oǃ.hAo,8k_z|G:'kGtw-ĉ%m+zw߾ ] mݹd>% TDikS!UWoTOc`A JZf=(8=ҿxu{J[uJ(0P'[!lxؗz[/KG+-E \D ] `4`zc5W\$DʉwTZc@mhRst(5Ѕop/:mG- bL9d\ ,[o"1MzȎKIv8[p6hJSZ "hzwϼ&b 'e ^L!%Nt>a+?cFBiMD=7޸WHFBtecS42@P'3vn;_r(Bh횃کMHW"!QobI*|M5 m )mS]/`F=R }=04"x՚cz7s7߼3W->oAa?>vBA1wA*]1)e 0y']Z>Cs^k&!/1R@?NƂ;Nc oe/sjvt&;a?x\2n9DjoG?MV%q-Sd j8M  ouXu V= X$Zo&Oɷ5X[a*UxV K@>Ph(/1c^]+ }~뵲_pmAN-ڢ 'y, )i`zmƐ%d^=aJ- %d PPdP- 5ԾQ<gY@w~ O3Q}70_~2s+Ո*?KRcg]~O>:̇ \h,#%y[@a0xMMf0bT-Z]O~'S0YE-(P/P.:[p'ܔ^PI(` NkA9C3p/Wv)+W:KB)j?l9ؗOVB1/?#')-XN LZeIR17_ Gw!Qcŀ&^7LAiȹ Id씨A{JH@.?oEsn37O O,+EM|$$Ȫ#L=0A]"YQ(M !C!Es";+]ll~TKe!!eZ!UXi!? &F_[УXߗ\Fjf_nnBZ[-N$L'3!\ 98e ѳ][ ݷ/p .Ȑ!]f?l ղq*=]?wKdž"F(WC99BbZ+\c&m҆ )/($FQ&Rd"d"3AkSTlqaύ˿yG_w]]񇋡cT+, Mrib@[b5/F7ꚭ '~g N·F|#_xDPWk+O8~'.D4 K0KrUEm &N#[y}(2*@n "qI wpb'#B?G+cTW;gʯ8kM;lbAZ%"ft RF灈 V&ݫ+c~:ܻʘ˝֥aQm5$1) .a>ՎfEJã+_^ryӃ|ˌ` %bor+Da[=+u=lOEk7~Q# uk;wdoN=908-f #eQ>mű?L1Fl$irLH{we$%{əs1X.(۴'`F @6HTLF1x8aBjuTއɛy=C5-CR٤Nz&&SkhL%c"c,DXas "uGD>:$hq>b~!s&s#( s+̻ u42Lb͐%#׌HjQwp 3qy ]9-R&Ux²vo(k)^ 6a+al$h8w\jz  GAɐH򞯤Q߷iQY6&'79c&%"\b)1XHIs; 5PJY3J|6 rED|Z=>%v﷯@ɯuŤR($7 7;ʙ00xm`:@= JUБ2ٳB)U~~vLmZ1c6K4U:A!լu K' Ru!c+ l5#̎gu4E Dfhi-K.B?)_ן*X1㰜I 9,1Jg5K^^r |BTѻ~aܻ}?}N/!(s.9A:a8G2S p">pz׵Ep*?^-@k!Hk ݠ.9j Q1+ v8 ,֤AS`mf?v)kov.` `t[ JQ,s8DI4-8&wwrm?rAoxo<,l\;Mr|"PzmLy&9T$^B7dO:Ӭs X bčW= 5so>p&#LǫftYtZ^{J$ܳV/]AoQmQQ v 3  K E7 XcX~+ #1&(!jNq'88ߠi $Bp;XroW#0CL #+{;- n3EpDX[ՆK -5Z`߬t JsX"`xْ)ˢkkOwL{ڣWD"Ɵ_{."j1.QJ ! G‰8>n^j4zs39uRm(r4xٍW†P([GȂTN,.0VP, !&FR'pC0󚸀DJyjgIVFu1Gks)_3GxXY{GNKKJMۓűzw!{&9J8)b4A.* ߿|N9l`,ߔ & k`|`DJ+Ocg9t.1~u |+SaZţeq8*mgH .=;s‹,0< <bok>Ļj@ {:ZfmV)3R':H-8?wo#.l)Eo䉸T$J8k-;v\;ɥrx+{Q3\)]G3&~,s?|g? g~t깇+{}Gr!'[k]0KEH#>A51;H~VŎYYxյEx yCח8=V'оfS Tz5@?5dז|7Gᥰk/@A;$IQ-D`+3eco3Qtk8dx~Id Ø(/;0;͑ge`vBo7|<H< )i|a@$!/0/^;+z#_ا>RyῺp=0H`VM;!->`wkܷ~o L)l9G*ǼPejJ |?1Tt!gWC-p@I2RBS#H2w@Ne >E8ī߯[)өdJ B1L! xUKu@}p)V;k-AS-@<Ƌeݍ0R$%iuVA$cƅo#!qteP@x#~zeRGfRg͵ ( ^H*>my!q@V>%jk2-AFr ZR3y!v$[RXTKE 1O}eKm5)L& .;t[GRz M <ry }ddi>! ya0—ܒǗ ZOOh,aJHŮgLD/c:xiaf(Y?!h8M|xoYF\fnI'&̢!CԔXRADj}O wd0]+t|P?YFXM'׭0!WV% j0w=r:#J:+f9g>y)#&kkw%ƣ\.7r@R.)8LtX"r"&QS@1ϡß}ffOs ޙSWr.&3D4\SW();/2WY÷\ \ct >S!J 3:Z$@P@76嫞GO8!flqKw&~oId(AǀYudLZy"I\2My>HLӴ4c7^g[do'mn>* 0V 8} KDYⰡKjᓁXTE|Hz3 >N'd|xXMø k^D ʦpBXdR`HEea [X>PYK^/uST}?,xeVQj^_Ћg!DARtz4 {O#Z&dn 6O>Ll}+'_Jxe `gJQʉ_y76@ݯBr z_ = ;xyr' @܍haAT)yF%H C(&DTa ]aUitOA-&`bJAƄOG@ J ˅boj\| {llrsLj2k5t"3buŢ%ҧ_|x9Niʼ.yu.g2zrT ,DL^=뺄9F<]iS0ٙ`X@Ú\Ԇ‚Sy}HA9hϼfz̖XpxQKk!<^ᶉ[3| `{3WJfq&h0f1+" 9Ź{8lF ͸cD+1Hd%qw~g-)d"WRKKMR(Q^N]&؆ߚܾ >#UIIɥV (dZJ$8"ȝ-㌎Ec cnjGiP$U(0 y`U),gsqvv(*WՙR=$;f`h/z B /4w|c2(ԉ.S 2_.-pOkoc|cVU|ph)5"wh|&uTW4Ohn|?K ߜX_bitާWƾt~c鶹w47w/yN*&![Чhі{fU7ԭ66}~g\c:|/tgq{1!w(l#FN̍T ͧ^˗D/T7. SI44[=^V0)nqF.ʀ1^ ]2sѲ$=P8 37Ąaaȇ>tG5l УP!dQ)=m'T ^޲.HO k*A)dpG훝fR.z=[ AIMDCgSYܡ7m]:GM6v9Z\Fkv,oم[~֎=*:J>35&gLU6ѱ)ޑ>v Dh;6=4@nld/n :N粌QU",%:NɬC%!*Ḽ- Dwe Cv4M)W TtOQ(s)A#RvLIT^+.ǻr:ʈNߔ=$M{h08 eFkzN6o瓕.RRBIT*hrq\Ŕ4XPmWU?HVcҜ5O]0,!^0~fhsNӭn?ImoaXQ9ZP F.YD $ƅ v tbSi8iQѠ\n"dޣ]Ň@qfk^rFu!gGVQ؀N H(DW( w:o掠76P5888LfSyގ cNq81PaͺgY34ȉ*pKwST0! !ީPGԿ;׌9G~S̓'v/UkcpkQS#1#$%2jxjGضmjǣ2l&DGe 0l*C6?.K_Ɗ9d(:xm O޿8==2>52@o8S.lDfn,DɃ Q ,Ē BO3d[,Q2N~Dfx]"T8>;912fFL7>S!0²& F49.[ִ_״xdt*c`aYgɄ-Ap:45n檰TWu4Y&~Tg/58KO,_Z>~=kOi60՜q/1uX6ڜYap 7 [S|P 2n툽kث>t*ڮ~0 5zWjcp`0ADC$na2Z-m# 穌v ڏ,1*˞ bAD9Pcdet*C ;Ŵo7.,7bQƕi5ݫ8Qʱ=me-Cm۫0~8#Ң)]VG }JAZъdP3M)TZ0T'9tD*6z^v/=sqq]f3!Y_h?!~vR`0B IWgGR͆Rr[.6OWl~s۩}bFG'8C%A!r>A7J4|T[KekБiX M0̵֎2X* ف (POcpEVS;\ z%tP+0f0^ 4T (wI,%9b2Z<,x-y?*'0NJq-J-_pJ} LN MQR6'ѐ5$*pθ3kps8kXRۋBwkW77~)&g);z.( JBbɒHE3&%`/OA$u(%g),FFrVHY*Be)**EY?۶.tRc&s̙>W !oeRk%f R>-KGy7We<@ %%2 %YTY2 FYZD.+4 %Jޯp"hyXtz%ѩHl%. .O.P'č*q[eO0|(,w^AA'dNTthNrF? +CYډ. u8'p\ . <XFX!,JiG\EûW$D{oo{Scw{%vH՚TCsS㜍Ώ4.*oR.-6Qsɨ@%TΙ޶6)>6>TXt ^-PQwh-! 8qwg}p' 蟶y><|#˒J ]eeN'y.PY ?8JfJeEdԀdI]̩3V,#;k^U]rlЀG')L*B+Z%q2_|o1ރVRgG6Z5Phb3dAƜd@2'*sƅnL̇Ǵ]áo*¥9~Y,++:+rޢVbcd.DM|6qH+HZuVlvMa54`T%";q„t联FykLos%˸Ef́Ϲʊt?gVb^@%IuFhdNa؛ԎMvlg? zm%hjr\3?9\ 2Y<Np1\X:OPR*ݻo=jvVC>J/`љJpc;p VGYN<qʰ%D@,CYN7n-ZQ4mm;ͨQCK+s. ׯ8;Ϲ"d*N{|ڡrYh7/vǺZ/d,,ͺ)y,ef%iD,K\ u4.jGQ}Kr2eL$|SUP{COwп(ãw60yPun<~>yzP7""Y+E hzU$#V ֥z8P&`e"\|? }A/¦g~߸i0 \72߸ TaVHAYg欘hpe6ΐmyNYSQ`Y89iߴ;%l͔cf&81WE-FS!r 5*cinrۗW iЦ;Z, 8 Yr(`#(;dnu}̄l@4F&f/K%-qi2[PZc3}UBXJN Ov'WlƯVEFJ5ڽ/݀qyZehlƿ9Y`Jx 5fW, "coqѫ{Oi'"َtq[Pnja@y@R^nY&gAI6YU:dTɺDXm?u_ !{S]h/ߟLh;mm pd btތ1+e8AXp6ςuLV8_Iv]<-ٛN:e4Hǒ`9$0̺bH b#w F ka1Jn>WZF˭ϠTh4h.(%J xm~{KBB"s%;C݆!h6 ̑ )X ĭ&2X]YA4KH׬KM孑̧Y1 W̖甲H63~XʞdK 0:U*c)" ULq+DN|V-'/;d?luq66~EKWي^ 犌HL Y:=z!*73+t . `F(d]G(I[E&* +4W"u>JXqYf&Ŝ +² PeJ^[㭌RSR]߼g\+J}1g¤ެdjϝ q<{aD:qKxadv슜$#C:{g(ٹ[.}%vhk@Y;2X,+;%EO!ktww< &&`4,T VP\On]"£W. Hζt՟_uQJX&BQ%\ !E"EQTTBXh7߱>o?CWI4:sIb{eD\ѷV\wR|t'Ǜ'xՀ^3o^*HDs$XP8>#MMVhpQZgJ-URHQ9p-hh1+pz߬;hB*C~(eh!_BĐEj-"c<J1  ]ΜS߰c}Gh$:7`EJoUJ 0&_ݢGϘ*'@E\X1ԯ .7ꟹWP+F H ӱ(R&u'Koi|aNjH]Hw!}o!~ƣv('u2{Ov 5XAA~=Z.wm pDNXzWVuku%aWϝ39)Yy 0|FVjoܣv-]w1~0mo!KPlV" SOoSVsOR/=[/lQKYxCH%2ƢZ! }Epv۾wvYe, [w0}uP?2F^On>n۷?s.)ƀEM;4hc1St8=;[VDFI`P}0%W1Bleƅ3%̜g͒R֮uG*&SBbK %gLN0h YRYx5%2 欟no vke6‡N9>Z9)$&U@z}G޷ƻ;zeRr .$l%3F-o]oYorǷknxŬerH͍FHRN}bwb Y1͘C2Q:^6ol"E=2/p OŢA\ :ChƸ,z.-u@7I6I7c|zo_n^~?JX.[CF&%Pl3(BԒ pve37\"nr335:>WA}+!).t9^P₁BV ſ<9u I@JW37rǠ10 ^G7Y )%w\X}o^ *3 432SeQPqPVEE=[Ҿy=ӧ} [Ws4y 3  =JJ2(,q~L-*JȞ%AÌEG2J&UhPd#/$){ןxbw/XFPctp6[cDTTꐒts > -N.T$5W=Xkno]hn|bhŢ4Ӕs@FiFxJe(*cZ}j=q~n%BԊ1C` J "~S,TXa'n8n\oF<˟}퟾7_zsOh?[t+{> "\Z.!ǿ`h/ 6Hvsٞ~g* ΗBk`9^s٧Lq-:*T>{* 5Rgz >F4(ndBG%=-y(?=cW#/0p}`w][ej \xb9I!1rKQ + +7춗޳凝˭ tɝ:\K590)-C6Gu#ܪ~NeB ݚS:Q?}uҸq9f0FI&i Jb*n֤5Mzn{Lc#-A \ণ-;>ӳJ 4 lp\%ƘMd`2ڡ8wcK^?zu|ǖ:li{cjn \XF&M() /iLAM^XL~z(*J9`Y!a˴~TG-4̍D|R#ԃa#MAy'y37J(4D9LXJ50F\id +X(s G 3{awkKp#K`]f$c k,4a^r ~]n< -0UIof inhJdB531 ~8+PZYU)T-x ͣT &FƵf&}`ٙE]1-GU*ވ:cTzB#*h+ho9]?rX7m9;{QSYT,b#-A᣽9Ncvz-D~Hke4Bh ѮNMJ\{i5`w܅/[ڡLVIT#PELwNtcݹZ/ߐ#8nMgo/6ύC([i8/a}Юկ(wo[y:ܐ_m6x[Z,`]"8'hp9F$&.q2bd4~8^nN?FmRqZ i6%d@8w?WVu:;.PJhrТ7EJffMROu̐*Lfщjz%T<10H2[BPw0ͭzb܇a@pqȤ Y(9sŨJ9e%FF]X|ܭeo]Ze^e5GSC^E/f". E `ڿZ]Rv5aHqU&XY;? +S'doZS1NOݜ0p'`Z4 ݎ t,5|y0l@ t\icm ,(ԟSMG4ґL nE)#r LMT^2avU 4iC2Hm RΌrwqr*H+ޚwE2<97]ĭ@%"GP6}Εi=!|56oXUl. 2²4x׼w)xruAv2AVo ḣsՂw|;4DvΡ SiLFB4Lv& 1 gG=kہCgY^!,}`[{_R9u+4:< fgBm)pPPD;@P̈M642?nU;z!R %R;xBHYQ$#k|8|?|bZ+т>;=8ffTԓzl Pgy ³j_BJk+7 uמ=KǍD/bC')e d @\|LRxǩ,yIK qpgЈ];uiu_۲S[eߘn ;[~(Эi95?=<2979QeK@oОhcTAe1teJ_ּ|3\z30hӸ2M/ R_~EvW%] =OSSa[R&fXxJ9ы] Fytf^ijFGiV=>q%% L~XG $7W9inTcn6umOp z.H% dL(GP{iI %; 5tq{qr k6Y||{?;{-8t!Kх^*TZp+}k.`}jp\] :|r @{zESOٛtdi_.$|T*i݅_JPR|T|ttf\ OMؑi>`aOmx+Y̆p1FG'ͼS#}u#?]^_S0 [glLhX.t)E0p}n [qo6ݢݱE#\?c0h]X-=w(w62f+@)R;+opP)+N;ۙd ѓ7|}#񵣷zȍu(Ra:tb&2Q 508ڹʱ62 ] cpcGj*TD+%|ʥ>#6/譴.Y6/ Fq4oK G+.h^o۶> B,˜vG$p96Zfa*i4ixK_dj|U"Co-N)JƑJ ⩞E38._Ag}\ZlbT$帆RgYTжHFid !WYa_"޶Q:k RHN=ЀZsDHNE߿(k(cBrEmB!f\ OyE 4䣫.o7~;z^ ZwlQ(ge,G UA=)8C·'ôˡf+Me\r %H̝祠!u}:{{}Tcߦc=wAFhh " rH Uur5¶Fdbf~֕J)Y`T922ɁIY=cJ}%6[NJ&9-ps}&3?=htcuJF#Gd@l^(^2L..ؿe}S}Z?#.Vۚ;wh8TAh30024d)}6 zZ=s{=Xt8G CQ[T M;u5ٸL;׶}D1ٚ%<=ןx[[!+сb=A` km}{Vp}^#D$AdI}J4VRV9΁yFhFu]XWX=_[G۾ { O4mH0kt(`WHȼQ9E橇l2_Uxmcx{Lc?,fm%B0y=st߰u5tHt_t>.9.L_<];tw5;z\.YԀX. :J&Wj>vn}/=!{;+hRm75uѾ>{T-qi.eDxgpZJ~AF.=rf(2݈ꫢ,4=NIZQzi5夡XInBLL3!jŽ&̒WE!=u;rԏ>A~A_˖[o=`p}޵Mfo,3ă~A UVw:[ͽG~q:} jm|΍~7|'j[˛z(ͤ4Hؠ׃~q:*h;{}RQ̭("F'&pve譜$| ȥnDIN_drqD_SUJ%JR+4GPFYQq\Uh"~R^._:uwyy3R҈NIR֠jY0w1W)"Vl3,!FIuy`hokVP}BW{.L85*"[V3>+Dc [F}a=+4‡ uaR{gMM/s98|yBPI]3 _3IC['-n.y[n^4L:w޷i Nw߇l`}-Xe( IwEOF{ 7KW5z&&kdChʌVcL"y$g*:/9 VI}?_L魃˒I+Gd-/z)2Dj (p^|q`q8&S gfXY:)O ܡPVS }ċ k8 @m}I3Nb5W/&h Ca4"j8V]htyH%(5Qsam%Y4x=֑q{GPPr{'X H oYdMnf-M4Sr|o9g}M 9Gc9d4}@]5 y^yu|6.L"FlQ53墄K[DEs4ek]t_}[z׍RJAODK̵Y5耹έ?띙:S,˾Sl{'[h)5⌭Y\41OE e$Tc3ɉR]M }nO*ju={@Skn-7 N9?]Aseھ Ȳ@5PubY)\ZD'KSFU[AµGs[{0_XB7c9Wn~NlAXn)]||!3:D#ITՙ(xEb-RU>ڢg"o]Q)[dOIQk6xN;&9T wKS Kh+/tʹB-{aEGeV Ea6Ă,B BMGl3%\Ө.f'F$<ĕyvKC䤠k5T-A_Ati<q\mlH3za@JVY_䞧vMLGߐ"hw7|b9abj4L±`onj|;t L{^xQd9A@@.7N;Ŋ6(_,]fk dV&8˘U LbT0:2B:@".sI#UH2𮥊L" <ҺcQ"{vȍ+ۜ&|~{iR"bEtqkqh2b4{v1~GL5 GͪҊ BjgEa'_{W)H=p#"q=k9Ab:GaHxV Q%L%vɵF<5qew2lh_u-}J"{Ϟ"ysxDcy5[kbxХX-@0%ƛ|(>XSJN<_%elX`F2rI%!# vL༊ i%x]xf+oZƆ$-TFKk&` )Dq%:rFU~9 ϹF?dUwt B9V.Sn5%*TQx<)lq WFww11;|H-ܻ~B D},) ,d;pw$st Yk4 %`TL "'/\^YB[æ婧;w}ǰ-_|r:^iqzLӮ"+gp!!2/E|sOǍ]wwOZ޷w6V d,/* ipQDqNT$ļL{4jr++er1NgȨL5(T E qPb F'd7tMRåZ*>~V4isIښKتu,HgCe`a*A˘doݸ I^BuTќ,1'VgHr&G۞>w6_ۅq.o'oZw'p}MV㎉d L\ F{O1 ;6~uUxxe@qZ`* (S7+iΏl̚оsJw3cG*cB񜠎4h[C _&*vKyU*ZDǽ/9!d$E Ctq4*̓ MZSk >1chAoN%xPSDԸCI&*s[*чuw﬉>sz^Bv 7v;p;5xcdDͽ 'vEgs Wމj_FԮ t۝=$<8-c})M`:R궊UoM]ea }JܙVT!P#3JaRO%SGT5&a? b~l%BqSOj&0IHK[^  Ho}V`t'6jk9l(g>gV'E4@_8Z*VU[R7_ :gbY{#S0ƆC$Qʅ9!T/ 2(]NWEn{;T/i~M&BhkQ0ƴ*J{n7 +}z-<>xّYtRSKQ922ت]T!y$5XvQEɔDUQ~ME!H 83<iڴ?2MVhe.(S UR`Oj9G~a͌xöD-("-O璼w3Dark_̅O累OORY j+׌ޓB3ivqC\̾)?85?iwcF`eRқ +_B_]m'm3zTT E!ÀCVaVזUw_[qfDJfb TG?qRK}N 3w&`-{K5ykj+Ft0jh\œ?LY3vߜ{ӆ]P#OxT#nT.Hs׮7 ' dIc`D0CL7kq*µ{J~qfxc1 "NJqCThX(~H/4Fp ak]\+i 퇿 7QODQ/mGb]Є2PO$O ['[@ wb>O+ (IGi$O"ZSM vEZh<#Bv R nJȒϰ|v̮ta:xP2$5ƤCZ||i%o &"T ,b: Sꔔh@sRgzW;5!WyɽSON_zQ h-zH0$F3V$KvHLhO2>8Lg23Iz-ےTIy) AhXFX]a:ha`HEClӫ.:1FCTUKRUB6d#h(蕃 O臙whn~|v%l~y ^9hK=<_ ;c9tq)Sn$xfД 4"|IvLv =dRP $ɍpo2YmR8~i;Qun B7j ,eD^WFJVeA }*mz-hA-a_omTGc/>wǕ7=qzj𸧎y8ٙf׆QA+nT:QMn\Ȼ`l!J[ͳ/𠰞u VWfn;e*'ggvφ鉽qI8NJaIj1^"Ϗݓ}gAz!#7 }ذ)C +Ewh=੃ 8kV [pp~rݻ'u!ITv/*YLfΪ')`vj^HYlU"N2xbѳ#R[KykR$ذ/=uJ攃MgDC(tK0?ctB1U&ʥF@C!;0!b 쐢%K RЦJi͕ n񘐴:BTӭ+s:Ӵ*:HFؿ<"Y>>)nȑQoLsҩl!g @#t 徫Axo<>Ф5uWڌQ#AWRXrDt_Tr5 r*F"v , PfF:tcV-vQ3(@JE* -DG2o 'LE"yjA.csxB0'gO&=S''oqpLj U]8|VV?5 V'FdbFlRNȼV1 C)jgw|'s?{hrJBs 6R(Ȑ*3ncM94p,; o~CwB;Ujy,Tz UE2BxW cp(+%apU8m;d`Jw=-pn&Pe(Q*gMΘO_(FW/Oѳ9iƳޱ|cj L¬:{# vpBJWo\ j]Ф0tZ@H\ ͪxs*LC}eoi4噒D`P]_")]CЯƱOẨ>; h+-baL5^zLӢ2Yu!m-Mm3N.Eh +A"d<8k3plʳ \GXkjHj,0_[CS%C!4Wnc4g(SV^f3d":%"t*rBۓGp4K}T*<8KRfALb(V~G8OPathqT-?uY$K4OHl^ߴb4Fc{/yv[$-gt@pNHIC6K9G}v =ne4Q`48p PDLnľi4+( T ^q0в!BѢ0U|C3@MJ{x&F"j.;2tU2jkTǥڣ651FrȴȮjf<S5.)S3gF_\32c/=32xQVi+ ;} PFyV/ 7#ZZXJ1: + &*X#T@ߛWA ef&'jM̔a4gO5X.-g[6*Ԫ&Pi)u<%U6,$wמ^O_|qo{ A[X\tV雳R[<\|ŝ"ESNA@AORy*s ij9*J ) kph<џt7]}on-~rLľٜiztJ%#Ͷ$#i8m)4H vN|0fe]L$kZii1$|.o$t GB2{n)X&!OҤjUnBpeAWaGR*u$pi4b3MCT~\;S}߫翿r~ JMtPc^0mLKGcgײל.~+?b9ax0Մ Kڈ`x:[@ŵ';a\`n mxO0TT$.(7RfHT1p! i`d謔.5e((/e~D[_f)9ĩLQq,bi% ~Eٔ]j{E lupץuqg2 =­Po4&RnxH- K:X%PL-T>w-)] 7 :keMwm}S@Bm0ow Y}eMHHlHh+NCqIg YVUC˽HZ(NY^&k 6kŪ'+ lN, O4R+/"* (i`_=ک#L_߻,cJ7n9׽=lnwwDvs."ö9,IGe.0ZtF{hQM_ =ݔ2~JQsFr4Lԛq=VĆ&䆏[Ӏ R5UIR;*v9z+ 8w ,ԅs IPhHť7PSϧl ,d-!EKsRX+WN,UzZJFAi54Hwajd!s"4BeB"G]-Ww:BPPa3Y) ` Xa' rE5/ { WF7bD(lhcrDŽ!+EJfVlⶏ7)C*VsXF!K*ժcԞJu@ lEZοv =GB_Q2Ht"0#@JU շM9 zW,ݒc'3Іw4IpV+ӺhS3_p]o-GN'5K/=|aU sWE iBԾJS(um(4^+HLqWRrNkRXmCUwhE HT[~L %riX3쒖U W+LBpz,yֻNi]Eq"75U8^ྩ&r685|LX:s# P zU''L`m@RJ#h&)xsm\X~ϛ΄o_H 0{>[pi>'O*YؿGM2TX bFP]ZyFNhVdžQmS (jhe(O~Le GybLQD;" pF<9yh;BfS慥U*DV ;^@vsKL 9(TePdwgx*WH!ۣ_]; U[89Cς~#X%4 u<֖O%̝:$NǞt7M>R'E;RC/]ᛎCow4~>}8 l&fZhbkBr`EHmξ W)--qLζ:̼ K/IJakV _|oϖܞ?\l'>y~F %╉ MYp2aC"5B^#dhR("(ƠXS >"@Glʨ~`@BC V3BK,T"ŖH}s]E%Ddtw&^8>ݧYμA`=y?߻vELiܽ|oj_z5=Ԍmg-qT_U(m'YdzH3$^|pJ߼O24-W M+)3C:\l2@MV h賬4/\"3Ƣ`.D7 ! 2rR|D&-$O"7 ="lGɆD"bI=1]F:b'* BB!+.3ȶU/;~啃bO{TDA^wp^a{\KzUYS=F-\6ЪjH " AӐv&͇{WT \ $R,{ͤ^q%g.B*q:SR QUE.},Zh#ZDB4 Z&uIWK9+ QwOnc_].s/ c}b{߇"oMnw2gjȮ!-"fG^ 8ZoU抹EYUmNâ+(kHiJ`R> OГlwϑ8k7v8C9lj{ʑ"+ETLd1b ݹ1cSҺ\jMh+ t!X6ȓ)t7l'mfk<|rDsJW}ջzO ȥ%h?{ 6ЗQ,Up BKY NxZC8 ԛ9o [ńYŀ־bҧ=s3eV5z"B@3 Y#s'oN5U&!dYfpZZ[p8}R44<\ǜ|uPGbfc {r-S;t0(1.?*-VJbϔITX _KdՅ-v @x_YO@9# 隳3-B7Uԃ Υ) 8m4,,4W0T:"{cd6xJ A{X̟c+[!1q jZh*UꏃK;p\jS>uK8~}Gn>/osL̮߫:[Ѿgc=wߋ7=xco|}ZP?k~HOA9Zk #LFp EQ q6,^O>{`>x뽯7m^v]kGv>;£n~=W;Pv=?r?1 {SGŌ f7ts{ȭ#wfw >9C2FO=ABo= 6m?ZJtk)CdFg>HX3{?~𝛺ބsJ&$Z^H9d N Mp}#^Wv{m99| Gvn{Bo?B,idnЖGvu55g9$@t>ۈȰ߿{zۻ"}tC:&%V3G.cPwsZG|]:[cRFlB,TN`j L{9%cAͼD,T ^;U޴̟v/&-_/@Gń zT5ߢ )SqEU(@Q]= S].p͒[F[cK-K 5J2F(2 }6(wVI\&WҶu^i*LRSSj%MĶ/lӲl-+&3\T1]B>LjI l»edgK&'h-<ς&oqVZw6@BP#7pUŵ!g%tl<-11nE {XSj; TZ"0dnD5 Kj1JAJ-jEcs { cjm wAŅ=hc4 Hz.d5-"12Z7/O}BeMjM.T$o&n9 H,BcU .r|V`(y,ԿvO:OMSj#r?-OW?Ye%-WiYUZè5qQ)+ 6:e.1$45ui9{.쯙Z$Ϡ, k.%NMm>{DNK_B6(ASg@g|vgLRrչ"IGA\+n 9G5 ܶ$ũxSܹ=TRHjxũ>:8\h&ނ[oG&Z #b% UNEדG+!5N҂3"$}h13\dтO"Qkkg]!73.վK _V?2ն?(&Bn@Â."x "•ʭJoXv }5% _v3Q/g_v>}/m:쨊N?8>0&x#n V$jk6FH@7 wp);MI81s:‹ʳnkE0!'VQI lp^w'~}Clml@\υ)F*|̄$Lr _Oysk0tG UG{u|Qn2 e+$RdUgªMwT̜`bnːg^4OKs,1%ӌaik>V\K uI/RsQЂ*-l6xg6|)wYzީ2Y+RwDA-#jP76uzS~v_bs??73;0q]`sM28QɑzgnKn (nμvD?"w̪*6KM[HEUD#.]" QKz딬sͷkͺԛu߿qgT!"r ^Tge!:j !MJ! `Uyq\TE4A ho0*>0\frf귢g6 ʮx3Pi7@D[|23/XμLvd_u!vy1:#)[i&ETJ-L6:;EgEو`h|ZB(ufT#M! `R#\ҿ66W[Nb 37QTH{ncQIlF'(nWZ$^#]ᛯeP5$FY+fs**tbLAYaȌ8 ׂ)5>dѶXVGK%8]?hs (1x,%+_B:Tz#7ˏp|щ-mRCdRǜ}5GVSBwͅ=k:"#\AUOy(8տKYg.~z՛o9FuWo<)^SȹXw2U*\{&fq"%YKIf"緜1G]ytU/&L+NUw=8V38QNXRwocnؘ8mKj)Ej-=4DJkAKՆ"l|8m$ s.c|Ƚ}UgE~훎TYTTn4ē nx*B5NeE%.4=>hQs(OamǸG PZZ{hH-TR$cs_o="Z#;)GIoZR]%|Ӯw[\ܷ;7@X"4V3b#Q[S2/7M,cL90pY_V:Ǿ>K\SjH*ap~QBZCS 3s>/,6&Nqm;(;HP\JpBL?+u#~:gI}t :-HcO>kc+fpGtN i ~,0./BT 9!*yu#s42zF~tml׏Ps8D8H^7Ujh0W9w3 >ၫl ؚ\բB>d'ypm]FdVyD><Yٓ7*#SQj*)QeTmv&F(Y!cA25q`A:D YMF|wwoӽ|/XZe(a;(ni: ( %"a& rdhO>u T8')j=ӌH7;7͇dl]FUhab֪Md  \_n rw {VM<ʨ+wV@1S*=Kƾh*?`dd+JK5rT+8b%3PW WXj8SCL`1NS'}qӵ˓R5|6|kL%݉}_(GD8@QsR7PIe % !Ȭ wn`{m3>wP8lfsSiyeM:!`k#JI˳tW$*r=]zRa"@\ld'JPE$w؉KFΚ`qc\"UCE9 go3BNٷU|fsF2'2Jxt^ SЩRJ?w}.Nyo\6- SaL "+kQaKNg_ ]|3`PfByP#atUG)/W̙P+[:jxL?,f sr|YXػ{IW`=OW1.h ]ԐFcR l.`!x1$MPs.B*GIޱtáca{~LIXJY 963TD-ok՜~$^w-KQL&H)E,N-E 7r|]F|;4EFT[$)X | X@QK(ad#m:D꽸 K L"q̄P%yB87xH*á[wr/KH0m3ih[;fc.T~)(J) )߂]EUz7Bƒ8)VšLH(Mz*f>^Ǎ=ihb؏6ɔeQ"[~;#.i=Q9c6>p<77|$ :yA6uthF} dlB@b9F2$`uA8DG7dRۅ$m4׶E3) Y$++QQ  -;|R (J$7fcAQidpFAb1vni}45 H$ )O0<auFF~@7bn /?ԯRe7I̭J$I88L}SiaC cH)ى؎ζ5lt\f0-ip ;2b@~ 0ex/ ͿW^r(z%Vulo 1 Cd8؈ ELIJd'PP}zz81'd[Hs{mGl7|>CDJ(7OI !A $O*%7ѴpXXjm<v\"p%d;j.&?Y{?h;˸(W\ شƠFie410Z(t\fm@P[Xop6zҏЅǻ>0>p{Gwj XkQsFV+*V! I PV<.!fܫM~S!3 !0wmOeZJDFqPc`-lJc  ̐`3' ?%ߋrqbJ"#ڌ(;pl4KL""Y0@HRxd'QS.<\w>2h)e WQf;$TRaP/(2~Pa}k P y"ys! cXnq*+?vtpzhʀq@ݶ_9duJ*CQ`C. 2AG{+ ib^l#MJ(B(V0ʭJ47Ԭ d8:pq__@<~}6nXb(i'$a8}h?UC4\Bxj,=Ӝ)mJb1,m('%>lq E}s%e;:8NdЛaNibXD1ԉDJ?`1 6iK˗/i g:wmBe4,GBJ G4Zi0Ih2۹=Uaw)P G, Sc)g姵#bFRGqj1ħielU ʮ w83Q5]] 緉|K{ƒP+E-oX`s ')+"VKLRe-NьZ*/hr^/gK(X$i2j,2QF82~~!x$6<~fA{\+˹M1XպdyeF)Q)3FI ȳUSwOXy(YSR,Ֆcj;j.2P 3)_dEv.{|k$6sJQ+Zgߘ aʟkG6/V^b%ƶ+7Ԍ -AVYdXä%":X)I& >1ojG%++@$iB(Mm6RH1 HGVeH?ʐ//N@HQh} E9R(&S7`L(O0! ?a?u h_ՅT<8e(KjT,I/iLoHĒDrSQH!st$*׫n.PW;ȶBSL<4zTG~'y:4t0 n_R#(aIc45K C.bG\IVX$BSn"4bg Q@@ߧ|^wFcAlA:[zvݪ&6X"})u:JABEḃ+jǚiU '* oeF_H2RKLiM9&$eIlR?9)pPywU{cMJ1Hs͕+" :C{z݇5IGĚD)S785 2EVpuUMq[cb|OQ÷gG I(' 91iaDh^B3BIbߞ#b,IT`pVCKi,SE~}Z&GQ@ 4&~".L_̍* wTy@&;>4 +FKhed,\"tELTGE@CwMY:h{:mh3"ь8Ôj-[1Q5)xJ.+y`%HX0I.lLQ"0#l)TJ?sTx^O?whcl;[wf,l"D"m^E X,Hdc bŮ½_`Db^gӾ<\[+m p0:8{-qEm;$_gRʤAo5臊 JEm!'kܔj2$8-]z[K[Q[c3S"#*fhbA0qb$\PpKkm՝;HEq7jIL_\K  Tk hOݯ !0ɶ>JSX{DQ#"MAIZHpCA$A&廿%?VsA0YF!h! QHS \ܪԯ|Q߲"h;۹c[ݦ{:;2P4#D#B)x-z-}^V͆=+xfI~ za\[^g36?wPMKr20Eq"PW6lz:ݫ]w?}Ҍrkgg3TrnȠ܍YN Hwx`M` .Uܞ^*qskfew77dzѴv|ܘz$vt3::|/{Yv_TU=9gnKκ4WZ֕sL_7_jQo7hE*3ܥW^e{:KE˟^^5j=gݫܪhЦ_SVyRoMEq @JMH܉M]Xh3 kH)˺F|K ~G>{NYjk݊3rБz\|a{5=׽V.m_;w x_ows˦dAkg&wsY O6l(Vbf@:<*5AVxJnGйp/\}^ͼ 6('jHeO,'j֖IO.S5s+.wsIݐ'OYih_6_ t{(u?s?ɥ/ՕsK/W?{K6뾒v۲tuy6{ߟ͆ (AGst3i2wSf ZZi"M-ں$g){fr23X@2{ɸ _1LW_jb\PF]3s3W"?}-/gPz.3T7hkP׺G]}pB?]6ǭtXHV~sKW +:! ae+CXV2! ae+KX"ȉA~bѷvU e"A2D!OuBBvEmf)l5>Ͽyr䭲C0tAa&K21v(Ğ{}AE?&{鏽j}m啟;`ۊ xV}+ӿsF=>׊`҃I&=`ߧU,X`'9X:2H0SLPS͝qQiI#9 p`o"a/V+Q O]Z``>0; |: "_䱐de A %X`ڻ >H>W%BIkGCG  /]@DE+--O  It\n e|K5_]XA{IVXN|Zݓ*Lv[}ܓ%՝osSy_;c=mn%Ws5m> CJџr .fPFPLm'~uJiuxWb\X+?Y7oCn#0fS?Pd嗖qnl2h»o= K!`/TQLK9=pkG( ]6U{H-4]2ąCmAOUsܽJn8:DQȉp'8.BxnߟPYI *NU ]Oמn^9҉E.}`AbXq0$hXqq:M^kȬY׺g?<eSgUq`Rg=u blk|mKT|Ye_|لeGɌ^}@p_}ZRpK-ni<|`ƟϬUH*qn{qxI#>2Uas#p9~*8GD_L !:DB323902 gcb1z 323881 1201365 x} UW3&$dI%f&g$f@ &՝â"AZpDPdiQE}yjܥVu >骺ng?;d\t^>'x2TEHl:)͗w';:•xb2fvkڒ8vdFë+NX03e;Hn({Bͥ-(6#5Kfǿ)YRbʑ+s=Wl:q@ {S霬VX_BΔ#\M{_/H盏- &=O)r%ps,)ӹoDzamg\~7<^(+C;أ[&Ԡ55s]K˹l,e-ӆpL0]*+񬜊%UDZS :`*Ueۚ4K$LglP\d(lƽPNXnffa$ܟf<~'/^,=;ˊQS ,I>Hg^xnCg3ꥭ9\t 87tVn]j `zV=}vlۻqӖU=2GqwHo=?O(r 0bH(y?L\r,c| tj >(#umIsyP(LڲɪLZ&=TT^K) U NSñ/&ӀXjh>#10b˾ |dsKoq,C󤳃Keys>>y#~4荆B"mn. oqj2!0%)X"G50nJŃ`Jrz!; "($%:?;K6+XKF x (Ǡ8u7sRm9@8LQqIɓLn'pB12l:,t23 15`o-Cy6`zрʾF1Vw)93?ˣ=%l>y#IN`I&o`Ri6M&3b20Tl-1n>+9åF4/J>d{!Xؼ (c|mg}:  ѐK|”jP$彀XLD4cr*?a0Df1f(t|p- jt G91M-#6Mnm+i;kclg}h; Oy}v}z2_9lu2: g:*N%FDGL0QvqK'"Q_8 W. s9O8%9e""n_$7, 7 vE0HōYN5|&F{*c?Q:+T/X>OT&O}X76uw;NG{6H5>a4>54*NM\:Q?hC7#Nu펌]Sc!&e$多N$k|0;_rAks=> tsgKYHˉzJs| '*jnF Dp4+~w*Ռ. ՑnOdĄfBA.JQݬXia,CXt& H4d@q1z'ݠL"?zƻ:FNrM]t @O;H}# :*76,vfi0A(|GE4MӞFLhG:A5gUT UMae{x C!- %Fu_Žu!<˙n`Z%F7KkR pBSkAF.'C@C;v``ǂZr-Q,.>"zy~%]ѐ=4=lȟ4AQ"f/ 4aCc?dmDQ#@-ǑB4<6zF<$Hl_֟׈dG,$0D5AɍBC0PUl(A!cY=zYtCヸ"Y5+H$lFC(,ce=hVLP*WD.c'n"V6h)sz}7n{&ʈ6 ǵE F%d >MNkZ,k0mS[M tnFďpPNեGa(tHcTPJVİ{5guyH +G)^6nHЧ2OSw Q6uj:WISS;FhKT0SGpmrc D6!FVSGd3W) *3FߒESdyʔ4BMCcfh#ʻBU /|U|JO8sĻWlw'J< {ɽbymgLȼ=ND4 u%}s~-ztOcpe4C{Gp9aȐ(:u@iƆ1%Pd] `|USbK% cJl@9a!8yLխak,X~YVi*.o!ѭl',Cm`h-En%qӂ۝dpS`rN a@5se}9PsʌXA ɤQLEJl\:`z?0pNXrc`'539l[`?$l45~iQ:bNSb2 "yH i*)-nX hȳ4&/G,i%snh~pHpקSz}Qo8ꭦFA1Ȅg۽%)U3L?AvmVsBd  i` ,F5Yv`{~jH `Y&Nd' +-4l]xUGB@u>ІGG`4aO L K2#;񄂌>Ϧ=d.ǵlOVd5l|Dxx~{wWxG8膏K*CD  Q7h~>W( `"4d+1.2dVx\\qk4tU[ &]@u1Ƣ٪i-*(+G֊pr 4i2~- L\fWXMhjb_tM%ҭ+|+3v X 2ҍ&r&BH-ʪ%aSBNI7v'Q3#PL : XC9yD0@ee(WF' \]llLݐ}a'#SޚP#3UvRj^ԅX$$:,~[vNHqtf\Ny ¼K+EWյԜ;s \C/PWEML+ao=i`䴀CB ݒȼ szgh{U0`at?u ?9ܵ%bt2,ª=|r{"篆@%*ϼt2-Q aV= N29IƖ\,JͶtC?fUͥC4r9$}Ytbd7uFhDpW9iрʊi!5Tqc$>)DHY=lvwuՃ|$*dУѻct(*|rCQ}Qjc1 q^oryX3"t]POI]^yCz!Ѷպ7炝Mu;3ԍaIJTDRy UJ*" ^m vvjbmZg*(N8(c!gyvM< <i= Q+hY o6FdISX  ıDorH,dNx@ĚN\h2@FyMū)ht V Tqy XHƘqEdjՉiϘL*;*x5RSvw`L9m<`M0#/Mb8  0Myu@ZrɴyLzl}]ѠM=j8#ƓFr:`BJ,)x,lxTB ̘yH~O`$wxNl>aV;L*]WhT9:db'!=`2<[!׋ʸb:dc:YR=z猱3BTjuGފ""up> W,.llOE6AYڒ.C>C{a2DCWXnM52SAwRgIFxw2c"M Y5"#pAGMbסH@}U:zCPV9kу5ˡaeKc1Ifm qD#{a_  Gxvٴ.1j̒O'bcnx 9::yC2YF!PY5 jв%*U7ۏ H$h ߔ^R[.瞨\1nC;oZ~pP1~ԣ3,ݚ8 epL 2C3bHenJ+iHFs,.&4 CHbNùGvjX hݜgG+(8;Xy,fB) X >*ӷqޚ!s'я\dvR͎JL=Xʜ`"R2c"Wpe@ 9xd$X $+ɽWUg#úZ<']U[bg#XYpUɦ¶Yqkڲ,dEÙ gKZbuh{XIT/&U^T5sEWd0Rdb5nAkVu\{'9a!TN^SW8Vd_5'<:`+aR&$>^ U4` Do `i'Ƃƀa&N%-c%>@jIDAfd0]ګ\LDųǹjF]u ʴS 3*ƉqkI\FjnW,1 ুMSqGaZ)kX#S= EZ(5Fjdn yqZ.?0PQ9HUJ!OJUh3OrGdQsXm /z%75q9#OղKE lC+sݸT4kſcZfDqDn'N I{*WXZBAvD.rh+?Xz\ɍlZ[-cTMchkCWY< yT`TY] Q ҍÀoT%7MtO Yr9.zlz . ;(KkhL.1^ZIAAP3%>&A1@5 &fG#SF,V*ZK]WS`mؔa}ƈ`>ȑ3x A6~IO HKL\! PlOca kja4+wKVUXWxfLVNwaK~2)Cx2h +ѡ*$.s-xTx%IZX0]/kRMȫlnOz!cDyB]SCf9qcOe' ⇞Svih=#?pn@8uwn}tR85ze!ˊX/5oyްY#^.lZ]$xD -kd亵2Z-@pf(BkAj͕Cwq3*$9J7}NuEcxJ-2U_&r2kDuKP_#:e|mY$PTX70f+h=cj-bY:p{~9yəR<ͮFU&\'Q x9%7 Xb."u6n6ԘS).iJ? myg^x(@ 7N&͙@@#ltƩkǯn]u .N^jլ n!u]V<~?.9@TXGٜ": 524.ln(0 {ώR-`[V1<;isqe_ĭ ¾zaNt!"@ T HE8`:6L,4H7Pw ӦS2Rkq)TOP!>{qne#vzx}H}ڿf4ab+%Z\= dLGؓp8־'4롋\[/@ H٥NvD*)fNaj9F.x!J00&T,(cxl]$hU5шy$~] h"w  ֎ܶ ޅVb8*Lam,UekMjbjƘ6㵆jXÁL cRyܫrPXZ~1rt} 6ZjU={LE8|rvc(b\MI#Y#*1JmÉfg|BnEY@gUlk\- ,,GG/7xSk7(]Wd/?\fX.{ֽ\K&-i\4^6L3"?I{Z{ /کol{45I+u鿝v=ኻ´yɯ@'ajb}Q O߃)y֜ \mTo&5?ZCśLI]4]w_=a{-Ė g6wl9\_|$wcKů^6j?VS["]s k>&3k6/w4;*K."qc+7pu4/Οpʺ}M'99R\5F'7Nj5aQzbjr*ҍŊmHѳWa8`lWpBǦm96}m37=y[Ӧ9b+R8@3'|5.+WEw46crMwVl[ 6W/z~kwTD Yx)bCX+BB2tvSׄ2S $wGkP_L0NS[gW)_UC?giZκR HZr81w~ME_k e7QY?s9KsF2KL\oMyc)D?VjWMZ? m3豦G*@ԋ/SBWU>Z8Cḩ5*<4 L?jiq'/Z" O:CM?%|xń׮5=~rܿCP/S߭mȐ|g5\pmJ̟MNkjN?pj~1-.^Ї\no7&Y?ߧ @W' t~1GtAЩP\mS\6{ŗgʆo\Y8`8 vGebe/yAsχ se,{h..|H|ǥ~g>L}S!/{_H@5*4cY߹V5=e$C8 tGqϩ﫵y 1L{ZT+SVMg0 :lW=`o5vl kXX7|5z=5Z9W Wia﷭hHMګUޥ.޳|ѾP ӛ?LC9tLOWD͚Ż;r. e:PpٱvG}/UJOD%x{n>iόkG50 ڵ]à{߮?| uԟ^46@+|@l+t诿=MֹvOf8b6#o]y[^0䈮;_X\쳔SOz"@>G[ ~D0A E.sSnLOcw`:Z&Fϛ5p&'\< h~0رt"oN7skn>z~džPjAԬ/ 3 $i)~1-Q#nm.}Kܢx ͵O~kݿV}SnM=`/> dkJ_ lx~g_)e W5BfeYWwMX7zEj>Z3^G8^ѐ m 3*n:BvgՠeARW]/\:?~#٣Έn9>ZO3󷲄6O`rw>ۿg"1BaxXKn.>|op#]"gDY  RM^,DUjS3+~eY({Z>r`? >^6@](]'x=wŋ,n;RKZ$d~Ӓ҉D-YKM"+חfa Cgs'/A[mcE\X> t~׊)g=p#^$}z:o*Kʌ 8f} 0~{Jq~= \4&Ы^eCVo,S66H棣~-سRV>LpkVp5n]^Q/un*3 wEA__Gh<εIs^KOA"M=4( ݎ)޹Ӕ޿~RG{ 5AVYU +K# Ϟp\w~cS~UvZ1v14&6E^ԋR=/cB7k&RLQc?NS6E }$>7v[ok:gnS|y*^`5!0$EP|~P-c[ nrqfupl ]`;C 5M6۶*k~l)N#1>S$aif%xs%P%яQ*pϭprzFV*5޹}B~ިd_jB[if/M/<{2՛7ȩJ͟ׯݶx`{/WBo>~8)0L2 BHC%Q.U2wZZrY:*Mw=c[KB9h[6(}Gw?n:пu7!P~}>&LQu[D)#)ȶlPv(ǞLӏEFۿo:%O[JxL= '홢O{/Y '-E k_<#{2S]t<_nD.S\{ {1Ttr=95>aqqMqXYNP˫e@KOKWN]A]W7T+۪}RO_N>=9Wg +Ǯiӏ94i\TQn=̊Z,Q6] ?sv@:Yf=f07ꣵ„=<z-N#ND"d|e!A꫱>n7_[R#ucxs_Rx^@CGA2˕Kw]\Ji U{=)FF)n05$ka,Q8v>gP+Lhپv=f=gX:0_7|mTN{N־0zZ, -vUd*1k=@g<~"D_k/e'5u''VِL\'NJKi>Ndo6)6w,3vtiQ;?)SX#w9~9_?f`w5mڪ>8PFzi: ݣ.9gQK_GGxP(CtaEŰ1.W;3?:|u46m|Wm6o~(Eӯ|7e3ӊN~:`}8{JR=]m&f\gnO%X@ )7: WߔiJUnl'Uupf){:cC8aK?w˫|=4Y驇7:x|^? ߿7{ RMz=t7?FhQh1?qK׬Kc:l0{&a3ț^nS&^o4I ;(|W~"??џس\67{zM/Rl9yv$v / >[M >>cHR@Еk+WA-!˻z57+Z5 DB?~_;h0^2 Fgϐ_&[ϟ۾ӣڴXJg!EMkډk5J`է7`_[1Ǎx=rwI+v?BcfdިO%hq絗sp`euCs>4ԯ޵_y}p3q쟒~3[r|WKc#F^5kιlO:0n NG8Wyclo.;loHSF˛ tZnz|UXaׇq=6;%ϥ,:V^(驿^!Kb)w'5Zk^L% 诵LsGI<WDsx-plA3Ŋ&=Ve ;zV|-ǵkC*W ;R6v>׽0IY:ʴO'd[%7oݸi˪>;SZl\1 ysDW[mLDbaOR׿T2;ݤxdw^GxN;NE4QoA`<'f 恆 q -*ε7o8^v \ťbfrh#ڮsB:͖sU~xCykν(vݹ넋[䞳dUZ.y魬|XTx=養P.vv{Xmg~ͽbOxK<:c)dgߞl'1i G%҃jvH)vܡ^,s,<p_Yllq&Z2{8"X-=^h y3vS^2xNXifdk~"o#Jx=~2I /z",cb5܀߰Y I E55bP ~gғ/.)3~x‹"wFi ^F ?ޭNԄ;v [˅RyR(H׸F\εeM%\tr;4lПiqWIYLsΆtZ쎻#VHb]h^)hZVpa ~$>5ޏ)x޶PJWn4HjYzn 48)ře<=o1 g`P qp}1Y3~Si #Rn!5-Dއm?$&@~{O+1Ny:ڷ>y?Z.*H&A1o`R T4 zby{dyMpK!6K ^$r.GUU,C ̻;;"q8vG3@KT/8r,rikvLS%NP SIJSҪGi@XX>U2\& au ,)DV"W\1ؒB;Wi#z%1tr-~7F ]TF&cAO{BuL8r}Y =m7 ͺL>90H0cM*qiM-;Dg*)0s*`UjN% k6΢c]iEޛa9~L ';{c0ۉ? B[(DW X 7=Jl!,؀QݵhÜPĩxM ;V tgZWr;My9VPfi ^e:vQ!O!(z5]0ʀ%xG.`P_l4K/Zoa~imH^O5*Y"y*a&Ε5l!k=W'hv:9;Cd:4|hߠt7' Hll4kߠJK2W< ǪvZ55l $$iyy??‚=#xJ? x.|iUmMQ5Ҩl줣%9l.2aaXcrTF. {* P_z*`$&NM :ja t; qBjG9TgxϜ`4/Zc u̷+a߼ +=L0HYl.`[?!aos*a~QO8-uD˙v4nc;X4=?$U)hz"(:,IIosAq)?r ';N\@yW`\֘&jP?xd<0޷0KZ]ǔyyQ)JJ=e,w[tTFV2,Ft1Q:Ru c>l$V%BK5Ja5;W?ua?NHػkCRkxTߒ;2HZ)sh#:{8Qv1e#NM)?5S '7X wjF{^+ZRta>o~';Kp88ƻ5#5!DsClz V]Z TJDž 3G!`69*n9?$V[T:lv؂B l\TSY"\+V15ҡ؂J,QOii/} j}a-7LcoZȞ֊Z +/([P@;mAX ZP ]Ǽ1dnbG5z/_B*11LNG&m&f;[ vfh8*JZc~ SKmo/+|v1@C= / g.dc__ta~XW<,929oe0t0g4 VKw, 3H *c/%0Z0|}.W2zr[:*}S-ܾD:էw)QE)bj,gJP-)Lyt;GXR*bZ˦ަ4pjEa40Djyuc-hꄞRg6(d5ʡSx?MU} ̫-u+ ]+KX^Ъ![# ~VbahV s/٧8)叏87Qz#&[/ /}dGRz)8@hiXn=جڰuz{%&=Yviaw68VitP9Ejc[8#f?UG"Վmy,T5iEց)'PEQjM,ŶJԱ5X]I7r57.h,EkDWAw_ߴ㭊؃wH'8j_;y3Ζ\h?4v2٠\> )5Y"L/Z/{|nwx2՞ژh8ĩi-Ύm5ۤS ,XŪ 亭ȅMo! *\JWFY+OL[&rFxRl3  L)O9(;GO VV쐙ԩv]>Q Y`@ŧ0I9x9uCW)NUlMGwΘPdR;~ruTp@\0uL"NAͼ\@ML8yAs=)骄1ǵW!1Ci4UǡW|mШȱ`D[+SeCíف7e88khNB- #gk`T6ciLcxZշ3fI]l6Z]u‹RUj)Ju%Pţu{j"yp`SD)G'-+mz޽W:߆c *dA +JSh&ޝR;7Wﭰ-'UcL"O?i X)%[X.'I%Rj5ʤX<'~G8Nlᆱ-8Ak7khm0^G{WS#j6?FwK[ho%k`|ŞWKC΢Y$K!UTJ_rǛ{Qp%ʔ XpUR㫥׃%>U]G[QHY9&\0׼ëRߐ)4]- =^-cXPwNYQL2 0*":' {NaZօerPɭ+B^H]I77 p:-i!U*T5hXrk;%djڱ#vdFu'dIR! !6XNsK2T\Pjp O|Ѭ|a^F~O̲JaX)buU[qyXvl 9mf+Vvw{ٖCWk&.c߅m!/lVvtf8yd3^s=6"o5\,puYUwӪmG_k Yrl%ij=lK?KsY Ya4hŧ9t#r=Fb#gw;-Y\lg j ݟXhh_iW_X[v]+Vpݵl?MMe[_ߟN1^f1 MIӝ'Yws.V>:iZyF|V&h9)W?2W:鍍orTh9E:FO;:s^wf=ϹFwņ_O昶a$jx$x#ҧsOmjyxJ8џ#R3EsnqsFwOK0M'2^ }BJ>ߥT?^PWz·6HwųyS<"Kk,@&$[l PFx43LHHB dlHI6dž` !nBoͱ IHɒd7߫=3U^իW^|tOO!_ )2ˋi;^L{dGB,u Bmi#_3!Py:ypAOi#m\JT;ذ;S\Z|/~1v&/~q ab<&w I7+VRK MG~ vKi*> '5Ǟ=冗p?kjџDGDo}lgiTsBR3>Y;ݡ3'7x9EEYܽ d7Eȫ?ݧcwzw0twg~Bұ5Ӄ3w'2Tqk].fs+]P*HY>AV2t8)C?u C' QQRoYBQj;wW9u9-8W"vN sܟN};!:V s_ˍednL :pg3,;u]^Dn扫!q-3IҠF'g%{Y᳒؋CY|%r蕿u=n޸Y7Py7vdgdٮZ/>ZKQVnʵ|8N7@O9ۛ++t_y yIwR~+S^zw9Gw ^ 0?:ٯY|W)6ͭ藹>@O&SNw>*@RoއM@%*ˣJٝ :c}%- _X \…n[+J>JZ}.&ˮ]sXyuj\;]#?]y,F>ڣ :ܰĕS1pyxA<%ȩ(OjE_}d_Nx5P,U @T_&Jfo- ψ2w=$4:wN$_uG.Y e|4)w?9]i aqS{9U^ } IwjH\K(O=5:.zŪ}?Y. U"QX᚟R9 M'HhVHf~ur3? $DKΧjl& g@|^xof GnB Z>oCqQ PTͣWݗO̼IL=QrvMYgو\UWvJJThd}ۧdI)[O|攐ͦl-d+MyOz&:0EW[Bݝ'Dc7%t=,kYr@A?~9% Lt>9 X`cNPܪ#x4 Q`2N[yA \^R'Jj?<{hڣΐbU.:+GΔΕ MRp9H٘8qw?͍l̤c"qS@$ox~%Km~x-r]Ob)yuO֌%'LN' <{C+4.7DÜD4_|ChIs_9 P88)>Aq5A' I跬N ~{s|cE -d>W@WHj$ܳT%ҒPy%VHgN ŪVw%5bm;]I%p'Q~6* 44FׅL\I~A~]С'q^@[C!շ G9|>Qf3+ӻ,Q'At{] 徳|'2F>5}xFgqYtGqPuƴmXO{v!5Ӳ1-)ڠfFi^fd2cĄSRX˩N|^Kꎂ̨PB_0 c#SzXz|蘟cU 5eX_-x3Fc=|3OkT "Fk'0 Qw,F~p` _jgr\5V#MQ^=7:AӞLcڑYP+o:Ao^Ӫ&M3mvm8oV-*sSunrչ^y9K6s>y]hUfG{g[M76[yW~y7nn,^j f(wyg* v>ϘٕM3\q^;K;S^6n)WtͮMuN*:ϔMUuw[fTE Uk~yAASҌE5¥ Ɍfð8*%ŔFm.FՏxj9Zԓ(g6 0+4(L1Hj"ULMiyu:SjJ$6Ô&\+Ă!SN8E+<0Έ#*4\zeaHq551 ofQt% cm.H`@CCmuL E4K:TTXŸ2dQou:Fk1$ VU a1JL#)LH)xf e1찁 H.I%iJ1m0%uJªլb-hI"5k = t&UUgj 1 #㜾:ӵQn1aN$d`ӆ87!Wx{=zZ֯v*&݈3cwUjw8ư{?vXݻlPKq6xSj|}W[ul+R׾~mՅ]PN@o}Ϯ>wO_o.6@-{v>wtڅ5TII 렄>];v72lcYmЮm:Ձ,$A*,*άcWw{Wt.`z'jGzmJϮʋBc*p MN1׵yٳtogڵ]m :Ź36y5gr04x̢쁐#=RsZdP WaXSg8zoPl8j#Erzix c7dtHSiݎsK_Qj p Atn߮s0|aXE_j:1`@5ߪôt23\3:&<4LT1& *sXyi\6Mg f 4PDވKAkbyB OW<+&o0)K=}BEfɌԲ̔,%3:2*ݛ֫ o2c $}BPS<[6huʬ:w)N2:9šAسbV9qJ &ySݫ=:}O=ե)N}ΦJLkVKBa%*(v˳4gk;*Eطī%@_m:r( zѮTPu!fή]8SZx T"20rlPL-DܕRJ{yCLhyhOtpOqt29y1#`6bi:49&W(.G)*<]Q6佖e?USaúD^)ٹ7N 4q|[0sC 4VQ^Fw\jd̜80*]/oҥڔKlT{z͸rӑ҆-`K+)k_bf6aTT)dU`SSѱ|mjJ:M^:c1RfX&7{T/ۚB+zj٭gʌ3&KVjy%*:nh:;zt a#cb&LQ42z>IRQw,5|$ZI4TYEĤduUJ~sNeFyCݥ`۠lRH7-5XS:{Z95r0Wtg*Ҡň=񦦆ͼzKi㒚]L(餆^X)SjWT!쵨=Sݗ5t,1qXŒ9 "gA'ڨUillaem?eլ(&iItVtiڗD{`Ӓledű@yM6(Ĝ weO?nb͵I"it֞Ȥ4FdxSmѦm ٰZ紱 :B[a8d\=Ca v1@Ц#/(N7 Xš{CKSRȎ]Q ?,oq&L|Ph(PaNfF` ]G2ivP7ԍlٖ.=R-ŲG5fKeeV[RH8EށZE;'Se֯J%; #mkUzׯCU׳̰e;z؉ӳ85c?[谭@K1J&&bʀ wʱM_&@#{c^WlXKNTq>[@W2^'lRG gZ Né(H2n ? v4)fAFww(; (28Ri3¡FS)':P湫[g3.)rcuٜcj#tq?h[;uwh*@ߞݪM"A ̎6PzжmZPv@k *\D_3*jq&i*c]]}e2D5m@}\ER"nx hhì}=Po5;;oVڙ  胟1sǮ흦fgpm}]mπ{(A(R֛0mFg %LJN<yzJ_SIǰ6.Y=1Ө|Nҧ̔qPW/YE֔BV"j'O4QG :,3}Ciچ1**1GhKdxFEǻ14Rp {JMXti|a,xf F 4dXsM,59(tb<5$FSlpCCtLuLu꬧T9U̫s7֩s6֩s9֩s4֩s;֩s7:&}{=+:PcAI98%:H)R#+ ^Ej૖ (DFR;iĢHh izM_,Ը>NðJN\GRpԴzY}o0LRUPhLP |珡5(oΘCbGUΤ5+ ݃2٤Vu W޲}!5_gj$*a>g\iA"M[Aґ03hL*SùpL̼XԮ\.s%)\"Dm:[F jtNBѿ)jZRxѬH}ZIua<:xrI<ݩDw5K+Q "j"FxĤ\o:IhdŠg9 4T>-ż^.o^|+hʽK0宅=0 xdm>E]c8Ɨԗ@TLp L'1Oe?a܅e|gO#/d9 Ϊ(-oz:|KBxJ/enj7G~iNDaZPALj:rȨg^gn_0ⓕcvr x3[90aoOٻ r׸`DNk0D!)8H*n7 >Шɳl7GHL!2End\924|+M\qEYzR7EumW%{ؿ1Beuvm};1^˘ktQL 7:iS2 C7Nu'LPIWU":s~&rxTwfr^Ͱ)3wq+J ߼q Cٵ [@ބ\r$)+ )u&wٴ\f#M9厗wjΐN['o1dT{0dƍwnO_/Kɓۉ]xuz^TG}t OJm3)o4&S=U$Bv }P;s-)i~uVZOnI ڤ1+PXI 'm(mN4¬~tidU f l|_HSiYJYZj1NFyom1!t"Y2҅V_s3Mo=qMY6oa>]55_tkW(R7 ίS4^Bn09ƂGE 4%sXdGHckcms|-Aa063?"Lů%(HN%ճkȫ& ۤՑRjv:|3%:Ȗ4洴Jau5/AHAe8vc&'j]8i[sȼ;|E%ޏOVZBSIBz.>[J7"i['%=p:odG_0%-]p$ }ߒ+`?+Hc֬tfq_^ټ9dO%f7yDWI ,{_\]m:=%SHg!!eLB?-EX% (fh!|SHj%wx4WI̷sd_}q/ Go>-޶g ?XDSzQ\|YGۙ]y |So^[jso}2)OJ ׍Hs@QYؒWSP%^m&Δr>I+,ϫ 1r W>$KyFM{+EcK̳< mt$\^Jg{.ôH5ʹfN]ݾ J[sJ$C 7NôuY{CEI[ꘪGQ3RW[KEkVsi Fm^iDzDzŶE[DvP>ۘw؎9vf.0v=$-{1!-S ŸY33+Bȋ.Ny& w>yQwY}Pt1e)Xh]c\ѿo'==hAv):[cn%s5V>xGQj(#7~fͮ\z{Zpve{++rygͮ\xW.5m/|;88[[W_Tmु4ˎ ٦Uj4MRcIՋ-uƒB@Wڡ|xp霌 DzǨUxEZC;oQ{uYàWQ tpNrotSm| }赶:xJ TN"2jjݦ7w֙mr=,hx&_p,"hõHZŽi50qFߢѨ*_Lv79(_B 3 ~.or^5UUi8?{M"@,ho/T˫*_ujunkcB[nR>ÃXTmE6oeXeXR(GFEĐXҳ Fc:BZToojbOǙWJP֡UP>:aAL3QaEpO6a/y@ 18O T}d9t&@m1qĵdYHhe584WbB}".t^fJ'fajuR1!~Ne}Ք>~h#jژ kKXAD"pFm3Y2jЈQ/mxzFYMp)TC*{gMfR'PJZ5]_t_D4z+u*TݧɣJ+J}̃҅d|7KiteՆ0}j۶K]Դ{k2ԡ*QiL> "41钪M ./>!HJ~Hz-to\[C>*\J ~RbByR44~!w~ D/:ּ+'GKeɋ]g̙o|jۭ mܶX|ҲY1t'ZDAPZzC!;)}Pj_`g,i7tzX ajL(2yKӸ-v;zz@tT;4F> p#|C^Ԉ5!i ӭ҂3VT4dϵ|!x?rTK߃0Fߗa.$5I .dC+IM>R3t(NF>#G_,Y%@j^JRX;*d~@pA皿@pT~i(=F|Y Z=K@BH8WkXxFVBtBn%]`%ۏH/\=W\0ZҔ}!'nood?I[=@y$'&|@ZI}RF.{䇁E|RjJw; $r$DLzOHN<hkQ: ء!q]χq$t%؏XrJ<'F7tQ|ܨDռѺA5Ziğ M&{Ľ9&qo*#yuՍ>Qc6M$7./EPT_$syG&,!0G$?ԵoO}nP/q&4pH;| JSs,f:11J"hLO3,B8%RC켝JE.HHYE Cddr.i3 d"ӫ >Ēxtmڇ::3QCkTX#gz Y2FCFLx7e);42" 4Ut-vv,h!y,wIXS|ㄠ$z*"JpG3Q},0HJRx#G`-D-jٳ@:x̱`&ҹcGw`'tނeυ#WD#u+ؓq`d=~Ձx6?u| !(I p53֫B6E(<%4{x:JiERHmFb#stw:O؎ӌXg荽I<͓F,w87q2}\s_^ğN&r\-$RH7ܹuSpi\g+DКZj;-^'<^*Q=IC!tL] s#@qAu%8Ee;E?n?Ĥ.k򠆝D -ʘu6ZeyoZ"gURZl)5 d^LTfby<4+MؽQA=8򃥜\) "1HXK&0ffrRsZ$DC'0X m6S1\kVO(FqFDZ#Cb~95ee#LnP i0-`]WӒV#@m K\Z=UǑIx:DgéD0[yuc9B얔">X9@=L;' er1 -o{}[leH^՘Q4Zdy.>jEE̪ݶ:I1yg猤L.ُ+hM$o(XS\r4rәz!V~?T7m_yt$+~0@>ad`&҅CXkhvX@ "*,dTa]ʈ-vZi#[13-8(:Ǜ:6QM=*V;}k֚aTL6)t(._mӍ$X%E>TY@LgIZIX*11LؤOHb外=`t>]Qie6͈!_H < ҖYEYf$t[H8ѮRP <B |Fk]gנʖ5._Le2pd,g-N Q@3lն .KJ j4]D9%,E #(rkmov<_UZl&D]LRFV[@Wa[p,`ȸLNӉ%bSMsUyk9ӠJۻn 5 8@4B,]p6P R(GcuyI:񦂙?0p[t+-,q s/6+.LuejLHD/*^q#Åц5^KR$jy^, dE20l.3&xM-&==uw:Y̜3`~! 0Mˆjvqcs#B*5JR01T+|dOu:IL&~É_o7 B5 ~PKMC{@%mC -LK1,)yV)|0b6IuxQ3`>EYCJh񡑟x'T:&lSLKfokaLD5=1J5 ]U\zU6@Φ8D?) |6cX[ԥɫ kuգ7NTxfIl+B n*01^TK\erurlcVLMUsDG#d o.?$\ábt}݈(]\&јo܈c۾mWT;:ںvUtlEkחޯʮM{S.m{G%ڙ]-d–rbWը4rPcvԶaZ=^qz= ^ִ7b)ia׎_iVMnᱡ+KȲkٔVOgq_`W 8D>ZN ;~ FG%uXSYO4-E*J x?E6D:*-@] Z3c\+7Y*:¬¶hO^<Ħ;W!9T"u0B u,>}=VTݣMSnmĥ6#%s1؏:^c# (҅4[YRO i,BOiCm'zp1qڸlnaڥ S5oqZH߬nf8\aU8Kb_1X cL!i,όr$*h9杁 >H݆2EuO5LaBW]U:e PX=p9U])RMԸPn^ta,GQru%쒅8L=oċ :P Nmaj$c47!=ǡh(wT&92nUc]ZGy!C(2s:n~862|6v5nltn`(EGҡcRӈ9!{Bb%ץ65 [mljC3:DWg7P9:9rY*pQ vKV66a/㣙ܹ1}s?B]ه5q @ƺ ؒ05PM#8uyAZ]?׌|sPo,QرcZu" k-gKyf0Ѵnj4- gGtOP]Mʨ]f,nxp zZ7sd s:YƏRLVE۠L^&ֆO`A#r0{zAq̌:ʀN;KIS幈KfH\~|*E|iK]lZYsE; GPa{='ҹ?gSg4ma KR/QNDF%dG_Iβwm.8;ӦpO )U| 8»ټy_it~f?M~juK9)!_r3 yͷD+s S-L5JAVzem 漮zu83dW슆*JV˕TeukEaæOL^O%׳YvdZ+Qت ]~jetfۡqz`^˧NSrgv= 1޷eNv,(%YPz-.~"9`ܖSюfu@ǏZmqǹ \9*:ղ8p+y$x \aGkEYFUXQF%g^`[51>kC߫vpAS:w`i֍4fڊ"y̶o`S9Oi ypVK9ZF(Jf[3d3=n%O$Hiy6-K*3^_U}yG]hd\Aϋ%C ]L@8ύOn8c̮t:J8PĭMNřeߊ[$(Mz Ex)i̽ hV؏XIU" 5qo@ы̫֦ob/ҋޕFUcA~bŰdY)>rl I,t*`L͊\qiܻV(ۨա@AZh=ϯZch S⃁Ìp1%al=@{ zyiYA{*WfmtA q5s)f~ 6-5ӶڡD6UV~#uz5tNes%UNmR~>k3x1M=#X:F5۹/dc A_&Y1n4 BANI hHd*VٺE4n)9ރq'xOݬV+L]SG}[gV喲2׷Wlm͝NAb&1JZ aáxv5ʏ'EL, e5f4Ya蘖AbνX1M",տl5Z 7XQPXg<;lM\4[x챳Q[)]hF^rRqj]XP7[dM(9֖Wa%ENAkDzye)| 4wD=d̤ٱ 3"tgncE*xnԾ {K ,xƖAuZzRe49ӋqG-Ċ@jl"h8'$SM&WgH#l iD,3eB∗|lPB*F:!rcv }V0vdت-4Ꭰ p0)Ps}Ƴ$:[zRlkpbOk*M&lI<ݖur`1E.bE;Ac*2Y`" g`+4X9IAgHutT ̏ aNB7=㍀3o$| }X+ڊH$i-uXGu >&-fE0dK;$D:aOwf'=kKhyoZafW;o^n'Z,ZГ 1mhB|d~T-Z~O Dr&!NENa$o[O's7fh]x-"B`wtn۳#s8qtg:1"XE r`N'y> 8K}O>RB:t/Lܸwf;8+ ? )g&A1 "%ঁz7VN)ern\x<tD:?{:U6 ~ԼSF'58f 7g[%<?ʇ/u?-G|sYx)6g=س𿄂g|ÞTHdf-[Q=1#~̑`@Lsc^k;**,<tF];YvS?X|,,CpUbZEkI=ǰ"=1ȚCقZ">xo82J #Rad :7͙ƛ|amNCqQ$Al֌%YmMr5rZn",szpws8mttyӅD blUX3ff~mQך6?ku6=󴀩[ͱ6\fmOwF002F2o_^w81~T`۵fdMZx1kVDƦhY^b ЛЭ($83;S0kwA#UUtNHQ")ڢ4/K܉ژ>HԦIM=FbRX?HCC8y*o*~f5Kle =O^Fm/3게]pà45ɑ$_6dC5(]RT{t?.9;K RPIjqһ"g96q{sGʪyf\r +V*߼ӌ$z0/WZX@"MHrY^J>/&woɫ߯{w{+ɃrC3$2YxM~*Tm]!SӋuw/N4>%#iiYȇ*YH:qcWQj 1iqQ+B}ـsqɊkפsC;yi)IVZX\_~|^˛!җ7oOgC5t^N5 wp.U"wדFe22by9FyA1|Dx&H"Z^<6% }FZN毓j5i#r՘렏O@o\Nn ̗i-뷧x|V~v .|0|y9<#?Z[)&2=k? zJ 펇L*<MWʋjwjH ԥO\ۮ\[|Y\Uڕȍ򺿅>w$GAi>xymtFXۋG_#Uڏ]X7x/zs$t[mm-󽥦V=&Yt[%U\!{M j۰#|cyk+)yiV_NŸ刷 [ 'nj@ XD'g&M/{Ъ⭿~S腙Er|c/ķ ;%T +VˇUv 2YWWV'rK=/KV.^1D.ȷIRIazw4n).Z/T:i5v/.?_"}a拾/|DɚWeIVRHAi!4~PZC9B.)_bY&{d4Z\/|@>K!|pރ_?~B?>C5MeΝ[k_ϓFCo"8  B U^yYH! M-d//>t|^I@b_:zO%א_H,-nY3M "^l{Bdyo,/_W AE!3J ϐ]y|A0!0!pC wOg e! 1k+C8qA`\{lƋ Z06Qvl#D>./::\"c۠ ]*'Ptgx"TH||EΞ-b{az2y3B"LK^hqgWN-+Cgw"^*{+{GQTCn)!/8Vc}u yBd/,x.FI3.\\/O>Qy]\ytЙGCɧ/tF^Y*%T^[;B6?,Cn\L5^2rEG= P< >A xLY9s8#$/INYx럥7 (ЉEsY8"<*+rl  ]3z"$tLBo!密C [_Xx2";F@4R}QFht~`}4yusZ?{e2p""}:sY=_{)g Y:׫`p@^x!S [ȉ];"Y h"(f2:ۭ^x1D24ƒT,d\p Epoh{׮N"ms#<.םr0>TSTD&Io-ڷ/?k{DZ+_Zj>PϟI?尪64RGB~En`*}q1=US|r.Xc¢GO ` c(bO/;@9F/Ԑ=,IB_[.48;pE34-D~;i94:пT +ˋ>G/^{'Pzp/Ho\S p0O888"D+AN?[~dJ~t gW/]/  :~hQպ3{1ʷ(?VRH! r.【Gh8艈=rqi:9p/\ pdEE-I>[D=k肅EQ!?H#^SOjU_JONP0r <ȏjށC}q(Eݔ+r2%9<9MK疇V\4EqK4ɫ0!pZ 19ng`8ܳZ>_lZަ(i/9I0|yїţ2 >XktL,[*Sm&ٹd_'|DF'Cl:ȯ}dtLFoϚL.d{f%K8 r3ijiIW<8:fis ֟ Л}qgkȷoH (p sPDa(|AH+>|`8"Z[D>!|x="W{dYQ*rs\TP%o]"2@||UԧP? P@u'-Po1pl!7@v' @}!,,fy7LܸEoos )VZ*n#"__W 25_|WP@=zQ)j\x lh-|ra R'iʅNN?8tNW?TЭ1ii-k*{Gt͠I.V{8U: pњ]>j5"t_";/ˋ@@|nSF>珛C`p`pw`޷/6o=>xKo߷Tf,nh]ڤ1==W%߸Rr'7> A)e&Ԥ60FOd3:V c4&MȖ礕礽%~ ܣJƈ&&_I;{{l>7ש9->)- ^AA%70*hCګ^zl@J0{G0{8{\aQS|"P19ڢGK'{ v }`yoXnDK'#=_|6E~1`?vUH 󱕌IE0$*GłlҒ]'h!DO<qY*z_˪FMMMFk1#e1|r:9 8^Pf9|zcGGW=0>j[ ۞;qGlړ%h| #ȣJ+jx"$RSW:#թ==-r礍_(˟rãPTPwǤyQP|(7{09P.wY-y+6Z<=Fw#$H#țlZU5UefzX$!K^'\B^6y/ #$IHeBKB 9.U 04],u.{ނ w^ݯ˼߁2n#-KXTFۄV@ Hw}`ǻwz냗]$[Dވ\/B&(ic~xտ>!p]k/)ݼj;z YjƩySˆk >s l_~!@wqwz u\]C0qc%J4!l728>Z o-Mk򚱼̿|>u%?3N9($j#W&Ja+m$3P^Oy O;yJ<9[N@ˡ)'p3K/a>L»hp?X2t; 8HʿTe@_kжҚ^Sk{My)c57+{\05T _S?* ,~{_S9(B9σW}GKviX̠7<8to kSk _ o\3Exƚ?ZbqU>:_U:yCޫJw= 2+q5{)ki2lY,5h2:'ġ;LߍnG=/0nsrcGܹzvOuMC5~f> n-x;oz-"7ӪBi%|]=t,\5sYhy}iY4>i_urw[`92- ؖݏnBc_w%o~ JC[)vcg"˾+Y>pfEU›òOJů}F+cuD u*!C?9v ,AWj[؈9Lmv$|>~]=LLwZ nuom|Ḟm˨s5 wj53 MKЪ q#/7w?4yj(D.!qVJA4b%>7XH;s^:b=L|$ I5ÁνCOL1smpqbEa(P,4x}59Ye-/$P5M)Hɠ9!,E-(Dj!`3=?XRYFhEMwM&o} hxPwZ9S \P-XnK|vh| +Μ)NA*EgΈ77xzf3o,ګy\wV;HP|g>|F&i8:[ٯڀ;DQ`%i5czzlw+4CȬ\;IC߁g9k;xvӊc-lF3 Rbx9fXXg0]#{Gnߵ~_tL5P~Xbg@C,adӥR$رӇdg(62GTYh=`OD+"7+HKF~^n7%q}YFhhьGu]Ь.&N۠P[K`4 % Zl-Rr}-P`uWTD8O*U Ex0Fv eMpXAG=Y`. !.[p;r9- FMw٨8jj>Lh $XP ̺ >QY à5j#P:1ő(X"_za-FėЇn:b 9"m$ӀڐE_H br[} QämV*hU*Pu2_lǬ(iFL=% KJ>@1AO[ )@͜ D#noRlcS\]şdueqy[f=q-l%u}fJ(]!K֧ MCkFxNsbLqc+h<T7*2TkZ6cl18cY3çꢌCPڮDAs / q 0D j jIt֖Iz-VPǤZZSLb )Vj5 .dTkQckP& v0gVwBX]w\{͇UY |ff䕚#PcLUbTLoNay1˞My9i=1(`etg7DqSL1zSCcCd|q J|KOLtOlجHBi6,B(GER~fe 4J1g|..عBBEHV!n&vy YiLܸm M'pcmr= ʵ @W)ɚ6賅;м3 v[R0м٣i1QܡGϜa J'.{2[ԞaMT%(bŻF$ߵ%nn0uvMT#UFn/]𠑑rީsڙu7(CrQCۆ[#'M縳jEx (+f1{h+C(A CreP:佯3%[ӔT%;ZhJ %=3Htlg(j0h0V /v3?cѐ{fߚ49+GEgLg71&(vSeq.VhCxy,ya@cFKB~nd-=hPYτ'Nyefj ߼*Z 7' 'Ό: V-+S&'>4NNUqSM:7bY(Jiё[R?([W.0( hZZ)TSle>n ҽL˂ˁ8TWY;uurIvB&=nUʑ;Ar ДdfVZUd9,>l"+{CVbޅ=oyY@M"Uru+Z%#[+/֝㒞i_c3\=/Qqw|g5wƩuJ6ef55X# 0LƲvFI:8bR!ψI,l^K~$_<^B+BG7,S B!)~-Zp4{.8keuOWQ8jMbY&eayd;@PzOAP1E{@tN7'Mh1j .1soI涒$VC |!VL~P#IIY02M0:8'O +|ۅ.m9%:!<3WrΤOV)wJ-HfǎSfX#ZjRJIܬ*Jv u䷣l i؏y ; R|XMBHzd)>z-(4p jL~ rNH;ȁQ}P7;it:{R.;Zۖ>W!~ߖ6tW3gb:miߖ+L4\QkKKK]34W8h {ͯt/޶itÀɫ.m?] oR9ϔ./S[?_vŖ$~tzsBGP1g̈́3/n?ns?++da,~tU7 Uù`;;R鮁_*s\qcķsid`_sir_aW d_lC-K?Zw:[z5$ܧ Q)T+(H+W[Ao<&,ds>{pJx%m`+Uޯ]jJ3{7o^zJgu}uko@kW ;%Ɓ9%̿&-5:?RP/?kuL]~rr糃Y+'^ (/~rt|1\P+JO4pAGT(ۺsHOqgJsXSj YJ>[ҹٙa[?_z3]CŗW˥Zuo-[DnS=U ?r~ \kVE˹VNkY=W_i\a<# ~'X@>8_-|||I童7~7~}_瞑I\^pVBu! plݗ^1Sa`h8)z2̺nXAX ZnOJ8SN^dLr#0oA3V ,m u/rkj؞o.ɳykSqk*[us@%~ vWW'wan x0ZU/IDRb%P`1XPV2J5U8vjӍzb4.:Wr($LSʐ.zT9vWhNa1&t!}m6u 7ړa{LGk dIv愩e#§yͦXZ;()M˔[,H^ ''V++ [R i(YTgq*x0UCF@ӅF wQ{^|O6Ӻ'k9/,B\/PA3Vl5&$4:0 vJηV9D6a0} W)6+НeY MNW)ߎ6*;faQqEOV,toIBYʒ͠nwC (tm&plؽ\gGs,6|3f{CqeADAECV{g(Pl2nۍ{-%6WctaiqM@hUwg ,$ >G-n˷A+'rC@n['\ܖMMemoTw|wV nl_5L nڞǗxݯ[u9@?4ܶ(Jv7\Ҿ%Ԣτ0vNMGގ[0eCHVrWU=,B.xVIU$9Dh'񭰒o1S-kօ 64\ٔP$ʗFĢ?6f1Wi[%q+qQ*6#V@, %>"WX;"mHY3D `r#;<)HI(VB: -f Uk rZ9sVyL[uRߋj{'݈SUfT}6&N,؛o%IDxp⾓~oFh;thY3q6F (10JBf{t7qj<;[ďH\nH;ayM@|LOӄeGA% |!,y%L!8R2!D%`;P>>~@+n$FMl yIjU`{e(fՓ? ,] B^nmhV%<M7ؓ+v3Hn? 2+ dV(!hi0S^aHV<<.\fJ`K'!f% &YmkYȪ.Z; 8ܫ x/Cߦ -/2 66*`@AV%j w^CBc*4,x9J720{#ljp;XdZ*( ς B5 \|7>( q8ՔFUeLFԒ&̈m!, L?U9 0#I;`M8u/WQ4A+gzuUb`~rg[Ϩ_ygt\qX\*dn5l:OV6U4 V/J j:m7* 8;z"Y$sSWbXڈhLIdeqIt JZE#4`t<3f5ЖWo=K`Y$ [-ʙ z M*sUX] 'ą@!k["҃) P_h4Yx$kRZU"*2yLp"W6 % 6 /7Ki$nͶXR\\P&- IT9Ci.8Ty% 4EXAW %S"t!8W!DékE.|k9EƪH`^-kJL ~ 4,LĪ:[J2H}hvX@f(`8~1~(U%.;z$A|WAѡ?w,J!O |k^qDJ:̑& %NzZc4X@h. >%t!=iXW!kF]V8,}0KCGv#-醮`$UN5Q-BqF_A | 2X}!*\^"QD-:.$2}9 NC`VU agky% MV =͢LPbMՁB(L©PTd k_M~G%AiGDiJ#>a=t qڡ+AՒ:?Hbޭ! @/8Z0@YhE:,vb;"t~-,SMe@ IϦh /Mw8`g f+S9;6uJ"ElxT)Q(^qI`"PPqxa0;"W,?*?fT~ud4y tr QכX3ͪNm ;2.* ݑB[i~u . *XjٞCVuGin Cx=Zu4۸ruw`r0 rʼn+¦ ,ZCWU '.,?j`SAo̍o@ICچ2@>YŮ7`bDg t2rB'K]X< EM )VZ14Ņ~E kj1JaL0bno@ ^kaoىYZJ#qKgߤQt\kϩy[(h7wHb-!_~H*v_j8VԩCN1L #?ũLy3pXQ& wye\ W-0kbq"ٛY( 7$HFh9,&t1 pCXbTEyYm4GSNKZa 5h2OXR}v pE=JU06J 0Qy5wA9P}VOrԦkқ.7nDdq/xLl4>> KG4fKd|2{&ʮ$jÿK7*K/ڸgh}VSGq&멷wjܴ"n K\P;lb).߻ݘd6:C[y.?oi3M@A%n4bbSb}$K 껌 .clP}oI^uK; 0x_BqRFɕQ~nx|Or~ƋI' &Q<:ם06C cr_Bm\pzxpeϢO,+CF{.y/O(~9˔IcK3ty(+]lP' /1^|Z腊(0x3GK$t`THuz7>8xm~czw%rĭ?8h\ajj\֝:Ѩ81IJTjfc7f#嫌;]ev_йi1Nf)bpqqmB\z 65ZިӦ8Wk_x筐_~q҉1iaxx3mӕ x m6߁޵wy^wm3v.o<٦͡io߳x&qPEL}k6D!wq*囍G*oǪua6(|zx其Kχ|}{G O2Ñe#>47j\:Уqxoho'p$>/.4\ [9)ZҾjE#~VW'ZÙu)&(,?|j~ K_h^Bč{nyWp0Uߊ۪oY`x05Kw- A.<1,,B_uxk5q4nr|/dmʸ ف$c):2S!H7  ͦ K)]j\;2SG$fn K.P+p/#˹cHDt:1ֲ yˌ# 6/cal07cڸv+(JUQ7UzT0m]e\)ݠK~;@^i=@T Tfpfc#|ݰB^*q%mpu\GͣMe׎.4iEҽ:M[wWv+=J-w=G15`o&|dok&)Le(ugy1c(f.o6FW:G?=[wZ ~4zbrk7f]&^ CIM 0]Pjg/m7\!ں)/3Y]۵oCOyN#71p@"A4+Hw` =3,+O^M(gDDFmF$ T!&XiB0d6A~/FN0fciʈ8#A:l2|5ufSӯ7 eǝR^ _*~߆cS{z+ӹR}L䍅x,`V/U>%^Ƕ sPoKSeL.k\eS6R]Qo>LX ?TC 1&/C*L~ طO}B{eޭjcLpZiό<  W Qc -z|?0jd_u{),^ڬqY㿱׸q0lOg?QlܙOX& _w1i\>h~qbΈ;Ov@ww@10XV2chV9.19: l~ˮ ܊QG. #tŵ\1boJ_^W-ˤMYq=ZYQ%-}6!iҟ15 Ц;=лA2 ƍtTS~cTݥtzfs8H^[/Y:ozofǺ71Hɕ ZAT5kˎն`QrJ"dOȲ/'dc'ZY&I)KDW^5:m ubuA:/U8Oބ⏥𣬥#W]d⿗3MLv8=_NQAjvθl¿Hp/,ZTf\Td8@:]:V[K*fPEcǟs8_>-=NyZ15kẛJ5vrnv̋~hqh'V=TdC츲OkR;sFۆ ¨3u !qA]/mQ j͎ۖʺp/ ؔ 4l\jGݢ.]Wj[-r}GK;FShl?x'X ce~Qq74er(˚0lwk'Z9rC-1PU1TŸE.kt/lt"oq1s m5ml+"&0ivNN|2 訚E~1F68E0z&v׵3V4H^ 1ĕ8`zŌyغ?Ηfh{ d_<3>q8x6C=1{R N`v1c`caX8g#b P6i],7W5eQ-zN_ S%8 s쌧'y|-;,p؁ie!n9{?EC:řdjfh=$jzcj5lXvDlxX@`cxA> -%fqϑů@JFr\m-vW'f:9ͫO5:`4Άi<6y4SݍLs~|W_<ՙc~ vHf% o"jB\ PZo$8GHv5}]}AdwcĻ.8W˝\|6j6;|tlZÞtl[e5[n"5X`l<0<[V?yr -ws+G3['`G'ƫ);Sh&f<\{&s΄{֌V3h7} _gծiivX61zA'wB6q_~o5'N[YD8E;2l( )u,SV͓0  Lx-o"qeI}sg#' ?!]?;ԟN(QUX'@OZj; `K <(]+av2Hsq#= Cam+ОDMMa5i N`SϋmVr5'J[Ħp ?!ˆCp|F i6E1ICA+ٖ @ \¦X潖 cO?9qaEH"IkUӠԼD\"h{ a#=SY?W8~5g DrEDlrN$EjU&E6 r`@j:ZHP4iU!#vSG8x ݛE& 9O<@s{9"-@ºW@6f%)9l@qxZ1׃g(|d_$Yg,|74I "C)&0:9!GAzyDSZLksط\\Ue4>-N `噥@IF@'"n vF#5 qݪF I좛3 زlm!PfNlׄeGA&7G{h,@݋OiY{ usbYf=X։׊;҈<<4299.UO&0YȦ4Y0whjd8eOBA[@Y]bd0f]*ǣfgKx͈#w])bL,:Mb5S'8ٴx iP Vj&0b.m+)< hjs  zJ9s ͜ȷz@E #XhHnCE?I+n/ vdr5 ^ u&BJW|kGw^ D_ 9 dŊlhtqtY9Gm_ z=pU09+3 q1Z]LArW0Zg3Nv Ք|d U,ya#I`ڄV_إ(+gzʴ jOU԰"[NXc:+^}`qx0³~հccZ^h@m(xQRTofnA]`ڠp4AMmkVt!(Y 9!A@8wX `Z(a"O 9vCz;=d$W9oQ.fJUYsDd&1wf=44k>b/*-qb1L1#P:^3bS1.Q<\iO18/븍ٲt/I&M2WJ`hC5lL̫qEibZN"T BT9Ι@Zg4y}wjW:W00n{!#Q'ʄ$Ah/,Gע jgH)仼 _5rOfb8&f4Ac Glֲ@Hg#5$!bg+GnndNqQn @l6UYwVr( {~c3T?(BfĄ%UK1MC+?Eb4>$c7E0Q`$AC ƦrYV *s ;7!. ţs: N>wE2iz&55{VR݉=CW"G`ABF ,XiU+PSY2!5K,#'3VLg&݌-'h5ySXs#Cw8֔5cڦ0AT;%Y2JLz\4k-ГjE[ j\0wm䢽I84,͡}MgO<+w+B}ШoBUBxG?(@7y?sCS}` knI'{6zw+6 +cʽl%a9}# GCQ An jƖ:Ĭ@q+7!m0$b# 7U1 ݫԲմ! fAP6 ilmn9vgg!UM(*tgi ('!<'P@T{i<;O"WqعveO aK" JHܞ#sR &B~SBlZdb"W8II P"TGzG$( I&AfQ " Qɮ!H2ɁiB/iV`QHsk6sF$,HF ) frxcR7/t tj.r};tA&Ai0}*gD [쩅3e!9Heͮ߼+a$4Z PJl%v IyXZW^˄#) FR0䮬dbICj%:g@\pLFaD^7W%B2TB3C).[B J<*!y"jۊ@MMn( Ez҈!lC۩f̗q46If9s?ein5 MJC}025\&9T}ϡ=]Z*Rq-\Y%H%&DQiNeJ!4C#M BIVqB[]?yIah퐴zZ-oΠ ;*K;od]z{L7#ܣdl/.@$' a}}fvp}Q*3s1cwsnVQM˩{=x<+$Z%!mcaم\X9"l6vS12C:uZO`,W"s4>χ\g ҇!0`[Xo-ɜ(~8`+77 WI&͕/#$vO5 9c#O7\f?:7 7Cf)Wt6smKZI?qͩ+|RVjes:D\/VEA_bG6`_|Ϟ|aeF7d?^:9K#Wt%KC IC"ENeU9mSa|q=4wpkF{ΨTĊėU*e&%goOa'gr< 򅧸>#^64GY%%]T,ʱ+HZ%C;\+tgߨ{ l9J  ӬmN,^ziRZoh:{k0Q"r<9Wtl*(}+s羹AJu~Ӎ čpOܝkKz`_Isc3io;9h\`^^Ϧ>ڼ=}c oꡫ~y0v{pQMfI'6GxP}nUXO'y>˫ٓ=s Vj#Mg\mcrJ{,XoxputGz0X}E_'k&S'NS> -T^A).=MclokV.BM)/Xliy˳1xk%͐;f1OgJ7mjI'"eD]jhk޽ԼKELR\iL6^~åzSv7M/8Э2#-~{E4;bt˵W).9{ף9<߸ LQHJiQ;s8IV*7=@蕏W 5:uEzSjv=blo|^;cd a|qj"`1K&N\\o&wJH*M\z7t&8K"soφ}_?\_'rܾ+O5\斤^g'AiKv_xTy)M^޸ '|zayl\\<Cgoo\ȗy1e qρiaGR:x1ȹ})d[CWiH"$ I4U!}>Oq,P)дX~$ir㬔{OX'EC}pPiE5bN<8G*'bi講! a8>.ܖf>-}p[]%v4YF5T)mXzWmcOsr|G:~cN<ƗKF>Wan&p;&V\mTqkzu/:~z=mj(Ǿ_9 j9C_;hnntzy^{s{{o]\mRnwd߇7?!gzE$MG-t|W`N8iaUaFEKo߅YKCs+ȣ! +h?&V&XD' cDɠ:AO! !>W(y5(Xf) ZX:to"鿻rEAHaxΉ htCb4)3/y#4U !P&nB* v!x~Sw4p,Z?,tRiQ'A'<ƄZ ~n $e hܾpXʗ8ba^x' =Mx?BM?Hko\07vl*3+*c7:9҂cOSL=zB.0a<1aE)[a87u¹p:qo=p)6@u}?sdj![ W^d ,ed~7(mty@4) 6Y9d Sb}F9FM!w!3<xS@}.ońfIJA| %LE:Ni?p%tb_E$x  35%bSg?  YZnCPc( /rD $x* Q!T8ee`Ŧmx/hx >LѾ|8?{W %LA|+z+f\¥ӟ~ noZ=E}+qP6tlqq>\]CpSRO4zw G&"飖#">?t!qD+hx~Py%9U]:sdim !s<>F>r3K#7|8r5 >|xrpTF&6SB;];ѯ,(Ãi\` Ѳ`a?\]-31E<>^"C&`xy54DqSO8z%A|\uCV'5XΘ휙{h=< ;DysXHA>0k$. ~83?. D$U=?ϣOa+Sϧo[^ 3BV#zs_֩9у)},Z={/3>)-ϢؤPBqœGF(䟮P;. Cɐ9=C c{Xl~i.0CŌioJ8m,R봸ϩs׳+6 s ` L@z eZu $K ' 0K5 _gz Ti_W|kDxk]/}|eW>0ghãu}2!o \Jjm0*ro9]tH9- 0oMxӊg9m@a$g6\s]#؈tB{v暭picȠi`y ph1a{"%s)n9äKƧY%A C`% !L Fz{tZ8b9HQ+~u B|,2BtKATG2;|,+/q4g+yc : %gJ 4gFY +PdAg^ͳLI={GH-,'{AISSχm*/_ZX(sJh' sN &u5LBʜy:&pmҙIFCUgl5rCF0 | E0]Gq,6*߇2 's mYK3֐%ol4/8G9Q'tKmyoЮdC#[ABJo ҅d9TQ~:g)mJbdz:rcrp\{J10Cڴ(~ܟ6J70B-C!SC&"f:P$`rs4$9yQ7S@8K`<ΰ[ ςͧ*Dy!&3m)MIiҮ#ѧ!Mþ f#24'q,%JL`,sZ!;L) \^{#ej$∙oAFC13 ',>z_ c,#(^D2zQ6cIYS]w:o{2WzHI%OB*e5v6%|v~SQvk 3&Sh+ڹDZ41nFv s\lxQ%`L>c+'s:j 22%7dxE> i;N$ sWާo[Ul n9RD.&3VBhVQ_|z VA΍m/H mW`:8ճI);lNK4|kQUd)nRs%|[NsRzƇ;42U͡kطF%JS lG!߿{˪mv=>|@5f7}1{E8kcl;vM1{n{l? 0A|6Ce}>:QVzXRf`߆Z95RIZ^̲d^>h)E|9DxPGO(cZ95¤rt dMU/ap0ҜL+N ?s,w3«9sE10P}PiVt2GCD f'JVw!iA:aL{`qfz8N 3cAt ss ΄d[&PgPxi3( Բ zN X2+=.P!I,!P羛Y2nV1ѥ&3T@8a"ˆAƃ7KP#Q Ȣ\?,0J³'_E(l{7:wD !!sԆ4j݉H1/ПF'gXod :WO*wc8-ܣY jnӀt6b\/W>@C7SmE`֗2 uP[Zh6΢-r ۾<Ԓ &7~-j˚KYfz?TK 4!gwLC_U7ҐpjhfQ.OY 1g:'eJk|ߤ -Kю9)/ZɌ)Nz8SZ4#,©.>afl;o5V^ވa }Z]mVRC;KS# i(WHs/|ۼq9 a_q<{s2Knnml,,F"sB.fbQD۠S.%~6,$؆xf%"&,aQY5'־v,#/ٸ)a z 4/Ǔ>Z'ZVS4ukCW٢b,}@_uDo.'bL//IPT}O6 k{"ߐ=oKmڙ.b@bcv^M[t}Lj`5Xa^j^l~?u"ph3  #et< o&'i3YQ}珌 S3M3MSڠ GO-8 wrp 5%..6מy7LWU{<6vm7: gXx(v<Q-l~SWH٤BcxIe\qӸʮhuWNv*DzY10B_÷p0vb5om׆r²;nJJUh2/B.&-BLp&܅Jo8f%c#2;PamV? CI-ᝃfC{-nSK) i[4w,HC|X!" 8Y>Oi绗U`q]Ǭ/Ufr +2;t6\JE|GtXPGNV~Q!f9OұH鷸-a'|A ;oql#͊ҍB^M4Oy!6WYwaoH/. v}><+mhZeRÄS??@-)NʥJW߰g2g PdLX"Ccv9,M Ǽ7h"{/?/yݭC'm_~og?/?zr!dj5A$?z?\;ߌ?mIqjDwi64MM$fM9ٿn}˄8o4$@y# #ng~E[NvNG*M Ճ딝Ikesl`6S)n@i8=Hn)/8 @;2ܮ.& zoןS|_Oߜcto tn]a?5O:7]~'蟋Wϟ`L?p 1l3-i}OON{,d[tB_rTz]ܿx?&D yrAm쟬a݆›#Ckw{~{=&@K>{zAzmbҿt*頀HɾºW|:t;A(s$9MG/|]}u;]iu҅Ir[r^iK;xi[7璋.]#q^+:M$*Q>\g;7X3 5!9"jz]w 9P8/dw!D|W}T-].J'OwPk##wuI:;pI7H Δc03T6 ]  +u̅C8@n2Ǹ=vae!%I8( Clh񡻳/YzbJžHiq'HDY&o1Cj#0GaŁ_I2tOؓ4JE&-zf,,IFD5ƅ.!hO̒Q~á NiJlځ41҈ `p?>?A|LRP{EoɁ1` 1mA`Z2ch17?.ؐK=_%\O u^) d-vF5jh~Q;LdPyPǎ]d==ʋ> ?mcj.$]H(.x]eL>WLQl$8!bMl8"+6=*D2*p#c֬Q_ ؄$X!DӉl;vHw@YY*8~G3M_ J껀™Yf0ڌ"q$Q`$ʹ#BY9i0P &Je7rqiRf d _ɺu:BGs7 del8 CVΤHe,*ޡ+) D7'.l2Bh9@qTdb@Fi1Ⱦ2~w 1H *r?VFkVF^R.K9B ~ t8^k5JF\”{@:2Ns0 I I֙ь;Е -:Nѣl* NX?4w yP]_ÑǨv˹О1gް=o$sBa&)6y&q8ihQrSrR1f@;zDƏjL`n)~>)]AF/HI /Ts͡/h#[o= ,e>7rCdl (9ؠuDF3:Ika{]U&8ĠRW=V=FAjY.Z ˂1$||`fR,o?A䜣 a<.Cc6fd͘Nz]M ]3ZC1^oZ5< ~pHZf~D#AT.%t>5(ζ6HLVŢpRx9ek,-Tv)djL=)UI8A`|9pjBKдmr-2ChS9S Qlr0*=ꉱpgdQoa~UM]\v .dCŝLšٿUpzEILhd84[Øvj;Rqb:a_TYwgv*, ̓ %>fM|F"@ƨe|=,8hQ[F]W8c dH,hk[Y{ {NI 8a'V|uBBccyw$Έ2*qv,<>\i)igӼK9sG (& ,iceyӘ  ^h?$?Cڙh:qU{\)Z'{:AX˖`a*o t}Ժ*UzJcS ed_0Ec5tZ8ׄ1/2Z$ǁd}~ZQ"b75mXHƱ#r!:+e4wϸJv3a`AĪAzp /ϤbeA>dji| lUh o) ӍR]V͙`KGb0iR3BK2 ꋌqt~f5d FV\{Y{ʒk\OciS/}K#+qo(.1-,k=**xψP!5L{Ԍq.p'̂Yyoh膱k)hכO<@t<^1`ۺi& 9Vr_\Bld\ e*с+5h!0ل1,큳bǁ5斎A4Uq!NqqkO9u8I I6pq㠪 hf[t)0WQh ѕxs }:Z| d&tNN5*rhn"$Sï7ƐX@D7q]=i_(6 r׻eF^տ{(W\rN0.@fqbr!| 9di)mU  PrWṡgFCBKYmgak[~1ɿV(\]brzg9$yd4 yeD`?<2!HJQViq"?dk&YPL]FA)D\-ia6Ryt3 F Ey4#ƂmK☈畎l#gҖ.*ܖΡD*JFD'}Mul Fl~I+,#K#z~9 Rott_5nXac72 C1c'9W8a0ZckGns\ŹЈlc>xRh0wn:&j['gg0&u5 ۑWG΃nʻb݆bN5m-=3ﶢٱg*mB+Ii3P4 vDhp K)/FuXNhbJ;\v:/v |"P][#=8(A@ZeqYՍwH{KHU};a=ό?Rtdq=Vz|XA^Ы_ ھї+]|~ERnm'[߲GѲwA~@Vߙ at<ߒqRcCJҕΧ}oNaDO$9/Sr>)NEC\.5RRm=4٫ Bv0 o[y zբ%8# %ОH&тXFS>NΑ`J̚Dp|­k;1t{nE2A񣽭7 0e#p$'F%9Co.0қ(>ګse9`n@JÔ^#Xt0hFДd:ΠgY(y03m _wLv25i`t7FP]ƣ$W@QAQAQ+d G@2CPÎ,A]| ԶE;aCѹ=P:J~M&>p7 ~JQ&P*(f 3QjpB<koI@H:uJ k{9B/G7z~7ք_Jx F@Z?wKve+O2b/Or +$6 kcL :duT{Ӽ3$񁽢*pN3}$В,5s=29hTbd8xldEXd)չ29:ZzE63NZ1XC>%B1=Q40$WnpLJ[(TܴoVj*0\f֦i YC3&IJ8̾IimJ$r:: |ԘHL&L}z^:KnL&gĉ^5Ndhn`29рSU5䬑:j&"YYI))-d^=u&3u}0SFFXXH"SNه- `\&'`|W i 1GERCe(BRr[M]jH5Q^%(Bb oʘ%Rp5 yM+IOM}S}˳< $$A[dG"ξlw;U>[{8[?rSρ]V}?dͫdx.`_L:є~w~ˏK8OʘjQdǠSdkO^~|/t]ɸOj'P* 4;?(?1 \ĵ^}5Opήƺ.ވdB⛛DMu a~ȩ{? Ĕև; 枦H~1R\sjr dܳ 2@~&cFφYbIg.< 'YD'V17yS0y'BCv<4F&5D^LRKe1mQp.fXSm P% 4 rx{}. #nW'ѧB o>7K`jjc7q7^M\nAUjw=)7@A3魎o!)piD|+J[7# őOY8 b&< 6_lA浉>kCYxDNtS}.TBǀ-CMѪw,xN(Q;VrODENlҖeę&, ^K\h6ͣ1vx'QX~}`'y1@xgC5. v aX{"Յz2n4^ TqMD?\ l~#mgwj3^9Q[ {'Jϼ,{E5>m9xm9߶H#]m4hU;enPfʉU͛J2pQQ Z@`Z$W[+H+ۘ(אo& F3x8xx'4~9&`2:H ?S0:<'k<-6u r$^!41, WS1~oM-S rV;%*@f|x5Lz>b2yM b n)2k5q,LYfzw[3gh(o† · hjx|jge߾i;#]*Mm5ÆǞ 4Țm !vTbQ@G9StIeh?\zB33EnJέgޟ$r%XrF>uj ~y H;>ɲB:\&aJ/ܿ}B<^uEuѭ h?mA SLɌ8)0Yoт  7;Ra=e_̬ƌgxV6Ӗ\CK0 8 U*grҲFdv=&7sM=g!U#McKޫh.2Q߻` P8iQiLIhmIz\-op%ژynm`@V%Qr&9>.98F?=CbLw@s(&WS7tS MXݜ?343*V .H9Av0 )JUZ\_0( b2]mO-x .nM) ~-6`=c$ʋt@ȭf8eFhX|Y3r쑳nA2N9VѸ+6PVm 4g{svSي7ո5+b%Jʶzfa6dY.Qқe$oJW\F{`Fٲ{J8{І|gʫ5=#:md"$>@u^T}nd3>cICΣDӊBm?q)WiOPá241gPm6_H1e|驯ݘ*+7{ʋ9fd6Ewc$@ElBWV9&~-fx9J<9D[dA ޞ?qbm춂2\otjEK2kƘZb?O[:.ɘG{dMX+N'=Zph T|g i pSwy<qw4,(A}XkCvI`*f]lJAY.,yذE)BWF$˲<+RC(GGUJ5w!rNb3v#ĶWL8 Ҵo}.S:|{0ӆJvlG6 aT A`zpAH7]jjhBK@~ޔ5MÔ$Th9a?-p&C}DTqr`$ 'XD+M y(cDLCQw>RbbK昨GhHFHb%i(ƋܸXrP8v1㝣^|eb6u!L 5ߨr!e'ί zD gP~DZGb!GQx/{4h5C>8!"Wគ+FB7YA ]#ske,gO"Z&d^WDهZI;Jڸ9Wް8ůrU^ߝjo_7`BZۿc@6:<͚9W0vf*Pn < +Dھq:=fQ{chL?F+Ҋ^}uS6 Px}tpAIւ1^Op /nQsͫ29L% 8&xGx2tH3xrz^$ !&tѵ. .MUYrHa+E.dHbῠW",8KزF0UB41ZY$X#!RnIK|mM;#X23d"fFݙ_krFtZz NTCdˤL8LQpűCK@Rֶތg oQxJqY{fx7ưv؛W Z@vPuI"CCD\HwyWszpE7:=y>}I'n[%^\%P- /[88rŽOat׻OzԚ"P acF2z:1OYp[ڟ) I%>\U}:ikR*D',k.`%ϣ2Ը雤P%L&f(f2㌙rc M3n,.ݺ:V,IO|>kf.u?M H)_[i1M4@ ` G CP7٧ppAMa&6Kˊ(UZ .}n' ^ܦ B۫.:M#[,$瞸Y9ѡCۜX5)qUs(p lJ N( @qRkZ_2pԚCNg'yW٤9GM.'QA6CQ#W6]*MGS6#N88&W5 m ;dP i1X$5$yM&L$S:[kz޼Ya5ӂ|v{/QЙsXWɐ D3B%NvsK oO|L*-&}Ght# $R`>?D)nEVjr lO h( .16xR u @lN٫ Ȃ)L[S&bu,}X5k:([r(H[tjIwS^n }CCK!OU1߳NӣQ`'e-9|'6QׄiK)D(<9J$1yٚo_K'|$ r bgp$슖E]ZLB kIំz lQbUHX18}e[ 9( aʄ|~"6vq3%<0UV|9ёLhZOAujY;xqIMkg+9Yi}}:Dhb\S6Vŭ0 WAf}JQs%b8%E$JҏL0 KTmnnsW7PT{ay t 3>{Rt2_HH*xN*rJÜ3^dO@I|x}[DZqnx(Z6~QlX?7ʙ2e5ײֶp΀V|M\jzTaCQ6xZ806lF->G}]ΐRF:593]NE|1T@( k<hn cᯠ֑&jdΎ3MߙlDӳ9qD?[|P3ICH[o{ Lw-,F;c'm8BIg`; ̙澯9[y 6݃㝝{9՛Mu9~`ϑ$i !hgH6Vs];#DLՍX̉/dnJ5TwC,.g kڹV.iM睵8V]QM.s6qC,dމ 5&z-H-9W#OPT8#֩qa,M*S$6bT.#8UCT Q.72zDzÆkl0$17B.v'E :'tY4r̬AOP70 Sx=:~ܓ*5>Ch,L Wïr7dA? 2')&侍ۻ:p3 מʶߘ۫ih)r¸2WڇqƤx&Ljps`ń X蟿huXh?2̓,}Hcpb3rK2a3&qu%ƙR‚$DE٠PFP95 RW>*wl y<=di6(W@cf a`rgF0[k+"O&ƹ(7j /NwyJօ(L4gǎ$#N#_xI2vDNJS!:6mĢxlʏXô}CRVY8sT̏@ڻr>cEa\ SA8LjL<&._N1%,۞$oUszcV3F" }D}T+{oH햐hYO9F±nז},+#< <'zhTAqiHs]w|.]]Lw'?DjGʞO#=ӫ.P*LT&N|J ~?tN4჆[*7Cȼ䐡< opH=:L^'$ MNancJ\zV@qG rva^/y À7MnUGZw/ֳ2/ig٨Y0YPyh#SeGǻg谎ZG"C(5,IL2 ֻJ7qjZ'qXH׻j":}\*}鲤4w X\9"4NDeq:!)hK>s T-쀩YJ`"'[nl\,ǡ.,y0PHoΞPC*`< 3 ҌM$hׄCJ I)4>7f`d; RgIPy`n:h+䂅DIF';#0U^dw02]f2kUr)#`X!1Ut4jg蝨($Ec-=bz'җ 8mD0Zq*|KV+MѰ@B >k<ۜaeA6AI^bI;kaע(ו 0Kű-u366 h2ziCPkLb8jG29f-eHt&}򬜠A`A`tb]>em, CHL*椴S 0]'I2@f8/#8g0qWz1j(^*%gVG<-Ct︎])":\; 9AĦ`ˢ񁀘uşW7c EC?L$ߊ[d򔲱N/F/.Z;:Q^0wYKxtepC˒m m98ayƃ`I*II8Mb5T$BMCO'3 gcʹM% u57R6Gz-P$8oʂm:A"RɈ4 ]ESIH_WbBhM:`^R &;i Aj<c?a4큫Nxa/N|/aKN;"≩n )VUO2,1 x$̚r~BaQI`Jg!'*TId2W :fKRQ\ 礪9e'EٟuF>ҭT`%qh۶l̤JǓ'OW Qz_bC?$~qk~͒w3YJ:dpy;-P_WPmZw7 c^ 1 2u#3JL19{"ިD8 e!9lBsd!Ӵnƒk],VȭQ:Ox#iU<@-Guv- xE弒diR]}muԂM8^sY,SH~)LTcMZ?xhsr檮4*PySsPcԱW:F,sh),A4[g bzB'ak箴 my)Ŷ~8rtʧ8'& ܻvmdik@ I :mvM6IO:K "A -`%f.?|>ٗ/֬s["B.y<(rl|d(Z X^VNR h>`4ߦl`_G(vt3Vv6If2GCn˻:?hǵn &@g8/;p1>teɨd}TZ\)B`E,.V>e,#Rő%w/:ʟN8VЙ-Z=[L0#wUG);T+.'K'jLTs,(O" tz&?)M:g$H]^|d~ۅy?ժ~P .o 7"#9r{CpMЉ@5c/"JDʉ[2gv e6'k'Ȃ@bTl:b m, g;Վp19~cSfyk&;Rf2/*+]]TbR;ԁ%(i) ^9l>TqKaylgytNmPzI + =^\ذ2R74K$nuNtw[[Q@XOMn9!:hnX'=RusP4[g&$3JW/5s(3ZSj;Qz/ULp'V'p , YQpSUS= T`P#u|x24 ܚ1-KH& }ЫtKJ'gjjŋ5 8x GܥSK|e0[1Li꫋3Np@)t>'N$ח. \9" (h+ș (pPvҹ>IGhęg.K^"mq_n>'nA1N?,ٴ4꺿KQ&2KRB<^#j, #0T4Up2r>b+GB(KNIe6s/4,xu% dfĕ1]\ ~?Y@cR rFU^Z=D,9sAb8hq0h"xXo!挆9 /-O^1 DzKN9(>o {\gt@'2zu;A=sQG\O/+4 F9+S Tbti.14NLy+Qd #o.V#bY^䢸V*)q7YYC>!ST@ 'DۑRG'5Z>DX䷴! hX7̦7&g hh`B_.pt\E f[2νM> E\xZ"_HP5zV1 +tT/ lO[?C,=`aO_#疴*ǵc_t!$C@*^NN4=i;j"iwm3sb M:-1 z G8< iw$%sc* 7YI* Pp,%30GiNZgLO]seM AËW7gNy~ WƇ"4 ,#\2 E[JwWCwcC5R Wغ"TT!!jXSMUUdKP {uUibd}s&BQuXF1%?ZoJ'Sc$H PP*9{U&1XسYR^ϥ>oҿ{z&Z&X-1#4m lc;J:r-Q}^hq0Q֡a|v(tS2]ʽ6:2M>~b5Zs4~pcq:b ( t,W?!bw Dv98@{c*T`|u>u^cZr Q *3خ?WHu],kT} 9s"4a|%En-|<}L62|i}m4TQ&xS<t]SOXd2d1Vz=" n^B +<Ã;"t:vOoȞ ?h>ơ<eΘG{ p8,^CYSFLa9 ZBڨL9.x!6Hv0= ϋ"|<<e<,kd Jx*,U\0vplK*/7_<60 Hbc(ȄL_)@pݤ xA\8|FZ}V)X^磑0ErM0~xק>?y>J4؁Js4` UJw?CfZW1*#n#C]߹u៌3" "ueg/ eDT$^#')ڑDe)y]b&w/"k"~Xhq{+U+>h|ʘ=a]x3&'V$Fkcb+ۑ!XX.y2.IH`\z0 Wj# N6x:ir/$x{mXlD}#DQGzx5tSi^h+H@[8}0UXu4UZr˂pfS~~n:,gjɬL٨!~w9S7;y+DwMmv_^g _{ݒEXW@rX]xw\wDt_Ƃ_T}GR}Gt0KlҰ] J>6gd0rtȫ%띇~~[c/SGaov$9,V]fIF]_Ȃ7~nZxLkoR80NFQwY%2Ii]*ɟ}6?WO}S)Ӹp?ޝ\}v{' |m~ |8]\$`Ezu~l[+zaSí DѨNaqЉсKZupRw.94Z(-if,rv+ď 8Mo+`)pVO2z2eABmȪNJ˧I+pw?})hE\]n$@Q>F[񇿞'u"pBMf$a*|z6MDSh4YkeBi >K׿[N}P&_l$j\iD!|rĵ<W$i D׀үvjV8%oI5%'k=9/rZgQJX iu@G8rFK2W '嚳2(LH=w5ߩ@έAW#6X,$kP7odwt%℔8T2:/&SLX;LwL%W 4݆;5B.7SQW<ܳ 2s@Q(cͮjNhtlO?5oJ>WGN~|}emg+o`->a4+N$DrD&Ljԅ4Ft iT !_^ 懣C!UkT^V5>G[NCnp{}~&k'a.ņw mz7 mv4ɯ] ~ R+݇~";Cy9p,Ctׁ Vfz)H]GiJ?B}w沯zRP랢bVe"_@7\c!N uSTR#G̪c'8͵ mC,qy)|Łʗ/48{l*3ũ |&y{Z.kT키XYTMֽkQdӵ h8Y/lfP"7X9˅s|sۏ/>~Ea 8g"(;m>+ R^6쵐P-ٸsW, 9A"'˩x o4``mr5;xY wO @xAjT9{ Cj1 '5'*^Sdv-*^j9\J/1!b#n5ĥUf+mf]R*jfjT\Ei>wnm,9ɸFz (Jb.̍=R38 =~ꚲ}ܐqꘞ,%ڥ/ /J[6wK=VUAD"iМҟl14:)>㦕ܽ6/ 1_RgNm656Z c`,i1R PJq;}|ɏx \rݩ& 6B±uaCNZ 8Bu+%*QKyVpCV_tzJR K4HO)+ֿOOMi@ӛ@Yڪihjb<4 i1H,_[d 6/tx:$~Sq Hj[Ƕz)02!4EsH)+Q\+X}%*f\,u$N WNY6D> #>gItLXܖ)GUO,hnj C!2J-b6wq?1-Ixpߝ\.GG"򝴐OIwY6y}%닿?}W1,8G]Mu.T'|[MS,O퓕[V-,5@$H "a-VڎŵnfEp HcEŒ;u:rE7,v@T6Z|PhH0 eƒT J#6jګfOy\؂:6Hkt9NnzRRX \sa q]% KcZ#%=gJ/_(x}%UOOGgEf{z15fTq>Ԝ>e'JY@BLx.I2\.4k ,dq5e<fe0!=pwF%,J {YvRJjbOu wSq=ZϮMJ'Tz84J 9s Aԃ ql @uX 0*H-H[Uq}`zCX_r `+F2iL .s-{ްz@VXNhҭXHU^5騩HE)KG_%> ry1$)ӓdЦS֥Jh)Y~@_Q [V@^)-7S;Y^}8zp_ЩE3x=D kifM8Eӯc#w_ d EJ=)H^PGO0J1A3O%͋ˎJ=#h1CТK|gC% 0HnI2<ɳz4=l]%n‘0S./ǞvjH>H"e =0fx#C3C҆zj9#.Ta47 ێpYA;3kNw}?\np27J[l8ż@H5U]dp+}ҀW(-`cBOSuJlC~* w@ BQF>`{i^esr^,;gfs.x 7<ԍ?Wf%UeHVXRY;@qFǝ9^ !.颍nbpv[Ĉ,ubŲ,@6;ErX9=[Vd:C\xbycQQѬX,nܬ1EINkF#VI.5H)|Z*T詖p+X)l~J ^{٘. H}4w3x ~Wz.sx(_% ]?zZ9xLXRN<)o]5ʧp+[MTfB 63+׆Ks+/[ )\.NHuR- \슳?kx#/**mX be+MptSpʽxכ9 dњlun䘪:sիWq)gl ( KkbcGY/L;TIF9ċou% 4X H{6M.`k0ZԂb%`me@rfe2B69KƋ78Zϸ*sN x,SD~htnOt1jYÃSR>I azLϙ =K.SZ@>&mUӒVz"F^z2j79}M*,I֟bp[\|$P ~. O'^}ń>IBPfps>st*Ѷ|֥F7 jT9 3V;>x GY_R[oXarct秞J\.e0==iuH[d{F HNOpzJGt;~︥H@p2ælw|6e@H˦ɗϞo ?3zMtZL˟}i:7a;O+Rfn.ӕo }IhvtKOt(^/FvBVzR>;]_ۉ~R--Iksm$4f88rYJ7|BPYj$c2P*.v:.“@t^#Aϐ&)AR8XD? 5dm:5UM{N ([D9CVi ^xb,<[w%߄FL* ?`]m'esӛQ>0ÍwVn\v8%[btzZ][rȋlqL鸙7.gwfݢ DE$frx1$B`_$ZخP8Td̥nPVgԆ+r_1(hI p\:mZcy+_&s^ԑ-wT^jcpWW\%ЬL%fEdB#'L.xt~gH{H{ -;Qͺ<}N* %A8 m|#<1|\`A܃^;̦*fւ-?r7zuBO-2wGG|O?$ !=,h6i tIDÝ$Jm}O±!vT, 0bPė1"A%eR/CG ԟ XXEW`1 MXÕI,e%ReZx8-vF@- )M<7p{9 +Ƶ ՖO^uOtK Q.4VV'WQ<_c1=$R[r29ټNb윊`/iiC$i8bT)ERVoN26ԟw᯿?6=n"-$-S\7GI\Ptqkѡ;,V׎֖^kۥd~˼:Jm[4/[i ʁ>zYe)Wp]p{BV}6{zU^f$u6mkۈ_j2nlQv[\fhٵK_ǽ֯_:rROĺ,@\ іnLĮG#Κr?v0A3w&3u!w}Q7~rᅵ284 53c4%D 滀C\;i!O9bbjhpIUY$C=qb4S"oˆ<3]i-szR:99cԓ%UeX@A_AT )HBp9XOCiܐi uM?9$`X2֞e ?Z_ 77F^IB{Ke8f`#j= wPEd>2HBdf-NJƧ*&h, 'Q"E>l_Su~|<Ȁd&y@AKaT-3;3ye@m\0\Xf¤chfWZJ]dprF$uY+0(מK @/in_bc]XJ@Wp"9kat{^ȍƋ,ū -g >G9J!+Z&Lƺ 04K\h~4%`g[eRsh=$%o;Pu. :䑇mn)2&8ڙO/U_~F7=R\K]4{f o;!˯Dbhpk+c Ii/iWM[E"@T|!FW<,$.WKdI ьJ7 ɋ]wdu=xW9+_x1z_z~{+p>l?A_lqߎ?lj#R;U^O%<ڋ.]@3-~~A''A}5;G<b~Ib<%üv^YZk-аy&wfUfvșօ%}vG|--yht/e]]v]>E$n&R93I*){_ïGav\Τ: @Ϋ(˳-"~ycN#X I*ޚɐ?'>g}?N S 7s]hZgҮ9VJXF_jQtD]GfwP`zt^;i|z VҠ ' %sې2<y '\{Ek*DI5+"M6w LQv hˬb^ἰL 'k+29<˅H.R"yQ<e-rɉ4bON'KhApCF'sq2{Rny5_iVD^nKV?J`xP'Glu!O u<Ef!:Jgp00У(@ 6,_icm}`IXQfjҏTia2_Yw`43aq+ڇf/|oS1nsEH4c.IQ}09ҧc쬰,"ANՅΧX/>aѰoyK"(1,"&RzOvC[@pUA^Ia(ځ{  ~o?wdFBGy!]^ЄycwHYQfz8DV002P$GB cÌ D"~r-B(ZKpaV$h%Tb^YV JB.}ΏpܾPN.Pjζ@5ЧZ8Q,)]ãN& Ԙ3Mƺ"GR\xk m+A+)4c'~J @ wh!O;4:' r!؀.߽?y=9IO%1U"-2`1XHrK_jhDA*XbQK«/$\uq3]*Ӥe/6W'|٬|3R~ibˤ3{?Z+ d? PQ~4)-mcyJ)+b-0bsN7_vKNiI$^f2h||wrFo#fSV{S{"#+ %#w1/sA< s{\sD\BMZj*DNͲ$|%<w_H1uyrCHKE&{G'G^k)U6LvƷ,x/pl3x:FvS˺ȢR˲0BȻ< u.+#jsdN~@q}UeF`6YrǶAJ |N? MZN=Mq5s/ۑa1WkڎR'B2]m-%<u$o[0J[rdI^$|]S\g w'͓CVWZOݲ\AYZ%_^mkFod]]cм_eB-''JA=eٸOܦ\ev=Xx>i!A=%1T(8Đ.v!l;+=bjA*4R4H`)g(@LirSNdu֩mXhdG#Yg(_]Wnq׾aϰjȦW!רLi^Y(5j?Yc^} f)-R"%3:}se"d4^k8Y/rLkG ")ݾE+L7XnWCc0rb!Pd~ߘV ։LoQVIGw%+ݪzg.*g x@L(e7u밸A Xsclyr]Bύ /6rQ h`c] UuI֚( oV[_ś^.U,eP#iM5Ns|?Ǧv D)8_s.X` Zy>_ 9~}*h[dg =H%:*_Vnณ$+[>ȶW&տWY `+=Km\bW,!{6m $ TxXE Sа8=W #2L[Qq'5.Gg\ъ VmtR(F,vǞ4:BeUAO[[dt9OJwfMkߒyI*;}|tu7/:Fj-wH6`ߴ2[,RίV7-nIE321Kj {92a}>"Cbuj*u'u2̊_9L_uJP'19 =v vm/`l#Ӵޝ=9l;aM ATypPw'8eL Bx B8WxdzO]-V7)(gX?*+k]ϽAZ 1&`c(Rk[(T(bj$~8ytwѧg;"M,[,)oL g%/pBS6-Lᦑ^ËETy8ydsV23P 8trNr ܵ]2̟`D >yZνp# ĞM{ 4>0=|r6Ų3|{LwUO:B;Ye'F."Dv켧PMݠx٥<*riE] Klt? ":-5 "xEx* M!P c|\U_B xwewN;H#Ci1-wz硎=_ʊRpL*#8"u;5D5<M?x-s5%>T {]ed;On;1ӕzNܙ+UzۤXL7 xwJkսqMHTb$D. 0jq:U:ݚMCu m}((y(՘&q>n_l߳R7n FM7UsZvF_#Rw7ۧy2eZW@ga/bPIkOZ_>#Gݭ$XY@]1o-Gux52_jCq|w?>.q{ϨճUjue;~Ɲxv~\Ghh5zF9JϲЦڗ,<-LWدVoaƯ;t[KơHZo GE5__w>.[{YzZ i4ԗQ9…+]jv D`?`П^b@[F/qފ?:,g6_Qofu6[ΠC6\eG|3dpbTL [n߸grfp&4g1Q.v|?P-AU%w8ٙԚDD yd;9Rx#J :nW)d兠b(3U12 9!NRbW傋FD驼E,rfbw̷SuKo25$`$m\dԄ.$s 0%3[ e 崲D sI2*.^䁖 N,:Ԧ/Yr? nHpk^(Gz4nӪXWVȰO yZ3RZ5 q>DOA6F x*}Q횛oiBuJc6tg IӃ }ݠ<=:K ks<,rȠ4Lt~fmB\"͌}E|=OYK?ATT]sag姟GRut[k{H8>-sS Rɑhc[q=+~*tD:]VRN*LdϥM[&yRk[O d-%mٮ3*8>bt(>:y1qBvk%,uR~Oe<}ꉄKu}֢ bj`ȉ~?4pqhS`~V(טׄ 17ʹ?bY@xg7hYOZq>HV(E"){UK";^5mr us'kVlQY倠yRvtL0X.r6扷b^U.Ä Y@p+4Y|:G=}; obYYøxh?DVmZw4nϓOt\R?3"K:CXW*Qjk.ĹҢ`rլ*Jډ#5 ~%6M8aF"hO'&nN.HxAhIQ  P)SJs&&~ vO>vNNr0;Lꬍ/ {޿{pzptL7o Y}]|t"8FLyNOS O;k 5Zl}/Љz?4nKRz.I?.p*5Gw@7!^] 'JCAEɺ'ҫѬr"GS\]ŪXo=,bs*fh3[ɹ}3uA&YLJŢEZqҥ8j!L믊AmIR:OMu :S H%zN@J_smtPR-'xA8"xHY!w3:4@\Mku1$f[Q c#d2|)?n^(d|,qy[+rDR )Hù&\(柾$ -+$2e𐙙w%'IOYP>s8X?8؎Gϓy[V%+@ÄYˇh2uOfIYpmmGΉ3 uVg٪+|&G8sfڹK,k\z]r8敄n3,NZWt:k]!֑ۓ%rXeǯE oギrOkokr΄;|tv^\pw۟S"'GY"pC:L/ `5:, 0/h-k9CGmMoh"ɫըwפ1i`8CIE| i[W~4Vsojd; q&`>€ZEzt!Fa}̵2Ak}խɃU*B^NC!Nau2A"@R3s aaw̚fnBI$³.dtnӢoIU (DYdNնDiy]QgQw]CL.dxTTkXC-*q'˜;+liL1F\i 3q;b;Ր_ 0mMb;QjjtKU)Ťkya|񔺳C-R˜4 ${VY>Ac5W$+(j?je3+h}^gR TwB8RGR(z8%=w΅¤LŞ1F!ņT:i}Be 2GSԝShK|AxW{Zch,Ĭ ]#Yu*Oxn,\8~˶ѲY4+2NsBHd&@/F]b"^jVL-/uH(Rw -OUDhGƝp>#S ^?PpYNK`irヒG"4H6U`sE:]Ů1rqRv>/0gGo4A:LifP~4N#J_c*UC8pX;cUNЧ%@ imVύwk7W -$Gud(%BP # ݥ&j\H;j.7^~|q_wE]1dR9MR4w-ug~w$ ⳿3 R' I'6[O?ZBݳ #Kȫ|Mq[B|B:v:G°fɐH5BNHGV;_r;I6H߯3gC=/b V^}H|<қBѥJ$|`gqw}PԔCI^n7 ĒE)T]pac/+CrM 1$T:JbsZXVjX+˜tZb]r4dE[~YK^E;MJg_*!tm^oytuHW~_xؗ7xw7ٿCS>p^]ΔQdO+gJ** r.K*659ʹạqc{_z`0HN-<_@*n7(4Z.s4o&eyѤˠ$GIMMIIAlXeg'u۾kt ?Y)6 /(e kB.)hb֕E\.I20[DժPdxi rq`nsF j{`n;{\'qAW݉W3DBbr؃˾%{-3BߧXE{ƀGAZdkF32n?_Qڄ5A^vR _inpFAk5O-:7^w%Q̗}4tď=wAl7 zi=ܠ Bcyˡ7hn9 %}]?El[f%Z;\|ZBw8'Z>C&A?\"Z 2EyfZa؅rT{-UJHC8,N&d 0hT_Sd&+20+&|7DqnD.ΐ|!>ĠUU]j˭պa]h/҇ p ]\t8E A'ڳkS;{zO`[c:6A{E>-;ۓ Xx.I6SݹO Tk tm1]|5#-ƚ7{N`=|,{K<849!J(|YKU E@ڡ DY Ԗl*ϑ@݉cʽIml (qOe!z=oKƗI$u;ʻpD?W W~I>:k= `տ%r% *{ObmW}݅SVuJ.,UYvC%09īoM!]gS(^G_M'DVjz|%~[h4[2UfNЩ*kZ)?YLWekkox,|х[tT nY=_EcÃ;vJ'A_ܰirl09d"p8wRq}߂DNLBIYJAqb  V= :()e}{ Y2X.dl[3`h#ʋOyRY$ L4۬* Q<[Id5R 5thy"~@q-G,ᜂ ,쥉ԙb%6dZR&cd6OEzΕ8U 2 <eLF"'VHWOg ol3C>f)Y9ړK502"3.n,?JGڂOooqk-wW)t?元;!O:~5uyLӊLiR^H( Z qpЍ_r$'j-cŚHG8{_i;DzC1{.+V+4mH}|QÚӎyɡMc5򃟫esb<>NRԦ v1a"Ft Aߣ18)=i/z3ZگֿaӁXl;A'Yk=]w%ϒ)삠mf p-NDr$#qtxZl KVH)k*b `d/$/fep;nS 5Z]gyzaA l\Tg&'ex!ERɓ_k78x?|ya^ sd<ٹ婣,lm>#Շv˸rA@ʥX p8ݭAE)J t ~~Ͷu;^)__a:Z $z&*3&؁vFf\uirBs ˭6Xd+o^Y1q#g?m LQcC`׾}A=*81t tc: o3sQvǏnnZ,*mgS|}W]oL[nub#ɳڮ<{I+Mڕ|? I` ~'[gDJ/OyQp BvwV>{p㥚pZ=iRh # wMKfyߠqa7B )l55"P)5i6K_#9Fc&p1ޅ#ږ BQ!xZ)dn,5Q=6 k.vY3]׳=kysZ` '+D?Ҟ/?<ٱ@l.wʳ~%2g3$9D}zM0DIWQ"`8y  bhe).7˦V`;A;:+2"lƖ(sթa@=vo4P3b$$3(y[xCuIY Yb )P:p#/~^%NSV`#uG0b609Rzn4i?R. !a7.r!vōNmZfKc΍ GQRsyn{fsfd.'1d,B6Pf1" +*Xo_ \RecKz[ %3xwjX Q߲FuJ5[$HM^f~XFkSw]?{kb2@4pc⵴-EJ줵;aJu׻g-ub9J-4:jXr!EJyp3>lܡl+kx# £`sUB'[[MX`])o%{8<.JQ +dP 1ڙ!S˺K8MUshQʂ,bS O ^Օ:(n|$p.b o2OtjM{ܲbIWp:H :+zs.$/񟗴7%;q)?t+7u~]g򏐊?6m06nF[Xd))L}Il JVQSqjpȋV`IIQ4KF$:Ѹh5Y4ub_2p eM?(>]K >V@E_I\G%TL|qt^[L)p5\R11N9b6\L vY*0+Y]^~\hTk-#(y`ͦBn҅?ۍIśimMYw+>:?/TPfiHٞM~#sQIT8;GU @A,v+r.vUF}PpDΨ̃:n{2ɗ]:7.6X>ӌp\x >aOk{'iNJ}7~d?&?`b2?ͻd<8iceRL矣Yy-S_~'O4O)m3;`{̪&}X%ďA:}qzӣvުu Rb~قV=.e*Dr(LۻvH7tPzF; R;M:lib[*E607^pU[qBܮIЪfBzuc#li~6wv5UKۙA`/mmz-TB(|Y!e d1&亁Q;Rxed334D~AcSaIVTIElv` ɧL8'\.&մ5I6a']2Jp.U~"K'|dm<_YewI4fŨZa:<Ũ;^ ޾<ȂwZo\UNS]Fm`M5]ul'#'j, ׽ t׷S,o2(4ɮGr;;HrߴLQҷsK+ "ly_{!t)<ջf!_jc4ܼ2urZuN,XZϟI0U&QWۻK1T\<No!No8&nwǻ ^nB!nuX^b㛃Ĝg |^ 5^z>_< lf2'|(/sXqجșЩ}bhN鐙\W0]sDeLG'#tɔe[-GB tWRL1,p$^N~{e1D鏔DDI,N>ҕgT7=` ,b*1La=p@E0H@sdn#]Z&lJeB.d,T̹'c13jd D<+ZzcWV/uÂƎ{5٧FX;\gĦ{X90<w5ZpՄv|EFK*Qq) LknJ*XKLݢ+]^$]V$?|exg.^bo~8Z~6!qYe@Jc٬77~O]eVFmeޭ1zp٦{gø(UǬ'jm\B km6bB1 +ns*섐 7F<;MeFjG6{`x>K$svfVJi'$BTZYkJGLA@>9R2/TrAâ2TfN/d/)Rl)FÇ_Z <2Kc-d 3BlZcxF e/H2WxXQUX gވs<#{(V͗!2{>pG7#NyL08;⬀6ñs=~H6U&%ANѢz?i;Khasj @Oj 諠JZAFVsbϤcjן՛pE#/\\M+پFtOuq:fR57)F_K;+Wb<ٸû3 +x&lWsӢ'V4%51l/H|Risb1lhU [!(a{~n⯭J\@LkmUY|ƃ^(Le2si-4j]sKƽ@K\KU s~◍sSxw&i"\{`k70i\54\U8J1GғyR[oφd)'rDAzX8݂}HcZY]U9j0reݯ] tס(nV.-43sT v\H E8}^]|~5r\\u㻠1zpB'-k3*%PbkSlFTֺL̅RդOӟKxžl:2Ly4xs71!htɪ[')ZX%J`:s(]yĿ;&H/oǦoYL i.I2rUp:9_+ ByJ\X3L"S-w{CxZ5wZ\| J {xHB1RMo3(ɚ룢ty6V"XYF`69"F$$V2Kt͌>C+sFfE}VaU&z55ԣ')l{Ȋ|s$Pޖ0Iwnu&{9~oi1=3@wZsf\O`5rt.Ih3p8mBT"q f( 9pd] tT'mM~bb s3H\Dv7.4bnhhd(^RݣHCg ܹnLFҏ&n`aχ?yG:L1݉SLIL&u?Z xcîn)F}u H`1kCO-9֔tuqmYsHw"hc(bq*i~Al.ӏ1B X;gY)L R1*#|f;Y抻6z.԰`WMY.eХzFQDx-jO ԉU+rq余\ֽEw&o箹~3$=PYloVdw8)Zd>dYyvsB2LiDuo\>mV VljiSxԳhd>uxs 3 SO2:%up Rķmoll$씉? ^Zs׵QqL&bJ̉r^rSZ뛵f$BE9I[L_qެ$|˕h 4w av?gtk;ۏo\+\bj^?L.DaE=~g eQ Zb@d{SgƨvDZtw;'g`+6D@%\V+0oau9o=LJnĝ0f4o E! wiBސO|}FGx^02􃩧{ U z[6}"ɶ١PW]eS[YN@k87K?-ZNJ}0&5ȲьtzLe&н ״E?OSc YCBc2m!"$WI ePUPQLcj~Abyi}ޭ\*+_ ZG ."j %7D;Y%LpOvw/C˹]OulmԠIpjuwtHb/.L'i^` ,$@w`ĮmyAߕVLSe)'@ma8-gwÃ! 7W ["qF}VID-~D&Z\ܭDK,l6w5nF3[$~fĥӑ~ԙ덓Z>lԸ[a>5"DfR@ggQkVRv&zAO :ryTxHsX`E|E`'DAl@065 Gە0:̜q hcQx"z@2G%T}}q_q}a@GCAh 0}R=<6މeg|E!/oZ> ȁPGi\=5tÿE^},/Qe ((.yʗL1zFOg)+hVI{*PSr2ɡNA> 1OA$ǓI&ACn$83B䝡QU"C荺2WFĝ |7,C0>9!شU<f:ɒ@EllŏAQ-]m Un(Y5<ԩJ=iEwk:`?^`' Os\ݽp$lcmoJ~~U ./ʟkcxP nz1 A#(uWN_y7'Eruޑ,+$R%ck'XaF*mqB[u F4b>,*@Gr^GbHF} i5rzp//9Ye8Gx_vj!qTcpԼ:~gY_ts|YFtf 8^RTW<е0 bK]_į--4x65գEb!Er{7Fok]}T-wّ6 W\<e ZZ{µG7:볉/0{.JPW+nlTW@r|: ڻeVkRx]M1,AyL/{4]27=8׋/`C;H~'UN{8sTf3B.B8@ш?`iԤRk4ݦeNQFZWJ4<^&-C}083_..{"/97#xX2= R>Y8U)5*&*>2b`'gd'.* }%s#K55aMjs.5w> uXׅS 黄nExE ƻ&*4!ąnôy+{nZB(ő^MꎮݬaGZbn󹎍/HԫF5H*0jR]@T9 l9]J}on%}eebWDjK]:Ki*d䰑&lE˟0-̦҉ :^Q+)2?]j?˩h 3 )>:_,8Pl؅'&a T˵|e0" J\ ]jyO bfDtx`oRvEVFz5B W]J,> +$(iIYhڵVօquيțѽT1 ]@{XL@oMG(e;2 zp=N Fp{3Ny*jXpj_moj}zI,I jN^7ꞝES7Z2{s/6C!^}i0{;@!vծp#~7,}مHNYvr3HwgD"؃eE"[V-n'H ׏ܓͻ8t6HK Z 젠2#lnr:qwێsf!fPo66)(S?@.@jDבE/u_[kJDbAƜDwV&= >w^BT=3p%VFԈt}U1;h+,yVsZ|Pk:&߂,*3$.V/_A%iƣNfd t:Wj?LOo?L> L,출غ4Vj! LL7sь&2`)jLx*MrlP "Ǿepʮ1`zqt 9yt3Cie$jQz`_ wfLJ'yŚr8q "dHQit{ÕuWSpzٔj#{U#bSZсUjBNMKdſmILm5- #/ izc؅RN`P r#ф?2J# 2RU 䘰fU݌푭`pX-)ox>0\ZtSlOLzl{Wb?>O^G^UzizqT>~yx,|rg'/ǧ/~<|4=}8>IOzS_Ӹ7W8~y|7>g''("}&}RzŬg^>KG%J}z)}ٟ+)Q7ˋӓ7R'?d }*}o|"Pnr~zFB^Ϥo*׸^|V~mgopp\Lo~>oX.xXwuȒW[\uMW9:6ȍֳfwdaS.&SDEb/U/*xv- :}L0.kvރ~MDfIZ5N=$VОis!xE{3}zxgDfMYX2 bIehm2+.~ЄZksB%eRs9=]oJ=LZӊ|bXS%,n]L/ݫdF[Pո=}%u@a/oლ_U MYPM.Q#E堵~U\#Ow~.?wʹLL2z dcۓT wX) L ϣcG*:ĨYo[ڟqmiPOT] oĖE6!uv検ןMC!ԝuְ_Qj -; $~aNN7z_.823?^h6.[b\Ճ'[ۇ[珿]<ܽؼ2r6@~8yLkl妼̤(>.㹎(g }WI2ڽc5ig}H(kr۪ԕ#DrZ|1f`#/O,J/},qx ڥEީ.Js"{#":-% }48ʥ~/,414̂J(ӑ/i%"c@ʲv ~QI1vW]*͟ %¼7)җa2ʖ%5xzWR&Sm4]2mx|9Bu{y84û/pyF@WȿKԍVMA"Oh)< I %0ݹf4jzT]uSUn&iɎnQZFcXa/祓E3 ^ 탂 2^ ڤ.!j>KKSOyl0~ө @h}ܵhoK|Ɖ݇ؽkƀ,AȸH֟-Yn'[s}>s`>L #1?1S`SK/dKy^WRx4>OFǫB6P NJ9F\>ć4Oopt7T2#ٮZ+THg*fͥS=H-ci.hR촾ִLg)d8y΃%kr[cBٓŐ0||b(3RZ#_OA^"Dst!QjarkkСC-kӦk:'T܁Ǫ8ig7BBG7+X-M*JhCΆZ㞾>AO/ڙ)d\f Q,ڞDPN޵2 kqXktXY~)1c7Q#NVB_@خu Kg!U}`Yj3\3EB4맯_Ț9<ډ#P;10We>M׋Z/֮9Cǖ)dpz$fQy1}X-dc4uWe FJLhzH"oKF*ĹY 'O%5( JM?{K|䎽{&wcE+`69~8{׾{%e!ǜ'{i{{zL;d4}/PY6/6z8&HB{);hV&Ǐ2KwL=I#!E_SIY8-3RKCH;“(sy0O_S_B^V/ d y٨ GbXO~:a-si㛣P^__u=Z:|ܸd 5ҞjC6bD|2BI}vo~|D~ݮO>v1dEn9+9aB M*+P:P2/F&W2˼{SB}VQPRL}2gvKg8t0DNjO5Y~## Aͭ>.V,1F8s삌Xn; $M\iY;ɅFqV: CӦwmmﲬ:tx1GƝ7q =&ʼn1J(v{~#aW!0ԺS߼/#txnM2ܒ] x ̈́]3{:kY{4RjZZ6VCR A̍JCn"g _JIW s pW*h69η .IK=wT\CKqgZT A!:.njC e/tsf.'+o7BSw'\6zPBw%Чye6Ǚ7XCIeTeN ԶVXA`~kӎQD[8OLۭKQD};Xqa%U %QYvYkEmF=V@ʮFgd+Uiq @ggpvy?8bpq3*-WnRb>oYLp1R AQMfWK4(_2 MꅬؠW4rgN(}Iː!s3i|&d13;dln #=̀Pc"z< JO!<.sPa>:3zn28=IT_>]k,QnO֖%,ݼ5յn6[wZs>ʥl?+jrl—;Rb-76Z`N*ku|{-T\{U/xUzA쫯WGМ7M fs˸k'nG˼CS'?+t :( >`0{wL݈=6 7acޞ "@f40~qe^qك/.7Egu fdҽl*#IȊ"c=;R|^[tM@M;.J+I:j`pIyIL>JR[fdM<{эds;* Q =bdMb"ݛB)ݥ cw'Q—\zyՄ^XZ|7)Z1j)2Ή©W)m6Vdu5X(ѡ+`HQgv Ȓ^ ] 4\l_ ـbSؚ.)"#3e;;qaم=l? L8H\v*-.2&flXA("'RۥātݚH{$ yl.I.׬F518-F9 Qĭi{µvmX1@e-xuukfh0¦/ȋ$L,!B3nM&gh0Γ}")[@}7 rPv\ދfP s6]́ʔR>G& UP?/%UoxGC쩜͠d5UƝҳ^V55kkZތ&Lu?&aM%eHF+RS*z}5waRy9]%^=&:{.Ł+*5[}Fkd-B*nXy/"k $o$ U/۽&ݔA>#a0w :t'?;ظ],sF1X)1mڏM5@_ @ cY+$(}j$ B6S4 tdYn v&*QMv\;OD?L䗴ӘƵgXCڿ# {ۃFV(.Q{Ur.ki1õcZS}}UH(B֯wU!s d93H|NʏQ7Du(Q̇%ы CHUg#ê+Q&^"S==<=>";ݒKSrH~s=5r^] 3-Z>Zf?}o/J9 h(p֮}ȸ#?wew2ZA]L9vy]fQ#tI ܀%F-P &uQu\ 684.֥Vk;ʸ,\eH>+;5yΕ҄0AfI޷^10Kk,(Q@$}/WI(HX2~ ya lSa҃U'$@r0Wx1?$ IYM/QX]7 ]]=PQ7VB6]0㘾*≜ș0 r05=D2s2 ρ|)|(2NLhU'[H:ݛ5'p ;!O5&uP, fƼ;4wa@Wen6.V@CNeyԊtXJDs>ί5zw8,NtIhB/FI+'0&6Qg8)>ı\ʯ2,nђ_M[Eʯ;Kc%yE)2<іpQZuG0HV~+c~v'.rKu {H90_#0 .re@S ; EvAcBM/,Kf-EXuyBSNpnlqhq܋&U_(р|^H$1/TUkR`hȥ]:4ajɇ^ΚsUFg)CQ^~M R|zdcº?_kR9K?5*a٥ȕC,йW91S9T\CDd,ϳ|rN\pA HZӱ]r^MGp+ӝLÉGNZ5u8ˋ9i٤B@8Q:ƈ l㢇n|ыX{ Nb1twi4T}S"]JFsbw8흢9V4uX 힉-ҮӺ\ 8E/JF>(fPvM^+ӚVkG#X.h}(v"\T)s#nD)ñy\<.ʠ %r 7@nH\WbY|F.vlKb]qk1<> (|0J[;}ܜvjTn`ZX/"]:儐8r#'sͺm=b"_9I7άnNg͆^4V쿼 FRZ֒ɹ{;M.0S[zb :i?gb0D7l@\Z`IcF=i)붇hQ~rPdIGY}Td)-G$_&ssCT 먦)_bG_r"bEloiPJ]f+qډP'ep#jQvi98dSC&4Z5v%49^_6ӗm#SpBsɹ埼P *~F}/-.M:NK.W{/7HWu^ߟy~ifc ֟3,XeDj+ߴoVE;_Gȉ}kj*f9[F*,נ#4(X [L"ou(Ә'Lljn: ~d"ڎ}1Qb>)N,h֙aeoy;,d6 <8E h9'\7p &W_6N[% KNQHZ$5{-km9֩0?iZw '^>b-nFjLtziK#}=[`:ϵ)&c$mCHl[m^ֿʿ#x_E=wЏx3m "c4/D$J}A sL @B4~Ǥ6dwe"ÃO3P9h9v-wuћ^nmuW薥iyH;e)s@ O<4}`xFM#:t;Z#=ZxI[8kInm|T >~wL nn|?#}H"rEu8J愉1S2M()#(&$Ѕ MUGJk&!]p#!) XNHY̋~6ϓJ~"t,p/w[w{z{_bS'pWVT83Ǩ4G2czM#"R}v g4CZUj̼C{"DIg\擧$$&; 1ԭ^뤆g H=(OXOruk:`a)Ӻ֗"@*"H=I߽O,Nľ}1DJ8(CM6>,iHy*zHS*gauUW(Z3gXߔH)C 4Ž7zoKN S:9ʯ Sgde_3Y*m[^46' Ezw߇Qg7*p7J0ȺQSD|A-olT9rRw{:.U:rL 6n\(o:><[&Ӎ|Vso-(b|KMQË7nտ*p? 6aKzZۮ ^3-7FY#[Y+]d,~PJu?!xW1؁;qxmx0u%gТc]@ nf[ *ij Wn֮ ] 5kyLBQ7R<2yirֿ T>HҏRqmBZ8`(*B 4C(q&) %@y!UU1͏\Px nX&_ޏ> _ pDeWLZ&.F\$@(mJG= me504AZ مЎ3蔞nS@6FYe]3SoRq^jMD`]/gǹœ*xQgia.P6IJM\1!(Y 1@o2vf>6p7Z5̅7J 0nydϔ.4$JOd0}Z~ƽZM!m)Nv/@ݯʠ#d<,5iF̈nwLN ǖ Yq֫SyLY^ < $Sp*Kq mMiN1Uș-,焊|)B<+xLIOo%ڲMcm2(1خP,uljCԓqL(%*q do74^Eb1ƖfHoǢe_XwLAsa8FADJRgW 3~]0rQYٺn@~kb\Bqm>v0/%of߹Y-snVq\x!V7'}ǵ"` (E*5 FkײDG!xØP{#?L{^>LI V[`ɇ?y"wSYF2`^QvzIA #GLL5uޮMdZJn 4+4\֌B)名ϑa9ŹXI5zfkq+}V!?6zL (f:KfD%?,jH__}Sݪ쨬՜R+L*.r[rB,pc07nC7/{v̳awh>;:sDt_vbpvj\m$2}*=QI^Z*L(%,;fn-ÿ$e6PܗVjr^GCUҝhUʩ?eŝ @}f'dK(Qr8_U(yYUMiY$[xm=Oj}Q6yG?n ?j7M$>YyM#3D l]ci2)wKݳVؼ6'ѓ\",uphO!5]rL:Uxs0Q*NnE!lkd bgM+hmbC+N4w ٪Pq㩈t'`|br JmFRM%]sNZvH7>dp&EOSc∖mcD6ae!I>H|Ri_j?d|&H3RǐePτEJlTHkyeїT:;2Sa{[};֍b|uXO!-ݡlp_Sa2Ci;,Ue 8ƩwA(!&H{gfH8* pfvX0شq=B/c4YyԼzy0", CS=5aCJ Qgts8y{ixUn/:+CH!k"Oʐƭ?_k6'c@!W,pL'XI3ր?K7p;mlA>→r ):VU2mk ~M5T=*wpql|uchNARV3۹'ZNSon '[ObN~\s2OKJDKB %e&aWf4kWBFwA5 M_;K)1`(en"^OM1B>BJW/gK#$w_2*,&ǒ!WۺE;x)=izN4~x2N)pUkGle)\ZGO۩v6W=ӹဍy(^2.JBr4Ix⯰['NQᶯK뚌yܩ.7|Rkk'C+GfFuTW;u`EG@(g[ֆ ȉ?/r)C95z-^n'X~j#uM"ȎIr|~ Px Z并-_U?n${sW(P{P̓vq3 {NY)sR].O:r6[\gɟ{Ut V>5DH v87+)h! P W5p![HS/^R6d pbdU]9PL#څ!6tt` &}pQҪk[ѥRJU#fP4%8*,e,Zrn[FG~>Gs/IxZ?]~"?@ )5ߵzU.p##hǺJ!NA AGB ͺ*h\KfUm5&#Vt?NwfaQ)bn z:zʑ>@E$WBC7sg -kߎl[jms?$>̰U8ǶZ p<u '>Q*,>=I,/_R/daν׭bh\+砨<ͲOFhdJ.H7sƐUJ4WóqY嘯$﵋A ZYcXxCWL#%FV^Y8JI|B|m:gZ'5B.sp]O#҈77=jw5IkzUtMm^ZWFe]8>UEJ{3yUbӢj&r#CyYפt4d0fjv)WeCeXņ&7$ 筨`\Nw5K0Ts,d;j,HϾcUεs̪jmNzG`Z јve!+ZJur%R[sÀv,ž拹+|}n?[O\=~lWe}/f2W٧m_N>)/ce:ayw]~o|@<` $ A_1Rϥ [ 比<0oaQ5;4ZLo¤]Jˬ<l?hek~rNQѬ7 &3jѬɯdU\T@~S :)yU ]S FIRԲ#NS9 %㴽q<ڸua,ek0&~j9h P4ow21KEiٜ/Wv)}dM 8Xp? Z6e.6[DH}"W/njuWa>Y=D*d$Kw/$ntwv f jiapDyIt zJ\6^=GF'C(ڢa.9dȨx☐aCl,hJ㋹ s+N[AS<.XwOMA>)X?+b r$I%_6K).;UfQҏݫk1-Tqeq$4APu-:76nuU~ ( K@:<qtԐnZG~S/oYO:Sd 'DҢpW< ^N zjmVlD,h7|LN#بrUоg$n;IϝkY3\/B4y u/%/`ok/q&gqQmZoVhBFlAKK+=%#`m{MMOk4MܟԴZ| szħﻳRݮ_a̽bV:9'!hmu"L&Oz}^ tA5t I]dZHH=xQP r*L g2* =e(!{>ږ"w HQi;o"zE(Dw*CKm& THW9jxrj?k xwN!(*-ǁtw90 rP1qZ? GNy Bz{<]t~j8\0ΥIo%(HtrF'Nry}[$pwWp-dLf_F|C0^Br6Vs~fc~^Z[\&bB CyN)3kၵ@*C8ѰY\;z@1H*)32,C(i5*ens!Rnҍ%hT& "eŴj)τмDCY~)s>nr<[b;\rόhb<}sBb[J]3]?\gHi+N>uO1|3m-Dˡ!-Nr'Fst-#lɇucdM 1<%}e((4%Gz旗Ϟwm$ۢ{M&%R?ۊ(c>39qHBbH˜s>[-^]U әK$h]{L|~#U0{YQw$HVjHoPSbn P>PF/-lbc_k^W_gEM^nJ=ujO(ڄGǣ Ûkn(h3' d ): r$,(tǶ} 6,wߘ +)*s¸A0wH2^],3U3#xYLb`SX(~3@/$@ho! OZ?DWDe $ucq$1c5.J sq/`A楄HWy7tMCaU4h` jCnI1rP:1cM]MX-ӌʶ| xB,+=.Szi9;{k 7zcd'^Nk\?YA;  =W'(Gu rdG~ӗS A_IX5 St} \#5n!S^Tbc#D&qaotAt$ Q!q @C-rUYoy r@=@=h T?4)uM҉:'Bʚ}llW{M,,‪1mZEz fCNb-v#LGh _FDw=!AŶ1lⳬ9Kr;O//[_|XbXF>L`I5=1U]5:4rΕC6tE Mcq{#g_N#^u]8u+gE'/.-3OZM>~JT|,T6^JZ k5:K8*ɆWg.i ϖȬ0kv4IQRgdHߔżM~&fϟGAK0[ӽA׷$V A(mL'NoDF|I]q/ľ8C99f׮]*xl/H(G4tJ!O.D@;]t@.uGIպV{ΞsَCotn,[ia]5͢[ZP$*v`߸Za:V+QQ0r]ֈG~_A#2t^+Gؠ`Խ50+-WúfIWI=ϏgV/Wȉ>$s:x/RĥD` XaR3ⲳ\k0bbiv2Q17f~?u!X Ľ,DLJ} qW{^fy%/;.XP2FbK0tf!s> =ןevK}3`F<&t&t{ƟKk_H5PsK]%8sw6Lw0f]n908wՎq4\A".޻67N܀gDMx&kxc]ex NWZ^]׳uӽjv޺982m>. (y!9G{M|=/2HwɏUu'ςf&5 scFD~G X s# cG yv݃M IU?痽2w~I>Lp G{_a)*ZJ2uzhk[Zk]L5\Oj呸f+G,gͶ[vsڠtƍhxx4kT .$9F=f"*ˎi5r`=Q2AR毛Ѩ2Ԟ!$z+!4֊1rcp4155vx$9+/@&#!<[Ɔ `Նʤq~Q\l}/ueH . 䠫EnѡAc|zeUČp]%|{3Xԣbn8<:> ="8\45:HĪ1/7T`VSrT2}/nRWtyΖH{-S_e::^sC>'Y"E7Zv:&7npܒ9z_Lovs]Ӿh\7V1u\V N`ۺfׯe¾lHLN_sY{E+AmO4dt{iKi/[Y?qk'&H^tcber>`:uXhuTK»\Jг {U_&`z`)ArəWM\ 2/D/UY`ucc?V5SN&^R\{g2@DE/\- /"U9Qr6wb}GƢ/гxaPZEe$gN CQ$# 'T0bATv}n1MNDA1 4&rw1ys$`TB~ț,}~7 ɷI6y6Swv'>} @(8 *7}~,XJ ($*Q5Q/~zBQ/|Vl Kvu;)}>J~n\{ TCqʬRy(oo5nP @Ɇ?Q#:L{uL/EĆsU'{?1A+ mT b&T N60lsv-֫x{6@>A'Fޫab{U-j2':R }Z=PBq\ 'Vq PD2t">ƚ?u|!jD;(E\`Leb}y>uP g#{-`m4[M ~ 9Y y(/6yE6z{k!O=WM"Q#*"yHx7srxWKVڄ.K( i|0lN4J?0Sv R##JwXVP ȵ3O툅F8@{ #ݐݏ?{5JJ5 /胬v󑅨^r3`Y_پ$!_%ms+.F"eonNUPnn(+A y -[/_ƟOn_mCJ[J}Ƈ+!DQ Y?6q(\+oyJuaoԲhF3Il˿'TVjDoEQ[S ]Xj O[0>?lGn;:k%q Mr 0kϭ/`݂0v ^^UMhuT]qVuuň/:F/ v~粟۲>ݬƍ,2ȡ̜|A^?x\lRԷ9Щm9o B:`?ߺX3796n/[2Y266oU͡u\7Ȩsȷlmdyh~oX諡w (uS~l~n`j4M~ `lkc{+my-e6Cjů@nvat~ 5FG$ԑ܇AlnJLt=3GnO׏SpyшVE_x( Va`f7S2+.h(#]е=传 BqC 0$61iVQ+8= Re=F#}ӡOwZ)T?N8xphg2%OgzM_9?Cnkw?:g3דrUӿf'Ý8@,H/T7 D7*?{_Te%.Mu0Vf)Un.¹RU9i?͕Vrrb_LnxKRXjjX䮵eNFu{$.o`xv|nVVbzSk'k& -EM%w"/q7t ٸbJ~Adh~ᇸϜc{ٜ`XV(IK(`a-A] ~a ATcF`_!Am]Ϙ^"L$ 'ĎA1-~`ÊLUĄ+]fz-uy2s%]-rJ{9%|gWBR*W(7oǡ\\]L{" O[\ ^3J6Xb2eɒ:H~-X/ m_&+'@oo㮧񬬊7΁#Y B8y$G 9X}:ҫD-C0B[oCgnq4fO"R'Ź[^!xfP`eԲ&2\vIG_ InEoT*KP[h ߖk~.Hn8#)H/r9/D=Eܮ8tݑol-Hn_ &ʘ^@T*/<}LAG.hPxGzD8E){VJ..\n %Q#?z|?n)(/$ Oܻ [ؘ\O˲~XwՒxAOnXQ^J)!vl *! IO/k ?:&gB8* ro{.`BCT'5LgDmx6kO1OK>;n` },EwpGBBVLc N8تs⋸!s.$hQ҅[=D;JT1pdax]/߈CⓞW%Y99^z9AЬͿIVV 1vd͝)X/]%;)cU~RЌ~<`ܽTѡkteq<&U_%1O▹cj{,Q MS5'g,=p/2PV';;Lk7\2OKlW pLp p[[vA z+`,uh%XoY<=b= P~b`6iAtĶX3=ͦFE .nS RIg\>)3?KO'5NZ9V\'cT+U zA"VխCC~UƯyPoS;ݜQAw=DӲ]֫FbNN"O|v:D;nG,.~gGbtx >[Vgm\鬱Mʤw*^/*WsAkYYz5>*J{MOx-0HXqFKQ2!ѓlyx֮3/riw` Ij 豹%U&rƉ;3iC}%ҺFd p zMՑ1~=)nO9)CVNJsgp4PIX )_"Q΢$3qpfͮɫNӈ>.LO{lB5HA!៳[@y UP5BWL բ,S )mҒ Ȼ3YIX~E'MD$Kޗr jț 2)i@Er= I'!YWcoOxL&KK(4[ϽHIowt<9ۨ$'nLJ{.)Xʇ>EE>.a]TmZ ^2~\3ƪJ/vOEy *?ӶTwfqʆ2'22]1`'b.𔇩pAr<:t%QP]9ܵ`O~:2vTj 8K􆹚|0mVs'-h~A v78>? -tuG` =ݗq=F evsH8v A k Ec!q#)K7E!]M@Ÿ㝎m|q\zO($Pp vX|/S#N">u 7*pCgB\anʣx| L+ k49MߦTld6Q@-gTa<%7?[_>t_p/ݲ{f(g굒0XZ["+#9*8ZZxr[+Wh֒JkUWǒ7stsb?>oV{@5{i, E0)`/_R MnFq34yמ6_@!8bApYw׍9啔`봰*]3T9trڴ4gt\j%kg# &{J'o?8 Ws YQ/8Fs\>x T[{6B\h`b\`5"KdU xc([gtJAnѧht1d G[;#@XX,@i`cXvhn [)E6(X,L%A<\ǠBFuu6ݥ+Y[jw99]k:O~V0, Bg~@L|GK>I6EE nxj 8NCM?x8 B<# gAIMǏTHL}3B"*rv}")Eu`TQɋB5'ap cxSM `LJEHKRzT [{k7'+si5[ Cpp+fq=?f[m`-7T΃vd ]6]A並,ǭ7D9/|ybz持pOzM1M_;"iI37-j;j3#7nǐmz4G7\}K^լܙ^/KOonVg/+4Bw5)Z@olcnNLW%rEZO7#&eBUݾY4bF}NctRR8EJ!e =S(_Ps \*%ō֐/B.VbM_pxk]0-J)闕Vw88j"I,P2]ѝYqv/pG9/UJ'z_O/yR/5f*̒)1b5,$}^$äxv{YTTڤ\4XI0%æZ!ΧѨ\z \P|轻V^$D\ ȃ/Ӓɜ<5V* OЈW))T*$uX4h0f=tSm\%NUCtTօl,?|i}/VXwvc\Fa28[WbFE=; 1҉k1COI%ajfj_{OJN ;W^bQBAȉkYDMFV@'~KE\x!ȣfxyMw].ZDSz\!Kjjn<AMILWU1B-Ռeaz?g$3\khYMP)xXX5!¨ <%|23K1Y-t'9\ rnChnm t^ݙ|&[m?l aFb'V4X"o'Ȁ4E/ yPaNErawٿSc~-M8ŝKe,H![* FD-{Xw ʒhz7jV^m.ƃY1և/-ɾg =^^#Q~6}3ikVHnĘc YTs+VMEw(M2sqL Dx$W-*|pKYWi[1 6p//Ζzvݙܮ9$3$dnc]Xn }P}[qc|D/1DU>hG_k`M9tUh:B(%m[$7IO026g6Yp: )0NjҖmr^a:4@td檐H,Y%,="Qfcu2[3VKqŘ/^"8K[n1gD{ӶB >V_(kUmn'?F>W՚ ;EGiTjVTIj߅GyLK71CJ*Kr9*Qp|<`϶ޒ)Z8gn*~[/[wuLB"wgd%Ks~^ w$TEӮܲD:l {T5XXHk=rP}R7+mhb!Zȉ dԮ:a ~Be("Kܹǃ!~g 晇F،XO%8a N #Dnl6R=IKdݛNWhJtI3_ikgԻm#1,ZKhUuq7ާZB&ѱXX(UnZUxd3YZANN\p1?z箧d:'^m]7LGgfy܀] eIFs-:dLܕAz5*IV{: Ei_rׅ&禢,k6q;ə%%!I /n@Ik*ʤ~J2*74 fY|kA8t["O;bydoHSXce/?]jKB!B"G?;a\dMh|rpS fȔC`sm=_!3[B^;T1C8s(, M&p\N5' + air![Vz</Ffr I^GakZ9dtLi^#K]|5=Z^nZ0)ѷ_xU5tSBn: vGb{g×-antpZP&] {Z;; g*$/gћC J&4csh]/-q^RwToLv 3YO1(D@ *:;NdY"uozYP]Fh|c9}x%<&G%La2r$<1 sؕV^;4a$ *~F^*ӔyT0[KBBL޴!ŢiUFݽfI"BFn OCns*ȅ*{_ CJ4#E&"]HzD#N$)m3U ڕ+8N/royU~0H Y M;)^99~2kGR%?MsC( K8;X8FLsd6i} R ~mV -$+LWΦx1ڼwҀ%Kg̔5 2Žʧw2ĝ2 gt9+`)aP Lh2vЧ Qx66R) +8_7Yb*w{N6~knࣻ<m@b"gzO! .Ӌ)ja&_NlGe3 ICV\E4s)"HMC l2Ib!bG.G?L"nn4?c\?~8>k}+|\eW>j>-˄XWԜ,S}\'$Lڈ.(G{wI'Uw6S>ozJBϋu9rtC719X; š"(X=ՒefhESTbRB[8 Xn,db_` FFa,p Ÿ1uc k$;a\F H Xlj&ƙı.^fFBJİO8NH5=OVK9#il/ۓNVFoq=Ö#[?t#[׵X3- ᵂT2}GruoK,ZaҮ=("wWOwڕhƅ~yݵg8ņϛO_LxG~%? xbSY]1m姃"][_nݲ St:_ ÃP9.4)̰8Dyn8 4 dRq2$QY8ޑlnYi0aڲ$kTRt7eqZK1Oi{\13,~v2*ptJ' Yde,SE<N=ӄ('ed ~&[9r,#wFtts5"~XNFك>m+*UՏ=1?NO `JL\R DSz.MBC"n-f/niI6s%w{+? !oe< FWи2zZL(ԄP,EB˃ƙhUT^Xy9fbv 0Z^\N]lP~׉q^;\DsYA$R%87%VԲ&uǦ۞Hm89A!ȋl:GAYp3 aRs/_wv[lQTVDݲn}G>^(ҤB2pL8QB(8N"-TzDn|ca2EBw.DJu'7 A^]6j 4e𴰋BJ"'`D,s Ҷ i4cZzo3'-_Jge-:WMA߻Pd6/E"L}?'=oV;I?2< !l~2b],|MTS.J||vDZX_&h$i)D(Ɩ5c(ʄ¸\xAPF.EF&Ò2L[{wC3! 疓4ֳ(Yq&3!C}"V "Jf<Z^q!>_rb`vx3SZ%]u_-?5k4#1ղB 3h"Lj>;r6Ú^gRSQ:aL|l ]u @*k8UgC"! 'Y,pt{*Fϵ_j sW`{G%Z6L(M:B!(V)Y5 .AfLvK.Ź߅Ce(r0qM>4و&:5B)$T1ز~Ņ]c=Ѯ|ɠ}nj1GQ7(o{EKAJJxP_R0'nT8d$n: Y %3:>8:me`Y ʆLe-_x%5רfW۝ ._ !J8H>|R(؞!n`3^;k|7!OsF#2̕?tT{0I &+O%<'%<#j㮘=[nQ9b3~(\NEX"yLa {0@c5w焨yy%B|[^/V:E9Q<\,G'ӌ,`nMvT؋í!&O O,cE(.3'bj<a򱷖4YPKLfԄ%UedXY 5:e\ vɅ+[J%|Xt4 AesC0 5ŸLHHs\?G.xHd>gEoGDŨR\)/f=-InbU\.eArb;di6%]RПY3nrz7ʉFfZ`{x;@Xd+'ҽK61Am204p @N s4 UpfU;;zS`:j:šR_|r~5oу!DR27 =lrML&>Nתe %GsIP:1O#m3H}Go&e{$M>@ZiW#ll-­^~D _jցR35<0%7n +F*MAm|3A ,.Ab<AE;tD* uLkO2 s2ltT< 䇙N-еA~#?^Ʃ'nbڳjA)GMr}gRD{en}`k\Gl"zX&%p-`/$S$Lr/y"wkJٱ339:opGE~>Y%U~A HvpCݱ%4 2Afvx9y#+|RgP^h-< e*6t.>rn HܥxZE$BQGq;-µbėk#Ddd I &CdR/BjGs-γ%j( ^ @ԙ+D%x:&-jj\TP]|Xb? m#֪fG|5iYř󮅁ݓztv\o筴mSWM[s:\+y)}wU5aVՋr&)Ԓ{.}Tŋw"];D+CX-7KA7R8*lI[F0EG D҂Ǭ4CZ yIedpVF]lj S/j&`k l"j.~w~IrUM/}^In*qGr7Y 0]5E^ =էWU0J: $3h7dTapy!oҚǵi/uHYO?`6*d#10_¹WgtAWex<`t c`p9T3DFT\/sj:Vy*lBD2 $qΥ=֌hꚣ&nÉ!JnZxPPP.a;\nYzt=g;S_]t`X4s,&DD?"G~Pr)؋Uq$}qmp^| e)h2w{{LKhP)Yh/*]!Z(TWM9m" ,5Pȉ8&Ԁ=rIh]H +ߎzm0 @I~وBzk#)?#eZݶW`ZɧG-A2aC֣Vn>rih;3K_y)&JV q%(Wi)P$RYljc02KEf3ۨJGRPQZ";WCMmah 0Z4cXJ$ڋFxX>[_NFoL?跨@3]]"Yw \gӪI\~?c(r9Cz1vPN SCv&x"! | 95GRz af*Ov rno,=g\?>oMgwaQnٸrs| 㒹f.p{"ז0`\A=Oh & V0[\.f,ӟ;^5xșǁ2[ux&o ɗ_v\HvgR8I^|}%Еʃe-h gTbָd>̴fjHR uqX h}r]ˉ FxU`5>:#bLmiAUueɼڨDQ`fC#t@ѧa^ctLպB#!DwrcJge_Ƿ"ٻ|mHֳb>wd~M(.\Q9]BuD 0dΊlXY;!9J\~|˩iAd_K-`|h{ E7B ' ]juS$$9ҹqљ ";k"L}'w٩UO{o4X Bp%=)vٕ-nOrv ɋ$,CȨeS-8 5p^0T'9Q{¤ǁmṊZPknj^8d޾19Qk% UHAv^Ls#}0q9{]a M/*Ѯ?Zs0C΂lsMz4(,h\t? 7l#sEQ<-f旌'Zʲ_4dݖEn'^n%Uĝ4 [Lw,w-~p0?ܮ 3?WPlI營?Q9x/Iĩ\xu.#k)=I6Y?-NKnL~-ZGsyr7 7L,MI6py2]Vg;lyn,zs5qߧL9g*'[i$rsl*mwjx 㬑q :r%L@3v־)t}Kf@r M;druR*{x⸖S]cѤm}AٹF"bfj֗DGf"+U,v"u[a*-ȈlZቁ-`nu%c] QD‰;ebkgp,bP P"m1h QJx%$h|7rg[-?*%@!lg7si$q먖K`* *2 |AU<\)G&i2U N2KCw:0>:mvd"9ce%^ym˿8 eg ̓4`lD~}NW9#hhgrg/җ|"nC\JO]Ex*2 $(R曶 FN4vIfna<9@ՇDWU6}m'r1h%b ={P_x|1 Re<6J:Ic|i`"pD e"RϿ5||pL lxK"3a#}V?M{BPb0,}bnد?;MrX~PAeU=DjDO|.O_;17J D'4Q4App=7㿒 D X6$GF˨L0W$ω~iSLC@EɼlGNzWWB9sd'F/ճoao}=U:Z\%l憻3ɶ \W?n]/X6]mh&6{ddb֎gQ׷ȵgCD)ya"ȓKw:Ǩq|N& JP1,|ҧ7*hZO\/[ЊX"Knj˷ˋLiQJ]޺/kYMRE^6(mMĹy:iz*.0\|~ݟW97ūYl[F;#ˈn Ca_/|݄Hi^{ut^'_zth bny#6ɴuŭ/;NWDjnr f'pAƭd'9d Abeb ch/1b*O*zY8;;Ⱥg_; dks55&JXPM>>9Or*Hӊ(_S1 b=|w$^Ќӧꡭ3#yT!4QPL[S9YNIUCdK*r\)p4DD(MOWf-,$GIqNł#V'v_Z>d/=v]u,'ӧV?={͋g=zDoۃh)~:Y J]ǵ~3R>epXSXTSDq,yz}A4ۼYos̝0p+U/V84/ʙҲm5$k= #Px\;֙ѤKig+ o w&TyJcݫE1mO)nH6;#ZK/sZ@1a9sGkC6WXBQC\m$2RwqB gᇘ)vaW*BvD^4aJvs Yzfvt,uFm7'LF|jw9jQMUtշbp7EIeESdyaev7vcLgTкSg8W" bMK lBx4d|L$G*pl5yGFy˲7I>%%ZnDf)X 3pR D˝4nC׉ٔJ."햤;;Z瑓\גbveMR)B wM,ן'\~Zt7 Akw„.k&rn٧=0lx1qI-Paqq^\4w\l"}?$ : t7({GLJl`|sS|g~ mv׷qՇe j &nEW *xƊהMVD)E[ihy+, ձ3 .$G# 8WUx|C r 6lp C;5m([=_,bKdY=@U#U {"edl~[$Ƙ9=}$U "=q6ML)/~ O/^&2|h[Rm 08mt*^M-R[m%bn͠|_˓'^<9go_g/ޞH$b5[=oד28e1}'R(BZY8Cz{ eSb:R2|&?=å$Xs- iլp dLlE#<)L:Ntήa!GuueӖ^Ru6`CU!-b%2՗,neKQA$a|~ʂ(01եJyCfതHuRdq *k{5xNaQg'C.HTq}ͤk >SQfE&w~v89t Ԯ#r."7ALUi{as in]y2ٟ6}/퀁6ዮ^SPVX(`pR%"ׂ)@qe[O'C@ܒ 'uD!V%] Dh˪3rBOIZnMЬM(LLFIrX3UdW~';f7Oރ{~7}k!w扱8+ȪH#x;0A`|~ï1 d K{a΍._ d W6ߏ刌Hd5% nޡ̒$m iwbxL*ne˪K R,%y/F .$h/ j2`tk&w'9,k3"$0Sz&^@KVSw;\ꃻIw|ptGs0+>B` G@aE@qs1)5fQaNu+ &n붥02fWW+ǀ~2pnR "QAxp(HR  r3AyHI]7=ؗ=_(eQ6+pb%:=H U M@ZN<ܡ!VCd -vWwkT"8LjV rk"ț˹> P c5Df6TM8T( ?v9:JwN_*=M$Ԥ-Uodr9\B["g(%i%j Zi ,]zwAk"$<2D.StxG9 6k=]ͲlYt~XQMm;pT>yv-}pE0)b&XֽwPȠYkf=TټXh>΋qjS]?p$ki+N܂r7_I{7&e{/̖y>N# I$絛`nhPdD@%gEl3EQB3Cn"<#CY[-5r8)FD ̦^ק,˿ Ksg1ǿ%ރD`܈%|k\O{0-cuM{K5[qr.u"`#wmuS#C# EAJ I 3ZZ&Fc|c+fn& %.M%Y9 ĮGfқ> =BtHE./KC)L#rhW'x(nG̠C6+Q% &J3fs&)&]Yⱱ$Dor7'5 դ~=q ڮN[߁_W$ ϱJqz,}bP.O >nn8bqUD(nt yzz0w6Z"|2m1̈`w ?>6HoߊѸjO}vS1 ?&"AceIv[ [[bmqwnhJ]v5}k~}oiAL|-a{pHʻayDHrkut6,DLs7$:c~㈷dbZ)^R9eq*(%K#|JDzMFO aE:}AJI`pZr p,Y޲!$86YalYmYqL˨{g Ӿ}:ЕiCвtJvZʴBm+فIǯuls=wZ3mZ׆FA.c8iKu)UJc\t-8BM +лZ* ao{ &dKǚ{pcgEMj)aΉ "(CicQ37'BnmG_6157B36e.vEcF  Pe  $0`w,zp^+LqQK ڬAl JgSD!hjz}*16!I"gR2ҝ fPn(gN]\2"g!9z'GA66R Iٌ`\Sa+pj%A rZ~nDkK:vy1D<}ȕnI;(e<,,^iJPndZp8 .mbeQh,fRfLz"p9o$_9)"4!}!6Ai>ԍfȖ\ӹ *$*Eh=k2%b1W #R**E )]R}Bp!p*4}aQ|$<+ *8֠q}TL86w+F.XFER08poZ dPeL!!8lwU)9L^@1{ p ++Y,nO%v׭Ge=HaCRx\,x2dZi[Pkg>crE9,{LV'̥فn3J!۶Hw6A0"3V8xK9g]5y )4<'$9g:ئ8AmWhZ+WFeQB@%fiELF*|J -y !),&&  ySXO 2Tsl9vf%(iA"B&هOC.03hV]h\ ‰Gإx9왜MoKh+ "_IgؐUO&^93-f=o=XOs0ppҩk8QR#%_Dmjgm̰ VgS%ke<;@"y*QDIlƴ˹9tC䙞Ryб8Ǒ=&YOCf :%%;Àөދ]W" &we<$f6|_< !Tֆ;٧{*!<-KT~S#L^6c˜$og ɥ-QV4/Pϐ`Iu)ܖ۷5j~BB,mdlFD.7KmX+](\mh/nJ87Y !@5ЌآLal>@bÜdJ"9zFIeh{GL։lj8@;1Q E4}s0#,)% 'OLRL%nalڸQp%قTv\?7nHpO 8|x:n#'ҁ쥔*d^m8K(IjU65ۦᅳ[FfzLm#v|NѓEhN&SUeXLeywB;%rW3k%݇X`I!oiqF$It;GEڐ܌ӌq!!ڤ‰GL+! 1z[ˊz (8ʦLU)PbϰrAPn$:ʴ2׆֕gp$,29!Y7v^qx>#%\:pi|3y:8,F;,dRu߳r?]Lꆉ6lGVcbVT e\GX/|)'}K6H+9uL+}R:5Ͽ|Aܖ Q'&*.3GaVsf %H)NrP(![0,V Mi!,'Z5I@Ɔ0P#RwYJb㥝2]α La\u柛3zg߳b 3MwcEk>U SIydpWhKu?p#v8y89Dl )%щaɳB`~cljtPQ_l;9`T&]+mtV(f^ڶ,5ȋ6~'хj,ҞTa$|;Hl((c/ˈb?JCrVDC u;7oWB2婈!.%$j~VȔ!6$sb۔?9 ` +J"&y P43Ww+tX#,OA %ty[@r& ,#KQCUPB7ǢfNxn[Iɨ&BhJL*8fIOc vÏ Tq$^H;3"vJIody-ȜHdeepsvq/=#tY^NqHl 0aqKeA;_(qд%T`G br35i8uut-klu|<9ÅQrpg;tWdA6˪Y\,Sk%Є9aѽu SXW mami\cMD n1{,͞A 9`j2P^~DfBÏ ?1-pBQr -1e Q(p*N ٰy/A\rj7e{,2KF=!j9\dc∌8a ;)@UENga x |RF,/iNuz1#<(/[RK^ S,8qs6v'D Be+Խ85P,XR1yڬiΡΤ.0T'yW:=fiM2]1tLoz7BBڢ%u#Ni?MHU}}/1Lz${(;`n c[&bxv-(z)Ĕ\ؙfҰ凌;|XIX^Eb%d1)^[6c :$VlDqiA'$fD"x$fksg $o(-Wlad<0),RN#9#J|3xxA-&4Px_ i4ڼb*gv$bsbe;)H3$iQ]# 13R) 􊯷OMHH|t)Dʪ"470PZz$&{Sv=E._EHf#DL%^OKx=$f7qʵI@@]XI*E}iȠ6k3òt1 rչcO1[cvrJfPR*fŲ3aCZ7BXW|lqohWʐIDp$pc25 UA(5[ϒa<\`or5nT-5ƛD\ (W7v8V0SB9"2, ʊ lWWyb2mԿLJ2[9"(ڱ i+82-=_M&'cx61g.A`9A%%eVmlF !ݼ_u PWhNpeodP8gQ/qG[؍kd&]fǑ`+7 !3%籔Q=FXizAGڤI 0I?L/>7P!>vtdV2'ym/r"O-3hDD/EO.{dhាzb[L&l IZ+g{Qb ,S 4*E&L1Gh{%Riߍc> X0 [JM$%y19;?gFc`FD`]8FY_+"iHGÄ0ULN' ,ё,6Jcc`ۑBZQg T9YE[NͤMcRm׋)\(h(ҟ9&?'{Jf:EF-9s9g1e "X$M>dxAg-hDިf1cFe)d2hqv#YU<ȌsziwmjG/gŁxTI`+Ӵf܁U{~Lԁ 犞#HRr=zwVЋK#k-S2<Ql;$e`K:_ a̧?Gk "4q"њ:T㎟tyÙdd3'`fFҾkAhjDfkȐ7'F89G"Е2@zMY1#2 |ᓄY#OFx105DVK[4;Nx͸$tHզ`)!-)H"zg-DI3krE( 6Pak צ'0$193v',ᲽpE1 *AwR(LP 1Y #ݗkj=~Hg?nYP[yZ5lpyV˵/n z5ZS FKC3SOB|faI<*4zg `lD* Gs^;8R[aQDnxQ:ɔ3#%3{ m&*kbAOd03:nbjR6SZ`F$u3lL`^pmU+>@ &=ӈYU.WhLelfcӆ1;%=FHZk W(9`gET-)%>҈7?+ہgVB2~jp_坯>j9Vxęi0ȝ H/0#@<8ۇ9{:3c.j&%VĈ':̀fț+_D*`GQ/Ci+efŝtVJ=nmȡ$q6`,@%qB`T۬RY'L1z0KX*WXj$3r)PO☤uw'$7hg՗ uPLҫDG2G!ab&g;;A AsYc4$ 1K9q/ӞE'wDj1\D2_:AlS*R~! ǯ dمAs,cۘ8c/GRX] y$HN mAҐ@h.A£l3o> OsXVS.EJੌTuI 9N*"찳qR4MPWh@)&^*%E`dY`Ĺ:v8}NOoeN`3꾴߁+z[u8G:s::zwv I둶×~wwwvuCHim;<4M?[íNϥ=}ЅvhH.P`:9NߡÇa{N[w^Ρðyл;ajm[;bN{kW7 :C|f+L[^3oo#vā{H^:7p }i_miu Lԑ+e;ݑCH;s=[-=n>Z[Đ8M] Jl6sqbNOgOR$MMKjZ]$n1 mP)w6 8-NaQ 1ELC5@n Iq0 G7XjEUR+0ѝ SSz-7IV:def _Koۡ+)/]PAO|FLVKTVv6ygSBf=iOIWHقK.E:Ƀ?6#bƬm%H^sO`d2Mш@Cs#pqr|Yf  }f;+"72 l'RPbOcM=} 9Rƽnòfg!u;>./x35_[rt|0/]F6R8IS2gմv:?,*Yù77: Xfpx FADŽHJdӚV\%bxj;xWB=E#]45jϺJ$%ib`^, {Ss_j Ё}_4hߠO2&e)AmaڬGZj :sGMOڢCL8p`Ds[!DR`/RIqou1*ݬh_}#1~kfhfoo m7enO~+t!VP|C)NfQ~};T3qv07/QDi-t$ ! WC Ȼ`[e/\]O~;}K=ϝ=y;o>:~'ƿ; WoY6M߷m໡ۻ೥Hym4M|A 922ߎ<j U?2^- (XC͂1[;>4,滑h`rSxBPB8!PF'[TAs3 A ?'j}1Ub*$E)/|M4݂DQPO9?৺pmoO9YgW+C3@51k"ՓG)mcFurMRE ;D(%qJ./`JXI8h"T㣉²Ւq2V@tƔf&ǮTTPfLJj^5CS/MlZLN>Gd?EV±R 3D\ bXb >})Tت~͗B;SR}_ RGZڹ^ycrżJ8P+^L m Y -'_ A[0:c+zC+ a8EOs ,$E'mYK3 l"!ePfFs9S$(Q1&DLQHc|| C%ћB[Q9hd3 028H %MMVE[ӻtk/[h{ܜ){ڼVX&D,yigJϽ?T#)Rµ9W <-kr$&φY]Buac?HMcAX3%}qsUp|nOiU! <~-8pN34z]*Q uōʭ,[j ,TpGމ\0X/uƻC6){s'WtK(=%Ggn -o&b;n *Ftn^Z7'n~BX%f̃^~Bcb(^M_[^Rz4^p /ts;F/9775͐ͩBkU=Wc `.?}_h,? ]'~zI9mFD'[|T_p17lҜ?Icno? ŶDHÃMǣl/- ]Da,SйW97^,x+j?(R͎^8oi!ji߾mgR=L|or };+cP;˜g Qag&LlawTSuMW,PNk*K2orBHHtneh d>2ȫf }ӄg8q¥`Cd ҂5ztF|`],e%W3.u)7Z⫘ nC9K7 }e6^kh-慠|蓟 Ҳ[K'?q?)~N sgh9Mբ6&z~ϡ2CF"w&=H >% P>1e!]ZoA)S#AB;?96L&7nSj@ Gv {@Pլo}Ghru"'"'wmHLRӌ3pBHF[RSuqTkJ zE9'ZhB ڦ"#& T3F|ě̦׺f VW&v#v_!CA8SNCȓm\0;ȂJ7<:Xe [ͻ'0iN?Lhtgճ%9boDN>Lf:4|8' Sz,4AfU`NBb$(ie ZO9%^'niPx`0VZz"C iWe @1c&r2n{;B7EͿ E^ }x$%E%sPuCD_MC;2lP9,`Kte.N/S.g/xLnEb%U*URJ*J$,eIVyl9N/C/&('N#yq@ư&]i9vg@vj_8;@N"0tn" eZd1'jM+ПNƆm #ѸAnm57Y'ҔHKAL2B% UiJ9U -],ƈE;3Η4T9==IM iFuQ~7Oddgr'Yr2=Auc$)Ɲw@!u 3%Rb֙_+2,#Nɠk7`E3Mv2<_,=n&ĆwSI"t h#(f.c'ƭH\Dw:_iIh3)HlX/WU,pOR Ե6;T:`ij?{hxL\4Q;Q]Gda --&9=tWϫXQAE=Q4E̵8Y>3.+a7WfV4'`d34$+ Üwh,v'*6QX:12p&tUE|sRtIO[a3yݱ_XyIiέZb [S{Fj`g=nFbc?O<d/euʽ0U_o>%HYTHb ]])6)}\$kS 97Swͯ oF c~Eu-U$xS1 =kx~g&pߺ{ v\2A/3k!q,|}V|y\y0b߶ϊu_3'$;fEua%|L--]D41Bc%3E?Kd.͛ra(SvYSr-N.bnl(vAj}nCdY*wAyq+iQ̳>Zm +vǗV0+VX@p]?"-X6 EN")ݽb5x|Yfh,Xo_V>2h $˚s-wN-+h-)d]Sb SLhu(x 'QHeEEDzEΪ_8>f~erl$z8NusR5 ɸ[-^ş"V׫*ﭪB74ίWͫ+%<Ʈ$#S0b };;p?nJۉ,,mME2DITUAXQr9ʜ"JǡayNL`{F&%RM|#:|;R]eꜱ# P='&ӟX\DD:z`k)B&.齃|nH1 }{t_Hk}HSˊ/XSCCU=,fHӾ.0LSIk91DF+ wz6 W b5ӚY هsB6P(!XJXQs~^PlMN458Iƙj d&DuTgZ UU2Zy¢C0F'ŚwR0f3[KW40޻HqY*AMa{qXTqzW2%wl*7z'm'IS AH1scy~'fnd)F% 12&yl=iqjJ'n]宭uα7l4jtL՛lAqCH JϐJTMVO "KG "5ӆ]N~ePo}ԩ!/ u"JQumfjr4@&Uɿn鏩ru m+E5 KT(KT[JrzfVJȹ> j֫Vl_X۰!Чjmw{՚ZbllڕmOzզBpB{#ca2A쒰x2uXSVA*lbAsCŮZ5c3 9(s:-+0g>rRF&N?mh *W6~;*we CkC!^ODZw;JW.CW4ϧ1'&Z z t L0Mfpr/6(Yj,}UgNw>Y98ێJv9 OT'叕D:NC]od 1rtx5;?Q(8AALc]Cn{i'h͇ dG 74O:0r$UY[CTc-qKzntez>]Y]\Ud'=%0lA]F4P m|8EP9("fRqHc0 Q?SYRh5TYG6F؊8{?Sy~:Or41,jL ੀB])~13Gv% Dz A'ŭѯ"a3qx=ӯŃ'z*b =ҡ!T$ 7?M.UB^[*ܱj/ׄfp}B%7U|t_'TL9&YMC~.pr/d;v,*Y}PPsp*(mWj&JN>IZ/GZb}B՟Jx( wzTLa xcң!TNWBIϒ_(c-X[\6cIx|J?:tc1%IvdBDSjwWSZ]d$ޚsѷ(ȆN)ݕVu0pקwU7"IeP쏺x [VttX}t~tXvD* ڽuSm*?9c8sͣjqTm^%o8ȚK%$|>sGGUyʢH?пUEe.J8F\D՜Dm9oEPa3|oQ+5|[㋠`U^.~B0C ռDqMV,9dRw $vP]'TB¼o=_'d641%n3/([.  ?8ˍ;^I8cL& P(>pN #=S5:O\GoԱ9ZOcOY_o-#D/gԫV0+^8 =hO])H ly+h QLG"9v~B1rr)BzG6xBW;^:Ï<;w}TM 8.:;D..3oJl*}Q' (,Ei:WLStϕ|kdsbg9w:EekXƒDZR`63w%N_3);AP,'Жu>_ 8 ۮRVh7@SB`AK?kRm7SݝBkKK:XٓZ-wRn}րq6љD-*KTgsSنxfvylYN6-܀TnW,G#طR4sŜ]1aGDV6VvC~os0sbU^t@XY JW^q+uۭ8(vkeD{}y*!]:~hӫP#}#l6?̟i VӷcH7>CM+8 lZļƘǧrc @ zIv(GPtcvɠ̹@[O5{~XZKR~⇕)ۑXJk|,O?VjuNɱDAG[+7*e ﷅBszXa*YSFߓsXՀ4V9"EbGfyƝ4$|hA6y|N,Pњ$L8,$F pP[)YA~c-+́b2xS=(_/HVwS>zy<>*zhWlys ˄P(1Xc"1ƂFRo':M#]*/SH8Q]Q4WIcX+8 ȥ~bZ8j(_1//Ȍf+qxKlN@ fĂarf Ǟ3NfXdpZ0h=v}мd ɼB E:hIFHeQcbq80<W7lsB1wYx|<>؇#?u%DD^Rɂ֒UUD_#qGY:VQ<r ׆.? þQsn`GIW!#)JoW;qN &%kUs\/gsU;J%UkU'תϏU/P$Ή`#{ׅZ)UV礧T|jُA[`SSuG^֑nOX8@\TPʅ5z߫<8:_`0@BjʦyK@`gF 0WEԼVAu}P ԫURJ/@^^)KkԎnMaן~Y4(s:M3* .S;7hjԙ #*XoV[_Mou'VH+UCSRT4rS2P@VEq<갆X(ujChשՋUI7NBTkݘ_NHXRߴ(TYC [kV&@ keU+( j} 8$&)!ŏaɏ¦b`Ep8 Rd؀CM9 n*,BcC@<[3i p:H94y c‡DWM8K"7zԪ8:L1vnj0 x-L\7'8&7j*~gߦ%F5^F-]-) 7ڱ/W$3JߨtrzMrXAm&VMjCUv=&~wig*TQo \ C(b2VZJʺC`Bhx&.]OmO/dPzW (ě?IBǨ 2k:artQnpb\f _ue~X"8*>ywJ$*ktS[aQJ $' Tuɰ|j,*u&dz0&e0 3hert@ 6qЄzزojܜ N}dQH0.]0N )/<=X Q J2#aqNQX+B8Ed)g`0iC>/C@ |"ž(UGp%w(B4 6#$ʶJ\)@c]:z7%-XcHa8Mchғ3HڡZӒt=JKex5.T15"ݭ\1$fbS%eWT"%;\RX<ؕ(d{`2+2l OV3~kf9rcMh:+L)Ad$eHr.jmh rjPOxAXsp뱉 2h(k$׃s1k^a~L|6΍кf}F`h mD[E_HVxp炓!ʀ)|.Znf`ՠTVݢV/ B[TuCI-y!G1XPFߣP~{ {jOẀRFF%ymB-W :>06 •*S6?'{쑋q 8rHArY;Eh`ZqZA1ѬjV*C)(x7vFgd 8|JA1QV1y϶s6O-\ըƂMRS~0D~C:8qtB f8z_qUCfz1v諫jj\<8Hѣ39U>K"|jX58҂ab$WTgjR.v[p˲r>8_DDA!jj鮣mKc6KOEAALRٸٯ~DmT9%Y|Y8)2c0@+h&#j*8K ?TE}jfhHFzh ݋a 0yv{%tLoC/Xb>+tjJY; sBn6m1uco(! &"rLgk0i-"ĭA s\T@j|atEƘ;t lLqYb97ZXHjFK$Z9K`t,~Yqb=SşS+6ij觤n@j z/q9`e@o$a\d͇+ofyTFIuS-K~N: /G#6ౖfϩe6AT 9aɳX0?| ߥVqsMg8[,~՚eGVm(,98Et:71j>_ݭ yѠRY?t-%qYd D_EHwnXZ>r,UpdЮ'.wv~$\4DC̛9x!_lڜɉ/~AEّf|Am=WlupwXxϼEQWAjI ֚@B@t*O-t4518Tm[t㬽E$3Y4n 鱍 9CrqaH,3:Y}DU@)>seŔi@F\*9{xNgx!xf@׍f,'ՎNPX^V4\IWTd3>̜v2!±@PqiGKWϷB"$̴ѫEƜ5&YUw"y~.~l~Z"nzZp =͛jtM<` C{P)*,"FN 8nx#3ɤA^c X6F;$~H̏R<VLzN /vMR!$뗪IMj= @`? |bժPϸ>{ 5?vs_96p|Bpj"%U-'PgT|gYuN?"e@[5~Ϫ#ſ9Ra8AD?ZSq@ZWz*qMEE,pOp^P:Y_:Q7ՅM^3oBU Ƥ/Ds0+ڛADe(Pd|`ýbV,R0- ܜe7.u0|CzE)Qug μˤ ozRDKY>W\ؠ ׈;*{_ /=zkkv:M͍ ͍^u=D>TXotstK^N=?ǜzxKUӋ7^M}j99o@/]7N0_gL>)jwzǷg-߆,/ ҟxnh.oCO|7~zGz0Bc^75^/{04>0[ P =p~CTGPxU=n<at 4DuBcd M^enΤʍHx+iox$2??S#c% ~S53Tg+v};^WO|e?eܱO< qFu6 kx#ht_BJh<jw%j؅ҵ-t@\h} }`JI'4oHϬv y  CxX|͏`E<n pQUz ΒSV? 2pM_O~G# 37IuSp14pq:k~'On]_}O7qg`]Csgbs~>Flz~B {' "8-b/N%|qҗExx3c[i;z+^68H%"w sh@/N{ W<k [۟#;͐U;MU=R-e oryS_qjS}Iԓ0اC]o{ > C,WO‘3sT/{ GQT0OD* ߄"ߠ`MJOß?Ꮑo =gh/JΧwi25_/H2g>\齿wb{ӿ=&t+R?@#W %πdE ճ]3|˞ ^ µ?7il#39梨to{&S /Vfdb5CHyX/z@=tB/Utܪg%d:(Uf*&鹪DΣT=%~9p49Uu&fUm͂D"}Ϭ%&Oͪ*kgW5L?;n?#+TΩZQF΅k.Lt-e׆!kZv =TQrpVTu}]E3eЇb?$n%xBMe?SYkF =GUgЇ4wZ4 &f:SY{7g>?[~9s6zy!<}g1\弪e/x,ij孯\sv~Lm .j~!t uraU$3w20+?da}d1,o.$V\eZ=dKz)U?&H2TuR?q*hЍb;`}`hyNʜo\i_" R?l<+:^빔 Tϟ}M-MyOksS=|ϯ,i4_Umgο;9s9s9sӏ5kP T]]EY9gV?gV?gV?gV?gV?gV?gV?gV?gV?gV?gV?gV?gV?gV?gVgVOݚ-dGYy[Vgm!:\~@&?ZX:W,|!^M'l\4FqJ}@4e`!KF$KS|caTP1AI #9sd\#HhD&&quF] (b 3OQ/.0#@ZIgRR%יxZAi5&AmPD)ſ ._}f,A]&0&K6 b0d7g98ܪ*:d|4iS 6"hVWΔZxN*VNCYq\|$Ga] +L' ;RޞbsB4g"KUA:nEt ,:a}DXt]tA]dGC]}GhbWˢA 28X;ގ# bў&%hdD:ghwt :EX;ovn`G#ЅN=4Dz"Cah vwwcca{:b]}ݝxx0k?:ۣ=A~8B >]|mCѾ^LG_ XG k"Z 0P@ވH/( F,3 `zgM%2uOI|(0)P2MߧS:p@d́qWBX Na5r.m93< %/;#0z6ENp#0;:}2B22!tljĂa ɄmPPa= 秓VJ ?}g'* t}|1D!S:u,QJ$V0 43m /eӨ*jz)a:ƚ@227Q(i:Ddn2g#Hd!6 XU1 *@aact4DFGse `,(|jo2p?r<|)a;@ 'N8'<$W7@n;n{&`VIؑpYtbaЕg޹!ԨVd2qF Tn׊v̺-:6t~EH۰wAC-|% } h&8~^adb.1}6))XstT%-=V`CX sHSg\M5sa=Xj|HP57#Xkh{Rmz4"!NJ9s|d>+iu[Mִq8t1A㋪X !vvZZ[vPn 54V 2x>h+Z{w^\1 S:?Jvu r6 jOʵgF:Iqu㟮t]JUpOؒVl)CL&Kb> U)[ rNsJG]_ '*̳W s$ .&2I+O޵ssˋE\X4fL~"D|uYgO ,s`~IjشaEQpՙl>>Mq-/Ôr& Ә5.d6v:)M\*?i"mBl =aFٓCea5 VEYPl u˜L DVC4Z5 V:=tN9(Ju*zEI?>E\P@q0iR䎤j"qM#S\ 1;w/u`V8zʹP!]] s֩Ff؛Y q{6X5KA`k,۸5;W_NqU~n̐`YR_7O=tdZdgk.(*x<=]kv`?uuͩEwCE'Kk%ϸ᭩LW'{ũIwT碌 alnech ٥2>iY*(z. ɏUu$'^Y?GŚZC4H{{V _Y7_z L7xfl?ϕ$dpmh?FO_|< wcn 4{z͞i' ?͞1|-3 ?vSzm8\AMv'golNy` }gˢg<+~ÔwwVc~j`GcF&Atcqqsx9YqDɧ0O4G2CcN퓁UNi"18=lWRRVPN#.HeMD] &`!HN&rQ VK|!W*-`GHz˘PБ~ٗOd:xvZ@ˡdAmА([NX1L˴ q# CB0p`֍S? u_` ~Naȕ= qyhfK.UFza &@j3/71MpHAL\P G@f__';y:BrvBfK$L 5`u|͡0]ꠁVHT$4:^W6oM'H'zOIw \!7A1R`x_:W:-72Fb,0>oAzѐ,A>C{>|EsrT$ڻtq&oqDB}dO-%s׷\<>ρg-RyGJ;]3 y~ U:i' ՈJ\};>Yzjɔj(4Ȁۑv-Ne+6N fQ^?Zyme/CYT\+\tgkdCd:E{\UV2nl,= h@ A6i2cbH=AD*JXjwՈ(Q 2"{ QJ ڦ+RǢHn<ˍb.K}]HCl)1;2mL7>N*-%CNxCZw &^595T]G:ޡIg<NU3eqRVzeǁdaj|q+adPŀ9zVHؓ&ȷ!,:azϖ AJ0m=ێd̨E2gBr&:)#.!$h6aP -2ߎ|2}T&N j:e+NhԪP"3!2Z*Vf UT Of qgg ,d` QtF5RP4Qb o1 k]dВ*^%CM^*4vd<$DŽxom -kNݶUٽiz.vHhaAiFZ;XճX~K,䡴it]zǵP.k \?JSFNb ȓm0x& ay!hȞ]ʄu޴DVeh]2[5%ZæC^n7"MjkR|v9Mklϐ6 H]ֺ߯6SFvm5UPG{vZpZE =)V*&x~W L%gL~׎e: ]x:ݺ!1lks7 2ee&ݴOtp]xU*x(;+֥oxЕ^i*Bܦ[iK9:QP+0RpNhQ$)tR%WUҬ;T(3G({KfG?L&峗Y^;Z[˘c dpSGv?;`ƃ"N@?:O>ްy]ҋB M2޽;tGk#&^!radsc\_kƁ/YBr3PiRR"p3yvO~A`AqVT`T6 $7 ɱb *au1Rl" : C[H?8Đ(V|Ac_p-oiM08{ : [ ML-[V"s%.^Y1n {t{{uk}Ub}m,^ ޹LG]*@Bk5>~ɞ݄#/+ywpMR.;c"p*DS!Ŋ*a?n[_ASPtn ,QA~!Dk$@XX2d{:n_ӣլkJp?ګQЖ=yt慺J8&Q7I;BUO 2DQC .F^Nm?;2"rf8.'oN}fmIv ,\o1Y6r<K%@gXcޢu#hmktt0 brEۻTV kfߢ6E0z5hsŠP1@_V0T>-ᙨ4#~a[Z!(ȱ3\%2:68b9pU3\x^L*g:yFg(͕Fľɔ"mVq, )+bQujT)yݝ`\[LKǵka96m?j:l Ca:D{a3cysS {Emm9iɡ;0Lڜ/S_=gH3h@͡0-Jl^`,q5lDd b2봽K_fr^P1QzuFwׂ,N' Zhٽ8EKe' 56 NQ|=(`wY`H3g0$Dk&쵹K !w.8Y$N7a$R3dCmx:*- Y.b<L4aB߰xaY ϣyQЖ8B||'aS' @N l"،5e f:){Zi%<<W(xHV!A1҇.ƉZ#SN邠!@(ei@@)*7 ߀d5;.BH3 xu4#8Sm" JS #_x GpXGzTtpW2@.,0Hi#3PlVа+h\RJϮAҧ*Jh62HϻT ; gŁOִ/7֊圷Ӳ%;69\]M؋¸dP{ܫ_2'Nz-qWX]Nd5p$Or<돨3@or6$⛥iHÚRLYx[rg |țqߥ[G Oj>sv,.I FngtG~hl k;c_aϾBq~ڽe=a Ę!.ڍ$þSDHDtߠQ WA:JGg^+P.-cPe@x:!J҉*^G36&I'uc_o0ݶ5@7~%cwܨa(ƻnZ+5bq!e( Í^J PQ7 T 3Zds3ھJA3Y * CaqIm^Y:C%HPoݱ#Iv.:<Q2IOk/1Q>Aπ\IBYN7?AA#Iedmk0FY>%WF8')`m')JJs1X[L|K U{I *=_#\T) Zf6ԗ4KD(cL ]fȗ4oWk}z)*BV-&RΕLۜ1wZy=T5# La_ئ",v9maR~88>X v8- Р3X6,;lrqBxB]")L@EJ%I-lM# .bQ3ώ]tO4^Qa_ ZT Ih\j߰6m?R2n \CxTKDj!ZQ~qq 2nVeoih_>m8P~\NA ~m7^F˵W'/:L.^4CQ8_fXZkk+,E/,IȨœwjiQ<0>٢e F^Qd h@]yM77َu5엄ǟۚPpˋadikDJDծ9E0Z=Zƹc6+gO-Kv֯Kvl\6d8)c~ڽ)iZcJ/ XUNMiQi)>g<Ҝ#_˫֓`H`$!~=u(xX8|D#tˡzu-N: M\1%?tܽ/݉d3dHQn6dwܽSŔF}{| th/q`J;택zq7d2~ qHp7M׸w&iqHʧE)-ɧ7)k|~0]3>LvcBbx$T* )jkFi;MvV $1$tY:nu(`MXMWA ,:ED2:k'B,u%cVH41gAv;hyP:y`!zN1~j'3U}޾E΂3`YNҝHu_WSnL/O)B-FݛZQuoYg0ݡM\ŏGݛ\M?neGKPJ~t4d; 0K#mm&mb,M~:Ej.m{tvFDKU6YtQ]}u+#Y;q*6KlB K&C11qqnGqp'u> #t?;AI-Tty!Z3Imj$҇m|Rۄ08gwZᡨX2gMkAG@_iXYPat~0oro{V)@Μ -N\-i Zիw_Ҷ=F0]KuL:N1 t% :;$١"߄7V ^٣$ŗE@B)??GnŽ`+YjVN5=j[P`Q]"f`T` ;fFT_DK5 jp׌Pj@ǛLP+oMЏ LGn  Ԍnv뮏9mIi#WUG-.Dt uX}y:.Kj|)mjͭEF0Ȧm:`){i[6 p9٦o~?]{5 i=udx5E |oO]@n.BZ3o!ݸP,^"I֞F{vfxK85A3E~M&mWܺMEZZ'h6SMѤklیg[=wсlblp$?w^Ŀբ5_huN em\H'♒͠j%|?_ DJ^rpm=_HtR&..̌BJ&|mwj뎲!6C$pn$ɃP5$E-;:N" Lqblm(n4xk.fL|U˖"@LjL@;1m#k[4de;hNB;eXf$/ Q y2$4<#9=EGv9 ;ZVP~/)*ְ7舳HBTW`9&gdJdR;l[7*>@6<wm8D&4嬑+wVg&'Aϼýk.XaAG7LN'+rVȞ㙿4@iwt(+TG".!X&‰_,;,`\7WxWǟ,0Utfզˠw~nL.5 ݁BOT.f-.wxngGr<.w&=Hkw$60 ]8.vP cro.1('z0ofrC/zˌfU"ؕuWNMB4R# x~xt]p^RS_,^(Z])Hh+5AXEא`fahaz 6NjZmgH'!*7hHµNk͸aֱL˥Ah`8sM2nZbzّ3 Hq['2.k[=Kokwx,vgBx۝GxیNO _3û>_ӽ)WYR7x]Fx.WٴE$Hxnqn*0ğ!;^; {<=fݩ> ݠ:I~ o޾¿IŊWYOyvϺ»>TA)[ק4+\Ӟ:ݟ23OFg+7S NyUn0S0U{H99zrg9? |`a|1_=y כ>yz+9\ޓW}s`f@<0 +:YG~0J&@̣ܬ7ؑ V~#,l_;*ݭdǀR-o} z'~1a2-<ڏZB3cծ. 0>0p㰗Pǡ{m%jO?;owX3{EO}D4D۾ L'`Ylx³S|?'gP$p"<>{py=O} 0?izlssOW8W?M9Z*v'i=S{3R40V똓id)*_ԭp 0xruA|9hrS x<tG8 kjG?z^'aب=Sb9Tמ ~'Pe?z U v46776;\D4[Dgoo|W~:sJ9}N>tS)sJ9}N>tSQSo^ZŊWX(G1Mw7M"WK3zO{o >N _-fyO3F<nuҪkg2zj?OcGY.>t0=fFFw̺=fr`蛡$ uF ~13ghީT?Cƍp%'u6 l./ՆQjY0HWFcYjVqd{?; W"BCz)dY G}&P56 *Ԉ$|TDN(2Ǻa[ͭlkvh20|Ae]JcB|NA;# XGx(s `uFjp*d ^#6v?{b{xY_-1?>R t#c9!fw\G'BJn Z ؆qM?òi8>FR7x[7 Tt8l 5x54@e`7܀\/v8Ҭ|E~~boSry/I~f=3"^PW[OJΙxP䁂5Ya&P&x ? f@.~/,nyPu:PZk/^Ho^wk+jw.M{td?U TزQܾ~TC(RU[[JEv<4/^_Ŗ_coR)cV<Ȱ_ct4AH aR}̷χ{e,uEK1^C=u(_חWu:HR?4qdDqYBL R"` $},,Ph* 8pH>ս:v|߼[U˽op`\]+ N`@:]+SsԠ"=ptgZFߟ1u@JTaPVa,"g(gB&ՂC()mnS͗ls7=bw>V*]ozyJ(i6޴+RS]iTpQOW{Pr uKQX:V)t6@ xSe |v?ZZͯ,$ZӀ"TI[»VB* u$P|`2eBaO7kQ4*PC3)#bn8@[;[ )"=p2]̈́؈b *=B?YGO6kUSWzVtujxW6'w>CSOvW=Zjm:KPHfԢ?a9 h"Q_{KKP?Zo^]lbnw ճ*޿ F5v`*ol8?^ gWxw=偆Jskq 8׫{9X橷Vux֭0 2^Gl^ Fa*3:F̿λՊ&,L$lucԇ> 噃VBW016/ϲtYq+"̽4#zNLN'NVV(GpYunuUhgoߙ"kl+X߼݉B6tw,FƥqBUEޮUP]oyi< +Ė|;mC@{%4z`iw+{_2rDbz6;l~vS*7okBmnju^9؅HKL^̩['>y*K bV+u[տ¢E~aw*6gЪQ`ybn >^]GލPy}CWlm3)B;RKP 2eǹq \׷U{8X( lWS6߮wʂ±ʐBĭeB>-9P{W -YS H<;eY%س7Ze 5yc5mۼ?qh]ɷ._)q,ҎY=qf?۽=DR\ zCAZ\W}Tsq΅N`gxLl u*`(г["8-?Ꮕu / {[O U9uH7ֳжLG.'z= =Q֟ +_r4۟',zޏ7LSgA4-1O16(GbLFyMȈ8J Br$@ĀצK`@dW B%5L҈g^RtsL(T00kB=|^eL F1"k: \AcAf%T2t9b-K#; L!SʈK QE&d*k4iSTLJlkEY)0@7[i(3!IXt)EVS,_aAJʨSը 6WĴ/%6,:a}DXt]tA]dGC]}GhbWˢA#FiHg0;5{Xw'~yC}Ԥ "@Gl?]PCPkgCю#@` {HOw( 3~.tZu_5=5ĺ;#`z~;"utG{ibAGv+vc(׋AUht0dADˡ&"psEuFڻLT﬩ :T S }̆)Ce]>FG19Uʙ00t)BPrk~T0QuECx CO %M_2IEM S,KUklA؞~IY2E羰;'~,FF˜2(Dbœ~9YuUp UV hWuV@||\n[¬,&8 Cf/Mc :YKu@` ɄR4(&Qd& bV8(׬OB)kE"@ԱU4eqigsVD*u"#;8I*?u3`ى_)fQ1v^vGiކLm ٽt>jD>+T&Ւ4~_1s@t.RIc)ULZ_"mHtE$suQJ2,vc[21 ³; eOr< Q u<3y"("s+vi#y9vg;PmJge._D**[F5NF99A@YqhlScvJE sy ɐaã\))&!lisԪUH5eUl;kn=Q"tR$PWrpФoXm+jWQ ࿲* V#*K7x}@HS2yVXEjiYO. 7oYDY-\R3%`qx̟eAJĸ`+>Lr,x˝ŨFUЈR*Ejp~*/2$d~|Gy)Ә4DzQ!EJ]?#QiXٖϚKTw6mRmeuVy4y|&&A&wWeɑPr+{" AAOL#^H)Vkܴ0' $XPxM Sg±|D$L,. `u65͙e Ú5zYG-Vdm*E"_I 2PM LN2WD *ݣ~cVQ FZwPER&%h%>vJ=SVo,:Wrh7U=-:ăB@MsA-G|.VgJ/rum˚rþ@`~w%NJVjHSe:I>N[Y 2IyY̚sN{D#!Dl2#6ʲFb7iu+E?CJImJyi ma-Ni>$L++94npœ2p_SI!'}B`|s;|c 00vibeFuG%}'m=5EG;V|z7'_Nɏ/zbwW7 kjdvhN%M{kSzkyykvay`f-k9je>>޴x Ԣ%&>oj,w+O-? 틖;Ż~ nֿX]?߻UT{K.in^,6ox{M6>6˪?f7zժya^8F>CM_oXYTҹc}o Vk6UZ}'wu?zF.,f +鹔0E:J23J]J?1R,kL:X HbzkьJh!4 ;q%h]SJH'tk#;$yz0 oqeZor7.t ǻMG  xÚ 3ГK#={eGD?㍧>Va8gQ5w;^58H# Eǁx"ikɜIl5XѴ}, G-cUW_B;v[A&tB҅ H|ϻu*8V, /~VX\#‚;j yvOw[B-ͬuW 5ijbh€F45d\K.LQ/8, ^#p<^)rݦc춑#5{W@C(hU$QnE^S<)O=eƏ|2seEw <1€rpth *EbґU;\;\Cw׀$+`Q)5'5YM66K<.e SaH<6&M&ED%X@G@cl2ft c$ &3+7}1E]B''LҚ %<0.ZΤ, d#첤ze jĘafZ-0;1AOj| oa(Z ´On_ $&"$hx!(@>3A f I>{TXVyc U)Q_w/Y>˫@fҡYovgoh3wG-{+rfOb5L B>"Af/:FA1Ηw{u1uK0[zˮ۽?]{ft~ tdfBY6ʲ2 "R!f0,3 Dc{e5 <`L~%]1s8'+E篾ܽ66xHꈾK5,Ƭ-܇g QE֑ڰ6uFAq)#23+#OKxgL% R#66NDʼnM@'Y7zc~l̀٧rgi}Dq,>TC mnL馁9]s5!ǽ &Su9O<#e┫. {jB+'|f VY3ї1\Ah7:#l3h|1uL[mWu8;+OaB %w HR`mu&4./,]t tИ*q6'ej2+c"1 E=EfMVhX!"&VnTȱ;Q=H)\Ǽ"t"G] KqJ--Q spx{n)KinikghU` ɒi IQ$&o`E lZ.Y^nE ]f\Lo<}%ROfJ$>7nrrbcq\xI2&'uB"WB#{3`ӂ@mWy:t۾G0xht#BΟ.MuGF|Q9£ƙFdK > 4:TKG£j£U1΍~R %boۮ*GMJkůmv}-@U75,Jksm3?"u&pI1A41Hv1Wlu Qb{뺈w]*kQ1-nrbCBZ$uDq=1~bקW$VJo<ڲUsry)IZ0V'??jRN0/+ sm+ /}ռ[nƔv\~,F6>L.}ń9 O6|+7o7[;;{']W;a&e[']8hSbILt@v#|mdM ’N Q*޵PParG9 ,b+" bn7/LbS,'71J O; 32JP<+79kP{]քYMǁY}մ$b2]AE}.n;r5cTvS'Rr]_| (R>!5! RA$I@s, y (_TN]xk 1P8i\W%Q H?tE/2|?tanR(B|3Z%ϸJjϺһg]&Y:9WTӉs)]8@O[zۜޅx4b_oZQ4餔y> /]Lm=^KϻoڏݯŦ`c }}鰐&O_X4|>w2{;褵;^X៸o6q;&e|ǎڙu 9J3U<=J?¦=fr#8fDڔAN͢,NvU4>9F, 6\T;㸵 -5PGirk6 k:]tOd{cM㪫O4s[H6i:3d%mڦm KJڲd2s Mfs'M&(' b{T O}.3k̽{{࠻[<=\uҪa}|rDPsҗ)[ w| 7&O~Qd^$x-ى8ob $ QgH]qsuIF su!\s5Ns۬ i2EDVɫ#0T_j8 K?.?6N0qœ|!u3gnH0gUܕ=Y&.L?i:SxX]X]>09uPFsQb]:LZHe&Wxb!#*^K,džq1ƛ1iuaGnGr*f/L܈%gffwwPjc5-PSio[.I8)#Lk@ ߶sisûΣ<"(}j^ K@a۲YQYSD I`e}%#I.suMT8gRTҲ&trLk>o92H3*..4»by!$`$uQr lҝd82sallU5x2&pC+P[ԬIBGde \=X&o-swT~V X<;488I;5FJB~=TϳGIGQ@<>OYV`(k 71BLEfo/'PA&v]4" ℔$#ϣGds;#pJ*Kd:d,";4{@"H8;LP&5#f)\5#/3QSsDWoVrGȁvd.rx19RnҩkF[Y`eY|r3|y9!~dlL3'2(2Z5&}AяM[E'7(5_i|cHLW<;l $ a ;,Gu9qvlw/ ox1S̚`j(#TP #-ai^^Z^6 ~cmB J7vk $ GH`F&rȴpP}P?` x'Z8YHS13NG` ;) FOJԶ /Oe\AO\x EtEH؋(,Քڟi+}~Q~_;Hs% \x n a тvDR D&IqpƺV:9kOeD*U))#:eI''Vp 7̈ k[F*CD(%2yҹ${ځ} r؛L]Sfpt w4v,RwM-JTA# -2& m;7a9{H2)1XKXMdd8'GUqN4Je>xT& ws[%raw,(]>?k ",(}ȋV) Gilnu^9M0,ꟴ.b=/xSBT>X/GmQġFB[{Y2{ՅYaRHI_(Wb>ᡁ ђ!*Y*HҠƯ/ #!Cڸ,/ "m/,,dMSHFŕeq@Ô1:·8$K &/kjt$؍0i"5iPLG.Y kmFhF̃ Ҁ^/5N1qiB+*Bpu@{8ZcZԖ|12֔b&\>R6 ;JfTnh4HMW5'$h-ڙCxmeIAFDdť3TB,e9RFNQ<nz嫳b>gRS}P4ȷОh&s1`¢Kܙg+NU"=Hу̥*"zH{kld4QN ûe V̞>$T ku2裦:vydT"bȿ}O|i3X# q͌p blYR:e 43"& F4Vb^DIW!b~Plz.αӌي WXZJ)[><鷉rif8FDD}''S&a׆3I8 ",m|ʪo+a|٧|:ueïJ$tP`yȰޡ۷ twG/@2dxG-H/i|UE lZڨM[SW+GHB Ga1o0bKh?}H1 ,]{c:`.Ed e5"JU)_Jb![6, ViP%\˛ܢ̉b#Ćd#DY IУak:$xuEJitH\8QN`D2wEnWHb,]FiMmIqՆ#f) #k$~T kXF2Lpf|1C\-Bh<ĕ98FqyW\Sq^IȇZ4E(S-zY "F\`4A}b Ig HqAYE؂ GloEvuI [#*ef%h1%0WKM0i@3I2=B&r(!)uVQi-TYE';礼r~ajڑUR}Fxo, wW9k&ȯxl ڽ%QKFىej:ca9'ڕ1Cq IpC/ ԭhHbᆆ?nnS\ER{>,(aX+KK! 3!gi-"u:"u.~jl !gV1D]!"&}b_VKԙD}iW+a!Ɨߘ%Y}ؙD8 eCE F0Z5IYc1J~&65[2~aK<*H#2n3".5xy6'i7b  n-iqe4Kk.+z "TzPI5@m#?PVjB+RX.$;XIJٙٱ!`'w<̊`5m(˱D\DD <~$F)"bJ}wAX#uRāT͎u!"8w+6) em \Yd񪈥R 2Vxi y0=7&U`YE֨#EvwE}}JgKI(m6aRbDx{F1#y'bG"& LȺÖ2-g{R=9-8RRÓЊXBBD2~3}$z"}I'^/]/ e\ɭrye7Del`n>$Kq8kV#05桌F'E4a:${!:&{T$%" ^4P"wJoR:@&*ٵ*m`2 Ғo44^ݎ.l{8wˆ iǮ)a.h*xZuv2ѩA",A'L"H_sI7a[?&bގa;i-w.Rʊ͚KC3Nte_!; 啖ൔҸ.P!bF )?}@ՈM[x{uI 6tk?[0{KO]:W<^8X)ۢo`o}ffkVvH_aIϰϨ["N̈́t,ϩKg۞U7ٛSAIxexpg?+~sY-1%~O;J+$]x/~N K2dѢW/k+l-kP20{n0BbPq ]CM㗅$d8U*\|yuk4+WCJ2kv J!>$n!Y@J4=ŒHThiҏm cWj9j4^C8ȧFGz jnI"r([N v}O]n7D]SN^?sZǟ8W6)8CΙ3=g"\x<:r5恎F|́[K[2eR(S>,Wz%rAؔW c3KI, 3="DnNp)s'tǞ,MBп^-HD[^V_/;>-YO{=L'+>u;ɉFvH);8:,պ]C5ն*; 5(<^ (ͲlZy76.vD5)EлR"Ny^\?Bٴt{HOiPtl?P6΋>Pf+ =\V =UC2Se g|X1"T8K {s\1xN-}&Eq# o6*6RƬL@H>j;yl'\diHzx^UWb*Ԧb|82]R⚇cBY; 1ٱz'R/aa'NQO.!g_^j8*ӴRl>-j|0Lnxu¨< ]+Qiiq.k5ANvޓ•̹G-x*U B+%BL42VW13  2VX$+u<1AZ`ܯ-XުcVAk~m]@ۓd(.LFx|R*t*6i|?s6Ka?9N/k3IPMf dwwHeJ-bUk_& oW:0- ل #([H~mG"7Gҙl+bו9YƷlc>U&M<.اfMA3dS6XHw[bqzrIcE%.~g . |GNch=q.C_$m`" 9r 41bClV+.=& \ue_VZNEB؝FϰmG"'LEQؤq1{s ;lUČꚃz'&5cmC3~J3|CpH4(/i_Wr7Y-]["3F݈,H&Bdѽt<* IƆzq"14dl{ől l oL;44 ځ[̧bɝ [ ;Lz$ϰ㜣re@*>!p f5bjqd]zl-Yꫲi | Jڕes]Bk6ϡ$}X1+]+sHAı_bHZ6 I_Kٱm ML|b<0!^Ru.ZwxIsꢸ]]]]$5536@)z"AȁZ9Q4ayBꕵ:HL8mO!t^-^zJ)H'_(8[I ]2GQ ?;p#HA\[R{FA%;ޠL(khPB+59C$wMU>08(Һ=:iN*VC( VkCk0Ņ Pƪ0]|C,^tC 2/͌*GRë\;YDb[vJ~@=˹@_ׅD)H(O,eGts3 F!gg;3ڢgmtxW: Qb{dXAnl R@ąUf+&5p5{)2 Zx]ʌ)#lˠޥTf'1l$m8e" rbe+=qozLpȻi|&V/-ׅ9ɻJ3Xa' koyYd-#$sD`8mđ^RzM蚴q3#9P-2Qf5nVy,7v^V,rr4+((ƞ"OjOvES铕 ~}E \5ԘH>yea6 D̓%4$bIpHt6[flqW "ɩ?Qpj@0 >:}J6aN̬c:eag`U)ayJ UQv^ m*+'%8vEȒs"|rjEruuC8DLMc#^3ܯGWVw4 %AH8R|V,YÒI"eI50涏)J C8@ɈY:E4-IfXIWޤ*cb{ιɕ+g% <^k.$%݂ѐVܘS9|!j @ S/׭CS av@jq @ĚacS]HO4] Ѵ(΅3/8"օe '$9rqen\<t["ns",AD09 *pdyŬg,RlÆ%o!c3 95AI똎biC4 ܒZ =jp yOip1VmYC"O/zDʟQʹؙSkZяtK#.ZN u+Dl;3pjc 1xY613[? _eL̜aK1?}$HdI}"tH>xOLS=5 ;8@crJ[.6fO\NAxk j![=tY9&~7g?y}ck@ʢu՚uFekbT$Nk xO/߬& # Dz ڤn6' i&M<8aʶh&X5oT.6{P (|"30#,_KPģc3yZKD}0dȿXV艰++]t}y%+sCif42 '2x n74`$:dP/*YM$ V?J/$JϘVϞpa&iB!M+$ؑFGC@vLj粅3(LTe<4GQʉ&88r:~@9b MXlE12Lg4gn7-<+ h M"XOޗC?(X q4ѣ+rHDZ$,Ć}KysdBFE 9VkJeep8{ۑdaN׸p($&>,\ ֙vSYbf8  4e}9̴=&yI4D;z栣 " 3ardM*˥tIuWL1|kH>G.Ѽ/tRVp`ۿe9'ѓ& b|qo) aWş ,UװO&a> LGyDC /2e:iٹ+b(3HnHh*MGtCZX$5|mñC.tehH:8K8ֵ 9V-LsJKWŊ± .8*B1!Y"(z"("ٟgîHFnpWdko-عWD"ʄQc We &m 5%+Qc!͔fWU?Wi&dpE4[_SM e"(xu4kj|'D E> ߪ'3w.2}R;V]#QDoUv`HOgů 6ǿC "5 "T_W'hv}{Mnҙ]^dVEry^W[m6rwf>;&]nI>~K)nxB[ZN]YwON!ճ uJg$ P@E"vY%b)`BzA+ogt¡; CH] rٺVm z^x(FPee,esЛ]]~! CQ8)\"qLȜ{n!E`l7 +coq&];y̼,P,jɶ|:BN/O"kj*DlTBA+t5`6)VIo2)^nZz"iQ-o'ʌ-qZi;w=|mD8n P/N J|Rx K׮PvߍW*sRDនITJea4>"-<?R> `Ʌd7.=^ 6 䋬1 ~QVT7 D'$cdž& З9O{Q>X5/fRYKVz]`rֶ ,K$38J*&Ν*h%T戣"&]N //f&Eݾr+}5gӎ?ݾ'}k!W{=E^>ΠoQtKg g᳷#,,N>ޒi;/w`_|o#'7ߒ$^g ́INkk<#|<[0ivGɮ} klT?vtON??>N.FoUHuj*It-?8pEw&G|ǘ{|'; ޠ3^J(Vq~S.QNE}[9E jVзcK}1MK1t$0{KS&:7|D3c(x@t*f&e*؇c+,uKVyoc~["-S(/\G:~J\_6/ <`~B}_z>A-oq ڏ3,=h DTöo&ǖő|r8}I!}KG0U8i [>8?6n@p!q?k8@TGAӾmBU(e˷9/ 4LSghS gfpf(MdCLcxp7 Y~a0P)0{ɝB=wET^xz~wرQpp}w6q4N8 yc /3 .- p8yc^G腰B(J!~!{B_g~"|P{AՈ(FE{KW{/5 6f40[it8kƎ~>Fǁ"+ t^,pZ_0 }Cnwh"XQ@h/[(o\/|zdP>"8z߉/6DK߇XZwo$O psCG%7 (>q(l}?}+& V~$E<>7v47"E`)LDnĻapt?R 7NM8r7[ _c3, ~ nƻd/doeW^;x|gïnUV -݂,MNcVx߾BާpBu6;u(|/+5!qrńoeZ??#C웸 ‚c3a\v#":v_%'nEnm04(S;ȗ ÷};|{ r;>(h5&|}v;GJߣ{?ߣǁa HoBOO8>kf;~Rd܅˷axVqo1ڛ7F&F} ;>{=x2I݃X͍^l5k pէqdF 4B6?EzKf3APY_f |os&|糸om&9ʓq}>^yd'y_M-`wcf :A5FlFOp?}#C'x0c6w=`< 9l1~R\~Q"U  Bx66xA48uu64"d&W[p[:~*= t} O/M@`їɼv||>v|g4_!A }Wp諾S<c<=>4=ҨuCG>V>0b"lÏ`C#tSP͏|?n9+طNGO>uE F}]cÚUk`o'. ם<6PN jóS2 A&XًxJ#쐲Ma\F~4Ãs#]6BXgǰGVY]ȢM-jpdp8?9IU%(lNh6'4 fsB9ٜlNh6'4 fsBٜ=ϜgN3' }>ӣ;TL\IEKh"]). 㿨pqB18P N(' bpB18P N('XㄊpBE8"PN'TU/Zl'VXi15팖ݭm;__%|i.8O^Oԇ;VRoՊgX<ݴbJH' z_c3k򲣨CթV$i^|BR1"K:yErn!rԜaK4R93ڟ4/7*eɴ.h$fAK_, phneb34 = sٰv~vl'i9"+^-\Dg}ϭ{ O;^/+,*Xfӧ[\DOxhoɹr2sQ _#50c*~.~v+}T4é,AUz5VŘR~{V]]:hՕ w7(jTuxKE%M+gLe8m|sJEEG* .8dw쑛h `9rTۊH,Ʃ,ăf_)/*^v) 5Ier"Tr}x}b=J}$ PbD)|ښ W<509ﴷC㗌Hi3jRbJ*#Rpv ڞvhW&%V,'F'C#TV[J%CN0G-]L4W$֑r5+Ι7FQ˿3x;q-cOztU69 #O33͝⾢PwdHOIRmCV|`qr΃a/o; &5tyQ ܶw" S\B}U52O&n{ɝ@/O&˘FPe^,$UF}ݮۚOi4:wwmmEǁ>a0N** M'σ5j,)ZJxIGЈ d80}2ōJfpi3TJB-[bCA&9oFIZ)LC:{][Z6=^=Nj\R2#{fs֝b8xgy(C!M}rP&0qe`E:Hr],TQt YX2_NMI6S`"'w? )ل 7t"o,> æ0[I@s0V@5a!mYf6(}r-^G ݽ]c sNH Wu+XʨY׿}k:sA}C>*x>UTxf7V-~{{5,yշr}dX}tp]!c82@i^Yhy.yh exkA3%Y,7K^-7} S:p R(Kt0{3n Q4%j@딴_Ax<&Dvj@:̄P 8P4]rzq B{// u_/ RES毕O-ۅiRxk3:HgӪQ5P2 oM/?VpEk񍒑Qd4o]2 i@=\x>/?IjJY[g<5Ξ^X[O\nR+jgb咜ו}/?ͷNK_`VPǍmp%VtBHRi-#Fr!ډrh)*X 7I͇4BdACB8yc^o1~Z8!F C=y*jj0-J5tasPa}aL t=^^=sSJ>\1F*qq ͕6t-|~s"ʉZjx 8x tM+[`W_lh]4?ϮH)iv [t< #6wA' gy6 hIV&4j2N-Oq<<bqQӹ >6FaDyh~Z8%c?N);?%r~ \p /u_=氦x樳 t(@=7&6F=$ ,~ʒ w_(8}&}Cy Alg&;^O5Gj־eF ;rh:#Ɔp n`Fq8:Gort\p״S/o0eGS.kWۛL ~Y_D8#E _^O v=U[dz3\4_yLE(.3c!ؤ{U7@\dnLMV 60xzQr\_ڴg=񳣱+cXg2ox`r@dl:( kSȮdLQȃ;Q_\+pDN˩f$cG‡dS9[0ِ tB_k!\gCx ZFHƴry[tK!f0< T+lZ9m- [fFbԀH,pZmsnxIIhP9 |lS}RGg(<#='~oShu؆\,UXT#xq{p3S>h/?όvߩ3BVxdAjߌOԬL&Fv]܍cEːwhߨg92v|O* xp9^2qLiASsDȏhO흂 b Pt:@ ,kWl"\ڄH,pH$̎)52\ 7Wq%o&{O-(6 j=0wku=74=pIQ.?%ұ˵㷑[_BX7k> fqZ6s:IAxvoXҟV_?zDxU,9 GOgor/0}l~C;l  " AMd™R{~.}{Ã~:Άsg=:wdj*\ wyʚv}iv\ CQ\&P[/V}7Bĥ^ oMEe _ {MG{$Eݹ \9vV+v̤=ҡԨ4*Q_[W[I#U>%wH"fUjݧ;whv}5^[([㗤 wݺ[ o"bum͹=ps%I-tY)3bN&fK4(y|nu<tf1VԯK̃)YhߔTxo죐)3ZSoΰ8vm8mVM-8M[Dg8ۛ[w-;p6lfH3Om'"{(x Nfs=3smT>uwKhnoM˲mMq3Xsgh=wo޻iҼ[ÍڙaMCq)Rcօ4e;J@aT#H-'?F Q>)|NE2NCҒg 2HV!#J[?0#ܽg .RH5Q8t&P29x&6OdPDPvB)\r>t ƌu6p~:WGN%oPS:S?` m)Fe(ly(? /: w]tAP LMˉ1aETF0x_7 U0Lن(A@l]MaV["nK;Xy4 qMHR82ً4uL3=SB}c"xEtci6ڢl=2j*=<&Y}6DKh%a39h=Cl1J+H|pFټvt ^oPgr:lk"p7͔י0QFg<8DRˌ>VoC8NQ.bx8ϘN8c!3}m0׽|qlQ .R7"!ʐ!YJ~/Œ&w))8qr0,̷"9({좄5H%>Қ re8ɜ?煗Nъ%qżKPBg$9FķFD&@cF}B'PI>B—| G҉?{A*/l_|j+HZD*%-6;߰@[O,O`Ќ#-gTet"GVm11#|t0*kqڅ0}6IbܾnbAP"j} u>9ӫg-v:zyaxE+oPB@x viC ;?!ztBVh8閌D dNUٕ̐kΫQS%(~)iK uy@ty`(nfFuKqzU .Z^)g)#B*y(wDtS_a(UIG3Gc7P%]p5F:UWwJ,-Wr6 p?m^8s&+}+..GtYY׷Uդ)sx/mEHXQm^U[GlXOk¤zfW̶M yG 'Txvt7<0mm;ĹXMbY^*%LdգJ$4 14k(Y.݃[2.%K u<`.9M.%l8R6(.^/!|1Bx:} nq<5  s<9idChض9gz8낕! fhCv;b sHK~4*-IɁG k̉}>VrHHBe^|#F^\E Ӕ࠰ 6Fvy-]*t M*QGm'húN*y,F>sJ*z W~TﹲS&>2 L}fT<1]^u5/u! >Jjףkv՛@:Rz֚|\omd˗o ZB'ӾfUj_^7i==ns+/^G_PcCuCkptFɂ (sI],I~D!7prBnx V[O͎3cHϑ$] 7낳ͅ&YC[ߝKB4xbS eĮqcC;r 3|$\4), I=-G8@=o c%S EȗS~rj =V|4J69 .rhz|U9 8ܣ(9 8M.ǻǴǹJqT;aGA꼋< zdu)>׫>#Oʄ䯡غ (Ԩvl Ik[[Ⱦ~{ [zLr9&]z wy=wg4:PxZi(gmƌHWǺ$?"S~ߩ/+Ҫ襢"D9kb]YݢY(]]|ebʚqDA)&O[{mOɤ BIvʌg?A=(+\S1ÐC22T œ9[= ^M8~A@BfH^>w__X{|oL pȔѿ\R,[h:ce+{LQ(i=AբfyOWWÏ/!i0kD)Oel8&stufWgBuj Ѕ`u4Js`k8h4y0j+%OW뵱q ?^LJ[8ZqZP^]e "rJ^xsE'S~?M.]o(zxh|>6Wb\p&o/Go1nG꨾nbW]=^HuD pzyéa=\*ѱѝR.KOpqR@休7ZZǯ $Bcu~ﱷQ!uPIBC}/&Ezk..y PxAa6>rH!䕽@͓~K/O@­%5$5 >z>>Y|?|+Wwaђ?~+ae-pï|J_cz?#|J>D趹~˟HĎ=)S:zC05bdނ0UӖ)xv7gp#j"L$pїƮq2E0&Teq|p ? "gŊſ:,~t`b;`Z Óo!0]OP9pVczgC..ۂϧ`u;s*Cau5qEMCx~9/Xgh.÷+C)VEx녥<˼!c7+SvÇ,<+ܨv lΙYRr${P90)Tmڅ6*uMYɝ#GɄd ;I~ż;hhY CYASxxPp,ʟIi%8bT^2SQܞ.< g톳 hsI lG'xHKF3 ,#wlaD]YHeˇa)=ߍذņvY DIv`):e.;/Gg{R+̚.Iz: ad@<3)?RK9 p.eu_O+\Kuw#<~2 Lm֥ dr=90-}dHU\q ⲹg+9:7^ %؇:{$x$ ;;8f–Kqi[}2(G6gԋti7h{\B"f ~O?Hugd+kG1ztM<0:>q~ؗ!^_oЗ} tՕiI^Զ`(ˋZvwmYhm-]-5nu7]ݖg'm$'& OB?QfLVBd ! 3,L O߽oWZl [UR,9TȌϡc>w򗟦+=#g.OiJ>tЁKhM y'%tir7V!W}Y`0gB'õEV=tb hHѲ#@> i lC{/ dɊ^l*9FY:ʲjNweH$_%)zS]HFe/ QQtFhž'Ƶ>Eۊd̨+mb_ud4Cy͗\q۾l;^` x>O츎5҈*YTF*ٗ2&rC2% L'_((pad;FJ< o6ӝ[WEitfYߪ%T:pswL'tzhΛ)}8𗺇cdj`,y$yAJBX Ʈ%KU j36"'\:r~5dY!K]E_ذ . s;NjOeM6( jorko=̢`-Q6p9U w]N~hhJ?ʹ I/$=_HzIz.筹0Wrc84JXљڂD_IfJ |#z6d*2,dbf+SӝGHh4{$f= D+f!#CdYuZRu"KSuz9; ]쇒;p/͸Jy?bl\˜ ɳ4?)Ē'R<=df`}8T*J9m?ѡJ}ONk4mJ"2PsuC/=Gk:"+OyA*s4A.$H\l|OE: 5%!6%>HRho{0b*a×Tipa%ҥ[9qa>.=0dql )0" +˼ZpxѕaB%7b[x{ S/r%q6_[ru8%'$sa , ,#yI!1񋣐~@TƼhXg鑎)VhB~<)Kk)/nV,bg#3pDn@6VcceWdaOVĿ )Ā|T&K Pz|RC]~/ZbyZ),I{zy` o_8{@ѿ{{{ NKmnt׈D lr\ڌ[l@ZGɋHo*+_nB՘4&vOs=ڈþG7SO!u̒B!]ZU5[a&E0ԡ NkF6ӹq3Tq#WMml(=O$c'Ӊ8=/=pAG6G6V@`$nMErْPT㓴N.՘ޒhMPrUz-wy˵lvs_b.ы =1bDU:PZHCE161bp&xJ(gCpΙMg@nʆ3zàx}X Ne2" M^ Tc24{}}C;܈_#pE8\׾}sC;Z.?kE-A۷apܘ27 S(v69g61jj]+WӪ #7 T%xp9oEy8T%'wljmobs m wx?m8eAizd4R҇vzbsw7Yi҃N?0\DFg{E/^DXדis.7F8ub'~Oyg?b]*Mǡ`e*^ "  2t_"T' m|":Ku ]A)7?-&χh0I1&vO_[{2oie=Yn ? -%o:t$T3Q)pS'[u8KWu6V̍uQ<͌"9M_(fGr W<ؐlSG٣VF^WI4(`T:|КW>2+%_ڃORwSH-F]h~zE覴S8%OADx]gzސ$Hv:0"k: V&p'`%{&$=Hw!SUI^yGG.$ٜ^s8i`?IOqrŏj7K|nE Oo~"O/.Xf\.;+Y̓{_Xv~ <@z⧝ @* $BK&rъ@N]Uuf\rc$lh5ɅB-+6߅ZȳVT ]D_",~f_XL?"U/>64)rS=kx <6{24d ʏ̶X.JCZGBoy/[<Ģ9/(4LyEZE~O? O]:BQV=* rOBn~?T.\]70Zs5%3 u3zq3>(Wh|>hUXZ>'CG7a:c@^vQZ (1א5㔃7B Zk#0!XcX}]0!\tMI4~ZK2|ס0_AJqG+ּi.8l}:t(x۞/'}pbIC:q|OFܞyq%Mձ h9bo#ȑjŤmŪZpv$Z$ ^HӤB#ȮGB>k"D,@B0i}*ȯ?/檿=0b93wTp@"VlQF˺6B|8PxE7s@J6qdSo"x2%$q$; — |*א˞0KB7=]ږƦoTŁM!44R?J=X.>\]2%$H/L[|qS"g[rQzأO7<Ū=5YFK"^KCɾBo/Y"7+Vٸȇ3hZu8H# 8EgTkƶv ]%+np7CW!gx20Ȣ?~ @$izq).-,dI2eFVBSro#_vsos9ywpI=(˄azD sKIH KN'C5g'(ߓ@U8Ȝ~c|X[\ߝK;:nߦ_;OVl8&BѷT͎MzKiNkѦ7D5^`æƾ~xގm-| >6jMܼkgK~̞v6-m;ۊ-;hMϝxs_[_<]}=} %k(>7؃m:ֶ([m|<;xozyXog7zl<ܼsW/wo׎mӁ;3x+O@แ= `F6޶]_h־]"vmlwىϻxZq;sk.x6V(@^/.xnj-ҋ14|sK_N\{ongGo[﨨ҌsC?o{G/7񹭷+%'ƿI۵f5cUki Eׂ?ᷫO;mBxMd̟|qsooK£ˎ& [Ogg34|^蹷/jڅÞ;|k7w/ﯧ񣷑~1VWrzkiqJs_7>~>vtbCF\Cv^-Ƴ|ܭ}-_2?[p=u[?("f}=8KD6M|N]} ;Њ݋M<7w瞝1^Nno[.k[~3o?]J4~ݯZ)nKO-Fsۼ[܍m݂?M0\?i{}Do;ϰ9<aƷ'OgNj܄-5|[u.q)Hb)xۛ_:K&q::[glkAT0%RZܭ'GP-ep13.[ńޘ-ވwNc(ILH6gNGvTIL~ 蠽$S1}q339Q:_wl?:ףRd|Gm1ֺ// M8?uZ3K)U6W=u&{ѯc{7۫әK=uӚ{|J{{+u&/qp>H[=lY{{)0ʃ3lo/9 9A8 EuX]=<ZG^ ˕+ggJWvTVy8j̯E=/oׯ_Wc>-҆n4dCvc>-ެ*7]-n-o֛rjl3:iyQ?ݾ,t`EC**IeZj W=y?5&_8gG ٜޟ)䧆CS9lΦ\. Ga9auX{2+[`/Ə.OVSfN`x6өxK0s6lM Ҹ](sY:P׼< , ~#l.k`7fi[~tV,Bz}f02mt_Ʋyl2R`]țqDeQ?.@lRB"JMeXaq+cX$n%rk,&KnA7${مT: &y3Y"vN `νv8fMG]WV~Y\b@ycfu0 ܓIXV0OAyu>]cmZ2I $dXKd6ȋ;:D/.ك2xi^ VOYtO1|{R1Q!N'n&W8鬌`akŒ?:YL+ xʋ!AbFզpjǼk)<98 a1嘛'"YntSBkY,Tdax؜FMz$b+6p%@t,,S,]'-&P}]8(% NW8Q굳6v+b|c"-2Qoy+>BnH~Uz]um/ i܀RL* Ɔt#l6G9W ͑TLv4mLoB;4 XnX"S{*wt!+fsY8>l(̻|atʩ \#{&()yl<ӡ+|Kĵ`z,ײDyLDyz a^R4o}[:}~2(tfk1#-L^Gri@Q؄2m:&H,+EBqV9$qUtt `| |<=nRbM9~25&f!_@RObz37gh$glһcE&B+1kYS1b1|,_P"g0jURUWk*~TMtX{YlA;D~~D[\6MeM=eeEIĪ/.^n} JN[ֆy#-su0zm2HYR7h%?WiR-59lLZ#u[Є.*H9뼰r X}ޡ`&}<; 4:ExG_ VT ^Db( ujWNY&X  b 5"$G1뱄:V}X?qB8 Ӭi5;,g љLJհـ<څٳ8<+T:3L-d31SU?9bq2Gdg V;|.œ<gBT?r;SQ 'ZO Zj= \ksXg|3j;-j;{4sA =b9N.&c!cI3V1k"W67v'c"%Ci+e3ϗT6QI0q.{E+nxE$s|ڰhHkQ{Yb7j@3vI/c;hB.6r_JimQ`|)SkL?6liB Q"]5G&nv~[n{YfܷU~CuI*WN< udScIPɻT~!ڲ&Ǭ9Xy<]DVזIqmKb>ߓZ-L=ӡ,coC`|D^gvs^p1aQ+7=R1CZy;9 2?B֫RnصA$&x]O[ T>lsONOSYY9(<k(4wjciv|6>\V*x]9G6OߠmMfV42:_{cED6^Y#R4 ;.Jaw!u,guqc/:7QD/`ulQgkvWƴ/a0zV4V/Zom:===>pƓiHz Vz_rT|C"cl4vԋA9"I;u`5S V{ @1Wln* Pvqbn ] nV[oصkWToܱn¿[o|߰Ư l0i>g3Xan]=tݑtt{%ۼT.yK >:!bv +|g~@#ۛ q^GANjLyP0Nvz~膷)y'ծÝfjPr(Y&4dz9KI8 lsOQCCzk?tn{F15ȥSe:)LѱC}z/U{3t``+`=v`AWB b]=x1ZpȴnGХ`N4T[v{^U])B.jCN}d~ 8]c&(/rX ;m% c4z*Κ'Vuʹճl8 9O2([UFToiEQq@*Y(wG~O.@}Ɔ&CŨoQ8 { \[ۊjė+ R#[L`( -b V=ԓV@K!V9KK!9&=vڰ@x1g;Ÿ% ^f̽59I騛NzH3DdJaAC6e )')m@q]81mN,DNZ 6d݂to]vTWlcC0% -b,nv4B}e1~C(T((pz\vIE@ Z@^xj,e)IҢvΊq6ib{tbC0t6?rrQpSRnM%!Jށ)'mUFA:qRBzzwBH +"7m\pXe'F-Da#@t?53 2ӓ攍Fgc^ 6 ބpNwl)cQ$ʬ ><8pNA5IgӃ?gĶNЪؿ\@ 5C$CMvNŋi3ϐQA)椨P+5fc2$T݌Rp}M żĦ/Es\V},S! <-&0BiFC!ۢMY0dzd?Ev!1J9jBzSlfj"[D$ePt RexGXQ8"g*j#xVEaiU4 2+D*m"{huUYÞ#zmܳLmTę}蘙ﺶn |=8;@9jB$<4'p*Ոp_:tr^EP{/ B<΄ɸ8m#A=*%  PEޫp෿yce|+:p)\Mp8?@ח'0e;wa"n#xCu ]Wn<6Oƌ p H@Iy Q8O H|(?^ 5.<ݹ e2g ýxi)lSgc4y/ Q3Cgv{9j(ہDihmw8'f*XTYOX GQJۈX;v2xf A}14^pNuSX9i/p6?|}MMyozIa0QxbHuU>E5Ur eWL$ʟq/¼[(YatAS\rGKJK]A5 6Z[1p7TP_NJiK*E^}Vv y&(ˍ!j!ݢ >\ϔ~R-ӑmkauC]{2Rl $}:Q $ 'ǭYј6-'^UJCp`CTg9Dbfr"j }yTLS͸9hJD#2d*LiڳB2GfN(p0l*&L=:N);3AEXBT9슩Yt%c5@] ` OafІP{kfPPsяRe.A>ܓZq){B\Qy^1Bw:,0up26nCB$k9`JɆH,ܹ f]%*p;ͮ$79T;eiy,,EAh98 [@g{~+Z=Aj&"i߼btPu "`OͦR.i ^(fPqu l.8Vi(aGHTp3Y-hq`sh.;"N|Y< ÂyO^^$yۮn%H[t"=>b>"\Z=9$C{`d6 .{ey((Bx 0[/4B墡_-NNʪtiQ @&`q|evN{Nz ot$QF"nTb̄,Hs.)jMk˪Zncqgsj|L@Wh  X&V=@xvBi wjFX(Ђ9Yʩ0ܤcvqd"{dxWuV8 DT\شsd8Jъ髁f0<__csCgM_C WړIJ@HfiNsFXRf/P̃GĂ{a&tq 7 &I~)X<U+Jx(7 ϴrOqA|֓մ a@gEY5Qi<│6_[E`em8r*lMkB]P[2 "OQTttd+s 4~OUA:^М:XG]eQGs婘]w>;m p= l\ƕ^]]qC eFޫ+l-BOby{;GD >Fs=E{,fz; MD16TXq˶yj`5=f7JQ.Kj9bL)~Yv.$lFxVSZ[N>ka|V XЃQ7Xm/5 oiU0[8ofsz :?W:Qds0y*Q(8W i~eSلb+,p_)֤Q B23Aa'Sdh npK͸Tר76=հȁGuBe(WLKQ0zL{ΦȐמTR1pcBױ1cQF_Na܉6Ȯ֧/w"[P,t?TB4 f^#xSm\&Xv3.x,QUGtt=ʭZ1Bj*JμzQ]ɖ"=eLQ4鎶,b!-VhaFG0 =SP>rU8el\'A4~&.{c}Ĕ͖p%}Z_L>jy~q`cz.6@uC6μ88BHy"׈vϯ{fqz%jإHCm>*8sE=gv3č LƀE1wXmC\t2,-lЭT٭%B.Sy#5@8N`ge%g Anu6TŠ{܇Ż/=ce/8&,?&>Ek=X(XI˒2@0/s@1Be6(%sa0i51U{T%⏗T Ana0X`^h MnB(Y4 53(_g/!b 轨 %U#R >Bf26Hh, dY+CB R֫'RfVǎ$|0FKFUW(GWumto=w|λsŋ@Ջ6ub~,Sb}iPrZE2x9nfWh%BnXIAlQ|TLyzBK) U NX,rp}m ?+{4-LYiM &ݞr\EE\0q!k!BFɣZA@|6-Dc#:]oGoS&q5*&Ri3w*x3_KER\=tt./R4@ϋMLZq$S#w&@}M'Aj̊1\Ҏd"G 2Aй`(=\78Mnhٮwu6zru^mg|CnS8jM#pBK}23#w65(VWDOȎ̦J.C4SD3̿Olhxƍ N Vk"Up1x=ۤfH%{.T&(Qd1d3,{lHuLӕ< AuH+]{ع!3dTZ,ň|_4[ )h ! @IǤ\5AFú8:1Qzvq}\っm+GrzZF*Dx&4̓E?؈D>ڀ2ݝOYP:xMjmԪ"6q2wFs*ʉۥe6.Jh*ycnj݂'X$W?fP6 >K%q|S(CKӥs ~vwn͌ڹsX|_؝9J'M߄==)!uw2%Mc89_9ʸ[g^Av`jS{BRn]]xg|XwK"<۴PYoyBT wiTC:p}:A x{sZ4aw\]%{F)[&D$FN}s)ֽID-҅;*uw7VN=% JJ)O8{sv6pq20Q} Lc읒O|yuxRT f "VNKv.Ud)6jtvvLG- C1^)7[r P4 3m"ܮDAQQ 4 Iy=@E $njG$*zz\x W+`mC-UQ:2- 7zQc*ۿp;V7"h6E& `u_T/f(X$GEIl%ĝDȀ$EAn8Mlqp!nE Ț[}Qk, pOD帨|2ǐ)"bfPwmSeE%S,kRNn.CХmII+'l^kva(@Q*kyW6FEsJ}M99'E(BpGq9гJSJUk,bb-$Cs#&A{ŠCՙ*(ta\{.xZ2jn }VgA#z:qE#U(7k,,[!\=偞OZ**K#J#@ esqR{ayUn*u'TSfk:izOj, 9osb"L`XT8&:z>.5|W zj^ܞoMZ ]̪'Lr<` lc= Z_%;c[ >U>"WVag1[\^pGCgf'ţSld̎[Ǫ]ϹM9 /C, *gqcW?˾$6&,!, g7Exn'DENIr]Xytn=fӊ0tD:Kڲ+iY">yQAOaˣӃSף]޵11r<#Ŋ2 Nhifj re' dG)Gp0 Iln(X,s n\0 1S ErwPu'(@jx;-8'(8(Ѻ@=A-Bi f㷲qh=F&X6r / #y`C ]v}߭~BPJ1cn0G2gvbCQInyve]IMFuuTci#*+!gA[p|1)gAWU d j$d#58!i"[$xzخ"sP ZhQ`ǵ+ck/# "v*=Bf!fFΚglhp3rLQܣˋ-\U0[GDRJA&぀]dTwxX/=`CPYzO0|r=/2"zw}{1U4c?13"XbǖJH(&`ϝ<C xY-dX3w,eM9P :n3G,n?瘮BJK=+XIy)BY-)RL]-^ݗxS|NPU6H0DOMI 0 /c U ܓhViMnG&QʵxfM?{j犒\pCItn()JbƔC&О/REëE*:^eHCK^O|٘*%O޾edz$OBv3&ix)G.bڎr/#LH"?gⱩten&UW5 T2b~M1UЩ@:Jz wȎ!ԣp [gVQ*ıa (-3niĨs "10byBهEՔj(6VDMJ!"8K;SiT_̰݉2e)RYy EWF#44Sc2mT=NR,4d6cլEqCO\:krA8%#A )PQ*Zב(E y/\t9SY{gr Xy20 88/҂g>-v{+^QWKr+hl;O$ϯ.G gʲ\8E*~Q֢C i:Q6";)o@=mxų, uJogʦJuq[9YDCYnNsLѡNebH eCJ"eh1' }"@ 21 9I/OT vp']Ĺ_coHim<^sAytz]KfRh훴*'Et{FIǖh!Sk_,>Ozv߲CP3Yt M~rW S CL &B5vܒGxDR΄!|@kQ1rl;)`c̃K2 3h@ht rQvںKj hJ]x@~M4ݯՒܯ-Ch%9ik"Į2mm:'xe,|okKxJ"Qu&Byk2K@ZHbh ݚNhk02cWJQM?]\{jC*\dU\sRkaYٻ'2㑏kқ u"C'lV-D;~2<_jMƮ)PG^vfYB1ZbmYm+*Epr'{Ֆ-VkY͠wo&^QSWsi; u|H5•L(>i 5yz%ة/ٳ*;8J 5 ;W7C6Utđ+\9ҳ(|΀I?iV뭋o]sR ҎXlV'*˫4^Vk80;l`^.P*2go&LGuFFȈ[ dLTW,F>?|QӖ,M+wTLZv`׶,A'86VNV_QX~EIm']!4UV6=|mt IEXp;;WBm\ӈ4Z} /f0Eac$zj/\soV L, /8E{NqvKx_ LsaanI~{!Lx~@F)?.dK-co(>F+:j)†*/-"ELSC致uQ]|5wk瓆=wR_Nޭ5>9%߸[۾Nn@%D?|LLHw |䳙Y 55C>A1M ])?me +iu'!j!^e:r44j Oh_!֓?i+7yQjQx=:KY{M:!-u!r 'vQT9 WD3P@YZe-I:?};A iNflԎ(oԞ~tF:& E%7%V<,*?~K[s#ܴTcx辫:Ml>ܹa;)NuJ.R Tb?o<;}oa/8tz*s-K:K7mQ9ު=N_X|U XcWBO9_L%#}A<;a,MW"s;/=p:1Y@+**CL,ړ8( cS(ClNGd`GQz0+[${]7Q""~z!-`<_/d% b {.%Q#< T%?ckl̢p?AM!Q4/жM0zZ_Zh'K :>}"Nzn]*?*x~+|HY*."jOKɴh}nEPtj_Bg)]HkyY^*btM?7/ %_hXxұԀKMDMu`WcP2k ?\󄶪E'_Ӷ0xA4<@/ ®/P􋇢={_C ?PAyrQ5e <TMмKl0m-=, Դ'k PԾn}GcCCCiGYt(ƥhMY6a$2J$vp a4]%_}Vn'H/H(K ܳK6.>$Awi]0U=-HjA \>egߣm8΢]NzLA0h_qTM&<`]{ZWې0Z2_8FW38AH  `#qNc3wUFycmdT.rǝڅtS;Z~]XVSɊSؕݕ^qrHfߠ :R9Aٝ愈ۀ)q y ) --âE3D\,DvKf!7Om'[$="'ͩ年Y.odoSQS4$q`=y橊 {ᤚ1FAYdizd*: W VDL,K % 9kc$(.Cd>;!WA4,BI'ʚ*XycHI޴U3N>rLNIǹ%bUX[  -_:=Y~v]TD jt+zսsA?a+нړsdN$| Z2e5$A+9 w}X|{2/kW 55WEfs 4!=$I}6tDI^$Y5A8KKf]@@um>f3(ܥrj#\RwGjԢmFՐw=%?-h$H۾Q;$|P[UfC(^ &ʷW|2c*+~ڹaz'Z4@3kS70:uXAb ޴h=+sY"Odc>0qp!s{B#>UTdj>I%ARemoJ鱧ɓhD/KVjPf2a"P!ΐpr^5$x0x'6oVP>O1Z$nM|'1/+B8F0WF#2%eOs(UŒ,eʛO:0Y8b['.~GWQaHCLlm}lEnw^)iH j)+i 27xjskE]ASFYzZЮuܾ$Iyvp5iN-0dTL3h|Pϗu +1hHLlo/4^y N,F1ģc|@&hbۢT&ݕ! !'9ZXݠʛɂ5u": &q3(Өy/r9+K`͏ߖ lN=bhXeZf-0-& 7i5y:\{Ǔ#x2 m@ `je2ru8=O/፨%5ׄWMK&vKOK?{_Wq$Kcy 3o,c#[2V%!#HF4f$ Y &\l2\$, !A @BBHU}k06GbGME]l8Z|௿ sIpuZ?Ҿ))-NJEhSbRF01U8N<%gIrMU Na;I#Ӊwu`d,#&%5{ jæGS< YKbSWOφ]/)2=A;TkNBC!~Dw{ZgMfx~)̍LS.Q-ę:<B[ ²[ꨁd@SGTZ>cxtSt 'RY>9 1m`񸔦Ux3m_)c,b`J)K1UOF-["uRt_m.a/~D>sibd鉳Zjɬb+rZ !czxQ-#=9S}|RmY򖵋5j*y0m}IXy*SW M !נV3RR5КS=w/? 0<G" K) a=*7ͼ"i~ael5qM`|1Tt0ŷa,i-YIkyn;*5A;S Gѐ}4EP6elX@ZaDWgc)ҲHJpVR&7PXqX6!d9U ag. ҇kߊ[׸ av5=/ u"*d|gMF]bm2=8UPS٫` NaEsZ˜[@}b<y3_B'drfaևg%!Ft󃓟eqіmnL5k!1CW8=iPY%1.LR"uVJ#w]~ӷ[d0K, =㐁Nm\xS ! $)-@xOI &-s2 pRXQKOrc4 *eю{zށ64y8"evߒ6QHG=r";r} 䫏[8YYR1-F4`J"$IF,+-aY*P:ĈOGnjp`s1mxvZ{mGTh:n)d@~HX`Պ<;Se-f I7+Qo=y9|p>aԶb(,[ RY"i1WiPs #je;<#1dhr_ρ՝ŽǗ򍩨W,с%"hJ !QRIr}gb ցNhgd[:d= Oԑ9b4cc`._}}\N `+odK6/ڧx|Ȉq3~ўa`7ܵ@3#bw ݦOt EL%y&iN&6!==P0Ңu'=HP SMmC! ,sjٺ#t] *LҜ՟QStf;flbo6,ؤMxv2<' wfta䴏|`8ܑ4WLdI9ˠS`% 4(7t%3ڠ^+E4 .tu!BhY\ZD./9kTfꆺnT ž8˥0ц1=!횩S@)gJ+wF f <,6[W,VOʪ78AC(yHӾALB )Yhit33qjϜ_vBk$!w)Yn=b"E:ʼn2PrWD%wU ʜ:zԦUױZB2,DU|)Y^V*ŃN5AG؎*t a_0e#c2 zD@6}쳩U8Dh"TS)z ͫZYMN:O⎦|L8g sU88M7 0?)/&SG-2wXI]y~B`'7@8j6eCκ4R,7DWZt_t\Lqu6egx+PiV(@mC&-IK'ie\ kTD bD>M(Q*?Ǡ3pZ:ۏLe3yI 즼C#S\DG9vee]֢t!6-2ۜ Eϱ#iC P^uㄖ1$V`=d21yEGR]Saڤ 81$67A ߾sFqM~׾sJ!ə}ߝ{qFZ; 7X" 'gx^P%$ɥl`S9&?Plj(=fV\o\nC$^3Ϳp#r#6.LuOyK25$-kF-@:s L! ݺx'.!D%;mBUD7л LT2=wΝrÕ˪օoFX,W3ilaSʅTV)*X_^M|u > iOɥOv, SK-~Ʒr@!g rcsHiߙ\462jK T#vn _ڱy~KlęI'|gͳK󦑮&d+~4MYp^0QCK;h踑Iw35eFm̪Ĕ'*гOtO e ~Y%P{XO*vr0aqh1L!oyԷrG^-԰3dIiC"tOi|vnF^YԢn̑e::ScvV;|G\\ක)<ٶ#l2~AM:3jL$ ҘsqƁ1Z $'z#$ȷ<_}Rۤn=Mc3+ a\ajs|u+I_C&˅&)ܤnW!-o l%MԍcEʛN9O%JrRp{qآ͌{ǍRVLlZ,%uHW񤍧r%1ߪ,MlaxP|%ݾ$^/5MeǝCʹc%4vsG_ޓy8D4-ሢnєeےV/{ ߧq̤{灃2+9zV(@%'?M%_TMJ|,٨hT9yj/ C(;b8u[Z&]iyxđq5U`rUtͲm3kςN cFBmǀCf5%NuPbVxDMPN‚1Ua'ezA OPGX< `HS2 #Nw尨>[[^eڲu~33z͇<|@z/lJKS]fueMٷ VǕ)+MUwBdNZwYUx_RVXTXcF='owdeQRؽ]E`qx{+I#T2t sLZN.`$5g4 RLsAZDw\ 믕c)(+4?*0W }GsfJJrӤX|j&-E$ǮΡ0}5sgWKd5sԏrHIoǀ'?_ϺV: J#^ LH\. S2SQt)i<@^ E~Jtr쟯%ts~ҫlP<{ R~H_|%${T ?07)MhF(8uƛ͌ VkoIJ[dk& ~5ϸHj^+]`>ZGtu0)Cvvm,_a"^ @!cÅib׃Y@'-ȡ[ 5[eiOu nϓz:܉ # ;Qpnr7JSWMoUq#DI:cSM ,L\fn]f%Yjf|3$: kbW>jFu$U: HU,*]a8ȹI @# [ vM׼p@OU7=Ed!z%KmTq;ׁ% Wt;'oլ};hۀzN.ǯh_"1r'L*1Y;A}D\vX-'ya4w7C6y Bܭ]R ]ҐESt g.z\)à`(Kr+I.cdH^MIHpb"D{54$y4*H>7CsJ ]"$kA'5b  JS3"$w 9HBzܕd+,䡘u?X_!mq`&{<8U{)-®dۏ8ÊzwvuvnۊڡG8~;i==}KUڴnm2#q ,$g".i a楛- J{E;.pUgNNըc-Kf^aDVEbc#;" 2.8FHd"rM8PwSx6PAʪ(&p׌׬5cj.ŀYҽSX#Z 4$)39D$45h94Q}1 Mܠ Z"]p7f+fYp8ᏽSC/EPAl)3D tb<o7q@)jGl+{,]}]=bq4Lpq:ob?֕;!=!s>^8o=1_ך՟[ 3$vj>^X|~i#_ZZHK>d\~5!>6Z#>j&M~4W}q(&[^7`еW;:4H;be: _cb}䍉  WyEWAH:7O+FEί=l25ҍ¸ '5E ;C=Ib79P,Cr)e[lQTi='*xZԮ"A2Ƭ0CE 6>R[U@u98f{dEԬ gQa͖YGOrcL_hR!ZPGr#*i`\,D"p17')'r b Yg+eU,9S^ a};)O_L?8u1-iG N[ӷDk0BF-9!+h*[`8 R@"o@qM I>TD iE:p}rhT@Ә9|H2H!W0*l/:_ 3)q`ҖË:Ѓ%b&/ã&Fv?װN♽⦻"ΨP K dj:Z͡aqZ ڕ;]I3v,`>J-mUn^#tp?CrĨ@m[ ՚Sx;<#l{AR8 8FJi+GWq%\h(3@sv$3u"~V"qp$ _ЭWw9bxq*-Mܩ)K vU?\WaXfi[еŰfYlF05.z04U( ɲoi6UmhZfGx6 K4φӘu;`K-Lb~CY^;ķMfDU;Z,83v[lHɏ: AgExj\_~Qti<ī߾T1#ٿqe.sw(MP@ 7ۈ.+G9: aWΨ+/`48[*G;G}O3_PqY6섒lb£x˲X$3"8i\#pKg4ygBB6gΰfc.Ze?-:\h3d {K;%Ր{o4ulݎ Kt)]6=;ikL~+a幟5~hiؠgWC{d[ u }]XuRg͟J)]KOY#hۺ_8 =bURes~[rO$#̊%: Wۥ`J*c>=+ x7ZWṔcH3+=YR\iX#LklW?ÌCXV--5+pE]3k/ѲX:b14b11-{@ /H|גU-m2D:|#ҚPbu,lTWG:%zD9\~S ϧ*f9i.Ԭ CB+,x2Xo Jnthwfϗܺ|35'wz~qG%%rYoJ?&y!G>#m*iS;F^?JꈝsIOϓ?s/\+ /Ϫ]Fr&:c'_<,tאOEzJ7vVyR{9_=I=h?t;6[~..?;;]e2#w՟]}5kH:oZ((Nn$n!N-"߯l)zR͂ O^P98(py w_-O/MI^V=UͫyfdbL?N K]a!"?%|wz z?‡0CRC,CGk r ג/9o13i?*-'otyϥ ,G1)J>t&$g֐V'}I/4Pgdއ {RZH&>))$OC%_I_$_F"5V|ිJxJ N%7Zj-SЙ#N^{[$0uΛY 8v=Acڄ$k%wA|0(b U\ rwEyGHGj?v<wIgTJwR\(PzXZI?q'xX2fɥJ[X#!Qi|G*|Uț)}o5dw.FqW%ϟ=,1$[!/?5rFy~=;N}C\):%xVz"]K'l Ns&o `0+:ƊՓŊK.kXFKOTyu1ԃ0H'c׭&N,<;k#[af)^)u)~bʎS*۩e%Š_{QϧUNN~ep{[ung1~L2W).6\&:Kv1#^oM Zh5yDRU9 FK| 0b{84Cs#x" /|zXW:O:p95/PN6mnk52`_o n`q>9#V1,Қۡв #X:k۠4Y(n YY;"W/h9<#дmN+fP)WhRFd^sNU\q{=&{mom}bM?yQL޹`v{[yǵRY1੗r4. H^izBb%9{L#8ZV1JX:Lo-np2eY:<fDMtA?VJYF'ddNGxWtUI}=rE%>x:jW^o',hzi 2Y9_[Cl0Y1?(K{,2ٸ$qv+qDym8"Lj4jM%yiG `eS C^Q٢ȖA$\3]j*R1 I{r80<1.˃M/0l;g5|PvlAdt71"(}Dބ;NPUUeg"P8,KvT-f^:TI @a@Ley ԹgV8b._DқP{yF@=F4K<"vuTsBjd4]p68^&}ՎW mh(b8Y捒|(b,)ȁ틁-=ڄؾ޾XkϞ}JKTYD~l$/ > SW Útn$F#Gi2୫;'@un Dki5k_ugOO ) iaDRJah`և@dN8f"vhGGuм\*)=N0yCi-;R/psp;F1,^7\5GADרz_Vgm:?>gD1⒟/ZŨ4BctV+7} (^-⣗.1p,T2]``hR7T;XtWzaL%^Ee./e`( -޺bK=/r!bĄG͘VtxPx>Y}Y*VPH@2Jt/Aژ*Rj7_Ze&bi Z*_:+`^0MA kJ̅5:u'u'>Bu;*;pj r":8TKȍOCkhk%E) m2Q? j8fFCVZ3tBf*{Nvě-4D8`8["zd F,Axf4tx)IUEaG":b 3y%;WB5* & ;j,K)#7 fJ0WZ;,#%;ŘNj $8&Eou0S<C\`NFa>@<|ukr-~ζh ]CWLk,}BuX/WXvҺ{[/޺Co~CU!9ܩ!nlGCЗ4xL^jU[ܚ'`hEY$᭤oX[Y{Dm0N{w+YᎵxEJ10p12>r9N81C_kcj:ruc"'-;Aǜbteۖ-shufMs#e'z;wLx[F X<=8~p:( a#?;چYfQ2{?Gp 2`M3 |0ʃ%ފRf5CFbnSxXb>'W5TΌMj\A*r]@-&N}NxM@1s `-!,g$"qwT\B uTy(u4|f͠(_Dsd Ik*@Ֆ*pH 15]- j%5dv㖉 tV[;g kUXa<XuzQ灕`ˡmHhX17;[[uRi*m&*"u6z%=[QU: Dtr&lg2`"VQ=+,f^W1BM-\t_1K#siZo{NHl%y2"컊BXpx*A0-WcT $?V~qQx ty[s_XK{[Ngh foLjR 9Mm[NiTY`{AaSB 붲J8l9RYzZTilA{-.l8l+Lk(:B?Eo*ǎ)y3gņ玩g@]`4]~2u42.o|7e]&E/ޒ pi/l#|(\q@L似lb(^ڽ}Bak VjV"ΠFe?9-|PiMobGK[̻0\~%q67߽G>[I +ȁ; P󻧙<#o ֙'ȃ=iRtra|G>cA3]ʏKxdzqO~/xH!h㓗 ʭGkݟ n4kH엗wx?董*[? zu>,ZW Hk- ēVǡmJ=ڭm=Eҭ~p/.[NwߐOd}vyς. NyOMy%#5si5ϺCy{r"N<*z@~eCƦnnF[bu='+X]W%rPcV~]>h"rjz{C7=9 0XIgPYfZ _)xZ^F&eFb3)9٧wlT'#HM6^#O mOϭ]ɍHd` |$_/eJySOQ(?>or,)7}o!eR,(WtHlR\mTk2r8?7}ȝY䳯_v|z|i|by1MxVú4^&':}F>-9${硴"7obV8 ꂯg|zv,W Pk|uF$V<(2HF`|"^ۈgp)H|+7 o$8 ȳ׉i|攼+g j t)K&9m+f( D_M zye#8eϿU5G,tj/[popeXA~9r;6\si|o!y|zUUyg6c,qCXGǬI| p8dr&Yrbv$G(M@Y0 M7zH%#x$n؈"c`qH%Zz[ZYsfIe1>^7I!b5k¶sҡ+*iIJQm]*[W,>@\WQyMIb&ʑK+bx *'`lR`^7a0? ]M~VĈJ^"T MfPoԍ~obõesЁ-VEپtUnu}%+VjBo?y>nP78PË\`Qm ^︖ M).k?2 yDQ3}?6.k so4/!@V1eU;/FCުΑdJ48:+`ԵWfo-`eXʔԈ1с3%0(rH< a`pPTlON.Am` 7~a<ȊM~QfE*#ä-9@=`IL0aWsY޸2σ1-x3y4ìn <Xd^z.Y8!z>*b\Vm,/5=sÉ>*y!)vq@=s,Ftb*)ZY)s0f 9I.aݭd=V~kWQٓ὿aWmZ8+.M*#x ðnN*e adX8 Iyq㺞Nј6lu5D8ZBQad\-%N2)V`qMŔqTjsP:\PLJt a_"HzC``2ڴ`8YoLqFIEcLص&8%K,4R_$r@:0 9PD+Eo0!L>dyy3Mr`@{Ϟ}uw!QZ֞=({A-pgGh@{g 3|QzߏփЇR}}}ʾmpw;`׺{;k gkǁzvZ ` Qt_;>6[=}d:=}FK;zCJkOG/eoO&tQ0PAHu?@t eB,,5XLh 0o0)H'mXҹX5g(h pwjx,mhR&7#ܐxӜQaaمE'I@WV\E@.d` cÚ;TmwG7е;WD5Sbݭ}}=!eD+B*} ,^LMP~1$ z/(ݷ/UXJ(]@8?9P]-+]]=6拣5Nk }=B :hF$ç z xmn0p YTYjG];`dZ!Sݰ+˺B| YQ\=<z F)H?@X[ 8sܵ +k}v~PI KRSB 3ڙ6bM5P{4NAL1†jSY;wMCʖ`>;ܬꖈ RZ(~ӝ:<:Y8Lwo6BT4Z&Ȥ R!L``nËJ[*H+aDx^b)^ш3`ZR5|mB]p-tejV@Ei`Qձ"8ʊ|N .84~ Q-0_XSB!jHЊ7"MG pJfKUֱL'F:g (cQJ_^ -M߄s+Y\P*@ZA%4 J1hR$=Uȷ,fVEx 8𶓩1Y $0ʟ|:>L*`L :sL5Dlpѐà{̻R% )x|=Q ﷴѣ9KBQDž3o;VT ` XB+Ț>,>Z;8EWd~+[Rda$(*p][(!MDjhW~?ccxmB4\C~ =u ~XW 1TgZ\vfsL衮e4nYu*ωlE􀖟p=7FPxy:1{3v}TiuC\WMZ#B훁'@E qF`)NrD67Hokt@ԵkaIscVBPv6U* )ʉ"@Af5]?6U<߇ꔀZ+O 3UXf3/ZRk l ]w.[s<;gByf[*ie-Z!ezbni0ŷz,z &Je !t,>^UU,nNؕ %A(BSIT_tmuD_Ugͦ U]ה 3"յ`,`a#LhIj:ՉhN:?+b5sy3 )]C.]U'x֔K>Ċ[$6]E./^H~P>yle]OO&j6/ ņ3; o(瑉(u:Hz5W1,>h6 X=&ZA>y,%UO,ZE>eK>xܳcI9s鋷#?x?/lg)[rXAϓN !r5+'+ŽF]_]/u8Q&|<) ssjZ\xm tsM|qy/>3BW%-_25ntj-ia~>y5g|f|j]st*ç#w~Xp(-_i5T yM]j ǚO,:Dž M_rN'$gw]5L羄iO#g~AbY$y9qhҦAΙ8 aU}d]r W=~z^R4qv_3Y%d[Px^!uRCWx6؈* :OknG%t?^sR{5 aN 2fH$T0S/s_/XzXAlz^EBmSkȃ-?o ^\y!`ķ^tc[֐Ok&~l_U%?ٲd%YlddztTgwEʗ_̉bocoGUcPCb] O whB7>!#zH6g[:{v0%ǼKov[))"*x]C`q0o Tҵ21edQ4d=FZ [EQ:҇Ӽ*SpMŕx&us=k<\Y:P"nk]Y a50fhfӕy}8A[i|D!Ʉe"GC@ g1+*P~"*ri JHd(]mz9S(tfE޾xƘ?bRtM3)ni@悕EA &L8` oZ̊ƈUU' Zc'mx`Tc$\n wp1qP,"~>2:gdى"^ź'x%}UڏZ@/R:cQluLD5WT9m"AsDu+%'$AKZl |hxޯlu:ztl{űK[{:a9:9f٩M,</(:sYk(z^pI,C䋔o6ԇm9Q7Hc:{'3P`d9c}g(5Zukjx`*tIX0Sc'6\2J+NkHK& E0֙.WV B yD `%tq@uP'wS~ ShD8 JCl*ОZDYݬZ2#qrUڧҦ*-sSL%D1p{ݙ*%B'F;;CMdp:ks"144׎ٸee.ү.+ƨ#h]۸:AL{QlѮ_CbY+yV^Z?l)qlDzH+해jWهuJEC!!!ql @lͣ@POJ鿥imp!I93ŤW3g̜9sΙ :fq%aҫ9oz"i%}<Ϥ (ߔ3)hH~?e)˚Jic }&#oK@ND~M-&9[fÌ''/ $T͹dPY4B伖0EpƆ Ο?JRD= _bQioVyG-swsWx$n4 ̧ +0HLySXK0'N?sό!t0RN??^pv})tu>at.[`Hq6o^Ѱu}$J%#bTҏJ?.!k]{ڏ;Ro4Hj'>ׇkT|Iڹ Jf}8RP; U1䘩yG0J]4Uvt)@ev18nL6JVMiձ1[l""=MH|*Ĵ)DlkN,&IYUA2#`KNamQ dkoR4&mdE_Aavur+'10z:@0V+B3`Q#wJF$F~ FPh:Xe]ZUp4Fy U*LW7%Вc hh%tygzS8ak;rXhLdT5'=Ce,~qЍ?͕R)y+C*m& ٫XbTt~uIǢqB6RWn\4E0gȽ Oqζ6fTPi6ĝC)ȑqٚ6lWQȄ(Kiro{8*w 0,4c%(֢}A;+BAR?~I#]:jN KRTzю5g!`2GkU*ۙ0oq[+Ju +Vr e0_mfy]OAM52d8VBgϢ^j[}B*S3IҝjD*gElRPT+Gp!KعS>Ȋ*By- 9sεn7痞mAro FTвS z؁{Qbԣg!mBѴ13 !AQ]t4$YR.ѼLV,,g2rNHj6֧QRVĦ;EPUUUy;Q/SΝaAebU9nI?x2hn*irKxb[0_)kX"+:=kG}ijbSܫ.ĕ7\-?!U.־}>j(?]TDe$Fj%f :@\(AF6 iN$OJ5O>f)|1"Qr=? acaHM|i"Ow,0ꩉRjRgql}fajh,rZehC2P?`w8?ZQpDc,WĒ3͡-2c@zIMEVKH֛S$lifSWs[5^dj=J…(ɶbp5$d55jlwjr.nM2=^"4F)3uy.Mv/: xK_0]kiš]JwùHE-Is +GG"fZ k(9Pd\큢 pc0S)' |$E`]V$AK]a$gO&U-q'@mPD01'F3 Oj2`-Y6};ȼ)C^{y U>HT&dȃ6Y& c,Øy ؖm ,56Ay8WDX#r<{=R||_?gIsa B&. zɚTmՉZ5M'#BStScr=Z"2~n@_Mn%zd[2ɫ-C&sW̙z^: O}TθCEryk\[=^ _3 {.hHsfc.|b2Ǻ,hnke_W{6“?woWW“XR{;TxÄ \%r8=UoQ] \ V[by5BBw<sje»=k6gO-|_V#]ygk3{^ZPP7\rWE\̫ϾSVX}?jkem3 iNkOSo] 2ϕ3낖矿{RV753_{eWiןwZ,i,zxE;*ko_H{ݿzyx%yo.<^;-ծg\j۹SMlŞr//r$ln؊[)_ӨD ػq.G> xnaKiqX ?^1!`0|pbj'L} OrƫX2E_g?16>hNpe_fTy\- sʥ99Q~XwNlZt$#(ƲEov< L=W5S|&+>aģQiyd4Ɠda eb΋e Y3iiQ^ꦛ"t< NذY0R2G4K(kH Kp}F`޽{`3Zn`~nfZF\' OKr)9<Q3}y pAhPS'DOS|(|TC2;͎M4ut{DGolҪ5b㒃u/unt y E1) b'$,5MIL^i (oܢi'Ҩh:*)t dEq+tAYmp8$ܔe|͇JF) ~-+ڄ s|_p0$|čDCÆ!h4g5Tݼ[$>>NKdU%ah<.ߍg:"M1q>R1#[Sk}4yā6.nsqXg9'YHIMjf;HRd-*Eܐfz6Z,kr(h9f|N]n.fȃܚzupnL.Voџ.*_M_l"X .TÉ;]z”ZеotyHu٪r{  gqD&uո>=Mۿ_y;|df4:7O?W^x6W'NW޿ň2c;QH9VL11H2(PY-[{`z^ٞdWrNxJ6L>+ck+!=d s[:d)uwSb:}@h~URE>>3YI0vA$R'AiPŸ<(n[5:SKS@zҖЦ%CZyH៕;8~J_+m% *aѺޚ U,mU#MM Uiۄ 6I #x7 =ņ5ֲv\N ޹Ctj7NJkqTB]i;ψqy4sgTس{nHzm{M]V?k>ÇUgD1Q磢ze6#A^VJP2Aۧ.Q5ɜFwq>wt=^PgD6' 0#>BSЮ#nHdl.q Tv#WtAPCd\1aw+O@}{i33"j{t!FT]`̈G  `%UaQUl@^sf4ź7]P23h`\^ȷ.&0jaJ44T1TIȉ4kQv4x1!E@FK} V,P%'NePlGOEI~GT-M#~$pޝMNxGl?s~0~e+ YCnJS2^5Q1 $N]8}NtE }'+嫠lRm4==Џ.lj2;6=yv^NBs+b`*)R8֞(D`F$c0\myXW}rKq E0\ZN` ,~c sCMm\nQq=^i K8.4bZ@]E\y%.4{;[@O\&#к&~jAfw]r\|`BHe R`wZųS A+Ȅd+Dž 3^FiX^ "1Szz \\Qc6J<1~w@Ă!-7j4WM >P,4,&k8V!8 wˀl'x?wUPY6mPkW@&@n(ofX)CTΩџ>t$ n`0b֓oCܥ:zؠXκ%|z fLx)pJT OVF#$%"T@'d3aie8jJp6l7@D맂$,##g?F(5:f@X Kh4z]wEyIx,^rvӶ_W0];"۩A`8Up:^0w:o̓n]úUӖH! =R(dPަdV\vnZJq0nnZTk7e~7i,{V*A*F'ʕٙ SR ["AlpUßTy~ͳŖ k5,uOqik|# Kqc[Kqu'Pb3"mEZ_<O~Xփa8>NfRA{n.,Mt:L O"gRPcMlC:yg?Sјq{Mf<41D#;֯&>hè,+'H&夳 .6RM)'q-Yo S~.׋Tfgtz)̋-FS g7٬tdi1d- afF-LS#(+w6bxLR^L6>r8`fmNz |:kDO~P^r6[?Hmo'x$zg&B?hf=/Bk{&`fmZؾϦUth:-WLCs d]< :)e`ԘȘ6j1֘Hg,4H@ӈ^Mi@Dɨw\ 'F.ss\ Dd)ЧBl̻y=}Owysf:/'bw,:+p9Ir(Z' We!~xvX ,6Zd4$-kSf j<.ssq9a,#$skIFX'ЃK\0Lf7])ozN.T~~"s-/d``,Pr;Ad){Vnu[TOíom`X#s˰ArEn'3G"S5Bp+-W%DJh{˓̰\9&Dj&‘GR~ {tlψt 5SgDU+)RDsPQ򄁎5p+PG[ek`kٺ1GY@y>\qO&=.%VbwٔHqL#[G 2#rQq.cQټϣpψtV3[ilaxʪ8'̈́}3<s:^ڬlh^>n/{FNIV,fHpClcH-i-*%_?8?Z텺 k2!D +2n#Wy5k8C !ز5eƥcD)T#?EL INz\^H|! 9A+(JZrKB]=䃁0{ sM C+N.dNG;cΜɨ`%9 )5.BJ>*`'0ׅ*5 L3B]I tD킎yPͲ͍"6;MXƴf4Z<-98QӑöO)rZa?}?6mj"Uiu#JeƭngMߺōLכDrKn%!v9'noPxud1 Ӵ^&1ar[m#mC\n<.nb@"Mo\0G+w80}ԭ&W82Ƈ xsl.vJojU Y . e $EwM$G~YXJZ#7m:5-=d0v|0WuP6I;2~uJD;Xw)f^xߚH7Z wd:ب+տcU'zPz9η1^ZnyZȣxQyV0Q[잝šŎK*hep[ϭ%Z}W9so4}u[NחieJ䲘)RPN-t99 ĉKQζ3mD:|!3 i0!(@IlQu]I BiU۵cY"fk"dV~z,U fI$hwa y01D@e^QAr‰rձ*;">QUw8k] U"$dNRv=Bxl0+ YX ۀ 8MK'Ux~QUv ~5ׂYh>XYxnɃ:U28Lf$g<^hVY! /]/MqJ*; HrYҀf?|?/]uк!/=ξXkSZxKVZZ/ZwZǡGV%`ԱV6^ C_*jy%zL8/X~:IRnhk 2EB"B$*Sy*˅O0H"m:~eg: i`eY\rX+x@NKog3-to*x4d?\rpsl.9hgJgu>D 5r1GfʢPhk :":,إ6* *$M'!FQSRۏa gN@_Qec _Q: $]h`e? 8OIЋKiӚzvdwo[<ξ V*洷Em;?ݩY)*@4eG348YHNY|5h=?{ XGwvȲ^D2D#+r)>A${t.r9B#.q0|>;Nͨ(qIfJfM" t Z 5Zdʟ*LGS3\mPJw1Mon=n"Q(AULfH H$.rm>qq[O\Kw[{}v{-w0]@c1ڦ{^c'n7ag Fa%y =$WÀs}@_'ޞ=+. ec_6D􌼜-׳Qu9ŢG %L-ˑ^.-Kڗ H,__:X`'D'Z6.b9-.( Hy[e.==#ۈuF !QY4itJm$bYěQ*zn/`g=w\ѥRE6\ˍZsa֝tgsF+#ߧ1p2+ >LsOfrLrXS7LO<|eᔝ[i(nԈ3r6|+Ȓ0v qeeҀ j"E2[pE2Z5tn3=Kwqʴ"-iu|$#)PÅBj@(lh_=dߪHFcaNR:<"Gs\ZDQsv_́9:snEfީ~#] ̹m%JQ1q-"fEڝ=z d&Bh+ô& X+էDݔ1rA)٭-fy6٤It;qbQQ l=m9hV)4!?~V.TTU`Xvy W@n@NŔ\)|R:t W|_kA(z#>]mֻO`o%*^}-{q+"%CkG_5nhHK9HUڟ6l$g[BuLWX*昹eesg bTXqkzn7׉#]^]drƓc^u_iIARã9c2l\ {)1[r8/엑ފ *Qj+u:G+2_J%n™o=Gj|z! >?ҽ%yp,&Wtx}y'rPٳ9j Mص?[rZJz r,/``3 f ǨEcz/xÉ-?gf4` tP9:LZ ,%NB-3׾XhSwWyۿ)NW[O>O_oR0cirbcADq[(`['| 5tﮌY=~aڛg+G.ZɆDh)#BZ +o`$O6FQOIIM/ntY<LOA=";kz0T _pnr9b\#'N-?zAmlri61듆0/{l91^; ^Xy:vrATYLɺ ?Lw Q™F֛_y;_ʭoBAs&ҔBE) O8ʵ(w_}VeUdza'CBw/wO;P6MghȢ݅]KnKV)/ZGU KKd3 h3,'m D_}ۧf0ʅнmlFg%n;hv. EoaIXl`1@m]dӆ2 Zd퍖&:/Fb2I,X,hHQ&KVnpe|*^o);fe{SC)CPJrGz})sAzmeŹdr}puu怤hڊ!Y9͝M; .2d/OVͮt(c쮀g呻t0%唓*C:c_織hxۥ賐Gn¯:ygu \r=8g?̔#%6xRqLč[(y+nY|Jm_mDb)AG$`!nV.yS!Y%%]Woif;8Qq~/|HWWk吆\lblնl(rHD3~N myPr R1 'toy9zPҷv~ZJBrֳ׻[Jr5Zf49gc(;x(j&rHDoGެ ݄;ƻr;b$+c>sC}$1,3RudLvFS_Ӭ!!`IeZ铺>3M8Z\mB]߷zzJ34\,qic 4_6h >G3CA8=у<-mput~C;4DAC.n27AFUثKeS{⫸B^̬\إgHFö]¾c*P] z'b|EQy[n(OlyՙzMH(VϤ` ">ϞBzRC:y Fft91JMQ!Xo*運 \$ h# yzAZh_4jekWn+0/ H,VO.c@˂TGގ嵠f+:ȋMM*?@h(ӑD{Τ}٦rGprXiϑ!=#о$i⚄8Q+(iHrL9e,S?G&i_tMۺ6iCgۤ;˻6yCg䠭;+Ӷ6:ۦSæREJE"60bFxҍ4ޝZmOMR´+`?<*$AlMLg'J+Y!a' ;W:Iuǖכsz:(-`^eW)$`M)[z];IfzB$EvҔuc2i-(u eO0(dn#kkIVs-J bb-͚F"@Cw~ݛ=8 [l7]lY4'K5!klѳZj 40??|_o.xq Lr'DG`9 Ҕ-_3s;? a0'?()9h{Èin؇z}?-#!Ӗp,Xm&_i{MWko3h~]*a?{l{|(cq`V^3 Kˑ,sƗF ssU$;!9h *8VJA}O}~+K_Qeˌ&9gM!)vԖE a)\ lW0}h_yF\o>لؐAbּO˜;7ßϨr& /Vf2QN}c'hW=&J!)Tm)oXօ+c -O@CFD7CloSou!1u2!Txi#)c\)(D)^ӟovxC#u ~0_]n&/.h! ?p~Y\$N2Ն'2 +7G_u>ʕGS1 r+#eYg!!th ]#,u ?GeU9\Nu Ik"Fxg0.YA3 ŀHB%UGdDPM^ e]L#_y߽zq?GY=M/e zHc*&|񎖗Vܢ ?mp ~w?7ãc 6#n%N_;%DmNJ,: -IG3#U:ɓ>8+xTK3a~A~OBw7߽~ypz7?k~pY7w87_~g-sMo[̑r AYr#՟e)b{n`:.uR:rU.E" ˶\[8G̹G(͒ҍG>lG Ks"KSyRDH||ӯqߌ?m-rO!TހK.j\Nb^2O)kE(FR2u)=Lݻ2/fvNVI.ш^GET,ײ

{3[[v[eۼf5oQTSY4m7-({8ܒJYy[)pYA{zz0O:b0hk_UuOK]u6El P;;v-| Oϥ*&gwunX .ܞIY0@Ͽ_g:o{y!7OB"Ѥpf1LL@tYzhN̜v`BB+3bbLeKYDT$ʾh9,i Ӌ?]6^)k h|o~'PiْА<}2)FF-E%JGFV-E` eTKy;^"8?X>1&= ҮU=r/7vsHX*.*o"v /X^ٳT2#keD^&vh>UJ6+{PSʒ Y+ & AFzØԳpDq hfӃd69܃8&΋N5~)/4[2?7{W83;)+O83/UԷ,6GA~ZiI^ui DsLˉhmG~=}Z<~%ދ~;I0BItDa#>m7ɍ(W7#d=4ȡf޳JCXdu7m(8E:#&1>CZٌn-E SYnr<3vT؏1;g4w.Y;{3Zlqo@ ,L7a?}g gBkB~h%/p`/oX#3Z#{CPCﵴxAv{ҕ'[ޑ3>Twٴ P^a -a|f,ϼc|n&z-L(E^}bࠍ_'\=rTz9]98C^`<^o;fyߒ'޵BbÆ-2@ br'Ey8KA` y!!W+w\v,i\f"ϼg\uׂzB&QpN{j i3H.R4H.bcBC+ y]cy3ys9\T=BOKQQ*k%2!a("@$-y˯^֐J4kBhD{Kzq Mi:(1@ ˃ͺѼFRQpT0ȼfQ3ipf3V_jw S~%i"e +I;"1΁] 7e[Bq$'XkAĽG-s8̚u,6AX(_TwD\SY`,:*,c@yKxfHrcMY_Gh ,%#Q*NmTwD7XuTXN1l ;IX(َ^qo#b9ǂBNX]9e5fr79SBeU3SWX ؜(S*3/N.;wKJֻS+^\1-N@/}SYlnjnQf?]:i'~0\"B/#Ηn'4[ۺj5~)_}f]:8IPᵟ g&^*# aV2&c?L[Eh'} pZ 7tjuT(*=oGB76Ne礱ް#2sk;O?s:Zwɹ*rO΃ {|'Av*wɹ]~i-: %htX}-6$ϛr.-?뒾"ĬVHR6~ە 9(sľũcLp8X,'0Lkd-C+Y%{p"G;k t9#ࡌs]mpPHzy(hǝ.쁈dž墐cpXcE9[_a7.B=.A!9:П[]j=X?v۲k@bj<)P])IK}vl)H&a1бASٮho*}1N:Nғ2JB39026 gcb1z 39007 144796 xk$}# GKCJ;skfV}-{;݉5=jUU܉ vYA>%|0k80dǑ% 9DC~zzw!-$tw_q4#1IoU۩5?uUoi0 Ӎ {œW't> w;|݃Q~<?{WGII_qXM0{Fsk[~{Dhll,Hk[̒L"x|6;ѾFgA0܋?{327X6f#XGt^ߟ{[:nkqwןd, 48x'Aq;My^hp!:fs GWW&'8ccX!?LapnCďl~s~4W_0d +A8HlI`38, "[S^ߦUE"񀼤G-4: q0Dd9 t*f7`؛(Ytgp'A7&Odep0Hh1Sr@'z!@gahxI0L -~xS2وvF(5N>lwпمO߿_[8< |q\! f2l<8CRCřBkŌqn9oQKQwzFs/9sS` %5MVhxpRK.jOݬl;vf=ۦ.{ѬZ~otJ[H[@3_L'~n l[gAW7LD` ?Rd/Kz&'Oa4Uh (uyF핬1p22$p VU͡ {*k6z϶@vbQM*TC6XG1xЖbt0U#^/9 u 0"j1> ,#&~_Ɋl)!V`^m*,'4 g, ʼneg!`M!SkД?a<@ӎl(V4])#$< qgj$y/x2 Ht5-Mϓ`r x4D@pT 8q0!" }(nVP C#$,w8 Ad9 Hщ,'ɠ ~B ]S@r|5BH #q4wiȁu{Pܚpx, H@~7a*8L$tt:tTA%P.c\8,d14r{vg,)2h"m[ bXml-0sýV6?7BH#\Cm =Jޖkbٜ]$?PeԾi8ӡsDQ ',DciXRL G& |Ag]*TQU^$F&VvSצ<&<;} >R[ (Ir`o!I$]y7:}LecFWBmE4|xqv +7qYN8ۂ#E=]`/"P᪽]FY2Cowo4Grtx d}Fm?[@A)mn9M36i@ B0c_y̺PQ5VzS4塾V=ᆍ&R!h{G;: Fp}Ad }0XTy>Ƣ2!t#CȐIh5dv MŻ+^xzUw@(&tBWMƘrKd.h7+Pf|§*p$I chx6"u |bN"lq1U[JʓFBFlj4Q,aIq4AyFe-r!>'9|H8,dk-@F="u gk.aZy~w *΂3HK|(Z GmY9n6%Qo[/tb9V1nH1J?롡۷T/W3sök{XRI0f/ Raa[nk.5-U@ؙyoonWygdsb2MA% ,ȏWs@ւ)WT =bL8ˁ%X = :N.Ev 4.xJwߟ݋ə [FOo` R]Q !.k9Ej@cK/? νM!xrEKm( f} eK!I% 4 XgYRkkkiW]۹=T ?fe1@zO Ԛy?Ӣ[q|;{>UFpllb%u ]CEƊ*S%&=R{@h;+Hg$Y4LA=<dzTr$8 :T<~oU%-.I9<縈$:nr-&#$DIPBQP!^Og˥-֗+dզq٦T𔬄 m2BMT8<+0" 1|R |% Lg1: =ٔ;NC 7TUڮd:$O>{65YR#ʦ7&> FT.R4@MZcjWg;`d/5c}A ic?~B5,~&Э&W׿tDal GBvYB!#A OyjtӄKRM׏";[ D­9c\u۲W;Ss=G8!H-l/}E(c12Ȋ5 `!"R_r$hJ-?(Eܖ]rMge^y>.NXVW#qqY¦cS@AaN- # bBkOm:L::=8=k^NP l+_td-O뮗DT53^: {?{mB$GA|xPޮh Ԟ̧G[(,1R.Čb 2q> h=$!MbgmǑ&g[DB>-b 0f";L`Hgs|>?fLVA@bITF(Z\ӹ϶<3Yg^BVRF _?@ԣ/2Njc,RJMB mT\Z9e}! #ِ9W;Z̆5%P̼pp0onL%hX2?-_ 庌WM8!Ԩ0a(EZ38]Њl:ZdE[`61 : x tBۅc*|5t\lk騪۴vөo6TH')wY2*"v\%:˴9Ɖ(>fHFxwpVuT?}]AN/r7#\Ѓ8gb:N{-MƮěRiU-q8>2JV(K\u:^s+'.ZRY_I֧HDўGB޷ }Uv[W_5Q~Y;eg[a/SDB#ypqIYO'V89^S>{uG~zh5KSv,fr@ƛ0p!LcC&%PFω_bG _GuhI^ a!ɭ1> * yaڣMnzjVh]:' Imҳ-05'-̠ T 7M)Kk pzv*W ZgX|F.XaIy"$Z CG ʠ-=JEZu*E=v-d3F$ӁF a-IښOc3~x[ɉڹI 7o6 &`ﱊTJ(o[7F5v1lvDEqs,)QȔ;xOPvJMž@maY@kuZ@%bu[Q'DsGԘS2F;N#q}} .fZ|$)QD {l1A\%$8lʚmz >| ]HnX!dv^ܽt>Mt`{f:ۆG@+=#ҋkE[kvM P*0aQ@ w` ɻ,t ˴ZA&J2q=HsЃ[ C\$^,ZieT*4jךhD"Ue$r5hyԪg [MGѕ* D 5WsUU0%G_lOύi>AxC8f&Fۏgb&P:Xv$XV$C|ēs# lI8ZQʦ 9}Vzޞu Y8ŠaN"=ڙ3ʪdT !zv.X4A|~3).( tPlz>oc!م淨8F}^FTME!  wN{ya{=S8;/?YqHHgQ6Lׂ:PԪ] ?{]YybtjH^zGBQ`SܘQ&#zYDztAB%r&V읁:)\~(;EEa2 >{cmmA.-GYfwpQla _yLnv*:$)pŜ% "alƈ ٲ\MYyNS[cj#~\cqP2/DgxxFS\݂XTq"Zfu2JDi؃̏ Y}pYaoPt qh00k̅T)C#QA0xDAJCHo! ER3)O3pR:Ł%Ct`NNw:v{WD"O{l~ºOaqLǷ&bZm6j8Msj@OOv{{*%SDR]@fLi]IPqrq/SGǑwf]5)#tJYDqPE.yvŤ< Ǫ \T _VQFN[C&;R1{%0sTD {H5zD蚶Z.,уNG26,B`X=S\ Dؙ (2X֡,8JCߒz|O=cǠpj8H,6U7Z\A$B`,o<7 ,xDn2BV$.X|(0 Иۖ=C:d+HC'+D^(%myF H$55;{͆ *M SG3;2t;0ߢ?Bh C[^ r7XkZQ Hl5p4 Jd{#{gsH)RW\B\o# :֣#׈#1cf!$ 0a; p0eo˒կg.{2XyM RtpTr: Q*'aYhl$[&HJ];?6v X쮄]LS+ꜩ-hi \gk-:ǭ,ۚ ˑT9Ҙ%w)QԣT>$^^T0Lz(fݏi]XRǕ j !@OfY4zWDB' @w䤈-c\pUSR4$b4Z 9B5=- Kv6AsXV${%S):21,ң! V [ȝ[@ADv>8^4eBT8#r)`UT1cɈwcؖܵ؁Q2GYū$P}Vd6R f'@9\轺KſT쇲XQ:U㦮L06ITWT E[oy)%Nr&e*a t:xjK%پ*:Rn2?$ltp~ DFߢ=TʤQ kP{.cܴw˪=^ uTd|gPXh`'F ȻZwF>oQ s@lE"HVbf묶]Y`ig lbvY4\A `HnP^ˉx(ĝs5LfRc7m;B:uךVVՊB/V~)/UaJ$Cm.u.'۷֦.ft=v˞P1cbI{v+-LB(EμU 5Y"' rd,a-[\p*ė527P|G5Ph5S{-*MIDbLhp7\PtyRU_2)|75*3MMxݖX'7Q.=ӔDmK2^uh6my!'ٮ m7_֢Cs og"؉ m3Uq"f3umN]筆 *fy"c!?n֨9жBbi-0ݎ2x&^碵,f.2:*kY:dgI&d-O'*#WΟDeN怷5e{X|}]T9B̵F)"u)Xdz 2xQVr;;'gjpMsg斖ai)JG-٤,zG3tU?#igE[%o't8'ܝc8|*l&HO|E8;_hbىXKY8[(&񽽇mVevuǔ.`50(uC* ?Nפ쩀a]rCO8In,C˭4my׬:Gu)|\5LnCHjUul 0tv2A5l]{R&7jUKGhzTb<x?:ʹpK *uTtgDo(CϯK;}€ő옆P|` 6IPl#L)$q-f#2VI> 0Q[YYdל$ڑDVve5;* ypʜ` t1[VzˑW;H(()z]`Ƨ_9i 0"*vSGL{3a"X6@a0RU:T8{h[%b1?9/-ϳ&-J5VK*vfI\XX3kG5YV.&o-žsu 9V%9ILNXd`Y5eGޢ~66Cj3T5sm&0e!nSê&bn[1fwwfr~ Rn0eg:On{z/&WR?grMM+$ʤOH&OVq*Pl0'YdrƏSiL׿H- ʪQȸeZY`6qC+3l)6umC&0@ꧠZb]#:LG6m5];Op"saqnrp $Ƞ= wmgζh㜨E \s ={Bv:{{N q$)*g(vw;;mfđ I:6秵ij"d}lRByC%fVwCVGGl]V|{^fNeJkPģb.20Vz.Aёw:i~7fHN.5_na2xOBG v[$D,J:QxD$Ro Yofvv}_yeƥ\5-a(UN8 bǦ5գ0ZS-$*2iyYqqI8:1G,^[묨 myLˎO>5&wU[.mIn*Ys2c66QNMTah%T wUö6(tM%iM -?$<.qgfs?BjF?,JaH2 C4ݖSr ($'b8bBȦjdȔvN'5l}C* vbbs6ePh8DnH鵷]QWQ&jivq!jcI?y ybF-qn"ewʸS2h-"Ѐ@+v+7I\% UTBպbi^7YvTv !ƢZZl5 QbIok5I]d#-zGE%_W!UzY+ܪZ5%;2Ti*eF:؏J݃O c*BN@H cR9 "nK*[h5Gh)Z+ n5Xd70cЅFSrV@{nc|k9JVXݰPI}T(OfN{Q] 7PRq~{/6{!Cҕ bB:?xJ@" #* |C%y)IagK;<5rV]|@qxgApH4EuucbIK+F®P-<Y{`HK*Zhg>u+YZ\(jK#d'}ޣ v:8Ԏ݈ X5Gji^c8eVG1PJ%+x#9am ,RRD; r ъmʻwV?2@bNLH,A[F"t>K?5vI+T ]mr]&m.Ƀ`?zlje;,&_ǸzF}w`eg* K3?/`28*񝛌fkד;Gςx>xI{Qp0k{_$?gD̨f3rԌky!N엜8. gkD]ay5)щN#t B0ːIP:A!j#eC4H Ȃ} SwL :F p2 *ZMO̮{t&pwr'imnv.daDp[+{!l9 mUت0` Jv?L:K*#–2`q@;ʧZjZsIAUܤPts]80Qpjmylz"ybYOb=dLc?< 3g.:ZF0Uu ͒1$%FeF^~DH|}4ʠJ ¥iao GK-kH[n 3Nc^cdߕML]Q=XamPudb&[nYDj#{[Yӎ&h G*vZbH_92Y簺$":H|wx= {8ů{V/D^^>?l Z+@Z6Ͳu/Lh!~'#J3fJ CUuA%:y+Ka!5 ,tȎMCT)IaR qTN{VWspW̎2ݾ|^wr*)r#G]A|]k4Ǻg _)BղfNUz.U?w7>)/ Z,}+T耲ذbз ")X WzCZ+uba̷$_rDIv}Ig:)k2*USf0"%9,M9Vbf Y![9KLw;UrK*I`f|!FFA*B*XBʙ>V^Dg_?jc޷V -y421 trh1{N9:[Z:Qb;ζ|K!4F ځR)vdr3T[:5! IK3W|3YhQav2Wk,zGckսdt-'1%VWMcR5iO(ecU,$4X@%ۑq \S?kb Q ?M{i[DiPX7[?aݗji?X+Rzb eJA4%㳵qS[ڽnm }PM4Ӱc-5#^btE,o8G6H0""n :kZjDώOivw{ʵyۇFPrؔnlNkycTH-f7%hHGz+T" P?-~%6 x t(9RngkIXF6bXv 5~l Pib䥜鍼I+09YWeJ TG+T\eҡ1L !Dvj ,/?'%"Xyٴ8AjbgXĔ>OsU2=J~' ACk=EĮʽ)lus0U;}kl:*rQ Q&ۺ*f Re鶢[{;^oMZVٹi"%Q=z)c6^,*F]4O$}x.ra;h+s.Qt][(x@FQdL,QF{mAGMuЛ@b \o~#ٛ$ʹKϳeYOzRL6ЁNY nǓ]uv3τvCFym6Hods}TEa@5d^<. &ynL~ tͲZĸea>0' jMtLk= )-^-~PŠ pKW^Q=J$  r;;#w&Cuwmi ׵R$NrgϭIM/4Kzn$l{;;T :ڨMUcџ? oh7|Z?p#ū\׾;2gqZxo|gi7zu^۽w_vC!l[;_7~?K?PK8GUa*mДi\|o>轋/5O|}_?3ݷ0"q OoNԭ[?;E ujbGc7iUDŽ>bחFY#G*<,b# + ^n'㚁RݟUNwcl& JT Nɘ8V e6»}f+m܃*~r ;k㼸lۆ~:S)B9b#dCш2PlCӣ#6(]_JUN͸Je[18@4HJxRYsKQsgfKJw}>cia>Y >^Ų3Yg鴙Bn:pl y)rMq.Ut- "$J)Nq $ X*%@J"U@EKR+(c4JJ(:9[0)0*kewH`e̙K(gW\zBzۀz&kaH[Wy"'֗qK4Q}Ygd+נR_ȯE1 ;Z8J+o8 0ɨEf aepBU|,陾g"eLqUI3˷OgD``EìƳ(kDuՒr"e֝lV'\ӧo߹yw݁g^E nN1xy,FLv. kˏ/1E'֡LǍȊ.PmR: ).)DbLhZ7E~cJƻ Q$0z^L6VMm%1HFP9XύGUXg&_i+I0a8OH SąuBD=cWV{|KQ3r Qɾ/f+) K bŞ֋QW_)ƥr8wg﷫߱-!FJt\%VFgx2yANEd(lV7ndlcgmg"'E'wWauwThéЧ:#M݄,)>Z"~ڊY:Ժ3# G:.J$F y|݆9Th6kBR}&ź+BQcnHҋ2,n,w_g2O,d9He$e%;Xq˨<KWHg c)O+?W[./\ӯ~?ћҷbO?-כO~Zo__;5zg_xeo{o\|?/^|ۯ|SZ#حv#%ڞXK=wWwqN^{_N~/? __g/}2x{Y{ŗ.~]\ ~.>[?[?|W~<}}{zչzͩqҟ*+>*㨙s /zMd5O5/Dc}§/~K:*B?=5 ^xp#}ef9y#8GWC+k;TGAu Kyעuy{B D?o{2ρ?}_֋/.藿> ZaE(HdQu@9#d{c?}. ~8<ƬeĕLu{= IM0#v 7=UfQj*B*;^ކwkH4fzט}*KȠ~"T QP/ܸMTq;ׅ!_.wIm&`*yVw@f}r y\gjz~o(k%k`ܼ;0t;xtf^x^&o߻}S줖O¤)[_%y6JG0)ͅ6y$jZ:\oIǵa ]%$yDPb‚Of*5jMxO~{ ULɟ]xY /g$e [W[ ]=a^ӟ cq0:J,BgtsWMaO3 %Mѥ8Qk %HO qנy(U(iG42fAWK$=K@/˹`H[<&$3bR|;߸衷;[WuTzOacYJ`{x^ٿ~>nyC޾w?[5r@;ظQuL!Ƭ>7^")HjG=Y"fπ|8ARnu\ 1W9`#~([ W)I[Ē✈88-H:VaIUk$-wljfV w$d zc"1GL^*m#ӊw;n4KsqJVgA1)22ZW6"D}γ,gQfTYˊ*#{wq?:#·*K a3ýtc7c%|\P[рW%*LW0^>]xct>hk(>}z$.Ib *"bZglg̬Uݏ7Qpq ɘ(V!ICXq:< WPu]R r f$`+t ?|ЈIĭZK )T|3XN_9ҧ@]쮂ߒ'6gtMUREd?) G}cכpD]hUƘΚI2|Χػö0 k^Pl]W Lt՚52K;j8mG 55 0AQ@Tk3\mHHROMd>'%BT}n9?hHy$hNckڍ;ZΊm"d[֋WzI& }8q$2)aB{2ŘR}< HS#k$I4 E[",z̢'Zf^;-6RX˲``<6+- ݭ'!+Êy`LqI%c-9*,=Mv;T#j0etvE-FlWQHU_,9U/VS8J"Fb͂ X6MYJEK>S̈2ei-Mw-N/7.KND j-a102&0&k%Yl+)&} > j(j}hL_/zF)_~d_<\eXje\hR6= ό6H`.: jO9slʥhqTr.Q}a[F@%);E \kΙMESG/[T56Lq0Mi6-cUK@\:Vބ)s;D`s5?n3qIyW׶k5 r%n6gMV}E9ix~X-Zkq8t,*?SƆ>9^jƍ8Xټ-sa\BwEE p6\X5NӅ4r{*nXaDåWnZk=&REü9 䋣 ^.qLRւ I"7:ULP,jS>-f#I,1/LR5Zqy僔P68d$!Y{al]iBbeXZzx.Y`v9o_vut&s?AU'Pۆن8d?QuNr8VK _bD"Q܊<-~zl7IHV~PRD}qFC,9$TG^\ o`XZO8dhk3@rbMqkpQP)roY2E^mUgKSxfQr@q^*^IˁIdT58 +;Z㼲:ڇFZuZw}jeǹtXe4`z@BrxKR+"ЫD`]HsFGdX%C&??e˃N֊>R!Pa@&P"XƧx5u6+ݮ'p FNE 5Pf-}'_e+#LJt֘}),͍lǁDq-զh}Z!Ng39F|] ->GS:qitBU(i;" ҙUl*4LSq81,q~k&`FJk+8ق%FY9Hɳ ʑ  EbsJ95^ƜJZw*WKAL^R !{J|#SUd"Fڦ/h¿cN d>#'qmq}bŕ=gX*χ1m)tl~FD͇JP- j\w̉sc8f') ˪ t`sU39_M-il2ɷPf鐴5 #񖏪n:^⏎3,Z\Uu[@Ld;VRFf="޺kgQ BAeO'¬HT1r0-RʊrpmdWw3vhq˥9-Y 7Uu?2X&{؜aK2Y|ʥB+aC:$eSeOJ+e9rEhFFYhk4gI(Q̨ EՐZaL;CHl4RRqD%$ 1_Y1BD4 &fl*,-ᯆRK:ȑ!Q^9>dY e @〪'ޖQn&meME1qlԘT( !B U-ưeVd!j-tb Acx16yN%Raq&UCFD)uʚe`,()v94J;(X`kwҵh3V- P}@BMNi6F㪕XR3w UI/gc|K?8 ^ ڗ~vnŏ}K?Wň2خ'W*&1Se8SE78:sًM(7UYMǴP. ^D9| Z.^9]obSHP"ؾrmnj{\) X'~sj`˪MÝVQv.)ǥch+}eL60crAu2/CdΡPX%ʖ OE`Q Zs{P18Z "AKcqTC). C(Ġ+S]Ѫ`e=dN|6Z[E\NVkd?.QPnP} ׬4YȊ!G'яF#2ZU3w!f&SOv|p(|zd qkgǶ-O` ,Yu @֊ EJ}W$@®:4z = TtďePu~e6nyA:]|[j:eitRE6Ec$:d4E|sOXiIzgF"S:ڛ?}Mq)xOxPN+O ^|!F#̲.ۿh 5U1r&?nm.:b~64ߨ %iQ"187\A$)eQ5+dr;`ȩ*gdqN_qɱ#'ްdqiLBXyF*]t%6Lp!bbfa,Q.>vI`{pUAxb[&8>E78s 7x-f! \,PKUbTmH@Un+g,d-q: 7T —Y RPsaXf @~ܖ~UK*?,.JDAuLx#hT1 E%aY~ ZvW\FQzKa'3|Lp):Ų{bΝVJ $q<jԨ%CeTAiToEbH!>QBF^z>!.G6)ge1c"񌫛bGi}EWŒZZK4<]D9Qe"$NsK,Ϥt4eV G2Zk[5䳤P (J-S٪&.L[Kb렪a ɼf9+ K6iFs!j~삍IBUe΄s޾́_vD8%,z *ȒT6lqA%9(LV- Zi)%(4<t)H/ԡ:m4TUȵ6TSMN[ʐ*DŽ/^ k_Ie1t7CzP'D=)dsw#Vc]h sݫ0wA-jWmZk^~=*-%),hg;s3֘9[KS+!eL\3>ju 0h&Wm! /lj) c3 U:Z83}f!m4HHJsH[vx@i߇VIEVF =l"q1FII>[}2sxM!WАTm>ԿAVwCW7$NGi=I2#%J( Ё 2 *Z[: q4悅mM1&P BY/Ws ď'F/G3d 6-;KhYQy W4H"JÊ*HmYnpWRF*"sJbboWmc '}(*[=A˰DY2"n^*u!~!fqk۵w_^~hϏfO-M$1cɭ: ΁Y *I:[wĿH ymC#W" q)da[ؚt̒ R'D8YV9i0z׎.13&*ReB]u!2x se*EцE"",-BiBMDQ8֙8[d͔OOIZxUnLڊ\FcfOƊV.Ŭv;ezҘ$~đ_G\֫6@9,{m=^VWy.WMU ~3%՚O4SKpmm͒6Jam0O~  5 D%Y&C1eVUX,/3Gm:.EUW\|UXs$VU$)U$&@".Ѐ:Wru 5 bi+Zڼ6wJ!ثSXZ` tJ渲xc_/Tgi9Ge]7#E؂mײ&݆ 2h[1wVݲdēyR ݒ*30?JBui``Ś}69Tp%(IU+`{2ߠ1g~W) 4)̨r`.FRzΕ9X :*DPjd# SԊ,jXJşa 7q6@JQ᷅1jFKxKP0Xx0~Q N;ʗ'AbQ^+@5ʏAs b k7&jY;RV͚v#6KI2F"7Zw3;mK )3K!qéaƸ ^aU˛5Iݛgh[HZ\wmg r? C81Z+^K;t컈cܡeůU'-%HALoљm-.רr9oCx1La1uRkKUa,sNaNu ؘ(}A(9 lu-f3ƍiN}-:I{ݠ>4G]J%ZYd>ۋDXE*T^k&4eǝsr(y7N%Y2)0;cx:xyOF28mkYշ]miZo;#K uL]vGNY1}n vE)v/[\VIV8募< $Lb&FUcWӲ#vc- U(4ʫ^z3й4rp٩\))b (EhwWkL8a;[Z\H\c8X=}>2!k}Օ쇞 VŏYS{KBo,]BGG5 |5.~rrJ&U?i[\#}ZWsd 4^Z DHU,cGH2 hӮTx3~ֿ1*HWš][E4lIq+X6 34Yhy[qQmq&Z0SapFafAB{}Ux=n% SXSG,/ 8XK|>[ofLLwwv7.07p,a RX&XU1o9`:ם._ᔡbZpk5-2Jt]-+Z<3^!TNQY!9լP*T<dd^&ClOJ`"O<+Lx| o5<q4 F77ի:SWQh* UMf"_̨h`+Z׍(SJ37O+^CX =8K"t(B C  qPq$[!&V#)O?.kDO=hߘ-;S,2VZ$\ @c>asB"(Iu~97|q&& 0뀧gaVҰewWڀ;G'Gve+PfNhZ𠮪JS(Kң S,Z̆ Stjb'N~N?I2 X+LkuyG*C3Ae$j+M-47%qG_ ۲|:,F>uٲ|ؖem4I3fd[p+u:!$@A "p\!G&ل,[~v/߇5*aEtǹ8SLi(=W8 *nB2ڠ/4܈wiWԌ'˜lU akԐV5IxD֍+/{1V-%Z> ߎ)u[e־+.m@d{DDž4Nn:ӳ`JG1ٌj1TɄքAn{$pקJ'ҶsmII!cAqO9ůfAD8-_n]JE%7CEe<ɔcFStnsO2b(E~mp$IPVǕr*>. 5xĴ'<nOpKzΡƄsibJ ۅL"ge^uK7܌q37RX\w".Ɨo,i_Յ;'LnfrhOkŋ0eUvk3o瀵t="1OWZjWxVQ{y%oYT(&Y+6$izzOȼv&N8>[>176[ۮmcO&jmO:zُf]?&~\ό"0}E:rX<{>mAxpdIǍ,}xܾU0~zAle|P[פ'js)VZtxG$]_HcfO%t_:H]O?+ [yh'AIPF#{X<O^kF@"ye+ >3=h?"AP#$O鮧=]UdAp<[qbI ^Hxv˺ѓ7C9{d8u3ApHLѢE"Rl"kx K6E}2cLˇ#1%g+Sq   sTF/:iw -eI&bO^4_ QP9E.YL`7lFf(ȊGݒm izrIC(:X=: qpyxwϒ'Bc 9شi?A]|XA4@ ;\~P4IwU{ [Yl$(f&x蒡#5{VWN+;7'61n. pUJKٖB(+Wnܺ~ O̫]Zl.1,=&ߋlvdYrЀ+{씀ta0Qe* ߨrhiY vN陀6 fɞIe0F2a6c^[fus]2F.!&0! '}ː"-X$WMT஬h),IAbA+ul\9(SU,-+Y+7u 7\/b9lmyPt}z{BV\GXs\yߔ]rP1Ĭ2<~-Q غ1Z^ wR ӎeXzLWyZGv3l}.)[YI8p!:[e_/X-yEp@r K{w)?Eča8KQ\dK!8CY;hvRΜUKq~Py|6`-|6+1݉DYaTT; -yu= 5dݴg\cưi`~r;B-qH^zr.iqܹ 6$IpǼ`w̦"uc#bw4B$8P /]Òc؊&eؽMb"WRoJ!w,+aI&O$#+aľdyгٹ~),3V/lհ&w5.p.26M-ٵkgZit:|a5ìy6O[C B97T-Y#O^+5݅ UѱR :?ÂonYdG7@  Fӵ@&J&~ݛ]#:&iqDhA TkDrCR:΀}JozoVv S"6; |f@lV84gzM[[[M 84۠K6~F34QCF3aDlݥϡg,Xu *kFPYI{vXpv\QVy6.5gcը9rg R(.eU_i(_3a jKvf!Nb!JFq7n2ݽ D EG,L{a8YLDN$\>jzb~Af4!SX_R8K} R(3Xi?Dj۴p '6=j/IÂMG- ,cP?8 -kJG6-[fM_-o Ӭ@j(~ t>{R\%C.A ֓N;# !m p):+]9H<YWO?)>u=EX]YH"!y[ =E{kWu#~OEx;Ԡ3mbq\΋!)E%h sφE~J' _0PU*I:HCAx[*Y+^{C?~f8V0Ol} }jAĻ;HC [ħJd1KC5bSk{iAJΉv5UPcc'7X_n3SwɕA8zW]3|/ nNW]aN;7"xyX|}ux;'ka12lE08]x[vE܋a]*C$bMar`-q0y"w0TyPx̚7R%6jfJERhu8usoeiskn:*:] 2Fݟ9d*U ǧ:.rb(rt:э3 > ' } P/7w~ iXblR+`$3tL1n0s]M~xTdC-=;]ѫq^uhN^w̶vUpq`6( R,"/\A#{jXqp`7,F.D5p㬎] WXMAq| aAzI4}34"׽}NmS݊_fccLyңðm^ĊŕaZPj?PgA|gZ*X00׋~v_wŵguաdCTDcj޿J_Qaק{r72$`souuS+XOit:Cp5WBJ0)ڳzLgn`i_+=UXvu4ngh4gt5?-nf;3;;IWq5Fi `v#L/GUuac>C7F,|gvfz@M𙅎.~Gs3]HvuC:) Gmp *r$eڷ+4 7߳S^\M'`av$NC*3(ԦNWg;n-+߆\T="x!h8586 cnŕ:,wNדY,:V78^-jMF t-n}8p.g3_|9[Âle^ .&[wr5 `v-VUSt؎#[v}l0CZ7 _B=GMra8 xZ!CމmPex;f CX.F}\@u!}ɧd!{^祺 CP^Cb#C0^]׆`=bA!=bcì7>Y^OS(v}0^=#xn<ؾAd_3>þ;9*էA>ǰq,ck~ 6mngC0?i-삟@ {'0'C?>&~ =ayGP,n"1/ޏг*0_s#Ph##P_b g씣foOO!ؚAp*p k OX@ Ealg/=Ds|?)h03͎<3!u˃^y=7{Դgw=iHi[2~撙:0,&"‡q Y̴ 6|ðf IJFGպr5V7iW=$;i\n| 9m'*(VG ì1,7͏HÏ!u\y1ݽsȤWc&ncV~s$Y6q#ަl:#6.O_Fj< U ($r:*_ 7'9 > 8C=(YS*d-|\Y$8M}3z)' 'O!"+}Yi ֬v$;piDfU^~dA&>;[}q?k~Xٱ۞9YDZ!}Ƴs8n6mP@kp|q=^jL.|>sŠz["-V2!h^@|6mc=8E߷;pQ$_mP5N4_D!KGqQ[NL@+/!aG;@ {&69elLnU/rbѰ'_f;҅= LRm L"aW 0٣PVH{yl⛯ "ɚI+k1`+,6lQ* :'^EHkN2_ 1MFFsko NEpa\aWk {|kt/q6voN tbr#gAp߿A:{ovȢt.{Zqg}̴70{ٓoKB!? P^D5beI6Uě8t)BW8$tK? '7_~Hvx {]'P9QԷP^QEk,IbϽ].ͷOFq/\NޜyX;P!.p|6ݔϯǰ_ .U{ݢP ~¾.bOl{HE?܈3§5rF肀yoᦇN"~.^kا~ԣp6}l$:^zǿYvu+lǮ"ʘ[I >B%D'b[)=)󀭷"l~N)osFvn=LIŽh#ѯ Pm/HgjTn==ОS+"ߛ[}۴y6LW@KJB!m\e֠UJ SrWe7JwӇ?jeL0GȄwwֈ^C.:FY0XUYi\_d_)/=O+,)G^ޗ+AN!Aw=F^X{.OrC*7!9GTd}\҃8ֱ;p"|3W櫃A$Q}I.]3r߫\2(>pwK?}>vIXgȏ@+1(Ӳ& 79zj KH-[uZ35kXɗՀ zgJ8Wc:A,K`G[P.Ui9?NFw#ۣJoݲ:D#u)m|-1З԰@W$٭h4o'~zڗ߷g/tǐR~_SwdjH =1ӜXG Wcb3^ "@g8 ՊR$J?Un-2=S /]t)$%?BuG#X\[RL篬@"Gq%%e~%HDK)"6OФәKxA7i}3W>LTV ^'A@z_N} >PVKHiEs6NkB`NHIĕogMGΪKW5Mok1mk];Mє= ը@Sӭjͯeq"&|Ro.oh h<0  'LM~֒HGk3^zJq=p;mK&OL ~RDHT"wt&Ib쐿;NքB&N$HQ  *w, h =?tWN..vw6TRUen8 *,S%%qD.4$9.&Zpu+ôɋZ5N43/grEdANNcn1Yl^ t{ٞ`#*eajkj `~&bsI 3ʀi(ZDx1>&\{ E䏰,RqǾ -׬jՖ+_*d^IF0PiF+ "CXIa4 [: KLN3@E{o6&Z'U],szߵͫWnX42bhʆMa2pV ĊX&#aX]od/ lIl$Weru)D{QVJWvզBX_kQ "hmv6!k?>aBgd#+Ď.psŠ_R ᜪъ3"D QcX-U>k7n^eP~ogMnڲrX}`WuEF%>}oYg,I li楔MwiˣYw"Eo{;MHawSVI,+ Ku|V5mjr/? fawxX_ނgn2NutWu*ҢPlӱ(gDO_8b"kD,M 7dZ-9"Z-ȶhDx^2m2G+kCUP@`{IT-ãJamHږb7"T'qz+'QG?ૅ|*ΗXdʊdu*9c*VtOr8=jxӅ_v٦\9埄W;L`&( #mWFX2KNrYe:Q]Ъ2YRf5:ڌt:4Gb`N從s^emEX,kE&k1PmV @  ҅eV:?M:WvT/&4; *ӊUQ2@aS}$aT*|Cy;`RmY[ RZ}b#aI ȍr`e ̩PNI@ΝBSE 8rًͨp=|pU=GWQ<*ʞa^EENUx&}%=}lk /ycvU&=‘2 m`h̨2;Y6põbʭu| }Sr18a:t?LuO+l›UiY7yC/lZ>}cFvH˛|lŜWGP̢'/f5BEpython-defaults-debian/.bzr/repository/packs/c9c48c99b9e631b3d2d9aa8f4b15a0a9.pack0000644000000000000000000007430613157455520024116 0ustar Bazaar pack format 1 (introduced in 0.18) B14173 gcb1z 14155 50688 x}KV; DI]C iyj\IἌSIIQib;-(/pvMͷd>"qyE9<ϛ^t`m,Y{E4!} ϛxkkta"긫%bq,^g".>mv)nl}ZfiZc<d qhuY[![b3K>CWq۟ASpo`X%xde|?{gwMÙ_Lj$׉hp./744QeKR'^Z05jXWwIdQ%Sfp^Et m_^K2Dj& |[+ ď+VO()0 A?DʑU1ɁLTqrYT8WH ʚ$2% iI8BȴU?=Mf1TDxhNq({Z/[x%xYepQ<w<^т?G{S)o2&Z cy T1q bhOJ Ȗ|UL_q"O3J` 8 XomnxhVK2E J0Mc߂|UE(Y+"6_횵+Όowvϔ8NySn;|X\w[{dcT"i329lH1Dh%mvԹV:ɢ|+q(I rԜ)[lDp@'~8q>h[f+zR]L !5[3Q1%lтZm7T{a08hTsd8jd@aIAlL :iv:eGJʳzHͳ(Lŷ@I \E;+hDHXf`{6:u`w'Юr~&a-{PVh2J*@i|gm/E9: x՞3jWR& b}2b* ʰg,ӫjYnovAo*YBH6^C^AAκwv_kޘ_sIN?6幂SѴM3t}#$o&~RD몧<)sΑNv:h๘gqu#1!nuQBemzO!n 2z[kwM,&@-.jmg TRz1%cQ.PP{*!0ݢ퇯{폯]_^{ţ7O芝di|*\BKS ]r@' ě۲UMɌڄ?-It^]G4ժ) #nl[|͑v3*$'d}>nsR6nqmWsdS$UvA|1t*[Ztv8OerK^B69VQqM&_ܢHE;fZ[D*AY,SzjYO#wMɩ됌fm7݇aWG آLg4K gU*rQyFLx|-@9W7߿y=6RZ!$"6"$!zXG$H5 N0kAZh:Zy~5_t|*V:MB2tVCs_%eEa2H;P["۸8 w|`n[vG35۸b"DT W5hT)0cM5`FT@hMi'%h{ oZSQ(P_FJ:4"^a΄B텉NLaH '(Co0O b/jjn$"*|1 mX,#3Cz&ly,;媄O \Q"R ruOw9(:MwO9]ę8I+f]~_]t3 㿝?8g~x_GsUzWWg"Zb2+4"Kr-Xxz:d䘑{?dH-S0֑pq5I)G"vY!3& G"J#PuKdRD&E[³׈Yͮ€yFꌝjG4UN( _Q<^{c;MH9AVAAV`1rHROkqipVϞ?* Aauخ#)=I P6+.?mbZ/ ݾ7jh5ֶhqR ww:`W 8s>[p|ۮ18בSd \5gp?rౣ&ĂÍrFƣY Wmt0|NmPKviʬ5T(~ zCϜ e-@jBtc#/󸸡x8dzg3Gr!+d)SS%ׯ zcPxQ+C yԺ>3mD9piD*%hQգKhEQ ɳ%AGjXB39ҫ*c$6.5YEˉf =\MqҔt2#go0 mt>ZbwRgzm?i BEl =="Tu˟rьp  -7vG HҌt:0ٓl <=;iXj7!z"|rV.:F2.; in 널h>]vns;7GÒ4M6i/ P3ߜ9Ao*gY)6.F,`x hdTG3[0!vZ;M]5q5u8/RpIi4H/m##D"C#$lʚyx} x:F)&ۢdsYE}Ai`{xMǾ?ڰ6RԪ/J|hkrgC"z}-5x0XT* -xNJ$d$$P<ᴭ@:2ͤyFFW!^;߄VjEQ,yD"wZηkw,ڀ/tZG G1"S 5D8mn,]˻}BG.l'* i9A@<À8fFfF{vƦ[5CNb"gkQ\̢ *o[vFU[ACǰr?Ha Ʋخliǃq4cłӛLtruuCHl;pm%V|q=P熟1*?h(}9W2~R:5zR!jik!}]@81|bEzؔ!jRl`+؎Y5Y^#>0@32{םps:69uҔ # ۱q/1Qք}܅UoI^ ኹKr` V&>njFMSwϒzTUzN=?-DN8ʻε& U'xPHDasG@Q+G|ʯց%RewyA5*;ϥy`''1F!Z\ f̮c0 1ڵ7vݰYA$8&eBRR{TYRڭk`ҪTT/SG0]Ƭ+\3jJ' )rk5IZ&2 2 Rz(갲0I!n6crif?PR!Ii Әc*:xL۳,CF24u %L4ADGCavfe( VPqy*EyEpĊ_<ӻ^s#(\U lMa@y; "E+˽eg=߾ jnjc<*e fpOٞ=C+@?"N\{FB XM^:j-wp6 ʅD1fJvޏ!a~at%LC;[ 5,byz䨠\t l͛QEg@r,Ƞ)R;jVv4R~5H̘Yi09!]Qdp+3Zq- \q*pSbJmKA(#-K:>yE#gKN!5; UPpr^s9-I'5yK5AZZ.b&`jεUϬoJqjcS3`=*a@CgB B8zBS..]X4^xFmyA~J ;qU X5IʪCm-jcSPwW?Z8=),N RK AnH!4TS(Y@IIRfB^6V6OR㶜:rY:1MZͤq8 ✃ ,k ~kBP zi,sYN]| /|AW04m%{GjXMj8ڑbm FϣGa.R^`R}mP{% UP޴ɷfVaPsx\몊ޑ!S>3!{r^9Rq9m:ux)}*=RRk< FB ,rr= 2xQt9E_ \)myVK(mNGWq}/LP>쏮 ^3kQt,7VDݩ*Wϣc|*lȪ#E8;_bۉXGu8P)M{0kZHj5VB-z1(3 Jx`=luQ|r4LĪr+a"ܰr.n3($Bmk b5XQ-Vչ7S@f'#]QCb_ cÉvv?'n].c5) 3a 8PL:?83 " 괟1,x~OZ G1 l! mn.+ &gwgtN*&ӟiԚI#i'jv4U2AP)s{@6VzEI ?i2 Q%ٮx~G_?nHʭ嘬82*T#ŷ{)7H \6=JX[ jv?U3"_ѤVl/'A0 AD&%K8 omߌ:Xa 2F; p@"e WJ,>#  ;۪?zOHrBJA!ʷ|$ôӰ1 K5~VD3R8e,RE|}|à妳 q?K80c9(%JԖjj@ZЦr{;t]į 8&ZHg_$ݿdKkBS py[8.l`]ٵUZޖS-{_#:giY±U;1ϲZQ+%ՙ4h}HŮ{)(<#DAUEQ)I.0o(>Q_O}w|ʃU.? Ѕx;5*\h^\rse/T \_M1Qa.EMQ]WFpрTx=1\"7J$R耕[rmB(gĆ +[,{&7ל1˽Ŋ.8:ٿ}w2&g4kb}H}R Ul5) `|?Ma$OpJx,Di;\ 0u8/Vkk85\ .Z#RNjm*V$|԰h !_6P= c`A${[EjWW/Y.9%tR5U^*T2},?>TlDGCG=JCxЛXU./pyp*p9l.a.  5hK^_j_V7uu U]LJ%!A'baCj83&kq=FQ5@BiZv~Enx?eB % eXsʅǧɫ~R}UʾE[ڑDw}V*k%q)PtIQpJ|r OVKȕJ{< *c(a^wLQt7dGiv +@c_'YP٪X-æZEJ?`QӅ2 RСg+^KT6%G\-?kSb.qߌtO" .G'(`]uh荇Ҹ g%QjO;E9=vQXhQc0M%@ )Ʊц8вVۯU 6eϚti4F=K_aɓ,[^Zu3Gл.׫}οr劢za'`(vϧ7ƾ /^3.*WUaK^a^B0jgwj;]cIE{.(DfݭVܩXie4[n ^LW: `"ҁȗ: gg7;lK.T3e]dUo1 A-pR.- \ňU行0VӾ vӪ"v~Uj*ttdXL2Ceӹ X`{H(;Xi.H ,h2-1I!].ͪlyE~h'#m+ \FޝhL/8 zֳM7ȇݠf o4K0>Und弚}Gz`ԅrW*NПCuqk>HҶF ooB)dYF%'T8沜;0/Şcu#"f{ع㛂O>o )*0  ?R`Y5Ew>籩q  n XP>0@\狐+wu?ZΟ2qɪP󰥖qxI*] ́5L i{h( c *`ga=7ANXvٹ#E43X̹J`?q2ڰ x7:ou~ԈAQ QW;Gr [nOKr񺮖y40n<D*v.̇R۾=eGӁ*iMCJ;?s& sl Fu?/0rt6Rgn5<#Dh,ǻ8:Ngu'!iGtNs:N`zmQfbfTyMlr߰Qi6uMFt!DŠCHB; V˅NX=ۘ*Q0db Ȁ-04sL }o亾'=d97'. \7 Z=VYDzޗ=5tlF.D+;!ɜG MljNln +JDL:KaeK\,XPoJ+gZfI6irPHWg6D~qJCjjފ:zF]z]!T"2[$Y/ǜF&C dTxd&G0XŤLQt(:1t!uK ~Z)dc݊NؖBk⬯,5||x+qzA#[y A~oAUl}h/HlGk~#p*g`QJPO{Bt TOp Z+Z6ͦqLhH 1`GxgܔsT`뀀*t&VŐ!=kY*𸫡Sj(:¸7SAˊW髄ո}A8R}*@ J)c ׻@"+,v_U{N#*=3|F" ѲzR;2KvURr*W#џ/qDaC`[M(N9V, PnoiŵSL\O,RI&dAI JZ~xKu8@}K$*XVcf5y r ™*=y=P^9LE*Ijaj3/k} o9[v9XeȬIB`JExa3^ʤ"GVAFKv.ͶKUh)^_/QUX <9SSb=oxQ(eҽԕjL'bC禩oj[3kM0TOi`35qK>HvV֨p{3F͈],v;Z#~kthIjc8%voTM٭`w|B,ݶ2Xh$ۑs‚AhyfXBoѻ)Cyq#ȧ 㾇-bqJ7D=(9J є=M /[Bdk+; ?x-XzaQ5r^X»Hc Vk4Zn |:=U--ZnofBaW9H-2Uo &0%NoY5Z!hn<eT>;1ШQ >θEúb˜ibu$ 0k/TS'^$B(K9ӟuUB|:¥⒉OhaR\ `}Xюtb)RWæYjpi(K1c^ɠ5=J~m3oB P&fNdca!qs43hIaS3Y: q:-MK8߲?<TQWQPl/ԊrKǹ,OC08ч8滬`y|or;*May}Tshekl 6?->}`[TX{2{=Qxwk \w#Y@._xHN)ZT\gN׋,>`24FZ@ҝiZM|5jhf>Ux>y:Ӆ(Ck4? DylǞdߺxqAK&Q2%I_ h;菆w ۧ#ȶ-L6 6qlTkR6N^nUdiŠcROgo-SD o6 B2076 gcb1z 2060 9430 xXmo6_1 }XivnФk nr)++:f[4/RNyY!g晙\qq%+9[UE3]*!09Ȓ&X-( jKfL*29r-y(XHYf\9\EIU 8u!dbB??Lɍ^ 8+K_^1/4YH*qkJyVrG/|8@\4~l'9+vO@C_3iXew_v|>XB)< nNsGT2xW1Sߡmdf3y ajL9N7M6'Lw_yӠҔQ> US[=Aw+> K'dprV;]kϻdZSRaJoOqer}T{g. ~ Ev^c\h^aGDX&-*6I0E|m U&F=gg,&{8[DUp H*^чy&(NDӚ"0B&L r@TlZZ(#Ȓ 6<4FlϲBH>1lHTh(2U?^D6 g ,lMCo(B- kvRo@T~{$Xby0; q}v!&޽,/fD̸Gvc~P i#s28NPf֓uURZZYVI죫PsC9AWT=Ah&k8kDcg5ZN+tdpaF0[ۤtkCE5%0)> <݁ל=BgӞk00ΰpNAP6lBd=u^`ɥ+\RfNS`L9>*.SgwJ,͖1DVt'}u[KX-ٰI s"@l0Q۬A`."M1MYb5`8Ģޭ`%MOd\V۬eev'쀃f9EDk'cOSGֻH HhoˁG#Z4GyG1ڡgѭyTRzmo_,ޜ[p2¢W ΋dazytAfo t}]F]զ.Iq;E. tBvn Ol0;:BM쮵4mA++ ϐ͐izRz}oǡO|}>OGhmr%5UG\ZOUXVް̶y+&͓̪"Su兘$R[RoX~|}] KF;3;;2Ͽv2C7g֔1vš ]7cC ' YԁO^Ob#osyGmD1\>\hpamG 9z>xs|xiGOO/.ϞC-zyӱaEčqS 뗗/q䤠oώ72fO,̼`<[Zg\iFX7S5kawED6&F.kgcoȁn  |$Gܫ!Ǒ;Lb\Ik;A1aވ[]0Y<LJtܰK!n(Uﰰ8k8HŹyEanQ`cXbb (;.;H+ݥ3Ri n[Y=xO7`8,\GV8bv0Xk̮,Oi׍F /5fS,Tʹv*&`i:3Kğ ,Ɩ-WA8ۄϐr^/OO~ŀ9s`pO>1-ԏjDMTOIUtyYA*˔8T)oEO0F5VQJ]]H=(I "*)ďJZ΢`K4Eurd#vǒJ! \N8Ⴜ#:gvHI,ܼju\fn;3q[q5+ kP${M)R3JQQ7o$-&BUqHFG=-n{f#ٌ|[6ۘ6#7Hp'.a x1 'ApI)0 'a#o8/XLeUD\b_ڧ͘J1 "fa:>!=o &&sA!WZ,C?p%ŕ~u&n{5pNx.#E̛MDw(@t(TG^NX lvFbCPQq+.nSwÈ {EWO{BXGӨ@ &X CwAH<@=p`O̷f s.׽JN CMD MIEO,KmK + X] ^,,!~y ~ۇ -:|h>&|e sė',,3fL P4,ZcCx媕 6LΏ^wG4yP[C)&qouY0Ȏ -0C >-Z| "kM8&J{M]q{MlأHH_{䓬mҟ4|FL]Q:WD\V^)VÜ` <-S5 W }˷eg/.^?i#eviT냀)KP+"pW87 ]VxCh BK^;61s!d[u-hE G/( :"^O`SvZ^;cl[CVa# w[Y80Ae=1l"a,C(`Gkx((Cu2ߍ5rZd<-_l€.˪AYkn3f< *q+uG ]afE~нY!Lm8[ @KXa`E%ʎ46궓/Ol);3k%p"9d23 `d^B{G.ϗ=A-rkn.bhBމƱ/C=|ME%Nx)gZ&DXFmȢYsx.Jyȓ*-.+|*QJZVEEPaUU(vE}(xK,5go#UbN3֋IeEL-6Po uF,Uu)(ĚbiKjy޹P0ۺ-=J?J 6$ְvDl(ŕ̊fŴbT9CN8^EQT >gf8XIMXLVMWZyvbYT*ٷ8KSl#JZ1?Umg8mǷ[BׇP%T:4$`90CnA="ꕫw`xmpJ@K+%6$c3˩;nV3ss%~=!nM*\ley_Jz/_8; B&NbkYrC[^S+*uXYs+[cMjpFMmb{宫h^_2Hoyy2۵C5jTRQpȤxUX#Ju(Ք]JuKlL vn4zXR?˒{Ed%+^?7uUI+Q-\Q-Af_ w2 eAb-\rŪ~Bb+dKO`W-/uWʗx3Jĭg ,W鳀ۋ+j_EgsWQUTyb*⯢?Gq)Z$˽M=?=y[ d?Q_ʈuBuR|3Ɗ\dqmR_|\!>\ۡrZvB10476 gcb1z 10458 49150 x}ɒ#;eY/+<8ժY޽GOM7("E׵wnfF 'h) mMhS%DPE7 mm FɊE5i4k?&DH$P&c@/oQXjxɈ[:ّ3c7Nef^>T)34d6i)x4Q@#iC>Ӡ/!\HJzcyO_2[A,ii >bXi2@җ>t, .[ҡqT"= &7f!NFX"!AO'Ȣ@|(MyD@Z昴hcqԥ8VAը̋dqt, .ʧ RxF@hhm8fza4p1h0_cnW`&XNALvfl>8IKq"`_ _W݇__:Ρ/] ͼPDI8 :B`Ec5~h8] zҀ rDUǐ=I'QQ;z! |qL?Z 4vv[=4r:!n?}//1`Zz|ޞ a青2O$%/SLFNI"K C7]#iqSS9v9Uv`%ƺX\:bLi)J_/{U=FbJmvZNIsuAH pKnPॷhglH>TӺCZ2Íd k֜A0Ako?qHYA {sqO- T%pNxz8,m#:qzuzgqWt-K M%ƄFU(ZEh{¼Nt'J=sE|^L_zV4{h ^II8ɓZ(-9l1rŸ]sOEz+ʉfLhy {7[78r8Y>dz)Pp yH'޲Hn9˘r<'#'Ȫ,CO|E>Zp(98K H~["}li*j.(a #@($y2qg p e7ڒD/[[ڡ?[m6~c2nz DLE<,Fh4LLYSA 3%>t @H"`O0"-3, B}I te 9p-)%sV(>Ac8]uM]fgO^~t<#.{CpH1xP, ~#O1FkN$j'3'bBR%~5pzyÖ~UTzN=U~goW:^|EKw_xߪB˛E/zzGuV%6z].w_LBN!&R(pIƼV?0G]6'yזEe{ȞY/ٮ <\4D"*;8׆[f$9ȇᔨ|eez>!B3n) gGv?ބAuvoPݰdYR҅Kr4I169CZcNB61Ĉgٵ=и/$W$nRw1 e "w 1YiTY4F$ kכ۶"18ul6iڍJYwo/Fgo&ӑh<&|3W1etZ70rpۉd?(ft"Nx+YgEG9eLJSjP\ A"@~eUq:}sC%&sDʼns;@Ov7JV&D/s-+D'CĉaW^8ߘ1## &S$8F4s7_$s΀lq~HSF}tHlMQ,|r ja! 9wJ«{_AD5W)P!xm2Nk˖d.Ȣ?$=V]/':Q%*k'qT!g4|FP)- hs]n_. v fYnDZ㘀{Εڰx"ϱ:XVx-,pҦ\'Ȣ@V_ di]=.eraCOyD.#XÛVDZ`:yZf񗏯$k6J!qH+8?L$Ǒfhe]~uhEв=p־d9e'֢ғ`oZ]Bk⸖XK'8kQkIRZ8zktXO"֢yk'ta}!qdk:Ӫ{㫗Tefm|@#,,ɔ :)G142o>` yި߈=C!*cǘ-!& H!0_ȷkV;]oi*%)&c'F8Fr/)hZO; P4w3؍fwdDLs 2kY*->>*"$ZHsw}I8kDz}cm΃kjB$ACǑgإNL~Km)^/Rkwf 鉓h0qIr ɂp5p9is-bfӻZzIf;T0i{'7?EAW,K1Vg$bEN$ 6f\j jv|Z'v{әh$TZ/Rq9E$}:ok}\G!޿oD7Ya89{''ؼ=3*8")Xz1YFN> ) 2B[tM^Kh @r"vq}_D9͐+L>r%r칓fЮvovmoߍ@N5++9`c=1Uk@ioBSl >Gsq+5 (6#N|Gq'z_<ސWڳ\ۛ5Vb]Lh)W&a qCeݰPgSUroཙ/ uhhT%hH| 6,]QTz.|JR킒\mّO ֜`v4n[94%O013kP3r[`&3}%I;dtpx}Wj-lਫ冃b̟R@?gw} 0!ڑ^5|Z, 3K$)F7J&g|볼LW6h]xWhgVf#`-]hc :NMEy8 4HЦ7 S;{O._j)_ ~a.gOK&0`pp)24Z272O#//'ؓ^6T:n^>,~QLGW)*z@M9RG0 h5h{VCmy=0ʙaco5בֿLbD,01Q\B'w#Ljm|K;@M$|-F%{+߅,f{;S6 WKA\49'v$\.^7y' رt鏻l%) pmˣ3P8G diJRSNq dB6g_>w6 (-v|lf#BO֟W Jΰl*Wds:=ldQ_5Б|5b %)nzV!6.m?B(zb TNaϺUC!E ` Nh29ԥh4u//G.>1"/´6cK؈mB#0X0Q01EհOteTJgELaͩQީȃRi=*|!ǭP\y_什!Wfe>3?$NM1V1jZȗ)Y*TT@Y'Q$m\t$F/Y/_M|T^SV#%T:/ \<^ajUs4ˣp^Mt1[oSWuQ 7[쥇ħ-m-.⫔v\࿀)•0^KH?=G?wQ[.CA CS85^Gl4rGOދoۮt%O~Z>ݖ HŎʫaqsSBQ½ Jn'픢UDxXM#+>;떫ˆ[+4m5T 5Rx^aOrqxF|D$Rr0Ao\NvJ=WKnt1wHI.-XDB !Ge5=Z)DrOD$M7Ev8w6n(N~ihoU|7{FXYMcRjZ*#J\.T^4h13,j <@ AkyƂb.aG0l™6Fs> cpK ׄ1^& 圲k,sb *jU:0I:}2%igDFOc [FmF2j/|*Y:3Tu2Mg8ډQ%$Lo:v]?H8RmdȄƧd")RMM\"jsb9)l\(% %p1o^BJp~c21g*{uNyna@I#Xi14@ൢ=+hݞzþL[L|}rm-ώ6^_H^0UР.grj_{P~uy)|%[]nw_էf兾UYƘRl1>؅;}\'^(uMcb^fh"^R$d &x8:jrshtزD%+,ZjQ9$2Qz! Eɢ"]gYp-T?UAEеe̶OO`p5ouO?]$u5aWgkB,&lM ZYOjJ2}u|SugEVcӾ:[c;+#VYUڮ鼴׈-M͎ݗzykTĎk5y&ltM99rO8JED/kzkzDӳN<|&ovˇ+ia<:fn/`1 %]OoͷwwxQhZgT &0쇳*:W ZkҳF>sf>W/^s Awt21%t(3B8l}^RtYH($+tTkmtHnXR0\sE% F77\15xx~H|m(=W^Hbj WGB246 gcb1z 232 297 x%Kn0D,9\ UnbM[8@DsLW渞)_CSL]q1a`x59qxމI.8 \vi5vbg0WzYnݓ ^2Lp$[Bd@^Al2Ĵcu?}Zn")|B8PL}& [Tc 句@BumA(m`B307 gcb1z 293 408 xu=N0 :N)Ol!hpƬcG{p_覘q)/zA1-ṡu )6ln7/xOb 5kN+Lf6sxf̬:Ljُ|J ܀Br;rw*_WϔQPT`M'Kk},mlX| (P4 \ziZv=Ը#R5eI!aCG) \ 9>q zŞ'-+`>HM>"~ ,Epython-defaults-debian/.bzr/repository/packs/f4dd6a3a32eb7e9808d65eae414b4c7b.pack0000644000000000000000000020225012714077001024147 0ustar Bazaar pack format 1 (introduced in 0.18) B11584 gcb1z 11566 19437 xռGσZOQ{t^JC0& vLދzfq5c=s~{e#q=HR?E ǚ/k8@9?IoQC~: #$$#4AA؆w,U?22˨f$sC@)!4!@X׳5?MԖrYYwڍeGŒf:Lb2edXW?ALڶ2,W"U^E%T@MdDߎacD5ri3m@e'Ӕ6HިV(hT*M(K#4E5 hDAtcIM6`h!~; [=>Gc=7zd}Zn>C\ȰBS#IFѝ]!*x`}anJ{@OѐABjx ́DG1Tx'Wu]oU//XhDb N]küb1LT#nKq BUY$[hR3 DѦ owc'nԊ|$* J˻D{^kj#M whq>{M^ W켟,t2f学vxԷ$>68G*@oI[xHf8%iZǨF,*!9fFsyZ2@ma+! s '( H#.rxn8a)b<rApb2(&qOt2΅'YDu[1"v'9!"a,0eC*_$s4>!{P [eL[4br>#USYâh[^64bTMQdN^$;$*Ɇ)_c, r,,NZ.]F^95<*WG㛃- /X}@w7V~E9?P?0Wc72CS|V#N⑷£'4MݟΟ(02'w!=O99"z_= (u/WIƧ2OD0W7Lk⽯G]eE(e[~8bPm4V, (}r!5{ђgSjȑ۴X{ͭ~H ۖ2=콣kۘ.ZzyF|hnSg?^;@ezGךxxKݡX]NhNtfˠw Vש~1 >M2ڑc^^a7ȵS\,ˏ{ѠEBzV#x%&aZC皬czބIrHL_M4OG1jdf*FfF&I1I2Q0XX>*PHN=w>%ҍ"!4b~l4o1K擶γ,Qϓ<2>s]r}GirI^#H/nȽjD ~ $I}2}~O~ ZؽxltpڑU\^XtP:ۙjnS*ٸ9C]- \@!-sy zbԈpJk]n ߡ^KD;r3pFv%6 cڄ7)tA\JV- _EαuX2)HN;7֯Ҏ,;vA.5~s)`w;W,OmyQ~UF26t2qv?N5h8J:dHEl 6x,*1,)_%|T>64ړOΖyq{d.q//ғfTDμ|jΨ(ȍa62B:w_e- T >'B7" 2>fuc,uOk6?ǐEq:K4 "S2Q`߀iJbN_eF '^?/6цk)_Lzﮮ΅ǺJ'Kۉ(WtoK,= ^F,u^8h a |y?xYFåPTv-]Y 9ax6n\~̂+^%̨ A] ~OVks`Uf] `B`WȘЪ]zOzn\?|MMڷp$lkrCSӁr'C1&WCۡ 1!S*NmҖ!(e5cP/͑LKEe YKrd}/-1C t7y6-|=ǥjdoxgSd4Na4$R(Fydt*[A#'͵߽yM8* K"{* Oͪ<fe+A(4X.̯py`ӛ;0o*#uc7}B=Gf=?HTq}9#_U٤Ϋo#l}|9_d!(DJ*P}2[vA.9xOGIPe}3vŶ/[P)a41s5115q:ّiW7=#jؒjOZD 0k~VJm( +]6 >½ 6\#XD,sVv x?܈)6Z!'mc?-vǰ{^p|^nbo"D 8s@čH^3r(lm&~]'_%+ iym4DG'rOqZC'ߒ0S #DAY&82 1L HUyNxVnZ(9 T%d&q0c#|e#Ծ5 ]$p^a$C.@؉՗iFyh]7U*m,wEr75 0B:2g2RM3[n}/%S_dDs*3XmJ T=O&][ zw)=[^ѤcJ8sQl4\Gj @'G ia>%*+Ǐo?^ɠc>wANѧ~uP}E)ZG_(gPjj:3^1KU6+ jWP mäȾ9Zl'̀d'4,A/6 _B+RҜ gLDR~LnM[G֊G+>] Mݯ?N\eU4ȏ =t<"K9*|,Wz2(d5L?Eq-Lkmec&fMa <N0oyul˼Οw|p]nU2{k\e |T }E:ogB}ә n9k/X,QFcW>L,<&5~}QLxU+ \-0]ۿוֹN, CzhlA sl9 ~z'HX'el9Do,8\8x@@?TKejJD>e}i&"Yi נKc*0gnVP wAn%(N_bl֝P&,H9ڑWb#P`&̘1k3&;#f>.̼HWRf#1 ジ_fj;`tA98Řϟ!8Ccڹ!msghEK!YZY ˛OvP#gJ]+`m׀lάb\ O#[^8"$6(R`/)Z_{FZ \ii~SXYܦ M_8b`?6.K! P;B|[nm>+LoG4-yIJ8ve|Eja;-upNٚ%fna`d73܋3 d6muBf_U y1tJ/~g  I tQҰ'T!qaeVyФL:#/G%"w#MwC:wU,K(9o981g=z&P<߱QE2Oc:x b׻rTmu=4< *w^Jnioߏ%s}h3<;@Ni}%OxIEiNҍyG&_S$ 3=.09EE?e r0c;N vL4Nm5􆻏$۠>i*:zsZ*fDu^I!),/fKzeyУEFZ^ؒy!GfEk՞K6*v H>K)2 f?*wv:+2LYʵn&f#{CpTm B*Nw+X]pqS$zMRGwV`LoѿLodrck2&!tԛ*OEgdPCFʀíQ+'G%toTSe<̂XTDi/}壆 ͇=Ѳrz\>WQݣ6*3 e{RM2-.Z$ [Wo'=ShoɥɣDa5[ 1m 9T*iDpC /䃿y `PX9 5w屒>ʬ'\2݋}Χ Kk *~>w_dZd8OOHa"$eR*#rIєLF&E׹x ߁eӢULVFR%Qs 2K)F~r-%!\ݝW[WBIEBc }oXVq{ЙrR X-ʜ;J֊?z'\4e N oIj7a~uaH8*dA.Ɯk5>cDzֻ& ]dqF![^\L3o_4ɠ$E8oTZmlb\[L12HbZ kkmD3Ceee3W96TԻ2:c쬂<h2B*xiqM!8CF ?&:W2RRU p Mșxfl}ui[N iUP* ~VݲWDnO^q^“oiIy`ĵ{uP$Uo] jY1c|~'a1,߶>&Q:ahJa0 AEhLidY\ xGՉ}E#wh" M(Ps||OM-pO$)iտ+Lny*:0mi}a@+:;D{R۳CC!R5l Uŝ}E I+w:Dorcjy`cB` wP.w/q@%ߚjp!U<ʹ\l(Y;*Tߖ4B3dM$B~# qm3uF\7!S)yjN}Bol'4}խ 2usɮуOzǏ<%O6sa+U%)xOHB^v0 #(A^>+lU-8x5\MwcUrt՛(Q˓E c\5WĂŦl]U)L-Znȧ+Ei!0)by^ҙe [Ik fE+{tXM50(P.MUlLuGa9N̵bݬ0SC77^ 'd/x "y*KN0xU0` ILJ=;⏱*[]B|JjeVy T -SttU]l x}7hH[v6b'P3E ^/@4"M]/m9>Jn#&x_[7OxK"M;G+O~0?\{W\A/ ^ !H?/T?x?e(na@F >s1$r`$[ /$XB4k5{b\E㍐}0t ˳[yDBCLھfq)xگU*QI<shd'WHF@:ޛW*s $@:] >VPpx 0/ ",u,o94㯄U6W.i!ltR09 .jMԒ{3iJE M+=@hNo5Y#swvWxfx$|>)(r E\ T%~䤚??,r=??48py7uO<XS(  Pq,Y+'5!`^Ya)j~ lWl$l3CX֐lKMɔwc Wu2V"/wmLdDDuϳqYջt۸NMfywzt!K)jx""~%8^]׍̮XQL(3?07k#.H|9Y@iDٻ.-"Z5 Vɚi3d)2:$}U&OX=Zx)[+F׊i~K ױblk_(P&TY"ʅ[zE,X eʧ@^:[b׾imFlw PUc%,Ƃ˻}K7RĖޱc1 ʌ;8xWN z q9NtCP~-A!#wGsA'YgqXmвMj1,^s9CWأK/u \BRp/:;kt,t !~)*-QTǧ5E{_I\ ! U B>%\ clX +n+)?|XOQ)(è< (7_obUeKFJ |v7\6ph`HTLϺzgxMtuz5=_`i*lbX /LL) Afin~R"NtV[ TBy>^A=^&Owk\w}z߼dEԼbWy_CSc7|PV ;Gdg K@l'?ᐩ1Y| ٻ>Aq@"%*y#wM !Ѣq7! _ZB;݉C7Fj{HgVWY@猪' <5{.b+ru0Zcs2tES g{'#[ l9 Eň^z|Sp-Lf1~N∱s-7w5$CsgA Cz~-!טO\Γ~i_MoRI΁EdYqDHgʍo^1T^yGL˹L~xÑ. a cȆࢬ(BsϋBLi,w1Ro5=W*pnЋ7i°@0BHW L}`'`W8/?ݼI ^u_"L;)/*Kę}>D]u ㏂$k)~GpmݦfOiKxYxհ]f;WnJÈF_=D5Jj4>ޜ2Pfn I?B"Y7PM*jy)jo\Wu=ZjK͋wQ5!0Q0AmlnTT d!ygzo*֮ .H%h$Bp1ϓp'0/w.-fN%'19LuOI{şQS:JDLj%GKr/ Ff}CgE4yx/مgs'  倿' )yϖ6!P}A2hfA8ES7)<?_bBJYzZЌ{=v6nl(hh&E Nq0A]u@7s<B{ƅ$yJUmM zNQAJJj*KN/" E_%x]Ҏ&k m֞ ?M\ۄ>\Ԝ7ߑz Rtd̎LE:Y`笤*}y߫03m̞w_(:]=,~5%eRCY[g(+@W9ҾpS@(&E6sm—A2oת3و>ĔGqrN?2'ٯ .Pqpd %~ ky@nYAwM޴76l5~ ܧ >Uo sJu]bãτgn?Es w 6Цں!A,)wK##yE=Q/?,,&le¥20~g ?AiN&K|0 }տS $F *O1 %F4y$CQ8ƠdX7OI_z4]vBy%/`6n5uTu&˘gU!hfoHy/yz+7=!3"^}=il&zP@WY}xa䕄%3Rc8lQ*ކ^-R%f͹%x93itd=i ǁA`VV"5K(>'7b=Lap:ݲJ2lEgÃF;6GXpڕ8dɛP_~c>)2}oKeUޓ}pSvkǦhטkV>2pIgȵwp(ӣ &-8FwYc[K(1,OVa=eC>̟tX,y((hQWPEh<#[Mȇe( 0T*)paY4E5 |9AX LbXqK>=v*׳- Sy G5xa|5:q}xlT̗pZUfb0C#9GL)c)%&p=ׂ9ePݘqtb[lfiȠɠ ڬ,v g6)"g~._!|m]ǍnC+dtaȌ'KcH p!\E\e'fs_d,ehVW6̲i'MBH9rυL#'M;ѝg.Q Yę\h!+0zNy?\_Ua_"6/H #ί;jiy3;{0[%QW\r'LF/-i2{盬2ndSg]߿sEp4j^7/\W,XT >J*#ciBADPRиj@q+7[~wuaW_>[9x["& a\A ؗO*k=Ak\ X å 1'i@(F<Jѳ˪ TW^>O›; ?3715F3u$7 ,)k (GU3jF(Flה"UD #DY3B ~=i/h&)ŷVOxޜY5Ž'ě"]$JK4亏"aMZϔ\OgdCQjSKgf&15DOvWPCFD_ ai\[djYeyTjMԌjFeAgKւ}Nq24!A`ԧ׷piWe+O`>'#pniqU>3 !) _.5S;?^ ɬ^~9*G9̋` Rm:T]S+&E P!(dA+W |fO>}QLʳգ\Quctيhy8{[S¡WVĕIT+?{zTpbU x-\ȑCLkKDs]BZBAOG7{O9&%pGi\Ā8Z1gDl]I"ad۩˝=O+?rVrʶɷ }F"=%&Ne3w';]+|NODD1rk,&* 6@5s884`XW@N#&[l+:8#zawD͟]yHUKƯrS$jWlۯa4I؇:EE bISW 614.NuM FaQoYNˑĐt94-3n6zQd3R)t1"؜UoUx"k?X@0IO]8tIԱ+ 7_8eJS׫g7Vn;`M$"9:!ⴍccC EU!:hHi~JUE`ƸC3! Iu}zmyڂGIe/1'0*߁=n c ØH%ӳu |ܺ9br)x^S6u%o^yd,U S"LkJOVqLn,$Tۘ4-/ϠҊKXΡ[$ `qoakH'7S+̔%M7 y`pj o2Ts[J2zyҰ+W{$ƦS3;ꚶMEA1 8>"Dp+h.ٝj&nz>Ip!0%$ũ;HX5[]4IR/?y>wi=V !81G~h8)=o aZ fŊB1480 gcb1z 1464 2722 xmVˮ#I lfŪ%6#jE>"W# >шfdfDuˮ\~_ٱ7`CFsKruNF9'~캶pf4s>.MF#6tߌp~nyd~~j4(T^tܨ1.=4<'_ӟ>|͛_} ".erHe⵪k4z܊8-5?&&<iy_m>"guVɺh G-Q@~PFAm¾'[v~Za&<$+Ș(\h Hq56U@{ }Y my \}qio_q-,$ %iSm Z4 鋊2橜hWRks^z0JJxG(wA()źZL'K$̽1K;p9*{EM|O|3x qv.;Kb$“ș>l"Xr4Dې׽ǀsc`v*cV1uz/ɌF3fhdo1кnu1C@Fu`Y9A2.'h%`w hJ9ak̸U؍N˹notUٰ}hYbfbf|Kl;8U6s:G #YkBb9hlQK-Ӕd:t4zpp7e]k&#1YKI8n}a523췦v3_hYߝG~K٬Rn5oޟ%pĜf\N m":"ֿ"ަYWU|Exn)}&FIIV0מÔaHJ`a%R0.'EH0]P䫤lVuO7kf&; RŌƝɉ淗 1a1´fO\<:Ȫ@Qw|O&<B'l%!(2e 2o-9ryd]UAHrl;Irӗ>W.uQZSz7EDsǽJܳLk| t]A2Q(wƏCard`xQ1hP5l#,%:[Yր֓z?sLMR qVހ"RGlPVN2r2k i\!fwUʃ. 'B}J`i,48"({ ;CA\\}(W]eJiV8dd!d.x=%gߦ㗆!K޴Q.)C?_P2&;~\EAFxa=AP8NvKN!9 vrF%NgOIõyFp5/vAD-rDZRlbx!FF+48tupĺ1Ysϵ39QXhDQy뤂[%EDLPLD+HAgk0=3Ib0[## ؜WF:(DB5v6ڛ"\3˕Ø4GW;?]59Ly( B1FJ-"4%[# σ[=v!WE8p:އ\Nql\\b89J\Yk`+ -O2ḰY6!Rc=7= Gc{GMYpKD\r2!5H<%OX# u5>^ Xk*;i'  %׍تߤWE ܚ1!LƈbThn*;"}mU Vk#)A*I3a@btFp'ގp9B@-6b.L{ω:T'=kKdGȓ]-ɭ җ\GԈ4W( Dg,pVWz1xpOnoWH~&hq=s=|B=ikng_w2BxXƊF^ Rc;*0="2,\&x`QY>w;vvՕ(`= s$K+CۤtB"r\ 8UXQ8d)%es@4Lk'y]z/v^_g)kw 6f|23,\qN&9qbLc4\HlYXbسosyvs~hs=vyTzPRZpi(!IEWƟ2HI 40tfo]67z5->>vmkpOFI3)$|]Bܥ|vNQb ?\k:yw"vlU58vb >}?"| 0PePjPmX QU~^2n3s;&sgCr;@tf5ZFD."U*#R/AqO$N\Jzn}E&LA\DbG,uY;%xgl'26"fg"dVzz,5! àfIdNt]}^yeUc%*"pDcV~. ,Cr9Xhz]6un,x\`,Km@Ns&ɥ*=_smK*Ȫ@Fߣ ;x@ V@֯[C&>D򠤎p 509oE9B vhֈB$yE_i47NIǡ\W,q?a\4`?˷nW͡.q x>f9UUXkO:֊}k2^;XOVǵnvZ;WV%>`=IX+Cc:ks%ꓲiZ װޑZpzaYZI}㫗T͞ 嶁V (s\$"Dr.=eبMs_E7bϘM,;:.! f+%"ĬJrUcfMznn2>ixk7iR͞vucGa#=V:k܋$*0Z3ϙ,GjN/~ N=oDיpn/zTDǜFCD)fFHrQԔ%H/LwVDG#ÊEFhD<d4۠k]ZF1]CHު:y2vy琢HŨ(ŕ#$LɬIdQDk#s!2XFW\ARQ ]$z"]\NzF/fdW -i|\xpv{4[o,{sH6G&[UaX"^UQ c,4<]{:ڪH:ZnKb # r8yeƐT $[G_C[&-q$fjɔ JJRMS#8HJ>A*ںH*ZI`E'e"n_`) n= Hz>m@gJGiU1e"1"f)7.}Y]:RV{IbKGUVK<&0)my,k- x)""8(7;x2u'KqpM(<\4 ࠄb۴:~{_f}+>r]+sk[>{~hcwXOL>~)o߄.fnosZˍ=:K-:s&8Lom82bsw!ӹބ a-$ay \.R%alM73mCvoMdAfRxGff%]cA pE$$`L>(J)-;[!UJLkKvԮttM +H.BZ,hDN,̍+t˴yQ&Q8JuN ͑skZF;sͲ"ܹ57tZ0+e3Ro()TDzikY_[u d&Bh+arb mrs[Xk"9qZPev/Na \Zp9+}~PV+&!0A}>%iZ/\H)pE9,?NVlpzLlvj) Lz0RJk،NEw'p4Y' >cm$hJLɒ/X2*-c~lO}{ōS4E5L|3=5*K*1g͕GXmK4 7WUzfIr/[+m kt\$_-˻`Kڷ57{Xv1xS(Sϊ\QLQ%08uvkxjݟR)}kc5m_9=D >=J,N{:]R3i2\$KM2)F*JIV*Ak p|ri+@]hdc=7's,WLrIR%FR)| i.i  :"Ek *l)/84>(8#tr9>bMƔK0e2R8>Ľ/]}ln0]ꭚdL3!P UHZXf\o8-wKwYֲJ/uBl{@-/3."?] b5w B^2~6=t',J1` aCMoFюxn_I!y-rilŁ!ڱqð ManjRiyv{GB.w鋻\P3dxQvF9'x 3aJϳ]m:MS&4~RapK'FH ɘJdR9aCθ%e2ҮHN t}Uc3ίƔm0|Q(ŗ _¿3?긩zy .|NxvNI^,&過Nud`4mcYW ne_a(it\ Y>3aF.ZfYQ:炃ϯ{K{ 8tUrpoӐ/ !٣NxdLvdVveӐ狆'fs:(Ov02Պ6%/Ve^?oJv?Z3~tk~=O6؋a$ :12d-VY;4lߖ e EE =+c7|fy@L6$%BKJXCDyXykl 92lMJpmڸe|6>[a쭍j2b*JRbc\mWL  Ap9PDn "wb~Tžy}UCOg\%bT.Lf/|=aWR셢Z`nj Q0k^a;t3 ͷ_5]2^15ʻ@jڋtg Hˍ0,{lIqĄ1^; ZX>/t0pT&uOjp}Wѡ30 ]ep70IӜ4%"Q- PQJS s˫^7i?}@ ӊ!x:{ǯ{ E뷋RhwŐ&d5 SV0QUA Rљ,FV.i,pFuO鼸R=M9ֱKB{ ,k^4[=t)C/4UG.=1exѸA$'`U`pLPQ73Pmpet|Dϊ2 ̩cJ Wzt xCLouzEɾzh_۾yP.s}Qju怘h\Y!Y)!sv"iV8  dbSWÞHb}+c[H:rIkGPBA!G3$ cox."3ng0ˣxZNt>]'_SWuVƇܺӃ7њTO1sM[%5.Ux/|ts0I#;w!}6you]r#8g )GK(Nm02ft\Sblgmt.Okq2H,:|qT bVIKgzN)",~9I/l_,Wa\[R#jۅ\'܉ч}9O(Zi} {uN myPrU1tMGf{ Cʾ֞ҏ_-$g=7J(ɓshr,眍VG`Ad IP%}L1 '[7>ɳkfmU)GbZ-Ho Or<{eIFflQ0Q.֣CR 3fM/ds)O,VK/ oPvq?uVgo!)#|D3p7@EETi?|@Zį t/ rh,5+傕vQROeDSDnk@kTG>j vk:%MM*U?@h(ˑD{%P+M\2%ci Е!#нmڒ8Ld W^ZӐ`s,誶V\Y5Q>3Mfc)u R(^b0i揸.нI(}y$/ĸ#/9 K5c7Kk?W^~qnG2V RC#"z%o``avN}MꓽۇZۓ_1Ћ.w{pxJfCy=qngaA,͈AFVCd)`o96;VE]ŭc~qxB$sHF2 ,מ4 5nq }9Jx"5㼇2rp^Ximxգ]պH{Um>:U[iU:Қyi_GZv-^H!ݫwR^"`H4%n,@$r?Zs l]#Zj,I z)#%ŒSZE*κDGWYPpv _pkQKL.o^vu K:%Yޟu+:%Yџu).Ŝ:wVi]l[gؿΝUMd.Fsgu;ױvJs}|>YwٱQ^7>_ۭU1#Ai+2> PSR _\w9J,Rj(=Wַ1M{x;7F.>\Xp3Ftw|{~YFu&`A\J+Y!a'dduc\zsGS,ӫ̴C2wSםJs^R꼷ٳ7Iz4 L1w,MMa;T2W@wBBT.'#Ҽ|"P^8 M:Hrʍ(<_ O|65xA֤1rW1;^ȳGϙ%qoY%S_ ɇtjIuíj[ *K*N*hMZR~[=,i3YXߥb$y|%)5fI݂ l2O5o\.p(? A|pH'}nߜ Lm<8zJS_J0+ QR\I)(WzJVbMsV㥚/^{S2[dFDT:7c,}@HK&;7cw6MY"F+I)p5gaX=k͞ʮ*tiji<]H˲J/;%ո2a%YD}*(ԕV8'O܊DNr7idpGyv`0U=Ix|t h_[wSiiynysfa(l*xZOBP8%a gbry'ɖTe,X;ɫwŒcd0-E` 2gi_RTnGxM QC-=)WUt,Xєi:C(?{/W+aٔ L#hnF[9K[BE$(Mh!\n4"^ʟoTnB(ށN'}(ߝ6̤ U3+0"^^.|'FnbOd8},NY1DQQn.c?_vJxv@&ab^7o$V#jK۝:,R4!IZ_oxZ.w$C`a Gcrp k]2YY:\iW+7fӄGF " Dvn("l#LqebB l `o46p4D 4%Y&PZ.@oo0_q^RѦq^읟NۣFYr tgh`sԤpذ\֟$OB38697 gcb1z 38678 178749 x $yV"q|J_6o'ptУ=3͛v)URmEcRN$űRBN\JV$%H۲Q$ȊXEEu@[*%3?~ޯ}׽Yz+`ϟhTz|g/~£4c`NGNy#UzԛDð?󦓁4qϼN4ޓxgp_0ߤ?*~O/{ip'xMյ`[`}x t,Ƒ7` xiG$ yAX&DfM$4Q Hp'r&hxIOa|]/Hi76R4 #MOVT]^}~Ҩ;^ޭպWkSe}ӛ || 4*}w=&^rN&g(Op$/F7 i;1] aAt; OQz>ڮw!^٭mwmUݢvO<l6e?i5f[k-N|Z={ޏM0H Џ=B4dF{A0xs5^oQ/ix#Tע;ڊZlEmݥtSiڊ!L0zO^ہ(#X7&L!6xIvg^l zN6wVru.}e8B^4 JaEq͖ pNJ2h-Ԩy87!,9cd!4oa0zk[ð7oK8 V&~kqdž~n,٬d)`lgjו|RWicˑ,+ jbU8yACbW`< ӖWu;VȴLWB~L=M"qS%tx^pLhCy灌F$ܜ #`8qR]F' x3h&,َBTRDDäW~B]C r|4BY񕍣 ~YW=ܮo*=I  . 38@  +yI'D~ X RBoSOjnltlY$}rmpAY L3v^mlZܡ[6NHb ZdfFx7Έˁsd' < 8.t<-͆\AIC::^p>B4}ZwWȤ" > oj0;q?>տ{/5ʴJ;ֺ6׽ONy|K9Og,.;՜P5vZ*IRҮ Lv|&p)E< D @7oD;^—[!W~ ;M0Oyl,e@bIvmZTnBlhlז H+9@OY"쑒hR,2S[ $Cu|H$8fsPvcZ1֠]`.[fcJCvYP*G֑x甮|r &1L(˩HPFQYǃ}r- ?1ְnKV?D+d:l(O];jF~ R{ oSA -n.ZuU_.\<4hÀɝ_:f=d$&0z3v^d:aO}@MWlcs cuox `nQ,7;lJ0MRѯѨRe/23>Nm{iQ %@Pɿukh\ЧP=H[?}BU*zAx Eʼi?EE.N?e#)Q쟓 0zgPXmY-ubFG9_5WډY5zjUpD:,)Lf¯j{R+Itcx^oɢ 8E\ws"SeyYpMJ>lX#׾{dž>Y譲OV(VEAd r[텱,5HvUr2rDE hJ`XG\]N 27zOX,;,ᐑ"JPQ%2)|&nc} ݆[ū͝7mvnʄ.:ύa Fnax E+AM,[oC$S$ҕKf REτ.Jpܪɦ2]y]6!5gqqqʦS@avU\!tJkl:J1- X44#k^NYS ]΃BoKHtd;muK"Ξ.35k:|V 8ۄXpAޙ父p:~Oc㖸3ł4efp^3~ ׄz49h=49NhI,4FDDY;C= s"zz9Q :R{io2MѻE>tۑq:Aܦxij(?ϼӨ%x/)+N֦P# U\?+@֣/،2b ǘY)0zJ-@QymG$ϣic,gGDMoo:4KPHg#ۑA'f 3OL~sc*EY , %ppeKtɀ3*Lx{a`lVT0ʢ];F.aIEחE[7`6Obqv((']8<_Ŧ֎*jvZenU.UE6!]"anG[5lP\8|lh'ɚWw[tFew}9p]DrE'ZPPҟi͵,qj;S: jNJS\D s뱮\ڭy$8cFcg֨lW)Q'fmGW]ǼZb'mDXNQǤgY_2FF\?oO{;:ӃD'`m Q2#cNp;c9 MUaP:ce!foR(]' _@ _-QH'F1D{D$ GiG>v4wO{Jк|N$GG!Phd9NǸ(ڌ!N6 3 aΰ$z}thNng׊ȼ q8`|;oC;f̎p6x;p~pJ,z* ߤ |QhvY?|K'`b3wY VQCL`[`}Zk%sAի(@{cT>itA/lذwOpgxW)䶟8Gd^ds(&sAzbN(jT_(ҽEb m= Χ=1Mm8JdI1Nm @i&UXPX (;YpݠlCzd`0&M `zрvHf,gc S'1UYϯUSH|4F{,a(wS qx0̥T)C;cgRd6Ӓ’#`OI*y6 ݸbAT Δh=G5LJ?e7SYXYYbj0$ܯTh?8nm6K'Q.ZFnQZ72ߏ#ΉDo˘5 4}}U;;;[V~t&4 ":"\/8iB$d+1A ne7D%WiɦMDX5q2<(2I4;0.bOc 3T䠘.S^-?4WJ$CJU;MvM,7+X:x{A1zĊ ^} .Jco)u2+0Џ@YK`9J"Um~ wem$6@eeNPbcܫprjL+yU܅צM*U.b$kZ :5YBUK Q\MyjZov"'][n./KX]뀺DB(Fr\'T~H8+ 8{,l BEGHO1zFP4%kᡝ- OK%b-ZWWu$v3t ͵ nY 9SdTcÉUfk(֖X]hHkDX13ɐYEXѺai#)a{2XS^wK1(ùRuhw[+tw~jҊ\6)nnSdCEk55ckh؋{adjŝ3FYŷUҶ-$Bj 4FK`kB Fp/ 0@īmU*+}rE 00M- Sq-e F*3,b=!@ ; OTY -ъZaVUjOYANe i*Qj9zz  v5ΦP"a؋}'߬mXTU`U [CF$*G8H6P:ѧ@h$1RxڔIR3*r&YKHFŷNwd ,F*/ Ά{}/Ib/P FN`H0K~(Sn&/ɪr*bHp e8IͤA@lN'/ _Q=&CgE$%5v{F"r`Ƹn]Lmo/C{*Q=h)0 +6!ఒ.N=B'j j}[P㲱,;dU"֟7\k?SN:4 OBwL=G) 0›lQJwwv!>][Jv 2gVyQW}u@\~M3\"l2։Nz9ݾf6wiּC-ѶlVk;3v,a$K3/ϱ`qT|.ZC#Vjw._݌˕ R|fst.gP8 KJ]nfٗL6A4veX[Ja%ianb ?ew𪟑EųlYo't'TǞܝ?z*l&Ȫw|E8_b؅X }X(Ŷ +Hj:uD&FTzJ*!?uv۔쩄i]v$p͓Xq[#mEDGk˳ڔ\5 X "9mnU];9[`(FV uO@ 7R4O*dz(^ҭk^. 0<8T)άH7 1=7_K|ҀHvN˨G? A(6yI7WVyE &gc)w?S$qz,ͬ)6'~$q-;eːL=80gx64 |*oG~G:R%Ůxֻzg?u! 4$LcqEvAG̷l1'"X86Aa2rU:T8w+,-Ҏ\yvϤEvZuw)^bhZX;$Fxr]Jj8fH&W=7&WJ?mjM+`R(&An$S'T8`(FpFd2 GU)[|4o$QsކXe$g²&R<wDBwvPI  \Kkx-td!F]۱KH8]Q9cqHI!Gjy&F4Ϝ2W;=x+?N8IzAswd2gJR+8+AnO7 Lu%GЉ6 7CS)5E Kl*Q qvYix9:A&.3/Q#PtN4n R>cqͧ:X\ײÅ DF,NgCY Л'YU[v[o)vݚx%S)OGuӲYϦgvbT;e׺^łdiGEb ̘eRs2kw[ KO\|E0*\tٮoSᡆȚFsh\r  [{ ڔ0T-Qm0o#rV yXY«Vn* ,^1 +DZ%Ɂc V@w[ilS?֧}/0|Fs&ևԧP5Q$Fi6qI;þCN% #,v`p84lV6[q^qb;hnK.:jm*:E$rpCcPhp`Ț(rIT *K0@2-vGV^\NNzr,t[ -WmW[+PM2/ʟSc\;'&::jXO)2pXn򉚇4qnr{Er R$.XΊwqee{08†WJB;DXXгnj'gL*]H4XE#˳ iٵܨveG&UL`"iİ0?VJ̵\Hz|jLIu] [NmAn*YC^KH(~PDU GQNP-7Xgܩ)MIR(ȗ#,w ,[~Hz\fe\?Jj&K?`8JV0 Сj+vC衢n9&Vў=v͠ᅑ[aЈ}#=<@Kr9.zJe6^ĥ*]V RxfZŌb4>LrջQp0-b>j & jX=cmNiRlmSVuƈ *)ɩX$v3'K  x)4mڅC:Ka0I!rt–º~2LVkV#?&?6L £O4j]%;mwSeVW杚@hxY0 qL"_I^ar\IE!T+Fu@e0b ֊qGȮVHW+Rp:G,me@1@;-̧ ٮУ͢<.+wjՔ~rP%3c? b?W%_]RK"͙ͅ@ƹsRHG܆K-k4h#5G+j]4JDT'0cԅZ]jVzq`~Y6c? jVnXh^y\*F§z.SxO r^F͍[{@H "kb:|*@&#W(PIrRڙ R9:hUG~8 H4ŧuucb)K+G̡P-<y{`@S*Xg>u+ ZU]('4P1ץSI>wfyw~ Ԋ݌ 5GjYNmq5 Zu9sDC%mNs n3'Wj/Hv3򮇣z8HQ&TDMzpk#C L N'D]{ڮ5gڶjl׵b t0n<DeBbc۾͜ eGˁwq YPic\]|=Yem},<>r( k3-?/%`v6;7Ǝ'w2B`9_npq?{[?߈iy~#g͸]b$}~gp߰m-Ҩ6&#:QىrCHv $ΫN)c8 |(^d$5#X:m?Ҫj P)'P@6)oW=^$Uٻ8WwKw)']#*)>!ݳ IfßLL7IWQvD)pSQupF0* G-bAp@;ƧZfZsYA UҤPtk]81Q`p6Mxb"vybc{xȸ@п>3ފg.:zF0u *-oJI87jsAU}!iqT.ְhr A):T@S"!mQ4[ۭ4;vY)TiEc/G'fZ8E=Rz{p7mo>.]P/4{drmPo 0(K1VC"R|yG5?<ǟfX%~ԳzyU~Z(X+׶mb"H 1`GTxgܔG UMDŐCֶ\(uENVQ$uqDرm,j5Wj>' w&ɬ(wxW5rp2 wPS>rd˜4?$sFe9xL#UHZ֛DfSU%bO^t; P( z,{+em:j:vXy:)C:M UO˽0hʴX]7D[(9J @9|Ogk5;F}wӸVwhdU!c- ^(bwi?;F .<ڋV؋M,jlȇlo3{*qTV+֊ƨZdnӭז,NPh[J dʑډQ >bɾb˜ibٌIP`ځ`'ؠ ςD2 qRK+8Y2%o.*QP;d򶪠LJїeHG."6M7vq1婏\l,ϳ6'nzuC$PP_L`W166^:5f*}c^o8*JQ Q.-n Z鶲ۍNgMi4p{M.Y=9Ge69ZYLIkE%è醔/^IX\:z9윋};z.]Vsy<. KT(2z&Bv-a{\;DRiS-f)PoXruM7UMuI?]e}ٮշijۘ:Z k&`dj] L:vv3ᬇch㽶[FT)b=huڋEU>ߩ_S2>w꾳mvr`PIA|v>l%{n'~O`[j5~*aAf🌒${?߿8Hp?;lݏlp:>Ay3E J |2ϼ8񏲣𻻟G `8s~S Uq㳪Sz6$7x- `TU&g*jЉΉ˧Ks7 ;.4  (>aGkG^R`.fz#􀻧H31Gx'6j_#q-)Ql/aT w`N: H)&'2,R*~3Lqq[zOegɭeXu>l)C5g~0ti*I^ԓ-#` ~3Ik 2Ґ^l?&SRU#M _7Ͻ=ڵxQO=(N9 Q-=BqJמx9g/xW]~{5wk՛׮^~ N@|lD>S]yIcYiO4 (gQy:gyNT!> FSW4ncYM(1 yP|u4$ݭxLlk3N0N?~Z"8rN/^q,춽(:AG="F01{scղ׮Om2Խ{J\}WkJYϫY)b5:ĄiOo>c<=f>N1P[gK5HOzT>)`I\ Foi@ `ΌfBBAϣRtW]2UOX _bM 2NaL INkHupkL/D1omYTvU>:}-H0Ƃ]Y>z:RDD )f2A~s$U? $Iw88HPXE&q[NnN\U&Qib6-ϵ]ܐ>qન2%S G'vkMOgfd;Lig1&VMfP(f/$Fiy<= êg&NQ½$Ϭ Ue[r''EayCpg(3W?br2 Ծxu)fR (w^GvO݁x&{y4ޑɸL "BWݧRRw1^[4-PE2@H%2X"@~…Pw4\JI8Q[ss a?DXZ@u7PNײאn}uǗal1Z:;?ƨVדC`%IJ NG! L9;e՗,+ 8V'SC !Qq`'Uth A% +  CPFL?"6|PKzA0f <9"b?feM1E!i|K |Ǚ) J!rP(bAx *݌XEA *FH)Im~bfs>HBBM4E`0G0Jlk >>[Pr$n}8hɜ+2h;&_]g3miTplS3)SjᓛuD4OpEw˙dd`0#M̓J$~G!G֭#ʃ2c1#pb-Ppif(OdbcqȰ7qSm_-=%ihKVYa^ٖ<3OuO]|jhU&T` o!d5'xfc V}G C3#Fӄԇ>*HC?>-*"aذĪ-h9,hT;ՙ88$)7nGɺ&9ǟd#sV;WՓQ.e3[V~-dZ" Bdj%ggQ[|v >e4#@pކ8j <{I27jCUNҦhGi8셪MѺt&_9.Um5_iXN?ۣF[Ed9'_)Bqv( ;d68uo,Z]z,LFH:l "+Z.iz9E3,*C]:S551dm>J;ݥ >'d{jP nz;oo-!yWNa$.m?\(Nqٖ5=zCl% 5j sm Qs0/0P QqnZfK#!IcS t5xg<F3T0tΨH [ +՟s(Xj,oE<߉ިb6M6[(lQ[(CN< .OAujK: ݳ Q-f$ՎŌ- ظÊCV0'pr,\h.poeBb[15ha$@Ȯav *::!5BwzĪ,~ɬY)sqf#gsA I(j]{[;tB&q;CN0 + p+ {ff`IS3%"" T?x](hS~zU9_C3n:Ɗ3pX]ts=+9WjN]]Io ;ܾBo6vWr@h)|C=؄yNN0 A0Japʹ gCΖR<<;-<Ӭ߫Zx(Vڭ#/wyՁuZo`lYf-JYnzJ̺k}ߎT}9# NiAgعO#WeP//`lUx$(qJ'X3KAWNw6l㘠jWl 7Zaشw lĦڂaFv70a,#^>bYia"}hH@̰&m: (HJW:K_[V0R(N"{W=kƒ'_RdK*,q%]Rť9,Gzb-ĖA31pNj1yNϼ:zctUuҤ 0@N f&*a%!;V޷ұCL͓|6&L@Y8PWc;*|Q~=>SG].IH:t'Lt*\}WzEZiFGYwP%:CJshITQr@BM0+[S})hu{ƳFUCN{ebtى8S37tv>zF\-jhTvuc̨38%͜\FV8AVX\J.8aU3ʦ!7jko+|.J"[0&emW6(TgPV^ܦY0(>H$r]_.Rfx2QG^΢ _zS:\2,)}ˎF*0fA ˅.a: RH0u9V;?C;ƧMX 927M9'LqIk/68e JeMuF:\nDDa,K<Lz8 DŽ]Fh u;"`}A2&!617m[y+i -Lrzx ^ߐja%\Vs(d~´kRpNřRſQbɆ4 z$Pm5թ^v- hgfJFYH3*hHUsÜ"Qo'x u,XgWզY]\.ˉYC!E6Vb|E9(k&q4Md 6JCF~"¯&2FI<(37fRYo=g+zVhN`Q(&*[ G^.WKNP)z}Lk*A.I$Aݱw|#vQsk#܊ مęSvyKRl[6 .M 8*Ǿo P⥔OnRr>WXsK3--5Tg˟ӆRvKfu3"I NA/ƫMS1B ,QZC H͙0|Q1ۑY-e| o '8NMY}j#c(ÎaP3bJSyUwȚ ΁f8DMy*kmy #|gS9gW7ӂ|m\p29Ձ=9 tn. |'B.l.R6MT$IbyuG0eE ɫ%3' '[ oj*〞5y&BΑGF!Qi<`nD:~ 8D=dԌXt(mVS/TR!I#SRmb

    10E)ИQ>G].y*!;F|!ΈXqyC&Hii4{˕0Bc2T8NdF"9ғH`$gAJ~}iacl*=q'y̾P U69P>!d0tbI(Dv~V, ȁdG[OPUqw.M[[%zh?)V0}rg|dY:}(PMo4YZeG=옓jw8T 2SNfyp;l fbYx&|bª2p7hc[lsU $vT(&IЁ*2Pct]>Ǽ/.|a(?4{]тD`|5w/n(fx$ur6K*),6¨s4 TAjYؓNpRHQ hx\, ~ W&W3Wy(.)֯(d@>enA$6?a([YO6|͢j4Oosd1VfΛd< 樧Vy &"INBkSx)iJibnHЬdH)q!6"iZ *B@hO` eHū)ɜ o'/)k)X,Sc TʏQ9PT*|P:CBVYȞ7>D1chRn䏙'p3KAM}ũ.-S/l]c=X_AASw&W5i!Y-̔Hn:NoBe~)+ȍcn29e 6.d]ň~ٹ΋dEpI4VuƤUqddKLXuf]N0X AL{ LyjNȦ&qWk/z ߧY`%^s Fp45PajCM=iLTE gLZpS"< &(VJ'$i!.T'*&0d)\ "f#-S XҘZʌ-NȯRWYW~GnFY:FNdHlRG&5/ ]V`uu+d`^uiޅ zQLh%Dy÷h jrQ-2V;ew%VJ8rFEkFZ [DtW .w"JuZMW)6IWCRU e(,SME>Hs<:k b$1Y)'+@`PsL7op2S>dJޯ$ N=ŖβDE8\DuUX`ssejN}'U7.s%݂R,bA9nYlW]"OqbWOSڌ31pBj*G\9>|t(J('b1ap8񹩴'66i9 *:[cL=sPkwU G.[.+n"\+Ȣ3;kV`[]MӞȟSYz'\Y-|F+) &i4qT>lۦ9G@}TXM ЧpV_fOu5A YRg,06>uݬ^~*lwX Vk呓rV>sĤ2tۋxlyJ}goW ~;zjpÊT/^ brtT}m^۠Y{uvKB~"(FA` sLĪ"[ܠIV.V=+|(d"8Pb2k*"чJ\em=H駕V-_-=6p!ZPE*̦&gȠaQ~Y@J1\.K&4 3v;cwQMձM MΔmh\5ֺn,Usu.oobmG9;CLJ* Wc'D7!Z^)WK BL)2= %+d 'xFFgX60ES=1HV)Mz5H7YmFUӤB!0 uM-x3E K)P1 KO"cq*{U &T2HRfV[ESڇ&/՜Z8mNkk " W>fB'%#Jk0kf8TXMSr Rw%ΕK<ǝ3 a VbY|t6mpgsT^8O+kA,Iu3Fb湠8s* +L @#;k@7H:">Hm*s`P.(, Z7@,vKuTb{͢8UL078"W xsi88t w L@nᮎ/ˈxvMib$Kra;?.ˎL:y 7?z@eį֊m!/IHO:?jc8lEM񵗹oRo B~Z J̎FtDžQ $%-$wF?0Z-Z}"铙]."D`Xa hެ)W @mNԓ:uLaJfT ~Oe=䉕#{Pک)UfKEE6URyqJ<$> IK?0Mjrmv&UM%a ƈΐl]QUV 17dm8hli&IT3vI)UP`<)"RC f+#]4| ơ bW ,E-i`h  #g Ӫ`YM5c]64ȐsCpf$neX\Xgl3ibK39 ;Ϭ(%DptӖm1)oRUV%obUUȌP6T.x:ED5ICvr[38!йҁ3y[]] @ (<>Z(1k]!FLPv}Q@մ4 t,J DS«'W` thp3%w$0[6O2 &OMr\pd,UN>F6{G^KT/UNMLqs﯒M/뙨_goNV47YF`K%Ug zΈzQtܩRxR(kF&SA^e]/ O 3(*$"=8a q'ǃJ.c4>cz~;`sXKңǶ;^퟿Gyo=G~|CFHN?Sz7^{O~ xNaxC*_>fGpW4`?(ܳ>80RyAe'"aeŨF%.5B~.+go⛎_}&Gڗ?zS;ێZOB qY>~ԗ'#|?;NY n~&@E"(3 Iw￯`:Y$ڻJ;zkNPrSDY aǷ[m[A嘱+52o~[Knۥ=y& =|# z\_3sBHk!vw~W{_OU=rxX2}$Ug+|#Caߒa:_n8/ۿ|#+埸W8>_GpPvٝvY,:  j^K@~QT=T-ֿ͇[)ǁ?hrwrYd.GyCX0r29w 7'ϫOb'SqzU5ap"p'u=~M?/mwUA)0\a2GQg"|^@(=M[5zz2K7ܦ LuI/\,)n=k"{|+<4·?{?{?:>QzwiZĪi{_K}oJ|WTJJ[fs2/-=SjO-uJЛK]oa1ٜ_{o_}J4(}jwh}c=v K!@7ڋBb s\8>]{d4GKއ,HjI~):Oyn!f!6!݋ij1["6h;ka7{wͼ(BFT=]̀YB hCo z~lN!g˥ϫ/}o](}I4BYAU?^:}/\|tivۨ:gGM%l>^z %dP?Á7}RQ`+N|˥ wj@VS.}ӫ\߹]yXNk _~(?@(=Ɋ@8jCy&Z'qS5OEsZ-q&gkwvJRgQT(zqn}Qo)y_xӥfԘKp8;7gz,=ĦFG9ugJ}vPoxԞd̫gJ} ~yh?|-aK!Hz0a1}4~}c|{|vCky7m|u $>w){Kzl?/# ^u2~}%r</J_a_uп|7d\zMq6KE(ց,ꗿ-rJW^PR_KJRu^E|hfkOQTl,^>tjQb<߾S1U;0CWͿrk dƋk3 ={_TwׄLF̿e_)_)ddOߏ&3~V3럍ɻQ'7{_Cm7Cw݋~UpfC)J?55h?5;\W xw|9^cܫD~۠Wno}+(}MJ~p/sLNR~twGG 0xnnWKo<&.uBQـ4MٸD, F\" TQA8H!e6zNƧ| 3'+ƹNαr7(e#/9hli tvlt: B%"vD Ig,mԏ߸!x\Όbv{PPqex : SUwt ^uVխ:uη"`e8&i}r>:ۜޮ1gI%=~P:Q -EjvY7Suuqq:B9SryvW3tnl\6QH8t{$BgW ՜.DU %!C!9ލNr#'6-\IApI iB;mp)V~ׄDW*Ӏsi|NLB҅E22a`72kȄ=ӟHOdCE(Zg]٪@=F,@% 08YG{ DU2&bFVEJ~BC,(sOծ Pq O^##kZ]/[z6{W)GӤ4Z{;~5 IS L6O講F)d2s ƇMRbTHmeA'2~0^e*a4#P4#uٛߘ鉾 Da"= ӡ9托~smG3UtVz8nS c0@h(ԮbcL!10ZʎY7U,NUu*M:c!#7ʴ*?Hdv7cܦj[.JL12$1eY!ޡIMB9kO6+VHO1TsձjfZi2mC׏XN8(?)z7C9ekTjMWƻPՊq(1cjݽ抵Hc).FMũI>WUN-U0H0_ioUn_δŻAҪWgi!gjul\?[ڐ]mܹ{C5T+*(bm;<äGK95ϐ^>\py XAٍos8?κyΖֺFWm{~Yh;'IOlLFPtbw_?շFW]UBiڕC!wmDџIc[z\CP5no{03PP9(X#4hmi̹87h쌳I!lw2K3v DM\N,&Hh V[ ^[*]˹Dum_{x\4agm/ݼǪ -UWvg.v!O>Ƚdnj$}?ʪkYt{ݕy{o/g2 i2`G.RleIg~cV:!ҍ䄋i?-{(D+C\+I&NVV m [6 Jj[]%V)gwg!U0'&3$Tj0l/Z#[(Tr4i$ȑZ)`wT Lp@|iV?1ɀC69JN&yo rږyO \%;nI Y4 , 1cu`JFK);8z!WQ6t8O?/~ZwI){ r!.[$:٧hH%O'I4*,L-c>kjױj4'MwZe rEVWT^ķ> g,O Սj%dT9RG~dV hh9eZ>=>2EO$0v1&:a2$.p\W ݳ73Cت6lD+|l{+i' J"bu\} ֿn9(͈IRF3'`֓ Dvٞm6X FvPwH3[O4}RG5=Yv1E_{1,ZC>lͮ52Q R;]bP>b֙[җ Ѻ~}73b{ydpK}M[ʏJߡe TjkK![ AO*tQʥ_'o'K};V$(3rіVT1 ZrH7dXZi7)58pDATiw*j}d۾f 0 &?:7on]rpRby|2//P4CC" šB6\,6'ڜ]Ɍ^I@L: p .4HV"?؆t<mjlNXAMa©`ÿ}4AOP:{LX)K.Q++Akսt |3+JC00QAs$up ӁS)H~q#GB3IƩ#>{/>E? XbUKqVHN_[Z˚cgi +:bu p9\> bgB^ _^e=zۖLK&aW,d? "HwYȇ1nK-b)\6ն A;$){&@pZH-_ <ˤj] gH2! q Qz626#@Ndž!^ XV|Z,Rp?0Rwl[! `Tdy:-t/majpUO+?fN3eYG3\ KP .` in1b '*U/VpV0:8׼/AwĦ`yq1_`PJ0SfIe&6-mn}-+Ny!4*MQ8'#C$\'K8M(7C%Y3ChQ Ab'coo+n俚Q6( ? X+TlF؀TB{Q48߮k*'؉EuYAP8WHcA@Vg7khms\ZO묚]EA.\/ ?B%II}YFQ,0}.97LF$88-dS!Ù02J{D4[| fet'gmCta${xTD¨,a1 P'@0qk<Ki0![@dn2ۆk:Li+:4 `?\|$ Ʃ& Fgsp ^~OHdx=K>1r2Jۦ9M˛(pY//e[I S!?Zhs] 緐bg*#` ĜtD'8tȺ:RbSH kgc.DDilgjj1.Dmvhiec Z- {sp q$oDeɇ vlY}`1<'MN( /+VNp*+#ò22:l3} s;\FiE0*(O֍ 'r739Of#ʙQ_ o4.PǓZPP*e |ApiɰRH2۲~å0Pzh\)L+[wge@N@˳HA ,|@s )<6~ů&BQ323RpePPeEU$6UjrTkprȈΔt~%˩G:U_5XAh z3(CA)w!܌ɷJ@<2J~P㔸}"Ez!ZF|pwDFg{Uq)U0e[VM}ӡ2L.*럘>R.4&\4xc7 f@j1ߟI *oS_b۽/jA,۰mE>R?ŏ{B9i&%QNZE,]߱h:^?wldʭyWB|$@u%`J|<´hqi9Mo6g3f)h.qdΆ0p{͆S0.D"L㪡E$PfPxn`^5̑alC RTh-ȏ?X ](F?GN?@Re ;s\zQ$zl:.-EZ VSkurpq5͌RZ(Mp j3>ow9.YR^yڙ8c^! ]%k65!z@RvbC!^Q DO=d׬zo{Au{)]X{;Ę@W0$J`@?܁c!=PU5*eF1`0dllda9 vդȥ}v#]_]+%ᕖj&sgJw,+--UMU={t;H%o?km 3r.o,ְ@+)-ޓui卙 1v-aш@%@R|lTU/F`Ws_WyRس" @0Zā`۩ 7SGo Y(+ɋV6Y4~鍺 qeyR"0q}H=J\?N+# Z{p΋?t[' cJ{v9ԟfq_ vM Ft#\ɍL*rz8z)k^\54QpM-Pa/bs0yFӽѰTorҪ^: ErN-;;E&6t+)dhw;!-pfo`ʾPY^oi{IxR J=Ȩpn F~h#'ꘅ6SFۧ~|R8%Z_ G]_0$2u5 Ƃ͎I'e[~?`,슧~|+I2vUU`NA IkK<b_N?T78 .$s18ٛ"h%n#8g=_H ]PHS[.2zDl2Qd& 8e}ں3xzgND{5I~? gDx0k ryKs}Kf۾OI!nW4@((b1iȈRX7+EK+0(T)|͝<*++-{?ud74 )VG{VZ=N)&?C{!šϐQ-Q?=azd|:$5@FmB*5>C{qs}f97Ls=HB$/Rca&ڢߙUlbZ=߻tZ-z%4p3wd*R?hhk.#NZ}9moxr$'vcq BmrZ+Kw6Y,H;Ř'Om&` 8g &p Z$)T'.*DZhXkal6aS8,HdU)5 )?rꈆr|WFR@I^l7𙒝 a:z6VA`YoWuq[F[aj z ࿟ $%OӷyazDBL$ GBxe'Ĩ}.z|9|h`-%8vm*ΉLOŚAN-մ=l553V̰Z{n&g8_zRe-LxNR_Ko^J7KI<.%=㉍)׼KK&GUpnjb(&bb(&bb(&r&c(dx.RylI3\0\0\03\ 2X`VS /|Y:~󐱻hkR -&`D-#ݸ-! |` &`y &`pf1uPCCۿ_GvN4reɅvRKLv P(BB^͵qf(FoL0 0 0 0 8[O`qcx[yxm b$K?҄%[%;߳a^w{6}^(J$B?wr6N>dQdi$2f<xsه hrEfnJ:L8Ftc,iT$́" `C v&Ժ-.,X MX"n{vV`rm! gd\hόMXDŽuLXDŽuLXDŽuLXDŽuLXDŽuX&EWةEo<(Ӈy0i3<Ւ ڜ EА76k`i|ABˡ4c@: ;*vK7td 3?^N ~VJo>&ݰn? 19@-=yCܧWCbo#d}t31+@3-[#yiDnjnDD7+gj_=N#*EOBP֊}r_ VъI2!$Ô2MN-@ƱI_/Wg볊-$]Nzf)p ^C#z%*7iLl@gVW#%ye5wx` h;4 g*iV7uAmo1HWAhOz'4LFj`4ֿ@Raa0!JCNRČiX/dev/stderr; false);\ [ "$$SUPPORTED" = "$$DEB_SUPPORTED" ] || \ (echo "Please update SUPPORTED in debpython/version.py ($$SUPPORTED vs. $$DEB_SUPPORTED)" >/dev/stderr; false) pdebuild: pdebuild --debbuildopts -I # TESTS nose: nosetests --with-doctest --with-coverage tests: nose make -C tests test%: make -C tests $@ .PHONY: clean tests test% check_versions python-defaults-debian/README.derivatives0000644000000000000000000000273612057417145015534 0ustar How to change a list of supported Python versions? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Open debian/debian_defaults file and change `supported-versions` variable * Open debian/control.in file and edit python-all, python-all-dev and python-all-dbg's Depends line (add or remove pythonX.Y packages) * Open debian/pyversions.py file and edit `_supported_versions` list around line 141 * Open debpython/version.py file and edit `SUPPORTED` list around line 26 How to change default Python version? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Open debian/debian_defaults file and change `default-version` variable * Open debian/rules file and edit `VER` variable (default version), `NVER` (default + 1 version) and `PVER` (default version with "python" prefix) * Open debian/pyversions.py file and edit `debian_default` variable around line 171 * Open debpython/version.py file and edit `DEFAULT` variable around line 27 How to bump minimum required Python version by dh_python2? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Open debpython/depends.py file and edit `MINPYCDEP` variable around line 26 How to regenerate dist_fallback file for dh_python2? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Please note that we recommend to extend this file instead (i.e. removing items from it can break other packages' dependencies) * Update pydist/sources.list file to point to your distro/suit * Remove pydist/dist_fallback file * Run `make dist_fallback` python-defaults-debian/autoscripts/0000755000000000000000000000000013212462266014676 5ustar python-defaults-debian/autoscripts/postinst-pycompile0000644000000000000000000000011312057417145020500 0ustar if which pycompile >/dev/null 2>&1; then pycompile -p #PACKAGE# #ARGS# fi python-defaults-debian/autoscripts/preinst-pycentral-clean0000644000000000000000000000035112057417145021365 0ustar # make sure python-central files are removed before new package is installed if [ "$1" = upgrade ] && [ -f /var/lib/pycentral/#PACKAGE#.pkgremove ] then pycentral pkgremove #PACKAGE# rm -f /var/lib/pycentral/#PACKAGE#.pkgremove fi python-defaults-debian/autoscripts/prerm-pyclean0000644000000000000000000000025513212462263017376 0ustar if which pyclean >/dev/null 2>&1; then pyclean -p #PACKAGE# #ARGS# else dpkg -L #PACKAGE# | grep '\.py$' | while read file do rm -f "${file}"[co] >/dev/null done fi python-defaults-debian/debian/0000755000000000000000000000000013265131666013545 5ustar python-defaults-debian/debian/README.Debian0000644000000000000000000000071613212462555015606 0ustar More documentation and README's for this package can be found in the directory /usr/share/doc/python2.7/ The upstream documentation can be found after installation of the python-doc package in the directory /usr/share/doc/python/html A draft of the "Debian Python Policy", mostly needed for Debian package maintainers can be found in /usr/share/doc/python3 Sometime it will be moved to /usr/share/doc/debian-policy in the debian-policy package. python-defaults-debian/debian/changelog0000644000000000000000000014536413265131666015434 0ustar python-defaults (2.7.15~rc1-1) unstable; urgency=medium * Bump version to 2.7.15~rc1. * debian/control.in (Michael Vogt): - add Cnf-Visible-Pkgname hint to ensure command-not-found recommends installing "python" instead of "python-minimal" when it is missing. -- Matthias Klose Mon, 16 Apr 2018 16:31:18 +0200 python-defaults (2.7.14-4) unstable; urgency=medium * Stop building the python-examples and idle2 packages. * python: Stop shipping the 2to3 symlink (now in the 2to3 package). -- Matthias Klose Wed, 13 Dec 2017 23:39:49 +0100 python-defaults (2.7.14-3) unstable; urgency=medium * Stop using priority extra for the -dbg packages. * pycompile, pyclean, pyversions: Use python2 as the shebang to guard against people fiddling around with the python symlink or having a python3 installed as python in /usr/local. Closes: #864599. LP: #1715062. * Rename the idle package to idle2. idle is now built for python3. * Fix quoting in the prerm-clean autoscript. Closes: #815134. * README.Debian: Reference 2.7 and point to the python3 package for the Debian Python Policy. * Mark python-examples as M-A: foreign. -- Matthias Klose Fri, 08 Dec 2017 10:56:48 +0100 python-defaults (2.7.14-1) unstable; urgency=medium * Bump version to 2.7.14. * python-examples: Fix Multi-Arch warning. * Change policy format from debiandoc SGML to DocBook/XML (W. Martin Borgert). Closes: #872421. -- Matthias Klose Mon, 18 Sep 2017 10:17:15 +0200 python-defaults (2.7.13-2) unstable; urgency=medium [ Matthias Klose ] * Lower priority of packages from standard to optional. [ Scott Kitterman ] * Make another attempt at Django specific binary naming -- Matthias Klose Tue, 24 Jan 2017 14:00:42 +0100 python-defaults (2.7.13-1) unstable; urgency=medium [ Matthias Klose ] * Bump version to 2.7.13. * Mark python-doc as M-A: foreign. * Bump debhelper version. [ Helmut Grohne ] * Fix FTCBFS: Annotate python build dependencies with :any (Closes: #841682) [ Chris Lamb ] * Consistently order python substvars to support reproducibility (Closes: #844111) [ Scott Kitterman ] * Add Django specific binary naming policy to align to current practice. -- Matthias Klose Tue, 20 Dec 2016 11:15:12 +0100 python-defaults (2.7.11-2) unstable; urgency=medium [ Scott Kitterman ] * Python policy updates for Stretch (Many thanks to Ben Finney for all the updates) - Change focus in text to python3 - Remove/deprecate features no longer needed due to only a single Python 2 version - Discuss update process in more detail - Revamp tools section to better align to current practice [ Matthias Klose ] * Update valgrind suppression file. Issue #12612. LP: #1512622. * Rebuild to pick up the GNU triplet change on i386 archs. Addresses: #826128. -- Matthias Klose Fri, 03 Jun 2016 01:29:55 +0200 python-defaults (2.7.11-1) unstable; urgency=medium * Bump version to 2.7.11. * Stop shipping menu files. * Fix some lintian warnings. -- Matthias Klose Wed, 09 Dec 2015 13:07:35 +0100 python-defaults (2.7.9-1) unstable; urgency=medium * Bump version to 2.7.9. -- Matthias Klose Mon, 16 Mar 2015 23:32:04 +0100 python-defaults (2.7.8-4) unstable; urgency=medium [ Barry Warsaw ] * Update policy document to clarify the purpose and use of the wheel files. No actual change in policy is made. -- Scott Kitterman Mon, 02 Mar 2015 15:45:19 -0500 python-defaults (2.7.8-3) unstable; urgency=medium [ Michael Gilbert ] * Make python-minimal a pre-dependency for python (closes: #769106). -- Scott Kitterman Mon, 02 Feb 2015 16:12:38 -0500 python-defaults (2.7.8-2) unstable; urgency=medium [ Matthias Klose ] * Build-depend on python2.7 and dpkg-dev versions to consistently generate the i586-* symlinks. Closes: #758301. [ Piotr Ożarowski ] * dh_python2: add a warning abount missing dh-python in Build-Depends [ Scott Kitterman ] * Minor updates to python policy - Reflect disuse of pyshared directory in favor of /usr/lib/python2.7/ dist-packages since python2.7 is the last and only python version supported (Closes: #763451) - Update python-central information to reflect its removal from Jessie -- Scott Kitterman Fri, 24 Oct 2014 10:58:42 -0400 python-defaults (2.7.8-1) unstable; urgency=medium [ Barry Warsaw ] * Fix typo in policy doc re: wheel package exception list. * Add myself to Uploaders. [ Scott Kitterman ] * Fix error in pydist package relationship regex (Closes: #735163) - Thanks to Rafael Laboissiere for the patch * Switch from using lsb-release to dpkg-vendor to determine distro and drop lsb-release from build-depends (Closes: #751706) - Thanks to Peter Pentchev for the patch * Drop unused build-depends on libhtml-tree-perl * Clarify discussion of requirement to use python:Provides (Closes: #669346) * Add clarification of naming requirements for submocules (Closes: #701192) * Minor cleanups in debian/pyversions.py * Stop automatically regenerating static content (dh_python2 man pages and Python FAQ) and drop build-dep on python-docutils to ease bootstrapping (Closes: #754060) - Add direct build-dep on python-all to replace indirect build-dep * Bump version to 2.7.8 * Drop ancient Breaks on python-csv, python-bz2, and python-email -- Scott Kitterman Fri, 11 Jul 2014 17:10:37 -0400 python-defaults (2.7.6-2) unstable; urgency=medium [ Barry Warsaw ] * Add python policy for Python Wheels. -- Scott Kitterman Wed, 21 May 2014 00:04:16 -0400 python-defaults (2.7.6-1) unstable; urgency=medium * Bump version to 2.7.6. * dh_python2: no longer move files to /usr/share/pyshared, don't create /usr/lib/pyshared symlinks for extensions. * Use UTF-8 encoding for the python policy in HTML format. Closes: #689931. * Add a chapter for the python policy to prefer Python 3 over Python 2. -- Matthias Klose Mon, 12 May 2014 12:16:34 +0200 python-defaults (2.7.5-5) unstable; urgency=low [ Steve Langasek ] * Adjust debpython/depends.py to be multiarch-friendly. [ Piotr Ożarowski ] * Set "Multi-Arch: allowed" in python, python-dev, python-minimal, python-dbg, python-all, python-all-dev, python-all-dbg * Replace /usr/bin/dh_python2 with a Python script that invokes dh-python's dh_python2 if Build-Depends{,-Indep} contains dh-python -- Piotr Ożarowski Thu, 12 Sep 2013 21:25:01 +0200 python-defaults (2.7.5-4) unstable; urgency=low * Add libpython-all-dbg.postinst to convert the doc directory to a symlink on upgrade (Closes: #718736) -- Scott Kitterman Tue, 13 Aug 2013 00:23:58 -0400 python-defaults (2.7.5-3) unstable; urgency=low [ Matthias Klose ] * Fix libpython-all-dbg doc dir symlink. Closes: #712270. [ Piotr Ożarowski ] * Replace /usr/bin/dh_python2 with a shell script that invokes dh-python's dh_python2 if debian/control mentions dh-python * dh_python2: warnings about --install-layout=deb and translating dependencies are just an info now -- Piotr Ożarowski Fri, 02 Aug 2013 08:54:32 +0200 python-defaults (2.7.5-2) unstable; urgency=low * Add dependencies on the new libpython-{stdlib,all-dev,all-dbg} packages. -- Matthias Klose Thu, 13 Jun 2013 15:07:18 +0200 python-defaults (2.7.5-1) unstable; urgency=low [ Matthias Klose ] * Bump version to 2.7.5. * Drop python2.6 as a supported python version. * Bump standards version to 3.9.4. * Start building the libpython-stdlib, libpython-all-dev, libpython-all-dbg packages. * Drop Python 2.6 as a supported Python version. * Fix some lintian warnings. [ Scott Kitterman ] * When X(S)-Python-Version or debian/pyversions is not present, do not describe them as missing, just indicate they are not there -- Matthias Klose Thu, 06 Jun 2013 14:57:03 +0200 python-defaults (2.7.3-13) experimental; urgency=low * Always build the policy files. -- Matthias Klose Thu, 28 Feb 2013 16:46:08 +0100 python-defaults (2.7.3-12) experimental; urgency=low * Move python-docutils to build-depends (from build-depends-indep). -- Matthias Klose Thu, 28 Feb 2013 15:58:09 +0100 python-defaults (2.7.3-11) experimental; urgency=low * Add Multi-Arch: same packages libpython-all-{dev,dbg} (not yet built, python2.6 doesn't have support for multiarch). * python-dbg: Stop providing python-gdbm-dbg, python-tk-dbg. Closes: #700716. * Add a libpython-stdlib package (not yet built). -- Matthias Klose Thu, 28 Feb 2013 14:43:06 +0100 python-defaults (2.7.3-10) experimental; urgency=low * Build dependency packages as architecture dependent packages. * Make python, python-{minimal,dev,dbg} Multi-Arch: allowed. * Build Multi-Arch: any packages libpython-{dev,dbg} packages providing $(DEB_HOST_GNU_TYPE/DEB_HOST_MULTIARCH)-python-config symlinks. * Provide python2 symlinks. -- Matthias Klose Wed, 12 Dec 2012 00:25:00 +0100 python-defaults (2.7.3-5) unstable; urgency=low * Drop Python 2.6 as a supported Python version. -- Matthias Klose Mon, 06 May 2013 02:48:48 +0200 python-defaults (2.7.3-4) unstable; urgency=low [ Dmitry Shachnev ] * Revert previous prerm/postrm changes: - prerm is never called as `prerm purge`. - configuration files shouldn't be deleted on package remove. -- Scott Kitterman Fri, 08 Feb 2013 16:26:12 -0500 python-defaults (2.7.3-3) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - no longer sensitive to trailing slash in private dir names (closes: #686358) - ignore /usr/bin/python3 shebangs in all packages, not just in python3-* ones - generates correct "python (<< 2.X)" dependencies for packages with private Python extensions (typo fixed) * pyversions.py: fix parsing DEBPYTHON_SUPPORTED env. variable (versions should be separated using comma, as in debian_defaults config file) [ Dmitry Shachnev ] * debian/python.{pre,post}rm.in: Handle purge command the same way as remove (thanks to Mitsuya Shibata for the bug report) -- Piotr Ożarowski Sun, 21 Oct 2012 22:40:55 +0200 python-defaults (2.7.3-2) unstable; urgency=low * dh_python2: ignore empty files while trying to normalize shebangs (Closes: #680793) * Fix lack of python-imaging in pydist/dist_fallback - Add python-imaging override to pydist/generate_fallback_list.py - pydist/dist_fallback: Regenerate to add python-imaging (which wasn't recognized before due to .pth file) along with a few automatic adjustments -- Piotr Ożarowski Thu, 26 Jul 2012 23:03:32 +0200 python-defaults (2.7.3-1) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - remove even more \.so.* dangling symlinks, thanks to Stefano Rivera for providing a test case - rewrite shebangs by default (disable via --no-shebang-rewrite), examples: + "/usr/bin/env python*" → "/usr/bin/python*" + "/usr/local/bin/python foo" → "/usr/bin/python foo" + "/usr/bin/python2" → "/usr/bin/python" - new --shebang option to replace all shebangs in bin dirs (example: --shebang /usr/bin/python2.6) - no longer generates python2.X | python2.Y depenendies for public modules (Closes: 625740) - translate Python version numbers into Debian ones for those require.txt items that have a pydist file with (uscan like) rules or PEP386 flag (Closes: #653740) * Improve dh_python2 manpage a bit, add information about cleaning debug packages (Closes: #653741) * pyversions, dh_python2, pycompile: allow to override system's list of supported Python versions via DEBPYTHON_SUPPORTED and default Python version via DEBPYTHON_DEFAULT env. variables * Debhelper's python2 sequence now inserts dh_python2 before dh_installinit (closes: 670418) [ Scott Kitterman ] * Bump upstream version to match current unstable/wheezy python2.7 version -- Piotr Ożarowski Sat, 30 Jun 2012 20:23:59 +0200 python-defaults (2.7.3~rc2-1) unstable; urgency=low [ Scott Kitterman ] * Bump minimum debhelper version to 8 so all tests will run - dh_python2 tests 1 - 5 require dh 7 and test 6 needs dh 8 * Move idle.xpm symlink from python to idle and add Breaks/Replaces * Move /usr/bin/pyversions from python to python-minimal since that's where the actual script it's a symlink to lives, add Breaks/Replaces * Bump standards version to 3.9.3 without further change * Correct Python package names with hyphens in them being ignored (Closes: #657665) * Drop -n from /usr/bin/idle invocations in debian/idle.desktop and debian/idle.menu (Closes: #482156) * Update Python policy - Describe addition of /usr/bin/python2 due to upstream changes - Remove redundant text on Python provides and clarify when they should be used - Update description of functionality related to X-Python-Version for Wheezy - Update X/XS-Python-Versions to also include X-Python-Version examples - Add appropriage Breaks/Replaces * Bump upstream version to match current unstable/wheezy python2.7 version [ Piotr Ożarowski ] * dh_python2, pyversions: make comparison of X(S)-Python-Version field names case-insensitive (Closes: #676224) -- Scott Kitterman Tue, 05 Jun 2012 22:43:11 -0400 python-defaults (2.7.2-10) unstable; urgency=low [ Matthias Klose ] * dh_python2: For argparse eggs, generate dependencies of the form "python (>= 2.7) | python-argparse". Closes: #653644, #657119. * Regenerate pydist/dist_fallback. [ Piotr Ożarowski ] * pycompile: fix -O option * dh_python2: do not try to add python2.X dependency if private dir works with all Python versions -- Matthias Klose Tue, 24 Jan 2012 11:49:24 +0100 python-defaults (2.7.2-9) unstable; urgency=low * Generate correct dependencies if private directory supports one Python version only (closes: #644573) -- Piotr Ożarowski Sat, 08 Oct 2011 17:16:46 +0200 python-defaults (2.7.2-8) unstable; urgency=high * Fix update-manager Breaks (Closes: #644491) -- Scott Kitterman Thu, 06 Oct 2011 15:48:06 -0500 python-defaults (2.7.2-7) unstable; urgency=low * Adjust version numbers for upload to unstable. * python: Break update-manager (<= 0.200.5-1). -- Matthias Klose Tue, 27 Sep 2011 18:21:42 +0200 python-defaults (2.7.2-6) experimental; urgency=low [ Scott Kitterman ] * Fixed typo in python-policy (thanks to Jakub Wilk) [ Piotr Ożarowski ] * dh_python2: - handle private dir paths without leading slash - add python to Depends if unversioned python shebang is detected in private directory - dist_fallback: add /usr/share/python-support/package/ to paths searched for Egg metadata; add "wsgiref" and "python" fallbacks - do not try to remove .so.foo symlinks twice (if files were listed in an unfortunate order) -- Piotr Ożarowski Sat, 24 Sep 2011 16:36:29 +0200 python-defaults (2.7.2-5) experimental; urgency=low [ Piotr Ożarowski ] * dh_python2: - generates rtupdate scripts for private directories that compile files from given package only, add --compile-all to dh_python2's call if you want the old behaviour (i.e. compile also files (plugins?) provided by other packages, which do not use a helper/bytecompile them) - add --no-dbg-cleaning option (to disable removing files from debug packages) - fix handling "distname[features]" in debpython.pydist.guess_dependency (closes: 636255) * pyclean now accepts --package and private dir argument at the same time [ Scott Kitterman ] * debpyhton/pydist: Incorporate patch from Jonathan Lange to stop printing to stderr (LP: #812960) * Add Piotr Ożarowski back to Uploaders -- Scott Kitterman Mon, 08 Aug 2011 10:28:50 -0400 python-defaults (2.7.2-4) experimental; urgency=low [ Piotr Ożarowski ] * dh_python2: - no longer moves .so.foo files to pyshared dir (closes: 635316) - replaces .so symlinks with .so.foo files in dist-packages [ Scott Kitterman ] * Drop python2 symlink pending further discussion (closes: 634967) * Update recent Python policy changes based on feedback from Debian Python -- Scott Kitterman Wed, 27 Jul 2011 10:15:38 -0400 python-defaults (2.7.2-3) experimental; urgency=low * python: Provide python profiler. * Provide a python2 symlink according to PEP 394. * Bump standards version. * Fix some lintian warnings. * Add 2to3.1 manual page symlink. -- Matthias Klose Sun, 10 Jul 2011 20:57:27 +0200 python-defaults (2.7.2-2) experimental; urgency=low [ Piotr Ożarowski ] * dh_python2: - no longer generates maintainer scripts that invoke pycentral's pkgremove script, use --clean-pycentral if you want the old behaviour - egg-info directories are parsed even if cleaning the name was necessary (thanks to Arnaud Fontaine for the patch) - private directory names with apostrophes are escaped properly in maintainer script's -X arguments (thanks to Jakub Wilk for the patch) - deal with original symlinks more carefully (closes: 627969, thanks to Leonid Borisenko for the original patch) - add --ignore-shebangs option that will disable translating shebangs into Debian dependencies - add --ignore-namespace option that will disable handling Egg-info's namespace_packages.txt (AKA namespace feature) - PyDist: update dist_fallback file (with atypical Debian package names) - disable PyDist feature if dh sequencer is invoked --with pydeb (closes: 630502, thanks to Gediminas Paulauskas for the original patch) - warn if public Python extension is linked to libpython2.X, fail if it's linked to a wrong version - warn if both XS-Python-Version and X-Python-Version are defined - private dirs: if there is more than one Python version parsed from shebangs, byte-compile the dir with default Python version (or the one requested via X-Python-Version) instead od failing. Add dependency for each (supported) interpreter detected in shebangs - /usr/share/pyshared is not added to the package if empty (closes: 623909) - dh_python2's manpage updated (among other changes, no longer advertises python:Breaks - closes: 631397, describes .pyinstall and .pyremove files) - remove setuptools from requires.txt (it is replaced with python-pkg-resources Debian dependency) - "--namespace foo" no longer triggers .../dist-packages/bar/foo/__init__.py creation, use "--namespace bar.foo" instead [ Scott Kitterman ] * Python policy: - Add deprecation information about python-central and python-support - Clarify Python module and package descriptions -- Scott Kitterman Thu, 07 Jul 2011 01:06:08 -0400 python-defaults (2.7.2-1) experimental; urgency=low [ Piotr Ożarowski ] * dh_python2: generate more strict dependencies for packages with private extensions (closes: #625760) [ Scott Kitterman ] * Set python2.7 as default for testing in experimental - Update version references in patching file debian/control, control.in, debian_defaults, python.postinst.in, python.preinst.in, pyversions.py, and rules -- Scott Kitterman Tue, 31 May 2011 07:44:33 -0400 python-defaults (2.6.6-14) unstable; urgency=low [ Piotr Ożarowski ] * python.mk: add py_builddir macro. $(call py_builddir, 2.6) returns "build/lib.linux-x86_64-2.6" on amd64 * dh_python2, pycompile, pyclean: add "namespace" feature: dh_python2 parses Egg's namespace_packages.txt files (in addition to --namespace command line argument(s)) and drops empty __init__.py files from binary package. pycompile will regenerates them at install time and pyclean will remove them at uninstall time (if they're no longer used in installed packages * Remove myself from Uploaders [ Scott Kitterman ] * Upload to Unstable (adds Python 2.7 as a supported Python in Unstable) * Drop python2.5 as a supported Python version - Update debian/debian_defaults - Update debpython/version.py - Update debian/control.in * Update copyright years for dh_python2, pycompile, pyclean and debpython in debian/copyright -- Scott Kitterman Fri, 15 Apr 2011 00:04:07 -0400 python-defaults (2.6.6-13) experimental; urgency=low * Add python2.7 as a supported Python version. * python-all{,-dev,-dbg}: Depend on the 2.7 packages. * Run the rtinstall script, when 2.7 became a supported version (2.6.6-13) and python2.7 is installed. * Python-minimal Breaks python-support (<< 1.0.12) -- Scott Kitterman Mon, 21 Mar 2011 10:53:42 -0400 python-defaults (2.6.6-12) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - use Depends: python (<< 2.X), python (>= 2.Y) rather than Breaks in packages with public modules (after a discussion on debian-devel mailing list) - do not try to check dangling symlinks's shebang (closes: 619005) [ Scott Kitterman ] * Start Python Policy updates for Wheezy: - Document current practice to not provide /usr/bin/python2 - Strengthen warning aginst using /usr/bin/env python - Update paths section for python2.7 and python3 - Deprecate XB-Python-Version - Clarify use of {python:Provides} - Clarify that build-dependencies on -dev packages should not be used except when required * Upload to unstable: - Drop python2.7 from supported versions, not ready for Python transition yet -- Scott Kitterman Mon, 21 Mar 2011 10:22:06 -0400 python-defaults (2.6.6-11) experimental; urgency=low * dh_python2 and pycompile: read /usr/share/python/debian_defaults to get default Python version and a list of supported Python versions * dh_python2: - fix parsing .pyinstall files (a space between file name and module name is now required) - replace a file with a symlink also if there's a matching one in pyshared directory already - add support for DH_OPTIONS env. variable - fix checking shebangs in private directories (executable bit wasn't checked correctly) - add test4 to test handling private directories - make egg-info files/dirs searches case insensitive (closes: #614910) * pycompile: - --exclude now works with private dirs - use /usr/bin/pythonX.Y rather than pythonX.Y (to avoid /usr/local interpreters) * rewrite dh_python2.1, pycompile.1 and pyclean.1 manpages in ReStructured Text, add quick guide for maintainers to dh_python2 manpage -- Piotr Ożarowski Mon, 28 Feb 2011 20:28:05 +0100 python-defaults (2.6.6-10) experimental; urgency=low * dh_python2: fix moving files from old debug locations (due to typo) * python-minimal now Breaks python-support << 1.0.12 (Python 2.7 support was added in 1.0.12) * pycompile: skip dangling symlinks -- Piotr Ożarowski Mon, 10 Jan 2011 23:05:47 +0100 python-defaults (2.6.6-9) experimental; urgency=low * dh_python2: fix a crash in packages with private extension (closes: 607555) - test3 added (to test architecture dependent packages) -- Piotr Ożarowski Sun, 19 Dec 2010 20:27:23 +0100 python-defaults (2.6.6-8) experimental; urgency=low * Fix typo in minimum required python version for packages generated with dh_python2 -- Piotr Ożarowski Sun, 19 Dec 2010 14:57:58 +0100 python-defaults (2.6.6-7) experimental; urgency=high * pycompile: - Don't over-optimize, check the timestamps of byte-code files. - Add options -f/--force, -O. - Copy stdout/stderr of py_compile processes in case of error. - Propagate the exit value of the py_compile processes. - Update manual page. * Bump depends to require the fixed pycompile for dh_python2 based package builds. * Don't touch the standard python library in rtupdate scripts. -- Matthias Klose Sun, 12 Dec 2010 17:46:13 +0100 python-defaults (2.6.6-6) experimental; urgency=low * dh_python2: - make the error message about missing extension more clear (and more verbose in --verbose mode) - install files listed in debian/pkg.pyinstall file as public modules for all requested Python versions (use dh_install's package.install files for private modules) - remove public modules listed in debian/pkg.pyremove (glob.glob pattern and version range can be used in both .pyinstall and .pyremove files) - create symlinks for files installed into /usr/share/pyshared/ if there are no other public modules available * pycompile: - `pycompile $DESTDIR/usr/lib/python*` will recognize public site-packages directories and use the right interpreter instead of raising KeyError - do not try to check if interpreter is present when version range is empty -- Piotr Ożarowski Wed, 01 Dec 2010 19:43:50 +0100 python-defaults (2.6.6-5) experimental; urgency=low * pycompile: if installed Python is requested via -V option, use it even if it's not in a list of supported Python versions (closes: 600529) -- Piotr Ożarowski Sun, 17 Oct 2010 23:22:22 +0200 python-defaults (2.6.6-4) experimental; urgency=low * Add python2.7 as a supported Python version. * python-all{,-dev,-dbg}: Depend on the 2.7 packages. * Run the rtinstall script, when 2.7 became a supported version (2.6.6-4) and python2.7 is installed. -- Matthias Klose Sat, 16 Oct 2010 11:58:31 +0200 python-defaults (2.6.6-3+squeeze5) unstable; urgency=low * dh_python2: fix moving files from old debug locations * pycompile: skip dangling symlinks to fix upgrade problem introduced in -3+squeeze3 (closes: 607988) -- Piotr Ożarowski Tue, 11 Jan 2011 22:14:56 +0100 python-defaults (2.6.6-3+squeeze4) unstable; urgency=medium * dh_python2: fix a crash in packages with private extension (closes: 607555) -- Piotr Ożarowski Sun, 19 Dec 2010 21:12:38 +0100 python-defaults (2.6.6-3+squeeze3) unstable; urgency=medium * pycompile: - Don't over-optimize, check the timestamps of byte-code files. - Add options -f/--force, -O. - Propagate the exit value of the py_compile processes. - Update manual page. * Bump depends to require the fixed pycompile for dh_python2 based package builds. * Don't touch the standard python library in rtupdate scripts. -- Matthias Klose Sun, 12 Dec 2010 22:23:03 +0100 python-defaults (2.6.6-3+squeeze2) unstable; urgency=low * pycompile: - `pycompile $DESTDIR/usr/lib/python*` will recognize public site-packages directories and use the right interpreter instead of raising KeyError - do not try to check if interpreter is present when version range is empty (closes: 605356) -- Piotr Ożarowski Tue, 30 Nov 2010 19:57:51 +0100 python-defaults (2.6.6-3+squeeze1) unstable; urgency=medium * pycompile: if installed Python is requested via -V option, use it even if it's not in a list of supported Python versions -- Piotr Ożarowski Mon, 18 Oct 2010 19:04:55 +0200 python-defaults (2.6.6-3) unstable; urgency=low * Upload to unstable * dh_python2: egg renaming fixed -- Piotr Ożarowski Wed, 22 Sep 2010 23:03:15 +0200 python-defaults (2.6.6-2) experimental; urgency=low [ Piotr Ożarowski ] * Add README.derivatives (source package) * dh_python2: - add dist_fallback file with a list of Python distribution name and Debian package name pairs (to be used as a fall back source for PyDist feature) - if dist_fallback and `dpkg -S` fails to find the right package name, fall back to package name recommended by Debian Python Policy (use debian/pydist-overrides file to override) - disable PyDist feature if dh_pydeb is in debian/rules * Use versioned interpreter name rather than "python" only in python-minimal.postinst (closes: 595826) [ Matthias Klose ] * python.mk (py_libdir): Return /usr/lib/python3/dist-packages for 3.x versions. * python.mk (py_pkgname): New macro to refer the package name depending on the python version. -- Piotr Ożarowski Sun, 12 Sep 2010 18:41:04 +0200 python-defaults (2.6.6-1) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: typo in --help output fixed (thanks to Adam D. Barratt) * Bump python-minimal's Breaks of python2.5-minimal to << 2.5.5-7 (due to missing runpy module) * Set the right minimum required python package version in packages with private modules [ Scott Kitterman ] * debian/python-policy.sgml and debian/pyversions.py fix typos (thanks to Adam D. Barratt) [ Matthias Klose ] * Bump version to 2.6.6. -- Piotr Ożarowski Tue, 31 Aug 2010 19:09:30 +0200 python-defaults (2.6.5-13) unstable; urgency=low [ Scott Kitterman ] * Python policy changes for X-Python-Version and X-Python3-Version - Minimum changes for Squeeze * In pyversions, do not silently ignore Python 3 versions * Add support for X-Python-Version to match X-Python3-Version [ Piotr Ożarowski ] * Fix documentation typo in pycompile/pycompile.1 * dh_python2: - pass shallow=False to cmpfiles to make sure only exactly the same files are moved to pyshared - add support for X-Python-Version -- Piotr Ożarowski Fri, 13 Aug 2010 22:39:37 +0200 python-defaults (2.6.5-12) unstable; urgency=low * pycompile: do not hang if interpreters are not started in the same order as they're used (LP: #613675) * Add manpage for dh_python2, pycompile and pyclean * Standards-Version bumped to 3.9.1 (no other changes required) -- Piotr Ożarowski Thu, 05 Aug 2010 19:15:52 -0400 python-defaults (2.6.5-11) unstable; urgency=medium * Add README.PyDist to python-doc package * pycompile: compile public module for the right Python version (really closes: 590224) * dh_python2: rename --depend to --depends, --recommend to --recommends and --suggest to --suggests -- Piotr Ożarowski Tue, 27 Jul 2010 21:25:54 +0200 python-defaults (2.6.5-10) unstable; urgency=medium * dh_python2: - add --depend, --recommend and --suggest command line options (use it if requires.txt doesn't contain dependency that package needs) - add {/usr,}/sbin to the list of directories with checked shebangs * pycompile: do not exit before all background byte compilation is finished (closes: 590224) -- Piotr Ożarowski Sun, 25 Jul 2010 12:34:56 +0200 python-defaults (2.6.5-9) unstable; urgency=low [ Piotr Ożarowski ] * pyclean, pycompile: use .communicate() instead of .wait() to avoid hanging `dpkg -L PACKAGE` in few situations * dh_python2: follow Distribute and replace all non-alphanumeric characters with underscore in distribution name [ Matthias Klose ] * Require python (>= 2.6.5-9~) in generated dependencies to use the fixed pycompile. -- Piotr Ożarowski Mon, 19 Jul 2010 20:27:50 +0200 python-defaults (2.6.5-8) unstable; urgency=low * Revert: - python-minimal: Provide symlink to binary and manpage for /usr/bin/python2. This interpreter name is not created in the upstream sources. python should be used instead. -- Matthias Klose Sat, 17 Jul 2010 13:10:06 +0200 python-defaults (2.6.5-7) unstable; urgency=low * pyversions.py: fall back to the list of supported Python versions if debian/pyversions doesn't exist (as in -5, closes: 588820, thanks to Vincent Legout) -- Piotr Ożarowski Mon, 12 Jul 2010 19:15:17 +0200 python-defaults (2.6.5-6) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - invoke `pycentral pkgremove PACKAGE` in preinst if upgrading from python-central based packages - block python package transitions via ${python:Breaks} or ${python:Depends} (Breaks will be used if available) - recognize more requires.txt patterns in debpython.pydist * pyversions.py: - print error message if file cannot be opened (closes: 521508, thanks to Carl Chenet for the original patch) - print nice error message if computed set of supported versions is empty (closes: 583392) * debian/rules: do not ignore errors (two more `set -e`s added, closes: 397499) * python-doc now suggests python-examples (closes: #585774) * python package doesn't conflict with python2.1 and python2.3 anymore (2.1 and 2.3 are no longer in Debian) * Standards-Version bumped to 3.9.0: - some packages moved from Conflicts to versioned Breaks - Homepage field added [ Scott Kitterman ] * Merge changes back from Ubuntu package: - Tighten ${binary:Version} depends relationships to "=" - python: Add an unversioned `2to3' binary - python-minimal: Provide symlink to binary and manpage for /usr/bin/python2 (Closes: #566266) * Update hard coded fallbacks in debian/pyversions.py to add python2.6 to supported versions and to make it the default version -- Piotr Ożarowski Sun, 11 Jul 2010 17:08:19 +0200 python-defaults (2.6.5-5) unstable; urgency=medium * Use Python's compileall module instead of pycompile to byte-compile debpython module as logging module is not available in pythonX.Y-minimal package (Closes: 586743) -- Piotr Ożarowski Tue, 22 Jun 2010 10:46:48 +0200 python-defaults (2.6.5-4) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - fix parsing "XS-Python-Version: X.Y" - ignore everything after ", >= 3" in XS-Python-Version * Add python-minimal.{postinst,prerm} files to handle .py files byte-compilation [ Scott Kitterman ] * Additonal Python 3 related policy changes: - Clarify that helper specific policy does not apply to Python 3 -- Piotr Ożarowski Mon, 21 Jun 2010 23:50:22 +0200 python-defaults (2.6.5-3) unstable; urgency=low * Remove '-V' option from pyclean call in runtime.d/public_modules.rtremove * Add ${misc:Depends} to Depends in all binary packages * Add Vcs-Browser field * Add some lintian overrides (for false positives) - bump minimum required debhelper version to 6.0.7 (due to dh_lintian) -- Piotr Ożarowski Fri, 18 Jun 2010 10:25:59 +0200 python-defaults (2.6.5-2) unstable; urgency=low [ Piotr Ożarowski ] * dh_python2: - create extension symlinks in /usr/lib/pyshared/pythonX.Y - add support for debian/pydist-overrides - add dh sequence file (use "--with python2" in debian/rules) - some bugs fixed - moved from python-dev to python package * Support for Python3 removed in dh_python2, pycompile and pyclean (moved to python3-defaults) * debian/copyright: Add a note about dh_python2, pycompile, pyclean and the debpython package. * Add myself to Uploaders [ Scott Kitterman ] * debian/pyversions.py: Exclude python3 versions from results - those are handled by py3versions in python3-defaults * Update debian/copyright from LICENSE in python2.6 (Closes: #446671) * Update debian/python-policy.sgml to cover py3versions, py(3)versions as the only defined interface for determining supported/default python versions in Debian, and run time separation of python and python3 as two distinct systems * In debian/python-policy.sgml specify the correct debian/control paragraphs for XS/XB-Python-Version (Closes: #567941) - Thanks to Loïc Minier for the patch [ Matthias Klose ] * Depend on python2.6 version including the fix for issue #8223. * Don't allow installation of a mix of defaults packages for different python versions. Closes: #583683. -- Matthias Klose Thu, 17 Jun 2010 23:47:08 +0200 python-defaults (2.6.5-1) experimental; urgency=low [ Matthias Klose ] * Bump version to 2.6.5. * Make python2.6 the default Python version. * Build a python-doc package. * python: Update the valgrind file to 2.6. [ Piotr Ozarowski ] * python-minimal: Install pycompile and pyclean binaries. * Add lsb-release to Build-Depends * Add dh_python2 stuff -- Matthias Klose Fri, 14 May 2010 18:50:21 +0200 python-defaults (2.5.4-9) unstable; urgency=low * python-all-dev: Fix typo in dependency list. Closes: #566278. -- Matthias Klose Fri, 22 Jan 2010 18:38:31 +0100 python-defaults (2.5.4-6) unstable; urgency=low * Add python2.6 as a supported Python version. * python-all{,-dev,-dbg}: Depend on the 2.6 packages. * Run the rtinstall script, when 2.5 became a supported version (2.4.4-3) and python2.5 is installed. * Run the rtinstall script, when 2.6 became a supported version (2.5.4-6) and python2.6 is installed. Closes: #565952. * Fix reference to list of modules in the python-minimal package. Closes: #558403. -- Matthias Klose Sun, 17 Jan 2010 01:38:21 +0100 python-defaults (2.5.4-5) unstable; urgency=low * Fix typos from policy update (Closes: #561091, #561093) * Drop python2.4 as a supported Python - Remove python2.4 depends and update descriptions for python-all, python-all-dev, and python-all-dbg - Drop python2.4 from supported versions and add to old and unsupported versions - Update pyversions.py to drop python2.4 from the supported list * Correct path to Konsole Python desktop file (Closes: #381659) -- Scott Kitterman Wed, 23 Dec 2009 19:59:15 -0500 python-defaults (2.5.4-4) unstable; urgency=low [ Scott Kitterman ] * Update Python Policy to match current packaging practice: - Major overall update. - Remove extraneous paragraph from Provides section. (Closes: #415213) - Remove obsolete mentions of dh_python. (Closes: #527009) - Fix policy typo. (Closes: #523226) - Add pointer to doc of the site module for site-specific paths. (Closes: #287197) - Correct package dependency rules (Closes: #379455) * Move debhelper from build-depends-indep to build-depends to satisfy clean requirements. * Drop unneeded build-depends-indep on python. * Bump standards version to 3.8.3. * Drop deprecated dh_desktop from debian/rules. * Move dbg packages to section debug. * Make python-all-dbg priority extra. * Remove redundant debian/FAQ.html. * Update (= ${Source-Version}) depends to (>= ${binary:Version}). * Correct Idle depends and description (Closes: #482163). * Update python version reference in README.Debian (Closes: #494068). * Update Debian menu section for idle. * Fix capitalization of Python in the python-dev descriptions. * Add myself to uploaders. [ Matthias Klose ] * python-{dev,dbg}-dev: Add bogus dependencies on python to work around lintian's broken usr-share-doc-symlink-without-dependency check. -- Scott Kitterman Mon, 14 Dec 2009 06:03:32 -0500 python-defaults (2.5.4-2) unstable; urgency=high * python-all*: Tighten the dependencies on the python-* packages. -- Matthias Klose Thu, 26 Feb 2009 12:44:47 +0000 python-defaults (2.5.4-1) unstable; urgency=medium * Depend on python2.5-2.5.4. * python: Install /usr/share/python/python.mk, helper functions for getting the python library dir and install args for distutils installs. * Accept initial blank line in debian/control when parsing version information. -- Matthias Klose Wed, 25 Feb 2009 02:19:09 +0000 python-defaults (2.5.2-3) unstable; urgency=low * python: Provide python-ctypes and python-wsgiref. -- Matthias Klose Sat, 01 Nov 2008 09:15:19 +0100 python-defaults (2.5.2-2) unstable; urgency=low * python: Provide python-plistlib. * python-minimal: Recommend python (suggested by Neil McGovern). -- Matthias Klose Sat, 26 Jul 2008 02:37:00 +0200 python-defaults (2.5.2-1) unstable; urgency=low * Maintainer upload; asking the Release Team to better coordinate things. Being in contact with two members of the release team for two or three weeks when to upload without getting in the way of other transitions, an unannounced upload of a third member of this team is at least surprising. * debian/python.postinst.in: Fix the bug introduced in the NMU, run the rtupdate hooks when upgrading from a version < 2.5.2-1. Closes: #476095. -- Matthias Klose Thu, 17 Apr 2008 20:32:59 +0200 python-defaults (2.5.2-0.1) unstable; urgency=low * NMU by the Release Team not to lose the sweet spot for the Python transition. * Make python2.5 the default Python version. -- Adeodato Simó Sun, 13 Apr 2008 11:29:32 +0200 python-defaults (2.4.4-6) unstable; urgency=low * python.postinst: Fix cleanup of temporary files. Closes: #424703, #424704. -- Matthias Klose Thu, 17 May 2007 08:17:16 +0200 python-defaults (2.4.4-5) unstable; urgency=low * Run the python2.5 rtinstall hooks, if python2.5 was already installed as an unsupported version. -- Matthias Klose Wed, 16 May 2007 21:19:51 +0200 python-defaults (2.4.4-4) unstable; urgency=low * New package python-all-dbg. -- Matthias Klose Fri, 04 May 2007 06:56:27 +0200 python-defaults (2.4.4-3) unstable; urgency=low * Add python2.5 as a supported python version. * Depend on python2.4 packages (>= 2.4.4-4), built for ldbl128 on alpha, powerpc, s390, sparc. * python-all*: Depend on python2.5 packages (>= 2.4.5-1), built for ldbl128 on alpha, powerpc, s390, sparc. * Merge pyversions.py changes from python-central. * Merge changes from Ubuntu: - Add a sanity check, that /usr/bin/python points to the default python version. Users tend to modify this symlink, which then breaks stuff in obscure ways. Ubuntu #75557, closes: #418002. - python-dbg: Provide python-gdbm-dbg, python-tk-dbg, link to README.debug, SpecialBuilds.txt.gz. - python-dev: Add an unversioned python-config binary (backport from python2.5 (appears in python2.4 2.4.4-4). - Robustify building the faq html pages. - Make the suggestions of various packages versioned. * Update the upstream FAQ. -- Matthias Klose Fri, 4 May 2007 06:05:12 +0200 python-defaults (2.4.4-2) unstable; urgency=medium * python-all{,-dev}: Drop dependencies on python2.3{,-dev}. -- Matthias Klose Sat, 16 Dec 2006 15:42:21 +0100 python-defaults (2.4.4-1) unstable; urgency=medium * Depend on the 2.4.4 versions of the packages. * Sync pyversions.py with python-central. * Move 2.3 to old-versions, from supported-versions. * Add 2.5 to unsupported-versions. -- Matthias Klose Sun, 29 Oct 2006 11:06:39 +0100 python-defaults (2.4.3-11) unstable; urgency=low * Add a conflict to python-central (<< 0.5.5). -- Matthias Klose Sun, 13 Aug 2006 19:32:59 +0000 python-defaults (2.4.3-10) unstable; urgency=low * Upload to unstable. Closes: #347440, #360851. * Let the preinst fail on the first failing pre-rtupdate hook, after running the corresponding failed-pre-rtupdate hook. * Reflect renaming of the docutils binaries. Closes: #377601. * Update the upstream FAQ. -- Matthias Klose Sat, 12 Aug 2006 20:28:30 +0200 python-defaults (2.4.3-9) experimental; urgency=low * Fix syntax error in python.preinst. Closes: #381673. -- Matthias Klose Sun, 6 Aug 2006 12:39:34 +0000 python-defaults (2.4.3-8) experimental; urgency=low * idle: Depend on python-tk, add desktop and menu files. -- Matthias Klose Sat, 5 Aug 2006 18:38:31 +0000 python-defaults (2.4.3-7) experimental; urgency=low * Update pyversions.py from 2.3.5-11. * Fix pyversions(1), -r takes exactly one parameter. * idle: Remove the dependency on idle-pythonX.Y, add start script and man page. -- Matthias Klose Sat, 5 Aug 2006 17:34:43 +0000 python-defaults (2.4.3-6) experimental; urgency=low * Remove python's dependency on python-central. Closes: #372658. * On upgrade of the runtime to a new major version, call the hooks (executable files) in /usr/share/python/runtime.d/*.rtupdate. - in python.preinst, call the script with parameters pre-rtupdate . run all hooks, then return exit with the correct exit status. - in python.postinst, call the script with parameters rtupdate . run all hooks, then return exit with the correct exit status. - in python.postinst, call the script with parameters post-rtupdate . run all hooks, then return exit with the correct exit status. * pyversions -r: If the XS-Python-Version field cannot be found in debian/control, fall back to debian/pyversions for the version information. Return with an error code, if the intersection of the versions in debian/pyversions and the supported python versions is empty. Fall back to the supported versions if no version information can be found. Based on a patch from Raphael Hertzog. * Reflect renaming of the docutils binaries. Closes: #377601. -- Matthias Klose Sat, 5 Aug 2006 17:54:43 +0200 python-defaults (2.4.3-5) experimental; urgency=low * Tighten dependencies between packages built from this source. A versioned dependency on python-all / python-all-dev is enough to depend on the same version of python / python-dev. * python: Conflict with python-central (<< 0.4.17). * python: Depend on a python2.4 built for the updated Python policy. * python: Conflict with a python2.3 using the old Python policy. -- Matthias Klose Fri, 16 Jun 2006 18:15:00 +0200 python-defaults (2.4.3-4) experimental; urgency=low * Include version 0.4.1.0 of the python policy. * Fix 'pyversions -i'. -- Matthias Klose Tue, 13 Jun 2006 09:44:22 +0200 python-defaults (2.4.3-3) experimental; urgency=low * Point to the draft of the reworked Python policy. * Fix 'pyversions -r current' (Raphael Hertzog). -- Matthias Klose Mon, 12 Jun 2006 13:40:52 +0200 python-defaults (2.4.3-02) experimental; urgency=low * Really do not build python-doc. -- Matthias Klose Sun, 11 Jun 2006 23:25:02 +0000 python-defaults (2.4.3-01) experimental; urgency=low * Do not build the python-doc package from this source. -- Matthias Klose Sun, 11 Jun 2006 23:59:17 +0200 python-defaults (2.4.3-0) experimental; urgency=low * Upload to experimental. * Do not build the python-tk and python-gdbm packages from this source. * Let the -all packages depend on the default packages (closes: #365219). * Add /usr/share/python/debian_defaults for some default values (i.e. the supported python versions). * Add /etc/python/debian_config for byte-compilation options. * Add a pyversions script to give information about python versions and parse the XS-Python-Version attribute. -- Matthias Klose Sun, 11 Jun 2006 12:57:03 +0000 python-defaults (2.4.2-1) unstable; urgency=low * Change the default python version to 2.4. * Depend on python-central. -- Matthias Klose Thu, 12 Jan 2006 01:16:10 +0000 python-defaults (2.3.5-4) unstable; urgency=low * Add a package python-minimal. This package still depends on python2.3, will depend on python2.4-minimal when changing the default python version. * Add two dependency packages python-all and python-all-dev. These packages are used as build dependencies to determine the set of python version and implementations, which should be / currently are supported. Currently it depends on python2.3 and python2.4. Future versions may add an updated version of jython and ironpython. * Update FAQ. -- Matthias Klose Thu, 12 Jan 2006 00:32:32 +0100 python-defaults (2.3.5-3) unstable; urgency=low * Add python-dbg package. * debian/control.in: idle enhances python. -- Matthias Klose Sun, 19 Jun 2005 13:49:16 +0200 python-defaults (2.3.5-2) unstable; urgency=low * Add valgrind support file /usr/lib/valgrind/python.supp (closes: #291128). * python-doc: Add an conflict/replace to older python packages. Closes: #297266. -- Matthias Klose Sat, 19 Mar 2005 22:49:29 +0100 python-defaults (2.3.5-1) unstable; urgency=low * Depend on python-2.3.5 packages. * Update FAQ. * python suggests python-profiler. -- Matthias Klose Sat, 12 Feb 2005 19:26:48 +0100 python-defaults (2.3.4-6) unstable; urgency=low * Add an 'Enhances: konsole' to the python package (closes: #286161). -- Matthias Klose Sun, 16 Jan 2005 12:53:58 +0100 python-defaults (2.3.4-5) unstable; urgency=low * Add conflict/replaces to ooold python-base package (closes: #279035). -- Matthias Klose Sun, 14 Nov 2004 11:44:14 +0100 python-defaults (2.3.4-4) unstable; urgency=low * Regenerate control file after adding python-docutils build dependency. Closes: #270177. -- Matthias Klose Mon, 6 Sep 2004 07:19:49 +0200 python-defaults (2.3.4-3sid) unstable; urgency=low * Add build dependency on python-docutils (closes: #266550). -- Matthias Klose Wed, 18 Aug 2004 12:30:37 +0200 python-defaults (2.3.4-3) testing-proposed-updates; urgency=low * Unmodified 2.3.4-3sid, destination sarge, fixing build failure. -- Matthias Klose Fri, 20 Aug 2004 18:24:25 +0200 python-defaults (2.3.4-2sid) unstable; urgency=low * Add pdb and pdb.1 symlinks. * Update FAQ. -- Matthias Klose Tue, 17 Aug 2004 16:17:06 +0200 python-defaults (2.3.4-1) unstable; urgency=low * Depend on python-2.3.4 packages. * Update FAQ. -- Matthias Klose Mon, 10 May 2004 06:58:24 +0200 python-defaults (2.3.3-7) unstable; urgency=low * Fix symlinks to proposed policy files (closes: #234874). -- Matthias Klose Thu, 26 Feb 2004 22:28:07 +0100 python-defaults (2.3.3-6) unstable; urgency=low * Build the default packages from a separate source package to ease migration between python versions. * Update to the proposed python-policy: byte-compile using -E. -- Matthias Klose Wed, 4 Feb 2004 23:16:35 +0100 python-defaults-debian/debian/chunk.xsl0000664000000000000000000000140113152177004015372 0ustar 1 0 1 1 1 _blank 1 python-defaults-debian/debian/compat0000644000000000000000000000000213025575703014741 0ustar 9 python-defaults-debian/debian/control0000664000000000000000000002057013265131666015156 0ustar Source: python-defaults Section: python Priority: optional Maintainer: Matthias Klose Uploaders: Scott Kitterman , Piotr Ożarowski , Barry Warsaw Build-Depends: debhelper (>= 9~), dpkg-dev (>= 1.17.11), python2.7:any (>= 2.7.11-11), lsb-release, python-all:any, python2.7:any (>= 2.7.15~rc1-1~), docbook-xml, docbook-xsl, w3m, xsltproc, Standards-Version: 4.1.4 Homepage: http://www.python.org/ Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian Vcs-Browser: http://alioth.debian.org/scm/loggerhead/pkg-python/python-defaults-debian/files Package: python Architecture: any Multi-Arch: allowed Priority: optional Pre-Depends: python-minimal (= ${binary:Version}) Depends: ${misc:Depends}, python2.7 (>= 2.7.15~rc1-1~), libpython-stdlib (= ${binary:Version}) Suggests: python-doc (= ${binary:Version}), python-tk (>= 2.7.15~rc1-1~) Conflicts: python-central (<< 0.5.5) Breaks: update-manager-core (<< 0.200.5-2) Replaces: python-dev (<< 2.6.5-2) Provides: python-email, python-ctypes, python-wsgiref, python-importlib, python-profiler Description: interactive high-level object-oriented language (default version) Python, the high-level, interactive object oriented language, includes an extensive class library with lots of goodies for network programming, system administration, sounds and graphics. . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). XB-Cnf-Extra-Commands: python XB-Cnf-Priority-Bonus: 3 Package: python-minimal Architecture: any Multi-Arch: allowed Priority: optional Depends: ${misc:Depends}, python2.7-minimal (>= 2.7.15~rc1-1~), dpkg (>= 1.13.20) Recommends: python Conflicts: python-central (<< 0.5.5) Breaks: python (<= 2.7.3-1~), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2) Replaces: python (<= 2.7.3-1~) Description: minimal subset of the Python language (default version) This package contains the interpreter and some essential modules. It's used in the boot process for some basic tasks. See /usr/share/doc/python2.7-minimal/README.Debian for a list of the modules contained in this package. Cnf-Visible-Pkgname: python Package: python-dev Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dev (= ${binary:Version}), python2.7-dev (>= 2.7.15~rc1-1~) Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python in applications. . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). Package: libpython-dev Architecture: any Multi-Arch: same Section: libdevel Depends: libpython2.7-dev (>= 2.7.15~rc1-1~), ${misc:Depends} Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python in applications. . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). Package: libpython-stdlib Architecture: any Multi-Arch: same Priority: optional Depends: libpython2.7-stdlib (>= 2.7.15~rc1-1~), ${misc:Depends} Description: interactive high-level object-oriented language (default python version) Python, the high-level, interactive object oriented language, includes an extensive class library with lots of goodies for network programming, system administration, sounds and graphics. . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). Package: python-doc Section: doc Architecture: all Multi-Arch: foreign Depends: ${misc:Depends}, python2.7-doc (>= 2.7.15~rc1-1~) Suggests: python-examples, python (= ${binary:Version}) Breaks: python (<< 2.3.5) Replaces: python (<< 2.3.5) Description: documentation for the high-level object-oriented language Python This is the official set of documentation for the interactive high-level object-oriented language Python (v2.7). All documents are provided in HTML format, some in info format. The package consists of nine documents: . * Tutorial * Python Library Reference * Macintosh Module Reference * Python Language Reference * Extending and Embedding Python * Python/C API Reference * Installing Python Modules * Documenting Python * Distributing Python Modules . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). Package: python-dbg Architecture: any Multi-Arch: allowed Section: debug Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dbg (= ${binary:Version}), python2.7-dbg (>= 2.7.15~rc1-1~) Description: debug build of the Python Interpreter (version 2.7) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python2.7/lib-dynload/debug first. Package: libpython-dbg Architecture: any Multi-Arch: same Section: debug Depends: libpython2.7-dbg (>= 2.7.15~rc1-1~), ${misc:Depends} Description: debug build of the Python Interpreter (version 2.7) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python2.7/lib-dynload/debug first. Package: python-all Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7 (>= 2.7.2-3) Description: package depending on all supported Python runtime versions The package currently depends on python2.7, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python runtimes. Package: python-all-dev Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), libpython-all-dev (= ${binary:Version}), python-dev (= ${binary:Version}), python2.7-dev (>= 2.7-7) Description: package depending on all supported Python development packages The package currently depends on python2.7-dev, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python development packages. Package: python-all-dbg Architecture: any Multi-Arch: allowed Section: debug Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), libpython-all-dbg (= ${binary:Version}), python-dbg (= ${binary:Version}), python2.7-dbg (>= 2.7-7) Description: package depending on all supported Python debugging packages The package currently depends on python2.7-dbg, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python debug packages. Package: libpython-all-dev Architecture: any Multi-Arch: same Section: libdevel Depends: libpython-dev (= ${binary:Version}), ${misc:Depends}, libpython2.7-dev Description: package depending on all supported Python development packages The package currently depends on libpython2.7-dev, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python development packages. Package: libpython-all-dbg Architecture: any Multi-Arch: same Section: debug Depends: libpython-dbg (= ${binary:Version}), ${misc:Depends}, libpython2.7-dbg Description: package depending on all supported Python debugging packages The package currently depends on libpython2.7-dbg, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python debug packages. python-defaults-debian/debian/control.in0000644000000000000000000002045313263113003015540 0ustar Source: python-defaults Section: python Priority: optional Maintainer: Matthias Klose Uploaders: Scott Kitterman , Piotr Ożarowski , Barry Warsaw Build-Depends: debhelper (>= 9~), @bd_i586@, lsb-release, python-all:any, @PVER@:any (>= @PREVVER@), docbook-xml, docbook-xsl, w3m, xsltproc, Standards-Version: 4.1.4 Homepage: http://www.python.org/ Vcs-Bzr: http://alioth.debian.org/anonscm/bzr/pkg-python/python-defaults-debian Vcs-Browser: http://alioth.debian.org/scm/loggerhead/pkg-python/python-defaults-debian/files Package: python Architecture: any Multi-Arch: allowed Priority: optional Pre-Depends: python-minimal (= ${binary:Version}) Depends: ${misc:Depends}, @PVER@ (>= @PREVVER@), libpython-stdlib (= ${binary:Version}) Suggests: python-doc (= ${binary:Version}), python-tk (>= @PREVVER@) Conflicts: python-central (<< 0.5.5) Breaks: update-manager-core (<< 0.200.5-2) Replaces: python-dev (<< 2.6.5-2) Provides: python-email, python-ctypes, python-wsgiref, python-importlib, python-profiler Description: interactive high-level object-oriented language (default version) Python, the high-level, interactive object oriented language, includes an extensive class library with lots of goodies for network programming, system administration, sounds and graphics. . This package is a dependency package, which depends on Debian's default Python version (currently v@VER@). XB-Cnf-Extra-Commands: python XB-Cnf-Priority-Bonus: 3 Package: python-minimal Architecture: any Multi-Arch: allowed Priority: optional Depends: ${misc:Depends}, @PVER@-minimal (>= @PREVVER@), dpkg (>= 1.13.20) Recommends: python Conflicts: python-central (<< 0.5.5) Breaks: python (<= 2.7.3-1~), python-dev (<< 2.6), python-dbg (<< 2.6), python-all (<< 2.6), python-all-dev (<< 2.6), python-all-dbg (<< 2.6), python-examples (<< 2.6), idle (<< 2.6), python2.5-minimal (<< 2.5.5-7), python2.6-minimal (<< 2.6.5~rc2-2), python3.1-minimal (<< 3.1.2~rc1-2), python-support (<< 1.0.10ubuntu2) Replaces: python (<= 2.7.3-1~) Description: minimal subset of the Python language (default version) This package contains the interpreter and some essential modules. It's used in the boot process for some basic tasks. See /usr/share/doc/@PVER@-minimal/README.Debian for a list of the modules contained in this package. Cnf-Visible-Pkgname: python Package: python-dev Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dev (= ${binary:Version}), @PVER@-dev (>= @PREVVER@) Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python in applications. . This package is a dependency package, which depends on Debian's default Python version (currently v@VER@). Package: libpython-dev Architecture: any Multi-Arch: same Section: libdevel Depends: lib@PVER@-dev (>= @PREVVER@), ${misc:Depends} Description: header files and a static library for Python (default) Header files, a static library and development tools for building Python modules, extending the Python interpreter or embedding Python in applications. . This package is a dependency package, which depends on Debian's default Python version (currently v@VER@). Package: libpython-stdlib Architecture: any Multi-Arch: same Priority: optional Depends: libpython@VER@-stdlib (>= @PREVVER@), ${misc:Depends} Description: interactive high-level object-oriented language (default python version) Python, the high-level, interactive object oriented language, includes an extensive class library with lots of goodies for network programming, system administration, sounds and graphics. . This package is a dependency package, which depends on Debian's default Python version (currently v@VER@). Package: python-doc Section: doc Architecture: all Multi-Arch: foreign Depends: ${misc:Depends}, python@VER@-doc (>= @PREVVER@) Suggests: python-examples, python (= ${binary:Version}) Breaks: python (<< 2.3.5) Replaces: python (<< 2.3.5) Description: documentation for the high-level object-oriented language Python This is the official set of documentation for the interactive high-level object-oriented language Python (v@VER@). All documents are provided in HTML format, some in info format. The package consists of nine documents: . * Tutorial * Python Library Reference * Macintosh Module Reference * Python Language Reference * Extending and Embedding Python * Python/C API Reference * Installing Python Modules * Documenting Python * Distributing Python Modules . This package is a dependency package, which depends on Debian's default Python version (currently v@VER@). Package: python-dbg Architecture: any Multi-Arch: allowed Section: debug Depends: ${misc:Depends}, python (= ${binary:Version}), libpython-dbg (= ${binary:Version}), python@VER@-dbg (>= @PREVVER@) Description: debug build of the Python Interpreter (version @VER@) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python@VER@/lib-dynload/debug first. Package: libpython-dbg Architecture: any Multi-Arch: same Section: debug Depends: lib@PVER@-dbg (>= @PREVVER@), ${misc:Depends} Description: debug build of the Python Interpreter (version @VER@) Python interpreter configured with --pydebug. Dynamically loaded modules are searched in /usr/lib/python@VER@/lib-dynload/debug first. Package: python-all Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), python2.7 (>= 2.7.2-3) Description: package depending on all supported Python runtime versions The package currently depends on python2.7, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python runtimes. Package: python-all-dev Architecture: any Multi-Arch: allowed Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), libpython-all-dev (= ${binary:Version}), python-dev (= ${binary:Version}), python2.7-dev (>= 2.7-7) Description: package depending on all supported Python development packages The package currently depends on python2.7-dev, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python development packages. Package: python-all-dbg Architecture: any Multi-Arch: allowed Section: debug Depends: ${misc:Depends}, python (= ${binary:Version}), python-all (= ${binary:Version}), libpython-all-dbg (= ${binary:Version}), python-dbg (= ${binary:Version}), python2.7-dbg (>= 2.7-7) Description: package depending on all supported Python debugging packages The package currently depends on python2.7-dbg, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python debug packages. Package: libpython-all-dev Architecture: any Multi-Arch: same Section: libdevel Depends: libpython-dev (= ${binary:Version}), ${misc:Depends}, libpython2.7-dev Description: package depending on all supported Python development packages The package currently depends on libpython2.7-dev, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python development packages. Package: libpython-all-dbg Architecture: any Multi-Arch: same Section: debug Depends: libpython-dbg (= ${binary:Version}), ${misc:Depends}, libpython2.7-dbg Description: package depending on all supported Python debugging packages The package currently depends on libpython2.7-dbg, in the future, dependencies on jython (Python for a JVM) and ironpython (Python for Mono) may be added. . This package is a dependency package used as a build dependency for other packages to avoid hardcoded dependencies on specific Python debug packages. python-defaults-debian/debian/copyright0000644000000000000000000003713212057417145015503 0ustar This is the Debian GNU/Linux prepackaged version of the Python programming language. Python was written by Guido van Rossum and others. This package was put together by Klee Dienes from sources from ftp.python.org:/pub/python, based on the Debianization by the previous maintainers Bernd S. Brentrup and Bruce Perens. Current maintainer is Matthias Klose until the final 2.3 version is released. Copyright notice (as found in LICENSE in the original source). -------------------------------------------------------------- A. HISTORY OF THE SOFTWARE ========================== Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands as a successor of a language called ABC. Guido remains Python's principal author, although it includes many contributions from others. In 1995, Guido continued his work on Python at the Corporation for National Research Initiatives (CNRI, see http://www.cnri.reston.va.us) in Reston, Virginia where he released several versions of the software. In May 2000, Guido and the Python core development team moved to BeOpen.com to form the BeOpen PythonLabs team. In October of the same year, the PythonLabs team moved to Digital Creations (now Zope Corporation, see http://www.zope.com). In 2001, the Python Software Foundation (PSF, see http://www.python.org/psf/) was formed, a non-profit organization created specifically to own Python-related Intellectual Property. Zope Corporation is a sponsoring member of the PSF. All Python releases are Open Source (see http://www.opensource.org for the Open Source Definition). Historically, most, but not all, Python releases have also been GPL-compatible; the table below summarizes the various releases. Release Derived Year Owner GPL- from compatible? (1) 0.9.0 thru 1.2 1991-1995 CWI yes 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes 1.6 1.5.2 2000 CNRI no 2.0 1.6 2000 BeOpen.com no 1.6.1 1.6 2001 CNRI yes (2) 2.1 2.0+1.6.1 2001 PSF no 2.0.1 2.0+1.6.1 2001 PSF yes 2.1.1 2.1+2.0.1 2001 PSF yes 2.2 2.1.1 2001 PSF yes 2.1.2 2.1.1 2002 PSF yes 2.1.3 2.1.2 2002 PSF yes 2.2.1 2.2 2002 PSF yes 2.2.2 2.2.1 2002 PSF yes 2.2.3 2.2.2 2003 PSF yes 2.3 2.2.2 2002-2003 PSF yes 2.3.1 2.3 2002-2003 PSF yes 2.3.2 2.3.1 2002-2003 PSF yes 2.3.3 2.3.2 2002-2003 PSF yes 2.3.4 2.3.3 2004 PSF yes 2.3.5 2.3.4 2005 PSF yes 2.4 2.3 2004 PSF yes 2.4.1 2.4 2005 PSF yes 2.4.2 2.4.1 2005 PSF yes 2.4.3 2.4.2 2006 PSF yes 2.4.4 2.4.3 2006 PSF yes 2.5 2.4 2006 PSF yes 2.5.1 2.5 2007 PSF yes 2.5.2 2.5.1 2008 PSF yes 2.5.3 2.5.2 2008 PSF yes 2.6 2.5 2008 PSF yes 2.6.1 2.6 2008 PSF yes 2.6.2 2.6.1 2009 PSF yes 2.6.3 2.6.2 2009 PSF yes 2.6.4 2.6.3 2009 PSF yes 2.6.5 2.6.4 2010 PSF yes Footnotes: (1) GPL-compatible doesn't mean that we're distributing Python under the GPL. All Python licenses, unlike the GPL, let you distribute a modified version without making your changes open source. The GPL-compatible licenses make it possible to combine Python with other software that is released under the GPL; the others don't. (2) According to Richard Stallman, 1.6.1 is not GPL-compatible, because its license has a choice of law clause. According to CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 is "not incompatible" with the GPL. Thanks to the many outside volunteers who have worked under Guido's direction to make these releases possible. B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON =============================================================== PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 -------------------------------------------- 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python. 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement. BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 ------------------------------------------- BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the Individual or Organization ("Licensee") accessing and otherwise using this software in source or binary form and its associated documentation ("the Software"). 2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any derivative version prepared by Licensee. 3. BeOpen is making the Software available to Licensee on an "AS IS" basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 5. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 6. This License Agreement shall be governed by and interpreted in all respects by the law of the State of California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This License Agreement does not grant permission to use BeOpen trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party. As an exception, the "BeOpen Python" logos available at http://www.pythonlabs.com/logos.html may be used according to the permissions granted on that web page. 7. By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and conditions of this License Agreement. CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 --------------------------------------- 1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 1.6.1 software in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version, provided, however, that CNRI's License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) 1995-2001 Corporation for National Research Initiatives; All Rights Reserved" are retained in Python 1.6.1 alone or in any derivative version prepared by Licensee. Alternately, in lieu of CNRI's License Agreement, Licensee may substitute the following text (omitting the quotes): "Python 1.6.1 is made available subject to the terms and conditions in CNRI's License Agreement. This Agreement together with Python 1.6.1 may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1013. This Agreement may also be obtained from a proxy server on the Internet using the following URL: http://hdl.handle.net/1895.22/1013". 3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6.1 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 1.6.1. 4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. This License Agreement shall be governed by the federal intellectual property law of the United States, including without limitation the federal copyright law, and, to the extent such U.S. federal law does not apply, by the law of the Commonwealth of Virginia, excluding Virginia's conflict of law provisions. Notwithstanding the foregoing, with regard to derivative works based on Python 1.6.1 that incorporate non-separable material that was previously distributed under the GNU General Public License (GPL), the law of the Commonwealth of Virginia shall govern this License Agreement only as to issues arising under or with respect to Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By clicking on the "ACCEPT" button where indicated, or by copying, installing or otherwise using Python 1.6.1, Licensee agrees to be bound by the terms and conditions of this License Agreement. ACCEPT CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 -------------------------------------------------- Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dh_python2, pycompile, pyclean and debpython module: ==================================================== Copyright © 2010,2011 Piotr Ożarowski Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. python-defaults-debian/debian/debian_defaults0000644000000000000000000000052712141575124016576 0ustar [DEFAULT] # the default python version default-version = python2.7 # all supported python versions supported-versions = python2.7 # formerly supported python versions old-versions = python2.3, python2.4, python2.5, python2.6 # unsupported versions, including older versions unsupported-versions = python2.3, python2.4, python2.5, python2.6 python-defaults-debian/debian/html.xsl0000664000000000000000000000075713152177004015243 0ustar 1 1 python-defaults-debian/debian/idle.10000644000000000000000000000473412057417145014551 0ustar .TH IDLE 1 "21 September 2004" .SH NAME \fBIDLE\fP \- An Integrated DeveLopment Environment for Python .SH SYNTAX .B idle [ \fI-dins\fP ] [ \fI-t title\fP ] [ \fIfile\fP ...] .PP .B idle [ \fI-dins\fP ] [ \fI-t title\fP ] ( \fI-c cmd\fP | \fI-r file\fP ) [ \fIarg\fP ...] .PP .B idle [ \fI-dins\fP ] [ \fI-t title\fP ] - [ \fIarg\fP ...] .SH DESCRIPTION This manual page documents briefly the .BR idle command. This manual page was written for Debian because the original program does not have a manual page. For more information, refer to IDLE's help menu. .PP .B IDLE is an Integrated DeveLopment Environment for Python. IDLE is based on Tkinter, Python's bindings to the Tk widget set. Features are 100% pure Python, multi-windows with multiple undo and Python colorizing, a Python shell window subclass, a debugger. IDLE is cross-platform, i.e. it works on all platforms where Tk is installed. .LP .SH OPTIONS .TP .B \-h .PD Print this help message and exit. .TP .B \-n .PD Run IDLE without a subprocess (see Help/IDLE Help for details). .PP The following options will override the IDLE 'settings' configuration: .TP .B \-e .PD Open an edit window. .TP .B \-i .PD Open a shell window. .PP The following options imply \-i and will open a shell: .TP .B \-c cmd .PD Run the command in a shell, or .TP .B \-r file .PD Run script from file. .PP .TP .B \-d .PD Enable the debugger. .TP .B \-s .PD Run $IDLESTARTUP or $PYTHONSTARTUP before anything else. .TP .B \-t title .PD Set title of shell window. .PP A default edit window will be bypassed when \-c, \-r, or \- are used. .PP [arg]* and [file]* are passed to the command (\-c) or script (\-r) in sys.argv[1:]. .SH EXAMPLES .TP idle .PD Open an edit window or shell depending on IDLE's configuration. .TP idle foo.py foobar.py .PD Edit the files, also open a shell if configured to start with shell. .TP idle \-est "Baz" foo.py .PD Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell window with the title "Baz". .TP idle \-c "import sys; print sys.argv" "foo" .PD Open a shell window and run the command, passing "\-c" in sys.argv[0] and "foo" in sys.argv[1]. .TP idle \-d \-s \-r foo.py "Hello World" .PD Open a shell window, run a startup script, enable the debugger, and run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in sys.argv[1]. .TP echo "import sys; print sys.argv" | idle - "foobar" .PD Open a shell window, run the script piped in, passing '' in sys.argv[0] and "foobar" in sys.argv[1]. .SH SEE ALSO python(1). .SH AUTHORS Various. python-defaults-debian/debian/idle.py0000755000000000000000000000013312057417145015031 0ustar #! /usr/bin/python from idlelib.PyShell import main if __name__ == '__main__': main() python-defaults-debian/debian/idle2.desktop0000644000000000000000000000033312154107660016127 0ustar [Desktop Entry] Name=IDLE Comment=Integrated Development Environment for Python Exec=/usr/bin/idle Icon=/usr/share/pixmaps/idle.xpm Terminal=false Type=Application Categories=Application;Development; StartupNotify=true python-defaults-debian/debian/idle2.lintian-overrides0000644000000000000000000000030713212465571020121 0ustar # icon file available in a dependent package. idle2 binary: menu-icon-missing # yes, we already have idle3, and idle pointing to it idle2 binary: dependency-on-python-version-marked-for-end-of-life python-defaults-debian/debian/libpython-all-dbg.postinst0000644000000000000000000000027412254623031020652 0ustar #! /bin/sh set -e DOCDIR=/usr/share/doc/libpython-all-dbg DOCLINK=libpython-dbg if [ -d $DOCDIR ] && [ ! -L $DOCDIR ]; then rmdir $DOCDIR ln -s $DOCLINK $DOCDIR fi #DEBHELPER# python-defaults-debian/debian/python-dev.dirs0000644000000000000000000000001112057417145016512 0ustar /usr/bin python-defaults-debian/debian/python-doc.docs0000644000000000000000000000002612057417145016476 0ustar pydist/README.PyDist* python-defaults-debian/debian/python-minimal.dirs0000644000000000000000000000001112057417145017362 0ustar /usr/bin python-defaults-debian/debian/python-minimal.manpages0000644000000000000000000000002612057417145020222 0ustar pyclean.1 pycompile.1 python-defaults-debian/debian/python-minimal.postinst.in0000644000000000000000000000013012057417145020713 0ustar #! /bin/sh set -e python@VER@ -m compileall /usr/share/python/ >/dev/null #DEBHELPER# python-defaults-debian/debian/python-minimal.prerm0000644000000000000000000000012112057417145017550 0ustar #! /bin/sh set -e find /usr/share/python/ -name '*.py[oc]' -delete #DEBHELPER# python-defaults-debian/debian/python-policy.dbk0000664000000000000000000013662013152176723017055 0ustar Debian Python Policy Neil Schemenauer nas@debian.org Matthias Klose doko@debian.org Gregor Hoffleit flight@debian.org Josselin Mouette joss@debian.org Joe Wreschnig piman@debian.org Loïc Minier lool@debian.org Scott Kitterman scott@kitterman.com Barry Warsaw barry@debian.org Ben Finney ben+debian@benfinney.id.au version 0.10.1.1 This document describes the packaging of Python within the Debian GNU/Linux distribution and the policy requirements for packaged Python programs and modules. 1999 2016Software in the Public Interest This manual is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A copy of the GNU General Public License version 2 is available as /usr/share/common-licences/GPL-2 in the Debian GNU/Linux system, or on the World Wide Web at GNU General Public License, version 2. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. On the move to Python 3 Debian currently supports two Python stacks, one for Python 3 and one for Python 2. The long term goal for Debian is to reduce this to one stack, dropping the Python 2 stack at some time. PEP 404 states that no more major Python 2 releases are planned, although the latest released minor version 2.7 will see some extended support, documented in PEP 466. Packages in Debian should use Python 3 if Python 3 is supported. New packages should use Python 3 from the initial upload, new upstream versions for existing packages should use Python 3 if the new upstream version supports it. Programs should use Python 3, and should not be packaged for Python 2 as well. Python 3 should be used for the packaging if the packaging scripts use Python. Python libraries, if they support Python 3, should be always packaged for Python 3. If an application supports only Python 2, the Python libraries for that application should also be packaged for Python 2. Existing Python 2 libraries should not be dropped before the last reverse dependency is removed. Python Packaging
    Versions At any given time, the binary package python3 will represent the current default Debian Python 3 version; the binary package python will represent the current default Debian Python 2 version. As far as is reasonable, Python 3 and Python 2 should be treated as separate runtime systems with minimal interdependencies. In some cases, Python policy explicitly references Python helper tools. For Debian Stretch, the dh-python package provides the only such tools; earlier helpers have been removed from Debian. It is a design goal to fully specify required interfaces and functions in policy for Python 3 and to avoid enshrining specific implementation details in policy. Except as noted, policy for Python 2 is the same as Python 3 with the exception of the different major version number as needed to distinguish them. The default Debian Python version, for each of Python 3 and Python 2, should always be the latest stable upstream version that can be fully integrated in Debian. There may be newer supported or unsupported versions included in Debian if they are not fully integrated for a particular release. Apart from the default version, legacy versions of Python or beta releases of future upstream versions may be included as well in Debian, as long as they are needed by other packages, or as long as it seems reasonable to provide them. Note: For the scope of this document, a Python version is synonymous with all micro versions within that minor version. e.g. Python 3.5.0 and 3.5.1 are micro versions of the same Python version 3.5, but Python 3.4 and 3.5 are indeed different versions. For any version, the main binary package must be called pythonX.Y. The set of currently supported Python 3 versions can be found in /usr/share/python3/debian_defaults; the supported interface to this information is through /usr/bin/py3versions. The set of currently supported Python 2 versions can be found in /usr/share/python/debian_defaults; the supported interface to this information is /usr/bin/pyversions. These files are in Python configparser format. They define (in the DEFAULT section) the following options: default-version: The name of the interpreter for the current default Debian Python. supported-versions: The set of interpreter names currently supported and for which modules should be built and byte-compiled. This includes default-version. old-versions: The set of interpreter names which might still be on the system but for which modules should not be built. unsupported-versions: The set of interpreter names which should not be supported at all, that is modules should not be built or byte-compiled for these. This includes (is a superset of) old-versions. Newer versions might also appear in unsupported-versions before being moved to supported-versions.
    Main packages For every Python version provided in Debian, the binary package pythonX.Y shall provide a complete distribution for deployment of Python scripts and applications. The package must ensure that the binary /usr/bin/pythonX.Y is provided. Installation of pythonX.Y shall provide the modules of the upstream Python distribution with some exceptions. Excluded are modules that cannot be included for licensing reasons (for example the profile module), for dependency tracking purposes (for example the GPL-licensed gdbm module), or that should not be included for packaging reasons (for example the tk module which depends on Xorg). Some tools and files for the development of Python modules are split off in a separate binary package pythonX.Y-dev. Documentation will be provided separately as well. At any time, the python3 binary package must ensure that /usr/bin/python3 is provided, as a symlink to the current python3.Y executable. The package must depend on the python3.Y package that installs the executable. The version of the python3 package must be greater than or equal to 3.Y and lower than 3.Y+1. At any time, the python binary package must ensure that /usr/bin/python2 is provided, as a symlink to the current python2.Y executable. The package must depend on the python2.Y package that installs the executable. The version of the python package must be greater than or equal to 2.Y and lower than 2.Y+1. The python binary package must also ensure that /usr/bin/python is provided, as a symlink to the current python2.Y executable. See PEP 394 for details.
    Minimal packages For every Python version provided in Debian, the binary package pythonX.Y-minimal might exist and should not be depended upon by other packages except the Python runtime packages themselves.
    Python Interpreter
    Interpreter Name The different Python major versions require different interpreters (see ). Python scripts that require the default Python 3 version should specify python3 as the interpreter name. Python scripts that require the default Python 2 version should specify python2 as the interpreter name. Python scripts may specify python as the interpreter name only if they do not require any particular version of Python. (Note: this means any python2 version) Python scripts that only work with a specific Python minor version must explicitly use the versioned interpreter name (pythonX.Y).
    Interpreter Location Python scripts should specify the Debian Python interpreter, to ensure that the Debian Python installation is used and all dependencies on additional Python modules are met. The preferred specification for the Python 3 interpreter is /usr/bin/python3 (or /usr/bin/python3.Y if it requires Python 3.Y). The preferred specification for the Python 2 interpreter is /usr/bin/python2 (or /usr/bin/python2.Y if it requires Python 2.Y). Scripts requiring the default Python 2 version may instead specify the interpreter /usr/bin/python. Maintainers should not override the Debian Python interpreter using /usr/bin/env name. This is not advisable as it bypasses Debian's dependency checking and makes the package vulnerable to incomplete local installations of Python.
    Module Path By default, Python modules are searched in the directories listed in the PYTHONPATH environment variable and in the sys.path Python variable. For all supported Debian releases, sys.path does not include a /usr/lib/pythonXY.zip entry. Directories with private Python modules must be absent from the sys.path. Public Python 3 modules must be installed in the system Python 3 modules directory, /usr/lib/python3/dist-packages. Public Python 2 modules must be installed in the system Python 2 modules directory /usr/lib/python2.Y/dist-packages, where 2.Y is the Python 2 version. A special directory is dedicated to public Python modules installed by the local administrator, /usr/lib/python3/dist-packages for all Python 3 versions, /usr/local/lib/python2.Y/dist-packages for Python 2. For local installation of Python modules by the system administrator, special directories are reserved. The directory /usr/local/lib/python3/site-packages is in the Python 3 runtime module search path. The directory /usr/local/lib/python2.Y/site-packages is in the Python 2.Y runtime module search path. Additional information on appending site-specific paths to the module search path is available in the official documentation of the site module. Python modules which work with multiple supported Python 2 versions must install to version-specific locations, for instance /usr/lib/python2.6/dist-packages/foo.py and /usr/lib/python2.7/dist-packages/foo.py. These should point to a common file. Architecture-independent public Python 3 modules must be installed to /usr/lib/python3/dist-packages. Architecture-independent public Python 2 modules should be installed to /usr/lib/python2.7/dist-packages. The historical location for this was /usr/share/pyshared. Since Python 2.7 is the last Python 2 version and the only supported version in Wheezy and later releases, a version-specific location is sufficient.
    Hooks for updates to installed runtimes The python binary package has special hooks to allow other packages to act upon updates to the installed runtimes. This mechanism is required to handle changes of the default Python runtime in some packages and to enable the Python packaging helpers. There are three supported hook types which come in the form of scripts which are invoked from the maintainer scripts of the Python runtime packages when specific installations, removals, or upgrades occur. /usr/share/python3/runtime.d/*.rtinstall, /usr/share/python/runtime.d/*.rtinstall: These are called when a runtime is installed or becomes supported. The first argument is rtinstall, the second argument is the affected runtime (for example pythonX.Y) and the third and fourth argument are the old and new version of this packaged runtime if this runtime was already installed but unsupported. /usr/share/python3/runtime.d/*.rtremove, /usr/share/python/runtime.d/*.rtremove: These are called when a runtime is removed or stops being supported. The first argument is rtremove, and the second argument is the affected runtime (for example pythonX.Y). /usr/share/python3/runtime.d/*.rtupdate, /usr/share/python/runtime.d/*.rtupdate: These are called when the default runtime changes. The first argument is either pre-rtupdate, called before changing the default runtime, or rtupdate, called when changing the default runtime, or post-rtupdate, called immediately afterwards. The second argument is the old default runtime (for example pythonX.Y), and the third argument is the new default runtime (for example pythonX.Z).
    Documentation Python documentation is split out in separate binary packages pythonX.Y-doc. The binary package python3-doc will always provide the documentation for the default Debian Python 3 version. The binary package python-doc will always provide the documentation for the default Debian Python 2 version. TODO: Policy for documentation of third party packages.
    Packaged Modules The goal of these policies is to reduce the work necessary for Python transitions. Python modules are internally very dependent on a specific Python version. However, we want to automate recompiling modules when possible, either during the upgrade itself (re-compiling bytecode files *.pyc and *.pyo) or shortly thereafter with automated rebuilds (to handle C extensions). These policies encourage automated dependency generation and loose version bounds whenever possible.
    Types of Python Modules There are two kinds of Python modules, "pure" Python modules, and extension modules. Pure Python modules are Python source code that generally works across many versions of Python. Extensions are C code compiled and linked against a specific version of the Python runtime, and so can only be used by one version of Python. Debian Python does not link extensions to libpython (as is done in some operating systems). Symbols are resolved by /usr/bin/pythonX.Y which is not linked to libpython. Python packages are a way of structuring Python’s module namespace by using “dotted module names”. See Python's glossary for details on how packages are defined in Python terms (a package in the Python sense is unrelated to a Debian package). Python packages must be packaged into the same directory (as done by upstream). Splitting components of a package across directories changes the import order and may confuse documentation tools and IDEs. There are two ways to distribute Python modules. Public modules are installed in a public directory as listed in . They are accessible to any program. Private modules are installed in a private directory such as /usr/share/package-name or /usr/lib/package-name. They are generally only accessible to a specific program or suite of programs included in the same package.
    Wheels PEP 427 defines a built-package format called "wheels", which is a Zip format archive containing Python code and a *.dist-info metadata directory, in a single file named with the .whl suffix. As Zip files, wheels containing pure Python can be put on sys.path and modules in the wheel can be imported directly by Python's import statement. (Importing extension modules from wheels is not yet supported as of Python 3.4.) Except as described below, packages must not build or provide wheels. They are redundant to the established way of providing Python libraries to Debian users, take no advantage of distro-based tools, and are less convenient to use. E.g. they must be explicitly added to sys.path, cannot be easily grepped, and stack traces through Zip files are more difficult to debug. A very limited set of wheel packages are available in the archive, but these support the narrow purpose of enabling the pip, virtualenv, and pyvenv tools in a Debian policy compliant way. These packages build their own dependent wheels through the use of the dirtbike "rewheeling" tool, which takes installed Debian packages and turns them back into wheels. Only universal wheels (i.e. pure-Python, Python 3 and 2 compatible packages) are supported. Since only the programs that require wheels need build them, only they may provide -whl packages, e.g. python3-pip-whl. When these binary packages are installed, *.whl files must be placed in the /usr/share/python-wheels directory. The location inside a virtual environment will be rooted in the virtual environment, instead of /usr.
    Module Package Names Public Python modules must be packages separately by major Python version, to preserve run time separation between Python 2 and Python 3. Public Python 3 modules used by other packages must have their binary package name prefixed with python3-. Public Python 2 modules used by other packages must have their binary package name prefixed with python-. It is recommended to use this prefix for all packages with public modules as they may be used by other packages in the future. The binary package for module foo should preferably be named python3-foo (for Python 3) or python-foo (for Python 2), if the module name allows. This is not required if the binary package installs multiple modules, in which case the maintainer shall choose the name of the module which best represents the package. For subpackages such as foo.bar, the recommendation is to name the binary package python3-foo.bar (for Python 3) or python-foo.bar (for Python 2). Such a package should support the current Debian Python version, and more if possible (there are several tools to help implement this, see ). For example, if Python 3.3, 3.4, and 3.5 are supported, the Python statement import foo should import the module when the program interpreter is any of /usr/bin/python3.3, /usr/bin/python3.4, and /usr/bin/python3.5. This requirement also applies to extension modules; binaries for all the supported Python versions should be included in a single package. Packages intended for use with Django (python3-django/ python-django) are installed in the same namespace as other python packages for a variety of reasons. Many such packages are named django_$name upstream. These are then packaged as python3-django-$name and python-django-$name. This makes it clear that they are intended for use with Django and not general purpose Python modules. Debian maintainers are encouraged to work with their upstreams to support consistent use of this approach.
    Specifying Supported Versions The debian/control source paragraph may contain optional fields to specify the versions of Python the package supports. The optional X-Python3-Version field specifies the versions of Python 3 supported. When not specified, it defaults to all currently supported Python 3 versions. Similarly, the optional fields X-Python-Version or XS-Python-Version were used to specify the versions of Python 2 supported by the source package. They are obsolete and can be removed now that only Python 2.7 is supported. These fields are used by some packaging scripts to automatically generate appropriate Depends and Provides lines. The format of the field may be one of the following: X-Python3-Version: >= X.Y X-Python3-Version: >= A.B, << X.Y XS-Python-Version: A.B, X.Y XS-Python-Version: all The keyword all means that the package supports any Python 2 version available but might be deprecated in the future since using version numbers is clearer than all and encodes more information. The keyword all is limited to Python 2 versions and must be ignored for Python 3 versions. A comma-separated list of multiple individual versions (e.g. 3.3, 3.4, 3.5) in XS-Python-Version will continue to be supported, but is not recommended. The use of multiple individual versions in X-Python-Version or X-Python3-Version is not supported for Wheezy and later releases. The keyword current has been deprecated and used to mean that the package would only have to support a single Python 2 version (even across default version changes). It must be ignored for Python 3 versions. The use of XB-Python-Version in the binary package paragraphs of debian/control file has been deprecated and should be removed in the normal course of package updates. It never achieved sufficient deployment to support its intended purpose of managing Python transitions. This purpose can be adequately accomplished by examining package dependencies.
    Dependencies Any package that installs modules for the default Python version (or many versions including the default) as described in , must declare a dependency on the default Python runtime package. If it requires other modules to work, the package must declare dependencies on the corresponding packaged modules. The package must not declare dependency on any version-specific Python runtime or module package. For Python 3, the correct dependencies are Depends: python3 (>= 3.Y) and any corresponding python3-foo packages. For Python 2, the correct dependencies are Depends: python (>= 2.Y) and any corresponding python-foo packages. Any package that installs Python modules or Python 3 binary extensions must also declare a maximum version it supports as currently built. This is accomplished by declaring a maximum version constraint strictly less than one higher than the current maximum version, i.e. Depends: python3 (<< X.Y).
    Provides Binary packages that declare Provides dependencies of the form pythonX.Y-foo were never supported for Python 3 and are no longer useful for Python 2. They should be removed in the normal course of package updates. Future provision of values for the substituation variable python:Provides is not guaranteed.
    Modules Byte-Compilation If a binary package provides any binary-independent modules (foo.py files), the corresponding byte-compiled modules (foo.pyc files) and optimized modules (foo.pyo files) must not ship in the package. Instead, they should be generated in the package's post-install script, and removed in the package's pre-remove script. The package's prerm has to make sure that both foo.pyc and foo.pyo are removed. A binary package should only byte-compile the files which belong to the package. The file /etc/python/debian_config allows configuration how modules should be byte-compiled. The post-install scripts should respect these settings. Pure Python modules in private installation directories that are byte-compiled with the default Python version must be forcefully byte-compiled again when the default Python version changes. Public Python extensions should be bin-NMUed. Private Python extensions should be subject to binary NMUs every time the default interpreter changes, unless the extension is updated through a *.rtupdate script.
    Python Programs
    Interpreter directive (“Shebang”) Executables written for interpretation by Python must use an appropraite interpreter directive, or “shebang”, as the first line of the program. This line should be of the form #!interpreter_location. See for the interpreter name to use. As noted in , the form #!/usr/bin/env interpreter_name is deprecated.
    Programs using the default Python A package that installs a program that can be run by any version of Python 3 must declare a dependency on python3, with a versioned dependency if necessary. A package that installs a program that can be run by any version of Python 2 must declare a dependency on python2, with a versioned dependency if necessary. If the program needs the public Python module foo, the package must depend on the binary package that installs the foo module. See for the naming of packages that install public Python modules.
    Programs Shipping Private Modules A program that specifies python3 or python as its interpreter may require its own private Python modules. These modules should be installed in /usr/share/module, or /usr/lib/module if the modules are architecture-dependent (e.g. extensions). The rules explained in apply to those private modules: the byte-compiled modules must not be shipped with the binary package, they should be generated in the package's post-install script using the current default Python version, and removed in the pre-remove script. Modules should be byte-compiled using the current default Python version. Programs that have private compiled extensions must either handle multiple version support themselves, or declare a tight dependency on the current Python version (e.g. Depends: python3 (>= 3.5), python3 (<< 3.6).
    Programs Using a Particular Python Version A program which requires a specific minor version of Python must specify the versioned interpreter pythonX.Y. The package that installs the programs must also specify a dependency on pythonX.Y and on any packages that install necessary modules. The notes on installation directories and byte-compilation for programs that support any version of Python also apply to programs supporting only a single Python version. Modules to be byte-compiled should use the same Python version as the package itself.
    Programs Embedding Python
    Building Embedded Programs Any package that installs a program which embeds a Python interpreter must declare Build-Depends on pythonX.Y-dev, where X.Y is the Python version the program builds against. It should be the current default Python version unless the program does not work correctly with this version.
    Embedded Python Dependencies Dependencies for programs linking against the shared Python library will be automatically created by dpkg-shlibdeps. The libpythonX.Y.so.Z library the program is built against is provided by the pythonX.Y package.
    Interaction with Locally Installed Python Versions As long as you don't install other versions of Python in your path, Debian's Python versions won't be affected by a new version. If you install a different micro version of the version of Python you have got installed, you will need to be careful to install all the modules you use for that version of Python too. Build Dependencies Build dependencies for Python-dependent packages must be declared for every Python version that the package is built for. The python3-all-dev should be used when building extensions for any or all Python 3 versions. The python-all-dev should be used when building extensions for any or all Python 2 versions. To build for a specific version or versions, declare Build-Depends on pythonX.Y-dev. Some applications and pure Python modules may be able to avoid dependency on the -dev packages, and declare Build-Depends on the runtime environment only (python3, python3-all, python, python-all). A package that does not require the -dev packages must not declare Build-Depends on them. Declare Build-Depends on at least: Build-Depends: python2.7 Build-Depends: python2.6 (>= 2.6-1) Build-Depends: python (>= 2.6.6-9) Build-Depends: python-all Build-Depends: python2.7-dev Build-Depends: python3.5-dev (>= 3.5.1-1) Build-Depends: python-dev (>= 2.6.6-9) Build-Depends: python-all-dev Build-Depends: python3-all-dev (>= 3.2) Packaging Tools This section describes the various tools to help package Python programs and modules for Debian. Although none of these tools are mandatory, their use is strongly encouraged, as the above policy has been designed with them in mind (and vice versa). This appendix is just an overview. If you use these tools, you should read their full documentation.
    distutils The standard Python distutils module has been modified in Debian to change the default installation directory of public Python modules and to add a new flag to the install command to override the default, --install-layout=. Public Python modules installed with a modified distutils default to /usr/local/lib/pythonX.Y/dist-packages for Python 2.6 and later. This directory is seen by the system-provided Python 2.6. When using a local Python installation, the default is /usr/local/lib/pythonX.Y/site-packages which is only seen by the local Python installation. Using the --install-layout=deb flag to the install command of setup.py with a system-provided Python 2.6 or later versions, Python modules will be installed to /usr/lib/pythonX.Y/dist-packages which is only seen by the system-provided Python, not by a local installation.
    setuptools The related Python setuptools module has been modified in Debian along the same lines as distutils. Upstream focus on developments and improvements for Python packaging tools has largely shifted away from distutils and to setuptools. They offer a similar API and at some point in the future, setuptools may fully replace distutils in Debian package builds.
    <literal>dh-python</literal> dh-python provides extensions for debhelper to make it easier to package Python modules and extensions. They calculate Python dependencies, add maintainer scripts to byte compile files, etc. Their use is not mandatory, but they are recommended by the Debian Python maintainers. See man dh_python3 or man dh_python2 for details.
    pybuild Pybuild is a Debian Python specific build system that invokes various build systems for requested Python versions in order to build modules and extensions. It supports automatically building for multiple Python versions.
    CDBS The CDBS python-distutils.mk class helps packaging of distutils based Python packages.
    <literal>python-support</literal> (removed) python-support provided another way to manage Python modules. It has been removed from Debian Stretch and later releases.
    <literal>python-central</literal> (removed) python-central provided another way to manage Python modules. It has been removed from Debian Jessie and later releases.
    Upgrade Procedure This section describes the procedure for the upgrade when the default Python version is changed in the Debian unstable release, requiring recompilation of many Python-related packages. Selected pre-releases and release candidates of new Python versions are uploaded to Debian experimental to support pre-transition work and testing. Application and module maintainers make sourceful changes where needed to prepare for the new Python version when needed. Have a long and heated discussion. The Debian Python maintainer and module/application maintainers discuss the readiness for a new default Debian Python version and associated packaging/policy changes. Once there is some consensus, the Python maintainer announces the upgrade and uploads to unstable. Upload of the Python core meta-packages python, python-dev, python-doc and several python-module, depending on the new pythonX.Y, pythonX.Y-dev and so on. The Debian release team schedules rebuilds for packages that may need it. Packages that require additional manual work get updated and uploaded. The necessary package builds are typcially done in three phases in order to keep transitions as smooth as possible. For Python 3, there is no general need to update architecture all packages for a new Python 3 version. Only architecture any packages need to be rebuilt. The new Python 3 version is added to supported versions and packages that support multiple Python 3 versions are binNMUed. They now support both the new and older Python 3 versions. This requires transition assistance from the release team in the form of a transition tracker and binNMU scheduling, but is not a transition that can cause entanglements with other transitions in Debian. Once the default Python 3 version is changed, binNMUs are done for packages that only support one Python 3 version. Some transient uninstallability is unavoidable. This is a transition that can entangle other transitions in Debian and requires more careful coordination with the release team. After the old Python 3 version is dropped from supported versions then packages with multi-version support are binNMUed again to remove support for the old Python 3 version. This is not a true transition and only needs a tracker and binNMU scheduling.
    python-defaults-debian/debian/python.desktop0000644000000000000000000000020712057417145016455 0ustar [Desktop Entry] Type=KonsoleApplication Name=Python Interpreter Comment=Python Exec=/usr/bin/python Icon=/usr/share/pixmaps/python.xpm python-defaults-debian/debian/python.doc-base.python-policy0000644000000000000000000000116213152177004021271 0ustar Document: python-policy Title: Debian Python Policy (Proposal) Author: Neil Schemenauer, Matthias Klose, Gregor Hoffleit Abstract: This document describes the packaging of Python within the Debian GNU/Linux distribution and the policy requirements for packaged Python programs and modules. . The Debian Python Policy has still a draft status. Section: Debian Format: docbook-xml Files: /usr/share/doc/python/python-policy.dbk.gz Format: text Files: /usr/share/doc/python/python-policy.txt.gz Format: HTML Index: /usr/share/doc/python/python-policy.html/index.html Files: /usr/share/doc/python/python-policy.html/*.html python-defaults-debian/debian/python.install0000644000000000000000000000005012057417145016446 0ustar pydist/dist_fallback /usr/share/python/ python-defaults-debian/debian/python.lintian-overrides0000644000000000000000000000033012632015665020437 0ustar # this is the only package that can depend on it python binary: depends-on-python-minimal # we rely on our patched python library, don't pick up a local version python binary: command-with-path-in-maintainer-script python-defaults-debian/debian/python.manpages0000644000000000000000000000001512057417145016574 0ustar dh_python2.1 python-defaults-debian/debian/python.mk0000644000000000000000000000415512057417145015421 0ustar # some macros useful for packaging python packages # to include it unconditionally: # include /usr/share/python/python.mk # # to include it conditionally, and have the packaging working with earlier releases # and backports: # -include /usr/share/python/python.mk # ifeq (,$(py_sitename)) # py_sitename = site-packages # py_libdir = /usr/lib/python$(subst python,,$(1))/site-packages # py_sitename_sh = $(py_sitename) # py_libdir_sh = $(py_libdir) # endif # py_sitename: name of the site-packages/dist-packages directory depending # on the python version. Call as: $(call py_sitename, ). # Don't use this in shell snippets inside loops. py_sitename = $(if $(filter $(subst python,,$(1)), 2.3 2.4 2.5),site,dist)-packages # py_libdir: absolute path to the default python library for third party # stuff. Call as: $(call py_libdir, ). # Don't use this in shell snippets inside loops. py_libdir = /usr/lib/python$(strip $(if $(findstring 3.,$(subst python,,$(1))),3,$(subst python,,$(1))))/$(py_sitename) # py_pkgname: package name corresponding to the python version. # Call as: $(call py_pkgname, , ). py_pkgname = $(if $(findstring 3.,$(2)),$(subst python-,python3-,$(1)),$(1)) # distutils' build directory py_builddir = $(shell python$(strip $(subst python,,$(1))) -c 'from distutils.command.build import build; from distutils.core import Distribution; b = build(Distribution()); b.finalize_options(); print(b.build_platlib)') # The same macros for use inside loops in shell snippets py_sitename_sh = $$(basename $$(_py_=$(strip $(1)); python$${_py_\#python*} -c 'from distutils import sysconfig; print(sysconfig.get_python_lib())')) py_libdir_sh = $$(_py_=$(strip $(1)); python$${_py_\#python*} -c 'from distutils import sysconfig; print(sysconfig.get_python_lib())') py_builddir_sh = $$(_py_=$(strip $(1)); python$${_py_\#python*} -c 'from distutils.command.build import build; from distutils.core import Distribution; b = build(Distribution()); b.finalize_options(); print(b.build_platlib)') # Arguments to pass to setup.py install py_setup_install_args = --install-layout=deb python-defaults-debian/debian/python.postinst.in0000644000000000000000000001132112057417145017273 0ustar #! /bin/sh set -e new_config_file() { cat > /etc/python/debian_config <<-EOF [DEFAULT] # how to byte-compile (comma separated: standard, optimize) byte-compile = standard EOF } case "$1" in configure) [ -d /etc/python ] || mkdir /etc/python [ -f /etc/python/debian_config ] || new_config_file # run the rtinstall script, when 2.5 became a supported version if [ -x /usr/bin/python2.5 ] && [ -n "$2" ] && dpkg --compare-versions $2 lt 2.4.4-3; then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.5..." fi version=$(dpkg -s python2.5-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.5 "$2" "$version" done fi # run the rtinstall script, when 2.6 became a supported version if [ -x /usr/bin/python2.6 ] && [ -n "$2" ] && dpkg --compare-versions $2 lt 2.5.4-6; then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.6..." fi version=$(dpkg -s python2.6-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.6 "$2" "$version" done fi # run the rtinstall script, when 2.7 became a supported version if [ -x /usr/bin/python2.7 ] && [ -n "$2" ] && dpkg --compare-versions $2 lt 2.6.6-13; then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.7..." fi version=$(dpkg -s python2.7-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.7 "$2" "$version" done fi if [ -n "$2" ] && dpkg --compare-versions $2 lt 2.7.2-7~; then oldv=$(echo $2 | sed 's/^\(...\).*/\1/') if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "running python rtupdate hooks for @PVER@..." fi for hook in /usr/share/python/runtime.d/*.rtupdate; do [ -x $hook ] || continue if ! $hook rtupdate python$oldv @PVER@; then hb=$(basename $hook .rtupdate) echo >&2 "error running python rtupdate hook $hb" errors=yes fi done [ -z "$errors" ] || exit 4 if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "running python post-rtupdate hooks for @PVER@..." fi for hook in /usr/share/python/runtime.d/*.rtupdate; do [ -x $hook ] || continue if ! $hook post-rtupdate python$oldv @PVER@; then hb=$(basename $hook .rtupdate) echo >&2 "error running python post-rtupdate hook $hb" errors=yes fi done [ -z "$errors" ] || exit 5 fi if [ -f /var/lib/python/python2.5_already_installed ] \ && [ ! -f /var/lib/python/python2.5_installed ] then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.5..." fi oldversion=$(cat /var/lib/python/python2.5_already_installed) newversion=$(dpkg -s python2.5-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.5 "$oldversion" "$newversion" done fi rm -f /var/lib/python/python2.5_already_installed if [ -f /var/lib/python/python2.6_already_installed ] \ && [ ! -f /var/lib/python/python2.6_installed ] then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.6..." fi oldversion=$(cat /var/lib/python/python2.6_already_installed) newversion=$(dpkg -s python2.6-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.6 "$oldversion" "$newversion" done fi rm -f /var/lib/python/python2.6_already_installed if [ -f /var/lib/python/python2.7_already_installed ] \ && [ ! -f /var/lib/python/python2.7_installed ] then if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "Linking and byte-compiling packages for runtime python2.7..." fi oldversion=$(cat /var/lib/python/python2.7_already_installed) newversion=$(dpkg -s python2.7-minimal | awk '/^Version:/ {print $2}') for hook in /usr/share/python/runtime.d/*.rtinstall; do [ -x $hook ] || continue $hook rtinstall python2.7 "$oldversion" "$newversion" done fi rm -f /var/lib/python/python2.7_already_installed rmdir --ignore-fail-on-non-empty /var/lib/python 2>/dev/null || true esac #DEBHELPER# python-defaults-debian/debian/python.postrm.in0000644000000000000000000000012112111634304016715 0ustar #! /bin/sh set -e case "$1" in purge) rm -rf /etc/python esac #DEBHELPER# python-defaults-debian/debian/python.preinst.in0000644000000000000000000000436112057417145017102 0ustar #! /bin/sh set -e # remove the python alternatives before installing our own python link update-alternatives --auto /usr/bin/python >/dev/null 2>&1 || true update-alternatives --remove python /usr/bin/python1.5 || true update-alternatives --remove python /usr/bin/python2.1 || true update-alternatives --remove python /usr/bin/python2.2 || true [ -L /usr/share/doc/python/html ] || rm -rf /usr/share/doc/python/html case "$1" in upgrade) if dpkg --compare-versions $2 lt 2.6.1-1~; then oldv=$(echo $2 | sed 's/^\(...\).*/\1/') if [ "$DEBIAN_FRONTEND" != noninteractive ]; then echo "running python pre-rtupdate hooks for @PVER@..." fi for hook in /usr/share/python/runtime.d/*.rtupdate; do [ -x $hook ] || continue if ! $hook pre-rtupdate python$oldv @PVER@; then hb=$(basename $hook .rtupdate) echo >&2 "error running python pre-rtupdate hook $hb" echo >&2 "running python failed-pre-rtupdate hook $hb" $hook failed-pre-rtupdate python$oldv @PVER@ errors=yes break fi done [ -z "$errors" ] || exit 3 fi # 2.4.4-5 is the first version, which adds python2.5 as supported # version; need to run an rtinstall python2.5 in the postinst. if dpkg --compare-versions $2 lt 2.4.4-5 && [ -x /usr/bin/python2.5 ]; then version=$(dpkg -s python2.5-minimal | awk '/^Version:/ {print $2}') mkdir -p /var/lib/python echo "$version" > /var/lib/python/python2.5_already_installed fi # 2.5.4-6 is the first version, which adds python2.6 as supported # version; need to run an rtinstall python2.6 in the postinst. if dpkg --compare-versions $2 lt 2.5.4-6 && [ -x /usr/bin/python2.6 ]; then version=$(dpkg -s python2.6-minimal | awk '/^Version:/ {print $2}') mkdir -p /var/lib/python echo "$version" > /var/lib/python/python2.6_already_installed fi # 2.6.6-13 is now the first version, which adds python2.7 as supported # version; need to run an rtinstall python2.7 in the postinst. if dpkg --compare-versions $2 lt 2.6.6-13 && [ -x /usr/bin/python2.7 ]; then version=$(dpkg -s python2.7-minimal | awk '/^Version:/ {print $2}') mkdir -p /var/lib/python echo "$version" > /var/lib/python/python2.7_already_installed fi esac #DEBHELPER# python-defaults-debian/debian/python.prerm.in0000644000000000000000000000015112111634304016521 0ustar #! /bin/sh set -e case "$1" in remove) rm -f /usr/share/python/pyversions.py[co] esac #DEBHELPER# python-defaults-debian/debian/pyversions0000755000000000000000000000015213161161535015703 0ustar #! /usr/bin/python2 import sys sys.path[0:0] = ['/usr/share/python'] import pyversions pyversions.main() python-defaults-debian/debian/pyversions.10000644000000000000000000000225412057417145016050 0ustar .TH PYVERSIONS .SH NAME pyversions \- print python version information .SH SYNOPSIS .PP .B pyversions .I [-h] [-v] [] .SH DESCRIPTION .PP .B pyversions prints information about installed, supported python runtimes, the default runtime, and parses the information of the PythonVersion fields in the package control file. .SH OPTIONS .TP .I -d, --default Show the default python version. .TP .I -s, --supported Show the supported python versions. .TP .I -r, --requested [|] Reads the value of the .B XS-Python-Version field in the source section of a control file and shows all matching python versions. The parameter is interpreted as a version string, if it is not the name of a file. If the XS-Python-Version field is missing, get the version information from debian/pyversions. Without any parameter, it will fall back to list the supported Python versions after checking debian/control and debian/pyversions. .TP .I -i, --installed Show the installed supported python versions. .TP .I -v, --version Limit the output to the version numbers of the python versions. .TP .I -h, --help Print a help text. .SH SEE ALSO Python policy. .SH AUTHOR Matthias Klose python-defaults-debian/debian/pyversions.py0000644000000000000000000003540212374331373016341 0ustar #! /usr/bin/python import os, re, sys try: SetType = set except NameError: import sets SetType = sets.Set set = sets.Set _defaults = None def read_default(name=None): global _defaults from ConfigParser import SafeConfigParser, NoOptionError if not _defaults: if os.path.exists('/usr/share/python/debian_defaults'): config = SafeConfigParser() try: config.readfp(file('/usr/share/python/debian_defaults')) except IOError, msg: print msg sys.exit(1) _defaults = config if _defaults and name: try: value = _defaults.get('DEFAULT', name) except NoOptionError: raise ValueError return value return None def parse_versions(vstring, add_exact=False): import operator operators = { None: operator.eq, '=': operator.eq, '>=': operator.ge, '<=': operator.le, '<<': operator.lt } vinfo = {} exact_versions = set([]) version_range = set(supported_versions(version_only=True) + old_versions(version_only=True)) relop_seen = False for field in vstring.split(','): field = field.strip() if field == 'all': vinfo['all'] = 'all' continue if field in ('current', 'current_ext'): vinfo['current'] = field continue vinfo.setdefault('versions', set()) ve = re.compile('(>=|<=|<<|=)? *(\d\.\d)$') m = ve.match(field) try: if not m: raise ValueError('error parsing Python-Version attribute') op, v = m.group(1), m.group(2) vmaj, vmin = v.split('.') # Don't silently ignore Python 3 versions. if int(vmaj) > 2: raise ValueError('error parsing Python-Version attribute, Python 3 version found') if op in (None, '='): exact_versions.add(v) else: relop_seen = True filtop = operators[op] version_range = [av for av in version_range if filtop(av ,v)] except Exception: raise ValueError, 'error parsing Python-Version attribute' if add_exact: if exact_versions: vinfo['vexact'] = exact_versions if 'versions' in vinfo: if relop_seen: vinfo['versions'] = set(version_range) else: del vinfo['versions'] else: if 'versions' in vinfo: vinfo['versions'] = exact_versions if relop_seen: vinfo['versions'] = exact_versions.union(version_range) return vinfo _old_versions = None def old_versions(version_only=False): global _old_versions if not _old_versions: try: value = read_default('old-versions') _old_versions = [s.strip() for s in value.split(',')] except ValueError: _old_versions = [] if version_only: return [v[6:] for v in _old_versions] else: return _old_versions _unsupported_versions = None def unsupported_versions(version_only=False): global _unsupported_versions if not _unsupported_versions: try: value = read_default('unsupported-versions') _unsupported_versions = [s.strip() for s in value.split(',')] except ValueError: _unsupported_versions = [] if version_only: return [v[6:] for v in _unsupported_versions] else: return _unsupported_versions _supported_versions = ["python%s" % ver.strip() for ver in os.environ.get('DEBPYTHON_SUPPORTED', '').split(',') if ver.strip()] def supported_versions(version_only=False): global _supported_versions if not _supported_versions: try: value = read_default('supported-versions') _supported_versions = [s.strip() for s in value.split(',')] except ValueError: cmd = ['/usr/bin/apt-cache', '--no-all-versions', 'show', 'python-all'] try: import subprocess p = subprocess.Popen(cmd, bufsize=1, shell=False, stdout=subprocess.PIPE) fd = p.stdout except ImportError: fd = os.popen(' '.join(cmd)) depends = None for line in fd: if line.startswith('Depends:'): depends = line.split(':', 1)[1].strip().split(',') fd.close() if depends: depends = [re.sub(r'\s*(\S+)[ (]?.*', r'\1', s) for s in depends] _supported_versions = depends if not _supported_versions: # last resort: python-minimal not installed, apt-cache # not available, hard code the value, #394084 _supported_versions = ['python2.6', 'python2.7'] if version_only: return [v[6:] for v in _supported_versions] else: return _supported_versions _default_version = "python%s" % os.environ.get('DEBPYTHON_DEFAULT', '') if _default_version == 'python': _default_version = None def default_version(version_only=False): global _default_version if not _default_version: try: _default_version = link = os.readlink('/usr/bin/python') except OSError: _default_version = None try: cmd = ['/usr/bin/python', '-c', 'import sys; print sys.version[:3]'] import subprocess p = subprocess.Popen(cmd, bufsize=1, shell=False, stdout=subprocess.PIPE) fd = p.stdout except ImportError: fd = os.popen("/usr/bin/python -c 'import sys; print sys.version[:3]'") line = fd.readline().strip() fd.close() if re.match(r'\d\.\d$', line): _default_version = 'python' + line # consistency check try: debian_default = read_default('default-version') except ValueError: debian_default = "python2.7" if not _default_version in (debian_default, os.path.join('/usr/bin', debian_default)): raise ValueError, "/usr/bin/python does not match the python default version. It must be reset to point to %s" % debian_default _default_version = debian_default if version_only: return _default_version[6:] else: return _default_version def requested_versions(vstring, version_only=False): versions = None vinfo = parse_versions(vstring, add_exact=True) supported = supported_versions(version_only=True) if len(vinfo) == 1: if 'all' in vinfo: versions = supported elif 'current' in vinfo: versions = [default_version(version_only=True)] elif 'vexact' in vinfo: versions = vinfo['vexact'] else: versions = vinfo['versions'].intersection(supported) elif 'all' in vinfo and 'current' in vinfo: raise ValueError, "both `current' and `all' in version string" elif 'all' in vinfo: if 'versions' in vinfo: versions = vinfo['versions'].intersection(supported) else: versions = set(supported) if 'vexact' in vinfo: versions.update(vinfo['vexact']) elif 'current' in vinfo: current = default_version(version_only=True) if not current in vinfo['versions']: raise ValueError, "`current' version not in supported versions" versions = [current] elif 'versions' in vinfo or 'vexact' in vinfo: versions = set() if 'versions' in vinfo: versions = vinfo['versions'].intersection(supported) if 'vexact' in vinfo: versions.update(vinfo['vexact']) else: raise ValueError, 'No Python versions in version string' if not versions: raise ValueError('computed set of supported versions is empty') if version_only: return versions else: return ['python%s' % v for v in versions] def installed_versions(version_only=False): import glob supported = supported_versions() versions = [os.path.basename(s) for s in glob.glob('/usr/bin/python[0-9].[0-9]') if os.path.basename(s) in supported] versions.sort() if version_only: return [v[6:] for v in versions] else: return versions class ControlFileValueError(ValueError): pass class MissingVersionValueError(ValueError): pass def extract_pyversion_attribute(fn, pkg): """read the debian/control file, extract the X-Python-Version or XS-Python-Version field; check that XB-Python-Version exists for the package.""" version = None sversion = None section = None try: fp = file(fn, 'r') except IOError, msg: print "Cannot open %s: %s" % (fn, msg) sys.exit(2) for line in fp: line = line.strip() if line == '': if section == None: continue if pkg == 'Source': break section = None elif line.startswith('Source:'): section = 'Source' elif line.startswith('Package: ' + pkg): section = pkg elif line.lower().startswith(('xs-python-version:', 'x-python-version:')): if section != 'Source': raise ValueError, \ 'attribute X(S)-Python-Version not in Source section' sversion = line.split(':', 1)[1].strip() elif line.lower().startswith('xb-python-version:'): if section == pkg: version = line.split(':', 1)[1].strip() if section == None: raise ControlFileValueError, 'not a control file' if pkg == 'Source': if sversion == None: raise MissingVersionValueError, \ 'no X(S)-Python-Version in control file' return sversion if version == None: raise MissingVersionValueError, \ 'no XB-Python-Version for package `%s' % pkg return version # compatibility functions to parse debian/pyversions def version_cmp(ver1,ver2): v1=[int(i) for i in ver1.split('.')] v2=[int(i) for i in ver2.split('.')] return cmp(v1,v2) def requested_versions_bis(vstring, version_only=False): versions = [] py_supported_short = supported_versions(version_only=True) for item in vstring.split(','): v=item.split('-') if len(v)>1: if not v[0]: v[0] = py_supported_short[0] if not v[1]: v[1] = py_supported_short[-1] for ver in py_supported_short: try: if version_cmp(ver,v[0]) >= 0 \ and version_cmp(ver,v[1]) <= 0: versions.append(ver) except ValueError: pass else: if v[0] in py_supported_short: versions.append(v[0]) versions.sort(version_cmp) if not versions: raise ValueError, 'empty set of versions' if not version_only: versions=['python'+i for i in versions] return versions def extract_pyversion_attribute_bis(fn): vstring = file(fn).readline().rstrip('\n') return vstring def main(): from optparse import OptionParser usage = '[-v] [-h] [-d|--default] [-s|--supported] [-i|--installed] [-r|--requested |]' parser = OptionParser(usage=usage) parser.add_option('-d', '--default', help='print the default python version', action='store_true', dest='default') parser.add_option('-s', '--supported', help='print the supported python versions', action='store_true', dest='supported') parser.add_option('-r', '--requested', help='print the python versions requested by a build; the argument is either the name of a control file or the value of the X(S)-Python-Version attribute', action='store_true', dest='requested') parser.add_option('-i', '--installed', help='print the installed supported python versions', action='store_true', dest='installed') parser.add_option('-v', '--version', help='print just the version number(s)', default=False, action='store_true', dest='version_only') opts, args = parser.parse_args() program = os.path.basename(sys.argv[0]) if opts.default and len(args) == 0: try: print default_version(opts.version_only) except ValueError, msg: print "%s:" % program, msg sys.exit(1) elif opts.supported and len(args) == 0: print ' '.join(supported_versions(opts.version_only)) elif opts.installed and len(args) == 0: print ' '.join(installed_versions(opts.version_only)) elif opts.requested and len(args) <= 1: if len(args) == 0: versions = 'debian/control' else: versions = args[0] try: if os.path.isfile(versions): fn = versions try: vstring = extract_pyversion_attribute(fn, 'Source') vs = requested_versions(vstring, opts.version_only) except ControlFileValueError: sys.stderr.write("%s: not a control file: %s, " \ % (program, fn)) sys.exit(1) except MissingVersionValueError: fn = os.path.join(os.path.dirname(fn), 'pyversions') sys.stderr.write("%s: missing X(S)-Python-Version in control file, fall back to %s\n" \ % (program, fn)) try: vstring = extract_pyversion_attribute_bis(fn) vs = requested_versions_bis(vstring, opts.version_only) except IOError: sys.stderr.write("%s: missing debian/pyversions file, fall back to supported versions\n" \ % program) vs = supported_versions(opts.version_only) except ValueError, e: sys.stderr.write("%s: %s\n" % (program, e)) sys.exit(4) else: vs = requested_versions(versions, opts.version_only) print ' '.join(vs) except ValueError, msg: sys.stderr.write("%s: %s\n" % (program, msg)) sys.exit(1) else: sys.stderr.write("usage: %s %s\n" % (program, usage)) sys.exit(1) if __name__ == '__main__': main() python-defaults-debian/debian/rules0000755000000000000000000003127413265131666014634 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. export SHELL = /bin/bash # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) changelog_values := $(shell dpkg-parsechangelog \ | awk '/^(Version|Source):/ {print $$2}') PKGSOURCE := $(word 1, $(changelog_values)) PKGVERSION := $(word 2, $(changelog_values)) distribution := $(shell dpkg-vendor --query Vendor) distrelease := $(shell lsb_release -cs) export VER=2.7 export NVER=2.8 export PVER=python2.7 PREVVER := $(shell awk '/^python/ && NR > 1 {print substr($$2,2,length($$2)-2); exit}' debian/changelog) # first version with Multi-Arch: allowed PREVVER := 2.7.15~rc1-1~ # not yet allowed ma_allowed = yes ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy lucid maverick natty oneiric precise quantal raring saucy trusty)) bd_i586 = dpkg-dev (>= 1.17.11), python2.7:any (>= 2.7.11-11) endif PWD := $(shell pwd) d := debian/tmp scriptdir = usr/share/lib/python$(VER) scriptdir = usr/share/python$(VER) scriptdir = usr/lib/python$(VER) rst2html = rst2html with_doc = yes ifneq ($(with_doc),yes) NOPKGS = -Npython-doc endif build: stamp-build build-arch: stamp-build build-indep: stamp-build stamp-build: touch stamp-build stamp-doc-policy: xsltproc --nonet --novalid debian/html.xsl debian/python-policy.dbk \ | w3m -o display_charset=UTF-8 -cols 70 -dump -no-graph -T text/html > python-policy.txt mv -f python-policy.txt debian/ rm -rf debian/python-policy.html mkdir python-policy.html ( cd python-policy.html; xsltproc --nonet --novalid ../debian/chunk.xsl ../debian/python-policy.dbk ) mv -f python-policy.html debian/ make -C pydist touch stamp-doc-policy stamp-doc: stamp-doc-policy touch stamp-doc control-file: sed -e "s/@PVER@/$(PVER)/g" \ -e "s/@NVER@/$(NVER)/g" \ -e "s/@VER@/$(VER)/g" \ -e "s/@PREVVER@/$(PREVVER)/g" \ -e "s/@bd_i586@/$(bd_i586)/g" \ debian/control.tmp ifeq ($(distribution),Ubuntu) ifneq (,$(findstring ubuntu, $(PKGVERSION))) m='Ubuntu Developers '; \ sed -i "/^Maintainer:/s/\(.*\)/Maintainer: $$m\nXSBC-Original-\1/" \ debian/control.tmp endif endif [ -e debian/control ] \ && cmp -s debian/control debian/control.tmp \ && rm -f debian/control.tmp && exit 0; \ mv debian/control.tmp debian/control faqs = index general programming library extending windows gui installed get-faq: # Note: This rule is broken due to web site reorg at python.org rm -rf faq mkdir faq cd faq && \ wget -nv $(foreach p,$(faqs),http://python.org/doc/faq/$(p).ht) sed 's,\<\([a-zA-Z0-9]*\.html\)\>,faq/\1,' faq/index.ht \ | awk '/^Translations$$/ {exit} {print}' > faq/FAQ.ht ( \ echo ''; \ echo 'This is a local copy of the online FAQ located at'; \ echo 'http://python.org/doc/faq.'; \ echo "The copy was fetched and generated in `date '+%B %Y'`."; \ ) >> faq/FAQ.ht rm -f faq/index.ht make-faq: set -e; \ cd faq && \ for p in *.ht; do \ p=`basename $$p .ht`; \ echo $(rst2html) $$p.ht $$p.html; \ awk 'NR > 2' $$p.ht > $$p.ht2; \ $(rst2html) $$p.ht2 $$p.html; \ rm -f $$p.ht2; \ done MANPAGES ?= dh_python2.1 pycompile.1 pyclean.1 %.1: %.rst rst2man $< > $@ # Manually run this rule if there is a need to update the dh_python2 man pages make-man: $(MANPAGES) cd pydist && \ rst2html README.PyDist > README.PyDist.html clean: control-file dh_testdir dh_testroot rm -f stamp-* rm -f patch-stamp* rm -f debian/python-policy.txt rm -rf debian/python-policy.html set -e;\ for f in debian/*.in; do \ f2=`echo $$f | sed "s,PVER,$(PVER),g;s/VER/$(VER)/g;s,\.in$$,,"`; \ if [ $$f2 != debian/control ]; then \ rm -f $$f2; \ fi; \ done rm -f debian/*.py[co] make clean dh_clean stamp-control: : # We have to prepare the various control files set -e;\ for f in debian/*.in; do \ f2=`echo $$f | sed "s,PVER,$(PVER),g;s/VER/$(VER)/g;s,\.in$$,,"`; \ if [ $$f2 != debian/control ]; then \ sed -e "s/@PVER@/$(PVER)/g;s/@VER@/$(VER)/g" \ -e "s/@PRIORITY@/$(PRIORITY)/g" \ -e "s,@SCRIPTDIR@,/$(scriptdir),g" \ <$$f >$$f2; \ fi; \ done install: build stamp-dh_python stamp-install stamp-install: stamp-build control-file stamp-control dh_testdir dh_testroot dh_installdirs usr/share/doc/python/faq dh_install set -e; \ cd faq && \ for p in *.ht; do \ p=`basename $$p .ht`; \ cp $$p.html ../debian/python/usr/share/doc/python/faq/; \ done mv debian/python/usr/share/doc/python/faq/FAQ.html \ debian/python/usr/share/doc/python/ touch stamp-install stamp-dh_python: dh_testdir dh_testroot dh_installdirs -make check_versions DESTDIR=debian/python PREFIX=/usr make install-dev DESTDIR=debian/python-minimal PREFIX=/usr make install-runtime # disabled by default, run manually if you want to update it # (requires apt-file and network connection) #make -C pydist dist_fallback touch $@ # Build architecture-independent files here. binary-indep: build install stamp-doc dh_testdir -i dh_testroot -i dh_installman -i ifeq ($(with_doc),yes) dh_installdocs -ppython-doc debian/README.Debian dh_installchangelogs -ppython-doc mkdir -p debian/python-doc/usr/share/doc/python ln -sf ../python$(VER)-doc/html \ debian/python-doc/usr/share/doc/python/html mkdir -p debian/python-doc/usr/share/doc/python-doc ln -sf ../python$(VER)-doc/html \ debian/python-doc/usr/share/doc/python-doc/html endif # dh_installdebconf -i $(NOPKGS) dh_lintian -i dh_installdocs -i $(NOPKGS) --all debian/README.Debian dh_installchangelogs -i $(NOPKGS) dh_compress -i $(NOPKGS) dh_fixperms -i $(NOPKGS) dh_installdeb -i $(NOPKGS) dh_gencontrol -i $(NOPKGS) dh_md5sums -i $(NOPKGS) dh_builddeb -i $(NOPKGS) # Build architecture-dependent files here. binary-arch: build install stamp-doc dh_testdir -a dh_testroot -a dh_installman -a : # provide the python and python.1 defaults mkdir -p debian/python-minimal/usr/bin ln -sf python$(VER) debian/python-minimal/usr/bin/python ln -sf python$(VER) debian/python-minimal/usr/bin/python2 mkdir -p debian/python-minimal/usr/share/man/man1 ln -sf python$(VER).1.gz \ debian/python-minimal/usr/share/man/man1/python.1.gz ln -sf python$(VER).1.gz \ debian/python-minimal/usr/share/man/man1/python2.1.gz : # mkdir -p debian/python-minimal/usr/share/python cp -p debian/debian_defaults \ debian/python-minimal/usr/share/python/ install -m 755 debian/pyversions.py \ debian/python-minimal/usr/share/python/ install -m 644 debian/pyversions.1 \ debian/python-minimal/usr/share/man/man1/ dh_link -ppython-minimal /usr/share/python/pyversions.py /usr/bin/pyversions # install -m 755 debian/pycompile \ # debian/python-minimal/usr/bin/ # install -m 755 debian/pyclean \ # debian/python-minimal/usr/bin/ # mkdir debian/python-minimal/usr/share/python-central # cp -p debian/python.pycentral debian/python-minimal/usr/share/python-central/ mkdir -p debian/python/usr/bin ln -sf pydoc$(VER) debian/python/usr/bin/pydoc ln -sf pygettext$(VER) debian/python/usr/bin/pygettext ln -sf pdb$(VER) debian/python/usr/bin/pdb mkdir -p debian/python/usr/share/python install -m 644 debian/python.mk \ debian/python/usr/share/python/ mkdir -p debian/python/usr/share/man/man1 ln -sf pydoc$(VER).1.gz \ debian/python/usr/share/man/man1/pydoc.1.gz ln -sf pygettext$(VER).1.gz \ debian/python/usr/share/man/man1/pygettext.1.gz ln -sf pdb$(VER).1.gz \ debian/python/usr/share/man/man1/pdb.1.gz mkdir -p debian/python/usr/share/doc/python cp -a debian/python-policy.{html,dbk,txt} \ debian/python/usr/share/doc/python/ mkdir -p debian/python/usr/share/pixmaps ln -sf python$(VER).xpm debian/python/usr/share/pixmaps/python.xpm : # add symlinks to policy files mkdir -p debian/python/usr/share/doc/python$(VER) for ext in html dbk.gz txt.gz; do \ ln -sf ../python/python-policy.$$ext \ debian/python/usr/share/doc/python$(VER)/python-policy.$$ext; \ done mkdir -p debian/python/usr/share/apps/konsole cp -p debian/python.desktop debian/python/usr/share/apps/konsole/ : # provide the python-config default mkdir -p debian/python-dev/usr/bin ln -sf python$(VER)-config debian/python-dev/usr/bin/python-config ln -sf python$(VER)-config debian/python-dev/usr/bin/python2-config mkdir -p debian/python-dev/usr/share/man/man1 ln -sf python$(VER)-config.1.gz \ debian/python-dev/usr/share/man/man1/python-config.1.gz ln -sf python$(VER)-config.1.gz \ debian/python-dev/usr/share/man/man1/python2-config.1.gz : # provide pkgconfig defaults mkdir -p debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig ln -sf python-$(VER).pc debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python.pc ln -sf python.pc debian/python-dev/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python2.pc mkdir -p debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig ln -sf python-$(VER)-dbg.pc debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python-dbg.pc ln -sf python-dbg.pc debian/python-dbg/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/python2-dbg.pc : # provide the python-dbg and python-dbg.1 defaults mkdir -p debian/python-dbg/usr/bin ln -sf python$(VER)-dbg debian/python-dbg/usr/bin/python-dbg ln -sf python$(VER)-dbg debian/python-dbg/usr/bin/python2-dbg ln -sf python$(VER)-dbg-config debian/python-dbg/usr/bin/python-dbg-config ln -sf python$(VER)-dbg-config debian/python-dbg/usr/bin/python2-dbg-config mkdir -p debian/python-dbg/usr/share/man/man1 ln -sf python$(VER)-dbg.1.gz \ debian/python-dbg/usr/share/man/man1/python-dbg.1.gz ln -sf python$(VER)-dbg.1.gz \ debian/python-dbg/usr/share/man/man1/python2-dbg.1.gz ln -sf python$(VER)-dbg-config.1.gz \ debian/python-dbg/usr/share/man/man1/python-dbg-config.1.gz ln -sf python$(VER)-dbg-config.1.gz \ debian/python-dbg/usr/share/man/man1/python2-dbg-config.1.gz mkdir -p debian/python-dbg/usr/share/doc/python ln -sf ../python$(VER)/SpecialBuilds.txt.gz \ debian/python-dbg/usr/share/doc/python/SpecialBuilds.txt.gz ln -sf ../python$(VER)/README.debug \ debian/python-dbg/usr/share/doc/python/README.debug mkdir -p debian/python/usr/lib/valgrind cp -p debian/valgrind-python.supp \ debian/python/usr/lib/valgrind/python.supp : # provide the DEB_HOST_GNU_TYPE/DEB_HOST_MULTIRACH python-config defaults mkdir -p debian/libpython-dev/usr/bin ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-config \ debian/libpython-dev/usr/bin/$(DEB_HOST_MULTIARCH)-python-config mkdir -p debian/libpython-dev/usr/share/man/man1 ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-config.1.gz \ debian/libpython-dev/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-python-config.1.gz ifneq ($(DEB_HOST_MULTIARCH),$(DEB_HOST_GNU_TYPE)) ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-config \ debian/libpython-dev/usr/bin/$(DEB_HOST_GNU_TYPE)-python-config ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-config.1.gz \ debian/libpython-dev/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-python-config.1.gz endif mkdir -p debian/libpython-dbg/usr/bin ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-dbg-config \ debian/libpython-dbg/usr/bin/$(DEB_HOST_MULTIARCH)-python-dbg-config mkdir -p debian/libpython-dbg/usr/share/man/man1 ln -sf $(DEB_HOST_MULTIARCH)-python$(VER)-dbg-config.1.gz \ debian/libpython-dbg/usr/share/man/man1/$(DEB_HOST_MULTIARCH)-python-dbg-config.1.gz ifneq ($(DEB_HOST_MULTIARCH),$(DEB_HOST_GNU_TYPE)) ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-dbg-config \ debian/libpython-dbg/usr/bin/$(DEB_HOST_GNU_TYPE)-python-dbg-config ln -sf $(DEB_HOST_GNU_TYPE)-python$(VER)-dbg-config.1.gz \ debian/libpython-dbg/usr/share/man/man1/$(DEB_HOST_GNU_TYPE)-python-dbg-config.1.gz endif dh_lintian -a dh_installdocs -a $(NOPKGS) --all debian/README.Debian dh_installchangelogs -a $(NOPKGS) for p in all all-dev all-dbg dbg dev; do \ p=python-$$p; \ rm -rf debian/$$p/usr/share/doc/$$p; \ ln -sf python debian/$$p/usr/share/doc/$$p; \ done rm -rf debian/libpython-all-dev/usr/share/doc/libpython-all-dev ln -sf libpython-dev debian/libpython-all-dev/usr/share/doc/libpython-all-dev rm -rf debian/libpython-all-dbg/usr/share/doc/libpython-all-dbg ln -sf libpython-dbg debian/libpython-all-dbg/usr/share/doc/libpython-all-dbg dh_compress -a $(NOPKGS) dh_fixperms -a $(NOPKGS) dh_installdeb -a $(NOPKGS) dh_gencontrol -a $(NOPKGS) dh_md5sums -a $(NOPKGS) dh_builddeb -a $(NOPKGS) # Build architecture-dependent files here. binary-arch: build install # nothing to do binary: binary-indep binary-arch .PHONY: control-file configure build clean binary-indep binary-arch binary install # Local Variables: # mode: makefile # end: python-defaults-debian/debian/source.lintian-overrides0000644000000000000000000000106013212464747020423 0ustar # this source package provides these packages so it cannot depend on them python-defaults source: dbg-package-missing-depends python-all-dbg python-defaults source: dbg-package-missing-depends python-dbg python-defaults source: dbg-package-missing-depends libpython-all-dbg python-defaults source: dbg-package-missing-depends libpython-dbg # it's upstream software, just splitted out. python-defaults source: native-package-with-dash-version # yes, that's going to be away as the second-last package ... python-defaults source: python-foo-but-no-python3-foo python-defaults-debian/debian/valgrind-python.supp0000644000000000000000000001734512714076756017623 0ustar # # This is a valgrind suppression file that should be used when using valgrind. # # --------------------------------------------------------------------------- # Debian note: # The file Misc/valgrind-python.supp is placed in an modified form into the # directory /usr/lib/valgrind as python.supp. There's no need to to add it # with the --suppressions option. # The unmodified file is found in /usr/share/doc/python2.6/ # # The python2.6-dbg build has been compiled with -DPy_USING_MEMORY_DEBUGGER # so you can safely comment out the suppressions for PyObject_Free and # PyObject_Realloc. # --------------------------------------------------------------------------- # Here's an example of running valgrind: # # cd python/dist/src # valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \ # ./python -E -tt ./Lib/test/regrtest.py -u bsddb,network # # You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER # to use the preferred suppressions with Py_ADDRESS_IN_RANGE. # # If you do not want to recompile Python, you can uncomment # suppressions for PyObject_Free and PyObject_Realloc. # # See /usr/share/doc/python2.6/README.valgrind for more information. # all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Addr4 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Invalid read of size 4 Memcheck:Value4 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) Memcheck:Value8 fun:Py_ADDRESS_IN_RANGE } { ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value Memcheck:Cond fun:Py_ADDRESS_IN_RANGE } # # Leaks (including possible leaks) # Hmmm, I wonder if this masks some real leaks. I think it does. # Will need to fix that. # { Suppress leaking the GIL. Happens once per process, see comment in ceval.c. Memcheck:Leak fun:malloc fun:PyThread_allocate_lock fun:PyEval_InitThreads } { Suppress leaking the GIL after a fork. Memcheck:Leak fun:malloc fun:PyThread_allocate_lock fun:PyEval_ReInitThreads } { Suppress leaking the autoTLSkey. This looks like it shouldn't leak though. Memcheck:Leak fun:malloc fun:PyThread_create_key fun:_PyGILState_Init fun:Py_InitializeEx fun:Py_Main } { Hmmm, is this a real leak or like the GIL? Memcheck:Leak fun:malloc fun:PyThread_ReInitTLS } { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:realloc fun:_PyObject_GC_Resize fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:malloc fun:_PyObject_GC_New fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } { Handle PyMalloc confusing valgrind (possibly leaked) Memcheck:Leak fun:malloc fun:_PyObject_GC_NewVar fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING } # # Non-python specific leaks # { Handle pthread issue (possibly leaked) Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate_tls_storage fun:_dl_allocate_tls } { Handle pthread issue (possibly leaked) Memcheck:Leak fun:memalign fun:_dl_allocate_tls_storage fun:_dl_allocate_tls } ###{ ### ADDRESS_IN_RANGE/Invalid read of size 4 ### Memcheck:Addr4 ### fun:PyObject_Free ###} ### ###{ ### ADDRESS_IN_RANGE/Invalid read of size 4 ### Memcheck:Value4 ### fun:PyObject_Free ###} ### ###{ ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ### Memcheck:Addr8 ### fun:PyObject_Free ###} ### ###{ ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ### Memcheck:Value8 ### fun:PyObject_Free ###} ### ###{ ### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value ### Memcheck:Cond ### fun:PyObject_Free ###} ###{ ### ADDRESS_IN_RANGE/Invalid read of size 4 ### Memcheck:Addr4 ### fun:PyObject_Realloc ###} ### ###{ ### ADDRESS_IN_RANGE/Invalid read of size 4 ### Memcheck:Value4 ### fun:PyObject_Realloc ###} ### ###{ ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ### Memcheck:Addr8 ### fun:PyObject_Realloc ###} ### ###{ ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 ### Memcheck:Value8 ### fun:PyObject_Realloc ###} ### ###{ ### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value ### Memcheck:Cond ### fun:PyObject_Realloc ###} ### ### All the suppressions below are for errors that occur within libraries ### that Python uses. The problems to not appear to be related to Python's ### use of the libraries. ### { Generic ubuntu ld problems Memcheck:Addr8 obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so } { Generic gentoo ld problems Memcheck:Cond obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so obj:/lib/ld-2.3.4.so } { DBM problems, see test_dbm Memcheck:Param write(buf) fun:write obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_close } { DBM problems, see test_dbm Memcheck:Value8 fun:memmove obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { DBM problems, see test_dbm Memcheck:Cond obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { DBM problems, see test_dbm Memcheck:Cond fun:memmove obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 obj:/usr/lib/libdb1.so.2 fun:dbm_store fun:dbm_ass_sub } { GDBM problems, see test_gdbm Memcheck:Param write(buf) fun:write fun:gdbm_open } { ZLIB problems, see test_gzip Memcheck:Cond obj:/lib/libz.so.1.2.3.3 obj:/lib/libz.so.1.2.3.3 fun:deflate } { Avoid problems w/readline doing a putenv and leaking on exit Memcheck:Leak fun:malloc fun:xmalloc fun:sh_set_lines_and_columns fun:_rl_get_screen_size fun:_rl_init_terminal_io obj:/lib/libreadline.so.6.1 fun:rl_initialize } ### ### These occur from somewhere within the SSL, when running ### test_socket_sll. They are too general to leave on by default. ### ###{ ### somewhere in SSL stuff ### Memcheck:Cond ### fun:memset ###} ###{ ### somewhere in SSL stuff ### Memcheck:Value4 ### fun:memset ###} ### ###{ ### somewhere in SSL stuff ### Memcheck:Cond ### fun:MD5_Update ###} ### ###{ ### somewhere in SSL stuff ### Memcheck:Value4 ### fun:MD5_Update ###} # # All of these problems come from using test_socket_ssl # { from test_socket_ssl Memcheck:Cond fun:BN_bin2bn } { from test_socket_ssl Memcheck:Cond fun:BN_num_bits_word } { from test_socket_ssl Memcheck:Value4 fun:BN_num_bits_word } { from test_socket_ssl Memcheck:Cond fun:BN_mod_exp_mont_word } { from test_socket_ssl Memcheck:Cond fun:BN_mod_exp_mont } { from test_socket_ssl Memcheck:Param write(buf) fun:write obj:/usr/lib/libcrypto.so.0.9.8 } { from test_socket_ssl Memcheck:Cond fun:RSA_verify } { from test_socket_ssl Memcheck:Value4 fun:RSA_verify } { from test_socket_ssl Memcheck:Value4 fun:DES_set_key_unchecked } { from test_socket_ssl Memcheck:Value4 fun:DES_encrypt2 } { from test_socket_ssl Memcheck:Cond obj:/usr/lib/libssl.so.0.9.8 } { from test_socket_ssl Memcheck:Value4 obj:/usr/lib/libssl.so.0.9.8 } { from test_socket_ssl Memcheck:Cond fun:BUF_MEM_grow_clean } { from test_socket_ssl Memcheck:Cond fun:memcpy fun:ssl3_read_bytes } { from test_socket_ssl Memcheck:Cond fun:SHA1_Update } { from test_socket_ssl Memcheck:Value4 fun:SHA1_Update } python-defaults-debian/debpython/0000755000000000000000000000000013025572412014307 5ustar python-defaults-debian/debpython/__init__.py0000644000000000000000000000000012057417145016413 0ustar python-defaults-debian/debpython/debhelper.py0000644000000000000000000002117612057417145016627 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import logging from os import makedirs, chmod from os.path import exists, join, dirname log = logging.getLogger(__name__) class DebHelper(object): """Reinvents the wheel / some dh functionality (Perl is ugly ;-P)""" def __init__(self, options): self.options = options self.packages = {} self.python_version = None source_section = True binary_package = None pkgs = options.package skip_pkgs = options.no_package try: fp = open('debian/control', 'r') except IOError: raise Exception('cannot find debian/control file') xspv = xpv = False for line in fp: if not line.strip(): source_section = False binary_package = None continue if binary_package: if binary_package.startswith('python3'): continue if pkgs and binary_package not in pkgs: continue if skip_pkgs and binary_package in skip_pkgs: continue if line.startswith('Architecture:'): arch = line[13:].strip() # TODO: if arch doesn't match current architecture: #del self.packages[binary_package] self.packages[binary_package]['arch'] = arch continue elif line.startswith('Package:'): binary_package = line[8:].strip() if binary_package.startswith('python3'): log.debug('skipping Python 3.X package: %s', binary_package) continue if pkgs and binary_package not in pkgs: continue if skip_pkgs and binary_package in skip_pkgs: continue self.packages[binary_package] = {'substvars': {}, 'autoscripts': {}, 'rtupdates': [], 'arch': 'any'} elif line.startswith('Source:'): self.source_name = line[7:].strip() elif source_section: if line.lower().startswith('xs-python-version:'): xspv = True if not self.python_version: self.python_version = line[18:].strip() if line.lower().startswith('x-python-version:'): xpv = True self.python_version = line[17:].strip() if xspv and xpv: log.error('Please remove XS-Python-Version from debian/control') log.debug('source=%s, binary packages=%s', self.source_name, \ self.packages.keys()) def addsubstvar(self, package, name, value): """debhelper's addsubstvar""" self.packages[package]['substvars'].setdefault(name, []).append(value) def autoscript(self, package, when, template, args): """debhelper's autoscript""" self.packages[package]['autoscripts'].setdefault(when, {})\ .setdefault(template, []).append(args) def add_rtupdate(self, package, value): self.packages[package]['rtupdates'].append(value) def save_autoscripts(self): for package, settings in self.packages.iteritems(): autoscripts = settings.get('autoscripts') if not autoscripts: continue for when, templates in autoscripts.iteritems(): fn = "debian/%s.%s.debhelper" % (package, when) if exists(fn): data = open(fn, 'r').read() else: data = '' new_data = '' for tpl_name, args in templates.iteritems(): for i in args: # try local one first (useful while testing dh_python2) fpath = join(dirname(__file__), '..', "autoscripts/%s" % tpl_name) if not exists(fpath): fpath = "/usr/share/debhelper/autoscripts/%s" % tpl_name tpl = open(fpath, 'r').read() if self.options.compile_all and args: # TODO: should args be checked to contain dir name? tpl = tpl.replace('#PACKAGE#', '') else: tpl = tpl.replace('#PACKAGE#', package) tpl = tpl.replace('#ARGS#', i) if tpl not in data and tpl not in new_data: new_data += "\n%s" % tpl if new_data: data += "\n# Automatically added by dh_python2:" +\ "%s\n# End automatically added section\n" % new_data fp = open(fn, 'w') fp.write(data) fp.close() def save_substvars(self): for package, settings in self.packages.iteritems(): substvars = settings.get('substvars') if not substvars: continue fn = "debian/%s.substvars" % package if exists(fn): data = open(fn, 'r').read() else: data = '' for name, values in substvars.iteritems(): p = data.find("%s=" % name) if p > -1: # parse the line and remove it from data e = data[p:].find('\n') line = data[p + len("%s=" % name):\ p + e if e > -1 else None] items = [i.strip() for i in line.split(',') if i] if e > -1 and data[p + e:].strip(): data = "%s\n%s" % (data[:p], data[p + e:]) else: data = data[:p] else: items = [] for j in values: if j not in items: items.append(j) if items: if data: data += '\n' data += "%s=%s\n" % (name, ', '.join(items)) data = data.replace('\n\n', '\n') if data: fp = open(fn, 'w') fp.write(data) fp.close() def save_rtupdate(self): for package, settings in self.packages.iteritems(): pkg_arg = '' if self.options.compile_all else "-p %s" % package values = settings.get('rtupdates') if not values: continue d = "debian/%s/usr/share/python/runtime.d" % package if not exists(d): makedirs(d) fn = "%s/%s.rtupdate" % (d, package) if exists(fn): data = open(fn, 'r').read() else: data = "#! /bin/sh\nset -e" for dname, args in values: cmd = 'if [ "$1" = rtupdate ]; then' +\ "\n\tpyclean %s %s" % (pkg_arg, dname) +\ "\n\tpycompile %s %s %s\nfi" % (pkg_arg, args, dname) if cmd not in data: data += "\n%s" % cmd if data: fp = open(fn, 'w') fp.write(data) fp.close() chmod(fn, 0755) def save(self): self.save_substvars() self.save_autoscripts() self.save_rtupdate() python-defaults-debian/debpython/depends.py0000644000000000000000000001605213025572412016307 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import logging from debpython.pydist import parse_pydep, guess_dependency from debpython.version import DEFAULT, SUPPORTED, debsorted, vrepr, vrange_str # minimum version required for pycompile/pyclean MINPYCDEP = 'python:any (>= 2.6.6-7~)' log = logging.getLogger(__name__) class Dependencies(object): """Store relations (dependencies, etc.) between packages.""" def __init__(self, package): self.package = package self.depends = [] self.recommends = [] self.suggests = [] self.enhances = [] self.breaks = [] self.rtscripts = [] def export_to(self, dh): """Fill in debhelper's substvars.""" for i in sorted(self.depends): dh.addsubstvar(self.package, 'python:Depends', i) for i in sorted(self.recommends): dh.addsubstvar(self.package, 'python:Recommends', i) for i in sorted(self.suggests): dh.addsubstvar(self.package, 'python:Suggests', i) for i in sorted(self.enhances): dh.addsubstvar(self.package, 'python:Enhances', i) for i in sorted(self.breaks): dh.addsubstvar(self.package, 'python:Breaks', i) for i in self.rtscripts: dh.add_rtupdate(self.package, i) def __str__(self): return "D=%s; R=%s; S=%s; E=%s, B=%s; RT=%s" % (self.depends, \ self.recommends, self.suggests, self.enhances, \ self.breaks, self.rtscripts) def depend(self, value): if value and value not in self.depends: self.depends.append(value) def recommend(self, value): if value and value not in self.recommends: self.recommends.append(value) def suggest(self, value): if value and value not in self.suggests: self.suggests.append(value) def enhance(self, value): if value and value not in self.enhances: self.enhances.append(value) def break_(self, value): if value and value not in self.breaks: self.breaks.append(value) def rtscript(self, value): if value not in self.rtscripts: self.rtscripts.append(value) def parse(self, stats, options): log.debug('generating dependencies for package %s', self.package) pub_vers = sorted(stats['public_vers'].union(stats['ext'])) if pub_vers: dbgpkg = self.package.endswith('-dbg') tpl = 'python-dbg' if dbgpkg else 'python' minv = pub_vers[0] maxv = pub_vers[-1] # generating "python2.X | python2.Y | python2.Z" dependencies # disabled (see #625740): #if dbgpkg: # tpl2 = 'python%d.%d-dbg' #else: # tpl2 = 'python%d.%d' #self.depend(' | '.join(tpl2 % i for i in debsorted(pub_vers))) # additional Depends to block python package transitions if minv <= DEFAULT: self.depend("%s (>= %d.%d)" % \ (tpl, minv[0], minv[1])) if maxv >= DEFAULT: self.depend("%s (<< %d.%d)" % \ (tpl, maxv[0], maxv[1] + 1)) # make sure pycompile binary is available if stats['compile']: self.depend(MINPYCDEP) for interpreter, version in stats['shebangs']: self.depend("%s:any" % interpreter) for private_dir, details in stats['private_dirs'].iteritems(): versions = list(v for i, v in details.get('shebangs', []) if v) for v in versions: if v in SUPPORTED: self.depend("python%d.%d:any" % v) else: log.info('dependency on python%s (from shebang) ignored' ' - it\'s not supported anymore', vrepr(v)) # /usr/bin/python shebang → add python to Depends if any(True for i, v in details.get('shebangs', []) if v is None): self.depend('python:any') if details.get('compile', False): self.depend(MINPYCDEP) args = '' vr = options.vrange if len(versions) == 1: # only one version from shebang args += "-V %s" % vrepr(versions[0]) elif vr: # if there are no hardcoded versions in shebang or there # are scripts for different Python versions: compile with # default Python version (or the one requested via X-P-V) args += "-V %s" % vrange_str(vr) if vr == (None, None): pass elif vr[0] == vr[1]: self.depend("python%s:any" % vrepr(vr[0])) else: if vr[0]: # minimum version specified self.depend("python:any (>= %s)" % vrepr(vr[0])) if vr[1]: # maximum version specified self.depend("python:any (<< %d.%d)" % \ (vr[1][0], vr[1][1] + 1)) for pattern in options.regexpr or []: args += " -X '%s'" % pattern.replace("'", r"'\''") self.rtscript((private_dir, args)) if options.guess_deps: for fn in stats['requires.txt']: # TODO: should options.recommends and options.suggests be # removed from requires.txt? for i in parse_pydep(fn): self.depend(i) # add dependencies from --depends for item in options.depends or []: self.depend(guess_dependency(item)) # add dependencies from --recommends for item in options.recommends or []: self.recommend(guess_dependency(item)) # add dependencies from --suggests for item in options.suggests or []: self.suggest(guess_dependency(item)) log.debug(self) python-defaults-debian/debpython/files.py0000644000000000000000000000575612057417145016005 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import logging from os import walk from os.path import abspath, isfile, join from subprocess import Popen, PIPE log = logging.getLogger(__name__) def from_directory(dname, extensions=('.py',)): """Generate *.py file names available in given directory.""" extensions = tuple(extensions) # .endswith doesn't like list if isinstance(dname, (list, tuple)): for item in dname: for fn in from_directory(item): yield fn elif isfile(dname) and dname.endswith(extensions): yield dname else: for root, dirs, file_names in walk(abspath(dname)): for fn in file_names: if fn.endswith(extensions): yield join(root, fn) def from_package(package_name, extensions=('.py',)): """Generate *.py file names available in given package.""" extensions = tuple(extensions) # .endswith doesn't like list process = Popen("/usr/bin/dpkg -L %s" % package_name,\ shell=True, stdout=PIPE) stdout, stderr = process.communicate() if process.returncode != 0: raise Exception("cannot get content of %s" % package_name) for line in stdout.splitlines(): if line.endswith(extensions): yield line def filter_directory(files, dname): """Generate *.py file names that match given directory.""" for fn in files: if fn.startswith(dname): yield fn def filter_public(files, versions): """Generate *.py file names that match given versions.""" versions_str = set("%d.%d" % i for i in versions) for fn in files: if fn.startswith('/usr/lib/python') and \ fn[15:18] in versions_str: yield fn def filter_out_ext(files, extensions): """Removes files with matching extensions from given generator.""" for fn in files: if not fn.endswith(extensions): yield fn python-defaults-debian/debpython/namespace.py0000644000000000000000000001372512057417145016632 0ustar # -*- coding: UTF-8 -*- # Copyright © 2011-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import with_statement import logging from os import environ, listdir, remove, rmdir from os.path import dirname, exists, join, getsize, split from subprocess import Popen, PIPE from debpython.pydist import PUBLIC_DIR_RE from debpython.tools import memoize, sitedir log = logging.getLogger(__name__) def parse(fpaths, other=None): """Parse namespace_packages.txt files.""" result = set(other or []) for fpath in fpaths: with open(fpath, 'r') as fp: for line in fp: if line: result.add(line.strip()) return result @memoize def load(package=None): """Return a set of namespaces to regenerate/clean. :param package: limit namespaces to the ones needed by given package """ fpaths = None # DESTDIR is used in tests nsdir = "%s/usr/share/python/ns/" % environ.get('DESTDIR', '') if package: # only one package is processed, no need to load all files fpath = join(nsdir, package) if exists(fpath): fpaths = [fpath] else: # load all files if exists(nsdir): fpaths = [join(nsdir, i) for i in listdir(nsdir)] if fpaths: result = set(i.replace('.', '/') for i in parse(fpaths)) else: result = set() return result def add_namespace_files(files, package=None, action=None): """Add __init__.py files to given generator.""" if action is not None: namespaces = load(package) already_processed = set() removal_candidates = set() for fn in files: yield fn if action is None: continue dpath = dirname(fn) if dpath not in already_processed: already_processed.add(dpath) m = PUBLIC_DIR_RE.match(dpath) if m: public_dir = m.group() while dpath != public_dir: ns_dir = dpath[len(public_dir) + 1:] if ns_dir in namespaces: fpath = join(dpath, '__init__.py') if action is True: try: open(fpath, 'a').close() except Exception: log.error('cannot create %s', fpath) else: yield fpath else: # action is False # postpone it due to dpkg -S call removal_candidates.add(fpath) already_processed.add(dpath) dpath = split(dpath)[0] # now deal with to-be-removed namespace candidates (dpkg -S is expensive) # dpgk -S is used just to be safe (in case some other package is providing # __init__.py file although it's in /usr/share/python/ns dir) if action is False and removal_candidates: process = Popen("/usr/bin/dpkg -S %s 2>/dev/null" % \ ' '.join(removal_candidates), shell=True, stdout=PIPE) # FIXME: len(search_string) > 131072 stdout, stderr = process.communicate() for line in stdout.splitlines(): ns = line.split(': ', 1)[1] if ns in removal_candidates: removal_candidates.remove(ns) for fpath in removal_candidates: try: remove(fpath) except (IOError, OSError), e: log.error('cannot remove %s', fpath) log.debug(e) else: yield fpath def remove_from_package(package, namespaces, versions): """Remove empty __init__.py files for requested namespaces.""" if not isinstance(namespaces, set): namespaces = set(namespaces) keep = set() for ns in namespaces: for version in versions: fpath = join(sitedir(version, package), *ns.split('.')) fpath = join(fpath, '__init__.py') if not exists(fpath): continue if getsize(fpath) != 0: log.warning('file not empty, cannot share %s namespace', ns) keep.add(ns) break # return a set of namespaces that should be handled by pycompile/pyclean result = namespaces - keep # remove empty __init__.py files, if available for ns in result: for version in versions: dpath = join(sitedir(version, package), *ns.split('.')) fpath = join(dpath, '__init__.py') if exists(fpath): remove(fpath) if not listdir(dpath): rmdir(dpath) # clean pyshared dir as well dpath = join('debian', package, 'usr/share/pyshared', *ns.split('.')) fpath = join(dpath, '__init__.py') if exists(fpath): remove(fpath) if not listdir(dpath): rmdir(dpath) return result python-defaults-debian/debpython/option.py0000644000000000000000000000353612057417145016205 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import re import optparse from copy import copy from debpython.version import parse_vrange def parse_version_range(option, opt, value): try: return parse_vrange(value) except ValueError: raise optparse.OptionValueError("version range is invalid: %s" % value) def compile_regexpr(option, opt, value): try: pattern = re.compile(value) except Exception: raise optparse.OptionValueError('regular expression is not valid') return pattern class Option(optparse.Option): TYPES = optparse.Option.TYPES + ('version_range', 'regexpr') TYPE_CHECKER = copy(optparse.Option.TYPE_CHECKER) TYPE_CHECKER['version_range'] = parse_version_range TYPE_CHECKER['regexpr'] = compile_regexpr python-defaults-debian/debpython/pydist.py0000644000000000000000000002425012374331373016205 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import with_statement import logging import os import re from os.path import exists, isdir, join from string import maketrans from subprocess import PIPE, Popen from debpython.version import vrepr, getver, get_requested_versions from debpython.tools import memoize log = logging.getLogger(__name__) PUBLIC_DIR_RE = re.compile(r'.*?/usr/lib/python(\d.\d+)/(site|dist)-packages') PYDIST_RE = re.compile(r""" (?P[A-Za-z][A-Za-z0-9_.\-]*) # Python distribution name \s* (?P(?:-?\d\.\d+(?:-(?:\d\.\d+)?)?)?) # version range \s* (?P(?:[a-z][^;]*)?) # Debian dependency (?: # optional upstream version -> Debian version translator ;\s* (?PPEP386)? # PEP-386 mode \s* (?P(?:s|tr|y).*)? # translator rules )? """, re.VERBOSE) REQUIRES_RE = re.compile(r''' (?P[A-Za-z][A-Za-z0-9_.]*) # Python distribution name \s* (?P(?:\[[^\]]*\])?) # ignored for now \s* (?: # optional minimum/maximum version (?P<=?|>=?|==|!=) \s* (?P(\w|[-.])+) )? ''', re.VERBOSE) def validate(fpath): """Check if pydist file looks good.""" with open(fpath) as fp: for line in fp: line = line.strip('\r\n') if line.startswith('#') or not line: continue if not PYDIST_RE.match(line): log.error('invalid pydist data in file %s: %s', \ fpath.rsplit('/', 1)[-1], line) return False return True @memoize def load(dname='/usr/share/python/dist/', fname='debian/pydist-overrides', fbname='/usr/share/python/dist_fallback'): """Load iformation about installed Python distributions.""" if exists(fname): to_check = [fname] # first one! else: to_check = [] if isdir(dname): to_check.extend(join(dname, i) for i in os.listdir(dname)) if exists(fbname): # fall back generated at python-defaults build time to_check.append(fbname) # last one! result = {} for fpath in to_check: with open(fpath) as fp: for line in fp: line = line.strip('\r\n') if line.startswith('#') or not line: continue dist = PYDIST_RE.search(line) if not dist: raise Exception('invalid pydist line: %s (in %s)' % (line, fpath)) dist = dist.groupdict() name = safe_name(dist['name']) dist['versions'] = get_requested_versions(dist['vrange']) dist['dependency'] = dist['dependency'].strip() if dist['rules']: dist['rules'] = dist['rules'].split(';') else: dist['rules'] = [] result.setdefault(name, []).append(dist) return result def guess_dependency(req, version=None): log.debug('trying to guess dependency for %s (python=%s)', req, vrepr(version) if version else None) if isinstance(version, basestring): version = getver(version) # some upstreams have weird ideas for distribution name... name, rest = re.compile('([^!><= \[]+)(.*)').match(req).groups() req = safe_name(name) + rest data = load() req_d = REQUIRES_RE.match(req) if not req_d: log.info('please ask dh_python2 author to fix REQUIRES_RE ' 'or your upstream author to fix requires.txt') raise Exception('requirement is not valid: %s' % req) req_d = req_d.groupdict() name = req_d['name'] details = data.get(name.lower()) if details: for item in details: if version and version not in item.get('versions', version): # rule doesn't match version, try next one continue if not item['dependency']: return # this requirement should be ignored if item['dependency'].endswith(')'): # no need to translate versions if version is hardcoded in # Debian dependency return item['dependency'] if req_d['version'] and (item['standard'] or item['rules']) and\ req_d['operator'] not in (None, '=='): v = _translate(req_d['version'], item['rules'], item['standard']) return "%s (%s %s)" % (item['dependency'], req_d['operator'], v) else: return item['dependency'] # try dpkg -S query = "'*/%s-?*\.egg-info'" % ci_regexp(safe_name(name)) # TODO: .dist-info if version: query = "%s | grep '/python%s/\|/pyshared/'" % \ (query, vrepr(version)) else: query = "%s | grep '/python2\../\|/pyshared/'" % query log.debug("invoking dpkg -S %s", query) process = Popen("/usr/bin/dpkg -S %s" % query, \ shell=True, stdout=PIPE, stderr=PIPE) stdout, stderr = process.communicate() if process.returncode == 0: result = set() for line in stdout.split('\n'): if not line.strip(): continue result.add(line.split(':')[0]) if len(result) > 1: log.error('more than one package name found for %s dist', name) else: return result.pop() else: log.debug('dpkg -S did not find package for %s: %s', name, stderr) # fall back to python-distname pname = sensible_pname(name) log.info('Cannot find installed package that provides %s. ' 'Using %s as package name. Please add "%s correct_package_name" ' 'line to debian/pydist-overrides to override it if this is incorrect.', name, pname, safe_name(name)) return pname def parse_pydep(fname): public_dir = PUBLIC_DIR_RE.match(fname) if public_dir: ver = public_dir.group(1) else: ver = None result = [] modified = optional_section = False processed = [] with open(fname, 'r') as fp: lines = [i.strip() for i in fp.readlines()] for line in lines: if not line or line.startswith('#'): processed.append(line) continue if line.startswith('['): optional_section = True if optional_section: processed.append(line) continue dependency = guess_dependency(line, ver) if dependency: result.append(dependency) if 'setuptools' in line.lower(): # TODO: or dependency in recommends\ # or dependency in suggests modified = True else: processed.append(line) else: processed.append(line) if modified: with open(fname, 'w') as fp: fp.writelines(i + '\n' for i in processed) return result def safe_name(name): """Emulate distribute's safe_name.""" return re.compile('[^A-Za-z0-9.]+').sub('_', name).lower() def sensible_pname(egg_name): """Guess Debian package name from Egg name.""" egg_name = safe_name(egg_name).replace('_', '-') if egg_name.startswith('python-'): egg_name = egg_name[7:] return "python-%s" % egg_name.lower() def ci_regexp(name): """Return case insensitive dpkg -S regexp.""" return ''.join("[%s%s]" % (i.upper(), i) if i.isalpha() else i for i in name.lower()) PRE_VER_RE = re.compile(r'[-.]?(alpha|beta|rc|dev|a|b|c)') GROUP_RE = re.compile(r'\$(\d+)') def _pl2py(pattern): """Convert Perl RE patterns used in uscan to Python's >>> print _pl2py('foo$3') foo\g<3> """ return GROUP_RE.sub(r'\\g<\1>', pattern) def _translate(version, rules, standard): """Translate Python version into Debian one. >>> _translate('1.C2betac', ['s/c//gi'], None) '1.2beta' >>> _translate('5-fooa1.2beta3-fooD', ... ['s/^/1:/', 's/-foo//g', 's:([A-Z]):+$1:'], 'PEP386') '1:5~a1.2~beta3+D' >>> _translate('x.y.x.z', ['tr/xy/ab/', 'y,z,Z,'], None) 'a.b.a.Z' """ for rule in rules: # uscan supports s, tr and y operations if rule.startswith(('tr', 'y')): # Note: no support for escaped separator in the pattern pos = 1 if rule.startswith('y') else 2 tmp = rule[pos + 1:].split(rule[pos]) version = version.translate(maketrans(tmp[0], tmp[1])) elif rule.startswith('s'): # uscan supports: g, u and x flags tmp = rule[2:].split(rule[1]) pattern = re.compile(tmp[0]) count = 1 if tmp[2:]: flags = tmp[2] if 'g' in flags: count = 0 if 'i' in flags: pattern = re.compile(tmp[0], re.I) version = pattern.sub(_pl2py(tmp[1]), version, count) else: log.warn('unknown rule ignored: %s', rule) if standard == 'PEP386': version = PRE_VER_RE.sub('~\g<1>', version) return version python-defaults-debian/debpython/tools.py0000644000000000000000000002362512057417145016036 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import with_statement import codecs import logging import os import re from cPickle import dumps from glob import glob from os.path import exists, isdir, join, split from shutil import rmtree from subprocess import PIPE, Popen from debpython.version import RANGE_PATTERN, getver, get_requested_versions log = logging.getLogger(__name__) EGGnPTH_RE = re.compile(r'(.*?)(-py\d\.\d(?:-[^.]*)?)?(\.egg-info|\.pth)$') SHEBANG_RE = re.compile(r'^#!\s*(.*?/bin/.*?)(python(2\.\d+)?(?:-dbg)?)(?:\s(.*))?[$\r\n].*') SHAREDLIB_RE = re.compile(r'NEEDED.*libpython(\d\.\d)') INSTALL_RE = re.compile(r""" (?P.+?) # file pattern (?:\s+ # optional Python module name: (?P[A-Za-z][A-Za-z0-9_.]*)? )? \s* # optional version range: (?P%s)?$ """ % RANGE_PATTERN, re.VERBOSE) REMOVE_RE = re.compile(r""" (?P.+?) # file pattern \s* # optional version range: (?P%s)?$ """ % RANGE_PATTERN, re.VERBOSE) def sitedir(version, package=None, gdb=False): """Return path to site-packages directory. >>> sitedir((2, 5)) '/usr/lib/python2.5/site-packages/' >>> sitedir((2, 7), 'python-foo', True) 'debian/python-foo/usr/lib/debug/usr/lib/python2.7/dist-packages/' """ if isinstance(version, basestring): version = tuple(int(i) for i in version.split('.')) if version >= (2, 6): path = "/usr/lib/python%d.%d/dist-packages/" % version else: path = "/usr/lib/python%d.%d/site-packages/" % version if gdb: path = "/usr/lib/debug%s" % path if package: path = "debian/%s%s" % (package, path) return path def relpath(target, link): """Return relative path. >>> relpath('/usr/share/python-foo/foo.py', '/usr/bin/foo', ) '../share/python-foo/foo.py' """ t = target.split('/') l = link.split('/') while l[0] == t[0]: del l[0], t[0] return '/'.join(['..'] * (len(l) - 1) + t) def relative_symlink(target, link): """Create relative symlink.""" return os.symlink(relpath(target, link), link) def fix_shebang(fpath, replacement=None): """Normalize file's shebang. :param replacement: new shebang command (path to interpreter and options) """ try: with open(fpath) as fp: fcontent = fp.readlines() if not fcontent: log.debug('fix_shebang: ignoring empty file: %s', fpath) return None except IOError: log.error('cannot open %s', fpath) return False match = SHEBANG_RE.match(fcontent[0]) if not match: return None if not replacement: path, interpreter, version, argv = match.groups() if path != '/usr/bin': # f.e. /usr/local/* or */bin/env replacement = "/usr/bin/%s" % interpreter if interpreter == 'python2': replacement = '/usr/bin/python' if replacement and argv: replacement += " %s" % argv if replacement: log.info('replacing shebang in %s (%s)', fpath, fcontent[0]) # do not catch IOError here, the file is zeroed at this stage so it's # better to fail dh_python2 with open(fpath, 'w') as fp: fp.write("#! %s\n" % replacement) fp.writelines(fcontent[1:]) return True def shebang2pyver(fpath): """Check file's shebang. :rtype: tuple :returns: pair of Python interpreter string and Python version """ try: with open(fpath) as fp: data = fp.read(32) match = SHEBANG_RE.match(data) if not match: return None res = match.groups() if res[1:3] != (None, None): if res[2]: return res[1], getver(res[2]) return res[1], None except IOError: log.error('cannot open %s', fpath) def so2pyver(fpath): """Return libpython version file is linked to or None. :rtype: tuple :returns: Python version """ cmd = "readelf -Wd '%s'" % fpath process = Popen(cmd, stdout=PIPE, shell=True) match = SHAREDLIB_RE.search(process.stdout.read()) if match: return getver(match.groups()[0]) def clean_egg_name(name): """Remove Python version and platform name from Egg files/dirs. >>> clean_egg_name('python_pipeline-0.1.3_py3k-py3.1.egg-info') 'python_pipeline-0.1.3_py3k.egg-info' >>> clean_egg_name('Foo-1.2-py2.7-linux-x86_64.egg-info') 'Foo-1.2.egg-info' """ match = EGGnPTH_RE.match(name) if match and match.group(2) is not None: return ''.join(match.group(1, 3)) return name class memoize(object): def __init__(self, func): self.func = func self.cache = {} def __call__(self, *args, **kwargs): key = dumps((args, kwargs)) if key not in self.cache: self.cache[key] = self.func(*args, **kwargs) return self.cache[key] def pyinstall(package, vrange): """Install local files listed in pkg.pyinstall files as public modules.""" status = True srcfpath = "./debian/%s.pyinstall" % package if not exists(srcfpath): return status versions = get_requested_versions(vrange) for line in codecs.open(srcfpath, encoding='utf-8'): if not line or line.startswith('#'): continue details = INSTALL_RE.match(line) if not details: status = False log.warn('%s.pyinstall: unrecognized line: %s', package, line) continue details = details.groupdict() if details['module']: details['module'] = details['module'].replace('.', '/') myvers = versions & get_requested_versions(details['vrange']) if not myvers: log.debug('%s.pyinstall: no matching versions for line %s', package, line) continue files = glob(details['pattern']) if not files: status = False log.error('%s.pyinstall: file not found: %s', package, details['pattern']) continue for fpath in files: fpath = fpath.lstrip('/.') if details['module']: dstname = join(details['module'], split(fpath)[1]) elif fpath.startswith('debian/'): dstname = fpath[7:] else: dstname = fpath for version in myvers: dstfpath = join(sitedir(version, package), dstname) dstdir = split(dstfpath)[0] if not exists(dstdir): try: os.makedirs(dstdir) except Exception: log.error('cannot create %s directory', dstdir) return False if exists(dstfpath): try: os.remove(dstfpath) except Exception: status = False log.error('cannot replace %s file', dstfpath) continue try: os.link(fpath, dstfpath) except Exception: status = False log.error('cannot copy %s file to %s', fpath, dstdir) return status def pyremove(package, vrange): """Remove public modules listed in pkg.pyremove file.""" status = True srcfpath = "./debian/%s.pyremove" % package if not exists(srcfpath): return status versions = get_requested_versions(vrange) for line in codecs.open(srcfpath, encoding='utf-8'): if not line or line.startswith('#'): continue details = REMOVE_RE.match(line) if not details: status = False log.warn('%s.pyremove: unrecognized line: %s', package, line) continue details = details.groupdict() myvers = versions & get_requested_versions(details['vrange']) if not myvers: log.debug('%s.pyremove: no matching versions for line %s', package, line) continue for version in myvers: files = glob(sitedir(version, package) + details['pattern']) if not files: log.debug('%s.pyremove: nothing to remove: python%d.%d, %s', package, version, details['pattern']) continue for fpath in files: if isdir(fpath): try: rmtree(fpath) except Exception, e: status = False log.error(e) else: try: os.remove(fpath) except (IOError, OSError), e: status = False log.error(e) return status python-defaults-debian/debpython/version.py0000644000000000000000000002302512254623031016345 0ustar # -*- coding: UTF-8 -*- # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import logging import re from ConfigParser import SafeConfigParser from os import environ from os.path import exists, dirname, join from types import GeneratorType # will be overriden via debian_defaults file few lines later SUPPORTED = [(2, 7),] DEFAULT = (2, 7) RANGE_PATTERN = r'(-)?(\d\.\d+)(?:(-)(\d\.\d+)?)?' RANGE_RE = re.compile(RANGE_PATTERN) log = logging.getLogger(__name__) # try to read debian_defaults and get a list of supported Python versions and # the default one from there _supported = environ.get('DEBPYTHON_SUPPORTED') _default = environ.get('DEBPYTHON_DEFAULT') if not _supported or not _default: _config = SafeConfigParser() _config.read('/usr/share/python/debian_defaults') if not _default: _default = _config.get('DEFAULT', 'default-version')[6:] if not _supported: _supported = _config.get('DEFAULT', 'supported-versions')\ .replace('python', '') try: DEFAULT = tuple(int(i) for i in _default.split('.')) except Exception: log.exception('cannot read debian_defaults') try: SUPPORTED = tuple(tuple(int(j) for j in i.strip().split('.')) for i in _supported.split(',')) except Exception: log.exception('cannot read debian_defaults') def get_requested_versions(vrange=None, available=None): """Return a set of requested and supported Python versions. :param available: if set to `True`, return installed versions only, if set to `False`, return requested versions that are not installed. By default returns all requested versions. :type available: bool >>> sorted(get_requested_versions([(2, 5), (3, 0)])) [(2, 7)] >>> sorted(get_requested_versions('')) == sorted(SUPPORTED) True >>> sorted(get_requested_versions([None, None])) == sorted(SUPPORTED) True >>> get_requested_versions([(5, 0), None]) set([]) """ if isinstance(vrange, basestring): vrange = parse_vrange(vrange) if not vrange or list(vrange) == [None, None]: versions = set(SUPPORTED) else: minv = (0, 0) if vrange[0] is None else vrange[0] maxv = (99, 99) if vrange[1] is None else vrange[1] if minv == maxv: versions = set((minv,) if minv in SUPPORTED else tuple()) else: versions = set(v for v in SUPPORTED if minv <= v < maxv) if available: versions = set(v for v in versions if exists("/usr/bin/python%d.%d" % v)) elif available is False: versions = set(v for v in versions if not exists("/usr/bin/python%d.%d" % v)) return versions def parse_vrange(value): """Return minimum and maximum Python version from given range. >>> parse_vrange('2.4-') ((2, 4), None) >>> parse_vrange('2.4-2.6') ((2, 4), (2, 6)) >>> parse_vrange('2.4-3.0') ((2, 4), (3, 0)) >>> parse_vrange('-2.7') (None, (2, 7)) >>> parse_vrange('2.5') ((2, 5), (2, 5)) >>> parse_vrange('') == parse_vrange('-') == (None, None) True """ if value in ('', '-'): return None, None match = RANGE_RE.match(value) if not match: raise ValueError("version range is invalid: %s" % value) groups = match.groups() if list(groups).count(None) == 3: # only one version is allowed minv = tuple(int(i) for i in groups[1].split('.')) return minv, minv minv = maxv = None if groups[0]: # maximum version only maxv = groups[1] else: minv = groups[1] maxv = groups[3] minv = tuple(int(i) for i in minv.split('.')) if minv else None maxv = tuple(int(i) for i in maxv.split('.')) if maxv else None if maxv and minv and minv > maxv: raise ValueError("version range is invalid: %s" % value) return minv, maxv def parse_pycentral_vrange(value): """Parse XS-Python-Version. >>> parse_pycentral_vrange('current') == (DEFAULT, DEFAULT) True >>> parse_pycentral_vrange('all') (None, None) >>> parse_pycentral_vrange('all, >= 2.4') ((2, 4), None) >>> parse_pycentral_vrange('all, << 3.0') (None, (3, 0)) >>> parse_pycentral_vrange('2.6') ((2, 6), (2, 6)) >>> parse_pycentral_vrange('2.5, 2.6') ((2, 5), None) >>> parse_pycentral_vrange('>= 2.6.3') ((2, 6), None) """ get = lambda x: get_requested_versions(parse_vrange(x)) current = False minv = maxv = None hardcoded = set() for item in value.split(','): item = item.strip() if item == 'all': continue elif item == 'current': current = True continue match = re.match('>=\s*([\d\.]+)', item) if match: minv = "%.3s" % match.group(1) continue match = re.match('<<\s*([\d\.]+)', item) if match: maxv = "%.3s" % match.group(1) continue match = re.match('^[\d\.]+$', item) if match: hardcoded.add("%.3s" % match.group(0)) if len(hardcoded) == 1: ver = hardcoded.pop() return getver(ver), getver(ver) if not minv and hardcoded: # yeah, no maxv! minv = sorted(hardcoded)[0] if current: versions = sorted(get("%s-%s" % (minv if minv else '', maxv if maxv else ''))) if not versions: raise ValueError("version range doesn't match installed Python versions: %s" % value) # not really what "current" means... if DEFAULT in versions: return DEFAULT, DEFAULT else: return versions[0], versions[0] return getver(minv) if minv else None, \ getver(maxv) if maxv else None def vrange_str(vrange): """Return version range string from given range. >>> vrange_str(((2, 4), None)) '2.4-' >>> vrange_str(((2, 4), (2, 6))) '2.4-2.6' >>> vrange_str(((2, 4), (3, 0))) '2.4-3.0' >>> vrange_str((None, (2, 7))) '-2.7' >>> vrange_str(((2, 5), (2, 5))) '2.5' >>> vrange_str((None, None)) '-' """ if vrange[0] is vrange[1] is None: return '-' if vrange[0] == vrange[1]: return '.'.join(str(i) for i in vrange[0]) elif vrange[0] is None: return '-' + '.'.join(str(i) for i in vrange[1]) elif vrange[1] is None: return '.'.join(str(i) for i in vrange[0]) + '-' else: return "%s-%s" % ('.'.join(str(i) for i in vrange[0]), '.'.join(str(i) for i in vrange[1])) def vrepr(value): """ >>> vrepr(([2, 7], [3, 2])) ['2.7', '3.2'] >>> vrepr(('2.6', '3.1')) ['2.6', '3.1'] >>> vrepr('2.7') '2.7' >>> vrepr((2, 7)) '2.7' """ if isinstance(value, basestring): return value elif not isinstance(value, (GeneratorType, set))\ and isinstance(value[0], int): return '.'.join(str(i) for i in value) result = [] for version in value: if isinstance(version, basestring): result.append(version) else: result.append('.'.join(str(i) for i in version)) return result def getver(value): """Return pair of integers that represent version. >>> getver('2.5') (2, 5) >>> getver('2.6.4') (2, 6) >>> getver(None) '' """ if not value: return '' return tuple(int(i) for i in value.split('.', 2))[:2] def debsorted(versions, return_str=None): """Return sorted list of versions starting with default Python version (if available) then list of suppored versions greater than default one followed by reversed list of older versions. List of versions sorted this way can be used in Depends field. :param vrepr: return string represenatations of versions, by default the same format is used as in :param:`versions` >>> debsorted([(2, 6), (3, 1), (2, 5), (2, 4), (2, 7)])[0] == DEFAULT True >>> debsorted(('2.4', '3.2', '2.6', '2.7'))[-1] (2, 4) >>> debsorted(set([(2, 1), (2, 2)])) [(2, 2), (2, 1)] >>> debsorted([(2, 1), (2, 2)], return_str=True) ['2.2', '2.1'] """ result = [] old_versions = [] for version in sorted(versions): if isinstance(version, basestring): version = getver(version) if version < DEFAULT: old_versions.append(version) else: result.append(version) result.extend(reversed(old_versions)) if return_str and result: return vrepr(result) return result python-defaults-debian/dh_python20000755000000000000000000007454313161161453014334 0ustar #! /usr/bin/python # -*- coding: UTF-8 -*- vim: et ts=4 sw=4 # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import with_statement import logging import os import re import sys from filecmp import dircmp, cmpfiles, cmp as fcmp from optparse import OptionParser, SUPPRESS_HELP from os.path import isabs, isdir, islink, exists, join, normpath, realpath,\ split from shutil import rmtree, copy as fcopy from stat import ST_MODE, S_IXUSR, S_IXGRP, S_IXOTH from debpython.debhelper import DebHelper from debpython.depends import Dependencies from debpython.version import SUPPORTED, DEFAULT, \ debsorted, getver, vrepr, parse_pycentral_vrange, \ get_requested_versions, parse_vrange, vrange_str import debpython.namespace as ns from debpython.pydist import validate as validate_pydist, \ PUBLIC_DIR_RE from debpython.tools import sitedir, relative_symlink, \ fix_shebang, shebang2pyver, \ so2pyver, clean_egg_name, \ pyinstall, pyremove from debpython.option import Option # initialize script logging.basicConfig(format='%(levelname).1s: %(module)s:%(lineno)d: ' '%(message)s') log = logging.getLogger(__name__) os.umask(022) EGGnPTH_RE = re.compile(r'(.*?)(-py\d\.\d+)?(.*?)(\.egg-info|\.pth)$') # naming conventions used in the file: # * version - tuple of integers # * ver - string representation of version # * vrange - version range, pair of max and min versions # * fn - file name (without path) # * fpath - file path ### FILES ###################################################### def fix_locations(package): """Move files to the right location.""" found_versions = {} for version in SUPPORTED: ver = vrepr(version) to_check = [i % ver for i in (\ 'usr/local/lib/python%s/site-packages', 'usr/local/lib/python%s/dist-packages', 'var/lib/python-support/python%s', 'usr/lib/pymodules/python%s')] if version >= (2, 6): to_check.append("usr/lib/python%s/site-packages" % ver) dstdir = sitedir(version, package) for location in to_check: srcdir = "debian/%s/%s" % (package, location) if isdir(srcdir): if ver in found_versions: log.error('files for version %s ' 'found in two locations:\n %s\n %s', ver, location, found_versions[ver]) exit(2) log.info('Python %s should install files in %s. ' 'Did you forget "--install-layout=deb"?', ver, sitedir(version)) if not isdir(dstdir): os.makedirs(dstdir) # TODO: what about relative symlinks? log.debug('moving files from %s to %s', srcdir, dstdir) os.renames(srcdir, dstdir) found_versions[ver] = location # do the same with debug locations dbg_to_check = ['usr/lib/debug/%s' % i for i in to_check] dbg_to_check.append("usr/lib/debug/usr/lib/pyshared/python%s" % ver) dstdir = sitedir(version, package, gdb=True) for location in dbg_to_check: srcdir = "debian/%s/%s" % (package, location) if isdir(srcdir): if not isdir(dstdir): os.makedirs(dstdir) log.debug('moving files from %s to %s', srcdir, dstdir) os.renames(srcdir, dstdir) ### SHARING FILES ############################################## def share(package, stats, options): """Move files to /usr/share/pyshared/ if possible.""" if package.endswith('-dbg'): # nothing to share in debug packages return pubvers = debsorted(i for i in stats['public_vers'] if i[0] == 2) if len(pubvers) > 1: for pos, version1 in enumerate(pubvers): dir1 = sitedir(version1, package) for version2 in pubvers[pos + 1:]: dir2 = sitedir(version2, package) dc = dircmp(dir1, dir2) share_2x(dir1, dir2, dc) elif len(pubvers) == 1: # don't install into pyshared anymore pass if options.guess_versions and pubvers: for version in get_requested_versions(options.vrange): if version not in pubvers: log.debug('guessing files for Python %s', vrepr(version)) versions_without_ext = debsorted(set(pubvers) -\ stats['ext']) if not versions_without_ext: log.error('extension for python%s is missing. ' 'Build extensions for all supported Python ' 'versions (`pyversions -vr`) or adjust ' 'X-Python-Version field or pass ' '--no-guessing-versions to dh_python2', vrepr(version)) exit(3) srcver = versions_without_ext[0] if srcver in stats['public_vers']: stats['public_vers'].add(version) share_2x(sitedir(srcver, package), sitedir(version, package)) # remove duplicates stats['requires.txt'] = set(realpath(i) for i in stats['requires.txt']) stats['nsp.txt'] = set(realpath(i) for i in stats['nsp.txt']) def move_to_pyshared(dir1): # dir1 starts with debian/packagename/usr/lib/pythonX.Y/*-packages/ debian, package, path = dir1.split('/', 2) dstdir = join(debian, package, 'usr/share/pyshared/', \ '/'.join(dir1.split('/')[6:])) fext = lambda fname: fname.rsplit('.', 1)[-1] for i in os.listdir(dir1): fpath1 = join(dir1, i) if isdir(fpath1) and not islink(fpath1): if any(fn for fn in os.listdir(fpath1) if fext(fn) != 'so'): # at least one file that is not an extension move_to_pyshared(join(dir1, i)) else: if fext(i) == 'so': continue fpath2 = join(dstdir, i) if not exists(fpath2): if not exists(dstdir): os.makedirs(dstdir) if islink(fpath1): fpath1_target = os.readlink(fpath1) if isabs(fpath1_target): os.symlink(fpath1_target, fpath2) else: fpath1_target = normpath(join(dir1, fpath1_target)) relative_symlink(fpath1_target, fpath2) os.remove(fpath1) else: os.rename(fpath1, fpath2) relative_symlink(fpath2, fpath1) def create_ext_links(dir1): """Create extension symlinks in /usr/lib/pyshared/pythonX.Y. These symlinks are used to let dpkg detect file conflicts with python-support and python-central packages. """ debian, package, path = dir1.split('/', 2) python, _, module_subpath = path[8:].split('/', 2) dstdir = join(debian, package, 'usr/lib/pyshared/', python, module_subpath) for i in os.listdir(dir1): fpath1 = join(dir1, i) if isdir(fpath1): create_ext_links(fpath1) elif i.rsplit('.', 1)[-1] == 'so': fpath2 = join(dstdir, i) if exists(fpath2): continue if not exists(dstdir): os.makedirs(dstdir) relative_symlink(fpath1, join(dstdir, i)) def create_public_links(dir1, vrange, root=''): """Create public module symlinks for given directory.""" debian, package, path = dir1.split('/', 2) versions = get_requested_versions(vrange) for fn in os.listdir(dir1): fpath1 = join(dir1, fn) if isdir(fpath1): create_public_links(fpath1, vrange, join(root, fn)) else: for version in versions: dstdir = join(sitedir(version, package), root) if not exists(dstdir): os.makedirs(dstdir) relative_symlink(fpath1, join(dstdir, fn)) def share_2x(dir1, dir2, dc=None): """Move common files to pyshared and create symlinks in original locations.""" debian, package, path = dir2.split('/', 2) # dir1 starts with debian/packagename/usr/lib/pythonX.Y/*-packages/ dstdir = join(debian, package, 'usr/share/pyshared/', \ '/'.join(dir1.split('/')[6:])) if not exists(dstdir) and not islink(dir1): os.makedirs(dstdir) if dc is None: # guess/copy mode if not exists(dir2): os.makedirs(dir2) common_dirs = [] common_files = [] for i in os.listdir(dir1): subdir1 = join(dir1, i) if isdir(subdir1) and not islink(subdir1): common_dirs.append([i, None]) else: # directories with .so files will be blocked earlier common_files.append(i) elif islink(dir1): # skip this symlink in pyshared # (dpkg has problems with symlinks anyway) common_dirs = [] common_files = [] else: common_dirs = dc.subdirs.iteritems() common_files = dc.common_files # dircmp returns common names only, lets check files more carefully... common_files = cmpfiles(dir1, dir2, common_files, shallow=False)[0] for fn in common_files: if 'so' in fn.split('.'): # foo.so, bar.so.0.1.2, etc. # in unlikely case where extensions are exactly the same continue fpath1 = join(dir1, fn) fpath2 = join(dir2, fn) fpath3 = join(dstdir, fn) # do not touch symlinks created by previous loop or other tools if dc and not islink(fpath1): # replace with a link to pyshared if not exists(fpath3): os.rename(fpath1, fpath3) relative_symlink(fpath3, fpath1) elif fcmp(fpath3, fpath1, shallow=False): os.remove(fpath1) relative_symlink(fpath3, fpath1) if dc is None: # guess/copy mode if islink(fpath1): # ralative links will work as well, it's always the same level os.symlink(os.readlink(fpath1), fpath2) else: if exists(fpath3): # cannot share it, pyshared contains another copy fcopy(fpath1, fpath2) else: # replace with a link to pyshared os.rename(fpath1, fpath3) relative_symlink(fpath3, fpath1) relative_symlink(fpath3, fpath2) elif exists(fpath2) and exists(fpath3) and \ fcmp(fpath2, fpath3, shallow=False): os.remove(fpath2) relative_symlink(fpath3, fpath2) for dn, dc in common_dirs: share_2x(join(dir1, dn), join(dir2, dn), dc) ### PACKAGE DETAILS ############################################ def scan(package, dname=None, options=None): """Gather statistics about Python files in given package.""" r = {'requires.txt': set(), 'nsp.txt': set(), 'shebangs': set(), 'public_vers': set(), 'private_dirs': {}, 'compile': False, 'ext': set()} dbg_package = package.endswith('-dbg') if not dname: proot = "debian/%s" % package if dname is False: private_to_check = [] else: private_to_check = [i % package for i in ('usr/lib/%s', 'usr/lib/games/%s', 'usr/share/%s', 'usr/share/games/%s')] else: # scan private directory *only* dname = dname.strip('/') proot = join('debian', package, dname) private_to_check = [dname] for root, dirs, file_names in os.walk(proot): # ignore Python 3.X locations if '/usr/lib/python3' in root or\ '/usr/local/lib/python3' in root: # warn only once if root[root.find('/lib/python'):].count('/') == 2: log.warning('Python 3.x location detected, ' 'please use dh_python3: %s', root) continue bin_dir = private_dir = None public_dir = PUBLIC_DIR_RE.match(root) if public_dir: version = getver(public_dir.group(1)) if root.endswith('-packages'): r['public_vers'].add(version) else: # TODO: find a way to specify Python version private # extension was build for version = False for i in private_to_check: if root.startswith(join('debian', package, i)): private_dir = '/' + i break else: # i.e. not public_dir and not private_dir if len(root.split('/', 6)) < 6 and (\ root.endswith('/sbin') or root.endswith('/bin') or\ root.endswith('/usr/games')): # /(s)bin or /usr/(s)bin or /usr/games bin_dir = root # handle some EGG related data (.egg-info dirs) for name in dirs: if name.endswith('.egg-info'): if dbg_package and options.clean_dbg_pkg: rmtree(join(root, name)) dirs.remove(name) continue clean_name = clean_egg_name(name) if clean_name != name: log.info('renaming %s to %s', name, clean_name) os.rename(join(root, name), join(root, clean_name)) dirs[dirs.index(name)] = clean_name if root.endswith('.egg-info'): if 'requires.txt' in file_names: r['requires.txt'].add(join(root, 'requires.txt')) if 'namespace_packages.txt' in file_names: r['nsp.txt'].add(join(root, 'namespace_packages.txt')) continue # check files for fn in sorted(file_names): # sorted() to make sure .so files are handled before .so.foo fpath = join(root, fn) if not exists(fpath): # could be removed while handling .so symlinks if islink(fpath) and '.so.' in split(fpath)[-1]: # dangling symlink to (now removed/renamed) .so file # which wasn't removed yet (see test3's quux.so.0) log.info('removing symlink: %s', fpath) os.remove(fpath) continue fext = fn.rsplit('.', 1)[-1] if fext in ('pyc', 'pyo'): os.remove(fpath) continue if public_dir: if fext == 'so' and islink(fpath): dstfpath = fpath links = set() while islink(dstfpath): links.add(dstfpath) dstfpath = join(root, os.readlink(dstfpath)) if exists(dstfpath) and '.so.' in split(dstfpath)[-1]: # rename .so.$FOO symlinks, remove other ones for lpath in links: log.info('removing symlink: %s', lpath) os.remove(lpath) log.info('renaming %s to %s', dstfpath, fn) os.rename(dstfpath, fpath) if dbg_package and options.clean_dbg_pkg and \ fext not in ('so', 'h'): os.remove(join(root, fn)) continue elif private_dir: if exists(fpath): mode = os.stat(fpath)[ST_MODE] if mode & S_IXUSR or mode & S_IXGRP or mode & S_IXOTH: if (options.no_shebang_rewrite or \ fix_shebang(fpath, options.shebang)) and \ not options.ignore_shebangs: res = shebang2pyver(fpath) if res: r['private_dirs'].setdefault(private_dir, {})\ .setdefault('shebangs', set()).add(res) if public_dir or private_dir: if fext == 'so': so_version = so2pyver(join(root, fn)) if so_version: if public_dir: if version != so_version: log.error('extension linked to libpython%s ' 'and shipped in python%s\'s dist-' 'packages: %s', vrepr(so_version), vrepr(version), fn) exit(7) log.warn('public extension linked with ' 'libpython%s: %s', vrepr(so_version), fn) elif not version: version = so_version (r if public_dir else r['private_dirs'].setdefault(private_dir, {}))\ .setdefault('ext', set()).add(version) continue elif fext == 'py': (r if public_dir else r['private_dirs'].setdefault(private_dir, {}))\ ['compile'] = True continue # .egg-info files if fn.endswith('.egg-info'): clean_name = clean_egg_name(fn) if clean_name != fn: log.info('renaming %s to %s', fn, clean_name) os.rename(join(root, fn), join(root, clean_name)) continue # search for scripts in bin dirs if bin_dir: if (options.no_shebang_rewrite or \ fix_shebang(fpath, options.shebang)) and \ not options.ignore_shebangs: res = shebang2pyver(fpath) if res: r['shebangs'].add(res) if dbg_package and options.clean_dbg_pkg: # remove empty directories in -dbg packages proot = proot + '/usr/lib' for root, dirs, file_names in os.walk(proot, topdown=False): if '-packages/' in root and not file_names: try: os.rmdir(root) except Exception: pass log.debug("package %s details = %s", package, r) return r ################################################################ def main(): log.warn('Please add dh-python package to Build-Depends') usage = '%prog -p PACKAGE [-V [X.Y][-][A.B]] DIR [-X REGEXPR]\n' parser = OptionParser(usage, version='%prog 2.1', option_class=Option) parser.add_option('--no-guessing-versions', action='store_false', dest='guess_versions', default=True, help='disable guessing other supported Python versions') parser.add_option('--no-guessing-deps', action='store_false', dest='guess_deps', default=True, help='disable guessing dependencies') parser.add_option('--skip-private', action='store_true', default=False, help='don\'t check private directories') parser.add_option('-v', '--verbose', action='store_true', default=False, help='turn verbose mode on') # arch=False->arch:all only, arch=True->arch:any only, None->all of them parser.add_option('-i', '--indep', action='store_false', dest='arch', default=None, help='act on architecture independent packages') parser.add_option('-a', '-s', '--arch', action='store_true', dest='arch', help='act on architecture dependent packages') parser.add_option('-q', '--quiet', action='store_false', dest='verbose', help='be quiet') parser.add_option('-p', '--package', action='append', help='act on the package named PACKAGE') parser.add_option('-N', '--no-package', action='append', help='do not act on the specified package') parser.add_option('--compile-all', action='store_true', default=False, help='compile all files from given private directory in postinst, ' 'not just the ones provided by the package') parser.add_option('-V', type='version_range', dest='vrange', help='specify list of supported Python versions. ' +\ 'See pycompile(1) for examples') parser.add_option('-X', '--exclude', action='append', dest='regexpr', help='exclude items that match given REGEXPR. You may use this option ' 'multiple times to build up a list of things to exclude.') parser.add_option('--depends', action='append', help='translate given requirements into Debian dependencies ' 'and add them to ${python:Depends}. ' 'Use it for missing items in requires.txt.') parser.add_option('--recommends', action='append', help='translate given requirements into Debian ' 'dependencies and add them to ${python:Recommends}') parser.add_option('--suggests', action='append', help='translate given requirements into Debian ' 'dependencies and add them to ${python:Suggests}') parser.add_option('--namespace', action='append', dest='namespaces', help='recreate __init__.py files for given namespaces at install time') parser.add_option('--clean-pycentral', action='store_true', default=False, help='generate maintainer script that will remove pycentral files') parser.add_option('--shebang', help='use given command as shebang in scripts') parser.add_option('--ignore-shebangs', action='store_true', default=False, help='do not translate shebangs into Debian dependencies') parser.add_option('--ignore-namespace', action='store_true', default=False, help="ignore Egg's namespace_packages.txt file and --namespace option") parser.add_option('--no-dbg-cleaning', action='store_false', dest='clean_dbg_pkg', default=True, help='do not remove files from debug packages') parser.add_option('--no-shebang-rewrite', action='store_true', default=False, help='do not rewrite shebangs') # ignore some debhelper options: parser.add_option('-O', help=SUPPRESS_HELP) options, args = parser.parse_args(sys.argv[1:] + \ os.environ.get('DH_OPTIONS', '').split()) # regexpr option type is not used so lets check patterns here for pattern in options.regexpr or []: # fail now rather than at runtime try: pattern = re.compile(pattern) except Exception: log.error('regular expression is not valid: %s', pattern) exit(1) if not options.vrange and exists('debian/pyversions'): log.debug('parsing version range from debian/pyversions') with open('debian/pyversions') as fp: for line in fp: line = line.strip() if line and not line.startswith('#'): options.vrange = parse_vrange(line) break # disable PyDist if dh_pydeb is used if options.guess_deps: try: rules = open('debian/rules', 'r').read() except IOError: log.warning('cannot open debian/rules file') else: if re.search('\n\s*dh_pydeb', rules) or \ re.search('\n\s*dh\s+[^#]*--with[^#]+pydeb', rules): log.warning('dh_pydeb detected, PyDist feature disabled') options.guess_deps = False if not args: private_dir = None else: private_dir = args[0] if not private_dir.startswith('/'): # handle usr/share/foo dirs (without leading slash) private_dir = '/' + private_dir # TODO: support more than one private dir at the same time (see :meth:scan) if options.skip_private: private_dir = False if options.verbose or os.environ.get('DH_VERBOSE') == '1': log.setLevel(logging.DEBUG) log.debug('argv: %s', sys.argv) log.debug('options: %s', options) log.debug('args: %s', args) dh = DebHelper(options) if not options.vrange and dh.python_version: options.vrange = parse_pycentral_vrange(dh.python_version) for package, pdetails in dh.packages.iteritems(): if options.arch is False and pdetails['arch'] != 'all' or \ options.arch is True and pdetails['arch'] == 'all': continue log.debug('processing package %s...', package) if not private_dir: if not pyinstall(package, options.vrange): exit(4) if not pyremove(package, options.vrange): exit(5) fix_locations(package) stats = scan(package, private_dir, options) if not private_dir: share(package, stats, options) pyshared_dir = "debian/%s/usr/share/pyshared/" % package if not stats['public_vers'] and exists(pyshared_dir): create_public_links(pyshared_dir, options.vrange) stats['public_vers'] = get_requested_versions(options.vrange) stats['compile'] = True dependencies = Dependencies(package) dependencies.parse(stats, options) if stats['public_vers']: dh.addsubstvar(package, 'python:Versions', \ ', '.join(sorted(vrepr(stats['public_vers'])))) ps = package.split('-', 1) if len(ps) > 1 and ps[0] == 'python': dh.addsubstvar(package, 'python:Provides', \ ', '.join("python%s-%s" % (i, ps[1])\ for i in sorted(vrepr(stats['public_vers'])))) pyclean_added = False # invoke pyclean only once in maintainer script if stats['compile']: if options.clean_pycentral: dh.autoscript(package, 'preinst', 'preinst-pycentral-clean', '') dh.autoscript(package, 'postinst', 'postinst-pycompile', '') dh.autoscript(package, 'prerm', 'prerm-pyclean', '') pyclean_added = True for pdir, details in stats['private_dirs'].iteritems(): if not details.get('compile'): continue if not pyclean_added: dh.autoscript(package, 'prerm', 'prerm-pyclean', '') pyclean_added = True args = pdir ext_for = details.get('ext') if ext_for is None: # no extension shebangs = list(v for i, v in details.get('shebangs', []) if v) if not options.ignore_shebangs and len(shebangs) == 1: # only one version from shebang args += " -V %s" % vrepr(shebangs[0]) elif options.vrange and options.vrange != (None, None): args += " -V %s" % vrange_str(options.vrange) elif False in ext_for: # at least one extension's version not detected if options.vrange and '-' not in vrange_str(options.vrange): ver = vrange_str(options.vrange) else: # try shebang or default Python version ver = (list(v for i, v in details.get('shebangs', []) if v) or [None])[0] or DEFAULT ver = vrepr(ver) dependencies.depend("python%s" % ver) args += " -V %s" % vrepr(ver) else: version = ext_for.pop() args += " -V %s" % vrepr(version) dependencies.depend("python%d.%d" % version) for pattern in options.regexpr or []: args += " -X '%s'" % pattern.replace("'", r"'\''") dh.autoscript(package, 'postinst', 'postinst-pycompile', args) dependencies.export_to(dh) pydist_file = join('debian', "%s.pydist" % package) if exists(pydist_file): if not validate_pydist(pydist_file): log.warning("%s.pydist file is invalid", package) else: dstdir = join('debian', package, 'usr/share/python/dist/') if not exists(dstdir): os.makedirs(dstdir) fcopy(pydist_file, join(dstdir, package)) # namespace feature - recreate __init__.py files at install time if options.ignore_namespace: nsp = None else: nsp = ns.parse(stats['nsp.txt'], options.namespaces) # note that pycompile/pyclean is already added to maintainer scripts # and it should remain there even if __init__.py was the only .py file if nsp: try: nsp = ns.remove_from_package(package, nsp, stats['public_vers']) except (IOError, OSError), e: log.error('cannot remove __init__.py from package: %s', e) exit(6) if nsp: dstdir = join('debian', package, 'usr/share/python/ns/') if not exists(dstdir): os.makedirs(dstdir) with open(join(dstdir, package), 'a') as fp: fp.writelines("%s\n" % i for i in nsp) pyshared = join('debian', package, 'usr/share/pyshared/') if isdir(pyshared) and not os.listdir(pyshared): # remove empty pyshared directory os.rmdir(pyshared) dh.save() if __name__ == '__main__': main() python-defaults-debian/dh_python2.10000664000000000000000000002160712374331373014470 0ustar .\" Man page generated from reStructuredText. . .TH DH_PYTHON2 1 "" "" "" .SH NAME dh_python2 \- calculates Python dependencies, adds maintainer scripts to byte compile files, etc. . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .INDENT 0.0 .INDENT 3.5 dh_python2 \-p PACKAGE [\-V [X.Y][\-][A.B]] DIR_OR_FILE [\-X REGEXPR] .UNINDENT .UNINDENT .SH DESCRIPTION .SS QUICK GUIDE FOR MAINTAINERS .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 if necessary, describe supported Python versions via X\-Python\-Version field in debian/control, .IP \(bu 2 build\-depend on python or python\-all or python\-all\-dev (>= 2.6.6\-3~), .IP \(bu 2 build module/application using its standard build system, remember to build extensions for all supported Python versions (loop over \fBpyversions \-vr\fP), .IP \(bu 2 install files to the \fIstandard\fP locations, add \fI\-\-install\-layout=deb\fP to setup.py\(aqs install command if your package is using distutils, .IP \(bu 2 add \fIpython2\fP to dh\(aqs \-\-with option, or: .IP \(bu 2 \fIinclude /usr/share/cdbs/1/class/python\-distutils.mk\fP in debian/rules and depend on \fIcdbs (>= 0.4.90)\fP, or: .IP \(bu 2 call \fBdh_python2\fP in the \fIbinary\-*\fP target, .IP \(bu 2 add \fI${python:Depends}\fP to Depends .UNINDENT .UNINDENT .UNINDENT .SS NOTES .sp In order to support more than one Python version in the same binary package, dh_python2 (unlike dh_pycentral and dh_pysupport) creates symlinks to all supported Python versions at build time. It means binNMU (or sourceful upload in case of architecture independent packages) is required once a list of supported Python version is changed. It\(aqs faster and more robust than its competitors, though. .SS dependencies .sp dh_python2 tries to translate Python dependencies from requires.txt file to Debian dependencies. Use debian/pydist\-overrides or \-\-no\-guessing\-deps option to override it if the guess is incorrect. If you want dh_python2 to generate more strict dependencies (f.e. to avoid ABI problems) create debian/python\-foo.pydist file. See /usr/share/doc/python\-doc/README.PyDist (provided by python\-doc package) for more information. If the pydist file contains PEP386 flag or set of (uscan like) rules, dh_python2 will make the depedency versioned (version requirements are ignored by default). .SS namespace feature .sp dh_python2 parses Egg\(aqs namespace_packages.txt files (in addition to \-\-namespace command line argument(s)) and drops empty __init__.py files from binary package. pycompile will regenerate them at install time and pyclean will remove them at uninstall time (if they\(aqre no longer used in installed packages). It\(aqs still a good idea to provide __init__.py file in one of binary packages (even if all other packages use this feature). .SS private dirs .sp \fI/usr/share/foo\fP, \fI/usr/share/games/foo\fP, \fI/usr/lib/foo\fP and \fI/usr/lib/games/foo\fP private directories are scanned for Python files by default (where \fIfoo\fP is binary package name). If your package is shipping Python files in some other directory, add another dh_python2 call in debian/rules with directory name as an argument \- you can use different set of options in this call. If you need to change options (f.e. a list of supported Python versions) for a private directory that is checked by default, invoke dh_python2 with \-\-skip\-private option and add another call with a path to this directory and new options. .SS debug packages .sp In binary packages which name ends with \fI\-dbg\fP, all files in \fI/usr/lib/python2.X/{site,dist}\-packages/\fP directory that have extensions different than \fIso\fP or \fIh\fP are removed by default. Use \-\-no\-dbg\-cleaning option to disable this feature. .SS pyinstall files .sp Files listed in debian/pkg.pyinstall file will be installed as public modules for all requested Python versions (dh_install doesn\(aqt know about python\(aqs site\- vs. dist\-packages issue). .sp Syntax: \fBpath/to/file [VERSION_RANGE] [NAMESPACE]\fP .sp debian directory is automatically removed from the path, so you can place your files in debian/ directory and install them from this location (if you want to install them in "debian" namespace, set NAMESPACE to debian). If NAMESPACE is set, all listed files will be installed in .../dist\-packages/NAMESPACE/ directory. .INDENT 0.0 .TP .B Examples: .INDENT 7.0 .IP \(bu 2 \fBfoo.py\fP installs .../dist\-packages/foo.py for all supported Python versions .IP \(bu 2 \fBfoo/bar.py 2.6\-\fP installs .../dist\-packages/foo/bar.py for versions >= 2.6 .IP \(bu 2 \fBfoo/bar.py spam\fP installs .../dist\-packages/spam/bar.py .IP \(bu 2 \fBdebian/*.py spam.egg 2.5\fP installs .../python2.5/site\-packages/spam/egg/*.py files .UNINDENT .UNINDENT .SS pyremove files .sp If you want to remove some files installed by build system (from all supported Python versions or only from a subset of these versions), add them to debian/pkg.pyremove file. .INDENT 0.0 .TP .B Examples: .INDENT 7.0 .IP \(bu 2 \fB*.pth\fP removes .pth files from .../dist\-packages/ .IP \(bu 2 \fBbar/baz.py 2.5\fP removes .../python2.5/site\-packages/bar/baz.py .UNINDENT .UNINDENT .SS overriding supported / default Python versions .sp If you want to override system\(aqs list of supported Python versions or the default one (f.e. to build a package that includes symlinks for older version of Python or compile .py files only for given interpreter version), you can do that via \fIDEBPYTHON_SUPPORTED\fP and/or \fIDEBPYTHON_DEFAULT\fP env. variables. .sp Example: \fB2.5,2.7\fP limits the list of supported Python versions to Python 2.5 and Python 2.7. .SH OPTIONS .INDENT 0.0 .TP .B \-\-version show program\(aqs version number and exit .TP .B \-h\fP,\fB \-\-help show help message and exit .TP .B \-\-no\-guessing\-versions disable guessing other supported Python versions .TP .B \-\-no\-guessing\-deps disable guessing dependencies .TP .B \-\-no\-dbg\-cleaning do not remove any files from debug packages .TP .B \-\-no\-shebang\-rewrite do not rewrite shebangs .TP .B \-\-skip\-private don\(aqt check private directories .TP .B \-v\fP,\fB \-\-verbose turn verbose mode on .TP .B \-i\fP,\fB \-\-indep act on architecture independent packages .TP .B \-a\fP,\fB \-\-arch act on architecture dependent packages .TP .B \-q\fP,\fB \-\-quiet be quiet .TP .BI \-p \ PACKAGE\fP,\fB \ \-\-package\fB= PACKAGE act on the package named PACKAGE .TP .BI \-N \ NO_PACKAGE\fP,\fB \ \-\-no\-package\fB= NO_PACKAGE do not act on the specified package .TP .BI \-V \ VRANGE specify list of supported Python versions. See pycompile(1) for examples .TP .BI \-X \ REGEXPR\fP,\fB \ \-\-exclude\fB= REGEXPR exclude items that match given REGEXPR. You may use this option multiple times to build up a list of things to exclude. .TP .B \-\-compile\-all compile all files from given private directory in postinst/rtupdate not just the ones provided by the package (i.e. do not pass the \-\-package parameter to pycompile/pyclean) .TP .BI \-\-depends\fB= DEPENDS translate given requirements into Debian dependencies and add them to ${python:Depends}. Use it for missing items in requires.txt .TP .BI \-\-recommends\fB= RECOMMENDS translate given requirements into Debian dependencies and add them to ${python:Recommends} .TP .BI \-\-suggests\fB= SUGGESTS translate given requirements into Debian dependencies and add them to ${python:Suggests} .TP .B \-\-namespace use this option (multiple time if necessary) if namespace_packages.txt is not complete .TP .B \-\-ignore\-namespace ignore Egg\(aqs namespace declaration and \-\-namespace option. This option will disable removing (and recreating at install time) empty __init__.py files. Removing namespace_packages.txt from egg\-info directory has the same effect. .TP .B \-\-clean\-pycentral generate maintainer script that will remove byte code generated by python\-central helper .TP .BI \-\-shebang\fB= COMMAND use given command as shebang in scripts .TP .B \-\-ignore\-shebangs do not translate shebangs into Debian dependencies .UNINDENT .SH SEE ALSO .INDENT 0.0 .IP \(bu 2 /usr/share/doc/python/python\-policy.txt.gz .IP \(bu 2 /usr/share/doc/python\-doc/README.PyDist (python\-doc package) .IP \(bu 2 pycompile(1), pyclean(1) .IP \(bu 2 dh_python3(1), py3compile(1), py3clean(1) .IP \(bu 2 Wiki page about converting package to dh_python2: \fI\%http://wiki.debian.org/Python/TransitionToDHPython2\fP .UNINDENT .SH AUTHOR Piotr Ożarowski, 2012-2013 .\" Generated by docutils manpage writer. . python-defaults-debian/dh_python2.py0000755000000000000000000000204012254623031014737 0ustar #! /usr/bin/python from os.path import exists from subprocess import call from sys import argv from re import compile OLD = '/usr/share/python/dh_python2' NEW = '/usr/share/dh-python/dh_python2' has_dhpython = compile(r'(^|:|\s|,)dh-python($|\s|,|\()').search binary = OLD if exists(NEW) and exists('debian/control'): with open('debian/control', 'r') as fp: inside = False for line in fp: if not line: break line_lower = line.lower() if inside: if line.startswith((' ', "\t")): if has_dhpython(line): binary = NEW break continue elif line.startswith('#'): continue inside = False if line_lower.startswith(('build-depends:', 'build-depends-indep:')): if has_dhpython(line): binary = NEW break inside = True argv[0] = binary exit(call(argv)) python-defaults-debian/dh_python2.rst0000644000000000000000000001717712154106100015125 0ustar ============ dh_python2 ============ ----------------------------------------------------------------------------------- calculates Python dependencies, adds maintainer scripts to byte compile files, etc. ----------------------------------------------------------------------------------- :Manual section: 1 :Author: Piotr Ożarowski, 2012-2013 SYNOPSIS ======== dh_python2 -p PACKAGE [-V [X.Y][-][A.B]] DIR_OR_FILE [-X REGEXPR] DESCRIPTION =========== QUICK GUIDE FOR MAINTAINERS --------------------------- * if necessary, describe supported Python versions via X-Python-Version field in debian/control, * build-depend on python or python-all or python-all-dev (>= 2.6.6-3~), * build module/application using its standard build system, remember to build extensions for all supported Python versions (loop over ``pyversions -vr``), * install files to the *standard* locations, add `--install-layout=deb` to setup.py's install command if your package is using distutils, * add `python2` to dh's --with option, or: * `include /usr/share/cdbs/1/class/python-distutils.mk` in debian/rules and depend on `cdbs (>= 0.4.90)`, or: * call ``dh_python2`` in the `binary-*` target, * add `${python:Depends}` to Depends NOTES ----- In order to support more than one Python version in the same binary package, dh_python2 (unlike dh_pycentral and dh_pysupport) creates symlinks to all supported Python versions at build time. It means binNMU (or sourceful upload in case of architecture independent packages) is required once a list of supported Python version is changed. It's faster and more robust than its competitors, though. dependencies ~~~~~~~~~~~~ dh_python2 tries to translate Python dependencies from requires.txt file to Debian dependencies. Use debian/pydist-overrides or --no-guessing-deps option to override it if the guess is incorrect. If you want dh_python2 to generate more strict dependencies (f.e. to avoid ABI problems) create debian/python-foo.pydist file. See /usr/share/doc/python-doc/README.PyDist (provided by python-doc package) for more information. If the pydist file contains PEP386 flag or set of (uscan like) rules, dh_python2 will make the depedency versioned (version requirements are ignored by default). namespace feature ~~~~~~~~~~~~~~~~~ dh_python2 parses Egg's namespace_packages.txt files (in addition to --namespace command line argument(s)) and drops empty __init__.py files from binary package. pycompile will regenerate them at install time and pyclean will remove them at uninstall time (if they're no longer used in installed packages). It's still a good idea to provide __init__.py file in one of binary packages (even if all other packages use this feature). private dirs ~~~~~~~~~~~~ `/usr/share/foo`, `/usr/share/games/foo`, `/usr/lib/foo` and `/usr/lib/games/foo` private directories are scanned for Python files by default (where `foo` is binary package name). If your package is shipping Python files in some other directory, add another dh_python2 call in debian/rules with directory name as an argument - you can use different set of options in this call. If you need to change options (f.e. a list of supported Python versions) for a private directory that is checked by default, invoke dh_python2 with --skip-private option and add another call with a path to this directory and new options. debug packages ~~~~~~~~~~~~~~ In binary packages which name ends with `-dbg`, all files in `/usr/lib/python2.X/{site,dist}-packages/` directory that have extensions different than `so` or `h` are removed by default. Use --no-dbg-cleaning option to disable this feature. pyinstall files ~~~~~~~~~~~~~~~ Files listed in debian/pkg.pyinstall file will be installed as public modules for all requested Python versions (dh_install doesn't know about python's site- vs. dist-packages issue). Syntax: ``path/to/file [VERSION_RANGE] [NAMESPACE]`` debian directory is automatically removed from the path, so you can place your files in debian/ directory and install them from this location (if you want to install them in "debian" namespace, set NAMESPACE to debian). If NAMESPACE is set, all listed files will be installed in .../dist-packages/NAMESPACE/ directory. Examples: * ``foo.py`` installs .../dist-packages/foo.py for all supported Python versions * ``foo/bar.py 2.6-`` installs .../dist-packages/foo/bar.py for versions >= 2.6 * ``foo/bar.py spam`` installs .../dist-packages/spam/bar.py * ``debian/*.py spam.egg 2.5`` installs .../python2.5/site-packages/spam/egg/\*.py files pyremove files ~~~~~~~~~~~~~~ If you want to remove some files installed by build system (from all supported Python versions or only from a subset of these versions), add them to debian/pkg.pyremove file. Examples: * ``*.pth`` removes .pth files from .../dist-packages/ * ``bar/baz.py 2.5`` removes .../python2.5/site-packages/bar/baz.py overriding supported / default Python versions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you want to override system's list of supported Python versions or the default one (f.e. to build a package that includes symlinks for older version of Python or compile .py files only for given interpreter version), you can do that via `DEBPYTHON_SUPPORTED` and/or `DEBPYTHON_DEFAULT` env. variables. Example: ``2.5,2.7`` limits the list of supported Python versions to Python 2.5 and Python 2.7. OPTIONS ======= --version show program's version number and exit -h, --help show help message and exit --no-guessing-versions disable guessing other supported Python versions --no-guessing-deps disable guessing dependencies --no-dbg-cleaning do not remove any files from debug packages --no-shebang-rewrite do not rewrite shebangs --skip-private don't check private directories -v, --verbose turn verbose mode on -i, --indep act on architecture independent packages -a, --arch act on architecture dependent packages -q, --quiet be quiet -p PACKAGE, --package=PACKAGE act on the package named PACKAGE -N NO_PACKAGE, --no-package=NO_PACKAGE do not act on the specified package -V VRANGE specify list of supported Python versions. See pycompile(1) for examples -X REGEXPR, --exclude=REGEXPR exclude items that match given REGEXPR. You may use this option multiple times to build up a list of things to exclude. --compile-all compile all files from given private directory in postinst/rtupdate not just the ones provided by the package (i.e. do not pass the --package parameter to pycompile/pyclean) --depends=DEPENDS translate given requirements into Debian dependencies and add them to ${python:Depends}. Use it for missing items in requires.txt --recommends=RECOMMENDS translate given requirements into Debian dependencies and add them to ${python:Recommends} --suggests=SUGGESTS translate given requirements into Debian dependencies and add them to ${python:Suggests} --namespace use this option (multiple time if necessary) if namespace_packages.txt is not complete --ignore-namespace ignore Egg's namespace declaration and --namespace option. This option will disable removing (and recreating at install time) empty __init__.py files. Removing namespace_packages.txt from egg-info directory has the same effect. --clean-pycentral generate maintainer script that will remove byte code generated by python-central helper --shebang=COMMAND use given command as shebang in scripts --ignore-shebangs do not translate shebangs into Debian dependencies SEE ALSO ======== * /usr/share/doc/python/python-policy.txt.gz * /usr/share/doc/python-doc/README.PyDist (python-doc package) * pycompile(1), pyclean(1) * dh_python3(1), py3compile(1), py3clean(1) * Wiki page about converting package to dh_python2: http://wiki.debian.org/Python/TransitionToDHPython2 python-defaults-debian/faq/0000755000000000000000000000000012632016514013061 5ustar python-defaults-debian/faq/FAQ.ht0000644000000000000000000000122512057417145014033 0ustar Title: Python Frequently Asked Question Lists Content-type: text/x-rst ========================================== Python Frequently Asked Question Lists ========================================== * `General Python FAQ `_ * `Programming FAQ `_ * `Library and Extension FAQ `_ * `Extending/Embedding FAQ `_ * `Windows FAQ `_ * `GUI Programming FAQ `_ * `"Why is Python Installed on my Computer?" FAQ `_ This is a local copy of the online FAQ located at http://python.org/doc/faq. The copy was fetched and generated in May 2007. python-defaults-debian/faq/FAQ.html0000664000000000000000000002026412632016513014363 0ustar Python Frequently Asked Question Lists
    python-defaults-debian/faq/extending.ht0000644000000000000000000004367212057417145015425 0ustar Title: Python Extending/Embedding FAQ Content-type: text/x-rst ==================================== Extending/Embedding FAQ ==================================== :Date: $Date: 2004-04-08 09:05:47 -0600 (Thu, 08 Apr 2004) $ :Version: $Revision: 7294 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: Can I create my own functions in C? ------------------------------------------ Yes, you can create built-in modules containing functions, variables, exceptions and even new types in C. This is explained in the document "Extending and Embedding the Python Interpreter" (http://docs.python.org/ext/ext.html). Most intermediate or advanced Python books will also cover this topic. Can I create my own functions in C++? -------------------------------------------- Yes, using the C compatibility features found in C++. Place ``extern "C" { ... }`` around the Python include files and put ``extern "C"`` before each function that is going to be called by the Python interpreter. Global or static C++ objects with constructors are probably not a good idea. Writing C is hard; are there any alternatives? --------------------------------------------------- There are a number of alternatives to writing your own C extensions, depending on what you're trying to do. If you need more speed, `Psyco `_ generates x86 assembly code from Python bytecode. You can use Psyco to compile the most time-critical functions in your code, and gain a significant improvement with very little effort, as long as you're running on a machine with an x86-compatible processor. `Pyrex `_ is a compiler that accepts a slightly modified form of Python and generates the corresponding C code. Pyrex makes it possible to write an extension without having to learn Python's C API. If you need to interface to some C library for which no Python extension currently exists, you can try wrapping the library's data types and functions with a tool such as `SWIG `_. For C++ libraries, you can look at `SIP `_, `CXX `_, `Boost `_, or `Weave `_. How can I execute arbitrary Python statements from C? ------------------------------------------------------------ The highest-level function to do this is ``PyRun_SimpleString()`` which takes a single string argument to be executed in the context of the module ``__main__`` and returns 0 for success and -1 when an exception occurred (including ``SyntaxError``). If you want more control, use ``PyRun_String()``; see the source for ``PyRun_SimpleString()`` in Python/pythonrun.c. How can I evaluate an arbitrary Python expression from C? ---------------------------------------------------------------- Call the function ``PyRun_String()`` from the previous question with the start symbol ``Py_eval_input``; it parses an expression, evaluates it and returns its value. How do I extract C values from a Python object? ------------------------------------------------------ That depends on the object's type. If it's a tuple, ``PyTupleSize(o)`` returns its length and ``PyTuple_GetItem(o, i)`` returns its i'th item. Lists have similar functions, ``PyListSize(o)`` and ``PyList_GetItem(o, i)``. For strings, ``PyString_Size(o)`` returns its length and ``PyString_AsString(o)`` a pointer to its value. Note that Python strings may contain null bytes so C's ``strlen()`` should not be used. To test the type of an object, first make sure it isn't NULL, and then use ``PyString_Check(o)``, ``PyTuple_Check(o)``, ``PyList_Check(o)``, etc. There is also a high-level API to Python objects which is provided by the so-called 'abstract' interface -- read ``Include/abstract.h`` for further details. It allows interfacing with any kind of Python sequence using calls like ``PySequence_Length()``, ``PySequence_GetItem()``, etc.) as well as many other useful protocols. How do I use Py_BuildValue() to create a tuple of arbitrary length? -------------------------------------------------------------------------- You can't. Use ``t = PyTuple_New(n)`` instead, and fill it with objects using ``PyTuple_SetItem(t, i, o)`` -- note that this "eats" a reference count of ``o``, so you have to ``Py_INCREF`` it. Lists have similar functions ``PyList_New(n)`` and ``PyList_SetItem(l, i, o)``. Note that you *must* set all the tuple items to some value before you pass the tuple to Python code -- ``PyTuple_New(n)`` initializes them to NULL, which isn't a valid Python value. How do I call an object's method from C? ----------------------------------------------- The ``PyObject_CallMethod()`` function can be used to call an arbitrary method of an object. The parameters are the object, the name of the method to call, a format string like that used with ``Py_BuildValue()``, and the argument values:: PyObject * PyObject_CallMethod(PyObject *object, char *method_name, char *arg_format, ...); This works for any object that has methods -- whether built-in or user-defined. You are responsible for eventually ``Py_DECREF``'ing the return value. To call, e.g., a file object's "seek" method with arguments 10, 0 (assuming the file object pointer is "f"):: res = PyObject_CallMethod(f, "seek", "(ii)", 10, 0); if (res == NULL) { ... an exception occurred ... } else { Py_DECREF(res); } Note that since ``PyObject_CallObject()`` *always* wants a tuple for the argument list, to call a function without arguments, pass "()" for the format, and to call a function with one argument, surround the argument in parentheses, e.g. "(i)". How do I catch the output from PyErr_Print() (or anything that prints to stdout/stderr)? ----------------------------------------------------------------------------------------------- In Python code, define an object that supports the ``write()`` method. Assign this object to ``sys.stdout`` and ``sys.stderr``. Call print_error, or just allow the standard traceback mechanism to work. Then, the output will go wherever your ``write()`` method sends it. The easiest way to do this is to use the StringIO class in the standard library. Sample code and use for catching stdout:: >>> class StdoutCatcher: ... def __init__(self): ... self.data = '' ... def write(self, stuff): ... self.data = self.data + stuff ... >>> import sys >>> sys.stdout = StdoutCatcher() >>> print 'foo' >>> print 'hello world!' >>> sys.stderr.write(sys.stdout.data) foo hello world! How do I access a module written in Python from C? --------------------------------------------------------- You can get a pointer to the module object as follows:: module = PyImport_ImportModule(""); If the module hasn't been imported yet (i.e. it is not yet present in ``sys.modules``), this initializes the module; otherwise it simply returns the value of ``sys.modules[""]``. Note that it doesn't enter the module into any namespace -- it only ensures it has been initialized and is stored in ``sys.modules``. You can then access the module's attributes (i.e. any name defined in the module) as follows:: attr = PyObject_GetAttrString(module, ""); Calling ``PyObject_SetAttrString()`` to assign to variables in the module also works. How do I interface to C++ objects from Python? ------------------------------------------------------ Depending on your requirements, there are many approaches. To do this manually, begin by reading `the "Extending and Embedding" document `_. Realize that for the Python run-time system, there isn't a whole lot of difference between C and C++ -- so the strategy of building a new Python type around a C structure (pointer) type will also work for C++ objects. For C++ libraries, you can look at `SIP `_, `CXX `_, `Boost `_, or `Weave `_. `SWIG `_ is a similar automated tool that only supports C libraries. I added a module using the Setup file and the make fails; why? ---------------------------------------------------------------------- Setup must end in a newline, if there is no newline there, the build process fails. (Fixing this requires some ugly shell script hackery, and this bug is so minor that it doesn't seem worth the effort.) How do I debug an extension? ------------------------------------ When using GDB with dynamically loaded extensions, you can't set a breakpoint in your extension until your extension is loaded. In your ``.gdbinit`` file (or interactively), add the command:: br _PyImport_LoadDynamicModule Then, when you run GDB:: $ gdb /local/bin/python gdb) run myscript.py gdb) continue # repeat until your extension is loaded gdb) finish # so that your extension is loaded gdb) br myfunction.c:50 gdb) continue I want to compile a Python module on my Linux system, but some files are missing. Why? ------------------------------------------------------------------------------------------------- Most packaged versions of Python don't include the /usr/lib/python2.x/config/ directory, which contains various files required for compiling Python extensions. For Red Hat, install the python-devel RPM to get the necessary files. For Debian, run ``apt-get install python-dev``. What does "SystemError: _PyImport_FixupExtension: module yourmodule not loaded" mean? ------------------------------------------------------------------------------------------------------- This means that you have created an extension module named "yourmodule", but your module init function does not initialize with that name. Every module init function will have a line similar to:: module = Py_InitModule("yourmodule", yourmodule_functions); If the string passed to this function is not the same name as your extenion module, the ``SystemError`` exception will be raised. How do I tell "incomplete input" from "invalid input"? -------------------------------------------------------------------------------- Sometimes you want to emulate the Python interactive interpreter's behavior, where it gives you a continuation prompt when the input is incomplete (e.g. you typed the start of an "if" statement or you didn't close your parentheses or triple string quotes), but it gives you a syntax error message immediately when the input is invalid. In Python you can use the ``codeop`` module, which approximates the parser's behavior sufficiently. IDLE uses this, for example. The easiest way to do it in C is to call ``PyRun_InteractiveLoop()`` (perhaps in a separate thread) and let the Python interpreter handle the input for you. You can also set the ``PyOS_ReadlineFunctionPointer`` to point at your custom input function. See ``Modules/readline.c`` and ``Parser/myreadline.c`` for more hints. However sometimes you have to run the embedded Python interpreter in the same thread as your rest application and you can't allow the ``PyRun_InteractiveLoop()`` to stop while waiting for user input. The one solution then is to call ``PyParser_ParseString()`` and test for ``e.error`` equal to ``E_EOF``, which means the input is incomplete). Here's a sample code fragment, untested, inspired by code from Alex Farber:: #include #include #include #include #include #include int testcomplete(char *code) /* code should end in \n */ /* return -1 for error, 0 for incomplete, 1 for complete */ { node *n; perrdetail e; n = PyParser_ParseString(code, &_PyParser_Grammar, Py_file_input, &e); if (n == NULL) { if (e.error == E_EOF) return 0; return -1; } PyNode_Free(n); return 1; } Another solution is trying to compile the received string with ``Py_CompileString()``. If it compiles without errors, try to execute the returned code object by calling ``PyEval_EvalCode()``. Otherwise save the input for later. If the compilation fails, find out if it's an error or just more input is required - by extracting the message string from the exception tuple and comparing it to the string "unexpected EOF while parsing". Here is a complete example using the GNU readline library (you may want to ignore SIGINT while calling readline()):: #include #include #include #include #include #include int main (int argc, char* argv[]) { int i, j, done = 0; /* lengths of line, code */ char ps1[] = ">>> "; char ps2[] = "... "; char *prompt = ps1; char *msg, *line, *code = NULL; PyObject *src, *glb, *loc; PyObject *exc, *val, *trb, *obj, *dum; Py_Initialize (); loc = PyDict_New (); glb = PyDict_New (); PyDict_SetItemString (glb, "__builtins__", PyEval_GetBuiltins ()); while (!done) { line = readline (prompt); if (NULL == line) /* CTRL-D pressed */ { done = 1; } else { i = strlen (line); if (i > 0) add_history (line); /* save non-empty lines */ if (NULL == code) /* nothing in code yet */ j = 0; else j = strlen (code); code = realloc (code, i + j + 2); if (NULL == code) /* out of memory */ exit (1); if (0 == j) /* code was empty, so */ code[0] = '\0'; /* keep strncat happy */ strncat (code, line, i); /* append line to code */ code[i + j] = '\n'; /* append '\n' to code */ code[i + j + 1] = '\0'; src = Py_CompileString (code, "", Py_single_input); if (NULL != src) /* compiled just fine - */ { if (ps1 == prompt || /* ">>> " or */ '\n' == code[i + j - 1]) /* "... " and double '\n' */ { /* so execute it */ dum = PyEval_EvalCode ((PyCodeObject *)src, glb, loc); Py_XDECREF (dum); Py_XDECREF (src); free (code); code = NULL; if (PyErr_Occurred ()) PyErr_Print (); prompt = ps1; } } /* syntax error or E_EOF? */ else if (PyErr_ExceptionMatches (PyExc_SyntaxError)) { PyErr_Fetch (&exc, &val, &trb); /* clears exception! */ if (PyArg_ParseTuple (val, "sO", &msg, &obj) && !strcmp (msg, "unexpected EOF while parsing")) /* E_EOF */ { Py_XDECREF (exc); Py_XDECREF (val); Py_XDECREF (trb); prompt = ps2; } else /* some other syntax error */ { PyErr_Restore (exc, val, trb); PyErr_Print (); free (code); code = NULL; prompt = ps1; } } else /* some non-syntax error */ { PyErr_Print (); free (code); code = NULL; prompt = ps1; } free (line); } } Py_XDECREF(glb); Py_XDECREF(loc); Py_Finalize(); exit(0); } How do I find undefined g++ symbols __builtin_new or __pure_virtual? ----------------------------------------------------------------------------------- To dynamically load g++ extension modules, you must recompile Python, relink it using g++ (change LINKCC in the python Modules Makefile), and link your extension module using g++ (e.g., "g++ -shared -o mymodule.so mymodule.o"). Can I create an object class with some methods implemented in C and others in Python (e.g. through inheritance)? ----------------------------------------------------------------------------------------------------------------------------------------------------- In Python 2.2, you can inherit from builtin classes such as int, list, dict, etc. The Boost Python Library (BPL, http://www.boost.org/libs/python/doc/index.html) provides a way of doing this from C++ (i.e. you can inherit from an extension class written in C++ using the BPL). When importing module X, why do I get "undefined symbol: PyUnicodeUCS2*"? -------------------------------------------------------------------------------------------------- You are using a version of Python that uses a 4-byte representation for Unicode characters, but some C extension module you are importing was compiled using a Python that uses a 2-byte representation for Unicode characters (the default). If instead the name of the undefined symbol starts with ``PyUnicodeUCS4``, the problem is the reverse: Python was built using 2-byte Unicode characters, and the extension module was compiled using a Python with 4-byte Unicode characters. This can easily occur when using pre-built extension packages. RedHat Linux 7.x, in particular, provided a "python2" binary that is compiled with 4-byte Unicode. This only causes the link failure if the extension uses any of the ``PyUnicode_*()`` functions. It is also a problem if an extension uses any of the Unicode-related format specifiers for ``Py_BuildValue`` (or similar) or parameter specifications for ``PyArg_ParseTuple()``. You can check the size of the Unicode character a Python interpreter is using by checking the value of sys.maxunicode:: >>> import sys >>> if sys.maxunicode > 65535: ... print 'UCS4 build' ... else: ... print 'UCS2 build' The only way to solve this problem is to use extension modules compiled with a Python binary built using the same size for Unicode characters. python-defaults-debian/faq/extending.html0000664000000000000000000010405512632016513015742 0ustar Extending/Embedding FAQ

    Extending/Embedding FAQ

    Date: 2004-04-08
    Version: 7294
    Web site:http://www.python.org/

    1   Can I create my own functions in C?

    Yes, you can create built-in modules containing functions, variables, exceptions and even new types in C. This is explained in the document "Extending and Embedding the Python Interpreter" (http://docs.python.org/ext/ext.html).

    Most intermediate or advanced Python books will also cover this topic.

    2   Can I create my own functions in C++?

    Yes, using the C compatibility features found in C++. Place extern "C" { ... } around the Python include files and put extern "C" before each function that is going to be called by the Python interpreter. Global or static C++ objects with constructors are probably not a good idea.

    3   Writing C is hard; are there any alternatives?

    There are a number of alternatives to writing your own C extensions, depending on what you're trying to do.

    If you need more speed, Psyco generates x86 assembly code from Python bytecode. You can use Psyco to compile the most time-critical functions in your code, and gain a significant improvement with very little effort, as long as you're running on a machine with an x86-compatible processor.

    Pyrex is a compiler that accepts a slightly modified form of Python and generates the corresponding C code. Pyrex makes it possible to write an extension without having to learn Python's C API.

    If you need to interface to some C library for which no Python extension currently exists, you can try wrapping the library's data types and functions with a tool such as SWIG. For C++ libraries, you can look at SIP, CXX, Boost, or Weave.

    4   How can I execute arbitrary Python statements from C?

    The highest-level function to do this is PyRun_SimpleString() which takes a single string argument to be executed in the context of the module __main__ and returns 0 for success and -1 when an exception occurred (including SyntaxError). If you want more control, use PyRun_String(); see the source for PyRun_SimpleString() in Python/pythonrun.c.

    5   How can I evaluate an arbitrary Python expression from C?

    Call the function PyRun_String() from the previous question with the start symbol Py_eval_input; it parses an expression, evaluates it and returns its value.

    6   How do I extract C values from a Python object?

    That depends on the object's type. If it's a tuple, PyTupleSize(o) returns its length and PyTuple_GetItem(o, i) returns its i'th item. Lists have similar functions, PyListSize(o) and PyList_GetItem(o, i).

    For strings, PyString_Size(o) returns its length and PyString_AsString(o) a pointer to its value. Note that Python strings may contain null bytes so C's strlen() should not be used.

    To test the type of an object, first make sure it isn't NULL, and then use PyString_Check(o), PyTuple_Check(o), PyList_Check(o), etc.

    There is also a high-level API to Python objects which is provided by the so-called 'abstract' interface -- read Include/abstract.h for further details. It allows interfacing with any kind of Python sequence using calls like PySequence_Length(), PySequence_GetItem(), etc.) as well as many other useful protocols.

    7   How do I use Py_BuildValue() to create a tuple of arbitrary length?

    You can't. Use t = PyTuple_New(n) instead, and fill it with objects using PyTuple_SetItem(t, i, o) -- note that this "eats" a reference count of o, so you have to Py_INCREF it. Lists have similar functions PyList_New(n) and PyList_SetItem(l, i, o). Note that you must set all the tuple items to some value before you pass the tuple to Python code -- PyTuple_New(n) initializes them to NULL, which isn't a valid Python value.

    8   How do I call an object's method from C?

    The PyObject_CallMethod() function can be used to call an arbitrary method of an object. The parameters are the object, the name of the method to call, a format string like that used with Py_BuildValue(), and the argument values:

    PyObject *
    PyObject_CallMethod(PyObject *object, char *method_name,
                        char *arg_format, ...);
    

    This works for any object that has methods -- whether built-in or user-defined. You are responsible for eventually Py_DECREF'ing the return value.

    To call, e.g., a file object's "seek" method with arguments 10, 0 (assuming the file object pointer is "f"):

    res = PyObject_CallMethod(f, "seek", "(ii)", 10, 0);
    if (res == NULL) {
            ... an exception occurred ...
    }
    else {
            Py_DECREF(res);
    }
    

    Note that since PyObject_CallObject() always wants a tuple for the argument list, to call a function without arguments, pass "()" for the format, and to call a function with one argument, surround the argument in parentheses, e.g. "(i)".

    9   How do I catch the output from PyErr_Print() (or anything that prints to stdout/stderr)?

    In Python code, define an object that supports the write() method. Assign this object to sys.stdout and sys.stderr. Call print_error, or just allow the standard traceback mechanism to work. Then, the output will go wherever your write() method sends it.

    The easiest way to do this is to use the StringIO class in the standard library.

    Sample code and use for catching stdout:

    >>> class StdoutCatcher:
    ...     def __init__(self):
    ...         self.data = ''
    ...     def write(self, stuff):
    ...         self.data = self.data + stuff
    ...
    >>> import sys
    >>> sys.stdout = StdoutCatcher()
    >>> print 'foo'
    >>> print 'hello world!'
    >>> sys.stderr.write(sys.stdout.data)
    foo
    hello world!
    

    10   How do I access a module written in Python from C?

    You can get a pointer to the module object as follows:

    module = PyImport_ImportModule("<modulename>");
    

    If the module hasn't been imported yet (i.e. it is not yet present in sys.modules), this initializes the module; otherwise it simply returns the value of sys.modules["<modulename>"]. Note that it doesn't enter the module into any namespace -- it only ensures it has been initialized and is stored in sys.modules.

    You can then access the module's attributes (i.e. any name defined in the module) as follows:

    attr = PyObject_GetAttrString(module, "<attrname>");
    

    Calling PyObject_SetAttrString() to assign to variables in the module also works.

    11   How do I interface to C++ objects from Python?

    Depending on your requirements, there are many approaches. To do this manually, begin by reading the "Extending and Embedding" document. Realize that for the Python run-time system, there isn't a whole lot of difference between C and C++ -- so the strategy of building a new Python type around a C structure (pointer) type will also work for C++ objects.

    For C++ libraries, you can look at SIP, CXX, Boost, or Weave. SWIG is a similar automated tool that only supports C libraries.

    12   I added a module using the Setup file and the make fails; why?

    Setup must end in a newline, if there is no newline there, the build process fails. (Fixing this requires some ugly shell script hackery, and this bug is so minor that it doesn't seem worth the effort.)

    13   How do I debug an extension?

    When using GDB with dynamically loaded extensions, you can't set a breakpoint in your extension until your extension is loaded.

    In your .gdbinit file (or interactively), add the command:

    br _PyImport_LoadDynamicModule
    

    Then, when you run GDB:

    $ gdb /local/bin/python
    gdb) run myscript.py
    gdb) continue # repeat until your extension is loaded
    gdb) finish   # so that your extension is loaded
    gdb) br myfunction.c:50
    gdb) continue
    

    14   I want to compile a Python module on my Linux system, but some files are missing. Why?

    Most packaged versions of Python don't include the /usr/lib/python2.x/config/ directory, which contains various files required for compiling Python extensions.

    For Red Hat, install the python-devel RPM to get the necessary files.

    For Debian, run apt-get install python-dev.

    15   What does "SystemError: _PyImport_FixupExtension: module yourmodule not loaded" mean?

    This means that you have created an extension module named "yourmodule", but your module init function does not initialize with that name.

    Every module init function will have a line similar to:

    module = Py_InitModule("yourmodule", yourmodule_functions);
    

    If the string passed to this function is not the same name as your extenion module, the SystemError exception will be raised.

    16   How do I tell "incomplete input" from "invalid input"?

    Sometimes you want to emulate the Python interactive interpreter's behavior, where it gives you a continuation prompt when the input is incomplete (e.g. you typed the start of an "if" statement or you didn't close your parentheses or triple string quotes), but it gives you a syntax error message immediately when the input is invalid.

    In Python you can use the codeop module, which approximates the parser's behavior sufficiently. IDLE uses this, for example.

    The easiest way to do it in C is to call PyRun_InteractiveLoop() (perhaps in a separate thread) and let the Python interpreter handle the input for you. You can also set the PyOS_ReadlineFunctionPointer to point at your custom input function. See Modules/readline.c and Parser/myreadline.c for more hints.

    However sometimes you have to run the embedded Python interpreter in the same thread as your rest application and you can't allow the PyRun_InteractiveLoop() to stop while waiting for user input. The one solution then is to call PyParser_ParseString() and test for e.error equal to E_EOF, which means the input is incomplete). Here's a sample code fragment, untested, inspired by code from Alex Farber:

    #include <Python.h>
    #include <node.h>
    #include <errcode.h>
    #include <grammar.h>
    #include <parsetok.h>
    #include <compile.h>
    
    int testcomplete(char *code)
      /* code should end in \n */
      /* return -1 for error, 0 for incomplete, 1 for complete */
    {
      node *n;
      perrdetail e;
    
      n = PyParser_ParseString(code, &_PyParser_Grammar,
                               Py_file_input, &e);
      if (n == NULL) {
        if (e.error == E_EOF)
          return 0;
        return -1;
      }
    
      PyNode_Free(n);
      return 1;
    }
    

    Another solution is trying to compile the received string with Py_CompileString(). If it compiles without errors, try to execute the returned code object by calling PyEval_EvalCode(). Otherwise save the input for later. If the compilation fails, find out if it's an error or just more input is required - by extracting the message string from the exception tuple and comparing it to the string "unexpected EOF while parsing". Here is a complete example using the GNU readline library (you may want to ignore SIGINT while calling readline()):

    #include <stdio.h>
    #include <readline.h>
    
    #include <Python.h>
    #include <object.h>
    #include <compile.h>
    #include <eval.h>
    
    int main (int argc, char* argv[])
    {
      int i, j, done = 0;                          /* lengths of line, code */
      char ps1[] = ">>> ";
      char ps2[] = "... ";
      char *prompt = ps1;
      char *msg, *line, *code = NULL;
      PyObject *src, *glb, *loc;
      PyObject *exc, *val, *trb, *obj, *dum;
    
      Py_Initialize ();
      loc = PyDict_New ();
      glb = PyDict_New ();
      PyDict_SetItemString (glb, "__builtins__", PyEval_GetBuiltins ());
    
      while (!done)
      {
        line = readline (prompt);
    
        if (NULL == line)                          /* CTRL-D pressed */
        {
          done = 1;
        }
        else
        {
          i = strlen (line);
    
          if (i > 0)
            add_history (line);                    /* save non-empty lines */
    
          if (NULL == code)                        /* nothing in code yet */
            j = 0;
          else
            j = strlen (code);
    
          code = realloc (code, i + j + 2);
          if (NULL == code)                        /* out of memory */
            exit (1);
    
          if (0 == j)                              /* code was empty, so */
            code[0] = '\0';                        /* keep strncat happy */
    
          strncat (code, line, i);                 /* append line to code */
          code[i + j] = '\n';                      /* append '\n' to code */
          code[i + j + 1] = '\0';
    
          src = Py_CompileString (code, "<stdin>", Py_single_input);
    
          if (NULL != src)                         /* compiled just fine - */
          {
            if (ps1  == prompt ||                  /* ">>> " or */
                '\n' == code[i + j - 1])           /* "... " and double '\n' */
            {                                               /* so execute it */
              dum = PyEval_EvalCode ((PyCodeObject *)src, glb, loc);
              Py_XDECREF (dum);
              Py_XDECREF (src);
              free (code);
              code = NULL;
              if (PyErr_Occurred ())
                PyErr_Print ();
              prompt = ps1;
            }
          }                                        /* syntax error or E_EOF? */
          else if (PyErr_ExceptionMatches (PyExc_SyntaxError))
          {
            PyErr_Fetch (&exc, &val, &trb);        /* clears exception! */
    
            if (PyArg_ParseTuple (val, "sO", &msg, &obj) &&
                !strcmp (msg, "unexpected EOF while parsing")) /* E_EOF */
            {
              Py_XDECREF (exc);
              Py_XDECREF (val);
              Py_XDECREF (trb);
              prompt = ps2;
            }
            else                                   /* some other syntax error */
            {
              PyErr_Restore (exc, val, trb);
              PyErr_Print ();
              free (code);
              code = NULL;
              prompt = ps1;
            }
          }
          else                                     /* some non-syntax error */
          {
            PyErr_Print ();
            free (code);
            code = NULL;
            prompt = ps1;
          }
    
          free (line);
        }
      }
    
      Py_XDECREF(glb);
      Py_XDECREF(loc);
      Py_Finalize();
      exit(0);
    }
    

    17   How do I find undefined g++ symbols __builtin_new or __pure_virtual?

    To dynamically load g++ extension modules, you must recompile Python, relink it using g++ (change LINKCC in the python Modules Makefile), and link your extension module using g++ (e.g., "g++ -shared -o mymodule.so mymodule.o").

    18   Can I create an object class with some methods implemented in C and others in Python (e.g. through inheritance)?

    In Python 2.2, you can inherit from builtin classes such as int, list, dict, etc.

    The Boost Python Library (BPL, http://www.boost.org/libs/python/doc/index.html) provides a way of doing this from C++ (i.e. you can inherit from an extension class written in C++ using the BPL).

    19   When importing module X, why do I get "undefined symbol: PyUnicodeUCS2*"?

    You are using a version of Python that uses a 4-byte representation for Unicode characters, but some C extension module you are importing was compiled using a Python that uses a 2-byte representation for Unicode characters (the default).

    If instead the name of the undefined symbol starts with PyUnicodeUCS4, the problem is the reverse: Python was built using 2-byte Unicode characters, and the extension module was compiled using a Python with 4-byte Unicode characters.

    This can easily occur when using pre-built extension packages. RedHat Linux 7.x, in particular, provided a "python2" binary that is compiled with 4-byte Unicode. This only causes the link failure if the extension uses any of the PyUnicode_*() functions. It is also a problem if an extension uses any of the Unicode-related format specifiers for Py_BuildValue (or similar) or parameter specifications for PyArg_ParseTuple().

    You can check the size of the Unicode character a Python interpreter is using by checking the value of sys.maxunicode:

    >>> import sys
    >>> if sys.maxunicode > 65535:
    ...     print 'UCS4 build'
    ... else:
    ...     print 'UCS2 build'
    

    The only way to solve this problem is to use extension modules compiled with a Python binary built using the same size for Unicode characters.

    python-defaults-debian/faq/general.ht0000644000000000000000000017123512057417145015052 0ustar Title: General Python FAQ Content-type: text/x-rst ==================================== General Python FAQ ==================================== :Date: $Date: 2006-02-26 06:15:13 +0100 (Sun, 26 Feb 2006) $ :Version: $Revision: 8958 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: General Information ===================== What is Python? ---------------------- Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2. To find out more, start with the `Beginner's Guide to Python `_. Why was Python created in the first place? -------------------------------------------------- Here's a *very* brief summary of what started it all, written by Guido van Rossum: I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very-high-level data types (although the details are all different in Python). I had a number of gripes about the ABC language, but also liked many of its features. It was impossible to extend the ABC language (or its implementation) to remedy my complaints -- in fact its lack of extensibility was one of its biggest problems. I had some experience with using Modula-2+ and talked with the designers of Modula-3 and read the Modula-3 report. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features. I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn't easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature. It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible. During the 1989 Christmas holidays, I had a lot of time on my hand, so I decided to give it a try. During the next year, while still mostly working on it in my own time, Python was used in the Amoeba project with increasing success, and the feedback from colleagues made me add many early improvements. In February 1991, after just over a year of development, I decided to post to USENET. The rest is in the Misc/HISTORY file. What is Python good for? -------------------------------- Python is a high-level general-purpose programming language that can be applied to many different classes of problems. The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), Internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI programming), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for `the Library Reference `_ to get an idea of what's available. A wide variety of third-party extensions are also available. Consult `the Python Package Index `_ to find packages of interest to you. How does the Python version numbering scheme work? ---------------------------------------------------------- Python versions are numbered A.B.C or A.B. A is the major version number -- it is only incremented for really major changes in the language. B is the minor version number, incremented for less earth-shattering changes. C is the micro-level -- it is incremented for each bugfix release. See `PEP 6 <../../peps/pep-0006.html>`_ for more information about bugfix releases. Not all releases are bugfix releases. In the run-up to a new major release, a series of development releases are made, denoted as alpha, beta, or release candidate. Alphas are early releases in which interfaces aren't yet finalized; it's not unexpected to see an interface change between two alpha releases. Betas are more stable, preserving existing interfaces but possibly adding new modules, and release candidates are frozen, making no changes except as needed to fix critical bugs. Alpha, beta and release candidate versions have an additional suffix. The suffix for an alpha version is "aN" for some small number N, the suffix for a beta version is "bN" for some small number N, and the suffix for a release candidate version is "cN" for some small number N. In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0cN, and *those* precede 2.0. You may also find version numbers with a "+" suffix, e.g. "2.2+". These are unreleased versions, built directly from the subversion trunk. In practice, after a final minor release is made, the subversion trunk is incremented to the next minor version, which becomes the "a0" version, e.g. "2.4a0". See also the documentation for ``sys.version``, ``sys.hexversion``, and ``sys.version_info``. Are there copyright restrictions on the use of Python? -------------------------------------------------------------- Not really. You can do anything you want with the source, as long as you leave the copyrights in and display those copyrights in any documentation about Python that you produce. If you honor the copyright rules, it's OK to use Python for commercial use, to sell copies of Python in source or binary form (modified or unmodified), or to sell products that incorporate Python in some form. We would still like to know about all commercial use of Python, of course. See `the PSF license page <../../psf/license.html>`_ to find further explanations and a link to the full text of the license. How do I obtain a copy of the Python source? --------------------------------------------------- The latest Python source distribution is always available from python.org, at http://www.python.org/download/. The latest development sources can be obtained via anonymous subversion from SourceForge, at http://svn.python.org/projects/python/trunk. The source distribution is a gzipped tar file containing the complete C source, LaTeX documentation, Python library modules, example programs, and several useful pieces of freely distributable software. This will compile and run out of the box on most UNIX platforms. Older versions of Python are also available from python.org. How do I get documentation on Python? -------------------------------------------- All documentation is available on-line, starting at http://www.python.org/doc/. The standard documentation for the current stable version of Python is also available at http://docs.python.org/. The LaTeX source for the documentation is part of the source distribution. If you don't have LaTeX, the latest Python documentation set is available by anonymous FTP in various formats such as PostScript and HTML. Visit the above URL for links to the current versions. I've never programmed before. Is there a Python tutorial? ----------------------------------------------------------------- There are numerous tutorials and books available. Consult `the Beginner's Guide `_ to find information for beginning Python programmers, including lists of tutorials. Are there other FTP sites that mirror the Python distribution? --------------------------------------------------------------------- Consult the list of python.org mirrors at http://www.python.org/Mirrors.html. Is there a newsgroup or mailing list devoted to Python? -------------------------------------------------------------- There is a newsgroup, comp.lang.python, and a mailing list, `python-list `_. The newsgroup and mailing list are gatewayed into each other -- if you can read news it's unnecessary to subscribe to the mailing list. comp.lang.python is high-traffic, receiving hundreds of postings every day, and Usenet readers are often more able to cope with this volume. Announcements of new software releases and events can be found in comp.lang.python.announce, a low-traffic moderated list that receives about five postings per day. It's available as `the python-announce mailing list `_. More info about other mailing lists and newsgroups can be found at http://www.python.org/community/lists.html. How do I get a beta test version of Python? --------------------------------------------------- All releases, including alphas, betas and release candidates, are announced on the comp.lang.python and comp.lang.python.announce newsgroups. All announcements also appear on the Python home page, at http://www.python.org/; an RSS feed of news is available. You can also access the development version of Python through subversion. See http://www.python.org/dev/devfaq.html#subversion-svn for details. How do I submit bug reports and patches for Python? ---------------------------------------------------------- To report a bug or submit a patch, please use the relevant service from the Python project at SourceForge. Bugs: http://sourceforge.net/tracker/?group_id=5470&atid=105470 Patches: http://sourceforge.net/tracker/?group_id=5470&atid=305470 You must have a SourceForge account to report bugs; this makes it possible for us to contact you if we have follow-up questions. It will also enable SourceForge to send you updates as we act on your bug. For more information on how Python is developed, consult `the Python Developer's Guide <../../dev/>`_. Are there any published articles about Python that I can reference? --------------------------------------------------------------------------- It's probably best to reference your favorite book about Python. The very first article about Python is this very old article that's now quite outdated. Guido van Rossum and Jelke de Boer, "Interactively Testing Remote Servers Using the Python Programming Language", CWI Quarterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283-303. Are there any books on Python? ------------------------------------- Yes, there are many, and more are being published. See the python.org Wiki at http://www.python.org/moin/PythonBooks for a list. You can also search online bookstores for "Python" and filter out the Monty Python references; or perhaps search for "Python" and "language". Where in the world is www.python.org located? ----------------------------------------------------- It's currently in Amsterdam, graciously hosted by `XS4ALL `_. Thanks to Thomas Wouters for his work in arranging python.org's hosting. Why is it called Python? ------------------------------- At the same time he began implementing Python, Guido van Rossum was also reading the published scripts from "Monty Python's Flying Circus" (a BBC comedy series from the seventies, in the unlikely case you didn't know). It occurred to him that he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python. Do I have to like "Monty Python's Flying Circus"? ------------------------------------------------------------------- No, but it helps. :) Python in the real world ============================ How stable is Python? ---------------------------- Very stable. New, stable releases have been coming out roughly every 6 to 18 months since 1991, and this seems likely to continue. Currently there are usually around 18 months between major releases. With the introduction of retrospective "bugfix" releases the stability of existing releases is being improved. Bugfix releases, indicated by a third component of the version number (e.g. 2.1.3, 2.2.2), are managed for stability; only fixes for known problems are included in a bugfix release, and it's guaranteed that interfaces will remain the same throughout a series of bugfix releases. The `2.4.2 release <../../2.4.2/>`_ is the most stable version at this point in time. How many people are using Python? ---------------------------------------- Probably tens of thousands of users, though it's difficult to obtain an exact count. Python is available for free download, so there are no sales figures, and it's available from many different sites and packaged with many Linux distributions, so download statistics don't tell the whole story either. The comp.lang.python newsgroup is very active, but not all Python users post to the group or even read it. Overall there is no accurate estimate of the number of subscribers or Python users. Have any significant projects been done in Python? --------------------------------------------------------- See http://www.pythonology.org/success for a list of projects that use Python. Consulting the proceedings for `past Python conferences <../../workshops/>`_ will reveal contributions from many different companies and organizations. High-profile Python projects include `the Mailman mailing list manager `_ and `the Zope application server `_. Several Linux distributions, most notably `Red Hat `_, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Industrial Light & Magic. What new developments are expected for Python in the future? ------------------------------------------------------------------- See http://www.python.org/peps for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. `PEP 1 <../../peps/pep-0001.html>`_ explains the PEP process and PEP format; read it first if you want to submit a PEP. New developments are discussed on `the python-dev mailing list `_. Is it reasonable to propose incompatible changes to Python? ------------------------------------------------------------------ In general, no. There are already millions of lines of Python code around the world, so any change in the language that invalidates more than a very small fraction of existing programs has to be frowned upon. Even if you can provide a conversion program, there still is the problem of updating all documentation; many books have been written about Python, and we don't want to invalidate them all at a single stroke. Providing a gradual upgrade path is necessary if a feature has to be changed. `PEP 5 <../../peps/pep-0005.html>`_ describes the procedure followed for introducing backward-incompatible changes while minimizing disruption for users. What is the Python Software Foundation? ----------------------------------------- The Python Software Foundation is an independent non-profit organization that holds the copyright on Python versions 2.1 and newer. The PSF's mission is to advance open source technology related to the Python programming language and to publicize the use of Python. The PSF's home page is at http://www.python.org/psf/. Donations to the PSF are tax-exempt in the US. If you use Python and find it helpful, please contribute via `the PSF donation page <../../psf/donations.html>`_. Is Python Y2K (Year 2000) Compliant? -------------------------------------------- As of August, 2003 no major problems have been reported and Y2K compliance seems to be a non-issue. Python does very few date calculations and for those it does perform relies on the C library functions. Python generally represents times either as seconds since 1970 or as a ``(year, month, day, ...)`` tuple where the year is expressed with four digits, which makes Y2K bugs unlikely. So as long as your C library is okay, Python should be okay. Of course, it's possible that a particular application written in Python makes assumptions about 2-digit years. Because Python is available free of charge, there are no absolute guarantees. If there *are* unforseen problems, liability is the user's problem rather than the developers', and there is nobody you can sue for damages. The Python copyright notice contains the following disclaimer: 4. PSF is making Python 2.3 available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. The good news is that *if* you encounter a problem, you have full source available to track it down and fix it. This is one advantage of an open source programming environment. Is Python a good language for beginning programmers? ----------------------------------------------------------------------- Yes. If you want to discuss Python's use in education, then you may be interested in joining `the edu-sig mailing list <../../sigs/edu-sig>`_. It is still common to start students with a procedural (subset of a) statically typed language such as Pascal, C, or a subset of C++ or Java. Students may be better served by learning Python as their first language. Python has a very simple and consistent syntax and a large standard library and, most importantly, using Python in a beginning programming course permits students to concentrate on important programming skills such as problem decomposition and data type design. With Python, students can be quickly introduced to basic concepts such as loops and procedures. They can even probably work with user-defined objects in their very first course. For a student who has never programmed before, using a statically typed language seems unnatural. It presents additional complexity that the student must master and slows the pace of the course. The students are trying to learn to think like a computer, decompose problems, design consistent interfaces, and encapsulate data. While learning to use a statically typed language is important in the long term, it is not necessarily the best topic to address in the students' first programming course. Many other aspects of Python make it a good first language. Like Java, Python has a large standard library so that students can be assigned programming projects very early in the course that *do* something. Assignments aren't restricted to the standard four-function calculator and check balancing programs. By using the standard library, students can gain the satisfaction of working on realistic applications as they learn the fundamentals of programming. Using the standard library also teaches students about code reuse. Third-party modules such as PyGame are also helpful in extending the students' reach. Python's interactive interpreter enables students to test language features while they're programming. They can keep a window with the interpreter running while they enter their program's source in another window. If they can't remember the methods for a list, they can do something like this:: >>> L = [] >>> dir(L) ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> help(L.append) Help on built-in function append: append(...) L.append(object) -- append object to end >>> L.append(1) >>> L [1] With the interpreter, documentation is never far from the student as he's programming. There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. PythonWin is a Windows-specific IDE. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult http://www.python.org/editors/ for a full list of Python editing environments. Upgrading Python ===================== What is this bsddb185 module my application keeps complaining about? -------------------------------------------------------------------- Starting with Python2.3, the distribution includes the `PyBSDDB package ` as a replacement for the old bsddb module. It includes functions which provide backward compatibility at the API level, but requires a newer version of the underlying `Berkeley DB `_ library. Files created with the older bsddb module can't be opened directly using the new module. Using your old version of Python and a pair of scripts which are part of Python 2.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can convert your old database files to the new format. Using your old Python version, run the db2pickle.py script to convert it to a pickle, e.g.:: python2.2 /db2pickley.py database.db database.pck Rename your database file:: mv database.db olddatabase.db Now convert the pickle file to a new format database:: python2.3 /pickle2db.py database.db database.pck The precise commands you use will vary depending on the particulars of your installation. For full details about operation of these two scripts check the doc string at the start of each one. Python's Design ===================== Why does Python use indentation for grouping of statements? ----------------------------------------------------------- Guido van Rossum believes that using indentation for grouping is extremely elegant and contributes a lot to the clarity of the average Python program. Most people learn to love this feature after awhile. Since there are no begin/end brackets there cannot be a disagreement between grouping perceived by the parser and the human reader. Occasionally C programmers will encounter a fragment of code like this:: if (x <= y) x++; y--; z++; Only the ``x++`` statement is executed if the condition is true, but the indentation leads you to believe otherwise. Even experienced C programmers will sometimes stare a long time at it wondering why y is being decremented even for ``x > y``. Because there are no begin/end brackets, Python is much less prone to coding-style conflicts. In C there are many different ways to place the braces. If you're used to reading and writing code that uses one style, you will feel at least slightly uneasy when reading (or being required to write) another style. Many coding styles place begin/end brackets on a line by themself. This makes programs considerably longer and wastes valuable screen space, making it harder to get a good overview of a program. Ideally, a function should fit on onescreen (say, 20-30 lines). 20 lines of Python can do a lot more work than 20 lines of C. This is not solely due to the lack of begin/end brackets -- the lack of declarations and the high-level data types are also responsible -- but the indentation-based syntax certainly helps. Why am I getting strange results with simple arithmetic operations? ------------------------------------------------------------------- See the next question. Why are floating point calculations so inaccurate? -------------------------------------------------- People are often very surprised by results like this:: >>> 1.2-1.0 0.199999999999999996 and think it is a bug in Python. It's not. It's a problem caused by the internal representation of floating point numbers, which uses a fixed number of binary digits to represent a decimal number. Some decimal numbers can't be represented exactly in binary, resulting in small roundoff errors. In decimal math, there are many numbers that can't be represented with a fixed number of decimal digits, e.g. 1/3 = 0.3333333333....... In base 2, 1/2 = 0.1, 1/4 = 0.01, 1/8 = 0.001, etc. .2 equals 2/10 equals 1/5, resulting in the binary fractional number 0.001100110011001... Floating point numbers only have 32 or 64 bits of precision, so the digits are cut off at some point, and the resulting number is 0.199999999999999996 in decimal, not 0.2. A floating point's ``repr()`` function prints as many digits are necessary to make ``eval(repr(f)) == f`` true for any float f. The ``str()`` function prints fewer digits and this often results in the more sensible number that was probably intended:: >>> 0.2 0.20000000000000001 >>> print 0.2 0.2 Again, this has nothing to do with Python, but with the way the underlying C platform handles floating point numbers, and ultimately with the inaccuracy you'll always have when writing down numbers as a string of a fixed number of digits. One of the consequences of this is that it is dangerous to compare the result of some computation to a float with == ! Tiny inaccuracies may mean that == fails. Instead, you have to check that the difference between the two numbers is less than a certain threshold:: epsilon = 0.0000000000001 # Tiny allowed error expected_result = 0.4 if expected_result-epsilon <= computation() <= expected_result+epsilon: ... Please see the chapter on `floating point arithmetic `_ in the Python tutorial for more information. Why are Python strings immutable? --------------------------------- There are several advantages. One is performance: knowing that a string is immutable makes it easy to lay it out at construction time -- fixed and unchanging storage requirements. This is also one of the reasons for the distinction between tuples and lists. The other is that strings in Python are considered as "elemental" as numbers. No amount of activity will change the value 8 to anything else, and in Python, no amount of activity will change the string "eight" to anything else. Why must 'self' be used explicitly in method definitions and calls? ------------------------------------------------------------------- The idea was borrowed from Modula-3. It turns out to be very useful, for a variety of reasons. First, it's more obvious that you are using a method or instance attribute instead of a local variable. Reading ``self.x`` or ``self.meth()`` makes it absolutely clear that an instance variable or method is used even if you don't know the class definition by heart. In C++, you can sort of tell by the lack of a local variable declaration (assuming globals are rare or easily recognizable) -- but in Python, there are no local variable declarations, so you'd have to look up the class definition to be sure. Some C++ and Java coding standards call for instance attributes to have an ``m_`` prefix, so this explicitness is still useful in those languages, too. Second, it means that no special syntax is necessary if you want to explicitly reference or call the method from a particular class. In C++, if you want to use a method from a base class which is overridden in a derived class, you have to use the :: operator -- in Python you can write baseclass.methodname(self, ). This is particularly useful for __init__() methods, and in general in cases where a derived class method wants to extend the base class method of the same name and thus has to call the base class method somehow. Finally, for instance variables it solves a syntactic problem with assignment: since local variables in Python are (by definition!) those variables to which a value assigned in a function body (and that aren't explicitly declared global), there has to be some way to tell the interpreter that an assignment was meant to assign to an instance variable instead of to a local variable, and it should preferably be syntactic (for efficiency reasons). C++ does this through declarations, but Python doesn't have declarations and it would be a pity having to introduce them just for this purpose. Using the explicit "self.var" solves this nicely. Similarly, for using instance variables, having to write "self.var" means that references to unqualified names inside a method don't have to search the instance's directories. To put it another way, local variables and instance variables live in two different namespaces, and you need to tell Python which namespace to use. Why can't I use an assignment in an expression? ------------------------------------------------------- Many people used to C or Perl complain that they want to use this C idiom:: while (line = readline(f)) { ...do something with line... } where in Python you're forced to write this:: while True: line = f.readline() if not line: break ...do something with line... The reason for not allowing assignment in Python expressions is a common, hard-to-find bug in those other languages, caused by this construct:: if (x = 0) { ...error handling... } else { ...code that only works for nonzero x... } The error is a simple typo: ``x = 0``, which assigns 0 to the variable ``x``, was written while the comparison ``x == 0`` is certainly what was intended. Many alternatives have been proposed. Most are hacks that save some typing but use arbitrary or cryptic syntax or keywords, and fail the simple criterion for language change proposals: it should intuitively suggest the proper meaning to a human reader who has not yet been introduced to the construct. An interesting phenomenon is that most experienced Python programmers recognize the "while True" idiom and don't seem to be missing the assignment in expression construct much; it's only newcomers who express a strong desire to add this to the language. There's an alternative way of spelling this that seems attractive but is generally less robust than the "while True" solution:: line = f.readline() while line: ...do something with line... line = f.readline() The problem with this is that if you change your mind about exactly how you get the next line (e.g. you want to change it into ``sys.stdin.readline()``) you have to remember to change two places in your program -- the second occurrence is hidden at the bottom of the loop. The best approach is to use iterators, making it possible to loop through objects using the ``for`` statement. For example, in the current version of Python file objects support the iterator protocol, so you can now write simply:: for line in f: ... do something with line... Why does Python use methods for some functionality (e.g. list.index()) but functions for other (e.g. len(list))? ---------------------------------------------------------------------------------------------------------------- The major reason is history. Functions were used for those operations that were generic for a group of types and which were intended to work even for objects that didn't have methods at all (e.g. tuples). It is also convenient to have a function that can readily be applied to an amorphous collection of objects when you use the functional features of Python (``map()``, ``apply()`` et al). In fact, implementing ``len()``, ``max()``, ``min()`` as a built-in function is actually less code than implementing them as methods for each type. One can quibble about individual cases but it's a part of Python, and it's too late to make such fundamental changes now. The functions have to remain to avoid massive code breakage. Note that for string operations Python has moved from external functions (the ``string`` module) to methods. However, ``len()`` is still a function. Why is join() a string method instead of a list or tuple method? ---------------------------------------------------------------- Strings became much more like other standard types starting in Python 1.6, when methods were added which give the same functionality that has always been available using the functions of the string module. Most of these new methods have been widely accepted, but the one which appears to make some programmers feel uncomfortable is:: ", ".join(['1', '2', '4', '8', '16']) which gives the result:: "1, 2, 4, 8, 16" There are two usual arguments against this usage. The first runs along the lines of: "It looks really ugly using a method of a string literal (string constant)", to which the answer is that it might, but a string literal is just a fixed value. If the methods are to be allowed on names bound to strings there is no logical reason to make them unavailable on literals. The second objection is typically cast as: "I am really telling a sequence to join its members together with a string constant". Sadly, you aren't. For some reason there seems to be much less difficulty with having split() as a string method, since in that case it is easy to see that :: "1, 2, 4, 8, 16".split(", ") is an instruction to a string literal to return the substrings delimited by the given separator (or, by default, arbitrary runs of white space). In this case a Unicode string returns a list of Unicode strings, an ASCII string returns a list of ASCII strings, and everyone is happy. join() is a string method because in using it you are telling the separator string to iterate over an arbitrary sequence, forming string representations of each of the elements, and inserting itself between the elements' representations. This method can be used with any argument which obeys the rules for sequence objects, inluding any new classes you might define yourself. Because this is a string method it can work for Unicode strings as well as plain ASCII strings. If join() were a method of the sequence types then the sequence types would have to decide which type of string to return depending on the type of the separator. If none of these arguments persuade you, then for the moment you can continue to use the join() function from the string module, which allows you to write :: string.join(['1', '2', '4', '8', '16'], ", ") How fast are exceptions? ------------------------ A try/except block is extremely efficient. Actually executing an exception is expensive. In versions of Python prior to 2.0 it was common to use this idiom:: try: value = dict[key] except KeyError: dict[key] = getvalue(key) value = dict[key] This only made sense when you expected the dict to have the key almost all the time. If that wasn't the case, you coded it like this:: if dict.has_key(key): value = dict[key] else: dict[key] = getvalue(key) value = dict[key] (In Python 2.0 and higher, you can code this as ``value = dict.setdefault(key, getvalue(key))``.) Why isn't there a switch or case statement in Python? ----------------------------------------------------- You can do this easily enough with a sequence of ``if... elif... elif... else``. There have been some proposals for switch statement syntax, but there is no consensus (yet) on whether and how to do range tests. See `PEP 275 <../../peps/pep-0275.html>`_ for complete details and the current status. For cases where you need to choose from a very large number of possibilities, you can create a dictionary mapping case values to functions to call. For example:: def function_1 (...): ... functions = {'a': function_1, 'b': function_2, 'c': self.method_1, ...} func = functions[value] func() For calling methods on objects, you can simplify yet further by using the ``getattr()`` built-in to retrieve methods with a particular name:: def visit_a (self, ...): ... ... def dispatch (self, value): method_name = 'visit_' + str(value) method = getattr(self, method_name) method() It's suggested that you use a prefix for the method names, such as ``visit_`` in this example. Without such a prefix, if values are coming from an untrusted source, an attacker would be able to call any method on your object. Can't you emulate threads in the interpreter instead of relying on an OS-specific thread implementation? -------------------------------------------------------------------------------------------------------- Answer 1: Unfortunately, the interpreter pushes at least one C stack frame for each Python stack frame. Also, extensions can call back into Python at almost random moments. Therefore, a complete threads implementation requires thread support for C. Answer 2: Fortunately, there is `Stackless Python `_, which has a completely redesigned interpreter loop that avoids the C stack. It's still experimental but looks very promising. Although it is binary compatible with standard Python, it's still unclear whether Stackless will make it into the core -- maybe it's just too revolutionary. Why can't lambda forms contain statements? ------------------------------------------ Python lambda forms cannot contain statements because Python's syntactic framework can't handle statements nested inside expressions. However, in Python, this is not a serious problem. Unlike lambda forms in other languages, where they add functionality, Python lambdas are only a shorthand notation if you're too lazy to define a function. Functions are already first class objects in Python, and can be declared in a local scope. Therefore the only advantage of using a lambda form instead of a locally-defined function is that you don't need to invent a name for the function -- but that's just a local variable to which the function object (which is exactly the same type of object that a lambda form yields) is assigned! Can Python be compiled to machine code, C or some other language? ----------------------------------------------------------------- Not easily. Python's high level data types, dynamic typing of objects and run-time invocation of the interpreter (using ``eval()`` or ``exec``) together mean that a "compiled" Python program would probably consist mostly of calls into the Python run-time system, even for seemingly simple operations like ``x+1``. Several projects described in the Python newsgroup or at past `Python conferences <../../workshops/>`_ have shown that this approach is feasible, although the speedups reached so far are only modest (e.g. 2x). Jython uses the same strategy for compiling to Java bytecode. (Jim Hugunin has demonstrated that in combination with whole-program analysis, speedups of 1000x are feasible for small demo programs. See the proceedings from the `1997 Python conference <../../workshops/1997-10/proceedings/>`_ for more information.) Internally, Python source code is always translated into a bytecode representation, and this bytecode is then executed by the Python virtual machine. In order to avoid the overhead of repeatedly parsing and translating modules that rarely change, this byte code is written into a file whose name ends in ".pyc" whenever a module is parsed. When the corresponding .py file is changed, it is parsed and translated again and the .pyc file is rewritten. There is no performance difference once the .pyc file has been loaded, as the bytecode read from the .pyc file is exactly the same as the bytecode created by direct translation. The only difference is that loading code from a .pyc file is faster than parsing and translating a .py file, so the presence of precompiled .pyc files improves the start-up time of Python scripts. If desired, the Lib/compileall.py module can be used to create valid .pyc files for a given set of modules. Note that the main script executed by Python, even if its filename ends in .py, is not compiled to a .pyc file. It is compiled to bytecode, but the bytecode is not saved to a file. Usually main scripts are quite short, so this doesn't cost much speed. There are also several programs which make it easier to intermingle Python and C code in various ways to increase performance. See, for example, `Psyco `_, `Pyrex `_, `PyInline `_, `Py2Cmod `_, and `Weave `_. How does Python manage memory? ------------------------------ The details of Python memory management depend on the implementation. The standard C implementation of Python uses reference counting to detect inaccessible objects, and another mechanism to collect reference cycles, periodically executing a cycle detection algorithm which looks for inaccessible cycles and deletes the objects involved. The ``gc`` module provides functions to perform a garbage collection, obtain debugging statistics, and tune the collector's parameters. Jython relies on the Java runtime so the JVM's garbage collector is used. This difference can cause some subtle porting problems if your Python code depends on the behavior of the reference counting implementation. Sometimes objects get stuck in tracebacks temporarily and hence are not deallocated when you might expect. Clear the tracebacks with:: import sys sys.exc_clear() sys.exc_traceback = sys.last_traceback = None Tracebacks are used for reporting errors, implementing debuggers and related things. They contain a portion of the program state extracted during the handling of an exception (usually the most recent exception). In the absence of circularities and tracebacks, Python programs need not explicitly manage memory. Why doesn't Python use a more traditional garbage collection scheme? For one thing, this is not a C standard feature and hence it's not portable. (Yes, we know about the Boehm GC library. It has bits of assembler code for *most* common platforms, not for all of them, and although it is mostly transparent, it isn't completely transparent; patches are required to get Python to work with it.) Traditional GC also becomes a problem when Python is embedded into other applications. While in a standalone Python it's fine to replace the standard malloc() and free() with versions provided by the GC library, an application embedding Python may want to have its *own* substitute for malloc() and free(), and may not want Python's. Right now, Python works with anything that implements malloc() and free() properly. In Jython, the following code (which is fine in CPython) will probably run out of file descriptors long before it runs out of memory:: for file in : f = open(file) c = f.read(1) Using the current reference counting and destructor scheme, each new assignment to f closes the previous file. Using GC, this is not guaranteed. If you want to write code that will work with any Python implementation, you should explicitly close the file; this will work regardless of GC:: for file in : f = open(file) c = f.read(1) f.close() Why isn't all memory freed when Python exits? ----------------------------------------------------- Objects referenced from the global namespaces of Python modules are not always deallocated when Python exits. This may happen if there are circular references. There are also certain bits of memory that are allocated by the C library that are impossible to free (e.g. a tool like Purify will complain about these). Python is, however, aggressive about cleaning up memory on exit and does try to destroy every single object. If you want to force Python to delete certain things on deallocation use the ``sys.exitfunc()`` hook to run a function that will force those deletions. Why are there separate tuple and list data types? ------------------------------------------------- Lists and tuples, while similar in many respects, are generally used in fundamentally different ways. Tuples can be thought of as being similar to Pascal records or C structs; they're small collections of related data which may be of different types which are operated on as a group. For example, a Cartesian coordinate is appropriately represented as a tuple of two or three numbers. Lists, on the other hand, are more like arrays in other languages. They tend to hold a varying number of objects all of which have the same type and which are operated on one-by-one. For example, ``os.listdir('.')`` returns a list of strings representing the files in the current directory. Functions which operate on this output would generally not break if you added another file or two to the directory. Tuples are immutable, meaning that once a tuple has been created, you can't replace any of its elements with a new value. Lists are mutable, meaning that you can always change a list's elements. Only immutable elements can be used as dictionary keys, and hence only tuples and not lists can be used as keys. How are lists implemented? -------------------------- Python's lists are really variable-length arrays, not Lisp-style linked lists. The implementation uses a contiguous array of references to other objects, and keeps a pointer to this array and the array's length in a list head structure. This makes indexing a list ``a[i]`` an operation whose cost is independent of the size of the list or the value of the index. When items are appended or inserted, the array of references is resized. Some cleverness is applied to improve the performance of appending items repeatedly; when the array must be grown, some extra space is allocated so the next few times don't require an actual resize. How are dictionaries implemented? ----------------------------------------- Python's dictionaries are implemented as resizable hash tables. Compared to B-trees, this gives better performance for lookup (the most common operation by far) under most circumstances, and the implementation is simpler. Dictionaries work by computing a hash code for each key stored in the dictionary using the ``hash()`` built-in function. The hash code varies widely depending on the key; for example, "Python" hashes to -539294296 while "python", a string that differs by a single bit, hashes to 1142331976. The hash code is then used to calculate a location in an internal array where the value will be stored. Assuming that you're storing keys that all have different hash values, this means that dictionaries take constant time -- O(1), in computer science notation -- to retrieve a key. It also means that no sorted order of the keys is maintained, and traversing the array as the ``.keys()`` and ``.items()`` do will output the dictionary's content in some arbitrary jumbled order. Why must dictionary keys be immutable? ---------------------------------------------- The hash table implementation of dictionaries uses a hash value calculated from the key value to find the key. If the key were a mutable object, its value could change, and thus its hash could also change. But since whoever changes the key object can't tell that it was being used as a dictionary key, it can't move the entry around in the dictionary. Then, when you try to look up the same object in the dictionary it won't be found because its hash value is different. If you tried to look up the old value it wouldn't be found either, because the value of the object found in that hash bin would be different. If you want a dictionary indexed with a list, simply convert the list to a tuple first; the function ``tuple(L)`` creates a tuple with the same entries as the list ``L``. Tuples are immutable and can therefore be used as dictionary keys. Some unacceptable solutions that have been proposed: - Hash lists by their address (object ID). This doesn't work because if you construct a new list with the same value it won't be found; e.g.:: d = {[1,2]: '12'} print d[[1,2]] would raise a KeyError exception because the id of the ``[1,2]`` used in the second line differs from that in the first line. In other words, dictionary keys should be compared using ``==``, not using 'is'. - Make a copy when using a list as a key. This doesn't work because the list, being a mutable object, could contain a reference to itself, and then the copying code would run into an infinite loop. - Allow lists as keys but tell the user not to modify them. This would allow a class of hard-to-track bugs in programs when you forgot or modified a list by accident. It also invalidates an important invariant of dictionaries: every value in ``d.keys()`` is usable as a key of the dictionary. - Mark lists as read-only once they are used as a dictionary key. The problem is that it's not just the top-level object that could change its value; you could use a tuple containing a list as a key. Entering anything as a key into a dictionary would require marking all objects reachable from there as read-only -- and again, self-referential objects could cause an infinite loop. There is a trick to get around this if you need to, but use it at your own risk: You can wrap a mutable structure inside a class instance which has both a __cmp__ and a __hash__ method. You must then make sure that the hash value for all such wrapper objects that reside in a dictionary (or other hash based structure), remain fixed while the object is in the dictionary (or other structure).:: class ListWrapper: def __init__(self, the_list): self.the_list = the_list def __cmp__(self, other): return self.the_list == other.the_list def __hash__(self): l = self.the_list result = 98767 - len(l)*555 for i in range(len(l)): try: result = result + (hash(l[i]) % 9999999) * 1001 + i except: result = (result % 7777777) + i * 333 return result Note that the hash computation is complicated by the possibility that some members of the list may be unhashable and also by the possibility of arithmetic overflow. Furthermore it must always be the case that if ``o1 == o2`` (ie ``o1.__cmp__(o2)==0``) then ``hash(o1)==hash(o2)`` (ie, ``o1.__hash__() == o2.__hash__()``), regardless of whether the object is in a dictionary or not. If you fail to meet these restrictions dictionaries and other hash based structures will misbehave. In the case of ListWrapper, whenever the wrapper object is in a dictionary the wrapped list must not change to avoid anomalies. Don't do this unless you are prepared to think hard about the requirements and the consequences of not meeting them correctly. Consider yourself warned. Why doesn't list.sort() return the sorted list? ------------------------------------------------------- In situations where performance matters, making a copy of the list just to sort it would be wasteful. Therefore, list.sort() sorts the list in place. In order to remind you of that fact, it does not return the sorted list. This way, you won't be fooled into accidentally overwriting a list when you need a sorted copy but also need to keep the unsorted version around. In Python 2.4 a new builtin - sorted() - has been added. This function creates a new list from a passed iterable, sorts it and returns it. As a result, here's the idiom to iterate over the keys of a dictionary in sorted order:: for key in sorted(dict.iterkeys()): ...do whatever with dict[key]... Versions of Python prior to 2.4 need to use the following idiom:: keys = dict.keys() keys.sort() for key in keys: ...do whatever with dict[key]... How do you specify and enforce an interface spec in Python? ------------------------------------------------------------------- An interface specification for a module as provided by languages such as C++ and Java describes the prototypes for the methods and functions of the module. Many feel that compile-time enforcement of interface specifications help in the construction of large programs. Python does not support interface specifications directly, but many of their advantages can be obtained by an appropriate test discipline for components, which can often be very easily accomplished in Python. There is also a tool, PyChecker, which can be used to find problems due to subclassing. A good test suite for a module can at once provide a regression test and serve as both a module interface specification and a set of examples. Many Python modules can be run as a script to provide a simple "self test." Even modules which use complex external interfaces can often be tested in isolation using trivial "stub" emulations of the external interface. The ``doctest`` and ``unittest`` modules or third-party test frameworks can be used to construct exhaustive test suites that exercise every line of code in a module. An appropriate testing discipline can help build large complex applications in Python as well as having interface specifications would. In fact, it can be better because an interface specification cannot test certain properties of a program. For example, the ``append()`` method is expected to add new elements to the end of some internal list; an interface specification cannot test that your ``append()`` implementation will actually do this correctly, but it's trivial to check this property in a test suite. Writing test suites is very helpful, and you might want to design your code with an eye to making it easily tested. One increasingly popular technique, test-directed development, calls for writing parts of the test suite first, before you write any of the actual code. Of course Python allows you to be sloppy and not write test cases at all. Why are default values shared between objects? ---------------------------------------------------------------- This type of bug commonly bites neophyte programmers. Consider this function:: def foo(D={}): # Danger: shared reference to one dict for all calls ... compute something ... D[key] = value return D The first time you call this function, ``D`` contains a single item. The second time, ``D`` contains two items because when ``foo()`` begins executing, ``D`` starts out with an item already in it. It is often expected that a function call creates new objects for default values. This is not what happens. Default values are created exactly once, when the function is defined. If that object is changed, like the dictionary in this example, subsequent calls to the function will refer to this changed object. By definition, immutable objects such as numbers, strings, tuples, and ``None``, are safe from change. Changes to mutable objects such as dictionaries, lists, and class instances can lead to confusion. Because of this feature, it is good programming practice to not use mutable objects as default values. Instead, use ``None`` as the default value and inside the function, check if the parameter is ``None`` and create a new list/dictionary/whatever if it is. For example, don't write:: def foo(dict={}): ... but:: def foo(dict=None): if dict is None: dict = {} # create a new dict for local namespace This feature can be useful. When you have a function that's time-consuming to compute, a common technique is to cache the parameters and the resulting value of each call to the function, and return the cached value if the same value is requested again. This is called "memoizing", and can be implemented like this:: # Callers will never provide a third parameter for this function. def expensive (arg1, arg2, _cache={}): if _cache.has_key((arg1, arg2)): return _cache[(arg1, arg2)] # Calculate the value result = ... expensive computation ... _cache[(arg1, arg2)] = result # Store result in the cache return result You could use a global variable containing a dictionary instead of the default value; it's a matter of taste. Why is there no goto? ------------------------ You can use exceptions to provide a "structured goto" that even works across function calls. Many feel that exceptions can conveniently emulate all reasonable uses of the "go" or "goto" constructs of C, Fortran, and other languages. For example:: class label: pass # declare a label try: ... if (condition): raise label() # goto label ... except label: # where to goto pass ... This doesn't allow you to jump into the middle of a loop, but that's usually considered an abuse of goto anyway. Use sparingly. Why do I get a SyntaxError for a 'continue' inside a 'try'? ------------------------------------------------------------------- This is an implementation limitation, caused by the extremely simple-minded way Python generates bytecode. The ``try`` block pushes something on the "block stack" which the ``continue`` would have to pop off again. The current code generator doesn't have the data structures around so that ``continue`` can generate the right code. Note that Jython doesn't have this restriction! Why can't raw strings (r-strings) end with a backslash? --------------------------------------------------------------- More precisely, they can't end with an odd number of backslashes: the unpaired backslash at the end escapes the closing quote character, leaving an unterminated string. Raw strings were designed to ease creating input for processors (chiefly regular expression engines) that want to do their own backslash escape processing. Such processors consider an unmatched trailing backslash to be an error anyway, so raw strings disallow that. In return, they allow you to pass on the string quote character by escaping it with a backslash. These rules work well when r-strings are used for their intended purpose. If you're trying to build Windows pathnames, note that all Windows system calls accept forward slashes too:: f = open("/mydir/file.txt") # works fine! If you're trying to build a pathname for a DOS command, try e.g. one of :: dir = r"\this\is\my\dos\dir" "\\" dir = r"\this\is\my\dos\dir\ "[:-1] dir = "\\this\\is\\my\\dos\\dir\\" Why doesn't Python have a "with" statement like some other languages? --------------------------------------------------------------------------------------- Because such a construct would be ambiguous. Some languages, such as Object Pascal, Delphi, and C++, use static types. So it is possible to know, in an unambiguous way, what member is being assigned in a "with" clause. This is the main point - the compiler *always* knows the scope of every variable at compile time. Python uses dynamic types. It is impossible to know in advance which attribute will be referenced at runtime. Member attributes may be added or removed from objects on the fly. This would make it impossible to know, from a simple reading, what attribute is being referenced - a local one, a global one, or a member attribute. For instance, take the following incomplete snippet:: def foo(a): with a: print x The snippet assumes that "a" must have a member attribute called "x". However, there is nothing in Python that guarantees that. What should happen if "a" is, let us say, an integer? And if I have a global variable named "x", will it end up being used inside the with block? As you see, the dynamic nature of Python makes such choices much harder. The primary benefit of "with" and similar language features (reduction of code volume) can, however, easily be achieved in Python by assignment. Instead of:: function(args).dict[index][index].a = 21 function(args).dict[index][index].b = 42 function(args).dict[index][index].c = 63 write this:: ref = function(args).dict[index][index] ref.a = 21 ref.b = 42 ref.c = 63 This also has the side-effect of increasing execution speed because name bindings are resolved at run-time in Python, and the second version only needs to perform the resolution once. If the referenced object does not have a, b and c attributes, of course, the end result is still a run-time exception. Why are colons required for the if/while/def/class statements? -------------------------------------------------------------------- The colon is required primarily to enhance readability (one of the results of the experimental ABC language). Consider this:: if a==b print a versus :: if a==b: print a Notice how the second one is slightly easier to read. Notice further how a colon sets off the example in the second line of this FAQ answer; it's a standard usage in English. Another minor reason is that the colon makes it easier for editors with syntax highlighting; they can look for colons to decide when indentation needs to be increased instead of having to do a more elaborate parsing of the program text. python-defaults-debian/faq/general.html0000664000000000000000000026445012632016513015400 0ustar General Python FAQ

    General Python FAQ

    Date: 2006-02-26
    Version: 8958
    Web site:http://www.python.org/

    Contents

    1   General Information

    1.1   What is Python?

    Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2.

    To find out more, start with the Beginner's Guide to Python.

    1.2   Why was Python created in the first place?

    Here's a very brief summary of what started it all, written by Guido van Rossum:

    I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very-high-level data types (although the details are all different in Python).

    I had a number of gripes about the ABC language, but also liked many of its features. It was impossible to extend the ABC language (or its implementation) to remedy my complaints -- in fact its lack of extensibility was one of its biggest problems. I had some experience with using Modula-2+ and talked with the designers of Modula-3 and read the Modula-3 report. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features.

    I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn't easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature.

    It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible.

    During the 1989 Christmas holidays, I had a lot of time on my hand, so I decided to give it a try. During the next year, while still mostly working on it in my own time, Python was used in the Amoeba project with increasing success, and the feedback from colleagues made me add many early improvements.

    In February 1991, after just over a year of development, I decided to post to USENET. The rest is in the Misc/HISTORY file.

    1.3   What is Python good for?

    Python is a high-level general-purpose programming language that can be applied to many different classes of problems.

    The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), Internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI programming), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for the Library Reference to get an idea of what's available. A wide variety of third-party extensions are also available. Consult the Python Package Index to find packages of interest to you.

    1.4   How does the Python version numbering scheme work?

    Python versions are numbered A.B.C or A.B. A is the major version number -- it is only incremented for really major changes in the language. B is the minor version number, incremented for less earth-shattering changes. C is the micro-level -- it is incremented for each bugfix release. See PEP 6 for more information about bugfix releases.

    Not all releases are bugfix releases. In the run-up to a new major release, a series of development releases are made, denoted as alpha, beta, or release candidate. Alphas are early releases in which interfaces aren't yet finalized; it's not unexpected to see an interface change between two alpha releases. Betas are more stable, preserving existing interfaces but possibly adding new modules, and release candidates are frozen, making no changes except as needed to fix critical bugs.

    Alpha, beta and release candidate versions have an additional suffix. The suffix for an alpha version is "aN" for some small number N, the suffix for a beta version is "bN" for some small number N, and the suffix for a release candidate version is "cN" for some small number N. In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0cN, and those precede 2.0.

    You may also find version numbers with a "+" suffix, e.g. "2.2+". These are unreleased versions, built directly from the subversion trunk. In practice, after a final minor release is made, the subversion trunk is incremented to the next minor version, which becomes the "a0" version, e.g. "2.4a0".

    See also the documentation for sys.version, sys.hexversion, and sys.version_info.

    1.6   How do I obtain a copy of the Python source?

    The latest Python source distribution is always available from python.org, at http://www.python.org/download/. The latest development sources can be obtained via anonymous subversion from SourceForge, at http://svn.python.org/projects/python/trunk.

    The source distribution is a gzipped tar file containing the complete C source, LaTeX documentation, Python library modules, example programs, and several useful pieces of freely distributable software. This will compile and run out of the box on most UNIX platforms.

    Older versions of Python are also available from python.org.

    1.7   How do I get documentation on Python?

    All documentation is available on-line, starting at http://www.python.org/doc/.

    The standard documentation for the current stable version of Python is also available at http://docs.python.org/.

    The LaTeX source for the documentation is part of the source distribution. If you don't have LaTeX, the latest Python documentation set is available by anonymous FTP in various formats such as PostScript and HTML. Visit the above URL for links to the current versions.

    1.8   I've never programmed before. Is there a Python tutorial?

    There are numerous tutorials and books available. Consult the Beginner's Guide to find information for beginning Python programmers, including lists of tutorials.

    1.10   Is there a newsgroup or mailing list devoted to Python?

    There is a newsgroup, comp.lang.python, and a mailing list, python-list. The newsgroup and mailing list are gatewayed into each other -- if you can read news it's unnecessary to subscribe to the mailing list. comp.lang.python is high-traffic, receiving hundreds of postings every day, and Usenet readers are often more able to cope with this volume.

    Announcements of new software releases and events can be found in comp.lang.python.announce, a low-traffic moderated list that receives about five postings per day. It's available as the python-announce mailing list.

    More info about other mailing lists and newsgroups can be found at http://www.python.org/community/lists.html.

    1.11   How do I get a beta test version of Python?

    All releases, including alphas, betas and release candidates, are announced on the comp.lang.python and comp.lang.python.announce newsgroups. All announcements also appear on the Python home page, at http://www.python.org/; an RSS feed of news is available.

    You can also access the development version of Python through subversion. See http://www.python.org/dev/devfaq.html#subversion-svn for details.

    1.12   How do I submit bug reports and patches for Python?

    To report a bug or submit a patch, please use the relevant service from the Python project at SourceForge.

    Bugs: http://sourceforge.net/tracker/?group_id=5470&atid=105470

    Patches: http://sourceforge.net/tracker/?group_id=5470&atid=305470

    You must have a SourceForge account to report bugs; this makes it possible for us to contact you if we have follow-up questions. It will also enable SourceForge to send you updates as we act on your bug.

    For more information on how Python is developed, consult the Python Developer's Guide.

    1.13   Are there any published articles about Python that I can reference?

    It's probably best to reference your favorite book about Python.

    The very first article about Python is this very old article that's now quite outdated.

    Guido van Rossum and Jelke de Boer, "Interactively Testing Remote Servers Using the Python Programming Language", CWI Quarterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283-303.

    1.14   Are there any books on Python?

    Yes, there are many, and more are being published. See the python.org Wiki at http://www.python.org/moin/PythonBooks for a list.

    You can also search online bookstores for "Python" and filter out the Monty Python references; or perhaps search for "Python" and "language".

    1.15   Where in the world is www.python.org located?

    It's currently in Amsterdam, graciously hosted by XS4ALL. Thanks to Thomas Wouters for his work in arranging python.org's hosting.

    1.16   Why is it called Python?

    At the same time he began implementing Python, Guido van Rossum was also reading the published scripts from "Monty Python's Flying Circus" (a BBC comedy series from the seventies, in the unlikely case you didn't know). It occurred to him that he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python.

    2   Python in the real world

    2.1   How stable is Python?

    Very stable. New, stable releases have been coming out roughly every 6 to 18 months since 1991, and this seems likely to continue. Currently there are usually around 18 months between major releases.

    With the introduction of retrospective "bugfix" releases the stability of existing releases is being improved. Bugfix releases, indicated by a third component of the version number (e.g. 2.1.3, 2.2.2), are managed for stability; only fixes for known problems are included in a bugfix release, and it's guaranteed that interfaces will remain the same throughout a series of bugfix releases.

    The 2.4.2 release is the most stable version at this point in time.

    2.2   How many people are using Python?

    Probably tens of thousands of users, though it's difficult to obtain an exact count. Python is available for free download, so there are no sales figures, and it's available from many different sites and packaged with many Linux distributions, so download statistics don't tell the whole story either. The comp.lang.python newsgroup is very active, but not all Python users post to the group or even read it. Overall there is no accurate estimate of the number of subscribers or Python users.

    2.3   Have any significant projects been done in Python?

    See http://www.pythonology.org/success for a list of projects that use Python. Consulting the proceedings for past Python conferences will reveal contributions from many different companies and organizations.

    High-profile Python projects include the Mailman mailing list manager and the Zope application server. Several Linux distributions, most notably Red Hat, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Industrial Light & Magic.

    2.4   What new developments are expected for Python in the future?

    See http://www.python.org/peps for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. PEP 1 explains the PEP process and PEP format; read it first if you want to submit a PEP.

    New developments are discussed on the python-dev mailing list.

    2.5   Is it reasonable to propose incompatible changes to Python?

    In general, no. There are already millions of lines of Python code around the world, so any change in the language that invalidates more than a very small fraction of existing programs has to be frowned upon. Even if you can provide a conversion program, there still is the problem of updating all documentation; many books have been written about Python, and we don't want to invalidate them all at a single stroke.

    Providing a gradual upgrade path is necessary if a feature has to be changed. PEP 5 describes the procedure followed for introducing backward-incompatible changes while minimizing disruption for users.

    2.6   What is the Python Software Foundation?

    The Python Software Foundation is an independent non-profit organization that holds the copyright on Python versions 2.1 and newer. The PSF's mission is to advance open source technology related to the Python programming language and to publicize the use of Python. The PSF's home page is at http://www.python.org/psf/.

    Donations to the PSF are tax-exempt in the US. If you use Python and find it helpful, please contribute via the PSF donation page.

    2.7   Is Python Y2K (Year 2000) Compliant?

    As of August, 2003 no major problems have been reported and Y2K compliance seems to be a non-issue.

    Python does very few date calculations and for those it does perform relies on the C library functions. Python generally represents times either as seconds since 1970 or as a (year, month, day, ...) tuple where the year is expressed with four digits, which makes Y2K bugs unlikely. So as long as your C library is okay, Python should be okay. Of course, it's possible that a particular application written in Python makes assumptions about 2-digit years.

    Because Python is available free of charge, there are no absolute guarantees. If there are unforseen problems, liability is the user's problem rather than the developers', and there is nobody you can sue for damages. The Python copyright notice contains the following disclaimer:

    4. PSF is making Python 2.3 available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.

    5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

    The good news is that if you encounter a problem, you have full source available to track it down and fix it. This is one advantage of an open source programming environment.

    2.8   Is Python a good language for beginning programmers?

    Yes. If you want to discuss Python's use in education, then you may be interested in joining the edu-sig mailing list.

    It is still common to start students with a procedural (subset of a) statically typed language such as Pascal, C, or a subset of C++ or Java. Students may be better served by learning Python as their first language. Python has a very simple and consistent syntax and a large standard library and, most importantly, using Python in a beginning programming course permits students to concentrate on important programming skills such as problem decomposition and data type design. With Python, students can be quickly introduced to basic concepts such as loops and procedures. They can even probably work with user-defined objects in their very first course.

    For a student who has never programmed before, using a statically typed language seems unnatural. It presents additional complexity that the student must master and slows the pace of the course. The students are trying to learn to think like a computer, decompose problems, design consistent interfaces, and encapsulate data. While learning to use a statically typed language is important in the long term, it is not necessarily the best topic to address in the students' first programming course.

    Many other aspects of Python make it a good first language. Like Java, Python has a large standard library so that students can be assigned programming projects very early in the course that do something. Assignments aren't restricted to the standard four-function calculator and check balancing programs. By using the standard library, students can gain the satisfaction of working on realistic applications as they learn the fundamentals of programming. Using the standard library also teaches students about code reuse. Third-party modules such as PyGame are also helpful in extending the students' reach.

    Python's interactive interpreter enables students to test language features while they're programming. They can keep a window with the interpreter running while they enter their program's source in another window. If they can't remember the methods for a list, they can do something like this:

    >>> L = []
    >>> dir(L)
    ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
    'reverse', 'sort']
    >>> help(L.append)
    Help on built-in function append:
    
    append(...)
        L.append(object) -- append object to end
    >>> L.append(1)
    >>> L
    [1]
    

    With the interpreter, documentation is never far from the student as he's programming.

    There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. PythonWin is a Windows-specific IDE. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult http://www.python.org/editors/ for a full list of Python editing environments.

    3   Upgrading Python

    3.1   What is this bsddb185 module my application keeps complaining about?

    Starting with Python2.3, the distribution includes the PyBSDDB package <http://pybsddb.sf.net/> as a replacement for the old bsddb module. It includes functions which provide backward compatibility at the API level, but requires a newer version of the underlying Berkeley DB library. Files created with the older bsddb module can't be opened directly using the new module.

    Using your old version of Python and a pair of scripts which are part of Python 2.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can convert your old database files to the new format. Using your old Python version, run the db2pickle.py script to convert it to a pickle, e.g.:

    python2.2 <pathto>/db2pickley.py database.db database.pck
    

    Rename your database file:

    mv database.db olddatabase.db
    

    Now convert the pickle file to a new format database:

    python2.3 <pathto>/pickle2db.py database.db database.pck
    

    The precise commands you use will vary depending on the particulars of your installation. For full details about operation of these two scripts check the doc string at the start of each one.

    4   Python's Design

    4.1   Why does Python use indentation for grouping of statements?

    Guido van Rossum believes that using indentation for grouping is extremely elegant and contributes a lot to the clarity of the average Python program. Most people learn to love this feature after awhile.

    Since there are no begin/end brackets there cannot be a disagreement between grouping perceived by the parser and the human reader. Occasionally C programmers will encounter a fragment of code like this:

    if (x <= y)
            x++;
            y--;
    z++;
    

    Only the x++ statement is executed if the condition is true, but the indentation leads you to believe otherwise. Even experienced C programmers will sometimes stare a long time at it wondering why y is being decremented even for x > y.

    Because there are no begin/end brackets, Python is much less prone to coding-style conflicts. In C there are many different ways to place the braces. If you're used to reading and writing code that uses one style, you will feel at least slightly uneasy when reading (or being required to write) another style.

    Many coding styles place begin/end brackets on a line by themself. This makes programs considerably longer and wastes valuable screen space, making it harder to get a good overview of a program. Ideally, a function should fit on onescreen (say, 20-30 lines). 20 lines of Python can do a lot more work than 20 lines of C. This is not solely due to the lack of begin/end brackets -- the lack of declarations and the high-level data types are also responsible -- but the indentation-based syntax certainly helps.

    4.3   Why are floating point calculations so inaccurate?

    People are often very surprised by results like this:

    >>> 1.2-1.0
    0.199999999999999996
    

    and think it is a bug in Python. It's not. It's a problem caused by the internal representation of floating point numbers, which uses a fixed number of binary digits to represent a decimal number. Some decimal numbers can't be represented exactly in binary, resulting in small roundoff errors.

    In decimal math, there are many numbers that can't be represented with a fixed number of decimal digits, e.g. 1/3 = 0.3333333333.......

    In base 2, 1/2 = 0.1, 1/4 = 0.01, 1/8 = 0.001, etc. .2 equals 2/10 equals 1/5, resulting in the binary fractional number 0.001100110011001...

    Floating point numbers only have 32 or 64 bits of precision, so the digits are cut off at some point, and the resulting number is 0.199999999999999996 in decimal, not 0.2.

    A floating point's repr() function prints as many digits are necessary to make eval(repr(f)) == f true for any float f. The str() function prints fewer digits and this often results in the more sensible number that was probably intended:

    >>> 0.2
    0.20000000000000001
    >>> print 0.2
    0.2
    

    Again, this has nothing to do with Python, but with the way the underlying C platform handles floating point numbers, and ultimately with the inaccuracy you'll always have when writing down numbers as a string of a fixed number of digits.

    One of the consequences of this is that it is dangerous to compare the result of some computation to a float with == ! Tiny inaccuracies may mean that == fails. Instead, you have to check that the difference between the two numbers is less than a certain threshold:

    epsilon = 0.0000000000001 # Tiny allowed error
    expected_result = 0.4
    
    if expected_result-epsilon <= computation() <= expected_result+epsilon:
       ...
    

    Please see the chapter on floating point arithmetic in the Python tutorial for more information.

    4.4   Why are Python strings immutable?

    There are several advantages.

    One is performance: knowing that a string is immutable makes it easy to lay it out at construction time -- fixed and unchanging storage requirements. This is also one of the reasons for the distinction between tuples and lists.

    The other is that strings in Python are considered as "elemental" as numbers. No amount of activity will change the value 8 to anything else, and in Python, no amount of activity will change the string "eight" to anything else.

    4.5   Why must 'self' be used explicitly in method definitions and calls?

    The idea was borrowed from Modula-3. It turns out to be very useful, for a variety of reasons.

    First, it's more obvious that you are using a method or instance attribute instead of a local variable. Reading self.x or self.meth() makes it absolutely clear that an instance variable or method is used even if you don't know the class definition by heart. In C++, you can sort of tell by the lack of a local variable declaration (assuming globals are rare or easily recognizable) -- but in Python, there are no local variable declarations, so you'd have to look up the class definition to be sure. Some C++ and Java coding standards call for instance attributes to have an m_ prefix, so this explicitness is still useful in those languages, too.

    Second, it means that no special syntax is necessary if you want to explicitly reference or call the method from a particular class. In C++, if you want to use a method from a base class which is overridden in a derived class, you have to use the :: operator -- in Python you can write baseclass.methodname(self, <argument list>). This is particularly useful for __init__() methods, and in general in cases where a derived class method wants to extend the base class method of the same name and thus has to call the base class method somehow.

    Finally, for instance variables it solves a syntactic problem with assignment: since local variables in Python are (by definition!) those variables to which a value assigned in a function body (and that aren't explicitly declared global), there has to be some way to tell the interpreter that an assignment was meant to assign to an instance variable instead of to a local variable, and it should preferably be syntactic (for efficiency reasons). C++ does this through declarations, but Python doesn't have declarations and it would be a pity having to introduce them just for this purpose. Using the explicit "self.var" solves this nicely. Similarly, for using instance variables, having to write "self.var" means that references to unqualified names inside a method don't have to search the instance's directories. To put it another way, local variables and instance variables live in two different namespaces, and you need to tell Python which namespace to use.

    4.6   Why can't I use an assignment in an expression?

    Many people used to C or Perl complain that they want to use this C idiom:

    while (line = readline(f)) {
        ...do something with line...
    }
    

    where in Python you're forced to write this:

    while True:
        line = f.readline()
        if not line:
            break
        ...do something with line...
    

    The reason for not allowing assignment in Python expressions is a common, hard-to-find bug in those other languages, caused by this construct:

    if (x = 0) {
        ...error handling...
    }
    else {
        ...code that only works for nonzero x...
    }
    

    The error is a simple typo: x = 0, which assigns 0 to the variable x, was written while the comparison x == 0 is certainly what was intended.

    Many alternatives have been proposed. Most are hacks that save some typing but use arbitrary or cryptic syntax or keywords, and fail the simple criterion for language change proposals: it should intuitively suggest the proper meaning to a human reader who has not yet been introduced to the construct.

    An interesting phenomenon is that most experienced Python programmers recognize the "while True" idiom and don't seem to be missing the assignment in expression construct much; it's only newcomers who express a strong desire to add this to the language.

    There's an alternative way of spelling this that seems attractive but is generally less robust than the "while True" solution:

    line = f.readline()
    while line:
        ...do something with line...
        line = f.readline()
    

    The problem with this is that if you change your mind about exactly how you get the next line (e.g. you want to change it into sys.stdin.readline()) you have to remember to change two places in your program -- the second occurrence is hidden at the bottom of the loop.

    The best approach is to use iterators, making it possible to loop through objects using the for statement. For example, in the current version of Python file objects support the iterator protocol, so you can now write simply:

    for line in f:
        ... do something with line...
    

    4.7   Why does Python use methods for some functionality (e.g. list.index()) but functions for other (e.g. len(list))?

    The major reason is history. Functions were used for those operations that were generic for a group of types and which were intended to work even for objects that didn't have methods at all (e.g. tuples). It is also convenient to have a function that can readily be applied to an amorphous collection of objects when you use the functional features of Python (map(), apply() et al).

    In fact, implementing len(), max(), min() as a built-in function is actually less code than implementing them as methods for each type. One can quibble about individual cases but it's a part of Python, and it's too late to make such fundamental changes now. The functions have to remain to avoid massive code breakage.

    Note that for string operations Python has moved from external functions (the string module) to methods. However, len() is still a function.

    4.8   Why is join() a string method instead of a list or tuple method?

    Strings became much more like other standard types starting in Python 1.6, when methods were added which give the same functionality that has always been available using the functions of the string module. Most of these new methods have been widely accepted, but the one which appears to make some programmers feel uncomfortable is:

    ", ".join(['1', '2', '4', '8', '16'])
    

    which gives the result:

    "1, 2, 4, 8, 16"
    

    There are two usual arguments against this usage.

    The first runs along the lines of: "It looks really ugly using a method of a string literal (string constant)", to which the answer is that it might, but a string literal is just a fixed value. If the methods are to be allowed on names bound to strings there is no logical reason to make them unavailable on literals.

    The second objection is typically cast as: "I am really telling a sequence to join its members together with a string constant". Sadly, you aren't. For some reason there seems to be much less difficulty with having split() as a string method, since in that case it is easy to see that

    "1, 2, 4, 8, 16".split(", ")
    

    is an instruction to a string literal to return the substrings delimited by the given separator (or, by default, arbitrary runs of white space). In this case a Unicode string returns a list of Unicode strings, an ASCII string returns a list of ASCII strings, and everyone is happy.

    join() is a string method because in using it you are telling the separator string to iterate over an arbitrary sequence, forming string representations of each of the elements, and inserting itself between the elements' representations. This method can be used with any argument which obeys the rules for sequence objects, inluding any new classes you might define yourself.

    Because this is a string method it can work for Unicode strings as well as plain ASCII strings. If join() were a method of the sequence types then the sequence types would have to decide which type of string to return depending on the type of the separator.

    If none of these arguments persuade you, then for the moment you can continue to use the join() function from the string module, which allows you to write

    string.join(['1', '2', '4', '8', '16'], ", ")
    

    4.9   How fast are exceptions?

    A try/except block is extremely efficient. Actually executing an exception is expensive. In versions of Python prior to 2.0 it was common to use this idiom:

    try:
        value = dict[key]
    except KeyError:
        dict[key] = getvalue(key)
        value = dict[key]
    

    This only made sense when you expected the dict to have the key almost all the time. If that wasn't the case, you coded it like this:

    if dict.has_key(key):
        value = dict[key]
    else:
        dict[key] = getvalue(key)
        value = dict[key]
    

    (In Python 2.0 and higher, you can code this as value = dict.setdefault(key, getvalue(key)).)

    4.10   Why isn't there a switch or case statement in Python?

    You can do this easily enough with a sequence of if... elif... elif... else. There have been some proposals for switch statement syntax, but there is no consensus (yet) on whether and how to do range tests. See PEP 275 for complete details and the current status.

    For cases where you need to choose from a very large number of possibilities, you can create a dictionary mapping case values to functions to call. For example:

    def function_1 (...):
        ...
    
    functions = {'a': function_1,
                 'b': function_2,
                 'c': self.method_1, ...}
    
    func = functions[value]
    func()
    

    For calling methods on objects, you can simplify yet further by using the getattr() built-in to retrieve methods with a particular name:

    def visit_a (self, ...):
        ...
    ...
    
    def dispatch (self, value):
        method_name = 'visit_' + str(value)
        method = getattr(self, method_name)
        method()
    

    It's suggested that you use a prefix for the method names, such as visit_ in this example. Without such a prefix, if values are coming from an untrusted source, an attacker would be able to call any method on your object.

    4.11   Can't you emulate threads in the interpreter instead of relying on an OS-specific thread implementation?

    Answer 1: Unfortunately, the interpreter pushes at least one C stack frame for each Python stack frame. Also, extensions can call back into Python at almost random moments. Therefore, a complete threads implementation requires thread support for C.

    Answer 2: Fortunately, there is Stackless Python, which has a completely redesigned interpreter loop that avoids the C stack. It's still experimental but looks very promising. Although it is binary compatible with standard Python, it's still unclear whether Stackless will make it into the core -- maybe it's just too revolutionary.

    4.12   Why can't lambda forms contain statements?

    Python lambda forms cannot contain statements because Python's syntactic framework can't handle statements nested inside expressions. However, in Python, this is not a serious problem. Unlike lambda forms in other languages, where they add functionality, Python lambdas are only a shorthand notation if you're too lazy to define a function.

    Functions are already first class objects in Python, and can be declared in a local scope. Therefore the only advantage of using a lambda form instead of a locally-defined function is that you don't need to invent a name for the function -- but that's just a local variable to which the function object (which is exactly the same type of object that a lambda form yields) is assigned!

    4.13   Can Python be compiled to machine code, C or some other language?

    Not easily. Python's high level data types, dynamic typing of objects and run-time invocation of the interpreter (using eval() or exec) together mean that a "compiled" Python program would probably consist mostly of calls into the Python run-time system, even for seemingly simple operations like x+1.

    Several projects described in the Python newsgroup or at past Python conferences have shown that this approach is feasible, although the speedups reached so far are only modest (e.g. 2x). Jython uses the same strategy for compiling to Java bytecode. (Jim Hugunin has demonstrated that in combination with whole-program analysis, speedups of 1000x are feasible for small demo programs. See the proceedings from the 1997 Python conference for more information.)

    Internally, Python source code is always translated into a bytecode representation, and this bytecode is then executed by the Python virtual machine. In order to avoid the overhead of repeatedly parsing and translating modules that rarely change, this byte code is written into a file whose name ends in ".pyc" whenever a module is parsed. When the corresponding .py file is changed, it is parsed and translated again and the .pyc file is rewritten.

    There is no performance difference once the .pyc file has been loaded, as the bytecode read from the .pyc file is exactly the same as the bytecode created by direct translation. The only difference is that loading code from a .pyc file is faster than parsing and translating a .py file, so the presence of precompiled .pyc files improves the start-up time of Python scripts. If desired, the Lib/compileall.py module can be used to create valid .pyc files for a given set of modules.

    Note that the main script executed by Python, even if its filename ends in .py, is not compiled to a .pyc file. It is compiled to bytecode, but the bytecode is not saved to a file. Usually main scripts are quite short, so this doesn't cost much speed.

    There are also several programs which make it easier to intermingle Python and C code in various ways to increase performance. See, for example, Psyco, Pyrex, PyInline, Py2Cmod, and Weave.

    4.14   How does Python manage memory?

    The details of Python memory management depend on the implementation. The standard C implementation of Python uses reference counting to detect inaccessible objects, and another mechanism to collect reference cycles, periodically executing a cycle detection algorithm which looks for inaccessible cycles and deletes the objects involved. The gc module provides functions to perform a garbage collection, obtain debugging statistics, and tune the collector's parameters.

    Jython relies on the Java runtime so the JVM's garbage collector is used. This difference can cause some subtle porting problems if your Python code depends on the behavior of the reference counting implementation.

    Sometimes objects get stuck in tracebacks temporarily and hence are not deallocated when you might expect. Clear the tracebacks with:

    import sys
    sys.exc_clear()
    sys.exc_traceback = sys.last_traceback = None
    

    Tracebacks are used for reporting errors, implementing debuggers and related things. They contain a portion of the program state extracted during the handling of an exception (usually the most recent exception).

    In the absence of circularities and tracebacks, Python programs need not explicitly manage memory.

    Why doesn't Python use a more traditional garbage collection scheme? For one thing, this is not a C standard feature and hence it's not portable. (Yes, we know about the Boehm GC library. It has bits of assembler code for most common platforms, not for all of them, and although it is mostly transparent, it isn't completely transparent; patches are required to get Python to work with it.)

    Traditional GC also becomes a problem when Python is embedded into other applications. While in a standalone Python it's fine to replace the standard malloc() and free() with versions provided by the GC library, an application embedding Python may want to have its own substitute for malloc() and free(), and may not want Python's. Right now, Python works with anything that implements malloc() and free() properly.

    In Jython, the following code (which is fine in CPython) will probably run out of file descriptors long before it runs out of memory:

    for file in <very long list of files>:
        f = open(file)
        c = f.read(1)
    

    Using the current reference counting and destructor scheme, each new assignment to f closes the previous file. Using GC, this is not guaranteed. If you want to write code that will work with any Python implementation, you should explicitly close the file; this will work regardless of GC:

    for file in <very long list of files>:
        f = open(file)
        c = f.read(1)
        f.close()
    

    4.15   Why isn't all memory freed when Python exits?

    Objects referenced from the global namespaces of Python modules are not always deallocated when Python exits. This may happen if there are circular references. There are also certain bits of memory that are allocated by the C library that are impossible to free (e.g. a tool like Purify will complain about these). Python is, however, aggressive about cleaning up memory on exit and does try to destroy every single object.

    If you want to force Python to delete certain things on deallocation use the sys.exitfunc() hook to run a function that will force those deletions.

    4.16   Why are there separate tuple and list data types?

    Lists and tuples, while similar in many respects, are generally used in fundamentally different ways. Tuples can be thought of as being similar to Pascal records or C structs; they're small collections of related data which may be of different types which are operated on as a group. For example, a Cartesian coordinate is appropriately represented as a tuple of two or three numbers.

    Lists, on the other hand, are more like arrays in other languages. They tend to hold a varying number of objects all of which have the same type and which are operated on one-by-one. For example, os.listdir('.') returns a list of strings representing the files in the current directory. Functions which operate on this output would generally not break if you added another file or two to the directory.

    Tuples are immutable, meaning that once a tuple has been created, you can't replace any of its elements with a new value. Lists are mutable, meaning that you can always change a list's elements. Only immutable elements can be used as dictionary keys, and hence only tuples and not lists can be used as keys.

    4.17   How are lists implemented?

    Python's lists are really variable-length arrays, not Lisp-style linked lists. The implementation uses a contiguous array of references to other objects, and keeps a pointer to this array and the array's length in a list head structure.

    This makes indexing a list a[i] an operation whose cost is independent of the size of the list or the value of the index.

    When items are appended or inserted, the array of references is resized. Some cleverness is applied to improve the performance of appending items repeatedly; when the array must be grown, some extra space is allocated so the next few times don't require an actual resize.

    4.18   How are dictionaries implemented?

    Python's dictionaries are implemented as resizable hash tables. Compared to B-trees, this gives better performance for lookup (the most common operation by far) under most circumstances, and the implementation is simpler.

    Dictionaries work by computing a hash code for each key stored in the dictionary using the hash() built-in function. The hash code varies widely depending on the key; for example, "Python" hashes to -539294296 while "python", a string that differs by a single bit, hashes to 1142331976. The hash code is then used to calculate a location in an internal array where the value will be stored. Assuming that you're storing keys that all have different hash values, this means that dictionaries take constant time -- O(1), in computer science notation -- to retrieve a key. It also means that no sorted order of the keys is maintained, and traversing the array as the .keys() and .items() do will output the dictionary's content in some arbitrary jumbled order.

    4.19   Why must dictionary keys be immutable?

    The hash table implementation of dictionaries uses a hash value calculated from the key value to find the key. If the key were a mutable object, its value could change, and thus its hash could also change. But since whoever changes the key object can't tell that it was being used as a dictionary key, it can't move the entry around in the dictionary. Then, when you try to look up the same object in the dictionary it won't be found because its hash value is different. If you tried to look up the old value it wouldn't be found either, because the value of the object found in that hash bin would be different.

    If you want a dictionary indexed with a list, simply convert the list to a tuple first; the function tuple(L) creates a tuple with the same entries as the list L. Tuples are immutable and can therefore be used as dictionary keys.

    Some unacceptable solutions that have been proposed:

    • Hash lists by their address (object ID). This doesn't work because if you construct a new list with the same value it won't be found; e.g.:

      d = {[1,2]: '12'}
      print d[[1,2]]
      

      would raise a KeyError exception because the id of the [1,2] used in the second line differs from that in the first line. In other words, dictionary keys should be compared using ==, not using 'is'.

    • Make a copy when using a list as a key. This doesn't work because the list, being a mutable object, could contain a reference to itself, and then the copying code would run into an infinite loop.

    • Allow lists as keys but tell the user not to modify them. This would allow a class of hard-to-track bugs in programs when you forgot or modified a list by accident. It also invalidates an important invariant of dictionaries: every value in d.keys() is usable as a key of the dictionary.

    • Mark lists as read-only once they are used as a dictionary key. The problem is that it's not just the top-level object that could change its value; you could use a tuple containing a list as a key. Entering anything as a key into a dictionary would require marking all objects reachable from there as read-only -- and again, self-referential objects could cause an infinite loop.

    There is a trick to get around this if you need to, but use it at your own risk: You can wrap a mutable structure inside a class instance which has both a __cmp__ and a __hash__ method. You must then make sure that the hash value for all such wrapper objects that reside in a dictionary (or other hash based structure), remain fixed while the object is in the dictionary (or other structure).:

    class ListWrapper:
         def __init__(self, the_list):
               self.the_list = the_list
         def __cmp__(self, other):
               return self.the_list == other.the_list
         def __hash__(self):
               l = self.the_list
               result = 98767 - len(l)*555
               for i in range(len(l)):
                    try:
                         result = result + (hash(l[i]) % 9999999) * 1001 + i
                    except:
                         result = (result % 7777777) + i * 333
               return result
    

    Note that the hash computation is complicated by the possibility that some members of the list may be unhashable and also by the possibility of arithmetic overflow.

    Furthermore it must always be the case that if o1 == o2 (ie o1.__cmp__(o2)==0) then hash(o1)==hash(o2) (ie, o1.__hash__() == o2.__hash__()), regardless of whether the object is in a dictionary or not. If you fail to meet these restrictions dictionaries and other hash based structures will misbehave.

    In the case of ListWrapper, whenever the wrapper object is in a dictionary the wrapped list must not change to avoid anomalies. Don't do this unless you are prepared to think hard about the requirements and the consequences of not meeting them correctly. Consider yourself warned.

    4.20   Why doesn't list.sort() return the sorted list?

    In situations where performance matters, making a copy of the list just to sort it would be wasteful. Therefore, list.sort() sorts the list in place. In order to remind you of that fact, it does not return the sorted list. This way, you won't be fooled into accidentally overwriting a list when you need a sorted copy but also need to keep the unsorted version around.

    In Python 2.4 a new builtin - sorted() - has been added. This function creates a new list from a passed iterable, sorts it and returns it.

    As a result, here's the idiom to iterate over the keys of a dictionary in sorted order:

    for key in sorted(dict.iterkeys()):
        ...do whatever with dict[key]...
    

    Versions of Python prior to 2.4 need to use the following idiom:

    keys = dict.keys()
    keys.sort()
    for key in keys:
        ...do whatever with dict[key]...
    

    4.21   How do you specify and enforce an interface spec in Python?

    An interface specification for a module as provided by languages such as C++ and Java describes the prototypes for the methods and functions of the module. Many feel that compile-time enforcement of interface specifications help in the construction of large programs. Python does not support interface specifications directly, but many of their advantages can be obtained by an appropriate test discipline for components, which can often be very easily accomplished in Python. There is also a tool, PyChecker, which can be used to find problems due to subclassing.

    A good test suite for a module can at once provide a regression test and serve as both a module interface specification and a set of examples. Many Python modules can be run as a script to provide a simple "self test." Even modules which use complex external interfaces can often be tested in isolation using trivial "stub" emulations of the external interface. The doctest and unittest modules or third-party test frameworks can be used to construct exhaustive test suites that exercise every line of code in a module.

    An appropriate testing discipline can help build large complex applications in Python as well as having interface specifications would. In fact, it can be better because an interface specification cannot test certain properties of a program. For example, the append() method is expected to add new elements to the end of some internal list; an interface specification cannot test that your append() implementation will actually do this correctly, but it's trivial to check this property in a test suite.

    Writing test suites is very helpful, and you might want to design your code with an eye to making it easily tested. One increasingly popular technique, test-directed development, calls for writing parts of the test suite first, before you write any of the actual code. Of course Python allows you to be sloppy and not write test cases at all.

    4.22   Why are default values shared between objects?

    This type of bug commonly bites neophyte programmers. Consider this function:

    def foo(D={}):  # Danger: shared reference to one dict for all calls
        ... compute something ...
        D[key] = value
        return D
    

    The first time you call this function, D contains a single item. The second time, D contains two items because when foo() begins executing, D starts out with an item already in it.

    It is often expected that a function call creates new objects for default values. This is not what happens. Default values are created exactly once, when the function is defined. If that object is changed, like the dictionary in this example, subsequent calls to the function will refer to this changed object.

    By definition, immutable objects such as numbers, strings, tuples, and None, are safe from change. Changes to mutable objects such as dictionaries, lists, and class instances can lead to confusion.

    Because of this feature, it is good programming practice to not use mutable objects as default values. Instead, use None as the default value and inside the function, check if the parameter is None and create a new list/dictionary/whatever if it is. For example, don't write:

    def foo(dict={}):
        ...
    

    but:

    def foo(dict=None):
        if dict is None:
            dict = {} # create a new dict for local namespace
    

    This feature can be useful. When you have a function that's time-consuming to compute, a common technique is to cache the parameters and the resulting value of each call to the function, and return the cached value if the same value is requested again. This is called "memoizing", and can be implemented like this:

    # Callers will never provide a third parameter for this function.
    def expensive (arg1, arg2, _cache={}):
        if _cache.has_key((arg1, arg2)):
            return _cache[(arg1, arg2)]
    
        # Calculate the value
        result = ... expensive computation ...
        _cache[(arg1, arg2)] = result           # Store result in the cache
        return result
    

    You could use a global variable containing a dictionary instead of the default value; it's a matter of taste.

    4.23   Why is there no goto?

    You can use exceptions to provide a "structured goto" that even works across function calls. Many feel that exceptions can conveniently emulate all reasonable uses of the "go" or "goto" constructs of C, Fortran, and other languages. For example:

    class label: pass # declare a label
    
    try:
         ...
         if (condition): raise label() # goto label
         ...
    except label: # where to goto
         pass
    ...
    

    This doesn't allow you to jump into the middle of a loop, but that's usually considered an abuse of goto anyway. Use sparingly.

    4.24   Why do I get a SyntaxError for a 'continue' inside a 'try'?

    This is an implementation limitation, caused by the extremely simple-minded way Python generates bytecode. The try block pushes something on the "block stack" which the continue would have to pop off again. The current code generator doesn't have the data structures around so that continue can generate the right code.

    Note that Jython doesn't have this restriction!

    4.25   Why can't raw strings (r-strings) end with a backslash?

    More precisely, they can't end with an odd number of backslashes: the unpaired backslash at the end escapes the closing quote character, leaving an unterminated string.

    Raw strings were designed to ease creating input for processors (chiefly regular expression engines) that want to do their own backslash escape processing. Such processors consider an unmatched trailing backslash to be an error anyway, so raw strings disallow that. In return, they allow you to pass on the string quote character by escaping it with a backslash. These rules work well when r-strings are used for their intended purpose.

    If you're trying to build Windows pathnames, note that all Windows system calls accept forward slashes too:

    f = open("/mydir/file.txt") # works fine!
    

    If you're trying to build a pathname for a DOS command, try e.g. one of

    dir = r"\this\is\my\dos\dir" "\\"
    dir = r"\this\is\my\dos\dir\ "[:-1]
    dir = "\\this\\is\\my\\dos\\dir\\"
    

    4.26   Why doesn't Python have a "with" statement like some other languages?

    Because such a construct would be ambiguous.

    Some languages, such as Object Pascal, Delphi, and C++, use static types. So it is possible to know, in an unambiguous way, what member is being assigned in a "with" clause. This is the main point - the compiler always knows the scope of every variable at compile time.

    Python uses dynamic types. It is impossible to know in advance which attribute will be referenced at runtime. Member attributes may be added or removed from objects on the fly. This would make it impossible to know, from a simple reading, what attribute is being referenced - a local one, a global one, or a member attribute.

    For instance, take the following incomplete snippet:

    def foo(a):
       with a:
          print x
    

    The snippet assumes that "a" must have a member attribute called "x". However, there is nothing in Python that guarantees that. What should happen if "a" is, let us say, an integer? And if I have a global variable named "x", will it end up being used inside the with block? As you see, the dynamic nature of Python makes such choices much harder.

    The primary benefit of "with" and similar language features (reduction of code volume) can, however, easily be achieved in Python by assignment. Instead of:

    function(args).dict[index][index].a = 21
    function(args).dict[index][index].b = 42
    function(args).dict[index][index].c = 63
    

    write this:

    ref = function(args).dict[index][index]
    ref.a = 21
    ref.b = 42
    ref.c = 63
    

    This also has the side-effect of increasing execution speed because name bindings are resolved at run-time in Python, and the second version only needs to perform the resolution once. If the referenced object does not have a, b and c attributes, of course, the end result is still a run-time exception.

    4.27   Why are colons required for the if/while/def/class statements?

    The colon is required primarily to enhance readability (one of the results of the experimental ABC language). Consider this:

    if a==b
        print a
    

    versus

    if a==b:
        print a
    

    Notice how the second one is slightly easier to read. Notice further how a colon sets off the example in the second line of this FAQ answer; it's a standard usage in English.

    Another minor reason is that the colon makes it easier for editors with syntax highlighting; they can look for colons to decide when indentation needs to be increased instead of having to do a more elaborate parsing of the program text.

    python-defaults-debian/faq/gui.ht0000644000000000000000000001405312057417145014213 0ustar Title: Graphic User Interface FAQ Content-type: text/x-rst ==================================== Graphic User Interface FAQ ==================================== :Date: $Date: 2003-09-04 18:00:23 -0600 (Thu, 04 Sep 2003) $ :Version: $Revision: 6607 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: General GUI Questions ============================ What platform-independent GUI toolkits exist for Python? ---------------------------------------------------------------- Depending on what platform(s) you are aiming at, there are several. Tkinter '''''''''''' Standard builds of Python include an object-oriented interface to the Tcl/Tk widget set, called Tkinter. This is probably the easiest to install and use. For more info about Tk, including pointers to the source, see the Tcl/Tk home page at http://www.tcl.tk. Tcl/Tk is fully portable to the MacOS, Windows, and Unix platforms. wxWindows ''''''''''''' wxWindows is a portable GUI class library written in C++ that's a portable interface to various platform-specific libraries; wxPython is a Python interface to wxWindows. wxWindows supports Windows and MacOS; on Unix variants, it supports both GTk+ and Motif toolkits. wxWindows preserves the look and feel of the underlying graphics toolkit, and there is quite a rich widget set and collection of GDI classes. See `the wxWindows page `_ for more details. `wxPython `_ is an extension module that wraps many of the wxWindows C++ classes, and is quickly gaining popularity amongst Python developers. You can get wxPython as part of the source or CVS distribution of wxWindows, or directly from its home page. Qt '''''' There are bindings available for the Qt toolkit (`PyQt `_) and for KDE (PyKDE). If you're writing open source software, you don't need to pay for PyQt, but if you want to write proprietary applications, you must buy a PyQt license from `Riverbank Computing `_ and a Qt license from `Trolltech `_. GTk+ ''''''''''' PyGTk bindings for the `GTk+ toolkit `_ have been implemented by by James Henstridge; see ftp://ftp.gtk.org/pub/gtk/python/. FLTK ''''''''''' Python bindings for `the FLTK toolkit `_, a simple yet powerful and mature cross-platform windowing system, are available from `the PyFLTK project `_. FOX ''''''''''' A wrapper for `the FOX toolkit `_ called `FXpy `_ is available. FOX supports both Unix variants and Windows. OpenGL ''''''''''''' For OpenGL bindings, see `PyOpenGL `_. What platform-specific GUI toolkits exist for Python? ---------------------------------------------------------------- `The Mac port `_ by Jack Jansen has a rich and ever-growing set of modules that support the native Mac toolbox calls. The port includes support for MacOS9 and MacOS X's Carbon libraries. By installing the `PyObjc Objective-C bridge `_, Python programs can use MacOS X's Cocoa libraries. See the documentation that comes with the Mac port. `Pythonwin `_ by Mark Hammond includes an interface to the Microsoft Foundation Classes and a Python programming environment using it that's written mostly in Python. Tkinter questions ===================== How do I freeze Tkinter applications? --------------------------------------------- Freeze is a tool to create stand-alone applications. When freezing Tkinter applications, the applications will not be truly stand-alone, as the application will still need the Tcl and Tk libraries. One solution is to ship the application with the tcl and tk libraries, and point to them at run-time using the TCL_LIBRARY and TK_LIBRARY environment variables. To get truly stand-alone applications, the Tcl scripts that form the library have to be integrated into the application as well. One tool supporting that is SAM (stand-alone modules), which is part of the Tix distribution (http://tix.mne.com). Build Tix with SAM enabled, perform the appropriate call to Tclsam_init etc inside Python's Modules/tkappinit.c, and link with libtclsam and libtksam (you might include the Tix libraries as well). Can I have Tk events handled while waiting for I/O? ----------------------------------------------------------- Yes, and you don't even need threads! But you'll have to restructure your I/O code a bit. Tk has the equivalent of Xt's XtAddInput() call, which allows you to register a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. Here's what you need:: from Tkinter import tkinter tkinter.createfilehandler(file, mask, callback) The file may be a Python file or socket object (actually, anything with a fileno() method), or an integer file descriptor. The mask is one of the constants tkinter.READABLE or tkinter.WRITABLE. The callback is called as follows:: callback(file, mask) You must unregister the callback when you're done, using :: tkinter.deletefilehandler(file) Note: since you don't know *how many bytes* are available for reading, you can't use the Python file object's read or readline methods, since these will insist on reading a predefined number of bytes. For sockets, the recv() or recvfrom() methods will work fine; for other files, use os.read(file.fileno(), maxbytecount). I can't get key bindings to work in Tkinter: why? --------------------------------------------------- An often-heard complaint is that event handlers bound to events with the bind() method don't get handled even when the appropriate key is pressed. The most common cause is that the widget to which the binding applies doesn't have "keyboard focus". Check out the Tk documentation for the focus command. Usually a widget is given the keyboard focus by clicking in it (but not for labels; see the takefocus option). python-defaults-debian/faq/gui.html0000664000000000000000000004324412632016513014543 0ustar Graphic User Interface FAQ

    Graphic User Interface FAQ

    Date: 2003-09-04
    Version: 6607
    Web site:http://www.python.org/

    1   General GUI Questions

    1.1   What platform-independent GUI toolkits exist for Python?

    Depending on what platform(s) you are aiming at, there are several.

    1.1.1   Tkinter

    Standard builds of Python include an object-oriented interface to the Tcl/Tk widget set, called Tkinter. This is probably the easiest to install and use. For more info about Tk, including pointers to the source, see the Tcl/Tk home page at http://www.tcl.tk. Tcl/Tk is fully portable to the MacOS, Windows, and Unix platforms.

    1.1.2   wxWindows

    wxWindows is a portable GUI class library written in C++ that's a portable interface to various platform-specific libraries; wxPython is a Python interface to wxWindows. wxWindows supports Windows and MacOS; on Unix variants, it supports both GTk+ and Motif toolkits. wxWindows preserves the look and feel of the underlying graphics toolkit, and there is quite a rich widget set and collection of GDI classes. See the wxWindows page for more details.

    wxPython is an extension module that wraps many of the wxWindows C++ classes, and is quickly gaining popularity amongst Python developers. You can get wxPython as part of the source or CVS distribution of wxWindows, or directly from its home page.

    1.1.3   Qt

    There are bindings available for the Qt toolkit (PyQt) and for KDE (PyKDE). If you're writing open source software, you don't need to pay for PyQt, but if you want to write proprietary applications, you must buy a PyQt license from Riverbank Computing and a Qt license from Trolltech.

    1.1.4   GTk+

    PyGTk bindings for the GTk+ toolkit have been implemented by by James Henstridge; see ftp://ftp.gtk.org/pub/gtk/python/.

    1.1.5   FLTK

    Python bindings for the FLTK toolkit, a simple yet powerful and mature cross-platform windowing system, are available from the PyFLTK project.

    1.1.6   FOX

    A wrapper for the FOX toolkit called FXpy is available. FOX supports both Unix variants and Windows.

    1.1.7   OpenGL

    For OpenGL bindings, see PyOpenGL.

    1.2   What platform-specific GUI toolkits exist for Python?

    The Mac port by Jack Jansen has a rich and ever-growing set of modules that support the native Mac toolbox calls. The port includes support for MacOS9 and MacOS X's Carbon libraries. By installing the PyObjc Objective-C bridge, Python programs can use MacOS X's Cocoa libraries. See the documentation that comes with the Mac port.

    Pythonwin by Mark Hammond includes an interface to the Microsoft Foundation Classes and a Python programming environment using it that's written mostly in Python.

    2   Tkinter questions

    2.1   How do I freeze Tkinter applications?

    Freeze is a tool to create stand-alone applications. When freezing Tkinter applications, the applications will not be truly stand-alone, as the application will still need the Tcl and Tk libraries.

    One solution is to ship the application with the tcl and tk libraries, and point to them at run-time using the TCL_LIBRARY and TK_LIBRARY environment variables.

    To get truly stand-alone applications, the Tcl scripts that form the library have to be integrated into the application as well. One tool supporting that is SAM (stand-alone modules), which is part of the Tix distribution (http://tix.mne.com). Build Tix with SAM enabled, perform the appropriate call to Tclsam_init etc inside Python's Modules/tkappinit.c, and link with libtclsam and libtksam (you might include the Tix libraries as well).

    2.2   Can I have Tk events handled while waiting for I/O?

    Yes, and you don't even need threads! But you'll have to restructure your I/O code a bit. Tk has the equivalent of Xt's XtAddInput() call, which allows you to register a callback function which will be called from the Tk mainloop when I/O is possible on a file descriptor. Here's what you need:

    from Tkinter import tkinter
    tkinter.createfilehandler(file, mask, callback)
    

    The file may be a Python file or socket object (actually, anything with a fileno() method), or an integer file descriptor. The mask is one of the constants tkinter.READABLE or tkinter.WRITABLE. The callback is called as follows:

    callback(file, mask)
    

    You must unregister the callback when you're done, using

    tkinter.deletefilehandler(file)
    

    Note: since you don't know how many bytes are available for reading, you can't use the Python file object's read or readline methods, since these will insist on reading a predefined number of bytes. For sockets, the recv() or recvfrom() methods will work fine; for other files, use os.read(file.fileno(), maxbytecount).

    2.3   I can't get key bindings to work in Tkinter: why?

    An often-heard complaint is that event handlers bound to events with the bind() method don't get handled even when the appropriate key is pressed.

    The most common cause is that the widget to which the binding applies doesn't have "keyboard focus". Check out the Tk documentation for the focus command. Usually a widget is given the keyboard focus by clicking in it (but not for labels; see the takefocus option).

    python-defaults-debian/faq/installed.ht0000644000000000000000000000473312057417145015412 0ustar Title: "Why is Python Installed on my Computer?" FAQ Content-type: text/x-rst ===================================================== "Why is Python Installed on my Computer?" FAQ ===================================================== What is Python? ---------------------- Python is a programming language. It's used for many different applications. It's used in some high schools and colleges as an introductory programming language because Python is easy to learn, but it's also used by professional software developers at places such as Google, NASA, and Industrial Light & Magic. If you're curious about finding out more about Python, start with the `Beginner's Guide to Python `_. Why is Python installed on my machine? -------------------------------------------------- If you find Python installed on your system but don't remember installing it, there are several possible ways it could have gotten there. * Perhaps another user on the computer wanted to learn programming and installed it; you'll have to figure out who's been using the machine and might have installed it. * A third-party application installed on the machine might have been written in Python and included a Python installation. For a home computer, the most common such application is `PySol `_, a solitaire game that includes over 200 different games and variations. * Some Windows machines also have Python installed. At this writing we're aware of computers from Hewlett-Packard and Compaq that include Python. Apparently some of HP/Compaq's administrative tools are written in Python. * All Apple computers running Mac OS X have Python installed; it's included in the base installation. Can I delete Python? ---------------------------- That depends on where Python came from. If someone installed it deliberately, you can remove it without hurting anything. On Windows, use the Add/Remove Programs icon in the Control Panel. If Python was installed by a third-party application, you can also remove it, but that application will no longer work. You should probably use that application's uninstaller rather than removing Python directly. If Python came with your operating system, removing it is not recommended. If you remove it, whatever tools were written in Python will no longer run, and some of them might be important to you. Reinstalling the whole system would then be required to fix things again. python-defaults-debian/faq/installed.html0000664000000000000000000002352312632016513015734 0ustar "Why is Python Installed on my Computer?" FAQ

    "Why is Python Installed on my Computer?" FAQ

    What is Python?

    Python is a programming language. It's used for many different applications. It's used in some high schools and colleges as an introductory programming language because Python is easy to learn, but it's also used by professional software developers at places such as Google, NASA, and Industrial Light & Magic.

    If you're curious about finding out more about Python, start with the Beginner's Guide to Python.

    Why is Python installed on my machine?

    If you find Python installed on your system but don't remember installing it, there are several possible ways it could have gotten there.

    • Perhaps another user on the computer wanted to learn programming and installed it; you'll have to figure out who's been using the machine and might have installed it.
    • A third-party application installed on the machine might have been written in Python and included a Python installation. For a home computer, the most common such application is PySol, a solitaire game that includes over 200 different games and variations.
    • Some Windows machines also have Python installed. At this writing we're aware of computers from Hewlett-Packard and Compaq that include Python. Apparently some of HP/Compaq's administrative tools are written in Python.
    • All Apple computers running Mac OS X have Python installed; it's included in the base installation.

    Can I delete Python?

    That depends on where Python came from.

    If someone installed it deliberately, you can remove it without hurting anything. On Windows, use the Add/Remove Programs icon in the Control Panel.

    If Python was installed by a third-party application, you can also remove it, but that application will no longer work. You should probably use that application's uninstaller rather than removing Python directly.

    If Python came with your operating system, removing it is not recommended. If you remove it, whatever tools were written in Python will no longer run, and some of them might be important to you. Reinstalling the whole system would then be required to fix things again.

    python-defaults-debian/faq/library.ht0000644000000000000000000010306012057417145015070 0ustar Title: Python Library and Extension FAQ Content-type: text/x-rst ==================================== Python Library and Extension FAQ ==================================== :Date: $Date: 2005-12-16 19:21:20 -0700 (Fri, 16 Dec 2005) $ :Version: $Revision: 8684 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: General Library Questions =============================== How do I find a module or application to perform task X? ------------------------------------------------------------- Check `the Library Reference `_ to see if there's a relevant standard library module. (Eventually you'll learn what's in the standard library and will able to skip this step.) Search the `Python Package Index `_. Next, check the `Vaults of Parnassus `_, an older index of packages. Finally, try `Google `_ or other Web search engine. Searching for "Python" plus a keyword or two for your topic of interest will usually find something helpful. Where is the math.py (socket.py, regex.py, etc.) source file? --------------------------------------------------------------------- If you can't find a source file for a module it may be a builtin or dynamically loaded module implemented in C, C++ or other compiled language. In this case you may not have the source file or it may be something like mathmodule.c, somewhere in a C source directory (not on the Python Path). There are (at least) three kinds of modules in Python: 1) modules written in Python (.py); 2) modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc); 3) modules written in C and linked with the interpreter; to get a list of these, type:: import sys print sys.builtin_module_names How do I make a Python script executable on Unix? --------------------------------------------------------- You need to do two things: the script file's mode must be executable and the first line must begin with ``#!`` followed by the path of the Python interpreter. The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod 755 scriptfile``. The second can be done in a number of ways. The most straightforward way is to write :: #!/usr/local/bin/python as the very first line of your file, using the pathname for where the Python interpreter is installed on your platform. If you would like the script to be independent of where the Python interpreter lives, you can use the "env" program. Almost all Unix variants support the following, assuming the python interpreter is in a directory on the user's $PATH:: #! /usr/bin/env python *Don't* do this for CGI scripts. The $PATH variable for CGI scripts is often very minimal, so you need to use the actual absolute pathname of the interpreter. Occasionally, a user's environment is so full that the /usr/bin/env program fails; or there's no env program at all. In that case, you can try the following hack (due to Alex Rezinsky):: #! /bin/sh """:" exec python $0 ${1+"$@"} """ The minor disadvantage is that this defines the script's __doc__ string. However, you can fix that by adding :: __doc__ = """...Whatever...""" Is there a curses/termcap package for Python? ---------------------------------------------------- For Unix variants: The standard Python source distribution comes with a curses module in the Modules/ subdirectory, though it's not compiled by default (note that this is not available in the Windows distribution -- there is no curses module for Windows). The curses module supports basic curses features as well as many additional functions from ncurses and SYSV curses such as colour, alternative character set support, pads, and mouse support. This means the module isn't compatible with operating systems that only have BSD curses, but there don't seem to be any currently maintained OSes that fall into this category. For Windows: use `the consolelib module `_. Is there an equivalent to C's onexit() in Python? -------------------------------------------------------- `The atexit module `_ provides a register function that is similar to C's onexit. Why don't my signal handlers work? -------------------------------------------- The most common problem is that the signal handler is declared with the wrong argument list. It is called as :: handler(signum, frame) so it should be declared with two arguments:: def handler(signum, frame): ... Common tasks ================= How do I test a Python program or component? ---------------------------------------------------- Python comes with two testing frameworks. The `doctest module `_ finds examples in the docstrings for a module and runs them, comparing the output with the expected output given in the docstring. The `unittest module `_ is a fancier testing framework modelled on Java and Smalltalk testing frameworks. For testing, it helps to write the program so that it may be easily tested by using good modular design. Your program should have almost all functionality encapsulated in either functions or class methods -- and this sometimes has the surprising and delightful effect of making the program run faster (because local variable accesses are faster than global accesses). Furthermore the program should avoid depending on mutating global variables, since this makes testing much more difficult to do. The "global main logic" of your program may be as simple as :: if __name__=="__main__": main_logic() at the bottom of the main module of your program. Once your program is organized as a tractable collection of functions and class behaviours you should write test functions that exercise the behaviours. A test suite can be associated with each module which automates a sequence of tests. This sounds like a lot of work, but since Python is so terse and flexible it's surprisingly easy. You can make coding much more pleasant and fun by writing your test functions in parallel with the "production code", since this makes it easy to find bugs and even design flaws earlier. "Support modules" that are not intended to be the main module of a program may include a self-test of the module. :: if __name__ == "__main__": self_test() Even programs that interact with complex external interfaces may be tested when the external interfaces are unavailable by using "fake" interfaces implemented in Python. How do I create documentation from doc strings? ------------------------------------------------------- The `pydoc module `_ can create HTML from the doc strings in your Python source code. An alternative is `pythondoc `_. How do I get a single keypress at a time? ----------------------------------------------- For Unix variants:There are several solutions. It's straightforward to do this using curses, but curses is a fairly large module to learn. Here's a solution without curses:: import termios, fcntl, sys, os fd = sys.stdin.fileno() oldterm = termios.tcgetattr(fd) newattr = termios.tcgetattr(fd) newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO termios.tcsetattr(fd, termios.TCSANOW, newattr) oldflags = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK) try: while 1: try: c = sys.stdin.read(1) print "Got character", `c` except IOError: pass finally: termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm) fcntl.fcntl(fd, fcntl.F_SETFL, oldflags) You need the ``termios`` and the ``fcntl`` module for any of this to work, and I've only tried it on Linux, though it should work elsewhere. In this code, characters are read and printed one at a time. ``termios.tcsetattr()`` turns off stdin's echoing and disables canonical mode. ``fcntl.fnctl()`` is used to obtain stdin's file descriptor flags and modify them for non-blocking mode. Since reading stdin when it is empty results in an ``IOError``, this error is caught and ignored. Threads ============= How do I program using threads? --------------------------------- Be sure to use `the threading module `_ and not the ``thread`` module. The ``threading`` module builds convenient abstractions on top of the low-level primitives provided by the ``thread`` module. Aahz has a set of slides from his threading tutorial that are helpful; see http://starship.python.net/crew/aahz/OSCON2001/. None of my threads seem to run: why? ------------------------------------------- As soon as the main thread exits, all threads are killed. Your main thread is running too quickly, giving the threads no time to do any work. A simple fix is to add a sleep to the end of the program that's long enough for all the threads to finish:: import threading, time def thread_task(name, n): for i in range(n): print name, i for i in range(10): T = threading.Thread(target=thread_task, args=(str(i), i)) T.start() time.sleep(10) # <----------------------------! But now (on many platforms) the threads don't run in parallel, but appear to run sequentially, one at a time! The reason is that the OS thread scheduler doesn't start a new thread until the previous thread is blocked. A simple fix is to add a tiny sleep to the start of the run function:: def thread_task(name, n): time.sleep(0.001) # <---------------------! for i in range(n): print name, i for i in range(10): T = threading.Thread(target=thread_task, args=(str(i), i)) T.start() time.sleep(10) Instead of trying to guess how long a ``time.sleep()`` delay will be enough, it's better to use some kind of semaphore mechanism. One idea is to use the `Queue module `_ to create a queue object, let each thread append a token to the queue when it finishes, and let the main thread read as many tokens from the queue as there are threads. How do I parcel out work among a bunch of worker threads? ---------------------------------------------------------------- Use the `Queue module `_ to create a queue containing a list of jobs. The ``Queue`` class maintains a list of objects with ``.put(obj)`` to add an item to the queue and ``.get()`` to return an item. The class will take care of the locking necessary to ensure that each job is handed out exactly once. Here's a trivial example:: import threading, Queue, time # The worker thread gets jobs off the queue. When the queue is empty, it # assumes there will be no more work and exits. # (Realistically workers will run until terminated.) def worker (): print 'Running worker' time.sleep(0.1) while True: try: arg = q.get(block=False) except Queue.Empty: print 'Worker', threading.currentThread(), print 'queue empty' break else: print 'Worker', threading.currentThread(), print 'running with argument', arg time.sleep(0.5) # Create queue q = Queue.Queue() # Start a pool of 5 workers for i in range(5): t = threading.Thread(target=worker, name='worker %i' % (i+1)) t.start() # Begin adding work to the queue for i in range(50): q.put(i) # Give threads time to run print 'Main thread sleeping' time.sleep(5) When run, this will produce the following output: Running worker Running worker Running worker Running worker Running worker Main thread sleeping Worker running with argument 0 Worker running with argument 1 Worker running with argument 2 Worker running with argument 3 Worker running with argument 4 Worker running with argument 5 ... Consult the module's documentation for more details; the ``Queue`` class provides a featureful interface. What kinds of global value mutation are thread-safe? ------------------------------------------------------------ A global interpreter lock (GIL) is used internally to ensure that only one thread runs in the Python VM at a time. In general, Python offers to switch among threads only between bytecode instructions; how frequently it switches can be set via ``sys.setcheckinterval()``. Each bytecode instruction and therefore all the C implementation code reached from each instruction is therefore atomic from the point of view of a Python program. In theory, this means an exact accounting requires an exact understanding of the PVM bytecode implementation. In practice, it means that operations on shared variables of builtin data types (ints, lists, dicts, etc) that "look atomic" really are. For example, the following operations are all atomic (L, L1, L2 are lists, D, D1, D2 are dicts, x, y are objects, i, j are ints):: L.append(x) L1.extend(L2) x = L[i] x = L.pop() L1[i:j] = L2 L.sort() x = y x.field = y D[x] = y D1.update(D2) D.keys() These aren't:: i = i+1 L.append(L[-1]) L[i] = L[j] D[x] = D[x] + 1 Operations that replace other objects may invoke those other objects' ``__del__`` method when their reference count reaches zero, and that can affect things. This is especially true for the mass updates to dictionaries and lists. When in doubt, use a mutex! Can't we get rid of the Global Interpreter Lock? -------------------------------------------------------- The Global Interpreter Lock (GIL) is often seen as a hindrance to Python's deployment on high-end multiprocessor server machines, because a multi-threaded Python program effectively only uses one CPU, due to the insistence that (almost) all Python code can only run while the GIL is held. Back in the days of Python 1.5, Greg Stein actually implemented a comprehensive patch set (the "free threading" patches) that removed the GIL and replaced it with fine-grained locking. Unfortunately, even on Windows (where locks are very efficient) this ran ordinary Python code about twice as slow as the interpreter using the GIL. On Linux the performance loss was even worse because pthread locks aren't as efficient. Since then, the idea of getting rid of the GIL has occasionally come up but nobody has found a way to deal with the expected slowdown, and users who don't use threads would not be happy if their code ran at half at the speed. Greg's free threading patch set has not been kept up-to-date for later Python versions. This doesn't mean that you can't make good use of Python on multi-CPU machines! You just have to be creative with dividing the work up between multiple *processes* rather than multiple *threads*. Judicious use of C extensions will also help; if you use a C extension to perform a time-consuming task, the extension can release the GIL while the thread of execution is in the C code and allow other threads to get some work done. It has been suggested that the GIL should be a per-interpreter-state lock rather than truly global; interpreters then wouldn't be able to share objects. Unfortunately, this isn't likely to happen either. It would be a tremendous amount of work, because many object implementations currently have global state. For example, small integers and short strings are cached; these caches would have to be moved to the interpreter state. Other object types have their own free list; these free lists would have to be moved to the interpreter state. And so on. And I doubt that it can even be done in finite time, because the same problem exists for 3rd party extensions. It is likely that 3rd party extensions are being written at a faster rate than you can convert them to store all their global state in the interpreter state. And finally, once you have multiple interpreters not sharing any state, what have you gained over running each interpreter in a separate process? Input and Output ========================= How do I delete a file? (And other file questions...) --------------------------------------------------------- Use ``os.remove(filename)`` or ``os.unlink(filename)``; for documentation, see `the POSIX module `_. The two functions are identical; ``unlink()`` is simply the name of the Unix system call for this function. To remove a directory, use ``os.rmdir()``; use ``os.mkdir()`` to create one. ``os.makedirs(path)`` will create any intermediate directories in ``path`` that don't exist. ``os.removedirs(path)`` will remove intermediate directories as long as they're empty; if you want to delete an entire directory tree and its contents, use ``shutil.rmtree()``. To rename a file, use ``os.rename(old_path, new_path)``. To truncate a file, open it using ``f = open(filename, "r+")``, and use ``f.truncate(offset)``; offset defaults to the current seek position. There's also ```os.ftruncate(fd, offset)`` for files opened with ``os.open()``, where ``fd`` is the file descriptor (a small integer). The ``shutil`` module also contains a number of functions to work on files including ``copyfile``, ``copytree``, and ``rmtree``. How do I copy a file? ----------------------------- The ``shutil`` module contains a ``copyfile()`` function. Note that on MacOS 9 it doesn't copy the resource fork and Finder info. How do I read (or write) binary data? --------------------------------------------- or complex data formats, it's best to use `the struct module `_. It allows you to take a string containing binary data (usually numbers) and convert it to Python objects; and vice versa. For example, the following code reads two 2-byte integers and one 4-byte integer in big-endian format from a file:: import struct f = open(filename, "rb") # Open in binary mode for portability s = f.read(8) x, y, z = struct.unpack(">hhl", s) The '>' in the format string forces big-endian data; the letter 'h' reads one "short integer" (2 bytes), and 'l' reads one "long integer" (4 bytes) from the string. For data that is more regular (e.g. a homogeneous list of ints or thefloats), you can also use `the array module `_. I can't seem to use os.read() on a pipe created with os.popen(); why? ------------------------------------------------------------------------ ``os.read()`` is a low-level function which takes a file descriptor, a small integer representing the opened file. ``os.popen()`` creates a high-level file object, the same type returned by the builtin ``open()`` function. Thus, to read n bytes from a pipe p created with ``os.popen()``, you need to use ``p.read(n)``. How do I run a subprocess with pipes connected to both input and output? -------------------------------------------------------------------------------- Use `the popen2 module `_. For example:: import popen2 fromchild, tochild = popen2.popen2("command") tochild.write("input\n") tochild.flush() output = fromchild.readline() Warning: in general it is unwise to do this because you can easily cause a deadlock where your process is blocked waiting for output from the child while the child is blocked waiting for input from you. This can be caused because the parent expects the child to output more text than it does, or it can be caused by data being stuck in stdio buffers due to lack of flushing. The Python parent can of course explicitly flush the data it sends to the child before it reads any output, but if the child is a naive C program it may have been written to never explicitly flush its output, even if it is interactive, since flushing is normally automatic. Note that a deadlock is also possible if you use ``popen3`` to read stdout and stderr. If one of the two is too large for the internal buffer (increasing the buffer size does not help) and you ``read()`` the other one first, there is a deadlock, too. Note on a bug in popen2: unless your program calls ``wait()`` or ``waitpid()``, finished child processes are never removed, and eventually calls to popen2 will fail because of a limit on the number of child processes. Calling ``os.waitpid`` with the ``os.WNOHANG`` option can prevent this; a good place to insert such a call would be before calling ``popen2`` again. In many cases, all you really need is to run some data through a command and get the result back. Unless the amount of data is very large, the easiest way to do this is to write it to a temporary file and run the command with that temporary file as input. The `standard module tempfile `_ exports a ``mktemp()`` function to generate unique temporary file names. :: import tempfile import os class Popen3: """ This is a deadlock-safe version of popen that returns an object with errorlevel, out (a string) and err (a string). (capturestderr may not work under windows.) Example: print Popen3('grep spam','\n\nhere spam\n\n').out """ def __init__(self,command,input=None,capturestderr=None): outfile=tempfile.mktemp() command="( %s ) > %s" % (command,outfile) if input: infile=tempfile.mktemp() open(infile,"w").write(input) command=command+" <"+infile if capturestderr: errfile=tempfile.mktemp() command=command+" 2>"+errfile self.errorlevel=os.system(command) >> 8 self.out=open(outfile,"r").read() os.remove(outfile) if input: os.remove(infile) if capturestderr: self.err=open(errfile,"r").read() os.remove(errfile) Note that many interactive programs (e.g. vi) don't work well with pipes substituted for standard input and output. You will have to use pseudo ttys ("ptys") instead of pipes. Or you can use a Python interface to Don Libes' "expect" library. A Python extension that interfaces to expect is called "expy" and available from http://expectpy.sourceforge.net. A pure Python solution that works like expect is ` pexpect `_. How do I access the serial (RS232) port? ------------------------------------------------ For Win32, POSIX (Linux, BSD, etc.), Jython: http://pyserial.sourceforge.net For Unix, see a Usenet post by Mitch Chapman: http://groups.google.com/groups?selm=34A04430.CF9@ohioee.com Why doesn't closing sys.stdout (stdin, stderr) really close it? ----------------------------------------------------------------------- Python file objects are a high-level layer of abstraction on top of C streams, which in turn are a medium-level layer of abstraction on top of (among other things) low-level C file descriptors. For most file objects you create in Python via the builtin ``file`` constructor, ``f.close()`` marks the Python file object as being closed from Python's point of view, and also arranges to close the underlying C stream. This also happens automatically in f's destructor, when f becomes garbage. But stdin, stdout and stderr are treated specially by Python, because of the special status also given to them by C. Running ``sys.stdout.close()`` marks the Python-level file object as being closed, but does *not* close the associated C stream. To close the underlying C stream for one of these three, you should first be sure that's what you really want to do (e.g., you may confuse extension modules trying to do I/O). If it is, use os.close:: os.close(0) # close C's stdin stream os.close(1) # close C's stdout stream os.close(2) # close C's stderr stream Network/Internet Programming ======================================= What WWW tools are there for Python? -------------------------------------------- See the chapters titled `"Internet Protocols and Support" `_ and `"Internet Data Handling" `_ in the Library Reference Manual. Python has many modules that will help you build server-side and client-side web systems. A summary of available frameworks is maintained by Paul Boddie at http://www.python.org/cgi-bin/moinmoin/WebProgramming . Cameron Laird maintains a useful set of pages about Python web technologies at http://phaseit.net/claird/comp.lang.python/web_python.html. The `Web Programming topic guide `_ also points to many useful resources. How can I mimic CGI form submission (METHOD=POST)? ---------------------------------------------------------- I would like to retrieve web pages that are the result of POSTing a form. Is there existing code that would let me do this easily? Yes. Here's a simple example that uses httplib:: #!/usr/local/bin/python import httplib, sys, time ### build the query string qs = "First=Josephine&MI=Q&Last=Public" ### connect and send the server a path httpobj = httplib.HTTP('www.some-server.out-there', 80) httpobj.putrequest('POST', '/cgi-bin/some-cgi-script') ### now generate the rest of the HTTP headers... httpobj.putheader('Accept', '*/*') httpobj.putheader('Connection', 'Keep-Alive') httpobj.putheader('Content-type', 'application/x-www-form-urlencoded') httpobj.putheader('Content-length', '%d' % len(qs)) httpobj.endheaders() httpobj.send(qs) ### find out what the server said in response... reply, msg, hdrs = httpobj.getreply() if reply != 200: sys.stdout.write(httpobj.getfile().read()) Note that in general for URL-encoded POST operations, query strings must be quoted by using ``urllib.quote()``. For example to send name="Guy Steele, Jr.":: >>> from urllib import quote >>> x = quote("Guy Steele, Jr.") >>> x 'Guy%20Steele,%20Jr.' >>> query_string = "name="+x >>> query_string 'name=Guy%20Steele,%20Jr.' What module should I use to help with generating HTML? -------------------------------------------------------------- There are many different modules available: * HTMLgen is a class library of objects corresponding to all the HTML 3.2 markup tags. It's used when you are writing in Python and wish to synthesize HTML pages for generating a web or for CGI forms, etc. * DocumentTemplate and Zope Page Templates are two different systems that are part of Zope. * Quixote's PTL uses Python syntax to assemble strings of text. Consult the `Web Programming topic guide `_ for more links. How do I send mail from a Python script? ------------------------------------------------ Use `the standard library module smtplib `_. Here's a very simple interactive mail sender that uses it. This method will work on any host that supports an SMTP listener. :: import sys, smtplib fromaddr = raw_input("From: ") toaddrs = raw_input("To: ").split(',') print "Enter message, end with ^D:" msg = '' while 1: line = sys.stdin.readline() if not line: break msg = msg + line # The actual mail send server = smtplib.SMTP('localhost') server.sendmail(fromaddr, toaddrs, msg) server.quit() A Unix-only alternative uses sendmail. The location of the sendmail program varies between systems; sometimes it is ``/usr/lib/sendmail``, sometime ``/usr/sbin/sendmail``. The sendmail manual page will help you out. Here's some sample code:: SENDMAIL = "/usr/sbin/sendmail" # sendmail location import os p = os.popen("%s -t -i" % SENDMAIL, "w") p.write("To: receiver@example.com\n") p.write("Subject: test\n") p.write("\n") # blank line separating headers from body p.write("Some text\n") p.write("some more text\n") sts = p.close() if sts != 0: print "Sendmail exit status", sts How do I avoid blocking in the connect() method of a socket? -------------------------------------------------------------------------- The select module is commonly used to help with asynchronous I/O on sockets. To prevent the TCP connect from blocking, you can set the socket to non-blocking mode. Then when you do the ``connect()``, you will either connect immediately (unlikely) or get an exception that contains the error number as ``.errno``. ``errno.EINPROGRESS`` indicates that the connection is in progress, but hasn't finished yet. Different OSes will return different values, so you're going to have to check what's returned on your system. You can use the ``connect_ex()`` method to avoid creating an exception. It will just return the errno value. To poll, you can call ``connect_ex()`` again later -- 0 or ``errno.EISCONN`` indicate that you're connected -- or you can pass this socket to select to check if it's writeable. Databases ===================== Are there any interfaces to database packages in Python? ---------------------------------------------------------------- Yes. Python 2.3 includes the ``bsddb`` package which provides an interface to the `BerkeleyDB `_ library. Interfaces to disk-based hashes such as `DBM `_ and `GDBM `_ are also included with standard Python. Support for most relational databases is available. See the `Database Topic Guide `_ for details. How do you implement persistent objects in Python? ------------------------------------------------------------ The `pickle library module `_ solves this in a very general way (though you still can't store things like open files, sockets or windows), and the `shelve library module `_ uses pickle and (g)dbm to create persistent mappings containing arbitrary Python objects. For better performance, you can use `the cPickle module `_. A more awkward way of doing things is to use pickle's little sister, marshal. `The marshal module `_ provides very fast ways to store noncircular basic Python types to files and strings, and back again. Although marshal does not do fancy things like store instances or handle shared references properly, it does run extremely fast. For example loading a half megabyte of data may take less than a third of a second. This often beats doing something more complex and general such as using gdbm with pickle/shelve. Why is cPickle so slow? -------------------------------- The default format used by the pickle module is a slow one that results in readable pickles. Making it the default, but it would break backward compatibility:: largeString = 'z' * (100 * 1024) myPickle = cPickle.dumps(largeString, protocol=1) If my program crashes with a bsddb (or anydbm) database open, it gets corrupted. How come? -------------------------------------------------------------------------------------------------- Databases opened for write access with the bsddb module (and often by the anydbm module, since it will preferentially use bsddb) must explicitly be closed using the ``.close()`` method of the database. The underlying library caches database contents which need to be converted to on-disk form and written. If you have initialized a new bsddb database but not written anything to it before the program crashes, you will often wind up with a zero-length file and encounter an exception the next time the file is opened. I tried to open Berkeley DB file, but bsddb produces bsddb.error: (22, 'Invalid argument'). Help! How can I restore my data? ------------------------------------------------------------------------------------------------------------------------------------ Don't panic! Your data is probably intact. The most frequent cause for the error is that you tried to open an earlier Berkeley DB file with a later version of the Berkeley DB library. Many Linux systems now have all three versions of Berkeley DB available. If you are migrating from version 1 to a newer version use db_dump185 to dump a plain text version of the database. If you are migrating from version 2 to version 3 use db2_dump to create a plain text version of the database. In either case, use db_load to create a new native database for the latest version installed on your computer. If you have version 3 of Berkeley DB installed, you should be able to use db2_load to create a native version 2 database. You should move away from Berkeley DB version 1 files because the hash file code contains known bugs that can corrupt your data. Mathematics and Numerics ================================ How do I generate random numbers in Python? --------------------------------------------------- The `standard module random `_ implements a random number generator. Usage is simple:: import random random.random() This returns a random floating point number in the range [0, 1). There are also many other specialized generators in this module, such as: * ``randrange(a, b)`` chooses an integer in the range [a, b). * ``uniform(a, b)`` chooses a floating point number in the range [a, b). * ``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution. Some higher-level functions operate on sequences directly, such as: * ``choice(S)`` chooses random element from a given sequence * ``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly There's also a ``Random`` class you can instantiate to create independent multiple random number generators. python-defaults-debian/faq/library.html0000664000000000000000000016223612632016514015427 0ustar Python Library and Extension FAQ

    Python Library and Extension FAQ

    Date: 2005-12-16
    Version: 8684
    Web site:http://www.python.org/

    Contents

    1   General Library Questions

    1.1   How do I find a module or application to perform task X?

    Check the Library Reference to see if there's a relevant standard library module. (Eventually you'll learn what's in the standard library and will able to skip this step.)

    Search the Python Package Index.

    Next, check the Vaults of Parnassus, an older index of packages.

    Finally, try Google or other Web search engine. Searching for "Python" plus a keyword or two for your topic of interest will usually find something helpful.

    1.2   Where is the math.py (socket.py, regex.py, etc.) source file?

    If you can't find a source file for a module it may be a builtin or dynamically loaded module implemented in C, C++ or other compiled language. In this case you may not have the source file or it may be something like mathmodule.c, somewhere in a C source directory (not on the Python Path).

    There are (at least) three kinds of modules in Python:

    1. modules written in Python (.py);

    2. modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc);

    3. modules written in C and linked with the interpreter; to get a list of these, type:

      import sys
      print sys.builtin_module_names
      

    1.3   How do I make a Python script executable on Unix?

    You need to do two things: the script file's mode must be executable and the first line must begin with #! followed by the path of the Python interpreter.

    The first is done by executing chmod +x scriptfile or perhaps chmod 755 scriptfile.

    The second can be done in a number of ways. The most straightforward way is to write

    #!/usr/local/bin/python
    

    as the very first line of your file, using the pathname for where the Python interpreter is installed on your platform.

    If you would like the script to be independent of where the Python interpreter lives, you can use the "env" program. Almost all Unix variants support the following, assuming the python interpreter is in a directory on the user's $PATH:

    #! /usr/bin/env python
    

    Don't do this for CGI scripts. The $PATH variable for CGI scripts is often very minimal, so you need to use the actual absolute pathname of the interpreter.

    Occasionally, a user's environment is so full that the /usr/bin/env program fails; or there's no env program at all. In that case, you can try the following hack (due to Alex Rezinsky):

    #! /bin/sh
    """:"
    exec python $0 ${1+"$@"}
    """
    

    The minor disadvantage is that this defines the script's __doc__ string. However, you can fix that by adding

    __doc__ = """...Whatever..."""
    

    1.4   Is there a curses/termcap package for Python?

    For Unix variants: The standard Python source distribution comes with a curses module in the Modules/ subdirectory, though it's not compiled by default (note that this is not available in the Windows distribution -- there is no curses module for Windows).

    The curses module supports basic curses features as well as many additional functions from ncurses and SYSV curses such as colour, alternative character set support, pads, and mouse support. This means the module isn't compatible with operating systems that only have BSD curses, but there don't seem to be any currently maintained OSes that fall into this category.

    For Windows: use the consolelib module.

    1.5   Is there an equivalent to C's onexit() in Python?

    The atexit module provides a register function that is similar to C's onexit.

    1.6   Why don't my signal handlers work?

    The most common problem is that the signal handler is declared with the wrong argument list. It is called as

    handler(signum, frame)
    

    so it should be declared with two arguments:

    def handler(signum, frame):
        ...
    

    2   Common tasks

    2.1   How do I test a Python program or component?

    Python comes with two testing frameworks. The doctest module finds examples in the docstrings for a module and runs them, comparing the output with the expected output given in the docstring.

    The unittest module is a fancier testing framework modelled on Java and Smalltalk testing frameworks.

    For testing, it helps to write the program so that it may be easily tested by using good modular design. Your program should have almost all functionality encapsulated in either functions or class methods -- and this sometimes has the surprising and delightful effect of making the program run faster (because local variable accesses are faster than global accesses). Furthermore the program should avoid depending on mutating global variables, since this makes testing much more difficult to do.

    The "global main logic" of your program may be as simple as

    if __name__=="__main__":
         main_logic()
    

    at the bottom of the main module of your program.

    Once your program is organized as a tractable collection of functions and class behaviours you should write test functions that exercise the behaviours. A test suite can be associated with each module which automates a sequence of tests. This sounds like a lot of work, but since Python is so terse and flexible it's surprisingly easy. You can make coding much more pleasant and fun by writing your test functions in parallel with the "production code", since this makes it easy to find bugs and even design flaws earlier.

    "Support modules" that are not intended to be the main module of a program may include a self-test of the module.

    if __name__ == "__main__":
       self_test()
    

    Even programs that interact with complex external interfaces may be tested when the external interfaces are unavailable by using "fake" interfaces implemented in Python.

    2.2   How do I create documentation from doc strings?

    The pydoc module can create HTML from the doc strings in your Python source code. An alternative is pythondoc.

    2.3   How do I get a single keypress at a time?

    For Unix variants:There are several solutions. It's straightforward to do this using curses, but curses is a fairly large module to learn. Here's a solution without curses:

    import termios, fcntl, sys, os
    fd = sys.stdin.fileno()
    
    oldterm = termios.tcgetattr(fd)
    newattr = termios.tcgetattr(fd)
    newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
    termios.tcsetattr(fd, termios.TCSANOW, newattr)
    
    oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
    fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
    
    try:
        while 1:
            try:
                c = sys.stdin.read(1)
                print "Got character", `c`
            except IOError: pass
    finally:
        termios.tcsetattr(fd, termios.TCSAFLUSH, oldterm)
        fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
    

    You need the termios and the fcntl module for any of this to work, and I've only tried it on Linux, though it should work elsewhere. In this code, characters are read and printed one at a time.

    termios.tcsetattr() turns off stdin's echoing and disables canonical mode. fcntl.fnctl() is used to obtain stdin's file descriptor flags and modify them for non-blocking mode. Since reading stdin when it is empty results in an IOError, this error is caught and ignored.

    3   Threads

    3.1   How do I program using threads?

    Be sure to use the threading module and not the thread module. The threading module builds convenient abstractions on top of the low-level primitives provided by the thread module.

    Aahz has a set of slides from his threading tutorial that are helpful; see http://starship.python.net/crew/aahz/OSCON2001/.

    3.2   None of my threads seem to run: why?

    As soon as the main thread exits, all threads are killed. Your main thread is running too quickly, giving the threads no time to do any work.

    A simple fix is to add a sleep to the end of the program that's long enough for all the threads to finish:

    import threading, time
    
    def thread_task(name, n):
        for i in range(n): print name, i
    
    for i in range(10):
        T = threading.Thread(target=thread_task, args=(str(i), i))
        T.start()
    
    time.sleep(10) # <----------------------------!
    

    But now (on many platforms) the threads don't run in parallel, but appear to run sequentially, one at a time! The reason is that the OS thread scheduler doesn't start a new thread until the previous thread is blocked.

    A simple fix is to add a tiny sleep to the start of the run function:

    def thread_task(name, n):
        time.sleep(0.001) # <---------------------!
        for i in range(n): print name, i
    
    for i in range(10):
        T = threading.Thread(target=thread_task, args=(str(i), i))
        T.start()
    
    time.sleep(10)
    

    Instead of trying to guess how long a time.sleep() delay will be enough, it's better to use some kind of semaphore mechanism. One idea is to use the Queue module to create a queue object, let each thread append a token to the queue when it finishes, and let the main thread read as many tokens from the queue as there are threads.

    3.3   How do I parcel out work among a bunch of worker threads?

    Use the Queue module to create a queue containing a list of jobs. The Queue class maintains a list of objects with .put(obj) to add an item to the queue and .get() to return an item. The class will take care of the locking necessary to ensure that each job is handed out exactly once.

    Here's a trivial example:

    import threading, Queue, time
    
    # The worker thread gets jobs off the queue.  When the queue is empty, it
    # assumes there will be no more work and exits.
    # (Realistically workers will run until terminated.)
    def worker ():
        print 'Running worker'
        time.sleep(0.1)
        while True:
            try:
                arg = q.get(block=False)
            except Queue.Empty:
                print 'Worker', threading.currentThread(),
                print 'queue empty'
                break
            else:
                print 'Worker', threading.currentThread(),
                print 'running with argument', arg
                time.sleep(0.5)
    
    # Create queue
    q = Queue.Queue()
    
    # Start a pool of 5 workers
    for i in range(5):
        t = threading.Thread(target=worker, name='worker %i' % (i+1))
        t.start()
    
    # Begin adding work to the queue
    for i in range(50):
        q.put(i)
    
    # Give threads time to run
    print 'Main thread sleeping'
    time.sleep(5)
    

    When run, this will produce the following output:

    Running worker Running worker Running worker Running worker Running worker Main thread sleeping Worker <Thread(worker 1, started)> running with argument 0 Worker <Thread(worker 2, started)> running with argument 1 Worker <Thread(worker 3, started)> running with argument 2 Worker <Thread(worker 4, started)> running with argument 3 Worker <Thread(worker 5, started)> running with argument 4 Worker <Thread(worker 1, started)> running with argument 5 ...

    Consult the module's documentation for more details; the Queue class provides a featureful interface.

    3.4   What kinds of global value mutation are thread-safe?

    A global interpreter lock (GIL) is used internally to ensure that only one thread runs in the Python VM at a time. In general, Python offers to switch among threads only between bytecode instructions; how frequently it switches can be set via sys.setcheckinterval(). Each bytecode instruction and therefore all the C implementation code reached from each instruction is therefore atomic from the point of view of a Python program.

    In theory, this means an exact accounting requires an exact understanding of the PVM bytecode implementation. In practice, it means that operations on shared variables of builtin data types (ints, lists, dicts, etc) that "look atomic" really are.

    For example, the following operations are all atomic (L, L1, L2 are lists, D, D1, D2 are dicts, x, y are objects, i, j are ints):

    L.append(x)
    L1.extend(L2)
    x = L[i]
    x = L.pop()
    L1[i:j] = L2
    L.sort()
    x = y
    x.field = y
    D[x] = y
    D1.update(D2)
    D.keys()
    

    These aren't:

    i = i+1
    L.append(L[-1])
    L[i] = L[j]
    D[x] = D[x] + 1
    

    Operations that replace other objects may invoke those other objects' __del__ method when their reference count reaches zero, and that can affect things. This is especially true for the mass updates to dictionaries and lists. When in doubt, use a mutex!

    3.5   Can't we get rid of the Global Interpreter Lock?

    The Global Interpreter Lock (GIL) is often seen as a hindrance to Python's deployment on high-end multiprocessor server machines, because a multi-threaded Python program effectively only uses one CPU, due to the insistence that (almost) all Python code can only run while the GIL is held.

    Back in the days of Python 1.5, Greg Stein actually implemented a comprehensive patch set (the "free threading" patches) that removed the GIL and replaced it with fine-grained locking. Unfortunately, even on Windows (where locks are very efficient) this ran ordinary Python code about twice as slow as the interpreter using the GIL. On Linux the performance loss was even worse because pthread locks aren't as efficient.

    Since then, the idea of getting rid of the GIL has occasionally come up but nobody has found a way to deal with the expected slowdown, and users who don't use threads would not be happy if their code ran at half at the speed. Greg's free threading patch set has not been kept up-to-date for later Python versions.

    This doesn't mean that you can't make good use of Python on multi-CPU machines! You just have to be creative with dividing the work up between multiple processes rather than multiple threads. Judicious use of C extensions will also help; if you use a C extension to perform a time-consuming task, the extension can release the GIL while the thread of execution is in the C code and allow other threads to get some work done.

    It has been suggested that the GIL should be a per-interpreter-state lock rather than truly global; interpreters then wouldn't be able to share objects. Unfortunately, this isn't likely to happen either. It would be a tremendous amount of work, because many object implementations currently have global state. For example, small integers and short strings are cached; these caches would have to be moved to the interpreter state. Other object types have their own free list; these free lists would have to be moved to the interpreter state. And so on.

    And I doubt that it can even be done in finite time, because the same problem exists for 3rd party extensions. It is likely that 3rd party extensions are being written at a faster rate than you can convert them to store all their global state in the interpreter state.

    And finally, once you have multiple interpreters not sharing any state, what have you gained over running each interpreter in a separate process?

    4   Input and Output

    4.1   How do I delete a file? (And other file questions...)

    Use os.remove(filename) or os.unlink(filename); for documentation, see the POSIX module. The two functions are identical; unlink() is simply the name of the Unix system call for this function.

    To remove a directory, use os.rmdir(); use os.mkdir() to create one. os.makedirs(path) will create any intermediate directories in path that don't exist. os.removedirs(path) will remove intermediate directories as long as they're empty; if you want to delete an entire directory tree and its contents, use shutil.rmtree().

    To rename a file, use os.rename(old_path, new_path).

    To truncate a file, open it using f = open(filename, "r+"), and use f.truncate(offset); offset defaults to the current seek position. There's also `os.ftruncate(fd, offset) for files opened with os.open(), where fd is the file descriptor (a small integer).

    The shutil module also contains a number of functions to work on files including copyfile, copytree, and rmtree.

    4.2   How do I copy a file?

    The shutil module contains a copyfile() function. Note that on MacOS 9 it doesn't copy the resource fork and Finder info.

    4.3   How do I read (or write) binary data?

    or complex data formats, it's best to use the struct module. It allows you to take a string containing binary data (usually numbers) and convert it to Python objects; and vice versa.

    For example, the following code reads two 2-byte integers and one 4-byte integer in big-endian format from a file:

    import struct
    
    f = open(filename, "rb")  # Open in binary mode for portability
    s = f.read(8)
    x, y, z = struct.unpack(">hhl", s)
    

    The '>' in the format string forces big-endian data; the letter 'h' reads one "short integer" (2 bytes), and 'l' reads one "long integer" (4 bytes) from the string.

    For data that is more regular (e.g. a homogeneous list of ints or thefloats), you can also use the array module.

    4.4   I can't seem to use os.read() on a pipe created with os.popen(); why?

    os.read() is a low-level function which takes a file descriptor, a small integer representing the opened file. os.popen() creates a high-level file object, the same type returned by the builtin open() function. Thus, to read n bytes from a pipe p created with os.popen(), you need to use p.read(n).

    4.5   How do I run a subprocess with pipes connected to both input and output?

    Use the popen2 module. For example:

    import popen2
    fromchild, tochild = popen2.popen2("command")
    tochild.write("input\n")
    tochild.flush()
    output = fromchild.readline()
    

    Warning: in general it is unwise to do this because you can easily cause a deadlock where your process is blocked waiting for output from the child while the child is blocked waiting for input from you. This can be caused because the parent expects the child to output more text than it does, or it can be caused by data being stuck in stdio buffers due to lack of flushing. The Python parent can of course explicitly flush the data it sends to the child before it reads any output, but if the child is a naive C program it may have been written to never explicitly flush its output, even if it is interactive, since flushing is normally automatic.

    Note that a deadlock is also possible if you use popen3 to read stdout and stderr. If one of the two is too large for the internal buffer (increasing the buffer size does not help) and you read() the other one first, there is a deadlock, too.

    Note on a bug in popen2: unless your program calls wait() or waitpid(), finished child processes are never removed, and eventually calls to popen2 will fail because of a limit on the number of child processes. Calling os.waitpid with the os.WNOHANG option can prevent this; a good place to insert such a call would be before calling popen2 again.

    In many cases, all you really need is to run some data through a command and get the result back. Unless the amount of data is very large, the easiest way to do this is to write it to a temporary file and run the command with that temporary file as input. The standard module tempfile exports a mktemp() function to generate unique temporary file names.

    import tempfile
    import os
    class Popen3:
       """
       This is a deadlock-safe version of popen that returns
       an object with errorlevel, out (a string) and err (a string).
       (capturestderr may not work under windows.)
       Example: print Popen3('grep spam','\n\nhere spam\n\n').out
       """
       def __init__(self,command,input=None,capturestderr=None):
           outfile=tempfile.mktemp()
           command="( %s ) > %s" % (command,outfile)
           if input:
               infile=tempfile.mktemp()
               open(infile,"w").write(input)
               command=command+" <"+infile
           if capturestderr:
               errfile=tempfile.mktemp()
               command=command+" 2>"+errfile
           self.errorlevel=os.system(command) >> 8
           self.out=open(outfile,"r").read()
           os.remove(outfile)
           if input:
               os.remove(infile)
           if capturestderr:
               self.err=open(errfile,"r").read()
               os.remove(errfile)
    

    Note that many interactive programs (e.g. vi) don't work well with pipes substituted for standard input and output. You will have to use pseudo ttys ("ptys") instead of pipes. Or you can use a Python interface to Don Libes' "expect" library. A Python extension that interfaces to expect is called "expy" and available from http://expectpy.sourceforge.net. A pure Python solution that works like expect is ` pexpect <http://pexpect.sourceforge.net>`_.

    4.6   How do I access the serial (RS232) port?

    For Win32, POSIX (Linux, BSD, etc.), Jython:

    http://pyserial.sourceforge.net

    For Unix, see a Usenet post by Mitch Chapman:

    http://groups.google.com/groups?selm=34A04430.CF9@ohioee.com

    4.7   Why doesn't closing sys.stdout (stdin, stderr) really close it?

    Python file objects are a high-level layer of abstraction on top of C streams, which in turn are a medium-level layer of abstraction on top of (among other things) low-level C file descriptors.

    For most file objects you create in Python via the builtin file constructor, f.close() marks the Python file object as being closed from Python's point of view, and also arranges to close the underlying C stream. This also happens automatically in f's destructor, when f becomes garbage.

    But stdin, stdout and stderr are treated specially by Python, because of the special status also given to them by C. Running sys.stdout.close() marks the Python-level file object as being closed, but does not close the associated C stream.

    To close the underlying C stream for one of these three, you should first be sure that's what you really want to do (e.g., you may confuse extension modules trying to do I/O). If it is, use os.close:

    os.close(0)   # close C's stdin stream
    os.close(1)   # close C's stdout stream
    os.close(2)   # close C's stderr stream
    

    5   Network/Internet Programming

    5.1   What WWW tools are there for Python?

    See the chapters titled "Internet Protocols and Support" and "Internet Data Handling" in the Library Reference Manual. Python has many modules that will help you build server-side and client-side web systems.

    A summary of available frameworks is maintained by Paul Boddie at http://www.python.org/cgi-bin/moinmoin/WebProgramming .

    Cameron Laird maintains a useful set of pages about Python web technologies at http://phaseit.net/claird/comp.lang.python/web_python.html.

    The Web Programming topic guide also points to many useful resources.

    5.2   How can I mimic CGI form submission (METHOD=POST)?

    I would like to retrieve web pages that are the result of POSTing a form. Is there existing code that would let me do this easily?

    Yes. Here's a simple example that uses httplib:

    #!/usr/local/bin/python
    
    import httplib, sys, time
    
    ### build the query string
    qs = "First=Josephine&MI=Q&Last=Public"
    
    ### connect and send the server a path
    httpobj = httplib.HTTP('www.some-server.out-there', 80)
    httpobj.putrequest('POST', '/cgi-bin/some-cgi-script')
    ### now generate the rest of the HTTP headers...
    httpobj.putheader('Accept', '*/*')
    httpobj.putheader('Connection', 'Keep-Alive')
    httpobj.putheader('Content-type', 'application/x-www-form-urlencoded')
    httpobj.putheader('Content-length', '%d' % len(qs))
    httpobj.endheaders()
    httpobj.send(qs)
    ### find out what the server said in response...
    reply, msg, hdrs = httpobj.getreply()
    if reply != 200:
        sys.stdout.write(httpobj.getfile().read())
    

    Note that in general for URL-encoded POST operations, query strings must be quoted by using urllib.quote(). For example to send name="Guy Steele, Jr.":

    >>> from urllib import quote
    >>> x = quote("Guy Steele, Jr.")
    >>> x
    'Guy%20Steele,%20Jr.'
    >>> query_string = "name="+x
    >>> query_string
    'name=Guy%20Steele,%20Jr.'
    

    5.3   What module should I use to help with generating HTML?

    There are many different modules available:

    • HTMLgen is a class library of objects corresponding to all the HTML 3.2 markup tags. It's used when you are writing in Python and wish to synthesize HTML pages for generating a web or for CGI forms, etc.
    • DocumentTemplate and Zope Page Templates are two different systems that are part of Zope.
    • Quixote's PTL uses Python syntax to assemble strings of text.

    Consult the Web Programming topic guide for more links.

    5.4   How do I send mail from a Python script?

    Use the standard library module smtplib.

    Here's a very simple interactive mail sender that uses it. This method will work on any host that supports an SMTP listener.

    import sys, smtplib
    
    fromaddr = raw_input("From: ")
    toaddrs  = raw_input("To: ").split(',')
    print "Enter message, end with ^D:"
    msg = ''
    while 1:
        line = sys.stdin.readline()
        if not line:
            break
        msg = msg + line
    
    # The actual mail send
    server = smtplib.SMTP('localhost')
    server.sendmail(fromaddr, toaddrs, msg)
    server.quit()
    

    A Unix-only alternative uses sendmail. The location of the sendmail program varies between systems; sometimes it is /usr/lib/sendmail, sometime /usr/sbin/sendmail. The sendmail manual page will help you out. Here's some sample code:

    SENDMAIL = "/usr/sbin/sendmail" # sendmail location
    import os
    p = os.popen("%s -t -i" % SENDMAIL, "w")
    p.write("To: receiver@example.com\n")
    p.write("Subject: test\n")
    p.write("\n") # blank line separating headers from body
    p.write("Some text\n")
    p.write("some more text\n")
    sts = p.close()
    if sts != 0:
        print "Sendmail exit status", sts
    

    5.5   How do I avoid blocking in the connect() method of a socket?

    The select module is commonly used to help with asynchronous I/O on sockets.

    To prevent the TCP connect from blocking, you can set the socket to non-blocking mode. Then when you do the connect(), you will either connect immediately (unlikely) or get an exception that contains the error number as .errno. errno.EINPROGRESS indicates that the connection is in progress, but hasn't finished yet. Different OSes will return different values, so you're going to have to check what's returned on your system.

    You can use the connect_ex() method to avoid creating an exception. It will just return the errno value. To poll, you can call connect_ex() again later -- 0 or errno.EISCONN indicate that you're connected -- or you can pass this socket to select to check if it's writeable.

    6   Databases

    6.1   Are there any interfaces to database packages in Python?

    Yes.

    Python 2.3 includes the bsddb package which provides an interface to the BerkeleyDB library. Interfaces to disk-based hashes such as DBM and GDBM are also included with standard Python.

    Support for most relational databases is available. See the Database Topic Guide for details.

    6.2   How do you implement persistent objects in Python?

    The pickle library module solves this in a very general way (though you still can't store things like open files, sockets or windows), and the shelve library module uses pickle and (g)dbm to create persistent mappings containing arbitrary Python objects. For better performance, you can use the cPickle module.

    A more awkward way of doing things is to use pickle's little sister, marshal. The marshal module provides very fast ways to store noncircular basic Python types to files and strings, and back again. Although marshal does not do fancy things like store instances or handle shared references properly, it does run extremely fast. For example loading a half megabyte of data may take less than a third of a second. This often beats doing something more complex and general such as using gdbm with pickle/shelve.

    6.3   Why is cPickle so slow?

    The default format used by the pickle module is a slow one that results in readable pickles. Making it the default, but it would break backward compatibility:

    largeString = 'z' * (100 * 1024)
    myPickle = cPickle.dumps(largeString, protocol=1)
    

    6.4   If my program crashes with a bsddb (or anydbm) database open, it gets corrupted. How come?

    Databases opened for write access with the bsddb module (and often by the anydbm module, since it will preferentially use bsddb) must explicitly be closed using the .close() method of the database. The underlying library caches database contents which need to be converted to on-disk form and written.

    If you have initialized a new bsddb database but not written anything to it before the program crashes, you will often wind up with a zero-length file and encounter an exception the next time the file is opened.

    6.5   I tried to open Berkeley DB file, but bsddb produces bsddb.error: (22, 'Invalid argument'). Help! How can I restore my data?

    Don't panic! Your data is probably intact. The most frequent cause for the error is that you tried to open an earlier Berkeley DB file with a later version of the Berkeley DB library.

    Many Linux systems now have all three versions of Berkeley DB available. If you are migrating from version 1 to a newer version use db_dump185 to dump a plain text version of the database. If you are migrating from version 2 to version 3 use db2_dump to create a plain text version of the database. In either case, use db_load to create a new native database for the latest version installed on your computer. If you have version 3 of Berkeley DB installed, you should be able to use db2_load to create a native version 2 database.

    You should move away from Berkeley DB version 1 files because the hash file code contains known bugs that can corrupt your data.

    7   Mathematics and Numerics

    7.1   How do I generate random numbers in Python?

    The standard module random implements a random number generator. Usage is simple:

    import random
    random.random()
    

    This returns a random floating point number in the range [0, 1).

    There are also many other specialized generators in this module, such as:

    • randrange(a, b) chooses an integer in the range [a, b).
    • uniform(a, b) chooses a floating point number in the range [a, b).
    • normalvariate(mean, sdev) samples the normal (Gaussian) distribution.

    Some higher-level functions operate on sequences directly, such as:

    • choice(S) chooses random element from a given sequence
    • shuffle(L) shuffles a list in-place, i.e. permutes it randomly

    There's also a Random class you can instantiate to create independent multiple random number generators.

    python-defaults-debian/faq/programming.ht0000644000000000000000000017673112057417145015765 0ustar Title: Python Programming FAQ Content-type: text/x-rst ==================================== Programming FAQ ==================================== :Date: $Date: 2005-12-21 22:00:52 -0700 (Wed, 21 Dec 2005) $ :Version: $Revision: 8721 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: General Questions =========================== Is there a source code level debugger with breakpoints, single-stepping, etc.? ------------------------------------------------------------------------------- Yes. The pdb module is a simple but adequate console-mode debugger for Python. It is part of the standard Python library, and is `documented in the Library Reference Manual `_. You can also write your own debugger by using the code for pdb as an example. The IDLE interactive development environment, which is part of the standard Python distribution (normally available as Tools/scripts/idle), includes a graphical debugger. There is documentation for the IDLE debugger at http://www.python.org/idle/doc/idle2.html#Debugger PythonWin is a Python IDE that includes a GUI debugger based on pdb. The Pythonwin debugger colors breakpoints and has quite a few cool features such as debugging non-Pythonwin programs. A reference can be found at http://www.python.org/windows/pythonwin/. Recent versions of PythonWin are available as a part of the ActivePython distribution (see http://www.activestate.com/Products/ActivePython/index.html). `Boa Constructor `_ is an IDE and GUI builder that uses wxPython. It offers visual frame creation and manipulation, an object inspector, many views on the source like object browsers, inheritance hierarchies, doc string generated html documentation, an advanced debugger, integrated help, and Zope support. `Eric3 `_ is an IDE built on PyQt and the Scintilla editing component. Pydb is a version of the standard Python debugger pdb, modified for use with DDD (Data Display Debugger), a popular graphical debugger front end. Pydb can be found at http://packages.debian.org/unstable/devel/pydb.html> and DDD can be found at http://www.gnu.org/software/ddd. There are a number of commmercial Python IDEs that include graphical debuggers. They include: * Wing IDE (http://wingide.com) * Komodo IDE (http://www.activestate.com/Products/Komodo) Is there a tool to help find bugs or perform static analysis? ---------------------------------------------------------------------- Yes. PyChecker is a static analysis tool that finds bugs in Python source code and warns about code complexity and style. You can get PyChecker from http://pychecker.sf.net. `Pylint `_ is another tool that checks if a module satisfies a coding standard, and also makes it possible to write plug-ins to add a custom feature. In addition to the bug checking that PyChecker performs, Pylint offers some additional features such as checking line length, whether variable names are well-formed according to your coding standard, whether declared interfaces are fully implemented, and more. http://www.logilab.org/projects/pylint/documentation provides a full list of Pylint's features. How can I create a stand-alone binary from a Python script? ------------------------------------------------------------------- You don't need the ability to compile Python to C code if all you want is a stand-alone program that users can download and run without having to install the Python distribution first. There are a number of tools that determine the set of modules required by a program and bind these modules together with a Python binary to produce a single executable. One is to use the freeze tool, which is included in the Python source tree as ``Tools/freeze``. It converts Python byte code to C arrays; a C compiler you can embed all your modules into a new program, which is then linked with the standard Python modules. It works by scanning your source recursively for import statements (in both forms) and looking for the modules in the standard Python path as well as in the source directory (for built-in modules). It then turns the bytecode for modules written in Python into C code (array initializers that can be turned into code objects using the marshal module) and creates a custom-made config file that only contains those built-in modules which are actually used in the program. It then compiles the generated C code and links it with the rest of the Python interpreter to form a self-contained binary which acts exactly like your script. Obviously, freeze requires a C compiler. There are several other utilities which don't. The first is Gordon McMillan's installer at http://www.mcmillan-inc.com/install1.html which works on Windows, Linux and at least some forms of Unix. Another is Thomas Heller's py2exe (Windows only) at http://starship.python.net/crew/theller/py2exe A third is Christian Tismer's `SQFREEZE `_ which appends the byte code to a specially-prepared Python interpreter that can find the byte code in the executable. It's possible that a similar approach will be added to Python 2.4, due out some time in 2004. Other tools include Fredrik Lundh's `Squeeze `_ and Anthony Tuininga's `cx_Freeze `_. Are there coding standards or a style guide for Python programs? ------------------------------------------------------------------------ Yes. The coding style required for standard library modules is documented as `PEP 8 <../../peps/pep-0008.html>`_. My program is too slow. How do I speed it up? ---------------------------------------------------- That's a tough one, in general. There are many tricks to speed up Python code; consider rewriting parts in C as a last resort. In some cases it's possible to automatically translate Python to C or x86 assembly language, meaning that you don't have to modify your code to gain increased speed. `Pyrex `_ can compile a slightly modified version of Python code into a C extension, and can be used on many different platforms. `Psyco `_ is a just-in-time compiler that translates Python code into x86 assembly language. If you can use it, Psyco can provide dramatic speedups for critical functions. The rest of this answer will discuss various tricks for squeezing a bit more speed out of Python code. *Never* apply any optimization tricks unless you know you need them, after profiling has indicated that a particular function is the heavily executed hot spot in the code. Optimizations almost always make the code less clear, and you shouldn't pay the costs of reduced clarity (increased development time, greater likelihood of bugs) unless the resulting performance benefit is worth it. There is a page on the wiki devoted to `performance tips `_. Guido van Rossum has written up an anecdote related to optimization at http://www.python.org/doc/essays/list2str.html. One thing to notice is that function and (especially) method calls are rather expensive; if you have designed a purely OO interface with lots of tiny functions that don't do much more than get or set an instance variable or call another method, you might consider using a more direct way such as directly accessing instance variables. Also see the standard module "profile" (`described in the Library Reference manual `_) which makes it possible to find out where your program is spending most of its time (if you have some patience -- the profiling itself can slow your program down by an order of magnitude). Remember that many standard optimization heuristics you may know from other programming experience may well apply to Python. For example it may be faster to send output to output devices using larger writes rather than smaller ones in order to reduce the overhead of kernel system calls. Thus CGI scripts that write all output in "one shot" may be faster than those that write lots of small pieces of output. Also, be sure to use Python's core features where appropriate. For example, slicing allows programs to chop up lists and other sequence objects in a single tick of the interpreter's mainloop using highly optimized C implementations. Thus to get the same effect as:: L2 = [] for i in range[3]: L2.append(L1[i]) it is much shorter and far faster to use :: L2 = list(L1[:3]) # "list" is redundant if L1 is a list. Note that the functionally-oriented builtins such as ``map()``, ``zip()``, and friends can be a convenient accelerator for loops that perform a single task. For example to pair the elements of two lists together:: >>> zip([1,2,3], [4,5,6]) [(1, 4), (2, 5), (3, 6)] or to compute a number of sines:: >>> map( math.sin, (1,2,3,4)) [0.841470984808, 0.909297426826, 0.14112000806, -0.756802495308] The operation completes very quickly in such cases. Other examples include the ``join()`` and ``split()`` methods of string objects. For example if s1..s7 are large (10K+) strings then ``"".join([s1,s2,s3,s4,s5,s6,s7])` may be far faster than the more obvious ``s1+s2+s3+s4+s5+s6+s7``, since the "summation" will compute many subexpressions, whereas ``join()`` does all the copying in one pass. For manipulating strings, use the ``replace()`` method on string objects. Use regular expressions only when you're not dealing with constant string patterns. Consider using the string formatting operations ``string % tuple`` and ``string % dictionary``. Be sure to use the ``list.sort()`` builtin method to do sorting, and see the `sorting mini-HOWTO `_ for examples of moderately advanced usage. ``list.sort()`` beats other techniques for sorting in all but the most extreme circumstances. Another common trick is to "push loops into functions or methods." For example suppose you have a program that runs slowly and you use the profiler to determine that a Python function ``ff()`` is being called lots of times. If you notice that ``ff ()``:: def ff(x): ...do something with x computing result... return result tends to be called in loops like:: list = map(ff, oldlist) or:: for x in sequence: value = ff(x) ...do something with value... then you can often eliminate function call overhead by rewriting ``ff()`` to:: def ffseq(seq): resultseq = [] for x in seq: ...do something with x computing result... resultseq.append(result) return resultseq and rewrite the two examples to ``list = ffseq(oldlist)`` and to:: for value in ffseq(sequence): ...do something with value... Single calls to ff(x) translate to ffseq([x])[0] with little penalty. Of course this technique is not always appropriate and there are other variants which you can figure out. You can gain some performance by explicitly storing the results of a function or method lookup into a local variable. A loop like:: for key in token: dict[key] = dict.get(key, 0) + 1 resolves dict.get every iteration. If the method isn't going to change, a slightly faster implementation is:: dict_get = dict.get # look up the method once for key in token: dict[key] = dict_get(key, 0) + 1 Default arguments can be used to determine values once, at compile time instead of at run time. This can only be done for functions or objects which will not be changed during program execution, such as replacing :: def degree_sin(deg): return math.sin(deg * math.pi / 180.0) with :: def degree_sin(deg, factor = math.pi/180.0, sin = math.sin): return sin(deg * factor) Because this trick uses default arguments for terms which should not be changed, it should only be used when you are not concerned with presenting a possibly confusing API to your users. Core Language ================== How do you set a global variable in a function? ---------------------------------------------------------- Did you do something like this? :: x = 1 # make a global def f(): print x # try to print the global ... for j in range(100): if q>3: x=4 Any variable assigned in a function is local to that function. unless it is specifically declared global. Since a value is bound to ``x`` as the last statement of the function body, the compiler assumes that ``x`` is local. Consequently the ``print x`` attempts to print an uninitialized local variable and will trigger a ``NameError``. The solution is to insert an explicit global declaration at the start of the function:: def f(): global x print x # try to print the global ... for j in range(100): if q>3: x=4 In this case, all references to ``x`` are interpreted as references to the ``x`` from the module namespace. What are the rules for local and global variables in Python? -------------------------------------------------------------------------- In Python, variables that are only referenced inside a function are implicitly global. If a variable is assigned a new value anywhere within the function's body, it's assumed to be a local. If a variable is ever assigned a new value inside the function, the variable is implicitly local, and you need to explicitly declare it as 'global'. Though a bit surprising at first, a moment's consideration explains this. On one hand, requiring ``global`` for assigned variables provides a bar against unintended side-effects. On the other hand, if ``global`` was required for all global references, you'd be using ``global`` all the time. You'd have to declare as global every reference to a builtin function or to a component of an imported module. This clutter would defeat the usefulness of the ``global`` declaration for identifying side-effects. How do I share global variables across modules? ------------------------------------------------ The canonical way to share information across modules within a single program is to create a special module (often called config or cfg). Just import the config module in all modules of your application; the module then becomes available as a global name. Because there is only one instance of each module, any changes made to the module object get reflected everywhere. For example: config.py:: x = 0 # Default value of the 'x' configuration setting mod.py:: import config config.x = 1 main.py:: import config import mod print config.x Note that using a module is also the basis for implementing the Singleton design pattern, for the same reason. What are the "best practices" for using import in a module? ------------------------------------------------------------------------------ In general, don't use ``from modulename import *``. Doing so clutters the importer's namespace. Some people avoid this idiom even with the few modules that were designed to be imported in this manner. Modules designed in this manner include ``Tkinter``, and ``threading``. Import modules at the top of a file. Doing so makes it clear what other modules your code requires and avoids questions of whether the module name is in scope. Using one import per line makes it easy to add and delete module imports, but using multiple imports per line uses less screen space. It's good practice if you import modules in the following order: 1. standard libary modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``) 2. third-party library modules (anything installed in Python's site-packages directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc. 3. locally-developed modules Never use relative package imports. If you're writing code that's in the ``package.sub.m1`` module and want to import ``package.sub.m2``, do not just write ``import m2``, even though it's legal. Write ``from package.sub import m2`` instead. Relative imports can lead to a module being initialized twice, leading to confusing bugs. It is sometimes necessary to move imports to a function or class to avoid problems with circular imports. Gordon McMillan says: Circular imports are fine where both modules use the "import " form of import. They fail when the 2nd module wants to grab a name out of the first ("from module import name") and the import is at the top level. That's because names in the 1st are not yet available, because the first module is busy importing the 2nd. In this case, if the second module is only used in one function, then the import can easily be moved into that function. By the time the import is called, the first module will have finished initializing, and the second module can do its import. It may also be necessary to move imports out of the top level of code if some of the modules are platform-specific. In that case, it may not even be possible to import all of the modules at the top of the file. In this case, importing the correct modules in the corresponding platform-specific code is a good option. Only move imports into a local scope, such as inside a function definition, if it's necessary to solve a problem such as avoiding a circular import or are trying to reduce the initialization time of a module. This technique is especially helpful if many of the imports are unnecessary depending on how the program executes. You may also want to move imports into a function if the modules are only ever used in that function. Note that loading a module the first time may be expensive because of the one time initialization of the module, but loading a module multiple times is virtually free, costing only a couple of dictionary lookups. Even if the module name has gone out of scope, the module is probably available in sys.modules. If only instances of a specific class use a module, then it is reasonable to import the module in the class's ``__init__`` method and then assign the module to an instance variable so that the module is always available (via that instance variable) during the life of the object. Note that to delay an import until the class is instantiated, the import must be inside a method. Putting the import inside the class but outside of any method still causes the import to occur when the module is initialized. How can I pass optional or keyword parameters from one function to another? ------------------------------------------------------------------------------- Collect the arguments using the ``*`` and ``**`` specifiers in the function's parameter list; this gives you the positional arguments as a tuple and the keyword arguments as a dictionary. You can then pass these arguments when calling another function by using ``*`` and ``**``:: def f(x, *tup, **kwargs): ... kwargs['width']='14.3c' ... g(x, *tup, **kwargs) In the unlikely case that you care about Python versions older than 2.0, use 'apply':: def f(x, *tup, **kwargs): ... kwargs['width']='14.3c' ... apply(g, (x,)+tup, kwargs) How do I write a function with output parameters (call by reference)? ----------------------------------------------------------------------------- Remember that arguments are passed by assignment in Python. Since assignment just creates references to objects, there's no alias between an argument name in the caller and callee, and so no call-by-reference per se. You can achieve the desired effect in a number of ways. 1) By returning a tuple of the results:: def func2(a, b): a = 'new-value' # a and b are local names b = b + 1 # assigned to new objects return a, b # return new values x, y = 'old-value', 99 x, y = func2(x, y) print x, y # output: new-value 100 This is almost always the clearest solution. 2) By using global variables. This isn't thread-safe, and is not recommended. 3) By passing a mutable (changeable in-place) object:: def func1(a): a[0] = 'new-value' # 'a' references a mutable list a[1] = a[1] + 1 # changes a shared object args = ['old-value', 99] func1(args) print args[0], args[1] # output: new-value 100 4) By passing in a dictionary that gets mutated:: def func3(args): args['a'] = 'new-value' # args is a mutable dictionary args['b'] = args['b'] + 1 # change it in-place args = {'a':' old-value', 'b': 99} func3(args) print args['a'], args['b'] 5) Or bundle up values in a class instance:: class callByRef: def __init__(self, **args): for (key, value) in args.items(): setattr(self, key, value) def func4(args): args.a = 'new-value' # args is a mutable callByRef args.b = args.b + 1 # change object in-place args = callByRef(a='old-value', b=99) func4(args) print args.a, args.b There's almost never a good reason to get this complicated. Your best choice is to return a tuple containing the multiple results. How do you make a higher order function in Python? ---------------------------------------------------------- You have two choices: you can use nested scopes or you can use callable objects. For example, suppose you wanted to define ``linear(a,b)`` which returns a function ``f(x)`` that computes the value ``a*x+b``. Using nested scopes:: def linear(a,b): def result(x): return a*x + b return result Or using a callable object:: class linear: def __init__(self, a, b): self.a, self.b = a,b def __call__(self, x): return self.a * x + self.b In both cases:: taxes = linear(0.3,2) gives a callable object where taxes(10e6) == 0.3 * 10e6 + 2. The callable object approach has the disadvantage that it is a bit slower and results in slightly longer code. However, note that a collection of callables can share their signature via inheritance:: class exponential(linear): # __init__ inherited def __call__(self, x): return self.a * (x ** self.b) Object can encapsulate state for several methods:: class counter: value = 0 def set(self, x): self.value = x def up(self): self.value=self.value+1 def down(self): self.value=self.value-1 count = counter() inc, dec, reset = count.up, count.down, count.set Here ``inc()``, ``dec()`` and ``reset()`` act like functions which share the same counting variable. How do I copy an object in Python? ------------------------------------------ In general, try copy.copy() or copy.deepcopy() for the general case. Not all objects can be copied, but most can. Some objects can be copied more easily. Dictionaries have a ``copy()`` method:: newdict = olddict.copy() Sequences can be copied by slicing:: new_l = l[:] How can I find the methods or attributes of an object? -------------------------------------------------------------- For an instance x of a user-defined class, ``dir(x)`` returns an alphabetized list of the names containing the instance attributes and methods and attributes defined by its class. How can my code discover the name of an object? ------------------------------------------------------- Generally speaking, it can't, because objects don't really have names. Essentially, assignment always binds a name to a value; The same is true of ``def`` and ``class`` statements, but in that case the value is a callable. Consider the following code:: class A: pass B = A a = B() b = a print b <__main__.A instance at 016D07CC> print a <__main__.A instance at 016D07CC> Arguably the class has a name: even though it is bound to two names and invoked through the name B the created instance is still reported as an instance of class A. However, it is impossible to say whether the instance's name is a or b, since both names are bound to the same value. Generally speaking it should not be necessary for your code to "know the names" of particular values. Unless you are deliberately writing introspective programs, this is usually an indication that a change of approach might be beneficial. In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer to this question: The same way as you get the name of that cat you found on your porch: the cat (object) itself cannot tell you its name, and it doesn't really care -- so the only way to find out what it's called is to ask all your neighbours (namespaces) if it's their cat (object)... ....and don't be surprised if you'll find that it's known by many names, or no name at all! Is there an equivalent of C's "?:" ternary operator? ---------------------------------------------------------------------- No. In many cases you can mimic a?b:c with "a and b or c", but there's a flaw: if b is zero (or empty, or None -- anything that tests false) then c will be selected instead. In many cases you can prove by looking at the code that this can't happen (e.g. because b is a constant or has a type that can never be false), but in general this can be a problem. Tim Peters (who wishes it was Steve Majewski) suggested the following solution: (a and [b] or [c])[0]. Because [b] is a singleton list it is never false, so the wrong path is never taken; then applying [0] to the whole thing gets the b or c that you really wanted. Ugly, but it gets you there in the rare cases where it is really inconvenient to rewrite your code using 'if'. The best course is usually to write a simple ``if...else`` statement. Another solution is to implement the "?:" operator as a function:: def q(cond,on_true,on_false): if cond: if not isfunction(on_true): return on_true else: return apply(on_true) else: if not isfunction(on_false): return on_false else: return apply(on_false) In most cases you'll pass b and c directly: ``q(a,b,c)``. To avoid evaluating b or c when they shouldn't be, encapsulate them within a lambda function, e.g.: ``q(a,lambda: b, lambda: c)``. It has been asked *why* Python has no if-then-else expression. There are several answers: many languages do just fine without one; it can easily lead to less readable code; no sufficiently "Pythonic" syntax has been discovered; a search of the standard library found remarkably few places where using an if-then-else expression would make the code more understandable. In 2002, `PEP 308 <../../peps/pep-0308.html>`_ was written proposing several possible syntaxes and the community was asked to vote on the issue. The vote was inconclusive. Most people liked one of the syntaxes, but also hated other syntaxes; many votes implied that people preferred no ternary operator rather than having a syntax they hated. Is it possible to write obfuscated one-liners in Python? ---------------------------------------------------------------- Yes. Usually this is done by nesting `lambda` within `lambda`. See the following three examples, due to Ulf Bartelt:: # Primes < 1000 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0, map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000))) # First 10 Fibonacci numbers print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f), range(10)) # Mandelbrot set print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y, Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM, Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro, i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y >=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr( 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24) # \___ ___ \___ ___ | | |__ lines on screen # V V | |______ columns on screen # | | |__________ maximum of "iterations" # | |_________________ range on y axis # |____________________________ range on x axis Don't try this at home, kids! Numbers and strings ========================== How do I specify hexadecimal and octal integers? -------------------------------------------------------- To specify an octal digit, precede the octal value with a zero. For example, to set the variable "a" to the octal value "10" (8 in decimal), type:: >>> a = 010 >>> a 8 Hexadecimal is just as easy. Simply precede the hexadecimal number with a zero, and then a lower or uppercase "x". Hexadecimal digits can be specified in lower or uppercase. For example, in the Python interpreter:: >>> a = 0xa5 >>> a 165 >>> b = 0XB2 >>> b 178 Why does -22 / 10 return -3? ---------------------------------- It's primarily driven by the desire that ``i%j`` have the same sign as ``j``. If you want that, and also want:: i == (i/j)*j + (i%j) then integer division has to return the floor. C also requres that identity to hold, and then compilers that truncate ``i/j`` need to make ``i%j`` have the same sign as ``i``. There are few real use cases for ``i%j`` when ``j`` is negative. When ``j`` is positive, there are many, and in virtually all of them it's more useful for ``i%j`` to be ``>= 0``. If the clock says 10 now, what did it say 200 hours ago? ``-190 % 12 == 2`` is useful; ``-190 % 12 == -10`` is a bug waiting to bite. How do I convert a string to a number? ---------------------------------------------- For integers, use the built-in ``int()`` type constructor, e.g. int('144') == 144. Similarly, ``float()`` converts to floating-point, e.g. ``float('144') == 144.0``. By default, these interpret the number as decimal, so that ``int('0144') == 144`` and ``int('0x144')`` raises ``ValueError``. ``int(string, base)`` takes the base to convert from as a second optional argument, so ``int('0x144', 16) == 324``. If the base is specified as 0, the number is interpreted using Python's rules: a leading '0' indicates octal, and '0x' indicates a hex number. Do not use the built-in function ``eval()`` if all you need is to convert strings to numbers. ``eval()`` will be significantly slower and it presents a security risk: someone could pass you a Python expression that might have unwanted side effects. For example, someone could pass ``__import__('os').system("rm -rf $HOME")`` which would erase your home directory. ``eval()`` also has the effect of interpreting numbers as Python expressions, so that e.g. eval('09') gives a syntax error because Python regards numbers starting with '0' as octal (base 8). How do I convert a number to a string? ---------------------------------------------- To convert, e.g., the number 144 to the string '144', use the built-in function ``str()``. If you want a hexadecimal or octal representation, use the built-in functions ``hex()`` or ``oct()``. For fancy formatting, use `the % operator <../../doc/lib/typesseq-strings.html>`_ on strings, e.g. ``"%04d" % 144`` yields '0144' and ``"%.3f" % (1/3.0)`` yields '0.333'. See the library reference manual for details. How do I modify a string in place? ------------------------------------------ You can't, because strings are immutable. If you need an object with this ability, try converting the string to a list or use the array module:: >>> s = "Hello, world" >>> a = list(s) >>> print a ['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd'] >>> a[7:] = list("there!") >>> ''.join(a) 'Hello, there!' >>> import array >>> a = array.array('c', s) >>> print a array('c', 'Hello, world') >>> a[0] = 'y' ; print a array('c', 'yello world') >>> a.tostring() 'yello, world' How do I use strings to call functions/methods? ---------------------------------------------------------- There are various techniques. * The best is to use a dictionary that maps strings to functions. The primary advantage of this technique is that the strings do not need to match the names of the functions. This is also the primary technique used to emulate a case construct:: def a(): pass def b(): pass dispatch = {'go': a, 'stop': b} # Note lack of parens for funcs dispatch[get_input()]() # Note trailing parens to call function * Use the built-in function ``getattr()``:: import foo getattr(foo, 'bar')() Note that getattr() works on any object, including classes, class instances, modules, and so on. This is used in several places in the standard library, like this:: class Foo: def do_foo(self): ... def do_bar(self): ... f = getattr(foo_instance, 'do_' + opname) f() * Use ``locals()`` or ``eval()`` to resolve the function name:: def myFunc(): print "hello" fname = "myFunc" f = locals()[fname] f() f = eval(fname) f() Note: Using ``eval()`` is slow and dangerous. If you don't have absolute control over the contents of the string, someone could pass a string that resulted in an arbitrary function being executed. Is there an equivalent to Perl's chomp() for removing trailing newlines from strings? -------------------------------------------------------------------------------------------- Starting with Python 2.2, you can use ``S.rstrip("\r\n")`` to remove all occurances of any line terminator from the end of the string ``S`` without removing other trailing whitespace. If the string ``S`` represents more than one line, with several empty lines at the end, the line terminators for all the blank lines will be removed:: >>> lines = ("line 1 \r\n" ... "\r\n" ... "\r\n") >>> lines.rstrip("\n\r") "line 1 " Since this is typically only desired when reading text one line at a time, using ``S.rstrip()`` this way works well. For older versions of Python, There are two partial substitutes: - If you want to remove all trailing whitespace, use the ``rstrip()`` method of string objects. This removes all trailing whitespace, not just a single newline. - Otherwise, if there is only one line in the string ``S``, use ``S.splitlines()[0]``. Is there a scanf() or sscanf() equivalent? -------------------------------------------------- Not as such. For simple input parsing, the easiest approach is usually to split the line into whitespace-delimited words using the ``split()`` method of string objects and then convert decimal strings to numeric values using ``int()`` or ``float()``. ``split()`` supports an optional "sep" parameter which is useful if the line uses something other than whitespace as a separator. For more complicated input parsing, regular expressions more powerful than C's ``sscanf()`` and better suited for the task. What does 'UnicodeError: ASCII [decoding,encoding] error: ordinal not in range(128)' mean? ----------------------------------------------------------------------------------------------------- This error indicates that your Python installation can handle only 7-bit ASCII strings. There are a couple ways to fix or work around the problem. If your programs must handle data in arbitary character set encodings, the environment the application runs in will generally identify the encoding of the data it is handing you. You need to convert the input to Unicode data using that encoding. For example, a program that handles email or web input will typically find character set encoding information in Content-Type headers. This can then be used to properly convert input data to Unicode. Assuming the string referred to by ``value`` is encoded as UTF-8:: value = unicode(value, "utf-8") will return a Unicode object. If the data is not correctly encoded as UTF-8, the above call will raise a ``UnicodeError`` exception. If you only want strings coverted to Unicode which have non-ASCII data, you can try converting them first assuming an ASCII encoding, and then generate Unicode objects if that fails:: try: x = unicode(value, "ascii") except UnicodeError: value = unicode(value, "utf-8") else: # value was valid ASCII data pass It's possible to set a default encoding in a file called ``sitecustomize.py`` that's part of the Python library. However, this isn't recommended because changing the Python-wide default encoding may cause third-party extension modules to fail. Note that on Windows, there is an encoding known as "mbcs", which uses an encoding specific to your current locale. In many cases, and particularly when working with COM, this may be an appropriate default encoding to use. Sequences (Tuples/Lists) ================================= How do I convert between tuples and lists? ------------------------------------------------ The function ``tuple(seq)`` converts any sequence (actually, any iterable) into a tuple with the same items in the same order. For example, ``tuple([1, 2, 3])`` yields ``(1, 2, 3)`` and ``tuple('abc')`` yields ``('a', 'b', 'c')``. If the argument is a tuple, it does not make a copy but returns the same object, so it is cheap to call ``tuple()`` when you aren't sure that an object is already a tuple. The function ``list(seq)`` converts any sequence or iterable into a list with the same items in the same order. For example, ``list((1, 2, 3))`` yields ``[1, 2, 3]`` and ``list('abc')`` yields ``['a', 'b', 'c']``. If the argument is a list, it makes a copy just like ``seq[:]`` would. What's a negative index? -------------------------------------------------------------------- Python sequences are indexed with positive numbers and negative numbers. For positive numbers 0 is the first index 1 is the second index and so forth. For negative indices -1 is the last index and -2 is the pentultimate (next to last) index and so forth. Think of ``seq[-n]`` as the same as ``seq[len(seq)-n]``. Using negative indices can be very convenient. For example ``S[:-1]`` is all of the string except for its last character, which is useful for removing the trailing newline from a string. How do I iterate over a sequence in reverse order? --------------------------------------------------------- If it is a list, the fastest solution is :: list.reverse() try: for x in list: "do something with x" finally: list.reverse() This has the disadvantage that while you are in the loop, the list is temporarily reversed. If you don't like this, you can make a copy. This appears expensive but is actually faster than other solutions:: rev = list[:] rev.reverse() for x in rev: If it's not a list, a more general but slower solution is:: for i in range(len(sequence)-1, -1, -1): x = sequence[i] A more elegant solution, is to define a class which acts as a sequence and yields the elements in reverse order (solution due to Steve Majewski):: class Rev: def __init__(self, seq): self.forw = seq def __len__(self): return len(self.forw) def __getitem__(self, i): return self.forw[-(i + 1)] You can now simply write:: for x in Rev(list): Unfortunately, this solution is slowest of all, due to the method call overhead. With Python 2.3, you can use an extended slice syntax:: for x in sequence[::-1]: How do you remove duplicates from a list? ------------------------------------------------- See the Python Cookbook for a long discussion of many ways to do this: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 If you don't mind reordering the list, sort it and then scan from the end of the list, deleting duplicates as you go:: if List: List.sort() last = List[-1] for i in range(len(List)-2, -1, -1): if last==List[i]: del List[i] else: last=List[i] If all elements of the list may be used as dictionary keys (i.e. they are all hashable) this is often faster :: d = {} for x in List: d[x]=x List = d.values() How do you make an array in Python? ---------------------------------------------------- Use a list:: ["this", 1, "is", "an", "array"] Lists are equivalent to C or Pascal arrays in their time complexity; the primary difference is that a Python list can contain objects of many different types. The ``array`` module also provides methods for creating arrays of fixed types with compact representations, but they are slower to index than lists. Also note that the Numeric extensions and others define array-like structures with various characteristics as well. To get Lisp-style linked lists, you can emulate cons cells using tuples:: lisp_list = ("like", ("this", ("example", None) ) ) If mutability is desired, you could use lists instead of tuples. Here the analogue of lisp car is ``lisp_list[0]`` and the analogue of cdr is ``lisp_list[1]``. Only do this if you're sure you really need to, because it's usually a lot slower than using Python lists. How do I create a multidimensional list? --------------------------------------------------------------- You probably tried to make a multidimensional array like this:: A = [[None] * 2] * 3 This looks correct if you print it:: >>> A [[None, None], [None, None], [None, None]] But when you assign a value, it shows up in multiple places: >>> A[0][0] = 5 >>> A [[5, None], [5, None], [5, None]] The reason is that replicating a list with ``*`` doesn't create copies, it only creates references to the existing objects. The ``*3`` creates a list containing 3 references to the same list of length two. Changes to one row will show in all rows, which is almost certainly not what you want. The suggested approach is to create a list of the desired length first and then fill in each element with a newly created list:: A = [None]*3 for i in range(3): A[i] = [None] * 2 This generates a list containing 3 different lists of length two. You can also use a list comprehension:: w,h = 2,3 A = [ [None]*w for i in range(h) ] Or, you can use an extension that provides a matrix datatype; `Numeric Python `_ is the best known. How do I apply a method to a sequence of objects? -------------------------------------------------------------------------- Use a list comprehension:: result = [obj.method() for obj in List] More generically, you can try the following function:: def method_map(objects, method, arguments): """method_map([a,b], "meth", (1,2)) gives [a.meth(1,2), b.meth(1,2)]""" nobjects = len(objects) methods = map(getattr, objects, [method]*nobjects) return map(apply, methods, [arguments]*nobjects) Dictionaries ================== How can I get a dictionary to display its keys in a consistent order? ----------------------------------------------------------------------------- You can't. Dictionaries store their keys in an unpredictable order, so the display order of a dictionary's elements will be similarly unpredictable. This can be frustrating if you want to save a printable version to a file, make some changes and then compare it with some other printed dictionary. In this case, use the ``pprint`` module to pretty-print the dictionary; the items will be presented in order sorted by the key. A more complicated solution is to subclass ``UserDict.UserDict`` to create a ``SortedDict`` class that prints itself in a predictable order. Here's one simpleminded implementation of such a class:: import UserDict, string class SortedDict(UserDict.UserDict): def __repr__(self): result = [] append = result.append keys = self.data.keys() keys.sort() for k in keys: append("%s: %s" % (`k`, `self.data[k]`)) return "{%s}" % string.join(result, ", ") ___str__ = __repr__ This will work for many common situations you might encounter, though it's far from a perfect solution. The largest flaw is that if some values in the dictionary are also dictionaries, their values won't be presented in any particular order. I want to do a complicated sort: can you do a Schwartzian Transform in Python? -------------------------------------------------------------------------------------- Yes, it's quite simple with list comprehensions. The technique, attributed to Randal Schwartz of the Perl community, sorts the elements of a list by a metric which maps each element to its "sort value". To sort a list of strings by their uppercase values:: tmp1 = [ (x.upper(), x) for x in L ] # Schwartzian transform tmp1.sort() Usorted = [ x[1] for x in tmp1 ] To sort by the integer value of a subfield extending from positions 10-15 in each string:: tmp2 = [ (int(s[10:15]), s) for s in L ] # Schwartzian transform tmp2.sort() Isorted = [ x[1] for x in tmp2 ] Note that Isorted may also be computed by :: def intfield(s): return int(s[10:15]) def Icmp(s1, s2): return cmp(intfield(s1), intfield(s2)) Isorted = L[:] Isorted.sort(Icmp) but since this method calls ``intfield()`` many times for each element of L, it is slower than the Schwartzian Transform. How can I sort one list by values from another list? ------------------------------------------------------------ Merge them into a single list of tuples, sort the resulting list, and then pick out the element you want. :: >>> list1 = ["what", "I'm", "sorting", "by"] >>> list2 = ["something", "else", "to", "sort"] >>> pairs = zip(list1, list2) >>> pairs [('what', 'something'), ("I'm", 'else'), ('sorting', 'to'), ('by', 'sort')] >>> pairs.sort() >>> result = [ x[1] for x in pairs ] >>> result ['else', 'sort', 'to', 'something'] An alternative for the last step is:: result = [] for p in pairs: result.append(p[1]) If you find this more legible, you might prefer to use this instead of the final list comprehension. However, it is almost twice as slow for long lists. Why? First, the ``append()`` operation has to reallocate memory, and while it uses some tricks to avoid doing that each time, it still has to do it occasionally, and that costs quite a bit. Second, the expression "result.append" requires an extra attribute lookup, and third, there's a speed reduction from having to make all those function calls. Objects ============= What is a class? ------------------------ A class is the particular object type created by executing a class statement. Class objects are used as templates to create instance objects, which embody both the data (attributes) and code (methods) specific to a datatype. A class can be based on one or more other classes, called its base class(es). It then inherits the attributes and methods of its base classes. This allows an object model to be successively refined by inheritance. You might have a generic ``Mailbox`` class that provides basic accessor methods for a mailbox, and subclasses such as ``MboxMailbox``, ``MaildirMailbox``, ``OutlookMailbox`` that handle various specific mailbox formats. What is a method? ------------------------- A method is a function on some object ``x`` that you normally call as ``x.name(arguments...)``. Methods are defined as functions inside the class definition:: class C: def meth (self, arg): return arg*2 + self.attribute What is self? --------------------- Self is merely a conventional name for the first argument of a method. A method defined as ``meth(self, a, b, c)`` should be called as ``x.meth(a, b, c)`` for some instance ``x`` of the class in which the definition occurs; the called method will think it is called as ``meth(x, a, b, c)``. See also `Why must 'self' be used explicitly in method definitions and calls? `_ How do I check if an object is an instance of a given class or of a subclass of it? ------------------------------------------------------------------------------------------- Use the built-in function ``isinstance(obj, cls)``. You can check if an object is an instance of any of a number of classes by providing a tuple instead of a single class, e.g. ``isinstance(obj, (class1, class2, ...))``, and can also check whether an object is one of Python's built-in types, e.g. ``isinstance(obj, str)`` or ``isinstance(obj, (int, long, float, complex))``. Note that most programs do not use ``isinstance()`` on user-defined classes very often. If you are developing the classes yourself, a more proper object-oriented style is to define methods on the classes that encapsulate a particular behaviour, instead of checking the object's class and doing a different thing based on what class it is. For example, if you have a function that does something:: def search (obj): if isinstance(obj, Mailbox): # ... code to search a mailbox elif isinstance(obj, Document): # ... code to search a document elif ... A better approach is to define a ``search()`` method on all the classes and just call it:: class Mailbox: def search(self): # ... code to search a mailbox class Document: def search(self): # ... code to search a document obj.search() What is delegation? --------------------------- Delegation is an object oriented technique (also called a design pattern). Let's say you have an object ``x`` and want to change the behaviour of just one of its methods. You can create a new class that provides a new implementation of the method you're interested in changing and delegates all other methods to the corresponding method of ``x``. Python programmers can easily implement delegation. For example, the following class implements a class that behaves like a file but converts all written data to uppercase:: class UpperOut: def __init__(self, outfile): self.__outfile = outfile def write(self, s): self.__outfile.write(s.upper()) def __getattr__(self, name): return getattr(self.__outfile, name) Here the ``UpperOut`` class redefines the ``write()`` method to convert the argument string to uppercase before calling the underlying ``self.__outfile.write()`` method. All other methods are delegated to the underlying ``self.__outfile`` object. The delegation is accomplished via the ``__getattr__`` method; consult `the language reference <../../doc/ref/attribute-access.html>`_ for more information about controlling attribute access. Note that for more general cases delegation can get trickier. When attributes must be set as well as retrieved, the class must define a ``__settattr__`` method too, and it must do so carefully. The basic implementation of __setattr__ is roughly equivalent to the following:: class X: ... def __setattr__(self, name, value): self.__dict__[name] = value ... Most __setattr__ implementations must modify self.__dict__ to store local state for self without causing an infinite recursion. How do I call a method defined in a base class from a derived class that overrides it? ---------------------------------------------------------------------------------------------- If you're using new-style classes, use the built-in ``super()`` function:: class Derived(Base): def meth (self): super(Derived, self).meth() If you're using classic classes: For a class definition such as ``class Derived(Base): ...`` you can call method ``meth()`` defined in ``Base`` (or one of ``Base``'s base classes) as ``Base.meth(self, arguments...)``. Here, ``Base.meth`` is an unbound method, so you need to provide the ``self`` argument. How can I organize my code to make it easier to change the base class? ------------------------------------------------------------------------------ You could define an alias for the base class, assign the real base class to it before your class definition, and use the alias throughout your class. Then all you have to change is the value assigned to the alias. Incidentally, this trick is also handy if you want to decide dynamically (e.g. depending on availability of resources) which base class to use. Example:: BaseAlias = class Derived(BaseAlias): def meth(self): BaseAlias.meth(self) ... How do I create static class data and static class methods? ------------------------------------------------------------------- Static data (in the sense of C++ or Java) is easy; static methods (again in the sense of C++ or Java) are not supported directly. For static data, simply define a class attribute. To assign a new value to the attribute, you have to explicitly use the class name in the assignment:: class C: count = 0 # number of times C.__init__ called def __init__(self): C.count = C.count + 1 def getcount(self): return C.count # or return self.count ``c.count`` also refers to ``C.count`` for any ``c`` such that ``isinstance(c, C)`` holds, unless overridden by ``c`` itself or by some class on the base-class search path from ``c.__class__`` back to ``C``. Caution: within a method of C, an assignment like ``self.count = 42`` creates a new and unrelated instance vrbl named "count" in ``self``'s own dict. Rebinding of a class-static data name must always specify the class whether inside a method or not:: C.count = 314 Static methods are possible when you're using new-style classes:: class C: def static(arg1, arg2, arg3): # No 'self' parameter! ... static = staticmethod(static) However, a far more straightforward way to get the effect of a static method is via a simple module-level function:: def getcount(): return C.count If your code is structured so as to define one class (or tightly related class hierarchy) per module, this supplies the desired encapsulation. How can I overload constructors (or methods) in Python? --------------------------------------------------------------- This answer actually applies to all methods, but the question usually comes up first in the context of constructors. In C++ you'd write :: class C { C() { cout << "No arguments\n"; } C(int i) { cout << "Argument is " << i << "\n"; } } in Python you have to write a single constructor that catches all cases using default arguments. For example:: class C: def __init__(self, i=None): if i is None: print "No arguments" else: print "Argument is", i This is not entirely equivalent, but close enough in practice. You could also try a variable-length argument list, e.g. :: def __init__(self, *args): .... The same approach works for all method definitions. I try to use __spam and I get an error about _SomeClassName__spam. -------------------------------------------------------------------------- Variables with double leading underscore are "mangled" to provide a simple but effective way to define class private variables. Any identifier of the form ``__spam`` (at least two leading underscores, at most one trailing underscore) is textually replaced with ``_classname__spam``, where ``classname`` is the current class name with any leading underscores stripped. This doesn't guarantee privacy: an outside user can still deliberately access the "_classname__spam" attribute, and private values are visible in the object's ``__dict__``. Many Python programmers never bother to use private variable names at all. My class defines __del__ but it is not called when I delete the object. ------------------------------------------------------------------------------- There are several possible reasons for this. The del statement does not necessarily call __del__ -- it simply decrements the object's reference count, and if this reaches zero __del__ is called. If your data structures contain circular links (e.g. a tree where each child has a parent reference and each parent has a list of children) the reference counts will never go back to zero. Once in a while Python runs an algorithm to detect such cycles, but the garbage collector might run some time after the last reference to your data structure vanishes, so your __del__ method may be called at an inconvenient and random time. This is inconvenient if you're trying to reproduce a problem. Worse, the order in which object's __del__ methods are executed is arbitrary. You can run ``gc.collect()`` to force a collection, but there *are* pathological cases where objects will never be collected. Despite the cycle collector, it's still a good idea to define an explicit ``close()`` method on objects to be called whenever you're done with them. The ``close()`` method can then remove attributes that refer to subobjecs. Don't call ``__del__`` directly -- ``__del__`` should call ``close()`` and ``close()`` should make sure that it can be called more than once for the same object. Another way to avoid cyclical references is to use the "weakref" module, which allows you to point to objects without incrementing their reference count. Tree data structures, for instance, should use weak references for their parent and sibling references (if they need them!). If the object has ever been a local variable in a function that caught an expression in an except clause, chances are that a reference to the object still exists in that function's stack frame as contained in the stack trace. Normally, calling ``sys.exc_clear()`` will take care of this by clearing the last recorded exception. Finally, if your __del__ method raises an exception, a warning message is printed to sys.stderr. How do I get a list of all instances of a given class? -------------------------------------------------------------- Python does not keep track of all instances of a class (or of a built-in type). You can program the class's constructor to keep track of all instances by keeping a list of weak references to each instance. Modules ============= How do I create a .pyc file? ------------------------------------- When a module is imported for the first time (or when the source is more recent than the current compiled file) a ``.pyc`` file containing the compiled code should be created in the same directory as the ``.py`` file. One reason that a ``.pyc`` file may not be created is permissions problems with the directory. This can happen, for example, if you develop as one user but run as another, such as if you are testing with a web server. Creation of a .pyc file is automatic if you're importing a module and Python has the ability (permissions, free space, etc...) to write the compiled module back to the directory. Running Python on a top level script is not considered an import and no ``.pyc`` will be created. For example, if you have a top-level module ``abc.py`` that imports another module ``xyz.py``, when you run abc, ``xyz.pyc`` will be created since xyz is imported, but no ``abc.pyc`` file will be created since ``abc.py`` isn't being imported. If you need to create abc.pyc -- that is, to create a .pyc file for a module that is not imported -- you can, using the py_compile and compileall modules. The ``py_compile`` module can manually compile any module. One way is to use the ``compile()`` function in that module interactively:: >>> import py_compile >>> py_compile.compile('abc.py') This will write the ``.pyc`` to the same location as ``abc.py`` (or you can override that with the optional parameter ``cfile``). You can also automatically compile all files in a directory or directories using the ``compileall`` module. You can do it from the shell prompt by running ``compileall.py`` and providing the path of a directory containing Python files to compile:: python compileall.py . How do I find the current module name? --------------------------------------------- A module can find out its own module name by looking at the predefined global variable ``__name__``. If this has the value '__main__', the program is running as a script. Many modules that are usually used by importing them also provide a command-line interface or a self-test, and only execute this code after checking ``__name__``:: def main(): print 'Running test...' ... if __name__ == '__main__': main() How can I have modules that mutually import each other? --------------------------------------------------------------- Suppose you have the following modules: foo.py:: from bar import bar_var foo_var=1 bar.py:: from foo import foo_var bar_var=2 The problem is that the interpreter will perform the following steps: * main imports foo * Empty globals for foo are created * foo is compiled and starts executing * foo imports bar * Empty globals for bar are created * bar is compiled and starts executing * bar imports foo (which is a no-op since there already is a module named foo) * bar.foo_var = foo.foo_var The last step fails, because Python isn't done with interpreting ``foo`` yet and the global symbol dictionary for ``foo`` is still empty. The same thing happens when you use ``import foo``, and then try to access ``foo.foo_var`` in global code. There are (at least) three possible workarounds for this problem. Guido van Rossum recommends avoiding all uses of ``from import ...``, and placing all code inside functions. Initializations of global variables and class variables should use constants or built-in functions only. This means everything from an imported module is referenced as ``.``. Jim Roskind suggests performing steps in the following order in each module: * exports (globals, functions, and classes that don't need imported base classes) * ``import`` statements * active code (including globals that are initialized from imported values). van Rossum doesn't like this approach much because the imports appear in a strange place, but it does work. Matthias Urlichs recommends restructuring your code so that the recursive import is not necessary in the first place. These solutions are not mutually exclusive. __import__('x.y.z') returns ; how do I get z? ----------------------------------------------------------------------- Try:: __import__('x.y.z').y.z For more realistic situations, you may have to do something like :: m = __import__(s) for i in s.split(".")[1:]: m = getattr(m, i) When I edit an imported module and reimport it, the changes don't show up. Why does this happen? -------------------------------------------------------------------------------------------------------------------------------------------- For reasons of efficiency as well as consistency, Python only reads the module file on the first time a module is imported. If it didn't, in a program consisting of many modules where each one imports the same basic module, the basic module would be parsed and re-parsed many times. To force rereading of a changed module, do this:: import modname reload(modname) Warning: this technique is not 100% fool-proof. In particular, modules containing statements like :: from modname import some_objects will continue to work with the old version of the imported objects. If the module contains class definitions, existing class instances will *not* be updated to use the new class definition. This can result in the following paradoxical behaviour:: >>> import cls >>> c = cls.C() # Create an instance of C >>> reload(cls) >>> isinstance(c, cls.C) # isinstance is false?!? False The nature of the problem is made clear if you print out the class objects: >>> c.__class__ >>> cls.C python-defaults-debian/faq/programming.html0000664000000000000000000031000212632016514016267 0ustar Programming FAQ

    Programming FAQ

    Date: 2005-12-21
    Version: 8721
    Web site:http://www.python.org/

    Contents

    1   General Questions

    1.1   Is there a source code level debugger with breakpoints, single-stepping, etc.?

    Yes.

    The pdb module is a simple but adequate console-mode debugger for Python. It is part of the standard Python library, and is documented in the Library Reference Manual. You can also write your own debugger by using the code for pdb as an example.

    The IDLE interactive development environment, which is part of the standard Python distribution (normally available as Tools/scripts/idle), includes a graphical debugger. There is documentation for the IDLE debugger at http://www.python.org/idle/doc/idle2.html#Debugger

    PythonWin is a Python IDE that includes a GUI debugger based on pdb. The Pythonwin debugger colors breakpoints and has quite a few cool features such as debugging non-Pythonwin programs. A reference can be found at http://www.python.org/windows/pythonwin/. Recent versions of PythonWin are available as a part of the ActivePython distribution (see http://www.activestate.com/Products/ActivePython/index.html).

    Boa Constructor is an IDE and GUI builder that uses wxPython. It offers visual frame creation and manipulation, an object inspector, many views on the source like object browsers, inheritance hierarchies, doc string generated html documentation, an advanced debugger, integrated help, and Zope support.

    Eric3 is an IDE built on PyQt and the Scintilla editing component.

    Pydb is a version of the standard Python debugger pdb, modified for use with DDD (Data Display Debugger), a popular graphical debugger front end. Pydb can be found at http://packages.debian.org/unstable/devel/pydb.html> and DDD can be found at http://www.gnu.org/software/ddd.

    There are a number of commmercial Python IDEs that include graphical debuggers. They include:

    1.2   Is there a tool to help find bugs or perform static analysis?

    Yes.

    PyChecker is a static analysis tool that finds bugs in Python source code and warns about code complexity and style. You can get PyChecker from http://pychecker.sf.net.

    Pylint is another tool that checks if a module satisfies a coding standard, and also makes it possible to write plug-ins to add a custom feature. In addition to the bug checking that PyChecker performs, Pylint offers some additional features such as checking line length, whether variable names are well-formed according to your coding standard, whether declared interfaces are fully implemented, and more. http://www.logilab.org/projects/pylint/documentation provides a full list of Pylint's features.

    1.3   How can I create a stand-alone binary from a Python script?

    You don't need the ability to compile Python to C code if all you want is a stand-alone program that users can download and run without having to install the Python distribution first. There are a number of tools that determine the set of modules required by a program and bind these modules together with a Python binary to produce a single executable.

    One is to use the freeze tool, which is included in the Python source tree as Tools/freeze. It converts Python byte code to C arrays; a C compiler you can embed all your modules into a new program, which is then linked with the standard Python modules.

    It works by scanning your source recursively for import statements (in both forms) and looking for the modules in the standard Python path as well as in the source directory (for built-in modules). It then turns the bytecode for modules written in Python into C code (array initializers that can be turned into code objects using the marshal module) and creates a custom-made config file that only contains those built-in modules which are actually used in the program. It then compiles the generated C code and links it with the rest of the Python interpreter to form a self-contained binary which acts exactly like your script.

    Obviously, freeze requires a C compiler. There are several other utilities which don't. The first is Gordon McMillan's installer at

    http://www.mcmillan-inc.com/install1.html

    which works on Windows, Linux and at least some forms of Unix.

    Another is Thomas Heller's py2exe (Windows only) at

    http://starship.python.net/crew/theller/py2exe

    A third is Christian Tismer's SQFREEZE which appends the byte code to a specially-prepared Python interpreter that can find the byte code in the executable. It's possible that a similar approach will be added to Python 2.4, due out some time in 2004.

    Other tools include Fredrik Lundh's Squeeze and Anthony Tuininga's cx_Freeze.

    1.4   Are there coding standards or a style guide for Python programs?

    Yes. The coding style required for standard library modules is documented as PEP 8.

    1.5   My program is too slow. How do I speed it up?

    That's a tough one, in general. There are many tricks to speed up Python code; consider rewriting parts in C as a last resort.

    In some cases it's possible to automatically translate Python to C or x86 assembly language, meaning that you don't have to modify your code to gain increased speed.

    Pyrex can compile a slightly modified version of Python code into a C extension, and can be used on many different platforms.

    Psyco is a just-in-time compiler that translates Python code into x86 assembly language. If you can use it, Psyco can provide dramatic speedups for critical functions.

    The rest of this answer will discuss various tricks for squeezing a bit more speed out of Python code. Never apply any optimization tricks unless you know you need them, after profiling has indicated that a particular function is the heavily executed hot spot in the code. Optimizations almost always make the code less clear, and you shouldn't pay the costs of reduced clarity (increased development time, greater likelihood of bugs) unless the resulting performance benefit is worth it.

    There is a page on the wiki devoted to performance tips.

    Guido van Rossum has written up an anecdote related to optimization at http://www.python.org/doc/essays/list2str.html.

    One thing to notice is that function and (especially) method calls are rather expensive; if you have designed a purely OO interface with lots of tiny functions that don't do much more than get or set an instance variable or call another method, you might consider using a more direct way such as directly accessing instance variables. Also see the standard module "profile" (described in the Library Reference manual) which makes it possible to find out where your program is spending most of its time (if you have some patience -- the profiling itself can slow your program down by an order of magnitude).

    Remember that many standard optimization heuristics you may know from other programming experience may well apply to Python. For example it may be faster to send output to output devices using larger writes rather than smaller ones in order to reduce the overhead of kernel system calls. Thus CGI scripts that write all output in "one shot" may be faster than those that write lots of small pieces of output.

    Also, be sure to use Python's core features where appropriate. For example, slicing allows programs to chop up lists and other sequence objects in a single tick of the interpreter's mainloop using highly optimized C implementations. Thus to get the same effect as:

    L2 = []
    for i in range[3]:
         L2.append(L1[i])
    

    it is much shorter and far faster to use

    L2 = list(L1[:3]) # "list" is redundant if L1 is a list.
    

    Note that the functionally-oriented builtins such as map(), zip(), and friends can be a convenient accelerator for loops that perform a single task. For example to pair the elements of two lists together:

    >>> zip([1,2,3], [4,5,6])
    [(1, 4), (2, 5), (3, 6)]
    

    or to compute a number of sines:

    >>> map( math.sin, (1,2,3,4))
    [0.841470984808, 0.909297426826, 0.14112000806,   -0.756802495308]
    

    The operation completes very quickly in such cases.

    Other examples include the join() and split() methods of string objects. For example if s1..s7 are large (10K+) strings then "".join([s1,s2,s3,s4,s5,s6,s7])` may be far faster than the more obvious ``s1+s2+s3+s4+s5+s6+s7, since the "summation" will compute many subexpressions, whereas join() does all the copying in one pass. For manipulating strings, use the replace() method on string objects. Use regular expressions only when you're not dealing with constant string patterns. Consider using the string formatting operations string % tuple and string % dictionary.

    Be sure to use the list.sort() builtin method to do sorting, and see the sorting mini-HOWTO for examples of moderately advanced usage. list.sort() beats other techniques for sorting in all but the most extreme circumstances.

    Another common trick is to "push loops into functions or methods." For example suppose you have a program that runs slowly and you use the profiler to determine that a Python function ff() is being called lots of times. If you notice that ff ():

    def ff(x):
        ...do something with x computing result...
        return result
    

    tends to be called in loops like:

    list = map(ff, oldlist)
    

    or:

    for x in sequence:
        value = ff(x)
        ...do something with value...
    

    then you can often eliminate function call overhead by rewriting ff() to:

    def ffseq(seq):
        resultseq = []
        for x in seq:
            ...do something with x computing result...
            resultseq.append(result)
        return resultseq
    

    and rewrite the two examples to list = ffseq(oldlist) and to:

    for value in ffseq(sequence):
        ...do something with value...
    

    Single calls to ff(x) translate to ffseq([x])[0] with little penalty. Of course this technique is not always appropriate and there are other variants which you can figure out.

    You can gain some performance by explicitly storing the results of a function or method lookup into a local variable. A loop like:

    for key in token:
        dict[key] = dict.get(key, 0) + 1
    

    resolves dict.get every iteration. If the method isn't going to change, a slightly faster implementation is:

    dict_get = dict.get  # look up the method once
    for key in token:
        dict[key] = dict_get(key, 0) + 1
    

    Default arguments can be used to determine values once, at compile time instead of at run time. This can only be done for functions or objects which will not be changed during program execution, such as replacing

    def degree_sin(deg):
        return math.sin(deg * math.pi / 180.0)
    

    with

    def degree_sin(deg, factor = math.pi/180.0, sin = math.sin):
        return sin(deg * factor)
    

    Because this trick uses default arguments for terms which should not be changed, it should only be used when you are not concerned with presenting a possibly confusing API to your users.

    2   Core Language

    2.1   How do you set a global variable in a function?

    Did you do something like this?

    x = 1 # make a global
    
    def f():
          print x # try to print the global
          ...
          for j in range(100):
               if q>3:
                  x=4
    

    Any variable assigned in a function is local to that function. unless it is specifically declared global. Since a value is bound to x as the last statement of the function body, the compiler assumes that x is local. Consequently the print x attempts to print an uninitialized local variable and will trigger a NameError.

    The solution is to insert an explicit global declaration at the start of the function:

    def f():
          global x
          print x # try to print the global
          ...
          for j in range(100):
               if q>3:
                  x=4
    

    In this case, all references to x are interpreted as references to the x from the module namespace.

    2.2   What are the rules for local and global variables in Python?

    In Python, variables that are only referenced inside a function are implicitly global. If a variable is assigned a new value anywhere within the function's body, it's assumed to be a local. If a variable is ever assigned a new value inside the function, the variable is implicitly local, and you need to explicitly declare it as 'global'.

    Though a bit surprising at first, a moment's consideration explains this. On one hand, requiring global for assigned variables provides a bar against unintended side-effects. On the other hand, if global was required for all global references, you'd be using global all the time. You'd have to declare as global every reference to a builtin function or to a component of an imported module. This clutter would defeat the usefulness of the global declaration for identifying side-effects.

    2.3   How do I share global variables across modules?

    The canonical way to share information across modules within a single program is to create a special module (often called config or cfg). Just import the config module in all modules of your application; the module then becomes available as a global name. Because there is only one instance of each module, any changes made to the module object get reflected everywhere. For example:

    config.py:

    x = 0   # Default value of the 'x' configuration setting
    

    mod.py:

    import config
    config.x = 1
    

    main.py:

    import config
    import mod
    print config.x
    

    Note that using a module is also the basis for implementing the Singleton design pattern, for the same reason.

    2.4   What are the "best practices" for using import in a module?

    In general, don't use from modulename import *. Doing so clutters the importer's namespace. Some people avoid this idiom even with the few modules that were designed to be imported in this manner. Modules designed in this manner include Tkinter, and threading.

    Import modules at the top of a file. Doing so makes it clear what other modules your code requires and avoids questions of whether the module name is in scope. Using one import per line makes it easy to add and delete module imports, but using multiple imports per line uses less screen space.

    It's good practice if you import modules in the following order:

    1. standard libary modules -- e.g. sys, os, getopt, re)
    2. third-party library modules (anything installed in Python's site-packages directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc.
    3. locally-developed modules

    Never use relative package imports. If you're writing code that's in the package.sub.m1 module and want to import package.sub.m2, do not just write import m2, even though it's legal. Write from package.sub import m2 instead. Relative imports can lead to a module being initialized twice, leading to confusing bugs.

    It is sometimes necessary to move imports to a function or class to avoid problems with circular imports. Gordon McMillan says:

    Circular imports are fine where both modules use the "import <module>" form of import. They fail when the 2nd module wants to grab a name out of the first ("from module import name") and the import is at the top level. That's because names in the 1st are not yet available, because the first module is busy importing the 2nd.

    In this case, if the second module is only used in one function, then the import can easily be moved into that function. By the time the import is called, the first module will have finished initializing, and the second module can do its import.

    It may also be necessary to move imports out of the top level of code if some of the modules are platform-specific. In that case, it may not even be possible to import all of the modules at the top of the file. In this case, importing the correct modules in the corresponding platform-specific code is a good option.

    Only move imports into a local scope, such as inside a function definition, if it's necessary to solve a problem such as avoiding a circular import or are trying to reduce the initialization time of a module. This technique is especially helpful if many of the imports are unnecessary depending on how the program executes. You may also want to move imports into a function if the modules are only ever used in that function. Note that loading a module the first time may be expensive because of the one time initialization of the module, but loading a module multiple times is virtually free, costing only a couple of dictionary lookups. Even if the module name has gone out of scope, the module is probably available in sys.modules.

    If only instances of a specific class use a module, then it is reasonable to import the module in the class's __init__ method and then assign the module to an instance variable so that the module is always available (via that instance variable) during the life of the object. Note that to delay an import until the class is instantiated, the import must be inside a method. Putting the import inside the class but outside of any method still causes the import to occur when the module is initialized.

    2.5   How can I pass optional or keyword parameters from one function to another?

    Collect the arguments using the * and ** specifiers in the function's parameter list; this gives you the positional arguments as a tuple and the keyword arguments as a dictionary. You can then pass these arguments when calling another function by using * and **:

    def f(x, *tup, **kwargs):
            ...
            kwargs['width']='14.3c'
            ...
            g(x, *tup, **kwargs)
    

    In the unlikely case that you care about Python versions older than 2.0, use 'apply':

    def f(x, *tup, **kwargs):
            ...
            kwargs['width']='14.3c'
            ...
            apply(g, (x,)+tup, kwargs)
    

    2.6   How do I write a function with output parameters (call by reference)?

    Remember that arguments are passed by assignment in Python. Since assignment just creates references to objects, there's no alias between an argument name in the caller and callee, and so no call-by-reference per se. You can achieve the desired effect in a number of ways.

    1. By returning a tuple of the results:

      def func2(a, b):
          a = 'new-value'        # a and b are local names
          b = b + 1              # assigned to new objects
          return a, b            # return new values
      
      x, y = 'old-value', 99
      x, y = func2(x, y)
      print x, y                 # output: new-value 100
      

      This is almost always the clearest solution.

    2. By using global variables. This isn't thread-safe, and is not recommended.

    3. By passing a mutable (changeable in-place) object:

      def func1(a):
          a[0] = 'new-value'     # 'a' references a mutable list
          a[1] = a[1] + 1        # changes a shared object
      
      args = ['old-value', 99]
      func1(args)
      print args[0], args[1]     # output: new-value 100
      
    4. By passing in a dictionary that gets mutated:

      def func3(args):
          args['a'] = 'new-value'     # args is a mutable dictionary
          args['b'] = args['b'] + 1   # change it in-place
      
      args = {'a':' old-value', 'b': 99}
      func3(args)
      print args['a'], args['b']
      
    5. Or bundle up values in a class instance:

      class callByRef:
          def __init__(self, **args):
              for (key, value) in args.items():
                  setattr(self, key, value)
      
      def func4(args):
          args.a = 'new-value'        # args is a mutable callByRef
          args.b = args.b + 1         # change object in-place
      
      args = callByRef(a='old-value', b=99)
      func4(args)
      print args.a, args.b
      

      There's almost never a good reason to get this complicated.

    Your best choice is to return a tuple containing the multiple results.

    2.7   How do you make a higher order function in Python?

    You have two choices: you can use nested scopes or you can use callable objects. For example, suppose you wanted to define linear(a,b) which returns a function f(x) that computes the value a*x+b. Using nested scopes:

    def linear(a,b):
        def result(x):
            return a*x + b
        return result
    

    Or using a callable object:

    class linear:
       def __init__(self, a, b):
           self.a, self.b = a,b
       def __call__(self, x):
           return self.a * x + self.b
    

    In both cases:

    taxes = linear(0.3,2)
    

    gives a callable object where taxes(10e6) == 0.3 * 10e6 + 2.

    The callable object approach has the disadvantage that it is a bit slower and results in slightly longer code. However, note that a collection of callables can share their signature via inheritance:

    class exponential(linear):
       # __init__ inherited
       def __call__(self, x):
           return self.a * (x ** self.b)
    

    Object can encapsulate state for several methods:

    class counter:
        value = 0
        def set(self, x): self.value = x
        def up(self): self.value=self.value+1
        def down(self): self.value=self.value-1
    
    count = counter()
    inc, dec, reset = count.up, count.down, count.set
    

    Here inc(), dec() and reset() act like functions which share the same counting variable.

    2.8   How do I copy an object in Python?

    In general, try copy.copy() or copy.deepcopy() for the general case. Not all objects can be copied, but most can.

    Some objects can be copied more easily. Dictionaries have a copy() method:

    newdict = olddict.copy()
    

    Sequences can be copied by slicing:

    new_l = l[:]
    

    2.9   How can I find the methods or attributes of an object?

    For an instance x of a user-defined class, dir(x) returns an alphabetized list of the names containing the instance attributes and methods and attributes defined by its class.

    2.10   How can my code discover the name of an object?

    Generally speaking, it can't, because objects don't really have names. Essentially, assignment always binds a name to a value; The same is true of def and class statements, but in that case the value is a callable. Consider the following code:

    class A:
        pass
    
    B = A
    
    a = B()
    b = a
    print b
    <__main__.A instance at 016D07CC>
    print a
    <__main__.A instance at 016D07CC>
    

    Arguably the class has a name: even though it is bound to two names and invoked through the name B the created instance is still reported as an instance of class A. However, it is impossible to say whether the instance's name is a or b, since both names are bound to the same value.

    Generally speaking it should not be necessary for your code to "know the names" of particular values. Unless you are deliberately writing introspective programs, this is usually an indication that a change of approach might be beneficial.

    In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer to this question:

    The same way as you get the name of that cat you found on your porch: the cat (object) itself cannot tell you its name, and it doesn't really care -- so the only way to find out what it's called is to ask all your neighbours (namespaces) if it's their cat (object)...

    ....and don't be surprised if you'll find that it's known by many names, or no name at all!

    2.11   Is there an equivalent of C's "?:" ternary operator?

    No. In many cases you can mimic a?b:c with "a and b or c", but there's a flaw: if b is zero (or empty, or None -- anything that tests false) then c will be selected instead. In many cases you can prove by looking at the code that this can't happen (e.g. because b is a constant or has a type that can never be false), but in general this can be a problem.

    Tim Peters (who wishes it was Steve Majewski) suggested the following solution: (a and [b] or [c])[0]. Because [b] is a singleton list it is never false, so the wrong path is never taken; then applying [0] to the whole thing gets the b or c that you really wanted. Ugly, but it gets you there in the rare cases where it is really inconvenient to rewrite your code using 'if'.

    The best course is usually to write a simple if...else statement. Another solution is to implement the "?:" operator as a function:

    def q(cond,on_true,on_false):
        if cond:
            if not isfunction(on_true): return on_true
            else: return apply(on_true)
        else:
            if not isfunction(on_false): return on_false
            else: return apply(on_false)
    

    In most cases you'll pass b and c directly: q(a,b,c). To avoid evaluating b or c when they shouldn't be, encapsulate them within a lambda function, e.g.: q(a,lambda: b, lambda: c).

    It has been asked why Python has no if-then-else expression. There are several answers: many languages do just fine without one; it can easily lead to less readable code; no sufficiently "Pythonic" syntax has been discovered; a search of the standard library found remarkably few places where using an if-then-else expression would make the code more understandable.

    In 2002, PEP 308 was written proposing several possible syntaxes and the community was asked to vote on the issue. The vote was inconclusive. Most people liked one of the syntaxes, but also hated other syntaxes; many votes implied that people preferred no ternary operator rather than having a syntax they hated.

    2.12   Is it possible to write obfuscated one-liners in Python?

    Yes. Usually this is done by nesting lambda within lambda. See the following three examples, due to Ulf Bartelt:

    # Primes < 1000
    print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
    map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))
    
    # First 10 Fibonacci numbers
    print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
    range(10))
    
    # Mandelbrot set
    print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
    Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
    Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
    i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y
    >=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr(
    64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
    ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
    #    \___ ___  \___ ___  |   |   |__ lines on screen
    #        V          V      |   |______ columns on screen
    #        |          |      |__________ maximum of "iterations"
    #        |          |_________________ range on y axis
    #        |____________________________ range on x axis
    

    Don't try this at home, kids!

    3   Numbers and strings

    3.1   How do I specify hexadecimal and octal integers?

    To specify an octal digit, precede the octal value with a zero. For example, to set the variable "a" to the octal value "10" (8 in decimal), type:

    >>> a = 010
    >>> a
    8
    

    Hexadecimal is just as easy. Simply precede the hexadecimal number with a zero, and then a lower or uppercase "x". Hexadecimal digits can be specified in lower or uppercase. For example, in the Python interpreter:

    >>> a = 0xa5
    >>> a
    165
    >>> b = 0XB2
    >>> b
    178
    

    3.2   Why does -22 / 10 return -3?

    It's primarily driven by the desire that i%j have the same sign as j. If you want that, and also want:

    i == (i/j)*j + (i%j)
    

    then integer division has to return the floor. C also requres that identity to hold, and then compilers that truncate i/j need to make i%j have the same sign as i.

    There are few real use cases for i%j when j is negative. When j is positive, there are many, and in virtually all of them it's more useful for i%j to be >= 0. If the clock says 10 now, what did it say 200 hours ago? -190 % 12 == 2 is useful; -190 % 12 == -10 is a bug waiting to bite.

    3.3   How do I convert a string to a number?

    For integers, use the built-in int() type constructor, e.g. int('144') == 144. Similarly, float() converts to floating-point, e.g. float('144') == 144.0.

    By default, these interpret the number as decimal, so that int('0144') == 144 and int('0x144') raises ValueError. int(string, base) takes the base to convert from as a second optional argument, so int('0x144', 16) == 324. If the base is specified as 0, the number is interpreted using Python's rules: a leading '0' indicates octal, and '0x' indicates a hex number.

    Do not use the built-in function eval() if all you need is to convert strings to numbers. eval() will be significantly slower and it presents a security risk: someone could pass you a Python expression that might have unwanted side effects. For example, someone could pass __import__('os').system("rm -rf $HOME") which would erase your home directory.

    eval() also has the effect of interpreting numbers as Python expressions, so that e.g. eval('09') gives a syntax error because Python regards numbers starting with '0' as octal (base 8).

    3.4   How do I convert a number to a string?

    To convert, e.g., the number 144 to the string '144', use the built-in function str(). If you want a hexadecimal or octal representation, use the built-in functions hex() or oct(). For fancy formatting, use the % operator on strings, e.g. "%04d" % 144 yields '0144' and "%.3f" % (1/3.0) yields '0.333'. See the library reference manual for details.

    3.5   How do I modify a string in place?

    You can't, because strings are immutable. If you need an object with this ability, try converting the string to a list or use the array module:

    >>> s = "Hello, world"
    >>> a = list(s)
    >>> print a
    ['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
    >>> a[7:] = list("there!")
    >>> ''.join(a)
    'Hello, there!'
    
    >>> import array
    >>> a = array.array('c', s)
    >>> print a
    array('c', 'Hello, world')
    >>> a[0] = 'y' ; print a
    array('c', 'yello world')
    >>> a.tostring()
    'yello, world'
    

    3.6   How do I use strings to call functions/methods?

    There are various techniques.

    • The best is to use a dictionary that maps strings to functions. The primary advantage of this technique is that the strings do not need to match the names of the functions. This is also the primary technique used to emulate a case construct:

      def a():
          pass
      
      def b():
          pass
      
      dispatch = {'go': a, 'stop': b}  # Note lack of parens for funcs
      
      dispatch[get_input()]()  # Note trailing parens to call function
      
    • Use the built-in function getattr():

      import foo
      getattr(foo, 'bar')()
      

      Note that getattr() works on any object, including classes, class instances, modules, and so on.

      This is used in several places in the standard library, like this:

      class Foo:
          def do_foo(self):
              ...
      
          def do_bar(self):
              ...
      
       f = getattr(foo_instance, 'do_' + opname)
       f()
      
    • Use locals() or eval() to resolve the function name:

      def myFunc():
          print "hello"
      
      fname = "myFunc"
      
      f = locals()[fname]
      f()
      
      f = eval(fname)
      f()
      

      Note: Using eval() is slow and dangerous. If you don't have absolute control over the contents of the string, someone could pass a string that resulted in an arbitrary function being executed.

    3.7   Is there an equivalent to Perl's chomp() for removing trailing newlines from strings?

    Starting with Python 2.2, you can use S.rstrip("\r\n") to remove all occurances of any line terminator from the end of the string S without removing other trailing whitespace. If the string S represents more than one line, with several empty lines at the end, the line terminators for all the blank lines will be removed:

    >>> lines = ("line 1 \r\n"
    ...          "\r\n"
    ...          "\r\n")
    >>> lines.rstrip("\n\r")
    "line 1 "
    

    Since this is typically only desired when reading text one line at a time, using S.rstrip() this way works well.

    For older versions of Python, There are two partial substitutes:

    • If you want to remove all trailing whitespace, use the rstrip() method of string objects. This removes all trailing whitespace, not just a single newline.
    • Otherwise, if there is only one line in the string S, use S.splitlines()[0].

    3.8   Is there a scanf() or sscanf() equivalent?

    Not as such.

    For simple input parsing, the easiest approach is usually to split the line into whitespace-delimited words using the split() method of string objects and then convert decimal strings to numeric values using int() or float(). split() supports an optional "sep" parameter which is useful if the line uses something other than whitespace as a separator.

    For more complicated input parsing, regular expressions more powerful than C's sscanf() and better suited for the task.

    3.9   What does 'UnicodeError: ASCII [decoding,encoding] error: ordinal not in range(128)' mean?

    This error indicates that your Python installation can handle only 7-bit ASCII strings. There are a couple ways to fix or work around the problem.

    If your programs must handle data in arbitary character set encodings, the environment the application runs in will generally identify the encoding of the data it is handing you. You need to convert the input to Unicode data using that encoding. For example, a program that handles email or web input will typically find character set encoding information in Content-Type headers. This can then be used to properly convert input data to Unicode. Assuming the string referred to by value is encoded as UTF-8:

    value = unicode(value, "utf-8")
    

    will return a Unicode object. If the data is not correctly encoded as UTF-8, the above call will raise a UnicodeError exception.

    If you only want strings coverted to Unicode which have non-ASCII data, you can try converting them first assuming an ASCII encoding, and then generate Unicode objects if that fails:

    try:
        x = unicode(value, "ascii")
    except UnicodeError:
        value = unicode(value, "utf-8")
    else:
        # value was valid ASCII data
        pass
    

    It's possible to set a default encoding in a file called sitecustomize.py that's part of the Python library. However, this isn't recommended because changing the Python-wide default encoding may cause third-party extension modules to fail.

    Note that on Windows, there is an encoding known as "mbcs", which uses an encoding specific to your current locale. In many cases, and particularly when working with COM, this may be an appropriate default encoding to use.

    4   Sequences (Tuples/Lists)

    4.1   How do I convert between tuples and lists?

    The function tuple(seq) converts any sequence (actually, any iterable) into a tuple with the same items in the same order.

    For example, tuple([1, 2, 3]) yields (1, 2, 3) and tuple('abc') yields ('a', 'b', 'c'). If the argument is a tuple, it does not make a copy but returns the same object, so it is cheap to call tuple() when you aren't sure that an object is already a tuple.

    The function list(seq) converts any sequence or iterable into a list with the same items in the same order. For example, list((1, 2, 3)) yields [1, 2, 3] and list('abc') yields ['a', 'b', 'c']. If the argument is a list, it makes a copy just like seq[:] would.

    4.2   What's a negative index?

    Python sequences are indexed with positive numbers and negative numbers. For positive numbers 0 is the first index 1 is the second index and so forth. For negative indices -1 is the last index and -2 is the pentultimate (next to last) index and so forth. Think of seq[-n] as the same as seq[len(seq)-n].

    Using negative indices can be very convenient. For example S[:-1] is all of the string except for its last character, which is useful for removing the trailing newline from a string.

    4.3   How do I iterate over a sequence in reverse order?

    If it is a list, the fastest solution is

    list.reverse()
    try:
        for x in list:
            "do something with x"
    finally:
        list.reverse()
    

    This has the disadvantage that while you are in the loop, the list is temporarily reversed. If you don't like this, you can make a copy. This appears expensive but is actually faster than other solutions:

    rev = list[:]
    rev.reverse()
    for x in rev:
            <do something with x>
    

    If it's not a list, a more general but slower solution is:

    for i in range(len(sequence)-1, -1, -1):
            x = sequence[i]
            <do something with x>
    

    A more elegant solution, is to define a class which acts as a sequence and yields the elements in reverse order (solution due to Steve Majewski):

    class Rev:
            def __init__(self, seq):
                    self.forw = seq
            def __len__(self):
                    return len(self.forw)
            def __getitem__(self, i):
                    return self.forw[-(i + 1)]
    

    You can now simply write:

    for x in Rev(list):
            <do something with x>
    

    Unfortunately, this solution is slowest of all, due to the method call overhead.

    With Python 2.3, you can use an extended slice syntax:

    for x in sequence[::-1]:
           <do something with x>
    

    4.4   How do you remove duplicates from a list?

    See the Python Cookbook for a long discussion of many ways to do this:

    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560

    If you don't mind reordering the list, sort it and then scan from the end of the list, deleting duplicates as you go:

    if List:
       List.sort()
       last = List[-1]
       for i in range(len(List)-2, -1, -1):
           if last==List[i]: del List[i]
           else: last=List[i]
    

    If all elements of the list may be used as dictionary keys (i.e. they are all hashable) this is often faster

    d = {}
    for x in List: d[x]=x
    List = d.values()
    

    4.5   How do you make an array in Python?

    Use a list:

    ["this", 1, "is", "an", "array"]
    

    Lists are equivalent to C or Pascal arrays in their time complexity; the primary difference is that a Python list can contain objects of many different types.

    The array module also provides methods for creating arrays of fixed types with compact representations, but they are slower to index than lists. Also note that the Numeric extensions and others define array-like structures with various characteristics as well.

    To get Lisp-style linked lists, you can emulate cons cells using tuples:

    lisp_list = ("like",  ("this",  ("example", None) ) )
    

    If mutability is desired, you could use lists instead of tuples. Here the analogue of lisp car is lisp_list[0] and the analogue of cdr is lisp_list[1]. Only do this if you're sure you really need to, because it's usually a lot slower than using Python lists.

    4.6   How do I create a multidimensional list?

    You probably tried to make a multidimensional array like this:

    A = [[None] * 2] * 3
    

    This looks correct if you print it:

    >>> A
    [[None, None], [None, None], [None, None]]
    

    But when you assign a value, it shows up in multiple places:

    >>> A[0][0] = 5
    >>> A
    [[5, None], [5, None], [5, None]]
    

    The reason is that replicating a list with * doesn't create copies, it only creates references to the existing objects. The *3 creates a list containing 3 references to the same list of length two. Changes to one row will show in all rows, which is almost certainly not what you want.

    The suggested approach is to create a list of the desired length first and then fill in each element with a newly created list:

    A = [None]*3
    for i in range(3):
         A[i] = [None] * 2
    

    This generates a list containing 3 different lists of length two. You can also use a list comprehension:

    w,h = 2,3
    A = [ [None]*w for i in range(h) ]
    

    Or, you can use an extension that provides a matrix datatype; Numeric Python is the best known.

    4.7   How do I apply a method to a sequence of objects?

    Use a list comprehension:

    result = [obj.method() for obj in List]
    

    More generically, you can try the following function:

    def method_map(objects, method, arguments):
         """method_map([a,b], "meth", (1,2)) gives [a.meth(1,2), b.meth(1,2)]"""
         nobjects = len(objects)
         methods = map(getattr, objects, [method]*nobjects)
         return map(apply, methods, [arguments]*nobjects)
    

    5   Dictionaries

    5.1   How can I get a dictionary to display its keys in a consistent order?

    You can't. Dictionaries store their keys in an unpredictable order, so the display order of a dictionary's elements will be similarly unpredictable.

    This can be frustrating if you want to save a printable version to a file, make some changes and then compare it with some other printed dictionary. In this case, use the pprint module to pretty-print the dictionary; the items will be presented in order sorted by the key.

    A more complicated solution is to subclass UserDict.UserDict to create a SortedDict class that prints itself in a predictable order. Here's one simpleminded implementation of such a class:

    import UserDict, string
    
    class SortedDict(UserDict.UserDict):
      def __repr__(self):
        result = []
        append = result.append
        keys = self.data.keys()
        keys.sort()
        for k in keys:
          append("%s: %s" % (`k`, `self.data[k]`))
        return "{%s}" % string.join(result, ", ")
    
      ___str__ = __repr__
    

    This will work for many common situations you might encounter, though it's far from a perfect solution. The largest flaw is that if some values in the dictionary are also dictionaries, their values won't be presented in any particular order.

    5.2   I want to do a complicated sort: can you do a Schwartzian Transform in Python?

    Yes, it's quite simple with list comprehensions.

    The technique, attributed to Randal Schwartz of the Perl community, sorts the elements of a list by a metric which maps each element to its "sort value". To sort a list of strings by their uppercase values:

    tmp1 = [ (x.upper(), x) for x in L ] # Schwartzian transform
    tmp1.sort()
    Usorted = [ x[1] for x in tmp1 ]
    

    To sort by the integer value of a subfield extending from positions 10-15 in each string:

    tmp2 = [ (int(s[10:15]), s) for s in L ] # Schwartzian transform
    tmp2.sort()
    Isorted = [ x[1] for x in tmp2 ]
    

    Note that Isorted may also be computed by

    def intfield(s):
        return int(s[10:15])
    
    def Icmp(s1, s2):
        return cmp(intfield(s1), intfield(s2))
    
    Isorted = L[:]
    Isorted.sort(Icmp)
    

    but since this method calls intfield() many times for each element of L, it is slower than the Schwartzian Transform.

    5.3   How can I sort one list by values from another list?

    Merge them into a single list of tuples, sort the resulting list, and then pick out the element you want.

    >>> list1 = ["what", "I'm", "sorting", "by"]
    >>> list2 = ["something", "else", "to", "sort"]
    >>> pairs = zip(list1, list2)
    >>> pairs
    [('what', 'something'), ("I'm", 'else'), ('sorting', 'to'), ('by', 'sort')]
    >>> pairs.sort()
    >>> result = [ x[1] for x in pairs ]
    >>> result
    ['else', 'sort', 'to', 'something']
    

    An alternative for the last step is:

    result = []
    for p in pairs: result.append(p[1])
    

    If you find this more legible, you might prefer to use this instead of the final list comprehension. However, it is almost twice as slow for long lists. Why? First, the append() operation has to reallocate memory, and while it uses some tricks to avoid doing that each time, it still has to do it occasionally, and that costs quite a bit. Second, the expression "result.append" requires an extra attribute lookup, and third, there's a speed reduction from having to make all those function calls.

    6   Objects

    6.1   What is a class?

    A class is the particular object type created by executing a class statement. Class objects are used as templates to create instance objects, which embody both the data (attributes) and code (methods) specific to a datatype.

    A class can be based on one or more other classes, called its base class(es). It then inherits the attributes and methods of its base classes. This allows an object model to be successively refined by inheritance. You might have a generic Mailbox class that provides basic accessor methods for a mailbox, and subclasses such as MboxMailbox, MaildirMailbox, OutlookMailbox that handle various specific mailbox formats.

    6.2   What is a method?

    A method is a function on some object x that you normally call as x.name(arguments...). Methods are defined as functions inside the class definition:

    class C:
        def meth (self, arg):
            return arg*2 + self.attribute
    

    6.3   What is self?

    Self is merely a conventional name for the first argument of a method. A method defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for some instance x of the class in which the definition occurs; the called method will think it is called as meth(x, a, b, c).

    See also Why must 'self' be used explicitly in method definitions and calls?

    6.4   How do I check if an object is an instance of a given class or of a subclass of it?

    Use the built-in function isinstance(obj, cls). You can check if an object is an instance of any of a number of classes by providing a tuple instead of a single class, e.g. isinstance(obj, (class1, class2, ...)), and can also check whether an object is one of Python's built-in types, e.g. isinstance(obj, str) or isinstance(obj, (int, long, float, complex)).

    Note that most programs do not use isinstance() on user-defined classes very often. If you are developing the classes yourself, a more proper object-oriented style is to define methods on the classes that encapsulate a particular behaviour, instead of checking the object's class and doing a different thing based on what class it is. For example, if you have a function that does something:

    def search (obj):
        if isinstance(obj, Mailbox):
            # ... code to search a mailbox
        elif isinstance(obj, Document):
            # ... code to search a document
        elif ...
    

    A better approach is to define a search() method on all the classes and just call it:

    class Mailbox:
        def search(self):
            # ... code to search a mailbox
    
    class Document:
        def search(self):
            # ... code to search a document
    
    obj.search()
    

    6.5   What is delegation?

    Delegation is an object oriented technique (also called a design pattern). Let's say you have an object x and want to change the behaviour of just one of its methods. You can create a new class that provides a new implementation of the method you're interested in changing and delegates all other methods to the corresponding method of x.

    Python programmers can easily implement delegation. For example, the following class implements a class that behaves like a file but converts all written data to uppercase:

    class UpperOut:
          def __init__(self, outfile):
                self.__outfile = outfile
          def write(self, s):
                self.__outfile.write(s.upper())
          def __getattr__(self, name):
                return getattr(self.__outfile, name)
    

    Here the UpperOut class redefines the write() method to convert the argument string to uppercase before calling the underlying self.__outfile.write() method. All other methods are delegated to the underlying self.__outfile object. The delegation is accomplished via the __getattr__ method; consult the language reference for more information about controlling attribute access.

    Note that for more general cases delegation can get trickier. When attributes must be set as well as retrieved, the class must define a __settattr__ method too, and it must do so carefully. The basic implementation of __setattr__ is roughly equivalent to the following:

    class X:
         ...
         def __setattr__(self, name, value):
              self.__dict__[name] = value
         ...
    

    Most __setattr__ implementations must modify self.__dict__ to store local state for self without causing an infinite recursion.

    6.6   How do I call a method defined in a base class from a derived class that overrides it?

    If you're using new-style classes, use the built-in super() function:

    class Derived(Base):
        def meth (self):
            super(Derived, self).meth()
    

    If you're using classic classes: For a class definition such as class Derived(Base): ... you can call method meth() defined in Base (or one of Base's base classes) as Base.meth(self, arguments...). Here, Base.meth is an unbound method, so you need to provide the self argument.

    6.7   How can I organize my code to make it easier to change the base class?

    You could define an alias for the base class, assign the real base class to it before your class definition, and use the alias throughout your class. Then all you have to change is the value assigned to the alias. Incidentally, this trick is also handy if you want to decide dynamically (e.g. depending on availability of resources) which base class to use. Example:

    BaseAlias = <real base class>
    class Derived(BaseAlias):
            def meth(self):
                    BaseAlias.meth(self)
                    ...
    

    6.8   How do I create static class data and static class methods?

    Static data (in the sense of C++ or Java) is easy; static methods (again in the sense of C++ or Java) are not supported directly.

    For static data, simply define a class attribute. To assign a new value to the attribute, you have to explicitly use the class name in the assignment:

    class C:
        count = 0   # number of times C.__init__ called
    
        def __init__(self):
            C.count = C.count + 1
    
        def getcount(self):
            return C.count  # or return self.count
    

    c.count also refers to C.count for any c such that isinstance(c, C) holds, unless overridden by c itself or by some class on the base-class search path from c.__class__ back to C.

    Caution: within a method of C, an assignment like self.count = 42 creates a new and unrelated instance vrbl named "count" in self's own dict. Rebinding of a class-static data name must always specify the class whether inside a method or not:

    C.count = 314
    

    Static methods are possible when you're using new-style classes:

    class C:
        def static(arg1, arg2, arg3):
            # No 'self' parameter!
            ...
        static = staticmethod(static)
    

    However, a far more straightforward way to get the effect of a static method is via a simple module-level function:

    def getcount():
        return C.count
    

    If your code is structured so as to define one class (or tightly related class hierarchy) per module, this supplies the desired encapsulation.

    6.9   How can I overload constructors (or methods) in Python?

    This answer actually applies to all methods, but the question usually comes up first in the context of constructors.

    In C++ you'd write

    class C {
        C() { cout << "No arguments\n"; }
        C(int i) { cout << "Argument is " << i << "\n"; }
    }
    

    in Python you have to write a single constructor that catches all cases using default arguments. For example:

    class C:
        def __init__(self, i=None):
            if i is None:
                print "No arguments"
            else:
                print "Argument is", i
    

    This is not entirely equivalent, but close enough in practice.

    You could also try a variable-length argument list, e.g.

    def __init__(self, *args):
        ....
    

    The same approach works for all method definitions.

    6.10   I try to use __spam and I get an error about _SomeClassName__spam.

    Variables with double leading underscore are "mangled" to provide a simple but effective way to define class private variables. Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with any leading underscores stripped.

    This doesn't guarantee privacy: an outside user can still deliberately access the "_classname__spam" attribute, and private values are visible in the object's __dict__. Many Python programmers never bother to use private variable names at all.

    6.11   My class defines __del__ but it is not called when I delete the object.

    There are several possible reasons for this.

    The del statement does not necessarily call __del__ -- it simply decrements the object's reference count, and if this reaches zero __del__ is called.

    If your data structures contain circular links (e.g. a tree where each child has a parent reference and each parent has a list of children) the reference counts will never go back to zero. Once in a while Python runs an algorithm to detect such cycles, but the garbage collector might run some time after the last reference to your data structure vanishes, so your __del__ method may be called at an inconvenient and random time. This is inconvenient if you're trying to reproduce a problem. Worse, the order in which object's __del__ methods are executed is arbitrary. You can run gc.collect() to force a collection, but there are pathological cases where objects will never be collected.

    Despite the cycle collector, it's still a good idea to define an explicit close() method on objects to be called whenever you're done with them. The close() method can then remove attributes that refer to subobjecs. Don't call __del__ directly -- __del__ should call close() and close() should make sure that it can be called more than once for the same object.

    Another way to avoid cyclical references is to use the "weakref" module, which allows you to point to objects without incrementing their reference count. Tree data structures, for instance, should use weak references for their parent and sibling references (if they need them!).

    If the object has ever been a local variable in a function that caught an expression in an except clause, chances are that a reference to the object still exists in that function's stack frame as contained in the stack trace. Normally, calling sys.exc_clear() will take care of this by clearing the last recorded exception.

    Finally, if your __del__ method raises an exception, a warning message is printed to sys.stderr.

    6.12   How do I get a list of all instances of a given class?

    Python does not keep track of all instances of a class (or of a built-in type). You can program the class's constructor to keep track of all instances by keeping a list of weak references to each instance.

    7   Modules

    7.1   How do I create a .pyc file?

    When a module is imported for the first time (or when the source is more recent than the current compiled file) a .pyc file containing the compiled code should be created in the same directory as the .py file.

    One reason that a .pyc file may not be created is permissions problems with the directory. This can happen, for example, if you develop as one user but run as another, such as if you are testing with a web server. Creation of a .pyc file is automatic if you're importing a module and Python has the ability (permissions, free space, etc...) to write the compiled module back to the directory.

    Running Python on a top level script is not considered an import and no .pyc will be created. For example, if you have a top-level module abc.py that imports another module xyz.py, when you run abc, xyz.pyc will be created since xyz is imported, but no abc.pyc file will be created since abc.py isn't being imported.

    If you need to create abc.pyc -- that is, to create a .pyc file for a module that is not imported -- you can, using the py_compile and compileall modules.

    The py_compile module can manually compile any module. One way is to use the compile() function in that module interactively:

    >>> import py_compile
    >>> py_compile.compile('abc.py')
    

    This will write the .pyc to the same location as abc.py (or you can override that with the optional parameter cfile).

    You can also automatically compile all files in a directory or directories using the compileall module. You can do it from the shell prompt by running compileall.py and providing the path of a directory containing Python files to compile:

    python compileall.py .
    

    7.2   How do I find the current module name?

    A module can find out its own module name by looking at the predefined global variable __name__. If this has the value '__main__', the program is running as a script. Many modules that are usually used by importing them also provide a command-line interface or a self-test, and only execute this code after checking __name__:

    def main():
        print 'Running test...'
        ...
    
    if __name__ == '__main__':
        main()
    

    7.3   How can I have modules that mutually import each other?

    Suppose you have the following modules:

    foo.py:

    from bar import bar_var
    foo_var=1
    

    bar.py:

    from foo import foo_var
    bar_var=2
    

    The problem is that the interpreter will perform the following steps:

    • main imports foo
    • Empty globals for foo are created
    • foo is compiled and starts executing
    • foo imports bar
    • Empty globals for bar are created
    • bar is compiled and starts executing
    • bar imports foo (which is a no-op since there already is a module named foo)
    • bar.foo_var = foo.foo_var

    The last step fails, because Python isn't done with interpreting foo yet and the global symbol dictionary for foo is still empty.

    The same thing happens when you use import foo, and then try to access foo.foo_var in global code.

    There are (at least) three possible workarounds for this problem.

    Guido van Rossum recommends avoiding all uses of from <module> import ..., and placing all code inside functions. Initializations of global variables and class variables should use constants or built-in functions only. This means everything from an imported module is referenced as <module>.<name>.

    Jim Roskind suggests performing steps in the following order in each module:

    • exports (globals, functions, and classes that don't need imported base classes)
    • import statements
    • active code (including globals that are initialized from imported values).

    van Rossum doesn't like this approach much because the imports appear in a strange place, but it does work.

    Matthias Urlichs recommends restructuring your code so that the recursive import is not necessary in the first place.

    These solutions are not mutually exclusive.

    7.4   __import__('x.y.z') returns <module 'x'>; how do I get z?

    Try:

    __import__('x.y.z').y.z
    

    For more realistic situations, you may have to do something like

    m = __import__(s)
    for i in s.split(".")[1:]:
        m = getattr(m, i)
    

    7.5   When I edit an imported module and reimport it, the changes don't show up. Why does this happen?

    For reasons of efficiency as well as consistency, Python only reads the module file on the first time a module is imported. If it didn't, in a program consisting of many modules where each one imports the same basic module, the basic module would be parsed and re-parsed many times. To force rereading of a changed module, do this:

    import modname
    reload(modname)
    

    Warning: this technique is not 100% fool-proof. In particular, modules containing statements like

    from modname import some_objects
    

    will continue to work with the old version of the imported objects. If the module contains class definitions, existing class instances will not be updated to use the new class definition. This can result in the following paradoxical behaviour:

    >>> import cls
    >>> c = cls.C()                # Create an instance of C
    >>> reload(cls)
    <module 'cls' from 'cls.pyc'>
    >>> isinstance(c, cls.C)       # isinstance is false?!?
    False
    

    The nature of the problem is made clear if you print out the class objects:

    >>> c.__class__
    <class cls.C at 0x7352a0>
    >>> cls.C
    <class cls.C at 0x4198d0>
    
    python-defaults-debian/faq/windows.ht0000644000000000000000000006043612057417145015127 0ustar Title: Python Windows FAQ Content-type: text/x-rst ==================================== Python Windows FAQ ==================================== :Date: $Date: 2005-07-26 07:21:45 -0600 (Tue, 26 Jul 2005) $ :Version: $Revision: 8295 $ :Web site: http://www.python.org/ .. contents:: .. sectnum:: How do I run a Python program under Windows? ---------------------------------------------------- This is not necessarily a straightforward question. If you are already familiar with running programs from the Windows command line then everything will seem obvious; otherwise, you might need a little more guidance. There are also differences between Windows 95, 98, NT, ME, 2000 and XP which can add to the confusion. Unless you use some sort of integrated development environment, you will end up *typing* Windows commands into what is variously referred to as a "DOS window" or "Command prompt window". Usually you can create such a window from your Start menu; under Windows 2000 the menu selection is "Start | Programs | Accessories | Command Prompt". You should be able to recognize when you have started such a window because you will see a Windows "command prompt", which usually looks like this:: C:\> The letter may be different, and there might be other things after it, so you might just as easily see something like:: D:\Steve\Projects\Python> depending on how your computer has been set up and what else you have recently done with it. Once you have started such a window, you are well on the way to running Python programs. You need to realize that your Python scripts have to be processed by another program called the Python interpreter. The interpreter reads your script, compiles it into bytecodes, and then executes the bytecodes to run your program. So, how do you arrange for the interpreter to handle your Python? First, you need to make sure that your command window recognises the word "python" as an instruction to start the interpreter. If you have opened a command window, you should try entering the command ``python`` and hitting return. You should then see something like:: Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> You have started the interpreter in "interactive mode". That means you can enter Python statements or expressions interactively and have them executed or evaluated while you wait. This is one of Python's strongest features. Check it by entering a few expressions of your choice and seeing the results:: >>> print "Hello" Hello >>> "Hello" * 3 HelloHelloHello Many people use the interactive mode as a convenient yet highly programmable calculator. When you want to end your interactive Python session, hold the Ctrl key down while you enter a Z, then hit the "Enter" key to get back to your Windows command prompt. You may also find that you have a Start-menu entry such as "Start | Programs | Python 2.2 | Python (command line)" that results in you seeing the ``>>>`` prompt in a new window. If so, the window will disappear after you enter the Ctrl-Z character; Windows is running a single "python" command in the window, and closes it when you terminate the interpreter. If the ``python`` command, instead of displaying the interpreter prompt ``>>>``, gives you a message like:: 'python' is not recognized as an internal or external command, operable program or batch file. or:: Bad command or filename then you need to make sure that your computer knows where to find the Python interpreter. To do this you will have to modify a setting called PATH, which is a list of directories where Windows will look for programs. You should arrange for Python's installation directory to be added to the PATH of every command window as it starts. If you installed Python fairly recently then the command :: dir C:\py* will probably tell you where it is installed; the usual location is something like ``C:\Python23``. Otherwise you will be reduced to a search of your whole disk ... use "Tools | Find" or hit the "Search" button and look for "python.exe". Supposing you discover that Python is installed in the ``C:\Python23`` directory (the default at the time of writing), you should make sure that entering the command :: c:\Python23\python starts up the interpreter as above (and don't forget you'll need a "CTRL-Z" and an "Enter" to get out of it). Once you have verified the directory, you need to add it to the start-up routines your computer goes through. For older versions of Windows the easiest way to do this is to edit the ``C:\AUTOEXEC.BAT`` file. You would want to add a line like the following to ``AUTOEXEC.BAT``:: PATH C:\Python23;%PATH% For Windows NT, 2000 and (I assume) XP, you will need to add a string such as :: ;C:\Python23 to the current setting for the PATH environment variable, which you will find in the properties window of "My Computer" under the "Advanced" tab. Note that if you have sufficient privilege you might get a choice of installing the settings either for the Current User or for System. The latter is preferred if you want everybody to be able to run Python on the machine. If you aren't confident doing any of these manipulations yourself, ask for help! At this stage you may want to reboot your system to make absolutely sure the new setting has taken effect. You probably won't need to reboot for Windows NT, XP or 2000. You can also avoid it in earlier versions by editing the file ``C:\WINDOWS\COMMAND\CMDINIT.BAT`` instead of ``AUTOEXEC.BAT``. You should now be able to start a new command window, enter ``python`` at the ``C:>`` (or whatever) prompt, and see the ``>>>`` prompt that indicates the Python interpreter is reading interactive commands. Let's suppose you have a program called ``pytest.py`` in directory ``C:\Steve\Projects\Python``. A session to run that program might look like this:: C:\> cd \Steve\Projects\Python C:\Steve\Projects\Python> python pytest.py Because you added a file name to the command to start the interpreter, when it starts up it reads the Python script in the named file, compiles it, executes it, and terminates, so you see another ``C:\>`` prompt. You might also have entered :: C:\> python \Steve\Projects\Python\pytest.py if you hadn't wanted to change your current directory. Under NT, 2000 and XP you may well find that the installation process has also arranged that the command ``pytest.py`` (or, if the file isn't in the current directory, ``C:\Steve\Projects\Python\pytest.py``) will automatically recognize the ".py" extension and run the Python interpreter on the named file. Using this feature is fine, but *some* versions of Windows have bugs which mean that this form isn't exactly equivalent to using the interpreter explicitly, so be careful. The important things to remember are: 1. Start Python from the Start Menu, or make sure the PATH is set correctly so Windows can find the Python interpreter. :: python should give you a '>>>" prompt from the Python interpreter. Don't forget the CTRL-Z and ENTER to terminate the interpreter (and, if you started the window from the Start Menu, make the window disappear). 2. Once this works, you run programs with commands:: python {program-file} 3. When you know the commands to use you can build Windows shortcuts to run the Python interpreter on any of your scripts, naming particular working directories, and adding them to your menus. Take a look at :: python --help if your needs are complex. 4. Interactive mode (where you see the ``>>>`` prompt) is best used for checking that individual statements and expressions do what you think they will, and for developing code by experiment. How do I make python scripts executable? ---------------------------------------------- On Windows 2000, the standard Python installer already associates the .py extension with a file type (Python.File) and gives that file type an open command that runs the interpreter (D:\\Program Files\\Python\\python.exe "%1" %*). This is enough to make scripts executable from the command prompt as 'foo.py'. If you'd rather be able to execute the script by simple typing 'foo' with no extension you need to add .py to the PATHEXT environment variable. On Windows NT, the steps taken by the installer as described above allow you to run a script with 'foo.py', but a longtime bug in the NT command processor prevents you from redirecting the input or output of any script executed in this way. This is often important. The incantation for making a Python script executable under WinNT is to give the file an extension of .cmd and add the following as the first line:: @setlocal enableextensions & python -x %~f0 %* & goto :EOF Why does Python sometimes take so long to start? ------------------------------------------------------- Usually Python starts very quickly on Windows, but occasionally there are bug reports that Python suddenly begins to take a long time to start up. This is made even more puzzling because Python will work fine on other Windows systems which appear to be configured identically. The problem may be caused by a misconfiguration of virus checking software on the problem machine. Some virus scanners have been known to introduce startup overhead of two orders of magnitude when the scanner is configured to monitor all reads from the filesystem. Try checking the configuration of virus scanning software on your systems to ensure that they are indeed configured identically. McAfee, when configured to scan all file system read activity, is a particular offender. Where is Freeze for Windows? ------------------------------------ "Freeze" is a program that allows you to ship a Python program as a single stand-alone executable file. It is *not* a compiler; your programs don't run any faster, but they are more easily distributable, at least to platforms with the same OS and CPU. Read the README file of the freeze program for more disclaimers. You can use freeze on Windows, but you must download the source tree (see http://www.python.org/download/download_source.html). The freeze program is in the ``Tools\freeze`` subdirectory of the source tree. You need the Microsoft VC++ compiler, and you probably need to build Python. The required project files are in the PCbuild directory. Is a ``*.pyd`` file the same as a DLL? ------------------------------------------ Yes, .pyd files are dll's, but there are a few differences. If you have a DLL named ``foo.pyd``, then it must have a function initfoo(). You can then write Python "import foo", and Python will search for foo.pyd (as well as foo.py, foo.pyc) and if it finds it, will attempt to call initfoo() to initialize it. You do not link your .exe with foo.lib, as that would cause Windows to require the DLL to be present. Note that the search path for foo.pyd is PYTHONPATH, not the same as the path that Windows uses to search for foo.dll. Also, foo.pyd need not be present to run your program, whereas if you linked your program with a dll, the dll is required. Of course, foo.pyd is required if you want to say "import foo". In a DLL, linkage is declared in the source code with __declspec(dllexport). In a .pyd, linkage is defined in a list of available functions. How can I embed Python into a Windows application? ---------------------------------------------------------- Embedding the Python interpreter in a Windows app can be summarized as follows: 1. Do _not_ build Python into your .exe file directly. On Windows, Python must be a DLL to handle importing modules that are themselves DLL's. (This is the first key undocumented fact.) Instead, link to pythonNN.dll; it is typically installed in ``C:\Windows\System``. NN is the Python version, a number such as "23" for Python 2.3. You can link to Python statically or dynamically. Linking statically means linking against pythonNN.lib, while dynamically linking means linking against pythonNN.dll. The drawback to dynamic linking is that your app won't run if pythonNN.dll does not exist on your system. (General note: pythonNN.lib is the so-called "import lib" corresponding to python.dll. It merely defines symbols for the linker.) Linking dynamically greatly simplifies link options; everything happens at run time. Your code must load pythonNN.dll using the Windows LoadLibraryEx() routine. The code must also use access routines and data in pythonNN.dll (that is, Python's C API's) using pointers obtained by the Windows GetProcAddress() routine. Macros can make using these pointers transparent to any C code that calls routines in Python's C API. Borland note: convert pythonNN.lib to OMF format using Coff2Omf.exe first. 2. If you use SWIG, it is easy to create a Python "extension module" that will make the app's data and methods available to Python. SWIG will handle just about all the grungy details for you. The result is C code that you link *into* your .exe file (!) You do _not_ have to create a DLL file, and this also simplifies linking. 3. SWIG will create an init function (a C function) whose name depends on the name of the extension module. For example, if the name of the module is leo, the init function will be called initleo(). If you use SWIG shadow classes, as you should, the init function will be called initleoc(). This initializes a mostly hidden helper class used by the shadow class. The reason you can link the C code in step 2 into your .exe file is that calling the initialization function is equivalent to importing the module into Python! (This is the second key undocumented fact.) 4. In short, you can use the following code to initialize the Python interpreter with your extension module. :: #include "python.h" ... Py_Initialize(); // Initialize Python. initmyAppc(); // Initialize (import) the helper class. PyRun_SimpleString("import myApp") ; // Import the shadow class. 5. There are two problems with Python's C API which will become apparent if you use a compiler other than MSVC, the compiler used to build pythonNN.dll. Problem 1: The so-called "Very High Level" functions that take FILE * arguments will not work in a multi-compiler environment because each compiler's notion of a struct FILE will be different. From an implementation standpoint these are very _low_ level functions. Problem 2: SWIG generates the following code when generating wrappers to void functions:: Py_INCREF(Py_None); _resultobj = Py_None; return _resultobj; Alas, Py_None is a macro that expands to a reference to a complex data structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will fail in a mult-compiler environment. Replace such code by:: return Py_BuildValue(""); It may be possible to use SWIG's %typemap command to make the change automatically, though I have not been able to get this to work (I'm a complete SWIG newbie). 6. Using a Python shell script to put up a Python interpreter window from inside your Windows app is not a good idea; the resulting window will be independent of your app's windowing system. Rather, you (or the wxPythonWindow class) should create a "native" interpreter window. It is easy to connect that window to the Python interpreter. You can redirect Python's i/o to _any_ object that supports read and write, so all you need is a Python object (defined in your extension module) that contains read() and write() methods. How do I use Python for CGI? ------------------------------------------------------- On the Microsoft IIS server or on the Win95 MS Personal Web Server you set up Python in the same way that you would set up any other scripting engine. Run regedt32 and go to:: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap and enter the following line (making any specific changes that your system may need):: .py :REG_SZ: c:\\python.exe -u %s %s This line will allow you to call your script with a simple reference like: http://yourserver/scripts/yourscript.py provided "scripts" is an "executable" directory for your server (which it usually is by default). The "-u" flag specifies unbuffered and binary mode for stdin - needed when working with binary data. In addition, it is recommended that using ".py" may not be a good idea for the file extensions when used in this context (you might want to reserve ``*.py`` for support modules and use ``*.cgi`` or ``*.cgp`` for "main program" scripts). In order to set up Internet Information Services 5 to use Python for CGI processing, please see the following links: http://www.e-coli.net/pyiis_server.html (for Win2k Server) http://www.e-coli.net/pyiis.html (for Win2k pro) Configuring Apache is much simpler. In the Apache configuration file ``httpd.conf``, add the following line at the end of the file:: ScriptInterpreterSource Registry Then, give your Python CGI-scripts the extension .py and put them in the cgi-bin directory. How do I keep editors from inserting tabs into my Python source? ------------------------------------------------------------------ The FAQ does not recommend using tabs, and `the Python style guide `_ recommends 4 spaces for distributed Python code; this is also the Emacs python-mode default. Under any editor, mixing tabs and spaces is a bad idea. MSVC is no different in this respect, and is easily configured to use spaces: Take Tools -> Options -> Tabs, and for file type "Default" set "Tab size" and "Indent size" to 4, and select the "Insert spaces" radio button. If you suspect mixed tabs and spaces are causing problems in leading whitespace, run Python with the -t switch or run ``Tools/Scripts/tabnanny.py`` to check a directory tree in batch mode. How do I check for a keypress without blocking? ---------------------------------------------------- Use the msvcrt module. This is a standard Windows-specific extension module. It defines a function kbhit() which checks whether a keyboard hit is present, and getch() which gets one character without echoing it. How do I emulate os.kill() in Windows? --------------------------------------------- Use win32api:: def kill(pid): """kill function for Win32""" import win32api handle = win32api.OpenProcess(1, 0, pid) return (0 != win32api.TerminateProcess(handle, 0)) Why does os.path.isdir() fail on NT shared directories? -------------------------------------------------------------- The solution appears to be always append the "\\" on the end of shared drives. :: >>> import os >>> os.path.isdir( '\\\\rorschach\\public') 0 >>> os.path.isdir( '\\\\rorschach\\public\\') 1 It helps to think of share points as being like drive letters. Example:: k: is not a directory k:\ is a directory k:\media is a directory k:\media\ is not a directory The same rules apply if you substitute "k:" with "\\conky\foo":: \\conky\foo is not a directory \\conky\foo\ is a directory \\conky\foo\media is a directory \\conky\foo\media\ is not a directory cgi.py (or other CGI programming) doesn't work sometimes on NT or win95! ----------------------------------------------------------------------------- Be sure you have the latest python.exe, that you are using python.exe rather than a GUI version of Python and that you have configured the server to execute :: "...\python.exe -u ..." for the CGI execution. The -u (unbuffered) option on NT and Win95 prevents the interpreter from altering newlines in the standard input and output. Without it post/multipart requests will seem to have the wrong length and binary (e.g. GIF) responses may get garbled (resulting in broken images, PDF files, and other binary downloads failing). Why doesn't os.popen() work in PythonWin on NT? ------------------------------------------------------- The reason that os.popen() doesn't work from within PythonWin is due to a bug in Microsoft's C Runtime Library (CRT). The CRT assumes you have a Win32 console attached to the process. You should use the win32pipe module's popen() instead which doesn't depend on having an attached Win32 console. Example:: import win32pipe f = win32pipe.popen('dir /c c:\\') print f.readlines() f.close() Why doesn't os.popen()/win32pipe.popen() work on Win9x? --------------------------------------------------------------- There is a bug in Win9x that prevents os.popen/win32pipe.popen* from working. The good news is there is a way to work around this problem. The Microsoft Knowledge Base article that you need to lookup is: Q150956. You will find links to the knowledge base at: http://www.microsoft.com/kb. PyRun_SimpleFile() crashes on Windows but not on Unix; why? ------------------------------------------------------------ This is very sensitive to the compiler vendor, version and (perhaps) even options. If the FILE* structure in your embedding program isn't the same as is assumed by the Python interpreter it won't work. The Python 1.5.* DLLs (``python15.dll``) are all compiled with MS VC++ 5.0 and with multithreading-DLL options (``/MD``). If you can't change compilers or flags, try using Py_RunSimpleString(). A trick to get it to run an arbitrary file is to construct a call to execfile() with the name of your file as argument. Also note that you can not mix-and-match Debug and Release versions. If you wish to use the Debug Multithreaded DLL, then your module _must_ have an "_d" appended to the base name. Importing _tkinter fails on Windows 95/98: why? ------------------------------------------------ Sometimes, the import of _tkinter fails on Windows 95 or 98, complaining with a message like the following:: ImportError: DLL load failed: One of the library files needed to run this application cannot be found. It could be that you haven't installed Tcl/Tk, but if you did install Tcl/Tk, and the Wish application works correctly, the problem may be that its installer didn't manage to edit the autoexec.bat file correctly. It tries to add a statement that changes the PATH environment variable to include the Tcl/Tk 'bin' subdirectory, but sometimes this edit doesn't quite work. Opening it with notepad usually reveals what the problem is. (One additional hint, noted by David Szafranski: you can't use long filenames here; e.g. use ``C:\PROGRA~1\Tcl\bin`` instead of ``C:\Program Files\Tcl\bin``.) How do I extract the downloaded documentation on Windows? ------------------------------------------------------------ Sometimes, when you download the documentation package to a Windows machine using a web browser, the file extension of the saved file ends up being .EXE. This is a mistake; the extension should be .TGZ. Simply rename the downloaded file to have the .TGZ extension, and WinZip will be able to handle it. (If your copy of WinZip doesn't, get a newer one from http://www.winzip.com.) Missing cw3215mt.dll (or missing cw3215.dll) ---------------------------------------------------- Sometimes, when using Tkinter on Windows, you get an error that cw3215mt.dll or cw3215.dll is missing. Cause: you have an old Tcl/Tk DLL built with cygwin in your path (probably ``C:\Windows``). You must use the Tcl/Tk DLLs from the standard Tcl/Tk installation (Python 1.5.2 comes with one). Warning about CTL3D32 version from installer ---------------------------------------------------- The Python installer issues a warning like this:: This version uses ``CTL3D32.DLL`` whitch is not the correct version. This version is used for windows NT applications only. [Tim Peters] This is a Microsoft DLL, and a notorious source of problems. The message means what it says: you have the wrong version of this DLL for your operating system. The Python installation did not cause this -- something else you installed previous to this overwrote the DLL that came with your OS (probably older shareware of some sort, but there's no way to tell now). If you search for "CTL3D32" using any search engine (AltaVista, for example), you'll find hundreds and hundreds of web pages complaining about the same problem with all sorts of installation programs. They'll point you to ways to get the correct version reinstalled on your system (since Python doesn't cause this, we can't fix it). David A Burton has written a little program to fix this. Go to http://www.burtonsys.com/download.html and click on "ctl3dfix.zip" python-defaults-debian/faq/windows.html0000664000000000000000000012122712632016514015450 0ustar Python Windows FAQ

    Python Windows FAQ

    Date: 2005-07-26
    Version: 8295
    Web site:http://www.python.org/

    1   How do I run a Python program under Windows?

    This is not necessarily a straightforward question. If you are already familiar with running programs from the Windows command line then everything will seem obvious; otherwise, you might need a little more guidance. There are also differences between Windows 95, 98, NT, ME, 2000 and XP which can add to the confusion.

    Unless you use some sort of integrated development environment, you will end up typing Windows commands into what is variously referred to as a "DOS window" or "Command prompt window". Usually you can create such a window from your Start menu; under Windows 2000 the menu selection is "Start | Programs | Accessories | Command Prompt". You should be able to recognize when you have started such a window because you will see a Windows "command prompt", which usually looks like this:

    C:\>
    

    The letter may be different, and there might be other things after it, so you might just as easily see something like:

    D:\Steve\Projects\Python>
    

    depending on how your computer has been set up and what else you have recently done with it. Once you have started such a window, you are well on the way to running Python programs.

    You need to realize that your Python scripts have to be processed by another program called the Python interpreter. The interpreter reads your script, compiles it into bytecodes, and then executes the bytecodes to run your program. So, how do you arrange for the interpreter to handle your Python?

    First, you need to make sure that your command window recognises the word "python" as an instruction to start the interpreter. If you have opened a command window, you should try entering the command python and hitting return. You should then see something like:

    Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    

    You have started the interpreter in "interactive mode". That means you can enter Python statements or expressions interactively and have them executed or evaluated while you wait. This is one of Python's strongest features. Check it by entering a few expressions of your choice and seeing the results:

    >>> print "Hello"
    Hello
    >>> "Hello" * 3
    HelloHelloHello
    

    Many people use the interactive mode as a convenient yet highly programmable calculator. When you want to end your interactive Python session, hold the Ctrl key down while you enter a Z, then hit the "Enter" key to get back to your Windows command prompt.

    You may also find that you have a Start-menu entry such as "Start | Programs | Python 2.2 | Python (command line)" that results in you seeing the >>> prompt in a new window. If so, the window will disappear after you enter the Ctrl-Z character; Windows is running a single "python" command in the window, and closes it when you terminate the interpreter.

    If the python command, instead of displaying the interpreter prompt >>>, gives you a message like:

    'python' is not recognized as an internal or external command,
    operable program or batch file.
    

    or:

    Bad command or filename
    

    then you need to make sure that your computer knows where to find the Python interpreter. To do this you will have to modify a setting called PATH, which is a list of directories where Windows will look for programs. You should arrange for Python's installation directory to be added to the PATH of every command window as it starts. If you installed Python fairly recently then the command

    dir C:\py*
    

    will probably tell you where it is installed; the usual location is something like C:\Python23. Otherwise you will be reduced to a search of your whole disk ... use "Tools | Find" or hit the "Search" button and look for "python.exe". Supposing you discover that Python is installed in the C:\Python23 directory (the default at the time of writing), you should make sure that entering the command

    c:\Python23\python
    

    starts up the interpreter as above (and don't forget you'll need a "CTRL-Z" and an "Enter" to get out of it). Once you have verified the directory, you need to add it to the start-up routines your computer goes through. For older versions of Windows the easiest way to do this is to edit the C:\AUTOEXEC.BAT file. You would want to add a line like the following to AUTOEXEC.BAT:

    PATH C:\Python23;%PATH%
    

    For Windows NT, 2000 and (I assume) XP, you will need to add a string such as

    ;C:\Python23
    

    to the current setting for the PATH environment variable, which you will find in the properties window of "My Computer" under the "Advanced" tab. Note that if you have sufficient privilege you might get a choice of installing the settings either for the Current User or for System. The latter is preferred if you want everybody to be able to run Python on the machine.

    If you aren't confident doing any of these manipulations yourself, ask for help! At this stage you may want to reboot your system to make absolutely sure the new setting has taken effect. You probably won't need to reboot for Windows NT, XP or 2000. You can also avoid it in earlier versions by editing the file C:\WINDOWS\COMMAND\CMDINIT.BAT instead of AUTOEXEC.BAT.

    You should now be able to start a new command window, enter python at the C:> (or whatever) prompt, and see the >>> prompt that indicates the Python interpreter is reading interactive commands.

    Let's suppose you have a program called pytest.py in directory C:\Steve\Projects\Python. A session to run that program might look like this:

    C:\> cd \Steve\Projects\Python
    C:\Steve\Projects\Python> python pytest.py
    

    Because you added a file name to the command to start the interpreter, when it starts up it reads the Python script in the named file, compiles it, executes it, and terminates, so you see another C:\> prompt. You might also have entered

    C:\> python \Steve\Projects\Python\pytest.py
    

    if you hadn't wanted to change your current directory.

    Under NT, 2000 and XP you may well find that the installation process has also arranged that the command pytest.py (or, if the file isn't in the current directory, C:\Steve\Projects\Python\pytest.py) will automatically recognize the ".py" extension and run the Python interpreter on the named file. Using this feature is fine, but some versions of Windows have bugs which mean that this form isn't exactly equivalent to using the interpreter explicitly, so be careful.

    The important things to remember are:

    1. Start Python from the Start Menu, or make sure the PATH is set correctly so Windows can find the Python interpreter.

      python
      

      should give you a '>>>" prompt from the Python interpreter. Don't forget the CTRL-Z and ENTER to terminate the interpreter (and, if you started the window from the Start Menu, make the window disappear).

    2. Once this works, you run programs with commands:

      python {program-file}
      
    3. When you know the commands to use you can build Windows shortcuts to run the Python interpreter on any of your scripts, naming particular working directories, and adding them to your menus. Take a look at

      python --help
      

      if your needs are complex.

    4. Interactive mode (where you see the >>> prompt) is best used for checking that individual statements and expressions do what you think they will, and for developing code by experiment.

    2   How do I make python scripts executable?

    On Windows 2000, the standard Python installer already associates the .py extension with a file type (Python.File) and gives that file type an open command that runs the interpreter (D:\Program Files\Python\python.exe "%1" %*). This is enough to make scripts executable from the command prompt as 'foo.py'. If you'd rather be able to execute the script by simple typing 'foo' with no extension you need to add .py to the PATHEXT environment variable.

    On Windows NT, the steps taken by the installer as described above allow you to run a script with 'foo.py', but a longtime bug in the NT command processor prevents you from redirecting the input or output of any script executed in this way. This is often important.

    The incantation for making a Python script executable under WinNT is to give the file an extension of .cmd and add the following as the first line:

    @setlocal enableextensions & python -x %~f0 %* & goto :EOF
    

    3   Why does Python sometimes take so long to start?

    Usually Python starts very quickly on Windows, but occasionally there are bug reports that Python suddenly begins to take a long time to start up. This is made even more puzzling because Python will work fine on other Windows systems which appear to be configured identically.

    The problem may be caused by a misconfiguration of virus checking software on the problem machine. Some virus scanners have been known to introduce startup overhead of two orders of magnitude when the scanner is configured to monitor all reads from the filesystem. Try checking the configuration of virus scanning software on your systems to ensure that they are indeed configured identically. McAfee, when configured to scan all file system read activity, is a particular offender.

    4   Where is Freeze for Windows?

    "Freeze" is a program that allows you to ship a Python program as a single stand-alone executable file. It is not a compiler; your programs don't run any faster, but they are more easily distributable, at least to platforms with the same OS and CPU. Read the README file of the freeze program for more disclaimers.

    You can use freeze on Windows, but you must download the source tree (see http://www.python.org/download/download_source.html). The freeze program is in the Tools\freeze subdirectory of the source tree.

    You need the Microsoft VC++ compiler, and you probably need to build Python. The required project files are in the PCbuild directory.

    5   Is a *.pyd file the same as a DLL?

    Yes, .pyd files are dll's, but there are a few differences. If you have a DLL named foo.pyd, then it must have a function initfoo(). You can then write Python "import foo", and Python will search for foo.pyd (as well as foo.py, foo.pyc) and if it finds it, will attempt to call initfoo() to initialize it. You do not link your .exe with foo.lib, as that would cause Windows to require the DLL to be present.

    Note that the search path for foo.pyd is PYTHONPATH, not the same as the path that Windows uses to search for foo.dll. Also, foo.pyd need not be present to run your program, whereas if you linked your program with a dll, the dll is required. Of course, foo.pyd is required if you want to say "import foo". In a DLL, linkage is declared in the source code with __declspec(dllexport). In a .pyd, linkage is defined in a list of available functions.

    6   How can I embed Python into a Windows application?

    Embedding the Python interpreter in a Windows app can be summarized as follows:

    1. Do _not_ build Python into your .exe file directly. On Windows, Python must be a DLL to handle importing modules that are themselves DLL's. (This is the first key undocumented fact.) Instead, link to pythonNN.dll; it is typically installed in C:\Windows\System. NN is the Python version, a number such as "23" for Python 2.3.

      You can link to Python statically or dynamically. Linking statically means linking against pythonNN.lib, while dynamically linking means linking against pythonNN.dll. The drawback to dynamic linking is that your app won't run if pythonNN.dll does not exist on your system. (General note: pythonNN.lib is the so-called "import lib" corresponding to python.dll. It merely defines symbols for the linker.)

      Linking dynamically greatly simplifies link options; everything happens at run time. Your code must load pythonNN.dll using the Windows LoadLibraryEx() routine. The code must also use access routines and data in pythonNN.dll (that is, Python's C API's) using pointers obtained by the Windows GetProcAddress() routine. Macros can make using these pointers transparent to any C code that calls routines in Python's C API.

      Borland note: convert pythonNN.lib to OMF format using Coff2Omf.exe first.

    2. If you use SWIG, it is easy to create a Python "extension module" that will make the app's data and methods available to Python. SWIG will handle just about all the grungy details for you. The result is C code that you link into your .exe file (!) You do _not_ have to create a DLL file, and this also simplifies linking.

    3. SWIG will create an init function (a C function) whose name depends on the name of the extension module. For example, if the name of the module is leo, the init function will be called initleo(). If you use SWIG shadow classes, as you should, the init function will be called initleoc(). This initializes a mostly hidden helper class used by the shadow class.

      The reason you can link the C code in step 2 into your .exe file is that calling the initialization function is equivalent to importing the module into Python! (This is the second key undocumented fact.)

    4. In short, you can use the following code to initialize the Python interpreter with your extension module.

      #include "python.h"
      ...
      Py_Initialize();  // Initialize Python.
      initmyAppc();  // Initialize (import) the helper class.
      PyRun_SimpleString("import myApp") ;  // Import the shadow class.
      
    5. There are two problems with Python's C API which will become apparent if you use a compiler other than MSVC, the compiler used to build pythonNN.dll.

      Problem 1: The so-called "Very High Level" functions that take FILE * arguments will not work in a multi-compiler environment because each compiler's notion of a struct FILE will be different. From an implementation standpoint these are very _low_ level functions.

      Problem 2: SWIG generates the following code when generating wrappers to void functions:

      Py_INCREF(Py_None);
      _resultobj = Py_None;
      return _resultobj;
      

      Alas, Py_None is a macro that expands to a reference to a complex data structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will fail in a mult-compiler environment. Replace such code by:

      return Py_BuildValue("");
      

      It may be possible to use SWIG's %typemap command to make the change automatically, though I have not been able to get this to work (I'm a complete SWIG newbie).

    6. Using a Python shell script to put up a Python interpreter window from inside your Windows app is not a good idea; the resulting window will be independent of your app's windowing system. Rather, you (or the wxPythonWindow class) should create a "native" interpreter window. It is easy to connect that window to the Python interpreter. You can redirect Python's i/o to _any_ object that supports read and write, so all you need is a Python object (defined in your extension module) that contains read() and write() methods.

    7   How do I use Python for CGI?

    On the Microsoft IIS server or on the Win95 MS Personal Web Server you set up Python in the same way that you would set up any other scripting engine.

    Run regedt32 and go to:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap
    

    and enter the following line (making any specific changes that your system may need):

    .py :REG_SZ: c:\<path to python>\python.exe -u %s %s
    

    This line will allow you to call your script with a simple reference like: http://yourserver/scripts/yourscript.py provided "scripts" is an "executable" directory for your server (which it usually is by default). The "-u" flag specifies unbuffered and binary mode for stdin - needed when working with binary data.

    In addition, it is recommended that using ".py" may not be a good idea for the file extensions when used in this context (you might want to reserve *.py for support modules and use *.cgi or *.cgp for "main program" scripts).

    In order to set up Internet Information Services 5 to use Python for CGI processing, please see the following links:

    http://www.e-coli.net/pyiis_server.html (for Win2k Server) http://www.e-coli.net/pyiis.html (for Win2k pro)

    Configuring Apache is much simpler. In the Apache configuration file httpd.conf, add the following line at the end of the file:

    ScriptInterpreterSource Registry
    

    Then, give your Python CGI-scripts the extension .py and put them in the cgi-bin directory.

    8   How do I keep editors from inserting tabs into my Python source?

    The FAQ does not recommend using tabs, and the Python style guide recommends 4 spaces for distributed Python code; this is also the Emacs python-mode default.

    Under any editor, mixing tabs and spaces is a bad idea. MSVC is no different in this respect, and is easily configured to use spaces: Take Tools -> Options -> Tabs, and for file type "Default" set "Tab size" and "Indent size" to 4, and select the "Insert spaces" radio button.

    If you suspect mixed tabs and spaces are causing problems in leading whitespace, run Python with the -t switch or run Tools/Scripts/tabnanny.py to check a directory tree in batch mode.

    9   How do I check for a keypress without blocking?

    Use the msvcrt module. This is a standard Windows-specific extension module. It defines a function kbhit() which checks whether a keyboard hit is present, and getch() which gets one character without echoing it.

    10   How do I emulate os.kill() in Windows?

    Use win32api:

    def kill(pid):
        """kill function for Win32"""
        import win32api
        handle = win32api.OpenProcess(1, 0, pid)
        return (0 != win32api.TerminateProcess(handle, 0))
    

    11   Why does os.path.isdir() fail on NT shared directories?

    The solution appears to be always append the "\" on the end of shared drives.

    >>> import os
    >>> os.path.isdir( '\\\\rorschach\\public')
    0
    >>> os.path.isdir( '\\\\rorschach\\public\\')
    1
    

    It helps to think of share points as being like drive letters. Example:

    k: is not a directory
    k:\ is a directory
    k:\media is a directory
    k:\media\ is not a directory
    

    The same rules apply if you substitute "k:" with "\conkyfoo":

    \\conky\foo  is not a directory
    \\conky\foo\ is a directory
    \\conky\foo\media is a directory
    \\conky\foo\media\ is not a directory
    

    12   cgi.py (or other CGI programming) doesn't work sometimes on NT or win95!

    Be sure you have the latest python.exe, that you are using python.exe rather than a GUI version of Python and that you have configured the server to execute

    "...\python.exe -u ..."
    

    for the CGI execution. The -u (unbuffered) option on NT and Win95 prevents the interpreter from altering newlines in the standard input and output. Without it post/multipart requests will seem to have the wrong length and binary (e.g. GIF) responses may get garbled (resulting in broken images, PDF files, and other binary downloads failing).

    13   Why doesn't os.popen() work in PythonWin on NT?

    The reason that os.popen() doesn't work from within PythonWin is due to a bug in Microsoft's C Runtime Library (CRT). The CRT assumes you have a Win32 console attached to the process.

    You should use the win32pipe module's popen() instead which doesn't depend on having an attached Win32 console.

    Example:

    import win32pipe
    f = win32pipe.popen('dir /c c:\\')
    print f.readlines()
    f.close()
    

    14   Why doesn't os.popen()/win32pipe.popen() work on Win9x?

    There is a bug in Win9x that prevents os.popen/win32pipe.popen* from working. The good news is there is a way to work around this problem. The Microsoft Knowledge Base article that you need to lookup is: Q150956. You will find links to the knowledge base at: http://www.microsoft.com/kb.

    15   PyRun_SimpleFile() crashes on Windows but not on Unix; why?

    This is very sensitive to the compiler vendor, version and (perhaps) even options. If the FILE* structure in your embedding program isn't the same as is assumed by the Python interpreter it won't work.

    The Python 1.5.* DLLs (python15.dll) are all compiled with MS VC++ 5.0 and with multithreading-DLL options (/MD).

    If you can't change compilers or flags, try using Py_RunSimpleString(). A trick to get it to run an arbitrary file is to construct a call to execfile() with the name of your file as argument.

    Also note that you can not mix-and-match Debug and Release versions. If you wish to use the Debug Multithreaded DLL, then your module _must_ have an "_d" appended to the base name.

    16   Importing _tkinter fails on Windows 95/98: why?

    Sometimes, the import of _tkinter fails on Windows 95 or 98, complaining with a message like the following:

    ImportError: DLL load failed: One of the library files needed
    to run this application cannot be found.
    

    It could be that you haven't installed Tcl/Tk, but if you did install Tcl/Tk, and the Wish application works correctly, the problem may be that its installer didn't manage to edit the autoexec.bat file correctly. It tries to add a statement that changes the PATH environment variable to include the Tcl/Tk 'bin' subdirectory, but sometimes this edit doesn't quite work. Opening it with notepad usually reveals what the problem is.

    (One additional hint, noted by David Szafranski: you can't use long filenames here; e.g. use C:\PROGRA~1\Tcl\bin instead of C:\Program Files\Tcl\bin.)

    17   How do I extract the downloaded documentation on Windows?

    Sometimes, when you download the documentation package to a Windows machine using a web browser, the file extension of the saved file ends up being .EXE. This is a mistake; the extension should be .TGZ.

    Simply rename the downloaded file to have the .TGZ extension, and WinZip will be able to handle it. (If your copy of WinZip doesn't, get a newer one from http://www.winzip.com.)

    18   Missing cw3215mt.dll (or missing cw3215.dll)

    Sometimes, when using Tkinter on Windows, you get an error that cw3215mt.dll or cw3215.dll is missing.

    Cause: you have an old Tcl/Tk DLL built with cygwin in your path (probably C:\Windows). You must use the Tcl/Tk DLLs from the standard Tcl/Tk installation (Python 1.5.2 comes with one).

    19   Warning about CTL3D32 version from installer

    The Python installer issues a warning like this:

    This version uses ``CTL3D32.DLL`` whitch is not the correct version.
    This version is used for windows NT applications only.
    

    [Tim Peters] This is a Microsoft DLL, and a notorious source of problems. The message means what it says: you have the wrong version of this DLL for your operating system. The Python installation did not cause this -- something else you installed previous to this overwrote the DLL that came with your OS (probably older shareware of some sort, but there's no way to tell now). If you search for "CTL3D32" using any search engine (AltaVista, for example), you'll find hundreds and hundreds of web pages complaining about the same problem with all sorts of installation programs. They'll point you to ways to get the correct version reinstalled on your system (since Python doesn't cause this, we can't fix it).

    David A Burton has written a little program to fix this. Go to http://www.burtonsys.com/download.html and click on "ctl3dfix.zip"

    python-defaults-debian/pyclean0000755000000000000000000001003413161161072013667 0ustar #! /usr/bin/python2 # -*- coding: UTF-8 -*- vim: et ts=4 sw=4 # # Copyright © 2010-2012 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import logging import optparse import sys from os import environ, remove from os.path import exists sys.path.insert(1, '/usr/share/python/') from debpython import files as dpf from debpython.namespace import add_namespace_files # initialize script logging.basicConfig(format='%(levelname).1s: %(module)s:%(lineno)d: ' '%(message)s') log = logging.getLogger(__name__) """TODO: move it to manpage Examples: pyclean -p python-mako # all .py[co] files from the package pyclean /usr/lib/python2.6/dist-packages # python2.6 """ def destroyer(): # ;-) """Removes every .py[co] file associated to received .py file.""" def find_files_to_remove(pyfile): for filename in ("%sc" % pyfile, "%so" % pyfile): if exists(filename): yield filename counter = 0 try: while True: pyfile = (yield) for filename in find_files_to_remove(pyfile): try: log.debug('removing %s', filename) remove(filename) counter += 1 except (IOError, OSError), e: log.error('cannot remove %s', filename) log.debug(e) except GeneratorExit: log.info("removed files: %s", counter) def main(): usage = '%prog [-p PACKAGE] [DIR_OR_FILE]' parser = optparse.OptionParser(usage, version='%prog 1.0') parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='turn verbose more one') parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=False, help='be quiet') parser.add_option('-p', '--package', help='specify Debian package name to clean') options, args = parser.parse_args() if options.verbose or environ.get('PYCLEAN_DEBUG') == '1': log.setLevel(logging.DEBUG) log.debug('argv: %s', sys.argv) log.debug('options: %s', options) log.debug('args: %s', args) else: log.setLevel(logging.WARNING) d = destroyer() d.next() # initialize coroutine if not options.package and not args: parser.print_usage() exit(1) if options.package: log.info('cleaning package %s', options.package) pfiles = dpf.from_package(options.package, extensions=('.py', '.so')) pfiles = add_namespace_files(pfiles, options.package, action=False) pfiles = set(dpf.filter_out_ext(pfiles, ('.so',))) if args: log.info('cleaning directories: %s', args) files = dpf.from_directory(args, extensions=('.py', '.so')) files = add_namespace_files(files, action=False) files = set(dpf.filter_out_ext(files, ('.so',))) if options.package: files = files & pfiles else: files = pfiles for filename in files: d.send(filename) if __name__ == '__main__': main() python-defaults-debian/pyclean.10000664000000000000000000000246212374331373014043 0ustar .\" Man page generated from reStructuredText. . .TH PYCLEAN 1 "" "" "" .SH NAME pyclean \- removes .pyc and .pyo files . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .INDENT 0.0 .INDENT 3.5 pyclean [\-p PACKAGE | DIR_OR_FILE] .UNINDENT .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \-\-version show program\(aqs version number and exit .TP .B \-h\fP,\fB \-\-help show this help message and exit .TP .B \-v\fP,\fB \-\-verbose turn verbose more one .TP .B \-q\fP,\fB \-\-quiet be quiet .TP .BI \-p \ PACKAGE\fP,\fB \ \-\-package\fB= PACKAGE specify Debian package name to clean (combining with DIR_OR_FILE will additionally limit list of files) .UNINDENT .SH AUTHOR Piotr Ożarowski, 2012-201 .\" Generated by docutils manpage writer. . python-defaults-debian/pyclean.rst0000644000000000000000000000102412254623031014472 0ustar ========= pyclean ========= --------------------------- removes .pyc and .pyo files --------------------------- :Manual section: 1 :Author: Piotr Ożarowski, 2012-201 SYNOPSIS ======== pyclean [-p PACKAGE | DIR_OR_FILE] OPTIONS ======= --version show program's version number and exit -h, --help show this help message and exit -v, --verbose turn verbose more one -q, --quiet be quiet -p PACKAGE, --package=PACKAGE specify Debian package name to clean (combining with DIR_OR_FILE will additionally limit list of files) python-defaults-debian/pycompile0000755000000000000000000002716713161161101014245 0ustar #! /usr/bin/python2 # -*- coding: utf-8 -*- vim: et ts=4 sw=4 # # Copyright © 2010-2012 Piotr Ożarowski # Copyright © 2010 Canonical Ltd # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. from __future__ import with_statement import logging import optparse import os import sys from os import environ, listdir from os.path import exists, isdir, islink, join from subprocess import PIPE, STDOUT, Popen sys.path.insert(1, '/usr/share/python/') from debpython.version import SUPPORTED, debsorted, vrepr, \ get_requested_versions, parse_vrange, getver from debpython import files as dpf from debpython.namespace import add_namespace_files from debpython.option import Option, compile_regexpr from debpython.pydist import PUBLIC_DIR_RE from debpython.tools import memoize # initialize script logging.basicConfig(format='%(levelname).1s: %(module)s:%(lineno)d: ' '%(message)s') log = logging.getLogger(__name__) STDINS = {} WORKERS = {} """TODO: move it to manpage Examples: pycompile -p python-mako # package's public files pycompile -p foo /usr/share/foo # package's private files pycompile -p foo -V 2.6- /usr/share/foo # private files, Python >= 2.6 pycompile -V 2.6 /usr/lib/python2.6/dist-packages # python2.6 only pycompile -V 2.6 /usr/lib/foo/bar.py # python2.6 only """ ### EXCLUDES ################################################### @memoize def get_exclude_patterns_from_dir(name='/usr/share/python/bcep/'): """Return patterns for files that shouldn't be bytecompiled.""" if not isdir(name): return [] result = [] for fn in listdir(name): with file(join(name, fn), 'r') as lines: for line in lines: type_, vrange, dname, pattern = line.split('|', 3) vrange = parse_vrange(vrange) versions = get_requested_versions(vrange, available=True) if not versions: # pattern doesn't match installed Python versions continue pattern = pattern.rstrip('\n') if type_ == 're': pattern = compile_regexpr(None, None, pattern) result.append((type_, versions, dname, pattern)) return result def get_exclude_patterns(directory='/', patterns=None, versions=None): """Return patterns for files that shouldn't be compiled in given dir.""" if versions is not None: # make sure it's a set (debsorted returns a list) versions = set(versions) if patterns: if versions is None: versions = set(SUPPORTED) patterns = [('re', versions, directory, i) for i in patterns] else: patterns = [] for type_, vers, dname, pattern in get_exclude_patterns_from_dir(): # skip patterns that do not match requested directory if not dname.startswith(directory[:len(dname)]): continue # skip patterns that do not match requested versions if versions and not versions & vers: continue patterns.append((type_, vers, dname, pattern)) return patterns def filter_files(files, e_patterns, compile_versions): """Generate (file, versions_to_compile) pairs.""" for fn in files: valid_versions = set(compile_versions) # all by default for type_, vers, dname, pattern in e_patterns: if type_ == 'dir' and fn.startswith(dname): valid_versions = valid_versions - vers elif type_ == 're' and pattern.match(fn): valid_versions = valid_versions - vers # move to the next file if all versions were removed if not valid_versions: break if valid_versions: public_dir = PUBLIC_DIR_RE.match(fn) if public_dir: yield fn, set([getver(public_dir.group(1))]) else: yield fn, valid_versions ### COMPILE #################################################### def py_compile(version, optimize, workers): if not isinstance(version, basestring): version = vrepr(version) cmd = "/usr/bin/python%s%s -m py_compile -" \ % (version, ' -O' if optimize else '') process = Popen(cmd, bufsize=1, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) workers[version] = process # keep the reference for .communicate() stdin = process.stdin while True: filename = (yield) stdin.write(filename + '\n') def compile(files, versions, force, optimize, e_patterns=None): global STDINS, WORKERS # start Python interpreters that will handle byte compilation for version in versions: if version not in STDINS: coroutine = py_compile(version, optimize, WORKERS) coroutine.next() STDINS[version] = coroutine # byte compile files for fn, versions_to_compile in filter_files(files, e_patterns, versions): cfn = fn + 'o' if optimize else 'c' if not exists(fn): # pycentral's hook should clean it later if islink(fn): log.warn('dangling symlink skipped: %s (%s)', fn, os.readlink(fn)) continue if exists(cfn) and not force: ftime = os.stat(fn).st_mtime try: ctime = os.stat(cfn).st_mtime except os.error: ctime = 0 if ctime > ftime: continue for version in versions_to_compile: try: pipe = STDINS[version] except KeyError: # `pycompile /usr/lib/` invoked, add missing worker pipe = py_compile(version, optimize, WORKERS) pipe.next() STDINS[version] = pipe pipe.send(fn) ################################################################ def main(): usage = '%prog [-V [X.Y][-][A.B]] DIR_OR_FILE [-X REGEXPR]\n' + \ ' %prog -p PACKAGE' parser = optparse.OptionParser(usage, version='%prog 1.0', option_class=Option) parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='turn verbose mode on') parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=False, help='be quiet') parser.add_option('-f', '--force', action='store_true', dest='force', default=False, help='force rebuild even if timestamps are up-to-date') parser.add_option('-O', action='store_true', dest='optimize', default=False, help="byte-compile to .pyo files") parser.add_option('-p', '--package', help='specify Debian package name whose files should be bytecompiled') parser.add_option('-V', type='version_range', dest='vrange', help="""force private modules to be bytecompiled with Python version from given range, regardless of the default Python version in the system. If there are no other options, bytecompile all public modules for installed Python versions that match given range. VERSION_RANGE examples: '2.5' (version 2.5 only), '2.5-' (version 2.5 or newer), '2.5-2.7' (version 2.5 or 2.6), '-3.0' (all supported 2.X versions)""") parser.add_option('-X', '--exclude', action='append', dest='regexpr', type='regexpr', help='exclude items that match given REGEXPR. You may use this option \ multiple times to build up a list of things to exclude.') (options, args) = parser.parse_args() if options.verbose or environ.get('PYCOMPILE_DEBUG') == '1': log.setLevel(logging.DEBUG) log.debug('argv: %s', sys.argv) log.debug('options: %s', options) log.debug('args: %s', args) else: log.setLevel(logging.WARN) if options.regexpr and not args: parser.error('--exclude option works with private directories ' 'only, please use /usr/share/python/bcep to specify ' 'public modules to skip') if options.vrange and options.vrange[0] == options.vrange[1] and\ options.vrange != (None, None) and\ exists("/usr/bin/python%d.%d" % options.vrange[0]): # specific version requested, use it even if it's not in SUPPORTED versions = set(options.vrange[:1]) else: versions = get_requested_versions(options.vrange, available=True) if not versions: log.error('Requested versions are not installed') exit(3) if options.package and args: # package's private directories # get requested Python version compile_versions = debsorted(versions)[:1] log.debug('compile versions: %s', versions) pkg_files = tuple(dpf.from_package(options.package)) for item in args: e_patterns = get_exclude_patterns(item, options.regexpr, \ compile_versions) if not exists(item): log.warn('No such file or directory: %s', item) else: log.debug('byte compiling %s using Python %s', item, compile_versions) files = dpf.filter_directory(pkg_files, item) compile(files, compile_versions, options.force, options.optimize, e_patterns) elif options.package: # package's public modules # no need to limit versions here, version is hardcoded in path or # via -V option e_patterns = get_exclude_patterns() files = dpf.from_package(options.package, extensions=('.py', '.so')) files = dpf.filter_public(files, versions) files = add_namespace_files(files, options.package, action=True) files = dpf.filter_out_ext(files, ('.so',)) compile(files, versions, options.force, options.optimize, e_patterns) elif args: # other directories/files versions = debsorted(versions)[:1] for item in args: e_patterns = get_exclude_patterns(item, options.regexpr, versions) files = dpf.from_directory(item, extensions=('.py', '.so')) files = add_namespace_files(files, action=True) files = dpf.filter_out_ext(files, ('.so',)) compile(files, versions, options.force, options.optimize, e_patterns) else: parser.print_usage() exit(1) # wait for all processes to finish rv = 0 for process in WORKERS.itervalues(): child_output, child_unused = process.communicate() if process.returncode not in (None, 0): # FIXME: find out the package the file belongs to sys.stderr.write(child_output) rv = process.returncode if rv != 0: rv += 100 exit(rv) if __name__ == '__main__': main() python-defaults-debian/pycompile.10000664000000000000000000000452612374331373014414 0ustar .\" Man page generated from reStructuredText. . .TH PYCOMPILE 1 "" "" "" .SH NAME pycompile \- byte compile Python source files . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .INDENT 0.0 .INDENT 3.5 pycompile [\-V [X.Y][\-][A.B]] DIR_OR_FILE [\-X REGEXPR] .sp pycompile \-p PACKAGE .UNINDENT .UNINDENT .SH DESCRIPTION .sp Wrapper around Python standard library\(aqs py_compile module to byte\-compile Python files. .SH OPTIONS .INDENT 0.0 .TP .B \-\-version show program\(aqs version number and exit .TP .B \-h\fP,\fB \-\-help show this help message and exit .TP .B \-f\fP,\fB \-\-force force rebuild of byte\-code files even if timestamps are up\-to\-date .TP .B \-O byte\-compile to .pyo files .TP .B \-q\fP,\fB \-\-quiet be quiet .TP .B \-v\fP,\fB \-\-verbose turn verbose mode on .TP .BI \-p \ PACKAGE\fP,\fB \ \-\-package\fB= PACKAGE specify Debian package name whose files should be bytecompiled (combining with DIR_OR_FILE will additionally limit list of files) .TP .BI \-V \ VRANGE force private modules to be bytecompiled with Python version from given range, regardless of the default Python version in the system. If there are no other options, bytecompile all public modules for installed Python versions that match given range. VERSION_RANGE examples: .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fB2.5\fP version 2.5 only .IP \(bu 2 \fB2.5\-\fP version 2.5 or newer .IP \(bu 2 \fB2.5\-2.7\fP version 2.5 or 2.6 .IP \(bu 2 \fB\-3.0\fP all supported 2.X versions .UNINDENT .UNINDENT .UNINDENT .TP .BI \-X \ REGEXPR\fP,\fB \ \-\-exclude\fB= REGEXPR exclude items that match given REGEXPR. You may use this option multiple times to build up a list of things to exclude .UNINDENT .SH AUTHOR Piotr Ożarowski, 2012-2013 .\" Generated by docutils manpage writer. . python-defaults-debian/pycompile.rst0000644000000000000000000000263312254623031015047 0ustar ========== pycompile ========== -------------------------------- byte compile Python source files -------------------------------- :Manual section: 1 :Author: Piotr Ożarowski, 2012-2013 SYNOPSIS ======== pycompile [-V [X.Y][-][A.B]] DIR_OR_FILE [-X REGEXPR] pycompile -p PACKAGE DESCRIPTION =========== Wrapper around Python standard library's py_compile module to byte-compile Python files. OPTIONS ======= --version show program's version number and exit -h, --help show this help message and exit -f, --force force rebuild of byte-code files even if timestamps are up-to-date -O byte-compile to .pyo files -q, --quiet be quiet -v, --verbose turn verbose mode on -p PACKAGE, --package=PACKAGE specify Debian package name whose files should be bytecompiled (combining with DIR_OR_FILE will additionally limit list of files) -V VRANGE force private modules to be bytecompiled with Python version from given range, regardless of the default Python version in the system. If there are no other options, bytecompile all public modules for installed Python versions that match given range. VERSION_RANGE examples: * ``2.5`` version 2.5 only * ``2.5-`` version 2.5 or newer * ``2.5-2.7`` version 2.5 or 2.6 * ``-3.0`` all supported 2.X versions -X REGEXPR, --exclude=REGEXPR exclude items that match given REGEXPR. You may use this option multiple times to build up a list of things to exclude python-defaults-debian/pydist/0000755000000000000000000000000012374331373013634 5ustar python-defaults-debian/pydist/Makefile0000644000000000000000000000024512374331373015275 0ustar #!/usr/bin/make -f clean: rm -rf cache #rm -f dist_fallback dist_fallback: sources.list python ./generate_fallback_list.py --skip-sensible-names .PHONY: clean python-defaults-debian/pydist/README.PyDist0000644000000000000000000000355412057417145015736 0ustar ============ PyDist files ============ DISTNAME [VRANGE] [DEPENDENCY][; [PEP386] [RULES]] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PyDist files help tools like dh_python2 to translate Python dependencies (from setup.py's install_requires or egg's requires.txt file) to Debian dependencies. Required fields: ~~~~~~~~~~~~~~~~ DISTNAME ```````` Python distribution name (you can find it at the beginning of .egg-info file/directory name that your package provides). Examples: * SQLAlchemy * Jinja2 * numpy Optional fields: ~~~~~~~~~~~~~~~~ VRANGE `````` Python version or version range the line applies to. Examples: * 2.6 (Python 2.6 only) * 2.5- (Python 2.5 and newer) * 2.5-2.7 (Python 2.5 or 2.6) * -2.7 (Python 2.6 or older) DEPENDENCY `````````` Debian dependency, multiple packages or versions are allowed. If not set, given Python distribution name will be ignored. Examples: * python-mako * python-jinja2 | python (>= 2.6) * python-sqlalchemy (>= 0.5), python-sqlalchemy (<< 0.6) PEP386 `````` Standards flag: upstream uses versioning schema described in PEP 386. RULES ````` Rules needed to translate upstream version to Debian one. If PEP386 is set, its rules will be applied later. Multiple rules are allowed, separate them with a space. Examples: * s/^/2:/ * s/alpha/~alpha/ s/^/1:/ Notes: ~~~~~~ You can use multiple lines if binary package provides more than one Python distribution or if you want to specify different dependencies for each Python version or version range. If you use dh_python2, it will install debian/binary_package_name.pydist file to /usr/share/python/dist/binary_package_name automatically. Complete examples: ~~~~~~~~~~~~~~~~~~ * SQLAlchemy python-sqlalchemy (>= 0.5), python-sqlalchemy (<< 0.6) * Mako python-mako; PEP386 * foo -2.5 python-oldfoo; s/^/3:/ * foo 2.5- python-foo; PEP386 * Bar 2.6- .. vim: ft=rst python-defaults-debian/pydist/README.PyDist.html0000664000000000000000000002404612374331373016702 0ustar PyDist files

    PyDist files

    DISTNAME [VRANGE] [DEPENDENCY][; [PEP386] [RULES]]

    PyDist files help tools like dh_python2 to translate Python dependencies (from setup.py's install_requires or egg's requires.txt file) to Debian dependencies.

    Required fields:

    DISTNAME

    Python distribution name (you can find it at the beginning of .egg-info file/directory name that your package provides).

    Examples:
    • SQLAlchemy
    • Jinja2
    • numpy

    Optional fields:

    VRANGE

    Python version or version range the line applies to.

    Examples:
    • 2.6 (Python 2.6 only)
    • 2.5- (Python 2.5 and newer)
    • 2.5-2.7 (Python 2.5 or 2.6)
    • -2.7 (Python 2.6 or older)

    DEPENDENCY

    Debian dependency, multiple packages or versions are allowed. If not set, given Python distribution name will be ignored.

    Examples:
    • python-mako
    • python-jinja2 | python (>= 2.6)
    • python-sqlalchemy (>= 0.5), python-sqlalchemy (<< 0.6)

    PEP386

    Standards flag: upstream uses versioning schema described in PEP 386.

    RULES

    Rules needed to translate upstream version to Debian one. If PEP386 is set, its rules will be applied later. Multiple rules are allowed, separate them with a space.

    Examples:
    • s/^/2:/
    • s/alpha/~alpha/ s/^/1:/

    Notes:

    You can use multiple lines if binary package provides more than one Python distribution or if you want to specify different dependencies for each Python version or version range.

    If you use dh_python2, it will install debian/binary_package_name.pydist file to /usr/share/python/dist/binary_package_name automatically.

    Complete examples:

    • SQLAlchemy python-sqlalchemy (>= 0.5), python-sqlalchemy (<< 0.6)
    • Mako python-mako; PEP386
    • foo -2.5 python-oldfoo; s/^/3:/
    • foo 2.5- python-foo; PEP386
    • Bar 2.6-
    python-defaults-debian/pydist/dist_fallback0000644000000000000000000004056112057417145016347 0ustar python python setuptools python-pkg-resources wsgiref python (>= 2.5) | python-wsgiref argparse python (>= 2.7) | python-argparse pil python-imaging AddOns python-peak.util BatchModify trac-batchmodify BitTornado bittornado BitTorrent bittorrent Bitten trac-bitten-slave BytecodeAssembler python-peak.util BzrPipeline bzr-pipeline BzrTools bzrtools Calendar_and_Contacts_Server calendarserver CedarBackup2 cedar-backup2 CherryPy python-cherrypy3 CherryTree cherrytree ClusterShell clustershell Codeville codeville ControlAula controlaula CoverageTestRunner python-coverage-test-runner DITrack ditrack DebTorrent debtorrent DecoratorTools python-peak.util.decorators DiaVisViewPlugin trac-diavisview Djapian python-django-djapian Doconce doconce Dosage dosage DouF00 douf00 Editra editra Extremes python-peak.util Fabric fabric FeinCMS python-django-feincms Flask_WTF python-flaskext.wtf GaussSum gausssum GeoIP_Python python-geoip GitPython python-git HarvestMan harvestman ISO8583_Module python-iso8583 Ibid ibid JCC jcc Loom bzr-loom MAT mat Magic_file_extensions python-magic Mirage mirage Mnemosyne mnemosyne Model_Builder model-builder MySQL_python python-mysqldb Nautilus_scripts_manager nautilus-scripts-manager Nulog nulog OdtExportPlugin trac-odtexport PEAK_Rules python-peak.rules PIDA pida Photon photon Plywood plywood Postr postr PreludeEasy python-prelude PsychoPy psychopy Pwman3 pwman3 PyAIML python-aiml PyBluez python-bluez PyCAPTCHA python-captcha PyCoCuMa pycocuma PyFFTW3 python-fftw PyHamcrest python-hamcrest PyMca pymca PyMetrics pymetrics PyNAST pynast PyOpenGL python-opengl PyProtocols python-protocols PyRoom pyroom PySFML python-sfml PyStemmer python-stemmer PyWavelets python-pywt PyWebDAV python-webdav PyYAML python-yaml Py_ python-py++ Pygmy pygmy Pymacs pymacs Pyste libboost-python1.49-dev PythonDaap python-daap QuantLib_Python quantlib-python Quixote python-quixote1 Ren_Py python-renpy Roadmap_Plugin trac-roadmap RunSnakeRun runsnakerun ScientificPython python-scientific Shinken shinken-core Sonata sonata South python-django-south SymbolType python-peak.util Symbolic python-swiginac TcosConfigurator tcos-configurator The_FreeSmartphone_Framework_Daemon fso-frameworkd TileCache tilecache TileStache tilestache Trac trac TracAccountManager trac-accountmanager TracAnnouncer trac-announcer TracAuthOpenId trac-authopenid TracBzr trac-bzr TracCustomFieldAdmin trac-customfieldadmin TracDateField trac-datefieldplugin TracGit trac-git TracHTTPAuth trac-httpauth TracMasterTickets trac-mastertickets TracMercurial trac-mercurial TracPrivateTickets trac-privatetickets TracSpamFilter trac-spamfilter TracSubTicketsPlugin trac-subtickets TracTags trac-tags TracVirtualTicketPermissions trac-virtualticketpermissions TracWikiPrintPlugin trac-wikiprint TracWysiwyg trac-wysiwyg TracXMLRPC trac-xmlrpc Trac_jsGantt trac-jsgantt Turtle_Art turtleart UNKNOWN python-pdfrw UnknownHorizons unknown-horizons VirtualMailManager vmm WikiTableMacro trac-wikitablemacro Wikkid wikkid WordPress_Library python-wordpresslib X_Tile x-tile ZODB3 python-zodb _tifffile tifffile activity_log_manager activity-log-manager adns_python python-adns agtl agtl alembic alembic allmydata_tahoe tahoe-lafs apache_libcloud python-libcloud apparmor apparmor-utils apt_clone apt-clone apt_p2p apt-p2p apt_xapian_index apt-xapian-index aptfs aptfs aptoncd aptoncd arandr arandr archivemail archivemail archmage archmage arista arista atheist atheist autokey autokey-common beautifulsoup4 python-bs4 bicyclerepair bicyclerepair bley bley bookletimposer bookletimposer bpython bpython buildbot buildbot buildbot_slave buildbot-slave burn burn bzr python-bzrlib bzr_builddeb bzr-builddeb bzr_cia cia-clients bzr_cvsps_import bzr-cvsps-import bzr_dbus bzr-dbus bzr_email bzr-email bzr_etckeeper etckeeper bzr_fastimport bzr-fastimport bzr_git bzr-git bzr_grep bzr-grep bzr_gtk bzr-gtk bzr_rewrite bzr-rewrite bzr_search bzr-search bzr_stats bzr-stats bzr_svn bzr-svn bzr_upload bzr-upload bzr_xmloutput bzr-xmloutput cappuccino cappuccino carbon graphite-carbon cardstories cardstories cfget cfget chirp chirp chm2pdf chm2pdf cm config-manager cmdtest cmdtest cpuset cpuset cvs2svn cvs2svn d_feet d-feet d_rats d-rats datapm datapm dblatex dblatex dctrl2xml dctrl2xml debpartial_mirror debpartial-mirror deluge deluge-common devscripts devscripts dicompyler dicompyler dissy dissy djagios djagios django_ajax_selects django-ajax-selects django_filter django-filter django_openid_auth python-django-auth-openid django_tables2 django-tables django_tastypie python-tastypie djextdirect python-django-extdirect dkimpy python-dkim dot2tex dot2tex driconf driconf dtrx dtrx duplicity duplicity dvcs_autosync dvcs-autosync eficas eficas elisa python-moovida elisa_plugin_amazon moovida-plugins-bad elisa_plugin_amp moovida-plugins-bad elisa_plugin_avahi moovida-plugins-bad elisa_plugin_base moovida-plugins-good elisa_plugin_coherence moovida-plugins-bad elisa_plugin_daap moovida-plugins-bad elisa_plugin_database moovida-plugins-bad elisa_plugin_discogs moovida-plugins-bad elisa_plugin_dvd moovida-plugins-bad elisa_plugin_elisa_updater moovida-plugins-bad elisa_plugin_filtered_shares moovida-plugins-bad elisa_plugin_flickr moovida-plugins-ugly elisa_plugin_gnome moovida-plugins-good elisa_plugin_gstreamer moovida-plugins-bad elisa_plugin_hal moovida-plugins-good elisa_plugin_http_client moovida-plugins-bad elisa_plugin_ipod moovida-plugins-bad elisa_plugin_lastfm moovida-plugins-bad elisa_plugin_lirc moovida-plugins-ugly elisa_plugin_osso moovida-plugins-bad elisa_plugin_pigment moovida-plugins-bad elisa_plugin_poblesec moovida-plugins-bad elisa_plugin_rss moovida-plugins-bad elisa_plugin_search moovida-plugins-bad elisa_plugin_shoutcast moovida-plugins-ugly elisa_plugin_smbwin32 moovida-plugins-bad elisa_plugin_themoviedb moovida-plugins-bad elisa_plugin_thetvdb moovida-plugins-bad elisa_plugin_winremote moovida-plugins-bad elisa_plugin_winscreensaver moovida-plugins-good elisa_plugin_wmd moovida-plugins-bad elisa_plugin_youtube moovida-plugins-ugly epigrass epigrass epoptes epoptes espeak_gui espeak-gui euca2ools euca2ools explorer bzr-explorer flashbake flashbake flickrfs flickrfs fontypython fontypython frescobaldi frescobaldi fts fts fts_clacks fts-clacks fts_fai fts-fai-ldap fts_ltsp fts-ltsp-ldap fts_opsi fts-opsi funkload funkload fuse_python python-fuse fusil fusil fuss_launcher fuss-launcher galternatives galternatives gameclock gameclock gaphor gaphor gastablesgui gastables gbp git-buildpackage gdevilspie gdevilspie gdmodule python-gd genbackupdata genbackupdata getmail getmail4 geximon geximon git_review git-review github_cli github-cli giws giws gjots2 gjots2 glipper glipper globs globs glue glue-sprite gmobilemedia gmobilemedia gnome_activity_journal gnome-activity-journal gnome_app_install gnome-codec-install gnomecatalog gnomecatalog gnuplot_py python-gnuplot go2 go2 gozerbot gozerbot gozerplugs gozerbot-plugins gpodder gpodder gquilt gquilt graphviz trac-graphviz gunicorn gunicorn gvb gvb gwrite gwrite gyp gyp hgnested mercurial-nested hgsvn hgsvn hitchhhiker hitchhiker hotwire hotwire httpcode httpcode httpie httpie hyde hyde ibus_tegaki ibus-tegaki icalview trac-icalviewplugin identicurse identicurse imposm.parser python-imposm-parser iotop iotop ipython ipython isoquery isoquery jack jack jsb jsonbot juju juju kedpm kedpm keepnote keepnote key_mon key-mon keymapper keymapper kiki kiki lastfmsubmitd lastfmsubmitd lazygal lazygal legit legit libtpclient_py python-tp-client libtpproto_py python-tp-netlib lio lio-utils llnl_babel python-sidl llnl_babel_sidl_sidlx python-sidl loggerhead loggerhead londonlaw londonlaw lptools lptools lshell lshell ludev_t ludevit lybniz lybniz mayavi mayavi2 mcomix mcomix mecab_python python-mecab mercurial mercurial-common mic mic2 mimms mimms mingc python-ming mini_dinstall mini-dinstall miro miro mitmproxy mitmproxy mod_python libapache2-mod-python moin python-moinmoin moosic moosic mozilla_devscripts mozilla-devscripts mpDris mpdris museek_python_bindings python-museek musiclibrarian musiclibrarian mysql_utilities mysql-utilities nautilus_pastebin nautilus-pastebin neso tryton-neso netsnmp_python libsnmp-python nfoview nfoview nglister nglister nml nml nsscache nsscache nxt_python python-nxt obMenu obmenu obnam obnam oboinus oboinus offlineimap offlineimap oidua oidua ooo2dbk ooo2dbk ooolib_python python-ooolib openbmap_logger openbmap-logger openoffice_python python-openoffice openshot openshot openstack.common python-openstack-common osc osc pYsearch python-yahoo pbundler pbundler pdfposter pdfposter pdfshuffler pdfshuffler pep8 pep8 perroquet perroquet pgxnclient pgxnclient photofilmstrip photofilmstrip pithos pithos pkpgcounter pkpgcounter playitslowly playitslowly pondus pondus prelude_correlator prelude-correlator prelude_notify prelude-notify preprocess preprocess presage_dbus_service presage-dbus prewikka prewikka prioritized_methods python-peak.rules proteus tryton-proteus prover9_mace4 prover9-mace4 pssh pssh ptex2tex ptex2tex puddletag puddletag purity_ng purity-ng pyExcelerator python-excelerator pyFAI pyfai pyLibravatar python-libravatar pyOpenSSL python-openssl pyPortMidi python-pypm py_Asterisk python-asterisk py_pypcap python-pypcap py_rrdtool python-rrdtool py_sendfile python-sendfile pyacidobasic python-acidobasic pyacoustid python-acoustid pyalsaaudio python-alsaaudio pybloom python-bloomfilter pybridge pybridge pybtex pybtex pybugz bugz pychecker pychecker pychess pychess pychm python-chm pycrypto python-crypto pydicom python-dicom pydns python-dns pyenchant python-enchant pyepr python-epr pyfacebook python-facebook pyflakes pyflakes pygdchart python-gdchart2 pygopherd pygopherd pygpgme python-gpgme pygpiv python-gpiv pygrib python-grib pyliblo python-liblo pyliblzma python-lzma pylibpcap python-libpcap pylint pylint pylogsparser python-logsparser pymecavideo python-mecavideo pymilter python-milter pymol pymol pymucipher python-museek pymvpa python-mvpa pymvpa2 python-mvpa2 pyneighborhood pyneighborhood pynids python-nids pynifti python-nifti pyogg python-ogg pyp pyp pyparallel python-parallel pyppd pyppd pyprompter pyprompter pyremctl python-remctl pyrit pyrit pyrite_publisher pyrite-publisher pysane python-imaging-sane pysatellites python-satellites pyserial python-serial pysnmp python-pysnmp4 pysnmp_apps python-pysnmp4-apps pysnmp_mibs python-pysnmp4-mibs pysparse python-sparse pyspf python-spf pyspi python-at-spi pysqlite python-pysqlite1.1 pystatgrab python-statgrab pysubnettree python-subnettree pysurfer python-surfer pytagsfs pytagsfs pytcpwrap python-tcpwrap python2_biggles python-pybiggles python_djvulibre python-djvu python_e_dbus python-edbus python_graph_core python-pygraph python_graph_dot python-pygraph python_libgearman python-gearman.libgearman python_libpisock python-pisock python_logging_extra python-loggingx python_memcached python-memcache python_policyd_spf postfix-policyd-spf-python python_yapps yapps2 pythontracer pythontracer pytidylib python-tidylib pytimechart pytimechart pytrainer pytrainer pytz python-tz pyusb python-usb pyweblib python-weblib pyxdg python-xdg pyzmq python-zmq pyzor pyzor qbzr qbzr qct qct qmtest qmtest qpid_python python-qpid qpid_qmf python-qpid-extras-qmf qpid_tools qpid-tools quisk quisk quodlibet exfalso qweborf qweborf rabbitvcs rabbitvcs-core radiotray radiotray ranger ranger rapid_spring rapid-spring rawdog rawdog rdiff_backup rdiff-backup rebuildd rebuildd recaptcha_client python-recaptcha relational_gui relational relational_pyside relational relational_readline relational-cli remuco remuco-base repoze.what.plugins.sql python-repoze.what-plugins repoze.what.plugins.xml python-repoze.what-plugins repoze.what_pylons python-repoze.what-plugins repoze.what_quickstart python-repoze.what-plugins repoze.who.plugins.ldap python-repoze.who-plugins repoze.who.plugins.openid python-repoze.who-plugins repoze.who.plugins.sa python-repoze.who-plugins repoze.who_friendlyform python-repoze.who-plugins repoze.who_testutil python-repoze.who-plugins roundup roundup rpl rpl rst2pdf rst2pdf rubber rubber salt salt-common scikit_learn python-sklearn scikits_image python-skimage screenlets screenlets seivot seivot sensitivetickets trac-sensitivetickets servefile servefile shedskin shedskin slapos.core slapos-client slimit slimit smart python-smartpm snimpy snimpy spambayes spambayes spectacle spectacle specto specto sphinxcontrib_actdiag python-sphinxcontrib.actdiag sphinxcontrib_blockdiag python-sphinxcontrib.blockdiag sphinxcontrib_issuetracker python-sphinxcontrib.issuetracker sphinxcontrib_nwdiag python-sphinxcontrib.nwdiag sphinxcontrib_seqdiag python-sphinxcontrib.seqdiag sphinxcontrib_spelling python-sphinxcontrib.spelling spyder python-spyderlib sqlalchemy_migrate python-migrate startupmanager startupmanager stgit stgit summain summain supervisor supervisor supybot supybot svnmailer svnmailer synaptiks kde-config-touchpad tailor tailor targetcli targetcli tcm lio-utils tcosconfig tcosconfig tegaki_pygtk python-tegaki-gtk tegaki_python python-tegaki tegaki_tools python-tegakitools tegaki_train tegaki-train tgext.crud python-tgext.admin tilelite tilelite tinyeartrainer tinyeartrainer tortoisehg tortoisehg transifex_client transifex-client translate_toolkit translate-toolkit trash_cli trash-cli trimage trimage tritium tritium tryton tryton-client trytond tryton-server trytond_account tryton-modules-account trytond_account_be tryton-modules-account-be trytond_account_de_skr03 tryton-modules-account-de-skr03 trytond_account_invoice tryton-modules-account-invoice trytond_account_invoice_history tryton-modules-account-invoice-history trytond_account_invoice_line_standalone tryton-modules-account-invoice-line-standalone trytond_account_product tryton-modules-account-product trytond_account_statement tryton-modules-account-statement trytond_analytic_account tryton-modules-analytic-account trytond_analytic_invoice tryton-modules-analytic-invoice trytond_analytic_purchase tryton-modules-analytic-purchase trytond_analytic_sale tryton-modules-analytic-sale trytond_calendar tryton-modules-calendar trytond_calendar_classification tryton-modules-calendar-classification trytond_calendar_scheduling tryton-modules-calendar-scheduling trytond_calendar_todo tryton-modules-calendar-todo trytond_company tryton-modules-company trytond_company_work_time tryton-modules-company-work-time trytond_country tryton-modules-country trytond_currency tryton-modules-currency trytond_dashboard tryton-modules-dashboard trytond_google_maps tryton-modules-google-maps trytond_ldap_authentication tryton-modules-ldap-authentication trytond_ldap_connection tryton-modules-ldap-connection trytond_party tryton-modules-party trytond_party_siret tryton-modules-party-siret trytond_party_vcarddav tryton-modules-party-vcarddav trytond_product tryton-modules-product trytond_product_cost_fifo tryton-modules-product-cost-fifo trytond_product_cost_history tryton-modules-product-cost-history trytond_product_price_list tryton-modules-product-price-list trytond_project tryton-modules-project trytond_project_plan tryton-modules-project-plan trytond_project_revenue tryton-modules-project-revenue trytond_purchase tryton-modules-purchase trytond_purchase_invoice_line_standalone tryton-modules-purchase-invoice-line-standalone trytond_sale tryton-modules-sale trytond_sale_opportunity tryton-modules-sale-opportunity trytond_sale_price_list tryton-modules-sale-price-list trytond_stock tryton-modules-stock trytond_stock_forecast tryton-modules-stock-forecast trytond_stock_inventory_location tryton-modules-stock-inventory-location trytond_stock_location_sequence tryton-modules-stock-location-sequence trytond_stock_product_location tryton-modules-stock-product-location trytond_stock_supply tryton-modules-stock-supply trytond_stock_supply_day tryton-modules-stock-supply-day trytond_timesheet tryton-modules-timesheet ttb ttb turpial turpial tw.forms python-toscawidgets txLibravatar python-twisted-libravatar ubuntu_dev_tools ubuntu-dev-tools ufw ufw unattended_upgrades unattended-upgrades unittest_xml_reporting python-xmlrunner urlscan urlscan vamos undertaker vboxapi virtualbox virtaal virtaal virtinst virtinst virtualbricks virtualbricks virtualenvwrapper virtualenvwrapper wammu wammu web.py python-webpy weboob python-weboob-core whyteboard whyteboard wikipediafs wikipediafs winpdb winpdb wxPython_common python-wxgtk2.8 wxgeometrie wxgeometrie xgflib xgridfit xml_marshaller python-xmlmarshaller xmldiff xmldiff xmms2tray xmms2tray yagtd yagtd yokadi yokadi yum_metadata_parser python-sqlitecachec zenmap zenmap zeroinstall_injector zeroinstall-injector zim zim zinnia_python python-zinnia python-defaults-debian/pydist/generate_fallback_list.py0000755000000000000000000000605212057417145020660 0ustar #! /usr/bin/python # -*- coding: UTF-8 -*- # Copyright © 2010 Piotr Ożarowski # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import os import sys from subprocess import Popen, PIPE skip_sensible_names = True if '--skip-sensible-names' in sys.argv else False os.chdir(os.path.dirname(__file__)) if os.path.isdir('../debpython'): sys.path.append('..') else: sys.path.append('/usr/share/python/debpython/') from debpython.pydist import sensible_pname if not os.path.isdir('cache'): process = Popen('apt-file -s sources.list -c cache update', shell=True) process.communicate() if process.returncode != 0: sys.stderr.write('Cannot download APT data files') exit(1) # find .egg-info files/directories process = Popen('apt-file -s sources.list -c cache find -x ' '"/usr/((share/pyshared)|(lib/python2\.[0-9]/((site)|(dist))-packages)|(share/python-support/[^/]+))/[^/]*\.egg-info"', shell=True, stdout=PIPE) stdout, stderr = process.communicate() if process.returncode != 0: sys.stderr.write('Cannot find packages with Egg metadata') exit(2) processed = set() result = [] for line in stdout.splitlines(): pname, path = line.split(': ', 1) if pname == 'python-setuptools': continue egg_name = [i.split('-', 1)[0] for i in path.split('/')\ if i.endswith('.egg-info')][0] if egg_name.endswith('.egg'): egg_name = egg_name[:-4] if skip_sensible_names and sensible_pname(egg_name) == pname: continue if egg_name not in processed: processed.add(egg_name) result.append("%s %s\n" % (egg_name, pname)) #result.append("%s %s\t%s\n" % (egg_name, pname, path)) result.sort() fp = open('dist_fallback', 'w') fp.write('python python\n') fp.write('setuptools python-pkg-resources\n') fp.write('wsgiref python (>= 2.5) | python-wsgiref\n') fp.write('argparse python (>= 2.7) | python-argparse\n') # wasn't recognized due to .pth file (egg-info is in PIL/ and not in *-packages/) fp.write('pil python-imaging\n') fp.writelines(result) python-defaults-debian/pydist/sources.list0000644000000000000000000000014412057417145016213 0ustar deb http://ftp.debian.org/debian/ unstable main deb-src http://ftp.debian.org/debian/ unstable main python-defaults-debian/python2.pm0000644000000000000000000000034712057417145014265 0ustar #! /usr/bin/perl # debhelper sequence file for dh_python2 use warnings; use strict; use Debian::Debhelper::Dh_Lib; insert_before("dh_installinit", "dh_python2"); remove_command("dh_pycentral"); remove_command("dh_pysupport"); 1 python-defaults-debian/runtime.d/0000755000000000000000000000000012057417145014225 5ustar python-defaults-debian/runtime.d/public_modules.rtinstall0000755000000000000000000000056712057417145021204 0ustar #! /bin/sh set -e VERSION=${2#python} case "$VERSION" in 2.[45]) sitedir=/usr/lib/python$VERSION/site-packages;; *) sitedir=/usr/lib/python$VERSION/dist-packages esac if which python >/dev/null 2>&1 && which pycompile >/dev/null 2>&1; then pycompile -V $VERSION $sitedir else echo >&2 "python or pycompile not found in $(basename $0) hook." exit 1 fi python-defaults-debian/runtime.d/public_modules.rtremove0000755000000000000000000000047412057417145021030 0ustar #! /bin/sh set -e VERSION=${2#python} case "$VERSION" in 2.[45]) sitedir=/usr/lib/python$VERSION/site-packages;; *) sitedir=/usr/lib/python$VERSION/dist-packages esac if which python >/dev/null 2>&1 && which pyclean >/dev/null 2>&1; then pyclean $sitedir else find $sitedir -name '*.py[co]' -delete fi python-defaults-debian/tests/0000755000000000000000000000000012254623031013452 5ustar python-defaults-debian/tests/Makefile0000644000000000000000000000054212057417145015123 0ustar #!/usr/bin/make -f # enable or disable tests here: TESTS := test1 test2 test3 test4 test5 test6 test7 all: $(TESTS) test%: make -C t$* run make -C t$* check clean-test%: make -C t$* clean clean: $(TESTS:%=clean-%) rm -f *\.dsc *\.tar\.gz *\.build *\.changes *\.deb @find . -prune -name '*.egg-info' -exec rm -rf '{}' ';' || true .PHONY: clean python-defaults-debian/tests/common.mk0000644000000000000000000000057212254623031015277 0ustar #!/usr/bin/make -f export DEBPYTHON_DEFAULT ?= $(shell sed -rne 's,^default-version = python(.*),\1,p' ../../debian/debian_defaults) export DEBPYTHON_SUPPORTED ?= $(shell sed -rne '/^supported-versions/{s/^supported-versions = (.*)/\1/g;s/python//gp}' ../../debian/debian_defaults) all: run check run: clean dpkg-buildpackage -b -us -uc clean-common: ./debian/rules clean python-defaults-debian/tests/t1/0000755000000000000000000000000012254623031013776 5ustar python-defaults-debian/tests/t1/Makefile0000644000000000000000000000133512254623031015440 0ustar #!/usr/bin/make -f include ../common.mk DPY=$(DEBPYTHON_DEFAULT) check: grep -q "Depends: .*python-mako" debian/python-foo/DEBIAN/control grep -q 'python-foo (>= 2:0.1~rc2)' debian/python-foo/DEBIAN/control ifneq (,$(findstring 2.6,$(DEBPYTHON_SUPPORTED))) test -f debian/python-foo/usr/lib/python2.6/dist-packages/foo/__init__.py endif test ! -f debian/python-foo/usr/lib/python2.6/dist-packages/foo/spam.py grep -q "Depends: .*python (<<" debian/python-foo/DEBIAN/control [ "`readlink debian/python-foo/usr/lib/python$(DPY)/dist-packages/foo/absolute_link_to_tmp`" = "/tmp" ] [ "`readlink debian/python-foo/usr/lib/python$(DPY)/dist-packages/foo/link_to_parent_dir`" = ".." ] clean: clean-common rm -rf lib/Foo.egg-info python-defaults-debian/tests/t1/debian/0000755000000000000000000000000012057417145015230 5ustar python-defaults-debian/tests/t1/debian/changelog0000644000000000000000000000020112057417145017073 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sat, 27 Feb 2010 20:42:17 +0100 python-defaults-debian/tests/t1/debian/compat0000644000000000000000000000000212057417145016426 0ustar 7 python-defaults-debian/tests/t1/debian/control0000644000000000000000000000103612057417145016633 0ustar Source: foo Section: python Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python-all Standards-Version: 3.9.0 XS-Python-Version: >= 2.4 Package: python-foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Recommends: ${python:Recommends} Suggests: ${python:Suggests} Enhances: ${python:Enhances} Breaks: foo, ${python:Breaks} Provides: ${python:Provides} XB-Python-Version: ${python:Versions} Description: foo to rule them all exemple package #1 python-defaults-debian/tests/t1/debian/copyright0000644000000000000000000000015412057417145017163 0ustar The Debian packaging is © 2010, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t1/debian/pydist-overrides0000644000000000000000000000016212057417145020466 0ustar Mako python-mako (>= 0.2) SQLAlchemy python-sqlalchemy (>= 0.6) Foo python-foo; PEP386 s/^/2:/ Bar python-bar Baz python-defaults-debian/tests/t1/debian/python-foo.pyinstall0000644000000000000000000000003012057417145021264 0ustar debian/spam.py foo 2.5- python-defaults-debian/tests/t1/debian/python-foo.pyremove0000644000000000000000000000003512057417145021120 0ustar foo/spam.py 2.6 foo/bar 2.7- python-defaults-debian/tests/t1/debian/rules0000755000000000000000000000074012057417145016311 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_pysupport: find debian/ -name jquery.js -exec \ ln -fs /usr/share/javascript/jquery/jquery.js '{}' \; find debian/ -name foo -type d -exec \ ln -s /tmp/ '{}/absolute_link_to_tmp' \; find debian/ -name foo -type d -exec \ ln -s .. '{}/link_to_parent_dir' \; DH_VERBOSE=1 ../../dh_python2\ --depends 'SQLAlchemy >= 0.6.1'\ --recommends Mako\ --suggests 'Foo >= 0.1rc2'\ --suggests 'bar >= 1.0' python-defaults-debian/tests/t1/debian/source/0000755000000000000000000000000012057417145016530 5ustar python-defaults-debian/tests/t1/debian/source/format0000644000000000000000000000001512057417145017737 0ustar 3.0 (native) python-defaults-debian/tests/t1/debian/spam.py0000644000000000000000000000001512057417145016536 0ustar print 'SPAM' python-defaults-debian/tests/t1/lib/0000755000000000000000000000000012057417145014554 5ustar python-defaults-debian/tests/t1/lib/foo/0000755000000000000000000000000012057417145015337 5ustar python-defaults-debian/tests/t1/lib/foo/__init__.py0000644000000000000000000000006212057417145017446 0ustar print("you just imported foo from %s" % __file__) python-defaults-debian/tests/t1/lib/foo/bar/0000755000000000000000000000000012057417145016103 5ustar python-defaults-debian/tests/t1/lib/foo/bar/__init__.py0000644000000000000000000000006612057417145020216 0ustar print("you just imported foo.bar from %s" % __file__) python-defaults-debian/tests/t1/lib/foo/baz.py0000644000000000000000000000006612057417145016467 0ustar print("you just imported foo.baz from %s" % __file__) python-defaults-debian/tests/t1/lib/foo/jquery.js0000777000000000000000000000000012057417145026545 2/usr/share/javascript/jquery/jquery.jsustar python-defaults-debian/tests/t1/setup.py0000644000000000000000000000113612057417145015521 0ustar #! /usr/bin/python # -*- coding: UTF-8 -*- try: from setuptools import setup, find_packages except ImportError: exit() setup(name='Foo', version=0.1, description="Foo to rule them all", long_description="TODO", keywords='foo bar baz', author='Piotr Ożarowski', author_email='piotr@debian.org', url='http://www.debian.org/', license='MIT', package_dir={'': 'lib'}, packages=find_packages('lib/'), package_data = {'foo': ['jquery.js']}, zip_safe=False, install_requires = ['Mako', 'SQLAlchemy >=0.5', 'Baz [extras]'], ) python-defaults-debian/tests/t2/0000755000000000000000000000000012254623031013777 5ustar python-defaults-debian/tests/t2/Makefile0000644000000000000000000000052112254623031015435 0ustar #!/usr/bin/make -f include ../common.mk DPY=$(DEBPYTHON_DEFAULT) clean: clean-common check: test -f debian/python-foo/usr/lib/python$(DPY)/dist-packages/foo.py test -f debian/python-foo/usr/lib/python$(DPY)/dist-packages/bar/bar.py grep -q pycompile debian/python-foo/DEBIAN/postinst grep -q pyclean debian/python-foo/DEBIAN/prerm python-defaults-debian/tests/t2/__init__.py0000644000000000000000000000003112057417145016112 0ustar print("I'm __init__.py") python-defaults-debian/tests/t2/bar.py0000644000000000000000000000002112057417145015116 0ustar print("I'm bar") python-defaults-debian/tests/t2/debian/0000755000000000000000000000000012057417145015231 5ustar python-defaults-debian/tests/t2/debian/changelog0000644000000000000000000000020112057417145017074 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sat, 27 Feb 2010 20:42:17 +0100 python-defaults-debian/tests/t2/debian/compat0000644000000000000000000000000212057417145016427 0ustar 7 python-defaults-debian/tests/t2/debian/control0000644000000000000000000000072512057417145016640 0ustar Source: foo Section: python Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python-all Standards-Version: 3.9.1 XS-Python-Version: >= 2.1 Package: python-foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Recommends: ${python:Recommends} Suggests: ${python:Suggests} Enhances: ${python:Enhances} Breaks: ${python:Breaks} Description: foo to rule them all exemple package #2 python-defaults-debian/tests/t2/debian/copyright0000644000000000000000000000015412057417145017164 0ustar The Debian packaging is © 2010, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t2/debian/install0000644000000000000000000000014112057417145016616 0ustar foo.py /usr/share/pyshared/ __init__.py /usr/share/pyshared/bar/ bar.py /usr/share/pyshared/bar/ python-defaults-debian/tests/t2/debian/rules0000755000000000000000000000020512057417145016306 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_pysupport: DH_VERBOSE=1 ../../dh_python2 clean: dh_clean python-defaults-debian/tests/t2/debian/source/0000755000000000000000000000000012057417145016531 5ustar python-defaults-debian/tests/t2/debian/source/format0000644000000000000000000000001512057417145017740 0ustar 3.0 (native) python-defaults-debian/tests/t2/foo.py0000644000000000000000000000002112057417145015135 0ustar print("I'm foo") python-defaults-debian/tests/t2/setup.py0000644000000000000000000000000012057417145015507 0ustar python-defaults-debian/tests/t3/0000755000000000000000000000000012057417145014010 5ustar python-defaults-debian/tests/t3/Makefile0000644000000000000000000000204312057417145015447 0ustar #!/usr/bin/make -f include ../common.mk DPY=$(DEBPYTHON_DEFAULT) check: grep -q "pycompile -p python-foo /usr/lib/python-foo -V $(DPY)"\ debian/python-foo/DEBIAN/postinst test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so test ! -f debian/python-foo/usr/share/pyshared/foo/bar.so test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/spam.so test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/spam.so.0.1 test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1 test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1.2 test -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0 test ! -L debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0 test ! -f debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 clean: clean-common rm -rf lib/Foo.egg-info build python-defaults-debian/tests/t3/debian/0000755000000000000000000000000012057417145015232 5ustar python-defaults-debian/tests/t3/debian/changelog0000644000000000000000000000020112057417145017075 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sun, 19 Dec 2010 19:40:33 +0100 python-defaults-debian/tests/t3/debian/compat0000644000000000000000000000000212057417145016430 0ustar 7 python-defaults-debian/tests/t3/debian/control0000644000000000000000000000105512057417145016636 0ustar Source: foo Section: python Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~), python-all-dev Standards-Version: 3.9.1 X-Python-Version: >= 2.6 Package: python-foo Architecture: any Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends} Recommends: ${python:Recommends} Suggests: ${python:Suggests} Enhances: ${python:Enhances} Breaks: ${python:Breaks} Provides: ${python:Provides} XB-Python-Version: ${python:Versions} Description: foo to rule them all exemple package #3 - Python extension python-defaults-debian/tests/t3/debian/copyright0000644000000000000000000000015412057417145017165 0ustar The Debian packaging is © 2010, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t3/debian/install0000644000000000000000000000011712057417145016622 0ustar # private module in architecture dependent dir lib/foo.py /usr/lib/python-foo/ python-defaults-debian/tests/t3/debian/rules0000755000000000000000000000275112057417145016317 0ustar #!/usr/bin/make -f DPY=$(shell PYTHONPATH=../../ python -c 'import debpython.version as v; print(v.vrepr(v.DEFAULT))') %: dh $@ --buildsystem=python_distutils override_dh_pysupport: # install also as private extension dh_install debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \ /usr/lib/python-foo/ # ... and under versioned name with a symlink cp debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \ debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/spam.so.0 dh_link /usr/lib/python${DPY}/dist-packages/foo/spam.so.0 \ /usr/lib/python${DPY}/dist-packages/foo/spam.so # ... and with multiple symlinks cp debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \ debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1.2 dh_link /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1.2 \ /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1 dh_link /usr/lib/python${DPY}/dist-packages/foo/baz.so.0.1 \ /usr/lib/python${DPY}/dist-packages/foo/baz.so # ... second style of multiple symlinks cp debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/bar.so \ debian/python-foo/usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \ /usr/lib/python${DPY}/dist-packages/foo/quux.so.0 dh_link /usr/lib/python${DPY}/dist-packages/foo/quux.so.0.0.0 \ /usr/lib/python${DPY}/dist-packages/foo/quux.so # ... and complex multiple symlinks DH_VERBOSE=1 ../../dh_python2 python-defaults-debian/tests/t3/debian/source/0000755000000000000000000000000012057417145016532 5ustar python-defaults-debian/tests/t3/debian/source/format0000644000000000000000000000001512057417145017741 0ustar 3.0 (native) python-defaults-debian/tests/t3/lib/0000755000000000000000000000000012057417145014556 5ustar python-defaults-debian/tests/t3/lib/__init__.py0000644000000000000000000000000012057417145016655 0ustar python-defaults-debian/tests/t3/lib/bar.c0000644000000000000000000000000012057417145015454 0ustar python-defaults-debian/tests/t3/lib/foo.py0000644000000000000000000000011012057417145015703 0ustar import foo.bar class Foo(object): def __init__(self): pass python-defaults-debian/tests/t3/setup.py0000755000000000000000000000061312057417145015525 0ustar #!/usr/bin/env python from distutils.core import setup, Extension setup(name="distutils-test", version = "0.1", author="jbailey", author_email="jbailey@debian.org", url="http://www.python.org/sigs/distutils-sig/", ext_modules=[Extension('foo/bar', ['lib/bar.c'])], #py_modules=['package'], packages = ["foo"], package_dir = {'foo': 'lib'} ) python-defaults-debian/tests/t4/0000755000000000000000000000000012254623031014001 5ustar python-defaults-debian/tests/t4/Makefile0000644000000000000000000000077112254623031015446 0ustar #!/usr/bin/make -f include ../common.mk clean: clean-common check: grep -q python2.6 debian/foo/usr/share/foo/foo.py ifneq (,$(findstring 2.6,$(DEBPYTHON_SUPPORTED))) grep -q Depends:.*python2.6 debian/foo/DEBIAN/control endif #grep -q python2.5 debian/foo/usr/share/bar/bar.py #grep -q Depends:.*python2.5 debian/foo/DEBIAN/control grep -q python2.4 debian/foo/usr/share/foo/baz.py test ! -x debian/foo/usr/share/foo/baz.py grep -q Depends:.*python2.4 debian/foo/DEBIAN/control && false || true python-defaults-debian/tests/t4/bar.py0000755000000000000000000000004612057417145015132 0ustar #!/usr/bin/python2.5 print("I'm bar") python-defaults-debian/tests/t4/baz.py0000644000000000000000000000006712057417145015142 0ustar #!/usr/bin/python2.4 print("I'm baz - not executable") python-defaults-debian/tests/t4/debian/0000755000000000000000000000000012057417145015233 5ustar python-defaults-debian/tests/t4/debian/changelog0000644000000000000000000000020112057417145017076 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sat, 27 Feb 2010 20:42:17 +0100 python-defaults-debian/tests/t4/debian/compat0000644000000000000000000000000212057417145016431 0ustar 7 python-defaults-debian/tests/t4/debian/control0000644000000000000000000000066212057417145016642 0ustar Source: foo Section: misc Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python Standards-Version: 3.9.1 Package: foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Recommends: ${python:Recommends} Suggests: ${python:Suggests} Enhances: ${python:Enhances} Description: example 4 - private directory exemple package #4 - private directory python-defaults-debian/tests/t4/debian/copyright0000644000000000000000000000015412057417145017166 0ustar The Debian packaging is © 2011, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t4/debian/install0000644000000000000000000000010512057417145016620 0ustar foo.py /usr/share/foo/ bar.py /usr/share/bar/ baz.py /usr/share/foo/ python-defaults-debian/tests/t4/debian/rules0000755000000000000000000000026312057417145016314 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_pysupport: DH_VERBOSE=1 ../../dh_python2 DH_VERBOSE=1 ../../dh_python2 /usr/share/bar clean: dh_clean python-defaults-debian/tests/t4/debian/source/0000755000000000000000000000000012057417145016533 5ustar python-defaults-debian/tests/t4/debian/source/format0000644000000000000000000000001512057417145017742 0ustar 3.0 (native) python-defaults-debian/tests/t4/foo.py0000755000000000000000000000004612057417145015151 0ustar #!/usr/bin/python2.6 print("I'm foo") python-defaults-debian/tests/t4/setup.py0000644000000000000000000000000012057417145015511 0ustar python-defaults-debian/tests/t5/0000755000000000000000000000000012057417145014012 5ustar python-defaults-debian/tests/t5/Makefile0000644000000000000000000000261612057417145015457 0ustar #!/usr/bin/make -f include ../common.mk clean: clean-common check: # test dh_python2 test -f debian/python-foo/usr/share/pyshared/keep_this_one/__init__.py test ! -f debian/python-foo/usr/share/pyshared/remove_this_one/__init__.py test ! -f debian/python-foo/usr/share/pyshared/foo/__init__.py grep -q remove_this_one debian/python-foo/usr/share/python/ns/python-foo grep -q foo debian/python-foo/usr/share/python/ns/python-foo grep -q bar.baz debian/python-foo/usr/share/python/ns/python-foo grep -q keep_this_one debian/python-foo/usr/share/python/ns/python-foo && false || true grep -q "pycompile -p python-foo" debian/python-foo/DEBIAN/postinst grep -q "pyclean -p python-foo" debian/python-foo/DEBIAN/prerm # test pycompile DESTDIR=debian/python-foo/ ../../pycompile -v debian/python-foo/usr/lib/ set -e; for i in remove_this_one bar bar/baz;\ do [ "`ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.py | wc -l`" != '0' ];\ [ "`ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.pyc | wc -l`" != '0' ];\ done # test pyclean DESTDIR=debian/python-foo/ ../../pyclean -v debian/python-foo/usr/lib/ set -e; for i in remove_this_one bar bar/baz;\ do [ "`ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.py 2>/dev/null || true | wc -l`" = 0 ];\ [ "`ls debian/python-foo/usr/lib/python2.*/*-packages/$$i/__init__.pyc 2>/dev/null || true | wc -l`" = 0 ];\ done python-defaults-debian/tests/t5/debian/0000755000000000000000000000000012057417145015234 5ustar python-defaults-debian/tests/t5/debian/changelog0000644000000000000000000000020112057417145017077 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sun, 27 Mar 2011 21:09:27 +0200 python-defaults-debian/tests/t5/debian/compat0000644000000000000000000000000212057417145016432 0ustar 7 python-defaults-debian/tests/t5/debian/control0000644000000000000000000000070012057417145016634 0ustar Source: foo Section: python Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python Standards-Version: 3.9.1 Package: python-foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Description: example 5 - namespace feature exemple package #5 - dropping __init__.py file from binary package and recreating it at install time (and removing at in remove time) python-defaults-debian/tests/t5/debian/copyright0000644000000000000000000000015412057417145017167 0ustar The Debian packaging is © 2011, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t5/debian/dirs0000644000000000000000000000020312057417145016113 0ustar /usr/share/pyshared/bar/baz /usr/share/pyshared/foo.egg-info /usr/share/pyshared/keep_this_one /usr/share/pyshared/remove_this_one python-defaults-debian/tests/t5/debian/rules0000755000000000000000000000075012057417145016316 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_auto_build: override_dh_auto_install: set -e;\ cd debian/python-foo/usr/share/pyshared/;\ echo "keep_this_one\nremove_this_one" > foo.egg-info/namespace_packages.txt;\ echo "True" > keep_this_one/__init__.py;\ touch remove_this_one/__init__.py remove_this_one/foo.py bar/baz/spam.py override_dh_pysupport: DH_VERBOSE=1 ../../dh_python2 --namespace foo --namespace bar.baz --namespace bar clean: dh_clean python-defaults-debian/tests/t5/debian/source/0000755000000000000000000000000012057417145016534 5ustar python-defaults-debian/tests/t5/debian/source/format0000644000000000000000000000001512057417145017743 0ustar 3.0 (native) python-defaults-debian/tests/t6/0000755000000000000000000000000012254623031014003 5ustar python-defaults-debian/tests/t6/Makefile0000644000000000000000000000153412254623031015446 0ustar #!/usr/bin/make -f include ../common.mk clean: clean-common check: # python2.4 hardcoded via `dh_python2 -V 2.4` grep -q Depends:.*python2.4 debian/foo/DEBIAN/control grep -q '\-V 2.4 /usr/share/baz24' debian/foo/usr/share/python/runtime.d/foo.rtupdate grep -q '/usr/share/baz24 \-V 2.4' debian/foo/DEBIAN/postinst # python2.5 due to X-Python-Version: 2.5 grep -q Depends:.*python2.5 debian/foo/DEBIAN/control grep -q '\-V 2.5 /usr/share/bar25' debian/foo/usr/share/python/runtime.d/foo.rtupdate grep -q '/usr/share/bar25 \-V 2.5' debian/foo/DEBIAN/postinst # python2.6 hardcoded via shebang ifneq (,$(findstring 2.6,$(DEBPYTHON_SUPPORTED))) grep -q Depends:.*python2.6 debian/foo/DEBIAN/control grep -q '\-V 2.6 /usr/share/foo' debian/foo/usr/share/python/runtime.d/foo.rtupdate grep -q '/usr/share/foo \-V 2.6' debian/foo/DEBIAN/postinst endif python-defaults-debian/tests/t6/bar.py0000755000000000000000000000004312057417145015131 0ustar #!/usr/bin/python print("I'm bar") python-defaults-debian/tests/t6/baz.py0000644000000000000000000000004312057417145015136 0ustar #!/usr/bin/python print("I'm baz") python-defaults-debian/tests/t6/debian/0000755000000000000000000000000012057417145015235 5ustar python-defaults-debian/tests/t6/debian/changelog0000644000000000000000000000020112057417145017100 0ustar foo (0.1.1) unstable; urgency=low * Initial release -- Piotr Ożarowski Sat, 08 Oct 2011 17:13:03 +0200 python-defaults-debian/tests/t6/debian/compat0000644000000000000000000000000212057417145016433 0ustar 8 python-defaults-debian/tests/t6/debian/control0000644000000000000000000000116512057417145016643 0ustar Source: foo Section: misc Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python Standards-Version: 3.9.1 X-Python-Version: 2.5 Package: foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Recommends: ${python:Recommends} Suggests: ${python:Suggests} Enhances: ${python:Enhances} Description: example 6 - private directory with hardcoded Python version exemple package #6 - private directories that support: * python2.4 hardcoded via `dh_python2 -V 2.4` * python2.5 due to X-Python-Version: 2.5 * python2.6 hardcoded via shebang python-defaults-debian/tests/t6/debian/copyright0000644000000000000000000000015412057417145017170 0ustar The Debian packaging is © 2011, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t6/debian/install0000644000000000000000000000022512057417145016625 0ustar foo.py /usr/share/foo/ spam.py /usr/share/foo/ bar.py /usr/share/bar25/ spam.py /usr/share/bar25/ baz.py /usr/share/baz24/ spam.py /usr/share/baz24/ python-defaults-debian/tests/t6/debian/rules0000755000000000000000000000035412057417145016317 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_pysupport: DH_VERBOSE=1 ../../dh_python2 DH_VERBOSE=1 ../../dh_python2 /usr/share/bar25 DH_VERBOSE=1 ../../dh_python2 /usr/share/baz24 -V 2.4 clean: dh_clean python-defaults-debian/tests/t6/debian/source/0000755000000000000000000000000012057417145016535 5ustar python-defaults-debian/tests/t6/debian/source/format0000644000000000000000000000001512057417145017744 0ustar 3.0 (native) python-defaults-debian/tests/t6/foo.py0000755000000000000000000000004612057417145015153 0ustar #!/usr/bin/python2.6 print("I'm foo") python-defaults-debian/tests/t6/setup.py0000644000000000000000000000000012057417145015513 0ustar python-defaults-debian/tests/t6/spam.py0000644000000000000000000000001612057417145015322 0ustar print('spam') python-defaults-debian/tests/t7/0000755000000000000000000000000012057417145014014 5ustar python-defaults-debian/tests/t7/Makefile0000644000000000000000000000142012057417145015451 0ustar #!/usr/bin/make -f include ../common.mk clean: clean-common check: # python2.4 hardcoded via `dh_python2 -shebang ...python2.4` grep -q '\-V 2.4 /usr/share/baz24' debian/foo/usr/share/python/runtime.d/foo.rtupdate grep -q '/usr/share/baz24 \-V 2.4' debian/foo/DEBIAN/postinst grep -q '#! /usr/bin/python2.4 -OO' debian/foo/usr/share/baz24/baz.py # python2.6 hardcoded via shebang grep -q '\-V 2.6 /usr/share/foo' debian/foo/usr/share/python/runtime.d/foo.rtupdate grep -q '/usr/share/foo \-V 2.6' debian/foo/DEBIAN/postinst # /env removed from shebang grep -q '#! /usr/bin/python' debian/foo/usr/share/bar/bar.py # /local removed from shebang grep -q '#! /usr/bin/python' debian/foo/usr/share/foo/baz.py grep -q '#! /usr/bin/python2.6' debian/foo/usr/share/foo/foo.py python-defaults-debian/tests/t7/bar.py0000755000000000000000000000004712057417145015136 0ustar #!/usr/bin/env python "env in shebang" python-defaults-debian/tests/t7/baz.py0000755000000000000000000000006012057417145015141 0ustar #!/usr/local/bin/python "/usr/local in shebang" python-defaults-debian/tests/t7/debian/0000755000000000000000000000000012057417145015236 5ustar python-defaults-debian/tests/t7/debian/changelog0000644000000000000000000000017712057417145017115 0ustar foo (1.0) unstable; urgency=low * Initial release -- Piotr Ożarowski Sun, 10 Jun 2012 14:09:45 +0200 python-defaults-debian/tests/t7/debian/compat0000644000000000000000000000000212057417145016434 0ustar 8 python-defaults-debian/tests/t7/debian/control0000644000000000000000000000052212057417145016640 0ustar Source: foo Section: misc Priority: optional Maintainer: Piotr Ożarowski Build-Depends: debhelper (>= 7.0.50~) Build-Depends-Indep: python Standards-Version: 3.9.3 Package: foo Architecture: all Depends: ${python:Depends}, ${misc:Depends} Description: example 7 - shebangs exemple package #7 - shebang related tests python-defaults-debian/tests/t7/debian/copyright0000644000000000000000000000015412057417145017171 0ustar The Debian packaging is © 2012, Piotr Ożarowski and is licensed under the MIT License. python-defaults-debian/tests/t7/debian/install0000644000000000000000000000025012057417145016624 0ustar foo.py /usr/share/foo/ baz.py /usr/share/foo/ spam.py /usr/share/foo/ bar.py /usr/share/bar/ spam.py /usr/share/bar/ baz.py /usr/share/baz24/ spam.py /usr/share/baz24/ python-defaults-debian/tests/t7/debian/rules0000755000000000000000000000040612057417145016316 0ustar #!/usr/bin/make -f %: dh $@ --buildsystem=python_distutils override_dh_pysupport: DH_VERBOSE=1 ../../dh_python2 DH_VERBOSE=1 ../../dh_python2 /usr/share/bar DH_VERBOSE=1 ../../dh_python2 /usr/share/baz24 --shebang '/usr/bin/python2.4 -OO' clean: dh_clean python-defaults-debian/tests/t7/debian/source/0000755000000000000000000000000012057417145016536 5ustar python-defaults-debian/tests/t7/debian/source/format0000644000000000000000000000001512057417145017745 0ustar 3.0 (native) python-defaults-debian/tests/t7/foo.py0000755000000000000000000000011312057417145015147 0ustar #!/usr/local/bin/python2.6 "/usr/local/bin/python2.6 hardcoded in shebang" python-defaults-debian/tests/t7/setup.py0000644000000000000000000000000012057417145015514 0ustar python-defaults-debian/tests/t7/spam.py0000644000000000000000000000001612057417145015323 0ustar print('spam')