pax_global_header00006660000000000000000000000064152125441430014513gustar00rootroot0000000000000052 comment=27b2719fae168bee4eed574f7222b6b5936b459c astropy-pyvo-f0fdda3/000077500000000000000000000000001521254414300147605ustar00rootroot00000000000000astropy-pyvo-f0fdda3/.github/000077500000000000000000000000001521254414300163205ustar00rootroot00000000000000astropy-pyvo-f0fdda3/.github/dependabot.yml000066400000000000000000000011001521254414300211400ustar00rootroot00000000000000# To get started with Dependabot version updates, you'll need to specify which # package ecosystems to update and where the package manifests are located. # Please see the documentation for all configuration options: # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "monthly" groups: actions: patterns: - "*" labels: - "no-changelog-entry-needed" - "infrastructure" astropy-pyvo-f0fdda3/.github/release.yml000066400000000000000000000002051521254414300204600ustar00rootroot00000000000000changelog: exclude: authors: - dependabot - dependabot[bot] - pre-commit-ci - pre-commit-ci[bot] astropy-pyvo-f0fdda3/.github/workflows/000077500000000000000000000000001521254414300203555ustar00rootroot00000000000000astropy-pyvo-f0fdda3/.github/workflows/changelog.yml000066400000000000000000000010571521254414300230320ustar00rootroot00000000000000name: Changelog check on: pull_request: types: [labeled, unlabeled, opened, synchronize, reopened] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: changelog: name: Check changelog entry runs-on: ubuntu-latest steps: - name: Check change log entry uses: scientific-python/action-check-changelogfile@1fc669db9618167166d5a16c10282044f51805c0 # 0.3 env: CHANGELOG_FILENAME: CHANGES.rst GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CHECK_MILESTONE: false astropy-pyvo-f0fdda3/.github/workflows/ci_devtests.yml000066400000000000000000000027721521254414300234240ustar00rootroot00000000000000# This test job is separated out into its own workflow to be able to trigger separately name: CI-devtest on: push: branches: - main - 'v*' tags: - '*' pull_request: schedule: - cron: "0 3 * * 6" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: devdeps: runs-on: ubuntu-latest name: linux (3.13 py313-test-devdeps-alldeps-cov) steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Python 3.13 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.13" - name: Install tox run: python -m pip install --upgrade tox - name: Run tests against dev dependencies run: tox -e py313-test-devdeps-alldeps-cov - name: Upload coverage to codecov uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 with: file: ./coverage.xml verbose: true py314: runs-on: ubuntu-latest name: linux (3.14 py314-test) steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Python 3.14 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.14" - name: Install tox run: python -m pip install --upgrade tox - name: Run tests run: tox -e py314-test astropy-pyvo-f0fdda3/.github/workflows/ci_tests.yml000066400000000000000000000054201521254414300227160ustar00rootroot00000000000000# Developer version testing is in separate workflow name: CI on: push: branches: - main - 'v*' tags: - '*' pull_request: schedule: - cron: "0 3 * * 6" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: tests: runs-on: ubuntu-latest name: linux strategy: fail-fast: false matrix: include: - python-version: '3.10' tox_env: py310-test-oldestdeps-alldeps - python-version: '3.11' tox_env: py311-test-alldeps - python-version: '3.13' tox_env: py313-test-alldeps steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ matrix.python-version }} - name: Install tox run: python -m pip install --upgrade tox - name: Install library dependencies and run Tests run: tox -e ${{ matrix.tox_env }} mac_windows: runs-on: ${{ matrix.os }} name: ${{ matrix.os }} (3.12 py312-test-alldeps) strategy: fail-fast: false matrix: os: [macos-latest, windows-latest] steps: - name: Checkout code uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.12' - name: Install tox run: python -m pip install --upgrade tox - name: Python 3.12 with latest dependencies run: tox -e py312-test-alldeps stylecheck: runs-on: ubuntu-latest strategy: fail-fast: false steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Python 3.12 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.12' - name: Install tox run: python -m pip install --upgrade tox - name: Check codestyle run: tox -e codestyle linkcheck: if: github.event_name == 'schedule' && github.repository == 'astropy/pyvo' runs-on: ubuntu-latest strategy: fail-fast: false steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Python 3.10 uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.10' - name: Install tox run: python -m pip install --upgrade tox - name: Check docs links run: tox -e linkcheck astropy-pyvo-f0fdda3/.gitignore000066400000000000000000000013751521254414300167560ustar00rootroot00000000000000# Compiled files *.py[cod] *.a *.o *.so __pycache__ # Ignore .c files by default to avoid including generated code. If you want to # add a non-generated .c extension, use `git add -f filename.c`. *.c # Other generated files */version.py */cython_version.py htmlcov .coverage MANIFEST .ipynb_checkpoints .hypothesis *api_sample* # Sphinx docs/api docs/_build # Eclipse editor project files .project .pydevproject .settings # Pycharm editor project files .idea # Packages/installer info *.egg *.eggs *.egg-info dist build eggs parts bin var sdist develop-eggs .installed.cfg distribute-*.tar.gz pip-wheel-metadata # Other .cache .tox .*.sw[op] *~ .project .pydevproject .settings coverage.xml # Mac OSX .DS_Store # ipython .ipynb_checkpoints /.pytest_cache/ astropy-pyvo-f0fdda3/.mailmap000066400000000000000000000024461521254414300164070ustar00rootroot00000000000000Adam Ginsburg Adrian Damian Adrian Damian Brigitta SipÅ‘cz Brigitta SipÅ‘cz Christine Banek Chuanming Mao Chuanming Mao <113032306+ChuanmingMao@users.noreply.github.com> Dustin Jenkins Hugo van Kemenade Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Manon Marchand Markus Demleitner Markus Demleitner Laurent Michel Pey Lian Lim <2090236+pllim@users.noreply.github.com> Ray Plante Ray Plante Stefan Becker Tess Jaffe Theresa Dower Tim Jenness Tom Donaldson astropy-pyvo-f0fdda3/.readthedocs.yml000066400000000000000000000007521521254414300200520ustar00rootroot00000000000000version: 2 build: image: latest sphinx: builder: html configuration: docs/conf.py fail_on_warning: true # Install regular dependencies. # Then, install special pinning for RTD. build: os: ubuntu-22.04 tools: python: "3.12" apt_packages: - graphviz jobs: post_checkout: - git fetch --unshallow || true python: install: - method: pip path: . extra_requirements: - docs - all # Don't build any extra formats formats: [] astropy-pyvo-f0fdda3/CHANGES.rst000066400000000000000000000423771521254414300165770ustar00rootroot000000000000001.9.1 (2026-06-11) ================== - Removed ``samp_hub`` command-line interface that wrongly pointed to deprecated ``astropy.samp`` module. For SAMP hub access from command line, please use this instead: ``python -m pyvo.samp.hub``. [#763] 1.9 (2026-06-06) ================ Enhancements and Fixes ---------------------- - Fix auth methods registered for base URLs being dropped for capability-declared sub-paths [#758] - Fix W19 when deep-copying ``TAPService`` (and other objects using ``ElementWithXSIType``) after capabilities have been loaded. [#756] - Change get_tables in regtap.py to use 2 calls instead of N + 1. [#750] - Clear stale ``_ex`` before each execute_stream call. [#751] - Improve ``pyvo.mivot.viewer.MivotInstance`` (API to allow users to access the mapped data attributes directly as properties of the instance); [#747] - Access to not-exiting attribute, e.g. not mappped, returns ``None`` - Support DOTS in unit string, e.g. "mas.year-1" - Support the flat representation of the MANGO observation dates as modeled in the final version of the MANGO data model. [#726] - Support VOTableFile in accessible_table and broadcast_samp. [#745] - Declaratively define new-style standard IDs in Servicetype constraint [#744] - Fix raise_if_error() to use cached job phase instead of re-polling [#743] - Add ``pyvo.registry.get_RegTAP_service_url()`` to allow users to inspect the currently configured registry endpoint. Expose other user-facing constants at their package level. [#742] - Improve handling of timeouts in tap ``wait`` and ``_update``. [#740] - Preserve text/plain error body in ``raise_if_error()`` after stream is consumed. [#736] - Provide an API for SoftId-compliant management of the 'User-Agent' header. [#719] - The ``astropy.samp`` module has been relocated and is now accessible under ``pyvo.samp``. [#729] Deprecations and Removals ------------------------- - Versions of Python <3.10 are no longer supported. [#724] - Versions of Astropy <5.0 are no longer supported. [#724] 1.8.1 (2026-02-12) ================== Bug Fixes --------- - Pass session through to DatalinkService requests. [#716] - Add DALRateLimitError for HTTP 429 responses with retry timing info. [#718] - Fix a bug in the space frame equinox processing. [#710] - Add DEFAULT_JOB_POLL_TIMEOUT constant. [#721] - Fix SIA2 overflow warnings. [#727] - Add timeout parameter to run_async method in tap module. [#730] 1.8 (2025-11-13) ================ Enhancements and Fixes ---------------------- - No longer show a warning when an overflow status is encountered with a maxrec set by the user [#690] - Add support for the jobInfo element for UWS jobs [#679] - Fix DALOverflowWarning error message to only indicate the cause as limits from user or server. [#689] - Add retry option to AsyncTAPJob.fetch_result for transient failures [#696] - Improve the ``MivotViewer`` API: adding support of multiple mapped objects per row and a partial redesign of the public API. Also, improved the gateway between annotations and ``SkyCoord`` objects. [#698] - Adding "hats" and "hips" servicetype shorthands for registry searches for HATS and HIPS resources. [#706] Deprecations and Removals ------------------------- - Upgrade of the ``MivotViewer`` API including the removal of the ``xml_viewer`` module. [#698] 1.7.1 (2025-10-16) ================== Bug Fixes --------- - Fix job result handling to prioritize standard URL structure [#684] - Improving error messaging for invalid SIAv2 inputs. [#693] 1.7 (2025-06-01) ================ Enhancements and Fixes ---------------------- - Extend the MIVOT module with the ability to build annotations component by component and put them into a VOTable. [#627] - Add an API helping to map VOtable data in the Mango data model by using MIVOT [#664] - Make deletion of TAP jobs optional via a new ``delete`` kwarg. [#640] - Correctly delete jobs in ``TAPService.run_async`` even when the server returns an error. [#667] - Change AsyncTAPJob.result to return None if no result is found explicitly. [#644] - Add a UAT constraint to the registry interface for constraining subjects [#649] - Fixed AttributeError when a capability has None standardID in SIA2Service. [#669] Deprecations and Removals ------------------------- - Versions of Python <3.9 are no longer supported. [#639] 1.6.2 (2025-04-07) ================== Bug Fixes --------- - Fix performance issues with datalink results. [#654] - More careful NULL value handling in tapregext data limits. [#659] 1.6.1 (2025-02-12) ================== Bug Fixes --------- - Fix propagating some previously swallowed exceptions. [#614] - Fix string literal generation for SQL query when using numpy >=2.0. [#624] - Switch to do minimal VOSI tables downloads for TAP metadata. [#634] - Provide more informative exception message when requests to endpoints fail. [#641] 1.6 (2024-11-01) ================ Enhancements and Fixes ---------------------- - Add method ``list_interfaces`` to ``pyvo.registry.regtap.RegistryResource`` that returns the list of available interfaces linked to services. Add ``keyword`` parameter in ``get_service`` which should match ``capability_description``. [#505, #525] - Add list of access points to services in ``pyvo.registry.regtap.RegistryResource.describe`` when there is more than one service available [#525] - Add optional ``capability_description`` parameter and a ``__repr__`` to ``pyvo.dal.query.DALService`` abstract base class [#505] - Make ``lax`` parameter default to False in registry get_service method [#505] - Making optional parameters keyword only throughout the public API. [#507] - registry.Ivoid now accepts multiple ivoids and will then match any of them. [#517] - Introducing the new MIVOT module, enabling processed VOTable data mapped to any model serialized in VO-DML. This package dynamically generates python objects whose structure corresponds to the classes of the mapped models. [#497] - MIVOT module: the model references in the dictionaries that are used to build ``MivotInstance`` objects are made more consistent [#551] - RegTAP constraints involving tables other than rr.resource are now done via subqueries for less duplication of interfaces. [#562, #572] - MIVOT module: If the MIVOT annotation block contains a valid instance of the ``mango:EpochPosition`` class, the dynamic object describing the mapped data can generate a valid SkyCoord instance. [#591] - New sub-package discover for global dataset discovery. [#470] - Updated getdatalink to be consistent with iter_datalinks. [#613] Deprecations and Removals ------------------------- - SodaRecordMixin no longer will use a datalink#links endpoint for soda [#580] - Deprecating the use of "image" and "spectrum" in registry Servicetype constraints [#449] 1.5.3 (2024-10-14) ================== Bug Fixes --------- - ``cachedataset()`` and friends again produce reasonable file extensions. [#553] - Path separators are no longer taken over from image titles to file system paths. [#557] - Added `'sia1'` as servicetype for registry searches. [#583] - Adding ``session`` kwarg to allow to pass a session along when turning an Interface into a service via ``Interface.to_service``. [#590] - Include port number if it is present in endpoint access URL. [#582] - Where datalink records are made from table rows, the table row is now accessible as datalinks.original_row. [#559] - Tables returned by RegistryResource.get_tables() now have a utype attribute. [#576] - Registry Spatial constraint now supports Astropy Quantities for the radius argument. [#594] - ``iter_metadata()`` no longer crashes on tables with a datalink RESOURCE and without obscore attributes. [#599] - Avoid assuming that ``'access_url'`` always exits. [#570] Deprecations and Removals ------------------------- - Removed usage of the astropy TestRunner, therefore the unadvertised ``pyvo.test()`` functionality. [#606] 1.5.2 (2024-05-22) ================== Bug Fixes --------- - Avoid Astropy Time error for SIAResult.dateobs when VOX:Image_MJDateObs or ssa:DataID.Date is nan. [#550] - More robust handling of SIA1 FORMAT [#545] 1.5.1 (2024-02-21) ================== Bug Fixes --------- - Fix ``pyvo.registry.Author`` to allow registry searches with author constraints. [#515] - Backing out of having alt_identifier in RegistryResource throughout. Use get_alt_identifier() instead [#523] - Fix ``maxrec=0`` special case for SIA2 queries. [#520] 1.5 (2023-12-19) ================ Enhancements and Fixes ---------------------- - ``registry.search`` now allows programmatic selection of the registry TAP service endpoint with the ``choose_RegTAP_service`` function. [#386] - ``registry.search`` now introspects the TAP service's capabilities and only offers extended functionality or optimisations if the required features are present [#386] - Registry search now finds SIA v2 services. [#422, #428] - Made SIA2Service accept access urls without finding them in the service capabilities. [#500] - Fix session inheritance in SIA2. [#490] - Add intersect modes for the spatial constraint in the registry module ``pyvo.registry.Spatial``. [#495] - Added ``alt_identifier``, ``created``, ``updated`` and ``rights`` to the attributes of ``pyvo.registry.regtap.RegistryResource`` [#492] - Added the ``source_value`` and ``alt_identifier`` information to the verbose output of ``describe()`` in ``regtap``. [#492] - Added convenience method DALResults.to_qtable() that returns an astropy.table.QTable object. [#384] - TAP examples now support the continuation property. [#483] - Fix poor polling behavior when running an async query against a TAP v1.1 service with unsupported WAIT parameter. [#440] - Adding python version to User-Agent. [#452] - Output of ``repr`` for DALResults instance now clearly shows it is a DALResultsTable and not a generic astropy Table. [#478] - Adding support for the VODataService 1.2 nrows attribute on table elements. [#503] Deprecations and Removals ------------------------- - Classes ``SIAService``, ``SIAQuery``, ``SIAResults`` for SIA v2 have been renamed to ``SIA2Service``, ``SIA2Query``, ``SIA2Results`` respectively as well as the variable ``SIA_PARAMETERS_DESC`` to ``SIA2_PARAMETERS_DESC``. The old names now issue an ``AstropyDeprecationWarning``. [#419] - Class ``pyvo.vosi.vodataservice.Table`` has been renamed to ``VODataServiceTable`` to avoid sharing the name with a more generic ``astropy.table.Table`` while having different API. [#484] - Deprecate VOSI ``AvailabilityMixin``, this mean the deprecation of the inherited ``availability``, ``available``, and ``up_since`` properties of DAL service classes, too. [#413] - Deprecating ``ivoid2service`` because it is ill-defined. [#439] 1.4.2 (2023-08-16) ================== - Fixed TapResults to inherit session. [#447] - Fix handling of nan values for Time properties in SIA2 records. [#463] - Fix SIA2 search to accept SkyCoord position inputs. [#459] - Favouring ``VOX:Image_AccessReference`` for data url for SIA1 queries. [#445] 1.4.1 (2023-03-07) ================== - ``pyvo.registry.search`` now accepts an optional ``maxrec`` argument rather than automatically passing the service's hard limit. [#375] - Fixed the RegTAP fragment for the discovery of EPN-TAP tables. [#395] - Removed defaults for optional SIAv1 and SSA query parameters to avoid unnecessarily overriding the server-side defaults. [#367] - Error messages from uws jobs are now in job.errorsummary.message rather than job.message (where one wouldn't expect them given the UWS schema). [#432] - Avoid raising ``AttributeError`` for None responses. [#392] 1.4 (2022-09-26) ================ - Added the TAP Table Manipulation prototype (cadc-tb-upload). [#274] - More explicit exception messages where the payload is sometimes considered if it can be presented properly (simple body text or job error message). [#355] - we now ignore namespaces in xsi-type attributes; this is a lame fix for services like ESO's and MAST's TAP, which do not use canonical prefixes while astropy.utils.xml ignores namespaces. [#323] - Overhaul of the registry.regsearch as discussed in https://blog.g-vo.org/towards-data-discovery-in-pyvo.html. This should be backwards-compatible. [#289] - Versions of astropy <4.1 are no longer supported. [#289] - pyvo.dal warns on results with overflow status. [#329] - Allow session to be passed through in SSA, SCR, and DataLink. [#327] - pyvo.dal.tap.AsyncTAPJob treats parameter names as case-insensitive when retrieving the query from the job record. [#357] - Adding support for prototype features via the ``prototype_feature`` decorator . [#309] - No longer formatting microseconds into SSA time literals. [#351] - Adding operating system to User-Agent. [#344] 1.3 (2022-02-19) ================== - pyvo deals with non-core terms in datalink.bysemantics again. [#299] - Versions of Python <3.8 are no longer supported. [#290] 1.2.1 (2022-01-12) ================== - Get wraps decorator from functools instead of astropy. [#283] 1.2 (2021-12-17) ================ - Make .bysemantics expand its terms to the entire branch by default [#241] - Added optional includeaux flag for regTAP search() [#258] - Added VOResource 1.1 mirrorurl and testquerystring to vosi.Interface [#269] - Versions of Python <3.7 are no longer supported. [#255] 1.1 (2020-06-26) ================ - Added TAP examples function. [#220] - Add default for UWS version. [#199] - Handle description of None when describing a TAP service's tables. [#197] - Properly handle single string keywords value for regsearch(). [#201] - Add support for SIA2. [#206] - Add kwargs to sia2. [#222] - Fix handling relative result URLs. [#192] 1.0 (2019-09-20) ================ - Fix pedantic table parsing not throwing exception. [#140] - Drop support for legacy Python 2.7. [#153] - Sphinx 1.7 or higher is needed to build the documentation. [#160] - Add support for authenticated requests. [#157] - Add a get_job_list method to the TAPService class. [#169] - Replace example's usage of pyvo.object2pos() with SkyCoord.from_name() [#171] - Stop installing files from scripts to /usr/local/bin. Move them to examples/images instead. [#166] - Update ex_casA_image_cat example. [#172] - Fix waveband option in registry.regsearch [#175] - Fix to regtap.ivoid2service(), few decode()'s, para_format_desc was moved to utils. [#177] - Fix default result id for fetch_results of async TAP. [#148] 0.9.3 (2019-05-30) ================== - Fix parsing of SecurityMethod in capabilities. [#114] - Keep up to date with upstream astropy changes. - Move into astropy GitHub organization and README updates. [#133] - Replace mimetype functions with library-based ones. 0.9.2 (2018-10-05) ================== - Fix typo fornat -> format. [#106] 0.9.1 (2018-10-02) ================== - Don't use OR's in RegTAP queries. - Add a timeout to job wait. 0.9 (2018-09-18) ================ - Add a describe method to services to print a human-readable description. - Use a customized user agent in http requests. - Fix some python2/3 issues. - Add general datalink processing method. [#103] 0.8.1 (2018-06-27) ================== - Pass use_names_over_ids=True to astropy's to_table. 0.8 (2018-06-07) ================ - Make XML handling more generic. 0.7rc1 (2018-02-18) =================== - Rework VOSI parsing using astropy xml handling. [#88] - Describe service object bases on vosi capabilities. - Add SODA functionallity. - Fixes and Improvements. 0.6.1 (2017-06-29) ================== - Add Datalink interface. - Put some common functionallity in Mixins. - Minor fixes and improvements. 0.6 (2017-04-17) ================ - Using RegTAP as the only registry interface. - Added a datamodel keyword to registry search. - Using the six libray to address Python 2/3 compatibility issues. - AsyncTAPJob is now context aware. - Improvement upload handling; it is no longer necessary to specifiy the type of upload. - Allow astropy's SkyCoord and Quantity as input parameters. 0.5.2 (2017-02-09) ================== - Remove trailing ? from query urls. [#78] - VOTable fieldnames are now gathered from names only instead of ID and name. 0.5.1 (2017-02-02) ================== - Fix content decoding related error in async result handling. 0.5 (2017-01-13) ================ - Added a RegTAP interface. [#73] - Removed urllib in favor of the requests library. [#74] - Deprecated vao registry interface. - Minor improvements and fixes. 0.4.1 (2016-12-02) ================== - Fix a bug where maxrec wasn't send to the server. 0.4 (2016-12-02) ================ - Use astropy tables for table metadata. [#71] - Fix another content encoding error. [#72] 0.3.2 (2016-12-02) ================== - Adding table property to DALResults. This is a shortcut to access the astropy table. - Improved Error Handling. - Adding ``upload_methods`` to TAPService. [#69] 0.3.1 (2016-12-02) ================== - Fix an error where the content wasn't decoded properly. [#67] - Fix a bug where POST parameters are submitted as GET parameters. 0.3 (2016-12-02) ================ - Adding TAP API. [#58, #66] 0.1 (2016-12-02) ================ - This is the last release that supports Python 2.6. [#62] - This release only contains bug fixes beyond 0.0beta2. astropy-pyvo-f0fdda3/CONTRIBUTORS.rst000066400000000000000000000016671521254414300174610ustar00rootroot00000000000000PyVO Contributors ----------------- PyVO is an open source project developed through GitHub at https://github.com/astropy/pyvo; community contributions are welcome. This project began in 2012 as a product of the US Virtual Astronomical Observatory, funded through a cooperative agreement with the US National Science Foundation. PyVO was developed with contributions from the following developers: Contributor's Name | Affiliations | GitHub identity ---------------------|----------------|------------------- Stefan Becker | Heidelberg Univ. | funbaker Thomas Boch | CDS | tboch Carlos Brandt | Universita di Roma La Sapienza | chbrandt Markus Demleitner | Heidelberg Univ. | msdemlei Christoph Deil | MPI for Nuclear Physics | cdeil Mike Fitzpatrick | NOAO | Matthew Graham | Caltech | doccosmos Gus Muench | Harvard/CfA, AAS | augustfly Ray Plante | NCSA/UIUC, NIST | RayPlante Brigitta Sipocz | Cambridge, UK | bsipocz Doug Tody | NRAO | astropy-pyvo-f0fdda3/LICENSE.rst000066400000000000000000000027741521254414300166060ustar00rootroot00000000000000BSD 3-Clause License Copyright (c) 2020, Astropy-pyvo Developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. astropy-pyvo-f0fdda3/MANIFEST.in000066400000000000000000000003771521254414300165250ustar00rootroot00000000000000include README.rst include CHANGES.rst include LICENSE.rst include setup.cfg include pyproject.toml recursive-include pyvo *py recursive-include docs * recursive-include licenses * prune build prune docs/_build prune docs/api global-exclude *.pyc *.o astropy-pyvo-f0fdda3/README.rst000066400000000000000000000060131521254414300164470ustar00rootroot00000000000000PyVO =================================== .. image:: http://img.shields.io/badge/powered%20by-AstroPy-orange.svg?style=flat :target: https://www.astropy.org :alt: Powered by Astropy Badge .. image:: https://github.com/astropy/pyvo/workflows/CI/badge.svg?branch=main :target: https://github.com/astropy/pyvo/workflows/CI/badge.svg?branch=main :alt: CI Status .. image:: https://codecov.io/gh/astropy/pyvo/branch/main/graph/badge.svg?token=Mynyo9xoPZ :target: https://codecov.io/gh/astropy/pyvo :alt: Coverage Status .. image:: https://zenodo.org/badge/10865450.svg :target: https://zenodo.org/badge/latestdoi/10865450 PyVO is a package providing access to remote data and services of the Virtual observatory (VO) using Python. Its development was launched by the NSF/NASA-funded Virtual Astronomical Observatory (VAO) project (formerly under the name VAOpy) as part of its initiative to bring VO capabilities to desktop. PyVO main goal is to allow astronomers and tool developers to access data and services from remote archives and other web resources. It takes advantage of VO standards to give access to thousands of catalogs, data archives, information services, and analysis tools. It also takes advantage of the general capabilities of Astopy (and numpy), and so a secondary goal is to provide a development platform for prototypes for functionalities that are under development and not yet accepted as a VO standard. Source code can be found `on GitHub `_ Installation and Requirements ----------------------------- Releases of PyVO are available from `PyPI `_ thus, it and its prerequisites can be most easily installed using ``pip``: pip install pyvo Releases are also conda packaged and available on the ``conda-forge`` channel. To install from source use ``pip``: pip install .[all] Using the developer version of PyVO in testing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ We recommend and encourage testing against the development version of PyVO in CI, both for dependent libraries and notebook providers. As PyVO is a pure Python library, this can be done as easily as pip installing the developer version from GitHub: pip install git+https://github.com/astropy/pyvo.git#egg=pyvo An example for setting up development version testing for a library as a GitHub Actions Workflow can be found in `astroquery `__. Examples -------- Many instructive examples can be found in the `PyVO Documentation `_. Additional examples can be found in the examples directory. Unit Tests ---------- PyVO uses the Astropy framework for unit tests which is built into the setup script. To run the tests, type: pip install .[test] pytest This will run all unit tests that do not require a network connection. To run all tests, including those that access the network, add the --remote-data option: pytest --remote-data astropy-pyvo-f0fdda3/RELEASE.rst000066400000000000000000000015211521254414300165710ustar00rootroot00000000000000Release Procedure for pyvo ========================== These steps are intended to help guide a developer into making a new release. For these instructions, version is to be replaced by the version number of the release. 1. Edit setup.cfg and remove .dev from the version number 2. Edit CHANGES.rst to change unreleased to the date of the release. 3. Commit and push 4. git tag -a version -m "releasing new version version" (this makes a release tag) 5. git push origin version 6. python setup.py sdist (this makes a .tar.gz of the package in dist) 7. twine upload sdist/* (this uploads the output of the previous step to pypi) 8. Edit setup.cfg and set the version to the next release number and add .dev after the version number. Add a new section at the top for the next release number 9. Commit and push. This begins the new release astropy-pyvo-f0fdda3/conftest.py000066400000000000000000000045361521254414300171670ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst # This file is the main file used when running tests with pytest directly, # in particular if running e.g. ``pytest docs/``. import os import tempfile import numpy as np from astropy.utils import minversion try: from pytest_astropy_header.display import PYTEST_HEADER_MODULES, TESTED_VERSIONS ASTROPY_HEADER = True except ImportError: ASTROPY_HEADER = False # Make sure we use temporary directories for the config and cache # so that the tests are insensitive to local configuration. os.environ['XDG_CONFIG_HOME'] = tempfile.mkdtemp('astropy_config') os.environ['XDG_CACHE_HOME'] = tempfile.mkdtemp('astropy_cache') os.mkdir(os.path.join(os.environ['XDG_CONFIG_HOME'], 'astropy')) os.mkdir(os.path.join(os.environ['XDG_CACHE_HOME'], 'astropy')) # Note that we don't need to change the environment variables back or remove # them after testing, because they are only changed for the duration of the # Python process, and this configuration only matters if running pytest # directly, not from e.g. an IPython session. try: from pyvo import __version__ as version except ImportError: version = 'unknown' # Disable IERS auto download for testing (to support the local, non-remote-data scenario), # revisit this config when minimum supported astropy is 5.1. from astropy.utils.iers import conf as iers_conf iers_conf.auto_download = False # set up the user-agent header to match IVOA SoftId from pyvo.utils.http import setup_user_agent setup_user_agent(purpose="test", primary_component=f"pyvo-unittest") def pytest_configure(config): """Configure Pytest with Astropy. Parameters ---------- config : pytest configuration """ if ASTROPY_HEADER: config.option.astropy_header = True # Customize the following lines to add/remove entries from the list of # packages for which version numbers are displayed when running the tests. PYTEST_HEADER_MODULES['Astropy'] = 'astropy' # noqa PYTEST_HEADER_MODULES['requests'] = 'requests' # noqa PYTEST_HEADER_MODULES['defusedxml'] = 'defusedxml' PYTEST_HEADER_MODULES.pop('Pandas', None) PYTEST_HEADER_MODULES.pop('h5py', None) PYTEST_HEADER_MODULES.pop('Scipy', None) PYTEST_HEADER_MODULES.pop('Matplotlib', None) TESTED_VERSIONS['pyvo'] = version astropy-pyvo-f0fdda3/docs/000077500000000000000000000000001521254414300157105ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/Makefile000066400000000000000000000111641521254414300173530ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest #This is needed with git because git doesn't create a dir if it's empty $(shell [ -d "_static" ] || mkdir -p _static) help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR) -rm -rf api html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Astropy.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Astropy.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/Astropy" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Astropy" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." astropy-pyvo-f0fdda3/docs/_templates/000077500000000000000000000000001521254414300200455ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/_templates/autosummary/000077500000000000000000000000001521254414300224335ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/_templates/autosummary/base.rst000066400000000000000000000003721521254414300241010ustar00rootroot00000000000000{% extends "autosummary_core/base.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}astropy-pyvo-f0fdda3/docs/_templates/autosummary/class.rst000066400000000000000000000003731521254414300242750ustar00rootroot00000000000000{% extends "autosummary_core/class.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}astropy-pyvo-f0fdda3/docs/_templates/autosummary/module.rst000066400000000000000000000003741521254414300244560ustar00rootroot00000000000000{% extends "autosummary_core/module.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}astropy-pyvo-f0fdda3/docs/auth/000077500000000000000000000000001521254414300166515ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/auth/index.rst000066400000000000000000000004141521254414300205110ustar00rootroot00000000000000.. _pyvo-auth: ****************** Auth (`pyvo.auth`) ****************** This module contains submodules which help handle auth when communicating with virtual observatory services. Reference/API ============= .. automodapi:: pyvo.auth :no-inheritance-diagram: astropy-pyvo-f0fdda3/docs/conf.py000066400000000000000000000150441521254414300172130ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst # # Astropy documentation build configuration file. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this file. # # All configuration values have a default. Some values are defined in # the global Astropy configuration which is loaded here before anything else. # See astropy.sphinx.conf for which values are set there. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('..')) # IMPORTANT: the above commented section was generated by sphinx-quickstart, but # is *NOT* appropriate for astropy or Astropy affiliated packages. It is left # commented out with this explanation to make it clear why this should not be # done. If the sys.path entry above is added, when the astropy.sphinx.conf # import occurs, it will import the *source* version of astropy instead of the # version installed (if invoked as "make html" or directly with sphinx), or the # version in the build directory (if "python setup.py build_sphinx" is used). # Thus, any C-extensions that are needed to build the documentation will *not* # be accessible, and the documentation will not build correctly. import datetime import os import sys sys.path.insert(0, os.path.abspath('..')) try: from sphinx_astropy.conf.v1 import * # noqa except ImportError: print('ERROR: the documentation requires the sphinx-astropy package to be installed') sys.exit(1) # Get configuration information from setup.cfg from configparser import ConfigParser conf = ConfigParser() conf.read([os.path.join(os.path.dirname(__file__), '..', 'setup.cfg')]) setup_cfg = dict(conf.items('metadata')) # -- General configuration ---------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. needs_sphinx = '1.7' # To perform a Sphinx version check that needs to be more specific than # major.minor, call `check_sphinx_version("x.y.z")` here. # check_sphinx_version("1.2.1") # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns.append('_templates') # Add any paths that contain templates here, relative to this directory. if 'templates_path' not in locals(): # in case parent conf.py defines it templates_path = [] templates_path.append('_templates') # This is added to the end of RST files - a good place to put substitutions to # be used globally. rst_epilog += """ """ # -- Project information ------------------------------------------------------ # This does not *have* to match the package name, but typically does project = setup_cfg['name'] author = setup_cfg['author'] copyright = '{}, {}'.format( datetime.datetime.now(tz=datetime.timezone.utc).year, setup_cfg['author']) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. __import__(project) package = sys.modules[project] # The short X.Y version. version = package.__version__.split('-', 1)[0] # The full version, including alpha/beta/rc tags. release = package.__version__ # -- Options for HTML output --------------------------------------------------- # A NOTE ON HTML THEMES # The global astropy configuration uses a custom theme, 'bootstrap-astropy', # which is installed along with astropy. A different theme can be used or # the options for this theme can be modified by overriding some of the # variables set in the global configuration. The variables set in the # global configuration are listed below, commented out. # Add any paths that contain custom themes here, relative to this directory. # To use a different custom theme, add the directory containing the theme. #html_theme_path = [] # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. To override the custom theme, set this to the # name of a builtin theme or the name of a custom theme in html_theme_path. #html_theme = None # Customized theme options html_theme_options = { 'logotext1': 'Py', # white, semi-bold 'logotext2': 'VO', # orange, light 'logotext3': '' # white, light } # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = '' # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '' # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". html_title = f'{project} v{release}' # Output file base name for HTML help builder. htmlhelp_basename = project + 'doc' # -- Options for LaTeX output -------------------------------------------------- # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [('index', project + '.tex', project + ' Documentation', author, 'manual')] # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [('index', project.lower(), project + ' Documentation', [author], 1)] # -- Options for the edit_on_github extension ---------------------------------------- if eval(setup_cfg.get('edit_on_github')): extensions += ['astropy.sphinx.ext.edit_on_github'] versionmod = __import__(project + '.version') edit_on_github_project = setup_cfg['github_project'] if versionmod.release: edit_on_github_branch = "v" + versionmod.version else: edit_on_github_branch = "main" edit_on_github_source_root = "" edit_on_github_doc_root = "docs" # -- Enable nitpicky mode - which ensures that all references in the docs resolve ---- nitpicky = True # See docs/nitpick-exceptions file for the actual listing. nitpick_ignore = [] for line in open("nitpick-exceptions"): if line.strip() == "" or line.startswith("#"): continue dtype, target = line.split(None, 1) nitpick_ignore.append((dtype, target.strip())) astropy-pyvo-f0fdda3/docs/dal/000077500000000000000000000000001521254414300164505ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/dal/index.rst000066400000000000000000001041701521254414300203140ustar00rootroot00000000000000.. _pyvo-data-access: ************************ Data Access (`pyvo.dal`) ************************ This subpackage provides access to the various data services in the VO. Getting started =============== Service objects are created with the service url and provide service-specific metadata. .. doctest-remote-data:: >>> import pyvo as vo >>> service = vo.dal.SIAService("http://dc.g-vo.org/lswscans/res/positions/siap/siap.xml") >>> print(service.description) Scans of plates kept at Landessternwarte Heidelberg-Königstuhl. They were obtained at location, at the German-Spanish Astronomical Center (Calar Alto Observatory), Spain, and at La Silla, Chile. The plates cover a time span between 1880 and 1999. Specifically, HDAP is essentially complete for the plates taken with the Bruce telescope, the Walz reflector, and Wolf's Doppelastrograph at both the original location in Heidelberg and its later home on Königstuhl. They provide a ``search`` method with varying standard parameters for submitting queries. .. doctest-skip:: >>> resultset = service.search(pos=pos, size=size) which returns a :ref:`resultset `. Individual services may define additional, custom parameters. You can pass these to the ``search`` method as (case-insensitive) keyword arguments. Call the method ``describe`` to print human-readable service metadata. You most likely want to use this in a notebook session or similar before actually querying the service. See :ref:`pyvo-services` for a explanation of the different interfaces. .. _pyvo-astro-params: Astrometric parameters ---------------------- Most services expose the astrometric parameters ``pos`` and ``size`` for which PyVO accept `~astropy.coordinates.SkyCoord` or `~astropy.units.Quantity` objects as well as any other sequence containing right ascension and declination in degrees, which are converted to the standard coordinate frame (in the VO, that usually is ICRS) in the standard units (always degrees in the VO) before they are submitted to the service. Also, `~astropy.coordinates.SkyCoord` can be used to lookup names of astronomical objects you are searching for. .. doctest-remote-data:: >>> import pyvo as vo >>> from astropy.coordinates import SkyCoord >>> from astropy.units import Quantity >>> >>> pos = SkyCoord.from_name('NGC 4993') >>> size = Quantity(0.5, unit="deg") See :ref:`astropy-coordinates` and :ref:`astropy-units` for details. The `~astropy.units.Quantity` object is also suitable for any other astrometric parameter, such as waveband ranges. Some services also accept `~astropy.time.Time` as ``time`` parameter. .. doctest:: >>> from astropy.time import Time >>> time = Time(('2015-01-01T00:00:00', '2018-01-01T00:00:00'), ... format='isot', scale='utc') See :ref:`astropy-time` for explanation. .. _pyvo-verbosity: Verbosity --------- Several VO protocols have the notion of “verbosityâ€�, where 1 means “minimal set of columnsâ€�, 2 means “columns most users can work withâ€� and 3 â€�everything including exotic itemsâ€�. Query functions accept these values in the ``verbosity`` parameter. The exact semantics are service-specific. Capabilities ------------ VO services should offer some standard â€�supportâ€� interfaces specified in VOSI. In pyVO, the information obtained from these endpoints can be obtained from some service attributes. Capabilities describe specific pieces of functionality (such as “this is a spectral searchâ€�) and further metadata (such as â€�this service will never return more than 10000 rowsâ€�). This information is contained in the data structure :py:class:`~pyvo.io.vosi.endpoint.CapabilitiesFile` available through the ``pyvo.dal.vosi.CapabilityMixin.capabilities`` attribute. Exceptions ---------- See the ``pyvo.dal.exceptions`` module. .. _pyvo-services: Services ======== There are five types of services with different purposes but a mostly similar interface available. .. _pyvo_tap: Table Access Protocol --------------------- .. pull-quote:: This protocol defines a service protocol for accessing general table data, including astronomical catalogs as well as general database tables. Access is provided for both database and table metadata as well as for actual table data. This protocol supports the query language `Astronomical Data Query Language (ADQL) `_ within an integrated interface. It also includes support for both synchronous and asynchronous queries. Special support is provided for spatially indexed queries using the spatial extensions in ADQL. A multi-position query capability permits queries against an arbitrarily large list of astronomical targets, providing a simple spatial cross-matching capability. More sophisticated distributed cross-matching capabilities are possible by orchestrating a distributed query across multiple TAP services. -- `Table Access Protocol `_ Consider the following example for using TAP and ADQL, retrieving 5 objects from the GAIA DR3 database, showing their id, position and mean G-band magnitude between 19 - 20: .. doctest-remote-data:: >>> import pyvo as vo >>> tap_service = vo.dal.TAPService("http://dc.g-vo.org/tap") >>> ex_query = """ ... SELECT TOP 5 ... source_id, ra, dec, phot_g_mean_mag ... FROM gaia.dr3lite ... WHERE phot_g_mean_mag BETWEEN 19 AND 20 ... ORDER BY phot_g_mean_mag ... """ >>> result = tap_service.search(ex_query) >>> print(result) source_id ra dec phot_g_mean_mag deg deg mag int64 float64 float64 float32 ------------------- ------------------ ------------------ --------------- 2162809607452221440 315.96596187101636 45.945474015208106 19.0 2000273643933171456 337.1829026565382 50.7218533537033 19.0 2171530448339798784 323.9151025188806 51.27690705826792 19.0 2171810342771336704 323.25913736080776 51.94305655940998 19.0 2180349528028140800 310.5233961869657 50.3486391034819 19.0 While DALResultsTable has some convenience functions, is is often convenient to directly obtain a proper astropy Table using the ``to_table`` method: .. doctest-remote-data:: >>> result.to_table().columns[:3] To explore more query examples, you can try either the ``description`` attribute for some services. For other services like this one, try the ``examples`` attribute. .. doctest-remote-data:: >>> print(tap_service.examples[1]['QUERY']) SELECT TOP 50 l.id, l.pmra as lpmra, l.pmde as lpmde, g.source_id, g.pmra as gpmra, g.pmdec as gpmde FROM lspm.main as l JOIN gaia.dr3lite AS g ON (DISTANCE(g.ra, g.dec, l.raj2000, l.dej2000)<0.01) -- rough pre-selection WHERE DISTANCE( ivo_epoch_prop_pos( g.ra, g.dec, g.parallax, g.pmra, g.pmdec, g.radial_velocity, 2016, 2000), POINT(l.raj2000, l.dej2000) )<0.0002 -- fine selection with PMs TAPServices let you do extensive metadata inspection. For instance, to see the tables available on the Simbad TAP service, say: .. doctest-remote-data:: >>> simbad = vo.dal.TAPService("http://simbad.cds.unistra.fr/simbad/sim-tap") >>> print([tab_name for tab_name in simbad.tables.keys()]) # doctest: +IGNORE_WARNINGS ['TAP_SCHEMA.schemas', 'TAP_SCHEMA.tables', ... 'otypedef', 'otypes', 'ref'] If you know a TAP service's access URL, you can directly pass it to :py:class:`~pyvo.dal.TAPService` to obtain a service object. Sometimes, such URLs are published in papers or passed around through other channels. Most commonly, you will discover them in the VO registry (cf. :ref:`pyvo.registry`). To perform a query using ADQL, the ``search()`` method is used. TAPService instances have several methods to inspect the metadata of the service - in particular, what tables with what columns are available - discussed below. To get an idea of how to write queries in ADQL, have a look at `GAVO's ADQL course`_; it is basically a standardised subset of SQL with some extensions to make it work better for astronomy. .. _GAVO's ADQL course: https://docs.g-vo.org/adql Synchronous vs. asynchronous query ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In synchronous (“syncâ€�) mode, the client keeps a connection for the entire runtime of the query, and query processing generally starts when the request is submitted. This is convenient but becomes brittle as queries have runtimes of the order of minutes, when you may encounter query timeouts. Also, many data providers impose rather strict limits on the runtime allotted to sync queries. In asynchronous (“asyncâ€�) mode, on the other hand, the client just submits a query and receives a URL that let us inspect the execution status (and retrieve its result) later. This means that no connection needs to be held, which makes this mode a lot more robust of long-running queries. It also supports queuing queries, which allows service operators to be a lot more generous with resource limits. For most long-running queries, ``run_async()`` should generally be the preferred approach. It submits the job, waits for it to complete, and returns the result in one call: .. doctest-remote-data:: >>> result = tap_service.run_async(ex_query) For more control over the job lifecycle, for example to set a custom execution time limit, inspect the job URL, or manage the job manually you can use the ``submit_job()`` workflow instead. This submits an asynchronous query without starting it, returning an :py:class:`~pyvo.dal.AsyncTAPJob` object: .. doctest-remote-data:: >>> job = tap_service.submit_job(ex_query) The job URL is in the ``url`` attribute and can be used to inspect or manage the job. The same is available programmatically via various attributes: .. doctest-remote-data:: >>> job.url 'http://dc.g-vo.org/__system__/tap/run/async/...' .. doctest-remote-data:: >>> job.phase 'PENDING' A newly created job is in the PENDING state. While it is pending, it can be configured, for instance, overriding the server's default time limit (after which the query will be canceled): .. doctest-remote-data:: >>> job.executionduration = 700 >>> job.executionduration 700 When you are ready, you can start the job: .. doctest-remote-data:: >>> job.run() This will put the job into the QUEUED state. Depending on how busy the server is, it will immediately go to the EXECUTING status: .. doctest-remote-data:: >>> job.phase # doctest: +IGNORE_OUTPUT 'EXECUTING' The job will eventually end up in one of the phases: * COMPLETED - if all went to plan, * ERROR - if the query failed for some reason; look at the error attribute of the job to find out details, * ABORTED - if you manually killed the query using the ``abort()`` method or the server killed your query, presumably because it hit the time limit. After the job ends up in COMPLETED, you can retrieve the result: .. doctest-remote-data:: >>> job.phase # doctest: +IGNORE_OUTPUT 'COMPLETED' >>> job.fetch_result() # doctest: +SKIP (result table as shown before) Eventually, it is friendly to clean up the job rather than relying on the server to clean it up once ``job.destruction`` (a datetime that you can change if you need to) is reached. .. doctest-remote-data:: >>> job.delete() For more attributes please read the description for the job object :py:class:`~pyvo.dal.AsyncTAPJob`. Query limit ^^^^^^^^^^^ As a sanity precaution, most services have some default limit of how many rows they will return before overflowing: .. doctest-remote-data:: >>> print(tap_service.maxrec) 20000 To retrieve more rows than that (often conservative) default limit, you must override maxrec in the call to ``search``. PyVO will only warn about truncation when it's unexpected. If you request 5 records and get 5 records, no warning is issued: .. doctest-remote-data:: >>> tap_results = tap_service.search("SELECT * FROM arihip.main", maxrec=5) >>> len(tap_results) 5 However, if results are truncated by server limits without you specifying maxrec, you'll receive a helpful warning: .. doctest-remote-data:: >>> tap_results = tap_service.search("SELECT * FROM arihip.main") # doctest: +SHOW_WARNINGS DALOverflowWarning: Results truncated due to server limits. Consider setting a maxrec value. Services will not let you raise maxrec beyond the hard match limit: .. doctest-remote-data:: >>> print(tap_service.hardlimit) 16000000 A list of the tables and the columns within them is available in the TAPService's :py:attr:`~pyvo.dal.TAPService.tables` attribute by using it as an iterator or calling it's ``describe()`` method for a human-readable summary. Uploads ^^^^^^^ Some TAP services allow you to upload your own tables to make them accessible in queries. For this the various query methods have a ``uploads`` keyword, which accepts a dictionary of table name and content. The mechanism behind this parameter is smart enough to distinct between various types of content, either a :py:class:`~str` pointing to a local file or a file-like object, a :py:class:`~astropy.table.Table` or :py:class:`~pyvo.dal.query.DALResults` for an inline upload, or a url :py:class:`~str` pointing to a remote resource. The uploaded tables will be available as ``TAP_UPLOAD.name``. .. note:: The supported upload methods are available under :py:meth:`~pyvo.dal.tap.TAPService.upload_methods`. .. _table manipulation: Table Manipulation ^^^^^^^^^^^^^^^^^^ .. note:: This is a prototype implementation and the interface might not be stable. More details about the feature at: :ref:`cadc-tb-upload` Some services allow users to create, modify and delete tables. Typically, these functionality is only available to authenticated (and authorized) users. .. Requires proper credentials and authorization .. doctest-skip:: >>> auth_session = vo.auth.AuthSession() >>> # authenticate. For ex: auth_session.credentials.set_client_certificate('') >>> tap_service = vo.dal.TAPService("https://ws-cadc.canfar.net/youcat", session=auth_session) >>> >>> table_definition = ''' ... ... my_table ... This is my very own table ... ... article ... some article ... char ... ... ... count ... how many ... long ... ... ''' >>> tap_service.create_table(name='test_schema.test_table', definition=StringIO(table_definition)) Table content can be loaded from a file or from memory. Supported data formats: tab-separated values (tsv), comma-separated values (cvs) or VOTable (VOTable): .. doctest-skip:: >>> tap_service.load_table(name='test_schema.test_table', ... source=StringIO('article,count\narticle1,10\narticle2,20\n'), format='csv') Users can also create indexes on single columns: .. doctest-skip:: >>> tap_service.create_index(table_name='test_schema.test_table', column_name='article', unique=True) Finally, tables and their content can be removed: .. doctest-skip:: >>> tap_service.remove_table(name='test_schema.test_table') For further information about the service's parameters, see :py:class:`~pyvo.dal.TAPService`. .. _pyvo-sia: Simple Image Access ------------------- .. pull-quote:: The Simple Image Access (SIA) protocol provides capabilities for the discovery, description, access, and retrieval of multi-dimensional image datasets, including 2-D images as well as datacubes of three or more dimensions. SIA data discovery is based on the `ObsCore Data Model `_, which primarily describes data products by the physical axes (spatial, spectral, time, and polarization). Image datasets with dimension greater than 2 are often referred to as datacubes, cube or image cube datasets and may be considered examples of hypercube or n-cube data. PyVO supports both versions of SIA. -- `Simple Image Access `_ Basic queries are done with the ``pos`` and ``size`` parameters described in :ref:`pyvo-astro-params`, with ``size`` being the rectangular region around ``pos``. .. doctest-remote-data:: >>> pos = SkyCoord.from_name('Eta Carina') >>> size = Quantity(0.5, unit="deg") >>> sia_service = vo.dal.SIAService("http://dc.g-vo.org/hppunion/q/im/siap.xml") >>> sia_results = sia_service.search(pos=pos, size=size) The dataset format, 'all' by default, can be specified: .. doctest-remote-data:: >>> sia_results = sia_service.search(pos=pos, size=size, format='graphics') This would return all graphical image formats (png, jpeg, gif) available. Other possible values are image/* mimetypes, or ``metadata``, which returns no image at all but instead a declaration of the additional parameters supported by the given service. The ``intersect`` argument (defaulting to ``OVERLAPS``) lets a program specify the desired relationship between the region of interest and the coverage of the images (case-insensitively): .. doctest-remote-data:: >>> sia_results = sia_service.search(pos=pos, size=size, intersect='covers') Available values: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps with the search region CENTER select images whose center is within the search region ========= ====================================================== This service exposes the :ref:`verbosity ` parameter For further information about the service's parameters, see :py:class:`~pyvo.dal.SIAService`. .. _pyvo-ssa: Simple Spectrum Access ---------------------- .. pull-quote:: The Simple Spectral Access (SSA) Protocol (SSAP) defines a uniform interface to remotely discover and access one dimensional spectra. -- `Simple Spectral Access Protocol `_ Access to (one-dimensional) spectra resembles image access, with some subtile differences: The size parameter is called ``diameter`` here, and hence the search region is always circular with ``pos`` as center: .. doctest-remote-data:: >>> ssa_service = vo.dal.SSAService("http://archive.stsci.edu/ssap/search2.php?id=BEFS&") >>> ssa_results = ssa_service.search(pos=pos, diameter=size) >>> ssa_results[0].getdataurl() 'http://archive.stsci.edu/pub/vospectra/...' SSA queries can be further constrained by the ``band`` and ``time`` parameters. .. doctest-remote-data:: >>> ssa_results = ssa_service.search( ... pos=pos, diameter=size, ... time=Time((53000, 54000), format='mjd'), band=Quantity((1e-13, 1e-12), unit="m")) For further information about the service's parameters, see :py:class:`~pyvo.dal.SSAService`. .. _pyvo-scs: Simple Cone Search ------------------ .. pull-quote:: The Simple Cone Search (SCS) API specification defines a simple query protocol for retrieving records from a catalog of astronomical sources. The query describes sky position and an angular distance, defining a cone on the sky. The response returns a list of astronomical sources from the catalog whose positions lie within the cone, formatted as a VOTable. -- `Simple Cone Search `_ The Simple Cone Search returns results – typically catalog entries – within a circular region on the sky defined by the parameters ``pos`` (again, ICRS) and ``radius``: .. doctest-remote-data:: >>> scs_srv = vo.dal.SCSService('http://dc.g-vo.org/arihip/q/cone/scs.xml') >>> scs_results = scs_srv.search(pos=pos, radius=size) This service exposes the :ref:`verbosity ` parameter. For further information about the service's parameters, see :py:class:`~pyvo.dal.SCSService`. .. _pyvo-slap: Simple Line Access ------------------ .. pull-quote:: The Simple Line Access Protocol (SLAP) is an IVOA data access protocol which defines a protocol for retrieving spectral lines coming from various Spectral Line Data Collections through a uniform interface within the VO framework. -- `Simple Line Access Protocol `_ This service let you query for spectral lines in a certain ``wavelength`` range. The unit of the values is meters, but any unit may be specified using `~astropy.units.Quantity`. For further information about the service's parameters, see :py:class:`~pyvo.dal.SLAService`. Jobs ==== Some services, most notably TAP ones, allow asynchronous operation (i.e., you submit a job, receive a URL where to check for updates, and then can go away) using a VO standard called UWS. These have a ``submit_job`` method, which has the same parameters as their ``search`` but start a server-side job instead of waiting for the result to return. This is particularly useful for longer-running queries or when you want to run several queries in parallel from one script. .. note:: It is good practice to test the query with a maxrec constraint first. When you invoke ``submit_job`` you will get a job object. .. doctest-remote-data:: >>> async_srv = vo.dal.TAPService("http://dc.g-vo.org/tap") >>> job = async_srv.submit_job("SELECT * FROM ivoa.obscore") .. note:: Currently, only `pyvo.dal.tap.TAPService` supports server-side jobs. This job is not yet running yet. To start it invoke ``run`` .. doctest-remote-data:: >>> job.run() # doctest: +IGNORE_OUTPUT Get the current job phase: .. doctest-remote-data:: >>> print(job.phase) # doctest: +IGNORE_OUTPUT EXECUTING Maximum run time in seconds is available and can be changed with :py:attr:`~pyvo.dal.AsyncTAPJob.execution_duration` .. doctest-remote-data:: >>> print(job.execution_duration) 7200.0 >>> job.execution_duration = 3600 Obtaining the job url, which is needed to reconstruct the job at a later point: .. doctest-remote-data:: >>> job_url = job.url >>> job = vo.dal.tap.AsyncTAPJob(job_url) Besides ``run`` there are also several other job control methods: * :py:meth:`~pyvo.dal.AsyncTAPJob.abort` * :py:meth:`~pyvo.dal.AsyncTAPJob.delete` * :py:meth:`~pyvo.dal.AsyncTAPJob.wait` .. note:: Usually the service deletes the job after a certain time, but it is a good practice to delete it manually when done. The destruction time can be obtained and changed with :py:attr:`~pyvo.dal.AsyncTAPJob.destruction` Job polling timeout ------------------- When polling for job status, pyVO uses a default timeout of 10 seconds for each request. Some services may occasionally respond slowly, causing ``ReadTimeout`` errors during polling. If you experience intermittent timeout failures when polling job status, you can try increasing this timeout:: import pyvo.dal.tap pyvo.dal.tap.DEFAULT_JOB_POLL_TIMEOUT = 30 # seconds This is a module-level setting that affects all follow-up async job operations. Note that a response time of 10 or more seconds for a status request would likely indicate that the service may be experiencing issues. Also, :py:class:`pyvo.dal.AsyncTAPJob` works as a context manager which takes care of this automatically: .. doctest-remote-data:: >>> with async_srv.submit_job("SELECT * FROM ivoa.obscore") as job1: ... job1.run() # doctest: +IGNORE_OUTPUT >>> print('job1 deleted!') job1 deleted! Check for errors in the job execution: .. doctest-remote-data:: >>> job.raise_if_error() If the execution was successful, the resultset can be obtained using :py:meth:`~pyvo.dal.AsyncTAPJob.fetch_result` The result url is available under :py:attr:`~pyvo.dal.AsyncTAPJob.result_uri` .. _pyvo-resultsets: Resultsets and Records ====================== Resultsets contain primarily tabular data and might also provide binary datasets and/or access to additional data services. To obtain the names of the columns in a service response, write: .. doctest-remote-data:: >>> tap_service = vo.dal.TAPService("http://dc.g-vo.org/tap") >>> resultset = tap_service.search("SELECT * FROM ivoa.obscore" ... " WHERE obs_collection='CALIFA' AND" ... " 1=CONTAINS(s_region, CIRCLE(23, 42, 5))" ... " ORDER BY obs_publisher_did") >>> print(resultset.fieldnames) ('dataproduct_type', 'dataproduct_subtype', 'calib_level', 'obs_collection', 'obs_id', 'obs_title', 'obs_publisher_did', 'obs_creator_did', 'access_url', 'access_format', 'access_estsize', 'target_name', 'target_class', 's_ra', 's_dec', 's_fov', 's_region', 's_resolution', 't_min', 't_max', 't_exptime', 't_resolution', 'em_min', 'em_max', 'em_res_power', 'o_ucd', 'pol_states', 'facility_name', 'instrument_name', 's_xel1', 's_xel2', 't_xel', 'em_xel', 'pol_xel', 's_pixel_scale', 'em_ucd', 'preview', 'source_table') Rich metadata equivalent to what is found in VOTables (including unit, ucd, utype, and xtype) is available through resultset's :py:meth:`~pyvo.dal.query.DALResults.getdesc` method: .. doctest-remote-data:: >>> print(resultset.getdesc('s_fov').ucd) phys.angSize;instr.fov .. note:: Two convenience functions let you retrieve columns of a specific physics (by UCD) or with a particular legacy data model annotation (by utype), like this: .. doctest-remote-data:: >>> fieldname = resultset.fieldname_with_ucd('phys.angSize;instr.fov') >>> fieldname = resultset.fieldname_with_utype('obscore:access.reference') Iterating over a resultset gives the rows in the result: .. doctest-remote-data:: >>> for row in resultset: ... print(row['s_fov']) 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 The total number of rows in the answer is available as its ``len()``: .. doctest-remote-data:: >>> print(len(resultset)) 9 If the row contains datasets, they are exposed by several retrieval methods: .. remove skip once https://github.com/astropy/pyvo/issues/361 is fixed .. doctest-skip:: >>> row.getdataurl() 'http://dc.g-vo.org/getproduct/califa/datadr3/V500/NGC0551.V500.rscube.fits' >>> type(row.getdataset()) Returning the access url or the a file-like object to further work on. As with general numpy arrays, accessing individual columns via names gives an array of all of their values: .. doctest-remote-data:: >>> column = resultset['obs_id'] whereas integers retrieve rows: .. doctest-remote-data:: >>> row = resultset[0] and both combined gives a single value: .. doctest-remote-data:: >>> value = resultset['obs_id', 0] Row objects may expose certain key columns as properties. See the corresponding API spec listed below for details. * :py:class:`pyvo.dal.sia.SIARecord` * :py:class:`pyvo.dal.ssa.SSARecord` * :py:class:`pyvo.dal.scs.SCSRecord` * :py:class:`pyvo.dal.sla.SLARecord` Convenience methods are available to transform the results into :py:class:`astropy.table.Table` or :py:class:`astropy.table.QTable` (values as quantities): .. doctest-remote-data:: >>> astropy_table = resultset.to_table() >>> astropy_qtable = resultset.to_qtable() Datalink -------- Datalink lets operators associate multiple artifacts with a dataset. Examples include linking raw data, applicable or applied calibration data, derived datasets such as extracted sources, extra documentation, and much more. Datalink can both be used on result rows of queries and from datalink-valued URLs. The typical use is to call ``iter_datalinks()`` on some DAL result; this will iterate over all datalinks pyVO finds in a document and yields :py:class:`pyvo.dal.adhoc.DatalinkResults` instances for them. In those, you can, for instance, pick out items by semantics, where the standard vocabulary datalink documents use is documented at http://www.ivoa.net/rdf/datalink/core. Here is how to find URLs for previews: .. doctest-remote-data:: >>> rows = vo.dal.TAPService("http://dc.g-vo.org/tap" ... ).run_sync("select top 5 * from califadr3.cubes order by califaid") >>> for dl in rows.iter_datalinks(preserve_order=True): # doctest: +IGNORE_WARNINGS ... print(next(dl.bysemantics("#preview"))["access_url"]) http://dc.g-vo.org/getproduct/califa/datadr3/V1200/IC5376.V1200.rscube.fits?preview=True http://dc.g-vo.org/getproduct/califa/datadr3/COMB/IC5376.COMB.rscube.fits?preview=True http://dc.g-vo.org/getproduct/califa/datadr3/V500/IC5376.V500.rscube.fits?preview=True http://dc.g-vo.org/getproduct/califa/datadr3/COMB/UGC00005.COMB.rscube.fits?preview=True http://dc.g-vo.org/getproduct/califa/datadr3/V1200/UGC00005.V1200.rscube.fits?preview=True The call to ``next`` in this example picks the first link marked *preview*. For previews, this may be enough, but in general there can be multiple links for a given semantics value for one dataset. It is sometimes useful to go back to the original row the datalink was generated from; use the ``original_row`` attribute for that (which may be None if pyvo does not know what row the datalink came from): .. doctest-remote-data:: >>> dl.original_row["obs_title"] 'CALIFA V1200 UGC00005' Consider ``original_row`` read only. We do not define what happens when you modify it. Rows from tables supporting datalink also have a ``getdatalink()`` method that returns a ``DatalinkResults`` instance. In general, this is less flexible than using ``iter_datalinks``, and it may also cause more network traffic because each such call will cause a network request. When one has a link to a Datalink document – for instance, from an obscore or SIAP service, where the media type is application/x-votable;content=datalink –, one can build a DatalinkResults using :py:meth:`~pyvo.dal.adhoc.DatalinkResults.from_result_url`: .. doctest-remote-data:: >>> from pyvo.dal.adhoc import DatalinkResults >>> # In this example you know the URL from somewhere >>> url = 'https://ws.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2ops/datalink?ID=ivo%3A%2F%2Fcadc.nrc.ca%2FHSTHLA%3Fhst_12477_28_acs_wfc_f606w_01%2Fhst_12477_28_acs_wfc_f606w_01_drz' >>> datalink = DatalinkResults.from_result_url(url) >>> next(datalink.bysemantics("#this")).content_type 'application/fits' Server-side processing ---------------------- Some services support the server-side processing of record datasets. This includes spatial cutouts for 2d-images, reducing of spectra to a certain waveband range, and many more depending on the service. Generic Datalink Processing Service ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Generic access to processing services is provided through the datalink interface. .. remove skip once https://github.com/astropy/pyvo/issues/361 is fixed .. doctest-skip:: >>> datalink_proc = next(row.getdatalink().bysemantics('#proc')) .. note:: Most datalink documents only have one processing service per dataset, which is why there is the ``get_first_proc`` shortcut mentioned below. The returned object lets you access the available input parameters which you can pass as keywords to the ``process`` method. .. remove skip once https://github.com/astropy/pyvo/issues/361 is fixed .. doctest-skip:: >>> datalink_proc = row.getdatalink().get_first_proc() >>> print(datalink_proc.input_params) For more details about this have a look at :py:class:`astropy.io.votable.tree.Param`. Calling the method will return a file-like object on success. .. remove skip once https://github.com/astropy/pyvo/issues/361 is fixed .. doctest-skip:: >>> print(datalink_proc) >>> fobj = datalink.process(circle=(1, 1, 1)) SODA ^^^^ SODA is a service with predefined parameters, available on row-level through :py:meth:`pyvo.dal.adhoc.SodaRecordMixin.processed` which exposes a set of parameters which are dependent on the type of service. - ``circle`` -- a sequence (degrees) or :py:class:`astropy.units.Quantity` of longitude, latitude and radius - ``range`` -- a sequence (degrees) or :py:class:`astropy.units.Quantity` of two longitude values and two latitude values describing a rectangle. - ``polygon`` -- multiple pairs of longitude and latitude points - ``band`` -- a sequence of two values (meters) or :py:class:`astropy.units.Quantity` with two bandwidth values. The right sort order will be ensured if converting from frequency to wavelength. Interoperabillity over SAMP --------------------------- Tables and datasets can be send to other astronomical applications, providing they have support for SAMP (Simple Application Messaging Protocol). You can either broadcast whole tables by calling ``broadcast_samp`` on the resultset or a single product (image, spectrum) by calling this method on the SIA or SSA record. .. note:: Don't forget to start the application and make sure there is a running SAMP Hub. Underlying data structures -------------------------- PyVO also allows access to underlying data structures. The astropy data classes :py:class:`astropy.table.Table` and :py:class:`astropy.table.QTable` are accessible with the method :py:meth:`pyvo.dal.DALResults.to_table` and :py:meth:`pyvo.dal.DALResults.to_qtable`, following astropy naming conventions. If you want to work with the XML data structures :py:class:`astropy.io.votable.tree.VOTableFile` or :py:class:`astropy.io.votable.tree.TableElement`, they are accessible by the attributes :py:attr:`pyvo.dal.DALResults.resultstable` and :py:attr:`pyvo.dal.DALResults.votable`, respectively. Reference/API ============= .. automodapi:: pyvo.dal .. automodapi:: pyvo.dal.adhoc astropy-pyvo-f0fdda3/docs/discover/000077500000000000000000000000001521254414300175265ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/discover/index.rst000066400000000000000000000201731521254414300213720ustar00rootroot00000000000000.. _pyvo-discover: ****************************************** Global Dataset Discovery (`pyvo.discover`) ****************************************** One of the promises of the Virtual Observatory has always been that researchers can globally look for data sets (spectra, say). In the early days of the VO, this looked relatively simple: Just enumerate all image (in those days: SIAP) services, send the same query to them, and then somehow shoehorn together their responses. In reality, there are all kinds of small traps ranging from hanging services to the sheer number of data collections. Hitting hundreds of internet sites takes quite a bit of time even when everything works. In the meantime, the picture is further complicated by the emergence of additional protocols. Images, for instance, can be published through SIA version 1, SIA version 2, and ObsTAP in 2024 – and in particular any combination of that. To keep global discovery viable, several techniques can be applied: * pre-select the services by using the service footprints in space, time, and spectrum. * elide services serving the same data collections * filter duplicate responses before presenting them to the user. This is the topic of this sub-module. In early 2024, this is still in early development. Basic Usage =========== The basic API for dataset discovery is through functions accepting constraints on * space (currently, a cone, i.e., RA, Dec and a radius in degrees), * spectrum (currently, a point in the spectrum as a spectral quantity), and * time (an astropy.time.Time instance or a pair of them to denote an interval). For instance:: from pyvo import discover from astropy import units as u from astropy import time datasets, log = discover.images_globally( space=(273.5, -12.1, 0.1), spectrum=1*u.nm, time=(time.Time('1995-01-01'), time.Time('1995-12-31'))) print(datasets) The function returns a pair of lists. ``datasets`` is a list of `~pyvo.discover.ImageFound` instances. This is the (potentially long) list of datasets located. The second returned value, ``log``, is a sequence of strings noting which services failed and which returned how many records. In exploratory work, it is probably all right to discard the information, but for research purposes, these log lines are an important part of the provenance and must be retained – after all, you might have missed an important clue just because a service was down at the moment you ran your discovery; also, you might want to re-query the failing services at some later stage. All constraints are optional, but without a space constraint, no SIA1 services will be queried. With spectrum and time constraints, it is probably wise to pass ``inclusive=True`` for the time being, as far too many resources do not define their coverage. The discovery function accepts a few other parameters you should know about. These are discussed in the following sections. ``inclusive`` Searching ----------------------- Unfortunately, many resources in the VO do not yet declare their coverage. In its default configuration, pyVO discovery will not query services that do not explicitly say they cover the region of interest and hence always skip these services (unless you manually pass them in, see below). To change that behaviour and try services that do not state their coverage, pass ``inclusive=True``. At this time, this will usually dramatically increase the search time. Setting ``inclusive`` to True will also include datasets that do not declare their temporal of spectral coverage when coming for version 1 SIAP services [TODO: do that in obscore, too?]. This may dramatically increase the number of false positives. It is probably wise to only try ``inclusive=True`` when desperate or when there is a particular necessity to not miss any potentially applicable data. The Watcher ----------- Global discovery usually hits dozens of web services. To see what is going on, you can pass in a function accepting a single string as ``watcher``. The trivial implementation would be:: import datetime def watch(disco, msg): print(datetime.datetime.now(), msg) found, log = discover.images_globally( space=(3, 1, 0.2), watcher=watch) Here, ``disco`` is an ``ImageDiscoverer`` instance; this way, you can further inspect the state of things, e.g., by looking at the ``already_queried`` and ``failed_services`` attributes containing the number of total services tried and of services that gave errors, respectively. Also, although that clearly goes beyond watching, you can call the ``reset_services()`` method. This empties the query queues and thus in effect stops the discovery process. Setting Timeouts ---------------- There are always some services that are broken. A particularly insidious sort of brokenness occurs when data centres run reverse proxies (many do these days) that are up and try to connect to a backend server intended to run the actual service. In certain configurations, it might take the reverse proxy literally forever to notice when a backend server is unreachable, and meanwhile your global discovery will hang, too. Therefore, pyVO global discovery will give up after ``timeout`` seconds, defaulting to 20 seconds. Note that large data collections *may* take longer than that to produce their response; but given the simple constraints we support so far, we would probably consider them broken in that case. Reducing the timeout to just a few seconds will make pyVO continue earlier on broken services. But that of course increases the risk of cutting off working services. If in doubt, have a brief look at the log lines; if a service that sounds promising shows a timeout, perhaps try again with a longer timeout or use partial matching. Overriding service selection ---------------------------- You can also pass a `pyvo.registry.RegistryResults` instance to ``services`` to override the automatic selection of services to query. See the discussion of overriding the service selection in Discoverers_. Discoverers =========== For finer control of the discovery process, you can directly use the `pyvo.discover.image.ImageDiscoverer` class. It is constructed with essentially the same parameters as the search function. To run the discovery, first establish which services to query. There are two ways to do that: * Call the ``discover_services()`` method. This is what the search function does; it uses your constraints as above. * Pass a `pyvo.registry.RegistryResults` instance to ``set_services``. This lets you do your own searches. The image discoverer will only use resources that it knows how to handle. For instance, it is safe to call something like:: discoverer.set_services( registry.search(registry.UAT("galaxies", expand_down=3))) to query services that claim to deal with galaxies or perhaps more specific concepts (although this *will* pull a lot of extra services that the discoverer will just discard). More realistically, :: discoverer.set_services( registry.search(registry.Datamodel("obscore"))) will restrict the operation to obscore services. ``set_services`` will purge redundant services, which means that services that say they (or their data) is served by another service that will already be queried will not be queried. Outside of debugging, this is what you want, but if you really do not want this, you can pass ``purge_redundant=False``. Note, however, that you will still get only one match per access URL of the dataset. Once you have set the services, call ``query_services()`` to fill the ``results`` and ``log_messages`` attributes. It may be informative to watch these change from, say, a different thread. Changing their content has undefined results. A working example would look like this:: from pyvo import discover, registry from astropy.time import Time im_discoverer = discover.image.ImageDiscoverer( space=(274.6880, -13.7920, 0.1), time=(Time('1996-10-04'), Time('1996-10-10'))) im_discoverer.set_services( registry.search(keywords=["heasarc rass"])) im_discoverer.query_services() print(im_discoverer.log_messages) print(im_discoverer.results) Reference/API ============= .. automodapi:: pyvo.discover astropy-pyvo-f0fdda3/docs/index.rst000066400000000000000000000073161521254414300175600ustar00rootroot00000000000000PyVO ==== Introduction ------------ This is the documentation for PyVO, an affiliated package for the `astropy `__ package. PyVO lets you find and retrieve astronomical data available from archives that support standard `IVOA `__ virtual observatory service protocols. * :ref:`Table Access Protocol (TAP) ` -- accessing source catalogs using sql-ish queries. * :ref:`Simple Image Access (SIA) ` -- finding images in an archive. * :ref:`Simple Spectral Access (SSA) ` -- finding spectra in an archive. * :ref:`Simple Cone Search (SCS) ` -- for positional searching a source catalog or an observation log. * :ref:`Simple Line Access (SLAP) ` -- finding data about spectral lines, including their rest frequencies. .. note:: If you need to access data which is not available via the Virtual Observatory standards, try the astropy affiliated package `astroquery `__ (and, of course, ask the data providers to do the right thing and use the proper standards for their publication). Installation ------------ PyVO is installable via pip. .. code-block:: bash pip install pyvo Source Installation ^^^^^^^^^^^^^^^^^^^ .. code-block:: bash git clone http://github.com/astropy/pyvo cd pyvo python setup.py install Requirements ------------ * numpy * astropy * requests .. _getting-started: Getting started --------------- Data Access ^^^^^^^^^^^ Most of the interesting functionality of pyVO is through the various data access service interfaces (SCS for catalogs, SIA for images, SSAP for spectra, TAP for tables). All of these behave in a similar way. First, there is a class describing a specific type of service: .. doctest-remote-data:: >>> import pyvo as vo >>> service = vo.dal.TAPService("http://dc.g-vo.org/tap") Once you have a service object, you can run queries with parameters specific to the service type. In this example, a database query is enough: .. doctest-remote-data:: >>> resultset = service.search("SELECT TOP 1 * FROM ivoa.obscore") >>> resultset dataproduct_type dataproduct_subtype ... source_table ... object object ... object ---------------- ------------------- ... ------------ image ... ppakm31.maps What is returned by the search method is a to get a resultset object, which essentially works like a numpy record array. It can be processed either by columns: .. doctest-remote-data:: >>> row = resultset[0] >>> column = resultset["dataproduct_type"] or by rows. .. doctest-remote-data:: >>> for row in resultset: ... calib_level = row["calib_level"] For more details on how to use data access services see :ref:`pyvo-data-access` Registry search ^^^^^^^^^^^^^^^ PyVO also contains a component that lets your programs interrogate the IVOA Registry in a simple way. For instance, to iterate over all TAP services supporting the obscore data model (which lets people publish observational datasets through TAP tables), you can write: .. doctest-remote-data:: >>> for service in vo.regsearch(datamodel="obscore"): ... print(service['ivoid']) # doctest: +IGNORE_OUTPUT ivo://aip.gavo.org/tap ivo://archive.stsci.edu/caomtap ivo://astro.ucl.ac.uk/tap ivo://astron.nl/tap ivo://asu.cas.cz/tap ... ivo://xcatdb/3xmmdr7/tap ivo://xcatdb/4xmm/tap Using ``pyvo`` -------------- .. toctree:: :maxdepth: 1 dal/index registry/index discover/index io/index auth/index samp/index mivot/index utils/index utils/prototypes astropy-pyvo-f0fdda3/docs/io/000077500000000000000000000000001521254414300163175ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/io/index.rst000066400000000000000000000002771521254414300201660ustar00rootroot00000000000000**************** IO (``pyvo.io``) **************** This module contains submodules which handle datastructures related to the virtual observatory. .. toctree:: :maxdepth: 1 vosi uws astropy-pyvo-f0fdda3/docs/io/uws.rst000066400000000000000000000411051521254414300176700ustar00rootroot00000000000000****************************************** Universal Worker Service (``pyvo.io.uws``) ****************************************** .. currentmodule:: pyvo.io.uws Introduction ============ The Universal Worker Service (UWS) is an IVOA Recommendation that defines a protocol for managing asynchronous jobs in IVOA services through a RESTful API that can be used to submit, monitor and control asynchronous operations. Getting Started =============== UWS job documents can be parsed directly from URLs, files, or strings using the parsing functions provided by this module: .. doctest-remote-data:: >>> import pyvo as vo >>> from pyvo.io.uws import parse_job, parse_job_list >>> tap_service = vo.dal.TAPService("http://dc.g-vo.org/tap") >>> ex_query = """ ... SELECT TOP 5 ... source_id, ra, dec, phot_g_mean_mag ... FROM gaia.dr3lite ... WHERE phot_g_mean_mag BETWEEN 19 AND 20 ... ORDER BY phot_g_mean_mag ... """ >>> async_job = tap_service.submit_job(ex_query) >>> async_job.run().wait() >>> >>> # Parse a single job from a UWS service >>> job = parse_job(async_job.url) >>> >>> print(f"Job {job.jobid} is {job.phase}") Job ... is COMPLETED >>> jobs = parse_job_list('http://dc.g-vo.org/tap/async') >>> # Show jobs >>> if len(jobs) >= 1: ... print(f"Example job: {jobs[0].jobid} is {jobs[0].phase}") Example job: ... is ... >>> >>> print(f"Successfully parsed {len(jobs)} jobs") # doctest: +SKIP UWS is most commonly encountered when working with :ref:`TAP services ` in asynchronous mode. The :class:`pyvo.dal.AsyncTAPJob` class provides a higher-level interface that uses the UWS parsing functions internally. UWS Job Lifecycle ================== A UWS job progresses through several phases. Most jobs follow the standard progression through the five common states, while the additional states handle special circumstances: **Common Job States**: * **PENDING**: The job is accepted by the service but not yet committed for execution by the client. In this state, the job quote can be read and evaluated. This is the state into which a job enters when it is first created. * **QUEUED**: The job is committed for execution by the client but the service has not yet assigned it to a processor. No results are produced in this phase. * **EXECUTING**: The job has been assigned to a processor. Results may be produced at any time during this phase. * **COMPLETED**: The execution of the job is over. The results may be collected. * **ERROR**: The job failed to complete. No further work will be done nor results produced. Results may be unavailable or available but invalid; either way the results should not be trusted. **Special States**: * **ABORTED**: The job has been manually aborted by the user, or the system has aborted the job due to lack of or overuse of resources. * **HELD**: The job is HELD pending execution and will not automatically be executed (cf. PENDING). * **SUSPENDED**: The job has been suspended by the system during execution. This might be because of temporary lack of resources. The UWS will automatically resume the job into the EXECUTING phase without any intervention when resource becomes available. * **UNKNOWN**: The job is in an unknown state. * **ARCHIVED**: At destruction time the results associated with a job have been deleted to free up resource, but the metadata associated with the job is retained. Core Components =============== Jobs and Job Lists ------------------ The fundamental UWS concepts are represented by these classes: :class:`~pyvo.io.uws.tree.JobSummary` Represents a single UWS job with all its metadata, parameters, and results. :class:`~pyvo.io.uws.tree.Jobs` Represents a list of jobs, typically returned when querying a job list endpoint. :class:`~pyvo.io.uws.endpoint.JobFile` Represents a complete UWS job XML document. Job Parameters and Results -------------------------- :class:`~pyvo.io.uws.tree.Parameters` Container for job input parameters. :class:`~pyvo.io.uws.tree.Parameter` Individual parameter with an ID and value, optionally referenced by URL. :class:`~pyvo.io.uws.tree.Results` Container for job output results. :class:`~pyvo.io.uws.tree.Result` Individual result with metadata like size and MIME type. What is JobInfo? ================ The :class:`~pyvo.io.uws.tree.JobInfo` element is an extensible container that allows UWS implementations to include arbitrary, service-specific information about a job. This for example can be used to provide: * **Implementation-specific metadata** about job execution like progress info * **Service-specific configuration** or diagnostic information * **Extended error details** or debugging information JobInfo exposes this information in a possibly hierarchical dictionary. Working with UWS Jobs ===================== Setting Up Examples ------------------- For the following examples, we'll use a sample UWS job document: >>> import pyvo.io.uws >>> from io import BytesIO >>> >>> # Load sample UWS job from Appendix A >>> sample_job_xml = b''' ... ... async-query-12345 ... query-run-id ... user-1 ... COMPLETED ... 2025-06-19T14:35:00.000Z ... 2025-06-19T14:30:00.000Z ... 2025-06-19T14:30:05.123Z ... 2025-06-19T14:32:18.456Z ... 600 ... 2025-06-26T14:30:00.000Z ... ... ADQL ... SELECT obj_id, ra, dec, magnitude FROM catalog.objects WHERE 1=CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 180.0, 45.0, 1.0)) ... votable ... 10000 ... ... ... ... ... ... 1234 ... 133.333 ... 98.765 ... 0 ... 120 ... compute-node-03 ... 1.1 ... ... ''' >>> >>> job = pyvo.io.uws.parse_job(BytesIO(sample_job_xml)) Parsing and Basic Access ------------------------ >>> # Access basic job information (job created in testsetup above) >>> print(f"Job ID: {job.jobid}") Job ID: async-query-12345 >>> print(f"Phase: {job.phase}") Phase: COMPLETED >>> print(f"Owner: {job.ownerid}") Owner: user-1 >>> print(f"Run ID: {job.runid}") Run ID: query-run-id Timing and Duration Analysis ---------------------------- UWS jobs include comprehensive timing information automatically parsed as :class:`astropy.time.Time` and :class:`astropy.time.TimeDelta` objects: >>> # Job times are automatically parsed as astropy Time objects >>> print(f"Created: {job.creationtime}") Created: 2025-06-19T14:30:00.000 >>> print(f"Started: {job.starttime}") Started: 2025-06-19T14:30:05.123 >>> print(f"Completed: {job.endtime}") Completed: 2025-06-19T14:32:18.456 >>> >>> # Calculate actual execution time >>> if job.starttime and job.endtime: ... duration = job.endtime - job.starttime ... print(f"Job took {duration.to('second').value:.1f} seconds") Job took 133.3 seconds >>> >>> # Check execution limits >>> if job.executionduration: ... print(f"Max allowed: {job.executionduration.to('minute').value:.1f} minutes") Max allowed: 10.0 minutes Parameter Inspection -------------------- Job parameters include both the query itself and configuration options: >>> # Iterate through all parameters >>> for param in job.parameters: ... if param.byreference: ... print(f"Parameter {param.id_}: Referenced from {param.content}") ... else: ... print(f"Parameter {param.id_}: {param.content}") Parameter LANG: ADQL Parameter QUERY: SELECT obj_id, ra, dec, magnitude FROM catalog.objects WHERE 1=CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 180.0, 45.0, 1.0)) Parameter FORMAT: votable Parameter MAXREC: 10000 Result Access and Download -------------------------- Results include the actual data products and associated metadata: >>> # Access all results >>> for result in job.results: ... print(f"Result '{result.id_}':") ... print(f" URL: {result.href}") Result 'result': URL: http://example.com/tap/async/async-query-12345/results/result Working with JobInfo ==================== JobInfo provides access to service-specific metadata about job execution. Basic JobInfo Access -------------------- >>> if job.jobinfo: ... # RECOMMENDED: Dict-like access for expected elements ... try: ... rows_returned = job.jobinfo['rowsReturned'] ... execution_time = job.jobinfo['executionTime'] ... print(f"Query returned {rows_returned.value:,} rows in {execution_time.value:.1f} seconds") ... except KeyError as e: ... print(f"Missing expected element: {e}") ... ... # Use .get() with defaults for optional elements ... queue_pos = job.jobinfo.get('queuePosition', None) ... node_id = job.jobinfo.get('nodeId', None) ... ... if queue_pos: ... print(f"Final queue position: {queue_pos.value}") ... ... if node_id: ... print(f"Executed on: {node_id.text}") Query returned 1,234 rows in 133.3 seconds Final queue position: 0 Executed on: compute-node-03 .. note:: **API Usage Recommendation**: When accessing jobInfo elements, prefer dict-like access (``job.jobinfo['element']``) for expected elements, as this provides clearer error handling with KeyError exceptions. Use ``.get()`` with default values for optional elements. See the jobInfo examples for detailed patterns. Understanding .value vs .text ----------------------------- JobInfo elements provide two ways to access their content: >>> if job.jobinfo: ... duration_elem = job.jobinfo['estimatedDuration'] ... ... # .text returns the raw string content ... print(f"Raw text: '{duration_elem.text}'") ... ... # .value attempts automatic type conversion (int, float, or string) ... print(f"Converted value: {duration_elem.value}") ... print(f"Type: {type(duration_elem.value)}") ... ... # For elements with string content that shouldn't be converted ... node_elem = job.jobinfo['nodeId'] ... print(f"Node ID text: {node_elem.text}") ... print(f"Node ID value: {node_elem.value}") Raw text: '120' Converted value: 120 Type: Node ID text: compute-node-03 Node ID value: compute-node-03 Best Practices for JobInfo Access --------------------------------- >>> def safe_jobinfo_access(job): ... """Demonstrates safe jobInfo access patterns""" ... if not job.jobinfo: ... print("No jobInfo available") ... return ... ... # Pattern 1: Expected elements with error handling ... try: ... rows = job.jobinfo['rowsReturned'] ... exec_time = job.jobinfo['executionTime'] ... print(f"Processed {rows.value:,} rows in {exec_time.value:.1f} seconds") ... except KeyError as e: ... print(f"Required statistics missing: {e}") ... ... # Pattern 2: Optional elements with defaults ... queue_pos = job.jobinfo.get('queuePosition', 'unknown') ... priority = job.jobinfo.get('priority', 'normal') ... ... # Pattern 3: Check existence before accessing ... if 'nodeId' in job.jobinfo: ... node = job.jobinfo['nodeId'] ... print(f"Executed on node: {node.text}") ... ... # Pattern 4: Iterate through all available elements ... print("All jobInfo elements:") ... for key in job.jobinfo.keys(): ... element = job.jobinfo[key] ... print(f" {key}: {element.text}") >>> safe_jobinfo_access(job) Processed 1,234 rows in 133.3 seconds Executed on node: compute-node-03 All jobInfo elements: rowsReturned: 1234 executionTime: 133.333 cpuTime: 98.765 queuePosition: 0 estimatedDuration: 120 nodeId: compute-node-03 serviceVersion: 1.1 Job Status Monitoring ===================== Checking Completion Status -------------------------- >>> # Check if job completed successfully >>> if job.phase == 'COMPLETED': ... print("Job completed successfully!") ... ... # Show summary information ... total_time = (job.endtime - job.creationtime).to('minute').value ... print(f"Total job runtime: {total_time:.1f} minutes") ... ... # Access jobInfo safely ... if job.jobinfo: ... try: ... rows = job.jobinfo['rowsReturned'] ... print(f"Total rows returned: {rows.value:,}") ... except KeyError: ... print("Row count not available") ... elif job.phase == 'ERROR' and job.errorsummary and job.errorsummary.message: ... print(f"Job failed: {job.errorsummary.message.content}") ... else: ... print(f"Job is currently: {job.phase}") Job completed successfully! Total job runtime: 2.3 minutes Total rows returned: 1,234 Working with Job Lists ====================== Parsing Job Lists ----------------- While the examples above focus on individual jobs, you can also parse job lists: .. doctest-remote-data:: >>> from pyvo.io.uws import parse_job_list >>> >>> # Parse a job list from a UWS service endpoint >>> jobs = parse_job_list('http://dc.g-vo.org/tap/async') >>> >>> # Or from a local file >>> # jobs = parse_job_list('job_list.xml') >>> >>> # Iterate through jobs (each is a JobSummary object) >>> for job in jobs: ... print(f"Job {job.jobid}: {job.phase}") # doctest: +IGNORE_OUTPUT Job tk7xsqux: PENDING Job swmua8pe: ERROR Job e58i7yoa: ERROR Job 84w2yz8q: COMPLETED Job 6r51ymds: COMPLETED Job undl67gs: COMPLETED Job _wyoqule: COMPLETED Job ltct6n8d: COMPLETED Job 71kg_stz: COMPLETED Job sc9vc_8h: ERROR Job psn4i8_s: ERROR Job kbrhcstw: COMPLETED Job lvzez3fa: COMPLETED Job l9pfluab: COMPLETED Job lkv6rlxx: COMPLETED Job yb77nhg3: COMPLETED Job vkf4h48y: PENDING Job xr3g9c4d: ERROR Job x9xryn2x: COMPLETED Job wba5foai: COMPLETED Job pni8axcg: ERROR Job j6ip1kn_: ERROR Error Handling ============== When working with failed jobs, check the error summary: >>> # Example of handling a job with errors >>> def check_job_status(job_file): ... job = parse_job(job_file) ... ... if job.phase == 'ERROR': ... print(f"Job {job.jobid} failed!") ... if job.errorsummary: ... print(f"Error type: {job.errorsummary.type_}") ... if job.errorsummary.message and job.errorsummary.message.content: ... print(f"Message: {job.errorsummary.message.content}") Reference/API ============= .. automodapi:: pyvo.io.uws.tree .. automodapi:: pyvo.io.uws.endpoint Appendix A: Example UWS Job Document ==================================== All examples in this documentation reference this sample UWS job XML document. .. code-block:: xml async-query-12345 query-run-id user-1 COMPLETED 2025-06-19T14:35:00.000Z 2025-06-19T14:30:00.000Z 2025-06-19T14:30:05.123Z 2025-06-19T14:32:18.456Z 600 2025-06-26T14:30:00.000Z ADQL SELECT obj_id, ra, dec, magnitude FROM catalog.objects WHERE 1=CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', 180.0, 45.0, 1.0)) votable 10000 1234 133.333 98.765 0 120 compute-node-03 1.1 astropy-pyvo-f0fdda3/docs/io/vosi.rst000066400000000000000000000004641521254414300200350ustar00rootroot00000000000000*********************** VOSI (``pyvo.io.vosi``) *********************** Reference/API ============= .. automodapi:: pyvo.io.vosi.endpoint .. automodapi:: pyvo.io.vosi.voresource .. automodapi:: pyvo.io.vosi.vodataservice .. automodapi:: pyvo.io.vosi.tapregext .. automodapi:: pyvo.io.vosi.availability astropy-pyvo-f0fdda3/docs/make.bat000066400000000000000000000106411521254414300173170ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Astropy.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Astropy.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end astropy-pyvo-f0fdda3/docs/mivot/000077500000000000000000000000001521254414300170465ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/mivot/_images/000077500000000000000000000000001521254414300204525ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/mivot/_images/filterProfileService.png000066400000000000000000006053031521254414300253160ustar00rootroot00000000000000‰PNG  IHDR0Œ±!ÑQgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<¢eXIfMM*JR(‡iZ��’†�  0 ŒASCIIScreenshot¦â^Ë pHYs%%IR$ðiTXtXML:com.adobe.xmp 2096 1 Screenshot 908 2 144 144 1 ãP°@IDATxìݘÅÖ€áCÎ9ç%ˆŠ‚Š(ADT0€€(fÓ½†küÍ åŠ1 bAAA’(9KÎ9ÃÂß§öVÓÓ3³;³³av÷«ç¦CuuõÛ³»C÷éS9N:E( € € € € € € € €@ äÌÀ}³k@@@@@@@@ÀÀÀ@@@@@@@2\€† ?t@@@@@@@`à3€ € € € € € € €.@C†Ÿ:€ € € € € € € €0ð@@@@@@@@�  €!ÃO@@@@@@@@ø € € € € € € € €@† À�á§€ € € € € € € € € |@@@@@@@@ Ãrgxè@ª œ<)òÌ3ÓäÄ gâ¥^½ÒÒ½ûiv6Ýßûm�L™²&`¿ýú�)åÊ XÆ  € € € €ÙEàèÑs /þ´½<ûƳd÷îÃ.k󿕤}ûšîüر dÕª]î|¾|¹åÞ{Ïqç¿ýv¹ÌŸ¿Ù�/[¶�ôï¦;Ÿ™'âñZjfö¤ï§Ö¯ß+ï½7ÿÔgêâ‹kÉYgU XÆ  €„HÑ7ä—_ž)“&­ Ýb2KsæÌ!Ÿ~µè;%u4pᡇ&4Úµk½ `Ðà…ÿ{r@Ÿ:v¬CC€3 € € € €YY`Æ}æ†æ‚[eöì�²lÙ÷p4(#­ZU‘nÝN3Áyò¤^Òܧžš&z3Õ–»ïnÀ0rä\™uŽŒV@H�0¼øbÑ—·ÌŸ¿Eš4yÓ»Hx •<ýtû€eÞ™©Sÿ‘%K¶»‹J–, =z4bbáÂmNº´M²sç!éÝ»‰”(‘_tŒ©ß_g¶Ù²å€lÛv@vì8d‚)t¼©*UŠš±âš7¯äI¸Íºáö§)Ú¾ûn¹ÌšµÑŒ�Ö°aéÒ¥^Àxpn#ÿ›ÐqÔ>þx¡¯îŸv›í4µ[åÊE�ÿ|””Ö­«Ég”u7[¾|gÐXúôibŽOÇ’›1c½I?uÞyU�ÈìÚröÙÝm/Þ.&¬”I“V™e�——š™ãu+ýoâ£�˜(m»\ûpî¹Uì¬û®–ãÆ-’uëöŠöÿСã¦ï•*Ë®]»š¢Óþ’ZÇ�/_pÄ©¶ýé§‹Ìù]¼x›9·õë—}�sNå°ç#5Ï«ÿx™G@@@@ Z½ævç�ßmvÑE5eøðN&xÁ®Üµë°¼úêL6lŠ]ä¾Çz=Ôm(ÌD¸ëjaª»‹õZæäÉ«å�?6ˆfšÐë±—]VWš5«àÖ±á®W>|\t¨b}åÊ•SnºéL³IJ�yÅŠ�ÎõÓÕò÷ß[ì®Íûºu{ä­·æ¸Ë*T(l®ýê‚p}s+{&&N\å\›^o®]ê5í2e Êi§•‘ºuK™kÚ¥KôÔNœÜ¿ÿ¨|øáßË;t¨e2l|þùbã7oÞf3tHÓ¦å�¡FÎ}x0Úê8Z´¨,ß|³Ì\wž3g£ÓßBrÖYåê«eø×ÏêÕ‹‹~>u{½F]§NI¹ä’ÚÝKíkº¡>[�;×õIª|ÿý ™={£{~ÔQ¯+ëµînhô@f4Ǭ™9ô‚wøí‹îÏûÙÒÏ¿'Õv¨cˆ¶ï¶�“'E¦LY#?ÿ¼ZÖ®Ýã\çß#zÝ]ïQèK)Ú´©. ¤è6�Ý ï €¤»@Ž“NI�½¦$€¡ÿ¯ä�wÇ#=úr¹ùæodîÜMn·–,¹]êÕ+%�:�‘o¿]î.7¡_¿ù¦—ùBå­ãߟŽ)×·oS'Èbš·š;j «£GäÁ':3Üzá&Þxã28ð,³úƒþ’ë¯ÿ" êã�_(Ï>;]Be®7î*¹ôÒ:òØcSå©§‚û§™-~øáº à„*U^4‘ÛvGwßÝ2 ØdãÆ}f̽¯¿^f«„}Ÿ?ÿiÔ¨œYŸšÇ½eË`ó¥ÜîXVF�ž/wÝõ}H [¯k×zòÊ+¥jÕbv‘yO�óÐ 3 € € € €Ä pï½ä…~h¡fͲ`Á­ao&ê�ì>}¾”/¾¸Z´®–X¯‡&w­Ð]Moö.\x«Ûoÿz½&Ù½{y÷Ý?Ý:Þ‰#:»�vy¨>èMÞ{îùѽ!¬×iõš¡–”³ÞÄïÕkœÝmØ÷V­ªÈ´i}ÍúP}ó?¸·fÍnŒ’ÔõTuÑë–z£¾ý¶—¹Ñn×…êçGu77íü[͹¾ÝHÞ{¯›™OíkºÉ}¶þûß®ÎÏG·/vBƒI4Xè§Ÿþ³Ë½ïzÌ#GvvWt]4ǬY¥GŒ8ãmÛ;=thyôÑ B¶ýùçW;_Ö÷V7Á)é»6¢ÁC7ÝôµüõW`ÀNÀœuÝ»÷!ÿbæ@ˆk�¸ ½Ó/mgŸ=2f°eËv8‘ ˆÞ€/\8ü¸m1.xA;¡A W\qšhV[ôKð¸q‹íl’ïzÓ?©òðÃ?‡]ݽû'æ?*«Ví YGƒî¸ã{'kÄM_ŠCVþßÂ={ŽH‹o8$U_£§mIÍã¶mÚw Ð2d²� û>~üRÙýÏ?ƒLFŽpSr^õÅr@@@@¢ЬþòÚk—† ^кú„¹^ÏLI‰ôzhJÚön£×$Ã/h½¾Ín*#¬m祗’0ÌÖMê==ŽY³ 4j4<ɇ®´�êrã�ãeóæýÎÃoç%Õm'ÛÆa×ëuÍÛoÿÎ p¸!l�HVLŸ¾.l5ÝGÛ¶£eÓ¦ÁR¨Pž°õzöL:$µ¯é&÷ÙR_ÍxÑ¢E%·Ïz?¡aÃ7ÜùpzÌ]»Ž5Á9¤®$wÌá¶KÉòXú®A íÛ¿—ìçRû¥®@2›@\0DŠwþùUMZ2M•Ã+B¿¬êgý"b‹Þø×(ĶmkØE)z×È]À é«üÁ ú…çÖ[Ï–òå ‹îSÿs2fL`Z°íØÙ(\ð‚mO³ThJµH#r5Jtýú½vsó®Y t¸Œ‚󘶦O_­š–Ç­©ÇB/h¤ª¦]Ó!%4 –-ú…ë¾û&ÈÛow±‹Rôî=¯)j€�@@@@#0kÖ† 5öcЊ¤çõк#ÚŸüùs]GÔmõ�±¯¾êI3IÖ‰ö˜5k«O¬Ãbx¯ëNt¹-z<Ò¢Y"ü7€uˆË/¯/šéÖ›�@Û|è¡I&C…µ�Ò¢CshÛ:\q,EŸ¼×@ÎÀРÇ4jÔ<ç¹æ)ÚEZ^ÓMê³õÔS¿Ê—_^cú|ìØ‰ ŒÇ:,ów´�Æ�Ë™Ïæ£�N 8ú@`J‚Cthý éµjoÑatèc[’ ްuô=Ö¾?óLpVgÍ&­C¹èÐ,¡™¬õ�‚ €@fˆËMq¥š@S9é—a-O<ÑÎIõÔEtœ20 ™Ô®ýJÀb�DL*€A¿Ä½óNWs?oÞ\Î� +œa> hcùòá/Q«©³¼åÿþï"'eØLÑ1Â’*O?ÝÞ.£™×LÇ#ëÜù£€êšÚêý÷»9Ñ”5Mʯ�¿ rC+ÿóÏîˆtL.yé¥K‚ú©éê´ÿÅŠå7ÕSû¸½}xæ™iÞY3=}z_7Jûæ›Ï’Ž?øÏ�;2dHë ~Û†¢=¯v;Þ@@@@ˆU`Û¶ƒ7Mµ=½Î§×¬¢-©}=4Úýûëëqh–½v«E‡WÐŒ¯Þ€jA3Á+–Ï¿¹;¯-[V6×Eõû¡CÇÝu)=f½¦¬¯~ý¾27çmƒzSù“OzØÙˆßW¬Øé\›ý+ ~ÇŽµÍÐÅv˜½nۦͻuôzgR_]uUCç:w[çZvI'µÿ¹òÊO®}jczM<–ªàƒ®0­i{&¬”>ÐI·¼ÿþüdt(ÚY³ëçÚö)-®éFòÙÒ ½jV´h>'�aIÀ0Ôz`ên‡DÖwýl=òÈ÷˜58äÀ�cIfžuÌzïA_åÊ=ðY× †^èà¶éD¬}Ÿ8qUÀ®´Ïz¯AïqØ¢óÄ�Z[ÚvyG@ =â*€AÿÐ&5œFNjÑ/ÆúecÁ‚­²v퓚kÓ¦ýA^úe&©R¥JbT®­£_@õ ­72qÆ}vµ”,YÀ�¶7Üð…“ök¦ó帪‰ì<óÌ rÆåÌ['Üû�761_Òu}§NuE#6½4mÜÅ×2›ë—bý’¤7ï½EÓ˜EZ4£�¿Ô¨ñ²\tQMgèŽJ&M�}×1ÅlIíã¶íê»Kx‹þÇÅ›b.W®r×]-ƒ¾Äk”o¸‘hÏ«wÿL#€ € € € ‹À�Á)Û‹O|P(ÚvSûzh´û÷××ë‹6xA×éõ9}Šß?Tîºu{œ†²þÍÍ|Ÿ>MÌ�f½îªÄË1/\üôúÝw· ηuëj¢×ƒ5S®-þë�v¹}¿æšÓMð‚Îë�xÍîûÓO�7¤½!v»hÞ«U+î/èvz�YôÓkê¶,Y²ÝN†|5ª«3,F“�ëüǘ×tC}¶îº«…üûß�C¯[·× S2gNðÃzš!Á›%áᅢH\¹r§äà?¸¤ŽÙ_7–ùXû®%Þψfr.]úYgXíÚÎ5þ æ:‹•�&ëšW,}e[@2B ®4ÓB�ỤQž½{!ß¿"ͬ4½—7€Á»#ï�uïòY³6оlÑ@ �¢Õ/£ÑƒÛ2e ùE5¯_TßxcVÐ6úÙû%YÓtifýò­%­Ž[3lh– o •fK£‘ýE¿`kÀI¤%©óiÔC@@@@ 9}¸Æ_tÜ#G$_¾SOHû넚O�ë¡¡öÍ2ûÄ»w}HëôÓC0h0G¸àm#^ŽYžó—P×)6,À Á 'Nœ tð·ã�ס/Ò£h`ˆ7€A‡‘ÐW¸Ì á‚nÒóšnÆÁŸ! ŽQó™3ƒ‡iùÏ~I–R B}fuÃpÇœl£QVˆµï:,ô‹/ÎØ«žK‡fŽ~þùR¦Lðƒ�3ƒ €@œ 䌳þ„펦Í:ýô7Â/hŠ©Ô(… …OåV©R3¤CrûшǞ=Ç™4VÉÕõ®·Cex—y§óä‰íté›�Ïò6rú×_×J³f#ÌXkZ!­Ž[¿TùK¨Ôr‰ì/Ée×ð×Oê¼úë2� € € € €@Jôæ¼}0ÈÛÆÒ¥I?ñî­«Óéu=Ô¿ßhçOž Þ±¼&é%ñtÌ{öêl¨ë”v^oåÇO ‰á]jº`Á<¡§Ë²¤IÂu =¯é†êCî܉×Èwî<ju²Ë4#£K¬}øá6f–äŽC‡@¹à‚w“«Æz@âN |ºƒ8ëêçŸ/H‹¤Ý4¨¥“‘¡‰Ô¯_ÚD/-úTÐørÑFr_Ú®»®‘IÃôÖ[³åã�õÉ»¿÷Þ›/—_^ß»(¦é9B§U‹¦Ñ7Þ¸Ìôéí·çÊ?¬HÒë‹/–Èm·�mšO‹ã.Q"¿‰ðõ~éݲå@ÐálÛ¼¬Zµè"““;¯A;e € € € €)hÒ¤|ÀSùÚÌ�!“嫯z†mñСãòÿ7]n¹å,чµÒëzhØE¸bÓ¦SCðÚMtƒ””x:æ:uJ‚f‡ðÓë?~=wÑ%¤Æ5ߠކXà*YWGÛOÛdz^ÓõÛjjÔ(aº¢>¼Ù}õx~úézÛͰïvû°¢X*x'’Ící»žƒ)SúÈGý-£FÍ} 1\ÑlÓóço1Ã_‡«Ãr@âM ¶GúÓñh~ü1pØ�b~á…æo´©×RÚmMÿ¥_Š4EÕ+¯t”-[;Y î5_Œx UP³�¶cß~»Ü\èPŸ|ÒCvï~P–/¿CÆ�»Jtì9ùúë¥fQZw³fv;qâ*ñG(‡ú¦A+@@@@âQ@3¡úË×_/“§žšòzá¼y›�'ªß–aæˆ}:;®‡ú�Á?¯7pGŽœë_ìÜdNYCZóöíƒúÉ‚zõ‚¼C0h ºyܬYâ°¼‘ì#½êlÚ´ß¹¼0`wgŸx]6`e23éqM7Üg«zõÄÏ– yËÖ­Ì0-:;ÝŒWÿÚkÈ¥—~è 9ñVÀÓäºa<\õ€ëºfÍnÑw}Ðëê«? Ê4ѫג7o.ÿ¦ͧÆ1—/_8`_z½qüø¥¢7~wí:,,Iiܸ¼Éë­«×UíöG�&È}÷ý”¡÷¢‹jy7É�é ö:ßÍ1iÒjçúõ{AýèÚ5噃Óâš®ýliP€wïþqÈÏ–Í´Û¶m� cj×n´ÉH` ôA9mKÎjÔxY®ºêSÙ³çHÐv‘.ðg7n‘ ŠÐíuøZ:’KßõžÄu×}.§�öº°0Ïœc}ÀSƒ6úöm*ƒŸÔÿÏDP € g™f‰æÍ+|aY¿~¯”*õ¬Onùòi¼à=oš–I_EŠäM%¦_È.ÜÔ‡›n:ÓDBz·Íèi òÐHn}i @�:%M¿½é¶l{ôhh'Í{Z÷]wµ”ѣ狦²²å¥—fˆ¾*W.*zžýåõ×/•Â…óú3� € € € €@ܼürÇ�C¸êu°|`'T§ãéz¨íŸ^«ÓÁI•§žj—Ôê$×¥Æ1ëõN¹üò±î¢V­ªÈ´i}ÝùpÅŠå“·Þê,½z�s«h0„›„»n©7‘o¿½¹[?£&>ýt‘ � ·íç�7gä Wß¿<-®éFòÙzúéönW4ÓÅ£�^`®sÛ…zí[>ÔWZ”† ËʬYݦuõë¿æÎÚÆôÉ]f"5ú®Áýû'gÍš%¤R¥"¢Ã„„ ¢hݺZ˜ž°@�øˆŸôÉø„ŠÔMô ý´Î¼®kº_Ý¿fcð÷A‡¸xê©S_¨Âµ‘‘Ëõ ÷ôéë‚¢»µOýú5•k®9=d÷Ró¸5:ô½÷º™` ÿÎB/讼28zÝ¿-ó € € € €d¤€fn�1£È”îIõ+wîÄK¶ñx=4©~ëº�>ê.U«K®ZØõ©qÌšmV R£ôìyº Ð,¨©P×-õa1½Î™'O|_r·ý´Ÿ³ ƒ‹`AF\Ó}ÿýnR¥Jàyý׿Îw²4Š Ç©SåŽ;R/8%5û®A : s¨à…¯¾ê)þÌ©£A+ €¤�@ª}›Ò1—ü%gÎ =•’[ï©*µj•�ßï' ”ñ.6Ó5;kÖMA7Ásø:Éþ’ªÓ©S]¹þúFA©Ã¼ª[·”™ÛÉùÂp£“!¢€»Êß]áßWró¾Ã1m‡j×Ý©3áÝæ®»ZH‡I§0»è¢šòÍ7½œ±ëºˆMÇ•ÖÇ­§Ë–Ý!wßÝÒÛõ€iu�2¥�¼újÇ€å:ãw ªa�PÛ± @@@@�” èµÌÉ“{˘1ÝM&ÙpíèÔÆµqn@Þå ›˜A 5®‡ú÷ç½V¨ë’»®æ_¯�þá´½>;þ-aˆÒ:¶øû`—ë{jsÑ¢ùä§Ÿ®7×5ƒ®¿,˜Ç¿È�Õ7½Ö;qâ ¢×'Õ{ï=GV¬¸Ó¤\@¿Ÿ®ô/³×`½úëx×E2­}Õ, þ¢7û-º-Eýô·ë5]{:Ùeu‚ëg믿† TÐ løã�›B~.½�éuï7Þ¸LŠÏo‡2µÌÛ†>´¨×ÎCÝ£ÐzvHæPíø—¥´ïúyyñÅægÎÛ7ÿ´'ñ矷HçÎuý«˜G@ îrœtJÜ÷ÒÓÁãÇO8_wÊÊ•»¤@�Üæ },Q½ž¦#žÔq¦4{ÁæÍûÍ+!á„T¨PÄy6èFÜx:TµŽY¯5.X°UŽ9.¸PªTAs 4¥ýÚ±ã�¹6½zõ.)V,¿žWÏ_,Ù RÚïvUª¼0¯>(¦7¹7nÜ'k×î17íu(äPÁÞvR:�’kº:üÁ;ïÌsw©A Þ*úÙÒkÿzÿ~ýÒæ€[)™ ýùÒcÖL»v2ç»L=çE“|(1™fƒVë•�;9C6앃�9mç3÷b¹†�’¾ïßÔ½G±mÛA)Q"¿¹Î¯�F… …Ô :  € g™.€!Îüè € € € € €&.€!Ã:ÁŽÃ0D°)U@@ ‹ ¤ÚY܉ÃC@@@@@@@�4 €! qi@@@@@@@"ÈY5j!€ € € € € €@¼ 4n\NÊ–-äv«rå¢ît¼NT«V\Î<³‚Û½ÚµKºÓL € €@öÈqÒ)Ù›€£G@@@@@@@�Œ`‰Œ>ì@@@@@@@„> € € € € € € € �á0dø)  € € € € € € € @Ÿ@@@@@@@Èp�˜š7)ú²…y<ø<ðóÀïƒD~òû�߇ü>ä÷!¿U€¿ü=àïø{Àßþð÷0«}°¿×x�L «�އï·|¿åû­ýíÇï~ðû€ßü>Hà÷aêÿ>Œ)€Á~0yG@@@@@@@bÈqÒ)±4À¶ € € € € € € € €@¬d`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�X`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�X`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�X`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�X`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�X`ˆU�í@@@@@@@@ fb&¤@@@@@@@ˆU€†XÙ@@@@@@@b €!fB@@@@@@@@�XrÇÚÛ#€™E`÷îݲfÍÑwo)^¼¸T¯^]ô]‹­§ÓÞå:¯%Öõ‰­œj'¹þ¤´¾ÝÎÿ®ÿvyrý±õ´Ý¬èã÷ 7ŸœC¸íXŽ € € €@v8yò¤$$$HîÜ\ŽÎnçžãE@¢àc´bÔG�L+ Á £G�–?ÿü3àš4i"½{÷}×bëé´w¹Îk‰u}b+§ÚI®?)­o·ó¿‡ë¿]ž\l=m7+úø½ÂÍ'çn;–#€ € €d]�C‡I§N�äĉîA¾÷Þ{R¥JwÞNÌš5Kî¿ÿ~;+õë×—áÇ»ó™}â矖7ß|S,X ‹-2‡S¶lY©\¹²4mÚT:vì(íÚµs(I�ã]±b…,^¼ØÝÕyç�'%J”pç™@@Èx2þÐHcû¤¼Þ˜÷gÐ]ë2{Ó^3 Øy}¯V­šé�.×¢7­§L™b^š±¡k×®f¹þ£õu½w?Þvý¼õÜFþ׎w;]ço7©úv?Þ:Þi{|ºLûªßáêgï±'5íwLª.ë@@@²‡@�$Ož<òã�?º}zÐqlݺUô5wî\yç�wä‘G‘aÆÕK«z.|ðA·ùßÿ]Z¶léÎ3� € �ñ0dü9  �Æzó_3/è ç6mÚ˜¬Þ]êú©S§ÊüùóÖÙíþùçw¹¶£ ºÎfl°mÙúv?ºÜÛ®­ï¯§Y ¼E×{·ÓuÑôßîÇÛfRÓ)é�¶g·Ëê>IÙ±@@@¿€þ?ßÀðþûï0?~\þûßÿlÚ³gÏ€ùÌ8£CE\z饢Ù%¼¥H‘"fvß¾}ÞÅL#€ € $@C @ « hf½¹ï¿Á¯   Å›QÁ:xŸ´×iÑez3ßfT°ûÑzáÝÞ›Á@×ëE� .¸@'Ý¢íèv¶x·�¤¾ÝÎÿnû©}Õ~h?½Ùl¿³«�ß‹y@@@R"йsç€Í4Û€]P»vmw¹>¸à½™ßªU«€õ¶âÚµkeáÂ…fûÇK­ZµäŒ3Î�:uêØ*ï@ð×_™ë {÷î5ÿÿ¿ð eõêÕ¢ë´èÿÿ½CZìܹÓìcãÆ�²cÇÙ¿¿V¡téÒ¢C,”)S&`IÍèqyƒ4pá‡~�sÎ9GräÈ!ºíßK/½äñ÷ß»Íj NÃ[´Oz ¶èPåÊ•³³¢YfÏžmÚ×뺮R¥JÒ¸qcwˆ:bÆ î6:±lÙ2)T¨�Y¦Ûh»Þ¢ýZ¾|¹yi=õ?óÌ3ö­õÕÐÛvÍš5%wîÜ2gΙ7ož6CϱšÚ²jÕ*ùå—_䨱cfH�³Î:Ë®â@ÈÖ0dëÓÏÁ#�=ôf½Ír Ó‘»�þÇ^ÿ®E38è~mÀƒ.Ó€o† °ûÑýj@‚?£‚n®Øýêz�¶ÃIDZ?\½äúi÷n{ÿrÛϬâã?>æ@@@H‰@áÂ…¥OŸ>òî»ïº›öÙgC|òÉ'î:�°×-ìÂ]»vÉСCåµ×^³‹Þo¹åyúé§¥X±bîòõë×Ë€äûï¿w—…š¸êª«äã�?6«öìÙ#¥J• UÍ]¦õß~ûm±YÜ!&–.]°´B… fˆ ^ÐR±bEóºä’Kdâĉ’7o^9qâ„rBoèÛ¢ÁZ×–×_=Àï½÷ޓ믿^4¨ãÞ{ï•7ÞxÃV zWÃÛn»MZ´h4¢½îÞá,–,Y"wÞy§üôÓOAíé‚^xÁdÕ°ÇõÑGÉí·ßîÖÕa*ô{�IWêC4õêÕ=ãÇ�wëëÄwÜ!¯¼òJÀ2f@@�ì(@Cv<ë3ÙLÀfðv¸Œº\‹w;°`ÿcëýO¦Ö·AºÞ›Á@§u½Ý^3<Øvíþõ?¯v`×›…Î?v>Òúv;ÿ{rý U_ƒôeû¥}Ñv´Ø~é´=¾Ìì£ÇAA@@@ 5®½öÚ€FBojk9räˆè ooéÞ½»;{ðàAsÓ_³„+o¾ù¦=zTÞyçSE§;tè ‹- ·IŠ—ë�øœ9sõ9Tƒþ`=†jÕª‰zœþù¢Ylæ„öíÛ»MÜ|óÍòÀ¸ó`1hÐ w~Ô¨Qî´RX/ 29r¤».Ô„73B¨õþe¼pÚi§ùÌßsÏ=&›‚Q„*\ªhNí¿7û†­÷ꫯÊW\”©Ó®ç@È.9³Ë�rœ €€_Àf$ÐìšYAo¾ë�ú´.ºÝ—îS÷ýè£�š—hŸü%ÚúþíS:�OJåØ@@@ » è�jïpX°`Á♼7°{ôè!%K–tÉô:�7xA³ è zc½mÛ¶n=½©o‡^Ð þà…Ë.»L4pâùçŸw·ñOäÊ•Kt¸ƒûï¿_¾üòK3¼Ã¤I“äÉ'Ÿ ¨:vìX9~üxÀ²P3çž{nÐbÍ ñÌ3ÏH§N�¤|ùò&³åðáÃåÀ�nÝë®»Î�Ö Íø`‹9áõ¸é¦›¤`Á‚2mÚ´€àÚA‡¯Ð¡&ô~øá€¬ºOÿС4¡ŽúêÒ¥‹$$$È 7Ü`wm¶×ýh€ÈôéÓΩfuHÊD÷*ÀAϽ~>úõëОî4\Æ·CL € €Ù@€ Ùà$sˆ (`3hÖ�¶™¼™¼[ØõºÌ›�À[G§½¼ë¼ûÑåÞöæÏŸïVõn¯A Z/%õÝÿ7a�Wl»¶m]�·õ½ýV›¬êÊ€e € € €Ä"�;wnéÛ·¯æÁ¶3nÜ89ýôÓÝáìrÿÍ{½ÑnKݺuå /R¢P¡Bæ&ûäÉ“íjÑë gœqFÐ�oRaàÀ�¦ž?è0 ¡Šw±råJ³JoÆëÍ jÐýV®\Y4øÀ�Öë IöaĈf(‹põ4 áÖ[o•—^zÉ #Q¥J3\D·nÝä‹/¾0›i0ÆÜ¹sEƒ4xÂ[ú÷ïofuø oÑã\¼x±´jÕÊh°‡fqعs§©¦Y ô¼Y5/¿ür“í¶£ûÕ [zöìi2HlÙ²EªV­jHl4aݺuR£F [Ý}×`,¡C‘<Ø]÷¯ýKžxâ 3ÿË/¿˜\ìÊP¶Øu¼#€ €ÙE€†ìr¦9Nplf½Q¯YôÆ|Rÿ×uvh�¶ÃE¸ þo¶ëý�°®²þÛ®ý­n¯ôâƒî/Öú¶¶_‘o´õíqèþ2£�uâ@@@�ÔЛßÞ¡4“‚ÞÈÖ¬¶èp:ôƒ-k×® ÈΠ™ô¸²bÅ ³jΜ9U4›@¤eéÒ¥2tèPÑ¡"’*š� ’¢4h O=õ”|ûí·a7ÑcÓ` ›íA3ØÝèƒ>0×Fì0ºL3Øá4°Ã[´=›=A];wîl2^Ö®]Û[-Éiïƒ&ZQƒ1ô®¬Zµ*dƒ†Ø¢ ÞR¬X1wV�¼E‡¡ € €Ù]€†ìþ àøÈF6� ÒÌ–Æ›1Á.K�w»Ú/ý�²öÓIh@€Í–mýh�7ÚúÖÀß/»<Öw»©íkÿØ@@@�¤5j$úÒŒZôf÷°aÃ6éÓ§�äË—Ï]¶iÓ&w:’‰C‡™jö]gôæ}¥J•"Ù\~þùç€a)"Ú(‚Jšá›o¾1™#~ûí7™9s¦É1cÆŒ€­?þøc7€A9tØ�­[·š::ŒÄ¥—^êÎëBÍÜ`‹#ñâ‹/š, v™}×ìcÆŒ1/ ÌÐa:")6lˆ¤š[çðáÃît¸‰¼yó†[%I­ »+@@�,.@C?Áœˆ6³À©-#›²™ü™ôÆûèÑ£“mÄn¯õ“ÊÄ`J®~´Çm}Û�HßmãÅ'Ò~S@@@�” è0wß}·»ùóÏ?ïNëD¯^½ækÕª0¯Ã ¼ùæ›˼3%K–4³uêÔ1C.èŒÞ¼ß¶m›”)SÆ[5äôË/¿°ü…^�îÝ»›¬:Ô�7ƒD@Å03?üðƒh0…Í�#G)Q¢„\vÙeæõØc�™át�-Ô¡TèC :ì†(<òÈ#fµ‡û`‹fø3K¨íW\aúùã�?š [ß¾ë1† `8qâ„­fÞÕÑ[† âfuð.·Ó‘ЍC¸’ÔºpÛ°@Èê9³úr| €€Íh �ö?Åz]_úäÔ*6c€¦3ô¾üûñ÷Çîßn¯7ú5˜Àö7Úú¶=»�¶¥múûá¯g÷gû®¾Ý.ÚwÛ®×F§ýû±ý¶ý±û±Û§–�m×îoÊ”)¢/ÿ~ízÿr»=ï € € €„wã\ë׬YSZ´h°iéÒ¥M»pòäɲÿ~ÑëÞ—ÖÓìË—/7UëÖ­k71ï×\s�|õÕW¢ÃC¼þúëëìŒÞ¼÷ƒ©m 4HªV­j‚ü7÷ívI½OŸ>Ýœ{î¹æáŒcÇŽT÷Ÿ +4(¡hÑ¢n�믿Þ�Ö ›�A§ï¸ãŽ€l'N4CPT¨PAÞxã Y¹r¥¹îã=&ÝNûd‡¿Ð oÙ²e‹wV6l0¯ÙÔÚk¯ÓxðÚk¯ C>p1ƒ €¤Š@à7¶Ti’F@�øHëÌÑ­í�n×»wos?©6¢­ŸT[¡ÖÙöõF}›6mL4H £Ší�î?=|ìþ4@A‹Tx÷k×ë:ïr�§ € € € �”@ÅŠ¥cÇŽòý÷ßUëׯŸ¹î_1tèP¹ýöÛÝÅgžy¦ùÿègœ!”¿ÿþ[4Ó�f(Лé-[¶47÷ÇŽën£�úJªäÌ™3`ȆeË–Éã�?.õë×7C>ø³E$Õ–�¡-hÑþ×®][tx &ð–ûî»O´¶hPÇE]d†›°Ëì»zy‹,ØŒ 7Þx£4mÚT *$ .ôV“³Ï>[råÊe–U«V-`Ý�wÞ)+V¬�íÛ·‹újÆÍ@1nÜ8SOMt›þýû›¬šÙbîܹ¢Ù´Üÿý&Ë„™á@@�T €!UiâYÀ>A¯ï�76Ñøöfµ·ßú„zÞ¸÷öËÛ½a®ýÐþèË–Hëk=m#\;¶=ûîm7;øØã¶ïöø5û‚-]»vµ“î»­§ïZ"õu`@@@ [ Üpà !4KB¨¢7åuhÉO?ýÔ]�ÜДšñ@ƒþïÿþÏÝ&Ü„7``À€òŸÿüÇ­ªÁ©]ô†¿¾üE�ÿ¡‡ò/–›nº)(€Aƒ@4¸!TÑ, Ï<óL¨UfÙ³Ï>ë®S'oY¿~½ BÐe:t…fV9r¤Ì›7ÏŽBE^|ñEïfL#€ €¤¡ iˆKÓ _zÃYÿÃïO%h{iŸ¼·óiõ®Á ú$¿Qè ÿE]ïÏ„M}{œz£ÝßNRÇd·Ëê>I„Zî|…:O¡¶g € € €@öèܹs@«V­ÂÞ�×›è:<Äu×]'�>úhÈ›ÿ:ô‚f Ðì¶è�ú‹/¾X¾øâ Y´h‘ÉlpÖYg™ŒšÕÀ–5jØIyøá‡Íƒ:‚·ÜrË-föÍ7ßt{Ü…¾‰›o¾YJ–,):ô‚faU´/<ð€´k×.Ôj å5pàÀ ºšY¡C‡n6…nݺɃ>(Í›7wWiFŒI“&ÉsÏ=T’'OS¯D‰²`Á1b„<ùä“ÃX؆*W®,½zõr³/è9óï¼wZëxç½Óº.c­GA@²² Yùìrl `4‹�'DZ¼õ½ìö¡ÖÛö#©ïÝ~þüù¶Y÷Ý®·mê ;I}›)@·‹dÈ»?­IñÖ×i µÞö?’úÞí#9^Ý¿m?ÒúÞ>{÷gÛòöÓ»ÞÛ¾]n÷ím“i@@@¬€kpòäI;Ñ»ÞØîÒ¥‹y>|XþùçÙ¸q£hàBÙ²eEoÄçÎxiWN;í4iß¾½»�ãÇ�»ì ØIÉ›7¯¼úê«¢™–/_nÚ¬W¯ž+VÌÔ>|¸[7’ ½±?hÐ ó:zô¨¬]»Ö Ï 7æµÏåË—ê·¿]jÂ[ôx5ƒ¿hð†¥qäÈÙ²e‹lÞ¼ÙL—)SÆì«hÑ¢þMÌ|Û¶mE_:l„n£Ž¥K—6/»A�ä®»î2¯½{÷ÊêÕ«eçÎ�RªT)Ñö+T¨`«šwÍš¡¯På¼óÎ {þ .v]¨¶X† €d�Ηçè¾=g޲”€ÞÐ×ì6õ¸ƒÓÒÕ�ìZ´¾�÷ÞÌÖe¶=»^ߣ©oÛ³íøûeûaëiûZ"­¯C!èZ† æŽ9i„ø'\»þª¶_º<šã�¶¾=îpý²ý°õl?£­n»HÛW϶Ë; € € €é) ™fÍš%uëÖ5� ºï¿ÿþÛ ÁöEƒ!ªV­jgãî]³&x‡„xüñÇeÈ�!q×O:„ € �60¤�+­"€& CSØa)"ÉÀ�aeÇ € € € �j6€!©ÇŒ#={öLªJ†®;pà€Én°oß>·ëÖ­Íì@A@È�yƲÇ1s” €@–Ь¸ E§) € € € �õÎ9ç3ÔÄÖ­[V‡�¸ä’Kä¶Ûn“6mÚ¬‹·™Ï?ÿ\¼Á ݺu#x!ÞNýA@ÒX€ i Ló € € € € €@z ?~Ü:tHJ–,)ùóçO¯]ǼŸ'Nˆ¾lÉ‘#‡äÊ•ËÎòŽ € � `È'™CD@@@@@@@ ÞrÆ{é € € € € € € €d}�ÜYÿ9B@@@@@ }V­Jßý±7R*P³fâ–|fS*ŸÛq^ãó¼d–^ñùÉ,g*ëõÓ~ö²Þ‘qDÑ��!-ê"€ € € € € € € €@šÀ�&¬4Š € € € € € € €ÑÀ�u@@@@@@@@ M`HVE@@@@@@@�h`ˆF‹º € € € € € € € �&0¤ +�"€ € € € € € € €@40D£E]@@@@@@@HÒ„•F@@@@@@@@ ¢Ñ¢. € € € € € € €¤‰ iÂJ£ € € € € € € € �@îh*S7þvïÞ-kÖ¬}§ € €™I xñâR½zuÑw  € € €@æHH8)9sæ�92W¿CõvïÞ#òÛokdíÚÝæxêÕ+#­[× U5U—Mš´B¶o? mÛÖ–2e ¥jÛ±6–�pBråJ½g`'O^)Û¶í— /¬%eË޵{Én¿eË~™2e¥Ù—î3Þ‹z�·Àt³G�FYâç*ÞÍéį ñ{n"ê™/Œ=ZþüóψêS @ˆ�&MšHïÞ½Eß) € €d'�©S¿—·Þz6à�óç/ •*Usnî]&mÚ\âÜ8Ìú—n—,ùKöìÙ%õë7’bÅJx0Ÿ‹o•·ßþCæÌÙ ëÖ%>TW¥Jq©\¹˜œ{n5i×®¶èÍÿx,×\ó¡lÞ¼_† i'íÛ×v»¸dÉ6¹á†±²cÇAwY³f•åðáãòä“?KÅŠEe̘žîºÔœ>üw™7o£|ôQ¯ `8yRäÛoËÏ?¯” ¶ÈŠÛ֯͡_Æù{%éÞýtiÚ´RŠo¬¿ùæ çs³ÞX¦GÃÊ•;ä_ÿúAÎ>»² šHéyÓÏÇž=‡�ßSeœßSùSÚL²Û=š =ô½©§Ö©<’ìÎSXa×®írÛm=ÌÖï½7Arçβ¥;ï¼Ú ÔÙ*C‡¾l~߇¬ÁÂk®iíü op~†_t~³k&@IDAT†»˜-öíÛ#‹ý)EŠ• šFÐ U@ 3dýoÁ™á,ÄÐGͼ Á úâ Æ Ù@ÒMÀf�ÒvíÚ5ÝöËŽ@@ˆ�íÛ·ÈÌ™SBvg̘7Í ž?üÙÉVV2d�¬²ð±Çî2ï½÷“´jÕ>«V–=ŽW_�./½4-èø4�A_¿ÿþ�<ÿü/ÎÍï{¤@�Ð72ƒ6NÇ«Ví4A û÷ Øë�!?˜å�U�Î�O“R¥ É¡CÇdß¾#渎K¨Ÿg6lØëÜþA~ùeµ{x¥J4.z__cÇþiTFŒèîÖÉ�=6Ñù=µVÞ{ïjç÷TõìpÈã‘#‡Ý¿e af̘â|–¶:?S{"n;TÅU«–švöïßë®^¼x¾ôêu�\ÓR>ûìww9 �¹`ÈÜçÏí½/ð£ËÁ €ı€^j)  € €Ù] Y³Vò꫟HBÂqgˆØÎ� ©òâ‹C�›…É­·vwžTþ9»qüq"ðÛoÿ¸Á ýú�-;Ö—3Î(ožÆ_¿~�üý÷fç³ü›ûÔ~œt; #G^)ŒP£Æ©À :B3 hùðÞR°à©À Úáã�¯•¼ys´“ÕfÔ¤wï�eõê�R¨P^y챋M B‘"ùäÈ‘ã¢�_|±@Þyg–ìÜy*KEVsàxâ_`äȯ�Ÿá£ÎÏpÝøï,=D�˜`ˆ‰/~6Ö±£5ýò\?�¢' € €@�ñãLJYÃb@@²�@¡B…¥\¹Šæ€+V¬jÒ_׬YOúö½Ô<ÕªA Å‹—’½{w›'Wu˜…Â…‹šúì3ËJ•*+yòäuÑ´î²e dÍšåNêûªN:ÿ3œ'Ê˺ëíĶm›åèÑ#Îøð$gΜ²|ù"Ñ'YK—.çܘ>+Éì›7¯7ûÐ6ªT©iöáBŸÌÕL:4†ÝÿñãÇD·Ñº»wïtžr?`º³uëFÙ°áÛ5Ó§­[7™yV#TÑ¡'ô)Ü"EŠIÑ¢ÅCUaY* |ýõ"ÓZûöuœ´ümZ®V­„è«cÇzòã�Ënøk€€f2(V,ŸóÙÍg2èð9rˆœ~zy3ôD@cžMÛ¿|ùvç³¼ËùL’ºuËHùòE<5'wï>,+Wn—-[ö›zµk—v>ùÜJ•*unÈ'8Ÿ™Äeu2o0ë5¨a×®Cæ¥ *T(âl›ßy/*ùò…`Ð!&t˜í£fœ¨U«¤è>ÃÍü°páVY»v—ósVH7®®jº.÷ÝÙ&xAwúí·7:?Ó§~žòåË-§�VÖyµ•Ë/o(?ü°Ìí›9±~ýnÙ¸q¯ÉÔ C hÖ l)^¼€[/Ò‰¤Î_BÂIgè€}Îþ9œß™ÁŸ�­[÷;7¶O8ë ;ur&¹Ëhú­Ç¦Ù8´è>4S…-:´ˆ~Žm‰öó íéÏÂŽÌ0% –³Me‹wÿßý›°pá\ç<¯—êÕë8÷»Z ¥¤t;ý½¯Eÿèß-‡ ø;¢+ý—LEþA�L!@C¦8Mt@@@@²ƒÀyç]äæÒ¥ ¤E‹62bij2|øS2xð“N�CyöÙM–­øï¿à< 2Û|öÙå�úºÛÛ‰{ï}Bn¾ùþ€›At‘¿þšåŒ_>D¾újŒscy•­nÞG�úNÚ´é°Loé°ãƽ°¼P¡"òÄo9é÷{ºËuˆŒoì(zy‰ Pð.ÿᇥrÿý߉ö5žŠf_xúé)¦K÷ßß& xÁßÏ Ê9¿NÝd챟œaæú«™ù›on)÷Ý×&༆¬è,Œäüið‚žÍñ×_‰¿ï¼íõêõ‘ Âøúë>}ôÖ±Ó‘öûĉ“rþù§>ƒk›0ïsæÜéjDóyHH8!¯½ö›¼òÊô€ö²ÛŒý¡C?œ~ÇãÑÍP4bÄxÄgWhf¢9s¦›ìD-Z\ ï¿ÿºóóý/³Z3µn]ÝV•~ýîq‚­žwç™@�Ì%@Cæ:_ô@@@@²°ÀáÇܣógÐ ͼªŒ; f¸Ù¬ºêª~ÎÓíÍL†Q£^”çŸÿ·yRõþûŸÚôõ×ÿc–µk×Ùyz¹’scv‚ fÐ,S§®vž�¯nÖë0½z]h‚ê×o$×^;PNœ8!_~ù¾“‚†Ü}w/©Zµ–óTyó€}L›ö“\|ñiËr8�-÷êu‹Œÿ¡9žÖ­;8O ŸÊ´P©RuéÒ¥— ¬3æ-ám`þü?L?4p¢sçk¼«˜N#�:u3 L˜°Ì9ç ¥S§Ó’}ÒÝÛ•/¾Xhf5@Ÿè×!'tè†_üÕÉÞPÜ9� ÜêÏ>;EÞ~ûs³ú¶ÛÎq²/– –;¯e&¢D‰‚ÎÍɳM}½ܳççó°ÅÔ¿òÊ3LðÀâÅ[å»ï–8C,tÜüo¢N�R¢%&N\n–\sM·Šw( wáÿ&&MZ!Œ3s}ûžm2IÌ�»ÞìK×=øà÷Nÿ¯t7›8q…¤ñ¥™×ãoÙ²š?ž 3f¬u‡¯p+§óĺu{Ü=^}õ©ãw&1qôè c~ñÅuœ'æK:™*rËÒ¥[�Ã[oÍÍxqíµM“hAœásR~þ’l8‰•‘ö;ñ÷TSç÷ÔBdѺu ç÷Tâ“ÿÚ¼¯–h?l£Ãqh¹ì²úN›2&ó‡~NÖ­Ûm–g§ô4›Ï9ç\(ú7Pƒê4PAÿæ=ôÐsa94 Oí48.ñïÁ© º&MZ†ÝŽ ÿ0Äÿ9¢‡ € € € € �Mô†�-:œ„·hð‚ôî}§ü¤“ ]‡eØ·o�óÔ÷`Sõ…>�®]O=-Þ±ã•Ò£G+yë­gäškn2AÞ6/¿ü:ó”ªæA÷ѳç&@`ôèWL†­ÿé§ÿ5Ëj×nàÜЛíܼÎcš¹îº[MFmÿÕWsnܞʬ`÷£OÊü„šB‡»ÐTß tÒï/1Ceôï?XZµjo«›w=N½‰¥�xáMþᇉOEkDÁ‚…¶c&m®¾º±ó4ôLs#W3<ùädçfc5';F9�ШQçå»s­÷ì³—IýúeLMã?tèçIêyÎÓè¿» Ë–m3Á Zéûïû™›à:Ý­ÛéòóÏ+¥ÿÏ̾o¸áL“…a̘?Mð‚]0~|o3äƒÖ×òÀÈë¯ÿ–8â_Í ÃIhƒ!ñÄBÔ \¤Ã h¿µ¼òJçtbpN×® D³I4köŠéç_m59rä¸üç?“Lý[o=Gî¹§u@V‚+¯Ô Äø¦R:ÿ£™'´hfƒâÅß¿Pݺçžó�Œ,9™]‡lhܸ¢<òÈOæÆ~r ±œ¿P}ŠdY¤ýÖá!üb3LÈÌ™k�Ï^sç÷Tõ€]DûyX±b‡¼0jTçæ{M·=ýlœqÆ î|v™ÐÀƒaÃ^q~Æo0Ãéq7oÞZ† ¹E¾ùæã$4x¡@�B&€¡n݆AÁnÙÅ�ãD + þeÉŠGÈ1!€ € € € €q(°uë&“ñ`âÄñòÁo8� ›'Nµ«O<1ÂyÂ7ð†âÀ�97 ß�Zµê›=¹rå2ufÏžf2Ô¨Q7`mçÌ3ÏÍ® eêÔÌ»÷ °Á º\o& pŸ©2sæT·êçŸ�6ÓÚ¼`Wvèp…™Ô!)üEÓƒðÁ$Ó ^ТÁ É•³Î:O4XB‹fj°eçÎmî={°‹yOc�2e 9OÖßàÜ ¯lö´cÇAçæâb3tCŸ>Ÿ8ç÷eçþײeËþ�=騱¾¼ ôæð­·&>!½bÅvÙ³ç°Ùî»ï–š÷«®jä/˜Î?zóXo´kÙ¸q¯yÿüóæ}ðà6Á º°råbòÔS�à˜Ê1ü3wîÑá ªT).—\`T¼x¹ðÂZ¦õåË·›÷ 6›§ê5ÀÂ?TF ÝHµM7lHÌÀP«V©¨ÛÔcÒàòC3Ìž½Þþe™É& �-]º-Ù6Óûüi‡R£ßöÀ¢ý<üôSb¶ýìxƒ´=ý™ÈŽEÿFtïÞÇ ^PfHËæÍë�Ï×q3Í? �½ÈÀ�½Î7G‹ € € € €q" cv÷éøÔ·üûß/ˆá/º.TY·nµYÜ´é97�lÝF�Îvž†þÚ#~™]”ä{�: Íú5ko¶éŒöUËС·:OÀßk¦ýÿìØ±Õyâüp@à…ö9gΔ=G§c˜?ôPÑa04Óƒ¶3n\b …eT«VÛßæÓP@oròɵæfõÌ™ëÌ êùó79©Þ×›½~õÕ"™>}�“Ñ`€-š/ÙžT¨PÔ$8pÔ |Øg28¬\¹Ãl÷É'™'øý�h]-ÀPµj ÑLZÎ<³’yOëÖ¬Ùev¡7ìÏ9çõ Ýi`‡– ,V¯N¬¯Ùòç�¿Û1z3?±¿§†’0 "øçðáãòòËÓäÃç™ÌþMŽKð/ ˜×,é}þ´±öÛ{Ñ~V®L l9÷ÜSCæxÛc:Q hÑ.ÅÑ£G� ·øûÙq;Ȥ‰?õiÂJ£ € € € € €@ÒšùàŠ+z›óåËWvnÈ×2Ã,”,™˜f?é­O­Ýº51}‰¡Ÿ¢.Z´¸©¬‘›ùA‡“Ða*:`2<è¶ ‘?�°Íè¸ñ©U:uºÚI¿?ȹa¾JfÌøYZ´h#ï¾û²i^‡Ñ dŒ€fЗ-T 7±ŸyfŠè üñãÊõןiW'ù®7õuû#Gov¯_Ÿx#½víÒÎ>Š…ÝV‡«Ø¿ÿˆ»¾dÉðŸI·R*Lhö-zã_‡ˆW¬�ÍpPºt¡pU3t¹�¡EÏ›z.œ|à‰Ö?xð˜3$͇fø�¿ì²úR¯^Y“5ãàÁ£òðÃtq’%#Î_jôÛ{PÑ~Ö®Mü|ÛÀo[™q:þSÙt>¼æ=]§¥`ÁÈ~òäI¢ÈÛÓ �½`È^監E@@@@�8hذ©<øà³1÷¦B…*¦�mÛ6‡lkçÎħ~Ë—�ì)u¦A‹I¡  6CKh@ƒŽUn34„ÜY ž8q"äVºßk®¹É3þçùp“ÝASŠk¿Î9§mÈmX˜þ:¬Ã€-Ì� n‘µkwGÔ‰„„æÆ¹V®P!1»ˆ-èSù}ú4“ž=›$ÛŽî[ ¶o? %Kžº™šì†)¬P±bQ³eË–Uå•Wº&ÛŠíÓî݉7p“Ý �+T¯~êI÷)SVI§N§EÔͺ¡çZý¿þº�|uª�þIÌ:‘\CEŠäs3pDzþlŽäÚ·>–~Ÿ8ᤌð•h?:‹;dН¹L7[¼xbŒv|×®íN•SŸ{0G�qà4P�‚D"�²Ü]‘´L@@@@@�4¨Zµ–ÙÇôé娱ÄûÞ�þöÛ$3[½zïâ°Ó:Ü„– NÝ@¶Ó“'v»hWäË—ø´÷‘#áoî^sÍÓì?Œ“'ž¸ÇLßxãÝ)–"Ú>R?Qàë¯Éî݇“ä(Z4¿Y_¾|è¡NüO›¶Æ,Ò›à6CA�:¥Í² "î¤~ý²¦þ/¿$£bfÒðŸš5oØêÍþHnBÛÜü±N‚o€§aW#jº`Á¼ré¥õMÝÇ›h‚AÂm¨¾ùf±Y={özó~ÑEu‚Âmny¤ç¯`ÁSOä:t,\sÉ.OI¿óåËeÚ=räxPûÑ~*WNÌ*2gΆ ¶2ë‚úõ™®ÿòË!á×_Oeãˆ6»PÈ} sçN|N{ß¾½¾5Ì"€@f €!3Ÿ=úŽ € € € €Ù^ yóÖ¢O¶êo¾ùt€Ç—_~ sæL7Ë.ºèò€u:ãVBo6Ù6¼Ã4\{í@³í³Ï>(?ÿüm@;:ÌÄ„ _È A×,On¦bÅÄqà§N }ãK·¯Y³ž´nÝÁ4µzuâMí®]£ÛOrý`}ò£FÍvÎÃpùïg˾}§†nÐ-uø�·ßþC~ÿýÓÐyçU7ïÞvî<è Grj‰>¥ÿøã‰�5žã®èÒ¥�™Ö€„×^ûMŽÌαhÑéÛ÷SÙ»7±W\qº©ÿÊ+Óåï¿3�,^¼U®»n¬ÛvjL4mZItx Ípÿýßulݺ_†� Ó§¯1»;ë¬Ä'Îu¨�Ñ£g»]8z4AFŒ˜)óæ%ÿâ®È€‰!C³™èy¼âŠ÷Ýa!lW4SÆO?-—¶mG8C¸$ƒá¡å×_W;CÌœ (ظq¯<ùäÏvÓdß#=%Jœ"D‡(±EƒH}t¢¬^½Ó.Jò=%ý®X11è`êÔÕAmGûy¸à‚š¦�qãþ–¹sO1hŠaÃ~ j?3,°AfÏ=÷o™={Z@—W®\âüœßm–õï¯ÉèP!flV‡+ÉÆ�kS¡Eš@�x`‰x8 ô@@@@H¡@¾|ùå‘G^•[né&/½4̹©8AN?½™“Ê¥l0dÈ‹ÎSîå‚ö0pàÎ Ù¢ÙÖ¯_-K–üeêôèÑWš5kåÖïܹ§|÷ݧ&P¡ÿNÒ°á™&CÃÖ­›ÌM+^Â>‰ën”Ì„&Œ;BÆŒyS–/_(¥J••?ÿœéì節Tä×]w›üòË�¦µ¾}Iá‰iü“ižÕ©, 7íÿóŸIæU¥Jq©W¯Œ¬\¹#àæñ÷3Ëý»5j–è�çF�*ˆ>É?kVâü5j””o<Ë­®C ÖÞÜ”~ñÅ_å£�þ”æÍ«˜@½á«�Zì°#=z4’Ï?_à鬗Ë/íYÔÍz°hÑV3…Ûp*MäÍ›Kž~º£\yåû2qârÔqÎ9Õ¤hÑ|Îþ6ËŠ‰Ãµ´n�x£Zo˜ßqG+yõÕéN‘ÉÎgýO)[¶°Ìœ?7ZË•+"Çw“Áƒ¿5ýïÒå]g˜–’ÎP1¥�·éaKõê‰(Ú¶­mŽGƒN?ýã®ÁK–$?cë'÷ÍùÓωÐüûß?ÊgŸýmšŽ6$%ýÖÏÔØ±:çnžó{j›ó{ª�ó{j£ó{ª¯ó{*TŸý¬4kVÙ|^{ôø@š6­h2sx�“3‹·õ½zÝl~�ëߎ«¯>ß9¦–NàY}ó÷gÖ¬_Mwõwûm· I“®—+§AE œÏî"çwÀÙæïÖž=»œ÷såÞ{ŸH“}Ò(¤½@δß{@@@@@ð äÈÙåÙœ9S˜ç̾¾fWøðÃÉ&ƒf\=ú¼P¨Pyùå�œ›Ä‰OÁúû 7›ôÆÏĉãMð‚Öè¡çœ§¨Gú«:OÄ*O=õ¶ 4X¸p®|úé(™:õ{3¾¹¶£OØÚb�-©>_|q7'èâA³‰ÞèÒa"6oN¼±mÛÑwmÛ–ž=o¶“¼§£À3Ït47â5pA˺u»Í |ûä»Þ”3¦—ôés*ÁÛ=½!~øðqç3¹Ò ^¸êªFNPCoÉŸ?ð9ËnhfÚjذœ¹�þÕW‹œ›ÅKÌ´îÿÎ;[‰} %W®òþûWËÝwŸgæ5sÃØ±óMð‚eqß}mÌrýÇþøäȑó,ñg*W®àŸ­œ9ëù?ÃzÓyÊ”›åâ‹ëšL È A¼ ÃaôêÕÔ îIÚBw¤ &~†ÕË/<òÈE& CëØ}étF=–É“ˆè1h?u{c]Ïß½÷¶–7ÞHÌâR½z 9òJSWû«î¼ ŸƒçŸïd!OžÄß[öxBùGsþÔ±}û:¦9 \Зžã7ßÔ ¬Ä¡GÏmðùKI¿Õæ–[ÏŸÞüðÃRóY´ÇíçaäÈîÒ¦MM÷8ÔX?×o½u…m2S½çÊ•[>ùdšôëwÏÿŽi†Œ÷®ósž¼Ð­Ûõ&(­hÑÄßöà’úá=�Þiû³h·Õ¶råÊeþÆÕ¨Q×dÒl@3gNqƒœìþxG�Ì%�ÃIïåIÜ”¹:OoÅù¢4ʼnF}ÔP 6L.¸àX@@�¸àûK\Ÿ:‡ € �J«V¥RC)hfË– N6…5ΓÞ¤R¥êÎÍÑà›³Ýº5wnNÎ27ž4[ƒäÉ“W*T¨Qšo}ÂuÆ5’/_ç‰÷ªR @Áô4q“C‡ʦMëÌ�(M®%¼åí·Ÿw';7ý:ʨQßyW1� 5ï¥J¤ŸÙƒ�ÊÖ­D‡…(Y² Éx ™ B•çž›ê<Ý?Ãyº¿� Ð\¶m;`ªT)æœïàÏ¥¿ zÐ` JB3+Ø!üõt^ïtlݺÏé×!)S¦�yRÞ«j“˜—éð :lÂî݇¥\¹ÂN–“BaƒÔmùòÎMÿ<&ÃA$ÇK£=¯Þ}íÞ}Èy‚~·ó;!—9.=Ï¡Š¡Y8tHŒ Š8¯”gG‰ôümڴטkæˆÊ•‡wÕ·¤–¥¤ßºÍ¦MûLÐŒNäËx£û‹æó ÃFèP*j¦Ÿíx+)ùü$$7{43O‰¥�óSÝ P:5üGZ£ÞêÔýîÛ·Ûù=QÒùP>-wGÛi(`?{i¸ šÎÁ¿a3A§é" € € € € €@hM©­¯H‹ T«V;Òê¦^±b%†yˆjc_e ~¨Y³žoiâì±cGeĈgÍLïÞw„¬ÃÂôÐìÕ«ë«DT;Öözã7š¢Ùt(ƒHŠ+èMm}¥WÑcÒ§ç«TI~�êÖ¸q…ä+ÆA�âÅ ˆ¾’+ äq†�H�Å‘ž?½áK „SJú­ÛÔ¬™8„F8—h>좯¬T4ƒþ-‰öïIjh¦†rå*šWj´G �±ɇ8flÿØ; € € € € €@6øñÇÏMZð*UjÊyç]œM8l@@ ûÀ�}Î5GŠ € € € €xÇX'3ï¼ó‚éIß¾ƒÌqÒ-º¡€ý|éÓõ@@ †�ˆD‰: € € € € €@øì³ßÌÑhÊïx.¶Ÿ9sæŠçnÒ·0ƒ�/wß}žØ@†0ÕXŒ €¸ñýíÔí& € € € € €©%ï� ö83K?myÈ™SS/�~!P…9@HJ€!$’Òa € € € € € € €¤‹ éÂÌN@@@@@@@@ )’Òa € € € € € € €¤‹ éÂÌN@@@@@@@@ )’Òa € € € € € € €¤‹@îtÙ ;A@@@@²‘@ÍšÙè`9Ô,!Àg6KœÆ ƒà¼‘° >?Q`QRM€ ©FIC € € € € € € € �RR*Çv € € € € € € € �j !‘j”I7´{÷nY³f�©T½zu)^¼xÒ°@@@@@@@�l$@†t:Ù¼0zôhó²� é´kvƒ € € € € € € €@Ü À�ƧH3/üùçŸ2eÊóÒi]FA@@@@@@@�S0œ²H“)2/¤ +�"€ € € € € € €d1�ÜYìx2ýáhv zˆ4KƒÍèP¼xñLì €@°€ý» kªW¯.ü¾6b  € € € € €d Òø<êͦ޽{KµjÕdôèÑÉîÍflÐÀ„Hн±Õ¤I“HªS@ “ Ø¿ Úmý{ÂïûLvé. € € € € €D,ÀS¥¬¢>)«7›ôÅS³)3d+@ ; h šµÙŒ;ÙÙ‚cG@@@@@�¬-@†8;¿6cC×®]#ê™ÞЊ$³CD�Q @@@@@@@�  €!ƒàÃíÖfl·>ÔòñãLJZÌ2@@@@@@@2�CHdšSEG@@@@@@@Ⱥd`Hãs«c—¯Y³&`ìröA3-èpúNA@ 9ý{Âß�ä”X� € € €@úüöÛY´h»äÌ™Cúömr§“‚ó„\·téNùõ×ufÝ•WÖw®ç Y/^?~\<(E‹Ͱ.êþóåË'¹r劸‡–üùóG\?^*ž8qB$OžÐŸ§ÔìçþýûÍ~Ô65ʱcÇÌ9Ê™3òçi:$ ˆx÷±ø¨«¾òæÍ›ìþ¢íW² ¦S…”œƒ”tí·ß~s~/.r~/æt~/öMIé¶ÍÆ�å»ï¾“ªU«ÊÅ_œnûMnGúY}¢ÝÜ­¿téRçïܯfþÊ+¯ä~¨+ÃD$‘ÿň¤5ê hðÂèÑ£ÍK§ýóA°@�üý�Â"@@@ “ ÜqÇrá…FôÒ™¡<ýôÓÇÓ®];éÒ¥‹Üÿý2gΜ˜aݺuRëÿÙ;8)Šì�IENáPDQDLˆò1+˜ATDńРÄ;3¦Ó3 bÎb•Ã΀ˆˆx¬ùQ@Q1‚‚‚z≠ÈþëWì{fgfgfgwgf¿o?µÝ]]U]õ­îžÝy¯ÞëÐ!$)�ª#S§NueeeîÇ̹™yóºž=s¾à•øKcíÌšµÀ�xâ‹®S§®Aƒ«\³f×{ÿ žËÃn„™±rÚiÓ¦™»ýö÷B\ðJܹB<�‚øá‡v|p˜)Ò[´háÇÙÀí¿ÿþîõ×_¯V·çÌ™ãºvíêÎ8㌔í¨Ì°aÃÜŽ;î 'š5kæ7nì6Úh#wà 78)—“Éüùóý¼œú-¥¸Œ.¤°”²µ.$“±Z¿ž|òÉÐW-„”‚}»í¶szÖ4ù’Ï>ûÌ]pÁnë­·lV]uÕ`ä¡gîŠ+®p2hÈV¤½üòËC›ê·úß³gO÷ÔSO¥ljÚ´iá^ÒüHy»Æk¸£Ž:ÊéùO%¹òyíµ×Ü�!CÜÎ;ïî!k¤RbçÒ¯TýÍG~¦÷O.sP�þÍ›7/ÌñÀ�ƒqSuÚª�ºwÞy§ÿtS¦L©�Ë¥½Æèѣý®w™Þiz·é9лõ½÷ÞK[×NžrÊ)a<¿üò‹eå¼ý׿þåŽ?þx÷Øc�%mCï û¦ÿþIË(³M›6þsîöÐ/½cdE ©QþåR~Úi§•÷èÑ#.)Oçª+þEkWû ”{Ïû÷r%}žð¾/­9®�£±ûšû¹>Î>c† @�m·Ý6ü�gÿë¥Û¾óÎ;EmÀ€iÇäWq–{…ZNcùôÓOcmñÅ9µa•ôˆx�?Þ²²Þ}ô߯•åg�õ¯¸ºãÆ}òuNiÕU¯�;~è¡ãÊûí/å­[ßʼõÖ×qç íà§Ÿ~òý\þÝ„m×^{í¸<¿š9§n{¯“åº?ÔnïÞ½S¶q×]wÅ]Ï+ÚãŽ÷Øc�rï"®þ|àçá�r[n¹eÜñ½÷ÞW¾¦2«úá�2bãÓZ·n;>üðÃËýªú¼t÷ÜsÏ�µ«9Ðu¢ÌvÝu×ro’ñµÔ¯~ýúÅÚLlïÖ[o­Ô–7މ•×µ5OvŸië•Ì•êäÂGï oX×¶�uóÍ7¯t�\úU©‘+?þøcÿ9°4Ü�bê�jŠªÂqüãÿåäi¦º¢g_ï½ïíù‹¶)ï/wß}wÈR‰Ê§o(+?hР0¾Teɇ@�*M(PÐXÁXÐÓCç T›€½çý‡w°leÅzµ‘Ò@°ûšû¹&ƒ.@€ �ë¯×ªýåÿ¾ÿþûIûçÇå^AU~ß}÷•{%G¹W8T*ç•€å^W®•ó&^QW®º>¾¶e…­WBÇÚóFåÞe|ÜùL̃wo_©¸­ðN\á¬ÕÐ^aVyj¥³ï�rU¹Æ2sæÌ¸¶Ǩ2ÿüç?˽2%´Wب¾7 |}ØßÀGu”¼R&±x¥ãE‹––o¸¡¼\YþüóŸW:Ÿ*c„ÿ„:ª7{ö‚JÅz÷~<œ¿á†ì½mhN³C¥‹g‘á]“'--ovÏfãeÃ+Ì˵º_I+‡ÕF: .L:Oº¦Wœ†ú>,@¬�º—­_‰Ïˆê˜'”¿ýío±:Ñ�Lž³hùtûÙŽÕ¼ ôêÕ«R³—]vY—¼äCRÍ«ÚöÆ)áZW_}uÆ—òJá”u4ך“¨†«®º*äéZ‰âÃ%ļAè�g’ ŸÏ?ÿ<\G××½Q•äÒ¯h›uyÿd;Ñ~g»¿hÑ¢Øó[•=‡Þ­\žO4Ÿb”LôN‹¾ïõ~–§oÔW\ŸeòR¤ÏÂx |ÆŒá3Oõå­"•øP8á^xæ™g’Ñ31yòärB¡|„ þ½=;®\âg�©ÊúPåÞ@*VVý–!µ£¤þ%“TÏ`ÔH´ÝhÞP+æáÀcEO…}y@�}.ê]­þ¤ò!°ñá|’óáWÂyy°ð†J±}yµH'z·ëÙÓ³‹@ Þâ)f(Šyöè; �ª Ø{ÞþáFá[53J>»¯¹Ÿ ®è! @€@íˆ*‚¥ìH#˜›nû?Q[¹Ÿ–r"*RÊêœÜ¥K©$ã«## ‰ÜÂ+Ô­åÛVí=ûì³ÑæªÜOgÀàWoÇ®!e—DÊ(SfÚuµU?½ЏëIqme¢Æ6ÆÁƒǹ¬·²~5jLá-…µå'Û&*Æâ:Pq £!¬½ö­¾Ýd%’çM™ò]¨§º Ä�¨†…žP»Ùʵ×^W¢’>Û¶r-/c1­Žûr¿ú=´‘΀!]ÿ¼‡…P߯Ô�“’\ýJ¦W¡;î¸#œ—²7*Ù›�·þ~I'2âR=Ý'2!ÐØß0 ” ¹ÅóÖ¦ad Y#w| @€ @…IÀ¯vp@èÜßÿþwçWWÇuTn¥wÙeçÁ­´\E{e‘5j”ó Íà*¿C‡në­·Ž«wÅWúq™ÇsLp›îîä“OvmÛ¶ur[í�'Ü~ûíç¼bÊùàɪf•ç %By]g…Vp^éá¶Ùf›~À+Rœú¡|¹�×X6ÝtS÷Í7߸6mÚdt¯ˆåzCí* ‡ÜÞû•¤¡ÿrÞ AÞa°{ðÁ¯uë®»n¬}¹ð®J^xá‹PdàÀ-|{U•þãüðánÝÚx·Ü+üq¢bo×]× ù³gÿìû>ß�¿U¥2…–á•ÁݹÏ>;tÏ+æê¤›Þ(Æ=õÔSáÚºŸL4ç…’H&6ÿŸ|òIìt®ÏY¬�<íxEihi³Í6«Ô¢ž}ÿ·Új«Ùa^¶ ¹¡Ð~•|xFõ\é}�‰x#šX±M6Ù$¶o;6Ÿò¾A’jžô^“(,�‰Õ·ö,_ÛT|,D„‰h|šw…·�‹{½[þ *¹ô«îŸ\æ :îl÷_xá…Pň„÷l²ú -tÝu×…°çŸ~x·?ýôÓá¹ÕgT«V­œ_ñ_©jûöícŸ_úüн)Ñ祅ZÒ|{å½[i¥•Âç‡WèWj'š¡N…%ÑçNTÎ:ë,ç -BÖ‘Gé:uêä¼Ç§6'NœBÖ(¤‘‰}ö(ŒÎÿýßÿ¹7Þx#|FG?¿½§·ÕV[¹ÿûßÎ]„÷¥îÁ 6ØÀšI¹}ñÅcçÖ\sÍØ~tGÏ©ä¸ãŽ‹f»‹/¾Ø)üŒ¸yC·ñÆ;ïÂi¾´õÞM\â3úÞ{ï…þ‹­…¯ˆ6ªÏr}†J=ôÐú¢ÿþN¼ ·ûî»G‹Çí{ƒÅÐ…Ògtô9�+ÈŒ@&V”)\¬`,ܹ¡g¨kþްŠBVÅÚGŠ“€½çýçv°ReÅzqÎ#½Ž'`÷5÷s<Ž @€ê/­8õ_æ‡ÿû´\«Uå®»ºÀ…rZY¯ 碫šm…¨êhëG}V—ªmy^ˆº×OtkíJ¡=­ÒL¼VôºÑýT´Âu§�v í™;|sÍ.o ^!kF×2×ç>Vv,¿* ê§ÜZGÅ+WÂ5µê:*ú?DLªZ-­cû>âÝw+»é¶2Ñí¯¿.ñßͼä¯weH“&͉žŽÛ…�ѵô>0-vN[[¹¯•î&ÙòQXcf^%ìØ¶r™ís.ý*„û'—90®¹lõþÃwß}7iõiӦŨ+´CTž{î¹Ø9ó†õÀ ¹RX a¡,�<¯$Þ3Þ0´™Êƒ}Ö&z ˆz;x饗¢Ý ŸS\pAÌk�}¾jìÞ0!VVŸaÖ¾ÞÉÑÏ%y41ï ÓP•h¬ÆöôÓOOZ\!VÄ^áÔ~T”§s ­½?š"Ù»C×QÝÇÉäÉ'Ÿ ç5FoØòT/úynç£[óÞpç�wF³Ù‡@Rx`ðO@ ˜Çm%ò¾`û>ffl_žÖÃ#CÁO¹Í§æQóÕ¥K—0§ßq:@€ @Y�­œÔŠD¯¬5jT© ï¦?äyʼnkÒ¤IÜyynðFaugÜ  ò>ŒD\¶Ú×êW‰w1í:vìwþÔSO u´JSýÚb‹-âΧ;ðJ§U£^™î¾úê+wÛm·ÅVN«�[+O«¬²J¬9�ë / «]½Åy%Gì\ºVÃilTößÿà]B+uó%3f,_]¾Þz-ªlòå—gºO|ѯtý!xWxæ™]×®ÉWЪ±öí—·9gÎ/U¶-pì±Ç:¥Úy6Ъ^[ ­UÅš+­ðÕjöÚ­–ɰaÃÜZk­»¼¾KѪz­Ü—Ç�o¼1¬*V¿õ]™V'K4“lŸ³ &¸©S§ZõØVÏÔ>ûì;ÎfÇ»±�±]yå•+U�¾ôœåSçVŒ4¯Ñåé®]ýo0¢åÍÓ‰Ý;:'//çž{nà¨ëh…þ:ë¬ãæÍ›ç^}õÕØ<5kÖ,4• ­ú6Ѫû¡C‡†÷­òäiFžl´ò^žôΔdÛ/ÕÉöþ¹ÿþû�7QÕ8ÑjõlÞ»ÑʹÌA´~¶ûúœ�èûËd"Ï:}Ι×+§ûö.ÑçE¢W}þDŸO=ò0f̘ЄIâV\qEk.l“ÝwVÀ‡5 ŸiòŠ�è}ÀúyÄG¸ÝvÛͪ„­>§¼1O\žôÙõz¤Ï0½kÔ:*îs©qãÆ®gÏžÁÃ�ÆšNôwÁ 'œ<%è�ªç#™xC„�­²j?*ê³—¼Uè™±÷†¶òž�(òdsÏ=÷„ìƒ:(ñt8þÇ?þ¶ÑÏœwÜ1¼÷u­gžyÆÉ#C*‘G ‰¼? ¨Š@ü]UiÎC€@Á�¢[$ë0‰þhìÞ½{Ø—;?ûZÿ¼ùUA!Nò« Ø|Ê�Aó¨Zl ²Ãt € @€r" ã)N¤¤ñ«Q]‹É•ã¦$•Ûë!C†$½–RBÈ•¶ITùcyÚšÒ©k×®Ñì°/%£òå2[Ù(Ò¤�SŠŠ 3¤éܹ³óËì‚Gçår;Q¢n«åÞ}�5ÖH,’ÑqË–-C9¿ª7£òUúõ×¥±"«¯þßXfÂιç–ã…~ý6v7Ý´›w™þ‡¡FBÑpØ®]ó°ýöÛì ’µUÓyreîWI‡ËøÕÞÁ桇 a?º#�1Ÿ}Óµí»¯ƒ>ØÉM}T¤ì”¢S FÝï{ï½wôtl_ z“lŸ3¿"9„*±ú¶•Kû\ LѨ¶üŠnk2¶Õ3d’ÌÀÁÎå²õ^œ’¼hN@l5¯ ³P•¤zßX=½Ÿ$ÑrzæÞAJU¹êOÀä¹ð™?~캺¢mèºjÛ¯Øw g e±îálû¥ d{ÿèšÑС“þ— G²yïZ=m£l£ù¶Ÿlì\¶[ ¤z«¯¾zÒêÞûOÈ÷Þb’έ³$3`0£•hß}öY8Ô8-¼Hô|º}ûnU ÿD‘ñ�dç�wN<•Õ±…q–Ñ@¢Ø9›ƒÄó:Öó-#B…d�È( ™a˜ÊY K$Š t]tÑEîî»ïv2êÓçºÞƒÉÚÓs§¹�Þ YX©/½Lô,É8EÏŽ �Ò0´k×.TÓg;�ª`ÀP!ÎC(p¶R?êeA]ÖD2V�L™2%lõKå£Fö‡S¬;5BÀæI�럢ª¸GçI8Jì�ÄpÀ/@€ @(zRx·ÔaO<ñD%O6@ïþ<¶"[±©m³��n3UÛŠädŠ µg†¦ø‹^#ݾV¶ú�ÁK„V¿KÁ¤<3ªÐXL’];“üûï¿ÏÙ€!ÑK…]3×­0´n]yE|º6‡ Û¹JãÕ_uÕ屨/®¬ôJ×~]ŸSŒxÅDoÛ¶m0xñ¡‚׃šî—¾ëÚsÏ=ÃsáC ¤ô\"ã„™3g£ykÐêt­îßf›mœ”hRV›’\ž3ò$Îëƒ�;jayÙlÍs„ %ª4þóŸÿœx:/Ç2Œ8þøã�˜É‹Š”©™0Dûã]ÕWZnãiÓ¦M\?9ä·ÕV[¹{ï½×}úé§ÁpC ´b]××wbú>Í$[>2º‘HA«ÕíQåK¡-e¯ÎK‘nž²éW.÷Ï™gžéôžKÝŸ¹J®s�Ëõì^L¦·ö´HKâÃxO3íÃ~²_É>’•“"]’x%+ÍÓ½g òZ”(zOH¢üËdrœxoEë$zIˆžÓ¾Œ|8è˜×‚5|~&–Ó±] ³|X¤Jž+tþ¼óÎs2Ñ;NŸ÷æqÆÎÉ I´?20‘˜G›pù%c-½÷£bF(ãÆ�s>ŒOø<ˆž·}3®É—a¡µË¶4 `ÀPšóʨ �zD q¥¾)»¥ ·?ì•§æ$*/� úGOùfäP��ÕÉPmžtq¸×ÉpQ@€ @E@«R÷Ûo¿Ð§k¯½6(cSuP® õÅ¿”7ß|³KT¤ª—._ßÈõ¿¼6$3\ÈVI¤Už‰+á£ík6]Û<%XSpêØ”Žv.Ÿ[)1³‘-V Å¿ûn¡[ºt™Wü4̦z•eçÎ]îyáOZ~�*+P�hØ­&—r¹&å•W^ Þ ô<È…»VGq‰×–bÔÇvOÌŽ=2°‘äòœ)Ì€R¾E!b©ï“W„›¢U×L|~òÝ3Ä�KüL$Úõ3q…¼ \$k¯½v¥æTVa@¢¢÷�¹³—�ƒI¶|lå·êK™›¨HWè“İ™ö+—ûçÄO´Ëæm[�9ȶfè¦wy2ƒµ'Öú¬9å”S‚¡H¶×H,oï…!�‚L�öž}öÙð*oÍ›/÷xm[á+&OžìæÎ�Í®µ})õåIá±Ç Ÿ‘ãÇ�†V©:`ÆO2‘Ñ >‹åµIãRø yUѾл[ùÉDÆE©Ä>Óu^ýOö¾Õ9c[ÕÂ>•E �ß¿²à @µFÀVè›ç}ðËAV—JÚW^b¾¾ Ð??V¯Ö:\Ï/”8_Ùâ°ydþ²%Gy@€ @…G@1Ïͽü‘GéÎ8ãŒ*;i f"²ÑF…fä>Q´Jýõ×_Ù5¡Œ6 Å·O”7Þx#dI!’Ê%yb�lŽ-^º­δn£F ¼ÛíåÞ2 ó0~ü!Þ8äd¯ÀýSF—˜5kyH»FF•|!)ð´j7™»òLÛ¨n¹hø œ6/V6Õ}§çkË-· ŬŸVG[{ߘÑHô\²}…³Ð\ËH$r&[>òÈ¢P6’dL?ù䓨å¥È®JRõ«îŸ|ÏA:ò6`ÞR…°÷ýSO=•®©ŒÏɃŠD÷E²{,ÑÅ–¡“äØc�µ¬¸í&›lŽóõ×xúÌ•1�”ÿ2îyë­·Ò/ÈÛ‡…�èÛ·oÚÖõŽÓ;S¡§Þ}÷]7hРP>êéW^t$ Ó°aeµ±ž¡HÔW…JL×\sM8¯pQ©dÖ¬Yá”Ý3©Ê‘¨|'Â€Š‚€Œdi)o ú#D«ú¥ÜFJ“€æVs¬¹Öœkîu € @€ P\¤ÐUŒh­®–¢OJˆLV�ÚJ]¹ƒ3fLÜ ¥L”r(]ìé¸ þà°Ã YRO˜0!vZ«hÏ?ÿüp,%£Ü~ç[äš^"—íÑÕä2ì�ÛkÉI'�¶ùþe ö^x!ë¦7Ýtù*íiÓ–»0O×À‡ÎwS§Îs?þ¸(]±Ø¹É“—ÇïØqõX^&;7ÜpCPbK‘­Å5%2Ð jÝ·Q‘§SˆI)•hð¢ï3Ô7yJ¨®\wÝu±ûVÏÍUW]•TÙ–x�Dã‰ÇÜ™ ù /¼0x^°:ù~άÝl·ÓþþûïÊL«/%±…�±¾Ú¹\·òððè£�†ôÑ6ôN¹ë®»BÖ®»î=Vrk^•ò!* Ç Q?£á¤lÖûF’x?$ÎÑo¿ýæ.¹ä’ðŽ–¤¼Ô@IDATPyÍSTrá#ƒ‰\ô›'˘ÉÞ; ¢ð&ÙöËæ$_ïiëG¶Û\æ ÛkXyûŒ˜6mšeÅm?üðp¬þzç/Y²$î¼Â”ì½÷Þ¿¿aðàÁ¡�~ýúC$)ØÇŽë>øàà¥(îþ@ï-ÏȈe»í¶K<Ž<ðÀ°Õçk¢·=wòt ¾æ[¾ùæ'c¤‰'†íÛo¿]å箃è~�DY´h‘Ûzë­� µÅ>s­žîñÛo¿=;âˆ#‹‡c{ne,‘*Ô‡æB"o-ÑpÖ!³â—¼?H ¢*N³�@BHÄáà€@ñ°ýêq6! l%¿êK.O úgRùHáˆÎ›¹³° …Ûkz@€ @‰ZЉ¾Ì¯*LÂM7ÝVˆËà@ŠW).ä½AÆZí+7Ú¯½öZX�ºùæ›'^.å±”Nró,øî»ï‘kny^0%ƒÎeb\‘ò")Nè{ ŵ×u:wîì¤ø�"ôé§Ÿ!-¤O†"E³eïµ×^A)+ø‡~V+–øÔ©SS*f¬á}öéà•L_yåít¿Zv}ËNºíÛ÷Ÿ~, ÝsÏäz÷î�´ŒeªÜèÑŸ…Ã]vigÙme¼bÝ·¼|mõ=Ò-·Ü’Œ¶Øb '%sÔ˜FJðtñßû"…Ý�7Þ²M¡¬ð C"Ñ*{S:ëØ”vÚ—B;Q©­|‰VÛ ÿyóæ…0ºÇÕ_)ÖB@"»”ÙQÉ÷sfmg;V=ŸRÆjE¶®R¬Ká(ÞZy.E¬…V°k井a�’Vjë"#y^Ð3!‘ñ‚ Ø5¢÷Z¢’_ý–±ÉŒ3‚"Võùå— hV}y�IT`ʽ¿žyÝW2zÐjo�SòÄOÄæ3dø_¹ð‘ÑÄ�wÞÚÖ=¬•ø2Vxþù烂[ã7E®]'Û~Êý“Ëؘ³ÝêóH÷·ÂXH‚hòh¡ÐG2€Ò3+£ÍÈ�áÍ7ߌ=�Ùx‘‘‘Ý‹/¾æÍB1Ù55�ºw¢Ÿ]<ð@8-c«h¾ÕÑVŸEÿûßÝe—]Œô¡çAö™mÆZÑzÕÝ—Âß Ã>þøã”ážµ¨Mï‰y“H4²¾èùÔ3´Ç{„wÅ6Ûl µôY§Ï]}ƚюÊé�Ø»w嵐]ô|›W3F±ëD·zoì°Ãáoˆ‡~8<ËÑó 32zôè�µË.»DO±�¤0`HŠ…L@¥KÀVòËpA è·l J— #ƒ @€ Ô<�Då‰)éR]YJW0hE¶RB˜¡�ÎKak«ulŠädî u^"%£â»ËÛÁ“O>¹<Óÿ–rP Ÿ¨ËöØÉ;6.Û¦(²e¬ Eµ (¤ˆ‰®v•±¾\[]¢mF÷Ó�1Õ¸µ‚T«£å>™ûñtýîÕk}wæ™ÿr£F}è†ßÃÇQ_1eñVhÎ5lØ e;ñøã‡Ý]w]×Q¬dÙm£<¢ûU΢�”gR¢K%e›)ÜÔ„î=)(µŠ8‘Ò,êÆ\uõgÑv³Ù×Jõ�>ú(x�Ød“M’ºŒÏ¦½TeÛ^ŠÊŸ~ú)°ÒŠê&Mš¤*žQ¾ùRüH1“j•sM•F6žòÕ¹ŽÏeÌW]ÕûñþØ]~ù›®ÿMý*ØVÕêÒ%—¼ŒN9¥kÁ/h Z٫å»(­‚Þxã�CÊe¢òùœår}Õ‘A6áar½Ž™ù6FQØ‹L”•RœæúÈ…�Vû+ OUR�~©íB¸2�ƒªX¤;/O opùå—û÷bÿà Uy½ó;uê”êtFù2²ÑÂ>…"ˆ½i忌”×µk×Ж +$2²ÈFjâyÈæúÉÊÊèC^$ò6‘‰¤‡yE”o;ïò~¾Ûwß'SLsfÒ¤¹®o߆2ˆhÑbÅ4¥9@ ° qÄ!ĹB�ì»ï¾5ÚYyXØvÛmÃ5öä�wÞq?ÿüsÈ?~¼8p`8'O _ pAÕ ‡R£ʰñ=z8…ÅyðÁ3¬‘¾Ø„ B{›m¶Yú‚9ž�4i’ÿœëjËÀEá8dJ€™’¢ �:& ï20P’ñ�¬Hsñ¼`Ã0 jWÆ Y®"5KÀÃŒ€@–XÙŸ%°,‹WÅ7S Y^–†@€ @€ @ à `ÀPðSD!@€ @€ @€ @¥O qé‘B(.Z�¯0J  ûJòAÀ<<èž²û+íÒ @€ @È7�E‹¹•VZ)ßÍÒ²&P^^î~üñG×¼ys׸1ªµdßxã 7}út×°aCwì±Ç&+’—¼O>ùĽúê«¡­ƒ:ˆïÎóB•F PXxËÖ|Ð@ÁpaäÈ‘NŠæîÝ»».]ºE3h �2ŒÑý5sæL7`À€på£]Ú€ @€ @ þ˜3gŽÛgŸ}ÂwW×_}Ê�|ðÁnÞ¼y)ÏëĘ1cÜÊ+¯+3þ|wÁ¸_|Ñ}ñÅnÕUWuÛn»­»øâ‹ÝöÛo+—ngìØ±îꫯvÍš5sÏ=÷\º¢œK pÙe—¹§žzÊ�5Êmºé¦ g—ߤ'+2?üp7pàÀptÌ1Ç„ï<Ó•×¹+¯¼Òm³Í6)‹éû,µ¹dÉwÏ=÷¸:¤,›É‰LÚ{뭷½7nܸX“â2dÈwä‘Gº&MšÄòëóŽžóž={ºŸþÙÝrË-q(n»í6÷øã�ÇåõêÕË�}öÙqy™´iÓÆÝ~ûínòäÉnÊ”)•®—i;”ƒ — …;7ô ¨§l…¼†�‚¹žÞY [ždäbž;Þÿý´žìþR½>}údq%ŠB€ @€ ç~úé'wÞyç塉餬¬Ì}÷ÝwéŠe´øðÃÝvÛm” ÊÛrË-ݧŸ~êÆ�Ò½÷Þë¤ O'Rhî½÷ÞéŠp. yxå•W‚ᇔпüòK’R˳æÎ�ë&Nœ˜ò¼ND ´2ÆŒiË뤌WR‰î;Í«VøKÒõ/UÑüLÚ{à�‚‘‚êµnÝÚí¾ûîN êÃqǼÜwß}Ñfëí¾ŒtßœuÖYNŠã C¤Äûeýõ×�+“Í�¼`Ȉ¦sçÎnøðáîˆ#Žˆ»ß²i‹²€@ahX˜Ý¢W€ dB@a dè"oúR@Þäe� @€ @ù$ …áFmܵßÿýY5ýôÓO¶”؉IÊHÉo¿ýæ´j_Jо}û†Åï¾û®ûþûïƒG•9õÔS�”ç©ä›o¾q{î¹gªÓä§ o-Z´p=zôˆ�¤(—½Ç{TšO›_)²MäMÃò·Ó¦M ^6T¶iÓ¦V%n+� ‡rHÌx!îd™´·pá˜ñ‚<‚è¾{ðÁÝçŸ =tY=2Ψï¢ï$ÅBF C‡­„ãÚk¯u2�Q’‡�|ˆ Jî¾ûîÐÔ AƒÜÒ¥KóÑ,m@B†™º@ ÐØÊ~)È¥×Ê~­ÞG ‹óTXóAo @€ @¥J Q£Fníµ×v»îº«Ûpà ³fûöí]ÇŽ“¦ „¶ä~êÔ©aĈA¡®¹èWø…‘�qÃÍ7ßÊ$þúßÿþçöÝwßàñ!qxbYŽã (LG·nÝÂÜÆŸI¤ï¥RÍkË–-c•×]wÝ”åd yUX-ÐI&§œrŠS‡~ýúOÉÊd“—I{ï½÷^¬ÉÓN;ÍÙ}ªÌ�vÚ)Æ*Z.V¡í,^¼ØÉ€@"o©ŒP I”£åÍš5+„»U[ÉDÆ$ ÷‘h¼´ß~û¹Þ½{‡÷†®�@¥C†Ò™KF@ ¯XÙŸWœ4@€ @€Šš€<L˜0!¤K.¹$ïc‘ƒd‡vp«­¶Z\û 6tG}tÈûàƒâÎé@«¯å½AmH9}úé§W*CFj?üpln«ãÚ?õ’Ÿ‘ႼH®ºê*'#™DÑêý;î¸#Xh•u%Óöôݨ‰¼D$ÊìÙ³CÖ&›l’xª^¿üòËÁ»†Œ›zöì™ÓØUO¼5ÏÉDï�2dH¥ÓzÞ%×]w]¥sd@ÅK†â�;z”y7�—y;Ðd]ºt .ùêj˜¬ì¯Yòð­Y¾´@€ @€@á�aÁ+¯¼âÞzë-gŠßÄÞÙÊl…’H&ZÅ/ùä“O*�V¸‚Ñ£G (2+ᩱ ­ˆ—…W_}ÕɰD+峑o¼1xÌ�ÑŠÂX$Ê?ÿùO§¹•rüÙgŸu+¯¼rb‘¬Ž³i¯mÛ¶Áë‡. Ð÷ÝwŸSè ÉsÏ=”öò\!o õY^xá…0ü�Æy©È†‰<\Hä]eÙ²eqUuOÝvÛm!ï¯ýkÜ9È#ŒæAï•éÓ§W:O Pœ0`(Îy£×€@ �áÂÈ‘#�b†É]Ú€‚!C •!y2RÑk®5çš{Ý @€ @(5ÇsLød»í¶s묳ŽÛzë­�)>m¬[l±EØ}ç�w’~GÒªU«p~ÆŒV%lo½õV'Eøæ›oî|ðA׸qã¸óÔ.Èø`ç�wv�;wvÍš5sgœq†ûé§Ÿª¼¨Œ.¼ðÂPîÊ+¯¬Tþí·ßvx`PNë^YsÍ5+•É&#—öd³Ç{„Ë{ì±Á�âøã�†2 £¢{U!Nê³ØsœÌ%S.‡zh(úÅ_8ytˆÊO<BŒl¹å–nûí·�ž ûzÞû÷ïö_{íµJçɀГ Å9oô(A…æ�¡Ô�̃yÚ°ù—í#€ @€ @ Ø ÈkÂ^{íÂ?h…¶âÕK¤øíÕ«—{饗bCÔw$¾@uÆŽë¾þúk÷ñÇ»GyÄÙ*m­¶63fŒ;餓\ëÖ­ÝóÏ?”ÝvŽmÍhÚ´i09øàƒÝàÁƒCø)ô%7Üpƒ;ä�CbÞ Rõbذaá”î‰wÜ1®˜ùì¾ûî!O^:uêw>Ûƒ\ÛkÑ¢…Ûh£�Âåäâ»ï¾s#FŒÇÛl³�“—†ú.fP¤ÅZ¹Šži ûbÞ¬­›nº)ìÚóoùÑmûöíÃáœ9s¢ÙìCELSÄ"ž<º@ÅOÀ<1ÈpAž,ŒˆþiG @€ @€@1Ъ÷D™7ožëÛ·¯{ýõ×CLû)S¦„"  ƒyg�Rtï½÷N¬Ž7Þxã°Õ[õ­Uà(““⪑L­˜·Uóv�òòò`hrøá‡»qãÆû�ŽÛ* ÈðáÃCÞå—_wNGuTXuÏ=÷Ä *Ê"#—ö–.]êvÛm·Ca,ä%bÖ¬Yîþûïw_|±5jT¸‡õ}žŒê£üú믱a¯¾úê±ý\v Œ_žzê)÷ÕW_¹víÚ¹ÿûßNágdàpÐA¥lVe%ß~ûmÊ2œ€Š‹Šk¾è-ê[‘>qâD§ÄÊôº™~ó E»¬•™‡ü΃ñ5O ùm�Ö @€ @€@aøóŸÿ•êÕÔ©S�bÜ›È8aæÌ™îúë¯wGydðØ þ÷Ýw_P «\ÇŽCñh½ýöÛ/„¦Px %…ª0±<N 5G Aƒî°Ã‹yÙxï½÷R^ìoû[8§9Vè�D1E´ lþl+/…vPžF yðè£�Vuù’=o bT]ѳoá:î½÷ÞÐÜwܶò¾ ¯©Ä¼²,^¼8Uò!�"#€†"›0º �úD@Êò‘#G…¹Æ->q¨ë±&z�U<ó�ÿY1ÎúGH÷=@€ @€J•ÀZk­ÚO?ýää}ÁdµÕV‹¹“·5{ÑzغqÖеÒ@½0ð € @€ �#`«óµrzÍ5׬rt/½ô’=ztp%Ì1Ç„òòä`+ëÐÊø:„ìTeëp\} #!·ÿ’M6Ù¤Rƒ:öÙg‡üSN9Å­¿þú•Ê(ã•W^Iš¯L#HaþÚk¯UòÞ öÍ ¡Q£F±6riÏ”ñ?üðC¬�莭ú7CŠè¹ú²/Æò¾ ùÐs–I3lYa…*aRØko¯½ö çûõëû8•È`ÀD+ë/»ì27yòä�µÛn»Ù©Øö™gžq¯¿þz8¶0±“yØy衇‚|úé§ÕjÑ<}È믾×ÖÏ?ÿì,¼A}_èµé¦›6Ó¦M‹c¤…yùý÷ßcùß|ó�{ì±ÇÂq×®]cù¶£y;ãŒ3ÂáôéÓÃV^ª»ç,¼LUå9><0þÑC” ­à7ƒ)f3]]n+ÓµUø‚h;õýÄ’¹9HŒ€Ýï± v @€ @€@˜8q¢»ñÆCO¾üò˰ÕÊöý÷ß?ìo¿ýö±Õõʘ3gNX„$7ûRrn¶ÙfNá"Æ�ÊkûÕW_öí—Œä9a÷Ýwa!ô]àìÙ³Ãé .¸À�vÚiV”m 4(¬¢W“ò^!9ýôÓ]«V­ÂþM7ÝäöT"…ô˜1cBÒJѯ°“&MŠÕ•áÊFmÊÛ¯%K–¸sÎ9'*tD&ž7¬n¦Û¨AE¢!L¦mX9…,QøyþØyç��麇åùá�Åt_×÷{RÆ,z7Èx¤gÏž†/lÅéÌ3Ï ÷È¢E‹b† k¯½¶“ñR29úè£Ý¹çžN‰ïN;픬X,OÞ4G’]vÙ%–Ï PÜ0`(îù£÷(*2^°Z]Þ¥K—¬úo+ÓõDzµ“U† @€ @€r" C­ �ŠV¢[ÞŠ+®=�;ì°CXq¯ÕÔ¶¢Z…=ôÐç^a EmjÕ»‰˜R|÷îÝÛ²ªÜ6hÐ ”17ÿUV¨çÆŽ31æ)AÇ—^z©e»&Mš¸Áƒ»|Ði®Æ�;'þ7ß|³;ä�Cby¶£ò3fÌa@ª£ôOzÀ®aó®ã† 3s@žª=Õ—RþÚk¯ †8Ç·Ë„­B`È#HóæÍãòëÛA¯^½‚‘¨Q£œEyÈ£Bâ="£�믿>½$c¥!2\ÐûbÈ�!•<´$Ö‘‡É®»îš²ÍÄ:C…O†ÂŸ#z�’! Ï ï¿ÿ~O:Ï æaAæ©A«ÒmeºÎÛ?F%‡�@€ @€ @ € qÄN)SQ¥ ¸¯¿þÚÍŸ??|¿·Á¸¦M›&mF+þ?úè£à  M›6nýõ×w�5JZ6]fûöíã¤+Ë9çfÍš•1)¥o¿ývwË-·¸¹sç:…Pø}�«9‹DÕÊz¥êJº¾öïßß)e#éÚS¸y‹8ûì³�¼ŽÈ«HË–-�îaŒc–S–±ÁqÇçFŒᮺê*7lذþc�=6„ѳ/ÏíÚµKùì[¥·ß~;/ˆ¯ �Ò‰Þ-òö!¹òÊ+Óå Pd0`(² £»¨ÌSƒ ºwï<5è`€ @€ @(.Z‘]•�®÷R~o¼ñÆ!¥+ǹº' C…P*uYyå•]§N�B*õ±æ2>.<öØcîòË/$2j0±…‰v\ÕVáJ$ýë_�¸§/(„„¼atëÖ-]QÎAEF 3:E6(º 6óÄ o ÚO;ojBè uKÀ<`ȘDs“jþê¶—\€ @€ @€j‹€¼RÜzë­árýúõs?þøcN—ž9sfۡʃ JÛÆÓO?í®»î:§°%æ…!mNBEE†¢š.: �Ò `FŽá¥1ªÒ…  ¼b”••9æ¯ôçœB€ @€ @¨Š€ÂËôèÑ#„Øwß}«*žôü]wÝòûöíë&•Lš4É©ŒD†-Z´HU”|@ H B"ÅÄi¸”¬)ír]ýmíØ*sµS�öB‡ø�"#`Ï�ž)Ýÿv¬ü}úôÉz4æ ÚN1?W6ã£ñåúÎÉf¢Üe¼ Éeþ²¸dAµyS'‹ùþ+hÈt€ @€ @(x ÿ2a·lÙ²œû*O C‡uj+�tíÚÕ-Y²$Q((=<Ù)æTŠDSÐiű\Øç"ÖŽµµS�öréu P×ì9�·{÷în‹-¶ˆ=_¹ôMÊb=Gz®ä `Ê”)Eý\%òÑ{BcD ›€Í›zÉ{½°çŠÞA€ @€ @5K aÆN)WiÔ¨QFUeà€áBF¨(�¢%�û›¤h‡œ¾ãR°J)ª¤ýÄãôµÿ8›ª^ªü?j²�Ò#`÷½¾RÌKAŸÌÃ@¦åÌ€ÚR›ö¼+¹LÇ]¬ã+Õ~Û¼ûýWªóø @€ @€ @(>x`H˜3[Q+Å”VŠKrYá�ØŽVçJ”ŸK{¡2¿ PâŸ<”ø„3<@€ @€ @€ D`À�¡][Q«}3:°Pµë]×—WÛLÄVþ&[ÍžI}Ê@ .˜»ß'Nœºa÷¾�—�B#`÷­îWy‘h_ïcúûXýS?•Š©ß4¿ @€ @€ @(i0ÔÐôJ1$)´äqÁŒ ”/Ï©V–K™¤²ª—‰˜" Eo&´(S(r}> ¥ÿô£~°÷´Þ¿ÕñÔSWíù“!�êj¸. @€ @€ @É4L–I �š$`¤HµàR[¾ r´�&›§Äù+ÌÞæ¿WºWed¦{W Š�C}Ÿ¿üß´@€ @€ @€@¾à�!_$Ú‘bKžl…®…£P~º¯R„©l¦á*¤D3ï ]àECÀîû=zepÑt¼žvÔæË<ÌL™2%¼·ðSOo† @€ @€ @€òD†AÊ0AÆÚJ´¢UJ=[5n+tuN RÌJ&Nœ38Hf¤`+cCá =óÌ3–¤j—€='zVìù°gD=‰ÞïzFP€×îüäz5›7ͯP%{ŸåÚ>õ @€ @€ @€ê' rœw)d¥¸Ó d‰¯2T@›#Pª•${N¤èîÞ½{x>dÈ`¢}óNÍ·ól!@€ @€ @€ �úC†„¹Ž®,–òU"Ūò•LÌÂ<*˜DW '¶cåR­D·6ØB ”Øs¢1%3ð±ç¤”ÆÌXJ—€îg½Ã“½Çe¼fçeØf9©Ê—.%F@€ @€ @€r'€C;)�¤hµØî:�låxBµJ‡‰í˜›uåçÒ^¥ �@µJ@Æz—ËP!ñ=ýܘ2eJ̳HªòµÚq.@€ @€ @€Š„ ].%”D+kCCDËYå™DÏ[;:gù‰íY=¶€Š…€½Ï=Dß…Å2–Lú©qZØ D�"æ�ÁŒÕÌ#Oªò™\�2€ @€ @€ @ ¾À€!ÅŒ›�Ö~¢ØySRIaW�r‰ís @ Ð Ø{Ð<Ö˜ç ´ }æè @€ @€ @(L0¤˜[YœâtÌ“Bªó–_U;VŽ- �={¾ê‹€ì Õl�(ÿDÏ5{åÚmÝî/…��цƭ„@€ @€ @€ ä— ùåIk€@-À@-®Ǘ’á‚ 4dÈн{÷RH÷@€ @€ @€ �_ óÛ­A¨=æ@Êd)™Ê@Jfù$ {J÷–î1Ýk ‘�†|¦-@€ @€ @€ °œ Ü € @€ @€ @€ Ô9BHÔùД­X×ju[±®Õê¬X/½y¶™' ›wy+�§‚bŸsO¦÷q"ÕW*v6Ïl!@€ @€ @€@MÀ€¡¦ Ó>ê!)|GŽ”·Ý»w.÷¥ÐFJ“€ævÀ€!ÌBYY™›2eJ8V¨…b–lïãDv¢Ø9óÒw@€ @€ @€Š‹!$Šk¾è-Š‚€V�›òVJ])pY…^S—S'Íó€æZJͽî�b—lïãRåPìóHÿ!@€ @ þxã�¯Ý=÷Lq÷Þ;5%„… —¤<÷É'?„újã¿ÿ]œ²' @€òG ùcIK€ @€ @€ª$pòÉ'»>ø Êr*pÇw¸�6Ú(”½òÊ+ݸqãbõ6lèš5kæ6ÞxcwÈ!‡¸®]»ÆÎ¥Ú¹é¦›ÜÓO?�êt¥ü-ZdU¾Ru”1oÞB׳çcîçŸs·Ü²G¬³f-p—_þ–{å•Ynúôù!ÕUWðìÖtÿûön·ÝÖ�•mÓ¦™»ýö÷ÜäÉßz�“ßŵ+TOv¾ùæ׿ÿ¸Ñ®¸âŠ®uëÖn§�vr‡z¨[uÕUãÎs@€r!€C.Ô¨@(ò$!ÏJò’!OJ¥à%£H¦€nB€ @¨D`Ò¤Iî­·Þª”Ÿ,ã矎eüñÇnâĉ±cÛ=z´»æškÜÑGíFŒádØ�J>û쳤m¤*_¬Jé³ÏžŒÎ:kwÒI[Ɔ÷ÑGß{£�÷bÇ2^�‘Ãĉ_…ôÐCûºÃÛ4œoÞ|E7vìÁ®sçnøðÉîˆ#:¹m¶Y+V·>í,\¸0å}3jÔ(7dÈ÷¯ý+##šúÄ�±B€ �=�ÔÉfß5 @(02\9r¤+++sÝ»ww † ÖMº@€ @ ^xôÑGÝG}”4MŸ>ÝuëÖ-ðX{íµ]‡*±9çœsÜ×_í¾øâ ÷æ›oºÓO?=”¹ÿþûݰaÃ*•�füýï¯tÝ¡C‡†"Ûn»m¥s“'OŽV/Šý²²Yîþû§¹õ×ÿ“:tǸ>Ë(aðàÿó!0�qK–œå,8Ý�ùx×£G»Pî„ƹòò?ª´n½²»ûî^!cРÜÒ¥Ëþ8YO÷fÏží”äEäá‡vn¸¡7ùÙí²Ë.nÞ¼yõ” Æ @ _ðÀ�/’´Ô­&ïÒ¥KXQ.eíûï¿[i^g�Êà©VÆgPµ ‹ë<$Â,µyÑxôLHd¼ g� @€ �º%ЮÝrey²^Üpà î�wÞ §ž{î9·Új«U*¦¼µÖZî  }ûöN†rç¯O<ñ„»à‚ *Õ±Œ5ÖXÃ)EE†µ«p&RJÿðÃîÛo¿­TÇÊ(´À’%KÂù•VZ)|?óÓO?…¶š7oŒ,dÑ Aƒ°:_ÞSÉ�?þè>üðC÷é§Ÿº6mÚ¸Í6ÛÌYßRÕIÌ_¼øw'CÉðá{¸¦Mã¿ßvÛµ<¯x/ oÜÒ3Û>x`�7†o¾ùÙµmûG8„ýöÛÀõîÝÁ�óyðÄpÚi[%^6í±qT!ͽX³´mÛ6t_ÛN�:¹�wÞ9Ü7§ jöÛo¿Øðô½„ 4§{çÎ�C؉X�„�ß~ûÍM�:5ÔiÒ¤‰Ûzë­Ã½¥{Cß=)¤IT~ùå—PVß *œÊ:ë¬úÔ¸qü¼«Î¢E‹‚�Žî1Ý›º¿Ö_ýhsa_}ŽÞÃ3gÎôaD&‡úª£1 € Ô<0Ô[Z†j‰€þñ•bV«ËµÊ\«ÍõOK¡‹úXJ+ã‹uï“R›—Äñq @€ @…Kॗ^rgœqFèàc�=æ¶Øb‹Œ;»÷Þ{‡²Rþ.^¼8ãzé N˜0ÁéÿýŽ;åmbÙùóç{EÛPƾ‹¹úê«ÃñI'�äöÜsÏàA¢_¿~î ƒr2¶¸ôÒK½‡ƒˆ‹ßèï¿ÿîd¸±úê«»�vÚÉ{ì±®W¯^A}Þyç9)µ3•—_žéfÌøÁ>¬êzö¬¬œNÕN«V+ÇNÉKC¢œrJ×�uÝuo'žªòø®»î LÄRÊñRÓ˜×�)S¦Ä†wß}÷C›ÓÝwß=#\~ùåÞ“ÅÒX9ÛQh¨­cŽ9Ƈì8"xw�‹ØÝrË-V4lï½÷Þ`è"žC=Ôí»ï¾aá†î#òDE![to¹å–îÈ#�t}úô ÷æ!‡âd»‡åéäàƒ×>à€Üá‡î6ß|s÷—¿ü¥Ò=­Ï> @Õ#PÙ ±zíQ¨Çô˜þYUÒ?²ŠVªi‰®ü—A€Dÿ„Ô•]ß8$ë‹Ê•ÒÊøB›‡dÌ3É«î¼D9èY@ @€ @™øüóÏ�”¤…y�Ò?ùõ×_CñUW]Õ­°Â ÙTMY¶wïÞaµüwß}çžzê)wØa‡Å•µïaöØc�8Ï *4jÔ¨PVÊkbH9-%ò…^è6Ø`ƒ¸¶¤(¾îºëœú~þùç¥ôÓO?®yÅW¸V­ZÅ ;â:�äà…¾¹ná=$)�"køðwÙnÝÚø~Tæ·ë®ë†üÙ³vÓ§Ïw›nÚ*EKõ3[Þ$2�Èhã„NûÇw\ð¾!/ 2TÑ/X° x ü/Ýÿf±é¦›º<ÐÉ£‡î™Ñ£G[±Øö…^pjW"ƒÕ�;w®{õÕWC’—ÍH¦M›æ¶Ûn»°¿×^{yo½ƒ!ÉðáÃ� …¾üòËp�† ã×{ÞqÇ¡ŽÚÞf›mü¼Ow/¿ü²»ýöÛƒ�� &@€òO†ü3¥EÔ[RÖêW)€å A®ê¥À¯ob4n\ö×·Ù_n´¢y_wÝuÃóPÿ0b@€ @È–€”¿r»¯­”¢_|qVMÈCÁe—]êì¸ãŽy Q þ§žzjP8ß|óÍqFòšpã�7†kžrÊ)•ú«•îZ�¯ëy]ÐÊu)…ÕW3†Px/H¤hÖÿÓ’£Ž:ʇlãöÙg7dÈ'�™f¼ð—¡þ>ûl¶UýZ´h©ûÛßÊÜÝw/÷pûí{&­Ò¸qC׿'ßÿ÷Ük¯ÍÎÊ€A¡9,TA£F�’¶_Ì™2&°°'[mµU¿pæ™g†!=ðÀž[ÿØðdT°Ã;¸«®ºÊ 80xAÐIÝg’¾}ûº‡~8„D þ—B¢Øýmy�?þxØU2–ˆÊo¼ $,דּΠ»ƒv·Ýv[ìù��…<>¨ï�>úhìž´zn¸¡“—õ×D÷í#�<Œ*0`0*l!@ù%oR˜ß¶i ¨glåºy`�Cmx`0̶ò]Fꃼ¨Oµ%6~»nâqmõƒëÔ-»kûþ¯ÛQsu@€ @È•À²eËÂJr­î–ÂTž ªRrüñÇîÅ_tRâJù¿É&›„UçêƒÃù¹ò—h%ü{ï½kZJëÙ³gûP k‡Õè±;RT›ñ‚²xw !ÑXÍm¿)¢µšÞŒB!ÿK!ä•AòÕW_…mU¿>B²Þz-ª*êWÓÏôÞ!î󆓂w…—_>Ì{ X3e½öí—·9gÎ/)Ë$;¡�ò0 Ô¼yódEŠ*O÷žŒKFŒáŽ?þøØü+Ä‚<¼öÚkÁG÷³ªØ·ß~û`¤£cÝCyQ{’k®¹&ÎxAyºwÅŒYtþòKü|è={ö Uôýܸqã¾ !¢mµnÝÚ�{î¹áœÝ‡Ñë}ôÑqÆ :·ÿþû‡"šK€ �š!€†šáJ«€@�á‚V¾Ë€ ¬¬Ì)æ^mz@0Ï úÇH($uÑ�:@Ï%!@€ @È‘Àå—_ ¤¨î¹ç\‹U+Þï¿ÿ~§)‹ï¹çž°¢<š_Ýý6mÚ¸#Ž8Âi%½VºË}¾äÖ[o [yG¨Êà"ô¿ÖYg�`� O_ýµ“g‚�>ú(œ–2:thÈVH‰Â6$†eP¾B2h®g̘¡C÷ÙgŸ…­ž�:„ýª~)Ä„¼yŒ;6„‘aÁÖ[oívÝuWïcÓXu닌ÖZk­X¾íÈSˆD!'2‘–-[†b‹/Τ8e @È� 9@£  P˜lå» ,cŸ>}j­³æqA”á„ú##Šh¾Œ,”_Ê�ó„QÆ]lsÊ<ÛŒÑ_@€ @  H‰«Uá’'žxÂuìØ1£an»í¶n§�vr ñ ÐRú*o¥•ªVÚgt�„B'žxb0`�ÂøŠ+®póçÏŠcÓw ÙHÓ¦MÃêüE‹…júî@"¥sûöíÃ~²_2v¨JÌ€¡uë•«*w~ذ�«4^P…UW]!Ô[¼ø÷¸úõíÀB2´jÕ*•ÈÓFÔ¸ä›o¾ HLÙŸÈǾûî»ï©yóæ…­Œe2yçxòÉ'�îMµ#Ï%J’C=4x&‘Á·ß~òÔ×db1æÌ™“ìt¥<=s @5K†šåKë€@=&P×!ê }}w]ñÎõºÌS®ä¨@€ @ ?äy`¿ýö �]{íµnÏ=÷̸a­6?çœs2._Ý‚rÉ/%õÔ©S݃>èfÍšš”ò8ûþÒ¥Kƒ²YÇòÆ ‘ÑÂ;ï¼ãN9åw '„¼\µh±b¨úÝw ÝÒ¥Ë\ãÆù� d¥3žI¬Ã1 @5K ¿ÁÕl_i€@A0 Z1 ¥p—.]‚—[ánÇVN!.´_ªbã óÀP ãµùIœÇ\çÉ8ØüçÚNMÕ³þÛ<ÕÚ… @€ P›~üñG·Ï>û„Kyä‘îŒ3ΨÍËçt­SO=5Ô»ä’KÜm·ÝöeÀ��Œ?>W¨€5ÖX#ìwêÔ)lŸzê©lšJZ¶Q£μ/dæaüøC¼AÅÉÞƒEfÞ2gÍZ®k×HÚ‰$™RÊÿþûï!%9]rY⥗^r¿ýö[¥ñM˜0!ä™Ç3xP¸�W_}µRùŸ~ú©RžeÈ#‚Â@ 4È=ýôÓ §}ôѰ•‡‰Úž>}zØ�þ²ëm¼ñÆÑlö!@¨Cx`¨Cø\( Rx+d…àÝ»w R ›h_îe¸PVVÂJdë^ÑÚb[sªšÇl¯ló®zÑû!Ûv(@€ @¥E@Šìþýû»/¾ø"(^–¡Aƒ?ÈC9Ä�vÚi1 =zôp�;wNÙo…ˆ®¦ÿì³ÏB}UøÛßþ«wøá‡»‹.ºÈ�7Î]zé¥îÜsÏ ¡1¬À{ï½çÎ?ÿü ˜–1~U²é¦­|¿rÓ¦Íó«ïWM[üÃç;…�èÒ¥µkÙ²iÚ²:9yòòp;®^eÙh�n¸Á 2$dÉx%“qDë»r´Ä'EÝ�=€%+ߎ—V[ž¶‰ûVFÛhRTŒè±í+™së.\×ýg›ÿ¸F 9w¸ÏS~Å9��û¾îéw_ìÔïF=}yi!TÆ—/+w¯6yÕ5èáïùG|ž·3hæ~ïñ»[Vî ]è‹6Zæ4là‹—»¥¿/uW.½Ò]±Ó®ñDßÐ$_Ç/Ë\ðÓ×x¥Æ®ió¦®�7\QžÒ^?ìå>îö±k´’¿îɾíÆÍÜ'{}â¾�ó­[|Êb÷ûv¿»F+.ïÓþ¯ë<º³»¿ãý®Çz=œ»×·á#Dìöõn®ÉZM\·YÝœ·OQE,)‚‹Êþãì;‰@€ — …;7ô EC@Š{)•¤¨Õ?aYÿ#–ÇÑêÚZõný’á€õ+�—‰5e+÷•!Ã];*ÖåM™2%ô˼0¨n]²Šö³¾ïW5�Ùò‰Î{¶u)@€ @¥Kà믿vcÇŽ œûtp'~å ¦»ž=×O[¥oßzc‡…î¹çr½{{…tQ¹Ñ£? %vÙ¥]ò’24�QÁ¯>-üØÐ¼{@IDATcÛqnG7¸Õà L_qôŠË•íVNe•tlutìõÿ!Où2P¨ciâ5óë6]wy/æTÝ™x­¾ùb"#Š i�¨Ý×y/ õÓ@V^¼ƒ’Ê® ëooD·@…3†æ®ùr^b‘Õ�ÿiVa`òÁò:ÿ³ú†Ë�,^û£°ÿÓÔò åoû�’—Ýô³ánÎ}ä”"²™ÛÌ=¿ÕóËsR=–2h�1ƒ’Ÿn'Û¥•}RžkkålßÊ©¬íÛ9ñD @õ€ õ`’"jš€ Òy ¨éë'¶/c…d ëÕôqb¿dÄ vuݯš7íC€ @€ ð�Do rmŸN¢.ø­®mÓÕËæ\¦íí°ÃN k¯½v,FªëÈPaΜ9n̘1±"Çwœ“aCÓ¦ÒÈþ!'Ÿ|²Û|óÍC( uX•P…ÙXe•Uþ¨�f¯W¯õÝ™gþË�õ¡>|×¼¹4ÈÉe…–kÆúÕþA¤hÿ_EúÅo-ù¼ÿŒû¯»y½]݆ëµt«ÝîµÎ*§©“]åt¬ý …¼ß‹É¾Îÿl¶ïòc­òGJ›€yÄXq$?cÕ-*£=Í*öå`DǶU¾Ž­ŒŽ£yò�@€Š€ E0It…N ß+׫;^[ù®~ɰBÒ§OŸ”ͪœ ´M'j7êÉÁê©®å§ó¦`ýÒ5ä‰� @€ @ þXg�uBh…\F~ß}÷9¥|‹<úhwÖYg¹¹sçú0 ¿ºöíÛ§­£°œï¾ûn(«ðK—.uíÚµs«­¶ZVÃU‰ã�ÛÜ=vï wïЩî´�Ý–¯Ú—2YIFû³ÿ‹sú:è>Ý쓼¤�­ÝZnëõÖZ~v|ŠBdC ¦È0Æ jr½†¼=üÉ'ï¼"leø }¥è~‹H¾ *ì{ü@¨éÿʬ•.p@uK@2t�G„t"O ÑVO† ú'[çeÈP•¨ŒÚYwÝucUÕá< @€ @¨KÓ§O�yS�qB&"#ykÈFä�¡S§N•«hUû�>Éà@Iûv¬­B TäÝýc/ww÷^ÎMöy'ú„@Ë tæzJ™Šœ”ȆÈR‹Š}BXžöíXá3@€@5 `ÀPM€T‡ —€y<0O 'NLÚÙL¼/¨¢Ú‘‘ƒ¶í«M]'jØN¦ùeýR‘™3g†’Ê+5±qñ’ñF)ŽµÔæŽñ@€ @€ ÜrË-!kàÀ�®U«V‰§s?Vè|ïÓ>Í�l•¯c�Óês¨]¿ûËéTÊD䱡¥OzEÈÀAÛÕ#[�Sþ*>!€ �0`H†l@ ø ˜§)ÎËÊÊRz;P9yP�B:‘¡C´SÌËóB.býS]í—šØøŒ¿ÂfdcèQj< @€ @ X üøã�îŽ;îÝ?ñÄô. 4hÊ…­Ö€ÌóIÊOm•¾õI ßU/ö[( æâ«*†³¢?ÿgŸZû$#mu¬¤cmåíaùëÄï € PŸ`ÀPŸf›±B ž0¶”ç©ÄÊUeˆ E|´�h½\¼ XýTý*ö|Ÿ =¢CÒ§OŸ‚–¢È@EFêw.óY׋òÖXÌãE]÷‹ëC€ @€@ñXmµÕÜ’%KÂ@"ˆe� C%È-½ß[4Ì]Öÿ2×àe¯yçó@‰d¸4»"%ž³ã&~g�Š$í¯9–‘ƒÊ € Pr0`(¹)e@€@"ó�Jy.ůÊT%©ÚÉ´~Uís¾nHÙ/ 2ȇ Y2¹ꦷ©¯j÷g¢Ç‹Ô58@€ @HC ÜŸ“§&|ã\ã¹þ«ä9ã•I" X6�„ Y€@Vd$•ÎÈÁÛHO kù­ ÚTlíXá*T� �¢#€CÑM†@á(–•ë¶2½ºäòÕNuûAýüÐ},¥¿¤˜C\Øý©ñ²Ç‹üέA€ @€@µ,óµåEákŸ¼‘B0P�ÂPdz|úÍ'€@!�•<À(%“|æ:>µõimŸdà ãË{CCŸ@(H0ä´Ð)�RY¹^´é% @€ @È‘Àÿ|=%˜a‚âÓ[ÂH!G¨µXM«ÈW¬H+¥Ø6ñùJRÚF·‰ù:–V@©QEŠë|4_ûRô&&å«_–oålÅ{²­òóÍ‹‡¶–ünØOÜÊàæwŸ´URùè±å[¹¥çUF«ùµU^4ߎu^IσíG�£ù °È§d[åÙ˜ü.R‡4gŸW¤Änè9iIëøý¶i¿E @ N `ÀP§ø¹8Š›@©¬\/îY(üÞG=ÈèEÞî@ù @€ @y$ð“oË fúýÿø$Þ>!µC@Í|’T[¥•#[�·Ô4²oyÑ­”¬f�`ŠŸURbã²m±NÆ fø º R¥_Îýâ�V$í+ÉøH[µ�ä�€ææ³Š”Øêê>£ƒOëù´®OfèÐÂï#€ P+0`¨Ì\€@ý% c…f�áBYY™›2eJQ‡j¨¿3ÉÈ!@€ @ `Hù6Ó§ÿøôEE’2C¡"oÍ}’¢rÕŠ$C„Äd† ¶•�‚ ´UHý% C 3<É'y•�qƒ ´5ÛÊÐ!1ýìó”dØ´À'µ�TM@ïQ¥wŠÊ°aŸÖ¯Hëù­ 4ß ä• yÅIc€ �H ê�aäÈ‘átŸ>}‹Õú±<ˆÈ#„’y„À+D­O„ @€ �ªHù(#[-ü©ßÿ�O¸©÷ÒÈŠþœŽrMf˜ CíË8Áòd€ 4�B# Ã3¤É¥oz_ÈðÁŒdì }6XÞý~4I‰¯�ÈrâñvE2&z_¬çSGŸdÜ`xkð0@¹À€!wvÔ„ �"& ÃTÈ�¡{÷î®K—.Á�¡ˆ‡D×!@€ @ Ø H™(…éc¿�ë²Ü°`5¢•O-}Ò¾¶2Nо ”¤8T’,' E»y Y3 (2`�•’ÞOJ?ú$C‡ï+öµ�_±_ß «4Þ/+Ò‹~k"Æû´aE’�ƒÞO dD†Œ0Q€ªK ê‰AÆ )ažªÛv.õe¸ >HâB  @€ @ Ö,õW’g…é>ÉPáCŸfûTߤ‰°ŒþÙ®^±¯­ ”¤ü#<ƒ‡€@  ȨuEªê² Q!‡ÿV¤üV† ÚΫطí\Ê"Ã3¥‰‘A®í÷;ù$ÆM}R( 4t@ 2^�•™�@5@@Æ 2�Ñ@YY™›2e †5À™&!@€ @ @ Èe»Œ>ðiZÅþo~[ʲ’ÜÉ” ÚF½(È0A«Ã@ ¸ ÈÀÈ ŽÒ�D^ Ì“ƒyoøÎçYúÖï+-ò©”DjJã*µ‚ßÊ�¡³O›Uì+L@Øwq@ÙÐÊu­ W²ôZ]�@ óÀ 22^ˆz@°û(]ý|�ãþÍIÚ� @€ �´¤ “±ÂTŸ&ûô™O¥æ^]¡Öò©�Or™®$ƒ((É8� % ƒ% õ²^ôD¾ޡòà $ƒój0Çïã“ÂZ³È€íýФqˆË>méÓæ>ɨ�w¨‡€@õ‘êã¬3fT“€ FŽÐÝ»w®÷¥€F � Ý+ué‰�û7“Y¢  @€ dM@Ê(…�xϧw|úħb7XÐ a¹=o[±•¡BÔ£BSŒ@¨ RÞ+)ÔB2ùÕgÊkƒyl�aƒ<|]±-67ú¼ø´"=ê·2hØÈ§n>ýŸO ?¡w2@ À€¡L2C„@¾ DWÎKÝ¥K—|_‚öJ˜€ybÐ}$CIŸ>}j|ÄæyA!,´oýàþ­qô\€ @€@éЊà·+Ò$¿]\„C•Bl]ŸÚù$c)˜W…–~_J4€@¡�•Þ]J‰"c…§0o fÜð•Ï›éS17h W¤Q~»¢O[ù´�O2j�Ç€@‰À€¡D'–aA€@<}îS±HkßÑõ|’¡Â:>™gåc¤à! €@ÉÐ;ÍBÙtN•ÞãòÜ`žfù}6üÇ'åªÈ@îõФ>vðiGŸ¶÷©£O¼Ç=(0”ÊL2@EFÀ< D=#(¼„òkBty_�à9äµ=\™=@€ @EB@Ê®O|*ói¢OòºPÈ¢RlÉíúº>ÉXAF „{ð@ Þ�¢ßBál™@c¡?–AƒÒLŸ¾ðI†j SQh¢~)�ôIÞzøÔݧ�|Ò@EL†"ž<º@ ˜ ÈXA†2*(++sS¦LÁ° &”y¨è\€ @(Z�û’O/úôMvY Zu»�O2Vhï“ šù„@€@öVöUd •_üÁLŸ¾ôIF Ÿù$o<¿úT"úG*’BíéÓî>µõ � P„0`(ÂI£Ë¨+¶R^®ø¥ôÔÊíšZ-_Wc亵GÀVþëŠ2^ˆzH°û+—ÞØ}ªmT¸o£4þØ·y¯‘#G†}úôù£{€ @øöÎNŠ"íÃE$H� "QEÉp&TÄt~Š ê™Ó)fÏ|wÜÉg<*ºz`ó!&öDDI‚ä,9ǯþÅÖÐÓ;³;fwv÷y¿w»»ºººúéžžÝ}ÿõ Pš(E÷ÿ¬h}J ]xuۗí+¨æ³+(HUÆ:@É% aØ™îÏ´Ç®HÜæ³4(SÏtë묥©O/ez;»ìm½«õŠÖ1@Å„†br£è&R�€À p*Й––f:tèà„ ©Ð7úP| H¬P�™üsê§‹ðdtž[Oƒ% @€ DPÀçë.lŒÚSø¬@™,(ÂÒ�c€ �:$ S†ù �niº ehð‚†Ÿíº¦¦( “Oþ¸u úX—ø ƒ �â0¤ø ¢{H%.ø °Î0`È/Ÿ@í$’‰AÏ¡D ZƲxûüyxncQ£ € @€@)%0Ã^·Òn+ë‚FÓ…iÚ‡öÖ%Zheý`ëdV°0@Å�€gòã2û®ï–Öõ}#1Ãdëó­¦I˜§ïº×­+ÃùÖõ}ƒAHQRôÆÐ-@¥�@¢™âeXð¼|¦‰l‚&ƒöa€ @€ DzÉrø¾�Y”µç“PAcBÚXW–…jÖ1@(™$H“PM~jæ%®·KM71Õú$ë6ì¶žl“˜"#Ó�´ËK¬ë; ƒ �b0¤Ø ¡;€J+Ÿ!A×ÌÄδ/ÂçæÛ!Ó‚'€ @€"Úµ¡ÖÇFJ’»¢À•D �­+ËBkëû[Ï¥}ÿý÷îoåÎ�;›Ž;æòèäVß¹s§)_¾àþÍüᇚeË–™ÓO?Ý4hÐ ¹�/àÖß~{¦Y³f«iÔèsÚiͳ´¾{÷³mÛ.S©Rl^Çÿl¶lÙaš7¯aN:IÑÎÔµíÛ·›={ö˜Š+¦n'=S_wïÞmÊ•+(Íy5/Ï÷’%KÌÇl>ø`sÊ)§d9É®]»ìs°ÍT®\9˾T-È ]gÙ²eM™2zžùwÈ™gžij×®]x'ÎÍ™$\;:ÓuÜë>;ÃD».qƒÄÉ4 øäÇ[¿Òzcë �!û7¥éÝ€ �ÒG@Y”=AÓ•ddd˜ôôô(ÚŸ––æêDíÈÜ ÓB,*”A€ @(åzÙúÖ“=ʵ¾=DZÖ;Y—háë!ûïÿkUZ©R%Ó¤I¸ïÙ³g”(`äÈ‘æoû›4hPÒ ,0¿þú«ëCv ~ýõ×ÍG}d~øáóóÏŠºÓ®];sÌ1Ǹ¿×�=öØ<-ÿþ÷¿›¯¿þÚ|ùå— h~üñÇ(–Ú6l˜iÖ¬™+W›Ÿ|òI¤Î~ûígªU«f<ð@×ï³Ï>Û4l˜¿‰á¿ür�9÷ÜwÝ9¾ùæâȹƎ]džxb¢7n±Y´hƒ+¯[·²éÞ½©¹ï¾ãÌa‡©kc½æŠ+F¹í¹s¯¶ý¯ÙWÔ+[·n5/¿ü²yÿý÷�˜fÑ¢E®Kt�9묳Ì]wÝ•å~Ÿó^½z™Ûn»-æeŒ7ÎüéOrû:uêd† ³Þ/¿übù\áöé~ >kzè!÷÷†>øÀ¼ùæ›æÛo¿5³fÍrmpÀV¨r’¹ÿþû³|®%‚¸ð ]=�ë?ÿùOÌÏ”þœsÎ9Nœ!±ÀèÑ£ãŠ4î»ï>óÕW_¹6Å»{÷în=Ö�Í›7›_|Ñ�wÚ´ifÆ Fý=ä�CLëÖ­;]›Ê‚¦AIÿüç?íó>ÎÌ�;×ío½SN>ùdÓ§OÓ¶mÛà!q×ׯ_ïή0bĈ,Ïš¯#:‡úuî¹çºsJ¸ò׿þÕtéÒÅW˲ܴi“9ãŒ3Ç^xÁ=#Y*%³ ’m\B7ùeÖõªÐT­�·¾Ìz²l¬mxœõó¬÷·®¾`€Š˜†"¾œ€¢ ø *Õ=aóûɰ&Ã6 @€ Ä$ Ð?¬/�¹7ÿ…el*(6v”õÎ/_¾ÜŒ3ÆVÎjÏ<óŒ ª+€¯{a™‚Ó÷Þ{¯s_cÙüùóÍUW]%P@XA^ˆåC‡uDº ÃÔž8q¢ °úó)x©îÞf̘—·êÜpà 梋.2 <çeTüÖ­;ÍÕWïH|ðÁ¹VȱO ñÉ'¿š7Þ˜á»b«,¯ÍfĈŸ�ϘqEDÄpÁG˜… 7˜;îcûô© ¤Ÿ9®¨W$nѽ÷&Æ jKÈðÄO8Q‹î½zõ||Îõ¼_rÉ%¦N�:‘ý~å/ùKäþ(ϸV;Þî¸ã÷YñÛÁ¥ù§žêóõïÛ£gU>~üxóÈ#�˜O?ý4È—HCb /¼ùë”è@.!‚„:ß|ó�¯µT¦}†e^€à×Å+hÚ~ï½÷œëº4`Ç›ÁkÕóyÚi§ùÝ‘åóÏ?o¾øâ‹È¶±Lb€?ÿùÏ‘]µjÕŠ\w¤0sEŸóã�?ÞÝ[¿Ïs�hIþÊ+¯dyWè½!1FØ$d�«ŸNH,�ÈçL,ƒ |»[¶H‘ÛÞzë-·CÏšþ‡(a˜ÄV4e'`�hEý“ ';Wì³&¡TºeF�ÿÑú|ëßYg]ÿ.�}›íŽ<š„}¯YÿÒºtFR`€Š�@üßаSœ€  ?”‰Aø]e)ñ‡·€ @€R›ÀNÛ=Åoµ^Ðâ…ýl› ,Ýe}¤õG¬ÿÞzë¹0�þ^¼x±QÀPAAT(T X£ªSÉ4e€F\+“�ú¨¦F;+H­€¢2)*‚låÊ•…Öu %œÕ(oÙgŸ}æ¶[µj•¥ x‹·D ÿÆoDFxk„ûyç�gt�¹µþó;Ü^m.¾¸µ�ß"êð† «ÚÑß]ͼyרÑÝw˜Õ«ÿh3L\ä„ ªxß}_EÕ8ðHÓ©S=t�cÞygVÔ¾¢Þ�XEϨ2ˆ¹üí·ßvÝ’(àÁ̶‹O>ùd–ýzÖƒ‚�,2 4Šþ¹çžs[zþd4IJ5kÖDÄ šŠDϬúª6tÿ%ZPyØ”©Ã÷E}�>}ºY·n� ¸k��ÿ|†� nëù efiP ýæ›o6Ó(0¿cÇ—yT™Kd—]vY°™,ëÊ 6 .þñ©³r6/(òìtß~ûí·˜Jx!aŠ>S¯½öšc&~«W¯v ]GØ>ÿüóˆxAï <ôYÒuΞ=Û¼úê«æˆ#Ž–í¶\dÈÕN"&•Lÿ? .•UA¢�x¦÷™ìøƒ›ö"^½"+×w‹¾cô]£ï}÷è;HßEiú®Ôw¦¾;õŠA("d`("ðœʼn€þ�7ožsŽ¥^•cH&Ÿi!™ç m@€ @(¡ÖÚëºßúÞ¬ñs‘ v´õ“¬k½Šõ|ZÕªU#A΃>Ø¥‘Wšz¥Û×Èc5R:l^ð f›6m²MÉ®ÿëL�:Õu¥oW :h ¸*8)Ó9Õ¾7ÕUðõ±Ç‹¤¾—XÁ Toÿý÷7íÛ·w©ÿ5Rü�wÞñ‡»à£FïkŠ ”AmvîÜ9æµELÂJÍš5#¼[´haŽ:ê(óûßÿÞ¥Ý×h}�Ô¾ôÒK�8#»LÁ®Íž½ÆŽDß+B<øÄà.·~Í5£ÊÊ—/kG‚72·Ür”yà�±f„èÜðÚÿôÓ§š£�~Ù\sÍ'v”|;ÝEŨ6rÚgk+T¨7Õ~Nm„÷k …… º6ý>Õ±àꫯvY4õG,ëÑ£‡ H àwðÿŠšn@¦ì^<« ÄT׳£étß4Å�²7”/æÐ}”© ÔW¬¸�ŸDrMŸ0vìX7âÞŸOAnÙã�?n®»î:_ì²Hh —Ð@ÙQâ™ú$»üòË£ªè3Î:еkW7õÆ\à2è3κ¢Œ:Nlÿ÷¿ÿãM¢}vsb§úʰ"Ó”š¢CS¿èsê§äp;í}öý}T6ƒŽ÷=¿úü(û„üúë¯7Ë–í{vÕ™¦åOÒ²eK#×”šGÏen­L™29¢÷Ü÷ßïî“Þ/² PEÏW,a˜úgæüóÏ�:�ÄY²ˆ—QÙ 1$ô�M¢ ½»O8á÷T;õë×�z7nÜè-�é=­Ï…î·ž³l¯·ºíâ)™¾É.¿±®$ßZW&…‚°×m#Ó­?h�0@A¥ @ —ôk7@ [/¤§§;U°R™1>[\ì„ @€ @ ( (¦vƒõ‚/h@½ÚSfòAÖ»[/ñ‚m%¦)ØëM¹ I ,`¢Àq¿~ý\°ëÚk¯uA²`]­+˜ª £‚h ¼*h«ÿƒ r£À}}‰\–=õÔS®}�C®ÑêI}ûí·»ý¥/¸ÂÀ<ƒ©êo¼ñF#±À‰'žèú~ñÅ»Ññµk×6wÞygÌ~š+”Ue–ÐÔ2�ê7n\Âç6lïƒvÅím€2ñ£víJîµjí]OxÔQ Ì‘G6pSM¼ÿþ/Á] ­K„¡{׳gÏ„ê'R©\¹rqÏ­[·vM( ËtÿõüiÊMÓáMÁr�|—8BÏuv¦ 2��WPZâž%ô [p¤½úÏ4M‚8yS¶YvÁãjÕªE²vøãüRÂeõPßÂìÃâŒKÞ$H ›‚ý÷Üs�+ÖçÖÛ®]»Œ>‹²Ûn»ÍÇ\Jx¢Ï±ì¬³Îr"­kZ…°iz‡DLï€à” þ¸ì„?šHxœ$r¾Dêx‘Æ•W^©.î^¤1|øðHypÅ ®Ž<òH'Pðû4 ‰ž‰!ôÞ’øAÏúgœá2Ïøz~©ö%@лN}P} nôÎU;ÊúâM™@ôœèœ½{÷vSØh©)s%JûñÇ}Õì—zåè;I�†¾£ô]¥ï¬‚0½ÚÔÞ>�JA´J€"€€!!LT‚@é& ¨”õ2è—-ý"TJ—n:\= @€ @)C`…íÉ@ë‹òÙ#¥åîeýiëÏ[?ÛzMë…`ÁùÝÃÿyæ™gÌ›o¾é‚^}ÒIJa»ùôÓFs¸M©Ô}Zz}%Lð©ß5½Šêe|ð©ì5ºXÁ7ïMš41=îÍývNK‰¨Sð¡‡r)ïµ.{øá‡ÝÈýœÚ(Œý *�.ãDÍOóЯ_âéñ7mÚa†�äNqòÉMbžêÒKÛºrM%‘êæŸ=e÷ˆg·Ür‹Û¥©¼À@Y=d÷Þ{o¶Am}&|ðY#ä•DÓȼ°Ámdþð¢ &Ô¶¦”HÄü¨}‰y2229$ªÎë¯kغ1%še@Aro¡ËþïÿþÏÂ5†2 ÈÄ|Ö¬YNСÿ×fg¾_HÐäÅ"ãÇ�wÓ©�mÖ¬YdSì4ÝJ"æ³(ÂîI¢S>$Òv"u”ÙEïGY8‹‚VÔ·XÓfhàžLÂo4)+‹D2zoêšt_õ.Ó>½Sƒ¦©6$Ó3§ŒzÎï»ï>÷®Öóë È”ÍBŸ e"o½ƒ”íA" ÿ9ñÇä¸Ôw”¾«ô�¥ï®Ó¬ë»,?¦ïR}§ê»ƒ Pˆ0"lN@€ @€ $‰ÀÛîÝÖ—æ£}¥Ê¾Üºâ×ÔÜÊz!Ûßþö·È} Ö(¸¥´÷ß}÷�yâ‰'Œæ�÷Á:ŸA@u5’üÖ[5‘ùÞïóÏ?o§#¸Æüë_ÿФ‡—x`Μ½Áñ›nºÉ�ŒV}�Ö(yïšB�R™‚wá÷nG6?”�A©ñ5:Z:õKëO>ù¤;*Øïlš)”]‘/›9sfBç[¾|“e³wê�NhœÐ1K–l´ÁÉ·Í”)+íhílŠcb×»÷ÞaÔy0hŠ��£cž¤ ÅJ�uÙ%—\â–±~(À­Ñÿ ð*3ˆÉ hĺôÙ™Rÿë8µá…6þ¹Wð9œùAGŽ;î8פ²處@åþûïwSJ(#A,»ë®»\ñܹsM·nÝÜh{ y4e…²r(Hž�IH$SöÚDLjŸAAòxÙ $†P0\æß>û‚ÿœgw>?­…äk*]ŸÌOýà6ì‰C¼¸IÓ*rÈ!nÚŠ�š—^zÉüôÓO1³¦Hؤ÷ƒL%ÝWM�1xð`7EK¢"×@~øgDYiÂÓîès­L2‰‚&�†„2Mq!Ó}‘XA&a‚Þ›b§çÀ‹¹ÄÆ‹Iôlþñ�tõu½ü±¹ûî»Íƒ>èÞÕ)„MŸQM¡©Q$^�ˆA¯ &¸¾jº±Î³é»KIsô]¦ï´üL¡ïT}·ê;ƒ PH0ÄíGœkÔ¹Öój¾¥²’ç·½¼öƒã �þù%óB^èq  @€ @…Jàq{¶¼V?Ð{£õ׬k`wuë…`K—.uÁ½÷Þ{ÏeHÐT>@© ûï¿T/ ö�Y¿ãÌ3Ït«^Œ  ‰T“àAAÄ )í{Ÿ>}\ѨQ£‚»â®ëC2Íÿž[SàP)ã5âX�aõM)ÛW­ZåšÊW�.·�É¡þá‡îjh*€DlùòÍ®Z»vuL¹re²=d÷î=v„ø�–ásæ‹/æÛ@|Ëâ"S½zŘÇ5l¸7¼aÃv³uëΘuâêÙÑóðî»ïÆ«R å Jk¤¸L£Õýs¯ñ;î¸ÃíR öÑGuë ì·_öÃÄýÔ>£ˆ ¥õù š„ÊPT(à¬ó*H­~×®]#�k¬>:NÁw™FÂ?÷ÜsFÙNô¹«S§ŽáÄšêA�gÕW°Ú?G¾ÝXËÝ»w›«®ºÊ‰ƒôÑt*Ù™®EàHWÐ]rúLj*õKÇêyóYP$Jسg�/vËxÀMOá _}õ•›(C�$-[¶t"¤àAÊ!a•?)s�‚ÿºç:¯D$,Y²$xX�­{!H0‹‚o\ÓˆˆµÌ?K~Ÿ¦ü�õíÛ×Ý_­K¬"�D@tMâMa"›6mš[êÞëzõÜø,7nG6?ôNô¢ ÎtŸô>~ÿý÷íT4õÝ‘‰f¿Èæ4{¿Ëô�¦ï6}Çé»./¦ïV}Çb€ ‰†8 õK¹Ô›rÿ zœªÙûv¤¶“ç·½lOÆN0ÿü*eZZZšSç”’¬€»@s€ @€ @ gl•ÄbñÑmI Ñ©Ã­Ÿe=v,ÙîHŽM™2Å÷$B¸îºëÜ<õ *hzùåêXÎæGG‡ûQÂÇ{lÌQÝšw]æ3+äth›?~NU³ìWú1•º¾E‹F£ãT�T¦)&RÅ|p5¯_¿Þ=»z†$”yå•W¬ˆ£\ÜëÑŽ£�>ÚM{¢`ï_þòTŠ b,1‰(ø©TOçòiüuî°éúLšDÙ?xåõùP°:hª³`ÁŒW–eðY$ R¿ýHýàqú¿¿ÌʃûÂë hľŸþB×ç?cáº~»J•*îs¤m *d^â6âüð$ ¢” C&Q‘²MlÕ¶Ø+»†²=(ã…vèe™2dHð0'¦�@Iâ Ì÷‚U1b„騱c¾ŒF�0scñâÅnZõïÄOŒU%’©FbŒ`¼Çß7/èÐÁ³gÏvmè:5jdêÕ«åÃÈüûpÆŒn[¢ 5õEÇèYíÔ©“›zBÓPè{A&‘K�™¾ÛtËõ]§¯–hmœ-HÀô;1�zT� P›ÀÉŠCq®/°`¦­Ë¸Mô—×Xí‡ë§��ðó«ç¾C‡Î!@€ @€RŽÀsyèÑ ö�H­�‡c è-ÔˆqßàÿÝï~ œÈib�^÷�x/n·ãÿÇ©@r"¦µLõ¸®V-~à=ØÞ¦M›\€î‡~pÅ @+ܤI—ö_ÓZ¤’i¹L#̱͛w¸j5k& ¬[·²�à¸Dš·ÿ‹Þ«¨Ù¶mWBõ «’¦Qæ¥Ð×(õ/¾ø"ágVT_ö§?ýÉT®\9Ûn¿ýöÛ‘ý­[·Ž¬kE‚™‚ì b+Ø6�ü—àÀ‹” D@$~ÐñJß¯í •)SÆHäã…>Ú'Qƒú+Ñ�Ø“'O6š^E¦)| üì³Ïveñ~èüš²ÅO¡òå—_º¬ ñêËõyñÓ;(«AçÎ�ƒ»³¬ïܹÓfýxÆ•k9|¸¢×YM"ef [ÅŠ�²RȽ)óÃ�7Þèî½ljj ñ šž ¹7qÖôEè¢~H°UPæ¯KÓ}ÄÑhú‰ô.’ å¶Ûn3'Nt".‰Zzõê鎲/Èô~>‘ ™+þý{47Óë¨Ï+Èô~•pFÓuH,¡ì$7$ÅôªºÐú©Ö•Q!·§j�yÖ:@ É0„K¼ _6ÀÕˆs™FŸëý1¡ n"nÇÏ{¥?$„À �ÊÂϯž{žÛT¾cô € @€ PŠ Lµ×>+ׯÎÍÖ÷ÅärqpÁVÕhdÍ™^ÐÖ¸qc×ä²eËb6í§oˆð §“W ¬yÓüî��ˆ}ýõ×.`¨¡‡Aa@�¤GO¤ Ö™9s¦Qe~tzN‡ÖªUÉUY¸p}NUó´öì5î¸xÓLä©Ñ|$¡€Úš–@a= º&j'Ÿ|²;N£ÜÉVৈվž+/bÐT‰¤ïW€[S/(xýðÃÝ÷DLÓN<þøã‘¬ úÿ©0(í¿ú!QDvâeIéß¿¿Q_Õ÷O?ýÔe¥Häüª£ùí·ßîÞ9M9¡úŠx>:_»7¢î±ê©LS�è=¤i3$`f§¨TiïgYõt¯eݺus}vÙüðïQM ”¨=öØc®ªú1hР¨Ì |ðAò ¾ƒºeYmýë[­'bú®Õwn›D*S€@Þ 0…Dˆ�„ ʸ _@°•k=˜‘!tHÌÍp; {esÌ2 ýqcÆŒ1‰xnû•ݹÙOÀ?‡þs�èóë�g @€ @€ �ÀØ\œIA›[OñB.z�ëªÊä ûì³ÏbNÑðù矻ýAa‚Ïä ¬ a«Zµª úª\©ï}P4\OÛÊÐðÚk¯¹]J'/ÓüòAñ‚+L¡ h júLgžyfd—u¬@æöí{ç‘�vå‘G4Lwï4…í§…p…ö‡ÒÕ¿ûî».[ƒ]\³fM·[Ñ`Oéøo½õVh‘,Õß… š!C†˜£Ž:Ê(m¼ÒÌkôs¢ÅÆ�÷ŽjŸ;w­ tf?„yëÖ�6Ëï Ëm¹ ÖîÉñš§M[åêzè�vŠ‘29ÖVÐôº†ìÒßë'²®,ÅÊ8 gJ�zw«W¯žÈ¡y®ã…0ʈ៥pcʦ SPZY”eÊ< {yà 7¸©\aæ t>üðC7„ŠÄJ¦ì &·iÓÆ¼÷Þ{nÛíÈü¡À¾¦(�ijŸ}AÁs�OÓ{ì±™µ£šÒE÷BµÔT%ê_2M�ôW^yÅ�BS·Ä2eðÙTg�éz4=…ÄšE0úÌèsï3gèXÿYÑûAƒA5ýÁºuë¢N§gFŸ3?uˆÄÞQreFð¦ мHDâ Ÿñ@û_|ñEWM÷.'«_¿¾éÓ§�«vá…ºgYïI‰–‚¦û¨û#¡Ö¥—^šE˜!ÁÓµ×^ëb:Nï[?ÍŽÄZãÆ�s=¿z·Hø´`¶‰Ì¼‰õË/¿l‚Ó¦ø}I]ê;Qß�úŽLÄ¢/'‘#¨@ ×ÊçúÈ?’]êB­Ë”5A¦/t¯:tü€ @€ @€rG`Q‚Õo²õ%X·˜WÓHñ'žxÂM…pÿý÷»Õ�;w6JÝþÑG¹«SÀ18zþ„Npå ·mÛÖh5^éÍ5?»‚†ï¼óŽ›fWuÔž‚v­[·vÁ?R^�øÌ½{÷6t�Â*Uª¸À¨‚သ;qÜ{ï½æ§Ÿ~r�W5q×]w�ŽWº/ÊðMk$ú“O>é¬á,º¥ô�(÷m—•+ïgÙ´°L瘑#gÙÀ~»àî¨õ%K6ÚÌ{3S¬Ys“ý¿pŨýá�W_ýÙ�uÖ¡á] o+à\PæƒÏjOy,ÿ›nÒ‡-¦`®Ïª!l¹I“&.-Q޲xa�êè^ËôîÒ¥‹»ïÊ|àMˆË/¿Üoºå¬Y³Œö´k×Î�êÿæ›oÜ3ì+Jàà³ø,7(»D,ÓçEÂÙŒ3âNS­)­5½DA˜ú(Ós­©jâ™DŒ9ÒMáëIÈä³2(À¯,,~[uøÛ é3¥i<äÊJ ÷ˆ2aˆ©7 Tî-˜u!¸®Ï°2*h:M7âÛРOÏY" M1¢ûë…(¾ÝxË‹/¾Ø‰”|{ºÿeËF�ó­X±¢yá…œ EÇQÆÅrôžÓý”Iä!“øâé§Ÿ6šE"•° ÂU²?|¿5�‰ž—¡C‡šë¯¿Þ½«”5GkÂï%lÒ—únÔÇö�ΔèwnMQ€@<åãí ¼`øŒ JÁ¯_@dR«J :`À€,¿¬èËPåRê%bCxud"õ©@€ @€ �E 댱/ï¨ØÅEYœÅë‹^²Xõc•©®‚° :÷ïßße\ðYìSàÌ�¼V]™’ žj$³‚{>Àl__‚ï¾ûnóæ›oFÕS –ê›~4´„ Êh ´s>ªßÕW_mLô�`/óçó˽¥ñ*è§ ¡7/¤øë_ÿê‹"�C(Ó‚L×Û A'¶¸è¢‹\ z?šÜUHðGß¾‡8ða?e+`ðÁK5'Î9㎻mPyo6�Þ½÷NÙ™‹•¼\O¼æƒ÷C#êãY¬lðØxÇ…Ëuý½êÕ«WxwÔ¶Æ5_GÖ½>|¸›ª!øìé@×%|Ñ}÷}“ÀF£áßzë-wœŽ‘Ð&(¶QýxÀø)Z$ù÷¿•?ë4®0ó‡?‡6Õn,FÚ·råJ-rmÁgË,1‡ì’K.qËx?”=@%tOõYU¶«ì^áßjC$Rfà��@ï :$Öðîϫϼ>“>Fâ˃l‚ס,Aþ:ïàÁƒ#Y0t¼ÏT ÷M0«�o;ÖRb¬ …߃~Ÿ²ÌHð¥L1wxÚ¯¾(ƒƒb>Þ$p�XCïVeØ�ØA½ç”õA×"ÎÞ4õ‰¦§¾GÕî}÷ÝçD.zyøã’ºLô;2Ñïܤv–Æ!�’N ŒUµåœ¯ª¤S\Ÿ~Ù•ŠO&u²,¸íç–R6‰|V}!I|à3*øv$0P¹ŽÓ/磌=w¢<üðçÑ¡ê¯ï_šâDð\EP°�bG üùÕ$ò½>Žï“bwë‹U‡yÞŠÕí¢³€ @ õ (ü†ºù€­³w|Q•KV•Å‹»ÿe*¨«ÿUƒ†á+õS+(¥¾êƒ”ẚ—^�J‰4bºN�:á*n[ÓG(¸§65¢Z^RlÛ¶]6P9ÌŠ9V[�Æyæ”SšåûÒ{l‚Íbð¹ |¶4ï¿N¾Û+Í è™[¶l™Qæ�Ê•+»Qý çd«W¯6úÜhÊ eÑóí…DþX 4‚#jú”’f»vír±SF e»ˆ÷^»¦Ð1d¨¾2¡(«AnLï!Ý7MGqà�MÿèkªeÔдÙe™ÈÍycÕU_4í�ž = Ê\“Ý;4؆Þ}ÇÈô,é šÚ�?¾ËpѪU«„…Á6 l=öô@­éãó~õ¨@ ÈÀ�Gx/(ó�ŸBj»ì2*(¤?|ý<ž–à @€ @€ � �ƒìÆô`AœõGmyKë¥d‰ Ý䉘Fí+u{"V«V-#ÏÉ´Ó”%Ñ*V,gG]÷´ËF˜k®m¦NÕhð¼ÿÛ}Ñ¢ N¼ VO<Ñ£$"+ÔkRà\�wynLAsyv¦idái(²;¦8í“`C"&ynLÓM(ûŠŸJ&7Çúºz)KŠ<–i‰:uê”Tñ‚έ¾(k‡<žij 6$ªð™O¶lÙbn¹åwˆ„.añ‚vHÜžê&Þ9’Z¾Ø¶®ïÈD,ö-IäHê@H˜@Þ“JøÅ«¢2(HŒà3,¨÷¨ÜgWP™öKŒ „Þ‚Ó>ÛѺ¯/áC¬ö|,!@EA ø½¥ï*ŸA(øÝWý✀ @€r$ÐÎÖHDÀ°ÖÖ»ÉúÃÖãÇ¡ìN ¹#�–ÖØM1lØ+bøÄ ÖËŽÐ.“»FlíÍ›wØ©=öm2ä$t¯–ë68 p(ËÀG}äì§žzj᜔³D¼óÎ;nýª«®Š”åʸqã"Sçh*‰8”ÂÛ?ÿùO¿šz˹¶KwX×wd"¦ï\ €@’ `–¸@™¸ÉÈÈp{5/“D Ú—¨…ÛQ¶™ÊóÒ^¢ç¥ @ /Âß[“'OŽ™Y(/ms  @€ �¤8ζþz‚gXeë]gýfë§$x Õ ��¿ÿ=ÍÎg?Ãfí�j3XÔ°ÓýêÁÌ�õïÿ‘ùúëEvJŠ:æ†JfÆŠÜIÝÚ P¯_¿>u;XÂ{vÏ=÷yª˜²(H¸0kÖ,çê—¦*éÞ½»=b}k.úv|.êR€@ `�ó#PU¬à�LâyЂõ|�à(Õà~ߎêùòp{Á¶Y‡ 6ÿý¤ŒA^tÌ,TØýá|€ @€&ÐÖÖ<Ôú¬�P æoÖÇZ¿ÑzmëòI N�Êfõê?ºVÊ”)“§Ö^{íŒÈñåÊå­�<�˜ƒ �|�PaæÌ™fûöí.÷~ûígjÖ¬™¯6“z°Ä|�[ÿ*—gÑwm›\Cu@y €€!4?U»µ6¿ßwøÉO½pûlC€ @€ @ ¸ÂÖ»-Áº¾š7ß[¿Èú9Ö÷·ŽA Ê—/›�£�Éïñù:9Cù&P¡BS·nÝ|·“´$à{Ûú¬ç&ë‚ïЕ~…% �ä@À‡¯‰gw$“B¼ý¾<§v|=–€ @€ @€@ üÎ×Óú¨\¯ÎóÖß±.!C/ë­c€ �’B`›½��­K¸°:�¥ïXf¶É#<ƒrKCn‰Q€ @€ @H=šb¶õ9yèš:J§ý²õs­÷¶^Ý:@(®ÖÙŽhý-ëkóq-ì±úŽÅ  …šÓ@€ @€ @I$Pɶ=ÈúMÖ—æñ< ð(#CºõÖûXoeƒ 3lG?°þ©õùìt{¼¾[õ‹A($ 4§� @€ @€’L@S�ÿËúmÖåã\ ø(ݶ\#O5µÄ‰ÖkZÇ @©F`�íЗÖõ½•—LD±®ç [øëúnÅ " …›SA€ @€ @I&Pß¶ÿ„õû­O)€s)¤öþmýhë'Y?Özë @ ¨l²'þÆúÖ¿µ¾ÛzAY;ÛЃÖkTƒ´@ qgEM@€ @€ @ 8PÀeˆuMñzuX�!ŠäûY—˜á„Ìeu»Ä @É&°Îž@b…¯2—ù�""VÿÏ^n�b,:”A…@€×O!@æ€ @€ @€@!Ð>¯¶~¤u¥À^n½ L£±™^Æ.Û[ïbý(ëM¬c€ �‚"0ß6ô�õqÖ'[ßc=VÏ6ª)˜:'£qÚ„ �8 ‰³¢& @€ @€ PÜ(ó¢õ—­¿a½ SlÛæ\ i’]ÊŸ²®),ìã«Ï5+Zl0;«ì6gwìh £móöíæ£Ÿ~Š.´[5+W6Ý?uÉ3}éÒ,å�›41Ík×ÎR>nγxíÚ,å'v˜©]µj–òQÓ¦™ [·f)ïÛ¾½©P>kxã͉³ÔU=Õ›ÚUûaS?ÔŸ°©ßêØt�ºÞ°M_¶ÌL]¼8\ì8ŠgØÄ]üæû¤û6ÝWÝß°é9Ðó6=7z~‚¦ç‹÷“qï›Tz?M�±ØÔ�s€©7«š©?½º©´Fi’g{Êî1ÛÏÚe*þÁ~¦*EŸ‡÷“qïÞO…÷~Šõ{AôSÉVi �õ¾4\5×@€ @€ ” È\e½—õ¡ÖÇZO–-³ �4æÓÜì±ÙÖlŒ]m™â§Š½g�íÛB €J-�-öʶnu[�¾­ašÍ®mÊ$+ËBò²ÖëÍäÞ‹ÌQ]›šŠ•†ð° �2{¬ѹ9m3fŒyðÁ]K÷ß¿éÖ­äò•!@IDAT[´J¥�ÏUi¸þâL üùÕµäæ{"|<ß+ÅùiHݾóœ¥î½¡g€ @ ÔP è%ëßòk0ýÖ;Xoc]‰²¬¶… ”XJТÄ(S­+{�¾“¢“cØ‚$›¦WºÄº¾“0@)F9UŠÝº@€ @€ $™€6ƒ­Ï°þšõÿY/Œa^ P)`%÷¦Ù”ù_}jeý`ë6s@%€€¾[X×÷�„ š9èWëEaúnQF ó­ëûƒ �¢0¤è�¡[€ @€ @€@’ (€ó€õ%Ö?°þ¡õ�Ö ÓÈ’¿ŸyÒÊv)1ƒ²3f½¥õzÖ1@H}Ëm±>Óº²,H´°ÙzQZU{òÞÖûXoX”áÜ€#€€!1NÔ‚@¾¬]»ÖÌ›7ϵѴiSS£F�¨örÚU™ @€ @€ �‚% €ÎUÖ/±®l 3h”lQ˜]2ÝŸ¿º]ñ‚†v½¹uõ™L @ (³‚Äos­Ï±î ëìzªX;Û ”u¡bªtŠ~@È™†œQù& ñBzzºkgÀ€¦CMt¸ÏrÚ¿¯&k€ @€ @I# O�L_l—ŸYm]Aª¢4ÄÆgºïG%»rˆueh� ¡™õ&Ö«XÇ @ àl²MÍ·®l9,(ÃÂlë[¬§šIÜvŠõîÖ¥Zçè �Ä `HŒµ �/ʰ0iÒ$×Fß¾}³´•Óþ,$©Àg‚� ÂgŠg‹HÒ©i€ @€ ¤~Xïo]#k3¬�±¾Ìz*˜gS2=ØM7á³4HÐÐØúÁÖ%xÀ @ >½WX_h]‚‰”]AÓB¤²Õ·�ëf=ÍúaÖËXÇ cŠñÍ£ë(h>„„ iii.S„„  @€ @(µj•éWÚ¥FÝŽ³>Öº[©f ´ÉÕÇ ÕµM­KÌ QÃAÖ%ÒP9Á. ƒJ�=ö*WXW–�EÖ%V�hažu•“Píxë]¬+ïq ƒJ  %åNr%š€ÏŒ ‹ô™’qÁÁL±¦ºHÆ9i€ @€  šé—Ø¥²1|—éìr›õT5æäêoÐ4m†D r‰”~¼A¦×²K‚b+)üf}i¦/±K‰$T˜o}»õâfzWÿÎúQ™®¬  �JC ½±\VÉ"à3#誔¬{ËÕ@€ @€ PŒ (€tF¦+ 6Íú�Ö¿·®i'DKu“èBY%äa«` $jðÙ$lÐren`Z ƒŠ„€¦{�(Ëg�‘XÁgU�X¡8Šl·#&ñØaÖ�´ÞÑzkëz'c€J ¥à&s‰ÅŸ@03Bß¾}‹ÿq€ @€ @ ¤P`IA&ùeÖ×[Ÿj}Šõ¬ÿb½8l7#¦ æ€—Dz궰¡uŸ±Á‹jÛ2y5ë �¼Ð;tU¦E *(£Â:ë%É$Xhi½“õvÖÛXçj!`€@i$€€¡4Þu®€ @€ @H.žºdºÎ´ÑúÏÖ%jø)s½¸�VQ>Ýz,ÛßzQƒ26x—¸AÓSÔ´.NLSa!`(%$ä’8a�uMó ‘‚Ÿâ&˜Qa«-/É&ÑÛÖÛZ—XAëU­c€ `0ð@€ @€ @H6¦ŽÊt�k§õ9Öü—KܰÈzI2 5ß¼<žígwHÐP'°<0s]K‰”éAB‡²Ö1@ 5 ì¶Ý’0A¢&‰V[—8AË•™ë~¹Ãn—6ÓT<š¢•õí·°N„ÎBÀ d%Àë1+J @€ @€ $—€þ3«ùÍågfžJÁ¿ÙÖgeº„ J�^’M�L¥„—ggÊÒ 1C0{ƒ²8ÔÈ,—ÀÁ ´¬hƒòG`›=\‚/LÐRℵ֕=Aë>‹‚Ö‹Û49¶ËI1ež‘HáÐL?Ä.õŽÂ @ !ÂD%@€ @€ @I& WçL÷§Rðp®õ_¬KÜ å<ë¥-P¨ëÕHny"¦é+$xð‰´~€uqÖR®ÌÚÖ²²u¦³°°G@ŸŸÍÖ7Z—AË ™®m­K” ÷�(hYÒ§q°—˜/Óû¢©õ–Ö%Rв¹u½o0@È3 yFÇ�€ @€ @€’L@�°Ž™îOµÝ®Ì·>케 ^à�hpßRâM�Weu�'jš¢Bb1 $n{[&—èA^)Ó™æÂ‚À œ€¦gØ’é"l²î—#Är/P�(A"µ�å�À�öP/P�H¡©õ&Ö+XÇ @ @ `(Pœ4@€ @€ @ É0Óh_yШ\�é^à0Çn#lRŠ¿®¯F¡ËójÊü ±ƒ8x‘ƒ_JèPѺêyу¶}¹_j¿î³|?ëe¬c©O@™4-ŠDFr i4 ƒÄá¥Ê‚û½ Á/%R�Kœ@& ¡�LB…Ö›Z—@áàL'«‚�A( ‡3g� @€ @€ �\ °µÍôà™]œé íR" ´® +Vph–¯*¸&�xA"‡ Ð!¸íE:xÑC°LQ€à¶ê•³®òðÒ—Ë•U"ìÚ/Q…/×¶Ö½Ð"ÖReárüeZz÷Ûá¥&»¬k)Wýà¶/÷õvfîW­ûíðR‚ïúJß=çŠSˆÀÚµkͼyó̤I“ŒÖkÔÐoe @€ @€Š9kfú!Ù\ËF»o�u‰V[—Ø!¸T¹|“u HmUl÷$H�h]B„àRåz/TµŽA€â@À Å( /¤§§›1cÆ8!C‡ ã´œ€ @€ @©A@�Ly㺳Ýî—ÐAYb-×e–kŸ|—u È�röp/DÒ²zæ¶Æái;¼¬`Ë0@€@> `È'@‡@~(낲/È1@€ @€ @ F•f^ž“iú elXŸé7øõ �2­û}FlµŽA ¤Øß^˜Õ¬Kˆp@æRÛZ×ÒïóëʨÀ4@…ICaÒæ\€ @€ @€ �\ ¸úÌ sqª¶®¦´ð.„w_\J±9³¾êi]â M@ÏteëèÙÖºDþ9.UÇ{°|?[ŽA€Š Åà&ÑE@€@a¨Q£†Ñt6Ê£in”!¦iÓ¦Få @€ @ DP€Wiñåy1‰”Åa‹u‰ä~]K¿/¼ôû|}¿½-óMŸ�Ê¢l3—•ìR.Ñ�Êý¶_/UÏ×÷ëªC& ƒ �Ò@Ci¸Ë\# @ A+ 0À 222ÌäɓݶD  @€ @ÙP€Ù§̦^nwI!ƒ ᥲF¨L®õ Ç*Óþ�1|WfYxÿn[.×1~]KÕ—û2¿í3PhéÝ®ºzÁm_Ïåµ”—Uek~;¸¿œ-—«Ž<¼­2E<ü~­{—8Eë:Æ——Úv b•ùr ´^ú>Û] @¹' ¯h € 8Á éé鮬oß¾Ð� @€ @ ¨( ® ¹ƒ @%œ€´ˆ @€ @€ @€ @(RŠ?'/é4‡¼æ�—kƒ @€ @€ @€ �Ø0ÄæB) „À¼yóŒR°ËµŽA€ @€ @€ @€@låcS �`†¼´§ã%|�7mÚÔ5¡uetжæªÇ @€ @€ @€ ”JÂ]äJ,‰”½AB†´´4w�fòäÉfÀ€¦C‡%öÚ¹0@€ @€ @€ @ t` ‰Òu¿¹ÚbFÀgpð”uÁg`Ð> € @€ @€ @€@I!€€¡¤ÜI®€ @€ @€ @€ PŒ `(Æ7�®C€ @€ @€ @€J  %åNr€ @€ @€ @€ �bLC1¾yt€ @€ @€ @€ PR `()w’ë€ @€ @€ @€ cå‹qßé: @q¬]»ÖLš4ÉÔ¨QÃ4mÚÔ-µŽA€ @€ @€ �T%€€!Uï ý‚ äƒÀ¼yóLzzºéСƒIKKsK 0@€ @€ @€ �ª˜B"Uï ý‚ 䃀ÏÀ !ƒ„ 2��!@9€ @€ @€ �¤@À�tÄœ€ @€ @€ @€ �œ `ȉû!@€ @€ @€ @H: IGÌ @€ @€ @€ @ȉ†œ±€ @€ @€ @€ �¤@À�tÄœ€ @€ @€ @€ �œ”Ï©BiÝ¿víZ3oÞÓB·nÝŒÊÓÓÓ?H©ÅÅC€ @€ (�ï¿ÿÞ¼ùæ›YÚ7nœ9î¸ã²”KÀðÅ_d)<ù䓿¬³Î2Ç7•*U ½jÕ*sæ™gš¯¿þ:Ëþ+Vù?ü`^xáóÀ˜ûï¿?K½dè|Ÿ|òI¤yqÀ @€J�²¥ï’¹âÒH@ ”m!--Íe[��ƒ @€ @€@2 Œ1"fóÿùÏb–ç¦päÈ‘æÕW_Mè ”µ!,^8à€Œƒ @€@* C*Üú�tÊ´0iÒ$w¦ŠH:nN@€ @€ ` lÛ¶Íe3ˆC™† ⦄ˆµ?X¶páB³sçN³`ÁsÍ5×D¦}Per¸ì²Ë‚Õc®k`�²Ax“haÔ¨QæØc�uSY,Y²ÄL™2Å<ú裑L›6m2sçÎõ‡M}¡i&‚¶lÙ²ÈÔ*oÖ¬™©Zµj¤Š²>L˜0Á¨}ý�®^½zn ŒöíÛ»öÄhÖ¬YfõêÕ‘c´òÓO?E¶›7onªT©ÙÞºu«›vöìÙfþüù®Í-Z˜£�>: O1[·n]äØ6mÚ¸~|ûí·FÇ·mÛÖuÔQ‘ãvíÚå8|÷Ýwî:ºtéâ®)Ò+€ @I%€€!©xi€ @€ @(­4%† b^¾Ê?úè#óûßÿ>æ~_(¡� (£è•W^inºé&¿Ûzè¡‘õìVfΜµ»Aƒæ˜cŽqâíhذ¡óž={šÏ>ûÌT¨PÁ Úµk9Nç ·sÉ%—DªøË/¿¸À¿D·Ür‹yê©§"LJW4 F×®]Mð¾N°ìóÏ?7'�t’Û%ÑÅu×]%¬ðLj“¦¿8å”S|‘8p yûí·#ÛhÜ{ï½Q÷EÇIаtéRÓ¯_?'¨ˆ`W”Eã‚ .±@€ �$L!‘$°4›|æM!¡?ð:tè`jÔ¨éœÖU¦}ª£, :ƒ @€ @€@~ ¼ôÒKQM|ðÁQÛšò4'“ÐAb€�7º¬/¿ürÔ!}úô‰ÚŽ·Q«V­¨]ÊzФIsç�w:!ÅòåË#û»wïî„úŸÙ©§ž)×1ʦàM‰4¼�vÚiF™d7Þxc¶âÕY¼x± Û+¯¼btŽ`VˆàÁ‹-rý ‹,‚u$þ‹Jt\ÇŽÍï~÷»,â{ÕUW™5kÖ›a€ @ I0$ ,ͦ‰ô‡ R䥥¥M¡?¼¼i]eÚ§:ª«c0@€ @€ ä‡ÀÊ•+ÍÈ‘##MwÜq¦wïÞQ”�AS+äd•*U2ÊÄ �8?üðƒ«®me 8üðÃs:Üí×TaSàþá‡výª_¿¾Ñ´O?ý´ÑÔÞ®¸â ¿ê–šúÂÛ;ï¼ãWÝòꫯv˱cÇšçž{.²¯S§NnúŠ_ýÕ(›‚2 ¨ÿ2e?6lX•«Ì{«V­ŒúªÌ Þºuëæ¦ÒØ¼y³‘°!hj?žé¼_|±Bë¬X±Âm*#†öM‚‡àôÁ}¬C€ , Ë“ÖRŒRì†Ð@€ @€ PJ¼õÖ[QWzÑE¹m ¦ Úo¼ÜLx]AõAƒ™)S¦$tŒ¦ˆ:th¶uÕÖµ×^k$8X¸p¡«+Ñ…¨@S4lÛ¶Íí f�¨[·®éÕ«—+_·n�[úÊ1}út³{÷n#áÁC=dæÏŸoþð‡?˜š5kšK/½Ô4kÖÌWwK•yWß?þøã¨Ì â¨~ýöÛo®M�ßÛ7ß|ãW³,•½AY,ÔÞé§Ÿµ_Ù$t?´ÿÏþsÔ>õƒ @H> ÉgÌ @€ @€ �RFàÅ_Œºâ3Ï<ÓmŸsÎ9QåÁLQ;g�u–éÛ·¯éÑ£G”˜à½÷ÞsY²›2!ÐŒQ6eGîƒu´®©"”‰AV±bE'jpö‡„£F�2¿üòKTV‚믿ޔ/_ÞU;ñÄ}u·T{ýû÷wÓKhJ× /¼Ð ütQ•ãlLœ81j�Ä �7Ž¸Ï  JÊÖ°eË–¨ú~£J•*~Õ 5"v¥Zµj‘ͶmÛFÖµ²}ûö¨m6 @€’CCr¸ÒjÈ)óBw�ÓC€ @€ ”`?ÿüsTp_—zê©§:±Áyç�uåªûã�?F•7”e@S5¼ûî»fôèÑféÒ¥.ã@°Î믿ÜÌv]SY|øá‡fõêÕn©éŽ9æ˜,ÇÛ g�Pæ…pæ ¼U®\Ù<òÈ#~3j)Ĉ#Ì!‡bÞ|óͨ}ÙmøŒÙÕ îÛºukp3æz… b–«0»}qb @€@¾ `È7BHEóæÍ3úC*##䥥ý‘Õ´iÓTì*}‚ @€ @(a^}õÕ,W¤é¼‡wƪ®ã·•A ,8X¾|¹ßw©¬ #GŽ4{öìqu4uƒ21h:M¹ �DÐ4Õ‚ É?üp#áƒ7µó÷¿ÿÝoeˆ8è ƒ"ÛZ¹é¦›Ü4×\s�iÞ¼yÔ>¿ñØc�ùÕ—­ZµŠª£ìÊìÏ•é!'+S¦LÜ*Ùí‹{; @€òMC¾Ò@*ÈmýAÓ¡C'r�øaÒ¤I‘?ÐRñúè @€ @€@jعs§:th®:÷Ì3Ϙ;växÌîݻ̈́ Ìþ󟨺mÚ´‰Ú޵ñõ×_›³Ï>ÛtéÒÅ ú Ÿ¯zõêQ‡)óCpJ…«¯¾:j¿2)x ïûì³ÏÜ 40O=õ”™3gŽû_›DASŸvíÚåŠüô~pJ•µk×ÎïrË·ÞzËMI¡LA_¼x±Ñô¢p±@€Š �½“’›îÒQ$‡€²3(Kƒ„ ÊÚ0yòd·-Q@€ @€ �D èKÁàûi§�f‚Ó1øvN>ùäÈ4(诺aÓ¾zõê¹â`»Áz=zônf»>~üøÈ�:u2-[¶4 úKL´Ûn»Í”-»oü›²,Ä2e^еM‚…k¯½Ö<ðÀFSKtìØÑ(sÄ´iÓ‚ÕÌ‘GiÊ•+çÊš5kµïÜsÏu™tÌ 7Ü`Î<óL£é.-Zäê½òÊ+æÛo¿5\p�‘øâ×_u×ðÃ?¸Œƒ Šj� @€ �âACñ¸Oô2É|enÐÔ²¾}û&ù¬4@€ @€ PÒ(°´~ýúe3[ÿþý#í{饗b ´/žpAûÞÿ}'BÐznMÁ~yØÎ?ÿ|s×]wEK€pýõ×›'Ÿ|2ªüÆoŒˆ¢vØ õûá‡G¶YïÙ³gTÛ_}õ•‘Ëİ}ûöFY‚Óghúˆ|0Ò+€ @ÅŸÀ> mñ¿®€ @€ @€@‘زeKdpŒïDïÞ½ýjÔR‚öÆo˜�7‹b®×­[×ñï¼óN³dÉÓ§OŸ˜õÂ…W]u•ù׿þ%×Q&e‚xõÕWMxJÕ½ð Ç 1Â¦Ì §žzj¸8²­lʞЭ[·HÙé§Ÿnž}öY£¬aÛo¿ý\ÑÑGm–.]j$šˆg:÷À�#»ƒY$TœZ"¸9 s%»ãÂuÙ† @(8d`(8–´�<f€˜7ož›ÊBÓZ„-^=•c€ @€ @EK R¥JfÏž= uBS/Ä«¯<¡†ãTÒùn¾ùfçÛ·o7 ,0«V­rÓD4lØÐÔ¯_?¦h!ØÜìÙ³ƒ›.3‚ŸÞ"¸C"„Q£F™mÛ¶™åË—›eË–¹õ:uê�«ZµjÁê‘õ+¯¼ÒÈõÿ1‰9ößׯªU«Fꨟ�=ö˜sµ­©#t=j[ûjÖ¬©« CâÙÝwßmä±ì”SN‰{bÕ§ € @ ` `(Ž´�|�XaÀ€N¸ y'Ožì¶Ã�ƫסC‡pU¶!@€ @€ “@… Ü´-[¶Œ¹?^á£�>µKY²³Š+šƒ>ØyvõÂûb ì ×Ѷı±êR@€ P< `(÷‰^3k×®uJq©Åõ—2$ÈUË‚™ÒÓÓ]½&Mš¸c‚LJ멭¾}ûÆjÒ•ù~h÷·2; ß7z—Mš4‰÷H€«€ @€J�ñãÇ›~ø!rÙ‡z¨9á„"Û¬@€ @   `(Š´�û¼!--Í(C‚ &bþx<>‘cƒu|;*S†25é°dG@ï¬X™ax�dG�}€ @€J.�çž{.êân¼ñFS¦L™¨26 @€ �_eóÛÇCY (ó�Ä (¨€ŸF3'juü˜1cŒ\}‰—ý!Ñ>Q(]|½Ãô.ã=Rºî?W @€ @ LàÙgŸ5;vìˆøµ×^®Â6 @€òMC¾ÒR�€‚�Ê!×:@€ @€ �ü(_¾¼ :ÙòC“c!@€â` ‰xd(/–”e@{¹F kqn2Ë‹ŽÑiŸÁ!Ñ)+b4A @€ @€ @€ �B%€€¡Pqs²d�pAYÀOKKsS7HÈ€A€ @€ @ 0 Ì�[˜gã\È;�æÍ÷Ë3›w†É>’{”lÂ%»}žŸ’}Sùêü³—Ê}¤o©I€)$Ró¾Ð«<ð™|†:”ª ¥ýúóøØp @€ @€ @€ �ÈÀ�7�.@  „3P´oßÞe¤(¨öi€ @€ @€ @€@² `HYÚ…@ðtê¸ìóçÏwSjHÜ0iÒ$£)5jÔ¨Q½ã”€ @€ @€ @€â` ‰ølØ�bO@b ÒÒÒLFF†ËÆ !@€ @€ @€ @ Õ `Hµ;B �>ó‚Ä -tèÐÁeYP¦­«Ìg`P] € @€ @€ @€@ª` ‰T»#ôy qBzzº›*BÙ¼h!Mq @€ @€ @€ �"!€€¡H°sÒâJ@Ù $�)«�2¤‚ù ꋦŒ�€ƒ @€ @€ @€ Pœ0…Dqº[ôµÈ øLÊvà… EÞ):@€ @€ @€ @  C ¸‰\Báð™´lÒ¤‰;q^21(sƒŽS¦„üdqðýñíi™Ÿö �$g‚ @€ @€ @€ MC4¶ �Ÿ‰aþüùyš²AâMõЭ[7'dHè¤1*ù~H‘––æjƒ @€ @€ @€ PÜ `(nwŒþ e:�X@ø ê”ÊÍ~ zÈócþüjO‚ˆü¶—Ÿ¾p, �Zü{F½JôÝ”ZW@o @€ @He»ví1eË–1eʤr/ëÛúõÛ̸qóÌ‚kÝõvXÓµkóÄÎG­Ï?ÿŬZµÉœtRKS§N•|´”ý¡»ví6åÊÌŒâS§.3Ó¦-7mÚÔ7­[×ËþÄ´÷‹/昕+7šOlaêÖ­Z@­&¯™Ÿ~Zf~þy¹iÛ¶¾9âˆÂa”¼«¡e@…OCá3çŒÅ�€„ éééF‚e:�X@¦òŒŒ 3yòdÅð¾Òe”dUùw•Ö1@€ @Hÿ5Ï>;8ªCûï_É4jÔÄèN·ÿêiƒ�%ÿ_·3fL1ëÖ­1­Zµ3ի׌âÁFj˜>}…yþùïÌĉ‹ÍÂ…k]'7®a:¨ºéÒ¥‰9ùä–FÁÿT´óÏn–-Ûhî¹çdÓ½{ËHgÌXiú÷ÍüöÛæHYçΙ­[wšAƒ¾4 V3#F\ÙW�+O?ý�ùñÇ%æÕWû¨€aùò 楗&º ºÚß´i»©U«²9ôÐ:æ´Ó3§ŸÞÊx©”§K‘èâñÇ¿67Ýt|¡ žyf¼}æ¹û�WÆ Û,�æ€*$]TðÙg³Í“OŽ3ž�ôsåé&Æ8hذGÌgŸ½oÎ9g€õKbÔ0櫯F›§Ÿþ›¯t2wß=$f�D G�i?[·ÚÏÖÁöž~9„ï„ V Pê ”üß‚Ký-@Að™Ô–ŸúAë“&Mrâ…àþ jTµÎ§Ì Œ°ÖÁ O ˜�Á—±„ @€ �Ô °jÕróí·cbvfĈg\@øð/íÿ{ŒY§¤>ôЇ—_þÔw\÷’rY%ö:žxâkóè£c³\Ÿ„ òo¾™o† ùŸ™:u ©Ti¿,õŠº`îÜÕN¤°q㶨®ÜsÏ(WÞ®]Ó§Ïá6Ð_ÅlÙ²Ã(à­ëÚ±cWTýTÞØ³Ç˜7Þ˜lþú×/œhÁ÷µJ• îu�ä÷Ý7Ú¼õÖŦcdž¾J‰_J|Ó¯ßwͺv,šÀ¯¿ÎrïãcŽé½#°å¿»Ê–Í_6� ÖÙÏÖ\ûÙÚhݾ¢p°�RMC©¾ý\|~ H< Aƒ„ ÁL ùm7Ñãýù»uëæ„ ‰G=@€ @€ �¢'йóqæ‰'Þ0»ví´™?³Á£ óÈ#÷�B½öÚs¢F¦}oéAi&0nÜüˆxá8ÒŽâoåÒã—)cÌ¢EëŒRæ?ñÄ8óË/«RÓsÏ�ëÄÍšíiêe(� ~�©\yŸðBS;¼þú…¦B…r){MáŽ}øáÏvdü(W¬lwÞy¢iÒ¤¦ÍèRÆ,_¾ÑL™²Ô<üðóë¯«ÍæÍÑÁãp[lC YÒÒN³Ÿ­¯ìg«b²NA»€@1'€€¡˜ß@º_´‚#œ5�„ÏÄ ¥<ÙYüù•�!;óõÔ'M{!ÁES+¾Hvÿ²ëû @€ @€@i'P¥JUS¯ÞÞÐJ¥}ÄM󿇙Ë.ëåFÂJÔP£F-³~ýZ;|�›f¡jÕjÛ¦M\Y­ZuÍ~ûUˆ TÝY³¦ÚÿÍvé¹;¬­Q^7²ß¯¬\¹Ìlß¾ÍÎ'ßÀh4íìÙ?›éÓ'›ÚµëÙÀôï²Íþ°lÙ"wµÑ¸qs;e@Û,S@lÛ¶Õh´®¦Æðçß¹s‡�Ç~™«»víj;Ê}“ëΊKÌâÅó}×\ŸV¬Xê¶5­F,ÓÔ7®·éà«›jÕjĪBYøàƒŸ]kÝ»bä'Eµ¬¹\S|òɬ¨€¿ÊdP½zESµjE—Ñ`êÔåF‡6m껩'¢ l¬[·Õ>—«ì³¼Æ>UÜôõ먽ºvíV3gÎ*¨W½–-kÛgc_€´Q£jfÛ¶]ö™Ù[¦þ¤I‹]#5¬Y³Å¹ 48À»¿]V3+Æ0hЉ9s~s}TƉ-tçŒîÕ¾-e~˜6m…Y°`�ýœU1íÛ7Ø·³ÖÄëÏþܵԿg›e¡»ãì›®W¯ªéÑã;EMsó ßÛ{²¿ßå²3ÌŸ¿Æ-·nÝa<°²9øàšöó]=R'Ñe¯�@B÷­fÍJö�v }Ïí»oºOšÒBû‚‚µ/¦šÊ£R¥ò®9�S÷pΜÕö]³É¾'·¹û­{ߪUݨkû+6ºæÔ¿Å‹×Gš®ZµB‹]»ö±˜5k¥ëO‹µÜ´(ñ„,;wî¶¢³fæÌ•.óÈGÔ‹´]ZVôþ.c?ÔúÛºu‹û.™;w†ýÜ6´Ù£�vïé ½³4hl?[ûžÁ%KÄýNP»jƒJ ¥ç^s¥I$ 1@0ƒó¬P 'aA»Õt¸[¨¿©Ò¿¨Î²@€ @€J1�ã�ï¹ú™3§š£�N3C‡vóŽßzë +rè`¾ÓeiPÅ?ýé_Vðp³;æ­·^4wÜqYäx¿rË-5W]u»…½ïßÁW^y†�ý½¹îº{Ìûï�pé¼}}-‡ ûØ:O 9Á€R|¿ýöKQåUª`SÖ?kÓï_)×—^zšÑõÜwßãvÿ@›Áô¿nÿI'õ6_|ña¤î­·ˆ¬kå“O¦™SOmíÊÞ¢iݺSÔ~m\|qw þÁΣþœù¿ÿ»<Ë~ –ÀæÍ;\ƒeËÆ"–+WÖôêÕ*êÄC‡Ž·ÏîxsÖY­­xe“;v^Ôþ›o>Á>ƒ]¢‚Í §§OpÓ DU¶×\sŒùã�·¢�}¢ÕU`øðÃÕÝyÿùÏÞ®üÚkß5'.²™M.°Ÿ«ƒÍ;ïL3÷ß?ÚíSÀ½k×§#Ç�½&\|ñkæÈ#2¯½vadŸV¾úêWsË-º`{p‡² ÔÓ ‚å£FÍ4·ßþqÔ´Áý±þúë“]4]„¸Æ‹÷*/ŽÞ>þx†¹á†÷üfÔR×#~A!HT…ÀÆîÝ{Ü=xà�O¥{WÅû_ÿêm$.øÇ?ÆXžšæ¢§9ÿüöQu32æÚì3#�„2Ï>{vÔ¾ðÆòåL—.O…‹Ý¶Ä+�<ÒÛ¾/÷Š ^yåG{nߌ+£îµ2ŠxQŽD7ßü�ËTlX—GíãD7Ár‰®»î]'Ø–—¦u‰éºvmê.yÈ�WìûþZûœoˆ �€Mß'mÚtŽ”M˜0Ö½Ã�<òû,üÏìÞ½ÛœpÂ>±Zø;aâÄUNÌi€@ ÄØ÷k‰¿T.¹'à3HŒ €2ÄÊZà3è $Û‚ç‹ÕŸðù}}]OzzºÛÝ·oßp5¶!@€ @€Š˜€F¯z gxúé¿E†|=-_{m¨3\åŠÎ;ï.X¤, Æ=b† ù“Ü~û߃‡¸õÿû/nyòÉ}ì(éF60;Ú‰”"#ãW;B¾©Û¯i.úõ;щZµjg.¼ðtz÷ÝWl þñ榛úÙÛ-ì¨ò£\}ÿcìØOÍ)§î7ÝR#iûõ»Ú¼÷Þpw=]»žjGîî ^5jÔÔœqF?'¬1âY'Ž60yòw®Nôés~pëI"pÈ!µ]Ë£GÏ2ï¾;Íôî}¸)_¾lÂg9rš«+1Àá‡×uSNhê†GùÊfo¨aïã‘¶cžþ;£@üu×kGqW5£G϶>ˉ!jÖ¬lt–íÚµÛ\pÁû<,wõÿŸ½3�·j\ÿøÛœDsJ()"ô7S™¢kHn(!CºÜkJî5DæyÅ5eˆË5dÝPÆL©\R$”4Q’’¦ÿú½ç>»uÖÙã9{ŸaŸïóùì½Özç÷»Þ½V�çyŸ§OŸ]¼ñÀŒ‹œóê× büï¤mÛF^Q>aÂW>¥oß�^n£žÂu_ýk7hÐ3>éÔSwóJí)Sæù¾”wñůãï«2aÂ×^É­ÍÏ=[ºµk׹ɓ¿�…¯ˆ.Á‰”é’~ý:¥ep`]‰¡DÆ ;ìÐ$øû÷&�‡‚_Ü¿ÿý™Ó|.¹äÕ ”Éé§?ã&L8ý^šzÏ2�к ¯·N� ¼àh|xŸo³G�íƒçV[EÆ2p9õÔ§ëAÞ“ˆ É€âOzЗßzëú�ÑÕöA^M'#¶¦|f%ú2äÄ€ïfî°ÃŽõ^^|ñÉÀ¨fQ` 2(xn|ä½ýÄÑê�P«Ö&ñª‘ä1 òøæ2µ’�á‚þRüwëÖÍ{,�!C"Qž<´lÙ2f(�¨lIÒ­µ‘l<%郺€ @€ @¥O@F & 'íj•áÀ€ç¸m·ÝÞmذ!P„®ñ¡$®½v¨/zë­�¹^½6îïÙ³�;æ˜}‚ÝÌ7»�O÷Fá6�:ê„@¹tK,̃úèׯ»7=úNïáAåŸ~ú!ŸÖ¦ÍN�áÁÇ�òº†oæ„þê=B¨ý#†ŠÛ�ž¬Ÿ=öèƇ¦P¸‹U«ä"¾NàúýK*càÀ¡nŸ}²âþ¨yÊ3„ 3dxQ¯^ƒXþã�ì”—D�:ucéœäŽÀqÇu <�|à=ÈóÀµ×¾áöÚ«eàc o�СCóBnø£#Q¹o<,píßÄgK7Ø©=>ð†ð©»ë®÷c e¹í—ñ‚ä•WNs û éÝ{g÷曳ÝÀ�ÿö}ŸtÒ®Þ Ã˜1S½ñB£Fu‚u9À‡|ð‚¯‹.êîî¾û=»,r”W…“�²Y;쯹æ�"e¢ ? qKî¼óÈ@Q[`œÓ«×NÞëA—.wúqNŸþ£“ի׺«¯.ëð׿îåÎ?¿k!Ï}úÈh~´›b]+Œ�DsÉDºwß.0(9¿H8‡cŽéª<ä Aä}@6É_,Œ/<úhßÀ3ÂFƒ$…y¸÷ÞbŠÿDmdš®�~xvðìªS¨ê A{¸ý÷¿×LȨC ›¡02`Ø~ûÆqïµ¼xHú÷ïì†ïáÏõuÖYû¸£�~Ä{eø×¿¦ÇŒgnºi’/³ï¾­Ú£ ñ»õÖ·“®½Xãyvræ™ùäsÝ¡‡îìß?þ87ø=o\á©Ë€áª«F&}'„Ësä?�ÄoœüŸ;3„@J2\°p2PÈ…dÌÓAªr);NQ ´úI1 ²!@€ @€J@`Ñ¢½Çƒ ƺÇ»'0LèáCE¨Ék®¹¯P|p¥I94|ø=n»íÚù�¬ÕªUóeäŽ[†2j‡qP�]wÝ;ØU|„NåÝ«þþ’€\|›h÷ì AøË>(PÐéâÙgGû4�ÁŒ|BðuÈ!®Þ’"*�;ïÌíu?/Hd¼�Jþïÿöu2–�ÈSƒÉÏ?/Ž…°è×o�%sÌ1ínüNwuõÓO+ÝK/Íð¡N>ù©àþÞá]ï/\¸"îHzöl3^P�@_(: Â|ýõ÷Ë/¿ûzãÆÍôÇc�í3^ð Á×>û´ò»çu=þrŸüì³ÿõÇ¡C»2^PâV[Õs×]W8 Š/\‚¯)S~ðŠqí¸?ôÐÂFò\°ÿþÛùÖ¿új‰?þ÷¿ �&˼’=*£È[U¡$[n¹YÜüD‰2â0� ó1uêüÀÓÀì LM�A„ê-Xÿ¾Z›òv!9ê¨ö…Œ”V§NAH‹6mé2k"ƒ 3^øõ×ÕNFo½õM`�òµ÷Æ Ž¾ûnYZýÉ0å…¾ðe,ìEFkõ°Ã B£˜—‹µk×{�ªð÷¿ãg�©Ne”óÏ¿:f¼ ù·mÛÞm½uk�B  �t à�!]R”ƒ @€ @€ �E_~9Ý�|rá]ß2 ¸ä’[�Â@DEyñdîÜ9>¹sç½âºèîÐa·À�û‹�ôYñªI“ÒI¢&«Dñͯ½vˆ%:ÊUøêÕ¿2¼Ð˜«V-Þ>ºÓN;?Pôa0äéAí<óL�!…Œ2Z¶lS¨.rK`»í¹§žêïò|0×I™;mÚ�î“OæùŽ¥~÷Ýoò ´B4o¾¹7Høí·?¼;þzõj;°òm=õÔtz :#••È€a›mø]ñºÞu×:ä\A"£„½öº»H2ì�üðC��Åœ9ååí¡víܪcdT¡qÉ!SQ˜y¾P¨„x²~}A˜‰xyJ›=» Þn»m�¨HNÒ?úh^"g’Ó1ž¬_¸úHC¾ÿ~£¡ƒ¼bDÅî«Ýÿyó~ñEŽÂ¼ŠDëp]@ iÓæÁºüÆ¿`@ ]¹}c¦; ÊA œ0Ï òtЪU+ïu!™ç…èðÍC‚Ò3©m'×ך§ÂdèSœyæz|´@€ @€ò™€<}ô¯˜oÖl«@!¿�³Ð°a“Œ¦½hQ� ú âïpÞ|óú¾=¤#µjÕöÅäÕAa*V­úÍ{xP¢Œ!j×N�\®À³%‡~\à~°W~Mžü¦Ûc�nîá‡ïðÍ+ŒR6¤(×ÇDF�?þ©÷Æ EïØ±Ÿ»OÜÕ²“¥ÔWýÕµÐâ‚@IDAT«×ùr¦nÓ¦qÐG½„ueì°bÅêX~Ɖ×d¬PN,øÕ·¢�ÿ ‘HŒÏ?(º7Þ4QѬ¥ï¸cSoÀðÍ7ñ�utÙe¡<”/C‹.]ZÏ¢®AƒM¼W 3IT_é6Oóˆ�¬l¶òÆŽý"Éñ¢oNa3äý¢U«N¬z裄F ñú_´h£‡‰d÷UF<óÒ´iþ„°©S§`�®\™Øæ÷ß tÓÅcõد i€¢0`ˆá)ôG�íCFtëÖÍ¥àOWTvÀ€¾x&õÒm?[ålž2d(Î<³5Ú� @€ @•‘@ûö�ÝÅßXâ©7o^°ëyñâqÛúùçwöÍš¥·K]a$ I!ƒ„:uê;å7óF ÆÝéÝ‚Çí¨˜‰‰vw«ß¾}OwñÝw'¸5k \ì‡K½÷Þëþ²U«¶áä„ç 7!Ùi§� d;ã�—ÖË4£V­Z¾ÊêÕ‰•»}ûòe^}õwÍ5çûóSN9¯Øa)2#å ¼øânٲߓâØ|óϦ NZ8È|ç�o})�ÍCAÛ¶�}Úøñ³ü1ÕW»vM}‘·Þ*£’ª|Ió[·n蛘8ñ÷Ë/Éy¨ <|øá\·n]zá Š;Æ?ý©�¯ª0�=6%i3|ð½û±ºQã…¤ D2Í3Áo̎佬S§¦O´° EK¤NY¹ò�ØØ�=¶C!ã…DµÍ ã×_‹>#·Ù¦À£ˆŒa¦Lù!Q±t[ã*/Žù [n¹�ŸÆøñÏ' ÷ ç°d«­Zùc¶¿Òy'd»OÚƒÊ' Êç}aTeLÀ<(È‹Byö PƘè€ @€ @ Ø}÷®N!("bÔ¨ë �èùçsŸ|ò®O;øà£ åé"Vâí·ÇÇÚ‡ièßÿL_÷Æ/vo¾ùr¡vfbüøç‚]ßý ¥§ºØrË–¾È¤I¯&,Úºõ®k×C|þœ9Jí^½2ë'aãd¤MàÁ?îÃÈÀ5ÿÇN»öÃ"Eôý÷èÞÿ;Ÿ¼ï¾­ÂÙþüçŸWáH6&Ké{ÕU†5gž¹W,ãÈ#wòç2H¸ë®÷ÜÚµëcy:ùâ‹…îÔSŸvË—Œáè£wöùwÞù®ûì³Â;ÇgÌXäN8áÉBõKzѹs §ðR\_xá¸"FÚ‘ùåãÝ»ï~ë»ú¿ÿÛÊzbôè�Jøã�uî¾û>pŸ~ZþÅ*á—BHȆDlï¸ãßO¸Ù… WøqüNá:ÌèDó/“•+׸[ny+æ!ÃÒ=tŸõ曳ÝÓOO/TLÞ1.¾øï”aÆ/½4£ÐZzûí9îºëÞ,T7ÑE­Z5bYÆZ ë×opÏ=÷_÷ê«3cùvbF_½$ÂòjÕªîŽ?¾³¿<ÿü—Ü×_ÿdYþøûïký5j²¿®_¿vj£àÞÞ|ó[�áØºXyß<ñÄÔØuE9Ù{ï�Â)tÐ¥—žQȈAn»ír÷å—÷¶gÏcr2­tÞ 9é˜F!�rG€åî–0 ²$`ž4†îÝ»ûÐe9ú† @€ @€@*µjÕvW\1Â�qFowûíÜŒvÞ¹KàÊvÌØàÒKo v¹oQ¤©3Ï<:PÈîlâi(4çÄTÇsj  Û'Vþˆ#ú¹qãžö† îÚ·ßÕ{hX´èG÷ñÇïx¥W»vbåÓ9‘a“OÞ¸°å¾úês¯<›:õƒ Ÿé®^½±&N8áoî­·^ó×§ž:ØÕ­[àÆ?V€“R! %÷ÕW¿î?[o]ßí°C7{öON;þM.»ì@Ÿn×v|ðÁ�ÜØ±Ÿ»š»+VÇÜûo»mCwÊ)ÿgÅ\Ë– ܰa¹+¯œ(LßöŠàÝwßÚ2hg¼ $æbþ˜c:¸gŸýo`¤3ÏuÔèÀÈb[ïõà‹/ÅvèÇÏÂIÍšÕÜõ×÷t}ú<ê&LøÊuìµWËÀ VÐß‚@ñ]®¥k×Ö¾·zõj»³ÏÞÇ�ñnàAä�`­OuM›Öuò€� 9û콃ßÒ’àw?;qñn~å£àYÐ,SÃóˆz=Ð=Ô=Ð=<üð‡\çÎ[úÐ}4/£á©�¿ýmow÷Ýïycͳ]»&N“&}ãÛêÛ·£?|pÛàyõßç�Þ_åÏ9gX°Ë}p‘òwÝõ´{晇ÝÍ7ÿ#P8Nñ+¤vÌKƒÒlnÉÆÜ£GïÀèâbïñá£�Þ¶¦ŠÕ¶I¿~±SŽ¥Hà†zŠÚ™îùç?÷ ^)yõ1‘2XJà=öØÚ’ ¥$—w)ÖMäúÿÒKtµkVSœtR—À¢i ðÝ+¶_x¡`mªž 'z÷n(ä ÂH‘ýè£Çyo·ßþN`è2Çš¼’læNÁ²e¿»Òë^N6-¢|·öÅí«¯~ ”ì5¼×ƒtæou3½GVOÜ*béÒU®AƒMr×<æÌYêË5l¸‰_IŒ*ÄCÞ26Û¬Vð›®÷^¯ZµÆ¬[·!ðŒÐ(x†l aãOç8þòàY´ÜsmݺQƒ˜hëdE¾â÷`=mâ×J¼2‹¯ðshРNð\ÜÌ{¦ˆ–Óµ+ä„¶nݰØóˆ×v¶Òг~–-ûÙ{ñ‘·=ã›4i–Ö»!cNõNÈF´Q:lí•Noô’O ›6æÓ̘  P„@«V­Ü€œ &Mšä�ß~û-¡2Š�"€ @€ T\[lÑ"P¦¶H{2hÙ²MÚåUP!Âa2ª),ã‡Ö­wˆ¤\®YóG°»þF1`ÀÙqË�Xº´Ë¿U+}6†ùHgRØk÷}&"ï mÛ6N«Š6»+L€>¥%š“¼BlßñD¡aˆ[ÇŽÍ ¥åú¢zõªþ>¥ºWš‡Œ²%õë×6Í%66Q?2XØi§¢am2ƒ [ôIW ÖI]op’¨ŽÊ(Ô‡>©DŒ.#ߤ~ý†Á=lX&ÓJöN(“Ñ) Pê0`(uät˜ ò( E¼>­%½< èSÞDcêÔ©“VYŒÏú/y^�!@€ @€ �òJàµ×ž ܳ/ Ä­ƒ˜ô=Êë0 @€@–`À�%�4S¶d¸� #2”7јäARÇWÞx1@€ @€ �܈³<·=fÖúÜê+œzê`b"³Ú”.k¶¾ª;Ú@€ � P²ýÊ–¢¹¸»å­%j§$íùFø*B@|Í›€ ÌËA‘‚eœ`Êxt@€ @€ PÉ üûßïyÕª•ï?Û8«V­VÉïXÅœþàÁû¹óÎÛ×™!CÅœ£† @ 4 ”ï�–&‰H_¶£_É%Qˆ[;¦\—b½$íE†É% @€ @€ �Œ ”wÛPE§�—caU«Êõî Sá € �d0`ˆÐ1� 280¯ f|�‰ç„xí¨«°§€LÚ‹ “K@€ @€ @€ @€@^À€!r;Íc‚ ºuëæs'Mšä¦M›–‘ç„h;òº QzqÚó•ù‚ @€ @€ @€ ä) "76ì!ÁŒF�íKõêÕ+R:õeýúõ�ÂFè#™8q¢KÖžynÐ11Oê� d›€½Çìý¤÷„²M™ö @€ @€ @ r´¤Ü1�§+æ¹ÁÂV¤ªg %3�HUž|@€@&ì}¦÷„2!GY@€ @€ @€2%€C¦ÄÒ,o;V­¸È@AÊ åã5Áèp„ �òJÀÞgz�%ó T^Çϸ @€ @€ @¨80`(¥{ež¤êÖ­›)Ï3ƒítM7\…vÄšB©”¦B7€ @€ @€@ ­[§(@6ÊÖl9»!q†Ã=Š…¤´ °~ÒFEA@ Œ `ÀPÌ`t”h‡ªyV7iådh sÛÉš(äƒå‡ÛHu>vìØTEȇ@!¶Îl}Êä€ @€ @€ @€@À€¡˜ÐÍ£‚ $2H0`€?†›´rR'ó¼®Ã9rMÀ<}´lÙ¹†Mû€ @€ @€ @€@Z0`ˆ`Š·3Ý<+(ÏD 2^˜8q¢%¹pØÛÙ®|+Ó±cGï…AõÔ–µk€”�ð:ǃG)A§@€ @€ @€ @ ) "xlgºŒ &Mšäs‹ã9Áí\ýúµâ–#™ÀŠ+\ݺuKm «W¯v5jÔ~—É÷î®\¹ÒÕªUËU«V­ÔÆ–­Ž~ÿýwW»víl5·�U«V¹1cƸ 6¸ÝvÛÍuìØ1n¹ò’øÒK/¹ ¸£Ž:Ê5nܸ¼ Ëg�ÍŸ?ß�7Îm³Í6®G�%žK6ØüòË/îé§ŸöcÙgŸ}ÜŽ;îXâqÑRÀ€!!ò!@€ @€ d‘ÀÙgŸíþûßÿ¦Õâ¨Q£Ü;ì�VÙ²,týõ×»×^{-6)7ÝtS×®];wÜqǹ.]ºÄò2=™;w®ëÞ½»¯ööÛo»-·Ü2Ó&bå§OŸî–.]ê:tèà4hKÏädñâ•îÐCŸr¿þú‡1âàXÕ¹s—»k¯�ìÞzk®7nPÆf›Õ æÞÌ]zéÞîÀ[ÆÊ6o¾©9òS7eÊB7mÚ¢BíÄ q� Œ1Â=ûì³)kôë×Ï 4(e¹h�W^y%XÇ—ºóÏ?ßõïß?ší¯?ýôS÷è£�º×_Ýé·f²çž{º‹/¾Øyä‘®J•*–ì&Mšä®¸âŠØu¢=GFŽY$û·ß~s÷Þ{¯ûè£�܇~è¾ùæ_æ�7Þpû↓ü�?þè|ðA§9h\¿þú«ÏÛ~ûíÝgœá?›l²I¬|i�ˆÇâÅ‹Ýû￟´K�yøðá�ÑÓÛnÑ¢ENã>à€‚ç͵Å~Ž%ëð¦›nrÆ óý¼óÎ;ÉŠ–yÞ²eËÜG:0ú"–fýɰ!,Ú….ã +'f2È�aƒ>¥å‘á�?þðÏC=S‰Œ;ì°˜ÑEëÖ­�Æ­Ï[o½å�Eš5k–ª™´óÅUÆ b4~üxפI“´ë–EÁÿûß¾[½cêÔ©SCˆõYÒu¶víZo$  Å:Kã$ý®®ºêªXK�5Šû^”Ñ‘ ¤~øá§5«sýnä’@r?:¹ì™¶!@€ @€ TBÿú׿܌3â~¤Œ“ËnÉV[må¶Ûn» E袋.òJhWñàÁƒýø~øawÍ5×k.â %^I½/«óH¥I“溇þ̵n]ß]yå¾…re”pÆ�ÝÔ©§¸5k.pË—îñÀÀ{Ä6¾Ü_þòZà’}c•¦Më¸þ³§O4èU·víú�™œA CÚImŠíxGíØ—dâi@ÊÍ­·Þ:Xï­o!SÒQï޽ݻï¾ëê@ ÒÏ>ûÌõíÛ×ו�<ª˜ôìÙ3é˜Íè :f=_ä•AÏËýöÛÏ�mÍš5¾?¹àß{ï½­‹Øq×]wuRèʾÆ%e¬=“dÐdÊÞX…œhlíÛ·÷á+þú׿¦ÕÃYg�å�ä]@†³gÏöc×=Ñüo¿ýö´ÚI§�BFظÔnË–½Æ¤S¿,ÊÜwß}¾Û”E÷Eú,É:›0a‚÷°!�%ñ4dƒJÅæ…^ðEe¬"yæ™gÜO?ýäÏ£_Õ«Ww÷Üs�O2dˆûî»ï¢E¸†@V à�!«8i € @€ @€@rŠm�Hn»í6ï]ùÚÍ/ÌÁ¼yó| Åü–k—]v)RN®£¥¨S}¹–h'´Òš6mêjÖ¬éÓô%Ež”ŒjOJAµ§ðÅõgŠ—m·ÝÖÉu¼bÍ+Ä„„—]vY¬Ùõë×»¯¾úÊÏEÊG)ö[[Š’°(Þ»”¨Úª¶L¢s”BEJV)NwÞyg?+«ã÷ßï€:—"1¬€Ñ= »¶W™¨¬^½.p½ÿªO¾ë®ƒEpáqî¹ç–Á| {Qh×®Q0罃]æßüÿúýÕµhQ ,RCGÙ&Ø]½�{ùåÙÞÃyçý_´Û¤×º§?ÿü³/“Î’6Ff…& �ò‰vË+d�Â*HN9å”´ç©ßžÂè£6¾ ™üóŸÿ,² ^¿Ån¸Á=ù䓾êÔ©SýïYzδmÛ6n“«V­ Œ…öyç�w^¡2zžH¤è}î¹ç yNhÞ¼y¡²º8á„ÜÀ� ýÆõœRX y†‘A„ÂP(ÜMTræóÏ?÷Ï*µ­ùȨª8¢gŒ¼%è£ß®úL&rÛ¯ðR0‡ÙjìbÓµkW¯T–¡I�5’5•VÞã�?î׉ŒèäÑ ‘¬[·Î}ýõ×~Mè>Ù{#ü|VÝè3Zi‰ÞCz&k¾zÉpBs³õ–è�©5)† k/L‘ 2ô¾”ÁàŠ+œÞI;í´S¡÷ˆÞº/êC" ƒ¢¹ÉAï$óÊ¡úZ»zgµjÕ*ð˜³G‘µ^’u&6=ô�~­ú“З¼3È`EkUçz'j.f|*êOS±Q¡GyÄ—•±Ê-·ÜâÛWšÓO?ݧG¿´îUN …eÑr\C +‚0R� ¼ù曂øoþ£óÊ*ùÂ!_æQY×!ó†@>àù”Ïw·ôçÆz*}æô@€ P1»€µ?ßžzê©"ƒŒ6J¥X+(06Œ3¦Pù¿ÿýï¾\#}øqã6 žX½[o½Õ— OÅ`,=Ü^ ˜(Ô^ª‹`÷«o'P,)¸9�õøüÀhbC°#<–n}kœ�’¦P+W®Œ• BHÄòlŽA û ÇsL¬Œµuæ™gnŒ$|ù@áV$ßÊé¸dÉ’X»‰NÆ�›´qý†­¶º;h7Q©¢éÓ¦-òõTwùò�ã·’¯½öM¬]KK÷¸ì�Í+0dH·å*�@Ñï×É\Pì™ë÷¤ßJ À̸�À@iƒžSªïÙ¯A=§T>P$oÐï×$ð@àÓ•xs°äb�¾½Àó@¡6%ñƒú ôì ?‹ ULó"P¬ÇÚLTEÏSõ«û• E¬þ|Í.Öu`¸àÛ|ì±ÇÖ¼{l°ra&�‘ˆ 4ïèÚ ¼mPÖwøx=²& “±QÁÀ /ÖžÞA¨'­9'•µþcŠdEɃ@‰6 V@€ @€ @¥K@nÁÏ]"·é�B¾Ð´ãrÿý÷÷´Û4P&:y0xôÑG}|y¹W¸‰Ýwß½P½ë®»Îïx-”ø¿ íÄÖ®è@aâwS¶hÑÂMš4É ÆÀ3À‘.0|prñ^RÑ]‰ú‘ç‡À Áï^ÕÎXíìÖ8”þôÓOû¹hW©vãÆÛIo,£F�òÉÚ5¬]±Ú¥ªÝæ#GŽôã×.mí° œvkð!‡RÈ=zÔE}¼~^}õŸ|úéƒö╈Ÿv×]ŸøŒÝvk0ØèùÂJp@KŸ>oÞ¯ÁØ—»j[G”˜€~ÓŠ[/¹ð KÜ^qøðÃcÏ¡tÂâÈëÁ°aÃ|WòÞPµêÆh诿þºO?øàƒýîxy`ЮtýÆwØaÿÛŽzqI4fykQ}‰žEaQ8í6×së’K.ñÏ£çŸÞ—×sµqãÆîüóÏWÉúùÂ… }›�:u*Ò¶<.è™'æ© H¡ äùÀèöÙgŸXù~ýúùùIqk 2høòË/ƒpÝСCýÜbÒ8yõÕ9¾ÔᇷI£´ BY¬ 8N ”{Ó|ù‘#{Ä­W½zU׿û@÷i Œš—‘ƒ”I #"1Wçq;!±R�‘“”’’k®¹Æ+ÝË„ÂHôüÒó%•èyf [=ƒÂ"å´DÊS WΗ›û—_~Ù‡§Ç;·g òÂFcr¿/ã‰Âë(¤�䤓Nòm~øáÞ�þYg�UHÙì eñKŠ|‰”çñ¤~ýú>Ù â•I7í½÷ÞóE{õê•°?uHôN¹çž{ü¹¾HÆc2€¸ÿþû‹v$zɰŌô.Ø{ï½cm*,†½b‰¡!¨]ï5jÔ(”ãÜàÁƒýµ ðº¨N�:±|3bˆ%üïDsлÔÊzè¡N†êC†?—_~y,´’Œ7ÄIé0$Zgá1èý$ ¼…“� v4½ç^{íµB!–þ z•’±±r6îþýûû$…м½û÷ãO´‹VJ#y¶È–Ìšõ³oªU«z)›|ã�ï%ßø`—îÏÞ»ÂØ±b´7KXoÛm ÚüñÇß–‰—qê©§:}r-R’MŸ>½H7Z;RæJÒ)3sæLïÙ#ÚP­ZµüÎc¥—fż×Z‹''žxb™)üã�§8iR°ê¹ ¸Œ˜ÊBd¼ ë)iå)!™H)kÏŠ „B‘¢Úño¢]ãÚ•Þ¤Iï à¶ÛnóÆQòÎ0mÚ4׬YâßܧŸ~êwÝ«-w„�!¤œ•èÙlÆ >!ø’A…xJ©¬gœvª§³f­~&Gó¬`Jõh]K_¶lY4+ãk3–H´ó^žs‚PE¾Ý!C†j_÷ô¸ãŽókMQIôzõÕW}Q=ÃÃÆ JLµNd´&‘ç„°è¾hÝK´Œ‘•Ñ»"ú¾PžŒæÂž>´®L®¼òJW»vm»ôkNêKŸD&*“l�)_"£D½kƒð nÇw,Hüß·½ïu�µÂëTk3Þó?kXcR·¼™è™'?ý^õ~NtZµj嫘1‘Õç�lÀ€!›4i € @€ @€@d\ e™ /½ô’«W/¾rÜ”Çò�UYwRnÈUuXÑ’H±"ãI—.]¬zì¨p J—"C™0Hñ¡OXd˜¡]¹»ì²‹“y’�ÄÛ‰-¯ &ÚU¼Å[ØeFGÛ‘+WÚÙ�U«ÖÆšiØp£"+–9¹øâIÞxá˜cÚ¹;î80p?_àe"R,v¹Í6›ûó… 33`ˆ5�ã)m‡p¸+yÌ0†tÊL�:µÈîlkOk[Rše¤LàÀ¬Ð ZûÚQ.‘!@ØXÈ'–—ŒˆÌż<¯tíÚ5e¯:B"!* u 1b„7À çË AÏ.= e¤¥°1ñäóÏ?wݺuóYªcž¬ìŒ3üé< ¿ay:Ji-1†tÖ¬¯�á—½äÉ&žèy/ÙtÓMãeg”¶xñb_Þ”ÓÑÊac°¨±�Êš±ÅW_}­šPÁ/O’xíi$”ðÃ?øû"o ­…?�èݧ�"Å•p †%ü[Òï,Ñ{6Õ:³6Í@ñ/ù‹%ÅŽÆI|Îâ°Ãó¼ÄLk8jd�Œ�5* y_ÿ{Až%d´#£Ã÷ß?á}Ñ8$fôâ/ø‚@– `À�e 4@ÈGrI§x{ú�½,Ýõ3ý‡Æ\Õå㜙 @€ �\�§¹­–ÈÍuÔ‚õ¿bÅŠ˜ÂL =$’¨2#Q9Å2—(A<1ÅÙ’%Kâe'LÓÒýöÛÏ{‰PhÅ»Wš)I4“x}‡cÿôÓOÅ6`°]«ÖWI�fÀдéFWäé´yÍ5]S/¨�Í6«é›[½z]:Í–z…áïüµ´k×ÎN}¨ŽTevÞyg'×ðQ±õ¡ôÒ,£uo<G²ÝûÊ/ï"£!)"¥ä•R²´åñÇw'œp‚ïöÆotûÛßRA;ÃM™«�8ñÄ”§òòÍUF52¶1C©hyfèÑ£‡¦* @<¯7æåA!/¶ÝvÛh±k{†¥³fc•28iÞ¼¹/-O!ñÄ4mÚ4^vFiöl¶g´rXYϰÄʇŸ ––è8þ|Ÿe•‹¦kmIdõXd.[o½u´ZF×Ñv3ªNg�©My¶°5/oJQÑý˜0a‚÷ "¯ �¢�D÷A†A»ï¾{¬Z26*´víÚXØ…ï°ò±þw"#‡D†%fÜak&Z—kdƒ Ù H€ �<' cÅ`“á¤I“ü?Âu-£€ @€2' ¾Gy¤¯xóÍ7{…Z¢V´ÛS;<µë÷Î;ïtíÛ·OT4ítý?O®åm×l´¢.˜-šŸèZ¡¢»™Ãe5›‹ú6O VFÊ“\*�£;j­ÏDÇzõjù¬E‹V  õAòª‰Š+}Á‚eýúý«‘VÒ.`Û œ¨›tÊhí¦Z¿¥YF¿-¹JÏ7ѹí—Èx@!:JSn¿ýv7xð`ßå½÷ÞóÂ�j 6f)¦)ÂÍÐkΜ9q›kܸ±Oƒ¨¼õÖ[Þcˆž¥ [ ðÕ«U“ÉhAÏG…݈·+>Ún:k6Z'�kó@ö~`õäÍF;ü%Ù0`0nÚÁOÌpDÏoy ʆ(»ï¾ëäm']Ѽµ¦$f ®k† eÞ Ýu¦q¿ð þÝ.##3 ÏGçò£{-ï 7¡öe| 5ª0P~ø¡¯’Š� ½ñÆ1ƒHÝËD"£Š›nº)f|.gF"¹|G‡ûã¼rÈ*'Cf @È{æ�Aà2 ñþ#˜÷ ˜  @€ �,XºtiÌí¾bN'raîÊ È³¥82×ÚRfDåçŸöJ%¥Ë‹B¶ÅØo¿ýv‘¦ß{ï=Ÿ&ÅJÆ ‹ä—4Á¹«V­Ê¨©jÕªJÂï é„yøÏŽ ŒCÎ+ˆŸ¬�Ï?_â¦O_ì–.-ˆQŸ¬¬ò¦L)Ø�ܶmfF·Ýv›WÂJËFƒT”+G¾vÐ[XŒk¯½¶ˆ‹ý0)Aµvôyøá‡ÃYŸëÙÖ§O§5)èûï¿ïÃ9¤Ó�ê2Ä•…‚H$‡~¸7¬’uذa.ìMåÍ7ßtÏ<óŒ¯örË-·xů2´sý†npU«&V�üñ¾ )pÅrÍš5þÚ¾êâOúSÎsRÒ˰@Þjî¸ãëÞ‡:t¨¿–\¦!b …NÚ´i㯴Ã?ž(ÌËgœá³Ô§ (Â"£0q¾þúëÃÉIÏO:é$Ÿ?qâDïíBaúãî»ïv»ì²Kܺ=ô�OO¥N�:ÎîŸÞ#æ-@•ô®;v¬³÷iÜJ�˜é:Ó¿dD(C޽öÚ+nÏò‚ Ï$z?†%ÒÃB&¥b#ƒ…L‘$2lRˆª¾}ûú2ÚÂ_„¾¦OŸî¯Ì2”Å)²F ¨oœ¬5MCÈ=ý£\ÿÈÒG»‚µC˜xì¹çN€*;{ÿˆƒ½*;æ@€ ¤G@ÊÅW^yÅ–¢&• f)­N9å¯|{úé§½¡‚x2~�W)1Þyç�ØnëôFá¼a‚vIKÙxÐAyEã–[né=/Xìxå¥c\‘nŸVN! ï¹ç¯¨’’ê˜cŽñ ÔçŸÞ+ꤰK†ÂÚ)Îñ�Cq÷ÝwŸWbÊ%·úúàƒcƒé)•€‡¾�›8ñ{7fÌîÐC['í¾wïgƒ¹¬ \­÷q‡V°s9Q•{ñů}öþûo“¨XÜôð®ùðyÜÂ$V RêKöÛo¿`í–tÎá5>·JR$ÿç?ÿñ—2H�È}¿\ØK^Á V¯^í•ÃJ×î÷^½zé´ˆÔ¬YÓp™ÒUžxâ ÿ”áÃ\P¤N8A V…ÒÑsPá1d´ ¹*¤„yL�Â×¼¨®¥ëüòË/÷�GEÊmnI™¯>BBåõÌèÚµ«7dÛ�.ËLD¡,$E8\ŽBïH4S0ëZ†%Ç÷†z^ËS�váˬY³T$æíÂ_”àKó–hGÿÌ™3]<å´ bäHŠw·ÉÀb›m¶q_~ùeÌkO:…l˜ Õ!c=ïGŒá?–g!ìZG)à|ðAÏÉB0…óí\a™^|ñE?ôèÑÃ×ÑºÕØmÍZùl3]gæ A^J½kûí7o"Ãñ–· ­uóžtÝu×ùG¤ÃFë["&�;wN8m0È3„æóÓO? õdÆN‡zhÂ6È€@I `ÀPR‚Ô/S2\�˜Irÿ¤ÿ´I‘„@€rIÀÞ?êCx3W®¹ì“¶!@€ �ü UR˜ ðD³ûã�?bY2`�â@^ dd`†* åSxWiµjÕ|½d»Œµ[TnÁµKÕv-«’SR¬$SpøÆC_6/;†²ŠœJ)'E’rR’H!e"¥§”…õêÕ³¤BŠ�pûÉæ˜hÞ½{÷vòb!eP¼±NãœôìÙÚ úf `üÜÝu×ÁA¼òZqJ$Õ¬iü«$,cO?ý¥?=à€–�EmKNëæ>O«2…òŽÀW_}åC#hbéì„ÿNâ­y0¥§Á’âÜ”ç22‰Ö—×€D6–�€ $z¶5jÔ(QµXº 3¤H—G)Üõ‘È@†ú[M"I6.a˜œ}öÙN!8¤�׳v̘1–å=@È AݺuciéœÈh!ÊSõ,Mã�Š d´¡ç´Bè#‘Zï�1"Ãy.Ð<å™Ç aÂmËÓƒBt\}õÕÞxÄŒ[¬Œž¯G}´]Ƽ„×Y,ó' ç¡9È8C†d2jØ}÷ݽ‡Gˆ‰Þ{OÉû‚˜$…6�†¼Th>VOåõ®4#’ð¸¢ë7QÛÑôpá¼TëLÞŽd $1�áúv.#yÅ�ç%ñ3×=2Ï%6Çdld($9ùä“ý1Ñ—ŒuÌó‡ AÂåu�̃Ê!È�*Á‹bC®§ÝÜ�k�+¯¼Òw¤‡U÷îÝsßi9ê!ßæŸoó)GK…¡@Y"Àsª$J¶ àW2~Ô† @€€È�´Œ«¥Ä‘’Gn³‹+R¤Ìž=Ûï´”AÃ[lQܦ2®'·ãÚ½+%¦vüÆSàeÜh¤HTÜpAÈ]½Ü£§#¾(ˆ§ŠÖ½Ü5×”\y³|ùê`Gõ}Þ[ÇžìožÎ0(>B¿c}äÍFÊo3lÊ& =§´s_ÏJ=o³²!ÓñI•§�÷ ‰ / Mš4É´‰”åe#Ã=‡e¤’ÌC�Æ£±ÈEãÆ�ýs4ìU#eg) ÈËÄ>ûìã?ò2$Q˜…É“'{ƒ’t ìtÏô®”qŠžõaã¸CÈiö„ ¼GíÉûP*‘1£XË0BÆš‹ŒNLŠÃÆêfr”·ÜÈCÓyç�—IUÊB #x`È…!@€ @€ ”=)в¥DÓîÖxîÂKc–2ÀHW•ÍñÈà£8s¾á†îî©§¾t×^û¾ëß§À[Eã køð÷¼ñÂ9çtÁx¡D$©\ h÷{Ë–-ý'—ó×sJ®ûËRä! uëÖþ“«qÈ0⪫®r—]v™“g„Gy$aW�<èS™4i’7€ó�?~̳€…A‘ç/(|R&ï ½ß¤¼É<à‡4pàÀ´†&c…D÷¿¸lÒê8THÞd¼ �ò‚@ —ªæ²qÚ†2#P¿~}ï†\®ÈuŽ@€ @€ @å‡@£F›n¿{øsÌØÀÆïÅÜóÏån¹åÃ`7m� Îý~Ån‡Š€²E@aä…áÑG�…#ÉVÛñÚ‘"ç�wö¡‚ºtéâ ËZ´há�äeàÜsÏõÕž}öY´ðñÚª(i+V¬ð!!4¿p–⎿4Ø|ýõ×�Ñ^?D…~²°Å3õ �Š ©‘�R$ЪU+ŸK1ºtŽ@€ @€ @å‹À '´BùnÄ‚_âŽ8â™b îã�¸Þ½ r2ˆ¨W¯V±Ú¡ �lP8�Q£Fù&å@¡r)Úͯ�’)S¦øÐºÃbƒ¤" �uRV¯Y³Æ·«0¹y|ÐgåÊ•nÙ²eÞ3µBü å‡@½zõÜœ9sü€ªU«V~ÆHòš y}{™ @€ @€ d›@ÕªUœ>ÅA`¸P\zÔƒrM ´CÈhÃ…\ßÕâ·_Úë¡ø#¥f¾È­éT¾Pb€ @€ @€ @€ ä” 9ÅK〠@€ @€ @€ ¤C†t(Q€ @€ @€ @€ �œÀ€!§xi€ @€ @€ @€ �t`À�%Ê@€ @€ @€ @€ �S0ä/�C€ @€ @€ @€ � Ò¡D@€ @€ @€ @€rJ†œâ¥q@€ @€ @€ @€Ò!€C:”(Sî,[¶ÌM�:ÕtŽ@€JƒïŸÒ L€ @€ @€ PY `ÀPYï|Ÿ÷·ß~ëF�í?:G @¥A€÷OiP¦@€ @€ @¨¬ªWÖ‰3ïŠE@;^¥42o v^¿~}שS'ÿÑ9@È%�°†\öCÛ€ @€ @€ �ÊH†Êx×+àœmÇ«ÂFHZµjåºuëæ à¯e¼ 4€ @€ @€ @€*& *æ}ËÛQG=-ØDÍã‚]‡=/XG@€@i0Ã9Ïé%;�ã ¨´îý@€ @€ @€@>À€!ïjžSÔÓ‚MEJ!<. Ž€ PÖô^’ ,Lš4ÉM›6Í_+¬@€ @€ @€@ñ`ÀPq‘7! 6rá € @€ @€ � Ò¡D™œ°�ªæyA† xZÈn† PbzF˳€”ô“&MrÓ¦MÃÓ@ªöžS<2$E @€ @€ @ €Ë L„wîêÜvôây¡Ln�BH›€=¯õì=z´¯'O‰Äž÷Ê—ñƒêW&ÑüÃ*ÓÜ™+ @€ @eG`íÚµnåÊ•nóÍ7ÏxëÖ­súÔ¬Y3iÝ 6¸ß~ûÍÕ­[7i¹\gþþûï®víÚiw³~ýz?¿5j¤]§2\µj•3fŒÓýÝm·Ý\ÇŽs6ýÇÜ©¿Ö­[»8 gýÐ0 P±T­XÃe´ùBÀv¤j÷n·nÝü®TÝõéÓÇm±Ån“M6q;ì°ƒ×Ò¥K6öÌ3Ïø9iƒ�Œ3öÚk/wýõ×;±C6¸é¦›ÜÀ��Ž[n¹e,cùòånÿý÷/òÑ=-®h �~úéîÀtsæÌ)n3ÔƒòŒò솖÷éØN\íFÕ¹íäÅóBy¿sŒ€@ñdË�½?4ŠÊèÉ¡xô©@€ @€@e!°bÅ wüñÇšîV[måæÍ›çÆŽë?ãÆ�s={ö,TFÊûn¸Áýãÿˆ¥Ë(á×_u .Œ¥Ù‰Œ>úè#»tÖ‡ÒN<ñD7sæLwÕUWÅòÃ'¿üò‹ïgÊ”)®yóæá¬ŒÎeDqØa‡ù1ª¢vïÏš5ËÞzë-÷ú믻fÍšjóöÛowƒöiš_Ó¦MÝäÉ“ýç³Ï>óžFe¸QÙE÷oذaÞ0eüøñ®I“&1$òê1qâÄØµ�ȃBq¥_¿~nîܹ.rgŸ}¶{饗ŠÛõ �<"€†<º™a*¶Ï án1F@净½?ðäP~î #� @€ @ |�bþÊ+¯ô;Ùe˜ Ű öÙg?P)¦£rÞyçÅŒFŒá–,Yâ´Ó~Íš5îÉ'ŸŒwÕªUs§�vš“Âüáû�±Ã9çœãË^}õÕ¾~¸â+¯¼â=$hCãÃ?Î*ÖùYg�å�d°¡³gÏv?üðƒ7døâ‹/œŒ²hÑ¢˜ñÂ]wÝåä¥AÆ2„�(\ÂþóŸp•Jy®�ýë_ýÜŰeË–…84lØÐ{ØP9­�l‰¼qìºë®îå—_vÏ>ûl¶š¥@ À€¡ß¼Š0tÛy+«<}ây^¨lñÐ+Â}cŒ€JJÀžÿ2<�Ç}tnï�LÛ·ö¢ï“LÛ)­ò6Þâη´ÆI?€ @€ ä�Í7ßÜ-X°À]~ùåþï0 !iÑ¢…»âŠ+ü¹¼$„Ã%|óÍ7NF ’÷ßßÉ0 Q£FþZÞvÜqGþ’wƒûï¿ßuîÜÙ‡©P^ݺuÝu×]+&#‚°ÈèAž8à·ýöÛ‡³2>ÿä“OœÂGÈXãŸÿü§«S§ŽoC¡Ì8âž{î)¤`—�‚DÞ'þö·¿y# ]ï»ï¾N’‡zÈ+ó×ã�?îÞxã ·Ûn»¹“O>9) [_áB2dùî»ïâzî°róçÏ÷e~ÿýwKò!KFŽé¯žD4 P¹ `ÀP¹ïÎgo;feõ©žrŽœ ” öü·ç~·nÝü; ¤¬Ý’¶“kHeœ¹æ@û€ @€ ”SæG{”ÒX"ã�ªU7ª…®¿þzŸ./ {î¹§?Oõ•¨�ü1V5ºs¿G�>¬ƒŒ†+Wœ“ &øjÝ»w�/X;6)Ò?ýôSKv¯¾úª?×8¢rÐAù¤§Ÿ~Ú{ˆæW¦ë;ï¼ÓO÷ÜsÏ-´NÒe û«MLmÛ¶ua«/ï2¨Qýí,,»ï¾»7œ�·Œ^x!œÅ9 P l|SUÂÉ3åÜH´óTÞ:uêä?x^ÈZ† PÖì= ÿŒè?%ö“L=d«�\óH4Î’Î?×ã¦}@€ @€ò“€ÜüϘ1Ã�5Ê{VÐ,o¼ñÆB“µ½{÷vï¾û®{ðÁ½'…xÀÉ;C:"ãµsôÑGûâƒvÍ›7O§j±Ê(ôƒDz†¨Ô¨QÃ+Á•.E¸‰BiHvÞygKŠwÚi§Ø¹þ¾SYEÞ;ä¡Crä‘G Ãa‡æš6mêÃ{<÷ÜsEÚІ$ÉÁìÚµkW$ÿ”SNñi %�@•›@õÊ=}fŸ+RØèe¤¾vÝ0Àw%£)±@€@:¢ï“Ž;ú÷K:uK³Œ�SÿyÖ{/ŵ`W=½S$f XzÖ�ò¬Ÿ²„`ãÔ\ÍhoìØ±~Hf¬`Væú� @€ @¨Hä~úôéE†,WñR:JÒ)3sæL7nܸ"íÔªUË+.•Qše¤Ä¿ï¾ûŠŒG 'žx¢kܸqܼòž(ƒ)øJA"#ƒ{ï½×ïz—¡�$l°P³fMZ!&$ºG�>ú¨»õÖ[=ƒ¿ÿýï>=úU­ZµX’”ÿ#FŒð^:wîKÏö‰yV„û°tû[”çÆÁòÂåÃsøå—_ÂY•êÜ CÚ´iS¢yË‹‚ &OžìÃxØZP­¹­¶ÚÊõìÙ3nft£û¥µk׎[ŽD@ ÿ `À�ÿ÷¸Tg(…UØó‚”6R,!€ P9$z˜BI)è�"µ‡Gƒ’Ò¤> @€ @ =Ï<óŒ9rd‘ÂþóŸc é”Ñÿ絫?žh絤4ËHÉ�h<x`…5`hÖ¬™[¾|¹çùùçŸûcÆŒq ÷ðÆo88,Y²ÄçËÐaÖ¬Y.¬ÈïÛ·¯ÿ»þUW]åCJ\|ñžޝúzÿý÷ý•”ß×]w�7`�gʯ¾úÊm±Å¡’Ù;­W¯žoì�?þˆÛ¨ß’M7ÝÔÃóŠWG¡6Lâ8X^¾/^ì§XR}ŽÂ‡œp î±ÇóÆAöܸûî»}ûC† )´ÖÂ\u¯Z·ní×üôÓO®E‹álÎ!�JD†RºÙ¶STÝé šù$6¿‰':}lªí:ͧ¹2@HL@ï3V�¡�½ô^й½/T¦8ïÃp;¥éÑÀÆ�-ω ’@€ @(Ž8âˆB! l„á8öé”Ùyç��”âQ ï´.Í2R†Ç�Æ'#€|�öíÛ»ÇÜ+ƒõ·û9sæx%±ÍO»Ýׯ__D©ü—¿üųQþ÷ßïZ¶l™‡”ÖwÜq‡{íµ×¼1Äøñ㽋„J�¡¾$òžOÌ‹‚yšPSН\¹²H•U«VÅÒš4i;¯l'+V¬ðS6‘’ÌÿÌ3Ïô £F�ò†-2–yå•W|“æ¹4Qû¦;[½zu¢"¤C•€ ¥t“mGªº +tJ©ûœwcóÓ?€tn «œwL€ P!ÈX¡"{N°÷œ ´“@ï9ÍÉŒ5*ÄM`�€ @€ �b�Ë÷Dnß­ÉtÊH™®O2)Í2uëÖu—^zi²áäEž¹æ×d¾ùæ¯Ðßf›mbs“kÿm·Ý6v­“pø 3 (T r!¯;7`�†\‰yv˜={v‘.äMA'$aíä×¼õ÷�®]»ª§P¥&�5²ÓJw´ûýÃ?¤5w…æH${ï½·ëСƒ;#㙹sçú¢2lhРA¢j>ÝÖN6 )’vD& P® `À�ãÛc;6¥àйĔR|˜5Yއ‘µæm>6kX/~¥ÙÎX)v*ÚÜl.!@ 5{ÞÛ{Al½ìý~„Ë[¨!YîÛûDùVOíX»é´§2Åõè ¾ÂbýFÇ¥k{§cˆhóUÛ:·öÂ}é<Ú_4?zåÍç€ @€ D ȃ‚‰yR¨Q£†Û~ûí½ÁÁ›o¾YÄ€aæÌ™VŵiÓ&vžèD íÏ>ûÌgG�!ÕI–n rFT­Z5Vt·ÝvóçãÆ�s2XP¾ÉŒ3œ0‰fmcÇú"*6 °|)øÃ¬½hÿÓ¦M+TßÊez´~í=gãÊ´ŸêéÜÚ‹¶í/š½¶ñèˆ@€ @€ #ðÀ8ý}ä¼óÎó,]îû ä/¥¤V8“ /¼Ð 8Ð×ÙÿýcF R$ÿãÿðŤN�:þ|úôéîòË/wª'£“?þøÃ]qÅÞË�ÒÂyV&Ó£þž"Ï'žx¢{ä‘GbÕ>ø`ï]aÑ¢E>l…æ+Y»v­:t¨?W�°\F 7Üpƒ{øá‡�Bcì¹çž¾ÜÂ… Ýe—]æÏS)×}¡<þ2#•�?þ8î,bBKLþùÏúÓÍ6Û̇'±t;wÜq~]é>IºwïîvÙeËŽ{4ï2¬ ­Ä-L" �×0`Èñí�îØTw¦äéÕ«W‘Þ3݉)…ˆêH)GŠtR‚õ¡]¶Ñ¾¤H騱c¬åð¼c‰œ@€@Þ°ç½½ì}`éÑ «œò¢ùº{d°÷�êëý-oí†ÓÃõ-?Ó£õkó±q©�K,ÏÎ-]×áñèZ¢òúX¹hýxïÕ‚šE¿ÕF6æY´åÒM12xD @€ @(9ýÍ`Ĉþ##ý=E†/¿ür¬ñýë_®Zµj±ë“O>ÙÝ{ï½î£�>ò† §žzª7V�w…\�rzäÈ‘±ò¿ÿþ»Óf}d ѹsg·ùæ›ûM›¦¨ÖŽûvØ!VG'úÛÇí·ßîÓæÌ™ã�o½õ–;ꨣü¹ d‘ŽÈK‚ú8ãŒ3ÜàÁƒÝ¿ÿýo×¶m[÷Þ{ïyojCéaÙi§�ܱÇëžzê)·×^{9elºé¦ž�vüKaÞ§OŸp•JwnFZ ò¾½‡ C"Ï[o½µS˜‡Y³fyFW^ye!/N|e8sË-·ø$ydH%O<ñ„/Ò»wïTEɇòœ@•ÀÅΆ<Ÿc™NO/f=À%Æ óÇðµ¬Î¢?èËÀ!¬ÜçGÏõ�íÞ”È"1׊ëOǰ˜Ç…\÷î“s@({Ñ÷Bª÷A´¼Í ZÏÊ)?Ùû-ÝrÖOª£µ§£ÄÆ¥óxïÛDå£ïC+§vÂó±tëOùÉÄÆm?Y�ò˜gó–Á‹þ}ý÷Py3c‚ @€ ”gÚ9/Åþ‹/¾Xd˜RNßyç�>LB4séҥ.r¶£Þò¥ä¿ûÂÚÒd¤p饗º'Ÿ|2æêßòdÐpÇw8í¼‡uPþc�=æ=)XÙèQÆ2®‹åñ<0Xye8묳 �C†O?ý´ëСƒ‹å¡aÈ�!žC,18éÙ³§_Æ ÃÉ•ò¼ÿþn̘1Þ›†é³ Ä[láÌHEi2n¹ñƽ‘B"o Ï=÷œ;úè£ÝV[måd¸’,DÇš5k\£F�üýTX�}÷Ý׺æTB0äø¦çÚ€!ÇÃ/wÍ›ÂC +€ÊÝ@Ky@pI>ñùÀ.ñ ÄOe½À%>�ø©é®0„C‡Äo�T@€ @€Ò% ¯ óçÏw ,ðÞ¶Ûn;—Žr^!´«~ݺuÞ£A²Íëׯw ¿ )žå-R;ô£† 鎹¸å´?WŠqÍU^š4i’²)�wÆŒÞ;ÅŽ;îè=1¤¬TI ȳ‚Œ@dœ µÐ¬Y³ØÌe"οüò‹_OÊKu¿?üpïå⦛nŠ…÷ˆ59‘ñ‹Â�Èpæ…^ˆär T60äøŽgjÀ`ð×)JÀpÙÈ"Þ|âQ)pko!mø=mdÄzÙÈ"|—0��çpÙÈ"|–.—|ñ(ž;ç€ @€ @ ¢¸úê«Ýe—]æ=fÈËEqå‹/¾píÛ·÷Õ/^ì7nœ°)ÂÈã†DPeƒ@•›@õÊ=ýò7{ý!_»‘Ä_K"N¸œÞÈ .YÄ;ƒO<*ÎÇ«S¿§Â|X/…yØ\ŒDá#\ ó°+¸ Ž€ @€ @ b:t¨{ôÑGý§[·nî´ÓN+ÖÀGŒáë�~úéI�V®\éúöíëËÞrË-/‹6• �ªæß”˜ @€ @€ @€ � �Úµk»Q£Fù*t&LȤº/»téÒXgžyfÒú'�t’{÷Ýw]‡ÜÙgŸ�´,™€@å!€†ßkó¨`¡!Ô]«V­œÒõA @€ @€ @€ Pì¿ÿþnÍš5~(U«f¾ºAƒ±úÕ«'WC>ù䓾Ÿ*Uª¸jÕª•‡é3@ Hþä(¬èC�±‚bË+ô¤I“ütävGîÚ•‡@€ @€ @€ @ ¼Hex�jœéÖO·\ªþȇò‹ 9¾Ÿæ�AÝL›6Í÷&ã}@€ @€ @€ @€ `ÀPJ+Á<1¨;Ë×Q’hž6+¯ëlÌ7Ýö¬ÿlSõkù:J¢\¢ùÑqEË[¾ÕÓu6øY»Ù:f{|eÕ^¶xX;%�‡Õ×1žTÔõo.¤A€ @€ @€@î `À�{Æ•²‡o¿ýÖ�=ÚÏ}À€®S§Nq9”÷rq]‚Ä’Î×êO�:5î(Ä9o«§Jñò­±tËYùlSõoù6ÿDóµqYy]gcÞé¶gýg똪_ËOÄ%šW"ŽVOå³Á/ÚoI¯S�Ïòq‰öo啞�ù¦Û^t%½NÕ¯å'âÍ�Ž'_׋ÍÓæ¯ëÒ\éökãÌÖ1Ý~•³t[OÑqUÔõ�×€ @€ @€ P:0`(Ε¦Û‰9qâD§�v^öêÕ«Èü3-'ňíî4%Ix‡¯µ—­rE\Â_I¹¨ÍQŸðü Ïú-¯\lÜ6ÎD|,?<Õ5:óˆW^us]Îw�Å/›GI¹§|Y7Ùâ¢ç“ÄÚ ¯/ÖKþ:ïÜTKÙ.—ÞèÊO).H«�í*ÏG.6ÏîÝ»;}Jk=¤»¾ÊjE¤Ë%:>«—¯ë&Ñü¢Ò½¿Ù.Gi]§Ë%:žDõ*:ô½�¿][ù|/Ù<Óåb|옯ëÅæÇ€ @€ @€rC ¹áZi[•BY»ã[¶léF���Cºå6PÁ2Ò�oºå¤8ß±cÇzR@ÇóÈPQ0¥š·åk>:¯,bóNô{²|ñH‡K¾¬›wº\lÞRÈÊ“‹~/éðªhë,[\¤°–·ŠþœIÅÅæië£cÇŽIß_m]$o¶¹Çо^ñ"€ @€ @€J‡ ¥Ã¹Òôb;.¥2%F¼É§[.^ÝŠ˜–î|S•³ü(Û)«t)¥T®"‰Í+Ѻ±|›“ÊIY¦�Í·¢ÍÙæ’ìhóÎ)í£RQ×M¦\¢óÎ×ëlq±v¢œòu½Ø¼t”ñ‚‰¥‹‡=g,/ŽvŸ5Ïxïk›:\òéù’÷–9@€ @€ @¨È0`¨Èw�±W:R¢ÉÓB¯^½ Í]ŠüI“&¹iÓ¦UhO …&•äBó• )ÖòyG}q³’q©ÌëÆ~7ò,P™~'qI(1K¯lÏûý‘Î%zÎ|÷Ýw•â¹ê'ç+—ʺ^â " € @€ @€²@†,@¤ ”6�èŽà‰'Æ\žG•Ž¥=¶\ö'ƒ)Ó,&»í Ž·û7—ã(om§â¢|IeY7ÆCs–rÕÖ‰Ò-´M>ÿN4ïx’)—ʲ^l}3û½Øue=fÊ¥²¬—ʺ˜7 @€**�÷ÞûÁ}ñÅWµjwê©âNcåÊ5®N�qófÎüÙ½ýö\Ÿ×§O»ào µâ–#€ @ {0`ÈKZ‚@Î „wÂjG}eSÜÛü¥`ÄóÂÆå–Š‹å«FeX7•m¾WBò³t¹¤[.yo'7êA@Rfè¢ßK÷îݽ!LÅ™QvFš.—ʶ^²C—V @€ àÜÙgŸíþûßÿ¦…bÔ¨Qn‡vðe¯¿þz÷Úk¯ÅêU­ZÕmºé¦®]»vî¸ãŽs]ºt‰å%:¹ãŽ;ÜóÏ?Ÿ(»Hz½zõ2*_¤�2JX¼x¥;ôЧܯ¿þáFŒ886йs—»k¯�ìÞzk®7nPÆf›Õ Ø5s—^º·;ðÀ–±²Í›oêFŽüÔM™²0ð|º¨P;±B•ädþüù®ÿþ…f[«V-×´iS·ß~û¹¾}û7+”Ï @( ŠC�: Ø_Û!¯‚:�îÌL·œíµòjOJ¥ëc’írÖn¶Ž6þ’r±ñ¨½p[R UD.áùhá9…×�Ê)_ž&ô‘(V½qÐý·ù+/Ûë!ÝöÔw6%ÕºQ_ép±1/­®qÓMÒ�oºå¬ÝlÓᢾÊj¾ùÂ¥¬øek�X;©Ö‹Ý/+¯ãرcý¥ŒÄ¢†bVÞÚUÁ|üÙ<=ˆÿ}%ã’/ë%<_Î!@€ �Kü±›r[mµ•›>}ºkР�/*ý�䢋.rçœsŽ[½zµ[¸p¡{ê©§Üm·ÝæË >Ü]vÙeñšöi*¿téÒBùª¯ÿí¹çžî¡‡*”W½zuצM›BiåýbÒ¤¹ÁÿçÆ¸Ö­ëž.Ns›l²qßäÉó†ÿugœÑɵoߨU¯^Õ}ùåOîÌ3ÇÓüÞ{cøå—Á®J•�³|á…¯]¯^ϸš¸O>9Ù×Ù˜[9ÎdøÒ¶m[?Ùyóæù£þOøÙgŸùµ3kÖ,ï�aöìÙ®I“&• ³„ @ '6þË-'ÍÓhe%oçf<©Ê…ó§M›æ›H¶#V²Q.ÞX³‘žO²ö• §Û<ÕŽ¥Gq–®2V¾$üÔN.%<Þxý¤Ê·:árÙ˜wºíYÿÙ>†ûÿöîNŠ"íãøC”Œ YAQÁ€b@ €€ŠóÏ|žá¼3ž‡ñL˜ïÎóõô0`E9 Š$IÎ’s|ë_k�==3»³Ë²€üêóÙ�žêêêêïô,ÞÕÓO¥ë;?ûƒ‡ú Çí¬÷MÜ$Z¿=®7ÝùÓ}ïâã.¬÷ÑóGûŒÖçåکÿtý¦»ÞlÛEÇ\˜ÛÑóçÖo´�¶ã%º?ølÍõfÛ_|…õ>zþÜúŒ¶Óv(Ñúà¡}¡>ÜK¹µß¿Ð/¯ € €ìluëÖÍ8d"(xAeÀ€‰à…è h¨U+'@ƒ |à�Òùk‰‰7ß|3׆5j˜~¢E�*êWËQ„¢ì‹/öAñcB--°aÃßçn»íæ4Z¶l™ï«B… 6uêT·Ã(PÌ?�¯ûLE�cÇŽµI“&YÍš5mÿý÷÷A™Ú§«_·n“]vÙ~WïÞ'&/¨²uëZþ'zlÓ¦U�Ù‘>€AÙæÌYaµkÿºÂ)§ìc�:5²÷Þ›â31\ý!ÑÃóÜŽj¨Ï^;s©]»¶¾^›7onÇsŒ¿ot�Ÿþ¹�rÊ)‰ËS�ƒ–KÑgªk?à€ü²‰±�õë×û SªT);ì°Ãü½¥{Cÿ[SKšD˪U«|ÿ ¨×r*uêÔñcRàM¼¬]»ÖÆ�ïï1Ý›º¿6lo–rOŸ>ÝßÃ:^Çè( € °íÈÀ°ílwɞÓ˜z�ýÇ¥þlj^U²múíõ>ÚOØ^ »]èwk_øô-u‰÷ï'zm‡öÚ. ?õS˜%Œ/“�Î¥ÿ߯�éúC¿jW×�ma\[ûοîp½ê??.ñþB?zMWB{í+ ¿tç(H]W&—p=ñvE}½áüyùÄ Ý1á|…åﯨýÒ]cAêâ×úÈt=¡½ÚÆ}_Øý…ñoík—^£¥ .ñþ2õÎÚë}a8‡~yE@@`gøè£�ìÄOô—¡¬g�uVÒ%… TP†hùì³ÏüD²ê4Ѫ€†lË¿þõ/»ä’K¬cÇŽöþûï'{ç�w¬k×®þÉú ˜¢eÑ¢E‰§í51¬à‡?ýéOÖ«W/;ï¼ólÞ¼y6xðàè!¦ þóŸ“&ñ7mÚdO<ñ„Ýxã�Imõæ¶Ûn³»îºËJ—.�²/]ÅÀ�Síä“ßp�åmÆŒ«’2)¤kêÆŒYè–,ý—»|ù >Cا×Aƒ~²öí_÷ýΜyUtWžÛ�<òˆÝtÓM¾�BBF�<Ü�D30¤Kê|üñÇÛ�!Cüç2€(›ÇÅ_œr÷ÝwŸÝ|óÍ.“Er��–VéÑ£‡)›C´hGÜ{ï½þÞ ûtß^ýõ~_¨Ó«Úkß™gž™¨Ö’-ú>…ìaÇÙgŸí–y6é3 ÷ðW\a?ÿü³½ñÆ¡¹½òÊ+í©§žJº‡“ð@¶J€†­âã`@@@@@`ë”zÿàƒö“±šà×dm¼äÀ0hÐ 7ÁÞÞOÞ*B~žòÏÀ Ì ÊΠà…W_}Õºwïž4¤01¯  �_%Lþ††G}´ 8Ð49­Id•x_šÜW_šx¾ýöÛ}öO¼ýöÛ¾½ö¥ nð;c¿®»î# ñ�[ð(»ãŽ6±½™ß*kà /|g‡ZÓ¾úêü”†7n¶*UwŸÏz÷ÿ%Ö¬Yµ”6™*‚“öÿV”)A™Cz÷îm¿ÿýïíù矷Ë/¿Ü“(8¦U«V> CXêD8 Ä E÷Xª¤Y³fvÆgø€Ý3ýû÷÷Í¢ |ð�¸ÑËzè¡>`F�<úQЋ–EQÑ2-Z´ðÛúŽtêÔÉ?(¥±êÞÖ±:OñâÅ}›ø=¬ý‡~¸�7Îi¨Q¿~ý¬K—.¾=¿@@ p’C ·ozC@@@@ÈC@O—+í¾^5)ªÉ×ü¥Ýÿë_ÿê9ꨣò¼�Ûy”Âÿºë®óAÊ� `PÖ„Ç{Ì~íµ×¦tÓ²eKÓøaâXOí_uÕUþiw�5ô¥¥4Á¯¢‰æzõêùíóÏ?ß-ÙðžuîÜÙþð‡?ØÕW_�U†>øÉß¹ó>þ5¯_k×ntY†úàµ}晓ÒR²dq— ¹ÿh6lV¾”q!,UP¢D‰´ýïÌ• &ËžrÈ!¦š�qâ?ÿù�Ϫ®OYÚ´ic<ð€]zé¥Ö¨Q#¿K÷™Š2~ü÷¿ÿMÊ ¢Œáþö�ܯ�A}(X"ZFŒaË—/OTýñ�ôÛʨðôÓO'¾ °Ðrûk¯½–¸'Ã�Mš4ñ™4ÞPtßöéÓÇUÀTxE@ prB ·OzC@@@@ÈB`óæÍ~ù=Ý­ Ó—_~Ùòšäž0a‚Ïx I\Mþï·ß~þ©s�NÃ…Y.ºè"ß�žP=zt¢kMZ+¿24hé‰xÑDu^Ð>e„Гí*ºÖ%K–øí0­§ôCð‚ßá~�p >+ƒÞϘ1#Tçú:qâb¿¿~ýй¶ÓÎ!C¦»ì/º@Œ¯ÝyJ»÷Ý]¦€½2× ANŸsç®ÊØ&Ý-£  ú©P¡Bº&;U�²m(¸äŸÿü§ýîw¿K|þçž{®ÏT0lØ0Œ£û9ª„ <òÈ#™ t©¬Y³Æ÷§í‡z()xAu鲉„%Et®Z•üyè:tС>Ó‡~è·í«zõêvë­·ú}á>ôo~ù¥Œ'ÑàUŸvÚi~¯>K  €l20lWzE@@@@òøÛßþæŸ&×ò  °Šóžxÿ÷¿ÿmú‰MÿãÿðO”Gë·v»fÍšÖ³gOÓ“ôzÒý™gžñ]>õÔSþUÙò ¸c¨S§ŽHP¦‰Ù³g›2Œ?ÞïÖdxX* ´×«Úª(€!,1à+ÒüZ³fc¢¶J•ÝÛ™6n½u¨)àᬳšÚã�ï–®Ø#SS__·nNðÁüùÉæ¹ôÜ©eâE÷ÁÝwßí«ú)' ÆG‘X–!Ú^K2賞8q¢¯žl(SˆÊرcCU®¯U«Võû×­[—k;v"€ €@Á`(¸G"€ € € € €Ð$®ž WyóÍ7­qãÆYõÕºuk;úè£MKþ¾Rv“pŽpÏÆ»úùçŸ}UnÁ3ñcx� €ÛV pÿ nÛŽ•Þ@@@@@��^`É’%Ö¹sgç�wžÝxã�;ü5]wÝu~Œ÷Üs�=ýôÓ~[ ù)ƒö͵T@�5üvóæÍýëÛo¿�Ÿ®Ò¶-Q¢˜…ì Ù,ó0xð9. â—Á"'#@ÚN#•3g.÷ïÂ9"»rÝÔ¤ü¦M›üO® #;Ã2}ô‘­_¿>åª>þøc_2Ž„€-òÙgŸ¥´_¶lYJ]¨PF-qÙe—Ù;ï¼c¯¾úªßõÚk¯ùWe(QQßãÆ�óÛÑ_á|M›6�V³� €ÛQ€†íˆÏ©@@@@@`×ÐDv�=lêÔ©~âUË2+Vl‡G8çœsÜ å}M·mÛÖ8à€ŒãÖ²š¸eòäÉvýõ×û··Ýv[¨¶sÏ=×oøá‡vï½÷Ú† û´1zôh;ùä“méÒ¥Iõ™Þ4k–³TÀ÷ßç,K�©�êÇŽ]ä²J,´%Kr–³È­­ö�•³AãÆUòjš´ÿÑGuÙ JúŸl¯#©ƒ�ìÍ1Çc{ï½·¿Wî¿ÿþ¤Ñÿç?ÿ±áÇû:eQÙ}÷ÝíŠ+®ðÛg�u–ii•üÑ/SröÙgÛO<á÷EuïÞÝþñ�¤Ü/3fÌðÍöØcÿª¾{öìé·oºé&[½zu¢›~øÁôÙ¨\tÑE‰z6@@`û °„Äöõçì € € € € ° Ìž=ÛOÌê’G�e{íµW®Wÿøã�ï“«šÖSî�<òˆoÈÈ�iðšÖr‡z¨-_¾<ñd}“&M� :vŸ}öñÔZBâŽ;î°çŸÞ4®@†Ï?ÿÜfÍšåO¡À�lJçÎ�ìÓOg¸'ñÇY‡9Oßg:®k×·Ü$ûj0àLëÔ©Q¦f¾^íú÷Ÿì·�;®n®mã;£�Ñíx»ßÊûÝvÛÍž|òIëÚµ«Ýyç�6hÐ kÕª•M™2ÅÞ{ï=™º?BUÜ~ûí¾�{ÂÒ*ÁC�3 š‰úhIˆK/½ÔצM«W¯ž}ûí·î³ÿÔöÌ3Ï„Ãí¯ý«_ZbàÀ�>è¦}ûö¶råJ{ùå—}›.]º¸{¥C¢= € °}`ؾþœ@@@@v!�è$¬.[³¹•h þplxÍí¸üì˶?M+€AOׇ%02�G� sçÎMLX«Ý%—\âŸx/[¶lÒa×\s�µhÑÂ/¥¡ Ž° €i -³ž¨O:0Í›ŽÚM7}â&§ÇZïÞ'Z… eÒ´Ê©*]º„ß(^<ï o¼1Á·m×®žU®¼[Æ>ÓíˆúF·Óµý­Ô)»Â�!CìüóÏ÷BÖ#(H¥[·nI—ª{ê›o¾ñÁ,_|ñ…­Y³Æ¨�–†x衇’‚}”±Amt¿D—Q?>ø y䑉þÜðÝwßùûHãˆ7üéO²»îº+ÑV%J„û"5�uñâ©uIó@¶Z ˜‹øü5�×VwG € € € € €¿E-è zM&+º¢ á^½zÙßþö7ûãÿhóæÍóÍ 4ðK(¤;&Z§Ii=…¿qãF«[·® ¨Ý�Õöï~7ÐþùÏ1ö§?a÷ÝwLVÇäÖhùòuÖ¸ñó>[ÃW_�ï²JÔÌ­9ûbÊ:2mÚ4«Y³¦Õ¯_ßò ìZbä£�>²ã�?>©÷U«V™–�P �‚”Õ! $5üåÍ’%KüòÊ(²ï¾ûZéÒ¥Ó5£@¶£¶#>§F@@@@v�qãÆ%²)\xá…Y ¹dÉ’~R9«Æ¿4Rv†æÍ›çç�”¶<ÐÖ^}‚ ¢øÜzôhfÍšUKi“ŸŠ{îხ½¶Á ù�û¥míÚµM?¹•eË–ÙСCí¸ãŽ3eiåÅ_ôÁ ªÓ2ñ¢@„ýöÛ/^�ñ½bZ·n�q?;@@`û À°ý?F€…$°téRÍ­îÍ]©R¥¤žóÚŸÔx;¾ ãÔ«Š®#ÝõlÇ!æzê0~5ÊmÜÙ¶ËõdØ™íy »]†Ê! € € €ì0O>ù¤Ë¥—^jÕªm]@À¶¾¨ªUËÚSO�ä–/`g�õ® Ö#ßË>„1¾óÎ$·lÆWV½z9»çž£C5¯…, L§žzªïU™”­a„ ‰%V´tIüÿë+ä!Ð €ì ,Ø´ƒ| ¶^@©è^zé%ÿ£íxÉk¼ýözÆy÷Ýw›~tMé®g{�/¯ó†ñç5îlÛåu¾üîÏö¼…Ý.¿ã¤= € € €;Š€Òî?ûì³~8W^ye®Ã*V¬˜ß^sm¼ wöìÙÜÚ¶­kãÆ-².]úèL_=Ϻv}Ë«€ˆŠË¨Ê[@Bf„Y³fÙÈ‘#}ð‚êl œ¡ € €À®!@†]ãsæ*Ø%ôÄü·ß~ë¯5DlG/<¯ýѶ;Âv4@ºëÙÞcŒŽ/ši![çlÛÖu†ñêÑv¦¨ýx;�?ÜWÑëŒ�+z=¹µ‹Ç{@@@vt¥Ýß°aƒ¦–…È­Ü{ï½þ�ŒâÅ·ï³sŠ£øøãn¶yó–܆›ë¾V­ör×ýGߦdÉí{=¹ô7°³V­ZöùçŸÛÆ�mùòåþ~«^½ºmï@˜ß-—€ €ÀN'�ûmît—À@��_@“ß\p�Õ«WÏg_ØQ¯(d(Ðø4Þƒ:hGªW¯ Ž=öX?^YÇK¼�ök Æï¾û.íu†ÏKA¹µ‹Ÿ‡÷ € € €ìLy.„kQàÂö^øu,ÅÜXr2B„ºü¼*‚À…üˆm}[ÝgUªTÙúŽè@vZvÚ�Ž�#€@^áIzµK7QŽíô-zB_Ç…'õC;µ‰Ö‡c2íõyõúÑù  öï¾ûn¨Îøšmÿ¡�:ÒøU4YÆ¿^ßÀý Ç…v¡>÷ Ô.d.Ðv¦þµO%~ž¼Úç•÷ïÐo—ú•o<à"S;�AÁ Ú®'úù‡þòj—÷Hi� € € € € €ìÚ0ìÚŸ?W�ÀoZ ?㎠ŽýÑ€Mð‡Àˆ0½f;žüúDÏÁ6 € € € € € €ÀŽ/@ÃŽÿ1BØNá‰|M¼Çƒ²R8^¯x`Ê!aÿöê?d �Zú!„ë Ë9(¡mÛ¶I×oúÓuE—�ˆ—ÔIäM8>·ñDšo³Íð¹ÄO2ihœ@@@@@@� €¡ðMév2�� LÖ‡ák"[û„z¨Ïïkè?Lê‡ã·Wÿ!S‚ ÒeDã+ª×m<Ûúó**W΃ € € € € €ìl0ìlŸãE�BáÉú¼:¢Ç…MzëGïÕN?j—[ ý)@BÛ…]âý‡ñDës;gh®W¢%~½Ñ}ùÙçÙÚ@‘üœ“¶ € € € € € €;ž ;Þgˆ@ ˆ4¯%4Aì±Çš–Iˆ6„%T¯àµQýСCí»ï¾KíGñj2:„ã2MÐk_m Z²í?Œ'Ûó„~ÃõF-Ô‡öË-\o¶ýîèíÂuÇ?/9Ä vôka| € € € € € €ÀÎ$@ÃÎôi1VÈJ@ šlŽ(XAõúQ½Jh§m&hIÕ«}¼„LÚ&²O=õTß,¨ŸøÄw8.ôïwkßoëþ3�/œ7~½™ÚG]$PT%Œ3œ_Ÿ•ίút%´O÷yÅ—‰ú×½úÏtŽèql#€ € € € € €äÀÀ�€¿9M +À@ëÊ ¢Œ š¸Ö¾¼&ÜÃñZ2!›ö¿9À_.(8hb>]† MÎk¢>ÛúSûx¶‹lû(H;�1]挼îƒüž+\_ðRÿùñÉïùh� € € € € €üÖ`ø­}¢\»°@xr>< ¯÷a¢\ š`Ö„²&–ÓñÚí° ¢vªËTâçQ;õ«úЯêâíBÿÚ§¢ýḜšœßa< ¸ãÐv¼}Aû�žk[lgWpÕþ¢,a<:§–ý�©º?›þ£íµ/yí�·Ï”É ÚOt\¡>8…÷êWÛñ’×þxû¼ÞGû‹Ž+Ý_�ñ„ãÃõ…~yE@@@@@ÈN ØW²kJ+@`ç)ý5Z=u¯¢§äUô>>9ÚëUEûósœŽIׯêUâýçÔþzž¼ÆSXíÃ8Ô_ºñÆ÷Ç3 è˜hÑ~e ÐøÓe2ýéU%¸†ë ûµ/›ñ„ãÔ~kJ¦ófªçÊ´?S}8ŽW@@@@@@�ì`ÈΉV €À.' %´t…&èµ4B~v90.@@@@@@`«`Ø*>F~»!³€”i!d±W¬€6hÉmV†„Ð?¯ € € € € € €»–@É]ër¹Z@�l� à•ï¾û.å°°?´Ii@ € € € € € €ù C>°hŠìŠ!ƒ^£E d^ˆŠ°� € € € € € °50l�Ç"€ € € € €ÛX`äÈ‘>;b«V­ìàƒÞÆgË_÷7n´’% /Ñï€lÞ¼yÖ©S'«Y³fþ³�[÷íû£-Y²Öj×.o;6LÍæÍ[lݺMV¶lz¯W^gkÖl°† +Y»võRŽß‘*Ö¯_o[¶l±2eÊìHÃÊ8�uóæÍV¢D‰ŒmÒí(Èý=gÎì¨|@IDAT{ÿý÷­nݺvÒI'¥t»iÓ&w¬³råÊ¥ìÛQ+ â ë,^¼¸+V¬H/+ü 9í´Ó¬ZµjEznN† P8éÿK©pú¦@@@@@�˜ÀÀ�íÁLª-[¶¬Õ«WÏOÜwèÐ!)(àí·ß¶^½zÙßþö·mÀ0cÆ ûé§Ÿü”q1SÑDðk¯½fï½÷ž�5ÊÆ�ç›¶hÑÂZ·nm\p�qÄž´¼ÿþûmøðáöÉ'ŸdÀpã�7ÚèÑ£S†û¯ýË4hàëÕç‡~˜hSªT)«P¡‚U©RÅ4îÓO?ÝjÕª•Ø_��O>™agžùŽ?ôóÏÏKt1lØ,{òÉolĈÙ6kÖ __½z9;á„úvÇmlß}«$Úº¹^»ôÒüû©S¯p㯘ط½7Ö®]kÿ÷ÿgýúõóÁ4³fÍòCÚ{ï½­k×®vÛm·¥|^Ñûüä“O¶?þñ�i/cĈvûí·û}-[¶´Gy$m»É“';ŸKý>}^¯¼òJÚv¡rîܹöØc�Ù|`cÆŒñÕÕ«Ww" ý=zê©§Z›6m’¾kº¿5þÔSOùûjÁ‚þ¸&Mš¸Ïj_ëܹ³ÿÉí~yî¹çìž{îñßñÀп{ã�7ìË/¿´‰'ú>Ë—/ïUÚÙ�wÞ™ò½VD�=|;�ë?ÿùOÚï”2¦žqÆ>8CÁƒ ʤqÇwØgŸ}æû”÷ 'œà·ÓýZ½zµ½øâ‹þ¼cÇŽµ+V˜ÆÛ¸qckÞ¼¹ÉNצºhÑ2´?ü°»ßGØÔ©Sý.yëoÊñÇo]ºt±8 zHÆíåË—ûóļúê«)÷Zh#�Cã:÷ÜsCuâUAº_u=*}úô±5j$öG7â7´O; <Ñý ~?üðè!l#€–€û™‚ € € € € PDnbp‹ûÿw3þ¸Iõ-?ÿüsb4nrØ·u ‰ºÂÞ¸÷Þ{ý9þò—¿dìzÚ´i[Ú·oŸ4n7!œô^×å&3ö‘×7¡ìûs y5õûu.7Y™4½?~|âxT‘´?�}Ïž=·¬Zµ*qL~6\Ö„-Mš<ïÎqÿ–þý''úç?ÿÏ×kŸ~Ê—ÿ{Òû ~ýœuà|á÷wêôFR?Ûû� Tqãúõž�›ë>p™3’†¿Ï]0@Òþð¦cÇŽ‰¾Ý„~¨Ny½ûî»í47YžÒ&T¸€•¤¶Ñ±G·Ù²fÍš-ѱ¨]ü:UçuÇÄ76lذ%|'fÏž�Ø�®Ÿè8>ýôÓD[mLš4)iü.£CÒþðæ¡‡Jj§ó§+Ë–-Kjç‚Ò5óuúž»À”¤öéÆÿ[ÿ|¢×ÝÎö{¦¿�ÑãÂö”)S2Žý…^ðÇ\sÍ5iÛ 2$©ÏÞ½{§m§ÊlþnÈŸ‚ Pø.¦“‚ € € € € PÔzúÛMrÚôéÓ}6ƒG}Ô?9¬§ÅõTõŽT´d€ž¸V&7™i/¿ü²éiçùóç»eÖØ·ß~kʆ ²páÂ"º2èIm=å­òÑGù÷M›6MÃ-·Üâ½õ$¿ž„ýõ×Oxë ÷³Ï>Ût�ù-?ü•{ª~±�w^s÷t~£¤ÃkÕÚÃî»ï›6íJ÷”ü-¶xñu.ÃDOgXÚ·»ãŽœ'âÃA7Þx¨µlYÃe¸˜bo½•ó¤~Ø·½_•½@÷¨2È\?}ûöõÃR¦7��ëÝdqÊ~ÝëÊÔ�WÑònrÚ7Óý§¢'ñÓ•%K–˜ ´ñ»´‰îY�U}èûæ‚|¦“ø±zâ>ŒEcuA0æ&þÍM¸û¬áû?.ú^÷Ÿ,” š¥AVn¸á›0a‚i9h`C‡õ@tüÅ_í&eû¾ûîK©SV 7�žRŸ®Bß•`§Ïͤkê3?(ƾSÊP 3ù-^¼Ø>ÿüsñ?þøcŸIBõú; vú.é:]0†ý÷¿ÿµfÍšÅËõ½2¤¸)1ÿ£~²)Ï?ÿ¼o¦L0éJÈÚ”©%¯rë­·š2bèGY%þ÷¿ÿùì :NYEôw�‚ PÈ…A� € € € € €™“éÊf/zÒÚý_ÀþgÑ¢E~w<ƒž�~ë­·¶¸ Ü-n8ÞEÒ{7™»Å¥�ßâ&궸ÉÕ-.à i¿Þ¨ÎM®ús^uÕU[Ôøq©ä}{·äEb\¹=í–•Øòç?ÿ9q7i¼Eí•QÁ lq�[ôt|¸¶DÃ_6ò›�!ï&[ýøt�ñž¤vÔñ]þ}ôi}—v~‹K3Ÿ¶]ºJ¸àΛ“]aîܕ隤­»ë®aþ¸† ŸMÙÿå—sü¾ê՟زlÙÚ”ýyU(Ó�>?7ášWÓ¬÷»I÷-ëÖ­KÛþŠ+®ðöÊ-á>?ñÄý~7i¼E÷c´œwÞy~_È|�)ðaò2ŸÝÀ-Å�ØN—q@÷˜Úê|n’?zº¤m}/ܲ)‰º�uà‰'žHÔÅ7”Éà�wÞ‰W'Þ» îwß}7Q§�LYÜľo¯ñF³®„ “[®À·qI}ê;­ã‚�¶Óyè ðüóŸÿÜâ üqn²?©?½Ñ}£~ô£ïr¦¢ï´[ê%±û’K.ñǸ¥%uñ �M2�1Þ>ú^÷_W¦¿?ßÿ½o¿C?+W®Lô¡Œ¡?eIWrû»í+ê�®ê@ò/@÷¯@@@@ØÜDcb?üðCb[3fÌðY´žüé§Ÿî×xw“uæ‚üSÊI�Ý7�l•+W¶£�>Ú?á­5ïµÞ»[ŠÂ?Ú»åü“õzÿôÓOûõêuýèiu=I}óÍ7ûæzJ=d;ÇG_>ø`sËQ$ª®½öZkÔ¨‘wÜq~ìnÂÚ?_­Z5Ó“ÍîÿÒN´Ý^Ê,Ñ¿z=Õ?bĈ¬‡ò¯�ñm/½ô@Ûk¯Ý³>®Zµ²¾mÕª9¯Ñ;¬¦zhM÷$ÿjë×ortWVÛ]t‘ÿì:tè�Uûl•(QÂJ—ÎÉoß¼ys_å&uã»ü{}þÊ0°bÅ {î¹çm”yD™<ܽ¿7;Òl(C†Š›(÷Ùô½2¸‰h_ýå‚no5îL娣ŽòNa¿²-¨+V,T¥¼V¨P!‘µ#¾S™G”ÕCc‹Û—+W.ÞÜ¿ßwß}õʨ/2wA¾ZßÛP\��黨¢,¹•™3gúï±ÚtíÚÕt¨¤Ë> lÙý 8òÈ#MÃqÅ‹gžr*Y²¤�uÖY¦×mQþïÿþÏw{Ùe—¥í>|Ç=ôP;öØcÍ~øvÊ‘ßý¬öÛo¿üN{@�<2ÿk’Ç�ìF@@@@(\-ÇJ¥J•¦}öÙgÍ=}î&·µ«¯¾ÚÜÓê¾þ™gž±$µU*õ�–^“¾ LP {•Ûo¿=1)ª÷'Ÿ|r"•½Ò¼k0üÔ«WÏÜSêjæË¥—^6³zUðƒ&t¸pÏ=÷ø”÷ÚVyà�L×´#”Î�;û‰t�EÆÙ–°ÌùçfŸÕª öüóßúS|½´§ºè¢|½–’ØÑK¸÷8 gÌéÆû‡?üÁWk)„`ðøã�ûº¿üå/¹Një;RÿwëÖÍ´C�=ü±!°!zΠ€ õ­%%²)­ZµòÍ´T„–wÈoyíµ×ü! (ÊìïsРA‰ª½öÚ+±Ý8çœsLËwh)Œ‘#Gú]2Ÿ8q¢è¨ï�r+a\ P@“–JQùâ‹/LË©DKƒ oeߟØÛËC¼ýöÛ¦ÏÄeYˆµØ¶o]v�ÄßÝ#éJp¸ð ýîóÏ?ß¿*ÐK!Ù’…¿ƒúÛ*S  €@á ÀP¸žô† € € € €X W¯^‰cÃDl¨Ð“ê.•¾}õÕWöä“OšÖ�“uáébµÕ“ä7Ýt“?L“‰ÿøÇ?ìÊ+¯´¿ÿýïæÒ�ûz¸Tì~ûúë¯÷OFëÍgœáŸ’דòú9ðÀýD©ö)AëÒç§(ÃâÅ‹M“‡šÕ¸´Ý»woßMtÜùéw[´Õù*?þøcVÝÏŸ¿ÊÙ,öm�>ºNVÇÌ™³ÒN9¥¯�³ÐöÞ»¼ËBÑ:íq�;7òõ `¨U«–Ï’�ŒN{’B¨”•&ÖUÂÄpºn5Á­§ÿT  c·\‚Ïúá–H0MÐçVè�SÊ8¢îû—^zÉâ™”qÄ-EâÛ)K�îY¨Üyç�Ö·o_SF‚tÅ-Õâ«§N�jmÛ¶5e–P ÏSO=å³rh’<·¢@"·ô@nÍûȲ (¸(SöCÜqÇþ¸ð÷!d_ßóD§i6ä­‚>êÖ­ë¯Ouñì  Þ{ï=kܸ±sÌ1vã�7Ú¿ÿýosË4¤Íš¢ }ý}PQ€’>×îÝ»›[zƤ‘m‰ï ¿Â=â–€±ªU«¦ô0wî\Sý�SéÔ©“�5k–ÿ»êߤù¥L1ʼ¡eçPP—5Z¶léÃÒB €ÀV À°•€Ž € € € €D@“jšÜ{÷ÝwýD˜–2”Ê °Ûn»%u« â01vœvÚi~3#è�‚4Q¬€M"F‹Ò¾wéÒÅW}ðÁÑ]·§M›æ÷5mÚ4c›L;ôä¸RÆë gM klo½õ–-Z´È¢ Ñ¥„TðZ ›2~ÎR-Zìi%JËõ�Í›·¸'ÄG[Ó¦/Ø�!ÓÝDüžÎ¢§U¬X&íqµjåL¯X±Þ֮ݘ¶M¦JÝ;ºÞyç�LM ¥^“Ò§œrŠï«}ûö‰û*Sç·Ür‹ß¥L�=ö˜ßVÐ@©R¥2âëÓó!£ˆ*l¢{KEߟhQ €2D*4¯óžy晦 |MÊ+A´èû§ã4ù®2nÜ8{á…|¶}ïöÜsO„]> ÿõ×_ûö­[·¶p…}é^7oÞl—_~¹Òuh’<·¢kQ€€&ÎP¡±+£B^ßÉÑ£GûqéX}F¡„,( Jˆ/ãr×]wùå)B@ÂgŸ}æƒM´ô„HöÙg„úÒ«²G(°*ü}Òò}úô1}æ:¯‚H@1gΜèa…¶AÂòñŽß|óM_¥ -££¢ë !Çߑ˯`¢&£F�2-™3dÈ�\Ž` €@A`(ˆÇ € € € € €[)0fÌ?¹§ „ßÿþ÷~�zM�iÒôw¿û]V½‡§�£O‡‡%Ž8∴Ouk ¥ Ï¦„‰âéÓ§gÓ<©�ÒÿkSiÖ5jdz:^O@k’TEKLì(%L®Æ—îÈ4¾… s5Ê;…üÊ•ë]ŒA.°d½Ý}÷Qöå—ç»'¹+dêÚD4lXÉïÿùç5Ûm¯Ë—/÷÷®î!ʼüòËnÌ%rÎá‡î—=Ñäö_ÿúW?� 2Hw°‚IB€BXú@ít.¥ïWѹãEŸaÈô %A”ýC“×aZ“òú~Œ1"éPµÑšŒW–eY¤q+"^” BEA y \wÝu~©µÕõ…ïX¦cwß}wÿ=Ò~-£Bü› ¿B†D¢” CEAEŸþyÒѲUß²Wv e{PƋءc”eâ‘GI:NÁ PRðŒ ”U"4¨á«¯¾ê'ü—.]štÜÖ¾™={¶)“‹ÆwÜqÇ¥íNYhTzöì™´_Tô77,m’ÔÀ½Ñõë~?úü&L˜à3Š(Èåøã�7��‚ Px% ¯+zB@@@@ÈV@“–šÔãš|Óÿ!‡âŸôζ�tO¯‡‰øÜï+LÐk"9›¢ jµ×$žR©gSV­ZåŸtדÊ*š€Öd°R°+í¿–µØ‘Š&­Uô„y6eõê ¾YåÊÉ™2r;¶zõrn9€œå rk§}•*ådgX·nS^M‹t¿–Qæ…‘#Gú¥*ôº²dS”q!<±~ûí·[¹rår=LK>„¢%¢E*šd×ríÚµ£»ý¶žüWÀA:P&eQðƒŽøá‡ýûè�Z&@A>!ÐGûÔ ñjIesøî»ïüò*Ú§‰ïÀpúé§«*cÑùµdKXBå“O>1emȦèû–wPVƒV­ZåzØÆ�]Ö�g}½fÊ2  ef‰—2eʘ²Rè'e~¸öÚkýg÷Ýwû¥%ä- 6ô÷E¨“³–×PP„þ†h Ø*¬®KË}¤ ¢ùá‡Ü’-cü锑FíB ÷�ÞësUV‹lŠ–÷yýõ×ý=§kM&gS4Á­Iê«®ºÊ7×çžMѲO<ñD¢iXVEýúõóÁ ŠÈ-¸GYRôÄ¿‚4v´mÛ6Ñg^ Ƹùæ›}³¼–œP#Š„ ú¨Uü< ¾H·,F¼�Þ+ØB� *êûçŸöÛ¹ýÒ¹5n}î*Ñånr;.ºO�éŠþ^=÷Üs~W<»Bh²Pè}Ü!ú>]&�ÐGºW-�þ6f»ìLº~¨CH €!Õ„@@@@@`§P&•�>ú(í ü±ß&ßô&drPÖ„xÙc�=O&+õ}˜�·Ó{ehèÓ§�ߥtò*§žzjÖY üEükîܹ‰€ ¥¼Ï6¸"0L™’wJü ʸ”ü׺Ôó—fuukÖltÎ9Ëkä'Ã:ß¼y³iÂW¯…Yô»&¡•6¿]»v~‚¼F�ù:…žÖÿæ›oü}2�dê@ÁÊò ¢¬!…ôõ¡‡òûÃz£û{üøñ¾>Ó¯hРAßdÆ ~Ù½f*Ñ%jÕª•h¦åT.¾øâD]|CãïСƒ´P¶/hI�ü–xÀ4iŸMàƒ²E¨(Ø!j¶•9Bøú>+‹…ÊäÉ“mРA~;Ó¯è¤ø $ kÌ­„¶a)ŠÐV÷ª~ÒO…6Ñ@‰Ò¥K‡jH£%-N<ñD Ÿeb§ÛP¿áÞPðU¸öè«> -C1þ|¿�Í/ù…ÌÍš5ËæÚ €d)@C–P4C@@@@v�cŽ9Æ/I¡ÔæÊî-šÔ ™N;í´Ä.=a®¢‰Ìõës&Î;ÝÆ£�>êߪO=…–…m”®þ�wÞñO$?þøã¾ºråÊþU¢Ñõ啎ÿ¦›n ‡n—W�wæÌ™öÈ#�Øa‡f³fÍ2MBjSOVgSêÔ)ï›M�ºÔ–,Y›ë!k×ntË,pnóݤê–\ÛjçØ±‹|›&Mª¸%F’Sôçu°–wÐ5D—@È똼ö:Ô/™ Ï_õ´Š+æuØVí�0ʈî¥x‡!å¿‚*´¬ƒŠ2è³¼æšküÒÑc 3`ÀŸ Dõ²RQvePØÿýíÝwßõïýŽ_~ib?,= ¥_<ð@¿G“ç:Ÿ–Y9âˆ#¢‡$¶µ¤‹>‹O?ýÔ¿j©’m=á­ ú�Q@K·¤+eË–µnݺù]a ]�–§P°…M¢A0úÎè{2gèØð]Ñ߇úõëÛc�=fË–-K:�î}ÏÂÒ! 6E™,Ô‡~þýï‡j¿ÄLâ�ÛA" žˆfüxñÅ}3}véŠî[�_Çe LÒ÷_Ë^¨¼ùæ›éºIªS Å×_mZ.DÁê;Ûe@’:â  €@F2Ò°@@@@Øùô¤ø“O>é~ç�wÚQGeʜйsg;ï¼ó|½&£OÏkYMpÀ¦IOMÒj]xM¾õÖ[~²NmZµjeZ^“xšTM4k²0¬C¯ó©¨n÷Ýw÷“¢ê³^½z~’ØïÜÊ_ùË_L�šxU¹í¶Ûü{IÄ‹žD×òzú^ãUІ)¼  h­cŸi¢<Þ—Þ—+WÊ:uÊÉvñöÛÓ5IÔÍ™³ÒM öñ?!³Bbgš�ÿþwœ¯íÚµIš½ÙUi¹°J˜|V �£îŸø�&° £hâ<<9¯e2ÝKÊš¡]*@ïµTƒöëóÖ„¼ ”M¤K—.Úíï×ßýîw~;üš8q¢¿ôÒ½ª{Kרl%!£�B€P§àe—HWô} ÷ç„ ì ƒJqÓ92¤ë3¯:�QE÷µ–ªÉTBÃÛo¿�´„™9äÿ]Ößùé;£ï½®GYä-šÌ¿á†L™”Fvú¡k Kº?ô÷%”hÖ…è¶2\È_CÔ‡þŽ©hùŠà¬ -1¢‚ˆú ¯¯¼òŠß¼à‚ Yf¾ðªþÎ?ÿ|ÿ6Ý’%÷ÝwŸ¿žð·£xñâ>%d­�uÕªUCw¼"€‚ …€H € € € € €@~4–M éÚ§«SŸš<Ô¤³&•qá‰'žðÁšìÓDïõ×_Ÿtjµ{ýõ×ýd &qßxã Ÿ=Ú¿&MšäŸÀW?j§‰Ï�æ_“¥šìëÛ·¯ï[“¾Êh ¶*šðSÊuM8‡§ÃÃD°oà~…ó…×PŸéUËT„ÉZµÑXô>ºÌE˜ðÔ~+hŸ®WOÅkr\©åÇŽkÑeÔ6›rê©�}³ýëû\›GÇ�až;qü† ›Ýç9Ù:wÎ �HìÌÇFx:>‡dlý<�’é'ê:‹êòzÕç¨ÏJåä“Oεy˜|Oã_}õÕ>€'<¯1éÞ Kèi{µÕýƦ-¹rÅW$îWÝ«º—t­*={öôK,„~ òÔSOù}¹Y„s¨¡Æ’ÉnáÂ…¾¯üþŠÞ[áØÌqá…†ª´¯ÊÖ¢Œ*ú®*XAÇjÙ—Pô÷#LÖ뻬`‚~ø!iÒ^ÿwÜqG"“�6d§¿*úÎ+…©¢%j½e‡�¿¨Ô‡ÎûÌ3Ï$þÎ(û‚ÚÇ‹2É„€„¨oÞ‡LÊ0¡l*a<úÌt=áo‡¼ô·ãæ›o6-?sÜqÇ…nxE($�b.ª-ï|U…t2ºA@@@@(Z�Ù³g›Rµ×¬YÓê»4ïÑIÃøHÂÒ J©¯ö¹- ué5±§ Mþï¹çžñîü{-1~üxŸ–_O1ëç·RÖ­Ûd-ZüËM².v“¼gÛI'5ØêK{üñ¯]€ÉÇ.SÀ>Ö¯ß[Ýß®Ü�îãyóæù‰æråÊYƒ  ¹¹,^¼Øô½Ñ’Ê>¢û;…ãð å4Ù¯åS~keÓ¦M>ØB“ôʈ¡l™¾ãÑk_¹r¥÷V@†Ú+ÓI™2e¢MòÜÖß!}nZŽ¢J•*¶×^{% ÂÁʨ¡ ä–e"´ç@`ç €açù¬) € € € € €À&0tèLkÛöU÷ôy%÷dºž/YàΚµÂx<í�Ÿ6íJ7i\¡À}qà¶èÞ½»õéÓÇg.Ë¥lÛ3Ò{Ð2Í›7·–-[Ú7ß|ªyEø�d—£ì7r±\ € € € € €…)pì±uܲ-\6Š¥v啺§Õ –ôxõê Ö­[??´GiGðBa~H…Ü—² hy-EÒ¾}ûBî�îòxë­·|“Ë/¿<¯¦ìGØ ÈÀ°~h @@@@@`ÇX¸pµ5jôœ­X±Þîºë(»óÎ6ùÜ™g¾c}ûþè–¤ØÓ¾þúB+UŠçó�È € °Ó À°Ó„\ € € € € €Àöظq³B±bŬD‰bùÎÖŸïr € ° À°~( @@@@@@@�]M€T»Ú'Îõ"€ € € € € € € ° À°~( @@@@@@@�]M€†]íçz@@@@@@@Ø`Ø?†„ € € € € € € €À®&@îö‰s½ € € € € € € €ì€0ì€ CB@@@@@@@`W €aWûĹ^@@@@@@@v@�’;à˜ € € € € °S ¼ñÍ7~ü%Š·Ó>8åZV­[gïÿðCJ}Õ=ö°vûî›R?{éR1eJJ}£=÷´–uë¦Ô��3ÇÆÍ�›Rßʵm莉—á®ï9îñr|Ó¦Ve÷ÝãÕöÞ÷ßÛêõëSêÏhÙÒŠ+–T¿qÓ&{ûÛo“êôf�2e¬ãþû§Ô/Z¹Ò>ùñÇ”ú½+W¶#6L©Ÿ¼`��ž93¥~ÿZµl¿š5S꿞>Ý~Z´(¥þ¨}ö±š+¦Ô4~¼-Y½:¥¾ÓX¹Ò¥SêûŽe›·lIª/U¢„�vÐAIuz³bíZû`ìØ”ú=Ë—·¶Mš¤ÔÏ\²Ä¾˜:5¥¾qõêvP�:)õßÏžmæÍK©?´~}«_µjJý°É“mî²e)õ'ì·ŸU.W.¥~À˜1¶fÆ”ú3[µ²ä»ÀlýÆ�öîwߥ´­°ÛnÖ¾yó”ú+VØÐ‰SêëV©b‡7h�R?ÑÝߥ¹¨]ÛšîµWJû‘Ó¦Ù´ŸN©?ºqcÛ«B…”úÁãÆÙÒ5kRê»´ha»•*•RþDw”)YÒN9ðÀh•ß^æúäú�—nǸñÄËôÅ‹í«Ÿ~ŠWÛ¾5jX‹½÷N©3k–ý8~JýaαžóŒ—ÿMšdó—/�WÛIÍšYŲeSêû¹Ïu�û|ãå,wÄËZw¿ôw÷M¼Trýžèú�—ynŸ¹ñÄ‹î_ÝÇñ¢û]÷}¼è¾MÜ÷$^¾tŽ3œg¼ë¾ÕÝ÷0^>tß×åî{/§ºÏµ´û|£EÞüåß‚h}Yw¿tv÷M¼èïŒþÞÄ‹þ.éïS¼èþÕ}/ºßußÇË·îû1É}O⥵û»ZÇý}�—OÝ÷o¡ûÆK÷}-ï¾·ñòŽû;¿Áý½�ý{ âEÿ~èß‘xÑßý½‰ý]Òß§xiP­šR¯^¼ÚÆ»ÿ~pÿÆËÁî>Ø'Í}ð¹û»:Ëý}�—ãÜ¿ÇÕÜ¿Ëñ2Ðýû½Òý;/]Ýßù’îï}´èßý»/ú÷CÿŽÄËâU«ìã âÕV«R%kÓ¨QJýÔ… í›3R꛹ÿš»ãe”k;Å/Gº¾k»sÄË÷ïñÏîßåx9Ùýû½»ûw<^Þ=Ú6mÞì«Óý ˆ·ç=éÈÀ�N…:@@@@@@@(R�b[\)Ò3r2@@@@@@@@ &@†o@@@@@@@@ è`(zsΈ € € € € € € €1b ¼E@@@@@@@�¢ €¡èÍ9# € € € € € € €Ä`ˆ�ð@@@@@@@Š^€†¢7çŒ € € € € € € €  €!Â[@@@@@@@(zŠÞœ3"€ € € € € € € €@L dì=oØ´i“}üñÇ6nÜ8[³f�Õ¬YÓÎ;ï<+Q¢DŠÑœ9sìý÷ß÷m:uꔲŸŠW`Ó¦-¶qãf+S&õs-ŠQ÷ë7Ù,Xe]ºìc5jìžç)çÌYéîµ)î^ÛÃ:uj”g{ € € € € € € €;‹@±-®d°š´ïÑ£GÒ¡åË—7ýÔ©SÇN8á;î¸ãÒNø'”å›1cÆØ’%K¬E‹V¹rå,�*X³åË—ÛÉ'ŸlÇOê`õêÕÖ¾}{›={¶=úè£vÊ)§øý tÐõ}ôÑö¿ÿý/é˜]éÍ̙˭mÛÿúKþì³V«Ö~û¶Û†Úë¯O°nÝö³ûî;¦À$£GÏ·obÅ‹³·ßîj*”ɨח_α[oêîÇÒÖ¯ßIífÏ^a>ø¥}õÕ\ûâ‹9~_³fÕìÐC÷²Ë.;ÈŽ<²v¢ýã�mï¼3)ñ>¯�Š˸ö§çÕ,±ÿ°ÃþÏFŽœkÆõ°6möNÔgÚøøãéî^ëãݽ–üýËt õ € € € € € € €ÀÎ Pà šÌÿôÓO3^ã<`{ï½·=ÿüóÖ±cÇŒí²ÝqÝu×ùó <Ø d{\AÚ=üðÃ>xAã¿ð }ÐÄ�?þh¥J•2½.X°Àä@IX·n“M�ºÔWj;”yóVùúùóW…ª½î·_Uûæ›y¶bÅz”0Ùzölž±Ÿ—^úÁÝ/3Üçw@R›>}Æ» …|a‡‚Æ�[ätÜŸþt„Ýyg+]º„Mž¼Ä÷Úæõª¾( € € € € € € €ù(pCôT³fÍ2%rXºt©-Z´Èg!xá…LõÊd0dÈŸ�!zÌŽ¼ýÞ{ïùá½öÚkîiü#“†Ú¿[¿~½5iÒ$©ž7æVÊ›2/¨„ì Ú¾õÖÖvÉ%-²Z"Aí3•Ýv+é–ñhnO?=ÚþóŸ±Ö®Ýè÷«Ÿh�ƒ²-tïÞÏw¯ Ï>ÛÞöÝ·ªËRÌ´4C¯^Ÿ[ïÞ£ìoûÜew(m·ÜÒÚþüç#í÷¿o™4$e“¸óÎaÖºu-{ñÅ““ö•,Y<é=o@@@@@@@²(”†ÚµsRî+c�JÛ¶míæ›o¶ÓO?ÝhíÚµsiòGÚ!‡’•~úé'›1c†-\¸ÐÖ­[gÕ«W·V­ZYÕªUí´¡6«Vå<½¯¥+¦OŸžØ_·n]+V¬˜mذÁgGÐþŸþÙ×i\‡v˜•)“y©�DGncãÆ�~yˆQ£Fùê²eË&εçž{Z¹rå¬^½z¶víZ«X±bôÐ\·×¬YcãÇ�wOø�ó}4mÚÔš5k–ö˜+VØâÅ‹ý¾pmi¦©Ôb ?ý´Ôy-w¦«�é&gZΙîåL˦9B×¼Ù�ëgŸ!AÛuê”wc«æ—^ˆ þgÍZî®åg[¹rƒ5hPÑ·-S¦„oªƒ:u*8{sæ9uÚ±×^»›öUª”Ýç?oô}�9 ~ø“:ˆJ„vƒMótíÇ[ÇWo޼Ů½ö#¿Ý¥Ë>öÖ[]-l ~ž|òD„¡¥'ôsþùû[Íš{¤^(PC¥råݬiÓä{UFÊB‘ŸÏÀwæ~mØ Ïb‘�³Ð�³œ[Ò¢¦?GØŸÍëš5ýç£~Ê•+åÆWÅFÙK@@@@@@@`{ JCº Øm·ÝìÍ7ß´:¸§ò?sO³ßbüq¢éµ×^ëžvï�xÝPÛ^½zù „Í›7û �°ÿ‚ .›þUð°ÿþûÛĉ“öé�‚"üqëÖ­[ʾx… <ðÀDuË–¿>y¯k9ãŒ3üÏðáÃí“O>ñ�‰Æ6 䲜ç—�ˆ6éÒ¥‹)KE�5¢Õ~É�›nºÉ×)�¡råÊIûs{síµƒ}�tm”M W¯c}pAØ?lØ,—a sË ˜õzUûûï?6Q5eÊR»è¢÷Üg9+Q§ -™pß}ÇØ5×´2Mž×¯ÿŒß¿nÝM~ ½yôÑ‘v÷ÝÃÝÏQvÇmüþ‚þ:âˆÚ>È`Ö¬.a¢]}õ¯ŸQèó•WÆúMe}A C‡ÎtA4s}½B}8&¼^wÝ!ö÷¿�tŸ×j÷ù|—ïñæ÷3ç}ÿý©îíçDV„*ÿúá‡gÛI'5HªËôfРŸÜ½6À�=ÚF/¼Ð!%#Ú†m@@@@@@@`{ l³]˜2\wÝu>€AËHÌ›7Ï=�¿—¿f-ÃP¾|y;í´Ó¬qãÆ¦lcÆŒ±—_~Ùxà´på•Wú †+®¸Â^yå÷Tý kß¾}R@ƒŽSY½zµ5lØ0±_� øôÓOݲÝÝRûÚÁìÛfú¥@ˆË.»Ì¨Í¹çžk{챇oÞ Av“ÈѾµÜÄ)§œâ«n¸áŸ]bĈþµï’K.±DÙªíõë7û€‚ÓNkìL«8Ó’Ît�;ßXgú…s«`W^™c %N>ù Ÿ© ]»zn’¼¾mÚ´ÅF�šo}ûþh neæÌå¶Ï>Ïù·MšT±3ÏÜ×/»0|øl·<Èt—ecª`í·å«²;\vÙA.°à3·|Ø”†¥K×™–xPéÞý×,&üìëÚ´ÙÛš7¯æ·ÓýR¦)à⇥k’k]~>ƒhGZ¶B¥S§F>‹…‚”É¡}û×]�+­nÝ Ñæ)ÛýûOv÷Z__à ‡ú¬#FÌòŸ½ö)PeÀ€3SŽ£@@@@@@ØQ¶iƒ.240mÚ´Dý÷ÞkO=õ”{>y‡~¸›”¾Ú4Ážyæ›0a‚FPv‚N8!ÅïË/¿´Zµj%Õßzë­vÖYg¹ ù¾>ûCt,I y£%'ž{î¹DÃ#�<’oºö¹Õ) âª«®òMúôécçœsŽßîÑ£‡ÝsÏ=V­Z5{ï½÷üÒ‡zh¢+e\P †J‰¿.Ã�h�ËÆ½÷íLOLÉ.pøáµœé`g:9ÀðñÇÓ}ð‚ô”4#ÁôéË�×´Ä™n¸aˆßîØ±¡Ëªqš_š ì>|– b˜ÞÉk·nûù[(0!ºŒÃ;ïädáhÑbO;à€=ã™4i‰ßnÜ8ïŒ VòmÇŽÍC~>ƒÄàÜFÏžÍí‘GÚù%?T¿råz·üÅ«> ä‰'¾±‡>.Ú…–¥  € € € € € € €;¢@ñm=¨h悟Îy ^çÔÒ ^Ø´i“{Ò|ª{â˜[à-Ó’*ßÿ½ÍöW^X»v­i)e|xýõ×­T©R¾‹tËKdÛwAÚ)Ó¬Y³|0‚–žˆezèÔ©“¯;6g¹ƒ°ÿâ‹/¶)S¦øŸ rê>^«W/ç”IAOï+‹‚–YX´h�oòý÷ CSç’óÑ/]º6eÉej¸øâ¾íŠë}F½yôÑã“‚T§ŒùË‘Ú,²¢ „Ö­kùó…l áäÊ6¡Æê塲÷ÞåCUÆ×=÷,ç÷�—ÿ†ü|Ñ\qÅA‰àÕï±Gi»é¦Ã|“O>™mš²=bÄl¿ô„/Î8cߤýU«–õYTY�€Œ¤Îxƒ € € € € € €lC�äôÛàD! A]G'ä׬YcwÝu—)»‚–†ˆ-1‘Ÿ2sæL7á{“ZHwœ%вLš4ÉŸNÁÊì/ ,ðUÓ§ç>9?.·÷kÖlt¦ÃœéhŸ]!Þvýú_ ”MAeÁ‚Õn|OùIî#�¬mú9öغn鎜£'OÎÉ\P¾|i· G•œÊà÷E`_|1Ç^xá;@ÑÆ�wÖ¬~I דּš&�²fÍ=üûÌ‘´3öfÙ²u¾&dbˆíÎõm~>ƒ\;r;›7ÏÉ ²Gdjö+HCŸe¼è3VQf  € € € € € € °£ ló†h&…zõêy‡U«VÙ1ÇãÒã�òïÏ>ûlkÑ¢…iÿÊ•+ýÒùÓ9Ú´iã!Ê—/oÝ»wwË 4µš5kÚðáíwïÞùé®PÚ*û‚Š2MD—ˆˆw–‹ˆ×ç÷ýªUœé+~É{öÙM�iugZÁ/Gpå•9K „~+V,c}ÔÍ®½ö#—±b‘_b@Ë ¨h™�Þ½O´Ã«ióæ­òuuêä/„?hþR¦�Ë/ÿÐgøòË9>#ÛoþèϨàŒZµrÂÂÒS¦äd„út¯Ó§/óÕÍ›WK·;c]~?ƒŒý²£\¹œ¯§²`lÙb‰ ’øq ÜPQö‡Ü–ˆ(H@Fü\¼G@@@@@@¶•À6`èÓ§�»&ñëÖ­ë·T àèuŸ}öI\ßäÉ“Ûé66oÞœR­s(‹ÃÑGmýû÷·Š+&ÚhI‰íQµ¶mÛÖ^{íµm>„áÃgùàeJ5êBgZ9qÎ�E!QñËÆñÇ×sË \bz‚ÿë¯çÚÿþ7Ëž}v´�9×®¾z°}õÕùV§NÎ’ 3gîXOïki„®]›ØÛoO´ÿþwœ`xñÅ1þÊÎ?ÿø¥Z`;‰Á°� € € € € € €P Ð´<„ Î9ç»å–[ü°þùÏZÇŽC¬\9';À AƒlõêÕ‰ú3fØM7Ý”xÝËO|ðÁÑj¿½çž{ú×?üТFŒa½zõJi_Gq„5kÖÌg†¸è¢‹lñâÅI§�;w®]uÕUn‡�’ê}ôQ+Y²¤ÿYºtiÒ¾ÜÞT®¼›ß=hÐOÎtC¢éŒË�é'‰÷a㡇¾´Ûnš2á=wîÊÐÄJ•*aåÊ•²sÏmæë”•!,)¡ e+x÷ÝInÉ�äå)d±Ñ¸qc­-[¶Ì¢ur“¸,¥�ñzëÖ­ŸßyñÅ-l÷ÝK%7tït�=v¼¯ôÑ‘vóÍŸÚúõ›’Ú)“Ãi§½å뮸â`·GÎ}•Ô(—7ùý ¢]é¢E½z}î«.¾ø€è®”í#ލíîµjÞᢋÞw÷Zrƒ>Ó«®äîµi)ÇR� € € € € € €ì(% c uêÔq“ÁëmÁ‚)Ý=ôÐCvñÅ'ÕwîÜÙn¼ñFß~÷Ýw·öíÛ›&ôÇŒÉY ©ñ/oÔæùçŸwK<ë–=랦¯n_~ù¥?¦{÷î~éˆ7ÞxÃà eF�m³fåd%H×ß¶®SÆn(�áÝwßµúõë[»ví¬R¥Jî ÿ‘6nÜ8?„:$ EB‰n‡ºL¯�;ïãL‡8ÓÕnÿïδ�3]™ÈJ?nÕª vÿý_øŸO¬oÍ›W³Ÿ~Zæ‚O¦û¦½zk{핳ÌÂÃç|'ûÌMš³¾}û&Àpï½÷ú}+V¬ð}kLçž{®ÝsÏ=¾¾X±bIýeó¦xñTžP^ÕOØ.Q¢DR·­[·¶)S¦˜Æ®q)�ᥗ^òÁ ²ºâŠ+ì ƒJ:&:ÎèvR£4o´ DÿþgúŒÚýá‡?ùà…6möv¦�ý¥Kÿ:>MfwêÔÈ×<Íe'øÚO~+À�w¶±?üá0¿O¿jÖÜÃ~üñRŸ‰AûûöýÑþýïï}ðBëÖµìòËs®!J{ñâ9öá5tûìw]àÔjßöÕW»¸`š=ÇE7.»ì›4i‰¯züñܽ¹gtwbûŽ;>³Ï>›åßß~ûv õûâ[¶˜ 0Ùžzj”iì 䌣I“*¶ï¾U¬sçFîg«U+yLß}·À~ø+1b¶M�ºÔwÛ°a%«_¿¢|=ëÒe;à€ôã‹�!¿ïgÌXn?ý´ÌêÕ«àÏ—íñšÈoßþuÛ¼Ù]t¤”/_Úúõ;Ã×Ì™³Òý»Ó?²×¬L™V½z9÷7¢Žuë¶Ÿ©}º¢@Ž®]ß²+ÖûÝ}úœâþ Ù=]ÓDÝêÕìé§G{Ç‘#çÚ¬Y+|ÿM›VµŽÚyç5·}öÙº¿?ë×o²ßýn ?çìŸï•Ä`ÙH,[¶Î¾ýv�ûï‘ÒvðÁ[è˜W·Ý6Ô^}‚¿ÿî»ï˜Ä8Ø@@@@@@�ü 8€aõêÕöé§Ÿ¦=cß¾}íŽ;î°_|Ñ.¼ð´m²­üè£�Á W\q…{ì±6wî\79V/Û.vùvÊZ‚ºvíê&/»ØÆ�·‹anŸç�?þè&hØòåËóüÌ®»î:ÿ þöÎܪñû㯢Yó< •2$I¦%Q"33Ï3eú™‡¤I‰$Dh�ÊÔ šçyÐ\ªÿú¬ãÝwŸ}Ϲ÷œÛ½)ÖzžsöÞ_ûÝûìó®ïZëóÏE|R¶å­€!(õûô™€�²…ö˜1 ÜYg p>ØÔA*ˈsâÀ³ÏŽw�;×¶o¿=ÑÝu×·òiâî¿ÿؔۅ¬IÀ ¨Èù–(Q0hBÁ×_Ï ŽÃ;Sn¼q¸ûê«v®AƒŠá,Ýÿæ›¹Š—Ïèߪ»êªÃýa¦-$“Ž?  €(‰„qòëîÝ›¹ë¯?"S}Køç€Àsüñ}äÞ¨woätDÙµ·hÑ:�'‹¯ËiVÏ0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0þF dž0‚óæÍ«å=¤Â<þøãÅr§N�\Æ ]½zõÂÅÓÚGá�<òÈ#b!}[Zu­p �±cÇêNóæÍÝ€þQX²ºžƒv›7ovx×01ò �Ö­k»›n:R•ÜXïOœ¸Ô=ôÐhׯßwç�߸‹.ªçªU+ž°ûGãn¾ù( cS(.ÿ©§~ˆ;NvðÑGÓ4Ë>ø`ª[¾|ƒƒÈúòä…çŸo®ž8 ŒÛ°a‹›6-FDÀ›CX¾ürv@^èÚµ¡kÓ¦Žž'á#fÍZíÆ�[¤ŠÉ“—…«íû{í•OÈK7ˆ–5®jÕÿé˜/¾Æ.œøgjÞ¼+µÌªU›Ü¯¿.Õó†Ôq }Ýôé—»råŠÄ�WïÞ“ôØcÿÆ¿$%0L›¶Ò5mÚ[Ëãíâµ×ZÊoYEW¨ÐžŽþ˜3?[�öß¿”Ûwßø{•ü+6jS3fÏÎð¦‚÷‚dd„¬úN–W¥ÊޚŶ^½²B8¨&ÏêWÕƒÃèÑ $HÆ\[·n‹óx|®ZçO˜°Xæçrwà�e2uqíµ1â\Æ•ÄãC»¸9S²dAwÌ1UÝ�!m”°ÇˆL %HX¸p­?žp ëäyU<Ûxâ`œ“&-“gsAùm)+Ïæ’ ZÎHâL™²Lî½µ|êÖ-ë7B( Baì¹çš—Q+¶Çø6oÞ¦aI • Œañâõzý¸Ž„T� ƒ§¼šÄ ^À–2„ÚÃ=âÖ|Q™K±sã>`^שSZÇø{‡ûjÓ¦­¾¥¨ËŸ?Ÿ<–kH•bÅ ¸#ލ(„—Ø\ 8^N8o�á9HH‰R¥b䣵k7K;+ä¼Ö))|h§~ýòqãM¥½Š‹*¹Åc¬�‡¾ å@²á<À„ð-E‹fö~’Îy†š·]CÀ0 CÀ0 CÀ0 CÀ0 CÀ0 Càß…€(ñs$üñ�Êõ“¨�V­Ziž„’È”ýÙgŸmåwPß·#¡ ¶‹"<(¿÷Þ{g*CÙk®¹&(“j[– hK”úÛ¯¸âŠíáö}ƒ¿ÿþûvñ”õc¯ÛÇ�ç‹é¶[·nZNB[loÓ¦M¦:ô±MºGåË/¿Ü^µjÕLåécøðáAñtÆTŠì$çD_^F��p<ç�wÞvQûbºýôÓOuÜâÍa»(§··lÙ28®_VÆÛ㾞B|Ѷ¾úê« ñØ iÇ{¬¦ ¡#è/܆ßçÚzÉí¹áÛ�nSÅ$ÕñÐþ믿7?ýù�áûï¿ ÁÏÁ:lçšør~{ÿý÷gšƒBØ~ýõ×g*KÛ}ôQÐ6;áû¦W¯^™ÆÄ}½/Ä‹Æö«¯¾:SûŒ‰y'¤¥¸>ÒÁ…ŠO>ùdÐvt~Æ5œÆÁ–-[åÜž–vÝþÞ{Sâj–/ÿ¬¦KèÝRN”šA™ÿû¿Ï4½_¿Ér½ û® È÷;sæ¬Ö<ú«ýíO<ñ½7jô¶/·õãyî¹ñqéY´m;HÛlÝz@VÅÒÊÆœèsúéý·¯\¹1h¯yó~ ËQwР?‚rYí̛dz:ÖŸ( ãŠþñÇŠ /.ãïƒOì«ùÚ!.[ˆšÞ°aOMoÙò==¾ë®oâÊq0zôü �‘#çeÊÏisìž{¾ ÚöçÞR&,ŒÅÏ©p¹óΨs(\–}æåWÄæc¸<û: Öââ‰CÇÀüJ$µk¿¢ù&düúétMc®vëöu¦s¸öÚÏ·¯Y³i;Ûh¿ÌÅÍ›ãÏ‹~?ûl†¼Äî­pæÔ¢Ekã†Æu£ ÷Lýú¯gê£gÏ_ƒòâ#S¾o¿k×/µ\xŽù<¿­[÷µíásO¥=]ï»ï»`ìÙGžµü†Åß?`ÿÑG™ï‡tÎ3®#;0 CÀ0 CÀ0 CÀ0 CÀ0 CÀ0þEd˜r‹v1·DðqBpÐæN<1Þ ˜0gœq†æÝpà j%>jÔ('ÊQ‰O>XÜ0wvü±æ_z饮wïÞb©J<ëãƒÐMšÄ¬ŸÓi+|nûXÍ®Ñ$QÚûx«¦·nÝÚ�uÖYjýþꫯJ¼ùßÝ©§žªç…·…°¼ôÒKzH¸ ,Òñ*!D÷â‹/:Qð;QìÅ ¤í’6|–/_.–ÝŸi½ñãÇ‹ ôÔ[ANÆtô÷N³fÍô~øá=7pD¼÷,ð7n¬i-Z´pB›&רÌ�3µÌ©§î¯í¿ü²T-éñTàeŸ}⟛>=7·ÞB4ć÷|ѱcÌ+ÎE¤á8‡{î9F¬ú3\àéÁÃE“&Þ…vtœ·Þúµ{úéX¨®=Vøx© ¬ÈŒ«25�Å~ãÆ±ûï­Zí¯žž~¼àý›<›WËÜé ÷]lì\§ã�ï£Þ“Ñ©ÓÁÒ�"xéÕk’{ûíÓ2õ“Ns•a5NÐÃnh¨aNF�š§c$¯sçOå= þGaî<¸‡ ›%Ï”òœùDû¬\¹˜;ôÐòòüÚO¯/8´k—áÙ oHŒçÔ{ÄÑGWUÏx“àÅc›:õ2õ ‘J{Úh‚¯N�†¨gÆqÍ5 ÔãňsôúÑ^<kTR9Ïh;6 CÀ0 CÀ0 �ݼ²†½kþS#gýϯ»ÂXþ) ¬_CÀ0 CÀ0 �]�œ’1’y`�pÛ~øa±8tj­�5¶q‰Xú‹òÓ'ëËyêð;vl�'DMëß¿�ÆNºm…-Éñ~0`À€íâ~_Û¤-ä‚ .оðœ¼(x¯ O=õT�å­ß±*ÿî»xË˶mÛj[—]vYP^î�ç‰ûî»/HgÏ={öëï÷4=ݱÄ59xî¹çt,aϾˆ4/ao&"kŸ>}|ñíÞÛ×IÈÛG޹}Ó¦˜5ºÇ1(œ`'Ùõ¤h*|“ôÍ„4à“‚m^Ì� ñ;Ùa’îx.¹ä’LsÇw ÞôçÅÏÁÃ?|»„vðÉz-¹¦`$¡Y‚t¼m�Æayä‘G4�ùìïÛð}C_Ìa/Þ"hKÂ\øä`Þ¼óÎ;A;ò}{ß¾}·KØMOßÞ)$¼‰~$„‹OÞ¡mÇŽŸÈ¹<*X½&ØÅ7å­ÄçÎýsûO?-Ör¤áàöÛGèñk¯Å°÷Öò‰<0Ð6} ˜�»(œ5-ê1€`¡¶Ü¦þe—}º]ØrßÍÛ.nýã*GB¨bÔ–MZ†€!`†€!`»9ñfõòæš…¿ãƒeöàn¿ývµ¾Å·XÿfÄyÆÓ^Dùèä=®«2eʨõ?‰X˜g';Òð°P¢D,nw‘"E$Vöz±¬î£ÝÞxã�qÝcõþùçk ¢Ò±cG'Ê÷¸d¼7 Ó§OÒ…ä ëB p·Ýv[�ÎÖë]t‘“�;4–¸F³9‡z~ Ø]wÝ%q¿3¬�åÏK0F Y�©¥F�9 …!ÊM\�4wÉí¹‘ê9%Ã$Ýñx<¹WDÉ×=xŸrÊ)qià‘¡~ýúA:×’ûa¾ËŸOÝ8p nå�³X0×Ò}ÿuÝu×é}‹—êDåÁtÅŠ ’ëÕ«§÷2 sçÎ Ò}æ>L~/ùóçwBìÑgiéââÛ‚‡ÞW´õ†âˤ³Å›Â[oÅîë_ùdº{ýõ_Ü¥—~*–ì±ç^2Ž:*fiOýûOÕžð`P¡BQÝç:xì{÷Žÿ½™6-v¯ä¦Çˆ�c‰ðÒµ¸O4ßV­Ú$Ïæ™:Ö»îj7'™o·ÝÖHóÞ?vnôì9QÓ~ø8W­Z¼·‹5J¸×^k©ù;ò…æzxÌÌS„9‡×‡pžŸëx‹ð2jÔ|yXx-ñélñîÁuB¼' =øûëÖ[��;çV¤È^âᨦæâ$UÙsÏ|zßRÏ ÜŸC‡ÎPoÜCÈ´i™½bhFŠ_þš_}õáê-"\íºëŽ�gmõÁ}•Ü:Ïh»vl†€!`†€!`;<-àùÏ”xªÄ{¥÷Ë–µ—>ø@=[Š!“NŒSÄã×i}–.]ší‰‰á˜;æ˜cÔ,WÃë>xל0a‚ü¿~]×—žyæ™lÛËÍxòÄ#(ŸÓNÛ1Ï�¹9.kË0 CÀ0 CàŸC WBHø áÓvq¦À§û°3fÌP·õ>ÝoyaF„uì“’nw¤­¢Ec Špãa¢�QÎ÷cóý†óíCÈ@Ä;A�=mÚ4ÝoÚ´i ô2C;¹=–PÓq»„‡@ +ø�á¾ÖÃD„Âø�á:»Â¾¿F9™g‰æFªç” “tǹ‡{J<-ˆkóJräÈ#�Ô?™Â�Ou8¢Ä¬¦„þÏŸ?_”Ò4РAƒLí~ƒtþ(3 E‘�0>pÞ¸qcP´}ûöî�×ü÷ˆÂýU?í‚…¹æ%]\|½ÜÜ¢Ü'òüóÍ]Ó¦Ù‡ièÖ­±º§ïÖm„Ö»ÿþc]¡BY?Jûö�¢eÛ·¯W¶uëÚê.Ÿb±�)dÊÜ9s®”� …˜°PIÑ€»þ¥Ê×°»ý:uʸï¾k¯a FŒ˜ëE@]ñÚ c Æ_Ìù]\É’5-»/ˆO>9V®‰ÊnÝ 3‘(/¯Ò dDåÆ�t÷ÝwL\²xÇÐã /¬—Ñ�° œ[�Í4\C€,\OÒÄ~M™SR7k¶OJ-ˆÇ-YÁ�'\ñðÃ+ê¡WòC~ùᇅš–›a/Â}&Û‡à‚$šÅ‹ÇòÖ­ÛTÿã�A„9_¥Ê Aºß�tƒÌžý§OÊr[®\Íß´)ƒ,•e…¿3¿ývž»ãŽ–'v_Dëˆ×‹hRZÇ„¶@•Â…÷ÔtBÄLŸ¾JžµÏÅhYœÓóôõmk†€!`†€!`;Œ… .D…µ¿ÎÍË‹c1¾Ó5aa ñ¤Špží†€!`†€!`ÿ$YkÝRÙøñãÅêr±Xœ¦^¨öì³ÏºG}4®,Ê^ÔÅmZ\^ø ÙIn¶E_ Æ”?ìg56XÓ©HØó„/ïÇ\¡BŸ”p›ÛcI؉$J˜Í*[¶lÂ"Þº=<ž„w±D�sn̳Ü8µtÇsÒI')¯&ü¡íÕ«—~  $ŒIBÂI¢±BJà�¨'ø±@fH$Þ+ ÌüT$Ñ<ÇóD¼ŒÐ_øÏ:y>Eã+ú±üSשwïÉî ëi>þøñb„�ìÎûØc«ªµ9„¬¨;wÎð|‘¨î_mBÊ�šÅ6jñïëôí;9��<,Ú6¬¤_vΜ?Eùú�·ùê…oQ%è~û•T+w_ÂË/þ¨ÞP3ŽTÎùŠ+†ã?þøê:Æš5K¹²e «7Úý'äæ›�Ònã©_¿œnÃc™8q©’=Hk×¬ÂqxÜxrhÓ&öl¯[7ö<ôäÊî¨Ì˜ó!!‘ðZ¬lÙÄå‹�y½‘�!ZNBÍ‚Çμ$“Dyx_@À‚y�L˜¿©H¢>²«¾÷k×.­^jÕ*¥:zôø!)©!»vÃùþ[\£Ÿ®Úø³7dÈ7hÐ ÐÏq=~øál‡…«BÏèÇ„qïÓ£�xâžr*… %ù­îÊ+¯T„ŒŸð,¸#dÜÇ{¬†ÁÈ .9S´^�ãÜ 7|©É/¿ÜBÛ‡F‹dyÜ­[#qkØß¡D‡Ä�• >;P–gU–Oܺu«~´¡4¾ð†Ðµëð€¼Ð¿ÿYi“èŽÐÛ·ßêI¶½ã%¹í¶FîÏ?oÈôY¿þÆ@ùüÙg3µì–-ÛÜoü"ŒÿÌ- _á°>Ì^V¬ÈZI^²dÌ"¼jÕ˜’Ü·—hëà�’•'m¯½b?+á°ÉÊæeúÖ­Û�1dH›L¸s-ÆŒé C@ií½}tU±ÂˆaÃ\ÉJpÿA%;A™�Œ™aù‘UOš€d0yrfo(>ìáB¼Ô¯ Càç�O�n‹Ý+HZ¿>#´C�˜Ç;PZ{øôÓò�õ\ÍéPÌ­o¯ûì³�’>ùä“ÀC+ùx…X@ØØË/¿ÜWÑmt=ê�7ÞòY"$*É +òe²3î¢LX /xà�IÉ ”ÅsÅ;ï¼®·�§à(y�ÚáÙ¯W…+=÷ÜsJp§Ù¾!`†€!`†@Þ#�ë†Ì !ÖãHóæÍÝĉu×duëÖU’@§N�2¹#TVÛaÒƒVLð•›mÑ?•-cÆ=„^ª7oÎP®àâÿ‰'žkç—vÊX/nÖü¤›nºÉ­_ŸáÊškÖ½{w=-®Õ®&üÑBpy•ÜžÑöÓ=Nw<íÚµÅëkê®.Üל9sô°X±Ì»K—.…zFÌvþÃ:Gºuë¦[¾hÁ“,v/xk¸ãŽ;ô>÷iN„y|ä‘G&¼‡½õ�wý—..~<ÌK\þñÁåbª‚BûÜsʼþA £Gw�?×1RUªm¤[×þX÷#ç�W'au¼´m{ æá…Ù´é/YÔøÔtÐëòú9ÞªéþkÚ´•B¼ˆÍ}\ñûðÝ»�//ŠÛÇqï aÁü©§Æ ÷æÍk„³î{²ŠtÂTx�œ@‹DÖåÞÂEúæÍñãöõwÆvĈ9:>È'�T#a—GY9ð°Ð¿Ì"ÿK/µÐò`öÙäßçÿøãß‹—¡—e!#v_ú¼DÛSOÝO“ßzëW!Èe� M\uUfËÆpá…1 7Ýô•<›3ˆ„Å`#�:¬[¾.¾ø ݿムâ¢sQ�Î×®Y³~š1áÉ5d@&¸öÚ/Ä}g¼ëN­”‹_�W‘çKYõ~Ñ©Ó�L„Âb\yå0y†ÌÊq¯ž€ùƒp+a)\8ƒÀîcÛ¶íb-4QÂ÷ÄæA¸NVí…Ë…÷Ûµ‹ÝÓýúM‘gmÉ÷Ò¨QeÅ"\Ïö CÀ0 CÀ0 Càß�@ÅŠ3y`=¥?k39á-“P›é*óÓE/Q!¬'ÞsO;í4ÇX9ä ;ù¢[·.Ò�ò~ÍÐ×e­Ê !' BxÁˆ­H‘"î»ï¾‹ q�až@ 5Á:Ô]wÝ%k21£ÖHÁò@XHóH±\tÑEAêÓëªâºÂËUW]åXãJ&gžy¦®ûFó¹6 ˜„Û£œ7ŠÖ±cCÀ0 CÀ0 �¼C WBHD‡‡bÆ+ J,û[¶léÆŽëpQöúë¯k:¬VÜÙã ·i¼Ìz/¸,ËN°ÀÏ­¶|_¸·'|l\¸�/psË×[¦‡ãÐùz©ny‘gÌ-Z´Ð—y^܉µFÌ7¬ÐyY†Ä€äõXü˜|ðAeÓÿÁ¬cÃ;D¯^½´D”T®‡oogmÁð•W^QÂǤI“ôÏÅ÷߯1ûˆ£—ÛscGÎ+ݹJHþøA(`~@Öøé§ŸÆ7(£‚RŸ¸‰ 6Kó?ÅzÌ{=‘�:Ìën¸AÉ)°êaÇãþ�ùMˆ„¶¼AMHã ÷2÷}uÔQÂ׆öùÈŸs$]\ü0ÂD�ð¾ÏO¶…€BA!æ™$,Z @~yü_àI a¡ š¦%k×.-±+$­�áÕWv~ø»#<@Á‚ùµ,Êä³Î ûõë—“ð!%ÝèÑó㈃�#îcå)ȹƒÖÝ\NYËãÓ=z4Ótm8‹/ê2vÆqè¡oªÂ Þ@¢ªÇ[M“Q|ðJ®˜:u¹<ÓŽSωê�†b÷¼ó‰wš bW›6]éÒ…D±|Z²jIÓ{÷ž¬y(ö½Wˆhá=öp²r�»÷ÞïÔãÅUW®Eð°qç�M܃ŽÒkÂu9üð r/–p“&-‹Ã2Úf¢ãOÜGîåªjuôÑï(Žj¼‡‹Du|°©ÎW<€c‹û*6žsúé5åÙ#FPÿ’Kê;0Xö7lØSËC&ùé§%™ú¹þú#”ärù培7ßüU»3fA¢aäzsûõ×[Ê{@/=?7àS²dAç¢ÀãDøÜÒ!8 I0Áì!h4iRÅ=ôPSõºòÊ+?‰+ÑÏÅèxñÀTR¿æé½“¨¯ìÚKT‡þo¸¡¡’MN:©Ÿ’¥ð”Âõ!„ Ò½{3yÖ&ªmi†€!`†€!`†€!°»#Àº avY{a½/‘@"xä‘GáX'=á„Ûá4Ö}XCóž15!£²=z¨Q ä êµnÝZþ¨UX·emR†1añ!„W¯^NV´‰±¾A€u`Ö¥ðÊúFSxv“!¢†TôËZ“ ¬•-^¼X×miÓ�¬YWKï¦sya­ê¡‡ÒÃo¾ùF=Šú¼Y³fù]Û†€!`†€!`ì$òåU?Å‹wC† QV-/ä0zaÀbÝ=}út}楒ôž={*y-^=4#=.Ë¿ �7�¶Âõ“)gyqæ¥ø–[nÑn`Ø¢÷ä^ÚÏ>ûì`ùóÇ”†á¶}f¢4òˆw7nÜ8Å¢Dâ¯�Êdò‘tÇ¢•’|ùóõã ã…ÿçŸÖ?Œå¸'/ðòþÁñJ^^~n+•}_ÏoÃu|šß’ç÷£cçZ»AYÏ8™g^r{nøvmýý6Q™tÆÃ=ÀŸÁ%K–èŸDþ<~ýõ×ê½£OŸ>#1Úd¼„àúÏ“`�3× .WO"ü9FÀ wxü…ÜÀ–±z Ÿ“ŸG>�­Ï÷Û (›¢>™KÌ)ÚåÏ*¡°Åtpñý†ÇÞ÷ùɶѲxHô™7oMœ7 ß^¾|©k½R’�HÇŽ–ò¾½ð¶iÓjBî(¢I„3(Z´€,´•çáaê-‚Œ_~Yª _ïõ ýiÓ.We¸oë�7Zº»ï>:ð*0cÆ*­ã­êQä~ýõîºëŽðU²Ü¢l4èl±)§åPrC^À"½W¯Ó‚1‡±!ï½÷ÎÔqÓïûïÿ¦c—IÔ)D |þù¬ û“O¦Kø”é$HLaÏ„à@¼w‹dÕÚ´‰yá@©Œg /}•zWÁÛçhb†€!`†€!`ÿ-¹‰�Ñ£GKhÁQBä” ÖPX? ët„Qð‚çM¼ÜþÇð–‰ñÖ˜1câšÛo¿ýt½ˆDÖjX³ÅÈÁølÀ€êySä ì6mÚøCõ‗…¬$\ϯŸ}öYP<ºTýä“OêšWP ›Œg j¼ð âyïê 4!‹›5k¦ÇQ/ „Óðmx6 08ë߿Ў톀!`†€!`ä=ÿ(�!ïOÏz0þÝ„ ݺuûwŸ¬��!`†€!`†€!`†€!`»üñ‡6l˜„û»$¡ÁMõë×� /áïáÓË ÃСCÕkçYg�•гd òÂÉ� È}÷Ý'¡ïÕ}¾ðº&4,]ºTÄdƒœG}T‰ ‰<"à¥�Hv†èøî¼óNõê •|A¸ ŒoV¼—6mÚ4¨&0`H„ga/F`ðHØÖ0 CÀ0 ��‡@fŸÏ;¯oëÉ0 CÀ0 CÀ0 CÀ0 CÀ0 �3gÎTëÿ5j8Â.¬]»6îüP°G…0¯y!„Æ%$n“&M܈#Ü–-[⺠{ / a~‡âÊ{ò‰×\sMy/„ ¨T©’ûßÿþ§žV­"¼e¼Ç Æ´uëVm7êA4Ü>êÕ«§åüÞð–[«V­¸a ™j!&¼ßþ'NÚNÒ0 CÀ0 CÀ0 CÀ0 �Ý”ñž@h†Ã;LÉ á� œÆñÇï:è <=#BEÐrøá‡»š5kJ¸Êù2AXQš/_†ÍãnÞ¼¹†›—c¿sçÎqI„*½òÊ+ÕcC§N�ô|‹-ê&MšWŽP>L*aPÃrî¹çºÖ­[kxªÀ Â| Å~ÿýwÙãÒK/•ðŒÕ$tæR7a„ ¡ J•*nÒö CÀ0 CÀ0v3ŒÀ°›]0®!Fà�PW~á?–á|Û7 CÀ0 CÀ0 CÀ0 CÀøç ”B¢p uëÖuýúõÛ©DáÏ'*mÛ¶u‰B”^vÙe™ -[¶t� Ä Â2$“Ç<È"„ž¼Þ�rÁhØ‹W_}Õýøã�~„yèÞ½»¯b[CÀ0 CÀ0 �tÚÙ‰Ùéÿ .àjÏ ÿ…«mçh†€!`†€!`†€!`»„kèÕ«—;óÌ3“â›o¾©D‚ *$-Îð^ ÂiÙí_~ùåîé§Ÿv�5JZ „èÛ·¯®3E ž~úéÑ$wÅWdJóB‹-2¥û<+|ÿý÷�'Ò[µjå^~ùeõ áËùí^{í¥»xT˜8q¢ëÑ£‡+_¾¼ÏŽÛV­ZÕ…½/D½•†�Ãû4>ï“gkn `b†€!`†ÀÎE`�í";·KëÍ0 CÀ0 CÀ0 CÀ0 CÀ0 �?Û¶ms ,p .t[¶lq�ªT©â *´ÓO~óæÍnΜ9nÙ²eª˜¯\¹²«X±bBÒBxp„† ä„H„ŸÀ¨&‘lÚ´É-^¼Ø-Z´È±_®\9G_Å‹OTõîý•(K',óoI¼ÿþ뇷ßþÜ}ôIÿ–ÓúמÇsÏ�t=z|—éü 2ð=z¶{ê©oÜĉ]]ቕ¬™*ïÄ„3V(IaíÚMq½ÞyçPM¯_¿’;ýôEÑ_ÔmØ°Å¡ðæ¼¶lÙW~W>ؾݹ÷ÞûÙ=ôÐp%-ø±-Z@Ï‘kÄç¹þý;¸Ã«ì‹üë·�o.¸ �ž3羻ȦMƒß‹­[·&%0Œóµ\ã%2oWïЩ͘1UÛY»öÏ �)S~ìŽìɼ¤ÛŽ!`y…€ò Yk×0 CÀ0 CÀ0 CÀ0 CÀ0 �,hÐàh÷Üsï¹­[ÿr«V-%Õ×½ûÝÏW^yŽX•EmË2v£FÍÈ �;7+þ:êŸðóæ­v¸Ìî¹QnÚ´e;oPiöôê«ç*aß}3ˆA„ŽÀCÒ»w;W¤Hñ‚Ðï¾ÛÞ(�?Ížþ¹â<ÙÝ~ûPÞ0n»í·Ï>¥Ä£Ënñâµî—_ºÇûÚÍœ¹Â­_¿ùŸ¨õ¼Ë"ð꫃å>ÙìöÝ·ö.;F˜!`üû0ÿÿÛ†€!`†€!`†€!`†€!`†À.ˆ@Ñ¢Å\… 1 èÊ•««kîýö;À]rÉ©jq ©¡dÉ2îÏ?W©U-aŠ+®g²nÝM+S¦¼Ûk¯ÁÙQö÷ß'ºY³þ×÷ÕÅ�ÿÁbQ^>È÷;K—.r›7o’xò•\¾|ùÜLvXÙ–-[AÓGdéýaÑ¢yÚmT«¶Ÿö �Õ0ž&�áûÿë¯-Ç~‘†‹Xµj…X¹¯Óá,Y²ÀÍŸ?ÛMÇ´dÉB=&¬F"!ôÂ{ï]Â/^2QKËEž¬­�tR-Q�Ÿ×2 r>„&øì³ßãþðdP¢DA™»Õ£Áĉ‹ćƒª¨¡'â ¬^½Qæå2™Ë+eNÕð+î*¿»jÕF7}ú2UÔS®fͲ27 …ªT)î6mÚ*s&–†ÿ§Ÿæk>¤†•+7臄J•ö–º…d[Ü,˜˜À@ˆ‰éÓ—ëñ8±ÿþ¥µÏ ÃÈž&MZâæÌY)÷YQwÈ!•"%vì¼xàKm䢋ˆ—…“gßj… Å\óæµ$DÍ~îõ×�kRÈg©w†Ù³WêvãÆ-®té€:€ù@IDAT"®zõRr—ʤºƒ÷ \·R¥ »ýö+-ϹŒëÆu"¤yaÂíƒ)¡< ÞSÇ�]Ÿ\ÃéÓWȳf�<'7éõæÚשS>îÜÁ~É’µÚã›??û@±bâ°Øºu»‹ß_ªãÙÿ2%‘寿¶ él‰›:u©z©[·BvÃÞiùÑßž³“&M�û`£ÜOé³;:ž¹äólExÎòŒF6lX÷¬æ÷(úìׂöe†À"`†Ъ†€!`†€!`†€!`†€!`†€!�[sLó ©©S'º£Ž:νòÊãîÅq7Ýô°�u�?~›zi àw<-„‡´Nÿþoº[o½$¨ïwn¼ñ!wùå·ˆvÆrp—.gˆ5ö[ýN÷ÑG}D±<Ã×ío Eg˸4Y„}øàƒ·âÒ‹Ý[\Ö¿,î÷Ûé„ÈèÔ©¥ã|î¾ûYÉïêFŒøTóO<ñ47|øÇAÙ›nº8Øgç³Ï&¹-êiÚG�wõê—ÏA‡'©"îá‡_uçŸi¦|KÈ]֯ߢ æË'̃$’?>wê©uâr_yeŒÌÝ1®uëzB^Yç¾ûnV\þ 7+s°Iœ²rÏžã4 B\a9¸âŠFîºëŽÒN©e8^z÷þ1Z\û}òÉÓ4ýÊ+ºñãç‰g“vr_UwLr÷Ü3LóP¸7múbP̘«•˜Ð¡C?×°aUׯ_û ��o¿�én¼ñcU¶‡3ðzððç(A!œ>tèTwË-CâÂ:„óscÿÝwÖñ.\!‰$ñàèeÈ�ßÜ5× ò‡q[ÎüÂD�¸¡ƒmÛ¶ë5¸÷ÞÏC©±]ð~úéÓä‚'žøZð$ÌÅ)®mÛCâÊŽ1C¼Ï|è ʼüòÙqyуŋ׸&MþMÖcÈ+Ý»Ÿ&ÏË™ W¯å2kùsÏ=XÉS¦,q(æéׂþÞ©U«Œ*Ê¿øâMiÛöРHÔ3@�!;_~9Íuéò�&]rICUjO˜0Oû"ï¶Û>•ñŸTùâ‹iªä&�óoÔh÷×_[ݘ1s‚ðAáØA™Ž´kwhJ„ß"�8 œx_),Vö«]ÿþ¿ê¹ÞqÇP r¦/žtûè£_©g @XaÎ@“￟ã-Z£†¤ ¤™Ñ9ì°Ê²†QÕ•+WT½}|òÉoÊä²Ë>p_|qÙß^Ê«ç Ì«ð|;ôИÆ×¬Ù+ÚæÉ'×–çV- �Ù‚Ë%—¼/Ä«.êI„B(N=õ -_­ZI!]Õ–¼#~Niæ.ðÕ§ÏK:ŠúõºC=J=îŒ=\'/*Q�ç2�4™ Zì™›AT;ôÐ "L²ú–n†@NHoµUzX±b…;çœsÒê«k×®òƒ�ü˜Vc»Qá¹sçºã�?^Güí·ßÊKxì‡0/N¡iÓ¦òR1_^øºËËýyÑ…µù/C`Μ9òâ5Sþ ìãjÔ¨ñ�žÝyç�' ìØ v²�ðܹúê«]·nÝÜ{ï½'ìܶòçõ!-¾yófw饗ê~‡ÄM]Ìmâ®tŽÉÎ+7Ò{õêåÞx#ö²nï†nØ)σիW«²³xñâ;¤ì �ýß¶¿»`ôÁ¸çŸ^áoÕª•XöÜ”ðRüWî­èÉoذ!xÖ tFñº«KNÞE>úè#q9ù€~Ò%0 <ؽÿþû²0ñ½¸Zü]áÙ{ï½Ý‰'ž(V-÷dzF|úé§b9ö¸–;õÔSÝÍ7ßœÒQ£FÉBìšwøá‡Ëâkbv?Ä€Ö­[Ë‚ElA·_¿~²³¶HÔðÂ… Å‚¢‡:t¨XWü¢EÊ—//î-÷s�7vgžy¦;úè£ã >þøc÷ /ÈBÓ�âFq‰Ö«]»¶,ô ‹x§é'«÷¾¯¾úJçRË–-mñ<ÿòË/ƒ±Ðp£F�dñë6}žGýáßÏ>}úˆkÓÄîG»té"‹±¹gžyÆÕ¯__Çýºûî»e±ú[Mï“N:)Z$8Î)?ÿü³,>鸦3fÄ,üÀ›w‘f͚醃>8è'«�?ÿüS¯Q´LVXDËÚ±!`†€!`»"�¼N",� \|ñµŸœ÷2Â2¬Y³Z¬¾cÿáž~úyOjTkÙò\צÍÑbÍü˜¬§\¦$ƒ SvÎ:ëBµ õaè£]»ã• гç³êá�òï¿ÿ¦¦Õ¬YWˆãä=y/mæÂ ¯T�´ÿÜs÷‹âöcMaÅ{ÓMih Â]à†¼pá"âúý7 •qé¥7É»wüû'ç‰gˆ/ÂnÊQº!� ŠÙ}ˆ¿aLv·ýóÏ?D<�|¯ð<ððÃÃåÓ>⣂êׯç†?z~”{üñVâÚ¿œfÉÔÏÃÄÊûGY‹(”qÛyùôÓÎŽ°HëÖ¹¯¾š.ÿ¥úkß]t¸zaèÓç'%/”)SDæåÅòA+È×­·/ÿÝFùÃL[¼Ne3ö=Ô"S™há7òì³g¸V­bäœ3Ϭ«^4xVÇùË/ å¿W%!öÿå|0ÖáÊ+»®]›ÆyF8÷\@1÷üѾÒ=&Œ¹¤#Ç¿¿Jºf çЦM}ùû¦Að>€‡�d2yò‼ЫW[ñŒ�AH"ÌÃË/(þ“µ‘n:!1ÆŽ½FBÔ‰«Ú¥ËQî„^V¤ „Í Ì†ÚµË&¼Öxñ@Ú·?L<Íœ¬û|]}õÑîì³ßV¯ ï¾ûK@žy≘G‡cŽ©!Äš³ãð{úéo³œ{Aã;igß}k‹—’7„èqtÐãu×µ“õ�~BÊ,ÿÇ“ëï /.\T µk×ËD( ´CÀ0r�´ 7nt_ýuZC@Ñø_¬ýÂ,ûy)S§NÕtrM �Txûí·Ý]wÝ¥Ÿûï¿?•*yVfĈ�(Y'^™±hÑ"½¯/^œ¬h�¾+�c0¨<Ø‹ñãÇ ;º@a¸|ùò<è-s“(£ k¡d=ztæ–âvŒPlzå%sêºë®“ŀ؂Tø2þWî­ð9ï®û;ó]ŒÚ·o÷," 2Á AƒôÃ;äqÇG² Ï/ÿ^ÉbH¹r±Å,_†íƒ>”ËŠ8òÍ7ß8H^ú÷ï/V.Wùøí°aÃÄ:"óâ„>cÆŒQbèçŸ(òy>ûì³eíÓ -ž·œ#„ >ôŸÝóðÍ7ßÔú�;wÚA©�âÝ‹o—qœuÖYŠ�'qø2áßÏgŸ}Ö=òÈ#>+ØB&yõÕWƒcU‰„wHˆ+^Ê”Á)~ÙçåÞ7 ²D…÷e>ÇW¢ÊºuëRòÜ�×?ÂmB621 CÀ0 C`wA`É’…êñ`Ó¦ ¢l›ï>ÿ| ¸Øÿ\‡ÿÐC¯¸‚3bÔ“xÅÝ4ŒDøüðì5jÔ—êÉ%U8Œå?¼‰*§¾ür°( †Jè…øwdHž¼@y,l»t¹Yþ¶rALAGú€=ÙèAˆä™I%-[Ö È ”ßc'¡)�aÚ´enõê�J€2dª6wÞyõò‚oÿè£k¨õš¬Å.½4Þ‹ sµU«:J`ð^.þúk›zÜ B·n'Æ‘H£Î®$çœÓ1޼ÀØN>ù,%0Ìž=}Wª�Å0 E mVlS¦LÉß‘G©‹·,¼F­õ*V¬˜©ü!¡jÕª�"(++¼ÜÀ‚År¬Ð±þ31vW°<=âˆ#¿tés+T>YYÔ&l`MÄ‹ÊíW^yEܳ•ÌÑ(±’çså•W Û÷EUÝ{ï½9jË*í>äÆÜ Ÿ-ÊCO^ …ì_|á°7Ù}Ø™ï" T¸paõ,pùå—ËBcM‡5–ö×\s�z ôÆôéÉÿãä¾ûî‹ÏaÂ@\fä wïÞšâ•ÿx§ID`X¹re@^ÀÛȵ×^«Ù€W†É“'«g†O>ù$®‡G}4 cÅc^P˜O›6Mðx1ÈJðfÆû2c¤ï°à=‚ç9á; ,(n''ª·!ßoñ¼�xìðÈ"CTr‚ž%ì°ÆqD_·áfÎŒyJóéɶµjÕÓ¬Y³þŠ0Vä øƒôðÎòåKÄâ|cñ‚1gED×�î_½[·KÅódw‡§ÚùàƒžZ ‹á}ö©­bÇyˆÀþû—ϨíUQüý÷sÊÜŸ^¨„ºE8?¡£B}ÜùÒ'ȉÈXBY°`�Z%Ö¨QC•áö€5\‰%ÂɺÏËýpî`Î9x 1Ê2_~®ã­^½º.Æ£X_ÆwÔQG%l?S‡‘°š7ožžñœ™#uëÖMˆ a0~ýõWa±.Òy„Õ=×**á9À—I“&©˜¶™ÌG„óe!å‹Ü 6Ô¹nܰ¥óŽ98~üxÇÅÅ2x1ÏINƛΜ¥O”,œ×�9ÐAešãÑs@9¼wæ%×.|½™S”APNpݽ€�Çeø¡Ød¥ ×åFTÀmýúõ¾!™ ëh�è1.¤=_Âå¸G¸·²Sö§zŽ´�â‰{Œs%V;cà<£žw‰že9ù3>räHU†aùžÝ9EÇ“ÎqôÙÆ5gŽ0w˜SÞÃE´Íìæ»<›®x.ñ åY훲ü^ð¬e¾qO0W™£Uªdþ³‰2‚Ï!¯œŠÎyæÊ/ÚÄò™ç¤îoΕ2\[ž<çIªs!�ge*%Kvi¹=wÞ}÷]í’0,eË–UËówÞy'�!•{+zÍù½Ëéo©Ç!�ß2êää7Ÿgãd~ðžG~á-ó%ÕßIB àæ·˜zÌEî»èûA;ú ß/þÙCz*¿Ù½‹ð;Éo$¿½üÞò>“•d÷¬ç}ŽçhXsEøŸvíÚéï ¿?Q%{óæÍÅÒìs�w„¿ ?ñL€@¦ÉŠÈÀ5ýõ×µ,ÄN<Ãp=y¾óÞOLà÷ E}ø:ð¬áƒ÷�ï¾û.î7×·�·ƒ01‚sæ��$ BD$ !—]v™þžùrxIˆbÇóù±Ç—¹ý´ØO?ý”�À€'‰Ï>ûÌýïÿS¢ƒo]„ô`\ü†qÿ&<« „Ô€ôÀoâ€tœÑ:9Á¡oß¾Ú a9¢¤ È.|Î=÷\±`ù0í7«ãdÏõ¬êXž!`†€!`»x>8ûì‹U1_±bUQÈï¯aJ—Îì™,«ñ.Yûo^ªTf*õŠ�M,‚A*â=?N‚µ½ Ö©‡êB†(T(¶ö–¨­Ü|7;í´óÅÙ ¢”�!^Ò¾’5®ãÜ[o=£ÝFÃäŸAE9/� z÷þQþ¿|-k�ëÅcÆ$ñôq¸ÏÎr‹RŸú›6mÕr^1\³fYé#óZ·o¬D‰BníÚ ÅkéÒÉ礯“ÛE‹Öh3Xþ""™x|ðf€”-›y�;YÝœ¦x`y%0̘‘˜„�¬Ý»îŠ…ò ¢EƒUÔ»E©R…%,Æ`½>ÉêútžÞ#‚OÏËí A“%$Ç`í‚°x¿¨Q£”býæ›?$%5$Ó’%kƒä¬®+$ R¾|fo#š‘‹_… e¬³lܸAÖ0â=óø®ÈCŠIm®E=éøvlk†À®€@f vŒêŒ3Î�‹t1…ÿÓO?­Ê*º"½gÏžAÌíh÷·Þz«ºÃ ¿øúöžxâ �ìcûº´‡…ZX°À»þúëU Ngáš<Lâ0ã~÷ÿþïÿÔ—Çaa9±„Yh uñ›QPxå„ ¯t@é�9 ÍQa±�vQä¡TÀBÍÇ#—…ì0pàÀ`AþœsÎvëHŘ6¼ XD…KÞ°°�ÍbxxA‰/–ðXs“æEã�!CT©ãÓ²Û¢´êÔ©SœU/uÀëa,2”‘(7X4 å°¦<ýôÓÃÉš¹ƒ ×ÏÇÙ¦uÈCiIß(¤¼�ÇÂ8“^p=ŒR„˜ÚĹ~î¹ç|–nYhG‰AÆKNǛΜEÙ…‚„9°º÷Þ{ƒ9åÏÅ-JŒ¨õ*çÅ\ö„  /¼0˜¿(;øx¡÷Jæi[_†ûìÃÖ(„˜[(ôòJºwï®çÇ9feåšÊ92F\ˆs�D•:Ì9”IaOþÙƒb*ѳ,™÷ˆ¼Â"�vÃÏ6H+<ËÂrÅWh<÷ð³6•9@ øÛo¿]›âYìŸ!$0wQRù¾~øaUŽâEÃ?·ù=À;õ¸?…Áá™Æ}~Ôr/¾ØZ Ä{xö“ì‚8Àµ_º4ƒ�]�-[b¤•ìÊ%Ëë­qšuÙeGÉئb$•q¾_~9MÖaæ%«š)½bÅØüc>½öZLW”©P(Á_×0ñ!”�«»%K–Ú[¹r™™– Žý^ œ!�áL CÀØÝØ)Ê?¯÷ ±äaYË1ñ}±Çúå ÖX�á]åZT±Ï‚0Vs,ø"C‡UE,û()XØFQ�«l>X·{e�—^zI·(~Q˜áþåYxQe1 Kb £”¸å–[‹¾X�%”DôEûq°î± Î%D XQzc£ú$ +lâ:ƒ óâD"7æ(B”ÍÔùøã�õ|¹Æ~®Qå(Š °à°Hã°p}ù€ ¬L!; Ð¿ñÆU¡âËçt¼©ÎYúA�òLPÂr� ­0&H6XHGÉ \W>x2@©‹â å˜SÇ[±žzê©Jðà>óçëÏ�û�yA0<ñÄåÅõdU˜�–ª(¶wuÉî?s‚ù… D‰È½Î³‡<Ì©¨${–EËíŠÇþÙÆ=Âó [îGBOp¯x²Pªskm¯$d®baí…gdX˜ƒþ¾ §ïȾŸó G”o‰\­‡û?',�e? Úœ·WRB’H$Xø£ÀdAû•W^Ñs¥‹îRÂÊM® ˜cI dðkܸ±æƒ‡w�Ì8)‡U+}£ÀAÀ�QÁÂÜˆÛ N\ „¹F¿XnB~ÀÀ·|E!GXŒ¨ ¸CQ¡ëOÜ&£@ÀE²#ãMuÎBhñ�EY…"†1y…:ŠÈ?aáPÔ  cþà½Â+½r‚òàéÉ8(58_ÿAyÇ5Cîæ)ýc½Ù¿½çp�CÜ„ñÈ© äD�ýD=J¤Ò~vçˆR”y†0ÿð€…4ֿܧ%ü¼Ñ„¿¿’=ËÂevÕ}®)÷ 1ž+\ë¶mÛêpÃÏÚTç÷™'nÅÏ#¶~Žy,À 2îܱ ‡¬•ˆœæË§²eΣãžæÀ³À·I(CQ¾1îoOúñîãécGæB*ÏÊt0Jåœó¢ŒÖ]z饪PĺÆ+�ñj–ìî­pÙÜø-M÷·,'¿ùü†ã9†ßGî ~Kð�<øàƒáS öS¹öæù‰0/y†ó,‡AØ,”Ø�ýï½üû+Ùý’Ó߇pÛì3~„Ð �Ù ¸1.î¼N$“œ<ë¹Ç¸Þ ’‘ yÏ‚HÁ¹ó[†·Þy·CÙ�•ðíÃK𻆴jÕJ·¼ ñÜ d~s< Òâ´ÓNS¢D½dï:7Þ%ðÃsb$¿Ì”wþØ;e\f•+#F MZj¿ýpM›¶Ðü™3×í™g¦×OÒÆ-#eÞxcœ\‡åÿÃ8ùßÿßEôk¯�•5äÙÚÞ1ÇÔÈÔîŠëežd$£ô}à�±æŠ+bëÄäžqF]-!áùçGÉúѶŒJ²7yòb Ý÷¾èbc8ûìƒ4ÿÙgGЧÁEqe§LYâ.¼°_\ÚŽvX!y—U¯·Ü2DB§nŒk‹ü»ï&z‡Yš~Ä1kxBOôìó@ÆæÍ[eÍù{Y7_ årã‹xÂ@Àö™g¾Ó~Âm/^¼VHüC„dÐWÉ Åÿ&� ˆ//ë×o‘õéo>=Ùö”SЬ¯¾š.”¿ÄÃ;Æm·}ª×Ž Oøøã)qséÛogŠ>૸ºÉ Ü+ÈòX“°mÛv1^š(:£©A¾ßñ¤ƒiÓ–‰î#^_°àžñ¢k×�e=q¹¯¦Û�ÿÒ9þÒKcô"Oƒ±kûä“߈îbkPòMß¾?ǹ±‘ yòÉ;Äð&~�cúôßäz_¯ù—^zcBO¢š¹_ÿöê0mÚdÁnδdU CÀH �=S+–;¥XX>å”S‚Æ<ÖÐ -Î(ÎYÐ_¶,æÚ n"A)€µ¸,õP£Ä¢/>t ظ¯%Ƴ—&MšøÝ¸-Š›#�<2HÃÕ8ž  |ð‹Þ`Q˜óB¹�B"+ñc¡ áð à…E]¯\#��à@9°ñ–ƒl½ÂÑ×M´õ káðœ J ”•(æQìE…MXÁÀ=ÊiìYÔã­Ë1ÊÊ®MXÀÏcˆ²¹úê«Õ“F¸n�q£�•*Ø£\ Ö�ÞÓéÕªUS¢ e!°ï‹O”E(¤™ Ä• ÖâQ—Ïà ~œ7×eÈŽŒ7Õ9ëpxˆb�%9sŒ™oa«HÎÁ+ý¹¡�A8gïÝÃç%Ûz×úÄbg†1f<‰ Ì¥ÜÎ+*É\fGË¥sŒ¢ L¼ej¸.^Q¸Ö(¹!´0oÂ’ìY.Ý{ QñÏ*›>ć/ƒ‡—ðõõé;²e~ø{Ï·ƒE8$ž5^r2|Ýd[^ÜÏañϵpZ:ûÌy¯póõðÂï牷”°ð‡¬âI*äíÈ\ØÑgexlÉöózî@„òÊËðo ØüV`mY0ü{•l¬ÑtæÛŽþ–¦û[ægÓùÍÇCPØJ_`üž X�Zç§ríQÜ{r¤³°ÐJy~“½ç$»_rúûîB W¤C\¿Qޱ%“tŸõ¸�½üòËõwœ÷=OxJÖ>¿“XèCxÄ[þ™”¬ž¾òìö¡ø­DQιBè {KàB „Š·ÞzK›å™&7Ar@¹ö&Ãó…z\˜cÌ>^è“w<'*TÈ'ë–ß2OV‰zþŠ+:€¼àÇÇs-«kÃ;„)~£ ¼BÆóè32Ô¼îB2å;ÏH/`ÇýOÿ¼ …ûÎ ¼‡Ažƒ(…g(Þ/øíñ$VúÅ‹á¶Âï~<¶5 CÀ0 CÀÈb¢ß{ïsò®ÚZB‰Ý#^g‡ÉÚWY;š� î¼³»X¹WÈÔÐWœ-ëuV½óæÍT+_ µis‰(èbÄ_ŽO?½� ½/Ôå½î4!ô®–,Y¨ 5Ü—c%œŽ@Lè×ïùïô’äL’µ‘òî§Ÿ¾—~~‰s“~á…W éü3mú’Kn�µÎx/véôiesŽJîüR?Õª•tPNÖ“–«Å¿oõ®»šiº?öÛ7ÞøA<þM’ÿß•ÜÚµ›äÿð<ÍÚwßÒ²~“á)`Ÿ}J ¹ü$ !û…¬+«Šà#�¬¦D,ã! >ìH›6õÅ``¢za8묞B²ØW½Lž¼$°Ð× ¹ôU @~!·oýĘñ%u4n¼�d”þ‰â;¦ÓhÚt?í ×\CØâ‘b¸7\æúOò_­˜Of­GÈép¯¹¦‰ÜKË侟.JGŠ÷’äYPQÖç÷R<¢^¸†\ƒ™3W±ÿM!ÎW}G¾àú¤:Ú¹êª&Bð¥dγN�râu­xZŽ…xnÛ6¶¶ß¼y-y^}®}6köŠ­\¹˜›¨°–x(!XÐÅ ?Ê:*¸÷^|ý¬¶>8d‚¨ø¼ì­X›±Ž?Šh£¸ëf‹éðb7 ÎxhÀí1 ØŒ—½”ó¤�è8ü1¡*P¸#‰¬õŠܪûÅ~_?ÑìPägwŽÔÅâáš{7Íš�à r¹E…p"ÞM1ÊÕ(�!Zžc¯ö/±á2„]@Âó#œÝg±žþ=qƒüÜo¢9‹…:òúë¯+ÑDB_þ>‰BE‚ݰÒ�{);+L*¢AP.àé…d>(€ÂJ -˜K_(4’‘Šr©‹ ¼T \ÛDÞL8wÄ ôàï¯dϲp™è>ŠÌDnè}9óL�Ì&ëðìæ;$˹!þ÷2Ñõñyþw&'¿e¹õ›!Ž9 6xú ?K“á½öaRP¢g›Îø9n7Ùý’¿Rú¿hb.~qýPæã%!4Evï/xÅâýŒÐ6�Dc”˜—hˆžpá…Æe£‡ÀÀ{T�=â•Ì7È;x<¢?õ7¤ï1Éâ(ù„Ke>¡ØÇ»‚7…¦M›ú¦’n!{ð¾Ë�~·LTÑ{Xà½3\o)ù�ÄëXtçÂ¡á ƒ6 yR#~ðfF¨/ÿI ýµUôcTiY¹÷ÞæJ¾øå—…2¶äÆAC)ì€Ëk¯�«ºwÿN Q²¡&À¾I“rŸ:1p<[îùAB^Zx„À[ÁÍ7'ç8\òñ˜y\âÇܵë±rÝÊ*.œLÎ9ç`!I•ÒcÚ~ñÅÖBøDÛö׌2`{ç�ŸeÂ#ѵëÖíxñıQ `ʇ¾ ŒÌ˜±\Œ~ÓóÓN勹òÌ3gˆ!å@-˵Cè�l2lØ¥êùï>ĉfÊ!6Z´¨íÅxª†6ÎÒÀ@=_¾}ûô¯·ßž�këèùóï)á¶¿“ñß«!uxfóñÒºu!ŽI·YývD絯èÓý3œtŒÐžy¦¯`×F°û]‰l¤‡ŸÍ›†€!�[Ä¿äV«i´ƒ‰Y¯lÇâ“Åt¬¼×®]¸OµÉDÊYˆxÀ}3ʲù X›²p�Š¥WV–‰úM6f,ø±@Ä¢ Å„E}Æâß±þÄ*’²XùyWÀ”%·úÉú;/‰ɽ…*epÑœ �!;ëGß[o5‰(;áÜ�Dã$Ý+#½GÒ²’¬Æ™ ¯¬Úó‹ùm�Üo¢1y囬B2$Ã,|>Yá.Þs×^{­Ze†­RQh2ÃVÕẻ˾¿ŽÜwa¥mtü(usCðBâ­ÜÃí&R VОHàó}˜œWÛDsdwž‰î)�]¢¼Üž ‰ðôýçd›×sÇÿ¢PôÏ[?N”­îÿs‹À�ÎoiN~Ërë7Ÿó†DžPAZV½ö>ôu²zΠÔMUrã÷Á{‹‚p‘WA…p#þÝ…Ð^aOYõ‹òB‚'ƒ¨§h]Âj@@ Šy¥?Ç~³ÏoY4´ é„�À#‚÷ŠÀØñŠƒòžú<Ÿ9 7\ÓðuWÆ aƒ¾ 6„‰—�‘¨g˜p»~�þ}/„KE|h �?8‡¬/>Ô[úM$�¢ÊåêñÛþ}gê¨e!JJ¢råâªdöeü÷ÿ(­¯¾úh××W®\QYk+*sÌ—"ŒlûŒƒ¿÷ð0}zb£�F�ª'̓H�~ëÖmŽ€P*/'E3)ßQœßtÓqζ±Ò,—5ÿ½Ôëç&XdÜ$Ò�¸Í›·Z¼Kn�õ÷ qßÿ2ŠõÌ™+µ\éÒ…u|�*Î:«^¦Q€5ŸDÒªÕ�b w †ÖÀ[ÆÞ{ÿ?{woÕ¸ÿqüiÐD¥$Ò ¥„kžU”¢"¤¨HDÆ«no! ºÈ¬‹¿) ¹D ·dè’¡R7]s©TšÐ<ü×÷—g[{Ÿµ÷Ù眽Ïéœ>ÏëuÚk¯õ¬g­õ^k¯}:ÏoýžòA ÉN9ε‚þóŸúH°iÓ–à!®êÁ=dkòì³ÌÑtÔ¹Ûi§òAf‹Sƒ þ–Á½h•¹6hP=sß}§æhGç{âÄÞÁuò[ðþµÁõTÑ®_Q×\Ó"f£Ep­þf?vÞ¹Rp_¬l™)|=ÿ*㯾Šüb×Bƒ»ÄŽãÆ[ûjyUpÙõ×ßìßvWö›�w® ÑX/8抑ÛHõÝqè¡ÇFÞ£G�z/²-eØ™8qN`·0°[ØíØíY—™ €@AŠ<€A`Uð‚þȪ×ðÓÆþ)þ‚¤Ö?ýôÓmx =é¥'æÞxã {PO·©ƒ81­y&¶™¬  ¨#S—Ú=µ§'­õ[¥ëÕmê˜Vǹþ�{饗š�êêÉ49iõGêð�áíÉS?úƒ°ÚMìÕ½¾(¥o¦‹\H6†tx{õêÕ³ ígTñ� Ùìh‰Ú®Ÿçƒ1üP…±¿º&Ø¢¥ÞÎfѲQE™A4|‚ž Öµ§'RÕ¹¡ýR¶=1Y\JÔ1úáEZ´haO—gûXÔqÞ³gÏ›yñÅ-€AO Õ5žc§þ˜QØ×@¸£1Ù>ec~a_ y=†l^;Aנо3‹ÿQ��îÖ$\¢>[áå�ÎïwY&¾óձ뿗üwZ^�ÇgwÑq$>�Ÿ×¶|ýL|?øÌ?á ß~&^•ÍEÃméÚÒ±Oœ81xçð´›Ö½ç ƒ²ïŸt¾}m@Û ½÷÷ëD0„ëkZ�U½O?ýÔÝqÇ– ±NÔ{ÝKî»ï¾XÆ ›øeó™0a‚uÚë÷·TE™"4´…Іù d¤ZÏ/Sˆ†�Ò0[‰¾ŽU ˆ÷IU÷©§ž²¡|P§_?ê5•CT}ÍÓ¶¯¾újû>Öï¹áì%ÉÖIœ•Õ%±ï@@�íI@é¾õ“nQÀÀ^{í�nu«WµêÎAÖÖ'ªó´bDe?$ Lذa}ð·Óa¶Öyç]±6³ [@Où׫§Ÿ¼�uØëéû¼eghÔhkVÝÜÖ++h˜ýVÑ1)˜!�çø,kÄdïa‚¨cÖp:O¹�+‡‚2UªU«dÖ‹DJl[ M›ÖJœ�ç÷ lÑOºeëu²“œ$[Gu4Ô‡~r+2V`Da•2A6ݯózÏÎÄþ)è¬V­Ýí'íÑ �L yˆc²52<_idUN=õÔ¸à… oÆšÓ“‘úƒ¸þ¬,~\j?¾v6¶™ªMèÌ&Bé©4h`ÕõîpÑu•¶_ãgë�éþÙJÅœª4k¶5:R)�‹Æ|WQÛzò0ÓÅ‹þ(ž[G·bÂ?mÞ—eË–ÅÒ û6Ã˳=­Î+u¼¨øýô¯ÙÜ_î4x¶ŠR8œJ?j[�5²'Zõd¤òWA ‰Á)²C�QCwDµ[óR£?�Jµ­N\Jr�Ü®ŸÕ`ÕªUÉI±D™f| WùyÙ~-Œk¡ FÙ2ð÷=E®óõã‡ñߙڗTŸ­Lï«¿æõ»¬ ßùþÞ¯ïÉt²EwÆ m¶¾ ý÷nT½¼ÌóþÜåe]_WÃY©h¿ò,šÛ½^ßÛ ®Tð‚¶£!³ò¼ ýÒ†õûŽ®Ç܆Ð÷Ž>BÁ©Q×°öAEC8hØ,•wÞy'—ò¿6�ì?䌂FT6lØ`ÙHôš¬„;øÃÙ½|fƒÞ½{'}òMA3ýúõ‹/Œ3&ö;_²íEÍW ¬‚‹µ8nžÞCÙ¾¢ìtOÖg@׊ÿý4¿ 4Ñõ‘ªøóí¯Q_WçY?©‚¦”QÌ—p¦1?�W@@�â+0aÂËAÙÅAqƒ`Lú6Å÷@Øs@@�´Š<€Á§À×ÜáŽ+¥áíß¿Z‘[%¥Ö·ÿàìS(ï´SîQt¹m#ÝåzŠ]ÃdhlßpQ'ò’%Kl–:ó”®Z)ú•Æ?±è)>•p§_b½¿ð m¶$ü:š¡ÎZ A¡¢'é³Q”îYO”«h>‹�Þë�Ï ¾Ð�*:?*ʆ¡_ô‡|¥bVQÚi §�ͲbÅŠ¸4áúc}Ÿ>}l“­[·v¾Ó¨0ö×Û©³@ç/ñÚÕØÚ'Ÿ|r�ŠkE¾IüSçÚÆúõëãÚ¹óÎ;müìÄŽýðÓº¾ӯرcGÒ$œNÛ/+ª×TǨátMé<+�wb§ŠŽUÙO¢>ƒEu<…¹Ý¼\¾£iöìÙ6.|^÷³F�?£è}gšÚÐõ§,$zú?›¥0®…‚eëø54„Šž–OVºuëf‹Âߣ©>[ÉÚÉïü¼~—åç;_ß¿áŽQuêkø=͞ߢÎlÿ=¢ K‰æšHCGÝ~ûíio"ß \<úè£m›ú} ü À=õŸ¬¤º×/X°À†T˜4i’½*€1ÛßÝ“'O¶Lêd×ð!QE¿Où H¨(QûvÅWä¸oéw2eÌð¿ƒè˜U”YBC2ì·ß~ö{ŒÞ‡‹®dªá‰|ö}(PÅ ^OÓêœ×Ç·€��>ú(H'|FbµŒ¾WÀ‚BF¿›F £¢áÖT”…A%¿:¶zõê9e˜X¹r¥µåÿQÀ¨> >8T¿wù¢àI�éGïùbFó{ì1[¤kÁg?ñuyE@H-  âm¹Œy�í^¯^}-cÚ¶¼¯ì[N}mã—YÎg €™@Ù"ÛòV=m¦?\ªCþ¤“N Æ;[Ë8û§'ÅõÄ›þ­?Øk(€/¾øÂéì*þ�Êö&Ëÿ¨#zôèÑö£Ž^¥ãÖ`56´:Ruü2Qƒžr×p÷Ùg{zQ�nB©uõ‡q„�l—Ï;ï<÷àƒZýæÍ›[:dýñWÙ'ä­625¦yÔ>hÌh=í¨ãÐ1´iÓÆþ(¯ �µîŸêU‚R%ëÛê|ÐìõÔ¢^Dmk™ÿe7j[™˜§ý”‰‚%ä¤ì :'*Ú¾/…±¿JEi¨Õy;hÐ bä¸ã޳@ujÌŸ?ßvGù->…µ:�u}¨£E�5žD�7êPÓ�Þøî»ïb þ$ÙÐ# <ÙVJªcÔª�\�× ¨Q§J«V­ìi_] rQI6L˶rŒÚe‘Ñ“­º6TÔ!¥{œR¯ûÏ™-ÈÃ?y¹ÔQ¤Ï…Ìt_Ó}VÁ/}È�!imU�ÅêÔÒ>kˆÿÔtZ  Rùòå³~-d¨‡¹ªR´ë>«¢!’•:Ø"Ýl¨ÏNnŸ­dmåg~^¿Ëòó�¯{¼ž�÷™(|¶}wù@†üì»ÖÑ=U�áúÞÓçD÷T€Ì™3'æ¯ßƒÒ-™ú~¸é¦›l_ô;‰‚ô0}úôذ¹íOÔ½^÷§ŠŽïÀsŽY©eÊ*å‡.Ñû‚ŸÙ@×Ib`�oW¿?(HGǬ �Ë.»Ì/r#FŒ°uz랥Žõð½§S§N±€P¿’‚ªN;í4{»ÿþûÛPdºÿêw+_ô½â³ÈWßÛúìø`&_Ï¿*(ÀgÖÒgM™É¢ŠÚ”q²c�Z'Ù<¿=]çùË_’U³(¸EYtÏTÉ«ƒÖѱéw>ý(¨D¿(°'¨¦ïÍ÷%\žÖïŠÊŽ¡!^4Ü•oãæ›oÎúïŒ~ßxE@Š»À˜1[3´*ù¶\ü~–.]f[ÞMö-‰@ß¾Çÿ·>†ßÓ“ø0@r dü·Ó¨Nf�%¬µL©ÉÕÉ­' õGMŸžV`zjQO,ú?ûÝOÕ^éÒ[“JøW­£vô”£:þÃ)—õGäaÆÙ¬Û¯ï—ùý÷¯~¾^}}ÿªyáz~zß}÷µ` ý!X�¤úñEǪcÕÕ1+õ¯ž‚ÔdýeUW6êl ýà·ë_UO�ð Љµ=ÿ¤­–éã�>úh0N]U½µ^×ï¯_¦W¿Ü¿†—EM×®]Û:Ä•IC©Ç_zé¥X5 „ǵÖSwJµ­l ázêìÑÙ‰XOu Ä61á÷Ý¿†«¨óB÷iõ¬E‹f§£pÉäþú}ñ¯~;z*T#êØÒµNß®?úëzñÙCüºþÕ·¡×ð¹ OëúW’ž& _cjC�öï~ܸqæ6¹ñÆm8“ð6ÂÓºîò[¢ö?±-_Ç¿jyø¸ÂÓ©ŽQëé:T'®®QÝ|gŽ–ézГçá¸ü^wj/YÑ“Á:–pÚñdu“ÍWÇMxßÕ¹¥Ÿpð‚ß÷°›o/j^^®µ­ �¯kÉßgå«’jÛ~¨£ ‡ï<Ôù»ÿþû-øL£áýôÓþÕ·£W øí†—ùú‰×i^®ßFx[QÛ×ËÍ(¼~ºÓ½vüyR‡z8Õ}âö•F_O`+KŽ:»}'l²û‡Ö÷öaß®??þÕÏ׫¯ï_5/¯ßeyùÎWû*êÀUð¤îy¾èÞ¨ïZ=�îKx¿ÒÝešÒõ{ë­·Úïáû©ÚUy8€$•�ß�¼|?„÷3<­€Ae#ÐSÿêx÷û¥ìHÚuì‡�×oÛ¿&~†4?\_¿Óé'ªøŒSáeáuÃóSM+s„ÿÝÆg HV_÷'0èûT™ôû†~OQ„î9áßAÕ†¯>(–@IDAT¾gõ{˜2&ø}S ­²òÈMëi�3fÄݪ¾¶ã‡Q[>(K×T²>7ª†H\'܉ï—ù}ôïS½úmé¾­Ò³gO{Mö�(à©}Òïì É�ƒÎ•î!ú½ÎOéÕý~« 7¸„KøØü¾k¹>›a}oë÷zŸ#ÜÓ € €ÑÛzà‚ßëⲟ~y�(]Z>¶í,ñ{Ì;@(j�RÁA·õNhû>BO`é 4u"ë'ÓEOkØýÁYcÓÚwdz[¹µ§tÂVAOäùŽsß�¸®RÛû! ôÔfõêÕ«äú^zROìk¼wm³0‹žÔT `�_Ù‡'Âû¡zêPÖ~úã~Ç·™Ûôøñã­£W�xzºX —¹®Á܆é(¬ýÕùÓùµ=]~è•ÜŽ-�åjSO,ëܨ3'|nÔ9¤kT&ê¼Ð¹K (JgE]'Õ1ú}SÝtîõ´¼®½p§‰¯·½½æåÐ׉:�5´‰¬’eéHe¨kQçAç@Y1Š¢dóZÈ„QQ˜$Ûf:Ÿ­dëæg~^¾ËÒùÎW&#e”Q–„Ø÷²¶Q?xª;ªƒ>?û^Gçß÷kèÝS ú$}A¿”J¿é\6iÒÄi¨í­èûOçE÷/¿Î:¿'éûâ§Ÿ~²¬Eºg)(ñ÷Je£ÑýPí)pÃg/(IÆé8$¯²�É[&»îº«ýn“W]³:oÊšá¿s‰Ûä= € P¡xÍ¢Ø<ÛD m� †Û ×lÚd…^‘sTèä…²AÎk¡0³‘íE,bÛ„À6À°Mh°Û¥@bÃv‰ÀA#€Û¡@8€áºë®Û8äl (Û•2N)@FÙ( € €Û—�ÁÛ×ù.ÎGë;²¸f·Ý³È9ÚvÏMAöŒóZ=Ö-ˆ€¿ö Òë"�M�­ã-ds ´� € €Àv(ð /ØQŸ{î¹ÛáÑsÈ € € € € €@Þò?X}Þ·Ål“ °Mžv Ⱥ€O7ï_³¾A6°Ý ¼óÎ;ÛÝ1sÀ € € € € €@AB¢ z¬["4&ù¦M›œ:°Ç®.ÈA €D lÞ¼ÙéG�l³E1@@ @:þà±j¡ øTâ\³…Êž§�qŽòÄUl*s^‹Í©*q;꯽w`P‰ €¡ÄœJ@@@@@@@�â+Pºøî:{Ž € € € € € € €%E€†’r&9@@@@@@@б Åøä±ë € € € € € € €”JÊ™ä8@@@@@@@(Æ0ã“Ç®#€ € € € € € € PR`()g’ã@@@@@@@@  ÀPŒO»Ž € € € € € € €@I €¡¤œIŽ@@@@@@@�b,@C1>yì: € € € € € € €%E€†’r&9@@@@@@@б Åøä±ë € € € € € € €”JÊ™ä8@@@@@@@(Æe‹ñ¾³ë € € € € €ºÀ‡þäfÏ^êJ—.åzõÚ?rû«Wop•*í¹ì«¯–¹)SæÙ²3ÏlâªU+Y�™äW`ãÆ�nõêÕ®J•*ùm"ézk×®u*THºÜ/øí·ßÜ;ìàÊ—/^×÷æÍ›�üÊ•+çe›yýðÃ{ÏìàÞS:¸÷ôÚfö+jG,XàÞxã W·n]צM›¨*E2oÓ¦MnݺuÁý¹Rž¶ÿú믻E‹¹ÓN;ÍÕ¨Q#Oë&VΔͤI“Ü×_mŸÇîÝ»'n†÷[20ÛSÇŽ#€ € € € €@q¸âŠ+\Ë–-ÓúùꫯŠÅ!Þ~ûíqÇs '¸Ž;º«¯¾Ú}úé§:†y󿹆 Ú�:} Rf̘á&Ožì–/_žïf–,YíÚ¶}Ñõî=>è ÞkgÞ¼Uî’KÞrÍš�t¥JÝávÜñž óxxàò¼{ç�bõ4Q»öŽî¡‡>·6|/noÈ�€:ÝŸþywÖYgÙgE�U«V ®ÅRÖáúÁä§Y[çÛo¿u7ß|³kß¾½DT¬XÑ^W®\צ:Rè;ì0[^¹reëXÕç÷¶Ûns hÈ­è¾qä‘GæV-+ËÇŽëŽ9æW¦L ºhܸ±4h�‚deƒyltÉ’%Á½§mpßè½ÍìSªCxä‘Gl_§OŸžªZ¡,{íµ×ܹçžëtNË–-ÜŸw´kTÁŸþy®û°bŠסCׯ_¿<>D5ž›�>Kþ÷„nݺE5aóvÝuWÛ§=z¸Ñ£G'­ÇŠ›@©-A)n;Íþ"€ € € € €ÅU@�sS§NMk÷?ùäwÈ!‡¤U·(+õìÙÓ=õÔSIwAËGŽiO '­”d�:r5jdKÕ‘Z¿~ý$5sŸ­!=±:qâDwâ‰'æ¾BD�óÏÃ=ùäL7`Àánذ±o½õ�;é¤cï+W.ç~ýu}ìýsÏupgŸÝ4ö~ñâÕ®yó‘N¯S§öp‡¾{läU`ÕªU°^o�=öpóçÏ�ÍÒÓðíÚµ‹½OgbܸqÁu{vp-ÿ«®À½_¶l™Ûyç�có¯»î:§`&_jÖ¬éÖ¬Y[·U«VNíEeoX¿~½Ý#.½ôR[½°»®.»ì2÷àƒÚ¶å¦ÌÊt ²Ï>ûX'w^ŸØ·•3øÏùçŸÜ{ž î=‚{ϰ ¶œù¦”Á¢N�:Áým±ûé§ŸÜî»íýMç3| '±¾Ž?þøÄÙ±÷�?þ¸c(ñ¾ûî‹ÍÏÏD:6ƒv7Þxc¬y�ì¿t¶eå8úè£�>osçÎÍqˆ5ÂÅH€ Åèd±« € € € € Pü^xá÷ßÿþ7òGf‡z¨¤:Ñôärq*×\s�uV)Ðà£�>r}ûöµÝW§Û�!Còu(r˜2eŠýu'ØäÉó,x¡AƒjÁéÇÄO•*å]Ÿ>q_|q¾Û°a€[µªopŽ/t-ZÔµz_<Á…'¬Y³’{ì±­�É]4>HY¿9®=Þ �W(SÂwß}甑AÙKÀ ÎM•p‡h:m�3Ʋ.¨ã·OŸ>îûï¿·v,¡{•¶—X¤0aÂ˶ðóÏ?[�ƒnz÷ÝwÝ{ïÅgQV•fÍšYƼ�Øf¶ßë8}ð‚ö]n³fÍr_~ù¥ÓýG�Âù½ejß•9F÷Ñ Ø9ÎT»Ùjçí·ß¶àe-(êû¶ŽQYCô}4gÎdÆ –�Çä6Ç£�>jTç�w^�Ér³Ñg÷±Ç³íøÏØsÏ=—t»Gu”eaP°ˆ2†P( d`( g‘c@@@@@�!0|øpëˆÐÁ|ñÅî€Èq\ê�TÇšÆâVgVóæÍãž‚Ö Jw­ôîz:ZOžª¨Róô”fxlw=;sæLk¯I“&ÖžÒkç¥ø zúZA áâŸÊVGQ8•¸:iþ÷¿ÿÙ±¨3I�˜û¥÷¯¯é~øÁRák,u_�Qu>ûì3·víZ·ß~ûÙqøºzýñÇÝ™gžé”ÕBªá§mÕ®Rí§*ëÖm ž€ýgЙ¹,×½sð${ƒTÕcËÞ}÷w £ìýüù—O%Çwú¶o?&x*ý7|ø ò–mÃ?¯ÆÓ9†ØN1Q"V¯^™Þ^¦­[·¶cÞ´iSZ™Pô”¸Òí+éÎ;ïtýû÷ÏÕ,Ùöµ¢†fÐ0Ê  ¾,\¸ÐuïÞÝÞêzÖçS%� éÜ ­±\þѰ \¸é¦›ryŒ?>–µ"1ãD.Íflñºuëìé{Rä–ECÃã(øB÷ÖÚµkÛ½PA‰%ñž*o�‹òåË»êիǪ+3††ÞÑwކ%Ñð µjÕ²axªU«–ôiÿ.]º¸_|ѽúê«6œP¬Á?&t­hˆ$eØÑöt­)cƒ/‰÷÷o¾ùÆîï DP‡ý.»ìbUµßZæ‡�8ðÀc{|[zMvmŽ5Ê2Œ¨Î/¿ükWï}ѱë{6ñ;Ì/Wà€‚Œ£!êÕ«çöÞ{o¿8Çkn6úœèó¢ïêxÀuîÜÙ¦õ]­á/¢Š‚Š”©HûR\27Eóˆ n  € € € € €@ Ãh¸_û :~rìM|°%ˆÕñuƒ'4·OgÆÕ‚¬ÞСC·^[‚Ž—Øz÷Üs�Õ R»o¹êª«bóÃíýë_ÿŠk/·7ÁS©ÖNÀ�£jðÄulAp�-:b¶OjÇæûmk?ƒ'»ãÚ:žbõ‚޼Ø2ŒÁ“á[‚žXßÖ%—\²%’°úA§mŽå¾ž^—.]k7ÙÄo|´qû–=öx h7Y­œó§O_lëiÝU«þÜ_s„ocíúyé¾Þu×]±ã :WÓ]�zÛ™@°c×I0BÚGþÌ3ÏØ:úLFi¯UQë�èÖ^�í ªŠÍ b×sÒJÁ‚¼Ü Sµã—éªû@èágŽúåÓ¦M‹›_Xot×þÉÐßÓ·œlѽ=|_óÓºW†ï�Agw¬žî}ºWúcÔ:¾á[tÍøvü«¯{Ë-·øªq¯A'º­£záíª’îÅ#FŒÈѦÚnѢŖ û…µ¾¿Ÿzê©9ê�=zK�idK˜“cY$·?©ÞAo±õõ½U‚€«£ý— ¸cËå—_[ßûèUn‰ßeZ7•�o[ßijCúþóÞú!U¹þúëm½ .¸ U5–!P,¢Cu‚O@@@@@ pôéé§ŸnûûßÿnO\†·¬§¡[¶liO ê)РÃÉR¹?ýôÓnêÔ©îœsαá&ôtl¸ÜvÛmIÇýÖxêzú4èq×[O¿*M¹žšíرc®Oú†·“j:”°ÅÚŽ2?èIØÃ?ÜRÛklyí‡æRv,M›6µ'Yõôp:åᇶjzCí*µ½RÕ?ôÐCöä´R˜+»‚Rà?ûì³æqÒI'¹½öÚ+Ö¼žêÍ­Œÿ­UéÝû€ ½Üjÿ¹|ĈOíÍ¡‡Ö¬Ëý¹à�©V­ö²ùóçÿìûR×´i�u˜�@^‚*K—¯ÏôÕW_m«+ûAºEOú«tíÚÕ†PPöe1Ùi§�ÜÁìŽ8âˆ\›RF=MþÏþÓ>ïúŒêÞR�’ß{a:ÛT&˜¨¢Ì4zª]ChèØ »( „JïÞ½“fŠQæ›»ï¾Ûîç7Üpƒe_;v¬{å•Wœ¾jÔ¨ËîÞÿúõëǾ#t�Ö9SÑw’ÎH÷ä3Î8ÃU¨PÁîѯ½öZ¸‰Ó&IEC‚„³ýhž²o�št=zô°Ì;Ê¡6'MšdC…3Føû»†AùË_þâ>üðCûTV_t-rÈ!î?ÿù��']ï�:uJ™Á¯ûÖ[oùI·Ûn»Å¦ý„²_ø}Ðg!\”±#j0s -¡ëDY2t¾ôªŒÊ*.©lTOß—úžRÑöôÝÔ­[7Û‡ ¨È�x≶,êÕ‚í;\C^”.]:ªó(Å"Ì‚�D@@@@J¨€ž† :ˆìÉÉ ³}‹ž¤M,Ag„-W==õ.AÇ•-;å”Sb³ýÓ«Á_©íéÚ ½µ=ùª¶•yá£�>²u´<èh‰­§‰ ³Ë–é ÒÄmÅU ½I–�AOß{ì±Ö^»víl�;î¸ÃÞëÉî ³,ÖŠ¶¥ã×>]tÑE±ù¹e`Ð~¾ÿþû±úš:r¬� Ã/n¾žðUû¹=É·ÒoöÙGçàö-Ÿ~º(jqŽykÖl2\¼mëh½iÓæ¨ãgôé3Áê=òÈç~VZ¯#GŽÜ #b?z*�‚€‚Töv�ëZ×Oн%dÈNÐ)lëú§¿}[þUTR]sA'rÜ> KÌ@Îv�˜íBߌe-ðßa:ö 0ÁoÚ¾“|ûº÷…ïýÊôqÐAÙ¾l±u’MèX½mß¾}#« Ö^$˜cy0ă-S¶’pÑ÷ìóÏ?¿eΜ9áÙ6í÷=ÑÆW|饗¬MÕó%ì°y:áïL¿<ü*Õ † Ïf�b'@†à“LA@@@@ŠB Hî‚tÏ–5 èHqʨP¦L™»¤€·yA§Ž�C® Ì AP@lìøð2Õ×™á¢öõd®JÐa—c¼ð¿þõ¯¶Žž U6ƒ8 ¼zÊé ÃÆé‰Ö cÓžÖ~ðÁÝ·ßnÍ\ }TñO *Ó„žæöEã«4ÈžÄÕÓ£�<òˆ_”ò5VÃééÜp9í´Ó,»„ž"ÎT™;w™5U¯^Õ\›|÷Ý‚,oOá.³ì ¯¾zFðävΧ{}CõëomsáÂßý¬´^{õêåô“íòÎ;ï¸3fäØŒÆ\oß¾½ÍO§ŽÆ¼÷Oö‡+_¾¼=­­y…Y'èÀtºÖ¢Šž×Sëű(ãHøizeÐçIOˆ�®i’ÿܪr0ÔŒÝôy :Ñ]0TŒe9Ñßzr>êž•¸zR]Û?9ŸÖŽ$TÊë½ðÉ'ŸtAàDB+α{›² L˜0Áž¦ßqÇ�ž¦¯R¥Š †3p¯¾úªeP•*UÊÑNaÌнX¥^½zöšø�²×¨è»$œYFóôľ¿”Acï½÷ÖìXÑ=^Ë}Ñ1* À¸qãlÖ�wÞéôù �Ûd%fþ7”!1û€ßÏîÝ»»N8!® ][A�KÜ<½Ñý=œYHßÊ £ý>÷ÜsãîýeË–umÛ¶µ :ÖTEß½_|±eJÐgâÚk¯�¬®ì!*Ê”X´ÏÁ�–­"#ö9ÐçAŸ�Ä’ÊÆ×ý¿ÿû?› ß×�9æûÜj[º•‘!YÑ=YŸÝE‹Ù|š&«Æ|¶y¶ùSÄ"€ € € € €@IPp�:uÔ�<)ëªV�î÷�ÇJÉý·¿ý-’C�Á“²–æÛWwLùyzõbQéЕ²Zó•Î[y `Pg¡~ÂE��?þ¸kÞ¼¹W·Î%-W:ðÄ¢á1|ùùçŸ]­ZµüÛ<½V¯^Ýê+ýw&Êš5cÍì²K…Øt²‰k¯�lÁ �;7q÷Þ{B�ÎýÏ@�¨uêÖ­b³þ9o Qmec^ðT° ɑض:~}C:u¾øâ‹È4öjW×¶JaÖ ž:Oº?ê`-® J…7*Á�F±ì áz×_½Sˆ²7è;Õ·©:ZvóÍ7;¿?¹Ùh�ù¢Ïm¸ø e Q`…>ÏQÅwC2E-fÅF õ'¹Ø;Š € € € €=1Û±cGÛá»îºË©C0YQšj= «Œûî»Ï%vl$[/Õ|¥"WZyÿ”ub]¸�×,=�zÍ5×$6{¯ãðÇ¢mûL ¾‚:y|Éf²Ò‡ç¥T­º5…úâÅ«ÝÆ�›ƒN©ÒyY=׺‹mͼP­Z|ªö\W,¤ íÚµsúIUÒ©£k7·ë·0ëè³¥¡LJz Ÿ(è ·y(�DÙÔé¬üÄ¢{ƒÚÒp1éì¢Ôÿù-ù¹^rÉ%ioN©úõ.Jû¯{¯î[©‚ÂëdrÚwHë~¹qãÆX‡xxÚ/Ýϯ¼òJ!¼,?ÓþzY¸p¡eÍI70î_ÿú—Y)[€†àH,¾â³Ï>³á —Æ{eäѰ/¾ø¢�ω'ºÄ@¿ÊÒà‡1Ò�QE�Wú¾Sö—®eÑ´²+és£!-Tr³Q?\…¦‹ÿÞÔ|íß¾}«Ø{7¨øëÆÞðÅP ³¿eCv@@@@(L�ÇîÓî÷èÑ#i ûð>xà�öVÃLd¢4nÜØšQebY¶l™ûàƒlv:�‰ëçöÞw`O™2%GÕ?üÐæ©³&Yºô+åa†ËÝ?ÕœîªeÊ” žHßš}!�a&Nì‡\d Øšê<·íÌ›·5Ý¿ßFnõýru²é‰â¨T꾯hè_‡Að×�®¥pÑÓü*o½õVx¶MoذÁ†\Ð_/G¥„_~ù¥ÍiÔ¨QÂ’¼½Íô½0ÕÖ褧õU Ë$“j�L/óÙ0Ô®†Õ‰*þžúÊ+¯D-Îó<ŸiB�Q÷édA+FA¥W¯^‘ÛÜwß}m~¦¾Ç"7’d¦¾×L Î 1uêÔ¤Á jBß� Ðiݺu®�+ú¾:þøãmx§O?ýÔ26¨ MáKn6_}õ•¡¨¾öUCÀ$þÜyç�Öœ†dJV”aE¥¸“츘¿ý À°ý�sŽ@@@@ŠH@�…¿Z#t�{øá‡s�^»êŸ"VªêqãÆÅí½:Õq•j\츂7gŸ}¶Í5j”{ç�wb‹õ„ï 7Ü`ï•V;ÝÎÉXiL(�¼ŠR÷û”âz¯À¥ÝV¹üòËí5ÓÿøÎÛñãÇç¹é¦MkØ:3gæ>¶ø¬YKƒÞ%Á1%‡=¼Ÿ}¶µc²Q£è1îÃuÃÓÇ·'²•¦|ÅŠáELog#GŽ´'ðuo eSQ | CJÒкvôóä“OZÿOŸ>}lòé§Ÿvî&\n¿ýv{Ò^í|ðÁ±EÇwœ Á ûH¸èþôè£�Ú¬V­Z…åy:Ó÷B¿‰YY”ñ k×®Ö‘­jïáëæ«¿Ïœ93r³çœsŽÍ×ðº¯*À$\4|ÇÉ'Ÿœö=BÃ"øãíܹ³�u°¿ùæ›î¬³Î²L@áö5­ëNqvãÈ#�L\lïÏ8ã {ÕwXb¶g(sƒö5ÓeÁ‚NÃ/Mš4É^?þøã\¿Ûžxâ Û íSTY»v­;ì°ÃÜÛo¿�c±ÿ^“£J:6ú.VéÔ©“K6Ô‡Î…Š²˜hè–Ä¢ 3f̰٠6L\Ì{Š•CH«ÓÅÎ"€ € € € €@qPzgu©(ÍtnÃ$Ü{ï½îüóÏ·€ƒÑ£G[ ‚²7(øAO"+Å÷ûï¿o�‰ûï¿Ú4êS ju€Ÿxâ‰NKJ®§Nµ_*Z–nêð´7T<ï¼ó܃>hÛiÞ¼¹S§Œ:PÇŽkCZ¨S4Õ0yÙVbÝ“N:É:R82kÖ,ëÐýÏþc�>É:�|íÛ7 :À~ R„ÏžämàgG¾vêôrp,«Ý믟éN9%uG’ê½öÚ×ÖNË–u#ÛK63üÔ|x:Y}æ—\°Üÿýö£ …8À­_¿>.àé…^pz¢ß—ð5žÖr=Õ¯ÏáwÜaÃÝœzê©ü Î_Ÿ¡EAêÜ÷EOëëGót?RÀ�2/øNU/(…¸¨ãúâ‹/¶Yá!d4�ŠÚR…/ ¾Êä½Ð·;`À§ 0uëÖuÊX¡'ôUd©{“†¯(ª¢{¾:ß5<�’ ¼/šAà i eŠP°ˆ‚IÈðÑG¹ùóç[õ¼djQ ›²o¨óÝwä·©s¢ì áï‡gžyÆ+X&<߯£WÝï5dË­·ÞjÁ ºë:Q€�ÿ^ôÁ6áõ :­Ø3gÎûîŒjSY”¡A™`¡ãL/¶C´¡¡(t�èûDß¡úóy¹Ù(xÆgUðÁ(~;áW}žŽ>úhûü=ÿüóö/W‹Î‹~?¨U«VxÓ;ŠÝ)c‡@@@@@ ¸ $v쨳!UQ¤/ê´S‡¡:EÔAâ ´\Ùü“Ézï;)K—Nž„÷î»ï†8hhÙ^zé%­fEÁ êpùË_þâgåúê�Ë¿¦ZAÁ ï½÷žP(­vøI\u’ªó-<~w¸ÍðtªcLvÜzºUY,ôyTjôTûÝ®]׿ÿ¿ƒÎÔYnĈÖÁïå“V/Wnk'qéÒ¥’Öñ F�žc“­ZíÐA•”@í„·©ù Z§Ú×<?O�ȉ%/÷ÂÄu“½W‡´‚Â� xºí¶ÛâîGÉÖÏæüvíÚ÷žþÈ1bĈàÞS%Çæ®¸â �±¾ìà‹‚04\‘Ÿƒ¨ó®õ4Ì‚†CÐu# »£e¥P@‡†3ðxʸñÀØæRuÀ«‚®ƒýöÛÏŽGúQÑyîÙ³§S0†Jªû»ßgÿj+üñ�?6ÿªÙái}ç&ûÞ]²dkvÿ}¨ì +V 7›.W®œ]ï�<òˆ›;w®ýø… 2P †AJÇF>ÈD™2Rés¥ÏŸ¾ÇÂåÿþïÿì­Ït^Æ4ÅM TpSŽب¸û‹ € € € €lgnAéßÕ¹¢'†+Uª”ou°|óÍ7î—_~±€†Â|rS�bz"VO7nÜØ:±ò} yXQ�¦óæÍ³N2uÔU¨�^àÀ…¾éFŽœ‘é† 9.[Œ®ºjÕ:רѣ–­áã�Ï :˜kGWd.i (èIO´/Z´È®o)©#µ EOòû{Dýúõ-[Kªö–-[f²+W®tµk×¶L ;ì°CªUò½,S÷Be°Ð½H¥I“&®ZµjùÞ§l¬¨¡w4Lˆ؆ ’rº¯*€E÷v}?ä–]&ec •BOûkø„N8Á^•‰@h nH·øëDkuêÔ±L<é®›ÍzCA I'�OÇá‡��wõêÕc»'£üØÄHsbÚ´i ¤Ìÿûßÿ"ƒ\ÒlŠjl0l§��@@@@@ØÖ~ùe�«_ÿáà ÞõÁã¨×(Ð.+£ÃÝw¤~?ØÝ{ï‰j‹•@ ä (ÀLÁ#Ê áo”)'›EÁ'“'Ov-[¶Œ ,Ó“ÿ½zõ²yjC�ÖcÔ¨Q–ýCÃ]ç¢á&4|ІaPŠ‚–°Q Š†°PÀ…²Gœ~úéÝmÖG È’ç+ò]c@@@@@ØvªW¯¤Joc;Ô¹ó«nùòµùÞ¹±cÿgÁ 5kVrƒ›ïvXJ¾€žê÷Ã4tîÜ9¸÷,ÏêA+ƒ‡2*h¸Š=÷ÜÓvØa6­à A¤à…ß~ûÍ�7ΆœÐ�޼üòËv_|q�¥°l4,’‚N9å‚ |Öh`[ ör&Ø@@@@@�m^@ƒ2·jõ¼›4éGwôÑ{¸÷ßï–ç}ž6mQ�îû)[oôèÓÜ™g6Îs¬€Û—€F„oÕªUpï™Ü{Žî=ïg @Ã�œqÆ6”Bx#Gq„»å–[܉'’1&ìRTÓ j¹üòËmóß}÷�«W¯^Qí ÛE £0d”“Æ@@@@@JºÀæÍ[œ~TÊ–Í{¢cAlÚ´9ßëÛŠüƒÛ�ÀæÍ›ƒ{�¿w”Íúñkx‚U«V¹ 6¸š5kºR¥Je}›l }�M›69¶¨”-›ýë!ý=£& €¡`~¬� € € € € € € €È{hh6J € € € € € € € €@X€†°Ó € € € € € € € P$0 ;E@@@@@@@�° a ¦@@@@@@@@ H`(v6Š € € € € € € €aÂL#€ € € € € € € €@‘ÀP$ìl@@@@@@@Â0„5˜F@@@@@@@�" €¡HØÙ( € € € € € € €„`k0� € € € € € € €E"@C‘°³Q@@@@@@@ ÀÖ`@@@@@@@ŠD€†"ag£ € € € € € € €  €!¬Á4 € € € € € € €‰ EÂÎF@@@@@@@@ ,@CXƒi@@@@@@@(Š„��"€ € € € € € € €@X€†°Ó € € € € € € € P$e‹d«l@@@@@@`›Xµj•+W®œ«P¡BÖöióæÍnãÆ�¶�¬m$—†W¯^íÊ—/ïÊ”)“KÍ­‹·lÙâ–/_îªT©âÊ–-Únµ?üÐÍž=Û•.]ÚõêÕ+­ýÏO¥¯¾úÊM™2ÅV=óÌ3]µjÕòÓ ë €ù C¾ØX @@@@@Ø6.\è>ø`ׯ_¿”;øã�?º /¼Ð:ç«V­ê*V¬èjÕªåh�ö)Wþcá›o¾éZ¶léÚ·oŸ´úرcÝ1ÇcA hܸ±4h�S0Ab9ÿüó­=µ™êç?ÿùO⪑ïe1dÈÛ¾‚vÜqG DÐ> >Ü­Y³&r½©S§º¶mÛZ°@õêÕÝ;ìàš5kæþùϺ 6D®“Í™K–,±ýéÝ»w·|0‡Õ°aÃò½;µk×v=ô�Ó¶t-P@�Â(DŽm)Ì ²-@@@@@@�ì¬\¹Ò]uÕUîÉ'Ÿt§œrŠ{ýõ×#7ôå—_º£Ž:Êýú믶¼S§NnñâÅîƒ>°÷M›6uêį\¹räúš9}útwà�Æ–Gu9]vÙeNì*{챇K(‹€Ê>ûìã>ÿüsW©R%{¯X0wîÜØûd:._nå±Çs]tQ¬šŽÇ³f¶nÝÚ)#œ‘á™gžq=zô°ujÖ¬éN<ñD³øöÛom^Ïž=ÝOù$6?<ñÛo¿¹:ØÓù—_~yxQÜôã�?nïoºé¦¸` Åà;LJ7\Å^{íå5jù£ ](;ÄñÇ·­doºwïî¦M›æÎ8ã Ëþ z»ï¾»»öÚk-PCïÃÇ©Œ¾(“E©R¥ü[wì±Çš¯f„ëÅ*daBÁ%>ƒÄˆ#l˜�T› ï¯êi¸‹~øÁ~’­·|ùr[¾bÅŠ¸*;v´,3fÌpÚ6(  C™m € € € € € €YP6„wÞyÇ~œrKeË–�uÞñÅ9ê.\¸Ðæi�Ä¢à‡sÎ9Ç}öÙgîÊ+¯t}ûöM¬{ï³sÌ1±y~¢mÛ¶±l ~h¿,êU� ʈ rÇwÄ ùUßÏS¦†ÄN}-+]º´;à€¬Úš5k|uW¯^½Ø´2>$e¨PÙwß}eåý»ï¾k™(œ"³¼–¥K—Ú1é¸tÎ¢Š†ÈÐre©H,:Ç*‰CT$Öã= �)2%I; € € € € € €@1èÖ­›íé AƒÜ5×\Ë‚ðõ×_»§žzÊ–�vÚi9ŽfÀ€îµ×^³ évj+ @TiÒ¤‰Íþþûï£ÇÍûÇ?þaŽ>úh×¾}û¸eùy³víZ÷Ê+¯Øªûì³O¬ e 8âˆ#콆×xâ‰',‹�f¼þúëLP¹reËÆ[)‹ãÇ�·Ö{÷ۦk×®m'ª÷È#�ä¨þñÇ[`ƒŽ©k×®9–+£‡–)pcöìÙ9–3È´ ™¥=@@@@@@`PàÂÕW_m{9lØ0·Ë.»¸sÏ=×)@@EA >C�Íþyà�œ öß÷ì³Ï:erHUŽ:ê([ôÐC6Ù§O·ÓN;ùÙ±W�cìòþûïÇæ3�dK õ7K¶¶J» € € € € € P,4,ÁŒ3rìk£F�bO§S端¾ro¼ñFŽvÊ—/ï.½ôR›_˜u~ÿýw§ݨңGW£F�¨E%fž:¦ý5kÖ´ìO?ý´Ÿš5kw¬ B¸üòË�êê<ê©üÜÊgœá&L˜àFŒávÜqGwÞyç¹*Uª¸yóæ¹W_}ÕMš4Éš¨T©Rʦ† bËO9å5EÊ•#~þùçîüóÏ·%j{÷Ýw�«UµjU׸qc7qâD ^P€ÅÈ‘#­Îá‡¡°ÊܹsmSâ!¿EfM›6µ <ÑyTY²d‰{òÉ'mú¢‹.²×¨êׯo³ýÐ"Qu˜‡dJ€†LIÒ € € € € €%Pॗ^rþ)íðá©sÚ?žN�/¾øÂõë×/ÜDlÚ0f�+V$ÝŸN8¡Ä0 8ÐÝzë­NÃ$Œ;ÖÎŘ1cÜõ×_o+ 4°üO<ÑÉÊŸkeH·_Ã(øE wÜq‡ýÄNzhb¯½ö ½‹ŸTP‹ÖW:thüÂ|¼›5k–;þøãmͳÎ:ˆÏ7³qãF§ó?eʧá2”ñAêè¿é¦›œ‚<>øà7yòd n¯›éé5kÖÄšT†Œ‚}ö”Ebøðá0TºtéØP!:tp{ï½wÒæëÖ­kË~þùç¤uX€dJ€†LIÒ € € € € €%P@�›‰O¨ë0›4i;Útêì·ß~î–[n‰­ã'*T¨à']aÖÑSöQû£�ñCÄv¬„M(û„‚T”…B*\p�ëÔ©“ëÞ½»{óÍ7m¸0¬^½Ú–럎;Ʀ5±~ýúØû=÷ÜÓ¦?ûì3·ë®»Úôý÷ßïºtéâ^xá PÆ Ãpæ™gºc�=Öýúë¯Î¯k(4qÝu×Ù;eÅPfˆ‚”éÓ§»6mÚØ6O=õT F(S¦L\“~ø¡/(Ó„‚.J•*å`qã�7Ú>·mÛÖ}ûí·v<ûÛßâÖÍôÀ })hÑ9èÛ·¯íû¿ÿýo â¸÷Þ{­Ù+¯¼2eó>ÛÆºuëRÖc! � 2¡H € € € € €”P�víÚ9ý¤*éÔÑ�‰Ã$¶Y˜uvÚi'÷÷¿ÿ=q¶‹÷ï¾û®ç{ìá4H¸èIePƒ†�øí·ßÜ;ì`CG¨^8`Aï}'{Ô2ÍSщC?L›6Í Ô9î‡(ØZûÏLðÊ+¯Ø e?(Hyï½÷,‹„&zöìé{ì1§a4Ë¿þõ/›¥ /„‹®Oe•P0ƒö+Û >°dñâÅN™!¢ö7¼šV½¨¢ë]û~Ï=÷XF•µk×: �¡`’V­ZE­›·hÑ"›®V­Zl €@¶rÞ™³µ%ÚE@@@@@(r  ²råJ·iÓ&—˜…À?q¯:6l°l ɆP6‚† ªªKVdžþÙ¼y³»êª«lΠAƒ\8 ‡¯¶eËwõÕWÛ[eÐ�©ŠŽCEÇ–x0jÔ(wöÙgÛrµyÛm·Y=›‘ð�X¶lYÂ’­o½M8p#²bfê¼(û‚d›ÎÐK–,±-—+W.Ç\tÑEÀ !_fΜiËuüõ�c…?fh •Ld‚ø£I^@�¤[¿¡’.f € € € € € €@I8è ƒìp”�`ذaq‡¦à‚xÀæiˆ‡�wÞ9ny^ߨ½pQg|×®]Ý|à ЧOŸðâØô«¯¾ju4Ã#[˜0ñý÷ß[v<ùä“qKï¾ûîXðÂÃ?lÃB¤ê°?âˆ#l}eX˜2eJ\[òR*‚¢0JÓ¦Mm3>à ¼M íá74Á‚îÅ_´*|p¸ªM7nÜØ�tÒI6=wî\{íÖ­[Žz‰34$ˆJb¶ŽÄz¼G2!@C&i@@@@@(B�I“&¹ÓN;Í~†j{¢aü¼p BíÚµÝ]wÝeu®¿þz×±cGV _¿~NË|€d(Èai8Š#�<ÒuéÒÅ^kÕªåF�mÄ ¡ ‹²>\sÍ56[CGì¶Ûn‰UâÞ+[ƒ/áiÍóCPhZÙ´ý¨Ÿ©S§ªŠYhø•ãŽ;Î]qÅî‘Gq=zôpUªTqêøWP�Ï a³øOûöí­õçž{.ÇVžyæ 0iÓ¦�í«24(@DCƒœqÆ9êkÆe—]›ß·o_;¦ØŒˆ µ÷Úk¯Ù’–-[FÔ` �Y†�Ȭ'­!€ € € € € €….0þ|§¬ᢌ~^ùòåËœ‚vÝuW§uPûNjUj×®�8ø§ÿãVLxã‡kðC+$,v (Pp€ÐPÊ aªV­šXÝÞ?ûì³( 6Ó gTðûÕ°:ã“•uëÖÙ"µ¥`xÜ|óÍnĈq«h8 B(˜¡0ŠÎEÿþýÝÓO?mûÞ®2NèOœ81¶+ ¾¸çž{’fÎð&´ÂÅ_[/Ù„‚MTZµj•´Ídë2È�@©à‹ãϰ´ü´À: € € € € € €ÅR`ãÆ�î‡~póæÍsåÊ•s{ï½·«Y³fÆŽeÅŠnΜ9Ö^“&M\µjÕ2Öv¶Ò ß}÷�[¸p¡«^½ºÙ$ ÔÈæ¾\xá…näÈ‘NÙ2† ·)ù.]ºÔ†’¨[·®«X±bÜòÄ7RC Œxã�7ǽ_µj• ¡À��?þØzè¡qËyƒdC€†l¨Ò& € € € € € €øå—_\ýúõ-Û¬Y³l‹ü4»~ýz·çž{Ú0 ^PCª¢@<(ëĽ÷Þ›ª*Ë@�Œ ”ÎXK4„ € € € € € €Pö‡xÀÚìܹ³[¾|y¾Úùå—-xAÃx´iÓ&ecÇŽµàeã²3@@2'@Cæ,i @@@@ÈUàŠ+®p_~ùe®õTáá‡v�7¶º·ß~»›0aBl½Ò¥K»wÜÑ5iÒÄuéÒÅ|ðÁ±eÉ&î½÷^7vìØd‹s̯Zµjžêçh ˆf,Y²Úµmû¢ûõ×õîþû[ÇöbÞ¼UnèЩî½÷æYpƒT®\.°ÛÍýýïG¹NØ+V·víÝC}î>ûìg7}úâ¸vb•¶“‰ ¸nݺÅmùòå]Íš5ݱÇëºví8VŽ[Î@@ ?¥¶%?+² € € € € €@ÞŽ<òH7uêÔ´Vüä“OÜ!‡bu{öìéžzꩤëiùÈ‘#ƒŒÉGVðĈ#’¶‘¸@�Ò«V­Jœ½Í¿?ÿü7Ü“OÎtî† kÛß·ÞúÎ�tÒ‹±÷ ^P�ƒ/Ï=×Á�}vSÿÖ-^¼Ú5o>Ò^§Níá?|÷زíiâ믿v�5JzȺNþýï§D“´ € €� \ € € € € €@! üøã�nõêÕ‘[Ôófç�wžSàÂ{ìáf̘ávÞyg«ë®¹æwå•WºuëÖ¹ŸþÙ½øâ‹nøðáVgðàÁnàÀ�‘mk¦ê/_¾sW]µ5#F¸�TÓÞQutîeQœK�:ul÷õÚ¬Y3wÜqÇÙu£ãüè£�\ÇŽc‡§ëAÃ¥èœêØ›7onÃNÄ*$L¬_¿Þ‚v´Î;ìà;ì0»¶tmT«VÍiH“pùý÷ß­ýï¿ÿÞ†SÙsÏ=mŸx“XÖ®]ëþûßÿÚ5¦kS×Wƒ «å¸†øá»†µ¾ÖÑ1P@@ {És‰eo›´Œ € € € € � ðöÛo»~ýúÙ\eE8à€j${òÉ'ÛBelPf†L”wÞyÇ)à@C¨ó6±,]º4èè¯cuÔ�¬2lØ0{ùå—»6mÚ¸† ºÎ�;»3Ï<Ó)Øâ–[nq‰£oÚ´É2Hì²Ë.îØc�u½zõríÚµsꌾþúë�:µÓ-ï¾ûƒ›;wYøPÙµm›³s:Y;5jTŠ-ªR¥|lÚO\yåÁ6y÷ÝûYi¿>úè£f"Kuè—´¢`šC=Ôkúôé±ÃS6Åøszâ‰'Z0ÂСCÝÆ�cõüÄ´iÓ,8@m�þù®{÷înŸ}ö± ÙÝÿý¾ª½þóŸÿ´@eéÚµ«ëСƒ;ðÀ�®#ò„‹†lÑu|ÐA¹=z5Nµk³K—.92’økX™NÎ:ë,;w§Ÿ~º;çœs‚,û»K/½4Ç5ÞÓ € P0�œaˆk�µ@@@@@ò( Ôûê$Uùûßÿn�þyibÍš5V½råÊ®\¹ryY5iÝSN9Åž–_¼x±{å•WÜÙgŸW÷©§ž²÷­[·ŽËÜ ™O?ý´-Sçµ1Ô9­NäAƒÙ�á¶ÔQ|÷ÝwÛ7ÜpƒuJ�;Ö¶yÛm·¹5jÄ;¬ÑÿŒÿ­-íÝû€¸a R¬b‹FŒøÔ^=´¶ #‘X¿U«½lþüù¿ºÙ³—º¦Mk$VÙ®ß+û‚Š‚T´qñÅÛô\`Ù7”…AFtŽW­ZeC¬Bð�®Ñ´iSwÆg8eôÐ5óÚk¯ùj±×ñãÇ;µ«¢€­»hÑ"7eÊûQ&ͨh˜‹#�<Ò¦O:é¤ ›Æ)H2bÄ~å»ï¾³í”.ÿ¼çÃ?lë¨íÃ?<8ï³Ý»ï¾ëzè! °QÀ@2/@CæMi@@@@H[@�¿J»¯WuŠÞtÓMi¯«ŠÊPpë­·Ú:ÇsLƆ(P ÿ¿þõ¯Öá|ß}÷Å0(kÂ?þñÛæ•W^i¯áô¤»žÀ×ë*ʺ '×Õ)¬}õ *@Á *êhÞk¯½lúÜsÏ †lçÚ·oïþö·¿9etH'0cüøïlýöí÷¶×ÜþY»v£»îºÉî±Ç¶fxè¡6‘«”-[ÚuëÖ,ØÿÏÝûïÏÏSƒ²ø¡ Ê”)Ù~qž©`?ìÉ!‡bCˆôïßßé™gž ܺÅOAG}´»ãŽ;\ïÞ½- ‚ê:SéÔ©“{þùç�†DñeàÀ�±ëÛÏ=z´Mª K„ˇ~h~Þ€l²OŸ>îÁŒ}>`¡á ´ï/¼ðBìšôë)ûƒ²xAËJ•*eÃAhZǺ|ùrMÚ1èUOÓûà½WÑ�Ê(¡òã�?Úknÿhø•zõªæV5xšþ‡ ;ÄA Æ4Ë®ðî»g™vKº^ýú[Û\¸ð÷¤u¢hH eÐO•*U¢ª«yºö\2räHwá…Z6€†XP¦‚÷ßß‚qt=û@€Gu”éè½®!eQ{*wÞyg\ð‚æéÚI,>˜E×àï¿ÇŸm£mÛ¶¶Š†ì˜0a‚M+"ÜVÍš5ݵ×^kË|@Dx;={öŒ ^вÓN;ͪè\R@@ ;d`ÈŽ+­"€ € € € €¹ :Ô:ñÕQÿú믻ªUsïxòÉ'�~ÂE�Å�?þ¸=Qž_ÐéÚµk»îÝ»;=I¯'Ý•>_å�°WeGÈ-àÂ*ÿì¹çž� L?ýô“Sf‚ÿþ÷¿¶X�áQCø¡ À°÷Þ©³*¬Y³Ño*Ê Bl:Ùĵ×Nv xèܹ‰»÷Þ‚¡+vJVÕæ×­»5øàçŸã;ÌS®Tj†Ä¢ëàæ›o¶Ù’AEÃ6$Ë ù’Açzîܹzë¾þúk{Õg aÆ6�Û?bBÙ<Þ|óMrD�‡v˜kÕªU�£ilu¿/ VØ}÷Ýcóý„2…¨hȉtJõêÕ­ÚºuëÒ©N@ȇ ù@c@@@@@  êÄÕSá*cÆŒq�5J«É#Ž8Â{ì±NCø M+€!/eâĉV]CÔªU˦›5kf¯¯¼òJ^šŠ¬[¦L)ç³/¤3ÌÃĉ]‚€Š+‚ [3D6š9oÞ*{ç·Z”rR�ò›6m²Ÿ”KÈB? ÄÛo¿íÖ¯_Ÿã¨Þyç›ç3Žø€ 2eÊ”õW®\™cžŸ¡Œ⢋.rcÇŽuÏ=÷œ-zá…ìUJTÔöìÙ³m:ü�ß^“&M³™F@�" €¡ñÙ4 € € € €l_êÈîÖ­›ûöÛo­ãUÃ2”*Uj›GèÒ¥K0„BeË  Îà-Z¸æÍ›'Ýo  Ž{_¾þúkwÕUWÙÛë®»ÎÏvçœsŽMO˜0ÁÝrË-nÆ ±ešøüóÏÝÉ'ŸìV¬X7?Ù›¦M·0sæÖa ’ÕÓüY³–Y%–¸åË·g‘ª®–}öÙÖá5Ú%·ªqˇdƒ(k?éG\ÅìÍqÇçöØc»Vn¿ýö¸½æ™gÜ|`ó”IDeÇwt}úô±éÎ�;; ­òÕW_Ù0%g�u–»ï¾ûlYøŸ³Ï>Û=þøã9®—üѪí´ÓNöª¶»wïnÓýû÷w«W¯Ž5óå—_:�•óÏ??6Ÿ @(Z†�(Z¶Ž € € € €Û‘ÀO?ýd³:äÏ>ûÌí¶Ûn)�þÞ{ïÝ&:WÕ¬§Üï¾ûnÛ_Ÿ‘!ÙΫcXÃMzè¡nÕªU±'ë÷ÙgŸX ƒÖÝ{ï½­ƒZCH 4È=úè£Nà døè£�Üüùóm üH§´oßÐMšôcð$þl×¶í֧שÓËA'ûj÷úëgºSNi˜¬šÍW½×^ûÚ¦[¶¬›²nâÂp Gx:±^Iy_¡Bwÿý÷»N�:¹o¼Ñ½õÖ[îàƒvß|ó�7nœ¦®Ÿ…C3n¸á«§À?´Š÷PàŒ‚fÂ�>¢wïÞ¶ÞÑGíöÚk/÷Å_ç~’­öÐCùÕÝ­·ÞjCK¼ùæ›tsÒI'¹ß~ûÍ=ýôÓV§C‡ÁµÒ6VŸ @(ZŠÖŸ­#€ € € € €Àv$î„Õa«c6U §à÷ëú×TëåeYºí©£X zºÞ�‘l; TX¸pa¬ÃZõ.¸à{â½bÅŠq«]qÅnÿý÷·¡4Ôá‡P%  a6üõq+F¼i×®�ëßÿßAçô,7bDkW¥JùˆZ[g•+WÆ&J—Î=ÆèÑs¬n«V{¹�w®�´Í¨aßðtTÝ’2OÙÞ}÷]wî¹çZÆŸuAÁ RéÚµkÜ¡êšúôÓO-˜eêÔ©nÍš5l zâÎ;ïŒ öQÆÕÑõ~Dí 6ÌuÔQ±öÜ0}út»Ž´áà†ë¯¿ÞÝtÓM±ºš(SÆ_9X—.�s^ÜʼA@� ” ">ÿÌãUàæh@@@@@ $ (hAOЫ3Yéø£Š:„o»í67tèP7`À·hÑ"ëh®_¿¾ ¡µNxž:¥õþÆ�]ݺuƒ`��ËӚ¾ðÂ7ÝÈ‘3Üõ×é† 9.­uRUZµj�kÔèQËÖðñÇçY%j§ªÎ²eùþûï]íÚµ]½zõ\^ƒ”ACŒ¼ýöÛî„Nˆký÷ßw6B�@ ^PV€Wñ�7Ë—/·á)”Q¤qãÆ®\¹rQÕ˜‡ €E(@†"ÄgÓ € € € € €@q˜={v,›BÏž=ÓÚå²eËZ§rZ•ÿ¨¤ì Íš5ËË*9êÞqG ÷â‹s‚ Š�\·nM]Ó¦5rÔÉËŒÁƒ?´à…+¯<˜à…¼ÀýQ·N�:N?©ÊÊ•+ÝäÉ“]Ë–-�²4øòÄOXð‚æiŠÄ¢@„}÷Ý7qvÒ÷ ˆ9âˆ#’.g €½ùŽŠþ° € € € € €À6-pÿý÷ÛþõîÝÛÕ¨Q°€€lhõêÝ´±Ítîüª[¾|m¾79vìÿ‚a3>v5kVrƒ›ïvX1µ€2uœzê©Á�UÜž{îé;ì0›îÕ«—­¨¡KªU«–º–"€ €@‰ €¡DœF@@@@ÈŽ€Òî?üðÃÖø%—\’r#¥J•²åþ5eå,.ìÞ½™kÑ¢®›={©ëÐá¥|miÚ´E®S§—m]DT­Z>_í°Rîʰà3#ÌŸ?ß}òÉ'6,„æMœ8Ñ)p†‚ €Û‡@©-AÙ>•£D@@@@È�ÀÆ�m5 ‘ªlÞ¼Ùé§téÒö“ªn¶—mÞ¼%Ø—­þ.[6ïÏòé/ç›6m¶ÝÌÏúÙ>¾’ؾ®³U«V¹ 6Y/jº¢„)‰Æ €Ûº Ûúbÿ@@@@@@@Øòvº pˆ € € € € € € € P¸0®7[C@@@@@@@�"P˜… € € € € € € €…+@Cáz³5@@@@@@@ˆ €!…Y € € € € € € € P¸0®7[C@@@@@@@�"P˜… € € € € € € €…+@Cáz³5@@@@@@@ˆ €!…Y € € € € € € € P¸0®7[C@@@@@@@�"P˜… € € € € € € €…+@Cáz³5@@@@àÿÛ»0)Šó�ãµ"‹Ü7ŠË!ˆ �x¢¨  ’Äã‰GÔ(ñˆ� j¢Æ(Q¢¨Q#AQÃ})ÞT¹å>ä¾oö_¿"ÕéééÙ�åØÙÈ·žg™žêêîêOw�yRo¿… € € €ÄÀƒB € € € € € € €® …ëÍÑ@@@@@@@@ F€†ª@@@@@@@@ p`(\oކ € € € € € € €10Ä P… € € € € € € €…+@Cázs4@@@@@@@ˆ(SG € € € € €@˜8q¢ùæ›oLË–-MóæÍ‹H¯övc×®]¦xñ÷3�5Ê,_¾ÜtèÐÁÔ¨Q£H�k~�Øn²³³“ÖÕŠ}qÐyvØa&++«POËÿ†têÔÉT®\9öØûr>±;¢@à Äÿ/¥ƒr(vŠ € € € € 0vìXó׿þ5¢T©R&''Ç Ü·k×.!(`èСæÑG5�<òÈA `X¸p¡ùá‡\j×®�зð ¿ñÆfôèÑfòäÉfúôénuÓ¦MÍ)§œb®ºê*ÓªU«}´üË_þb>ûì3óᇦÀУG3eÊ”pÝòK/½dêÔ©ã–µÏwÞy'hS¢D S¶lYS±bE£~wéÒÅÔ¬Y3X¿/ ~¸Ðtí:Ìm:a•Á.>ýt±yæ™Ifüø%fñâ�®¾jÕlsî¹µMÏž§™ãŽ«´µc½¦{÷·Ý÷yón°ý/¬Ëô¶mÛÌ«¯¾jFŒá‚i/^ìºtôÑG›Î�;›{î¹'éz…ïóöíÛ›;ï¼3ö4Æ�oî½÷^·®E‹¦wïÞ±íæÌ™c}º»uº^Œmç+—-[fžzê)óöÛo›©S§ºêªU«Ú‘ºî½øâ‹Íi§�–ð¬éþÖx¿~ýÜ}õã�?ºí4h`¯Õq¦cÇŽî/¯û¥ÿþ桇rϸ`9r¤yë­·Ì_|afÍšåöY¦L¨rŽéÕ«WÒs­ ˆ+®¸ÂµÓ±þõ¯Å>SëÖ­3—\r‰ ÎP°À¸qãRiôìÙÓ|òÉ'nŸò>÷ÜsÝrÜ?[¶l1/¿ü²;îwß}g6nÜhÔßúõë›Æ�ÙéÜT. ´zâ‰'ìý>ÞÌ›7Ï­’·~SÚ´ic.¼ðBÓ¤I“ð&)—7lØàŽmðÚk¯%Ýk¾�èû÷ßloƒ*ÖÇÙwëÖ-wóæÍÁ6Y°Yr4xÞã/¹#GÎIØô¾ûþÏÕk�þÊ”ù[Â÷3þ{�µác�}îÖwèðVÂ~2ýŪØ~ý÷ž�šë>°™3º½Ïm0@Âzÿå‚ .ömô}uÒçƒ>´S_ì`yR_aVÚ†û^~÷Ýwý&¹[·nÍ ÷Eí¢ç©:¨l]عsg®&–,Y¬ŽÛO¸}ôQÐV ³gÏNè¿Íè�°ÞyüñÇÚéøqeýúõ ílÐC\3W§çܦ$´�ëô·"z}Âç^N÷9Óo`x;¿wíuýýŸ¿·•eÆ×ùOe¢¡ €`�ÁÞ@@@@@òðo¦+›A´èMkû»¿U«V¹ÕÑ zCzÈ�!¹v7×Gw‘ðÝææÚ´ñ¹vJ…\;¸škÖë‹êìàª;æM7Ý”«ýû?›JÞµ·S^ýÊë h;˜—kƒcØAã\µWF0�krõv¼?· á š�Áoo[]ÿtŽÑâ30Ø�Ìè*÷=ü¶¾M;Ÿ»{÷îØvq•6pÁwov…eË6Å5‰­{à�OÝvuë>—´þ‹/–ºuU«>�»~ý¶¤õùU(Ó�®Ÿ�† ¿¦i¯·ƒî¹Û·o�mà 78{e ŸŸwÞyn½ÞT×ý.W^y¥[ç3¤ÊÀðé§ò2.»��Š!XŽË8 {Lmu<;È>\²ž ;mJPç³<ýôÓA]tA™ ìôÑêà» ‚qÇ>|xP§…TYìÀ¾k¯þ†³®ø ê“�¾Âµ± ûÔ3­í¼�–ã<´‘¿ÿøÇ?rm �ÛÎö'ìO_tßh?úÓ³œªè™¶S½«ó›ß¸mìÔA]tA}Óo@ª>FÛ‡¿ëþóýJõû3mÚ4×&zˆë*7_Ö@�ƒ/@û_  € € € € Pì@cÐ�o¿ý6XÖÂÂ… ]–Í'ߥK7Ç»¬36èÀ½¥œÐØ~±ȦB… æŒ3ÎpoxkÎûjÕª;…{ Ü··Ó'¸7ëõýïÿ»›¯^ÇПÞV×›ÔwÝu—k®·™}¶¿}ø³yóæÆNGTÝzë­¦^½zæì³Ïv}·ÖîíøÊ•+›?þñ�±ý6.¤e–9r¤;šÞê?~|ÚG~饩®m÷îÍLõê¥ÓÞ®råR®m¥J{?Þ|r sÒI5ì›ü[̈s«ÒZ¾æškܵk×®]ZíÓiT¬X1søá{³FDÛ7nÜØUmÚ´)ºÊ}×õW†��7šþýûm”yD™<ì½»7‚1 Ê�¡bÊ]öeP¦;õ‚«ÿcƒn‚¯êwªrúé§;'¿^ÙT²²²|UÒgÙ²eƒ¬Ñ•Ê<¢¬ê[Ô>;;;ÚÜ}?î¸ã‚zeTˆ™+#€Šž[_l��ѳ¨rç�wúêØÏE‹¹çX+;wîlt¨Ø÷þGÙ&Ò)ú 8õÔSƒ¦~»ÃK=äT¼xqó‹_üÂèó`”W_}Õíö·¿ýmÂî÷÷º&ìŒ/ €…"�ú¿&…rx‚ € € € € à4ƒ/åË—÷‹îó¹çž3öís;¸}’±ó´û¶º«öÙgͨQ£Ú*•ºOK¯A_&(…½Ê½÷Þ Šê{ûöíƒTöJó®@ÿ—““cì[êjæJ÷îÝýbZŸ ~Ѐ®zè!—ò^Ë*�=ö˜Ñ9…Ò±cG7�®¾È8Ýâ§y¸üòôÓãoÞ¼Ó<ÿü×îmÚäÄêškš¸zM%QÔ‹¿÷š4ÙÛç¸þþápÕš ÁôéÓÇÕÝÿýyjë™8p k{饗MÇpÅW¸ï>°Á}ùÏ?>(@Ú·¦”H§´lÙÒ5ÓTšÞ¡ å�7Þp›( (U°GtŸãÆ� ªªW¯,‡~õ«_Mß¡©0&NœèVÉ|Ö¬Y. £¶ 4Ê«ø~)x@Mš*EåóÏ?7šN%\êÔ©|•]t}°2²à§‡:t¨Ñ5±Y"-îW›$ø-Ñ=.û{]Ãûb@ p`(gŽ‚ € € € €ä+ðè£�mü@¬¯Ð›ê6•¾ùòË/Í3Ï£ˆ*l¢{KEÏO¸(@ ÂŒ×q»víj4€¯Aye =ÚNƒï*Ó§O7/¼ð‚Ëv¢ç®J•*.'nª‡¯¾úʵ?å”SŒ¿�ÂûŽ.ïÙ³Ç\ýõ.8Hç¡éTò*:(Ã�*ÔweTÈ2eŠë—¶Õ5òÅgAQP‚�ÉÜW»ÏxÀMOá>ùäl¢©'@rì±Çº ¤ðFÊ¡À*ÿû¤é= dtÍu\‘(€béÒ¥áÍزñÓc„w¼?×5¼–@ O€†Â³æH € € € € €@ 0uêT7¸§ „ßýîwnžz jÐôºë® Úåµàß6¿î§|hÕªUì[Ýš‚BE)èÓ)~ xÁ‚é4Oh£ôÿÄTêúzõ꽯,$UÑE¥øÁÕèÔ©ú·råÞ†zõ*¤jÔoÚ´ÃfÁgKv˜<Ý|ñůMNNÙ`}tAuë–wÕ«WÿwZ‘h»L}ß°aƒ»wu)PfÀ€6ˆ£XžÝùùÏî¦=ÑàöŸÿüg7 2ˆÛXÁ$>@ÁO} v:–¦FQѱ£E×ÐgzД ÊþÑ¡C‡ K€åõ|Œ?>aSµY¸p¡ŒW–eðY¤~+"Z” BEA ù üþ÷¿wS-¨­ÎÏ?c©¶-]º´{Ž´^ÓǨø€÷%Å?>‚ÂQʆ¡¢ ¢ &$l-[í[öÊ®¡lÊxá;´�²LôîÝ;a;S(@IÁ3 (PV Р†¯½öšiÞ¼¹Y·n]ÂvûûeÉ’%F™\Ô¿³Ï>;vwûz]cwF% €ÀA(~Ð�À@@@@@’4h©�@½1®Á7 ðÿìg?soz'5NQ÷öºˆ÷Á ÑMý½’Ó) VQ{ \—-›zà=¼¿Í›7»7Ý'Ožìª5­Áàœœ—ö_ÓZ¥¢7ÈUô†y:eË–�®Y… ‰™2òÚ¶jÕl;ÀÞé òj§uåËïÍΰ}ûîüšêzM ¢Ì 'NtSU|ðÁi߳ʸ ö*÷Þ{¯ÉÎÎγïšòÁMé. (PÑ »±�:ê¨ðj·¬7ÿpàƒ” D@ü íŸxâ ÷=¼aVV–Q��ôÑ:5¨¿š’EÙ¾ùæ7½ŠÖi*ÀÐ¥KU¥,:¾¦lñS¨|øá‡FYÒ)z^üôÊjвeË<7Ûµk—Íúñœk£Ï�ƶW�ƒ2³DKÉ’%�²èÏe~¸õÖ[ݵðÁÝÔò —ºuëºûÂ×ÉYÓk((B¿!ꇶTñç¥é>ò ¢)èu=Pýc? € CÁÍØ@@@@Øo½�¬9âõ†³Þª¾à‚ ÒÎëàµjÕr«—/_ÛÌOß7àM'¯Ô¯_?ØÏ˜1c‚åü>ûì3£àe•˜={¶yã�7Ü p·nÝÌ¹çž›ßæ…º~æÌ™FýUño§ç×�J•J¹&‹mȯé>­Ÿ={­Û.Õ4û´ÓýÜH�Ê¢!«-Z¸ q÷QªÃ´iÓÆm§{"�l~j€¸ýù)´îÍ7ߌk’T§nM½pÓM7¹uºîéM;ñôÓOMý´*ª1b„ †PPD^Á=Ê’rùå—»àõ]Á­[·ö™ß‚‚1îºë.×,¿)'ÔH�">È#l=Ž‚/â¦Åˆ¶Ów[(pAEû^½zµ[Îë[ýÖý¢žî&¯íÂëøWô{Õ¿·J¿+-y]ׂî‹ö €N€†gÉž@@@@@�Œ (“ƒÊ{ï½;EÃûï¿ïÖ‡|&eMˆ–#�<Ò úª^©ïý h´�¾+CàAƒÜ*¥“W¹øâ‹ÓÎjà6(ä–-[T(å}ºÁ>€aîÜüSâ—-[Ò¦ä¿Õ̘Ñ=­³Ûºu—uÞ;½FA2РN�:nõÎ�;Ý´úLUÂS0Ô¬Y3h¦)_T®½öÚ .º þ·k×ÎZ(ÛŠ‚4¥FAËc�=f4hŸNàƒ²E¨(Ø!ê¦ïÊ¡à=ÏÊb¡2gÎ3nÜ8·œêŸp0„¿†Êâ sÌ«ø¶~* ßV÷ªþâ‚§|›p Äá‡î«] �¦´8ï¼óŒ¿–ÁJ»°?×5¼–@ W€†Âõæh € € € € €ÀA8óÌ3Ý”J×®ìá¢AMŸi S§NÁ*½‰¬¢�Ì;öœ+í“O>é¾jŸz ÛO áÛ(]ý°aÃ\¶†>}ú¸ê *¸O ˆj°Ô¥ã¿ãŽ;ü׌|ª¿‹-2½{÷6'Ÿ|²Y¼x±iÔ¨‘9r¤)^¼xZ}ªU«Œk7oÞ:³ví¶<·Ù¶m—�vàGë¶ÂÖææÙV+¿ûn•kÓ AE;ÅHbŠþü6Öô:‡ðùm“ßú�?þØM™ ë¯�ú±cÇšråÊå·Ù~­÷�0ʈáï¥è•MAEAšÖAE�º–·Ür‹›úÁUþçèŒ5ÊeQ•¬T”AN8á3|øp÷Ý­øÏ?Ø×*šú¥Y³fnYƒç:ž¦YiÕª•«‹þ£)]t->úè#÷©©JÔ¿ƒY 0`ÀwMÝWJ•*e.½ôR·ÊO�¡óÑô ¶P I8FÏŒž{Ÿ9CÛúgE¿µk×6O=õ”Y¿~}ÂátÏè9““Š‚ |Q& íC¯¼òНvSÌ_ì‚QðD8ãÇË/¿ìšéÚÅ•}½®qû¢@ ðÒû_b…׎„ € € € € °zSü™gžqS!ôêÕ˽QݲeK—º}ôèÑnÏp ¿=¯iT4ܤI7@«7àyäÓ¡C7h8dÈsÕUW¹6ÚŸm7nìÿý›òÚ‡ÏìбcGÓ£G7ï}éÒ¥ÝÀ¨²èMþUî¿ÿ~3mÚ4£�W•{î¹Çèíx¥û÷AþXz½oß¾n€5šEBçòî»ï¦(÷ûfg—°6õÌèÑsÍС³ìÀ~Óðê„å¥K7ÙÌ{3S¬]{›)_¾dÂúè—×_Ÿîª:wn]•öw 8¨âŸµ?è/®Èÿ¶Ûn‹[U : œû¬ šv!UÉÉÉ1Êš¡ eð�j¯k­? zŸzê©îº+ó�/ Œ¸îºëüW÷9kÖ,ã{š6mêÞêŸ0a‚»‡}C8ø,>Ë�‚”]"®è™ò÷çŒ3̉'ž×ÌœuÖYiO…»ƒP¥ú¨¢ûZSÕ¤* BPpÀСC¦ƒP “ÏÊ _eañßµ/eQ�m¸è™ºýöÛÝ_ݺuÝïˆ2aÈÔ8è÷Å—pÖ…ð²žaeTÐt8š~ÆïCÓWxgihŠ]_ˆâ÷ý,èu�nÏw@� Cázs4@@@@@À vXzÿ÷l±bÅR¶Oµ ÂjÐY�ÜÕ€¾‚4ا�Þè ³Ú½ùæ›n½ûÞzë-hÞ¿|5˜¨7ðµµÓÀ§^Ð`éÃ?lìú«@e4P[ €*xA¢þíp?ìØüñü§¯Oõ©i*ü`­Ú¨/úPðžZ¯L Z§óÕ[ñ3fŒÍxð� |P›‚”‹/®ïš¿ôÒ´<7 ÷!Å8w°ýÎ�{ì òÞl;î�$XY€ÿv|6IÙ4|=ôF}ª¿°»ßYx[_—ß§®£®•Jûöíólþë_ÿÚ­÷oãß|óÍ.€G™BTÔ'Ý{>xAƒëj«ûÝ÷M6šrå†nîWÝ«º—t®*ݺusS,øý*@¤_¿~n]^Aþj¨¾¤²[¹r¥ÛWAÿ ß[~[=ã*W_}µûLõ�²µ(£„ŠžÕÓO?Ýý>hÚ_ôûáƒô,+(êÛo¿5•*UòM\ AÏž=�lU°!;x g^(4M¸„mÂç¡ìò×o–ö¡ã>ûì³ Ûûße_Pû¸²/×5n?á¾Å­§@àÀ dÙ¨¶üóUØc²7@@@@@�BX²d‰Qªö5j¸4ïáAÃhüÔ J½®öyM yé5P© ½1]¥J•èîÜwM¡7±µO½Q­¿ŸJÙ¾}·iÚô%;ȺÆòþÒœ~�ý>µ>}¾²&ï› /<ÖŒqÉ~ïïPÞ�î¹åË—eþÈÎÎvoõû€š¼\Ö¬YcôÜhÊ MY ûÛùíð é4دéS~je÷îÝ.ØBvʈ¡l©žñð¹oÚ´Éy+ Cí• ¥dɼ3Ž„·×²~‡tÝ4EÅŠMõêÕƒÌ ¾­¦ìPPЦµÈ+Ë„o¯Ït®k¸=Ë €™ €!3î@@@@@à' ðñÇ‹LëÖ¯Ù·ÏËÛ7Óõ6ø¾ÏܼxñFàñw§2þ�vиìO@è§y —]v™4h�Ë\ éR(…' i94}M‹-̤I“ ïÀ @ PÒËQV(]á  € € € € €üo œuV-;­FS›�b�¹ñÆwìÛêû–ôxË–�æÒKG¸“ïÝû‚Šðm ,šÞ@S‘´mÛ¶÷ô§Ùµ!C†¸»þúëš'ÈY!€‡¸ñ€ÓG@@@@Ø?�•+·˜zõú›�w˜8ÝôêuZ�wصë03xðL;%EóÕWW›%xÿ°Àˆl€ €ÿó0üÏ_BN@@@@@ Ó»víq]ÈÊÊ2ÅŠe¸;û»}�È € €@ €¡^º„ € € € € € € €À¡&@ªCíŠs¾ € € € € € € €AŠàE¡K € € € € € € €j0jWœóE@@@@@@@  ÀP/ ]B@@@@@@@àP €áP»âœ/ € € € € € € €EP€†"xQè € € € € € € €‡š ‡Úç|@@@@@@@(‚Å‹`Ÿè € € € € ð?-ðÖ¤I®ÿÅ‹3�O<1é\6lÝjÞ™>=©¾F¹ræôc�MªŸ»r¥™¼paR}“£Ž2 «WOªÿâ‡ÌÂ5k’êÏ>î8SùÈ#“êGO›f¶ìØ‘Tÿ‹–-“ê¶îÜiFM�šT_©tisNÆIõ‹l?>·ý‰–ãl¿›ÚþG‹ÎSç-§Y—šÖ'ZÆYÇõÖ3Z:Y÷Ö?\vïÙc†L™®rËe�8´mÜ8©~ù† æ“Ù³“êëV®lZæä$Õ»t©ù~Ù²¤ú“ëÔ19+&Õ4k–Y¹qcR}û&MLéÃOªÿ·½¯r#µG”(a.lÚ4Rk͛̚Íû3f$Õ]¡‚iU·nRý¬+Ì7‹'Õ7¯UË[µjRýgs皥ëÖ%ÕŸwüñ¦|vvRýðo¾1;víJ¨?,+Ë\Ò¢EB�¾lܶͼýÝwIõÕÊ–5gÖ¯ŸTÿêUæ« ’ê׬iÕ¨‘T?qþ|3õê¤ú³40UË”Iªûí·fÓöíIõ]mß³ì9„Ëv{Ž#ì¹FKkr®µ‰–%Öp¼µŒ–úÕª™�>:Zm¾¶×h¶½VÑrj½zæ¨òå£Õæ½ï¿7k·lIª¿¨Y3S²xâQnn®ù÷äÉIm�,YÒ\p Iõ?Ú{÷c{GKíJ•ÌIµkG«Ítûl|gŸ‘hù™}–êØg*ZþÏ>{+ì3-íì³ZÆ>³Ñ2Øö}�=‡p9ÜžãÅö\£e�5y×ÚDKMkxšµŒ–9?þh¦,Z­6Íì5j`¯U´L˜7Ï,^»6ZmÚØßÈŠö·2ZFÚßÔmö·5\tgu�ù Þl«ÇØßìh©bïÝÖöŽ–ö7øË˜ßàãí³q‚}F¢e’}–æÙg*ZΰÏ^uû FË;öYÝ`ŸÙhéÒ¼¹)vXâ{Ô;wï6þþ:ÚÔ”+UʜߨQRýÒõëÍgsæ$Õ׫RÅ´8昤ú©K–˜™Ë—'ÕŸbƒkÅü`#WÛßÊhéhSKÙßÖhñÿm×gÛßêö7;ZVmÚd>œ93Zmޱýø¹íO´Ì°ýžfû-:O�o´|j]–YŸhikËZÏhjÝwY•¸ÿ¶GÛó�L $þrd²'@@@@@@@Y�,Q—ŽvÈRpâ € € € € € € € �)20dJžã"€ € € € € € € €@ @C@Á € € € € € € €dJ€†LÉs\@@@@@@@`(X@@@@@@@@�L À�)yŽ‹ € € € € € € €�   € € € € € € € �)2%Ïq@@@@@@@@  €! `@@@@@@@2%@C¦ä9. € € € € € € €0, € € € € € €²œe¬éIDAT € €@¦`È”<ÇE@@@@@@@�@€†€‚@@@@@@@È” ™’ç¸ € € € € € € € ÀP°€ € € € € € € €™ €!Sò@@@@@@@ @@@@@@@@ S0dJžã"€ € € € € € € €@ @C@Á € € € € € € €dJ€†LÉs\@@@@@@@`(X@@@@@@@@�L À�)yŽ‹ € € € € € € €�   € € € € € € € �)2%Ïq@@@@@@@@  €! `@@@@@@@2%@C¦ä9. € € € € € € €0, € € € € € € € €@¦`È”<ÇE@@@@@@@�@€†€‚@@@@@@@È” ™’ç¸ € € € € € € € ÀP°€ € € € € € € €™ €!Sò@@@@@@@ @@@@@@@@ S0dJžã"€ € € € € € € €@ @C@Á € € € € € € €dJ€†LÉs\@@@@@@@`(X@@@@@@@@�L À�)yŽ‹ € € € € € € €�   € € € € € € € �)2%Ïq@@@@@@@@  €! `@@@@@@@2%@C¦ä9. € € € € € € €0, € € € € € € € €@¦`È”<ÇE@@@@@@@�@àÿÙÀbÂÐÞÃýIEND®B`‚astropy-pyvo-f0fdda3/docs/mivot/_images/mangoDataOrigin.png000066400000000000000000001011701521254414300242230ustar00rootroot00000000000000‰PNG  IHDRhnºgÅå"S#^^Þ-ƒ §¬¬4qºáçãu÷ö�èNm-�cMLt{�DóÞ�ŸGøÈÉÉŠŠÒì­/œ;NÜOŽÄP�—ÃþYJvð’8Æù$$’°§Ç WÏjN0`À裣oÀYÿò>�.ÃÃÃs:?ã7.Š‹‹µ­8ÿ®”žºÝoogEÜÓ^ÅÙê‘o_Õ©«1ГœH¯ù­ñ)((øËõ ló|‡y¾xz»•ˆÄKB·óóŽÜª,íÎqc‚ž?©vt°A·cX p€F}άŒƒÈC]âËÑ#G´·T+,,„þÓ_/îug«Gf¦' ÆLâþð“Ñ—3Ã&±Í»Z~šý]l‰—d ßü’Fûw '*OÑí¨E³Ñí)“Æœ0`À€ÑGG߀s{ÜZä�³“=ñåÜÙÓÙJ}lø}þ¼ %!!AöŠèo·.·…³½Gn\·Ý<ȉxØê•‹Ñ—Þ^C0ng|Ø÷tð’¸ÂIÜ^¶d>º=1dÀ  }tô 8;¨8“w¢Û&ƆÏW!Зÿ»qý's3cN8Û{ä+N®p/ÉÈP�¸ÿ‹'À  ßÇèpÖ¿¼/++MìqþúK9ççþ½qè6ËÒì�GU›Ö¯"êHÎ!nÎèöÖÍkˆ'iï‘èÉÕTU8÷8‘©7~*éNö¶kQÁ±Îìqœ0`À€ñ}Œ¾'šWËO£b±íÖ÷=3*€J¥p¡m†óla–†º*áV~Þ‘Y[ýãˆáÞBMÄΖU|&§­mï¹vé ×—p€Æw<ú œ½|Nž8‰¸zåâ%íM€ 0ºeœ_?—FGž<ú׋{eçOŠ‹‹‘HÂćXzç8aÀ€£[Àùõóö¯W‡zºÑh"²²Ònƒ�Ø—Mè�à„Œng™' 0`tË8ûË8aÀ€£[ÆW &L˜0a~¯ó›ÀÙãõL˜0a„ù-&À &L˜0avaœ0a„ f&À &L˜0avaö 8w®f¯š=žÌ>4{üÿY0a~‹ÙàÄób‡ù°ÃüXª–*ˆ¥ ai$,�Œ¡`G¨Xº–NÃŽŠaGű£X†$–!…eJc™²X&;&‡“Dz°,E,KËVÁ²XŽ*–£†å¨c¹X®–§�åé`Çu±ãzØq}ì„!vÂ;ÉÄNc'M°|S,ß;e��²ÄN±°+¬À+´Å í°B{ì´vÚ;3;ㄹ`E®XÑ ìì`ì¬vnvÎ;ç‰{aÅC±óÞØùaØy_¬Ä+Ž]ðÇ.ŒÀ.`¥�Xi0V6+…]�]ƒ]‹•�ÇÊC°K°K±K“°Ë“±ËS±+Ó°+Ó±+¡ØÕ0ìê ìZ8vmvm6V1«˜‹ý8û1ûiöÓBì§EØõHìzöóbìç%ØÏK±ÊeXårìÆ ìÆJìF öËjì—°›k°›k±›±Ø­õØ­ Øÿ6bÿÛ„ýºûu ökVµ «ÚŽý¶ûm'öÛ.¬z7V½»�ÝÞ‡ÝÞ�Ý9€ÝIÀjb5IXM2V›‚ÕÂîÆî¦a÷Ž`÷Ò±{G±ûØýL¬îV—�Õå`r±yØÃãØÃØÃ|ìÑ)ìQö¸{|{|ûý,öû9ìI1öä<ö´{z{ZŠýqû£{v {v{vûó*ögöüGìùOØóëØ‹Ÿ±•ØË_°—7±—·°WÿÃ^ýн®Â^Wconcoî`oj°¿j±¿îbõ÷°ú:¬þöö!ööÖðkøkxнû{÷ {ÿ'öþ9öþö÷+ìïר‡7؇¿°�õØÇ·ØÇwXã{¬ñoìÓìÓGìScÇ™�É-¿ÿEÁÿ�KöÿBÙ¿�Çÿ-;þ(ûO¸Åÿ%·¿ X#ç�FìÓ'€à8N€à8N€àü–p>¹w­ÇAê+à8¿K8;ø#pœ'8o]Íîq�úÊ8ÎïÎþœýN>>¼?h]ñòŽál~XÙ&€&ÀÙwálòùUÃÙü°‹›N€³WÀ© M"ºX ð*É�]U®ðè^837�°3Q¦’……ø�´d·Fz|ª\pœç·ƒ3sµ­�‘4•Ä/,Èg¤!¶e–ycéèÿÎÌÍAv¦*-y§o�úé—5'Àù™¼ÄúE�ê ;1ª ?oî:çŽá4Ó•Fß•·yèáÜኩ§&}3+ôÁ™¹žZèË ¾f°T pœßÎM3™xè´›)²}³ígÖöIè†�¦<±T;ÊÛ²c8+òb°ÚCQa8ÛSFºœ0û'œûš¡�…ù8Ù3q½fŽÐaÃÙP2®œÇÖ¹¡Û6Ftb©6h0¾«íʆójÊhb©öÓ� ò¸Ä•G'ìÆŸÐš©ˆU.Ý·Ü»)ƒìÍMy·eÃyõèì¶{œY;¦ày×’'–jGy³:†³"o5v÷pT˜OKÞN€³TœåñžËÆÏmÈ�£ ð±×F~ËÙÎ�WgÏkÎ�§ r<2wjçŠ06œug£Ú¹} þ½ÎVZœsC\;†³®|+‚sÙìáèöÄ@g€fÿ„3ë‡æŠóݹ€*ζpnšm3 ÍX0Öœ g]þTöçŠéöèžycYÓF˜¢›"#8;¨8WÌóîÜÒ¶pn_Дwmιu g]ù6'GÞN€³çàÜ>Ïb@Óç߯&/sÀd´$ŸŒùX>I€ÿ÷ú¿ô`§¹® 'œÉ«ð&:2ÏÎ…}¬˜ßüȬ)�Üãä 'Qqi+t²â8aœœ{œg·:·Úã,ÛãþêÌH¶7çÆ 8Gº©·ª8LäÛj gÝ©0^^ºENŠŠ¯ÓÌBpvr�“+œDʼnç½s'À pö 8_Œhuªvÿb;ôŸXúÒœ½i¶‘7Î!ÖÊèöÖùŽD´ö/Œ?Ò@î�³a›æ97?2k v=jý\|sTOMúVvØÃ¢yÄ©ÚqÃLˆw£ÀIìqòðð%…wf�à„ p¹Þ8?Uk¬)^•êõ0Ç—8Uë7P™8U+-&Œ¾<¶Öå—Ã~b"‚l8ß^˜Dìqf®sÿ«dZEJÐ$ƒÒý\áÄ~Zän§N$ÝÊH�}ªvý\üOª2oåÌzØrªvÜ03âTmp{œMyŸÓ™=N€àìy8Ñ{Fô.U…Ná¬rµåsœïKÆ�q× ’8—n8ÏîòÑP%┿Õçý¥ð1žzTò?Ù'öóâôõÃmŒ•($!A~CMÙÍ Ü^õE8±_ã®[`¢§ØÉSµ'L€³íç8‰àLõÑl(IÀ™ëÌ�ÃËDöàË‹Rvœ�_˜ýx–ÚÙ'à„Š*N¨8ûèÜ 'TœPqœ'À pœ'À pœ'À pœ'À pœgOO€à8N€à8N€à8ÿœ��X0à�L;€à„Ù«àdª 'G(µ…“¥C‰Ÿ­ÚI8™ê"É‘†'ÀÙádi ŇI~œ,*¶ž€“¥/åpœ}nö~8ñ\ÏQïsp² åã—zœç¿…óq¼(ï€>ZqšiK$,¶†ŠàüÎfçá|¼—†ç*Î8Íte– †Šà8N€³M€à8û<œì¥ÚmS¤ŒU…ØpÖìSçåP»_…íÉ!Ý`G1iQ~1þ±.¦µ]ª}”fáÉ’!ñé*“·ÏÔä çšÉZêòä¶pÆ…3t2Y˜ÏÎHªbÿ ”±@evóX–¾ SS"jœ‘£ �JH]åĹTËÔ”Šžhîd®(BÔR/ØîKDëÁ©©î¶ª"A]UÉ­ á/©x6À p~Op2‘ÃivºB"$^5ÁÒµrœ ’ü§W)Y®KÐ@ÿø_Ñ&àŒ �±Ó§à�W'•nÔêx©6.T�!+Lâµ3­ØeÁ†3z´š“±„™_K‘R°Þ’õ›|÷ðájʲ$QŠ€§5ýnúN¦†XÔX=Gc*‰?u…-'œk¦›ª+ˆ´…3n®-CN„,Ìog,W‘ˆà ¬õùo‚�‚“©%5ÑÊÑL‰JL];Œs©–©-=ÅÞÉÅ_HKE²`Ï8"ãÎ.r·×FwêªÉl]< ÿ›P¶à8¿Îç‡Bq�Ž?Ï›¼váD¡ö±£{ÙÈV¥¸Ô ½²w �½ü»"ߎáäºÇY¸Í#rœIufð»Ò)‰Ë\ð¿ ç§¡t{;¨Íiúáʬ¯ƒeÜš© {œg÷ÃùÛnô�I_YˆóûãÝ 1)¿´(ÿhg‰?Žp9Uûà°…»…øWœª}fXì4 *Iˆ,ë[b©¶t× ?ûTmW἟?eˆ ~ªV‡!¹~ŽºÿUÙ<€àüÎà\äG³Õ¢ ó« –¬i>U{g¯Š½>zÌc "´s:�ÎE#dlõ(T¯±©d}G§jߟ´��¤ª!O" ñ2Õ©Y+ ;XªE¡~}Ò="H]MžBæcé‰gÿ`ýÅŠ“+œïK'ÅÎ`i(‰’„øQº³Ö{Kµ¥ûGè0$øùxÙ§j» çý3 ‡Øi‰P„tT¥×Ï÷Äÿ&\‰8Î^qɽ^x­ÚÛFˆÓ„ásœg�Ïî½r‚3y¶$\«ö+>Çyb÷q >Ç pœÿˆVÚZ¯ŒõÞ¯Kg_?b !==Àà8{|œ=gÚ† Œ-£^_YqýØlMúô k€à8ÿ­gçBë BSQV$<Øüíåù'ÀÙãàìA8Ÿ•Fº¡BSQV4|´ÝÛ8N€.¹pöö mÅzÉR-\rà8N€³oL€à8N€à8N€à8Û„íïñ.âT¯¾Šðw'ËP!~ùP€à8{οKF�uW§’ôÕÄN€ó;„óh¤Š®’ðË£†ßGÅùÀÉ2V�_; à„ p¶çÑÕŽº Ñ—§G~O'ËX#>v꿇SEÿô-S_£{áth‹ž–B!œÿE?ÎÅ�2ãI|7KµÝ§™�rBìx¨8Îoç·èÇÙ«à\<Þp¼§;Úf:R Kz?œfŒ„u¿uʼnàÌOÛÀ®8?þ^6JJRŒLöñøû¯…Ã6yq¹`>>¾VÙ/?› pþGpÎ*9ÕCà8N€³»àœá¯3ÕG àì œ«"§()È^?ŸòèæIwW›�¶f�©8óÒ÷œßN&C0Ê_ÔÑ@˜*Ì›!û&]-|¨˜²´€(…×Ó‚z÷ÞÈÚÓBäso£ : Û›c¦áÃd•eE)|ž–bw“M‰˜1Õ(QÁÊŽFbT_êbý7džû))Ë‹Rø=­¤ï¦9cªÓ¢Çh:™Há�p•¨m‰€½:åî¯É�£ˆQ§ Óø«(Áù¦(8|„®²,E”*èi«t7;°8d¨§wúѪËÇ/âü¢dÊSK&j’�£™2Þó6Ö¯=8×ÌqSW’l gÜb?†‚™$hg¦^‘µ%*ÐÜý¿ ‹©†âÄÔUŠ õrdéPÉ©qaœKµL]•è™Ã�¬ D¨$-5ù‚CK‰ =¸–àîd†îÔÕTÚºª©Ë/éç÷=»θIb ~²��®PÅFyÎ7GT›RÌ/JF)¦ÜݯNÀI\áÝѿޞ­ÅX�ó&Ño\ÐÁù&Û2ÜGNYF�-KânŠ%'S�5’áÈÇÓmÄθpƒ–¦ô’ûœ‰\?ÉõvU–’ë®úgþ§§�Âç¿*ã™�®ªŸ¥/“±v�–²(gôD tç�œqÎK‰A4Šà‡+³œžöjè~ž yÑU¡Ÿ~j†“©-5ÉÎÑ\û:ÿ7—£ÃGY+ˉ‰R…=´ïž^ØÎ5s=Õ•¥ÚÂÀP�ăo®Q‘³Áèiùùu«#8™ºÊQaÞŽ,]*E8uÛLÎ¥Z¦#:|„“�aKðWp>¨Hrw6o ¾òÖ˜P<ø73:†SANzëšyDêo•§£oùõò1€³'ᤋó•ÅÊ}ÌÂߨúZSÜÍ(5ûÔ^Ñšç+a¢.ܘ‡¿K óúGÅék#în!Z“È|uÌ|Þp9 JcA3œt Á²-& QÒœ|í¤Ý-%kÙ½:îÿåük‰ÕeñxÒo¤KµEé±_„³¦"=æÖÅ4vêåéÒñ[–œÝ gW+ΤÙRœ%kÚÆ5w©r+8KÖkqyØJ]Τ…Úœ%›M¸��—çSÉ?ö8Kv æò$œI1C¿z�3w×d7;3}¥�áV×s£Úƒ3iÃäöàLÞ2“ÈRCuþû^ØU|t5•"ÌÞ󨽔pö‡Ù½Kµ¹QRn&Âfê‚!.Ôë[ð¥Ú’5òÜR¬DÀ™4O‰ gþ*uIÿû<Ó3k´D)|osÍœ%õ¹|û*Τ…úïqæ®±t³”1Ó ñP¹~ÀÁY¼Í‘Ÿ�‡½ÇÙp.=áåx÷/¹hœI°›fö÷!ÖÊ�OM”  ¿) 仕1Ž€3=v¨‰Ž …Ô\'Ø+²áLZ=Œ€³$q—_gǸNîqæîžîf¯gf 2ÜözÞÒöàLÚ4­=8“·Ì"àl¸}~éÞ⌵T ‰½ÇY{9é‹pBÅÙáLžÓ ç½}*¼<žRo{ €Î{ ð‡¥›´=„àL^¤CÀyï°5/ϳ,Ƕ‡ƒ¸Âɵ⼗å‹wÇÍìäá %±ÜMÞœ‡Gs™¼úëá$Õø¿­ÉëÇѨÂõ?oApZ1ZÁ™¼qJçᄊ³Îoq8¨1K¥U–õéŒ{û”›R¬Úöp‚39â3œ�'L$2£ÕG;£tKq¾—l‚{†eÛÃAÎäE_€“uã¹aÉÑæxSúB¢â¼—9ô‹§…ž4'œgv •• …�0Ø8Û»:Ó@]rÕtkyi ‘îßOOGï³³6ú¼.�ýéÇ…›#\X†òl8“ð!à¼W0ÿr!òßj¬Ú�¼a�Jª¿±%ÝÂHµœÉ›§wί¨8a�³WÉå¨ûXQ¼,(U»Uë3´®lføX‰¼ËÒk»Çéc-æÅ«ÚoTŸcqe›���Ļ֭àÄÎ8ùØJ{YIU´­Ïw¹²ËÊÇNö]á�öàÄ.ø{ÙÈÙ3¥o¥¸¿<å¿waó§�ƒ’—­bÕ¿úsc®ðöqTyw!¤=8ý]4}�4^‡Þ=>É•¥ÒU8¹îq˜9ŵºpÉ»›׎àç{s}3J”·‹Ñœ×U{¾N¬.ÇÚLö8ûÛìF8 —IE©Þ)÷î¨Rb¸¤Ï›#*(ÈÍ)Þ¥RTóÊ&•¦ë´…e92�îh(‚7®�Óc¿Fqöb‰W0­Ï³¹²ÝØÇVòÝIûÎÀY¸Á*r´fõa×wg¼£ÌðÔÃP®˜Ò^6ò�rš÷8Ý­¸ïqzÛ+Ï 6ø€Ÿ`Àá|W:™$ÄO£þ|8Á9{¤1º=ÖS—€³öødžg÷¾»<ïâÁÑÊtW8±Ê>κ^ŽÚUÇg×_[~%-ÔÇEïÝO1�Ùã,L˜9uHõ™UïnîHŒ Áƒ_¹%ÝÛÕx΄Á~Ûÿup¢7ÊMÁïÂ'ç©ÚÇ·òÝ]mmM‰àOíãâÈ"‚?qŒŸ‹£ÀÙp¾>¢á+®F ó²´IÙÑJm+Nçëc&þt59!üa:ÔìåÚm+Nçë¼�*jr$¼±­®hvŒi' ØËS>¡¾J2d šàTŸæSµ¯ÏEŒÔWS¡�øYúÒÙë\;¨8ï䌷7Q ó¨KíŒtí8ßߨ1TCYŠ$,ÀÔQÈÚ9…x+Zš6_G�Ž·Õm9UÛU8ï_90d ~ªVGCqý’IèþWUYç÷=»Î÷éò±cE5äøI‚<(ÈY‘2D�_§©FøŠµ¤X8;Z‘kʼn²üÛ>|aV_…Äùq”×Ù–#äÕä„ñØêˆd¯ÐïdÅùþ´gì4= JSSzѬÕVÄá Ç9Cƒ\•¥D…¤Å„F»1þ8éÏÎÒ½^:*bx ôeˆtb)ÊH�>]Á?Žr"ÿC‘´Ò�ýq”õ³e%)‚|V†ò³GY´çëK‹#ÆÛ©)JPH‚,#¥ìmc:yªöýÍ­±ó}5T¤›‚¯˜µ+”x‹\š©£.ÇÏÇÇ>UÛU8ï_MâD_iý’ÉxðËùâç8ç…Ž””% swd޳=8ã·®jµ@ýÇÝ €®Uû½]«öDòJqQ*|Žó»Ÿpå ¸V-çç8O$¯Âƒÿ¥Ïqvã%÷N€³oÙ¶s~ÆÞÈ×UG¯ŸÞn Ã˜>Î àüî'À p¦íZ˜±wñëߎ]?³³)øCá’{ç7‡³6+°íI¹q^:}Îg7zÛ£÷›ŠrRᇽ­É8¿ûùÀY{ÈŽK‡(œ�„óÙ/i�Þ-Á÷y[›y8¡â„KîÁüžá„Šº£œ'À pœ'À pœ'ÀÙ+'À pœ'À pœg_‚“e¤¿b8À pœÝgK¨zœ,S½øM ú œóæ„.œßµDô­ÙûádéPã稜ÿN–‰f|ìt€³OÂÙ�ý8ûœ=Rqši$lž ggàT�—»Z~ú‹Ï“rp—‘¡ž�� ŒŒÔ”Icÿüý7®SQVêøÙ¾ø€oçwß�³3pšéJ',sé…p6]±vTœ'À p~'pîØ+&&šš²÷åwnU– qs616|÷æa7úpœgÿ…³3�¬QØâ¦Ê3dÉB¼vúÔŠm:DÒž¤™””�;HæÏL+N)¡Ó똜uiöøuïr�Q̘ê"Q£Ô™’TêRÓW'=‡«1èd1ªÀoÕ¿Nû €½)ô ¡¥,K¥ xÚ(Ü=æÛœÛ"l�µ¤ØpÖäŒååå©Í AÑzsaFx�‰2�&Jò´W¿{r:‘«¦vÖ¶-n‡Ç-tgÈ‹‘…ìLU*ÒÃÚ.Õ>)]ìi*-A•‘¤Žõ±øóJ,'SG1:ÔÝÉJ[„"¬¥*[�8§-œkª«È¶…3nņ¢ ™$dg¡W‘¿)ÐÛžýa8–©JS_-jÖHGk&•BJݳ”s©–©¯=7ÄÉÎL„JÖRW.ÈØFäçÁÍwW;*EWKmkl$~…­;e½Î51Ñ‹#çtð€›?—ZZ˜Òh"îC\ÆŒ `ÃifÊD¿ªÑ­¸\„îîëÅþßjÛ–5\óöURsÿÞ8öó׿¼O§Ëìٹݖ••^·f™¾žŽ¤¤ÆQPÞø©ÄÂܤík`?}ãúµËõtµED¨�#|¾šáÞßÈšs©öUŽM¸¯CVXŒÊ?ÅSþ¯ãœoŽ;‡û)s4¨wêN¦†hä;#¼k½‰–xé®AœL ñ¨q†Ž&²T’@êÊ�OòGV—–'�õÐúóôxgà �ÏÑ0 #8ŸN ¢--N’‘ �õÒÿóÜLÎW¥sÂGš3äEÅD„§ø›þui‚óIñü`wCiqŠŒe¬·ÉŸeÑùf®~á½6pÆ- lig­Y‘³%½u;ëÚ”¦vÖÃZÚYÏâ\ªmjgÐÒÎZ¡àð*Î?¦¸;[´´³Ã3{ëÀÙgàüb#몽Zü<¥4²�Ê7iE —%àt4ñ°{xØô~Š™SÔÃRü‹pÒ%„ʶÛ|<‹b6ÔÛ–ng(yó ë‹“C÷D˜æÅÚ"8}Ü­äjŽ}U8b^°®‰–Dcéh®p>?3^H�ï§”œK'Y8[(ïI}�4ÜmUkò&½º>oŒ…‰ŽlcÅBN¼ÃíÁ��?-©Ê›�w©MšØpmiù¡©ãíÛÂéh¡îá û°dùýsË�XšŽúl8•å%.g.ª¯Ü3×GFRäSõ¾ÎÀYU¼ÿ¡Ç~h¸�^ž³.bš/׊ÁI—‘(ËÛöñaQ«=N§²¢ìåÂõuçc¢¦ËHI|zv åÇ–eä7äiuñ�ŸNZšö!8?6ü®¥©¾dñ¼WÏj2Ž$ðññµª8„;·­ÓPWE�ÄÚ©89sáÜqôë¿þ³–óS&�õ÷Jøgmeq÷ö�œ.¢ïBß»|Éô²3“øùù¹Âé4Ðî~Íõ‡÷n >÷íÙÒãp~£FÖœpz[KÚˆÞÜgñ"ÛnÏ�¼&‚Ó×NÆÝRªæ�ëã®óT›Ô{t§¸ˆà¹mN¯ †¯�ΤQžžð'à¤K’Êöº,CEgˆ£ ÝÃFéáñ‘÷sG:™É{Ø(s­8M=lUžšr?Š“…²‡�§·£¦�‰âÍcS^”ÎÛ³Ä#o[‚ÓÑœáa¯ù°hþýÓN–jÚ_gUኦvÖ nî,ψÂÛYs«8›ÚY‹•e®øxçp«=ΦvÖÒ—ó6ÔW�Y0FFJìÓTtžlig�~çÒAK€³‡áìöFÖ5´)¼•;µ9—jï$¡oQ±ë{ñî›�ÒXÃ3Q‹xszï~öêîœKµuÇðzâa¶7±¤Óxa$Þ¶:yh{Kµ®êá�†ÎOWÂTäDRV¹¡hÕ�į–Ž¢E,æ4V̧Q„*Ó'pÆÌH,ÕÖäÏÂÛS mïpÐ�¼n«=M¬áÜÈ[„ÿ‚¥« 87F'–jŸWÄ¡û”mèÌRmMÙN Y¨òô掗jœ1‹B¸Bpn\NDèùí"üGÿ’_}-O]u1‘Ÿ¢Üý}ÎËeRRŠhzz âºT«ÊPþõ—òöàä|LVÆAüŠbÿüOË–ÌèhKø—Ÿw„}?á"z ÒÒ’ì×0ÔÓ�+œçN7ÿšQ‹fÏŸú�àìÙFÖœpÞK±ÀCzЂs©–HôãŽÄRmãÙ!M ê:®8ÙKµº Úž,Θ)&ÄRí� ¦älÞ€+ÎÊKZÁÙê5Ì�ÄÎ?5ãªå‘S'�ûFpöl#kN8Ïo4ÄCZø�=Î’-æ\žµypÆ/4gÃéi#¿$Ä�€3i©gñNwÛ”¨8ï%™´­85äI¹« 8+v³8áLŽbvPqÞËðĻΞðíäá ÆKS¤)™±CF»kOõ3 s?ÉÙж‡ƒðæb? ku8¨ñçÉküiT¡úk+ÚVœ÷Î.áZq~5œÄá Æ{Y(K4r}u‚ÓÂX«œÉÛuξ^qrV{ìŠÕŽbb¢è¿6¼~€¾d¨(�ÎÏ@7”Øpr}ÌÛWu¢¢´¶{œ»wlhåÛÅK¥§:SqöB8»½‘õ+Î{©vxƒúl§NBpF�ÑåZq&/³ã¬8ïes©8-ôdZUœ÷NLê|Åy¯`8Ù‡ƒÛ›¼qÞÎú—Ý(éMí¬ÿgòæÐÎà ç÷g{�¬ cT#dª÷é¼Ëa&ÎUàçysÌ;eá`(âÅ{”jFìqº[4ïqú;HûÚI½È¶¿{ØÖÕT‚+œ(c^6²öF’·’\_æÝ;¿y�ÓÇ^ÁËF¾*Õ«¾(àʾ!>JïÎ�ìàTmäxSGSy²0ÿåÄìsw>Õ½ìÕª²&Ô_œu%eŒ�“æ»Ëó[ÁY¸gLä$ûê³ÞU,MŒŽw©½²¼Õ§ƒ¹š×@½GV{œîzì=Î/ÂÉu�³ðÐ’È0¿ê ;ÞÝ9š¸iþC«Ž"8½³æLöýpÿÄ×Á‰òcmaÔw÷85ÔU—-™ÿêY ªüØ{œ—‹$%%ªn^zóüîúµx¹@ÀifÊ<¿õÓû§_†8ÞݺéTíã‚ÉAnÚRb$iqÒh½?ÎÎ à|yaNh€©�&!JšÚrªöñÙˆ !†RâdiqÊh/ã?.,þ 8ßßÚ»ÀOCEog­«”µk‘ôÒôÅŸÛYœ÷¯% q2ong½t žÙê<€³çá„+õ•Ïqvï%÷N¤ï£õÑÏqö†9ÈuàÞ]›¾Ñ“÷þ+uïç8œÉK,{Õ•ƒzáµjO¤¬�Ïqœç gÚþµ7¼®»xýÂQ]ÍéƒÎ.ÍÝ;6\8wüõŸµ û¶‘HÂîVœç7…3mwdF|ôëß²¯ŸÙ�·³?à8» ÎÚLß¶§øÆyjœœp>»]èë† MEyÙði£Þþ^pviVÿïŠÓ@;*•bd¨Wxòè·ûAß%œµ©Î\B:DàìÎg7�z;6·³žäûöî €à„Šº£Àì/pö­‹¼÷8á’{'À pö¼I}bœ'À pœ'À pœ'À pœ'À pœ'ÀɆ“e¨¿|过SEArÀ€L]¥àt±5@�¡�…ú!œw»²qõ¼Ã6ô8W½gœ_'Ë€ípœßΞêÇi¦)’0_§gá4Ó•MX>ä[WœÎü³8ãTwqóÄÇVgyvL¿‚óÓû§×.žX8k´¿'ëàžµ/ŸÞîq®zÏüþúqši‰&,dþ{8Ít¤–8@Å pœý΄u£Ã†Þ)ހ༖»r¨‹éÇÛÉý οëåg'L Œ&º�¾ìq¨zÛ8N€³ÏÃùê°R¸�!Ã/Fá�âFû+] …�©* éh@Æ»[/P|“¡î-¥,-(Jáó´¤Ý=h@$ÍÓRlÀ€<<²B«Æ+*Àá (Íþ K—†bö$Ó1Ø™.-&(#&8v°ÂŸ¹ƒ‰Œ15hQ£µ�ñkq¥.³Œ›eÌ SÈÂ|vFR†´…sÍt3u‘¶pÆÍ³cȉ�…ùíŒå+R‚Q´k~ †r(WM-¬mÍ”ñÖ±~œKµLmzôÔ�N–j"!-†TAüDÎç–¸;è ;uÕe·FûáW’l¹ä^{ç±]3Y:Št‰©#�Ÿ\ÛÙ¯*NTV¢â•˜¨ÐDå&q-Y˜ßN&C ÊŸæ¨/DæI�'ýæˆJ¸—hs ksÊÝ}ªœ�’4=-¨"$^]%¡íÓñ&H¤ 8$Nÿ IĹ.Å¿:f¦9‚óM+ÜGNYFoUÍ’¸›Â"àŒ ÓbÐId!>;C±Š=ÖÎ@'9޼‹·‚sÍTuj[8ãf›3ä¨xf™2‰Cœ�®ªŸŸG_¥›©)‚_‰šJH]íÆ¹TËÔ’Žždåd¡,BÔR‘(Ø@Àù p¦»�:ºSWMjë¢!ø¯Y²à8»NoK’�®ðÍíŠ/3ö„Jç-‘#àÄÞ®g|ÌÅߥúZÓÜÍEjè¾Ê0œç'c¢Nn<ùù-êÇ|Ö�;Œ4ä…-ÒæZq:2Å=XR�¼d “‰¤K† 'Þ×z‡ãÇbߪCnü¼¥;�І—ïq�Öé$œUÁø7îók(›^ž1Æ”kÅÙÔšRvpìÇŸ¢Zíq"8•åÄ.§N¯¿¶"&|°ŒõÓ/kQ¢lMA&OËVÞ9mi¤Ü8³vÏ$àœ6ÊùiE?‚3/m³›ƒžKæçô‘¶Ý ']Œ¯l­ìÇcxÅékEÆ[XïU~•¦6ÏGÜDM¨1‡Ó^Ÿ<Ü–ö$Eûö>msMÒáôµ•p·¯I2•c3Ï_ÑDƒÚxÚ±*Ñ ohgÞ�ïR¾�ÀøbÅÉΪ´¡xfw»5�*�÷ˆeÀµâDpÒ%Éeûý>^kµÇ‰àT¦Ó.'�ª¿8;&Ì^F‚üéGN[cÅ !zO‹çÞ91ÃÒ@à8»gçYßÛ‹·î«Þ¥Ðj©Á3FšXÞ©KÔB�y˜¬K,Õ6ž0¡‘ù*wé·ZÛ‰ U t”j ç�[ôíµ‡í‰¥Úðöœ�2pÆLÒ%–jkŽ ¡óWÜÕ¥ÚšìQ’@ejPÇKµM-¬¹BpnœïN„êyùRôòœ�ª>µOÝÅ•D¢Šþgº‰‹Ã†Þ.^?1ÀñjÎJ/g“~µT gWòÛ=�¬ 8cF‰Kµuûñ¨&¨AnÌÑÄ[XocÜÞ«Žî’¢E,ÕžY­Ö1œu‡ÌðçIµ –j ðÈÇ[Ô¤XS„ù*÷YýË¥ÚšŒax؛Է»T‹àŒ™nÉõp‚sãÜ�ÄRíóóáxf ªó¦á¿×ù9ÄRmѾ1'ÀÙ8;_qž�‘Eø”Õz�Á™4WŽ€³$Vµm†s—k ¤¥/Ö0Q§P„y‰;mõimá,Þd†÷»nÙãl(À×O.ï²#àLZlÊÞãÌ]këfI7ÓñT½žèÞù=ÎÜ�nÖÊfº2!Þz×�jΤ˜¡íÁ™¼ÆŸUÃ�«ðwù ŠN§"êZU[´´3'‚=ÎgW+ΤYœ%?йDu‰BñeRögí�Žá,Ù¨Ïåyð»Î¹«˜n’fZ´�! ×ãm¾z�3wÝ@7–¼™Ždˆ—Æõ$ïöàLZîÒœÉ1œ —çâ™Í�Z¼•,ÈÞã¬=pœßÎ*Îä¹òœ÷´ð¾¸iú­ýžjÌÇË“µTëu¶Å§SÖ›§©²tD8-´[Wœ÷Ò¸VœÉpkÖ4/KZU¼N}–Ñ•-Ú>ÖbïrÍjñð 8«ûî¸åÅ-Ê2Bl8½­%ç WüP0�Øãt0÷²–~Ô²ÇéÎ’fïq²á,Üd9F§:ÕýÝYÿÄÅ,~Þ7gZÃÉu�³pÛÐÈñ¦ÕÇF¿+›ž¸|þ�%a(ZÞŽêsF™}¸:÷ëàD‰²6Véê'ÀÙjÂç8ÿK8±l†�ÙË‚\µK¹þ¨ú•�J>VÔwÇ��:¶z¤v´§‡´ïì×¶Ô"³áô·óµ{‘ar7‰éjBвÇéc#áÅ’¨:`VÜöÊv[©wù…±Æ‘ÁŒê$›w§\à íOàpzÛÈΡú¡È³“{œ…[œ#ÇT§û¼;?*q‰žÙ³£œÞöÊs‚ >\œøupb×#­�`�àü/à|yX)Ô]DIŠ_‚Ê;•ãT-'œ¯3ô#ü¤Õè‚M}q)ÙKÕ‰·¨ë')ÉŠ òóXéŠÌö“gÃYºÅXG‰ÌÏÇCœª}|Ô1È™.%*(-&8z�ÂÙƒÚÂù¾È7vº¡†"•$ÄÇÔËZcßÉÃAï˦ÆÎ´ÖP% ñ3µ¤²6xÑ*=¤Ã�Àûß¶œªí*œ÷ÏF±ÇOÕê¨É¬_à�îU±à„+õf8_§©DøŠ6·°ÖÎ^,Oœª}pPÓݜ˩Ú; úöT²¯ƒ´sƒ çëVÄ59a¼UµŽHö }Tq¾?50v²††™$ÄËTÉZiB,Õ–n³ÖQ¦6å½S§jßdžšh(ŠàaהȊu&“J÷z騈á™m9UÛU81Ä?U«£*µ~î <³£N€³kp•ƒºësœ'öL§‘;s€fwÁù�®ô8E� gºrPW?ÇybG°8�Ÿã8Îÿδ�£3âÆ½¾¶æzö|M¹éÁvpÉ=€àìÍp¦Åúdlþúâ‚ëéS 4d¦Xœ'ÀùŸÂùìâÊ@wcô¦U‘.>Æáíõ p‘÷®Ây4íš=nÕ6‡ u'ΠN�<àüïá|v~N ›ž8MXQ–>ÊòíÕÅ'À pBw”>ç®íë·l\�žºMt}Ùãªýg3lúÄÞ g½È;\rà8ÎïÎOïŸÆïÞlh k ¯»gçÆ~u=€à8N€àü8÷íÙBÀ¹w×&€à8N€à8¿°T»yC ±T‹nÀR-ÀɆóqnSË„“'Àù]ÁÉÒŽŸIïµp²ôeâ£ìÎÞ '1ûÛá €óû€“ÅdÄÇŒ8û)œÝÒ�ÓLƒ”0Gñ?†ÓL["a±Tœ}Îþ9» Îïµggà4Ó‘NXêôíà4ÓWHX'À pœg¯˜'À p~çprmdÍ^ª ´§±Û#°´É(lo2™áÃd”eˆ¦Öbw“ŒÙmŲÂd!^;ÑŠ�fmá\3YK]žÜθp#�ÜÜ¿z¿+‚3ÐEùóÕ—Bp25Ä£Æ9šÐ©$�ÔUNœKµLMÉè æNæ "dA-e±‚í¾D´äOq·UÅ[ÚªJn]芵x6À p~Ó¹8rgG‘…ó¹D»_5²fÃù(ÇÛÓF^„, Ë mŸkÁ†ÓÓo…ÆÃ3€!G]5ÕìS9gà õÏÏi ‹à|s~ZxS™."Jò´S½{|R[8ׄTWo gÜ"†¼YXÀÎT¥"}Êx »Ñçç7RF1gêÈGMuu´Ð ’…R7�ç\ªeê(F‡z8Yi‹P„µTe çIpq³û@#t§®†üÖåcñßèÇ=g�“k#kÎ=ÎV§¯�˜»9­&ÁðÕ1ÓyÃé&ê”ÆSVUûMð·›�ŽÛ–o5Ž¡ÔI8«R\ð–¶;Îø”ïvŽÖæZq"8é’¤²½ž/†´ÚãDp*Ó©—ýë/L‹ µÆ[Ú^Åá´eʹé<- ½“7ÅÒ@à8{Éìv8{s#k6œöLéᕞäùÞN÷6בlUq~,ÿcÒ0 EÚ¡N\+Nß�êî6*5¹!¯Î‡Îmf¢-Óxmngà¬Ê àç+MšÜpmyù¡iãí¹VœNº”HYê¬�77·ÚãDp*ËK\ÎŒ¬¿±#f®¯Œ$íö[3Í ¡VO¯í¸s~£%SàìópþûFÖíÁY—„7z˜bH$­1ßïp»Û¨æ )Þáv�IW—jkÒáߘèÚñR-‚3fª)×ÃAÎ�³m‰¥Úçg§¢—÷àä¤êìüßñÙPb©¶hOÀ pö’ÙYßNÃ/¨ô$χXª=çÂu©6n®U «Z[8ëNŒÇ_OþDb©¶ñêlE°2}\g–jkògSH‚•Çft¼T‹àŒ™íÁõp‚scä"éÏ+¶âa.n¬>‹ÿ Û‰¥Ú¢CQgŸ‡óß7²nÎ’ušmóœ»B½EÍ]©ëf.n¦I q£_ßÃe©¶½=ÎÜ5Ön–²xÿjÆõ„AíÁ™´Ô¾=8“W¸p6\Ä»fVg�/Þ;‚J`ïqÖž˜pœ½döÃFÖÅÛR„ùÙ{œµ>l8ÓW;šhIPHÍïl�dÛÂY²×�ËëÙâÓÉ=ÎÜm£Ül5ÌôäC|Í®gÎlΤØQíÁ™¼a‘ô†›»ð¿0g×^D% ³÷8k/l8ûœ�©8-4?Ãyï ÞáöˆQ{‡ƒ ì“é ÷§õ'ì»t8¨±Ø/y‰%ÞÒöôp§…nk8“—uN¨8Î^;ûa#ëVgÑÖæŠó÷ã|¼ó?€óè:o]UÉ—f÷¡Š“eª¿aSE ¿,Ó@§8]Ú¡ÇP(d€àìA8YúÒñQv'ÀÙ+àì–~œ}ºâ\<Ñj¼·Ao[ª53TOØþ­+Ng~æ^Ί³îײ‰cZUœåÅyg¯ôãì œfÚâ Q,¨8N€³À9#Ðdª¿1À™°+6zAØ�ÅÎkr‡z¸~|]pœ'À p~ œœKµq“¥2d!;=RÅFp>:Äô´!ñé*“¶‡©²á|“cî«ÐÒÿVòîa["fLu‘¨QjŽL *‰/u‰ {©vÛ,#c QvÀjÒ=xyyj�z¡€½9>B[Y–"Jð´Q¼›åO¤ëÑñ`O[¥¦kw‰oŸoלžöjì“-ždƒrÅÔ’‰šdëh®B% ¦®þ¤x~°‡¡´8EF‚2ÖÛäϲ%D¨˜ÚrsÆ9Ø™ªRH‚ºê²—ŽÌÞ°p˜‚¬(�*<9À¶ñ×ímá\1\]Y¦-œqËÆ2¥É$!; �б(K�CmÙ¯Še¢…‚ÄÔS� t´6¤RH©»"9—j™úêÑsÆ8ÙšˆPÉZêJ雈=¸‘çîjƒîÔÕRݺv>þ?Bõ¹Ž+Îc‡w:Ú±èS'Ž|R[ç÷ç£ržf$üZzŠÛ§4]6¿È»‚$ÿéU œu øµôŽh£,¿ÉÐ÷–R–&ÑÓî4 àdª‘£‚ä i(¡ŽF4™ ço‰|¼þ„rµÌÑœáa¯ù°hþýÓó�,Õ<´Ùp2į�ý¦â‡?KŠÐäë?/¯ù­p)]Š–7±“pV�Ý€7ÑÍXÑð[Jyöêˆ)Þ\+N']F¼,gãǺ“­ö8œÊ ²—Oí®¿W9YFJüž¢r[–Q�ï §Uw*²-Mõ;gVê.Îi“F=½û#Àù}Ài¯'4Üšôä ÂíÝ æB_„Óךæn.Rs@÷U†áæ³Þdã}vK7pÎóWb!Ѷâä gUŠ3Þš~»}Ãïò]#‚´¸VœÍ­é÷¸,Ûj�³¹5ýßú’I1Ó-e$HŸ®àpÚ2å‚k===õNîK}:À pöX#kN8köâMû*·)q©ööü/õ“4cbmçÌZ]ÎºÃøµ›¦Y ;�§ÒÈüDÛ[gÌM®‡ƒœÂýÕœŸJüUèä”%(]�udžáO•ãG,Õ6–Ž¡Q*S|ngŽÀtþ(b©öÌŽ¡]…3fÆ@b©öÎÉpô½µsˆ¥ÚYø—�Š£87-J$êÜÁPž¿~ZG,ÕŽj±hêàN.ÕÖ”l¡�…*O­ëx©Á³p,×ÃAÎ�+B‰¥Úç¿�D¯ðAeNõ•£øo]U@D¨({÷áLØ»x~èíÊsÇ\-Éõrw�¥Ú^ gçYßÞ)‹Ç!QžXª=³’Þ1œu‰Zx¬’u‰¥ÚÆ&x‡ê]zœ1ãÙKµaÞôÑ.ÒÎw'm%i™Ëô;¹T[“æŠ7»Npîx©oM?Řëá ¼5ý,+b©öyÑüßüÉ�êcM›2g¦é.Úípœ½¢âÄrÔr£én¦d3 áWÑë[UÛƒ³x�Þ·eS¤6É„€³d“QÛ´çÆ0 8“" ¹Â™¿ÞF’&ø¾È÷ÌQŠÀÛ3x?Î’®\žj½kñ. ‰Ÿ½ÇY›3ª«p&­ö&à,>0žŸ�—½ÇÙP±=Õå´PÎäØ`"Qåi³($AöçDëYãœ:¿Ç™»/ÂÍ�if¨àtýÔúöàLŠ›×œÉ;p6Ô¡WX}%½8g'•BbG¨ö§¼ÎTœp8¨—Ìn¬8‹WIQ„yØ{œµ{;†³$V•K¬šúq"8“櫱á¼o,,Èû,Ã*y‘¶¬¸àßù�ßãÌ]Ãr³”1Ó ñP¹~Àµ=8“–Ú¶gòr'ΆÒ)ø¿ùccŠ÷øá­é[Ò]›7 à8{ œÄ™‚Æ­ä¹r42o}¦vg*΢X=Î{)xÿÛL붇ƒœÉíÀÙxÎGAš”c5z°òÔajÄá {™ÃðÖµ'ý[jUqíìrÅ™üÃ0Ίó^á\®gwÁIj¬MKÞ2“F%ÕWBY²`j´‚3ykDçáüŠŠ³ƒÏqœ}ÎVgGÅ©!'�-OÀY±…AÀy/A Ohš~ÛÃAÎä꜇ƒ�D7LQµÕ§- TúŠÃA�Å>ÉÑæM­é}œxkú™¼¬ pBÅ pöR8 WÈEú‹WïQy—©™8›Žw©Íà' ›­u„½ÄÓ#¦wŒ-µ©Zö8}l$½¬$ª,ëOØ_Ùaæc+ýî”sÇpbç}#Gk;K“…ù.ïuaŸªõqPô²U¨Jó®?|e¿‡�ƒò»’±Ø¥ ¶F²#\TŸžsçX°¥¾ÌWÉU.s0SñrÔzt¶y�ÓÝ^‹½ÇÙU8¹îq&/Š V]¼å]uJâÆ0¼‰îÿRP–¼YÌ™ìý¡öØ×Á‰"dmaØÕ=N€³—ÌîÝã´ÕaC~šôÿöή¦ô�ãTZïM7­Úµ¸-TڵɞR¶¦¬ÙÉÑ a0#CÓdÉ.DÙ·(Y²…hË„a&I$Œe fˆ¿åý¿ÇáJÝšBuîí÷~¾Ÿ>×éº�ÎsÎóíyß÷œW¿`…ž³ù‡1Î^î¼în¼¿7™]_ݬ½�Jƒ÷cœÝÜTý�UóV Ÿ¦´üeAónnjÏS[‰疩͵Ô5lØ �“XqŠã̈s‹êgž¿±ÃóÃ�k§8¼]š¾çۥ雿<òiâ$§Ç2KÓcŒâäš8_ì0‰ mBÿPU’ohk¢�2U¯’ÉAÅë[ú:5.?«öÉîÖ‘AúïÖ¿µTÝõ}Ëÿ¬8©8¯lìH?ÁÚDµôí(OEö±lÖ”§¢$çb­±+¦-;«¶8­·¯[•fÕþ§8ï‰ ñm¡!PÖ¨ôó·»bê—ç‹+ëb&÷63ÖQR”·µ4JYù5{-eíüAh¦/''+šU[]q�ßݹ�Ÿ§,47Žýn<ÝþøFÄ)|Yq¯Òõm¥X~VmÁJ#Ok%e…†6F KÃtDâ|²Ý:²‡f3yf¥ëæ*»¦›VTqþookuù¶vjÝŽ"Vœ/ùÇŒ´2ÓSy·4ýl7¶«6kY»wKÓ¿ŸU[]q¥êÜÚˆ¯,/4V�ïÅœó'Â!NˆóË‹Ϫ­ϪMß/PS­Ê N.PsOº“h ççßÇù<ÝM�/·iŠ�ƒ�ÜK�ïÎ,M�û8!Nˆ⬺87'DoOœûäzfî±�6–¦aƒƒðÈ=IA"Äùæ@ë¸&zòÿÛçÁqnþ¡óöýž•»©Ÿ�©FX�-Ä qrQœ…«ÍÊÏÁ m¯Î5qîî/f?ý­¤Xœ®îÞA Æ×oª><äÙíl<ä]R�q*ÊËè¨Ëï�mÍ�‡¼?8<<¸£…@UA_›bÿ,{Ä qrQœ¨89+N¬Ž"¹à!ïxäÄ qBœ'Ä qBœ'Ä qBœ'Ä qBœ'—Åéb¥ž0É¡Šâ¼“þö�AB!NˆSâ€8!Nˆ³¾ˆÓ¥¹rÂ8ƒÊÅé"ä'D˜CœôZr±3M˜;âç§‹�N´v'ÄYâ¬�õ8¹Yq:Xj'Îì\sât°1LŒ EÅ qÖœ8km=Nsåĉ&Ÿ&N‹Æ‰“Z~¾8„‰ßz¡â„8!Nˆâ'Ä qJ�8ï®Óïí©¢ÙXV«±ìþ_LØ‹ÍÖDaÊWÞ6ÊßÖ„^N¶–SFù{»4ç)+nZ8ªtW­­¥Ñ´±=|ܬù*JÍšX?�gñé5¾>|ž’¥¹Aü¬‘ÌoôÛVˆSêù²â|¼¡i¸ßXKNMEfxGþ¿[¨;›ÝM2îíÅwQ·Uýk£9+N[Åi!Z>-y|% =…ÑfTœÁ^‚'³�GÅéç,xwMi+Îhô&ã�8§z…w70ÖQRãÉ ÷×ÿwoû`Ýÿ×R­Œ8猰6ÕS)/Î…ã�ué…"ça«uv­?gpû˶¸XkQqÚš7™2¨•w«¦<åF›fw*ÝUkk¡9m¨‹�“_EÞÂHp`éW¬8‹3Æøz˜Ò�–Í4â'wf.¨ãß@œg�ˆÓÛZ±‹ƒÒ­DâՆ>-”º8*‹Ä©#�;kü*ժ̧»/Ä[ýÞû‚DÛwOx'NC-Åœ%NO÷úD6ÓR“søCÅùêˆß¹/3=• ß:TQœžvÚ=}ŒïîësuG�£¥F™ŠóUΨsëƒÍ Ô6Dw[qvokA/ªké£ŸŠœ8ÀÕ^¨ó:wzUÄ™·/ŠYŒz㸒ó?eo™9¤�ØŠ“ŠSG³ñÉmS_å'–ã¤â4lª‘³û‡§¬�þº·V“Æo˜¢s—»“eH ç½óë N­r¶³€8ë _VœÎJ– —éþ½Á`Ũ&iÓ´©8½m˜ ùÖZ“¢5Í|Z*wqä‰Äi¨Ù(g¾ÙÓ�-¢èj©É½Ù[aÅùjësKíÌš*mˆ²â h­áa£vi�Ûß»}VL°J›ÝªòŠS¬8ó6weVº^Ö©$³Ov‚od_k±'§Nå“«º¿Ê +3ÆIÅi¨ÃÏIêûôÔ¸èÑžZêÊoÎ1ât·Óélu/3¢ }´³MSˆ⬞8«¾�uÁræô*\©Ïöð\ŒgžÜÕ†¾§x«w™®Ú…á6Ámõª"ΫۺÓO¸»·7ÛU{hQ±]µ #½ƒ;Z”çÍý£èûoËöä¼þušªŠÂ…aU骽vpšŠ’ü…ÔI•wÕRqFOè!vrgÜ´þìµôðâ:æPœ^•bó+\XÏ^H‡·þqÖ¾àBÖ7V2OoÏ_ª[º«¶`s®2b»j/.6f.ê$sVœqCuÙ®Ú‡[[0§âú•wÕ.eÜF“^Ñ76º2?k]ëÏ쪽¶=@EQîB’å]µTœÑaÎb'QqÆEx³]µ3Ç2¿Å�Qù©#˜+(s<ÛU{8¡?Ä qVOœU¯83£µådˆ†FJ¶5£g[ÎO†¬8“&4-/ÎÌsž’ŒhŒ³p�]EâLžlÅŠ³d_;æ’Kö¤âÜ:ÃÞÞ\UEQ–Íî-Ô«"ÎÌ%�˜õ«ß�q¦‹Ä¹uNGûæ*JïþVp·mZ^œÇW÷-Ÿ†Rõ®âg겡�<„ÖƒzºæîŽªHœI? ­HœÉ ư×RIþ&æPœX’¹m6OEQt!þ¼â¬'|ÁŠóX´}Û��qfÎn*'ÛP4ÆY²ƒéÌÈ™gÌŠ39Ò€gÉ.fÙùüÕÖåŹuª…½™Ê‡‹ÔZ•^ÑÇæÙÉÊ4|sð Œq¦þئ“KSa“A~f¹I]+gÒ̶‰3y–/+Î’Ÿ#˜ß"uxæª>½¢œZ•grܰª‹g½å г’ŠóÆjc±§Xq:Y¨ˆÄùçfæšš)|²ÛõÍ�ùaÍèu]IÅé$üÄÉA¯³ú%Ïð`Vº>Ú�ŠÓɪ¬8“¿«†8QqBœµ'N’bèe­èï¨|{í»1N_‡cœbÅIöÚ»YªTeŒ³¼8 7y7lØàÈ<×络Zâa¨­TEq’SÜ[jµ5¾·¿OÁޝœ­4YqîîË|à²Àç'GžZÓËP‡/g€·iD_‡—§'°cœÝ|,ü½Ìòv�|šóÍ/‡tk+|~fZUÆ83V�ŒÞ>?cÚó qkçöc£Î�G¯¨€v-#µ{ùÇòO'½�Ü„㬇|Ù1NGEO+…Ë‹um4Xù~ŒÓËZÉßIåöºwcœ¾*¢1N±â pU‹è¡ý2�þ)ìR˜dÏ\S±ÖÏÓÝN-°5ÔR`ÅIµñwÕðl¡v9ÑíQªÏʉïÆ8ZkE™¼<Ô¥Šcœ ÚFõ·ÎßøüXŸµÓÜ™•®�ô¥â ð4ŒèmóòäàO'ùu²[K=ŒqBœµ$Î;‰ú!ž*ª²š�eûµáß_oòŸâ,J²éüvV­Ð@1v¨!=A§8W±«6v¤P[  ßHÆÕJ0>¨YÕÅYœú•¯›~ùYµ±ánÚêÊò�d][èŒïc'gÖš¡±ºœ¬ ;«öIÖ„ÈP—fúj*J�\ZèíZ\ÅYµ/.ÄÆDv53ÔPRld+ÔKY2œíªÍÚ)l¦Ã|þûYµÕgQÎêÎmZñyJB3ýØo‡0‡1o'Ä)õ|Yq>ÚÐt”/Ï@CV�'3¢Ó»YµwÖ‡xòÞ]Ô>ª÷7˜W.ά8!½–™U¦ßΪ�f¤-h$/×ÐÕ’?¾‡žHœ�v{� Ð7ÐTTç7Ñ•™UKÅ™µÈUhÈcþoÕfÕ¾È ‰eo¦Ï»Òµ %ƇíªÍZé'4Rc.¨÷³j«+΢ý£;»7ã«È MšÄNhÏ\P§¢ Nˆ³Ú⬅Gî¥Ïj.àÉáYµŸygzòLAcîã¬àÉAµðȽôŽ™•®q'ÄÉqnŽ2Ù>ÕôIJ«Ü¥66ÆJaþÚç'ˆsóÒ¯·¯œüä�­¹Ù�ÂøAœõˆ³†Ä¹9¦ÛöŸz<9õuîÖa6fZa_9Bœ'‡Äù`KË`/uZhêkȇê86>¸“-4õµUÃû8?;=â„89$N,+†ÕQ Nˆ“kâÄ#÷ Nˆâ„8¥ˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8!NˆSšÄyn‰%ý @�“}xýRˆ×/¨ÇdÞ°T"ĉŠ'*N e)*NTœ¨8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆ³®�8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8ëˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆâ„8!Nˆ³Î�8!Nˆâ„8!Nˆâ„8!N΋Nqâúõ®‹Săâ\º¯p�:’Ä�ëH’!κbeüwu¾ <ˆ €ƒ@œ >.¦u¾ <ˆ €ƒ@œ HÐÜqpˆ“ š› .q2 AsÄÀA N$hn‚¸8ÄÉ€ÍM�8� ¹ âà 'CùØÕ·ÁÛ6bXh�ï^½qpˆ“¡¢ÊftØ$è:qpˆ“ š› .q2 AsÄÀA N$hn‚¸8ÄÉ€ÍM�8� ¹ âà '47A\âd(Ÿ §FE4(Õ&}-a¿‘t€¸8ÄÉ€'ÔpÄÀA N$hn‚¸8ÄÉ€ÍM�8� ¹ âà '47A\âd@‚æ&ˆ €ƒ@œ HÐÜqpˆ“ š› .q2 AsÄÀA N$hn‚¸8ÄÉ€ÍM�8� ¹ âà '47A\âd@‚æ&ˆ €ƒ@œ HÐÜqpˆ“ š› .q2 AsÄÀA N$hn‚¸8ÄÉ€ÍM�8� ¹ âà '47A\DšÅidhp:û`UÞ‰ýɇ®FA\DÂÄ©×T·tB¯<¿CœŸŒèÐÕ­A‘lqVÄùɠ ¨=qΉž65*¢’]qheÛ Ayg§Vgs³µµ5œ3ÃÚJؤ‰zÏîþ Þ·E æ�RùýÖ�‹_õ ÔÐP7mfœ–²�ý¿¢ïþyórPÏuu�¡�þ¼ØYåt}KÐÿ‹ò§Ø#,öÀÒ�ÅÎ�ieÙœÏçu{þÏ-vûŒo¿¦ß¢o1,ôÙ㛈 @Bá�8YhJ]ºèG3S“W%’·YØÍÕéúÕsìwÅvÕ¾~~×ÑÁnðÀ>4ä�>¢ôwß¼¸G?ą¡ïæÿ~ñ”¹Y³=»6–ù¡åô“¿ iÒWVVjª«C÷ç?w;°«/ktj…:êR]qŠ=ÂX2Ÿ6E×r©k©>W­X@7žùù�®®ö•Ë9�î¬\6ï@úVÄ ¡pNœ,&Ɔü–MÞfá}i[DÛÅŠóÜ/GTUù¢Ê¦ÌwsÏdª©5f5LYÚ?¤Ì;Ë'衃ûµñv¿StéèÁ]<žÊñ#iUÙíÑaC$"AWWœb�pE–†Œ4vã”ÉãYËž?{ÌØÈ€Ïÿüïõ9.‰ ÆÅÙ®­WƒrÍÅÙ¡ü®Ð‚–òòòì{ØäK³ð…sÇEï+ÎÝ;“­­„å?Pô]úi²²²222 6¤¯Ûúx–yg™ý¿§·UT”�Neÿ9dP_JUŽ&ÇtÕcQFœb�pE–†ìâ¯ïB6kf”耬[³ØËÓ­µ›ÝøôQâ�P¸RqÒú’Ö9'”<)¦ÿ¤ÕÉÁ}ÛÉÇY˜b ¯WÝŠ“~·©®Î›÷*9 eô•Ë94�?~p�ýç¢s\]«r4%%A‘г¢[‘8Yþyx½gwÿÉߌC\ WÄy6çp“&êy—~¦‰5vîLšÅŠÓ¡•íš„xQ¶�bŠFà®]9[fŒóõó»4½FŒy·ø÷û·óV¯\¸xáÜ2?½L‚¦9�î€è§$%.[Ñ–GRtuÅ)öWt`ÅŠ“Ö—sg{ëÆÅ¿ï]íÑÍ?|Ì0Ä ¡pEœ”‰£7VÕÕÕ9| MˆbŹck¢^S݆ –™U[|ýMÇêê‚ÒsLJϪíÛ»—––eÈ ¾4M—ùÑõ­²ù„Yµb�°Ø+VœÏßœ2y<-1iˆ»ú±ïD\’ˆ„ÝÇYC”KSVVÂXZ�ƒ¸8ÄÉP~ö&ÍÈbgovêè#ªÕJ¿fA‚F\ROýç¦Äy�î]e_‹4ݲ11޼½_ð«^�JJŠººÚ¥ï¬(AÓ¥§ªNúZŽ7A\§þŠó§è É ï2¯(AÓ-t{�ï[}qpœú+ÎëW~éÕÅååÓÛä}‚¦¯éº½Î÷­>ƒ¸8Ný'å›ð>Rב÷ š¾¦[ê|¯âà2õZœ¿œØ30¸ý›÷h‚¦_ékº¥Î÷ ..S¯ÅI“ò �4)ÓM¿Òו?ÈÔˆ €ËÔkq’÷Ý€4A‹º@\œ¥¾‹“�xB´hB àˆ €³Ôwq’··:Ð-ºpÄÀM8!Î¥ßÕ!ó§uoßÚœ~­Ûݨ}jí$C\$Ž:OLp®ˆ“l”%›‘Í d³Ù¢B¶òÉÖÆd›€loBvh’:dgS’¢OR É.c²»I5#©$MHöX‘=6$½%ÙkGöµ"ûÉ~grÀ•d´&ä 9Ô†jK·'G:’£�ÉÑ.$³+9HŽu'Ç{’A$+øB’?9Ù—œêON…’ìAäç!$gÉA~ #§G“3cÉ™qäl97‘œûšü:‰äF‘óSÉùoÉ…™äâ÷äb4ùíri.¹ü#¹üù}ùcù#žä-&W–’üå$%¹ºŠ¬!×Ö’kI¤p=¹¾‘\ßLnl%EÛÉÍ�äæ.RœJn¥“[ûÈíäÎAòçaòçQr÷¹w‚Ü;Iîg“9ä¯Ó䯳äá¯äïóäÑEòèyü;y’Gžä“ È¿…äé òô&yv‹”Ü!%÷ÈóäÅCò¿GäOÈËÉ«gäÕsòúäÍ«ÚLŽïã+G6ɓ͊d³òÇ!V'Û5È­·QÖ%)z$Å€ì2"»L.,.hK²Ç𤷠é¶ÇÚ…p#î$Ãóãpw G:‘£¾ä¨Éô'Çȱnäxr¼t’ÕûmÐû‘SHö@’=øã¸�"§Ç�3áäÌø�C?™äN!ç§‘óÓßFÿ;rqùm6ùmÎÇ'À|òÇB’·ˆä-ùøXM ɵuäZòǧÁ6R´ƒÜL!7w“â4rk¹µ—ÜÞOng||2'÷²ÈýSäþÏŸ¹äï äÑoäÑå�O‰käßëäiyZLžÝ~{VÜ%Ïï“ç}|b<%¯JÈëäõËZ>7�D ÎÒ9â¬>Yœâ„8àgýçÝgjç$ƒ8%Nœµvn ‰@œõWœ—Oïª�“ â”8qÖÚ¹€$q~®8eed4hpóð¤ŠÄ)+ûö Y±'ÇÅ)+Ó�‰TZ?ˆâ  N&‡¾9ÑÛHG…]yêò¦îç—…kâÔÓT¢IþÖ â„8ø NFœ™‹Û‰–lŒвq:XjÓ÷¤ÅU½«â”q¢«â *@œŒ8‡v5¥™ÔÞB�~5Òá½É~—@Ù„mzZ¼æÆê¥WEž3®m™Š³øèÔÐnކº�ªò¨>žÏÎÏ/#΢“ózwukª-PSUömc—wt!ÄÉq–®8‹÷††ú uøU…QA¶Ï²ÇQqí ëíkÕT“§ÆWôõ0ËKËŠ“=ئ¤ØÈÏÛêñ™9¬8gŒéb + �Z¯™;è ãÎÄ¢“óË�'Äôüh�Ož¦¼#‹;øÌ‹Ìe~¥ÅÙÝÇôï£#+ª8Eâ,9-l¦E_/ˆêöèôÜm Z;¶´8K.¯°0Ñ‘‘i˜‘<9ïhœšªŠ®–àÑ¥$ˆ“kâ,É.40¡œèõ(3l[Œÿ¡åA%?GX©3á[Þ;/uu§®&ÿQv”Hœ¡�þÎÛ‰ù#,&²+çÑäpf{w×gå¦MïèZ�9·äòJq§Á:ˆIâ ÚíN³›–@ñuV¿þ�™¬74 yiqžN ®¤«V$Δøþô……±fE]µ;—�¡/Z·2gûèBº¶¦ÿLˆ ƒ8¹&ΔØÎL( ÕJwÕîŒëÆ„ÏV�íª élÍ„of€Hœg·�%—œ2œéöþ•çîeÃékksÝäŸ�O›þúJ)X]Ái0â@R€8ƒºyêÑÌ5Äß”œê¿sŽ}ݘ'ÿüÄ`‘8oîTqΛäO_´w3¯Hœó¦†4(×¾ ëqrMœóÆ32kïlPZœó&úˆ ß`‘8o‰¢âœ1º#s:õr¥â,¹0¯£‡¥èÍÆúW�Ι7µ·¸Ó â@R¨ïâ|¸7P¾‘LùD¶mN{±ât´ÒùÌŠÓ˹9&q\œ•Tœ^å'U$NvrÐí“sÒÆ´nÅtfLíÿþ4brJ}çòHšÅÚØk‰îãüqŒ#Ýài$Vœ�[›Ð-ñ“:üçç–ùƒ&~4ÆùìÒrvpkDzqÿ^N<»gÎÐ�vY;£!N®‰³Ìç–¹~—õz–ýnŒsG\Ïžtvó°¡=Ze% ©DœG’¿Úþ÷ýÓK~[4ô+º}áôÞÏ.­wÌ‚8�ê»8=m5h:›f+çÅ LaÑHNæAFhyqYlf `·ï[Ú§ü¬Ú�Ž:jUå°ÞbgÕö l­§#à©(ºØ™­‰ {ym ÄY'â,ÝRbÚ–ŸU;ÀOh Í̪ ëõaVmß.ÖzZ|ž²¼K ½5ß¾Ì�Q‰8ÿwiÁ’Á¶B}E…FMµÔÆôoûâ�ì¬Úr§ÁfˆI¡¾‹�Ü«¸&N7�D¸"NTœ¨8Qq¢â@"€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@š¨§â¼“¬u?Íâ¬ê\œ¶¦ªÉS[Aœ'_ˆ3ÈŪIÂ$gŠÓ¥•e¼¯!ÎÊÅé"ä%Œ7å¦8]l�¢ûÖ¨8]lN‡8¨M$LœwõdeÔ\Åé l’8Í£ÖÄéТYbÜhTœ"qÞY£ÍÄ·¶*N‡æê‰SÝ8^q:´4O\ø *N¸Ä qÖ8'Ä €4!…âü'Å!¼›Ž¡–Bc9?õë\ÙLz{›·Ÿ«&_YÎÒˆ·x|Ëò]µÁí�E+»XkÑz÷ÀÀÞ�Ì5JZêÊü­þ::šÍž¶ZS†º{;ñ”å7ýTZœs"º˜6)/Î…ßö6Ö×PV’÷p´8›M3f°¿Û‡goAÅike2%<ÄÛ­%OEiÓòi¥»jm­Í§MìãáÈç)[˜رœgñ¼ø<Ëæfñ?Íd~©¢óÒ-N[¥)ÁÚÞ-x<%™MQ¦¥»j‹7¹ø:«ó•e- UâÇ ™£±«+Îi,|ì5hô- ø⼨8ƒÛ– ·&砮ƺ|eE9;ݳÉA•ˆSO‹pE?Vœ7}M?áïìô°m®;ex;o'Sž²Â¦¸ÐŠºjç|dj¨U^œ ¿j¬¯¥¬¤àáluv<gp€÷‡�leEÅikm6e|¨wk{æ$I˜]º«ÖÖ¦ù´¯GúxºÐóÁÂÌäÀ®µ¬8‹óñíèÃçó,…æñq³™Ãrë Ä À'#…âìÞZàë¤v-©Õã]n{éÛ›ñ^ô¡âôl!èé¥}7¥ýÕ�m›«‰ã,Sqz·jÚÅÝèÖ¾ÁEéƒ} ºx˜ˆÄ©£Á;¹nЫÜée*N±âÌ˘ÕHN6kkTÉï Ù;¦Gó[qRqêh N¦ÎU| Ì'§¡¾NÎÁµO‹OFO­¥©þ†©0.¹»¶ éåwïZNÁÅLgGÛz"NA£“qÍ_¥;”ãt·V ñѺ·Ã³`½»³°qiqj+å,÷~š=ÔZK ðæDÙŠ3oKÏFr2Y+JN Í^Ó#²ŸÝ§‰SGƒrcø«Kq•ŒqŠg^æ"æ$Ù9·¤`GvÚO‘#{Š­8©8u´šœÜ›ðênv™1N*NC}Ýœ#[žÞÍ�þ6BK³É¦è¼îîæx¯èbÁåŸ�í!N>Égh¥âÚÔ¯š”çÍd¦”¼µ±ÛUû:ÃKUYîB‚óÕdwºýnJ[¶«öмÖÿ)΂�½é{ S°]µ· ÿ¼�1Šgô˜6U諾vô%… {¿¯¼«–Š3zR¨ØÉATœqß�c»æ^;F÷¤ø÷Ãùçö1¿EáÏl¿Üáô *ÎÐ6 âã¤&VœÑtËOÊ_ëÈüú;ÜÙ†Ãq¥Å7Úšíª}˜À½”€2â¼¶#HEIîÂÆžU骭DœÑã:Úä k'—©(+^8_yW-gô”áb'QqÆÍþ†íª}Xt†ù5¯œÊ¿�ùö¬¸ÀvÕÞ·âà3‘ qV½â<+,ŸSgµÌœç ¢(+ã,ÜÒá?Å™¹,@NVF4ÆY’=–þ—œ¤~¬8“fTkŒ3uåØN^66ƃzyåîý¡"q&-Œ¬HœÉËf²â,¹“C÷$ÿ\zfúZžŠ²h@«ðÒ gu+ΤHÃòâÌü©%OIV4ÆY¸Ñ£´8Ecœ%‡º3Go³_ù1ÎÔŸ:trÕwjê*ÌÝøÕ§‰3inïOžU›ºfJ'o{‡–fƒ‚Ûç\\‘8“–L¯HœÉ+bXq–Üû�ù5/ÍÜ¿…ÇS�qþqâà3‘6qÞX×R¦aƒÛËL*Sqžï.VœN–e*Îiâ+Îä?arÐ뫉ÉóFªò”žþžH3¦“­iq&Ç]uqJMÅY]q&GU·â+N'Ë&å'½Îžü];Uù§'FV$N3CõÔøVœg·†•gŗ‹“�ôº(59~¢*_ùiÁn*N'»æeÄ™¼tFÕʼnŠ€/Ž´‰“&Ón­þ.‚¼5öOÓZÿ²Ø¾›»Æó}mh&u·Q j£s/¥}ÁÆvΖ±â ð4ˆ±~yr;ÆéeßÔßÓøöþwcœ¾îÆ8+§Ø1ÎŒµã£FvÉ?2÷ù«ÖÆo$'ûÏ¥54ctpŒêÿ²pÛ§‰“<ºäælWÇ8ÅŠ“dxºYU8Æ)Vœú!–/Oô§âÌXØ)*Ô6GðóC×ÎhÛHNæŸc#*g¯–ÝÛ ÿ>9ùú�ˆö®¦Õ§Ø1ÎŒ Ó£ÆôÌ?±üùµ�kD4’“û'?…Š3 “[Ĉ^/‹}š8É¿×Ý\0Æ ÀD Åù$Å!²—n3]EEY!×÷6l R¼ÕÛ×¥²YµTœYË}…F�ådeØYµwö…†t4×PSÒ(õëbyÿȨOç‹ËKc¾éef¤¥¤(oki˜²"‚͘Y;f MõäädE³j«+΢ËG;·÷äóT„¦±³§Ðí�ÿü½Þгh£Kg'fV­ÐP%v¤s4Ò;T"άe…Fªr² ]¬5_3ÚÉL_UIAÎÖ¼IJ¬o%]µé£=[*+6²1ÓZ:­ëç‹‚-1S˜ë2'‰•IÊêoÙ®Ú¬ÔB3Cæ$y?«¶ºâ,Êû¹s‡6|>OØÜ,vÎ æ°Ü»qðÉH˜8ñ¬ÚJîãLß±F ÖX¢ïãü‚�ÜKŸc/à7³jËÜÇ™ž²A PÃ}œ|§d‹ssâ¼íÉñOnçæžÚcce6¬}çæ©–ÛgX?IõÎ]ébc 0€8©87¯[²}ÃÊ'w¯äæ²±† qð9@œ’-Î…ÙÁ=»ÐBS_O'Û×þsÄY˜: ü íЮ-$Nœnžîðö$Ñ =ìÙß7!N>ˆS²Å)e�ÜòbXîqBœ5Ä q M@œg�qBœHç‡z'­s�ʾÞç—¥Îʼn…¬!N¾ ''Äébo‘;┲…¬+§‹�iÂÜ¡'’ˆ„‰óK­ÇYûât°1Jüq*Îú³§ƒµAâœ~¨8�> Nˆ³Æ�8!N¤ )çã�ÌBÖÆÚ j<¹á~ºÿîñ¤™ôî¯Þmu4ÕäµÔätÒÿ+Í—çí]]ýZ7å+7²4n¼x¢³Hœÿd ¶1Ôá5æÉûy_O\^œsƵ55P//Î…Sºë©++Ê{8˜žM‰¢I3ØÏIt# ‹�)͘¶–FSFwóvµâ©(nZ2¡tW­­U³iãûú¸Û½]³ÚàÀÖ8VœÅ÷ø¶oM7ZZ˜ÄÇLfvµ «г²žîmj V^œ £ü�õÊŠ�·Á·­qsÃøÙÌâ<÷ÿHƒ8¨s¤Pœ®þ¥»¿wº®ožÝ‚ŠÓÛVÐÅEãÖvŸ¢-miíâªÍŠÓÓV£gý»iݯn t6‰³{cßÖ×võ}œ9lb?{û暯O�¯Š8óöNb–#Þ8®ä|\ö–‰‘CÚ‹­8i®¤?¹s֫­eÆ8©8 õ´rö-yZ¸?:j¨–†àÍ]š+³Ý]lCzt¼—w¨à\š³ƒM}g]-d-Vœy{Æ1OYr.:{Ó˜ÈAmÄVœTœ:š�On‹zueu™1Nz2êiä¤Î}zesô7ý´4¿aŠÎ½îNÖ!�mîý¶½ g½³½â€#H†8«¾�õ�uÌÓÛóíJwÕ$»Ñ�…=Ù®Ú‹‰m˜Âvú^ÝÔ™Yk,-�íª=ß�çÍÔúâVz?¶«öõ/cTUä/lé_•®ÚkST”ä/¤Nª¼«–æÊèÈ`±“ƒ¨8ãfŽ`{çæí¡{R|~Wþ/Û˜}»r�M”‡w'H“8%n!ëÒâ¼¶ñ”q•wÕRqFOè.vr=â¾ e»jþƬ W|v]þÉUÌþÿ¶�íª=¼}Ä G� qV½â<Û\V¦á›ý�qfÎk%'ÛP4ÆY’áGsPÎò6™ñ^*Šr¢1ÎÂÝYq_îW>‰§Î¬âgêÒ!�<„4oêéš›:¥"q&Í]‘8“OfÅYRt�ù; gKæî¥<%Q¢,<¿OšÄ)q Y—éªM]Ü¿“»…ƒµÞ î޹)*gÒOC*gò‚±¬8K®2!åŸLÈÜÃDüýgáéM'AÚÄYIÅyc³WåçáEï*λ‚ed>ÈýœÉA¯//LŽ Uå)>½OÅéÔÒ¸Œ8“çWCœÒ]qJÜBÖb'½¾8'9&„‰ø¯s©8�Z–grÜЪ‹'œEÚÄI“©¿‹š§ ÿò*ûG)®+#Þ�qzµø»iÞ~?ÆéëònŒÓ½…F��Á½== ¶:[iˆÆ8»yû{åmïýôĈ_’¾êÖÆôyvxUÆ83V �Þ.?cÚó óÖÎíϬY}~!g@;»ˆÁ_æ¯þ4q’ûÙnN-0ÆY· Y‹ãÌX90j˜wþÞÈç¿F¯ý!˜‰øÙ9Tœmm"ú¼¼¼èÓÄIníus°Ä'D Åùh‡Ã¨®Úš ê|¹þïfÕÞÙæÒVG£±¼¦š|¿ú÷Sßͪ-Þéïëª[~Ví“£#ûÚ6ÓSUQjäb£³+®kgÕ¾8éof¨¡¤ØÈV¨—²tÛU›µe²ÐTWNVV4«¶ºâ,:ŸÚ¹�Ÿ§,47Žý~ÝþøfÄY› Y‹ç‹s3c&t23lÂD¼¹nÊ¢�lWmÖÆqÂfÚÌ¢èïgÕVWœEg’;û0³j…f†±ÓG2¿NÁ>ˆ€:GÂĉgÕ²‰2}ëb�šªôÝlj…¬+º�3}Ã\�÷qÀ N‰çæ„èíkcžÜ8‘{|‹�¥YØ�`ˆSº²Þ¼Ïþ<qÖèBÖu.Η¶x óôu5Çöxv#†@œ#ÎúðÈ=,+†GîÀ} Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@šàŠ8Ï-±¢_Aí�}x}-‹ñ•jùÜ@áŠ8Qq¢âDʼnЉâ„8kˆâ@š€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@š€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@š€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@š€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@š€8!Îâ„8�& Nˆ³Æ�8!N¤ ˆâ¬q Nˆiâ„8kˆâ@šàŠ8AíS›â’Ä @%pBœ"çÒ+Ôµ|¶!¾D�ç&8 ·Ä pˆ¨'P N @œ@5€8€jqÕâªÄ Tˆ¨'P N @œ@5¨)qÒÊ—'Z½m'Z5ĉ†††††V�q¢¡¡¡¡¡U£AœhhhhhhÕh'Z5ĉ†††††V�q¢¡¡¡¡¡U£AœhhhhhhÕh'Z5ÚÿΛçz¬†"eIEND®B`‚astropy-pyvo-f0fdda3/docs/mivot/_images/mangoEpochPosition.png000066400000000000000000002070721521254414300247750ustar00rootroot00000000000000‰PNG  IHDRö77ˆfIDATxœìݯï«×¹çžûœ{½t{÷Œs&àa```````Æ]&Œö€�������þ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀÀÀÀÀÀŒÃ@âÀÀôŠí¹Õ°`Áƒ5Úß 0ÿ^ q``zù& OB*"ùgE¢•ÒSQ„JE*š¸Òð1½+6½WÅ�ÊøYñheöT¡²�J$Ô[|RïJÎîU) r~V*Z¹=•F¨<¤Ò‰+ŸÑ»2 zU¨ÂžzK¨"¤²‰«ŸÓ»rKzU¨ÒŸ•ªìg UÞS…„ªÀõ®âÊ^Uªêg•¢UÝSe„z‡T9qÕà+zWem¯ªU×SÕ„z�Ô;âú€¯!®z|mïªûثރúô³> ÕÐSõ„jÄì]ŸšzU¨æŸÕˆVKO5ê3RÍÄÕŠoé]ŸÛzU+¨/=Õ†V{O}!ÔW¤Ú‰«ÿµwu|ëUß@uþ¬N´¾÷ÔwBu!ÕET„¿˜00¿H˜^�Ä�Ä�Ä�Ä��Ä��éHHHœ±Iœºê¢Ñýr€ùç‰Ó+�8�8�8c“89©Á£ûåóÏåÄõùe°Æfý�ßÎQ‰-$ÎØ&Õ„ *cGŽ8=§HJë“8=Ϧ¤Câ@âÀŒñüš8�™�Y?«é-QeU¡¾5çUQåÿ¬–¢*$ª¢Ÿõ¹˜¨Jˆª”P�­eDUNT?«­’¨ªˆªúg}yGT5DU‹Ö÷ö:¢zOT~Ö×z¢úHTŸ~VGQ5U¡º¾5U Q}þY�­DÕFT_~Ö÷v¢úJT„Âw}#ªN¢úþ³ð]D5ÎÅ!qþ�8<z'ÍËï““pRö)¬zêšùaQ�8�80ÿ·�Ä�Ä�ÄéHœa!Žë«¿ß‹ƒÇÕúÖ·¢r ³Ã`{?{AéŸ TI‰‰ƒv|�Á�*H˜.�8�8C!Î8ž÷‰3BÄAi‚†‹5\­ÿ%3õMyX¬þ.6v°_IF.êÉsÔ7UÑ [V¬âãæaafÞ³asÛÛqÐÐÓÑi«,jÊÌ%!¾´úcZ6zL¢�? Nyl’¾Î2.vf,“’ܼ¨çÞ(qÌMÍx¹¹A;2âNV7ºº¡CèÅ™=C�¸;êÒ±$½8åI©úËô¸88˜™˜”æÍ�òñC‰Cú&«7•Aâ@âÀüåüqB¯q^`ø­ ¾Ê ‰3þˆ3Ž¿k qF”8›t—JL‚íÆ»€oÚ2òfðñSPP:¹–„FèL¤¡yôåm�Ðôà°'Ï4¦e?³¹ìò„@œ-+VJ}«,7l_9r|`â´åÏà@Náú¤$:@9EPx˜»'ÒÔª5m¥é¯ƒ7®XU“@2PEÞ‹C N[IÅ �îfŸz”$¤èL¤™ø6<š@œ-kÖ~Ê/R–W@Þä)sHH˜¿œß&Î×Ú—] ¡ƒ¬oïý!q qþ­@â ï\Ú‰‰‰ïî…Ï+‚mNV6@ÏÛwÁ¶Äat ÊhóVðpÿæÿ¼lï��YÓ¦÷9P•ò2_\y|Ï~°½c݆�ª<ï: §A‡¨Œ¶ §øÏÀÇñ!Ø™5Ûõ†MF`Èwð,Ù\œˆãyÿÒ¬ˆ(:Ded¸iÖ`;�8)A¡`û¸±)ò&7m�Ä�Ä�ùË�Ä�Ä�ÄéHœíÅ) ŽÄ¢ú–Sduô$ØP_ ˆçÂ�Càá²E‹¯?6Ôä 0ÇÜуÁšuäÓ�Ù&OÑ]¬�N7¶:iŽœBQ%Î…CG‘S,ÖøRX¦®¤Lx‰ÀTÞ¢èøÁÇÊü,Ò¬² Jœ GO ÍjhˆS™– ¶Í"Ø2X¿æ/çψó)ä{}0I���8}ýÖ+/͆ÄË�ÄQâ W/ÎÄAªˆ�÷׋ƒÎ2~—œîÿ𑼔 ØyÒÈ”„8ÒbCîÅ�Ä�Ä�ÝüqÞì_{Žš†¤^nÖãÄááîù¯-íDÞ©ÜkV-KŒy5\ÄaffšÐWŠ Ò!qþ‰@âüµ¹8‡ wâ´¦çNçå#ž‹CCM�åÿ†d.Žû-Û çÇC#NknÑttºÏ�¹84Ô4YoÂBŸ>?´kOnXÔ—Â2ÃuÀkož=OBÍ…ª`û–Årâ´—Oçç'ž‹CCC“‰‰3FòGÄ)ô¼~t+( ZZ€›Ðƒ›Ávîã ÿqœoÕ×äº9ÛNbf¢¡¡ö~î<0q¤$‘þê—/ ¦§µ©•MLd ¨ú·‰3ì×Åñ²¹K²¢Š‰‘qÛÊ5my芪ÒÐèÕZÚœll`ÿ)™ðGî„U›—¯äåâfafÞ½añŠªß"¨Òè„ÕÚK9ÙØ™± ddÃÝ=ñå5%wÎ_¡£¥åæàÜ÷ß¶¯%•$Ä õx!(0 ÝóêÑ’U¥ )«—.ãdggÂbÈÊ…¿ð!^Q‰‰3ºž¹80 €85¯þ‰¹8â CT67/�‡\œmMåÀ7ìlè·0ØX®»¤8?øfö¬Ä_Ù-NÜ”¥­Õ_ÁÍÅ9i³¦Æ¢Ü¬ø�‰CÜ‹CÜ--­?NBŒ‘ƒÁ0,×[ÚÚ\‡ú¦¼$gÝÚÕÜÜ\àZšêy9é�8#HœººqÏ¿úáqð�8�80'�8ÕåE)(5¢Ã} ½8_š+žº!S(ÈõÙ‹ÓÚX9kæ JJÊ@ÿg7€ IŸÞ—üqöïÛUSUÈÂ2 l+.�¯¯+WVZ¶mn[ß´µ¼Ÿ5S9Å+Ÿ¼œ4ä\œ õï qF4�8�8�8�80ã#�8ÕíÍå=ÝéÏ’ TÑÑÑ‚ýMõ%äÄñtÊÏ“A‡¨ô× s îÙYÿqÒRb¾w4â$ÄÀ¶Ý�ß;šŒ�ö€í&ûq<Ÿ¹!§˜/‡ŽR­Õ_…œÂÞgD‰‰‰‰3>‰ó³'&Â÷ëçʃ¦{øyii'’r³bɉcuõܲ2Ûÿ[Ä)/ÍÄ‘“•ÛO]q˜"×ù0Þ¿ÇêÚ%òS>h ‰3¢�Äã·á„Ä�Ä��d qªoY_˜Ð=çKs¹³Óm°-!.ZW�óõs xø6=GZJ‚¼GiÁüÁO7þ]â ½8JŠ pºñß $$$$ÌøÈðÇUUö�î[Ý›‹8kóHVT9ܽž’•‘¬­Ê¾võ, ”8êÈÚÑ›×/ ÄùÜP�ÎÅyþôAóÇò¤¸ƒ­#Ãü‡‘8­Íuè\œçn-�uɉQ†Ûþ‹Š†ÄÑ@â@â@â@âŒnÀ‡…5˜úåOòÿñêÆ(q(((èééøù¦®Z¡“€ÎÂik*߸~##†xl%NHà Á=kG^>EWT­_·Š‡› /'#åxïÖ×ÖÚa$º¢jÃz}nä²ÒŽ÷í:¾4BâŒhÀ§Ku½=êuaÁ‚E¨¸7ÛqýµCða§ÝÂ ÞÆÏ²Á ÝÁ ÛâçÚáÅïâq÷ðÒxÙûøyŽxy'¼â¼òC¼Š3~‘ ^ý^Ó ¿ä1~é¼îSürwüJüšgøµžøõ/ð½ð[¼ñ[}ð/ñ;|ñ»üð{ðû^á�_ãMñfoð‡‚ðGƒñÇCð'Ãðæáø³x‹Hü…(üåhüÕüµX¼u<þfþv"þNþn2þ^ þ~*Þ) wÍÄ»e៾Å{dãŸçà_äâ}òð¾ùxÿBü«"ü›b|p >´Q†�*ÇÇTàãªð‰ÕøäwøÔ|z->«ŸýŸû_ð_ô _Ò€/kÄW6á«›ñ5-øºÏøúVü§/øÆv|ËW|kþË7ü×nÛB〈«Ãëâü±…½8°öâÀ^œQ $$$$Έgt‰3HâÔU ü“„Ä�Ä�ÄéHHHHœÑ $Î ‰óË_‰ß&Nà†ß*HHœ+�8�8�8�8CHbb¢²²2‹�6mÚñãÇ[ZZ†Ü$Î試·D•MT9„úÖœKTy�8�8ÿP q q q q~7ííílllçÎ�kll¬¬¬¼r劳³ó�[q”o”rʬ˜ÈÄFAEMƒ™ÄÌ7w‰MÑß!Î�ÀRYµL“Ù¨¨¨1ØIü³æÞ *‚Ä�Ä�Äs^âÈ Ïu8zzL§&8z„ ÂãÆqäÄ%Î_†Ä�Äq.]ºtâĉþF›››sppLž,ĉ~ꩾ@ ‹ÁÐÑÒJŠˆ>Í7q¤æŠ=¸fÝg/òÔõ›�8ã†8555Ä;�E<==Ñm///aaaòN›6 `%55•‰‰‰¤o&==}Ò¤I@èÃ;wîlÙ²ßÝ‘³nÝ:666à˜íÛ·×××£èêêÞ¸ql¸»»£çêó]‘| ý.q9~FCÏÊ?c‰Éü#~zn_Hˆ3CeÓÆÇŸfªlÛ¸U‡‰{qÌ^uè�òûùÄqN}aã—ß8ظù³ݷƒ¯E}aç›EAIi|ç�Å‹| fV®»Ñ�÷>Sv·ÏÆÍ¯³ÙäÄ]¿g_Pâ\xö ŠàBKñ!EŒL“(((¼+잇!�¯Ù’PÖö<4}éª�o’‹G‡8IÁv£~Ý'Xc§Æý5¸l!qMãMÿ᳋ZS²n?MII™åóê‰ãïð�vâDóý&åqõIéÎW¯3c±§÷›@â@â�|í,Z´ˆü~rrrä£���•””äåå-,,Z[[ñÝÄINNFŸMKK^é9…­íÌ™3'Nì¹AaXX˜���ˆˆIƒ`'x–Š üí§ÿ`ƒmUUUâ UTT€lÇKHH€ ---²þÞɷЪWž!þiÐOáÕ°Ê"&ŽŽe¼ÁK¼Þµx°ÍÀÂI>PE=‘.nfF¬¶â²×aäĹdb6ƒ—oâ€úžU¾ñ[Þ²iIÎ2Ú¸i‹ÕVV) ‰B‰£½P½ª¸ÏT c³. žÞÄéÊ/Oíݰ™x ÊõÚ Ðrix,À g�ócT6•1‰È§KËÄÑVYÔÓòT^ ³C]=ݾŸ#|r¿±Ê|y,†qÖ´é�®O€oô—.ûùCÃITé/Õ%~ÊîÒÑÙBâDÇ�wR–� ‰3ˆCÈ/çâ iiiY¹råÑ£Gñýôâäååë$$$|ùò< ê³ìäææ&�"ϳgÏÀYÐíoß¾�퀀šÊÊÊþÞÉ·ÐÐVT-¸˜:S÷3¿8úkÌ·`1qVÝ+ÄYw¿}v�ß7£€NéÕ‡˜8¨hh ¿üûhîEîe4CZ�˜8ËM®“³Rû¿Ã芪ËÏR—o?&0»çÔJ:ëй8›M�[!­Ùn¦»aØ0:}'ºäËÏú#o:)©‘;OïuÉ G§4ð¢ñeÿ!§–QÑA‰ó8¦’‚’r2çv.ðÿ¯ø Âtã7éïlÜü%däÁñ»œ„Ä�Ä�Äñü’8[4uÈÿ+rb‹ÁÄ)~îŽ)õ @ª²Ü<ÁÃw¾!(q¬Œ¢UŸºG‘ªü‚ =ýˆ¼‰DªBl‡Lœ¢—Hÿ0ð :Plÿ%Ne`8بmv�OÜ0a3Ÿûþî\ ?ÛûÀ7•a1H›á±è@À #c¦Ï+’�ª›'Ìõ—è�'ü‘;xmed<ÉtcÀ”‹�ü’8hÝ4?§¯³Œ@«“æè@Õ§ dÁKUBêà‰ƒ¯ªÝûß¶�+Vâ´—VNaañtp‚Äù·ˆÓÖÖvüøqnnnffæåË—£Ó~q.^¼8{öìI“&:iÌÌÌÀa\\\»víÄ;«ªª€B&OžŒN+F�âÙ°a{w @³À=�?ôa``àääÏOµ¿~>à]‘| ý.qTï5NQ•2óQ¿[»Ä©‘gÞ*pF‰ÿ¬ûŸ‹sGÍùbá’Û÷üâÝ=�4€8$sq6Y¸ï¾t-² �‹³óªçíèϧ§(-7<ù0Ú>¶QDNõÐm‡ÈZ—„ÆùÈ© �[VTÉ.ìéoÁÍCWTÙ= ݼçЋ¨Ü„ò/+7‚§Ž_¼ ‰‰‰3â¡^œð;ŽÔTT„¹8_"�¡ÝP⸞¹ˆçKTØ_èén÷€‘ž�0§Ô'pÈÄ wpÁÐÓæâ”ú‡ Ä‰tzDµ—·ì~w.Îû¨Ä•‹5eDÅ:³ "]ŸöѦ­ ŽÇ œ°†žÝ© )=ø^œW¬ އÍ]œˆ(†áGËÒ2â¸ZßB‰ó%¿ùÁFÄþq²C£èhië³ò\oÝá`cë(¯‚ÄkÄBq²²²†¥©A&-- ÐgðqÔœÚØÄµèYù©h(iè¹f ëŸ[íñ½�U LB‹·íðnÄÙç÷u΢M4ôŒÄaqÐU8ÍÍÌì¼Ý+ªvVTÉhn˜ÄÎCËÀ8]TnÛ'§”oŽImâ ´X¹ùiéhh鏸g®7:÷2÷;�8gì<Ñ–÷ŸºŽ'¶¼ãÈÅ;³DÄiiéØ9¹×ìˬþ ‰‰‰3â!â ½8å^¯ûìÅ!'Î {qd„E‰‰#ÈË÷ÒúJœ”ÇÏûìÅ ±ˆ§üu%%e}DÂN7ÕŸ:™y’ý™ å!QH›±)$Ó�k£©¨¨¼lì›SÞvå–X;d3ȹ84ÔÔ5q)€8‚ü/ï9¡ÄIy€§61 iùîý欼®âJëSgä$pGF\¢?â Oõžn¬PÕç¢ñ5N•£ruã×ù_©¨¨)((<ã*àuq q qF3#7GIBJGAé�o0:GkþÂ\râà²æÏÿå\œeJ*¦ë7KÈD‰³JM}¹ŠZCxB™°šÜü ?æâ(HH®^¬ù>4¦Ø7HVTlÂ�¹8z*j:J*ù/[Ò?×SUkOÊÂtcPMòqqÍÈÓ[´Xg¡j~@pkZv¢‡·Þ"õöŒ¼ÒàHðêü¸=3?ö©'8’œ8 |í�&ÒИï7©ˆŒû˜œábiÍŒÅ^=r]KµJsÉruMÀš²È8µîa2°]‡´ìæÑžWû܇�›ç—ÄY¶XÝÔpÇ7@%2â,[¬aº}ç·Ò*qÜíî±³²‚SÆÄCâ@âünZZZÀ/ž°°0ÉDã�3ΈsÎÞœ]FQ^úïß&Žœ¬Ô=;ë1E99™{÷ì qŸ‘#N�oðZ5MÖI“Ø&±lÔÔþð*b`âT¼ Òœ�¬¨˜fitìo �'!N´ã#ð,5º¢ªøe "NŠ�ŽNTp¦í±ÓâT†k)(‘¯¨jŽI9¸Å`úT^ =½Ü\qï¶C[Qª%)‹•…åî™óÍI™·nŸÎ Úd�“ð¶±G;r,ã˜Â 3Og²e[ŸÄÁ”G¸y¨É/`dÀLè^$å~Ó–°\¼8,ZQF–�ž^tÖlÛs U–ÇNr°²!-ã$M¶þ’8Ñž>B3©©©IVTÖD¿x)$øã©nât”Uq²±«*,€‹ÆÇ qÆ~ÆqfŠJQQQ ãæyÄ”ýÃÄ©(ˆ¤¢¢7đĉ9Þ»ñKâHIŠ;9ÜÝ^)Iœ“£=ìÅ® ž8óUþÖ¶,LLÿW÷¨zŸ�ÊÁÊztçžÑ½�C{IåäI“žØÚCâ@âüµ ;qàm8ûýACâ@â@⌠qžž·|~ùzsx|ºÛsÑ3w¯Òÿ¿"(?‡”””¡�žŽqº*k­NŸåáäêžh ‰‰ó—‰óOGl®Ðу»”È2b=°n¨Mß·{3/73v‰ÆÂ¢ìp”8bsç1Û¥0_ˈ‘Žö@‰ö=´Gi�òò‡·ê²÷íþ¯ç嚪Ź1(n¬-ÏðOe` W�—IŠ @‰Óø>oÿžm|¼<Ý/*΋G‰#6WøÄQã…ÊòX,㬙Ó_ù>ÄY³êçÀde$�o–h©¡Ýæü¼çÌ�v~A”³fµá09)’�ªšªüµú+ÙØXÙÙX7m\û¡¦%ޏ˜è‰ã.Tì>£àkÿäĹxáÌŒéÓȉsÃÚR€ŸŸ��a�Âüä¤àý5«~¾Y@q1±ãÇ++)222>~ìB†W7†Äù›�ÄùW‰ÃÉÁô´½!ç[K�ÞÒÅšêJ…oC?¾K352šùÚ”�‡esp€ÛÇšŒ‹ç3aß•%¡Äáä`‹ yÞÞTôís©Þ2 Mõ……ÙQŸjß0Ú.!.ÒÑRš“FCCìùùcaL˜·™ñN”8zË45ÕU sb?Õæ0Þ)!.Úñ¹%pO\¤óÇâsgŽŽ|CztúîÅéh}—,8cÚ£‡v}öâGYIAKsqeYvYqæBeE°M ïÔ¸˜à–ÆwgO²³³u~m qòrÒhhh¢"‚ÛZêc£Cš÷Ù‹ˆÃÉÉöíëg’¹8€8||¼ñqÑŸ[-,β³³ïü ˆ£  ¿v­þûºwÅE²²2�8c„8#t§qHx§qHœ±�Ç.w­.�(+)$ |صW½Fýv=c¹bƒu+¡?%Φõ?;<ˆsìЮ>‰sî” :PUš‰¬¡-ˆFªneÒâý½8„�*¡Ù‚v·. Ä9wÚ ¨*Í�C^^�Qu´”€—§'fGc0 `ƒx ª¬¹„FEq2:PpÃÄ„MO F‰cyÙ¨úPƒ\¬¼8uà�ªVç׬Ö˜8…y) ©â‚4t *#¹ZUy.JœkWÏ£UõueÈ+ËÌ@Uqá[ “‘–0ð@ ŽÅ¹3}N7Ĺví*:Põ±¾œºül òºMSƒT…Aâ@â@â@â@âŒt>9ß¿µJ{þ“mɉÑÄw„€½8ÿj/΃{WQâ„>&‡‘—‡=J{›‹â,ÑT9qtJœV(qÂÞx�¿Üû™cgk9øS]MY7÷¿MkRã_â„yöqðó(qœo¡ÄùÜ€¬¹È{KNœ§n8‰¹OèkæËLœÐ —ÔÔÔ„¹8­M5àUqÑÁ(q\Ú£Äim®ûósS9ÇÇËCC] ˜fë–Mi©ñýÇù¡cÄqqy€§­µœº ?7<,„‘‘‘0§´¤ç藍ãë+ßgë—€à!çß%ÎCK”8Å9á”””µå‰äÓ�‘97w÷Ù‹óðþu”8Ź1ÈË+Rû›nÜÑRæìxƒ ËØü!¿$?\W•I>ݸ?âHKIˆS]ž>Ú �‡�ŠÁÃë–r2’(qd¤qôâ”eôÙ‹3dâ ý7�_›]ÞgbÂ~nþˆ##-EBg§Áöâ�dx‰3Òw''NͤôChÌ!Žœ˜„ƒÅ%HHHœÒÕÕ•œ}ÄdÛ*íùÎ÷oYŸ\‰óoÈFWGM[S%'íMS]f\¸§®ÎâÏõÙ(q&³L yõøSmæ• G±ŒÂ\q@é.U×ÖRÍIkþ�é¶~*|íûèèÁ½y™­ŸŠœî]§¡¡n¬Ë²Ñ]ª¡­¥–“Ñ\_寻T³µ¡dâ,ÕÑ0Ù¿£½¥˜¦(/‰‚‚"$ðE[Set„?/�8Ku4MŒv}ý\C>GIQ^{‰FUy:GSC�0ç—Äés.Nà+ŸcGäe~ùüñ�£= Msc β¥Ú¦&û;Ú›‡F ›ùóçÁ¹8„Œ:qäDæ:?‰3\Ä‘“À9\¶„ÄÄyìl§"7cÜ—šüL¡SI�8ÿ6q>Õ¤06˜&À‹a —•÷|jGèÅ9|`—ü<)F ƒ¸˜pØ›§„UÄÄAfoŸ>�ƒa�•‘xáîÐÙZÞÖPtéü1Áôôt€/žOÐéÆ u¹f&;Œ{áá8p/NdèK¡ÙÈÀÐUW.�æ`g›8‘fž¬”ñþâD†ù Íž‰\(ŒlEUuE®þš¬¬SØØX7¬_SW]ø‡Äioýxù’…àŒéôôôâbs_x>Eª¢"ƒ…„f#ïáÇŠªß%NEy‰¦¦‹²¼zìojü‰3ì—þë�8RBÂNYôÙ‹ƒãò°˜ú„Tç+VÌXì齯�8�8ÿ·Ä�sq q qF–8OŸ¸=æÞÜô)=-UTTd÷î]�8#Aíî~äêJ\Ü;öv!ÜÉÐWÓøye#‘¹ÄUú‹5>%*XÃÃÆtÇ%Ne@(Øß|óîu¸öe,fδé6GNˆÓ�b´n'3#V[Q¹, „œ8—ŒºïÏÐ?qðYß3ò©(©_±¸iIÌ0Ú°™�‹iSY¥,(%Øîùt{qˆçâ�ôâôGEœÔÊE‹ë‚¢‹|¥…E ÄY®¢¦¥ TâÔ�d¶i+NhÎ÷”œß%Ú‹CMEUàˆ³|‘º–¢rI`xS|ºÙ¸9Âß³ ½8�Y©ž¾‚|ünW­Iˆ“í‡Üð<ÞÝ‹˜8�9ÅihÐ{TõG´ó¦3¿4õå+A~7ëÛâðqó$xù¶fž7;Ì>…µ ì'ëÅ!ž‹C܋ӒSÄĈ�~ñ%ŽÙŽ]š Ua/$Î_ËÀ×Å�Ä·Ä 7pø¿"¼�q~Iœ-š:ä× 9±Å`ðU7M�è«i qм_ƒ�º (t *ØÎ %Nå«0°Q�T}OÉfÂ0fz¼üݹ8 @!~à¼Y…•!QH›ÀOÝU7LŒŒ™^þ$U7�ŸÖ×Ò&!N¸ëðÚÊð8’éÆ|ÜÜþ%qкyꬾöRq¬ŽŸFª>¥e#‹c“O|yÍÞ-[7®X |Ó^T>……Åóž#$$ÎX$$$$Έdäzq<Î[âf aèé{®®$&1,Ä ¿÷´I˜‹Sê„'ÒÑ•Üa/oØýî\œ÷‘ñ+kȈŠufäE:?é£Í;÷q<®ßÆÍÆÐÿ¸v”¤Ôà{q\º6qzÈf�sqh¨©kb’qù^ÞuD‰“âí�§6.iÙΡ9#§«°Üú„92Ãf@âȈ‰÷Gq ’éÆÊóæ_;i® -sd÷>8ÝgŒçŸ'Ner5¼š²„qIœêŠä_�êHœ.#DœRÏ ŠP‡öÈÄX>.q–).4]·é8žŒ8Ë”TL×oþ—ŽgÕ"õå 5„Æ•½|£&;Ÿ0GA·ZMã}ptñË@Y‘¹„¹8z*‹tæ{½j�KK|ä¶'daº1>«ð¢±÷×´½E‹u”Uòý‚Z“³Ý_€‡íi9¥o‘O÷À­==7öñsp$9qðy%¾w'ÒИï3®‹ý˜˜ærõ:3{õÐ1tEÕ*Í%Ëk4$g•…ŪÉ/@‰S‹´üèi{NQì3/>nž_g™šº©ÁöoEåäÄY¶XÝÔpÇ·â qÜmíÙ§°‚SFÆBâü‹ÄÑÕí¹‰ÐÎ�;ÿîWEOš››õõõ¸¹¹mmmyü`Þ0$$ί‰#+ƒ³¿seœGNVæž½ $ÎÈeäª,÷™rLžþ�Ÿ'*f¢¿‘@œè{ÎBüÓ¨©¨HVT�Švpè~ª{EU±÷kEœ�茙¶GOˆSª¥ H¾¢ª9*ùàæmÓyx1ôôrsż­m†¶¢ §%!ƒ•…åîi‹æ„ôƒÿNŸÚݦ˜¸÷í»hGŽåÁ£SX‘O'Ž3Ù¼µOâàóJ#\ÝÕäÐERî7l×Å)‰T”–e §�5ÛöìyÂ@•åѬÝ-KHšl5ø%q¢Ÿy ͤ¦¢&YQ*ÚÓyŠšZ'‰§£¤‚“�]U~\4þ�ÍÞ½{G‹8††† .¬©© cddŒŒŒÌ«~Ã�8cŽ8ƒ¹ôßïG'êx÷êÄi©Ïësâ'x'c¿GJRÂé¾í/‰Ó} ª»°ç¯Þ£êïÜ£ê}\ €ËÑ»G÷íEå“'Mzbc‰‰3„ttt`0˜ˆˆô¡AwóBHHœ_‡¸g…žÖ¶-úÿÐ@$ÎØ $Î_» §Ÿ½%%e¨Ë“Ñ"NWù;«Sgx89;J* q q†�‚‚ðUßÔÔ„>¼}ûö¼yóóBHœqHœŠ‚è% ±Œ¡Ù3nY™ˆv¢½Öü|�œ¬4 NÓ§wû÷íâã� N­½D£´(øFÍJâÃHªÄÅæššì_  þ1gŽP\l„åÕK<<ÜLLLÛ ·uv´¢¸inª7Ú¿—��—™™Y{‰ViI!$Î�Äùÿ¹Ó8--'{€³¼º1$ÎÐ’šš ¾œ WísqqÌ !qÆ!qÈK¯ÐÕ¨.ŽÍÏ’’%éÅioÌKŠö™1�ßÅñzŸ½8zË44Õ¾�øX“ej´]B\äksñà‰#À?51& ñ}þ›õD ·®_��›ÍÉÁþô‘=J½eZšª…¹ Ÿê ï’íh}7Hâ(*Ì[±|iMU^An²´”I/NGÛ‡ä„pÁÓ¹8ôÙ‹£§»TSsqQAfC}•™é~œ„xç×Fò^âð'%F77¾ßúßf,»Ýpkýûwù¹YœœîOÝPâ,×ÓŸª¸(¿±áƒÙN¢ó[;$N�Äùÿ!¼�$ÎöâŒsâlZ¯Ûçl˜c‡v‘'?ã Ø|ƒTú:÷9Pe}õÔš•ÚäÄ)Í�Ç—Æ¡U7LXÆ´„׃'ε+§Ñ�ª�×Ï(((š> CTë×®8rpðMYQ 8EEI:DÕÑZÍÄ„MO Ì@UANòqªòÐ�ª ×/ú¨ºqýÒšÕ+ȉS^Š lU–ç¡U7àÔiq¿$ŽÕµËè@UhÈkð¡Zš> CTÖ¯=zä ðME92 ³ª²¢êüö…‰‰)#=§¿@â@â@â@â 2 p.θ%Îà{qB\1 ô„¹8EÙaâbû©&½£¹Àêò Yiq”8ÒRbâçFSRRÖV¤ ~ºñ理 œ¢®:{Ó�Izq‚½P⼫ÌŸîÅ3ׯúŠÎö�ׯ]èžyƒGFZ’@œÒâ·àÔïkJɧËHKý qÊJ AËÞ¿ƒÓ�™‚8r¢b'Ï¢¸éÙóÄ‘—p°¸ ‰‰3¼Ät þÿÛ‘#Gþîr]œ5kÖÐÓÓsqq_§?â æ Câü{Ä%?OrÕrÍw%q™Á2Rb(qвÃ(((‚ü]?×gG…xðñrˆ³T[Íxß¶/�è\Ý¥êÚZª9é!Mïsâ"|ÀÃÏó‡‘8 t—jj/Yœ“Óü±$>úxØÚX1ȹ8 óeW­Ô­­Ê/ÌK‘•‘D‰S\�>]ÈŸ¶æšèˆ@>Þ©â,ÕÑ21Þóµ­UŽî2mmÍÜì”–ÆÚ„¸p=]�/Ÿ?â,[ºÄÔx_Ç—†¡”Òô’¼Ü·Ÿ[âcÀÃ/m-�8ýg¼GNBÒáÊ5HœqFœqHœ’8ey‘š‹•ÈWT]9„ƒ�uâD9 £½[ ĉö˜=k55º¢êSmÖãíÓ¦ñ €=žOï o/¨†÷f&»§Oãï>…ä �ƒ_QUQ’©©¡F¾¢êêå³ìl'Nœ''m¼7�8‘ᯅfÏB®BÖ½¢ªñcµÙ£éÓÀ©Á/Ï'h/NTDá°¡§©ñÃA3ÓéÓ§�ääd½¼žÃ^œ2¼—þÄÑPè¹'=-ÝÜ™³]¶âD?y¦¾@‹ÁÐÑÒJŠˆ>¼b5ìÄé¹#U_½8ÝOÝ€Ä�Ä›�ÄsÄ�÷¨‚÷¨�Ä!'ŽñÆ-ø¬ÂÖ¤Ì[ÇNQRRfyùÿ!qüí�h'N4ßgR[Ÿ�æ|ÅŠ‹=½Ï‰‰‰‰3B^∠Î:¶Ù`�8Ë€ÁÍоû%Žvw×rµ$.n‹�{»âz”#>söñÿ •%¥éžœ¿ª­ ôã0‹]û»€u$Žöåžã¹y,öu!ÖÉ­Œ`Ÿ<Åõü”8ÛôV.”–íLÍ&!Î%ãwrè‡8 ¾gæSQR=¾j |Ó’˜i´q 7Љ¶²JYP$*°Ýóx¦ZèúaqºrKzîÇI4PåjiMEEU|ƒÜrÜÙ %NeTh­!õ-À�¶ŠjOËS§Z8Ô…r§¹“ÃÉ}Æ*ó屯YÓ¦º¸ßèë,#Lw输ÃÏ�*ý¥DOá$í.^�-D NA$2;°,.g´‰‰‰‰3"vâ°`™Âlî7Å\ÞcÌ„Á¼FèÂéŒIKuqœÊçvö2�8œSXc\:Á?zq:ã3R]Ÿ òò¹Y\L/NgRVêcOäø –h/NÐ]',“óÂÏÙâ2Ç”)5ÁÑä½8¿$Ú‹CMEUàˆ³|‘º–¢rI`xSBºÙ¸9Âßߺp:³ R_ø òñ»YÞ !N¶²ò Þ˘8�¹Åih.\€8hu”¥ú¾äp³¾M 7O‚—_kváy³ÃìSX»�îÒ^â¹8Ľ8-¹ELŒØè/Qâ˜íØ­¹Pöâ@âŒb q q q qF$¿$ÎMòuø '¶ô׋C¥š#0ÍþÈ)’�ª›Žè«iˆs~×þ>ªnšÓ_¬9ø�ª›‡Žë«kªÌwî�ÉÇ bÿphsq@€Bülðo +C¢‘’a±è(Õ÷¬&FÆLï’�ª›ÇOëké�'Üõ)xmeDÉtc>nî‹f‡It|êæé³úÚK ı:q¨ú”ž ޝŠK}ú¤¨¨xõêUp@WW×üùó÷íÛvÙÌœ9ÓÏÏ0¼ÐÔÔ4//¯ëÇ{©««Túðá¾»§˜&¹;\\\���÷îÝ $ÿ‚5˜úå¯$$$N¯Œ)â |9qf GNLÜáìEHœþˆ#')å`e ‰ó�',, Ý©««{æÌtÛÚÚzãÆ�`#==}Ò¤I�àÍwçÎ�;[¶lÁwwä¬[·Ž�� 8fûöíõõõ„Fnܸ6ÜÝÝ………ÁFFF†€€@MMÍßBðUƒ¹GÕ/ q q qzeðÄÌ¥ÿþf/Î2e•MÚËHˆ³PZvïšõ#Ú‹#%"úà•a!ކ¢2:v@OG7w¶Ð#«›ÃBœèçÞêŠÊX #-­¤è܇V7†�8RbânÜî³GJ\üÁMHœ¿CœE‹‘ß=MNNŽüȈ“••…îÔ××G‡±@ìììV®\ 6|||@›TTào?%ØVUU%n¹°°PEEÈ}Ž—��ZZZ^èNggg%%%yyy ‹ÖÖVòo!HHHHœáÏ¿Kÿ[wéiéÂÄ)ð~ ¾‚3ܽÿ!âoÙ†/(oÍÌ»uê,ø'$Ë?è‰ãÿÀ•vâDs³òؤúôlçë7™±L§�@âŒKâòË^^^Þ¡'55•›››x4Š<Ïž=í Ûß¾}Û444•••ćµ´´€6�=JòrHœA§®ºhà_HHHœ^^â ·áTÆI1Ò3<9wY[^½_�·Å޽]@<ÝÄy碭 „eÀ̘nsèxŸUÚ ”~¼–Çb×þ®Ê!ç{Ò[>N®[‡Nˆspó¶ùbøÔÜ–˜£u›À³ÌŒXmÅ…e¯BɉS»NK‡�e2ûä)›—ê}ŒJB‰Ó—j´a³7Ï$,ÓŽÕk?'eTékiÿü¿²˜„�¹…èÌYâ¼ÿÙ- ‰"!Î¥‡gðñ@|aù÷üRðÚÇÖ·kZ2s�¶låãæaÆbµU•EÆ¡¾Û=?“©¼u��½‰ÓUZžÚ»ù?â�*×·AË¥1‰€5<œœA�ÝQâT&¦!7‹ÈξÑ^¤ÖÓ2/¯Å¡£]€;ÝÄ9i|@Ea–‘qÖô�O<qôuõ~þ$¥ˆªôu—?ewõš¨Ð‚o â“�ŸOj$Îß'Ž”””““A*ƒ'Î÷ïßçÍ›gjjZWW÷áÃGGG›œœœ�7&&&¶¶¶©ªªjkkÎuðàA666Bg���ÏåË—«««V¬XaddDþ-‰3â Ãm8aÁ"/HœÁ‡s kŒ½s'xêG/NgLZª³»àT>·³—Pâ(JH®TQ«{^äé/=Gd€¹8� ™©�ž òò¹�¿J>çÜîýsg¡Äùš�¼òàÌE@œåªjZ J%~AMÑÉf›¶â„„¿õ&޲´ìEåêਊ7*²óÀ6Jœe*‹HJg{¿jˆM±7·ð½s�d.q/NKr#cô#”8f[ 5A;d½8¿$Ú‹CME]ˆ³\]SKY¥$<¦)=ÇÌpNXô{a9¡§³°<Õ÷µ ¿€Û âd…�f¼·1q:K*'ÒÐ ÷«êŸ8h/Ngù»Ô×Á‚ÓÜlìÄá㙚àÿºµ¸üü‘c쬬]ÕïÉ{qˆçâ÷â´”T0a±Ñ~¯Pâ˜íÙ«©ºö⌠q<==yxx€bÉWT L|÷Šª 6°wÇÀÀ@¸çñãÇ€> œœœàYâ©6@àWëáÇèö¶¶ãÇ�sss333/_¾�ŒLò-4BÄ¡ ¤ïdÓÃJHœ^�·t‡ERƒüÍùçòKâlÑÔ!ì9±Å Oâœß±¯Ï�ª›¦GôÕ4€oŠ<ýÀË�oÐ�ª`‡_N7¾ivL_]‹œ8կ驨â�Ÿâ<½l5 ‹m�M«|…ü3_ý&¨úž’ÄaÌ|ö’˜8ÅþÁà˜ÒW¡è@UÖ ä-½ ‰) Gîjé<Àtc’�ª½ë7m\ª6Ú3ò¦Lbñ¼e7„¹8 @!~ð…•Ñ Èû�MBªn€¢2‚Hªnž>§¯³Œ„8áîÏÁk+ã’I¦óqó\<|ì—ÄAG©nž;¯¿L—@+ó³èÕ§Üp|Ujæà‰jï6ƒ�«Öß´WÕLa™ìùÀgÜ_Ý8-- ÐgðüCâÐ00÷ùµÚ¡t‰sÙ¯TjÑ , 5vß̹·_ý«Ä��ù?ɰ÷â¸Cüð�ÇyKÜ,! ==ú�£ &ˆnçöæâ”z¿î“8—¬p³çü|­8®ÏUº U·é®ÄQ•‘Û¿v#>57Òñù—ÝË›vÄÄ wt6"ÌÅù’”ŽIxü<â�%UWfÁà‰“íHGK[›âzå:ÇÖŽ¬‚!ÌÅyŸ�ºRCKFL¼3¯4òÉó>Þÿ='à�Ûv8Q CÏÏDJfð½8®Ý€8v8ѹ?[–‘%Çõ–-Jœ/¥•ˆÿb‹8ÙQ±ÈÏ'¿ÈÕö.[Ç»:HœñMœÎÎÎÍ›7þ%ÃÒ‹£çöýíU¿7UüB’””Ç�"[-ž&).ÝtÍ+fLg؉C¸GU­_8ÞëŠusHlWlºµÉ!9‘¹ä½8!wî“§öuòZË›Í ]‰YÖŽ€§ú$NÀ-{À ÔÇžY/qÊB)))ëÃã˜nŒö┿B/ŽŒ¨Étce¹k‡Ž)HJ1Ü5´éÆøÂò†”¬ÉÌ“ì-.—GÆ!ï?9ƒdºqmB•×ÝûÍYy]Å•Ö'ÏÙ r. 5M h°¢FP`ÚK'g”8)A(qjÓ²�–ï?hÎ+µ>c!‡“˜82¸þˆƒ<Õ{º±²¼Âµ3 ²rGöÃéÆã›8---à—DXX˜d¢ñÀ9â÷âÿŸ�І–™S€C7‘ž‘†3GiÅé 6”8ǽ*p‹×1³rÓc' Ëk™{æâ\ù^E=‘önLÉ@•¼æjðÔö7Pâ¨.[î=e ˆ³ÕÄœ�›—–Ž^XBæ´µSÊ».H˜¿š‘#N©g`G¨�C{dR¬ƒ JP b¸Õ‹Ôß¿Ž(~ +"JNœRŸ@äµvNí1©±Nn|œ\ýç{Ò[~.îi¯ãRï�9O>g™Ê"ÓÍ[¿�ƒÇýú-öÉSÀ. ë“8ƒ™n ê¢Ùa>nž¯¹Åz‹5tTå…·få'zù�‡í¹Å¥qÈÏÄͽ=¯$ö¹8’œ8ø²j_Gç‰44æ&fqÉ3r\¬o1c™®?‰®¨ZµDg¹¦VÃÛü²¸$5E%”8¥qIHËží%•±>þ|<<¿$Î2 MÓ»¾UÖ�yjçîoàå?ˆãîàÄÎʆü|’!qÆ7q†–¿IœžÑn�::F°Í;WñàËOüâÈxñRÓ;€8çC¿°ñ΢ ¤Üuë͉gù@9̬\Öá�·£?Sv7ÅÊů¹Ñäà?×”/(qNßû§ ãq|ó:™&�_õ§±7Ÿ"]ªZ«¶„µ¹¥/Y¹Ñ7¾æ¯fäˆÊrŸ)Çä)à_Üy¢b&ú Ä©ò Öš¿`àU–Æ{^;WÜdݦþˆêücÐÂó ÄiŽN>¸yÛô©¼zzÀïwÈWTՄĬÕÔf�ÄÂÆ2y£Žî‡È”8�q){ÖnàåäšÌ̼s éŠ*PÑ�Ü…¦Í ¦¢’“@‰Ó‘™ÏÉʦ:o~‹ÆIœ–ŒV–Éw-.5gä4Ü9�—CÏøâmïˆväX=ÉÁÊŠüLp’&Û û$¨OµŠŒÌ„îERîwS¯(+Ç@O/:[ÈöâeÂ@•åÉÓllHË’R&†;~Iœè—þB‚3©©©IVT�Šö šùã©nâtT×q²³«**ÁEã�8}æogÓÝ ³7xvAâÓ»'ÃðóV™ ƒ³úq6]|¶æÊ£URêkÁÃ�'î¥à—í}6ZÄ骫·:{ž‡‹«´‰‰ÓWÆqÐ^œéJ/_²ù8LJY%ŽSx%%% çdv. Š'1¡?¦¿L~gåâ/&-Ž749 ‰óW‰ó‡Ä¡£¥åde °w‚wï“8Èχ�=à‰¼ºñÿ9q»Üµºt¢¬¤�ü©±C‹�6t.ÎÖËž–៻¤ÈërŒ¾Ñ($£jtÃçVH­}l£¬ú*ð’-G¬ +ª¤”´Ðöçàæ¡+ªn< ]·óÐã°Üˆâ/ºë ÁS‡,nBâÀÀüÕ@⌃;��eâÀ8@â iløä|ÿÖ*íùGL¶%'Fßbì]Q%©±�™�‡–žQ@Tnãi'Û„owbÛæ*hMáâŸHÇ@CKÇÉ?s;sîYß Ä9vÛm׉ë(qBŠ:XÜŸHKÇÆÁ½fë¾„Š¯�8005�8�8�8�8-__ù>3X¿Øñãâ^o¿RQQSPP¸EWÀëâÀÀŒ•@â@â@â@âüåtuu%'F1Ù¶J{¾óý[Ö'—ÿëÄ9ië=aÂÉêðÒ00c(�8ƒ$NMx²¸=:iŒY(~Ég|ç±³�ŠÜŒq_jò3…N%ý»Ä™!"EEE-$1Ï9¢ f åÿ‡8Ýű€Ä.â ×¹f ‰{q†�ñ׋oà33¼—þûCâhÌS0^»ñ/ôâH ‹<8wiTˆ£±@ �–HOG7w–Уk7‡…8ÑϼÕ•±F:ZZIѹ­n ;q�ûRYßê³yêæmHHœ_f¼ÎÅ�Ä��‹�ÄùûÄ1Þ¼ _PÖš‘{ëÔYJJÊ,¿7H'WÚ‰Í�”Ç&Ö§½u¶ºÉŒe:m|gìd¤WTAâà!q``H2ì7p8¶Ù`�8Ë€ÁÍоû%ŽøÌÙ¦k7�ýzú9ÓãÝ®™ñ°±3a·ë­üŽéŸ8u�‘ë4–°±LfŸÝÛ|°­½HíG˼‡ŽtUÖ ¾9ilª"¯€edœ5}Fàcàýez?h’RÄUúºË‰Ÿ²»zMTh�8ñIà�”¥f@âüŸgàë⬽êþ„Õ_Å»AâÀÀüv†�8,X¦0›ûMA1—÷3a0ï_…¡ÄàâN~ð¤%,n«Ž@ÉvÝ•ßD<÷ãœÂêqñÚÄQ–”^¢ Tý*¬Â?DEZlˆÃÇÉ•àâÞ“z~¯1PÒ�“« !¹VcÉûИbß7²¢bäÄ!ïÅé�8ŠRÒ+kÔEƽ •™K Îr5u-Eå’7áM‰f[ qs„¿¿-ü]â ½8ÔTÔoÂq–«kh)/, ‹iJÏ13Ø�ùô£§³ ,Õ÷• ¿€Û�Û$ÄÉ~ ÞX¼—1q:‹+'ÒÐ8\¹6qÐΛβêÔWA‚ÓÜll ÄáãáIðÝZTvþÈ1vVÖ®ê:ò^â¹8Ľ8-%LXl´oJ³={5UÁ^Hœ{q`/ ̈ä—ÄÙ¢©C~Ó�[ úëÅ!ŒR͘fäJœëÆÑ�ª0[G ŠÏa è@ÕMí£ ©~ˆSìýœ«ôe :>•厬Ì|÷:%Ž•éat êSx<Ø_õ:¼Ð¹ Þ‡°Xt *Äþá�‰S6€oÐ�ªàû.(q*C£ÁF58E÷øÀ #c¦wÀïÎÅ ñ»÷_P^…¼ÿê˜Dt  àiÓÿ É@ÕÍÓgõu–’'üésðÚʸd’éÆ|Ü<û%qкyö¼þ2]q¬ÌÏ¢UŸr �ljÆà‰X³w›ÁÆUkÀF{å»),“=8Câ@â HH˜ɰ÷â8=M ޶¼â©m;P⸚_D‰wßCOO˜‹c°l…±þ†þˆnÿ�šŠŠ0çK,ò/t‚óS”8®WPâ|‰Oû�oÂ\sqJýC†LœðnÈûü1§40%N¤Ërð½¼sïwçâ¼�O]©¡%3W¼3·$òɳ>Ú¼çˆãqÛ',Ša`@w*HÉ ¾ç HÿÄñ°sÀ‰ÎýÙ²Œ,�8®·î ÄùR‚Þ]<á·ˆ“KGK[ŸWèzÇŽƒ�­çîT�8�8ýfè!žÙG’a'Îñ-†}öâ �8h/N¹oPŸ½8äÄd/ŽŒÈ\bâòñ¿¼}%NЇWŸ½8!Ž®(qʃ#)))ëcRþpº1¨†ä¬ÉÌ“ì-.•GÄ!m&¥“L7®�O¥¢¢òº{¿93·«¨Âú¤9�Í çâÐPÓÔ$§â ¼ttF‰“ð%Nmj&Òòý͹E]5Öæçäp’GF×q�§zO7V–W¸v朂¬Ü‘ýÆpºñ0GWW%éÎ�;GêûbÀ477ëëë300pssÛÚÚþòøÁ¼aHH˜¡¤¬¤ðÒ3MeQðgý†—8“™˜Ãï86ÇXî3Å2üœ‹34â€RÂIë(*Ö sq´ä sqȉƒOÍ�/&ñ˹8˪šnúï[jJœU‹5—/ZÜ“\ö:Lmžnî¯9Ez‹5tTå¿ oÍÊO|á ¶ç•†ÇRPP„º¹·çÇ>÷æãæ!'(_Gç‰44æÆ*â’>¦g»\GVT]=v]Kµj‰Îr ­†¬ü²¸$µîa2@œÒØD¤ewÏöâŠXo?>ž_g™º¦éŽ]ß*jȉ³LCÓtçîoUµâ¸ßsdge§(LH†Äö^œ½{÷Žq .\XSSÆÈÈ9˜W ü†!q q``~#蕵Œvèk)‹ªÉÏê¾~è,° ö�/×^âÝ´MAL‚‘žAbæìH;'ŠªA‡d°&ë©WÍëðµêZ¬“XØX&o\²ôCpôÀÄ©x¦)¯ˆÅ`„¦[šû›b’IˆíüDhÚtj**tEUq@ˆ¢¤4½¨à,Û“gÄ© �ÖB.6Cº¢ª91ãàÖíÓyy1ô rbÞ6öC[QˆÓ’žÃÊ2ù®ÅÅæôœƒ†;¦óò!mŠã¼ïÞG;r,�žä`e‚™‡“4ÙjØ'qð¥Õîžj ŠŒÌ„îERî6w ×Å)ŽŠS”•c §�-d{á2a ÊòäiV6¤eI)ÿ$N´�Ÿ�àLjjj’UÿcïNàbZû8€‹D;ÚKIe�öMû¦U‹-÷r-qq I]û.;7k(Je‰$I»ö]{Ó^*…RÉ’í}fǼ3•bš:ùÿ>ÏÇçÌ™3çœé½ô}ÿÏóœ±&6ðþ÷·(Äi{úLXPÐP[&�÷'â´µµqrrFGGc/—PÒ•q€8ÒÖö>8Ю­ž¥�œ¡íƒÒÑ´½‹ŽÁºÅÀ§#â\ݾ·ï<Ýøþ©sÃyx~«5ªêÓ³\6­XÕ» 8¼«ª1løõs€8ý‰8$yøySSöòÔ©S]ù ˆ�üR^56\:wÔÊHÑÂ@ÂXèË¡#ÑñÇþ�Þψã{àèÍÃ'šcS3ý&ÉŒY1ûÏߊ8¨]ò8p`Äõ½EœÏÏ^Ù¹[LD¤ �ˆÓ�ˆ“žN®Ž—�½¼¼dee»òA ò5kÿù³×—…û}šÑ”1YW®ö'⼈L˜cj>œ‡g¤�ðš?ç¿IÌü݈ÓëËp2DXP0ØÇžnÜψU äWƒ~ïöö-2}¡ŠÓ——áâÀJã@œ_L[[GOŒÅ�Ö•ÄéâüJzw,ˆÄéÇÄùBaM»3ªLMM]]]é·±tñ†_<+GßZ'­ó ‡âüzzbFˆÄéuâ :PO9tqqaÒ¿)ßÒÜÜlggÇÎÎ.""Bý\œŽˆÓë7ü[ˆC€q>§§6"Ž<'<&©�G]^ñ¾ƒ@ Òõq ÃÃ�§÷qâ¨O’»°u7‡QÄQWTºàvˆÄ�(@ˆÃÌ0öÑ¿HœvŸnÜq”'È^Þ±·Ý*ù­�ûz…8ø*›ìC‡N;îšÛ1†'Öÿ¶‰Ž.7'×Ð!C”&M¾‚NËhâ(ËÉ]>z¢Ý*ηթ€8@HŸ‡â03@†Çq�=ÚhÍÌ=ùïŽ�fß{ø‹Ä¹ïá9„�mû§ŠÇ‰/Ò²<çåæÞ¶Æ ˆÄ�@¨Ä!@€8ŒJÀcì›,Ñ–WäæàT;>öì|§?æ£ýœìì$¥=¼¯qäáäZj;ó:¦câXRê",,,’¢b»W¬þLáÎs|£ú$9ꎪÿ{k²<"y!ñs—0âT=Œ&¯`›‚pSk©£ÿu}†-Ûqâ´$=Y3o�„ˆ(/·¥®~yh=qö;m�—è„8_ J?å• 4ÈçÈ Dœ–ŒÜ5 ì%DE‘N,õ Ë#ã0â í¯ßNlän§õŸwþŸ8Ÿ‹+%GŽt˜¿�º£êêÑ“èÌe1 È7ä…įùbÄ©JH%»¬|äKCã¯g)¾{ýÆÏH<ÙÈO”ýwÍZM-n.®±RÒ½}‘oæXÙ|ÿ¡)*QwTͱ¶ýþ–’Ò™n“ÆOÀ‰CŠKFwRžšÄâ@z=@ˆÃØüð‰Œ%ÎpnžÈÓ›ÅXéÈÃù}NIÑÔË×["ì§Ù"-µ™ù2ô1éf�0¿ÿ¾Ã?¬â|LÎJ÷¾)#.á½çP»Uê±84UœŽˆ££¤2ÓØ´.*¡ø~˜Šì$œ8Ó�L̵õJC"›3œ-Qœ0ñS©»ÄÁª8¬ƒ‘F"âLŸjj®«_þ¸)-ÇyñRʼn²Ÿ Jñ*ÎÇ‚Òô»Á2£$½�ž¤!NîÃtc‰·©‰ó±¨‚mð`l�ªŽˆƒUq>–V¥‡ÊHJzŸü'Ž„˜XR`p+©lÏÆM‚üüŸ)š*õXê*NKQ97wlà}Œ8Îÿ¬434‚*ÒÄ!@€8ŒÍ/g¡Ù´íÅuá’Žª8x/ÕÉÑç\¶bÄ9ê¸먊t÷`aay™„uTÍ3³Ü„NÕµŽªë7Ï11gqŠƒ¡�ºÈx¬£*ì‚'Fœª°´Q‡uT}Ê*äáâÊ ¸ßݱ8(H!Ag=�oª¢Èç|œ„õR}Ê/%Ÿ3(„¦£êÄÖs,­hˆås}¶*.™f¸±„¨Ø¾ ›~H¬�ر{Ž• Nœ#[w`U 9…èø§)]'ΗšçöKþš9ùæ]E5ßð·<®q€8�¾ Äal˜\ʰiNKM�­‹—uk¥qzâøï?¢8núæ-yE†'ʃrßÆâ”…Dbĉñô¡÷\àéóÝ‹SŸ:ÓÄ\u²ÜÇÜâ˜kþíœóìE„ÿîŠe9Ù9¾~;e•®Wq.:Ú qüÿ;§(;‰“ãÛ™UTqâ\=~#ÎÛâ ôVÑã„n'7:vè�!/ò ¯žvh«ªâq }!@ˆÃØ0™8[þÝnççˆóìa4ºh€Û‰æ˜äÏ)9ÇÖ¹�GÞPˆ£*;©#â¨ÊN¦&ŽŒ¸Dà‰3qÒ®ßn·Š~Ñ #NEhÔÀ�_—WÛ¶“<¦Sâ¨Ê+tDUEšáÆzS4oß©¥ªæ²j 7â@úH€8‡±a2qFððFýçÑç¶Ê‰›ãûXœŸ#NYàC–ˆ3—ÞÅgÄ_ò–Á‰c­gà4oát0q¬õ �þZø!5#ά©¦Ó §6>N.a¬®‰�ÅÑRPšmbV�X®6I‹ck8ušžAaPhkjV²ï-[£©ïÒó~b¸ñ—‚²}ë6Hˆˆ¾Gç46™f`Tø0²53?ùæ]ôò]©,2Žüí¼|ßåÅûHˆŠÒ±æÞ…Ëlƒo_ãT›ô2=ÛëÈ ^nîC›\±U³Ì-§›š7>É/�M2ÖÖÁˆS›D>³ï�wEåñ÷$DÅ~HkS§¥Ë?”WÓÇÚÄÌiÙ?*kpâø�»(ÈÏ�.QŸÄâ@úH€8‡±a2q6Í_¬%§ÀÅΡ0f\Ì™KøŒª.‡¦7'Û7ÀÍq½Ð>ô;^c²üÚ¹ pâÄ^º6^RŠuÐ šU¨Å^öþúeFUIÐ#%Ž¡C'ÉŒqß²'ÎÓG1æÚºô3ªš3×/ú[j¤8ºOu9ù;'ÏüÜŒ*òDªô\þáÃÏîÜÛœž³~É2)q Nvuy…;î°Un.®Büüäo§ ¸vÑ’v‰ƒZôõ›ÆZ:\œØ$)¿Sgðçâ”DÇ먪s°³O;Þ}Ï~¼£ÊmËV!~ò™•×.YúCâÄŽ—ÃÊÊJ3£ µØ»A_ßRRˆÓVY#,(h¨­“Æ�8�¾ ÄalEœ®<Ýçêö½D\À�(kTÕ§f"¸lúÇ¡wpxWQ=bØðëgÎq€8�¾ ÄaTº²‡XÄùRZäá9pàÀoÿÞ"Îçšú#;v‰ ‹´UÖq€8�¾ Äaf€8„#N¯/Ã9tÈaAÁ`o_xº1Ò§Ä!@€8ÌL¿Y†ˆ+�q ¿y€8‡™âq€8@Hÿ‡â03@ ˆéâ @f†9Ä¡ž4Äâq€8�ž‡â03@œ>Bòƒpöd8qF‰�0`€ü„‰Œ%Ž‘y).N ÒwÄ!@€8Ì cýÇâàÊ6d´¨Ø<³i)^~?$eɪ} !Ž©–Î×2d´ØÈyÓ¬Sü~HeÙI—÷ê„8o³ éWªB4hPÏUqqxzãUœ�eO×/_Á?b;»­©ù³ŒìΉã°hñ÷›üÿ*NBÐ Ò§Ä!@€8ÌLß$y‡”œ÷ñ7ƒÖÿµˆuРÛn'˜IÇ¿~É.zŸ‘Wº~Ñßä8áþ‹Ä¡®âÌ45_2{:ªhˆ³{½‹¸¨hfHXMj¦¹�¡þÍ®Tqîy^âq }?@ˆÃÌ0–8uAáN56\pøˆæV/C¢qâl^°D[^‘›ƒSqìøØóžqN¬s‘å:T[^)ÍËŸ†8x[l=]LPè3¥»ÊR[[Ä@RTl÷Š5ŸÉÜÉ›cbŽEÈë9dä·Ä¥­ùs¾„°/·¥Ž~ùƒzâìwt&/ÂÐ1qðŽªÅÓg“omç[ê|½±‘»×¬ûŒ¸“W2ÇÜòû È) ⴤ笙¿HBD”—›ÛRß°<2¶sâPwTÉO˜èdÿ·¶Š*';Ç™Ä[�‡7oæáâZúÇÜOÈ=ß´ä®Y´XBTŒ| C£òؤGLXøäÎ=XGU^äct·Qq@ ¤ˆC€q˜ÆGOQÙbŠvuà£Ê€%U´�g87OäMáñy8¹êC¢ ýï feEÜyû8%ÁÃ{ý¼E'ÜÝý2ο„Wq>¦d¥ûÜ’—ðÞ{¨Ý*ÎtCcs-ÝÒ °¦ØTçöŠã'~JÏûiâ„{\%ß@ÐC¼Šó1‹”~람Ä(ïCÇÚ­âLŸjj®«_Ó”šíl¿Tq¢ì'´¿ËÄ‘92õÎý–¬|ûYvÜœdÙ¼LË&…Ç øŸ>‹gº©™¹¾AiL|Sv�óÒ劲“>•VuBœOòзH¸„�Åá`g÷s?Äâ@úG€8‡™ù!qšMkw‰ëÂ%4Ä)¹qí/»ŒuQe_»‰^ÖÜ Ã«8xGÕI©s›¶•Þ~ÀÉΞås«£Ž*¼‘nßG§Šõ¸FÓQubÖ9&æôÄ© ‰DÇW‡FcU7UY7»ÛQ…‡t?Œ|×üh:ªNlÙ6ÇÜ’ž8U‘ñäˆIÄz©>å•ðpqeÝ é:qŽºnÃ:ª"}üYXX^gbUól¦c TUŧ�/‘˜†uT}*©âáâÎ ï„8¥qIè#y18qD…„/:Äâ@úG€8‡™a`'êôEVô‹ðÛ(œ·Qä_¨IÈ%â\ؼ'Ž¥–îÖÅË¿$f>eª¡©<~¢ý4ÛÌk7;¯âÜ"WqüU7Ù“––¼=qb<®Ñ›,ðÄ™Ÿ&VÅ) E¸ñ?zJqÂDNvޝ7 ¤LOœ˜k~íÜÀ™‹]'ÎÕ#Ç1â$ܼK–Ä·±8Kìþp´_‚ˆãw«�K\¼U ä· ‡â03 $VÅ©i·Š³eáß4U|¸ñ§„Ì«;öóprµÆ¤t4g$e,γИA>Ùü8ùsjî1çMä‘7â¨"a|#NŃˆ�¾ˆJøÅáÆÔcqF Î)z“ˆ~Ùœ<Óœœõ9·øØ¦É#o(ÄQ�,‡§""–|‰é]nÜ]âTÄ&‘/‘žÝ­áÆ0ˆéÇâ @f†±cqt”¦ié"Ö`cqÌ©ÆâŒàá�r÷hŽˆw[½Ž›ƒ³>$:ôä¹Í ÿ.ºôîqê•m{³²¶D%Q§-!³àfІùöøŒª²ÀP–ˆ³—ß%dÄ_ö‘Á‰c­gà4oáD"ÊX[£iºú…wBZ2“½oØ¿KÎêîXœ¶Ìü‚ Ð ößgT•…F‘oàòµwùñ>7%DDqâX;-\ü‘ˆ¢[c“iú†…!­™yÉ7ï²I $j¶&fÓ � #bZóŠ“ïÞG/ߑʺ8£ª6퉹�¡žÆÌ7Kþ˜k¤­ƒùfÉŸ”m B´q 3ÃXâÔ†ýalÆ?l˜À°á™Z>ŽÂ‰³iÁb-9.v…±ãbÎ^ù’˜õþqÚÁUN2#%؇ A:Aó\œ!ll’"´ÏÅqs\/4‚�mð`�Éòkç.À‰{éÚxI)dlFUslêú‹¥FŠs²³«O–¿sü¿nͨú~bb4ÏÅq[¿Iˆ�Ÿ|òŠkØãĉõ¾1^Jš|”UÍiÙë/•—àdçP—W¸ã~ž±UÔš³ Ö/ýGJB ® xçü¥®<ÇyÙ?|dzjcb†?§#â\p;JÓö<§ˆÄ�ôÍq 3kTõ‘§3ç¹8 \ÀˆÄ�ôµq 3Äé÷Ä 8q ¿G€8‡™âôoâÀ2œ@Èï Äaf€8@ Ò?Ä!@€8Ì ˆÄâ@úG€8‡™âq€8@Hÿ‡â03@fG]^áž?GœÚÄtòœí´']$yæùñS¿NuE¥ ‡�q€8�¾ Äaf€8½EòöÞƒ@ ¨q 3ÃØGÿý:q’.ûXëðñc2d²Ì˜«œÞĦu—8¦šÚŽst‘8Ê']Þ}ª8@ „èâ @f¦OçÁ‰3CØØœç-,¼Ôú85Û7`ó¢¥~û�q€8@ä‡â @f†±Ä‘—»yÁmyEnNűãcÏ^Áppúc>ÚÏÉÎ>AR*ÑÃûðg1AN®¥¶3?¡c’²?'fIŠˆ®˜9§ÝŽªºÐÇšZ !8bÄK›—‘ñnNlØ")*Æ1t¨¶‚RšÏ­Nˆc©£�ˆÀ‚Žßíàøí|R8ÇÔ_š@}²|GıÔ5øúY±‘»W;}F;)Ä‘7aó²ÚJ*ÜœœŠdc½o`¾‘OÙ¯LÙ?Q6ÖçFçU-OòÖ,°—ååæ¶40,�NÀ|SŸji`ÄÍÉ5AFæôŽ=ígÿÆÍÒ£FµKœÍ«µUÕÐÇe'ÅÞ ÄdS—‘ý§Ít>>A~þ³ì^f`Ä©ËÌùÓ–jn!=qZŠÊÖ,Y*!6’—‡ÇÒxjyJ:F´ýõç#.±{Ó–Ïß #/;éßuÎÚ:Ü\\c¥¥úßâq = ÄafNœáÜ<‘§/6=Š;°Ò‘‡“³þA$FÄ—ÔË×["ì§Ù"-µ™ù2ô1éf�0¿ÿ¾Ãˆ8¹¾wЯɄKÞíGOIÕBK·úAdåýp5´�|Sx;x0+kì¥ko3<¯¯_°ø‡Uœ�éyé~2£¼÷înçcVaúÍ@ògʼn3œ‡7òŠOSò“Îy¸¸êãR1â�÷{]oJÍ>àìBÞŸ�Ö q¦›˜šëé—FÆ6eä9/Y†Tô‰TŽˆ££ª6ÓÌ¢.9£82Ve²\w‰3œ—7ÒïfSná�M®<\Üõ9ˆ8zS, �ªS2*“Ò 4µÐ6FÊ~ãê´'•É”ýÆôÄ™nnanhTš”ÖD*uþg¥â¤ÉŸªëñúÍÇêºôG‘2£G{Ÿ9‡GbäȤ�°ÖŠê=›]ù>׿âq = Äax>ûw“>?$ÎB³iÚ‹ëÂ%Uqð^ª ’£Ï¹lňsÔq=ÖQéî�þïþëÈ$¬£jž™å&tª¤ì¨3—Ñi+ï=¢'NÉ�ôVY`(ÖK•íGÆPÍÃèÒÀPNvö,¿;Ýí¨:áâ:ÇÔâç:ªNlÞ:ÇÜ’ºŠƒwTM�–9·s/^ÅÁ{©Èûwíëˆ8U1‰èëTÇ%cU7ˆDY÷C‹#£ýÈ7XGUØÕëÝí¨Úì°祥 3æÜ·’XòµÊâ“±Žªì°(òO2íII\yB*ÖQ•MÞŸ‘EMœª´Lò}fdc]TŸªëx¸¹³"bh:ªNìÙ?Çf:Nœ#;wc]T ¤Rôñ§Y¹@ ¤‡Ä!@€8 LyiÑþÎfz“Пh›þ†Wq.lÚ†ÇRSgëâeq®n߇'áâUä|,ÎëŽsæu^ʼn:w…uÐ | ÎÛxò¨”$/¿/iy�Çþ3�¢­çmqù'yïAÔ�òþocqÞ–V’÷ß¡&NL@`;÷éé�XãÁCqòdNޝ?5uœ8WÝÏ`Äy[U‹Þ*JNâq = Äùõ|þü959vͲ9æz“Œ5Ç¢)úm£=h?uQ‡áÄÙ²ðïv«8?$6ÇaöŸUq*‚Âhª8øpãO©9W÷äáäj�Ïh—8ÏÂã pìts\úçÌ‚c¶�GÞPˆ£:irçÄy�@þì‰3ÍÉO>çsqU—“lj³eÙÊv«8[–¯ìb§"*aàÀ�/R2i†ÓTq¯ùv—8[V­i·ŠS‘�Ún§")½“*NEJ:ù>s i†?ËÎ4hPÀe¯æâòϵÏ�íÞ«®¤ Äâ@˜ Äù•´µ½ôŸk«gi g¨!�~˜Ô íAûÑ»ètä— ÎÞ¨ÿ<šÃâÜV9qs|‹óCâ`3ª†² qY°˜të~ëãÔ¿;[ì¿Î¨ÒUR™¦£W…�Å1×ÒA² u¿¸Ù~YÑ��w‰™WvîÌÊÚ›Ö.qÊ‚ÃYXX".x¾KÎŽ÷ò•ʼnc­oä4ßþ:¸â”=Œ"öÒµwyñÞ7ÈŸ¥"ÎÞaQž>Í)Yn6ssrâcqÈû¯ú6§å¸mÜBÞßéXÛ©¦Ó Œ C#[³ “oßC/ßå#åh)«Ì¶˜VŸ’Y§&¯Ðݱ8#† ‹ò»ÕœGrsÝÊÍÉ…�ÅÑUטf4µ&5‹cn`ˆ�Å!ï7žZ“ž…�Å174¢‹ckf>mªIa\bkieòƒP[3‹w5e)éäŸÏ­;ï*kâƒHˆ�âq ½ Äù¹¼jl¸t‘¢…��lè›…¾:ìßéŒ%Φù‹µä¸Ø9ÆŒ‹9s ŸQÕâ`ÏűÒÑGNž‹spõ:ì¹8µ£ÿ0±à6\`øˆ¿,¬ž‡Ç"â¼O|rp�³Œ¸û�¡òcÇ9�wTÑô§dß¼çæ´Qˆ��mð` 9…µ-ĉëé;~´ë A�̨r[¿Iˆ�ŸüYy…µ 쩉³ié?ZJÊ\ ã'Æ\óÃgTmZ†ö«�÷O@ûý;ŸQÕœ™·þïeRâœìêòŠwÎ^Ä 9Oã’Íõ ~zFÕ¦•«´TT¹89&ÊÆÜ¸ƒõOÕ¦=ùÃÚ–Ä>¾¿fÌzþ$#NmFÖ6ßöÏœõ<;Ÿž8ͤÒõ+¤F�âäà@޹sÙ ›Qå¶m§�€Û`6 e•µËþâq ½ Â4â¬ýçÏR ß7£)c²®\eÔÓ�q®nßûû<ÝçêÁ#ôÏÅAĹzè(¬QÏÅâ@˜ Â4âô³rQOWq€8@ Ò—Ä!@€8¿’ž‹Óï‰SI?ch¡Í ˆ!D€8ç×Ó3ª`Î__ÀˆÄâ@z.@ˆÃÀ0ð¹8@ ˆéËâ @†çWžn Äâq€8BˆC€q˜ ˆÄ�ô�q 3ƒþ%M¿z ý ´>Ò½Ý�8�îˆC€qlZÐòåË;:ƪ8PÅ�*Tq ý"@ˆÃØ888q€8@ ¤ßˆC€q ˆÄ�üâ @ƈÄâq ¿C€8‡±âq€8@Èï Äal€8@ ò;ˆC€q ˆÄ�üâ @ƈÄâq ¿C€8‡Qquu¥^4ÛÅÅ…þ ˆÄ�ô�q 3Äâq€8�þ Äaf€8@ Ò?Ä!@€8Ì ˆÄâ@úG€8‡™âq€8@Hÿ‡â03@ ˆéâ @fˆÄâq ý#@ˆÃÌq€8@ ¤ˆC€q˜ ˆÄ�ô�q 3Äâq€8�þ Äaf€8@ Ò?Ä!@€8Ì ˆÄâ@úG€8‡™âq€8@Hÿ‡â03@ ˆéâ @fˆÄâq ý#@ˆÃÌq€8@ ¤ˆC€q˜ ˆÄ�ô�q 3ƒþ%… Zl@HwÄ!@€8½’ÏÊÑ?©Ð Aë;­·ÿU€,@ˆ�@ HwÄ!@€8�t7@ˆ�@ HwÄ!@€8�t7@ˆ�@ HwÄ!@€8�t7@ˆ�@ HwÄ!@€8�t7@ˆ�@ HwÄ!@€8�t7@ˆÃüôúr<Рõ�ÖÛ•!¿u€8‡ùAÿ4·½Ê¢´lÚÖ”C×rÛky4íCs>]+ k…í´]+¢kÅ´íuI{­”®•Ñ´�­åt­¢½VIÛÞTѵ§t­º�ö¶†®ÕÒµg4íÓ»ºöZ=]{NÛÞ¿h¯½¤k ´­­‘®½j¯5Ñ´ÏšéZ ]{ÝNûØJ×Þе·´íÓ»öÚ{ºÖFÓ¾|þ@×>¶×>Ѷ/ŸéÚ׿G½ûò›ˆC€q˜ ˆÄ�=@ˆÃüq€8@†§®º¸wÿ.C~çq óÄâqBœ¼ô°Þý» ù�Ä!@€8ÌÏïLœAƒ 0 œ”ÐsÄùz‰¢Ôv‰óõÝâtB»Ûв¼nûTeYé¹q óÓ—‰#&*4àÿ“È∉ ãà³±2ÍËŒêƒÄ‰ ´0Ÿ:bÄðÁƒ é¿iªâq ¿[€8‡ùéûĹrá0ó«8q<=Ž¿k*Ù¹m=Ú––ÕÚPü+UJŠrè¯ÖÓÕ!Çý{�o"ÂC(ûÿjmy™‘žô×¼?‹Iy@„>@ˆÃüô}âà2„�š8q‘·Ð6úm âøû¸£my¹‰XGÕª‹ÐK‡Þ¼~mŒ‘ÝnGUJ\ÐÇÖòÍÐöÒÅs;墨ásŽr Y¬jõÊÅèåªö7.¡�‰ÆzzœÌH~Ôöº’~,N'Ĺáëñõ´”ŽªÕ“O»r Nœ”„Gˆ5›]É7¹d>Ú¾pöÚ:týp㛾—Ñ[ ò“°ÊÍj‡e”³-ʼn“Ž÷RQí!wQÝò÷B/5§¨aýSsìf —çϞ褣jèСhscmçĹéïM¹+9¬r³fÕ ôrµÃ?8qRSâ>lݲyÚ^¶t1"Î�2e'NðòôÈÌHþØÖ UH»â @æ§ï§£*NQNÚFbzûŠä¶ Ú˜j¤ƒg÷v2M¬,�ømhu2gÛ–µh{ñÂ9ôÃ�øù¬§™`Ã�Ýöo%_ÂX#Îî)—˜úº¡dª±þÉQâ…9ݨâ¸ÜA9­FœÝ;7“O;Í'NEIbͶÉßhñ¢¹�WqÜE9›Fœ=»\)g3ÉSQšMCœŠÒŒ8GÜö Ë†õŽÔÄi{ûr½óÉQC† Á�)ÈKïœ8‡Ýö¡ “©FqöìÞŽ^Z[YâÄ©,'!âlßFþqÉâ…ˆ8o^7˜L5þþS•UT˜ Ä�@èÄ!@€8Ìq‰Ã¨*N'ÄÁ:ª¨§‹wTÅÁ†W•¦ß 𚢡‚vºnr¤!޲’üOWq艃dÃÃÃ�^^¥‹óÃ*N'ÄÁª8º:š� 7öºBþ!(*ÈÕ×–µ½m@ˆÃü—8Ôcqœ×.E¬iªÏ=Zœz,ÎàÁ¬™É!4cq|¼N‡Ü»ösÄi~^ˆ ÷ÁÇâ K‡|¶ôÇ]!ÎëW5ØXœ›þ^Í�Õ)IQK/ˆ‰ ¡&ÎÅó§Ñ†ºšJ]MéJm'Ž™)¹èrâ¸=q^7ÕI�–¤‹ƒî*+3¹ℇ=ذÞ)/'ãÍ놿—�ÁzüØa B Äa~ú>q¨sóº;ÍŒ*n®E f7?ÏÅfTçFÏšn!,$€ökMQ ¹ŽÏ¨š?w†øH‘áÃx—ÿýõŒªnµâ¼øY3¦‘/ÁÃ¥¥©ñðÆÇ7Uo›ÊOß+7yâСCDE„þ±󪜆8anÈHKb{îßõ¦™QU\�vkËš*RçÄqX± û©¢ÿlhª8ñ±@„�â @戃g�Ãb´Ñð,×ៅ<Ü\5åé@âìÚá*>R,=5öiE�™ÙT==í®TqïÜâ@ = Äa~zŽ8Õ%±̲à!(À7ÿOÛºŠ$ 7r“ÇoÙ¸B_W�›‹sŒŒdðÌ7å1f&ºhçøqÒÇݶ’]RžDÝQe7ÓrÀ· �7b¢B!�ž˜iÊ ãÐþçÕh»²8ÁÂÌ€r*™“GwâÄi¬Ë]µb‘„¸(/·…™aI~ qhšŸ°°°Üö»€@DÛ’£FîܶþÃë¯Ö‘›§¥žü 2>Ò#Ε ‡0â´Ôg¡ýÈ7áÁW¹89ð!8Ź‘?MœðNtªocqŠsc0âD†úÓCíÎ�‹ÔÃ�ÑG_G²ñ½ê® /‹ö`oiNQÁ‰såâq7¾×Î(ÈO¢:LµsâøzŸ£=þqž–?ac¬£­Ñݱ8ˆ8ž—þÈ~�þkÞ½í�pãç㡨0¿´–¦:Tq€8�þ Äa~zˆ8X§$/¢Ý*=qºXÅQQ–£&Ž´Ô¨ÿóq’cÛ­â„Þ÷ƈS’7pàÀg•é� 7Æ+7ÕeièËÞò=ßX—÷áuÅ‘ƒÛSpâxzœÀ|S]žA>Ìïbc]Á‡Öª#‡v�ë˜8ÕOÈÇû_j¬'}xS}Äm§šªæ›¶Öê©ÆzÓm,D„….œ=Ö]âx]vLjSV”�¾f}M!Íp㚪|téÛ7¼^½¨øøîÅÑÃ{‘l`,Ò?Ä!@€8ÌOÏ�ÅÑÑR±4Ó¯$Å`cq̦êâcq艃¶5Ô8ÇÊÂÈq•ýÛÆBŒ83mÍl­LkŠóbŒ ´ð±8šʳ¦[Ô”§’²£TUäñ±86V&–æ†y™Mõy ÑwÑËÖR»Ä)΋caa {àÛÚP !.Ö.qŠó(‡ùµ6–ÆFÞýzXÇÄ).H"r£õUylÔ=Êñ_‰³}ë† ãÇ4½( x›››ëIjT·ÆâàÄAÍÆÚÂÒÂ$?;±¥±*1îzù¦¹¦„”Ž.zmÇF‡Hˆ�ì.qðUÕ•…äUºZkÛ/04Ôö—Ø/02Ôâ@ L‡â0?=Gœª¢ÇsfYðó à1oŽumYBçÄ)Í‹2�JžQ5n¬ÔÁ=.hÿËštâD?ò7Vš•u6£Š”©­©ÊÁÁ.;qìéã»p┓âÍLôégT5<ËYç¸tôh J‡”eLqûUÔîsägc¬®¦ä¸jI»ÄAíྩû»sâ||[spÿV!AÊñÊŽ«–bÄ ¹‰X“•…ͨڹÝÝyÓ‹ÒŸ#ΫçeÎNR£G¡¯‰®pó*VÈ9t`'åÒlê*Ž«ÿé.qÚÞ¾\ç´Š�o;ûPk+ ü¹8çü¹S4ýeõµå@¤'Ä!@€8ÌOß\£*ðæ…áÃxa�ªÞ]£Š†8 \Àˆ�06@ˆÃüôâx_>æwíTCmFZ| ìıËÿž Äéuâ €€8"ˆC€q˜Ÿ¾CœgåIv3-†ã)&¼jÅ‚æú, ¬4Ä�@º Äa~úqzh¥q ˆé÷â @æˆÄâq D‡â0?@ ˆ!z€8‡ùa,qzz¥qzâT'Pæ„§2™8”yà‡0ß|›ÞG‰C™~ ˆÄ�ôãq óÓëÄ!?öæÔ ó‰ó}ÂC‰ómÂaZ€8‡ùé¹GÿuD%Y�3ûÛ­âP– :ÀpâàKPqqrh¨+…‡øq0âßóÇ«8mož;;­âççãà`·±¶¬©*ìœ8+W,Å~ªè¿ š*N|l8af€8‡ùùMˆ³z¥=2ÍËÚì•ËðpsU—¥qhˆ³kÇòú )1O+òÍÌŒõô´»RÅ ðâ|â@z;@ˆÃüôq,Lõ>XXXFIˆíü×±­‰ »™øãüÉ‹0PuTѾÕBúº�8E6e�Éë3¾­?ê¶G]UÆâq ¿I€8‡&4Äé‰ôqŠsÂXXX]yýüÉã°ë#EpâXY::,zÛ�GO+ #ÇUöoó1âÌ´5³µ2A¬)Î�22ÐÄÇâhj(Ïšn^S–LÊŽTU–ÇÇâØXMµ47ÌË kªÏIˆ¾cceòúeA»Ä)Î}Œn/ìÁõÖRlÄm qÑv‰SœG9Ì·µ¡86"@B\¬sâç'PŽ÷om,�� üz<…8Ûÿ]?aü˜¦Åáorss=I�èÖXœ8¨ÙX›[ZLÍÏNhi¨HŒ}ˆ^¾izZR˜†.þ0àMSult°„øÈîŸQU]Y@žQ¥«…áf±ý|CC=Ì4ÔÛ@ ¤ïˆC€ô qöïßïêêÚÉÁÕÕÕvvvüüüÒÒÒ÷îÝÃvsss�?ÞÏÏÛ)$$tèÐ!YYY>>>ú—Ïž=›={öˆ#$$$Ž=Š}'޲²2úU=dÈ55µ´´4´gæÌ™xOÄ©S§¨îèênnn'NDûçÌ™óîÝ;lÿöíÛÑ[èºË—/óæ ͷ빎ªƒ{6 ò±± VW•_³r!NœèPŸqc¥XYÑ̨B-ú‘ï÷·ZH¤ìpmMvÙ‰cOÛ‰§¼0ÎÌD�~FUó¬uŽKG�Ç:¤nùžë¨ŠƒÚÁ½[„ùÉ·§¦è¸jq»ÄAíà>×o‡)9®ZÒ9qP;¸ï_!A�oÇ/ňöàbMVÚWÖìܾqü8Ä�Ÿ#Ϋç%ÎN+¥F�B_S]U)à†VÈ9´åÒlj*Ž«—w—8mož¯[ëÀÇ7‚�}¨µ•þ\œŽˆsþìIšþ²ºšR Ò+â }�8Ÿ>}RQQY¼x1JIIÉÚµkÑÎ�?N˜0aÆ ¯^½zðà''gzzú 2¦L™R^^Ž}–úåçÏŸÑöªU«òóóÇŒô…®Šƒâîî.##ƒ.ñ¥ƒŽªN®n``PYY‰L† sñâE´355UDD„D"¡ƒÏŸ?ÿðáCš/kTý¶kTч� 8q &ˆC€ôAâ =ðððà,ÉÉÉÆ kkkÃ^ÚÛÛ;;;¡ ™?Œúeff&ú”ÿþûoáÂ…_:è¨=ztAAÁ—ˆÓÉÕ###±�[¶lÁ4öäÉIIÉÚÚÚŽ¾ çw&ÎXÀˆéâ Ì$Ž‘‘ýÌuuuš#ïÞ½+++K³óÎ�;“&MÂ_îÞ½û�?þøBAFVV¾Ÿú%:ÏÊ£îÈ‚¶ ¿PÇÝÝ}̘1lllØ�`Xi—8�\=;;ß¹|ùrlÛÓÓSWWWSSílmm¥ù.@œß–8° 'ÒoÄ!@úAGÍKtQQÑÏŸ?ÓœSKAA:aRRÒÛ·oÑNIIÉG�¡ qqñnUqÚ%––––™3gnÚ´‰æ€8@ Bôq�>H„|,Nii)>güøñ7n|õêUHH6@¸â|úôICCÃÉÉ©®®îùóç§OŸþòM-èã|||………"nnn Àˆ£¬¬|éÒ%FøXœ^'ÎÝ»w8P]]ÝØØ8cÆŒ5kÖÐ|A ˆÄ�=@¤åéÓ§#FŒÀÇ£ Žrqq�7ÎÇÇÛÙ q¾PfTÍ›7O�’%K– è|¡ê¨rvvæååùçŸdee1âܺuKLLŒ………fFÕ¯ŽçÍ›7[¶lE'Ÿ>}:vQêq€8@ „èâ ¿ásqz=@œ.çiiÚ€žUf2™8jªJçÏÅX£NµÝ‰£®¦rþÜ) Âüq óóûGMUáÜé@ægÔ( ÊÔ­ÉŒ%Ž‘¡eê'â @懱�þûEâ˜ë¬^¹� U%ÅÉgÝNc=lB§†ºrÄÛ@Œ8ÁA·ñ*·wMë×9òóóqppØÚXÕ>-íœ8+—c?UôŸ�râãb€8È !Äa~€8Œ%·%h£áY¾Ã?ö<<Ü5O€84ÄÙµs«¸øÈŒ´„êÊbs3}=�®TqïÞâ@ ˆC€q˜ÆGnÒ8—uË´¦(ssq*ÈOˆõƈ#7y¼£Ã"´Ÿ“ƒ}ü8鸿C{]ÄD…x¸¹–,²{ÿ*¿âT—&þ1{šÿA¾ùs§×U¦b²‘›ˆ¶%G‰ïܾñÃ7èÈÉMܼq�®Î..No¯3æÆT‡¹|xSÛ9q,̧âÇïÚ¾éã[´óyUY¶ ¿×ewŒ8ö‹æééjµ½©£!ξ=[¥¥FÓG^nÒf—uè#è–|®y45<]½j¹„øH^^ ÓÒâlL6hûÛ¥%víø÷ãûWÝ"Ž˜˜è‰ã‡±þ©Ül2ós3€8ȯˆC€q˜†gø0ž°ûž/«SöítF‚©)�È3JB,)æVcmú¿f  ÙÔU$çg„ ñ_÷<Ñ qtµÕÌMõ+Hq¥ù14h'Ž„¸h|Ô­¦úœ]ÛÖ!µQ*:šÊsfM«)O%eG©ªÈÓ‡¾ŠÓq´µÔfØš×”gf?VV’ÉckmffbP”ßð,�ã2ùIm¯+;"V¿yßR™šðPFZòê•ÿpâ >Ž |ÿú)^ÂAÛ©‰�d¤G_½âÞ•*N[kmjb8:þÚ•3kBƒÉË|ædÆ]ñ8-$(P]™G_Åé„8ä[Š i{ûâS[£­Í433ãbRfã‹ÊuN«ä>¼kÀK8mo_¦&?–‘–ºæu±ëÄyþ¬ýãc#ðQ8¾>^@äWÄ!@€8Ìω3® ýc Q6¯_ÞQïŸ?Nú̉�qïß„uQ…Ý÷B¿û_=ËÄX3×Îj#ù#퇔�®Uœ…õRe&ÝG/+‹â1â¸íÛ‚uTÕ?MGûËIñYßVå$wN…Þ÷þiâfÇ �šòt¬£*ôþuŒ8å¤$ò=”¤b]Tm¯+xx¸2SÂh:ªV¯\‚¨Q]žIÝQuìðn»YÖ8qvípi·£êØá=v³lºÞQuüÈ^»Ù¶xÿÔ¶7Œ‘‘BW{ЭŽ*DœÝ;]±ŽªŠ²\ô5«*ò±Ž*„îÌôxšŽªãGÚÍžÑuâ”å Óæf§áÄ9î4ù•q NÅÇëì‘ý®å¥Eôo1¼Šƒ¯4Žš…©ž«Ë Œ8W.ˆîÇÉÁŽ�¿±_0kõŠ'ü�7+ë | NËsò/Èø¨[q®\8‚§åEÚ�|âÃÅÉ��Å)Î�ùiâD„øqrràcqŠóâ1âD…Þ¤ß�›—©‡S–:W|ì�Xã{휂ü$´{KsŠ*Nœ+'qÙøzŸÿÿÃÔ:'ŽŸ÷EE…ÉøñZSÔpâTWä²±±éjOéîXDÏKg0âDEÓÍ»¾H6~ׯ(*È}¿´¦Tq€8�Þ ‡âôP^56x^<9ËrŠËÚũɱÔëH0œ8›œÛ¯âüq°*NI^t»Uzât±Š£¢,GMiÉ;7.bÄI‰»ßnçQ°/FœÒ‚„�Ö=Íêd¸1>i¼º<ýÐnùy4Ö~h}zÄm'" NÏK§0ßTWd‘ó¿ÜX_ôáMí·]”Ã:$NMe:þ¶¿ç«ç¥ßÖuÛ�ÞÂ|óáMÝTcƒé¶ÓD„….ž;Ñ]âx]>‹§¬$}ÍúÚšáÆ5U$ò¥oz¿zùôãûWGïG²�±8@HïˆC€qz4mmïÜ»±d®jh½üÒÄ1œ7<Ø«¡&õàž Ü\œøXœŸ#b�Ž–ª¥™b 6ÇÌD‹CO´­¡®øÃ±8V–ÆŽ«–¼k*ƈ3sº…­µé‹š¬’üx#m|,Žæ•Y3,k+2H9±ª* øX+SKsã¼'ÑÍ/H‰�ƒÐËÖÆÒv‰SœŸÈÂÂöàFkcYld „¸X»Ä).H&r³õUElTзÃ:$NIa*:>üáí7MOc£ƒ%ÄGâÄÙ±ÕeÂø±Í/+"Bïpss=IÜ­±88qP³±¶´´4ÍÏMiyU“�^¾i©+)Ê"_:ôÚŽ�yD¾t7‰ƒÏ¨ª©*1Gÿsêjc3ª–,^hd¨�ù†²mÄ�@º ÄaB>þœšë²vñ,Ë)žOûw:c‰³Ñi©¦†'‡¼ÜøÈ�køŒª.‡¦g$3é~Uq<" ?ßpþóþ°©-Oéœ8¥±¦Su‘®Æ�•>¸w3Úÿ²6‹†8Ña7묬¬ØŒ*RNŒ¶–»ìÄq§�ïÁ‰SQ”df¢O?£ª±.ßyír©ÑX‡Ôm�Žª8¨Ü·UHP€�m°ºš’㪥íµƒû·};LÙqղΉƒÚ¡ý;(dzi ãW/Ljþ0±& ±†Â�];6�7¦¹¡òçˆóêe•óºÕR£%Ñ×D| ¸åƒrØ-$$H¾´ºªãš•Ý%·wMÎNkøøF°³³ÛXOß‹ÓqΟs§ù¯¢þÙS B Â4y¸¬]„® 5cÍ1éq~Œzº1"ΕóûÎÓ�o]>ŒÖ¨êÝ5ªhˆÃÀ€8 ò;W˜–Ÿ®â…8Þž'ý¼ÿkx–�–p_vâØåÏâô:qÀHOˆC€qz4¿8‡(ÄyV™f7Órø0Þ‘b«V,j~žÄ�•Æ�8�þ Äé¡0dFÑ—áâq€8�þ Äé¡0ä¹8@ ˆé›â @æˆÄâq D‡â0?@¬=-M¡Ì Ï`2qÔT•ιÆpóm»�‡<'üìI ÒÄ!@€8ÌO¿!å±7û€8Ì'Î( qÊ„©IŒ%Î÷ S@äGâ @œÎÓÜÜv[›iµOK:'ŽÃŠeØO•òðâÿ«âÄÇEq �®ˆC€q:Ïßÿ­¯¯_[[ÉÅÅÓ•O988qEœ5‹ÑFó|‡ñðpÕTdqhˆ³kç¿”õâª+IæfSõõtºRÅ ¼{ˆ�üt€8§“´µµ¡£±—K(éÊ™I¹Iã\Ö-Óš¢ÌÍÅ© ?!:Ô_ÀÁÑaÚÏÉÁ>~œt\„ß¡½.b¢B<Ü\KÙ½•ß q,Lõ>XXXFIˆíÜêÔÖLVŽÝLKüqþjª ÔUto•Љ ‡Ü»Š±¦¬0í^ýmW•$[˜¢[¥¬Ï° 'Ϋº¼Õ+í%ÄEyy¸Ñ%ù 4ÄA¦i~AB·tÛßÃÂÌ»=ÉQâ;·møÐú•;r“'nÞ¸FWg §·§ûÿ¶}ã‡oÜéˆ8æÆøñ»¶o SUöDP€ßëòqìÎÕÓÕjk­¥!ξÝÿJKIÒG^Nv³‹úº%Ÿ«š^V®vX&!>’——ÇÂܤ´è æ´ýíÒ»v¸~ü*ž®‡²Ê¦ÖK•›�BYe3ˆ�ôh€8§“�H$ôÛ¢©© {yêÔ) �®|�ÉÄ>Œ'ì¾çËê”};�‘`ðe8P’bn5Ö¦/ükR’M]Er~F¨°ÿuÏ?¬â¼{U�{WZj”—ÇÑv«8Ôcqhª8G[Km†­yMyZav´²’N[kS3ý¢Ü؆g¹ëÖ,U�—mk)ïˆ8Xç}KEjBˆŒ´äÕ˧qâ >ޏû¾¥¯â¼]•šJ>ìÊ]©â¼]�šøHFzôµ+g°âMhð nn®œÌØ+§…ª+rè«8�‡|KQÚÞÔzÿÒÖÆÒÌÔ¸¸0½ñyźµŠ rÞ¾À«8mo_¤&GËHK]óºÐuâ<VŽ~Œñ±áøX_O Ò£â @œN’žžŽ~yàOíóòò’••íÊ‘8óçÚ h/›×/見ƒ÷O�'}æÄNŒ8‡÷oº¨Âî{!¼z–‰±f®�ÕFòGºÔQuìÐV»™– !NavÚ@¾Á:ªBï{cÄ)'%¢�Êâd¬—ª­¥ A-39”¦£jõÊňÕåÿ×Quìð.»YÖ8qvmwi·£êØáÝäúÜQuüÈ»Ù6xÕ¶×�‘‘BW ¹Õ­Ž*DœÝ;·`�S¥ÙèkV•çbU7<<Ü™i±4UÇ�°›=£ëÄ))"Ÿ67;'ލ¨Èùs§�8H�ˆC€q: Qª8gOî‰caªçê²¢[+�Óçº×Iù‰è#­45”Bœð_NN|,Nq^,Fœ¨Ðôž»sãõpcl�ñGÁ¾7¾×Î(ÈOB{¾ÞÞUœ8W.žÀqã{íía�Ç×û‚‚üdüx­)j8qª+²ÙØëjOéîXDÏKîq¢Âƒè¿æÝÛ>È7~>—ä¾_ZSª8@H‡ât’¶¶6ôÛ¢ï�ÅÙäÜ~ççˆó´$]ôæu÷†Ú̶fÒ‘®j*òqT”å:"å­ïÄ‘–à#Nrì½v«8�‚}0â”$ 8°®*³“áÆøDªêò t{·ü.6Ö|h­:rh¢NO�“˜oªË3)‡y4Ö“>¼©>â¶i¦â Ä��÷¿ÜX_üáMíQ·ÝêªJ˜oÐË©ÆúÓm-E„….ž;Þ]âx]>ƒ§¬ø úšõ5E4Ã�kª Ñ¥oß¼öêeÕÇ÷ GïC²�±8@H‡âtdšvgT™ššºººÒoca2qF ç öj¨I=¸g7'>ççˆSœÅÂÂòèþÕ×/r‡ûKˆ‹âı²0r\eÿ¶±�ž8V–ÆŽ«¿}U„g¦­¹­µ)bMq^¬‘�>GsŠÊ¬–µ餜Uy|,Ž�•©¥¹Q^fdóó‚Ę@ô²µ¡¸]âç' Û {à×ÚXyWB\¬]âç'R»Ñúª<6êå°ÎˆS\�B>>äVë«Êب tòcýjªŠ:'ŽÃŠeØÓüÈO.þÿ*N|laT€8‡ùâqºNœ];\ÅGŠ¥§Æ>­(03›ª§§Ý•*Nà�@¤GÄ!@€8ÌOϧº$ö�Y–ü#øæÿi[W‘„áFnòø-WèëªssqŽ‘‘ ¾ã�ù¦¼ ÆÌDí?Nú¸ÛV²KÊ“¨;ªìfZâÏøÇ–q ôÄLSVGY™!mW'X˜PN%sòèNœ8�u¹«V,’ååá¶03,É�ë„8èôAÉQ#wn[ÿá5Ù:v³¬¾ßy­†ïUv³¬ÿÿ­j1Qá‡A¾nÊ‹RÑþÏ kªÊ2,Ì�¹¹¹&ŒsòØ>œ8¯ž¯vø[B\Œ——PR˜JOœ}»])‹3ÐG^Nv³ËZ=M..N¯óM/ÊW;,•I9ÕÔÒ¢ Ì7hûÛ—’صcËÇw/ºE1Q‘ÇbÛ9Yd;æå¤q¾q ½ Äa~zŽ8ºÚªæ&º…Ñ¥y‘4æ&z8q$FŠÄGÞhªËܵu-P[¹¨£©¡4g–eMY");\UYŽž8ôUœŽˆ£­©:ÃÆ¬º,¥0;JYi2N[kS3ý¢œ˜—µÙNk–*È˶µ”v^Åyß\šÿ@FZòêå“íVq¨ÇâÐTq:"޶–ú [˚ʬÂÜxe%yœ8¶Öæf¦†EùÉ uEëW(ÈOnk­é:q„…G·µ¢ãŸÛÚXš™¦5>/[·v¥¢Âäoëñ*NÛ›úÔ¤HéÑ×<Ïu�8õµ¥èVã?ÂÇâpp°ûú\â|â@z;@ˆÃüü�8óçÚ h/›×/ï„8¤¬PtLqNÆ�ÌÄ{èe%é1F·}.X妾2í//ˆ)È ýfrÿTh�×O§0;m ß`Uƒ®aÄ)+L@E‰X/Õûæn®Ìä�®tTsÛi7ËŠ!ÄA¬AÈ7XGUh°?Fœòâtò�¨4«Ü Üððpg¦Dv±£ g÷Ž-XÿTE ¹ó«ª,3  ùTi14UÇ�î·›=½ëÄ)&‘O›“•„GTD„²0'ˆéåq óÓCUœð`/VÖAøXœ–zòoÇøHŒ8”UÇÉÄi©ÏBû‘oƒ¯rqràCpŠs#š8á!>œèT߯âçÆ`ĉ õ§‡Ú�;"ŽïUwyYt*ìHÍ)* !NDè-tN|,NqA2Fœ¨°;íÜÞM¯®ÇóÒq¢ÂïÑŸêîmoä?E9üKiiªCˆéâ @槇ˆƒUqJò"Ú­âЧ‹Ue9jâHK� ð?�'96°Ý*Nè}oŒ8%ùq|V™Þ•áÆÕeièËÞò=ßX—÷áuÅ‘ƒÛÉÃk(ÄQQ–ïˆ8ßÞúJiÉ;7¯`ÄI‰i·ŠóèÁ Œ8¥¤Tt{uÕy?7ÜÇë²;Fœ²¢ tªúšBš�Æ5UùèKݾqõÕ‹Š�ï^=¼ÉÆâq ý @ˆÃüôÜX-K3ýJR 6Çlª.>‡ž8h[CMñ‡cq¬,ŒWÙ¿m,Ĉ3ÓÖÌÖʱ¦8/ÆÈ@ ‹£©¡GsŠê¬VµUÙ¤¼UE|,Ž�•™¥ÅÔ¼¬¸æ—e‰±!6Væ­¯*»>'j6Ö–&ù9I-�U‰q�ÐË7Í5%¤tô¥ÂCï¢íØè ñ‘Ý%>£ªº²�<£J÷댪Åö õ0â,±_`d¨Ä�@˜ Äa~zŽ8UE�ç̲àç.À?bÞëÚ²„ΉSše:•<£jÜX©ƒ{\Ðþ—5é4ĉ~ä;n¬4+ë lF);R[S•ƒƒ]vâØÓÇwáÄ)'Å›™èÓϨjx–³ÎqéèÑœœjª ·ý.àUšn�')¡÷¹ ò³± VWSr\µ'NLØmtZVVVšU¨Å„P½UMÊ�×ÖR§ÜÞøÓ'öãÄ©(I735¤ŸQÕX_ä¼v…ÔèQ”ÛSºí¥[3ª¨‰óêy™³“v*Ä—€›W±BΡ;…ØØØ4ÔUWÿÓ]â´½}¹Îißvö¡ÖVøsq:"Îùs§h~°õµÿcï>ÀšºúŽ‹¥V!€ÊÜ( [@PPA†¢hµî:X÷¨£n«m­V­TDŽٲ•!;BØ{QÁö}Orô6&€¨påêïûÜç}n ‰Ö?Ÿÿ9çæäq ¨ÃâP ùuÍ=ªnûžêÓ[ ö¨úì{T §7pâ@PÄ¡@@òë:Ĺxöðå T?‹‹¼­1bÈ’gqºqºÁ@¨ËÄ¡@@òë:Ä)ÉyâìÄèÓ[ª¿’‚ë²9ueI@œÏN؆ˆQ" â�_×!N'í4Äâq /> â�ˆÄâ@TˆC�€8äÄâq€8ÕâP ùqÚIœN÷ê/’8…yéèÝ•f~^âèŸ<ñ'‚>4 â�ß×C}íG÷~©Ä1Ô×9yüð—JUUÞ…]šKKK |a¢z@ Ä!¿Žýè¿O$ŽÕ„±nËç’0ŠÃÝgê¯N« æøîh4q#CÝ G¾D«‰ãV¸.j'qtu´Îœú½ÅQÞ·þøÂˆsÿÞ-B6ͯÖx¬’‘‘st°/.Êk›8.Ë—á¿î‡,¿;ŠÄ�¾€€8ˆC~@œŽ%Î —…褪„é²t¾¤¤DQn"§Ã‰³cû6eåþÏâŸäØÐ­Ç™›µgçöí@èK ˆC�€8ä×±ÄÑ9t�ûb“1º4qm­á�ý.bâh޶Òeúº¸X¯aCÕ#‚.ïÿe�’¢¼¤má<çW5Ì6ˆSȉž1m’¬L_9YéÙ3'—æÅbÙh޾q­Ë83#ô³xÿÖ9ŒÞî æx÷†#·½Ý½á¿‰*g§IÄ~è‹H6¼-Á/`âä°¢¹;-%£óü¬ÝB‚FÎÝb'Aœš²t·å T”•¤$%tˬô(â £®‚-""rýÊ$ÍQ#V¹-216>lpdèÝý{·¢Š ôã‚YMÏ Û Ãfú¹è©¨*ïØ¶‹Çyšñ õuø'ªœ§9þ÷-îþ JŠýü\þÉåpw̨,å Ùä¦1l¬xûH ùã·ýqj+óÝ\—¨(÷—’’d0¬8ì$aâìÞµM]m 0q´4Gm\¿ÆÜÌ”F÷¾p¦®ºx…ë2eôT¶ ëlv*&Ž-ƒþöM©îؾ埦ú"Ž’’âoGቪԔôTÌ´$ ô5Ä¡@@òëpâôé-pϳ²0f÷v$˜"N&ŽªŠÒ“ÐkÕÅñs˜‚ü�dSšû”ùÌOA^æ’çomÇÌÔÀÆz\.+‚à E AçqT”#C®Õ–¥ìØêŽÔÄÑ16Ò�>u’Мï¬ÅÅi�8¦&SmŠrže$‡éêhÄq´§Ó­Æg¦EV•0ÝW.ÖÖÙÔ�×6qPžF<¨)Ïœ7g:R’MYQ39BA^ÎçâÉ÷Žâ4=/Š�¤>ð¹ã-Žâð¯ÅÅi�8cMÇL™lW\�ÁbÆééŽ&ˆãè0‰NŸÀf%TW乯v­­Ùü²²ýÄQP�õo~YýosÝdG;ºUVfJMe‘Çꣵµ^¿ª%Fnš_ÖÆÅD RW»àu¦ýÄ)/-D/52â1±GLLÌÇçúšâP ù½—8³gþ7`À߆5KZÅ!槆 U?þÛvLœƒ{Öã)ª€{^èwMIfÍLg»µÜ‡´LVrúYìÔòEo¿¶‚�'ªfΘ²n�[;'ªŽÚå<Í¡CˆÃbÆrÿd 2ðD•ÿØ8¹œt’ŸËÄóS7’’ ñ휨BÄÙ¹c ž¢ÊËf¢§*Èeáù)„ôT‰Ï¢¦¨Ž>0ÝÙ©ýÄÉÊä>mjò3‚8ŠŠýNž<Ä�¾æ€8ˆC~>ŠCì4ކµù¦uË0qx»‹s‰xY\¬±þfþœ©nËæ´FœÀEE¿!âÔ—sG†\ÃÄ9wê&N}EwÇò¤ À‡Þ4q1b-;5ô£‰ô𲸸±‡�‰‰âç+ ¾›¾gù—ó¶ íÿ ^‚ƒˆãyúwLœˆÇw¸Oûv-΂y3y¬i•8>O�Ö…‚ŸÙdŒA‡'Èÿ6zNb-N+'$ðžð»»uãRû‰ãyö$&Îãà‡-=ÕĚ˗Î�ÖÖB¶xó¦Œ�`‚>% â�_‡g½GË£8G<Š“•ö¸ÅQaâ´sGOW“Ÿ8ƒÔܼú7&NLĽGqüïû`âpÒ£ºwï^Z�ÔÆrc�‹Æ?š8…¹ÉèÏüú•s5åYèæ¯vòVÞp‰£¯7º5âð¾õq©¼uý">�‰jq'àÑMLœlvzweÅY·ÜÇëÜ)Lœœ¬4ôTå%¹Ë�‹ 8Ü7å{©¶ªäŸ¦ú_íC²�µ8ô)q(‡ü:œ8}ûHÞ÷ª*ŠÝ·ë' š8±ç㈃X3ÖDß–>±¯Å¡[™kq„‰ƒÎ� G¿w-Ž�í„•® _Ö²1qœ&3í­+Š’²˜‘–ãM‰µ8Æcô¦N±-Î}ÆJ ××Ó&Öâ8ØYÛÚLHK|\WÁŠ»‹n>¯ætqØé1"""��®7Öæ‡?¾§¢¬DÇn}ÕŠ¥¯Š„‰óö[Ř5NSìl+K³8™Ï,-̉µ8&ƆS�J 22Óã ôuˆµ8ö¶¶¶ÖÌÔ˜úš¢èÈ@t³±¾¤ýkqâ ÃÑaÒ$[zzÚ³†ÚÒ'Q!èæ‹† ;•û¦üï¿h¨Œ TQQþPâWTæÚЭÍÍÇbÜ,\0ÏÒbôù âð>ÐoA;‰£3Zóô‰_[Åá~ëäá/Œ8÷ï\#|Óô¢j�û i1±^ޓРØmÇeÙbü÷ÂýÐáw‡p"#‚�8Ôþ€8ˆC~_ qÜ–ÏG¦©,N^¾dޤ­0;ˆÓáÄÙñófî¾ q…y,úÄqæcÛ3ŠsûæU }b@ Ä!¿Î#Ú»’ˆˆˆªŠÒöÍ+›j¹Ðqvb¢o §Å?Q%ø­z–’¢üÃÛžX6ÙéaÜÏÝ/ˆC¬ÉËŒdX�— ‰ªþû¡Ÿ âT—&».›«¢¬(%)Á �g§… µeiè%]ó9‰Î5G _å¶ÐÄX_\\løÐA‘!7÷ïÙ¬¤¨€ ôãüï›ê³Û ƒn‰ßÝÕþÛ·þÔüœ«ç©öÿ½ýÑüUï~Kᆻ½ù½Ë˜59ìxî®%èç�½wçU}NlÔƒAêΟ=Úâ(ÿZ�QœÖˆcjb8ÅqRQ^JFj´®ŽAGÝÚ’�S]Æv_µl´ö¨æÆ’öGA^.,ä~Scé?¯*léÖØñÕå9î«\Fkk6¿¨ †pšËcŸ>¤®vÁëTû‰SVœ�^jdx ± GL¬—�÷9 ‘‡qÈï½Ä™=Ó¡[KmX³¤ýU‡÷orvbtqkÐ ò ž¨ztÇ ';#�äfFâ‰*„I Ú³'&ª\—ÍC”)àÄ`âÜ»OQ>ôAô©-cbÖÌœî¸Îcy;'ªÜî<Õ¾Cˆ“‘Ê�wC¾ÁU~÷¯bâäf=C'ùÙ‰x–ª¹±XRR"!öq;'ªqvn߈Ïs9ÉܧÊIųTÍ/ʹO.0Quä×½ÎÓ¦´Ÿ8lwN-59† Ž¢b¿“'þâ@ q(‡ü:oç’çam­áâb½0‰Œ�t:„8�¼¹•¿]‹ÃN ÁÄ öóvØ�+§ø—ó6×ö»w�è âxž>Œ‰|ƒ»øÛõ7 æN籦Uâø\8®­5=äÍ»£ß!Ä ò»ÎÛ‡üÍZvz &NHà-áwwëÚùöÇóÌ1|x·…§ºî�dsÙûìhmMâM™Â(¢D@ Ä!¿N"N;ÝÙ×ûhUQ,úú¡½x+o¸ÄÑÓÕqôtGñG]MõÆ•˜8OÃn¶8Šãw÷<&N3¬{÷î%yqm,78>š8…9Ïл»vùïêRfóó¼Cû·ñVÞp‰£§«Õqôtµù‰3H}ÀM_OLœ˜(¿GqüøbâdgÆ£wWV”þqË�q¼ÎÇçÙìDÞSe ,7.ÊÏ@oêúÕó5y¯_Uýzp7’ ¬Åâ@”ˆC�€8ä×IÄa§ˆˆˆøß=×PžpI¥?‚8v ‹•.ó^T¥ ÇŽa¹Òuþ‹j&&Ž“#ÝÑÎ ±†�b9Þ˜X‹cl¤;u²MQöSVr°¾®±ÇÁn¢­�EZB@mYJÔã›vV •é�A63 ½»€—ŸWg…ßTQV"ˆcgkµÊmÑ˺aâð¾µøe}&ŽÓäIŽö6ˆ5Y1–fÄZã1S§Øç§²Òžèë�&Öâ8ØÛØ2&2“#ë«r¢Ã¡›�µí_‹C™ÆÁža˰f¦<­¯.ˆŽp°·m¬+Îb% 7èw �‡‡ú©(÷ÿPâWTågÚÐ'š›™â+ªΟci1ûæí9‚:2 â�_çMTíÛõ“¼œt�ßêk­X>— Îc?ï¡CÔDE¿¸¢ �ý}þûV=‹•hj¬'&ÖKcÄ�£‡·ÄÉɈ [™ _QUU’ä¾rÑÀ�ÊxBêšÏ‰ŽÅ˜ÖIŒ Ø·{³¼œ ÷Ýè¬tý‘ Nhà�aC‰ŠŠ \Q…ŽÐÀ›o¿Å½¢Š•ejbÈ}wÃŽþ¶— NnÖ3ºµ…ðU5åY«—« TE¯ÓP_çÆU¯º¢ŠŸ85¹«]Õà>•�î ß x gÿÞòr²=zô02Ô[¹bÙ‡§éE•Çj7ié¾½zõBl">§5✈8ï݆³£Fqx›Xùˆsÿîu7Í/kÖ¸¯”‘‘st°+.à´M—åKð_ïã�ßʼnŒx Ä� " â�ßWBb§ñåKæHJÐ ³c�8ägÇö-¼¢ óØ6t«qæcÛ3ŠsûÖ5 µ‡qȯóˆÃ°æî{ ""¢ª¢´}óʦZ.tœ�ħõ là ø­VvG¬ÉËŒdX�ÞÀ¡º4ÙuÙ\eE)I }<;-Lx‡Ú²4ô’®ùœÄ8¬r[hb¬/..6|è È�›û÷lVRT@úqþ÷MõÙm§(÷Ù gYi9Y™Ù³¦–¦`ÙhޱiýÊqæÆ´!ƒÕÜöƸÉeÇÑ­ÞlËpäÐ.ôšK Rø'ªœ§:ü÷ö¹;<”()ö{tï &NnÖ3ôõÊ:/ÈIbØLä=Õ�?Žì%ˆS[‘ãæ²HE¹¿””$º‡/ì›Ý»¶¨« &Ž–æÈ ëÜÍÍLh4qïó×V¸¹.yóT +; ›†Á°Æ§TUvü¼éõ«š"Ž’Þ§“kšÔä8Þ>�Ï€8ôéq(‡ü:{çeuJLØuu5¯Ó[Åá_‹#0ŠÓqL�õ§8Ð 9O2’‚tuFÄq´·¢[™g¦„T'®^ñ£¶–Æ«:vÛÄ Úÿiø�šÒÔy³§!3!Ù”$2Cäe}Îkƒ8fc�l¬-ò²b³YOhÐ9Ae¥¨Ð»uìÛÖ!5?çŽè�ÑŸ>Í¡8?™•…7× Žð(NkÄkb4eò¤âü4VÚS=]m‚8޶tkKvz\uÇ}ÕòÑÚ£š_”µŸ8 òra!›ËÑMG‡Itú6+¡º"Ï}µëhmÍæ—UÄàMÓ‹ÊØ§¡ƒÔÕ.xýÝ~┗䢗DŒÜˆ‰‰ùx{q èÓâP ù½—8³gþ7ºÀ߆5KÚ?Quxÿ&g'F‡±� ßà‰ªGw¼0q²3"ÐInf$ž¨B¸‘” ={ò@`¢ÊuÙ= â�_ç�â\ò<¬­5\\¬&‘±‘N‡'ð�7zNb-;5'ØÏGØa7®œâ_nŒw ÷»wñCw NУ«¢¢¢ÄBœ†*6zò¨Ð»˜8ž§ÇÄi¨â ¯#ß=ò¥Ñĉµ8ìô'Mœ îë$ÖâdeÄaâ„Þ~û·®_l?q<ÏÇÄ ¼×ÂSÝðA¬¹|éÜhmMôðMŒ�`‡øwÄ�>c@ Ä!¿N"N;ÝÙ×ûhUQ,úú¡½x+o¸ÄÑÓÕqôtGñG]MõÆ•˜8OÃn¶8Šãw÷<&N3¬{÷î%yqm,78>š8x‡“Ýâ(Ž0qÚ9Š£§«ÍOœAêoúzaâÄDù·8ŠððÍ(Nvf':jG`Ö&16  ;~ú4{é¾²2Ò³¾ŸR’ŸÔ6q²Y1ÖÇKHІ ´oÏôõªÒ â„ÝFßÅWT±Òž˜š¢·?RcØŸ¿ï#ˆ“ÇI [[ _QUSží±ÚEm *z#†úº7®z}ÐUüÄ©©Ì÷pwS8€ûTz7®]ÄëoöïÝ)//×£G#Cý•+–}(qš_Öx¬^!-Ý·W¯^ö“ˆÏÅi�8'Oø“/+)â@�p@ Ä!?Ø£ŠüO7¾sã|ŸÞR_ÃUÄéÀ €8ćqȈCq¼½Ž_ñ>Y]ÆŠ ¡1léâ¹_ qºÁÔùq(‡ü€8ä§´ Åyª}ŸÞRý•ú¹¹,¬¯â| Ä�m8!ˆœ€8ˆC~@Jï4Äâ@Ðÿ€8”ˆC~@ ˆQ= â�ˆÄâ@TˆC�€8ä×±ÄiÏNã$'?‹÷Yy¹q_$qºøNã@"' â�_×'÷ƒsŽþò¥‡ÿsq¾<âÀUDN@ Ä!¿ÎÞi¼cGqx›Xíëpâ›XÑhâF†:A/qx¼°�ÄámDu¸ÅQ�=ª¾ â|ôß÷•22ÒbbbŽvÄGÿµF—åKðß |º1µ‡qȈƒ‰Ãû,㜪’T—¥s%%hE9ñ@œ'±�CaÛ†n5Î|l{Fq`zo@ Ä!¿Î#NaVøŒ©¶²2}åd¥gïXšûãFsÔ°�k—�33” ‰4àþÍÓØ79é¡t+3¼-ÑÜ-ŠsžðOT9;ÙäÏÛá�ýf+rži²3¸[]–>Cçyì(}<ï©ýþëv‚8Õ¥©®Ëæ©(+JIJ0èYÌâ ÐÔ•§‹ˆˆ\¿| �k޾ÊíGc}qq±áCE†ÜÚ¿g³’¢‚¤$íÇù3›rÛ ƒn‰~.zªªÊÛ·®m~ÎE�óTûÿÞw—†ÿ&ªœ§:¼û­–wGç9I ›‰Â8ÔV丹,RQî/%%‰îÀaÅÐÖ¹››™ÐhâÞçÿ®­*ps]òæ©Vv6 ƒaýöM©ìøyÓëW5° 'ñïˆ}Æ€8ˆC~�G3S}+³ÜŒÇœ´`+s‚8*ýûE_­-MرePS-wPÇØHgúTÛ¢ìhVr ¾®¦0q„GqZ#Ž©±þzavLFrˆ®Î(‚8ŽöÖt«q™)¡•ÅÉ«W,ÒÖÒhªç´MœªýŸ†ß«)eΛí,Aãʦ¬ ‰™ª /ësáø{Gq^ÕçÅF=¤>àüÙ£-Žâð¯ÅÅi�8cMŒ¦LžTœŸÆJ{ª§«MÇÑÁ–nmÉN�«.㸯Z>Z{Tó‹²öGA^.,äaSc9ºéè0‰NŸÀf%TW乯v­­Ùü²Š¼izQû4t�ºÚ¯¿ÛOœò’\ôR#È‘111o/ }z@ Ä!¿÷göÌÿFøÛ°fIÄa%ù¡û°S0w¢ï ›y¬0Lœ»×á‘›²¼ôõœôÐô¿·¦áÎOùÝõúhâd$£ä˜¨r[>_‚&^˜‡‰spï<9øð2¢OmY:ž¨š9còº5.휨:|p‡óTû!+�7ï–ŸŠ'ªü\ÃÄÉÍJ@'ùÙÉxŠª¹±TRR"!.´�Uˆ8;·o³T¹îäW~.OQ5¿¬ä>U|¤À,Õ‘_÷:O›Ò~âderŸ659– Ž¢b¿“'Žq èÓâP ùuÒ(Nà}/QÑoˆµ8õe‰Üÿ>ø &ιSû1qêË’¸{q'øÞ?O#–à°Sƒ?š8�½ÅÑS½]‹ÃN ÅÄ ö»" µ›Wÿæ_nÌÛ¢|´ÿýKxo+ò#˜8Á7y[‘¿Y‹³`Þ kZ%ŽÏ…ÚZ#ÑCð3�ÑïâùswD'ÖâdeÄaâ„Þ~w·®_l?q<ÏÇÄ ¼×ÂSÝðA¬¹|éÜhmMâM™Á(ñïˆ}Æ€8ˆC~�D<Š“•Ôâ(Ž0qÚ9Š£§«ÉOu5ÕWNbâ< ¿Ýâ(Žß½‹˜8ŸîÝ»—äÅ·±ÜXàrñ�&NaÎ3ôguíòéêÒŒæç‡öÿŒä„‰£§«Ýqxßú�8ƒÔÞôõÂĉ‰òoq'àá›QœìÌxôîÊŠ2>n¹1"Ž×Ù¿0q²ÙIܧ*ÎXn\”ÏBoêºïŚʂׯª=¸ÉÖâÿŽ€8Ðg ˆC�€8ä×ykqÆšèÙÒÇå±BñZúD3b-Ž0qй‘Áè÷®Å±cX®t�ÿ¢:ÇÉ‘îhg…XÃN µoB¬Å16Ò�:™Q”ËJÑ×Ó"Öâ8ØYÙÚX¤%Õ–¥E=¾…n>¯buqØÌ(‘€WŸWg‡ßVQV"ˆc7Éj•Ûâ—õyÂı›dÍûV&ŽÓäIŽöŒŠ’ +ÎÒÂŒX‹c2Æ`ª“}I3“ƒN¬Åq°gØ2¬˜ÉÑõUyÑá~èfc]Qû×âÄA‡ƒ½­­­535¦¾¦(:2Ýl¬/ÍÊLBo*Ðï:õSQîÿ¡Ä!®¨*Êϲ¡[™›™bß,œ?×Òb–ÍÂÄ9‚Ú‡qȯ󈓟6}*CFº�¬LßYÓ틳£Ú&'-Äz"÷Šª¡CÔöíZÇý�^/@œÇþ>C‡¨‹Š~ƒ¯¨b%›닉õÒ1äè‘qrX‘t«qÂWTU•¤¸¯\4p  oBJ›·¦¸cFq¦uc÷íÞ"/'ۣǷ†:+]Ä º…^•¨¨¨ÀUè ºÍ÷­VÚSCôîFj ûó÷}qò8 tkKá+ªjʳ=V»¨ TE¯ÓP_÷ÆU¯º¢ŠŸ85•ùînjpŸÊ@ïÆµ‹xýÍþ½;åååzôèad¨¿rŲ%NóË�Õ+¤¥ûöêÕËÁ~ñ¹8­çä‰c°e%@ˆC�€8ä×5÷¨ºí{ªOo)Ø£Šê{T §7pâ@@ Ä!¿®Cœ‹g_¾ðGUñ³¸ÈÛ#†,ùq&ç N7ØÀ‚:? â�_×!NIÎg'FŸÞRý•\—Í©+KâP�8° '‘‡qȯë§“vâq€8ЇqȈÄâq ªÄ¡@@òâq€8@ˆêq(‡ü:–8�½ÓøG§=;�ÁÄ)ÌKã]Užñy‰Ã½ªœ»W‚:% â�_×'ÿçâ|…Ä1Ð×9yü×/•8ªª*o.¹êPâð]rÄ�¾Š€8ˆC~�÷Ñ�1Š#°GUG‡Ø£ŠF72Ô zxùƒˆóÞm8;jGWGë̩߾0âÜ¿{ƒÅi~U·Æc¥ŒŒ´˜˜˜£ƒ]qaNÛÄqY¾ÿÅq?þøÝQœÈˆP ôõÄ¡@@òâì4î²t®¤­('ˆC>qvlßÊÝá!>º�·ÃÃ8s³öŒâܾ}ˆ}åq(‡ü:�8…Yá3¦ÚÊÊô•“•žý½ciîb‡�k—�33” ‰4àþÍÓØ79é¡t+3Þ® êGlÞ£ÊÙÉ–ø ¼�C‹;�£ó^x‡êÒT×eóT”¥$%t‹,f„ðuåé"""¼½¸8¬rûÑÄX_\\løÐA‘!·öïÙ¬¤¨ )Iûqþ̦†Ü6ˆS”›8ÃÙQVFZNVfö¬©e…©˜8šš#6­_5ÎÜDB‚6d°Úƒ;>X6¹YÏèÖ¼m9ô zÍ%iüUÎÓˆ·o¨¯ƒL£¤ØÏï¾/öMnVo‡6’MAN Ãfâ›~ÛG§¶2×Íe±Šr))I†�'3A˜8»wmåîð D-Í‘Ö{˜›™ÐhâÞN×Vº¹.}óT k;Ç–a�~ú ª²cûfz>€8¼}:âóÔäxÞ>� @zo@ Ä!¿Î#Ž™©¾�•YnÆc¼ §�•9A•þý"ƒ¯Ö–&ìØ² ¨©–;¨cl¤óÞm8FqZ#Ž©±þzavLFrˆ®Î(‚8ŽöÖt«q™)¡•ÅÉ«W,ÒÖÒhªç´MœªýŸ†ß«)eΛí,Aãʦ¬ ‰™ª /ësáxÄ1;ÆÆÚ"/+>›3ÎÜ�ÄQQVŠ »WW™µãçu@Í�ܱã1úÓ§9ç§°Òžèë�&Žð(NkÄkb4eò¤â|&‹«§«MÇÑÁ–n=��_]žã¾Êe´¶fó‹òöGAA>ìñ£¦•ÿ4Õ8:L¢Ó'²YIÕî«Ý¸Oõ²šÅAçq1aƒÔÕ.x�n?qÊKóÑK�Œ&Ö∉‰ù\:Ä� ÷Ä¡@@ò{/qfÏüoð€¿ k–´AV’º;%s'!úº™Ç ÃÄ9°{¹)Ë‹A_ÏIMOð{kîü”ß]¯�&NFr0:A¾ÁU�î^ÀÄÉΈB'¹™Ñx–êU]–¤-áéC�‰*·åó%hâ…Ùq˜8÷nÁ“S�/#úÔ–¥ã‰ª™3&¯[ãÒqX©‘Ü·ÏŒÆóS‰±�èf>ç&Î�}Ûð,Uy1“û’²ž¥§DòL“Š'ªüø~4qXiÜ?Rät§qâ=ò%–à4TqГG…ÞÃÄñ<ó&NCu6÷í§Dù]§Ñĉµ8ìô˜�&N�ÿ-ô:‰µ8Y¬xLœ�À»ÂoÿÖõ‹í'ŽçÙ¿0qB‚´ðT7|q._ò­­…^þ¢‰±Œâ@ q(‡ü:‰8x'+-¨ÅQaâ´sGOW“Ÿ8êjª7®œÄÄy~»ÅQ¿{1q²˜Ý»w/É‹oc¹±ÀåâM<ŠÃÉxÚâ(Ž0qÚ9Š£¯§ÍOœAêo];�‰Ðâ(NÀ£˜8ÙìôöËŠX·ÜÇëÜ Lœì¬îSsÖåg¢ÿB®ûz×V¡›¿Ú‹dkq ˆ„€8ˆC~�·g¬‰ž-}\+¯Å¡O4#Öâ�Œ~ïZ;†åJ×ù/ª30qœéŽvVˆ5ì´PËñ&ÝÞ®Å16Ò�:™Q”ËJÑ×Óêöv-Žƒ�•­�EZBPmYZÔã[èæó*VgcM�lm& Öàµ8t«ÿÖâÉÆÈPï½kqì&Y¯Z±äUC!&ŽÓ;GFeI&‡oiaÖííZ“1S�ìK Ò3ÓãÐû½]‹ã`ϰeX1SžÖWDG ›�uEí_‹Cö¶¶¶tfj\}MItd°ƒý¤Æú²¬Ìd‘@ÿ»/Ê#ÂTTú(qˆ+ªŠ 86t+s³±7 ̳´�YÃÄ� ‡qȯ󈓟6}*CFº�¬LßYÓ틳£Ú&'-Äz"÷Šª¡CÔöíZÇý…]/@œÇþ>C‡¨‹Š~ƒ¯¨b%›닉õÒ1äè‘qrX‘t«qÂWTU•¤¸¯\4p  oBJ›·¦¸cFqfmc ²ŸMŸæ #ÝWVFzÖ÷N%ùÉm';3ÎÚj¼„ ½æ}{¶¢¯W•f '4øÎ°¡ƒEEEñU™Ì˜±&Fèí�Ôöçïû âäq’èÖ–ÂWTÕTäx¬vQ8½Cݾ>èŠ*~âÔTx¸»½}*½×¼ñ@Îþ}»äååzôèad¨¿jÅò%Nó«:÷ÒÒ}{õê…ØD|.NkÄ9yò¸ÀŸ|Yi!ú âP ùuÍ=ªnûžêÓ[ê«Ý£êÎ�‹èí {T §7pâ@_U@ Ä!¿®Cœ‹g_¾ðGUñ³¸ÈÛ#†,ùqæWEïó]¹ôwuYfü“@ �aKÏûJˆÓ 6p€ OˆC�€8ä×uˆS’óÄىѧ·T%×esêÊ’¾*┦9Ouà½ý~n.?ÖWå| Ä�m8!¨CâP ùuâtÒNãT!N'í4Äâ@_C@ Ä!? ˆÄ�¨‡qȈÄâq ªÄ¡@@òâ�Iþ+Æ?…8†o®$âq ˆ‡qȯc‰Ãÿ¹8]„8úÚ'Žîâ|qTU”y:�ìXâXZŒ{s¡‚:4 â�_Ç~ô_{Fq"ƒ¯Ø1,¤ûöîÕ«çH�!»·¯©+M„Qœ®Fœûw| ß4½¨ðpw“‘‘ëå`o[”Ïj›8.Ëãâã~èð»C8‘áA@êð€8ˆC~$çîõSß}×cµÛü´øGµ¥ Ñw×y,ñ>wˆÓ•‰³ãçMÊý•âcà rÓéô‰ææ¦íŹ}ó ‚È ˆC�€8ä×y8Þ¿QUEI¬WO“1ºOî#ß4Õ2ÑW–üø}‹U…Y‘3¦M’•é+'+={¦ci^ "Îo·ji'|“™ܽ{wvj’ Úûñn"""ªªý·oqozkÍQÃ×ÿ´ÜÌÔ�&.váÜoüU ºßC<å ‡lZç6ÎlŒM|È`µ·ÏcÜT•¤º-Ÿ?@µo)ÉE fÖ–¥#ßÔ”2Ý–/PQV’’”`Ð-³Ò£„‰óËŽ êjª-gýOn&Æ4m­‘¡A·0kŠò’g8O–•‘–“•™=˹¬(ã¦(/…ÿëåEÂÄ©­ÈvsY¤¢Ü_JJ’a3‘ÊǾAçøÍPUÙñó†×oÅ£¥9rÓ�qæ¦è5 ¬þðžï{‰£¤Øï·Ãû0kR’ž §MK‰âq ®‡qȯ“ˆ“ÿàÛoEû]¬/Kôq_±±&éé]ôÛ1<ðr‹Ä135°±6Ïe…s˜�Ç™¡sDœ²üØï¾ëqgóz×ñæcø‡p^ÖdÄDÜAžð:s˜ Ž‚¼lh ïËÚÌ×⼬eÇDÜE9ö7‚8*ÊŠQ�oÕ•§ïض«¹�;¢cg;ÑÄX?).°¢(åø{oùžEÄq´§Ó­Æg¦EV•0ÝW.FRijÈm?qúô– |ä[Uš±{×&II‰âüD³±clè–yœgÙ™qãÌMÐ9&þz~vbûï넉ãèÀ [[²Óc«Ë8î«–�ÖÕÜXJŒâ45–Æ> ¤>ð‚ç ‚8ÈCQáþõÕ;·oBxzýRp ‡Ÿ8eÅYèo-"ÌŸX‚#&ÖËÇû,ˆu�€8ˆC~ï%Îì™ÝZjÚ%m'3Ù_\¬×³¨[üU�÷Ï£rÒ‚…‰ÃJ @ßb§ãù©„'\ åeF ÖL›Âp]6�4Õ±TU”<ÿ>$ä¾wCeFXà5ü�6ˆƒÎmm,MM ’ãƒ*‹Sÿ:úf-Žƒ�µ­Í„´ÄÇu¬è°»èæóê¬ö¯ÅéÛ§w�ßµê2Ö¾=[$$hx-ÎXS#[ÆÄü켇nm�×âà¯#Öàµ8tkKáµ8ö6¶ +frT}U^t¸Ÿƒ=£±¶0+#½Ù@¿›�uEá�¨(÷ÿâWTæep¯¨23ÁÜY0Ž……9Æ >â@Ðg ˆC�€8ä×IÄy^‘´gÇu5•^½zjŽæë}”ÿsq&ÙŒïÛG .Ξ?áÏÅÉÏŒ˜>ÕVFº�¬LßY3ŠsžÄa&ø£ßÄ#†æ¿h|ß®õòr2=z|kh0z…Ëü÷§¹!{ß/ù²à½Ä©,NY¶xŽrEä’Å gá+ªªKÓ§5âœ<ñ‡ÀÜYYq‚:/ â�là{T½÷¢ñÜÀˆA�‡qȈÄ� €8ÕâP ùq€8° '¢z@ Ä!? ˆÄ�¨‡qȈÄâq ªÄ¡@@òâq€8@ˆêq(‡ü€8@ ¢z@ Ä!?ôšcŽ£ÿ…8>îˆ ¼x ˆ}Ö€8ˆC~Ç`Fq`Fq ŠÄ¡@@òâq€8@ˆêq(‡ü€8@ ¢z@ Ä!? ˆÄ�¨‡qȈÄâq ªÄ¡@@òâq€8@ˆêq(‡ü€8@ ¢z@ Ä!? ˆÄ�¨‡qÈï³lp|úŒq(ç3VQ’ƒþo4pÀñÑÇçþG }½q(‚ ‚>4 â@AЇÄ¡@@‚ úЀ8ˆAA‡q ‚ èCâP A}h@ Ä� ‚  ˆC�€8Aô¡q(‚ ‚>4 â@AЇÄ¡@@‚ úЀ8ˆAA‡qÈï³ïÏ Ÿ~|îFô™âP ù¡_M5I¼#ù�£6åÝ#UèHã?šë˜ïéï‚G=ëÝ#ó݃ýÎÑ�%tpÞ=²ù�×ÏsÞ=r…޼wŽÆüw�‚w�BÁãEÑ»Gñ»G ÿñÏËR¡£ìÝ£ü�ãU…ÐQùîQõÎÑTýîQ#tÔòÿ6×½{Ô¿{4¯Ÿ¿{4¾{¼xçøç¥ÐñêÝ£‰ÿøß¿Í﯅ŽÞ9þ÷ï»Ç›ÿ†?ï?"úìq(‡ü€8@ Q= â�ˆó§´�ýyÿAÐç ˆC�€8äÄâ|ÄI‹ø¼ÿŽ èóÄ¡@@òûj‰óÍ7ßtëÖ-‡õ¤óˆƒDnÖ³‰óö» @ }b@ Ä!¿.K%Eùnïy‡â()*?TNVÆÁŽž–ÖÕˆ£¤ØOàÏ'.&ˆA_g@ Ä!¿.Nœs§‘?Šƒ‰ãyú÷—u9Û·þ„ÎÕÕTŸWgÊD•®ŽzžÛ×/tÔD&Ž×Ù¿`ˆA@ Ä!?ÊÓ'%)±`Þôú &–M3ÂÙiR?9ôõ±¦�ý¯bâäf>™3kªŠ²bŸÞRËÏ©¯È ˆƒëÕ«'ƒnYU ÎëÆ‚²Â|Ÿè°{7œŒ§ÎSíû)ÈKIIŽ55zxgë&åþŠèyôtµÿ>q¤¹±˜gè�AüÃ-»wnÅÉÎ|æ<Í?­ÙØ1�ƒîbܾH«êòœ¶‰ÃÿtDœw¿¢ˆX““•6ÝÙ©_?Þ�3 ñþyçžJèž Û¶lTVîß«W/}=ÝÓÿõW<@êrq(‡ü(Jœ¾Ÿ\Vð ý/:_³z òM]9Sm ªˆˆÈý[^™©a:=z|›ë×P™1lˆ:ºÛ¯û·U§\¾pÜïž7ADŸòÂd³±Fè|Ï®�m§¾2K]�û#ܹ”ÉŒF"áþˆ¸àÀG׸Oõƒs}Uvü“€YßOe¥=˜¨Å!ˆÓP�¯®6=íûWØéq¼§í‘ô,œ ΜÙ3*J²ÌÍLÐùÞÝÛÚCG‡I•e¹xçíWì*Ëòþiª}^Wª®6�ûãîßÌÊLFÐA?.9ñ)AœÉŽöUå…È7AÐ͹sf=¯¯xýìlV ‚º`@ Ä!¿.N¢ï¾ëÁOœˆàëÍ ô¿è\A^çŠ÷qt®¥9OT¹-Ÿ�nº.›wÍç$:2X­Å‰ª˜ˆûè|ÃZ7t¾hÁ¬¶'ª®^:Åûx~ÊÍe!÷G,_pãê9t2bÄPÏ3GŸ= lz^$¼§ âøúœE'ÚZ#ñD•›ËbÞÓ."ˆüÏ«Ê ëVs_ä�s[\‹óÝwßñçIT01Qõö+!x¢Ê÷ÊÞ�ÓÄU+\—¡›n.K â<�ÅST7¯_F75F ÷ò<�ðìÉë¦z˜¨‚ ®‡qȯ‹§µQœÌ”Lj8èñ/ø5ì{6¡“‰–c1qvþÌ¥‰�íă{· Ëñ¦m¬ÅÙº‰«‡óf/7–•‘¶Ÿd�—Ø»�û#&˜câìܾžû#&Y5Tç / ªœ‘Ý~âÜ·ƒ÷´ã1qvíØÄ{Z:Aœ\N2"ÎÖÍk¹/rþíÅÉÍN Nn6çà�Ýè¦ÕD Lœ];¹oÊÞŽA'/;§±¾Âj¢åïk€jfF2‚º`@ Ä!?Ч£FqÚ ž¨â¿h¼µQ¼Ê8?;áÎ� cŒôÑ7­_-@=]í�ÅéXâ¼w‡ > ó³îÞ¹n<†;—·yÓ: uÁ€8ˆC~%ÿZ�U‹kjËÒTá_‹óí·¢‰1�Öâ\òúóÑÝ‹Gœº 6^îC¬ÅùöÛocƒú®Y½<%!¬¡:gáüY豇î ޵•:ÿí×_„‰S_•‡Ÿ–X‹Ã}Úø°N"NCm©ÚÀükqÐ�KJx"Lœ@ÿû?y¬JKyÖØPùãÂyè[Gâ@P ˆC�€8ä×ʼnß勵®¨’” Í›3­®< _QÅN ›:™¡ /‹¾nb¬ôð2qEÕì™NÊý¹WT-]4›ÿŠª":ØÌè©S&)ÈËIJJ˜ù]{ý¢èE]ÞGöhjjôìù�b?—e kóˆøèú õ�ø+÷oû\Q••?ÕÉ?­©‰Q�ÿmþ+ªÚ ×}/´‡8ÿ6×qØ)Ó¦NVP�çý¸1Á�ø¯¨"ˆóª±ú臵4GõìÙSQ±Ÿ«ËÒ—�Õ@ê‚q(‡üº,qZûtcük8;#6p€O7&þâ@_y@ Ä!? ˆATˆC�€8äÄâq ˆêq(‡ü(GØiˆÄ� �€8ˆC~@ ‚¨‡qȈÄâ@ÕâP ù¡_1ÇÑÿÂ�¨À‹Ç€8ÐW‡qÈïŒâÀ(Œâ@ÅâP ùq€8@¢z@ Ä!? ˆATˆC�€8äÄâq ˆêq(‡ü€8@ Q= â�%ˆc ¯}âènŒ›·ç@ ‚ÞÄ¡@@òâq€8Dõ€8ˆC~í'Nëñ7ß|óÅÇj‚y7^4š¸‘¡nÐ#_2‰£«£uæÔï%ŽÕD‹nïæ÷à‚¾Ú€8ˆC~@aâ¬pYøº± ª„é²t¾¤¤DQnb$Î ×¥0ŠCü7 Ä�¾ò€8ˆC~KÍQÃÖy,6£+A×ÖñØÏ‡a=®[·n"""ª*JÛ7¯lªMDzA÷_¿f©™©M\ìÂÙÃ|wë¿}Ëꦺ̶‰Ã �sUt�¦z®ur3£åd¥=Oƾ™?ÇÙ|¬Ñ«:Žq~Ù±^]Mµ â £®"=ùõ+gk4G�ذv…ÙØ14šøE¯ãEyI3œee¤ådefÏšVVÄľÑÔÔXÿÓ cC š¶Ö¨Ð Û˜5µ7—E*ÊJRR’ ›‰V<ö�–¦Æ†u«ÌÇ£§å•14Ð=öÇÁ‘à ⤧Ơ?NfBÄÑÒ¹a½‡¹™ z6ï §ßÞ4åݽ¥]¯*Íܽk³¤¤DIA"Ž£ƒnmÉN�©.c»¯Z>Z{Tsc &÷iCî7=/Å©­ÌE ¾‡‰ã¾ÊÅÚʲíQdù°Ç�š^TþÓTóö¦_Ó t·Z„«‚ÜŒ\NÚøqf +‚8èná¡Í/k€8DÅ€8ˆC~ï%Îì™ÝZjÚ%­�âUƪÿm‡ÀDÕáý›œ�qvl]ÝâDÕáý[œ�lÛ?QuøÀ6g§IÄDÕÖ�«ˆ ãßû£'ªÜ–/�� æ$`âìØ¶OT±Ò¢ÐŸ;ý ž¨JŒ F7ó³ˆQb–jø°Áýy07ëï‰xDáÙ%!ö1&ÎΟ7¶6Qµ|éÂY3§!Ö4ÖIK÷õ½ìÙÚZœÒ"6&ÎÎ훉)ª·7¹óS™‰ènY™Éx~*)!Ý,Ìcaâìܱ&ª ˆºq(‡ü:|çÄ; â0¬ÇmZ·�\òüM[k„¸X/üûØØH‡ ÎÙ“û â\òúýÝ»é¶MœKç�jkiˆ‹‹½½¿AœNL�ߎ55øèåÆèi ôGûß¿ŒYƒˆsîïßðy�ß5QQQb-NCuºTØ}LœÇÄaØLؼÑ=$ð–°o];�‰ãyæÏÖˆ“œѳçweE™^g�ËËɾl(yï(ŽçÙ¿ø‰Ã»É%NPÀ=ôš‰µ8�õeè5DGcâxž= Ä� êÄ¡@@òëpâ¬_³D`§€�èëýgUQ|Smú¡½ ô´âœ;u§ +Š{·KǪŠšê2íÝÄ»[«Ä)à<åÝÿ¯ª’ä¦zΡ}[з0qÐ͉–c';Ðû)È�:¾ÿãFq.GÄñ<ý;ÿ(‡Óâ(Άµ+Fq²3ã»wï^V”.¼ÜÇëì1‚8úz£–››Ø·ÃÄØpíš•ï]nŒLãuî?qx7ÿÅÉÎJmqÇëÜ) Q7 â�_‡§o©Àû^UEqûv­• ‰q"Ù)�"""þw½Ê“Ã|Tú+¶Hvj÷n÷Î7T¤†^UQVl›8ìÔPîýï_l¨L ¼Æ½ÿ[âlÛ¼zøÐAµei�}ÐkHŒñû¸µ8­±f¬©‘-cb~ö›µ8tk b-Nß>½ƒünT—±÷íÙ*!AÃkqìmÐý™É‘õU9Ñá�ÐÍÆÚaâØM¢¯Z±ìÕó‚8>ÿ–“•Aï4#-öSˆƒ³±&¶¶tļdž>‘X‹Ä� JÄ¡@@òëpâ¬u_dl¤CÓÒüðÎAÜ‘—“éÑã[C}íËç¶Htì۵¹Ìo›8èØ÷ˆ7÷7½Âe&Žÿ}oÄš¤X?|EÕö­ƨז1;–89 Ó§9ÈH÷••‘žõ½SIA*AœukÜŒÇÐhâH!·ðÈMMy–ÇêåjUÅÅÅ õun\õjq'4øÞ°¡ƒEEE t1q^6+ÈË�7¶íÏÅ9ó÷Ÿï%ÂÍtg'iYY™fM/+Îâ@З‡qȯc?ݘG–}_óUšÜµ5G;ðÓ�ëŠúöíã}þ|º1‚Z ˆC�€8äÄéÊÄyý²üàþJŠýÞ.4âq ¨…€8ˆC~@œ®Lœž=¿S�—»wû2ìQÄ� 6âP ùQbN ¶áâ@ùq(‡ü€8@ Q= â�ˆÄ� ªÄ¡@@òûìÄÉgGtëÖ­8çi;‰ó);�è�>ñç> ‚¾°€8èË&Ξ={6mÚÔÆJJJ¦M›Ö·o_•_ýQ^^~ÿþýÒÒÒÂ7333'L˜ !!1lذ˗/·ø�mÛ¶¡¯ §]²dIcc£ÀíRÄ1ÐÓ:qô—.Hî�âq ¨kÄ¡@_3qþý÷ß1cƸººVUU1™ÌÁƒß½{÷<¯ ¯çääà»ñß|ýúõðáÃúé§šššˆ‹‹ÇÇÇ Ü'66¶_¿~, ÝçäÉ“�=ø¹ûÑdŽâØÙNøáûÉÄ1k´lñœNÅÑ­yúäá!ŽÕÄñøƒûh4ñ1†úAþ·È$Ž®Žö™ÓÇßKk« 3è÷è.‚ºT@ ô5'!!¡wïÞH-øæŸþ9wîÜÿñ¼‚øBÜ�ÿæÓ§OÑCšššðÍùóç{xxÜ'11qÀ€ÅÅÅ­ý\êçöµ3½zõ,/L ˆÃL ‰�~@!â¬p]ŒXS]ÆqYö£¤¤Dq>³ gå Å� ®‡}‘ı´´ÞeÚÐÐPàn·nq7£F†èÞ½;ú=�Î-,,þÇóJRRq7þ›7oÞ9r$ñ­�;wΘ1Cø!žžžfffÆÆÆèÏŸ?ø¹�± §™©>M\ì™C ëqè� ·£ª¢´}óʦÚ7ÖÉc…£oIÐć Uÿýж'ªÖãß>¶ÿö-îMo¡CçU[EYñÈÁmqÜW.22ÔA'5¥©nËç£ïJIJ0èYÌHaâå<›áì +#-'+={ÖÔ²Âd웪¦ÛòT•{KI.Z0«¶œÅ?Qå<ÕžøK4Ð×ùó÷½ÃÜ0“¹ŽfeÄ g÷ÎMêjÚ :ê«òЛånìðªBKSc̼;fÆ4š¸÷ùSÅ3¦;ÉÊÊÈÉÊÌþazyqÆ�–æÈõkW›šIHÐFkk††<ÄÄ©­*ts]ª¢Ü_JJ’Á°æ°S0nÐý7¬÷073EOûÎ�zÇþ<2RcAœ f"z#Ùì´6ˆ£¥9jㆵæfci4š÷E/-MMîMsÞMo¯’âüïgLç¾f9Ù9³¨(/ÆÄÑÒBw[onn†îÄ� Ž ˆC�¾Hâµ=Н¨¨øï¿ÿ |y%99¹Å›mŒâð?W__ïää´~ýz�¯w8qäeBý½_V§C8è<&솺šª×郘8¦ÆzS¬ 9QIº:#ÛX‹ó²&#&ü6÷±g ¯Åùyóê‘C1qžW±deúžþë:w´·¦[�ËL «*Iq_±H[K£©>[€8fc�l¬-òØ1ÙÑãÌ�Ñ9&Ž�íDcƒ¤¸ Šâ´ãG÷ݺvN`-ÿ(NMy¦¤¤DhÐmL÷•K­­Æ �â|qäåÂBî75–ò67±¡OÌÏIÍÉJgnŠÎ âôéÓ;ÈÿNuEÞž_¶¡WRR˜‰ˆãè0‰NŸÈf%VW仯vEúi~Y�‰£  ê�n ŒâÔU— ‡‡=öÇÄñX½‚n=±íQDî³…7¿jø÷õ DÞÍ�æ¦çÿþóY‡aC/ÈÏÎÍÉ?Î�ÄQPP{ÜÜôˆA‡}ÍÄù矌ŒŒV¯^]ZZZ^^~úôé£G�þ¯Mâ¼~ýzذak×®­©©yøð¡˜˜X\\œÀ}nݺµwïÞÂÂÂêêê)S¦¬X±Bàç¾—8³g:�B¡6¬YÒ"qvlYÙâDÕáý›œ�è$#Ñ=ùOT=ºãùÞ寇luv²&Nnf”¨è7Á×k.zþÑ[J²¶,-;# =aû ž¥jªçHJО>â'+%݇�‰'ªcÐÍ|N'#�¤'‡·±ÜX`¢jùÒù³¾wB¾y^“+Ý·ÏUŸÓ7Qåæ²HB‚V”—†‰³sûFû§{T=¯ÉEºèuœäO7æ’åì_øéÆ/*úöíã}á|º1Q+ â�ç‰ÓÜXx`ßÏJŠ ¼…Æ&Î?MuìVRR$q ˆ*q(‡ü€8ŸHœž=¿S�—»{ó"ù{Tu,qzöì©  ïÎuØ£ ‚(‡qȈ;�Ã6œDõ€8ˆÓIy{ýuhϦN¦ð·€8@ Q= âtR5ÕUžÿ>Õv̺U bŸ†óoÄâq ˆêq(§SkjzõàÎÕ…3è@'èæÿ€8@ Q? â�пÿþû4|ݪSmÇxþýûáÍ“�8Äyû)8@ Q# Z·jRdŒÇG\î¨�þû¼Ä±š`Ö­[·G÷¸IxúïÕ6qtF�:}âWÒFqˆ­©h4ñ1†zAþ·È$ÎÛ­©ÞCáOüó{tˆA]3 qûèQJgÔÈa£µGÄYºèô•.HÞ‡—U—e¹,[())QœÏì‚ÄYé¶Fq ˆq ¯½O\‹ÓÎ Öy,6£+ÁÝR`Äc?oLôõõk–š™ÐÄÅ.œùµ0+rÆ´I²2}åd¥gÏt,Í‹Á²á=|©É½7÷¿Œ‰S]šìºl®Š²¢”¤ƒ>ž�Še£9jøúŸ–›™rŸöÜïˆ8ëÖ,Gw‹z| ù¦¦4µ·”ä‡wÄ)ʉŸáì +#Íû¹NeIÈ7ÎSíˆ� ýÑUE¹ 3œy‘™=kjYa*&ަæˆMëW�37‘�  ¬öàŽ�0q~Ü·A�8訯ʹqÕ áFKScúUæfÆ4š¸÷ùSÅé3¦O‘•åý覗³1q´4G®_»ÚÔÄýèÑÚš¡!1nj« Ü\—¨(÷—’’d0¬9ìdLîn�ë=ÌÍLÑÓò�ÊèûóðH�„o2˜ è¯8›�Öq´4GmܰÖÜl,�Fó¾è©¥©ÉwÓ«¤8ÿûÓeeeäädçÌžUQ^DìÛ°qÃ:ss3t7 ux@èë­C®¨j'qúô– ¸çYY»{»‡¤­ˆ‰‰£ /êïó²Ý3YÇÆÚ<—Îa>gf„Î âôé-pÿBeQÂî?qžýÇÑÞŠnež™RYœ¸zÅ�H?¯êؘ8 ò²¡�¾/kÙxgÃZ×[=æÌrBÄ9zd×$Æ„[¾§ â˜�E?k|û)wëM3ck‹Gqø‰Ã{ˆE^V|6+fœ9ï!o‰£¢¬v¯®2kÇÏë‘Bš‹>�8 òra!÷›KÿyU�¬cCŸ�Ÿ“‚wß´¡O$ˆÓ§Oï ÿÛÕå¹{~Ù&))ÁÛ}³ÚÑa�>�ÍJ¬®Èw_íŠôÓüòÿí� PSWÇÅÆ)B‚ :­kÝV­­ÊC�—HH·* ÔÝé¶–Vê Q´ÚÚ‚µ‹ºÛ±¶ø@…`k­ÕZmE O+òRBoPQ¢bwfO8z7“\‚­ñqñÿ›3Î=xÎÉåÎ0ùÍ÷}÷œfª8öY':o6ëEqZ¯Õ“éY)Tq–-]$ö›j<ŠC‡¬–�%¿s»­ë¤*Ç®nÚ�ÛdäM//‰¸¦Z­©,÷ñö"׌ât K¿ÓyŠ€É�‧—ÙgÞÜ€>l¬Ší.ŠÃ$ª†ºusUœ¨�—Е¢ø$™^^’FST…g~%Ý*eÅaUÚé_­S—e“2 +Eu»UIÔ§àÌ1ª8DhtUDqjÕy¬M5…£^~ôg£8Š YÚÏ-=EUEgSH·Z•gDq%9Ú)si~ª(/U;¥¢€*ÎÆ˜µ4Qu¹¾L{‡ª‚?‘¨Z6_@L®ª”*Nô§Ñ䔲ìYS¥È§‰ª¢|íC¨Ñ”2Q&Q5bø+Ûb¿Ô¨K´÷¦¹H#7Dnˆ»æçPʼnþìãîUa¼÷VH0= ÊÖÖæÀþ½ÝÕâ45TQʼnŽZ«sÞ¸ctÔ§4KU®(%Ã*T—hŠª¸Hû+ÔÖh¨âDG†D (,˜<г}K4£8þ~Þ«#Pʼn߱�*NjÒï¦ §íòyòE˜“~�*sÒ8iþ~>«#?LKþÞP°í�£Š÷o=Å!A³§½9C2ô¥ÁäšQùñx<S‹Ó~UIÖ9�qĈâÈ“h§Ü+Áio®ÐNÉ•›ÑŽ#WE.ñòp#ËêFe\œÇÅnÙôÚȌ┕œ%¿BYhDq´Çs® ÷òt'«íývWWwÙ½îîúšòà Y"‘ÐÎNô÷ys®4j¨âŒvõÑÊ/ωdŽÅ€“+ŽõsV'�Ê®Öæ­ÿl™•€O�áôœè,ñõÒ\ʪ(M÷öt!×ÄoJ NôëÇËHÙ×vù|¶üÇðÅïÖâèEqtÇs¢‹ÄÏ[£<]QvŠ�ÄχQœ_x:ãpëå‹Qk#ˆÝi×äü Åq°·Ë’¾ÝF×בˆ'WU¨•yÞ^îäšQëç¤&ÿÔܨ\¿n�•• ¾º„(ÎŒ±ßäò²³×šÊ×|ðú˜Qw:¨âh—MOê¼Ñ Åi¹ª!Ó3ÓŽRÅ _æç;Ùx‡8�ƒƒ]VFrçÍ«ôh*û®.ÓB$F"ñ­Ö”i*J}¼=ý%¾Œâ�aÙ™'ïܺÅ€£@q`¡GÅ™77 «"B»‹â0‰ªáÆnÝ¥(N!ãË/ÈiŠª0÷WÒ­RžR^�[Zô/ÈýÕH¹qwŠ£8Ÿ®]³$“&ª KÖ®Y~†*ÎÆ/ÖÐÕåÚ"òs�òÌŸHT-\ðO�€_[Y@'jm$ÍR)Jr´]v†f©Šòä¤[­.d¢8LŠjÄð—·~½Q£*èPD³Tw:ꉻæePʼnþtUw‰ªï¿2w6¹èh­³µµ9ðƒ¬»ZœÆºrª8ÑŸ­aòS:Ýå%ísP)ÏÓDUqa.éÖV)¨âDG}‚DœŠ &�âlßÍ(Ž¿Ÿ÷êÈ©I{x¼g˜*œ¶¦bòýš“~€˜Í¡ýÛ|§x�ùÇ[3ÏåürÿŠ“zü{íš÷jqÚ®”u­ù3UÙ®/©â´_½¤=¼8ã�–wiþzJҴܘ(NÂÎÍTqäÉx<SˆÓ~MMÆŸÎJ¢Š³=v£8þ’)kV…§§6ÄÃ÷PÅ‘íþ¦;Å9_xÊÜüÙ¦:EbüV{;Ñ­ö†£8²ømºŠs¯Û"?y”Ü3S‹ÓÑÖDî!7'�*Ž,~NÅ€“+ÎʈPÖ(Žª4M/ŠÃÔßn)KˆÛd%à·4ë)ÎøqŽF¢8ª‹Ù¬QœQ&Q¥ûÒ8QÙ®¯t£8г¬QœU+ëEqÔÊü¾}û6Õ•–ÅIŒ�eÇiüëzåÆ^žnc¢ÜÝ\VD,î±ÜX{vUÂv]Ź׽ÅQ«JX£8‰ qP8 L®86ÖR“›ëÎŬ[!à[ÒZw'©Ø§J‘MkqÄS=‰Ù;¹,´¬(¥ýÊâ1ýúñ®5é)Î4ÿÉ‹?|ûæu…a-އ»³T2©ª<—Öâˆ}½™Zœç~jqºSÒ<&ºJý§V«ïÖâˆý&1µ86ÖÏÉOºÖTóÅ'ŸÖâL—�ñÏç´5Wæf'“nGK�¡âL{C¼dÑû·o40гï»�v"¡™™Ù¥Ò¼QÒ<=Ü¥Rq�æ­Å‘ˆ§2µ8P¸L®8+Â绹Žå[ZŒv‘vü[ΩVž š%ÚZ‹„6!AÓëÕ¹Dqn\-ù"z9Q�þýÍÉÄßÇ&ª2R~öÊPïÃ7ªªUg‚fM»»fðŒzMþ#SœšÊ ÙB[‘Ð6dÎ̆šFq"#ºMpæó-‰a¤ŸÏCq 8°Å€(Ϋ8ææÏ:ØÛ=²gTAq0žÀc8¹«88†ŠÀcŠ P(®Å€(Š×�âÀŠÅ€ë@q`�|=œ=¹•ü‹†ÆÅv:õ»X(xê�âÀB,¢8ˆâ ŠÇ�âÀŠÅ€ë@q`ŠÅ�âÀu 8°Å�â@qà:PX€â@q 8p(,@q 8P¸ 8P(\Š P(®Å€…ǾuÚƒ7(xÊ�â`Œ+ •ä{ �£íqÿð8�â Å@/Š€^½(z!PôB 8è…@qÐ �â Å@/äŽt溇×êÖIEND®B`‚astropy-pyvo-f0fdda3/docs/mivot/_images/mangoProperties.png000066400000000000000000003155171521254414300243520ustar00rootroot00000000000000‰PNG  IHDR™UIö›IDATxœì� \MÙÀ“¢}±¤…ŠŠTZ$KȮҠìÄß3ö-ëØ‡ÁŒuhBˆÊ6²Œ½P¶6íû¦´§}ßîÿ÷:¹®÷*‰W½ú}?¿Ïûœ{îú^ç�û}§sÏá£AA„7ákî @AA�F‚.‹ ‚ ‚ð*貂 ‚ ¯‚.‹ ‚ ‚ð*貂 ‚ ¯‚.‹ ‚ ‚ð*貂 ‚ ¯‚.‹ ‚ ‚ð*貂 ‚ ¯‚.‹ ‚ ‚ð*貂 ‚ ¯òm.Ë÷CáÒ[BAAÚßì²Tt›HÅ%QñÉTB •˜J%¥QÉéTJ&•ö‘JÏ¢2³©�9Tv.•“OåPù…TAUTL—R¥eTY9U^AUV6Üeˆûúûû“www’£©©IoVUU¥¤¤DòCCCÙvWQQ)//‡EoooX”””¤7ðôôœ|ø`ffƼŒ–‰¾¾>\ä�;wšûBAA¸ϸ¬¬¬¬��Pfff|||ûöíåääØ\vÑ¢E�£§§¯JJJtë)Ù½]»vŠŠŠ¥¥¥L—y…,:::rž÷ãÇ�°öÁƒ$')) N 9oÞ¼aÛ˜äà˜p1ÅÅÅœ«àb çýû÷3g΄·[yxx|õ ³gÏ–———’’255�ˆˆ¨õà}úôaöâØ¿ÿôéÓ!qìØ1²ýœ9s`ñèÑ£ üðAAZ2<ã²»ví‚×}ûömذ»wïfºlII H丹¹IKKCâÙ³gÌÝÁáõĉL—½}û6q>�ZÎóÞºu‹¬¥…ÐÐЀœßÿ�mcâ”óæÍËÊÊ‚WHÓ�»d•……Evv6,©¨¨€[?|ø066Œ¶C‡ÁÁÁõ. wïÞüüü�=‹…w {åääpœâh—…³ŇtYYì §3nà‡� ‚ Ò’á—õððÐÒÒ‚4¨ê°aÃÀÕ˜.{ýúuX”‘‘©¬¬$¸hÑ"æîOŸ>URR|ñâí²gÏž…´��ÙÒÚÚšÈkÇŽéµÂÂÂÌ‹>|8d®\¹’í"™íµðJ’™«À¡É¢‹‹ ,êêê’ÅU«VѬë 7nÜ€´¡¡!ÙeÖ¬Y°xæÌ΃S.[UU¥¬¬ 9���Äk‡ ÒÀOAA¤…ÃK.{úôiâšÎÎÎl.knn‹VVVÔ'ó[-))aîNÜ”ˆ`]í²AAA´ËÖÓ.»{÷n¶‹$N ix%;’§ÍȪÄÄD²åáÇaqüøñdñ�?þ€ÅI“&ÕsÒm— ÒdËvpª¶þ²¤ L}É’%�€£5ð“GAiáðÀ˜\´ŒuêÔ©{÷î wL—ÍÊÊêСçñ¯]»ÆÜöRSSk×®£¿¬„„,^¼x‘œ‹é²�è/[O»,­›�n—522âüp8]vÀ€l. kùùùáPrrrØÁAA�Ö òJË(3“é²§N�‚ôÈ‘#éµýõß§ÆNæîà¬Dséq .\¸z'##,((¸ÿ>í²ÀÁƒùªÇ1 ‘%ãÌŸ?Ÿó"9»ºnذ�¹ŠÖÍÂÂÂ^½z1ûË ‚C×s�xÒ_<.Ò××wÑ¢EžžžœLLL ‡9¬`jjJÞøàÁƒý‡@Aii´—%}X8@¯%Í«àˆ™™™ÌÝ+++µ´´ø¾_ÖÝÝTOZZZ@@ sçÎ:::K—.¥×:;;ŠŠŠ‚àöë×ïèÑ£p΋dŽ' !!±páBPæ*¦nÆÅÅMŸ>]VV¶6lý˜Z=IHH°´´„÷"&&6hÐ {{ûZ;0nnnªªª$Ôœd’Æ`>ì`€ ‚ Hë‚\–'àtÊæ:H­”––‚©cAAZ貂 ‚ ¯‚.‹ ‚ ‚ð*貂 ‚ ¯‚.‹ ‚ ‚ð*è²-æC`Ìtrròرcɨ·Ë—/‡W…æ¾XA�”””È4„t‚X[[oÚ´é[÷âê%!ÒŒð€Ë’Aµ’ãîîNrèy¿¨êÉZ¡ª"ù¡¡¡l»«¨¨�A¬ .c“ËÓÓsòäÉ]»v�––ÖÖÖfÎêââ2lØ0111!!!² NÄí·\—Ë®Y³Ò«V­‚´‡‡º,‚ -Š&vÙñãÇoß¾�¹êÖ­[ݺu#µ}]׆ H+ƒ—\váÂ…$Ç‚ÓeŸ={FκeËÎÝíìì(—urrâççïÒ¥ 8knnnLLŒ�� ™ “Çjhh„„„|øð�Ì•@_÷¨kp.r¶¶¶Ü¾A�FÐÄ.{ùòeeeefûÂÔ©S×­[Wÿµ!ÒÊà™9leee…„„233ãããAõäääØ\vÑ¢E�£§§¯PgѵÙ½]»vŠŠŠ¥¥¥L—y…,:::rž÷›æ°õõõíß¿?h1ýî–/_ùÙÙÙd±  W¯^ iú¿cݺu#k!1eÊxk$¿ÖvÙ#Fp~†t»lBBÂìÙ³åå奤¤LMM#""˜‡bÛA¤~öïß¿uëÖz6Ð××竞%qàÀ�P’LN—�ŠŠ;v¬¸¸¸ººú¿ÿþ 9ööö?ýôÙ^EEeúôé$ݽ{÷wïÞA"552;uê•6=½KHHœHBBê·yóæ‘Z´¨¨rž?N¶ÉÊÊ‚ëñ÷÷¯ÿÚ VLII!™P'Óo³ÖóîܹêgÈüõ×_éÉkiQ|³ËV'W§T§V–¤U–¤W–dT–fV–~¬,ͪ,Ë®,Ë©,Ë­*Ï«*ϯ*/¨ª(¬ª(ªª(®ª,©ª,­ª,£ªÊ©ª ªªò[]v×®]ðºoß¾ 6@b÷îÝL—-))‡ƒ777iiiHГi‘ÝgΜ ¯'Nœ`ºìíÛ·‰ä�Ôrž÷Ö­[dmqq1�©¡¡9¿ÿþ;sËÂÂBPmÐåÇ�‡……‘ `sY؆âpYBYY™³³3ä>œäÔÕÇÀØØÒ'Ož¤¾ìcWH&¹}ôèX,|àú999ôîp% üÀA¾ê²Ð;[[[UUÕŠŠ ŠÃe!³oß¾PiCutÿþ}QQQ??¿˜˜¨�+++“““Áá8l™PqAfUUÕ�!CV¬Xb Õ©ššÚÝ»wá8PÅmß¾êêëׯCµF×¢‹-²²²"éS§Néèè|õÚjuÙZÏëããuidd$\¿��ÝÇÜŒ ȃg\ÔMKK Ò`ŠÃ† cÎa @í‹222PÂOvHCÇÜýéÓ§P‘A­ôâÅ ÚeÏž= i!!!²¥µµ5ñNø5O¯f^ ™/wåÊ•ÌÌ›7oBf¿~ýÈâܹs9]–q­.K€Ë ›o¿ÕeoܸiCCCr¨Y³fÁâ™3gèÝñ?k‚| tYBÏž=ÃÃÃ)—õòòC…Ÿëd³ @5KU7Áúúú^¹reñâÅàŽööö'N„Uþþþ° ±OàŸþ™?þÛ·o»téBgš™™Ñµ(Ô„¤Åê@Îiº9¯­V—­õ¼ÊÊÊôÆ‚´LxÉeOŸ>M¼ÐÙÙ™ÍeÍÍÍa‘ü:'b¶ZRRÂÜ�¸)ñ¼ºÚeƒ‚‚h—­§]v÷îÝÌ+´±±�ÌÑ£G“ÅuëÖ5Äe¡ÒܰaT”p:º@dd$õí.Kúõ²Azýro^\AZcÆŒá¬L Ĺ¥­­­ššZ‡È6îîî‡ËB-ª¥¥Eï²gϨ�!aiiyøðá¥K—^¼xªÁS§N�8:tV¹ººÂÑ ââçço×®©ZoÞ¼©««KjWf‹€ŠŠ hqLLŒ  `jjêW¯­V—­õ¼�ïàà`dd– Oþ½† HKƒ—\~ywêÔ ~З——3]6++‹®³˜\»v�¹;쵩¤èþ²ðƒ¡>%çbºlÃûËÖÓ. § “ŸŸ‹sæÌ¡]ÖÉɉ¯ºƒoff&x-Ô°F5¶]*\ÎO]A�FP»lxx¸””ÔÛ·oɯtøMþøñcªÁí²vvv'NÍ…ªéîÝ»³gφ#�ýüüäååÙ†‹�uíÚµÖvY`÷îݦ¦¦»ví‚ü†\›¨¨h\\Ù¬š¼ÍZÏKøÔ©S7oÞüÍŸ#‚ ܇—\–™ÉtYøMé‘#GÒkÿúë/È™4iÛîà¬Ä,éq .\¸v+##,((¸ÿ>í²ÀÁƒùªÇ1 ‘%ÃÌŸ?Ÿí ™ýe¡eö—  †EÐÍàà`Ò©—ÔÂçÎ�# tÃjã\,Ÿô—uqq�wáëë»hÑ"OOO ]ù¶¿OÇh³QOÁ¨ße¡’éܹsDDH©'kuY°Ouuõ�7æää>>zzzœãPÕ}”••I{0�ÔÂ¥¥¥óæÍƒ �Ù–Ü8—¥ªÇ1°´´„E8 ø±½½=a]©Ömæ¹7õ܇/ |YááÇ Ïêxù®&^ù×ÄëV¼�dÅ[A”WuxׄOHMø†²Â�DõŽD8åO"‚ ¨ŽÀÈš‚ˆbE0D4B"† ýa±¬‡ˆcED<+"!Þ³"ª:¢j"&±&b?°""‰ñ$’©÷Õ‘�R‰©5ñ!�I$Ò©dT ‰L*µ:Ò>ÖD:D+2 ²©L9ÔÇO‘•ËŠlˆ^ž«~™i:Bk¬aïQƒTàÒ�ùØL‹|+è²Ò¦áu—í¯¡ÅÏÏÿâ’s¡˜·ËíyæSï>$.«¯ÕnÏwìÎÕeõûi³¶´w@—E¾ N—ÕÓÑ€évß)'ÕïÍóksgMz÷ú6qÙþºšPÌn];ýU—í¯Ç*º®×Ï5ÎeOÚ°F"ë­¦B»ìê•K gâO&ÍÞ.[VVúßmç9æ#ÌFi�¬Ë È�|X ÛÀ–ÍûÇExtYiÓð´Ëf¼ö…pÇr}ƒØúôéÙ‹9jÊþ ›Ad»uéB»ué:ÅdB¼ç[Ù>½T¾ØróoÙÁ$] "»Új1¤7-_I\v§õ†ò ÂBBºzöG�W�Ѣ˶UØ\69–5TbÇŽ2?x±õ1è­Ö“YÌþؽ\¶›Ì§)ÓÅb’qt¨¸loµ/Šî¿oÊL&éÜŒpÙUË­ ½Ñz9qÙ[­{t— ¯{öô1ÐÙÌ”ˆX“ïx¿~"[^”&/' ‹ÎWÎw“éúéŒ]-Ì'ÆF²¹lVF"Ù ?' DvõÊe¬Â¿qqÙ÷qQ³gÍ�——“’’251 &.»sÇö=z  °?w¶ª²‚Óes²³ìO™8FoÂ(m6…åŒ #µaKØöjî?2 Ë"H›†§]¶à]0¹+É+¬™¿ðîiûâ º¿l]í²e‘ñÎÿ°&Xn0¨ÖvYÚe #ãØ\Öý:k’¿ù3fÅ%ú?y6wêô˜·¾è²­›ËާïßZkoN6—ÍNñ&R±‡üªeÿs½v*?ÝŸî/[W»lQvħ°j˜¡A­í²´ËæeF²¹ìÓ‡×!ý¿¹3ò³âüÞ>µœ=-*Ì«²$mò$SÈ·^» \öñ}>֨ꅹɤ]¶¤ íßËçY_�aCêrÙ‚\v—-*ÈêÝ[�ŸŸÿáÃ{áaA ³rr²ÙYénn¬ óçÿ¯¨0Ïÿ�ßܹ–1ÑQl.{çÚ)ãá_UØÖË­¦5}‰mƒ Ë¶P222H…òúõë†ïÕ­[7ØÅÉɉ{†´2xÚe©ðØ]+Ö0±zÈÉÝ}Ô�>B;²nØ¡Qõ¸lqô{6—u½àiÍ>êN6¶OŸW&¥cƒVONv–ÃÙãÓ̆lZ³�­7'gƒí[–Q »Ëú¿¹Ó�>BB¬™“\�ËdE³¹ìÍkøX“Söq°·yçåVV˜Lüºv…5¯dwùŠâô…?[BÚjá<¶g¿Èó²“kuÙ¢ü 6—u¹~Ò†C“³f΀E;»“·n±&Q×ÔÔpr¼àÿ®²¢¬Ö>m³]ÞKs_B›€\VGG‡|µ˜saÿúë¯$s̘1Ü;µ®®.œˆ¤ÃÃÃ.\¨¤¤$(((..®®®¾oß>î�š]–Ìñ‹ƒ‘ñ¼î²Txœß�»[~]¦£Þ—|efÿ4¹V—­ˆŒß°x‰r÷;t U#ÒÝó›\¶8.qüˆ‘ôîÊ=£ßø Ë¶ÊÊJïß¹f5g$HoÎZÇ1ðò¸¾iÝ/ÚZ}H!™5ͬV—-É ·^½XI±{ÇŽŸ dX€Û7¹lAvܸ±#>H¥‘¡oÁe‹r¥¤$!çÑ×IÂíñí²¢ôõëV*+)v¬þ!Gõm Ë>ô'7Xæ�7îó5(+GGEbYºlÓÀK.+))™››KUÏ4($$Äm—MHH€ãß½{ÒOž<æççÿý÷ßSRR’““���7lØÀ¥SS�uÙæ]–i.K�ɵnÁ"(�?�C\v1ÔO.ëtøoXÔÓÔÊô ªˆ~/( ÀR‡§ÏÁehë0]674’|ûòÃcÀeç˜Oácô—…H~|ïâCÈß¶Ö]¶í@Àß´fá4³!g�ÝfQϘ\kVü %ÄÌd$qY}=-¦Ë^8suu4R|Kr#Y2Øï1¸¬~ÿ/\6+5”ÈœôppÙÙ3Íùýe!ãüïܼ8d0«@nݲ–4ÍZ-˜ ‹ª*¬~ºŠ=ºW”d8ž?Éú èj§'G—e ²úÔ†y1]6çc9W^v*¸ìœÙ3ø¾l—5>¬Ög¿’“îݽmh8„õ¥Ø¶Ç1  Ë6 <0‡-qYyyyx=pàõi2’C»lVVÖš5kTUUEDDúöí{øðá ¨ÁGà«‘¤wïÞ‡¢~ôèQÈOíÙ³ç’%KÀ_éU666¢¢¢ÅÅÅ¥¥¥ä\óæÍ«õ ?~ü¸jÕ*85GMM —8wý«HªµµõÈ‘#ÅÄÄΟ? oG\\\[[ûøñãL—­ç:™0Ûe;wî̪׶n522‚ÏDSSóÁƒp1RRRÒÒÒVVVôçCö‚k=z´„„|z®®®ßzýl\8{ÿ¾HóÂÓ.›ã0z°¡«í™Ô—Þ9>AÓŒ'@Ù;úÛâ²&F#añøŽÝÄeÏ`©Ã ]½ ßÀ#Ûv’‚J\ÖdÄ(Ö–»÷Òãt­þúÜ8cìöBJ‚Õ¬E\ÖíÚ� Ë–‡½xUÿa‘%ËþÞ»�§]ö²ÃÉfïSÈ»1ÖPÍïå¿´Ëf$¾e4èÆ›Ä(�ŒÄ·SÍ�¡„>°…¸¬ñØá°xìàvâ²gl÷ÃâÀ:)ï}ØJ $qYãq¬¦Öc‡vÑãtíÂ*�ׯž ô}*%)Á÷ÉeŸ<¸¶~í²`�‚ìx«¬¾Çï%.ëöø]!oÞ¸¦²4óìiÖmeÐ@ý´¤¨Ãÿ «Ø\¶ª<¯kWÖi.×.x“6]â²…ùIÙëׯæç}ôñ~½Èj¡Ç ÷§OmXo\\”¿h«ÍøïcÇxq|Y%%%ooï{LtÙ¦á›]ö÷çÔ~OêÐ+êø[ê¤uÖ�r .Q×B©[áÔ½(êQ åOy&P^IÔ»*8�ŠÈ¤b³©Ä\*µ€úXDå•RÅåÔ·º,8È“¬¬lZZš¤¤d¯^½@éh—-++ë×�õCvË–-999óçÏçãh „Ÿz111 j¬o©‹ äøú²‚ÖÕÕÍÎÎNLL×ZÊoß¾ «àk_PP@}ê™xxxÔ³Šúä‚ýõ9ΣG�ÈZ85,úùùÑ.[Ïu²Áé²G�…´ƒƒ¹’’’X:t(‘fæ^t÷ßÑ£GÃ"|Pßtýº,oÂÓ.‹ó~¡Ë6 ï/Ë‹ó~5ï¶-tYÞ…—\6;;[\\Ò222ÅÅÅL—µ±±á«�   øÁ·ÿ~ æÿÁA×`¯ŠŠŠÙ³gÓ¿>Á}éöÎk×®ñóó§§§S_k—%§–�� ‹¥¥¥dãK—.Õ³ŠâxNëÜ9Öc§"""d1))‰vÙz®“ N—%é+W®ðUw8&›—…�”¹w΋ßtýº,o‚.‹.‹ÔÏ7�c€.ÛÄ. ÷wú^VëÚ©S§Ò‹«V­Z¹r%$ôõõùX#w8p ¯¯/YK»lûöíSRRHæêÕ«é㧦¦NŸ>½S§NŠŠŠGŽ!™;wî„»!dþú믤5� ºlÓÀK. ikkkHïÝ»ÒL—%-ˆÂÂÂeeel»“U ²ÁÁÁP-]ºGŒAoŠüâÅ Ò ­žóæÍ2dÙ€î/;þ|ÎË««ñŽYÏ*ŠÃëi—­ç:Ùø—mx»l­×üôÓOè²<º,º,R? _]ö›\vòäÉäžB�ÔêwÙøøxòÚŠŠ YYYæãÔ ž¶¶¶ªªªäé‘ú]ü¬`ÅŠYYYaaajjjwïÞõññ‘““‹ŒŒ„;²��ÝÇÙ.€Óeñ®¯UÓÀ�Û&<æ²L˜. «¥ÅzDtݺuPj/^¼haaAU¢qPÚ‚‚‚ºvíJ»,”Z+++øMÚÝÝòÅÅÅáPP¬AáBŸ ¨��???h4ü2KKK»qãÆÆ�©jÓ%}p™�Já§é/[×*ŠÃá¼ð�â«­¿l]×ÉùY}�Ë’þ²ÏŸ?€wêïïÿM×,\¸rÌÌÌÊËËøÇEštYtY¤Ñ Ë~»,Üʹç²TõýÎÁÁ�ªn0êÕ«ç={ö §¾æ²pO”’’¢Ÿ™þçŸæÏŸ ¬¬LoÌI]í² |×'Ožˆ×š5k:uêngnnN‘¸,ÊK—. 6 ÔÊèðáÃÁ©O� BBB˜§ ýùçŸEDDÀ;Ió0U=~x|IÀwUTT¬­­AF¿ºŠÓÁ¶G�%&&¦¡¡¥–ÙÇ Öëää{\>=###2t.˜z#®>ðþýû“‘ ���¿þ§EZè²è²H£A—m.—…[?ƒ âܤÓÄÄpß¶m[ÍÎÖVMM­Ã§¡¦É-µ~—uuu…-a???éòG:+‚(íÓÐÐpÏž=………lgÿN—­ªª:sæL¿~ý´´´NŸ>ÝB’k�ðÀ˜\Mx[s_EÓ�³…µeÐeÑe‘Fƒ.ÛòÛeÓÓÓ…„„%%%CCC©ê™�¤¤¤Þ¾}[\\ ‹ÊÊÊ�?¦.+**Gv·´´$Ç÷óó“——¯Ë&óóó§N�ʜщðý.{öìYâ²vvvè²uÑr…²éÝ»÷Úµk›û*štÙ¶ ÜfüœNÀ+F›Š×O/ÙÖayyy3gÎ�;·­­íW‹ÐéõØiÈû‚ÏÐûÉ©fÿk¶ä¨§¤¸í²€‰‰ÉرcuuuÉ¢¯¯oçÎ�#""@@<b6—ûõUÐe¤Mƒ.‹.ˤ¬¬LTTôùóçdѪš†$tYtÙfqÙÎqYä« Ë"H›]]–Idd$=Ë̉'Ü�‚ÔZïÍè²è²ßCÃ]ÖØØ˜nf¦‘†€.‹ mtYtY&ddkúGGGMM͆¤Öj$è²ÜsYÐ5æãàuÍÄs\q<�“�EÒ´ËBÎeÇSTÝï]ö{@—E�6 º,º,l—e]¶…ÏûÕ9´ï7'{’¦]r ¿ù.ª•Ãó.ÛŸ[já—‡ è²è²LÊÊÊDDD°¿,ÍW]£!Ѧ\6>6jšÙ�òêùŒˆËBrj�:ù!ð€Ë’¹ÂÂÂêêê{÷î---%k'‹fff|_ζJŸE@@@ZZZ__×®]Ìybé ˜ÈAG2é)Øh^—å|›ÂFÛqÙAºzgöý….ûÕq @^kÇ þÿ�¶M—¥ÉL�‡£žh‚?VËaãêŸÞcM9D\Ò�ÓÜÕšá—µ´´¤ª‡8–••…Å5kÖ�µ?Öeá,eeeAAAddÁ^½z%%%17૞=‹ü.55UHH¨~—m^Z“Ë®Y2*ŒKç m Ë¦Ü~ÒžŸ¿.«ßWóü®?¾ê²úšç÷hÞvYý~Úçkã.›——7cÆ aaa999æø²u¹lkíõØZßÒx½~ñó,㪪*¨cáÒ�ÓÜÕšá�y¿˜. ,Y²ÁhÉ"qÙÍ›7�?^BB¢G�vvvdÕÇ�W­Z¥ªª •²ššÚ† ˆƒjjj2/£sçΜg)//‡] gúôéÌË�——‡×@TmtNCÚeɤ²P?‰ˆˆÀe}ú$$$\ºt‰¯zºäÔÔÔÒÒRâ¬Û·oÏÉÉY±b¤\ µy½í²th"ätìØ±¬º× ÙLÎgOKK“””ìÕ«q놻¬žž^zz:¹àСCpµ]ºt�ôÅ‹™{�ªÂ›zö와€¼©ÀÀÀúßÙ«gÏžAAAä8­©]]–KüX—ýÛz³²œ¼ˆ�Ð0Ýþ¾NÎ ²3Ç›Ò?¨iiƒËš évíÚ)Ë+ìY¾º ¤Ö?b¦ñ„Ï›õÓ—U�éöøŒqÙD7OÈÏ~ó,öïßv(+t¦?À÷ÆmN—Ýo½IEQ©þ>:}5¶­X=jˆ¡¸¨Xïž½:]‘�9qÒçkÐë"›³jábEIq ³1ãâßú—ýàh:zŒ¸˜X_µÞÇÿØÛg„E‚ÈæÇ&¬Zü‹b÷î’fãÆÇû—ÕÑÔúm­õˆ¡CÅDEÑe¤-@úÀ�‹îo€psÙˆˆˆZû€B:++‹Ü‡^½zuûömr¿,((€U …d•‡‡Õ0—=zô(Ù´•Þ`ëÖ­üñQRxµµµ…ƒ|“ËÂa!íàà@.¯¤¤‡ ‹;vì`îµoß>²8zôhX\½zuýoŠìÅœÚ]ù*?Ðe#®Ýð<ãXüÒ÷µý¥õs®§]¶Â7ØïÊ ÕŠ—öªµ]¶V—�øï ë�‹ýÃ^_uY¿pq£]VQ^áí­{…aÑ{×o’éÜ¥*>‰³]ÖÂd‚é¨1±¯¼sã­]ª§Õ¯òC*¸ìPƒ�³Ì-ÒƒÃcÞøÔëO»¬Å3Ó1cc}Þ导·^¶\¯ŸveúGâ²²2Ý^ÞX‹è²Ò Ï{Á�‹~ á<ã²!!¡>}úìÙ³§Ög¿òóói·³±±�„„„Ù ¶'«.]ºD}G»,¸lvv¶¸¸8¤eddŠ‹‹¿ÕeIúÊ•+|Õ]oÉfÄeéþgd/{{{²8{ölX´°°¨ÿMqvF—E¾ÊW]v¾éD¾ÚØúób6—�½ù@TX8ðò�†÷1ø{ãÖ™Æî²±�ž‰ ‹Þúï;Ÿý—=¼u'éc� ÿðÖ�Íe½ÞA~’oécP™˜"!.øôyÔ«·,y ‰ } ž^¿I\6ñ]kûÀÒÇ 2-“µý‹—Äe÷n݆} ¤Mádow.z|.„{ðŒË2-“I].[W&y&÷§Ÿ~ªßeËËËUUUù8úËÝ´¶¶†ôÞ½{©ê§\¹ä² o—%oŠÓe9ß&ï‚.Ë%~lƒÛ‡OªßWcÁD ÿË.µº¬óŸGõÔû‚õ’Ò;T·Ã]– �¹ý��ñ0#}M­S¦ùߺ×h—u:zœ¸lqD,<êù+6—}áâÊi𷜞¹ÜbuøÔ_6ÎÛ�¸ì ×»µlé qYÇ“§Ðe¤š}à°G·YŒ5Tƒ×f¿^�¯žVë²¥¥¥}ûöåû²kéÀ�I×Ò… ¢™™8+ÛY '88˜ÇàÇÌ 8§âàžË’þ²ÏŸ?àçç÷÷÷¯ÿMqº,çÛä]Ðe¹„-žýª|èôû Q±BO_pY -ÚeS{´çoóˆMž§O•_ØÑ [X½c«]Ö@³ÓeU•nŸ8M\Ö÷š+í²$*C¢�þ<"!&Vèú]Ö@G—vÙ÷o|á{—ÎöìW]í²ïýXÛGDq>û.ëtò4º,‚Ôƒ-kâ‰Àš¹'Øg  '¡ø<Å—R0§¥ørrŠÏóS0g©`ÌUñÅŒlóVÔL]ñåÌi,“Y°OiÁšÕÂÿͽ/æ¶øb† æ<Ÿg»à˜ó‚žö‚1ùÅS`0'Âør:ŒÏ3b0çÅø<;Æ—sd°Í”ñi²Œ/¦Ì`NœÁ˜>ƒ} z�ϳi|9§sf�/ç×ø4ÅÆ§ Ú´ËÂbFFØø¨���ŠŠŠµµuvv6Ù lµÿþ;v„����)FO¸IIIéêêîØ±ƒs|Ù¦tÙõë׉‹‹«««ß¸QÓs¼ž7Å鲜o“wA—å?Ðe�°Ûòó¢(—{%/ý.ìüCP@ ÿ…7¸ì$£Qk-ç—ƒæú…ÆÝ}Ü®];7» %o^9\U”•£]vÒÈÑkç-(F\vÚx‹1ã³_ûÆ?z>vÈPâ²�Î:lùeiÔ·’€ð û²NáÒ¸þ²µºì¤qÆkýR›HúËš›þ4v\Ä‹W…Ññ^÷š›˜–Ä�¢oPkYsÓ ?�7Žxí]ø>ÉëÑSó f%É©è²ÒZ¥Ë2]¶%¹ì¤‘å½ €³…q‚.Ë%~ Ë–zúý¹r­jEáŽuÔúÜ<ø7écàyr/�öíÉ8×lèÖ¹sAÁÁýtÖXΧ]ÖÓáŠzÏêͪÇ1ˆ¹ï6¼ÿ!a-µÞ¶Ûw—- ÿÓz“ª¢’°��Žzß›6§ýìW­.ëyã¶ºŠª€€Ç /,zý’e½•DED ç–½#Ç ÁÇßdÔhq11uUµƒ;X×–.›ó~ý²½””YÛëëßr¼„í²Ò@ÐeÑeërÙ´¤èú  eK]–tY.Ñp—åõy¿¸4‡í½KW¥%¥p|YùNÐeÑeërÙ¯ÖTè²-tYNÐe¹ºl#\öê©3×ϞϋŠóò\K½ïÒŸ Ë"Èw‚.û]¶}ûö`ïcƒÑe¤�.Ë%Ðeá²™!3'›KKJu—“_µè—¢ø­Ïe“?$4e9D�–é²Ñ!“Lºvé$ Ð^JRBKS="èy»ì0ÃA ¦;¶m ]ö�ç#ÈLOŽD—¥Ðe^]–K Ë~gƒÖ7‡myyùeÇS&FšM_‘¶LËtY=]-~~~÷Gιé¡o=nÏ�=ÅßëqÙþzýÀ]¯ÛÕeûëi³¶tqhœËž´9»÷VS¡]võJÖ¨2ÁvYº, Ër tYtY&Á�¾Vs&lZ½¿qHÓ]6å½/kʤS‚ØúôQëÅ|–ý�ß7ƒÈv“éB!a1Ù4&ü ˆlŸÞ*_n¹%35œ¤s3£AaW­X é�Ö+ˆÅîØº¾Gwyaa!ƒºçìŽANfJd‡`ï×O@dË‹ÒäåX :_±ï&ÓõÓ»Z˜ÿåÏæ²ÓãÉyÙI °«V.a�kÃb±ñ±¡³fN“——“’’45ê‡.‹ \ï¬\]]–�Ÿ—{äÏíÓ̆¸=¾Ká7irZ Ëæ¤)TRTXµ|ámû‚�tÙºÚe‹sã®^< «† Tk»,í²ycØ\öéÃ�þßÜÙïý¼Ü,gO‹ óª,IŸ<Éò­×.—}|ß…�5¦§Dani”-)Hù÷²=d6¤.—ÍÏIfsÙ¼´ÞjªüüüﻂłÎÊÉÉfg&¡Ë"·À;+—@—E—À_ÁbÁeÁhI~ã�&¦º,ÄŽßÖ0[U{t— ð~Ø�>BB¬‘Ýs3"ëqÙ‚ì86—½yÍÒ}ÏÿóÎÛ½¼(…<ûuí KU»+ÈW§/üÙÒV æ²=ûEΘ—•X«Ë楲¹¬Ëµ‹�62ˆô.˜5s,Ú�¶A—En�wV.Õ„ŸÓ‰fŸ¢£‰ãõÓK¶Õwˆä¤ÄM«XÍ™èÇ,ø�CšÛé²åqÞ/ïnZ¿L»__"…³fLªÕeKóâÖ¯Y¢¬Ô½cÇ´û†z|“Ëd¿7v$½»²R�Èзà²E¹¤¤$!çÑ×IÂí±kYQÚúu+”•™g ñn Ë>¸��ƒ�ë× Ë"·À;+—°ÅvÙ6Ü.ëñøªéˆ~‹,ÍJKKØ |ã0ZN,³šÖ,õCSÒb]–޵«�í™™Ž!.«ß_›é²çŽÁ¢®ŽVÚ‡ÀÒüxAAX ~÷ \¶fËO.›•AÄ1'# \vöÌ)|Œþ²‰qwo]2lù[·¬%£qY-˜ ‹ª*=áU±G÷ŠâtÇó¬ž zºýÒ“#ËŠÒa1$ð Óe³3ȹr³>€ËΞ5�­]ÖhøP|ö AšˆQè²Ü]¶-»,¶Ëò máÏÑ]639`ÔÃÿžùë�™8ÕbÈßá?w—5Çj@=vh7qÙ3'Y£ 4ÐKM 8ôçb�Äek¶<¼‡Ç kÖœö×ÿ=èûLJR‚vÙ'\Ö¯]ìïY˜“`µÀ²z¯½ÄeÝߢ[O7o\SY’qöôß�4P?-)âðÁ½d›ËV–ewíÊz"ÍåšS ÿÒ¦K\¶ 7•ô—½î|1?'ÕÇËcÑÂùÏ£Ë"·h Uy³€.ÛÆ]–ì/ÛÂi Žè²y¡&ãG*)*ˆˆ uTSí¹kûº²üXâ²Oî_UUQ&Öxï–cQvÌÜÙSÄÄD™ÿ²'.ûä¾óç-]/‚ËÞp>¯¬Ô£]»vŸÿ¹_í²Åy‰'ŽÐÖÖ„ÓÉËÉ._jUœ÷�¸lEqš’bw²qÐ;OpÙâüä¹–3ØÎÈé²7].)+)~q.Æ8sfÏPP�‡ƒ 8àÜYÛ²âltYám¡*oÐeÑe 8ŽAK¦-ü9Z Ëòî¼_8‡-‚´DÚBUÞ, Ë¢Ë2Áñe[&máÏ�.‹.‹.‹´rÚBUÞ, Ë¢Ë²�ó~µ@ÚBˆ.‹.‹.‹´rÚBUÞ, Ë¢ËÖJò‡„¦,‡Hý´… ]]]iå´…ª¼Y@—E—EZ>m¡D—E—E—EZ9m¡*oš}Ð~Œf tY^¡-T€¶è²è²è²Hë¦-TåÍKfj<Ôm-š»Ü! ¢-T€ ,ÞON6û<Œô …õtY„7h U9‚ H­´… ÐÛe±]Ûe‘ÖM[¨ÊAj¥-T€è²è²è²H+§-Tå‚ µÒ*@tYtYtY¤•Óªòf¡Ù»Ca4c4wéãyšì/µjþðf/-Ü.i¶è²è²è²Hë]–KØâ˜\mxL®æ.}?•LºL²ŠbÑ碅�.�tÁû\äX… ]]]AX Ër tYtY¤Ñ Ë¶—h {Úfº,º,‚ptY.�.Û–]6-)º¹ oƒ.Û@—mHIkÝ.;Ð@ï´íAtYtY¤Mƒ.Ë%ÐeÛ²Ëâø²ß ºl]¶!%­á.›ù¢}ûö¼å² i—í¯§}ÎîotYtY¤Õ‚.Ë%Ú²ËÂí���/ñµOÃ]¶fßtY„j*—­)uÉeköòzW�ËÖlãÌæ²›V¯�üå‹~A—E—E—E�º,—hM.«ÐMnÀN�¡Ë¢Ë6 ?ÐedºñUÓ®]»N’’“G�M|êÙ—%Şɻÿ·q—ýûÐví¾´ËF»ñóóG‡¸ƒËN0I>d%E…ÝÛ×–åEqº¬‚¼ìƒ;NÄeã"^ÃöIà²9i!+—-Pì!/)!>ÁdtLØ+N—ýã÷Í*½”êïc ­­±uóš‘#†Š‹‹õVëuÿÎUÙÓ&ÓÁ�ýAas3cW._¬ØCARRb‚鏨H?â² ±�&Æc`ß¾ê½ÿ>º¶OKŠ…Íý˜°rù/Š=ºWo?>6*€¸¬Ž¶Ö–ÍëF E—E�æ]–K Ë¢Ë"�懻¬Ó¾ƒåïÂ~™6ÒÆC‡sö1Ð×ì«îœ>Çæ²NGþnDƒÖê²é ^;vðñ¼E\vÛæ£F f¶Ë–ä„{{º‚t:ž;Òp—5Ÿdl2~dTˆGVjðºU‹uu4Ëòãç²`¨¯=îå}Œù}×f™®]Ê‹’9ÛeÍ'Og�÷ÎN�Y·f™žn¿ò"ÈÏ:dàÌ©£Â}Ázi—5Ÿlfb<6:Â/;ãýº5ËõtµË‹3‰ËÊÊÊx<XVü]AštY.Ñ\¶[—.¤µSŒMã=Þ0]– ).±hÖœâ¨xâ² oýfO¶�ï&+%!i:jL„Ç+tY„n¸,”ÿ«�Aº«t'¶vÙ>={1Û_÷¯ßT�Ë2Ûe¼ÞÍ6ÿTžG�‰xù†Óe}Ýžõ×Öáçç§�ßÒ\vÞœÉ|µ±eÃÎ>Ó§˜®Xò?Ù²Üp%E‡³‡8ûýkûŒ©f tY’Hˆ~Kú€ÅJˆ‹ù{=lij_à²ÿÜIúd¤„ÃaßǼcsYÈaýiâH°X qŸç!^5òZÝÇàÉÛdñ}lkûøÒÇ,–µ½¯'qÙ=»·ai~Ðe¹D[pYÒ.[ç|â$l0Ü`ÓeçM™–¯�Þ¸t9ˆ,mï^*pStù߈¯àö/'Ó-'< ]aƒ.[áöëôYÌvYfƒ†·ËÒ.[ý¾¦<_¹áùšUž»uˉŒeºlaB’¬ŒL»ví߸öÖ[ZJªºì7õ—½{ãlçNR…™Áo_�”ÏK$.{Åñ¸®Ž†¨ˆ0ñ`ÃÁú tY÷GΜ}ëڹƹ¬ƒý â²ÙñpœðàWl.ûì©+çé\]œÜ»²º |ê/éG\öÙÓ»µlã2qY‡ó§Ðe¤ùA—åmÇeIuìÛ„DÒ.ûæÖ]¸÷Ã+¤e»Ê€ËÞ°³gÝä�ÎΚl‹gA—EØàFYBAÁ'gî²4;t`sÙg>•çê>³Ì-XåùðQ¦ËÞtp‚D? RDçΘÉë.[š¦ ßÍùâ Ë™“/œEDöCÌ+ØñúÛ¬ÿ²¼Èö Ãé²*½”n:Ÿ!.ëåy‡¸lLØKø=�–øîûÇäªËeèëÒ.å§KOg{ö«®vÙ¸è€êí£8Ÿý—u¼p]AštY.Ñê]¶""nÃâ%ÊÝ»Ã=ž¾ßGº{Ð.ëñîý±žoȪòØÄ#;vs¶pl\¶]aƒí²•þá7ÿ¶…´„˜XæKŸïo—­½DGï¿“ç8û˺9\VUR&9÷Ï94|Ë)ŸÊs}û£ÇË?¤²�càýÄM¯ŸvKÇ]–¸ì§3×®œÏɈóó~®¥Ùwɯ ÐeÑeÞ]–K´&—Å9lÑe›œÃ]¶é]6=9bÆtsii©î ò+—ÿR�ó]]á Ðe¹º,º,ÒhÐeÑe›·�ÎaK@—ExtY.�.‹.‹4tYtYtYtYi(è²\]]i4è²è²è²è²ÒPÐe¹º,º,ÒhÐeyÂe£_òññ¥Ä¿E—E—E�æ]–K Ë¢Ë"�]]–5pì?~“Ë4èÚöP‹rÙAØ�>�.‹ Ü]–K@5áçt^1ÚT¼~zÉ]ö»iö¿#¯D³Ì•ÐrÚeûëiŸ;}´yÛeõûëÚŸµÅvYiNÐe¹„-¶Ëb»,òÝd¦ÆÃ‡‰QO|õ3D—E—E—EZ9è²\]]AZ?Öe"='�Uï£rüðNÚe³SV,ýŸbyI ñ Æ£¢Cž—=zp‡’Rwá¡CxyÞ&"û1%pÅÒŸ!_JRbÑÂÙ¹é¡`±ÚýúnÙ°Ühø`11ÑKN0ûh÷ÓØ¼aÅPCqq1]­Oo‚ÈΘ6‰ž~6fëc�œ4k†E×.�eºv™g9#=9œ¸¬Ž¶æÖ-kGŽ ‡ê­¦òà®3§ËîÛ»]¥—2§Ë;²_YIÞ˰¡ƒ½ß>‘�1} } ƒ—ÕÑÖÚ²Ùz„Ñ0x—/Ú3ûèh÷ÛöÛÆQ#�ªO­úà?Wⲉï£LMÆCfß¾ê; ‡JOMD—E�o]–K Ë¢Ë"HKàǺì0ÃS&'żŠx¬ß_‹vYó‰ãMÆ�ˆ vÿ˜üní*+]�ÒÜÈÐw�ž?qÎÏ õt»¾nõbâ²ÍÆ‚Úú<ÊH 8y|ŸëõsÄee»uõxz£4/–­¿,¸¬´”äÓÎY©aûöl‘�OIàl—eº¬Ñð!¦&cbßÅEù‚¹BšvYÅ ¯=ägÅïÙµL·¢8­!.ì%((øÂý~anÊË�¬×­¬µ]\VV¶›ÇóGeÅYlýeÁe{¼yõ¬ 7}Ïï;ddºV–åƒË52kæô´”÷Ñ‘!  Ë"È7ƒ.Ë%ÐeÑe¤%ðU—�7g2_mlÙ°„Íe#A>ˆ,écððŽqÙ¸ð�xù’ô1‹•{÷æ^Tð3QQ‘woÿcö1ˆ ó„�ß±õ1—ý}çúZŸý"í²tƒ¾êj'mþ¬Çe#C_Ã)¢Ã½HƒŸg¬)…ãˆËús7éc�™ ù ± écáïÅß׳þ>à²{vo¯õÙ/pÙC÷‘>Ó?°.)>22<°Z^Hƒ'�ÿC—E�o]–K Ë¢Ë"HKà¶Ë>ýÏITD˜î/âN\ÖýáeN¾élWž ¯ãÇõ×Óš?ošïë{à²n¯²Î’Ëé²Î©ËeOÛþE»ì“1Û¶¬©ÇeݹÐýe ²ßÃõ¼ö¸O\Öñü?Äe s!?"ämû˺޸<~Üh�ןç[úùxÔå²çO×岎Η-ÊÏ„SƒÈº»=£ûËÆF‡¡Ë"È7ƒ.Ë%ÐeÑe¤%ð]–­]öÑ]Gâ²1¡ÏøùùSß{×õìWi^Ô…³‡%ÄÅrÓCêi—u8w´.—ݲq%g»ì}�zÚec#}jm—m´Ë’ÙòâLÇó§$$Äós’Áe ôgsYÇ v wYl—E�W]vÍ’Ùpü¶Kç mk.;HWïÌ�ƒè²è²H‹âÇö—5Üš…IrìëÈÀ'úÚtÙÉ?�33úîQnZàëg7`± 3ô¾ë…Më—†º| ;wú   @vZpyA¬™éèa†A¾�3“O�ØO÷—­Çe;IK¹=¼–�öç¾mââb¤¿ìD³ñkV..É{ÏÙ_vø°ÁfÆ%Æù“þ²&Æ£éþ²_uÙZûË>üÏeóƵ¡>Ey)çÏþ#((˜›õ\vâO¦kV/+-ÊlœË‚Â<ûË"ÈwÁU—mË�¾ o—M¹ý¤=?ý.«¯®q~ÇÞF»¬¾†Öù=¾ßeõµú�ÿó¶Ë¢Ë"<Ä�uÙøð&ãŒ8Ç1ÈJñ_·zQOå¢"Âè¸\=Už]ø1lÿžM*½”„……@U¯_9EºÌf&,Y<¯Gw90ÔÅVsèq êqÙMë—1}öØ…ŒÉõâéMõ>ªœã|ˆ˜9ݼKçN]»t¶œ=-õCèwºlq~Ê�}»TUzÁ{a½qý"écðâÙõ>½áèq ¾ÕeßÇE˜�AWWïóןû ?'+]A¾tY.�.‹.‹ -�†»ì·ÎûU=¬,\_\ÖáÜßmaÛ»wnJKKáø²òm Ër‰è²3Ç™|ÂPK\6ÿ…÷ªYseå$ÅÄ͆�ˆ¿÷\6éás™N��öþI\v¡ùÔ‘V¼ �i<áóîÚ:l.»íz•Šœ.û÷Ö�Ê ÝE„…‡éøÞ¸ .;sÂÄÏÇÑÑ‘Õé«ñÛ²•# ½ò÷?Ì>°jÛÊÕ£† ëÝ«×ËW‰Ë~ð~g:j´¸˜X_5µã{þ€Ce…¡Ë"÷@—má.{å²Ã5çK¹ÙiïüÞjij,]²]A¾ tY.ÁÕvY‹QcM ‡ÇÞ~˜ûÂËzî=õ¾•>Á”_ØãSö⢢¡7î9ì9Эsç”'/¿Ú.[«ËFè²ÂmÐeÑeÑe‘Vº,—ø±.k2úÉeßßyÌÏÏŸùô%ç³_•¾!㇠�2fœ\—®çvýA»¬8h£žýª ‹q:xTBL¬0 \Ö Ÿ›Ë:þ»á.‹í²Òô Ë¢Ë¢Ë"­tY.ñc]v’ѨµsþWùÕ:k>rÌOÃGDܸWøÒÏËÑÙ|Ô˜’7þ಻—®ìÛS¥àÕ;÷³Žâ¢¢A×ï—�4rÌÚy Êß…5°¿ì#{Ç-¿,‹zô¬$(âÂ�Âùþ!ಓƌ[»`QyxLã\–JH¢?ûË"HS‚.‹.‹.‹´rÐe¹Ä�uYÏ3ŽêÊ=Ú·'ãä½ðZ?oA/…î¢ÂÂ�sëˆ åêvúøkðõ;dƒ=ËW«÷ìUŽáépÒ¬Ý6ŽAiPÄŸë7«** é¨÷½ù�écàyÕE½—Š@{zƒouÙ„·~&#Y㨫ªÜÆœ27<]A¸Hï''჎×O/Ù¢Ë"­tY.a‹sØ~m|Ù{Ž—¤%¥p|Yá*¶Ø.‹í²Ø.‹´nÐe¹ºl­.{ÕöôõÓgó¢ý¹iõQ_ú¿ŸÑe„« Ë¢Ë¢Ë"­tY.�.[«Ëf†Íœ8YZR²»œüª…‹‹bÞ£Ë"WA—E—E—EZ9è²\]ç°E�–º,º,º,ÒÊA—åè²è²Ò@—E—E—EZ9è²\]]AZè²è²è²H+]–K Ë¢Ë"HK]]]iå Ër ¨&üœN4û ‚M µAš [tYtYtY¤uƒ.Ë%l±]Ûe¤Ðì?ð0Zl Ë"­tY.a‹.‹.‹ -‰ÌÔx(™̨¿Ì Ë"¼º,—@—E—EáiÐeÞ]–K Ë¢Ë"‚ð4è²o€.Ë%ÐeÑeAxtY„7@—åè²è²‚ < º, Ër tYtYAž]á Ðe¹º,º,‚ Oƒ.‹ðè²\]]A„§A—ExtY.�.‹.‹ ÂÓ Ë"¼º,—@—E—EáiÐeÞ]–K Ë¢Ë"‚ð4è²o€.Ë%ÐeÑeAxtY„7@—å 4m6Ðei Ë"¼º,·ÉL�³ÁhkÑÜåAä{A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAA8A—ExtYAxˆýû÷oݺµž ºuë¶cÇŽ¾}ûŠˆˆXYY8PXXØÔÔ477—l“šš:}úôN�:)**9r„dêëëóññuìØ¶÷õõ%™;wî„–¿þúkQQä´oß>%%…¬]½z5}1°Ù_ý¥©©Ù¹sçºN� ¼º, Ë"ÂC4ÄeG��œœZ©®®þîÝ»¬¬¬áǃkÂUUUC† Y±bd†……©©©Ý½{—Þ„ÕÖÖVUUµ¢¢ÂÇÇGNN.222''ÇÎÎîáÇT½. ‡���ÿê)„W@—ExtYAxˆ†¸¬»»;IOžè²o€.‹ HËg̘1| 4ˆsKpÊ   ’ž9sæ‰'HúäÉ“S§N…„««+ì JÊÏÏß®];H�=òmmmÕÔÔ:tè@N„ØÁÁÁÈÈÈÐÐpÏž=………T½.HÒu�Ax tY„7@—E„‡hH»lý.ëçç'//_UUÅÜ+<<\JJêíÛ·ÅÅۨ¬¬üøñczm~~>ì»yófH‹ŠŠÆÅÅ‘|KKK¦ËÒç­õÂs Ë"¼º,‚ <Ä÷»leeåàÁƒ×®]›–––‘‘qîÜ9__ßÎ�;GDD€¶Ç ßšð áÇ O:ÞQ/ñÊÿ‹xð9Þ@ÖÄ[A¬ð¢#˜òf„OÈçð…­ ?a¬xGG8åψ€ˆÏYA$¢j"˜D4+BHİ"”ŽX*ŒáqŸ#"¾&"I¼gE T4#b?G,ćšˆ#‘ÄŠx:’YñžŽ*�‰©ŸãDZM$‘HgE2T #R3?GÄÇšH'‘ÅŠ ٬Ȥ#‡éÈ¥²‘�÷9r òk"—D+òè(¤òQPô9 !Šk¢ˆD +Šé(¥JQZöE”•ŽrˆŠš¨ QÉŠJ:ª¨*F�ò�| ð‰õµúµö!eýˆÚð˜Úü„úí)µÍ�ÚùŒÚýœÚó‚úÃ:àIýõ’:ôŠ:ú†úû-u‹úÇ›:åCÙùRgý(ûw”ƒ?åH] ¢®SÎ!ÔõPêFåN݉ îEQ÷£©G1Ô“XÊ-ŽzOy¼§^&P¯?P^I”O2å—Bù§RAiTH:–AE~¤¢³¨Øl*>‡JÌ¥’ò¨”|*­€Ê,¤²Š©œ*¿”*,£ŠË©ÒêB‡åª‰A—ExtY.�.‹.‹.‹4tYtÙº, Ër tYtÙ6î²iIÑÍý-ä%Ðeè²X®štY„7@—åè²è²mÜeCýž4÷·�—@—m Ëb¹jJÐeÞ]–K´A—mÏßž��/ñ©çwºlûöÕÇyñæ[]¶fÇ×>è²-ßeq¼*6ÐeÑe[ è²o€.Ë%Z«Ë*Èt£Gª—éÔÙ|ô¸ˆ»�Z Ë*ÈÊ~¾ÎÎ]Ì�M"Ü=Ñe[‚ËÆÇFíßem2B ^!Ý´ßËfæ²ã©Ãû·Öú®¿ße…;)�orØŸ¸¬ñ^w’#­¨‰.‹4tY„7@—å­Ûe�ö,÷Û³b ¤Uz(–À1œË6º�§Ë:=^�°Çz#ë:•”K¢â›Þeõutáìw.]mã.[UUåãå¹ê—™¦#´Æö†Ê^! 9�ßFšis²³ÎŸf6dÓš…lïúºl¯Ñ ‰Ë*¶@—E¾tY„7@—å­Þe© È�žÞäNéuÅ…vY‚°��ÙˆQ¹oÀb§O€œc[¶‹�óÓ$X< ‹áq;W¬î!'ôÓ±ßw° ¼öËvÙžoçO™¦(¯ -)¹ÌòEÁ‘à²Ýºt!g�ÄcÓx�7õ¸,ŸüÑ?´æ:oÿ.K6#(ÈÊ�žã;sâd9™n’âFƒ†xܸM\–¹¥¤„Ä¢9s‹ã?‘MðõŸm1E^VVJRÒtô؈Wo‰È~qp9¹>ªªÌ9W÷oß9}²9ëÓøãÙ9Ó¦³>�?ö·b—-++ýï¶óóf£´GV�j��ù°¶�-›õ[ÛDÀÛ¼çšÕœ � ïúG¹¬�”l{A¡©™vñíøÛ‹HË1]ögÇ„>#g‹u–ï(&Õs é/"ˆËŠJ×ü¿E¬S7­S¶¸Ä—5Y´Sº[ÁŽÂÊówÚŸñ­²y‘M¶´÷*—�0o5¤-m".ËÏ(ÿ]dÀe]^'Œ›<»K7yq )ÃѦ7_F Ëòè²o€.Ë%Ú¬ËΟ<%ëµïƒ��þsÝ&pÙ‡g.@Z¯¯&ˆlYP¤”¸D»víÜ_¹;^amo>µ( ÌßõþÜI1O^0]¶88R½— Ëü¶íÊyrÍæÔÇ+t»lYDœó‰“°v¸Á F¸¬…‰ivpˆlQT¼Š’2\ÒÃKWc_yƒÑv v{A»ì¼iÓ³Â"çUKçÆå+AdÁh{÷Ráççôïõˆ—oAgåºuË‰Š£]Öb‚Y6,ÖÖ.ûðš ëÓè§ "[–šû²>� ÐVé²9ÙYö§�L£7a”6›ÂrÆ„‘Ú°%l{5÷×·) Õ›Ö,œf6Äáìñ£Û,~ˆËjÎØ¯:–û4Ì7°JڜݴËþz«XJ¡w»vüSö?Zh:+ÖIÎúvÝ.»Ë­löïΰ}O�áà²ËmY]™Í?æY´í²ÿà s÷߉¡]ö¼wa].;t¼Å-ÿl·8êqDq�^½á›ò÷åG×="@g»t“óŒÌA—åÐeÞ]–K´z—­«��¯³+ýÛ/K!ýËôYà²U!ÑÊ Ýa1Ðõþó�¢ÛŸ �sµ=úõªöv:x4àöƒÊ°X¶þ²7mí Ñ»g¯zúuìÛG6¼�ÙÌûîÒÇÀÅî,êjj‘>«.†Å• Ñ.û¶LN‡WHËÊÈ€ËÞ°gÙ¹¡Á@ÒÁ`–9ë?¹gŽ£]ÖûÑÓºúTed)+*²> �W¯ß`}pœÖØÇàεSÆÃ5¾ª°$ƪ©o÷þ~—½ÇCRQK¤“B1i™¾ÃÆn»C»¬É6Vy“Ó0$} ÔG͂ŠÖgØút‚ü}O ¬º²¶ï¥9ÿw§íWN{Wžõ£h—½àS\—ËÚÜò&} öžf�±Ÿ¾!éc0~2ëŒ;ŸA—åÐeÞ]–K´n—%t•î4yÔØZŸýÚ¹l¤­¦Î �ewW[¯õ‚EKfYBâÈæmà²Åá㇧�¾ýø9Óe�ü¶c ‡1]¶""nÃâ%ÊÝ»wìÐ�Þ7ÒÍ£žg¿ºþŸ½3�«a}ã¸6´RÚ#Ù—¤]–ö�–‹®%®�ìn¸öíÚ·kß²d‰®‰*íûž¢TÚ)®=ÿdíüßir�:ŠN�S¿ïçùô™3gÎÌ4yz¿ÞžyF¦Ýˆ¡–Ì{¿*7‹I¤]vÏßÔ<ÖPcSÚe·®XM^jÉtÙœèxâ²ä+½·O…Å{7nnÁÆòŽL—-LNåP/»qÅ*êjÌ_0gÚtêjlÙÖ$]ó²œáÒ¼,qYý9Çé“&ËÜY]vÐ̽ìÿnûÛ/_ðyà¸emÕ„EZ1ׯ¼”¹+´¬§ÁPæšvÊjÛ½ÖÆeÝ" i—�¿®š#N�¿.Ë/Àe—åMÛeé=¹ª¸laP„   ¢¬œ’œ|E�A󯝢°Ÿ§jë’í×Îûó‡ó²®{ö“•Ú½ûn»œúï\ûÞ«¼ŸYÿY9“J\vþ‘@‹‰ËÖº§ï�(3é@VŽ_vàtCRZŽ,/Þu÷µ{â’m9¸¬ßƒwt½ìvg��¬ÿýë›`7ÁÁÅ+.Ë/Àe—åpÙ*.ëqà(=FR.ûñ^Ö‘¿7iöìÕºU+ey…§|¸—ÅÞÇ`²Ý¨JÊÒmÚÌ�0éݽÌéÙ“ìFIˆ‰³þÕòW\–DnTÜÛßåä¥$% û_ñdïc@Þš>îb±Ì>F�VQR’7ÐÑ=½ÿà'ò‘ê\6Ðóz×N�éõ·.]¡]ÖÃŵòjlÙÖL\– úËrµ¿,—¥ûô4Ÿ !«""*¡ÔÓÀzéé•~ŸVùè;tRKQ Öœ".»;üã˜eGTºiŠ´lÝFNÙÌ~Á±˜Äeî¿&«LÝ.Éܸ&—¥û µ› §¨"&.ÑGÇ`Ã¾Ó �>Áeù¸,àà²\¢©ºìO?ÃöÃÝ a!¡Ê>y†m¥˜&$×û³>ý',,\Q`p¿¹¹,M3™ˆ­=xî\–�Ëþ.Ë%à²U\öÚaê~”¡ƒŒ¸÷¬>rÙk®nÔÕ03o>ÏJœ�ËÂey¸,àà²\.Ë겺ê}„…„úkjç„Áeu5µ„……ûëéç%§Âe \.˃Àe—åpÙ††m½»l½<öÚyÙfø [š#FЖ³gÏnð¤l4jó]Ãeá²<\ðpY.—…ËÂekÊŽùóç7+—¥áü]Ãeá²<\ðpY.—…ËÂekʸ,;pY¸,—ü\–K�ß¹‰®‡ÈW¢¹ETÀy'¸,?tÙqÿx6úÏŽ—#òÎþ]�z. ø¸,—p¼,æe1/[pYvœ0/‹yYÞ. ø¸,—€ËÂeá²5e\–¸,\–�Ëþ.Ë%à²pY¸lMÙ—e. —åAಀ?€Ër ¸,\.[SvÀeÙ�ËÂey¸,àà²\. —…˲çÅš5kZ°°bÅŠOÍF 6ß5\.˃Àe—å�è²}ú:¯ÙÈÝ{¸nÚÑä]Ö@KÛyÇ.¸,oº,¨ ¸,\–�Ëþ.Ë%xÄe+—¹à²}5�7lmž.k £ë¼{\.[�Àeá²<\ðüæŒ'GáÁ˜ûÇ Zºl±—¿�  ïÏËêöV?³y{½ÌËZ/œ<�—]V·¯æ™}0/ —m0à²pY. ø~wYž�ú­ý¼,\. —pY¸,—ü\–Kԯ˾ñ�pû‡š’r[ ÉY#Gÿ/(šX¬Í ã-Z�õ›g/('^û£ƒUÓfjéHЉk÷è~ú_Úe5»÷\=c¶‰®¾„˜Ø…{lŒL+w«¬²yþÂò �µ·´fÞ¹b ¡Y¥ÆàiHôxk[9iy™v“‡Û½ˆŒ§]V³G¯µsæ›ô—ï®ÖÉ÷äY.û6é¾ãäiªÊÊm$%mLÍó‚"‰Åú{“V¯ÞL—Í ŽÌ ‰"û6õ�ã”éªÊ*ÔöfyaÑœ]vûŠÕ]:ª±»ì��[ÔÚw5ìg�pËŸˆ¬ýðß¾Ymb±š½ÕW;.20PB\üÂѬ5šêêk/1d()!ѽKßKWh—}t÷¾•Å`²²W÷î·ï$»z–ñ. j. —åAಀ?€Ër‰úuÙáF¦†šÚ÷Ý<_ù‡_±Î{÷!æ¼ìç¨äÄsî]Û«žß´ó‡.+-%tÂåMhìŽ?ÿ’—ø/ œvYÅv².nŸî1çe?'ÞO¼xµkÕóÛwW;/Ëê²&zý¬�MFÜ 3ëן,3]VUI9æÒÕÒÄ{[.‘o×®<-»&—µbielšö&ñÞ’é3µ{«ÉÈ}ŸÒªeË$¯[´Ëþýç"óéY»¡Ã¬LÌrB"ߤ¤/q˜­­ÞçKvA]]6#$BDX$üªWÙÃü(/Ÿ¥sæU;/K\VQ^>ÂëæçGOªÔË—UUisÛ¯4ïÑ–UkäeeËŸ>'.;¨ŸÁ8»ßÿ{�™ŸØOG. 8—…Ëò pYÀÀe¹Ä]vŠ•m‹êX3Å¡ŠËæ{Þ&ë³.{s¨18ð×Jû!Ãj3/ˬ1èÕ©óñµh—Ý2aµ5–¯±·´æì²Ù·ÉéåúÓ5©ž7ÉË¢àHÚe÷,_M×¼ŒN"ë‘õÕ¹laHy÷qX ]cðåA®”„DÊ _FVþXk[G²ñÂò¬üŽ**ÿî9@D¶0"–Ú>2ž®1øò°@JB2åö�ºÖäDÆŠ‹‰¥øq®1 .»eŪjïý".»gÃ&ºÆàeF6õ=Þ½—OÉëƒ,ºÆ àêu¸,à \.˃Àe—åõ8/âtŠlPÎZ2[á²î[wkwï).*JKð Míº¬óÚ�L—µ14Y7s.í²ç6ïdº¬û?ûµ{öþ¶[-Î.|æ¼°�³^¶,á>ùTÌEÚe]wî¡]¶,)�2rß j]6ô¼;»Ö{?E\öÖ©³íÚJHϾsîBIÉw÷2‰Ë†^ô¨fû“g~¢^Öëô9K3]�¾ÓìÇ%ûÖä²ç©Ée]¥]¶¬ ˆúc⃯yIˆ‹3ëesïÂegà²pY. ø¸,—¨G—­v^öÉÍ ò)Ï�ûK‚¢Ê£ïî[¼Ü@½ï]võôYÕÎ˺n©tÙ'wÂ……<÷.‰H(OJß·lU[á²úêæeóýCª�—­¥ËæE >�Ib¿÷ëKF®Š‚¢Ç‘ãGü>{üúÞ¯ü°hjû„”úº÷ëK~‘ëÁÃR’’¥YyÄeõµ´ª¸¬ë!§Ú»,æeáu…\1Dmÿ®¸,àà²\¢~ëemié¤]ð|íqbåßÞ»åzÞêe; ù’çOòÈ¥CpˆÆþ5#ಀ?€Ër‰úuÙ×~áóFÙwPP$2:ûkƒ]þ¥ Ó®¥ˆHÿ>}�›T—]9Õa�¦¶„˜˜V�ž¡']™} ˜.Kb×âå í*vÛWsÑ„)L— ?{¡g§ÎÂBBì} Šƒ"ÇYÙÊJKËIËL´ñ,<î‡.[¥< õ†oIâý¥3fuî *.*f ©}Íəٓ+Ó?„l£Þ­;kO®’”ô¥3gwVU#þzíø©Ÿècð!§pçêu]Õ:‰¶nM„Õó¤ ]c~Í»g×nÂÂÂÌ>uuÙ‚¤Ôaæ’=»uÛµaYÿ&·. à#ಀ?€Ër‰Ú»l½?÷«"î±÷—­Œ¦þ [Fîc*xé¶>Ü¥Û¶EY—ü\–KÀe›¹Ë^Äÿj ò.Ù†wÞ`‡. x·³GW,š^í[d=y—gwÞ`‡\ð(Ÿ>}š1Á&ÀÏ»Êz²†¬'ïòìÎì€ËÞå^JÂÛ�oKÞ0×�e²†¬çñ�7Ø!€f\ð4{w®#QÓK^ÞyƒhÎÀeOÃ:‘É>ÍÉË;o°C͸,àuèÓ÷eïª-?åå�7Ø!€f \ð+MŸ1Áº¦¶¼¼ó;Ð3²i,‘žó-�Èý$ò*#“Ž|*²X£€ñ�%² ¿E‰Gß"—ÄãÊÈcF#Ÿ5Š,Qøä[<"ñô[<¦ã?*Š˜ñŒQÌÏOXâé‹oñ‰—•ñŒ¯žÜOc<õ5^3^°ÄË7ßÅ«’oñšŽ·T¼aÆÿ¨(aF铇YŒ·¥•ñ¿wßE)‰²ÊxGÇ{*ʘñ�Š÷ÌøÈøÀ?Ññ¤0�ZøDâse|¦ã _˜QÎ(g�¯É€ê€ËÂeùÃe©àšË~Y®¹leÀe€z. —…Ëò�Ë>}ü°±Ràeà²pY¸,¸lZâ�ÆJU€—�ËÂeá²pY€_�Ëò«Ëª((¶øŠ|»v#[føÁeá²@³.Ëß.ëºkß§ô‡›-!Ë]T;¾¿ŸÕð.«Û·/9º·Ë¿pY¸,ÐÀÀeùÞe™y/â’é ÚX/b±BBBÌ)[²ÙüÐ({›ß”äåÛHJ÷3s¿J[,ë–ä-û?Ê2rh—-ˆŠ?b¤²‚B[))+SóŒ Úb¿Û¹¢R�.]Z°°}Õš1¶ÃÉÂþ�[h—ýÃny¹�¼„Ëò¤Ë6X“`¢ƒKéàà²MÖeí†{•x�ˆì»{™]T; øºœÏ Ž$FÛRDäžo Óe'Ù�z™œ6Én4Y^>gYb´Ý;uôû÷bFP8ÑY%y…×÷3˜.k7ÌúyYݼ¬¯Û%òR»�qÙ�ù�ÛJµ!‡.ˆO†Ëò¬ËVdâO§a-0†%kʾڤ^Kê}Ë»º'3ݾ˸Ò-ƒ¥<=“¥<½®ÉeùóOyu/ãaþÑã1Ë=ŠjH®§Ï¿Ï¬ßgV­ÓêÕ›ïsêí÷9U넪šMï¿Ï¦šSéãÇŸO"tµ ©—å{—e¯1 u3îê zpõ8rœ¼Ôê­N�¯ŽS¦“—N™ÆtÙhOo2¾F{Þ ËŠròd”½zü$Y¨«G�²ã†� /�wîfºlœ�oM5å�ž¨uè@Ö¤„ø^p' È~Pc—…ËÂeá².—åo—¥‘“‘1x(óÞ/Z7 ÃbèÁuÏêuäåP#cz|ݺd9y9|ðP¦Ëæ„F’ñ5'4ŠÞÛ§‡ù{×mhÁÆò¹ó™.[›Ä¡^vãRêKfÏ›3y YØ»a\. —…Ë6¢Ë¢C3M¸,»,]cP¥'W—ýéyYcƒþì-»ËêõլⲅñI‚‚‚ŠòòJ IpY¸,\.Ûˆ.‹»'hÂÀe›¾Ë–¦ftî ÊZ/+",œz; ÚzÙe³ç’Qö݃lº^ÖãøÉÿ¥?Lðñu7!üªWµ.;ÌÔœ¬9¸y+k+s z6·¿®.úÀeá²?粕é——…Ëj.Ûô]–Dnpäk[E99) C=ýà —ÙûHIHN;ŽX,³�Á„‘¿«(*Jˆ‹hëœÞµï˜«sÙ@w�®j�èõ·þ½@»¬‡óz·pY¸,Ÿ¹,k MÒµ›pY¸,€�Ëò«ËÖËs¿*Gʨ¸zV‡¼GÂÂÂ_ à²pY¾tY×öý⼬nŸŠjò“.\­1Ð¥ë|Î�‡ËÂeh†Àeá²\qÙk§ÏQ7œ™˜âY pÙ¦ä²ùÁ‘öÖ¶Jr­šõ Â.\¡­j çKWI¢õèü}÷åå«HŠ}ßÔYÊaÜe™¹tŠUiÞ\e^–õ]ÑÖ­m,†¼ÉÈ&ÉÕ£K×z\. @³. —­—Õí«),,Ü_G7/6. —m2.û.åAe«æÓ®9AáÄh©VÍ7ï°´pþ÷[ gª$½šyÙÊ"õßG¿¼›N¾¶ ›:³¸¬Ý0«W÷2Øk èå)cì_¦eš H–w®ýó²pY\¶Y»l½<öÚyY<Ã.Û\–I«–-I®y>FµéÕ›Î5ÇÉÓ¨– “§U¶ é¥N'Ze«�ÉÓ8¸lôµ$ÅÈ×Êæ!,.wãvµõ²ôrÂm’Y«‘åY'Ãekï²ng�štAð{ÌŸ1šK¿ ÿ—…ËÂeá²pÙZÍËîYµ–ªœ14¢smë_ËÈËáC*[8Ó‰öµ…ó.›ER,',švåOÙL—-ŒIäಅñI$³ÖWzÆø pYÌË67ˆÎ6ö)ž. —…ËÂeá²µrÙŸ˜—ÕÓ¨ó¼ìO¸¬ž¦\.ÛL€ËvÓe]‘¯‚CDœw‚Ëò†Ë–ÞM¯lÕüµ^–jÕìãÏÒÂùßo-œoÝ!.;ÌÄ”ìçàúÍêe—Íž÷‹.;̬¢Çó–ípY¸l“. ØÁ¼,æe1/‹yY¸lmûä…�±²ùÖªùü%:ѨάëÝ.Ó‰xÞ½kGµÊîË.ÿVécPÙÔ9#ç]6ð²g×N_{<»]‚ËÂe›0pYÀ\. —…ËÂeî¹__›‡Äã¶pYðÀe;pY¸,\. —…ËÂe—ìÀeá²pY¸,\. —ü\°—…ËÂeá²pÙ†sYn<Ã.ûs.[RRboo/&&¦¬¬ìääôÃd1b]è<{öìúOEP;ಀ¸,\ö;—ÕìÕÛußÁÚ»¬�¶Žó®=pY¸,\.Ëw.ëàà`jjZ\\$!!Z›”™?>\¶�Ëvà²ÜrY Mç [á²¼é²;¨¶hÑBSC£~]ÖÂÌŒìV\\. —…Ëò¸Ë~üø‘¤jHHýrFµI¸lã—ìð�Ë_÷ä}—Õí­~fÓvnÏË792º(+ÛjèPS#ãÚÌËz{\m.‹yYÌË6ÃyÙÄÄDâ²åÎ�;§®®^›”�Ë6.pYÀNqÙ‹—«))‹µnm¨©�àr‘JßE9Ž� ª¨ÔFBÂf�qÞõÛ´Ëjvë±ø�ɆZ:⢢½:uŽ>ã¶{áR9y)q‰™v£¿�Q¶b@µ14!¿éˆ&ª)«lžçXNÆ×ŠU³{ϵ3çšéHŠ‹wï¨æ{ôPí-­™³‰šUj ÞD&:N˜LöÓVRjÖèqÿ‹K!Ãê�UëÔTÚ‹µ5ÔÑK¸|�Ýe·ÿµ¼‹ªj•ÁõKZ¶ª’òÁµ˜.»tƬÚ:dp}•8Þv„œL;ùví&Û�zŸB®o’Ó§LSkß¾­”Ô¬qþ—šA†X3‹Êï®}‡ÍK–•ç¥Ù§Ïâ¹ó ûëÕ½G´àîÍ[U””¥$%gN™úååëº¬Š²òÁ]»é¡7-�úî$%Ãeá²pÙ&처—åSಀ�¦à²¯‹ ‡s) ‰‰rv]:a =”Ú™š[ 0̹zëM@ä’ S´{ôüBÖW¸,ßøs—ÞÇNûÍNRL|æÈÑ/"2¯ú(¶“uß±—u@ý—šèæÑµƒêù­ÿ0]–øqŒë¥Ò¨ä-óÉË´+'ƒ+Û¼,«Ë7µ0ÔѽíÖ«È„ãë7{9‘qÃ�:g×Ke ÷£Ü®,�æPK—%±Éñ/�î=èÁõý,9™3;v“ÁÕ¤_kS³Ç±¡QfýX›šÓƒëp‹!†zú÷}_%Ý?¾u‡·óæû9+?Ñûv׎jç÷fº¬t›6A¯¼¹—±cå) ÉÿSké²t|.(Jô½ÓU­ÓùÃG™.«(/áuóó£'oæÅ ÷ò¡ÇÚ%sç 3·¨i^ÖÎÆÖÊbpNBÒ›œ‚%óhkôýBã —U”Wˆ¸åû™¼|ñš¸¬šªj|`ÈÛ¢i&JJH…}‘“ŸŸ¤¨ àîr–³Ë>Ï+$ßNT`sè»tÎ. —…Ë6a—ýøñ#ÉtÔËòpYÀïºì+Ûjk(×Lq¨â²9W|ÄEES\/³¥…^~dãÇ7èÑôKT²”¸DŠÛUÚe÷.ZF�¦AÇÎü/4ŽP'XÙ®œêÀ> X¶Ú~¨Óe÷üµ‚P_†Ä’£<ò áà²ù¾Ád›,Öa5Ç7ˆ:gOŸŸ¸÷ëqh´°�P´û52¸^Üw¸­”TéÝôì€0r”Üàz|Mõ¡¾ý¢ÈøüÐ(êè¡j ¬ßdo;œu^–YcЫk·ãÛÿ©“ËÒ56mµ>’é²[V¬f޵ó§Í˜8j hßµ“–ñ8åR­Ë&ߣ~‚©iô ûåé "Á)¡´ËnY³–9è—Ý»u=èyùP?ÐÇOèqwÂØ±+ÿÅÙesRï“¥Å'2‡^e%%çÃNpY¸,\¶ »,£Â_«íc`ii¹fÍöe¸lã—ìð®ËÖ©ÆÀ럖u{öžf;2ùœ;JC��a÷`¯Ý‡h—uݸ�M£NŸ'NÉPgŒµpü$z@uß¹W»G/ò.ýÙAZ:L—uݲ“PËbîR¦èíÇÁeCΜ*Oɨ2¬z>a9ÈH·wŸiv£“¯zש�Á‹!ÓG�%ƒ«yÿ�NšJ×à/ 3Çײ{ÔŸÏb<¼B.\&¾UNV~?ĺ>¦­ÞG\L¬ò»ÓÓgº¬óŽ]L—µ1¼Îqq-]Öý˜³v�oûÔïÇtÙs�0ÇÚû!á­[µzžžézø¨‚œÜÇÂâj]6Ô˧šŸàù ´Ëž;zŒÕe]�� Ý(¿;ä˜ãîŒI“Ι‹yÙZd"\.Ûì\¶¤¤dìØ±¢¢¢JJJ¬ýekrY²ÀúëhÅŠ\ÊJÀ¸,`§‰¸,_"]×o“/ ŠÉ¿v[PPð¹o(û½_µqÙ'~¡D@=÷* ‹+�¿¿oéJƒ>}9»¬¾ºFíçe™Ãê—”L×{¤$$JRkï²7�ψ‹Š%zRs�©7|ÉàJÏËæ‡DÕf^öIl‘0Ïc'KR”gî[·Á@K›é²«ç;²ÏËvUëäuú,=Ê&ÜôcwÙ'I÷¨}žt)ÉÈ.ôd߆Íä-¦Ëºrb½÷ËdÀÀÝë7 êg°b�cM÷~å'¦P?ÁŒ‡ìƒ.qY×£ÇëËeQ/ËG.k Ñ×ùïÍpY¸,žûÕl�Ëvš‚Ëúí?¶jòŒ,wï÷¡±.ë6‹ ¿ Œ"ãèHs[C“ wïÒàØØ3näå{²ÃÚ¹l®—ÑÄÀãgÞG%GžqSUTú¡Ë75_ª*í9¸ì¥ã'åeeÉöYQqúŒ´¶±j™WZPë@^¾/z —eö1(~˜c5t¨‰¡=ôΘ2ÕÂÔŒz©e33¸,÷\–¤˜óÚ�µwY*ÅÈò/»¬A_-çMÛxÊe©´úg\. Ø�Ëvš‚Ë~‰Û9oQ×öD[µ"žê¹s=”–F.�0µ³J{b«ê×v¨ý¼,‰]‹–*È´k)"Ò_CsÑ“è²á.n=;ubïcð:2aÞ¸ •dÚ´™=†êcð!)mç_Ë»ªvmÕZ³G/σGkï=¾nY´”ÚeÇæàZ?Îv¸¬´ŒœL»‰#ìžÅ&Óƒëë¤ûó&Lî ¤L$uöø‰tƒ]«Ö*ÈÊQß�¶Î¢é¬.»rî‚AzúââZ½ÕC/{ÒmvX´Q?1QÑ>=z:mÝQm�Á®µëä*ö©£»hæl.û± XQ^Þœ(#Çž\%¹Kç/èÜQ�è©�®Þ5×ó\š—ýüºd‰£c;QQѶ¶Ìþ²5¹¬³ÓÑ*ÅÏ?nò.[ìÅÌDþž—ÕUïsfëÎÆ�—ÕÕè{f÷>ÌËÂeA]�ËvøÀeùô¹_|ú Û¯3Fµí/[u ­]Ù÷ùE2m¥/snÄç~±ºl=>Ã. —…ËÂe÷€Ëvà²pÙ†vÙò¢ÿölؤ¢¤DÝõ…gØ6-—=°xÅ·NÏg/ÒÙ÷68ÚÑžµÓ³/�}šÝz¬ž6ÓDGOBLì¶]¬5lÝ�Ó8ÔÜr:YešÜÿ„ I:cÓo;ùsq9ÉÁ{í‡Ù073è«U¥ÆàixÜx›ßädd¨&Í#“D»¬fÏ^kçýiÖÕUZ­“ïiWöDÛ¾teÕŽì‰vàïMjí;ˆ‰ŠêõKð¾M²ÌÞvø·sÐÖ!ùEÕ©/XhÒÕ2ùðQÖÍÞêk.68HRB¢{ç.¾n—èäz”p×ÊÜ‚¬ìÕ­ûÁ-Û©?ÜÏ€ËÂe›øS.K’k€®êeá²Í¸,`.[7—¥†Ûu›ë䲕�fyÉe ´´�·ïúu—íØ¾=Õ  ·zýº¬…u;Õ&.Ëæ²Ä_‰Å—%FK¯á—ý·sþ¢®íU¿uz®È¾’ ¨o�žûô½¶ë çyY’z»-«¦»s .»oÙêjûìZ²B¡�,µ“¾Z‹&Meºlø¿—zvêBµ‚fëcP3Îú7Yii9™‰ÃG>‹JüE—ý�‘»sÅê®ÕD[·&Âêyü�eáW®õìÒUXX˜ÙÇ ®.[—4ÌÌ\RB¢g×n»Öm ëßdæÀeá²M¸,`‡\¶öϰå‘yYÝÞꕳm¼yYÝ>gvîáö¼,qÙ[®nÌyÙÏùEKçÌ“•‘9ÌêIò}Î.;Ú Ú<¨§g}?/uË.[Åe‹®X8mÆÖ÷SYS©Á\–žaû-õð [–þ²>®¤Û´EY¸ls. Ø�ËÂeëÍe7/[ÙAY9Ù?°()ÅÊÜÂtÀ ÚÌËz»ºÁeè²aþ­L4&Ø|øð¾J*‘ßì¿sÿ—åG—½xôÄçÓ%™9Éw‚ûôì5wÊ4¸,\¶9—ì4—-ò¾c3ÐHRL¼—ZçÃKV1]ömP´ãØï›´WŒ¦–¬¬ì讥“àêN�¦o‚£ÇMTSVi+)9ë÷1ÿ �'C©f÷«§Ï2ÑÕ§Ú¹oßÃZc Ù½çªé³ µu%Åŵ{öwq#C©½¥õ·.èšUj ž†D�·¶•“–‘—i7y¸Ý‹ˆxzdÕìÑkíœùfýúWvbwvawÙŠGÚvdwÙk׫©´§:±ëê'\ó!ƒ«½ÍoßÎAS›Œ¯T'öyšô—¿pàk�ykí‚…fJŠKtïÔÙ—¸iÅ@û(:ÑÊÔœ¬ìÕµÛÁ�[¨Kš|Ÿ³Ëª(*ܼ•®1H 'y —ż,\–.ûü^†ýð‘ÒmÚ¶WRvœ1ó]n!\.Û€ËvšˆËiêŒ2üôfàÃ+7ôz©3]–jÒ>À0çê­7�‘•MÚ£îf\¹Au/w>WžuúüÒ‰SéÑt¸±QÛûî^¯‚¢�¯Þà½ß‰vYª�û™óŸãS«ÔË—•–’ :yîMDüŽ…K¤Ä%þ ŽbŸ—euY½~ÖF¦�# î„sµ66eº¬ª’rÌÅ«¥‰÷¶,ü‹˜n9kká²¾AÔ÷rñJYjf”ûµ¥³ª�—­èÄ.qÙó3†¿¯—%o©*«Ä\ó)M{¸eÉ ùv²ådÄÍ{O¥EyÝdÖ˽¾tÌ.Ûdêeá²<å²x†-\¶y—ìð®Ëþ¨Cû7—}xÙ›¬êH¥w� ]¶ÐË�jÒ~#€M¿D%ÓMÚs®Ý¦:ºWtkg¥ùÞTG÷,Ï[UTâ²[æ-¬öÞ/z^–9¦öêÔåøºM\6ûV Õ‰Ý7˜VS=oR‚"i—ݳ|5=²¾Œ¦ZE>"ëkQc�&.*–rã6çªû_Ë«½÷‹¼µgÍßôû29�:ttBVpu “îÑ£lÀ÷ºlNdÙ&-(œé²Ê ŠÎ»÷Âe›L¸,\. ¸,`‡w]¶öó²ÁGN7e¥¹WoÑ.zìL5MÚw"ã¨×žC–ýQݳKvó CiÈ r”rÖ1õ«ËžÛ´£&—­¸�ºrLµ12]7k— >sžêÄþuX-K¸Oub¿àA»¬ëŽ=ôÈZ–D eÖíÀZÖËz;iidLäuÚ¨±ÉÞ·krÙs»÷×ä²®ûÒClÙƒêÐÁÁ—®P�Ø¿Ž²¹t3KÌËò†ËÒ4|Y¸,\. ¸,`§)¸l•yÙ€CÎ´Ëæ_»M5i÷ ­éÞ¯/Ñ)®›vH‰K”†Ås˜—uݼ³&—]=c6û¼¬¾º‡yÙ|¿�jçeÚeéÁõ˃\×]û¥$$JS�ñU¿¯f—uÝs ö.û󲨗mòÏýj`—-ö ¥þÕFÀeë×e tt�÷€Ë>. Øi .KbP_­1æCþ»”}ŧ_ï>ÌzÙÊ&íîÞ¥!±±gܨ&ía ~‡N¬šê�åáó><ÑeýVª{yH,Mm�LŒ´uÓ.{¿Ž>±f#³^–ƒËÊ´i|ʵ$"a×âå’âât½ìpSóÅ“¦~"Û³ÕËëêÛš˜¥ëe­ŒL˜õ²?tÙjëeýN»®š=/Ë?øý½,—�{¨ïån_‡[ Y<ÍáSFÎϹ,hèèÖ©^–µ�AqRª•¹…É€�ôX;cü Ccz �ñÇ #c¸l½¸,MÑ£‚úÈD¸lý»ìw�œÄe)Oݽ¯ö.k «G-ÿ²Ëèé;: —m¶lß¾}Íš5 s,¸,`§‰¸ì£ë~V Ùû”²4iW× š´Ç¤~ˆHÜùç⮾vtßu€M_EÏ3¾ƒ‚¢ŒT›Ù¿�eö1àà²+§Í¤¥#!&¦Õ£WèééÑ4üì…ž�:S�ØÙúE޳²¥:±KËL´ñ,,î]öý¬�ËVVvbïÙËÓé=¾†_ôèÙ¹‹°�0³�A]]¶ *~˜©™¤¸DÏ.]w­YGubOËüaÙ%³ç¶“–&'3Âr³¿lM.ë¼g_• �gé™pÙººl=eb}>Ö§\Ör�ë¿1òò'\VW]ãÌöÝܘ—ÕÕèK=Ìö«ËfGŒ´&×®][©6ÃLÍC=®ó漬®–ö§c˜—4pYиð�ËÖõ¹_Õ ¥Üé/K\ÖuË?Íá¶>.®ÒmÚü°¿l=>Ã. —­G—]8qÊ/ÎË6˜Ëvé¨6ñ÷Q…1‰%éýÜ.Y›[Àeá²¼\4.pY¸lõ.{ñð±+ÇœKÒ2“oßéÓ£çÜISð [¸ì]V³[�Åã&jj‹‹ŠöRë}êünÇ%*ròRâ3GŽúB³"õžú†Œ·´–“––—‘™l3üE@�tE·ƒm M¨?°tê|xÅZ¦Ë¾ Op?©¢Q´¤�‘IÞÍ@v—ݾpI—ªµtÙ§a1ã­““©èô<ÂîETí²OÃãÆÛT¬o×nòÈß_Ä$‘\³·þÖSÅ@S‹¤›fÏ^«æÌ7ÔÓ§zK÷V¿t•YÌS—FÎEö¶Ã¿íY[çIb YHºu‡½ÆàmFŽãô™ª**m$¥l,†äÅ$ÒùE²oµã"“%ÄÅ/=ÁZc`3xÙ›€€€ZÕÍ+W—¯­¹ÆàÖ¥+UþHâïy�d“ÍPËÊ�¨ªn^³¶œä×ëûßG};m=½*5O³óÆ�+'++/'7ù�?^>¦SISCc튕fÆ&’’Ý»uóõò†Ëò;ì7Xpõ pYÀ\.[½Ë>OºoÿÛpé6mÚ+)9N›ñޱ6Å|õ4/ûýÝÖpY~rY5%åø3ÞEM³I¬tæˆQ/üÃ2¯ÜPl'ë¾m�z&:zÖƒŒß ,¸qÇL¯Y¦“ÎH[w”ù�§þa¯ûêÑ…ï.kg6Øj�qÎ ÿ7áqK&MÓîÙû ÉÇ_pYý~ÖÆ¦�ƒ" ÃÍ *:=W¸¬‰¾µ>4ª (ÒÌ`€µ‰Yµó²ÄeIjý{éMÒýËVIIHü›T‡FÎKéFÎ�«ÌË–çuëÔy¤å°¨k7Ê泦˜Ý0k+3‹œÈ¸7.™=O»�Ʋ¾Âeåå#¼n~&iX]½ìç¢ÿïuíÔéüÑ㵬—ݸr•N_Í·…EÌœúüüebHX×Î�Ï;Ÿªv^–ÕeM �¬--g>,HÏ036&ËL—UíÐ!&$¬ôÙ‹-ë7Ó-/-ƒË6 0/ ¸lý?öi¸lmža —m.û£NÏU]vïÂ¥t9�ø_P �}†Ù¬œ2ƒä]¶'Õ5/÷º/�t©=©†·ƒ^»M5$ñ £SïÎÑÓ´ËÞ " �}Cè¼û’pŸj}Ùëçêe=Íö¥v˜ëBg\êuê|ŠB¢³ý‚©õwBétKõö¥Ö‡ÇT벫æÌg&Z¯.]�oÙQ‡FÎwéFΉì5�b“æO™ÖU­“ˆ°È]=�§HŠÆ%QW á.�_Äb¥$%SBh—ݲbõïý:°e»ýH»Ú¸¬Ë‘£�:v,NÏ`¯18°ãûßGqvÙì”TêÞO£³)5†j;]ô0‡vÙ=ÛwЩôòq1uÈz¸l“. ¸,\. —­ÏyY×õÛèŒ:éJ5~þš}3†ÿ¾Ð~"É»àcg¨FË_³¯,"�hMÌÙ‹Á'\¨í¿¦^nE›<ⲡ§\ÙMÚëÀÑŸ®— vq£Nàk½,}·eÌ%Ïàs¨õ_Ó­ì.Õ29æòµj]ÖyëNf¢Ù˜™¯[°°�œ3è›,#Ù]–oÒ³oÙ.((ä~5Ôãz5WÀÅ•vÙs�Të²îΧ´54ÄÅÄèíõ3ø¡Ëú^¹ª 'ŸËL+÷3gµûöý¶ƒþœ]6øæmaaaf6•={A]ÃàPÚe]O�¢S©ìÅ+ê ¤Þ‡Ë6 ಠq�ËÂeá²pÙuYz^6ßËŸó¼l@ųNˆËæß  EEÕ×½_ô¼lþ�°jçeóÃÙçeõ54«¸ìê¹ ª�—­U×Õ×ÔªÖeéäê¬ÚqËò•ù1 ÔH}À~ïqY×CNì.û$5]HHÈÓå\Iv~ù“çû6o%oqvÙ¤à09YÙð›·™iõ$#‹Ú‰ëù’ÂÇå/ßìÛ¶ƒªŽ­H(}]ó²ùiª�—…Ë‚_. Ø�ËÂeá²pÙuYÆÚº¶†&E·‚èzY«�FtÒ ÒÔ3Øò¿;aÙ^¾ýÔ5˜õ²#Í,l�L3®Ý*�JŠý×}¤Ùà÷±)¿R/k¬§okb^E×ËR�ž+êe�õúÙšš…EÓõ²VƦt½ìpó!‹§Îø”þ�é²2mÚŸ¿T’œ¶kÅIñoõ²uuÙáC†.v˜õ)»€¤Ø£Ø$[‹!w.¸¿L}ð:-óØöˆÂú»¹“9ÌÊvð�ŒÐÈÒ‡y±>¾äå{’¶5»ln\¢€€@àÕkï ‹"}n«ª´çì²yI)*JJW\α¦Unr*µ“ë7Þ?ù/ÒïŽjûöL—ne½xÞ‚O/^±×Ë2´fU”•M×ËZ ʬ—…Ë‚_. ØiL—M$¿ƒ7�A "*à¼S“sÙâ[Aã†Zɶ•–“–žheûÌ?ŒvÙG7‰×²÷1( ‹_:yzçö¨FÑ}¯í;ò‹} ŠC¢ÆYWtz–‘™øÛÈgñ´Ë‡ÅŒ³þ­rýð‘Ï¢i— ¿påkÃæÊ>+gϤ«'!&®ÕK=ô•º=”„ÅeÃ=®÷ìÒUXXØ@[‡ü/ñ†‹ë#é6m¤$$u5úž%©øïbɃì¥sæuVí(.&F¶¼vúçyY»þÞ¨ '×R¤e]½E³æpvÙ}[¶U©a ûìÚ´YAN¾eË–ýõôÍ�ÇtÙðÛþ=»w§N›­�AqVθÑcdÛµ““•�8nܳüB¸,¨GಀÌËb^󲘗åÅç~U“z<óÜ/â²®»÷óé3lY2 ϰü\°—…ËÂeá²pY¸,\ðpYÀ\. —…ËÂeá²pYÀÀe;pY¸,\. —­›ËÖã3lá²pÙæ@ll¬‰‰‰¤¤d§N�V¯^ýöíÛŸÞ\°—…ËÂeá²pY¸,\p‹÷ïßËÉÉmÚ´éõë×………;wî<{öìOï . Ø�ËÂeá²pY¸,\.ÛY¿~½‚‚‚ŒŒÌìٳ߽{GÖ�—Û·oïÙ³§´´ô¬Y³>|ø@o©««Û¢E‹V­Zõë×/!!�^ùøñã±cÇÊÊÊvéÒÅÛÛ›^ùäÉ“1cÆ�}ªªªîÝ»—¬IOO'Ÿ%F[åè»ví9r$óå¼yó.\XíY±—ìÀeá²pY¸,\. —mvÄÇÇ+))eff¾~ýúĉ¾¾¾Œ —ÕÒÒÊÉÉÉÍÍ% ›7ofý1K''§®]»~þüùË—/zzzÓ§O'òš��½hÑ"²Ayyù€,XðòåK¢°Ýºu»qãùÙíâÅ‹VµgÅJMó²óçχË6[à²pY¸l³vY&ÏŸä‘£ M5¸�AüÈÙ³g���¸yóæÒÒRF…ËÆÇÇÓï&%%1¥—�œœºuëÖ²eKz4((èúõëêêêUvHV’w…„„Ȳ¹¹9ëYYYfffDa™Ûkii‘++«íÛ·×tV¬Àe;pY¸,\. h¾¼}ûvÔ¨Q+W®dÔ0/ûàÁ"µ111eeeä¥ššš¿¿µó²d¥²²2k!;—/_&G¡—?}úD–oÞ¼)""RXXXÓY±—ìÀeá²pY¸, Ùqýúõ;v<~üøÕ«W¿ÿþ»££#£ÂeuttrssóòòÈÂÆ�ÉÊ„„„víÚedd¿Üµkõˆc"¬ÌzÙœœº^öË—/ýû÷_¼xñÓ§OŸ={vêԩǧ¥¥Mœ8166¶´´ôáÃ‡æææ666ÌÓXºt©œœsú¶Ú³b. Ø�ËÂeá²pY@³ãÝ»w«W¯VVVnÓ¦���}qÙmÛ¶õèÑ£mÛ¶Ìi×%K–�Í”””æÌ™£®®N\–¬|ôèÑMú/zK¢¶&L�¯`ÆŒd·DpÝÜ܈㊉‰)**’wYËa‰é9vqqápV¬Àe;pY¸,\. ÄeSSSòˆIIIÄqkÿô¸,`. —…ËÂe€¢�]öóçÏ“'Ovpp¨ýGಀ¸,\. —ІtÙ·oß¶hÑ¢wïÞUîúbç¹ã¯_½¤—™.KÖ¸�;FÖ¬YÓ‚…+Vpõ´Ò˜.‹@ jpY@³e÷¶Õ®§ÓËL—%kÈúÆ;)ÀC4šË2AWK®†·ûÑF?ž�ð;—¸ýÙzÜŒK ØèšŽ@4Xp)‰·ÉËÉm3àÓÇ�Œ¯.K–ɲ¾±O ð�ï²Õrâð?�} M�ׯ^Z©3ÿ4X)zT`eÚ‡|åÞgëw3.áô«Ï°­Rçs÷û:Ÿºù|Wá“ö}…[yOMµ=)?.ì©kUO5�±ÍoìÇØ>­ícl\Ãဇsõ[éN KÔö1¶Õí¼g‰š*v~êI¶�’b ^X¾pª¯ÏUÆW—%ËdMcŸàxÔek*îuÂõôar%™š¬¬X4}Ækò•{Ÿ­ß͸\. —¼OlTèÔq–ååådP#_É2YÓØ'x¸l“…þ ¹’Ì?Í&~Þ3&ؼ/{G¾’en|¶~7ãpY¸lóqÙ§�6|Š�z�øë´ñÈ¿’A�|%ËœŸ.špÙ& ý'r%™š4oKÞŒ±x/%�,“¯d™¬©ßÏÖïf\. —m>.˽ºsÐ`P5—mšà¿°Ø»s‰š^ÖËgëw3®—­/—jÑ¢Eax ÷\¶òñIÕºl廉wá²pÙ& þØj.Û4AiQM°O²NŽÖËgëw3nÓ|\VE^¡Å÷$yx7ŒËª(*2*ßNväÐaAapY¸,¨+¸ T \¶i‚[>«åÓ§OÕ–¥ÒE«äÝ_ÿlýnÖ47—uݱ§áçei—uÝwðÓüÍK–“å.;¾ÏÌý•ݾšd?ÞgÿE�\¶!iÜ®jûÖÚ Ø�|môþnhÇSÀe› hÅWng�ÖÔ.€¬'ïþúgëw³.K;(MII‡ÑöeÉé´ËæEØ[Û*ÉÉ“õÆúýÂÜ.Ó.û(,fŠÝhUeeé6mæM˜üŽè«ËÒˆ¶nmcfñænz—eä>z‘tŸÞ&öºÙüÈ8û߆+É+´‘”26èæq�Ùõ‹—tPV&ûÑ×Ô:½gya1ë¼l�.]Y'˜·¯^[e^6?!Ù~„�’‚B))ãü|h—­z’C†¾É)€Ë‚ÚC.c§ƒŒ®‡Ý3zaôvbhehchŸ`è93ú�dô?Åxšat†aâÂ0;˰8Çú/cØy†µã· Œv—£Üc/3Æy0þ¸Ê˜èɘr�1í:c†c–7cΠƼ›Œ· o3û2–ø1–ù3VÞa¬`¬ b¬füå»9”±5Œ±#œñOcw$c_4ã@ ãP,ãHãX<ãDãd"ãtãl2Ã5…q>•qñÃý>ãJãj:ãú†wÃ'‹që!Ã/›q'‡˜ËÉc„å3" Q�±�ñEŒÄbFòFêSÆýÿéÏ™/_2r^1ò^3 ß0—0Šß2žþ�ñ¼”ñ²Œñú=ãíFéGFÙ'ƇЉpÙ†o\¶¤¤ÄÞÞ^LLLYYÙÉÉé‡{1býûº> ù‡�H¹\Aãœ\ãQô¨`˜IrAj ònMM^kùÙúݬa. \–Ö»IÃí^Æ$‘¯dyùŒÙÄeß%§wQí( à{ê\N@(1Ú–""÷|üÊR3zvîB6Û¿výëÄ{—½söÓe§ü>úeâ=ƒþdyçŠÕœ]ö݃œ.Õ¨C¸^È �&FKâNpÐ%jWcƾËÊKö ˜øûèìȘ*5ìó²L—}—û¨‹ZÅn/^ΉM FÛR¤å½Ð¦ËN±ÿ23Çdà ê$ÿÞ—µ§Ñ]vc. ªÀ7.ëàà`jjZ\\$!!Z«êÏùóç7C—åðèê£G�î߿߽²@^6Þi6>¿2ý_ËÏÖïfÜ ¹¹,“V-[²ºlôEFzNô¥«dYQVޏ¬Ç¡£dY«WoºÆÀqò4òòÏIS=�N�…îj�«­1H¸~“‘]¸zÞŸdyÖ¸ œk <Ž�¤Ñ[�®1pœæ@bÚŒë§\È‚z÷®ßõ üBÞe«—åà²×êÓ‡®1pœ9‹Ú­ÃL¦Ë&Ü bü÷rõ¢¿¨“œ<. j\¶–.‹p ¸ìÇ�ÅÅÅCBBè—3*¨Í~š§Ë²RåJ–——;;;khhôéÓçøñãͼ¹\–Ñü\¶¦yÙ¿`â²9þ!´é~ºŸµgŲ0t�í²[/#/‡[ Ù»jY<Ð�C½ìzÇÅdyÆØqì÷~ÉÉ´1Ä’¾÷kÏÚõÔ!ŒMh—ݺl%uˆ!–eYyd%ó#jí;<Œˆ®½ËîÙ°‰Ú­©í²[W¯¥vk9Œé²…É÷ˆË®_¶‚:É “ಠöÀeké²øÇÖ�ð‡Ëfff’ß¹oÞTÞñ}èСþýû×f?pYv—=yò$í²'Nœ€Ërû³pY~qÙúš—åà²t�kO®šæeé’Ù¢„»>gÏÔÓ'+×.\\Åeõ4µ~z^. ~¸,\–á—MLL$¿s™âuîÜ9uuõÚì.[åJ=ztß¾}t�Y@�·? —å—e­—]6cqÙÒä´ÎTYëeE„…SoøV©—½tàˆÿY·ŸsÙÒôìÎtIî×zYa‘Tÿ À‹W–Í™—^ö0ßaüòÙ›¶TqÙafædùà–mì.[šSعcGÖzY‘Ô�p¸,ôâ×ù9—5ÙŸ«¨ÿ{K)9!añ¶mT5¬?l—Ýï›ÛoðïR2rBBÂâ’m;v×8áÿ.ÛÄà—żìOS­$5Ï{¿Ø�Ë2šŸË²âyðX•>RÓG�y—”F÷1È 3ÌZQVެ7ÔÕv½Äìc0yä¨JTƒ¹LbícP'—eäå†ÇŒ±ùMQN^JBÒP¿_°ûUFAñÇœ‚#[¶köVoݪ•²‚â‚©Ó?äVqÙÀËW»ªu¢×Ü:©JƒÜ¸Ä1¿�P”——’”44èìéÅÚÇ. ~šŸsY)5ÁAëCmÏ–šn�S5žd¹'¥a\V­—Ž€ àÆs¡çKw]Ž31é�w \¶‰Á.ûñãG111ÔËþènƸ,£9¹lMÏýªÔ» <Ã. ~ÈO¸¬ÙÑg$ÅEZY�~Ã^c øí?“-ÅÛô²t˜}­ŒvY1éÊÿŠK+ô0úýÏ‹y´Ë.óx¤c5¥­‚ª¨¤ôÀßçýòޏì&ï=Ëñmä”Å$Ûj ²Úv-ƒ¸¬S(uh‘–­ÎƼ©Rc`d5†¼5oÝþÀ —2âòrц}Äeg-Y¯ Ü¡UkÑ>Zú[œNû¯.Ëãð‡Ë2*üµÚ>–––kÖ¬a_¦�ËÂe9—eÀeá²pYP~Âe-Ný�VQÙŽ]¬ Xqcäù²*.ÛÅlÒD·—ÝÌ&‘eíÑËYçe—Üú8r�;Y¯Ú׈¸ì:ÿ29Õžäåo ÷oò}=yë幇îì+“Wí. (¸ðˆßæ«DgÛÈ* }2æ‚û—Sîh;yÑšc7.ß-£]v«‹/YßU];0—ðð£„T[�k±G¯Q;;%&ïÝ•ÀäßFOô‹Ï†Ëò8|ã²%%%cÇŽURRbí/[“Ë’Ö?&®X±¢aΜ׀Ër.Ë€ËÂeá² .ü\�A×QXGdÑv,÷¤²º¬í®è^Œ‘»£É²˜´"{��pËÖä­Õ·ÿ7~‹'Y�íÐ�µÆ`ÆNê®ÍÎ}Ò5ý,Ç‘—ÓÿvvMaŒš÷Ý¡e•:¾‘J\öfV¹B{5²æäí”Ý®”×öÑõˆ±ûÌuÊ­{¨o=ìêt7õÉÔð>|ã²àçÀ•ä\–—­¿gØÂeá²Í�Ÿîc`¸-±ÛˆUm:jÒN©j8žÕeGŸÈ!.;þdýo~Ö³LJAMH¤ÓDÿü7sØü½”kê fuY»E{[°a3u9ÝÇ`ÇåD»™«ÔzTÚØv<]/;yÑFòrìÌ%#&Ì! Žï%.žSÖßd(s'*Ô|ãÂey¸lW’pY\. —uá×{ruµ¥Ò¡¬kËy^Ör¹+Y–諾Àãù ¿Ï‚Â"äåüséæe»jsîÉ5|*uh}3[ÚeÝ" eäÛÉ+ xF0ïýòK.:|ÞGK Ù~î_ká²<\¶‰ƒ+ɸ,. —…Ë‚ºð.k~âu;usÝ%ׇ{b}úµJÿÑDµ¦î«¹^vqÙÁ‹O‘e¥ž ®<³˜[9íJ\¶J½ì¤Í—æòßúŽ®—�ý�Ç¡ðÿ­sK0¶sXë~<òµº�ù²C×�CŸœ‹y=À’:´Ãê}Ì>ýL­è=«k÷§û½8yÞ²«aé1ùe£&P-ŸWo;—åqà²M\IÀe#S¢ë!ò�hÂpÞ zQ8ÕÝeŸ~'§i%*ÛQ¨•˜ Hk ¥n½í7�qÿRM1©žC¦Ïºöޏì‚zYL•`- .K÷1Ð6¹�|‡Š>s™} ô‡Mh+¯ÒJL¢sƒéNŸNøt*î�¦¡•¬rÇV­ÅDZµVêØíÇM^é_˜.»á¨Geõº½´ËFæ\±íHwuÍV­ZË+*ÿ1cAÊãpY.ÛÄÁ•ä\–�yYÌËb^Ô…ŸpYÎÏý¢]vìéÂFyî×íŒBBÂQè/Ë¿Àe›8¸’€Ë2à²pY¸,¨ MÌe7¿FUÐ ųø¸lW’pY\. —u¡)¹l·>ºBB½µû»GäÁeù¸lW’pY\. —u¡Þ]–Ûϰåô¹CžGÑ5wNž¥]¶0 Œ,<Œ¤ ¾¤fJIH¤\»Y×zYê©ñ""7Nœ!"[Mí“tEuÁ—Ì£mlí†Y¿ºŸ‘?ØÈ˜vÙܨxjÏ—¯¾Ï}éuSU¥ý]v¸å°Å³ç~zü”Ýe‡³ZÀ+Àe›8¸’€Ë2¸é²Å>ㆠ“mÛV®­ôD+Ûg¾¡œ]¶À'`Ø@CI1ñžj�v-ZFÖ¿ �­â²ágÎ÷Të,,$D÷1Ⱦáo¤£'ÖZ´O×nNk60]öÑ�0+Ccö>%1w—Nuèܾƒ¸¨¨A_Ík‡Žÿ\â²o“Ód¥eŽmÞV’œ¶Ôavçªâ¢bšÚ׎�¤+ew­\« +KTµ¿¶Î¢éÕº,#¯(Äýê`C# qñ­ .9gö—ÍŽˆ1êg &*Ú§GO§m;˜5»Ö­W�“k)Ò²¿Žî¢™³è²áÞ7{vë&,,\¥�qÙpŸ[•oéêÑ.û±ø™¢¼‚¹‘1zrÞäÓÇ�£m�ß™ä+YnìÓ<\¶‰ƒ+ɸ,£¾ŸûUÙYö—ûËú<&-%U/ϰ­Œ{Y<òÜ/Fîc*Øžûõ_bª‚¬ÜÊy6î3lß=•‘–¾à| . x_Ÿ«ËN%¿3ÉW²Üاx¸lW’pY/¹ìÅm»¯ü³¿$46ÙíjŸ.ÝæŽ׬\–Ä�3®‚‚‚�¯4–Ë–?{¹gÓV%¥�OžÁeR^^>mü°Ø¨Pò;“|%Ëå?\ÐÌ�Ë6qp%9—eð’Ë>ˆ°j%-%Õ^^ÁqÜÄw‘‰ÍÍeéž\�8/ÛºU+Ey…›—.ã¹_€7!þ:uœ%ñWò;“|%ËdMcŸh|à²M\IÀe¼ä²µy†-\–Û5x†-àe˜uôïLºÞ ±O 4>pÙ&®$ಠ¸,\. ø„¼œ,æý^ôïLú>0²¾±O 42<ê²+Q•݈_�Esÿhì&ï—eÀeá²pYÀ'ìÞ¶šÙ‡‹ù;“¬!ëÉBII‰½½½˜˜˜²²²““Ó÷6bÄúi#³gÏæÞ9ƒ†�G]€.˨o—eíÉÕ0.[|'œj¹Í#.k ©í¼í¸,\Ô;Îg>�ù;“¬q;wŒ,888˜ššIHH„†ÖªŽvþüùpÙ&\4_ಠpYª}ìš�pÙúrYª}ìî}pY¸,kbb")ùöî,¦õ�¸ö}ßK#„VíB***…,W\®P¸–›R¶,]²DH–,I’¢H$Kh•ö=í{‰ÊZý#TçÿN‡cîL%”Êü¾ÏûxμsΙӨññö;ïË3|øp''§¦¦¦>ÕgæÇ�¹¸¸bbbð‡ÖéÉyÀ²¿GÀ²ú Xë˵º²¬†œ‚ÏÎ=�ŽËjÈ+ú8ïíËOÒÃáÈÁήpà€¯¯ïŸ�ê3³¨¨ˆ¼ºJCþðøñããÇ�ïÉyÀ²¿GÀ²ú XËRXvý’eX~YsFî±mÎŒŒŒ9·ÂÒ²·½}ÙXY�×o¨ŒKz™–ã{ø(ÏN[{°,XöWfÿþýÛ¶mëfggg111AAA¤ºwïÞ¡ô%''' °råÊ>à{jhh 766¶qãÆ¥¥¥á�555óçÏ9rä­[·ðÎÚÚÚ?þø�“D"9rõäçç£c‘h©^ÝÍÍÍ‚x¸fÍšõë×wzU”¡úÌLOOG''æš½xñ¢¢¢bOÞ°ìï°,„~–ÅúÒ²f:ºøº¬2’.«Öµ#Ú&åXN5ò%ÚJc)k ,§™þç©´<)Q±žÞ¸e«ïF‘q�MF–}öà‘™îdòµÃGžØºƒ°lSB†í¢%$ I>n3½ÉáQ´–Ýoç8RšÔ�eQkË-abb 8ì� Û”žk»d)IR1Ôl²AEÔcܲhûóW'5ÔÅÞ±‰ö¿–m/©’:tí_V”5~îÇЙË%"ÈJ‰‹?¸ˆ[¶:‘¼–BDX3£Ïg*í²qs;ŽÚ§µ* ŠÛ×ÛO™¨ÃÃÍ=zÄÈð€ dYË™_ß4u ÊËY³)Ÿ:uð�’œÝ[655UBB¢¨¨èíÛ·gÏž Ç:,«ªªZVVV^^Ž6\\\(A²ôôô”••mmmmkkÓÔÔ\¾|9Âkii©��Ö±¢Á„ Ö­[÷úõkDØQ£F………¡£Ðiííí (8¨««ãää|ñâÖ1v‹ðšÚÚ«¢ ŒËB(–…ÐoÀ²Xß�˶Æg¦_ ’JòßíÚé¸,e½,Õ¸lW–ÕUלk4­.òqÉ­ûš J„egL5�¤Wv7²!>ÝÁj¹š¼B[Vá÷Z—efb*B.(Ÿ=ÕØTorYDlCÚ‡å+ÔÛ ÊˆqÙÖ‚²ô›wd‡Éø9FeÙÜðHta‰×C)-ÛZRÉÊÂâåêÖ�eñÖZþ4ýîY™áþÇ= Ë’¤¤’Âî5—TìÙ¼UTX¸ýií¸,e½,å¸lSY/O\ØܲkÖš¸,=¤{ËfeeÉÈÈ<þœ²¡388ß QPP =pøðáH¥ééé¼¼¼T£­™™™üüüHºøÃ“'OZYYaC³ .A`]±bÅË—/ñfÍšuôèQ´ˆ¿V§WEÚzYb¨—¥Û€e!ô°,ÖËZ™šé,Û¬lz^cà±a³åT“^±lÉ­p´� ‹×<<ãƒ[¶ú~ Ú¨‰x„´eðrsg_ûÞzYÄͰÓÞ²ÕÑ äs>JÄk ÚòËÈç »GUcà±c—¥Ù *ËF\EÇVÇ'SÝûE’”Ú·qË7-‹×xìÚc9caÙÃ;wá5¯ó ÑþOÓ²znYÔÖ.·^‚lËÓçB‚Á>¾`Ùß8†††´?¶ÚÚÚ´{úúúêééMœ8ÑÅÅ¥¹¹ë°ljj*þlFF‚)¾íéé9jÔ(VVVülQQQ7oÞ¤ým>êDÏ21¡ÿü2200 mÊŠ‹‹§L™‚K쯪ªŠ6LMM‘¼»º*ÊÐ~f"¼v:��±±1AyÊm<`Ùß#`Yý,‹õå¸lÐ^7µÑr\ø?{:*j½bÙèsÑ9‰zÙò;¸ec}üiÿå=~æ{ëeë§Î�f¢¥<¶5·$öRP'ç<}A6ÈÃSMA‘‹ƒóóW§¡ÙóqY7÷n,t꬚¢ç—3k�#,ëwì$nÙ÷eUè©âÇIßeÙÜGñìll/ KügR:Õ½_µñiLLL!žg3óÚ‹*Ü·9#Âö°^–…™ùyr²¬¬ŒLè9_ܲi·ÃqËÖ¦g“ÏìåÓ˜WÜ^õÜÝy·¶šz÷–ÕRUëʲä§þ{ï—þD�CÿºèŒÓÞüÏz¸÷‹NÒ½eoÞ¼éêêZSSóæÍ›9sæØÚÚb–UWW///¯¨¨@»víB�iiiBBB………È—nnnè;Y�•¨—-++ÃëeÛÚÚÆ�ooo_WW÷âÅ ooï'Näåå-^¼899¹¹¹¹¤¤ÄÀÀÀÌÌŒ¸ GGGbø¶Ó«¢L?~fB`À²ú Xë3Ë–_¿ËÀÀyò\Ë£Ôx/?’¸aÙ™zSìÿ\ò)!“Ö²ŸŸJÊÆ-;ÏhÚì)Fob’*nGiO êeuTÕÿ˜jR_ö`œÒX¢^ÖÂÀÈ\Já­ûÍÉYÉÁèaKZîÜû…Ú¾ I’rŠ,Œ¦™O1( �lÎÌO¾v=lyRTõ˜üÕù]iÉ-Ž !IJÑZµ[^>¬,,Îë7T=N~•þäâ>žƒ[·ãóÌ›n6ÛØôMvAE|²Ñ$]ܲåñÉä3_¹ÖRR#Œ$%õMËΜfb¿òïOUÏi-;ÓØÄ~ÕêO5u„e½¼E…EÐK'¥‚eé$Ý[öÝ»wNNN’’’|||³gÏÆïÁB–Ý·oߘ1cøùùmllˆaW´›„„Äßÿ­¨¨ˆ,‹:Ÿ>}Џ)((ˆßã…ï‰h»hÑ"ÑŽX[[£Ó"à ãrrrŠ‹‹£g)Ëa‘tÑ·ô… º¹*Ê€e!”ËBè7`Y¬/k ÜþÙ &(„07^i¬Ý‚Å„eã¼.ÊÉ gfb¢šÇY6ÎûÒ×§ÒòJCÃuÕ48ÙÙ•dGynÝIXöixŒé$=Úy ãÓ—Z�*ÍÅÁ¡­¬rã˜ç�Íc€ZSúa�Ó»ö6¦=q´^1BšÄÅÁ©­¢zÃÓ ŸÇÀmó61aaòW§ªf·ÔºSË¢såš‘Ž.7'×�Ž© Oœ"æ—-��×§ÍÉÁ¡4FÎsÏ~¢ÆÀmÛN1aò™Õ5ìlV~Ó²q7ÃädG133SÍc€Z\èí¯OuXöcM­¸¨¨�®ÌÉé&Ȳ999¿ò322�q{¾zXB°,„~–Åz{ݯÏw}ýÂ5lÉ ŸYv`¬ûEnÄ¢_ë~Õ§f!¡nY½¶×°myúLP@àò™s`YH7ùÅ–mmm]²d‰��MÏËB(–…ÐoÀ²XöWYµ0o_FFÆÈ€«ýeÙöÚ—‡w¹HIH|D‡ƒe!]çWZ¶©©iÈ�! Tw}u°,„2`Ù.ãàà76þÞËb`Ù_hY|N®~—egc½s9Öý‚ ö€e!”ù­,;lذ”””®ž•’’êæYÚPZVQQŸ¶CXXøÏ?ÿ|õêÕÏ^kBuÁÝu�XËÒ“ea [°ìo°,„2¿•e»ÏOZÖÏÏmTTThii­\¹²O.ñ¿ùÞ †|oÀ²X, –… €e!”é5Ë~s6f �!C†°±±�7.-- ïtvv\µjÕ»wï:í)..622âáá‘““ Ĭ©©™?¾°°ðÈ‘#oݺ…w#—´¯5wî\bJäãÇ�c3†üñÇè…H$Ò‘#Gð3äææ¢CxyyMMMÿúë/ZË¢¸ººâK§ ë93Fó[xÊ×Âþ;ÌÙÞÞ>a„uëÖ½~ý:??Ÿí6zôè;v444\»v�‰‰©«qÙ+V`ôD'A=XÇm˜´×‰ï£ªªZVVV^^Ž6\\\ºzuªb]Ôtz,íûöS—t°,6H,Kž·k‡ nYmå±^;]¾eµU;&çË‚e!}°,„2¿Ú²x†^PP�••%##C9[2mOrr2??ÿÇ�ñ‡Ë–-sppètÑ<¬‹ŠRüµ°ÿÒ033�7.ÊÉ“'­¬¬’’’„……‰N333ÚzY!!!KKË—/_bôDlíæ:±.VìôÕ©NˆuaÙN�¥}ß = XËþ¾–%O4{Ø, –ý-–…Pæg-khhH»^9þ+xªxzzŽ5Š••ß'** uúúúêééMœ8ÑÅÅ¥¹¹™¶çÆ�JJJÄIPç‚ nÞ¼‰pIû„e;}-J¢3 ~&&&FFF´m``€¬©ªªJœmíÚµ�ÖAôÌÎÎÆ·;½N|ŸÔÔT¼3##1´«W§:!Ö…e»:–ö�„|3`Y¬·×Jø ,kNz™þÄ÷0y1Û�ëíÁ²`YÈ�, ¡Ì/²lZZš��Paa!–››Û�!C�/oÞ¼éêêZSSóæÍ›9sæØÚÚÒö YÊÉÉmÚ´éíÛ·÷îÝãääD§B’#êeËÊʨêe;}-¬ã†°óçÏã lkk?~¼½½}]]Ý‹/¼½½Oœ8�^KVVÖÙÙ¹¡¡¹³ÓzYÊPÒ³ÓëÄ÷QWW///¯¨¨@»víêêÕ1ËR^0ñÕuz,íûÖ £t°,ÖÛ–U5fëëI*j<œ\j£åâÎúâ–5ÓÑÃq•‘�tù{];rm‡eÑþNËVè«krsr^Þçf6Iÿón’R.«mÛqÔvmY3ÝÉ_÷_»¾ufÖDĉ ùísÃ-»|ö¼ÉZÚ­ÙT–Ýoß±˜m×–Å ÊÛòJÑç@ÀadÙ¦Œ\Û%ËH’’ˆ¡f“ *¢âqÈ¢íÏ×0t¨‹½c;êü¯eÛK«e†J¯ýk)e��Ÿû1tæò¸$dY)qñþ�¸e«“ÒÉ‹Ù>!/fkfhôåÌÒ.7·W權‚âöõöS&Nâáæ=bdøå YË™_3¦®AYc`9k6åS§Ü+ÉÉ–-JJEWR‘‘ –… ¢€e!”ùuõ²|||ÿý7¢!òå»wœ$Ñ¿ ||³gÏF2£íA"•pss�3& ?ÛÓ§OÚ‰§0ŠÚ×B�ÁÁÁRRRèbƒE‹‰vÄÚÚ-DI--­îç1 BEÏN¯í³oß>ÔÃÏÏoccCŒ%wúêT'¤º`Êy ¨Žíô}ƒ|3`Y¬,+ÀÃuÒ»áa¼ëÚõ¼\Üõ÷bˆqÙÖ„¬ô‹A²Ò$—„eÅ…„{_jE;|”mMÎN&ï¶÷`OÆe[3òÒCdIÃü÷ÂÇeœ½ÀÃÅ•wó®ïÞƒbBÂÏ‘;iÆe¿iY|\–™‰©è~²ìì©Æ¦z“Ë"5¤?qX¾BMA±­°œ—m-,O½+;LÆÿÈ1*Ëæ†G"D&^¿EiÙÖÒ*V/×CÝX‘m­¨I¿û@Vf¸ÿ‰S„eIRRI·ï5—TîÙ¼UTX¸�<@K=.KY/K9.ÛT^ÍËÃv·¬Ãšu&†0. \ËB(CGóËöK~ñªÖ�ï Xë�e­LÍikâQ¶YÙt5.KÔÈËŒ8³e'U��‡ÃË©&„e÷¬¶í´ÆÀc£“å4Óž×xlÞfi<�¨1p^ýϨa2H´ç.þX½, âfØioÙê˜ô°æQ^cÐVPÎËÍ�NUcà±c—¥Ù *ËF_¾†Ž­ŽO¡º÷‹$)µoÓÖoZo»÷XΜEXö°ó.¼Æàu~ÚÿizvÏ-‹Õ¿^»Üfñ¼ù²-5Ï…ƒ}.‚e!ƒ+`YeÀ²}°ì@XëƒqY¯­Î„eÍtôv,_…,´ï�Ú9.܈:*j„e/îÚOX6ÈõˆÚyŠÝÔ»·l�ÛQ59…¯û«ª–}ùITOCë‡ëeëãÓæN3ÕRÛšWëD«ùÐ3Þ²AÇ<Õ¹88?_ƒ†fÏÇe}¹wcÙ S^jJÊ\œ_ά5ް¬ß±“¸eß—W£§Šã“¿Ë²¹�ØÙØ^–øyžýø¬, \ËB(–íÛ€erÀ²XXÖÉʆj\¶öN:0äàÑÆ¨ÄöÄlwûMȦ„eýv»â–­½ËÄÈrèXclr{j®»Ãòn][¶6â1y÷�ñéí™î�´•Up˶eL›8iŽÑ4 ïÝû̲XAù›ä,A>þ3»÷UF=fdd|™”AuïWmBSˆ§WcV^{q¥û6gmÄôžÕ˲03?OÉD–••‘ õöÅ-›vç>nÙÚôlò™Ïù4æ—´W=wÿw·¶šz÷–ÕRUëʲä§þ{ï—þD�C»\tÆio¶µƒ{¿ ƒ.`YeÀ²ú XëË òòE{z7FÄ»ý³�‡“«þ^LyÈ=†HÏs-�ÒâÏ]"‰KtjÙòÐûäÝNû´ÄgÄû|Þ­k˖߉ ïïåÛ’’ñ IB’°ì®5¶ò#Fþ/9+êü%.®œ�Û?P/‹O.»oÃF’¤ä‡'EFÓ̧Þ�jÎÊOµ02nÉ-.�~L¾¿+-y%ñWCH’R´–ÅÊžÞ:w�•…Åyý†ªøäW¹��ç18¸u;>�Á¼éæ³�MßäTħuT8 Ë–Ç'“ÏÜRZ#Œ$%õMËÎ46±_ù÷§êç´–%?µjõ§š:²�^çE…EÐK'§�e!ƒ.`YeÀ²ú XëËnY²\g¬*7§êè1±§/àó¸ÙnBž¯4Öná_�ZKÍu[ïøy7e»?—toYÔÜì7‰ uì?VÕn±nÙÈs‘_Ÿ ¿vÌcà²Î^nøˆÿ¥dÿ˜e›Òs…NïÚÛ˜žëh½r„4‰‹ƒ�õ†§^,ë¶y›˜°0ùTÕí–YwjYÔb®éèrsráSž8MÌ/[ú(Awœ6'‡Ò9Ͻ®D��Ûö�bÂ"ä3«kØÙ¬ü¦eãBoËÉŽbff¦šÇY6îÖ¹Q_žê°ìÇš:qQQ]=˜“ 2–…P, ¡ß€e±Þ^÷‹lSç}½>¿,Y±xËÀ[ÁÀ_÷ës£Y÷«>- uËêuý»†mËÓç‚—ÏžËBcÀ²Ê€e!ô°,–ýå–ÅÊk¼/222F^¾Ú_–m¯{ux×) ‰�ÏêÀ²�Á°,„2`Yý,‹�eûòøœ\ý8.ËÎÆ&.*zçJ¬û¤ËB(–…ÐoÀ²Xo[¶�Ö°Ëöz�¬a ÔËB(–…ÐoÀ²X, –… €e!”ËBè7`Y , –ËBaÀ²Ê€e!ô°,6,ûü^ô�!C^‹Ê²“µÆ­]°¨OÇe5””}\õŠe�õ&é;»²œü%�“½bÙ¸ÐÛÓ&OááæfgcSW{áØÉ^·¬†ªª�çéNÇe5TÕ|N�ËBú4`YeÀ²ú XÌ–½}â û›GÉd‹n‘WÁͺvkYvýr¬òYsAé±]{sDý¤eo_ºÌÆÊê츩2-óe~‘ﱓ|¼¼;6‚eÁ²¿SÀ²Ê€e!ô°,ÖkØ:YÙè«irsp^v9`¦£‡/Ù*#!é²j]{b6nÙgw"ÑS<œ\òÃGœØ´­Ó³IúŸ�•”rYcÛž–GeÙ¶ô<’¸Ä±ÍÛ Ë:ZYOPQCŠmJÌ´]´„$!ÉÇÍc¦7¹"<šÖ²u�’NŸ!"((*(´dÖìW i¸bR²mÿZ*#5”Ÿ—wåü…ÿËÈ¥¬1°œn>äK´UÔNíÞ«4z aÙ¢‡1LLL± T–Ý¿iëHÒ°n,‹Z[ùStlÀqO¤Ø¦üÛe6$))>^3C£Š„Tܲf†S?¿'ÒÒ.›¶´#×þײíÏêÑSk—YSÖø�<…Î\žš�,+%!ñàZnÙê¬'äõrK*�eͦNû|fÉÅi[;Bm‡eU””¶;nœ¢«ËÃÍ=ZV6<ø‚¬åœ¹_ßMMÊ˹”Oi�:ꡤ @@¶(+›üþä‚e!?°,„2`Yý,‹õ�eÅ…„ŸõmEý_Æe[ã3Ó/É%ùï>€[VWU}®ÁÔºðØ’�»šòŠÝÔ˶¦ä¤ËJ“ü÷ºÑÖËî^c«.ËÌÌ\óYv¶‰©éƒ²øä†üb‡•«Õ””Ûªžã²­UÏÒÃÊÊ ÷?qŠÊ²¹1qèÍL¼NiÙÖgõ¬,¬^GŽvcY|P¶µîezT¬ìðþg¼Ë’†MzÙ\S»gûQ‘öŽZªqYÊzYÊqÙ¦Ú:^ž¸‡¸el×›L�Ú¿ã²¾§Ð�´ÁÞìVÿÙ_Ÿ™�°,„~3,ÛËZ™~‰¤Ì6+›N-»gÕºNk <6l¶œj‚,[rý:¼.<¯1xèyî›÷~ylt²œfJkÙš±ÌLL‰—‚�e¯tççámNά~‹NX‡×´e"nf‡„QZ¶4< íS~?¯.ȹy=|›XI¶`qxT7÷~QÕ¬]¼dñ¬9²-y%BüÁ'Ïü@½, + K˜�‚luR:ùúS2ðê‚¶Êg¼Ü<Ù£¨j I�!1~W˜˜˜ÚQg�-›{÷!;ÛËÔ,¿ÃGÅ„…?¢¿¿^¶>=g®©™–ŠjkùÓØk7:¹~Ÿ‹H±A§½Ô””¹89?¿'Zãz>.ëãq¢Ëyû¨)�ýzfíñ„eýNŸÅ-û¾¶ž ý´Ìï²lnJ;;û˪§~ç¼ÅDE?¾mËB �Þ XB¿Ëb}`Y?ç}¸ekïD¢ýCmŒLhOÌr·ß¤­8–v\6ÂÓ›Ö²µ112…>Þø(¥=-×Ýq+zªSËÞ9qy7=0„��!'8 Y¶2<š‘‘ñelr7÷~á㲕ýÀ¸¬–² Õ½_úãÆÚº]GCsóªÕ?vïjor ùùϸºU&¤’¯?+�êÞ¯ÚŒ'ÈÙ!ç.4–¶?­uÿ×E[M½‡õ²,,,Ïsò‘ee‡õ À-›…[¶6¯�|æ‹—+ªÛ_¼qß»_[C³{Ëj©«weY-u ª{¿ô'éÚ·_gü„ÍàÞ/ÒëËBè7`Y¬/-[rù2òä¹–G©ñçüHâ¸e±äµ? §Õ‡?*½qoœ¢2­eËo= {Ƨ%!3þBùØ.,Û–ž7LBr¸ÔЉªjÄü²FæúS Ãî7§d'_¶0˜Ú’žKU/«§©e®oð,&¯—5ÕÕÇëeÍ'èjhåݾÿ6%ûìîý´õ²3 §Ú/³ù”_JX6ÐÃSTH]pqDl§–íɽ_¨íÛ´•$%õ¡´ÊÂØÄÜpjaÌãæ¢òä°{Ʀ-eUå ©ä÷$èzKyu|èm’ÔPZË¢vë¢?+ yƒªô¬WÅ�{òñòÜù/>�Á¼3gO7S\^‘že¤¯�[¶<=‹|æ¡-ÏjãïÞ' úMËÎ4�n¿fݧ—oh-;sº™ýÚuŸÞ4– ¼è'*"B~²sÀ²¤×–…ÐoÀ²X_ZKÌrûgƒ˜ + Ëx¥±v –}z;Âtâ¤îç1p³ÛøùXe»?—teYÔö¬³Cg¸àâJX¶1!Ãq©õˆ¡Ò\ȯ7Ž�¢�ÇàyL‚éæÂ"‚‚‹gX¼xœŠ[ömrÖš…‹¥%$ùøWYþI5�²lÜ•kr#F231k«¨á–ý˜_&."b0abWsrõвMy%‚‚§÷lÌ+v\µzi''ë ï ø<nÛ�ÅDDÈ†ÝŠU�Zµ˜�[FzúÜ\\øÔ�g½‰ùeKSÒtÇOàäàP’“÷z¢¿Öýž½ 7šu¿ês ‘}·ØÚõï¶-¯Þ \¾à –…@ }°,„~–ÅÀ²?mÙö¢ŠÃ[wH‰‰“ïú`–E-ìÒeFFÆÈë7û˲í�ÿ;¼ßUJRòã›°,é‹€e!ô°,–ýi˲³±‰‹ˆÜñöý�u¿~�eñ9¹úq\–��]\LìÎõvݯY³fá³7¬Zµê—ÿüA �^XB¿Ëb`ÙÞ¨1øá5léÁ²ƒe Ûµkׂe!�A°,„~–ÅÀ²`Y°lGÀ²Èà XB¿Ëb`Y°,X¶#`Ydð, ¡ß€e1°l�-ûüq yî°¤ôbYm5u/·#`Y°,ËBè7`YŒž,ûyrY°l/Yöóœ²`YÒßËBè7Dz›í–¡=û¥­þS§×JøIËOÐY¿ð¯_0.«¡¨ä³÷@¿XÖXo2~×<;»²œü¥£'zŲq7oOÓŸÂÃÍÍÎÆ¦®<öRfo[VCUÕçä©NÇe5TÕÈKÚ‚e!H, ¡ß ËöczwÝ/°lO,»~™ VQÓœ_rìß=ŒŒŒ9÷#Ò²·ý.³±²:;l¬LÍx™Wè{ì$/ïN‡�`Y°,BËBè7`Y¬ְݺÄz’Š'—Úh¹¸³¾¸eQ¿ý¿&©¨sqpÈËŒH<ïh½£”ˆ(/÷ ‹ymˆ¹][¶îaÜB3AQA¡%æ³^E'â–U-·}Åê)ZÚ<\\£‡É„ŸöÆ-ûôá#ÓIz¨S~ÄÈc[w�›LYc`ij6äK´Çª"ÅJ‰‰=ð¾ˆ+¶:*ž¼²kr&Rì³GIf“ ȧ){bçn²M™y¶K–‘$%ùxxÐÑ ´–Ý¿q yÝÚ®-‹Z[ÙS&&¦€cž ØÛ.³!IIññðšU$¤àŠ534—¢•‘–vÙ¸¥uþײí5u詵ˬ)k üNœBg.OIG–•’�xpõ:nÙêÌòWW\Ž,k6uÚ—3“\¶nkG®í°¬Š’Òv‡�S&éòps�)‚ k9{Î×7MS“²ÆÀrÎ\Ч´N¹URP [”™…®¤"¯`ÀZvÛ¶mC(²yóæ_þS�@~*`Yý,‹õ�exx£Nz7<Œw]»Qµþ^ nY ÉTßÀ¦è¤e3,�ta_=|\tý¶¸�pÐþÃÝXV_Ckú$½šð˜ª»QH®h›°,I\"éRPsRæžuvHºí™Ȳ:jê LÌêcKïFŒSKkYÚqÙ®,««©5wši]|jɃhM¥±„egO56Õ›\×�‘ë`½BMA±­¨â{-‹�Ë233E?F–�mlj:Ù ìqRC^‘ÃʿՕÚ*Ÿã²­•5é÷ÊÊ ÷?qŠÊ²¹Ñ�Ð…%†Ý£´lkM+ «×a÷n,‹�˶־L�Œ‘>ÂÿŒaYÒСI"šŸÖîÙ¶CTD¤ýÕ[ÚqYÊzYÊqÙ¦çu¼<ܲ çý¹88ˆzYëYsÖ/XÜ•e£Ïú231õ²ï“2­’ü‚pËúí=ˆ[ö}r6ê/¾u?ú¼7''Q/[ýÖ�ö»ÂÅÁIÔË–GÆá–� ¢•}èÙóß[/[Ÿž=×ÔLKEµµ¬:öjH'çDÌ­® :奦¤ÌÅɉwêh�ëù¸¬�Çñn,äí£¦<ö뙵µ Ëú�:ƒ[öýó:ò›šñ]–ÍMNeggYYíçå-&*úñMX�ô]À²ú XëË:YÙt:.ûc–ÅÇe+ïDv:.KkÙŽËj)�¥´¬,iXèɳ¸eÓ‚C;—�ð À-[ÏÈÈø29ó'ïýBíMv� ?ÿ™ý+RÈçÌÌ£º÷«6#‡‰‰)äœOcAI{u­û¿.ˆ°=¬—eaayž�‡,+;|x¨Ÿ?nÙ´‡Q¸eks Égöõk,¯n¯í¾gŸ¶†f÷–ÕRWïʲZêT÷~éOÒ=´w¿Îø ›í7 Š{¿ Èà XB¿Ëb}`YA^¾hOïÆˆx·6ðprõ²?fYÔôÔ5Íu'?»‹×Ëšê|­—¥µ,–]8AEí›õ²3§Ú/Yö y·Ã²ó¦™Î6š†üZñÈh‚Q/«£®ù‡Éôú„´Ò‡1ãÆªõ²FÆæS ïG5g$‡ZL5nÉ+ù�{¿°Šgû6m%IJ}(©´0617œZý¸¹°,ùÖ]ô°¥´ªÂÍa3êoHÈ ²lÜ¥@¹á#™™˜ðy Jãu5´8Ù9”F�öÜéBXöiL‚©ÞdÚy 3ò­WŽ�&qqpj«¨Ý8uîÇæ1@–mÊ-<½ï@c^‘ãÊÕ#Hø89‘SoœóÁ+eݶïaea¯®ag³²SËbÏ^Ä\ENåæâÒ15AàÙsÄü²¥Éiºã'prp(ÉÉ{t#j ÜþÝ-&"ÂÊÊ:^SÓîïÕß´lܽûr£F333SÍc€Z\ø¹ÑøSZ¸e?¾~+.&f ¯?Xæä‚üdþgä7XB¿Ëb½½îÙ¬Îûκ_·=½xùze [¬°‚ÜŠ*Ⱥ_XM=¹Ñ¬ûUÿ¤ uË?ëûw Û–—¯.û\Ëöb¤¤¤RRRˆ‡Ã† £|øINNÖ××çáá>|¸““SSSÓŸjàÖA~ã€e!ô°,ö;ZöÊÁ£×ŽoLÈȼª$;zµåŸteYÔÂü.322Fßè/˶74Þ·_JRòãë·`Ù^ •e2---"""»wï~ûömuuõ�|}}ølÿ³ò, ¡ß€e±ßѲ/c“-M¦ ðò ·]´ä]j½YŸ“«ÇeÙÙÙÅÅÄî‡ ¢u¿Böïß¿mÛ¶®ž�;÷ëšÇ�Ç(ÆeÅÄÄvîÜ)//ÏÉÉimm���=nÜ8SSÓ††üðÚÚÚ?þøCPP�D"9rõäçç£S!ÑR½�›››……ñpÍš5ëׯGÎÎÎè…ÐV­ZõîÝ;ª£þgä7XB¿Ëb½mÙŸ\ö×k ºZÃ,Û×5ƒn Û��î-‹u]c€ˆi``ðìÙ³ÂÂB!!!99¹ŒŒŒ×¯_ëêêa„uëÖ¡NDØQ£F………!�¢ííí Ú;Þ"}BÛwîÜaaa©®®¦Ü­©© �sË–-T‡S}Ö‘§ÃûR­‹.iüøñݼ:°,ä–…ÐoÀ²ØodYme/ç=`ÙÞ²¬¶†¦×Ñcô`Y<�Pß´¬††Æùóç ’öܲmmmˆ’öööuuu/^¼ðöö>qâD^^ÞâÅ‹“““›››KJJ ÌÌ̈×rtt!†ooÞ¼éêêZSSóæÍ›9sæØÚÚR]ÕgÒ3ú�".õâÅ‹ŠŠŠ=yÂ_dÐ, ¡ß€e±Þ^+á'-Ûéº_]YVCAÑg÷þNÇe5”|\\ûŲƺúø ;»ò¹KîÇzŲq!¡Óô'óps³³±©+�½€”ÙÛ–ÕPQõ9~²ÓqY UUŸž`Ù¾Î7-,%%ÅÀÀ@;�A÷–Å:æ1X´h‘hG¬­­‘hp�q999ÅÅÅѳ”å°HºèÛøÂ… øÃwïÞ999IJJòññÍž=¿3Œ20. éÇ€e!ô°,–íË®_j�•V7?):æ¼›‘‘1ç^ÄOZö¶¯?+«óÇʤô—9¾ÇùxxwÚ;‚e3˨ddd ãö|õÚzYt8ÔËB~MÀ²ú Xëƒ5l·.±ž¤¢ÆÃÉ¥6Z.î¬/±†­ý¿&©¨sqpÈËŒH<ïh½£”ˆ(/÷ ‹ymˆ¹][Ö¬c¤“��AFRÊe�m;¢mF�¥ñô¯wÉ(«PÖXšP<5VAVJTì�—/nÙêˆ8ò"®‰éȲϢÌô§�—¨!{bû¿„e›ÒžØþµ”$!ÉÇÃc6Ù "*ŽÖ²û6“—¨íÚ²¨µW211xœ@�mzRh»t9IRŠ|NÊÇI¸eÍ Œ>uC¥]7·#ÑþײíUÏÑSk—.£¬1ð;v�¹<1 AVJ\âAà5ܲÕéY䯮°ÖÌhêç3K“\¶8µã¨­¥¢¨´}ƒã”Iº<ÜÜ£GŽ  F–µœ=ç뛦¡IYcðŸ§45OqW’W ,[”ž‰®¤âI.XöwJkkë’%Klllz~ígÂk§óÃÏ”Ûxà/òËBè7`Y¬,+ÀÃuÒ»áa¼ëÚõˆªõ÷bpËÊHH¦ú6E'-›a�¤‹ûêáã¢ë·Å…„ƒöþæ¸lkê“ô€ë²Ò$ÿ}n�ŽËRÖËR�ËveY] ­¹ÓLêâ’K£4•” ËÎ626Õ›\ö0¶!5ÇaÙ 5ŶüÒïµ,>.ËÌÄ\ùYv¶±‰éä)e±ñ 9+V©)*µ•Uã²­eÕéwîËÊ ÷?v’ʲ¹‘±èÂoÝ¡´lkÕ3VV/·#ÝXo­5ué£d‡÷?u†°,ièФ{›«jö8mi¯M;.KY/K9.Ûôô9/Oܽû¸eþ±51š 㲿SšššÐw‘‚‚Õ]_´¹|ñÌÛ7¯ñmâ³õ\<�uÌ/;þ| Êùe»²,Ú œÉaóæÍ½ûuA~ã€e!ô°,ÖËZ™šÓN„²Íʦ«qY¢Æ@^fÄ™-;q˱ۈ×D�:ÏÀÀð¿˜d¼Æ`‘‰ù–¥6=¬1ðØädilÚ+–-¹‰6dñƒ‡çýpËVGÅ£�šØ¼À -¯”—›;ûֽﭗEaea ó¾€ [ŸB>gb^cÐVZÍËÍ“}/‚ªÆÀã_˳¨,}5[�’AuïIjè¾-Û¾iY¼ÆÀcÏ~ËY³ ËÞµ¯1x]\†öš�×sË¢¶ÖfåbKKÙ–º—B‚‚Á—üÁ²ô™CûœüΟÀ·‰Ï:Ôƒúûï¢ ô°,„~–Åú`\Ök«3aY3½ËWá–õûwnÙ„óþ\D½¬õ¬9ë,îÆ²AÜÕääÑ!8uTÕ{ŲѸ88‰zÙò1¸ec/ÒÂ=ôԹﭗ­OÉœk2]k¬Jkqel`p'çJmOËswܪ­<·¬–¢rW–ÕRR¦´¬,iXè‰3¸eÓ‚nv:.ás ·led##ãËÄ´Ÿ¼÷ µ7¹‚üügö¨ŒK"Ÿ3=‡êÞ¯ÚÔ,&&¦�³çóŠÚ+jÜwîF„ía½, 3ËóŒ'Ȳ²2ÃC}/á–M»�[¶6'Ÿ|fŸ‹�%íµ/Ý]öj«ktoY-5õ®,K~ê¿÷~éëL:´g¯Îøñ›íìû½_ð«íŸÉ¦õKÃo_Ǿ|Ö¡mÔÓß¡»€e!ô°,Ö–äå‹öônŒˆwûg'Q/ûc–-¿õ€��!òÌ…–Ĭø —Iâ„egN6°_¼ôSZ.­egN6´ÿkÙ§Ì|ܲó¦™Ì6œö&!­â~ŒÑ¢^VGMããéõq)¥áÑã”UˆzY Ãiæ“ ïE6gæ%_½ia4­%§ðîýBm߯Í$I©…åÓLÌ Œ #c›óJ’oÞF[ŠÊËã’È_Ý•«-Åñ!·Ðž´–Eí–�+ ‹óǪäŒWO /zœàãá=¸ÝŸÇ`žùŒÙ¦fo J*RÒ�ôôqË–§¤“Ï|£¥êYüí{$©¡ß´ìLSûÕk>Õ¾¤µìLÓéö«×~zñš°l ÏQôÅYƒÝ²�ŸIrBìÒÆíííè³ý‰¶QO_„î–…ÐoÀ²XXvË’å:cU¹98UG�‰=}�˜Ç ‡–¥úE|NÐM7»�bBBsã•Uì-!,w!@nøf&&ªy �eã|¯|~ªcƒÒ»‘ºšœìJ£F{îØEXöid¼©®>í<�©9ŽËWŒ�&qqpj«¨Þð<ûcó Öô¤@X@ðôׯœÇ� ‘¸89µUÕnx�Çç1psÚ!&,BþêÔ4ì¬WtjYÔb‚oéêqsq 阚 ðôYb~ÙÒ„]íñœJròž®‰·�»ÄDЙYÇkhÚ­üû›–�»}OnÔ(fffªy P‹».7j4ù)MMܲ_¼3ÐÓÿmæä‚üX�_—-4A~EŸuèO´ÝýêbH_, ¡ß€e±Þ^÷‹lVç}ƒq [rÃg–ë~‘±èź_õYyH¨[ÖÙöï¶-u/.{û€e!x]ú¬#ê �_°,„~–ÅÀ²ƒÍ²¨…]¼ÄÈÈyõzY¶ýuÃá½û¤$$?¾x –…à÷{¡Ï:â>0ä, ¡ß€e1°ì ´,>'W?ŽË²³±‹‹‰Ý¹ü;­ûù™ø�?�>ëˆù¹ �_°,„~–ÅzÛ²?¹†-XvPXö·\ÃÒà·‘¶¹oŸm4qú³Ógé³õ÷_}, ¡ß€e1°,X, ùž ·qø1Lö86ú&wSðÄ”Oa*§1­ÝÉš^ظsØxolâyL×Ó¿€MñÅ /bÓ.a&þØôlÆelÖlv 67›[Œýy[‚YÝÀ–ÝĬC±•·°¿Ã°5w°uw±õ÷0ûpÌá>¶ñ¶å!æ�m�œ£±]1˜K,¶÷æ‡|ŒŠÇÜ1�$ìx2v2;�Š�MÃÎ¥cç30ßLÌ/óÏÁ®<Á‚r±kyØõ|ìfv«»]ŒÝ-Áî—b˰Èr,¦{T‰=®ÂžbÉ5Xê3,ý9–Y‹åÔa¹õXþ ¬èVò+{ƒU¼Åª°šFìyV÷?ìe3öú=ö¶kú€5ÄÞÂ>t|'‚eqÀ²ú XË‚eÁ²�ïIW–U;‹�eÁ²ý°,„~–Å~•e)çäË‚eÁ²ƒ7`ÙZ¶®¦¤¿ÿ®è(`Yý,‹�eŒeÉÊ8Ôë–6TzÈ�!*ŠJ½kYCýÉè´\œœ`Yz X¶‡–…o¶_°,„~–Åz{­„^±,±b;+Ûp©¡‹¦›§\ºúMËj((’—´í ËOÒû|llÇJ/ša‘úMËj()û8Ü�eß”é,LLL}7.‹,{÷r1.Ûú¼ÞqÍ:aA!N‹éfµy…Ý[v­ÍНùßqÙ„‘`Y:LßY–�‘ }§ýu¡, ùÞ€e!ô°,6P-K^É6-ïCbVÁõÛŽK–131]?|üWZvý’eXAù‡œ¢‚»ŽÖ+ÈpâÌOZ–r\v®©™µåÂ_Pc@eY—-NÒRR™Q±ÏròM �&ëLêɸì­Ë�`YžŸ´, '_§ÿ£ûë¼-ëV®a8‡G@„‰‰™“‡Ÿ4Jùø½°ìo°,„~–ÅzÛ²uw¢N5á\2}Æ«û�Ënµ²™¤¢ÎÃÉ¥6F>Îë"nY‡­2Rœìì“TÕÓ.]¥²,Qc°|Ö\)Q±v´�‘o¦«�¯ã*#)å²v};¢mV¡¥ñtâEò’¶ÙEM‰™¶‹–�$$ù¸yÌô&WÜ�¦µì~û�#¥IÝX–¨1X>w¾”˜x;Ú.ª0›lðù¤†ºØ;¶#ÚWYšÍøzªjäÕks l­–“$¥øxx̦VíY;Xv, ¡ß€e±XÖÊÔ¼Óß n³²¡²léµ0Ô_~ý.^c�ãŒ> ‹ Æe‰y™g¶:—ÝçâàȾÒU�aÙ¢÷ЩâÎûSÕxlÚfi<�Ö²ÕbÑþ5qx�A[V!/7wvHØ÷Ö–-ºE¾€Ëרj éÍŒÄó¥^ö},ÙsIçpËz9ýKXÖLGo‡õ*,ùIè‘H®ò ËfÌÎ ¸Þý¸lÁõ;²AÝÕä‚ñítTÕi-{!€ß¡'Îü°eñqÙ‚{‘²A'Õ¹88?_€†&­ec¯wrç|znY¿£'pË&ܼM&ã—zYë…®·Y�,{=´“—ð½ã²`Ù>ͯ´ì_§³îc¢²jdhÚŸÞ…�ŸgGþ¡³Ü€,û×¾ëh[Fy"^c 1mz¸x»×Ù4læª).„Ä¥ßÈA– Îk•’A='ò÷^ »VA}Bd9¶Ïë&Ú>ZÑù˜_Àìä§mPc0¸–…ÐoÀ²X¯Z—­¼q¯ÓqY§¥Ôã²Ä½_mIÙ~»]y¹¸›ãÒºª—*&Þž–Wû0މ‘)äȉÆÇiíùî·’«c;,«¥¨LX¶2<š‘‘ñå£äŸ¼÷‹²^v¨¸D{Aym|*R]ˆçÙÆŒ¼ö¢ ÷m;µUÔpËj�U!,[ù(‘|iÙ=¿÷ë{-[™œN~‰ÜÂïº÷ êeûûnÐçWZv…5²¬„œ6Úžã|Yv‚¥Úž0o=²¬ù?Ghÿ;7mÉ&|ƒ/§›[o%�QùüÎé ñzÙ?ÿÙE>›µƒÙŸ£�ÕÛ�D–c ß�Ó›FœDRZ&4¡,;ˆ–…ÐoÀ²Xo×Ëê©j˜ëè=»�×ËšN˜DÔË òòEŸòiŒJt³uàáäª�½ÜkëÒÅ×ï´Ët:1¿lW–õò8F5îõ¢¤,KÏ8–u‰x‡×Ë.s v‹þߦ‹i-l6zÇyļ•Ó2°=zóXDí™ø·ã¦ÍC‡Xmv'æ1ÐÐ3ÅÏ/¯6ŸÇàèåÈ…«6DåÇ”¾Ÿõ§ zj£‹Xv, ¡ß€e±_µî–„7X÷ëW¯aKeÙ^\Ã,KŸ8–Åç1P7^Ä'"ÅÆÁ-£¤½xçyϤO'ãß)ë˜ I ceçdac6jþºÝ�9m„e·ÿ\Îþ÷¶#¸e#J>np9)« ÂÊÆ."&9Ùº¤ª`ÙA°,„~–ÅÀ²t`Ù!°†-X¶÷ò¬aòä3ƒ\Ì/û{, ¡ß€e1°ìïnYr#e{u\{ÛDn`Y:Ëo`Ùíž7ÐÿÄÔ'Mƒµ~›€e!ô°,–Ë‚e!ß“ÁnÙ‘ŠLLÌrªã}c*À²¿MÀ²ú XË‚eÁ²�ïÉ`·,¬aû[, ¡ß€e1°,X, ùž€eÁ²0`Yý,‹�e­eµUÕ¼\Ý~̲Ï3rÈSbeç÷в*ŠŠ~'Ný¼eµ54½<Ž�e!xÀ²`Ù°,„~–ÅÀ²ýgÙŽíC`Y°ìà z ABëªÅ?ô‡o¶_°,„~–Åz{­„Ÿ·l’ï•™zS„øø9ØØ•eG»þ³á]Bú÷ZÖx¢îúEV=´¬†¢’ÏÞƒ0. –…ô$ý.ÅÁÒà›íW¦ß,ÛïßgÐú·õ×7eÀ²Ø³ìÝcgØXY/-¼~§ùqzNÐÍ­ËV8–Ë‚eZ^ÖV ÷Z7­¿ÿŠè(ýiÙ�o³?¾ÍùÚž|i¹-�hŸó)ZE+üÜšŠ(Z1E+ùÚþWJÑʾ´r¢µ6WP´JŠVõµ½«þÒžR´š¯íý3Šöœ¢Õâ­­¥Ž¢ÕS´_Û‡—íE{ý¹}|CÑÞR´¢µj¤hM_Úÿ¾¶ÖfŠöŽ¢½ÿÚÚZ¾´í#ѰöO­•¢µ}nX;EÃÀ²'½kY•Qc¶.±ž¤¢ÆÃÉ¥6Z.î¬/±†­ý¿&©¨sqpÈËŒH<ïh½£”ˆ(/÷ ‹ymˆ¹)OÚSžÈHJ­ž· Óƒº‡q MÌDE…–˜[¼ŠIÂ!ë±i:Š“�c’šFÚ•ëÝXÖL�<½?ƒŒÔP—ìÛmsK-M͈ÕYµÇªveY³É_�µsh/¬À-«"'¿õﵓ4µx¸¸Õã¯ã–U‘WغzÝç~E¥¸«!Ý×4åÛ.³&IJññðšU$¤à–}––efhÄÃÍ-?jÔ‰=û;µì~§í#ed:µìV[»IÚãÑájÊcãnÝÁ-[—W¸pÎ\!aQa‘%– ^•á–­+(úOI9­e›ž>·]õ7ièP>^^3c㊜\²hûóûCæ²}G;êìP¬Š²òöM›§èéópóŒ–~3,ûóËÉÉù/4lذ”””_ðBÈO, –Ëöá±thYÞ¨“Þ ã]×®GT­¿ƒ[VFB2Õ7°):iÙ $]DØW]¿-.$´ÿ0²lnP(òP‚O@§–Õ×К>I¯æ~LÕݨ)ZÚÓ'é#ÈÞ¼ÇÂÌç{ù}rv‚_ £•õ7Çe[³ Ó¯…Ê’†ù<ò½ã²­y¥é7nË“ñ?|Œ°¬_Ô¥À†Ì<×�[y¹¹ë“3pË’û‚²ó]79ñróÔ§fucÙÙÆ¦¦“ Êâ’òŠVþ�øÛVQƒ,«;N{îtóºŒ'%�5Ǫ~¯eøø£®ßl(©pݾ“—‡§>¯YV¢Ît£©5ÙyU™9S&é¢mܲŸûŸTeç’û§N£µìló¦FSË2sªkÖÙª�Ui{Ó@ŒË¶¾iHôXvÄïó„eIÒÒIѱÍõ/÷ìtiÿ_3Xö'ó]–•’’¢òèµk×´µµ988ÄÅÅçÍ›WPPÐÕ±`YÈ` X,Û?–­«)é¯ï="`Y¬–µ25ÒY¶YÙt5.KÔÈËŒ8³e'nÙ#vñƒ¨Sçþ“Œ×,21ß²ÔmDŸ½€N[u;‚Ö²¥·î£§ÊÃâ59Wo¡‡Ï>*»ý�‹ƒ#ûÚ­ï­1ðغÃÒÔìÇj <¶;[NŸA9.KÔÈ�”=³Ç•—%j äeG�Ù{ +ËV'¦¡/§!¸£Æ)Ù7û~dI\"êG�Åk ^¹ö½5[míˆùQ£Ï:RšB~­ò´L¼Æ 'ö1ù�|RPš–AîOÏÂk râÈýȾ–­ÎÍ'_g~!^cÐöºù8;>‘ªÆÀã ›åܹ„eïÛ�W¼~ú þ´¸,û“ùËž9s†——×ÛÛ»¶¶¶¾¾þúõëëÖ­ëêX°,d°d X6ò�Xø^Îïj ƒe¯eÂ?*`Y¬Æe½¶:–5ÓÑÛ±|nY¿÷á–M8ï�JÔËZÏš³~ÁâîÇe£½.231õ²ï“²ÐžI—‚°Ì‚P�SÆ'i((.³˜›t³Ë>¦&¯€^·¸ŽšFÏ-äqRMA‘‹ƒóó±êš„e½R¿XÖlŠÁŽuëqËzí;HXÖlŠáŽ캲lìÕÚÿ*„ž÷�¾ÂÅÉIÔË–'¤~¯e½»–5›:mÇÇè¡ÌÌÌD½ìû§ÏÉïdøÃèÐ0rÿ—zÙ÷ÏjÉý")-{ç^'×y%A6È÷¢ÚX.N®ÏïÏøñ„eý¼¼q˾ù=Uœ�–ųÿþmÛ¶u³2+ÚGNNN@@`åÊ•>| úÝÜÜxxx,--[ZZðþââb###Ô‰ D=sçÎ%þ¦Ž?þîÝ;~~~///Ú×ÒÐÐ@û°±±�7.-- ïËBK�e?Ô†¶¿‰ìaûT, –ýÉ€e±>°¬“•M§ã²ß´,^/»vþ®Æe+ïDR�Ë÷~µeäûísãåânNÎìÔ²µ1 LŒL!§“²ÚŸ»oÞ¦=V·¬–ÒØî-[û8…‰‰)ääÙÆôÜöÂrw§�Ú*j„e�V¯ët\ÖiÍ?=—­LHadd|™™KuïÕ¸lD`ð÷ZÖi½}§ã²•éÙ�ŽËVfæt3.[™“G¾ÎÒ ª{¿j‹KÉï�ÿåÆgµí Mî®´5µÀ²ßLO,«ªªZVVV^^Ž6\\\ˆþ)S¦TUUÕÔÔ Ñž;wu¶¶¶ÊËËoܸñíÛ·wïÞåââJOOÇþ;.ûèÑ#ôWÐØØØÕ+"ìzzzÊÊÊ¢³a`YÈà X, –íÃcéв‚¼|ÑžÞ�ñnÿlàáä"êe¿iY|vV¶ÍVÖE!w›§? uZþy=uMsÝÉÏÄâõ²¦“ô�bïŸ>¿Õzeñ­û-)9\\Y˜™›3:µlyx4CäùK-éyñþWI’„egN1²·Zþ íÜ…eË#‘�½x¹%§(>ð:IR’Ò²‚|üÑþA�Yyn[¶ñp}­—äç�¸Ú˜“ï¶u;¹¿ÛzY csé…Q�› Ë’oÝE[J*au´Æýa>£>3·4>iœªÚ÷ÖË ò D‡„6–Vº9ïâáæÆëeõ&L4Ÿfü,'¯—554Âëe?÷ç~®—55šJ[/kafnnlR˜’Þü¼.92=l©Yž“K~Âî´¼xÿ0‚4T,Û“ôIJÁÁÁøvHHb+Ñ…o;99ÙÙÙ¡�ääd~~þ�?âýË–-sppÀþkÙ7n ã~ó†ŽÑ‚e!ƒ%Õ²¯#Ú^>¤j¨sÐY–‰‰ }|W”¤—eñ£*˲Á²}°,Ö–ݲd¹ÎXUnNÕÑcbO_ æ1è‰eñùegèMF Æç—=`ë€Ï/ûüÁ£ÆÓ…ùD›Í|�€,û!%ç€�£,iÚYeŒ\ˆûI¢Æ€êWá9!·Ý7‹ ³²°ŒWQµ[²Œ°lÜ¥ ¹#™™˜º™ÇÀm““˜pDZªjvK—SZv˪5:šÜœ\ªòб—¯ólù{­Ž†¹_A160¸ûy óŠW®AÆÅÉ©­¦~ãœ>�ÁÓ” Ó)?<�Á–ÖëŒÓææâRUR޽†ÏcðüIÁ‚Ùs„…D„„ÿ1ÿEa nÙçy…ä~!!aáÅó-_•ÒZ¶±ú™ã?¶#ddÈש©y#à ^,ëæ²GLT”••u¼Ö8»5kÁ²ÝÄÐÐ�¶TC[[›vOdÖÔÔT|;##Q•è'êe]\\V­Z…u8UII‰8õ/X°ëñ¸¬§§ç¨Q£Ðß ~=¸•Á²�Á’jÙûÿ,ØÍÌBÕB—˜÷ºeu&h¢ŸÛNë Ë&ÆÞD=,,ÌuÕ¿�eùøxi?7QÊJrÁ²`Y¬·×ý"›Õyý¬û…,ëwè(íü²È²~‡=hç—íh5?6¿,ö´îsëY�Á×ösóË~m0¿l¯ægÆei-ÛÕ¸¬´´4áQ¼^¯I LAAêOJJzÿþ=z(##óàÁ , < –->½ej.llH±‘ŽKÐv~ÀÞ^·¬§Ç»Q²Ã Ë®_·õÌ0›ú;�˾kªÇ  ã²DÀ²X, –í§ôIJêêêåååhc×®]D?­e[[[åää6mÚôöíÛ{÷îqrrâ·pihhœ?¾½ã@9}ú4b«��O}Gðy ОBBB………MMMnnnè_ °,dpe€Z–h{¹8‘e?>¿ÛGõ²õO3XYYÐ�nrÜ-Ù�¥’bèaà%ϲ‚øùófHˆ‹òñòèNÒŽyŒC¶²8yÉâ?HÒRü|«WZ5½*A�Á±ˆ6fÏš^Z˜LiY<||¼ÖËýïM%²ì«Ú"¼³ñU9"¬íº•h{“ã?´–ýÏ™-ÌËŠ3qÈRžYJRbÞ\ ´á~Ø·ì ‡GíïÔ²•ehII ~~>S“iy™¸eÿsN)I¤XÊ¡\666™ajÿgïNà¡èÿ8€GäZ÷MéЭ‡T’„r¤Ò¡ûx*ÝÇ_·®'=]:ž•…¨ÈYŠT$$gn¹ï#÷‘[I²ÿßͳ�e±»Ö÷óú¾¼fggfwÊ̼ûõ›ß(N&<<<Ë–ê××Uƒeûî#h°,^Ù>”ÿƒa ¿, –í‹tŲ/^7nÒç¶mÛðñ Úµ, ¨¦¦&:?£U°™®®®ÒÒÒ,,,·o߯æ<}útúôé\\\h;+W®ÄºÆñóóKJJîÚµKNN, é_è–EµdÑ\tÅ:´;²ìÛWOHèäã-+ø$;j8:þ=_Ú¥'!Ñ"òÆEúÔ}I?V–ÄÄ«g¾'9Û[x¿vÂÛe¿Uç:=±@ïÎRU&·ìúu+ÊŠRÐO4}ä�!¹ek+r¨[«†ºbg4Sm– ¹eõ—,üRšó³±ÒëõsôRq²<²lC}9B*úò9YI”–ýZ[6vÌhVVÖ·ž/‘bÑ’’’•_ŠpË.Õ_\Q^„µÈbkíÛkX\”'((Húj³¾”kh¨£é;wn�eûî#h“Þµìo>öߵËv÷¶`Y°l×C³ç{A ý=`Ù,g{sIJ¡Ò�µY› V£é­›ÖwŲXïlË5ù¸eÃBý°>Mß+G —Asb£C¼^“†«T™1½Ý>®OÐÄLe¬�ÁšÕ¤\K‹»¸eÃÂð>ØZ±1Í?I�ºwïNóÏïöï%ýàà°lß}m–Ë‚e3`Y¤‹ËfÕ}Ih¹AÊËã 6áçå|õÒI4¡£¥ŽYÖäÌ‘A-�h¯ýs Mhiª‘[ö{mî჻G ÆÁ1ÿ¯Éäø`ܲéÉaȲè'öVCm~-Ûøµäð¡=©ø–S#pËæf'âýeÏœú«Å—{vî uù5½z±]Ëš^»Dù©G�Ä-û9'½�e?çf"Ë*++¡iGdY£CÐôþ}{Á²}÷´ ú»€‚ ŧ�®, �t1`YRmÙDjŽ•5ý”&õ£.»[í²�­o¡™“&•ä'|¯ýÌÎΆ^&ÄPi—­,ÍÀ˜X]ž…,»vÍòv-kûð^KÏ�?J Ó¿–²³“ºö&Æ…µkÙÜlÒHæâ’’X*í²êjª”÷~�e{}]Æ·,žòâô—ÅÜEïã¬ß‡îÿ �ê´èý;B‡0ºeí4§?TUüQâݧ–õõrÂ[(�þ_S}NMYò¨‘2äýe‘P?E¼kÓ_ÖÑîÞÛWŽV÷®¡9Ó•‹óâ¯]>ƒm‡Ü²äýeü6Ž�¨ˆ0zéêü0.:P@€¿]Ë>°0CÊÓ§–¤™^=�m¹#Ë¢š7O[f†²RGãÔ×”býeŸ¹8ÔV•DFoÛº)0À,Ûëö#ËB H§Ago³ ³[·nWܾSyÕÝÊ»æ•æ÷*ïݯ¼�Ê¢Ò²ÊÒªÊêAÕTÖUÖ6U6«¢zTõèqõcÛj[»j;TOªŸØWÛ;T;8V;:Ö8:Õ89×8»Ô¸<­yŠêYÍ3××çµÏ_Ô¾@åVëæ^ëþ²ö%*�Z�Wu¯^×½~S÷•g�§W�×Ûº·ÞuÞ¨ÞÕ¿ó©÷ñ­÷õ«÷Cõ¾þ½½ÿ‡ú_P~ úü58äkªÐ¯¡¿} û†*ü[xÄ·ˆÈo‘QߢPE7DÇ4ÄÄ6Ä~jø„*®!.¾!>¡!!ñ{"ª¤ïIÉß“S¾§¤~OE•ö=-ý{zFcFfc&ª¬Æ¬ìÆìœÆT¹�¹Ÿ|Îû‘—ÿ#UÁ�‚Â…E?ŠŠ7—4•”6•–5••7•£úÒô¥¢©¢ògeÕÏ*TÕ?«k~ÖÔþ¬EU÷³®þgý׿¯ßš¿¡jhnøÞü½±¹ñGóT-�lHkÀ²4M-K›ç~5Öf —‘ÆÜõ{PBFRЊezâ¢|¼Õ™J~^.ø8þ\1l¨” ÿ®ík¿d|­Ê^¿n9�ÀCþ¿öä–ÅÂÇÇ»Ù`mmEfÙO�> qùßÿè§°ì·ÚÂõ®j³e*–}æb‡-ƒu0èhL®Ü¬”?×­–––B[Vž®dýà~cC5X¶/ÖËB f X,Ë€Ë2Õ3l¿Õ•²±±á à¹_Ô–…@ �n,Ëø–-)È ÷¯ ­–e*˾p%õ…ÕÑÑ„gØv%`Y¡Œƒí}ÓKÆ9Yé”o�eß²Œpy¥qÀ²ÌcÙ©S&³±±ÍPVÊÊHËv%`Y¡LUeÅã·Vè©;°%2<l±?X–u0ë AƒœÒœhlY¬“^pv0X–öa ˾½ÀÝ­Ëvý¶`Ùv–…@ �ŽÒØøÝÓãéÖu P¡ ô’È0––Æï!˜¹h¦u¬uïZÖÚ×Zm¾¿?;›ˆ¸ˆŠ–JTuX–1Ã(–%Uu¯J$«$¼~Ô$“U Y�eÁ²= X�@¨§¹¹92<èØ�-+ôT?¸uãäRƱìá‡=ª<6þ½MKŽ”|ýåuÏ,;^qËÒ=`Y°,X¶×ËB �>Ê@¶,<Ã,K°,X,Û‡ë‚e!H¥×O/K–,ÁwîÜÙÑ2`Y°,, –Ëöáº`YÒGé£Ó‹¡¡!X,Û¿2°,;}š‚Å�‹}jÙéJŠæWÁ²`Ùßÿ¡°,X,‹¥XösZÀàÁƒ§]vŠâÖס],Û×A›Ð}¼a(¨^)zItX, –Å–Ë‚eûpÝ~aY¢ñCä¿€*ŠT�XE“*¯b0^±Ä�_ŠêSk}Ä*ŽTaXÅ“*¯bįŠLü·¢P%µV4VɤŠÁ*…KVŸRÿ­¸´+Uzk% Ê U"^™Ä$²JÎú·R²ÿ­TT9¤JÃ*—Téx}&f�Uf^ke¡Êo­l¬ H•ƒU!©rñ*"~þUyÅÿV>ª’Ö*Àª”T…X•‹Èª¸üß*ùòo•¢ªh­2¬*‰åxU¿�UEõ¿UYóoU¡ª%U5Vu¤ªÁ«žXKVu_[«Õ·ÖúŠU©¾aõ�T x5¿ÿªFT?Z몦ÖjÂêgËÅ+tÉ&+ì×xà, –ËbaËJK‰{¹?Ä›�0hР²ü(¤Xù?Æ?¼[}Öt÷“‡7;êcpáìÑQ#‡SZöÆÕ3#†åææR�©üAvÕŠEø0Ó•aåÿ˜ø×ѽêj3ûÇæä} äå'?0[C•——0vÌ(O' ²¹™1ótµÐÌ ãǘ]¿€6UR�–¥}À²D°,X,ÛoC/ËÞyw„îÍðPíãȲçNm÷Þ/dÙ«—Oc½ ÊŠRзÊÍŒIImÁk2ÖÁÀÇË,K¯€e‰`Y°,³X–N)4X, –Ÿ–í­vÙ‡–W{<Ž�ÛSë¹Ú¯›6¬ŠþèÕ‘e=0ëȲ�mnc–­«ÌAß AÖÏû�Àƒw–ÍL�ËÒ+`Y"X¶k–Åžè“ø‘ºe[ ‰Ë‚ei�^?½“·;vŒrºÿ7:T§5�&±¬ì¨á/œïa– |AnÙGV×~sL®ÆÚìÇÖ7ùx 5e©È²Ó¦*´±ìcë[]·,´ËæÂ–%`ËJ‹‹cl!~�%Z:yþ¡`Y°l? }O/åÅ9èÏŠ1‹Ž¿t “Xv¹¾®þ"�²üÈŒÄ÷Zsfvײíö—õò°;~Ø0%îC}Eº�¥);;[UI2²ì"=�{·7Ôd÷̲Mߊg(Oƒþ²Œp°�e‰Þ²v—¯ÿHHß±j-šÖ�¥þ›} ¨Xvêòè-ëÇ`Y°lo…ñO/mÂ$–M‹ó™5s77—ÜıwnœéË~­L¿tþ¯Ñ²#¸¸8åÿ˜àêd…õ1ðy>~Üh666|ƒîZ6;=Zw®&//aü¸1W.�Fó+K3Á²´X––½|�˜œåtýš ‹‘‹´¸D›vÙ(·×Sä&±²²âËn0 ·,.NN=M­êødÙq£dÉÿëöÒ±ȲmÖÒ®NNÇ,û9þùšZ©�¡˜eO&%�Vš¬hsãV3¢mqùéÃGÿ�yóv3†Z°ìãŸ^ Ú¤X–¹ŸaûÊÍ^PPÆ—¥KÀ²D°ìåëM é;W¯#o—Å”¹TG·2"®Mƒú¸ QQ4íic›ôÖO€��Ò²ËWVÄ$j(Ï@Ó—�wÔ.ÛºðŠUñ)3TH ŸøYö[fîØQ²ÈÊÞ.©�!ˆ³’bâU)zO¬Zó5;/ÖÇýò•™#ß?wo�™“ë÷aýŠU™áQ`ÙÆ?½@ ´ X––u°³xêh]U–î7Inü®›À²t X–8à-‹g;»ÏÃ'ä–�p}IÙ_ö…¹%š˜4vÖ»àÏ%K)-õÒ“˜•Âp/šÞ±v=uËF½ñ&~.:±w?iá?7 Ë>`ƒ¦gNSÂú¬Y¢�^Z]½îþÈMÈ�owÇü“%Ä¢2÷ÇO~ͼ÷é}ÀÏ¢2èc0pÂø§„6ËÒÁ²%É«V.*-µ×p{]åg°,]–%xËÚ]¾þ31ãÅ�ûhš�@(ÿ�[6ïC(¥eïœ6Aš*31ËÚ²�Ò²XÙÓû¡é­«×R·l^X4²ì郇I ¯Y‡,{ýôÙA9ú¿=ß²óæjÌÆçŒ6,#4â[nÁÜÙsÈfÊd„E‚eHÿô�Ð&`Y:÷1€gØÒ1`Y"X¶¥¿,*¶Yú=v nY¬]V~ü*í²íZvš¼B-‹µËª+«´{ïWaLÂë'Ž3•”Ð2'Âîú*ü”øÚÞi¦ÒtÒ̃F`ÙÆ?½@ ´ X, –íÃuÿb–mNÊÄÚe9† ) §nY¬¿, ‹¯�SGýeÛµì< Rëé­3ç;µì׌¬¿¬«•M]zv”×»mëÖ¹½ò{úüÈÿ “B¾åäoûs=ZÞÌ䢟«Û‘ÿíI ý–[°íÏ ¤™ç/�eHÿô�Ð&`Y°,X¶×eü‹Í·,~^^•ÉSÞX>$ï/Û®e‰é¹‘/^)N”£2ŽA»–õs|:zÄlÏÇöT,‹�cðçÒåÒ’eÅ)6×Í~ä6æܽxYa¢'‡”„Äž-Û¾.hÌ+ºûϹ_3·nûž_– aüÓ B›0‰eIƒmÝ>OݲòLxdeÚuËNWšlq÷2X,û;ë2þÅfÀZ¶Wža»½e„ FGá¶`YÚ‡ñO/m–¥§e••¦XÞ»þû–.3 ]Pä'õ®eµ4Iÿ+ÊÃÖíñºŒ±Ëvײ§öì÷~d_ŸìòB�ŸŸ‹“3ÁË, –¥}ÿô�Ð&ýÀ²]yVÃZvŠ¢¼µå;n—E–}ãñ o—müVathŸˆˆ077—þ’…EùÔ-kø¿�Ø•¢?ç6í²!ÁÀ²¿³.ã_lÀ²Ýµl†oÀ"Mm>A\DDWM#ÐÉîX,KË0þé¡MÀ²LhÙsgN*œŸ›:žÎl µ®´Ë¾t–íõuÿb–ý�>mža –ËÒ2Œz�@h&´ì]ÒŒ,,,Ãe¤Ïþ}°±& ·ì1£]ª*Óx <“&~ðqÁ [Y’°g÷&™aRü|¼ æif&S·ì…sÇeG §´ì�kçF ÆÍÍ¥:szDè[ÙU+ãw‡LWš‚,+//÷×Ñýêj*�ƒ­yy9ã¿ÍÖ˜ÅËK;FÖë• ¦ØÏÙñótµÑÌ ãÇšÝømª¤ �ºe¥¥¤Ìn\Áú$ÆG U’£À²”ËÁ²`Y°l¿ ãŸ^ Ú„ -‹UCUJD�;B§­õuܲ‚ü>ž_Š>]YA®±6«»–MúÀÎÎàëVW‘ìïat`w»í²È²âb�ï=ë Ûô—E–•644ðmmÅg“3'ÄDEšZšfUg*¯^µ´8?5=% �¸SË–e¡e‚}ðþ²ˆ×N�À²”ËÁ²`Y°l¿ ãŸ^ Ú„q-»aÝʇߠüudW×ûܸò÷ªåzäí²xƒñãFß»u!;5m37ý#ÖÁà{M&2nl¸Wwû¤'…ððpÇFøRïc€,{îÌñvïýB–½vù,Ö» ¼(}«ÏÙñ©I-xMÅzø¼uëÔ²iŸÐ2 qá¸e¥¤$--nƒe)–%¶ü]DÛÝF?¡ úi…úÚ›3Æ)…ÆaüÓ B›0®e{Ü.ëhk6Ya"7fß™3¦â–µ¸s·ì‚ysŒ�ï}ïíLÉe·§zÐ_ÖíÙ£¹Ú³^7m\æÓ‘eYßîȲ¶Í1ËÖW壯� ë÷î%�Àƒ÷—ÍL‹�vÙ^ X–í²Ð. í²ý6Œz�@hf³l~fZø™£yEQlcMšé?Æè-ܲÇïnÓ.›™ÄÊÊZü9º·îýj¬Ë{l}‹��·æK&²ì´©“ÛXö±Í�®[¶í²Ð_¶ëËÁ²`Y°l¿ ãŸ^ Ú„Ù,›‘øž……åÝkÛºòÄ@_™aRä–ðõr¨(Ž»|á8/�ë/»dÑ\½ùšI±~Õ¥I¡ÜÑËúŠ´îö—õòp8~doJ|p}e¶�åMvvöª²tdÙE çØ»£¡6¯g–ýù½\e†R·úË’�cPð9mþ< õYØ8[7oÔÒœ�Yvëfƒ–i°lß®Ëø°,X,ÛOÃø§„6a6Ë¢º|þ˜¸˜È�!ìÊJ“÷n"·ìÑC»fΘJàáV�ŸøÞÛ Ç ¢8þÐþí#GÊððp#¿>w¶êÁ8_«²/�7-;‚‹‹Sþ�‰®.6Xƒ?÷ñãF³±±áãtײ9™ŸtçjñòÆ�s埳h~eYn§ãË:¸WXXˆ‹‹kÉb=||ÙŽ,kiq·M/‹Òâ<°l¯¬Ëø°,X,ÛOÃø§„6é–íÊs¿Z‹êø²­Õåñe[*·OŸûÕÝñe_¹; t:¾l/>Ã,û›ë2þÅ, –ËöÓÐåôB÷[ý ºR´ÿÅ oÀ²ŒnYÇ'VO�V•çFG|˜$7a×Î-ð ÛÞ X–HoË*O’·:y–ñ-«¬ huá2X,ËP¡—eÍ*ÌnUܺ]qûNåTw+ïšWšß«¼‡ê~å}‹J Ë*K«*+TªXWYÛTÙ<¬zˆêQÕ£ÇÕ�m«mQÙUÛ=©~b_mïPí€Ê±ÆÑ©ÆÉ¹ÆÙ¥ÆÕÓš§Ïjž¹Ö¸>¯}ŽêEí ·Z7÷ZwT/k_zÔz¼ª}õºî5ª7uo<ë<½ê¼ÞÖ½Eå]çý®þ�O½*ßz_¿z¿÷õïýëýQ}øú!àk@à×À ¯A¨‚¿‡| ýúñÛGTaß¿…G|‹@ù-2ê[Tô·è˜†T± ±Ÿ>Å5ÄÅ7Ä£JhHHüž˜ô= Uò÷ä”ï)©ßSÓ¾§¡JoLÏhÌÈlÌÌjÌB•ݘ�Ó˜“Û˜‹êó�Ïy?òòäü(@Uø£°èGQñ�â’¦T¥M¥eMeåMå_š¾ ªhª¨üYYõ³ UõÏꚟ5µ?kë~Ö¡ªÿYÿµùë·æo Í ¨¾7olnüÑüUËAB:6À²´ X¶‹–--L[µr©  ÀPi©½†;êª (-ÛRU}Ñ.ÛZ`Ùž® –ËöŠe•§X]»–Ë’, –ËbË2ºe»ò [°lÏ–%vDzE/ß feí_–ÕUUú€sqrþ1vܓ˦½bÙ §çsg©óò898¦ÈMztõz¯[vª¼ÂÃëfí¶Ë’Þºy, –Ë‚e;²lIAí7è°,X,Û‡ë‚eénÙýë72ê£âo�8ÅÊÊïæù›–}mõˆcÈ�Óûæ„–G~z|õ?/墳À²t·¬Ãã{èˆ8u`÷:ºœ1À²ŒoYF¸ÂÒ2`Y°,X¶×P–½mt|ò˜q¸e³ž{";f»y!Ëꩪ4ˆ……e„¤”É®=Íȵ–•gþƒlÞ›÷¤!;>„!ÈÖEí[»AFB’ŸÀ«§6;ÇÓ�Ò²—öÉ“¡bYbbÆÏø´Áƒ;\½‰[¿o½�Œ¤b¨žÆœß@̲z³5[¿§ôP“ýF͵ÿµlsZzËp½y;S3´åì¡È²Òïì1Ëæ…’Fw®ü”Œ «§©Õºå¡ÃLmF´m±¬ÂD¹“ûÌ™©ÊK Œ%ûÖÞ YvõâŸz¨¬8…¼�ÁêÅúÿ¾5eê½Ë×&�Ÿ€[6-4}“œ¨Ø�iYzL"¿oYÖÁ¬è·×,Ùl€X’hòÃ�e±éÈìH°lï, –ËöáºʲÞ�ìCbl]0ËžÚºKsÚtòvÙ¦�Ÿ¢í\F“±7¹ÜuË.�£=_U=ëÕ»ê H£�›ÇOü�Ô]Ëbí²lƒ§½ñE–]ª=w¾šF–·uDœÑæmŠä~&fà�²M‰Ñ/^�>ÂþšYË&zú /öñ™;¹e›Òr†°³[]¼BŲX»lSf^ôïÑ#FØßº‹[VFZ:Ìó>-ûüÑãb""ÍyE”í²äýeÉÛek3sùxyƒ^¾Æ,k´Ûpž¦Ö€m—¥÷Á4 ÒEË H àÿèâ团7åRä%涬¸”x›Ñ-_G¼ËÒ&ô´l„Ï=º�[Eûbœ‡§ƒe‰]°¬ÁüE”ÏyF16ØFÙÇ`•ÖÜ}«Ö!È6‡Æ—�zröe3£ã«uæuѲyž¤‰ïX¤X>BÜÓ—Ýí/‹‚¸ùÊÜŠ˜˜™÷>˜´Mÿ¬�R,�çîÙ¦��™ñéÕ ¶±¬¿=é©×y�amîý’‘’¾xøX§–Åú˜�1Y½h1nYÓ¿Ï`½ *RÑòù‘1]·,"¬áæ­ëW¬D y…‚B®6�Á²�¾‹yw,»Íb›U¹ÕRã¥hZl¤Øƒ’=³¬¬¢,ZåäÓ“}mÙ ŠÐÝp½ÑcËš>2¥ÒǀܲòSäÑô÷'`Ùß´ËB»,´ËöáºL`Ùnõ—õ¼a.Ì/ð=0Òç¶%?�ðõCfY—‹¦Šã&ðpqa¬TUPì¢e¬ŸP2ú¥Ù½îö—- _®3Oi’|S\Z€�S;ÛDÌMÉv¹yWq¢wë÷œ2­ëí²¯\§bY—»Šr“x¸myšnY»›w0Ë~ËÈEo¥…v˲‰ÁœåÉivwŠ6æƒe!}—îZÖºÊúvömì×þ´ßiܲ­ÿÂ䢨«h�o�YönÒÝ™Ëg JróqOT�xþíyYé1Òä‡êƳ‘e&=T_®.$!ÄÃÇ3Iu’é;S̲äK²s°K —£0†‹ÀÅÉé¾DýÝ—w˜eŸ§=×Y¥#")Bà'¨èª¸Ä¹ Ë;œ|õ½&{dÉ¿­˜”ØÜåsÑÄqÓã˜e®Yˆ^ž¸v‚ŠeÛm—•+KþY'/œD–ý”ýiùšåRüüÚó´#“#1Ëbka‘’–ËR, –ËöáºͲ?ƒc¤EÅ\ÿ¹¾~žÞÎ¥+±{¿Š=ߣ_\1«ñÿØwãàQDXJËŽ&óòÆ]̲QöÏ0Ëæ¾ñcee-÷ýÍ{¿ˆ‰•£…ø,Î\Èõ $m3$ªÍ½_ÅÁ¤Î¦/îXÔD%4§dÝ8qJYarû˲³±}ŒF–=|ÄK«‡˜e£<<1ËGÆ’¶liS“˜ÖœSpãÔYR/Xª–UR˜Ü‘e•&+¶¹÷KCeæµÓçT§+Û» ßûEïƒi@¤·,«¶NÍ"×bÂ,R;èÚ³k‘emKlÅGг°°»ß�¿‹DË6„Í,ÜŒ²]ÖµÔUr¤$ZÒÄÝÄ&Á‰-ia‰[véÿ–>ËyÆ+À‹¦åUå= <ÔÐôÁ›‘eý*ü†�†N7=n:ræåç‘ñ-öm·]û¶šK4ƒ‹ƒãâ-^Y —&O@��«‹C�¾†¦w-KÙ.›_—�€‹¾•«—kDR⬄¤ÄçŠÏ¸eë/.øRí²í, –ËöáºͲ¨þÚ¸UCq7'g˜�fÙl7/tº÷3·nŠ ±~"#!Ù®eWhÍ]:G»Ò?,ç•�¶²Ê _ýeõçh-TŸ�êæYnÿTŽvCx\îýBuñÀaI©ïŸRôµtÎÖL}ãS“î⦯5·áSJ¶o é{>vhˆK qr•‘’¢´,*K›!ìì§÷üøñKdœíµ›ü¼¼WŽc㬘¯·Tw^elRNÐGí–ȲÙAI[v|Ú�–òÂCFJºSË.ž«{pûι”–]¬;ïàŽ]?òŠpË:[>A‘þ1, éÓôV““'ÕO–‘nsÔܤ‰,{èÉ!4=B~ÖÇ`Á®è%úIiÙ¿ìÿB/GÉ�Âú,ÙMÚÈ’]KpËZ†YúÔûŒV�¦Ý:ä_ï¿bÏ 4½zßjdÙ‹NÑô3þÀúè¬Ô!µ­šŸ bY‡`¬�AÜ·8éá¤vb·(7«×VhbòŒÉíö—Â1¤[–}ôìz9]e:ÖÇ`Ùêeèå-Ë[¸e �AGË‚eÁ²}¸î´lš‹:íÊ�’%“ëê>#q!aDÀ“ä¬ÝЮe3Ýߪ)NEž$;Æü¯S¸ek#oÜ2jè0..å?ÜnÞíÙ8¨j#âDïŸ9_wxóöQÃÐ6¹•å'»Ý±ÀÆ1¸zô„¸°é{NV<`°¥]Ë¢úàðT[u�›gPËÐηÌññe3ýCÔ””¹¹¸&�gnrqЯ>WOü-."JÚ²âÔ[·wjÙ ãG�acck3޲lÐË×­oM™ŠY¶1¯HBLLs–Ú“‹ÞÓ€H·,‹…W„Wq�b»÷~-;NÛì�³‘e7\Ü€¦40Ë®;µ½TZ DiÙ­·¢—S´¦`–58m€^ªè©à–uLsD–� D‚é™'g�e‘bÑô ÃȲ{/ïD‘ ‡6P±¬w¦7Þ_ÖðoC4gó�Í«w�¶yüêqêýe»hY“k&”ßjÿ‘ý¸eSsSÁ², –ËöáºÌdÙ¾xî©ðÁeø¹_Ä´\RQ<÷«4öás¡�€ £…X¶M–,iÝlçÎ�4?¶˜3=èc@eL.rËRi—=et·Úe©[k—�.y,>â?ýe³¾vYVQG-¶ýêv̲ÏJžIŒ�øOYv6‹p‹.ZÖ÷‹/Ö_ö¢ãE¿2¿Ç¡�o^lég‰,«2—Ô»éˆé*–MhHPÓm EAY¡Óq :²ìÝ9húÂÍ ˜eójó°þ²�Ÿ>ίÎ÷�ð߸u£W€X¶+Ë‚eÁ²}¸.X–é-‹�ÉEÇvYN 1±7NðܯŽ~ÉÁ²½˜¾³¬S�Ó�„;*KUĸx¹Æ«Œ?÷æ6&×¹×ç$GIb+žy~Æ£ÖÃ:ÑzÖÒY‚â‚ܼÜr*rW½®’�c@ݲØ8s×Ì•å"pÉ)É�´8R‚,{ÏëÞ0ÙaØÝq¿Ó‘e͜Ͱ:~õx�-ûìݳ‘²#±9N¯�°q V®[))-ÉCà™¦<í®õÝòïå`Ù®, –Ëöáº`Y°, úÀ3lÁ²4K-ËÜϰ�­�Ì6ë`ϰe„€eÁ²`Ù>\, –Ë‚e™)`YdÙÛÏH£Œ©j«vå¶`Y, –Ëöáº`Y°,X,ËLËNœ2q0Û`eŸt°,ƒ, –Ëöáº`Y°,X,ËLËvô [°,COËB äb„# ,KË2µe‡FºÕZnRïZVköl´Yn°ìŒ9X,Ëx¡›eñ”ç ?t¨XôþÕË’ÒuËvñY ôµ¬îÌÖ±rÜÜ* Šþ�ìiiÙ©“þxxåz§–ÕÕ˜ÝfDôw.}dYO§§x»lSIùaý"ÂÂÜ\\ú ôŠSÒ¨[Öpûìë <¸M»l¨¯_¿°¬±±1ùŸó±cÇh~„1[À²`Y ý- �Ð+`Y"3Zvÿzb|zuhÌžµø„’€0´ìþ-ÛhÓ.KnY“¿Œ‡IKÇ~,LL™¯­3[uVWÚe=œžö_ËBz=è�úλ#tÿŸ=¨Ž*Ô×Þ|à`YÈÀ X–ØÛ–­õ Ý·j�Œ„$?� §ªžãæ…YVa̸›¶kL™Fàæv<…ôró¯—¯–x®Õ] *($&$´qá’/ïC1Ë*ŒwbëN�©J¤Åþ1%·ì¥}‡H­íز¨ê#âXXXÜnÝG–U7áÄŽÝJÓI›ºfV¾Vo‘¨��˜°ðÆ%˾|ŒÆ,«0~Â_;þ7kê4^ʼnrAŽÏ0ËÖÆ&íÛ¸YFJŠŸ—Wo¶fŽ(¦X… OìÞ£¡<{ž-åÉŠ÷Î_š4vnÙ´÷AH„9ÁáT,«0QîÄÞý3T<<Žw-H/÷í×P™IzinQ—´V™¨°°˜ˆÈÆ•«¿$§a–U�“;±ÿ`ëbø£¿Ú³¬´¤ä­K—±>I¡aè{¦„E€e!ÝŠ9´ËB»,ã, ¸Ë{Û²K54ç«ÌÊzþ¦Ú7Äh��âØñ?ÑüËJ‹?°kúø‰ßúÒúI’nd¢Æ¥ªêžï?¿ñ�3MMã–%-öС)*¡M»l,+!"lïÒ„KÊÔPR^ >»À?äóûà9Ê*h·¬ ÿ{[Çê¨øã#JsÓr–êèÎWŸ�õ>¨:&ÑhëvÄܟȸ-–• ~ú¢ ½üo»lmb*�7è©fY£í;çiÌ¡Þ.‹ð*!*ìæÑ”[HÌ/!½ vÕ„((EZ] ¥]ÿ9*vŽê,4�[–´˜Ç›¦ÂR*í²å©™¯¡^ïðþ²Ü\\ÎÖÁ²�n, –eÀ€e!7`Yb,k0Ñ öbl°­�eóܽÑü¬�ÁÏ�X>Bœƒ+fÙó»öâ} H/wïÃúdº“Õ“ýÒëcïâŽ^¾ý€Yö¼áþ÷1Ø÷çF^žâ1Ëžßwëc�ùÖŸô‰ï>`} â_z‘>1à#Þ.‹÷1˜ ;ÚÂäb^@(i¿‚±?S³‘qã^{c–=èHG} 7nZ¯¿Y¶!-[XPÐõþƒŽúË–}JÂ,{þèq¼�é屿°>™!¤ï…õ1ˆ@úα ˜eÏ?Ñiƒ¬¨X´JRHnY) «›·À²�n, –eÀÀ8PLUÝú%Ë{µ]6àÞCJò¾¼v³¬í™‹ä–µ={ ³¬¿å#6D¥_ýe¿…Æ�ž÷hëŒYÖÖärÏîýâáâR–Wðµ¶ÅîýB–µ½t ³¬ÿcÒ'þê/û-6™ô‰Î/0ËZ™üƒ[Vo¶æß†û\ÚÙ/K̲¶×nvdÙDo?NŽòè»·ÄED3r;m—µ½y›Ü²¶fw0Ëú?scccÃûË~ËÉ'}ç7o1ËÚÞ6ïÔ²Ð. é•Ðý$Õ•h‡#�/ûŸ!fÛŒ2Ke ÙÆšm;ÜlÇ#Îv8èlׇžíhôYªcÐR†öß‘h©FKe<Ú†¤íd`Ú®ŒMK}„ÚŽ©ýÏ8µUKu´Z²kÛŽYÛz=ëÖ/! ,{ìÀf´$#×îuª½eÙ\7/VVÖr¯”÷~!¼Ú�¹DnY»sÿ�·Ëæ¾òi·]Öî|·-‹÷1 “ YÖîSòvÙ\ßÀvÛeOì4lÓ.›ëBÚ¯ðXÊ{¿�eíLÿµ¬’¼B›{¿4”U®�8¥:MéØnÃNïýBxµCx%³¬Ý­»äí²¹Ñí¶ËÚݹו{¿ ¿,¤Ãcy¸Ü£ûw`Ø=¢÷/M–Ë‚e{ÆopíbÌ{µ¿¬¾ºæBUõT——õþaá6úš �‘Ô-‹«>eÚB5�B/¬¿ì|U5¼¿lG–íJÙŽ,‹«>múÂÙš…B±þ²óÉúË ñ øÛ9ÕD'\=z‚—‡ë/«¯­»pŽVª÷ûú¸”p×—ú:º I”–]¬­spËöé9¸e�ïÜaaaI÷þË¢RŸ¡²PgnaLÖ_v¾¦Þ_¶‹–ÅÇ1(JJ�¯­£¡ªŠ�c°uýF- ̲[7 éÙ`Y㧪²BWMý¤÷éµ0ßÑ,`Y°,SY¶¤ £ë¿„`Ybo[¶Æ7ä🣤‡’þ‹_î·+f�¶Ë"˽ý°fîAQA¡õ •ù÷µe‹>®Y°PDPPTHhýbý²�(ܲÇwìVm`aò„‰ö.Ø851I‡·î5L†‡‹[YAÑíÞƒvÛeƒž>/;šm0›òdE̲�é¹¢bš3U©�/ûðºY§–-ŠMX³d©ˆ��¨°ðúå+ËS»kÙ¦’r£ÿíââä\2>¾lG–µºu»m¿Þ¬\°,„Abgs�‡ÑOz‘^ óíÍ–Ë2•e»u=Ëá¹_ÿ_YÖîÊ�^|îWCj¶�€€ãmsz=÷‹Ü²½ø [°,„¾ùÑØ¸BO�‡ÑO4Mï¯Ó a¾=¢eÀ²`Y°lO–ËvjÙæ¬²2ýÍvÙ)Š í¸?³éÓ>SåI£²?‚[Íaeeõ÷}Y[‘ì½~ݪØÈ€¾èc@nÙ÷1˜:E‘ôýÝ]¡�Ã, –ËBúQr²Òñ»£°ó0vךOï¯ÖÃ0ßÑ>ŒbÙ<Ÿ»ÖÊò×¥Ä ,R‹‚­­¦N|¤6åÞDÙ$;X639pÕr=I 1~>^5Õéþï\0Ëf&¯Z¾°uþ¬éÞ=E�7fyËî…sÇa1üaA oÝ´¶®"³,ù[ÒRmÚeÉßåââ\0_»¢$ AvÜXYòO¹hb\R@z@Ç�ÊÒLÊ>9™ŸÖ¬^&%)! À?OW;9!ƒì?]²M»¬¸¸öšXª¿(+#�J»ìógŽmZµÍïÞD~%ßȲ¥K²3SdÇ�ûŸïÁ¤M»lNvÆêU+%%%øùùÕÕÕ>¼Ç,ûß?.=½ÕU`Ù> X, –…ô£\»xµ ?£9h>šX²d víØ¹s'ݾb7Ã|{Dû0Še¿æ¼ü–ëá¸@-ßï>Bj}–û÷‚7h¢*ÑÅl¤t_[¶¦,qÔH–7î�Ò> ¹Âþ)âmMYÒ¨‘Ã[æÛ¦'`óã"½Ûm—Ŷ~í²²Â„õë–£é#‡v“[Vñ¼ò¢dÊ>ØôÆõ«ÊŠRÔÕTÐô¥ 'Ûm—­ù’�-<\fèþ½;=^Ø×Wåc�EcÇȲ²²¾}ó,9! qVRB¼¢4·¬þ’…_J²;êcÐP_æìøÍT›5³+} î™›aG—�õ}¼Eöû·*g'»–�¨vÔ.‹[¶¾®JVvú³õòz�™‘&))9dÈ�ø¸Xܲ+¾”jh¨£éËÿ\ËöQÐZ´Ýmº?q ªÇêko–íW>|xDDDÏÖu´µÀŸ&€Ÿ‡ÑÛûø2†††}'?qqñøøø^\‘î{ÄaËb6Å-‹Wy”�…¸¾ë/ËÁ1YÖÅÁM+ÈOÄúìÙ½ ½4Üeàâpï×|Rƒ½ÿÛŒ^¢w©X6Äßù5äÃK4-!.JnÙ° 7íö—Ŧ#B½›¾ýut?šÞ¾u}G} NŸûöîA/÷î1Ä-NlþqâÄ_hzÇŽí`Ù>Š9´ËB»,´ËBh›ß±,y::ÓŲ�îTWL—=b‚0´e¿z>TUÌt7íëvÙ«—N ™:Zj˜eMNF/éi_½dük>ɲ&gŽ´ÌסbÙôÄ`ä×ô¤Ìš 5Ù¸esÒ#¨X6'#Yö”±šÞ²i]G–ýÙPùÑ÷øÑý òrØG¬Y½ YÖôŠÉ Š1Ú‡[67+�Ò²�ßÊí1\†ƒƒ_+%)šŠes³’ÅÄDIŒ6´¸ »ùGÝ�ï5G1b8ùFR“ã¨[öÚµ+hb®Ž6fÙóçÏ¡—‹-Ä-›÷9YöôéShzëÖ-`Ù> X, –…Ð8LiÙ^Y,Û³0®e‹¼ìçªÄYŸ¢Á½_=h—�:E¾»í²=°ìÔ) ”–ÅëàþÝè]½sñvYu5Ê{¿¨XÖö‘šPœ,_Z”Õøí Öښёe¿Ö–a<åääŒ Äîý²}lݲ…²’<äZl#I 1ȲӦNéq»,X–6Ë‚eÁ²�ÞÍ¥K—Œ��©,€[6==][[›——wüøñÎÎÎhŽ��ÍÂ… ±ÅdeeW®\‰M:4&&¦ÍvúB~�~yDÒ«W¯Nœ8}íÕ«W744´Ù)V%%%>>¾ùóçoØ°áØ±cÔWìë=aPËþ(~ë0O5öþ œ­Å¡6µiÏ¿f»Z¡—Ÿ½ï ez˲ե #G#ï/ËÎÎîU]š8²µmkY4ÿSÄ[dY]�Ùh;7¯�¥Ò_öðÁ]¿iYݹšè¥Ùõ d+JÒçÌVs{f[ø9±¢$cù²EèÝëWÏ#ËÖUæaýeŸ9?ª©øñÑoë– ïßP·ìKÒóÖ•§O+)Ì4½zkR¥bÙ[f×°el=ÀÇ1x`u¯e#J¥ÅŸM¯ýƒ-€Yvžî\Ò÷¿iJiÙºÚÊQ£F’÷—EŽû–¥qÀ²`Y°,¤wÓEË655M˜0áÈ‘#UUUžžž<<<ÑÑÑ™™™üüü?þ,,,”‘‘‘’’BË£™hf›íÐ˲sæÌùüùsAA‚éƒÚìÔèѣϜ9S]]íææÆÆÆFnÙvWìë=aË–„=²š:ñîø‘ ã¼v¯Ìx~õÎØhV¯o÷¬Nw½’çcþrãBôÒvö4DÛ^Ç #ñÊ¥ $ÄEùx ª*Ó|½±q 2ÿ�?SÉÏË“ËÇÓi´ìL]¯Ý·Ç€��°Ù`uí—ôß´¬�—ëhÙ‘Øo^:ÖUæÎÓÕ.3”››‹““cÌèQgOÿñµÇ`ÝÚÒR’�òô©Ö–·¿×—P·ì·º’õ®AË“÷L bÙ+—ÏúoÌïÞløZ¹aýZ�@>³¬¯�×èѲ­ßÿµ{›q ²2ÓV®X.!!Žþý:k–ê{?òq À²´ X, –…ônºhÙððp$ÔÆ–±¨P6oÞlddDli‚�ŠŠrttܾ}»’’Rrr²��Í¢E‹(·C/˾ÿ›>qâÄ�Èw*,,LTT‰›‰¾6¹eÛ]‘<`Ùž…Q,ËÏýj%iZ<ÞaÛ�–Ë‚e!½--­AQVV¦\cŸ››Û¤I“ð™&&&kÖ¬Aþù§©©éîÝ»Ÿ—£¸#{ñËS·ìÇ�©´ËöÀ²¿¿G!ŒbY¤ÒZ, –ËþNÀ²`Y°,¤wÓõþ²ãÇ�?zôhUU•——77wTTz755•@ ÈʒαÕÕÕ‚‚‚¼¼¼¸ÉÓçáß´ì�?Ð7Çú˺»»·é/ÛãvYõ0„e¿–…µVy8YEü·"ñB~ÅëGM2ƒX¶/ža –Ëöuè>Ð=T¯X–qÒõq [555‘\Ç�çàà€/ !!±iÓ&lzêÔ©óæÍkw; hY4;mÚ4lƒU«Výý÷ßÔW$Ó\Yh†°ì¿U�@V‰ÿ­$¼ZüJ^`Y°,XöwS^œƒþô  úoÑû‚Ð:ŒÖÑѱ´´ìúòŒ¿GŒ°,X,Û“À�@èÆ<ß¿?00°¦¦æáÇ\\\ùùù]_—1÷ˆñ–Ë‚e{8ã@ }Øçáôôô9sæyyyooïn­Ë˜{ÄøË‚eÁ²= œq „¾a¾ó0óímBOËFøÜ£ûíPLS¡¾öæ`Y0a¾ó0óímí²Ð. í²= œq „¾a¾ó0óím–Ë‚e{8ã@ }Ã|çaæÛ#Ú, –Ëö$LsÆ¡{ç(¨^)zI:„iÎÃx˜o�h°,X,Û“0ÍÇžûÏýbŠç~ÑûH‚Ð!LsÆÃ|{D›€eÁ²`Ùž„iÎ8`Y°,XÒOÃ4ça<Ì·G´ X, –íI˜æŒ–Ë2‡eK 2è}0Ah¦9ãa¾=¢MײÑï�×ÏRšJàÑ>ÔÔhGUa$Y½ £'°°äÄ¿Ã-»FYqü A A/0˾xpmñ¤qòCTE…On^]þ9·ì›'wVNS˜ÌÅ9K\tŸþ¼ôho°,X¶gaš3X,Ë–…gØÀ0Íyóím –­+�ž)"tÛxï—¼�yÉ~g¹Þ¿„[vÁxÙ›Çÿ‡A6=ê�Î($W̲OLO+ñó½´¹^‘™é¹MG]_ab}y²¬ã-“i¼óKÅ™¡%Ùá^ægwnË‚e{¦9ã€eicÙÁƒ4(/4 , –…ôV˜æ<Œ‡ùöˆ6aP˦FxŒ4¨®4†²�²¬å¹Ãš2ÒXgƒË¶ÞýûfÙÚ’XY—»ñ>µ%Ÿf‰‹"ÅÖ–Æ¡·œï\€>`Y<`Y"X¶§– p|¦7GSH@€��MBTTg–ZCr&X, ¡e(ÏÃK–,Ô’�;wÒå+ýf˜o�hµlMq”ª˜ðÃ�i‘¯¾W%´±ìkÛ›ëg)½|ØP™ !%ž—ì�Y6ì­=pUa4yÙ“›WïÓŸæíHz«(, –Å–%‚e{dY»k7YYYE…„_?xTó))êåƒe+ëâSÁ²`Y-ÓÑyØÐаŸÊ�ùöˆ6aP˶4;:¸bÁL!eA~cƒ¥Ù!ä–}vÿÒáU‹|\îmÕšõ£&³ì[‡;ŠÜ\mîý2ûkï5å·N椷àÞ/°,YÀ²D°l÷-[“ÈÏË‹`jgz“²�AnPØê…‹%ÅÄÐ2êÓ•Ÿ¾ ´lnhÄêEhq~^>uå�®î˜b±e°HKH‚eÁ²êa>ù1ßÑ&ŒkY¼wAfŒçFµé»õ4É-[S­**¼iŽŠÇ£ë¸eüž@»,X¶ë¿„`Y"X¶û–}ia�q³:6©�e¿&¥ËÊ gaayûØ>+ ‰v;{Â[?rË~MÍ’>‚´Œ�SVp-i߸e—Î[P™”í²`YH§a>ù1ßÑ&ýÀ²¨^ÛÞP&·ì�šä¿6,Wä¯/û„[–Ô_–�—²¿¬ƒÙ9¬¿,é-°,XöWÀ²D°l÷-ûàâ$NNÊ{¿\ïY¢·&O”ÃúìÛ´½Ük°…ܲ®Z—iéc°oó6Ò2›·â–�xóú€e!] óÉ�ùöˆ6aP˦„¿<¼zQô{çšâ¨ÌX/uåºm,K>¾,>ŽÁã«'‘Y=Þ¨È�L‹òÚ¦£¾xÒ¸º²xäZ3ôÖ³û—K²Ã`°,,Û°l/¶ËšŸBóçªi`–½pøz¹X{.¹eMOž&-£®�YöÂÑã¤ettqËæEÄ€eÁ²�®„ùäÇ|{D›0¨e*ãÜ­¯®RÂÆ‚1Zµ°0- +–ýQ“êjqy‘ÜØ?†°Ï:a°²,7_öµÝí•SåÑ6UÅDö/�ãË‚e{ü –°–­ŽIä#:Ÿ˜šõE»,X, éb˜O~Ì·G´ ƒZžû–ËÒ&`ÙŒcðèòuqOÛÚ¸äO¯½7-'�cPŸ˜6JF†¼¿,;[ü[_rËÖ§dŽÂúÔþê/ËÎÆïã–ËBºæ“óím–Ë‚e{°ì@¶,1ýó{{çùsùùÙ³‰ iÍœ…�/›ºrÁB QQ>ï¬iÓý�žQŽc�¶Ro‘„¨i¥éþ.ÏÉÇ1Ë‚e!] åyØØØxYŽ;F—/Öã0ßÑ&`Y°,X¶'ËpËÂ3lÁ²º‡iÎÃx˜o�h°,X,Û“0Í, –ËBúi˜æ<Œ‡ùöˆ6Ë‚eÁ²= ÓœqÀ²`Y°,¤Ÿ†iÎÃx˜o�h°,X,Û“0Í, –ËBúi˜æ<Œ‡ùöˆ6a\ËF¿w^?Ki*�GkøPS£U…‘µ%1ã ¢¬çVWÞØÝZ9­u¯}úºéQ^m,ãïº~ÖôÖ­Þ]]–Ë‚e‰`Y°,XÒoÃ4ça<Ì·G´ ƒZ¶®4z¦ˆÐmã½_ò>æ%ûYœ=äzÿy»ì !�@w¬]ÖÑìÜ4^‚ËÝ ÅÁ%Y¡^öwÎîXOnÙúò´µ;'TDç¥Zšuµ¸ –Ë‚e‰`Y°,XÒoÃ4ça<Ì·G´ ƒZ65Âcü Au¥1õ1À-[[£ÄÏç|Û„Jƒ´(/´µúòDèc–%X–Øò‡mwý„‚ê§êko–�ašó0æÛ#Ú„A-[S¥*&|ÁpcZä«ïU T,öö rjUaËÖ–Æ©Š‰\س9=Ú»±& , –Å–%B»,´ËB»,¤ß†iÎÃx˜o�hµlKÓ쫃+ÌRä76XQšÒ®eß:ÞQäæêôÞ¯´(¯C+¶nmÓê²ÜH°,XöwÎÇlF«3Aí^§ –Ë‚e™,to,§Mí3P£ûw€=¢Auú ϸ–Å{dÆxnT›¾[O³[í²ö7Î`w†­Ÿ5�|ƒ¬O>ÕgüOO, –…¡], –eÆüºÂR¿ÈRŽôŸÿílÔ Šö£N†ê´ƒåõ÷?—`Š«0å…ø¿×âN.Ç�^”)¯Ëÿ¹4S\�)/Ðÿ½Fwr™îôbMy½þÏ%›âªMyáþïµ»“Ëw§ñ6×ñN¯æ”ôÿ^ÓÛ»¬c¿Ì�þÂ÷Ë¢zm{CUL˜JY—;ç»>&×k»Ûªb"`Y°,X––Ë‚e™1`Y°,X–¡nÙ”ð—‡W/Š~ï\S•ëe ®¼CW££q nžEœ}vïRIVH»ã¤FzY³$Æßµ¶$.+Î×@Ce‡î°,X,KË‚eÁ²}œáÇGDDôÑÆ³²²¦M›6xðà6óÁ²`Yf²lIAõ�A-ÛPçn}u•Rë�±F«¦tdYt8½¶5[9U-¬*&²é¼6ãË~¯Nq·¹¾Jiòdn®Y⢇W/.ÊË‚eÁ²Dz[Vy’¼ÕɳŒoYeE« —Á²`Ù¤[–•““4h Ÿ²²²™™YÚ÷ŽsðàACCCÊeÀ²`Yf²l§G7ƒZžû–ËÒ&`Ù~aYeÅ)V×®ƒe‚eíììÐDaa¡««ëÈ‘#W®¤ö¬Ë–-³²²¢œ–íË<ýÓ"'#š–MO‰š¥:ƒ““}¢‹ã#°,X, –íRÀ²ÄîX¶èå»Á¬¬ý˲ºªjƒZÂÅÉùÇØqO.›öŠeƒœžÏ�¥ÎËCàäà˜"7éÑÕë½nÙ©ò ¯›µÛ.Kzëæm°lŸZöÒ¥KÆÆÆT(((Xµj•ˆˆˆ¬¬¬‡‡63==][[›——wüøñÎÎÎØLܲí¾+..~åÊDXaaa"™e±ÄÄݲ²†‡‡£éââbäZ!!!™ëׯ£9ºººƒ~¥Í×˶{9öçº`ž–� ;;›„¸¨¶–z}ev¯[VZJûKáà2l¨ôª•úá!>�^¦7oú­rìÈh—Ë‚eÁ²`Ùî…é-»ý&bBF}Tü­§ âÝ<Ó²¯­q rzßÁÜ€ÐòÈO�¯Þàçå=µ÷XvàXöçÏŸÓ¦MÛ²e òeffæ�Ð̦¦¦ &9r¤ªªÊÓÓ“‡‡'::šøË²½‹,«¢¢’““ƒm¹�eQÆŒcjjÚÜ܌۳gOEEErr2šùêÕ+ôî’%K ]¶‹–}lm†Î¢"Â/l+KR"B<7®_Y]–ÞG–µ}hþ¥8ÝÁÖR@€Ÿ��ÝÝõ õË´–¦ZËÆêX, –Ë‚e»—^´ìm£ã“ÇŒÃ-›õÜ]9²Ý¼�eõTÕ±^€#$¥LvíiF®¥°¬´˜ø;ódóÞ¼GËW~C�­ ŠÚ·vƒŒ„$?�WOmvާ¥e/í7’&CŲÄÄŒŸñièÊäpõ&"lmdü¾õ2’Rˆ¡zsr|1ËêÍÖlýžÒCMö5#ÔþײÍi9è-Ãõä} ìLÍЖ³?„"ËJKH¼³sÄ,›AÚ‹OɲzšZ­[:ÌäðÑfDÛË*L”;¹ïÀœ™ª¼ÂØQ²oí��eW/^‚··)+N!ïc°z±þ¿oM™zïòµIã'à–M �@ß$'*,û›¡nYÄP>>¾††ò™ááá�h/Z²yóf###â/Ëvô.²,¢-¾JËjhhœ>s'·lSZÎvv«‹W¨Xk—mÊÌ‹~ã=zÄû[wqËÊHK‡yxÖ§eŸ?z\LD¤9¯ˆ²]–¼¿,y»lmf./oÐËטe�vÎÓÔ‚vÙGKKkE”••Û,æîîŽÐÙf¦››Û¤I“ð—&&&kÖ¬!þ²lGï"ËÆÅÅáó)-;zôèëׯ£ODß± ýûý‹MkjjÁ²]¶¬Û3ìo¡¶ÍE¹öK¦ì¨áèOÕó¥CzòG„Î!CØã¢Þ“[¶¶"[vÔÒ2NéÉá¿–ù€[VÉ‚/ÅimÚe±kôç¬8죃>¼©¯.;Fý%¾}ó,9! qmª¢4]¦5ç¨C»,X, –Ëö$�ZÖ`þ"Ê«;бÁ6Ê>«´æî[µA¶94v¸„Ô“³—(û˜_­3¯‹–Íó$MxÀú Åòñâž¾ìnYÄÍWæVÄÄ̼÷Á¤mú‡`} �bù„8wÏ6} ÌŒO¯^°°�eýí�Ѻy�amîý’‘’¾xøX§–Åú˜�1Y½h1nYÓ¿Ï`½ *RÑòù‘1]·,"¬áæ­ëW¬D y…‚B®6�Á²¿Z¶ËÆÇÇãi·¿ldd$úD))©æææ6ß,ÛEËZš_E''å½_O­Ð[ òrØEy¯áVôrÏÿ¶�[ö©“uë2-彆ÛZ–ÙŠ[6,ø-eìý½®;¹=³suyŒ&fªLÇ.Ó«W-C/-ïÝË2­eõ&ŒÆÜ¥",xh¥^YN(vh½°º²xÒ8yŽ!ª¢Â'7¯*ÏýˆQhùçVW°Ãi‡îlÒ³¿§�7vÊ‚ü…é!è@òr¸»FyÊdn.eA�?U•Þ:ÝǧÖ×Oߺå-kËó¢±IoÂØ©ž²ÏÑØÁãñèö2Å?À²`YæHïö—õ¼a.Ì/ð=0Òç¶%?�ðõCfY—‹¦Šã&ðpqaçtUÅ.Z6Àú %£_šÝënÙÒÀðå:ó”&É7Å¥Ø9µ³MÄÜ”l—›w'Êñpq·~Ï)ÓºÞ.ûðÊu*–u¹k¡(7‰‡û×–§)á–µ»y³ì·Œ\ôVzPh·,›ÌÉÁQžœfw÷ž¸¨hc~1Xö÷CݲȔxÙ¬¬,¼¿ìøñã�=ZUUåååÅÍÍE$ë/Ûî»Y¶¨¨Çk¾ýùóçŒ3jÚ&·²üd·;Ø8W�ž!}ÏÉŠ ¶´kYTžj«Î"pó jšÀù–9>¾l¦ˆš’27פ±ãÌM.â} ®žø[\D”´eÅ©¶nïÔ²A/<Æ�ÃÆÆÖfdÙ —¯[ßš2³lc^‘„˜˜æ,5“ ‚,ÛîåØ×ëé¼¹søÑá#",¤9g6¾lFòÇËJˆ‹ñññªÎœîçíJ9ŽAFJøŠe‹~-£ìçý‚|JË¢3çp™a+–/ ~‡_¦s2?­[»-C ð(OŸjmyû{} X–™-‹õ—�!$°ÙüÒì�·ö·¹¹Ú]fnP›Þ®eaÿÂþð²1vP½u4G«ã‡Ó2ÅIØöß:Þ{ëx_‘‡»Í±dvbÿµ¸e³ã?L!ð䧆‚eÁ²Ìú>÷‹Tøà² üÜ/bZ.©(žûU#."r|—!}ŸaÛð¹PH@ÐÑ , Á–íÂåža –ýít«�v€}ô´ëV»,:��ƒ_>ªvÛeuFÊ Ë†y;uÚ.‹&þÞ²ÎxÓ°,X–™–ýË¢zeõˆ••ÕÏÞ™^–m.*3=sNZR²õ®/°,, –ËÒ&=°,©¿,_;ýenžíŠe±þ²Ïî_¦´,©¿,/eY³óä–ÍO Uäá¾{ú0X,Ë4Ëþ¦e±1¹èØ.ËÉÁ!!&öÆÁ žûE�–Ë‚ei‘XÕ£+ÆJü¼¯W䇧E¾Þ¦­¶xÒ¸ºÒO]±,6ŽÁt~óK…é!µ¥ ‘¾OѤa¹ê2_;�¤ëñøVEá§´èwÛt4O_WžLnYtä˜ìÞ¤,(–Ë2MÀ²ýݲð ["X–"`Y°,X–é™eQ¹Þ¿´HnìCØgŠ�0XQ–Š�/‹õÅêØº¥”–ÅÆ—]=]q27’ëÊi N·/|«HÁŽ"WËk‹äƵnyÓê²ÏQøø²¸e‹³"к`Y°,Ó, ––¥|Ês, –ËÒ"ðÜ/°,X––Ë2·es²Ò/�1š§1 ýDÓ´=¼ú6¶÷M/·»S`Y°,X–Ë‚eÁ²Œ°,X–)-ÛÜÜ´oÇêù“´gŽE;ú‰¦Ñ4Ÿ9ši«*+?¸µBOåØ�-mv ý�DøÜC?¡ úu…úÚ›ƒeÁ²`Y*ËÁ²LmÙáC‡‘V$7©w-«5{6Ú,7cZ¶±ñû›—.ëô5ôæÈkÎ�E‡9y¡9h>z-ƒ–¤ëÁ×;A{áéñt뺨жSæÐ. í²Ð.Kƒ€eÁ²`YFH×-ÛÅg%Ðײº3Õ°G€¸¹UýÙÓÒ²S'ýñðÊõN-««1»ÍÙß9¸ô‘e=�žâí²M%å‡ ÷Š ssqé/Ð+NI£nYÃí;°¯7xðà6í²¡¾~ hÙªÊ ‹ë‹´Ì‘oCXÊZ0[-‰–GkÑû(ì…`íÐÇlY¡§òøÁ­'—‚eÁ²`Ù>X, –e„0Ÿe÷¯7 ƧWÿ¿½»€Š2ëã8.*RŠ"¢"ˆŠ´Jc aÖÚ±¶®˜«¬Ý�­,XX(€’ÒJ Hw ’"˜óÞñÁyg@D‡ù}Ï={†áÜA>\ÿóLPÄòi ø…ü†–]9oAËìË2[vצÍÝee#}Ÿåƾ2>ÂHW¯1û²®7n±…e]o�1Õï÷]ÂrÈ>´Ox€, ˲¿6X–…e‡š×²^AÖS¦ËÉt´Ð5H¿çFYVµO_›9 Õ5ùù¯Ûî§¿9÷Û›»x<›fj.)&.%.>Ërìï ʲªŠ}mæ/6ÔТ¶÷³e÷X¯¡¿hmý–%«òy4×½ãgˆeUû*Û,Zb¨¥MÿP�ø‡N³-)..Õ¹ó¬±Þ‡S–UURÞ´h©ž†¦�€€Z?ÿë·)ËVDÆYÏš+×µ«ˆ��…‘IºO¥XUå~6K–ê ¦^Ï–‘Î µÓ¶{ú+öeX6ÑÛŸˆ0= ´˪öS±Y±ÒpðA�ë§ÎÒß´^i8d(ýM»³ÑqÓÆM�ìÜYJBbÖd«7ñ‰”eUUTlV®®9ŒñÒ_uYV¶K—ã{öQ3qA!ä~¾ yÞf,‹}Yì˲°lK×êÅXmrÁ²?š]³Zv¼¡‰Ù½Ô»�Ê<×NŸ­¦¨ô™\ÿÕ²2�%.8~ Ž¢…ÆÔ¼yñÊ'"ݱ†êZæº9�½3ykê�Ë ËÒ»|íSØËZû²M°¬Œ„dÀÕ›ŸÈaq)†Z:æF9>�™ÞÆ:CÈe†eÅ„E¼®—…Åì]·QXPð5anbúø¦fF©Þþe±kç/$ÌýLŒûÕ²2’’·œ?‘7ÿ»/[› ,(äëeÙµ �24nx_–àUFR*àžë§Œ\ZvýM)©€û>‘r^­šž“i¬«G.3,K?ÌõѧÜ× ìË%¤¼¹=aÌËòóñ9]¼Ü–,K=¤1/Kü,, ˶pEùéä^ba5×jüc–¥5²³ÍF·««Í³Ô²lÖ}r}ŽëSjÆàs`¤°€`ôµ;”emÿ\Á˜1 ¿¹Äšš1H¹ïNn•æâAÍÄܼOÞÌu÷¥,k»le“g ¬gÌÈ÷ ¦,kk½†š1Hq÷¡Æ'¾ÔŒAŒ‹ý3ú3öe3ʽzŸÝµ;Ë/ˆþuù‡RŸÒˆq£zP–µ]³¾¾ƒe³æÌ7‘X¶:1­³˜Ø�3ê›—-ŒŠ£,k»á/ÆŒýÍ�›¨ƒ”ÀçôûFÍÄxûÑïsäKʲ¶Ù|wÆ 5,’Ü$.0„aÙ®22ç�o{–¥Ây ~‘e³’üÉ)/-¨ËV—ÆÏùc’?_?å>mϲÚZêgíµ€e?¼+œ;g¦€¿J?%X¶áï…Ö·,B­,KkÖ}Y¿Ó—YÉërðeY‡»™-ëð÷ʲ>çìy•¾ÍËVE�[…88Q–uص¯iÏýàãÓ¨êyÑ�zÞƒ”e}þ½FÿŒßæe«"ãéŸÑÉ™²ìù]{–µ02ÙºÌÚïÚÍ:¾®s—(Ë:÷‹XÖñÐÿ-«5PµÖs¿ u†´Ù¦«©µqɲï>÷‹àÕ‘à•ɲŽÇO1ïËf<¯s_ÖñäéÆ<÷«ÍÏË6ð8o±�¯ñ–ÍLô%ÿ›×²›7.›5cBÓf ÔÕú_<³¿%÷eƒü޶ÙY\Œ�¯SÿþÊ»m7W§6¯eGŽ0¦~îÔ©cOùÓ§M |ú]Ën±Y?{Öô¦Íh¨ºtñ4öejûÁ²´æž—g`b©k�pÓ¥Ò'$ôÒµq†&ÕÏ^4lYBXuMK}Ã\7j^ÖLWŸ1/[Ÿe3/[Ÿe a 4µ-�Lr}ƒ¨yY3¦yYqQÇåá/l° æeÇ 7µ4–àá]ý*ôŽË¸¦Õqɬ–3|Äêy ?&¥3,ëtòŒTg ..®$Ÿ€Ÿ±,Yƒ‡XŽ™ñ’š—53Ƙ—m¤eç1È‹K0>ÂPW—:�Áü™³†R–�ÿ¹lÔö,Ëiµ®e—.ž¹pÞT¶°ìÃûW:vì°få⸨gåEÉQ/¼þZ¿âú•3ÍnYëå‹È…ªŠÜ¸˜àµ«—ñððܹùoÖ]¶dᢅsaÙßÚ²­þ$!¬†Wk=0Z2X–ÖÜ–-÷ \7c¶‚l7ú?ñ« ¸·ÿØw÷e‰eóÜ}§Ž4—“Ÿi>ºÐ3àW[6Ï/xª¹¥„˜˜¤¸øÌ1ã ÖýkÑݯ'X¤ÜÏïêMê<åqëæ/Rè.'Àǯ£ªvïô…:÷eýoÝUêÕ›‡›Gg�eÙI2’R&Cu>¿ìåÃǾkټȗSÇŽ——ìÜyæÄÉ…± ?jÙOEk—.ï,.ÎשÓX3sÆùeë³ìùã'jÏõ¦fÀ²l‘]³Z63ÑÏÜÔPHP@©o¯ã·2,[’¾üÏYrݺŠ ™›%Çz¿’ µ6Œƒ�”l6,32L>TŸÞ=ݳ¯5c0e¢%ãVäÊZ39i/¦N#)!.%Ùù�é_gGR~8@yóÆFCȇUì£ðØå «eÿÙùW/…µ û±2K¾G÷?ΪsÆ 73zê”ñ’�¥$%þ˜1ùun<«eó²b§Z1Ž™R˜›@Vu Ê¦�« õ‡ \s8ǰ,cº`]»|ª¦oÍ–½É\±l‘\÷n""Âæf#S“¢dÉ–?ÆšÕ�ý7Û¬72ÒTìÓÛí¡s­«)·"WÖš1ÈÏI›6u²¤¤„””ä¬?¦½Î¦ «:pÀ–Í )*öq{ìË~¿¯ßiu~ƒÕþŽªë”¬O™dù�¯îYrÖßíX~™«ã8ÖGyí§4Öó›ëˆ Ëï^uü¾Å:Ä]×/Uuü"Åúh«ýðªë!UÇc–åœoYNxÝ/bYÇýGšñu¿ªÒÄEE¯Ÿ°k­×ýb¶l3¾†-»XvìØ±ÔOôÅ‹·ø÷Ö¯ª1_TóZVo¨Æ„±#sRü¢<4Ôú3,;nôˆQ# ’b<ßä„­^1o�j¿÷e¯ÈOä%‹f0öe™çe‰eåºw ô¹SV³sÛBÒ_X3ÏËÖÚ—e¶¬�žŽ™©qfrHZB‘+¹Ì°,ù°A¾÷Ë _íܾž|Ø�o3cÙè0/òµø¸ÖiYý!f£†e¦F¤%…ê’ˬ–%Z55<+-*=9âë1Ö•‘–zæóðCe>ó¾,OÝ�ɧŽ�&7Öb”éðä„ð’Âô5«–© ø±ŠS¼ôÏŒ}YæyYbYß ÏŠÒ¼]o%$ýô¾´Ö¼l­}YfËè™›™fg$e¤¾262 —–•“ëä÷¶¼h×ÎíäÃ~þX Ë~'X–mõ`Y,û+-û%5ëÐæí²22_Ÿõ…×°mµ}ÙeË–µ%ËR5üE}ײLËúŒFÒ¦u‹kY6!Š>ÑN Kývw¹LY6-þëÜyÂ3êÇñûÒxa!Áˆà [öÀnêgôë¬0róôÄÀFZ61Æ—ŸçOýìŽzN¿WY)Ï)Ëس…úQ^˜C¿WI¡�™1ðr¿MNK|ÎúS>1Ž~ö’äW¡ÔÏú¨ÞôO—ÉlÙÄ8úÐyJ êGTýf§ÇP–ݵc댯bCÉÁ~Þ�2Réw8+=–²Q¬°°Pd˜Ö=¸ÿêrQA¹yfz|#-›œHÿt©É±$¢£èƒø9Y)”eØKqâMa.ý^e$Ã²ß –ýÍ-[�“ÜZ�� –¥Á²¿Ò²�:v”‘”ztÙ±Öë~µ˜ekÖ/Ø—ýº*aÙVì'-Ûø}YÏGü|ŒŸÂÉ/=)Ëz»]a¥°óÍ3 [Öþü!êgtEa,9þU´W#-ëévƒ‡‡›ñ³ûí›ró ßû”eÿ½x”úQþöMÒ×ë×Ë6°/ëåq‡‡‡‡ñ³þmI:ýÓ={ÄlY/gr ãGeiæ×cÜ(Ëþ{éT–¥öeãbB|<°þ1Þ¿{­aË:ØŸ¥.W–�ãâ#iYoO7rŸ�x÷ö ¹yp�/eY‡/Rœx÷¶˜\Ÿø*–ýN°ìonYN>ƒei°l³¾†-ëŒA�¯a ˲?_‹Y¶Ö¾¬‡«=eÙ”8ïöíÛ秇°>÷ëg,«©1°�}ÙÔW�uîË6ͲԼìÒÅsêÛ—MM|ñÝ}Ù´¤ð:÷e.Û5`Ù¹sft“íú©º(-9Šü1¾ÎMb}î×ÏXVKS½�}Ùô”ø:÷eaÙ–…e[=X–˲°,{Öb–%kè`õIãGå¦$F?ÑÒȘ—k9Üb”q\¸{YAd�ÏmòæÛ¢—?iÙÑÃW.ŸWUšÄ:/«¯«ma6,+%”š—5Òˆ1/û]ËÖ9/K�Ç S§ŽÖ.‹�ö//JŽóÞ´Áš:��¾Þ` óįԼì(SÖyY½!ä˜ìôhj^v”é0Ƽl�–­~›¼nÍræóŒcnanÿ2´¢$;8Àsì‹wåy?iÙ1£ÍW¯\ö¡ª„u^Ö@_×ÒÂ,'3™š—55’1/ ËþpÌ–uÿ‡¿É«ª8–…e›,KƒeaYX–=kI˦¿ò5€õ<Źak¬ç÷”ï.Àϧ­©zçºÝÏïËú>½ÕW±7ëy ˆb­&�–è,.)!>cêøüÌðŸ·,u~YKóâb¢Ôùe÷ü³…:¿lvz¤Õäq_?]çÓ&ægDzZ6'#Æj ã˜I9¯ê³,5<@þ(ä{ÈÕ:¿liQÆÚÕËzÊ ðëhk8ß¾òóû²Ï|=”ú*1³žÇ 7+eªÕ$ ‰Î’’3gL}�Ÿ Ë6½Z–ýRâՄ广sóZ–|KÓ·ß“B[À²ÙñÃL É7ùŒK—, ÿ•íÚå»–¥îafZB�–­yoF ,Û˜`Y, ˲ìYsYöG_÷‹eÕq~ÙºþÉ´í¼†-óú¥¯ûõßÝ.¼†mCµqËz{Ü0eL~ßâåå‘‘–n¢÷öMB³[–”ñ+W÷n]§Løä»–]¹b ¹ÉŠå‹ÉÔ×û1,ÛòÁ²´¯ß‰áŽ'Zý|ÆXXM^AžWí`Ùÿf˲°l d×Ë~È{ü3–µ¿p¨}ûö’â.w.çÇ„ú»Ìš1±´ öYÖáò©7ù‰×ÎŠŠŠðòòÞ¿ãØ°e©3!Ÿ:q¨É3êjä#¸Ü¿ƒƒ¦ËÒ°/‹}Ù6½/»yóf槇oܸ±Å¿Ãš¿Æ|Q°,, ˶Dµ,›õôÔE��‡»Jçú�#HÍ ¸x^£Ÿ½¾úé~½âw5Á²oò¢D„…È÷¹ý…ìß©¯§L²ì"#EŽÑ×Óñ}r›Õ²© !S&�ùvÌ`ß§ÎÔƒ›:†ŠþºL–¥ͧŽï'ov‘‘®*Ï!�ÝôäÈ©Vºv‘!Æe:<þe(y¼貞†ƒ±/Ëü)øøø,ÌMKßäÖÚ—íÛ·ómwÿ³³Ö¾lzZ’Õ”É]ºÈˆˆˆèûùzS¬Úܼ¬´–åØ`YX¶ [–cƒeaYX¶%ªeÙwé.U®×Íõ³½Î¤V¦ÞŸóˆ\(�½y¬§l,ë|óŵ7yѵ¾+Ê ã{)ôàââzìâ˜ëO´Ú¡oô‹§Ì–­x“ô혫IqA5Ç„y3,;nŒYQ~B­}YêÑœ™E}jßG•¥ÙŠ}zµoßÞýÑíø—!„³Ä¸Å¯ÓÈctärŒÝÉì3Ô§˜=kú›×™†zäòÞ=»Xg X÷e–­|[Ò«—¹ÿnnS’ºtéÒ¡C‡˜èH†egÏžUü¦ÐÐЀ\Þ·w/,˱µú?ca5Ëâ„¿²Ÿ, ˲-�]]3 Ë2VQ˜ãYÕ¾M°ì¹S{ˆÒ:uêÈú]qóÚiò.Õ�ý¨ï„Kç’7—/™ËlÙ[×Ï}=F…z¬¯X:Ÿ~ÌÒy ˆ¸±ÎP�æ÷os)ËÞ»íxÇÉž\:D›zàZM™@Þ÷ñe]µ”û‡šw_öÀú°ÑˆaúÔw®ëÉ›£-F0[öÀÞmôc†R�õ];6Ò�±ɰlzrx}–eìËø=>´ë,ÁúµÖ�±lfZ¾6j¤‘˜¨·Dg1#]êü²Éqþ“&XÈHK êÕòrsb=�Ar|Ф –ôc„…t‡j{¹ßf>�«e ùø:õ�ë6iâ˜�ƃ8=9rú´IäAAm�‹çN¼¯,hËz>}Ü»w/êšGï×:�AjJÂäIed¤………õôt½½ž2ŸÇ–¥Á²¡6, ˲-Q�û²­þº_x [X!„Ø=X–…e["X–mõ`Y„P› –…eaÙ–¨–e‰J›°È aYX¶ÉÁ²¡6, ˲-³e߆¼+ ý¶ž[/¨Uõ&ìÛ ÿ¶"jV daYX¶)Á²¡6, ˲-³eÿû Vû;ª®ï"ÖoX–ýá`Y„P› –…eaÙ––…e[=X!Ô&ƒeaYX¶%‚eaÙV–EµÉ`YX–m‰`YX¶ÕƒeBm2X–…e[";ú+ì�iõ—GÃb]�|ɸ6,‹j“ÙÁ²°,,ÛÙa_û²­,‹j“Á²°,,ÛÁ²°l«Ë"„Úd°,, ˶D°,,ÛêÁ²¡6, ˲-, ˶z°,B¨M˲°lK˲­,‹j“ÙÑŸ]}ºÕŸIŒ…õ“«‘OFo#–5‘“�ô½û‹,»wåâk—Á²m/X!Ô&³Ã¾,öe±/Û5Ʋ��NÖ8ˆ¯“ž´„õ8Ó¤°ÇÍbY eEç‹G`YX–EµÉ`YX–m‰¾kÙkÇvh :�´ÍOö/H p»zâïE3`YX¶ƒeBm2X–…e[¢†-[ž¦%"tãøNÖƒÔH�9ÆC5Ì\ÿ=Z˲©QžsŒu¿¾·—«Ãqê{CWJâœí_Ê}‹‹Õ²,y×ùÝ›-”úh ®š4ú]q2õˆOóš¬9HSXháHãõÓ'1,[�µrÂh1Qãî²—öÿMÊ©±ÁÚ¢"1AOÈã8?=z¨Dç`gX–-‚eBm2X–…e[¢†-ìæ¨Ô®]IÎóZ–­.‰5ïÛkßÊÅÙ/¼ï^Pãç‹ñ¿Ç°lu髯ï]Xœáí|YM€?&À•²¬•ŽzFÜ3Ö}Yò®YC²‚r“ŸÑÞ´ÛOîï+ÒGõQ8ºiUi~üãkçT¸¹)Ë~|—c¥£±sÉÜâ¼W‰‘ÏL{+xݽBÍ7N4ïÛ§²8}þ㽫–`_–]‚eBm²VÊV3.vµ¬ûµÄ©¬ÏýŠð¹¥%"\õ&–úð¯™÷XÏcX6Âçý½Å¯¨ßöþúcÒë”e mëœ1 ï rs¢~™;¼~ù?ËçËFø¹é,þ¾"ƒú½mѨa”ecCž’�ÿþmõûÙ•£{6ΜBýrö§ÅÈÑ*Jcú+W•eÁ²ì,KÃÏ<¬fZ­ý@FuW”ŸNþ2ÇÂb÷Õðãü7µl}û²î×OYöëÃøçŒ“[W­ždÁ°¬û�Ó–ýÿrqrëšÕ“,)ËÆ…<®Ï²¯ž{P–=¹mݶù3ˆe=œ.Œ¨Âø7ˆ¿Ï¡,ûä–=¹W*ÜÜýÚ·Wæâ"—géQ–õ¼C¿ÃNv‡0/ËFÁ²´¯ß‰4Ÿç4ß5Ë�¬0úzFV8}ùS+‚ðmFÖ¬ ²¢è+˜¬hú ¡V -ôÛzþòÿëElÍ ‹«YádÅÓWµ^Ñ"¿­¨„š�X³bÈJ¢¯—ÔJ¦Å2V -ŽZ©´øoëUZÍJ +�¾©•AK¢V&-ùÛJɪY©deÓWµrhéÔÊ¥¯ jåÑ2¿­¬üš•MV}å�õš¾r©UHËû¶ò‹jVYoèë5YÅ5«�¬ú*¢V)íÍ·U\V³JÊkV)YôUF­·´òo«¢²f½}÷ÿUYU³Þ‘UM_UÔzO«¦ÖÚûoëÃÇšõ‘¬Oôõ‰ZŸiŸ©õ…öåÛ¢E!ÔJý¦–¥æe�Nìj®}ÙøP·Æ[6ÂÏu¨DgÖ}Ù—Á]¤?ÒGjþ3:S^˜2¢g›9Ó ºÈç&À²ì,KƒeaYX!Äæý¦–%ëêÑ„³·ìþ)H `œÇ º$ÖLQaß*ú¼¬�óÅAü|ÑÏœ™çeÍ{í[µ¨8'ÂçÞeú{ý]š`Ù÷é#{Éß¼¦4?ÞÃéc^öCeöm�Ý+dÆfÇÞ�IJ}zµcjÏú¿ˆe¥%$¿)9a”yz@Hã÷e©ËT|�:Y Q–�Z˲yÑq½{ö$—lÿ–E¡Ÿ –…eaYŽ® [6Û7ˆ2eà�;Œ}ÙqÉ7�Ù‘+õ5µÞ—ý�”~óÔú‘Ú:?jÙÙ“­Šã ‡ %—÷mÙÆlÙho¿Êýè×oÝŽ}Y„úù8²{¬ì_ó', ËÖ –¥µiË~ŒM¦,{ÿôùZ3�:v$׿�~õ݃š#ã’~ȲanOi9¯m¬W‘Ë‹fÎb¶lòß½¸˜1@¡æè÷µ¬…rï»çö1,ëréШ>=CËZôë«Ô®YC:‹¯š4¶0;®Ëvíèɰ¬‰\÷¨ /X¶µ‚eimÚ²Œ}Ù §»ŸâRÖ/X,/Û­c‡Œ€Ä'¾¬–ý””¾~ÑùnÝÿs¤·ÿY6ëE$±ìöµëÉåùÓf0[–$*"’Ë"„P³Ë6ƒe�/�ü\]�“1UGÓföôÆ[û²­,KkÓ–=¹õoj^öCl’ã�#ä²Z?•¢ÐˆOñ©¼<<äÍxwobYÍ™-ëxøýH•þEá1Ÿ’3jŽôôm.ËΚbEþ«Ô§OÑ«$X!„~>¶´ì„A*JíÚ ìØa²Æ@êu¿ˆbu¥$ÎÙn´Pî3X\”X6á…ûdMUM!Á…#�ÖOϰ,9ìü?6J}4VM²|WœDY¶ -|å 1Qãî²—öm£,{|ó])Irå¶ù3ß¾I!Š=¾ymÍ5 þx[œÆlY²ÎÙn™¬9ˆ‚ìDuUêNNÑR� ö"�]1~4µƒ«Dÿq¸�y_6->lÎ0# !A󾊯Ùò-,Kk£–- �ªuƒ‹»÷“wé¨* ?¼i+µ?JYv”�¹||ûNʲ÷¤9H­0<úð–í5G6Ÿe3ãfLœD.h«©¿MË‚eBè'cKËR›²QWŽì¡Ð£º4ž²¬•¶ZF¬/�lui‚iïžGþZ^’õèª� 77³eg ÉNÊM!¢½i·Ÿ@öãÛt+��Î)ΉIŒð&·õºkðH_F*%úYIþ«§öû¹\‹tÓ—‘N‰ (ÉO¸qê Ÿë�ÿì˦DXikìX<—y_¶²$ëêñý#{õüð® ¾ƒUEJŠû×Z—fúºÞVàú –m�`YZ[´,_§N=ºÊNeþüvÍùeß¿LúcìA~æ³P–õºr£wy š�/;¾OHýcüÄÚG2Y–9çó—Ô²YÑï³r�uõÈeSc“9ù°,BýL¿µe»˜ÔªsÆ`X�nIáî”e½ï^¤ Â}î é,V]–HÍ,eÌlÙÀÇשƒÃë—ý³|>±ll°›–ˆðûò4jÆàÊÑ6ΜúdX�îùiŒƒ¸POú5é‘uÎË’õ‡þÐÊ’ Öƒáò=’c‚ë³ld §–¨ÈûÊBjÆ`Óì™{W¯€e[ X–Ö¶,‹×°…eBØomÙúöe¯Þ1²W�x)A>r¤,ü€²¬ûõÓcöcÌËîXô³eãCÝ)˞ܶvÛüIJOn^ G…›»_ûöÊ\\äòl#ÝOï²ïž?:COgê`Í“Û6¼-JþT•{÷±zƒ§Ö:¹}ãÛ7©Œ}Yr!âÙãÁâb¾.×)È^=¾ß´·Â€¨;üä~}–}rçêheƼì©[VO™˶@°, –…eaY„›Ç~–M {¬%"î}ëíëè�‰&r²Ï\ì)ËÆ‡®Žqƒ– –¥Á²°,,‹bó~_Ëâ5laÙ_,KƒeaYX!ÄæÁ²°,,ËÑ‘ÿ×áŽ'ȱ°š¶‚<¯ÚqÆß¡ß3X–…e9:;ìËb_û²!v–…eaYŽ–…eaY„[˲°,G˲°,Bˆ­ƒeaYX–£ƒeaYX!ÄÖµ¦e±~çÅ ?™`Y, ˲!6¯Õ,˨(?�ü%ˆõ®Ö~hüò`Y, ˲!6¯õ-‹PkËÒ`Yv°¬Ž†æùcÇaY„ª3Xqn°,íG,›çò”»}û°¬F?•Ë;÷4Ù²*ý/ïÞß°e5ú¸¼ïàïcY ÕA—�ŸÄ¾,B5!Xqn°, –…eaY„›Ë"Î –¥5·e˼­­fÈwé**$´hü¤·¾¡„°î~ÓLÍ%ÅĤÄÅgYŒ}ãHAVU±ï–ké (ö�w·»@,kejÞî[:T‰e+‚#­gÌ’ëÒUDPÈÂÀ(Ý݇²¬j_å-.3ÖL¿¹|O÷óöIJVf–ÿ¿¹ê :-ke>šéµÓ;w÷Wì˰l¢—77wú³`YUå~›–®ÐÓÒTSéïû>eÙŠ¸dë¹ ädeE„„-† OzÁjÙ=›¶ô’—gµì1ÛÝòÝåøùøôt‡=ñ&–µ7þÿ÷GC“XVU¥¿Íê5†Cu®Ÿ¿ÈTaz&,‹â„`YĹm\5—p–Ã×’éºÍhÙ1úFzªj±7î•xžÝ´ÝõðIbYCuMs]ƒœG^™=�5µÉe†eådº„88UFØ.[)%ÞùKx<ë¾ìøa#Ìô R{•…¯�=_M¹ßçèʲ¸!7îT†ÅØZ¯¡ß<6¹ û²Ññ‚‚þ7ïR–]»`Ñ(C#j_–XVLDÄûÆí²—¯önÜ,,(ô:<†Xv¼©™™±Ij@HY\âÚEKÔúøLŒÛË&„ðòòú»<¬ÊÌ zä¾néò:÷e‰ee¤¤¹"ïýï¼,±¬\·n!O½+ó l·l“’”üRZN,«;xðÔI“^§¦§DÇhkh²!Î –Eˆ£ûî¾ìl³ÿïb2·y΂Z–͸çN®Oºó€yÆ åž¹2ÍÅ�š1ˆqºGÞÌu÷¥,{hÍjÆ Ø7„\ŸM®ÿ¯e³<|Éõ9žþÔŒÁç¨âÎhç”em°¡f ŠƒÂé7÷lÚŒÁ²™³gŽ›@ [ŸÒYLìÎéó ËnZº‚1c Ü»ÏÙ=û³‚Ãèwéy5c@KŒýÄ»13©¡aüüÑÞ~ ÏËÚÚl©ó¹_IJ‡lwS3ÅéYô¯:>!)"ŠŽ×´ jÆÀóÁ#X!Ä9Á²qtÍ8cà{ú29à ¹ÌdYŸ³ö<ÜÜŒyÙª@::Cœ(Ë:Úî£,[Iw°‹G-Ëú]¾ÊÊh—“g)Ë:î=DY¶*<Ž~s7¯¦Y6ÖͳSÇŽEaÑŽ‡ŽIKH| Ç|³ìù½–µ0¾Õzµß-ç:îÒ%‡FÎ˺8\556ÑPU�;mz¤—o}–u°;SŸeÏž§,[•_Hÿª#¢|>`ÌË¦ÅÆÁ²!Î –Eˆ£kFË6°/›áú¤Î}Ù:-«¥2€aÙ 7ïöíÛù…²>÷«>Ëj ø]Ëj T­õÜ/C�Á7mÕÕÐÚøçRÆs¿ˆem–Y×Ú—ÍzN¿KQq?óܯÏy¯O�ªÌÈ&–ÕRS«eYÇÓgoYìË"„89X!Ž®yŸûe©g¨?H=Îé~©WÐ9›šyY5MK}ÃÜÇÞÔ¼¬ÙP}Ƽl�–cd²zæœ�áqgÇ™ ·44Npõ¨|zýÎ8“Õá± XvŒÉðÕ³ç}$Þ­ß²c†�X=wÁÇW© Ë:·“ê,ÁÅÅ•äýŒÙ²â¢¢>N·ËcØl¤æeÇ™Ž²6"Á' 2!5ô�Û8S³ê”ÌÆÌËz8ÝÞd½*)èyuV®ýñS¼¼¼i™Ä²cF™­þsÉǼ×M³,­¬bˆ¶æeBœ,‹G×¼–-õ \:ɪ»´Œ¸°Èâ “©óä¹ùLi&!*&)&>Ó|táSÿ†-ëoM©§77uƒò ˆusæ+të.Àǧ3PõÞñÓ ïËú_½¥¤Ð‹~ózÎc@,ëãÎ×cxtTÕ(Ë~HH“‘”4¢Ë|N.bÙ¿–,×ÕÔÔOÅï¦3uƒò¸¤u‹—(Èõàç×QS¿wѾ‘ç1xŸ•»oëöÞ={òuêDÀêlïHÍø?x¬Ô§ã<?jÙ̸W£†�TRT<`»›\_–›Ë"„8!X!ޝûE­êøqQÑëÇNÕ²¬ã‘ã­þº_?z~Ù‡·ïЉŠâü²! –Eˆ£ƒeÉú’”qÈf›¬´Ìr${ZöÆåo;^-ÏÍ� ê߯ߒ aY„‡Ë"Äѵa˦y>c=áÀìñY-Û©cGIÉG—j½îY¶(-ÓjâD1QÑn²²ÖK–¾{]Ë"„8$X!Ž® [ö‡f Z÷5l›wƯa‹â¨`Y„8:X–…eBl,‹G˲°,Bˆ­ƒeâè`YfËê R;¿g?, Ë"„Ø(X!Ž–…eaY„[Ë"ÄÑ5ïk%À²M³l�nÝOìÙÇlYiI©óGŽS�55F�„�¯߀~*WÎ]`XÖtØð•K–²!N–Eˆ£ƒeÙ²+ÿ\B+.«ÌÉ?¾ï@ûöícƒaY„¢‚eâèš×²ºíÚµãââ’ïÒuן˿×~Ul™O°õÔò]eE…„M˜üÖ?Œ@¶Ì/ÔzÚÌš+'NyN,[n=ý9™."‚BúFénÞd�mÜBŽäïħ§®vóeÙc›¶ÊËv«¹ò¶K–••–yrù eÙ,¿`r'KÂbˆeU•ûÙ,Yn¨=X�_àú±SõYvÏÆM½zȳZÖÂdxÍ×Û­û®õ¿dåS–Uí§²eåc]=!AAE…^î7nÈžÞw ¿’2ò‰AϹ¹¹ÓÃ#oY²>¿)%·ºvá,‹BT°,Bݯؗýîx³ww¹«»öQ–c`¬7H=ö¦K‰wðY›®GíˆeÇ~½òöƒßг[þv=všXv¼É3=ƒÔ‡OËÃÖΚ§¦Ôïsä«W^‡U/^]½µnÎbÙ„OèW^qª � ºv{ÝÜ…M³¬Œ¤dÀMçOä]õïËÖgYj_öSzNøã'½å{^=yšaY9Ùn!Ý*S2l7ÚHIH|É}]‘œ.,$äïò�²ìÚ%ËF™ k¾,Oâ‹X!„¨`Y„8ºïZv¶ÙhÖWÏ"m& lpÆàØÚ¿¬FŒ"�Íp}BŽOºûˆyÆ ã¡'ýÊûnÌ3Yn>äÊœ'~ÔŒÁçˆxaÁè;R{ ðñEß}À]vD4-¯pÙÜù3'M&–­ÎÊí,&~çÒ¿?4/KêСç[˜—E!F°,B]óîËÞÜ}P­¯!&/]U5bYßsöä†_Bc˜-ë{Þ�»=÷—°XfËú]¼ÂŠf—ghщ俦ºúýúÏ71òŽ+5càrêýJ•þsÇOŠt~Ð4Ë:<ÚdËÞ<}N­ÿ~þš¯WK›aYÇãv”e«Ò²éj %–�õ èÔ±cQ|¢ã©ÓÒ’’²ó)Ëöî©pxç?Ì–ý÷Ô™Zû²¯S&Ž«¥®þ©¨–E!*X!Ž®-›ÿÈ›à¼ÿh¹wð—�è#«7èôøCû²�½Û·o_ä\ßs¿>G%8î9(,(Xù"šñܯÏ1‰Ž{ѯ YŸe{÷�w9}�²l˜óCfË:j¢eóã¹¹¹�/\.�Oþ’™wdÇN5õ†-KË/22ôàö�ºÚ:W¬d<÷k¤‘ñ’9ó–-LH&7yöÀ�u^¶$=K\Lìì‘c°,BQÁ²qtÍhÙ4g7.../» ÕÏÂ/^‘“éBY–,K}C}5�¸[®¥>Áç6ÿMÍËZêѯ¼ó Ô/ôÜÖ�Ô¼ì8ãá–F ÷Ý*C"C¯Ýg2¼úÅK�³—7-XœôðIuX¬½í>^žŠÐ(�óö›þ™ôس:"Î~÷ú•/bê³ì$Sóñ#LK^D§{ ª÷£–­s^6-0”þõ:Ý©NÉ ¼÷@NV¶1–u:wAJB‚Ü0)øòNç/ Üw¼ú6#'3òå¤1cU””>�ãY,K+)ß½m»\·nï_Á²!DƒeâðšwÆà€õiñÎxy÷¸jÚ Ë–z/�4µ»´Œ¸°Èâ S¨ó”ú†,�2�~¥ˆÈâIVÔy ÊÂÖÍž§Ð­»ŸÎÕ{D½Ñ‰ïÃb÷­^ß[®_ÇNª}•œ�ÙÑ^&½�ˆß·fýÊNäJeçg˜1Hyꧯ©ÍÏÇ×_±¯ÝÛf±,Y6o“–�¤½ê«,jŒe?dåÉHI™èé×z­û§TUú ðów‘–ž:~BFd ãµjY¶";O¢sç3GŽÂ²!Dƒeâððº_Ìç—¥¯Ô¬_z~ÙêÌ\qQ±ëgÏãu¿B¨Y‚eâè`Ù–´ì—¼ÂC;vÊvéò!;–E¡f –Eˆ£kK–M{âËz„Ùã&þ>–íÔ±£Œ”Ô£k7j½î,‹BM–Eˆ£kK–ýý÷eë{ [X!„š,‹G˲°,Bˆ­ƒeâè`YX–E±u°,B,û3–ÕQS?¿ÿ«e?eæÍ›:]€Ÿ_¥o_X!„~i°,B,Û\–¥_>p˜²ìýËÊ}K_%Ór_?ü¤c‡¿ƒeu´´ÎŸ²ƒeBm,X!Ž®y_+¡Y,«ÑOåòÎ=M¶¬†JÿË»÷·î¾ìÖUkçL™Úò3ƒÔ.Ÿ>ƒ}Y„GË"ÄÑÁ²¿Â²ËçÎ_éÎæƒ”{näÊ4wjÆ Æéy3×Ý—²ì¡5¨ƒbßr}6¹þ¿–Íò ¿”Wާ?5cð9*AXP0ÚùeÙCl¨ƒâ púͽcÙä§~äà‚àpjÆà©ÃõFZ–š18¶c—Õè±M°lVxýk‰|IÍ|Î+Šö}FYÖvÓæÆÏ¤FÆðóG7Wœøøó²i>�ßµìÍSgÕTú>Rw@WS« –õ»çZÇ×âx•²¬Ã©Ó?4/ërÃÉtØp‚×¹3gFÖgY‡ó곬ã¥Ë”e«JËèz±ñ>Ož 2æeÓ’’aY„Ðï,‹G׌–m`_6ÃõI�û²uZVKeònÞíÛ·/ò e}îW}–Õ0ð‡öe=o0,Û»‡¼ËùK”eÃ\S–ÍÉÍÍí|îRylâ—ôœ#Ûþ&lm‚e3^Dп–øDÖç~Ë:Ú�iÂs¿>—9ž;/,$T™ÿšXVK]£–e/\l¼e±/‹bÇ`Y„8ºæ�—µÔ3Ô¤çt¿Ô+èœMͼ¬�𦥾aîcoj^Öl¨>c^¶NËŽ12Y=sÎÇð8гãL†['¸zT>� ½~gœÉˆêðØ,;ÆdøêÙó>ïÖ?/««¡9ÙÌâuHDŠ·¿¶ê †e'™YŒ7U—þ,x¸®>eÙ4ÿ`...¯ë·ªÓ�]åºÊ6Ͳd�33·12! ¤2=+Ôý)y³:;·aËÖ9/ëq÷þ¦5k“£ª ŠìOŸáåå­È- –cn±zÙò�%eM³,íý‡!ƒc^!Ä^Á²qtÍkÙRÏÀ¥“¬ºKˈ ‹,ž0™:�Až›ÏÔ‘f¢b’bâ3ÍG>õoزþö×”z*ðpsSç1(ŠX7g¾B·î||:Uï?Ýð¾¬ÿÕ[J ½è7¯ÿ<Ùþ!f†F¬ç1Hñ Ð×Òæçãë¯Ø×n×nÆŒÁ›­Ò’xy«i¬š¿°É–-ON_·t™B�üü:ê÷þ½òÝ}Ù:-û¾ hßß;{+(ðuâSí?ÀùêujÆÀßã©’¢"ã<?jÙÌ”ÔQ#M…„„”úö=°w¹¾ìM1,‹ú�ƒeâèðº_yAa Ëþèùeé‹:¹ìÏ/KËyM_-~~Ùæ} Û‡÷]ÄÄÄp~Y„Ðo,‹G˲̖½qåêíNåoŠ#_„õWQY²x1,‹ú̓eâèÚ°eÓ<Ÿ±ž7`öø‰°l–-Êͳšî®(Ëf§¦™™Ò_·VYIéø‘#ô³íææÁ²!v –Eˆ£ûu–5T×4×ÕÏyä•ùੱ¦¶¹®eÙ1ÆzƒÔco¹–ø„œÝ²ÃõØiƾ짰Øðw{w—»ºç`c,›ðð /�ÿ§ªð¸ ë·×Í]HYvüpS3£Ô§~e/bÖÎ]¨ÖOås|*eYßwTDÅÍ�8…�t¡Õô7/¢ŸúÊHJÞOó²i‰I°,Bˆ½‚eâè~‘e©}Ù �ÆìËæ?ñ'Àu>|²Ü?ìKDü‘õ›aè¹_Ÿc’÷¬ �Íðòoß¾}QPës¿cÙüÐPç3Ê_¾ú’šudë�Aj [VKuPã÷eÏýúœWèxê´°�PeFÎ=÷ëó›Rdzçé7Ì+ –ÕRרeYÇóoYìË"„Ø=X!Žî×Í˨iXêæ>ö¦æe͆êSó²–ú†újq·”ú†œÛò·ë±Óižrqqy�³¯‰t¸!'Ó¥‘–õ8o¿iáŸI�=«#âíwàåá©xñ’Ÿ:nØHK#“7¯ÊȸÐ[÷Ç YMnÛ8˦ùÑïÌÕ›Õ ©�wîËu•ý®eÇŒ0]½pñÇôlÖyYË#õuÇù”&¤œ;xØÕñš‡ÓíMÖ«’‚ŸWgåÚ?ÅËË[‘–Õ˜yY�»÷6­^“Y�_how†~Ü|bÙ1ææ«—-ÿHŽi’eiUï‡è Ƽ,Bˆ}ƒeâè~�eó{Oi&!*&)&6Ó̲ðÉ3ʲ¥>ÁK'Oë.-#.,²xbÍy ¬^/ݹs^ÞÁUW͘ÝH˾�Œß·fCo¹|�:©öUv>q†zîWù‹˜uó*t—#ZÕQtÏî\ã÷ei©Y6m‘–�¤ß5õUó~ײþw]”z÷æááa=�Aé«ä¥sæuï*+.*¶ø�ÙoS3ßgåîÛº½wÏžôû¬Òßù_ÇF>÷ë}~á¾÷VPàëħÚ€óÕkÔŒ�¿û%EEúgÿvƒµlfrʨ‘#…„„”úö=°w/¹¾¬è ,‹b—`Y„8ºæ}Ý/Zµšíü²ôEAö7>¿l[z Û‡÷‰áü²!6 –Eˆ£ƒeaÙŽWn_¿Q^ø&òù‹þ**K/†eBl,‹GÇ–Msóf=5Áì±`Ùf±lQn®ÕäÉbbbÝde­—-WZË"„Ø(X!ŽŽ-,‹}Ù›1ÀkØ"„Ø.X!Ž–…eaY„[Ë"ÄÑÁ²°,,‹bë`Y„8:X–…eBl,‹GGîx‚ü «i+Èóª,‹j½`Y„8:;ìËb_û²!v–Eˆ£ƒeaYX!ÄÖÁ²qt°,, Ë"„Ø:X!Ž–…eaY„[Ë"ÄÑÁ²°,,‹bë`Y„8:X–…eBl,‹G˲°,Bˆ­ƒeâè`YX–E±u°,B]«Ÿi«m,X!ÔZÁ²!zEùé„#XXM^­ýFqh°,B!„b×`Y„B!Ä®Á²!„Bˆ]ƒeB!„»Ë"„B!v –E!„Bì,‹B!„Ø5X!„B±k°,B!„b×`Y„B!Ä®ýp[MF5IEND®B`‚astropy-pyvo-f0fdda3/docs/mivot/_images/xtapdbSED.png000066400000000000000000003671461521254414300230170ustar00rootroot00000000000000‰PNG  IHDRºJf ¸sRGB®Îé–eXIfMM*>F(‡iN��’†„  º JASCIIScreenshotœ�îN pHYs%%IR$ðØiTXtXML:com.adobe.xmp 1098 1722 Screenshot ñü-ƒiDOT%(%%ÜÉ$³E@IDATxìÝ €^Óýÿñï“=²‰!‰¥JÅjß©=¨"‰¥Z¥U”*¥öò³¤µÖ¾”j•ÒRU$±Ôkˆ¨l3“…,²'“õþÏç&ç:óäYî3ó<™™xŸ6î³Ü{çÎ}fÎ÷~ÏÉŒ76jÑ¢…éßÒ¥K-“Ñr‰µlÙÒ¢(²eË–ÅËL&¿¯ç -²ysçÚ‚ láÂEÖ¶m�5¬C‡Žîq[k×®�µm×ÖÚ¶ik-Z¶°6mÚX«–­âzT§ê^¼ÄíÃíSõùý/q¯ùvÄû7³È½¯¢ýk[½¯¢¶úíô\õh-Uâõݲ…{-yî¶gÿøsþñóÇõ‡ë/ß?|ÿòû¿ùß#ùý“ß¿ùûcùß�üýåþþu8ò÷gð÷4Óÿ@ÿKÜŸDÿýoþ÷F�ô?ÒÿJÿ3ýïÄ‚ßÝu±Ôø‹‹Ð¸¸RmZPëâKµ ­¶¶Ö¸óæÎ±ù.æ´háÂ8¦Ô©S'sê?Öß+-Z´t×aŰ2ñïiŠõèqü¯¦º*Zª ‘k”$ù‹¶ž«è¹þ)°5{Μ8ÈÕ¶]{ëÕ«—õXo½xUæjˆ/[¦€TÝ“>~ƒÿ € € € € € €|ãGòq§å¯@• ˜¹lŽZg2«ªª²/¿üÒfÏže;v´5×\3N°jÕªU¼Ž_ŠYiÅ¢2 té_Â`—«âùóçÇ®™3f¸ ײoûÛÖ®}»å;uëèî–º�óµ±D@@@@@@ °€âQuPÁ/³”ý5rä'6kÖ,ëÒemëбƒup£ úx”_ŠoÅ�.ª¾Ž€-®P´Å‹Û¼yólæÌY¦a]¶Þzk[k­µâ /^´<ÐU¸]¼‹ € € € € € €@I®P±*�4øÁûï»a [Ç1ªöíÛÇÓh)à'l�;&ž£Ë¿à^ ~Íž=Û¦N�j]»v³­¶ÚÊ–¹×–¸ù»|úXI-be@@@@@@R (Ðåò¼4®¡}ôÑGqv×:ët‹çïR<+~¿jü8ãŠ?Œ'ÞÕc¹æ¸Ù´iÓ­gÏžö­omj‹-v¥Ü3«!€ € € € € € P�nHÃV­[ÙgÿûÜjjj¬G�õ¬c‡ñh…™ñãÆFÊЊÇ1tK Q8wî\—É5Í6Ø`ëÝ»÷Š÷ÊЪ@@@@@@@ D�eË"k×®��úì3ûbò$[wÝum 7gWèRj—\*‹-²/¾øÂ¥}utsrõ�_�3¾JÜ!«#€ € € € € € P.ųTFŽüÔ�L8;ve4G—ßÁâÅ‹Ýp…Ólþü¶ûî»ÅA/¿‘_‡% € € € € € €�% ù¹†{Õ:wî´<£KÃêßüùómÒ¤I¶Ã;Äé^dr5ÖGÄ~@@@@@@ò ÔÖÖÚ›o¾¹<еté27DábûâË/­m›6Ö·ïÖn»Ètåããu@@@@@@�ÆÈd2¦ÿ}8â#ËŒ76Zâ†,\¸p¡U×ÔØ®»ìbJùÒJ@@@@@@šš€F*\ºt©eÆŒþ<ÒÜ\3gͲÚÚ…ÖoÇâa t5µ�Œö € € € € € €x�JÜ7vL´`Á›³¥ &Æ›µlßÓZuÙÌZ­½�µé¾›µê¶cšêʾÎÛ3Þ·aÓß²wg~d£f�¶ &ÇûØ }Û¼ó¦¶ýZ}m�®;Y¿.Û–}ßTˆ € €@søê«¯ì§gžiK–,‰ã°C³“N:±9mG@@2Ÿ|<"š2uª­Ù¹³m¾ù·] «|]‹G|h‹^zÑj‡¼l]ÚµµvíÛ[«6mÌZ·^Þ„Å‹mÉ¢EVëæ›Q»ÐÚíµ�µÙwk½ÕÖA+÷pÉÔÿZíø¿¸OÙZ�[[ûví­u[×¾V+Ú·d±-^¸ÈÔ.°™³[»>ýÝ¿ï[«u¾[¹F5¿1}¸=>ñïöä¤ç¬e§6ÖÞùµq~­W´o±kß"ç§9Ö–ÎYdG¯°×óÛ¥ëA-ÉNë3 "í¢R@@CओO¶yóæ¥ÞõÏÎ:ËöÜsOýùçvѯ~•l·Ãö;ØEý2y΃¯4ºÇ³Ï>kzì±$ο{ÁùØN;õóOY"€ € €MF 3⣣‰'ÚßÞº¬Ý¥,ãÕÏì›ÿðýÖkà ͔!hÜ| &ûðãx�û�–.ƒªº¦ÆÖtŠ­qüÀì5Ëò|þÈ›lÞˆ¬wï \vYÛåíRÛ µOmÓ¿Å ­ªj‚uØê[c‹óÊÒžìJn}‡];ê÷Ö³O/ÇçÚ§;)õÿ<í‹ã]j[‹Œã[hÇWÛÅ›ÿÌ.ØôŒìªyŽ € €@³¨o Kû¯ýˆ {ÕzôèaÇst¼l–l´Fù¸í·Ù'#?ɹ]9Yx@@š€@æ£?ˆ&L˜hÛl»M<|aCÛ¤L®¹wÞf½z÷vC¶rÕ-Ò$õfGk|V’VP°FÿqãçWWUYÇÓÏ,{f—2¹æ¼÷k뽑k_K×>�Ô¨Rv»Ô”°¨�q0ɽ¸t‰U�«²NÛ]UöÌ.er]ôñÕ¶áÆ}¬uK7„¢ rÕiZ�'®-�_üл/]l5cÇÛuß¹„Ì®ð3ä1 € €@³ÈtuíÚÍÚµu7…å)ƒ ´v`Hï<7 £2»&LÍXç�o-Ûœ]š“ëÌeKº·°¶qû‚ —o˜‚ra‰½Ü +/”ÙåÚ×jÊ2»mëk˜³+ôâ1 € €@³Èt]íu¶É¦›=–¹sçºá G'ë­¹fgÛhã�“çáƒQ£F¹ÑªLÛ¬ßc}ÛlóÍlíµ×¶iÓ¦Ù„š ɪÝ×ín믿~ü|úôéVS]“ó=ÿbö:ÝÖéflàF—peΜ96fô¿ª­µÖšÖg£�âa?þøÓ|Yë¯ßÃvÝu×dÿ@í3fŒkßt7 r+ëÖ­›»�q[ë¾Î:~•TˇzØžyö™dÝ�úld3f|e3gÍJ^#ЕPð@@š˜@æƒ÷ßs]â?œÚÄÁ©ú·pÞ-7Zçwß¶¶]ÖZž!•&S*{w>˜ä– gÌ´ÙÛ÷³瞟½V½žÏ}ç<ë<çk·f—•‚\>Ž”¯â8€¤7}û\°«vÖ ›Ýé@ë¸ãMù6+éõ³?ºÔþY;Ôº¬åÚ·tE�Ë7,;À•]sðŠÛÚ2c3fΰCÚíiƒû^™½6Ï@@hVõ t}øÁvåÕW'ǺÕw¶²ßüæ²ä¹Ìœ9Ó®»îz=æë€˜^oë2ÆŽ?î¸øfÀûx@/Åå ²ýèÔøñóÏ?o÷ÞwߊwÌ<àûñ�œ<׃ÿûßv÷ÿ˜¼¶ï>ûØg,f|øðávÝõ×'ïm»Í¶¶Ûn»Úm·ßnË–éÎ<‹ƒnƒßš¬£aç¶ï‚rÙE7.î¾Ûîvæ™?]>Ïoö 9žû@W‹-ìˆÃ·üàX»ð—ÅA6¿:�./Á@@šš@þôÞY§Ë¿nįVÊrökƒ¬ëÒ�¬uÇN.�ä¶\ѶR›è›gN¹Ä°ÅsçØô–}­ón—Òœ•Ö=~øOí½£¬S‡N.QlEtK�«g K;ȸ@לysl»e›Ûc;ܾÒ>y@@�æ"�èÚu—]­k×®9›¿É&'sZºPC:ñÄ:Á¡^½zÙù.›Ispin®{î¹×†¿;¼Î~*èj×®½ýШ¶ÜrKëܹs<�W÷îÝí¥—^²;î¼3iËÚ]Ö¶k¯½&qýùçvéo~½´’Fì¸û®»Ü¼_nhù �®ÁX@@M 3~üøhœ»ƒo§~ý\ìÇ�—Wz{fœ2Àz¶im¦y¾âM©š¬}*¢¤n(‘‰‹[—ûÍZ¡´§_=ÛÏ6Xǵ©uÛ$ÐUj�Ëï1vé?.Ðe‹Ú„©[û°·ýÛõZnûò¶¤{ këÚºêäò{öY].ее¯Õ”eöþ>ÿöï²D@@ Ù dº À.ßÝÅÎ;oùˆ …]š«øÜŸ=2CëÖ­í–›o¶u×]7©~þüùö‹óÏ·©n^,_*èºúª«l³Í6ó»K–W^y•}øÑ‡ÉóŸŸ{nÐó/>øàCöì?žõOíŒÓO·}÷Ý7yžö�®´R¬‡ € €�-ºÆŒã];¦¿=_ƒ§º¿›ÿªÏòàT9]®®êñã­Û?VN$_[r½>õ‰žÖ{ãÞî-7Þ ây®^5³>% t¹ªTYÕØ*[çØ‰õ©*Ùf�nenÒǵ.³|~®Ø0y»´>Ðjd5cÆÛÔCF”Vk#€ € Є*èzõÕWíÖÁƒ“£Üt“Míºë®MžûwÜq‡½ôòËþiE‡.ìÖ­›Ýéö—«üôÌ3mÊ”)É[ÊòZ·û×A9½¡á ÃrÌÑGÛqǾ”ê1�®TL¬„ € €M@ S]]gtí¸Ãö.ðSÏÈ�;]ºšÀùL@@VS�ì@—æ­Zc�5rívÛmkÇ{lü^¡Œ®'žxžøË_’:ÂL°äE÷àé§Ÿ¶Gýz„‰Jftm³Í6öëK. wŸ<>aÀ7àÅ¢äyšû¹l®Ó]VW©…@W©b¬� € €�%�qÃÆ�®ïî¼SƒæèbèB†.l¬“˜ý"€ €¬þÙ�®ë¯½Î6Ùt“¢^(Ð5tèPûýþ�Ôñ­M¿Ïy•¼°âÁ]nž«ÿóŸäåR]/¼ð‚ýñž{’í÷Ýg;ãŒ3âçǷ뮿>yoÛm¶µK.ùUò<|0pЉV[» yIówµjÙ*y®_Íø*~®ù»Töps180~\Êt•¢Åº € € Иq KC*ÐÕ�2çòK¬kÕ8kÕ±ãò9ºTY}3Äâ±Ýön¹dî\›Þ{#ëtùÕ ižÍ~m�u]ú‘µîØ)™£«>MôM‹çsst-ž;Ǧ·ìk�w{¸Aí;~øOí½£¬S‡NËçèò�+5ÉnŰ…Ú<ãæèš3oŽm·ls{l‡ÛÔ>6F@@ 1*誩©±ŸŸw^rXmÜ|Ão½Õ4| / .´_üâ|ûâË/üK‡.üΖ߱Ë/ÿM²®dgŽÕ7ÐuöÙçØ¤É“’ºo¼áë£áã+PtU•*@@@ "É];ïÔ¯A;˜ÿø£Öîé¿ZÇîë,p)@Ó�@׊€ÍÜ)S­öÈcl�ã4¬}#o¶65wXçnÝ—Ïѵly©Ô&&�®®�n¬ÙӦآ ϰ5¶øzëú4ôÆÑwÚà/´îë¸ö-]1˜·¼™é«\á·Óº¦L�bg¯{’�¿iéÕ¤ß)k"€ € PY�Jº–.]j'žt’)˜å‹æéºà‚ó­k×®6gλûî?Úßü¯;^†]¯¿þºÝ|Ë-Éû­[·¶ï¿ßÚ´m¿¦áá/¼ð—6nü¸d�úºn¾ù{ý�דzœp‚õïß?y®³fͲ &$ÃÒo¸á†¶æškÖY'Í]i”X@@š‚@ÆesEãÇ�·]wÝÅ–.YRï6-ùô›uñ¶aÏõ]ÈE€|É/ÓÖì#IZ.[f5'Ùš×Þ`­¾½eÚr®·dÚ;6ó•c­WŸõ”ê´<ص¢mi›è›gs¹Ct©WV=þ [kï'¬U·sî7í‹oÏxßú¿õ#ëÞ»‡µÌ´°hÙŠ-Õ¸´Á®A.méªpñ²e6¥j²=µÓ=֯˶i›Âz € €49�Jºt�÷Ýw¿=÷üs+o×µ»ÆÃæšÇ8 tMœ8ÑÎ9÷Ü:Û÷ݪ¯xà�Öuí.ö÷gž])PVß@×;ï¼c×ÿîwɾZ¸¿»Î;÷ç¶c¿­eË–q€ë¦›o67s²Îù.mçzŒÞA +!ä € €4q�xèÂÑ£GÛ®»|7¹ë¯¾mžwË�ÖùÝ·­m—µ–º IEò;U4iEÀfጙ6{û~ÖáÜóý» ZÎ}ç<ë<çk·f—�®¯ÛW¬™u‚\jŸ $ÕΚa³;hw¼©AíòŸýÑ¥öÏÚ¡Öe-×¾0«K+ v©M*®¡q[]6׌™3ì�v{Úà¾W.�ÿ"€ € ÐL*èRV×ÕW_c�ø(¯Ìf›mnŸ}6*y? t-s7ç :ñÄ:YaÉŠyÔ7Ð¥êî¸ã{éå—ëÔÜ®]{ëØ±ƒM›6­Îë=×ïi7Ýôq¬Î)žèJ�Ä* € € Ð$ÊèZ<âC›{Óï¬g›Öfn|û8:ã4i#IqÀÆýgÑ"›¸h±u<ïBk½ÕÖeÁZ2õ¿6ûÍslƒu\£Z»¡D”5•ŒËnfàR ôDíS6×â…6ajÆ:ï|«µZç»z·Áå�éÃíÌeKº·°¶qûV a¨š}ü§ß[ì垬hh¼pÃ*.tík5e™Ý¶õ5¶K×üÚ,@@h–• t c®›øÖ[Ûû¼_ǦC‡vÂñÇ»�&–Ù½÷Ý—¼ºôâ°aÃlð>ȸ_ÐwÝeW{íõ×’—èR[n¹åV{ã¿o$õåz ›ç®¾ú*ëÞÝ �^�B «hl‚ € €�"º>ÿüsÛc÷ÝLw36´Ô>ó7›{çmÖ«wo³V­\u.2g|ÀÆïhE€&~mÜÜŠÕUUÖñô3­ÝáGù5˲¬ýü^›óÞ¯­÷F®}-]ûr»rîHíTûäZºÄªÆUY§í®²vß:5çêõ}ñîñ�ÚE_mnÜÇZ·tC7—X²:OÜ^¿ø¡ r-^ºØjÆŽ·ë¾s‰�Ö§as›Õ÷8Ø@@�r œòÃÆsfù:wÝu¶ñ&›ø§y—}ô‘ýöʯG8غïÖv饿ιþ—_~û7þ|[g�u¬OŸ>¶ÆkØßÿþw{ø‘G’m9ø;唓“çzðÜsÏÙ³ÿø‡M�:5y}í.kÛ]»çÎ�cwÞuWòúûïo§�vZüü½wß³k®»6yoûí¶·‹/¾(yžëÁ’%‹íÏ~"Îìš={v�U”ÝuÐ�Ø‘Gé²¼:Öy¯”'šWl츱É&^p�õë×/yÎ@@@ ©d\�kù]eºÐÔüDZùßo½ÜÄÇÖÖevÅ�®¬€—_YK�ô-.²êš[cÐ)¶ÆñõFÙËü‘7Ù¼7XïÞ,ÏìRûü¿\{S»ü?—)UU5Á:lu�­±Åy¹Önðk7Œ¾Ã®õ{ëÙ§—ãSæÙr»ì—ßQàRû”ɵh¡M_moþ3»`Ó3ü*,@@@ K`±Eâ_/¼�¼ªì«ýöÛÏÚµk—¼¦×^{�½ûÞ»Ék'd‡~xò<|0}út›+"€ € €TV Ó÷ÔÇ£E³¿°wï/ Ë7}ɧŸØ¢?°¥£FÚ’ªñ¶tê”ø­–ët·V½ûXËÍ·°6[oc­¾½¥ßd•.—L{ÇMyÍ–|õž-™ñ™-]0qyûÚ÷´V]6³Vkogmºïf­ºí¸JÛåwööŒ÷mØô·ìÝ™٨٣m‚Éñ[´ïa›wÞÔ¶_«¯íÑu'ë×e[¿ K@@H!¹Ñ^|ñE{èáG¬ÖÝà–¯è†³žrJ<´a¾ux@@@`Õ dúþ¹Ñ¼¹3ìßOÞ^Ö¡ Wý¡°G@@@ ~Ó¦M³W^b5n¾àššj7ªC­uëÚÍ Q¸¡›Û··õíÛ×zôèQ¿ÊÙ @@@ b™ƒŽýy4oöWö¯¿þ¡b;¡b@@@@@@Ê-�yvø¨¨fÜ;å�½Èè*·.õ!€ € € € € €TL ó÷w>�]?:|_[ºdIÅvDÅ € € € € € €”S óÙgŸEcÆŒ±½öÜÓ¢hY9ë¦.@@@@@@*&�ùßÿþºöÜcwèŠ*¶#*F@@@@@@ œ™‘#GFÕÕÕ¶‡]ËÈè*'.u!€ € € € € €TN ºp2º*çLÍ € € € € € €eˆ]£G�vstíQ檩@@@@@@�Ê d>ù䓨ªªÊöÞkO[ÆÐ…•“¦f@@@@@@�² d¶ÝçgQíü6ü?w”µb*C@@@@@@ ’™mö>+Zè]ï½r7]•”¦n@@@@@@�² d>þøãxèÂ}öÞ‹@WYi© @@@@@@ ’™‘#GFcÇŽ5º¢(ªä¾¨@@@@@@�² dFŒUWWÇ�®eË–•­b*B@@@@@@ ’qF×èÑ£mÿýöeèÂJJS7 € € € € € €@Y2§�sE4kÆt»ú²³méÒ¥e­œÊ@@@@@@¨”@æG?»<š=sºÝwǵdtUJ™z@@@@@@Ê.�ÙäÐ+¢Ås§YÕ+ƒË^9"€ € € € € € P)�Ì&‡\ºÆ½|«µhÑ¢Rû¡^@@@@@@Ê*�ùøã�£ªª*;øàƒËZ1•!€ € € € € € PI�Ì|º?üðJ@@@@@@(«@f“ƒ.ŠÏûÊÆ½Ó2™LY+§2@@@@@@*%�Ùä{G‹æN·*]•2¦^@@@@@@� dÞÿýxèÂ#Ž8¢ÕS% € € € € € €•È|øá‡ÑرcM�.†.¬ 2µ"€ € € € € €”_ óÁDãÆ�³#�<²üµS# € € € € € €ˆ3ºÆŒcýû÷¯Ð.¨@@@@@@�ò dÞ}÷ݨººš¡ ËoK� € € € € € €ȼ÷Þ{QUUCV™ª@@@@@@Ê/º”Ñuøá‡[&“)ÿ¨@@@@@@� èª*U"€ € € € € €T^ 3|øðxŽ®þýûW~oì@@@@@@�2 dÞÿýhìØ±¦@C–I•j@@@@@@*.]¨@×ÑG]ñ�±@@@@@@Ê%@ «\’Ôƒ € € € € € °Jâ9ºÆ�gÇsÌ*Ý1;C@@@@@@ !qF—]GuTCêa[@@@@@@V©@æí·ßŽjjjt­Rvv† € € € € € ÐP�Ì»ï¾�;–¡ *Éö € € € € € €«T ó /DUUUö£ýÈ2™Ì*Ý9;C@@@@@@ ¾™çž{.š8qbèªo%l‡ € € € € € €ÀªÈ òJT]]c$£kUë³?@@@@@@�z d^~ùåhBÍtâ zW† € € € € € €¬j�å�®‰.Ð5�@תÆg € € € € € €õpC�ª«ªÈ調!["€ € € € € €4‚@楗^Š&MšÏÑÕûg— € € € € € €ÔK 3tÈ�hÜøñvÒI'Õ«6B@@@@@@ 1Ü]¯D&ÔÄ]™L¦1ÚÀ>@@@@@@(YÀÍÑ5ĺ&Ø€JÞ˜ @@@@@@h,�Ì+C^‰jªklРA�Õö‹ € € € € € €@Énè—£ššåC¶hÑ¢ä Ø@@@@@@�ÆÈ :$ª™0ÑœpBcìŸ}"€ € € € € € P/�Ì+¯¸¡ ]FCÖË��@@@@@@I 3ĺªkªmàÀA–Éd©ì@@@@@@�ÒÜЅâêêñ6`À@]¥Ù±6 € € € € € €@# ÄCN˜0Áet lÄf°k@@@@@@JÈ :$ªªª¶A.ÐÅÐ…¥á±6 € € € € € €@ã ¸¡ Wº j¼V°g@@@@@@JÈ sst�?Þ�H «D;VG@@@@@hD�ÌË/¿ù9ºº°? v� € € € € € P’@fè�¡QuM• HFWIr¬Œ € € € € € ШnŽ.誮±N02ºõ³`ç € € € € € €%d† Mœ0ÁŽ?�@W n¬Š € € € € € ÐÈ™—_y%t 8°‘›Âî@@@@@@H/�æ†.¬ª®rCdèÂôn¬‰ € € € € € ÐÈ™aÃ^�Þ{÷];çÜs¹)ì@@@@@@�ô™¡¯‹îøÃmöØã�§ßŠ5@@@@@@hd�ÌP7tá\`o½õV#7…Ý#€ € € € € € �^ óÚk¯Eýû÷·)S¦¤ßŠ5@@@@@@hd�Ì+C†DG~¸Íš5«‘›Âî@@@@@@H/�yõÕ×¢3Ïü©}øá‡é·bM@@@@@@Y ºð†n°§žzÊ2™L#7‡Ý#€ € € € € € �N 3tØÐhÈ+Cì²Ë.K·k!€ € € € € € Ð2Æ ‹ª«k섎'£« | 4@@@@@@ �@fè�¡QMÍ0ð„t[° € € € € € €M@ 3tè�h„ .£k@hM@@@@@@@ �@fØ«¯FÕUU6`�®td¬… € € € € € Ð\F×ÐhâĉvüñÇ7…öÐ@@@@@@R d^{íµhܸq6pàÀT° € € € € € €MA 3lذxŽ®ãŽ;Î2™LShm@@@@@@@ ¨@æ57GWÍ„ ¦@@@@@@@�æ"�¦@WM��À]Íå3£� € € € € € €N º°ººÚŽw�®-Z€‚ € € € € € €@³ȼñÆëQuõûÁŽm ¦‘ € € € € € €H 󪺰š¡ 9@@@@@@š™@æµW_s�®j;î¸ã,“É4³æÓ\@@@@@@�oª€ºð�¨ªªÊ ]ø]ßÔ³€ãF@@@@@š¡@æµ×ÜÐ…Õ5vüñÇ7ÃæÓd@@@@@@�oª@æu—Ñ5~ܸ8ÐÅÐ…ßÔÓ€ãF@Ò ,Y²Äî¿ÿ~{â‰'ì£�>²3fØâÅ‹ã N:é${à�ÒWÆš € € € €@⡠ǹ@× 'œÐ€jØ@¨¼À�!CâàÊÛo¿mzyÖ¬YÖ²eKëÔ©“õêÕËþßÿû¶ãŽ;Úî»ïnÛo¿}Þa™/¿ür»âŠ+êÕàÞ½{ÛøñãWÚVÁ�SN9e¥×õB‹-¬sçζæškÚZk­e[l±Eܾ�wÞÙvÙe—¼íÌYY#¿¸páB;è ƒLŸE®B +— ¯¥þç?ÿi‡zh�uöÜsϼ??{íµ— :´ÎúO?ý´qÄu^+ôä‚ .°o¼±Î*¿ùÍoLÇÓ�^ãò]³ë×ç§ö?úè£öþûïÛ¤I“¬cÇŽ¦í;ì°øš©kwšRêM™únPP¾¾eîܹ¶å–[ZuuuREGãk¯½f:?GŒaú[{òäÉ6oÞŸ�9æ;ä�CâïœU­ôÖÌ™3íž{î±ýë_öÉ'ŸØW_}gm¸á†ö½ï}Ït]×÷k9˲eËLÇñúë¯ÇË‘#GÆßëÚ·nœÐ÷zÏž=m‡v°ïÿûñ÷޾K+]Ô.9<ùä“öÖ[oÅŸÝüùómÝu×µõ×_?¾æì½÷Þ¶Ï>ûÄöÅÚóßÿþ×~øa{óÍ7ãßæÌ™cíÛ·�ëÛvÛmíÈ#�´£�>ÚÚ¶m[¬*«Ô90mÚ´ø|}ç�wLÿtîêœõå•W^1]›êST·®ûÛßâsV7ÆÈR?[UHsÅ·nݺ>UÛ{ï½ÿNøŸÿüÇ&NœŸ·úùÒÏÃ6Ûlcúœôs¦ç@ø¸_¼"÷‡‡û„‚ €4M×¹mõx§þç:QòŒë¬L]Oö>]mÎz]†S½êÜtÓM£ßýîw‘ëÍYoS{ñª«®ªsœ®Ó>:õÔS£3Ï<3þç:ôšZ“iO3pÁãÈ@êœ[úÙ+VÎ?ÿüd›îÝ»G®SµØ&Ñ¢E‹"hH¶;üðÃsn“ë:á:h#× Ÿsý\/ºúd?þZ¢Ÿ™|Eïùõüò¨£ŽÊ·úJ¯»ÀNÔ£G�•êб4´„׸|×Áp®ã9rÁ€•Úâ�KK}æª7M ·KóغÒT›w�³Î:k¥¶§qÔwOšöiwDtûí·çmƒÞp7uD®Ã>rAžTõn½õÖ‘Ë´-XgøæŸþô§ÈÝ„Q°î6mÚDW_}uä‚@ᦠzì*÷™m¸ÝvÛ•t\õiœ ÆFîf™TíúË_þRpº¹uªº6Ùd“ÈGóÖWÉsà»ßýnÑ6º@WÞ¶zãÙgŸ�ÖYg�‚õësýì³Ï U³Ò{_~ùeä‚Äëõç�~7¡ € €À7C 3ô±S¢‰£þiÇýæ‹fu7±ûÅ…‚ €ßeèÎiÝqî‹îÖ]ÞºKWwùOŸ>Ý>þøc=z´zÆãÕt'ø„ ü&u–a¦†îÐîß¿�÷ =Ñݹ²ÁÂl݉~â‰'Ö©FwóëÔ&ÝÅî‡úó+m¶ÙföÈ#�ÄÇå_kŠËÍ7ßÜ\§TÜ´|p¥ãlŠm¦MM_@Y#Ê¢È.þç9ûuÿ|Á‚qvŒ~öU”!£Ÿ£BE?¿>»IY–Ê$Ñu »„׉ð½üãqÖLøZ®ÇúywA'«­­­óv©].ÈgrtéÒ¥N=¹žÈP–ÙÅh’cÎ~/íóðW,£K™F»îºk|]öõ÷ë×/ÎâP&îË/¿\çšžæZft¹Îk_mÞ¥2ºn½õÖ¼ïzCY8»í¶›)»',i¿ó�ïÄYQÚNŸÿ·¿ýmÛ`ƒ l�5Ö0eóŒ5*ÎD ÏíË.»,ç÷ŠêP&� FèaR䯌Ü�3Å”…óùçŸ'ïë;襗^Š3œ“s<¸í¶ÛÌô’w”U´Ç{XŸ>}â¶*3-ü½ð íúë¯OÖoÈe )[EŸ•¾•5¦ïX=Ÿ2eJœ]¤L_”­sG™På.Ê–sAïäçUmÐï.g—)Iß}ú]CY¤.ÐeÊ ËUt]R¶ö|�¼í>q»u.L�:5>GÆŽ›¼¯óCǦLÓìRÉs@Ÿµ2ä •údtýûßÿޝ“>«RÇ·ï¾ûšÆŒcÆ K~_“‰²çr]‡³Û¥ Ke—)SÒ�;[mµU|î(ûNõË^�u­øÃþàWe‰ €«³À«�Ÿýé7ë~3Âz% €4+e^¸ÀJr׮뉞zê©Èu2å<×1ýñ�Œ\G]ä:Nr®£uW¾ûý.þW(»"o9Þ(%ÛÁu‚EºÓ9;ÛÁu2¼«;ÇnWéKÊ:ónºÃ?ßç°JÅΚ½€²ýyå†SOëµ4Å £¹ H²�.0ïfn(¹Hç®ßŸ®ùJx�pÃ�&Û{ì±ù6©óú]wÝ•ln_èšft…ÛËúñ;vC�åܧޥ¡¥”kÜ Aƒ’v¬½öÚ‘ ºÔÙ½°NF†>¨©³Nöÿ™¥=/²·OûÜ Ïy{eÚ¸ÀCr,iõ«_E=ôPä:äóîÒuÄGûí·_R¯²µ\GÎõ5‹ŽYß¿þõ¯ó:¹!"£nݺ%u*ëÎuôç¬S/ºá;£V­Z%ë«=Ê ‹®ñ.X¹ O²žöSŽò¿ÿý/úÅ/~¹aç"�¹Š2È´?üJöïeÍ,Ó~ÝpÈ‘V2ÙÇgœ)k(Wq¯È}#e¤å+áµC×&eBg:67dj�l:[®R©s@ûÒy↌\ð0:í´Óâß¡\�(±Ð¹ç]¹š•÷5e³¹ dR‡ pE.¸Wg}íà [š¬£ß‡Šwó@´ñÆ'Û(ÓÑÝ8”s3ý?ÿüó‘›K4çû¼ˆ €«Ÿ€ {üäè±Ë×-û/‹«G„ €«Z@¾sÓÍiQÒð6.Ã#osÃN¨B�Îy+ÈñF)�ÀáæÚNÇæ�SÃüh˜¢¦XÜ�ýI;ÝÜ-M±‰´©™ (8í;±]Mä2’sL?iËé§Ÿžl§sÓe­´©†õ ‡%Sçk¡^'~ðƒDNmR‡¸:\‹—ѯ¯Nä+¯¼2i_¡kŽÞóׂßþö·q´žkèÖbÅeJ%×—í©Í¾®4šbõ§½Æ)˜³ç²ÌrV­ Š7R;¤+Tü±hYÉⲫ7—å…ŸI9}ÛÕÞÈñ£ýÈ¿UgéæÌŠnºé¦H7H+ Ø„A©;ï¼3ï&nî¸ä8`q™‡y×Õþ½¿Ú\Êð�y+-á 7o]²µ£Ð0%T¯ªÏ!nò÷¿ÿ}©U¬´¾‚GÞËÍ;¸Òûá ѯ«e®a'+u¨ å:·Â6•èró&Ǥ`q¾¡™µo]ý¾^xá…�f¥Çúñëêú¦k:@ðöêc'G�_A Ëƒ°D@�¦#vj¸ ËËÖ°°[�˜å(i;�sí+ è©ç”SNɵZ£¿æ† J:™Ô‘GA ¡>I=êÌU‡ªïÈÔ2mQ`KYœ~[¾²‹æÂóï»a´"7lXö*už‡× uª†�ýwß}w�u³Ÿ(Ðî÷¥yzî¸ãŽäy¡kŽÞóÛiÍæŸ+¦P¹çž{’uo¾ùæF týô§?MÚ±ÿþûjr°ðǧMvÖG¸±_OËJ7,]Òñ®9€TÂϤœ�.Õ@·ß~{½ÔࢌCouØa‡å¬Ï ¡X'›ëoû[Îõü‹ l…?_…²&ý6å^*`â�«Á(ß¾[n¹%©W?« - 8ûvjé†,X¥lu=òÛüõ¯-¸~š7ÓœÅêñíѲ”@—2ñÃl®bóÁ‡¿çå›/QmÕüi¾Mùnf(vL¼� €«·€ ýÓIÑŸ\F@hjn®™¤cã—¿üeÙšv`êt.e‡ ti?á�mºÃyüøñ¥ì¾àº"IÁ4 5ìO‡âz¬@ƒî(×:ùŠï\*¶lhðKÛýð‡?ŒÜ7ñpNêøV¶››o-R¶�îŒ×��º¿XÑPOš„^C�©ÓMÃBªž<0R'i¾¡²ÂzO:é¤äüÓç[¬„瀶ÍUr­£»Ò5„•:ù6Úh£d- Ó™«è.xý<¸9�"7_]Ü1¯ÏÔÍo©ƒS�4G^êÆoŒ‡PS'¶ŒÜœU‘›S(R°¢ÐÐ\¹ÚUêkê,÷甆dS©o KÛ†õi¸0 iè‹‚Daæ¤AÅJx�P ë‹/¾H‚: •0+èÉ'Ÿ¬w K�ÞÙFùö«![µ®†£Ó°k�‘Ñ¥ëHùÓŸþ”¯¹Éë›nºirŒ÷Þ{oòzöï e%Š2Ì”9§ú5Ü¢² U*èRÆ•?.ýü–£h¨A_g¾¡ðô³á×Ñu6ÍõðÔSOM¶ÑuzUÿÙ¨Ý×\sMÙvfÕ J¥Ù©†ô¶Zºy½ŠnææM¶)ÇP{iÎ�b� �¡”@—››+97W\ÁLAµAÙy~_Ê–Íw.þä'?IÖ»îºëŠ5Ÿ÷@@à(`ƒ°Vô«ïu.عñ tá�@@  rÈ!IÇFÚyqÒb2©Ò@IDAT4;ìÀn*�.Í—â;{´TöH9Š:ø5÷FXw®ÇÊ&м1¹J®õs½Vß@—:¶ÂÌ•\u‡¯šWIu…üáváã=zDÏ=÷\®ÃM^[�.uŠ*h¶Í?Îtin[8•_7{©X¡ò‡?ü¡ÎÜ0ÙÛë¹ö£í4�ÅBûÊõž2°tW¾öó­o}+:«!�.íGY8þXT¯æÅQðÅ�ôž:ÌÓÌ/^'ä®rðÁÇõË&_F˜ö§€¥ö¥€‰üê›Ñ¥m»té×Õ§OŸ¼³�sÙ–þ¼ÐuS%ü9б4´„AÚ|?ëêÔ÷þZNš4©ènüã'Ûø,ª\…õæz¿¡¯…™= ûRÉ@×ÙgŸ�ûàwÙ åàÁƒ“:èÏUþüç?'ë»Vøí5”¦ÿ ò}þ~Ýr/•õä‡8UÒPÓ´AÁ|L Ж£(£)œï«X¶œªáPŸicÅÚ™æ(V‡wѲ”@×Å_œ˜¦9§åf´i¸Ð좛A:wîœÔ[l>¿ìíyŽ €ß »ù˜µ¢‹ìüÍ8ZŽ@š•@Ø ¨l mVŽv`7•@—Ž+œd½ÿþ >Ô‘#GFšó+ì°Òþƒ ŠN<ñÄH�Ã÷Ôᙫ“M™Qú§müúºSÛ¿î—Êb©O9òÈ#“zU¿2<¾ÿýïGºƒ[� ¿¥N~¿ï|�.Í¢,'¿ž–믿~Üá¯l}Öáü5Ê|Q6[¾Ré@—2ì`T;Õc4l¥²û”eºÛl³Íê›2ÕÔÐÐOjëÞ{ï�t*3+_Qf\hÔ­[·ØX�ʨ ß?è ƒR†òí/×ë:gü>þóŸÿ$«44Ð¥,µðœ?ÿüó#õü¾4D¢~.Ò”ð:á]�?þxR×å—_ž³šp>¡3Î8#^§¾�.mÎ?f©…;¿âŠ+’v)ˆ¡Ò�®§Ÿ~:i‡²TÒ”Ðf»í¶Ë»‰ÿ µ”ñ 7ÜéóUv£+“$_6HÞJW¼¡ ZeEªný†®• ti˜D¿Oí·Øp˜ÅŽÁ¿•Áš«„çq}] ªjøÃUUŸE™}õÕWeÙuÜôÃæé¢Œ1�‹ºÆ*£Àµ®ËÏ<óLªýêûÛŸ¯ª'ßUªL×|¿n±ySíÜ­”æ(V—o“–¥ºÂïó‹.º¨Ønâ÷wÚi§Ä@AºìòÁ$ïë»M?Ÿ ~Þwß}Ñ>ûìg6ëÚ®ï{}_Ý~ûíE3ɲ÷Ás@hþöÆoDÅÆMnþ‡É € €@sxùå—“Î u¶èŽnͳ3a„NØiÖ”]~¾"«2ŽR” ²õÖ['~Ý»w�rÝ)­Éßèð�Zê”ÓֹвFüz庣?ìÀêØ±cÁ,+eœ]uÕUy;TðíS@K�˜Ù™;ÊpóÁ%­«»Äu\¹J¥] n© :sµ¡¶¶6n–:ôvÝu×äØôUð&×ç¤Ï]�±êlÌU44œ7Ò±+h˜«ýìi¨G¿îõ×_Ÿ«ºz½öúë¯' ¬…¥¡�.Õvâë<ƒ š)m ¯>е`Á‚$Nså*áoBS% æèóÎWôž7×6*ú{Í¿–oÈ8?üŸ:æÕF•Æté<ñmUçuš9© B¾âë-´Ôög�uV[±\û ‡4Uv¬NÉF7(°¬L®ìc×Ïc±y5—bövÙǤç:®Ÿýìg‘®Ïå(iÏ�bû ÛZJ K7Õøm‹ ÛèÛ ã÷Û(Ó9»„s*еå–[&ë+ûY¿ êçH7êøz´Tà{øðáÙÕñ@VS�8£«\c\¯¦F €4¢€îN‡ ;1ÂÇÊÚPÇ®2QŠ•°;¬#Íc´r•rºn¾ùæ:�4³fÍʵ«T¯…CiÈb%̆ÒF¹J%]W_}urÌÊÀªoÑðeþóÛf›mê =–«ÎpŽš¶mÛæì´\�®bó„©íêÈóǦã¬o ‡é:÷ÜsSU£á#ý¾Ÿ|òÉTÛZéÒK/MêS06»”+Ð¥¡èDðmWfW©žáu" t½úê«I½a`IÇòØc�%ï)ûЗ†º”‰æ�%ûo·ð3 o�èR6†oghær-PõÛh©¡ãrýœj®FeÆhØ?¸üâ‹/âì˜cŽ9¦Îg®ùÑr ÅÖ­@�ŸûIÁ‹\A¶Jº4G]8lgØ®ú}û´,%Ð¥à’ßöùçŸ/´‹ä½0@~衇&¯ûá0Ö¾níç‰'žð«$Kýf©+›N7XP@@`õ0ݪ?È( € €@SÐðVûï¿�Ž&ßᑽT&A¡9<Âììm‹=¯d +ÌÜQ;ê;D£:€ÃÏìN»\Ÿs˜U¡msÍuS‰@W˜MQl.“\íö¯í¸ãŽIçZš€™:uÕî?ï\r•tiˆ1eJ* Øø6jYSSShõ‚ïpÀI]i‡t ‚?ÿùÏ Ö_ìÍ#FDÊHÓqìµ×^9W/W ë·¿ýmr¬ÚŸ2 e5æjLx�ÈÚøùô”�G4?Œö§ [UUURmC]aàNûðEûöYzÙC)6F K0:~ýKÐqhHR¿�–ùÎñ|0o¡å³Ï>›d!ª®bs…ÃÅæ»I" éœ(¥èçÌg ëfe)ZuÔQÑäÉ“K©v¥uu~„�û»í¶[Ñk‹æ4 Ý¿÷½ï­ÔxtîúŸÛp}e«•³(»×[)kRßãá0‚:Ïo¼ñÆ¢71”Ò&ý̄Ǥá$e™¯„Cs*襡óe«*[ØÛiÎ:}Ö Ž+`«¬èpßz½Ø÷A¾}éõúœ…ê ÛVJ + jˆÌ4%¼"×Ïl8¬oW¡l1Ãv亩"M»X@š—st5¯Ï‹Ö6s�5¯?Àõ˼:)ü¤ú…]�i«KѸéºËSw�ï½÷Þñ0;þ�’´÷_̪“FÃ:é�C ³¤!EtÇí‰'ž˜*kcu1å8@àkÝ�¯»x•‘²ûî»'C ùëŒ_jh›|C…ØêÄ,G)GF×M7ÝT§ã+_û‹µWYÞA×MMÜ^¬¨C3¼ë\áe—JºÔyîWYÂQßi;ýt|¾3QÇ�6ˆãƒÚ&WöC¥]úŽ,VÂù¦”iÐ�Î ¤ùv|§r¡¥2)ü¹¤Œ™ú�_>ËP™9£F�ÊY•:Týþ´¬Oùä“OâßÂzôXY+iÏ)í7¼NdºÂ÷|V�‚>ÀœÈkh KíñíÃF´oœú¹ Kcº*™Ñ[¡Çwß}wb"›|™|š#ÉÛú=Ü»k]}îå(š+ðàƒNö¯ G¾_±ýéê‡U7Ø`ƒÔu…ÃÜi[ UªùÊhR0zOAï¥åÓO?]¬i ~_× e’jˆa¿o=ÊUÂ!ðTÿÅ_\°jͣ߮½öÚœëëóÕç :u½SVWölúÞRv¦†#õǦ`h}JCÎ�|ûómÒR×å´¥]úŽ ÛóÝï~·hsô}å·Ñ9MA@�Õ_ t¥éYý98B*+àÙε,ôve[UÞÚu7a®ãó¯¥í иø~›BKM^ì']/ï‘P4ui(1e„óLéÚ¡yr]‹üµ¥)ºÂv)pSßòÔSO%ǧд%"/ל-•t©m] TùÏFA:ÝÝ­ìœ÷ß?ïa̘1#9^m«KÒ”ÓO?=Ù.W¶R¥]º«¿XÑpYÞ£!�uÔ×Sße®;틵߿Ë™�ñëh©Õ°}á{i«c\Coú:Ô!Ú¾}ûä¹22Ò–ðç1;Ðf!ù¡¶tƒŽßovA9]÷Þ{oR¿ö¥¢}kŸÊ R›ÂÒ�®p²rÏÑ[¡Ç:Â�†}Ì.º‰@AuÙ)*{®¸pýJºT¿Úyä‘G&Ÿ©2.K-ú¹îׯ_R‡n¢S ·”¢!6s]ý¹¬å€¢‰'&ûÑkC† )e7 ZWç¶Ï\Ô¾³‡ïTåÊ0+´×{Ó§O¯Ó|÷Çšæ&‰pŽ>Í!š]ô;‰æ‘òuæË÷ÛegÖiÎÑRJ9Î�\ûóí×ò•]•˜£+šXíùÝï~—«Éu^{ôÑG“Ï@7yP@@`õ0u åúEqõ?tŽ�U/þÁ ?ÀÃ!„V—@WØ ªN—M7Ý4 'zV§Qš²Ï>ûDêXÐ�•ÖêÅ_Œ4¬Ö¿þõ¯H�Tm´QòÇKvçSšúYVOe!ùÉäuÍÕÝéóçÏ_é`Ãì¦è ;¦u7x}‹:üüwÎ;ì�ºší·ß>Ùî‘GYi»ð¯ „r²4[¡WµOÃngeBøãÕ2×°‹ÙÛèy˜Í  §ìRé@Wšï~uBûc;ú裳›˜ú¹†ÁôõÔwYߟíÛgím¶ÙfçKQ‡jؾÔ¸bÅ0+R× xà 7$u*è5zôèTՆ׉\¿khx8µUvešúù~”Ñ���YŽ@—êôÙÚ—º>¸¯ìÖì^OÒþþ•]Gø ;�¦„6¹iêÈ^G7JùväÊ”òÁ+™Âs,×ãpÈÏž={ÖY?{¿õyfÒÞyç�©ªÐƒa�FÜJgXiN$oªÌ±U]Þ|óÍdÿš)û&]O}ûò-³]ç�w^²�Î…4%œK3×p²áÏeÚ Uø{KÚ›S*}„†¥ºÂ,Å‹.º( iü3å÷ç¯Ûá†Ï<óLò9i½4çºæOóuj©ŒD  €¬ÞvÅíG�<òèê}”MT`u tå¢;¸ÒºrÕ“ýš‚ôþ�}OA$�}¯î®Î.avS tiN*MÓ2WgOöqä{ÎÑ¥NÚ474i-Ÿu£ý¯ª9ºòƒ}Ö¬Y‘‚CáPdj,ìäÔñ…1Y¦)ÅæèR–—ÿLr²÷ÞéŸ/ˆUj +ÌЕ )š+ÆÏÈ‘#RUIÛ†¿øý×gYìw°|½»ì²K<4œo¨2}ö“Ö¹çž{ü[y—áu"W kæÌ™q֨ߧ_ú ˜°â0˜Sèšã0ª+W6„2Ûý~üR™«jKviŒ@WvÖ�ŸK,»máóp(¸\AÂpÝ´�Ï>ûìÄI™¢Ù%töŽõYf×[Ÿç èû}çš+0»NnÃù‡tíSV\¥Ëù矟´Ó×Yé}†õgŸ[å\hˆQo¯e©]¹‚Rûï¿Rç%—\BÞÇaÐR§Îºë®wð­³Î:ñ\&ê¼)–µ* îb�T¥´+œDÜÏUQÊö¬‹«§€:ðÃe7e—°»P§söv…ž‡Œú ëwüñÇ'íÖ°Qî­¾ECô(óÉ;¤Éz „Ú6W§Pø½UŸc¬ïñh; 7j^zé¥:Õí¸ãŽÉñ* ªXÑ÷¤²¼ÑóÏ?¿Ò&áÝþ×]wÝJïg¿pÊ)§$õ•+Е=÷¥†i¬oÑðvþxÓî껟ìíÂßüþë³,ô;DØQ¬óäÓO?ÍnF<²ßo—.]¢bA˜ð:‘+Ð¥hž5_§–믿~�›oD¹]êàîÑ£G�}æk[cºtVÖž7ÑMIÅŠ¸~}eE–£„çºæfÊ.M)Ðfòæ n†m× L¼t­þË_þ®R‘ÇÚ¯®ùþsúóŸÿ\‘ýªTY<~ÿZ–cŽÞìëkš¡ÃÀl® ªæ¦óí<ãŒ3 RòÞµ×^›l£ï²BeU�þ´Ô5ø Î›á"þ±þHòC$æªcU¾¦?Ž|» uR•Ú¦ðý4wö•Z?ë#€@ó³=uíÑü~Ù%ìÀn �. Å篓ZžvÚiÙM.ù¹†àòuþüç?/º½:ƒýúÊ0ÈUÂï­UèR{4¬™ocö³ádõZ¯X›:‡}]ù2b”Uç×9î¸ãr‘$¯©ÓU™f~ý|ßëa@4ß:I¥+„Ãù¥ *»=çOJc”«ŽJ¿þÎ Ë4E™k®¹fb¯!”s}FaP¥Øœgáu"_0)¼éFíÕ�›¹J¹]ª;̬Ñ>óeó4F KíÓ;þç XFGØÉ­ �æ:khQ�3 ô74ÅÊù{¬Žóã�?N¬dVlH¶0È¢¡ö|ðÁ†r¥Ú> $kHÊ… ¦Ú®œ+…罂ƒå*á°¦¿úÕ¯ V«$Ìöç÷-·Ü²Òúg�uVò¾†¥LSÂ,0ÝôR¨¬ªsÀ£–¥º4¤bx=.ìÖï;~_‡vXÞCçÔTÆn±Îû¥á) € °ú زo´ßß[ý�”#D  „†i;»4Þ¸ÿãAwÉixe+ ><ž,Z•~hurê��Æ.a§UC:t£‚wº‹?ÿ]D6¥ ¶Æöfÿ¬Nÿ÷ÿåÆ&ß1Λ7/Új«­’Ne¼êÚ‘]ÂìÆt=ðÀ‘æWñ=êDlH6—?ÖpH&eˆÊêÒwˆÿîP;òuž†ß[å tM�:Õ7¹à2;“å?ÿùO�õ•ñ¥y[¼c¡¹n4_Uxw¸2±r•·Þz+©¯cÇŽQ¡¶*Àá÷­e¾ïõúºÂ9a4LÙ°aÃr5·èkÞn­µÖJÚYÊw²Ž]ŸA¥Kø;ƒÓuŽzû­·Þºàï $(@à×לRùJx�Èè’‰†Êôÿtnå*å ti~Zæû\+ÐõÑGÕùYT†G®¢kón»í–|…‚ÉsæÌÉUÅJ¯é; ò+øœvÛ•*[ñB)�.ÍU›¶(ðºÇ{$Çß½{÷¼Ÿ¥êÔ þ¼ÕòöÛoO»«­§a?ÃëFöMõ­¼+ݰ¢üñ+èQ®òÐC%õêo«êêê¼Uk ßµ'WVh8O�ÖUý…Šþ®ñuj©ß ò•Uy„mÒu¹”%5c8ÔpXψ#"ý~â÷¥¡Yó}LJCk.Ï|EßÝa°»Ðu>_¼Ž €ÍOÀ Ø;:ò¨�š_Ëi1«�@Øa˜¯C,û0u›þØvÛmóv¸iø%ßÙ§;0»„�V¥tªùv‡C¥ø?„ürã�7ŽVå<#¾M,@`ÕøŽZ̓qÛm·ÌTÕDõZÏ_´ÔœI¹JØ�Ý�.up*d¿ýö«Ó^¼ÔASŽ¢;îÕéï=@{ùå—WªZ�D }ë×S¦O¾›$Âï­rºN>ùäHÃŒ)¸–/H ÑpX@uFæê8Ó0Qþ8¸Óü�Ù�NÝ0s¨ºt\¹Š²Â6Ùd“¤N}^_}õU�UÕ±î;õ¡ó}¯×'Ð¥›9ü÷¿ŽOó™èç!×ç¤Ïý™gž‰o©ÓÐOÂý«®O<1ªªªÊµjœ§ùÞäªs³¡ƒœ;Éz1ü�Aí+VÔéî?sul*h[¬üä'?I¶QvF®ù­TGx�Èè*¶/ÿ~9]¾ÎbKý”�Ž¥¡%¿~¡óD?{òÊ•uí÷¡ë«®uþ&?Õ«ö”#óÏïCßú»Ê·YYŸ Ö†EßjG¿·\¦éyC‹ t™ rÅÕ¸NDsYºæ†ê3×™i. hnXºø{Ìuº&»r7q˜¾)yîÈx¯½ö2—åâ_27_�¹¬sY6fÌsÙPæ:6ã÷un¸a•ÌuÞ&ëg?pÞ™›‡)yÙuJÚ¾ûîŸ.Ë8®OŸ«Î#×il—\rI¼n¾ïõð<É·N²³à�Î7/§¹`@òªëH´]wÝÕÜœMæ:QãïJ×ilnŽ6S;Õ®\Åu˜Ú•W^™¼%w�w²—“ B$çé¬Y³’õ\ +~?y¡ÂßT½û +ï^\Ç©m±ÅÉùí²êÌò®ïßÐ1i»I“&Å/¹¡³ì®»îòo'Ëð:¡ß«üñä½R¸ CsÃx3ýLê8s�¿C‡�ßr�ãvúé§çZ-Õkáõ³>¿eï$OÂϤ˜£ ܘ›#0Þ� |ÇßU›nº©égU×}_¹ù㟯°-®ßÜ0xáKÉãçž{Î9ä�乎»Ð5+YqŃßþö·ææ(Ê~9~®ŸùÏ>û,þ¹vCøÅ—躨k› ÆÕ¹†|ï{ß37Š„é¸ •ðš^è<‘‰¿¾èû\ßMº–é¤k¹¾_ô¹º`W²;½'wsDòZ9è÷7d¯}ùå—quî†ÁøüÝl³ÍÌžb‹ðo�î&‘øw�\ûw7¬Ä×k‡/:6ýLèXuÜîæœøýûru™Êñ÷•Í/+y¸#Lß Ù%üÝ@¿wÉ>,n.2Ó¹•¯¼ð v衇ÆßMZÇÝ aîfsA¨ø»X×9}×ïSn~´ø{4_}zÝdÍÍâßSüzú}ÁݼbúÓßÇ:g|‘¹> @ô/±D@�ÕY`� ïŒv8ù7Í2JG£hîî�ªä®4÷Ç}ÑÃñwŒ»?ºŠ®«»ØÝµ+⡱‡õÓ]€j‹þ¹‚¢mÏ^Áýih Ýù§l×9��¯»u7ðª¸Ã<»M“°=¹»bT,SYß .0Uôóu`‘ë=rAÙ‚mñn®ã0_5ñëÊ$PF…_¿ØRÙ'ù2 î¨Ä7ÃßÔ¦BEsÙøv+WáðbÊÐuº®´Zx� £+ŠÂáP•Q_¬hî4œM>#ÿY…K×y×[¬®p›b�•ñ£L¤r•R2º.¼ð‚ǛÝv W˜o¨Xßþ𚑽}šçºnç+ºv«C™ª.è›3ë+W½ºöù: }OèØýzi–.¸T0£/W[JyMs»…óuåk“ 䥺*;;ÌìÊWŸ^×ï9ÊòËW*yÔ·î|ßqá1(»XÇ:vý~2jÔ¨p³‚�•�^ûóÕ­!L CYp'¼‰ €ÍRÀöø¥ t�tY³l<�F ¹ „†iþXÐxù~™/ôº»;±U}ÿ ÉÞG�J < ;­êèÊUµ†ŽòCOi˜‚]¹”x �ÕG@ÁnðO¨aiìÖ| îNõÈegDšßÅee¬4´\.…°;ûÚ–æy©�. '«á‰4,‘®Yj«æúxã�7r5¯ì¯ih&6ÒPAúNÿôXø.k)ÕÐ>á÷V¡ÌR@CÐ<8:á„âáÕQí² â9Y°9à€b¯ìï³Bû‘­†Üsw{Çö:_ØQ]Ú—†N+¥¨>u®¹ ±øÜSç�†DrYÉwPøýšï{=Í:ÅÚåî|�‡ürYXq'¢†ÓRÀ@sVêÜrÙ1©ŽO�+­«ãrY'±“êÒpŽr;ꨣ¢›o¾9R°tU•ðwý,æ+Ï>ûlò;‘U.C*ߪy_ÿþ÷¿ŸÔ¡éì`sx� ÐÅsBù룮ciІgÓðb:—t½QÐDês[C±å63»îÿýïq@Èe¸E.ó&>_54š®ZêóÓy|ï½÷F¥”@—öë2eãasõ³¨ácõ¥ï*»¾»tSÁ©§ž_wÓ�Ãk†÷/eY(Ð¥ïVÝhá2o"½tíÕµR×9 ){ýõ×§þŒ¼yÚ@—ËvŠo6Ð|ú.+xªë˜¾/µT4\¬ÞÏõ�ë÷WÎ¥nÔp¨.[)>_5ì ¿þô§?M54jØÕ§ó_7æùï"�Up^çˆö—kÚ°žJžõ­;ßw\Øn=Ö0“:�ô}©à¦Î/ý.tÐAÅ?ÓÅŽ=»>ÿ\7'èçHç­ÎÝä¤kŒLÿö·¿¥ú�Æ×Å@V�ÌîÜÍûb‚½óÀoM)úXu’£”¡ 5¬•ë ,¹�î\s¿ø'Û…CÏ$/Öã�» ¦Ú*†Èu™†*GÑ�\zHEÈ]sÍ5娖:@@²®ºê*sódů~1k3ž"€ € €ÈìqÁ�Ñü/'Ù;^Qñ�±¨+Pj Ë�£¯1ì5�KÚâît3w'i²ºÆ…Ÿû<1;sï=÷œÏüâñ9_Ï�9áU¯zUÅî­_¿>|ðÁáÇ?þq~ξð…ðö·¿½âù @€LM`Ù²eáøã�ßääO<1ÿn®¶¶¶MŽyƒ @€³%�ìÀGÓï~÷‡á©'¯´£k¶>÷�F ü¨Ðqß­µaưxñâ|üÙwM�p ã,Ž;î¸q¯³kÖ¬Éw1eÿÛì' ±:::‹_üâ<üzà�Â~ðƒpíµ×†;î¸#œuÖYáŸøD~n½þ㦛nÊi3r¿Ÿüä'á£ýhþò-oyK8âˆ#F…í¶Û.yä‘£¯³_FWþäOþ$ß^{ívÜqÇüœ,àºí¶ÛòÇç<üðÃù{¯ýëÃÍ7ß,ºäþƒ 0#�‘ÿ-¶í¶Û†yóæ…ì§¾ãïÙz? @€h4�ä’K®Ißuò7Ê;º®l´¾é�–È‚«ìË»§ú“¦å —üüô§? o{ÛÛÂ=÷Ü3ÁÑño�þùá¼óÎÿf�_pÀùcn¦r›¼àù®³±çŽ,®Œ}¯Òï™iö½eÛl³M¥S¼O€ @€ @€-*�,Zô‘ôö;îtµèlX�%PTЕ�êÉ'Ÿ _ûÚ×Â7¿ùÍ�}WÕ¯~õ«ü½g?ûÙa÷Ýw¯}íkÃ[ßúÖIÿW+�™]�>úhȾ�lùòåá®»î ¿øÅ/Âý÷ßžxâ‰ðŒg<#ì¶Ûnùÿ³øè£�üÇ\«ah— @€ @€\ ü]ï*oy¸üèÂ+<º°Á?,Ý#@€ @€ @€ø?�rÐuJúÚ×nzW\ðïú� @€ @€ @€@ƒ $mm§¤—^úšpÌ1Ývt5ø‡Õ*Ý{à�ÂÊ•+ó?Ù#÷²?>ø`>¼c�=6dßÏTôOö]WW_}uøÊW¾î¼óÎðË_þ2<ýéOÏ¿\{áÂ…á ƒ*ÿ8&l±ÅEßZ{ @€ @€ @€@�’¾¾¾ôç?ÿyhootÕY³ã’$ÿƘWµº†††BOOO(×ú˜;múëý×…¹sçnzÀ; @€ @€ @€@C $½½½éððpèêêjÈêTë Œ ºvÙe—°Ç{„[n¹%hÑAWVÛûï¿ÈwkuÔQá°Ã /xÁ ÂSO=•¿ë­·†k®¹&¬^½ZÐÕzåfD @€ @€ ÐÂÉ–[�ž.ûâ>yÐ56€há1Ú, ,Y²$ì³Ï>ùŸyóæ…uëÖ… ä½*2èÊWxÀ„+V„g>ó™á†n¯yÍk&ýþð‡<óo`Bo @€ @€ @€�†(]§•ƒ®}CwwwCvP§Z_ VAוW^Ž>úèðë_ÿz8òÈ#ëŠùØc�…»ï¾;¿çŽ;îæÌ™S×û» @€ @€¦#�m øÕ¯~•_úGôGaë­·žN3®!P�¤T*¥ÙcÝ]uñv“ jte»·¾÷½ï…Ýwß=üä'?™àε}kÕªUaß}÷­íM´N€ @€ @€� ¬\¹2:W o¡i3HúúúÒ,hèéé™QC.&0]�Z]CCCù÷pe}zÏ{Þ>þñ�çÝ{â‰'ÂúõëóÇ>ç9Ï [n¹åt»½Ùë]›%r @€ @€ . èjðH÷B¾£+ ºººp˜�Z]Ù£ ÛÛÛóñ\vÙeá oxC8ûì³Ã×¾öµðÈ#�äïo³Í6ùûÙw†íµ×^…�}츲Éà¹Ï}ná÷Ð  @€ @€Š¸ï¾ûFŸV•=î…/|aÑ·Ð�Â’+V¤Ù—ÎÎÎÂÕ�jÆBÇ{lX¶lY5—Oxîù矖.]šûÔ§>>üá�>Svã ²]]—^zi8ꨣ6>4éëŸÿüç“; ‡ùóçOz¾ƒ @€ @€h�lísç�wλbm³>}˜LÀwtM¦ãX]jt�vÚiᢋ.ÊûŸ}Qâc�=–Yï}ï{ÃK^ò’<ôºâŠ+B¶›ëñÇÏaxûí·‡… NyÌI’Lù\“Á”©œH€ @€ @€À, ºfùpûªFƒ®ìÑ…Õ,ÜWu'˜D A× 'œ¾ð…/ŒÞõíoû¸×#¾üå/‡îîîüå!‡n¼ñÆ‘C›ý»š/‚®Ír:� @€ @€�t5È¡SHz{{ÓlÞwtMÉËI5¨EÐuÊ)§„¿ÿû¿Ï{;gΜ�ýó¼yó&ìý>ûìî¼óÎÐÖÖ|ðÁ0wîÜ ÏÛøÍ¬ÍÉ~<ºp2Ç @€ @€hTAW£~2ú5‘@Òßߟ …ŽŽ;º&ò^Íjt�}öÙá‚ .Èû¾÷Þ{‡U«VUÇ>ð�ð¡}(?~ë­·†ƒ:¨â¹Õ0T£å\ @€ @€EÀÚf£|ú1�|GWt�<¾m*9‡@‘µº.¹ä’pòÉ'çÝ|ë[ß®¾úêŠ]þüç?þú¯ÿ:?ž=ʰ³³³â¹Õ0T£å\ @€ @€EÀÚf£|ú1�.œŠ’sj*P‹ ë»ßýn8à€ò~~øáá[ßúVÅ1Œ žþõ¯‡#�<²â¹Õ0T£å\ @€ @€EÀÚf£|ú1�üÑ…ƒƒƒ¾£k*ZΩ‰@-‚®ÿþïÿ;î¸cxôÑGÃË_þòp÷ÝwWìûYg�.¼ðÂüx©T ‹-ªxn5LÕh9— @€ @€�F°¶Ù(Ÿ„~LE ßÑ•mQ�k›ÊM�C`¬@-‚®¬ý¿ø‹¿×\sMþÝsÿùŸÿ^üâ�½mþûSO=^ò’—„5kÖ„m¶Ù&üú׿O{ÚÓ69o:o˜ ¦£æ @€ @€f[ÀÚælî_�@RÞÁ’®]»6ôôôTs�s &0� kÙ²eáøã�Ïû°dÉ’°téÒMú³råÊðêW¿:ÿàƒ×_}ØrË-Ç�÷w÷wáÜsÏÍß˾Óëâ‹/w|&/L3Ñs- @€ @€³%`ms¶äÝw:£;º:::ò�/ÓiÄ5ªèëë «W¯½dÆ añâÅùëýöÛ/œp £Ç²_Ž;î¸q¯³S º²ó²ð*û®ìgß}÷ gœqF¾ƒëW¿úU¸òÊ+ó?Ù±�wÞ9Üu×]a‡vÈ^òc2(„Q# @€ @€ÔYÀÚf�ÁÝnFI9tH³¢Í‚.?ê!�W—]vÙ”o•¦é&çN5èzòÉ'ÃÛßþöpùå—oÒÆÈ»í¶[¸îºëÂî»ï>òV!› aÔ @€ @€u°¶Ygp·›‘@¾£kxx8tuuͨ!˜ª@=ƒ®‘>ÝtÓMáŸÿùŸÃwܲÝ\Ûm·]xÙË^Þö¶·…“N:)l½õÖ#§ö·É 0J  @€ @€ PGk›uÄv« $»ì²Kú§ú§ù›¶¶¶7¨þGÀd  @€ @€hFk›Íø©ÅÛç¤<ôü¹p=.^#'0s“ÁÌ µ@€ @€ @€@ý¬mÖßܧ/�üÉ¢EiéöÛƒ kúˆ®$0‘€É`"ï @€ @€ ÐèÖ6ýÒ¿±É�7Ý”~Øaá÷¿ÿ}H’lƒ—Š0¡¨  @€ @€ê-`m³Þâî7�¤¿¿?=òÈ#Ãúõë]3‘t-��L�xI€ @€ @€@SXÛlŠ�I'ÿW éííM�;zõj((`2(SS @€ @€ÔMÀÚfݨݨ�|G×ÑÇVÿlµ]€j‚Àˆ€É`DÂß @€ @€4“€µÍfú´ôõ‚®£�kÖ¬¡A€@�&ƒ15E€ @€ @€@ݬmÖ�Ú� HJ¥RzôQå]k<º°OM0ŒRø… @€ @€�&°¶ÙD–®†dÅŠéqÇ—¿£Ë£ •�BL…rjŒ @€ @€�: XÛ¬´Û"�ôõõ¥Ç{lX½ÚŽ®BD5BàLJ� @€ @€�f°¶ÙŒŸZ¼}΃®ãŽ;.üô§? I’Ä+aä 0 ª9 @€ @€ê"`m³.ÌnR�@teEÛÞÞ.è*U32“�: @€ @€ @ ¬m6ã§oŸ“ÞÞÞtxx8tuuÅ«`äj `2¨ª&  @€ @€¨¹€µÍš»A�I©TJò Ë£ ”ÕTô&ƒèK @€ @€�¦°¶Ù”[´�NúûûÓuëÖ…îîîh œ@-LµPÕ& @€ @€µ°¶Ykaí)0º£KÐU$«¶øŽ.5@€ @€ @€@s ºšós‹µ×I___¾£«§§'Vã&P“AMX5J€ @€ @€@�¬mÖXó… ä;º²GvuuÚ°ÆÄ.`2ˆ½ŒŸ @€ @€@s XÛlÎÏ-Ö^'+V¬Hׯ_:;;c50n50Ô„U£ @€ @€ê&ðàï~þÝ­ãî÷ý¼><{»§�{¯Õ^XÛlµO´µÇã;ºZûó5ºY0Ì"¾[ @€ @€(@@ÐÂððp˜?~šš P�Ñ +{ta’$µ¹‹V D( èŠðC7d @€ @€�–t ºZª [t0Ioooš%²¾£«E?aÚ5A׬ѻ1 @€ @€�B]‚®B I#5HúûûÓ¡¡¡ÐÑÑaGWM©5›€ +¶OÜx  @€ @€ZM@Ð%èjµšnÅñä;º² «»»»ÇgLfM@Ð5kônL€ @€ @ A— «�BÒHM<º°¦¼�Y@Ðó§oì @€ @€­ ètµB·úòGúŽ®Vÿ¤�¯î‚®º“»! @€ @€�B]‚®B Jc5Èwte ò���5¹�F Ä* èŠõ“7n @€ @€�Vt ºZ¥–[yI©TJ×®]zzzZyœÆF î‚®º“»! @€ @€�B]‚®B Jc5ÝÑÕÑÑ’$©ÉM4J FAWŒŸº1 @€ @€´’€ KÐÕJõܪcIúúúÒlA> ºü Pœ€ «8K- @€ @€˜ A— k6êÎ=«Èwt ‡®®®ê®t6“ º&åq� @€ @€@à º] _¤:ò kpp0ºÚÚÚ� P�€ « HÍ @€ @€˜%A— k–JÏm«HJ¥Ršíèjoo¯â2§ °9A׿„'@€ @€ ÐØ‚.AWcW¨Þe]¨ÔH@ÐU#XÍ @€ @€¨“€ KÐU§Rs›$}}}éÈ£ “$™AS.%@`¬€ k¬†ß  @€ @€4Ÿ€ KÐÕ|U_�“þþþô®»¾N>ù” 芯Œ¸v‚®ÚÙj™ @€ @€@=]‚®zÔ™{ÌL tá%—\®ºêª™µäjÆ ºÆqxA€ @€ @ é]‚®¦+Ú;œïè:óÌ3Âí·ßaGW„`ȵtÕÎVË @€ @€ê! ètÕ£ÎÜcfyÐuÄG„x`f-¹š�q‚®q^ @€ @€h:A— «éŠ6Â'¥R)ýóCþ<<ôðCß� ÔN@ÐU;[- @€ @€¨‡€ KÐU�:s�™ $+V¬HßýîSÂ~ðï]83KW' èÇá @€ @€�¦t ºš®h#ìpÒ××—~ò“Ÿ W_}u„Ã7dµtÕÎVË @€ @€ê! ètÕ£ÎÜcfyÐuÛm·…sÎ9ÇŽ®™YºšÀ8A×8/ @€ @€4�€ KÐÕtEa‡ó +[�oootEX†\;AWílµL€ @€ @ ‚.AW=êÌ=f&�ôöö¦ÃÃá««kf-¹š�q‚®q^ @€ @€h:A— «éŠ6Â'¥R)ȃ®$I"$0dµtÕÆU« @€ @€ê% ètÕ«ÖÜgúIºnݺÐÝÝ=ýV\I€À&‚®MH¼A€ @€ @ ©]‚®¦*ØH;;º£KÐivÍ]5£Õ0 @€ @€�ºº]u)47™‘@Ò××—ïèêéé™QC.&@`¼€ k¼‡W @€ @€šM@Ð%èj¶š�±¿ùŽ®ìÑ…]]]1Žß˜ ÔL@ÐU3Z  @€ @€¨‹€ KÐU—Bs“ $+V¬Hׯ_:;;gÔ�‹ / èïá @€ @€�ft ºš­fcì¯ïèŠñS7溺êÂì& @€ @€j& ètÕ¬¸4\˜ÀhЕ=º0I’ÂÖ�Ø]±W€ñ @€ @€4»€ KÐÕì5Cÿ“ÞÞÞtxxØwtÅðic]]uåv3 @€ @€… º]…• HúûûÓ¡¡¡ÐÑÑaGWἌY@Ðó§oì @€ @€­ ètµB·úò]YÐÕÝt f6@IDATÝÝêc5>utÕ•ÛÍ @€ @€. èt^T,\À£ 'Õ �ÿt© @€ @€Í- èt5wÇÑûüÑ…ƒƒƒ¾£+ŽÏÛ(ë( èª#¶[ @€ @€¨�€ KÐUƒ²ÒdÁùŽ®lA¾³³³à¦5G nAWÜŸ¿Ñ @€ @€4¿€ KÐÕüUÜú#HJ¥RºvíÚÐÓÓÓú£5ButÕÛ­ @€ @€Ô@@Ð%èªAYi²`�Ñ]!I’‚›×�x]ñ~öFN€ @€ Ђ.AWkTrk�"éëëK³ù,èòC€@q‚®â,µD€ @€ @`6]‚®Ù¨;÷¬N ßÑ5<<ºººª»ÒÙL* èš”ÇA @€ @€ / èt5|‘ê`ȃ®ÁÁÁ<èjkkCB€@A‚®‚ 5C€ @€ @`–]‚®Y*=·­B )•Ji¶£«½½½ŠËœJ€Àæ]›rœ @€ @€@c º]�]¡z— xt¡:¨»À<V®\™ÿYµjUÈþ<øàƒy?Ž=öذlÙ²šöé¾ûî {î¹gx衇òûì¿ÿþá;ßùNá÷tNªA @€ @€ut ºêZpn6-�¤¯¯/yta’$ÓjÄEª˜¬Îêtyä‘á›ßüæh—]£~!@€ @€ @`Œ€ KÐ5¦üÚ Iú£ý(œtÒIa²¢Aû¯[M(0¶ÎvÙe—°Ç{„[n¹%I­ƒ®k¯½6~øáa§�v ÙβìGЕ3ø @€ @€6t º6* /P ù·»5=ñÄ“ÂêÕ«°{ºÔŠK–, ûì³OþgÞ¼yaݺuaÁ‚ùPktýîw¿ËY˜}'Ýå—_Ž9æ˜üž‚®V¬2c"@€ @€ 0sA— kæU¤…Z $o~ó›Ó믿><õÔSvtÕZ[û Ô+è:õÔSÃg?ûÙpà�†åË—�Ö» kÂ�Å› @€ @€¢t º¢ÿGÐÉœ9sÒ?üá!MÓ&è®.¶¢@=‚®•+W†E‹…r½‡ìQ�»ï¾» «‹É˜ @€ @€( ètXNšª‘@Rn7ÝrΖáñ'¯Ñ-4K`r�Z]Y�»páÂ<à:÷ÜsÃ?øÁ¼C#ßfG×äŸ�£ @€ @€bt ºb­ýfwtí¼ËÎapÝàè—f€¾6¿@­ƒ® .¸ œ}öÙa·Ýv wß}wØzë­s4AWó׎ @€ @€¨¥€ KÐUËúÒv1yеë‚]ÚµkŠiQ+ª¨eеfÍšðGôGáÑG 7ß|sxÃÞ0Ú»™]?ÿùÏGÛšè—ûî»/ì»ï¾ù¡ááá0þü‰Nó @€ @€ * èt5hiêÖ�<èzÚÓž–# ÿcŽû•@Íjt|ðÁáÖ[o á+_ùʸ±ŒÔût]8rý¸F+¼tU€ñ6 @€ @€�t º¸ ºü Pœ€ «8K- @€ @€˜ A— k6êÎ=«Èwt ‡®®®ê®t6“ º&åq� @€ @€@à º] _¤:ò kpp0ºÚÚÚ� P�€ « HÍ @€ @€˜%A— k–JÏm«HJ¥Ršíèjoo¯â2§ °9A׿„'@€ @€ ÐØ‚.AWcW¨Þe]¨ÔH@ÐU#XÍ @€ @€¨“€ KÐU§Rs›$}}}éÈ£ “$™AS.%@`¬€ k¬†ß  @€ @€4Ÿ€ KÐÕ|U_�“þþþ<èêìì ‚®ø Àˆk' èª�­–  @€ @€ÔC@Ð%èªG�¹ÇÌ<ºpf~®&PQ@ÐU‘Æ @€ @€M! èt5E¡FÞÉdùmËÓË/»<\zé¥vtE^ †_¬€ «XO­ @€ @€¨·€ KÐUïšs¿ê’Ø?ýÎw¾Ò4­þjW PQ@ÐU‘Æ @€ @€M! èt5E¡FÞɤ<þtë§m}ìÑÈ) Ÿ@±‚®b=µF€ @€ @ Þ‚.AW½kÎýªȃ®ÓO?=\xá…]X½Ÿ+TtU¤q€ @€ @€@Sº]MQ¨‘w2Ùzë­Óþç===‘S>�b]Åzj� @€ @€@½]‚®zלûU/�ïèÊ.{ê©§ìèªÞÏ* º*Ò8@€ @€ @ )]‚®¦(ÔÈ;™]{î¹g¸çž{]‘ƒá+ è*ÖSk @€ @€ê- ètÕ»æÜ¯z�dûí·Oÿáþ!tuuUµ+¨( èªHã @€ @€�¦t ºš¢P#ïd¾£ëüóÏçž{®]‘ƒá+ è*ÖSk @€ @€ê- ètÕ»æÜ¯z�<èš;wnø¯ÿú¯ê¯v]i @€ @€ Ђ.AWSjä�L^üâ§?ûÙÏBš¦‘S>�b]Åzj� @€ @€@½]‚®zלûU/�|ë[ÿ’~úÓŸ Ë—/¯þjW PQ@ÐU‘Æ @€ @€M! èt5E¡FÞɤT*¥ëÖ­ ]]]‘S>�b]Åzj� @€ @€@½]‚®zלûU/�¬X±"]¿~}èìì¬þjW PQ@ÐU‘Æ @€ @€M! èt5E¡FÞÉ|G×ÀÀ@èîÂð + è*ÖSk @€ @€ê- ètÕ»æÜ¯z�Ñ +{ta’$Õ·à &tMÈâM @€ @€M# èt5M±FÜѤ··7ö]�¡×F@ÐUW­ @€ @€¨—€ KÐU¯ZsŸé $ýýýéÐÐPèèè°£kúŽ®$°‰€ ko @€ @€h*A— «© 6ÒÎæ;º² ËwtEZ†]3AWÍh5L€ @€ @ .‚.AW] ÍMf$àÑ…3âs1�Ê‚®Ê6Ž @€ @€hA— «ê4ö>æ�.ô]±W‚ñ. è*œTƒ @€ @€ê* ètÕµàÜlZùŽ®lA¾³³sZ ¸ˆ�‰]»x— @€ @€@³º]ÍR«1÷3)•JéÚµkCOOOÌÆN pAWá¤$@€ @€ PWA— «®çfÓÝÑÕÑÑ’$™V#."@`SAצ&Þ!@€ @€ ÐL‚.AW3Õk¬}MúúúÒlA> ºü Pœ€ «8K- @€ @€˜ A— k6êÎ=«Èwt ‡®®®ê®t6“ º&åq� @€ @€@à º] _¤:ò kpp0ºÚÚÚ� P�€ « HÍ @€ @€˜%A— k–JÏm«HJ¥Ršíèjoo¯â2§ °9A׿„'@€ @€ ÐØ‚.AWcW¨Þe]¨ÔH@ÐU#XÍ @€ @€¨“€ KÐU§Rs›$}}}éÈ£ “$™AS.%@`¬€ k¬†ß  @€ @€4Ÿ€ KÐÕ|U_�“þþþ<èêìì ‚®ø Àˆk' èª�­–  @€ @€ÔC@Ð%èªG�¹ÇÌ<ºpf~®&PQ@ÐU‘Æ @€ @€M! èt5E¡FÞÉ|G׺uëBWW—]‘ƒá+ è*ÖSk @€ @€ê- ètÕ»æÜ¯z�Ñ «»»»ú«]A€@EAWE @€ @€4…€ KÐÕ…y'“Ã?<Ýk¯½ÂùçŸ9…á(V@ÐU¬§Ö @€ @€Ô[@Ð%èªw͹_õÉüùóÓ‡~8d’$©¾W 0¡€ kBo @€ @€hA— «iŠ5âŽfÉVú¬g=+<øàƒ3:�â]Å›j‘ @€ @€@=]‚®zÖ›{MO º>ýéO‡SO=ÕŽ®éºŠÀ„‚® Y¼I€ @€ @ i]‚®¦)Öˆ;š¼h×]Ó}øÃ¡½½]Ðq!zñ‚®âMµH€ @€ @ ž‚.AW=ëͽ¦'�,|ÕÂô¬÷œººº¦×‚«˜P@Ð5!‹7  @€ @€4�€ KÐÕ4ÅqG“½÷Þ;=ãŒ3ò +I²'ú!@ AWŠÚ @€ @€ 0{‚.A×ìUŸ;OU YXºÎ,]ÝÝÝS½ÆyLA@Ð5$§ @€ @€h`A— «�ËS×þW Ù{ayG×™‚.A hAWÑ¢Ú#@€ @€ P_A— «¾çnÓ(?ºpazúég„žžžé\ï*º*Àx› @€ @€@“º]MRªQw3ÿŽ®3Ï<3ÿŽ®¨% ž@Á‚®‚A5G€ @€ @ Î‚.AW�KÎí¦!�ì³÷>é™g�:;;§q¹K¨$ èª$ã} @€ @€Í! èt5G¥ÆÝˤT*¥¡»»;n £'P°€ «`PÍ @€ @€¨³€ KÐUç’s»iŒ]]]]!I’i4á&tM¤â= @€ @€Í# èt5OµÆÛÓ¤··7ö]ñÖ€‘×H@ÐU#XÍ @€ @€¨“€ KÐU§Rs›$ýýýéÐÐPèèè°£k�.%°±€ kc¯  @€ @€4—€ KÐÕ\goó]YÐå;ºâ,£®�€ «v¶Z&@€ @€ PA— «uæ3ðè™ù¹z<ð@X¹reþgÕªU!ûóàƒæ-{ì±aÙ²eÓhuÓK~øápÝu×…[o½5Üu×]aݺuá‘G sçÎ /ùËá‡ÞñŽwä¯7½zæïºfn¨ @€ @€³) ètÍfý¹÷ÔòGúŽ®©y9«�$I*¶RTÐuã�7†·¾õ­á÷¿ÿ}Å{ežóœç„«®º*xà�“ž7�ƒ‚®é¨¹† @€ @€@ãº]�S�zRI ßÑ•-ÈwvvV:Çû tí²Ë.a�=ö·ÜrK~�¢‚®+¯¼2}ôÑ¡­­-|ðÁá�C ¯xÅ+òÝ[Y½éK_ _ýêWó{n³Í6¡ü]ua¯½ö*tœ‚®B95F€ @€ @ î‚.AW݋Π«HJ¥RºvíÚÐÓÓSõÅ. 0�%K–„}öÙ'ÿ3oÞ¼ü‘‚ ,È›**èÊB¬Ûn»-¼ÿýïY˜6ÑÏg?ûÙpꩧ懲]Ë—/Ÿè´i¿'èš6�  @€ @€4„€ KÐÕ…¨“ ŒîèêèècwÚLz•ƒ Ⱦ;«è kªÝË·;ï¼3ßùuÿý÷‡vØaª—nö™ïäºé¦›òž.Y²$,]º´Ê^‡PÍ¿AWÕ¼. @€ @€ 0ë‚.A׬¡lV éïïσ®ÎÎΪî7Û²LQ ÞA×I'�þñÿ1ï]öÈÂù—ÉwuM±»£§ytá(…_ @€ @€´¤€ KÐÕ’…ÝbƒòèÂû@›q8õ ºÎ>ûìpÁäL¯{ÝëÂÍ7ßžþô§×„- ÂvÞyç¼m;ºjB¬Q @€ @€5t ºjZ`/D ßÑ• ]]]vtBª‘jêt}ô£ ï{ßûòî½êU¯ ·Ýv[Ø~ûí«íî”ÏtM™Ê‰ @€ @€R@Ð%èjÈÂÔ©qyÐuç�w†SO=uÜ/ÔK A×%—\N>ùä|H/}éKÊ+Â;ìPÓ! ºjÊ«q @€ @€5t ºj^dn0c�¤T*¥¥þR8ë=g͸1 ˜Ž@­ƒ®+®¸"{ì±!MÓ°ë®»†ÞÞÞð¼ç=o:]­êAWU\N&@€ @€ Ðp‚.AWÃ¥m"�”w¶¤+W® gžy¦GnÂã�zÔ2èºúê«C{{{xòÉ'Ãüùóó�ë…/|a=†]uav @€ @€5t ºjV\.L Ùm·§¿yøápÿ÷Ö¨†T#0� kÙ²eáøã�Ïo³dÉ’°téÒMnyË-·„Ã;,<þøãa§�vÊW¸ûî»or^­ÞtÕJV» @€ @€ê# ètÕ§ÒÜe&ɶÛn›>öØcá‰'ž°£k&’®�²@___X½zõèù6l‹/Î_ï·ß~á„N=–ýrÜqÇ�{�½Ø\ÐuÇw„ƒ:(<òÈ#aË-·ÌÏÿã?þãMÚûF¶ãkîܹcßšÑï‚®ñ¹˜ @€ @€À¬ º]³^„:°Y�¤:¤ßûÞ÷Âgœ!èÚ,—ŠÈ‚«Ë.»lÊMeß­µñÏæ‚®l‡×ù矿ñe“¾þâ¿8a¨6éE“tM‚ã @€ @€�&t ºš L£ïbÒÛÛ[ºV†³Î:3z õtÕÇÙ] @€ @€˜™€ KÐ5³ ru=’R©”–úKáÌrЕ$I=î颰£+Š�Ù  @€ @€ZX@Ð%èjáòn™¡%ýýýi9ì ïyÏ{ZfPB ]�ð)è @€ @€�é º]Ó¯WÖK ßÑU»]õwŸh]Ñ|ÔJ€ @€ Т‚.AW‹–vK +éëë+ïèº=,^lGWK}²3ë‚®Yÿt€ @€ @€ÀŒ]‚®�‹ë"ð?ßÑUºÎ*G—Štg©% @€ @€³! ètÍFݹguÉŠ+ÒÿøÇáÄO¬îJg 0©€ kR  @€ @€4¼€ KÐÕðEªƒ!ßÑ500º»»q P € «@LM @€ @€˜A— kÊÎ-« ººººB’$U^ît* º*ÉxŸ @€ @€@sº]ÍQ©q÷2éííM‡‡‡Ctù!@ 8AWq–Z"@€ @€ 0‚.A×lÔ�{V'�ô÷÷§CCC¡££ÃŽ®êìœM`RAפ< @€ @€hxA— «á‹TC¾£+ º|G—j P¬€ «XO­ @€ @€¨·€ KÐUïšs¿ê<º°z3W˜’@lAW¬“þ”ŠÁI @€ @€M)ëšWlk›MYœ:=*�?ºpppÐwt�’ø…@1±M±NúÅT‹V @€ @€Q Ö5¯ØÖ6±öôiêùŽ®¬h;;;§~•3 ج@l“A¬“þf Á  @€ @€M+ëšWlk›M[ :ž $¥R)]»vmèééAB€@�±M±Nú–Œ¦ @€ @€L Ö5¯ØÖ6¬ìt§J�Ñ]!I’*/w:•b› b�ô+}þÞ'@€ @€h~�X×¼b[ÛlþJ�{I___šmtù!@ 8�Ø&ƒX'ýâ*FK @€ @€�&ëšWlk›�VwúS�@¾£kxx8tuuUw¥³ ˜T ¶É ÖIÒ"p� @€ @ ©b]óŠmm³©‹TçCt æAW[[ ˆm2ˆuÒ/¨\4C€ @€ Ѐ±®yŶ¶Ù€¥§KU$¥R)Ívtµ··Wq™S Øœ@l“A¬“þæêÀq @€ @€�æˆuÍ+¶µÍæ­P=Ï<ºP¨‘@l“A¬“~�ÊG³ @€ @€ ëšWlk› Pjº0�¤¯¯/yta’$3hÊ¥Œˆm2ˆuÒû™û� @€ @ µb]óŠmm³µª6¾Ñ$ýýýyÐÕÙÙ]ñ€×N ¶É ÖI¿v¤e @€ @€�ÙˆuÍ+¶µÍÙ®3÷Ÿ™€GÎÌÏÕ* Ä6Ä:éW, @€ @€š^ Ö5¯ØÖ6›¾P#@¾£kݺu¡««ËŽ®È‹Áð‹ˆm2ˆuÒ/¶j´F€ @€ ÐH±®yŶ¶ÙH5§/Õ Œ]ÝÝÝÕ_í * Ä6Ä:éW, @€ @€š^ Ö5¯ØÖ6›¾P#@R*•Ò��� 芼 ¿p�Ø&ƒX'ý Gƒ @€ @€ #ëšWlk› Sp:2-�dÅŠiV´���]8-B˜X ¶É ÖIâOß» @€ @€­ ëšWlk›­P«1�!éëëK‡††òïèŠÂØ -Ûdë¤_tÝh� @€ @ qb]óŠmm³q*NO¦#�]ÃÃᣣή麆@�Ø&ƒX'ý ¿·  @€ @€Z@ Ö5¯ØÖ6[ T£BteEÛÞÞ.芺 ¾h�Ø&ƒX'ý¢ëF{ @€ @€�#ëšWlk›�Sqz2�¤··7ÍvtuuuMçz× PA ¶É ÖI¿ÂÇïm @€ @€�ˆuÍ+¶µÍ(Õ¨‡�”J¥t`` º’$‰Ãà )Ûdë¤_dÍh‹ @€ @ ±b]óŠmm³±ªNoªHúûûÓuëÖ…îîîj¯u>“Ä6Ä:éOR @€ @€4¹@¬k^±­m6y™FßýÑ]‚®èk@Á±M±Nú—�æ @€ @€H Ö5¯ØÖ6¨äteI___¾£«§§g—»„�J±M±Nú•>ï @€ @€4¿@¬k^±­m6¥Æ=‚|GWöè®®®¸%Œž@Á±M±Nú—�æ @€ @€H Ö5¯ØÖ6¨äteÉŠ+ÒõëׇÎÎÎi\î* Ä6Ä:éWúü½O€ @€ Ðü±®yŶ¶Ùü•÷|GWÜŸ¿Ñ×P ¶É ÖI¿†%¤i @€ @€�YˆuÍ+¶µÍY.3·Ÿ¡ÀhЕ=º0I’6çrFb› b�ôG>o @€ @€´ž@¬k^±­m¶^åÆ5¢¤··7ö]q}îF[�Ø&ƒX'ý:”’[ @€ @€Ì’@¬k^±­mÎRy¹mAI:44:::ìè*U32�Ø&ƒX'}ÕN€ @€ к±®yŶ¶ÙºÇÈò]YÐÕÝÝLj�’@�b› b�ôëTNnC€ @€ 0 ±®yŶ¶9 ¥å– xta�˜š"0V ¶É ÖIìgîw @€ @€�ÖˆuÍ+¶µÍÖªÚøF“?ºpppÐwtÅ÷Ùq�b› b�ôk\Fš'@€ @€˜E�X×¼b[ÛœÅsëò]YÑvvvМ&ˆm2ˆuÒù¼ýM€ @€ Ðz±®yŶ¶Ùz•׈’R©”®]»6ôôôÄ5r£%Pc�Ø&ƒX'ý—‘æ  @€ @€fQ Ö5¯ØÖ6g±Äܺ�Ñ]!I’šÔ™@l“A¬“¾j'@€ @€h]�X×¼b[ÛlÝ ŽcdI___šmtù!@ 8�Ø&ƒX'ýâ*FK @€ @€�&ëšWlk›�VwúS�@¾£kxx8tuuUw¥³ ˜T ¶É ÖIÒ"p� @€ @ ©b]óŠmm³©‹TçCt æAW[[ ˆm2ˆuÒ/¨\4C€ @€ Ѐ±®yŶ¶Ù€¥§KU$¥R)Ívtµ··Wq™S Øœ@l“A¬“þæêÀq @€ @€�æˆuÍ+¶µÍæ­P=Ï<ºP¨‘@l“A¬“~�ÊG³ @€ @€ ëšWlk› Pjº0�¤¯¯/yta’$3hÊ¥Œˆm2ˆuÒû™û� @€ @ µb]óŠmm³µª6¾Ñ$ýýýyÐÕÙÙ]ñ€×N ¶É ÖI¿v¤e @€ @€�ÙˆuÍ+¶µÍÙ®3÷Ÿ™€GÎÌÏÕ* Ä6Ä:éW, @€ @€š^ Ö5¯ØÖ6›¾P#@¾£kݺu¡««ËŽ®È‹Áð‹ˆm2ˆuÒ/¶j´F€ @€ ÐH±®yŶ¶ÙH5§/Õ Œ]ÝÝÝÕ_í * Ä6Ä:éW, @€ @€š^ Ö5¯ØÖ6›¾P#@R*•Ò��� 芼 ¿p�Ø&ƒX'ý Gƒ @€ @€ #ëšWlk› Sp:2-�dÅŠiV´���]8-B˜X ¶É ÖIâOß» @€ @€­ ëšWlk›­P«1�!éëëK‡††òïèŠÂØ -Ûdë¤_tÝh� @€ @ qb]óŠmm³q*NO¦#�]ÃÃᣣή麆@�Ø&ƒX'ý ¿·  @€ @€Z@ Ö5¯ØÖ6[ T£BteEÛÞÞ.芺 ¾h�Ø&ƒX'ý¢ëF{ @€ @€�#ëšWlk›�Sqz2�¤··7ÍvtuuuMçz× PA ¶É ÖI¿ÂÇïm @€ @€�ˆuÍ+¶µÍ(Õ¨‡�”J¥t`` º’$‰Ãà )Ûdë¤_dÍh‹ @€ @ ±b]óŠmm³±ªNoªHÞÿþ÷§/{ÙËBwwwµ×:Ÿ�Ib› b�ô')‡ @€ @€š\ Ö5¯ØÖ6›¼L£ï~2gΜôœsÎ K—.�@}xà�°råÊüϪU«BöçÁÌo~ì±Ç†eË–Þ‘/ùËá‹_übøÑ�~zè¡0oÞ¼ðº×½.œ|òÉaÑ¢E…ß/k0¶É ÖI¿&Å£Q @€ @€�†ˆuÍ+¶µÍ†(6�˜¶@ö¬Âôõ¯}ø×ý×i7âBÕLöˆÌ¢ƒ®G}4yä‘á†n˜°‹mmmá¼óÎ K–,™ðøLÞŒm2ˆuÒŸI�¸– @€ @ ±b]óŠmm³±«Pï6'�]»íöâð³Ÿýtsç:N �±A×.»ìöØc�pË-·ämtuuu…¯|å+yÛx`8í´ÓÂóž÷¼p÷Ýw‡øÃaÍš5ù±ÏþóáÄO,d|#�Ä6Ä:é�|Þþ&@€ @€h=�X×¼b[Ûl½Ê�kDyÐ5g‹-ÂøC\#7ÚYÈvOí³Ï>ùŸì‚ëÖ­ ,ÈûSdе|ùòpÐAåívØaášk® [”k}ägÆ aáÂ…ahh(Ì�;7¬]»6<ó™Ï9<ã¿c› b�ôg\( @€ @€hX�X×¼b[ÛlØÔ±) $[mµUºÛn/ ÷ÞûSºÀIЍUÐõ¦7½)Üxã�¡ü=ta`` ÌŸ?“®g»½²]_ÙÏÇ>ö±°xñâMΙî±M±NúÓ­× @€ @€4¾@¬k^±­m6~%êádI©TJ³ [ìûH¹É.rŒ@‘µº~ûÛ߆vØ!<þøãá�Cɯ‰úœßqÇÃo~ó›°hÑ¢Pþ÷0ÑiÓz/¶É ÖIZÅá" @€ @€�¦ˆuÍ+¶µÍ¦(F�¬(�\tÑEéÃ?>ð�T<ɵ¨EÐ5ö±…ùÈGÂûÞ÷¾ŠCxãߘGX¶óë‘G [n¹eÅs«9Ûdë¤_MM8— @€ @ ¹b]óŠmm³¹ªRo7È¿£+û¾¤ï}ï{vtm¬ãu]jt]|ñÅáÝï~wÞÿ컹Ž8∊c9í´ÓB9ðÍ�ß{ï½aÏ=÷¬xn5b› b�ô«© ç @€ @€4—@¬k^±­m6WUêíÆÉÜgÌMÏ=ïÜpæ™gn|Ìku¨EЕíàúèG?š÷ÕªUaï½÷®8–O|â£ßÍuÓM7…l‡×T~²ÿ²Ÿìç¾ûî ûî»o~Êððð„ß6ÙõÍv,ÖI¿Ù>'ý%@€ @€˜º@¬k^‚®©×ˆ3g_ ùò—¿œ–òïèšýîèAŒµºN>ùäpÉ%—äœ?þñ�Ã{ìQ‘ösŸû\x×»Þ•ÿÆ7¾Þö¶·Uúh8òÈ#à 7ܰIÙÙã:Ï=÷Ü w„MxAoÆ6Ä:éWQN%@€ @€h2�X×¼b[Ûl²²ÔÝ�’þþþ<èêìì ‚®�t¼¬‰@=ƒ®‘\uÕUù.°þð‡á¡‡ óæÍ ¯{ÝëÂ)§œ-Z4rZ¡Ç6Ä:éZ4#@€ @€h(�X×¼b[Ûl¨¢Ó™ª<º°j2˜š@l“A¬“þÔªÁY @€ @€Í(ëšWlk›ÍX›úüùŽ®uëÖåßedG×ÿÁ´ÒoÙ÷Q½å-o [l±EøÎw¾žÿüçO:¼õëׇý÷ß?d� ¼ñÆÃK^ò’IÏwpb�Ø&ƒX'ý‰?}ï @€ @€´‚@¬k^±­m¶B­Æ<†Ñ «»»;f‡–û{ßûÞðñ�<¼ñ�õ«© öMozS¸ùæ›Ã9çœ>øÁNåçl$Ûd뤿ÑÇî% @€ @€@ ĺæÛÚf •l”CIJ¥R:00]­ûù¿æ5¯ «V­ _|qxç;ß9¥�~þóŸÏÏ;¿ªü=nSºÆIãb› b�ôÇê^ @€ @€´’@¬k^±­m¶RÍÆ8–dÅŠiV´���Á£ [³žõ¬g…‡~8”?ë°ß~ûMi�Y¸õº×½.d×nذaJ×8i¼@l“A¬“þøOÝ+ @€ @€�VˆuÍ+¶µÍVªÙÇ’ôõõ¥CCCùwtÅØ·Új«ðä“O†»îº+¼â¯˜Ò�øÃ†W¾ò•aΜ9áñÇŸÒ5N/Ûdë¤?þS÷Š @€ @ •b]óŠmm³•j6ƱäA×ððpèèè°£«E+`Þ¼yù®¬n¸!ÿž®© 3û~®?ÿó?Ï|æ3Ã>8•Kœ³‘@l“A¬“þF»— @€ @€-$ëšWlk›-T²Q%º¾ð…/„ì�G¶f ¼öµ¯ ·ß~{8õÔSç>õ©) òôÓO]tQØ{ï½ÃÊ•+§t�“Æ Ä6Ä:é�ÿÔ½"@€ @€h%�X×¼b[Ûl¥š�q,ÉŸýÙŸ¥Ë—/išÆ8þ(Æü·û·aÉ’%áéOz¸óÎ;ÃK_úÒIÇ}ï½÷†}÷Ý7<öØcáœsÎ üà'=ßÁ‰b› b�ô'þô½K€ @€ Ð ±®yŶ¶Ù µó’òàÓ¶¶¶ð‡?üÁŽ®­„ 6„ „Gy$ì´ÓNáŸþéŸÂ¡‡:áh¿ýío‡“N:)Üÿýa›m¶ kÖ¬ Ù£ýT/Ûdë¤_}e¸‚ @€ @ Yb]óŠmm³YêQ?'ȃ®7½ùÍáúë®›ø ï¶„À—¾ô¥pôÑG�†™»îºkÈiøÜç>7ß}÷Ýz{{ÃÀÀ@¾»/{Œå²eËòkZ`Ûdë¤? ¥å– @€ @€uˆuÍ+¶µÍ:•“ÛÔH ºN9å”ðÙÏ~¶F·Ðl£\qÅá�ï|g¾³+ëÓÆßÉ6òøÊm·Ý6|îsŸ GuT£t½)ûÛdë¤ß”Å©Ó @€ @€SˆuÍ+¶µÍ)ƒ“V º^ö²—…{î¹§a;©cÅ üò—¿ ]tQ¸þúëóÏ|$ÜÊ_ùò—¿<vØa! >=®pææ±M±Nú3¯- @€ @€4ª@¬k^±­m6jýé×Ôò +;u$ð˜ÚeÎj�ì{Ù~ýë_çCyÖ³žæÌ™Ó Ãj˜1Ä6Ä:é7LÁé @€ @€@á±®yŶ¶Yxáh°®IOwOú¥«¾$èª+»›Å Ûdë¤C-# @€ @ V�X×¼b[ÛŒµ¾[eÜI©TJûúúÂâÅ‹[eLÆA !b› b�ô¢Øt‚ @€ @ &±®yŶ¶Y“âÑhÝò k`` tuu…$Éždè§•~ö³Ÿ…Ë/¿<Ü~ûí!û¾®G}4Ü|óÍa·Ývvö}mCCCaÛm· ûï¿ÿèû~©N ¶É ÖI¿ºªp6 @€ @€@3 ĺæÛÚf3Õ¤¾n*�ôöö¦ÃÃÃyеéaï´ŠÀSO=þæoþ&|æ3Ÿ Ùï#ßÉ–…›wß}wØsÏ=G‡zà 7„C=4ÿή,}þóŸ?zÌ/Sˆm2ˆuÒŸzE8“ @€ @ Ùb]óŠmm³ÙêRÇ $åà#Ýi§�BGG‡]ãmZêÕ_ýÕ_…K/½4¸²àjÑ¢EáßøFþ™oteÑ‹^Ö­[.¼ðÂpÚi§µ”E½Ûdë¤_¯zr @€ @€�ú ĺæÛÚfý+Ë‹HÚÚÚRaF‘¤�×Ö¿ýÛ¿…ƒ>8µÎ>ûìpþùç‡-¶Ø"”?ûŠA×ûÞ÷¾ð±�},vØaá[ßúVã ª zÛdë¤ß¥¨‹ @€ @€ÓˆuÍ+¶µÍi–‡ËD ûR®tÁ‚aíÚµ Ò%Ý(Z Û­÷õ¯=¼ùÍo×^{íhó“]W_}u8òÈ#î»îV¯^=z�_¦.Ûdë¤?õŠp& @€ @€@³ ĺæÛÚf³Õ¥þŽH¶Ûn»ôw¿ûÝèw6�?ìU+ì²Ë.aýúõá›ßüf8âˆ#F‡4YеråÊðš×¼&l³Í6!«?Õ Ä6Ä:éW_® @€ @€h�X×¼b[Ûl–zÔω’¯~õ«éÒ¥KÃüÇL|†w›^`ë­·O<ñDøþ÷¿öÚk¯ÑñLtýà? . [mµUxì±ÇF¯ñËÔb› b�ô§^Î$@€ @€h6�X×¼b[Ûl¶ºa÷úg@IDATÔßñI©TJ³ÇöôôŒ?âUË<ûÙÏ=ôP¸é¦›òïêØdAWöˆÃ·¼å-á9ÏyNøÅ/~1r‰¿«ˆm2ˆuÒ¯¢$œJ€ @€ Ðd±®yŶ¶Ùde©» $½½½iV´Ù÷8%Iö•]~ZM`Ÿ}ö wÝuW¸ð Ãi§�6:¼É‚®w½ë]áþáÂAþõ_ÿuô¿L] ¶É ÖIêáL @€ @€�fˆuÍ+¶µÍf«Ký/�ôõõ�]ãyÕ*çœsNøÈG>vÛm·ð“Ÿü$dWöS)èÊc¹÷Þ{‡ßÿþ÷áŸøD8ãŒ3Z…¢®ãˆm2ˆuÒ¯kQ¹ @€ @€@]b]óŠmm³®Eåf… ä;º†‡‡CWWWá�k°1î¿ÿþ<äzä‘GÂ;ÞñŽpÉ%—„9sæLte»·Ž?þøüq…Ù#ÂvÛm×i²^Ä6Ä:é7YYê. @€ @€@­y}÷ôׄ?}õ«ÂÐÐPÈÖPüã‡wÜqÒV³ÍŸþô§ós.½ôÒ| 6{ñ�ï|'xà�£×fk±Ùzî6Ûl3úÞD¿<úè£ù×Îüæ7¿=|Ûm·…8`ôuöËtÛÿÙÏ~^ò’—Œkk¢öÇ�P~±~ýú0þüüíì)c¯|å+óß_øÂ†ÁÁÁ�O¯øúÏxFþuMv�±ÇÊA×èõ#¿Tc¼ë®»¦å§¿�\:áß\pAžŒ½ïÆ¿ï¼óÎé~ðƒ ¯¯ç›I©TJ³]YÊé§µ¾öµ¯…“N:)<üðÃ~[¹ðr€ìÿ5pÙe—…·¾õ­­ RãÑÙÑÂ÷?ðúðìížVciÍ @€ @€¨�ÀD;ºFÖ¼zzzÂUW]•߸¼i ¼ùÍoÞ¤ÙŽ … æ;c²4Ù™ Œž7v—ÒÖ[o²3‡rH¾ƒhô¤ ~Éîuà 7„‘k²SÊÁͤ;ºFÎ�JûtPX¾|ù¸;OÔþ¸Ê/=ôÐPÃ_ÿõ_‡Ï}îs£‡Gv=ïyÏ 7ß|óèû•~)oÄ/}éKÇkUÞÈÞõ®w�ÿÝï~î¼óÎðÉO~2¬[·.?ÛmUÇ­…�Ý=5Ùxþöoÿ6œwÞy£í—Ê|Sy³H˜;wnøõ¯þó?ÿ3\{íµù­§žz*¼â¯ÿþïÿ>zÍÆ¿|ãßù—¶ß~û°aưå–[æ§ŒíS¶Û¯Òm|é&¯³Ýd駱Ì8Û˜õ÷ŸþéŸÂŠ+òö^ô¢…{ï½7<íi›®ß–ƒÔÐÝÝ�Ÿ—í;ùä“Ãë_ÿú°Ã;„5kÖäO�+-V~|Þ¼yùW&e.³ö“íè*ÿc¬g¸æ^³(Pþ”~ðƒÌíò?¤|WW¶ƒ+ûSÞ¶˜¾ÿýïOË[cg±‡­sk;º®Kíèj�z6 @€ @€@Œ•vteåÇØ¥å…ÿ|‡N¶³%Û±³ñO9ÄÝtá…n|8-‡-£ÇË›Qòß³§mM´iäâlý¶üX¾üÜŽŽŽÑë³¶6þ™iûåàbÒöÇÞï¿ÿû¿Ór˜–ŸŸíxû3²Û(û{º?cǒ킚è§@¥»í¶ÛhŸ¿ýío�;mì¼²“ËaÓèõ;í´SZØÆµ±ñ‹»ï¾;-‡@i9èÚøÐ¸×ÇsLÞn9ì÷þTú4î‚ /¦bœ=Ù¯üxËÑñUʆÊ�&=§Ò“ßþâ/þbôœ�üãzUŸ·C9uK³­�åı>wt—†ÈŠ:û/ã_þò—iùÿYÐ0ýj•Žº]­RËÆA€ÀÿgïLàuªö>þ?Ç<ŠÌSá¥"2^œ[†¥ÔEæº)câ^Bh ‹\$JQ¨P7i0½æÞÂ9$¢[ÑõV†>*óÐA\ìwýÖ}÷n?ûÙÏx¦çyöo}>§gï5ü÷Zß½z–Ïú=ÿÿ"      ¯&t�É¢E‹¬Í~åaäƒIyËX¡ê”w‘ëñAvñfÞ¼yFÙ²eµ=7QÌ4®ÎúÒuPmL1ÊM¸ÉŒ}Ó®ùéfßì>—-[¦û¢<× åAd/2Âa|¸ÜØÇHèB³ùóç[Lœï$”¨¤¢tè?Æ\¤HC�¿æÒÿ,ìµc.J(7EQMͧZ¨>ùTr.cå…fñQgÇùYTá¬òúõëû•›_~ù¥U¢Wn&IKKÓ]ºró5ðÙ‰H€B…®Dœ× � � � � � � � x‰@(¡ ,T(@½á�¨Yˆ †a£I“&:‘µþùÏê|çìâÍ›o¾i@x€ÈR¯^=gUëâê 6Ì@›`BTfì›vÍOØ –úöí«ûrï½÷úU W„ñkh˰�%˜Ð+³Ï*ģ͂a„•†nµUa}Úfæ: ú”œœ¬�Oì¶BõÉ^7Øu¸ŒUøLkŒN!öácòëܹsÀGªp‘V=²2`½œ(†.Ì Ì|† Pè¢ÐåÅyÏ1“ � � � � � � �@"GèRgBE‹Õ›þ7Þx£¡ÎÙ2L¯+O?ýt@$vñ¢Õ_|a‰$œ ^b¦±k×®ˆ…®Hì›Ï1?ƒ ]p¤)W®œî›:ÊÙm#\Ư¡-ÃÎ*˜Ðõí·ßZŒ BÚS0Q c0½®àÍåŠÒn+’ë'Ÿ|R÷)55Õ¯Y°>ùU’.c„•4ßéäÉ“]-–(QB× ×£ an&íÑÅÐ…¹ù ²ÿÙKˆ/@üáKÖ™àF õ¿bÅŠ:†ª:äÏx饗œÕx! ]º"œ2¬N$@$@$@$@$@$@$@$cºÐå™3gZâÁÃ?¬ÃÞALÀ^«Ûž¬9L»x¡ É<iÔ¨QúÞþS0©]»¶ÎŽÔ£ �±_³fMk<¦(LèúüóÏu}xµýôÓOö.ëëpE¿†¶ ;«`B×{ï½gõ½OŸ>6 Á=ºìž`N�ÌÇH7&s7a)'….ˆywÜq‡õ® ¸¥1cÆX W¯^íVÅ€·æ΋ 7Ä£«¡,ÈL‚ËœRœ¥G�ªOL‰H`É’%Ò½{wQ*¬¨£R @Ÿa¶oß^Ö­['j>Yùê I(³fͲòx°V‡PêFJô%$Ff ÎjŸÈ¸( &lðéõΧZKÉ¢¾óͧoH€H€H€H€H€H€H€H€H † „»ç¥QÞ:²mÛ6k4*L"ªI³fͬ<çÅ'Ÿ|"-[¶ÔÙJ´’?ÿùÏ2eÊQ"—Þ[ú¨ß W®\©ËT‰2�ƒgê#B(StèÑE�®èf[‘ � � � � � � � Ä �p=ºÐ_œÃ¥6ö­?%„†¬ú¦G—ú½Þ›…­�?þز�käaßu�¢ñè ÇþöíÛ­~™cB_%óÜ0%"¹V1=ºL[¡>Ý<¶ì¬œå8/J a†ú¬~ã™No:´3Ÿí�Ý+×Y•= ϼá†\MÚûdö-Ø'Æå–Âeܸqcãƒ>p3á“÷ïÿÛ˜?¾Q­Z5‹™½_Ð0Ob!ɦM›Œüã\Ö˜“À­·Þª¿ü-Zä7@LFˆZˆkÆ=}ú´qóÍ7ë6p³eŠŽ…. ]ÑͶ"       ˆ‘]ÊËÅG˜4iRÈaØÅSèB#3¼œ}×Z·nmÙ�Fè Ǿ}oÓ7œÂ�Ù gfœæ–ÂaL;N! 6í¬Ìz�>•7˜�3ÌœÉ.*9Ç£<¸¬q(Ï'gÓ¨ïÛ´i£í2ÄÕ†½O�ÆcÏϬСsÂl°'åm¨õûóÍë””CyrÐr;É–-[´Ð•Ûáó³�€rÕ¢ÕÖ­[}råÊ£xñâºL¹ú”½úê«–æSÀ›° Ø\'zŠdÑOt � � � � � � � �@bpÛóúz†ßà ö+VÌJ *TÈøî»ïüêÚ3ìâ�]èZ°`�¶›çÏŸ×`W…ã³LD+t…²oßÛ4… §0dvbΜ9º_ˆ(™BW ‘&P;{¾�•Ù'ç'¼¦THGãÈ‘#ö¦Öµ]TrŽ';<ºà\¢B j>ëׯ·úa¿Ö'{½P×ÁÃ; ssG…8´æ– ­éj眩�…º^�:uŒ?üÐ8qâ„qéÒ%ãûï¿7 âb~ƒ?Ρ;|ø°«�œÊL‚Ð¥&­tíÚÕŠõ©:Ç”@C±I•š.uëÖµF†{ÄLEŒWÄÕTÿ#XeˆÛ¼ys)\¸°(·O+ŸáP_<£‹gt…?aX“H€H€H€H€H€H€H€H f¨h2çƒòÚ'ûåLÑ£>ý2®&I‰óe¤o‹*2àO%%99Iî½÷^Y±b…Þk5ÏØÂ¹]8×hÃßsííÆìçN)ÑJŸÑ…rìÉ–)SF”È%ï¾û®>Ÿ«G�R¤HQ"ŽþD½hÎè Çþ©S§¬½MÔGRÂ�ß`ÈïСƒ¬ZµJŸÓ¤D/dù%óü(ìA8pÀ¯<œ ;«�Ê Aƒt3ìo,XPŸ¥;‚š²Ÿ‡å�ýŒ®1cÆø�QÔp€Â¥K—J—.]D‰”¢„"É—/Ÿ_Í`}ò«$#\Æ?ÿü³Ô®][Nž<©5%ÆJÞ¼y-˘_*\¡>§ ç‰}öÙgÖ|³*©‹�7ŠòVÓsSEŽ“÷ßß^œ³×º/^ÌÐ…9%-æÂs ôÃQ}¡ú<ýÅ_Ô^[•+WöÉÇ Ü:ÒP}Aø•1#<ö_=У+ž÷$@$@$@$@$@$@$@1L`Æ»G�Ê]Rà2E°ŠCÞ5’ _£÷*T¨`œ9sF�!ë°·Š}‹`ûbö}§Ðí±Ç‚?\¯[·Î‡^f„®`öí{›æÞ úêLË—/×ýR‘ÁŒ .8‹­{s?ŸÑ&;+ìE“ìûKÎñ(<ãºë®ÓãQžsÖ»Œæ9hƒ}°R¥Ji{(ëS 6nù‘0¶Ÿ'7mÚ4s8wË|ç{÷îõ)sÞŒ5ʪ»mÛ6gqŽÝKzzºÞìÄKdJLøõ¼³°y»gÏ=ÈeË–i‘ J«›Ð‰x¤hÓ¸qãÄ„’£²/^ºÃX¹-[_vÝ»wJ_†˜“ø"…ÐaOö…Ìü¢ õ‹´W®ÝÖóÍvÎE õ²Û>žaO�b› ’Ù×PŸ‘ ]N{�52”»²½kú:’V¹%[±}�ö�÷5jÔ0‚ýº»ØÞ'§Ý@÷‘ ]N;U«V5¾ýö[?>f†r-÷›_vºLRü$      �Ø'O®HD.ˆ]Ej·²öFŒ÷õ~Q¡ ­2vЀ}OÊ)t©ãhŒråÊY6Ê—/ï÷#âÌ]ÁìÛ÷6ͽ·=µ¾}ûêþ©Ð�®ã33Í=¯XºÐ×áÇ[¼_xá³ûQ}¦¥¥i[Øïê,â}˜ì‹�—….àÂBn.ˆ�DÌCx¢~¢Î�ó!m_ôRõÂq!†k7êšmpí¶`d·}ŸÁ¨ü?†¾˜îìf¹¹ á.XHBý™âµÙŸö±¨xÅ>6¶nÝj`!S1{õóÑÚÎ;„»À>÷Üs–Ø‚@ ûð ݹs§öâ‚gÔ�wÞi‰˜ê¬@{wý®qØ%lÁ\šÉÞ'xû…bƒrˆfÎŒñöíÛ�E‹·ß~»5.“Øøí·ßœfô½½O˜cMš41PýÇ….WlÌ$      �˜#påÊհÚÞ\¥ø}_¤pÍTÕþS%Dù:”<ðÀÖ>Áš5küÆmßÇq ]¨ùΛP}rÖt c3¤"ÆéÔ‡àáe¾óW_}5Ðãt~Æ u]h Ç�Z7; -�®ì|mç>�%K–èPo˜pæßµ×^kàŒ6g‚wÂwA sóörÖç½;ûbàu¡ ¿X0Ý~!®º‰vϘéÓ§ûAµ/dæ?"ÎÍÉl¬N´Üº»víj}A»-bÙmßì>rÑÞàñfO‘,HövökûX-úˆ™[½zu‹ ÜÌí)œb“¹è•.]ÚP‚ÚMø]CxBÜÞPB׃>¨íªƒ:}l„Ó'ŸnÂaŒœ´hÑÂ_ ïBüÞy_h†�´ÿC�BW€—Àl      ˆ1¯¼w,ìp…º*ýu©‘§x½w�\°¨Qñ±Eºý«K}7ûùåû°ØCÁ�322|FnßÇqº|*»ÜdVèr1©³ì{›æþújOŸþ¹ö›úé'{‘ßu8û1~�vV�ö¼MünÃÙ_ŠtÏë›o¾Ñ?þvîyÕªUKóyþùçýúaϧOöú�®ÃeŒ§C8Å{…€=T{‚¸‡wŠr„ã„øç–^{í5]õš6mêV%ÇòB‡Si̱§óA9Jÿ“Nš4ÉÀà‰'\Ÿ�جþóŸõßéÓ§]ë034ûbàu¡ ´à%c.Šƒ òˆÅ_ª(‡w‘Û9Nö…lÞ¼y:'껉b¦qóàD„íDóùÎEõ³Û¾Ù'|"t(úâ»8ÜÉnÏymK°Eþüùç; µÀfæ×-˜ �Þ½)Š:c‡êS ›ÎüpÛà üõ¯uš xO¡+ � � � � � � �@̸õ± ]) îµöUJ¶bµ­÷ØN¿1Ú÷¥êÍžìû8ñ&t™{5ðê •Ìý˜p£áÓÎ3¿ì¬‚íyë‹ÙgìÍÁ^ äŒbÔ¶m[ã•W^1>þøcýƒç 6ðvBÔ&ó¼v»Ð…?›{‘_ýu Çè|{Ÿ°N#·ÿc¼{÷nûþ#FŒ°<Öп±cǺö­OŸ>VÿqÎØÄ‰�M›6»ví2ðƒy{/Œ?K×dq¦öè6lx›¥9  ]+ œÑeO5ˆ/Pü"`óæÍºÂ½!?_¾|Æ?ÿùO{ë_–æâ€EÂîëÕ«gÕq^Ô¯__×Á? ÐÆlïöÅ›Ýöí} »Ø\�ðm²�%Ø¢�EÓd‚EÙžì ¬¯¬ŒWln°ØÅ¡úd·ì:\ÆøGˆÉÇ)³O¡+–‘ � � � � � �@ì8|ô’QyÄ*K¬2Cú,ÛK…vKJÖû«Ôñi;°gOñgFŽ�(�3Ù÷qâMè2÷ÞÆ�o'à§¹có QŞ쬂íyÙÛ8¯#Ù_Šä\zxoAH2ÓK/½¤çÇ 7Ü`fü´÷).¨3tèP?{‘0Æþ,l8�31�â{„¬@ýBxGgèCÓFN~ T¸þýúåä3ù¬l$pß}÷i¯-¸Ä2å. ]þB×�tM|1Þxã�úÜ#Óë yO?ýtÀ—f_Ȱè#Tœùëö«x‰™åX#º²Ú¾9°P±‹Í ŸÑ&;«`‹þ·ß~k1ržwf_`aÏž0Óë ‹™[(J{ýH®ƒÅ.Ö§Hž.c„•4ç�óPÎ`ϣЌËH€H€H€H€H€H€H ö¬N;ë#V¸�_ù‰�Œ|×UÑ{Iy åûÍõk»&ÝÿÌð}ûöYGYà‡Û—/_Ö ìû8Ø¿Š4Eºç®}ûÞ¦¹?bß#B´3ûh¡’¹c¶ ç3·….ŒéâÅ‹ZÈéÕ«—Q³fM†2oÞ¼F‰% }øq4¼¼œ‚αLJ  �aßó ‡ êD*tᘢâÅ‹k§�ÁƒkϬ�S063R£F }f™9v„*Ä^n¬D2KJOO7Ôÿ òúë¯+>LñN@MXQj¬þS.£Ò¡C¹çž{D¹MÆûÐâ®ÿêË^ÔyTºßêx©X±bÜ�!’ŸÈ¸( &lði²ó©ÖR²hŸ<õkQ_Ä:ïá‡u~œ¨3«ä¦›nµx‰ŠëSß¼Qç?IË–-õ-¾³TxM©]»¶(AKÔAœ¢„³ªþ=z´ÎCå¹$o½õ–àyHjQõ+}mþ'»í›ÏÙ±c‡4jÔHÿ?zøðaQvšEúSÅj–ƒŠZüE ƒ>eáÞØÇ¢JQ矹6]ºt©¨s°t™rGÊЪ‡6ê×8úÞÉK ‹rË-·è2%�ÉêÕ«­v™½0ß)Þ'Þ«=듽^¨ëp«u\Ô?HdãÆ�ú]aÌ7ß|s(ÓºsS…]Ô×ÊM]ð<&       �Ø%ð�5§eÌ'iYÖÁI-R¥G»k²Ì^n µ·©Îg’ˆ:ÃIP—éw¿þú«¨‰Ë¥K—dݺuz�é÷R^eKèÂÄ„@Âßúõë'Ê ATŒN=ó�Bd�è…¿;î¸CÔyHñ=Ð8è}¨Å †Qúԯ$55U¶mÛfÙ‡@«BJ³fͬ<ç…]¼1…®)S¦h1‚"Ä!s¾C¤€P�uTìÙ¨„®¬´oŽ“Šñ+¢Õ��f¶õiŠ0*^±(wg+?ÐEéÒ¥ödgHèR¿’Ûn»Íz .”Þ½{[f‚‰JÊYÔ¯Xt]ÇW&L˜`µËÌD¡ªU«j–”Ë·�9{ŸT¼b-úTpÜà{NýÚÄ‘+ZxÂ|qc¬Ü²EýÂJTìl-ˆ¢±›�êgÔ–A¡Ëƒ—$@$@$@$@$@$@$Ö¤ÿ*–oʲž¾Öñv¹³iJ–ÙË C¡ö6á\±råJéß¿¿Ì™3'7º³ÏT!¥sçÎ’’’"Ç�ç^|¼©$œ“³pÑByý5ztåï{„Šó*+V¬Ðð’A2E€Â… KëÖ­µ§—:—GÊ”)“cýòÒƒB-‰Æ"\¡ ㆇU�:u,Ê]V^~ùeëÞíÂ.Þ˜B<¢*W®,Ï”­åñ¤V­Z ´C‡é_–DãÑ••öÍ15hÐ@”;·ö–zæ™gÌlëÓº¬ŒnB–�•³Þsð*ƒh„zHÿõ¯ùxÓÙE%§G—Ý+oæÌ™¢\°µ�Ìþs¶Tìbùá‡üÌÙûäWè’È+.\Æ�7JQî¿ÿ~ë�³(tfà      ˆE?û·4�ºþÿ�ÝÊ\�+I²ud)_*_æ årëP{›ø�øùóçõ¾ £‰ù¾,xq©Hzz�Kqá[È»l!�”––f,T!–f+ÕÕB²åI4šk~úé'­®Cø‚páÂݼoüaã D[„—CXBxù ! ê lýúõ:/¡ ³Ê>lA83CXBìRñ˜‘í“ÂaÌFN! ùvVf½@ŸðƒçØ­·ÞêSÅ.*9…®‰'ÊSO=¥ëÃóé‘GñiíMÛ¶mõû‚ØÍ™ì}r–¹ÝgVè‚P ÁtúôéV¨F·ç8ó(t9‰ðžH€H€H€H€H€H€bŸ@½Á;åTÑ_2ÝÑåä‹Yõ3m'· xmo3·yóù™#ð�.²Šgted¼´FX® 6hO/¸–º…8„—D/†8ÌÜ[õÚbà&t­ÐBj]_Ä$ÄœutöìY+¿P¡BÚË«ZµjVžóÂ.ÞØ….„ÜÃ/#Š+&¿üòŸŒÀK±píáø¢º²Ê>ÆcÆ.†Ø…°Šnɺ‰4nmœyvVÎ2ó^Sp¡~â‰'üB¢Ž]Tr ]ÙáÑe�] q£3듳n°û`ŒÒñÈ‘#úGð¸Ã9i˜[ ûÇ?þ1˜Y«ŒB—…‚$@$@$@$@$@$@$7^]z\¦ìø,ÓýÕ¨‰ ìT2ÓvrÛ€×ö6s›7ŸŸ9ZèZ´h‘ހ͜)¶ŽGqÁ Þ^ð0A2=û̇æÙ^ qÙöÊbpõª!s>8!¯}²_Î=êɸš$%Η‘¾-ªÈ€?•T¡“äÞ{ïÕó óÌ< ¡!¬B„ ”ìâ�]èÊÈÈÐá7á*ýî»ï ÎçêÑ£‡)RD øDŠVèÊ*ûèþ_‚`,vq06ÂIvVðœ4h�næ Ô‡a/^<¨©`¢’ýŒ®1cÆ<¼2›–.]*]ºtѱ‹Oœ8!ùòù»÷ëS$Ï—1~P»vm9yò¤ïøÝwßIÞ¼yC>ŠBWHD¬@$@$@$@$@$@$@1G{\Õo’«Å2¢î[òÙùnÖmz,j#1ÒÐ+{›1‚›ÝÈ$ºpÁ‚·”ÐÅ3º2É2 qøâ‹/Êã�?÷ãÌ©xa1xoãõþî°þ�|¶¨t,ñƒÌ˜ØG¿‚ÈìÙ³õ™Læù\vËùžìâ�³^¯^½âË]wÝ¥…®Õ«W ò â›)Z¡ í³Â>B†–,YR‡…¸ ÏI·®ãÖÖ̳³r mhÖ öLTúú믭P~íÚµðÎl2Å!x™½÷Þ{®æ‚õɵA€ÌHÿå/±Â("Ä#Â+†JæXPoÿþý‚ç1‘ � � � � � � Ä>ìu=±j«$å¿qg�KydÚÝM¥ËÁ\±á\jà…½Í\BËÇf�ÿ÷èz[ ]s²ÁAìzôÑGí]󹎡ëðáÃR£F ÁÙh8mÇŽrã�7úŒÅíÞ[8K­gÏžVñèÑ£õû‚صeË+ßy‘B—]´‚ !6T²·aèÂP´XN$@$@$@$@$@$@±I{`¯}xRæ|òƒœ)â8—þJ’”¼PVú¶¬"ýï/‘gr9ßB¢îm:ÇÉûÄ �¤6 œc¡‹‰H ë$êbðêÒã2eÇgaƒºzé7ùé�ÇäÊ™#’\°¨”d¶ä)z­ŒjÔDv*iÙ9räˆÜtÓMrêÔ)�؃s   ˜)”ÐeÖ ô™Y¡+�]3?˜}ˆ@ð†Ä� •+WÎlæ÷/B:Ϻ>}þsæBB¨lÞ¼¹ß˜Ì „«„yôèQÙ½{·™-µk×–o¾ùFžþyyòÉ'­|çEN ]ðdmÖ¬™\¼xQòçϯ½1ÎP‰BW(B,'      �ø!p"ã¢4˜°Á§Ã«´�Z×ÿ¾oåS˜ 7‰º·™ ¯‡Ãp°<º^{í5Goã�À�ä£�>’ï¿ÿ^òäÉ£E„Ž;ê³pB� m±���ù�7†ªÎr‰ºÔ¼SNýÅeÄîY'7¼.¿î\® K¶"Eë´Õ×%2Êɳêû4š?¾åí„Pxfhg÷µmÛVð=Ñòšk®‘“'Oʾ}ûgýÁSa ëÖ­k ]ø®¹á†´Iˆ›8¯-P29¢ü r7œPªƒˆó¿ì)cô¢ë† ä•W^Ñkh;vìX™0a‚ÝŒ¾ÎÈÈ�¥K—úäÏ›7OÒÒÒtÞÔ©SÅŠñÖ[oü1‘ � � � � � � Ä7¡kçS­¥dÑñ1€({™¨{›Qâ`³' …® „.ûy61Þov/�§žzJ°ÁzùòeŸš �Áƒ 6§q(Á»â–[nÑB6~™"'�ˆ‹ÁOÇþ-M§®—¤d#, +¿¼3R�ÈyU V©#eºM²ÚW“dëˆ6R¾T¾ßóTˆ¿V­ZiQ âìöíÛ¥~ýÿˆavñÆyF—e ÈE0�+4ËNû 4x�?ÞGrë®)¸•ÊÛµk—�xbKv ]èÓ| LjV¡„¬éÓ§ 1¤—_~Y† ¢Å®~ø!hs»Ð´¢­pèС2cÆ [ŽH$Œ!ö£/¾ø¢þ>ô1¤n0fS¨s–¹ÝGû>Ül1�H€H€H€H€H€H€H û Pèå¦bÅŠÙ›O �( $¥§§ø5ºÝs"J[l#ú "ÎrKظ½ùæ›åý÷ß×gì¸Õ¡ÐåF%²¼DºÖ¤ÿ*–o „qå²üüÖPù÷ñƒ’”·€”ë3Kò]ë²ïµŽ·Ë�MS|ìýïÿþ¯Ô©SG~ûí7©W¯žö€‚èeoâIèB¨Bó»0¦`)Æ´“ÛBúqéÒ%íÙ´zõjýΞð×_•bÅŠ ÆÔ¤Iéܹ³´hÑÂG0‚àµ~ýz-&™g¬™ãr~æ„Ð…|¤¤¤HÕªUg†=òÈ#>"¢³OºœDxO$@$@$@$@$@$@‰E€B…®ÄšÑ‰9íÑõã�?J÷îÝs„ÕW_}¥7Ò!r!\Ö3Ï<#-[¶ÔgÌ@(ÀFò¡C‡4•’%K 6¥NÍ™(t9‰D~ŸˆB×?Öœ–1Ÿü'$[äDü[Lj‘*=Ú]ã_�@9ð–0`€T¨PA0'˜~'! ßSÉÖ­['mÚ´ù½�W$@$@$@$@$@$@$@$(tQèŠ�iÈ.„ �´eËãàÁƒZè‚§S|xì±ÇdöìÙR¢D ö ^ ötáÂ9r¤>{ùð\X¶l™ö²°×£Ðe§Ýu" ]‘xt…CÍÍ£+œvñTçž{î‘•+WJÿþýeΜ9ñÔõlï+¼Jáå…ï¡ãÇ�Kþüù³ý™| � � � � � � � DB€B…®Hæ ëæ�¤´´4-tuëÖÍ'œTît‡OÍ,œ«µgÏyî¹çdìØ±ͽóÎ;òè£�jO¯‚ Ê’%K¤C‡V} ]Ѝ/QèŠôŒ®`ðŒ+ꌮ‘¾gt«¯eS¦L‘óçÏËý÷ß/uëÖ�×adK¿áÅ¥Âçê3®zè¡ly�’ � � � � � � �@fPè¢Ð•™ùö9C€¡ s†sŽ=¥xñâ’‘‘!›7o–fÍš}.BvìØQŸ£“/_>Y¸p¡tíÚU·¡Ð]X…‰(taàõï”SE ‹A°J%2Êɳê«Â2        ÈUº(tåêäÃÃ" =º8ÀÐ…aáŠýJ �Ë—/ËŽ;ôY]¡zŒzíÛ·—'NHž D�Q�šÈÀN%CÔb1 � � � � � � � � ä ]ºroöñÉá°„®=z„Û†õb˜@¹råäèÑ£²|ùr¹ûî»Ãê)D­¶mÛÊÏ?ÿ¬ÃWΘ1CZµj%ƒˆsÛ®\¹–�H+ál¸—^zIV­Z%?þø£@¤«V­š<ðÀ‚³Æ .©I¿úqqfÙ† äûï¿—sçÎéó€n¼ñFi×®� 0@J—.í×.+2UèºzÕ�êƒ7ÉÕbQcJ>›"ßͺM’“y.`ÔÙ�H€H€H€H€H€H€H€H Û Pè¢Ð•퓌È4�$u>бÿ~¡Ð•i–1a eË–²iÓ&5j”Lš4)ì>Ajݺµ@|‚¸Õ³gOyûí·³MèZ±b…ôêÕKΞ=ëÚÇ5jh¬zõê®åád.Z´Hú÷ï/.\X½D‰²xñbiÓ¦MÀ:Ñ$ªÐïm<#O¬Ú*Iù#A�KydÚÝM¥ËÅ£EËv$@$@$@$@$@$@$@$@$�#(tQèÊ‘‰Æ‡dŠ@’E lÈwëÖM‹™²ÆÆ¹N`ìØ±òüóÏËý×É¿þõ¯ˆúƒy±kß¾}z.†‘-B×®]»$55U PE‹•Ñ£G :R�æÎ�«û ± ¡SRR"*§¥¥Éí·ß.W¯^U^CÉòÐCéóÈÊ—//‡’ Ä6¤B… É×_-U«VÕ÷YõŸDºÀhæâc2}ûΈÄ.ˆ\Ã7�¡ÝJefÚ!        �l#@¡‹BW¶M.Î2I[¶l1°ñß½{÷,3JC¹G`óæÍÒ¼ys-P­]»V W‘ôæØ±c:Œá—_~©›eGèBPègÞ¼yµ÷YÓ¦M}º8uêT9r¤Î{öÙgeܸq>åáÜtèÐA{„¡î+¯¼"ƒ òk6|øp™>}ºÎG¨ÄY³fùÕÉLF¢ ]`Ï®Qïï+Œ!Âþ½S]zrefR±- � � � � � � � �@Ž ÐE¡+G'-tá|¤®]»Ò£+*„±Õ^XUªTÑçmýá%dFÜÁ3gÎÈ]wÝ%[·ªÐtY|F×öíÛýBBXÁ9sæøõ^Xµk×–½{÷Ê5×\£ÏË—/Ÿ_½`IxêÔ))Y²¤?~ܵ*Æ ûHõë×—�;wºÖ‹6Ó BØàÌ®×><)s>ùAÎ9êƒË¸’$%/”•¾-«HÿûKðL.:¼!       ˆuº(tÅúeÿD´Ð… ùx€Bg„EàÒ¥KZ,C„³¬JcƌѡaoÛ¶m–èå´?yòdÒùðLkÛ¶­³JÐ{„Dÿüó€uK•*¥…0k_}õUÀzÑxEè2Ù¸-ú«´�Z×1«ð“H€H€H€H€H€H€H€H€⊀۞×ΧZKÉ¢âj‘vÖk{›‘òaýØ"�¤BÈðèbèÂØz1‰Ú3la‘"EäôéÓ:|¡ÛXáMÖ¬Y3]ôÌ3ÏÈøñãݪÌkР�|ñÅA=ºÎž=+Å‹×6:uê$K—. h/š¯-^]ô£™lC$@$@$@$@$@$@$@$¼ºçåµ½Íø˜�ìe IéééÆþýûµÐ…0uL$��LªºuëÊîÝ»> a~©K—.²dÉ’€uÝ æÎ�+ýúõÓE³gÏ–øU1b„L›6Mç¯_¿>âóÌü :2¼¶xuÑw¼vÞ’ � � � � � � � $¯îyymo3�¦¬'‡’”––f8p@zôèáI‰:hœÍÕ§OY½zµT«VÍ&DÍ;ï¼SÞ|óMIMMµòsââ·ß~“B… éGÝ}÷ݲråÊ �5Ã6iÒDŸ´²£ðÊ•+zü .TçB%ëë{ï½WÊ•+'‡’E‹ÉG}¤[�;V&L˜à°ú_öÁÒÏ?ÿ,�7ÖUà5Y±bÅ`Õã¾Ì«‹~Ü¿8€H€H€H€H€H€H€H€H ¯îyQè 8%Xƒ,�. ]1øv2Ñ%ˆ97ß|³´oß^Þ{ï=ËR×®]å¿ÿû¿eÏž=R©R%+?'.Ž;&¥K—Ö�B?/^ô±eÊ”‘£G�JfÎÏB8ÂI“&É®]»üžÕ²eKÁ™a­[·ö+ '#H ]áe        ˆ-ºD¼°·[³Ž½‰”@’òüÑ]={öŒ´-ëÇ8�©S§Ê“O>)ðîjÚ´©öЂה)Sä‰'žÈñÞã ±råÊú¹½{÷x[K¨‹6ðHûî»ï‚Uu-Û»w¯Œ5J{µ]¾|Ù¯NÁ‚å¾ûîÓá +T¨àW*ƒB—/!¯.ú¾xG$@$@$@$@$@$@$@$�H¼ºçE�®DšÅ‰?íÑ…Ð…Ý»wOüÑzl„ßW¯^=III¢Rš5k&çÏŸ—/¾øB‡óËi9éѵyóf¹çž{äÌ™3R¥Jš°M›6úܯ#GŽÈòåËåé§Ÿ–“'OJùòåeݺuR«V­ˆ�0t¡/.¯.ú¾xG$@$@$@$@$@$@$@$�H¼ºçE¡+‘fqâ�%iÓ¦MÆáÇ¥[·n‰?ZŽpÛ¶mú,.„ \²d‰¼þð‡?ä ‰œ:£ëâÅ‹Ú óºlÙ²:l!>�é›o¾‘†  úÕ AÙ±c‡³J¦î½¶xuÑÏÔ$ac        �˜&àÕ=/¯ímÆô$dçBHjÛ¶­� ÿPÞ)!-±BLhÕª•_?¶oß..\�Â… K£F�|Ê~oãÆ�>yÙysÝu×ɉ'¤nݺ²{÷î€�:uê”ö¾B….]ºh‘.`eGÁ²eËtHBdOœ8QŸÃå¨bÝöíÛWæÍ›§ïÑô+«’ׯ.úY5_h‡H€H€H€H€H€H€H€H öxuÏËk{›±7óØ£H$©ÊF�´É™C‘<„usŽ@‹-Äùá©tîÜ9)R¤ˆö`röæþçœYÙvûí· Â ¢/§OŸ–¼yóº>këÖ­:Ô" Ÿyæ?~¼k=·ÌÉ“'ËèÑ£uÑêÕ«¥]»vnÕtÞœ9sdàÀ�úzñâÅÏ·¬J^[ ¼ºègÕ|¡        �Ø#àÕ=/¯ímÆÞÌc�"! …®>�ô‘ùóæGÒŽuã„ÀgŸ}¦#xE-]º4WCÙ˜1cäùçŸ×ôV1PE»XµvíZQž‡aŸ6mšŒ1B×_±b…tèÐ!`Û—_~Y† ¢ËÁ§S§NëFZàµÅÀ«‹~¤ó‚õI€H€H€H€H€H€H€H€⇀W÷¼¼¶·?3’=u#�Ô¤IcèСړÅé äÖ€yñCàÊ•+úì©B… Izzº¼p~<¼’““se £hŠ[ýû÷xT9ÓÕ«W¥víÚ²wï^¹æškäèÑ£’/_>gµ€÷ï¿ÿ¾tîÜY—�9Rþþ÷¿¬‹z¨�´sçN©_¿~Àº‘xm1ðê¢é¼`}        �ø!àÕ=/¯ímÆÏŒdOÝ$}øÁ‡Æù ç¥G�nåÌ‹c/¼ð‚@èÙ´i“¤¦¦j±ë�ü£Àãiذa¹623|!¢oM›6õéËÔ©Su¿‘ùì³Ïʸqã|Ê?ùäiÙ²¥Î{衇䭷Þò)GHÄ *Èùóç%%%E{±ÝrË->upƒ°†ðö‚°†ú‡ÊRÐk‹�W}¿‰Å         �„!àÕ=/¯ím&Ì„õè@’ÔyIÆ�?þ(Ý»w÷(‚Ä6D›Zµjé�¦ÇFІkÖ¬‘={öH¥J•reð»víÒÂÛ… ¤hÑ¢:œ!„+Ü㜬×_]÷«F�Úû b•=…ºP÷oû›>Û ×xÆã�?.mÚ´‘k¯½VŽ9"Ë–-“¹sçÊåË—QE-Z$½zõÒ×Yõ¯-^]ô³j¾Ð � � � � � � � �@ìðêž—×ö6coæ±G‘HJKK3~úé§ú¬ª%K–È}÷Ýgåó"ë xm1ðꢟõ3‡I€H€H€H€H€H€H€H€b…€W÷¼¼¶·+ó�ýˆŽ€ºŠ)"ÑY`«˜$€}7Ýt“”*UJvìØaõ±Q£FrüøqÙ³g�*TÈÊçEÖðÚbàÕE?ëg-’ � � � � � � � Ä ¯îyymo3Væû�¤*Uª8»ç61%�+VHÇŽeÁ‚Ò»woyûí·åÁu.›tèÐ!±ƒ£ñÚbàÕE?§»D$@$@$@$@$@$@$@$�E¼ºçåµ½Í,š.4“K’6oÞ¬…®îÝ»Krrr.uƒ�Í.úÓŸdçÎ�òå—_J�:u¤aÆòÁd×ãh×FÀk‹�W}Û+ç% � �µ]À€xIDAT � � � � � �@‚ðêž—×ö6lÚzn8IéééÆ�?þ¨ÏsòÜè=0àÇ놕*U|9íÝ»WÊ—/ï�‘çþ½¶xuÑÏý™Æ� � � � � � � � d¯îyymo3»æíæ íÑ¡ ]LñO^yII8z-¼„º—/_¯2kEDÀk‹�Wýˆ&+“ � � � � � � � įîyymo3®&%;ëG iË–-VèÂH?K̈ ãÆ�óº^xáÉÈÈ�””6l˜_?Ÿ}öY¿3Ø"–XBW�=b©_ìK& ¨³×¤yóæ2|øp™2eŠemôèÑ2uêTùôÓO%55ÕÊçEÖðÚbàÕE?ëg-’ � � � � � � � Ä ¯îyymo3Væû�¤ôôtcÿþýB¡+:€±ÚêСC2nÜ8™1c†+VÌêæ¯¿þ*C‡•ñãÇK¥J•¬|^d=¯-^]ô³~æÐ" � � � � � � � �@¬ðêž—×ö6ce¾±ÑHÚ´i“�IÛ­[7aèÂè ² ¸ðÚbàÕEßíÝ3�H€H€H€H€H€H€H€H 1xuÏËk{›‰1[½;Šÿÿÿe]k4@IDATìÝ ¼\U� þs!Yµ;€˜‰„EvdSEa\ò¶°ÈÐ4(¸L£8 �阆n;Ú ë "#‘QC[|[˜˜H�ö#ò6ÓiYdH Iêÿî�ªó’z/¯Þ«ªW·Î·>Ÿ�ª{Ï9÷œïýÁù|Î�soÒÙÙYèïï­­­Á‡�Ê üö·¿ {î¹gÖàÀÀ@˜5kVå¯Ã–ž}éÕpØ_>0¤g«¾øž°Ë´)CŽùA€ @€ @ /±®yŶ¶™—xÔÏÒIšèJá›››C’$¥K9J€@Ù±M±Núe†  @€ @€¹ˆuÍ+¶µÍܤޖÈ]iÐ655It•$jœƒ�?þx¸ñÆCGGGxòÉ'Ãþð‡°qãÆ˜&?_ýõË8YZ ¶É ÖI¿ôÝw” @€ @ b]óŠmm³b5æ1$ƒI�lG—G6v\sÍ5aÁ‚aÆ ¡P(Œz°i¢+­ãS¾@l“A¬“~ù‘¡ @€ @€@^b]óŠmm3/ñ¨Ÿ¥’îîîBOOOöŽ.�.,�”÷£ÿôOÿ”=š2ǤI“ÂqÇæÎ�fΜ™ýÞÖø.\¸­"Ηˆm2ˆuÒ/që"@€ @€h�X×¼b[Ûl�p�vIWWW¡··7´µµE‹ÐèO[ƒ ÍðÇüÇáÞ{ï ïxÇ;}Èu1¾Ø&ƒX'ýº6� @€ @€¨Š@¬k^±­mV%x4Z3�âŽ.‰®š™×üBo|ãÃË/¿n¹å–ð±�}¬æ×�õ‚±M±Nú±Æ·q @€ @€bˆuÍ+¶µÍb¹‘ǘtvvf;ºæÏŸßÈãŒzl»ì²KxþùçêU«ÂÁµE-Ûdë¤_˘r- @€ @€�Ú ÄºæÛÚfm£ÊÕ*-�íèJ]ØÚÚZé¶µW'G}tX±bEøÁ~Þýîw×I¯¿±M±Nú�ÉFH€ @€ˆW Ö5¯ØÖ6ã�ðÆyÒÞÞ^X³fMhiiiŒÅV×_}øÄ'>.¾øâðÕ¯~u«óTG ¶É ÖI¿:Ñ£U @€ @€�zˆuÍ+¶µÍzˆ5}»€wt�Ý.75ÿýßÿ=¼ç=ï =ôPøÖ·¾>øÁæ¦ïyîhl“A¬“~žcTß  @€ @€FˆuÍ+¶µÍ‘£ÀÙz(&ºÒG&IRïýÕ¿1 ¤ïè:÷ÜsòeËBsssögöìÙaêÔ©Ûlq¯½öÚf¶ˆm2ˆuÒßúÎ;B€ @€ Ð(±®yŶ¶Ù(ñë8’oß}waýºuÞÑAüèG? mmmá™gžõhÓäç믿>êò þ‡@l“A¬“þÜqß @€ @€M Ö5¯ØÖ6-ncO²Ï>û¾øÅ/†�}ìcvt5ðÝÿÌg>S|?W¡PõHÓD׆ F]^Áÿˆm2ˆuÒÿ�;î @€ @€@£ ĺæÛÚf£ÅmlãIŸUX˜;wnX½zulc�f¼·ß~{8çœs²ñNŸ>=|èC é=Ÿ9sf˜4iÒ6ÒGú”/Ûdë¤_~d¨A€ @€ ��X×¼b[ÛÌK<êgi�d0ÑQظqc(g—O馭W�#�<2üô§? ûï¿øñ�öØc�zíjCõ+¶É ÖI¿¡‚Ö` @€ @€†ĺæÛÚæ�›îGî’=÷ܳ000 Ñ•»[7úϘ1#¼ôÒKáŽ;îMMM£¯¨ä¸b› b�ôÇ$* @€ @€Ôµ@¬k^±­mÖuêÜ6²G¦¥ìèÚ¦Un ìºë®á¹çž «V­ |pnÇ‘·ŽÇ6Ä:éç-.õ— @€ @`ô±®yŶ¶9úˆP²²D×{ì±zìŸ>U@à¸ãŽ Ë—/Ë–- §�vZZÔÄhb› b�ôG Ê @€ @€äS Ö5¯ØÖ6ó�z½I éèè(¤AÛÜÜ’$Í{ù4šÀ-·Ü.¸à‚pöÙg‡¯}ík�6¼ºOl“A¬“~Ý Ž @€ @€Œ[ Ö5¯ØÖ6Ç(˜P�ä–›o)ôõ÷…E‹MhG\¼ºgœqF¶£kñâÅá’K.©îÅ´ž Ä6Ä:é w @€ @€�ƈuÍ+¶µÍÆ�à8F6¸‰+|=WÁ;ºø~···‡×^{-üÅ_üEX±bE8òÈ#CKKK˜={v˜:uê6G~üñÇo³Œ[ Ä6Ä:éo}ç!@€ @€h�X×¼b[Ûl”x�uÙ;ºÞûÞ÷†{ï½7Lš4)V‡†wz_ÇúXÊ´Þ믿ÞÐ>Õ\l“A¬“~µâG» @€ @€/ëšWlk›iz0�äsŸû\á�‡šßÑåÓ˜ãI`¦‰® 64&L•GÛdë¤_å0Ò< @€ @€À ĺæÛÚæ†˜KW@ éèè( „ÖÖÖ 4§‰zøÉO~2®n�p ãªkåØ&ƒX'ýXãÛ¸  @€ @€1ĺæÛÚf ±ÜÈcL:;; }}}Y¢k¬�·kd c#0V�Ø&ƒX'ý±Æ‡z @€ @€õ/ëšWlk›õ‰z8’@ÒÕÕ•%ºZZZÆü§‘.à�Xb› b�ôc�oã&@€ @€Ä ëšWlk›1Är#�Ñ£ ùîÛ„ Ä6Ä:éOh�¹8 @€ @€@Ub]óŠmm³ªA¤ñª d;ºz{{=º°êÔw�^x!,^¼8ëÀ\Þò–·ŒØ™µk׆›nº)+s饗†�vÚiÄòN–ˆm2ˆuÒ/}÷%@€ @€h�X×¼b[Ûl„X�y ÅDW[[[Ì =öø‡—\rIxÛÛÞ~õ«_ms¬…B!ì¿ÿþá‰'ž7Þxc8ÿüó·YG�­b› b�ô·¾óŽ @€ @€4Š@¬k^±­m6J¼Æ:ޤ»»»ÐÓÓ$º7>øÁ†{ï½7\qÅ᪫®Õ@.\˜•=ãŒ3Âw¾ó�QÕQh¨@l“A¬“þлî @€ @€@# ĺæÛÚf#ÅlŒcIÚÛÛ iж´´„$Ib4hø1ï¹çžá_ÿõ_Ã=÷ÜÞ÷¾÷�j¼÷Ýw_xÿûßöÚk¯�>ÚÒ§|�Ø&ƒX'ýò#C  @€ @€�¼ĺæÛÚf^âQ?K $���…þþþì]¥‹8šw�)S¦„×_=¬Zµ*|ðÁ£Îêիá‡ÒºëÖ­U…† Ä6Ä:é½ë~ @€ @€4’@¬k^±­m6RÌÆ8–,Ñ500š››íèjИ1cFx饗BGGG8æ˜cF5ÊÁGZ†ãŽ;.L�:5«;ªJ ˆm2ˆuÒrÓý @€ @€h(�X×¼b[Ûl¨ �p0Y¢+ Ú¦¦&‰® €ý÷ß?üú׿_þò—ç>õ©Q�ò+_ùJøÌg>öÙgŸðÄOŒªŽBCb› b�ô‡Þu¿ @€ @€I Ö5¯ØÖ6)fcK2¸Ë§�îèjmm�qüQŒù‚ .·ÜrK˜={vxä‘GÂäÉ“G÷¿ÿû¿‡w¼ãYrìì³Ï·Þzëˆå�,-Ûdë¤_úî;J€ @€ б®yŶ¶Ù±ó’ÁGÔzzz²DW’$1[4ìØ7=†0½¿þð‡Ã×¾öµì‘„¥üÊ+¯„sÎ9'|ûÛßÎvøýó?ÿs8á„Jul±M±NúÛ§  @€ @€r,ëšWlk›9Q]Hººº ½½½¡­­ H ¤÷wÉ’%YòjÖ¬Y!Ýåõ®w½+¼å-oÉF½víÚÐÞÞn¾ùæ�þG,ý|ô£ ßüæ7³ïþQ¾@l“A¬“~ù‘¡ @€ @€@^b]óŠmm3/ñ¨Ÿ¥Š;º$ºJ5ÊÑõëׇ3Î8#<ðÀ#¾‹­P(dC>å”SÂw¿ûݰãŽ;6 AÍÇÛdë¤_óÀrA @€ @€�š ĺæÛÚfÍÊ…ª"�tvvf;ºæÏŸ_• h´~Ò$ÖW¿úÕpÝu×wmmÙ»=÷Ü3|îsŸ _|ñˆ ±-ëù½µ@l“A¬“þÖwÞ @€ @€�FˆuÍ+¶µÍF‰×XÇ‘íèJ]ØÚÚ«AtãN^«W¯?üpxæ™g²ñïºë®áÐC sçΕàªPDÄ6Ä:éW(\4C€ @€ P‡±®yŶ¶Y‡¡§Ke$ƒïe*¬Y³&´´´”QMQ¶%Ûd뤿­8pž @€ @ ¿±®yŶ¶™ßÕóTÀ;º,9ä�ì]\øÀÂá‡Þ`£Ë×pb› b�ôó•zK€ @€ PŽ@¬k^±­m–ÊÖŸ@1Ñ•>º0I’úë¡•%0iÒ¤â}Üc�=ÂûßÿþðÁ~0œrÊ)aêÔ©eµ¥ðøb› b�ôÇ%j @€ @€Ô³@¬k^±­mÖs êÛ¶’ŽŽŽÂÀÀ€wtmÛ*%þÇÿøáž{î +V¬7n,&½¦L™N:é¤�îôJ_³fÍÊÅxòÜÉØ&ƒX'ý<Ǩ¾ @€ @€Œ,ëšWlk›#G�³õ.�tuuúûûCsss1)Rï�Ö¿m <ýôÓaÙ²eaéÒ¥á‡?üax饗²J›vítÐAYÂ+M|qÄÛnP‰²b› b�ôË  @€ @€r#ëšWlk›¹ H-)�Üýí» ¯¬{%´µµ•,à`þ^{íµðàƒfI¯t·W___6¨MI¯Ýwß=œ~úéqXá[Ûdë¤_á°Ñ @€ @€@ ĺæÛÚf…œ®ŒA ÙgŸ} _øÂÃù/ç�¡º*yøå/™%½ÒÝ^¥qxâ‰'fI/�8ßÝ�m2ˆuÒ_”¨M€ @€ Pϱ®yŶ¶YÏ1¨oÛH‹>xnxøáÕÛ.­Dà ¤�8¼÷Þ{³Ä×~ðƒ’�8Üô^/�8,ïöÇ6Ä:é—J @€ @€äI Ö5¯ØÖ6ó“úºµ@2iÒ¤ÂÆ�C¡PØú¬#Q lë‡_úҗ¾ð…¨LÆ3ØØ&ƒX'ýñĈº @€ @€õ-ëšWlk›õ…z·-�dÏ=÷, HtmK*Âó›qø½ï}/üô§? ,ÈþDH1¦!Ç6Ä:é�)8T"@€ @€È…@¬k^±­mæ"urX�ìÑ…éÙtWW’¤?}l-ðÌ3Ï„çž{.¼ímoÛú¤#%b› b�ôKÞ|  @€ @€B Ö5¯ØÖ6"X#D–è:à€Âc�=1ƒ¡O„@___øÊW¾–-[Ò]…S¦L ûî»ohjj _|q˜:ujźõÀ„Ûo¿=tvv†µk׆í·ß>ì±Çá ƒ ï~÷»ÃÙgŸ¦M›V±ë¥ Å6Ä:éW4h4F€ @€ PW±®yŶ¶YWA§3e $Ù£ [[[Ë®¬B>úûûËîhº»oÇw 3fÌ;ì°CÙõ·UaéҥᬳΠ/¾øbÉ¢³gÏÎ`ûí·_Éó£=˜îB;ï¼óÂw¿ûÝ«<üðÃáàƒ±L¹'c› b�ôË� å  @€ @€ò#ëšWlk›ù‰H=-%�ÜtóÍ…Þžžð¥/})Lš4©TÇr.°ÝvÛ�k³fÍ GuT8÷ÜsÃûßÿþqµ•VN“JÇ{lX·n]¶‹êòË/'�tRö{É’%ᦛnÊ®‘&»V®\¦OŸ>¦k¾ð Ùn­U«Veõ?ô¡…�~ô£Ù®±Ô$ÝEö“Ÿü$Üu×]!M¼It�‰¹X)ÖI¿à  @€ @€@à ĺæ%ÑÕp¡ÜÐܸ“?!ýãÓ˜•H`nzÛ)§œî¸ãŽð¦7½iÌXÇ|ÜI˜=>°½½=}ôÑCÚºöÚkÃe—]–[¸pa¸òÊ+‡œí�sÎ9'|ýë_ωxç�w†3Î8£dÕ4ö7lØ�õ§d�1Œm2ˆuÒcx¨F€ @€ ��X×¼b[ÛÌA(êâÙ;ºN;í´ðýï„bNåYàk_ûZÖý믿>üßÿû³G¾÷½ï ï|ç;Ãn»í–�{úé§³ÝS÷ßxõÕWÃGþìÏþ,{´à/ùËìÑÏ<óLH^Çw\¶j,&+V¬GydVõ / iŸ¶ülܸ1Ì™3'<þøãaæÌ™á©§ž “'O޲؈¿Ówq½ë]ïÊʤ‰³Ï~ö³#–¯ÆÉØ&ƒX'ýjÄŽ6  @€ @€êC Ö5¯ØÖ6ë#Úôb¬Ég?÷¹Â!ƒï&Jßѵi×ÎXS¯~.ºè¢ì‘€é®¦n¸!ì¾ûî%;›&•ÒWú(¿ôÝV7ß|sVnýúõ!mã¶ÛnËâäßøFhnn.ÙÆH¯¸âŠpõÕWgEzè¡bÒkË:×\sMHi˜~ÒäÛ©§žºe‘·´´„o~ó›Ù;Æþíßþ-Kî�X¡ 'c› b�ô«:š$@€ @€¨�X×¼b[Û¬“pÓ�1 $]]]…¾¾¾�&$ºÆ¨XçÕ¾ó�ï„øÃá˜cŽÉ¸­ûœ>Ê/ݵ•&¢ÒÇ655e#LwZ¥;½Òwl¥ ³»ï¾»ì‘ozláN;ížþùa¸|ùò¬¿é,X-Z4êk½öÚkY‚+MÎ¥ïäú§ú§¬núxÂý×ÍSøæ7¿¹êɯØ&ƒX'ýQ¦‚ @€ @€¹ˆuÍ+¶µÍܦHß•TÈvt 9ãG仡~ô£…%K–„yóæ�j\ir(ݱuòÉ'‡x X'Ý öñ�<üñÿqHã¦ÜOú¨ÄôˆsçÎ «W¯¶úsÏ=vÞyçì|Úçô[£ýüô§?Íriù4Aö™Ï|&K–¥�pL“kég‡viÒí _øB8ñijc•þGl“A¬“~¥ãF{ @€ @€õ#ëšWlk›õqz2�lGWoo¯GŽE/'uÒÝK›ÞÁuÈ!‡Œª×é®­Ã;,{‡×ï~÷»b�t§Õ±Ç›í†zå•WŠÇGó%Ýaõ†7¼!+zú駇{î¹gÄjÓ¦M /¿ür8ꨣBzÝÑ~Ò„ÖÇ>ö±¬øÂ… Cú˜Å_ÿú×%«§»ÛÒG)~þóŸ/y~¤ƒéìGú¬]»¶˜pK“‚³fÍ©xîÏÅ:éçþÆ @€ @€À°±®yIt NÔ¡@1ÑÕÖÖV‡ÝÓ¥JL�:5¼úê«áûßÿþ¨ßuõƒü œvÚi[%´Ò]X‡zh˜>}zxá…Êê^šlÛôn°t·XºÃl¤Ï{ìÒw†Í™3'<òÈ##rîË_þrøó?ÿóìØŽ;îÒ[:–/}éKá ƒ /¾øb¸ë®»Âûoÿ­8†ôñŽgžyæ�v¶õc[�€Ü¼¾D׿¾ @€ @€ȇ€DWÈžìÕèÿ>¢Q/‡Hº»» ===A¢k8¢üßÿý³MçœsNøßÿû�j@çž{nøú׿fÏžþå_þ¥XgSlŸ}ö O<ñDñøh¾¤Éž½öÚ++zöÙg‡Ûn»mÄjiٴξûî[Öµþò/ÿ2üÅ_üE±íSN9%Kòm·ÝvÅcé—ÎÎÎp '„ôÝcp@xôÑGËzO�D×Îë¤?TÁ/ @€ @€�FˆuÍËŽ®FŠâÆKÒÞÞ^Hƒ¶¥¥¥¬EþƧiœ^vÙeáºë®ËîïâÅ‹Ã%—\2âà¾úÕ¯†OúÓYùK/½4üÕ_ýU±üUW]ÒÇnùî®b�¾ÔjGW:ÖÏ}îsÅžüìg? Ã=²1}ÿ×·¾õ­¬ìÏþólÇW±â6¾xtáP X'ý¡ ~ @€ @€4’@¬k^]�Å�?–dpWK¡¿¿?{GWã7Îþþ÷¿oûÛ³÷t¥‡~x8묳ŠïàJ�¥I¨U«V…Ûo¿=üô§? …B!{Ìàc�=vÞyç´Hö9ðÀ³^ÿý¿ÿ÷ìÑ›Ž�æïZ½£ë†n]tQÖ¥ÝvÛ-{üápý»ùæ›Ã\��N¿ŸþùÃ-ûxl“A¬“~Ù�¡ @€ @€@nb]óŠmm37©£%²DWúx¸ô�Iå<Š­dkÖ­@úŽ«ô=Uk×®Ýæ}N“\o~ó›Ã}÷Ý7d‡Ó“O>Ò]éçŠ+®o{ÛÛÊï®»îž}öÙ0wîÜ�¾ïk¸ÏsÏ=WL°¥»®î¼óÎáŠnuüÞ{ï §Ÿ~zv<ÝÉ•îèîsÿý÷g.éù«¯¾ºìäÝpí¦Çc› b�ôGŠç @€ @€ò-ëšWlk›ùŽR½Ï]iÐ655m3‚+ß/¼ðB¸òÊ+Ã×¾öµðüóÏ—ÌŒ3Bú.¯´Ü›Þô¦’eÆsðøã�a§�vÊú°ýöÛ—lnùòåá˜cŽÉÎ-X° ,Z´¨d¹RûúúÂ[ßúÖìÔAÒG÷Ù<)víµ×†Ï~ö³Ã-ûxl“A¬“~Ù�¡ @€ @€@nb]óŠmm37©£%’Á¤C!ÝÑÕÚÚZ²€ƒ�'ðÚk¯…•+W†_þò—!Ý9•~Ò¤VúXÂw¾ó�aÊ”)Utº,Ý9•~zè¡pä‘G–¼Ö5×\.¿üòì\ºëêÔSO-Yn¸ƒ{ï½wHÉùÆ7¾1K¨ ·[1}Ù§>õ©¬™o|ãý÷ ¶É ÖI¸tœ @€ @ ÿ±®yŶ¶™ÿH�{Iwww¡§§'[à.7QþGÛm·eƒø“?ù“aKµåŠ+Š}¸ð Ãõ×_¿Õ¥7nÜæÌ™üñ0sæÌì[“'OÞªÜHþüÏÿ<|ùË_Ίüð‡? ïyÏ{J?餓ƒ>˜�Kc{î¹gÉrc9Ûdë¤?–ØP‡ @€ @ ±®yŶ¶™�hÔËá’®®®Booohkk®Œã9˜4iRöXÊ;î¸#{DåDgÓã ÓǶ··‡£�>zH—ÒG^vÙeÙ±… f�Qܼ@š˜JTéçÜsÏ ·Þzkö}ó¤I«4±·~ýúðŽw¼#tvvf»»6/sûí·‡³Ï>;;”¾Óëž{îÙüô¸¿Ç6Ä:é�;P4@€ @€ P·±®yŶ¶Y·¨c£(îè’è•W. ¥�%|ñųÇrÈ!>†‡~8{ì±aݺuaÚ´i!}œaš¸J/Y²$Üxã�YgÏž�õyúôéCú<šDWZaó„Yšôúüç?Òwv¥ßþö·Ã?þã?† 6d °ôQŽo{ÛÛ†\g¼?b› b�ôÇ'ê @€ @€Ô¯@¬k^±­mÖoêÙh’Á�.ÙŽ®ùóç�¦¼298ôÐCÃÏþó�>Âïä“O®‹,]º4œuÖYYÒ©T‡Ò$ײeËÂ~ûí·ÕéÑ&ºÒŠé{¾þçÿüŸ¡P(lÕNz`÷ÝwßùÎw¶ÚUV²p™c› b�ôË Å  @€ @€r$ëšWlk›9 I]-!�íèJ]ØÚÚZâ´C� pÕUW…ô€Ÿþô§‹ï­ª‡qõõõ…Å‹g ­ô?œ;ì°C–Øš7o^¸ä’KÂÔ©SKv³œDWÚÀòå˳Ý[aíÚµaÇw i"íŒ3Οüä'ÃŒ3J^g¼c› b�ôÇ'ê @€ @€Ô¯@¬k^±­mÖoêÙh’Áw$Ö¬YZZZFS^™ ¤�ê›;wn–äIwI½ûÝïÎá(ò×åØ&ƒX'ýüE¦ @€ @€ŒV Ö5¯ØÖ6GÊÕ§€wtÕç}©x¯žxâ‰ðÑ�~4<úè£á¼óÎ é;ÙÒ÷U¥ïïJ’¤â×Ó`±M±Núb� @€ @ qb]óŠmm³q#8Ž‘]é£ %<ó¦o·ÝvÅ�¥ïª*ç>§e_ýõb}_F/Ûdë¤?úˆP’ @€ @ o±®yŶ¶™·¸Ôß¡Éà{‹ ÞÑ5Ô¥¡~Mš4iÌãI]6lsý˜+Æ6Ä:éÇãÆN€ @€ht�X×¼b[Ûlô8nôñ%]]]…þþþÐÜÜ\ÖNŸF‡i¤ñ-Z´h\ÃY¸pá¸êÇZ9¶É ÖI?Öø6n @€ @€@ ±®yŶ¶C,7ò³]i¢+}g“•ˆm2ˆuÒ¯\Äh‰ @€ @ Þb]óŠmm³ÞâNÊHÚÛÛ iЦïèò!@ r±M±Nú•‹- @€ @€Ô›@¬k^±­mÖ[ÜéOyÉÔ©S o}ëÞáÑG+¯¦Ò¹øÍo~–/_þíßþ-¼òÊ+áŸøDØu×]s;žzíxl“A¬“~½ÆŸ~ @€ @€Œ_ Ö5¯ØÖ6Ç)Z˜H�dÒ¤I…�7†B¡0‘ýpíüìg? ŸùÌgÂà{Ù†\í‘G oûÛ‹Çþþïÿ>¤ïõš1cFxì±ÇÂäÉ“‹ç|½@l“A¬“þè#BI @€ @€�¼ ĺæÛÚfÞâR‡ $Ëî½·ðÝï|'Üpà CÏøÕP÷ÜsO˜7o^xíµ×†$5“$ [&ºþð‡?„?ú£?Êv{}ë[ß úЇÊ¢Vƒ‰m2ˆuÒ¯U<¹ @€ @€@íb]óŠmm³ö‘劕H:::²wt577‡4éáÓxk×® ³gÏ/¿ür8ðÀÃu×]Ž;î¸0}úôìžo™èJæÏŸ–,YÎ?ÿüpã�76J FÛdë¤_ƒPr  @€ @€� ˆuÍ+¶µÍ /—­�@ÒÙÙYLtU¨MÍÔ™Àe—]–%·öÞ{ïððÇ™3gf=|lå°‰®›nº)\xá…á�C «V­ª³å£;±M±NúùˆF½$@€ @€‹@¬k^±­mŽ%6Ô©�lG×ÀÀ@hmm­Ÿ^éIE:è ðè£�†Å‹‡K.¹¤ØöH‰®Á�~á„NÈ’b¿ÿýï‹u|½@l“A¬“þè#BI @€ @€�¼ ĺæÛÚfÞâR‡ d‰®¾¾¾,Ñ•&>|O`ÆŒᥗ^ Ë—/GqDq€#%º~þóŸg»¹¶ß~ûì½^ÅJ¾ŒZ ¶É ÖIÔ¡  @€ @€@îb]óŠmm3w�©ÃC’îîîBº£«©©iÈ ?G`§�v ëׯ]]]ᨣŽ*l¤DW{{{8ñÄíè*j•ÿ%¶É ÖI¿üÈPƒ @€ @ /±®yŶ¶™—xÔÏÒ]XÚ¥¡Žî»ï¾¡··7|ýë_mmmű�”èºîºëBún¯ô±‡«W¯.Öñeô±M±Nú£�%  @€ @€ò&ëšWlk›y‹Ký*�tvvÿdI�$I†žõ«!>ö±�…Ûn»-œyæ™áî»ï.Ži¸D×k¯½<ðÀðä“O†O~ò“áoÿöo‹u|½@l“A¬“þè#BI @€ @€�¼ ĺæÛÚfÞâR‡ ${ì¾GáwOý.lܸ1Ht Åi”_>ø`8ù䓳û{ß}÷…SN9%Z©DWšä:çœsÂ�wÞÒó黺Ҥ—Où±M±NúåG† @€ @€yˆuÍ+¶µÍ¼Ä£~–H·pÒw8½ôÒK¥K8Ú­­­á›ßüfØa‡§?ýéð‘�|${_WšÜ\ºtiö.®ô^7Þxc¶“+ôÇ?þñðw÷w 1þ‰Dl“A¬“þDÄ–k @€ @€ÔF Ö5¯ØÖ6kM®R-�ä®»î*¬_¿>¤‰;ºªÅ<ñí¾úê«YrëÞ{ïñ> …¬³þð‡³ÄØvÛm7ñ�Ïib› b�ôsžºM€ @€ 0 �X×¼b[ÛE((RÇÉà.žBooohkk«ãnêZ¥nºé¦ðWõWá7¿ùMÉ&gÍš®¸âŠpÑE•<ïàèb› b�ôGJ @€ @€äM Ö5¯ØÖ6ó—ú;T éîî.ôôôHt uiø_�=öXX¹rexꩧ† Â.»ì9ä�pè¡‡Ž¸ã«áa*8ÀØ&ƒX'ý †Œ¦ @€ @€êL Ö5¯ØÖ6ë,ìt§L�¤½½½�mKK‹G™xŠI ¶É ÖI¤pŽ @€ @ ß±®yŶ¶™ï(Õû¤³³³Ðßߟ½£ •ˆm2ˆuÒ¯\Äh‰ @€ @ Þb]óŠmm³ÞâNÊÈ]¡¹¹ÙŽ®òì”&0¢€É`D'  @€ @€Ô½€DWiþ`Ö¬Yu¯t0^�,Ñ•.È755ItÅF^‰®* j’ @€ @€@ $º$ºjn.5F�¤£££�fd[[[ÇØ„j”�è*¥â @€ @€�üHtItå'ZãíiÒÝÝ]èééÉ]I’Ä+aä*, ÑUaPÍ @€ @€¨±€D—DW�CÎåÆ �tuuz{{C[[Ûª«B€Àp]ÃÉ8N€ @€ @ ]]ùˆÔ¸{YÜÑ%Ñw }å$º*oªE @€ @€µ�è’èªe¼¹ÖØ’ÎÎÎlG×üùóÇÖ‚Z”�è*Éâ  @€ @€�ÜHtItå&X#îh¶£+}takkkÄ †N ò]•7Õ" @€ @€�Z HtItÕ2Þ\klI{{{aÍš5¡¥¥el-¨E€@I‰®’, @€ @€È�€D—DWn‚5âŽzGWÄ7ßЫ+ ÑU]_­ @€ @€¨¶€D—DWµcLûã(&ºÒG&I2þµ@€@& Ñ% @€ @€ä[@¢K¢+ßGï“ŽŽŽÂÀÀ€wtÅq¿�²†]5Äv) @€ @€U�è’èªBXi²ÂIWWW¡¿¿?477ÛÑUa\ÍÅ- Ñ÷ý7z @€ @€�ü HtItå?ŠÙŽ®4ÑÕÖÖÖø£5B5�èª!¶K @€ @€¨‚€D—DWÂJ“ðè ƒjŽÀ&‰®Mþ&@€ @€ �O‰.‰®|Fn\½Î]Ø××ç]qÝw£­�€DW �]‚ @€ @€@$º$ºª^š®�@¶£+]�oii©P“š!@ �è @€ @€ò- Ñ%ѕ÷ÉÇ?ñ‰Â¡‡þôOÿ4Ž%� HtÕÚe @€ @€TI@¢K¢«J¡¥Ù $ƒm>øàð³Ÿý,$IúÓ‡�JHtUBQ @€ @€&N@¢K¢kâ¢Ï•G+�Lš4©°qãÆP(F[G9F! Ñ5 $E @€ @€Ô±€D—DW‡§®ýÿÉùçŸ_¸å–[$º„� HtUTs @€ @€j, Ñ%ÑUã�s¹1$ßýÞ÷ gžqFذaCÜÝ5†&T!@ ”€DW)Ç @€ @€äG@¢K¢+?ÑoO“îîîÂi§�^xá…xŒœ@$ºª€ªI @€ @€5�è’èªa¸¹Ô’ŽŽŽÂ™gžž}öÙ16¡¥$ºJ©8F€ @€ @ ?]]ù‰Öx{š|ÿ¾û ïÜѵqãÆ�$I¼FN Â]Õ @€ @€� HtItÕ8ä\n Éå—_^¸úê«%ºÆ€§ �‘$ºFÒqŽ @€ @€@ý HtItÕ”êa²ãŽ;Ö¯_ … *( ÑUALM @€ @€˜‰.‰® ;—,S }Vaa¯½ö ½½½]X&žâF�èIÇ9 @€ @€õ/ Ñ%ÑUÿQª‡ÉûÞ÷¾ÂiƒïèúÔ§>Eƒ� HtUSS @€ @€&@@¢K¢kÂÎ%ËHº»» ===¡­­­ÌªŠ 0’€D×H:Î @€ @€¨‰.‰®ú�R=LÚÛÛ é‚|KK‹GŠ�èª ¦¦ @€ @€L€€D—Dׄ�K–)�tvvúûûCkkk™U'@`$‰®‘tœ#@€ @€ Pÿ]]õ¥z˜%ºBss³]â�@$º*ˆ©) @€ @€ Ñ%Ñ5aç’e d‰®tA¾©©I¢«L<Å Œ$ Ñ5’Žs @€ @€ê_@¢K¢«þ£T“ŽŽŽBº£Ë£ �Ê HtUÖSk @€ @€j- Ñ%ÑUë˜s½ò’îîîBOOO–èJ’¤üÔ @ ¤€DWI  @€ @€äF@¢K¢+7ÁqG“®®®Booohkk‹˜ÁÐ T^@¢«ò¦Z$@€ @€ PK‰.‰®ZÆ›k�M ¸£K¢kl€jN@¢k8Ç  @€ @€äC@¢K¢+‘w/“ÎÎÎlG×üùóã–0z�èª0¨æ @€ @€ÔX@¢K¢«Æ!çrcÈvt¥�.lmmCuUN@¢k8Ç  @€ @€äC@¢K¢+‘w/“öööš5kBKKKÜFO Â]Õ @€ @€� HtItÕ8ä\n ÞÑ54UŒF@¢k4JÊ @€ @€¨_‰.‰®ú�N=Û$PLt¥�.L’dÓq¨º@___øÊW¾–-[”)S¾ûîšššÂÅ_¦N�Zñ>¼òÊ+aΜ9¡§§'k{ï½÷é£;«ñ‘誆ª6  @€ @€ÔN@¢K¢«vÑæJcH::: i’Á;ºÆJ¨ÞX–.]Î:ë¬ðâ‹/–¬>{öì,¶ß~û•úè!]½öÚkÃe—]–[¸pa¸òÊ+‡œË� 6„#�<2¬Zµ*|éK_ ·ÜrKH�(Ñ5Mu @€ @€Ä! Ñ%ÑG¤ç{”]˜ïû—»Þ¯X±"K8¥¿ð Ãõ×_¿Õ6nܘ½GëñÇ3gÎ O=õT¶k«‚eø›¿ù›p饗†?ù“? ¿øÅ/Bº[L¢« @E  @€ @€D( Ñ%ÑaØçnÈÙ£ ÓïèÊݽËe‡¯¸âŠpõÕWg}衇ŠI¯-sÍ5×d�4L�ßÿýáÔSOݲȨ§ñ}à�†—_~9üøÇ?'žxbxë[ß*Ñ5jA  @€ @€Ä) Ñ%ÑgäçkÔÙŽ®ßþö·¡¥¥%_=×Û\ lzláN;ížþùìñ…¥²|ùòpÌ1Çd§,X-ZTªØ¨Ž�~úéáÞ{ï gŸ}v¸í¶Û²:]£¢Sˆ @€ @€@Ô]]Qÿ �“Á'ÝÝÝ…'Ÿ|2ÌŸ??']ÖÍ< ì¶Ûná™gž sçÎ «W¯v(Ï=÷\Øyç�³óóæÍ wÞyç°eG:±dÉ’l·â›Þô¦ð«_ý*¤×O?]#©9G€ @€ @€@* Ñ%Ñåß„ú(îèjnnI’Ô�õ0·ëׯoxòþ§»¬î¹çžÇ2mÚ´ìqƒGuTHwx•ûI“ep@øÝï~n¸á†ðgögÅ&*‘èJwBŽôY»vm8âˆ#²"aÖ¬Y#wŽ @€ @€�:�è’誳�Ô�Iggg!]°O]>ª)ðôÓO‡Ýwß=»Doén«‘>{ì±Gxꩧœ9sÂ#�<2RÑ’çþôOÿ4ÜrË-áè£�]]]C¹•Ht•“–è*y‹$@€ @€ P×]]u :— d;ºÒEøÖÖV$ª*�ÆÙ^{í•]có÷e wÑ´lZgß}÷ O<ñÄpÅJooo'žxbØn»íªU«ÂA4¤œD×? @€ @€(! Ñ%ÑU",ª3�,ÑÕ××—%º&MšTgÝÓ�F¨ÕŽ®W_}5{XúN®K/½4\wÝu[1V"ÑåÑ…[±:@€ @€ @ ¡$º$º* t0Iwww!Ý5ÓÔÔÔ C4¬z¨Õ;º,X®ºêª°çž{†Ç<ì´ÓN[T"ѵU£[HaiÒOúï˜wtmä' @€ @€�:�è²¶Yç!ª{ƒ]( j*°ë®»†gŸ}6Ûqµzõêa¯ýÜsÏ…�wÞ9;?oÞ¼pç�w[vËS¦L ¯½öZ8ï¼ó©§žºåéì÷'?ùÉðÌ3Ï„´?_ýêW³céûÃN>ùä’åÇrP¢k,jê @€ @€¨‰.‰®ú‰F=N éìì,lzta’$Õsœ@EŽ?þøÐÑÑ‘í²zþùçÃöÛo_²ÝåË—‡cŽ9&;—îÐZ´hQÉr¥Ž5ŽO8á„ðàƒ–jrLÇ$ºÆÄ¦ @€ @€�º�è’誛`Ô‘a’®®®,ÑÕÒÒÆš ¶u'l!pÅW„«¯¾:;úÐC…#�}¼àI'�”;÷Üsí·Þ:äüh~Ht�FI @€ @€q HtItÅýo@>F_Ltµµµå£Çz™{�‡~8{ì±aݺuaÚ´i!}œaš¸J/Y²$Üxã�ÙgÏžV®\¦OŸ>dÌ]C8ü @€ @€ @ J]]U -ÍVP éîî.ôôô‰® ªjj›K—. g�uVxñÅK–M“\Ë–- ûí·ßVç%º¶"q€ @€ @€�*HtItU!¬4Ya�dðÑq…ßþö·¡¥¥Å£ +Œ«¹‘úúúÂâÅ‹³„Vƒ;ì°C–Øš7o^¸ä’KÂÔ©SK6 ÑU’ÅA @€ @€*, Ñ%ÑUá�Ò\’ÎÎÎBöŽ®*´¯IÑ ¤É»=÷Ü3ÿÀÀ@˜5kV´N€ @€ @ �]]yŒÛØúœ%ºÒEøææf;ºb»ûÆ[U‰®ªòjœ @€ @€@Õ$º$ºªd.0n�,Ñ•.È755It�›SþC@¢ë?,|#@€ @€ �G‰.‰®<Æml}N::: 鎮ÖÖÖØÆn¼ª* ÑUU^� @€ @€¨º€D—DWÕƒÌÆ-�twwzzz²DW’$ãnPü?‰.‘@€ @€ @ ß]]ùŽà8zŸtuuz{{C[[[#6J5�èª´Ë @€ @€¨’€D—DW•BK³(îè’誠ª¦ Ht  @€ @€ù�è’èÊwÇÑû¤³³3ÛÑ5þü8Fl”j$ ÑU#h—!@€ @€ P%‰.‰®*…–f+(�íèJ]ØÚÚZÁf5E€€D— @€ @€ �o‰.‰®|Gp½OÚÛÛ kÖ¬ ---qŒØ( ÔH@¢«FÐ.C€ @€ @ J]]U -ÍVPÀ;º*ˆ©)› Htm®á; @€ @€�ü HtItå/jãëq1Ñ•>º0I’øŒ˜@•$ºª«Y @€ @€5�è’èªQ¨¹Ì8’ŽŽŽÂÀÀ€wt�QU¥$ºJ©8F€ @€ @ ?]]ù‰Öx{štuuúûûCss³]ñÆ�‘WA@¢« ¨š$@€ @€ PC‰.‰®†›K�Q ÛÑ•&ºÚÚÚÆØ„j”�è*¥â @€ @€�üHtItå'Zãí©GÆ{ï�¼Ê]UÖ< @€ @€�* HtItU9Ä4_�ìÑ…}}}ÞÑULMØ\@¢ks ß  @€ @€äO@¢K¢+Q_�³]é‚|KKK|£7bU�èª"®¦  @€ @€Ô@@¢K¢«aæãHº»» O>ùd˜?þ8›R��Í$º6×ð� @€ @€@þ$º$ºòµñõ¸¸£«¹¹9$IŸ€¨’€DW•`5K€ @€ @ F]]5 5—‡@ÒÙÙYHäÓD—•�誜¥– @€ @€L„€D—D×DÄ�k–'�íè­­­åÕTš�$ºFäq’ @€ @€@Ý HtItÕ}�ê`È]}}}Y¢kÒ¤IH¨�€DW… 5C€ @€ @`‚$º$º&(ô\¶ �¤»»»�îèjjj*£š¢lK@¢k[Bù‹Ý•@IDATÎ @€ @€¨o‰.‰®úŽP½K<ºP¨’€DW•`5K€ @€ @ F]]5 5—‡@ÒÙÙYØôèÂ$IÆÑ”ªl. ѵ¹†ï @€ @€ò' Ñ%Ñ•¿¨�¯ÇIWWW–èjii ]ñ€WO@¢«z¶Z&@€ @€ P ‰.‰®ZÄ™kŒOÀ£ Çç§6�a$º†¥q‚ @€ @€@.$º$ºr¨‘w2ÛÑÕÛÛZ[[íèŠ< ¿²]•õÔ @€ @€�Z HtItÕ:æ\¯|�b¢«­­­üÚj 0¬€D×°4N @€ @€È…€D—DW.5òN&ÝÝÝ…žžž Ñy$~Å$º*NªA @€ @€5�è’èªiÀ¹Ø˜’öööBº ßÒÒâÑ…c"T‰@i‰®Ò.Ž @€ @€È‹€D—DW^b5æ~&���…þþþì]1C;�J HtUZT{ @€ @€j+ Ñ%ÑUÛˆsµ±d‰®���ÐÜÜlG×XÕ!0Œ€D×00 @€ @€ȉ€D—DWNB5ênf‰®tA¾©©I¢+êP0øJ HtUZT{ @€ @€j+ Ñ%ÑUÛˆsµ±$…tGWkkëXê«C€À0]ÃÀ8L€ @€ @ ']]9 Õ¨»™twwzzz²DW’$Qc<�J HtURS[ @€ @€j/ Ñ%ÑUû¨sÅr’®®®Booohkk+·®òŒ Ñ5ŽS @€ @€r Ñ%Ñ•ƒ0�¾‹Å]]ÑÇ€ HtUTs @€ @€j, Ñ%ÑUã�s¹1$���ÙŽ®ùóç�¡º* ' Ñ5œŒã @€ @€ò! Ñ%Ñ•�H�»—ÙŽ®ôÑ…­­­qK=� HtUTs @€ @€j, Ñ%ÑUã�s¹1$ííí…5kÖ„–––1TW…�á$º†“qœ @€ @€@>$º$ºò©q÷Ò;ºâ¾ÿF_E‰®*âjš @€ @€@ $º$ºjf.1N�b¢+}ta’$ãlNu6 Htm’ð7 @€ @€�| HtItå3rãêuÒÑÑQðŽ®¸î»ÑÖ@@¢«È.A€ @€ @ Š]]U /MWH éêê*ô÷÷‡ææf;º*„ª©€D—8 @€ @€ �o‰.‰®|Gp½Ïvt¥‰®¶¶¶8Fl”j$ ÑU#h—!@€ @€ P%‰.‰®*…–f+(àÑ…ÄÔ�Í$º6×ð� @€ @€@þ$º$ºòµñõ8{ta__ŸwtÅwï�¸Ê]UÖ< @€ @€�* HtItU9Ä4_�lGWº ßÒÒR�æ4A€À&‰®Mþ&@€ @€ �O‰.‰®|Fn\½Nº»» O>ùd˜?~\#7ZU�èª2°æ  @€ @€TY@¢K¢«Ê!¦ù wt577‡$I*Ф&H$ºÄ @€ @€�| HtItå;‚ãè}ÒÙÙYHäÓD—•�誜¥– @€ @€L„€D—D×DÄ�k–'�íè­­­åÕTš�$ºFäq’ @€ @€@Ý HtItÕ}�ê`È]}}}Y¢kÒ¤IH¨�€DW… 5C€ @€ @`‚$º$º&(ô\¶ �¤»»»�îèjjj*£š¢lK@¢k[BÎ @€ @€¨o‰.‰®úŽP½K<ºP¨’€DW•`5K€ @€ @ F]]5 5—‡@ÒÙÙYØôèÂ$IÆÑ”ªl. ѵ¹†ï @€ @€ò' Ñ%Ñ•¿¨�¯ÇIWWW–èjii ]ñ€WO@¢«z¶Z&@€ @€ P ‰.‰®ZÄ™kŒOÀ£ Çç§6�a$º†¥q‚ @€ @€@.$º$ºr¨‘w2ÛÑÕÛÛZ[[íèŠ< ¿²]•õÔ @€ @€�Z HtItÕ:æ\¯|�b¢«­­­üÚj 0¬€D×°4N @€ @€È…€D—DW.5òN&ÝÝÝ…žžž Ñy$~Å$º*NªA @€ @€5�è’èªiÀ¹Ø˜’öööBº ßÒÒâÑ…c"T‰@i‰®Ò.Ž @€ @€È‹€D—DW^b5æ~&���…þþþì]1C;�J HtUZT{ @€ @€j+ Ñ%ÑUÛˆsµ±d‰®���ÐÜÜlG×XÕ!0Œ€D×00 @€ @€ȉ€D—DWNB5ênf‰®tA¾©©I¢+êP¨ýàûúúÂW¾ò•°lÙ²�&[§L™öÝwß,/¾øâ0uêÔ1wê•W^ ÷Ýw_øáV®\žxâ‰ðÒK/…7¾ñ�aöìÙá½ï}o¸è¢‹Â›ßüæ1_c[%º¶%ä< @€ @€�ú�è’èªïÕ»T éèè(¤I†ÖÖV"j&°téÒpÖYg…_|±ä5ÓdTšÛo¿ýJžéà/~ñ‹pì±Çf‰­‘Ê¥I¯o¼1ÛÍ8R¹±ž“諜z @€ @€êC@¢K¢«>"Q/FHº»» ===Y¢+I’‘Ê:G "?üp–ˆZ·n]˜6mZ¸üòËÃI'�ÒßK–, 7ÝtSv�4Ù•îÆš>}zY×|ï\x×»Þ•ÕI^øÀÂ;ßùΰË.»„§Ÿ~:|ûÛßή±qãÆ°ÝvÛ…4éö¾÷½¯¬kŒ¦°D×h””!@€ @€ P¿]]õ�z¶I éêê*ôöö†¶¶¶MÇüM ªÇ|ÜI¶ß~ûÐÞÞŽ>úè!×»öÚkÃe—]–[¸pa¸òÊ+‡œßÖ�ÁämX¼xqHë¾ýío/Yü»ßýnøÐ‡> …Bö¸Ä_ÿú×t§DWIz  @€ @€äF@¢K¢+7ÁqG‹;º$º"Ž‚}ÅŠáÈ#�Ì®xᅆ믿~««§;­æÌ™üñ0sæÌðÔSO…É“'oUn¼>úÑ�†»îº+kfÕªUáÐCo“CêKt áðƒ @€ @€@î$º$ºr´v8|Ì[¶£kþüùß�k-pÅW„«¯¾:»ìC=TLzmÙ�k®¹&{¤azüþûï§žzê–EÆýûïÿþïÃ%—\’µsç�w†yóæ�»ÍÍ�èÚ\Ãw @€ @€ù�è’èÊ_ÔÆ×ãlGWúèÂÖÖÖøFoÄ5ØôØÂ�vÚ)<ÿüóÙã Kubùòåá˜cŽÉN-X° ,Z´¨T±qû›¿ù›p饗fm¤;»>üá�«½-+Ktm)â7 @€ @€�| HtItå+bãìm2øŽ¤Âš5kBKKKœF]S�ÝvÛ-<óÌ3aîܹaõêÕÃ^û¹çž ;ï¼sv>Ýi•ôçÌ3Ï ßûÞ÷²f{ì±pÀTô]åÔ @€ @€�š HtItÕ<è\°lïè*›L…± ¬_¿>¼á oȪŸ~úéáž{iÓ¦…—_~9uÔQ!ÝáUÉÏÏþópØa‡… 6„w¼ãá¿øEÙͧ‰¬‘>k×® GqDVd`` Ìš5k¤âÎ @€ @€ Pg]]u’ºSB ˜èJ]˜$I‰"¨ŒÀÓO?vß}÷¬±æææ°dÉ’Þc�=ÂSO=æÌ™yä‘Ë–sòÕW_ Çw\X¹reV-ÝÕõÁ~°œ&²²åüû"ÑU6¯  @€ @€L�€§UM¼ËŽI éèè(¤‹ðÞÑ5&?•ÊHãl¯½öÊjœ}öÙá¶Ûn±vZ6­³ï¾û†'žxbÄ²åœ¼à‚ ÂÍ7ßœU9÷Üsí·ÞZNõbY‰®"…/ @€ @€4�€DWÝ̆’tuuúûûCºÃ¦œ…ûl ±Âõ°£ëꫯW\qE6²Ã?<üøÇ?;í´Ó˜FêÑ…cbS‰ @€ @€�:�èªó¤{C²]i¢«­­mÈ ?TZ`¢ßÑuà 7„‹.º(Öþûïw3†]wݵÒÃ,¶g2(RøB€ @€ @€@ެmæèféjðèBAPS�4±ôì³Ï†¹sç†Õ«W{íçž{.ì¼óÎÙùyóæ…;ï¼sز£9qÇw„³Î:+lܸ1ì½÷Þ¡³³3Ìš5k4UÇ\Æd0f:  @€ @€˜@k›ˆïÒe d�.ìëë󎮲éT‹ÀñÇŸí¤Jøüóχí·ß¾d3Ë—/ÇsLvnÁ‚aÑ¢E%Ë�æà÷¾÷½ð‘�|$¼þúëá-oyKvýô½_Õþ˜ ª-¬} @€ @€ª!`m³ªÚ¬–@¶£+ Ú–––j]C»Šéû±Ò÷d¥Ÿ‡z(yä‘Ås›¹æškÂå—_žºÿþûé§žºùéQÿÑ�~N?ýôðꫯ†]vÙ%üä'? xà¨ë�§ É`zH•k¯½6\vÙeÙ±… †+¯¼rÈù|0œtÒIÙ±sÏ=7Üzë­CΧ?Ò÷¥eÒÇ#¦�ILw…{ì±[•«æ“A5uµM€ @€ @€@µ¬mVKV»ÕH:;; iЦ‰.µxøá‡³¤Óºuë´iÓBú8Ã4)•þ^²dI¸ñƳnÌž=;¬\¹2LŸ>}H·¶•èúÍo~“½ß+Ý –~¾üå/‡÷¼ç=CÚØòÇî»ïÒ?•ü˜ *©©- @€ @€j%`m³VÒ®S �lG×ÀÀ@hmm­D{Ú 0*�¥K—†³Î:+¼øâ‹%˧I®eË–…ýöÛo«óÛJt¥;¼Î;ï¼­ê�t Ôα‘Ê�æœÉ`4JÊ @€ @€ PoÖ6ëíŽèÏHY¢«¯¯/KtMš4i¤²Î¨¨@w‹/ÎZé8wØa‡,±5oÞ¼pÉ%—„©S§–¼žDWI  @€ @€ P‰®Š0j¤FIwww!ÝÑÕÔÔT£Kº �8LqÜg£$@€ @€ ÐhÖ6íŽ6öx<º°±ï¯ÑM €É`ñ]š @€ @€�1 XÛ3�Š �tvv6=º0I’ è‚KhL“AcÞW£"@€ @€ ÐèÖ6ý7Öø’®®®,ÑÕÒÒ$ºëæÍÄ ˜ &ÖßÕ  @€ @€›€µÍ±¹©51]81î®�€É ‚›lˆ @€ @€PÀÚfÞÔR¶£«··7´¶¶ÚÑÕÀ7ÚÐj/`2¨½¹+ @€ @€ 0~k›ã7ÔBíЉ®¶¶¶Ú]Õ•D `2ˆà&" @€ @€�°¶Ù€7µ�‡”twwzzz‚DWßeC›“Á„°»( @€ @€ã°¶9N@Õk*�´··Ò miiñèšһX£ ˜ ý @€ @€�ư¶Ù˜÷µQG•tvvúûû³wt5ê �‹ÀD˜ &BÝ5  @€ @€¯€µÍñ ª_K�,Ñ500š››í誥¼k5¼€É áo± @€ @€hHk› y[vPY¢+ Ú¦¦&‰®†½Í6&ƒ‰PwM @€ @€Æ+`ms¼‚ê×R éèè(¤;ºZ[[ky]×"Ðð&ƒ†¿ÅH€ @€ @ !¬m6ämmØA%ÝÝÝ…žžž,Ñ•$IÃÔÀÔZÀdPkq×#@€ @€ @ Ö6+¡¨�Z $]]]…ÞÞÞÐÖÖV«kº�(LQÜfƒ$@€ @€ ÐpÖ6î–6ô€Š;º$ºú>ܘ &Ý%  @€ @€·€µÍqj †Iggg¶£kþüù5¼¬Kh|“Aãßc#$@€ @€ ЈÖ6ñ®6]é£ [[[w”FF`L€î’ @€ @€Œ[ÀÚæ¸ 5PC�¤½½½°fÍšÐÒÒRÃ˺�Æ04þ=6B @€ @€�(`m³ïjãŽÉ;º÷ÞÙ ˜ &ø¸< @€ @€c°¶9&6•&H ˜èJ]˜$ÉuÃe 4ž€É ñî© @€ @€ˆAÀÚf w¹qƘttt¼£«qî©‘Ô‰€É Nn„n @€ @€ P–€µÍ²¸ž`�¤«««Ðßßš››íèšà›áò�%`2h¬ûi4 @€ @€b°¶Ë�nŒqf;ºÒDW[[[cŒÈ(Ô‰€É Nn„n @€ @€ P–€µÍ²¸ž`�.œààò�+`2hÜ{kd @€ @€YÀÚf#ßÝÆ[öè¾¾>ïèj¼{kD,`2˜ààò @€ @€ŒIÀÚæ˜ØTš �lGW´---Ô—%И&ƒÆ¼¯FE€ @€ @ Ñ¬m6ún¬ñ%ÝÝÝ…'Ÿ|2ÌŸ?¿±Ff4&XÀd0Á7Àå  @€ @€“€µÍ1±©4AÅ]ÍÍÍ!I’ ê†Ëh<“AãÝS#"@€ @€ ƒ€µÍîrãŒ1éìì,¤A›&º|¨œ€É r–Z"@€ @€ @ vÖ6kgíJãÈvt „ÖÖÖñ·¦Š&ƒ"…/ @€ @€äHÀÚfŽn–®†,ÑÕ××—%º&Mš„„� ˜ *© @€ @€j*`m³¦Ü.6N�¤»»»�îèjjjgSª °¹€É`s ß  @€ @€È‹€µÍ¼Ü)ýL<ºP¨’€É J°š%@€ @€ @ ªÖ6«Ê«ñ $���…M�.L’¤ÂÍkŽ@¼&ƒxq @€ @€ȳ€µÍ<ß½øúžtuue‰®––– Ñ_qõLÕ³Õ2 @€ @€Õ°¶Y=[-W^À£ +oªE™€É@  @€ @€ �Gk›y¼kñö9ÛÑÕÛÛZ[[íèŠ7Œ¼ &ƒ* j’ @€ @€�ª XÛ¬:± TP ˜èjkk«`³š"@Àd Æ#ðìK¯†Ãþò�!M¬úâ{Â.Ó¦ 9æ @€ @€�J XÛ¬´¨öª)�twwzzz‚DW5™µ£€É Æ»^¹1KtUÎRK @€ @€å XÛ,ÏKé‰HÚÛÛ iж´´xtáÄÞ Wo0“AƒÝÐG¢«Æà.G€ @€ P°¶Y¤ð%Iggg¡¿¿?{GWú«‹r#`2ÈÍ­ªËŽJtÕåmÑ) @€ @€@Ö6£¸Í 3È,Ñ500š››íèj˜Ûj õ `2¨‡»�ß>”Jtýä3G…ã�<4¤ÿsÂ.»ìüñ°Ûn»�8Èÿú_ÿkøÛ¿ýÛ¬Ìÿú_ÿ+œwÞyÙ÷|0œtÒIźӦM ¿ûÝïÂÔ©S‹ÇJ}Y·n]xó›ß^|ñÅâéÿøÇáÄO,þN¿T»ý!ü±fÍš0kÖ¬ìðÏ~ö³pÈ!‡dßßúÖ·†¾¾¾-‹û{ÆŒáùçŸr~˱l~ò oxCvÒë555e¶ß~ûÍ‹d߯¼òʰhÑ¢ì{)¯-+¼öÚká®»î ßÿþ÷Ê+ÂÓO?�™§ýÛ{ï½ÃG>ò‘�„“O>9Lš4iËê[ý>õÔSÃøÃð©O}*,^¼8;¿yŸ¶ª0Ì�»ï¾;üçÿüŸ‡œÉx‡v;ï¼s˜3gNV/�¿‘bì…^÷ÜsOxà�Bz{{{Ã+¯¼fΜ™µñ�| œþùÙï!�ðƒ @€¨¨€µÍŠrj¬Ú鎮%K–6nÜXð!@ rƒ äÂà¿¿ÙŸô»�ržùÃúÂÞŸ¿gÈŸôزeËŠqÕÚÚ:b“=ôPa0 ’•?å”S†”L¶ÛÙ§ÿçÿüŸ!eJý¸ãŽ;¶ª—¶µå§Úíoy½ë¯¿>ë×`²kÈ©Á¤ÐVýÝ4ÞR&’†ÔO”K©ºé±Ã?¼°víÚ­ÚX¸pa±¥¼6¯0˜à* &�Šå‡»Vz|öìÙ…ÁÄÐæÕ·ú>˜”, &œ²ö“]Åó›÷i¤kl~n0ÑU¬¿éK9Æûì³Oá_þå_6Uò÷½÷Þ[˜2eÊ6Ç=˜h-üó?ÿó�º~ @€ @€•°¶YYO­UW éèè(¤;ºLײ|¨”€ÿë¡R’q¶SjGת/¾'ì2mJ˜?~øÆ7¾‘Á¤»_N?ýô­�ÒA‡vXøå/™í IÿþOÿé?Ëm¾KiÇw ëׯ§�vZ¶ƒ¨X¨Ä—ôZƒ ‰°©NZd0q3⎮Me+Ùþ–]Kwú &ÃE]þñÿ±xzÓn£?ú£? ÷ßñøp_¶Ûn»pÀ 9½¹ÕÇ?þñð‰O|¢xþ¥—^ +W® ý×�í>JO¤»­“ŒCvIo¾{ª”צ¯ºêª°`Á‚M?Ã`‚2œqÆáío{¶‹é÷¿ÿ}øÕ¯~–.]šíÐüŸTÂܹsÃêÕ«‹u¶üò­o}+Ì›7/¼ñ�o Ï<óL˜¥»ý“t[VÝêwº›lúôéCŽ�dœîLû{ÓM7…Áw‚fõöÝwßðè£�†Á¤Ö�vn¿ýöpöÿÇÞ}ÀIQ¤šœTN "¢¢"p"DA”¤ò ›1¢¢€˜EDÁ@0a8õ“÷Þ{/ ›ï)'/Íì 6ùޝS§Ží °”QpeåÊ•v×®]mO0¨à®€õ�šr=Á®€íáÔ)à€ +á:tÈö oékŸ'P[¨4í]>tèPÛ3Ôd¡}Þ S§Nõ•ázÓ»™W@@@pY€g›.ƒR\TôÑ&ÐÕ³P8I(À‡A^t›*Ð¥§™9s¦ï�¿§‡QÀ™=½e|CÕyzÙd(˜üƒ7Ï=÷œ­ÃÁiàË)(æ=Ö3×—É£yõo Ì)píò½uÒ×wß}×ÔÅÓËÇöô òße‡„ 8ÀaÅ¿-Á]zØóÏ?ï3)xMŠ *y¾%ekýÕ´zõê¶gþ5‡šÞ¤×Vï…`I÷{ƒ¢/½ôR@¶¢ê�9ÄJ¸Æž^h>ÏÜq!J ½«uëÖ¦–Sƒ¾$@@@p_€g›î›RbôÄÛ£+z§ d’S€ƒä¼înµº¨@—žÇ3´›yàoY–­ÃÐjÒÀF»víÌvÏuöW_}e¶üÏ?xóÏþÓÖÀƒYZ¶lY0«oýÌ3Ï4y†në1ẢQ¾¯Rž…!C†˜ºx†øóßl–à Â:Ðoƒ¿U¨@—ö°òšx†xô+Á¶‹ *ÝvÛm¾c=à [’ý2‹ÖÉ)(TT�Â=o¸Æžá3}m, ÷\šïöÛo÷•³dÉ’H%/ € € €„)À³Í0¡È’••e{æÅˆ‹ÊP Ê’eéjƾ-áºÖ­[gרQÃ<ôoÒ¤‰í™gËööºÒàÆ=÷Ü´âþÁ D}ùå—¾à�$ &í%æ â,_¾<â@—Ûå{ë§ÃîÖ«WÏÔÍ3”w³ï5Ü Œï‡«P�®U«VùŒ4éŸB•´ Þ^WÚ›Ëi(Jÿ²"Y¾ãŽ;L�:tèPè°Pu*”9Ćp�uXIï=4qâÄ%†ÞuÓM7ùÊùâ‹/Bgf/ € € €K€g›Åbã R0=ºœæÊ(¥úpZÊŒeæR–JC tiŦL™â{è?xð`3ì�N;í4ø Vyÿà�º45kÖÌ”5jÔ(³îÿŸ7`Ò¼ys³Y�ñ-´¬‚)Úå{Ï·téRSíÕ¶yófïfßk¸Aß þm èzóÍ7}&W^ye@I¡‚Jþ=Á È )ÆŠ÷š:–BÕ)’S…c¬Á¼.]ºø®•N‹›N?ýtSŽöXܹsgq‹á8@@@!À³Í8ìŠ;+33ÓÞ´i“¤¥¥yžY’@À-Ïœ;Ò ASœçƒAŽ?þx·Š¦œ$ؾçOi5þ〖~qwW9¦Få€mž‚xzëÈâÅ‹}Û=ÃÔ‰g(Ciß¾½o[Á… HçÎ�ÍfOÐJ®¸â yøá‡Åä2÷íúõëÅ<2û=Ÿ\â fˆÞÇšgĈòâ‹/Š'°fö{AÒ©S'³ìý/Úå{Ïã ÖÈ}÷Ý'žy›Äôònö½žtÒI¢m9î¸ãäÃ?ôm¶P§NÑþÉ¿-z¾±cÇúï6Ë”Ž;ú®ÃË/¿, ðåÓcÆ�gÖ z½úê«rùå—›}wÝu—Œ?Þw\Irssåä“O6Exzé‰'èPœ�^xáiÓ¦MÀþ‚+•*U’Æ�Ü,¡Œ=½ eõêÕâ™ÓM´ÝšôóÞ •ÎO¯0éÕ«—ɪ¯žy¿Â9Œ< € € € ¡Ï6##{é 0GWÜ©Pà[eäB–R3ÂíÑ¥ÕÓy¸<Ÿ$¾7Þxc‘µöï¥äíÑåùÆÌå¤e}úé§¾2tY·é=§#éŸô8ïyµ<ÿäß+O—ÝJS§N5çlذ¡c‘þuòÖ-Ô«¶Ë)…kܶm[{öìÙNE„µmûöí¶÷\åË—7Ãm†u ™@@@@ bžmFLÆ¥(`†.ô|›ÜÖa…H àžîY&cIN�®¯s÷8R<õÔS¾ Š*&L˜à˜Ï£ðÆèÒýÞáåtDoÒe-·k×®ÞMÅ téÁn•¯eià̘Ñ9Àœ’70âÍWÔkÁ@––éoUÔñžÞ`¶ÎaV0ù• º<=¸|íðô|*xh±×/¸àSî°aÃËð¯SQíÒýjé”Â5Ö@©ÞC˜�4yzÌÙ:¬£·žN×)Ò2É� € € €Áx¶܆=ñ' Ã[ÙÌц%¾‰ K£‡åÛO¼¹Õ>ý†%ö‰£æü;aÄ<ûŒ–™ýšO“{Ž<òH_@U«VµüñÇ�Õ÷Þøº^zé%S––ùǘGq„ÙæŽÏW¦ã : Üh¦h—¯çxúé§M<Âêªcòa‚i*°Ñ¿-Þ6|Õ^Sž!í_~ù¥ÀÑ­ú• zE£G×®]»lÏPƒÆgþüù×Éñ€ C8pÀÜ£zïx†84õÑ{K÷ˆ$]sÍ5¾ûÍ3d¡­�/ € € €DO€g›Ñ³¥d÷¬ììl{Æ ’ššê›�Åó�„%𠘣«„†Évø›Ÿì”Qo­�ü#÷Ùôr»jÈC—�!3§ 0óé|ZÞ9¶tÞ.OÏ)ùøãÀ9¾ü õŸwÊ´2sté~ÏP|R·n]ñ¹ä_ÿú—x>v$##CªW¯.ž ŽyÕ|Å™£ËÍòµ,�£Içl:t¨x‚^º©PòÎå ÆÈºuë ígƒ¿Õu×]'×_½9LÍ«T©"µjÕ’£Ž:*dQþóay]sšùÏÑuç�wÊ<²¬pvΚ5Kúõë'ž ¥x†ü“Š+:,T� e±!\ãŸ~úIš7o.¿þú«™óÍŒ• *„(ù¯]£G�öÍé¥ó é\kž`n‘Ç‘@@@Š/À³ÍâÛqdì,ýVµºôA& ÜàÃÀ=Ëd(iÊë[åÑ%_ˆUéPØÍݳ2K¶¿?Ñä¿öÚkÅ3„¡x†©“iÓ¦™mþ¬‚…úo æ»üòËEƒ/=zô0�®>ø@tÛÌ™3}Å7Ð¥¸QþÞ½{å˜cŽ}�;w®ôìÙÓW7ÿ…pƒ0þÇ\ö·òôÌ EšB•¾þúkùÇ?þaŠô Ï'ê]ÒtÅWˆ§wžôíÛWÞ|óMÇâBÕÉñ€ #1¾å–[ÄӃ͔¤«nݺ)õ¯Í=ô�ÜqÇfÅ3›h�ÐÓ#,ä1ìD@@@�’ ðl³ä†”;èòtC”ôôôØ�•3!�|$ÁEv©‰Ú“ëöy‹" rÚ»[6?w�äÿñ›]ë8É]ó� ìÞ½[š5k&ús]Aß}÷�Ô®]»PMýƒ7]}ô‘\xá…¾Þ6žaâD·yæ|ò•S’@—åÏ™3G.¾øb©V­šé±¤=«œR$A§ãu›¿U4]ÚkÎ3·—lÛ¶Íô˜Û¼ys‰‚9Ú£ïØc�•­[·š`×À�›V�.íy§½â4Mž¼`SÂ^ÏÉÉ‘:xî‡rf¸IZÑ)•F kúôérÓM7™êLœ8QF�åT5Ó{pРA¦GáÉ'Ÿ¬ó‰šûÐ13@@@@ÀužmºNJ�Q0=ºô¦MKK‹âi(�äàà ù®yqZüä¬mòð²ÿFtèÞÜ/eË÷šcª�ÚAj_:ZFµi'×]vŒ¯�wñ�7Þ0ëÿùÏL-ßNÏB¨@—æÓ„wˆ9nNƒþ©$�®’–¯= êׯ/ˆÓ`×ÕW_í_µ€åD tmÚ´I7nlæFÓùЖ-[&Mš4 h‹ÓŠöÞÒ¹Ôú÷ïïÛí�ÓJƒ]YYY¾íJ#ÐåRQë¢X§a“gÏž-)))¢Ñã�?Þ¹ô:’@@@@ v<ÛŒ�5g*¹€åùæ·½víÚ€‡d%/–@€î�pZÞø…ì¨ñs8YMžüýûdó 7È¡�¿H¹*5丫ž’ò5þ&Gï©'_N?ÓWÎ/¿ü":ÜÛŽ;Dƒ:”P¼©¨@—7_°×’º‚•ëݪ| µiÓF,Ë Õ«WÏ{X¡Wm»öZ>ñÄeݺu…ö‡³Áß*Czë =뮼òJ³ªCj ò¼óÎóî.ôúí·ßŠ!·lÙ"+V¬ðíoÞ¼¹|óÍ7òàƒúæ·òíô[ˆu ëË/¿”öíÛËŸþ)•*U2½µ�þI‡µÔÞˆû÷ï7Ã9êp…§žzª–@@@@ <ÛŒ2§pMÀ×£K¿ý¯ I àŽî8–åR6o= gOš/V9;ìfþúñ ÙýÅ{&ÿ1݇I�Ó»™e;ß’E#.�ãjWô•õüóÏûz;éPxÞ¡ñ4ƒð¦àÐ…¾B,„ DE»|o€¦uëÖ²téÒµñºtøÅ?ü0d^ïÎF�‰ÿœ_þVÑ téùï¿ÿ~¹÷Þ¿zëéz·nÝä’K.1AËš5kʯ¿þ*«W¯–yóæ‰öÔÓ^O-Z´ðº4˜×°aC=Ô7u¾¶`Éë¨û_xá< –×»]‡AÔù¿üS(c­Ÿ]?þøcyâ‰'L�5=ö®»î’ñãÇû#‹/–.]º˜<+V½ÇN?ýô€<W´Ç—º�@@@@À]žmºëIiѰ<ÃÙzÓj ‹„î ðaàžeY-é?9»åÚ÷2ÃnÞŸ›VÉϯޱó¥Ê‰§KÝ´ Ç>sɹráÙGø¶é矾 j•/_^–,Y"gžùW¯/ÿàM¢ºZµj%Ú;hܸqA!_Ãý¼A¿ME.._¾\Î8ã _>«hºô¤:tßm·ÝV4 d=úè£& ¦ÇN›6M† f‚]Ú[;Tòt…Êç¿ïæ›o–ÇÜ“/˜°1ÈŠ~¡Fë÷Øc�úrMqêSœ{7HÕØŒ € € €~<ÛôÃ`1îL�®¼¼Å ,Eè*W®œqÄròÉ'‹ÎvÕUWýëVœúçÞõ?'Ë € € € à,À³Mg¶Æ§€ téü%èÒR$pG€wËr)‘öè*Ê¢`�®¢ò'âþgžyF®½öZ©_¿¾è{ŒtX@a:´ Ét®« .¸àðN–@@@@�x¶YK]ÀÊÉɱµGWJJJ©W† P–ø0(KW3:m)Î]ÁjbòÌÑ52pŽ®`yy{ïÞ½eîܹ2tèPyúé§¹)®×ý­·Þ2½¼´Õ¶mÛ¤R¥J®Ÿƒ@@@@ 9x¶™×¹¬´’¡ ËÊ•¤q'À‡AÜ]’¸¬PË¿�5~.qÝŽÞSO¾œþ×ü[%.,Ž xøá‡å�?þ�>}úH‹-⸦±¯šöâò|yÅÌÏ5hРØW€3"€ € € €@™àÙf™¹”IÑ+++Ëö]è?ÏGR´žF–ª€ÞwS§N•yóæ‰ö*¬\¹²œrÊ)¦wá 7Ü ÕªUs¥~:ÇÍŒ3Ì<7[·n•ÚµkK›6mäšk®‘îÝ»»r§Bø0pRa[A�'gm“‡—ý·àæˆ×Gµi'×]vLÄÇq € € € €x¶YP„õx°²³³M +--MtÅó¥*[u›3gŽ\~ùå²k×.dž5nÜØÀ5jä¸?œ�ùùù&˜õüóÏÍ~õÕW‹Îù�ùéø0ÊÎ?�ü|[ݘ)ùGîñÛÙb¹]GÈ�Ó;zîc+²É� € € € €€ƒÏ6PØ· ]·—¦ìVlùòåÒ¡CÙ»w¯Ô¨QCF�-�;w6믿þº<û쳦ñìZ¶l™è|3ÅIZîĉÍ¡-[¶”‘#GšckÖ¬þLë¡IóM˜0Á,»ùnj–í²Þüd§Ü>o‘X•EÜP{y™Üólé×娈�å@@@@œx¶é¤Â¶x0=ºÖ­['éééôèŠ×«TÆêuî¹çÊÂ… ¥B… ’™™)gŸ}v@ 'Mšd‚Rºq̘12vìØ€ýᬬ^½Zš5k&”Ö­[›óT­ZÕw¨ÎñsÞyç™@šÖã»ï¾“’ôóì·À‡�‹E Ly}«<ºä‹ˆ‚]äÞ¶•ÜœV»ÈòÉ€ € € € €@¸<Û WŠ|ñ à teddÄC}¨CX²d‰œuÖY¦•C‡•§Ÿ~ºP‹uÈÁæÍ››àSÍš5eË–-R±bÅBùBm¸þúëå©§ž2Y-Z$íÚµ+”}ñâž ›æâ‰' å)É> J¢—œÇjÏ®Qo­kC®ð¡ËZГ+9oZ� € € €DU€g›Qå¥p—¬3fØÕ«W].ËRœ£À�wÞ)>ø Ù§�&oЫ`frP‡Ôôá‡J·nÝ f ºnÛ¶üñ²yófiÒ¤‰ ˜ˬû¿ÿþ{©_¿¾äåå¹Ú«‘ƒ`êl% sv=óö¯òô‚µ²³ú–€¬ö!KŽÙ{¬ é|¢ ís4srè°‚ € € € à–Ï6Ý’¤œXX•*U²G�¾Ã3DÜXWòÇ¢òœ#ñ¼Ãjpõ·ß~3Ã:µB{aµoßÞìº÷Þ{eܸqNÙ·­]»ÖÌÅ¥;ƒõó¨û=Á^³ªÇ5lØÐ»«Ä¯|”˜0© ؾçOi5þãƒy×v’f'UØÆ  € € € €n ðlÓmQÊ‹¦€å)Ü®^­ºìù}O4ÏCÙ�Úµk˶mÛ¤E‹²bÅŠ *;vì�£�>ÚìïׯŸ¼ñÆAóÜ1wî\éÝ»·ÙüØc�É-·ÜR0‹o]÷>ܬϛ7OzôèáÛWÒ> J*˜ÜÇ;º¾¸»«S£rrÃÐz@@@@�¨ ðl3êÄœÀEëÄO´×¯_/:/’eiÜ‹„@töíÛ'U«V5…÷ìÙS4 *Õ¨QC~ÿýw3¿–öð 7é¼_×]w�Éþæ›oJß¾}ƒ:kÖ,Ñ@š&=N{x…›ô‡}¨ôÓO?IÛ¶mMQ‡S$!®�®p¥È‡ € € € à¶�.·E)/šÖUW]e?ÿü󺢩LÙF`ëÖ­R§N³œšš*¯¿þzH™ºuëÊ–-[¤yóæ²råÊ�yýwNš4IFŽi6}ðÁrÑEùïXÖýÞ^\“'O–Ûn»-`¨•HúBI²ÏI€@—“ Û@@@@b!@ +ÊœÃ-ëþûÇÛ÷Üs·Ø¶íV™”ƒ€£€{N8á³oÀ€òòË/;æónÔ¼zÌ)§œ"?þø£ws‘¯÷ß¿è¼^š>ùä9ÿüóƒóé§ŸJ—.]Ì~=îî»ïš·à]EXwS€@—›š”… € € € ‰�®H´È[Ú–§÷‹=bÄzt•ö•H‚ó—µ] ]˜7m)6‘@W)âsj@@@@ Ét%ù �`Í·®½î:ûé§ž¢GW‚]¸D¬nY›£«¨kÀ‡AQBì%@ +”û@@@@¢)À³ÍhêR¶ÛVófÍí¯¿ùš@—Û²”ç(P«V-Ù¾}»´hÑBV¬Xá˜G7îØ±CŽ>úh³¿_¿~òÆoÍ[pÇܹs¥wïÞfóc�=&·ÜrKÁ,¾uÝ?|øp³>oÞ<ß|]¾ %Xààx*º¸ @@@@JK€g›¥%Ïy‹#`y²+T¨ (Îñƒ@Dçž{®,\¸PªW¯.¿ýö›è½ç”-Z$íÛ·7»t¾­qãÆ9esܶvíZ3¯—î:t¨<ýôÓŽù¼ûg̘aöëq 6 š7Ò|D*F~]þ,#€ € € €ÄR€g›±Ôæ\%°<ɾá†dÚ´i%-‹ã(RàÎ;ï”|Ðä[¼x±œuÖYŽÇLœ8QF�mö}øá‡Ò­[7Ç|NmÛ–ã�?^6oÞ,Mš4‘ï¾ûÎ)›ÙvÚi§ÉªU«¤~ýú’——'ž÷Cм‘îàà R1òû èò×`@@@@ –<ÛŒ¥6ç*©€uÏÝ÷ØM›5•´´´’–Åñ)°dÉ_p+Xo«üü|iÞ¼¹ PÕ¬YS¶lÙ"+V,²lÿ ×_½<å™{N“ök×®�ÿn³¬�¶³Ï>Û,kþ'žx¢Pž’làà$zK ‹{@@@@ ´x¶YZòœ·8VNNŽ�››+Å9žcˆXÀ;|¡[˜™™é 6y š4i’Œ9Ò¬Ž3FÆŽëÝe^,X �;w6˃ ’_|1`¿®¬^½Zš6m*‡’Ö­[›óT­ZÕ—oïÞ½¢õX¶l™>ñÛo¿•¿ÿýï¾ýn,ðaà†bò–A +y¯=-G@@@J[€g›¥}8$¾@Wzzº«Ã¶ER ò&—ÀòåË¥C‡¢Á¦5jˆg¨�+]ýõ×Å;gVãÆ�M êˆ#Ž 'Ð¥èЇ:¢¦–-[ʨQ£ÌÜ]kÖ¬‘‡zH´š4ß„ ̲›ÿñaà¦fò•E +ù®9-F@@@âE€g›ñr%¨G8ÖÂ… m�›H]$b%0gιüòËe×®]Ž§Ô ×¼yó¤Q£F…ö‡èÒ!‡ "/¼ðB¡2¼®ºê*X+W®œw“k¯|¸F™”èJÊËN£@@@@�¸àÙf\\*¦€•��moذARSSéÑ&ÙÜX¿~½L™2Å´ôg¥J•L`«_¿~rã�7JµjÕOn Ë{ðûï¿o‚YK—.•mÛ¶I­Zµ¤M›6¢s„uïÞÝ›ÍõW> \'¥@@@@@ˆ�Ï6c€Ì)\0=º4ÐÅ]®™RF€n@@@@HDžm&âUKÞ:3taò^{Ze> ¢ Lñ € € € € žmF…•B£$`†.Ô!䘣+J›´|$í¥§á € € € €$´Ï6úò%]åM�.½iÓÒÒ’®ñ4�h ðaM]ÊF@@@@�h ðl3Z²” +''Ç^»v­ôïß?åS&I+À‡AÒ^zŽ € € € €@B ðl3¡/_ÒUÞ×£+55U,ËJ:Œ@´ø0ˆ–,å"€ € € € €@4x¶M]Êv[ÀÊÊʲõ¦Õ@ ÜàÃÀ=KJB@>fá@IDAT@@@�Ø ðl3vÖœ©ä¦GW^^ž¤§§—¼4J@Ÿ> @@@@@ �x¶™@‹ªŠ t­_¿ÞºÊ•+ ¸$À‡�K�ƒ € € € €1àÙfL¹9Y ¬œœ[{t¥¤¤”°(G> ü5XF@@@@�DàÙf¢\)ê© ]È}€@”ø0ˆ,Å"€ € € € €@Tx¶U^ wYÀÊÊʲ½CZ–årñ‡@ò ða�¼×ž–#€ € € € �È<ÛLä«—|u·²³³M +--Mt%ß @‹£'À‡Aôl)@@@@¢'À³ÍèÙR²û ]è¾)%"`ø0àF@@@@@�DàÙf"^µä­³éѵnÝ:IOO§GWòÞ´< |D•"@@@@@ ê<ÛŒ:1'pQÀèÊÈÈp±XŠB> ¸@@@@@ x¶™ˆW-yëlåä䨹¹¹B +yoZ> ¢ãJ© € € € € ]žmF×—Òݰ233m½iÓÒÒºÐ][JKr> ’ü ù € € € €$¨Ï6ôÂ%iµ­¬¬,{Æ fŽ®$5 ÙDE€ƒ¨°R( € € € €DY€g›Q¦xWL +//ORSSéÑå*-…%»É~Ð~@@@@S€g›‰yÝ’µÖ&Ð¥7mJJ �®d½ hwTø0ˆ +…"€ € € € €@”x¶e`ŠwUÀZ¸p¡­=ºÒÓÓ]-˜ÂHv> ’ý ý € € € €$¦Ï6óº%k­­œœ;77׺,ËJVÚ�€ë|¸NJ� € € € € žmÆ™S¸&`eggÛëÖ­“ŒŒ × ¥ áÀ»@@@@Q€g›‰xÕ’·Î¾]º’÷& åÑàà :®”Š € € € €ÑàÙft})Ý]+++Ëôèêß¿¿»%SI.À‡A’ß4@@@@�àÙf‚^¸$­¶éÑ¥C¦§§')ÍF :|DÇ•R@@@@@ º<ÛŒ®/¥»+`effÚ›6m’´´4wK¦4’\€ƒ$¿h> € € € € *À³Í½pIZmæèJÒ O³£/À‡Aô�9 € € € €¸/À³M÷M)1z¾@—]hYVôÎDÉ$™IvÁi. € € € €eD€g›eäB&I3¬… ÚyyyÌÑ•$œfÆN€ƒØYs&@@@@pO€g›îYRRô¬ììl{Æ ’ššJ�®è{s†$X·n�4lØÐ´xÉ’%R¯^½$j=ME@@@@�Døé§Ÿ¤mÛ¶¦ú¹¹¹rÒI'%jS¨w˜]èÊÈÈH‚æÒDb'°téR߇AìÎÊ™@@@@@÷ôKümÚ´q¯@JBÀe†.t”âð èòJðŠ € € € €‰*@ +Q¯\òÔÛ ]¸~ýzæèJžkNKc$°oß>Y¹r¥9[íÚµ¥B… 1:3§A ~ü»½3¤gü^'jÿ¼—âÿQÃÄཔ׉ZÆ¿ï¥ø¿FÔ01x/%Æu¢–ñ/À{É�ktðàAÙºu«)ìÿø‡T©RÅ�‚)�(˜]:±\ZZZЧH@ 0‘éa –(‰ï¥’èq,‡x/¶` �’ð^*‰Ç"pX€÷Òa –(‰ï¥’èq,‰)`åääØk×®•þýû'f ¨5 €@ÂðËfÂ\**ç¼—âüQ½„པ0—ŠŠÆ¹ï¥8¿@T/ax/%Ì¥¢¢q.À{)Î/ÕC ¾]©©©bYVNA‘ €ü%À/›Ü ¸#À{ÉGJA€÷÷îð^rÇ‘Rà½Ä=€€;¼—Üq¤IÀÊÊʲõͯ�. €Ñà—ÍhêRv2 ð^J¦«M[£)À{)šº”�L¼—’éjÓÖh ð^Ц.e'“ï¥dºÚ´�¿L�®¼¼ €@ŒB}®èŠÑEà4 /pî¹çŠç‹IE¶càÀ�òì³ÏJ¥J•ŠÌK’Qàã�?– .¸ È¦×ªUK^yå¹ð ‹ÌKX±b…´iÓF<èÛA ËGÁ…Bý½äŸ™@—¿Ë„˜6mšŒ=Z~ÿý÷ o¾ùfyüñǃîg$ž€5þ|[¿¹¸ÿþÄ«=5Fˆkÿ?ÜN8áiÒ¤‰|ôÑG¦ÎºâúÒQ¹8hÔ¨‘¬Y³ÆôÞêׯŸtìØQôýtèÐ!Y´h‘<òÈ#¦gŠV9==]^{íµ8ª=UA ~4Ðuå•Wšoñ¶jÕJ4h õêÕ“üü|Ù¸q£Ìš5KfÏžmÞ[0ÖÉ-Z´ˆŸPâ\@ßKíÚµ3=øëÔ©#Ú³_�®8¿pT¯T¼/]wÝurýõ×­KõêÕ¥aÆA÷³þ?~¼ÜsÏ=f¥qãÆ2dÈ󌣎:ÊŒ.³|ùryûí·å¬³Î’G}6(CÖ¸±ãì1cLjmÛe¨Y4@ ÆŒc~©ÔoöÖ­[WÖ­[çû�@W<\!ê�½zõí­uÙe—Iùòå UyÛ¶mføÂÕ«W›}Ÿþ¹h/0 hpØé=äŸë�wÞ‘>}ú˜Múª�/„' ßŒ¿õÖ[Í›ôýóàƒš t…çG®äðºô鈴cÇ&'­FÀ%�O>ùDºvíjJÓ¿Ÿž{î93Ü»SñÚბ0œd؆@â Xž!vff&�®Ä½†ÔH] s©¨h‚ Ì�;Wz÷îmj}ÓM7ÉÔ©S¬T�øÐÞÇßÿ½è†: ŠйPš5k&{öì1óipkܸqæ@]Eû‘#yt%ïµ§åî h¯býî‡~0=òu>Ö *¸{JC�¸°<Ñk[¿Ýè?†v\טÊ!€$¬�®„½tT<Îtüù5j˜Zê�Ô:é2 Š' ½�õሾ§târ- _¶Ð/]x{ìkÏ]E»‘]ܸ#ðŸÿüGºwïn Ó¡ÜuHw$—€åi®}æ™gÊ_|‘\-§µ €1 ÐsrN˜$¿þú«sÌ1¦µú°ñ½÷ÞK’–ÓLÜО\Í›77_lݺµ™kÈÝ3PeOà�7Þ�ÔÔT9úè£}½! t•½ëL‹¢#@ +:®”š|W]u•¼ð ¢ï©�;wÊGaôï¤íÛ·›¿•ôsŠ„eWÀºn¾y˜<þø”²ÛJZ† ºââ2P‰2( *ÿ¿ÿ÷ÿLËFŽ)=ôPl%MB :üñ‡lÚ´IæÌ™#?ü°üòË/æD¯¼òŠôïß?:'¥TʈÀo¿ý&§�všüüóÏòì³ÏÊÕW_mZF «Œ\`šuo «iÓ¦fJý{Iç“<öØc¥}ûörÅWHçÎ�£^N€@¢ èð¹ß~û­™|íÚµ¢½ºt®È¯¿þÚ×´Æ�Ë�!CD‡z¯\¹²o;  P6,O„Ûž6mºg’ó&ê]6šE+@âQ€@W<^ê”è:ýÙgŸ-K–,1MÑ!×Zµj•èÍ¢þDUàÅ_”Áƒ=ÇwÜ!&LàBì@à/�k®¹Æ¸:tè .ô½gtq‡ ž€7Ð*÷¥—^*ú¹uÔQG…ÊÆ>’V@ÿªX±¢è«A­…š³XƒÈ:Ô{Íš5“ÖŒ†#P¬K.½ÔNMIaìÒ²xui gºâì‚P�2!ðÈ#�Èí·ßnÚ¢½ºÞzë­2Ñ.�@4‚ºÎ8ã ™1c†yHÍóS6eA@[ç�wžé}²|ùr3ì§·]º¼¼"Z zõêrñÅK—.]¤I“&f~È­[·ÊçŸ.O?ý´rMKÐ÷ÚüùóÍÃüÐ%²�äرc‡>W[^¥JÙ·oŸÔ«WO&Mš$:±n[ºt©Œ5J/^l€úôé#³gÏN>,ZŒ@°<ÈÙ:n©Ž©Î7IʰMCˆ²�®(S|Ò èC�®]»šù„êÔ©#+W®}%!€@hnmãÆ�&ÓÞ½{eÍš5¢ó é0 §œrŠgX÷Ç¥W¯^¡ a/I,°ÿ~iÑ¢…¬ZµJFŒa†ýôç Ðå¯Á2Áôó(X¯J·{÷î¢�dMS¦L‘aÆ/Œ=$©€þN× A_ë«U«&_~ù¥œzꩾmº ¿óio¯ÿýïf»½Î:묀<¬ €@â XžoaÙ6l�ŒŒŒÄm5GH] q™¨d‚|óÍ7Ò±cGÑo0ê·?üðC9÷Üs¤öT�ø˜9s¦ 4È|ðùçŸ7s£ÄgM©¥+à d�p fNí•⟼ûuÛgŸ}&�:uòßÍ2„) s iO¯H£F�ä‡~óH²!�<Û¶m“Úµkû¬a ;%²Ðûe¦[o½U}ôQ§llC�0�®¼¼<†.LÀ‹G•@�D ЕhWŒúÆ«@nn®œsÎ9²yóf3d”WxÉ%—Äku© % #]hï.}p¯_<ú裪þT�h h/.íÍ¥½ºÞ}÷]3ìZÁsè*(Â:ÅèÙ³§¼ÿþû¦€M›6ÉqÇWüÂ8�2(ð矚/þy›6wî\Ñ÷�SÒa ud³ƒš¿§t^” +;;Û^¿~=�®²q=i ׺âúòP¹Ðà–öäÒoøê°Ó:×ÐÀ�¤öT�øxíµ×¤ÿþ¦¢¯¾ú*#_Äÿ%£†1:t¨™Ëîä“O–xÀñì³fÍòÍyÏ=÷HÓ¦MM¾Þ½{› ²ãAlDGtòäÉfß’%K˜GÒQ‰�É. Ã·ëüvšthÂÓO?=(‰ÎßõóÏ?›¡ õË$(¦G—Žeš––V6ZD+@âV€@WÜ^*– :,‡NFþí·ßšOŸ>]n¸á†©=ÕD 1æÏŸ/ݺu3•�0a‚Œ=:1*N-ˆ‘ÀW\!/½ôR±Î¦=’O:é¤bËA$«ÀÈ‘#eÒ¤I¦ùº’õ. ÝE tîÜY,X`²éü\-[¶ zˆ7(Ö¬Y3ùú믃æc$–€•““cë7‚½ßZL¬êS[@�D ЕHW‹ºÆ›ÀÎ�;åüóÏ7+kÝ&Nœ(£F�Š·jR^@{I<Ø´cêÔ©rÓM7%|›hn èrS“²(Z@çÒy…4éÕëׯ_ôAä@ ÉÆŒ#÷ÝwŸiµö*¾ì²ËvíÚ%5kÖÛ¶Í›tžc” _�.‹^‡¿!!€ -]Ñ’¥Ü².ðǘ?ÄÜìoذ¡üðÃR¾|ù ùÙ�κœ]ØŠ€¿Àœ9s¤{÷îR¡Bÿ;å_~ùÅì_¾|¹ÙöÈ#�ø>£|™X@Ÿ@�=äƒ>�råÊ™¿�ºtéâÛ§ :/W›6mLÏÈJ•*™9�é!@Ä  -`ztåååIzzzB7„Ê#€ÄŸ€çËß:Ôù…t2eM:t�«¯¾: ÒÞoVld�$Ða7fÏžmtèB r…ê…¯´5nÜ8ÉÕh>…t^ Ý»w›¡lÎ9çÑoÆ×¨QÃl[¹r¥¼úê«âí5©ï#&ªk×®… b )@ «H"2 `æ«;pà€ù\:ûì³ÍzÕªUEÿfZà™kè™gž1ËJ¥Ÿ[ü±T®\9"°zõj9묳ä·ß~3_lºå–[Dƒ_ú¾Òùí|ðAäÒÃzè!ÑùïH PvL kýúõ&Ð¥o €n hà*’ÉÊuœl „ jæükíÄOí=IB�@ téß=E¥ã�?^^xá¹à‚ ŠÊÊ~"@ + ›ð÷sI¿ôôÜsÏ™y…ügô˶}ûöíé”ôo+^‡-$!€@Ù°rrrlíÑ•’’R¶ZFk@J]€@W©_*Pt•�‹HâBàûï¿7½´´×–Îq¢@¶oßn¾å[§N9ãŒ3¤W¯^æï¢jÕªÅE�©‰*@ +Q¯õŽ¥ÀçŸ.úoÑ¢Ef5íɵk×.ÓÛ¸AƒÒ¾}{4h�ho/„/ ¿ßM›6MÞyçÑyît(øzõê™yWoºé&iÙ²eø…‘F€¡ æRQQ@@@@@@ËÓ¥Óö]é7†ý b@@@@@@�X Xž¡;L +---äÄæ±¬çB@@@@@@ (†.,Jˆý € € € € € €q)`zt­[·NÒÓÓéÑ——ˆJ!€ € € € € €8 ø]NûÙ† € € € € € €@\ X999vnn®èŠËëC¥@@@@@@‚X™™™öÆ�%--�¡ ƒ ±@@@@@@ þ¬¬¬,{Æ fŽ®ø«5B@@@@@@ÀYÀºòòò$55•]ÎFlE@@@@@ˆCèÒ¡ SRRtÅá¢J € € € € € €ÎÖÂ… míÑ•žžîœƒ­ € € € € € €Ä¡€•š’bŸÖ´©Ü{ï½ôèŠÃ D•@@@@@@œ,Ïf»bÅŠ²ÿ~çlE@@@@@@ ¬sÎ9ÇÎÊÊÛ¶ã°zT @@@@@@gëãùóí�ƒɦM›œs°@@@@@@�8°rrrìG}Tf½ùfV�*!€ € € € € € à,`effÚo¿ý¶<ê v‘@@@Ü;v¬Œ7Ḭ̂ñîûR" € €$¯€éÑ5{öl™4iRò*Ðr@@@ Š¥è:t¨Ì˜1ôê“O>‘óÏ??ì~ôÑGrá…šüÆ “)S¦„},@@@�X ˜@×Ô©Såµ×^˲bynÎ… € €$…@iº²³³åœsÎ1¾ƒ–^x!lëÈ+¯¼bò/[¶LZµjö±dD@@b)`-X°À2dˆ¬^½:–çå\ € € €@Ò”F Kq5j$kÖ¬‘#�ø@Ž>úh_;½½±*V¬(ï½÷ž¦Ð·óÿvìØ!:<á7ß|#:t0ÃÌ“šš*o¼ñ†Ù¼jÕ*9õÔS f1. ti8p ¼ôÒK…ò°@@ˆ7_�.ýÃDz¬x«õA@@^À)Ðõä“OÊ�7Þ(Úk«K—.òÎ;TÞÆêö¿ÿýï²f͹í¶ÛD‡ –4@Ö£G³{õêÕæ8ÿ¼Ú#¬W¯^fÓ]wÝ%ãÇ�÷ßm–uÈBï9tèD­ @@ˆwË3)±ºP]$@@@÷ º4ÐtÏ=÷˜õéÓÇ̯U¹rå€k­æÍ››m‹-’víÚì÷_ùý÷ß}A2퉥=²ü“ö;þøãå—_~1s€é¨þ_tÌÏÏ— ÈæÍ›M>�ǹ\¹rþE°Œ € €Ä¥€éÑ•——'éééqYA*… € €$º€ ë–[n‘ÇÜ4iðàÁ¢Ã–/_¾P5`uÅWÚ^Ô†‡zHFŽY(ÛðáÃå±Ç3Û333Íp‡ÞLóçÏ—nݺ™ÕQ£FÉĉ½»xE@@âZÀºôÛzèâ{q}­¨ € €$¨€ ËÛí­õ¿ÿý/èßa“&Mr Xy�ö:fÌÑóL+V¬�–-[šÍC† ‘3fø²h°™3gšuíIÖ´iSß>@@@�x°rrrlíÑ•’’Ïõ¤n € € €@ øº.»ì2yë­·L[tŽ®iÓ¦9¶K{U�=Úì›3gŽrÐ1c��uêÔýç”N?ýtY¹r¥Ô¬YS~þùgÑáuØÃºuëš×V­ZɲeËœe € € — ]——…J!€ € €@Yðtíß¿ß|Ñð�wÞ1MÔ¡ ½C ú·Y‡4¼æšk̦… Ê9çœã¿»XË“'O–#F˜cß|óMéÛ·¯¼òÊ+2`À³mÊ”)2lذb•ÍA € € €@iXYYY¶wèBÿɈK£2œ@@(‹þ�.Û¶Eƒ]Ú³kîܹ¦¹·ß~»èP…þI{VµiÓÆlÒÞ]:wVIÓO?ý$ 4�C‡É%—\"l»ð å£�>’Š+ʦM›¤víÚ%= Ç#€ € €1°²³³M +--MtÅÌ�!€ € €@  tiÓ5ØÕ§Oyÿý÷�„²4 åMùùùrâ‰'ÊÆ�åä“O�;«J•*ÞÝÅ~½è¢‹äÃ?4�­/¿üRÎ8ã øêÝ»·¼÷Þ{Å.—@@@�Ò`èÂÒPçœ € € �TN�.øóÏ?MÏ* É¢yt¿h¦Òò˜7ožÜÿý!›VÁ®Òðˆ4ÈåE‹E°+_ýµ >\víÚåmŠ«¯Ýºu3=%u¨:·S4<üë¨?§üñGÑ¡üœÒßþö7iР�Ó®RÙæ†Ç›o¾)�<òˆ©ÕªU¥Q£F¾¶|óÍ7_Òðí(°pÊ)§HµjÕ¶þñDzfÍß¶Zµj™{nÿþý¾mÞ¡@Ý v9yøNÆ € € € €D,`�ÚøT{mîZùõ×m’ï ®xS¬;ÞóÆÃ«ÓƒÈXz„äR«ºuëÊ»ï¾U¶Òò¸ôÒKåçŸ.²m±v•†‡öBúê«¯Š´pÊ sT=óÌ3N»\Ùæ¶‡¹t²`�W*í)äÜsÏ•‰'º>×›ÛÛ;aÂyï½÷ nX×!uè½xHnxøº7n,/¿ü²¯iúþ/ê^ÑÀØ+¯¼â;ÆaÀ€òÃ?˜M×^{­ôéÓÇô]¸p¡/››Á.'߉X@@@@@�ˆ,ÏC7;//Ozõìð­øXv"®u”pz+�H‚\^†œœ×Ö{ËÖ×ÒðÐ^+íÛ·èeè_§‚˱ vÅÚCç¦êÔ©SÁ&G´¾`Á©R¥JDÇ„›ÙM�Ÿ~úI®¸â Ïœ�;‹<ý±Ç+­Zµ’O<Ñ -wðàAÙ²e‹êðÿûŸø÷Ê VØe—]&#FŒ¶»XÛÝôpª@×®]eÏž=N»|ÛÎ<óLyòÉ'}륹à†G¨@—Î×§=³B¥PÁ^ n­X±Â®Ëzÿ齤½eõ}ãMìš>}z‰‡uòðžƒW@@@@ˆ\ÀúàýìœE92rÄm…];vŒ¼DŽÐ‡Œš¢1¬X8ÕÓoò;ÍÑmïÃÕ¢†+ôoƒön˜9s¦ÿ&×—KËCç w>*m´7Øíû¦4<¦N�*o¼ñ†8p ¢ë[±bEIMM5=¤":0‚Ìnyèý?dÈùöÛoCž]ƒ[C‡ ^K:Ôã;ï¼#/½ô’èr¨ôÀˆ�ÜJny«�Þçávf̘¬ˆ˜nwÃCï}ïÐ…æ•ÔCï%o Kç=Ô@—&½ïºë.Ç`WI†1tò0'ä?@@@@(–€Õ¬Y3[ç8Ù½ë·Rté|<ú0ó“O>1�éÒ¥‹ÜvÛm¦·FÁÖ]ýõ²|ùò€Í–eÉ­·Þ*ýúõ ØéŠÓƒHíÑÍ@—öäÒ‡ª‘¹4ˆ¡= Î8ãŒH›QþÒðÐ êP}7Þx£üùçŸa×Wzkà¢|ùòaiÆÒòÐzzçÑÓKú€Þ)é0…Þ �¾'¢�ÜòСå¦M›´º5jÔ0ój�wÞyAóÜ¡A®‡zHæÏŸ_p—o]ç´ÒCGq„o[IÜððïÁä_½¶7ß|s‘Cõéõ¿à‚ |Á!ÿ2Jº¬?“#ùë–ÇäÉ“MÕcèÒ“E#ØåäQÒkÂñ € € € €$³€>·õÛé›6æy]�stE3°S}ýúõ&¨¥Ã(ú§ ˜‡µ:<™êÙ³§lÛ¶Í“YNII1åÚÁ§‘Ñ t§'—¹~øa3¼_M+VÖX{øWrÉ’%æz†3 �÷8ÊlüøñQ v•¦‡·�èÒy»œ’öäñºœö»½Í  r_rÉ%A{*Õ¯__{ì13LaqêÿÜsÏɳÏ>ôÐŒŒ @ š!‚nxh ËØñ?µ^Û[n¹%¨“7¯¿µ—šSÞ<Å}Õ@—þœ 7¹í¡Cœ£«¨nêlžº`=º¼í ìzâ‰'Šuòðž‹W@@@@ˆ\Àòì‹/¾X®<È×[D‹ÑÀιçžy‰Å8â¿ÿý¯Üyç�A‡Óž>ø ´mÛÖWz�=‚ºn¿ýv_¾â,dff:] ïCÔH{ri�«C‡Åi^ÄÇÄÒérzè5�¤g—»¢Õ³«´=ÔH]:ÌŸSÒ€N,]nxhâùçŸwjŽ &输N:Éq¸'Mšdzn9å×ùËæÌ™#Gu”Ó¹á¡Cõ9©â%Ð¥Ãa†›ÜöÐ@—ÿp­ÚÃoïÞ½!«£�®`C9jÀØèÂÁƒ*KNëg”ÿœ]M›65Á³Ê•+Êjƒ“G¨üìC@@@@�ÐVvv¶½qãFéÑýÂBCF#°S°:ú@W{jèÐ}¡’E§= úöík²•…@—ÓÃÓPºÏÛ“+VA.=§ÓƒÙXBµñìŠ�²èÊÏÏ—Þ½{ËÖ­[õRJ'N \–4éϘ«¯¾Zt¨V§4|øpIKKsÚÑ67îí­ª?— ¦¿ÿýYÃéÁ4aÂÇ2 –éúñÇ/µjÕ û07<ü]�:u Ë#X K{ty‡ÁÕ!q¯ø¿9º 6ÐéçõÀ�Íðªó†Zwò•Ÿ} € € € € ZÀÊÊʲu¸À^=» tE2NèÓÞ« µ‡ÅìÙ³ íÔ¹¹t.¢O?ý´Ð> tiÀ«W¯^²}ûöBûuH­#FÚɆÏ?ÿܱG—›Þ‡¦‘öäR³X¹Ô-á\ŸÅ‹»gW… Â9EXy¢á¡÷ûo¿ý&:_T8I]´qJ:L_¸=ºvìØ!5kÖ”’ÌåUR�eË–Éu×]çÔiÙ²eО8ޱQ{îë ×¼ysùç?ÿYD Eï.©GQgПCáºB ÕXÔ9ÜÜºôgŸ& té|nÞTRíÑåèrêÑå=—þÜ9r¤èðƒš´'àG}$U«Võf)òÕɣȃȀ € € € €AL KçÇÒ@—Ò;nvüËÞ¹s§ÜqÇ¢¸ &}xï�{H¿�¯í ¦³Î:K¾ýö[Ç¡uH­’]èô ÒM�D r©}´= ^ßPë‹-2×7Ò9»´w‹ö t#¹í¡óSÝzë­òÕW_™î˜1cЬ¦�®qãÆÉܹsåôÓO7½*u®¾â¤’z<ùä“ALO=õ”´nݺ8Õ zŒöÚYºti¡ýzÌŸ?¿Xó.ùVRÿ²œ–ý3Nûu›?ƒ•év7pò0ñ € € € €KÀòô’±7lØ Ý/ê“]ëÖ­"L{‘ù'�çäÞ{ï•nݺInn®ÙÕ°aCómùûî»/ìù™ÜxÀëô Ò­@W¢¹ôBDÓÃÿw¹´ƒ]nzìÞ½[n¸áùî»ïLóË•+gz‹TªT)$GI](ìØ±£ï=Úi§ÉOÚ«ë˜cŽ‘îÝ»KQ÷PQçqk¿% ti�Ní \­Zµ€fiϸY³fù‚VẴârÍš5¦¬Q£Fù†Ô (<ÈŠ“G�¬lF@@@@�0Ì]èŠÅÐ…:ôÜ�wÞ){öì ¨šÎ÷2yòdiÚ´©äääÈ]wÝeö?ðÀÒ¾}{3§ŽG¨ß¤/*éÐ…ñÚ£Kƒ\£G�6�£¢ÚáݯhKc¸BïùõÕéÁ¬[�?ÿóD²ì v8p ìÃtž'½§JÚ³Ë- rÝxã�¾ —·!:‡�‰*•tŽ®}ûöIÁ9ø4Ø5}úôˆƒ]%õ6ßÞ\`®W(‡âìÛ´i“ôéÓÇñPý9Ó¯_?Ç}án,©G¸çI”|nxøÏÑÕ¸q〡 õ>ÑàŸé–[n‘ŒŒŒ"‹0`€|ÿý÷&Ÿ¥«_°79y„{,ù@@@@@ °€å ,ÙÚ˪gºÐöåp;�ñïÿÛ �–ŸŸï;‡.4iÒD}ôQÑ`׫¯¾*Ó¦Móõ2ÑÞ-ÂW¼¼'…IDAT7Ýt“ôïß_¶nÝjææZµjUÀñWâ5ÐUœ —¶­bÅŠrÔQGlfÄëÜQk}�[¿~ýˆŽwz0[œûcóæÍæÐkxèСˆêà”YnGèÒ2Üv¹á,È¥u,­@—ž»8Á®’z´k×Î÷ž×:x“ÿ0¦Þmÿ¿½3�²¢¸úø}#0ÃúñåDäœ@úaü>AÙ„AÔ�ƈk\BÔÃ\ØrÀŰ$„(&æh@b ‚ *a‘Å7ò)D ša`P–†e¾þ×pÝoú½×ýºæ½‘ùçÑ]U·êVÿ^uuOÝw«l±ö¹Ó¥çÜu>\î¼óNwRèó¨}ºàù5À«øÅ_ 4>ÒЕ6Ë“ � � � � � � � �€=1Ç3ƺ èØ¹¼†®Þ½{GÖ„ÉäiÓ¦É+¯¼R­®~ýúÉ„ -ì¡„eÊüÂàÁƒ�'ŒdØ¿è�7Þð3i0tÁ+#JXµj•ôíÓËS ;™òìI† ß\‡¶mÛ &�á)4Øàðz€÷`®Œ]QöìŠÊ{rùyr)xðaÒ=UøôÓOÍÞ@~20fžwÞy~Yñ´#GŽ$½OÔØtÏ®(<ÐŽž={ÆÛå>Á¾eA¼kÜe‚žÃ hÿþýÕÄ‹ŠŠÌÒªÕ2B$DáBM$Qx#íÛ·Ï·ŽF�ÉùçŸÙóQ+·Á†,xý"À£ ?ŠÐ€±ñ-[¶dl@G_G_ƒWq�pà 7Ä=ºàAÆ£Ë�G�”!        ð'`–.Ä~YC‡ òx8D1ì¨*Lè�5J6nܨIñ£zN`²…[·n�çù�`‖-[ʬY³dÞ¼y~bRÛ ]0Î�Am0r)0ûôé£Ñ´G¿‰Ù°ý×uIÉ´ !c×äÉ“�‘5D1#…Gâž\augK>Ìž]Qxàþ¸øâ‹}/ Þœ?üá}ó¢&öêÕËw�+0FŒ©ú(<")XF¡Ç<¥ôÀ�“îc–² O¦ î=º ]>*k<‰†®GL$@$@$@$@$@$@$@$@$˜@Ü£k°ãÑ…%½4À�Æ¢åôˆåáY²k×.M2Ǽ¼<ã•UXXhö&Âþ&ÅÅÅ™d‘6mÚ–©Â$üÒ¥K塇’ŠŠ �8–å{òÉ'å›ßü¦'=LdåÊ•¾]™ðÀRXꉦ 5) �·06xÀ#†ÊÚà1„e1ÆLyÀÈu×]wUÛ“+¬þlÉã>{æ™gÒîÙ•)½ìvøða�Æ�Ø+kôèÑñ¸­|Éîå»ï¾[n¾ùæHª¢òˆ¤<@á;î¸Ã÷Ç�`ƒ‡{ü€¡ë…^°Ñ´ŒëÀ¸¡{tÁ€Ýu×®Ë�GàÂ$        ¨F F ]Îrˆò³ŸýL<èQˆ}¸`ôéܹ³¼þúë2qâD)//÷Ȥ‹4lØÐʰô¼À0ÉXRRâ)†IÚ)S¦öþÉ$øMDfjø 2©œI£”±11–‡{¢:JÛm–½ð eöìÙ¡«Ì´À‹æw¿û]h}¹,ϬS…Lyh�n£�¦áØ©S'™?¾;ÉÊùúõë�Áѯ2xùal‰¢ò€n,Çvÿ¹ mÆž؃ Ëü¥ �76†.,-™PG˜¥Omðp�:tð,]˜Ø¾lÄÝ}ÖÆxš�6S � � � � � � � � œ®bk×®­Ü¾}»\9tpµ¥ “y=¤‚±páB³,ÖñãÇ=b;v”3fHëÖ­å¹çž“9sæxòÃFn½õV�iÏž=fO��>úÈSE½zõ;a~i¯ؘ˜Õºà!²nÝ:�ÖŠ£�‰ÙÓÁÐuÑE™e0Ã~)™ö�gŸ}VæÎ�V]NåqŸÁ0’*dÊCëľ{~ûóaï>¤c̰`l‡§¥_X²d‰œuÖY~Y�Ó¢ò€"·a'°â‚¸÷W¬X!›7oN) C×Oú¨¼üòˉÉ9‹ÃS£gÏž�õÛàáTeĈ�uÖ´à�!Cd„ ÆHVWeeeÆÓ°¶»`äzì±Ç¤Q£FiñDá�Ê÷íÛ'”D/PäÁÈc±-¯.,¹`ÁT]-`ß:�£†¨< g5±§]�®T†®¢¢¢À˜ló€GWmØ£ËmèŠÊ#0L ’ � � � � � � � � T#`öè‚¡k`¡w_š0†�U«VC—»ö¼¼<³—&°±L&�1¡]¡E‹fR{.-[¶Ì0***<ª°\YÐ¥mL̺•Ó Æ.?o7·\6ÎaÄ>QXÚ1h°ÁFTxA|üñÇAÕÖ˜Œ\X.Kãe¢òHgìš7ož1ð¤j8›Ñ/ÀkÆ€TÞeÇ÷ cäBQy xº½õÖ[8­°×Œ.aúlµJœ„M›6£;¼Oý–]Åý5Øà�±²¸¸8jSª•‡×Æâ Kb,ų!1 Ž–-[&&'�Ûàá6ü%º>l~ä€krÿX#iƒBd`ŒÀsËwb9G Ø£K ]#GŽ µD®­—G         �ðŒ¡kçÎ�R8àrOé0†.rà)ƒB«V­ŒUçÎ��7ÆäÉ“åèÑ£&¯¦þkР�Œ3F¾ÿýïËÖ­[�á­¤¤Ä¨ëÕ«—i–8 ü&"ÃððÓ‘©± 5gŸ}¶_•¡Ò°t#&ˆïºë.óý„)l‹ÇÞ½{eæÌ™ÆØ•ÌØ¦]»wï�„¨F.è²Á#•± Þoé<©0©ï·¬Ú‡ýï09Ÿ*@¿ŸW_X#tØà#”ß~Pz Øk…L–gýÑ�~$¥¥¥¾UtéÒÅÚþi6xø6ÒR"8ƒwª�ŸŸ/«W¯N%8Ï,å8mÚ4£3ÑÐÏÌW_}5p{2:t¨ù…–¥¡KIðH$@$@$@$@$@$@$@$@¹'`eéB\&Îo¿ývsEÓ§OüêÿøCÖ÷e‚·– ƒ7Äý÷ßo–¦ûÕ¯~•Öpàþ*lL̺ëÓóLŒ]ðb™8q¢\qÅZMÖ�5Å#Ê…,]ºÔìËæ·Ü]²z£,Wè®Ó�òòrß=»reèÒ=¹6lè¾Ü´ç¶xÜsÏ=ò·¿ý-©>x‡Â[-Ýža‰À¨#Ùþýû³LðùóçK§N�|óÃ&ÚâVoPùTË7jÝ»w—gŸ}V£‘Ž6x¤2tÁS{¯ÕdhÚ´©goIºj’6ë&        �pbëÖ­«üôÓOÍ]0ÄhˆêÁ„z°Ç –œÊf°±ÏŽ�‰ÙT×üðÃËŸþô§T"ž<»°L&úsjšGØkÊ¥‘ mµÉÆ®ûî»OÖ¯_o0à»~ç�wŠ©Â–-[ûßù…¹sç <”RxXöèÑ#¾/ Ø“+¬‘ :lñ€g)î_,«˜,´k×Îìõv饗&‰§Ã°0¸§ò „ù‘G‰—‹zb‹GÔv$+ãðòåË“.% oÂþýû ¼ºl½âqœØà¡ ˜‰± eraìªiÊ%Èñ/ùKÆž\™îÉ•Ø.Û<0I?vìX�'WQQ‘ñDLÔ™ÇÒ…© ]é–.D}3fÌìKCÁ¤I“By=ºÛc“ö±C?O¾ó�ïÈ Aƒ¤k×®rî¹çƽ¼°\é‡~h–ÝÃSLW•À[gÖ¬YÒ±cÇ´²Alò¢¯¶ËØà�çˆ{éBô[ è¿Ø§ áé§Ÿ–K.¹D³"ap¾÷Þ{M0táþÔpýõ×{öèÂ}4øñZ–r$@$@$@$@$@$@$@$@$@Õ �®íÛ·ËÐ!ƒ<^6 ;4tU®)™»àyRXX¨Õdåè71k£„m<<¹Æ�÷B R^—+´eä‚ΚâOxt 6 ]ÐFg²vÙæ‘ɸ�å q-©<·’µé6�]¶y¤j÷×!Ϻ¾ß4ÛH$@$@$@$@$@$@$@$@¹!söÄ1]CãëD¼6 a&¬›5kf¼3â p�`R¿´´Ô•’üôºë®ìÓ%ؘ˜ ¢?Sc×£�>* ¢ÂŠL¶x¤jlm1r¡�µ�‡-CW*æAólóÀ8ƒn˜å=ƒ¶5•Æ ìKÕ³Ë6�TmFÞßÿþwÙ³g�¯–¢ÄÞkyyy¾ùÙH´Áƒ†®l|SÔA$@$@$@$@$@$@$@$@_O1go Jxt]1°P*+íº°·J�€=…°ŸŽ_ÀmØ“(H°±G—�‰Ù m…Œ»-Z´ˆñú�! [Æ®lòðƒ F.·!ÖOÎ�6xð`™8q¢Äb1w²•ó\óÀEÀÐuë­·ú^Ïœ9s$ÈÒ…¾…3H¬)Ï=÷œÌž=ÛÜ#4+£"ðìŠjìª)~ô /ÈôéÓý²âi_|±<óÌ3ñx¶Olð€¡ {>"|ë[ß2Knêu¸÷èzê©§¬.]ø“ŸüĨÁ¾e‰K~üñÇ&oäÈ‘‚X ~<‚–¥ � � � � � � � � �@u±5kÖTîÞ½[z÷ºÌÙç&/>©lã “˜  ꪡKÙÀ(³xñb�¦=b‰;xvõïß?­lT¿‰Yý#H»j›‘ mÎ%eV ]¸VÇ/=ô�|þùçzéaô:t¨8^¬I= PyTcW6û 1ØK*UÀu¿ûDj4Ï�\ºœgc|�.ºj´‹°r        ˆD 6vìØÊßþv¾¬~óMiÕê¿<†®Ë/¿n5åÍå¹à‘ò¢Cfê2†ÿùÏ’–L5>%²Á{‘íß¿?±jOÞk΋�öèZ»v­¤º>OÅi"Í›77{˜¥‹gÛà±páBÁ'4h g�uV¼~+uŒhݺu¨ýÃâ•øœàž+))19kñ£ UÏÌ£&Š¥Ã, éÇCëå‘H€H€H€H€H€H€H€H€H <�˜³ì]åž={äŸÛ¶ÉM7ݯÁ†¡ “˜  RM$>ÜìE¤ì3jÔ¨ ¢Ieü&"mðHª0IF*c&^þóŸ ö±ªé�K/½ô’Lž<9>‘í¾Ö!C†ÈĉktÙF·>=Ï�°Æ®l¹À$W<ôû°qTÏ®dÆ ÜoÎ�¤~ýúiÕe“Ç=÷Ü#X–2U@Û±§Y®‚ Ë–-“¨?`¨©ëŸ2eŠ®Þ�GàÂ$        ¨F æxJUîÝ»WV®\)£F>°aØÁ’føµ{�`ËÐ/²Q™TÆo"Ò�¤ Sdèž]‹-ŠKaâž×\sM<­&OrÍã�ü£Lš4Éc첆>ø`Ö�\àœKA�]Ù2r嚇Í~ŸÊØUPP o½õV uÙìð‚}ê©§R¶+ÕØš² ¥L<Ž;föS{ï½÷,µÊN5\p�`YË PÕèÇCóx$        OÀº8 sæÌ‘§Ÿz"nL°eØÙ²e‹ìر#^o²&¶jÕJ.½ôRßlL0ëR¾'Ûµk']ºtI%(Ïo"Ò�@ ðZ±b…¬^½Ú,Ë…åú0Áš­Pxüãÿ�%K–Hyy¹\vÙe5¾\c*¶¹æXÆF~¡{÷îf¹Â† úe[OË5›´{÷ncPÁÒtîpÇwÈ�wÞéNJzžmkÖ¬‘ââbßö `\ÍÏÏ÷ÍÏF¢-Ç�7ûÔ•––f£Ùiu´hÑB°ÿ]½zõÒʺüx¸óyN$@$@$@$@$@$@$@$@$Ž@Ì1 Tb?,ƒ·ð…祠 _àE”kÃN¸Ë°+í7I½<�É#·<’»²mäB§8Ýî,_ˆå2±¯U“&MäÚk¯•[n¹%¾¡çFð‰œn<|.1TyxqùñðJ0F$@$@$@$@$@$@$@$@$†@ÌY ªòèÑ£2~üxùÁ®‘«¯f¼¯`Ȉº`˜†Ô&Ù¿þõ¯Ò·OuCyœú–Ø?rß?tCõìR#W£F�N}QY8ãýâ…Läá%à�ùõ¯c$@$@$@$@$@$@$@$@$@A œqÆb<º°$Ôïÿ{Ù²e³ñêB+W­¦¡ËE’†�Üv\_GNOý&ªsÕ?àÙµ`ÁÃãÆo4K[fNmâ‘ík÷ÓG^*䑞‡W‚1         � b±˜Y¡Ðº°Tá¡C‡dæÌ™2áÁñÒ¦Mk³t!=˜N¡Ì•!ãT rwƉj/{ò /oŒýƒ<¼¼1¿þá•`ŒH€H€H€H€H€H€H€H€H (�#G*NytUTTȾ}ûä̼<ùîw»ÈŠ7VIaaaкN+9¿‰HºèÑ¥�œýCITɃ<¼¼1ö�ô<¼Œ‘ � � � � � � � � ¤#®úõëˆw7Jìƒ>¨Dº<(Ÿþ¹\ò¿ÿ#›6o‘¾}û¦«ë´ÌçĬ÷k%òððÆØ?ÈÃKÀcÿHÏÃ+Á � � � � � � � � �@:Ø›kÿ—_ÉÚµëª<º°Žaee¥;vLJJJ¤¬¬L Ô§OŸtu�–ùœ˜õ~­äA^Þûyx xcìéyx%#        HEö¬˜óoõÛïHÆ %öþûïWÂÅ 8>|XöîÝköì:t¨¨,U¥§['f½ß(y�‡—€7ÆþA^ÞûGz^ ÆH€H€H€H€H€H€H€H€H€’€- K¾»q³8p@Z·n]µt! \øhøòË/eÏž=rÞyçI‡L2 ו°lÙ2éÛ§úžTuuÏ2òðö|ò /oŒýƒ<¼¼1¿þá•`ŒH€H€H€H€H€H€H€H€HÀ�³ðùç??‘ÿú—´iÓFòóó%¶uëÖJd`©Â£G�š²GŽ‘òòr)..–víÚIÇŽM:äêBXºt©¯¡kàÀ�uáò«]#yx‘�yx xcìäá%à�ùõ¯c$@$@$@$@$@$@$@$@$@‰`Ÿ‚ÃÖÿýß'ò¯ÏvJ«V­¤  @4h ±?ü°òøñãféB³®¡#Œ8öë:tè�Ù³ °¦M›št•MTrºÅý<ºN·k s=äá¥Eäá%à�±�‡—€7–Ø?¼¹Œ‘ � � � � � � � � (·Î¨WOb΢ƒ›·¼'{JJŒ'W£F�̆õ�§†.w!XÆ`Ђ� ,cˆÊ.êÚUš4É7Þ_ˆ×/eÃ# � � � � � � � � � � � �@ÍÀJ„°E8xH6nÜdbO®¼¼<�� Gc«úè£�ŒG À¸…D|´‚ŠŠ ãÝ…M½JKKåßh#�;ur*pÜÁƒX]Ú»«æ¿6j            �ºI@mU8.+—÷ßßqÆ*‘æÍ›K³fÍÌR…ÈÃ’…°kÅ!³GŒ[0ZÁ ¦çîe áÙUVV&_}õ•YÒ°i“&Ò¶m[9眳M…'NTÉ`üRO/Ô§Ë!Öͯ„WM$@$@$@$@$@$@$@$@$@$@$@$ ¶#�P'*­SÒÉ8lJ";wî”]»vËþ/¿4Æ­üü|ã½ã–¸´.c“ÂÒ…Z¡¸ ç‰GÈÁà F¯Ã‡›Ï‘#Gk!8Š šžyæ™’× ¾4nœoŒ^p;£žÓØ“žbÇ�cýzõ�ê+å„SgÌhÒ A¤ÊSìŒ3ªŽh艕ÆË¬²Òi—wŠBÌSÖ\�‘u¼Òœzë;F;´¢Ô_å©Gþì¼ÿ8þpüåó‡Ï_¾ðýëäû¡ó®Xøþ‰÷f¾óïôþýÅ¿?ù÷7çª&œ8ÿÂù'οqþÑySæü+çŸOþŤï‰U§ý!3ûËñã'Œ} NV°5•;ö¥òòr9xð ”v­œ•ËËËSCÇ¾ÔØ|`_ª_¿¾ù ÿ¡/" ÁØ…`è‰qï:i$:vì˜ñì‚ÎŒ°“å*ƒ ]8âYÄñB„#ä´¼ÞjLƒ>w½ªr(ƒF¢<êUݨúáu†€ºðA>ލeQN½ÓL¦ó_Õ‹Z•—™êÓ²¨G󑇲ÈC[pD>Z/êtë‡ >( ‹¢Ê©Èký8×t-—¨_¯?•~°Òë×zõk>õ“?û~P5òþsÜyOŽY8rüñŽÿ«ž¿Éž?ðìF¿1?bqž‹Ú—ôùƒrîñÆýü�lâý‡¸>¯ÑÝÏ_Ôƒç>Žð*G^Ó¦Mͽ¬Ï·Dýûöí3ò¦mný8OÔÏþÏþ¯ý}#Ýýÿ‹_üÂôEÈMž<9ÞÿçÍ›g–R@1b„³âÁ9µ®ÿ¡¯ÿú׿–>øÍô„|Ðüñ�îúQˆïŸ™¿¿ù曲xñbÃ~ðàÁÒ»wo3^íÞ½[f̘aÒ¿ýíoËÍ7ßlúú&>úwE®ù¯\¹R–,YbÚ9`ÀéÖ­›`¬ÅØìþûGÇgêý…sŽ¿|ÿÒg6Ž|þòù«ãC�ç/Æ>2þpüåøËñ·jΖÏ>kÛûÞ¡Ñ/“Í¿àù‡ ï×z/c\w¿ã‰<}¾"îÿ‘î¾~œ»ÿþC¾~мãkPýÈG½ˆC¿Êi½�w—ƒ~-ƒ#Ú©ù(ƒy%Äq޶ *è€ct qµ}Z'¡ê5z°G„(a à¨qœC�Ô<¤!Ž#*G>ꃕÕ:pDкp„œêw×o�ÿ´¬Ê¢Nȹë€,Ò–ž»e!�ºÜeQNõ N½ªO¯åðA@šÖ¡qmtiª_eµ¼Æµ,Ž(£íÔúÝùný�M¬Ã­_¿üLôkÛQ?õW}×à@þ§ú?ûï?Ž?ÞWÔÅñ†.xp#èsKŸ!xþàECûŠ>S”•–Áe ¯eUuBä�CZ‹-L\epÔgÎ÷îÝkÞ`SÐöàé©ô#ú´�M¬y‰úµ-*«å5Žz©ÿëËÿöÛo7}/Ü¿ùÍoâßÿã�?îlŠ»_¯<òÈ#Ò®];“W›¾ÿåË—ËüùóMq]pÁæ�ôÇk¯½Öü�LíŸh»¶ŸýßÎý¿lÙ2Y°`�ùŠŠŠÆ.°ýì³Ïd̘1&½K—.2jÔ¨Z9þÀPºbÅ ³.þÌ™3ãýŸTýñÍñÿÔW0ŽèøÁçŸ÷Ý7:ß?’¿ÿ�Ÿ?|þêøÁ÷;︯ôýŽãǼ¯  Oàíî팿ÊVï;=¹ÿÌâü—lüÓ:ß¿ñÝA�ŽŸ×ïy‰eõMÛY-�úÝù*ƒ#Ò‘¯õéüâªW��×Êèû²[çîúG�z�HCÀÑ­çjè2zàÑe$�ÿÐíð„ñI ä¡ò �Ó4ÍGùøhÐ<¤é9äpŽ€s|P'dÜú!£mÓv@ 9­õàÜýÑúòÜç(¤»õC�‚Œæá¨u&ê×zPŽHÃ:Q'‚[¿æ«~Ô‰s·~È$Ó9·œãƒàNW�H×sw>ΡƒúÉ}�ýïÔýÏû�ãÇߪg38|é¬�ŒCâúÁsçø hºû‡tÈé³Pó�Žg9ž?È×sxr¡.¤A_Ë–-� ò‘æÖƒsxt!`ƒR­_ŸyH×óÄr¨›Ï?>ÿ´¯éû_âøÓM7™½jñK³… ÆûßÔ©Seýúõèb2eÊiß¾}­ëh׆ ̽1{öls/àúpÍìÿÙ¹ÿ_{í5™;w®é'7Üpƒ\uÕU†ÿ'Ÿ|bŒ[ȸð eܸqñ¾…ïFÇ-|_ÉÆ?|—îñMË"]ÏÝùa¾ÿiÓ¦™~Žþ�óÄzGp§«N¤ë¹;çìÙéä_51Âþwj~‚÷ÇŽ¿ù÷ÿþÁ³W'ûû'×›~¼�}þê; Þ£ßÿµÈ àˆ4ðÒw>÷¹;çøèý�g�~ÿZVëGø@rîzT/òÝéZ/òµε}8‡¼êD½ø!)‚Ö¥uhÈ¢Ÿ" Ôƒ2FvÛ¶m•î‰"T®•bÒ Bz!(„<•GeÈC€ä5_ë@ºº‘©AJëD=h¸Ö§éZéHƒ|�§íQýHƒäqî.‡tèT'êQP¨Ku¡È+X“àü§z×vA^ëLÔ�tÕ�v! ºÓ釼Ÿ~”CH¦ùz-Aõ£>-£×OýäÏþWõÒƒû÷ï?Ž?è uyü---ãÑ¥Ï?Ü8×#òõùƒ#ÒÁLÇÄñüÕt}þ ÒU†.ÿ“?ÿo¼ñFcè‹ø‹/¾hú)x%º:vìXëúß< ;vì�=zÈÈ‘#Íû2ûvï,[ˆe.`è6l˜¶oß.÷ß¿I‡¡küøñf3 εåýËuÂXÚ¡C™4iR¼ÿëø¯c©Žÿúw®CŸ:þã¾AÐ29þ¢?ðù“üù>©Þô^âýlþ<•ÇŽ?è8þèߟè#ðÞ‚Àñ·j^ã%8á~áûß©„£$>•úPÐ÷_ÓÙNþç×ÿ�æÇEÒéÇ߯úþ Y´mÄGÇ?·~È Ýȇ,Îõý^Û§u!s6ª²š‡ò:ÿãNGˆC?ò5¸ep®ú!ïÖ�tè@Pýÿ;C€œÒÁ-KIEND®B`‚astropy-pyvo-f0fdda3/docs/mivot/_images/xtapdbXML.png000066400000000000000000023504361521254414300230400ustar00rootroot00000000000000‰PNG  IHDR:¢ t0VsRGB®Îé–eXIfMM*>F(‡iN��’†„  : ¢ASCIIScreenshot‚Ì¢; pHYs%%IR$ðØiTXtXML:com.adobe.xmp 1186 1594 Screenshot ŠÛyiDOTQ(QQ±PJq%Â@IDATxì]˜E-rN'AI‘¤d” ’QDD" JRð'gDP” JÎ A’€€H– ’᎜ö¯7}½Ó;·{·»9«¾owz:Ï›žÞÙ~]UIæÎ�ë"A@A@!µjÕJ„W%—$‡À¼yó‚+(¥A@A@A@Hà$¢#�ß!éž ‚€ �€AC'!Bt$›*—$‚€ ‚€ I\,‚… $ ¶®%jö”ê˷ˈÊ?ûý:†èÈ~ÕN±2DÉSøßæß[ˆnÞ Êšƒ(wÿËINAà^Dà¿0Þ£3Ü‹÷Tú,‚€ ‚€ ‚€ ‰!:Ç}”«H$LIôÅ{êbÖ�'ʘ%‘\˜\† ‚€ ‚€ ‚€ ‚€ ±„€±¬T+ƒ@Ÿwˆ¦�!Ê•Ÿha¸–E0õHA@A@A@A@A@þ+Ññ_¹Ór�‚€ ‚€ ‚€ ‚€ ‚€ ‚@"D@ˆŽDxSå’�ÄŠ@¯^½¢ui=zôˆVy),‚€ ‚€ ‚€ ‚€  !:Þ=‘ ‚€„èðŒD ‚€ ‚€ ‚€ ‚€ ÿa„èøß|¹tAà^C@�jf[î^ÃGú+‚€ ‚€ ‚€ ‚€ ü¢#À»~.,ŒB¯]£¼Y³R²¤I,-Ù�àóÑ•P¢ä)ˆÞÿ<¸:®]!J‘RÕ\ þ•Ú¾�héÏ*ïÓ5‰ÊVò¯œ?¹‚%,‚-çOŸ$� ‚€ ‚€ ‚€ ‚€ Ä/qJtܹ{—^6Œp4%y²dô@–,”û¾û¨æã�Ó£¹s›Éîp»ñãéÔÅ‹îs_�™3Ó¨V­ÜÉ¿ýý7�X°À}®)’'§\!!”/[6ªSº4=ÈGorëΫü†}ûèÔ¥KV–T)RÐ#9sR›ªU©Xž<Ŧ­[GÓ~ÿÝ#Ž’$¡�ôééî[QÎ_¯LBZNs½ïðõ‘Ë¥£ü:¾P²$µzî9¿òÆj&îö…C¬&2<��’§N«ÍY•ÇG›±U^[xŠ‡æ…³DÉÖí·¼fñ¹k+Ñ/‰6¯&Ú»�( ssù!z­=QCûq—]þ+Ñøÿ©Ó®Ã‰Š–q'¹{wõ{Ÿèæ ®/ ÑGý‰JVt'ÓÔQDŸ¿«ÎAʼÕÍN‹n(XÂ"ØrÑí¯”A@A@A@A@�ØG N‰ŽÛLTíÓ'Ê«ªþØcôIƒÄk¨òÒàÁt6”·µG!Y3f¤:¸sÍÛ²…Ìží>÷HÊ+¶Ížy†Z>û¬GòÕ›7©ÛÔ©´õàA�x}²¢÷Ë/Sù‡ÖQ4nÙ2š¼šW–#�½¸\ñ¼y­\GÏ�£×FŒˆ¤„÷$4Õ©ã=1cÃN†Ñ œƒ¬MkDE�õÖã£ÍX¿( Ctl\AÔ®.ÑÕËÞ+mûÑ»ßÞ}™À˜> ó�ϕϳ캥Dí]æÇ¤Ëg_½ÔÚ3�žxÈ™ ‚€ ‚€ ‚€ ‚€ Ä.ñFtdÏ”‰^zâ V`pÑÅ+W诣GiÇ‘#î«}»Z5j\ÑØ&Î)šèHÍäB“§žrçu2¦IC Ê•sG›DG¥"E,� ´{†I“MÐá3gÜy¿|õUz¢P!÷ù¨E‹h:kh@`®ª9“!!2´D~Ý´ÉŠG~îÔ‰Ò¦d»@,&ÑQ«T)KSäæíÛtâÂúmçNºrƒ·Â³dcBæÛ¶m)÷÷*ÇM_¿ÞŠ7¿–îØAGÏòV~\SætéÌd*ÂÚ/e ôˆ‹�“ø â£ÍøÀmJt¬YÈ&®ݸN”%+Ñ«¬aQúi¢Ì÷ýü-›Á #JÃCi?r™Bì«jÆ�ÕÖµ*î÷svûé'+ sZ]Ùœ–)þý—Z}ýµ?#Ãý‚DFt ó‚­[鿲3–úeËRûZµ¬°·¯¸$:\w]ô÷Ì¿éØºctñðEöB”þþô”½xv*T»eÊëà†Y{„NÿÅ«é,×/\§¥Ÿ¨•ñR­JQβ9�œD�¾ø(¥Ëæ©�rûúm:¸ü Ys„B�…Òµ ×(ä¡Ê^,;å6?e)`“Jº²è´yñÐE:¸â û•HB%š– ¤)’êj­ã©§èÄ'(yªäTüÕâiú¸lŸ´�.üs�®œ¾BiBÒPÆÜ)•ü”ï™|êÔå¢{ „èÛ—hX¸_ oDÃ�¿‰êU=z¯ÑÛÝUøàn¢Ú�ªp«ÎL±¯ho|ö&ѯߩøü…‰Æ°»§I+•ª¾ý%:ú­YC [²Ÿ™\¬%å�ëk#ØrþôIò‚€ ‚€ ‚€ ‚€ ‚@ü"ãDÇ-^¸œ³g�c‚c1›…ºË&¢Þ` ŠoëÕó‹èx—rÃŒdüÛoSÁûyûx¸ÄÑ�ê_2Äíh|Þ'ŸPºT©<43@r€ì0…yzqÀºÀ¦·R°Cõ%Ÿ~j%GEtüÁ¸tœ4ÉÊûTáÂôyãÆfµá¸": 1©Ú$:½S�à�Ý®vóp2>§ÍÚÊýdnJ—=�¥¹°göºtäu»Ò�@@hÙõó.:ú»"¥n„Þp“¿ð0e+’Mg³Žåß/O™òÚ!¨oȃC(YÊdôÐóQÖÂY)CÎ 8B^úñ%*öJ1+Œ¯è´¢ãä–“4¶ÜXrÝqQúé©@µô@Éèú¥ë„´} öQ…¨ZÿjgÒnÉ’%îó¨ “&ðxJmŒy]æéìlŠêŒ2Eµí¦Ž�xܾ�¨É*¾\e¢ +"æùcÑë•T|ãwˆ>¥Â;qþ�* ³U_¶'Ú§¬¦Ñó�øœ¹¹”©"Ö猙:šèóv*öƒ/ˆÚtuæPçï-X@#7nôH„f4aÖ R‚}x wøðÐD‡•!’/81‡3s-‘èóðùóiVø‚«i‚ªË”)´~ï^«šIï½Gyî»OWé>~ÂyÖé<ï¾KyøZ##:@ŠtûñG »vͪc0ûð(eøðpWˆ ¢&¤úfìki*€äh±²…G7°¸¿wþ^*T³%Iæ}·=ˆ‰A9YåMkDE…ÛFò¨É>¹qém½‘`æ „Š) MFM—Ž^¢ÜOä¦ÖëZ›Éîp mF‡èX;`--é¬H‹+ZP¾ÊùÜý@&­®ž¹J9ËätÇ¿ÉäØ7ß|ã>÷'p‰Í½ed¢Î)p*~÷ŽÒÒH•Æ™jŸ�gsSƒ»¨óžcˆ±óp§Ì�Lôq3ûûÝx[)"QË*D–«xøá8û¯ ×lLÔ ´zœ5y?G?Ñ_ˆ‘dÉUØÛ÷ŽS§h“£“wì ÓAš”«V €¥åQ÷‘G(ÔSX‚%,‚-ç­Ï'‚€ ‚€ ‚€ ‚€  � ˆŽ]gÏZÚßñå¹ð{\V*Ö†À¢ä¼#»zÁ‚LИDGê)¨HîÜ¡\ÇqÖ¹Æd$gHõesNù²ó6vCb‚èxžÉ8w±�Ÿ3¡¡´nß>Úu옻Ó©ø[cÇÒž'¬48F‡ƒt§ô™9“–ñ"-NÌáÌÜ$:òó5dI—ÎòEpš±ÿ½È¾/Â¥aùòôÞ /èS¯Ç¸ :®ž»Jý³ö·Ú/ûNYª5ª–×¾D(éY]Hƒ¿�5_®±Leu¿ÖÝkö@ÛŒѱàý´a«K°t:Õ)9ã­ƒ“'O¦U«X}">|8¥b³iÁJ[¾u«æ«ÒkÎeQ£Guãú ײè5–µfÞTÉO†…^ðÈj�”¬HôÚˆñ1_óùYé1�‰C˜ÀÓ’ƒŸŸL˜¶f-�É#FXÑ=zôÐÉ~…èð &É$‚€ ‚€ ‚€ ‚€ Ü“Ltìf’ãÑQá¶nÂ/¹LΜ–æF“âÅ)‹³;“èÐqÎã³ÅŠÑÇìÏDˆS4ÑÓUš…oIwfâóllòä‚S£CÇy;ÖaÕ©ãNj3f í=yÒ:w:F×™z²Ÿ�•;wZ§£[·¶È“èÐùœÇ¾MšP&…¢’¸ :ЇÿÝ÷?ºvþ¥Ì�’ªý¯=ÚàQËyTýÓé�’ºÜík·éÀ’–FDØñ0‚v ääÖ“tx•2 öé�O-WºŒ>Úftˆ� ; …j¢§»>M¹Ê墤ɕ¦�îS|+°ÒÑ¥óÊ�Æïç¼÷¦ç[DÓ™à€Lûƒ¨hi¢cÙoG‡oh�ä|�Ê!ß.#*ÿœ Çö÷™«Wi “‡X»kk|h�B‰¦7„èШÈQA@A@A@A@&:vž9CÅF³þp©˜' ¨^�ž ×ÎÐñÞŽ&Ñ‘‘ÉŠg}”à—cÇ‘#t‚5: 0YÇßUKx:¡Fš&:rdÎL?µg~Š“èH™\ÙÒI“2%=�% åf ’†ì+ãQ‡ŽÎ?ü@÷ï·Z™üþû”‹ó9¥ÛÔ©´–�¯C&¶kGù²eóÐè(Ëš-è/´9þ#˜×ñEt ÐÕ7¨É°at‰ £ìÓävr�_—D‡î|vY}„¶MÚF{çî¥;7Ù»4K­Ñµ¨lÛð-þ:sø1PÒaä£#éìî³rÎÆÓfMëQãòîËiÕ«¬¸˜":þúñ/šÑd†Ug§Óìg#›mÞ ‘‹;-¦ßþN)Ò¥ n—yå߇¸îºèôÎÓ´û—Ý´í»mtþ«E°dÈ™�:éàvØ“ÎÈ}tÅ#úŸ]üÜQQMÚué‘l�ôû€Ÿ³á*¾÷7D [©°&4R0Ÿ´)ŒGÈVþÍÂÉ� Õxl/Vñ1ù}™}óÌøûo‹Üø�IC›>%ÊÇÏF+öùÓ’?93dgä1 ¼Ô%‚€ ‚€ ‚€ ‚€ $‚&:ôõßa­Ž…lÞiÜæÍ4�� é°– ¬™ñ2“íÊ•£’÷ß©FÊÜ`mަLœ ³ˆƒX«ã~ƒˆk¢ÚÐê€8ýw î(ïØ-Ü9rA¾¾ño¿�èH‰¤Ïܰ�F,Pþj±ƒåNuyû½‰¢ÃìÊÑß�ÒøŠã­¨MKЋ?¼h&»Ã—ÿ½Lh�7œÜÐÒq':7/ߤ¾”ú@•/ªXþ.Yhj½©´g¶2 æ‹è¤MÔ¿gΚZwªÕÔ»»Þ�`ŽkúËÓiçô�QξþPãÚ¿h¿ýþ>ÖDbò×DGØE¢'²XMSÓ÷ˆº†*†èÎm¢*y‰Îœ$JÃÏo|L—A¥>s?Ñ9v‡Q¤ûïØ¬K¨ãÏm\©ÂSו(ï™ìÙÆãÇiÔ¦M4“IŽ+¬í¤%“†õ˜$}“Ÿ�ª¬áòTK°NŃ-§Û•£ ‚€ ‚€ ‚€ ‚€ $\¢Mt˜—v‚ Š LŒß²…&{Þ`íŽoÙÁxT¨kÚºu4z‘òá$âšè¸Æ;Í_8�p„­ ï¼Cp„®eìÒ¥4e Ûùay·F z‰ý|@"Óè@:�Ƭ ráʯ„òh‰o¢ãÖ•[4àþr¢pýÂÔxVcÝ5�£ëŽ‹ú¤îCwoߥçúÚJG9_DG m¢ž›OÐØ2Ê ÷KS_¢b�‹!Ú’ë¯Ó༃éfØÍ€‰Ž•½VÒÊž+­zÞÛûÝ÷0{g�ÙªK¬íã¯ÀtUÞ¼ÌDDCʤ'ºÆVµÊ0üßýæY‘©Íñæ'ì“CqMtúѳ¹TÞ—ZõçYn=+Yµªªâ*Õ"=×3=سFÓ§[šºüÃì§5“ÐËžÎSÛFç –°¶œnWŽ‚€ ‚€ ‚€ ‚€ ‚€ �pˆQ¢C_&LÏ,ýçËZ¿²?ŠfìXÜ_¢¤ÌA…^»f‘ðÕ¡M;i¢#mªTÔîùçusŽØÿ]�}…À4ÄtFˆ�”íÿë¯4ŸÍsAŠñ"ôÛÕªQV6¡³rçNÃD‡‹5Z’s;3?úÈM‚DEt ®Él¦ ù µK—¦ŽuêXaçW\]¤)µ§P©7KÑc¯=FiBÒXÝ€ «5_®±Ì9!¢ê—Ué©�Ãí9;ÊçÃNç÷Ÿ§ d †SR®r¹,‡Ý^²ÒÈÂlºjÏYJž:9½:÷UÊ_9¿eòéä–“Í m e}H ¤M8i¢%[‘lôÚ¢×(cîŒtíü5šÙt&í_¨´2¼™®š÷Î<ºvƒÊ¼]†òV`2‚ˆš“[OÒäš“-ÿ©2¦¢O.2ƒ`+  ‹q*ïÖ#Z1[5ùö§D�ÛݽÃ"ó;_÷Qñ%‚fœ‘C~cââ�ðá÷éhUF¥Øßðëÿh|@ó#º¢cûÜhX¤ˆ¥½Q)_¾(¡ –°¶\t¯QÊ ‚€ ‚€ ‚€ ‚€ ‚@ì#+D‡ÙíÓ¬µæE²eóK£e'®\i}6MFi¢ñQÉ´?¤ì™2YÙ¢Ctœaÿ#}ÿ=9{Ök“Ø…’Ú'Zü!:®°¯ŽFƒ[>;àßÃ$tt=8ÆÑr„�øšH�)µåCD$SÞLÔæ�6üZè28n»™æ¼5ÇŒr‡[ýÞŠò<™Ç}ÿ³šÏrŸÃGGŠ4)èÒQ¥‘½Xv:ý×i+=2¢#�6QÙœ6shó8e›)I²$”áþ –Ss8†ÈR0‹EÔx#:~nö3mŸ¼ÝêOò4É)¤@…�£k®Yqøª5Š}˜¼ã݇‰;S,Lgãº)X~ ¿�Tøqåg#$›Ne‡ä½ÙqyuîË4ÕªùDmY›R¥>Lö­S‘A|ï8uŠreÌH!i±æONÂÂy®ëpÆ;Ïu>9 ‚€ ‚€ ‚€ ‚€ ‚À½�@¬&DwØGõÏ?'K³íýAÍ››Éîp(#/³VÇu¶Ûm‰¹]ºPjvj'Þ'/\pç‹,ðsÇŽ–¹)äY´mõ›¥Vf»7lHU‹�¬h„48ï3s&ýyð ‡’l¼H “U•xGº)&Q3²eKKÄL×aÓôÕkÏz…há4"(@Áy*¼C#¾¼¿·°Â 'ó¾¼yÖgNÂÂy®ûàŒwžë|rA@A@A@A@�{�8%:îu¸n²o�½'Oˆ˜B9sZ&¬îõk2ûŸ0'M0ë-‡´÷Ù~IÌü1†ïøä@›ÐâÐŽ¼c¢îÈꀹ.�™òd¢%räÊ™+‰sùäeË,Wæ|™)K�,”4yRŠÇYžÛìÛûà¢#l�«@a¢üüI ,al¹Ä€™\ƒ ‚€ ‚€ ‚€ ‚€ �Ø¢#±ßa¹>A !,al¹D�\Š ‚€ ‚€ ‚€ ‚€ �h¢#ÑÞZ¹0A ñ!,al¹Ä‡ \‘ ‚€ ‚€ ‚€ ‚€ �ø¢#ñÝS¹"A Ñ",al¹D ¤\˜ ‚€ ‚€ ‚€ ‚€ �ˆ¢#ÝL¹A ±#  ‹`¯³G�Á•r‚€ ‚€ ‚€ ‚€ ‚€ �@¢#�Þé– DD@ˆŽˆ˜HŒ ‚€ ‚€ ‚€ ‚€ ð_G@ˆŽÿú�ëA@A@A@þÃȆªÿðÍ—KA@H4Ñ‘hn¥\ˆ ‚€ ‚€ ‚€ Š€�"&ùA@�„‡€ ïžH�A@A@A@A ŽÐDG >ý‚-G—%Í‚€ ÿ)îi¢ã\X…^»Fy³f¥dI“þ§nœ\lôóÑ•P¢ä)ˆÞÿ<¸úÏ Ú³�(Gn¢—ß ®Ž„Z*&ðI¨×¶æË5téè%�î%I’„žô<%K•Ì#>6N‚Ává4¢};ˆîÏCÔ¨MlôJêb�Ä<_Æ.rR{ ÙO4ªgÄiÒõ1>¡Å¸\êÝ$}¦„Ö³ÿnäžüwï}dW~þ Ñäá*G½×‰ò>YnÿÒÆ÷'Ú»=bÞz͉*T�¯ÆD÷:·o Zú³ºú§k•­3HKX[.fz-µ‚€ ‚€‰@œ»Ž§/ùÅÝökO?MUK”pŸ#päìYúô§ŸÜqõË–¥åʹϸuç�X°€6ìÛG§.©…ÊT)RÐ#9sR›ªU©X^4$ìúuj9z4¹ð/‹™÷¥OOy˜É{ß}Tª@�eTFõÝnüx:uñ¢å5œ#sfÕª•;mȼy´v÷nn. }Û¶-eH“Æ�&�„�ÀSÙˆ.œ%J–œhû­àúô Ï¿6U®Ã +³ƒ«#¡–Š |êµ�.>šNÿu:B÷º\èB©3§ŽÓÁ`Û¨4Ñß[ˆž«G4žJýîÚõ«DgO©ì¹òYS¡ßeOŸ ºyƒ(cfþdñ»Ø=�qħDë—¥Í@4v¡ÿx;HôqSuéÍ> zá•{†í|bž/c¨8ª,&žë„8Þþ–èSûuÌ�f‘RDÓ7»O D6ôn«6<ä)Hôå$ßÕnXN4¼»J¯ÍsD“vvÞ;·‰¦Ž&Ú¸‚hËõn’�¨ôSDÝFe{ÀΫCíê]äw-˜›såçÅVîGífD!üŽãÌã-«¹îª”:¯5æþ›‚×å/�>®bK”ç9mˆ�ã½úDçùçóáâ1CE†-ZñÏÅKíö}…Úr¾§j¨Ôøº'ξujBtâ°Š­Éá¦ï9sÄÿù¥óê=vÇF¢ü>«ÇÔ«ïÕz5þû—�{°ŒßÅÞo z8‹É‰BüLDWªä%ú÷hÄZðÿ5‹D÷:§Ž"úœÇ(›ÕÞê¦ÂÑý–°¶\tû+åA@A "qFtlÚ¿Ÿ:ýðƒ»¥òç§Á¯¿î>G`âÊ•ÖGG¾úÔSy¡Ï¯Þ¼IݦN¥­y%É‹€ðèýòËTþá‡Ý©ç/_¦tŸ; "j—.Mm«W§´)S:“é¥Áƒélhh„xgDÖŒiF‡îh6«wí²Îg~ôÝ—!ƒ;M �`›Ížca¢,ßÖ׉ÞéAÔ®§™z‹OBF`Ïì=tõ¯ü³Y}„¶NØj…*Ñqë¦k8bœa¼*æŸÂõˆ20iá¯<Í nعøÚD]†ú[êÞÍw좚�á£#QÇþ_ X±ÐŠÝ㋹,VŠ(,ó|y/Þã˜x®âx‡F4-µtâÅZÌ�кìñµŽõÿÕ|жѪùDYï'úí¤ïzA0€ìà×Nú…µó*ªò¢oóîäYÞË‚°@þûrØéÏUÌjŸ;CéøÝäm&k[vòLÙ¹™q(cÇÕx™hÐOö9BsøU½  Z¿ÃÄ/*BBù·ãÉ®Ëyú}¯ÂÁ~G…-ê­Ë8ø;ê&¯%z¼‚Ê÷ÄÙÃÕ øÔ´ckò=0Õ>O!hÙ}ØÈ{O†ýLT5|ß{‰I÷5/²§âý1›ÂÔÆ©è¢²rŽš¯Pˆ<�Ì-˜c‹D÷:ÍwZ!:˨�ëA@b�x#:’ò?=YX»BËk#GÒQÖêÐâ$:F-ZDÓ×­³’a®ªù3ÏP¿ýý7ýºi“ŸšÉŽŸ;ur“&Ñ-Ž�=F'.\ cçÏÓ_GŽÐ�»w­rH›ÀšÉ“%ÓÍ[GMt Þ&L¼ø’Œ¬±ajŸÑá ©„Ý…ü׈¾À;#]ügðŘÙÉ•pÐá�‘¼¸]�—„t=¾ú²íûm4ëuµÂ”P‰Ž][‰^*¥®`ä¯DÏòNÞ@E/H>�—ÔÂw˜úSvbçäóo‰¼¡Â‰ù»{K¢YX›ƒžýã}g´·ë?z€wÀV‹ú­:ó®èÿyËõߌKìóå½vWcâ¹¾ÆûÙ‰*…kCôþ†¨!‘�JTóÁg­‰fŽW‹œÛ˜´‘á“`Àâ1‘!аx·ÑÚEêü^¯ßBÅOaM˜g�´î ÒýTßë–r\5uþ²Ýëm¢ic”yÜåü.–X%˜ë¢#±Ž¹.A@A úÄÑ�®P³¦›Øÿï¿Ôúë¯=®È$:n3!ñÒ AtñÊJŸ:5�}ë-Ê™%‹;?Ìb-üóOë¼sݺT³”Z4‰Ž§ ¦Ïó–ªpÙ{âõ�5‹�9cŘýÑy4ÑÓT?µ÷ÿ�Á„{ü¯,ä{þ+øÜ D‡iŠeÙå§#Ðû ¢„I ¦¯VÌV qho&—/üx -ß[ù±¼ö£Š¬p..Fu%][ýú�"H$Ê’5ª’.Ä1ñ\ß ã»†aâ 2koH(¡Âþ~û3è]ݨs-ïÕÉ|_ÄÚ¡±± \sbÚLL”Vy°ÈŒÅfH¥ZD#y¾Õ.ç°à\=?›�b#W>Öã9E‹Yî»ßˆÊ<£S”ɽ6ÏóvGi�¬dTI“©ô>ïýøü\»ÂÄ@6—j—�0�h ©8ä$æ¾`ö ¢Óv¶‹¸@Äl�õ bÄdî.&:˜Xö&ñqOÌ~˜Ú ¯ ñ㼇fþø ÿ6O‘H0O†MM+ý¹Ž(SJLzˆDŽÀ3÷�;¼¶Xäµ³?6ž'`²Ô$G£*s/¦s�BtÜ‹wZú,‚€ Ä ±Jtfã·l¡Öv¨ÈÚtÕãùòÑŸ‡Q‰¤áo¼a]騥KiÊš5¤Ói«Ø Ôgáþ;ª³VF×¼%Î�L”´ 'Jà§cd¸¿ŒÈˆ?tú4µ`�Ö.™úÁXZî%¢cçô�tíü5ÊQ"å,•“,9@‡V¢óûÏS¶"Ù¨è+EéþÇø­Ü‹Ü¾~›.?HGÖ¡Ðc¡tíÂ5 y(„²ËNùŸÍOY ؤ’.¾s·ÇùòTÈCûæí£ã�Ó¥ Òo•¦;7îÐæq›éÔöSV›:V ”éSê¢Ç㛎[ížÚvŠn^¹iåÏW9å}ŠÿuÅ¢³��Ý�áJ@îžÁ¬4:¼ Ìgl[¯ÌØÔiæ-‡Šƒ£i˜„ÀÂhµ†žùМPÿ±Jí„ þÜ×jB›à¾ä$/ˆ¯Y¨L>`¡äö-õG¶ôÓª¿z1ÅWù`ðñU—¯ø‹‡.ÒÁyl*Ñ´%M‘Ô#ë©§èÄ'(yªäTüÕâiúdÇ”t#ì=PòÊU.]øçí_¸ßª7Eš”³LN*Ù²¤Ïñw/°CŒ?uk˜—ÝÄ [떨ݻpN"X¨0åOÞùŠÝ½Z¾xO��r•Ùo/º™»ÏÙsª,®A›A vk“*ÝF%·§Gk¨S»äwîÌ‘ ¾'ª­˜C´yµÚm\°ˆÚ­•ÃNØ©ßÀŸ‡ˆ`?æŸrçWö©£"Z°ƒvÏvÝ{å òÁ‡íó¨B]_g²â{"˜~Á¢·EKouÞGTçQµ¸Ø¦+ù_xæÚÉ‹›ØÕ�kñÇæ Ìzw8ž{,˜á~G&xÎqÿ�æ³°˜h›˜ò.uÝvdíE–ó%úƒ1?wð!qn¢âåØÏ™¾® ãe0ÏBÛ‹W¸÷«õ[D�{d8xK»F4oŠJyú¢”©Ø4 /:bÇüÝ;j‡~“wÔ‚³·òˆƒÆT±ëÚø=(UQ=ßÎëŒîsíìCTãù±¸ ,±Ës”7Y2S]ÒªÔW ó'«ß.`òp16Ûô�ÚiÍ<; /VÎUc¼Ñ›DØMíKô‚7ú°)Ô^ð÷•ßïÏ|âdÎßDx0c°&ÏA àCb ß3žÍgyl†]TcmßC§røÊX4]Í»[¯Û$ˆ&NpŸ7\Ró•ªU}kM œñÏ¡û]áÕ'Õ;É“U•Öî£6‰ƒç¦�whO@ dîd¢üÚ“<8B`lþTõ­ç~§Ï¨âƒùö[g½­¸ßð�„¹ �¯÷˜ø¸'f_›<¡žKZ¯w êÜTÝÃ?oøžƒÌòþ†± s>1û"}07@‚ñçKKïš0/ˆû�ññÍU&¦¾ãó}8:×ó´[×* íáw-¾·˜«0ŸãçÒs “mT²ÏŸQs¸þ*ÈsLÀA°¾ýÊWQó"Þ5¼ Ú-ÇÏîoû¾Do~â-Wôâð;óX�¥Î¹ ñz>F8_/YH|_§?DÇñ°0êÀÖ ^çuƒ=D°&•ëk#ØrQõGÒA@A pbœè¸ÅoÊsöì¡qLp,>p€îòjË�?Nm‹uíkÕ¢aóç[½�þá‡ÿM† £“lRêCNƒ#oˆItŒ[¶Œ&¯^mŃäÙa ¯éЋÐÖøHÁæ§–|ú©•Ñ�L¾û޶„ûýÚ¢…E¶X…ùë^":FAçö�£ÒmJSØñ0Ú;o¯¾ ë˜Ó™ÒfåÕ(C~ëó­øl¥H—‚º]îf¤ØÁA¹Q؉0ªðQʘ;#-üp¡�*úrQjôS£ñˆ¸ˆ½Ë²Ü³ÊÑìŒo?âb2ˆ¹üJqõ²™Ûc‘·Ïx&²šÙqÑ ™¦‡à÷fìjq̬‹¤S×{·ûŽß„no(BÆ,ƒ0扳<¯3ºÏµ³�¨Æ;òOÆÎ¹Û«’À„Ž)¦VÓaüS€ßJ³lßcÁ‚Em8ÏÆB¡Ü›UÿÁ·7iSC™…*Y‘è‡5ÞrøŽów>0O\©�ÍZA2à ¦‹`ÂB‹ý_þC>áß÷Ù“TS[æ¥ñ+HÜù|tйø? IA •åù ï0­‡ùd”ÖÌèÿ‡µà#|b`Œ9M[AÛíànE.ØçlÕÿs±uÖXá>EdâYþ�Ÿ}I|ÜÝl0y+|¬Ãtüai3cšTÒy£{„Y6˜gƒ#öw{y¯M›WÂoÓ¾5 ÿÙÅÏWUÌ€}Ôß{}ÁÆÆ×ûp°ýE9`Û¢2�y~70„$üw�H…à÷¿³ø°ÁÆ%§à¹±rQKd>À°ÙÄ$¤þkÄ´`.¨YˆèÔqµY¿7¦œ9IÔŒû�ßHüçËc[k�Å÷ušsœ/;ÙbC±ðÍŒyx­¡eÉ’ÔŠ-> ìK‚%,‚-ç«/‚€ Á#cDÇ~öyñ “Ù|Ô)&Lé¾-^dí ­ÑÑ·Iš²v­å#£ÝóÏ40Ú~ó ¥Jžœ&¿ÿ¾E. ¼ItôÿõWš¿u«Uí×o¾I…så2›°ÂïO˜@Û¶Âs»t±L\ùCtLZµŠÆ/_n•û¤~}zž‰-šèÈ”6- |�ÿaû�lüÒ”9]:wj|˜®ÒD‡îDÁê­îgw�¥¿gò¿V–�‚!ôÞÞ÷(IÒ$:]:r‰†<8„’¥LF=ÿe-œ•2äÌ@ @¶OÚn‘$I±Wx{e¸¸‰^e-Ö¤A#ãôÎÓ:™}ñQºtø�Ø|Âj ÙiBøM9\¦Ô™B{çªèÐ4y¤î#”4yR‹ �vä©.OQÕ~êíþk½Å&Ë‘:uêPÓ¦M½ÑŽXA>À®vT‚]M? W¹\w‰¾çÅ)Hd¶ø±;øõJ*ßì�DØÑîüÆ¢4Cì·wHâ�Ò;µ•Mj”ÁŸ ìÚ‡Yìƒ`ÑxÿÓ»ñU¬2½ƒÅä/‹eØÁ3Ø ‰?,k—á öö(>Þêˆ*.&‰ŽÜås[c�xh# �¤Ë'/Ó¡ßQ¡Z…èå/{íŽ?DG|Ž=sq R +­ì „@Ó„…–ï‡ðnêcê ÚøÓ iö¾çÂ)êƒíwMÂíçqŠ]¢Z°ðÁŸxýWÅ(²Â\x‡}wìÅD\aÑe—3¹�…v þºÃsw5H‘z<½`å-¥ÚÃØÆ‚vÂ~8vñb'¥/©žŸèø!;5S_7S»˜±ˆ±„É _‹§ví*„g  vÄúZpúº/Š|ñ>9ëÂ9îWÓŠ*Îk»p¿@¾øCÚ¼Y�MŽ,QÃùíÈÁµ‰²Ñ‘¸ž/ÑWì@ïÚ‚±º­´Xžåç$IR¾—3Õâ(ò4ÿ�É´ð1�sL a‡<îwEÆ‹ÇX@‡FæpŒk,¸Ã· ´cbBÌE~Ô‡9‹ý—/ñ³2[íòG¼·{ŽEó¾ï+�ØÕ‡¦ dÁ�Ê̯¼MôÙW)‰Îs­ëÐGÆ;òbÀs�gš?o³wàOË» ÃÎ1G€Æ½ÓaÌ9¹ °VÇDœ)Á|RŒ??}­ÎûNä¹ãõðDÇA/ŒÃ—|J"þÎШÁ~ÈàiDÐ<Ñ‚9 >ް ˆk© ‹áX‡L\‘ AüÏñœ·!&øõ ï Ð*Ïsï#¢^aSS|ß�2Ïä?ð;ASE^à~@0¯l_¯H%øà€ö]íÂJûš% 4°( Ÿ&H‡€D»˜ç¼91W¹üûö[³6Ì)Õò©˜&툺ósàKâúž˜ýÐÚù 1ùÍ¿yûÿRD*òÀ�CdHf=þ„õøÀ˜ÃØs Þ_{ZÅF¥€ù÷‚ñÝßU“ý_ïÃv aü¿^Y{x?Â3ò?? Ñ %£äìül@ Ú[Ïó|±Ÿfx÷9~ÈŠ²È‚[ªwqÌ£¹òyš¤S¹Ô7þoôû@½ó­;¯33=¦Â˜[AšCý¤žm„¡á…ÿ/ DqýÃgÙ-ÂuNÍ~ãx€@ƒÅœrðâEz쫯(ìæMw´: Ýñ&µ ¢äµ°` ‹`˹;&A@A@ˆ9\Ñ�ë·o»¦îØázî»ï\Izöt‘ñy`à@Wç%K\»Îœ±ZظoŸ«R�ÖgíîÝ®™ë×[á·Ç�s�X°À ³i*×åë×ÝùÆ,YâîÝÇ“'»ã�œ=ëŽ7]Ì<áíž s—ë6uª™Ýž»y³;ÏÄ•+Ýñ44È�¦ûïíøÕâÅåºÿø£»ÜÙÐP�´Ø:þðpWêa}Vöò¼ŽÅ�»ÓŽü~Ä£ ×/^w­ê»ÊuùÔe�xœ\¿tÝ58Ï`«ì¸'Æy¤+8ÌŠgGÎVü•3WÜmL{yšǦ¨\=“õ´â÷-Øç.¿wþ^wÞÙmf»îܺãN»{û®kZ£iVz]¬¥b¥;vŒÿÖS@Ÿ?üÐ]¯3pýšËu•/ùúUgJÔçÿìr¹Šð2>óô�ÿÜi;ßâó­_f§ÿ0Ü3ýãfvÚÄAžißµÓ& ôLÃÙwC\®Ã6Üî ¸Þ ÷©²�ʸ£½¢ƒ�× ½DnŸ¼Ý=0~œ²²÷J+ýótŸ;“Üçst×14ÿPkî4.¹èb³nqæÉŸßýé.ϦØÌ$w8>ÇÞ~îºk%R¸\¿ÍswË Ô/®ÒK¥õŒ7Ïz½­òTÎiÆF>û¯Ýöô±Qçÿë;?úüËDÏ2o½`§ïûË3m!Oú:—ÌôLÞÓ%?GŒ7c.�·ë@]³š©‘‡üírKªÊ�êy^gjÇ&ª\ùÌ.Wègª:Ç3Œ>Õ-ê=ÝŒý¤¹Êûl.—ëö-—«lu¾hº™+bøè—«(o_@;?~årE§ÍˆµóåÁ=öý«YÈå:sÒîï�ë.×3÷+\ʤ·ãuhË[<ænÞÐ1öq\?U˜®œkÇG7ôÑ+v½x..¯ è ÚÃg|Ï–Žìw¹J¦Qi-«¸\aíô;·]®¶µUÆ�¯±èsm· BþŒw]f)¿èk™9^Åâ7S?k¯”s¹®„éÜê¨ç4\ÏÀã©T=M+¸\wYU‚ç uO£Î�ßÀJ·=w²35òó@惇ív&�ð¬wt/;mí"; ׄ±ˆþá9¿c¿Ù™8Tã!•§xrûºÿXe×ùÍÿ<²»O¾êcçA~Èœ츃»]®)#Õù �]®N¯ªð·\®Óüªq›2J•Å7žÿÍ—v| ¡@°5ëÆü¯Û×cÉL7Ãq}OtÛ«Ø}œñ�ŠÅ\¤ûÕo˜®ÇßcïwTÝõŠy/Ñü•þlî¨ßuûd÷óiLK|½{ï7Px`.�7Õ®Ï*æ&}Oë—°Ó̹{ójÿUo;¯žðŽŽò•°Ë:Cú?À ;Sbö×Ó°¤êÏóÕï æäÆåUæjóúÑzB¸NüÞá? >˜O}É•›7]ßoÛæzvâD¯k]—-s8Ï/�áÒ“×2ð T‚-h;’_A@¢F€_ß°',0Ùuö¬¥½ñkoœ»vÍ]8oíûÈ#ô«†V/X�’a«p¸lÚ¿ßC£L"ðkžÝ|ÏF�¨,ﲨկŸUÊÔèxkìXÚÃÎÃ!³:v¤,ìOÃ)}fΤe;x›0ˈ–-©xÞ¼ä�FÇZ6µÅ$ˆU®&÷½s½zV_Z£Ãá#иbEz»Z5wj|jt¤Ï‘ž><ü!%K•Ìݘ´‚ÆÄ©™áÎä#°ô“¥´æË5ÓWݯuwçÒÕT'øà€ôÏÚŸ®ž»JÏõyŽžéÎÛY -­‘—¦²FHcÞÖÉ2¾Âx:ºî¨åûãÝ]ïZÚ$VBø×¿þK_—TÛ5«õ¯F;U¤ÐÐPêÔ©“™-ÊpõêÕ©aÆQæ 4lTÃV5عçK*fU;ÑaæpLÑö²a¶½õ®zìþzáaµ3v}?e–R6sõÎF_&/Çž¹Ëò�ìX·§ç…aÇvþEæ<¦Ñ`"­Rm64dz|dg0]òvM•Ãt ë« |2ôh£R_ã~Á$�)“y ÂNtÈ(ÞµÍ-£zrßz©3ø!�?’@eÓJ63ñ¬]ªOÉãÛç‘…´Í{ìê‡6‡ÓV¾¯²0ñ3SØåü^oÆëSï9µÙŽü�°æïä„ìÝN¤Í�+l,„½þJ9•é%½W›'1wÙ ÌMT|ÞÞe9ä6qñ¥ÒLXqL™¼�é¼`ÚT=Œ™ïØž/ÑËo*,¡€9ù�¼ž}ÇŽUì\…b>æüi6¹”C•ë?™}#…Ïû*&øo˜ �¦Æ9v}›ãÚ|0 éÊÏvÓ÷TßÚG®s6�=ø®1Å4]6ùw¢ÇŸ4SU8ÐçÚ¬Áßñn–Á®`ìæ†v®§c¥í�ÝÑßs¼iæ fª ­œ/&(ÿ(ˆ+“N=c½Æò; ßk©y¥�å…á/Pù÷Ê©*xûÚmË�ùÅÃ-pP9¹õ$^uØ zãS7)¡‰ŽZ£kQÙ¶ü/žE“5†Ô øØ€Œ|t$�Ý}–j]›Ê¼UÆŠë›±/Ý »I™òd²È“ð²t68ׯÑ }*Þ¤85œÒÐ*—P¾v"š0P9�ê!ÌÀ|€óÏÊŠÙlS¹žº"Øq†óO-Ú¦7>aÎʹ˜…|ú#Ê¡¼S`¢j×V¥2gä0�Á"LÁyåÄ•VT¼}Å$Ñ‘½XvzgÇ;_‹?DGÀ•Æ`½8sN«Ø”‚Ó9öû ”)˜sñ懋,X8Ä‚ /³J¾º‹?ìøC i±˜™ôn«ÌÉà�×fYÇ»YfçjQߨ×b™£‚Ï ˜Þ2Å$´møùiTZåš·›7<¿aX,¬ât>³„ÿ×�‰”!Êä L¿ø»pÌ| }Z™L‡ØNdú9G?�dâ °�_9§ ›$u××í1iúíP9Õ·&—0wk'æz![û+1ÍÏ T?çp¯Íìá7¦áÈb’…¾ÚU9}ƒ­® ä |ðÀ¬œé ]§;�qyOÐöÚEl>§†êEçAlö‡ÇŸmBMÏÍ:d5ˆŸ@¤*ÿæëºÍßT�TØÀÁ³ö2¿àÙ)TB™µÄûddòDE´—~Z�‘å 6-.߇¿þ\Ý“@úŠ� ð©2 #Ï÷|!ðEƒÍH¦˜f¸ÌçWûC�?'ü^CÚÕ%ZÉõÂ6+@@À‚ˆ5ó©õ †¸¸�0¹‡ß‰ØÝO³�­>6cTø^¾N\ÃJ«ØÔõ6‰=ãï¿éÊ-~—žáG!:4"rA@îA Ñˆüuú´‡‰ªŠãÇ»~?z4Ê*œ¦«Pà×M›Üæ�˜¤°êðeºªÓ¤Iî¼ÇÎ�óÚ^×)SÜyr?!þ˜®š·e‹»ûêð¨[›®zyë ñiº ¦ ¼IϤʄÔÚk#$¯¾ÞÕ?{· mËy„)*-ÚtÕÖ [u”kx!e>kÓ×›Üq_=þ•Uïº!문СQ¶c¶ûí3ߺëJ(­¶þÚÓQ÷è³7•ú÷‹�Ûy¡*SP]oò„¯CÕò©´65tŒçñßmúc`'Ï4˜…èð²�®Õë�Çžoy–‹�³˜4]õSß‚ºLWUq jQY�˜ ð&UT韶ò–êríÙ®Òqÿ—ýâ=�¯Ø^Teͱë+/âa†í ÏÞä—ïì¾ _¦`L?�ÃNG=0Aô%[Ÿû7ꟳª€Ãí_Rí¬›iB(ªŠp ÚTÔ˜/"Ï­Møà~ALSK¸VmÊKÏ ŸµVùðÝà1Õ¿YT\ç¦6Nè;f­POñd.×ñC*.:mªbæ;¶çK˜Hõã³m½÷>ïnç�© -0>Ïå±Óu]Î#L>Å„lúÍnkƒç+‡U=î³nÛûæ5èôÈŽë–zïm Ïµ®%�ñ®Ëèã ík‚ =˜Yó&?}­òa.Ðò3¿à:ñ|j�ù+Ä•NçÛìS³§TžVUu)ÿŽÁÌÚÜÌÝ@ð¯ÍN!M›ÛR©.×�OTßp ¾æe˜gÒ÷&¥´è9¢J^ãy¼È¯È0u…²�JÛiÚÔ×çïª8ŒýÇRª|˜ãuß«¯âœfö`¢uúj×nÉw(lum0óƒöafljË{‚þ¼ú¤êß“!ͱÕ*¬Ò:6öì9Lšê{ìïqÒ0»ŽSÇíòæ82MAœVTrô»ž~D•;øô¸|Öω¿¸>‘ž.}¿`*Ï›À”“®&Ý´h‰SGëõ¼ ¯ižV×ïËôænoõÛµÆ|ÿt›8îâ»�{ù:Í«:s劫ïêÕëÁš  ¶œÙ ‚€ ‚@Ì °FÇÙ«W©ù¬Y´èÀºklÏ+tß}ôúc�QsþäfÇÜNñ¦Ñq‰ëêÊ&£øRè�gŸ¥²lîêÊ�^5:úýò -bSY�±mÚP!Ö"qÊ'Ò¶C‡¬èÙ¬’‘µ0ü1]5yõj·Œ·³t®[—j²ƒ2-Z£#GæÌôS{ÿ·ÔħéªríÊQÍ‘5õ%¸�½’õ"×]™¦¦�¸eüšÝz¶•/U¦TT´QQË‘sêÌ©­¸ƒËÒÎiJS¦kXWJ™ž·Ó±h�ŽúëÓã¯?nÅ�,ÌÚ{ÎR�1u¨tµsL©1–VˆÖò8ý×i]|´•¿PíBô0¶+G"sg´•cœüó«) !!!”% o‹ŠaÑ»ó¼™çq6…¥ØYšŠMPÀ´v•ê�ÖÈ;iµçÎuÓLvRaG•SŽR;˜ßk›òh­r`×7aÂ*vß?W�è‘Ç”ófìÇQmÈ›:ºª%î¾cR£ã‰ž CkÜy4:âkìaŠÅ®>ìîsîÅ…ÂY$Æ"ŽYá Õ)¦SÚ@s£íØÎ3ûŒwÖìyniŽðÔs-¾Æ-ÆÞ¨žªž½SX×/c¿PZ!p­cšoð.˘hG`÷<°†SöÖ]üo¡ýKÊÑ5ÌA›$¾Âá(æ+ ©¡M-a·-ú0a¹zfµòYW¨¸ª­YEÞ•ý»zÖa¦¦ï.…¹4,²Þ¯L^©œÑûþ~(ÿ&|¨~ °cÞ9n`Þ ;þáxš>Zô.Z8¿�J» e~á1GÞN ä¹6Ë2ÞÍrpºÛüe ñø½Âï–7�ƒr8*úå y´†£iŠn0ÿ6¡;Æÿk#Ö Ʋ<Á ø›Ÿ°öT߈y¼Å;ÀÔ?ü¬BSÅ4!6`Ší0^·Ù�çÔYÔ™/3LºNäÒN¬1¿Z¦½øú Í8§ ^Ô�I<¼§˜ÚŸ«œ$#ÚÿSæ¶ I©–O™Ç4w›ã½D›óÕ®U8’¯`±E•¦¦’é =’æ,³\qqOдƒûI“Î6÷¥bxþæ1 ¡¥ˆw>-0) M­@Z7æs]>³zGп_ûp:³GOVes†K¢®}éÏìЙ; }y>¬×\…cú;.߇1?àyñW`º ï:0‹W:­2׌çb˜sÊ8~WÚU™›„V7æpSëÇ DÅÙ4ÞÅ¡} ™Ìcàqž¯®ñ»O9ž›ÐŽ/p0A S”N­*USì|ëß]»6y§Ïõñ^¿Î[ üü}ûæ·ç²EœkÉËÖZ^âÊ"9 ‚€ ÷ Áò%‡/^t}¶b…+÷àÁ;!’öêåªúý÷®¶owÁ˜o:Í<úÒèøš�}Wꡜ™¯øë/³ˆ;ü2÷yªp˜„±Ä�ŽO M�?pׇÀ½¨Ñ1¯�Ã[qøùÒèQx„¥a1ì¡a.o¡—u[æÖÀ¸vÃ��[£c¢­Ñ1âU×cþpçc_Vy­Ñqó2;(O¢´Kà$Ý_‰i‡Ðþ¶ë̇ÝÒzדÓÙ²3/Î×,´óc×v®ÃáêÀÎI§ìÝaçÇNco‚Ýbº[ íPð©ìÞw6ÃA±.·c£·šã6nÇÔî±uù´±Í:¼‹:.²ÒýqF¾è£EAuÞ�Žø{¦3ÝyS"^ÞïKìû¹õ÷ˆéˆéû¾Êˆcn”î`=V|�CäÓbŽ[s7£NDZQU'4–"8ÂÄîTh4i� 8[DÛ"²úÍ4ípô©lÊ©¥™Yx÷Ÿvß|íÊ4Ëã9žx6áìΕ¡±'ïˆ_À IŸ¼®ÂoœØÂ+Ð^$¾Æži~ÂÛXß_ÝsóO´³û0¯†qa.ð:óx;_¿ÌO&™æ-/âL³TÓÇE̵§]ßW}"¦ûŠñ™]nå\_¹Ô³4 £Ë¥? ¢,i‚À4 U9¤kó. .ôFdå°PŒû³&X°E&yô¢-K¦QñX€7E·5²‡Ë§zµxŠEa˜ó�‰ Ôç4é�6Íö[ó‚;êן¨ýͲ±=_¢-Cè›iîÈìƒù�PÒ¢Íè”LíýÂ䋾fosª®$£Î§�‘Ézþvš±A}XÐ.“^Õç4R.£Š÷µ¸¯ûÙ1ÐçZץǠ¿ãå`Vc˜`Üb±½luóYN!…{�üÈ 0O…8óÞaÜ#Ï�7™=I¥#�6åæ-Ÿ�ù@?ƒ¸GWÚmcÑÙ›À<ú†È'§Le§›cO¿? ÜÊ9ÎR*N×Û®®�®2aªÊIèÙ¹\.“<Çuh™6Æî�·vu>_Çè`‹:¿þÜnß©ïl;®îÉZÞc¡1o[ÛåAäüÀô$ò€äÓïlÎþ{Þí U7~ð^b m}ÜÌÿßzA•ÁožC$ÐyuÆÕû°?ý÷•Go†“GDÌešxêØÄNÇ{ ÊÀdšl‚@6$hA�ˆ‹ÌœÞ å‹lÐu9�ÁÜ“o¾TýAŸ0/ÿ¯ƒ:Ç{¥7R4!\§óº}�_½uË5xÝ:W ^0×'.8l˜e¶êdX˜Gñžœ†O l¹@Û‘ü‚€ ‚€ 5üZsr<4ÔõùªU®üC‡z¼P¼ñË/Ñ&:®Þ¸áªñÅ!Ñ`À×E¶«iʘ%K¬4Óù¥FKdDÇ &9Ú}ó�»Ü÷¿±ál‡$v¢ãÖµ[.­é1³iøÊ‚�Áé�§Ýé DbŠè˜Ùl¦µ¸Œ¶Ñ†/¹s‹W9Âå.ÿ;<|ø°ëСC~.]º¤‹ÇØ‹øC€þâO­^¨Áb&ì“£|ï¶Þ»›ìHÇ»ºœb.€`qY‹iÓ‹!NÁo]/lþ'9þÇq7ÉíS®]¸æú"ñNtßd÷aÝP{î0û_cOÛqǧÞÑkö ¥¸§uŠ˜±ža½#Ý—ÏÜö™¹°eú °sx†Ì…;ìV6}·žê+4ô.c3�¯°¶Ï�ëük“¯\.ì–ëñ�#|{D%XD^,�ûCVèúvn¶Ûš8HÇF~4µsÊeR>!°àˆ@ôAÛÏ·H {Ú³*Å‚ò Ž?}­ÚÒý׋¾N ³è´i^ 4%Юþ êl¦FŽíù­clë¾a'¿)Ø1‹E&¤c·½ùiâψsñ1ô‚½`ˆ² l| v˜ëöqÄ´’¼ Æü¨ ˆJ§€ÐÔu� 1EkDÁö¼7-�7²´@ŸkÔÌxñŽy ׂÅuìä†à7P_ßæÕ*Ncã€N;vPÅþ³ËŽ;¼OÅ™‹¥ ó¼É¸~v9_Ú#Îrúy t>@=æü£}Ò`!Ó©bU_«ÓO ž[¢HqbΗÚÇÒ@$™‚w]ïæuƒœD™—J™%"†õÂ,à°Kv:|zéþ:ÛµsùE[ÔªýÊàÙ2}ìøn1îî‰Ö8‰qòˆ÷�îeãwæ¤÷<ÁÆê  ¿ªÚÁï,žEk‹AÉ_ dÞÓuÆÕû°n/˜#üé±þa#Ï0·¶­e§›$ôýäu»ÌG¯¨¼ð«¥ESÞ4ºuÜ?ô¡Ó«:Æ¿c ÷ÄÔÇf˜›7\.üöéw oþ�Âuú‡¿3:üЦìÓÇõ û]úÏ?nËκ‚%,‚-çl_ÎA@A úðkTÌ ¯ëº³ ¨—¦Ms¥`-�˜ :ÐËÿ1a"Ÿvì}Ç‘#®“.¸¦®YãÖʨÂí™$ˆIt´â ÿüÓ5aÅ WŸ3ÜÄ êyrÍ0µ¥QÑDÇ ¬í1wófŸŸyœvó6¿‡‹éŒœ}€ø,‡:÷ž8¡‹Eë8üaå<`ÓUáæ¦ú¤îã:°ô€ëîmÜAþ“´ù„K›§ÒZ1Et\3‹[º=µcR<§f¼·¾˜‹Œ¸Ÿx¦!=ÚØe1gèx•êrE§M]îÌþ! GÐþŠÆ*¶æKôÃ\Üù�8|×s/æM§ù7Ó|vÞkcCk]èk�lѰ{KOŒ"«xu�Ø=ïôQ§ë…}�ÏŽN¹vQ§¨qˆ�öX<üáK}®Q�¾‡þŽw,�kÜAêÀá²üŽi²¿qyO‚I;•Çb½–¹“Õ5cNÑd”ÖÂb ù¨Ëà8ã+ô&d0¿àãÍ^tæ´·hºÝž¾GÞvƒ#/DœÈ Gà0Í„EFŒ M! ÷Ë�+®;ÏWÌæñ?Jiì�@ŒõYÌR¶ ¶¨oMžk\ºmR ‹ùÀ2²�“ä [hšmÀL® cÃŒ�Œ4ˆ‹{‚¾ _øD¶ûä´Î™¶—Æ;�#ž{]·Q™·ÃØÑ8šfÍZT¶ã‘®çDoý dÞ3Ëë1¬ûïÃf{�†1§èÍIxÿ€Ææžs§ü�²³#3ˆéŒÜÌã-üJ… Ô¶zuoIÅ�(4‚Îí;G�:#ß6iÍjn{´L›5-¥H“‚xÑÙj?{±ìâ�˜pFnUÄ_[¾ÙBsß™Kwo)Gp©2¦¢Ly2YíÞ½¡³Q»�í([öʲï/åÜÛlÎ µï:8�ÔR 0Ñ´?ô™ç± ;�œ£†¿•ðn/¢¶Ÿyæ1ÏàŒNYµdÌ¢œ*™%N¿žO”9Ü5âЧ—ËíÚŠ3å$ñÁ‡•Ò[7•cã½;TZ7vtûê»*ßßsÚÌ¡Íã6[ÝH’, e¸?1ÉÀž‚‰²ÌBç÷Ÿ§éRP·Ëݼv•É ;F>ª@Õ÷m±�¼Ñ#è#u¡&¿6ñÚn\D>�]9ðmú?{Ã=[¼zY9´Ä ÞyÑë<ÓõÙÇ͈æNÖgö1iR~y,§HiÇ™¡v±ÃÚLjnß2cUøíîÊ9¸NAÊóÔw…oœ$kGâéÙá&oÞaç¨8·…£S´­åð>vÔ[HŸ)GЙBØ‘ênå,)é¹îïV~ÜÎç Á¡8œFkù…ÇúÃÅôYÄã;µÙ¹ô<¢ì9‰`ÖìðÜùkÑ+üüAà¤ÎJý`¤8™^zX9͆ãØÇøàùM—A9*n¦ôÿˆ¯°Šé4�¨ŸCFõ$‚ƒwæÌ+¦D§M]Ïò_ù^××gê8/æ§Ä×|‰ñV›çßã‡T�øUÀr(Æ8tíý QýÖ©ûké,vÀû¢ûÔ*ƒ± g«ǸΪyv-}IÃ’D»ÿ´Sk½JÔßË3‡SG}ÞNåýýƺ)ƒ:};€Ç<��õ•Ãr�ÆçµUŽ™‡>æÊÇ·ù9þ÷¨ý¼Àù4œP{“@žk”t¼[οŸç¹e�ê{Ÿñ¶ãkÝŸ™÷Yku6`*?ÿ�UøËö쨙Ÿ©'ª°£ñ¥áé‰&òüV¶Wª¸<Ö¿îCT¬¬rÒ­b=¿Oáû]œ�4‡zÆãÌ9!.Øùe!p6Ýì)Æ7œ×/>ù¼b:·KªÆág_5jc§`.†Cp=¿Ú)v(Cf¢/¿'ª\ÇŽ3ywÅï4ïØiÎP­Gˆñó]ãe¢A?©Ô;·U»úýÃYÆy>ço¢Ì&ó¢Ìãì<ñb­ú¹ÙÏ´w¯®„Kš�4T¹Geb "ZÞ}9¥Ì�’º†vÕÉÇÁySè±PªØ©"Uë_Í#-�6�E뇮·H½[WoYE ×/L�g…¯ÂRY ä=†Dä‹ iÍHý'Zåöü¾|‰ŸÕψVÎåÜL˜]WéX�™»Ë3¯ólÍBµðø'/ä`Ñ\ÿÉø#Ñ ¯Ø¹M² ¼«áÙÑS4ýj6!êÄ ¸ø³l �>íÔÂ(þ\›’œ§šoµá[ŸóA3Å3ŒvJ§µAZ`� 5ÞdÇF¢ÆáS$IþÊÛ5ÕõåÈÅÏ1?oþ$ècñðkoÏóÁ›ŸØ->Ãøœ;¥úá$´�K/ìb ‰~öúšðÛ*² ñÀٔ贩ë1ç.Äañ�)� N‰¯ùýÀâlw+XtÔ‚ñóhI¢·º=[WÇzÇ÷Wdèµ`a§çE$­[JT�§•q‹uªçÑ9ö�j’Qž¹ÕXÿq´ÏK9S™°ªE´j¾ç¾™ ‹š_~ÈÏó3V…³dU× Ò×àKü}®Q>Ðñþn=¢³UË!jÞ>b/@î�DÝ¿“(/¿ â÷ÒšqÞ-;}Ä÷ò¿Ê ¿Íùš?¬âÚ7$Zò3ûoõàgÀ—`ŽóÑÎ?9¤ WçâxtæÝ6Ÿ/¨ÏTÿq‘ ææî-Õµè|Xȡۢ£Mé4�TuŠè3õ bNá߉<ˆª4P èNòlÃrã·ŸŸ�ÇŸ´ë0C P0�bLwø’¨ÕÇ*õТZü{á�à½fc¨Mf‹m圊pŒªÍEŒ{îüÞsÅö=1‰”j/ �齈ýsÏïT:¬WÞö�7Ðܯ2Œ»þm�lãê>~ˆß}`f¶]¨8/po7cìp óž]’ÈüM‰Í÷a³Í@ÃØÐÔ÷¢ãì’ –1çà·bÆ7jÜaüAôXA‰ßGüFoß 6Já·rýµa›�”Pe~;ñ7[¥á]¿ïó§ªÍKšÜÄæ lâð&þÞü?x½’j#_!~Ç[­æg� ~"êØXÅþïõ?"!\§³Ÿ1}î$,œçº=g¼ó\ç“£ ‚€ Ä=qFtÄô¥±™(Ú{ò$…2‘Q(gNÊÊä…Hô`>tæï3Öîxhq„<Äÿ ãHn]¹e$—Ž\¢tÙÓQ¦3YÚqÔ|‚m;î°¸qúv]åÊuW±�2 =räæE.ç\\Žº–¸ÏqñÐE:µã”ußs”ÈAI’ò¿C‘{óñ<^ßgìüÃâÎý< …ÿ±�ìb ùq�Ë‚Œ!¾õX¼Â'UšÈJ—¦Oñ|,äç þ^}Råì>’1ÚùSJòĘûNV󚊕ñoü`¬bê /Жx‚5ɲÆU�ƒoçâ9"Œx^2ÝÇs}.õ¼Ää\ÿ_ïÁÎÁß=Ï’ µ÷ñøÃBe‰òŠLôÌqïžÅ7¶Á"—˜ïI°˜Äw¹`Þ‡£ÛçSÇÕ³iýž”õÿ]!ºíJùøC XÂ"Ørñw¥Ò² ‚€ �x¸g‰ŽÄ{KäÊA@¸·ü1›šáØ‘íöO(Wdî¬ý”wÖ7nëÏÚÔ Z»ˆÉ›<Š ñeöËÿ%§ �pø/Œ÷èÌ ÷Î%Œž ¶ ã>H/AÀ‚%,‚-çÏ$§ ‚€ ø‹€þ"%ùA@¼" MΔ~šèûU^³$˜HìÔ…¶;þaÞÈ_ù{‹2�•5ïžgS1"‚@bFà¿0Þ£3$æ{×&ØÆŠR‡ Ä%ÁÁ–‹Ëk“¶A@�ÿ BtüWî´\§ ±„@E6õS:‘9AŽ¥¦¥ZA@A@�ÿ³w%ð6U]|™"¡B)C‘B %IáKȬ¢$CŠ’ÊP$ d*ó<…� #³Ì”Ȭ2fÈ�yxæ¡ó­ÿÝoß³ÏyçÞ{î¹÷yï±×ïwïÙgÏ{�=®µöZcÀ+ÃÂkºˆ+¬3ÐÐÐÐÐЈƒÍ舃í¡1 1 1 1à0¢ ñ€Î£ˆªÖ…KƒÆ€Æ€Æ€Æ€Æ€Æ€Æ€Æ€Æ@ÒÁ€dXx­q»ví¼&Õé444444¢„Íèˆ"u6IšÑ‘ô¾™®±Æ€Æ€Æ€Æ€Æ€šÑaLj~×ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐи1 {7àGÕMÒÐða@3:tGÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐи 0 7ÁGÖMÔ¸I1 7é‡×ÍÖÐÐÐÐÐÐÐÐÐÐÐÐÐÐи¹0 áÚ–ñšîæÂ®n­Æ€Æ@Bb I3:ŽÇÄЙ è¾Ì™)Eòä ‰G]vÄÀÐÎDçÎ¥LEôA§$Ø€ªò‰£Dcû‰Â«Õ'ºïÁèUäFþ&+¾^A§ÿ9mAV²dɨ|Ïò”"u ‹´_6ýFôóT‘ë3‰ž(º„“Lj¾ï+âU­GtÿC¡Óè‰ ó'mÛH”%;Q­·[ít}n ìÛI4°}ÜÖÜzQû¡qýãËçÚUÞ×Äe¸3¾Jœï™“Dén'ŠïíøÙÓD·¤á_êÀu rᜨ_ê[ÅpöOˆ2¯\&:Ë{Ô;3;×)�ïÅóÜFÞRxÁ�×2Q—Ó'D¿ãmÍu…Ë—ˆ®^!J›îº›`…Åç<Á•@{�¨º ^l|ô½݈¶oŠÛ´j|î(Q.®Rô‰Æþ ¾ÎÇ^^Ó%Åï§ë¬1 1�41pÝ8@_ÿø£KuŸy†Ê*ä‡cß±côù?øýª?ñÕ(VÌÿÇ•kרÿœ9ôÛŽtø4ŸvR§JEy³f¥ÆeËR�9|~ò/æâEj8h†!¼xž)]:ÊÁÌ‘û2e¢"<'�L‹gÓ#èð©Sª—£;ËwÐÀ7ßô‡õž5‹VnÝJ d~Û¤ ¥¿5ÌS•?'íˆ/ ”¼‹ÄÜ)‰6ñ!Iƒ; ,äaüA woNót—ÎM¬ù› *8ˆŽl9 mN¶¡4w0Õ&aü@¢Nï‰ÀÔ{ûÓÐ…-ù‰ç¿ª"Þ”õDù �Æ—c‡…o¶œÄó¡=Fà÷#‰@ÀÈpGÂí×,þBúN´j!lÒ}3×=¾öï&ú¸Ž¨×ë͈^x%þê˜Ôr~…·[Ö•®Â„èI­ö7V}#™TLx'jÑvOý–èss èÏþ‘"D“Öú_Ãr¸mçú•Dßv'Úõ'æ0;@ÈÏ•—û}e"U aöxTèV5|‘;qûr峦;zˆhÚH¢Í«Åï©nåV~�¨f#wsw¨v¢]søh°t&Ÿv1ñŸ·þ`¦Ü{˜ð ['rÇð~xW¢ßýÉß"§-ð¸`|7N�eÊz`íýq4Ñ ^@ˆ½;+ '”&jÓ‡(#ï[�àØ¿Dƒ¾$Úð+ÑÎ-"Föx-x•è�ÏÄwqJ'ý¼”ùßDSGMNô÷_‚Á†~——�v�Û•‰Ý?È2B=Cõ5=ö¡¿,ýŒl0:€›beˆ^m"ð¥Æ¿‘Üñ¹¿Þxs ë³oáç)>“^ãýj¥×„;Úÿ^æƒh×!©æ}ï9žÇÿý'.F°_þíF€hìâë|ì•aá5Ý�ð=u44’®£cÍÎ�ÔêûïýX)’+õªo=aŒZ²„ð“ðZÉ’>æ…|?ù2}:~<­ßÍ'9ãC­ZôäC¦èñ‰³géÅ=b /0"*-JMÊ•£´·ð Í/÷êEÇΜ±ùÆ}Íœ!MnÙÒ†Íò¿xçÏ0åÃ)Súôþ0íHˆ¯MCâh]üÕ‡Ñ!L,OÍ´ù5,9 FQ´àFþ&Ûfl£óÇ™òϰoù>Z?’¹ ‰•Ñ¢ÉÀö‚@òûYqóÉWá0þT˪“Dé™iáž¹›Òcu™pÏ�ûÿ&ª˜W)ßøˆè#&\ºXq�‚ôø|Î'#ãNƒÀå¼ô^ºHôn;fܵ×XIH D2ÈzG2Ndññ„Ä&®Z1‘Òñ¸EÔnˆôuÿtÓNÁ?ámô‚)ÁóE¿Gÿ´m@4�‰èá¯L�To‰à–`³‰À�Ãæ³Dîó�B…¨v‚ñûfÙày€ ?Ž üؓ،Ÿ&•!ÞfI¿iq ò Q¦¬ÛþNƒ;È7ë³ðÓÌÐb|Øoj€P á“ìñå[~fêŒgüÚ«y)óÔqff”'úc­,%î³uO¢úæ±(nÅ'T?�QÁÐèòÑAÆTá|u¥Lqã=ãs~=±…Û–-j:—Øw*QYîÓÑ/óA´ë�”ó‹�¾&+ÖJ)?Å’Š–"Ê|�ðOêÿÑØÄ×ùØ+ÃÂkº¤þ-uý54’ŒÑ‘œ `ÜÉ·+$Ô0€þá[쌎�óæÑ¤_y·ÎuUõž}–22aéŸÒô5¼ÓgHÃÌŽ©­Zù™*£·8*<ú(SX+£ã½jD‹g=\˜%6×yûÊ’ÉÛŸ÷ºÏÒ]�ò@’¸ÆÂ}#ÿÖPHGCýƼ¿KîÚqðÏ.–|dIkHq¿Ùš¨%K.k¸tAHºãBgY&ÊFóö™Æqøð:¨%y'jñí†t}©{E)XÚý%fD† nÚÙºѬq"çÇŸ%ªÝ”(gq `ç,d3BHJƒ˜ÿ\uñ÷î°ÖL‹ås„_…ZD¹±†§I+nMHßéß±:®ÆâÆü b*¡ÆåBµ%à+y;G&™Êùª�ÿ&êý «žËFT™Û›÷QqÃaír¢c̶¼ÇŒù&_XË8~˜¨zAÁ0¸i{¢âω[s=Z‰¸9rÍe&• Q&ÊïÏõÒQÔ*[Àä¿-=Qwf|CâÐe”¸¡ã{á¿{ˆª<,˜¹8¾¼ÇLÜâÙ¶‰hL_þ¿‹˜÷&ª×\¦2Ÿ^ÊıéíøF3²XŸëµ`¡ˆT¼ÎO7KpõYÆß T@¡úâàvó—ˆ~_†7¢l9ùöÆ»D�=%ÚÿëÏD£{ æâ§ý}QnÈ¿øÜƒ_O„õú˜j‹wñ| æ™$x/ØC”õ~_PÔþ¼ÎQ«À �Q|÷½/ß!š8T¨]ôÏ €0‡&xÝÄ×ùØ+ÃÂk:”h/����xÁ@‚1:Кf+ú™;ÿý—ÞbÑQWygýrÏžtêÜ9J—& }óöÛ”õÎ;ýH�Z¬¹6øÞ[W­J‹ñ¹UFGÉ|ù¨Ó«¯úÓl?x�ºL›F{Žõù©õ‘‘$£ª©~hîpJ�mOÍè°!$¾Æ×¦!65ªUz–%lp`ð*©¬27Ë7I Œy�üņD™`æ^æiø¯õDÿ«ÆDœÝç -¯j³Dê¤ñi¯ÊL¬³â­6,åø•ûz·m $´Á ™ÏÒËáêsw_’Ž©1¼Î²ÔHƉÌãzAœ€´Ö£œG)–4L—A�muGòM¬9~;µçí^¼› ¶®P�B”±3:N0画Ÿ *÷2ëGçC)tœÿw�ª0j³$¥Ý +úÕvîã:¿/tg+-ƆôǺw1n�⃮w ¤@2ÉLª$ /ÙuCW7T_ ?Hì.þ‰¿G éäê „´±ÌÃé¹z1·�÷£ª fÏ%êÊ> Æ3$h%ÀØ{8ÆÛÛÖcÒ»`V¸‘€EY�̆4/›®òéDoÖYÖ@Êü˜ç움û<`þ@úÄ?©" ꫾ç9€5ï…‡Ä|W²ÑÐ9Â_ý©°Ø÷AíÔ�©à¥L¤—j-áž¾…èÁüp™›í‰÷QKØ^F)3ÌÉå¦àö˜:ŒOؽ‘Œ áúßË�\o¦=xh,š1 .s¾¯Ý~�Œ…5çúh [À1ÔL‚ñáÄ´9xÿ�Ïù P­¢�¯}/P�Üø‡{þûyª¸5‡s�Üåæ})n[ *êõž|N¬ÉØç:Ê-–Aô©æ]ˆ}â+2?ì±Àüàä\O;Ƚü1—ª”8önÎÇbb¨%k?©Ït² >HО ¼2,¼¦ U®1 1 1- D�Ñq…W埶m£aÌà˜¿kýgôÆc�Q“üùýŒŽæ•*QßÙ|e˜Ô¢Á¾Eí¾}é«”jÁa0ä PÃ.¤±Ë—ûüÁä³Cƒ_^ìÞ�Nò��T|_zÁçŸû‚C1:©åèÑ´.ÖîGŸ |Ì_bþKJŒŽþyúÓñÇ©hã¢s †¶ÏÚ.›á{¦L“’^žð2å«–Ïâs(†ú=Ø�®œç«¤J›Šª ­B…^/d Eš»NP²Éȸ†/ ÇS9|D`ÕðržÊy赟^“Q|O0Cæ·žO«û¯6�Å+1Š7/N底‹CˆV¢Dät³i°€Mç7�ÅAÄE;àªþWÌ\°ÑÃæ½ù˦z5ˆÅÐá õvðšù€ÈT‡ÅuÕ“‰.KÅ»úßy¤ ªI?¬”6‰Ò?ÝíD°"`"o\±±Uª‚š€@=`ºSˆðóòMçæ&Å”:S|�­�¶¦´™™¥ÀÒŽKiñ‹)Õm©èÓ³Ÿ*!¦³g¶žs0†J|X‚2dÏ@s[0…Ìùkå§š?0•Ì;£*)•‡} ôy0?TÈÏĈT¢Ø»U„ÁX5^ ·zSÄøZ¶¾(�ÓíIÌ3 ÄcH„©€ÛèwOþOõî{„!o0.TwA…W €:�SÍPÜ^A=݉Uó fŒÆ¾ßÑM*GJ΂y ˜—*ôjê!ºŠqŠñ @ÄܱE0Œ@XÃø']¡bL_-J�D2ˆÁ@•Jw#ù,/„�±Zöþ¸±‚N &êÐ�×ñ<­2ÕdN`d½K…‘];C ÌèsÙ�¦ÂÛÌŸ*€HYƒ·1çϪ¾¦D<ܤ Æ|1c»s�àôÖó"n8ãZæǧo†Œô“OHX÷Ÿfm§×ù@æ©>ÝŽ¬A_7)�w0tT€ª¨L`=‚<¾½š7@tÀŽC•º‚X#|�u¯“ªÍ †'¤ÝÁ¬U‰Òjx0·Ûv¾Âc Ä#Sfs°C‡={�ø¦¡Æ; ‚ôªÈŒjì+¼‚ÛvËLÊ1ì7LAhÁtž™[… b¢¿[ÙÊ íÉí‚Ê.7e‚1‡y‹�K¾Û1]¿5“æ ^³À´— ~#õ¦Ç Ÿ„ ‰Œ'Ÿï÷ÀÃ&Þâ'ç=*Àk™HÛíC¡" î©„:1¸%´m Æ g'Áls¹í¸ñ(oàüÀýû�pÀË�üo¶=x88…z>œ 2ªãœ@ª:Âeî®À7NaÌ·¬ [}Èót4!¾æƒ`uŒ?‘ô½`õ æåü÷ï;!bܪcAU•ÌþœzC·ó°o‹6§ó{Fvæ8Ê:zˆèu®7ög8›c_ †Hbظ9ÿÁJ Ä ïæ`ÚZÃÂ…éMÖpw ðʰðš.P=´¿Æ€Æ€Æ@´15FÇN¶y1œ™£X}Ôaf6¨Ð†m[¼È·7ä�Ž.µkÓ¸•+}62š–/O¸�ÑdøpJ�2%�ýàséUFG·éÓiöúõ¾l‡4jDù²eS‹ð¹?9’6íÝësÏlÓÆ§âÊ £c̲e4bÑ"_ºOªW§ò̘‘ ·§MK=êòi7ÜÅ‹È·ÝæMÕU’Ñ!+‘»\nŸ´ù±¿ŽÑŸSþôygÌ�‘Þßþ>%KΧžX8½ï4õ¾¿7¥¸%=XþAÊœ/3¥ÏšžÀÙ4f“`’x…E©bÁÏèàT�Ú72ŽüqDÓÃ/>L§÷ž¦ƒkúÊQùÖŒ¼sˆ…qUÆÑö™Û}o¸i’·j^Jž2¹�AƒÛ!€’mJRÙ¯Änç4ßz›U–…UªT¡:uê8&‘ÆŽAØÚÈÄÑP‚6íR?0¤m±¡6¤ðÆèW–€ Ö’�Š4Ø`áŠ6¤_ ÄÎÚfJ¸ÃÏk:¤Œ@‰z… &ã¶ ¤ŒoI#t7cªJ3bSZ¿´8P/�އ´$` ™%„!H~â +A=tC‚\¶óìiÑVŸ�O&0µüZ¦ˆû ÷›ÄÍ!´O4ÙŸÌîëßÄà nÜ‚:{è,íYº‡òTÊCµ&×r¬�FG4ûûøAl뢩¨ ˆ´ Ö©£\Æ�ˆ‚ø–‹˜¸sJ„Ø úßõfÊ~F.€×?°2D@t�z&IT†^wH¿I€žmˆ:èG*€Y¡С ’€�,€Ù¢+Ò.šn¡…äÖôÍ&¡qÁ©Æããé."ÊÃÍÜH‚¤¤ºWŸ±ª6AZÊåºÒ¥ßBžÜJãK©ZÂ!Ɉx*ó–O}À ó5¡AJ.ãF KÁ@eŒBŠ}Þ$¢pÓuÏ6g^L{ßp*»Ï“¸�ƒo3ƒûúE$pp/K;÷9Œ—ïúw0Õ>˜Ïë—ñP»}„Hb!n†ÌÙi½•)ì¶ „ä8æ½2U¸É…�hH ¿þãØ>-|8ŸÑßûiÆn�¹¢&ê„~ ‚;lÛ ßh€JäG~nÇ5âb=�`cq« 7Us&˜ÒævÉy¯ó�ÈÙúïvœ`À¸À˜ÆÚ)À?i¹ ‡U«o†«.)ñ›°�¸mgíââV òv3ÖÕ Í2ÙDèË�˜éÇ8 'rÿ3îWqK3PÜPþnÛ(Ì{õž1÷UPc„›‡¤êÅ¢ç;O¯jò7ÄÞ RèRð¾�˜à"•ù_ebíƒý€Z—¯š‰ù ýß ó Ö>0‘òæܰ3ât3øùœBsÈrÞßIðZ&Ò«ÆÚí}k&„z0O¸aÜ»éÙkÑ@IDAT¸m †j°@| ¼ÎÑ7ã<¼â›àÛ`¿ÐkbÜ”8ß@Í ”„>¾úûˆŠ¯ w´þãc>U·Hðiß U7§p/ç?Ü^-Ïk%Ì,ØëÁ¾ûÀŸ—�Yõ·˜3°gÍ–SåˆPë?ön˜ó°Äí³` RkÊðÞ°®C` 2¹1¿b�ƒ°Î&°m%ωaàæ|¼ûÔ)ztð`й|Y4�ÿq«·;1ãrž<”Ò xeXxM§­�ñ‹#¸xõª1~ófã£GÉÚ·7HùÝÛ£‡ÑzÁ㯣G}%¬Þ±Ã(Õ®�ï·rëVcʪU>÷;ÆýçÌñ¹Y5•qöâE¼¡ øk÷ñر~ÿ}ÇŽùýUG5Nl¹Çcbüé>?^�îwÏ\»ÖgÔ’%~8^êÙÓ&ëïô<¾%Ýg&øÓ;sÆ_/ýêg´£v¾ß’/­í˜ßj¾?lß/û,U¸xꢱ¬Ë2ãìá³¼\<}Ñè•£—/í°âÃ,á}s÷õù³QeŸÿ¹£çüeL¬5ÑçǪ¨Œö)ÚûüwÌÙáO¿}övÜ�g×®\ó‡ýwõ?cb͉¾ð·t0ø–Š/lÿþý�†°~-Z´ðçkw\¼`ç¹ÉÏÛCœß{¶6ŒGøø†_‹š†qù’5Þ…s†Ñ§­aœÕõ~üº™nTO¿·Ïñ]3ldk˜×t2—ÏšyLiÛÆ•Ë2Ô0®1ÊÇ2 Ô[Â5DšüÌ�¥ Ämøœ™_õB2…ù¬]\„×z‚qʸµÃ¶�†±}³Ý×úî7±¦v÷¶iì&ßCŸµÃ’K|á�nëdò¿÷ÈÚßGŸ\} fæùÃà8µï”Áªä,~êˆÑüéYý›äwG³¿_»*ú:úûÕ+þ":пe_ûÃ8«La ¦˜a#ºÌÂøò¯tÖÀqœBŽýkæ?é§V¿-¿›ñQçGYÃQÙ–[¬asyš’ah—07,˜j÷µ¾Ÿ>aæ�¼žÎl ö¶ëOÃ(�\¤Çø >ª-Ò=y‡aœ9éœó êT5¿s¸êûI=·L6Ãø¶»·tè[O¤içMRs�ëþg—a`žAý& Ž©Ï߉¼‘ÿì �s;~ÄŒ7rÜx«šáß÷³†ïÞf~¿Šy ãè!3üÒEÃxö‘öñt¦¿t­[Á}‹ûœ}Aø°¯Ì2—Ì”)"~øŠ™o8ãzßNÃ(|«H‹u æ”YÌ-M*‹0|Ï@}Ñë|€’Â'?ó–ß¿)#D]ÑäX{¥˜aœ‹1ÛWõ‚fûð޾üXjáW§„aüÇדoÈwâPñnÿ®dÙ3ÇÚCƒ¿‡ÓÎ~Ÿ™å ¼7þgÓFæ£p`ÉOf>ÁÆ¡:/¿T8œâÆ §�qS ŸA_šõnPÆKûý>aØçÔxT¤éü¾ØÉï„øn ¾Ê”ãòÑ[̽ÓOß‹º¿Ó0vo5 ìáP_ìë$È9þûwK_ó¹r¾‰£šEM¸¼–‰´ØG¢¿Iü½ø˜aôüØ0šV5ýPOu¿‰tvpÛ:41ó]4ÝžKð÷Hæè›q›ÖÐïŠïR­€Õ_¾Õ{V„—ÉúœÕíCóã›Eâk>UÇHðiß U7§p/ç?õ<°v¹Èupó[®œ'üF÷~¥îu*YøÉ6¿ðPà8ÑÁykæ¯ò¹Å û�WŸ~Ø'¨ç_”™önÏÇç._6¾Û¸Ñ(3j”#m®íÂ…Æ®æF¡=Óî𠼦 ·_c@c@cÀ+xšþd&ë42uíjan¤îØÑ¨9q¢1›™l<Ü’±�ÑDižXU¦Áâ-[2:ê�{‚Ó:A‡É“ýqøf‡/ŠFÇ f¼ÈztýñGKÖI‘ÑÑ=KwƒmnXÚqlû1?auó„Í–°P/ Ú,ð¥í˜¦£%ªdt¬ì¾Òïß5SW_Ü¥—úýzÝ'%›Ç›åj¸/^ŸúW/Y늄‡Öò×wE7¦1°„»Ñ¸qã°~“¹OD°Q.”Jl‚°ÄFÉ àð)¨ØôÚáÀ‘'6\íß6C½¦3s0 >åAô›.jˆ³eJBÐ×-âÆ‘Oæ×¶�5ø�D¡NïYÃÛ[´»~ÞvÝ0:²¿WxP|kíO^µ¿�*aßNøõGbˆ‰è/ ‚†Ëf›ý LŒPfˆì—_5‹[í·‹gXô3ÓÚÛi�ømõb3Ôã­çǵ‡HbˆY*ñØÏþ¾“yhr¬âP~"êV)¯ Gúð“óˆÓ’��¹Âk:”"‰ûêAqø×¢<•hß«�¨Ú®2[ÍšFæš5Îü.¡'%2‰¸ƒ­Kœ¯’�‹1a'Ü}ñ–HW8�a[K¥1Oʾ©2A,‘^Ž6Ó…K,wÈÎïêLn´óŸ¿ýÙù`jÉv®ÿÅïmqx��‰—q"‰l`´‚�%×o0ýì ÈuzÚHQmøÉ1&®/ÀÚˆàŠ~/q±g»ÈËí8íö½jfY²L´³e-ÃØ²Æ]©*ñ~ãªÀiÔoéN;�jæ•l/˜ˆ`¨ Îù¿þ,BZ×iê—L,U$æ´šÚÙ_e¢Oa<¢=¯—ecŽ.’Vô¿åsx?¼ÏloïOÌúõýÔô‡ÐŒ ˜Ó%cy¿_Ý �¤L™ æ3¬+ò;È'Æ›:ÏËøNO·ýcVæò˜SN�ý¼ÎÑØË9!œ½»Z“}>¶¿ø.Øûƒá­ú­üfrNUÃín0+‚6ò�=jØïñ1¸©„WüD£ï¹©ŸeÊõ.œóŸœƒžÏiæ�?|KÍÈo9´³ð Æ$—óI«×̼âËõÛ"³b*÷8¨7ö¿*$–ý�Z'·îÝ'O_²o®>},ô:'—ýî;㦻yeXxMç¶î:žÆ€Æ€Æ@¤à)=<À â Rý=þÍ7ÆÀÕ«�ødìŒDkÎÜfÉ`(ß©“q‘¹Ð�nt42Ä÷äÙ³Ž¥´c&‹Ìï�þñÅqÃèøuÛ6º.Ó¦Yò–ŒŽªÌÔÙvà@À«È²¤KÈc+�µÔ/`|ÈÛ«ú9ŸfÙF‡±uúVá >^`Ìi6Ç÷ûöÙoýiU¦„dt¬´Ú_ždjüÚûW¿_ÿ|ý}é× 1OÞ�Ówöùá¶n›Ìûhžùû�ÝüëxkG_œÉµ'ûóJ(ØAbRhn¤ÃÒ‰@„|$‘­ùËf®^ÓÉ %, ;�ä“MîôT%ªöîˆc ó®ÐüœÜRB‡ºÃ•,�[büøD“Ñ1°À@O•tÃèð”q�à.%í¿n7íÌ~ˆ ihIìÿEÜ<‚ù é$òGÿ…T|(�’⨳Ó¡Kö[Hz«b¥ ƒ„ª”HSã„rc¬�È-v"j ô¸Ý$–Nö@éà/磧22ƒ$‘NJCjMB³Í6ã6@ðÍ@HòšyI&ÙŒ1x3 í$Ž%Á ƒg²ÿ­D¼hÿwÿHäï†p#êh?`«ýÃ~CåðÀ6ÒÙ¿²-’Ð�8öÛDˆ<àÆÈäá†És0êðS%µW/–¹EöD?ñ2®UÆc [G zÊoìt3*’ùÀë8¡_¶W֭܆qä`\‘òÁó¡„HÊDŸsL~ƒb £æã¦  ÊÂúä4Îdùxºíê~¤äÝj¡Ý‘ÌÑ7Ãüßý‚¹†õÏíO½•®î­T¦.úÈËED¿Ãío7çyS®î3¡¿k¸1¢=¸-ß+~¼ö=ì#Ý~GOÞÀôzþ{§¢øÎ¸�!áÝ*Âï£W¥�aÀ�¹A�g† A¹^ãöÇõYO9Gâ ¦‡ÃþÀ^§pßyHKöì1ê3�ë¶Î�-4<¯ ¯é­»Ž¯1 1 1à<­‡[ޱL�O�aüËT–“£cúš5~CûI“|É1:Z�ã�»ÿøqÇ¢ÚŽç�³›ë pÃ蘵n�?Ûê°ä-µz‡·ò&$£ª œ }r¡BJ½�!ã�¹Ñíîn~††dŠØŸPE%A2:Ö�\/½Œ~y„ú,•©1ø±Á¾|%óãÌÁ3!ËQË£%¡á¹ûÄ&­I¥ðj)lžWpNB—$vª?¯éd)*‘Æí¦QŒ¡¦Ã TIU¨]±ƒª† mÑøšóCx{¾Ñ~�&£ã‡—¸q 13:V/}ßROv˜6Ò ÿ÷{¨xß¶ÉŒ¢K8 ñ�†tRR¼AiçØ?Ž6ë‚z© ÜÑ^ü ‚D½@mSÓGâcå�Ñ©ª •'Ú „�’ ’Vö~KUã�²%ñª'ðéW€×tH+¥ˆÑO*‘A2s¥t8ˆe ºÅH =7„“/‰ö«}ĉÜê°T¤gø’„WÕ �à*Ò¯ã¯2�@O¨ ЍŒêpƵچ@uTý¥½ZçHæ¯ãå7{ÉÄ/$Í¡.Í ä &0ß$LåmÚ…ñ)ê¯à{ âHˆófY™ÊÝ3’v¢ÈAÑY~ÜÒ13È>J½�d®"oô%¯I;1—K){|—@·‡° ž¸)æ5˜@Ø�È[. žË}W &¥l_|—‰:É$ʹõP‰�ê| ‚²ìo2ùÄ¡ª—ú}™l‘ÀƒŒn™]>0ë A)ŒœJ©mä­ÞP6K6]nû‹d]í*ÊÌÜœ]‘ÌÑ7Ã7Ý$nÝ>Á4”F’L§îóT• `ƨÈ|œnå†J*<šóA¨²Ôp¯øñÚ÷ä~Eâ2Ô·i%x=ÿɼ*ó[ž—U�8™ÿð®²DëSe 9�/­±£ó¦Î-Àn;AbØ8ÕË‹ßÑsçŒ.Ë—[èx^^Óy©·N£1 1 1༆É8÷pìüyª7mÍÛµ‹x�íO˜'S&ªÿè£T�ÙÙ0·ÖìÜi1F^"o^:Íyµ?ž—ƒÞ(S†žÈ�›Î]ºD•¾úÊ—\5FþÕ�?Ò<6tø¦qcÊ“5«Ï­þ55Š6îÙãóšÑº5e`ânŒ‘�]¾œ†-dKY ­«V¥Šl°I‚4FžåŽ;è‡ælYÒ%$¤1òbM‹QÅãÔôË_’ñŸA店£•ð‡¯±Žf¼5Ã÷žúöÔ”¿f~ŸQå4w°%T†Ý‹vÓÿð¹ÛÆ´¥[Ò±ÅTiŒ¼ú¨êôXýÇ|~ò  cÛŽQ•¡U¨hc¶€Í0´ÈPbUTT¡w*Þ¼8Ùr„ä ËS9=ôÂC>w ¿ Ù3ø •£Ÿüý7[“ 2fÌHwÞÉÖ^#…{*£ÈàýŽÂÀ¢›ì.]d£¦· cÁo0 ƒm0d ør|‹Èk:‘‹øŸ<œ¨]#áž¿[€SÃínÙ,šVÀ…áèOúÚc°‘u–}Ú Ã®¿�ÔÕX˜Æ$Û_rVÃ.L4`º{ÍjÚh»£iŒ¼x³âT¡O…°«èÆyBõwîÚR„î´é¬ÍƒAb|cf^~Ä&ߦ�šñŽanÄ—†½aÀ°ãø†kWÙ¨,/7—.cƒ¾$Ø^ä±öQîç*œ8ÊkJgad %ÀH1ÆûIŸè=·o"z‘§LŒe«�û¼aèuÁ¢;3 £Žöï£æCß0ø�…� /b#ñ˜07ä)D„:Œ\DtKj¢:O‹TÓØ/OAa ÜK:äò:çµþ1Ÿ•xžØ"QÎc˜ªqÔ1Ë‰Š”´æÑ÷Sî7]„ߺólÔšÓÚ¡m"Œ‰„ã›Ã&ü0~þlE¢LYDßL‘‚hÂ`¢m‰2ßC´ô�ˆé? ³wmþ¸nÂÆ�—±Ñî)E_ U�¹Á�· ^çƒHÆ ŸÖ{–〵k¬À@9 •?ó‚0PŽ8�ßØÑ‡‡Í©zñ:ƒîèÇ߯Œ›Ó×Ä|t‘ûC£O„Þ¸±âúDÒN{nè_Íy\ý̆Tª±UácþŸáâ'’¾‡µ {a·pOÞ‡ò>Ûëùï(ïMJg¥Mø�¨ ÏS§Ž=»6Œå5ò1^+/ðžªïÓQÖR¬©vþ5Qo^3±ÿÁ¹Ã¾O·Ç�Æ»<Ëȼ0_aÞ²CBïìõ ÷ý #žUÊÓh¦¡Íܾ�ð.á¾Ûo§†§y3´k×Nz»zjcä®Ð¤#i h $$˜˜æ öž:e|±x±‘½W/ g8ù—_úôþ}¿i“ƒHœntÈ0õèFÇ6ö-ÕRÁ–‡Ô⺠Îs\fÂøÀÍ�ŽO”› ¿ï²Šü%ųšÎrB�èF‡T-Õ÷Á¾†“qæ…Ÿ.ôßÀ¸ÃzZbÁ£c”y££^¡¦ê÷¡¿ËhÆ�ÂC|éå�ŽËgÙ@y2q»j«ÜB4�3»-ñTIXÜNp ¸š/%j ½ë�‚‘qÖ¯1¼¦Só—FðT U5Üî†ÚY»QtWꪇdN(€ú„íLõ4È[ •6¾Ãa+FÞ:{älœâ F ánŒ‘CÅšps£#¡ú»4ˆ› NPçiÑWÞ*ç*ü¤Ô'$jè}’ý0ИQóSÇŠ*Q¦Æ‘Î�’ 0F©Dܾ’7& '=œÛÁòWäÑÇ’w Õ*jX07Ԇɺ’ŒSÓcN>¡òªD VßUÚ5Á|öI}Ò¿¼¦CzØ(A™ø²@TÄT~XHÕË6¨RƲlù„Äøüî õ,û‘Ý8½S+æšñ!]Š›>P÷…`¤Éo€g(¢?ÒH�ª·�ή®LÆQŸêA¸™À[¤Å^ÚgPãÃ-ÕÂb&«Äf•A.U¶@•ŽÓ7T�¸cCm�Џ¡K:ȵ&Üq-‰D�ˆû�ÊSý½Ì^Ç Ô…H`TÂfì´?P‹gÕ~ˆ´/‚yê©�Fývè¿ðÃrØ¥A8~ªŠ!§¸ÒÏk;ez§§J„ Ö' �\Ö* ƒ�j7Fª¼ ßæ¥�`ªå‚p #ì¡@ªNAÛ`”ßXTÁ�á‹0èh·Ãõ.„tù @´«ú�*„cÍØbÊÙ«ç]2‘'T™ªàµLõ[`Îtì9Q_Ø/‚ý*;„ÛTµFª:/{¾Nï^çh½w¦³Ÿdb}‡39öÙbpÊåíDŸÁ^D«Nq¥_8러úe¸ó�,O/{’pñ�¾§ÖÙ�Ûëù{jà´zA³àÀB-¤­2|‡@ K1¥ §È<Ôu{‚®-E�1WþeÊmú¢'ôþ@ÖÙíóü•+F¯_5 1L¥ÇÁ�»o_ŸÚªC11–ì¼2,¼¦³®_444â¼Eœ9ctZ¶ÌÈÕ§�e‚}ãÇ#ftœ¿tɨÀ”pc£F÷îÆ)Ö3¨ÂÐ üŒŽI<ÉKÆè8ÈLŽ¦Ã‡ûÓ}·t©LæÞ茎+®øozL©3Åßné8òÇ8"ÑbtLy}Š�Ћ[&(#\»Â‡Xø�9{÷î5ö°A-·¿Ó§YÄ-B€ŽklÜð ¦?Ön„:þe:H«ØaÜ@3[ ^ÓÉô *‚Àƒ²û´•¾ÁŸÐ].ëÚ¢¦5.òƒ­ q£r¹DÚOê[óM¨·¿ð3p»C… '/�ÓwŽwFÇ�5f~ícÎWj]¢¿ƒð*�ŒŽè¦ÖF¸Uc¼ ä)‘þù›�b8ûOjö3762$}:äU@ß{¯šÈ„­ã�§5™Ï­J¼J½îq"±‡4r+Çl{„‚¦UE�@ w"tJ¯ÚÝQ ‚ŠH˺»]Ø„!Ä&øK&¤�aNµžÓ¡Ly#å¡ è7ÈvKbq¨›RYÖ¿gk‘�›0�Ì7„0™%aÌØs@úM—†¾-ëI~ µˆƒ>Âaœ}Q‚dBcŒHæ¶ ƒaP•(†M P‰•(‡tÜJr‚HƵ¼ýßX A°0/ó�ì/ጓÌ·–ŒZZqS€o*¿l6¨ Ú‘踑(ãïÝ!b«Ì00�`ØWfº@·GìéÂm'êˆù†¼a«C®¹À�´¡`/ïÒîˆè¸ TiþŽM�cb¬©·ÔXá¶·ä | 0jíãEÍ_u«û;à ·¨�Ö9p¨�eª7†¥T¼¬ú¡,hõšô ýÃN®ã°?d¯eb–ãÂIxó ´¡cÔNn?ÀÜ)SxÚ`‹µM¯s´Þƒ«X îÆ>}Ìdi§ß)#Ì)7yk0a¨pÖ?¯ó�½®^ö$áâ'Ò¾g¯³›w¯ç?iOO=Û}øŠè¸Ù%A2{ÝŽE<9ÆÃ™ç�.œ~€øª±ÀŒÅ¾KîKí¶µz€:‡v;º·tìh¼Â6pþûoƒ·¹Žà•aá5�c%´§Æ€Æ€Æ@<`€·'ÑL¦óYÔË'©ø–G4¨eWf˜HõUMÙúæ}ûŒC'OãW¬ðßÊxŽËS™ *£ãMæpÏݰÁ¹x±Ñqòd?ãD2O.(ª¶$V$£ã¾í1síÚ€¿YvùªIP�‘³ �€é�çöƒeq=û=$ �‡­º*VÝTÇ4�]?ï2þ»*–ÃkR=•¼õ-FÇ©}§ŒNi;ùÊ}èã+Wmü‰¿O ?[htÏÒ=(#DMŸn)!  øIÀÁ’�Psag*àPÉkpX…* Ä@tÂæLJuƒ€¤㼦“uR¥ØÕºÊp§'Ê—„>¨NX9O ÖA=,¢-�ºWDWl—üdÂp8Ýô›a@zXŒƒÆÕüâÛ}ñÔE}}zÀ#ŒÓÿ0E…áüñóÆ˜ cüL�ø¼Ñõm]3uõ•…ÛM«­6Î8cÄŠ1.žf±¸‚ ¿šßë—q+1kœ. €qc™ªwp€Ežn ú*£DIxt*~RR} ’ç ƒà ¦£T�0MUc d0´¬ë3RÙHJM¤ÏdÿÆsúwj)qݪáÙѽã†óiRY”œº‘jF^GYë'�CB�•Zo{]¼¦C™0B+ó�[ZÛ56ý1/J¤±Ã¡}f\™ A»‰«p'5‹ZËĜ̸zÀÆ<Éc ¾Ë¼0Çc̨ ‰ËhÔ|`® oÈ[²ÍÁˆEŸ5´Ö7X_�d\cìÈú`-P â臘÷AÀhT^´Ãé_2:ÜÎ^Æ ˆÔï òªkæɼ‚ê#•`. ãÖ“„™cE›1§È¸ò–2êz-Óà càWèƒPã�ù?'x^Ú éS´ï“ú†±q•™/6¸�$=¨‡j8X­§tƒ ‡x˜ CƤÜ# |Hóž?+Raœ`Þ„Z4'fo¸íÄü]ãQ—3À¥ÓÏ~[5’·×Ð6¸ñ½ÀTýíÆ²¢LÔýVî¡ÊP®yh—4�>ggØ n¹-›-Æ$¾?ð 5]²B]#˜vðZ¦zK ß{A9a,l(ó‚Âí2½¼�‚|¡ÚŒzŒKì§!� æTÓ©sÒz�£‘·—½»¬ïÍ´Çw–ý Ìv¸C©9Ä 9–Á”“é”6ý.û–Ä«ú gýSǽÛù@- n¯{’pñiß³×ÛÍ»×óæ|;u�yá!á§ ãȹ<Ø­j¨6E^N�p ˜¼X7qC3„Ó°?—s-ÎìrýBþØË~ˆ9UBBîdÂyJFG¾Œ¿übÀøx(ðʰðš.T}t¸Æ€Æ€Æ@´0ÀÇp˜.Œ?8rîÁ€ù96vÔêûï}u©]›`ŒÜ #GÜ£gÎЇß}G¬¦Ê))MFU©B•câª1rÇDìùTž<ôaåÊ”ÙÁˆº4F(­ê?±E º› ;Tcäj'÷+%JP“rl16B蟧?ßqœÂ5F¾qÌFšV/Ör%×!mæ´”êÖTÄ`_�î.p·Ï€8^¢aŒÜ—)ÿ­¾Žf¾;“þ»" c¥Î�šnÏq»¯ÜKg.ÉhÔô�¦t×#±3ý¾×׃}ï°ÁX 0ry{F¢ý]¹,|{³1Èr/Ëâ §0d&!Ã�ÂX Î`¼mÈl¢;2‰wùï5Ò«Ftçqý`¸Ó ôÿœëÒÉŒ cÓ0VjŸ!~=A„vHh]‡hÖ8ñ–ꢹ‰Ž&:Íñ$¼ú.�‰�ò-áŸ?5þ‰Ö[ë«H²É(ý=鉙 ÜX6²šûN:±ó¥º-}z–­|:3'(æ` •ø°•ëámìþÖÿ7šóA\K�y«æ¥ÚÓk;”ÿ^ãubƒŸ€_ب ú¸ =[}Û�(\uJ6VÃ¥ûã×E?”ïò™<9�{6–ˆ~âÿETãQ¢«W↾ó™0.CÐ/ŸäéÆXaP[GÝ`üðÅTáºÀÀ%Ê–°wQÅ<òM‚F[aÀXö÷tœ÷è%Dù3ãÙ]0(£Ñ~ÜLC²�Fgaöî¬Dsw±ë4�bZýaˆiŸôeƒßw¨àF Ï?ïF³a0ôQþ°Iãµ0T¼Iðšé»}Èxë%rjÕƒ¨¿¶'‚ax@“/ˆÞ‹u ëÿ¢éü­«[ý`„Æxí°c ©-nõ…ANioQôEŒòMüÝW¾µ©Kô“Ø¢ø¼P?Ô3 ¿ÁÈé�=" ˜Ã 8 `T³ÃpaXøˆ‰nö¢éƒ4è›0ì‰~Œï�ykÂJ~‚— Á8°T†ae'ˆd\Çœâv>l¶ uÌ–“è"ãø_6Þ)ÇK0£ïáÎ᎟ñïò<·¬sRÇ<�¼aÅÄöûâ-á×}<�ÿW…®Çð˜*þÿ96ü#¢Q=Ù°x)~.~ý¹/ éHTà ¢؈¯ÚÇß» ç=7Ô>!F¸íDš7ʰ±Ö%p™€¾‚ï$ç<„ ý�¾5ãØ]0 \üNñý°oÁþ%ŒìAÔ£• }ó$Ê–àdL8Üv°vËZ2ÇàÏR•x^™i�ó×z¢:O›†y�ŸógÍ5ây]y¬§¾ÕL—eÊÒ[ñr?{‚xÃ\p×½D‡ˆ÷´éÄ·)YAÆOÕH7|�NÎyx¿ïA¢‘‹ˆ`pØ ¼”‰ü•㵡™#öÂØ7�8jú5ú„¨yó]ºÂí2úWµ&Nà�y{o¹WÀ>û]¼ÎÑÈCïÁULvÿ³‹¨÷5 ØGÍc¿ôwHë}û6ŒÇ`�"%Ñš˜À{¤pÖ?/ó�½náìIÔ´áâi#é{jÙá¸Ã=ÿ�9É´þÖ€1Ë‰Š”ë^qþîØŒZÌëgi1ç>Á{ŒÓÁ¼÷}V9GûÇþÉuXõƒû¨ßω½‘= ïnûö]-kŠ52ï£bo¯öQÌ%ØçàLÿ`~¢iyNå²e½bàÔÞP~¯^¥�‡Ó“Ù²…Šê··¿Ëˆvû»Œ§Ÿ‰ñÎè� ]·{7µ=Ú÷Úíõש؃ÊÎHFâ'ߪ Š_}Å ¥AõJ•¢†eÊ(¡L¿oÿ†øv½Ð÷zòƒ'}~òïð¦Ã¢ó�Õ,ßásg¤|5òQ©ÏJQêÛ™º’ÀåW͈°qUÄÊçj$ˆ‰* ‹ŽéCÔ÷S>tÇ27ŽƒìÓL˜ù´?3–D—Q“ù¬^Ò!“>m‰†}%˜`J¸»pû&3S€¨Uëm&j�g&Ú9&w  D;äÊÇÄœ/ø ôŠ•Ðl�w½ßùVM}}*mŸµÝ_ô­o¥ÒíJßZ¢EŸ-¢[ÒßBmÏ02 WŽ^tfÿzºÕÓô|·çb¸óbÕY´ªÏ*#ñÊy> 0䫞�^�K…s—MÔbulJ4aQÖû‰쉛m“JDËf[ €qcñ�‡‰h .aÔуfßG˜ù—S ÓoÅ\AxÜð‹`bHBj� D/p?’ 2+@à3 7¹,d¾‡‰™µ‰Zu™O04ÐVF%£R†§äé DÂÆüé�‡@€rЦ5‰g˜p0ÇÝ 63qôÕ'EHÛ~Lˆ{ß)–³˜¬h_>»ÌÙøðoO�:äÄ' $<ËøCõ@}TðšyH‚0`¬Èùí‡!Løo"˜\ðÇ÷ ßp]1gJñÿ7îS ¬ÚßÌV7Pžº½&:ÇTËÄü+ÁŒ4.Lš`°qÑkO‰ö¹!X:üÀ —„xã¼l &&uûéï¥�`ˆl/sþtb !Å‚)Dmꉽ‹Ìµß sû\’eÊzaï…>·†¿©Ô‚0Ÿ $Ê_TúšÏ5KxN™èÔqÓ.´ŒpŒ•�g�%˜@á–‰<@à®& Ž»v‚É߆÷» ÚÁK?Pó€à ößä‘{Â%æŸjü½íàuŽÆ«÷àvlÆ}ž¿ÍÜãµî)¾EܘÂçÀË(ÔôÏS�ç¹Mæ»ê wýCÚpçµ<¸ÕýÞƒíI.!\ü ]$}O–î3Üóßú•<Ï”ç:ìÍ0ÿoúM�`îZÅó˜àÛ7óº[HÔfé¡Àû>ìñGœ=žŒ))¸„9DNà¶`­«Ïë!ÊÈ™G0f| Z[¦s~ úèUá FxeÞW&ÔþÀVµx}µ3,ìï²p»¿ý]ÆÓO����Ä‚�ëÆèˆvƒYMm?tˆÎ0##OÖ¬”™™"ëӡ£õIªãGÆ3F–a©¯œ»âc�œÞwšn»û6ºýþÛ}·;ÂÈâºDÅÆ R¬ ²BjÒr�2Ʀ7@z ÒêGáP–-g°Øf˜×tfá»@ÀØÁKl\!½ f‡Ø¿[0;N›Ù숧� à&¯ëçÔžStxóa__ËR( %KÎ;t Iê¡dÖ6q€fï<.³å‰=\k ÆðnN f ñ§#?UÒ7XúpÂ$ñ4 ×mîN÷ãJ%H~6€’LdÔ�x0¢ÛÁ½b~÷Í™�»ë?è« œ;CT¨¸`$žV9×DU¬}/·gŒ7ŒH>F ¼Ž“h•½ò‰´�`&ƒhøï~Qã¼ÞfÃÜÅ ×øôùÃ\î®?…¤î½÷‰}�Ó¼i;#i ¤ˆÁxÂ�›yØ{©7û"É;PÚHÊÄÞ D䊕ã+P9ð¿vUÌ!G8]²ä‚�‡ñf«[·L™/nýa.€€ | Ä`¿™,ãâ­~æðß[yÎÝÃs&—‹½t [+(àuŽFZ½n ˆdl&’RßKüè2£ƒ¯ ¯é¢Sk�‹Æ€Æ€Æ@h $YFGè¦é7*z}̪fXÛ­d]BâÌ—:%D >Ä7;š¸¯Mã ¬Âhž æ€AHí—ûuL��ĉ�HÆIâl‘s­t;�ñ¢}oL Ü,ýýÆüzºU72¼2,¼¦»‘q©Û¦1 1�¸0 ‰ë{èÚh h h h ¸À€¼R^ô¢ï–¹H�€Q ¿|3)Xâ?‰Û?׉kü™³ðm–ÚÖ 1p£b ’q’”p¢Û™”¾–®k¤¸Yú{¤xÒé544®7¼2,¼¦»ÞíÓåi h ܼÐŒŽ›÷Ûë–k h h $Y <�Yè'f9É6NW\c@c@c@c@c@c@c@c@c@c@c ž0à•aá5]<5Cg«1 1 1šÑ%ÚCc@c@c@c 1cF´Kg5ì<ЍjÝÄ\[]7������������ăɰðZ£víÚyMªÓi h h Ä+4£#^Ñ«3×ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐHÐŒŽÄñt-44¢�Íèˆ>NuŽ74á&úغ©‰šÑ‘(?‹®”ƀƀƀƀƀƀƀƀƀƀƀƀƀƀƀÆ@RÁ€ft$•/¥ë©1 1p£b@3:nÔ/«Û¥1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1p]0 áÚ°ðšîº4J¢1 1 1�„0�¤ÇcbèÌ… t_æÌ”"yò$„v]ÕÄ€�¡�‰Î�!J™ŠèƒN‰¡F‰«72~V|½‚NÿsÚ‚ðdÉ’Qùžå)Eêÿøxñ‚Û¹‰vl&º'QÍÆñQ+�§Æ@üb`þd¢m‰²d'ªõvü–¥s¿y1°o'ÑÀöqÛëmDí‡Æõ×> ƒ�³¼ß’†©Ã+ÿÊe¢³¼w»3sxé®]å=_ Q†;ÃK‡Ø^ËDÚ çˆpDI}+ÞÜCÌ)¢ôw¸�¯ÆôZæ¥ D†A”&­š›vk ¸Ç€×¾ç¾„+月vn!º÷>¢—EÞ¶›eý‹F;½œÅÜ~!¯ ¯éÜÖKÇÓÐиY0pÝ8@_ÿø£¯uŸy†Ê*ä‡cß±côù¼âÇBõ'ž ÅŠÉWßóʵkÔÎúmÇ:|šOI ©S¥¢¼Y³Rã²e©@¦*sñ"54ˆ7î¼s013Sºt”ƒ™#÷eÊDEx NQü71‚ŸâÓFÈrÇ4ðÍ7ý±zÏšE+·nåâ’Ñ·MšPú[Ã<áøsÒŽøÂ@É»ˆN#J‘’hÓ•ø*%éæ{#ãgPÁAtdË‘8§ÍÉ6”榼Ä3xÁmÍ¢D®#ú_5¢þæT꺦Ï;,¢gËé› ]§=r�èò%&1ÑÅ ‘ÈuA‰(bÿωV-$J›žè›¹îñµ7ÑÇuDC^oFôÂ+‰¨Q \•Wx9ß²†¨t&DÏHàÊèâ)ã:1ö÷©ß}nnÇü_ú‘"D“Öú_Ãr›& &úiŒÈŽ·|4r1Qª[¬Ù/›M4T¨hÿ ÑC¬q’ò››~°ëO"õ–Îäýþ.fVð øªÖ#jØŠçÛt�±°ä'¢G­àùÄÔ»³=Qš¨M¢Œ¼Ÿ³Ö¼¥³D™üNtx?!(]¢ü�½ß�¨ðÓöTÖ÷pË”©Á¤Þ•è·E¼nsŸKÆí,Àe‚Á[­¾Œ÷ùÓ÷\ß DW�:.ÖÛ‡ }Ø�ëÌ{€`àµÌýõãõnã¯DöFÇ]÷•{™è�Ï·w+Õ¬`Ñð9Îÿ?‘¦J]¢W›XÓã¨Ö²Ñ‘¿Г¼žö¶ÆÑo�1ðããlójñƒ >0Ù¾]8]¤!^û^¤åÞé_|L€<ÿ"QŸ)‘·(>Ö¿Èký¢ÑN/g1·-ñʰðšÎm½t<����›×�ѱfçNjõ=ïàc¡H®\Ô«¾u·?jÉÂOÂk%Kú˜òýüåËôéøñ´~÷néey‚áÑ¡V-zò¡‡üþ'Ξ¥{ôð¿Û`DT.Z”š”+Gio±�L9ò˽zѱ3,:2gÈ@“[¶ôÇÃfù_ùÞ§|ø!eJŸÞ¦‰ñ¹ÁI-Œ¬72~¶ÍØFç�Ÿ÷!hßò}´~äzŸ;±2: MúO!x6mOôn»ð¿íø�D�ÞéV� ORô™»‰N%ªÛL•Â/=i¥á§b^A xã#¢�º»¯?¬8€Az|>ç‘È})I/&ˆ-è×.Šþ‹~¬!a1�q�û;$=qsHB«×ÄÜ "s»!Ò×ý3Ô|ðnA¼—9þÄÄÅ–ob©V€h÷6Óo9óÙ�ˆófŒ¤å ÕÀ4~³lð6åc‚ß8&¶§v�5ÀkÞ`fL8˜ âÚo†Ô}†hÝ §¦_÷q<××6ßU——2‘Äþ&•ˆþG5Kc§ß4¢2U-Þ>bt^_' ²úË·)ˆzþ@ôüKÒÇúôR&r“®k !È`ÍQ¼eËI4‘™Dwdr �ë¬ü±–=Ìì‘P¡–h“|ÇŒž6uMŸWße¦%ï]4¸Ã@õ‚|ówKܸyX®pš2'Æ�áÝÇkßó^â�“û!ì‹°?‚f�·?�¼mÑ^ÿ"¯Qüä�vÆç9×+ÃÂkºøÁ²ÎUc@c@c éb ÁÉ™ÁÀ�|»BBÝè¾Õ!ÁÎè8oMú•OA PWUïÙg)#3–þù'M_³ÆçŸ†™S[µò3-TFnqTxôQ:xò$í?q‚¶ìÛG× þ€°‘|ó"%N HFò­ÍŒ—@��ol¨·O4£#¦�|npO+½×äfÁÏÆï6Ò´úLy`H¬ŒŽ¿Ö3Ó•¥‘¦Ç%’ˆ�àÿ’éÙŸ÷�«†þûÑsœÐé[¢o÷�üÿYC& ŒÒÅóþvO�ügQ¥|âÐúfk–Líz#c)¼¶A%Ê·Ì0‚ÄnY–\Ìà ‡�hŒë¤Ðß�ýKTŠ¥Ó†½ÄŒÈp!Ô|P&K 4sµÏÑ?0s¥C3ªÛñ¼z£€›~0ük¢ÞŸ°Ú:ÆUå:Dy72Ö.'š1†hï��÷¾d&ÁVÌôç÷!…_‰r‚á~»3’ë€.£¬7%þ»ÆD¾¹q™ ‰Ï2Ó¡øsD¹·$p£d380áÉ2î#`L«à¥L¤?~˜Äf ϦíEÙ`ôôh%JÈ‘›hîNá–ÿèè'€‚Å38ó=Œ›ï˜Ñð 3ˆyþîf1³Ì^W¯e.ŸÃåT&Â1}²uO¢Çž"Â~ct/¢5KE}ê5ww«"T?˜<Œ��EžøÇM•ÉëÌwÜø¨Ä•ý‰×1kæzó¸pË©÷y|O¨ä…šS0iÕuæ=M´Ákß‹v=’j~¸áŠ›®€Á³x®ª(ÜÑú�Æú­ºÄg>^ÛŸç\¯ ¯éâ¿:o����¤ˆ�ctYÍ*Vô3vþû/½5$v—‹I•Ñq•wn/÷ìI§Î�£tiÒÐ7o¿MYï¼Ó�s¨Åš»aƒï½uÕªT±ˆ  ªŒŽ’ùòQ§W_õ§Ù~ð u™6�öå ƒZI2: šê‡æ¼Ûw šÑáQ ->78 ج¨}³à')0:Ô+Ú ÷‰l¸Œ0ÂU}µxÑ{ÕDiS8=¤nod€”X凳â­6D-¾rßÚ¶ ˆ¦�ijù»Ã×!ï¾$Sc 2 Dc\'…þÕCM« \A¢’Íá@¨ùàÄ¢g²ˆ!õuC­z5øPø�?KTáAáµVW¯ÜxªÛÜô¹A /_SaÕo5M¯=%|ž*Ë*Ÿ˜¡ zƒø "x‰ç‰1“Bª›=�q][Ä­ó>QÛ~fº3'Å �ÚMY0Šño‡ÆˆVξ߯°ª°òZ&r“ šs]Á˜€©R…-»· 5ˆkbL†Åží¬º+¿XsÀh@ûUf†d´!Ÿ¡Ìœ(ÉuWÁK™HÿúÓDëj�¦òñ)g3WôûŠüŽz?Z\Ü´1C�]m_ÿ:¾+n�¤»]¨Ks+Ñê3f^#yÜ€5K`ì j*ç4„ÆìÖ@@Œ20‘Ö.#jT^¤ÃØÀ‰6xí{Ñ®GRÍOe‚/=Dæf4!Òõ/šu‰Ï¼¼¶3>Ϲ^^ÓÅ'~uÞIñÊèØË64F¬[Gù¶ÃÓ|cBª®z,gNÚ°gºÿ~ê÷Æ>¼}óóÏ4nÅ ’aðTËX Ô±ö;Êñ­Œ¶5jXð½‹%oÆ2J`§c@¬½Œ`Œd°çÈjÀ6<ùvÉøfÍ|6?|ü—”Lúƒ.œ¸@Y e¡¬E²Ò®»hÏ’=tbç ºë‘»(ÿ+ùéžG�wQW/^¥Ý‹vÓ¾ûèÌþ3táäÊø`Fº»ÀÝ”«L.ºó“©$qóÇD.�ãå(‘ƒvÌÚAV {‹ÜKEß.J×.]£µÃÖÒáM‡}e–ø¨Ý’î™Ôò<°æ€¯ÜÃÓås—}ñs–ÎI÷•¼Ï/Ú/álp~ž*$ô ×ª …˜›‰¡¸Vq’9O²Ô`ÕºD�6t‚õ+EZH!Â6ttC75Ô8T¡¼ßùÀ \HO�˜‚ƒ{õ¡ Þ8ìÏËýœÒ‡˜@ŽÃ7t/ãàZŠ%ù «:„ƒŸ@y„ò?µçí^¼Ûg˦P�B”éË ŠØzãÝk™°©ðTF1†`‹£÷$äf…ÿ1®{Ø� nú˜Y˜ßÁÌ3 i$qs6‚°«‚úà›ƒ¡†�dlÉò“â8‘uöŒÖú'3=l¤@IDATËÑ•¨WñfgæÉ8‘<½ö½HÊ„Ðæ8ìëråsÎ ká¯?‹00³Þo�çe`Í!ü7ìCVq�°¯…­»beÄZFÑäáâ\¶„çoÆFbYÿD�‚ÿ'åuÞÍ9÷+¦MAضaá”- 5ä^^ÓÿJ:Tc@c@càæÃ@ÔWx1øiÛ6Æ Žù»vÑLmyã±Ç¨Iþü~FGóJ•¨ïl>3LjÑ‚`ߢvß¾tˆUJµà0ò¨ŒŽa ÒØåË}þ`r€Ù¡‚Á//vïN'ùÆG*V?µàs>Ý2„bt NËÑ£i]¬Ý�> ø˜-ð$%FGÿ<ýéøŽãT´qQŠ9CÛgm�ˆýO™&%½<áeÊWͺ;Œ9CýìGWÎóîÑR¥MEU†V¡B¯²„"͉]'(YŠdd\Ã�ã©>³jì9Oå<ôÚO¯É(¾'˜!ó[ϧÕýW3QÎL/#o^œÊu+‡ø-Ã#}ºÙàÈ2p aÍEJ ælœtúCÒªSS¡XÆ“O¨Nh?”¥­èñ‹kp7‡D¨àð×qD`‚à>ƒÈ‚š€@ � üÊ#”?˜Sê0¥‹¡õÑÖ”63SÄXÚq)-þb1¥º-}zöS%ÄtöÌÖ“bÆP‰KP†ìhn ¦úØ ­üTó¦’9@R`tÔ)A´áWq8º/·8©MQ³Ïd+Ù®7^�ow«75ìz´íqÕw§Û!/&ÚºA0Ó@\…uÐßÑïžüŸê+ÜöCÞ�2 PuiÅ@Ðü%&ˆM5Ca¸õt{¶ÅJÖ^FXßgâ”[€^qèó ’ÛyÎP@Àž¸F qvK]Û…Š1!{µˆiæR•œãKßùÜZÄvuè@S Ü2ÝJðÊ2�ž À–½?nˆ]b[�1‘çÁ/ßDÍuLðcÖ`d½ÊÄP€C Ì´_J‹˜â¿0�£!¼õ€D± `ÌE2תy¹uƒóÖó"6Œ)ÓY0ÓÕô0> Â'ˆ¼vƒãÓ7Äúc¥ÿ4k;#×ö2BõwÄÇôus‘xCG…ݘ÷±ðÁzÔ——´UM{ ÐcÑŒ!X ë Te¸SúXŸRr?\B8rq3 ûŠçÞ¶¢n#ø›¾Áóð?r‘ ƃx €-y3ήÚÊËþyJ y¸�  Q‹­·d¼h̵ÈËM?�ez‚À ƒ¼•I&æl¡îª+ϯ0‹€gœHp;ÇÉøÔ ZÈk@ÛᎤÌv�ÄÚŒõxæV󆄪" e`oó3 r>a¿ãö0ìÂþë¼×¼Ã{:Q—àµL0:À\# FØ Q„Ù ¼×îݨa Õ¤*102�ìH€@:z)ÑãÏuûP¨ËÂM(0í€3»j«¤æÒ«ŒŽnÓ§Óìõ¼#`Ò¨åË–ÍçVÿ>9’6íÝëóšÙ¦�OÅ•FǘeËhÄ">•2|R½:•gÆŒÉè¸=mZêQ—OØà.fÖÜqÛmþЄP]%²¹ËåöI¸ûëý9…O sg¤÷·¿OÉ’› ôé}§©÷ý½)Å-)èÁòRæ|™)}ÖôȦ1›|O¤“¤À+àô�ŸÑÁ‹}�Ú72ŽüqDÓÃ/>L§÷ž¦ƒkúÊ!ûÖŒ·úÃÇUGÛgn÷½ã¦IÞªy)yÊä> n‡J¶)Ie¿*ësŸæBo³Ê²p J•*T§Ÿ�@b1m#d|塨8cs »{„®Ù¿Ø�¥u éºl9¡S„�åFM&nB7)@¼\»BHøà ‰n€�F·ª¤1å9L w»Dy$ãZÔÄüwÓßóÆÆ4nfLÝ(›ô 3øc—sÌ �H#Ômë‹[Uˆ‡9'û|«cÞ`>)À?iÓ Ë(«}OySÀ­�5­›ù %/+ó&±tq^Á”*~§¸uhÚ‰PIé]Âäͯûä{øXÛ)*úöXߥnþú-…íÄ—­¹Öm?�å:=1gÖ{F¨PB8n@¢€u¶¥06.™ã_5s únt@B[%Š�ÿ!-ýö "üAîŸÓ·˜q#)¶¬À(Ámšïx.à;`ÿAH¡K»²=X3¿MÌï¸Åöõ‘NýGßSðù fôÆö#¼{)éÒX;ö•‹x¯€9€> uo˜�±Îæõ·ç�›~ææÖ´M¼�68póÌÜüš·KôkÜ^†=„’ò8-ýéúg/ᅇĹsoцHúž×º€Á‰[h¸Ý×kbÜ\p“ýм «îúD¸ñïu`æ¾KedËÉÌþŠ,ÐpD0YÁ°• 20Ëú'ëê™”×y7çÜ÷çÌ¡«W[Ѐ›¸áñf‘"tÿí|`p¯ ¯éª ½444nn °$½g¸xõª1~ófã£GÉÚ·7HùÝÛ£‡ÑzÁ㯣G}ù¯Þ±Ã(Õ®�ï·rëVcʪU>÷;ÆýçÌñ¹Y5•qöâE¼¡ øëöñر~ÿ}ÇŽùýUG5Nl¹Çcbüé>?^�îwÏ\»ÖgÔ’%~8^êÙÓ&ëïô<¾%Ýg&øÓ;sÆ_/ýêg´£v¾ß’/­í˜ßj¾?lß/û,U¸xꢱ¬Ë2ãìá³¼\<}Ñè•£—/í°âÃ,á}s÷õù³!gŸÿ¹£çüeL¬5ÑçǪ¨Œö)ÚûüwÌÙáO¿}övÜ�g×®\ó‡ýwõ?cb͉¾ð·t0ø–Š/lÿþý�Ö°~-Z´ðçkw\¼`ç¹ÉÏÛC¬ï ¦Æ#,׆ßÚå"lpÓoå<á7º·ð+u¯5}»ÆÂ¿@rÃX<öé73Ÿ¯mU]·Â0PöåKÖ4xö•™nÉ̸ᵋ‹ðZOpû¸�vضÑ0¶o¶ûZßÝâÇš*¼·Mc7ùûú�–tXâ ït['{�ÿ½GÖþ<úäêc0cÍÇ©}§ VëfñS_6ŒÞàOϪØÔ ¿;¡ú*°“«.û_¡T†±t–¿Z>Gõ‚"¼HZ«¿úöå;"N鬪oh÷±Ͳ'}:þ–ßÍø¨ó�£¬iÞ~Á ß±Å6—§ ÙNô{;`œ.˜j÷µ¾Ÿ>aæ�¼žÎl ö¶ëOÃÀEº�íƒÅŒöQm‘îÉ; ãÌɸáðÕSÄ©šß9\õý¤žˆ[&›a\½bO¤ïó&©±âºÿÙeùY|m˜08²2ãæîÝçï¿D�P¯Ùçsüˆoþä¸ñV-4ÿïg ß½Íü~óÆÑCfø¥‹†ñì="íãéLéŠd®•y„ûüð³-g•m‚ºæŒèfÍyßNÃ(|«HÛð9È9e†_»jM*‹0ôƒ@}1Üqm– \nú»Ló3oðÝñ›2Bø¢ȱöJ1Ã8#c‹§œÓÐ>ÆÀc©EuJÆ|U€ñ†|'ïöàJ–=s¬=4ø»Ûù Âƒ¢Œ�^ùaÎî1LaÏdí“û€’wYË•þáî� ö{Ím•?cìkJdõªù¸ßÛïˆÆ\‹ÌÂéþÂmŽA_šß¨Ak #�Þbîc~ú^Ä/~§aìÞÊ8N)Þ?khMèío0¯Ê~±z‰5¦×2Õ9®ßç"Ï ç £Æ£¢¬Îï‹uE–‹ø€þ6ëÒê5ágÿGŸ—é–üd†z-Sæ°hºa`>DÞx~üºa|ÝÜ0þ—CøÇk–ÊØ�Ÿnú�ün( ßmÜQFÏ� í†ÿ·Ý ßG¶uÜ@³Ì¤ïÎÌ™³ÍoΜ9óûþ–1·�±ó ºv�õ÷Éð¾¢²+w$öwq¿Åvý¬UoµmÛÖ×ÿ ñÒàÔ‚´J~§¦A]ÓüÁ,C}T•V¿”“‰"xćšAð‰…nëª^g½ÓöîRePÎ-ÀÁZK„B½õ.®¤¦4бñÓ�¾/- #­Æ.F ëžôòú>®ÆÂmÙ“ž“1V õC_ÍwÆwÉÀ´ƒÿWžHšÂi9ïýpmrnßž¤ecIYú…Sêj]%–R*�¸ ÜÑ…ÇÉÕ J„¶@#ÑÔ‘ªoµŠ898B†ùF‚pZÙoõUyEH?oŠSvÌ«ªœt|Nµ�kÀGu@ =;¨ö0ÎÜ”sm�qàî€/¹?´C.„û‹gç›UP©˜/èc,|½€×‰8åßx^JFÞb^¿¯¸Sæ¥6áyãiS·-ùTÕÛ¥©jëáJ ¬#׋±+c× PO§÷ßqÊ ,„§BAÛ”ò¸Þé£Ãë—þ éÆïÁ„>J~¯m¬ã൧T;¸Ïh BhëžkÔùî«/ð>“>¬Z¢Z<ŸŸ/žEK úþs× ž  ¥4Å;ö‚ögÒPu]øÆ°¯æ¹fywÈùÔZHý^[yÞ1g¹×xzK·mV5à]w.¼ÿ¼®'¹´óñ=ŸÜ5¹ÏŸæ7‡eF÷±2k†ž=Ãd`¹yváBkÃ^µ¨ X-çî«9600ø¯s€—™þÄ…þ_ö­·¬7—.µöç7trÈÖéÝw†j½{['N�Št´921ïþ#G<[éÎ ‹kÿüÓÎ бdýúÄr}gÍ «[€Ž: ê¬ß¶-â?»È +—–“jM ë |ˆµÇwC¾Kr £ÃúeÎ/Î/|v¡µà‰öÿ;w¼“XV%èX:|ib}j,y#á …Ï -:Ô.¿lä²Ä|}2÷±Ó`-k“�;ìü?Íûüß+S/;ÏŒÆ3Ë¥ÅNûšj1 m7¡GîUi¢Å‰tìcѪç3>^öÿ%¥Ã·=Ú©rÐâq„yÐbž1Ʋ %á1þEãí-ýÂ]Š-‘J©:ñ10~�eApv.RJoÞøf KŒèTq ´ƒ½ÆÐc÷©{í¥¹‹.@p"Á¡/ùëÔÈÞªn&!�IŽÄràž— ù°ƒ˜NVʹw9ÖSzžäöaý!·ü»…¨‘ÊúI„M^öHå�þTCÕoMÑCXU+èÔöÄýÎ5C›$Ü3¹ß¢5>w‚Ê�Ÿð Ž ÌÐGúëϨ´xÚT5¤ÌoÿΪ_°L`8RÍjâÜÚÍúøp[¶ìÚfYÐúF9^$äq[!й֫­äÒt94¨Ý¤k‚ê@–PD²:‚@׈/Ë(´å÷¹Öûëx×ˬáW¿þÒ·ª×*ím=öâå„ä�Ehír'M„áØºó©ÜÎ/¬$‘–É�;§”²vŒe>Ð…‰ß.T5èïf€š˜1¶ð.F_t�|¼ë´+.€Gc_·,¼+d�«&´!»›ôg)è\dèý€3Þièc™K’Î÷üáþ1Ÿa ƒ1ƒc€õëÀ)ÁÊEq¨ã‰úIA…xÚPu£­ ƒU_a°$ë2h›ë$V(ûdËÂXZ·Â²`í ?7à—þމ§MعÕß}Ľƒå.Ê ²îÖ¿ ÕYõ+Ͼ…Î…÷ŸôÅïö|{Ïû½>wþÝG�ZƒØ;I‰#Âdbðp²•=y,‚–s÷Ïü×9ÀËK´f÷î° ýö·ß¶¾M¢ÕätÌY¶,`è1}º]<’ëªgØ4P@Œ­ h¹»½®“''æÙÄýÅtÌ[±"±Çê«V€Ž†o¼–žÜAZpåE=.P.¤t Ép£_Î~‰€†€"î-\Q бrìJI²†Vî³tPcDÉv½~Ú~(Ùvôv´¤%რ¢™‰¾@û iJ Õ*ªÒƼ¦RtÍùàˆ¶Å"YšJ0íÑÊÁ ‰›ô�”Å‚»C-ËZ0ÕŸÀÇ]oJ§$Ð1µ>_\:×�ŽÿUVã B/ºçuþÅV^g-ký�ê<ÆÁg³½óDJAüý%#åO�úìE³Ç9}A¿tÒõ2Þ!|�°rçŸzΔßïô€ê>8uBɵ„kA,º¢‘˜öã~�tW ¸^¾Ã%Ž¡�($‚°YcUŠ.d@ßA¢Év xÚT5¤Ì¯X!±`á9èá%¨9ÿçãÀÜnZöÛoaÁÈË)B¹®®S¦ðkÞ¢wÞI7,HGOž¤Z¯¼b׃‘¿2{6}Ì�ÎAoµmK…óä±÷õŸ'Þ}—VoÞl'ÍíÒ…²pñX‚‘OúúkýG:dêR§ÕäàRBŒ<×e—ÑÔN�$9ÙmZ#/×±ÕÆÏ\ôrº—ÉúÇ¢ªý«RùÎåÏ®x{ÍmÍÑO™2fÍH74¸Áä|ÑeÙi›>ßDk§­µ÷»îJ^Ê‘ ™$ù}ïÞG%.i§ +:ŒþZÿÝ;ê^*Ó–£c2�*=ŠØU£:ÝÚéVÚ½f7 ¿‰#*2®]˜®Cļ(”%_;P9ÆÉï¿sdG”={vÊ–�£)¤=;8ðsÂP{ï{¢›Ê©€È·'fœô QIfåñ£t™‡=kŽþ„ VQA¢äü YDÐçh„࿼ˆÇ �'çŒS¹�÷¾�9r©z¨ù½DëW«§_rÝ„:¦¼I4i¨ 䬟¿¾(žCtåUzjÚì§d0ò[Ÿ¸•ªªîûBb Fžc‚ûˆà¶ÄÙò¢§û…_‚°"Ø.¨Û0¢ÆÕ¾þ‹q„Í ?�¹‘_{ßß’¨×ÛH‰L¬x3?'�µzÖ;Ðýð—‰Þì¡êXÎÏ ž �öíáù½� 2Œ ­BRüX/¢�%%å¶¿þHt?O_à5‚²·~.öº;= ]#Pë'›ˆ.¾4rYG ð\yUà×îmˆfðó^¸8ú0ös¢ 3:AÈgqZá›T}ÍnWÁz_­æ–ê…ˆòVÏv)žÆ}©êFUê š¡ÊÅÓfä+ñFB?ÄA„Ÿ½üø7ˆ^{ŠßE™ˆ0F0o"ˆ(Cƒ&|MTº‚Ú—ßÁ/ð¸áÀ£ ÇTYuäüâÀ³ üÇ™”˜k�bßC`öמT×¶ôPÒqÓ÷q5w#8ð×»�z;Ô"új>Qºôj¬8g¼÷fóB o7ùy®õ²~Æ»^ÁŠ›ßÁAXùù=КcÙ‹$€wÅ*@9òôyŒØñ^Åû4�çtÇøŸø�JÓÿ9£æ£<��ic!?óAׇUÐôÜW}ºEÕþ-÷oxOæ{'°ôìw�`ÒýFtUÁàë´‚€ã�oUkÌwÕ%*R‚(Ó%* ;Ö-˜kAÝG5l§öõßxæÚ ãíOÂ|餞=ðhԞˊè=Sû_Îã îµÕ¾Ì‘>>å;u�8ƒõÕšeD×\§f«Üá¿àæÝ kTz;ž+ïžGŽâiÁ´7­ç€Þ9‰.¸€è¯�D}ß%ªËc„çÏ/¨Ïgµš¨}ùýžçÿ<¦7üD„wÖ}¾Žgï'�;yÐ6;ñ;báûªŸX×ÞPVÕ/¿S†õðœ¢^ë8ØÊïÆj óPïwˆêµPµunÄÁÛ·ò»�Ÿ 4_%?Ñö-D˜÷7È:-¤Ås‚9 k X ëp¬¯„‚¼ÿ¤¬¾­‡u�%¢,¼Ž× ߊe/á±r‚×Ë]x½üš:›Öï?½�~÷ϧ÷¼ßksçß|à�_½šÆñÿïû÷'žNÇ ÖZ… Ó„zõè�W_µÓ»wïžx>–Œ<.™<†††1p€x�hõK_|aå80 ÅF`¦{Æ�·&þø£u”]Q yYtÈ9}É¢c$û‹Äòð¢†Üä¹›û”‹EÇóš%ÈÃÕ ÏG‹Žyç©‹wýF²è×Rƒ ¶¼BöÂg‰'³o˜J´èx×±èZd¨�÷‡Q?H6kd©‘všXtœ:ÂÊCʺn«b¥”K»ü �hB³ $ÚwÐÎÓz³�ÑìͤK>UCô_Ý´º¡}©´WðõBË19BÐÀaÝ­@”“`™É•MíóˆÛ"Ö;GvkjÖ Ã¥ÎÇŒî΂P,i1öp-z0]Ä9p\\ȸóÒŠE~‰áMS?-X©ÖEÉÜ?I~ÝúI/'~ê¡E�œÚzm«;ðsìÇÚ"Zýú¹Çë©~Ã_²®é¯çñÚ‡–¶Xsˆ—W>I[ùMB;9•˸²�ÅŠÄ5�µÕó«×RŸßñ.å¶nrx/ãÚîºÛÉ‹mÛյ#6–�c†+!hÁ¢>Ñ—tÙêîÝIJBÎEÛú™$hì£u£Õ¨bé ¯å²:šëA×hI\ Uà¹Ä˂齊7h®P¢‘ß¹6è8@$Þú qéäÕ?±âA^üCó]\™!?æ±�÷}îz`5Wµ€*�5\rî­âiS,$¤¿ˆ»¤Ó -T?0OG»nÌ#zŒ(X ¢N\«Ûz7H›X?ŠK÷{Fú‹gV®s•ùp¡'õýì|.$©kgÉ7n :}¾>'I..Æ„ ï?wÕº Þ�±ÆFØ{Œ�#Q�±çU—Ÿ6¥¼Äê‚Õ HbýàÙ‚Ë77]¸ëñs,Ï;bÒx‘~Ÿaý!”Öï?ô#È=9ßÞóÂo?ÛÃ'OZcW®´*³Ûu¸§Ò-8òdõúòKk»¬ ê‚*h9i×l    xù!èø‡¿þjÕ�2ÅJï Ì”¹o_«Õœ9ÖŠ;¬x�Ž�øå"@Çësç&éôý•x¾%ûKJèØ¶o_bPôšÜßî8#ÿv À…š¿ê£IÈ„�¼�\grbž”:Põ€¼ì:§Ü7Ek)únZ›Å …?BM|ŒAÀ($þßáÒJjòÑk¬”·øõHô€{~ ôAÜÀÅй@¿Ìý%qlíùyO’.Mk0Í>Ÿš@Çšikû°}…·Ÿ†´{`†nŽ/¾éu&!.Ƙºéç±wAÈ£ xÝy¼Žá×YÆ/æÉ‘î– NÝ„ ¥RŸŸ8ˆ+"åôxîúÁÄ‚�ÿXü‹ã£X¿;ÅÅ„�^Ï©» á:Ë[ìC°&`*|“Kràu’¶†uWÁxá« |ÃõËÀçT}€êO›z=¸Ë=À6€UÊ‹û,”ƒ«“äñU¤-ðF„¶Tz=¨;”ÑÝéíèÏ%¡”šk2JŸeMÀ,®aôOÒ' A=¸¯:‰p)’p_Ïißïs-õÈŒu¼£ÜŒH\•x"N ® î³Ü¤Ç’ø"àÜS¡Œ~ï0gÈ‹Ïçñ°-ò3èÂÄá/G¯]€+¸{ º>€ïw¹.¯÷?\‰ ÏL,±•¤O±ÌµAÆÀJÝ•�'ŽI«Þ[€ër�x¿¹ÝÑ  Îcþ^ãèÕ$V†w–ŒLC%1ƒÇN'úuùÙòþs×÷crÿ�)Vòóž2ö¼úá§M)/ Ö?˜ß¤/‘ba]H{A¶¢œ‚9È‹ž~йGdAiýþS½P 2~°Mn½w¾½çå:cÝ~¿u«ÅžL¬Kúô 7ŒüŽ ûño¿YgÄ÷žViPÀ"h9­i³k8`8`8`8ÀàWXÊ�ìÞ_}e`d›4´»ÅìÙqÇI¯Î/€õú÷·p(�F-\˜tL_²$ñT4 c;ƒÇŒI,7žÑx7ýÛ�ŽÓÇO[bé1³)K!\´{íîÄóDR è˜Ùl¦-\FÛh#�9ÍRŽú‡[¶l±6³?ÌXÿ<(ÅmÅ—ùó;Åe� ?ùB²ðÆÇŸ„²²XÔ5vä¼l±>‚0GH„°Úp¯�´Põ¨BÄX mˆv£~=±–O�|Û~Ø–2ÀºC§ãû�[´>5�ŽmËœ>,äÌz_Òbì¡}®Å}†àS#Ò7JqþÞb’’t+Ö?‘bx$-¡R¦�rƯ' R~<¡?ð¯úA ÎAà³7ò#¯³÷u-[ñwž$'HðW´�ÿH½lÇ:*/ä±€RVŽ,Á'å\¤­n�Áâï@èá*ú+ ¤ bhóêÃ<ò ¶ÐrIÿE ç¶˜ˆ§MÕ‚ú…¥Ú•ÿ]ô³Ñ÷!ŒE9·ºð/R)Ìy"Üøƒx(ß³C¤–…±-}ƒ&¿NÐ(�óê®?G)5×êR´Á,4å½ãL‚0¨tÀ¹4:‰EüÀèŠDÑÎù}®ÑF�ñ�<æ%\ œÐ`I°a¤#–�NÂäÚ¡! ‚E¢¤mÙ Òta Àðª+Ö´çræ÷üƒyV�x&p 2¦õûO®ÍÏ=9ßór�±nfè2­ë† ±^[¼ØÚu„'Ó(°Z.JWÌ)ÃÃÃ�ÿ$ø5›òÄr ëv…—ï”:ÐË×0«ŽŽý§?þ°vìßoMáNeVl·UÜž‚è@G+¶ôøhÕ*kì_X½fÌHN<9®¹Ú®ÐQƒ­=>\¾<âÿ<>wêoGò #ç Ë¡Î_·o—æâÚ¹N÷íº*ÁÝT¯‹zY?Ýhýó7î /—o·Ä=•X}¤Ðqà�Vï‹{ÛBîAײÛÕ/~ßïû¬Ïº}fõÏÕ?*¢—I�}|$c1*æÐF�ëTš.à”`Áº¦úžކ6\ޏÃâÚ hCw7£dÂ$‚„¼¢ Œ>áß½°GŸ TXô�ó‹òÐð¡8ʹhª…³ÿ{âÀ ããkX±aÖÁ?0ulï1kBõ ‰ Hjp¥öZŽ×ì¶`i´tøRëжCÖᇭOœ}¦h-¶©¦î34‚½®op?uÐÍ�O€ŒA�U ¯ D!ØÁ£»~9Ëôšçá D�%\‹ ÿ¯v’j‹�<¸&B å�[�sC • —%(W«¨sÎk^¥ lçŒ÷Êå¤é�gTØu¨­ÚO“ÓL–z1èýC€]‚½êé^}A@aɃû -FP÷¶N:4í%]�µ¬xÚ”: U,mË6p+åd+¼òcEÖ Lx›jºÝ¶HýØê@æ9h-ƒ ))uAxævÿÏ\«ZP¿ÝZ†÷7ÚXÅ3(|ôÒ2Gå¼ö¥-<;rÂÝÅ Æ!æ}€í˜7"‘ßçõÈ=Œu¼CH)|‡pA]…0ÿx÷E"äÁy  «'¡'©kÆœ"yÅJ­HàÜ ¯Ð¸œÄü‚/x~ç��Ñ€`¸Ò­Ì‚® (—ëð%Á¢ñìêê€hÈãÖØ�w®õ;0÷ËÚýÁó†ûàõá¹NCbm·‚òþA>€Ä¨÷ß *À ò‘ï¯ö�¦??h;h›(+Vzhû—;õt¯Àð°$Ö]¹åÂûÚÑx^dí‰úƾŽ’’^·Ÿ6€DÝP¦ÀX�Ë-¤ã‚îw òù²INÙBÖ¨¤…ÎÇçDút+s§Ü‡äÞx7êc\”JP^ÿÑ_¿ïù cOç‰ß6¥,ÞsÂyÖ£¹s º>�ö‚lu kSÜ#|‹}ÿ¹³¦Å5`Ý,”–ï?郟{r>¾çå:ýl!ËÊØ«—ÕdæLë‹M›]£'WGPÀ"h¹äúcÎü×8ÀŸþÇ™z´ûèQBó£& FîÕj¤`äÈ»çÐ!zzüxb7U^E9hiˆ:ß{/ÕÒ‚‰ëÁÈ= qâm8êéÚµér� êŒò!ýsš£²1eÌ’‘²^•Õn÷ä!ŽÆ˜@×v¤+ŠqTÖ³L‡8¾ØmÙU£÷޽•áá©y÷ vZY޼93Ñß§‰FpMñÈÞx^ŽT@q.F°ÅcGœt=Xݧ|+ž¸ß9‡ än‰ šÊpIzáÈ ž�ep‚o?LåŸ.OU_ö}?ô{ZðxÒ¨ƒEê¡Æs{¶{6+r`S�mÊÁx»rW�0~ÊeQc±Ë¢‡ŸÒÏ:ûâŒ`În˜ZqœãÄ‹~ÿ™ƒ†–PãÚ}¾=YDpp!<·d%:Ê· cT‰_Êý;~”è ‹!Àhßqj<«¢-ˆj–#õŒdÍÎ�%Q׆3—rÝãMÊêävö°uýjçx6âDðÚH„@·>›3ÑGUßHyõt=8ê󃉚=®Ÿ�¼Þà~�dÁ‹p�4Kð=@pJ<ÛŸspVðM§~OóõT)ϼNô?>½Ùà :Üá%¢G_¶“âiS*ù|ßëûäHmçÿª‡§ª€¿’¬³âÚ@–,t-ï�öƒ…oŸã€žLtÒp]¸¾H„ñ†à¨Û6«¼ Ì› J—ލç¢ûþg&þÄ3×&VÂ;õKý²ÊIA aö"=Ðï·{‰0ÖuÀ�Iß靯ÀwTÀr9˜�k_ï\žµ¼ù‰N0�wþé›|{íx ýxoï|~Þó¨!èØÓ[÷Û¦”ýs#�‘Br¤Þ¡sZæËœ4}/èú@¯Ãïþ�½DÕ ª é(‹u6Ö?ø®Äëb�þ®NË÷Ÿê ¯?c\ï�¯ïy¹N?ÛŸví¢¼,ÊžÉ5y'S‰;¨¸ûXŠ»ÓÝÇ’Ïl    üq Õ�éΊM›è©qãìÃ~ÍšQ¹BÚ*E2ñ–­*¨æ+¯° Ù¢æ•*QË;ïÔβÀ–A“^3gÒ*®�ãƒ$ž»‚_B�V¯N•ŠKLÃòß׿¿]ŸœÈ‘93]•#]uùåT¦@ª|à r*ɶñàÁÄV#IÒ½ÞïÜ™²_Ê__L/ϘA4Ý+[’´¦+R›»ù«#NVtýµþ/ºå±[¨Æ�Ij뙡'±µUP�n{ê¶°óß þŽ>ñs:u˜¿”€Gå•)ýEéinë¹6� Bg�+õÆ×£•°ÓÞ,ö&q¬ª3º•n]ÚN{«ì[ÄÖ!Tcp ºåñ[ì4ùÙõã.‚ {ÛÒma÷ç³ÌNEë¥JÝ*QƬ¥ÈYÛ®ü†…˜ÔÇç÷‰ðaýã÷ü¡Æ‚<Ò¾ãa,„ õŠ«n}¹C} J'1DgŒ&ÒM�’Ž-ê(É·¡j¢æ,àÑ .Ã_fÖ1'µÓ£”ps �ÊW!ý‰s{#zAˆ„V7(Êœ—øáÁpA³;ßÙ>f«z¿Ùûôë<þÂM LÙ3Qå-ˆèónŸÓ…™/¤®‡ºÊé°íÀ«Ò¡­‡èögn§*ý˜)‰]gÑwƒ¾³A½ÓÇÔ×~ÑûŠR£Y R¸€õ-€@¨ÏؤBZ]à  ›Êþ{„Ç.ƒ‹Xˆ´g; bN¨óþž×}´ø#%x\ÅÍý=¢<Ž„t¼_/P€›LÑšÔlÌ¿þ<öÒI)µ Ñ«£ŒBP§Sú JHÚ–o}žkô3áûh§ÌÅŽP)ãED˸¿é҇瓣Ÿ–5ºE@�+µ¯©®/W^¢¿Å� �7%\»[xu󀤠…~‰`Bq$˜‹@SG²¿ƒúˆF:ø¬S üÛuçg aŽÕ‡hí ÀuÐ ¢*\‡P�ù ùDË¿æ÷pU~,5%ÝâÝ�>@¸µôPø»c'Èúàžw ]ý�ÓÀÑÚüìU}@ ±qfÒ7¼Æ(ïä‰g®õ;Ð*Ö0oöpÚ�¶ç>$Åý_ö¥SóÎMå”Ðü†2N:öÎüMT*“Ú†ŸIz„wÞxWèä·M½ì™|_š‡¯Û²dSÂ}(xÍ™Ë\åÝ*õ•»“ÁÝçm4 Ò&êû†Ç,@Ä kÂk‡@¶qG¢Ž=’îÈéwĨp‚5¯A�w8ž‰§^%jõ¬“ë|zNœ^ßóûþëú?¢9ã’oo0�Ï{î÷Χ·‰ÑÞóRCб'僴‰²ey>•µl4Ei+èú@ÊÙbÞz–çdgQÞwP�Á{ÅŸºª8§³BK—PX¼HÏ™Wiââ#8Aó ÊQŽ¿•­Xˆ+¡-€þRÂÏ|ת­×‡v¬u¦v¾›ЮŸvÙ÷=Wñ\º ”ÚMšúSˆ ¦un¤*›·ž(a¥¹¶j Ñ•ùX˸xò AÃm—C|ëóPÿn ØäkJ>‡Osqß>âgšñ±‹MnS9» S¡XÊ™ˆ§¯ðèÃâJ¹¯Ž§6Sö|â@PÀ"h¹ó‰7¦¯†††gƒç-Ðq6˜cÚ0000Hžp›ÍøX´“¯-us|iš åü"kÖ7ê{{m«+MØ+¯RI$·_±×hrœ»ø/Œ÷xæƒs÷Î¥lÏþ ã e9öï¬ÍŒƒç}5We8`8�ò X-—òW`j4008¿9`€Žóûþ™Þ¤9Ää¾LE¢ñ_¥yw¢v.Á  ‚Æ?ÜÅJëV(÷X—çbíy¶’2d8ðoæÀa¼Ç3ü›ï½~mÿ…q _¯Ù÷æ€Þ|1©†††n,‚–s·oŽ   þë0@Ç}˜ë700ˆ“·³[5¸ÒÑ+ÆY¥)n8`8`8`8`8`8`8`8`8`8`8p^q (`´ÜyÅÓYÃÃÃ�³Àtœ&›&   þ­@íÊìWÔç]¢:aÏ�á€á€á€á€á€á€á€á€á€á€áÀ‹X½êîÝ»-jÊ0 Ða†�á€á€á€á€á€á€á€á€á€á€á€á€á€á€á€á€á@0@GÌ3E   R€¡�‡þ±R S…á€á€á€á€á€á€á€á€á€á€á€á€á€áÀ9È�‘{ÆÕ«öO½WySØpÀpÀpÀpÀpÀpÀp µ9`€ŽÔæ°©ßpÀpÀpÀpÀpÀpÀpÀpÀpÀpÀpÀpÀp 9`€Ž4d¾iÚpÀpÀpÀpÀpÀpà¬pÀg…ͦÃÃÃÃÃÃÃÃÃÃÃÃÃ�´á€~-3‚–K›«4­ü—9p^û�¡#Ç�Qžì—Sº .ø/ßGsí80±ˆŽ&JŸ�¨å‹©ëÁíà^¢™#Bv/«6¶(_Á>ËEÎ&Îò¥ÑÊ�‹éȶCáÍòí)ß§¥Ë˜.<=Ž‚ðvÑûD¿¯ QμÕn‘ �2U¦í#š1®IÎ7ÿú{à/¢÷Gªù¢Ïy¯�ÿªÎç9(Ö«ßö;Ѹ¾IçÙ‹.!zjplßAÖ‰±ô/(`´\,}2y       R’g èømç6¾`vbßï¿õªpýM‰ÇØÙ¶ï/0gjbZÕ’7SõRå�±súÌ÷ÅG´rÓúëÐAû\F–T¸275©xÉsUXþ£'NÐ3ãGÐ?øBf²ó²K3Sžl9l€äÆ« $)cgLøyqÊÛ´'¡=ݽE–¬Ô«q«Ää·?�GË6®§ B!ê×¼=]zQ¦ÄsfçÜà@½!ÂÇ~ºôD ÷Åöá´çK½ð úèyk±E…ЭɹljöïV宼šŸ�¤ß^ž•žMþxv §Þ:‚ö­K`ŠÖNË?Ÿ¥ŒY/ÒRRg7oÛÝ¢ «ˆn¯EÔkŠÿñt€{w�:EtiV¢Ì—¥OεZß颋ˆ.¾”èµYVÌÏÍŽ-D}Z©‡¬~‹î¬Ÿü•}ÿ Ñó¨2£¾²èº’É—19R�)1ÞƒŒƒÔ»"§æFÅB´{«s,{}¦Zt[ 9Š}í:ßx2D"Ê[€Ç÷èÈsÖÊ/‰Þî¥Æÿ= -º¯­Óþ™¿‰æŒ!ZõUˆ~ZBö;û²+ˆnº�èñ×-Êq¥“Wöð®Å»]sVîüDy Xtσ¼¼\Î8ÛÓ'‰ž¾7Dÿü£Òª2àX§µs{XFö|8D{¶«ôbe‰yÕ¹®‡hÿ¢koˆ]˜ÞBøQrsЖõDý;*¾é%/äWX.^ _W¢šy-?ÓrM‚¾¦Ä3¦_sjìÞOôË þÿ!doeLÕkgÑÝ R£Ås¯ÎŽÔD�±1K,{lÇÛË”žƒâíOj”_0ÁûÙÄ»ïøX(È:1–zƒAËÅÒ'“ÇpÀpÀpÀpÀpÀpÀp %9pÖ€ŽÕ›7Rß™û€áÅÍ�±3ýÛE4c ñ&PÝr·Ûà…gI[ÿÙShퟛ%)l Àã©: ©d�B‰éØê£ÝȉÇî�Cw/MÍ*U¥L^è>MF ¤}GX…0ÊÎàɈvO%æ0w*-Ýð‹}<²ýӔ햖:§8�Z^9îÕkw±õ±ù;,ÛŠÄ+_j¤Í~‹hHgõ¡:÷OËVÇÒÎÙäO,ýIÉ<›ç¯§ûbÚñíúeâ*{ÿ\:N3ÈP+OˆþæíÃ]ùÿ¹Ø>”í‹Jø :PüþkCÍÎúˆ:¾æ¿m½çÃþŽÍDÍK‡BÖ†�µïû5Cð!ÇEMþÉ"e“£‰ýBôNoe]6�ç‡ I_EÉUaΧ Rb¼)x «‚€ó è›C´0A·dÆ‹²çRé~~£]'À;€x¨õG" ;¿ý�Eù¯W9ÑÏ^-B´øï’,�?[Nç<¬£î˯ÞwNª³àò¡g-zð ' {¿ò+ =ƒÉB•ïgï»á}¯^iãä©Û†è‰*ÏáDu¯Vçª4b`ç­ð²Ro¬Û›“Ÿƒ>â%u¿GœþxÕ Þ œgÑ5EÂϦåš=I‰g,üŠRöèËÙD/7÷æmÏIU¸7eÛ;WkØ6±À³yÛ-[1(Þ¾¦ôoR£<,:ò õfå¬ßîmIôä Øæ†ÔZƒ,‚–˜­á€á€á€á€á€á€áÀÙâ@š°t�õb¶ãM 'Ç£íû5<7Ð1~>ÞÕ�@IDATÑÇ4oùwvî¼ì® V!—1€ðý¯ëè“Õ?Øé3d Qí;'‚:Б'{ªT¬$í:¸ŸvîßKë·ÿIgÔ÷p®ó”>]¸Û:Po�›o—®&ÙÂbC·>1@G�s ©õáu¡Ý…èÛùаdm®¯cûÈñª'Hš¢ræ#zo]ìmŸMþ¹®”*³~Êjú¼K5˜ÎU cÃj¢v•Ð¥÷{•¯éÿꃎƒÝÛˆ]¯Úî2Ü¢êÍü·}¾•€ðBÄLüzš°ÂCÜëš¶obªŒHu"jÛ3¶çméB¢Ÿ—‡(ËeÕkïU³I;[H‰ñtœ­k”vÞè¢Þ!º"/ÑÔŸc«RÛä®óõGC4¼²šüd¯·U”0@x !2xo.ûÌ>¤[ªUojÙ–e³G…ègµä£Æ¬_Ò¦‡Ó÷勈ž©£æ«JõˆŠ”²Øz ÄnÿÈSTmDÝÇ[Té>9b!î»DwÛîw5úðsןN™ÎÃØb"A_@ PG¶ò¨ÿˆ“/È^,s`ƒ€gºÄ¢3§C´v)[À|­Ü|áœûZ�––k’”xÆp ©Io½"¸XÁjè hTƒ¦¬µl‹uôïþ°²hi¢á‹œç,¥®:Þ9(¥ú‘šõìÛEôÀujnÐçŒäÚL­5xPÀ"h¹ä®Óœ7000000Hi¤Ð� iywMªÆî©@›wï¤g'Œ²÷åG:H´gËŒC“ã’ŒÑ+µ¥\Y³IVñÑZ´v•}Ü®jºë¦Rö¾tÜ\¨(u®û`b™ßwí 7Ì¢­{÷Øiz$“pM5¬M'INvk€ŽdY”æRë#ÂëÂÄT¿ÆC,„y3å?½Ú”4È!(÷ëòèlòGúšÛóèÐÝ ¼ÇÉœ,˜ôKAÇ:Å@gÛíšßkL‰üÐÄü_YV¸…¨ÉÕÿZû}Þ@»–o³Û-Ö²,�9ù7ýˆe€‡ð}‚ ÞíVé°À5€`qa?èë¹¼®áwJ‘Òxÿð?ß—«‹ðz©µoŸLVñJW²¨Jc5ŽUÉðßS'ˆjçUï†ÖÝ8xZ•Ïù(–ëp4vYR÷IˆïñPI<”»‡èÕ÷U ¤oX$DGª±6éG+Iò—9VÆ—³”»·�ö8 ˆ'¸Ïl³ì;úUˆ¥Ò&®vÞ¡�ÞÍ‚ìeDeîdÞÿ¡î£¸óÂÔ¬Dˆç¨R]¢Oy| %\ùˆ›¹Þ-Côù å~냭Ünf½Uû±ÌAx–k³;CðªT%¶Fù éý{ý1¶¨§Úö©EÅÊ©ýx×$¨<ÁøÃ¼€yúŠúÏIÊkÉd G{T]ÅÑÅJRÕ¢÷™ïÈÐïàqè&?÷D/‹¹`ÍwüîX¢?7»™]sÕVî ÙY@»v Uê\™ƒôkˆ´×yˆIW’p)çE_ÍQï œÃuÃݛ̿2(Fôñ¤Á-^åzÊmÀ‹%©õx­ÿY‹—H$€/@RÌ®FÊ/鱬Áw°kåî‹>¡o(Awæ/hÇ…”ò‘¶A‹ å"õä¤Rè8Í_Ÿlü•&þ´œ¾Üò»¼Ñ %©E‘�ŽVlÉñÎg¼JdÞîIB|‹ÇÆ ¦ÝP«{jyƒt cÊbB¾gé@€:᳣݈×éà±£”�ÝOMìÔÍ>�Ð�L½¦�§5l²ówoø° ¶Øüs>“K ¥ƒ÷Q±eèèöC´…Á� ô­2ö*P‹¥"Ûy„&•B?­¥:»é3e JCjSáÃyŽ2‡6í§P:^ìŸq>ü®,—�N9ìùšê…©æ4–ºhtæäZòâBúiÔRåS;‡Ýâ�ÜJ·õª’DøíÊø0–�½ò¶BôÛ�ødá³ �¡u‚›¸‚ÐA§>g-ÒûÔÇ"âLê¯âèy ÅúæçIýC°Ò£Y(QॗÁG|ýV g+½Ð0Ä`zÎÈûÑ4ôýò'r+‘Ϥø´½3µØô ]”ƒ¿F5ZþÚW´´Ï”þâ ÔfgW팳;¾È@:ºã0•xì6º4oúæ¹��“ {ä«ú.K`<è|:D›´ä¨Ëq^Æ…_„z=&XT±Ž“tè®dœÚ¼÷¼¬„‚>'ha' È M$‚ë7¸b‰DÝùy� F�ÛÑÏXBžå”àµY¶:ìæÌkÉ•‡ï~øð‡€s $Ðü�Dº°UÏ3ä‹òzгíl¸Àhþ*]½û%nFЇu‹’ sÉŽÍD­o Ññ£N?ô={a¡M8§ç�eù"Çõ�ßùõx­ƒÒBv·‡ç§×äp¡y¼ãÝÝF,ã÷¢y)É·³ÆxY5÷ëõìÝÉ xÕíØÌ8Ïó¯1@„8vº Á¹ €Š_‚U÷AýçZT¦²½óO,ש2~c¾eƒtzà"mðÇ–`û!ìEòiÿJ[~ÞÞ³³„Y‹À½ÔÖ߸9~eÒçD�UôÊ ËÓN",5àrnÓ:²c‹ˆeƈ®!š>ŒÁ—ÇØúø5ÆÜî `öǯ œ°*i»ª§ÉÿÆ:¡-´ ŠtŸuþÂzE”âY“ =�ˆ_!–-Hºá¾w3S÷“¶¢mã�/õºô½ÅÍŠ×>Áß½‚ß_½^Ù‡û8¸pJ—ží]áÊ’Àø#wª>xé~ï‰Ô‹wÊ“5À!iØÂ²éÁÇÉŽ…ã_Zì{çΤzýwæž_ŸU|ø„€Nº”6^ž¨Öáz9Ä' ]@Tµ“Õ1~ñœù¿ó/sÒô½gÙŠ .øðnÇ;>VŠe ¾ž•õ*�ã‹dÊ“9 5¹±”ý�ýH°Z.R?Lºá€á€á€á€á€á€á@jq Å€ŽMö±/ó•4•ÝGía°A§Ç8¨xí|ù�Ž.÷5¦9ËÓúmRóÊÕÝ&�¡ Ó§§Á­·Á”×�Ž‘Ï¥/Ø:Ô·i*xe{_ÿé>u,ý²•%eLï<ú¬íâ* ãý₩©‹YÍôHõû¨kÆ Б9ÓÅôÂIr’m^Tfá­r]�ŽûÆB³Âüá÷-ãrøA3ÁQq^hÊÀ�î!GJcTGqÙùÌÿƒêœ[ aV׎Ђ.Åà>š” €+ãW8 ¤Íx“hÏ6u!0†@ t?³ÒBŽ·îáýQ�<~ø#uúݦ$Б‹Ç:Æñuå*›�²°EÒ±�‡iû7[èšj×Qµ =» Б–cOÂápßn«¡´úaùðË uY…Š+×Rr‘AÇÁfž*LPãuAÀ‚�C„­*šÄV¢¦9ÒâyN õÛêRn$ûù)ÌÓ0ÚË‘ÛbÁ¥/à'‘ÐÎŒDMnd cõ°³øqõÕ·uÈÖÖ†�Ö‘î¶!t@býˆ�rŽek ŠÇ+ù@…%Úµ=U;d[º î@÷qIç+Ì OTSuº5ôƒÎ%p) yð¡,OÃy q¸*ÖâVÿ¸ß½·6Ü-Ž\g�­.xBù\W)«¡äæKä�5ŠhX¥e k#h—ƒ>çëØËSèÞV,Ø{Ãá_<ã]ÕèüúMâ@Ò È€ôÁ¯AÐÊîT#d ÛñnêÉÀŒXsÀ¢)»l̪ьŠóûGÆ;@¸G\±ˆl¡»Û­“]0áçý‘ŠW˜OàöèÒ¬úÙèû±^'âht¼KõccWÚÑ^¯„åxÎ*=w?ƒûŸª#/€gäyÀþû¿«8:°º—­T`õxg}¢Ç:u"J¸ÜucÑ=üZØò‹z~‘Ö�Ëü¼4DtŸ~éÊ*î&ÓD.PBlœ„u ž¯ æv¦b�ƒ>›®@aTûÂÛÝÝ ¼X¤Ä½‚\‡ ]“ <¬YÀ¿3+K;X…bî‚V<Æ.è�޼–~Åi/%Ÿ1ÕBò¿2>‚Ì—îÚq͸/ Œ�»xl¥$ÁZϨ壔;ûpqÑk³¦p^±3½ÑâQB€ñX€ŽÏ¹ÿ£>ùÀ.× |ezà¶Jö>~èHLˆ°SçæòÔôŽ*‰gÓ踹ke*ûœs°œX5˜¥SLõ>mE°º:uè$­½Œ®o^Š2]Á’s�N>ISoÎ`È!Êus>ºÿ3–%�Eš” »FÞG'ö£±úÛgEƒV"cò¼b[|Ôz¿)]}O!û<\ Í«¯¾`�Rq@Mº =-3Á:daËW\_-}Äv£µcû6*U”¥^>¨]Ç'éåWx–€†\à#=’Û()èÖúuÔ_ªÎBóè h B[PH4fqÜ¡¯E •3¬=ÆBÑRkßDz5M�³ÎÞOr°Yþƒ&'4:ý�þø©WÏ›’@êÍrÍeT•�+Jò'Бm‡hײ­Tð>þÊõ X€Ž´{ºÂbÌ+a\XAÈ mP/ : ��nÐÓC,ªõ?{7âO<Ï ÜÐàYA«R·NAÚI~^—-d×÷âÈ› Їƻ�¸ú’ãh[€•-h�°òá®üÿœ7/½ê·5 ñ#4�@î¨Þý!r›ƒŸÑœÑJX0ÕM”A`7GÐd×ç´ s Ü™` ÜZ�Ž Ã[Ô…¥}§;Âøð\þ�„(ég¾„`®Õ­Jpá4Æ+ÀÂ+K·h‚}¿ã]Õîüúx÷t¨¤â'ÁJ ®� ”ë|¯ ´�÷غPU_ˆÄ„×B4¶�êC¿Ù•½‹ßÃùýð\È¢<ýפc¹eLÀ­›—åƒsUI÷b½N¸ŒA,ÜÞÕkçÔ5þÕ½ÛWK¿qz�«”ÑåyD[ç&�ÒÊåbY@+�Îú–Á¾êª½¶=-Û:C/ƒý‰ýB‰Zêƒ?b+’òJx/‚ìqË-[  kˆÆO*·7Ú÷f0�A‘…UýO P.'Q'žXà€Ú¼lÙåìŸ?~æ ‘/„hÚPÕæ Ý�ÆÎìUoÆV¥Ã�qtMK™‡èÁ™�—r§²çRmôlÌ 3, €1�ã^ï3æU§WZ<ó¥»>�×P,Áµ§$é®Ä`™évKµòK'Ðýcýø9jï´Ï=y©©rK‰9ñ…wœ¹ãVÈ+©vS±%@çʤzÛ¯nY D€ÁxçöfëQŒå¢eØõÛ‡–=n¥FYWá]ò:[¼a^ª™;d+sÀj –àæ*(+鮽¤lñ^‚Û;� iŸˆðëü8¿8>üõgV8XEßþ¹9É·x£KÚV×$ĵ X-áòL²á€á€á€á€á€á€á@ªq бaß_l½±‚¦®[Mû�OìÜ…ì2ªZÁ"6¸Q‰µIÒa˜@n íG dÍ;çcèÉ{Pñk zÏOM¿ïÜn×öV‡Î”õâp�Qž>D=»uѳ%»_ù®*T«nýdó%—aÞ»ü!ô¸Ïõ;°–*» ÒiÖH¢¡¬I ê3Õ²5îå<|�C ¡+º;]0«ÀBCåðq…øªèÿÁ�oPíErí�üpu—·Uç~M ¯C¯/­öSè¸wnsÊW¹€¯Ë‰èH˱§k“>ü< šž¿�Ð`‡vv´ ©AÇÁÒ…Dñ@z àH Žç9÷JˆÆ½¢jFý9‰Ôž;}Õ×,p¨¥ú‹s~ü©‹€Ö +DHînÃ} ª% Ø!0iÁÓãCφßw~÷±¸Ú�õA76E"X+ Þ´jì ·ƒö;´àA]FXT½©SKJÍ%N�jïÀ¶ú*¨Úô+Àqץå´oýÌ—(ß¹ŽÌA# AîkôZ‰¾œÍà»Ûéñ ô\~Ç»^6È8€E4ÏA�#îŽá–s»Nïô ÑÄþDW^­Æ(νÝ3D“^'(0õg%|›ôzˆÓÉvñWo^ôpå®–¸±’Ÿë„•Võ+øÙàêzχj ec@ à…oûዜöa¡öHeÅ“ûÚª¸V¾ê9•ÐQñuÄQÀóï&¼Ç1O�À/ƒâš zÄõÀ=€ ÖDk�gƒ‡Ë9V– aŸqÌ‹›í]Òßÿ‘ÚU9£ÿú™ƒÄb5B ¥mð®¯>›¢õ+U[¸†1KÂç³ k»�„˜xÆ ðG|(�à2N´Þ%¾‰~ûñÕä4œƒÛZw¼2tÖ„½[¨9€²Ÿxa>/ÑÎþ'+N[÷£í]ÖBèAÅ«¯¥fÅKÓögØÉíŸzINÇ´5@GLl2™      Îø:~c�£BBðné‰\y#÷¹‘²^Ä_@ä:Ê,L=§�£µ¬}ÊÈþ0F?ò �9ó�'ÐñÜÄ·hÓ®v^äÓÝDÙ‰üóÆÓé»_×Ù‡½›´¢ërç‹ è€¥,F@p[÷UBtÀuU×úÍ$9É®«tð%--:ধæô&a}D<Œ·®èm§UèWƒnj_.ì<þæ€ä[?ßÈî¦r̃C„å €pÿjûW·DPB€Ž;Ö¢Z—µÏ ¨qû«ÕìHœRöM:ðë_TiPm*Ö’U§˜`åqšãx\š/‹?´ï:¿ÖŽYÆqCþ¶ÝbÝóNü`…ÝpÀшÇ.ÜW¸…hŒ@Ђ«4ÁÝ 4¾ ˜ñ2[GÊ6·«rºV´øÖ†V/ܸÛCÝòaŒàæÝÇk ÄI&|¤ác aÍŸ‹ì×_åN›ß”:²ËI~Ç(”OŠèðYeŠf!Ü¡½¿1ipì—š°Væ‡Êµüh»)žq0‘ãɼÓK¹µ°ï²�=}NP'ܸuk¤ž…R•ÔxEÜ?Á*4†… ¸Ô’îÞÂ'ëòJˆá%hrç×�{þ/D‹v›Cw)¢çóÚ×]í@c¼áã^¹Tš>ÇèÌ-ía°Šš·ˆ»£{ªˆw.�0šò;¶ @kˆŽñœH‹X  �ó,*YQíÇó{ì0»Êç¾Ô…§‘¬q i¿ý /‹!¤ûï(#t¼ð [š,�ZÔ6’U€Ä`AL”çG«g]Êë@™X\èùôô÷RGv¥Rÿýlô}¿×)~æu@^RîvÙ¨ Xuð_ïb˜ˆe…âëîfઠ.›Ü$O‹%ˆ¹²Å‡>ƺ¸Cùçßâ84�ìH°žÁ\üávv¡—IÕ® ø#µëî‡ûØï$šäîzôc¸º|z¨E×Þà¤ê÷ÞÏš®ß³Û´¿yŽÕßNÍÊuÀX�Û²UòÅúŒ!~ €?Tá^Çò5è|éÕžðÖ?ЧÁí ܺ�Gý½ˆuÖ{BñÜÝJ1e¢è¤»ÓÒŸÃsaÒûë>€?¨x_ åί,3àæP'lÅú;O“¯Ýj<Âêëªë¨À$ùôz°?üyeY+O¸L �ÌÝ&Žq™ßmÝÂk’Uôá†ut �¨GÂÖ³500000ø·qÀ7С>3Êq|�—*U¡² *D#/ ãÓ—Óè…,¡c*ÏÁÊŸ¨ý;yÒèxeæ$Zµù7;ïàV�Ñ•—%ý‚…U¬3@þ÷åËqEL@b ¨þ­wPÃÛï´÷ñ#@ÇY²Ò°6�Ó“ÛIK ® * N�´kyYOÖ:fkÍCNÿ4r)-ïÿßsT’<·mvu%' Ðq爺T´iI;mJéatà·½a ,3–ø�Øã °óÇò“çök¨î‚ÿÅ’5ÕòˆF<„yê¹Iž íI,¬^¬| #ÿ@6�‡`�t?í¢]Šóg Ü=ì+˜Ѻ ÂÇjДe�2¸»ò Ž wF0¿¹…IîúÒê8%�Žkë^1G´ë;×�X(ÀR¡øíá~ìåš`Ù Ýg¼œÃ6žq �½Ýñ?ôúõý Ï êÀ˜†Ï~¨€‹Ä'hð¨Ò¼ÖÛJÉ}húCã‚QXsˆk¹äÚoÛ áG´+G6íœôY�V‡WcÀÇ<‰œB­E’>ϺË/̘3t :—ÀÝÓÜ·ÙuР�­Õ®×éÞG Öl9Ý©þ�u᚟ùò�ÞléÐ/öö _ºrÒü~Ç»ÔÏ8У¾ÆOñ˜êá=Ž$Àr§�Õi­Z‡k(XèÂH ŒÉ}“.† øc¡ ×).`àr®ç$Ëvù0 ‡•#ޓ𙯠ÿƼ¢É ˃Hï­8€zGõ,è!\—0€¥\^¹ ~òa…ð·0/Y`¥A¶X�`ìWÏ¥„ú˜û`ƒ> ¨ -pò…’þ¾&r»’/ÚÖÏ´c³ÒÆG}pÝ%1ÁìB( ­ñ[kXtçý*¦ò ]“è±MÞüܲã…I�²ÕŸÃùluvÑÅrÆÙÆúŒ!æG�‡Ô=vJGß{”5õ‹ t¾T¥�_ôò²æurÆ·'–Fú»x¿`LÃzVD:ÅsOdŽ€¦¡ ÃëEº%‚>G¤õ¤_¿ß}Œ'Œ+,;†|ÌJDùíð �wÞm �&rL¥GBañn$†Æ9€O]Á@*Ë�u©”M‰í¾ãÇl÷Ò}âP¢Î  #�fc8`8`8`8`8`8ð¯ã€o ‹¦G?šM‹8æÆ?šjLAŽ™Ñ�­!\_œò°uƒ›¼€ŽÃ\W¿ÙSl!QÃÛ+Ûn«"ùÍ/×®¶«}¥Y[º6¯R]ôòÔwik°€Æ<Ò…2gÊÐ1ûûÅ4eñgv¹vUëÐ]7•²÷ñs>7¶½™*¾^3ñd'Ðñóø•´èQô\˜%#¬wƒ#cÖ‹ì¢[¿ÚDßg‰SëÏS†K.´÷è@|ÄéM)Ã@Ç:hàš^‘�ŽÕбoÝnšzëûÜ5Õ ÓÕU Ùû‘~.Í›…•áqbÑ–Í,ñAÙ²e§¬—eóQ"iVEhôäqB=ÉžìbÄMãØßø¸¾*uþ.GÓ>²¡Ñ! >„ ˆÐ Ú�p±€“¨ ÒMä#µ·`‚:³Æf͇íݰý#ØO@æ°JRù %�Žân¡Û_«î»Ç±i5ö0ÅB-\/@ ‚;º=þºEÔ¹)žq Brø´†oëhÏs"õ•Í$¶"™ûŽ l.épËѲ[t‹Éëw %¬ªÀë6= hŽ~�zý"8�›%$îç[Ïëµ/¡qÚžp›�`퀱 ý„@AÐá®ÆK�t./(c„จ “='Çþ`-vVç¾"X¤ÁG?ÜÔ¤Il ?ó%Ú-c}ݱD¼ú…'^.?ã]¯7žq ï©O¼% [ÝŠaø–íWþÐ>eÙ‡óVBhy☲äÉ�’ÄWq[& žhä:áê‡ÏÉS 0Õ]ˆÁU›Œ—v!L„P€á:µ´P ¿R'áö î¯à¶©Vî��•°¬t“+‘÷“\ë‚lı@< P¯!Ú³M¹ÛR@eÝRϘ¸¹‰Ô®ª1ò¯ß9Hç¡Äˆ\{ø™ kÔ .Ò°¿`wx ¤�¤sܨMû%)ÿ‘'Ög .7¿_¨Þm( Umþ\û�/½ÚÐcR<7Ê¢ª�½rÅŸ&÷ó+@"Ì�ºÛJ‰É£·ôž@©Á@âª@ä¦ÉB4æeÃîCv×…wÛ¹0¹ûë1®wâø=Xc€°fÆÚÙ‹ üñ*FÔ«3U±ŒÔß³o½bE²ç]/°ïgÌ øvhò4?u÷nÏ«ñ¤�æüÙ¦ 4�¿™rÜJ åÍœ•Ú>h C¸b¶††††††ÿ6ø:„Ûx¡4ù§•4™ƒŸíàØ Bðê¼ÂUèA=j^W”2%8“õ:¤Œ¾�tLúêSš»ì;+byÜZ¸˜^ÌÞï8zýuè ¥cµšIO¾HøDŠ%9À–åyÌÔí�‡è¦kîÿÐ!®¥²^›Ý6~QŽp5¼¥½>gk�¯mþ¤Ðqú(Ïý ÛV³…ÇÞ@ ŽX(¥BÇÒ&ò@›š¢ ]“ÖNHøAPY˜Æë¾Óq*1à+c9ðií&0E S�E@V�Þ^$áµîúC\îº%v„°ˆyp.Òo3×ÐÂ3í®ýï÷g(ÓåácoI·…´jÈ·”þâ ÔfgWÏK_d »Z;L%»�Ê÷ai¬OŠèH«±§²ô ._ÄD‚Ë´Hq‚ŽƒX@�Õú¸õûœèõ`ÿøQ²ýäÀÂôeŒAóTa Øg²ë®X­-ÜuF:–€¬Vxi!{•…�¿m�DÒœ÷*§§‰Ë÷¼¡çÑ÷ÅW;„mº‰f;„bÐNw …õ{âg.ÑÝ¥@ „û©û…‡ÜäÁ¢![ðä•‘ç{tís=Mö_i¢…ï©@DZΗ(+ZÆ^` Ô�ÜÖïx—úââï^êÂ6’[ ï?Q€À¸‘ø·ü ~þë2�~� þ WJz`ìHn”dÌëA†õ>xí½N~Ã5\äˆÕ¬³Ê=Ä5úà«‚J¸­° Ë <³Ð¤þù/îRïéH±rž­§æðAÚñÌë‚l¸}ƒF½é Ò#¯X„¸ ÝÍM¤vUÎÈ¿r?b�ƒt«—h}öj1Èšõè —×z÷ÁÈárJë}úŒéuøÙ÷;_zÕ­?£H $ýôð*fnú ÷8×Ïaï9ŒOФŸØ‚1»oäÀïXDЂÞX€Á Ô¾+ùÁĶ¢í¤•°YwKåe=�à¬Ðª¹ýû#çuÿér�xTîeKuuw%ð‡ÿkž�" Œ[Þ¢Í?“Hßtº u ®HBwþ´8Þ¼àWZðà»éÆ”þ²Â,yÒ蓇§ÓÆYëRè@ýhÔàëvty‰+µ¨Ý´{º["ñ ­wnê`Öz~1\ЩŸÇ~Ðq°òKöï~¯X‘À4½­xž½÷þ»}C4þU•ªÇ±qçƒUüq΃P¨¸E÷4tç ?Þ°š=ìw@Šî'<—÷‘¸±¹ìŠ€„…Ì~ –$ W¬£âF$W^´Ý¡Á ߇J)·Eº†¹^GйDÜè@˜>{‹c¡&uëÁÏõ Ór^¶ë–²¶ð=Î=AºhàK}+óšŸùåaq‡ø‘Nz‘öýŽw©'è8˜ò»mê®xƒû°k:/aZŒbÐÊ-pŸØ�ãåôVîžàmbh_SD)FšaŽä¾ yš•PÔH  ò¸)èuŽî¢)ÉŽ]ÓgªEOÖT×ÉáÍgC„ â 9<öÜ1væŒæ±ÿ´ªC{¼ÍqÚžTé}¦±‹Îêªù]ò]o¨Î#h0‚ƒD��þBÖ¤ßèIYluPù�ù•¨ ÎBóà ¯vU®È¿Aæ çîžÁ 襃�‘[Rg‚¬IPï<#º;½-ý]õÒ»U¾_?«öƒ>cIkŠ-Åï|éUësõ™× ÐË€dÉ‘ßyõéà€ãݪñŒöà& 1!Üôž@`Á=è±þÕSŸK‰Õëîôô¹8­ç tP·æÂqr@;\˜=ÎñOvlV÷°+Ç6øŠøX^ï]vÛNb9a­^›-3`-§�m‰“§[‚¡OB §*e'OYkQ®«äLÊmOüý7�[ýM]·šÖíÙVq~¶forc)jtCIÊyÉ¥‰ç‚Z.±a³c8`8`8`8`8`8`8p–87С÷sç‘Ãô[xLæ˜<�x ‹¬ƒ# ãG™m7ba{/Ø^¸»¦r´¿'ý)ÍYª,>®\�j–¹Õn?б›û8tþûôëvþ¢`z°Â]tÿ-á‚þ;Ð�€ã£¯ìkÇáMtϘð¯Óý¿ì±ÝL!¶(¥€ŽÏÚÌ¢_§þÈB��@:[Q–zÐ?ÿC¤gÉÀ¨íÛþ´·Y=“à¶*³‡+5ÏÌuÁ >Þñ¡#„ îMCôÍ<%t€Ûhe‚N°¹:>Ž ÑŒÐ6Ö ‚Y dØ}™¬§ÎÂ]b€Ä¯¹:£~uAO4W Ðz…«�H±ô:ÓjϪ4ãŽ·ìæ«Œ­¯Ó'tæäÁ4áú7ì õ©iѱgåvšQ‰¥gLp}XnJ«±'š»pñ YÜš‹t®…Ʋv¢º/’;½½ Ï‰^‡×¾înÁÖ‹”òÊÅ®ßF²ó.ê¹Ah\Có:!ø9¬ ¼ƒ­ŽVç6¬âgšP‡¾N\;!Ƹ �@±IZ¾íÑè}EµlÁª¥kš‚çvNXiÙÚíÎ%¢Í‹ ­ÓÖ‡©Gò{€cÿ@0‚‹ h{Ñl~´áòCB|qƒ"i² :_¢¼XÔAÛzô7I­¤ ÌÅ‘4«ýŽwÔtèy¢àÁ½ Xx�ÓÛ ZÖü©Æ Ü+ÁO<½®cTšw#i�£ßˆï„ñç|Œs^ô:Q—þ\–®¬,µÂ x¯—€~Ú¶Nê¦ÆŒ;N ´Û;°¶5,.άê�÷­Ä8@›ÓyÌ¿ЊE $>¬ÊÁbë-#°(‰Û³ëJ*€I¥&ýP JleÅnôF§Á§?ÈÝ®J�þdBœ‘{ÂãŒDoE��ç{ýÑͯêó-Ç!»Ñic± ‡åÎ8¶^u¿«�;È3æ´âÏï|éÕ‚X‹-à íÉÏѨÃϼ'ml‡ë5Óa÷�Ò×i­^$Ÿ¾ zOvlvb¼`݉õ§æHŒÉï>V)º@ZÎAÒ¿zBtp¯±eJ'¶¬ìéôß9Cv¾N5”²€L­7ßÍïË×B4¶�Êév ¦Ç4ƒµh¸½‚u H·ëÀÞ9oRõé¿â"iãù-sŽž'Þ}wÜÌ éÒQÍBEmë� W ÕëðV‚AË…·nŽ       RŸ) tHw±äüjËï4á§ôño¿P}ŽÛ/Ð�º0�ÃAEò^EMï¨BÙ/ÍLKÖ¯£ÉìÚÊâ¿ô¼ÈÙî©DD:òç¼’j1²ëÀ~Úy`ýðÛz8A}O†´zœ2fÈ€ÃD #Ó…©y媉éIwBT±XqÂ"¤#oRñ;^HÒ2*¥@®šÀ¾Ø9®ò@¨·‘4 EÀ úFB0« 7±“©¼sêÐIz·ÐëÀ ÷¸ö¬f„˜,'÷§O[½O|ú›ÝƒÔ:àJmb±7èľãtIžÌT¦ó”¿V„C»ffIr‘¸ZA°`ø·wSs껕Y¤ :Ýy‚Ž](aB�Öê£ß]¿}N0–*¢»p--Û¿;ê„‹¸óÆãýð"Ý…†´©oÅ ”¤á¹©ÒHŽ’nájrPG~nëóó+A3âx¶�hF€±VA¿®RÖ$(?àåª$_T×Jh`1Ð @ª�Kt÷Aм‡æ?—à´aaM&„ Ï\{Fý–P´{t¾DÝß ÑŒáª»Ÿ.ɢ޻‚î㕯ô×fyóÊïxGíAÆ\s½ÚNÍሩ�8â.Mb” n÷˜�ØzÀåælѳu£ºÞ�¢”Š7+!·u¡:«~¤ƒÅÆ>¬žAˆ¯R&ÈuJY=ž„¤yi‘Ë9X8´«¨žKXµ´înQ©JD?²u"€LXH‚žlQíj¿°ÌÂ3à „ïF.þ0D+¾TÏ ®ïÄáàñ,$ócr *‹ .)/nnÚDsá†üÅÊQXŸ sÜï4,ªøSëli1Ä{I9¬t Ã+¯žV»ìmôP¥h Šž;ò~P ã×÷~¤ÏÚÎJ¬1:ÒgJOG¶²Ó²ËI J) uýÈ8_{4WV~ÐÆ˜Öï¬Ú×±c³rKÍyéôÕ½ZÝÑ@† ÂJ\ÛÀyº•„îpëâEºõ•~m-ØÉïæŸP�딲Øê1Cp pp2ƒƒÑž7·{”³òäá ¬¢`%ïgÉ«oÁg!¶ áµxiåŽÑNtýh…;FÌÕnr¯¡Üçc=>É“ÐÚÝ»¨tî¼±!7`á>–ŠÜéîcÉg¶†††††††çRè� ^óÇ&ê5}¼}ø|ý¦T2!9¶…kªÿ }•?ÞYÃöÖ;¨áíw†�?Ì É�y3iíŸ›é ¾JCsvYåRŽüm†¿Î¶ÎÇB6¶ÞÈÍÚ/y²å°�»ËH�Ø>6f0ÁÅU,4ªýÓ¶eòþp}»~m,Åè¾[*Pã wÇ”7Z&±Ì¸©]9ªÐ_ûšO(4*{/‚+¨ò}«R‰Go «êÇß‚ŽŸ>Â’–àqóó• –‹�k1Ø@k¹ƒX¹û­zT¸Qq;í½›ß¤ýëÿ¢ÊCï¥ëæ/&¸&‚uH…~Õé¦ö·Øiò³wÍ.‚ {×rVSt}aea!÷µ÷^OeºÜAfÑ$/Rø,lu!,4—~ÂàkwA“¡ ´aÞ�}�àG‚øå…^7‰Ë hÓÊÇ“äÁІvïÛ=C‰ÂPœƒ+™²ÈV‡UJ8ôà—Òmc�„䤄ÐGƒ Õ{hc©(HK•V*ÿ ý%˜8�ZHEGŸÄ’ßÅ·‰´ß“x¸zažóÌõ &I¤½ìpö}Øo‚ƒ3��Ý?–œ n6jW?ÀmçH#±ˆùÙIm|à†;Tz¢½Û$êàà–HZ‡”`(Ò‰¶”–·%%Å&Ž­SÔx5¸…¯Ý½ëÞ�yÚ ®{8Ò�` ÊᨎoÇ$L.›äfX¸Ÿ%/nw÷³„Ó«" (Š€" ( �¬1:2]ð¬Çç¯ËhÓ–-ttÙÃè iŒL¿sWO†Éa“có²�)Ž’G—ÊZ‘¡>hÝì•´qÑzÚç�ý¨D…FYË@‚Ù›NYï46¨p² Æ&á�N[Ou‚$ÒrÆ©}lâ@Ä'€qJyW¥� ×ÑêY+œï^ºJYGuÔ®ZÖ]­\™h'��Z4‡h3å°q�M–C+ÆK:d 7Ù¸8¤¼aVØ'Ø“½ÃVýf#Œ_ Ó— ¯›ÇüúÍ|"õÄjD`t‚Ê"0ÞÐgBâ )Ô%7#:�ræz¤Üù]N0{Qÿþã}D¨˜É„ª— åÏ˰aû ¼Ì“Ÿ´Áì^¾ˆ%îx^‚ÕªæMí'/Æ �Î7�*´¿~5ßÒ ~ÇBžð"–a6^áEJs®(Š€" (…�BËè(¬€k¾ o>±áds¢“c…«4š[E o(LíLÊ»ê˜# m»Ec¯~Q›)°I�Ó¶ÅŠû�©áv%v—z°»”3Ûu3�>(ÛyÕ÷)ŠÀ®…@X†EØx»zZE@PE@( (££0|%Íc¾! bì'ŸÅªU>壌JŠ€"� �ÂÔNpJ|é_¦•N'‚ê¿4÷GVó³Ý覇J¥Ý�Ý¥ì.åÌv-N§Êv^õ}Š€"°k!–a6Þ®…ž–FPE@P Êè( _Ió˜o4ª¸AJ2#¶ù–9}±"P@ÐvR@>„fCPE@P�„eX„�— ê¬(Š€" (Š@ž! ŒŽ<ƒV.ì¬]AtU%£â¦ýºøÚÂ^"Í¿"�y´�dSMQPE@P�L# ‹°éÞqïa£j’;�dÏaaã%Ë ü²ÆèømÉzùivÎ9Tç”S¢Ï¸Y¸j=þ¯Êr¨QµjÔ¸zuyt®;þý—zŒCSæÎ¥åë×;n{+FÇ—+G-ëÔ¡*GðnžE·n¥[^{�¢¦Hö؃Jï¿?ÁÌ‘ ¥KSÕ£�ÎÇŠN­ûö¥åëÖÙNž÷e<�^½õÖ¨ßK£GӤߧ=ø}oµjE%öÑ‘> N¹©}EŠý´£€djÈÆ�W‰žºË ¤ÛÝ •S„_GüJC¯bÎ�‹j¶©I—t¿ÄåšùÇ0Ø^}ѯӉ.lHÔ#ÖÊÜŠ¥fc耉8ÈÔ­ÿ­Zn—¯ÈÎþãÖ�‹ç=ÔÔäþ†6D—^ã¿$='šü9Ѿ¼÷æ§y‹×WŸµªoò6좫¦ÎgÐz�‰º—:W±«þ&:ï0óÜá Ý|�!“ú.LÝ»†§g¿L%:¿/¨?Lý ‘� m,UŠWžf˜Q_IÔ}DªÐ]˜�ø¯;x^¹3:ªœiæb`¡dcQ�t KØL·“÷ß"z<¶-…s}ÌùÃÐîöMÂ`¤qü!P껿’d7ÔEˆþ^”û�Xƒa-–ŠÂì#¥JÓö˰Ï~·×}ÖSÿøƒxç�hªuuk?êõŸ0�ðº¾vm‡y!ÏÿlßN�B3æÍ§¸+O6iB5Ž‹Y³i]ù qáì0".?ã jU·.í[ܵbã€WuëF«6l°£xÞ|À4üÞ{£~`Ø|ýÛoÎóˆûî£Ò%JDýô¦`  ŒŽ¼ùy݉æM®ý¥º~Ñzú볿¢�ÇÝ?޶¬ÙB•Ñ�ÍœjÜõàÚº#Ñ�¢YtsoîàÄZ3Þ¸oßÝT».L^KTâ@ÿq kH,,°ÀÀ©©q\U°1æ‡sØËŽ7‹Ñ›ï'º¿«ŸXáÃ@ò‹H´MÛ”{ÃÒ+å õ SuÏ+‰ÜlæÍ{¼¸¯R-QHu·S÷°i‚¾eÛVÓ¯ QJ� m,ÕÛðmð�ð­ü:HUîl@4ñãØ[?âͳ£Oˆ=ã= ™©1ovÌíëÜ{–»kk˜M8yý;K•qÿ禮Üö1æÚï‹Ü’Z\GôÉ»¦Ïýž§ë¶€7òÔ…§æƒzÄÒpßAšm´•gø£ÿºÿZ–NémžQ¦~&*]ÖÛßív\p§SП C9Á´ºé|nÿ¦Y­:Då+d/þQÕÚy‡²|^ëdNbƒ‰ˆ±cta¥ }P:åôƒm:é'‹‹¹æT{íM4u£9@—,|^û5:™%¹Éý–J|¾täÌÜî™p£ ‡gþ2[qI¢O~…ûÒ rxqž©Æ"�(…Ú)/Ú $: q+ôÀõf\ƒô-¥Ýí›ÅGÃûG 0Ôwÿ¥ÉnH„ÀüûGï˜û‰Ëˆ>ÔÜ'û·÷eü¬ ’¥åå–a6žWl·|ctìÉ 0bé ¡f={Ò"–êr3:^;–†}÷�ã uU7ž{.•bÂÄ_¥QS§:î{3³ãýˆ2-lF¤8.9õTZºv--^³†~Y¸�þű&øõcÉ‹¢EŠ8Ïò'Œ¤{3^Ñ,±aKŸ(£#RÇ]yó-òºÍ›\‡Kõå£_¦µóÖXFÇo3˜Y[Õ”­ç(ÿ‹  œÀ ÐSo5¾ÙÜûù—…'Ô¦|¶ÀOŒÂfÑŸDõ+›�Å[$º—O¶ù¥Çnáh?³ñ2ö/ïÍA¿iù ÷õ³ÑX²QÓ»SÇZ2Q÷Rç*>„0o ¥‡Íl:(¥F LÝÛ¶…O†23*}ê\™ÿ'XS—²à‡ÚÆR•Ò6�º½>šèÜËÌ}¢ÿTõà‚òD�8r�)ïñæÉ“­Äר4ûÂãäúž;\y�DGÍ‹bqåîæ �D…<ßûÑ­É“¹ÖgÉü9D§ŸÍ*¾‰ù­_CÔöªX|¨‚ú®Skš>úû ¦_Ô�¨ë�X<¨µº‹Ý&�5nÀ­ÑMFªqpO–žbÜokOÔîÙX¼DwéŒ ‰Ò,ˆî…¥œ÷]CµŠ8Œ0~¾·P^àëÔ½/?$:át¢áÓó"'ÙK3h6g~± ›~ªxØàÇA ®À!‹ü$H)U?€Û`’Am-6©AèÇžæyf¦iõrN›™+8…vÕº£éÏ!¡üÂæmGÃíŽ7ßýPª±ÈO…)L^·[ÚùÉ>Dÿ»58:»Û7 Ž�Æð‹@a¨ï~Ë’Ÿá:Ýa¤™¡>Øk®í•·¼Þ£ ˰Ï«Œqn¬Ò)+ôýܹ‘ó:tˆû½?eJôÝs—-‹óCØ^ãÇGýYeU¤áóÏ;aê?ûldÉš5Q?Ü<;rd4þè~ˆú±�¨;KƒDÝq3{É’Hóž=£þv~$àÿ^|ÑñoòÒKâäëúØ»ïFÓe‰_q4Pv8ûàHäDÞ¦9¹hvß»«¿mpOƒ+°}ã©]»´Ý�êé@"cÚŒÉJAƒb;¢oì[,[.‹_ŒŠ¥ñÛŒ`iüït÷®†ÁâÖÐ77å=sÿHdÍJÿ¥X0×ôCh3ÝÚû�—Í�AëA&ê^Ðòµ¹Òàßèä 1wßð…¡îí._'hK…Ë»¯Çúî•Ë’‡NUV/�¥uVisßï…Xš›7F"ç”5ýØ)ÅŒÿ� bþöݵ5ŒÓ³#‘ê%Íýýí±ûô�øÝÓ8懻M<½>‰�lÁï©»âýîn‹ÛêòHdãºx<Íû=™46Þ½O+^ýH„—QÚ¾-9¿œñ¿¸bÔ9éMØq!i¢г0”ßã3êË3÷dD¿ø\x„Éßc·d7yñ¶ }P:ï÷‹m:ïH}êTÇÛ“…ÊŽßÆõ‘ÈÀî‘ÈŒo#‘­[Lÿ†¼á÷Î+y“‡Nw˜ôÑ÷ÛýéÿE"õ+?ôÓÿlJýþTcQê _ˆ¼n'_~h¾êÀì™ÁñÙ¿Ip”4†_ z}÷[ŽüwUUÓ®Ýóâdù º�”,-/¿Ž;Fð Jaã¥zOžJt,`}§O§R,íp6KLˆêªÓ*V¤çϧSŽ<’^¹Ù~ó³Ïhð7ß�ø�cKt|Åj žÈ±ßQ—¥2iÜ8ŽaóçßÓ­oðq2&Øéè™c/Öè¨]¹2=uíµqñæ¯XA7± P)–.Ò¦ A–�HtÀÇ{mÛŠsÊk~HtÌ6ËQ£Sö”²T®j9úsüŸ4Â|ZóÇ:äÄCè¤kN¢CO=Ô3ï;·î¤y_Ì£…ß,¤ ‹7Жµ[¨Ô±¥¨L•2tÔGÑAG”+Þ¬¡ü>wÄYGÐÜÑsiÉ÷Kè°ª‡Ñ·ŸAÿnû—~èýÁx3ÞyÖýgQñýs«C¢K¦.qÞ»|ærÚ¾y»¾âù©Bm>ž‡D¢ƵqRå¤3�®æ¾&:æ¢kï4„Žhp¨kð‰Ä+šå6r 13ˆËOûÊèÖÃé臆Á:œ°Á‰7mÞÈê×s.%*¾«�àS™Ð}úß¿&/×ñû“z›÷»9e„wǧmp2ñ”|Šm„Q91f/]²8 ÖÈ/ô»âÔîQ|R½>«ˆÀ©œd”×Üby÷ïüîÔ¿2'•¡òÕù¨©‹f¾=“þÛù^óp:ä„C\¾D«ç¬¦y_ÎsìèT½µ*ý»ã_ZðÕúƒ�­ùs tÔATåº*tx f•' ‚.Ñ[)øÐYþ ×ß©‰¾φ¬øÛ¢Î¡®¢>Ø„º É!œjõ�öˆW£å¶(ú�ßš´%îÓ,)°sŸ.;ŸmUÄw½Ž.É2å$$Nߎfž‘& …Nǧg'Aêê$`˜3™�� k‰>dN÷.[hòŠ<âïy—³!ÙbïsßAÅÉÈþ1Wª b_cÁ\¢Ü'@FËGˆÚ<K+ÕÝ#͉F 4ýƸy¦oH'L»†„Ú²› ›¾Ü‘nW#¶ µ0uñP7Q�ö,bN�¹¿·Ô1|K·ÑغGñx2ŸÕç0žwu2jvfpZH§c¯áÓ/8m˜W„S¥xtS/ä{Ôo¨ÅAÝ/›»‹r²´¯Mw,r—=HÝÞÛœµÓ€ HtxT¸¡ýW;ÏŒ^a€ì5€¼êbP|LJDhÿß|jt“C ù8¬ÛW8Çä×Vo$q2q Ò¥Ó×Úy…Ê�ÉŒ! +ÃŽRõ ¸ŒÆ–ÄÆ ¥ªZr_¼ç]ž6Û*0^íH•;h{èƒÑŸBU"NöÚ„or;Ïg@¯}dÔJ¡ï¼»3Ky}Œyõ®&Z·ÚH¤`Þ‡òÉýI“–D‡mÊ,ÿAêû¬iD³¸�‚ZEÔ“T4s²Q�üþw›÷œ­r"¯3&'Œg�Þƒ Ì ÊWô. T=ˆ$ÒÊe¦ž"$ŒwžvV,0=ëâØ³};-b¸s`wøQF'¶~ñÁ:êë@°R÷ªàó~Ø„Ô$�пbÎ^õl3¹ÇSó&3Þ]£H\\Óéƒò[Œï÷5ãÖ?^k-»'0ïÁšÒ¶í2¨[AÝÃx56Ï�k²´s#3§¸�û Œ<_Íí3‚º!´9ÌUÜ�8%H%a¼Áü*×Qß.DÝÚ_H¼Aò-“„ùhÓMŸ�9Ö¯ÇR£3«H}"ö<„Ëå^sÄ|Í]ª±¡òsnáÎo�ç ídé3‡ÁÚ}ÜÌx€qý6úµ ›ºzu‹äªZEµì`MÝ`æ×Aòí盤;7 ³O‚2 ÿ€D§ÌEý¬sí²cÌÇø ‰¬6Õâ1à‚Æ&ÆŒ{˜Ã{õ� Ðob<·=”û�“«›µ‰Wxû½~ï3Õd#¯î2Öúî.‡×3ê ¤°Ñ¦°—âEØkÃx ÂXU§™j×�ªó:cVÛgˆZŒå�_3"{Câ;ô¥èŸ±Ñ F—› óÙ�Ì(Ž)L_›ÎXäÎW�º‡�Ô:GºSàEa6>:>·;\`›³­ž0Œ'¯P¢òíæÓ?ãÕÈ„Áïè|'oÄ[›-î÷b«ÿ—™gzíƒÒmc(×À— ³À]F¨só÷ù;p¿ùÚÇî±g?õ ÷³�c6m¦ Â�°HÄ\Ôº£±[€{ˆèCTôÎ+ܶژû÷¹¬ÇŸjîå=x‚NzêðC`8?ÒÜ„ôÊ|¾‘è÷M˜I¼ˆC$ZÔ%ú–Û6#¡þ° ÷e`ÙÆôøù1— õ›žØüt÷¡±ãïDß? æù„e£œ›xƒî©Ö1�Ôv>` ›Ìî>a.<‚hùb;´÷ýU·uêï·d>Ï“›rý6ÞÝ~‚z)0Ò“‘_|¾ÇõLJAçýˆ…yû£Üö±.qÚk�‘¹wa×(’~Ø>(Øb3¨*¯[@èÑ&£q<nÇÉ 7?%:;ç[ �»éüxûC&(Ö|ØHaN‚v• åz •$X×Mçõ˜—�lÀÂÎ(ÕÁQÕ† Û)ë�zT33ÿZ˜µæåÿnw eÔEÌ×0?zñ=+šÈS±±òkn‘;Çþ]‚¶Ì'žkkÒ‡VÔe¾cƒf|8j€yÆ?ö¾â:zÀA17û‡pXÁ­ÞÑ“èÞï7IgnšNtCm3‡¨q!3u�ö·Î•²ÂŽÍ­ur÷—hçóúó ´qؘt¯;qð}Ô¸º qßø$w_ëçç9ýA¶òj—§°Öw» Éîíö‰o�É6õ}žÌì?¼ÌóYôév¼tÚ5˜á××2éc †µ˜ò»Gwõ°a4œMCáŠÙqÇQ ¶g�+ž“QX†EØxÉò¿Œ1:þ`›}˜¹ÑÿÇi93lj϶-®dé ‘èxæºëhð¤IŽ�ŒÖõê9­úô¡½Š¥A÷Üã0ßft˜J”+á0@~zû'çŠÈ`’T¹¦Š$ï0GFWzœ|‡DÆŠY+¢þ'\y­_°ž–þ°Ôy߃+¤}JåÌ89ÔàƒiÎÇsœð�ú8þŠãiÏ¢{: H‡€j·¯Muž5­w=KÝ~û펻߿ PÓ¦¼Jñ 1ú‰IäÌírœÀ‘®Çƒ'›1Ø@À¦ì’ùŽ“#Qqå-<~Γ`žä•¯h6:�/ÑžØÁ¨%& gó"z¢1)Á HL@4:;Ø0° Û�$ÒÂâ�å¦õüþ͉C¸÷ø€r qg›¡˜${Óq�xa×(ˆ¶Ê&¶§pŸ€ïï^+!ÿnFãÑ<† .a® ¦QóóM{Æz¶„Žåùê$f„Ð÷ B_”a.Ñü<“òp̉¹SÃ!8†Ã)ö1Ü&°6MD—òší}7™&ØðÃÉfHKâ m íã8$:qÊôÖç¬ùàBsïõïg,B<郳=·ðʳ·0í䑿FÒécN ‰³úÇÞ†5YþÁ6è™þÜ_q/Â! º±-3ny�„ü|“tç¦aû ôû5xí$IÑ^ý¬sQ~HJ€É�÷Ø×@ÿàÁ†‘‰N¡êççžC@js̳°æÄZu�=Íá à Â!R&M—Òí²™W)ka®ïR†TWHR`Ý�ùÖ{8¸ƒ55ëmÌ‹A˜S€"6#3Õ®å�êüw\ç0§ñC~÷‘î3†z~ÿ}\’�쀄ǭU«Ò‘%¹áyPX†EØxYˆwJ¥Û*™ÿÖ�;#C~þ9rထ=XY¿Ã^x!òàøñ‘ßVEå¶�ŽI¿ÿ1y²cÃâŽÞ½#=ÆŒqîY5UdÓÖ­QÛ¶�އ Šº/\µÊ3[íí09ïMf£Cù˜mzˆý�þ&ˆ³sâŸèúú¸qqñòÃFÇ+Ç½âØ €Í€ �âË1î�qQ¿…߯+ëߺnkä«g¾ŠlZž[yæÖõ[#ÝŽèæÄí]³w\_>æeÇ}dó‘Žûæ•›£ïÚd¨ãƪ¨"‹ttÜçŽaEô94ç“9Ѱ¶ü0ÂjƒÄ+Âê†"C¯êø?YüÉK©8~‹/Žpí ôk×®]4]÷ t—B_èÖÜ>ñÏãGÄt[þðµñ{ýɘ›è#ð’q;ï°øøÓ¿‰D�t»©÷³±t&|ï{ß51¿Û/5º¨%„�§¾Ï‹«¹B×µèc½ÿºxýÒ°™!~ЗêÖYýÐ 1ÿþ/Ƨ �¯×ÖÍŠß·Óà lwîpûfîYêûèÖ£=í¸§©w“ºNòôŸöæ´hD›{ÿØÈ¿Ûcõ�¥A"? ú)²iEîv! ú±ÑqÛm·ª³¨ãÌÔ“WÄ]ƒ`ûǬØ÷‚Þ܉.˜`Çß³ê¾q¯ˆ{Xõw,�aoÆy¥|�½ÐgC]êWãSãëûÌÉ1¿¶WåNíºšÆ¿I5£“Ø:içüìv�†¾ny?®Ðcé—ÐÎúä7¬õ+ùó×H¤Êž&î«“ÇK§]»S–¾º“ýPÐz¶îA¾èO÷²U;ò�Þ{#>çèůZ‰Hä×é1ÿm[c¶jsÏÄÝ‹ÆÞÛîêÜýü–Í‘H÷G"‘u«ãߦ¯µûý0c‘�ƒ uÏŽ‡û¿~‹•ù“wݾ±ç'ï4áV‰¹Ùw7žkü/8<÷8Ic1tJ» c’Ø—¸úL·ozÏéöAAÛØï?ƾÊ‚z&ôý„˜ÚÄø÷Å'÷Õo=¸äX“æýך4`ã sˆ_¦±]Ž"Æ>ìtthiÂÕ>$÷»£‹+ÆæÐi�<6:%wø–—¿ Ê?±íñ±°ˆ‡øö÷|å1ã÷QcaSÝa¾"ýÞiÛæ°ã °ïô‰(è¸;Zȳü0â;Û4ov$òÙHÛ% Zß1·Ã;®8)>¯§‡o4a�G¢ù\6Ê)õ ã%ôÍÛô›{ÌžK<åw¢HDÝJEŸ�¥‹¾×MX;$k[>>C¤,Aæý ÿˆDNßÇĽ墸¹=æ�2¿B›uÏQ®QÒ郲‰-æÀtì0ù"Þ×EÆìý@‡¼ôŸ#>°=D\Mÿ¬å{yõa±ÐþïV¯ˆ¥9nxîx“?�ù§²¹{È7òˆz˜i²ç¯3FlÆÁ—¿ü’�ÑѲW¯hØ5׋ž><†%;œ ~ß0ãEòÑåƒâ’.ŒŒŽ®e»FØæF\9VÍYÝÔýùÝ;~q1y"ß~¼·óÞ�ã|„Ñao$w)ÝÅ ;±óÄhØn £äç!±÷ö©ÕÇ ×ýèî‘�ÛâóŠˆËf,‹æ÷›ç¿qÒÂæoË–-ý†s�H—^~ÔtdXœ aã �RÕ{=mÜ`€Ù/Ù>Ýt^x6܆�ׯ1~ð·'ºÈ 6•à~åi‘ÈŽíñ9Á ?ü0ÈÛ´x^Ì 2&‘nZ2?· ÜË$££oíœÊ]èÏ~ï¼óN :‹:¾•¾éÒGïľWϹS“�ýZ¥rû‰ËWŸÄÒÀ†VÂ�z†¶¯gì‰ü½8>ê5ÚÒƒñ-›0ÆÊäßmŒÖ—ê¾ùy±²â=3&¥Šaü±©/“0@ƒ�0°ùîf:Úé¤Ó®ítä“s”ÑïÂ7h=[÷`ùÂoÌ{’ÛØÕ·½0AÙLB\¯Í§»ÆÒFÿ™ Â"K /c3Ä5ßKøŠ°}m&Ç"¿uÏ«£ǰĘ’ˆõ0áÐ>1¹¶éë1±4Fö³}"‘°øÄ§âýôd+óÞ ‹ïÔŒk&ú »nûéka¨uŒj{¡�!?`4H[ÂØ�ˆüÔ{³LV\_ˤ�yÞ3ä5ó0ðÜ¢^ü¿ù4–›‰,L /dí2&Ž5—1 2«€Ù€÷a#\è¦ócï²±AœòEüL!!ô)‚Y¢±}±Œ7ɘøaÆ…Ïyù!ïGÚkWIÎÂ_½ê;˜ÄxOýãcéâ06%ñ“~ â²yþæ3±°ö]6Ê9•—²Ykg;`Ú L·Õµ]ãïñý¥<˜Ã§"Ì›ä{¸çà©âŠP|„‰dÞ�wɆûé{G"‹þ’·Ç®Øä—²ÀHµ_J¶FI§Ê&¶²ñ8zH¬Ô}ž3uÝ>`†ÃÀ}‘0Ž1Éüνá‰Ô°þ\¹)–~ºwÂ�=~Ùí$+Ì:Ô÷Ïý^´Éß[]ݾé?Ûåÿî3“ÞƒMÍ;1§Ææ¼ÔäcI"ò3IÜ‚8·�¼¹¯Rþ cµ=¶ÉünRåàúj´y`ûÅ(÷›Í3ê½Ô�ùs¼Ã$rõûM297uç%Y„})[�u®Ý‚éê&{=ñáÛñ¾OÜfÞ Ü—š­Æ¸è$Oöü#.PÀ‡°ýA~äµ0×÷€ŸÅ .¶0gcZÖ„˜“¸¸e²]cþ†zöÀõar,ÎîhFñ^y£wß�{òɸ½ÿ²ÌyhüøÈÜÕ«�DÃ2,ÂÆKU†(ABƒ˜AaÿÎ|óÍÈ«ßY³…{áäft XÛþý£ †zO=Ùº}{BFG‹7Þˆ†]»‰Ù­Ô�™,°˜µh‘£ã»Ù³£ñžÉì9‹„Ñq3uf/Y’ðÇ*²¬X<°se�¼¬Ú°!Î/¯dãwP}îù]ÆN­ã7ù•É._óÈ6:"¿�úÝñÿÐøÈ˜6cœß[ç¾�k3%„Ññýk¼:Ì!aj|÷ÒwâéQ¹‡êS£nO—xÚqƒ´¤Mpš>ú»�ïù×yŸÎN˜á×qÏ‘�tÇe¦3÷T ot0rº›NÂc2ŠS8ÃûD"8õòló“Órˆ÷ý—ÚLea÷\Û˜»ÜÙs{¢ŽSûH ¿÷ß’ÐñWY¤ãä˜MXØ#&R^ %„•ÁÖëT½�V6gB¢cÖpÞ­A~!’ÍH”.÷šï‰Ó¶^&w72þöIX÷‹E÷¶­nßÄÏXÜÈä»Ç‰Ã‰�}šùáæâ½¡¶É/Nй ÌEÔ]ÔmH…ÙÈÆ©LZåçÞ˜u¿SžïmbÞ †Q²Eœ„—+$LdÑⵘ•p¸¦Ó®ítp¿‰‡#é[ü.|ƒÖƒ°uÏ^�y�È—|`sF›dÒ‡�WlFºéŇÌwB=ñjîð~žåÛOœ|óKaûÚLŒEÈc�ºçU¦®÷,qRÖ k‰ƒ�à�Ÿ½ÀF0,áŽS°²±*ñÂâ#ñqÅé\,: }ˆú(c®0ù° #Æ*ú— ?·Äcº}�Ôm?}-6]¥õšo \7]`ðŘ�ˆüÖ{³ìÛñ&5{î‚¶‡>ó™_¼ôpü[esÌ [ŠÖÞ(“ÍEÄÄ7‘º#Â@3ý³Í˜ /¸cC qÝÌ,l:KšrÅiN©v^pïE+–ÆÒHÆÄ—¾!ȸ€rJ¾ÀôBAê»àhviseìÝ A‚êZ¢>3å”C¨Ë‰ò• :ÙäÝëî/±2z�”wÇÁÆ¡|�›/ŒDDŠÎ.Ùs|pØAÆæ ó~›IšH2nR/é” k”tû lb+Ì#Ù°SO°�C](ÿ9e�»-1öü}±°^s»o´û Ì邌'kKÚàytobÙ¸¥’PA½´%ñ±Í4 SyÅIø·_6ù¾ðˆHÔ !¹™ˆüŽE?›s‹tæaÛ‰=¶A"4ë‡X]Ä¡ �}8HŸØ?tø>�RH6_‹Å0wA¾I&æ¦Aû äRÚgÐu.¤ÿ� Ö 2þÛå·µm`Þ ´|I$rjq7cS˜pHcN&(L6¯»k}û�~á­M·ñÍñ«{t$‚¹¢›2Õ®í¹$z³I+6oŽtg­L§¾þz/š�ó~wX†EØx©ÊΟ#ý²bE\ÁÎîÛ7òmS!YJ^ŒŽQS§F™‡ s¢'R]õ‹Èã`q×Èý¾Gކ™ÇùùatŒž>=�muÄ%+ŒŽ&/«IùÉè€*(/J¦ÊÌ�çË<ehSÄ}…**!atÌè7Cœ"¯T2ê³l¦Æë§½î¤+Ì� K7¤|�ý^0Zò“ä4�œXD^.ª`:3{b 50èàút‰å‹nœ^ĤO:ÀDWlö Ù“gœ@tÓÈ~±ôþ6<='GHöf‚ÄǤKÞ��Ü& øðK$Ò�IˆlÌÚ ;�lÞg’ѱüçœyÀdF‡œj•Ó¯î¢Õ9Ò|ïÇouûÄžeóÒAAhöO±zægÃÆ^¨Û'líwÖ=ʤ‰<¹É^Ì¡cc¦U}#dbïN7Õ3Ê)Ht!0 ‘WlÞ€ù�ŒÒi×ît±Y#}€ß…oÐz¶î‰¨êx/È$ýµ ¢ÁÒ7%b¬É‚‹½L‘Œ¨kA(l_›ÎXdç/Hݳãɽœnvޏx_±Ð’ºf÷¶ÚHv¸),>H 'l.J}�÷»¯¶T"6=Ýþ©ž±¡cSº}�Ôm?}-Dã%“ÆÙ¹ˆÝ ãïÖ:17÷�ßz j9ñNÙhÆFžäA$¨ìö&œ-Íáî'í²Èæ ò õD’¾œTÅF£¸á]"™7, Aö†®û@Ò#F˜1ˆg×a0g$}»¾š”Í?ÔH˜DŒâ°ã‚ Á˜à—Ѧ¾‹ºÌ@¶z ”M6gD:§B½(å´O@ îÉ®ØJDPc&qæ±ãڛߌRlÚón;Ž}[å\�y¿HEIS]åä=òv�b·Û0}P6±5JX7�d.œ¤��ÞØ0µ%àd]UA^d΀ú!i;©¾…ø»%Úžhaêª=`CVÒãØÙ é0€R½Cæz�@ÂÜŒzÌ¿±ù†œŒÅ‰6†ÎïX„° lÎ-Ò™„m'2¶�ù&„˨/öáIßaþsýð"Ù$O6ðŠ䛤37 Û!Ïr #È: Eiw‰¤ð;·6aph‹mÂP©ìEv æ_&(L6¯»k}Oç;µù_¬NA²O¼(SíÚfôÚãŽ×;óÂí?Ntâüù‘ÓYÁ|X°n]�ctð9D˜-óO«þù‡n9’Æþù'qA£+•.MÍO=•näßál˜ÛMSÿø#ÎùYÇOë9­G† án;B7_pU;æÚ¼mÕöY'ºmŒüÙ> ±lèôfË–T©[ƒsQ›þýiæüùŽë‡>H°q?ÆÈ}ý5õþœ-d1=xÅtYcäe<�ÞkËVœ|R~#jœyzßéôám:%Û«ä^tÒÕ'Q©cKÑÞîí¸ÍûbÍÊјÙøß¿¸sÿʱ¯Œ‘7ê߈Nk~šãÖ³rOÇ€sƒ^ 茖l”©WÕ^Ī¨è’—.¡šmkÒŠ_VÐk'¿æøUº¼KiIè€Ãp •£žüõ[8 @¥J•¢ƒ:(@Œø 0z ã· w§°QH6~ãƒg³Á*РID§�E´e3âjÃX½Ç±ÑÙ‹�AÀGo6†2å`p³tY¢½÷5Æ ß}ÝÄ‚ωü.!z톬`dÆ‚a(Ë&Ôâƒ1L!‡ñ[Fúàgq�]a˜¹)çôæ§\Žzæ~ÛV6vƉ‘ÿDF›—Ì'ª{” ß©7§¿ÍÜç×&�‘·_Û>Z߃”Ç�1òÕ«WÓºuë|' cäGÍVçÒ tÍ0 ž·<@tßóñ‰ÁXŒÓ�ëIt]ksïþÇ÷Æwb˜i؆½aDš“ ÎÂð,hú?ƨ¨y2ÿ0øV•Û Œy•åòªi0jÓ §õ•:v¿÷m¯2Æçâþ`ܼÜí4Q:s~bL¹ËD¾a”ý¶ö‰B÷°íÚ+U1`?0KdüÜŽ¤¤S÷Ä(ŒWöŸ`çÀÜ×ãf£‡0¸ËB¶Qk};çRñ‰]¯«Iô÷áUª±ñÆïcîaï`d³V)ûîÎDw<æ/¥°}m:c‘�³ uÏŽ+÷bزY¢ö>vX|� ®â;cŒ†AØ ª1 C€ÀðµNæ}Þ jr»¹ÿ™ëÃ×–qgãšüÿŠfÆ8¨„J· ÒÆz=MôJN}ójÃÇ1žËDÆâƒÔƒG¸½�HtX6À¼À”ø[žç¼ö¤1üüÜÛÆíƒþD˜ó€>åoqÄ1æsÌ=@'ñ´Ð6šˆoòç¯Æ¯ïgÆÐ/žð�^íhÜm£æ˜{áûvìEôët¢¡|…à©�±G”«1sPÓ»yÎúй·ÿ1ŽœÉs*D¶�³>v ÑÈ~&äpNc‡›ZÔ#BÙAèGП¸)ì¸pááDË—äîßÜéËsØúþ-·9ôµeË}±˜¨C ¢á}ˆ*�Büú}aÚ�!Én•N–·Æ®Ù(ç/S‰®áy7óf̉“Œ¥?Éeñ¢.÷²±ä—̘‡vã‡Ö¬ä¹2·7üݾ-ý úý›ï�¹¹ï‚⃼!�Açý­ê}ÅãÚú½TôO6FŸv�’‰>([ØÞp6ÑŒo‰°nÁÚì’c‰*V2åOç¾iÀDÓÐ..þQ÷áAô£gp�Ãw¿á¢‡_Î�lïg9ü#Æí”õ±9`ßç¹ÿÝ’;|"Ì‘1Ï’º°×>D?l6uF…aôö×<'®mî“ý7F›þÙôÓcÿJ2œßå•ÍXƒÌ0Ä»êïx£Ø¨—¨Ÿ ç9ÿõ¯7÷ö�±ÈŽ—­¹E:óƒ°í†ŒaÐsYÌiAOóx6¸§©ÃØgu{ˆu õø�IÆÍþÇ|«ÚD[ÿá:þ0QÛglßÄ÷A¾I:sÓtú äë\÷Z&ZçΚÆs¿œqmmÞM2ΟZ“1ÿ.æ‹u*Ö« ¯µ*ܹɬ�e|…[º¦?›×ݱ¾§ó}æýÎóÈs‰0ž�°7†±Æ‹2Õ®ûöå Š»éóG?�J`lÛ¸-ê•èè“èèq¼QS5­×´h¸7NÉ/Û7±�ò=::nP[å—2mŒÜÏ{EeŒ­*§—p§TDÕ8ªrB@N<Ú"Æ8‡L6át —#Ä>mjß̸ãô˜5=Ûø»õ‹Z1ô"Q)ƒwŠz„ƒˆªäßÖŸm§‰ ã×~�?Ó÷R×>¾óã\I£Ž‰T�mCÆh#·ëµ&Õ½‰ŽL#O•ñ·�ÏAŸ¾› ~$ú-¿uûšgè–”0‰ê„wÌHDt©ã”—’ÓPkâEPÏ&yÁ)•d» =;ÄÔ žIL/¨N‹4‡-Åå'1n =ú~Nü„m×^yý±85փtêžØðRÛ�S–RܧéE]ü½Œ]âôNjÂÿÑ›—}2NoEüœˆl©;/{"‰â…íkÓ‹ì¼­{v\ÜÛß!U[DxQY„“¥ 9�¶cŒ7¾é�E¢"ýˆ×i;˜•:$òÞL^ƒöAAÛê0ʵK^dKPàħ©b<vn’ì; _ÕKÆ$²&��a.Ø'ºÚõ©õ&žÛ¨9æ6ˆ=Т~–ðú�§£’~";vQgƒr‰š!ćô«›0g› �æBᦰãÒ–|ÛÒÃîôíç°õó7¼ íê á‚1zßáŽþìáææ*›¼([å”�È—Ì·½òãÇ­ùyÉË”, H BÊÏ2îã´o"iÌ0øˆqÑ ó~9MTÒ:�5J&ú Á;¯±½íbóÝÑ®dn õmP¥tù æô­|Ói_I®ŒSi“P�èE2¾Aò#“d÷á�>Âúªæ�¨�õC¶4æØ~)È<Ò·‚®l’z|E••í�û c‘W°ÏÆÜÂ~o�{)бZÆ6ؾ‚T0†V!HiÀ-ÑXg«iÉK‰›ì䛤37M§©y©{AÖ¹¶�¹Ÿ¦äFc¿¨§ÕvJÖª‰Ö¶Pá Û­Èú�D]cä¬7…÷0ýA¦ò*yðs-¬õe Òï ‹çž·ÔEHµÙªz%,®™j×Ò>¡ú7¯iã¶m‘~3fDÎgsPOeKpTìÞ=ÒyâÄÈËDCXTaã¥*?7ÅôFÇ?ž3'ÒpÈ�HQ—�’Ï<¹uÔ¨ÈôeË"é2:>e�…Ññ‡,Ó«VEýoa½aB©KÖ¬‰E¿Œó»ÑegdWgt`ƒW6„¿zÚšá €||Åàh{C8,£I¿XþE'Í!�†XoJ~›ŒQÏ`/¤±©‰ d!ÑɈů�ˆ}BŒ×k�fcuoÄŠaEÛˆ¤‹Î“&ä¡[{q5W ¾p÷ßÇD [ø»u¥brwü-²%O¸æ¥: ø%~z£ªa  »fX®@+f­ˆÖÙ¼dtô<±§ó´‘D”Œ[5Œ­Dòƒ²øÖ6³Nüä µFR'‚2¶ q“Môä=¸ŠZ*L½öd�6а(öCØ<„š"ăŽïd„ö »òK´ ³Ó'hS^íÛkßcsWÕ‰TŸØáq¶]»ÓÁ³¨qðRæ>h=[÷ìÍ^l†»i@·X}tëJ—M9|k/•$Rßáïµ.ïãaäçf@K8\¡ZDÂÙjzì0^÷aûÚtÆ"ÉG˜º'qå*joPv¨fIE²ðÁÛùu_‰lK„ÅÇVËèO‘GŒY²1‚Íjä%¯Éo´�ÉÆ�­ÂÂ.‹Å7ò2¤Ø›e¯u²ß’û^`@�‰�lÎ`3›…hÇöª¬¤¡Ž ‰ºO·QsØ @x¨æÂÜ ÷hÿBØx–ô©á gë߆‰‹oç¦Á¯Æü½ê‡ì�Œd}”ä)�úŽMx”öCÄv0‘ +¨ó£Ý؈ò¢l•Óî÷½¾‰WÞ¼ÜÐþeSã|:õˆROlyvšaðip¢I7è¼_Ê•h³ÓΗ}ŸÎ%Ý>È·}ŸØÊ·èÙÁØï�þtl4bLBŠu¾'‡6 C~˜#º jã¤Àxq& ¶â$m´KaÒcìòšÓ{½›¸’l@ù¥ ó Ïñ¨ÂF¯Ô1‹š@¨åó¢ c‘;~¶æî÷yÓNl‡bOë~¨§ÎöÁÔ_¸%²É F¾ÔRñCA¿I:sÓtú Q7‡òyµ ™÷»×¹8¸'˜ØjüûàìªÚÆ?âÚ*Ål{ýc';ÌŒocï—|¤:x¦?ÈD^í|û¹/Œõ]ʤßC ÃX‚oˆCh«°[ˆg¯õu&Ûµ0½“©”r…½NY¼8œ"û=ýtsÆÈ¯b›Øcÿø#ò¯Çf`X†EØx©ÊÇŸ#sŽÎS_}9Š9}¢ñ2WÊM»:£cÇ–±Ý1¢)·RaÃXüÁÉ£cÄ #œ b¤�w$¢wðèžCÿqƒZ°`Ad>ë…óû[¿~½Du½ÙöBZ6 çUH&\˜P ɦ ¤6Ü}tDÚDl aÓTNc vt1¨ÚÃÒðó2ÌõÌ=±x8-iô Kšà»É^à0Àí›?σ.äÔ!H$¹éóÇbRHyÉèTßäá¹RÏñGvçÂ<¯]»Öw}E½FO—D׸mhÕN i|o,¬ÑÐ^±:áGµ�ŽH*%³ÿ!á¡7Xê®n£Î˜ÊéèÆöKXÅn¿^ñ±ácçz…“‘mÐm”8Y<øÉIeL”ý2H¶kw^°¹‹Ó&(«ß…oÐz¶îá¼|œâµ §�…Ù&‘›Ù…S-×½0Ád:Sá��Ød$ï�´`3$ÙÆ’±AšˆÜ›saûÚtÆ"É[˜º'qåŠ ^àƒMf{SCüÝWYlb v,°ù�…›…ÅÇÖY‹M!7Ù¦`öeƒüöAAÛXûf±únoÔ£L�4’6žÈX|�z`O„ÝŒD„²Ê HŽ‚DúõŶ‰b|Í?âÉ|GÂØÒ èOl²ˆH;uKxÉ w¤ëµ"ÆîÝzÍÁx–4Ý6 ©&ã6–‘G7¥3.ˆñSäÙ˾šû]éÔw[ê‡ÀTÂAlp¡ür@ÀÙæïã¦l–Ó–æL$�„üaŽ�º”ˆlû.^§Åór·eb‹ÀŸLÌûa¿ø‰Èív�‚ôÓíƒå1/°IÔuÔo™_H?(›Å¶DògŸÇa›€%lsIá÷Њ�F²{ÔgÙØãQæ0O¶J+Þå”üÁž_ 2²1po¤C“Þ�>Í=¯—¼È72–¸Ùš[ÈûÂ\ô ‘ï¶xžy«=?F_²7¿Á¼ö"W�^¢SæîxA¿I:sÓtú °k {LqÏÝ�‘]ÿ1&Ú„5­|HËØm8 ÿKŽM<ÙŒ„#ƽ¦±ÓÅ}˜þ yuç#Õsa¬ïR&û»ã»$[ÿá ‰LÀþª€ÐWKýpÈËd»ò×›÷æÅ?˜ö^þq¯¼éòÍ7‘å›6%}]X†EØxI3Þü)3OØïÇ* 8?™`t —]˜a"R­ÙúÏ F–ñ&âþ|f¬8j«ø}6ÄftÜÊ’Ÿþøc¤ß—_F:eœód‹¥jKPFÇ¥,íññ?$ü�f¿í;c3LÛ9ÛIiÎYºT^—Ö5¬qfQÔyïΑ??û3òßN³c»ô‡¥‘Ú©�L1:Ö-\yjß§œ�êîGwwÞk~Í_k"جîZ¶kRFˆ'/î¡Þ�–½�¾ô8ãfopÊ)iûD¢­'”ÿÍY„aa$ÒÒ!Ú›>?2ŸNÜ¡bÈM¶Ø¥Lx$Œ¨Ž@|œ„üþKsêÖ>©?œl² ƒ¨H{`³ÅK Þ@IDAT"®Xøbñ…AYN c!ågsËN;¯î?{ø3§þ n~û"¸³†ÍŠÖ-øå%£ãë美æaصÃ"K¦-‰l\¶Ñùý÷¯iG&cÙýÇ·ÇwN´± Õð·™uîÚ›oðeÂíçõ,Œl8¡>'ÛзO3#O` = NB%œ¨3Âæ‹;hƒÝžðQl��v†“lÂÌAšn† �g[Âbs'µºÜà‡òùÙ”’ôÐöñü`à×/…m×îô™{¿ß…oÐz¶îÙŒ0v¤O„š›‘�ºk“}â¸â”¦,@°8„1O¸ã$¤W*i-[ÃF¾Q²�5Ä“Ó<˜è€ŸúH–Åiöî�ˆ«¹†íkÓ‹ðæ°u/>÷¼¹“S÷SIII<´MÁ :Ü'S±ût-êTò€ÀÜÃ7�Ít¼2E™èƒ‚¶1{ó'ºprý6çaÔVð¶ mKyƒÖ;oÉÞö ¨…‰4°Odœá„1!T¶º+·´‡R>¹º”öbó50ËQ¯ðÃx‰VÄu��²Ñ?ôè#·o3ý†,jáL¼HÚFÐqi‰Ô"æX~(�únlGyÞyżmÏòK4Fe³œÈ«H—W÷ \Ô+H¡´Õ¹1´OÚz1¿ìð¨'81 £²—„ÀÜ iic‰Ô…Á'�y?T=Ê7Ãæ–}PóôÁ8„å–Ž »Faû üÀ TÁsSŒ  -cîXÿˆ»ñ5ka6à›£_Bþ!ñko""mô+™¦«ÏˆåïÀÚ }}"‚˜ËòƒªA)7ê­¸'Ûð:‰0¼÷˜û`ÓÖv¶;ßAÇ"wülÍ-Üï ò¦�€á<ÁXúx�q“u$ÒµØôL´.ÇÁ©è—PЧáç¥v/Ì7IgnšNv­!ê� Ú5´t`ˆ¹†œ”‡æõÿm²™XcŠ9$g¥½b¿$3j7å›àšh±ß‹{I_â¦ê2‘WwR=¶ú.å Òïm\û˜ÛÚk?ìuœ_Î|ßkkÄÚ*Þ“Év-sX8Ck]´iìËa¯Î�#×�ùrÞ¼Dgys½.,Ã"l¼\p9ps„) ¼£›7 ˜o^¿>—1r¯·&2Fް+7l û$VSå• ¸íA÷7h@õ-câ¶1rÏHìX‹ ¨Üwùåt°‡u1Fž(®í>´];*S²¤ãd#·ÃxÝ_sÖYÔªn]/¯@na�3Ï|{&�¼qdô]û¼/Û§­_Ä–Õ˜ÊT)ãÇ}&Œ‘#Ðô>Ó‰í+Ð;ØâÓ^ìE%�(é¼wÛ¶þ–C­gµ¦CNíÃÆÔÿ£më·Ña§FËf0Lu»Ö¥³îgKm.ú¡÷ôQË�W»^»‚%}ܱy±ú*B^ÜtûôÛ�|¸Ý³ñ|NcËËë?›ˆªsÝA~ðE¢æ÷zçè¯ßŒQWnu /Ãg"‚ÁDNtêÿt®SÅŠÇ|úsºæô„‘Z–ƒ�­}öc#ÆÜÞ@ûs·Ú— Eº ¿>Ø”hô`i¢Ž¯^N#tB×ÞIôø«ò”ûúùD÷4Ž¹ÛÆ(c®±;Û8*ŒSÂH¥_£âeʱ±^n‹0hê‡Â¶ë®'úòÃØ`˜PÚ3¾ ] =7�¨Î•ò»­éÔ= •> 9ÀwßÄM x­Xjòc³]‡ÄògÔ¡ÿB‚{·¡Æ8µqÉýÿÅ(®Ó�âÝ?™Ctäqñnö XßqYÌ9Ñ_/f£Ÿ’�—†qtU, î‚öµéŽExg˜º7÷cÜñ…0&ÀH+mTèèÊlzš<Å®øžø®BÀg,»Ù©ÅO®AñA<ä©É™D¿Í0© ~ãÛÁx=¾Œ)Ã(+èÑD×ßeîÓýÏD´�Áw=îëÐ6@¨ßø¨'¸nÙlܽŒÅ­�î0¿Kñìë&]¯ÿO¸M¢¿}ô+Ñß‹��_<_v·ÙÁ¸ó¦+O#š=ÓÃÉW1´ˆÐ¨+0œlÓe•ˆÌ5.øÎ¶`¸¢ŽÂ ¹„�Œ5b̳ ߨŽ�ûvƒoŒÄiÌ%v‡w=ñ:ÑÕ-cnrg÷CAǤq)×Uox#ó ©&¾¦Sß1?Ä„ï ó 0>œÊu ic~ Cå˜gÚ”írâÝv}À3æÒL´”ó�ùŒ Œ£ß÷"îD:ûîoê ¾e"B½AÂûÐoÁ訬˜16 ˜@T™ë®MañIgÞ�9Óå'CÐÈ Öå+²bn/ŠåÙÝ„]£àaû üÀöùûø[å´ó^ º‰ŸA¯v$z­“sK­ž º+çÞ¸˜ÿ�óºç©˜ Ú ÖmRÄ'YÝ“0A¯í›q_úN,ò‡|&"¥†qêTtû£<çµÊd‡:ÂxÛôìX¿Šõ!Ú$ ¸ƒ.æ9e.ƒ=×4>áæ$×lÍ-ìw½ÓNžkËÆæ_潆‹xÝó™y#ÖHX+U;�¯Œ[® ot6ë¢÷¾÷ÎÙ²…D�xî#k);”×:.èü ݹi:}P:k ÁÓÆ÷˜'-fæV'œN4|z|ÔëËy®»d¾qÇþ ƇU›g¬]ŸìØßdž½þÿÇéþþç>Ï›ž{Nt´?ÈD^å%‘{a«ïR¿ýÞÖx^[�÷1¾1{o�ûò\ófIÅ\G°Û·™{¬U±fe²]KZ&åØ?êß4žÿc�.ý¼|9•ç}ñRûX>uw?Knw÷³„Kûêb|äÙãý•Ƙ27GîÎãmPQ%Ò}¿ø"WHk0³Ã18.Ò¸^õâ‹‘ ³fy†—ô$ü•/¼iÓ¯_ä…�>Š$2l. ]Ëj¸$^ª+¤G„:æ;Þ›Ÿ}&ÑÒºŠdÆ'wó14êT´“súÀ–„”0îkP|$>ꉨB�¼¢ï‚º[r,¨Í!Iß뚉>éúmc’H ‰ÑK)+Ô%ˆ�¸¹ÕL†©Q{KuåÍÞWMÅ;E”Ìoà&VÞ1Ù–§�p¢÷ZTÍ@ŠÏ‹Äq0nxNÝAuŠH!¬ügÔÀ˜ c—¨â�ðè‡pšrô;dü}Øq©`‘ñêÝüRØúŽö%e{ó™ø·áÀÏmTXBåG9‘_œZ´ç’à†9B"éÉ7l Ž—ý: #WœŽ„~sÌ¡å=r…Z8H¸ÕôHܰø¤;ï‡:2)£äU®À §ˆçþ"¹Œ]ìQ$v˜>(?°u‹8!o¯cÄî¾³{í&e„DÌ-âëNÐc~+ª™ "5/Èž“`öϦäoy¸y|>åû»¯b÷Á+5û�ˆçg„Íîu.NÊcLé÷»ÂŒEî4²9·p¿;ÈsÐv"c§-ùŠu¾‡­¾WÆ©D3’G¬ù ݃ùÆ2©öIt„ óMÒ�›â½aú tר;˜»‰ö¨¯ƒÊ.¬!äD>Ú¸AzC¤UKŒ �rNdÓJÒÁ{Eí�Ä…í2?d·M?ýÒL'¯~ò䦰Ôw;ï6¶ø.‰ú=Që†0‰æPk(Z[0'Êd»†¤4Í`½c×'¿Á’§¼¸º%3ÜÏòN·»ûYÂ¥{å)¢û\BÚ¼“¬$Àj¢hβe´�¥E*•+G—àãGJi!ÀL ZùëJÚ¸t£#ÅQêX>”%ÂÉø•¿­tNÆïWf?*ydIGº#K¯ÏÓ×àÄN’nÞ@tJMs-O_˜“8Nâã$«œº•“gžË§›&&ÎNãà„)NPϧ"q2¬ êÎòŸ—Ó?«ÿ¡#jAû” Æ}.ÈeÛò†“ˆ8))§~1"Íù‰hù¢ª|R ''SNmãäÒ:>iwð¡æ0®¶´Sª4üøÏœÌ'Ák™��õäÓî­ýÄ2an¿”è›O‰ÊÎÒ|r7쉋°íÚNó7$N\Ïæï�h§T÷÷ýí£þü1ËÔ¿õÇŽæ' qr§UqšþÐ#Œ4NE'£lõµ™ª{ÉÊ’~aðÁ÷Çø…Óñhk•y Û“O9å5e«²Ë�{¨ë¨{8}xXÛ7÷}a­¹KâßýɼÙF²c¤|:8uü5+‰æò¼ mû”FÂ!Q¬tÆ…DiúuÏf}ÏÏrŒ}hghÛþ.eÊ›ùi")¿& ‡¾ug%Ï…‰Oî~”ùy�NGù�ò€µ‡�ç’|º¾,c„|'ëÓY£íƒ�GPaÃóQô�‚dqØù›)ý®÷�¶ i&´H9aí˜Lj*¿Ç¢0s‹t¾ZØv’Î;ƒÆÍÏo’N´œîð�ˆ ãYÓX2˜Û7¨ß,ùx�¹wÿcÜ…D!æšNŸp¦·Ô’;^~<çG^ C}Ï�o±;¼3¬dFØx©0-´ŒŽTSE@ˆ!ð3‹µ6=‹èß�ª¨lPRò,6j0#›I÷w%ºùþüÎQò÷·¼„ÕÌ�5Ù`V@eŒúñ;Óþöñ׈®må'Vê0Ú®Sc´»‡È«º·»ãZØÊ¯õ ï¾XØq!ïr”7)ï.å ‹žâ¹ÔñÛÔ–:¼/¥ßÄ|“ÖWMøÈ¨èþŠÕQ)Zð¾•æH(È„eX„�— et¤BHý�B‚tDÂÖì2ÀþN`³Ð³�ïGUf�“?=”…¤XšÍ]�“ØÆEmSÀ·>g¦Ç…»°¿²¾VœT9¸¬‘ñ›[œÆ)TP>ù°~IÛµ_¤4œéÔ=¯ôÔ­p" õ ï¾[Øq!ïr”7)ï.å ‹žâ¹ÔñÛÔ–:¼/µ;}“ní�DÙuwU<ÞHÁîÎË�ûyø:°½på-ï;iŽ�‚Ž@X†EØx©ðPFG*„Ô_($Lü˜�»5ˆeFó`tRŒC ¨CÅ…’"PÜ“èifÌ�ò˜£I¹pÿk».ÜßOs¯(Š€" (Š€" (ù‹@>l6‹|‚öÚÛ¨¥£G¨á�DÏ �'½*Š@Â2,ÂÆK•7et¤BHý�B‚ÀÔ D¯û•fuÄJŠ€"�>ÊèHCMAPE@PE@PE@PE@PE@P•èЊ (Š€" (Š€" (Š€" (Š€" (Š€" (…etÚO§WE@PE@PE@PE@PE@P�ÁèØùß´påJÚ»xq:ôÀiOXPÎCÂûðûJï¿?¸ß~yø¦üMzÕ† ´fóf:pß}©t‰TdÏ=ó7CúvE@PE@PE@PE@PE@PE Ãä£#‰Ð o¾¡o~ÿ�þüûoÚñ/[Pf*Z¤U;æjvî¹tâálIÙ¢—F�¦I~f„¼Õª•ØgË7õíô¿þ¢·¾ü’æ,[FÛwît"”;è :ëøã©Uݺ¹¿/YB�½ûn®„‹-J‡”,IåK•¢+Î8ƒ*—/Ÿ+Œí0pâDúpÚ4Ç©x±b4 uk*Æåô¢%kÖP›þý‰ŸKO?�n½ðB¯` Ý–¯_O½Æ�§ogϦ­;vDÃ�ÉQ¥B:«R%jR«–ƒaÔSoE@PE@PE@PE@PE@P�BŠ@¾0:6mÝJO�A“çÎM ÛØÇ£½˜© ôø{ïÑ׿ýæ<ޏï>GJAüR]¿úõWz’ß¹3‡¡â_ó¸ã¨Ó5׼oƼyÔnÀwÐ\Ï ˜Ùq_ƒ¹ÜÅ¡ù«¯:$òÜ¥iSªÁïó¢?—/§[_ÝñJ•®;þ¬E‹è^Îï¶&ŽÛ_žG?ü0í·×^ò¨WE@PE@PE@PE@PE@PE Ð"�/ŒŽ»Þz‹~Y¸Ð­,«ªººfM:¾\9ÚÌ �_x³~Ä”)´eûvû裴K@…et¬ÿçúß‹/F™�h€¤úO˜@ËÖ®u^Ñü¼óèæ .�בÍè8õÈ#éìÊ•YÐ"B›·m£ù+VÐ$–šø—Õ`�¼â º¬jÕh\¹Y¼z5ÝУ‡<:×+Î<“î½üò87yËèø‡ñƒDÊr2KoÔbé�Ó*V$”öÒ¥4Š¥JÖnÚDÊè´õª(Š€" (Š€" (Š€" (Š€" (Š€"PØÈ:£cÚŸÒýo¿íàVáàƒéÅo¤C8 Ç¥ÌxxõÓO©S“&Ž*+ñ Ëè>y2õäô@WÖ¨A÷\z©$IóÙVÇío¾IÛXÍSYVGõnÛ¶QµN6££é9çP‹‹.ŠÆÃÍÐï¾£×ÆŽuÜ ¡I 7½÷í·ôú¸qŽ3ʹ’ífÌ×a÷ÞK^–HÂ2:¾›3‡<ØyOÃjÕ¨]ýúî¬8’fÍ¢:'ŸœKMW®Àê (Š€" (Š€" (Š€" (Š€" (Š€" ò”ѱ€%&úNŸN¥Ø–F[–ÚÝÍÒ?çHs$Sáä…]XFÇ-,éð«„ nÓ†`—Ã&Øá€­Р͚љl#”ŠÑ±– }7îÚÕ [†™$CÛµsîí¿6ýúÑÌ þW1ÂéÕ²¥#Åb‡Å}XFÇÛ_}E}¿øÂIîµÛnËeßÄýy~–í¤À8û-l¤<,WRE@PE@PE@PE@PE@P gtìàMó�X¥SofpŒcé�ÿXÕÓͧ�Fo5lH6cÒ ` À°¸_ Ãè€MŽ:�;;¯ƒŒ7}0u*ugCç –uêÐõµk;÷©°‚<�`ãã9—DÇVÕˆ!À >«µ‚Š®›^{Í #«ÉºÅR“å8ò_XF �™4ÉI¦-Ks4b©?tõ°a4œí—áïp—¡ÛÁÏJŠ€" (Š€" (Š€" (Š€" (Š€" (Š@AG cŒŽ?Ö¬¡>ÌÜèÿã�´œ%ljÏŒƒgYíÓoK–P«Þ½¯K˜ùѾQ#;XÊû0ŒŽ,UÒ䥗œ´½˜ð˜ÎFÇaÄ©‹».¹Ä¹·°¿qýÙg;îÙ–ÈÜeËRPEêxõÕtþI'9÷ò7væLzväHçñIVÃuî‰'ÒÕݺ9qŽ)[–ú¶j%A£×°ŒŽOfÌ çG�rÒ9¼tiêÄù9æÐC£é&º¹{Ìêùý÷qÞ�쀄ǭ\æ#YEIPE@PE@PE@PE@PE@(¨¤ÅèØÆÒ#YªÒ_2³ b•ò°ý÷§f§žêHsTf[ ؇èÈ HM@z"…atÀ7lp€.bÛ�ÿï¹^9‡Ã´Ì sa•*ôÄUW9alFG®H9°ëѪn]:�™nˆC‡ÒD––Ø“¥#>|è!Úï½éù?¤O/Ð{lÆØm Ëè€Áñf={¤H„ŽeFGõc�¥Ó+V¤ªG�Ð.ÇϬ֫3¨ýü3­°˜TÈ÷ÅRW°ñöb{î)IëUPE@PE@PE@PE@PE@(„btü¶j•#½1€7ÇWoÙ-È^EŠ8â7³4@]¶sáVô.«VzƒU,� 5é !HH`“ß&+?ñðãNa“ÙHwû#ÝWœy&Ý{ùåÑôäfÑêÕÔ¬Gç �nl ä‡ÑQ”Ë|)—· 8ǽÐf]Ñ¥ mÙ¾�ªqõ¼õVÇËföÀ(:Œ£Û–Ñ�4`èý©÷ß§u³BÒ.¹ï¾N>¡.«xÑ¢âw…­ŽOæÎu˜£7¨!*»ß~tKáÜÆRÇ–*%ÎzUE@PE@PE@PE@PE@Pò�ÀŒŽß™Éq«¯ÆeúÌråÉ�ëXbâ –ZHDƒÙðõ›Ÿ}æx»7ù{~ú) Ÿ<9.j]–y¤qã¨[FÇ·l/ä‘!Cœ4`·ö+Ü´ˆËiP5–€èzà νÍè¨Ç›ü×Ôªå¸CuÕf޼Ï*ŸþøûoÇÍ--2… äø�¹› ÄmÈ Øí°™*Ž'ÿ¥Ãè@`r|8mM`I1À.iã •Y=˜é²oñâ¶s®û•,2˜%<ú±J¬™ R+‹î½W —çBLE@PE@PE@PE@PE@Pò�ÀŒŽY+WR•ƒÚÈðÙ,­Ð•U7Õ²$/ä3Þ8jÄÇÛmŒ 0:À€qÐŧœB�^y¥s�¿0ŒŽß/¦V}ú8iÔáô³Ò“„!MÒ¢W/çv6`od3:šžsµ`;#6AâÆb!3J`T}@ëÖ)P·�?v¸½E :¡|yÜ:Ôºo_šµheUP£X¥Õ~{í%^i3:¢ ñÍ*¶òãüùôõï¿ÓW¬b,ÂØ‚®e[#w\|±sŸì¡¿^°€Ú2jFCá°Ê­ j»#tê§(Š€" (Š€" (Š€" (Š€" (Š€"�%3:VñIÿÙÀöXV“¦„P%6€Ýœ%0näßá Îq×_.¤»ÞzËqkÀvîkÐ Î`rÔéÜÙqÏ£ãïuëèÚîÝ�ôjUªDÏ^½soÿ�жÇ©qõêÔæ²ËœûTŒöÝwôêØ±Nø‡Yú¤—¨Àè8  rä0Bœþ[†ۅ`vA„Ò•è�tÜ×o˜ÙñØ»ï:·q~†´iã}žÏ˜ dCêø÷×ÚµQw¨"«Ï¾Íå<ÀbÎDè�" (Š€" (Š€" (Š€" (Š€" (Š€"�e3:$ ׯ§¾¬Öè-þ-ÎÙЇ X_xÔQŽ=‡Æ•+ӾŊIZÉáÀA…RßV­¢~r“iFǶ�;©ÞSO9ÉW<äêÏRnú„Ëðü¨QŽó­^HÍÎ=×¹÷ÃèøŠUD=ÁFÇA×6€îx$ù³�Ÿ#X^1:À|¹æ¥—h7HŸŒì±8›"›Ø–Èp. ˜™ñcaUdƒé·²’[øW®D‰$¥Q/E@PE@PE@PE@PE@PE »„ftH6ÿe©ŽOÿøƒzÿð�f»Pç$T‚í@4aUP­YJâôCu6ÏofûóYýèÍÛo§J‡&Á�k¦H�ì ¿ï>:صYß™Õi}Îjµ@O]{-Õf È£ã#.÷‹}ä„¿�ÕA]Çj¡ÞúòK8q¢ãèG°´‹›`¯d-ÛÓØŸmš|ðàƒŽ+„É+FÒ~à�wh*+0£Æ2££Oÿ~ÉzuêTÁLŽÍ;v ˜CÅX­VCÆ¡¯ÃÚGIPE@PE@PE@PE@PE@(h¤Íè° ´tãFê÷ã�Ôwútš—ÃX€ÿÍlÈû­† � Ÿýô=õþûÎý™ÇCO_wíU´¨óŒ¿¼`tôŸ0�ð‰Ô…óÀ«8Ï7³���[¶Ð�ûíç0B`;”ŠÑ�¼ÞÑ»wÔ 9Œ˜Ã˜ù­o¼A²M 0`ƒ£„‡�öç>ø€>e¬@Ýn¼Ñ1LŽû°Œăj°Ë˜1†› É�rn޶ͱ#2𮻜 WæHrHøãJ•¢Û8�›ø›•a<”E@PE@PE@PE@PE@P�‚Œ@FRP¨=ú쯿èM–vŶ!n`#àÂè€]�f=zDíTœ\¡ÁÐwåråh3°ùß÷‹/œ¤’ÙèhY§•Üw_ye®+$EŽË‘Y;/¿ìã†Ú¦{.½”Î:þx‚{O¶¯1géR'þÕµjQëzõ¢iÙŒŽšÇGuÙþhÓÖ­Ž ¨ñ,‚4@eØ8wÿ;ït&×äØ9‰ µ¿zë­Ž¿ûïË_~¡NÇ;ÎWÖ¨áä 6£ñ/cuQ‰Œ”K˜!�2A"’)³}”«kÖ¤“Ø8ü‘eÊÐNVÝ5“ ŠÓE«W;IÙï£ã£Ù³é'žèHoœW±"©ìF"ÄÕ]PE@PE@PE@PE@PE  !�'Œ»�+X= ˜ŸÈö1„`ŒûÑ!C¢*¬ÄÝ}uK_<þÞ{ôõo¿¹ƒy>_sÖYÔªnݨß{ß~K¯�}v߀1ÒµY³8æ‰Íèp‡·Ÿ÷eÃÜ/²TÆ åËÓûS¦Ð+cÆ8Þ7�>áçE™YÒ°KÇ û¡lãݶm�`6£Ã+žÛmÌ#�Ð>¬"Ln÷óá¬F«ÏwÐÞ9¶S~fI�òÌ)µÏ>î ú¬(Š€" (Š€" (Š€" (Š€" (Š€" xòœÑ‘�ØøõË£GÓwsæÐVeŒ†ßÍRg°m› I?)‘]t ïÃ’ «Y]•Ôú¨£úk9«¦1y2}Í4Ë֮ͽ8«kX­5­]ÛQÑ•+€:(Š€" (Š€" (Š€" (Š€" (Š€" (…�|ctØXacþ/–,(ÁRG—-ëè¶ý3}¦ÀË–Q)6J~IãbW¢•6~`è@r#eùf‡’" (Š€" (Š€" (Š€" (Š€" (Š€"°+!P » ZE@PE@PE@PE@PE@PE@ÈÊèÈÖú&E@PE@PE@PE@PE@PE@È0ÊèÈ0 šœ" (Š€" (Š€" (Š€" (Š€" (Š€" detdk}“" (Š€" (Š€" (Š€" (Š€" (Š€" detdPMNPE@PE@PE@PE@PE@P²‡€2:²‡µ¾IPE@PE@PE@Pò�N�:¥•r‡ÒН‘E@PE ÿPFGþa¯oVE@PE@PE@P� ! ŒŽ ©É(Š€" (…etÂ�¦YVE@PE@PE@P�x„ÑT2#l¼ø·ë“" (Š€" ä'ÊèÈú«6l 5›7Ó�ûîK¥K” "{7gÿ5;þý—®\Iû/N‡”,IÅŠÉ~&B¼qî'siÑw‹h¿2ûQ�»k„HÁ_”ùæÓÒiKiŸÒûÐé7Ÿî/’+T6òÚëi¢ÍˆŠ#ºç)W>nXK´I¢]¸ÚÇ!2æ=¢?~!:¬ÑU-â¼r=lZOT|oþí•ËK )Ù¬ïÿîävº‘考²ÖºÕDow7ïjÐŒ¨b¥ðïMÕN2Ù…Íe6úÚ°y ï›ç¾¡õ‹¸Ã±h�=ö z/Ö£"{Üq:l=øi Ñgï›ÂžsQµó¬‚gévç–�ôõ³_S$¡*×V¡2'•ÉÒ›õ5‚@A¨’—Âv]³’hÐ+&× ›U8¶`•@çOÉ¿G¶çÉsãí¶÷N-æ–a6^ìÍz§(Š€" (ù�ÀnÁè˜2w.uýðÔXŸtÄÔ©I'Üío¾I[wìpî=ð@êÒ´©güû¤U7RQÞÁí}Ç´'o-_¿žz�OßΞM ~`rT©P�ΪT‰šÔªEØhXÁaïìÛ—x5,Ñ}]/=ýtºõ s…8q"}8mšã^¼X1кu.†Ã§?þHC&MŠÆ½ãâ‹©çÉMßüþ;õþüsǹqõêÔ¨Z5wÚùß4`šÌXÏ[¾ÜyF ”í´Šéª5èìÊ•£ñ&þú+õ3&úœìæîK/¥óN<1Y�Œø�n=š¦¾6•JW*MwϾ;#iz%2æž14¥Ç*uL)ºç�{¼‚¤tËF^kB´v××¢D?™¦�2_`å2¢‘ýˆ~þÞüð\¬8ÑQÇ]~ÑÕ¼ùŸ­�YÉS6¯WžF4{&ÑÅWuÿæ6õ{�hÒX¢ùsˆÖ¯A;!*]–¨jm¢‹Õ¿Þ¸ÅÇÌ¿§K‰¶oãovà®÷Ýzƒ‚äÎógû—ÁDgŽ]�ž¾` ”Zѳ'E�….ܺE�G�ò�Óý¥*yòÐUª¹ØtÌ:ÇV’ÔøàyjìgnÙB“2%ONã?e ´‰–ïÝK?/[f¤6.V,°r›-U¾�7�ž;g*é<ˆ4ÆÁ[¤®Ø·Ï+ð y»U­J•rû!MC%^PX ´Þt Ú“�XÀá¸MZCT¸ŒÕÕ×;ýéÖŽ)„ÏfáÚÚÅDýÚݼj}�° ÙûPXÒXç Û+EY š��;}5J×ŵâü¹+ðåÀF»7d�x¶8Í[Œ¨~{á: ü¿NT# Ë À‚!x°… ñ`©…~7ì`¿b«ÿ‰Z£�o�Z>$ŽÃâ[ýôµŽ3Ðâ¦ü¢0i ÃWîyŸ_Þó*´rj Ã>ga½+¾lùx~Âßýð¢×uþ–üzævî7´Æy»€…Ýrvî]—ÑÐÐÐÐм@‡™u}æÎ¥ÍÇŽÉ ¾ø‚pÌ 3™�\Ѭ}È`…J'ORÏÙBU�Ýwø¥ZýOÔùú RˆÔqX|kCª¯¾Ô£�_¸e?¯:ìó.¤Jj Ã>'‹ñüåÖ5¢ºmˆ¾å¹MxÑë: +~½ÎóƒÐçívË…Õ³ÖíhhhhhhÏ�7è8DZ.¦°[¤xl¥Ñ™­5Ü‘¯@G”wß5\PÁrb0[<¨T‹]WÝâ µìº ±:~ݼ™¦¬_o¤�mÕŠ`ua—ì�¦N¥ìF*‡ÅÊØÕ €iBëÖ”‘ÁI*Ð�X°ÎÁÅ\MIZÆ®«†8\W5*Z”Z•*e\BîlÍqöúuã|»½òd™!ëÃ><�¸z8¾ø8]Üy‘þ÷ßÿ(uÑÔ”©z&ÚøÝF·1:ŽÌ;B�o?¦”…SÒ©§èÒ®K”4wRÊÓ&½|ú’öNÚK×^£$&¡Â_¦È1"«·j]x”^-ËV%ŠÔ —ˆ9>ÙpyöÛ8œ!ݪoæúü=?ÆàÀ73!^‰;°ÎœÏ—ÿ‰¹¬/ß sY_Ï}ýֆĸpëä-:»á,aüÍÝ27½|þ’Îm>G§ÿ8Mÿžù—â¾—²ÕÏF) ðÍD7Oܤ3«ÏÐÕWéÙƒg” cJš')eªÊMßÇÑ;sÍÌ=!Иn�â÷m=\L™kpz"‘n$(›+û®Ð¥Ýü‘aÊÙ$'½ûÞ»ÆñÁY�w-Yžd3yL:±ä„q¿ˆ ’¼@rRÛ2 ¸Ù Þó[ÏÓµ×èÙÃgƼ)M‰4”ê£Tnr‡L’?ïbSanqd¾…ø†'Oñ”бµjëï°Ý9‰ÝyÐÓÇD°0Á-h²4DÇ÷‹ñ  <æ8y‹Ui´Ïp#ˆ¸;ø5 8A”ƒçˆ†q°¤ãÓÓwÇVã¹�™|™[˜Ë"¶ÔâiÎÔè¬sVáç¹<ògþ„:0ž^üGŒ¥yù²�ç˜ûÝàùYº,¼€,²çT�C®²*µBñÒÇ£ÄÙÓ±ÅÇ‚#™~¤!tz'"ƒA/y•ë ”…RÒÓûOHpÑ`™“w2ïÀ¸éÉ^M*\0r;}Uª÷ûЛŇldÕ\¢/뉳U,[*¯x·‡ë Îµ�Âzµ‚,C“n°ÜѦBÓ }3A³}üJäÇ6_çR¨œ«´ä;Õ±5ÔÜæþ ¦pü„aD?uuMÃÜ:ACñJìzˆ…ó ?æ}áXÀ_ÀZûÜŽ·TšÛ8áI£°¼ÀbuÉ!^DgtÖþëSáá}gšz bôg \‹ÕÍë<÷tT’Ûõ{Ð8z3/ 0¡Q‹]Ÿ ú8°³È _ༀ ̯Ҙïiº8Ç1!63Áì ÇÁáñÞÌd!ƒÙ}ß!l)—NÔjõ<ßÀø°ç¡S(whp÷dAüŒÃоfáÇâ©A[›ÉÂüo<‘¯ÿs]¾|ƒÌe}9·ó­ ‰q ù²ÖËŒ®v9×…¦•˜F·ÏÞÒõöGÚSÂ, ÓQ±žÌà92¤/—žjüZ#P¸XÈtà+ÐqaÇZÔp‘Ûþ�©=·6%ÏçAjgjß—S»ï�?n_ú÷ß‹ÿhåç+iÏ–†›î)· 5ùÁ™iQc–2(�Ïò�ïP®æ¹hß”}�5Eˆ�ZlnA) ©3Þ¼ÞP‹­-(U‘TFV¢G@zPÉ~%©Ø×ÅŒcóïaÀ¦ƒ÷sÐàăéáõ‡”­^6º¸ã"Ý9wÇ¥hœÔq¨ÁŠ”(k"—tœ@)dM÷5´kÔ®@¥5SÁΩ젲„{ i²û@ óš“ß[(bÀòÏLvç$þ̃f4t|�1ÿš6„cjl2÷ŒèGþ–WoæL‡BG³N%ys¦æ_йÒæñØ“Õ4/ðun!ë–{ðµFy&¬Ea5j&æO¨«V.1'ƒb€‹£Î¿–ÑT´bT ¤k˯k|H„èîs‘~Sxäî:@«‰?ò<ð;~ÿ_Í1"Ñ€A•‚Üc7¡í‰ÏËLè+@§J¦e†ÝùÆvŒñ ÕY¤ˆ-感°r @>ÌÃû+ó1äð÷=ðæû~„Ý#gs¬eS²‡‚¹rQK^ãâØŠìvËYõC§khhhhh„=^k ã4ÇÙ˜ÌàÆ´ýûéÄVé«�>¢Ë5ǾSY€ßpÄ#89âE|ÿ‰CbÉu¹:Vþý7 Z"$‡)âǧïêÔ1bT˜ûá͹¯@ÇjŽ?2`ñb£êïëÖ¥bY²P�¡C ÷Ué'¦)Ÿ}ج t´/WŽÎsl�e;„|Ȳ:vŸ>MÝfŠ™x�B…uxK*Ð�çà«;ŠÈ’δŽ~¸»îK4‡¥FÐJÅÂ=GÃÿƒø°1€þYÇ+ÅÏŸ:œè O)P ÅZ·Ð®…&âõ#ׯC‹ñî¹»tyïe‚�¢û�îô^<–Î+´æË5†&$’ �Ïc7ÈÐa§¯wÙš©M›6J«ÁVá@ö 9P½;’¨!¢ÒJÇS¦L¡?YiÈ[‚UÔT¶fŽ5j�"vÞ€Ùë¡@�9PÎBÂZíünæ1‚óY 0¨ËÉ^Í|Ÿ“ø3Bûwì z’5�è#¬`Ù™Y‹”s§ˆæü%æWÈ E„¦%øû~\Ü#¬Ògó X!H‚5Ü,âÞ%Ù™[ȲrðJ, ˜ÉŸù,ròÅV±¨àæt˜S¬çeÚ?ÇDki3 %Õ•¤Th€RE‘²"~À XYÀÂuC!aí¹ ®"Ž ¾ ò�`ù�¹  ¸0 ûI«Ù‡ë–„¹Yî¬X@°¸ÍÁÏp/Ï…aA ðÊ?Kyž–â}‘[»óƒØ’#§¨Š9æù®4+!@3wóð�x¼çÏÞ¹CrìËûSRþÏúãS<*gÈ`xT�×°· XØ-§¶­�544444—¯Ðñ”%‘‹9¾¬76pÜV0 ¤¤1bPc6k…5G&ŠmE¾+{ö¤Ÿ¸XÅS°\H�0¡Q½; Ç³¥¬+$¥ç`ÜùyB–+MÊ�6­Ç¸² ö¾ßΛG›Ž5Ìz—öèA1xÑ7héRZÉüÍå8‰q>Ì@G‘L™¨ÑÈ‘†5HÉlÙ¨OíÚF+ c)ƒ"C—ó̘©M™2T¿HãØ›� t—uïÞ%¯4ý¤Mý6ц>ŒZjάiÆ ¿DK[/¥}“�¬€ŽœMsRõiÕéÑÍG4(á £hÖºY©ÎÜ:ôüÑsê«¿!j´ª¥/ŸÞ²·ÐÄÝ9j§G ÃN_/]ºD)|t“Ö¥KÊ@˜;‚Vý/…P ++Âb~œA™s±Û&ÁF‘àÅö«ÆN͵îCxáÝÕYH–vû™\_8¯Á S^œbá bú&g< ,@ˤî§°8C¬3©A¶q n¡Lwu…6 Õ 7 uQˆ…ò nS¨†ö$„’F,n—pÐ¥lZ",bAñøóK¸i€&þ¬XÒø~,Øî#, l€ÐEîÖ°"A�«X�¡Z¯4(Ä  6ÐÆŒÍbQ.Ëb·†°øvGê³ýn"QíOÝår¦A8R-»Ah2b¡³?x—>«8#E@IDATg>nâOîwó$fQZ�ÐîD™)¼˜`”—Ÿž#¬+~åE>ÊŒ+Ü>Y¹ÑpöÄ÷#XQÀša‹••'¾¾ï#z³†gÑâ´¨.¸0A°« ž@1I£¾aë¤ä 0K²‹Æð ëgKÎ#h7Cøc¥É,sÚýŸÈòrïí7Hæ·³·ó­E;èðg\P�Ô ×‡¥û—vjµóØthÎ!J[&­°Ðàóñ¹Ç®£r@[?afþã3Á ãïÍ' &k›®“Œ7¯�nsr!! Ò|SsJœ#q`�pc5!ïcìƒ%Bµ_ªQx�E��rà›#­Ã ¤…À6¤éÙýg44ÕPÃb.-›olN‘c²4” ˆžÞå“ÐÑùlgŠ“&Ža²k ˜Úe+~¶pKµuàVÃ}Y«¿Z×Ô \® IÆ'S�yu ×Wêuó1,E–¶Zj$ãY`S .<7öÝÈßÛw¨ãéŽ7-t$-:pZ¨k!*7¤œ¼D»Çí¦íVç•ÇU¦¼my`rÐ)˜fUd€)OëOÔ ˆ >q<åW¯] `aÿB°]¯ǯ£^VeÒˆ4³«Ÿo?±0 Qk�¤©\ËBhüû4‘¶éŠ‘¹ Í×�ï XŠ,>(|/‹÷[)L¸Áîñ�#7„Åðù÷†(ûg€k ¸s‚‹QT‚V÷øá^Ì´y¥Ð Dúü½DYr;s¨‘fá?ú“‡û‰¬¯ÏE¶€>C𷇵 óˆc«­Œq�ûXÊB UãeÔwš°Ð’Å" m€Ò­ÒòF<• îi¸W[V±A¬ú\º*(Xé÷à+_U¡ ,]À'< ½ K þ„SÜüžðÿ |]×Ö¡Yü%—Á{«YˆcÒ‚ÿúßB“ üƒ0}Ì‚1+òçbUgh¥ÛùÖ¢/èðg\P�Ä(h±…?Vƒó²Œ .‘Ê *ã’ûÞ¥{„qÂcXzÔšeým÷è8³æ ýZîW£�ª“ªRîVÊÈÑúoÕ3âI >U¯{½èÞýð‹\˜F'*Ý pi%Á w@G¤è‘¨÷F@™v�ÞE+;¬4@€>Ïú0ºË–ŽSÿ¦%-–1X>?ά‰|:Ïåçd?šœÍXycªcD½ j�HÏó$¶Ôyÿã÷©éz–Š+$�Äìèv¥›aÅ#/hžf8ݽp×paöé. 4¥ð‚ë3€&ŸûÜ4ä5ì–�Ï5ÞHÂ;�w{Ö¬Y´yóf5[°Ç#YQ' »›õ—z6áñ‹_yhÿÃÂÛïªÝ9‰?ó y¯Ò=Î;÷g ¢§¼â~�6˧c¬Yh޳F ËLWo&ÆfƒBbn�zš•pu¯5k›°šÁ53Ù�?-˜ÄÖ“­Em�Xùj¸kÍê}Âå— ,¸æt=ƒoÑÄ"Í“2Õˆ€±yا J×Z\Ï`ýžÀE4ÌéÌT-›°º…¬A$ù3?�n¯ÌngÑÿªY…%ærËŽ¹Zõ„Ô{ ïÁ—}[xÌ`ðèkIüɤR¬L+�c ˜ñLß~û­±÷v£�o9¥óihhhh¼ºx-€Žã 2df�A¥¼'–õ³g§¸nLÕÕ¼æc;@êXÐî”fwìhXFXÈ�VÙÂâŸk¬d"¸†Å`D´È‘MWœ§¾;O�¢¼8DALÐý'O¨ ˆ]k’¡MxÇäè@`ñlŒÀäˆñÑ­jUK C�EÒ»fM*“ƒgö^’ t À¹'×U騯_€Ñ/j?CäN@„úåbÜ è¨4¶åû,ŸÑ j”Vžà[4:óh#@kåñ¬ÍØÆZâÐáO_�Ž„ñ±*à‹äk m¸Z€Ëh¯­ba¯Y0Ž:‹°àAÂËÖæã|¤HeyáËæE¸ÈáêÊÁ¬©‡´ëäi+XhWb’Z)“H“ùÄYÈlá> î$ ¹‰{5kpÊVüyß‹ñ§ ¢V+’.‚ºÁPóÃ�4>œ‚IÐâ…`ÄÊEæ³»GŒ—±…æËÁ»»ºBââ®ÞÐHóç[+�Æ註 .e©•Åãm"@õ¼:óŒ<-··$ĉ2“ÇϡՎVæË�窀þ«Û_î¯/*;†î Õ_‰,6¢%ˆfÌŒ,,�AP-Ý?Â}ÆÐ·…`ý+P)R´HƱܨ@‘; Á»]c”’I‚pÖóNO#íðÜô ÞŠ‘$}yåK#MÝø t ¬Œñ�¥ÛÕn€ ·šS‹O5Ž]¬^�gŒŽteÓQãÕ�©Îݲ6;dâ^Š?u¿Ù=ð¬]¬ x=â{`~HŽÃ]cw.в×g€nv­ÀËa}+ wA°p˜_%ÄñÁÁµU‚Ð.A½Frü�âXný�[ (…¨±ÕàjKu%Û’{;ó§ï?./¡÷Ç™ sLÃ}giÑÂÈÅNë]Ù&x WUÏ Å›‡÷ĸ“Áß§m`e�²„ˆÇ†¸"h.¦àË‚µ¬60„òöfú®­°ÌÉ�](瘯ۙÈ:¡ð³�ç“’T‹j9_“×ä>$ÞY—�=>›Ïñw‹­<ðZû![}Hêë8Ð@‡äˆÞkhhhh¼=x-€5M¶VÌšè…|tÓ#«] ãÔ•+ôé–$1!À8�{:d{Øßdmûý´åøqÚ̦·r¡W�Ý=µe·OVä Ð7RV@ãØì?sr^58¨ý”)täÂÇévi�µÞÜÈÞû·ßh÷ó]Vgû­S'ÚÁÊ�eËŒšJ´rÄ>Y¼k�X¹ÒHÿŒŸš{K*Ðñ[ƒ à{h‚fBÛ¤‚j›ójÏ££ �ZZt@ó� QGÑ­“·H5 ‘��Uý²­à€ú*ÛË=‚lcQ‚û(sqÅý‚ü?*ïCæÆ"3WT¡A�õ/‰+ª%ƒêsZ–Ã^ÕЇË's<�öUYX̯5“[Xøìi��ú¤¿fOZÃnfÜüm+³ þ,/P ñÂyòŸÈiMXÐBkñ0Z€u$ê9B«Û¼½qÅ5 ù¸ï\ûVäš¶1¨k \Qª8‡ÜCUe¬³\±Gºu®ÅñNY UË©üVÓ­Žê /p§�…vüÄ"È8òË™*`$ù�çˆøfPǪoÓ%�ƒsGe÷}ÇóC ¸ ƒwXÛÀåÙ•ó"nÇ2ȃ%Á-x6ˆ[ÿë ¸˜ƒÐ £�&¸ji\TÔúË:á:Ë]ò9áZHüOܵRiþ|k%Ðáϸ j«ûÛ>d;!ÞA¢ÕØ ²ŒÇb&�I_\þB&Ù{ tHáu� ,`k€·…à.lÿ´ý†uƒ'Ô{W€»:À1-@pS¶°ÁBPãø’ã‹üPë·t\Ú}‰&åŸdTWc°@KZ.¡¿ùÛ½ª HºJÒ¢Cº(S¯áØè£öÏœßÝ9\iÁ¥Vx‘{о»ÜVýògNbw$û¢*ôÆnëÄë$/»ÝWfá;,àræ¶ YÔØ 3ùÛŸ«ˆk箵ù~æíüI‚ùK°’ fXÑ«©H…U/Ü�al�ü¹DšÕvóU1‘×K§c:â]À­•7KUiÙêM~s /s_æPœ€Ë,�´~Fyxà…Û0Ä4™º^\7oÃû=�ý¹É®¢áÒº{�Ô×q �ɽ×ÐÐÐÐx{8ðZ˜À4áÛ«Ù¬$eà@ßMÙ�Tþ¥pã—Wæ3ïí¨°œ€Ë)Ä»hÅÀÇ­û÷�&Ööé$š¹mœoeák@IÙ—è¬È[ \AÐq* d\/|,KºÄ�Û%!öbpXÇ8ÖÃg“Ä"¸vÁ‚F<w@ÇŽ“'©çìÙFµÁ6²m¹k ãÚ¡k4.Ç8£yø‡Î×.ŸìJàþ÷f,°àÀªVˆÏì Ñ™ØzƒƒÄV™PÅð9�´ ¹'Е¿¯ø tØí+À³þù]ñšâ±k²¸¶^2elÁÂj)me =¸Þñ†°°“î‰Ì±eùKBKçßñ+Y»•¸¢Æ:ØÇ �»"½š±àfºú®¿(ʩے)„5‚Z÷Ÿ¦^q,­pñ%Ì–ªk¥–Ý……ûš\Saq­84ÿ–Çê¶]Û.4 |�Ð.¿?tµtQËàŸË9c„ ¸R }¸€B�L+’« ¡j9Þ„›-Xx²ü�e~g¡úÒ'uÑ €Ëƒ¤†+À$ËAÒ絕`Fä²·U-MjµäØH“­ë±û¾ÃZV# Þ£„;1qÆ€ÅBg�r+—2¯y�g @ 1F@Cæu{%®ø·…/uøT¹{ÿÅáwV@ wùìþOD�!»µû­E/�?ÆèðdU!ïZ zÝãVBœ3IÁ;Ü }ýÈñ Ì™øÜ[ C'ˆŸ?8ÊT#“!¨�±(¸¾…Æõ¹µæ‚ƒGOÈ–×»iâN+Y¼?ÜHw tplÄèþ�­78^… R�Xz‚æT›¢@Ú÷á8ºvðZ`àzÄœd°ay‘¿}~ª8º"²¹�:òÎ×G½¾eÀZ×K»^ìJ±’Ç"èÉP9!€¹'Š•"–¨üÖ­[tGqIã© ®a¾›–-–ý¥�ü( ¼…EæÁ)@ÈöìÎIü™ɶðx·Y 5g‰’§1-7ªË!+åŠIˆ†÷ ;ï!Ö™JþÎ-Ôºü9ö4‚;Ì|±„ÕˆÕsìwº}ØËó)¸%ŽÁõ)æ� tY8¿îPÆÀu¸4û�—ˆE• ‰DN"…≳ýD¬yÍÓ±¹¤e+ÚP–on‹ÁÚÈÓ}¨¸W¸òDœwžïÁs~‘Wòz.­—ózç’RÅŽM-8fH’+z¯9 9 9 9 9ðöpàµ:äã8Ï“–)lžú ÿ.:ú¸�g„%ߟš±U@ ¨-˜ÀÕþ‡ÎŸ§¿übt Á·×p< _�žCÓ'ÆÑu¾,ÎþüúkÃz¨Դñè8qù2µ™8ÑTÚý© 4nt T×3h Í£2/+F“Z2ªEÜqÁÍ( [׌må�B)ž7a t<¹ý„ÆhtªTÿRT´gÑ œUi�Zy*Ü�»} é°Ad‘-oh{ƒö=VâÌóöÔa¶ŒrhÏ}=ZĨ0—Àb²_;‘ªúoî\[‡ª\1¸eÒ C–Ë|p™P4‘8óÖÝâk@Û ~wÁÍ·­æàŸ9àÏŒc"и·Wp™au?°Ü€´ X‚ÀBcùq×X VmB{ZšÐR”î“Ú~ÃqJ¸^wM¾Âñū磖ƒ{-ªå�zÝêXú‡nÓ›ƒ^þ r5bíÑ¿·©Â‰V zìXk?ÞˆUûHWÝnw¯vßw‡Õ È�†¬Œo ¢V®³D ®ÛÕóù›]W¤©€ k.ÿÎdÌÑ L³¢ÐüŸXµi7Ýî·í…4ÐÑë~¯@BV÷³gÂZÞv¹q±dâ ‰DZâS‡“LW�§Þvÿ“¶ ÞfÌUz?êDËßY£ó(¼Æ"gÂîhU§U´säNŠ%"}óÄñWšW­'^% CÆAW;žêHÿºH‹/2zÞf_Jš‹?è&’@G¶O²Qíßx6ÑŸ=ø]ÄïJÄw ^Dx7=øœúÇìoX1[¹ 5Ucœ†d0rwõ[¥I÷“VJVåìÎIü™ɾôkÏ‚÷±®V‘òš»=,auêö3Ç…`¡¶™d�é÷3ñã˜ùªë¹¯s ×ÒþŸYÍŸTÞZÍóêæ‘긶a)æ®&ú唕AÝ‘ y:e pd+1HR]~ù¢t -[Q�\d�þÀ²Ö$° F@òÊ ‰ªd®a?iKÔ‡çáÞPX½û¯^5bsÌ>tˆn°"¤¤wÙÌ·J† ôižA[ã%·ýôKU™¼µè@Þn3gÒn¾€4«èˆ!7ä-Ðñˆ 4cÓ&£†ªyóRJ¶v1Óì­[é6Ç ‰Á1M~ïÞ�~Û¶-Àh_®!¹¤}gÏR×éB�)nôèF9\S�ð½Áˆ`ƒkÓÚ·§4 â0X k Âb�8ƒàtôV ®ÂÛ¢Ãn_ÃK¸Ô«©ÓW±»XöÙÁïq“b"Ùj*/¦g à÷CN-7©U¯º;RPvî›*(aåúJ­ÇŸ–%Úþ§puå.þÆ—¬a·= øWN“A{³EPK·”æ2ê»쟽¶_3PÁZƒ¾Œré8vÏ¢ìùY@²Ó}iXé€Ï d)A·ˆßðàžo@„¡qÉ lhµJи¯ü±„µŠúìd¬–~!ªÑZúéRÒg>£Ä9øc …×XL·Bå²êN .¨àŠJ¥ƒ3¡t<¸ú€~NÊÒj&ŸGzo ‚’¿xò‚Šõ.fˆ³’4wRj³·�Û*$Б$gjû7K@M4·&[·,>fÄâèr¾KàÕ¡)†Ò½K÷Œ÷ï­7^@âR@X�9æ3Þ’Ý9‰?ó Ù7 JX¹•ùä~?+4de�Ùºiÿ0°A7¨b}ŽS2[·õvn�z›íò9g�P�ˆ—ÈyîË‘ÕüIuKåN@�Ç¢Z_t©Ã`þ¡H²ý–°âPûƒ8m*ˆ³²È® ¿ª¤¸†˜rˆ-ç !Îâ�Ðfìxâ8$¶ÞÌ`U ë˜�« PV¦1ùSW˜ÞZi˾úòÈ2Áíó:{<»fFðñƒ¦˜—éØ*½%Ç”DÜÎ$1XÉAvƒŠÛ-'ÛÕ{ÍÍÍÍÍÍ�ðçÀk t¨l»Ìn£¦òÄg ûæ<«˜¹cÂóK5‡JŽZ€�ý:v1@Ñ�� 3I ã O³åGEžx¹0`ÉÑ|ìXzøô)¥J�€f|þ¹¹ªÀso�Ž–ãÇÓÖrp‚1Ýhøûïôó „€äGÙE•´Ô0ÈóÙäÉtìâE’ t Q�Ó‘?}zú¡^=íW`>xÊÁá�Ð%…Ð1íãi°1€¢ÄŠbà„kI¶_ )E¦§¯Ða§¯p]u�ù,ã¿È{ó´‡ÛªX>¸}sW×Äþ,¤î-®ÔoO�x3A �EmJ°KºÆ¯VÉ”â¬t ®C(“ÊË4‡µè~àú@ýs«¦Èìú´âXâqÑâ®fõ\­{,Ö` ƒ9žÃä�ؼ§0ˇ…„;×W¢eç¶'·�˜ ˜„;IŒ@#qÑc²+¯»NPfÝ²pé$ó«ûÃy�ë� ©‹m5�Ê+™Ž8 ¸7³À\^·ÚH¨À|ApMOn»T¿Íë/° 0Ö`ôDR3ñ'ñgÆÊå|_Ëk'¼ª‘CÔ*]n@+þÃA2Hªª�Šº3~(®‡ÔVÆ"±!Ôvì¾ïÒ ˜•†,¬l`ÃcjÀCP ðˆ1u# »HqÝÂU·ãy  Š7®Ã\kñ|¦j|ÂêÖ7Vd÷bU_h§ÛùÖ¢O÷Ç¥¡¯@ǽ‹÷hXšaô¿—ÿ3ÜûÔ_Rß…=j0éÂ_¦²?—u¹®ž\Þs™&æV å‡—§‚� ª—�á¢qLÖ1F›9å š¿Ö ¼f>@pwhñ‡×XdîOXœl  i%¦M•ú‘­E{ñà£Ð¯e¥3ž1RBèÀ»Ð/j?ïKö+Iž.¦´îùb‹ãåÓ—Æs³r퉚$Ð�csL'ƒ“6êÉX5#©ï¦lç�ïåfIˆ*‚�|pn«î:\ÏÉè&ÖÑ©R¥rsÅ·$¸€‚+(|C×òœÊf‚ ×,ˆ¶;'QÇv_çAèÆS¸gBœ¯Ö½ˆ:ýhîmÐó‹ÿe\A¬®¡óœyP¬àjôå`Ü)ŽƒÛz;·@=°%í¼C„Ufògþ$Ý�¡Îòu…[GY?ú åƒõKij^ÇsœxŽ×RG yLß-X`\C»ñXóÅбíÄ ê=gŽK]f ãßS=nûߌ|¦NMõ?úˆ2&KFwÙ¤€ÏŒÍ›)!óBí— t”ág•3M—vÔ“÷™wp�å/�\q’fWžmTMØÚ³kÀŽÛgo„ÿž«®Wè°ÛWyd§<5B0�x0Lj×—¨) î!€‡ðVãû±‰%Žq3ÔÙkÅ’K¸ƒ0C à" q�‚󅻈;ñ ƒAðUÜ©?Ç{xŸq(º7`W{ÅâtÐ,¡‘(r:·pó«Ô KoH‚#È[½» b°$./Œ÷lâök ß̸–§(ñ;�#aáP0ûÌæ¾Áú"_ áf ‹T,ˆ§²a6ß € ,ªçs¿±wGpµ—[’þÊZ—�ä™ë¾•Ꭰ‹Tľ°€Å'‚VCs.¬@p@ÐáŽT 1G>ù̳ïo€5m@ˆsÑ}ˆSpñô1Ñ_ë8õ„�a±’\!4‚#hÿE»7ä²±¸Ìñ!ìèXC$Xq@ü!hr‚ÿ’àn 'ôBIL Ü*Ùyß!Ô�nÀ*ñû‰÷ÒI­J¼Ë«Y‚¯ì™#ø?ÆÏº?lÓž?®¼~î&Üž!/ÙÃçzH“êÃqTðNY‘�ÿ‰U]a‘n÷[@ø±¸éb#¾Žá†ñ£È7ŽÝ YgbBÀ�R§3�Œ ÈçŽàRhXêaôèÖ##_ÑÞE)SµLF]‘¢E2d¹UÙ=Ó¨�†û*Ä·B»PÁ"àÌš3´kÌ.z/î{n]ÉzÞÔ=#G‘¢G¢ú¿×'XÓüï¿ÿÑÖ�[i]oþð9(4€T=òƒ‘Æü±=ÐFòüÉ Ï08RAäà� äQãDu[T:eKD�W7¦˜Éb–²°æ�€‚‰#¨¸¤»îqÍ$nÚ¸TebJ[*­¼lÌÁ}ߤ}„`öV@H`�PàE2‹X€9ШÇ@HÕâÛ½‰øÿh$nWe±ˆ—ûþ ã~­®à2„|p¹…ûvG €Ð,i:©”õÚ±«¤1"�»-,b ¹àÉLî\fáYð’ϱÉÓ°¦)?O€è€TþH�K,觬׳öè´!,(Îû�"mT–Á%\3ùK2FpõX Ž|}ßU7`V>ÑÑ™$­†šÌV�¤À þà÷Ë—�I†;/¸õ êÖ€�ñ¥Îš å+ÿ“ø¨¾�3X1 ¦3¯�ÿ‰³t8ÙüÖ†Ðñï™iJ¡)ôð†øàDŽ™¢Å�f’{Åû§�¿ã'xÃLf�ü'wžÐôRÓéÊ>–î2X‘.šîœãñ“…ú ¬u²R�yuŒã·ióÏÚhVåY†5îóЧžÒÓ»O ð`(´€Ž½÷Ò²6ËŒ6Ì›–Û[RÊB)ÍÉ�ç£2Ž¢['ypc²Š½!3«@ÒŒ÷€ƒ©ÈøïùF6€eõ~¯'‹îámy»å�ù”ÅNÛ(ûôèÂ(<�ŒS àñ„ñ‚xŒó2¶•;·VþÌIì΃пå³XHßGHî !^âFI˜ GŽÓ2}ƒô˜—I ‰¹…T\�uÀXk&æO¸¸Ó|x_(Hàù€x`®&ÇN(‹`ˆqMÒÚÅÂÚCžcn‰ëˆÉ�y  À+ŒÃîܘª1¿P\raް wn­T%äA»puùÑ#¡K†dRŸIHÍîä8y�ê�͸"þˆ3Åõ($Þ×=Ÿ=�¢ ¯5 $Oî9£rÕ X˜ÏeVsºù\æÓ{ÍÍÍÍÍÍ�ׇo$Ðafÿf%ú˜@ sœÃª`x³fÆ¥ò?þHOØå¬=–p< 3A Þd̺p“g»Ly¼†cm`�-HþõmaË’+·yud¢Èï¾KÕò壆lù‡ã_x¢þ‹ÓšŒ, ºv5¬DÌù¸x! ¸'ë‡öS¦n¤�AÆg²µ¨SÅŠTƒãš˜i-[§üÀÖ)’š•p¤Dº|¹wä«””Ý#!p;b‡HZÍ÷4€ïÍB¹®•+{“5Ølü¡‘<&ËCƒ¶ê¤ª”»Un#mb^ÖêÜ{™*Œ¨@:�ÅitæÑtó¸xO-:ýÓ‰â¾/V•vújQm˜$Ã\M©šòhÖpÉÐõ§ Ö °2øu¸p}%©(«Ä(€û”wG°Þøº¹Z-¯#`dæ\µ| »#´“'šXÐûjš�…wÔ{„{,hÒVI´†E³t³÷ÚÃßóõËA{0øp �¸'BPvøZ¸�8*‹Rs9.‡V¦t¯ ^‡¦^»>ìÊá׎šGXù•ï >½!0�B+× Î ìB´q™¬Á¹Ç‚ϤiWáÿWd€q5€¹tšp=Ò¨s->¿ˆ¨n¢oÇ;ë´{T"™ZWVV‚#_Þ÷Yü÷çç šºžc�|,ŽÍ[5�©´Î�Zœ°’ÂYïBNÊÁ] €¡�¢ŠˆÎ�ò®6 Ȩ¹}ýŸ¨eÃãØÎ·Ößq÷¹o Ç¿hµÔ°”@Œ3ðmÅ‹û—ïq6à¼Ì‹Š £*Pކ9dR°ûCsÑ_Ãÿ¢ë‡¯4îA°x4ÇR€[¡-ý·Ð¶Ÿ·Ñ³ûi�£v( ¤+�Ž`íñAEF‘ßB:¿õ<Íÿd>áÙHÂX^}zušZlª‘„Þ@‡f¢… °¾™ÇqS¸%]/ò‡’éär¶D­2Û°–éño#-Ȇ…ºxްª¹ýÏmzxíaà{бþëõ´ùG1lôG#J_Ž4 ’@‚Š?þ÷1퟾ßp™…ìpY–§ucþƒcwtíà5ZÖz]Úu)°2_¼tñ(S�LTüëâ%6K“Ñ wœ 0GQ ã'\÷¹³¦´;'ñg$Áq€€{KP(éϯ݂IÎâcŒ…,¸ïR- e®�˜[¨îQ¯•;DæO¿0Ž�`A ðÊòyÂjñGº æw7¢È§n§ âõÔw‚2Wß Dcú kÊÂeX1a�¼êº‡+ªÌ_̉T‚¢K©bÎ(-…äuô Ïcä×H‘éØc}!¶ú¨#,Päµ�šÀZVà ob½„Ä{ Z ½­°0ŸË–Íéæs™Oï544444^¼@Gx>Ž÷î~·8–HÔH‘–‰ù°ãM$^oÓ¶ìø‡­@ÞcÇò‰bÇ&X®°<î•"¸í¸´‡Ûìß:EÁ^¹y¯x�ú A8\Á�,’¦"JÍr/UÜ¡­ €ˆ¿�<�»\AÓдÝP€H6ÆÒ‚k+h-¾¥@3® `¥P÷a‹~‚7p�E6´DÍn‘¬ê�ö`¶–0ö¬�·UÞâ6@Xp‡Ë«mbÑš­~nðóŒŸã{$Bw…ÐìGh×m÷}·Ó/X] à÷Žß!PJ~à ‚“W‘ìüOÂû>^§o-xMøk‡®Bg¸Š›&.KÄB™‹üÍ…ÿ�£7 KŽX)cQ¼´ñ¼iB¹wá^=\`^?r�ð< ¼Õ ñEàÂ*vªØÔùlgÃJêÏ耻´ÒK.«.þuѰŽM–'™×ó(üÏàjíîù»=QtŠ�:¶aÝaÕnx¥ÜÇ8†±;Vávã¶'ògNbwä©?Á]ƒÒÆ©CŽùS>a±\\˹…�ùÓª¹_¤ž¸Ä2K“AXåìßA”$…k\7«û…b`<¼G”£ ïA¹ÑoÌñÁŠ$IJ1†Eˆ'ÂÜü…Õñÿ¸ŽD<œXµ¬1—÷w~PgL_᪠.«èyCaùxÓ5�]ÀÂn9µm}¬9 9 9 9 9 9¾Ð@Gøò_·®9 9 9à‘œ´«Ì>ÁW YX´8xÛ B(;õ=±˜·Söu* AºÉð¥ßpÑWlš44ÞlÀ–¨ ß– }KÇV3Ða•O§k„7†ö`w˜l•Pa'+ „¶rGx߯?íÿ½�-mKˆXqæx%þÔÞeívË…÷ýêö544444œÐ@‡“úHs@s@sà•àÔÐ&„e \HÈx˜‰…èÛNðu�x)vnžZ÷²Sòõ*Ó³ ÇùðÒòG½3¸;ÀïŸ&ÍÍ�7�ˆöøÎc‚Û³Mßo2â‡ÁõX—€.# ›Ez tx`޾ôJq@ºÅDÐî›_©®½�ÁüòÇùÚ 4p%kjXœÀep'¯Ä xÑ »€…Ýr^tIgÑÐÐÐÐÐ#h #Œ­›ÑÐÐð–Kfõjêšq?~˜|\ ×Roæü^—OoïÞ¬ü�Û«íÕ-õUc"øïö•"¾Kt�]ghÒÐxó8€xˆË¡R…‘WŒã”GèŽCúú«Â�" .4w"B,6M®(—V¸Ç’©ˆ¡6f™çØo2ïë²· XØ-÷ºðE÷Ss@s@s@s@sàmà€:Þ†§¬ïQs@sàµâŒNáàíˆ7’5Q™Z"hùku¡ØYø°>ºÏ^ÉR{Å^ ¯F)øÎþ÷ºï}‰‘ß9Žu£Is@sàÍãÀÖ�[i]ïu1rDJž?9ålš“rµÈåÕ�I>„\}@}õ•ú±”Wet&Í�°æÀ­kìŠ-™hõÇiDUô×ääÀÓ'DùØx nQ“¥àF‡ï9î—M+Yg֑ͯ,ìöêÛo¿µ[T—ÓÐÐÐÐÐgh #œ€n^s@s@s@s@s@s@s@s@s@s@s@s@s@sÀh Ãê44444^Wh ãu}rºßšššššššššššššaÀ „“ušššššš~q@~±OÖÐÐÐÐÐÐÐÐÐÐÐÐx³9 �Ž7ûùê»ÓÐÐÐÐx8 �Ž7á)ê{ÐÐÐÐÐÐÐÐÐÐÐÐÐ%H Ã×vË…Òmèj544444Þ`h #ŒîÍ{÷è߇)N´h?fLŠ!BµöÍ<ù’Î߸AïEŽL cǦHˆnûЩ•§èÂŽ =Qt*С@¨õ8`c]Þs™Þ‹ÿåjî]Psg¢¯~$zx�èÝHD0÷À·ó{·‰bÄ&zƒ_{†¬šKtú0QÒTDµ?u¹ääÁ]¢ÈQù%È%�NÐÏ$œL³÷ïE�6ß‘;·ˆ~.:T…ƒÙ¦ÉLç<\î{’ßZÝðx),Æ�ÐéUxôc°æ€¬yó*_9šhLß =|/:Qß AÓ_÷”ƒ;‰Ö.wQ´"/²wd°°[.d{¯kÓÐÐÐÐÐx8ðV;O�¢ÁK—û<³¦LIßÕ­käk3q"=yþÜ8N'ýÔ°¡Ûò_̘A7ïß§wY‚;©m[ŠðÎ;�ù®Ý½Kþü“¶Ÿ8X.äÈ–*Î��ê*Dïp™ëœ·Ý”)Dÿû_`yo*äÊE-K– ’uƦM´tÏ#=r¤H4½}û €Ãû÷ÓœmÛ˶-S† qŸÌ´õøqš´n�‘\#~ªž/Ÿ9 ½øï?š¾q#ýż>{íšqŽL¸·œiÒPí¨H¦L�å6=J£V­ <÷tСB*ž%‹§,!rmEû´{ìnŠŸ!>u8Ñ!DêtWÉªŽ«hç¨�/]<êxº£»,Á¦…E_?JHtû&¿¯ï…`û%3ܸB´x*Ñ¡]â‡óH‘‰ÞÏHT¹QþÇŠ+s¿yûš9‰N *S“høB×û{ô€hêÏDÛVœ$ºû/þ'Dñåþˆ¨Tu¢J DškÉð;»~™èÙS~fqÞÌçfç™|ÛZ€Yqù2zIÐgsñ,QǰQ£^­[”âÏü"?èõ>s-‹! +C×/‰ôŒ¹öæšÇÎÙÉCDßµñ®dÛoˆŠVy7.#š4@Å‚ÿìù½«Ãœ«[}¢ËçDjE>nèÅ'öÖ5¢E¿ˆoÈáÝDט'^S@T±Q]¾Ÿx‰Ì-…Ìùæ•DŸUuÍßK”%·ýz=}P«?ßZû½r-ªc ¿Ó·ífŠ™4&½•MA8ð*¼A:õ'ØTv=yDt“¿a äiÂfL�6�ôbs„—$ýSÞÎýY_ºPw;/ñ�õ¤&ñ\)j4ë¼Á]ÁòMË ¹ðMÇ·ýM£9cˆ~ø\Ü””ÚôÙ;´ XØ-²½×µihhhhh¼ x+€Žõ‡Ó÷ û<³1Ð1º¥˜ —þþû@a= lЀ ºjbȳ®OŸ@K�#.P×éÓé鋸dI+zö¤èQ¢Ð…[·¨ñ¨Q–ù¬.TÉ“‡¾¨R%Èå¦cÆÐ9¶ª� ¦À,Rhæ–-4Ù` 9Sòä4þÓO•âpùÞ½ôó2–v15.V,°r›-U¾�7�žsH±D1—-@¤1ÞâŠ}û¼Ÿ�·[ÕªT)·R&Tâ…ª GiÿM: MÖ‰üŽ[Ѥ5D…ËX]}½ÓŸ>á|L¢—ü×7/2×.&ê׎…W­ï‚ܽ…@×:WØ^)ÊÂäùsÒ¸„ÝoÙy&# Äf‹§ûDy‹Mß”#Ì#úâ‘ÞQµ¦DGX¨R7¯3oùºDCæ:Ïq´l&ó˜Iõø}ù†þÒü‰¬½ê%Ðñ뺡Í��Ù²a„h}õ¢i}ïÉ–UDm+:ˤ<Çyîî¼êP�Á�‹î®Š´Á³ð`Ð$4h< ˆF1àƒÿã'ÔÚ!OßYß« àÍñïþ•û4$ÙãvëÌ«CYëd•·®÷ ^…÷@éÎ[}hg\03L8ÿÅ8_Ì8æ!mz{«?É/r;^ÕîÊîåñ§ �« wc¤¸âýP<‘Ô�Iž?í£o©ï€y÷j°°[.$ú¬ëÐÐÐÐÐÐx»8ðVvHZsà]ú—Õ¨™j,H1ß{Ï8N7.•É‘Ã86°ÀÝ‚ÕrMäèxôìµ7ޮܿ• Sv. K X6Ü}ôˆN\¾LKØÚâöƒ$�ŽGOŸÒü¿þ2ÕÎæÇ‡Ñ…›7�tXSĉÝ%O–)(_ºt.iù~™@“ªyóR×Ê•]ò™�\ü¹qcÊkªÏÐñ?–ø5;– Jª ýÌ�4)Ýü˜ž?O‹vî¤tI’X�23ÈbEÅ2g¦÷±¤5”)4=j×O,;Aç·œ§h £Q‘nEÔK^‡E_í]–Ì`ajk¡¹Ž›©Ö„5ÃYÀ™*=k¿!š5R{·ñ+'¾×·ûZeTóãVsx÷ï jþ±àMŒXD�4(X’ù�€ q,îçò¢Úê‹ö¿:·|õ[™¤ýùá¢Í_�¾ùÛ»ÏäÜ)°g­[�?C¿"šò“ȳø Q†ìD &ÁDRæ\œ¶Ož‰w£RF§å®|?™¨VKg»Gßµ%š7A”nÙƒ5dŰ綺æ_Á­'¼›ÒAXg‡êV²,,—¦XÑŠÙ î´"zúXhAWoÆÀhYá>êŸcâ²o+æÇ9�ùpi±ãyg}bÕ«ï�šßηV-Ç¡9¦h Ã»'ô*¼ÞõôÍÎew\0sV°&€ ˵çÌWCç<<ÚôöNZ—L)rwøžÁo’ÝQ»*D›–‹+˜ eüÐ].{iP2)žT” ©±Õ^OB¯”:B�·ºfÍÍÍÍÍÍ�׃oÐa~}æÎ¥ÍÇXZ´à‹/(ÇÌ0“èÀõ͚ч V¨äèØqò$õœÍ’¦jìæ©K¥Jjã–�¡ÒÙ³Z�ÉÄ °D‘ Ío�;ÜhGs·o§qkXež)a¬Xtƒãƒ$àýü®]饰; `Ìp¾O•<@úÎa-“!Y2ú¹Q#ŠÅqHTB|’}gÏRÙ�«Õ¢ã«êÕ©|Μj‘p9MAOHßPXôÕW¡Ëþí¬ñ_”ˆ½˜Q”¨B@[¹¡ë�¿xN´p kõ±ÐõM%€ß&înÓ¢IÄqutŸb¼®væ²5Yê À"ÂÕ�«½^)–}^M´¾ðo¶ü ÿ¿jˆ±Âî3q±Ö˜.=s§>-G´�?Ãø/ìf˸€ƒ5ÏoãD¼šÇlµ°a×=gI¸4û¹—átùAþºMµMZÝã2°¶õ†Lõ¼W-WòÌ.×Ö{ÎïîªjÍÐ.¡’§!ZÃnIÜ,9ê`‹¨—�ƒ‡æ žÂ�›JøÆà·_pûö*“Õ÷@í³¯ßZµlH‡æ˜¢�ïžÒ«ðx×Ó7;—ÝqÁ̕ڹ‰Žñ˜Y’ÇÏQ¿›¯†Îyx´éí�`þ—3ŠðÐÛàs¢Þ£‚–„—§±›˜ÍBØ�×ñýL\O}¢”é<ׄ8Ðð†æ9b#$á¿b À­�'A(òca ­íruˆ€x×¢�ü÷è�šOÝÖîÝõ �¿Ör^Î�Ø—®!@Ž“dLJ´ñ²è7,6*°¥è›±Aã2ˆ+î·Ð?äÏ™•fã•óD(ƒrÖâLl ~9?ÄA^¸ãAÿP'„ °0‘—ˆ¯" ±DàÆÁÊJBV  â» OpeváŒx†¹‹0ê}&ˆÝ°õ�ýrü>]< <ð‰�¬á‰wñ]²å“=°¿÷癨Ö¿ó;‹>›IþÐW[ …ˆüET¨´°Ú€eˆÃð—OOëek‹çwIIìºM­ 7jp§7Jp×qÞÞX˜€š}ÁnǾlëó;†w k¢¦]‰à{ïÐþ§Aß|êp¾ãûE cù™ª'àKó^ç…@ £™>*ï”4çóå{`.+ß;ñ�Ìuwîë˜bwü;¿í<]?,æOn?¡µ=ùcÉ”»enJ–/™K73×ÌLÑF7Òn�ºEg×óÇ•)s NO$Ò�eseߺ´û’‘’³INz÷=F™Î:HÏ<£dy’QÌä1éÄ’tnó9#.HòÉImË(àfƒzÏo=O×\£gŸc{ši(ÕG©Üä¹$_Þ†;Á¬y�c_ºÌ<¶´ýYÂßP›xºV•§­ UÂwc&Æ[Xí!¬,a}Y½�¡Î) ZÌñ]ˆ—�¿Í5ùû´‰hÇŸDˆ„2h q…¬/ÆWžˆ�Qˆ¿GWñÀðÿã)´Û1Ÿùú‚ºOtö ša=i&Æ({€’~ì Æîü%Ä=ÉtìKð='rýî”|}&þ´‰¾¢<â`ÀjÐ$øãË<Èܾ1ÝÀs…Ë J2)ÞïŽ'…o�Ž[·.š[p¬ÇänþÌý‘çv]PÙ-'ÛÕ{ÍÍÍÍÍÍÍo9ðFÏy´Œ~Ob€cÍ™3ôKÚ³…À/ÕX�Ê ùtDãø°6€û%ÐD `¹ ÉÐ�ä2Èwg¶æp¼[–nï+Ðq�]cU<ØàâZÔa £ƒ &Å‹S‹�?lR:>)\ظÇç¬F 7[8&‰$+ ã<»Ôj2z´‘- »–šÖ®�,ì>¼€0æT�C®ò [¡xéãQâì‰éØâcA‚‘�L?’þ=ó/½‘Á —,iuPÊB)ééý§�Â$¸h°ÌÉ;™w`Ü�ôäK .¹�¾*Õû}è‹ÐeÕ\¢/ë‰&±€³Ô·æ!Üí\Û)¬WKC»~”áËmZAÔ¥ŽS^Í“«0/jY #¶šê<þ´,u $®@IDATkݳ�&W¢–Ý9¶H-!væBÎ?Ô¢È~êꚆ3¸u‚À‚Zh!¨©Ãp�rnÇ[*�Z€¼låO°¼€y /Tw>ˆ¯€Å=âI¸#j0ms wedš•¦*ŽÞÌ ÏÌ@hÔb×g‚>"ȃ ôBÀní$Aè¿ùªÿAÑýy&�Öünîa¾BP¤’ꢣNkvç6�-�^rìá]Ç»ëûßq>}ÁÇC ð <4»¶RÛðå›9D ¸­ê:лÒêÿú§™Df ­àjxÕ¦‚È5l¾pÕŠ› ðˆ3±Uó—©I4|¡z5t�U›ÚÒLãûà‰|ý˜ëòå[k.ë˹�1Åîø·¬õ2C À›þµØÚ‚R À‘±ÙÇÅJö+Ižæ?‡šVbl  XÉcQ—s]ŒñÙ'L¯?¤lõ²ÑÅéι;.¥ã¤ŽC V4 DY¹¤ãŠ kº¯¡]£v*~¨™ v.He•¥‘øÃ äË{P(„Ìf‚[8|w¢J‚+º/Ë3Vø‡¿  Á™ê<Â7¶ßþö6r¦É£F\ÿßÛ@)ÉàuZ¶Šž,¯ˆ=„å゘ ß¼–¥ƒŽ k0VÏ)ƸÈS…îþÌd:×"ús‘<¿Ìäϸ º\2×k>7[GÚ}&þ´‰€ÕŠ[Yùµ«Ìßiž_áùÌcÐÌL¾Î-P¾fN/# ¶d!¾JˆëVö}?£`)vý¸ÖyÕ.œ5ˆ£Ö剠¼�o:¾ížÈ_þø:’}¹@Ô£!ÿ϶˔ {¸¼ÄüÀy tÔ™?Ÿ=JùÏVñƒèSŽùˆ=Î=‘]ÀÂn9O}Ñ×4444444Üqàµ:Nsœ�É nLÛ¿Ÿ®q@l•¾úè#à° ¬Òбòï¿iÐ’%FžñãÓwuê1* ùpà+бšã� X¼Øháûºu©X–,TgèPÃ}UºÄ‰iÊgŸ¶®íË•£óÛcÇ!òƒ¬€ŽÝ§OS·™,ýbªS¨¡oI:à|uGYÒ™ÖÑw×}IƒVé°4Ãèé½§†P$GÃÿƒø°1€þYÇ+ÅÏŸ:œ`U< zxòŸ­~6CËóúVIs4Dïž»K—÷^¦w"¼CÝot§÷â½'/û5_®1´LqíÒÇn�' ÃN_ï²5S›6, ÷�ªp û†¨ÞÉÔžxæ.‡3­iq¡Š”Ù;„¥€óªç#k° –‹:}¡Å?ÙÐnE‹ÁV@'‚j@ÂJ¡W3N@Û š¡ï° êO�BCÔ¤ /‡ŠcóV –Òdöp—“=Ÿ °èÞÃBhæ'¬r–T…òÉÓˆ$ÐP\÷»+HÿÓðC R¸yŠ!v‡YÃVä ºíXCÔm%lؽ‘…ãÜG�ù^WþÆZøõÅ5ðGòöÁ]Á߿ֱੇ«à±T`E" ÂwÚGy• ì2kÜÏMÔ¿£°¾€Å‡Ô]Å}OAp]Ögœ8ƶWS3fˆs´�€×¿OçØ¢ílüƒ Pÿi |qÈŸg"ßX ý¶3h/Tw_2è*À‹ªYE^â>ø—ò ?áêTÎ$´Lð»2!¬„–-®ûKŠð? ™+´iÅ™çíP~7¦ y–qÿÓr¿|!iÍ�ÿײc§ç°°¢X¹˜-sX®Y Z˜¶‘�!þ®„!X»´HƒÆ9ÀJmp-&㕸ë‹�ï�¹_¾µæ²ÞžÛSP·ÝñïØ¢ctaû£{saùú€MÛfIhËM�Ž(vªØò”&œlX\Z�‘·ÏÞ¦‘éF`DÑ^E©Ô�ür�:ä9ÚKY$%Ý8zƒÏ9l”‰‘8uèlXyÈ|ØÏ®2›N.?i$ÁB3cÕŒáÝtrÅIÃ’>úê#*=€¥õLá5æÂz¨#AжÀ¾ž§œ—Œ$Ãõ]ÍlqÈß÷³ÇƒºŠ“f¬¸DEÊ Ë€°p„…dz§pF\ Œ’`UQ€,1@�‡B±!-»`Ù ´Í!ÈW Á r@Ããy‰Ê">Õ2žBÞ¿ãÌ™¿„«ÜŸù�³V!@—üAúºóî­Vüx^½(Z…5¬÷@�x<„µ–$ð­ËWëH»ÏÄŸ6±°ó.Ä?š´Zöι/‘ŒèÆžß·`½ó ‘�¹Êø�Óe!ZÊs •TKI¸IÄÜK’]þÈòr_8¾˜6éÌóB~^žÈþØ™¡/°Z�ë.•#2˜‘[Ì»`ýK*Xr–ÇÆ¥9c‰~h/î¬Ó�D­{¹¿Ë«VÑè]<+ËXx´dE¹ÔìÀÙ,ì–s×�¦9 9 9 9 9 9 9à‰¯Ðñ”%‘‹9¾¬76p܇ÿ)w—4F jÌq `Í‘‰ƒb[‘¯@ÇÊž=é'.V1€O°\H�P,ÔÝ8Þ˜-`]!)=ãΟ>=åJ“†r§Më1.‡,ƒ½¯@Ç·óæÑ&ÖЉÀý\Ú£ň•-]J+™_ ¹ç#±#·è(’)59Ò°)™-õ©]Û(ct,ePdèòåFž6eÊPý"¼jò’T #¸"«{÷¦(‘XÚî'mê·‰6ôáÕ8SÍ™5 @‡Aü-m½”öM<²:r6ÍIÕ§U§G7Ñ „Bú—µnVª3·=ôœúÇêoX|4ZÕˆÒÃ�­ê¸ŠvŽÚéè°Ó×K—.Q ݤuéÒ…†2掠U-tû`UaEÈK"®ÚÑ@ÿª1 AYØê>D¸·gB,5ýá6îs$aÑW…¯¾@� Íx‚š2i„û)UàþÇLj�m\Ëø!ǘîê m@@-c@X�D„ï3¸M¸@Á…G³Æ¡±±H¸] @—²i‰0€àö– >Â^>¬h|?Ö>í#Üíyà*Á½×å~ÀŠu®âűj½"]%A µF_ÚTA«V_ àE­KýVK°^½nwn!-çà&mÛMg�x|)•JÌ‘ ë~GU þ`~"§æÁ¹Wõ‡?vçA¸ßÕóYñ¤®¸sÌŸÌ–QˆÝµåçÜRå‘<Æ\KZÅFŽâ ²É¯=xÐJ~íÐ�’Ç‹giÑ1iÝ:šµ…WÙL=9 x9ЇÐ1"í‚&(´I!¨P ®¬†¦Jÿ½øÏÒuUÙÁe�(7(Á ztë©®5†¥FwÏߥÚsjn3ÔúÕco€;}½ÇAß»uë¦6ìqÙ²e©V-‡Ä$ØÜî3@𨠫“âjÐí¥ö ,!à[ü›1®y.Ÿ€RÍ®›¾ýT¸Í€«#X{$åE²Jp�ôû4‘²‰µ%"ó@¶CuqaÄâƒÂG¹¼înÿ ÿ¥`íA4ïÕ:±0.žDøMGÙ?\}ûÃ�ù ¨ŸËõùuÄ÷b&¸7ú¬’H5¦V5õÍÂô'÷`�¯ÏEö}n[QœÍÛÃàNyÅý»Ð"Æ},=*üI«9ÕweÖvŽ'RH,È?àÆ�S…x,ÒóF2 °à~�†kpµeDm/¸c;ÏDµÖ�}3·#]‰A‹ ø!]SAзó®ˆïXJå¼Ð.^yR °pùj%JÝ6.ê´Ž zÕ™b~g¥ö«;Á“³”û#)Kœœÿ+ÿ�*žñ‡,XE¬•ž#„¦³,­…æÿ:üæ R V?à]hâ’ä„5ÒàÙÖ-øó=°®5t®ØSÐ tø3þù t ÆÆÏÉ~¦g÷ŸQÎf¬`0Õñ¡F‡øÝ‘žÇònÓû¿OM×7Ej I 1;º]éFQb³¤ÏAˆÉ5<Ípº{á.%Ï—œ>ÝŃˆƒ¦žBv\0@“Ï�}nòöW÷_¥ñ¹ÆIe•¡"ÝŠPx�¹#¿f+Ã]-5F0H9±?þoëø¿0çH÷EÖ‰ˆ£2 ƒÆ"ƨݷԹ¯q¸‘€*b^m¿˜lXiÉ9ÂÐy"–ó*[6` �9"eà¯N—YþÌÔúwod%„��)ÁÅ)²3.8kGõxš�¸ !PÛÓ3QÛõ¥Íž3UÊ$J»³òSÇ~³õ�?s ùžâý„¥°´t™6„¿µ_ŠþŒ[á  ©÷èîØ[þ¨V(kÝÅh‘õûÃ;ó Ùìòô;q¶õ†p+&¯…æþ?Ô•§N ÇŠ“' .¡%%Ž�šñú®[y¤ç5¡]ÀÂn9Ù½×ÐÐÐÐÐÐð–¯ÐqœA†Ì 2¨”—ãdÀr£~öì—­|!;@êXÐî”fwìhXFXÈ�VÙÂâÖš1\C�b0"ZäÈæK�ç¾;y’ÚcÖ,£,@ÄäÝò„ª1‚Ø%°&Ú¤‰‘îè@`ñãÆ€b|t«ZÕèPc‘ô®Y“Êä`µl/I:àÜ“ëªtl ã/À赟¡™ f’‚+‹ŽJc+Q¾ÏòÅ$¨Q~Xy‚ßnÐèÌ£éæñ›TyÉ/rB‹ÚüG÷‰ ÔH…õbލ‚™Ï\¿�s_Ÿ‰j­aþ@3‚y#°ú!Ñ+ùnHßàªûä0Cò•šÙp[+ i1dçÞPò én&q áÃ]]ÐìÐ$I}Êà¾ÐAf+- ž´èFôÅ ‘[U“Ü,`…†+4]UBYÔÒ„X6àÀXØ4ÿÒ} !ñ=p_sȧú3¦H ÃŸñÏW �1>"E�DÝ®v£È1Ä< ®§/ª‹e¦ƒmèHW65^Ý83—µáØ!÷R´øÑ¨ûÍî�×a‘ `%vÊØ†¢ÂÿðHr^<þ?{WgEõ…�t7H³*JH)%¥t#)‚„((ñDAé�$%¥¤¥¥;–�’–ÆÿùæîݽovæÅ¼ îùýÞÄ�[s&î¼óÝs¾Ç”§~ª5³–<ékßÀÕq¨}U¢u‹yL¨Çã`Ða aÜUóÉÎ>~$BUá=„gý.¿k %ÃNùƒÃÇ•2’� Ñ0HãÝ´�?i1Ωbfïw¼ç3°§Öɰã”úì#œÂAœ~ˆÒ¡Kx‰© 6Œq'¾Ž j]tÞ”ÿ¸7{2®ÕÆ1a¬U £ª'ì­‚ÓC–‘kpÿÔ_ì!ä“9ξ4 ÁX³‘�6fBiY�\ËÑØ¿R„’Çä< ˆó_´,nWÉTë5f{þö³ðhA,oÌt7‹Œ•­ÎtÓ—Áµàÿ™SÖYó¨ü¨žUõ#1«ÖÝ}ä—®V1×q\UßjºÝ6ˆFÑ—9üJýº-QJžE ’qÈ‚ÉÂûEŒ¤þ�„Qµz^zsM¤·†ø88< ÕXϦŠmvK‚/‘?�Õý‚\×C Ì óWT€ÈÆ]Ý«pxœš"GÿI‚À]~õXC À±c"âüð(¡oG5ÈâîÜ 30 C)¬Á;Iʤ5‚Yî‡×¼@ð€�¸kCÞ�ÈïÔQâϘ"�Æ?'@ˆÓÇo¨¤Ú¤j”¯Y>c{Q‹Eôפ¿(^²xôùÅÏÃðlH ùQÎ,y…ÐW�žw{Rì±IíŸqÀá´R+ª¤d:a¸W'”Í"<Ãz 'jØAôL>k¹[tixï ¤ÒN3{I™Ïïc¼—¥H°0×ïï¾7ã‚ÚÂ0"ŒÄ›Iþ\ÑŠýèK›’ /[ù™¿äØŸ-�ðv•íȵÓo 5ìÚ‚½DÙXOÖz45c2 &µ¨úA}ҳћï3§úqú$Ïß¼¥3‰Ðr2 ¡YK0¸Ù´ {lñd…È�ÿ¸‘�gÎPç+诿ƒ?Ì8í ‡?ž›¥]Ám! ÉAŠ�_ˆo®zº˜Ëáu‰”3FˆP<êqÌœD¨´ü§ÚN¤¡ Ķý&Úåér–1f€ºóü�µ,Ü'HÇ¿jC"èâ˜Z&ŽÊ™¼jˆixpFI¶éíÚÝ5‘Æf©‚_@ @€+„½±šq­‚{[¯‡r¼ˆR᳜>œ½k:‰º¬žsÙJD½dýá¹v:¦ !@‡㟠$Ô™S‡rÕaÏ óÖº´ïe)ÎÀ†fÖ ´ƒ Ï‹Bí QÅ‘ÃÔ"�ŽBŸðña�oüv#­é±Æ(×å\J’! ]>p™Fçm¤e«œÍ LS±’�$cƒ¨<*Æ\¼û%‡�äÿ91<!3øùÊË@#ƆBüYŒqIqÒã"žàؘ�ž¿ðg¸g–3îU‘`­:é@·¼µ ½FŠPŒØ>ÈsoêÄÑйü~«%¶Õ%Þxoà]1óOqÄŸïµîðÜv7.¨í¨1ìHÏe~¯‰¬Ç—6Q¦UyÖù*1AbÊ:YKèd÷·ì¾�œ~[ÁdLv@sœA}|ÿäV=SÃK?K òó€I%­ºó$Ž¢vK§úqú¤öãŸ+vîHªà>&ªtègïe¨Öát;ðÆ š¶w/Måß©ë<È ÂBWÊ–�~æ°Í?h¤j CjG¯µ´´´´´ž5 D  C*íìÍ›4‘]i'ñï\°AÇ@šVú•WŒ¢5˜P;�âj€ŽýgÏR‡I“Œ.�|{%óYø tðMúðÇé2ŸÀˆU½zÞF¥¦…·@ÇÑ ¨Í¸q¦ÒÖ»’hÜè@©.Ó¦Ñn6šÇc]6*Q‚&0Dõè@8.„¹‚ädïšÑ-[ÛÞ,"è¸ý> L!>ÎË (CÅ»ÓÍ•fÐñeÇ£èpÚ×ð&F £ ›9K‡wß^6Y]’ñǶ:Ï„¨†‘"–0ºôk'¶¥{�k3Æ<¿àŠYÆcª±\æÃÉâiÄž:+V·ZKMÌN·"7WÃõüÀ8&ˆÆ½•ªl÷é¹I*<7`䀀¶1û\!øã»äˆw\˜E�p ˜Í "Zf×ÂÈn%v†+«¼H“³Œ­Œ`ve�.Ú€»c‘³Ñ»L˜»Euw(Ò$1¶ôˆ©·´º&ÿÞÆC_ª6á¦Ì=Úƒ ‹ßŠTÚJ�Å:ï/jÌ\ûªÁò‹!DðÀðW~èÊáÒ~µ˜=%ÜÕ- 6òžƒ‹7"½9<åÍ@´’ iR¤' öARk‹ƒtpê€['"ÉÊ%·�¹h_•ˆ|¨í„ǶÓ1mG%б}ävZÖa™¡‚ŽÇ;Ò¹­çh~ãùÆ~›Ým(]>vm0‰:r˜›jÿÂ…IV}±Š6¿™^Šùýïþÿ ÂñGwÑ€Ä O[»Ð–¦jŒÝ¨s%g“Rkfa ÆøÐ€b#!òyRÃâ`ÒÆ>õ¹(‚ S€€+AʹSìøšØo økTùs5ÞÑÉ¿„mh•À Ò¥Àî½ Â³Måéòçû@Ök«qÁÜŽä*±ÏÕüþ\µ_ÚD9|ÿà;è£Î<�ëGµ&ᕃï'ˆ™KI¤º.}ù¶8È“3‚'¯|7]Ú’L†oTk/ýÀ#°Æ[¢æaü )[Cm%ì¶Sý8ý Û"|o€ó ßlø¾ÄwžmxZ%LlUÂYÚæuœË!–n¬  Rˆ$KF-À)É¿ô‰E£NCP9-Ò½¡5 5 5 5 5 5 5ॢÐ!Ïé í­8q‚ÆïÚEKÙ»$jR3ßEÝ\¹¨}¡B”φÛÁ ítœ<™ö±K/¸5žpÛ³U•Å[�äí:}:íàsHó;±1•ÎB¼:&ýñM[¿Þ¨¡êÛoS&öv1ËÌM›è:ó†$bN“…ݺÑ/›7‡íߟ@F.e÷éÓÔeª˜ö—WãŠKΜf"cF²zí$W‹ê¶á—buM`ÐA8@€3f©_„hë!Aà™ƒ¤$¨©ÆEµ¼j,œ²Î:™šß›mIŒj 㩬 —z6ÞˆêÍÞ"¥Ã–Z³�u°Aè`σÐgZ’µ£„Ý3)Ãó¼_‡¤Æ!5óŠíåØÃd(ƒ©v‘ï»6ýI�ÊñïÎßwè‡t?ݯ5£åi�Ç«S@RòÇ÷S‰ž%  ãÔšS”.:j³«�eèH›7-µý«m˜<³kΦà \Ÿž E‡dB·ÎߢÕsP½ü2÷B¢bÌE8Fx[©!…&~ÏÏî�’£*]f>§Bð•s@ŽwÞ ªlZÁï´ "Å ‚£œ$—¼IjÙIƒø}ÝÍlÁq•“A†+TË©T}'!ìÄŸïQƒX"tß\®W ÂVn(÷|_[� æZð]ƒþ[M²0çõ皨uùÒ¦:‰žšðØTœkà³€ÀëÎ[Žo¾-à¡€p¤€ùø¶Ù¾Nð³� ã¥*ᥟÅÓ‰¾äÉ �U�î'‡ø£'ßAF§<,ädd½„'–TòPÀ‹ÃÛÙ{ÔŽ4�AŽ»�…”ˆÍˆi5ž4ØŠyË2¯#þ§ªâ°pZNm[ok h h h h h h x£�h t¨'v�ÃFMÞ³‡&îÞM§ÙåV ˆÊ'U«&w]ÖþÛ èÆ@…Y$Ðq’=°çGEþH´0àÉÑŒ9Gî>x@™S¥¢iŸ|b®*dß[ £ÅO?ÑIŽ£ŠRpp$¶ h¸p!­`]A@H~ˆ?r¥§†è@ž�'L ÃçÎa3DT ‰*OG¡¬Y©½zFX¯�¼ñ€? Á"t)QtLyo ® ¤¸Iâ䦱âÇ’Ý¡ -A4ñ]þÇÇò,NúŠ0A¬gÉÿrrn6¶*‰a߬ª7€¡¤ õÛ ï ±º„AûÂ1[¦‚x±ˆ!˜]‡YvªÌMԟ냀ç|Rz·$š'.É8ÏòfÅÃËäÔaA° ÐA …€|’üø"fÀZ…¾’õÉuwnœ•0û0Ü ŒøÊ˜i·íf¨†ÝR•Ãþ�G9È´¡lT¶·!,À ³¨º’Ç^ÎÀDÝ|nä‹H¨�Õ}X Ô‡pR+Yä964“ L ¸êÈŽó!$ä15–9f÷c½ &H’Ô‹gùÉbtŨÛÛ0J¢DØ¥Ók¢öÍ*œ—¦¥zÓProéÂy�ÆÛ‰4X®€¸éKü•¢)Á°ÆS�jxœÚ­ØƒˆïoDzâÈùý¤uX45üÔú‹"Dê–\-ض Û¥z»ÀËáîÂ[`„‰0žc; K¶éô} ËGöÚɘ‚>Ê þýÿ=ù�úÅëG E/ݯ4•èÅ–`/û¦ï3¸8žG8,Œ�RÔP~�;±±y¨<Âñþ�‹0Fðꀀ§!!ê˜çë÷�¨A,U )îxŠœŽ j{Ø– ±ÊUbÎ#÷ý¹&²¬}iSÇúüÄ¡ÅÌ^Uùâš`Ú~Ë•cImÓ¼íí·…“¶  s?D*Oœðãž•u`-¿ù° @%ËëØ²ôãä;Ⱥ®©’· ©svˆI1®9|ß«ó믆'‡,ù:‡²mÉÿ[›òÿç4<ÁÍNœNËÙõC§k h h h h h h Øi ÚòÄþã�Õji{y,bŒFo¾tXØÁüRæmÛF»i]¶,%M ¦µ¥aƒoA6ÖCÊöíkxŠ$`ÒîeÝ»iê¢5sscrrU$бfÿ~ê7o¥âúê)B¹8¬S–4iè1{~ìeO�‰k×RÐ5¶Æ²Ô,\˜:VžB§V¼í Ðq‰žƒÉár1Qû¨-,jâ?¶Ð×sçÇÐnŠD‰Ü›�¥ž³f¹Ôe:ò9Õã¶ÿ¹ÃÓ”YÞÊ’…ê+FÙÓ§§›Ì­ÀgÚ† ”šu¡öK:ÊñµÊ`”·Z¼ÂºCh,åØÒc4³òL£ÌÚ¬=³6ì¸~ú:ý\þgúçÄ?ƱgèpÚWuä¤<M1Ë3ð´ûЍ îa€Gˆ$„Õø©Ÿ SÄ >)pÃ/‘Vx2Àx‚°`dÄŸ:ð4  ç÷£ÎôSg‰‚Ô¸ƒ-_<ݰÁ��Éø“þýŒ°!6Ð>¼=àõ�ºá)â�¨”aƱ59ÛÂv®çök c2ê)PœÁ‹ ¢Fx8IÆ|¥ÄLB‰Vkò ŽI>Š@ŒO0‚cm%2”‚<æŽoa*ëyãr|ذî 0BÀ�ÙšaÁ¬xÌŽ·èçȇ Â*/ÒÖ´�ÀÀÓm0꓊ý÷„AàÔ}ÞÇ3‡!2®8ø0ò”Ñnl°SIRa€Bh#„Q‚G„z/ˆRÞ/ý¹&¸No'¤Ø¸¿‡ÏçëÍ6[ÜkðÆ€ñ³AváZJcŠ·F(i,ÌÌÃ@å|`h˜5,Œ§zexä S�Ÿ1;IÉvdO2|ò© �¹œ hÌÞN”» Èqëºà� }6ç{®uqàÀT„²ƒ ¶;eÃ[ðÞ¨û¶¨õ§eâÙ±kÃÉûÀ®®ÈHw:¦„Ð�óþúpcŒMœ.1ÕšY‹2Ê`�{:÷Àõ�4¥Ô”�l±âÅ2HÈAFn%*Ð�£ñï�)qúĆ7'¼9N®ß‚ ©¸”›A7 î­Gÿ>¢ä¯&§*ãªÐ«e^•‡�ï� ï¿›š¬mBv@HH�Ú�¼IjH¡ŠÙh€wn“.¢a除‚çŸ}H´‚ßùÌäÇsбãBÞ†÷¤”Õg˜C.³Üãgñ>'ß»DÓ7…¦Ë­JÙÅø«‚-8Ð}ˆ^«–_аŽvðøÃÛAâr¼Ý0ékˆ?ߢ±”¡èd¾3vÐ,þŒ æºäû<'Œ²¿Ö{F–ñçšÈ:°ö¥M|{ D^¤ð¦Äµ>²‡Ç°&Ll¾OƒW*&S¨ßÒSWÖ‹I+ø>Àøn–ðÒ¾=0AoÃFG öñ­�1[Š?úqò„vq¿ƒw­R}ƒÚ n9¤x‚òî/ÆÁWrp¸ÒÃ8â¿èXÌÿójåÌixo”  z=ŠSÀÂi9�Ò´´´´´´´Lxn€õ¼.sx&˜ç £´– ü al™l¬ÛlOɲ°eÜa_]*‹Äp€ @ •0rc–¨³WÒUc:öa�QD¤„V‚ÁѯF“Êü‡ï| ‘Í0Œ"ŒÕÕ¿Å>„Á€!ÇJð‡òì á%‚~y#0À"äÓ�›"7 20vãÏ'Öz ê¬Õ뉟G#9d^ ”…aE ýcùÆùÚ BŠ ´ùÞz¶ h œ�`„—âÉð �Ìððd«�Y¸Ö¼ä5€Ñ"C€6†á�$ 2Vå%h…cæXé1Ó§Uh)Ô…w‚zßäÚÈ÷²YyhIï¶@ÒŽÐ)Ràm$ß=0«ž^§ñˆš2§àSñõ}Z: ¶Ž)átì·‹·Ylyâ-¶´ LE3YCâˆì#èÚ1~³Øqoy¡Hƒ‡F²€d ã飧F¶Õ8<ÕÂzƶºØ=a7-i·$$¼?“fJj”}p‹�`Á8@Æ̆‡È�BÒ@�÷ë”?˜®z&�g|�Õ ”WîaŒ™¸ÏFà=c/fò[…g”@{Ã Š õÉ¥Ê]¤‚-ò¸ù�)Ó: Þ_SáÉ�Uœ~¨uHÀG¦ab&8˜ÅßqA­ï‹FlŒž¡¦ˆmè¾×pÒ¤'º|)¡%m—Оi{á4 1bÇ Â Ž�ü4UŽTôÉáOBê‘��,ǯQ�i5è­Æoé£rŽ¢+‡¯PÕñU)ËüFÚ¸·ÇÑ…]¨Â° T¸cá�ò#ßIW�ˆû$$Ñf£Ó©N”ü•äÆQ'}µ©6R’AŒPS˜ § ¼5z¢Ëwa½àeðóP1[[Q^ ï¾OÔs„}Ø„Àcl8n&H«e{0šÀ`î„÷ªÊT×5Ú)ÀüyD Þ½C¾`A=G̾ÇìZ„'‚¨€þ\Ãh�øæÒx r‰%þ¸bfa36î{ SRvÌh‡ñd¯Ed'„Œhß,˜ØŽ�ƒ>F.óquÀ €ˆ=ÜÞÝÛ¡¸íÈÖ1;wà§Dë,ì™ fÅ5ÁŒã¬¹D+ÒࡘK@G 1"õ ÄB\ø#þ^“G™»¡‡ˆ=¯Þ³èb™ú­kLs®ÖcÞ¢Ö½‡q÷%ž‰ð ÍO*€D5,ŒH±_JÏû¡GÐWœ·$>öÄm±çO®5ôæûùö¡ua <}Z‹Pwê<Û_/�Œ¯ªGœoË™ðÞÔ`W‡2¾¾¼i'"ó8SüÿB·߷ûgí§í£¶ÓõS×éÆÄ÷t¬íµ–6|³Á¨ªÑŠF”õ}~éÚˆ:@*~ïŸ{´gê#d²#äT�ÖŒ1Z†Ÿ2Wsiß%ZÜz1�ß~>¤2OŠ×RPŽ9¨d¯’7i\™ikI0ƒ9ÂGalx�0.l½. ÖjHÀõCÃá£�7úk ÿ í6ÞÇ_�%õ•ðL3sK`V9€8¢ª756CðÎø0øóQ‚-!yï´±ý©2@)ð �wǧµÅ؈qã¨*þ| ”Ç;ïV&ÀkÄÊ#ÐßqA´ – ðÞ]·„A¤ ¡à©Ýl|'×DmÛ¾¶‰fà¿@ˆ0&‡¼É÷Ñ€)b¼?ã{c³*áñmÏG4EjÁ™aæ‹QÛ ý >ܧc¿L˜€€ �¡ü}V®–Ø–K§úAy_¿ƒP€F¿ö „m"Â7†*ûj4c_ú,ꑨÙ6æ}Ù+sºy_æÓk­­­­­­­�ðÖÀ t„·Ò|©ïÊ­[„ß5æ‰;6Á“âeþʼnË—j¢M^¶eÐEöì8Å^ ñ™¬=MÒ¤ÏþþLÉ£»�èüN6d0Ø‘±HF¯BhDÕ D§¾<À瓇„'@ºÌ"|�:3ÚJ�˜ €ƒ“!À*WØ4´wáŒ( £Oî·]ga‡-á Œ&ñ/€*8GOƒ ú Ý\g£BZÀX‹µ7‚Y¶UÞ³m­ø ìê8wZ€7¸¼Ú&Œb)ð~Á Ey’²Q ¡)ZLrsDdÛÞÖíï5ÁÌMœãß|MS½Ì÷y6e–ÊÛÖu>O˜ˆ÷Œ>Y²ŠçŸgMœ¼¢ú¢Ó˜]!tBX%Íœ”:ŸîlxiØéPž(Fe–5BV�ÛzÎðàL_ ½×c=t„É 7ÏÞ¤„iRÒ,I ï»v£S:}­­­­­­­�h¢ tD“ ¥»©5 5 5 5 5 5 5 5 5 5 5ÙÐ@Gdk\·§5 5 5 5 5 5 5 5àDèp¢5]Fk@k@k@k@k@k@k@k@k@k@kàЀ:|åXpZîP©>E­­­­­­­­�Ѐ:"@©VU^½u‹þ¹{—’%H@)'¦˜1bXe{.Ò=yBg¯\¡øqâPê¤I)v̘Ñ⼎/;NAQÂ4 ©p‡ÂÖçÀu�ta犟2>åkæÁª¹3‘Ñ×±ßݽE+6QÇþæø¶ë:Q¢¤DÏñmï¢�峉N J—™¨v+—CavîÜ$Š�qÃÒ ÑTÑá~¿q�èç¡BÁUds¦lÄÝŸ1\”­Ö„(sV×zöm#Z=_¤¯HT°¤ëñÈØ{|ï1müv#ý÷ß”»^nJ“+Md4«ÛP4ð,ÜJw¢Õ¦§g,Z�ŒÒÙðz)UFèæ³>VGô3æ°pZ.B/¦®\k@k@k@k@k@k@k@kà¹ÕÀ tl;~œýö›Ç‹˜+S&úºn]#_›qãèþ£GÆvÚdÉ軆 -Ë6m]½}›b±w|Û¶㥗Bò]ºy“Æ®ZE[Ž © räΜ™ÞÉ–�ê-J/q™Ëœ·ÝĉĖ˜�òÞlTÈ—�Z”.&ë´õëé·�;�ô8±cÓÔöíÃ+öì¡Y›7‡”m[®å>™eÓ‘#4~Í#¹F¡BT½`Aszüô)M]·Ž¶²®O_ºdì#Î-o@Õ.\˜ÞÍ‘#¤ÜúC‡hÄòå!ûî6:T¨@%sæt—%\Ž-m¿”vŒÞA)³¥¤G;„K�V•,︜¶�ØF)^KAOt´Êâ1-2úZ,5Ñõ«|¿Æ"Ú'�ý’®\$Z0™hÿvñÃ~ì8D¯d'ªÜˆ¨ÿ“$—¹Ÿ¿uͼDG÷•«I4tžëù�”uòD›' ˆ®Ê÷ôŒEÆy�$*ÿŠï-5â¹݇Y— ¯w�uíþ¥FDZ:¢Ÿ1§€…Órþ]A]Zk@k@k@k@k@k@k@kàEÕÀ tDØ!eåÞ½tþ¶V±Ô.R„Ç�ol§OžœÊ½ù¦±m:à�1²ys㘺°:þ}ø�ZŒC¯‹žy¸,<%àÙpóßéè… ´ˆ½-®ß¹Cèø÷Áúu+[ÀL²zÿ~ ºÊÓêYàM‘,aB—93f¤‚¯½æ’vŽÏ·‘ 4©úöÛÔ¥re—|f hܘÞ6Õçè@(�f£GS`0¨’9U*£ŸÙÒ¥£Û÷îѾ³giþ¶môZÚ´¶@¤7d±“o¼A¯¤aKkKdG¥³ÏR‚Ô èÝ®<ÝÑ�DF_�xt,šFôUk1û§Uí#"„«A8›Eˆ›ƒ»Ø›�oéd)œx4(r`ч…DGÇ,%*ÁçÙó'Q³÷„n%!jÄ AvÆJ–Šèì 76Íþ‰( ã‘ó÷ˆ2ÏÂòï ö2á\x3Ôh&¶£ûréL¢3Ç]Ï ÅÆ`G³ê½–Óõx¼DÍ»†¦9¹ßg�f=¶uÔkG”éU±}û&Ñ^¾Gþ\-öl¼L”�A³ˆœ'<®’¦ jØÁy ð ÁÌìÜùþåúÌÑÆ7s{Vûè°ÒJä¦= ÷Aäžqøµæé ¿–ìkºtžhƒ¯f™ðу{D)ÒÕç÷™Y0þáÝ`%áõ²ªÛŸ´è:VGô3æ°pZΟk¨Ëj h h h h h h h ¼¸x!€óåí={6m8|ØHžûÙg”Š93Ìb:p|XÓ¦ôƒªX;FÝg²�¥‡yú´[‚LO�uRÙ¬£è@˜‘# ŽÐ¹mçè¿§ÿQ–âY(Gõ´îëu–ç¤{×ïQ¦w2Ññ¥Çéüöó”.:*Ц=yð„v�ßE—ö]¢´o¥¥w>‡â$Š£žª±}hÞ!z|ÿ±Kz¼¤ñ([ål.iæ_ûj.ïϾ/@ N-~?CðLøÒ>’ãû‰v²qÆ~ÜŽàB¨TŸg½¿æ¾&ð\ìÞ$¼"Î�&JË�\žBD¹,¸ì^'‰Yíï×!9êö?ˆ¶ñã Ð! _žº­‰2ϺWëA;[Ws^ÎîŠBï c@²S§#ZwA”€ÇFöÔ€üo4Q½` D¤¸_ΟDý¾Å¯³ì¡X¡K¡‹gC=ò²¡ÜÌ“rì%|MÀ ‚¼�…þ¡Î’ìè)� ~¹.„ñ€ôáR uØ�2àwÁŒ]xI�×0ÿ»¬‡za¯É…3D›VBö×s-œ*®® hëóo‰¸'Àïb7CXôÒù²mEÑgÃ#œøi¬ÄŸû½N¢C»‰Òð«ø�óakŸøÑ�/Eú¤5D…K‡Íã$å0ƒTx®ÌRìkÐM͇plmÞ&�G‰Þ,"¸dâ'd>~Ö _�eî~VÌÑÆ7s{'Vœ 3ÎЕCW(u®Ôôj™W)Mž4–×O]§“«NR¼dñ(I†$´gÊzúä©zêõНӡ¹‡èÈ¢#3vLÊÓ ½Z6ôEpvóYº|@Œ}÷¯ß§ÕÝùeÀ’¿E~J_�/®"oÔ|ƒ¦fe±\;~�N¯å—Ë58=�H7”ÅÅÝéüqƒäý(/ÅŠ/nÆ}3öÑÃ;)}�ô”8Cb:ºè¨q¾àÉP8©m)Õ¹l¢Þ³›ÎÒ¥½—èáÝ‡ÆØP*€2Ëì’/©WXäèЗ¨íÿÜå×ΗwPx� ¾ŒEQ=VCƒÆ7W\^˜‘ñ¢RUÜO4ðöûvÓosæøË`1ÑËî*:,œ–³ë‡N×ÐÐÐÐÐÐÐÐp§�çèxÄÿJ3á÷x8Vžh�¡ðZÔa £)ƒ��J–¤æï½Ò¤ t|øÎ;Æ9>zòijõ-s’H±:ÎrH­�FŽ4²ph©)íÚÉ"×QtÀÀ3«ê,ºó7[1I‘5½œçe:¼àp2òáY‡Ó?'ÿ¡—b2ô„-,Á’©h&zpûAˆ± É.,Õ�Ì;0ù@ºƒ­…Šx"#wÒW¥z¿7}:–ÏfÂÑz¢IüÅ^¾N;×5Ö«eãÆ3ÅËJÖ/%ú” â02™%ß;̰Œ ùIÍGÄ~«òD[V�0µE7æ©%¸5ÔÜð¼X¨¦ðLû‰¾ë⚆=„u‚!Æ­’ìÈ5z‰È³bÑgÁÆ£¡s™¤œÛñVÊrû'ìfÌ£x\ÀóÆ¢ýDÙCkÿy˜àb¸{;4MÝP1rQh B‹Õ};tßÝH³G, ›GOÖfú›€Ðˆ®×}ØYäDÈ&ý 0`ViìÊ¥. xB¨<"·ÿK9s:Ÿÿœöõ9½ß�¼�ˆ`¦Ñ‹Ã¶ñ%Ÿïâé"]õ ›Ó·”^Í],Yz:�qÿÛ ¿¦¥BAL™ÏT³ÏŽ…4è z3‹·Æ7s9_÷Ÿ>~JË>YF;Dz5Ü$¸y#5,*ù¾éûh~ãùF:€ F¿ã%Ê×,ížÈˆT°ÄˆƒšohN‹d4R·^l€Üò¸»uóMÍ)ó»D82:�“K÷+M%z±µÞB¦”šB�ë æÓ3Ÿã² zyݽ|—r×ËMçþ|…ÜNúz“½™Ú´i£´êy³ Ù7d¢z+‘Ô0žïeì;iRRxb ÏÌ?…§€»üê1ÌFmÇF_ùçþm¶û½YX„ïÁ,^H‚DìÄ3É1 ^x)ôh*À Ìz|�A–—ØF·jž˜ ‰¼}ÊÆƒ!j©Ðm ædãÙ“g¸ž'ì RP SßÉF*æÇ.-£_2’øvXÃÌŽ•‚Ù­˜å �·B› b¡ˆÀÝá-÷BÇ¢n;ãûŽulˆæ>BÌçºì¢®õÅ1èGêöÎM¡_Ì4nñQ—�"–àR�‰”©ÁºCû(¯ ¼ ÌÆ­™#‰t³®áñ¯Èrî‹$¨Gè²ÞcD:–=š„΄Fð Y8%ô8ÚÎÍ?Ö ¦pX@.ž‚¾½—AÔX»Ñ×ãìkwz¿«•OÔûqo¨¾m³Ô¡w„¶Âv¥DðŒ /ù•ÏGz\Ác }�´ý<3¬@U“R\îˆÑа3_Ö\â~„—Žx¾Àž0fQ9I:}CÔº‡9Gøì¯ýßZÚЃQYꜩ ϼë÷ÏØOÿ^û7¤; #ù+É)KÉ,�‰§�žù§OLðìØûó^$(Ò©}0ôãØáù‡)hK�±�vàÙy�]·Ð¾*…;¦¤™ – E&…vcÀõÓ×iøkà 0¢x�âTæV|°H CLïf2sæÐzž©ƒûùÛ_P¢xñèûß~£e¬/Èlæùx9˜çà t¼›#5>Üð)�;7õ®]Û(ctüÆ È�%KŒ „:) ÂO$Ùq;´œÜRI¶‘†°Pß²ÑG …60£¸LuQêè^¢šyÅ6ŒïÓ¸MTC0s·i)cÓX ^9Â.AB¥ü«D )øõO„A&~\må§~JÛjO©ßHm„¥Ú4pe,œ‘ZnmiÔ£.bppz~y±Ô™SÇ}¥7oÃSä·–¿ÉÍÖ7£,%²¸dAÅu_­3¾7:žèHÉ_å?XT £h—¢ôþà÷å!Ú1f-m·Ôد<¦2½Ý–_Árœ_3*Î0ö ´.@•FU2@$ÀSqný¹tð׃3NLj°=ÁË1<Ç_ïx9TÊÎïÌ[üIÂ^g¬®‚%ƒO&x ïg5dš?ã‚Ó±Hö ϶‰qŸ·í%€=ùÎÆs3g,{s4 7üyÆü}¿£ßßv"š>\žQ¯‘L*Þ>tßÝÆ€9à‚—�/âÍ;ÈŸqÁéXUcõï¿ò„ƒºBƒ7ËÖtÕ&À¾�+B¿)\�Š=_ž±ý—.Ñdž$6cÿ~º¬LÇrü^U³g§Ø@ÃÅ)`á´œlW¯µ´´´´´´´´|Ñ@´:s˜$xoLåók÷ø‹?XâòÔ'|Œ7ã™Hå™CÓë5Š9:‚¦iÔ(c¶äû ¦t¯QÃè�Ð�;9„Vÿùóé†òÂ(À‹¤LÖ]�ûÛœÃHÅaþwâ Ð�°SU¿ûŽî=|H¹™ccd aQéùWìªéX¡Õ,\ØØ6ðÊ@ŸWïÛg%?wè@R¤°õè¿f ÍØ¸Ñ¨«;Š¿ï¡xTÃ^F˜)‹Ù¶0䨂PVC2 !„?±:Ê*opp Ü÷©¾7f «¡G~Ìò#Ý<{“jϪm„QëW·½:œôõ“¾wíÚUmÊãvùòå©V-¶ªú!+çŠÐQ¨¢Á'‚ÇÁÛêÎ î xBÔkÇFàQ®%/œ€RÍ¡›$©3Œ÷ðöH—Ùµ,f/œ"ÒÖ_ Ad®µ‹Øã‚ ïÌš\°�(YJ±o·”†,€¿³Q_�#?ŒX%ðùçŠ(½*Еû!4º^Ä� ˜þÞ*æö`@†AÞ6ƒfš�Š}<›¼&®�ÙS9fŒž;Ø®ÞT\;lG…ì�¶—4Y`4m4 ¤•/¬€ŽØ cSÏ;=�òÛGn§e– @aco³ÉÑ¢æ‹(UöTôɾˆ&ñèÇÆé 4y›2€>9øE„zÿc€0+�UÌòÊ{¯P“µlWDàìèz±+ÅM7ä(8§† ¥›A7)CÁ Ôj{(29ñ�‰ôg�š|røÐ)Èïù›~Ê÷“‘Tîûr„p_Q5¦ Ý?âwÈÏ ŒÅ–½§ã‚?c‘ì¼µà)é<€ÁÀîbÛnéÏ3ïwô«i)×ðZ36 ¯»>Ët„áÃ{ã x~T¯G™ÇÝÚÓ;ÈßqÁÉX$ûÙc5Úõ‡2üZô`Ó¢ä©ÄvD/ó�´ìøqôXzì!°”—&¤¦ü]ß’½<²ò§€…Ór²z­5 5 5 5 5 5 5 5 5à‹¢Ðq„A†7dPåmæÉ€çFýUcÜ%ð&ò[X¬€‹73ÆtÀñѵjU[ Cå"éY³&•{“§õz)*Ђsw¡«^coF¿xýŒ™«0àÀ�ci²:*�®D?.h“ Æ?~@ˆkùÆHºzä*Uþ‰gÒ¶±·Êx:üé«Ñ‘H^€«œ_‰¶æá%0ipù‰°†qÔù.ÿáIxùÚD?þŠ©<ÑîÁÎȪ†Yt@„Ü¥ÅR5,€g|e2 C;Èd²Î,ÍJ "Q&›9¿YàÑ1y0‡ƒã²0r©Þ fî #%Ó‰œÒè�=Ä’¯˜�èÒyáD™|i¨ÍuÂÛ3é»|Çt~ôÍõ‹š­—c¿!ÞKx‘À+õ؉ Š´ÿн#‚A5¿z.rÖê�ì=QHäbiƒxÞ í†,="B‰�»R‘&ó‰½ðYôøÃ*ÎÕ΋ɟû½;½!D€2é%„Y¸Ð HÛaÜÃìõîÃ\cø‡ÏŠZÀÕR8©�õù 2x6¬êô¹àÀ1x eÎêškçö¾C õÎÜü,G•Àû^�žw{Rì±�m¹8¹ò$ýü¾x`­€‚w½ÔÕÈ.A ÝoKõ�Ùhn½¹”(m"úü"+Æ$¾(.9>²tý»+ÅI$¾ÚprÉÉF .ž‡ÁmJ ãµò¯Qãß§†®·aî�q»(AÊÔíj·�ð8°’4SRˆÿñѤon½�ß{Lyêç1<_äáÈ^ÃK£j.Ñ*¼ˆÍò®?çt\p:Éža,‚¿lû>–yåÚßgÌß÷;ú`^å·B¨­üô$j¾Ö=˜ßŠÇ oÅ›w�?ã‚Ó±Híd�ÕàØ×!!Ö01±YË+ì…>“=<&³÷ú^å? c½Ô¥ MöþíÓ§�O]Ò@‡OêÒ™µ´´´´´´´üÔ@´:^¹B¹ƒ µq¾ï²·Â ž‰^ÔÇ0=RWN�Žã/R«±c�j@0¢qw@‡lë«<Û~O` mL@ÀDoÅ›w�?ã‚ӱȮÿ‘1Vã[§t&ÁÙ"û��œ%*±×MæzÉ(S#v Ìsã™3ÔyÅ úëï¿C;Ãao'ßÐèQ‹ÞÐÐÐÐÐÐÐÐx5-€Ž«<Ëè#&Øþ�ÃAÁ+AJ6&únÂa¤>â_Æ$lAòRœ¨ðœ@È)ð]´dàãÚíÛFË«{÷6€OÝØÄ B/ é’'§Y &؉·@´Òq*�ô\/øD¤œgâv)àÞ‡Ðq˜¹>/ 0µ‹1øH¬€Ž?ÙͽûÌ™FµžÙ¶\G6Ðqiÿ%óæ£yÄ&/Ø® ìJÈzaS6–MÝct0?x: #s°÷ÆÑ«TelB¼sÈØücéâ_ý:œöàÙ©S§Œ¾x»HÁá’ó½â�4gc5È�!¾„\ÀìužÈLˆ-j  P�¯ù–¬ÝRlëI4n€ØÞÍ �ÕìûMÙh8U�Á®='òªËÒl8€7H­LQ�XoKï¿„Ù3†lZ©E7áAa]“k*<.03ò*—ÛêÜà�@øþz0±a4W=]Ô2ØÆë¡’f¡ŠT¿B@¥eãŠ�HãŸ7µ¯…0[ˆMïÎóC¶µpŸ ÿª Hj‹W``ŠËCäìj€I• C¾`�ºì ï"—³%ÀÓCª6æ¸õÓĶÕÒéýþ�*9E�à¡�Y†öàóýV¤þ²M�›óø»�xüˆË±º�‘Ž{Y†=³ßÐOô€Ó¶›Dà‰*™]k6�Ö�7nд½{i*ÿN]¿RÂWÊ–�~æp½?h¤k #D=zCk@k@k@k@k@k@k@kàÔ@´:¤ÞÎÞ¼IÙ¥zÿÎôq äy¥_yň%[ƒ µx ®öèØö,u˜4ÉèÈ·W2Ÿ…¯@@‰ü‘.óùŒXÕ«—á=aTjZx t½p�ÚŒg*m½+‰Æí€”ê2míf£y<Öe£%hóq@T�„ãB˜+HNö®Ý2Ø m¤¸_D6Ðqÿú}˜BüI+3  ï^~¨L"�ŽÜæ¦Ú¿ð‹Ð$«¾XE›¿ßL/Å|ÉÐEŒX1èÑÝG4 ñÓÔ.t£©c7ªÆÐøµê+ÒœŽ þŒE²/ýÚs¸ªÑ®žiò˜Õ:¼Ÿ1_ßïV}ò%M¾£%e ó†/%Ùk˜�…N`�Ý;ÈŸqÁéXäÍYDÆXýïÁu…±ß´î„ï {ÓKïòÜa>¿¹ZàÆúÀ@Ð…H@²dÔ\‚üKŸX4ê4•Ór!�ÑZZZZZZZZZ>h Zò¼žðWÿŠ'hü®]´”½+@¦'%1ó]ÔÍ•‹Ú*Dùl¸ü:ÐNÇÉ“i»vƒ[ã ·ýà1[UY¼õè@Þ®Ó§Ó>€4¿3Ð�á-Ä[ cÒдõë�ª¾ý6ebo³ÌÜ´‰®3oH"æ4YØ­ý²ys€Ñþý÷ däRvŸ>M]¦òtx–äLHˆrè€Þ f686¥}{ H<- n$²�t†�À†! îçð¬Ã韓ÿD9Ðá´¯Qe”êÑ„='¦ %Zqa«7Ìj×F6(—Év`CµÜD'ŠpB ÷‡†Z’³êS¾,þü›+ÿýWëêŠÔÁ³9\Yð¶Ì§‚v¡¯d^¹nU^ÄÕpJòÖŸ×c.n rt„�ðVŠóy t‘ôØ0—Sãwƒ°¤èxíµí%fzšó»Û€ñþkÌÝÃÆ©< 2ÀsÀJà¥=CT�I¤„]‚÷áÎ-߀R ´ÅŒjÉÙ�ó’!žÔk'¹ZúO"ªÁ†²ð”‰ß±ÇÈ—¢Æ)ë¬Ã€ÉöœÞïj<~xíÀˆkIv�ôù{ˆ²¿eÎáÿ~ͼDG÷2X“=2,´’=[˜sã]q¤çqMÕ|ªwŠ;BsµLDno¼…V~¾Òh!¨ŠJ•}Ó÷…tÜùûý�Ž!–Z3jQžyÔæm·jƒ”üñýÇT¢g è8µæ¥ËŸŽÚìjcYNi󦥶µ “gvMönYpØàâøôl(b7$ãºuþ娞ƒê-à—•Uc ¸_À“•`waä̧àt\ðg,’}�ÀŸ]F™O®#êóöýŽ~€ÇêÂÙ#R§Hºo·¥¾£ • †Ï®œL÷ôòw\p2ɾyZGæX�¾ÈIؽ„ùº*aË?ÙÎ^Û£vì y rÜ}ô(¤²ØìžW�'‹µb~¾²Ìç‡ÿ'ª8,œ–SÛÖÛZZZZZZZZZÞj ZêÉ]à°Q“÷졉»wÓiv½–¢òIÕªÉ]—µ¿@Çv(º1Pa tœdO‡ìùQ‘ÿ,XðähÆœ#w< Ì©RÑ´O>1W²ï-ÐÑâ§Ÿè$ÇÓÅpp$¶ h¸p!­`]A@H~ˆÿìHO 3Ð�<O˜@‡Ï�Ãfˆ¨@UžŽBY³RÿzõŒ°^!xãÿ‘?ˆÐ¥DÐ1å½)¸.�â&‰k�¿ÆŠKv‡‚¶ÑÄw'ûvdäÕ#)t:᤯3Äz–ü/!'çfa«’øöͪ*„�BÈH}žÕŠÙÿf�á•Ll`—r‰o-Ĥ†”­Áuˆ‰Ì"�—³Fõçú ¦ "m±GÔ»%ÑlÂI!|dm�çáu ÜIôzna¤· 7òmyìƒW5‚¯� ÷‚™Éˆ]‘$Øêìçˆ$ï®ÙÖëLΠ��8½ßå,u;Ž‘-l§oSAX_!úý”]œ§?| €%ă‡÷ ¼h¬ä· 0 .x—HÁõiîú¥"Å¡¹,ÑëÀõ�4¥Ô£™2ß°Ç^~(òsùŸé䪓FJDÿ=ù�úÅëGO?¥ÒýJS‰^%”ÖÝoƒ@ ¸8ž™O:áý/8oÅ›w�¿ã‚“±ýÖÆjôÉ)_ ÊÚI�_5<9äñ×9„iKþ¿Ò”ÿ7¥á‰Mvâ°pZή:]k@k@k@k@k@k@k@k@kÀ�¢=Ð!Oî?ÞXÍ¡–Ʊ—Ç"æÀhôæ›!@€…Ìï!eÞ¶m„°K�ÖeËRÒìÎ’† ¾ÙX)Û·¯á)’€I»—ug‹¨IZ37Ç1&'WEköï§~óæQ*®¯s\äâ°NYÒ¤¡Çìù±—=A&®]KA×®Ek.L+°uËF¼:.1Àóa0I`.&jÕ¢…em8@_Ï�kC»)%r tl>z”zΚåR—èxÈçT�ÛþçÎ#ß[Y²PýbÅ({úôt“¹UøLÛ°�R³.Ô~©@G9¾Vy\ÚQw^aÝ!4–¿rlé1šYy¦Q fµÖžY›v\?}�`ûç„øÇÿ,Nûꯎœ”�3 Ó Y†cR»¯ˆš°ñ]„HBX Ÿú RMÕ Â¸ •H+< ¼`„ÅŸ{ð4  ç Â÷ƒðN F8¤"ONîÄ` ŒÃà¡èÖ€ î»Ððý >jëx ox} nxŠx#AÞêM¹K’³­pçzn¿Ñ-6�C °�ux8IÆ!:¸o0 –a¦¼€dò žUËç (u:æªà~cm%µ…�[RþÌœ�äžëz*ž6.gÒéN‚ûÀ `"¦ý(BX¡„»ðH*ÐΑ?vw` @H­‚ƒBÍÜ¡8NÝçíq+D>I ƒåñJ$â)Q.Æ7€0@u¬! Ÿ –WïQ“Kð�œ=!€¸¼v'Nï÷"É… bÙ#täá}8ýÉϼ�p¿ã|ú•©.ò„çÏEÝ·E�àC/Š•à~,œL<Óà¢ü QÑrL”Î÷x9$Ȉ²“ÖØš[ÕQiã Ž£ ;/P성©þÂúôjÙWé¿§ÿѦ�›hMOîd°DÐ�ª‡¿Î�<†€Ûmd(”�b'ˆ-›µ]« 2ðøüâç¹U!èÈÑø÷Æ”8}bÃ[ÞЙ8HÅ¥Ü ºipK=ú÷%59UW…^-Ã7c°` úîñ»©ÉÚ&d„Èü¹†‡`�&¢xH`lHÁïZøtà‰€wÍþSù™œŽ þŒEèÂ"¤dè\ö–âñÀ“øóŒ…ÇûýÂÞQöï%pmx#Kf0¸<ö¸‡¬êòæäï¸àd,Šª±÷ÆŸJü�R·­àƒÞ0ÖÃót@Gñmž!t,æïûZ9sÞ%ˆ‡�â°pZÎc‡t­­­­­­­­­ <7@‡zn—9ÌÌs‡QZË~ž$7ƒ#ƒAO@Çzvùî3G™æÊ•›�OíeäðRÚ¶5x0ìòztÌgàfør¶j²4-UÊøYÕwûþ}ªöÝw¡{ZŽ¿[¹@·@ÿÿ¢æìyrúòå�êÌ@4ê5{6]PÏC o˜è0ç5ïWäÁÝl¼sÌyÝîó M+7�‚xî j½qú†1s|)˜ÁÞ@ÇØc ârÙ·Ç÷8ìÃ(§JûƒíE؇}UëŠÌíÉ?ýÐ5´EkaäFx$)f¯ ¤«Ætìè £8BAZ Y„‹R³B+çdåHG{˜õ Ž—¾ !R\—Ò°]í#á-âzÔzïâ1ËýÎMqD¹sp`  páK6ÂAv¬Ç3il†,À«�²0¬H�¡,?Â8_;ÁlÿMÁò!äÎÛJÀÀ‚¶àIÐI�½[¯‡Àb�ÅN0k·Æ[x2ç± ™…k ÀK^ÌÆÎ € €0è@TýHÒá"e˜h|µ8.C<,ÉžMëDÚˆÞ,Ë]�9F¶‹´ðZâz„@ÿÜ»«íùz¿Ã{æ}6$zÜçŸ}Oò÷ð�® ú!ì™Ì<—ÏÀ6ÕHµúͨ<Ãðf@›x·?¸ó€Ü|`€‰( c׸]´¸Íb£ ó¢Å–”©h&srÈþˆì#èÚ1�ôÙqoÈÌ*Ð�4xh$c2uO1šÉ’£‡§ZXÏØV»'ì¦%í–„äƒwcÒLI�²nñK5X0E%Ð�{¬á;D{ùÁ; †x¼k%¿�UX+Ƨcú§þá‰ÐÝqúŒ…Çû]‚DzŸgÒx#ßF°â)\¥“w�¿ã‚“±(ªÆê3Çy2F6¡K,ñƒïx6Êw-¾¥¦®ãç:oh>¶öó7{ž|”"~|Ÿª1æ}Y™9ݼ/óéµÖ€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö@Dhà¹:ÌŠÚÀ Do(a΃}x mÚÔ8ôÁ7ßÐ}¹o�EÌgaÄ?5Š‚®²å‡%&[�V2×֗؃dÞÖ­´‘=K.^çæ&‰+U+X�²çC27nâ(6`ÁZÉD��¹]º^"ÆŽ²ààBpwÞí'N4ÂH!/HƧ³·¤SÅŠTƒyM̲š½Sú³wŠ;  Ê�%K Þ‘;¼­J:�âvp‡Hù�Ïé[>7oåºT®ìMV�yž<|BKÚ.¡=ÓöÂ�@bÄŽA…;&9lª©è“ß„Ô5"¡Ž_£ÓjÐ[�ß2ÒGåEW_¡ªã«Rþ–ù�´qoóŒâ]¨Â° T¸cá�ò#ßIW�ˆû$$Ñf£Ó©N”ü¶º²8é«Mµ‘’¼v‘5OUà­�p ]¾ ë­/ƒŸ@è+i€EYx5¼û>“–Žäßj}rÞ½šýµE¦ðlhÆ�ÞÈ'Bò¼W54]ÝB;# Þ½C¾`A=G„Çê>ŒC½Uµ¨€B.M̤Ïs‰._Û �xÆf³ÏJö¸šRv�³ܘÁçüVõ¨ë6ˆË1ëí›3CÛ1pðÁ‡aCz™óXù™Ï ñäïÞ5¼Ø‘­�$ø)ÑºÅæšÑ:®I“."ö>rH‚q•À\:jH”ε˜|~>ÏxmCÔç§°uû“c*âëC:`RòîbÛÓÒ—û}ýÖy•°5‚`6}Á¨¿v“l4Ò¼s86ŽøÙ˜;>´4À+\ƒûÿŠÐBb+´Eß¶În:K¿~ø+ݾÀ7k°à}Z}juš\b²‘o€ �ý3÷Ó¼†ó ‡N'Å‹ààœƒFJºœã›•åØö¬2“â'�O_üó…‘fÁÃÉþYûiû¨ítýÔuº{é.*Åã èXÛk-møFŒÅ�V4¢¬ïóKÅF$ÐRñ{ÿÜ£=S÷!³�!§ ´.`ŒA2ü”¹šKû.ÑâÖ‹éüöó!ý“yR¼–‚rÔÈA%{•¤¸IùbG¡”Ÿã„*x‡!ìš•G›ÓqÁŸ±^Nã¿@=€?oÅé3ïw5úë.”�ù|Z ¼ ”îäGM†"4çþ“wPxŒ ¾ŽEQ5VБýîMD�ºjß3à£B84ŒQ-fÀ¼/ûgN7ïË|z­5 5 5 5 5 5 5 5 5x!€ŽˆPœ·u^¹u‹ð»Æ\"ñbÇ&xR¼Ì?€Ï£À¬s‘=;N±H|&kO“4)Ás…m³Ï”<ºûˆÎïdCƒ‹dô*ÄHT�@tê+ìzˆwŽPA•.3Q–×]gŽ[éñß;‚S`˜3Xå ›†ö.œe¨äf,M�¥¶„ÿ)˜5 ‚tx)TÁ9zÑÐOèáR¥3”±öF0“¾ {Kk‚p!Þ< `À¹ÁåÕ6í­­�çFa�xôðŒ™Ë\#’o㋉>êüÜœ¦ã9wJð¥8© Ó7"ˆ“²‘]æE9ÏÈÖkT·ž¦{7îQà�´¾ïzƒÃ œQŸ~J‰Ò²kšÑ@‡åèCZ‘¬�i¬v X8-É—R7§5 5 5 5 5 5 5 5ðœh@ÏÉ…Ô§¡5 5ðüh`Ñ4¢M\ÏÄéý'{æÕp-õ|î!þúY��›/±è�µ~¥^”ó ?�E�šÀÇ^U* gn'æŠò$èð¤!}\k ò4ð"�ÕN §å"ï*ê–´´´´´´´´ž' h ãyºšú\´´ž €Üv"“·#>w®Dåj ÒòçâäÂá$Àÿrh·³Š@êê-7г¯ԋržá§±èQÓ¦�›hMÏ53NLÊP(åm’—ò5gÂ/dp†Átçï;TìËbTæ›2^”ÐY´´"J/ÒX- §ºìÓ§�Ó¢ºœÖ€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö€×Ð@‡×ªÒµ´´´´´´´´´´^, h ãźÞúlµ´´´´´´¢«4Ð]¯œî·Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö€ÖÀs¦ ¬lº9%"ïw§€…ÓræsÓûZZZZZZZZÑS/бíøqôÛo¯P®L™èëºu�|mÆ�£û�øŸKÚdÉ軆 �móâ³iÓèêíÛ‹-¸ãÛ¶¥/½’åÒÍ›4vÕ*ÚrôhH]8�#wæÌôN¶lT·hQz‰Ë\æ¼í&N$¶P„”÷f£B¾|Ô¢té0Y§­_O¿íÜi¤Ç‰›¦¶opX±gÍÚ¼9¤lÛrå¨(÷É,›Ž¡ñkÖÉ5 ¢ê š³Ðã§Oiêºu´•u}úÒ%c™pny¨váÂônŽ!åÖ:D#–/Ùw·Ñ¡B*™3§»,árliû¥´côJ™-%u8Ú!\ê´ªdyÇå´mÄ6JñZ êx¢£U�i‘Ñ×b©‰®_åû5Ñ>ñ(xì—Ìpå"Ñ‚ÉDû·‹öcÇ!z%;QåFl�aã’ä2÷ó·®™WWËÕ$:Ïõüþ½C4ù¢Í¿#ºùž¢”/å/FT¦:Q¥"͵dÔí]¾@cK’dÏ×uûþ3¢½ÅK@ôÓ2q�šµ êóúD·oð5a|úûD8ïâŸEN\»É„-‹/ÒßdÌõ‹]ó8Ùû±;ÑÎõžKØœ²NÜ÷ÿ%jY.ì°$ï×ÒÕˆðKÌ÷…•ð°@'…¾°ýä1QÜøD“Ä�bU,\Ó>,Dt`Q©*D£<ض½f!¾5ÄálÌ–Ç5ë¬QDý?i†Ûôt={w¯Ü¥AiMÕšY‹òÔ7uÒßNð½y=ðºQKât‰)V<´¸hÀÉ}0ès¢=[\ª1v0F¾ÂŸMåkå-ö8Rê :´[<‡#ø�LÁûáê%Ñb†€ˆ³^Dýà}³e•xw¨Б‚¿É ½'ÆŒ‚¥ÂçJ—áÉ…­ ïJ¼3=‰“ûÝS�ò¸SÀÂi9Ù®^k h h h h h h h Do ¼@ÇÚ¨ïܹ¯Tn:F¶haä+Û·oˆ± 4 " @íÁƒ  yÖôîâ©q0(ˆºL�J³UÇ�,íÞ�Æ�KA×®Qã#Üä´>T¥@ú¬JØ#MF�¢3ìU!@Má×ÙʦÈô�iB0€�ä2ÐO­Z)9Äæ’]»è‡Å‹��Æ%J„V®³§JŸ9shß™3aÊÊ€H£‚u‹´¥»w{>!oתU©RþüØŒP‰ ð'ð¼˜áש&jÙ8n'ãWòlA6 >�òà>ÏæN, ºfƒçêDýÚ±qèoû3‡¡y×]áIcŸ+r�OC„í�;}94rÛŽÈÖæN êüÊûn:ƒp ][{ú„¨m%Jሼžíø•»~IhÞÅlÀõ�Ð}ó«å&:}44mãe¢‹gÙ«àíдê žº�­ÅÜ�/‘R�ï—ÿ±Ý_©ð:ÑÙžk ÈÆïçà~ïÝJÔÀÆÀ*k€Ù—õXUé³ü¯=æà ¾?�í윒0©Üj©Ïõ} ª½;užžçÎØL[££££££££�ÿ®ÂÐ`‡’�GŽÐ•;ìFÍR§paŠ-šØN/•ÍÉ+Ð�Œ -Zˆ:}atJŸ4©S RYœI‰,Y(mb¶´†²„Ðqzõiº´óEO�Šu/æÑU…ÅX=‰èX9‹¨ÿÒû†ôHã‚4/—©_ŽdÃ1Oé¸ <ºôÿüAð‡9dòZ¢|ý�Ã9М½136Q£ŽD…K±JôÁ�Ò¸¯ÿe‡å1ÿ…%¼=áõ ü3QÍærû}XÂ#¹$¿z­�é¹{^Õ°ÎD³ü€�J ˆFÌ“õŸð1:�7a%Ñ'ÕÇÂH5°�ci“¶²—Le`…Ÿ%YòpÙ!µ'çFeŽzºªaÆj·t´ñdëÑžkqedF6ZJüè@®2ßó¶r€Kªtrûá} ³w³Ü‡ñ@N ”a µzÈÃ[q©7üƒú}ÝÈ­{E*ïöøŒÙÁPšœ½x­‚H¤ûÒ�æÖ6a½¿mi@@IDATQ»êò¬KÙ°–ùí?ªoTßw"š=Vv¹˜A¸¬~†CÌÓ¾­d9ŒÛ³Øø„y}çƒwId9À:âºÿ@Ô¬«,Cj² ì¡)ž0çUÚ$Dó,˜,ùjDeŒ}ÿy–HiöCw™Ú Fzˆ>&YâþòÀv_Iy\6”5éìZˆvAÔ dÏM¤WÓ¥!fàA Ÿ|üü+¸‚ôu9ô s�ë?//ká™õwIJ°wóíëÒÈØ��,«„¦ÁÏz.gûèp¦™°+ww =Ñçåäø-‡¨9]~D4¾¯,Aš»o|T�`dË% &ʽ°YdØ‚ôu¡•6+<é§uE¢]¿È{‡U£v�¾ñí@šË7-* Z™šü{g™k½»;ß]ëU¶ò°ðô8wÆfÚ        üw5ðÞ™ë›Ó"Åç(�N­a'îQ"F)¨91‚#t©Í©«n3Gd3§®WÇì;È{ëVQ6©U+BÔ…§â ÐÑqút:Âi¤38"V&mØ N?å‹/(ƒJt \ˆÎ€ ÅRM)YÍ©«Fú¥®jôÑGÔªtiQ…Ö-8šã ¶ü±Læ´WAEfˆF~‹· t ýÆ©å§è¯}q®ü)ÍGi(s�Ìä3ÀÇ–£ãø¢ãôôîSJU4�]{–®ì¿BÉò&£|­óÑëç¯éàÔƒtýèuJš+)íV”"ÇŒ¬_ªØ>±ô½zö*@yÔ8Q)c•Œʬ;îŽÕz|HöÝ:`Ì…!_¥ê�x&Üx~ƒTÞŒ0öc:"?yeö.O•>èžÀsqhSw²×ø6øð#+<Óalv&hÞ€8ñ‰ÊוÆéýÛˆöñã Ð! ßžz_¥L¸œç×ÍÜ–Ûƒ»† àÉãp¢dD>WåqH„ÔAª¬¼ ²Æ~ cô›‹_g™rÙ·AJ¤�ëe]n6>[=×A¿†ï 8AÐöúü˜½ûa¢i,` V.¤Ü‚À‹Ç*AÎ@x§bLHevùœ¼‡y‹±ê¾'ˆ`€�„ìf'Z1SÞ Üèé5|ÖÈ9~oJ|O3 —Eö�hD­`^´,#Sz$IÁÀÔ©/œúø¢‚<;¼mðýɵ2~OìO4iG35•:Gú$•6 i �ª÷�k¾xÖ‘"s ¢L�“÷ i¡�& ë�ȬÑDúÈfø¸N”­ _‰“m»xÞÈF}#ËÁ¹Q¨Tà6ªDo;‡ŸÕ<<BC5ƒw‰.Èm¯<åõrë6¼¦ß-=§1/r–œ9Ñb°17¥lÝŠ=éshü¬ãÄþŸ¿üIw\¤›'nR¢l‰(]ét”8Gb[ŽŽ»çïÒ¹Mç(jܨ;El:<ã0ýóú‘zêÃJÒ‰%'èÔÊS!RÊñYJWÆñ»´ûÝøC~ãŸÝ}F›{nÃÉÛ2/%/ÀC“,µ²PŒD¬,–có�ÑóÏ)Nª8„sØÊ¿üÞö>$Æ’(k"ñ-F»[§n‘ïv_æÄùá<ç·œ§ [.ˆò$9“�WI/J[*­m—ªç>³ö ý}øoqÆ‘4wRqÍQâð‹&”ÄÝy ?V°C¼ÎÏ�š{xoLÛä88ap¾x²ë&¿+¶óÜåú3üEÒÉ�ãÇ™¸ûÍ…3úVòƒ•ø6,)ßëªk€»xoØ Þ‰Ëg8j VñSǾ¾^ô³j6QÏ&òÊñ ÀíÎ{ßu|Cñÿ ¢ q_iðï>þi¤à݇<×iƒo=ƒlî_éê|ºk—HÜ‚ySØ8—ùw¨mx Xxzœvj³i4`4`4`4`4`4`4`4ðkà½:^ò¯µÕLø=•Ž�çÎÑ?H§Ä?W¯n{kÜ:¢3¢ �~ òƒˆ\Pbt€€\‘|wâh;ònu|pkw�Žœ«ÆˆB൨Ë@G3# M>þ˜Z|ò‰ÿ)u ãÓ¢EÅ5¾|ýZ¤ÙÊœ$Jœ—8¥V“ D3/N-5ã+¶ú¹(o è¸rà ͯ6Ÿýý(ÀHãgˆOIr$¡“ËO"#—aÝ9w‡þ�Á ×l™ñ“TERÑó‡Ïý�@(pñÙj‡îTÛïã}OÏîñ/IM‚##÷d¬Z÷!ÞtèX¿� ›ëËS*ïuwãn§:c½~,ˆ‹aDF,;Ù¾–¨s]Níð4p-R�€d:fœÀu(�'-Çù§e‚ù^rlÞlóm^J‚\Ó·Jp `i®T$ ô‹ùP€ I˜ë˜kHIÂò™Û‰ò—`’ó®2- "C`¬‚­©­dÏî/a@ƒ!  ré;{ôžaðÊS‚=Ã&­Ökå6¸D\ÍéŽù�ç÷tß}¢èÜ÷›ûð¼XÅj ¶ÖcÀf³’°Vµ�®šw“ÏÊàù�_Õ:Ö®üGx¶õÏ«h]»uôÛ”ßu€Tˆ»GðfÑÉÈ�Î9JË/å W ;€„<Íó°ATòâƒHP‹-(eᔢhõ«˜¯êƒZ·ØÕ‚RK-š,ª³ˆðG‰…º]ëF‘¢óËÉ"¾>¾4ã“¢´Êä*”ÿK©Ø“ÐÚ¯øÅÎRü›â´ëû]b[_àZË+Ë“Z/•Û—÷^¦e —ÑÝ <Ù-/m<ª³°¥(�ÂRófvÝ�ønâû‰gÏ…žþ #`Œo1(¼ü•¨ˆ*¼SS§wD_©zô‰ï�ÈçÉ7×ÊM¤Îc·*ú`IÍœŽ£%ˆöv^ô°ýÂ)9¬ëß;½èe*RP/Ó·á0c[g¢ó1LÃ;Óqu¾×]¼˜–œ8AxRVúðCúœù±Æ¾3ñ°ðô8gã0åFFFFFFFFï–Þi ãOæÙ˜ÆàƌÇé:bëòMñâ4Ô/ò@/Ƕ»@Çt6à7;Vx#�/bà§~KîËèX÷ûï4|%[¶XR&H@êÖ¢ÀÍ…»@Çæº|¹8ËÀzõ¨DÖ¬TwÔ(‘¾*}’$äݦ�ÿt £mùòt‰¹=V3wíÐâ è8ðçŸÔ}ÎѦn‘"„>\èÁ9ôj'Ø*–Îovõî”Áu´×háe Ð"gÜ”àÃc ©Ê†6¤nZJyÒô ]��(0¼W/r?¯9„� àùÛviÄž²Þq´n”Oá%9H�ÎDžðTUòå·DíÊ=xZ"-–àî°´dmàe‡š²oWadµÊ6Ð~"K­×ºn§Uj ë ¥ÛGlPƒ~aÜoÙƒ¨Ë÷Ž^Á¥‚(%È Áùq¼.ðà‡_—y$™*"rñ¡øÖóX SR—õ�,·±ìÕ”ÁŒYrç@ÍŠrKœ;;ÿ)‚Ö!\‡ˆ‰7%›—I� ýÁC~à1[=�»Ô#Ú°˜(-Ï‘ù¿2÷E¤btÜWDFq €K°®vÙ´M_m8ƒ~0G�Ú ÛˆÞBWP¢ÈС·5lÐ Á3“ŽßqÔO/Uóf×[¿ÝJ;ï�" ßD/›{ŒžÜ~â2g@ ýi>NCGç¥^²’Xb%�%¢.ŽÌ>"¢ w,LÆTu'—�¤Ë{.‹mœŒ�ù†âüºêPˆâ¤Ž#Šq2§¢üÿ æ¬š”«q.½©Ø^Ñ|…ˆ.Òíj7R‘:Ð�†1“Ä‘&£E¤‹OÐí³·ÅñFW Â� ‹mµ@¤¦w1oá”!rÊÙ('%Ìœ�Õrxæazõô•8¾ñèâííM›ØAÅUAìtŽœ�5j CÜ�•øÛƒÈ.p3­;¨;P¨„ôä÷E£rûŸ×à%xoÁÉ ¿Ge®(ˆˆàé7ÿßÉ~Ýã8c³¡cé<4`ôŸªÃÀ5¾ÛJjµ ä­ö®Ãƒ~E ÀR¬<;Tñÿ îˆIðSÖ|2-&¢Hñ}W¼HM»}=Òy¯xoí(çÑÞ;®Ë»:ßÛ¯_Oöï0Dv £%;e¥át«x XxzœõüfßhÀhÀhÀhÀhÀhÀhÀhàÝÔÀ;ts”ÏÍ÷©2ìD¿·~bâÛÏíZ9Ê`®žCF×ÀX"*gö.y @‡;Kä‰{[8æ ÒÄ(Ñ�*U†µ2ØWªÏQ X,¼p°¡ äò¡Ð÷DÝåz4’=­=%Ó#!õ €&Ìŵó8*j„äµ)™\¶ë3‘ûüJn{º„ç6R’ÄÃXJùÍe»þ¤Î kd¨üÿðWÜ,õN":R¶CtæÒ¿9€<Š ]'uwÖþM”Ã;@ˆ`%kä²c-™ž ór8ßÜ[ž/D}Á`ÉÈót9¿ìó[E"!›nøµkïIÙ‹‡/hTêQ":é›û4§È±øÅÀðþç÷ù¡aqttºÐ‰âzÅQ!û'îmÛžhK‰²$i©=‘²PJjõk+Q§/�Jqdr~I³Ô]TW¤�Òëõm¤…“v Ý¿tŸÒ~’–šnmªWÓËÇ/iDÒ W“\Ts¦ßË’[é@RaµÜÛR|/ÑÁÓ;Oéçâ?ÓMvˆ�26u:ßID¡ˆÎù[>­È4‘–iºšooNHu¥i¬¦äŸ"¾Óˆd©þsuQõ9§Ýœ6mšjæÒޱ™ûÌ*îÌý¹À·óT|ñ¿UˆêÀ|Zõ‡#Zß%œâ›ŽŒ•G«w*¾O;ʱåé7Wï .€ggiíô¶ÖmÔ ‰º>ø=×ÖÚJ‚Ãê½ñ>ëG�Èð„T€nÉ*Žw·Ò$¸<á†ï“3G ÕVÍ g€›jg]»3ß�]¿NÓÙ1mî±ctã±cRâ÷JYþ]„(�j™2Q$üÓÉâ)`áéqÖk3ûFFFFFFFFï¦Þ ã$§IBôÆLþ'ùöÓ§þÚŽ!‚øÇ¸9{•c� Â ÕAž—‘¦iâDÁcQžÁ”ž5å�r; çù�Sh ^¶ŒîiÿÌ«óÇa²îŠ<ÞœF*2ó%îH;UmØ0zúâegŽ� ̵éy‡t¨X‘j*$¶­@¢20æÍG�  dvûö”"~|§S·l¡¹;wоz2¡xy7ÅßÐ16ÝX‘Ê^¨m�üU�TV£R�"¤qt”QNppà‚‡'.¼gK *E%ú”:�f´0êÔ™_‡²×Ï.Ê쮞Œõ“¾wïÞÝî”NËÊ•+Gµk³¥2²q‰L….>k'y\í4ÃÐ ¾ƒo'<òêEi€F©5u“"JFª#D{ µ.H�´b†,Ù~Í‚¨6[WrÄ…ŸÑÆšålô¹tPÃ/ ÀÊó^+8FÑ�“Ê”GØßä�p©ˆú´�à ꕤL+�<0ôàZ¬‚ôFm*ËR+1µîk5þc<ùØÈ°ÀÝû¢Æ€1ég<[ô[ðé4ôP«Ø‡kÓEŸ+s÷å."�ÃbIpã»éÌõÒL–å�!uª\Ê`LöĤ�Ãn»?›–ɤjš¸*0¥&»gŽ"~ÜTú˜^D˜ÏŠƒ¥^¢ã¬3å¡«RSxCŠ𻀜©Ñ�r 9õáѽ—Ëáq7:Jp©§$ Xxoã"\Dåÿ—{öË!3\‹¬ï¢¾ s� *´eƒPÝ?“gÁû`¨�àžUH/çš5" í玗JØÆÜÄ}[rdÖZÞt¹8½Ѐ”V ¼°:"ňD½õÇŸÖµ_GDü€ú¾èË“�£ê¦ÿN+[¬¤„™R»Sí]¦;@Þ>�� úm"Ïw‹êT¿iJðƒà':ÐñQÏ�¨ô�ÒªJ¬U‚”Z�†kús€œÛxŽf—Ÿ-Ê«M­Fy[åÛúbA�‚�\Z½ô×=wî\ÚÁÜjîÈ8v ‰Â©MC"ús�¨¨:~Ø¢&ðîX4E¾¿qD$ˆT¢§ŠHÕa­À�{ØÐ­ó`­'ß\ÕÖõùßHpi9Kk§·µn7+)TùÜÝü-(ªöëð¢q‡+ß}+øÿC ~K�(Áˆ(Çš+ÑyÁŸ5è¯øc¾îìYz¬=s†�~XI’1¨ÿ–hÅQsÇóË—¥_¿~ªÚ¥µ:\R“id4`4`4`4`4`4`4ðÞjà�:N1È�…A]ò3O"7äÈAñlÒèm­Ûžè`@¤Sš×¡ƒˆŒpt =@D=øp„Åyöd² RC�g0"zdé‘i­Ç¾;@Ç>þáЃ°C¢€“òðÙ3ªÎ¸KM2ªIQnt€X¼ÅäÉÐÇG÷jÕœ:IïZµ¨lNvwuQt çA¥®JÏÑ0!ƒ¢žœ"·÷ð²�ºô.êMÈíí è¨<©2hÃÖKjè©3&d™ HO«üȹÆ[çÔ¿*èÉXÕ9Âr ’c¤´€(#¯Ü ~ 2S¤:‚ßú?ÆÑC±„Ò#QÏOŽHåØˆâlgÆGô‹þ!+ÿ�©häž\Nì/I£±oXðM%ðª-ÍÆhÚ«6bN iO pÒO ,¬‚ˆŽé#9 ƒ“.YÙ&‡h+÷¸>N&[*£?öà©�´ˆB€·=@?GHÿnëpŸˆö€‡9 eà9±öïߨfcÊwDãúÈ(DÅ g¢ƒ"mûËôMÖ¶úµ Ú¹ã‘båÓ‚²%"!�^  † ú©Ä@]™�1ÕNî…|‰hН:ú)ËãÃ㳊nxSyÌ{5u¤ÝBZ&Ì5¤sx� ¤® wUs|0svqJ‘ DåÓ9Î0t–$V<ŒáÓþŽˆ!GK÷¶ôÔ"H5æ,òCzú)x’#�@=Ñï]ÜCÌã9‰=Òéà JôȬàH˃êÇ�º„šþƒL` Ñv2¢ç¯)k¥"ZT[ýž÷džõöª&ì×>ý}Èg€�8qïǽñ^è†~; #FâÔý:+†E�HÕóOR–?þAKê/¡˜Ic ^ Q¨-Ü:î_¾Oc¼Æ¢;Jö+I%û—ôïmf©™taÛ‘>²ý™€JÕ�Ž–{Zø°tÑÇQi|%*ØN¾@öŽÚKºnM±=atñ¿Œ(àg‚¨•ªé«ð½[Oüa�ƒ>;ž?H§Ïaœâ=±ƒÿ½´‚ôÎRzúÍÕG �ï7¼0.=­�ÞÎÙ6ø�tN­$)øÛÅ×a•ð üO€HE|3�^rgàŸ VµØî#E¾õW|eŠH¼«!ø.#2¨ÀÇüžóE�úzŒætŸ�5 µ‚›ù>�#<¦sÄüíw^×ýüÎj€ŽPS¿éØhÀhÀhÀhÀhÀhÀhà½ÔÀ;t¿y“²ûjã.ãh…ì‰^ÄÍ4=êz tœ½v�>Ÿ2Et‚q�t¨óa}‹½íûúÒÎS§h§Þú¿jXêsº§/9í“3qè@)+�ÉœŠ!K þõè'm½½éøåË‘-¡+9¥U öD´:м÷‚´›Ç‘A/èØ‘ö2€2rõjÑ@‰V~Ü'Ë9ßîØuëDy¾ 4wUt ãŽá{hʽ‹÷„ÁçÐÁ ýœŠ<ÕÐQcz ÊÝLŽs|¦ñtûÌmÒA�óü(Œ(ÎúWç èÉXÕ9Âr­H†qNE¬ìêùVà‡yñ D:†:„Èy¢JokxÏË¢G2€'¹©­îËR¤|²q¶­ÆÑN<­a ‚qÁÎТ÷©®OÝHTÔæ±U^‘®�ÃшhA®sŽ­‚TF7¯Œj™<�#ü,0`À�aÝÀŒ:DŒ =Tµ&ld¯Ðpf=û*ÊÁ.Ï»µ½®ok�Ý>@Œ^˾$J�D’Œ£íòé2úEŒ”þqXA»s¸R ¥I i´Sía<Üä+¹7TÖºáMyÞbŽáÚ!*]™žâ äÁéTÚ-]CT^6b¬ƒ~—0¸C¦2P‚# IH¥o+&úõ–½ …ÒW'p°Eº+¤>)X’ƒm�@ú*¤Íø—,5§}º°Þº§ƒAHYæØfíËÕ}]NœY;œ¥òÛ#Eˆè­¢óÜ Põ¶DqZèà„>–Ü I9&‰"; #nš¸ÔÉWZ1�Í?FK?[Ô8µò!âÁYÿ:À`Q¢�EmÏ­<—ή;+¢9�f ‘#øÆ�M;VüTæû2T¼GqÕ\¬u £óÅÎþ¼ªÑ¿¯ÿ¥�‘ Ew\XÝš‰Ó:¨š»F:-¤Õz[î | DF*Aþá��w@cVö­Òü~úHÞ$|w­RÖKòNYy~<ýæêýëdâ®8 èǺ³ôƒ€U³J­ Eàô­îhH¦œØŸyà–Èÿ“œm�ˆÕÛ ®®2²äm¼ãþåSï¼x‘:ýò ýþ÷ßþCëï·e€•˜ ££££££££4ðN·Øã§ loàtPˆJP’‘‰¾›r©&ü—Ò&W²jg]{ t DL r)§ÀwÑŠ��ÛŠSlîÛW ÖóY÷w1ˆÐ‡ÁH²xñh>ƒ ÎÄU Zé8Hrî|"J®0q»po€ƒÃÐq’¹ÚL�*š×)\Xð‘Ø{9ä¼ç¼y¢]p€�:·Z‡5ÐqýØušœs²8}剙ñU5ÿõŠfLŒÊd¥N�æçOdBfŽÞ8}‹ªN©Jù¾È'ʦä�B×~¿æH�xÐáéXž�?^�Æ¥u|NM�çJH¤«÷ùý8ßu“(^B×zƒ7¨JOd%ÄV=�a2€§¤Jí1¶7v‘å‡$°ãéÕL"0mýK¶Õ—¥RÊh�Z™¡×Øo«èÔÚkaV©•‚#?ÖÏ/LD^@Òeáh�r[_~UUr[¨<Û=�~†h=ÒE?Ûx]Ο(ÓïÀ«Sð© R&9e Š,V‹ôZH³…\òÊh§êìÖ+ŽJÒqEàýQE¦øxˆò:˜P 2ªG¼ —œviÙʽ%"ƒ>åWÖÈsßa°<zù²§6°?e°×�û{x|“tBš.å³bÆÍ屈>�ñREo þ™¨¦_]·úìaÎs¤õˆ¶€”õ’JgQC¢‘ Õãì9°ëJ7¾9#±Ó‹ïÍPyô‚}D9 Úõ$Ë_t´Á½W”óNƒ©)Ê&¸qóçõ›1ö�ñ̪ônÎ@F\#®À"C�zìmÉÂÚ äàà­è~£{ aÜóe@Ÿy1 ¶@ss€£òÇŽÞh°„b%‹E]¯ve§W�¦ùÕç¿Q ãäò“´°ÖBÑÓ- ,”JKŠƒ i³º\î"ÀÑÀo¡_ßúš¢'ˆ®W‹íAQÑë¯Ez*¤©‚(g��Ãá 8É\3³¸þÛ·oÓ½{÷‚kî_�ÿ­ÒqtlHE¥,Â;xË%×{Ã{À)<ñuÕæ=æ?Dç¿É7Wö&—º£ÆÔ7D?ÎÝí𠟃;%ÐÝ }%î—«Âñ…eÄ+¾¹ˆJÇœàÔ€ÿ& �½õûQ:JØõ=í{ŽRîÉßîo&ŠÐîve¾üÌÍ:r„fòßù»wý› qåŒ)ïéÓ¢Ìþª1FFFFFFFF.hà�:Ôu\bòGooþ™ÿþò3è£Dv¥Ò¦y]k2¡vô`ˆ«Ct»t‰ÚÿÌ–*�ood> w�€ŸŽM7øzðƒySŸ>"zBtjY¸ tœ¾z•Zÿô“åhû]E4î èÀQ]fÍ¢Cl4�ʺlT¢MÛ²Et¦Gt Ò\A²rtͤV­Ä¶+‹°:žÝ}FßÇç_s,È÷�¼ßVQž§oèðt¬ošŒÜªgû�Y•‡vÉÚCOíy&ìŽ=ËÞê5rÈÝ£·]ÀÓ 9¦!zïNuØã~©U®XE'—Ö�åªÝ>æ£ÄrÏÕt[à×@¤ �väæ»7}ág[ ŽüX�C­árY€Dv×ƒÈ DpÀ˜�s#‘ 0f¬9� Dõi]ƒœÞé �É8Äá6êœËPg'H¯…´Fv†7»öª i«UÑšÁ+ •6IÀZ1èþ ![z¾„Ñ‘87D‚·"L`ÄCJ'%Ê`ƒ<™�É�\1ü¯l¿Ù²œ¨cmÙzéïboëñ �Eª6H�Q<¾ÎrÛÓ%¢E�bkwré멼†Í‘éÖ1`þ)²òQ‹d„�µ ö¡gŒA<“¬ƒ1ìyÚrõ¢ƒÛ &ÀL;7 Èz!Ý jÖUnëËÏŠ�ç$mf~ÖNê5a¿½¾ãzÚ7nEˆ�¾}öm \9p…¦dD˜å¿t #ø¯Àƒ•³QNª5»�ûpÝùóeª–‰¬lè:t £ÝÉv”0³ßCá×òÕÓW48º|Yè)±6}½‰v�Ø-þ¯êý¤7EŒ1Pßvo’ŒÜ®»2¤nÏÅki ê}b=þò9ŽLÍ KGÌã†â=‰÷%Dq!a;$ß\¯Dñ8û^©v!Y‡ýèÑú÷ÎÝ))¯À)e�lÅ·¤ñ�…û‰²3¨o'kqT£2æäÿqŽØµxse�˜Cp §ó¸±Ý×—þÕºöŠ—Z‚¿�ÿ’ÇŠeÈÈ5ݘM££££££££×5ðNê²^³;Û/þIS¤µ]b;%±˜ï¢^¶lÔ¶`AÊã„Û!$@ÎÓaút:ÊaÖàÖxÍç~þê•8½«hÜ}Î:À×�f‘àJe#®?oÛF³¶o=TËŸŸRq´‹UæíÚEw™7$&sš¬øúkZ°{·?€Ñ¶|y¹’C.P—™3Ån<&Äqè€Þ?;V6¨›Ñ¶-y%J„Í`%¬� hH¬!ôâÑ ‘~ i¨¬2._ÎÝy랎õmÊËã¶ã°êYí람ÎÀåщ+Ž9R-©(=Ý‘êë ‹¬«'KF²3q¿mÕF%œ¥¾RmÕúórLêºÉ9ÿ¼ó‘^ ù±lpùÕ‘HEl¬%ÚÆFŒvÕe)È�a`ÆkÏ.êÀz¬uFùôÌÝÃÌð‡7¾� Jz†è “, ¼,‡=Œ¸DÀø­r½+Î\WÁØ2ZE¿wŠ«E�ˆ< ×KÀɃ>D÷¤Ui³PÎ �³Btƒ=rÒ#7½3iTœ9v;Ò>�çAM�F Ñ#v¢(gø°n>¶kåz™-¨eíQç­@„"�¬‚9°²ì°ô$–{—HÑâb€,Z¡-[„B 0Èò£lÀË!·­ËÃ{˜s£˜,í=^Î]½�Ùc2ŒÊoSöŒÜC»mC@ *¤¢Òå蜣´¬ñ2Q@ÀŠ’1"ÄR{nmÊñ™ÅŠŽÅæo6Ó®a»§H½ÅõN�«P¦ª™ ý¶t £þŠú”¹:£Lš\?Êš¹&‹’êÞÕ)O‹ !ùæÊä1ú²s"ÐÛÙmƒ; @¤ã0Ô[%¼èGçj *:Óª¤ ,î÷ï¶Ý»Q? ‹J�Q–øî8‹´hð¬F3ަäÿ/BCös¤øÄh)ƒ�_¾ô?E$•«ÎjŸ3'`Ž’Âo"%ž’Š{zœ:¯Y        ¼Ûx'�]åW9mÔôÇÉûÐ!º ¥QùÏÕý,ƒú¼R c?_3PatœãH‡?8ò£ÿãn` ’£9sŽ<~þœR'LH³Úµ³vå¿ï*ÐÑòÇéç¶Å�ppIJ!hÿ~Å ú…u!ù þá¡"5¬@Ú´™6�Nþõ6ýE:P¨ótÌ��ׯ/ÒzùÀÏùG øA@„®äm3>™A¾>¾%vêþwwŠ-¢]Þs™¼‹y‹ý·Ñ�Ax2V¤®ºÌzVü/þÄÒVÅv#í›]WH!…TRÝ`,Käm7@4­ä:O­R©ä^6J‚ß@�DyÈLI¤­êuÞx ÂQ ¼âe#%ˆ…:XùôT 0Ù¥¾Rý©µž/|Õq¢ôYU v0al"pŠÄ`ïu�üF×’UdJ'ÇŽ-�÷©’^XEוªC*"\›•{DÕ;[H¨Èz��%¨´]‹"BZ)ÈÖË�ù*d�c©"!>Ì. ßÎ8OÀM¡êô\ïy<)¼ˆyÞˆ"‡Ö=ïƒ2ªË£‚_ªû�–à ùéÇý�'qIÖ탻Ódé¤éðž-YÕþ<Ð/@Ÿ'lXRiŸTZ/΃4Þ™ 5RtÁÖóë=Iöí¬­+åàæÀ³·œ£ÙjÈíà–Š8Ý Òuµ®(Á¶àÒQ)œ©É�¢,´e|_>?KˆxÂó CŸ�€À œ5ˆLQ‚y pqûZYÒ��ÇÍ»©Ú·³öÝîK3JÎ'/ýG&öâ�&³Ëͦs›Î‰’Ð:À�1(ê B”F©A¥¨DŸÚÙ�o"zc|ÆñâÛ)z$zùä¥H…´Uÿ‹à0lªt #kí¬ToI=U%Ö›zpäÆðÝb»õ¡Ö”,O2±�t’³M$ŒSE�8PÛÁ5 ui«îóÿe® "qS§NíjsÛvz´â¤Õ2âʶ¡M¡J‡èB|k¬ß·î Ê!zß(|«”èßw¿¹ª¬g”•ÿCoãl[¥”Sõûðžã÷¥U‹~ð½PéóD Õa’”Vmð÷šßUH¦@r=¤ïdŽÿ2à1³F3Ñ}Y†tVøn:ð ½x.A}€û¡!u/‘ªï9mj+þ�ÔŒ«%fg*;ñ°ðô8»1˜2££££££££�wOï<СTÎÎK´™S-ýÄQ+O�¢F9sú0¿‡’¥ûöÒ.A¾(S†âD�.¶³Á·ë!e‘"Ñ™´{]Ïž¢L_|ÁÜg˜œ\tl9vŒ-]J ¹¿ºÌq‘�Ó:¥Iœ˜^qäÇŽñÞº•.sNhH­B…¨CEç–W€Žëü#ýÓ1cDÙ˜¨}bË–bÛºØöÇ4`ÉQŒóÆ�3H c7çÇí=~€n¬@Ç ¾¦ú|î;�تǒ+MjP¼8eJžœî3· ŸY;vP"Ö…>.è(Ë÷*·——8Þn‘–u‡ÔX!•3kÏм*Ò%7s�ÌTg^vܽp—` ‚1ò_:<kHuäÉñ_–†iðE 0é«þlàí, ðH‘„(KT–éxÔ9àqX"©Œd€Áfè,6 T‘`¼êÁÓ€60œ#Ý�n¬ïÄàv²§Jõ9-ƒ-0¸‚‡âëÏˆŽ³1Æbüh·¦õÀQˆö€W,úF¤ˆ+¢Çk4ã>¾çTS‰äØ.ÓÁ0ÑÉ�áP8.ðyl0 ””i¦`˜º~…‰GÙx:�¯@P"¶ÕÁ޵� ÕRn)xìdæ(&÷\/ù `X°ƒÊñߘ˜™ 0‚A‚J9¤àù´�"ä‘�—Ãøž´�ÀöõH‡ à 30¼?ãm •ë=N|ž'·e™J›3¶4öã>*}‚à™ªÏy”ëKз¯!õ )=¬äØÃ»A‡•jJ×GPÀ�ïi6e–Ǫ´O®•�ãÈRÔ–#v&É^Àq“<�ósqðO(âô”éØX6Góâ™ÇöòóŒÈ%<›¸7(uÏü风óàYݺRîcÎ" P „Ë¡!ŠÓ&¨ˆ%œÏ]!~>ñîÂÉÏE‘²L²ÎόɊÄmæù«xT°ÿ¶ä§?ÑÕß®R¤‘¨ÁŠ”®L:Aʽëû]´¥7ÒOBè@×*í¸=pŽSˆH u^gkÞ«z�ƒˆÜNt  B…±¨P»B<áxn1�È¢z‹èõóׂH„âº(,..¤ª„säÕ³Wtnã9Ú?q?E‹�ê,¨£¦Ûý>'Z2Mžr 'wýôH‘ˆ¨Ä<ňæì |\åLò[X¥¡ãùE«�|sõ³¨÷YBþ~@Í”Ó5¢·³n_½èH)‡:¼_6œ³¶’ûáI?*®NCfÈô†x?ýy\òl­˜É÷œßK Ò£Í ðÿ;°@šKïaü~{-u N(DB:8œ0 >#DF�%ßïîÌKgý£@ÇjþMQ;kV½ñ±—ç ÅSÀÂÓれ©40000000xg4ðÞºÆopš%˜gõK£´• ü ‚“ì Lð ‚:¶søu¿Ešû'wn:‚;_JN/5íË/†³¶®Ë¸·~½è¢YÉ’„?;yøìU6Lº'å\¸Uòå è`;µàÈ“ 7nøwg:PШÏÂ…tU#<÷?Àoà Àè@‡µ­u¿çëýÚIt޵m�û|A³Ê΢ó[Ø5ŽyÎc§ˆM÷.Üž¦0Œ âMSòMÄåjlÈ/þï?Ð.§²ac•.m�·•éH<«ÞWXnOÿ�è‡îŽ3²*År¤GRb�Ê@¹n<Æ>Œ�0Š#M†Jx�ÇM ÷Õ?æ«°1ùН,Áù`@G€Ë@6"�°yƒÈ³z6*Ì´k¸ ‘"ðþ,iˆàñ€kK!:ùñ�íÄÏ£(ö_À˜€c‚(�¡ ?¸^gú]~Ú!å®ÛNô´L8"i`€FÚ*%õ¿âXÕ^à5 )5sIàÉZk—2 ÷‘ꔀ1ÀÀ0Ù º~¾ïD4{¬ŒªðÞ,ëUÚ$[føÈ2å¡�ã&<ä¨G:�Çåü\À:÷‚U07*e”c®ÓŠ9Q$/ ¢â'bÉñJ´JëæsjÂÏd1Ò>aNƒ¿Ò‡õÝ€õîL”�©Ö�¶+¤¢ø%\éüÐ…žJ%¨ãðLvÎ`}‹€­TTJÀÒÀ{:'KàZ×KpOU uÞ!ö x6•¤ãë[Ä`Ÿ.ã¿åwÌ`G î/Ò¨ùªjöò³cÄT]X®Ïo>Os«Ì†~œß°ç�žÓóûÏ'Œù�Ð:þt�V·^-Îa]´ÜÓ’Ra«©�›wŒ–6\ê_cǽ¡*u #rÌÈ"å$€ pn<¼Æ/ "CšljB©Š<ß³{Ïhfé™tíÐ5ÑîüÏ?Å×½‹ü­÷ûöf«›�ê.ª+Ú¼�EÝ|D'ÉïÖŽ¿Ý�½¶'ê5.ై$Cê?Ì_€Íˆ*ÓÅÓo®ÞG�FÌW3W/‘ÛðÁÓ…oŽ�(ÀZÕ•­íœ³'<éßN¤é„󃼷À­„(Qˆ5rï·z p =!ºpŒ÷7ŽCº>DLBìÒòɹTßa½ Ûø?ê·ÇÎS^YÛµŒ'¤`‡§øÑ¢Õ,@�°°î«ÆÖrë¾jgÖFFFFFFFFáCï%Ða½u;”èk%¬m°�¨‚1Íš‰ª ß}GÏ8å¢=V2Ÿ…U`o2q"]¾Å–ü+c#sm`}�#H–þú+íäÈ’kwÙ j‘È#Rõ¨!G>Äu²­²|9mdÒ>È’.]D”ˆªSk.^ *ú¡­··H#…¶ ŸÃÑ�Ž•*QMæ5±ÊfŽNÌÑ)Jš•´R¢ŒZ³FðŽ<âm]’qz$·ƒ;Dɾ¦¡|m®ŽëR¥Š+MƒmóúÅkZóå:<ë°Ho�>ˆôj_ˆP·Â~A| #Œ¤Ü¸}ö6ÕœU“r5fË/ËĬéæÉ›Tmj5ÊÛ*¯(û)?{Ú¼JÇV¤B ‰2,&d™@·NÉyâ_èd£ãùŽ/-[FY<«“nä^ÛƒÛü±Ž#Zi2º ­€ë³ÇÈÔW ÜÀ1ðL,V^þ@Çñv‚è�>Í™ a�£i²ä‘<ŸTs”ë[8REÀïEÞ]=ØKV7HÀû¾çXNõVYö¢:×.±±ž�M—ݸø,ðÎlÔA¦ÄACPRv¤ó¸‚Ù\…�·†G'¼Ñq~«À˜ýU_æ-ùTG¬õú>€à28 Œ¿ÎÈÖ‘çûûÎDˆš° ˆkqO`xç DŒëæ Ð7¹!�Ø ¶ivZKÒpYêÞÆ1HΤ5œã¼‚ó>”×4òÛÃÈ�±Š¼ô刦np~œâ〡jÿN�ä£q�°9a'ï0/ñL ZÄ´!”tùKZÃϬá¨ÇªóD´C�;N& ¿7�Í?&¢"îž¿K�¯?æ÷²t€ORF¥,œ’Zíeщè@G‹�-]+¸I�Î*yþä¶=à;‡ì¤Ý?ì¦ùÁ×éˤÑVbËð[¨+¿0÷q0ßU¹s“�I,[ƒO¡F³€Gê)öfl“Q„z‹�|sU?û>ûð»âæU‡c¾-L�‰žæmœqö„GýÀ ‘�ÔwVé©§ðÝ„c†.ä¿i,y8T9þ�@$ø>Z”–¥ÁqláÛâr€ôNð-‚¸ñ*�x³K+`aÝWg³–[÷U;³60000000@ÇÛ¼•7< üÝf.‘¨‘"")’ðÀŽ÷Q`î¸Æ‘ç9 $“µ'އ¹Â¶Ùÿ”¼|ü’®üvE€0ºÀ;ô¿*ïÒXñ)Î��žˆÉRK/Ãà80à…Š€øQcª+‚ó]½(� ’=¿k|®ôí¬ ŒH'�(€*¸ÆàÆ%ŒºAZ¤ü@Ú¬]x˜We#½X³7-R¹"ðîØq��×Ïé,Ä•>]iƒè—‹g¥,NÎ9žBz¤*nWú0mŒÂR/Ï“À,"‡vü×éo¿A‰³'¦øéãÿ§‡ëëÃü"ŸÌcÔì­}žö‘à߸}ú¶¸V6. î_¾O7OÜ‘±S±Gyºø�")]êë=käé7÷=SƒÓËy[ú¸zþÿ¿à+Scâ!ps8ü„ÿ�z€Û#3ÿÿô¾|g=,<=ΙŽM¹Ñ€Ñ€Ñ€Ñ€Ñ€Ñ€Ñ€ÑÀ»¥t¼[÷ËŒÖhÀh œi†Œ¯ªí`¯_xÞƒ€ÀAxW"ìt5Gt¼C8sx¸N€‡ð*vW�‚gÂÈ_ˆAÄRQu»ÖM¬��ÚèpÖÖ”  ¼Ÿð°ðô¸÷S‹æªŒŒŒŒŒŒŒŸ Ðþî¹¹b££�ÿ¸`ô÷"c@X‹ô<�£‰š0¯Ex¤Ÿ_Š'Òñ;¢/zyrdØ^®³g¢U.F)éw©êŽx�è}˜íÐÓÀ“[ODz­CÞ‡h߸}âDHëˆôŽA‰:‚ÒŽ©3ð°ðô¸ð¡Us•FFFFFFFï¿ Ðñþßcs…FFï˜VÎb’Ù¦�ü܃§Ï«ð¨÷s\ 2xvmÎòÂ{Ö[è^®yæWÏq_—ˆÌ9úÒýãÌa£��‘ Nu¶„™RóÍ)F¢ Ãp С4fÖFáWžž~5m®ÜhÀhÀhÀhÀhÀhÀhàýÒ€:Þ¯ûi®ÆhÀhà=ÐÀŽ8ð&ùF²å#*[[’–¿—öF.á·Oò¬+j»Ê�âÙÞÜQáå:Á%sç†ûz©|6æå1òßÔÀàhƒéõ‹×'UJS" •V†b%³a°· ÿàOiM›5r¯>�ûÄ�  „/ (ÀÂÓ«îׯŸ§‡šãŒŒŒŒŒŒŒŒÞa  ã¾yfèFFFFFFFFFFFï“ Ðñ>ÝMs-FFFFFFFa§t„�®Í™ŒŒŒŒŒŒŒŒŒŒŒŒ‚Ѐ:‚PŽ©20000000pªt8U�©000000000000K  #,µmÎe4`4`4`4`4`4`4ðþhÀïϽ4Wb4`4`4`4`4`4`4`4`4`4`4ðNk@îrmxzÜ;­,3x££££££££  Ã_¡»qëÁºóø1Å��ÄŠE>ø tOø{ùú5]ºy“¢EŽL‰âÄ¡H`Œ}ä캳tyïeŠ‘8j_(ÔFìëãKW»JÑD£<Íóxtž°ë”ïˆ? Љ¨Ã`�†éЃ»D1ã½ÇÓÞÿZ±±~!ÑŸ%KMTçóU�vÝ'Š•ÿ¢ª2Fï�^¿â÷ÉC¢ØñÂö’6.!:}„(IJ¢z­=?÷�›DsÇÉã«7%J�!`_G÷m^&Ë>ªDTàã€õa±÷êé+Ú9t'ýûï¿”½~vJœ-qXœÖœCÓ@Xσ_�=F”4QÝ/´�˜M¡�÷A?/ž½zI=替©ÞÉÎ Üoõ&DEË.·–„æ|÷°ðô8ëµ™}££££££££�wSáèØwö,�Xµ*Ø;”-U*P¯žh×ú§ŸèÙKþeÁ’4n\Ö°¡Ø¶.ºÎšE·>¤ˆlÁ�úå—ôÁÿþçßäúýû4eÓ&Úsú´_¨È‘=uj*š1#Õ+R„þÇÇÜà¶_y{[(ü�we£bž<Ô²T©@MgmßN«~ûM”Gމf¶mpøåðaš¿{·ÿ±_–-KExLVÙuêMݲE×,X�j(`mB¯þù‡fúøÐ¯¬ë ׯ‹}4µåöò¢:… Q±Ì™ý�Û~â�_¿Þ?¨�ö+ÒÇY³Õä�Ô­m»–L:@ 2& ö§Û¿‘>í:Yßa=í¿�â§�Oþì`×$ز°kñDDwoñ|�HtT> ÁŽK5¸y�hùt¢cûåö#E&J›‰¨J#6Ȱñ?¬ žjla±®•[WËÖ"³4àŸ<"šþÑî D¾gˆîßÁsB” QÞâD¥kUþL–<òííݸJcKì¸ï×}Þ•èÈ^¢¨Ñ‰~\'ç¨UË¢º5 zx�ï ãÓÃçíà¶«gË–¸wÓ·>m¦haÿŸˆÒ|HÔ¢4¿æÿ‘ÇVmLT¿MÀ3âÐ…?C7®ÈòœŒ¹ö°�'{£{ý¶=ø#lÎð‘óïÙ¢Ve–Ô|-U�±x^XÇn_+A¿ãü)ºþcà36Q¶üDíå)f=êÍïZ�è�D%«M þß§ز‚ßš²z93æØtþD¢Áíd€áÖ½Ö‡ÅÞã›�iDââTµçÕ¦ ,ƒ é xnÞõ½+z‰•,EŒÊ#4àÉ<Ñ�èðžÝˆ|#Óò¿Måêå.¸%uó�8$ŸÃñÿOVðùÍ(PòÍÜéÒìŒñ÷åÀ}á]‰wfpâÉ|®OUï)`áéqê¼fm4`4`4`4`4`4`4`4ðnk \[ÿøƒ.Yì�ÊÎ@Ç„–-E»2úëQðýgŸQa ÎÈ‘è@›-}ûúGj¿|™ºÌœ1.q@IDATIÏ_±k²¶gOŠ% ]¾}›�DKûªªùòQת��4�8‘.rT…5…>d+›&svî¤i~Š3§HA?~þ¹ÖBn®9x�~X½Zì4.Q"°r—#Uú-ZDG/^ t¬*ˆ4ÑO·([{è�KàÚv¯V�*çÍ‹ÍP•°pï;Ð¿ŽµØPËÆqg2u#{ ²õ}”çÏØ›;uùÑ·<7/'ô‡þv~å04|,#iœ· Ûš�Á£½qG¢oÆ„í¹CólK¦õó{å ›Ã \Àgû‡ ó_V– jÔýüŠ_¹Û×8Ú®>A”.‹c÷¾zv¢ §e;o]»ÄQläWR¡ÑÈ…jO®Wó8¾aDI}ž/ß²=¤RñC¢Kß‹WF~?û�ûȯDŸ91°ªž`d=VÓÆŒºÆÚ¥ZÙ¯GÌ#ªÔÀ¾îM”â>àYÄ3ùU?¢¶ý=ïuü· † &Š•èÀC ë½…¦ÁO?OPÛ¡ t<¼ö�F&)†PwQ]ÊV7[Pà —užÌƒ2iä»!(…5lOÔk\À/_Èù�5æ6æxXŠ~­¿Þµ<ßÄx“~h aÿ—…?:×\ž¢Dsv;¯w§Æ‡ÿµÇü�\Á÷²��S&•ÛA-õ9 ¾�Aµw§ÎSÀÂÓãÜ›ik4`4`4`4`4`4`4`4ðßÕ@¸:"ìP²ñȺr‡Ý¨Yê.L±¢EÛÉãÅ£²9sŠm+Ð�Œ -Zˆ:}atJŸ4©S RYœI‰,Y(mb¶´†²„Ðqzõiº´óEO�Šu/æÑU…ÅX=‰èX9‹¨ÿÒû†ôHã‚4/—©_ŽdÃ1Oé¸ <ºôÿüAð‡9dòZ¢|ý�Ã9М½1¯öF‰ —b=$”èƒ;¥q^ÿËËcþ Kx{Âë2øg¢šÍåöû°„GrI~õ ZÓs÷¼ªa�‰fù;0ÈÃ0ù„�Ñ�¼ +¹¬š¬ÃFª�mûH›´•õ¸d*+ü|(É’‡Ë©=97*sÔÓU 3ˆP»¥£�'[�ð\‹+#3MQ2à§ @—:ø0ßó¶²€Kªtrûá} ³w³Ü‡ñ@N  ˆ ðÁC‰Ê|îÒDé³Ý»-¢µ¬GD® ËŽ¿‰¢ü¬ÉNÞÀòùS¢ŸGÈs•aðÕ…áÎ)Úðu J'{¾¿ûš¿Àg³/1@‡½^²ÔÝy€g¢ 0`cžB…çë¬ã_W²¾gNþÎÿÃæ•í­u²4t—ßò{i�¢q³öÎz“g OúAm§Úy·Cj0…Goð{ß&€µ˜3GÉ|½Ç¿I-˾|I´hŠLó‡ï•+âî|w¥OÕÆSÀÂÓãÔyÍÚhÀhÀhÀhÀhÀhÀhÀhàÝÖ@¸:¬·¨ïÂ…´ãäIQ¼¤kWJÈœV±¨Û¬åòò ÐÔèØ{æ õœ'-bÕ9ÍSçÊl!±"=|ާ29røG�Xšˆ]D¢(�fA§N"�–];½láž=4yãFQ”(vlºÉü y½¸KúŸÖÐè3†¯S— €Žm ð‹–ɘ<9ýШÅf]ÀOrèÂ*—+—±ÑñM�T!wnÿº·µàÁ›º¶°«»@RoÀ‹›³˜ ¯gh­òðV\êÍ@ÿ ~_E7rë^‘5rH£UüÄÒPšœ½x­‚H¤ûÒ�æÖ6a½¿mQ»êò¬KÙ°–ùí?ªoTßw"š=Vv¹ø QV?Ã!æißV²ÆíYl|‚AÿÎ ï’Èr€u0Äuÿ�¨YWY†ÔdØC9R/'LJh9DÍéòã ¢ñ}e ÒÜ}Ëࣀ  [.Iž¹6K€,[�¾.´Òf…'ý´®H´ëyï�¢jôâÀ!Ð7¾Hsù¦E¥A+S“ï,s­wwç»k½ÊVžžçÎØL[££££££££�ÿ®Þ; ã"s]xsZ¤ø¥Ñ‰£5ìÄ] #JĈ""'Fpă.µ9uÕmæè€læÔUà꘽cyoÝ*Ê&µjEˆºðT<::NŸNG8�Tb&GÄʤ Äé§|ñeb0B‰t€KѤ˜Bª)%«9uÕH¿ÔU�>úˆZ•.-ªÐºGs\¸Á–?–Éœö*¨È ÑÈoñ6�¤ß8µüýµï/Εÿ/¥ù( e®‘™|øØrt_tœžÞ}J©Š¦¢³kÏÒ•ýW(YÞd”¯u>zýü5œz�®½NIs%¥¢ÝŠR䘑õKÛ'–ž WÏ^(�'*e¬’1@™uÇݱZ�ɾ;@Œ¹0ä«T=à1Ï„;€¤ªðf„±ÓùÉ+³'}ªôA÷ž ¤ÉATÄ_ØàÃ�\Ž‚Ò3Æfg‚öçNʼnOT¾®4NïßF´�_€iøöÔû‚(eºÀ=à<¿næ¶ÜÜ0LÀ@O~‡%#ò¹*�CÊ ¤‚ÀPeåe�5öK³ ß\ü:˔˾ R"í\/ër³ñÙê¹Ãó¾'àA[¤ÇÂøÐçÇUd„‰êi,À¯¢\"H¹�)ŽU‚>œ�2ðNŘ�Êìò9yóc=ÔœË 0ð€�ýÃìD+fÊ{�{�"½†Ï9'ÀïàáM‰ïiä²È¾­‚¨Ì‹–edJ�$)˜: õ…sB0ÔCàm»€ï'H®•ñ{b¢I8š©©Ô9Ò'©´IH…tPE¸o\óųŽ!˜ÃHe‚œü¸_H …4IX‡Df�&ÖEö0Ç£->v­7eøJœœhÛ•ÀÇx#õ�,ÿy Q¡R�ÛØ•Ìåy„ô,�)£Í=7‹áäm™—’à‰¡I–ZY(F"V˱ùÇèùƒç'UÂ9lå_~o{cI”5‘ø£Ý­S·Èw»/sâü�pžó[ÎÓ…-Dy’œIÈ«¤¥-•Ö¶KUˆsŸY{†þ>ü·8ãHš;©¸æ(qøEJâî<П!,TûÎÏ�š{xoLÛ¤j$' Î/!¿?oò»b;Ï]®?sL‚H'Žgâî7Î è[Éwíå·©`Iù^WåXÜÅ{ÃNðN\>ÃQƒH°ŠŸ:öõ­ð¢ŸU³‰z6‘WŽo nwÞûø®ãŠÿgmˆÿ’¥–à3Þ}üÓ$HÁ»¯`ly\§! ¾õ ²¹¥«ó}è®]"p æLaã\æß¡¶á)`áéqکͦрррррррÑÀ;¬�÷èxÉ¿ÖV3á÷T86ž;Gÿ �Gü\½ºí­qèˆÎüˆ6@ú%ÈO  rA‰ÐrEò݉£9ìÈ»ÕñÁ­Ý:pj¬#F€×¢.ÍŒ€4ùøcjñÉ'þ§Ô�ŽO‹×ø’Ùb‘fk(s’(qt\â”ZM&Lͼ8µÔŒ¯Øê碼- ãÊ�+4¿Ú|zô÷£#�Ÿ!>%É‘„N.?ˆŒ|\†qtçÜú_ƒ^³eÆORIEÏ>÷7¡ÀÅg«ºSm¿�÷==»Ç¿$5 ŽŒÜ“±j݇xÓ cýB&l®/O©¼×ÝŒ»�ê8Œõú±ðn‡i°ì„Ç�ë:<àõ6H’é˜qôRÇ6 ;ZPÊÂ)EÑê/V 0_Õµn±«¥.–Z4YTgà�; u»Ö�"Eç—“E|}|iÆ'3Di•ÉU(ÿ—ùÅö�ÉhíWübg)þMqÚõý.±­/p­e‡•åI­—ÊíË{/Ó²†Ëèîžì‰—6ÕYX‡RHa©y3»îÎ|7ñýij¹ï¾#ý› c|‹!@áå¯DETá�š:½#úJÕ£O|oì@>O¾¹Vn"u»uPÑKjæt…(A´·“ð¢€íNÉy`]ÿæØéE/S‘‚z™¾ Ç€Û‚N¨ó1LÃ;Óqu¾×]¼˜–œ8AxRVúðCúœù±Æ¾3ñ°ðô8gã0åFFFFFFFFï–Þi ãOæÙ˜ÆàƌÇé:bëòMñâ4Ô/ò@/Ƕ»@Çt6à7;Vx#�/bà§×3; cÝï¿Óð•lÙbI™  ¨[WpTˆ7î˜dèòåâ,ëÕ£Y³RÝQ£DúªôI’�w›6þ#Ð�޶åËÓ%æöXÍÜ!´C{ˆ3 ãÀŸR÷9sD›ºEŠúpUt çЫ�D`Kg:¿qØÕ»SoÔÑ^£…—)@‹œ sR‚Œ-ðU’ cjº½Ú% ƒ�eo��®¹N7ŽKW4‚ëý‹÷éêÁ«Âõë›_S´øÑü�ÇÆÆnéÅ£¢Lxáž¼IAžŒõ>G3µnÝ:ÀyƒÛ©ÊDö ™¨ÞN5ŒçGäÐ횉²¦;òJÏÛ+#œ6¶T Úà«*ìI½GVÀè /T¤ÄQdÆÈå‚d«‡(¼Þ{5“àRB}R• lß´”ò¤éAº;Q`x ®^ä~^s$À+ò·íÒˆ ¯s%ºQ>…—ä A:#nᩪäËo‰Ú”{ð´DZ Òû€»CñÈRçKe·Œ¬V9àÃÚOd©õZ×-à´J dô£tûˆ jÐ/Œû-{uùÞÑ+¸TE¢9Á!8?Ž×ü0àë2o‚ôÖGD">ßÃz t Aê²¾“å6–½š2˜1Kî㈠Y1Cîc‰sgç?EÐ:„ë1ñ¦dó2 r¡?Ø]0vÈ ë¦%¥¡ï;ÜŒ Ï4¢‘”DˆÈï„G2òH•©µÎgÒñ;Žúé¥jÞìzë·[iÇà¢SDAàûƒè…cs�Ñ“ÛOüOæ 耡?ÍÇièèÜ£ôÏKVK¬ä±DÔÅ‘ÙGD”bᎅ©Â˜ ¢î䲓tyÏe±�ó ‚ò!‡¨áüºêPˆâ¤Ž#Šq2§¢üÿ æ¬š”«q.½©Ø^Ñ|…ˆ.Òíj7R‘:Ð�†1“Ä‘&£E¤‹OÐí³·ÅñFW Â� ‹mµ@¤¦w1oá”!rÊÙ('%Ìœ�Õrxæazõô•8¾ñèâííM›ØAÅUAìtŽœ�5j CÜ�•øÛƒÈ.p3­;¨;P¨„ôä÷E£r[ñà°€à½'ƒtüA”!¸¢ v ‚§ß\üÿ%ûEtŒãŒ φŒ¥óЀѪk×øn+©Õ‚h�·Ú ¸úA)sH±òìPÅÿ/¸# $ÁÿMYóIç D‘âûþ×yÙSÓ.D_�tÞ+Þ›C;Êy´÷ŽëÄò®Î÷öë×Ó„ýû ‘ˆðhÉNYi8Ý*žžg=¿Ù70000000x75ðÎÏÙ¹œù5½±�yØÆâ/ÉbƤÆÌ�hŽÌLŠíLÜ:ÖõìIøXÏ~à"r!M"ùßèáxcŽt@t…’ LÆ]0CÊãåEyÓ¥ ’—Cƒµ»@G¿E‹h;{M}Àã\Õ£ÅäâÃW­¢u¬/ÈBæùH7®Ø¶Å2g¦FãÆ‰h�RÙ³Sß:uD;g@Ç*EF­Y#Ú´.[–+&¶]Yè@Gpí7ôîMQ"±õ)„²}ÐvÚÖ—Q²ÔšSKb‡'Ѫ/VÑ¡iRG΀ŽÜMsS�5èÉ­'4<Ñpqh¶zÙ¨îºôòÉK{ˆ0®4Z߈2(·nÑ*àb}‡õ´oü¾ �OÆzåÊJéfš´Î�;Ó(Âì^õ0¦À«žíÎFÂlÔ…xâ�®{…ã‡8~�+ÑA�õHÃT5‹LS žñ0.C@ø]ÖKzi$Aú«è$Û¨CZ¨¡l€ÁZ ÎïúÒ5dÉé#Ré RFtx[Â0äLTŽvD2ÀÈ C¬¤Aô¢HÐçz6˜éÞú*U’Î1¡ŽÅúÌQ>7ß_¤Ê°ýÞø‰‰o?·kå(ƒQ¸z]cñØ¥Žñ`.µc=nçW®W7¦À»^¾8QŒM€ûˆ¨œÙ»ä1@î,}�c$îmá|˜/H£DªTÖHA#R¥úµÁ€À2ðqÀ ·š@.0=p_@Ô P®G#ÙÓÚS2=ÒàvhÂ\Aw·’צdrÙ®ÏDîó+¹íé†P¤$ˆ‡±”ò›ËvýH�AÖÈPùÿá1®¸Yê�8Dtþ¤l‡è$Ì ¤ Nn^c�«€CÏ3|\O£\ßÖzxGñ¬d�\v¬%Ó³a^çû€{ Áó…¨/ !yž.çw€�`~«H$¤`Ó ¿ví=){ñð�J=JD"}bsŸæ9VdÑÀwøŸß燆ÅÐÑéB'ŠëWD…쟸_´m{¢-%Ê’H¤¥BôDÊB)©Õ¯­D�¾@*Å‘Éù%ÍRwQ]‘J¯×·‘rLÚ1tÿÒ}JûIZjºµ©^M/¿¤IG€\MrQÍ™~/Kn¥H…ÕroKñ½DOï<¥Ÿ‹ÿL7ÙY vÊØÔé|'…":çoù´"ÓDZJ¤éj¾½9!Õ•¤±š’ŠøN#’¥úÏÕEÕçœvsÚ´iª™Kk8Äfî3«¸3~Ž+ÁB| 0OuÁ÷§ÿ[…¨̧U8¢õð]RÀ)¾ àÈ(QÉq´z§âûtð±£[ž~sõ^âxv–ÖNok݆A]’¨ë3AòùXÛ…ýèž�ÊÐ-YÅñîVz—"Üð}ræ(¡Úª9á pSí¬kwæû±ë×i:;¦Í=vŒn%D7£ÓŒF�:óëPöúÙU×�Ö®žŒõ“¾wïÞ=Ðù‚*(W®ծ͖ÊÈÆ%2uºø¬�äqpµ»+¾Òp C3ø¾�ðÈ«¥¥ÖÔMŠ(é†í�|Ôº uÒŠ²d;X¢Úl]É~F_k–³ÑäÒA ¿0+Ï{½OE?N*S¡�M¾Ò³Rõ‡TD}ZHðE•a�2­4ò€¸×b¤7jSY–Z‰©uÏX«ñãÉÇF.€îÞ5ŒùK?ã٢߂O§¡§€Zņ8\›.ú\™»‡(wi.K‚ßMg®—f², ihV ®e0&{b ÒÇa·Ý‰ƒMËd R5M\€Ò o]‡3G?n*}L /"ÌgÅÁR¯ÑqÖ™òÐU©©¼!E ø]>//çR.%M%=º÷r9"œ îFGÉ£.õ”$kïm¼@„뀄AZ’ dÈ ×#kò5.!Á5ô Ð ÷6´dÝ|ŽfúLöŽ÷ÀP;Á=«�^Î5kDÚë|"˜›˜£oKŽÌ:BË›.§·�ÒJ�v@G¤‘¨÷£ÞâøýöÓºöë胈Pß}y²sTÝôßie‹•”0SBjwŠ'€EÜ:pèö�ì\Ðo›péx¾£XT—úµ�HS‚-²~¢õüˆJ)­ªÄQ%H©i¸¶¡?ȹ�çhvùÙ¢¼ÚÔj”·U^±­/ÔX øHÀ¥ÕëA/qÝsçÎ¥̭掌c§�(œÚ4$>*DCBUÇ[BÔÞ‹¦È÷7ê‘ R‰œ* U‡µ@îaC·Ìw€µž|sUX×ç#Á¥å,­�Þֺݬ¤t Påswó· ¨Ús¬Ã‹~TÄ®|÷­àÿqh(ø-¢` ¢kîDçvû¯øc¾îìYz¬=s†�~XI’1¨ÿ–hÅQsÇ�ÅýúõSÕ.­ Ðá’šL#£££££££�÷VïÐqŠA†, 2è’Ÿy2¹Ñ GŠg“>@okÝöè@  �Ò¼Dd„3 ír êÁ‡#,γ'“U�j<ƒÑ#K�Lk=öÝ:öñ‡üƒœ�‡ÏžQu@À]‚h’QMšˆr; Äâ-&O€8>ºW«æèйHzתEes²»«‹¢ 8*uUzކ ©Àu�ðä¹½‡— Ô¥wQoBnog@GåI•©@¶^²(PCO�1!ËAzZåGÎ5Þ: þUAp@GHƪΖk�#¥Dyå^ðK�™"ÕøÖÿØ0ŽŠ%”‰z~r¤@*ÇFtg;3>¢_ôAz¤¢ÑebI�2xÂo"(�Wmi6FÃÐ^µsJH{Z€C�~i(˜À`a{§�ätp|, Nºde›¢¬Üàø8™l©Œþ؃§>Òz ÞöAü!ý»­Ã}"Úæ0”�çÄÚ¿c›�)ß�ë#£Hƒ~œ‰Š´í/Ó7YÛêׂhäŽGŠ•O Ê–ˆ„@z%D €‚è¤9te6Æ@T;¹ò%¢)¾nèè§,�k �Ï*ºáMå1ïÕÔ‘v é¬0×�Î à @&�º‚ÜUÍ ðÁÌÙÅ)E.•Oç8ÃÐYì¡Ý˜9eñ|d»3cø´ÿ�#bÈÑÒ½-=µR�9‹¼@Ä�ž~ žäH'POE4Á{÷óxb²C;Òéà JàY À úƒ dä‚Љz�g`ïøîü¬ý SÄXB´†�ŒèÆùëGÊDD©ˆÕV¿ç½Æ±a½½ª ûµOòà#NÜûqï@¼º¡ß舑8u¿ÎŠaQ ÒEõ¼Ç“”å�…Ð’úK(fÒ˜‚WCj w�Žû—ïÓ¯1„莒ýJRÉþ%ý{›Yj&]ØvA¤�l& Ru £åž–>,]ôqT_‰ ¶“/�½£öÒ†®DSDlDO]ü/# ø™„ ªC¥ªDú*|ïß–ÀXç ÏŽçÒÇésX§xOìà/­ ½³”‡ž~sõQ$Áû ïŒKOk§·s¶ þ£çOµIR𷋯Ã*áA?øŸ‘Šøf ½äÎÀ?¬j±ÝGŠ*|ë¯øÊ‘xWCð]FdP��ù=ç#Š-ô1ôÍé>;jj79ò}GxLçˆù#Úï$¼®ûù�Õ¡¦~ӱррррррÑÀ{©�wè8~ó&e÷#ÔÆ](ÆÑ #ؽˆ›izÔôè8{í}>eŠèã  èPçÃú{Ûöõ¥�§NÑN½õ/~Õ°ÔçtO_rÚ'gâÐ�4RV “9C–üëÑOÚz{ÓñË—)"[BWrJ«ì‰ht yï h7�3"ÿ‚^б#íeeäêÕ¢'€­ü¸O–s¾Ý±ëÖ‰ò6|?@hîªè@Ç7 Â÷Д{ï ƒ Ρƒú9yª3 £Æô”»™çøLãéö™Û¤ƒ?æùQQœõ¯ÎÐ’±ªs„å$Û Û†(be¹ü`~˜¯@¤ó`¨#Aˆœ'ªô¶†÷<¼è!z$x�›Ú* àþq°,Eʧh  KÛjíÄÓ"ì -z{�p}êF¢¢6�­òŠt…üÞ° ˆF„ˆÊ³Ž\ç0[©Œ�öG�j™<�#ü,0`À�a=õê1‚ôPÕš°‘½n@ÙõXì«(»<ïÖöº¾­uvûu0x-ø’(AI2Ž¶Ë§Ëè0RúÇ}`uìÎáJ€–&%¤ÑNµ‡ñp“¯äÞPeXë†7åy‹9†k‡¨tezŠ3�¤Si·Tt QyÙˆ °ú]Âà ™Ê@ù¦ø+ú¶b¢_o9>¤ÐBúªà¶Hw€¢`I ¶<é«�6à_²ÔœöébÀz}iÛr�lC>þÐHí$Ï —*ºœ8³vè5·U~{¤H½UtžTªÞ–(N œÐÇrã�4)Ç$QdtÄM—:ùJ+æ±ùÇhégK€§Vž"D<8ë_ì"Jô±¨í¹•çÒÙugE4ÒL!r߸±iÇŠÿƒÊ|_†Š÷(®š‹µtt¾ØÙŸ÷C5ú÷õ¿40ò@ èŽ «[3qúOU³`×H§…´ZoKÀ½�oD�ÈH%Ã?<ðñhÌ*þUšÂïAÉ›„ï®UÊzIÞ)+Ï�§ß\½�LÜ'ýXw¶Ãƒ~�°jV©¤œ¾Õ É‚û3Üù’³£õÿ¬mWWYú6Þqÿò©w^¼H�~ù…~ÿûoÿáõ÷Û2@‡¿J̆рррррррр x'€Ž[ìñÓ„ ¶7p:(D%(ÉÈDßM9�TþKi“+Yµ³®=:Ð"&9�”Sà»hÅÀÇí‡Å)6÷í+€ëù¬û»DèÃ`$Y¼x4ŸÁgâ*Э€t€ $9÷ >%W˜¸] ¸7ÀÁá è8É\m¦NÍë.,øH쀎½rÞsÞ<Ñ.8ÀF�[­Ãè¸~ì:MÎ9Yœ¾òDŽÌøª€ŠÿzE3&Fe²R§@ós€§2!3Goœ¾EU§T¥|_äeSòN¡k¿_s ¤ˆF¼èðt¬ÏΟ?¯NãÒúÿì]xE½*½w¥T@ªtEDPzéÒ¤‹DšHWJ¤H‘ÞAz©?½ � ½#Uÿ{f2yó6»ÉËK#ÉÜïË–Ù™Ùݳ-ïž¹÷¤âÔd)ù^ ‹µ`gõ΀ç[¯¥LãYo ªÒY±U Aà˜�}Ë·¤Jí1² v”åûØkˆ|ÕL"p­ÿKÖÕ§e3ÉhˆZœ¢o±_VÑ Ø } kdœÃ*µRHâÇú0 ‘°ìop´ÇQ¹¬OÛV•Ú*Ï6H¤�#Z�tÑÛ`¯K¤BúŒêÔ z*H…”IN¦œbÁ‰Åª¶H¯…4[p`+§�Úf7_tPŠŽ+ïw*21ÅíajÔ1È$�J°á=8âeˆÔì°sHËZ¡›"2š˜#Ï}Çr?è¥MoNmÖß½¿¯ø^�hºîÜßÎÇ7®ŸŒFRQ>‹¦0aÜ\¶Eô œ—*zcÀ/D5¶u­/Å}!Z�h Xyé tŠ•B1QQ=NÏ�]WºóÍIÄvÄW|m¾—­c#_± =á>…ÆÅ©Ãr[k~n�qdØ[L`‚diŸ×/GØïϬJïæD2âq® Ö‚ÔcQe³kÏ&ˆƒC·¢Û•nAã–ú¬‹³%:X›°Ã¿qôFƒy”4}RúÂÿ QvbÉ šU}V¸Ç£Ùµf‹þ?^ÇÄBÙl¤4¨�6«Ë….‚l&:ÑÑýZwJ”:‘¾Y,÷�ߟž=~&ÒS!ML V€9„d¹jæçýúuºuëVHÕ·ã«ìVS)‹ð^wÞóÞð^qŠ‘øúÕî{Üÿ0]ÿ",ß\Ù›œê pÜÁ}Côv¡]Ž øìÝ"‰v`ƒô•¸^ž´¢”�¯øæ"*c €A xÿŽûVöÖ÷g9P®ïIƒ8J¹gøEÚíîÌ�Ÿ¹iÐTþ;sóf`¤ ®œ#:qB”¢#³`0 ƒ€AÀ àÑ‚èPçqžÅ}9¼ùþû+À¡�m²+›-›ÈëZ“µ… \¢ãÐùóÔáöT±A|{5ëY„–èàߨôÑ�?Ò>ü`^Ó»·ˆž�Z&ž'üý©õ„ –Öö«Jh܉è@«.Ó¦Ñ>vš'`,—.M“Ö­�éHÇ…4W°Ü]3®U+±ìÉ$²‰Ž‡7Ò TükŽ ù¾‘÷ÛjjäiTÞkx‹‘[ñqZoÂPîÛ*·îûÇ^g®-œŸ5òÉ-º3F¯ûß^È1 Óóxw®Ã#îçKRäŠÕtqiÝY®êÝà6邏kž¦Û‚¾" àè´7ß¶ŠèÓßZHâÇê8Ô£ã!. ’Èî|¹�83°oD@ ÎŒeÇݵ@TŸÖ9Ä™1:²‡9 nc›“³ Ûì éµ�ÖÈÎñfW_•!m¢*t'¸J›¤`­˜ô€~…ŠˆPí½�Ãé‡Hì¦AJ[&pâ!¥“2%ð ‡F2;ÙÀŽ’\‚0üì¿Y·�¨SmY{þÿ\ÂÞÖö�Eª6X�á||ŸËeo§ˆAŠÌC“K_Oå5xºH·î?%V>|ŽŒÒë€Xk]A¦èù|1º<2ÌÿœKÛ$&ÈL;ƒ6 Äza݆5“þ~Y0mX’:'Ùrñ³vÌmS¤¯¬ì´’vŽÚI/ʼn¾~øu�ý_Ü}‘&cF˜íy!:�ŠúWÐÁÊß8?Õúµ�z}Ýøó嬖“,nä±öyá4G¦¾&K‡Îä†ñžÄû¦´�°–o.Ú+SúNß+U/,óØ‚�M¡ï<ÁN‘ØHyM)kd+¾õ�‡ÍÞE”—I};ëT‹£òø•#?ÿ�sÀ®Fø•Ýc ÁyœÎäÆ&??úOëÚ'E j ýBþË�4©#×°1‹ƒ€AÀ `0 ž#­ˆuZÏx8ÛïþI÷î¥å]a;eIYï¢^ž<Ô®X1*è í¢ûé8y2ä0khk<ã}?zúTìÞÓˆTî6}:íæsI³Š‰Ž¸È•bcž¿lØ@Ó6m=T+R„2s´‹ÕfnÝJ7Y7$ kš,êÞ�~Û¶-�Àh÷á‡1reûΞ¥.S§ŠÕ”,ˆv0�èî GŽ„ ¶Mi׎|Ò¦ÅbˆÙDh`Ò�ôøÞc‘~ i¨¬6ê5v¾œ¾åÞkTj”;ŽÛN ʳZ×G2:‘ jD'Rx,:äJµ¤¢HôtGª_ÌWÍe²®ž,ù�WXVutRÂ)õ•ª«æ™¾}�³þFç#½,8ñcYÃ}ú;Õ‘HEl¸o%ÚÀNŒöÕe)Ä�á`ÆkÏ.êÀÚÖºãÃWY»‡0c>FãÛ¢t€3L'™dIÐiñä<ÂøNèˆ=×»ÒìÀyK&£Uôk§´Zôˆˆ Gáy 49àЇé#iUÚ,”C³â¬0#Â1ɯ{ä¤Gnz'kü6k ls¥}‚Î "‚@š �¢GìLwPNÙhŸŽÌ®�S™-©em¯ëV ‘FVÃ=²¶`¿I,׈öo'Bj87 {FpZ¤s‹,[Ç$R€Ád^>¹l�â8•’¥½FË{W¯£G¶À™ §rTÚö¶ÓꮫÅ! RQévpúAZÐd�(Š¢dŰô̱՞Q›ò5tVÔpMÖ~¹–¶Þ*4EêÍ­GTk°¤嬚ÓU1`I':ê/ªO¹ª3ˤÙ僡Yà'QRÝ·:lQP,ï›´�–|Â/K¶Ï|F/çç«DR¹a4>,¤÷‰¬åšêß7¥aäÚJôËPÖÀé.£�@ŒCç–o®ìANA£/»Az=»ehg�ˆTbŽz«Å|t­¦à¢3­ø màÛÿnÛ½ÛõÓè-IÒ‚hÆwÇ)Ò¤ȳÍ8š’ÿ¿ˆÛÅ‘âcwï¦ùLrÜò$pq9T®:Pû„5Ëq”~)óVTÜÛvj¿fn0 ƒ€AÀ ½ˆ–D‡¹?§�š¼?ùîÛGgµÔ*ÿ¥z€gPoÀËa%:v1AÑ�‰ «)¢ã4G:æÈ�Jü�»��HŽæ¬9rÿÑ#Ê’& MkßÞÚUວDGËŸ¦ÓœÛ? Á‘ÔF }ТEô;cƒ ùQþá¡"5¬Dê|6iûë/,šNt P×é(öÚk4 ~}‘Ö+°/<â5Ð�º²¨ :¦¼7…ü6úQüdñ©ÛßÝ(NÂ8êpèÂö ä[ÊW¬GuD›cEêª Œ³Ò <¹`�¶*Y(Ò¾Ùu…RH%ÓƲDNáІsBÓÊ.ó­U6³\+ÇNIè見(œ*sû«íºîF b$¢28We'%„…A:XõôT pÅO¨Z;Ïõ|áK޽šÛU‚ÅЀ¦Hâ¤2Å�ú½§k™*ΚºîR%�¼°šŽ•Ú†TD87«öˆÚî4‘P‘q�ƒ%¸´]s'!­lý… zr‹kª"!^Ï+ßNš'ЦPÛô\ï«ùx2ú!òº 0%­�¼·:ÕeÍÐMÕõG+è„LøÝu}0’¸ c{ç¦{š,]4£gËTµß'ðéó€K*í“JëÁyˆÆ;Rs!Eî�?nI±o§ºž”C›Ï lÔBŽf«!—Cš*át'=¤ëj]Q’m™²1±xÆÕãZ~ŽA"�Âõüi¹û³âªqKs‡¨;"žð|ÃÑggðéƒf "S”á>¹¸‰�Ö•�ÇÍ»Ê娚úmò£)e¦ˆÝ¿ÿG&~Å/:Í~ýàW:½æ´(‰¢Úýô'Di”í_–J÷.­íÝyÑ£sŒߦ¸‰âÒ“ODÊ(¤­zá%¾Ù-¦¹kç¦zóê¹ÕXÓƒ#7†le­÷µ¦ôÓ‹e¤“›g,á8Uôˆ[Cmç€ÔY0¤­ºÍÿ—yjˆÄÍ’%‹§ÕmëéÑŠã–ʈ+ÛŠ6…*m¢ ‘NÍú}ëÆ¤¢÷ð�·J™þ í7Wõ�¹ÒŒ²êèuœ–UJ9µ}'Þsü¾´ZlÁß •>DR¾œÉНù]…aŠ$×#AúüÄQâmÜÛLû‘…î»È2¤³ÂwÓÉ ƒöø‘$õAîG„Õ�;WDr¨¾_ç´©­ø7R3þ­–ŽSÙ™·„…·íìŽÁ” ƒ€AÀ `0D?¢=Ñ¡ çÁK´–S-Mà(�ÅÇ�Sãüù‰ »YßCÙü�; i—`Ÿ–+GÉ%ËéØá[”�õ°rýú‰H‘D,Ú½¢gOQ¦O>emŽ“,N®›":Ö:Dýçϧ4Ü_]Ö¸ÈÃi�²¦KGO9òãG‚ø®_O8'4¬VñâÔ±"{ŒÌ¢ã2ÿHÿhÄÑCjÛ²¥mo¦oçÍÛ°ßTI’Ktlãü¸½fÍrëËJt<æsªÏû¾q�½zl²f¥o¿M93d Û¬­ÂgÚæÍ”–±Ð�K':ÊóµzÓÇG´·›dcì�+¬vrùIšYEÉÍU#Õ™YG�7ÏÞ$8ˆàŒ�=D‡·ÇVŒ¼iÿ÷阆^“Ú~ÃÞÏ¥)’§céÊ2�ÚF–~EF2Àaóý4v T‘dFÕC§uà8GºÝY ݉íeO•êsZ &[àpEºœî ‰Ž°3Îbüh·¦õ@+D{`T,úF¤ˆ'¦;Çk4ã>qª©´M»Æî¢„)R�ßêèM#u¹ï'Dó&É]nàoAº žï)•X°Ñô­AÛUÎ)¿…U¹ž_Ô Ë7Wß‹zŸ¥áï7Ôœù]Q#z=ë²ÿ9WJ9lÃûeÕik-¹›ðQ©Àpæ´1pŠLoˆ÷ÓŸG¤ÎÖ¢©|Íù½¤H!=Ú ‘  ßñ¿ ¤¹ô,Ó¢¡OhB!ÒÉ0à$ˆaè}—¿Iåû=4÷¥Sÿ(ѱ”SÔÎ�[Do¼ëãƒÇ9Xó–°ð¶]°c6 ƒ€AÀ `0Db Ñ¡#~…Ó,AÀx°t…sáV)\8X¢ƒýXÔ‚#OÎ^¹Ø�•èÀ�F½gÏ&Mð<°AÀ‚•€Ñ‰k]ëz%Î×ÛÝ!:ÇZ7Øu>¡iå§Ñ™u<4Ž yΓeLF·ÎÞ#MáA4Dxã �ÂåêØ�_ü¿�.§²ag•n펴“éH¼’Ø'LÇgPg¢_Gʨ ßµr»J›gË”�²L�ÐGŽqÞrÔ#�Çý»òþü�1„ö‚ÕpoTÊ!�¹N+vÞ8ðçŒç4+i™Dr½­MiÅ,NMØP#íîiè—Àz3Þ w'SJ¤ZCÚ®°šÒ—ð¤èO =•JpíðL~1„Éú®Z*Õœ«ÄyiÎn™ªÍ¹†g[pMU ÕïE¶àÙT–�Ïo“}º�þšß1\%¸¾H £îWµe?;VBLm‹Ìù™µghF•ÂÑ�ýâöèÞ#ztû‘Ф€3QDÇÞ {iië¥bÖIËí-)sIöšÚØ¡™‡h~£ù�[ì´7ÔF�舗$žH9 bšw/ñÈÈ�¦kšRæ·Ü÷÷ðÖCšúþTº´ï’¨÷‹/¦øºuŽ¿õßÞ�MøàÛ‰w'?(Ã{ ÚJˆ…Y#çð~«ÇÒ€}Vþ¿ïo´Cº>DLÂìÒòÉ-rª¾Ãz–ñÔžûÎ)¯¬õƒ[?Ä¿2ò€§T WÍm›•°°®«ÊÖr뺪g惀AÀ `0 ±�ItX/Ýf&%úXH k¬#ª`D³fbS…ï¾£‡œr Ñ‹YÏÂjpˆ7;–.\c�ÛKü+c5km`~™#HæÿñmáÈ’K7Ù j±xqâPõ¢E©G>¤pÙVM.\H«Y´6¯K%¢¶©9/0‚ýÐÎ×W¤‘B]ˆŒOçh X§J•¨&ëšXm-G§ àèeÍÊØ) Q†/[&tGîñ²né9=„Û¡¢lŸÓ÷|nžÚu©RÅ“ª!Öyöø-k³ŒöOÛ/Ò[ Á‹q_¤âжí³KŸÂ £ )7®ŸºN5§Õ¤MØóË66÷Xºzì*U›X� µ*$Ê&á‘¶{ý©âÈŠT¼cqQ†É˜7ÆÐµãò> ,tXèt¦¥ÌÆžQ6oŽÕ¡ÛH)^¿˜G ¶sÿ±Ž#Zi2º ­€뿎�©¯¹�6™XêCùíí ѽ›³Âv×V¤ux£ §ÕéEô^5W¹¾„ý UA½Ç»§â¢�’Õ}ßs$§z«,{Ñ �KçÙYÏΦÕóˆ®øÝ Fg6î(Sâ ‚!8ƒ(;Òy€Ü€Àl�ε1¢£Ñ±«Á™Ý¶ë–|$�#Öíú:ˆÐ29 œ¿NbëÈó=ès"DMX µ¸&p¼As¦ÆusEè@ˆ‚ܰÎì[³€;­¥¨µ, ÝÎ1Hθeœã¼‚sjÔ4òÛÃÉ�cyé? š¸Ê¹�Ò〣j×N�´QÓ:a9ag ïp_â™@´„iÃjpx⺅dêXá,Ûĸ "ÂjÀ!}dÔDᑦMFdæ!"rDʸ!Õ y»Š ¹fÐôThRd ¿�¢ $ä¨{«“QÕ‹ªùù­çiîGs鮿ëââ»Qcj š\z²8,D+äý(¯XV$CÊì)©ÓiùÂ;2çˆèDI—¿¤7üä2Žz¬:SD;ô¸ápò{óЬC"*âæ™›tÿò}~/p![pDèd!eT¦™¨ÕfL':Zliä\¡M‚tVŠd°íûØ2p m¶�ßå_3 pxµÜ«"ÚãõJìŽ\…ùý€{w ó=µW¹M:Yz 5š¹·ÔSìMÙ £õaùæª~@öƒ|ÞÈþ®� ø¶€0u2=Í%êtd‚ßj«ÅF|0‘ �ÔwVá‚ÔSønb`†n ä¿l"u8T9þ�@$ô>Z¼/KCÒØÂ·Âå éAœà[ MÄ«l¾S+aa]W{³–[×U=37 ƒ€AÀ `ˆÄ ¢#*/åÕ;w×YK$Aܸ„HŠ—ùdGL4¸;.qdÇŽIÈbíé’''D®°oö¹²'÷ŸÐÅ=Ù§ F‡>¯�Ž?БáôQ91}9Ê0$ ŒBEÈü¨‡3ÕÃþüÏɶ DòñLoÓ¾�êÀ €tˆR©‚s Éà\Âq¤ÅAʤíÀÜÃóªì¤sM‹”@žFw‚ì¸Åíõ}:E‚xÒ§'uýrî”t‚%OÍ9Ç3Ê©J›Ã“>Lƒ@d"òòÔ!IÌ"rdÇónH·xåÈJ—7¥z5Õs}¸~Y_ä½)âõv­½ÿé-"9 ¿qýÄuq® l<2þ>ܾp›®½*"9’eæåÙS‰¤ô¨¯VÉÛon ƒÁñt¢ �«gŽóÿ ~25&þ‚6‡“á üïÒÚ¹øÿ§˜ò�õ–°ð¶�Æ¦Ü `0 ƒ€A z!`ˆŽèu½ÌÑ ± 82ÚV!ÚÌ£~1òä b»y©`‡QŽ:‹Æ‡]ŸYÎä!F‡Ö�‚gÂØó�"E1‚TT]/us§£¶#:œêšrƒ€A f"à-aám»˜‰¢9+ƒ€AÀ `0 ±CtľknÎØ `x΀ÓÚˆŒ�`-ÒóÀzüHÔ”u-b»!ýôR¼±Nß}ú•7-#¿Ml9ÏžM‰–x¥¤_¤ª;àA¢÷a–#�׈ôZû|÷ÑÎQ;ÅŽ�Öéƒ3Ct‡ŽÙfˆxKXxÛ.v jÎÒ `0 ƒ@ÌGÀ1ÿ›34¢‹§±ÈìÇî�üÜ&‡¬«áÞ*f®A ¤ÂkÞ�›S^xïz‹ØbÃý@IDATV±å<‘g~éôÐc‰ÈœƒOBßδˆúÅí'49ÔÞÒäJCÍ77§ÄiƒÃ1D‡BÌÌ ±o oÛÅ^¤Í™ ƒ€AÀ `ˆY¢#f]Os6ƒ@ @`Gø–z#y •¯-EËcÀ©…Ë)‡èÔ!¢W2ÕýT;³(ˆ ø<~Dôô Q¢$áQ}‡�<´ßêM‰Þú h¹µ$"ïwo oÛYÏͬ ƒ€AÀ `0DObѱóÔ)ºdIˆW(OæÌôm½z¢^ë èáþeÁöJŠ4¸Q#±l�|1m]»{—â°wb›6ôâ /V¹|û6�_³†¶Ÿ8Ø6‚äÈ›% ½•#Õ+Y’^à6W¸n[__bE`{O*,H-Ë– RuÚ¦M´dÏQ/n\šÚ®]Âá÷ýûiÖ¶m�mÛ”/O%ù˜¬¶õøqš¸n�(®Y¬Õ(ZÔZ…žþû/Mݸ‘þ`¬Ï^¾,ÖQ çö¦�Õ)^œJåÊØnÓÑ£4zåÊÀõà:T¬HïæÎ\•pÙ¶¼ÝrÚ=n7¥Î‘š:œè.}Úu²²ãJÚ9z'¥z5uü³£]•Ë"ãXßNKtó߯qˆÊG!ÄãR®^"Z8™èÐ.ù‡õ¸ñˆ²å$ªÒ˜2ìüO–RÕŽyóZoJçjùZD#滟߃{D“‡m[Eäw’èö <'D©_&*ô6Ñû5ˆ*7”eî-£níŠ?œ-ÉRĬë6ä ¢;ˆ$"úy…¼G­(ƒˆêÚ€èî-¾&ÌO™A´™ë.ýUÖĵ›¼!h[Ô¯„ßL Êú:Q‹÷ù5ÿ¯l[µ QýÏÜ÷ˆO@þ ]¹(Ëó3çÚãG÷:Þ¬ýØ“hϦ�[‚Øœ²QÞµ*ô³¤îײՉð—”ï «mý�hÝ"Æ÷¢s§ˆÐ u ¾EÔA?%¢NxN>*Ftx7Q™ªDcCþ7Àq×8—Ž5åæ…ì̑ϽꬱDÚË2í{¹o�ŒµûWïÓÐtCÅ®jϬMùX2¬Á÷æM¿›¢—¤é“Rœüq0憀7÷ÁЮDû·»u#Vð�ÌÆÿ6}P‡èÍ’A·£¤na¢£ûäs8šïÑÈ4<Ó×.Ë=fô‰¸oVlÄï›íkäÿO jAt¤âÿÉŠ½'¿E˄ϕ~Ÿcü}!h_xWâ�’ys¿‡Ô§Úî-aám;µ_37 ƒ€AÀ `ˆÞÄ ¢cýáÃÔoÞ¼¯T^&:Æ´l)ê•ë×/ÐY�‚A R  Î?¢uÖõé©qäÂê2u*=zÊCXƒ±å={RâøñéÂõëÔdôè`jÚoªZ¸0}Q5译�ÇŽ¥sU¡ DMñ×Ù˦Ùô-[hR��â\3ÒÏŸ|¢Õ�‹Ëöî¥aK—Š•&¥K!Vnr¤Jß9sèà¹sAÚª�Hc°EÙò}û<"ŸP·[µjT¹P!,F¨Ey€ˆéDFøuªÅŽZvŽ;ÙÄÕp€.ÞàaÔluJ” ¤ Šå )SRùüùŲ•è@Ƙ-Ä6}bGtnù�*YÒ¤!gŽôééî?ÿÐÁóçiÁÎ�ôê+¯8 �Þ`’ÅÉJ¿ñeKÇžÖ¶È":N,=Aç·œ§DiQ©n¥¼:«È8Vo":O#úæS9ú'†ôHã‚4/‘©_ŽìeÇ1ßÒ)R{uêÏ}#ŒÇ(rØOˉJóùÃösä@s�‰Èˆ$Ɉ3iP¢,ã�F: ÷n‘Î Œú_°_¶y¦í‰QŸ°¿Õl.—cÂ#’Ëð«Ñ1=c»ûY þœhZ±S©ÑЙrû{ÜF'òÆ,&z¯š«-œTý>s­#mÒzÆqÞD&VøùPöFA.Û§Öä½Q™£žü5Î$Bí–®:Þ,Ý»Ã÷Z ™‘‡‰–2.Atà\a³Æñ5o'—A¸dÎ.—ïÞ–‘0;ÖÊu8ÿAä$fRÇY‰”DJ•ú€#Y¸Ï䩈Žý�޵�LpÀò&š³G.GÄôÑ?D¿ •ç]ŽÉWkFhöùYeɃ(”Ù»‚¶ŒH‡_нٗ¢Ã—È, í}pë:?#ü €Á��ûvù/"<_:Yh}ÏàyªSHÖ·n“¥;ýšßK ø›€�kµwVxî56áƒÚε9òn³D0£Goð{ß&�µ¸¦—)øz�O”e_ß¶á÷ñx™æß+O,´÷»'}ª:ÞÞ¶Sû5sƒ€AÀ `0 �è�@¬ :¬—¨ÏìÙ´ùØ1Q<ï‹/( kfXÍJt`ûÈfͨ€��[U;¢cÇÉ“ÔsæLQ¯:§yú¼2{H,†H��GŽP¹|ù£@,UÄ*"QIó[çÎ"�–]=½lööíôÓêÕ¢(m²dt•õAÒð|n—.ô‚VÑŽè3‚ÏS·àˆŽ L }-“#CÖ¸1%cÝ O²ïìYú @�Àb=¢ãË5¨Â›on‹ª…È ÂëÜ"ãXCKt õF�ÍYÌĨg8h­#ä1Zq¾/üƒ:¦šîäÖGEª³ƒ£4�âµ"=�îKwš[ëDöú†%Dí«Ë½ÎgÇZ®¨TÂA�‰~)»œË$\îÇ!îÓ>­d9œÛÓØù‡þ�+LÞ½,ËAÖÁ×mQ³/dR“U`båHñ„{^¥MB4Ïo?I� hV$`Ž}×ÙS¤4Ö�÷ÃåpÒÃôc’%¡ŸîÞÄÇWF¶ëÁ޲¦Ÿ{Ö¢]õÛÌ÷&Ò«éÖˆ³ ð`ÀG�Ρg§;ƒó¹„”`Ïcô’<› ÓÒ<ºùúeédìËD–Õ"ÒágÝ—Óº!:œ�‰¼òÐÞHOô “�0DË!jN·Ÿû�î#K�æîk&•�dÙ[w^êtȵș‚dÙ‚ôu•6+6áÓº"RþÁ�¢êǹA„o¼C‘æ2¼M¥A+W“ï,ð¬÷ÐÞïžõ*kyKXxÛ.4Çfê ƒ€AÀ `0<¿Ä8¢ãk]ørZ¤T¥Ñ™£5ì,´DGü8qD *DN åˆÝjsêªë¬Ñ[Ë©« ÕñëæÍä»~½(ת!êÂ[ó†èè4y2à4RéX+ãV­»ÿé§”“Ée:Ñ- DgÀ�b ©¦”-åÔU?¤®jüÎ;Ôêý÷Å&ÔnÁÑg¯°ç�í'N{\d†¨0‰J¢é7Ž/­ ÀhÛßøzBäZ9¿Ç~C4î[ŽfúXbŽôI*mÒ@!TIîç í E†áA‚(ääÇõBZ(¤IÂ<,6íG¢Á]dS6z.”­_é2m¸ô| ÿR–ÿ²Ž¨xÙ uìJ@œ�@q´‡�vüÙ 7CÔ Þ%º!·½)¯—[—1júÛäÈiÜùKHÍœ„‰Ù™›IÖþf¼½èsD:ü¬Ç‰õ?ÿ“Îm>GW�^¥´yÒRö÷³Sº|él5:nž¹I§×œ¦)P²ŒÉhÿ”ýôï³Eê©×+½NGç¥ã‹�ÓKq_¢| óQörÙwy~ÛyºrX~ãÞ|Hk{®Û µ,DŠò�¡ÙµÞ Äi,¶C³Ñ£;�(yæä„}ØÚüÞöÝ'Ž%mî´â[Œz׎_#¿M~¬‰óa?gÖ�¡³ëΊò—ó¿L>e|([Ùl¶]ªBìûäò“ô÷þ¿E;Ç+o¾"Î9~r~ÑD�…ö>П!+YˆC¼ÌÏ�º÷ðÞ˜´ÆuàЄÁþRrDÈÖ«ü®ØÄ÷.o?ÉßQˆ“#�4~œ,´ß\ f@ßÊ¾ë ¿MÅÊÈ÷º*Çä.Þv†wâÂ)®-ˆ«ø‘k]_Š-ø,ù•¨gSyæø‚àÍ{ßu|Cñÿ ¢ ñ?Cú,’|Æ»/¤w,Þ}Å’Év�2ùÖS¿ ÎËžÞïßoÝ*Ò·`]ÁŒ6ƒËìöà-aám;»c0eƒ€AÀ `0 Ñ�At<á_kKYð{"«OŸ¦‘N‰#~©ÎÞ Ñ‘ˆõ3m€ôK° L rA™Ñr%òÝ™£9ìÄ»Uû�æ¡%:îpj¬C‡  kQ—‰ŽfLFÀš¾û.µxï½À]êDÇGo½%Îñɳg"ÍÖ÷¬I¢Ì‰è8Ï)µšŽ#ªùpj©)mÙëç¡EÑqq÷EšUmÝûûžÛ‘¦z-½œïe:¶ðX1òQ¯�¢§oÐ /1ôŒ=3–¹dfzt÷Q Å ..ua§êJ9ˆÞâ_’š…$Fîͱj݇y14DÇÊÙ,Ø\_îR�^ÍÀ¹Û¹ŽËY¯·Åèv8‘‘ËÎ6-'ú¼®k¼^©@ 2�$¹^êZÆHZŒ-XŠÛÝY[¤¶ÔÖpÕ�‘küô½®9Žõ-p”cÄåñýL Tf‡÷2¹õ÷9D_8rFÌ#*ÏûñÔT~rÝ™nm«Ç !³#Ê'§«¢ /pÿ®«L_Q�´'Ê�ZLבPåvs§‘¼ 8z1o5B£º_#"+`p~Ãéƒs‚Ý‹§ÊuLáüAtAxŠÙƒÔøc�Ü7rŸ·® 5IpïýʤR,)›ø= Ì%�Í—}¾ÍËJ’ z Ç@VÀ�æJEÂ_ÜEÙ‘„{÷RÒ@°|ê&¢"¥Yäü ™–‘!pVCkj+Ùsè§p Á‘Ò¹ô�ž½g8ÊŠ$‘dȰqKõ­rZ"¡ÍéŽó¯Ä÷'Ró„wê*8ûð¼XÍê ¶nÇ:®]³2.²VÕVÍ»ÊgesvóqQ[]sO~®Þ-ýûô_ZÑ~í¿'HH…¸m(ßÀlºùÁéiA“¢âŠt‘P°yAA6ˆ�ÐîPz²ÔyÚ±¦ìÎU8Y­¶{#;hß“¥Ös]ñ§Uj ·…-Ò_8÷[ö ê2ÈÕ+´TE¢ 9ÁaØ?Úë†üpàë6sŒSED">”ÞÃJ>` Cê²>?ÉeL¿ú˜ÉŒirû@Í¢)rSì;/ÿ)�Ö�¼ áekH’ ýÁï‚c‡ ãc¶Ž4îR�hÕ\¢l|�ÌúCjQ( ŽoZóHÜ 2‚B®J§ùΡ“Q-�ìwè,Žtᶸ—�â­ÄûU’‹SY%â¾OË�DÐæÀö°„Ñq]Å�ȺÚeÕÏú0ió­«ðÁ=‚ÔVXFô¢¸B2� ÀѰQü©z¿†\�)žáé£dOÿýË„ä¹ b©Ë`ç=ë�ËHG#Þw¸¯ñµÂ3�h$ePßsÏ>%—®gÒé;ŽúùJµ ßùú¯×Óæ›E§ˆ‚À÷Ñ ‡f¢×î̉耣?ë»YéàŒƒôï‰-i†¤"êâÀ¯D”b‰N%¨Âˆ bÛ±ÇèÂö bûA#ìuQÃþu+Þ±8%Ï’\!âdzEùÿAÍi5©@“zU±¼¨ù"]¤«WR‘:Ñ�ŠI^N""Mâ$ŒCGç¥ë§®‹ö~¬@%:—Ëj‚HMßR¾bPÂKñ^¢ü�óSš\iQ-û§î§§ÿ<ûÁ7ýÂ|}}i PñÔ;™#g$H¤IhïƒJüíAd´™Vœ Ò� (ATÂzòû¢qG¹üï3qм·0È ;¿Ge­(˜‰àí7ÿßÉ~Ýç8 Ç„gCŽåóïÝ£ÿÔ6ÌA\ã»­¬V ¢þ¾jÍ}ðA)sX©y@ÿ¿S$ þoÊ]XÎ@)¾ï�‘=}Ü…¨ûνâ½ù}'yí¸á¹°¼§÷{‡•+iÌ®]n€ÈDx´äAYY9ÝjÞÞ¶³î߬ ƒ€AÀ `0DO¢Ññˆ=‘ Y_ÑX÷�},�–>IjR €ˆæÈÅ¢ØNZ¢cEÏž4˜‰‹•L`à."²¦•?ð툎7áHDW({�Ÿ‹½öôñ¡BÙ³«Ë¡Ú`Z¢£ïœ9´‰GM½Èǹ¤GJÂ?ć,YB+/ØlÖùx9E ±l%:JåÊE�G�Ñ eóæ¥>uêˆzNDÇ&E†/[&ê´._ž”*%–=™èDGHõWõêEñã²÷)Œ¶©ÿ&ÚЇQ²Õš^Kb…o¢%Ÿ.¡}“$FNDÇ›¿I5¦Ô ×Ð�´CDÓ<õòPÝÙuéɃ'40Ù@á\i¼²1½¦†u‹Zî“•WÒÎÑ;ƒ%:¼9Ö‹/R¦P¦IûüóÏi8av†Qõp¦`T=F¶;œ„¥Ù© ófº>*?Äñƒ\™N*è:ØŽ4LUß�ij@T`d<œË0è”÷‘£´A’ ý�Õt‘mlCZ¨ïÙƒ¹2ì£ë•3öľwÞ”[á|ŸÆû„s¦ë `9®‘v ÒåƒìR—ëH¥ƒH8Ñ1ÚŽ!'S9ÚÉ'+±Ê�zш"AŸ+Ùa¦�ÖW©’t� Õó“yß|}‘*ÃÎôkûí¾ýÄ®–« Náêùdt œÅ#绎÷Rûœª‰_8_Ý™‚ѽå‹6ˆ’a„h\GDåüºU¶�À5„Ã�Ò¹Ž$tKØî¤‰Q¦Uª s¤ ƒ©R}ŽÚ`Âdô80 ·;š .2 =p] Ô R®GcÙÓòã2=RÏ€h½¸|&GE •º6e2Èz½ÇrŸmå²·SŒÜFJ�x8–²| œ „@–×äV*ÿ?FŒ+m�zG÷�9&ë!: ÷ÄÆ­†¨¤=C:´Kç˜ÜÙ%#ZàŹ6ílm~ë  ÌŽ°’[ä´S-yœ¸/‡ðuÀµ…áùBÔ†°|Ÿ.äw€�áþV‘HHÁ¦;~íê{Söøîcže¸ˆDúÄæ›S¼¤üb`ùÿ£Ûüа9�Ïv¦>)DTÈ®±|AØÚmGißH+ÒR!z"SñLÔê�Vb›>A*Å2ðKš­îœº" ”¾]_FZÈÙFÐíó·)Û{Ùèãõë›éÉý'4ô•¡b@�¦¨æÔ€—%×Ò‰¤Âj¹£¥ø^¢ƒnüC¿¼ý ]åÁÉ2%£Îg:‹(Ñ9Ë'•œ$ÒR"MWóMÍ ©®”!�Õø"ãÅw‘,Õ©.6}Âi7'Mš¤ªy4ÇÀ‚d¬}fµÐÜ ?K¤�d!¾¸OuÃ÷§1ÿ[…¨ÜOKKuð]RÄ)¾ ÐÈ(]ÉÕZ½Sñ}Ú{ßUŽ%o¿¹z/ qA<;¥µÓëZ—áPW„$¶õÃï¹vÖZ’Ž øèވʃÐ-SÅõîVHBËnø>9 ”PuÕ=áD¸©zÖyhî÷C—/Ód˜6ãÐ!ºrßuSâ÷Jyþ]„(�j9sR\üÓÉæ-aám;ë¹™uƒ€AÀ `0 �è‰@´!:Žqš$DoLå’¯ÿóO Úñ_zIücÜœG}ÀÁ…A«FÞ�¦iìX¡cñ!“)=kÊåvDö³‡Sh X°€niÿÌ«ý'g±îŠ|¼-8�T<ÖÿÎBCt íTµÁƒéŸÇ�)/klŒa­ DÏ¿á°qXÇŠ©VñâbÙJt *ǼöàAA”üÚ¡eL•Ê1¢câºu4cËÑWOÿ0‚âQAtŒÌ>R¤²À(ÔvGÜU#•ÕðÌà iAœˆŽ†~ 48pÂCÒ £gËö/K¥{—ü˜õGáÔ©3«å­ŸW”ÙM(ƒ3Ùg�~vË�ù1X³@nAª¦±K‚Pºcò‹!¬QÄ�›J“ч÷³Ò`©W”èc¦FèªÔT Þ�¢ú.Ÿðè]ˆÒ#årêcD÷.G„,´ÑQ²•ûTOIâ¾%èÚê³D8˜Êÿ/×ì§§Y£Gê¨Ð?R£(BE•‡÷|“PÝÊ^ñ~jg¸f^•÷š5" õgŒ–JXƽ‰{4ªìÀ´´ðcfŽØìˆ¤´Rä…Ñ7q\êu¯—h¿kÌ.ZÑa½çEêó¸ßìU7ù´¸ÅbJ“3 µ?Þ^ÔÓ'¡!:ÐnS?\Ðwƒ ÒéL'A°¨þôs!‘µ4?¦ïô|‡Þø¾Ú$æˆ*AJ-X£å�5@N¯>M¿~ø«(¯6±jUH,ë“ßjü&ôH ¥õÕ�¯ÄyϘ1ƒ6³¶Zhl ‰Ï©MÃbУB4$ QQu¸%DMàÝ1g¼|c;"’@D*Ó‰S¥¤¶a®È�ÛÙÑ­ ÷;ÈZo¾¹ªÌëó¿‘ÐÒrJk§×µ.7+#¨òÛø[ð–ZsÍc >*âg¾íZÈÿ‡¸ yI‘(!ˆ(„Æš§Ñy!ïÙ¹ÆSþ˜¯8uJ�ËOž$¤VörâÄÔŒK´â(�£ùåËÖ·o_µÙ£¹!:<‚ÉT2 ƒ€AÀ cˆDÇq&Þ`’A·"¬“ŽùòQJ›ôz]ë²7DúYÒé”fvì("#œˆÔÉ�¨‡�aq†G2Y ©¡F3‘(ž‘iÝŽõÐ;ù‡CþÁ‰MØÝ‡©: Ð.A4Éð¦ME¹Ñañ?ý$h|t«VÍ‘èеHzÕªEåóópWM': p\êªW9&¬£‚þb$§Èí=¤|�.}ßò%äöv":*�«LE?cï%›"5ôÔcÞ#DO«ü̹Æ[ Ò¿*‰è˱ª}Dæ"ÇHiSN^¹òb¦Hu„|+ÿ êG¥Òȉz~r¤@ú€�è)îä|D¿è¶ø°LE#×ätì7R4k ½‰à £jßgg4íU³¦„ô§¹5Aú ¤¡a‡…Õ�2jòœŽÛÂá¤[nöÉ!šÁª=�t?聯5•ÓkBë€�·ˆBÀh{� !»­Ã}"Ú#Ìá(ƒÎ‰µÿÀÊ6 ã¿ãôB½e ¢bÐ�“é¤H»odú&k]ý\í�ÜñH±òQ1Y‘H¯„ˆaÃý€Tb‡®ÌΘª'×Â>E4E÷F®~Êóq�à㳚îxSyÌug>ÒYá^C:'�7 ™ ê qWuo@fúVN)r–èÃì®=|?MŠ«æði×WÄ�«fè–ôÔ"H5fy�1¤§ŸÂHr¤“©§"š0z×óx’ð€v¤ÓÁ3hg¾L!ò0vȨÔÃý ý½G” cjò0™"Ä¢5ìlhWÎ_ÿƒÜ‚ˆ(+£_ó¯F±c½ƒ]/‘S¶ñ›�´ñÛ�bg½î÷ ¢{¡;ú툎ÄéS·Ë ›"5�.ªç-¾IÙÏ>LóêÏ£$¯$º¢P›„–è¸}á6�ðAˆî(Ó· •ù¦L`oSËN¥³Ίô‘Nºƒª-··$èaé¦G¥Ñ•¨X{ùÙ1|­úb•¨Šˆ�Di‰ÿeD?“0Du¨T•H_…ï}TFâþ<ø½ãùÁ�ôqú=¬ˆS¼'6ó¿—V’Þ)å¡·ß\ý(A’àý†wŽKOk§×sZ¾q•ÛþãÚŠ÷À‹|V‹ øàD*â›�ô’[‚þT°Âb»ŽUøÖ_ô“)"ñ®†á»ŒÈ ¢ïò{n£( 2Ñ�¡Ç�igÝùUŽ|ŸÉ“9bþ€ö; ¯ë¾• ÑaEͬ ƒ€AÀ `0‡@´ :Ž\½Jyµq2¥8Za(�D/Ê4= o‰ŽS—.Ñ'ãÇ‹n 0¡ñàˆµ?̯ñhûý~~´åøqÚÌ©·þï¶úœî© §}r²ÐH#bö§bx#£Ë‹ÔÎ×—Ž\¸@qغ˜SZ%摈vDÚöúí7ÚÆÇ‡AÿÖ©í`凥K±‰@J´ Ð>YÈùvG®X!Ê?ãëAsOM':¾äh¾G¤Ý:wK8\°�œÐ÷©ÄS�ˆŽ“kЛÍäqŽÎ9š®Ÿ¼N:©ñsÁŸ…Å©µ¯�ˆŽ°«ÚGdÎ!² ±m˜V–k!OAVà‡ùÛˆt Õ‚ÈÈÑÖ=�Qô0=’: ÈMm5pÿ<@–"å“Uˆ³]5ŽvâÛ"8ì-zŸºàúÄÕDoÙ<¶jT¤'âÇ �hDˆ€´€!×9ÇVC*£«—8MUk)ÌŽí?õãȆOpdXMOý…mˆAz¨jMÙÉ^×Ýqfm‹uå`—çÝZ_ÇÛºÍn¤Ž£–¿mC”úe)2Žº 'Ëè�0Røã:‚°’:vûð¤ DKÓÒÒi§êÃy¸Æ�ñ™T‰œëŽ75ò÷Φҕé)Î  ’N¥ÝRÑ5pDb'&È:à;�É82•ƒ MÂj}Z±Ð¯¯ì)´�¾*$Ã[¤»Bê“be˜0ØàÞé«�6ä_ú,œöéœûv»5èà~÷­ÜjMSg×&,e*ºš8Ó6;÷¤òÛ#E„è­¦ëÜ€ QU¦4-trB?–+‡¯Ð¸|ãD‘Ñ‘"k êì×Yl?4ëÍo8ß�Ô8¾ø8!âÁ©�`°‹(Ñ�E-Ϩ<ƒN­8%¢9�f ‘#øÆ�Ì6RüTnP9z»ÇÛªº˜ëDÇçç>ÔýP•þ{öõ‹×O(úÀ…¥­Y8}Â^U-Ä9Òi!­VT´7ð €)©áøÇ|¼š0dv„`ó÷ø=¸Qê&á»kµò>Rwʪóãí7Wï_÷d�€Þ64˱ÁUsKT�"pòúÐ $‰ä±ß°Ü<ù’Skýk¡ÕUN–FÅ;î?Þõ–sç¨óï¿Óÿþþ;ðð¾ X2DG $fÁ `0 ƒ€AÀ¢Ñq�Gü4e�íUœ Q Êr°Ð÷ÇœFª)ÿe²É•¬êYçÞ舜@Ê)è]´bâãúÝ»bkûôD‚uÖõ­L"ôf2–>eJšÅd‚“yJtˆŽƒP�eà~¡'¢ì" ·+ƒö48œˆŽc¬õðÙĉ¢z�%„‰ѱƒCÎ{Μ)ê…Dب}«yd—]¦Ÿòÿ$v_y,Gf´-ª%p¾¨ £²X©#ÑÁúÐé€�ÉÅÑ'®QÕñU©ð§…EÙøBãéÒÿ.9)¢OB":¼=V�ggΜQ»ñhžŠS“¥ä{%,Ö‚�Õ;~œo½J”2�g½a4¨JOdÄV=€�cö-ß’*µÇÈ^,Ø9P–ïc’ÀNCä«f’�“hý_²®>-ËNlDC@Ôzà}‹ý²ŠnÀVèKX##àV©•B?Ö÷€Q˜ˆ¼€eƒ£=ŽÊe}Ú¶ªÔ¶Py¶Az ýÑz¤‹ÞËx]Î+Óï`T§nÐSA (¤Lr2å N,VµEz-¤ÙB.yå´SÛìæ‹JÑq%àýNE&¦¸=L�:™R 6¼G¼ ‘šviY+tSD}įÌ‘ç¾ã¹ôÒ¦7§6ëïÞßW|¯@4]wîoçã×OF#©(ŸES˜0n.Û"úÎK½1࢚ۺÖçæ|oB´Ñ°ò>ÒAé5$*…b¢¢zœž»®t盓ˆíˆ¯øÚ|/[ÿ¶“(_1»ž‚–©{*¸ÆA[…¾ä-&0¡�Ó„?¯_ްo�gV¥ws"qŽ8Wkˆ A걨²ÙµgÄÁ¡[ÑíJ· ‡qË� }ÖÅ€Ù¬Í�Øáß8z£Á)}áÿ…(;±äͪ>+\‰Žc �ÑìZ³Eÿ¯cb¡l6RTH›ÕåBA¶ˆ �èè~­;%J�Hß,–ûÇïOÏ?é©�¦ ¦+@„B²\5s‰ó¿~ý:ݺu+¤ê�Ûñ¿UvŽŽ «©”Ex¯;ïyox¯ƒ8ÅH|}€ê÷=–o®ìMNõ�8îà¾!z»Ð.Ç|ön‘D;°AúJ\/O ‘r JȈW|s• �1 À üŸ ˆå¾?Ë�v}OÄQÊ=ùÛýRøDÚíîÌ�Ÿ¹iÐTþ;sóf`¤ ®œ#:qB”¢#³`0 ƒ€AÀ àÑ‚èPçqžÅ}9¼ùþû+À¡�m²+›-›ÈëZ“µ… \¢ãÐùóÔáöT±A|{5ëY„–èàߨôÑ�?Ò>ü`^Ó»·ˆž�Z&ž'üý©õ„ –Öö«Jh܉è@«.Ó¦Ñ>vš'`,—.M“Ö­�éHÇ…4W°Ü]3®U+±ìÉ$²‰Ž‡7Ò TükŽ ù¾‘÷ÛjjäiTÞkx‹‘[ñqZoÂPîÛ*·îûÇ^g®í)­^#ŸÜ¢;côº¿ñí…Ó0=�wç:<â~¾$U@®XM—Ö�åªÞ nóN:¹æiº-èk ÒŽN;qóm«ˆ> ð­…$~¬ŽCÍ1:â² ‰ìΑˆà€3ûF"AàÌXvÜ] Dõi�Cœ£Ó! ‘q˜“à6¶99˰ÍÎ�^ i�ìovõUÒV!ª¢5“W `*m’N€µbÒú*"BÖô~ §"9°o˜r)m D˜À‰‡”NÊ”À/JÉìd;Jr Âð°ÿfÝB¢Nµeíùÿs {[ÛC4©Ú`=†óñ}.—½�"Z)f0M.}=•×àéR Ýz ¸ÿ”Xùð92BÈZÇn½^ÖØ+G¬C“$"ÌÿœKÛ$&ÈL;ƒ6 Äza݆5“þ~Y0mX’ÓnýA”-?kÇÜ6EúÊÊN+iç¨�ôRü—èë‡_ÙÿÅÝib1f„Ùž¢©¡¬ü�óS­_kѨ×GÑ�?oPÎj9©ÁâAÎC':ÚkOir<5Ÿþó”$’/ =%ÖšîkhÛÐmâÿª^zQœq‚ômWžbävýÛ•!užM–VêàÞ'ÖöNsdêk²tèL¢JñžÄû¦´�°–o.Ú+SúNß+U/,óØ‚�M¡ï<ÁN‘ØHyM)kd+¾õ�‡ÍÞE”—I};ëT‹£òø•#?ÿ�sÀ®Fø•Ýc ÁyœÎäÆ&??úOëÚ'E j ýBþË�4©#×°1‹ƒ€AÀ `0 ž#­ˆuZÏx8ÛïþI÷î¥å]a;eIYï¢^ž<Ô®X1*è í¢ûé8y2ä0khk<ã}?zúTìÞÓˆTî6}:íæsI³Š‰Ž¸Jecž¿lØ@Ó6m=T+R„2s´‹ÕfnÝJ7Y7$ kš,êÞ�~Û¶-�Àh÷á‡1reûΞ¥.S§ŠÕ”,ˆv0�èî GŽ„ ¶Mi׎|Ò¦ÅbˆÙDh`Ò�ôøÞc‘~ i¨¬6ê5v¾œ¾åÞkTj”;ŽÛN ʳZ×G2:‘ jD'Rx,:äJµ¤¢HôtGª_ÌWÍe²®ž,ù�WXVutRÂ)õ•ª«æŸ|À¢®kœõ70:é•`Á‰ËîÓwØ©Žt@*bÃ}+Ñvb´¯.K!† 3^{vQÖ¶Öu¾ÊÚ=<€£ð1ßÎ¥œa:É$K‚N‹'çÆwBGDè¹Þ•fΫX2­¢_;¥Õ¢GD= ÏK É‡>LI«Òf¡šg…�ŽI~Ý#'=rÓ;Yã·Ya›+ítNÒiÔ=bgºƒrÊFûtdvíœÊôh¡àH-k{]·Fˆ4²îA�°ûåHb¹æá—%Ûg>£—óó‹Õ‹ ¢:7� é}"k¹¦ú÷Mi¹¶ý2”Ÿ­î2 Ä8t>`aùæÊä1ú²D ×³[†vˆHe Æá¨·ZlÁG×j .:ÓŠÒ¾ðï¶Ý»Q?�Þ’$-¢,ñÝqŠ´iò¬F3ަäÿ/"Âvq¤øØÝ»i>“÷Ÿ< ÜE\•«ÎÔ>aMÀr%…ßDʼ÷¶�Ú¯™ ƒ€AÀ `0Do¢%Ñ¡CîÏi£&ïßO¾ûöÑY-õ„Ê©àÔðrX‰Ž]LPtg¢ÂjŠè8Í‘‡9ò£ÿãnG` ’£9kŽÜôˆ²¤ICÓÚ··v¸î)ÑÑòçŸé4ç¶Å�hp$µh´hýÎXÁ H~”x¨H +Ñ�:ŸMšDÇþú ‹�¦(Ôu:нö ¨__¤õ lÀ �øG ôA „®,*ˆŽ)ïM!¿�~?Y|êöw7Š“0Ž:º°ýù–òëQÑ�ƒðæX‘ºêã¬ô_O.˜¤­JŠ´ov]!…RIÁt‡±,‘S8´á܀д²Ë|k•Í,×ʱSúºé"ʧJ!mµ]×ÀDŒDT†Qñˆ2�“ ¬zzª8‚ìR_©þÔ\ϾäÑ«¹Õv"lfÁØrDÐIÌ£tuñc8]ËT‘)�\-\KºîR%�¼°šŽ•Ú†TD87«öˆÚî4‘P‘q�ƒ%¸´]s'!­lý… zr‹kª"!^Ï+ßNš'ЦPÛô\ï«ùx2ú!òº 0%­�¼÷Ô©.{°Ÿªë�­Ð ™ð»ëú`$qÆšºnƒ.šŽÑ³eªÚ÷ |Aú<`Ç’Jû¤ÒzAp¢ñN†Ô\HÑ_Ï·¤Ø·S]OÊ¡Í�g6j!G³Õ�Ë!M•pº“ Òuµ®(ɶLÙ˜X<#{„ó-¸Ôu:¹+Nç1º§Aãg Ox¾áè³3ø‚ôƒA³‘)ÊpŸ‚\Ü´\–teçqó®jkÔÌý6ùÑ”2SÄÎßÿŽ#¿â�f¿~ð+�^sZ”DÑmŒþ ú¢4Êö/K¥{—Ööè�Ñ9F‹oSÜDqéɃ'"eÒV½ðßìÓ‰ŽÜµsS½yÌŠi¶¦Gn Ù&JZïkMé ¦ËH'96ÏXÂqªè­™Û"Ω³`H[u›ÿ/óÔ‰›%KO«ÛÖÓ£Ç-•W¶m UÚ8Dâ[cý¾ucRÑ{øFá[¥LÿŽ„ö›«úÀ\iFYõ?ô:NË*¥œÚ¾ï9~_Z-¶àƒï…JŸ"©­ÚPÀï*¤S$¹ Òç'ŽoãŽà´Y辋,C:+|7� :h�IRä~DXݹsE$‡êûuN›ÚŠ#5ãßjéx0•�yKXxÛÎîL™AÀ `0 ƒ@ôC Ú r¼Dk9ÕÒŽòX|ü85Ο?�è±°›õ=”Íß¹“�v öi¹r”§ú¼ï÷Ø«ÇV kVjðöÛ”3CºÍÚ* |¦mÞLi ý¸t¢£<_«7}|D{»I6Æ©±Âj'—Ÿ¤™Uä�Ü\5rQ�™uÙqóìM‚ƒÎØó@tx{¬aÅÈ›ö_�ŽiŒÖF`RÛoØÁû¹tÀ#E¢ àt,]Y¦ãQûÀˆÃÒ¯ÈH8l¾ŸÆ”*’,À¨zè4 çH÷£;+¡;1 ½ì©R}N Äd ®Ð¡èÞP¦Æ�³?Ú­i=Ð Ñ‹¾)â‰éÎñ͸�AìÔMË$Ç&™–Žq˜.~Œ‡)Ø�ÏÇ£h™f Ž)èƒLfçéL>AiÙW'8æv†T[H¹¥ zÐq°³©ÃYÜs¥Ô'€öˆ8TŽìaafv€À  .å�Nt@sä£Ï$![�ækÒĦ• ä3p¼?äe 0•ë=y*¾Oä+QDYÀ!ž$™töã:ªúpadª~/Èž<ŸB€¾C ‰ˆ0¤ô°ê­ ù‚ÂTª)�àˆ¿ì0Ê%Ûª´Ož:•ƒÇ’'¬Ö¿G쌓½@ã&CVçß,éÒŸPÂ陲³³lºlóø¡$ÇvðóŒÈ%<›¸6 (A <| uJWbÍ™O8Â#?QºŒ2r©ª�+^¥¸ƒ>ÌÌÎ#Œ��Ò³-JÓ&¸ˆ%ô„ç®8?Ÿxwáø�Ÿ‹’åYd�Ÿ38“•ˆ;êþÂ÷¯ÒQÁzTÙ„¢È�?ÅM—,j@ÙËe¢Ü[m¥u½ø ,"ˆt­ÒNAÛûÈX,£ˆÔPûuš+ò^m‡9„ÈíL':@*TY�Š·/Î7tDæÔ›CÏ=Bâ×Mi`¡´¸�ªƒ`O>¥Ó«OÓ®±»(aÊ„Tç·:zÓH]îËÏȼIr—ø[�.ƒç»GŠDD%,E4}kÐv•sÊoa•F®çµÂòÍÕ÷¢Þgiøû ϺŠÑëY—ýϹRÊaÞ/«N[kÉõØ„�J†3Ç ��SdzC¼Ÿþ<"u¶MåkÎï%õMÕ£Í òÿ;€°@šKßÁ2-ú„&"!� N@‚�†žô“%•ï÷ÐÜ—Ný£DÇRþMQ;wn½ñ®�ç`Í[ÂÂÛvÁŒÙh0 ƒ€AÀ mˆ1D‡ŽøN³óÜi”Ö³ƒ„AH–—I‚1$AHDÇ&¿î;gŽ[—V¢Ãm£ÍJ&N/5©M¡ƒa³YyBt,`âfÔJöj²5+SFü‰ËäîÇT}ð`!èþ ç­R¸p°Dû±¨Gžœ½r%°'+Ñ� �zÏžMþšày`ƒ€+£ÖºÖõJœ¯·»Ct޵n°ë|BÓÊO£3ëxhòœ'˘Œn�½%FšÂ1‚hˆð&:Æ/„ËÕ±!¿øÿ]NeÃÎ*ÝÚi'Ó‘xy¬z_‘¹rûB$ H'¤­RV¿-§À«Ö‚ÎáH©Y@OÖ­v)³p­‰¡®H‰Œ>’Ø'LÇgPg¢_Gʨ ßµr»J›¤‹U«úÈ1bÂ[CŽz¤ó¸WÞŸ¿1†Ð^°î�J9ä1×iÅš(¥.Êœñœf%-“H®W¢µ)­˜Å© Êb¤}Â= ýXoÆ»ãîdÊA^i�”¾„ÓþôrèO =•Š¾ÝºŒgò‹!LÖ·�[ c�ýé†çº¥ÏÂßz÷è.}{h—qMU Õï{0<›Ê²óùÍa²O·Ñ_ó;f€«×‘)ê~U[vð³c%ÄÔ¶ÈœŸY{†fT™!ýØ/¾a�î=¢G· M 8óaEtì�°—–¶^*öa�´ÜÞ’2—d¯©�šyˆæ7š¸ÅN{CmÔ‰ŽxI≔“ & ¹q÷?¼lˆ iº¦)e~Ë}o=¤©ïO¥Kû.‰z/¼øB`Н[çø[ðíÍS7Õ�SWÔ‰ŠIÝÂDG÷ÉïÖæ¿CwŠônÔ�è«QîmI†Ô¸A6#ªL7o¿¹z=³^Í ½D.ƒÀ‡N¾9v¦kµ­|m&þ5�MøàÛ‰4�ü  ï-h+!J¦GÎaï7è!=! ØgåÿkðþF;¤ëCÄ$Ì.-ŸÜ"§ê;¬—aïï=÷Ç�>Ä¿2ò€§T Zwã¸n%,¬ëª¡µÜº®ê™¹AÀ `0 ƒ@ì@ FÖK·™I‰>RÂZëˆ*Ѭ™ØTá»ïè!§\B´ÇbÖ³°âMÇŽ¥ ר#ÂöÿÊXÍZ˜_æ’ùüA[8²äÒMö‚Z,^œ8T½hQjÄ‘)B¶U“� ÒjíƒÍëÒED‰¨mjÂÄ ‚àÁE?´óõi¤P"ãÓ9ÚÖ©R%ª"°3@IDATɺ&V[ËÑ)8:EY³2öD H”áË– Ý‘{¼¬[zN�ávh‡([Åçô=Ÿ›'†v]ªTñ¤jˆuž=~FËÚ,£ýÓö‹ôhðbÜ©x‡â„m»Æì§pÂ(CÊ�ë§®SÍi5©@öü²�Í=–®»JÕ&V£B­ ‰² Ex¤í^ª8²"ïX\”a2æ�1tí¸¼O :�éD)³±g”Í›cuè6RŠ×/æQƒíܬcLjÖ@šŒ.ƒƒF+àÇú¯#dê+En  F&–úPþ@G{;CôFïæ¬…°Ýµi0ZÂÖïUs•ëKØREÀ„Ñ‹p¼{j .zð(YÝ!�Ñ÷=Grª·Ê²�йtžÓ�±³iõ<¢+þA÷‚Ñ™�;Ê”8ˆ`Î ÊŽt 7 0[ „smŒèÄhtìßjpf·íà Içˆu»¾bD´ @(篓Ø:ò|úœQVCJ#\8Þ ¹S㺀¹"t Ä�ôF°Îì[³€;­¥h¸, ÝÎ1Hθeœã¼‚sjÔ4F*ÃÉ�cyé? š¸Ê¹�Ò〣j×N�´QÓ:a9ag ïp_â™@´„iÃjpx⺅dêXá,Ûĸ "ÂjÀ!}dÔDᑦMœjH»µk£$+U¹šãú7ï&ïw�}áeºpzH}ZÓS¡>H‘�ü˜Çd–2�t¸×¥‚Q÷V'£ªUóó[ÏÓÜ�æÒ]×ÅÅw£ÆÔ4¹ôdqXˆVÈûQ^±¬H†”ÙSR§Óò…wdÎш’.IoøÉeõXu¦ˆvèqÃáä÷æ¡Y‡DTÄÍ37éþåûü^àB¶àˆ0ÐÉBʨL%2Q«Ì :˜Nt´ØÒ"ȹB›é¬2É`Ûö±eàÚ6l=¾Ë¾fàðj¹WE´Çë•Ø3¸ óû÷"î@æ{j7®r›t²6ôj4so©§Ø›²AFê5ÂòÍUý€ìù¼‘ßWý]ðmaêdzšKÔéÈ#¾ÕV‹�ø`";@ ©ï¬Â©§ðÝÄÀ Ý@ÈÙDêp¨rü�Hè}´x_–†¤±…o#„ËAÒƒ8Á·šˆWÙ"|§Vº®öf-·®«zfn0 ƒ€AÀ ;ˆDGT^Ê«wîþ®³–H‚¸q ‘/óÈŽ˜hpw\âÈŽ3’�ÅÚÓ%ONˆ\aßìseOî?¡‹{. ²NŒ}^-:+~ #Âé£r$bú,r”aH…Š�øQgª'†ýùŸ“mAˆä-â™Þ†'};Õ�é$¥Rç’Á¹„ã6H‹ƒ”HÛ�¹'†æUÙI/æ<ši«<1ŒîÙq‹ÛëûtŠñ¤OOê úåÜ)éKžšsŽg”Îb¥ÍáI¦NôDD"/D!Ú ¤%È@;Ááçé A^žb²F¼GІÏ(æˆ>?¤[¼rä ¥Ë›ŽR½š*¢w¦þý6²¾È{SDú»Nu¢£÷?½E$ô7®Ÿ¸.΄�GÆß‡ÛnÓÕ£WE$G²Ì<¢<{ª ‘”õÃ*yûÍ�a08žNTárõÌqþÁO¦ÆÄÿBÐæp2ü„ÿ�@z@Û#ÿÿS¾³ÞÞ¶sÂØ” ƒ€AÀ `0D/ ѽ®—9Zƒ€A –!GFÛ*D›yÔ/FÞC€ÄAl7O"ì0J��#:âØmy>ËbÃy‚<ĨâÐ"PðL{þ@¤"F�Šªë¥®bîtÔvD‡S]Sn0ÄL¼%,¼m3Q4ge0 ƒ€A ö!`ˆŽØwÍÍ Ï9púb4<"c�:éy`=~$jʺ±Ý�~ z)ÞX§ïˆ>ýÊ›–‘ß&¶œgϦDK<ŒRÒ¯RÕð‚ Ñû0ˇÀƒkDz­}¾ûhç¨�bGHëˆôŽÁ™!:‚CÇl3ļ%,¼m;P5gi0 ƒ€A æ#`ˆŽ˜�Í Ñ �ÅÓXdöc÷ƒF~î“CÖÕpo3×�©§CòÆœòÂ{ÓWD·‰-ç‰<óK§‡MDæ|úv¦Eä Ð/n?¡É¡ö–&Wj¾¹9%N|Ž!:bfnˆ½xKXxÛ.ö"mÎÜ `0 ƒ@ÌBÀ1ëzš³1b#8âÀw°ÔÉS˜¨|m)âN-\Ná);·�îó®+j{ª�âݯUl9OhÉܸzÜ *Ÿ‡uyŒ=Ÿ H8€ž=~FÉ3'§¬¥³R¹Áå(izMÁÞá°÷NØKË>[F÷ê}¿7A@ܘAÀ »P„…·gÝ·o_o›švƒ€AÀ `0 ÑCtDã‹gÝ `0 ƒ€AÀ `0Ä$ Ñ“®¦9ƒ€AÀ `0 ‘‡€!:"k³'ƒ€AÀ `0 ƒ€AÀ `CtŽÙd0 ƒ€AÀ àˆ€!:¡1 ƒ€AÀ `0 ƒ€A 20DGd¢möe0 ƒ€A æ `ˆŽ˜s-Í™ ƒ€AÀ `0 �h�€":B«µám»h –9xƒ€AÀ `0 �@ ÑEÄ.\»s‡nÜ¿O)%¢ÔI“ÒK/¾±;ŒÂÞŸ<{Fç¯^¥„ñâQÚäÉ).c£��ZqŠ.ì¸@‰Ó%¦âŠGØûmô#ÿ=þ”0uB*ؼ Wû‰ŒcÿÑý;DqâuàÕa6ºs“(Ir¢|Ûž+VÎ&úó0Qú,Du>qÛdåÞm¢x ø/~�M¦À `#«ç�8@ôr&¢z­½ïìÆU¢£dûêeyͽ¯ƒ;‰Ö.�eïT"*ú®ûöÈX{úÏSÚòýúï¿ÿ(oý¼”.OºÈحه†@dß¿Ï!:uˆè•ÌDu?ÕÄ, b>�=}B”(Iø_Tß!D'í·zS¢·>Zn-‰ÈûÝ[ÂÂÛvÖs3냀AÀ `0 Ñ�XAtì&«m=~œ&®['Šk+F5еV¡§ÿþKS7n¤?ë³—/‹uT¹½éãCuЧR¹r¶Ûtô(�^¹2p=¸…+Ò»¹sW%\¶-o·œv�ÛM©s¤¦':„KŸv�¬ì¸’vŽÞI©^MEÿìhW%IJÈ8Ö·ÓݼÆ÷k¢ƒòQñ¸T…«—ˆN&:´Kþa=n<¢l9‰ª4f‡ ;ÿ“¥TµcÞ¼Ö›Ò¹Z¾шùîç÷àÑäaDÛVù�$º}Ï Qê—‰ ½Mô~ ¢Ê e™{˨[»âOgK²1ëº ù‚èÀ¢‰ˆ~^!ïQ+Ê ¢º6 º{‹¯ óÓCfmæºK•5qí&oÚuÆká7ˆ²¾NÔâ}~Íÿ+ÛVmBTÿ3÷=âÐ…?CW.Êòü̹öøÑ½Ž7k?ö$Ú³)ä– 6§l”÷ßÃD­Êý,©ûµlu"ü%åûÂS›9†hùLY;_1¢/GxÚÒ»zñ>ï&*S•hlÈÿ8îdÝ"&|kÊÍ Ù1˜#Ÿ{ÕYc‰´—e †[÷rßk÷¯Þ§¡é†Š]ÕžY›ò5°dX‚ïÍ›~7E/IÓ'¥8 øã`Ì o]‰öowëF¬à™�ÿmú Ñ›%ƒnGIÝÂDG÷Éçp4ߣ‘ix?\»,÷˜Ñ'â¾Y±¼o¶¯‘ÿ?�¨Ñ‘Šÿ'+öžüf->Wú}Œñ÷… }á]‰wfHæÍýRŸj»·„…·íÔ~ÍÜ `0 ƒ€A z#+ˆŽõ‡S¿yóB¼Ry™èÓ²¥¨W®_¿@g= 5lH%lH€:?ü ˆÔY×§O`¤Æ‘ ¨ËÔ©ôèéSlr´å={RâøñéÂõëÔdôhÇzNª.L_T úkäã±céGU(QSüuö²i6}Ëš@` 8WÆŒôó'Ÿh5äâ²½{iØÒ¥b¥IéÒAˆ•›©ÒwÎ:xî\�¶ª$ÒØlQ¶|ß>�È'ÔíV­U.T‹j‘Aàb:Ñ�~�j±£–�ãN6q5�djL´Gy4wR¢güè[žkõoËΡ¿�ÏŽæ½÷e$�s­ÈÝòN:"ŒhoÒ)âÓ‘yfó&õ xå žÎ$\#÷½ÿûŒ¨MeIJa‹ºžmù•»i™«îÒ£DÙßp­ãÚWÏKtö„«lË¢Kç9ª ˆ«¬B=¢f»Ö±´”�ãK&@”Õÿ?{WgUñ…Ï_º»kéî‘i¤Ci‘�T�.‰•î�^Z@��®¤»Aÿç›ÙÙ7{÷¾Ý÷ÞÂÎùýöÆÜ™¹sÏ�{ï¾ó�óž/ß°=¤òQf¢KgƒïÅ+ ¿ŸýÆ}ø7¢O�XUO0±«kcVǬëmkˆ:T'b\\@žo&Yk…Þ>îžE<“_ô'j?Àó¾ÇÃ`Ñ¢í(`½·°4øéç j;¬�އ×ÒÈ”#Åê-®G9ëå j8ò˜'ó B:ùnJa�:õ°ÆËr~c�¹�9ž¢_ëowÝ<ÝgDÒ�!ìÿ²èGçÊ_‚hî.çÇÝ9âÃÿÚcþ@®àûÙÆÎ)‰“Ëí –úPßÇ ê»sÌSÀÂÓvîŒÍÔ50000000øïj Bv(Ùpø0]¹ÃnÔ,u‹£81bˆí” PÅ)[ZÃX è8µú]Úq‰b&‰I%{”ôèªÂc¬žDt¬œM4 �ôþÇ…�þ4. y9{LR¿;À†cžÒñytéÿùFð‡9d2vKóõCqä@ öÆDdDì¸D�;+ÇzH, ÐvHã¼þ—’mþ Kx{ÂëòíODµZÈíwa �ä2üêA´<¦çíxUúÍ#˪4$1_n—å6:�7a%QÙꎶ0R b#¾Ð&ma=.�ÆÀ ?J²ç粃jOÎ�ªõtUÃŒ"Ôiå¨ãÉÖ£<×âËÈŒœ ´” ø)Ð%€\+dƒß¶—Û\Òd�ÛïËH˜=›ä>Œÿrb1¨àLðü7bÆ¢d ë£nkµúëçO‰~!¯»ƒ¯Ö( wÎØ®ªŒäÉU˜ŸÓ}�[†¥Á/ðÙìK Ða¯—ð,uwÜ»MT’¿°1O!×ÿ"ÂóuÆñ¯+Yß3'þàç§€¬o=&KÃvù ¿—–ó7�›´wVhž5"é´]êpäÝv©ÁT^½Áï]|›Öb>Ì%)øúŒM-˾~N´xФùÃ÷Êqw¾»Ò§ªã)`ái;u^³60000000x»5!€ë-ê·hm?qB/ýòKJÌ93¬b:p|lóæ”×Ë+@U; cÏéÓÔk¾´ˆÕ`š§®UÙBbDzø;Frçö�±T»ˆDQ ÍÂ.]�–]=½lÑîÝ4yÃQ”$n\ºÉùAózI·nô?­¢Ð0f _§.A[@è-“%eJú¡qcŠËyHtA~’ƒ.P¥¼yý‹õˆŽ¯kÖ¤Êùòù{Sá„Öµ…ÇXÝ:@½Ñä}é­ Ã' ´Vyx+.óf €P¿«¢¹u¯Èš¹¥Ñ*!cv0”¦d/^« Òt_ºÑÜZ'¼÷·®b/üò¬Ëذ–íÍ?ª¡ª‚ï»Í+»\r€(‡Ÿáó´ŸŸÆíÙl|¼¾sƒÁ»d²>À:âzü@ÔüKYj²Ê ì¡O˜óŠ6 Ñ< 'Ë|5O3ecìû8.”f?ôàóp9Œô}L²Äýåþm<¾2²]O6”5íêZˆvAÔ d;ÏMЫéàú)ÈÏ¿�@ÿþ:ðhh\[ÀÃn¯4{7ß¾.�ŒýȲJXü¬çr¶o€gš ¿rwçè‰>«$Ç7DÍéòã`¢ñýd‰5 ÀÈæK2O‡Ü Ÿ%@€- ¯ +Ú¬ˆ¤Ÿ¶íüUÞ;PT�^Ø!úÆ·4—¡-Š­B-þ½³ÜµÞÝ�ï®õ*ky XxÚÎ�±™ºFFFFFFFFÿ] ¼s@ÇEÎuáÍ´H 9J£ Gk؉»@G´È‘"'Fpă.u˜ºê6çè€lbê*ä꘳};yoÙ"Ê&µnMˆºðT<::ϘA‡™F*)'GÄʤõëÅé§´iCYŒP¢È¥�è (¦@5¥d5SW�ô£®jüþûÔº|yqµ[r4Ç…lùc™Ì´WAEfˆJ~‹7 t€~ã䊓ô×Þ¿˜+ÿ_J÷~:ÊV3ù ô±ÍÑqlñ1zz÷)¥)‘†Î¬9CWö]¡RPÁ¶éõó×t`Úº~ä:%Ï›œJt/AQcGÕ/Ul_vœ^={ í`cê6øð#þx¦ÃØìLPÿÜq¢x ‰>¬'�Óû¶íåÇ C:¾=õۥθœç·M\—ë#w 0À“Æá$)ˆ|®Êv  uT=Ö¼ òˆýÆ,è7/¿Î²æµ¯J¤ëä±|l|¶z®#ü/|O�uA�…ñ¡ÏØ»&J@c�ü*J�K”[x‘¢­ôá ”�w*Æ*³Ëçä=,P’õÐ ð=A q¸žÙkÿøƒ†¯”–ÃÔ‰ÑÀzõDŽ ë8\ÙwèXÏùG†®X!ºT¿>•Αƒê�%è«2&KFÞíÚùŸV:Úø!]âÜ«9wõPâ èØö,õ˜;WÔ©W¼8¡WE:�àzµ“HléÌà7»ãî”Áu´×háe Ð"O£<”(s"‚±£JeIDOuT»ätð²\ sÑõÃ×鯱þÇáÅzÿâ}ºzàªð@ýêæW#a ÿãØØÐ}½xôB” /Ü7)( Ã“±Þçh¦¶mÛ8op;s"ûFœ¨ÞNTjÏË¡ÛUeÍ>pðJÏß##œV¶@´ÁÕØ“z·<£/¼PA‰ƒ( HÌØ2A²ÕC^ï½›Kp”Pe?fCÇ7.#‚‡<4= ë±æ /ÁÕ‹ÜÏkŽa£€xEþ¾M±§°ÑY‰n”Oå%s�€Î‰<ᩪäóoˆ:’{ð´-–ÈÝT>YS.;Õ’}ø #«Uöû°�¶¬,µ^ëÚ…L«ÔPƒ~”n±A ú…q¿UO¢nß;z…Q$JÀ ÁùÑ^xèÀ¯Ëü 2™*"rñ¡ò=¬ã±@§P—õ›,·±ìÝŒÁŒÙrç@ÍÏ3å>–8w.þS Z‡ð1DL„–lZ.A.ô» Æù�Çlõ4îVŸhý¢ô"*gÎNÙ ‡;£rŒÄ½-œó41Jt J•a 2‘ª4ਠ,–!¼p²¡ Éå& B î u”ëÙXö´æ¤¤Gõ €&ÌÅ5ó9*j„ÌkS&¥¬×w"÷ù…Üöt ÏmP’\ÀXÊùÍe»þ¤Í$�ÈPüÿðW¹Yê?Htþ„¬‡è$Ì Ð¿é²{ÑçUäó‰ˆaamä÷™�kÓÏg݆w4 €;ÀJ‘Ëε%=æåp¾¸·<_ˆú‚Á’…çéŠÃrÛºÄüV‘H `Ó ¿Öºžî¿xø‚F¥%¢AŸØÂ§E�Utðþç÷ù¡aqtt¹Ð…â{ÅQ!û&îuÛoOI²'´TˆžH]45µþ­µ8¦/@¥82åHQToq=A¥×·A 9&ýºé>¥/›žšmi¦¦—�_Òˆä#„@Þ¦y©Ö¬ZþÇu TX­ö´ßKTxzç)ýTê'ºÉÎqSÇ¥.终(ј¿åÓ‹O´” éj±­�êJ h¬¦š"¾Óˆd©ñS qè3¦Ýœ>}ºªæÒŽq9÷™UÜ™?‹Å—`!¾˜§ºàûÓ˜ŸDu`>­úÓ­‡ï’NñM@ŽŒÒü¼)QïT|ŸfÌMÌÑ7%‡g¦ÍVˆÓÛ  ´Rà…Ð%Vêó¨�h¿oÂ>ZÛq-½ù=ê÷¢OvŽª›ñ­l¹’gMLNvt™îh¼m;ôß*D:Ÿï,Õ©~-$Ò•æÁOt ãý^ïSù!åÕ!±FT (µ �Ö4òÏrnÃ9šóáQ^}Zu*к€ØÖ k.ùH�K«÷ƒÞâºçÍ›GÛ9·š;2Ž�B¢1µiHù¨ ATT]?l Qxw,ž"ßß8Žˆ$‘JtàTåRǰV`ÈÝlèV‚ù°Ö“o®êëüo$ri9£µÓëZ·›—‘Žª|Þ.þ”P{ŽuDÑ�Š¸Ã•ïºüÿ! ¿¥@”à D"Çš³è¼àÏäz�Wü1_{æŒ=Öœ>M V’,V,jο%Zs”ǼñüÁ`éß¿¿:ìÒÚ.©ÉT2000000xg5ðV'dÈÎ ƒ.…8O"7æÎM lèôºÖmO€ô° è”æwê$"#œ¨�Q>aqž=™¬j¨ñ FÄŒ*=2­Ç±ïб—8ôäì€(ÈÉyøìÕ`¹KM2ªiSQnt ±xËÉ“ ƒ=ªWw tè¹HúÔ®Mó°»«‹¢HpuUFކ ©À}°ðäÜÞÃ+êÒ»„7�ÛÛÐQuRU*ÜŽ­—, ÔЩ3&dŸ ’žVû‘¹ÆÛ Ô¿*èÉXÕ9Âs�$Ç ´€(#¯Ü ~‰d¦ :‚ߺ³� ãè¡db鑨󓃩ё8Û™ñý¢ÈÊ?%�ܓˉdÒhìÁù&‚xÕ–gc4 í7æœÒž  è'@CÀ « ¢cÆH¦ƒã¶08é’ƒmrˆf°æž@î€RÈšÊè�=xêƒÖQð¶âçéßm]îÑð0‡¡ yN¬ýûW¶Ù˜òѸ¾2ŠQ1èÇ™è Hû’¾ÉZW¿D{€;+Ÿ‘5 z%D 6Ñ ƒñ¼*c ªžÜ ùÑ_5rôS‘Ç5†ÇgÝð¦xÌ{7sÐn¥çqb®�Î à @&$u…±_Í äƒ™»“)E.}˜Áq†¡³eò`ÁÃ>í{àˆrÔtoK§Õ˜5òBõ†ˆ!�~ žä “¨§"šà½‹{ˆóx�Ät:x•€FPÐñ¨¨uLé*´®Mõk·þ�A¨?HÚ,KˆÖ°“Ý™¿~¤<‚ˆ(Ñ¢êê÷¼÷86¬wTGÂí3À‡|úˆ÷yÜ'PÞ ÝÐotÄJ‹z\gŰ(PtQ½îñ$eùsÑŸ´´ÁRŠ�<¶È«! µ…»@ÇýË÷iŒ×¦û—Êô/Ce”ñïmV¹YtaëAÙñt@¥ê@G«Ý­ù°tÑÇQe|*ÒA¾@öŒÚCë¿\/ª"b#fâ˜âQÀÏ$QŠªôUøÞ¿)�'þ°®AŸÏÐÇésX§x–¶ó¿—V�Þå¡§ß\}”Ið~Ã;ãÒiíôzζ‘ÿèùSÇÑd©øÛÅ×a•ˆ üO€HE|3@/¹#ðO«Zl÷AQ…oý_I‰w5ßeDþ€ßs>¢(ÐBCÏÑL÷Ù%P•0+¸É‘ïó9ÂcGÌÖ~'áuÝßï¬è3õ›Ž�ŒŒŒŒŒŒÞI ¼@DZ›7)—_BmÜ…’­0‚=Ñ‹»Iӣ@Ç™k×è³)SD7H0ŽDãAê|XßboûC¾¾´ãäIÚÎÔ[ÿâW K¦{úœiŸœ‰;@h¤¬@&3CöTüëÑOÚ{{ӱ˗)2[BW2¥U,öD´:P½ÏÂ…´‹Ç™A/ìÜ™ö0€2rõjÑ@‰Ö~¹OV0ßîØµkEy;¾Hhîªè@Ç× ‚„ïa)÷.ÞœC'ôsªä©Î€Žš3jR¾ærœã³Ž§Û§o“jü˜ÿGaDqÖ¿:Wp@GHƪΞk$ÙF²mˆJ¬,÷‚_¬ÀóR•‰ô<ª%"ç�.½­á=/zˆÉ€< শ pÿø­,å“5gûêíÄÓ"ì -zŸzÂõiˆJØ<¶Ê+Ò•äÇð†E‚hDˆ´€€ë†c«€Êèæµ€Q-“qdƒŸ% 2¬¢Sá"F@U½)Ùë4œYÛb_E9Øñ¼[ëëú¶³Û¨ƒ±ÀkyàçD‰’É$㨻b†Œ~Ñ#¥ÜGVPÇî®”hA‚lí”Àx¸ÑWæÞPeXë†7åy‹9†k‡(º2�â ɃÒ)Ú-]CT6b¬ƒ~—2¸C¦2P"G@“�J¿Öœè×[ö -ÐW'p°Ý¨OŠ”aÀ`kÀ ¯mÀ¿i™öé¢<(rÑ *Ét‘È]§½SžËsðÜ?°ÏÐÞSÑEȉ3{»óÞ¿=(Ò�ˆÞ*zžTªÞ”¨œ:8¡�åÆŸ7hRîI¢È舟.>uñ•VÌ£ ŽÒ²O—5N®„€"pƹíêí'à; c‡œ÷š?_Ô °QçVëð:®½N“óL§¯:‘#3¾(¬†â¿þ¹9'Fåd¥N�ÎÏ�<� Ù8zãÔ-úxÊÇT° [ôX¦˜B×þ¸æH•xÐáéXž�?^�Æ¥uB¦&KÀs%$Ò’�Õ{ý~œï¼I” ±k½Á°¬è‰¬ ±UA`˜� ä)©¨=Æöá„�CdùA tcª,•ÉNˆÀH´å/UêX—K-£!�ÔzÈLG¹³-Ý€ãHÖi�Œ€qXQ+—üX?¼0yÉ��£=ŽËm}ùÅÇ2·…âÙèú¢õH½ ¶ñº\0QÒïÀ«SäS(“œ‰2Š•,Vµ½h¶À%¯Œvê˜Ýúç#2é¸Jàý>Èäöåu 0  dTOŽx.svؤe-÷–ˆ ú„_Xƒç¾Ó·ò<èåó¾Lm68`½y® iºnÜG.ŠIƒd4’Šòùy&Æ-d[DŸÀx©¢7¾ý‰¨–ß±î ØÃœç&’Ö#ÚRÑK(�E ‰Jn,TT�³çÀ®+Ýøæ,‰í˜Þ|o†ÊÖ ÷å.�æ ºLÎϘ< ›C®�,¹‰š)Ÿ¡²ÕU�Ð]—H$sã4áÏë×cìûƘ½›3�׈k°†ÈP�½)YTg!98òVô¸Ñ#Ð0îù2 Ïy1 ¶@çæ@ŽÈŸ 9z£áRŠ“"}y•oË©U§hA�¡ tœXq‚Õ^$úo¶™�…réIå mV·ËÝØ"*ø-t ã«[_QÌD1õÃb{p´ÁôúÅkAOš*ˆrV@r8'Ùje×ûömºwï^pÕý�ã« RQÀÞÁ›/¹ÞÞëNቯ;¨� ó¢ç¿É7Wö&—º£ÆÔ7DoçîvDÐÏ�h‡n@_‰ûåª WTÃb2âß\D¥"ÇœàÔ€ÿ& ”½õÿQ:JØõ=ý{ŽRæ .ü¡Ehw»2_~æf>L³øïüÝ»þU@A\5K*pê”(3@‡¿j̆рррррррр x+€u—8ù£7‡7ÿÄùôq ‰ìÊ¥O/x]kqBí˜Á$® ÐqôÒ%êø[ªX�|{ç³pèàߨôÉèÑtƒ¯?˜7öí+¢'D§–…«@Ç©«W©íÔ©–Öö»*Ѹ3 ­ºÍžMÙh�uÙ¸tiš¾y³èL�èh® 98ºfRëÖbÛ•ExÏî>£ïò¯9ð}ƒ÷Û*ÊóôMžŽ5´“‘[õãl¿ «òàNyôàSùÛY]½ü {«×dƒ'D7ÆÈ¹\ÈÓ Ó�Ç»K]ö¸_&A€+V�g9 Æ uÒ�åªÞnó~R¹ç*Ýòk Ò†N»äæ»Öµñ³­—üX�C­á�䲉쮑ˆà€1çF"A`ÌøådÀ\ ªOëÉ™á�޲H2q–pÇœËpÌN@¯Z#;Û]}UÚ*DU´eð Æqˆ¢MÒ°Ö z R@EDÈšž/aôC$Î Q† •[&0â�ÒI‰Jð ƒ<™�É�NÒè�Äð¿±ýfó ¢Îudíe8{[Û#i,¨Ú =GñøºÊmO—ˆÅ ÖîpéëT^ÃæÊéÖ1`þ©då£Ë!äÄ@n WEÑx¹ZßÕzW/:rûĘi'È�‚d½�?HðEî9–Ÿ'Bž“ôÙøY;á([ë:¯£½ãöR¤h‘è›gß•ýWhZF„Yþ+@¨‘ÿ y°ò4ÎCµçÔ¦q™ÇÑ�³w(kõ¬ÔpeÃ@סNt ÄÙü ¿š¯ž¾¢ocÊ—…N‰µñ«�´kÄ.ñUŸ'}(rôÈ�ú¶+ÍdävýÛ•�º Ï&€¿àÞ'Öö—Ïqdj&Y:b>SÄYTˆ÷$Þ—=NH¾¹²7¹Tù?œ}¯ôºžnGýèÑú÷ν)”WÈ)e�lÅ·Iã!‹öåbPßN:׿¨<þFeÉÃÿã¶«ze�8‡àR¦ó¸±Í×—þÕºöŠŸZ!!ÿ¥ŒÇ$#×tc6�ŒŒŒŒŒŒŒ\×À[t¨ËzÍîl¿ž=KÓ 5]�ÄvJâp¾‹ú9sRû"E(¿“Ü!:pžN3fгFn�×|îç¯ØªÊâjDêö˜;—öó5¤YÏ@G¸RÙˆ«@ÇO[·ÒìmÛDÕ ¢4íb•ù;wÒ]ΛsšüüÕW´p×.£ý‡’‘+9xáu›5Kì&àä€hÑ�èýÓ±c`ƒc3Û·'¯$I°¬„7Ð� ‰3„^Ì(Eà Þøv‚(袃L²$ð²h<ö0~à@Jq½«œ¸.E›¤ß;•«E�ˆ< ×K�“}ˆîI«h³PŽœHÎ 0" “ã—%K»Ãí(Y~±º oè@žxãC‚{ŸÈZŽ¥þ}S9ŒG‰~A4ò+…`y> !ùæÊä1ú²s"ÐëÙm#w€H%Æa¨·JDÑ�ž«)¨èL«~@XÊïßm»w;¢~•� -¢,ñÝÁ;×Nš<«Ùœ£)ùÿ‹°�})>qÿ~ZÆ Çã—/ýO…Cåj°ƒÚgœ°GIá7‘O“Š{ÚN�׬�ŒŒŒŒŒŒŒÞn ¼•@‡®ò«L5ãÐ!ò>x�.hÔHTþS ?Ë Þ€·C tìc€â+*¬¢€Žséð'G~TáÜí Dr´àœ#�Ÿ?§´‰Óì¬]ùï» t´úñG:Çܶø‘€ql´ÿóÏô+ë ‚„äÇù‡‡ŠÔ°¨Ónút:ñ×_Øôè@¡ž§£H¦Lômƒ‚ÖË¿o<ç5È‚DèJÞÐ1³ìLòõñ¥hq£Q�¿{Pä‘ÕpèòîËä]Ò[ì¿éˆ “±‚ºê2ëYåñ¿¸ 6@[× Ú7»®@!*)ˆn0–%r ƒ6ŒH4­ä:O­riä^6J"¿�.zå!³d"mu\Ï;Dx"*�W<¢L`¤„A ƒ5ŸƒNÕC�õ•êO­u¾pä@ž%HXŒœÈ)‹½tõäÇ0º–©&)�T}}­ç}UÀ «èºRÇ@E„k³æQÇ�­$|Äz��%(Ú®%S‰@+Ùr9p¾ yıT‘™sI÷³œ'ÈM¡Žé\ïx<©¼ˆy‚¼ •Z÷¼WFuYó¥ºÿh�÷�GlÕcÉ›.5,Uв¦LI÷9· ŸÙÛ·SÖ…>.è¨È÷*Ÿ——ho·HϺ5VHåôšÓ4¿štÉÍV3Õ�_W€w/Ü%ˆ`Œ�ü€OÇRyÒþïËÒ0�|Lúbx»J<(’£c骒ŽG�‡¥“ËHl†Î–€ÀxÕ#OêÀpºÝX‰¼ßv�=UiÀ´@ ¶ÀàŠ<_}JtŒ�É0ãG»•Ö­í¯Xô�HWD7Ž×lÎ}|ÏTSIØSr›¤%‚a¢'?F„C16è¦â±À(\FÒLÁ0Z­l<�Ï× ( Ûê`ÇÚN@µÊ-%È�<v2k'÷\Ç€Og¦èâ× €TŽýΉ™GK#Ú)Ê!»>t 9G>i'�»º(Æ÷5�§¶@IDAT  °¯F: X`˜�áýoX€(®÷x yžÜ–eŠ6)v\iìÇ}Tú0Á3UŸ ²•ëK$ ïXSê@(=¬ùV†IBÕ”®� €ßSl0Ê&Û*Ú'W ƒÊ@‰qä © nÏ;“d/Èq“2�óówäŸP‰ÓSgàû:W¶yñL‚c{øyFäžMÜ”®( CŸëŸcç Á•Ó&¨ˆ%t�ç®(?ŸxwaŒ\HT¼"'Yçç Æd•Äuâù«ò¨`ÿMÉÔÂSéêïW)J¬(Ôð熔¡B‘”{ç÷;is¤Ÿ„Ð�®ír{੊¤‘ê¼ÎÖ ¼WÇ‘€‰ÈíD:*T[™Šv(ÊNæY\1½~þZ$GBq]T,´C..PU¹òêÙ+:·á훸�b$ˆAuÖÕ›†ë6òÕ,�.O¹•¿ISº~zP$"*Ñõ[Õ¬ò[X­‘ãùEï!ùæê£Sï³Äüý€š5�#jD¯gݾzÑA)‡cA½ "’~t§�!3%½!ÞOg�É<[?Ïâ{Îï% éÑfˆøŽÿX€æÒ{˜¤ECŸÈ …HHg‡€`†‘Ï‘„1ãÈ÷»;óÒYÿ(бšSÔÉ‘CDo|àå…Ç9Hñ°ð´]�ƒ1�ŒŒŒŒŒŒŒÞ ¼3@‡®ñL³„æ9üh”¶°�€Ap’‹A‚ ~ Ap@Ç6¿î¿Xsÿäέ@GpçKÍôRÓ?ÿ\äÁpV× c97ãÖ±U“¥y™2âÏ®¿‡ÏžQ�aÃDB÷äÌ…[­`Á �¶cQKŽ<¹pã†wV õ]´ˆ®j ÏýømXè°ÖµîWa¾Þ¯œDçXë¹Ï4»âl:¿™]ãXÀs7U\ºwážð4…aÑ¡ tL)8E$.Wc¿ø¿ÿ@»LeÃÆ*]Úk/éH<«ÞWxnÏø�臎3²*Åò‡÷eÖ¨ Ñ�ÇØ‡±FqÐA`¨D‚êø‰ä¾ZâÇ|56&_ñ•%8h¬�#Àe‘HØ y#‘g�¦lT˜eW#p"Eàý­èw@C�wXÃX Ñ“ï߆gRû/`L@[€ J`èŸÂ�0®×™Àƒ~§@€z ÜÂuÛ‰NË„s!’ h«”4ø‚)°&ª½ÀkRjå•Q*Ö£v”Y¸×ˆÄP÷ D*/ l ƒ‘ ¢ëçû.DsÆÊ¨ ïMò¸¢M‚±e¦�,Súà0á©€£t�Êù¹�uˆÜ VÁܨ’E޹nkΉ ò¢,žÂ4+IDr¼­MEŽ äª€€ö sùK }Yß YïÎD(AµÚ®�ŠÊ/áJ?È?]èT*AµÃ3ùåpë[UKƒÁ®Pli„s‡ž%øž‰pO�ª�w€=žM%øú3Ø§Ëøoøó­£÷´0j¾ª#{øÙ±bêXx®Ïo:OóªÍ†~œß°ç�žÓóûÏEN ó!at˜z€V·]-Îa]´ÚÝŠÒg«©��”–5ZæÄ.÷†:¨QcG”“&�sãá5~xYÒtcSJS"àùžÝ{F³ÊÏ¢k¯‰zÿ{ïþ_÷.ò·ÞïÛ›³^Nª·¸ž¨ó&õ ?(¿[Ûÿvo ônÔ‘¨÷¸€mIê?Ì_€Íˆ*ÓÅÓo®ÞGÏÆœ¯fž^"·à#O¾9v¢ku¬b—ª½€ëˆ¤|;AÓ ç%xo!·? ÖÈ9¼ßê3ÀzBtŸŽÿ¯Áûí²ävÐÚÑòÉVr©¾Ãz¶ñÔï��S^Yëµ”'¤b‡§„1bU-À1+`aÝW•­åÖ}UϬ�ŒŒŒŒŒŒŒ"†ÞI Ãzë¶3(ÑÏJXë`Qcš7‡*÷=cÊ%D{¬ä|V�A¼éĉtù[DX"ñ¯Œ œkëëA²ì·ßhG–\»ËVP‹D�™j.L�8ò!¾“�mÕdÈŠ´�“öA–vë&¢DÔ1µàà‚„àAE?´÷ö4R¨‹$ãs9ÚÒ¹JªÅyM¬²‰£S¾åè%ÍËØ)QFýò‹È;òˆ·uIÁôHHÜŽÜ!JÖó5 åksEЮ[µj®T ¶Îë¯é—Ï¡C³ z 4x/Ê{T´cQ±}ö‰Ä§0Â(åÆí3·©ÖìZ”· [~Y&æ˜H7OܤêÓªS�ÖDÙÔBìi{à*}4ö#*Ú©¨(ÃbBö t뤜'þ…N6:ŸïL Ò³e”Å“±:é6\Š·¬d¯Áö¬ãĈÖMF·a�£ðc}ÎI}¥À ´�gbɉðííÑ}[p.„ÝŽ£ uÈž_&¶.[ÝQ®oá< Š€!Þ‹0¼»*.z²—¬n�€÷}¯±LõVUö¢:×.±±ž�M–ݸø,ðÎlÜIRâ ‚!(ARvÐyÜ@‚ټŜ׆G'¼Ñq~«À˜ýE?Î[ò‰4ŽX�ëûVD —Àeüu–l<ßßw%BÔ„U�¸÷†7ä\�¨ãzsè 7rCº°Alãr6ì´•IÃe©{KÄ€œI¿0Çyeç}(¯iðÛÃÈ�± ^úJDÓÖ;o§òqÀPµïS'ùh¹NX�ˆœ°€w˜—x&-„Ä´!�kGDýÀ ‘�ÔwViÔSønÂ1Cò_7‘y8T9þ�@$å–åeip9¶ðmDâòµ $p‚oÄ�ˆWÙ"t—VÀº¯Îf-·î«zfm4`4`4`4`4`4`4`414!€Ž7y+o>x@ø»Í¹D¢G‰Bˆ¤HÆ;ÞE�¹ãGvœç(�œ¬=i¼x„ȶÍþ§äåã—tå÷+ì€ÑÞ¡ÿUy›ÆŠè @8w\z"¦H+½ ƒË�/TD À�zS]œïêEÙ€H®B®åÛp¥ogu`�¢ªàƒ—0Nè´8 ümÖ®<Ì?f#½X³7-h«\xwì¸Çíõs:‹q¥OWê úåâi‹—ˆ9ÇSI�T•›Ã•>L£�ðÔÀË3G%°ŠÈ!€ÿuÝâ�c7(i®¤”0cÂÿôp}}8¿HÙ™bŒºƒ€Ý u £ïÓ¾"’ù7nŸº-®€�KÂ߇û—ïÓÍã7E$GÜ4ìQž!a HJ—úzÇ*yúÍ}ÇÔàôrÞ”~®ž?Éÿ/øJjLü/„ÜÎÿá'€Èí‘�ÿzW¾³žž¶s¦cSn4`4`4`4`4`4`4`4ðviÀo×ý2£50ˆ`€!ã‹jDÛÙëž÷H@à ¢‹+‘ v:Šƒ#:Þ"œ9"\'ÀCx»+ˆ@Á3a俯DŠ bTTݯukg£¶:œÕ5åFFï¦<,¯FÀVïær�TÎäÙµ9ã…÷¬·°mQ®<ó«çº¯KDæyé~;Ó"|40(Ê ‘“C�-q¶ÄÔb{ Š•$è0t(�™µÑ@ÄÕ€§€…§í"®¦Í•       ¼[0@Ç»u?ÍÕ  ¼ÃÞÃd¾‘œ‰*Ö‘IËß�K •KxÅÆíã=ë µ]Í�âÙB¯UD¹Nä’¹sÃ}½!©|NÎËcä¿©�oc|K¯_¼¦xiâQºÒé¨Â° 'EðìL=@¿´û…�Ü«ï㾄âFŒŒ"–`áéU÷ïßßÓ¦¦�рррррррÑÀ[¬t¼Å7Ï ÝhÀhÀhÀhÀhÀhÀhÀhÀhÀhÀhà]Ò€:Þ¥»i®ÅhÀhÀhÀhÀhÀhÀh ü4`€ŽðÓµ9“рррррррррррÑ@0@GÊ1‡ŒŒŒŒŒŒŒŒœjÀNUc            „§ ОÚ6ç2000000xw4`€Žwç^š+10000000000x«5 €wsmxÚî­V–¼Ñ€Ñ€Ñ€Ñ€Ñ€Ñ€Ñ€Ñ€¿ Ðᯊ°Ý¸õàÝyü˜âÇŒI‰âÄ¡Hï½¶'|ƒ½¿|ýš.ݼI1¢F¥$ñâQdŒ} äÌÚ3tyÏeŠ•4íX4ÌFìëãKW¿J1Å ü-ò{tžðë”ïˆ? Š…¨Ó· ӿу»D±ã½ÃÓÞÿZ±±nÑÙ?‰R¤%ªûY€C�vÝ'Š�ÿ¢:d ŒŒB¨� K‰N&J–š¨~[Ï;»s“hÞ8Ù¾F3¢´™öud/Ѧå²ìý*D…?x<<ö^=}E;†î ÿý—r5ÈEIs& �Óšshïyðëb¢3G‰’§!ª×FˆÙxôóâ9Ñ«—D1c‡þMõNtúHà~k4%*Q)p¹µ$,ç»§€…§í¬×fö�ŒŒŒŒŒŒŒÞN D cï™34bÕª`ïPÎ4ih`ýú¢^Û©SéÙKþeÁ’<~|Ö¨‘ض.¾œ=›n=|H‘Ù‚;íóÏé½ÿýÏ¿Êõû÷iÊÆ�´ûÔ)ÿ¾p G®´i©D–,T¿xqú·¹Áu¿ðö&¶Pø·weã£üù©U¹r�ªÎÞ¶�Výþ»(�% Íjß>àðë¡C´`×.ÿ¶ŸW¬HÅyLVÙyò$MÛ¼Y×*R„j.l­B¯þù‡fùøÐo¬ë ׯ‹}Tµåóò¢ºE‹RÉlÙüÛm;~œÆ¯[ç¿ÔFÇ�>¢räªJ¨[Ó~ ퟴŸeIDOu •>í:Y×ií¿—fLH�Îv²«lYxŒµT¢»·x¾F&:"…`Ç¥*ܼF´bÑÑ}òûQ¢¥ÏJT­1dØø7�ªýî­kç“ÆÕŠµ‰Æ, x}OÍø�h×z"ßÓD÷ïà9!J”Œ¨@)¢ò5‰ª~*˶|s{7®ÁØ7þ»u߆ItxQô˜D?®•sÔªeQÝ=¼Ç÷„ñéáóˆ¶sÝÕsdMÜ»[·E�)@8`*QºÌD-ËókþÙöã&D Ú<#>Ýø3tãŠ,ÏØkÏÑëx²7ºÑïÛ‚o `s¦�œÏžµ®ø³¤æk¹Dø‹ÃóÂ*7ÛUµ–ÞŸÊÏA¬8�ËC«ä“"Dî'*ó1ÑÄàÿ pzÚÍ?3à[K^Á†Á,¹V]0‘èÛ² ÀpÛ>�‡ÇÞã›�iDÒâTuæ×¡Ü -ƒ é xnÞõåË'EŠ�?FhÀ“y0¢;ѡݺ;øF¦ç›*Õ%ÊW<ðq”Ô+Htü |Çó OÁûáÖuyÆT^a÷ÍŠˆúÁûf÷Fùÿ€Z ù²"eå7£p™Ð¹ÓåÙãïË�û»ïÌàÄ“ù\Ÿê¸§€…§íÔyÍÚhÀhÀhÀhÀhÀhÀhÀhàíÖ@„:¶üù' Zº4Ø;•‹�Ž ­Z‰z ò7Ö£àûO?¥b6 @Ý‘#Ð�:›ûõó�Ô8vù2u›5‹ž¿z…CNeM¯^+Z4º|û65?Þi=g>.X�¾ü8ð¯‘f'ÒEŽªP ¦hf¶²i2wÇšî` 8[ªTôãgŸi5äæ/ЫW‹�&¥KVîr¤JÿÅ‹éÈÅ‹�Úª€Hýt‹²5º>¡n�êÕ©j�Ø S ðð®ððë\› µlw&Ó6°· PßEyþŒ½¹ã½æGßjðÜ´‚hðlúÛù•ÃÐ|ౌ¤q^+|�¼Ÿ”íM:}=&|Ï–g[:�¨¿ß+oØ\á<Û?¯‰>¯*A)Q÷ó ~ånûÅQwõq¢ Ùû¸÷5r]8å(ÛqƒèÚ%Ž*(ä(«\Ÿhä"Ç>¶Vó8¾fDIž/ß°=¤òQf¢KgƒïÅ+ ¿ŸýÆ}ø7¢O�XUO0±«kcƱ½[$¨£êÙ­ã%dcÞm»#¡S†û€gÏäý‰Úð¼ßñß0ÆF´èDûJXï-, ~úy‚Úk ãᵇ42åH1„z‹ëQÎz9ƒN„<æÉ<¨�N¾‚RX£ŽD½Ç¬ñò…œßXcncއ§è×úÛ]{À34Æ‘ô@cû¿,úѹæò— š»ËùqwŽøð¿ö˜?€+øþ@¶±sJâär;¨¥>Ô÷1¨úîó°ð´�;c3u�ŒŒŒŒŒŒŒþ»ˆ@@€J6>LWî°5KÝbÅ(NŒb;e‚T1O±m:�1¡eKqL_ØO^¼ V“'Óµ»üË�%7·E¤"î?yB§®^¥•mq÷Ñ#R@Ç“çÏiÉolU²È¦£Géò­[¢ÑñcÅ P#GêÔT8cÆeñõ6¶€&Õ ¢nÕª¨g:pð‡&M¨�¥¿ €Pd´˜4‰|ý@•´‰Æ™%E zøô)¹t‰–ïÝK“'w t@ÊÎ ‹3)�=;¥OÊ–Ö0–ð:N­>E—v\¢˜IbRÉ%=ºªð«'+g h#½ÿqa ?� h^ΓÔ/ǰᘧtüD]ú¾¼ÇáE™¼†¨4_?äG´`oLDFÄŽKÔ¸3Q±r¬‡ÄÒ}`‡4nÀëù!Ùæ¿°„·'¼>!ßþDT«…Ü~–ðH.ïDkÀczÞî€W5¬+Ñl?`§JC¢óåñ²ÜFò&¬$*[ÝÑFªAíû MÚÂz\:��~>”dÏÏeÕžœU9ê骆D¨ÓÊQÇ“­Gx®Å—‘9h)ðS K¸VÈ‚I|ÏÛËm.i2Èí‡÷e$ÌžMrÆ9zd¢–~è!½¼Ûõ³÷ö†^BzmröËçO‰~!¯»ƒ¯Ö( ûVö¥ˆNA”N®Âüœî \', ~�Ïf_b€{½„g©»óàÞm¢’ü €À€�y ¹þž¯3Ž]Éúž9ñÿ[@Ö·“¥a»ü†ßKËù›ŠÆMÚ;+4Ï‘ôƒÚ.u8òn»Ô`*/ŽÞà÷.¾Mk1f�’|}Ƈ¦–e_?'Z¶ysÊëå ªбçôiê5_ZÄj0ÍSתl!±"=|Ž£ ¹sûG�Xªˆ]D¢(�fa—.‚FË®ž^¶h÷nš¼aƒ(J7.Ýäü ‰y½¤[7úŸVÑè3†¯S— €Ž­ ô‹–É’2%ýи1Åå<$º ?ÉÁ ¨RÞ¼þÅzDÇ×5kRå|ùü�½©�ðBëÚÂc¬î Þhò>³˜ ¯gh­òðV\æÍ@ÿ ~WE7rë^‘5sK£U¤ÒPš’½x­‚HÐ}éFsk�ðÞßºŠ¨C yÖelXËöæÕPUÁ÷]ˆæŒ•].a.‡Ÿáó´_kYãöl6>Á çƒwÉd9À:âz°Q¿ù—² Ôd•ØC9(ž0çm¢yN–ùjž>fÊ,ÆØ÷=�í°Tà@4.‡‘¢�I–¸¿Ü¿�ÇWF¶ëɆ²¦]]ëÑ.ˆz�lç¹ z5]±aú)ÈÏ¿’¯qdõuìm\—fïæÛ×¥‘±?YV KƒŸõ\Îö ÐáL3áWîî<=Ñg•äø-‡¨9]~L4ž�Bhî¾aðQ @€ �Í—dž¹>K€,[@_V´YI?m?"Úù«¼w ¨½$°Cô�oh.C[ Z…Zü{g¹k½»;ß]ëUÖò°ð´�;c3u�ŒŒŒŒŒŒŒþ»x瀎‹œë›i‘r”FŽÖ°w�Žh‘# *DNŒàˆ]ê0uÕmÎÑÙÄÔUÈÕ1gûvòÞ²E”MjÝšuá©xttž1ƒ3�TRNŽˆ•Ië׋ÓOiÓ†²2¡D:�KÑPL�jJÉj¦®éG]Õøý÷©uùòâj·ähŽ 7ØòÇ2™i¯‚ŠÌ•üoèýÆÉ'鯽1Wþ¿”îýt”­f6òèc›£ãØâcôôîSJS" �Ys†®ì»B) ¤ ‚m Òëç¯éÀ´týÈuJž79•è^‚¢ÆŽª_ªØ>¾ì8½zö*@yôxÑ)Kµ,ʬ;îŽÕÚ>$ûî0æÂ�¯¨z�Çy&Ü$Hª oFû1ÁO^•½ËÓd º'ä¹8¸“)Ÿvýu� >üÈå."=Óalv&¨î8(t>¬'�Óû¶JÚ€éøöÔoC”:Càpžß6q]®�Ü0LÀ@O~‡“¤ ò¹*Û�2ÔAª¬yäû%ŒYÐo^~�eÍk_”H;ÖÉcùØølõ\G¾„_øž 'ê‚ ãCŸ°w?"L”€ÆùU” —(· ð"E[%èÃ(ïTŒ Tf—ÏÉ{X $ë¡A`ï~D0ÀÀƒ„ì™sý¿È9�ü.BK|O1 —]ö�hD­`^´ª )=’¥b`j¿ÔÎ }´©,ÏoÛ…|?‘äZ¿' š4�£™šI�ƒ>IÑ&� tPŹo\óÅ3ŠÌa$ˆ2'?îh¡@“„uHdöh¢aÝd3}\O”­ _ISm½xÞÈF}-ËÚLT´œ£tzá¤|U$ŒãhØm!jï]Àm¯<åõrë6¼¦ÿØ%=§1/ò“9sbÄbcnjY{Àû¤Ïaið³Žûg=K·_¤›ÇoR’œI(Cù ”4wRÛwÏߥsÏQôøÑ)nª¸thæ!úçõ?‚z*s•Ìt|éq:¹ò$EЉrš›2Tp¼ð.íºD7þ”ßøgwŸÑ¦^›Äp ´*@) óÄÐ${íì+ +‹åè‚£ôüÁsŠ—&á¶ò/¿·½б$É‘D|‹QïÖÉ[ä»Í—sâü�pžó›ÏÓ…ÍDy²<ÉÈ«Œ¥/—Þ¶KUˆsŸ^sšþ>ô·h‡q$Ï—\\s´xü¢ #qwèÏ�,įós§æÞÓ7:Žœ08_‚Äüþ¼ÉïŠm÷7¡Àŧ«ºSu¿Oð==»Ç¿$5 .¹'cÕºñ¦;@ǺEœ°¹�<¥ò^wg0îv©ë0ÖëmáÝ#2h°ìdÛ¢®õðzP� Étìxz©cž´ðÍ_’ Û_qn‘:2·†£"/6úê%ì½®Žõ#0”Ããòä!ª²Áûyô×ÅD_úrÆ,%ªÈçqU?¹nL·¶EÄ"/B¬dC”WVG D+ ¿À㇎2} @hO”€ZLÏ#¡ÊíÖÎñ½±ù<ùæZs©óØ­ƒŠþXR+�£¢QßN"Š~0Œ{`]ÿæØéE/S‘‚z™¾ Ç€™[‰Ø:=À4¼3]Wç{½%Khéñã‰/°JæÌôçÄûÎÄSÀÂÓvÎÆaÊ�ŒŒŒŒŒŒŒÞ. ¼Õ@ÇYγ1�Á�™‡ÑuNˆ­Ë×¥JÑP¿È½Ûî3Ø€ßhìXá�„|ƒ>q¸žÙkÿøƒ†¯”–ÃÔ‰ÑÀzõDŽ ë8\ÙwèXÏùG†®X!ºT¿>•Αƒê�%è«2&KFÞíÚùŸV:Úø!]âÜ«9wõPâ èØö,õ˜;WÔ©W¼8¡WE:�àzµ“HléÌà7»ãî”Áu´×háe Ð"O£<”(s"‚±£JeIDOuT»ätð²\ sÑõÃ×éÆ1éáŠJðb½ñ>]=pUx ~uó+Š‘�-¤šlè¾�^yÄ~Ù©–ìÆUY­²ß‡ ´ee©õZ×.dZ¥†òô£tûˆ jÐ/Œû­zuûÞÑ+r© ŠD 8Á!8?Úë~ðu™?A&SED">T¾‡u<èê²~“å6–½›1˜1[î㈠ùy¦ÜÇçÎÅ*Aë>†ˆ‰Ð’MË%È…þ`wÁØ!?𘭞ÆÝê­_B”žçÈ‚ß8÷E§ù€¶ì‰;UFp ‘«ÊÓ¾säɨžSö;bGºp[Ì%P¼+ÏQ%Ù˜Ê*&÷}NF˜$Bþ © 1:î+"£8À%XW'¿¬Ú®ƒ6Í ÌP[aÑ[ˆâRÏïF%å^Æ’¢  ¶—ª8q¹jÒ5žá¹ãd/ÿòùT~K݆9ïºnVFF à}‡û‘‰ïžiD#)‰™ß �dä‘*Sk=ŸIçï8ê§·:ºë-ßl¡íßn�" ßD/�w”žÜ~â2g@ ýé>HGGæ¡^²’X⤌#¢.Ï9,¢‹u.F•Çð�b9±ü]Þ}Ylã<ˆ`„dæ5œ_—¢�ŠR¼´ñD"Næ~$ÿ?¨5»åm’W¯*¶nñ³ˆ.ÒýjwR‘:Ð�б“Å‘&‘cD¦ãKŽÓí3·EûÊ£+S±.ÅĶZ RÓ»¤·pJˆ5åiœ‡gKLˆj94ë½zúJœßxô ñöö¦�ì âª vGÎF�=PwçAþö ² ¹™ÖžÔ�(TBzñû¢q'¹ýÏkpм·àd��ß#ˆ2D®(ˆˆàé7ÿßÉ~ñŒÃ8Á˜ðl(ÁXº ý§Ža àßm%µ[ öV{×A?ˆ"`)ù!;Tñÿ îˆIðSŽ‚Ò9Q¤ø¾ÿu^öÔ¬ÑW#�÷Š÷æÐÎrí¹ãzbyWç{Çuëh¾}€ÈDx´b§¬t�nO OÛYÏoö�ŒŒŒŒŒŒŒÞN ¼u@Çs¶D®àüˆÞØÊyØÆâ/)bǦ&œÑÙ8)¶3qèXÛ« càbø�‹È…tIä|;  Ç›p¤¢+”dâdÜE2e¢ü^^T C† ór¨6X» tô_¼˜¶±×Ô{<ÎU={Rlþ!>|Õ*ZËú‚,â<ÉâÇÛV £d¶lÔxÜ8 R.W.êW·®¨ç èXŠȨ_~uÚV¬H KúY¶DIÐ èº&þúô¡hQØúBÙ6xmíÇ¿(YjÏ­-€±Ã“hU›UtpºÔ‘3 #_³|TsfMzrë O2\4ÍY?'Õ[T�^>yICâÆ•ÆëS&åÖ-j\¬ë´ŽöŽß$ÐáÉX¯\¹B©Ý¤IëÚµ+�b ÌNàUc ¼êáÙîL`$,ÍF]ˆ'èºW8~ˆã¹TÐó à8h˜>Î.½ÆTÀ3Æe~Wô’^ÚI@ÿc=É6Ž�j(`°V‚sÀ»¾|MYrê0Ï�|rÆ÷Ù|N§!zìƒã´K€.•2°±û¾Ü•"`D‡·% CÎDq´#’FVb•ÀxŒè D‘ Ïul0Ó½õU’žcBµÅúô>7ß_Pe؉~oNåÄ·ŸÙÕr”Á(\#·Œ®�±xì2Çx0—:°·ñ+׫SàÝ /_´A”#Dà>"*gÎNÙ ‡;£rŒÄ½-œó41Jt J•a 2‘ª4ਠ,–!¼p²¡ Éå& B î u”ëÙXö´æ¤¤Gõ €&ÌEä³@ôòÚ”I)ëõ�È}~!·=]ÂsÑñ0–r~sÙ®?i3É#2ÿ?<ÆUn€zÇ�?!ë!: sôoJt/_U¦¯á-Œh'P•…•€6 @ˆ`%�ÈeçÚ’ž ór8ßÜ[ž/D}Á`ÉÂót¿ìó[E"áºtï]}OÊ^<|A£ÒŽÑ� OláÓ‚¢Æá ÀwøŸß燆ÅÐÑåBŠï_D…웸OÔm¼=%ÉžDÐR!z"uÑÔÔú·Ö☾•âÈ”ü’f©·¸ž �Ò�ëÛ …“~ Ý¿tŸÒ—MOͶ4ÓÓËÇ/iDò oÓ¼Tk–ßË’ké@¨°Zíi%¾—èàé�§ôS©Ÿè&; ÄM—ºœï"¢PDçü-Ÿ^|º ¥MW‹m-TWJ@c5¥Ðñ�F$K�ŸjˆCŸ1íæôéÓU5—Öp,ˆË¹Ï¬âÎ<øY,¾ ñ-À<ÕߟÆüo¢:0ŸVýéˆÖÃwI§ø& GFé*ŽÖê�ŠïÓ�ÇŽrlyúÍÕ{ˆ àÙ­�^׺ ƒº$q¬ï~ϵ·Ö’àpDÐ�‘áIRyºeª9ÞÝJ“ˆ¬C„¾OÎ%T]5'œnªžuíÎ|?zý:Í`Ç´yG�Ò�ÇŽI‰ß+ùw¢<ªgÍJQðO'‹§€…§í¬×fö�ŒŒŒŒŒŒŒÞN ¼5@Ç ¦IBôÆ,þ'ùöÓ§þÚŽ)’øÇ¸{UâA…A«Fž—AÓ4q¢Ècñ!ƒ)½jÉåv@Îó;Sh}»|9ÝÓþ™Wç�Çɺ?âñ¶d©¨œÿ#(qèíTõaÃèé‹”‹slLà\$=Àaã�N}Dµ‹ÛV Qó¦#GP2§cGJ•0¡ÓˆŽi›7Ó¼;D_½8¡ø‡n$@ÇØ c•¼PÛ ø«TV£ÒŒ"Ђ8:*�¨$rpà‚‡'.¼gË .G¥û–:�n´0êÔ]P—r5È%Ê쮞Œõ'}ïÑ£‡Ý)�–UªT‰êÔaKedÃRI….>í ó8¸ÚÝ_i8†¡ù¾™°åÕ‹Ò�R+u“J” ª£5§$µÞÔI?Ï”%Û®9@UgËJޏð3úÂX³‚�þH.”Àð °ò¼WÀ ÚÀ(úArIy„ý�¾Ò³ÛPõm)ÁY"—©ÓK# =¸«€Þ¨]UYjML­{ÆZ�ÿOA6r,p÷¾¨1`ÌŸûÏÿ<�†NµŠ q¸6]ô¹2o7Q¾âÒ8\8Ž7¾›Á¹^šË²B±¤NÀ‚ëAŒÉžƒôqØmwáÇ`ãryTMW tÃä—Ã9G?nŠ>&•æ³ÊÁR¿0Ñ1Ö™òÐUÔTÞ@Qƒü.Ÿ}(ç(—À©�î=\Ž'ˆ»ÑQ²UÀ¥NIðHའˆpÅÿ/÷ì—CfÚGÖà9ÁósÎÒ!BQ=\ ­¿–^ßr/ô—kp4Ó§²_¼†Ú îYåŒr®Y#¢PÞx¡„mÌMÌÑ7%‡g¦ÍVˆÓÛ  ´Rà…Ð%Vêó¨�h¿oÂ>ZÛq-½ù=ê÷¢OvŽª›ñ­l¹’gMLNvt™îh¼m;ôß*D:Ÿï,Õ©~-$Ò•f‹¬Ÿè@Çû½Þ§òCÊ«Cb�¨PjA­iäŸä܆s4çÃ9¢¼ú´êT u±­/Ö\(ò‘ —Vï½ÅuÏ›7�¶sn5wd;…DcjÓ�òQ!‚¨¨º~Ø¢&ðîXXxr nïáué]›Àíí è¨:©*nÇÖKjèÔ²OIO«ýÈ\ãm ê_t„d¬êá¹F’cPZ@”‘Wî¿D2SPÁ�oÝÙÀ†qôP2±ôHÔùÉA�T‰�èHœíÌøˆ~Ñ?d埒ŠFîÉåÄ2i4öà ‹|A ¼j˳1†ö�sN iO Ðô ¡`ƒ…UÑ1c$ÓÁq[œtÉÁ69D3XsO wÀ)dMeôÇ<õAë�(xÛñs„ôï¶.÷‰hx˜ÃP†<'Öþý+ÛlLùŽh\_E‚¨ôãLtP¤ýIßd­«_ ¢=ÀŠ•OŠÈšˆ„½"�‚èP‰!9tU6Æ@T=¹ò%¢)¾âH %y\cx|VÑ oŠÇ¼w3íè¬0×@çð ’º"¹«šÈ3w'SŠ\ ú0ƒã CgKJ'ÁÃ>í{àˆrÔtoK§Õ˜y¡÷0B§Ÿ‚'9èäꩈ&xïâ"Á<ž$±�žA]@—’,uàdºHô š5äÿàƒëCEXÈ BÍøARÄXrvžÝ™¿~¤"¢TD‹“~Ï{�cÃzGu$ü×>|Èg �8qŸÇ}å½Ð ýv@G¬¤±¨ÇuV ‹5@ÕëOR–?ýIK,¥ØÉc‹¼¢P[¸ tÜ¿|ŸÆx�!Dw”é_†Ê (ãßÛ¬r³èÂÖ ‚>²ãé€JÕ�ŽV»[òaé¢�£Êø*T¤ƒ|�쵇ֹ^TEÄFÌÄ1Åÿ2¢€ŸI¢:U%è«ð½SOüa]ƒ>;ž? �Óç°NñžØÎÿ^ZAzg”‡ž~sõQ$Áû ïŒK§µÓë9ÛFþ£çOG“¥âo_‡U"‚~ð?"ñͽäŽÀ?¬j±ÝÇ;ßú+¾’"ïj¾Ëˆ *ü¿ç|DQ …>†ž£™î³K *aVp“#ßçs„Ç Ž˜?¬ýNÂg¡¿ßY Ðfê7       ¼“x+€Žc7oR.¿„Ú¸ %9Za{¢w“¦GÝAO�Ž3×®ÑgS¦ˆn�`‰Æƒ:Ôù°¾ÅÞö‡|}iÇÉ“´�©·þů–L÷ô9Ó>9w€ÐHX�Lf*†ì©ø×£Ÿ´÷ö¦c—/Sd¶„®dJ«Xì‰ht zŸ… i�32ÿ‚^ع3íaeäêÕ¢'€­ýrŸ¬`¾Ý±k׊òv|?�ÐÜUÑ�ޝ9 ßÃRî]¼' .8‡NèçTÉS�5gÔ¤|Íå8ÇgO·Oß&Ôø1ÿ�ˆâ¬u®à€Ž�ŒU�#<×H²�dÛ•XYî¿X�æàí×ó`¨–0ˆæ�.½­á=/zˆÉ€< শ ’ÿø­,å“5gûêíÄÓ"ì -zŸzÂõiˆJØ<¶Ê+Ò•äÇð†E‚hDˆ´€€ë†c«€Êèæµ€Q-“qdƒŸ% 2¬¢Sá"F@U½)Ùë4œYÛb_E9Øñ¼[ëëú¶³Û¨ƒ±ÀkyàçD‰’É$㨻b†Œ~Ñ#¥ÜGÈ­ ŽÝ9\)ÐÒ´´4Ú©ú0nô•ÆzU†µnxSž·˜c*Qµ¢+Ó)Î�< �¢ÝRÑ50D`#&À:èw)ƒ;0d*%rD4 ©ôk͉~½e/ Ð}Up[Ð]‰¤âe0ذè«@›ð/EZ¦}ºðxP{È7€yÑ#HdIè-UtrâÌÞî¼_ÅoŠ4$¢·Šžç€ª7%*§…Nèc¹ñç š”{’(²:â§‹O]|¥óè‚£´ìÓe@�“+O"œõ¯ v%úXÔö¼ªóèÌÚ3"š4SˆÁ7nlú±âÿ  ßW R=K©êb­]/võÏû¡*ýûú_u�PtÇ…Õm9qúÔªZ°kÐi�VëM‰þ,(T‚0üÃï€&¬2ì[¥EY~úȼIøîZ¥¢—Ì;eÍóãé7Wï_O&€ÞÖ�툠P~œCj�3¶¸£!I!8q¿K—Êÿ“œµ¶FÄêõD®® ²äM¼ãþåSï¸x‘ºüú+ýñ÷ßþCà·e€•˜ ££££££££4ðV·Øã§)'Ø^ÏtPˆJP’…}7c©¦ü—Ú†+YÕ³®=:Ð"&9Ê)ä»hÍÀÇí‡Å)6õë'€ëù¬û;DèË`$E‚ÿ³wàU]ô*½w�@Š4¥ƒ "‚Ò;R¤)½ˆ”Ÿ"( R¤7)¡„Þ;Hï Uz/$Hïô¿g'“7o³›¼÷’Ìý¾l™�™Ý=Ûòî™{OšÃd‚�¹JtˆŽƒP�¥á~¡'"í* ·Kƒö48숎“¬õÐjÒ$£z­¢E =+¢c7‡œwŸ=Û¨a#÷-çaMt\?z�Æçoì¾âXŽÌh]HJÀ|icFe±R[¢ƒõ9 Ó“ƒ£7NߢÊ*S�ï eòO k]³%RŒJ< ŽèðôXAž]¸pAîÆ¥yRNM–„ï•�XSvVïñÿq¾ã&Q’ä®õ†Ñ 2=‘Y[öŽØÏ|KÊÔ#{²`çQ~�I+ ‘�!'Ѧ¿E]uZ:�ˆ†€¨õ€iêëeÝ€­Ð—0GFÀ9,S+'~¬î£0yƒXóŠbY�¶®,´-džm�H?G´颶Á2^—ÐK@úŒêT z*H…”Iv&�bA‰ÅʶH¯…4[È%/�vr›Õ|é!:.¼?)ÏÄ·‡ÉQÇ “@*Á†u㈗ÁB³ÃÊ!-j¹7EdÐWü*ÀyîÛ÷ûA/-{qj³~Îýõà{¢éªs߸¾"IFù,�Æ„qÑÑ'p^Êè�þSˆªûoë\—G˜ó½ ÑzD[ÀÊz ¥]Ô�QÉ�‰Œê±{¬ºR�ov"¶#zðµùU´ž»‡(Oa«ž—Á)7îgQTJ©À-Ý+ù˜ Lhã4äÏëÿFX·Å3+Ó»Ù‘Œ8Gœ+ˆ5D† %¼l^Íy†88t+ºÜèè0îù2¡Ïº0K¢ƒµ9 Ñ;6—£7ê-¤©Ð~?e§—Ÿ¦9Uç„*ÑqrÉIšWcžÑÿ7™X(�‰¤ÒfuºÒÉ [Œ þ•èèz«+ÅMWÝl,÷‹Õ�^¿xm¤§Bš*˜¬r 8ÎrTÏaœÿíÛ·éÞ½{ÁUØŽÿ­2stlHM¦,Â;xãe×{Ã{Ä)Fâ«d¸ïqÿÃTý‹�|sEobª4Àqõ QÛ¹»ð9°]íÀé+q½\5hEÕ+*"^ñÍET*4Æ0ƒð‚|×öù] ”°ê{ò@ŽRîÎßîh¡Ehµ«2_~æ|¦éüwáîÝ€*HA\1[6Êú´Q¦‰Žhô‚F@# Ðh4�€ D¢CžÇeôæðæ)ü÷·¿CÛ dW:S&#¯kuÔŽŒpuHˆŽ£—/S»)ì©bƒøö:Ö³p—èàߨôÕðátƒÏ?˜×÷êeDO�š&®§ýü¨Åĉ¦ÖÖ«RhÜŽè@«N>>t��æ±Ë%KÒä��ÎÔˆ¤ãBš+XNŽ®×¼¹±ìÊ$¬‰ŽgwŸÑÀ¤ükŽ ù¾‘÷Ûlräixžkh‹‘›ñ±[oÈPÜ!¶|j­3aÕö,�V¯–GlQ�1jݹ|{!Ç4LÍãݱ�¸_$H�+fSÅ¥Ug¹¬w‡Û|’R¬¹šn úˆ4€£ÓJÜ|çZ¢ïü}kÁ‰Ëã�sŒŽ‡¸,H"«óAä"8àÌÀ¾�H83VžrÖ‘}šçgÆètÈBdf'¸�mvÎ2l³2¤×BZ#+Ç›U}Y†´UˆªhÁ䈘L›¤`Í™ô€~…Œˆ5=ŸÂé‡Hì&AR[&pâ!¥“4)ð ‡F2ÛÙ€ö‚\‚0üŸì¿Ù¸„¨CMQ{Ñ_aos{ˆÆ"U¬Û0>¾ïŲ§SD‹ Å æîäÒWSy š)ÒÍÇ€ûOŠ•›/"„Ìu¬Ö¡›ýŒ‰aÈŸÀP7¿Km�˜ 3­ Ú(ë…uù�Ój ¿(ðŸ~]Œ:'™rð³vÒiS˜¯¬é°†öŒÚCÑbE£ŸýhÿW÷]¥I…™f{[ˆ¤b„þt°ò6ÈK5fÔ QYGÑ�sw({•ìToY½@ç¡mO¶¥ä9ü ÿš¯ž¾¢þqÅËBM‰µ¾ëzÚ9d§ñUÏ'=)zìè�ú¶*M1r«þ­Ê�º Ï&4k‚{Ÿ˜Û_9Ï‘©ï‹Ò!³9…¡ B¼'ñ¾„I-$,‡ä›‹öÒ¤þ‡Ý÷JÖ É<ªà£FS¨ß;W°“$6R^ASÊÙŠo=DãaóöåfRßÊ:Ôà¨<þFeËËÿ㶪ze�XCp!§ó¹±Õ×—þSºöJœ˜šA¿�ÿÒ$H ÅÈlô¢F@# Ðh4�€ëD(¢CžÖkÎöǹs4éÀZÅѶ“–€õ.êäÊEm ¦|6Ú!!:°ŸöS§Ò³†¶ÆkÞ÷óW¯ŒÝ»Ñ�Ê]fΤ}| iÖ2ÑC©,ÌU¢cÊæÍä³u«ÑC•‚)=G»˜möŽt—uC⳦ÉÒ®]iîÎ�F›/¿$ˆ‘K;xñ"uš>ÝXMÂâ€hS‰àþõÈ‘aƒmÓÚ´!¯)°¬…5Ñ��`½xôÂH?…4Tfõ>;_Îß ÷ˆO�5¼ˆ9ÊÇm¥…aÆY®«#íÈ9¢)<–u¤Z’Q$jº#Ù/æk0YWG” åÁÄåü—e•”°K}%ëÊù·_°¨ëz{ý ŒÎGz%˜»#Õ?a§:ÒɈ Ñ‹cº™�m«Šuˆ!ÃÁŒ×žUÔ�£•õŒ/³°v`Æ(|ŒÆ·2Dég˜J2‰’ÀÓ"‰x„ñ÷ˆ5×»ÔìÀyN(¢UÔk'µZÔˆˆÀGáz 49àЇ©#ieÚ,”C³â¬0#†c’_÷ÈI�ÜôvÖ k ìäó(%Ò>AçA M�F Ñ#V¦:(§m±NGfÕήL� ŠÔ2·Wu+a„H#³áÙ[|HŒ$köSÜãHÓb:_rTÖöuC²eãR‘ },9¼<Ö½ÚÅšÅŶž£Å½«ÖT#[àL†S9¹(�·3;�›t–[Ãgî»Õ—¦•šfìüó_82±¿è›ñÅ :¿þ¼Qò&ˆhcô‹Ý�¥Qº_i*Ù«¤²wûEDoŒÎ6Úø6ňƒ^>yi¤ŒBÚªw¢ñÍn2•èÈY3'ÕYXÇ©Æún¹1x§QÖâ` J�/µ±Œt’cs�%§Œqj¨¬à�: †´U÷ùÿ2W ‘¸2dpµºe=5ZqÜ qeYÑ¢P¦�Ct!¾5æï[—z"zß(|«¤©ßw¿¹²Ì¥f”YÿC­c·,SÊÉí{ðžã÷¥Ù¢ >ø^Èôy "�ê0U:3ü½æwR„I’\�é=ž£Ä[:·ñÎB÷�DÒYá»igÐAÃû¤>Èý7aµ,0"9dßY9mjsþ�Ô˜«¥äÁTVæ)aái;«cÐe�€F@# Ðh4�OtHÈyðmàTK9ÊcÙ©SÔ oÞ¢ÄÂ>Ö÷�¶hÏBÚ%ØweÊP¢¸q�å”ìð-ÄÎzX™¾}�H‘¸,Ú½º{w£L�|ÇÚgXœ\5ItlvŒ~^¸Ð؆ý&�?H¢c'çÇí9gŽS_f¢ãŸS]Þ÷�GìÕcû0cFªW¢eO“†î³¶ ŸmÛ(c¡—Jt”åkõ‘——ÑÞj’‰±Cj¬�Ú™Ughv%1$7GµTkv-ƒì¸{ñ.ÁAg ìm :<=Ö�bäIû®Ç4ô"˜Ôú'vð~/ðH‘„(8K²Séx¤aÄaÉ÷D$6¿ú°¥’ 0ª: ¨Ç9Òý¨ÎJèNôo+zªP—Ó1Ù‡+t(ºò�õãìL†³?ÚÍi=Ð Ñ‹¾)⊩Îñj�¹��œj*�”Ü*ÒÁ1SÅ�áP41QZ>6…J‰4SpL]¿Ê£ýÙy:›ÏDP öÕÁ ޹•!ÕRnIƒt¬l:ã¼}�Ð'€öˆ8TŽïgafv€ …,¨”C*ÑÍ‘¯ZñyxÍ,'ƒøšƒ´�ÁÖu¨Ã�83p¼?ãe9’_æzO””ï“Û¢­L›?¡pöã:Êúpadªz/ˆV®O!@ß®šÀDRz˜õVÿ@ a2Õ”ŠGPÄ�ïivåmeÚ'WƒÒA‰ãÉRë׆#vƉ^ q“&£}�sèOHáôt™ÙY6S´yñL�c»ùyFäžM\”’@AÔĦ¡w‘§�©�¢C»9‚I�X°Fù]À÷á›2©iTÄö�ç®?ŸxwáÊÏE±²,²ÎÏœÉRÄu§ðý+uT°^6±ÐDòÛïG1âÅ zKëQæ2™ QîwÐÆž|�þö&ˆt-ÓNAÛûH[8­©!÷k7—ä½Ür‘[™Jt€T(7²i[ĸ· #2¿Î|zýüµ!$AqÕ¤ÚA‹ ©*1¸öêÙ+:¿î<í»—â$‰CµæÖR›†érŸo‰N»ÜÌß‚”i\ß=R$"*1_q¢™;·«˜]| +Õw<¿¨’o®ºù>KÎßo¨Ùó:¢FÔzæe¿KŽ”r؆÷ËÚóæZb=*á#S�áÌ1hcÀ4‘Þï§sÇ…ÎÖÒé|Íù½$I!5Ú ‘  ßñ¿ ¤¹ô$Ò¢¡OhB!ÒÎ0à$ˆaèú”¿ ÄûÝ�ûÒ®”ƒèXÁ¿)jæÌiDo|êå…OE�æ)aái» FoÔh4�€F@# ˆ0D¢CEü§Y‚€yNÿ4J›ØÁ 8ËÍ$Á’ 8¢c+‡_÷™¯ ÿäÎÍDGpûKÇé¥&·liè`ØÕu…èXÌÄͨ5ìÕdk\ª”ñgÕßÃgϨê A† û{œ ·R�AìÇ¢¦yrñÆ�€îÌD6€4ê5où)‚ç üÌŒJt˜ëš×+p¾Þ®6Ñ9æºA®ó ù”õ¡ yhòœ'L›�î]¼gŒ4…cÑ¡MtL(0Á.—džüâÿý t9• ;«Tks¼�HGâᱪ}…åòÔ߈~ëâØ#Ciü Gz$iæ¨ ”«Îc¬ÃÙ§8ÒÁ਄@uâdb]Nñc¾;“¯úŠìi¬ áÒ—�H $¬ BÞò¬Úˆ� Ó­j.C¤FC†4Dñ‚s8Kaªøñ¾­x&�†œ h DýøÆùÚFÐïøClE=¤ÜÂy[™š– ûB$ H'8�¥ÕmÍ)°ÆÊµÀs8Rª(ˆ'óV«”Y¸ÖˆÄ�פˆ Ãàdƒ©ø ìH4c¤ˆªðÞ ¶Ë´Ip¶LÛ"Êä}ä1á©!G=Òy<~(îϹŒ!´̆{£B6q̵š³& “ÐE™?��÷)˜Dr¼ÍM ý èPÀ�ö ÷4ôK`½ïzŒ»�I%R­!mWHMêK¸Òô'€…šJ%¨vx&Ìd}SG-óhmÜxVUCäÈÜ—¡a¸¦2�ìï{0<›Ò2óùÍg²OµÑ?ò;¦¿£×iaäý*·ìægÇLˆÉma9¿°áͪ4Ëpôc¿ø†=ôœžßnhRÀ™{SDÇ�‰hE‹Æ>Ì“f»šQúbì5µ°£³�Ò¢ú‹¶XioÈ�*Ñ3~L#å$ˆ hn<¼Æ/"C­oDé?vÞß³{ÏhúçÓéÚÁkF½wÞ}' Å×½Kü­÷ÿöæª�‹jÏç›1œ¬v¢ÅwkÛ?î„$½ë·#ê1ʹ-"É�ú÷/ÈfD•©æé7Wí£[Ö«™¥–ˆeøÐé²{¶%a-[–­É„¢Í¿æQ |;‘¦ƒ¤á½m%D‰ÂÔÈ9¬ãýV‡ ¤'„ûŒü Þßh‡t}ˆ˜„Y¥å[ÄT~‡Õ2,ãÿ¨ý�íS^™ëµ~”'¤åOIãÄ ªšÓ63aa^—•ÍåæuYOÏ5�€F@# Ðh¢‘’è0_ºmLJô6‘æ:XGTÁˆÆ��Må~ù…žqÊ%D{,c= ³Á!ÞhìXºr‹="lÑøWÆ:ÖÚÀü:G�,úóOÚΑ%×î²Ôd1£G§ª… Q}Ž|Hl²-› X²„Ö±hla§NF”ˆÜ&ç \@¼À TôCoo#�êBd|&G[À:T¨@ÕY×Äl8:¥?G§Hk\ÊšH‰2låJCwä/«–šÓ#A¸Ú!ÒÖò9ýÊçæŠ¡]§J•\©l�×/^ÓÊ–+é�Ï!#½¼ã]*Ò®aÛÞ1{ áS8a¤!åÆí³·©ºOuú°!{~ÙÆæK7OÞ¤*“ªPþæù�²‰y¤í?*?²<i_Ä(ÃdÌcèÖ)qŸÚ,t¸Ð�’dbÏ(›'ÇjÓm˜oZÆ£Û8ÿXÇŽ­�4�ŽVÀ�õ#Dê+In  F&ÿRü@G{+CôF¯&¬…°Ë±i>È'„­?«â(W—°¤Š€#£áxwÕ@\tãQ²ªC£ï»�äToE/*¡sí2;ëÙÙ´n!Ñ ¿À{ÁèLŒ~GJD0eeG:�˜ý°¨}mŒèÄhtìßlpf·îͺ%_ çˆy»ºbD´ @Hç¯�Ø:ò|üžQfƒp-® oÐ\�I�qUÀ\:â–@Hy´~1;vZÑpÑÚ½)œ? b�¤N*Qξ9jùíá䯱yé¿ š´Ö¾�Ô〣jïN�´EÑ:a9ae p_â™@´„iCjpxâºgòXá,Ûʸ "ÂlÀ!i½DÔDᑦMˆ>\;Do`$²jè7k"¤B^ÿÐ4äJŸæôThRd¿2™%  îµgOĨ{³“QÖ ¯ùå—iÁW 衟ãââ»Qmz5šZrªqXˆVÈýUncY’ I2'¡çÅ ïøüãF J:ý-¼ágVrÔcåÙF´C·;67 ¿7�Î9jDEܽp—_Ìï.d Šè�,¤ŒJW45ßÍ ¢�©DGÓíM�+´I�Î*MÁ4–=`Ûl§�¿í¤ùÁW ²”ÉbD{d­Àžáp0ÀU€ß¸÷q2ßU»s“Û¤µ¡§P­±sK5ÅÞ´Í"ŠP­’o®ìd?Èç-ü®¸é瘀o S;SÓ\¢N{&[ô \;*âƒAˆì�$¿³¤žÂw3T!ÿ¿†B‡C–ãÿDò@ï£éç¢48�-|!\¾zŽ N$9íNÄ«ÜhÎÍ„…y]îË\n^—õô\# Ðh4�€F j %ˆŽð¼”7< üÝf-‘Ø1b")RñÈŽÈhpw\ãÈŽ ‡ÅÚS&JDˆ\aßì[e/¿¤«û¯dœ.ú¶ZD:Vü@G „ó'ÄHÄÔÄ(C»¼ýsŒBEÈü¨‡3ÕÃþü.‰¶ Dr´×p¥?WêÀ €tˆR©‚s Îà\Âq¤ÅAʤíÀÜÃóÊì¤7æ<ši«\1ŒîÙq�Û«û´‹q¥OWê úåÒYáK”Œsާ#R¥6‡+}è:8A/±÷9¢y2dáw@6‘åm>#�—g� b‘C ;ÞvCºÅÇoPÊÜ))i–¤oõáúna}‘ϦǨ°:h•èèõ´—Éý�Û§oç ÂÆ%ãïÃý+÷鿉›F$GÂô<¢Z�€F Š!GFëJDÛxÔ/FÞC€ÄAT7W"¬0Ї#:"ÏÎä!F»kˆÁ3¡ííG‘"ˆA*ªÎ×:s»£¶":ìêêr�€F r"à)aái»È‰¢>+�€F@# Ðh4QMtD½k®ÏX# xË€ÓÚˆŒ�`-ÒóÀ à !ç¨nH?½O¬Ã/Dßõð¤eØ·‰*çÙ½Ñr£”Ô«€Tu‡= HÔ>ôò›CàÉ­'Fz­ƒÞiϨ=ÆŽ�Öéƒ2Mt…ŽÞ¦ˆxJXxÚ.j ªÏR# Ðh4�@äG@‘ÿë3Ôh"Ë|XdöçƒF~îþSƒ×Õpn9× Rî}ÏÎÍ./¼g½½ÙVQå<‘g~ÅL÷±DdΑ—î·Ó-Â�¾1úšroÉs$§&ÛšP¼A‡áh¢C"¦ç�¨‹€§„…§í¢.ÒúÌ5�€F@# ÐD.4ѹ®§>�€F  0‚#¼ ½‘\ˆÊÖ¢å‘àÔBå^±sûÄAϺ‚ ¶«Ú(ží!ôZE•ó„–Ì�îãQù\¬Ë£ííD œþôúÅkJ”>e,™‘Ê *C R+ ö6‡}`âZÙj%AÜ«×ã^qm�@ÔB@žžuŸ>}t�€F@# Ðh4�€F@#™ÐDGdºšú\4�€F@# Ð„šè;¬õž4�€F@# Ðh4�€F 4Ñ8z“F@# Ðh4�€-šè°…FoÐh4�€F@# Ðh4�°D@a‰¶Þ—F@# Ðh4�ȃ€&:"ϵÔg¢Ðh4�€F@# Ðh"4’èpWkÃÓv,}ð�€F@# Ðh4h¢#Š7»pëÁºóø1%Ž—’%H@ÑÞ}÷Íî0{ùú5]¾y“âÄŒI)%¢PŒ�vvõYº²û ÅK�Š´+òÆŽØw‹/ùí÷£8ÉâP¾&ù<ÚOXë„_ˆ? Šƒ¨}�3 Ñƒ»DñEâÛ>à\±°fѹcD©3ÕúÖiS •G÷‰bÆæ¿X�6é�@¤Bàþ¢„IXcšE¦ÃÊÖ-$:}˜(U:¢:-<ßë�›D³F‰öU¿!Êð¾s_GömX,Ê>©@TèSçía±öêé+Úþëvúï¿ÿ(wÝÜ”2Wʰحއ‚@XßÌ':{”è½ôDµ¿SD/D|^<'zõ’(nüп¨Þƒ‰Î ÜoÕFD¸Ü\ò&ïwO OÛ™ÏM¯k4�€F@# ÐDL¢ѱçìY²|y°W(Wúôôs�:F½'Ò³—üË‚í½Ä‰iPýúƲyòƒ�Ýzø�¢³wRË–ô®âÁ¹~ÿ>MX¿žv�>ÐÚƒäÈ�!}œ-Õ)VŒ�>ïÐ ®ÛÚÛ›ØCaÞE�ëåóå£f¥Kªã³u+-ß¿ß(�#MoÓ&áðÇ¡C4gç΀¶-Ë–¥b|LfÛqêMÚ¸Ñ(®^¸0U+TÈ\…^ýû/Mß²…þd¬/^¿n¬£Îí#//ªU¤Ï‘# ÝÖ'hôš5ëA-´+_ž>Í™3¨*¡²mU›U´oÜ>J–-µ;Ý.Tú´êdMû5´gôJš%)µ?×ÞªJ°eaq¬%RݽÅ÷kt¢#âQö¸d…›×ˆ–L%:ºWüa=FL¢LÙ‰*5`‡ ;ÿáðŒ¬Vã#á\-[ƒhÄ"ç³|òˆhêoD;×ùž!‚ó¯�d©ˆò— ú¼QůÃÖì|„�×nøÁÙ’0qäºnƒ :¼›(v\¢ßW‹{Ô|ö ¢:×#zx�¯ óÓƒgmãº+fˆš¸vS7n‹:‚ð§‰D³5ýœ_óÿж•Õmå¼G|:ñgèÆUQž—9×nÃ�ëx²6¼;Ñþ­Á·±9m‹¸ÿž=!j^6ðgIÞ¯¥«á/ßVÆŸZÌŸµ…“‰.œdâô!Q¬8DÙó}׃è³*V­B·ì«ÂDÇö•ªL46ølw¾q)¾ÕÅæ%ì̖ǹꜱDýÛŠ2Ã-z:o‹µÇ7Ó�”CŒ]Õœ]“òÔ3dH‚ïÍ»¾w�^¤N@ÑcóÇA›žÜC:ÚåÔ�±‚od&þ·é‹ZD ¼%µ �8(žÃÑ|�†¥áýpëºØcZ¯7÷ÍŠŠøà}³k½øÿ D-ˆŽ¤ü?YáÏÄ7£P©Ð¹ÒŸó`Œ®î ïJ¼3ƒ3Oî÷àú”Û=%,�ž¿z…M¶¶ª{wŠ+]¹}›Žm[ÏnCåè‡Ê��|3v,]⨠i jŠde/›b3·o§ÉþŠs¤MK¿û­RC,®|/^Ùøýì܇ÿ$úÚÆÁ*{�Ù—q¬¢3¶Ý»ÍdÆ—DÇÈš�ç]‡}Ó)pyh•à:àYÄ3ÙºQ›Ÿ<ïyô�L†1�+6Ñ>&l@«ö&~ê~‚Z~ÓDÇÃkih¾hlµçצ\µsu8Qr›'÷A™ŒâÝ`õÛõå\ãå qcŽ{÷xXšz®Þµ'«Aßùø;ê ™-¶ÆmT"oÌ2çè8©ú¶rô…´I›Ç…“˜XáçCÚù¸ì \÷FÅìD~ g ¡f3GO–=à{-±ˆÌÈÅDK)çO�S— :p®°9ãøš·Ë \ÒgËï‹H˜ÝÄ:œÿ râ1©C$G‹ò<"y�XÇ=Óˆ±äàBÙ7îgq®Èj¸íú›{<J4eˆ8ï2L¾š£0Äѹ6mUQDòä.ÄÏéÞÀmÞ¤Ã/ðÞ¬K4Ña�KX–º{€,ÎßظOa×ÿ&ÂóuÖñ¯+™ß3'ÿâÔˆùE}ó6Qúf§?ò{i1�¢qƒòΠͽF%|AÛ±&GÞm¦õâè ~ïâÛ²÷Ãôa"_ÏÑ¡‰²èëç–Dó'ˆ4ø^¹bîÞï®ô)ëxJXxÚNîWÏ5�€F@# Ðh"6Q‚è0_¢ÞóæÑ¶“œGƒmá?PrÖÌ0›™èÀö‘�Ó‡^^NU­ˆŽÝgÎP÷ÙÂ#V•Ó<}_‘=$&C¤Ç–ãÇ©Lž<Q ¦*Æ*"Q$I3·cG#�–U=µlÞ®]4~�ð0¥H˜�n²>Hrž/èÔ‰ÞQ*Z cFðyªѱ™ ¤Ÿý£e²¥IC¿5h@ Y‡D5蓼x‘¾øðÀb5¢ãÕªQ¹�> Ø^ aA„Ö¹…űºKt õFÃO„“ŽO8hÍ#ä1Zq‘7üƒ:²šêäVGEVË#œVI™³ƒ£4 �â5"=�î+,Rú˜÷m·¾y9QÛªbë"v¬åÿGÕîP=*Ø‘hÆHÑtÁ¢œþŽCܧ½›‹r8·}Øù„ûúÎ &ïR‰r�upÄuù�¨ñ¢ ©ÉÊ1±‡r¤xÂ=/Ó&!šgîx¡Wóô1§ÌbŽ}ïÑS¤4û­‹Hï'=L=&QâþtßV>¾R¢]7v”�tpÅ킨Ø6¾7‘^Mµúì˜�>øù‡!-ÛwåÄ2H¼ TCÄŠ9<ñvô~©n};—KòèæÛLÊ@ç£Yf{“?ó¾ìÖ5Ña‡LØ•»{ =Ñ·_ˆãC´¢æTû½ÑèÞ¢iî~dòQH� °�—…N‡X ›)H�-H_÷¦ÒfE%|@ïà÷! )ª†/Lo|;�æ2´M¦A+S�ï,v­wwïw×zµ<%,ÿ8=½û”ÒœžÎ®:KW÷^¥ÔùSS�èõó×t`Òº~ä:½÷á{ôqç�)fü˜ê©Ë'� WÏ^9•ÇN›²UÊæTf^q÷XÍíC²îÑg.ù2Ut  3áŽa8DU1šÎ~ÜŽÈO^±�$ÏtOй8¸ƒS>m'úû";|ø‘ËSXŒL‡³ÙÎPÿü ¢DI‰¾¬-œÓ{7íáǤCF¾ìHŒNÅ1!•Ù•óâæ/Î8Ô œË pð@�=kn¢¥ÓŵÀ5¦H¯±e¥¸' ïâ!´Ì÷4rˆ¾y€¨ÜÍʈ”©Ò21µOà…}ªN|Œ¶�Ë×Su~�ýID,@°˜#}’L›„4PHUŒûÆ9_:ëH‚{ ¢L�“m‘ i’0‰ù 'ÔIô0m‹ëBÙÒñ•2 Ñæ«��À{Ѱÿ‰ò)‰Š”ˈذe<"ýý\bYNÕ”aî�lÔQ3x—¨†Üör¤¼Zn^ƨé¿vБӏ/òš9qâ±37�¨ýÓkÑç7éð3'ÖÏýqŽ.m»D7Oܤ¹RPæÏ3SÊ<)-5:î^¸Kçן§Ø‰cS´ éдCôïë�ÔSY+d¥ OЩe§(ZŒh”çë<”¹Œã…wyçeºqL|ãŸÝ}Fºo0'³ü”¦ßŠ}P㊗‚Áb;:ç(=ðœ¥OD؇¥ýÇïmïƒÆ±¤È™Âø£Þ­S·Èw«/kâ¼CØÏ…�èâÆ‹Fyª¼©È«”e*�ɲKYˆ}ŸYu†þ9ô�ÑÇñÞGïç+¿hÞ�¹{¨Ï�JÊûÎÏ�¼÷ðÞ˜¼^nš0Ø_’äüþ¼É|ïòö3ü…89ÒÉAãÇÎÜýæb0ú–öK;ñm*\J¼×e9æ wñÞ°2¼—LslA$Xù¯ëêRTÁgù ¢î�Ä™ã‚Û�÷>¾ëø†âÿDâDÚ€|Æ»�šix÷æÿЮã&ߺY=`£«÷û¯;v逛²®`Z‹Áe* žž¶Sv­5�€F@# Ðh"0‘‚èxÉ¿ÖV°à÷$&8Ö�?Oÿ"�GL©ZÕòÒ¸CtÄeý D ýl"“ˆ\�fEt@€\Š|wäh+ñnÙ>¸¹»DÇN�UmÈèZÔf¢£1“°FŸ~JM?û,`—*ÑñÕÇçøòõk#ÍÖ¯¬I"ÍŽè¸Ì)µ�cTóâÔRÓZ³×ÏE /¢ã꾫4§ÊzôÏ#§#Mú~RJ•'�\r2�ù¨÷GÑ�ówè�hL½fÏŒ¿¥/–žž?|àB1ˆ‹¯W8°“u&HÏîñ/IÅ‚#÷äX•îC¼èѱf 6×»”£×Ý98w;Ör8ëÕ¶/Æj¤Á²²­«ˆ¾¯Í©žÞŠT ™ŽŸ(ð6”`$-FŒæ+ÎŽí®¬-RS8¦ÕÚˆ¼Xï«–ðèuÅq¬n�£#.Ob¡";¼WŠ­Ì'úÁß‘3b!QYÞ�«&ó“«Îts[D\ ò$Ä2vDyewÔ@´ô me *�öDR‹©:²Üjn7’GOÆ#àÍBhôçk‚cDd QpºÀàœ�`÷²ébS8]šbö 5þÜ(ö�Üç-Ê MÜ{3˜ôÈUÀ±ÿI¿²À|qlÞìómRZ�\S7 r d i®d$ ðÅýPˆI¸×q¯!% ˧o%*X’EÎiIg04§¶=»?… Ž4�~È¥o÷<¨=ÃáU0¾ {@†�[¡nËjd†½$ϵ�†ÍLÐõh,®)ˆ-\K;1s±×§pöáy1›ÙAlÞŽu›�K9ÈZYX5é,ž!”ÍßÇ÷CA¹Õ1wÕáçháÙÒ¿¯þ¥ÕmWÓþ ûu€Tˆ;‡ð Ì¦Š‘™y„7\l”C@\’î ò5Ég� ÆFž¼ã]jº­)¥+šÎ(ZñÝ ƒÌ—Ûƒš7ÝÑ”2Ï`T™_k>�à�•0u¾Ö™bÄå—“É|·øÒ´Ï¦¥•ÆW¢‚-°ûÆï£U­ùÅÎVâ%hÇÀƲ:Á¹–T–ojµT,_Ù}…×_Lw/òÍn²$™’P­yµ(m¡´¦-¡³êî}€ï&¾Ÿx6÷Üw¤“GÂßbPŒò—&#ªðNÍ�Å}%·£O|o¬H>O¾¹fm"¹«yPÑ Kªçu´B” ê[YTÁdûÅSâ>±®~s¬pQËd¤ Z¦.c`À´ÍD líLÕc™†w¦+æêý^{ÁZxâE㛲BÖ¬ô-ë bŽu;ó”°ð´�Ýqèr�€F@# Ðh4�ˆ…@„&:Î±ÎÆd&7¦:D×Y[µÿ•(A¿úG¨åXv—è˜Êüú#G£‘ Ñ÷+�%÷eEt¬þë/¼LxÓ%KF?×®mhT˜�Õuw‰Žµ¬?òë’%F×}ëÔ¡’9sRíaÃŒôUYR¥"ïV­v«m¾ü’.³¶Ç Ö�¡êÃ숎}çÎQ—™3�:µ‹#ô᪩DÎ�«•EcOgfÿã°ÚîNF£÷nŒ2i‘·~^J–5ÁÙ‚£Ò’eKFíN·“«@tð²ÜõrÓõÃ×éÆq1•0Šõþ¥ûäwÀÏ�ÚõfWŠ“4N@{,¬ë¼Ž^G3µhÑÂi¿Á­Tf!ûú,ToeR€ÎóÃâЭªeß|êÈ+={·ˆ°­lÚ€hƒÖ•x$õ.±N_ŒBEJDiÀâÆÉæ¢õ§)Fˆ"%Ôg•ÙQÀÎñõ‹ˆ0B†4=H×ce’Ì�.�ß%îç5G‚°SDFEîß*œØØé,Muʧõ$Hg!O‡´–L.´ë+Ö0Òi)`a í©g Jí§í«‹¾á\…“Õlû¶°ƒö3Qj>×Õs9­R=± øHl±C øÂ¹ß¬Q§�Ž^¡¥‚(iÈ ÃþÑ^5Œà‡_µÙc„˜*"rñ!õÖð±SR—õ/–1íñ ;¾}Ä:ö�š¥ÓÄ:¦Øwnþ“­x"&BË6,$úƒßÇû��Ù<Ò¸S¢µ ˆ2ñ=2çOÖ¾HâÈiþS ‰;QDp@ÈUêt ß9t2ªäý™Ã‘.Ü÷Ò:ýœ£Jrp*«¸Ü÷ya’È*í“èÁ½)„Ñq]Å�.ȺšùDÕV½™´ùÙÑ øàAj+,#z Q\ÒŒûÊßQÖ¨#?ÃåŽb¬Aj¢]Ë^üŒôsl éžá™£D/ÿýË„ä± b©Ó ûÞ�õ7¥„£ï;\D¡à™F4’4�ï$"�d™œ«z&~áÔ]=ä–Ð�oúqmë¿ÍèQøþ zá謣ôäö“€�Ùpôgü4#™u„þ}É ±%H“Àˆº8<ã°¥X´CQ*7¢œ±íäâ“te×cûA#,+‡¨aÿªi_„eHd!âdfyñÿAuŸêôaÃÕªÆòÒ&K�è� �ý:“Œ´P‰TŒŸ*¾i=Nt:±àÝ>{Ûh_nx9*Ú±¨±,'ˆÔô.îm Jˆ3åm�—’çHNˆj94ý½zúÊØ¾ñèæííMëy€Š«†Ø©9;vì@Mܽ*ð·‘]ÐfZ}&PwA ¢Ö�ß Ú‹å_;ˆS”ཅA™ù=‚(ChEÁ¬HO¿¹ øÿù[ô‹è8Ça8&<Òp,ßÿêý'·aâßmi5šõó–kÎ󨀢HA˜Ã�ÆéüÜ1I’àÿ¦œDZLD‘â=ü÷ÑÓ7�ˆºµïïÍ_;ˆûh÷×ÉgWï÷vkÖИ½{�‘ˆðhƃ²2rºÙ<%,åóò¢ü™3©Ë!Û`î.ÑÑgþ|ÚÊ£¦Þåã\Þ­Åç⃗/§ÕŒlë|¤JœØX6Åsä £FÑ ¥sç¦ÞµØÅfGt,gRdØÊ•F�eËR½âÅ�eW&*Ñ\ýµ={R,¨Ø†Ð¶öÛJ›{ó/J¶3kD‡±Â7Ñòï–ÓÁÉ#;¢ã£o>¢jӪѓ[OhpŠÁFÓ\urQíyµéå“—4 áùÒ`Mz_ë6j9OÖ´_C{Fï ’èðäX¯^½JéÜL“öý÷ßÓ0&¬ £êáLÁ¨zŒl·38 K²SæÉtuT8~ˆã¹4•TPu°i˜* ÒÔ€¨ÀÈx8—aü.ë%Fiƒ$Aú³©"ÛØ†Q翲F}Ž}`týçÕDëÓ‡ùÞùH,ÃùîÃû„s¦ê `9®‘v Òå‹Ììì¾/Ö‘J‘ p¢c´%Cv&s´#’NV8b¥!õ¢/E‚>×°ÃL­/S%©²-ægŽð¾ùú"U†•©×öç‰,|û­U-GœÂUóˆè8‹G.rŒãV~eà|Ug F÷b”/Ú J„¢ p•3c‡hRÂávéƒGâÞö‡ûib¤©D•,Ã)ÈàDªP—£6˜°Y=ŒÂ­ÇŽ&ˆËƒL@TH\uƒ”ëÖ@ô´ê”H�Ô¿­ šp/®šÍQQC„®M©4¢^¯±Ügk±ìé#·‘’$Ž¥´ÿ½lÕ� ï‹- 2dþŒ—Ú, õN$ºpRÔCtî ¤“†hht  máÀCDÁàÜD¤–z?‹-¡3Åèh8aV„•Ø"¦jˆôl¸/óuÀµ…áùBÔ†°l|Ÿ.áw€•áþ–‘HˆTQ¿Võ=){ñð Ë0̈DúÄ&[šPÌüb`ùÿóûüаÙ/v¤Ä^‰�¨�½c÷uÛœhC)>Ha¤¥BôDº"é¨ùŸÍ�mꩇ¦á—4[íùµ�4Pêvui!GdA÷/ß§LŸe¢o6}£n¦—�_Ò�÷†>lô!UŸîÿ²äZ*Ñ�TXÍv73¾—èàé�§4¥ÄºÉƒ¦KH/t4¢PŒÎù[>¹Ød#-%Òt5ÙÚ„�êJÒXM(8ÁøN#’¥ê”ªÆ¦o9íæäÉ“e5—æX��µÏÌæÎ}ò³hbAúá[€ûT5|ð¿UˆêÀý´ü˜#Zß%Iœâ‚FFÉ ŽÖò�ŠïÓ�ÇŽr,yúÍU{‰ âÙ.­�Z×¼ ‡º$$±­×~ϵ1×äpTÀG�ÈðDT„n©JŽw·DZˆpÃ÷Én „¬+ï ;ÂMÖ3Ïݹß�^¿NSy`Ú¬£GéÆcÇM‰ß+eùw¢<ªdÏN1ðO'›§„…§íÌç¦×5�€F@# Ðh"&†è8Éi’½1�ÿI¾ýôiÚ±¢E3þ1n£‚¾` � Â e#OˆŽ+HÓ4v,�Bý�¾d2¥{uñ£ÜŠèÀ~ös ­þ‹Ó=åŸy¹ÿD,Ö]ž�·)§‘ŠÉúA™;DÒNU4ˆž¾xA¹Ycc kmÀ zþ‡�ÃÚ—/O5Š1–ÍD¢2pÌŽ1ˆ’íÚQÚ¤Im‰ŽI7Ò¬íÛ�¾º³ ø—nЇÑ12óH#•F¡¶9îü«©¬†¥FH bGt|1ä Cƒ'<8ù`côlé~¥©d¯’Ã37œ:µæÔ¢ÜuseVWˆOŽõ‹¾wéÒÅj—¶e_|ñլɞÊغ…"uºøº­Ðqpµ»«¾Âq G3ô~ëÜÒï’p@£ÔœºI %#ÕѪÓ"µÚ©“–N%[¯9HYgÓ2M^M¬ÁY³äH`áOYWÎáø…X޼—Ä ¶Ã)úé{"åÖ×û: Ž#Q/vî"EŽjé2 '=8³!½Q«Š¢Ô,L­ŽŒ5;ÿq<ØÉ²ÀÝë"�ÇÜÒßy6ðé4ÔPËÙ‡sSM½Wfí"ú¨˜pJ È�_¦²ÖKcQV0žÀT,8”Á™ì‰3H=«åŽü¬_,¶ UÓXvÈÃñ­šê˜üa0kñã&ÓǤõ"Âý,5Xê":Θɺ2�ˆ7¤¨�¾Ë·ìüGj4¤\BN}ŒèÞÍåˆp‚¹%Z9OÕ”$Î[¯­»H„ó€�„AZ’ lÀ4ûÈ»TPxÖ~š8(¨ýx²mõŽfúZ´Äûd¨•áš•Ë"î5sDêÏ-"”°Œ{÷hxÙaŸÃ´ä›%Æî­ˆ¤´’ä…Ñ#^ êù¨§Ñ~´ºÝjz7ú»ÔûEo¾Ù9ªnê_´¬é2Jž=9µ=Å7€ÉÜ!:Ðtk_\Ðg³1@¤Ã…Á"»TÏ„DÆ’ü ø›Jt|Òýú|Àçr“1GT RjÁꯪ r~Ýyšñå £¼Ê¤*”¿y~cY�Ì­6×Ð#�–V�=Œóž5kmcm5wl ‰Å©MCbУB4$ QQµü¹%DMàÝ1‚xc;"’@DJS‰S©$·a.É�»ØÑ- ÷;ÈZO¾¹²Ìëò¿‘ÐÒ²Kk§Ö5/7.%ÈòY;ù[ð±\sÌ£ >2âg¾óVðÿ‡8 ~I’(Áˆ(„Æš9:/ø=¸_ãÌWŸ=k�«Îœ!¤––*^ºT©bKt¨Z$=kÔ ²yy¸«‹¦8*uUކ ©�À軟1’ÓÈí=¸l .½?ö&äö¶#:*Ž«H…Z±÷’M’jêŒ1Œ1DO+ýιÆ[ Ô¿,ŽèɱÊ}„å"ÇHi“N^±üb¦Hu„|kÎvŒ£‡âÉňD5?9R }ÁNtgÛ9Ñ/ú‡Y "�ýIˆFc;FÃBo"(èÚÏÙ G{å¬)!üiNM�~i(' §�¼‚ˆŽ©C9JŠÛÂá¤ZNöÉ!šÁ¬=‡ñ§©EMéôÇFê#­¢0b$ˆÿ@È€nkqŸˆöÀs8Ê sbî? ²Å„_ˆFõ£îƒ~ìL%EÚü$Ò7™ëªç‚häŽGŠ•¯ ‹šˆ„@z%D @†è¤ƒ8tEvÆÀd=±ò)¢)ºÖwôS–�kŸÙTÇ›ÌcÞãGÚ-¤³Â½†´L o@2AÔâ®òÞ€ÌÌœRä"Ñ—™{øÕGˆËæðiïGÄ�£¦{Kjj¤S#/Ôž1¤¦ŸÂHr¤“©'#š0z×óx b�t:x¥áÜqãûŠ(Ôɘ�5IŽ:œ¶åêð¨r…ŒÔfoÊ~ëÂÏÚo"Eˆ%3i%÷;¤3ç¯*Ö%#Zävõš÷ÅŽõvrKØÏ·ü´…¶ü¼ÅØqÏÇ=é^¨Ž~+¢#^ÊxÔå:Ã&I ¤‹ê~�oR¶cóŽÑº )þ{ñ ] £P™¸KtÜ¿rŸFx� Dw”êSŠJýT* ·é¥§ÓÅÍ�ô‘íÎ8ƒªÍv5#èa©¦G…Ѩp[ñÙ=l7­ýa­Qq“Ç5þ—1 ø¾„!ªC¦ªDú*|ïÃË0Ð÷AïϤ�SïaIœâ=±�ÿ½Ä7G5»”‡ž~sÕ¾A’àý†wŽKMk§Ö³[¾s“Û>ulM•–¿]|f‹ øàD*⽉ô’ÛÿT0Ãb¹ŽUøÖ_õ)"ñ®†á»ŒÈ BŸò{n‹Qh¢Ò "Ý`XÙMŽ|ŸÍS9bþ°ò; c úø„&:Âêjèýh4�€F@# ˆD¢ãøÍ›”Û_P°çh…!<½˜›izä%ó”è8{í};a‚Ñ Æ!4Ñ!÷‡ù-mÈ×—¶Ÿ:EÛ8õ"C`u9ÝSKNûdgîH#b6žS1|�–=ú[oo:~å EgOè2Ni�G"Z¨Þsî\ÚÉÇ�AÏíÐ�v3�2tÅ £'�ÍýµO–p¾Ý‘«Wå­øz@ÐÜUS‰Žÿq4ßߤݻtÏp¸`*9¡îSЧÚÕ¦V£�‹ã�}4Ý>s›TRã÷|¿N»þ徂#:Br¬ra9‡È6ĶaRXY¬?Y�æ%Ê©:²%Ràä‹-F[cô\)ÑÒ¨¤pÚÉúp®÷Ú² sÕñ&GÞâùÃdº25ÅăAÒÉ´[2ºލüìÄY|×C:(¡Ò$¤Ö»9 ýz‹^�B é«‚3 °Eº+¤>)\Š ƒÍÎ-�¾ is@þ¥ÎÀiŸ.9¶Ë‘ä(�Ãìû�‚ ƒ3möXƨ§¨kŽÐrô:K2ºš8>Ûìû”ùí‘" BôfSun@P�¨ /“š*9¡Ë�c7h\žqF‘Ñ‘8cbêèË…í蜣´èëEN¤Æ©e§vý«ƒUD‰Ñ±i2«â,:»ú¬Í�4SˆÁ7nd¦‘ÆÿAe–¡ÝJ8µR‰Žï/} û!+ý÷ú?곯A ¨V´`áô‰dµ`çH§…´ZáeÐÞÀ7&Id¤„ã#ðñhÈ�aÝlM>ã÷à¡›„ï®ÙÊz Ý)³Î�§ß\µULÜ•Aj[w–£>HçW9§@)§nr!‘pìO¬·PüŸd×:¨÷­ª©ï¸ÿø ·_ºDÿøƒþú矀SàÓ2Lþ@è™F@# Ðh4�€KD¢ã�øiÄÛk9¢¤ec¡ïo8�T#þKg‘+YÖ3Ï=%:Ð"&9�”SлhÎÄÇí‡�]lèÝÛ Ìû3¯ï`¡“ °ÔI’Ð&ìÌU¢¨@t„ , ÷ =iWY¸]´7 ÁaGtœd­‡V“&Õk-jè‘X»9ä¼ûìÙF½à¹o9k¢ãúÑë4>ïxc÷ÇrdFëBòPæK³0*‹•Ú¬Ï�ؘ½qúUžP™ |WÀ(›�]ûëš-‘bTâIpD‡§Ç òìÂ… r7.Í“rj²$|¯„Äš²³Zæâßq“(Ir×zÃhP™žÈ,ˆ-{ Ç ìg¾%ej8K'å™$°ÒéÑX"pmú[ÔU§¥Ó‰hˆZ˜¦n±^–Ñ Ø } sdœÃ2µRpâÇê0 ‘°Ìp´Ç ±¬N[WÚ2Ï6H¤�#Z�tQÛ`¯K¤BúŒêT z*H…”Iv&�bA‰ÅʶH¯…4[È%/�vr›Õ|é!:.¼?)ÏÄ·‡ÉQÇ “@*Á†u㈗ÁB³ÃÊ!-j¹7EdÐWü*ÀyîÛ÷ûA/VBÙ=ø^�hºêÜßÅÇ7®¯ˆF’Q>K§1aÜD ¢O༔Ñý§U÷ßÖ¹®÷…h=¢-`ÒAi5$j¹>•Q=vÏ�UOªóÍNÄvD¾6¿ŠÖs÷å)LsDâàYø¬Š¸¿ÔþAî|ÆÏ¢BRñ"íoÊ>N&´qòçÑ#V†ã”éÝìHFœ#ÎÄ"C�z,¼l^ÍyqpèVt¹Ñ%ÐaÜóeBŸu1`–Dks@£vl.GoÔ[H R' ü~0ÊN/?MsªÎ U¢ãä’“4¯Æ<£ÿo62±P:I *¤Íêt¥“A¶ü'*ÑÑõVWŠ›,®ºÙX~ñÚHO…4U09X"äpœå¨žÃ8ÿÛ·oÓ½{÷‚«°ÿ[¨§¹h@IDATeæèØ�šLY„wðÆË®÷†÷:ˆS�‡êÙ4¡pÿÃTý‹�|sEobª4Àqõ QÛ¹»ð9°]íÀé+q½\5hEÕ+*"^ñÍET*4Æ0ƒð¸ŸEoÐCÙae“r”rwþvG �(B«}X•ùò3çsø0Mç¿ wïTA âŠÙ²QþÓ§�2Mt@£4�€F@# Ðh\@ Bò<.³ø£7‡7Oá¿¿ýúØ!»Ò™2y]«³ vÜ`„«CBt½|™ÚMaOÄ·×±ž…»DÿF¥¯†§|>øÁ¼¾W/#zÂèÔ4q•è8íçG-&N4µ¶^•BãvDZuòñ¡ƒì4�ÍX6(Y’&oÜht¦Ft Ò\Árrt͸æÍ�eW&aMt<»ûŒ&å_slÈ÷�¼ßf“#OÛèðôXC[ŒÜŒ�ÝzC†òà±õàSk� «¶gy´zµl¾ˆù(#6E�h ³A�ú0UD”„ÎÔï’CÛ$&ÈL+ƒ6 Äza]~#j,üý¢Àúu1"èœdÊÁÇ}ÒiS˜¯¬é°†öŒÚCÑbE£ŸýhÿW÷]¥I…™f{[ˆ¤b„þt°ò6ÈK5fÔ QYGÑ�sw({•ìToY½@ç¡mO¶¥ä9ü ÿš¯ž¾¢þqÅËBM‰µ¾ëzÚ9d§ñUÏ'=)zìè�ú¶*M1r«þ­Ê�º Ï&K«ê Þ'æöWÎsdêû¢tÈlNah‚ïI¼/aR Ë!ù梽4µe÷½’õB2�*ø¨Ñê÷Îì$‰�”WД2G¶â[Ñxؼ½D¹™Ô·²58*�¿QÙòòÿ8‡­j„^Ù#Ö\Èé|Anlõõ¥ÿ”®½'¦fÐ/ä¿4 h1r½¨Ðh4�€F@#à:Šè�§õš‡³ýqîM:p€Vqt„í¤%`½‹:¹rQ›Â…)Ÿ�¶CHˆì§ýÔ©t„ì¡­ñš÷ýüÕ+c÷®Ft r—™3iŸHšµLtÄÀP* s•蘲y3ùlÝjôP¥`AJÏÑ.f›½cÝeÝ�ø¬i²´kWš»sg�ÑæË/ bäÒ^¼H�¦O7V“°8 ÚÁT¢¸=r¤AØ`Û´6mÈ+E ,kaMtà€$@/½0ÒO! •ÙF½ÏΗówÂ=¢ÃÓc /¢CŽrÇq[ia˜q–ëêHF;²AŽèD �¥G©–d‰šîHö‹ùÚLÖÕ%Cy014TSI »ÔWj},û‹º®·×ßÀè|¤W‚%~,j8O?a§:ÒɈ ç­D›Ù‰Ñ¶ª(…2ÌxíYE˜Ûš×A`|™…µ{x3Fác4¾•!J8ÃT’I”žIÄ#Œ¸GD¨¹Þ¥fÎK¦MR¯�ÔjQ#"…ë%Ðä€C¦Ž¤•i³PÍ ˆ³Â@ŒŽI~Ý#'=rÓÛYƒ¬�°Ó‘ö :'ˆi‚4jˆ±2ÕA9m‹u:2«vvej´PP¤–¹½ª[�#D™ ÷ ÈØâCb$±ú.@:«ÔÄvuÚ¢<“y,@Ú©D’Z/$Ë™„B 0Ø’#ìÀË#–ÍÓC»Xs£¸(í9ZÜ»j5²Îd8•ÃÓv ÝEë:¯3)¨�ŠJµ#3�Ð↋�¢7At€¬ø-53Bl5gÕ¤<_ÛkÔpL6üoí´ÃЩ³ aP¬Þòz”½rvGEÿ%•註´.å¨Ê,“b×�p„æ‡ã�’ªÞU)_Ó|ÆòÁÉiù·ü²dku¸¥ÊË/V,<ˆèÜ`4>,¸÷‰¨å˜ªß7©aäØJ4eÑЮ" Ït>`!ùæŠÄ1ú²D Ö³Z†vˆHi Æá¨7[TÁGÕj *:ӌҖðÿwÛêÝŽ¨Ÿú ’Q–øîØEZ‚4yV­1GSòÿoÂör¤øØ}ûh“�_¾ ØE •«ÊÔ¾eMÀ2%…ßDÒ<÷´�ܯžk4�€F@# ÐDl"$Ñ¡BîÇi£¦:DÞÒE%õ„ʧTõ÷ ª x9¤DÇ^&(º2Qa6ItœçH‡cùQ�ÿq·"0ÉÑ„5G?N’''Ÿ¶mÍ]¬»Jt4ûýw:Ϲmñ# ,Ú.]J0V0’Ÿà2RÃLt N«É“éäßc1ÀT¢…ªNGá÷ß§þuëi½ðÂsþQ}¡K ¢cÚgÓÈw‹/ÅJ‹ºüÓ…¢Ç‰.‡®ìºBÞŽ�õðŽèÀAxr¬H]u…q–ú/'ÄÒV%t#í›UWê(nÕa¬Ö…CÎ MK»Î·Véôb­ ;%¡o š*¢<`ºÒ–ÛUÝŒ@ÄHDi�(8)!, ÒÁ¬ç ¦j€#È*õ•ìOÎÕ|áË�eÉ)·°�G¯Cš"ñx”®*~ §k©J"¥“£…cIÕ}h×O�Ž­bIÅJnC*"œ›Y{Dn·›ƒH(ϸÀÁTÚ®‰�V †CH5”ÉHˆ¬¹…ãÛNóé‹ä65×»Ý�Èè&À¤8´:ò^:ÕE Ϧòú£5tB&²ãÎ F—blÜuN“¥Š¦côl©Ê¢¾y |Aúk«€ðñÙ¶�R0êq©DGY¾Vyyí­&™;¤Æ ©�Yu†fWCrsTËAµf×2ÈŽ»ïDpÆÀÞ¢ÃÓc )Fž´ÿ‡�àpLC/�I­bï÷Â�Iˆ‚ø½QÉŠ"�ÜF–|OD2Àaó«;P* ²£ê¡Ó€:pœ#Ý�ꬄîDÿ¶¢§ u9-Ðáp…Eׯ‰Ž³3Îbüh7§õ@+D{`T,úF¤ˆ+¦:Ç«5æ>rª©Lrli‰à‡©âLjp(š˜(m&A`*%ÒLÁ1uý* �²óÍpü¦`_œà˜[Rm!å–4èA@ÇÁʦcqÏ5Løtà]üz±‡Êñý,Ì<\8ÁÐN¦²êC%: 9òU+>/«š¢l_s�608Àºu8°@À1Çû3^±“¹Þ%åûä¶(“i“â'Î~\G9BŽ ŒLUïÑÊõ)èÛUx€CJ³ÞÊàˆ€!L¦šRñŠøñ=Í£¢­LûäªcP:(q\ yBjýÚpÄÎ8Ñ 4nÒd´ïñ£bý )œž.3;ËfŠ6/ž rl7?ψ\³‰k‚R(êHs¯lL²Œç¨”R»�Ÿ“^MDèÑ]ç®8 צRÓ&¨ˆ%ô„ç®?Ÿxwá:—¨XYYçç Îd)⎺Søþ•:*X/›Xh"ùí÷£ñbP½¥õ(s™Ì†(÷Ž�;hcO>H{Dº–i§ í�}¤-œÖˆÔ�ûµ›Kò^n‡9„È­L%:@*”YŽŠ´-Â7tDæ×™O¯Ÿ¿6„Ä!(®šÔÀB;hq!U%7À^={Eç×�§½c÷Rœ$q¨ÖÜZjÓ0]îó-ÑÂÉb—›ù[�2�ë»ÿ®¢ó'š¹#p»ŠÙ…&S¥úŽçµBòÍU÷"ßgÉùû 5{^GÔˆZϼìwÉ‘RÛð~Y{Þ\K¬G%|d*0œ9m ˜&Òâýtî¸ÐÙZ:�¯9¿—$)¤F›!ä;þwa�4—ÞƒDZ4ô M(DBÚœ€1 =£BŸò· �x¿»s_Úõ�r+ø7EÍœ9�è�O½¼ð8ižž¶ ò`ôF�€F@# Ðh4�ƒ@¤!:TÄopš%˜çôO£´‰ü ‚³ÜLŒñ' ‚#:¶røuŸùÊðOîÜLt·¿tœ^jrË–††]]WˆŽÅLÜŒZ³Æè¢q©R„?+{øìU4Èt�sáV*P H¢ƒýXÔ”#O.Þ¸Ð�™èÀ�F½æÍ#?Eð< �ÿ‚™€Q‰s]ózÎ×ÛÕ&:Ç\7Èu>!Ÿ²>ta#�cCžó„iÒ½‹÷Œ‘¦pŒ "´‰Ž &ÂåòØ�_ü¿�.§mag•jmŽ·éH<øv"M'?HÃ{ ÚJˆ…©‘sXÇû­HOöùÿ¼¿Ñéú1 ³JË'¶ˆ©ü«eXÆÿQûÛ§¼2×jý(ÿNHËž’ƉT5§mf¼.+›ËÍ벞žk4�€F@# ÐD "%Ña¾tÛ˜”èm"%Ìu°Ž¨‚�›Êýò =ã”KˆöXÆzfƒC¼Ñرtå{DØ¢ñ¯Œu¬µ�ùuŽ Yô矴�#K®Ýe/¨ÉbF�NU ¢úù�Ø&d[6°d ­cÑ>ØÂN�Œ(¹MÎA¸€x�A<¨è‡6ÞÞF)Ô…ÈøL޶€u¨P�ª³®‰Ù6ptJŽN‘Ö¸”5‘eØÊ•†îÈ#^V-5§G‚p;´C¤­åsú•ÏÍC»N•*¹R5Ø:¯_¼¦•-WÒ!ŸCFz 4x7Æ»T¤]¶½cö§pÂHCÊ�ÛgoSuŸêôaCöü²�Í9–nž¼IU&U¡üÍóe òHÛ~T~dy*Ò¾ˆQ†É˜ÆÐ­Sâ> (´Yèp¡%ÉÄžQ6OŽÕ¦Û0)Þ´ŒG ¶qþ±Ž#Zi2: ­€ë3FcIn  F&ÿRü@G{+CôFˆÿµË±i>È'„­?«â(W—°¤Š€#£áxwÕ@\tãQ²ªC£ï»�äToE/*¡sí2;ëÙÙ´n!Ñ ¿À{ÁèÌíEJD0eeG:�˜ý°¨}mŒèÄhtìßlpf·îͺ%_ çˆy»º-Ð29 �¿vbëÈó=ð{"DM˜ µ¸&p¼As&ÆUsIè@ˆ‚ܰŽì[¿˜;-„h¸(uo 爤�gÜJÎq^ξ9jùíá䯱yé¿ š´Ö¾�Ô〣jïN�´EÑ:a9ae ïp_â™@´„iCjpxâºgòXá,Ûʸ "ÂlÀ!i½DÔDᑦÍl þÆý,îU`®"¨ðÌ!]Xh™Œr¥?sz*´)2€ß ™Ì’’÷Ú³'bÔ½ÙÉ(ë…×üòŽË´à«ôÐÏqqñݨ6½M-9Õ8,D+äþŠg“$C’ÌI¨ÃyñÂ;>ÿ¸Ñˆ’N oø™•õXy¶íÐíŽÍ ÈïÍ£sŽQw/Ü¥Ç×ó{� Ù‚":@À@' )£ÒMGÍw3ƒhc*ÑÑt{Ó@ç m¤³JS0�eØÇöÛiço;éÅC盲”ÉbD{d­Àžáp0ÀU€ß¸÷q2ßU»s“Û¤µ¡§P­±sK5ÅÞ´Í"¢J­’o®ìd?Èç-ü®¸é瘀o S;SÓ\¢N{&[ô \;*âƒAˆìX9Ëñ�•È õ¾›˜¡ùÿ5:²ÿG ’zMýß³Áilá= ár�ô Nð-‚¹ñ*Z„îÔLX˜×åÞÌåæuYOÏ5�€F@# Ðh¢Q‚èÏKyóÁÂßmÖ‰#!’"ÿ�숌wÇ5Žì¸ÀQ qX¬=e¢D„Èö;UöòñKººÿªAvÀé‚Ñ¡o«E¤c…ƒ)Ο#Sg£ ƒÓÀÀ(TD€ À�ú´^®] ìÏï’h B$wA×ô6\ëݺœH'�(�*8Çà Î%'°AZ¤ü@ÚÌ]1Œ0¯ÌNzcހɄ®´£;AvÜãöê>í"A\ë5øZˆ~¹tV8Á%ãœãiňT©Í|ºFDG î܈’€Ô™õ6�#È˳G1‹È!�o»!Ýâ�ã7(eî””4KÒ·úp}·°¾ÈgÓŒcTX´JtôzÚˈä€þÆíÓ·�saã’ñ÷áþ•ûtóÄM#’#azQž9i HJ—úŠd•<ýæF2lO'¼ð¹záÿ¿à+Rcâ!hsØþÂÿN = í‘ƒÿŠ,ßYO OÛÙa¬Ë5�€F@# Ðh"šèˆX×K­F@#Å€#£u%¢m<ê#ï!@â ª›+‘ VŎÈgŽ ç òÐýauíÌeˆ@Á3¡ííG‘"ˆA*ªÎ×:s»£¶":ìêêr�€F r"à)aái»È‰¢>+�€F@# Ðh4QMtD½k®ÏX# xË€Ó)€ÁZ¤ç�uNÔ¨£XŽÊS¤Ÿ‚^Š'Öá¢ïzxÒ2ìÛD•óìÞˆh¹‹QJêU@ªºÃü¬h{;xr뉑^ë ÷AÚ3j�q�HëˆôŽA™&:‚BGoÓD <%,,2û�óA#?wÿ©Áëj8·ŠœkÐ)÷¾gçf—Þ³ÞÞl«¨ržÈ3¿b¦ûX"2çÈK÷Ûéaƒ@ß} M¹·ä9’S“mM(^Š Ãp4Ñ!Ós�@ÔEÀSÂÂÓvQi}æ�€F@# Ðh"šèˆ\×SŸ�F@# ÁÞƒ„ÞH®Dek ÑòHpj¡r ¯Ø¹}â g]APÛUmÏöz­¢Êyþ}‘èÎ ÷qƒ¨|.ÖåÑöv"Ð?Nzýâ5%JŸˆ2–ÌHe•¡©-ìM‡`âZÙj%AÜ«×ã^qm�@ÔB@žžuŸ>}t�€F@# Ðh4�€F@#™ÐDGdºšú\4�€F@# Ð„šè;¬õž4�€F@# Ðh4�€F@# ÐDH4!/›>h�€F@#eÐDG”¹ÔúD5�€F@# Ðh4�€F@# Ðx†€&:<ÃM·Òh4�°A@aƒ³Þ‹F@# Ðh4�€F@# Ðh4�‹€$:ÜÕÂñ´]„J¸F@# Ð„ šè#Øo=x@w?¦ÄqãR² (Ú»ï†ÑžÃ~7/_¿¦Ë7oRœ˜1)E¢DбÀή>KWv_¡x)ãQ‘vEÞØûnñ%¿ý~'YÊ×$ŸGû ‹c�ð ÑãDÑcµïïÑa4zp—(~"¢H|Ûœ+ÖÌ#:wŒ(u¢Zß:m ´òè>QÌØü+Ð&] Ðh"ë�>L”*Q�žŸÞ�›D³F‰öU¿!Êð¾s_GömX,Ê>©@TèSçía±öêé+Úþëvúï¿ÿ(wÝÜ”2Wʰحއ‚@XßÌ':{”è½ôDµ¿SD/ܽE4s¤£J#¢ŒY50��!àÊ7åò9¢±?ÞOœxD?M\ÑKÞô{ÏSÂÂÓvýzèã×h4�°E J{Ξ¥!Ë—‹l®ôééç:uŒz-&N¤g/_Ëï%NLƒê×·lÿƒ�Ýzø�¢³wRË–ôî;ïÔ»~ÿ>MX¿žv�>Ð6‚äÈ�!}œ-Õ)VŒÞá67¸nkooâ_Ãí]Y(Ÿ/5+]:PUŸ­[iùþýFyÌ1hz›6�‡?¢9;w´mY¶,ãc2ÛŽS§hÒÆ�FqõÂ…©Z¡Bæ*ôêßiú–-ô'c}ñúuc•pnyyQ­"E¨xŽí¶ž8A£×¬ Xj¡]ùòôiΜAU •m«Ú¬¢}ãöQ²lɨÝév¡Ò§U'kÚ¯¡=£÷PÒ,I©ý¹öVU‚- ‹c-‘‚?H£E':"…`�KV¸y�hÉT¢£{ÅÖcÄ$Ê”�¨RþñÏÎÿ„IdíÈ7¯ñ‘pä•­A4b‘óù=yD4õ7¢�k‰|ÏÝ¿ƒç„(Y*¢ü%ˆ>¯FTñkQæÜ2üÖnø½xÎ×,qäºnƒ :¼›(v\¢ßW‹{ÔŒ2ˆ¨ÎõˆÞãkÂüôàYD۸&®ÝÔÍ�ۢ΅ üi¢pè4ýœ_óÿж•Õmå¼G|:ñgèÆUQž—9×nÃ�ëx²v†o?·p­eˉ>)/êŽîMôç†àÛµâz%Ê9×kÇ÷ò�DYó¸æHX=‡×£�ûpe­ÿ~·ð玌î�\i!�Õ‹º—Îõø&p;8@Òe&*ð ?“|¼ÊœýðîDû·Þ¯¹dó´-ŽwÂì1D«f›kÅKÈäjz¢"ü/A9¾‡ìŽïœcûüßÏ<¿ÇïyØ×mÅ»G¬½¹éW…ÅþKUfÇSðÿšÙÈÆ¥LÂW›—!ÊÆ÷™jsÆõçs‚�¬oÑS,‡åôñÍÇ4$åc—5gפ<õLÒƒá÷Å]_IÀ– uŠ›?ØÚœðä>Ò™èÐ.§nŒüß‚w͵ˆ>*x;Jj :q�¨tU¢Ñ|�†¥={BtëºØcZ/Ç;#´�áÂI¢›îƒ6Òd$ú òh.¾­æZ[Vµ©"JýE”ã#s�7·Vø¼¹3p­çˆpžžþOb…€+ß”Åü‚Õ=›3?Ñ‚V½Z—E”ÿ‡=yïYŸ±u©§„…§í¬�B—j4�€FÀ�(Atl:vŒú.\h�ÀÿÙ» p+ª-¼¤»Cú Hƒt—Ò¡€¢4*’ ú(%¤”é.ié”în.- Òyßúgß}fŸ¹3'æ1ëûΜ™Ý³fÏÌžõ¯PRs1Ð1¢¹X¹—ïÝÛ%¬G‘þŸ|BEM@€:ƒk@ʬéÞÝe©qøÂê8i=zúY–´´kWŠ3&]¸qƒ÷_ÂS½@úº:K ÔxäH:ÇV’Ôyûmy¨ýOÝ´‰ÆHÈ–& ýúÙgnep°d÷n´˜¿L˜–.X¹É–*=fϦçÎieÌ6‘FóùK÷ìñ |BÙÎ5jPÕü¼ gŠð§ðªÐ"j÷ jY8nE¿­$*^Á*÷åNô�5‡ã=ã[ß(\[½€è‡/Yñ·õ9B¨¹ûž°¤±.±9¥R°Àš' Û}ûKÄöž½ÍGÔ#ø‘÷ÓTá xöógDŸW Æ!¯ç—üÈݰDÙâ#D³ëǸö5s�=®§mb�ÿ•ó¬Á^POƒ0zð,ý{‹yß6ÔÓ>æùò?؆–æ0ÐÒÓG cÊ&º¡Ï9‰Nóùy£i±à¯¸^ V\Å’ˆã|>ý&ëyV{Ýš-œd•k�¾•÷@.™Æ PërjÎ@ ªÔ)Fž«åä>„›“”HÂ÷BXQå·8ã­½€,üÎTæRËJúœ´ª A#®#À• ùÚ¡®š¢ï�OT¾¶~{¸7ð|ÄsòË,ðìi¿—áÿc€òG¢˜,\ÝyG€òjká-èQû²Úo ãΕ;48õ`­ûº³ëRκ|Ã:äÆ;ó < ëñ¼öDŸ¶a€t˜{‰'�ÅüÆ?æ6æxD’z®Ûø?QøôE–ï›ynÊ×¹¿QcT/¡Yå—]w#v­QüñÌ™ðÏ}ÎÓîšÄÈ=_ß)P„€%¡¤ÎŸá>…Ua�_eª÷ÿ—e=¬Î¹võ~v¾—° XØ­çûÈœ’8p8àp€•}Øœ>èUg@€’VîßO—þeÉS�¢E)~ìØÚ~êĉ©Bž<Ú¾è€ƈf!Wõf@ÇýÇ�©ùèÑtå&e0åæº°”€eÃíû÷éøåË´�­-nÞ½Kè¸ÿèÍÙ¶M+¯nVÎý�?¨ùþ�aôÜ=òHÌ�ªY‰.ŸÓÓz�#ú°¹~lw¯×çD³ÇˆÚÍ¿aM[ñÚ3m®i']@þû@"ð ´—ù³e¥Ø?`¡%©YgwíÝík‰`½‚EJ£öbßÓV °®P Àé¦å"ÀP¦j®è}ƒ`¡3iˆØGšQÈ/rÄ.e’§ûj½–݈2@óô Ñ߉VÌV)(Y†_¡£æ/*†b{÷?¾ÿ #Μyº¿žÝZÐ!Ad”b",eÒeÒ-‚ ì¹ÂslÅlJ¢, àPi_ûñD ÎÿÖ !ìAʪ@¡�-rÃgûèæVžå?i…áO¯_TÖU¹ ñ=·#dÍðô„ì1dŠt„äID§ø;pO”à÷2(_q1O±•Ÿ[W³[ªC8d|öÝËßùÍód�ðü‡Æ:4×á6sµò ë>û0ÈË2PëžDqâ‰g&Ö9;×áù2¾ã�öUM¢u‹Ìó�žQü Ïsð¥í—á<í®IŒçoç�e£2ÁïÖX/ÓzØßçž‘¯ÞŽívëy�“ïpÀá€Ã‡T¼@‡zÂØï>kmà¾n @˜§Ý[ˆ}R'oófšAë ë<ˆ¨ ÙApMV)³H‡[+Ìyé¢Ö<3G‹x5î °aG°@uáÒl èc2��w�:&‘bo+];$fÞæëöÚÜE©Q{ ¿Baå`Eò\�?iQÁÒV%=§eaýؾ¢Ì‚ý,Ïc]@âŽõ‚¿Ðfÿ}!Y–Ð0V]>A°Q!@®™YøÒ‡±ÌNæI“²"õgu0–0?¾z‰]â¤yxŽvçù¤€¨ÏÞ)paõû5—-‘– à .Ñ ý”¹NÜÙÂsùe¢Òül½qÕZ#7¼=¾ðÊ:|áRø–ñwlYÅ÷PE1&X0Â’Q¥_`—TÝE \þo”ž«ºÇYs^ÄéÐsà À–ðv›Õ „¾aI‹:•ðn+›Z;6ñ=ªZÂAqÏÕš±…+¿g#’"Š?yNf}½ çk³s÷%MuŸæm]¡¶÷2­‡ý}î©çé˾]ÀÂn=_Æä”q8àpÀá€Ã‡’¯ÐqŽc]Œg·HIØJ£=[k˜‘¿@GÌhÑ4T°œÈ*}È®«npŒÐjv]…XS6n¤ñk×ji£Z´ X]Ø%;@G» h?»‘JÁ�Àa±2jÅ ­û1-[RV#$©@biH㸘‚«)I‹ÙuÕà`×U J•¢åÊiY0jÆÖg¯±ä�i4»½òd™¡ ÞD&ÐWÇ£‹Û/²¯ü ÊP*e«•�Ö÷Zo£ãðìÃôàæJW<�\z’.í¸D©ò§¢­ гGÏh÷o»éê�«ôæ;oRñNÅ)F¼ê©jûGæ¡§Ÿº¥ÇJ‹²TËâ–f<ðw¬Æú¡9öè€0‚|éªq gÂ@‚ž»6 a?4~!H…o|h.{"øœß³™]>m"ºx–… |Ëå.,´ = ;Qny ä{¿®NïXGmt€øòÔk)üôûG?ˆ]°�Ë#vEa²Âí 4ùá ÚÒë/‹Z0™‡›„"Ƹ "Ç| Á øû?β¾c^æ T¤Ö;Ü}ÕÃ�Üú &ÊÂ=Ƈ6¡¥ I0å‡[ Iˆ%—[ ï†»»™@V  â»`LÐÈ¿pZ\Ãü,©üqHôås,|ÿSd;Ñ“ĵÀ5OñQº~‰ÐG|aE�Ç�Ë.Ú†µ ¬V0/š—šî)Ó00µS×þ?à:·R3ùzª®Fö®9<‡¦½tÑóI1Ž ²�]:qÛ8gX/H0 s ¬'àÿuáÚ‚uü‡†T×p×qv<Ù¶FXJ á×�%Á-bnàþÛvË}ŽYV2Éø¼Š˜G1b 1ƒÌÏ‹¢,tCL•ÂeEܳrÆ4Ôƒ‹-Xõà™1“ç«‘ ô„ð´îQŠÔb?4ÛÉ?ýÔQ´0q½ï�²UM¯±¬=þ™û(p>ã‰y„Ø"è¬Ï\¸‘φ|ŽVåí¦Ã’ }©”$¹®)¯¦÷áâjï_B“÷j~f!ެu$àƒ@²fAŸÃ[Ðcë©?Oѹ�çèú‘딲gÔ˜Awÿ¾ë6º$™“PÊÜ)éè‚£!‚‘Ë<Œþ=ý/½•Á g,E ¦tÅÒÑ£;�\$¸ød±Î;Y¶âþôðKlòŒÜÎX•æC½ëб|lþ¨–Úëþ ‚¶öuta½Z¼ðŸ 7Xf„�døœ—ðj¸�@�éx ÕT}_ 0ó•`ÁvŽ-ò¡Lë%„åŪ@5……‡Š�RÍ� Ú”Çö1€P•ÞKD‰¾ü2—5Ĺ_Iú W…éÆºÒŒ…,ôȪ—€µ>êîÝÑÓÔ=p¿! ®ÅÔ82ÝìßJkÇwÌ h[ €Ððî×c„eZõn‚ HGÀn5n„þ„ Ë`öR€�¾§²p¡U%!¨ÀÜCœƒœÄx°ý­˜ï&Æ6žå‹Mß ×ÔX‚›+i þb>báæ:æÜŸ `¹´v�î“`ð <4sû!Z÷o AXí<¢ÜVuìï_}YºxR"2¸¯À'Oðèì1á¶nùIO%=çI­}�f³pÈŠ.ža°2“È…u¬$|!µžÕ=†˜Cû4‹îyx|ée4}Ñ”` è¦ûýà© éßefïrŸ›H¨(ç ™ÅÊHB@áê9Ä\}}=@æ„Ý?€U<ÃŒdóqŒû©IY@—eð<‡{5<×@˜˜FòUÐc¬çïñó§ÏiÙWËh×¾ ‚{Ê¿Š›E F~`êšßp¾V@�T„x#Ê”¯i>Ú3~�«¥(Ñ£P³�Í(mÑ´ZÚâ–‹5 W;Í67£ô%Òk%ŽŒÊ=JÛï‡÷¨ô÷¥MkN,;‘7jL‡s´µ L9�î]»G¹>ÎE·^¤[çT(Q†DôÉÒO(EÎJªØ…RÈÊ.+iÇð.¥µPÑöE©â€Š„s kòw`-ƒ5 @Úí·‰Œ‚h€øX�JÿÞ·3¶…Œ¹ü±Ó'€s(—)I±&RÝ3šñn¿~l-âuÛ€‹0»FE¢°˜þ®‡C³6U盿k’мS$?eœ+¬ý§n–©!ÿ#c=¬ŽÂßk¢Öõõ¹WwΚ{äEå‡SŽåùÇþÄ?Ž=‘]ÀÂn=Ocqò8p8àpÀထ/5ÐqŠãlŒcpcâ¾}t•b«ômÉ’Ô/Øò@MǾ¿@Çà:t¨¦ñ€x½?úÈÕ¤бlï^°�%[Li“&¥^uëj1*\•üØñèXÁñGú-X õл^=*�#Õ2Ds_•)eJÿÅ®ÞU £õûïÓyŽí±˜c‡€PåAV@ÇÎS§¨óÔ©Z™ºÅŠÚð•T ÎÁW3ŠÊ¥ŒÁã0Ë÷' š�?üL�þ{¤}¸çù4%};)®¤3kXJLI³$¥6ÇÛÈCr¼èËU?—¦‰xíð5W>´oŸ»M—w_&)º\ïB±“Ävåcge§•š&$ö5�Ï£×ÉÐag¬·Ùš©U«VèÂgªÎ�ì?å@õf$îAx¾ÿ±Y =­qa‰�”é[…¥€žëy„_VnP.n ñw*ІáãÁx�ÚˆÐzïÖD€p�ðnuN°œdÕdl�å<×Â(€íÖ˜ÁŒÉ¢ô‘6#[uLÔ[Eß¹ø·` ¾øâ:aEÐÀÈ·´âAƒxÌF­ÖŽõDÜħ€0V2‚}#À&,8à²LÆé@|/Ø4p[ºp]Ì%¸x+ZŽGÙD¼‰§… bs ?´ ÷ hð,„ó9øK¸?*ˆZõYm\+‚û®" …¿YÀu«zÆtÌÄCÁr V¤Ùî?…ø ¬Jº§ãY�@`‡JÐÞ†µžSTø B°zÜk°VcCŸ©M-Ž÷²PXVÁÚ–.’0Öö<�aE `¸ä0Æ4‘eñ�ç§ ÞŽ9Yåc57lö1o¦m=g�˜…› €}ûf[ÌÿÆeX†wî‘Ì|ÿà9 0GÎîÆT>ȼ£„ÀÇíú°%V7™¶ÿkÿ·–6þ¸Qk4yŽäšeÖ§¤û7î»:³:¿•˜2”É@°˜xþ„™Ä?u|‚eÇþ)û5ËÑ¢íŠR¥_*iyGç¥ [.hûèV¥ ·Ùlý«T¤mJ˜žoÆ`WtœfÍjµþ¸yö& Ë4L#Ju+Eåú0ãƒIòý¥+‘N³`94ã�V'^ÊxÔ>°=¼QizõétbÉ - Ö¯Ykd¥(ѢЉ¥'4+Yd”ü¶$•ïW^+3~üxZÅJC¾¬’'°5s¬X±BTñwTáõ„ш—µL Ù­M”*A]ùÞ€ßw X$H0Çx—@ñ##?Ûaù -~�ˆ`w¥ ÄA«ƒ ŒIµ~ÃX:ôs·È%ÅV}G Å“[)ÄRê¼l4³ÞÕ,|óˆ{î“MÒ¸þ u•GB‘ÊX“¬]$,ë�;œïs(RHŠ þØé–¾ïóúKY(¿ày})PKÒ,UÀ[¬½¥ àï®# |¨[PÄmC,nófËŽÍ\gµx§Bc¿;Ò¾%k å›ÐÎ×áY›ªóÍß5‰ÝwŠÎ-"©´�Øaˆ!fE‘±VÇâï5QëúúÜk³|9�رC­ªYvÀ£9+Lf`ïfd°°[Ïl NšÃ‡8°âÀKt H.T_sÖËIugÕ¥'÷ŸPß}5‹�ËPf©R+zpÛ.o»œ¶ßîè°3ÖK—.QZ?ݤuèÐ�†0fFЪLJ;´—­Ü RкÙÑ@ÿ¶¡®¹Öe0 ·:ж°UA5òà†©zvñá šñ2ÆãGB( �`€$I *ˆ<¸…ê7ÉÝ=ú€v=\¥€Žï繓WìCø>™û„é;Hõ¹�ã¡óYk³6öèR‘?~ñ ‚ÛX*@ˆ7LBX‘ôKô ô“— °¾€ Ú„æ¼j½"]%©1&d]üŸ8 €!¸D0#õÚš¹É1Ö�²& …a]ÁäÐyúx0—¾b>nàGÎ~½ã'-ÀÚ~¨+ ¸5€û\GXLá�|Ô¨CV®jŒãñõýU ‚ X’ TÉ4üÃ\‘A( á0>D§î­ê3@‡àò\ÃB ®Ë&ÂT¡òRp ¨-´^4a.BxÍXĵ�sÐ÷#…qdÛ¯�.l†ëªäÁíðj÷Ì °lÁ¯:„5V— JŠ\X�àíæ 4UAˆE€ÌŠ`ekP‰÷Eü qä¾… ‚’Ô ˆ�£ºEƒ�–IR@iæÆF¶ãÏ?´„áúÀ*æÇ{|_X�ô™õ\éßÖ%}!ÒqŸ\baÙŽõâÞÃ3 ÷«1F’ÞŠØ؉hâ`± ÏÑð$UÜ DTû–V4¸ïð½!A<ó å A!1[蘞9Ò: @ˆ*ø5+o'íñ�Ç4$ýÍb.-›®oJ1âÇК‚BÄøãéÑm¾@LV@Gû³í)Q@"Í*dÇHž„L­�´¦äÙ“kn©6÷ßLi‹¤¥ÛZhyêî-§±î캚ë+5߸K‘E-X¢ÌÔtCSÊP:ƒ[¸ð\ßs½¶Öm{ª-%ÎÈÝ`R�Žb‹ÑûƒùF ¦�£wÒÒ/—jGÕFW£‚Ÿ”Yt’_LÓªLÓŽ ´,@UGVÕ@$ÀJvný¹txÎaŠ#*µ>Üš`aû»B7nœ« _v ì‘€ãÑÉŸy@º(¿—vãýŒyªÖˆO«̧E‡t J¬$˜�÷4„õ¥«èµå{÷çî{z:ö쮃ÔV¬C !°¢ð‡ÔwêÈ mFêsë ÷'òÀ€¤;HqÄàf=¡(€ãR•ð.•>T…X—ÁÊLRdðÇNŸê98.×p8—ßV°��Ÿ_|â÷”AÖ_–gÉk›VbÝ€u7æ€2IpaõqqdTj‘eðogØYËó²³6Uç›Ý5 ÎÕŸw ʃT«G3 N” ¹�¨õ°ìÙÎ5‘uñïÏsïàÕ«4�•F§‡}O4¦�»¥†ÓïkÍñœÛ—ï5¾íUå ̽&eȆ˜CXÓIZ,hbFCü�vÖÃvצsX¬IÐŽ¯ï”•¤Z:cÍe¥Ü!ËËÿˆX˾ðo皨õíì?å…ö²“'5Ðcé‰×à’RÆ�KMø;¿[ydfÙ€]ÀÂn=9çßá€Ã‡øÂ�—è8Æ CvT*Èq2`¹Q?wnJlbª®–5îÛ:ÐÀ€p§4½m[Í2 è@y€°zXÏgX[ÂHp 5œÁˆ81b³\ÇþÛyqò ‚¢ &èÎÇT“Ä.�5É�F�´t3 �Å›�­:ˆñѹF K C�EòÝP…¡”@]#¶®Á g êe5ຕ–:â,œåT_íBã¾¾a!пÚðùm$¸2º~EÄ@�ªí>q½njÊFuý…dh«Ã=T�FìGº®÷c’´éÜ9jÿ矴÷ožØÁtŽÝ`OøE, CrÅùw8àpÀá€Ã�‰/Ðñk4âÛ+ج$eá@ß�Ù�T#þ¥5ñË+Ëÿíh°œ€Ë)Ä»hÁÀÇ�;w´.Vwï® ÆþŒÇ›DøžÁPªÄ‰iƒ Vä+Ю è8PjnñD$]ú—ÕV‚ ±7ƒÃ è8ʱ¾øM|×)ZT‹Gbtle³Ö®Ó§k­zldßò?¢�Ž«¯Òè<£µîáºÐ—…äP\ÿ4a�Ť}Ö@Çç@œЈll½qüª>¦:Áç4hLþ1teï•PvÇ ðìÌþ õƒ’°ùqbž+¡¡fåØí ´‚6_wwE RÍ·ø°“±e�K�â#ÇДn$¤+¤ïa�ÀLÓ»[ÜL‰µQÒ�Þã�hXC]Ù¸—Ò�¤6R f´Œ€–št­ä-Юު°¸€å(cvÖ¶="öÕ-â ^� H-\@<¸'„覛—3FÁÕ |‹«�5\@Áe’É�}O�Ie]©Éá‡É<³ÿ?XÂcé“þº¸©f‰‹¸á¨ò [¼ 1;Ì„Ÿ¢”[X}Ä�üÃj¥í�¢´òù÷ìÚì÷öº5æ95Y¸I“ü-<¾Q½…5’´òùc¢.°�• e2@é�¿ ¿åh¹ÓÇì¶…ç&‚ÖC³T!@ÃTMO-ÃæFuíàO�nµ;UsÓ(¤SËa_ØÀr–vHuÓT£¡°x±jgÝ"Ö`–»ªÏ «ò2*°TÁå@(Ij�r+7"²¬¿ÿÒÒ ÂR³g“U{TÆ«}Û-a¸—„ë—wù¹àT½ŸÜK‰#Õ—|_~NÂÚ+¼I€õ¬à9*]îY¿ˆÅ‚˜,;ár BÖÈ¢YÎ"�›œ-3®u1Œ[�¬dñ–™›1:@‡f²õÇ«ˆŸ*>}}ùk-íø¢ã4£æŒ0:ÐðèwFÓÕW)C)66Õ⌠|s fyQ¸uaª2¢ŠÖ¿º‘@Gá¯8xÈüMý6Ñšnk´*/v¤i� ôd©–E ˜®¶iÜO�6�¨üÆ�tëOr ëÝŒl±Z’®�ð^\sÞ÷Ö𮘠«U)C¶p›× ˜ÿ 5þEhÖA¢5±U•?0nOïuµž¿ûªûIo`ª±mXþB›Ï/(+ï[¸;ÄZÀ/`PdðÇnŸ*p>s;QîÂÂVÉ é ë6Äh³N*ͨ–­°�<¬Cz� YÂî<ðw=,{¶³6 ‹5‰ìß—wŠ,‹(˜bÞã)­mÕ|Oû±Vû·{MÔ6ìîò³wòþý4‰gnòÂ"˜à¼j–,4…ÝwÿÜ¿¿–ê’;οǼP`áèKCçnÝ ê¾n]PÚ!C‚¨gO×/J¯^Aå'Ošzà@нÇ�½žÏÿfÎ *Ó£‡ö»þߦåËq›(S¹o_·üçιêþºreЃ¹Ž9F†[Y«k‚”Ðê•åóxòô©UÑ ^sæ¸Ú¿ró¦e¹c—.¹ÊÉs³úG› )7ºêÌ޲ŭí“&iyïÿø£[¹ßV¯v•;ý÷ß®ú Œ¸Ò}ÙY²{·«.y÷¥J¨Ê<ø÷APê¡ý6öÝhÚÖÔ*SµüaY†¹åÍ4TKß;Q'[thi»Æìr•e‹-mëÏ[]if;ìƒ[+‡vÍÈîX/^¼¼Ë¯#7‚_i Jå`%ü>ð½ê‰ƒz½é#ÌëÍ¥—Ùû—^¦Ý‡"½D2=MÝ{ú$(èÝ4¢L‹ jŽØ¿qMo}øBß5u Æ3/½ùO½Íe3ÍËX¥VÏ!êZ�Ïðî"?oÌ  'üˆû¾™8Î+(èR U«îégŽ�èT*¥>Îaÿs/£ݺ¡—³º>jùÒoŠòƒ:«©Þ÷ëõ†~§—ý´¸Hü�žÖ¼¼Hûñ+=-4{˜«²oÌÝY¿ŠÖêý€O�¹÷P+·Èûª¦{ºñ¨OQ®p  çüÀ_5O£Ÿ£úcÄX-èæ?z¹ICBdÛJØIoóä![Mm\¦·ám.Ü¡—ÝÛ^¨õ×J½o¼À¼–Ï Cú#Ùkç£ÐëíÙ²x³r"¿hâ�s!dißR0§Þ‰!Úý¢šoud©Êo‹z•2Ë”�ÿï¥e0�=î7É3<‹Ã›ðœ’ýý1Ѻ·Ëçôr™—«_T”©šÍkH·L>XÙe¥–ß3jÏ gOÄz˜c‚õ|£§–¾²3ßÔ>R‹-üZË`íÃÁÈ}lݼØÃûAA¹£Š¹åíoláü)}Þ.�nÌ Ú²JÏß»EÏÍ:Ho%(¨o[ѾÕB-šýŸ»êçáé]fÖÇ7 DÝ*YÌrƒ‚>-!ò[TÔó#ƒ?vûܰTŒ?w4}-,ßc¹¢=¸'Î ïù,Ä;„õ‡L“åDŽ[;óÀÎzXŽÊÎÚ4,Ö$èß×wŠ+þ�ï×ù¼j¾šãy?¢ÖÃr¡¹&² ÿï¶4Y`:F hD6Ðaw¬‘ttm¤8ø#HݵQ¯g6ÔÈ)ÊàcIMßéF›ÑŸ³õ¶—Ï YB%öo ™o–À¢Å“šå}ý‘ÞçÙãæe¬RK¦u­„“kêm/˜„�fŒeØ÷V-Z§ãƒ­H"Qÿ£ÂÖå¶­ÑûTA&«…ˆòþ¤Öà\€€ˆ+ÒÔk¾£ÜüßE¹Ðn;"ÚC›?´Ö[CûHÃoÉ4=ÀHÕKO7Û“›&eE®*CÀ  ÊŠTaØŽõV¥üK—Âúüq˜·Oý«+Kÿú£ÎUH'óÕÿÙcô²ë«9þí�믷ã�­kˆ²y¢=zè{?mk‹z¸Ÿîß YoÞx} xf„Ù£·é h4öu‡e¸9Ùó¯c=c®8VA‚î-ÌËÈÔV•E[ùbá> oZͯ]y_×åý!ºÅ³F–›6%p…Iã~çT-»L ¿qžåÒëióåÜÃÍ.Ù™vÖÃr|vÖ¦a±&Aÿ¾¾SäXñ¿hŠÎg_•„P/"ÖÃèGRh®‰lÃ×ÿí¬$Ç^3‚â²Lrù‹Îò•:³g­8u*è™úܰ]ÀÂn=_ÏÇ)çpÀá€Ã‡Àþl†ÁõËK—ÙmÔ„}ûhüž=tV1sG òßkû²0œ^h\W¡©§NQ—©S ­²/ò`×U§9hסóç© óŽ.Ø*¥¯Ý¾MM9æÈ½G�(}²d4ù+Å_†R»¾º®jþë¯Ä…ÍJƒ#¾I€öþüA2¯@H~„]T�[#Ü ´~ÿ}ª[¬˜–'7_ŒGG/²_…ÔHVãtΜ™~üøcÍ­—R…=y¢ÅA tIíº ýN|w"®¤˜ bj8£ÅŽ&‡C¶\ ñ%ÆkÇVÁÈkE�ë*»cÅ­|�ã°øsKÃmU?ܾ¹¦ìŒíKWR ú­…[q¤o ñò9áÃY¦ª~õË׿6æËñ¯ì5ºVQ}Ü/ØÏ/óèu¸>xÏAlÔÑÏa[\ÿÜUø—öäX¶¬úî^t˜(S™#‚ãÂW0bŠÄ�/Ü©H×kþà8ì.�ÌH�ûWIp™d$•W2nopnÆØ#2ßêî*g&‚�~On»æŒn¥ÐŽê/ÛªÝz…ˆï"B¬ƒùü˜±Šy×2Oõ'½’Ç“&@U†ÿj� DŒx ðs BÛYßûv·òú£>ℌýS¿>ÈZ–y 7@jŒÕµÄHv•T–݉™ø+ƒ7f7]s £ª"@)Î#h¼Á5\ta&²ªç)½Xq.ˆ?1}«§’ÖyÒ75î#¸ñ4çd°T´¶Ž]Ã¥HmÝ®§77M|-+ÊŸ÷æ懯$]Q¼•�h ?/Œ„ åð¹ŽU’Œ­b,ãï1bsàù‚[/50ºH5ߪ¸;òó îþT‚»•Ö<'·®©ª‹4µœÜ—¾äá^nV›†wg×tü|Cœ §÷~x�J_Ú­OóΧSbq<{ôL[;X¹öD;Òuö¿<ø%¥È•»=¼ù�¦¨µ“µFVª¿°¾Ì"ÙÏQÞÐê%ϑܕ§îà¢D㇠ÜV±…†šíq®«Ò§Oﱌ·Ì™£9¶Í—¢Ô¨Å"Ö„·:2®ÔàR î˜àN͸æ�Á§±nÀúA’ún÷w$ÛÀ¿Œ•à͵ ZGîK÷?òxû-ëçm©”Dÿ^c7š8¾¿ï}%¸ ‚»¦g|=@¸÷RëªqpÏãÞEìö)ß“êº î)_¬Ú§ì¶kª8§ï›‰8dªkGÕ�â ™"Ɖ(í¾Å»?ãü’¥ì̹Â窯ëaÙŸÊ+™æmmkôåë;EŽ ÿò\±¿ì„ˆ)ƒ}oëau rœv®‰ÚŽ/ûuçÌ¡¹GޏоÍ.�[°ü¢ ËQRÄ�ëJ7îØ *n·ž±çØá€Ã‡xâÀKtÈ“ãu­æøcw礪ǎQƒ¥ýÔ‹­/èû}P¤µ­\Ù­õÀ ã*~,'jÙ¼¹Ú„kÝ¡CÔkî\íý&‰Ï#Ðñ×ñãôÝŒ®úØ1l�BsßÿÞ½«•{'Cª_²$eM�šnsl>“7n¤äÌ u\*ÐQ�¯UÞ€­¾Ùæ-æ]›�çÕöN,=AÓ«M×’²ÕÊFu¦×!€7ÏÞ$#þ=õ¯–÷"vǪžoDíÿ}�?ⲋxX”Ù“¨q! … pË*!à*ÍÂÞo†è£ÂÇZé7ÅG3„ý&óÇz5 uŸ6⃂óy{Ýcˆ;ñãW¢-ø*nÇ`KÚ·H‹CÑ帳0ÂâÓˆªèòWçë­˜#„òt%{Ü‘(T« „�‰Y^³k÷ÿ¡&#O ´{—…ÂE±ŸÇ£PYŽŸ“A|¤">ÈÔMçs”œª‚ãߌJ±Léßëzާx “˜Ï›–3àÓNøê°<€øÉF0_�*P)úVý°CÌ‘�¾@„^Â}ï'¾æm@¶@À/…Ó¶­˜ò>€�ô'��…ñ[nˆ´¥|‹va¡â@Ø�ë°Aºû�å­„¤¢ÏÛõ‹9&F-Á�ôü¸Ÿµ#d¼•_�‡ Ì= Wùá øQ6l@Àá«ðA Ã0.€<¡¥K�zŒ‚tŸæo^ÌOIÌ@ �ë!Œ¤,¹‰’ñ=¬ÒG…9ÖÀNódôR5'ä~Þb!ý´ËRˆAsþ”GçÄŠ tƒð `êËžÚ®é&)ßC$S}æWågžf$ãiàù²âŒY ÿÒ~hÍÀÂ(QñDð<°"•?S†õo/J¶ëÈ—Ÿ¡ÿð3sÀ0žÅ â9fßÿª0lߢû÷Dþý;â™…£ÂeÙWy7‘Ž-€?µžžº=éËݰ‚ga‘Dâ}‚8Hƒy¾«@t“Ÿ}&Ë îÍïüL‘±mB7ºÐÕ[h,]Þu™¢Ç�Nõÿ¨OËg¤ çA´¹ÿfbk Wãát ñaoÓÖ/ˆí�>ÒNCÑãDwõkµ£‚4(À£Ó•NZ0r³:*Ð�£áІ?u|b÷T4ëƒY.@ÁÄT\Òí ·µ¸fOî?¡ÄSõ±Õ)c¹Œ2[[ƒ!úžßöPãµ�É qU§�ŸÍ'÷¤mY‰è¯ü *A4usÈVÍ*Ö'ªÀ¥B³R{‘ï<� fÍC„XÞèò9J–Cܬúç’LÖþñN@ÜPæU¯±bß—íþm óó4nßÓåžܪq¤‚ò"ƒ?vû”ÀyW~V#¾¨J¢sü.ÇzŠ x=q|¿ˆ&[«"ók%\C¬ð,–x1§amŒµ2Ö™fdgØY«}û³6½hoM¢ö'÷}}§ÈòøW Êð÷®“TZšŠJf¤®ÿÂk=¬öÚk¢¶åm@ÇbþÞÿ0GúŒŽ2ÄËn¯d°°[Ï뀜8p8àp@áÀ+t(çD×îÝ#0Ï‘œ¥�LkYÀÀÀåb�`D0Hà èØÀÚ=fÏvkÒt¸eš¤å`êã>ÿœbE·þ õè˜ÏÀͰå,Õ`jR¶¬ö3éŽî<|H5úI èþf¢DT­@�@ËP¨[ž°K*WsF �¾Ÿ5‹.+Ï]‚wŒŒ tË�«äËG],¬sŒe=ó M®0™Î¬Òª¨1£jÁ2o�½¥i2B#Öa tŒ)0F \.ÇöôÁSM‚cFTj}¸5%ÊÀR›cUÛŠÈý ƒXÚYïÂi¹ïÜÒÓŒVÈQ?p Á>ô � ‚P ª%Çrûø �³ᣠ„þ’¦d¡,‚¸ Pc­&Úaˆ�¢"/Æå ÁRäýL"Ø(ÊG�!ÀhþCÃ&Aj Ý�pOjÉ® 4šQ ˆ$�!˜ÄùZQ«ÊìýO‘‹r3¶‰ó6+ €}¥ãqt‚pW’7Á7,bj¿#€'YGþ›êƵà%¯@‰4ô‘¯'°€Tþ@p .>èǯùYC{"  •áÿõ"Mjîå*$€ ‘êÿöä!¢O‹ÝcA/æçLæ!´ù�;s�,Ðù�Ÿ³ë÷@©Æz8V6,�9 íyÐ÷#ÙêéK±o¶•°JõXÀ;ˬ„ijÀiÜ |!X'˜òF¿ðkµÂ‡z)© ± @Þ¿zŽùø“‘猑Ð�}ÁÿŠuØújޱ„~ á"„Œ¾På�t fûZ~¿ñ¼uæçW“¯Å¾q+5µ‘n´ä2–õåÂ>ý|!X™ÈùÙ­1ƒ“½×*ñ¾’%N¦—U­ŒôÔ�{5�ÞX!óüIÁ}V¿¨{ <×1�j”1[HÍðáÿãçþ�¢,¶NŒàôò"s¶òó ÷WdÓ™ÕghZµiš5Æ‚ Ü�î>¢G·iàÁÓ‡|c0…б{ìnZÜj±Ö‡qÓ|KsJW,�1ÙuÌñÆèÆ ~¹1åú(Õ™É7œ©@ŠÀB#S�ñü‰¸¸Ùjf£�ÿø8D {Æí¡%_.q•ƒemÂt µº�þ{ä*�5Pdu Ù#Öÿv ɧ)ìý´ Q·aîUîßÖ ˜¿ªÀ[–²»’õñÿM¶J›¦¦ˆ}€–{øÞÃ:ÀŒ¤�ÌÃóÏu3‚’@ë"§ûhV~øÜ¬”yšj¡ ¥¬yTÜ…�Ë�î 2?2øãoŸXÂR4eQþ’b�E\÷‰ë„¢ Ö®xGÂúŠ¥«ˆ:تÊ48ÆšÏq€Q˜C’<=÷ìÌ;ëa9üû³6µ»& í;EŽ÷Êyþ.Èí¾þ–yfëZ™ëaÙþC{MÔ¶¼íäoø4¬Œ˜$vloEÝò�€…ñX6¦�e9çßá€Ã‡„%^I ÃÈ � Jt7€Æ28†UÁ/MšhY•úô¡‡ìr Ö »ð Ü@ˆ79’.üÃ_ßLQùkbå÷ßkÿWÙ‚dÞ¶m´‰-K8€¸¡&k%G‹F5 ¢OÙò!‘³PTì»`­Ü¿_kcnÇŽš•ˆ±A.^@£Z´ðhýÐzüxÍ�Ê6(]𦲵¨]•*T»pam_ݬfë”Ù:E’�eÈ’%´óÔ)ºËû*¥b÷HõK”  º’Wð9õãsó…P¯cµj¾õZæÙãg´äó%´oò>‚ËP”èQ¨H›"„¼#vP²lÉè«£_¹Úž…'oPíɵé�†ïhé#sŒ¤ëG¯S�ßjPþùµ´±Y«s÷eª<´2i[ÄUDöôÏ11O\‰;íδ£Äo É��±Z4!Ék²•EkwMpt k ¸dèøSHk¾¦ü"\_©ÂQX5@`÷Ýpk�ïÀ,8nJ´w‹~zÑ7Êž�?¼¾#z7øƒ\Ï{è§@ññù-÷ Á»¯àâTmwhßCƒî‰@* ƒ�*íWÎ%ºvYä«[Û¡Q÷+Ð&óDp©×u¦ñ9Ñ�î-4×п‘ 8ý²;Q¥�¼knXmp€RÐhåZáÂiÖ:ï@�ˆ‘ðÁŽk­ÆÌ9En‹ ÂÕN³ÎÂ�RåGs#nGZI—õZõøÕزoÇO š‘ÂF-!*Yɺ®ÔÐ…V, ën`@[þ·Öõ†}Ï U!Ì…›§�ëu�:®´ôÍÌKÜf®‰ÌêxKƒ« €D ¹{Ľ!Ž­¯°eǶ‰#¥H˜�`¹ÂkôŠžÜ{B—vñÇ6ƒi‹¦õÉÍCd�ÀË4V àâ®o ±–*½ð�3¶gîA[ SàZ‚;_ý]>'êâÃ2 ½õåK»žÊ@ }ê°°R¨‚sôFø€Å8Á¸`�p."ðï ᣷zvññ[½ƒ S|©%âpì¸ÅõÕ>ñÑžë¸k€À%aR"øl†`RÆæϾ�¶8x58@ùäA!4„5ÀŽ�àóÚákZü ï_tB|¸°J˜>!µ?Û^³Ò°³:J~S’Ê÷/¯¹¬º¸í"Á:6u�Ô>¯£°¦�¢Èíó·)nЏ”0CBͺêß×%Ýî:ÈáOøq 2® ÖΈ¡ËÒ ^;¦àõÖÄ/‚õš‘ÓvצÆv^åãWu=l°°[ïUž#ι9p8àpÀá@ØsÀ:ž§N‹83Ìù²šf -o pðº“/Zñf<ŠÅ [hb|˜µži¯Ëy†'úí×åš¼.çÖóãei¨°D•íQ–Êö,«í[mŒ@‡U9'Ýá€Ã�WŸÎÚôÕ¿ÆžÎÐ.`a·ž§±8y8p8àpÀÈè0rÄ9v8àpÀá@$sn–àó–1pÓ"ãm|ó³g·‘<ìëî§/Å!�sËnvjF|�×å<#ž³ö{|]®ÉëržögÂËY1ÂÜz@�ëiCï Zü0Xdtì@ñÞd³Hä˜ãd9x 8à¬M_ƒ‹ìã)Ú,ìÖóqXN1‡8p8 qÀ:œ‰àpÀá€Ã�Œ:Ü­±û 8ýÇ æ1 ÜK¾úGˆR)³½óôäƒÜ^‹áWëu9Ïðã`Ø·üº\“×å<Ã~†¼Ø-"âr¨TyÇã8eÞÈ:¼qÈÉw8ðjsÀY›¾Ú×ן³³ XØ­çÏØœ²8p8àpÀ:œ9àpÀá€Ã�Œ¿°ÅÁøŸD¼‘œˆ*|(‚–¿`ÃŒ´áÀ‡õ®m‡ Õר(vÚË:¯Ëy†%Ï»­×åš¼.çÞóåEksÿÍ´æ»55FTJS8 åmœ—ò5ã`S>Ðà4ƒéîßw©ä·%©\Ÿr>ÔpŠ8p8ð*qÀY›¾JW3tç" »­ôèÑÃnU§žÃ‡8ðÊèðÊ"§€Ã‡8p8àpÀá€Ã‡8p8àpàõæ€t¼Þ×ß9{‡¼èp€Žý 9ãs8àpÀá€Ã‡8p8àpÀá€Ã‡D2 #’/€Ó½Ã‡xä€txd�“épÀá€Ã‡8p8àpÀá€Ã‡8p8àÎp8àpÀá€Ã�™Ðñ"_gl8p8àpÀá€Ã‡8p8àpÀá€Ã�€èð7Ö†Ýz/À);Cp8àpÀá€Ã�—ˆÐAëŸÿþ£ïÝ£DqâPÒøñ)j”(ÔsÄwóäÙ3:ý:ÅŽƒ’'LHÑ£F�øAØèñ䲓ta늛".iSÄF ¾U \H—w]¦ØIcS¾¦¾5¶cÓ‡èÞDÑ¢µýÑ8ÿŽÿ»I/!Ñ+<íݲ|Ñ©CD©ÒÕùÌ-+ÄÁÝÛD1bñ/fˆ,'Áá€Ã‡áÊ�Èxþ¬œKt|?QÊ´DõZÙ?½¯M&ê×lL”>³{[¶­ž/ÒJU!*TÆ=?"Žž>xJ›úm¢   Êõq.J‘3EDtëô¡p ¢çÁŸ³‰N$z3QÝ–Ê@œ]�7ÿ!š:T0£F#¢ o;Œq8:øòN9ŠhdÏ�ýÄŽKÔsLÈô—=%¼Ÿ{v »õ^öëáŒßá€Ã‡"–¯бýäI¸h‘WÎæL—ŽzÕ«§•k5v,=|òDÛ3Q"úéÓOMë=y2ýsçEc îoŸNQÞxÃUîêíÛ4fÕ*Úrü¸«-däÈ•>=Ï’…ê+Fop�k\öËñ㉿†]õ}Ù©œ/5ï½E'oØ@‹víÒÒcD�N“Z·8ü¹oÍøë/WÝÏ+T b<&#m>vŒ~[³FK®]¸0Õ*TÈX„ž>N“Ö¯§mÌë³W¯jÇ(„sË@uŠ¡Ù²¹êm8r„†/_î:ö´Ó¦re*“#‡§"a’·´õRÚ9j'%Í’”Úo&mš5²¼írÚ>|;%É”„ÚžjkVÄkZDŒµdr"|�F�Ft@Ü ^Ç% \¿B´`ÑÁâ‡ãè1ˆÞÊJT­ü³ð?AbYúÕûÿ ¯äUø€è—yîçwÿ.Ñ„AD­ Ñ�[|MŸ0�h#—]Ñ3¾õ�ÂµÕ ˆ~ø’[Ÿ#„š»ï KëR›S* ¬ùqÒ°Ñ·¿DlßáÙÛÜqD=‚y?Me΀g?FôyUJaòz~É�\Š%-fáqÆìòH\ûš¹ˆÎ×Ó6±ÀÿÊyÖ`/¨§A=˜…Î*-æq|ÛPOù˜çËÿX`ZšÃ@KO�Ž)›è†>kä$‚pÜMû‹ÅõR°â*–D×àóé7YϳÚëÖ„há$«\ëô­ B¹dƒB ¬Ë©9(¨R_¤y®–“ûnNfP" ß aE•ßàŒ·ö²ð;S™K-+ésÒª.�¸Žk$m[CÔ¼¼<2ÿ‡Ðq:ƒ1Y`„ç"ž�xN~Ùƒž=í÷2ü Pþ(ƺóŽåÕÖÂ[УöeµÞ@Ç�+whpêÁZ÷ug×¥œuù†uÈ�væAyÖãyí‰>mÃé0÷O‹ù�ÌmÌñˆ$õ\·ñ38~¢ðéŠ,ß7óÜ6”7&®s7¢Æ¨^B³Ê/»îFìZ'¢øã™3áŸû2œ§Ý5‰‘{¾¾S KBI�?!Â} «Â¿ÊTïÿ/ËzX�ríêýì|/a°°[Ï÷‘9%8p8àpÀá+û°9}Ы΀;$­Ü¿Ÿ.ýË’¦:E‹RüرµýÔ‰S…x�.üó�–kŠDq©§æH›– eʤV¡‹|¾  I�‚©cµjnåŒ@25lH íy:0}šŽE�Á JúdÉãÌ’*Ýyð€œ?Oó·o§Lo¾i t@ÊÎ ‹•Ξ�ÞJ†Ò%‹Ž" è8¾ø8�ßtžâ$�C%:—°�ç䈫‹Ž…,ÌìÙRhÿã j²†0\†À¥È©ÃÂÍÈáÝ,¤ã)�(©çs|Ys¡© í2Ðè¥D¥ùüAûXxØô]Á›x ˆ´#*úó!™vîf¡ä,þØ‚‡ùûD�aû÷¶2amo4çk7û¯ÂZ�eùÑk hçNÛâ~V?u`áö/" BqÇAïrȱ�Ójˆ÷Œ|õvl°°[ÏÛxœ|‡8p8 ràµ:ÔÆ~÷Y³hãÑ£Zòܯ¿¦d3ÃHF ùC›4¡wÜŠš[Oœ ®ÓYbÃT“Ýà¾n @˜§Ý[ˆ}R'oófšAë ë<ˆ¨ ÙApMV)³H‡[+Ìyé¢Ö<3G‹x5î °aG°@uáÒl èc2��w�:&‘bo+];$fÞæëöÚÜE©Q{ ¿Baå`Eò\�?iQÁÒV%=§ýŽhl_QfÁ~Œç±. qÇzÁ_h3ƒÿ¾�¬+h«.Ÿ ب ?×Ì,|éÃXf'ó¤IY‘ú ƒ3�:K˜_½Ä.qÒŠ<÷Ôóôeß.`a·ž/crÊ8p8àpÀá€ÃÉ�Wè8DZ.Ƴ[¤$l¥Ñž­5ÌÈ_ #f´hš *XN d‹•>d×U78Fh5»®B¬Ž)7Òøµkµ´Q-ZhVÚ��� £Ý„ ´ŸÝH¥à@à°Xµb…Öó˜–-)+ƒ’T ±4¤q\LÁÕ”¤Åìºjp°ëª¥JQ‹rå´,˜5ck޳×XòÇ4šÝ^y²ÌÐ o"耫‡c ŽÑÅíÙW~e(•�²ÕÊFë{­7�Ñqxöazpó¥+žŽN.=I—v\¢TùSQ�VèÙ£g´û·ÝtõÀUzó�7©x§â#^ õTµý#óŽÐÓ‡¬r«P¬„±(Kµ,JJÈ]Dzû)þæB�/]õ ŽâLøCHÀs×F!ì‡Æ/©ð�ÍeO„8{6 Íä‹gY¸À‚ÀÜ……´'a'4™á–ÜþAh½c´Ñ:dàËS¯¥ðÓoìý vÁv.�Ø…YÈZ¾¶Ðä‡K$h‹¯¿,jÁdnj@Šã2ˆó-'àï;ü8ƒ¶]a�ŠÔz‡û £¯z¸‚[ÄAY¸ÇÂøÐ&´Ôaa" ¦üpK! ±Dàr ôÝpw)Ú°eßc‚Fþ…ÓâægáHå�C  /ŸcáûŸ" ûÛ¹ˆþ˜$®® xŠ�ÒõK„8â»x+ <΀\vÑ6¬U`µ‚y?à´ßgíÔµÿÁ¸Á­ÔL¾žªëƒ‘=…kGÏ¡i/]ô@� �2É8gX/H0 s ¬'àÿuáÚ‚uü‡†T×p×qv<�û#ËÐ ¶ƒÁ-bnàþÛvË}ŽYÕ1Kÿ¼Š˜G1b 1ƒÌÏ‹¢,tC̉ÂeEܳrÆ4Ôƒ‹-Xõà™1“ç«‘ ô„ð´î’°‚Gö·“&ú©£¨?q½ï�²UM¯±¬=þ™ûp>ã‰y„Ø"è|¥âIEÌ Ä…™Áó4¬ žï*%I®kÊ«éÆ}¸¸Úû—Фǽš‡ŸYˆc„9(’5 úÞ‚ãXOýyŠÎm*^\;Ç'Ïžin¶úqLIV@Çyv©Õh©0°k©‰_¯âeEÿ‘tà#{F�t÷ï»n£K’9 ¥Ì�’Ž.8"ù°ÌÃèßÓÿÒQ zÆR¤`JW,=ºóÈ%p@2€‹O뼓eû'îOo±ÄF!oÁÈíŒUi>Ô»þnÛ)ø£Zj¯û3wÛ×Ñ…õj]|ðÂ.Ü`™>’;ÔÕ5àÕ2p;� Óñª©ú¾`æ+Á‚í.[äC!˜ÖKË‹U�j !¥šA9´)�íc¡* ¼—ˆÜ?gøÎ„P@IDAT},4øe.kˆs?¾’ô® Ó�u¥+ Yè�U/k|ÔÝ»£§©{*à~C\‹©q$dºÙ¿•Ö(Žï˜ж6¡á ܯ ÆË ´ê!ÜA�Ž€ÝjÜý7þ¶AÑ¥}OeáB«JBP�¹‡89 ˆñ`û[?0ßMŒm<Ë›¾'@® k8°7WÒüÅ|(ÄÂ!ÌuÌ5¸?AÀrií Ý'Á2àxhæöC´îß‚°ÚyD¸­êØß¿ú²´„㾟<À£³Ç„Ûºå'=•ôœ'µö!4šÍÂ!+ºx†ÁÊL"Ö°’ð…ÔzV÷bìÓ,>X¸ç àñ¥O”AÐt¸‹Ò€ ›î÷ƒ§6¤{”™½Ë}n"  ¢œƒf(cFð]þA^‘cųzÞÒ¬âf$£€Ø˜�c€ÍMÊêº,ƒç9ܫṼÀü0’¯‚c=�Ÿ?}N˾ZF»Æð1ÜSþ5PÜ,j0òSÐü†óµÒ ¤"ÄQÞ |MóÑžñ{\-E‰…šmlFi‹¦ÕÒ·\¬)X¸ xØi¶¹¥/‘^+pdTîQÚþ{?¼G¥¿/mZsbÙ‰¸!P`:œë ­}Pp`Ê�tïÚ=Êõq.º¸õ"Ý:wË­~¢ ‰è“¥ŸPŠœ)ÜÒq¥�•]VÒŽá;\J5j¡¢í‹RÅ çÖäï<ÀZkÜ›Ûo‡DÄÇúPúç9bÛOùÙ÷MxÏ¥çç‘öËhk¸m3’�u�1^”±MõØ“E¦úŽ@ÄêAy3ÂsÏwîÃNžº•€ÒTpXµ8ƒµÌØ>º«=Yï[­FP;2øc§OçP.1Rþ’bM¤ºg4ã,a~lM„ØQFŠ�ÝÃ2°kT$ ‹yàïz84kSu¾ù»& Í;EòSƹÂÚêf™ò?2ÖÃê(ü½&j]_Ÿ{uçÌ¡¹GŽPT~8UáXžŸqìOüãØÙ,ìÖó4'Ïá€Ã‡9ðR§8ÎÆ87&îÛGW9 ¶Jß–,Iý‚-Ôtìû tL`þ§C‡jˆÑû£`‰%·et,Û»—,dÉSÚ¤I©WݺZŒ -ÁÏ�¿@Ç Ž?ÒoÁ­—ÞõêQé9¨î�!šûªL)SÒø/¾p�@:Z¿ÿ>�çØ‹9våPdtì4&oŸ»M—w_&)º\ïB±“Ävåcge§•š&$ö5�Ï£×ÉÐag¬·Ùš©U«VèÂgªÎ�ì?å@õf$îAx¾ÿ±Y =­qa‰�²…¥€¯„Â/« 7¨7Ðx„°Úp |Ü!¯QZïÝšp®ޭΠ–“¬š'4“QדÐS‚9ð�ù·óŒµº  1vm‹1ËÑ’ U(Ÿ&@Ä �;£5¸ƒ$Ÿ³®MoQÖ ­*‹}h‡"v‡•Ÿ(¥oÛÖm[ zw®ga໢¼ñ\—Íd·JõEø#y ­wðW Nü�»à±T ©'IÆ<@ÿF÷CÐæ„_%øíîÛVXHÀâCÆXÎc‘q-ŒØn�̘,ZAi3²UÇD½Uô�‹p ê;‘�/®V L€\ |ÛA+4ˆÇlÔjíXOÄm@| c`E cp Ø7l‚.ËdœÄç€ð�½Ag°¥ ×Å\‚‹·¢åXp”MÄ›XqZ‘!6òCKŠpŸ€ÏbA8Ÿƒ¿„û£B€¨UŸ…0ÐÆµ"¸ï*’Phñ›\·ªgLÇ|A<,`Á`E+ç Àùý§0@ÖÀª¤{:žYAT!äW ÚÛ°VÃs ‚*_aAV�{ Öjlà3µ©Åñ^ Ë*XûÀÒEÆÚžç1¬¨ $„KcLYVý‡Ær#~.! ‚[pÂ0o¦-q?2æ À¾Ž?Y÷€ù߸¬ËðÂ=’™ï)g–*^&Í€oÈ–°®�”™ƒqΜ™òPþŒ=Æå�uðï/ÐÑcölÚÀšQxœ‹¾ù†âñG߀E‹hó 4‹ã|¤ Žóa:JdËF † Ó¬AÞË•‹º×’+ cƒ"C–,ÑÚmU¡Õ/QBÛ÷e£Þʯøî;Š�%¡¤ ?l uÝ×i­|0õСO¢E-Ñžq‚GV@GÞÆy©ÖÄZtÿŸû4 ù­jÎz9©î¬ºôäþê› ¯fñÑ`yÊ,UjEnÛåm—ÓöáÛ=vÆzéÒ%JËÁéý¡:ÐÂÌZõøp‡ö²•Ôƒ@ Z× ;èß6Ô5׺ fáVGѶ*¨ ÆA@Ü0UÏ.>üT@3^ÆÃxüö®lŠª Ÿ_R”F@J@¤•”. %•)EP éPº)énIéî.ᣥ¤DR÷?ïÜïîÜ��Ù˜¯ˆ9ϳ·çìÌ�;ç=ñPe¡ �A#©A‘·P½'yº‡BЮ‡«�ªõ áûdîS`V}î£ìày¬µY Gt)ÿøˆÁm , D‡&!¬Hú‡%zúI‚€Ö°"A›ÐœW­W¤«$5Æ„¬‹ý‰‚K3Rÿ[379Æ:@Va¡0âK@09x®>ÜKÍ™�ëyÊÀõ¯wüD¢X@Ãu`%·p¿ƒÿÖSø#u*ÀÅ�•«ãx=G¥ÓAP,IªdöpAWdj À¢py÷Vu ˆàò\ÃB þ—� „”û¾®hi) 8ÔZ¯ÐfĽá4c×þÍA‡ 7âÌþ¶w+]Ø ×UICÛ7¶ˆàÕî™,`Ù‚_uk¬.7ê¹°Á5Ú!Ü+ÐT!2+‚• ¬m@…ÊŠ`¼âÌs "%©1@;Gu‹!,“¤€ÒÌ��l'˜=´„áúÀ*î�¡ó‹YÒdÔs¤{X—Ôj*Òñœ\daÙŽuâÙÜ„çÕ#IoÅóhd7¶êê,Ò ‰뤈 UÜ DTû”V4xîûð³�ç „9Z®‚³€ŽaΑÖaBTÁ¯Yy;i�î>¢ih›piÙh]#ŠŸ'k&(DŒ/4žÞæ?ˆÉ èøúÌ×”(]"Í*dÇp¾ ™šiFI³&ÕÜRmúi¥*�Ššlk¢å©¸·ìŸ¢¿–TcV Íõ•šo<†¥È¢&,Qfj´¾¥-šÖ£\x®ë²N[ë¶<Õ’§çI7”T ãÝÖïRÙþü …ÒΑ;iéWKµ³J#+QÞ/ùÅJ'ùÅ4µO€Ly>ÏC‡WÔ@œÃJvN�9txöaŠ35;ÜŒ`aû»B7nŠLPöHÀñèŒÌ}@º ¿—vãýŒûT%¬ ŸV¸ŸÒ-(±V�`6ÞÓÖ­ ×–ï9<Ÿ»ïéé8²»R[°e(„ÀŠ"Rߨ €¶õmC4QÜr^±šð|" Hºƒg nÖŠ8/R^ïRéCU8ø¶»Æm+kE ìü'ê58.×p¸š±+XÈÎóߟù=e�u—ôë”ÊXwãþP& .¬jgF¥Y{;÷��õ°¼.;kSõ~³»&ÁµóNAy�jõhÔ‰RÞÛÈZËžíü'².öÁÌ{¯\¡ ¬4:õàAºzOŸœ K(Í2 XyTΜ™bàÆ %»€…Ýz²_gïpÀá€Ã‡áÀ3te7I°Þ˜Ä/â÷ﻯ-V´hÚË·k”áþL-QÑÐqnš†×4ÖÊ2˜Ò®Z5m f@2v± ­óæÑ-eÁ UàMBÖ]žÇÛ˜ÝHÅäø¾( n§*ÿü3Ýôˆ²sŒ�ak„ ç]Ø4Ô²|yú°€X)�Xe`Ì«Ѐ’)-ZPÊW^±´è»f MÝÈ+y¦vP¼lÅ£èœ~0A[�ø˜V ®¬¤@pAat”é[F‹Á�z}^í£ijªî¦H·ÏݦêÓ«k®ÔöÕã@€;c½ÃAßÛ¶U¾ ÕN-ŽË”)C}ô‘En`ɪ&õÇ,¸E‡@ébˆCÐ ÿÅ?÷¬y鬮Ent§"}@Càk�äi<ëB@¹`¢H[YAd)hÙA;ÁÀ|úCûÐýÈ�¬ ¨€æ½VPøÅ^×Ý0¬ ñ 8WD w,jÐʃ@?\‹‘àÞ¨iE‘j L­jÅ…ÿO'„ Áþ/r 3b$€ÌÜäˆ}«º€ZÄBUã¥Ô{Eúí† 2_|nôœÀÚó …p2o\ÁS °àz�†òpeDMpGЄ_5OÔ�åp–BȪ’*“‚éª$e:¡µ)c°ÔÌGtx—º�ùM°Žðw(ÐÎDÐhh´Âü·C{,œ@ÁZG‰ZÞÛzEtë(ï\=ÅxÏê9ÂMШ"eÎjªùêñTž`ÕB<2ì�*€‡õŒ/ßöÒ…¿~` Ôk¢^JÆA ¬�𠈘t#ào “K½'ýH ü­§šAÛ÷Hu™#R¼·àu×±žs�w)=óæ5îÍÙ|Ϫ®ïDNøl³±[@˜³P›Þ å2ˆçßL §Þ_˜/0oD퟼Ÿæ7`�É h€K+ ^˜1âÆ 3ÂÈ´cØZÖb™tzÔ‰' ¶²™°—6^H¯f~•šk®•S7Áˆ±Ñ/E?@“«!+oL} ¢QƒÓy�ÄñCÞxÿ j°–…$Ð�˜m/·¥X c¹sïlPºAtûümJ™/%}¶ã3wÞø÷ÆÓù­ç5ФùÑæ áÎäƒ?÷ýI£Þ¥%•îSšàîkêÔ©´aõ˜ßã!¬¨‹Ý͆…# ª ¸ªŠ-A[óù¬Ñâ�Š|X$ˆ”¤‚Ù2.“ÌÃ^ wlË =÷;t;ë ½!‡0﯋ÕÿÇ ‹³BÈz½ÜÔÍWã=ý\=‚»FÄ2A1²ÏüY†:K¦ >!ï6€�ªò…TÀœºø¨˜[Q ¸}µÂnÀZˆã¨à�Ý>‡t$ÝÓÓRC‚éˆ÷µæ¼XWŒéÅÏ?öªrÅȆ˜CXÓIZ,hbFC‚½쬇í®M1æðX“ �@ß)(+IµtÆšËJ¹C–—ûÈX˾°·óŸ¨õí?á…ö²“'5Ðcé‰×à’^‹—òw~¶òÈȲ»€…ÝzrÎÞá€Ã‡Â�gè8Æ CVTÊËq2`¹Q'GJlbª®–5Û:ÐÀ€p§4­eKÍ2 è@y€°zXǧY[ÂHp 5”Áˆ81c³ÜçÁÛyqò=‚¢ &èîƒT…Ä.�5É€úõµt3 �Å�©:ˆñѶreK C�EÒáétΜZ»�lT Î}¹®ÊÀÖ0a%Ýcw×´ñ��i#É�q+ £âˆŠ”¯)K/™$¨Qn`9‚oiа¬Ãèú±ëTik3~‘WK3Ûø:Â2V³þ": u¥öžòÚ'gÂÕ>”—³`Ñ(G;…øƒóª/l¸´)ÃZ ºÐ.Ú-<$Üžˆ3±ÞE�Æ4çT7 ¢„çBÆ’,Œ† nqàÇHR`t× ËÁ¢cBþÀçºø�V)[n!4H�XMÀH±ä"M ýqa,\lÀ ®0‚(ÊVZ…êÜ&¬= Í ¡ âœÛ-›oñÁŽwh§Ýäk¨�ͺ÷MÆ2°°‘×kø)‡¶|­ü¢$,!àÊç Òkäi°~€àB”ŠY<ËÛ·{®ºâ@¥y\ƒx|FR…`ãV‰ âªÛ­7xœ¸×  ð ÓgíØ�P/Öž.!„CÒ'´êâýôž,“J-IÆðµ€ßÒbÈ8–@Ïñ� 7Rp'[F÷c²heú|A<”ó ]á¶Ä€(Ç`ÜK7MàúôeY&]í|„­ÁÊAZh¡LQ.MM+‚å \¾Àõ[x‘êRîß ø4#ð§’Ö ¸„‹78h¶œåãWÿ�ùþŸuXé´®!À÷ ç‹w¢uûÛ~myþë'Üöì3‰²eUcVjªE ʨϡ*•õ#sëXA€:Üë@1âðd©Ð+ÿ )eyÂg2:¼íf “5 ´»ÅÓ¡™‡hNí9ïõxÔær-MÝ t ®Œñ�¥íŸm)f<¾Ñ˜àVsB± Ú±‡Õ«–¢ÇèÈP&Õ[Q/4Uß-þ‚c‡ŒÙMq’Ä¡ï®ë¬]¬$L�PSqa‚”z¸cÄzrÿ 娓Cã“ÌŽì½Ô´÷Õ/ædM;yÞÃ2Îæ« <§ç=+W?v×Aê’à�ƒõ ÆÕ¼«šëÿAÂa‰) By«ÍÒ²R–5Û”àš)‡ž‹õêâï7s¤ZÌ"¾™t‹ü±Û'”R¨kÄf•YáŒ�'i ŽÀ¥(îj9 Pà¾l¼P¯ë—l_¡œc$»÷Áð.Á­‡Ñ¯ºž fm^kŒ!Ðw ÊJ’ß,°(†e±Õ{H–—ûÈX˾°·óŸ¨õÃz|�½RLc � ìÍb¿"Ã`ü�ηnMãB½tîÜ9¨® #(v9…8p8àpÀ&ž  ãðµk”=4 6®³[+ôeMôwƒtÓ#ydè8yù2}6z´ÖLÕ|ù�Æ}²?쯳¶ý¾�Úxìm`×[òC¯6»{ú’Ý>YQ0@ÜHX�d³ÿ¬)ùK%”š�O‡ÏŸ§è, ]È.­â²Ö›Ð�âfÌ Í<Îèüµ6£U+ÚÊJÿżJg(Ñ$4öÉ|öé9x¯è™šòÿ�€æ�’ tüÀÖ ø‘„ ™Ð6©à„Úç¬ê³èÈÜ#–Ð|„$hhæ¡tãÄ P‰ÐL´j_öåèËXe‘¹G�mÛÉÀÊâÌÿ`ÅÅöÍ]޵à–{—‡¯çwb Í^¸1€=Hµd°ÒôF Z©�—Oä©$?>ñ1¹‘…Võ²ŽpÝJKqÎðj �v¡q_ßШh‚_møü6\]»,â ŽHÕvŸ¸N7µ e£ºþB2´Õáªr}ö#ÍNxÒÊÁ̧¸Ò�v¨òÛ˜gvMPŒ²øxOòš2޲ó'ëü7Ò¿·ä?þÇ,Ø5‚:f}’ ¥~Q! ’å!¨Z"€™†½*“|Üc2(²tW¦ ld¼)’Ö5p+�›fëÀ_XIàÿ�Â0Ä#hVR"3íø@Û—÷ ª�jU·ÚÛÂ-Zò4Äû¬U)ÿéÒM“?^\amë B‚Ì,ÃDŽ÷Ï”t÷mNA³V6 h#ÏåÿF‚ "5lÛN¬%>w¼hnÍà¾*Ï`å€DI³gî§0/€ü¹CLXr@0†çl8¿âs½+êFÔVZ|!NÜ€Y‘ d·ufAïU�\’xU´ ÑÚ7qŸfÝ Á u,jp3 ¼ÓtpúAšûñ\PãØÂc4£ê Ëöíw^¤±ùY ÍTå—*Zðs/üt!íýe/ÅN[UŒq6¤E‚¥£ž‘Ì@u|Æòfçp¥—ZQEˆ½�÷2  Äý‚àšß˜‹êñß…s#5zŸßM똌µ�‘J§±ÀŒ±—쮃ÔöÕàÎ�(n¨uƒ9¾pš×D ¸î»k0()€G°(�Û/ãúBuï ÷xp“§Ò‚‰ÂU Ò× À<(*øc·O(rP•~dÐn”•sœ´ @%-[ÅUûÞZÅ‹²{»–£“ëÕâÚßÚ4¼Ö$C ï9^ì¥5I ëtµ^d¬‡Õþìþ'ja=fL’6ž=K_ÿöíý“oìP:Ën°' ¤�9@‡äгw8àpÀá€Ã�§‰ÏÐq�µ ês€íì V ’2q ïìFª>ÿR™øå•åŒ{»@Ú�Å,'àr ñ.š0ðqãî]­‹Õ�:i@‚±?ãù&:2˜Jž81Mg0ÁŠ:À JÁí"žˆ¤‹±ÚJ(!öbpXG9ÖCÓ±â#¸zÁ‚Z<3 c+›µ¶›6MkÕ`#û–ûÈ:®¼B#sŽÔº‡è|_å“Cqï4d�Ť}Ö@Çç@œа,l½qü:}0úÍç4ÒFçM—÷^3Ðaw¬ÏNŸæ¯Ð è6?NÌ÷JX¨qIvÅí M×<]ˆTó->ì¤{"øð‡/#] ¹H‡v t#!] }ƒfšÞí @‰µPÒ“JðG4¬!Œ®l+kÛÇêq ¯@$‡€. îßó´tQëàÓåôáDpõßâ*A` Pp™dEòcßW`RYWj2Bø!D2Ïl¿€µ!<–>©á¯{”ÀM5KXäÀ @%оGÆ3Ðe%ü¥‚ÛÂ2¨OØÃj¥eÑZù²#»6ëîÙ^û|OMnÒ¤ �oD7a�$­|LÔ6°R� L(íñ‹ð[Ž–ÛÔf·-|o"h=4ûA¥Ó a˜ªé©eØÜ¨®‚ Ò­v§jn…tj9«XNÀ²À©nš*×/Víü¾ˆ5˜Cå®êc;QŽüÂVÉ é ë6ÄhÂ\'•fTËVX �G¾Ö!ÝÆy—°{»–=ÛY›†ÇšDöÈ;E–Å &ù˜÷xGJk[5ß×qd¬‡Õþíþ'jv�Cxî�¼?Mâß雼°%¸¯˜)Ma÷ÝmÐ!¹ãì8p8àpà©â GŸ:{ë–«Óï¿»R à¢.]Ü¿—ºvu•š<Ùõë�®{�ù½žgÌpëÜYû]»sÇ´|IneÊ÷êå‘àìYwÝQ+Wº>ì×Ï}Î12<ÊZ�0XãbPB«Wœ¯ãñ“'VE]]gÏv·ùæMËrÇ.^t—“×fµG› )6¸ëÌڲţío&MÒòÊöèáQnìêÕîrüù§»>#îô@–ìÞí®ËAÞ©¦2÷ÿºïêL�µß†^LÛúµÂ¯Zþ�LC<òg¬¥ï�¨�“-:´´]£w¹Ë²E‡–¶uàVwšÙûàÖÊ¡]3²;Ö .ï êÇÁÈ͆TZÝÂ.W6©ã÷à~àUOÔëMf^oú½ÌÞÍz™V‰ôB¯êiêÑ“Ç.×û)E™&¥Õq|ãªÞ.ú„:4uòÆ3/½é7½Íe3ÌËX¥~�MÔµºž¡�D~®X.×cžâ:6çïÄv¹.†Xµê™~ú¨Ë5¬³ËUä5}œC~ô,£žÝº¡—³úÔòE_åûµUSý×Ì'ê î —ýä=‘Öÿ{=íÓR"­Gs=-,G¸We߸wgŽ­ÕÈ+úŸ=ôì¡j‘×¼Šgºñ¬g Q.B—ë?žðWÍçèç¨>�«¹n^×ËMà•m+¡o½Í“‡l5áÚ°LoÃß½pp‡^vd7{ý¡Öæ•z;þx�ûZÎA‡ô)Ùoç#»ëõölò.Þ¸¤È/˜Øû^ð.X î©·cŠv›V ¬Ž,UþMQ¯\F™â½/‘Z”Á}lFxÎ$¯jp¹n\1+þi˜§d¿ &Z·é¬^nB?óru Š2³˜çGfê²–â}Þ-–ùÍ~aÇí}�õÇ�iÜCÛ?e¿–>0Ý@w[thiý’ëÎZZ¯„žkQYéÎ¥;îöÍ üß>t»»Þ�“7\r<ç¥=—dóû>Éúhuf×kH�L>YùÝJ-¿K´.®‹õ0Çquù_-}e[~¨¤&Mšµ–ÁÚ‡ƒ‘غy±ÿ¸\9¢‰{ËßoláÜ)ý¾]:͘ërmY¥çïÝ¢ç‡e¤·ârõj)Ú·ZC¨eÃr<°�~¾Þef}|_WÔ­�É,×åú¤�ÈoRFÏ� þØísýR1þÑõµ°|�eÉåºO\Þ5r.Ä;„õ‡L“åDNp[;÷��õ°•�µix¬IРï9Vì�ï×ù¼jžšãû8²ÖÃraùOdÁîï>|èb7U®â'ºþ§ÈX oI7h�«ûúõ®‹ŠÌ¤ §ã,Ù­l?Ny‡8x±9Àb—g�8X–kɉ®*Ó§»¢wëæ<ð2ŽÏÀħ ºö\¾lyaa:Ðh‹_~Ñ„ôå{öt•éÞÝ-°è@m¦LÑê½Ïc~@ÇøµkÝã`ë € ã¯jŸ>Z™Š½{»0V_@ÇîÓ§ÝíÉzNT mHÀyß—E6Ð�AõŒ×SûØžßp¾é% Õ@‡Ý±FÐÑ®¾þጠu×½žØPù-Q{Œ%5*!Ò!Œ6£ßfém/Ÿé]B%öoóÎ7K`‚Ñ÷’˜åº\ßÖÒû¢«žnv$6 ‹‹\)\†€@•©Â°ë¬J—.…õ¹ã0oŸWW–ÕCç‰*¤“ùê~Öh½ìºÅjNpÇã~ÒÛñÇ‹f•EÙœ1\®‡ï§e5QÏÓ?{×›;^æŒð #{ô6}�Æ¾î² ÷-¶ÁÅý׺¦1Wœ« A§&žepß©s5Àbv#‹VókW>WÇuy¿W÷˜kd¹©C½²]ÑóÛÔñÎ�ì”Íý6kë 7Cnzu¯t°k(wÿ¦ú`¬adP¨à¸eZÝ5Ö¸&•œ¤�ÊÍW ’@ÇÈ\#MK̨6Ckc@êùýSö×Ò§W�î‘îë$*€¬ä½çoŽ7Ž]]sœ9fÌu¹Æ÷m«o” Ë:Hí¥^Ѿ™b‡ZÎìÏ„Ïòç üü¼œèG*]˜µg•&:ÚÔö.�÷>”HÀÿ?èùQÁ»}Jà ’Æý,®©RV™âr�߸Βiô4€ùòÞÃÍ.Ù¹쬇åøì¬MÃcM‚þ}§È±b¿hŠÎç@•„P/2ÖÃèGRXþÙF ûí¬$Ç^3\qY¦9ŠüÅ`ùJõY³\+N�rý«~€…6l°°[/ÐëqÊ9p8àpÀá€Ãp€?›apýìÒ%v5aß>¿g�QÌܨü—*UL/,,®«ÐàŽS§è»_õj[º®úƒƒv:wŽ*p0ïÒ�­RúêíÛÔˆcŽÜ{ø�Ò¼ú*Mn®øËPÊá0P×UŸŽElaA/±Y)bpÄ7 ÐþÓ‚ôó „€äGØEÕ¸5ÂÍ@³²e©Æ»žº›ŽGG/°_…ÔHVãtäϘ‘zÔ®­¹õRªÐÃÇ�µø „.)²]W¡ß‰ïO¤�u!+A,-gô—£ËáÐù-çi|¡ñÚ¹U0òª‘äºÊîXñ(Ÿç8,Á<Òp[• ·on†)czÁ•¨N3á–Aœé[ø�¿tVøp–©ª_ýRÕ¸�y2GìÕ€½½&‰@Ú²„êã~þ~x™SæWðÁ{ú¨b‹ ŽÆxãØâz`;á_Ú_�cÙ²ê»{Ña¢ ÙdŽŽ _Áˆ)—‚ª�v×,à8ì.�ÌH�ûWIp™d$•W2nopmÆØ#2ßjw å3!¶/·]³Ç·RhGõ—mÕnÍ|D‡w!ÖÁ<žf¬bžÀu€ÌSýI¯äñ¤L'‚*Ã5H"F¼ø¹¡íÌo‹c»[ùÿ£>â„ ³ü�µ8ón€T7Yªk‰áì*©8»3#ðWÿnÀn:¾ëÏ1Œ*Š¥8� ñV×\pÑ·f®‰¬êùJ÷q-ˆ?1m«¯’ÖyÒ75ž#¸ñuÏÉ`©híwv —,…u»¾r<Ü4ñ�XV„øxFp_àþ”¤+Š7²-áùÂHRŸëX%ÉØ*Æ2Áž#6æ/Üz©�ÑEªùV À 7p÷§Ü­4ã{rëj‘ªºHC°rü‡2u`÷YdÑÐN욎ç7Ä Âœ+Ÿ7cÿj Ä0K/�¹.Êàr Ô¦/Q£6â8ª¶!ëChbñ‰Z÷%{–¤"í‹x eJ™)ôǪ?´´ˆp]åú×E XÐOþ£ÝKPÑŽE=ú÷u2¯Þ<:ðëB,Žþ«­¬\{¢éº Ç_üŠ’eO†C�Ü|@}“÷ÕÚÉ\93ÕYXGf‘ìç/ýO«—4[Rwžz€kx):O2Lp[Åj¶Ïc¸®J“&�Ï2þ2gŒäØ6_‰R#‹XþêÈ|¸RƒK5¸cÂû߸æ�Á§±nÀúA’únv$ÛÀ^ÆJðçZP­#�¥ûy¾ý–õ|[ä5¢¿®²Í<_‹ß÷�\Á]Ó¿ü #ÖÜ{©¤ÆmÀ3�gü±Û§|Oªë*¸§D|±JŸ°Û®_Å5ul,â�©®U7Šýfˆ'¢´çï"üŒ÷—,eç>�ë!|®º–ý©¼’iþÖ¦á±&A_�¾S丰—׊ãe'DLû£ÈX«c�ã´óŸ¨ír\cölšs䈻è›ìÒ¸ Ë/²%Yܸîtã�Ý âvëûwÎ8p8àpÀá€/<ó@‡¼8^÷ÑjŽO0f÷nZxìÕÍ™Ó tXØÉñ=$Íݾ�N3ú¼T)J'ŽvœŒ¾ùXX*Õ­±åÅá ÝËÚ±DÔ@ŸslŽ—/{¤J cÍÁƒÔ}î\z•Û«Á1.Þâ éi“%£'OžÐ~êÅÖtžýƒ>,P€Z–/ïÑŽzÐq…?k…{‹µÿôSµ ÷ñï‡Q×9s´sôûJ¼x>�ŽÍÇ�S‡éÓÝõq`:Ø…jsßýý·Vîí´i©Ná”9E ºÍ±UøLÞ°�’2/Ôq©@Giþ¯r¥K§Õ7Û¼Á¼Ëf3ð¼ÚÞ‰¥'hZ¥iZR–ªY¨ú´ê°ãæ™›aÄ_§þÒòž ÃîXÕë�¬ã?ÏóG\V/‹ò¯º5øFC!(ܲJ¸Š²°÷ûú¨ð±VôuñÑ á@ïÉü±^I€Fݳ…ø ƒà|î^OÁâNôh.Ú‚¯âV ¶À×<âP|÷1 ÜY˜ !^Ÿ©Dty‹»óÖ5‰VÌBùÝÉ>ä‡ Um(bŠ$NÊ Çzîÿ#!LFžhÆ‚‰X€Ïc€‘¯8ÇÏI+>Rd ê¦ñµJÊUÁ±7£",Súëšžã+ÞÂ$æóÆåt±•ðÕ`xð“�`¾ U  Rô­úa‡˜#µš B/áyô3ÿçm@¶@À/…Ó¶­˜ð1€�ô'��…ñ[nˆ´¥üˆ~ÇBÄ€°ÿ#À"éFì–·’Š|o×-æ˜U?Òðt?s‡w¼•>ß�‡ Ü{®òÃð£ l Ø€€#P჆a\yÂJCô7Áéþƒ¿yqJ‚` üOÂHÊ”ƒèU~†Uª•Ÿc ì1OF.Us¼�üÚè§]–B šs§8Š8'V¡„o S_uÑM7Iø’ ™ê3¿"Ϙ+ÌHÆÓÀü²â´Y‰àÒº7#š1BÔA<ÌV¤ògÊ`"ÄÕµêÈ—çÐë<Çâž0Œ¹ô^wÂ0\g£DÇ÷‹¼r5ùùl"Ž�[%$}¹Ão=ü×[æÂ‰Äûq�úóýöni¢›<÷A˜,ƒ¸£þ/<§ÈØ6VíEFú˜|cèÒ®K#n ª³ ¥/•ž\ÿ¹hÓO›ˆ­%ÜCˆ �ysˆ¶~Alô‘2JŠ'†»_«¤Am.·Ñ‚‘›ÕQ�€õVÔ£ø)â»§¢™Ît:&Ž â’nŸ¿­Å5{üÏcJœ>1}0æJ_2½ÌÖÖ`‚¾gìj°¶Y!î tÐù3¢9ãDãÁ‚´Ÿ—#Ú¼‚ç Bg“÷+fëUà�RaY©½Èw æc¨™s!Öƒ?ºtVÄ…’å7k…þ¹$“µ=Þ ˆªÎ¼ê:F²Ý¿�ÁbžïAãVñ3]JË­·A*8 /*øc·O œ·ã¹ñ…@2�åw9ÖCP|}Èë ÌǪb â`•aÞc­„ÿk(aH¼˜Ó°6ÆZëL3²sØY«}³6½boM¢ö'�}§ÈòØ«ŠÅø{ÿ“TZšŠJf¤®ÿ"j=¬öÖÿDmËß1€ŽÅü½ÿQ¶lôÅÒ¥#^vû%»€…Ýz~äp8àpÀá€Ã‡ ž C¹&ºzï!€y¶¤,…dZË~þ(;ƒÃBA@ÇzÖ~èx@U~þY èþz¢DT)OŸ@ËP¨1[ž°K*wsF �:ΜI—”€çî ¡FF:Œe�çÞy‡¾³°Î1–õyÎ4¹ôd:½FH«¢ÅЦ˼uæ–¦É�@XC„7Ð1:Ïh-p¹Û“ûO4!Î!Q©Ùáf”(-KylŽUm+2�'ôch[½G§!ä¾{KO3Ze GýxÀ9[øÐƒv2B1¨†N¥GY€œ…M ô—„…�øXpA Æª µS¯�¢V©O„qB·X_6ƒ6Šò1b 0šÿÐpG€I�hwçzâçQKvo ÑŒºA$A€Œ€À¸^+ú¢<{ÿMä¢ÜômâºÍÊ(`B_©yÜ� ô”äO𠋘jo àIÖ‘{³@Ýø¯xÉÿ DÊtô‘ÿO`!<©ü�à\|Ð�_-òû²†öD ä+Æûu"MjîeÏ'€ ‘üöä!¢OÞ#ºwWÜŸ3˜‡Ðæ7ìP`ÌÕ›°@g,ÿ¾d ÖÑž�R�õp® lX÷4¬@‡³ÕÓWâØl+…aF÷ŸiV"¸´Õó‡Zx@B°N0å�ñkµôGz)©ó± @>¿zŽùø“žï#! /û‚ÿeª³õÕlc ýÂE¡òµt fûZ~¿ñ}jËóWÃoűq+5µ‘n´ä2– äÂ>ý!X™Èû³}'û¯U¨¬’%~U”  ¡I T¬"ш%�”ô]ÏY�‚že0¯l©Aéùù3j†ý‘çý¢,¶NŒàôr‘9[y>ÃóÕtzõišZiªfÍ€± ÷ÿÒÃÛ5ðàÉ~0˜" èØ=f7-þb±Ö‡qóé–O)õ»©�ÉîsŽ7F7NðË�){­ìT}?p¤( �DL@Æ�ÅŸ›¥Jª½ ¶W {Æí¡%_-q—ƒemÂÔ µºïaˇD>ÌBQ±×üù´rÿ~­�9­[kV"Ƹx�hÒħõC³ñã57R([·hQú•­-@­*T jùókÇêf5[§ô`ëIV@ @”K–ÐÎS§èo>V)9»GªS¨UΛ×�¼‚¯©7_[ „z­+U ¤¨ß2ÿ>ú—–|¹„öMÞGpùz)ÆKT EBÞŽa;èÕ,¯Ró£ÍÝm ÍÄ‚€“7¨Úäjôv=–ü2 Ï6œ®½F•ÇV¦ÜMrkicò²VçîKT~py*в€–†Í°¬Ãèú1qŸ¸-Z�nE‰ß’;cµh6R’×.d+‹fžšàèÛpÉÐúgok¾¦ ®¯Tá(¬ °ë0ÔZãÖíÝ¢_^tÆ�²¾Ã^ˆÞý ×sÅúÉG||þÀ}Cð(¸øžAUÛÚ÷Ðàƒ{"� è࣠Bû•sˆ®^ùê`4Êà~Úd¾.5àZ ÎT¾f¸"²¢‘Ý„æú7§_u"*WËÚý�¬`@Ä>îà€4Z¹V8ÿk�C�ˆ‘ðÁŽÿZ�ß¹MJ w:pcw ùÑ\ŸÛ‘@Ò%DÍ/ˆ:�å‚Ý>~$€hFƒ@·p9ëV¤†.´b!XÀXw³ÚòcWX×Ò‘A«žB˜ 7O;×éuüoÐÒ7#@p_â™0sMdVÇ_\$ÍÙ#ž qæ{+µB}—°t�¤Z³È4«=„ÝàqFRµ¿îEôY;c ý–7°À „0A4•ç–^-Åñ„µ¡âÔc«ºŒR5u= q÷-x–ü‘‘?5ùõ K5•0@û€"æ!s1�§Òˆ®ü¾ê¢¦XûôX×òΑVYÞ9Þ)F÷T(P¤ÏËs`”àÏ?\à@ë>¼,ldûaÝŸÛtŽ8H7ݽ¤ÿ¹x—W�T•&� 5`èà´ƒ4÷“¹š…C«?ÄKèð¬ÃZJZ_à‰’éĶDý`½œøeúþ¯ïµ4¯ /e8�9í¾ƒnž¾I÷®Üã¹Z¬oük;®¥ =7hMÖý­.e,Ë7’I £PÛBÄ1>hߤ}šË,‡Ë©<ŸçÑÖ?Òý”±™+®ÐâÏÓÅÝã“e^Éð e©–…Šu,F±òŸÉvåá9 ÷^‘òBÁ"Ð!üu�ë$¥{ò_]µ¡gMÕí¡x«%²’íÆ\¿Žßk×.é`³•[>YOu=Š´– 0býdFª VY¾3Œõ¥%,ØV…su÷Žª‚ƒ,ü ¶Ï½›y-ÇàÞgÛù¿Àº÷ó€/æém7…r…ê®sýeO‹Hô‰9k»*¡ ¬ÊÔ ªÏ "Vì}–õ°C0kS»k’°¾SäX±Çóˆ5,œ¡˜wj £â†HÕ·½–=…Ç"ۊȽ°0žË¾�éÆsYÎÙ;p8àpÀá€Ã�ðäÀ t„'ÂmëÚ�;„ß Ž%Ë XR¼Æ?€Ï#áÓú2[vœf+�—cƤd ,Wx�þTÑã{�éâ.þØf°#UÁT¹yˆª x–Æ a\ÜÀõ 4Ö’§>pc½ì›{ÐVƒÆÀ¸–�à.B—Ίºø°ÌÎÂ@}Ò®¯2HŸ:,¬ªàý>`1Nð.X œ„‹ì!|ô~�U|ü~P—Á„)�Ôq8vÜâújŸøhŽH‚õ Ü5@à’0 |6C0)csDdßNÛ< |ò š `ÇÓNp�yõðU-~„÷O;!¾\X%L“�¾>óµf¥a5f tþ¾0•ú©”æ²ê¶ ëØyR¼ŽÂšŠ"·Ïݦ¸ÉâR´ 5ë«~_”t»ë ‡?Ç�¨øO°vF 5X–ºx혌×OX? ÖkFNÛ]›ÛyžÏŸ×õ°]ÀÂn½çùq®Íá€Ã‡ŸÐþÿÿ±¯+´ XØ­çk,NžÃ‡80rÀ:ŒqÎ8p8Å€›%ø|†e Ü´Èxßôí¶ Š‡iÝÃýâ¥Ø!rþ¼½�š‘_çE¹ÎÈç¬ý_”ÿäE¹Nûw³Y1ÂîߺO!¿‡Ðúnëµøa°Èø&äŠ÷:›Eú èðÁ'ËáÀ ÀgmúüÉ^¢]ÀÂn½‡ås8àpÀá€Ã‡ Ã¹8p8ð”qA‡Û7ð§÷˜`ÓÀ³äó†X å2Ú»N_>Èíµqµ^”ëŒ8†Ë/Êò¢\gøß!Ow‹ˆÇ�¸*•ÂqÅ8N™?r€rò<ßpÖ¦Ï÷ÿÌÕÙ,ìÖ flNY‡8p8àÎ=àpÀá€Ã�§ŒƒØâ`üÏ"ÞÈ[yˆJ$‚–?eÃŒ²áÀ‡õ®m‡ 5ÐØ(vÚÏ:/Êu†'Ï"º­å?yQ®3¢ï—§­ýM?m¢5ÖP´˜Ñ(eþ””«A.z§1› €ú§ìOÿù7þ¡0•ìY2€N‡ž'8kÓçéß ÛµHÀÂn+�;w¶[Õ©çpÀá€Ã‡ürÀ:ü²È)àpÀá€Ã‡8p8àpÀá€Ã‡8x±9à/öÿï\½Ã‡žv8@ÇÓþ9ãs8àpÀá€Ã‡8p8àpÀá€Ã‡D1 #Šÿ§{‡8ðÉèðÉ'Óá€Ã‡8p8àpÀá€Ã‡8p8àpÀ:œ{Àá€Ã‡žf8@ÇÓüï8cs8àpÀá€Ã‡8p8àpÀá€Ã‡<�@G°±6ìÖ{ .قÇ“èÔ!¢äiˆªæ‘åuò÷m¢˜±ùË+ËIp8àpÀá@„q࿉îÜ"ŠÏss´èÖ�WÃ+çßOôZ*¢š_xeœð×5¢©CDñ* ˆÒdô¬z`;Ñêy"­H¢|Å<ó#ãìÉý'´±÷Fr¹\”½vvJöV²ÈèÖéCá@dß¿Í":y�èõÔD5>Wâj¸y�è×Á‚•ë¥}ÓaŒÃ�°q �wʹSDûx÷ór\¢.£½ÓŸõ”ˆž÷ìvë=ëÿ‡3~‡8ˆ\¼@Çö“'©ï¢E~9ûVêÔÔµfM­ÜcÆÐƒÇ�µã×%¢Ÿ?ùÄ´þ·“'Óõ»w):KpÇ~ù%½ô¿ÿ¹Ë]¹}›F¯ZE[Žw·…L€ÙÓ¤¡÷2e¢šï¾Kÿã:W¹ìWãÇ »ërPþ�wèÓ%¼ŠN^¿žíÚ¥¥ÇŒƒ&5kæ8ü¶oMß¼Ù]÷ËÒ¥é]“‘6;Fc׬ђ«åÏOUóå3¡'ÿýG“Ö­£mÌë3W®hç(„kË•.U/P€ eÉâ®·þȺ|¹ûÜ×A‹òå©X¶l¾Š„KÞÒfKiçˆ�”$Sjq¼E¸´iÖÈò–ËiûÐíôJ†W¨å©–fEü¦EÆX '%Â)`Ä£àw\²ÀµËDó'Ü!~8�“è�ÌD•êòÇ? ÿ$–¥Ÿ¿ý‡¹„ ¯ô‡Dƒæz^ß?MèG´yQÈ ¢Ûá9!JòQî†.ƒ�@IDATÂD%«UüX¤yÖŒº³«—ˆ=äÿ,Ñóõ¿õù–hÿV¢ØqˆF-÷¨‘Ë¢ÚÔ!ºËáÿ1>Ýg*Ñ.»xŠ(‰ÿnÂïÞuQf´v#:�Kò4ÿŸ¨ûA=¢ÚM={Ä+ 5¿†®^é9sý~ g;g'XðÖõ‹Àj~ù#Q‘ò¢ìÐNDÛVû¯×”Ë.çY®ßË]%z3G`‚„eÓYp=Ô³�@ÎzüÂs ¿^ ÈhW?�BYµ¡({ö$QûÞõ I•ž(O~&ùx)œ1û�íˆv­÷îט°yâ:}N˜6Œhé4c)¢¸ \MMT€—åø2Ž€ó´á<Ÿo#:¼[ü7üê&è"¤H'æåOøÕ‡ç!"©V~¢C;‰ŠÀ‚'ÿK3Ë¡¬YÀ |5‘=ÿQ&¾ÏTšÎ×Ú£¹HXÿE57rŽï]»G}“õÕ:ûhÚG”£Ža�aÏ7Cø�eŠŸ<>E�Í/l‡<8`ç>èÛ†hß�f´¬[0×”©N”ë]ï|¤ÔÈCtdQ‰*DCù�LzðÑõ+¢Ç”éô9#¼Çpú(Ñ�Ÿz· ¥�i‰²¾ÃJMÌç’u‹‰šUuçî%Ê’Ë»�ˆJ‰,þDÔøm÷Y¸N»k3òN™Çë³{6[n¢Ù»ÍZ5O{VÖÃvæ=ó+6Oµ XØ­g> 'Õá€Ã‡˜sà…:Ö:DÝæÌ1瀒š��ŽaŸŠ•{©nÝÜÂzùéã�©  P½ è@™5�:¹-5Ÿ?O­'M¢‡Ož Ë’–¶kGqcÅ¢ó7nP½¡ÁKx>È“‡¾ý€¥j0|8�e« Ij ¼ù¦<Õö¿nÜHãB $dI™’F}ö™Gœ,Ù½›ú-æ/¦zE‹z+7ÙR¥ó¬YtàìY­ŒÙ ÒðPÞ"éž=�O(Û¶reª˜›W¢L‘àžw ZD­>dA- Ç­hìJ¢÷J[å>Ûé°æp|¢ùÑ7 ×VÏ'êþ "þ´¾F5wß–4Ö¥"7§H2ŠòtR¯Ñƒ"·ïˆìmÎ8¢Î¡SÞÏ¿2÷‰goÐxÿ²¢¥�#ÿϯxÊ]¿D/»øQú¬ú9þû*Ù‰Î×Ó6²Àÿò9Ö`Ï«§Aݦ~Ž£Å<Žêéiµù~ù‘¶a¥Ù ´t 蘲Q€nè³ò[Dðõù£©›Yð÷ž^ Bõw_ç•ùzzOÖó¬ŽÚ7$Z8É*×:}+ƒ…@.™Ê P]ërjN_ *Ô)Fž«åä1„›“”x…Ÿ…ð¢òo pÆ_{é2ñ;S¹—>/§ß“Vu!hÄÿ°FÒª¹D_³€Ö¬¹4â¬ïðl`~Ä<ùUgxvñ5ßyCd€²Q¬ØD;ïz[¥D´ Ç÷èDnDw/ߥþ)úk�Õ˜UƒÞªÁ¬C°s”ba=æk_P°ýÏ�‰û{ÜÛ¸Ç#“ÔkÝÆspüDÓ;Y:6öÝ6”7&þîùnD�]…f=”_vý¹k�Èâ�oÎD|î³p�v×$FîúN�", %µý˜Ï)¬ ;�’©þ÷ÏÊzX½äÚÕÿÕ^Â.`a·^à#sJ:p8àpÀá€ÃVöasz×ó΀;$­Ü¿Ÿ.þÅ’¦ê Rü—_ÖŽS$NL¥sæÔŽ�@,0†5ö^Õ›ÿx�Î_¿®%Áš"Q\EjÁ©ÙR¥¢|2¨Uè_o]hR9o^j]©’G9#Ð�Ì~õêQ^C{¾€Ü>�FŒ �PP%Í«¯Æ™)yrº{ÿ>8wŽæmßN^Ý耔•A+*š5+½‘,¥KEÐq|ñq:·ñÅI‡ µ-d1ßÉ‘1V; Y˜Ùås¡ý�+¨ÂÚÕp—"§ 7#Ð$ÞÌ·t¢$¾¯ñYÍ…¦2´Ë@åëíÛJÔè}Á›x ˆê¶"*X‚ùðªvîf¡äLþØ‚‡yûD�§aûçy¶2I#FÍùj�ž†Q…Ï õXœ§Xk@;wêÏvþ†…Û¡À„⎃Þç:*�7l!§UyØâìÖT?‡‹žµÌÇ9cùƒšŸIFÏÙ#ÏĽQ13Ñ¥³zZ·qD}ªŸÛ=êú%ѬѢö§ß³¦­xí™6ר�. ÿ¥/øÚËüÙ²Rƒ°Ð’Ô¸­§öîöµD°^Á"¥þ×âØ×V °®P ÀéÆå"ÀP†lj®è}ƒ`¡3i€8Fš*ä©ú.e’&çj½ÏÛ%d€æÉc¢?/­˜-,P²¿BGÌ_oÈæÑßwøùO$Œ8ßÊË÷¡çëÙ£U”AF ÂR&uÝ"žË|�­˜%@I”ƒ’`�³`¢°ÖÁý×:Çî 0ñÜ ë2®×ôð>î)¬Éž3g¨ÌÛo»“U‹ŽªV¥r¹r¹ó¢ê 2Àƒðº¶Èk°@Ü<Ô+BW(аÅǃQCÂùã`¡ëóJª�{ýe¢W_WZ5‡�@#B9¸w0>¾àîKšËDö9L€"ÛÍ„è5b·?±~Ê`ÑÜÀ�÷i§&â‚ÔÉ, Æ} 3Í €uеíGÔ�…ì ¸&+—Q¤Ã­îyé¢Ö<3FŠx5÷ï °aÇQ[¸4ë×–ûaï uL"ÅÞVºvH̼M×ìµÑÿ;!¤Fí%ü …•ƒÉkAþ¤õDy‹Z•ô�>˜…õcz‰2ó÷³`<§uy‰;Ö þB›ü„d=ü¿Ð0V]>A°Q:�>¯™YÒ‡±ÌNæIÃâ"õ{gêc,a~~å"»ÄI%ò0�vâûI%QŸ•)paõË=îç¬b!&Ó�Ž¢l³.‘¯‰®�2ð£¢<·Þ¸b­‘Ñ‚ž@Fê�p)bË{lYÅÏP1&X0Â’Q¥QÝÙ%U'‘׃?ŽÐsU÷8kÎ 0QÏ�ø#€,["ÚmVÝBø†%,êT»­x ìØÈϨj Å Ì«6f W~ÏF&E"óšÌúz®3<Ö$f×Hšê>ÍߺBmïYZ;ï©×ȱ]ÀÂn½@Æä”q8àpÀá€Ã‡’ÏÐq–c]Œg·H¯°•Æ×l­aFÁ±¢G×\PÁr¢/[<¨ô»®ºÁ1:@«ÙubuLÙ°�Ư]«¥�hÒD³ºÐNllì­&L ýìF*‡Åʈ+´žGþ9ef0B’ t –†4î�‹)¸š’´˜]Wõu]U·HjR²¤–S ÆlÍqæ*Kþ˜F²Û+_–Z¡ÐMTpõplþ1º°ýûÊwQÚ"i)KÕ,´®ë:Ó‡g¦û7ïSê÷RÓÉ¥'é⎋”�Z�•�%æw•^IªkÊ«éÆc¸¸Ú»YhÒãYÍÉsâÁZG>$kô9¢=Ʊžúí�Ýp–®¹FIßJJéK¦§d9’™Æè¸yú&ý±êŠ�(6%H™€öMÜGÿýûŸæzêÍ oÒ‘9GèØÂc-F4ÊñqJ_*½»»s›ÏÑÕCbÝõàæZÝŽ_DL¹?ÍM)òyÞœY?ÌJq“2³˜nœ¼Ag֞ю³Vãôd"]KP6—÷\¦‹;ùFgÊU?E9ºv|`êzô÷#J‘'ÅOŸŽ/<®]/₤,�’Ô¾´ &´{nÓ9º²ÿ =º÷H[7¥+žŽÒNcR:|’‚½ÆÿL4àÑ7žWÏVu¸¹.ÍÀk ¬@pÏËß%Åý^›æ=¬E ü‚÷ÖFÞž2�wéð¸‚]‡emÖ5IXÞ)àžt{ˆxT;±–‰æÍS¤DÅzXI°ÿ‰Z7Ðy¯÷¦Mš«îÆó3¥‰â§Ú¦zl°°[OíÛ9v8àpÀá€Ã‡þ8ð\�yº˜~�e€cåÐü¥ßˆ-~©RÅôúƒ:âpü XÀýh ƒ°\�dt ¹ òý5[s˜ï–õýíƒ:î°k¬ª}ûj<@\‹ t4d0T¿X1jüþûî.U £Ö{ïi×øøß57[½9&‰$+ ã»Ôª?Œ¿T˜Ò±k©‰_…®âeEû¨:ð‘=½òtúûÏ¿=F÷JÆW赯ÑÑùG½‚‘É8„þúã/ú_4ƒþe)R(¥~75=¼ûÐ-p@2€‹�뼓eJü=¸Å…ü#·3V¥ù0t,ŸÉ›C?ª¥öz0€p¾ã¥°^­‹^øÏ…,3ÂGò75t xµ ÜN Èt¼„jª~,˜ïbÁöw[ä#!˜ÖKË‹U!j !¥šA9†Çö1€P‘ÞKDîo³ˆ¾  šÃâÜO $}…«Âtc]é ÆBz¤Ë¬—€µ>êîÝÕÓÔ#p¿! ®ÅÔ82Ýlo¥5Šÿ±óÚÖF 4t¾ç‚1²­z7A¤#`··Bÿ B…g0{)ÀGß¿²pá‹rBP�{qÞÊ#ƃíØÞ`¾½Ûx–/6*!@® k8°7WÒüÅý��…C¸×q¯Áý –Kké> –!ßÀC3·¢õà¶„UË)êÀmU럂«/K¿—D¸7Âs>ù"€GgŽ ·uËOú*é;OjíCh4‹…CVtá4ƒ•D.¬#`%©õ¬ž1ÄاY|°pÏÀHŸ(ƒ é‹¦„A7=Ÿ_mHÿö(3k—罉4€Šò4³ø@3Bø^-ENxº®°Š9ÌHF±1ç›×tYó9Ü«a^á¾Àýa¤@=ÆzÁžÿ÷ä?ZÖ|í͈�àžrs_ñ°¨ÁÈüz€æÕ›§•P !þ÷Òÿè�FïОñ{Ü-½ã%j¼¡1¥*˜JK[üùbMÁÂ]ÀÇAãM�)M¡4Z €##rŒÐŽKt/AE;5­9±øD Y¢0ßœýF[û `ß×úÒ½«÷({íìtaëºu–ÑA…¥MD/ý˜’½•LI‡P YùÝJÚ1t‡[©F-Tðë‚T¦Oµ†7{`-ƒ5 @Úí·‰Œ‚h€øX�Jœ-ޱý„çF¸oÂ{. ÏGRØ/K M¬à¶ÍHvÖAÆxQÆ6Õs_™ê;u åÍó:æwžÃ6}űº•€ÒTpXµ8ƒµÌ˜žº«=YïÛéÛ¼Aí¨à��>œC¹ÄH¹ ‹5‘êžÑŒp'Ø£™ˆ×el.Âì‰Âã>v=–µ©z¿»& Ë;EòSƹÂÚÿ×M2Õ{ëauÁþ'jÝ@ç½³gÓœ#G(ON8–çgû{œû"»€…Ýz¾Æâä9p8àpÀá€Ã#ži ãÇÙÇàÆÄ}ûè ÄVé‡Â…©w¨å�šŽã`�Ž ,Àÿdð`Mãñ"ºÕ •Xr[f@Dz½{©ÏB–l1¥J’„ºÖ¨¡Å¨Ð‚Ü t¬àø#½çÏ×zéV³&Í–�j  ¹¯ÊðÚk4¾iS÷T £YÙ²tŽc{,æØ! ”Cy�бóÔ)jûë¯Z™ï¾Kh#PR�8_Í(K”Ò‡ŽÃ,?˜4h>L7�Þy¨}¸çü$'%y3 …¬ ¡ÓkXJJI2%¡Ç[ÈSr¼èË^'»¦‰xõðUw>´oŸ½M—v_")¾»ö½üÊËî|¬l³Rӄı¦ñyôù:ìŒõ6[3}ñÅè"`ú€ÙÂ�êÍH܃ð|ÿ#³zZƒbÂ)Óø#–�>¿ª$Ü  \Ü@ãÂhÃ�ðq‡`¼FmDh½·o(À ¸FxÿN°œAw¥¿y_BO æÀþ¥³Üο¬Õ�OˆÁ°k½XŒ^® CÛ¨Bù”éX;±‚pg´f�'Hò% áZtõ`­ðEyq íPÄî0 OD®÷¶e5"´m%èÝ¹Ž…�ï‹zÆk]6ƒÝ*Õyà�ä-´ÞÁ_hç?2Kšz’dÌôot?mNðU‚ßnL¡Y‹[`9�EƵ0 `Û71ÐúH•^Ä�í¢ïìüƒ[0P¯‰ |q�ð"h`äáÛcõã1µZ[×qŸÂXÈö�›°à€Ë2§ñ9 ¼@`oPßéléÂuq/ÁÅ[Á’,8Ê"âM¬øC‘!6òÃJŠðœ€úÏdA8_C°„ç£t:Q« a �kEpßU ¡Ðâ7 ¸nUϘŽûñP@°\€ƒ­œ#Oäÿ4…²ºV%=ÓÕÝTv¨ímX«až‚  ÀWx‚ÕãYƒµL-ªr¼—…² Ö>ª+*Œõk¾�aE `¸ä0Æ41ë÷ÿwÌ/¸K¸%<Àô…ûæ×!¢W× ³p°¯õÏâØl‹û¿Aq–á„g$#??˜ æHÂuÂÒGåƒÌ›>B qÞV*²ì×þ¸–6ôØ %%Í–T³lÀ:ãàÔƒôÏ�ÜE­€ŽÄo$¦´ÅÒ,&þ{ÌLbŠŸ">Á²cÿ”ýšåhÁV©Ü rZÞÑyGéü–óÚ1ú�U)èM6Dÿ*hY€¦á‡1”ƧY³Z­?nž¹IC2 ÑÀˆ"í‹PÉžÌøP’@‡à:’À‡¼Ö�0·9ó³eÇ&®³:Ô…âË ’ó»#Õ¢ ¶áq»ËÚT½ß‚]“Ø}§èÜ"’Jˆ†bVëau,Áþ'jÝ@ç½Ë—Ó°;Ôªše,<>e…É´ìÂŒìvë™�ÁIs8àpÀá€Ã‡Vx怎‡,‰œÏñ5`½ñ;Ç}p)W–<^<ªÇq `Í‘…ƒb[Q°@Dzvíèg.–3€��)X.¤M*>&Í€¯Ç–°®�”‘ƒqçϘ‘ÞI—Žr§Oï3.‡¬ƒ}°@GçY³h=kf¼Äã\ôý÷�?úú,ZD˘_ ™çãµÐ8F £P–,TwÈͤDöìÔ©zu­ŽбˆA‘K–he¾(]šê*¤²Q�åWtè@±b°¤#Œ´¾ûzú½m2}øë‡ C#¾‰}¾ˆöŒ<²:r5ÈEU'V¥®ÿC}’öѪ¾Uó-ª1³=þç1õJÐK³ø¨»¼.e”*µ¢�íò–ËiûÐí>�;c½xñ"¥âàôÁÐ7ß|C3#hÕãÃ/+7¨�´®Av4Ш§k®}ן…[­E[ت ‚ypÃôAVñá šñ2|Ñ—N'4‚’@ h$5¨ ò2¿MÔ{’§{(ôíz¸JßÏ÷N.q áûdî¦ï Õç>ÎÏc­Íj8 KþøÅG,n[`©!:Ü0AaEÒ8, ЃÐO\*ÀúV$hšóªõŠt•¤Æ˜�u±?q@Cp‰`Fêkæ&ÇXÈ*,†À‚ÉÁsõñà^jÎ|\ÏS®~½ã'-ÀÚ~¨+ ¸5€ûü�°˜Âù¨P.†¬\ÕÇè9úÃýA±$¨’iØÃ„j À¢ˆÓ÷Vu ˆàò\ÃB þ—�W…+ªï늖–²€Am¡õ   ÷"„GÐŒE\ø7u.Üxˆ3ûÛÞ­ta3\W% mߨ"‚WC¸gF°h€e~Õ!¬±"¸Ü¨[XäÂz×h‡p¯@S„XȬV6°¶*+‚ñŠ3Ï-\ˆ”¤ÆAìÕ-„°L’J376²�`öІ뫸?JðsaEÒdÔs¥{X—Ôj*Òñœ\daÙŽuâÙÜ„çÕ#I¶Ò½™posóš[¤†1®ÚæÉÓÈ’á»W5ÁÍ@Dµ7iEƒç¾?xÞ@˜ó å A!1[è˜æi Düš•·“öèî#�f€f± —–�Ö5¢˜ñy²f‚BÄøBãéámþƒ˜¬€Ž¯Ï|M‰Ò%Ò¬Bv ç›�©Ù‘f”4kRÍ-Õ¦Ÿ6Qª©¨É¶&Zžº�{Ëþ)úkI5fÕÐ\_©ùÆcXŠ,jÂe¦FëQÚ¢i=ŠÀ…çº.ë´µnËS-)qzžtCI:Þmý.•íÏZ(í¹“–~µT;«4²åý’_L¡t’_LS+LÕÎò|ž‡*¯¨�H€•ìœ:sèðìÃ-f4jv¸ÁÂö3v…:nܸÐÛAÙ#Ç£3R0÷é‚ü^Ø�÷3îS•°&@| Xuà~ZtH· ÄZA‚ÙxOCX_´‚^[¾çð|î¾§§ãÈî:HmÀ:” +Š`H}G €lÚfÔ· ÑDqËyÅjÂó‰|ÞAÒ¤8cp³¦PÀy‘òx—JªÂÁ·}Ø5n[Y+jøcç?Q¯ 8Àq¹†ÃÕŒ]ÁBvž¿øþÌï!(ƒ¬»¤_§T–Àº÷€2IpaU»€83*µÈ2ØÛ¹쬇åuÙY›ª÷›Ý5 ®5˜w ʃT«G3 N”òÞFÖzXölç?‘u±fÞ;xå M`¥Ñ©ÒÕ{úäYBi–YÀÊ£ræÌCÑ€° XØ­§^›sìpÀá€Ã‡üqà™:޲›$XoLâñ�û÷Ý×+Z4íåÛˆ5Êp ¦–¨hè87MÇkkeLiW­š63 »Ø…V�yóè–²`Ð*ð&!ë.ÏãmÌn¤brü_ зS•þ™î?zDÙ9ÆÆ0޵BÐó.lš jY¾<}X@¬”�@¬20æÕh@É”-(å+¯XZtŒ]³†¦n䕯öÑ45U÷Ó¤ÛçnSõéÕ5×jûêq @‡�±Þá ïmÛ*_†j§ÇeÊ”¡�>úÈ"7°dU“úcÜ"ŽC t1DŽ!h†ÿâ‡{Ö¼tV×"7º•‘> !ðƒµ‡Q8傉¢½õ—uDö-;hGƒ ˜ÏBhú¢ù‘‚µм—À êà¿Øëº†U!žÇከ# ‡áŽE%håA €®ÅHpoÔ´¢H5¦VµâŒÂŒ'�BÐ`ÿ9Œ1@fnrD޾U]@-b¡�ªqˆRê½"ývC™/¾7zN`íù†B8™7®à©Xp=HCy¸‚²Š ¢�&¸#h¯š'ê@‹r8Ë!dUI‚IAŒtU’2�ÐÚ”1Xjæ#:¼KÝÇü&€XÇxƒ;hg"h4‚ÒÃü·C{,œ@ÁZG‰ZÞÛzEtë(ï\=ÅxÏê9ÂMШ"eÎjªùê±ê ñ@ ȰC#»ñÝYÔ„õŒ/ßöÒ…¿~` Ôk¢^JÆA ¬�𠈘t#ào “K½'ýZ×!!hûâÞ©.sDŠ÷¼î:ÖsîQK©Çj:@6h�ChQ„˜-ˆÝœ €ÚŒð^(—A<ÿf=õþÂ|�y#ªhÿäý4¿£€Lf@\ZIð èˆ7uø›F¦ÃvвË4 Ó£N<±¥ã„½´°ñBz5ó«ÔüXs­œº è@Œ�~)úš\ YycBèK�ºœÎÈë$ŽòÆûoPƒµü°($�Äìh{¹-ÅJË�‹xgƒÒ ¢ÛçoSÊ|)鳟¹óÆ¿7žÎo=¯�&Í�6× w&ü¹ïOõÎ(-©tŸÒw_S§N¥ 6¨ÅüaE�Xìn6,„a°PÁ=PõPl V˜Ïg�ïTäÃ" @¤$X˜J0[Æe’yØKá.b‚m¹¡çà~€ng¤·"„à†ãý÷sÁPÃâBYCÖ™º™ãj¼'Ï<÷p׈Xf (&@öù€?ËCgÉ4Á'äáÝRU¾�Š˜Ss+Ê‚`A·O öCØ X qü±Ûç�ŽD£{zZjH0ñ¾ÖœëŠ1½øYãÇ^U½װ¸Ùsk:#IK@€%MÌ`H°÷��õ°Ýµ)Æk´è;e%©–ÎXsY)wÈòrëaÙövþµ¾�ã'¼Ð^vò¤z,=q‚à\ÒkqãRCþÎoÂVY6`°°[OŽÃÙ;p8àpÀá€Ã�@8ðLÇdÈÊ ƒJy9N,7êäÈA‰MLÕÕ²Æc;@ÚXÐµl©YFX(�VëØÂâ4kK ®¡†2'fLc–û< c;/N¾ç�C@ÄäÝ}ð€ª0‚Ø%°&P¿¾–nt °xã‘#5@1>ÚV®l t¨±H:|ø!•ΙSk7�� t À¹/×UØ&¬£{ìîšö >¢ñ1m$ù1ntTQ‘ò5eé%“5Ê ,Gð- –u]?v�*�bmÆ/òjif@GXÆjÖ_D§! ®ÔÞ“BÞ@ûDàL¸:‡òr,ãh§Cc^õ… —6e @ @+AÚEû …‡„Ûq&¶Ã»ˆ Ñ8ƒæœê&A”ðÜBÈX’…Ñ´Ã-ÜãI Œîd9XtLèÏø\Ò*eË-„ÆØFŠ%%¥ÐgÆÂÅ¬à  ˆ¢l¥U¨ÎmÂÚÚÌÊ Î‰±}Ѳùìøp‡vªÑMޱ†úج‹pßd,£^ ¬=à§Úòµò‹’°„€+Ÿ#,H¯‘G¤Áú1G D©˜Å³œ±}»çª+´QšÇ5ˆÇg$U†´ˆ3 ºÝzƒÇ‰{ ÚÀo2}ÖŽÝ õbíéB8$}Bν'‹À¤RK’1|BÀoi1dK çøN…)¸“‚‹-£û1ÙܾÆ_åüHWAF¸-ñ Ê1÷ÒMx�>}Y–IW{¡EkE°r�Z(S”ËCSÓŠ`¹—/pý^¤º”€û7>ͼ†Æ©$D‡5îáâ š­ÒÝI>~õ™oþ¬C#–/°º‚š^1Gà>U-êDëá·í×–ç¿~ÂmÀ>#�({R5Æa¥¦Z´ ŒúªQY?2÷°~€¨Ã½#O– ý±òšR–'|&3 ÁÛ^aÆ0IPB»[ÉìÈÞKM{_ýbNÀÑ´“ç=,ã,a¾ÚÀsŠqÞ³rõcw¤Ž Þ9XŸ`\Í»ª¹þ�$s‚$å­4KËJYÖlP€k¦z.Ö?¨‹¿ßÌe�j1‹øfÒ-fTðÇnŸPJ ®›Uf…3ž¤(8—¢¸«å$@�û@°ñþA½®_ ° |…rŽ‘ìÞû·F¿êz.˜µix­I0†@ß)(+I~³À¢–ÅVï!Y^î#c=,ûÂÞ΢Öëñ5öJ1�-<&°7‹ýŠ ƒñw:ߺ5� õйsç ºr€Ž Øåv8àpÀá€Ã›x&€ŽÃ×®QöЀڸÎBl­Ð—5Ñß ÒM�ä‘] ãäåËôÙèÑZ30Ž@ã¾€Ùö×YÛ~_Hmûô¼ŒWôLMùÿ@@ó@I:~`k|�HBÐLh‚TpBísVõYtdîK‹h>B44óPºq↨�Dh&Zµ/ûòt„e¬²�ÈÜ#È6‚mƒd`eqæ °âbûæ.ÇZp˽ËÃ×ó;±…f/Ü@‹¤Z2Xiz#P­Ô@‡Ë§—㊺r+?>ñ1¹‘…Võ²¼pÝJKqÎðj �v¡q_ß°h‚F5|~ ®Œ®]ñG¤j»O\ÇBŽbZ²ÇFuý… h«Ã=TåúìGº†ÿQùmÌ3;‡&(Æ Y|¼'yMGÙù„õ þéß[òÿ##¨cÖG iZê"Y‚ªU!�iØ«B0)ÀÇ=&ƒ"KweªÀ�jÒIá�´®�[�Ü,0XþÂJÜR†xMÂJ*@d¦hûòT5P­êV{[¸EKž†ƒxŸµ*å?]ºiòÇ‹+¬m]‚AH�™e˜ÈñÞâ™’nÂྠàÀ)°²Ay.ÿ7T©aÛvjÂmŽmÀ­ÜWBã¬ðƒ(iöÌÃúóÈŸ{1”�À "ÜÉ (;@ÐM<žˆpñ„þ¤ÅâÁ ˜É@öp[gô^ÕÈE Y€‡QE - }÷iÖ œPÇ¢7:À1-@§¤¹Ïõ5Ž-nܽ«u±ºS' H0ög<ßÄ BG@É'¦é &XQ @¸‚ ãT@)¸]Ä‘tñ¯¿ä¡{18¬€Ž£ë¡éXñ\½`A-‰б•ÍZÛM›¦µë°qwzÙ@Ç•ƒWhdΑZïð�ï«|Æ!Ñ‚†,°˜´ÏèàøˆÓ–…­7Ž_§F@ð9 �{4]Þ{9Ì@‡Ý±<;}š¿Bƒ WØü81ß+a¡Æ%Ù´‚6]ótE RÍ·ø°“±e�‹!â#çДn$¤+¤ïa�ÀLÓ»}Cˆ@ ±öJzR þˆ†5„Ñ•�g)ýLjs!Z`FËh©I×Jþíê­ ‹ X^€ÒgemÛ#âXÝ"NâÈ€äÐÂÄý{Bˆaºaºœ>œ®^ É­Öp—IV$?ö}&•u¥&#„R@$óÌö XÂcé“þºG-%¥6%ÜðT øž-^úˆ˜fÂOQ*¸-,ƒjñT€=¬VZöý •/;²k³îžíµoÀ÷Ôdá&M ð·ðøFtÖHÒÊgÁD]`+Êd€Ò¿¿åh¹MmvÛÂ÷&‚ÖC³T:�†©šžZ†Í�êÚ!˜ Ýjwªæ¦QH§–ñ*°�å, ì�ꦩr=vû2Ùº•ß±s¨ÜU�'¬kˆX¨ÀR—{¡$©Aʭ܈ȲÁ•ÕÜdÕž•ñjßv‹A˜ž%áúå}ž×œªÏ“g)ï3õ~�ø; ÜŠ{— �¶/y~2¯f1�J—{VÀ/,R“`',C d�*šùÑLBpð¸IÙ2ãj[¯aÜ a%‹7ÄÅš›1:@‡f°õÇ«ˆŸ<>}{é[-íø¢ã4½Êôp:ÐðÈ·GÒ•W(m64ÒâŒõ}½¯fy‘¿Y~ª0¬‚Ö¿º‘@Gþæœ?Ô;cï�´¦ý­Jë ­)Aʤ=™*eÒ¦«m�¤J *¿qãݺÅ7y€„õnz¶X+I×@x/®9xkx×̆Ղª”![¸ÍkÜÿ 5þEXÖA¢5±U•?0n_ïuµ^°ÇªûÉ@ÀTµ}XþB›ó”ŒÏm¯–b­à0(*øc·O8Ÿ±�(G~a� «d�t†ub4a®“J3ªe+,†À#_ë�nã¼Kؽ‚]Ëží¬MÃcM"ûä�"Ëb“|Ì{¼#¥µ­šïë82ÖÃjÿvÿµ »Ç!<÷NÞ¿Ÿ&ñïôM^X„܃WÌ”‰¦°ûî�?ý¤¥:@‡ä޳w8àpÀá€Ã�§Š,}fèì­[®N¿ÿîJ5`€‹ºtqÿ^êÚÕUjòdׯ¸î=zä÷z~œ1ÃU¬sgíwíÎÓò%¹M”)ß«—Gþ�³gÝuG­\éú°_?÷9ÇÈð(kuÂ`�‹A ­^q¾ŽÇOžXuu�=ÛÝþå›7-Ë»xÑ]N^›Õm‚¦lØà®3kË�¶¿™4IË+Û£‡G¹±«W»ËýñçŸîú Œ¸Ó9X²{·».y¤J˜ÊÜÿ뾫3uÖ~zm0më× ¿jùC2 ñÈœa°–¾w¢>N¶èÐÒv�Þå.ËZÚÖ�[Ýifìƒ[+‡vÍÈîX/\¸ÀŸÚð²ø�ƒ‘› !¨´º…]®l¬Œßƒû�W=qP¯7m˜y½é#ô2{7ëeZ}$Ò ½ª§©GO»\ï§eš”VsÄñ�«z»è#êÐHÔÉϼô¦ßô6—Í0/c•úA6Q×êz†vù¹b¹\�yŠëØXœ¿ÛåºbÕªgúé£.×°Î.W‘×ôqùѳŒzvë†^ÎêÿQË}]”ï×VMõ\3Ÿ¨7¸ƒ^ö“÷DZÿïõ´OK‰´Íõ´°á^•}ãÞ�9J´V#¯è|zôг‡ª9D^ó*žéƳž-D¹ü ]®ÿxÂ_5Wœ£Ÿ£ú4b¬æºy]/7i€W¶­„¾mô6O²Õ„kÃ2½ ÷ÂÁzÙ‘Ýìõ‡Z›Wêíøãîk9Ò§d¿��ì®×۳ɻxã’"¿`bï{Á»t`)¸§ÞŽ)ÚmZ)°:²Tù7E½reŠ÷¾DjQ÷q ´n±¨Îh­àÊaž’ÿÑ‚‰Öu/�ÕËMèg^®NAQ¦bóüÈL]ÖR¼Ï»Å2¿Ù/츠½ï±þ80í€{hû§ì×Ò¦èNc‹-­_rýÂÙ¢CKë•Ðs-*+ݹtÇÝþ¡Y�?àÛ‡nw×»qò†KŽã¼´ç’lÞcß'Y­ÎìZb é‘É'+¿[©åw‰ÖÅõïc±æ˜ ®.ÿ뢥¯lËu€Ô¤I“ Ö2X÷p0ò[7/öà—+G4qoù›ã�-œ;¥ß·K§s]®-«ôü½[ôü°¬ƒôV\®^-EûVkµlX޶ӝÃ׻̬�ï늺2™åº\ŸùMÊèùQÁ»}®_*ÆŸ#º¾–ï±ì/¹\÷ï‰ë»FÎ…x烰þ�i²œÈ nkç>°³–£²³6 �5 úô�"ÇŠýñý:ŸWÍSs|GÖzXŽ",ÿ‰l#Øý݇]ì¦ÊU|âD×ÿ ä-é ru_¿ÞuQ‘™tátü‚%»õ‚íÇ)ïpÀá€Ã‡/6ø³öÙ#–åZrâ„«Êôé®èݺ¹¼Œã30ñéÂ…®=—/[^XX€4Úâ—_4!}ùž=]eºww ì:ÐF›)S´zïó˜…Ð1~íZ÷8ØúÂàÂø«Ú§�V¦bïÞ.ŒÕбûôiw{²€è@°AÇ÷À¥D‘ t`P=ãõÔ>¶ç7œo:F hD5Ðaw¬Qt´«¯8#HݵA¯g6T~K”ÁcI�Jˆt£Íè·YzÛËgz—PA‰ýÛ¼óÍR˜àCô½$f¹.×·µô>Ï7/c•Z8™¨k%œ\»Po{þ— ÍË�ŽV-Z§ãƒ­@"Q¿V~ërÛÖè}ª “U�ü Dù`€Rkp-@À‹óÄi꾣ܼ_D¹°nÛ~,ÚC›Ý›é­¡}¤á·dªž` ¤�誧›I�MÃâ" êAÀ  ÊŠTaØŽuV¥‚K—ÂúÜqþÏÞUÀ[Qtñ#)%�ÒH ˆ"%©„t(© )"(¢|€H«¤”t·” %‚tÇ£¤AÚû�ÿΛ{çîÛ½±¯€7ç÷»{w§÷ìîììùŸ`Þ> ®®,ýcoOT!�ÌWÿg�ö”…Ý)�ëçiÇ/ÚTeóÇu¹îÝ ¼ÇvµD=yäýašÁ\#ËM&Ûul¿'¿cƒ°ùQ�òû ß�u‚«!WÃt¯‘t°k(wÿ»§ù`¬idP¨à¸eFÝÕ_­vM*;ÉØÿñ5–¸Ú�:FeYbf­™FC2ñÊœ~°‘>£æ ¯t_Ñt`- ï=s¼yìêšãÄAs®Ë5~€h[x£TxÖAj/�JŠö­;ÔrVûxÎ |–¿Ë¬J‰´–E?Ré¾dØ©Ðѱ~Ø<¼÷¡Dþù“üqÚ§Ρ!i\qNUsË— üÆy–ÍäI˜/ï=¬Ñœ’“ûÀÉzXŽÏÉÚ4"Ö$è?ÐwŠ+þžâás JB¨ëaô#)<×D¶èÿV’c¯®D,Ó€Eþâ²|¥öìÙ®G�º©`¡ ;,œÖ ô|t9ÍÍÍÍÍp€?›apýäÒ9v5açN¿c�PÌܨü§5,O,<®«ÐàÖ£G©óÔ©aÚ–®«ŽqЮ½§NQeæW:°UJ_¼~�šrÌ‘Û÷îQ¦T©hò'Š¿ ¥vu]Õülj-,(›•"G‹íý.¤_˜W $ßÏ.ªÆ­nÚ¼ý6Õ)VÌÈ“›�Ç�£gدŠBjŒ$«q: gÏN½ë×7Üz)UèÞƒF|B—Õ®«ÐïÄ7'RÈÚŠÿ\|#gœqäpèô¦Ó4¾øxãØ.yÍ(r]åt¬x”Os–`i¸­z.·on†);cúÁ•¨Aá–Ay¶�xî¤ðá,SU¿úåjqóeŽøWöö�$i˪�û»8àe~™#\Àïñ"ˆ-‚:šã9Œc‹ëïº ÿÒþ‚Ë–UßÝ?ï#Ê–Gæˆà¸ðŒ˜"‰8 ¨hwõBŽÀîqìüÞ«qà* .“̤òJæÁí ÎÍ{DæÛýÃ]B¥ìì“ÿ„o·]sÆ·RhGõ—m×nÝBDûþ$B¬ƒù<ÍØÅ<�ë™§ú“^ÉãIŸEU†ÿj� DŒx ðs BÛ9_ûN·òú£>ℌùÅs}�µ ón€Ôªk‰ì*© »³"ðWÿF`ç΃9†Q ç4ÞŽàš .ºà¶ÂÊ5‘]=_éÅRˆsAü‰éø*iŸ'}Sã9‚Ë_÷œ –ŠÖ~c×piÒÙ·ë+ÇËM_ Äʰ#ÄçÀ3‚û÷G $]Q¼˜‹h ÏfB�rø\Ç*IÆV1— ö±90�àÖK Œ.R­·jî<ÁÝŸJp·Ò†ïÉ?V‰Té"íæ51'ÉgN­ƒ}Ä“iPL"†Ë˜u‡�/Íuœëήéx~Cœ ̹vó¡q„†Ìöô†¹.Êàr Ôq QÓŽb?º¶!ëBhb™‰F÷eû”¥’_–ôÊ” SèØ¯ÇŒ´Èp]åzä",过ÿÑ[ß¼E¥º•òêß×ÁüFói÷ÔÝ„X�î=2Öv®=ÑŽt]…ýÖ{ZSš¼i°kÐÝ«wi`Ú�F;9«ç¤‹È,’ý<ë£^ê<|£YÎ!Vžd˜à¶Š-4,JY'ÁuU¦L™¬3L�9ŠcÛ´…G.±&¬j¸RƒK5¸cÂûß¼æ�Á§±nÀúA’únv$ÛÀ¿Œ•àϵ ZGîK÷?òx ÏvómÉ牮\d7š9¾¿ï%¸ ‚»¦Gü #ÖÜ{©¤ÆmÀ3�güqÚ§|OªîPážñŪ¾Ïn»¦ŠsêÖLÄ!S];ªnÍ1NDiï-ÞEø™ï/YÊÉ} ×Cø\ t=,ûSy%Óü­M#bM‚¾}§Èqá_ž+ö—1e°ï�¢b=¬ŽAŽÓÉ5QÛ d¿Îœ94wÿ~wÑ—Ø¥q –_4a9JšD‰Üéæ§AÅ�Ö3÷¯�54444|qà‰:äÉñº�Vq|‚1Û·Ó¢ƒ©aþün ÀÂ6Žï!iÞ–-tœÁPËrå(i„Æ~øba=¨\¯^Ä–#”�ƒv/ëÚÕHS7-96ÇáóçÕ$’@Çê={è›yó(·W‡c\¼ÌAÓ3§IC>¤]Ô‹­/è4û½S¤µ«TÉ«õ  ãÖ ö2jѼ¹Ú„{ÿ·½{éë¹s�cô›"qbŸ@Çï‡ÑW3f¸ëcÇ t°5 Õ羯ܺe”{%sfjP¢åL—Ž®sl>“ׯ§ÔÌ u\*ÐQž¯U�,YŒúV›™wyžWÛ;¼ô0M¯:ÝHÊU3Õž^›v\=q• Œ¸rôŠ‘÷8NǪžoTíÿ}š?âr‹xX”·îIÔø3! … pÓ¯BÀUŠ…½]†xF…�µR/ˆ�f¾�ÌëUX€`ÔˆÓ€2œÏûË[0†¸½?mÁWq{[2¼HFŠÎï±À�…ɘFTÙ#oqwŽà»+戶îq'ûÜ‘(T³ ðeacòÔ r¬ãþßÂdä©�vo±P¸h2àóØ`*Ãñs2‹�TÄ™À‚ºé|.‚R§Bpü[QI–)]¹äÉñoaóyÃrºØ^øê‡�xð“�`¾ U  R<[õÃ1Gê},€O ï½þ|ÍÚ€ l�€_ Kl^-0ßå} éO:) ã7‰)‘–ò#Ú™…ˆ?a?®#À"éFì–·’ŠV}o×.æ˜5?2ñt?kkØx+>'A¸÷,\å‡/àGØ@°G Â) øò„—Άxbܤûóâþ”Á ¸NÂHÊ‘�(?Ã*Õ+̱¶‰˜'£–ª9a÷  ë§]–B šSG8Š8'v¡„o S­{»–›”ü I�Lõ™_…ç ÌV$ãi`~YqܪDpiß´!š9RÔA<Ìv¤ògÊDý>%Û÷ äËóã?<Çâž0Œ¹ôFŽÅÏ?„at—ð¹Õçç·tÁO äY“Sµ1Õ(kÙ¬2ÛXƒ!úޱ;¨ñšÆd„¸+DÒN�‰æŽ� Ò¶¬Hôû žƒŠMÝv€UrŠõ‰*ðF©ð¬ƒÔ^ä;„ÑÏg@IDATó1Ôœù‰ëÁa(ŸÅS q³Vx>—<¼‡wâ€j3¯¾#öÙîÚÌ`q1QrܯüL—󮥯m� (üqÚ§λò\�øB Ê9ˆNò»ë!(>€ÞáõfU±q°*0ï±VÂ5ÄÚJ’/æ4¬�±VÆ:ÓŠœÜNÖÃjßÁ¬Mφ8[“¨ýÉý@ß)²<þUEƒÒü½�ë$•–°æ„¢’©ë¿ÈZ«ý†÷š¨mùÛб˜¿÷ßÍ“‡>d€£t–,ôŒ¿Jœï°pZ/€!é"šššššn<5@‡ûŒxçâíÛ„æyR³’i øø£¼   üëXû¡ÇìÙ^Mš�¯L‹ƒ L}\«Vôl\ûÒ@€Žù Ü ]ÎR ¦&eÊ?‹îèæÝ»T£# û É’QÕ‚},C¡flyÂ.©ÜÍ™�d4ê6k�Sž»+„î˜è0—5W~õUêlc�c.ëó˜OhrùÉt|µ�VÅŽÛ–yíÄ5þ˜r±@õã?¢�ŽÑG�ËåØÞyhAp ÁˆJmöµ¡d™YÊãp¬j[Q¹?a @;yz„pBnhK2[e ]ýxÀ1[øÐƒv2B1¨N–RËíý{,@ÎE„�&úKù< ýøcÀ�k61Ãl¤µÆDW t�ñogÁFQ>n<æ@óî0 Rín[‡gÒHvo ÑŒºA$A€ Á$Î׎>ªÄÁÞ¹(7c³8o«ò €ÐWF7@'w%ù|Ã"¦Ö+x’uä¿U n\k^ò@˜š> }äë ,„ •?ÜB€‹úñ«Dþ@ÖОÈB�B¥ù­H“š{y `B¤¿=²—è}†ß¾)îÏ™ÌChó› v(0æÚ-øƒn,ÿZ±+ ‚Õ@©æz8V6,�{V n#X{¾µØ·ÚJaXź,à�eU"¸´Uó‡Zx@B°N0å�¾ç×jùw=¥ ¤.Ä‚ùüzr¬÷ÀŸ¬|Ϙ }Øü¯P›…õsÌ%<Ç.BÈUªçj¶¬á÷ßw N<5ù\ì›·z Mm�Ù’K¤·…°B¿@V&òþü²1ƒ“ý×*þ¶’%O%ÊJ¬Zó#4«%aþ„†u‡þ2%|ÿxÎõnó:ÀV�j”•Ÿ?³fø°ÿñ¼ß[”ÅÏ‚ÓË9DæüÁóž¯è¦ã«ŽÓ´ªÓ kŒA¸ïݺG÷®ß3Àƒ‡wùÁ`Š, cû˜í´ø£ÅFæMóMÍ)c±Œæd÷1ǣˇù寔·^^ª=“8R��…F2¦ ã¿ââæª‘‹ê/¬¦…ãvÐ’ÖKÜå`Y›4cR£î½÷Ü届. £NA¢ý;ÄZbýßî!´#…½ï·%úr¨w‰°fÀý« ¼e)§ë Yÿ] àRMÃ>ÀÎüìa`ER‰@æa>ǼnEPhS]ätÅÊ­¬JY§©ºPjÀšG¥Á�¸dÐUUp�ùÑÁŸ`ûÄ:–  )ˆ^+!ÖxPtÁuŸø›PtÁÚïHXÿB TeQ[U™ÇXÓb?wÒF#Ý×¼çä>p²Æ8$³6uº& ï;EŽõü)þ.Èç½þ–yVëZ™ëaÙþÃ{MÔ¶üíïáoøô¬Œ˜"AE½òÍ€…ùX6§›�e9ý¯9 9 9 9 9‘x*�3ƒÖ3(ÑÝJ˜ËàVß7ibdUìÓ‡î²Ë%X{,êÌ+pA0þÁˆtúþúfŠÍ_+»u3þ/°ɼ͛i[–pqSMÖJއj*Dï³åC2f¡¨ØwÁZ¹k—ÑÆÜ +sƒ\¼€F¶háÓú¡Íøñ†)”mXªMek PûÊ•©VáÂÆ¾ºYÅÖ)½Ù:E’�eÈ’%´íèQºÅû*¥e÷H Š§ê¯¿îN^Áçô-Ÿ[ „zªV ¤¨ß2�î?¢%­–ÐÎÉ; .@±âÆ¢"m‹ò¶ßJ©r¥¢O|ânkX¹Lµ&×¢W±ä—iDžtéÀ%ª>¶:½Öâ5#mÌë¬Õ¹ýUú¡iWÄHÃfxîáôÏAqŸ¸mvÚoOÉ_’'cµi6J’×,b+‹6ÞšàèÖpÉ!šÙZ‚¯)ß ×Wªpå °ûj˜½ÆwÈa7%úk“çôâ0n”ûU¢�¾"z3ôƒÜ“+öÐOÁ„âãó î‚÷@ ÀETmwhßCƒî‰@* ƒ�*íWÎeöœÈW·ƒ Q÷+øÀ÷Ep©×JNãs†+";ÕKh®¡3ApÚº;QÅzBbÎW�¬ˆØÉý�‚F;× §�±ÖùgDˆ˜ ì¸&ÐjÌþ²ÈmQ^¸Ú��î,@ò£ùnGZI—u?"êñ£(ìöÁ}Ä@3‚Þ‘KˆJT´oE ˆ¡ Áƺ�Ж»Â¾ÞÐn ZõÂ\¸yÚ¶Ö#PÇuƒ–¾A‚ûÏ„•k"«:þÒà* hîñlˆ#ß[©ê»”°p€¥ƒ$ÕšE¦ÙýCØ þ@g&Uû÷Ó¾Dv5—ðÃò8�æ hc‚¦ñÜÒ·�ØŸ°&ÔBBzmU—Qª¦®W¡  ðijä�Ìü©Ë¯OXª©„¹Ú¿é³7}<xC-Á爵ô„V±™À{€Œà æÍˆ"i•H{f÷T¨P¤/ÏËsÇzZpŠç.p uQ6ž·wjã)â Ýtóœçââ]^sRMšPj‚Ñ8@€  =Ó÷м÷çí�‰—оÙûŒ6”t8Ã%Óá%l‰Zm:%Hž€º\éb¤…ÙðR†™ÓÖ[éêñ«tûÂmž«ÅúÆб¦ÛZßg½ÑdÃ_Rö·ù…fCè(Þ©8qŒÚ9i§á2 Åárª`Ë‚ÆúGºŸ27sa÷ZÜr1�ÝzÖ=>Y&E¶”«V.*Ý­4ÅOÊ;Š ì*Èsî½’•„‚E C¸r‰ë¤¥ûð¥®ÙÄ»¦êöP ¼ÕáYÉvc®_ËïµKç<`³�[>YOu=Š´v 0býdEª VY¾3Ìõ¥%,Ø~ 1çzÜ;ª ²Ttð'Ø>ÿú�×r n`NÝÂ×ëÞÝÌ#¾˜§7_ʪ»Îuç½-"Ñ'æ<¬!쪄6°v¨P‡èV±£`ïƒð¬‡å‚Y›:]“„÷�"ÇŠ<�X£ÁŠ9ô7+n¨u°ÙëaÙ_D\ÙVdþ› ó±ìÛœn>–åô¿æ€æ€æ€æ€æ@Dr Fɰ`Ûºtãáw™c‰Àr–Ïó`ÇÓHø´>Ï–ÇÙ $A¼x”&iR‚å ¯Ñ+zpû�ý“?¶ìÈP4C@n¢ëž¤±BX7p}�µ´™„Üø |s�И×2ÜBèïÜIQ–yY误@ÚõUé£û„•„ƒ8G„XŒ¼� 'á"ÿ�>z«å¿Õ2˜0%�Z"ÀŽk\_íÍ‘I°~�`—¤)‰à³‚I»8‘9Ý¶æ€æ€g1ÿÀÕ×3,ŒË”MÌAvšÞ�Ï(Ù#„†°æØñ¸\`^Üwш_áýãNˆ/VI3%¥OO|jXiØ�Y%º” rýÊ.«Îl>C°ŽMW0]Àë(¬i (rýÔuJ”&%͜԰î°ë7¦¤;]iþD¢ãš`íŒj°,uñÚ1 ¯Ÿ°&~¬×Ìœvº65·ó4?­ëa§€…ÓzOó=¢ÏMs@s@s@s â9 �Žˆç©nQs@s@s Â80§uUÌZÞ@à ¦S ZñV ùŒ¿Àf‘>H>˜£³4bôÚ4\äOÑ)`á´^€ÃÒÅ44444 h Cßššš�tøËÆÞƒBàôÞ¬cx—|ú� ¤bvgçé˹³#¯VL9ÏÈã`Ä·S®IL9ψ¿Cï�q9Tª4”ãŠqœ2¤�ÒùšO7ôÚôé¾¾Áœ�SÀÂi½`ƦËjhhhhh Cßššš�¾g‹ƒñýE¼‘— •W-̆mÃ�ëý\Û !j ±Qœ´‘ubÊyF$Ï"»­˜rMbÊyFöýò¸µ¿±ßFZýÕjŠ/6¥/œž 4.@¯6 ,ýàôƒéÖß·¨Ä%¨lŽb¯Is@s Fq@¯McÔåöy²°ðYÈGf�=|äê,ÍÍÍÍÍ�ðq@á㟮­9 9 9 9 9 9 9 9 9 9 9 9 9 9 9ðÔs@Oý%Ö'¨9 9 9ðDs@OôåÓƒ×ÐÐÐÐÐÐÐÐÐÐÐÐÐЈ|h #òy¬{ÐÐÐÐpÎ t8ç�®©9 9 9 9 9 9 9 9 9 9 9 9 9 9 9#8 �Žq™õIjhh<±Ð@Ç{éôÀ544444444444444¢†è6Ö†ÓzQsVºÍÍÍÍ�§…舢+ùÏ�tåömJ–0!¥L’„bÇŠE=G}7=¢S—.Q‚xñ(uÒ¤7v쨄ƒ�,;B§ÿ8M‰Ò$¢"m‹8h!°*!kCèÜŸç(AÊôjÓÀ‚€š[ŽŠ±ŽîCtûQœ¸Díz›GÜñ�«D‰“=Å·½C–Ï":º—(m&¢Úze…9¸u�(Þ³ü‹&K'hhh¿oMDôû ¢�ÃDׯà9!Jù<Ñk%ˆÊÖ$ªòžHó®}GÏÝ¿Ç×,ÙÓuÝ|N´ë¢gý¸LÜ£f.ˆêØ€èæ5¾&ŒO˜F´žË.ž"JâÚMø-l]”­„=Ç�N³²<Íÿ'êVkDTÿcïñ èÀ¯¡‹gEz~Æ\»|ç]ÆÉÑa¼}ýQ`5[ý�¨d%QvXw¢Í«ü×û˜Ë•¨è]®-ßËW.½”/0A²,¸æÝF G½â¹…_/dtý �BY³‰({òÑ—�ÃÖƒ$CV¢‚%ù™ä{ Vcößu%ús]Ø~Í)›'®õÌ Ó‡-�n.E”è9W3á%AE¾‡/ƒ.¼ÄÁÜê1š(_³È¢z…‰ön#*S�Oþ—f¶ÃX½�AøZ"{Áî°cž1‚¨÷'"`ýG_Ù6i·/ݦ�ií¿;ý]Ê× ‚ËóÅÕÖ$`J’6 Åy–_Øš¼8àä>Ø‘hç&¯fŒ¬[0×T¨MT XØ|¤Ô)H´Ñ[5ˆ†ñ=•t÷_¢.ˆÓgñÌ=†ãˆþ×D–--íÚ•Å�O§/_¦F—ðT+X�>¯ÆÒ51‚N²U…$5E^zIÿS7l q¡r¥OO?~ø¡W,Ù¾�-æ/¦F¥J…V®²¥J�Ù³i÷É“F« @¤¡¼EþÒ;ŸP¶SõêTå5^‰F2Ex€SxÚ�hµ‡µ,·£±+‰Þ(o—ûd§ß»ËšÃIˆñ£o®­Z@ôMkDümŽjn¿-,iìKEmNÉ4,°æé¤Q{¢/¾�Ú¾#³·¹ãX¨:åõŸÊ  {UúïQ«*”Bº¼ž­yÊ]·ÄSrñ~¢¬¹=Ǹö5ò�8äIÛÀÿó§XƒýuO„уgyޱ·˜ÇñE#OZ}¾_þÇÛðÒZztLÙ @7ôYýe¢c|~þhÚï,ø{ÃS V\ÅRˆãê|>ßNöäÙí}Ù„hÑ$»\ûô?,„rÉ4Ø7´/§æ d  r‘bæ¹ZNîC¸9™A‰ü,DUzI€3þÚË’ƒß™Ê½Ô²¢çž´« A#®#À_ôà>Qór<çpYIXP‘ç)ÛÅ?ž Ì�˜'[÷`�gO57¸ýaÿc€²7Q|®n»)@yµ…Èô¨}ÙíG6ÐqóüMœn°Ñ}�Ùuèå:üÀjò–û  ë1_û¢÷Û2@:Ô»ž'ÜßøÇ½�{<*I=×Í<'I9½C‘¥[3ßmCycâoÞïFÔùµÐ¬‡òËŸ·¢v­UüñÍ™ÈÏ}ÎÓéšÄ̽@ß)P„€%¡¤Nï‰çV…=~”©þÿŸ”õ°zȵ«ÿ³ ¼„SÀÂi½ÀG¦Kjhhhh°²›Ó»žvFDØ!iå®]tö KF˜j-JI$0öÓ%ONåóç7öÍ@,0†7 »ª·:þ½Ÿš�Eç¯òWS>® K X6\ÿ÷_:tî-bk‹«·n‘:þ½w�ælÞl”W7«öì¡Óÿüc$Áš"Y"o©Ež ¨P¶lj:ÃçÛКTýuêPµªW93Ð�ÌA�Ñë¦ö|¸}šŽI!¡ J¦T©ãÌ‘6-ݼs‡vŸ:Eó·l¡l/¼` t@ÊÍ ‹•Ê�›^L�Ò%›Ž¢ è8´ø�ÚpЦNHÅ;·�ï䨫‹ŽE,ÌìÙRhÿã j°v5\†À¥ÈÑ}ÂÍȾí,¤ã[:YJßçø¤æBSÚe QK‰JñùƒvþAÔôMÁ›ÄÏ5lOTô-æC*!ì„ qlÁ�Ãü�¢Îã°ýû4[™d#�æ|­¦�è"f Ðz,ÃS¬5 �;m“w»ý?cáv(°¡8„ã 7¹Ž ä _ÄiÕE¶¸Ž½>öÃEÏæãܱüAÍχ$£çî�GâÞ¨’“èÜIOZ¯qDï6÷;ÝûºÑìÑ¢vó.¬i+^{–Í5íè�ÿ4�|ýÅüÙ´R샰ВԬ“·öî–5D°^Á"åƒOž¯-¬`]¡€Ó ËE €¡lyÔ\Ñ'úÁBgÒ±�4_B~¸”I�V”Uëµü’()4ý}†hÅa•‚’¥ù:R`þ¢b8¶·nðóŸLq¾ü:߇ޯg¯–tHP%Y€K™ŒÙ<Aöœç{lÅlJ¢, àðEÝ[Íï)ñ|z¾Wù¼#‹îÝ!Â=…•g¹wÂZaÓïÇU„uUÞBüÌm [3²=a{ ›¢�ް<‰ê”`ïƒk—‰Šó{ôêâ>Åþ~.þXÅn©öâH�yî?ðW¼f�'ëDæ?4Ö¡¹·™«”÷HD÷Ù‡AX–�Úô$J˜XÌ™Xçl[K„ù d~Ç!í“D¿ýl�‡üȤ¨âOdžC m? çétMb>'ï(•}ÿ³Æz’ÖÃÁÎ{f¾ú;v X8­ço<:_s@s@s@s@s@å@Œ:ÔÆ~÷Y³hý�FòÜÏ?§T3ÃLf ù?4iB¯dÉâUÔ èøãðaê:�%6L5ØÍÓgUøkÜD°ôX»o•Ë—Ïmb*bÂE‚43?ý”àFËÍÚ´‰F­Ò¨ÔÏ=G—8>H*þŸÓ¡=£T¶:Æ|Ïç©’/ ã7�¾µ–É‘. jØ�žã8$*!>ÉŽ'¨Â+¯¸“U‹Ž/j֤Р¸ó¢k'*Àƒˆ:·¨k°@Ü<4*IÄ^Ì [|<˜5ä!<„P­ ]ŸVR…ÜëÎ¥zAœiÍ|B@MiåàÞÁLøø‚»/Uhn.ÕÇH@0Šj7¢×ÈÝöcü”Dp_7 ܧƒ H�¼^Ü×0CÐ X¡X§ADMXÈ‚ûŸŠÙE:ÜZáž—.z`Í3s”ˆWsç¶¶† „P.ͱ€>>ƒøx©c)ζҵCràm¼ä¬�Á�…�µ—ð+Vv$Ïù“Ö½^Ê®¤ïôXX?¦¯(³` ÆóÛ—�¸u­à/´™Áÿ@HÖƒe4ŒU—Ol”Ïâ™×¬,éÃ\fó¤I‘Ú…Á™>3—°>¾p–]âdy˜G»óý¤€¨ß)paõÓj5×{òwDý;­o€} y¯Š£Ç{[ŠçÖËDœ+�ÜÈô tÂ¥È-ì}°éW~†*ˆ1Á‚–Œ*ýø »¤ê.Ràzð#=¹ª{œÕ§DœOnäïdØÙn³À7,é`Q§ÞmeÒyÀ³…'0¯¾ÓŒ-\ù=•Uü‰Ês²êëI8ψX“X�{ iªû4ë µ½'i=ì¼§žg ûN §õ“.£9 9 9 9 9 9ðÔ'9ÖÅxv‹”‚­4>ek + èˆ'Žá‚ –ÙâA¥wÙuÕeŽÑZÅ®««cÊúõ4~Í#md‹« §äèh?aíb7Ri88,VF®Xat?ºeKÊÉ`„$è@, iÜSp5%i1»®꺪aÉ’Ô¢lY# ¦@ÍØšãÄE–ü1�b·W¾,3ŒB¡›è:àêáà‚ƒtfËö•ï¢Ì%3S®š¹hí×k-ct웽�î\½CßÈHG–¡³[ÏRÚ×ÒRÁ� Ò£{�hûØíta÷zá•è�ŽoP¼ÄñÔS5ö÷ÏÛOï>ôJ6é³”£j¯4óA°c5×Ïq0@„¹äKW=ˆc€8Áðüs½öCã‚TøÆ‡æ²/Bœ‹…û•3'X¸À�\¾ÂB Ú—°VpË î·ëáôÖ߈ �Ð!3_žº-…Ÿ~sÿè± ¶pyÄ®(ÌBÖrµ„&?\"A[|í9Q &ópS‚PÄ—AäXo!8_áé,ç+Öeγ@Ej½Ã}�Ù¿>ÜÁ­b‚ ,Üca|hZê°0‘—pK! ±Dàr ôÕ0o7hÔA|Œ ù§�‰kø G*Õ+€>w’…￈€ì/å%Z8I\ \ð¥k—-pÄwðQrˆ¹Ü¢mX«Àj÷Üù€ÐpŸµÍ£ý~Àun¥fòõT]Œè)\s 82xM{é¢ç½bd3»tâ¶qΰ^�`îa$°ž€ÿwÔ…kÖñR];Àe\Ç9!ðdója)€†_w¶·ˆ¹�ço3 ÑÕ{̶’EF«Êâ>Š_€ˆdE˜/Š²Ð 1U —qS¬Ê™ÓP.¶ èÇœ1“ïW3Aè á'è·³DiÒ‰ýðl%È€6&® ÊZ.«»»S¿Ÿ¢‹{źëîÕ»´ª+¿ˆ˜^kþ¥+ä}sæ~'7%JÍÌbº|ä2�XsÂØÏ]‹ÓÓˆt#AÙœßqžÎnã�©À(NñÐíž¶›îߺOé ¦£$é“СE‡ŒóE\�ôEÒ“Ú—Òœ×.Ú=µñ]Øu�îß¾o¬›²”ÉB™Jdò*‘ÁÞãû ùBŒÏž#•T°sù¸Ð¹eýI@€æœ�xN7~ˆ»dGÁ®ƒ `‚¶%ÁÒëÌ�xתÓnîÂ;bÁDOéDI¸~=ϱº‡1æ5 ;0.!±ÁRRÆ3¹r‰ÒˆônÃÅ»nÝR±æ‚«HX·5à÷*À~+ŠþÛçªùªç"×¥Ùx��õîaù[„?¥p?€×V„yk(¿à½‡µ‚·§Ï¶tDÜÁ®‡Ã³6 ïš$<ïpOº=D|¶mXËÄËS¤DÇzXI°×D­è¼÷íÆ�†«îfó3½…â§Ú¦ºï°pZOí[ïkhhhhøãÀSt<àUèbø=–Ž•ÇŽÑü¥ß”-~ªQÃòüƒ:rü XÀýh ƒ°\�dt ¹ òý)[sXï–õýý tÜ`×X54x€¸uèhÂ`èƒÒ¥©Ù›oº»T�Žzo¼aœãƒG� 7[ßrLIv@Ç)v©õÁpþRaÊ®¥&¶]ÅËŠ>þ£ èÀGöŒê3èÖß·¼F—"{ z>ßót`Á�0ÁȇfJWŽ]¡gb3ôˆ¥H¡”±XFºwóž[à€dï-öðN–í—¼ݽÆ…ü#w2V¥ùpït,ŸÅ›C?ª�hC¸ûim�°^<>x¡­ 7XV„�äÏêx4àÕ2p;� Ó‰“ª©ž})À|µ8 ¶;sl‘w…`ÚSBX^ü¢¦°ðð;¡ í�*Ü:A›òàNª°À{‰(ñËl¢ÏC…ßÏe qî'P’¾ÂUaº¹®tc =²äô”€µ>ênßô¤©{*à~C\‹©q$dºÕ¿�Ö(„¨_5ÚÖæz„†-ð¾&#,+@Ъ‡pA:v«q ô_ÿwÄE—|ô=•… U‚ Ü{ˆsðrA1lÇ~Ëæ¿cÏòŦo �kÂŽ¬ÁÍ•´„q?báîuÜkp‚€åÒÚAºO‚eÀ7ðÐÊí‡h=¸-aµò‹:p[Õ¡_põeé7R�Ás>ù"€G' ·uË�ø*é;OjíCh4›…Cvtæ8ƒ•ÙD.¬#`%©õìž1ÄØgX|°pÏÀHŸ(ƒ é?O ‚®z?¾Ú�þíQföŸÞ÷&Ò*Ê{ÐÊâeH¸ƒn… ±0s(ÈìŠG¤:ßXÅf&³€Øœ�c€ÍMÊxtYó9Ü«a^á¾Àýa¦@=æzÁÿ÷ð?ZöÉ2ús4_Á=åïÅâ#ß=u7Ío4ß(  @*B<ëzµé«´cüwK±âÆ¢fë›Q†¢Œ´Å- î>všmlF™Šg2J™o¤±ÿÖ7oQ©n¥,kN,3‘BÖ…Ìg'?3Ö>(8ðù�tûâmÊ[?/�ùã ];yÍ«~²ÌÉè½¥ïQš—Óx¥ãJ!+;¯¤­Ã¶º•jÔBE?-JT œkDS°÷Ö2XÓ¤ÝÂψY ë#@éïæˆ}lßç¹î›ðžËÄó‘öËhk¸m3““u�9^”¹MõØ—E¦úŽ@Gy+¼Žù„ç°ã@±¯n%àƒ4V-Î0÷Œéãqµ'ëã};csؘ;ÑÁ'}8‡r‰™^+!ÖDª{F+þÁíWï6"^—¹ ¸°kV$Šˆû ØõpxÖ¦êýìš$<ïÉOç kÿ©ejØÿèX«£öš¨u�÷êÌ™Cs÷ï§Ø<9UæXžrìOüãØ9,œÖó5�§9 9 9 9 9`æÀ tå8ãܘ¸s']à€Ø*}Q¢}jy ¦c?X c ðßÿáCãñ"zÕ«çnÒ èXö×_4`K¶˜2¤LI_שcĨpW b'X cÇùvÁ£‡^uëR©[WnP.n ña´á@ø¸C0^³6"´Þ¿l"À ¸„z³ 'XNòëdl�å<×Â,€ý²1ƒ“E+è#CV¶ê˜èi}çåÜ‚�úNdà‹ëDA ßvЊ â1›µZ;ÔqŸÂXÈö�›ÐЇË2§ñ9 ¼@`oÐÀléÂuq/ÁÅ[Ѳ,8Ê%âM¬8&„HpɃØÈ/(Âs<‹á|Áž�òYD­,„�6®Á}W‘¤B‹ß*àº]=s:îÄCÁr v´r®GXßo d íJz§c®È   °C%hoÃZ óU¾"‚¬Ï¬ÕØ `j[“ch,–U°ö�¥‹$ŒõS¾�aE `¸ä0Ç4PUŸçWX™I×1ßue­ô~¢Ü«¸Ÿ#ŠpßL*ZsýÇ 1 7Aû:ôûV[Üÿ�˰ ï <#ÙùùÁ< 0GÎîÆT>ȼ#…ÀÇíû°%Ö—2'bÿ×üo ­ï½Þh4užÔ†eÖ{¦í¡/ÿëîÌèHþbrÊ\:3Ábâ¿Ì$¦$é’,;vMÙe€EÛ¥ŠßW4òÌ?@§7ñ…bB?°*½Äfƒè_¥"íŠPÒLü0†Ò¸¢ã kV»õÇÕWih¶¡QòË’T¶3>”$Ð!�Ñ_Æâ –½3öu?Ÿ˜> ù”Þ¨4½Út:¼ä°‘ëלÕsR¬8±èðÒÆ•,2J|Q‚Ê}[Î(3~üxú••†%X%O`kægŸ}6L•`ïƒÊ¼€0ñ²–‰!{µ €@%¨+Ïá ù}‚E‚³qŒw ?²òÜËOhñƒ¬@§ë (] –Zý°aLªõÆòÙ·Þ™¢¤Øªï¤È¹A-#÷K©sè²ÑÊz×°ðÍ/ž]¸wDL6I˜g0ßH‚ O([`M²ægaY‡¼aüœC‘BRtðÇIŸ°ô}›×/ X1ÂJóõÙ#ɰTo±ö`”> pIàC�×ÅüŒ4XÜæ/Ì–¹ÎªPŠ $çwG†e-¡|Þû ØõpxÖ¦êýìšÄé;ÅÃ-"©´�Øaˆ!fGѱVÇì5Që:ïµ]¾œ†oݪV5,;`áÑœ&3³w+r X8­g5�¦9 9 9 9 9`Ç�'è¸Ç’È_Ö¿qÜ—rfi'¦FÖ¹8(¶ t,ëÚ•ú3p±œ |LÁr!sjñ1it àx#¶t€u…¤ìŒ»pöìôj–,ôZÖ¬>ãrÈ:øèè1{6­cÍŒX<Ο»t¡ÄüÑ7àçŸió 4‹ã|<çà tÏ•‹jXƒ¼•7/u¯-¤?v@ÇÏ Š Y²Äh÷£òå©AñâÆ~ èðW~ÅW_Qü¸,é'­ûfýÖý7£•w¦¾C: â›èç–?ÓŽq‚Gv@G�ƨæÄšôï?ÿÒ€ÔŒª/×}™ê̪Cþ}@}ŸëkX|4\Þ�²K•Zу×vy»å´eØŸ@‡“±ž={–2é&í³Ï>£! „Y´êñáíe;7¨�´®AN4пhäÑ\ë<˜…[D[ت ‚ypÃT-·øðPÍxãþ=!”…F0@ͤDÜB};ÉÛ=ú€v=\¥€íb@±áûdî¦ï Õç>Ž˜ÏZ›µ°'@— üñ‹�XܶÀRBt¸a‚ÂŽ¤?pX2@ ¡Ÿ$¸T€õ¬HÐ&4çUëé*I�1!ëâÿðn Á%‚©×ÖÊM޹�5X(ŒøLþ0Ï3ÜKŸ0×ñ”�ó…_ï$ÉD °6€†êÀJn à~×ÖSø#u*ÀÅ��«óx=Få³AP,Iªdþá‚ BâÊõ`�QÄé€{«,@Fpy®a¡Ð×eaåº4--e‚ÚBë@îE� ‹¸6ðo‚K!¸ñ/}ÛÞ#l†ëªÔ¡í›ÛEðj÷¬ °lÁ¯:„5v— Kˆ\X�à�îhª‚‹™ÁÊÖ6 âo‹`¼âÈ{ "%©1@;Gu‹!,“¤€ÒÊ��l'˜h Ãõ €UÜoñsaG2e÷äJÿö°.©÷±HÇsr–…e[׊gsžWsŒ$Üç-*p9~ ⹚Àÿ˜W¤Ö¨¼W=½E잪 n"ª½I+<÷øÙÀóœ‡ñBPBÌ:V„9GZ‡Q¿Vå�¤Ý¿yŸ†dbXlÂ¥eÓµM)^f*"ÆO÷®ób²:>=ñ)%˒̰ Ù:‚oB¦6ûÛPêÜ© ·Tûm¤ E2P‹Í-Œ@''–0žž<{кAÛ÷Hu™#RÂnÁë¯ÇzÏ=²”€á^ƒ»§”Ï‹©Ý q‘EˆÙ‚Ø- ÌÙ¨­ï…ŠÙÄóo%ÐSï/̘7¢‹vMÞE 3 Èd4À¥•/¬€Ž¸‰âÒW·adÚ:|+-k»ÌºßïÎ[:Nø‹5[D©r¦¢Oò ÖDÁˆ±1(Ý @S  +oL} ¢]ƒÓÙy�ÄñC^|óEj¼†…$Ð�˜�Îw¢øIã»sïìû,ßÓõÓ×)}¡ôôáÖÝyãßO§ÿ8m€&ŸøÄ4Ü™¼ó÷οéÇW4’Ê(Op÷5mÚ4Z¿~½ZÌïþPVÔ‰ÏîfÃCˆ UÜÕÅ– -�ù|öhñNE>,’DJRÁl«X7R¸‹˜`›.ËZâ½ÝÉ:ÈÓŠ‚C+€‘‹ÕÿûMÊe YrÚïWã yäýw�KAPL€ìóîV>ágzÉtÁ'äáÝRU¾�Š˜Ss+Ê‚`A·O /‡²°¶bÿlˆóu¢hAlʧ}íF4º�·¥†Óá"põi±®Ó—Ÿ5~ìUå Ü{MÊ� 1‡°¦3“´ô5Wsž²}'ëa§kSôk´è;e%©–ÎXsÙ)wÈòò?*Öò/ü;¹&j}'ûy¡½ìÈôXzø0Á5¸¤ç%¢&ü�ß‚­<²³lÀ)`á´ž‡þ×ÐÐÐЄOÐq�A†Ü 2¨ô:ÇÉ€åFƒ|ù(¹…©ºZÖ¼ïè@ À�Òôví Ë; årÀêa-[Xgm 3Á5Ô0#Æ‹gÎrtláÅIþ8DALÐÍ»w© ˆ]k’!|`¤[,ÞlÔ(ÐAŒ�NÕ«Ûj,’¯Þy‡ÊçÏo´ÈF:àÜ—ëªll ^€ñͳßÚƒøˆÆÇ´™äǸÐQed*ô1K/™$¨Qñ»ŠßҠṇÓ?ÿ¡ª?²6ãG¯iV@GxÆjÕ_d§õïàÑÞ“BÞ@ûDàL¸:‡òr,šãh§8Cc^õ… —6 @ @;AÚEû E{…Ûq$¶#zŠ Ñ8‚æœê&A”ðÞBÈX–„´Ã-Üã˜I Ìîd9XtLÌø\Ò*åyM žK®¦ `¤tZ‘&…þ8‚0.6`…WAe+£BmnÖÐf†PqNÌí‹–­·ø`LJ;´SÍnrÌ5Ô�À6=…û&s€<ò\`í?åЖ¯WX”„%\ùìgAz�‚" Öˆ9!J•\ÞåÌí;=V]q �ò<®ïy|fR…`@‹8ªÛ­yœ¸×  ð Ó‡]DéËÚÓo…jÒ>¡UèçÛÉ"0©Ô’d Ÿð[Z ™Çè1¾SáF î¤à’Èì~L¶­L_c€/ˆ‡ƒrþ¤« #Ü–øåÌÿÒMx�>}Y–IW{¡EkG°r�Z(SŠËCSÓŽ`¹—/pýQ¤º”€û7>­¼†Æ©$D‡5îáâ š­g@…øÕ?t�÷³.ýuã~‚¦1æ�z¶øBœ«È‰øí N<ÿ nûö™�DÙ£ª1+5Õ¢eÔçPˆÊúQùëXA€¾ºýÅMÈ“¥BÇV£)oO1R¬€ït�Ã$A ]¯ñÄÁ´wÖ^š[.%~!1u<ßÑHS7Á¨+c|déôw'Š—˜o4&¸ÕœPz‚±ïeõj¤xbtd«��­hšêù[üdz�¦LH�ÿñ °v°’4cRC Ä… RRèîÖ‘[éá�‡”¯A>ÃòEfGõ¿Ô´÷Õ/ž!w÷¾‡eœ%ÌWëyN1Ï{v®~œ®ƒÔ1$Á;ëŒë“¯Õ\ÿûKLIÊÛh––•²¬Õ?@i®9òyr±þA]\~+—AªÅ,â›I·˜ÑÁ§}B)€ºFlS�Îx’V à\ŠBà®–“îÁæûõ¾n%À6ðÊ9frzŒèÜzýªë¹`Ö¦µ&Á}§ ¬$ùÍ‹bXÛ½‡dyùëaÙþ�\µ~x÷/±WŠélá1�½YìRdÐÿ9Ý¡� õУG� ºÒ@GPìÒ…5444rà‰:ö]ºDyCjã<‹³µÂ@ÖD/¤›É#§@Ç‘óçéÃÑ£�f`�Æ}²?üÿÃÚö;CBhÃÁƒ´ž]oɽúìî©»}²£`€¸‘°Åfÿ¹Óó—J(µ?žö�>MqXºˆ]Z%b­7+ Å¿š9“~çqÆá¯µ™íÛÓ   ^Ì«t&€-BcŸ,`Ÿž?,ã=ÓÇ|=Ðñ1¹�…võ²¼pÝNKqNðj �v¡Y_ß°h‚_møü6\]:/â ŽHÕvŸ¸V7� e£ºþB2´ÕáªúìGºŽÿàÛ+ج$åà@ß�Ù�ÔüË`á—W–3ÿ;:Ð,&`9—SˆwÑ‚��Ë7o]¬êÞÝÌý™�72ˆÐ�ÁPÚäÉiƒ v(Ю è8P:nñD$�½Âj+¡„؈ÁatàX�Áµ‹5â‘X°Yk×éÓ�Vý6²oùÕ@Ç…=hTþQF÷ð]¨u!9÷ÿÂ&,°˜´ÓèàøˆÓž‹­7ýCÕFW3|N#môk£éü_çà t8+À³ãÇù+4JÁæÇÉù^ 5+Ë®xø£´ñ’·+‘j½Å‡�tOdˆ-kœ –8†v t#!] }ƒVšÞ_6€kΠ¤7½•AXC˜]Ùx—òIm.¤@ Ìl-5éZÉ_ ]O«Ââ– ¬¹YÛv¿ØW·ˆS€x2 9´pqç¶·¥‹Zû˜.¡É W/ð-®Öp76v$?ö}&•u¥&#„R@$ó¬þ²6"„ÇÒ'5üuÿ(pSÃ9pÃP 4¤ [¼ ±¬„Ÿ¢Tp[XÕã©ÿ°Zi×[ôƒVZuc×fßx·÷ec¾§& 7iR€¿‰Ç7²—°F’V> 'z6°R� L(íý“ð[Ž–;Ög·-|o"h=4ûAå³a˜ªéid8ܨ®‚ Ò­v§jnš…tj9ì«XNÀ²À ©nšª7/víüö3k0‡Ê]Õy®¼L‡… ,U@p¹J’¤ÜÎ�ˆ,ì¿´´²››ìÚ“ 2^훯1óœwI¸~y“ç5§òy¼TŠADðóÅ\l ”Èšp��ø+ ¸Û�U]á7ú%·•.²µgŸûBF¦AŒWºÜ³~‹1YvÂ2BÖè¢YïÎ"O”š}eþ@IDAT-3.v 3Œk!¬dñ¢8YK ƒcs FhïL¶ÞàxIÒ&¡ÏÏ}n¤úùͨ1#B�4<ê•Qta÷Ê\’�…õM�8c_hX^nS˜*¯lô¯n$ÐQøÎ6÷hõ—«�*Ît çÒ?G*Г£j#`ºÚ¦yÿ¹ Ï�Ê/_¾L×®ñM a½›•-–ÃKÒ5Þ‹«OÞÞµ³aµ *eÈ®óš÷?H�žu�hMlUåŒÛ×{]­ì¾ Œª`j í n´é1AYÁüÜÂÝ!Ö*~ƒ¢ƒ?NûT�ó™[ˆòÖȰJIw`X·!Fæ:©4£Z¶Âb<òE°é5.l §÷A°ëaÙ³“µiD¬Idÿ�¼SdYüCÁ¤óïHim«æûÚ�Šõ°Ú¿Ók¢¶át?„çÞÉ»vÑ$þ¿Ê ‹P‚{ð*9rÐvßý]¿~Fª:$wô¿æ€æ€æ€æÀcÅŽ>1tòÚ5W÷ß~se2ÄE={º±¾þÚUnòd×ÔÝ»]·ïß÷{>ÿ›9ÓUºGãwéÆ Ëòe¹M”©Ô·¯Wþî“'Ýu\¹ÒõΠAîcŽ‘áUÖî€ÁƒF½2|>´+êúzÎwûç¯^µ-wðìYw9ynvÿh4eýzw�Ù›6yµýÙ¤IFÞÛ½{{•»j•»Ü±¿ÿv×g`Ä�ÈÎ’íÛÝu9È{ UÂUæÎ•;®ÔÃø­ï»Þ²­©•§ùCs õÊÿ!ÛFú_=ãd‹#íÏѺ˲E‡‘öÇw¸Ó¬vØ·QíZ‘Ó±ž9s†?µáe;ð#·BPi K¸\yX¤ŽßÝ;�W=¼ÇSoúpëz3FzÊüõ»§LûwEzñTž4uïá—ëÍô¢L‹òjŽØ¿|ÑÓ.ú„¾j*꼞غôÆ_rÙ%ǃqžÛqN6ïõ? ͣΜzb é•É+;¯4ò{Æîézô@¬‡9&ˆ«ç3=�ô•�ø¡�Z´hÔZëF`ëÖÅîþërå‹-î-s¼¹…SG=÷íÒéæ\— Ï”¼ÿÿÚäÉÏ:ÈÓŠËÕ·�hßn ¡– Ïþw]=çáë]fÕG—†¢nåV¹.×ûÅE~‹ žüèà�Ó>×-ãÏdz–ï±¼±\®;·Åyá]#ï¼óAXÈ4YNä·ur8YËQ9Y›FÄšýúN‘cÅÿ¡]>ÿ:_Íñ½Uëa9Šð\ÙF°ÿ7ïÝs±›*W™‰]Ï(2È[²|ÿ½ë›uë\g™IONÇ/XrZ/Ø~tyÍÍÍÍ�˜Í»¶4Y`9F hD7Ðát¬ÑttýÀóጠõÏõžzv`Cõ—EüC`,©é["Âh+úe¶§íå³Â–PA‰]›Ãæ[¥0Á‡è)­r]®Ïëyú„p1*‘FÔ•ÂIsÝ5‹ØŠ$õë¶/¿yµ§Od²«Qø9Q> €Àœ Àð₉DšzíÀw”›ÿ“(Þm§÷D{hó›6žÖÐ>Òð[2Í“` ¤�üÚ“nµ'6Mʈ\€8¨7€*;R…a[×Ú• .] ë_Kȼ}\]YúÇÞž¨B:™¯þÏí)»v±šÜþ¸~žvüñ¢MuQ6\—ëÞÝÀûiWKÔÃóôï­°õæ�÷ŒsFDÐþž6}�æ¾n² ÷e¶ÁÅ}Ô¡®9W« A÷" ó,æO»ÚÃϯ,!KDÓ*~íʾyäýaºÁ\#ËM&Ûul¿'¿cƒ°ùQ�òû ß�u‚«!WÃt¯‘t°k(wÿ»§ù`¬idP¨à¸eFÝÕ_­vM*;ÉØÿñ5–¸Ú�:FeYbf­™FC2ñÊœ~°‘>£æ ¯t_Ñt`- ï=s¼yìêšãÄAs®Ë5~€h[x£TxÖAj/�JŠö­;ÔrVûxÎ |–¿Ë¬J‰´–E?Ré¾dØ©Ðѱ~Ø<¼÷¡Dþù“üqÚ§Ρ!i\qNUsË— üÆy–ÍäI˜/ï=¬Ñœ’“ûÀÉzXŽÏÉÚ4"Ö$è?ÐwŠ+þžâás JB¨ëaô#)<×D¶èÿV’c¯®D,Ó€Eþâ²|¥öìÙ®G�º©`¡ ;,œÖ ô|t9ÍÍÍÍÍp€?›apýäÒ9v5açN¿c�PÌܨü§5,O,<®«ÐàÖ£G©óÔ©aÚ–®«ŽqЮ½§NQeæW:°UJ_¼~�šrÌ‘Û÷îQ¦T©hò'Š¿ ¥vu]Õülj-,(›•"G‹íý.¤_˜W $ßÏ.ªÆ­nÚ¼ý6Õ)VÌÈ“›�Ç�£gدŠBjŒ$«q: gÏN½ë×7Üz)UèÞƒF|B—Õ®«ÐïÄ7'RÈÚŠÿ\|#gœqäpèô¦Ó4¾øxãØ.yÍ(r]åt¬x”Os–`i¸­z.·on†);cúÁ•¨Aá–Ay¶ð î¤ðá,SU¿úåjqóeŽøWöö�$i˪�û»8àe~™#\Àïñ"ˆ-‚:šã9Œc‹ëïº ÿÒþ‚Ë–UßÝ?ï#Ê–Gæˆà¸ðŒ˜"‰8 ¨hwõBŽP•ûòÜnžŠ¼§Æ}€«$¸L2“Ê+™·787sì™o÷w •²‹ ľÜvÍ#ÜJ¡Õ_¶]»u íû“±æó4có®džêOzå ¢ôYDPeø¯É@Ĉ—?× ´�ó±ït+¯?ê#NȘ_<×YË0oáH� º–Á®’ʰ;1+eðïÆì¦£ó`ŽaTE(Eh�·#¸æ‚‹.¸­°rMdWÏWz±â\bú¾JÚçIßÔxŽàrÄ×='ƒ¥¢µßÎ¥Igß®¯/7M|-+ÃŽŸÏî Ü�’tE—NKx¾0‚”Ãç:VI2¶Š¹L°ÇˆÍ�ù ·^j`t‘j½Upwàù îþT‚»•6|O"Hu‘&RÂnUW+VÁ�ÃÖpž2¬;»¦ãù q‚0çÚ͇j ÄBÜI˜;ࢠ.Ç@5í(ö£k².„&–™ht_¶OY*ùeI¯¡L©0…ŽýzÌH‹ ×U®G.bÀ‚þ{ø½õÍ[Tª[)¯þ}Ìo4ŸvOÝMˆÅñèÞ#cí`çÚíH×UØo½§5¥É›»ݽz—¦h´“³zNj°¨�Ì"ÙÏ3±ž1ê¥Î“Ú�§îàbÅáI† n«ØBCÍö¹×U™2eòYÆ_æÌQÛ¦µ(5r±ˆ5ᯎ̇+5¸Tƒ;&¼ÿÍk|ë¬$©ïö`×A² üËX þ\ ªuä¾tÿ#�·\³ŸoK>Otå"»Ñ,Èñµø}(ÁUÜ5=âg±ÖàÞK%5nƒ+(:øã´OùžT×UpO‰øbUßg·]SÅwk&â�©®U7ŠƒfŠ'*ä>ÞEø™ï/™ïä>�ë!|®º–ý©¼’iþÖ¦±&A_�¾Sä¸ð/ÏûË‹˜2Ø÷GQ±VÇ Çé䚨í²_gΚ»¿»èKìÒ¸Ë/š°%M¢DîtóŽÓ âNë™û×Çššššš¾8ðÄòäxÝG«8>Á˜íÛiÑÁƒÔ0~7Ð`aÇ÷�4oË:Î`¨e¹r”4aBc? | ±°T®W/bËJÈA»—ue‰¨‰ZrlŽÃçÏ{¥J cõž=ôͼy”ŠÛ«Ã1.^æ é™Ó¤¡‡Ò.êÅÖtšýƒÞ)R„ÚUªäÕŽzÐq�?ë…{™µ�hÞ\m½ÿÛÞ½ôõܹÆ1úM‘8±O ã÷C‡è«3Üõ±c:Ø…êsßWnÝ2ʽ’935(Q‚r¦KG×9¶ ŸÉë×Sjæ…:.è(Ïת@–,F}«Í‹Ì»<Ï«í^z˜¦W�n$媙‹jO¯M;®ž¸JF\9zÅÈ{€§cUÏ7ªöÿ>Íq¹E¼,Ê[÷$jü™†BP¸éW!à*ÅÂÞ.C<£ÂÇZ©ÄG3„ßNæ�õª,@0ê>mÅçóþòŒ!îDïOD[ðUÜžÁø–GŠÎï±À�…ɘFTÙ#oqwÞ¡.ÑŠ9B(¿p�;ÙçŽüð@¡šMˆ lLÎòš?×qÿï a2òÔ@»·X(\4 ðyl0 •áø9™ÅGêO`AÝt>A©Y  !8þ­¨$Ë”®\òäøŠ·0‰ù¼a9]l/|õX€@üd#˜/H(ˆÏVý°CÌ‘z ÂSÂ{¯?_s€6 [ à—Âi€›W‹ÌwyÀHú“NÊÂøM—EÚR~D;³Pñ ìÇuX„ ݈ý�ÀòvBRÑ‚ïíÚÅ£¦àG&žîgm oeÀçDà!÷‚…«üðü¨6 àTø …a@žðÒÙOŒ›`‚tão^ÜŸ’ ˜�@× BI9ò¥âgX¥z…9ÖÀ6ódÔR5'ì~�baý´ËRˆAsê¨GçÄŽ tƒð `ªuOc×r“’Ÿ! ’©>ó«ðœ�¹ÂŠd< Ì/+Ž[•.í›6D3GŠ:ˆ'‚ùÀŽTþLù�¨ß§¢dû>¡�|yý‡çXÜs†1ƒÞ¨À1£øù·†‰R0�1J0ÿ"Jd‘ôå¿õð_oG˜ ‹$ïÄAÌ÷[±òc„ç>“ewÔÿ‰çÛÆ®½¨HSh �ûóÅM—,l@YËe%×.ÚØo#±µ„{‘t ñ¡/ 5Ö/ˆí�>ÒNOqÆu÷k·£‚4(À£ãùŽF0r«:*Ð�£ÑŠF”$]b÷T4ë�Yn@ÁÄT\ÒõÓ×�¸fþ}@ɳ&§jcªQÖ²Ye¶±CôcwPã5�ÉqWˆ¤�Í'¤mY‘è÷<'šº1ì«äëUà�RáY©½Èw æc¨9ó!Öƒ?:wRÄ…’å7kÅ1yäý�wâ€j3¯¾#öÙîÚÌ`1Ï÷ q¿ò3]NìË­·A*8 /:øã´O œwå¹ñ…@•spàf~—c=ÅÐ;¼ž8´KÄ“Š-ˆƒU�y�µ®!ÖPÂ�x1§amŒ¹ëL+rr8Y«}³6=âlM¢ö'÷}§ÈòøW Jó÷®“TZšŠJV¤®ÿ"k=¬öÞk¢¶åo@ÇbþÞ7Oú�ŽÒY²/»ý’SÀÂi=¿Ò44444<5@‡rNtñömBó<©Y É´†ü üQ^ †‡‚þ€Žu¬ýÐcöl¯&Í@‡W¦ÅA¦>®U+z6®ýi @Ç|n†.g©S“2eŒŸEwtóî]ªÑ¿¿Ðý…dɨjÁ‚>�–¡P3¶š@è/åó,ôã�Ej¬ÙÄ8 ³‘BÔa\�Ð5Ä¿�MEù¸ñ˜Íh¸#À$H ´»mžI#Ù½�F3ê‘2“8_;ú¨{ÿEä¢ÜŒÍâ¼­Ê(`B_yÜ� Ü•äO𠋘Z¯àIÖ‘ÿV�ºq­xÉkP"}úÈ×X@* ¸…ôãW‰ü�¬¡=‘……JóÿZ‘&5÷òÀ„H ~{d/Ñûoݾ)îÏ™ÌChó› v(0æÚ-X 3–­Xƒu´w Ts=«–Ç= «P·lõÔZì[m¥0¬b]ðβ*\Úªù„C-< !X'˜òGßókµü»žRRbA�|~=9Ö{àOV¾gÌ„€¾ì þW¨ÍÖWsÌ%<Ç.BÈUªçj¶¬á÷ßw N<5ù\ì›·RSéfK.sÙ@Ž!ìƒÐ/‚•‰¼?¿lÌÀàdÿµŠ¿-„dÉSù/ <[ EüldYì‡w‹ç¬AQïV0¯l©AYùù3k†ûÏû½EYlœÁÔå"sþàù ÏWtÓñUÇiZÕi†5Æ‚ Ü÷nÝ£{×ïàÁûü`0Eб}ÌvZüÑb£ó¦ù¦æ”±XFs²û˜ã�ÑåÃürcÊ[//՞ɜ ©@ŠÀB#S�ñßqqsÕÈEõÖÓÂŽq;hIë%îr°¬Mš1©Q÷Þ�{îòXEÐQ§ Ñþb-±þo÷�Ú‘ÂÞ÷Û}9Իʿ·„5î_Uà-K9]ÉúøïÒ�­Ò¦©)b?V,¢üìa`ER‰@æa>ǼnEPhS]ätÅÊ­¬JY§©ºPjÀšG¥Á�¸è­à ó£ƒ?Áö‰u ,@S6½VB¬ñ è‚ë>ñ7¡è‚µ+Þ‘°þ…"@©Ê¢¶ª2 ޱ¦Å<0 ÷�$_óž“ûÀÉzXŽÿÁ¬M�®IÂûN‘ã=Š¿ òy¯¿ežÕºVæEÅzXö…ÿð^µ-û{ø>=+#¦H�À_Q¯|3`a>–…ÍéæcYNÿkhhhhD$žJ ÃÌ õ Jt7�æ28†UÁ÷MšYûô¡»ìr Ö‹:ó ÜDˆ0b�þ‡¿¾™bó×ÄÊnÝŒÿ lA2oófÚÀ–%@ÜT“µ’ãÄ¡… Ñûlù�̇Y(*ö]°€VîÚe´1·CÃJÄÜ / ‘-Zø´~h3~¼áF e–*ESÙÚÔ¾reªU¸°±¯nV±uJo¶N‘d¤D²d m;z”nñ¾JiÙ=RƒâÅ©ú믻“Wð9}Ëç¡^‡ªU)ê·Ì£û�hI«%´sòN‚ËP¬¸±¨HÛ"„¼­Ã·Rª\©è“Ÿ¸Û–ƒG.S­Éµè•F,ùe‘g]:p‰ª�­N¯µxÍHó:kun?G•~¨DEÚ1Ò°ž{8ýsPÜ'îD›�öÇÛSò…äÆÉXmš�’ä5‹ØÊ¢�·&8:†µ\2tèÖZ‚¯)ß ×WªpV Ø}5Ì^ãÖÝšýµÉszq7Êý*x}Eôfè¹'W졟‚ ÅÇçÜ7ï�€‹. "¨Úîо‡Ü�T@UÚ¯œKtñœÈW·ƒ Q÷+Ð&óEp©×u¦ñ9Ñ�ê%4×п™ 8mÍÂÍŠõük|X±“û8 �v®Nc­óψ 1>ØqM Õ(ª-Ê W;pcw ùÑü·#-€¤KˆºõøQ” vûà¾b  lä¢í[‘ºÐŠ…`cÝÎ hË�]a_oh7­úa.Ü£ %ÎðDÉtx [¢V›N ’' .Wºia6¼”á@æ´uÄVºzü*ݾp›çj±¾ñt¬é¶†Ö÷Yo4Ù𗆔ým¾‘lHÅ;'ŽñA;'í4\f¡8\NlYÐXÿH÷Sæf.ì¾@‹[.¦³[ϺÇ'ˤȖ‚rÕÊE¥»•¦øIùbG1�]yN½W²’P°tW.q�4¢t¾Ô5›x×TÝJ�·Z"<ë ÙÀa€–kù½véœl¶sË'ë©®G‘ÖŽF¬Ÿ¬HÄÃ*Ë—b†¹¾´dƒÛ¯!æ\�{GUÁA–ŠþÛç_¿óZŽÁ ¼Ï¶ðµÀºw7ó€/æéÍW…r…ê®sÝyo‹Hô‰9k»*¡ ¬*Ô!‚›A; ö>ÏzXŽ!˜µ©Ó5Ixß)r¬øÇóˆ5,œ¡˜wj ³â†Hõl#{=,{Šˆk"ÛŠÌ3`a>–}›ÓÍDzœþ×ÐÐÐЈHÄ #"l[—nÜ ü.s,XnÀ’âyþìx ŸÖçÙ²ã8[�$ˆ�Ò$MJ°\á5úcEn? ³òÇ6ƒŠfÈÍCt�À“4V àâ®o ±–6“ð�?�oîA[ SàZ‚»@ý�;)êâÃ2/ ýõH»¾Ê@ }tŸ°R¨‚sôGø€Å8Á¸`�p."ð᣷Znññ[­!ƒ S©%âpì¸ÆõÕ>ñÑ™ë¸k€À%iJ"øl†`2¢©‘9vÝ¶æ€æÀãÁÊGö¡!¬¹v<î˜÷]4âW@xÿ¸â‹À…UÒLIéÓŸVvc–@G‰.%¨\¿r†Ëª3›Ï¬cÓLð: k(Š\?u�¥IDI3'5¬;ìú�)éN×Aš?‘Ç�è¸&X;Ÿ9!\7ºx혆×OX?ÖkfN;]›šÛyš�ŸÖõ°SÀÂi½§ùÑç¦9 9 9 9ñÐ@GÄóT·¨9 9 9a˜Óºªf -o pÓ)­x+=Ë [xb|Xµ™i1å<#“‡ÝvL¹&1å<#úþxRÚƒ*,QAez”¡2=Ëûv3ÐaWN§kh<ýÐkÓ§ÿû:C§€…Óz¾Æ¢ó44444ÌÐ@‡™#úXs@s@s š97Kðù ˸i‘ñ6º|çÛmA4;ʺ‡û)ÄKqBäÜòK'5£¾NL9Ϩç¬ócÊ5‰)çéüNx2k"FØ�kw(ä·Z×k�? Ÿ…|F‰_`³H¤�ÌÑYš1€zm.r€§è°pZ/Àaébššššš4СoÍÍÍ�ÇŒ:üecïA!pzï ´wNÌ;B,�ŠÙ��·/äÎZŒ¼Z1å<#�ƒßrL¹&1å<#þy¼[D<ÄåP©ÒPŽ+ÆqÊü‘:üqHçk<ÝÐkÓ§ûúsvN §õ‚›.«9 9 9 9 9 �}hhh¬÷spm'„`¨�ÆFqÒ~DÖ‰)ç‘<‹ì¶bÊ5‰)çÙ÷ËãÖþÆ~iõW«)v¼Ø”¾pz*и½ÚŒƒM@ƒÓ¦[ߢ_” ²}ÊPCÑÐxš8 ×¦OÓÕ ß¹HÀÂi+=zôpZU×ÓÐÐÐÐðË tøe‘. 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9³9 �Ž˜}ýõÙkhh<îÐ@Çã~…ôø444444444444444¢™èˆæ  »×ÐÐÐðÉ tød�ÎÔÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ@‡¾4444gh ãq¾:zlššššššššššššššš�$Ðl¬ §õƒSÖCÐÐÐÐx‚8 �Ž(ºXÿܸAWnߦd RÊ$I(v¬XQÔsÔwóàÑ#:ué%ˆ�R'MJqcÇŽúA8èñȲ#tú�Ó”(M"*Ò¶ˆƒ«²6„ÎýyޤL@¯6 ,¨¹å¨ëè>D·oʼnKÔ®·yÁ߸J”8)ÑS|Û{1dù,¢£{‰Òf"ªý¡WV˜ƒ[׉â=Ë¿øa²t‚æ€æ€æÀÿÙ» p+ª-¼•n%¯€4ˆ4’Ò Jƒˆ !‚³ÏÜ™sK`Ö÷�93»gÍÌž=ë_ñÒq`õ<¢ãû‰’$'ªñ•ýÓûëÑôa¢~åzD)Óz¶u`ÑÚ"­P9¢ÜE<ó#âèÙÃg´¹Ïfr¹\”¥fJœ9qDtëô¡p ¢ïƒ_ç�ÿœò™€ÕÔ€”Y×¥‹ÛRãðÅ‹Ôfòdzüì²,iyÇŽ#ztºxëÕ¸„§bΜô]E–¨ÞÈ‘tž­*$¨ÉûþûòPûŸ¶y3�0��!Y2úùË/=Êà`ÙîÝ4`)™0Õ)\8°r›-UºÎ™CΟ×ʘm"� æ-ò—ïÙãø„²í*U¢ò9x%ÎàNáe: EÔêÔ²pÜŠÆ­&ú¨¤Uî‹�þøkÇ"zÎ�¾Q¸¶–Œ?6cAÄŸÖç¡æî’ƺTÄæJÌkžNê´"ú~HÄöž½ÍOÔ5xÊë;�A8žýïs¢¦å(…qÈëÙŒ§Ü�Ëô‘-=B”:£~Œk_9 ÑÙãzÚfø_½Àì¹ô4£ÎÖ�±·”Çñ}=­&ß/ÿc�mhi.-Ýü:¦n ú¬”™è4ŸŸ/š¾•é¥`Å•?¾8®ÄçÓgŠžgµ×©>ÑâÉV¹Öé¿3Xä²é Õ¶.§æôg  \-‘bä¹ZNîC¸9…A‰øü,„•}_€3¾Ú JÇïLå^jRF¿'­êBЈë°F¥º…y~átoÔq(Qí–ÞJØÏó�ùód³®,ðìf¿­áÿc€²'Qt®îº'@yµµðô¨}Yí‡7Ðqïê=˜t Ö}õ9Õ)su~`òà€�û  ë1_{£/Z0@:̳ÄÓ'âþÆ?îmÜãIê¹nç98VÜðéŠ,�zoÊ“~ó|7¢Æ¨îB³Ê/Ü�صNDñÇ;gÂ?÷E8O»k#÷ü}§@–„’Ú}N„çV…]–©¾ÿ_”õ°zȵ«ï³ó¿„]ÀÂn=ÿGæ”t8àpÀá€Ã‡¬ìÃæô®—�vHZ½?]þ‹%#LÕòå£Xo½¥í'��Jf˦í�X`ŒhrUotüóä 5=š®Þæ¯ ¦¬\–°l¸ûÏ?tüÊZÌÖ·ïß' tüóø1Íݾ]+¯nÖÅþ5ž~_Ën©áH�qî?º—¿+r˜çÉ:áù�uh®ÃmæZå=Ö}öb�–e æÝˆÞŽ)æL¬svm Âü2¾ã�öMe¢ß–˜ç!?<)¢øžçàOÛ/ÂyÚ]“ÏßÎ;ÊFE‚ßÿ�¬±^¤õp óž‘¯¾Žívëù�“ïpÀá€Ã‡T¼@‡zÂØï2{6m:zTKž÷Ýw”�cfÉt hýúôAP�GQ3 ã÷'¨ã –Ø0Uf7Oß–ç¯qÁÒcÃáÃT"kV·ˆ¡ˆvK ÒÌjÝšàFËÍÞ¶�F¯Ò¨D±cÓ Ž’�ÿç¶iC¯)•Í€€1CøøÀ�¬Zt|_¥ •ÉžÝ�Y;„Õ¹EÄX:àæ¡N!"öb¦iØâãÁ¨!ááü °Ðõe%UȽñ*QÂwÄ™VÉ*$ЇP�/¸ûR…æÆ2} � ˆv3!z ßíO­Yó}¨èî àÆ„û´Kc±Aê”M⾆€‚fÀ:ÅÚ ªÏBv\“•I+ÒáÖ ÷¼tÑkžY£E¼š‡ذ3X „ºpi6€ôÑ„ÀÇ;H“H±·•®â±oË {m l/„Ô¨½Œ_¡°r°"y.ÈŸ¼‘(Wa«’ÞÓ‡²°~loQfá~Œg³. qçÁ_h3ƒÿþ�¬Ëh«.Ÿ Ø(¤Ïkf–þôa,³‹yR¿¨HíÀàLÝo�%Ì�¯]f—8ÉEæÑ.|?© êËÒ".¬~Y§çD*Ç  Hµh)/Þ¶0Ï­·®Yk䆷 ÇŽ9@‡?\ ß2�ÞÛÖð3TJŒ Œ°dTéçÙ%U‘׃ÿ¥çªîqÖ]q:ôÜðßȰ%¼ÝfÕ. €oXÒÁ¢N%¼ÛŠ&ÕÁŽÍüŒª–pPœÀ¼úIC¶på÷lDRDñ'"Ïɬ¯á<ÃbMbvîþ¤©îÓ|­+Ôö^¤õp óžzžþìÛ,ìÖógLN‡8p8 9ðÒç9ÖÅv‹Ÿ­4Z³µ† tD�UsAˉþlñ Ò§ìºêÇè­e×UˆÕ1uÓ&š°~½–6ªqc‚Õ…]²t´š8‘ö³©Ä+£V­ÒºÓ¤ ¥g0B’ t –†4î�‹)¸š’´”]W v]U»P!j\¼¸–Å ™Ô�­9Î^gÉÓhv{åÍ2C+¼‰L ®Ž-x‡>jû½ó õTµý#ó�гGÏ<Òߌó&¥«,uòÈÑ«^3ô{�æB�/]õ ŽâLBHÀó�MBØ�_RášËÞq.öl.Y.�eá?rYó-hoÂNXQÀ-4¸KWÂé�¿A C*¾<5š?ýÆþÑbìàòˆ] éU…&?\"A[|ÃQ &ópS‚PÄ—Aä˜o!8?àé,ýæe®²@Ej½Ã}�ÑW=ÜÁ­b‚ ,Üca|hZê°0‘S~¸¥�„X"p¹úa¸§› ´aÊ ¾ Æ�ü‹§Å5ÌÁ‘²5C  ¯œgáû¯" ûûYˆM××<ÅGé†eB ñ]<„�;΀\FÑ6¬U`µ‚û¢Q áÖ I2¦véÚÿà\�àVj_OÕõÁÈnÂ5‚#ƒçд—.z>ÏÏ1A¶³K'nç Á³Ãp �õü¿£.\{@°ŽÿÐ�êÚ.ãà:Î�'Û× K 4üº³$¸…@Ì <ÛïxÞc–•L2š–÷ÑÑ�˜Af„ù" ÝS%OQ7Ŭœ1 õàb V=˜3fñýj$=!üýv™(qR±ší”ÁD}Ûˆ&m°¶®0ö¡ hº�eíñ/=Kà|rÅ÷b‹ “´r6Ç›áçWX°‰‚%æw•â'Ò5åÕtã>\\íÝ*4éñ¬fËÇfUÄ=(’5 úÞ‚ãXOýzŠÎo:O7ŽÜ D™Qêâ©)qÖĦ1:nŸ¹M§×œ¦7ã¾I±“Ŧ}“öÑ¿ÏÿÕ\O½_î}:2ï[|Œ¢D‹BY?ÏJ©K¤vwwaëº~H¬»Ý~Dk;ò‹ˆ)G£”4·çÍ™ñ“Œ#Q -ÿÖÉ[tvýYm?cUNO,ÒµesuÏUº¼‹ot¦ìu³SÔ·ÄCw`úzrÿ %Í™”b%‹EÇ×ÎqA’åMFj_Js»h÷– tmÿ5zòà‰¶n *D) ¦ô(–�Þú ú^ŒÏž#•T°sùøà¹eýI@€æïœ�xN7~ˆ»dE�®ƒ `‚¶%ÁÒëÌ�xתÀÝjîÂ;bá$½tŒX\ÿ3ýXÝÃó𚀆L•åàë ,%e<¸À„ëPçâ]·q¹XsÁU$¬Ûjñ{`¿EísíaU‡s‘ëÒ4Åzç÷Œ°üÍËŸR¸Àk3¼‡µ”_ðÞÃÚÁÛ“…,÷A ëáЬMC»& Í;Ü“nŸmÖ2QBò)‘±VGè5Qëú;ïõÙ²EsÕÝ�c~&3QüTÛT÷ívë©};û8p8àpÀ^  ã)¯B—rÀïq p¬>}šþå/ýl!ðKåʦçÐñ6ÇÏ€µÜ/�Æ2XËIf@�Ë ß­ÙšÃ,x·¬ïë?P ãov�U¥�ˆkQ��Žú F€ê)B ?þØÝ¥ t|öÑGÚ9>}þ\s³Õ‡c’H²:.°K­º#øK…)ˆ]KMjÆ_'~RdøÈžYi&Ýÿó¾ÇHã§�OI²&¡£ �†F>,í0úëô_ôZƒž³)˜RäOA�ï=v � àâó¥:ïdÙŸâýD�î°ÄF!_ÁÈíŒUi>Ô»�ªMj¯2w[WÓ…õj]|ðÂ.Ü`™>’¿­®kÀ«eàvA¦cÆQSõ})Àü° ¶Ûsl‘O…`Z/!,/ÖœSSXx¨)ÕÊ¡MylåYà½Läþ:‡è»`¡Á�y¬!ÎýøKÒW¸*L7Ö•® `,f¡GPz½¬ðQw5f î7$Áµ˜GB¦›ý[i�àø�ymk#¾Ðóš`Œ°¬A«ÂMéØ Á€$ý71–Áì¥}OcáÂWe„ ÷âdÎ){g� ˜ï$Æ6�å‹ Š �kâzެAc^Z€¿¸r³p÷:î5¸?AÀrií Ý'Á2àxhæöC´Ø‚°ªÙD¸­jóS`õeé��Ás>y#€Gg� H+Oz+é=OjíCh4‡…CVté ƒ•iD.¬#`%á©õ¬ž1ÄاY|°pÏÀãOŸ(ƒ éK¦A·=ŸomHÿö(3çÏ{iå=h´ø€ðB\ÖvÜ 8¢~X€UÌaF2 ˆ�ù8Ø\¿¨ Ë2˜Ïá^ ó÷î#ù+è1Ö ôøßgÿÒŠoVÐcø‚î)·ö‹ŒüÀ´´ Î­4€©ñÚë¯Ñ‡ >¤=ö¸[z=ÚëÔpSCJž/¹–¶´ÉRMÁÂ]ÀËNÃ- )e�”Z €#£²ŽÒö‹ýXŒ w.lZsRÑItnã9 €ùöü·ÚÚû'éO®? ,5³Ð¥ß/Ñ�óŒ*7U\ú|ùç”8sb%UìB)duûÕ´søN·R�Z(_ë|Tª_)¹†5z Äš -ž£  >ÖG €ÒƒçŠ}l¿à¹î›ðžKÉó‘öËhk¸m3’�u�1^”±MõØ›E¦úŽ@Gy3¼Žù„ç°m±¯n%àƒ4V-Î`-3¶—îjOÖÇûvæö�1w"ƒ?vúpå#å((ÖDª{F3þÁíWÏæ"^—± ¸°kT$ ‹û ÐõphÖ¦êýèš$4ïÉOç kÿi[djÈÿÈX«£ôš¨uý�÷ªÏ�KóŽ¡(<9•ãXž_rìOüãØÙ,ìÖó6'Ïá€Ã‡9ðB§8ÎÆx7&íÛG×8 ¶Jß,H}‚-Ôtì tLdþC‡jˆÑã³`‰%·et¬Ø»—ú-fÉSò ¨{õêZŒ -!ÀM @Ç*Ž?ÒgáB­—5jPáL™¨ú Ašûª4I’Є¯¿v�@:š—.M8¶ÇRŽB9”Y»N�¢vÓ¦ieªçÏOhÃ_R�8_Í( K”R�Ã,?�4h>L�ÿ~¬}¸gû"%x?�ÛpŽÎ¬c)Y0%H—€Zo!É tð¢/K­,š&âõÃ×ÝùÐb¼{þ.]Ù}… ¤h£=½ÿ-w>vV·]­iBb_Óøî �lÔF„Ö{§úœ€k„�+²p‚å$kæ �,êzzJ0šÍWÎs;ÏY«;· ƒá��B`1f%Z¤ 哉$pg´n‘'HÒ”…p-zˆ:°Vøª¬Ø‡v(bw…'"7ä¶eUѶ• w×~,êÏuÅ,v«TKä�?’·Ðz¡�oüÈD,hêI’1пÑý´9!ÀW ~»{·°ø�±VòXd\ £¶S=3¦ˆVÐGòÔlÕ1Io}gáÜ‚�zObà‹ë„A ßvЊ à1µZÛÔqŸÂXÈö�›°à€Ë2§ñ9 ¼@`oPÿ™léÂuq/ÁÅ[¾â,8Ê âM¬:-„H‰›ù¡%ExN@g³ œÏ!PÂóQ2HÔªÅBhãZÜw!4aÍ®[Õ3¦ã~A<,`Á`E«ç Àù?Me€¬¶UIÏtÌYATv¨ímX«až‚  ÀWX‚ÕãYƒµøM-ªp¼—Ų Ö>°t‘„±¶æûVTІK5¦‰š¨� @æÔ÷ùüCçaM¸o¦ ­ºø~�1oöµékÝîÿzEX†wž‘´üü`ž˜# ç wc*dÞÌQB`ˆãV½Ø«“Ì Ûÿõÿ[O›znÒM”)‘fÙ€uÆÁééŸ[ÿ¸;³:â½�RIE°˜ø÷)3‰)VÒXËŽýS÷k–£ùZå£2CÊhyG¥‹Û.jûèV¥ ÷Ùlý«”·e^Š“’Æ`Ÿo¼fÍjµþ¸}ö6 K3L# u*DÅ{1ãƒIòý¥(�B³`94ó�V'f’˜Ôú\kx£ÒŒŠ3èIJZ¬_ÓWJO¯G}�N,?¡YÉ"£à÷©DŸZ™ &ÐVò—`•<‘­™ß|óÍU½àÞ ÂhÄËZ!†ìÑ&J• Ž<‡×æ÷ ÌÆ1Þ%PüHÍs;,?¡Å2쮃 t�XB hõÃb„1©ÖoË·}<-2EI±UßHñæV ±”Ú/ͬw5 ßlâÙ…{GÄd“4þ'†:Ê#¡He ¬IÖ/–uÈÎÏ9)$Eìô KßÒ¼~ÁRÊ/˜¯/ŸÓ’4Kðk/FÉ‚øû€ëHªçqÛ�‹Ûlyزc ×YìBñ-ÉùÝ‘ü=YK(ß„ö>t=šµ©z¿º&±ûNѹE$•6ðÞC 1+ŠŒõ°:–@¯‰Z×ßy¯ÅÊ•4bçNµªfÙ �F¬0™Š½C˜‘]ÀÂn=³18i8p8àpÀŠ/Ðñ˜%‘ 9¾¬7~ã¸.åÌÞ�“êpXsdà ØV(б¢cGêËÀÅJ0ð1Ë…T‰ÄǤÐ�€ãuØÒÖ’Òr0îŒ@G� ¨ö°aš5H±,Y¨K5!ý±:–0(2hÙ2­Ý¯J–¤Z hûþlT ÃWùU?ü@Ñ£±¤#”´ñÇ�ô[þÚdúdÚ' C#¾‰–4YB{Æ YÙëe§*“ªÐ?7ÿ¡~‰úiU3×ÈLÕgW§§ÿ<¥Þ±{kµWÖ¦´R¥Vôà±]Ùr%í¾Ã+Ðag¬—/_¦äºIûöÛoiaf­z|¸C(fåFõ �‚Ö5ÈŽú÷ut͵öY¸ÕF´…­ *¨q�7L3Š?ÐŒ—ñ0ž<BYò’@ h$5¨ òàªÏdO÷PèÚõp•:¾Ÿï�ìbÂ÷)Ü'LßAªÏ}]ÀZ›U±'@—Rüñ‹�XܶÀRBt¸a‚Ф?pX2@ ¡Ÿ$’a}+´ ÍyÕzEºJRcLȺø?q@Cp‰`Fêµ5s“c¬deš"¾“CçëãÁ½ô óq#O8_øõŽW´khø¡¬$àÖîwpa=0•?òQ \ Y¹ª1ŽÇßcôW2ˆ‚bI*P%ÓðdpEV®¦,ð!Š8poU‹:—‡à=p]63P®CmÑÒrp ¨-´^4á^„𚱈kÿæ Î#…qdÛ§•.l†ëªDÁíðj÷Ì °lÁ¯:„5V—µ Š\X�àíîhª‚‹™ÁÊÖ6 ¥E0^qä¹… ‚’Ô ˆ�£ºEƒ�–IR@iæÆF¶È?´„áúÀ*î�bü\X50¸ôoë’Ͼµðœ\faÙÎ âÙÜ„çÕ#I MÌúÂ< €HÎufeB›¦j‚›�ˆjûÒŠÏ}?~6ð¼�0ç°� „˜-tÌsŽ´¢ ~ÍÊÛI{rï J9H³Ø„KËбx²f‚BÄ„èñ]¾@LV@Gë³­)nP\Í*dçH¾ ™šiN‰2&ÒÜRmùi %Ï›œoo¬å©¸·˜t –T}NuÍõ•šo܇¥È’Æ,Qfj°±¥*œÊ£\xnè¶A[ë¶<Õ’â¥æI7˜T #›üTz ?hÁ´kô.ZÞl¹vTatÊÕ”_LÁ\ØN&0IDATt’_LÓËñÈ”³IN*?²¼ràV²ójÍ£ÃsS”7¢PóÃÍ ¶_²+ÔñãÇ£ˆße�Ø�ÎH�ܤóñ{ `7ÞϸOUšñ)`Õ�ûiÉ!Ý‚k fã= a}árzmùžÃó¹û�žŽ=»ë µëPx +Š@H}G €lÚfÔ¿-Ñ$qË…ˆÕ„çù`@Ò¤8bp³†PÀq¡²x—JªÂÁwýØ5n;Y+røc皨çPà¸\ÃálÆ­b!;Ï_|ûò{Ê ®èç)•%°îÆý L\XÕÌ+ŽŒJ-² þíÜvÖÃò¼ì¬MÕûÍîšçÈ;åAªÕ£P'J…ÜFÔzXölçšÈºødÞ;xíMd¥ÑéÒõúäYBI–YÀÊ£Rúô 7f0Ù,ìÖ“ý:ÿ8p8àpÀ¼0@ÇQv“ë�Éü"¾õð¡ûÜ¢G‰¢½|°æA)Ž¡áËÔíá¦iäHMc­4ƒ)«VÕÆ`t ãv¡ÕsÁº£,´ ¼‰ÃÁºËòx²©78þ‡7 è€Û©J}ûÒÃ'O( ÇØÁ±6@zÞ�MSA-Ë–¥OòŠ•²è€UƼöÀ (™Ú¢%‹ßÒ¢cܺu4}3¯ä™:r@ñÒ�  chê¡mEh<âcZ%¸²”bÁ…ÐQª)-êõKØOÓÔTÝ? N5˜î^¸KÕfVÓ\;¨í«ûþvÆú7}o×Nù2T;µØ/Uª}úé§¹þ%«šÔŸ³àqü¥Ëç„à‚fÄ;øßHÏšWÎëZäF·2Ò4~°öx7¥g](Mi¯ê ˆ,-;hGƒ XÈBhz£ÿñ#k* y/�ÔÁ~‘wt7 kÎy‡+¢Î,ø¢´ò PÀçb$¸7úº¼H5¦VµâŒÂŒ''�BÐ@¯‹ÆŒ 379"Gߪ. –°ÐGÕ8D)õ^‘~»!ˆÌK€½&²ö|}!œÌCðT,8¤¡<\AYÅÑGØ4á×,u E9’e�²ª¤ Á¤ Fº*I$´6e –¹‰ÿ!„îcÀ¬c P†;hg"h4‚Òôé¡= N @­£D­�Û:…të¨�¹zŠñžÕs„› Ÿ{Š”y{¨©æ«ûÓy€Uñ@ ȰC£{ðµî*jÂzÆ›o{éŠÂW?°ê=I/%c€ ÖGxDÌ‚ :€ð·ÐÉŽ%ŒÞ“¾­k€�þ´}qo�T—9"%ä¼î>ÎsîA))4�à þò'ã¹êºx&!¼ÁÜR~nÕyMä„Í1[»ä-FÞ eÒˆçßL §Þ_˜/0oDퟲŸÖc�É h€K+ ^˜ÑbD£î3ÂÈ´sÄNZÑb…tyÒ…' ¶tœ¸—7\L Ó'¤oŽ}£•S7�ˆ±1 é@“½>+oL ~ ¢QƒÓiy�ÄñCÞûø=ª·ž…$Ð�˜í®¶£èq¢»sïlHк{ñ.%Ë�Œ¾Üù¥;oÂGèâï5Ð䛣ßh€†;“wþÜ÷'ýüáÏZRÉ~% OŸN›6mR‹ùÜÆŠ:ÑÙÝlh1Â`¡ ‚{ jÁØ´å1ŸÏ#ީȇE€HI*˜-ã2É<üKá.b‚m»¥çà~€ng¤·"„à†ãý5j©šã{¿~Q¡¬!KNßÊóÄGòÈóîË ÅÈ>ñgbè,›!ø„<¼ÛBªÊRQsêÒ£bnEY,(àö Ôi»k!ö#ƒ?vûÖ™hL/OK ¦#Þ׺‹b]1¶7?küØ«ÊA¸÷ê baMg$i ° ‰ ô>°³¶»6ŘÃbM‚vü}§ ¬$ÕÒk.+åY^þGÄzXö…;×D­ogÿ/´Wœ<©�ËOœ ¸—”$F ªÏßù�ÙÊ#-ËìvëÉq8ÿ8p8àpÀ¼@Ç122È R.Ž“Ë�ZY³R<Suµ¬qßÐ�64€;¥-[j–V@Êä€Õö°8ÃÚF‚k¨á F¼ýÆÆ,÷q @Ç^œtà�C@ÄäÝ{ôˆ*3‚Ø%°&T·®–nt °xÃÑ£5@1>ÚUªd t¨±H~øä*™-›Ö®?è@€so®«Ò°5Lh Æ�oþ¨iâ#ÓF’ãV@GùQå)÷×,½d’ F™Áe¾¥A#2Ž ›ÇnR…ŸY›ñ«\ZšÙÆÐš±šõÞi¨+µ÷¤�×ß>8®Žð¡¼’‹FÁ8Ú)ÀÄИW}aÃ¥M)(ÐJÐ…vÑ>hñ!áöD‰íÈn"h4Ž 9§ºI%<·2ga4íp‹íg#I€Ñ]ƒ,‹Ž‰ùŸëâCZ¥L9„ÐÂF•ŒyW¤H¡?Ž Œ…‹ X!À@EÙJ«P�Û„µ´™!”Aœcû¢eó->ØñáíT£›c õ#°y7á¾ÉXF=X{ÀO9´å?Ë#J®|ް ½zN‘ëÄ�¥|ÏrÆöí«®8ÐFIן‘T!Ð"΀êvë='î5h¼ÈôeGv'Ô›µ§‹ á�ô ­º¸@?}¦ˆÀ¤RK’1|BÀoi1d‹¿ÇøN…)¸“‚‹-£û1Ù´2½ Œ¾ Êù �®‚Œp[â @”c0þK7MàúôfY&]íAHa¾ÁÊAµZ(Ìå¡©iE°\�˸~ +R]JÀýŸf^CãT¢Ãš÷€pñÍV€3 Üüê¶ÐóYÇ\y�…µ²Ž()#Æ„* XÁo|xЀv<ÿ ð#DÕ‡•šjÑ‚q©Ï¡* �1ûjÖ°‚ýðàŠö6O– �^}𦖿 ŸÉ è@@ðvט1LÔ€ÐñOL‡f¢y5çQÌwbRÛ«!/L @Ú”1>²´û³½“o4&¸ÕœXd¢¶ïaõª¥è1:Ò”JCuVÕ NÕÿ–~űCÆî¦·¼Míoê¬]¬ÄIGSqa‚”¼»sÔNzöðe­•Uã“ÌŽè©iï­_ÌÉ8¾îâ †Ë8K˜¯6ñœbœ÷¬\ýØ]©cH‚wÖ'×7ÝÕ\ßûKLIÊ[h––•²¬Ù?@i®é²ê¹Xÿ ..¿™Ë Õbñͤ[ÌÈà�Ý>¡”@]#6¯Ä g vŒ6±ë-ù¡W“Ý=5e·OVÐ7RV@£Ùì?c2þR ¦æ&Ðá‹)*KB³K«¬õft ø³fÑVgTþZ›ÕªýÎÊÀ¥¼Jg(Ñ88öÉBöé9t¯è™¾æë�€æþ’ t|ÏÖ øž„ ™Ð6©à„ÚçœjsèÈü#–Ð|„$hxúátëÄ-P‰ÐL´j_öå èÍXeù� Û¶ ’�•Å‘ï-ÀŠËçØ7wÖ‚[²<|=ø¦Ðì…hуTK+Moª•èpùôV QWnåÇ'>&7³PÂê£^–W®[i©#ÎÂYþ@õ'Ð.4îàë"-@ð« ŸßF‚+£WEüÄ©Úî“6ᦖ¡lT×_H†¶:ÜCUªË~¤Y¸éëOZ9˜ùWºÑvU~óÌŽ¡ б@Cï ’ˆ ã(»p¢°~Áµ‘þ½%ÿqA³>üIÐR·°ÉòT­9'€™†U&ø¸ÇdPdé®LØ P-@:)’Ö5p+�ƒf@ƒ¿°’Àõ�Â0Ä#hZR"3íxÛ—÷ ª�jU·êÂ-Ú»)9ˆ÷y«R¾Ó¥›&_¼€¿ƒ� 3Ë0‘r‹gJº ƒû6€§à†V6 h#ÏçkcD®½m—ÆÜæQnÍà¾ÊB q™=ó°~Á¼òå^L”[5 »ÑâE-Ú}iñ…8EpfE2�=ÜÖ™½W5rHàadÑ¢‹hߤ}šuƒ'Ô±¨ÀÍ€ðFL ÐÁ™iþçó=@�c‹�Ѭ*³,Û·t\Þu™Æåa)4Så_*kÁϱ¿¸ÑbÚûË^z3bŒ³!-:,õŒdú¨ã3–7;†+-¸ÔŠ,Bì ¼—AP!îÿÐüÆ\T‡/Ž�Ôàc~7m`2ÖBF*$b�c/Ù]©í«Á�ýQÜP벯ÎpÝ…w%–ŠPR�`Q·_Æõ…êÞsâz'HÔÛE“„«@!®€yPdðÇnŸPJ *ýÈ Ý*(+ç8i€JZ¶Š³ö¾µŠe÷>t=,G'תŵ¯µiX­I0ß)r¼ø—Ö$þ¬ÓÕz±Vû³{MÔ6B»Ï˜$m>žZÿú+íý“oì`:Ïn°'¢9@‡äŠóïpÀá€Ã‡ÿ%¼@ÇMÖ*¨Ë¶W±;(X%HJÇ�¾ë±©ºüKnâ—W–3þÛ:Ð,&`9—Sˆwј��[÷îi]¬íÒEŒý�·0ˆÐ™ÁлñâÑL¬È_ \AÐq* ¤Ü.â‰Hºü«­bo ‡Ðq”c=|=N|WË—O‹GbtüÎf­gÌÐZõØÈ¾åD×^£ÑÙFkÝÃ?tîf¹åPÜÿ‹ê³Àbò>k ƒãs NhD¶Þ8~“*Ž©¨ùœFÚ˜cèêÞ«¡:ìŽàÙ™3g0¿)>›Çã{%4Ô°8»âá�VЖž®DªùvÒ=‘1 ¶¬qùœøÈÅ1´¥ é é{$0ÓôîT_"H¬¿„’žTŒ?¢a á¯`Ojs¡h�-# ¥&]+ù ´«Ž°¼¥Î(\Lj#}‹8ˆW ’C@ !:„éf„éræH"¸z‘îid9¬áÊ[bù±ï-0©lOj2Bø!D2Ïìk#Bx,}RÃ_÷Ï7Õ,q`‘7<•@ƒ:°Å ]VÂOQ*°-,ƒ>ã©ÿ°ZiÙSôƒVšvf×f?z¶×©ßSS„›4)À߯ãÕƒÏå=ÝÊgÑ$]`+Êd€Òž¿¿åh¹mMvÛÂ÷&‚ÖC³T2HÃTMO-ÃæFuíH�nµ;UsÓ(¤SËa_ØÀr–vHuÓT©Ž°x±jç·%¬Á,wUç «ò2*°TÁå@(Ij�r+7"²l ÿÒÒÊjn²jO‚Êxµo¿Ã LlÏ’pýò1ÏkNÕçɳTÈ#Ì]ðý�¸ïê/^ë! †2E€­ÓŠ}î Iˆ1érÏ øE,Ädع㮲†h(‚f:›øwwšÙûàÖÊ¡]3²;ÖK—.ï èÇÁÈ͆PZí‚.W&¶QÂïÑCÿ«ž8¨×›1¼ÞÌQz™½[õ2­>éêiêÞ³§.×ÇÉD™Æ%Õ±ëºÞ.úð‡~h êäŠi^z˯z›+f™—±J­˜IÔµ:Ÿá]D~öè.×Sžâ:7Ǿér]>gÕªgú™£.׈®.W¡$ú8‡ýϳŒztç–^Îêú¨å ¿#Êh§¦úÞ¯‘[Ôúƒ^ö‹�DÚÀzZ£"­ç7zZhöp¯Ê¾qïÎþY´V=—è|zòس‡*YEÞ7•=Ó�G½Zˆryâ¸\ÿò„¿f¾8F?GõiÄXÍuû¦^nò Ù¶ú·ÕÛúG½Þž-!‹7,.òóÅ y/„,í_ î©Þí~]Á¿:²TÙ÷E½2ieJÈÿb)DÜÇþÒÙã¢x8y°¿µ+‡yJ^£E“¬ë^9¯—›8À¼\­|¢Lù æù™º¢¥xŸ÷ˆn~³_ÚyI{ßcýq`Æ÷ÐöOݯ¥ÒÎZÚ€wõg‹-­wϵ¨lèï+»Û?4Çÿ|Çðîz·NÞrÉñ`œWö\‘Í{ü÷KÜO«3÷3±†ôÈäƒÕíWkùÝ¢ts=*ÖÃÄÕíµnZúêvüPûI�7h-ƒµ#÷³uób�þq¹²F÷–¯9ÞØÂ…Sú}»|†1×åÚ¶FÏß»MÏÍ:HoÅåêÝR´oµ†PˆfpGý<¼½ËÌúèP[Ô-—Î,×åú¢€Èo\JÏ� þØísãr1þ¬Qõµ°|�eyÝåzø@œÞ5r.Ä;„õ‡L“åDN`[;÷��õ°•�µiX¬Iп¿ï9Vü߯óyÍ5Çû~D­‡å(BsMd�þß{üØÅnª\E'Mr½¦ÈX o 2ÄõãÆ�®ËŠÌ¤§ã(Ù­h?Ny‡8xµ9ÀŸµ/q°,ײ'\•gÎtEíÑà xàe‹�‰F‹»ö\½jyb¡:Ðh‹_~Ñ„ôe{õr•úñG·ÀÞ_ m´�:U«÷1�ùIÖ¯w�ƒ­/\.Œ¿*ýúieÊ÷éãÂX½»Ïœq·'ë8Q�´!äq|œš_Ñ@Õ+f/íc{aý…¦c”€FdvÇY@GǺú‡C ‚Ô?6éõ¬À†J™EüC`,©A1‘a´ý:Go{åì�%TPbÿö�ùf)Lð!úQ³\—ë»Ïô>!8 „ &u­„“ëëm/œèrá£cÖ9�^DY|°å�+ê–ǺþöuzŸ*ÈdU#OlQ> €Àœ Àðâœ1DšzíÀw”[ð‹(Úm»ÏE{hóÇæzkhiø-›®§�飺ëéf{R`S¿¨Èˆƒzp¨²"U¶sƒU©ÀÒ¥°>ÇÛÌÛg�Õ•¥î©óDÒÉ|õν솥jN`ûãÒÛñÅ‹æ•DÙlÑ\®Ç�üï§eUQÏÓ?÷CÖ›?A挰 #{ô6½�Æ¾î± 73Ûàâ>jSØ+ŽU� Kcó2f©ÚÅoŸwœÞ¬º_ikùµ+û8®ËûCÔÅ\#ËM"Ûuúˆžß¶VÈüˆNÙ:`«¶®@pûÜíÝ«BxìÊÝÿ�é^k*8n™VwÝë\“‹OÖöÎÁW ’@Çèì£MK̪:KkcPŠAù“ ÔÒgV™é‘îí 2€¬ä½çkŽ7Ž]]sœ=fÌu¹&ôm«o” Í:Hí¥N!Ѿ™b‡ZÎlÏ„ÏòwëšY)‘Ö¤ŒèG*]X— ™#:ÚÖ ™‡÷>”HÀÿAßëù‘Á»}Jà ’Æ÷çT!£Lq¹Àoœgñ”zÀ|yïa�f—ìÜvÖÃr|vÖ¦a±&Aÿþ¾SäXñ¿dªÎg•„P/"ÖÃèGRh®‰lÃßÿ¬$Ç^3\1X¦9ŠüEcùJµ9s\«N�r=W?À‚¶ XØ­çïù8å8p8àpÀá8ÀŸÍ0¸~qé »�š¸oMس‡Î*fîTþKåʦ'×Uhpç©SÔ~Ú´mK×U§9hס ¨óŽ&Ø*¥¯ß½K 8æÈƒÇ�)e„4åÅ_†R»þº®jôóÏÄô:›•"G,“í?-ZD¿2¯@H~„]T�_'Ü 4/]šªçϯåÉÍ×ãÇÓÑKìWE!5F’Õ8yÒ¦¥ž5kjn½”*ôøéS->¡KŠh×UèwÒÇ“è܆s=vt-gÔ·¢ÊáÐÅmiB� Ú±U0ò*äºÊîXñ(_ä8,�<Òp[;·on†);c{Á•¨Vsá–Aé[H¼r^øp–©ª_ýU¹�2Gü«{{O�´e ÕÇýÂýð2›Ì®àƒ÷ÌQÄA�ñƳÅõàŽÂ¿´¯ DzeÕw÷’ÃDi2ɾ‚S$…;éz`Ý"ŽÀîqàÒɌԸp•—IFRy%óàöçfŒ="ó­þá.¡lZ"Ãöæ¶kîXáV í¨þ²­Ú­‘›èðDˆu°€§«˜'p óTÒ«y<É‚DPeø¯É@Ĉ—?× ´�þ±ow+¯?ê#NÈØ_õ냀¬E™·p¤ºÉR]KŒdWIEÙ�˜�¿2øw=vÓÑ~ Ç0*/”"à<‚Æ[\sÁEî3×DVõ¼¥ç�/Îñ'füî­¤užôM�ç.G¼Ýs2X*Zûí2Qâ¤ÖízËñpÓÄ×±2¬ñ9ðŒà¾Àýá/IWïe ZÆó…‘¤>×±J’±UŒe=FlÌ_ ¸õR£‹Tó­€» Ï_p÷§Ü­4ç{ò÷µ"UºHÃýˆù�ÍÍ~ó1w¡LöüDS7ëϧYy»iû°k:žß's®Õ|¨Æ@¡Asô1wÀE\Ž�Â3pºèÁ÷öÜÆs4©è$­`ñ^Å©P§B•¦–šJ§×œÖÒÂÃu•빋° ŸýKÅ~,F…;öèßÛÁ‚: èÀ´„XÏ?×ÖV®=ÑŽt]…ýf›Qâ,‰±«Ñ£Û�¨ÿ»ýµvÒWJOµ×’Y$ûyíõ×´z‰2%rç©;8‡×£ò$÷Ul¡¡f{݇몔)Sz-ã+sÖhŽmÓL”µTÄšðUGæÃ•\ªÁÞÿÆ5‡ >�uÖ’Ôw{ ë Ùþe¬_®Õ:r_ºÿ‘Ç;îXÏ·…’ýu�ÝhæäøZü¾÷—à*îšžó3ŒXkp勒·Ï<ž}PdðÇnŸò=©®«àžñÅ*|Án»¦‰sêÜPÄ!S];ªnÌ1NDiÏ-ÞEøï/YÊÎ} ×Cø\õw=,ûSy%Ó|­MÃbM‚¾ü}§Èqá_ž+öWœ1e°ï‹"b=¬ŽAŽÓÎ5QÛñg¿úܹ4ïÈwÑ÷Ù¥qc–_Ôg9Jâ1Ü鯻AÅíÖ3öï;p8àpÀá€Ãoxá�yr¼î£µŸ`ìîÝ´øØ1ª�-›è°°‹ã{Hš¿c�a0Ô¤D ŠóöÛÚ~bøæfa=¨D�Ä–#ô6í^ѱ£–¦nšplŽW¯ªI$�ŽuÒ�óçSBn¯:ǸÈÌAÓS%NLÏž=£ýÔ‹­/è"û}’7/µ,[Ö£õÀ ã~,3jÙ¨‘Ú„{ÿ·C‡¨û¼yÚ1ú�3¦W cëñãôÃÌ™îúØ1l�B5¹ï¿îß×Ê}�*Õ*X�Ò'MJw9¶ Ÿ)›6Q"æ…:.è(É×*{P�Vßlóó.“ÍÀój{'–Ÿ „óñ U2PµÕ`Çí³· ˆ¿Ný¥ÿ/vǪžoDíÿy‘?â2ŠxX”7ëFTï[! … pÛ!à*ÌÂÞƒôQác­ð;â£Â�>Søc½‚ ŒºW ñAÁùü½ž‚1Ä�èù�h ¾Š[1Ø‚ ˆCÑþs¸³0Ââ~Ó…Ïy½W±×¦Ѫ¹B(¿è 1×üX~x ·J}"ã%b�ƒ…­>Âdä©�vï³P8_\àóØ`ä.ÊñsR‰�Tę؟…Ï|.2&b�*„àø7£B,Sú놞ã-ÞÂdæóæ•t±•ðÕ`Oð“�`¾ U  Rô­úa‡˜#Ÿ}-€½„ç^_¾æm@¶@À/…Ó¶¯˜ñ>€�ô'‡…ñÛn‰´åüˆ¶g¡â@Ø�ë°Aºû�å­„¤¢ïÛ K9&FÁ�”<ÝÏÞ2ÞJ¿ïˆÀCî= Wùá øQ6l@Àá¯ðA Ã0.€<¡¥Ëçô7�é>Íß¼¸?%A0�®„0’Òe%JÈϰJŸåáX»DÌ“ÑËÕœ�û¬ý´ËRˆAsá”GçÄŠ tƒð `ªY7m×t“€Ÿ! ’©>óËóœ�¹ÂŒd< Ì/«Î˜•,íÇæD³F‰:ˆ'‚ùÀŠTþLÊ1`Z‹’­zòå9ô&ϱ¸ç c.}TŠcFñóaؾm|¿ó³S“Ÿ_F\ÌÓàí¼ñ l ÂÇXqHäm<¢u{[éË~ëá¿ÞŠ0æå±À�=â äû-I¢Û<÷A˜,ƒ¸£þ/<§ÈØ6VíEDúØÜcéÊW(ZŒhTkQ-J]"5¹þuÑ–Ÿ¶[K¸‡@öþ0mý‚Øè#Yždííhî~­vT�ex´½ÚV FnVG:rÔYU‡b%�E잊f2Û è ˜8‚ŠKº{ñ®×ìé?O)^êxTqlEJ]œoÄ` AÐ÷ŒÛCõÖ×#+ D–¯ÿ®_Šgí Ò6)C´uÏAˆ¦m 9ÂòéÅúDx£ThÖAj/òƒùjúlDˆõà‹®œq¡d9Ì«ôÏ%™¬ýã�€¸ jÌ«îcž?ÛýÛ,æù4~ ?Ó%ľܪq¤‚ò"ƒ?vû”ÀyGž«_T.Ñy~—c=ÅÐ'Ù‰Žï1À¤b â`•bÞc­„kˆµ”0$^ÊiXc­Œu¦Ù¹쬇վY›^>goM¢ö'÷ý}§ÈòøW Šð÷®“TZšŠJf¤®ÿÂk=¬öÚk¢¶åk@ÇRþÞÿ4S&ú’Ž"AAÄËnŸd°°[Ï瀜8p8àp@áÀKt(çD×< 0Ï”ˆ¥�LëYÀÀÀea�`D0Hà èØÈÚ]çÌñhÒtxdš$ç`êã›6¥7£Y�út,`àfØJ–j0Õ/ZTû™tG÷=¢Ê}ûjÝ߉—*äÌéè` 5dËvIånÎt  QçÙ³éŠðÜ]!xÇÀ¨@‡±¬ñ¸Ü‡R{ ëcY¯Ç|BSJN¡3ë„´*Jô(Z°Ì;gïhšŒÐ„5DXcrŽÑ—˱={øL‚à‚•šnNqS±”ÇæXÕ¶"r‶Ó{„pBî{wô4£UrÔ�C°…=h'ƒ C€ê¸ ıÜ>yÌä Døh¡¿IXèÇ‹ ò¨±J}í0ÄF Q+×%¸ü¡;,ˆ/�FEyhHC³šÿø‡`¤Ú…¶tý¢Z²{�fÔ" d&q¾VôUYöþ«ÈE¹™ÛÅy›•PÀ„¾Rð¸:A¸+É—à1U?À“¬#ÿÍuãZð’× D² úÈ×X@* ¸…ôÖŠüþmÙúŠ…¹‹ðÿ‘&5÷²äÀ„H |{òÑ=¸'îÏYÌChó B`(0æj�Y 3ŽMYƒuŒg Tc=«›¥GÄ= «Pç‘lõÔLì›m¥0¬L ðÎ6+XÚÚ„C-< ü!hø˜òECøµZòS½„Ô¹YP Ÿ_=Ç|üIÍ÷Œ‘Ð�}ÁÿRÕØúj®±„~ á"„Œþý¨Ù±žßo|ß�ÚñüUÿ;±oÜJMm¤-¹Œeý9†°B?V&òþìT��Á)¾k(-„dñвӆ±`¬•^à€OXŸIŠŸ˜AnuÂðœÕÊçÙæu€­ Õ"(5?FÍðáÿãy¿§(‹-‚#8½œCdÎï<Ÿá�Ùtfíš^aºfÍ€± ÷ãû�éñÝÇxðì?Látì»›–~µTëøi´­¥ÈŸÂ˜ì>æxctë¿Ü˜²|–…ªÍâ΂T E`¡—ƒ©Èø÷©¸¸*g š‹j†haÏø=´¬Ù2w9XÖÆIG«ûøïÇîòXEÐQ='Ñ‘=b-±éO÷�üÚ‘ÂÞ/ZuâgN¥î kÜ¿ªÀ[–±»’õñß¡6[¥MWSÄ>ž÷=üìa`FR‰@æa>ǼnFPh^IätÍÊMÍJ™§©ºPjÀšG¥�í¸ìï©à ó#ƒ?�ö‰u ,@°ŠËQP¬ñ è‚ë>é7¡è‚µ+Þ‘˜¡P¸œ¨ƒ­ªLƒc¬i1�ŒÂ=$ÉÛ¼gç>°³–cÁ kS»k’оSäx¯^àžëo™g¶®•y±–}á?´×DmË×þAþ†OÆÊˆñßzËWQ�|#`a<–…�éÆcYÎùw8àpÀá€Ã‡aÉ�—è02hƒ]  „± ŽaU0¤~}-«L¯^ôˆ].ÁÚcq{^�ñº#GÒÅ›üõÍ…¿&Vwî¬ý_c ’ùÛ·Óf¶,á↚¬•5*UÎ�›¾`ˇ¸^ÌBQ±÷Â…´zÿ~­�ymÚhV"Ƹx�jÜØ«õCó 47R([»pašÆÖ VåÊQÕq'Zì´:ÓŠâ½'$7vÆjÑl„$¯_ÌVÍ=5ÁÑ14¶á’¡Mß�Ö |A£®¯Tá(¬ tûa¸µÆ7¬7:7 Ú»M?½¨Œeü�?¼¸½�ƒ?Èõ\±‡~r¾->>¿ç¾!x÷—\tøÂó¡} >¸'©€>ª ´_=�èú‘¯nA£¬A[ñ�¯æ÷áR®5êLçs†+"+ÝCh®¡#ApÚ¬ Q™Ï„Æ·1_=° ZᤠÑʵÂÅÓ,0ý–#áƒ×Z�i3‹ÜÆ%…«¸±€; �üh®ËíH 颯WD]åÝ>}"€hFµŒ¨`ëV¤†.´b!XÀXw³ÚòãVY×Ö™A«^B˜ 7O»6èu\7hé› ¸/ñL˜¹&2«ã+ ®‚�æíφ8ò¾•Z¡ÞK X:HR­YdšÕ?„ÝàqFRµ[÷&ú²£±„~ ËXàøC˜ƒ � šÎsKï–bâú` qè±U]F©šº…8€ûe¨š�Št.BÑãðÅŽ`»ròœ„{¯PY¡`áïþºÁu‹Ò½øRW©ïYSu{(Þj‰Ð¬ƒd;‡1×oà÷Ú�+úzÊÊ-Ÿ¬§ºEZK±~2#U«,oŠÆúÒ’ ckÎsu÷Žª‚ƒ,ü ´Ï½[y-WP¼ÏຠëÞÌ#¾˜§·ßs¬ê®s#ÏɪE$úÄœ‡5€]•ÐÖ¥ªÕe+ ô>ÍzXŽ!�µ©Ý5Ihß)r¬øÇóˆ5,œ¡˜wj £â†HÕ·á½–=…Å5‘m…ç¿°0˾�éÆcYÎùw8àpÀá€Ã‡aÉ�WèK†ÚÖ�¿ÿ&ünq,XnÀ’" ÿv¼Œ„Oë«lÙq†­@Þzã J'Ár…×èÿ)zúà)]þƒ?¶ìHž/¹_n"ë^¤±BX7p}�µwS ¸ÑßòÎ=h«Ac `\Ë@pç¡¿+çE]|Xfaa ¯¾üi×[¤OV Up޾°'x,ø¸…‹õ#×[øè­˜Q|üV¬Í`ÂTo¥õ<ÄáØq‡ë«}â£9< Ö/p×�KœDðÙ Á¤ŒÍž};m;p8àÉÌ“°R‚PsI¬8ÂRÄnüÏÖÃï®rNBCXsìø¯\`^?|]‹_áý�_.¬â¤ŒC­Ï¶Ö¬4¬Æ,�Ž‚ R‰ŸJh.«.m¿D°ŽMš3©ßë(¬i (r÷Â]Š‘8ÅIG³î°ê÷UI·»rø~ˆŒk‚µ3Ön˜³]¼vLÌë'¬‰ÿ ÖkFNÛ]›Ûy™�_Öõ°]ÀÂn½—ùqÎÍá€Ã‡žÐöÃ2nZd¼�ƒ½»-ˆäaGX÷p?…x)v�œ›t²S3âë¼*çñœµßã«rM^•ó´'¼˜5#ìá�‡tî·s´±ÇF-~,2¾=÷-Å|'¦×“r€¯ìq2¼ôpÖ¦/ý%öûívëù=0§ Ã‡8`8@‡s8p8àpà?ÆîTÏsPœÞs¢yLÏ’/ÿb�”Ikï<½ù ·×bøÕzUÎ3ü8ö-¿*×äU9ϰ¿CþÛ-"âr¨TvÇã8e¾È:|qÈÉw8ðrsÀY›¾Ü×7�³³ XØ­ÈØœ²8p8àpÀ:œ{Àá€Ã‡ÿ1 a‹ƒ }E¼‘Ì9‰J~*‚–ÿdžiÃ�ë#\Û!ª¿±Qì´–u^•ó Kž…w[¯Ê5yUÎ3¼ï—ÿZû[~ÚBë~XGQÞˆBÉò$£ìõ²Ó‡ 9Ø”40Ù@ºÿç}*ø}A*Þ«¸5œ"¼LpÖ¦/ÓÕ Ý¹HÀÂn+]»vµ[Õ©çpÀá€Ã‡|ràÿÿÿ�“cE@IDATì]¼Õ>Ò!J# ¢tÊ_”PB”)EA0@¤D:¥»[R@DB�îN))iðýÏ7÷ÝÝ»óf÷íî êœßo'nÍ�o'îœïžsž a!A@A@A@A@AÀ _ýµ—ÿ’»téâ_A)%‚€ �ÀSBt�šTA@A@A@Aà B@ˆŽ'èÏ–SAàD@ˆŽGðO“. ‚€ ‚€ ‚€ ‚€ �Ñ�h˱A@E@ˆŽ@“ò‚€ ‚€ ‚€ ‚€ rö¬µ�B8·|™3SÍÂ…©xŽ®z«w曆»ö}m´©T‰^Í•ËW‘HÉ[Øj!m¼‰RdOAmöµ‰”6�YÜv1m°�’gMNm¶u*nZtôµD*"|�ÆŒE´]Ý áöK8†höh¢Õû±ã=÷ÑëõøãŸ•ÿ‰“éÒ�ßúÍ|J‘WîM¢~3=ÏïÆ¿D£{ý¾„èè~¢+ÿà>!Jñ Ñ+%ˆÊT'ªòŽJó¬ùàöÎ�&ºs›ÿ³¤�×ÿÖó¢m(%ïÐEêµ£ "êÓºD×.óÂütωDk¸ìüñª$þ»Ñ¿†­‹2à ‚°ëp¥ÐiR†óÿ©ºoÔ'zûÏ#BéÜŽ_CçN©ô¼Ì¹~þ£g™`öö³âíëæþÕlñQÉJªì€ÎDë—‡_ï.W¢¢g¹6|-ÿsŽèù<þ)MfÅõÏ6üÙûîg~¶ðëŠŒŽ ü©¡�Õ©²Ç}Ñ0l=(@Òg!Ê_’ïI¾bD2gÿcG¢?W‡=®=dó˜Uîg¤�D 'ÙK%LÌäj¢Â<$¨È×�·þž},¢eVtîì²ÔØuâµ;–nß»‡,¯²°cGJ7.�¸x‘ê\ÃóFþüôɬ-°IÃAƒè[UhQSøùçõ®µžðÛo42”À@BŽtéhè{ïy”Á΂͛©÷|þ2a©_ªTbå[ªt™6�¶;f•qZ€DŠ-ònÙâù„²í«V¥*¯ðH4Š%:ÈœÂãNt`чo²¢–•ãÞdÄR¢bå¼å>Úé·oñÌáDD÷ùÖ·+×–Ï&ú¶%+"þö~ŽPjn¾®,i¼—ŠÞœ’¬øÄìéúuè½ÇŽÊ£ÍIÔ%ô‘÷Ã&ál|ö÷Yñ[E‘Rè‡þ?[ò#wõwÏæï&Ê’Ó½�ÿ¾Zn¢#ûÜi¿±ÂÿÌqžÁ^À�etŸ©î}lÍç~t¨ïN{›¯—¯XaQ™ÎDKW?‰Žñ¿)Ò Ç¬ú"Ñ!>¿ðdâï¬ø+æ.+®¢ÉÕ~U>Ÿïǹó¼m}шhîXo¹ÞÓÿ`² È™ªç½œ™Ó‹‰‚ÊuUŠs³œÞ†rs“‘ITz^‘3úÞÖ™³ó;Ó¸–Þ¯è¾&½Õ�¢ÿ#ÈS¦ !úácE\šézÊÑi%M¡S"w�{ÏG<'[va…g×àÛÀdÍÐïˆâ²ruÓ5EÊ›­Eµ¢Ç<–·í¨&:®�¹F}Òö±_kZ-z±ß°"s”ee=ž×¾äÝ6L�ö÷,q÷Žº¾±Æµ�k<:Å<×õü N”4jŽŽ‰,_6ñÝ6&oŒùÕó݈ƒ¿V3ë1ùåÏ£w¬]øøF&ês…ó vLbGÏßw &BÀ’PKûwˆpŸÂª°ËP�þúQ›×€»†vþ—–°¶žÿ=“’‚€ ‚Oöasú�Ç� ;´,ݶ�NýÚ–šEŠP¢øñ­í´É’Q¹¼y­m;Ñ Œ�MÂŽê�ˆŽwîPÓ!CèÌ%þÊ`ÉÃua)ˆ+7nоӧi.[[\ú÷_ÒDÇ�Û·iúúõVys±|Ç:qá‚•kФ =µ¹Ò§§‚Y³šUè$Ÿo=iRµ@j÷úëåìD2{ׯOlíù":pù4<˜Ž†’*S¦$ô3{š4tíæMÚ~ü8ÍÚ°�²>û¬W¢RN&Y¼I©œ9é¹Ô¬i�b‰.¢cßü}tü·ã” U*Þ¾xPg} Æ¢c.+3»¾ïV¢UãÙÕp—"w)7#»6³’Ž/é¨R¤h$VÂLeÌ.ƒ YHTŠÏ²•gO7þŸÂæéÄDõ>$*òã�R);7³Rr*lÁ�ì­ªÎðüû[™dT=ÁÌù�†^EN0ë±4?z`­�Ù¹×y¶ …ð¸PbJq(Ç!ÿã:&‘7p.§UUyXâüæ÷>\ô¬dgŒàj¾?´@=c‹ÞS×F•ˆNs§}3’è­¦îý`·¾nÁ ìaªvÓÏy¦­zí96×øS·‚üç^DÀ òã³n©Ú°ÐÒÒ¤½çìÝ +‰`½�EJƒ�Ô¶¯%¬`]a ˆÓß«CYs™¹ê˜86:cûªm¤Ù•ü*G-áRV ³Þû_%a‚æÞ]¢¿O-™®¬RPîU~…Vœ?v#$ÿ^åû?©²¦x±_‡ž¯g�¶AthR%Y�K™ YÝAPöœáklÉ4EJ¢, àÐ[òqØÓrõëÇqÝïùKá¶iµ*‰ÿ*2¬ˆôqÍ5\eášÂȳì›a­0̲ámPEYWå.È÷ÜÆ°¥£ZÑöˆaS„è‹It§z\¾HTœßË�—‹©ëÛgùyðÇrvKµ{JìÏ~ÜK5_qÎÓu¢r�똹·™Ë�÷Hd³“<°,ƒ´êJ”àiõÌÄ8gÓ*"<ß öwÒZW#úužsò£R¢ Ÿ¨<Ú~Î3Ø1‰ýüƒy§`²Ñ«¡ïÿ@ÆX�Òx8Ðçž×ðöƒ%,‚­^$_A@0x"ˆó„±ÝyêTZ³g�•<ã“O(%Ç̰‹�è@þO�ÑK™3{u":þØ¿Ÿ:Nb� K5vóôqþ· ,=VíÚEeóäqY�ØŠX»°DÑ$Í”�>"¸Ñ O¦®[GC–*mTªÄ‰é<ÇIÉëéíÚÑSFe'¢dL?>OS|¿2�ôu¨µLö´i©w½z”˜ã�˜‚ø$[Ž¡ò/½äJ6-::T¯Nóåså=¨�è "ëÜ¢£¯�póP¿¤R¢a†->ì3ä¡<œ9ЉVº>®b*¹WŸ!Jù¬:Óêy”‚3¡”ƒ{»àã î¾L¥¹½LtïC!Å$ºÝL¨£Fí²+uÇÿ¤Ž÷pcÁuÚ¹™Ú†"uÜ5s f(š! ë kß›¨+Ù!pMV1›J‡[+\óÚE¬y0£ñjn^WdÃÆP…êÂ¥YoVÐÇeï³O*%¸¥ví�ŒxkÏ×FŸÏ”’µð+VÞDŸ òÇ®&*PÊ[Ißé?±²~xwUfö6VŒçõ^DâÆU _Ìfþþˆ®‡çf›.Ÿ Ø(—Ùý\s²ðçö2 •V©Ÿ39Óàc{ çý³§Ø%Nz•‡çhg¾žLõ^•V?¯pçÖ+®È*\_ SA hÁl×ʼâ¥"¬Äd…åÃ.¥øÙzñ¬÷¹Q­èñ!:üA)jËz¬[Æ÷PyÕ'X0Â’Ñ”¡ß²KªÎ*®¿ìÎ5Ýã¬8®ât¸s£~ $ È–¨v›¥Ÿ%°¤ƒE�)x·•Në&;~ã{Ô´„ÃÄ Â›�‹§rÀæÐ�j={=�@¹ûQM·²Þ¬‹^øÏ…,'ÁGòǵÜ3àÍ2p;� Ó˜Aï$Z�ùrqVlƱEÞRŠi³,,/–5SXyh()Í(Ê1›rïV&ª°Â{�ÊýeÑ'¡Jƒ~3x†8Ç_ѾÂMeº½®vc.+=2¿à.k|Ô]¿æN3·@TÀý†¸3ãHèt§µ·Y£ 8:1˜mmBf{þ'è#,+ ˜Uå&Štì6ã6@鿆I¨È f¯ø8öV.4¯¨¸öçàÅüª?XŽøžÌ¡ú6Šõ‹�_c¥ŸÓ蕊Y�›+m |q=då®u\kp‚€åÚÚA»O‚eÈ7`èäöCµØаyU¸­j×#°úºt±D dp_'_òèÈ^å¶nñ_%}çéYûPMcå�7A€í YU.¬#`%á�˜õ¼Ýcˆ9²Ï²ø`åž/‚ÇŸc¢ ‚¦ÏJ]ò¼|µ¡ýÛ£ bi˜×&Ò@*êkдøÑ�ÿJ;ýù|Lq[‘ñ‚ë³ÝfnðÛ Vñ ³‹]AlÏÇ>ÈæF¥Ýº.ƒç9Ü«á¹Áu�ëÃ.þ*zìõÝÿïÞ´¨õ"úsÿ!6�{Êß{©›Å F¾}ÂvšU–UD�žñTŒ§èåÆ/Ó–Q[\-ňƒš¬iB鋤·Òæ¿?ßš`á*àc£ÉÚ&”±xF«È‘Áy[Û¯}û•ú²”cÍ1¥ÇÐÑÕG-æãc[cìõL/º~î:å~;7�üã$]>Æ•!I3%¥w¾C©_Lm¤ªML YúÙRÚ8`£kR�Y¨ÈGE¨|Ïò„s�l ô:ÀXc�´®ÙÑ ñ1>‚ØIÃwùÙ÷Mx'däûI+ûUiÕ&ÆpÛf—`ÆAöxQö6Í}_™æ;u å�Ïu<ß!¸?í¥¶Í¥&|�f’æÅ¬e†ws»ÚÓõñL›¼>lÌ��O0Ç¡ŒÉ%vy¥„™î�ðƒÛ¯ïZ©x]ö6à" Ä®}"Qd\�އ#265¯·@Ç$y§hÔòÀLÇv DÇhVà¿ûÓO֌ċø¦N¨Æ’Ûr":ýõõœËš-–ô)RÐ×µjY1*¬„�K8þÈ÷³•ã›Úµ©T®\T«o_Ë}UÖgž¡Q|àê�It´ªP�Žsl�ù;‚r(ñFtl:x�ÚO˜`•©U´(¡ Å$:à¸:ILÖ(e í‡S~ i˜ùøcæéöÕÛÖ‡{ÞwóRŠçSÐÑUGéðŠÃ®¦RdOAmöµqí»ˆôå®›Ûš‰xn×9W>f1^9v…No>MPR|vþ3ŠŸ<¾+K?]j̈́Ķ5ãsÏyòEtÓ×+lÍÔ¼ysÂoyƒÙ¿Ë�ê�D܃ò|Û§î´†¯*K ¤Àå ,ü|Âo<üÿCàâ3¡,Àl8>îŒ×>³Þ¿h¤È ¸Føß¬H`=ɲ™J!‹º¾”žšÌ� —ÓǸ�û<«» " ƒáÏÕJa1l1ZRb*åÓeV1HàÎhÅO’¤+áÚ|£êÀZ¡y%µ�Ù¡ˆÝaWž¨Ü°Ë¶5TÛÞ½›V±2�•*û¹.šÂn•êª<ࣱŬwà‹Ùùö�LÄRÁL=-:æŽow?„ÙœPà›¿ÝÝÛ*…),>tl�ÅÜ×ÂTÀ¢î ™Ì§ZÁ1Òga«Ž1jK;7ÿà Ò} _\'²30ArAðme/¤7÷Ù>«µ]m·á¹”2V:‚}#À&,8à²LÇé@|(/ØÒk2[º°"×\¼)Ê£*ÞÄ’CJ‰’±9�QQ„ûÒg*+´ùÜå2«ZuY ƒÙ¸Þî» 'QJu§€ëÞêÙÓq½  – °`ð&Kg(Âù=Æ3AVÏ[IÏt<+@²B@¨‚ì0³·a­†çU ¾"C¬÷¬ÕØÀoiS�ã½ÌU–U°ö�¥‹ôõ#¾ŽaE…ÀpÉaÆ4�kAŽ—¡xË‚eçä�V�§Ÿyš>:ú�¼1eÒ“hÿ¾°X`ýúBÕ(F¬´á~ËJé%:” ²ß—Å&�5Š–ñ¤!VÉ£Ùš9^¼xaªzÀ…”ш—…{Á. (ATB:þÄñ¶ø}�E‚&³±�w &~dág;,?1‹âD";¤ Ä‚`V?,!è“iý†¾|ü½§E¦*©–æ;)¾ÜJ!–Òg¡ÃF'ë]ËÂ7¯ºwáÞ1Ù´ŒìÁÖdõžrá‰Éx­œ§,Ï�;€ïsL¤Ðò ð æ˜ Œ+ðøKYL~ÁóúÔQ+ɲT¶{�0J—™¿¸ŽàP«€ŠÛ†4XÜæ-Ä–k¹ÎrõNÅŒyüîHÿœ®¥&ßDô:t<‘±©y½:& ö�âFK‘þ˜´^<ª16ûèbÖõ÷¹×fñb¸q£Yղ쀅GSž0™‰½C8I°„E°õœú i‚€ ‚€79¢ã6k"gs| XoüÊqBŒ3KóôÓTŸã@Àš#Åö&�‹:v¤˜¸XÌ>¦`¹�)•ú˜t":p¼>[:ÀºBK6Æ]([6z9sfz%KŸq9t¬%:ºL›F«yfF îç¼Ï?§§ù£¯ç¼y´ˆñ‚Lå8Ï„Æù°Åsä zýû[Ö ¯åÎM�k*í�7¢c“"},°Úm^®Õ-^ÜÚögaá•_Ò©Å�ÍšŽÊêoWÓ¯�ùk“åÍ oˆKø"š÷þ<Ú2Raä�èÈ×0US�n\¸A=Sõ´ª¾XûEª5µݽq—º'înY|Ô[\�²é)µêËÅmÓ†|ÁôõÔ©S”>@7iü1õe"ÌI0«ìÍ�êA!…Y×�`f w¨ïž¹†à¸ Û©¶°4I3òà†é�œêÃDfÆëxwn+¥,fƒ$�BÐ.fPAäÁ-Ô÷c=ÝCá˜]�Ð�}ÛøÚɧ¶¡|ÇÇ„é;Äô¹�ýŸfñ¬ÍØR¤KyþøÅG, FX*@‰7LPBxíÊI(ô ôÓ‚ÙÙ°¾€ ÚÄÌyÓzE»J2cLèºXïß®ˆ!¸Dpó¿ur“c¯d5V #¾“?Ít÷×RkÆq5?2p¾ðë�(©jÖ˜á‡:°’€[¸ßÁÿë�ñü‘�: 03Ý›«{üÝÇñÊeVn{t“¨ÒiXÙÏàmEXàCq:àÞª.t.Å5,4@zàù�‰0�rŸ×S--d‚ÚbÖ+ˆ&\‹Paf,âÚÀ¿9äËAÊ�‡Ú ~ùý‡ne3\W¥ mßÞ"‚WC¹ç$°h€e~Õ¡¬ñ&p¹Q¯„Ê…õÎ1Áµ‚™ªÄ¢AæM`ekHñ *¯Úó\Â…A-f ÄÎ1Ý¢AÉË$­ trc£Û d�YÂpýb×Çk|_x³¹sµ{X—Ôù@¥ã>9Åʲ�«Ô½‡gîW{Œ$ø‡‚Dž‹x®ÁÅÎR¾Oq ‚䀂ÑNhº�±-s&¸‰h¶®­hpß÷ä{£2ßo<ó0ËŠBb¶€Ðq˜´;×îPߌ}-‹M¸´l¼ª1ÅIÄkLˆU|ݾ‹7¢ã£#QÒÌI-«��ƒø"diµ»¥Ê™ÊrKµ¶ÇZJ_8=5[ßÌÊ3poÙ'm+©Ö´Z–ë+3ß¾ K‘yÍøB`i¼º1e*•É£\x®êºÊë¶=Ø–’eá‹"TL¢£h»¢T¡ßh¡²iÈ&ZØr¡µ÷ú�ש@‹:‹ð‹ibe~²ä??UTÅ"9°+ÙugЮé»(fœ˜ÔjW+‚…í{ì uäÈ‘(â·`²GbŽGg—@®ÒE’*²ïg\§¦`L€ø°êÀõ4o§Û‚cMfã=�{©TewmýžÃý¹ùº;[ÁŽƒÌV@¬c2&„ÀŠ"1ߨ"„¶“ôú”hŒºäÂÄjÂý‰|0íRí±¥Xm5Qû%+)â]Oú0'|Ò“]ã¶×µ >Áü'æ9€9®Çp8›KXÉÎÏ/¾?ð{“AV�vŸ§ž,�q7®eZàÂêíÂjÏ>©E—Á:˜ë ˜ñ°>¯`Ʀæõì˜çÈ;å!¦Õ£Q§J…]F×xX9˜ÿD×Å:�çÞŽ³giôÖ­4qÇ:wÝýp‚.¡ë,`åQõ…(6.ÌP –°¶ž>®¬A@xdˆŽ=ì& ÖcùE|ñæM×¹Å�Ózù6æ™å9†Fx¦–¨ Ñqnš ²f¬U`2¥c�VœˆdüÉ.´¾›5‹.«/’p°îJÜß&ìF*Çÿð%�p;Uõ‡èæ�;”›cl äX=ïʦ©�¶•*Ñ›…ÕHÙNtÀ*}^¾}»E”ŒoÓ†Ò%OîÕ¢cÄŠ4ñ7ɳtä€â(þ ˆŽŸ²üD˜­ˆ�ø˜6®¬úfèKpAá�è(ß«¼ƒõz¦ìiÍÔ4Ý?ü˜éGºrü Õœ\Órí`¶onûCtÓ׫ô½}{ãËÐ<¨—íòåËÓ[o½å%׿ds&õ;¬¸EåÔQ¥8†¢þ‹¿äYóô1÷,r»[í ?X{¤ÉèY Ê9cTÚê3nD—Â,;ÌŽ†@10{» .­Rœ—_ñ-k(*0ó^+(�üWŸu»aXvÔ3à8\}ÉÊa�/¦`V øá\ì÷FTQ©öÀÔæ¬8»òýÉÏý„4ÐÿE÷}FŒˆ“›•ã^š. æ±ÒÇœqˆRæµ¢ývCY0‘"7º�æÙó�”r²@B…©&Xp>HCy¸‚òÄÝ›À¶0~Ù,U³(±.JVSL%˜VÄhW%é2«Y›:Kí‚D»þTJ÷á¿(âÖ1P0à fg"h4\£Áü·cö0X8AµŽRµÂ.õLþ°9ž)ökÖÌÕ>­‘6c‹"5Í|s{"?`ÕA<(2‚‘!ßðÝEÕ„+_¾íµ+ŠðŽK îcÜ¥t ¤Àú÷ ˆ�YpA2dH§`,aÜGroaÖ5HH³}qmAL—9*%ìX=ÂóÙ£KáÂó ÏN»´ø’ßíÕ,d{^dí#f b·@ðÌ6ƒ¡«TµÄ{n´Ð_'…žy}áy�çÆƒ’mã¶Ñì†Ì²8 pi¥É '¢#vÂØÔé_fY6ÜH‹Ú,²H€Îw:óˆ-GÿEs›Ì¥”/¤¤Ö{[[åÌE DblôNÛ›@ÐäkÄ“7F‡¾Ñh“ÓÙxœÄñCžûßsÔp%ß,†h¢1;ÚŸiOq“Äuå"ÞY¿Ìýèʉ+”®`:zo£û"Ul�øã„Eš´ÞÓÚ"4\yãï­ÓЗ‡ZIåz–#¸ûš8q"­Y³Æ,îvž¨—ÝÍFD# ª¸ªÊ-a¶<žçÓ†©w*òáÞ D¤“ÌÖq™tÖZ¹‹˜`ë.ºsp½ƒ@fänE)Á¡ Çûkð|3'üíF¥Õd ]râïW£˜Þó\Ã]#b™A01ºÏ[üY†: &)œ�‡wHHsò…ž(€gêü=ž–c° €Û'Èý‰Þm£¶>Á³??G‡uó´ÔÐd:â}­8¡ÆÃ»ó½Æ·½99×^£ÒŠdCÌ!Œéì¢-A–€4q�!�^ÁŒ‡ƒ›¢Ï‘1&A;þ¾SPV‹iéŒ1—·Éº¼^GÇxX ë`þ³~0Û÷ø¥»èÀ‹ôX¸?Á5¸–g&¤Fü�ߌ­<²±n XÂ"Øzº²A@üAà‘ :ö2É�“IS pœ XnÔÍ“‡’9˜ª›eíÛÁhdH¸SšÔ¶­eá�è@y�°zXŇy¶„]àj“ âıg¹ö!:6ðàäsþ8„€DALȵ[·¨ ˆ]k’¾ XéND‹72Ä"tã£}Õª^‰3I§7ߤryóZíú³0‰8÷åº*+[ÃDT@`|ï[kö >¢ñ1mý1î�è¨2¸ ü€µ—,šÔ¨øcE‚oiÈÀœéÂÞ ôúPžÍؼ€•æ´�èˆH_�ŽÕi¨«gïi%¯¿ÇDàL¸:‡òbV,Úãh§8cƼé .mÊ3A€@�Þ]híCæîTnOÔžZꪂFc3çL7 ª„çJÆ2¬Œ†¢nqàÇ.Z`w× ËÁ¢ctþÀçºø�6%×+Ji€YÕ¦€y5�JÑJìA pWW AŒÉVV…šÜ&¬=0›JÄ9±·¯Zv^âƒî˜�jw“c¯a~¶êªÜ7Ù˘çkø)Çlù:…TIXBÀ•ÏnV¤×ʯÒ`ý€˜#P¢TÉáYÎÞ~°û¦+´QŽûÕ�ûgS †´ˆ3`ºÝzŽû‰k ®¯@Þ€dz¯#»êÎJä×”rHû„6]\à8ß�S�Iõ,Iæð ¿µÅ�½/þîã;n¤0‹.¶¼ÍÖǬL_ c�/ˆ‡ƒráH7IF¸-ÁýŒh7MÀÇôeY¦]í�|Ä,Zo+m¡…2¥¸;‘¨�b·•šiÑ‚2æ}h*Duýè\ÃúV�N×;Qìü°4äÐÒC4¾?ðYœˆo–�aѤ„Ž—ùÁÁ²sêNšñö zúÙ§éÓ3ŸZiæ"P¢uuŒ�,íÿnOqžæ �n5G¿:ÚÚö°zµRÜ1:²–ÏJõ—ÔMu¯æ7çØ!Ã7S‚ è³ nÖ® V’dHbM ѾQ•Ÿ•��ƒ7Ò½›÷(OÝ<N*5ú—z¦½¯#ã™ ‚ãƒÎž×°Ž³„çÕ~¦ØŸ{Þ\ý;2û’ïŒOЯÖ_›¹áo#H8,1µ@)ï-@³¶¬Ôe�Ö ¥A¸fÏãÎÅøuñ÷;¹ 2-fßL»Å|ø{LLJ`ŽápÕ|e•·•¸…ÂÝ,§ \7 ‚í×ê}ÝB‘mÀ“sììu0¨k`ãa×Ï26�¬1 úàï;eµèoXòØÛ{H—×ëèëcaÌbÖ�èöyöJ1‰-\iÁ¥ÖƒÄÞÀ{‚ Äý‚âä žEõùï¾]ÿ�ßM«™Œ±�]ÊeV±Àì±—‚™í›Á�ý™¸aÖ dûäa;dU5ຠïJ,1IÁ¢n¿ì dÓ½çè•*þ™ª­–sÆ(W�ØC\+ó��O°ÇĤ椴Û$eõ3N[� Ò–­ê¬}/½Å‹ ö:t<¬{§Ç¦ÅuxcÓÈ“ þ¾St±ÖÖ$þŒÓÍzÑ16�ìb¶Ñmæ$é·cÇè£_~¡¿þæ ;TޱìÑýúY{BthTd-‚€ ð0!ðHxVA°½„ÝAÁ*AKvôÝ�ÝH5à_z¿¼ºœ},Ñ�v`1Ë ¸œB¼‹fL|\¼vÍ:ÄòÎ�-"Á~<ûþZ&¾d2’&Y2šÌd‚7ñ—è*:B’–ÛE<-§þái+¡‚؈Áá�èØÃ±>¡>‚k)bÅ#q":þ`³ÖŽ“&Y­†GØècëutgwœ¥!y‡X‡‡è‚- ꮸÖs±ÂbìVïDÇç@œÈÀl½±ï½1ì Ëç4Ò†½2ŒÎüu&ÂDG°}yvø0… ÉÙü8_+‘&exv.´BÖž÷tE R�—ø°Óî‰ì±u (èðÁ Áì@íFB»@ú& œfzÑH"PH ð®]^ã�hXCØ]ÙØËé}=› û˜fΖFf©i×JáÚEy-°¸€å$KNžm»[m›KÄ)@¼� Z¸€¸y])Ñ¡Lw<.'"‚«ø7 k¸€‚Ë$o¢?ö}&ÕuõLF(?´‚Hç9­çlWÊcí“þº‡*ÞÔ²Ä�EÜð€T‚ôýœ-^zª˜NÊOU*°%,ƒêð£kX­´ýN­À•O›o=Ûû¢!_Sã”›4­À_Çýü�²FÒV>sƸ6°R�¢L(ýîgå·-ú6»mákAë1³R.³R†™3=­Œ ¦k‡@‚t›‡3gnÚ•tf9l› XNÀ² 1Ý4U­¯,^¼µƒØ­Cõ®æsÂ[y� Xª@àr$”3H¹77"ºl kmiåíÙä­=M*ãÕ¾þrX7Spýò?~®�85ï'­ 98eƒzŽ˜Ç0-LÁÏlßíbL\"lýÙç¾Ò‘„©†ç¨v¹ç�øE,ÄdÁùÀ2JÖ%SßšJž0[fœk¦—�ò$‹çÔÉ:›1: ;§°õÇ«H”&}rú+mß¼}4¹ÚäH%:Ðð�—†ÐÙíg)SI&Ö4¶âŒõz¶—eyQ¨U!ª<°²u|s¡‰ŽB­9@Øüß¾ÿ�V|±ÂªÒîd;Jœ.1™DOö׳[ÓÍ6íÛ‰Ó'¶•_¼x‘._æ‹ÜOÁx7 [,GT´k ¼W÷¿5¼kAfÃjÁœ”¡[Àu�ëbÆ¿ˆÈ8Hµ¦–æäôÛ×{ݬè¶é~Ò$Sýi–¿˜M�ç&+Øï[¸;ÄXÄ/`ȃÀ'ØcšÄ9ž³y )kdX%C´;0ŒÛ£ Ï:=iÆ´l…Å0ò%ˆYôÍȰ%‚½ë#36�Œ1‰>¾?ï]kL0)ÈØã©­mÍ|_ÛÑ16�ìb¶ìöQ~öŽÛ¶�Æòïð%X„ ܃WÉž�Ƴûî{ô°R…èÐèÈZAà¡B€•£�Œ»|9¤ó¯¿†¤ïÛ7„ºvuýb|ýuHÙqãB&lßrýÎ�pÏç«)SB^íÒÅú�¿zÕ±|ne*uïî‘¿ýØ1WÝ¡K—†¼Ù»·kŸcdx”õ¶ÃdM“V½Ò|wïÝóV4äëéÓ]ퟹtÉk¹½§N¹Êésó¶F›�ñkÖ¸êL[·Î£í�ÇŽµò*|÷�G¹Ë—»ÊúûoW}&F\éþl,ؼÙU—ƒ¼ûS%Benþs3¤ u±~kº¯qlkBå V~ÿìý=òÊú“•þ×w?Ù¢ÃJûsØŸ®²lÑa¥ýñã®4§ öÁm•C»Nl_Ož< ¾+ #wêB@iõJ„„äb%ünÝô¿êþîz“:×›<Ø]æ¯ßÝe>|K¥OéN3·îÝ ù_:U¦Y93Gm_<çnÇðG:5Vu <í\zí/î6Mq.ã-õ�\ª®·óÐYåç‹r—q_6Qû/Ç 9uÔ[«žé‡÷„„ ìRòw?ûåYÆÜ»|Ñ]ÎÛÿc–/õ¬*ß»½™þv킪ÞO�Üeß-¦Òú|îNkZV¥}×Ú�‘-\«úظv§U­Õ* ŽœîÜöu·y`gPM„¬Yän#¼kaÇFwÙ!ßw<Ôú}©»�ð°Àu­ŸA;Ý�äp>ä[w½-kÃoRFåIöZ[Ú¿\S/ÅQí~ðºut©JÏ«z³é”°ë×2¨2¸Ž!–à9|¿¦ÒìË“GT>Êt¨oÏ�œ}<§ô4gŒ÷6Os—ÝÛ¹\Ý"ªL•ÎùÑ™º¨­zŸ×ùb?¹ñ¤õ¾Çøcû¤í®®m¿ÍJÿ1ó�®4¶è°Òz§qŸ8[tXiÝ“xŽEu¥«§¯ºÚß9Íÿ|À ®z\ ÑýA?Oo9­›÷X÷LÝÓª3½ŽCzdòÎÒÏ–Zù]cv ¹—/<Ž Òõ©®VúÒö|Sû)Íš5 h,ƒ±#÷³uçb·n„„䉩®­ðžñöŽt_· 'ÙsCBÖ-sçÿµÎ�‘q�»•��îmUûÞÆfÙˆlÿØÑ}¾ÞeNÇø¼žª[9»SnHÈ»ÅU~³òîü�O°Ç\½Põ?O,÷XX¿ÇrÇ ¹y]�Þ5úYˆw>ã�¦Ë©œÀ–Á\ÁŒ‡u¯‚›FƘÇ÷÷�¢ûŠõ¾mnœ—Í2s|oG×xX÷""ÿ‰n#ÐõµÛ·CØMUHé1cBž2t,зdî×/äÛÕ«CN:“®œŽ_ l½@�#åA@žlø³öÑ–²`ÿþ�j“'‡Äúæá�—q"&&šÎ�²å̯'¢�¶ùùgKI_©[·�òß~ëRØûKt �OÇ�·êý�û|'ˆŽQ+WºúÁÖ! .ì¿ê={Zeª|ÿ}úê‹èØ|ø°«=]ĉIt  MØ �ã{àÔü’è&:ЩnOw³>¶g7šíØGMh(¢£c÷‡C ŠÔ?׸ëy#ª¾¨Ê` …±(ìðQe´“ü2ÍÝöâ©aK˜¤Ä¶õaó�R@˜à˜ÅR8冄|RÇ}Ì#ûœËxK-‘ZÕÕÊI{¹•sÝmÏ‚�fô¥ÿ—ö’áïロpRU¿N!ïåׯpÓ$™¼Õ(”X•„ˆ!¥•°  PÌæO¨Ú2ÿ;àŽsžõ³*ÑeûwÜç÷m+wkhÇÁoÁDw:ˆ(0�>økwºÓ–VØ4*­rAâ Ü ª¼‰© Û¸Ê[©ÀÒµ²þ•Œí½ÀêêÒC¿scb*ét¾¹ž6Ì]vÕ|3'°í‘=Ü턇E«ªªlÞØ!!·oùœ¶5T=ÜO7þ [oæ(wð̈ Ù½Åݦ/¢Ñ~¬k¬Ã}‘mpqµ«mÏUû&Iй™J;qØ}<�µN‚g ÚůÇÇN%"ž¶œ_»úûÜúþ0 ãY£ËM&;äÐnwþ§uÃæGwÊï½·Æ .½æð&�D»†rûDÀÚz† ·Ìª»¢ÓŠ�±eÆZÛC_a�«ÑDÇ�|CKL©1Åj£o†¾ù}Òõ±Ò'WŸì‘îkçAæ}Þ3ÞÞwsÌqd¯=7$dTOuÝš o”ŠÈ8ÈëßųN¥TÚûÕqô¤ ï%Ãæè Ÿ¾6ï}L"Á½ß·ƒ;ÿAàì15qŽ ZFþ Îéõœ:%$xã<Ëdt§�Ì×Ï=ŒÑ‚•`®ƒ`ÆÃºÁŒM#cL‚ãûûNÑ}ÅzÞx7ÎþNB½èã8Z"òŸè6ü]oàIrì5#$!ë4 Gѿج_©9mZÈ’ƒCî›`¡ KX[Ïßó‘r‚€ ‚àÏf\?ºršÝF�Þº•FmÙBG 3w*ÿ¹Z5Ç‹ˆë*4¸ñàAúl„0mk×U‡8h×ÎãÇ©2óŽ­Ø¥Ï]¹B�9æÈõÛ·)cÊ”4®µá/Ã(‡M]W5:”ØÂ‚b°Y)bp$rÐÞcÎú…±‚ ùnvQ5r…r3ЪBªU´¨•§ŒI{N²_CÌH6ãtÊ–�¾{ûmË­—Q…nß½kÅA t-Ñíº Çó¿1ttÕQŠ›8®€3VüXº;tbÝ U|”µï-yõhr]l_q+Ÿà8,�ÜÒp[•8·o.ÀŒ�á݉àJ R·•rË öÜKH<}LùpÖ©¦_ý²5¸�Y:G­Mw*ÝǪ@Úº„éã~ö6x™Wç(WðÁ{x� b‹ Žöx#ÙâúÇŽÊ¿txAŽu˦ïîy»ˆ²æÒ9*8.|#¦ˆ=ÐîŠ9€ÝãÀ¥““˜qà* .“ìbb¥óàöçf�=¢ó½­á.¡R6"Ãöå¶kúp"¸•‚˜þ²UJØeí‚D»þ$B¬ƒYü˜ñó®tžéOz)÷']fTþ«!:1â%ÀÏ5m¿ð’Úv©ÿÔGœ�Ὸÿd-ÍØÂ �#Àt-1ˆ]%•fwbN|uðï†ì¦ã³>Ã¨Š PŠ€óïMàš .ºà¶ÂÉ5‘·z¾Ò‹&W炘 “þðUÒ{žéú.G|]s:X*ZC¼‡Ôi½·ë+ÇÃMÿˆ•áMŸ÷® \þŠvEñ\¢ü¼° ‚”Ãç:FI:¶Š½L ûˆÍ�çn½ÌÀè*ÕyiànÇÏ/¸û3îVZñ5ùÇr•ª]¤™nRð_À­�¾ÿt}�5ö‡,äí•uNä­tf×tü|Cœ íEÔøSµý –GW¥1¥ÇX‡/Ó­ •ü¢¤GWÆ—O‡–²Ò¢ÂuUÈýb‚þ»÷½öíkTêËRÇ÷µ3«þ,Ú>a;!ÇýÛ÷­±ƒ7מhG»®ÂvË-)uîÔØ´äÖ¥[Ô+M/«�ª¾@uçÖÕY¤�óTŒ§¬z©r¥rå™8‡±bXIp[Åf¶Ïm¸®Ê˜1£Ï2áeN±mZªRƒç«XáÕÑùp¥—jpÇwjö1‡>�qÆZÌw{ ã ÝÖ:VBx®Í:z[»ÿÑû.{Þ–|†èŸsìþ.?Ç×â÷½¿WAp×tŸïaÄZƒ{/S̸ ¸çqïC>ÁS¿'ÍqÜS"¾Øëï²Û® êœ qÈL׎¦ÅÞSTŒUÚs‰w~öëK— æ:Ðã!|®ú;ÖÇ3±Òiá�M#cL‚cùûNÑýÂZŸ+¶íW1e°žDÇxØìƒîg0ÿ‰ÙŽ?Ûµ¦O§»w»Š>Ï.�›±þ¢ëQR'LèJ·oT<Øzöã˾ °o=h@IDAT‚€ à �GžèÐ'Çã>ZÎñ †oÞLs÷î¥zyóºˆ ›8¾‡–™6Ða&# ï—-KI$°¶S³Â· +ë!e¿ù†Ør„pÐîEY#j“÷96Çþ3g‰Žß÷í£N“'»êcÃNt°5 ½ÍÇþçß­r/eÊDuK” Ò¦¥+[„ϸ5k(caöË$:Êñ•/sf«¾Óâ9Æ.W��çÍöö/ÜO“^Ÿd%娞ƒjNªI ;.¹DPFüsð+ïa :‚í«y¾Ñµý÷ þˆË©âE`PÞ²+QÃ�•2ŠÂuË”‚«+{?ïëî>ÖJ=«>š¡ø~¬¿®È|vk£>è 8Ÿù—§b q'¾k­Ú‚¯â™lIÿYq(>{‡î¬L†²¸çD¢Ên}‹ëàíj-™®”òsv¸’}nèªÞˆÊÆd©˜äXÍÇK)“‘gÚEðß"IY�Ï}�Q°4ÇÏɤ>Rd4+ê&ñ¹€B`(Á½.É:¥ÎãJ|Å[Ë8ÿ¶Xù‡¯~(6¡€?Ùæ 1 *Ž4?ìs¤ÎŠˆp—ðÜú�ÿs�6([ à×Êi�ëW¨Ì·xÄDû“NÂÊøuUÚB¾E?c¥ÀÓ‰•²ÿ#È"éFì–÷¦$U-ø^®šÏ11ª+<2òã~êÆ°ñVz~B !¸ö,ÜÄÃñc*l Ø€‚Ã_åƒV†¡_ y"*§ŽºcܤûóâúÔÅ øŸ „Ñ’=QJ¾‡M©Sˆc lR1O 4÷%ùІõÓ®Ë#ÍñƒŠEœo¥”oS-»Z›Ž‹|i’Ìô™_…ŸxV8‰Ž§�çË’ÃN%Kû¶ÇÉ¬ê žÞÄÄgüOD=>R%?ìÈ—Ÿ¡ø‹kÄ0žÅ�bå9fßÿZVõE"ü§ø%Gì üo A@øÂ/>q{@†ùcGÕð©}¹Ão=ü×{< 'U}C¤>|½-Gt‰Ÿ}P&ë î¨ÿ3?StloíEGúð‚ÃéôŸ§)vÂØTwN]ÊR6 …üBk{¬%¶–pu!*ˆ4ÞÿùþÖø±=pŒt…ÒQì±]Çõ¶a’4(ÂãÓ3ŸZÁÈ�ê˜DHŽúKêS¢´‰ˆÝSÑÔ7§ºGPq-WN\±âšÝ½q—’eIFo ƒ²”É¢³­1‚ o±…®lHÞˆW…(ÚèòÑŒ‘ªñ@IÚ÷+ý¾„ŸAʼn&¬ ÛÁ*/¨ñ‰©ðF©ˆŒƒÌ£èw îk¨/ä%B¬‡ðäô1J—KÏË÷ç’N¶Öx' n¤&cõõpµíÏrÛz&‹‹ª’#—ñ=]Ö³–·AOp@‰�O°ÇÔÄyG~Vã ©œ�è¿Ë1ÂÄÈ›<žØ·MÅÓ[«‰Ö¡P¶¡qåÆÑáJ[3nL+Xæå#—­™Œ˜kˆÈ&:†åf.×}»wóž¥Á>#¦´ÚÕŠ’fb-O�}5ÛŠÎíѽYÚÞ}D(§¡ä¾vÙ�f·Ê@Žùñ€}(¶ð¡‡ÙÉ(Å :i µ¯—wn³9>š 8^ŠgXéÇ‹.ÔX½‘µf¡•¨Õ¡_þÈeVÄWȪ‚�¢|ì8ŠÌÁÌÌp‡ÒbÚÝ´÷¤•ìZ`F3ê‚Ñ2“8_oÒœ ‹µ¿¨\”›¼^�·Sy 8Vî7H'(wµ„§ø†EL�—ñ¤ëèµS nü× ¼ôeiºÌô‘ÿO(`¡<€˜ø@q .>èG-Wù½x†öV |•׫Tšž¹—» "&TjàË;‰Þ-Ftýšº>§0†˜Ío(Ø¡ @Ÿk6c…Îþµà¬Ã<¥ÚëaßTØ °<®iX@¾ÄVO-Õ¶ÓR+Ã*ÖfïT§�¥-Ÿ¥H8ÔÂýÊ�uˆ©ð¤¿V˽å.%uAVèû×�ã¼|²ð5côE`_à_¾&+ã§ÛK¸÷¡\„’Ñ©TÇMÔlXÉï7¾î íùùÕèµm_ê™ÚH·[rÙËú³e”~þ¬LôõùEC&Ç…_«x¥$K–Ò]vÓ*u® ;! @@¾ž9¡\›¸NƪTðKÜgu‹xÖÇs]ß´ÊÂ÷Ÿ}fø€¯ø¹ÿ�»>‚#8½~†èœ?øy†ûëAËáå‡iâë-kôA¸oÿ{›n_¹m‘÷nñ�ÁUDÇæá›i~óùÖ1싦ëšR†¢ìÉ®}Ž7F÷óË�%w�ÜTs ßp^Ä$:PI9˜:ˆŒÿ+Gµôöœ·Ã´°eäZÐr�«,k“dHbÕ½}õ¶«<Æ@Šè¨•Ÿh÷5–Xó·«K~mheï»mˆ¾èïYåÆ¿Êšׯ©ðÖ¥‚éúX^�­Ò&š)j÷ú¾÷0p=‰@çáyŽçº“`’@«ª*§óžüЩ”sši¡‹I ó˜Òç3&.{yNpÐùŸ@�‰q , ã#z¥„ãa¢ þ÷1¿ª‰.»â ë_»õœ9™í`L‹ç8È(\CZ|=÷‚¹‚ë¾`ÈØ4Ø1IDß)º¿xçUÏã9þÖyNãZ�ãa},¬#úŸ˜m…·½ƒ¿áÓñdÄäñã‡WÔ#ßNXØ÷ua{º}_—“µ ‚€ ™<–D‡ 5LJt¶‘ö2؇UA¿F�¬¬ŠÝºÑ-v¹k�¹ŸñÜ&Pˆ74ˆN\à¯o–˜ü5±ôË/­õY¶ ™¹~=ýÆ–%@ÜV“gKÆŠEÕ ¤wÙò!©³PTì>{6-ݶÍjcF»v–•ˆ½A. ^ ƒ›5óiýÐjÔ(Ë�ÊÖ+UŠ&°µäÃÊ•©F¡BÖ¶¹XÎÖ)ß±uŠoD H”¾ Цƒé_Þ6% »Gª[¼8U-PÀ•¼„Ïé{>7õÚ½þº?EÃ-sÿÎ}ZÐbm·•àò#v *ܦ0!oãÀ�”2GJj½§µ«­ÙYpà"ÕWƒ^ªÏš_–A¹Ñù=ç©êˆªôJ³W¬´áxVçæÓTé§JT¸ma+ ‹�9Ò…½ê:q%zÙøðð‡”ì9¥¹ ¦¯^š�–ä•sÙÊ¢•çLpÖpÉÐî‡°Ö P|�ï§\_™ÊQX5@a×i€÷ßG÷³â¸1Ñ_¬œÓ‹y#ÌJnÞ‰è¡ä:O¯qœü<ÓŸøØP¼û+ .>gÁœíŽÙ÷˜Á÷D“ÐÁG”öKg�;­òÍ%È Ì(ƒûÌ&ó%p©× u �„+"o2ä5s Ç· §-;U¬ãžñm/£÷A¬€ˆØÊÇ9Ì Þ\+œ8ijÎ?&‚BÄ.ø`Ç‚Y�Ù^T¹ÍÊ)W;pcwýÑÜ€ÛÑ@Ú%DíæD]†ªr�.ïÞQD fF‚¼€¨DEï­èº˜ Åúº™˜-?b‰÷zý¿dÒª›"¿àæiÓ*·Bÿfé;  ¸.qO8¹&rª^\�$‚ÌØ¢î µç{©g…ú.¥,`é Å´fÑiÞÖPv(âìbÎþý¨»²B°—Ñû°¼�Ž?‚gfcB`Åн­Ú½2ÔBBíz,M—QæL]�BìÀ} î¥ðÄŽOm~}ÂRÍ< @P€PÄsŠÇ|Lä9 !�ˆP™(\¶êþ3Ȭçk[[eù*£óìî©�R¤;?—g0Á¨Ä)î¸ÀÁ¬ûȲ°ÑíGt}|íqâ Ýtí´ûÏÅ»¼úØê4ºÔh«y�  ;&í ™ïδ,><¤^B»¦í²ÚQÒî$?(Yö/`KÔ7&Qüdñéó>·ÒÂ,ø¹Ì�Ìiã �téð%º~ö:?«ÕÃ:<¢cå—+iM·5V“õ~©GÙ*ð…äE4ÑQ¼}qâ´uìVËeŠÃåTþ÷ó[ãí~ÊÞÌÙígiþûóéÔÆS®þé2ɳ&§5rЫ_¾Jq“ðŸÍ¸òó3 ׬ 1ÁÂ_ùç<×I­Jw㿺z#Ïš¦ÛC­ð6KDd¤Û9Œgý*~¯�?í&›½¹åÓõL×£HkË#ÆONb*âa•åkb†½¾¶dƒÛ²£ö\·{Gs‚ƒ.õ ð ô˜ýÎc9&7ð>ÛÀÿƽÛ#¾xN¯¿¤&W˜î:WŸñ´ˆÄ1ñÌÃÄ®)hc‡òµˆðoèu‘ñ°îC cÓ`Ç$}§è¾b�ûc4X8cbÜ©Aì7Tª{Õãa}¤ÈøOt[Q¹¶ö}}l{º}_—“µ ‚€ ™<DGdh[ç¯^%ü.r,XnÀ’âþ�ìxŸÖgزã0[�Ä�‡R'IB°\á1úC%w¯ß¥SòÇ6“鋤÷ËÍÃ:�G©¯PÀŠܤ`ÆZšŒÊnÜø¾ÑÃl5̘×2PÜù#8Þécª.>,s`ðáËŸv}•�Búà.e¥Rçžàý6pÁå$\D`í�à£÷�œêã÷�zL&Œ÷§–ŠÃ²ã2×7�‰�æ¨X¿À].IRÁg3“öØQÙi[<ÀsÏ’ 2gWÖ^qçy„ÈÝ¡|`‡Rš+*\jEn�Ù½ »À<·ëœ¿Êû‡]_.¬’dLBùȲÒðÖgMt”ø¼•íQÖrYurýI‚ulÚüiýGaLƒ‰"WŽ_¡„©R’LI,ëoÇ}RÒƒ >Q‡ÀƒøO0vF 5X–†ð3;5�Ÿ0&~¬×ìH;6µ·ó8ï?®ãá` ‹`ë=Î׈œ› ‚@ä# DGäc*- ‚€ i€Ìiùº f�YÞ@âàIfÅ;a�‰°‡U±ëÔß'å<�ÎýaM{Rþ“'å<Öë,ªû TX¢BJw)M¥»–¶¶½-ìD‡·r’.�?26}üÿc_g,al=_}‘>ú1=ý,›Eú!:|€#Y‚À€€ŒMŸ€?ÙÏS –°¶žŸÝ’b‚€ ‚€…€r!‚€ ð�!€ Ã_4ôì§7Ú9¦�gÉÇ®w*f î<}ù ®Å¨«õ¤œgÔ!ù-?)ÿÉ“rž‘…<Ü-"âr˜R©?Çã8eá‰á!$ù‚Àã�€ŒMïÿ7�³ –°¶^ }“²‚€ ‚€r ‚€ ð�!Ð�-Fý â�¼˜Ÿ¨Ü[*hùCÖÍÖø°ÞÍÁµƒCõ76J0íGf�'å<#³¨nëIùOž”óŒêëåakm�µ´¢Ó Š'&¥+”Žò5ÌG/7á`S~HŸt}èß¿ÿ¥JP™neü¨!EAàqB@Ʀ�Ó¿±sÑ„E°­téÒ%تROA@!:Â…H ‚€ ‚€ ‚€ ‚€ ðd# DÇ“ýÿËÙ ‚€ ð°# DÇÃþIÿA@A@A@A@A@AÀ+Btx…F2A@A@A@A@A@AàaG@ˆŽ‡ý’þ ‚€ ‚€ ‚€ ‚€ ‚€ ‚€Wy¢ãÒ¿ÿÒEþ¥I–ŒÆ�ëõD#+ãâµktõæMʘ2%ÅŒ#²š}¨Ú¹}ï�þçzê©§(UâÄÑ‚ëC€tFA@A@A@A@Aà‘Aà¡#:ú­_O½Ö­³œóöÛT0mÚ0`=wŽF®\I{OŸ¦ W¯ºòS'IB5 ¢ê Rü8q\é§Xiÿá˜1D!!Téå—©ék¯¹òüÙ¸{ÿ> X¼˜68@g¯\±ªÄ�›^྽_¶,åÎ�Á£™½§NÑ—S¦x¤a'N¬X”Šû˜.yrªš??åH—.L3áÆíÛÔxð`ºÿßVríbŨvÑ¢f�í.¤ß÷Ÿ?ø€Å�ï‘ïk'„3—nÝJãÖ¬¡Ó—.1THQ’2Q"*üüó®Ï§I£“e-‚€ ‚€ ‚€ ‚€ ‚€ ÝU?'#CÞ{ϵoßøjêTú�ñ�ÌüäJÁ…?JãK>Çß÷íóY¼f‘"ÔºbEŸe$SA@A@A@A@A@ˆN*¢cøæÍÔ|Áëü‡T©B- ðÀbÓ¡CôÙ„ .kƒŠùòQ±ìÙ)%»W:ÌdÆò;hëÑ£ô6-"‰è´d Mÿã«pWÕ T)JÎÂêÝ»iî¦MVz<&;fµoO B­HL¢ã¥L™¨xŽVŸ¯³…¬Q@(h+�ϪV¥Ê¯¼âqžzç»™3­sÒûp%5£];¯F°DÎç I’ �Õß"lÁ‘üé§éÄ… ´šÉ“õû÷“úŸ�µ ‚€ ‚€ ‚€ ‚€ ‚ÀÂÀCCtÜgWI9¤ƒìfꙄ éèGQb·G¾d»iª3c†U¤;K”ð(¾åðaj7nœ•ž '�м,Ñ7Y�Ù¤üK/Ñ5jXÛzqˆ•ÿM‡µv§c`Ó¦ÖvxDÇ%&Nj0‰A\‘ilm› ³ �Ö-£oÝ¢"lÁÒã�wÌ¢®í`ˆ¯Ø­›eqR0[6êU¯ž«=_§8({;&k2.¹^ ›‹1_u%OA@A@A@A@A@ˆ,"�è¸Ë–óÙ5Ó&8–²«©ÿØR£1»˜ú¹Z5Ÿ}Î?|8ma«‚Dìþé8+þ“²…)´­]Eù²j0ëèí`‰Ž+VÐÄß~³šÉ²ÃX�¼É„ˆ‹Ø1cÒ²¯¾²²M’ÂÉ¢q4@J@à"ª‡ƒEÇÀ_~¡˜wUxî²Ð|ÞçŸÜeÙ%(¢ãî]ªØ½»EtÀUÕ Žíái±ëüyÊÍ�Ò!Øâ¤ ‚¼³ .l‹‚€ ‚€ ‚€ ‚€ ‚€ Ñ…@¤p95’É�1ìÊé,+þMéÀÖßÛÜ7™ùËØZ£üøñVR{vGÕÓˆ¯¡Ë}>q"m8pÀÚ�Ên­žIšTg…»–èè9w.-úë/«ý¡<·KÛÑ£iû±cVò‚,W&Ñ�øïpÌÈ5¶È€‹¨ñkÖ¸\Qu­U‹J¿ø¢•o.êþô�¹t‰žK�šF·lI‹ÛžóæYE¾­S‡JæÌi·¶ƒ!:P±ö�?Ò9¶¾�Ôç$ _}•b1qãKŽ\¾L/q€÷kFPx$°îx�Ïùu¶<‰#†¯&$OA@A@A@A@A@ˆ0":nß¿O³Ù:Ö¿9B°pÐ’†­ê³¬9rpo_R†]R­äúqX¹~äÃ)-û¶K£Aƒè([@–~ù¥eÙ`/ãm?X¢£Ã¤IVn´;¾MÊ�"E˜Ctä2p n«LëÖ”�ÏÕ$:ÂTMx†]V!ÎÈ«Lr÷¥l¥ñw¨…Fœ,[t]½¾pã†åÒì‹Pˤû”^×—µ ‚€ ‚€ ‚€ ‚€ ‚€ àP`7˜=›–°Ò…Xb4ä˜ ø—>qb�ìsÝŒƒk� ö½‘ƒ}dËoò ÇñØÌAË!ÞâOŒ`¥úDvû‰ ¢ãû9sh »ç‚ ÿ}ÊîпÇŒ¡mŸ2ï³Ï(q‚á( Ë Xh@:Ö¨A7Ȃ͛©÷üùÖ6&¹"çüÕ«Vb�Œç˜ ¦DÑa¶ ËŽvcÇÒ®'¬d³¯f9lßegŒ‡K³l‚}-9& Ò¿Ã,"‚€ ‚€ ‚€ ‚€ ‚€ ‚@d!0Ñ¡|œƒcƒ¤ø™'C•ïȃ‹£×ž{Ž±Ë¦“!»_r’Ól¹ðÜO?Ѷ@ù 8s¥õdRd»U‚|[§•d »D6Ñ1lÙ2šüûïÖaºÖªE¥9p¸]êp€ð³ŒE,¶0YÖ¹³XÜŒÑádÑ�6Ö°[§Îì¶ Òôµ×¨~©RÖ¶ÝJð±ÑÂCKTh{!ãÞ‹ñ‡ Ÿè¯)[Ù ×&7&q¬’óL„i&odÏNïåÏO8ή A@A@A@A@A@A 2šèÐ�¸ÏV¿°‹£l‰°�góÃ-“–Dìê¨6“­ ¢—Ÿ}V'[ëöL"ô^·ÎÚ^R¯ž¼Ü£€mç×�;ék˜ )ÆÏ»×­k+AÙD¬9`Õyƒ•õŸØâKœ`WZõÙ¥$+Ÿß¨-¬mˆŽùŒWŸPË�æì‚ª.»¢B°õª?ü`¹àz6iRz«pa«=sq€I¸“‚Àu\Xi‰*¢c÷É“ÔräHë0µ9ÞHË è&[z ýóO‹àØ~ö¬î‚µÎʱQšr<¸ªzÖ!€»GaÙA@A@A@A@A@"€@„‰óذÒÍäÀ(¶8×ùöØ —9(wF¶„¸Æñ5^I“†6³[¨ð18p<�×ñ9z¼óÌ–Í£Zd7¹oöîMX'g…ýè–-) »¦Ò2|ùrš´v­µÛºbEªY¤ˆµÑ�-8à¸HÞ‹‰œËÚ½{éË)S¬64¡ �¥×g×:ýúY»y2f$%×,Ñ1�Ýhd‹‹çR§ÖMy¬³‹-”�|^­Uzùe²Çj‰ÃÓaÁë Xèˆí†„²#‚€ ‚€ ‚€ ‚€ ‚€ ED*Ñ¡ûˆÈË9žÆp¶Z˜ËÊûzyóÒϬ ×Ò�ãhtZ¹ÒÚ�R³&Õqp ¥ËškÓÂn‘Þ+[– °‚> [?ÀÒaÀâÅ.òÀ[ŒŽ9xzeVÔ{¸WªÈ–é9w.- �#’›‰XQ¤L”ˆVíÚEØè‹•üˆ¢I“è(ÂŎÆßø— žsìæj»xaIͱ+Æ0�’ n\êÁÖ#¿0QéU¿¾E>X;¶Eƒ�]�Ìç´oï:®It¼ÏØèþت[»Ù™`zžX¥œüç*ÅîÀÊñ•‰ª§â8+_ºDsÙjcΦMê<ó)}D)9O9ØuV3¶Þ@|–” d5, A@A@A@A@A@A Šˆ¢Ãìó¹ë× Ìs±ò—G™Ù"épq´¯MŠégì(Ö¬¡ŸýÕR¼[ :,@DŒd7RI&´r±k¥¦C†8”tNZüÅŸÝnAü�Ð�³%‰“€ù”]ZUae¿“èÐiNk�}86IÎté¬ó©ÁÖ#——¸±bÑü(¯�AÌÌÒ¡zu‹˜Á¶It`ß—Ô)VŒ>(_Þ*¢n¸Â“6•*¹ÜiÝâÿqãZ˜û."‚€ ‚€ ‚€ ‚€ ‚€ <(¢œè°ŸØ`¶hµh‘•<¤JjQ €½H¸ûë÷ï§¡lMqüüyú�-*´€ ¨Ì„Ã{eÊX:ý—kÈn¯ü¿têd‘ ºü&j¾�9“¶9âƒVpYõj®\º¨µÞyü8µþùg�4ìÀòuR󯻪ªÎ±K2Ù9zî5<ØÚ†+¸³ò&›¢öãÇ[Ùp#wRÄ0A,Ä ’¾|ûvËÊd3[áÀ­–]²qü‘f€¼A@A@A@A@A@&¢•è@àòçû÷·âw<ÃÖGÙ R6Ž_¸@_M�êJ«^° Õ(Tȵït̬¼OÉJü4É’Ñ+Ï=Góå £ÐÿqáBú}ï^‚Bûç> Dñã»ÚôwãÆíÛÔxð`ºÿßV•ÚÅŠQí¢EÃTøË/´j×®0é¾Ì~­Þ½›,^쫸+¯M¥Jôj®\®}lœåÿvزe´nß>ºuW)´‘’#wÆŒT,{v«ß8f¤ _J—Ž^²šL”&ÅŠ+R›7ë—¹]>v™Š~\”*ô­`f…»=8Ï`:·ó\˜r.u xIã…I,>@³Þ�E7/Ýô8�Í ÐëC_÷H‹Œ�Ƀˆ¾k­Z‚b¼y'ß­;@ôEðe@¤ÏB”¿$Q•ºD1qjÖÏD_5 {ž¹^!š¾9lº·”s§‰îÜ&Jœ”ɼ•мô©øÞ¾ÀϾ¥·»)‘wiIA@ø?{W/EùE�´Ô£¥[$•n¤¤;¥‘EAø« " -%!¡¤´( J7ˆ„ÒÝÝú¿g¾�·óöí¾·/HïýýÞÎ7_ÏÙÙ]¸gî=Š€" (Š€" (Š€" fvíŠM¢ÛäÉ�ÝIJ lÔ»9aåJð϶FÅ‹£MÙ²ö)üY3M’$ø²Q#¤J”(pÉ“5{÷Zç³Þ}׊nlô³°BÈ‹Þ3föΖ*F¶nxn>›5 Ëví²Oý>ÚûZ¸u+úÏ›ç׸nÕª¡r^ñ’ºlϱcè:q"îÜ¿oWy=.ìÑqbÆôÚÞÊk§®a@ÊÖðºÓë"GÝá�*Ôq!:öÍÛgEƒp‘£kŽbÛømÖzÏ*Ñqÿö} yq®¿Š(Ñ¢ mñ´Hž;¹uÍŒˆÉV+›UŽÌ—°óåk¡{“�w�!+0i�(YÈýžäVFtìÛáÞa·FÀ½»@½¶ÀÇߺëC+• .žš¼#¸}Z+Ñq uE@PE@PE@PE@PþK<2¢ƒÑ 3Ö¯†íRqГ¨ #)Ä‘Gª–=ujÈdRÙ¤C¬èÑÑP __¢'8—'ÑE" èÜO7nàÐ&Æ®ÏJ_DÇó1b EéÒÖ¸[wïâð¹sX#‘÷]ÑÜç0‰"á´È :>ƒøØÆˆ8L å4FR8}ÚY… ×®aÞæÍV]údÉP:GP€»lP¬bD‹'ÑQX¢/H¨ø²’Ù²!ƒÌG»)8´9§.™¨Š\½QDÆçNŸWnÞľ“'1Wöpéúuü—‰'–;&íÀœfs¬ªg•è8µíFå5y‘*�¨ŒopBðPÊa%:¾z˜8Ðl¥Í‡@€p”÷%ràôq`É qê»p^­Œ˜ÿP¶üÈ'=/_¯¦0Ë~:¨í%ÒÃÛ¦Nʤ5-ŸK„HÍÞzEn�‘‹§Î¦(Š€" (Š€" (Š€" (ŠÀ³ŽÀ##:|ùéÌ™X¾{·ÕüCçÎH.i§|™Mt05Õ�Ò74ó$:Øÿ�J•SSràÍoƒ>Öì‹èð¶æ_2ž©­ìtM›6EÞŒ’÷F,¢DÓUÕèß×nÝBR‰P9çŠdat £\B3’G$qh$µV�5|qÝ¥SqùcëöïG�©S­®Õ%åW—Ê•ƒ c¤Ój•Í•+Xz¯`�ÃXñ´Dt8/ë¿@tì�³?Ö2éàÞþóm$y)‰‚‡R+ÑÑ¢4°q%3°ùzÐUtì—K�Ãdû¦k&…ÒCÙø#œt¥6ª™çH”G– Yü|îd…{½]Ý4ÏÚdõïëÁç|þ4(ÑáJÚGPE@PE@PE@PEÀFà¡GD»aœ¤EJ$� ¶× r|TD£ ¶>Œ—Ó¥Ã�æ‘äÑK—bêÚµVÛha!:ØßžƒeêWÔ.TˆÅÛBI E#¹A Œë·oƒL“š= ¢ãûÕ«1nùrk+#Þ|ŒjyØvô·£�z·/ÝÆÒK­%ó¶Ê‹”RYž)’â$ !Ä´J‡–ÂѵG­ÔJÔ�H”9’åL† ¥3 aFïÎÔUÅ>(†}s÷áÈš#x.ÊsH](5²ÖÌ ê„„fá!:Nl:aí÷ÌŽ3¸{ã.’¿’éK¥·RB…´Þ®©»pçڤȓ© ¦²DÁþ|‡VBôç£#eþ”ÈÓ2bÄ�lš°®¹gÆܺhô8ޝ?Ží¶[s–ëW1Ü)ˈsÚb®ð€`«†¿",De‚ŠHǵË@.‘ãùaCðu[—~ÿÕÔ¯8$ zkY Ô�X³X4$dü±¿€4x–·P±D›'øœÎš�+€ òwò0på¢I�•:PJ²ôy#æŒ7)§rJp õ5œF팟&˜šB"g”îEg«»<ôÀ·Ÿ±b ys5(¹ãîeÖáz¶ý¶D„ÞMz5áv[R‰)í"Oì:ûxõ°` px?pê¨Çþ¯ÈO#eâÆ·{?úCtœ�¨µ®K– Ù+¯àõÌ™£é‚Ϧ5Š€" (Š€" (Š€" (Š€" (Ï:‘NtܓǠçK*¥1Bpüò×_øG¼Š-$Bà»ê®G‚=}TDGg‰6¼h‘µúŒ.]@�†ƒ[i—‰@ñpZX‰ŽÅÛ¶¡ßܹ֨º"Þ¡B«ш ŒÏt¥úbºª¡rNÑp¦šš÷Á`ú®�ìQ$_¦ýö›µ âK!÷‡móÛÌÇ–1[üZ¦åÚ–AœêŒ’yîÝ”E^,zìè¨:ª*^nüQw›è ÈÉÍ'qé�xqF’£áü†H™Ï‹GÜÑ/,Dǃ;ðËû¿`ãÐ�ø—Þy+ܹ0ÊUQ¢Gñh1§R Àµ“×PôÝ¢ˆŸ:>~îòs°~9êå@ÝëÖ‡wÍ¡Y†âÂ� �óø*< bäÇÿ–('!%h¾´*Þ©eœûVÄÇ !< &ÁѳpጙÇùZ°40Tˆ�¸ÎZS>qøà `ÛïÁÛìš™[�lyì3#ÊMÇ?­—i5ì`ÊöëžÍr®�ÞˆB"¬²º¶y i‘GȘÉkíÑÁ�{äãU/ðzo5¯É×úП‚·|?Xê…X¹!Ñ0ÞŒäÈ0óµé­þ{$}`Î#¬ñiäû¼ež†…è˜Zu*ö/�ÇáÅÅñRµ—,qïý ÷ãÄÆV}ñîÅQ¶oY«ìùbŒ89¹å¤„ÀŠ>aËõS×qxÕad©œõfÖ Þ5ëÿnœ1Ÿû³{΂‘#4Έ‘4ÅÒ [Ms�“´o¿ Yæ¯Q£füøñˆKòIyØ4ñwî"Þù î†/ûuйŽi¥ 7ɧ�hkä‘�·8ðýg+0UȆ>� äÀ…J Mû″3­~;࣑¦l¿R¼ºÜVGH*¬¨BfHdFþ’&Z„QKg—…+Ú(ÑÏ;‘YÂÚ”ß�Üæ+ÆTÈëŒÑÀ'®kX)ësOÞ¬hb=Ò´³�-ƒ¼õ0u÷³¿s·ÛZ&9„üà~�ÆObe‘àÐÍ… …Ü9æåBÀõ+ÀöuÀúe@«€®_:g Z¶ÅÏ£EvnÞìÐåËxE4‚®‰V�mÔHbtGk!<ªHô[4O†Êî¨GE@PE@PE@PE@P�g �w<Àœ½{­è�’jÉùÌy ün")EÍ‘5IŸ …‡èð9™«�"ÛíÊ• FtœÇØ�Å‹‘MR,å�?FL¼š=;Þ—h“Ê}ûZ£ÃBtœr§õ¨Q¸!Bë´þ�£€8Ùh!:�=‹®'•ë-Š·Ê—ÇYIVo�ñNRCƒZ!Yx‰Ž�ædÛ’ž=ÓMBÁqê€\•£m™…è((äIŸÞÒ+!9ò°,¬w®ÜÁÆÁ4Wq’9<ɲA’&#rŽÀ•cW�ºpj¼¹îÍ Ûvß.ˆJC+¶oûnæ¶2�§—ý²,Š Þqæ/Ñq`ñL©4Åš%_›|¨<¼²Er°âßÿbfÙ`º(’6öt°Òoy.i¬O˜!¡Eh¤Èëö‚óZOl8�ìu²[C#cMN´kÚ.Ìj$l‚X·³Ý‚¥³ä¥uëÖ+dcXìŠ|â{ybÿŸòÞ63ň²¦Æàž’r®�éûãF€é l£“Ÿ‘»7™šIÂaæ+a·šUÕ…¹s (,Üí`¹L;rƒ{x[>–«˜ÔUë.ñ¸ÇR伫‹S⸲5â4ιF‚nÊÖtÖã¾ 1À�õB˜zÊi½…T™> H"ãªSÎw™©µ^7_MøJn«Ê�Üm!•±RRæ¥õB¥NkSéµQ!'Ö\‰£bœ¶§à#×òbP.ÑÙÅz/‰'¯9æóAš‚œÜ¼w³ä7h¼�®+öÔ‚Qò—1a ãôDPE@PE@PE@PEàÙB \DÇ^ºfôÆD‰Þ¸ bٶŔǔ«½ôè\*Ÿ)¢†–¨^>J¢#kªT¨=`@�4@ŸHÉ‰ÐˆŽØ1c¢“hpÐnÉć%mÊÏrýwÄÑFcäÅè¶m��j‹E„蘼f Æ.[fÍÃÈ•ü‚%­ùðáÖºŒV™óÞ{¢ �èû°GAtpéÍ’žìóÙ³qÙ#ЇmŒ¼©(÷BËÒ¥­”[¬‹L +ÑÚÚÔûXûåZD‹ ½nõ ÒÝ&:H,¼{ò]ÄNÔÛÌ”Xÿºh oS€Û—ùKtŒ+:ÇÖ³4CÞÞû¶Eh8ç<½ý4¾Íó­UUî«r(Ö­˜³Ù*;‰Ž¦K›"c™ŒÁú8+"cMÎç/Ñ1eʬvEC9÷RyÈ�!ˆ)ŸÅˆX»JF[ƒs0ƒŽøÛÂÕ=ü¹þ …›í5\È1a¯×J‚g‘À1óþ�™ v‹9þ2èR×”=£/†ŒèmÚÖž3k˜³�_Á(‰Œ3_Öô´…ó�BHÈu�\èÙjÎ�Q‹öûÖñðÍ]Ä‹6}3�#Ÿ)ûz¥€{¾ØuCÉÇ€š�Ê ‘=iÇ+ª�Ѷñ[²LÆŒV”G�¬YÃõm·ëQPE@PE@PE@PEàéG ÌDÇŸBrd‡»Óò§LiEn4Ì• ½¤•qöõ,‡‡è �Ѿ,i@zI]UTH |Sè›F�‹¹ï¿�ûâ� �èðµëIô ÷ãLÛ¢ã­1c°÷Ä +rbA÷î�äÉpÞ�±n�µ•¡-["WÚ´>·^¢£q‰!¦®r^£½8IŽy›7c¥hˆü}F÷°L’îjh«Vˆ#†GKÄNÃKtÜ¿uýú.¹Œk'®�å´SÛNáÈê#Vùwþ„\°‰Š€7_ÑÜêã|YüÎbl²QcFÅÿnýÏJål·Ëþ}â÷ÁÝkw�&9ä BÎÙ�­3:…×’«a.ÔžZÛ^"ðho¿«}`½¯Bd¬É¹ý%:|íãa×3BÁ›¶†½n­–BVô5áv�N§‡O€ö;[MùüiIå””=£6VÌ“ˆ�ê¦�)ŸÞÒƒ©±B³*Y�Cû€*oý&íý@nÝñL4K[‰TéôyÐvû¬_W`’„1„‘&!p¤öë8ê `H/#$Îh’~pLuò{·™¾]ûIº®¦@üGPÁÈÂÕGŽXQ3å;醋Œæ1¥ÕèªU­kÓE@PE@PE@PE@P�g�0NXÂPL´.úKj¥"’ *<¢ã… ðcçΡ.ç©ÑA¢ƒù� $·ŒXéœ9ñq�:Vê)ˆ �ÓI‘$^<¤�t(y3d@íB…Ó9Yä%¼DÇ…k×,½ŠOzñEô{C¼›.Û$ÑݾÿÞ:³ÓsÙmžÇðL‰ÅÔXáµóW¯bûáÃXóçŸX-)elíÐöžõÂCtlº«?_�go„¸dÏ=AqrÛl¢ãå7^F­ÉµìêÀãÚ~k±´ûRëü½Sï!nò¸�m΂?D‡óºœc}•Ó•L‡«Zk¶‰Žìµ³ÑáÖQ*"kMÎý$çN¥R˜:é•Â&ú`Ó*!ºŽšz¦¢šµU¢5<`(®ý­"ÁŒ ú:Nn¦·²íþ=àµ4AI–ôY$£²Dk ñ‚—¯Ð[r›Œ0Râý@3éç´ý»€š/›ObÅÙ¯I `ëZ HY`ì¯Î–�Ë�…?ûu6�U¾f yá�QˆüKÇ×3£_ˆC5!<*ÔõŸdñg­�úœ—”zc$òðCWtû2•âw’ªPMPE@PE@PE@PEàÙB ÌD�GMçÌÁqºÿC5^—e1êf¢ÉÑTþR{É¡o÷ó<>j¢ƒºN›f9à[HJ¥’Š¡þ’+öõ…—èX°e ¾ž?ßž©% ,ß½ç„H ¥Ý“ïß–Ü0>ìqÎí¬²£×’sGŒ¤Ð´wÞq6G¸ìtÎ×�^9êæqέã¶bÞ›ó¬>1bZý)ÌMqڡ凰gú«üᵃˆhÛDõ2ªŽ þDøºAë°¤ëklÇ}‘8Kb«ìùâÑqv÷YŒÈ5š¥JPh=$‹Ÿ:¾%TîÙÇ&: ¿S¯óºgs�óÈZ““úKt\¸p—)†‚lÈË ÆŒ’‚("¶j¡DbT130­Ó+Ùæ)¯ÛF¾GÙ-æø–«ý"~Úœ,¹()«FK”Ä�’uŒé�l#Ðñ3qÄ¿gטãöß�7Š™ò„½Q*hûÜIÀ‡ÍLÝ/‡€T郶óŒZ„,az®Ö=Dˆ½Oð>¾jÊgNåòÙ8_½‚ÖógaÚpN|)²î´ly€as�äBø< »'ŒÐ¢¬´Š öïÏmK+‘~}Ë”A#‰ôØ.áj{œçñQžëóüI":ºO�Šõâ óÇHt�ððfOÑ!þNÔu ©ÓIýk¯^ˆ‰ùñÃJt Ë6 çÿ<¥›×�Ö �ß„#9@‘q®'ž{ÆiÂw}ÞÁœ¯¿TÜœµNÿi‚I Å”TÞŒâß5_1-ƒ%:ÃSìÜÛÖ]‘ùŠºøº^À†®}øêï­þПF_„×i§ k'øwüÔ[ïð×m?}ÚÒæ˜ºkÎ ™m[4Q3¯š% Zçˇ Bjó÷IMPE@PE@PE@PEàÙC ÜD‡0±x™@IDAT ÅñÐý|ð ÆH$ÂBy’–z¶ÅM†z9r CÁ‚È“<¹]ä¨D‡ŽÛ’K¾Z¿~`äFrIÏÅ”Xžv@z¿ˆà.­]¹r`J(oö$ÜW·É“Ábt0.¢Ãk÷¶ç°Ö]?}_§øÚV{JmäjäûIí»×ïZä;—ù¢ J|X"ØrÓªOþyû¬z_DGÒìIÑaOp�ï¬F³,?EÊß?ÿ~°¹íŠ=3ö`F½ÖiÛ­m‘"O »)Èq`ê�¸zâ*²ÖÈŠsió÷$,D猌59Ï“Lt¼S X:GÙ(ÀÆ«Àóq¸c·ÍþNÒε2磖Ô|Üm…€ë2&²E¶‡},"â.ÇÿˆB¨Tv¯Ù§“‰Œ`IJ£îz–˜ ‹i¸.�7©¡˜*˛͟ tobZ~= ¤Lç­Wðº Ë…Ôq¥Þšò�»hð>þÖ�4©�IR¤]r~ØàïHßýnÉ÷ä·’ŠpÂöíØé¡ ”I"ÈZ‰SU% %5E@PE@PE@PE@P�g�NxNоÄxq:�“¼è‡)iBÊ‹®D‡Agª§zEŠ }‡—ÕÕíŒàZÿ›o¬3Š‘S”Ü›= ¢ã/q.î>z•Ä¡è�À`$G‹#¬ˆ™´y2)„T[Þ®!´ºü‹Ïb}†îÿƒ×>{ %{•ô9„‚ã_Äùÿþó/¼élœû㜕.Ší4_DÛÚn‚"¯›  hxÿýÁ¨ˆÌ2£ñÏ�ÙÍ«�Ü|£ Œ¶Ú˜NŠi¥¼Ùì&³±sòN<å9KHœ‹7ãµG‰&^{/V¢#2Öä6ü%:˜¶êŠÜ#þ£‚ÒÊ=³S1eÈ ,Ø|&FPLœž„F½ÀžÍµ=fo²$jðñ¬aª(_mÞFÌôr}Œ§oräw÷zO8®Å?É„ÐX~<¨¾…“ aÊ«÷ú»Ç9Kc¿õ05‹öéB΄8t†Ü¦Ÿ´5§Ë�y× ìJ�üwÅÌÀñC"NÞ è3!”~4{êEÅ�h1F2zƒQ…»áˆÚEPE@PE@PE@P�g�H%:lLÄGˆ¥ÿ�Ñå1Wt¿ü²OØð±cÆD/$€½>\åD+dû¡CVDëû4lŠ‘{³‡�ºªMÙ²ˆ4M’sYR¤À‹ò÷åO?ág!Šhý›4±ôCœýìrÓaÃpôüy+ÔOݺy�;¼DG9y¯r§Oo/ì˜!Y2dw Ï/“41ŸÍš…$¢ÉR·paä�útÒ~_ž´ÞqäÆ-_Žc¢Ã@«%Ñ)�*V 6_D+†¼8^D¼ñP{jm¤*˜*ˆˆ¸sþaY%uÕ¾óˆ+-h„ ¥Äõ9œÚzÊŠ²¸ø—»s½s{ÏáÊÑ+ˆ“,ÒXÑ>DBÃãX3¶ýH¦¸,Ù©qî¤Dg$6騘ê*$m‡ö™1�`þÅ|>ô-Ÿ$I.טÑŸä=?±`êÆE@PE@PE@PE@PüB@‰¿`ÒNŠ€" (Š€" (Š€" (Š€" (Š€" (Š€"ð$" DÇ“ø®èžE@PE@PE@PE@PE@PEÀ/”èð &í¤(Š€" (Š€" (Š€" (Š€" (Š€" (O"Jt<‰ïŠîIPE@PE@PE@PE@PE@PüB@‰¿`ÒNŠ€" (Š€" (Š€" (Š€" (Š€" (Š€"ð$" DÇ“ø®èžE@PE@PE@PE@PE@PEÀ/”èð &í¤(Š€" (Š€" (Š€" (Š€" (Š€" (O"Jt<‰ïŠîIPE@PE@PE@PE@PE@PüB@‰¿`Šx§óW¯ââ�H;6Ç‹‡¨Q¢D|Ò't†{àè¹sx>F $ @ô¨QŸÐ�ÝÖ�EplÝ1ÄI…: Ú¨g��Q_7®Ñ¢�>$Kê"Š@¤!pë=†¹CštûïÀšÅÀsò3Ðþc ¢?3F§�/æ^¯ÒÊOW›~<]ï—îVPE@PE@PE@xœü'ˆŽ  ÿ¼y¡âœ#Mô®g¼DmG�Æí{÷¬1É$@¿7Þð:þÝI“pþÚ5DOÕ˜víå¹çû�¹r£~ý¿ïÛ8IräL›E³dA½"EðœŒ9+}Û�üûoàx óäA«×^ ÖuÒªU˜·y³U#ztLìÐ!áðóöí˜öÛo�cÛ•+‡"²'O[û石l™U]³`AÔ(PÀ³ îÿó&®\‰õ‚õ¡3g¬svâµåNŸu B±¬YÇ­úã ],ž>?¬cÅŠx5{v?zF¬Ë ±iÄ&$Î’÷uŒØd^Fß¾t·.ßB´XÑ/Ea©-–¸|AÖ|èþMXF>š¾·oçϘµR¥çï‚ëê÷�8i/E@PE@PE@PE@ÿbÏ:ËwïÆ§3g†z™9…èÖÊx¦Ê~úi ³ž¿lÔ…½�u °ˆöYöÑG�‘{ŽC׉qçþ}6ù´…=z N̘8váš 곟¯†ªùòáݪUƒ57>G$ªÂ65…^|Ñ>µŽ“׬ÁX�ÁЬ©RáÛÖ­ƒôáÉ‚-[ðõüùV}“’%ƒ+—$RåãéÓ±óÈ‘`cí ’HÃ]زnáÖ­~‘OìÛ­Z5TΛ—Ňj›è˜ßv>¶ŒÞ‚¤Ù“¢ÃžõZžÖÉÕ±ùøß¹=[€zùÝû`„À€Ýç,ÍŸ,u!@lkÐøßpûì¿sܸèP ¸yÝû5¿õðvïàmõ »7%+#oKÍ©£@ÙtfDŸ‰@õ¦aýhúN“{ãó·ÍZë/ñø·®~ø‡“öRE@PE@PE@P�ÿÑA�d‡m¿ìØ�/Z§u F¼çŸ·Ê)&D¹—_¶ÊžD#0†µliOxôFtܼ{­FŽÄ©KâÑË%c)ÁȆ+7obßÉ“˜+Ñ—®_‡Mtܼs3Ö¯œ×.,ݵ ÇÎË#îbŒ¦H'ŽÝd³§N�™2©;.×ÛØƒ4©–??ºV©¤Ÿ'ÑÁƯ›4A~�ùB":È“µ1‡]¤JÚ$I¬}fI‘×nÝÂΣG1{ÃdJžÜ'ÑA)›�,¾¬d¶lÈ�,™¯æH«W¢#Ò  ÷DêØ 7t‘6pæàã6îé²åfnuŸ3⣲D,œt𚟎õ½àùl•Öþ,éÕjwn %¢¢‘8òó•VHðàìï$Û5àyùº^&DD@"÷µ?tq\ÛžOÑvö¤¼?òžÑAòBjS~’^ÿ'û"&)ÒK÷Mh{ÔïƒÐÒvE@PE@PE@PE@°øODtØk?úñG¬Þ»×:�ùî»H"šžæIt°}póæxEÈ §y#:Öíß�S§ZݪKš§.•+;‡XeFz¬Ü³eså Œ ÖI*‰b“4?tî ¦Ñ Í~üýwŒüå«[ÒøñqNôA’ÈqF×®xÎ1ØÑA2æ¹N§…Dt¬©·+Z&KÊ”øºqcħQŸdë¡C(ÿÊ+�ÕΈŽî5jàõܹÛWA‰ŽÇ…¼{]ulº±x\¥Ï$:㇑@Ü€š±„ÞxÕ½›ñ_ !Ú ˆ)õwn™ú’ýá]¹7ñ˜K$1^Ï \òÉz’tÐÛÖâ=à½þöpüoyªþßÚ tÚ6¨ÚØ=Æ.5–ùé,.ôš8¦Å¹¡@K7.šHú FsdQl_V¢cQ�è'ÄÅb!0˜â‰‘ é’&µ¦÷FtPp¼‰D:0ºÂ¶Ì"Æ]P/yÒ§GÞŒCÔå°ÇðV¢ããéÓ±ê�?¬ôó>øqcÅÂWóæa‘àEûQt>^pé|xŲfEã!C¬h�×ræÄGuêXc|ó„¸`�Õ§m¹rhX¬˜UöçÅIt„ÖIÏžˆ]õN2`Ë »Ö8’+eŽ A@Ç95Ù@c*«Ò©ÝŽ|O‚i²ªÊš$YÒËŒ®`) ™ré�ó§Í¼L!åÍèÐgŒmÏ^{Î>sI¨|ÐØœ/”ke”Åço A#Äéc&µ#cªOU*¥é×k¸8þÛ»ç æ$q˜Ìi¼Î²r_¾`ÒPMßäl5Ä�ê4¦B e;ݘóý~W>z-»™~|u¦‚b ¯~“Ýi”F} éeúÒ©ÎHj�ØÖ½‰›( ñBÆ6<_v6gݾ6Q,<×O™î¦žŒ¤ð4'Ž?•ÔUÿ3=<‰2¦9ë3ѽ㜻‡¬Ob $c´Í[®ûó‡ &�™·þŸB"ˆŸ+Þ³$çlc «BîÐ<ï=ÞWžg4 Åaò•ä$Š8†é¬H�yÃ�퟾%¿;ߢhÅ Öøoþ~ܼw³äßãå7zåáÃÁþ]ЂQò—1¡û{Òÿ]hOE@PE@PE@PE@xxjˆŽ½’&‰Ñ%zãÂ-y´Ôe1£FEµ—^åEC#*½Y¡XxˆŽcLÓ4|¸õ4|!SzÔ¬i­â�è`ÃfI¡õùìÙ¸ìi¶ë®(ûe©¢ÿ’……è`Ú©jýúá–<ÙšS46†‰Ö�¢çŸÌ˜a•;U¬ˆZ…ŒWË“è`T÷¼tçN‹(ù¾cG¤J”ÈgDǘeË0e�x™Åzˆ x…0Š?¢cpÆÁ`$„7¢�©¬¦ˆîÿã3uUùþå- ^ïWI¾ÂÍ 7áL-5(Ý \9zu¦Õ±ÒF±ŸÓÂBtPcãë”_ãîµ»ÈÝ\–ñ5ÜS 138³\Ëß—�¡t4[ÞÌÝ&%›è fG·SÝ3 f`;5I¾Iÿ ®»‚TR¡õÆÖ�m㊎ñuÇ,Òäí½o[„F`£No?�oóˆÇR¬ÜWåP¬[1\¡ùnÝ^g«5ä—òåË£vmKrWŸ­t^Ó‰�*½;Rƒš ÔNx!•I'į[KÁ3½’ω¥�OÉ—xÁôøjŠ8z¹{SCâ}qòÓÚ tøÄ*¾Øi‰„Tø]ú¶ý2Ó¤�âùÀé�R×n1Çn²Æ¢i¦üå÷ASf},oÓc1„‘)Ò˧íš`êV�r“ Î^›VŠ£¾´»†Zc~qŸÛ%;5ɘ WÌÓþ­+˜èŠSGMÈ¢ý†a$mê:óD¿9 ùÕNkEmÎã4AL7Ffþ^s´Û�D͇C€7:šF?�\bŠ-FFü(N{P¶‘$¢£žFý ª ´‡E/BöÁ(Ϩ v:yÄ�H,3R‚4 $h$‹¸_OÓWÒ—}hj{�ê´6eç~˜†‹Ø9÷ûçv‰�Écú’ä Ù’ÙDSy‘äâ=âiŒ.i^ÊDŠøJoU='pp�!IÚÖ£©�Àr?ÊϬ•2Œ)ÖÂj$QH¦�T1?¬£ÃÞÿ°DxL’ÈFFz2ÚÃ6ù:@yÈ€Q5„Ô�Á‹RSE@PE@PE@P�g�§‚èøSH†lB28-¿èd0r£a®\H(Q a±ðœŸdI¦SšÚ©“á‹è`’ŒzX)Ÿ9ê ÆÔPC…Œˆ#F�zçIXˆŽ àƒ)S¬á$Q¨ÉA»vû6ª BíF“ l*Þ+1oD…Å[J “Sã£[µj>‰§IÏZµPîeñ8úiN¢ƒç!¥®Ê$Ñ05ŸÅúÌŠL ƒžŽzO³ý¾":*�¨Œo°†Ù¤Æëƒ^·t+X9,Û0œÿó<ª|+‘mƒ{ÃBtp¾ùm$D„ΣljŽn§»Á9§°øøWdz ‚D¦X5n¢#SùLh²D÷0{±ÇÆûçßleD ‰•€4Qc‹Ó[Ä¡LÛ8b#îߺ�\ s¡öÔˆ‘fÆð½ÚÎfjh� u¨&¤ž8R+5 ¦™ºnò„?5œýL‹Gfª*¦Á¢Sû†<µN£S}î$S¦–D�R¦Ì×þïIú£Æñ»Z>Ò/wZ'á?—ý(SvÓB!o¦œ¢pz�æõ&<�º{¦ÍÝ dÎaÊÎWŽçÓù¶‘È ãi-^“÷X®9O1ù~�'õ�)ÂØ·¯àÂ(;z†¾â�‚#XœÆULÅtâ°#g”�štö3*`ÂJ«ÊzaÄ@áÆß´³D• r·±Ä´_µr›:g”�3¢áóïL ³ #åZäç�‘/$—H2ÙF̈£ ♲‰ýŠ%1(^d¸b•÷œéÂ<É,{^í –§o–û!Kæ^ä=Ió¶_F0ä}Þ´{j{˜Ú ¯Ôaú2 Šÿ´+h›}f ¼WI”yÞ³ìÇÔ_ÓG¡ö9;ÍHg3çgʞן#I¤ñŒü[o÷ögTäôùW¦Y}D¾+%Êc¦üß�¨ÛHvŒ–zjŠ€" (Š€" (Š€" (Š€"ðì ðTN±QB_L¢úËSáE˜2Ç~ÛÂKt8u ­G‰7HŒã‰è°×ãñ¼<ù¾ýða¬ùóO¬–¶¹�¤{j'iŸ|YXˆ¦‘"±BÙº5²¥J8m‡qã°çØ1+Wù\IiGDÖ½Ðó‡ð›ì3šx1xç¬eÀüùÖ\$%ÞtiŸÌÙ¸ƒ™G›ß’÷ƒ‚æþš“èè.Ñ |˜FAnF2Мä„sÍéu¦ã�YøŒè`T£+hC_Š û/!5íÀ¨_óÛƒ·ˆç>ì2…ÓÇc�Vÿ®:ò´0�zÏm5Û¾Ûfi}¼wê½`:vDûsœ§1åS_ÑzÞè‰è±£ãÚ)NO9Àªóç…©´˜RëqÙ«)Œãþ#äi|I�CcZ$F8Ÿø·õ"ºös‹;ÓéÎT:c¥Žé˜B²ÕB$~ÁÝÃ&¨åÀRžV.½!MœºÔ–(œÐôt¦1rŽez¨iÂå’0Ø$Nÿ(B Мi™(ÂMýOú?!>7µ›¯ùöìÒ9÷ÉýÚNvb•WöD¢„3·š4K6¡CR…äŠmï†"Q63Mª-»ÞóèŒ�`›SÓ‚i½ –:â§ F'‚µËå={!µigZ2¦Ê¢°÷oç‚§;£ ­i]úŠØywSæ«­YRüu‰ÆÓî‹_œ$ ÓM1USf‘0aÍ› ëeÂû€÷"Ó=­RÄ~?¯ø]³_Þ[$œœF-F™Ð(ÈÞäSöõJ�’QÕ›šXžýHœ�h áà�1SÁÑæŒzµ4e¦ O4Ó¸1â†Æ”Y¯ÿ:2�ñõ¼¤�dªË%Ñ6>$ñ]õǰ{zTE@PE@PE@P�HGà© :è¨h*ÛK$£lË"BßÍ$�TSùK_}O›ò›K¦&DAùZ £šiš˜®‰_LõD�ÆÈ jl�Ì ÉÀ…ä6au0˜ Êi6`;¾�m|ÊŸOûÓz ÝŠ¦¼g³¤>rÝnßP®¶©w¾2=Ôï²GŠ:3�‘mv:.žo½Ü‘Ïú››ëaÊ®åÇY>sFo8£ Þk „�ÌK’¦Ðkfn:ò㌔¡“ž"Ý|/bÄ4Nm ƒ“„`J%¾o#z›ñžÂÙ¶– ¿²!âIôé$ïëPbO*Q!gÝ×ÇôY«úŽh ¨øEMÿÑ?Ë=RÁ”Iä—}ñÞ þH×/ÝsÚ¥‡ ÂóÞòuXçMC^�P£Q(}Ø\Sv¾:×ä½5Rög[«²F”=WA¹Ï6صî#ÅÈÛV4ççÔq÷2%'�æ‹Ù-£‰h¼¿? ¦Òã•‘¶°<õI¨SB Þ{6Yã1$ÄS'Q·ì¨I}â€Hj¼'oì"ù�fªËò;ÅsÛÒ ¯�õ�$TMPE@PE@PE@Pžž ¢Ã†ûè•+'i(¾“¿ã.‡>Û¢ˆ÷æµ Ð\žÒ¬)¹·c‡"\¢c×Ñ£èøÝwÖ–(¾ý‹èY„•è )QÐ œ•ë!ñk¯^Vô„5©Ç‹¿DǾ“'Ñvôh�ÑÞOm¡q_DGu�4 [Å�K°l\²$ƺž†uFt0Ó\ѲKt͈7Åè§=j¢ãö¥Ûø2‘ñf–éS%z”¶Ó)•§àÀ¢OѱqØF,ê¸ÈÚk§�p|ýqÌn2Û:o»µ-Rä‘г‰Žœõs¢Îu¡ÕÚXøºCÖöí§O[ÚSwíÂ9y@¶hòÅP5K´Î—O>Ù¬3ØmzTE@PE@PE@P�g�§Šè°! ÎØŸĘ-[°PžÚ¼ïxZ3žè]ÔË‘ DÚ!:¸‡NãÇc§äþ¦¶ÆYûÎ}ñ6ŠùÑÁ¾Ý&OÆ&¹’4K„èˆîCÕ_¢ã»+0i•x»ÄªåÏ�4íâiS׮ť7W4M~zÿ}üðÛo�F‡ @1rÛ¶:„®'Z§ ãıÆñÄIt÷Fƒ[„ Û&tè€ôI]žDV„`�šèàVèȧÈw0qo×>‡d‚‹]|hDÇ‚v °yÔf$~11:îï:î&4%¿û>Jö,i/û)ò¦@Û-mÝ%›èHž;9Úmsy9í?Öú{çìµ´8º•Ü?.˜z ®ž¸Š¬5²¢Áy´Û{DÓ41]SqTÛzã¾ý…§SÖÖ®H‘V>›GÌÅt©kÒ*1€bá$Dœæ|¢¾�¬Á(Ûœ‚â ÿÒ‹“ÝiLIÄÔDN²…íLIÅÔT´qK%�US¶_'í WP—§c¼¥ôݰÜDœ0Õ‘§-™!¤d=S;àGIËæ*;ûâ€bæ¶1åR•7ì3÷ÑxçüL�å$€Ü½Œ¹MèLXiô6œ)¢o�‹½Ç�³hN¢ƒ•N�Ž‚™3ãó ¬´^�¤pGD`©B!tÛÑ1¡ô^y1ãǴĽ£=/W—ûýÆg�ù#¯ÁÔUÔÅ >51º_ꎨ1¢ÚˇxdÇÎÉ;--ŽwXQ¾Òoq"›è`¹ý®öH–3‹–‘8韢?8ÏKÕ^Bù í&+R„ë<å9kµD¼…Ý£D“Ð 1F€“÷ÖÖœñÖß³Ži«â‡!ÕœçøÎ’úéW j©ÞLÈ« ¦•é•‹£Ÿü~®�&õ¨3P¦0dŽéרˆq¶'‡ò ‰‚ óÚ6:±k¾bÒ±Žc8Ö¶o>gm_“ViÃChØm<ÚÂçL‡EAqÛ˜Z‰)–hÔ\`š!ÛŽ0�õ4j`dËcÊ|ýèM`–¹-1g‡�;/»ÛYѤÀ(ƒ´™M$IOs)lk*Ü#1<ÍxÏž˜±Å³Õ}n“JÄÎv°¯_&) Êš>�”ˆ5~Íépg:«ÙÛÝóݾiRŒ=x`t0˜Ìi$j*g55§¨¸mL ÆÔ`ä‰=ÅáíhöõL3uæ¸Dî¤1³”­ –ûÉiÓF9ÕÁÔô™h40ìöüqŹ~ÃDPxê´8×lÝèÜÇ%d›ÜOïÔ2çÉem¦rrÓz ÿÄÔŒý(âÂÓÙÇYîÞD"-&é^‘s‰jñfÎ{�$Œ$ñf$¢øç¼>nm2R$ �Z5ö¶(»}îydŠ9’>NÍÏ>=÷ÔðŠ!7#;½ÁHO¹MÕE@PE@PE@PEà?€ÀSOtØï‘øh°TR-�–(�¹¢�Ñøå—ÅFI,l}Ûfmئ]¢µ)[±ÍcÝÉÄùZ@œõ´²Ÿ~jEŠÄÑîE=ÄcåamD›c¿ˆ“;Í&:–IÚŒÏfÍB™¯®h\ä�´Né’%Ã}yòt‡D‚Œ[¾Ç.ˆ—R¬V¡BèT±¢sš eˆŽ3BðÔÿÆxOsˆPûðV­‚ÌaŸ¬Ø½½gδN¹n"yÂ5$¢ã·}ûÐsÚ4{¸uô$:îÊ55�µ/^—Ç­Å^I— ‹ÇK)S⊤!á3iõj$,œûråä½Ê�>½5ÞÛKÁŽ©±"jûîÇÔ*S­iµPgj�ì¸tè¾/ÿ=.¼hµ=,¢cç”�˜ÝØxT©Â�x)≷=ä+;¼ê0&”šØ)Z¬h y¬±ëœ'ÑA’£É’&ˆ—2žÍÂhŽ¿~5ŸЉSTܶ+Ç®XÚ#÷nÞCÂŒ QutUd,“Ñn¶p¢úÖ1[Ñly3ø"B<¤‚-"Ýc°Du2‹TÊ�4xÐLžr§ÕÊm´6:~´ëeêÞGïÏâ,§}6NÒ57Î]:Ë?”òÁ=l1Fç.£Alkóº¤ÀZ"bÔÅ€ÉkíZ÷ÑN£ä$[ØJG/÷Ì'öã'4Q t8S?a D(s}51’bÓ5£‰`ÏêŒa´Ã;}€Ô2Ó5½ßHœüBH�pøjJðTZöÔ$ùi‚}&Ñ#“$꫉ûÜ.ùë”¶ ’+‹sš3¥E«™ºŠd¯yä§ÉÒO±˜¾5e?Ô±�Q$ hÞüÎÔ_\�ëÚfkwðœú­Ï€ÄB¤È{K} ÛÚ tøÄ>3Ný’ÉM´õ@ˆI©*£@HŽ}ÑÑôy1§MÛLŠ=š©Ï˜�Æè•o‰Ö‡\ÛôÑ’>Kî5#‹(O1rÛœ¢ñ¬#áU¯�Y‡7vT…Ø)ÈšÙ'Œâa4�7;Zî=ùß¹e4gH:#Š˜Ž�d ¯™ä+áže®œØÌœ3„ívê/sŒ˜¢¶Êj¹¿c>ïç,Ù÷õnH¾ôrð(*gÿð”m¢#«<4ð¦<\@Ý®$®ßôð̧cE@PE@PE@PEàéDà™!:œðŸ•ôL0ÏîJ£´\ü$ B³œB s‘¡«þøOwyL]{¡­—ZÒK�m×ÎÒÁðÕ×¢c¶7C/¶¦h^ªøçͮݾ�êýúY‚îÉ$@yâ5$¢ã_™¤¥Dž:{6p:O¢ƒ $�zýø#N:ϸ žŒ“èðìëy^)O¼_]¼‹5¹ Iå&�©ŸhQcFµ„¸/ºlE$P/…‘ ‹è`ÅЬCqùðå`W’©|&‹�ÖàªúÒP\ØÁ:ó¥½a�u¬c„F‚ô @"ãŸ{ÿXݲV—ôT?‰çÜöŽÝŠíöcôK@škì�«âµvY‡= ÑÁ´>E™M|¿Æ¤,º~Uœ· ŒÃx I¥TÊ8Ø Ä3Žë‘ Ý¢ÎΧê9 ŸR�Å�|r�i†èÄM Îrêz8­„Æ\<'â÷LYÄ´J>çSñN²Åßÿ=Ií6À>s™:‹)¢®_1‘Œèp‰‚*YE å°©%©Á=Ó�Mc$Ó]‘°ñe6ác·3 øNã|L›Dë5\DÅÛ›²·W›Ðq:Ø™^ªž{·™Ä”‘8§öÓŒí—ui=‡ ±ñ¶)óÕ=á-½Ó�1-IF�ÛH"q?7®Ù5îcšLn‰¢áŒêpÚ !&>ië®! EB€Bå4 †S÷ƒ÷‚Óœbãv=÷Ä÷žÆÔ`LÓd“¦V"ä* ) ó‘Ð"&4‹ �qöš{'IÄ´W!÷Éû›ä…Ô)¨îËÆJû îVÞ?ÔÌ8yĤ³[Ö]4Dœ}Îë±Ó�±ŽûN�ѤֺpÆô -­Õ��BÂyï�­r œ3¢v›ÈoP¡T©":•ŽWE@PE@PE@P�§�g’èð|?V )ñ‘)áÙ‡çŒ*ø¦ys«éõ/¾ÀmI¹Äh�¹¢gáitˆ7>ÇÎohTñÜü"Z<ž‘’Yë×c�D–œº$žY‹-ª(€7$ò!�è_„d}æÌÁ/;vX]fvíjE‰xö'áBâ…FAð�¢:Œg¥‘b_ŠŒO–h Ú;•*¡¦èšxÚR‰Nù\¢Slk^Ê;‘Beà‚–îÈu);-…¤*¢p;µCl["×ÔW®Í㸮UªøÓ5Ô>î>µ2¶OÚŽÏd”èQP¨c!°�âßI²&ÁÛ{ݞءY„d8p5'ÕÄ+M^±Öž}8Îí=‡jcª!ï›y­ºÑùGãä–“¨8¸" u*äu/×O_Ǧ‘›°câ\;uÍZ“C#:–÷ZŽÕ_˜÷ªñÏ�‘¹‚ã±v�•l¢ƒ¢â·.ÞÂö‰ÛÁtS4¦œÊ×&ŸµG;ý”ÇpœÙyóÛÌlj�',âÇÙž(S"d­™¯öz1„xÄf ŒÓQÊôQ|çqÌ6ðõòq‹`œê5_6›£NŸ(·�©—˜&ˆ)“l£Ãö“Q&uEÅ=5Hp�è }1>8±ÀèŒú®��M¶˜Þæ•DÀ¨ÏE„û[CªÐyÎÈKs¢pö¤‰Na”Ч1z£W ãþÝÝBr„)®Úö îÀw÷’HY7Ÿ�)$LhÔ&aÔu2œF�–eL�SHÝÙ‡eÎÃù8¯§ƒýèA‰RhbRƒÙãHN0Â¥¼\càü¿ÉwmQ»‡DÖt‘öFxû×Ãîz»d^²h¥]ë>2šäã6À®�&²âE!U($Ÿ,¥ÑF!´Jˆ:÷�ÆkøþI[%ÚDÛ‰Âè2¼¿¼#:>lnœþv;‰�Âe%ݘ\K]Ï'ðéÔ§ó=g~ß邼�TuÜ'÷HÒƒàY_rMˆ†GaL;ÅH ;‚º(Ô¨È_ðÔÒpîçæu³g’MÔI•ÞÙê»Ìõí3ךQ÷tÞ‡ÅH�¼"NŒx ‹ÙÂ÷$¬~ξŸBšƒûe„ ß›…´H–Ê\+#YB3FÌ05ïÁøBâ¤Lg¢;B§íŠ€" (Š€" (Š€" (Š€" <*”èxTHë:Š@8`”£Eh¥>.…RŸ”²Ê¾^<‰_ý´þñ#Сš<í>ߤGZ}:x¤ÅãßáÓ¹Fw0í#&(¼NögŨR[‚Èöï4Ę?zÏʵëu(Š€" (Š€" (Š€" (Š€"à %:|!£õŠÀcDàþ­û¸uù¯8ŒUŸ®Âù}ç­ˆŒ.‡» nrùt\ûU¢ã1¾q^–¦àø­F÷"ýKF„: vJ ¡0z­–^k•O¨+Ò©¦ÑL¡þ#]˜^‰‚ñ½ÛIdÙQe1sKä `ûÜÔCh`Ú´»·ÍÄl5"àL¯Fë3¨ÞÔ”õUPE@PE@PE@P�ÿ2Jtü—ß}½ö&›Â%@IDAT'êqP—Ãi‡ˆö‡h‰„fJt„†Ð£m§H÷q¶Ó¨‘AÁs:¯m££škµ°!°JtÚWu�¡FS,ÙzÔj¡^ µLžf³Åß=¯áUIÍ5B¢�ÔE@PE@PE@PE@PD¿WDµ%«ºš" i ¬­ˆ3'ÜÎè  ·ëÐa­v6­�íÿ1zêOÐ(®M͋ת òñ£Õ^1;ˆÜWŠ¿ç—{…š´ØB’¥ÏTn$‘,okª3ƒŠ¾*Š€" (Š€" (Š€" (Š€" D‡ÞŠ€" <(zÍHŽçc‰_x$Kþ'¡fS�_’1bþ'.[/RPE@PE@PE@PEÀ�€Ft8ÀТ" (Š€" (Š€" (Š€" (Š€"ð¬"лwï]ÚÇKø¼š" (O Jt<�oŠnIPE@PE@PE@PE@ˆl”èˆlDu>E@xRP¢ãIy'tŠ€" (Š€" (Š€" (Š€" (ŠÀCDÀ&:™ÞqñRtjE@P‚  DG8ôDx:8°èŽ­;†8Éâ PÇBOǦ}ì’ÂëWŽ] Òúœ¨JWPQcF Rÿ$�ìÜ,�mvT¢PàÕ'iwºE dþý¸qˆr¿í¿k‹ W#ðEޱ£�ÓÇ€s¯×‹ÈLÏÞØË€ï¿1×Uµ‰žïU.þ8¸H‘¨Ó:¼³9§Ó†Ÿ¿möÃÿœµíùäìí¿´“Fó¿7W,_k/ŽÌèA¿6°z0ÊñèOÄÙþbÎÿJæZܦ�6 F[×÷Dâ�ÌWè9 Hš"8&½ÛÓGI’«NokM±$�iMÞº»œúa�ãa÷?{¸{ˆŸ@þ>ìÕÜóó>}«²9Ÿ±Èž×ÝÖR­ÜÆÁU®ðͬ°Ž~8ýoßΟ1s§J/ä™|^ÃbÁ‡ß×>nݺbÃ@/¹÷}YDÖô5gd×? ¿E7ÎÝ@ÿdý­K«=µ6r5Ì©—yûÒmܺ| ÑbEC¼ñ"uîge²È¸ž†ûýi{¿"ú½‘ë­_ؽ (U>/"3=¼±Å“š‹D�ì4¾ÿ‡·ØcœùÀâ˜ýÆlܺt+È.ò·Í�*ßV R'áù>ú°~iè«¿%ýŠ¿î»_7yxàäÓÎ Þèè½/ɘ~]LÛ›Ý�ÒÕ‚÷ÒKPXn¶™´ ˆârŸt® œsý›ôõúæß”ÎÑtk´”ÿÂß» ¼Vh%¿ÿÞl�\ï0¹ÛÆÉy¬Øö™9ò߃-ˈ‹Fæ¤ñA”o™²ýJ÷M×zÀÙ¦æåBÀƒLùèA GS»gÈǺm€̓÷yXŸ“ðáüÊ´FP�‡ƒ€× ³6>Gd@¿7Þ@¡_ ÒçØ… h2th�:NªæË‡›Bt,۵˟îAúÌz÷]ÄŽ�²Ÿ}¤ÞÛIùW^A�š5áé—h2l˜E*xã¬ûºIäÏ”)°ê�ñã±Ã ÑØA ÜÛÀfÍ�é…«'¯Yƒ±Ë–Yç}6DÑ—^ l³ �Çã‚g‚8qðS·nˆ¶ïV•ÿˆÕ8ç¯ÊãÏ¡X’øñ1³k×PzE¼ùY":öÍÛ‡›Ä&vtÍQl¿Í*+ÑaÁ /¡ Ð^>¢«¸;ÍÿȘÍ}Nç~u!5ís×­^-‘üçú¿düÏÞ{ $ iŽ÷«&?ÉÏHb÷×­ÕÑv””¬Œ\è}¬¿µ§ŽeÓ™Þ}&Êûâçüü�?²ú•H\<÷èɘo…Œú?€O¶n¾œ°ó÷úîÜ–³xïý'‰„u:^Ö_â ‘ />$õš—<±ãEÊ$Zhåjy‹›²·×ð®ém®‡UçÄõq½ß›è˜ßv>¶ŒÞ‚¤Ù“¢Ãa§Ô‚!÷ÁÓp¿»ð'¼Âù¾„ç{/¼—Çïþð÷ ýÇ@‡OÂ;ÓÃ÷°¸w×a›ýþíûòâ\=~Q¢EAÚâi‘'á%,Â;.ä«×VE@P"%:"K¯3ÑáNǻӪåÏ�®U‚>½qóÎÌX¿ÞÙÍ*/ƒÑ ´š ZÎ{ëÄõÂ(‰{÷ïãÀéÓÎj\¸v-0Š$}²d(�Cþõâ0 ŠCy¤Ò&:’ NáÂVê�Ë7n`÷±cØuTçqþ–-¸x]<2bç„X ç4’%³Ë¿N\VQ¢B8¿mN¢£MÙ²`É}ñBp®ß÷ïÇÉ‹­®)% ¢#"Øp‘36ÑK"r÷í‰ÿüóÖûd_çÃ:>KD‡£“v`N3ã‰U¢Ã‰Œ–}!P:•¬2Ò+Âÿf�‚[=ˆ’,[°P$˜¾Qæºn;×'ú“û ;˜ïÇ#‚u†j�ºsQã¢þñmß~Û´ö@Ú2W:}†=¢ßV qdþc¼SAäÀ¢£pi³ ö0oíÕÒLË–—Óv›Ç˜cWdþH+äüðæ¹ �ˆ*öÁ;ô×Á¢Ãκúe½'¾¾ÖswÝ:]s@s@s ¼9 �Žð樥½9[¶Ð/+ÅL!)kû €Öÿ¬õ°!4‚‹§¿4ŠÍnßžR°k$Oà¬-@3Èð]µj¶Õ.H #Oºt4¢©«Tç�­[iÌ !K'-èØÑ¶$žº|™šýò‹‘_‰-M:YCØUP�ŽÕ={@‡,÷”ûTkȺý@̶~ùüsÊ–:µ‘í Ð!Ûµn½á­:àšj߇È& tDö`@c´ëªÈ¾ ð¹ÿarÑ‹‰…K¤NƒY{› ÷8Ä»"nrž=}µ]8ˆ^‡ÿÿÄ�DC»ˆvKTd3ýż Œ"ŽaéQ.½‹RûI�9ä?À‚þܢ܈yl�ÁÂ’7�Ö2o �æí!ÊúžØ�þUpîÆàvìU ZùˆŽ0OáFbÔˆéžï"<6`,hЖÝGŒˆ˜óFäY^…o‘:"òŽÛŸëUxì{ößN�ŒqïuâøËà¾J<8²àÍ©!LÚmCI²$yéÝ ëx0¤³ÊÐÑ¥G貎©ã*p ¸Â³Î+ÕúÒZ# ÏAWœRsÄþÞ­¬ôQDìÝ—A‰bÚpÓ啬µ`ƒyAóU¤©ýßÌú¢X#X©^a¡è“·(щƒD÷,é?…­�»–ìÛŠnrÓàKÌX ¬Ü1ËLæuÇ`0bp:F�ê~´i).¿NÔ ƒõˆ·ô²Þ_ _ëy{ݺ¼æ€æ€æ€¯Ð@‡¯œSê�áøwï¦D¬Íßž-"T’}i-164ϱ#²¤J¥µÝ÷F¯6^@Úütøpg| ¸‚‚K(; / mY²Ä°Á~çªU©Ç"ý׀޻ïÒÑGéü?çÙ7¨ƒ`✵ZVZ×g�mŒŽCsþ_ÓIK'þ†W‚7‹hùlú‹(:w±!NÂ÷�k³ð¸:Ѻ%ü[*4ïjN”³`ð^ÂíÚ€Y94ã!´‡ftþ…Z ®ÕšˆÅp\¸i‚�zÇz¢­«„;EZ¢*lf ?²îzøÆÅb‚ÂʲµDeáOšç8gùºö“öÛ7Dˆ]‰Î³¹y ~\r½/L²C›äÃ’`Á³W±ãòy>5�å,Z~"Ž`&>{,›—ÁšWãDÚ˜ÞDcûˆE LÇѮՅ¡pm 1hó_¿,Dï0@R­ ÷›ùdG¯ oqK1ïïÞ×ůg°äð+¼âá2iÏ#YÄÏi7æ‹P<{»˜O§Ž¥ÍÈ–Õˆà2ÀA¨­º�åÒd`á3?K¡ÑžÍ|>~~ÐüwãÝ©ÒÈt;Rýs|�ÐH<¼‹]âñ~2þÜúeÏkòÔfMÜÿ“Íc¤e¾·[wü�ïëTéBo ïüi#À6â‰ÀíÆX0ùÿ&´×ñXaGÞòÖ—ç�ì–Iúñk1n½_RÜ™Ž-|Èã©ä+0žJ+/øðÆ‚«4Õ݆Ýsèë9ÅÄØa¬¤ð â=ÉÇBw㤬‡çï¬yð]@ðãïµKDéøÙ­Ó’}¶’7ß"k]_Ž1Àœàêá«”4GRÊP:%Ë•Ì6F‚îž\uÒˆ·/u<Ú;e/½xþ‚ð}ÎT!ö?LG¥¨Ñ¢R®ÏrQ†2âáêeïÔ½ÎîanpnË9Š�,6•ú�t…⿟2•ÏäL90ëa^€¹ÎaK÷'î6úwX˜[�0‡X@ÿ‹"æ?|zÍi#=yîääWÒ�Ò”Þ¶I™ø:ÌId_}yÞa•…ùGÁî…Ÿxöáûd7žACû� øîb|‡ R+Öéúïë·Zmç:¶ßLÁ5¤s󈘥‚Þŵ¬±@„¹ b[A8‹qË †‡uÜÃy} yÞª·”!))Ü¿kjÕX^ÌS×ÿ)Æžωr ªÇó+qÝÑiž`žˆ¹T¦\ŠsËUó„ë, ÝY”¼,®]_Ìä±áîcJ™7%¥~?µãÖ<ÑbE£TRQÞfym×F�;é즳tyßezrÿ‰±ŽÂx7Tvtè^�Ýxhd�ßvÞûpPöç².k“d9“Ñ;EíÛ°k×Ó´°~š—áùÅš k êÛ­1¬}‘ÀAŽülqñ-¯ßë‹9ÔÞÇÁ× .Ö59–˜¿µ5W…2Õ:ñ.Oçg2&»øäuŠ>ØÍôçf²ÿX'ÙY�b=õ?ï ±K8áþž9A¤*"—賈ömV!XÏ¡œT"Áx…*X”«Å Ð ávt¿Wˆˆ±­pBÑGÌ}GÐòä= doß²œ©1»ÿäÝw ^;B#_ _ë…Ö�¯9 9 9^Ð@‡�œ|Ê3É%ǎѯ p¬“Eœ[€!KZò¬�é›3ßД’SèæiVA±üdC@ õ–·]NPXéÝ�ߥêÓ«Sì¤ö ™,ï-Ðqnë9#¸Ÿ]ÿÈÔšS‹RL-›×­7‹ˆé#ˆ~j/N�‰9|&ƒ°p@P;”%ab¼á’kd©M$ËX·F¦ðäÙjÝ  {7úˆ…,?‚ðS%Ì�±¸°[C» þU¢7oGº×NÂ"ù›Ú¦f“ZuÇñ‚šQîHµ$@ ]o¥_pÿ» >Âܼ)_'„½ðõ á  ø¼•Zúªk«ó§Øb!�qDI×Ü‹¾ù5pMÇÑëÂÛEÓ¬h,ú¯‚@êÉE#ÒTÍ·íÄ}Æs€kÙlµ–X¸~ó“{ßÇÒe‡k-"˜æ÷oM5�á¹_káóØL{ˆ±€ºƒ]Fy&ü(„ÛlŒØK" `žÈúVßËÁ*( ám‰Ð£™+È"Oõû&~ÇŠÊ#ûí´abanÍ…«-/�²ŒÖ;c—º–ð•·¾<ïÖø9®=q=²³žñ•?¥%º|Þµ}»£Z-X8ò«kޝçD+8º3ÿ­c&ò0.�Zà~Üû¼» Y%î;|‰·cÁ€Y•~­ PSľ7ߢàµ=Oyñì-k³ŒvŽß¬RÑNEió þØ0©ÁÈ÷ÿ¾Ÿæ7œo¤#�¸œHÈÛ4¯6™ü%Zj¶¡¥)œ†î^¸KCR‘Y!nŽ4ZÕÈYfn­¹txÞaŠ/u¼Ø‘¢½Í™'wÖДRSŒÃJ¿T¢_ò‡�iÇ/;èÏVüc*Öµmú‰_F áZ!¬´SÞx]æ$ò’|yÞK¤ßW$nÓG¶äºýŠÇ¾ãÄc·q']ÝÅA ؾ–x_\k a:¬ñ›Âò­VÏ�Æ«Äãh$ò ãº; `ßúõhî® \ØÀ•�¤°Ž{hÇ—ñÊ02–ì ¶ˆI×=î€T ~œA]‡‹ïç�«âXþCp=k›P8�iØBˆÛ¿-\`ZéÇÉ£ ¹^º %jô�µ„8öD€k_ÓûTŒ)[Št(BñÒÄ£¿¾ai·…rÔÉAµçð6ˆ $¶²óJÚ>j»áÚY¦Ëmáö…©ÜÀrÆø%Ó°•y]?q]M²Ý•‚‘«„%$„øÆ|_ íjv°}8ö‡ˆÁ%Ÿ+ ¨•Tk�v?²ÒÏå­ô=£çñ¥ éÒ©Z.a�0 ÊøöÂMÜEI’ý‡BÎHþöZI‚2àæïã˜lŠõ’už °¯`<dàÛŒµÆ6Ä�¢�tKKr(+ /ªk+Œ]ggÇ;€wÁòä=9Äñ`səҲ÷�f¬$ÚœåOØwG¾¾Ös×�®9 9 9ÞÐ@‡—ý—cGüÆàÆ”½{é2DZP©+ÇnPº´3iž}4`�øºþP§Ž³¢6µ†û*ݘøÕWβîv"è€)ô1;@K»v¥81cÚv×W cJ«V"FK¨ð|[µ¿q¿¤IiJëÖÎóE¶E¤#°º;‚{2w/îêØ¥?ºùˆ†ù 3´Z䮟›gJLXœCÃP’[ ƒ%ذº€æÑ•CWdq#àÝí3·é® †Æbç«�)V"W5-èHW<�¡¹ �Ih:APqq×E‚åF«­šH Õ,íA33f‚˜°6€ÎnæÕ4&›n`)Pä Ð+—‰E'€NÔèQ)wƒÜ”$kCC š Ï>3´¦¾>ö5ÅIÎÒQ¦‰ Ú­ZŠÏÒ7XµLž<™bÚ<ó³Æ a,ª¸›¤Ëæ h†À„‰1´rN1�?€9ù—3 þS\M§+eã`ÚG…õEv^pBàuö_¡m…I4ÈОRäBøŠo ñj@û0CV¡?þ ;áOúrܼ&‚÷–¬ÄÖI„à–’Þ/\; ÚLÝš!´! ÿ_¡Ù‡E(´É>€´!©F38Èc¹•–ðŒE8´¦’§!B ŽÞ_°éøaÁ×=2NòP´|ŽÐ�ëeA#4;n@›š¦ð» ` Ú`¸I¯o¡±†(hÊ:¡…k(ˆ =Rµcá MIxVàŽ‚t´ !ø·všæÐ.…õnƬA“vͼÚü.àù•àg/÷û|O¸°^ï¡Yºø�Ш¥Ä?¬Ž `ýÁï,A ‡í¯+Ø¢„ï7è_nÊ’¤e¼“Vk†‹ð|ž>&Zƒæ>À €Ÿp‰`-ÕsªÀij?v߯÷ü]³ÐU8þeOÖNüÁ¬é+o}}ÞÆ\:/Î-ghD‚àB :’06}3ÀÕzy¾ðÏ$Ü´I� <Á‰ÀçGT¸B%_ΉúôAà‡óCŸæ å³Më’O¿$úþ‘ný—B X]àñýÏU�­�xlƒuÊÎõ¢¯ãYˆb%o¾EÖºÞÿÝóoÚÐoƒQJ  ë…3ЃëœM¹: |�®D:Ú?c?½xúÂ(7U\Ãêbßô}†Õiáv…é“១ëz¯s¶ ­kÌe0¯€¥©Jøîçka¦¡ìïåÅ`S}ZuÊÓ0�ZÜØ_Øt¡¡a ¤ã…ŽN kè@AÌ0Ÿy+Ö[tø�ÃNÁå'Ã>!8Uz�æ$²ß¾<ïò{Ë£¡seKæß |;@íû³Ðþ;±�ÿ;7ù›Ìï¬í@c!¬„ÐS~kfÿÉã¢jáåë·ZœÅü‡›ÆÀóxÍY÷V›° ©Êßho ÏÆ�ú‹~ÁRvõü Ë+ËxÖq½óe<À¸�ƒ_/¸÷A8‹`ÌîHum‰2˜_Ârß‹¿ kP¤[A!Œu}xLÃ3ʯY±�Ž•÷R丟{ ÿCž[Xy+#˜ç/“$Ћt¬ƒVb d÷.Þ3¬¹2WÌLuüë8»1³òL:¾”o8¬á³TÉB(KrXÍƒŠ–PÆØ—~ï_¾ob츰¡ZÓ§-š–²UÏfäEÖÅ8¹ò‡g©¬ŸH¨×š¨ßB# à¶äÏ­ E"Ô›³=¸¥º ÐCù ÖDV’nß0‡X‚k¨‚qÅ7²îWD‰“�éd-À(b¼ãx×A˜a.¤’ ÊüÌŸŠJõyWCXóbŽ ëI/¤„ êûyƒ9@Äò¨”UÄ+�µ4ÖjPtPA—•þBñ õšn¯8…¼ÐÈ“÷äô­[”‡]ˆß}b¾H°ê€uÇç xTÊœ™ÞÂ$S!_ _ë)§Ö»ššš/•èð€½�yŹàÈÃzcíéÓÄs;'¥ä¸ ÙDÖY“$q¦c§×ܹ´þðaÃtpq—.@0pñbZÆ@ ±ó!$ŠL ã(G-_NË÷ì1º˜›cxŒlÚÔmw}:Ü5ˆóua ™Ô�\Rd²î¶ðŽ ía¥õ}×ÓÚï×ÍÔø½†tüð-n¹˜vÿ&ž!w@Ç{�ߣjSªÑƒkh`Ò�FU©¥ôôÁS꯿4XÞ€Þ•jïA�V�$ÁÅU™þeLm%î\Cd(›AXhðñ¸|ã ×Q9šmjFI³%5Zƒ»-`€­nd¸¹0lþ<:øœ¿}ð›áÒ ‚�¦ë›ÜJH‚«ñÆ×­Ñª“ªYŸ³uÐo¿ñìÔ ºÍ®éâÙhÃ@ËGZfD�á*¸³6�8°RÀ¤–ÐÔ-À‹yÒ¡-5�<5õ ±­wIX°B(wJ*Áô|psÁìÜf.€LºAX@b‘ª%–}Šù6 ‘ÅZÌ( ¡f^¨Àõ°Ž�®´T7H(l,°ø¯ÌçDXì@ãIÆÀµbáK ´ ³nw$- d>YXlY ÞJ ¯PW,@ /æ0êà ֖иÂb<çC�/ Ö.X”@˜�½J¿ýD4ì;‘­xUÀýºðÏÀp×´š…:–5Žq�’�>CЀgÑ*܆›³þSE*Mü™…\]¾ãE„×!4àB€fÿ#ܘ‰#× P¡ŸxfÎI‚ÛºYŸ=¤AÀ ¡ B8,`Õû Mâñ?Š.дž…â¼ YÝ ˆÔ—÷ß‘Ÿaóà¾À‘;Yã=‘‹w~¿cx‡ApMפ¤±kü�˜ÏãCuóØWÞúú¼›g@#€\ ת9ží{ÊkkÒåÜçØ�Öòê±§çÄXY5—À`ŒG<i±†ïD›j,¤á1ïÕÖtQÏ—y¥ß1S 0Àï¶’0¶BàíT+yó-²ÖõôøÉÝ'4ô�¡ôèÖ#ÃfÓuM)z\1hBˆ¥ƒÇ·y�grt´?Ýžø%0¬B¶�á—™©õa¶ åùÂêïVÖ:¶ØÖÂÈSÿ–|±„vMØeX‘š4$¼cxúátûìmJ_*=5þ»±Kñ§÷ŸÒ ƒ 0%O£Ü9B™d£ ×�¹Ž±¢´ù oǽ°Ž8»:fžmïúSöRÞwCØ<„¿Cp ˜ë2Pþ¶"�²$U!À.¾·r~�ïìÈ¢$Æ=Ä%�c¢¬/·˜Gc C]õY‘ùṕ@Úð @î}%Ý>w›ÿ ¤ìµ²I'–Ÿ fûù[æ§Šc* `5ï_ϟࢠÊV—˜ØÖLó>ãS§+�ÜZ·GÖÅÚg¸ï„à«f«’€È1ÿUà@áÆ\Ö_ ë\iªµ¬ØX¨ €¶x.†€à  ™)xœ�BžŸm·Ä³«öß:G=9/HíÇc€Lžû´›;^Äù@¼IPÞêÒ@ýyT¸äë׆Džoâ]E0õŽƒXR2•(×cŒp÷†#X�ÃúTôcárX¹þgÌ&æµ®©æ‘§ïɃ§Oiˬ&³ìf]@@0™USXyð/C„Fã¾¾Ö3¯Hïihh¼\h #þá€Þ°Þ˜ÊÖ×òŒ6ˆb°jO•,Y‹r3RTÌâ,Kˆ*?ÿL,È™6-�nÞÜ(±îÐ!êýÏž™Ú–/O5 2öÝýE$Ð3Z4Êž†g LwøzÙzý¥b°¡ݺä—,™ql÷Þ@GšÄ‰©s•*ÀCÒè‘a„á. Z“ÖE=\Y M;”àFÂÐQnP9 ß&hh[~Ô÷#*Þ£¸ÁÊaé†B€Z³jQκ9%{�­ tÀ÷l³�Í\ò­ЊšP`‚‘l¸tXÖ¥È�À;„óaQÍÈš3‚VM.¥Ä�§@ÇÉ•'iúÇÓ�JU~­â¢Í)›�]m¶áûšSÝîðL“_Ó3fІ ¼÷‚FŽI1b0’á#arjh=#‚)µ& )[“¥@‚e¤¡¼ê^)´ÓJ·V°FXvÜ,�É7üガq)�&Á|·\GŠ UûÚš«Ôé3>Ï,‘bÕNêõ¹p�+hd¦T„w¨·. §ˆºÐÎ’ ˆH1ÿ›”B[™2c³«o}¤ÃOáBƒZ.À´š¡©ý„ÖfOÆ@ã«NA¢C;Å"cÂ_²Õ�·j ó�3LWG¨õºðV;Ÿ¾/®ó3^˜!æ„• •™/–ÝT!4«³ˆÒp[1“ù ÀL¬jæGžy–‚,(r᱄c¸÷è“;÷Vа…,2`™! ‚�j¹…ïx÷‡ù›BY&´-\|YA”šËÏ ®;¢¼Ï!0‚«5w$Ý�Ü€¡úa )‘BhÇ¢þª3ÖGXxëëó®^*UáÛ[ò”?j»ž`A ’p‹Ë;oÈÓsJ_àx¦ni¤Ž©3¶ðXö�k/þ^ÄZ§AÞÁûE<×R‘{¤~›kÏ­mÄØP{—V¼°:¢ÅŽFÝïu7ªl½�–}½Ì~ÿä{ãÛ¼gòZÔl‘× Áz­ä Ð�ºë`e‘^k\úµ;ÕÎXd›êµ@I–«’T ãÃï>¤ÒýKË,c«Î�êÿYßäuš“¸\�ràéóë%ÄÛ�‚”$¢D5Qžr¾#sXàžI(z ¦VÏ12Gl/œ1µÈ­îc\Kº…ô­VKîXÇß—Rf âDýºÒ<¶î�é-\ "€€oÉ—q/<ÆÌÑ0Wa.ÅwÅX­àú ‰¯^§ uÉ�¡ù¾ƒð�†² ÜøÀÒûêü@�? NQ�1ƒ¨‰ÿ*Кâº9±ÈD‚;º„R›#m @Cí>”ªÆåg$•åµÖ@vä)Ðk»þŽêÉÀB?‘cuÍfW^P¨A<7(˜@Ñ&oñ¬Ø)ÃHk uÞ©¶ Ëa”}ÁŸŽ¶AýAPp¬{@ø ¤¢Aï&³ 7‘JÿU—W¨£ÆöS•¨ä5à’¤k*(hýs[Xþ±8/,„a9Œµ\ÀÁZ „ùržÂbqqÎÐÐûO ­”wùlá1�½dÀ ¬=$ñr˜JgÈ`Xyñ÷7’{õê%³=Új Ã#6éBšš‘È t¸aþQ9²�q�…ààá°Ü¨—+%´qe£6õωÔ……ª Äâ@LÐÝG�¨* ˆé‘�?2C52ÒÝýE$Ðᮥræ4,+„„D¾Z¶tq]µ›­fïÜIOž=3Ò‘Ÿ�]}�"è€ëªA ¸eCÒøñ)¡›`ín+Y2`ô�Ù×쀗“ow@Gű©àW�–%¨¡ºZ�m´\³Ò8öMÍfÔ*© yh;e¯™]Ͷ�`¢skÏ5Ò›oiNˆb%Ù_øÞn±µ…5Ûy¬ ºÞìj¸©pf*;[‡n¥ÄÌo'y›'ÓQ"hƒˆtó÷UàUd�*lÆb‹¾Ã»Y�$D…†Ü“ðb´bVÑCYNí/ܯ`âa\™@ˆ‚p‹JÕœ²ÎH2þuäã!Âå†ËÁgm« W7VKÆÑçÔ~·¶ÔГ-«–p”1èñ@Ÿ`*í«jM¨#ëÈ­�àx/�ßÍ!s\·pcá¤$,žTa Ò!¸…æ(þ§á‡º[cÓEXzæ)Î�Ç@,JàB®4TBPU¸ªB`gZî3€Â_ºCü“‚%�dãïuáíŒQÂ�:­ )Ì+!B°f©…¦ ¡�£S=Q²ß$j4Uk @ Ȉ"rÅ?|²#0©;-`”’B¡üªB8ƒ­•œZw¹„@Xæwø”ŸW† w€ç2C6™ãùV‚1ØŒ� /"Á`áfÏ*4›ò»kGp%Wš‡W€¡ˆ ÑJM?nÈÀ;Ä[‘Þúú¼ËsCà�wýɯ¿,oÝzÊk=bÆ@ˆET¶¦Ø÷äßÓsªàXëÞT¶¶ï¢ÙÊï€5&’*P…SH1¬mGÔ1ÜH­ë³Î8]÷û݃ŽPýv@‚ˆwºÜɨ/A�ñcÐw·xPf:8ç ù×õ§8)âq5ŒDåÏ[ šÙÃý†³ •ìU’Jö.élmêGS�àÃpúõñ¯�éØQ�»ùÌÝ‹;$Õ£N…Qèý6I~�æ$.tàéóŽâP pŸ æ�ñ«N1¿AðiÄÝQçG0@Úrž !˜·• °„U&‚úÂÏ¿J¾|«Õú˜›à]”Á¥�eŸÌ_»ØŒí·…ˆG’¯˜Ì }ëë¸ãÁ`~Õ&ÚíÎâ»hGªÂH£ö¬¹>̵”jA¨jÆ«švó´’7¦˜w¹sqæz¦ˆ9’@ÜîÂýnhëwX³ÅOßP s®3P‘ŸwÐö±Û W¹¹ê±"×Lû�Œ§@‡h1òÿ!°‡«O2¨¶»^©À�ÕJKÆÉ€%’$©Öê¼Sæc —¢Pì©ßo©P¥öMZ%Ãf‹®ÂzϨêòJ´dZsÀíêÓŠH�/À•–²rN…¸i¿ok…�3ÈÖDÌ7X<�ëËVÈß‹5Ü�ÊúÒåúÒø÷Yv›æ™|ßãºáÌÃÊß=�Üg«I½ƒv4Ð!9¢·ššo 4ÐáæNª�P¤([e *WŽ>²xpSÍ™Yó쎱`œ¾ÑÌ� 7h×Ùà6K…¼×ž?3Tk·&äšaËU}ÚOb!"„jv$ÇäAÉV‚¿hÄýPІ•·¾<ïj¿à¶Ú¿ wϡȵÿ÷”?ÖÚ‹§³&)?o h™Ú VEnðOÏ©ŽiÁ[ ž×…po¥Rë*hu‰Ã6^6ÇTµLdï˘*8¡öéÊÁ+46×X#ÉèH�.µhoäK¡Ÿ j]t”`…é®}ùÍ·³rUû¡îϨ8ƒN,;aXsÀͬ:1¿‘~„¡Qæ§2T¬‹«äZ:ìæ3°Lý!ú€¢*¢Èþ©çi?2ç$výòôyG](5”J-ZQßgÕÕÜÄÁ]œJP„ évnäd@8ŽyŽ* Ë·Z=¿·ûèÏGi…{KY–Å+²eÈ·f¬/™gÝú:î…Çx ­ÌòÈî 7X{f« #RÞ̸°Ä©ñÍ0÷ óƒÍWMa±()â»Á•(H ŸÅQäþK  \j»^© ¦]¾5 –a°³#9æ!/$×Uvu## Ê/P‚Qƒj»ë‡´¤hˆxvê\îsam+ÝËÊ6Tk k,1YF®5p¬~¿¡$e1µop-S2ð8\fÔ´ÆÛPAklEu~%Ðpn¬‰°6’ =�òñú` 抰x�(•Ç À%+Ðåób Á¾�Ò#’®=x`¸aﶆ'šAÔ;h«�ɽÕÐxS8 �7wƒF,h_qò¤a}!‹efwJ�9&G#þ¥±ñÛ�r@ÎÀ�µA©Ø"Ìç%Á%”¤ïkÕ¢�ØbÂE$Б‡]D�hjNÒ`YÑ•­R`Y+ztšÑ¶-%â˜$î(<�œ£â€tÿñcJÉü›ÕNHÑænÝJcW¬0ºÐ¿^=*Â.ĬÔ`Ô(:ýºÑ×ù;Z³�ÇÞð¶VÐýŒ ãò�ËôKî_Œ~ÂlÁV�}–; ›p M¸íèàøˆÓ�•­78xxåñ• >fAãó�§‹{.† t„dUa4Äj€Ò.×» nŽrRH‚€ž=ô�Uƒm=:$p¿¸kB£¬Õ³@–ëü\ÜRÌwC«‡÷6C† ¡ 1_úÅW}ÌJÍFÕu‚Œ/�·k mMB˜ _´Ðp„v94}á·‹K¸IÁBdlQÖàYNÎU��ì(‚‚CÓ ¤šnýÜ<�T *‘"þa²½……¬0ˆy¶¤݉&ôG»_ø"§[ˆÀBão^„…¤õFÊwÄâ m¡_cM©í¾pŠp™…|i)ÍS,Þ΀`•‚À(8< óx€$va¯ o¦T¹s? ï'ʨ#¥ $×û"¦òUR]” p£ÿE-‡}@sЍ–O¸Ê'ÓÚœqŒ…3|AƒT÷_÷e÷Sî‡QÁÍ¿ÄÁ5üRG!€,\É�à2®ìHZœ Ï®„Òý�€6,¼Å¹|yÞQO’ ‚†üW–·n=å�µÞÏ,Œœ6LðSuEa-gwìé9wš£pÉæ‰ÐÂý<>Y>)¥a�H ƒ€�Ãßu…ݵù’6§æ:2ÿˆá[‚:+Ý ` Ž‹²:86bt€Îfë öm¯*>[|ŒfU�®@Ç‘GhN Ö `j¼†•>JO2þ‚ {î[ÂÄ(ô§�¯u¦·ó`d¡¾1úÒó'Ï —™p� z�æ$–Ë1=}ÞeÝB D°j)Ćð{­ «,°Uºë„oûo’9æ60@X…"¾÷kµVnaùV›­û¶wã*Ïk~J° •„ù¾5î¬ïPÎ×q/<Æ©I|sÝ‘TÁ÷ 6ª�uú·e—¯£‚Ç7“ÿî,4áBpÜ…"6Á«@è(Ü®0}2<䵃 Þf®”™2IÍ7/M<#P¹]¶§@Gd¬Q¬ýU-UE(k9cÎ�9$ëé®I¤ˆØ:x÷­Š)ê¼|ä{KérVu¯ ðñ 2¨}“ÖIà€;+i¥¬º¼BŸ$(ƒ}¸&�Ëã˜$¬§ $ œ#­7TË%(¥]â5 ¤bJY?¡<¦ZÛªVarL3N�Oyb¸Œ½ŒÀ ûÒãÇ Ç’Þa/Í8%H’+z«9 9ðÆp€Í05…À�3·n9¾_»Ö‘fèPõîíüEéÓÇQfÚ4Çïû÷;î?yâÒÂÑÀ@G‰^½<úõùã—ºÖä˶.Þ¼iÍv{|öêUg=¶Œp[îé³gÎrm'M Vnú† ÎüÁK–ËWN^ºä,;hñb5+Ø>Î%¯ }°£&cÆeJ3¯ÙÕ—AþÛ¶9ëq w»jŽO‡ 3ÊÔ>Ü6_&zÃÛšC†mÖá¶_6qÀKG/êeü6ôß`{ºß+ünä�Ì<Ò%DÆFúž){œélÑa¤í¿Ó™ÆFÚÖa[�irgç„�Fúðøîc™ìv»cÜgyÒi[ÎÙßL®ýµfðÆÙÖÛ­ÙÎã•�Våzÿ¯·ãéçÎôÐvZ´hÁ"n‹ôxËÁÈCk6Äü:Žì¬?:¢»Y¬~‘6¤‹™Ö¼ŒHëׯL«™W¤KæpìÛf¦Ë½Ù¿ˆ|´`»Lu8Î�4Óÿœi¦Ë½-«Ìü=[dªÃ�²h ¿ýÿ˜érïßÞ<ÑEþ­dªØ¶«)Ò‹&qM—GÏø6•J-Ê´(+S}ßVË%ÚjS5ä6~üZ”{?¾Ãñ"h ù{‘HÃu~ßÂáxê:„;ž?w8J¤e¾¬àÚþëÄÛoë˜×‰{g¥ëWŽ\o‰2¥ßq×-Ë|�H¤wøT¦¸nøÊl;0À5Ïz´}­YvÇzk®8ž3Î,óð¾}w©hS>·Ëç¸+rú­ëf3G‡\Ö.÷9ÆÔŸ]wiÝšˆs—õsWB¤wo*ʈc_nÓ_æ5,›m– o}}Þͳ;ýÛŠ~¹Ô²vûžòÇZ·q qÞ¦YsB?öôœÅSˆs îz›v%ðÊgwÖX»¯FÚ²¶ËŒoî1~°íÐùíç�ßîý3÷;Ë웾ÏHægÎ�Xèg¤ N9ØYŽ-:Œ´þñû;ÓÔ�Å-ù£³{þr>úÜÁAÇ�zóÌ3šñ®˜#ͬÂ;b74FyÌìæ3Owx·,en�0Ÿswã+žù.ìÙ,ê†å[mž=ì{÷ï:k:-?q8p�èg¾·Ž{wÜ·í˸ã¾Ç’� §¸ïrº6e+d¶/W¿¨ÈoQÎ5åqŽ/Ê»¦Ë£Ÿ¿5û€kzUhpªÁÆûË®oCíÒ“{OXc`,Àû˜(×u÷®ÜsÛTd¬Q¬�ٰ̼wîÞUYç³̲ò™³ÛZç6ƒ:šõ0ǰÒf‘œ›~UÉÌÅØ"ÛŸ9ÆLÇzE¦«ó�UbØ7 næ[.Ë„¶•ï ê˲GÌeµyâ ½›×ÌrS‡šÙ£{™éwšé±·çâEG»åËItÊ® Çzë‡ÕgÏv0øáx΋¢Þœ†Ÿ·äk=oÏ£ËkhhøÊž¦hò„ÏøcÀH¸£ê¬YÆG ù‹Û¿¿£ù¢EŽÝüQMüûo§0~ƒs·l ö«ÆúÙjÁÁ®¢ÜvÁa¼ÚHx�ž>uÔ<Øè+‡�À–ð:j�·$óúE�„rÙîÝNޮػW½dç~Õ Þ6²ÔÀÞF$Ð� ù1Î�ƤxA“ÎëRw$ ñ*'–ŸpNàYƒRí¦sx†áF™©e¦:ÓìvÎ=èlëÂî vEŒ4v¯å,wiß%·å¬½ˆ€p?oL1Ñ•n¼îùc‹4U([$±H›?Iô‚i9ÁÙÓz%Bh/… X<~d–Yñ‡Y÷ôQ3]îM(òsFq8T¡25òœ[WËÒævú3ßÿ73{&¢î‡É]ÓåÑ_sͺêuË|¹�1ÊáÀ"Hþ®_–9æöÑCs4¶�™n·'êMJš¹ík‰¾àÞ¨×/Kl\nöÕÊû׉·Ú™×A¾•°P”÷[½Îó§Ít)ÈRëâY+œP”�à'4ÂÂç�€èîmûÒ² ÊÙõÕ¾–Hýço³¿¸?¾Ð¶5fRÈæi; %åVCk§zQ¿]��K Dû+ì ”<ÿécf‰°ðÖ×çÝ<»ÃÑðCÑ/_NOù£žS†÷ã‰ób,ñ–<=§<‡ P{s.œ²³½iëe–Ýﲞ]¡È�ï€rŒ=]È®Û�̱É W%‡(ƒmДß–oµÚ̃äœÛ%¿«¹Þí�úÞ¼–uKÝ×õeÜ �ñ`5/äwà˜‰9ÚvTò¼cÝàÙ˜«TG[C»ºæ´Fzƒb®é8‚â”s�_*MðüÈLñè@?ÙÄxßgU›¦n¿N@Ǹ~æó£*BY #0ϰþmåŽf¾ÓhGÎU 8%ßuµ}uŽõŠ$ ¨âÙÚ«èé=yìp¼CœKŽe(ƒ¹¬$©`†r“ïëøÍëþ¥¯¨5´ƒ~Z¢d»ØªÊcÛ×™9­«˜×¯®ÑÌá»÷€e6C·nuäþå§ŒJʪ2Žáè¿q£ãâ]Fmê­�…zWs@sàMâßš¼å@à�;Ž~lé�ž-äÛ¦ Y݇©`J0ˆQŠÓÃm§JÙDþ'ïÚ÷IÖ�–²woÉs !²Ì_»ØL·î© uhJ’¬6¬‹¬;,ÓBœB•^'ÞNdò `€Jgÿu8$¯!¬Uµ.WñÐ*ùûQZµ–ØÓÛÌÇ/4‚ð í•Ï侤úì©ÖÖ¸_ÖgúÒy³?ÖçV­€2w¼ÙÆ¥sj­Ð÷U€× Àž¿  !Q׆fÿ=äZV-²�‚q]Ÿë°ðÖ×ç]í�´ŽÂá-yõmŒ­ò¶³jSËZ÷½9gíâvôëQ?WT‡ãÑ»¯FÚéu§�ßæ ?²ÔÚBÓÊNsæ¿  cmïµFû,ž=vÃLKŸpxýÄu§V6꤀%É‹g<�Ø� t°»®`%VvÖ¤hGUÆx]æ$Á.ˆ¼yÞe}©,�±fÚpñ C€ˆ¹ŒaL•ïcÛêÁK¨ û©f~X¾Õf+‡ª¤�~üô�šëÝ>”QäµÜá¾®/ã^xŒPZ@ÿ Èew%Œ;(« “ey€Cò:¡¨¢’÷Pó;•ú·5ëAÐû*‘·@Öx×{Géí¸rèŠÛKQ×v…<:"z—F®@IDAT�b×W(\à¾cË w$�Ì;.žµ/E$ù ]½h–‘@”_ì,‚œÈzçO›õú¶éxî¬JJu ™uPó[I›Ù G¶×û ™êºÅ¼R¾²Ì—D½Zù\ËZ�~ûY”³*óèÃy­k4kýð:>x劋\*zß¾ŽOÙ3ÈêS§œž1¬çÒ@‡•#úXs@sàMábà­\“/ãøãAví¢EG�RÖ= D út¸pˆšƒ˜�iÞܶiäS#¯F¡BÔ¶|yÛrÞÄ‘P8wí5=ÚHúø½÷è»jÕÔlçþ3<^¦/;še²Æè�…>yB슴1¨#VbU€6óußâx& Kû€]]û¸ö yóûø+ʱ4ÄfžAÔnòdÚwæŒq„@ço±S|6¡¤÷îÑáóçiã‘#ÎØ(-Ë”¡ÏŠ3Ê"P:[j18�P«paª”/Åç@ꇉÝkÑMnÔ§N*‘=»±o÷ç oeŒŽ·cÄ Ö»w6Ënn©,Ço‰'ÿa Ö<¤™•f-d­–•jͬEˆoqóôMš^n:Ýø—¹3½ìÝîv£èq¢ç éoAã„ø ÒýK>ÿåÄ®hF…ÿÝQcD¥v'ÛQ¼ÔñÜ6õôþS–n=¸þÀ(÷a÷)kÕ¬„¶¢½�bċᬻ¼írúgÔ?FüÄ1Áyeþ³GÏèäÊ“´}ÌvŠ•0Õš]ËY/"w¤�fÕÇìŸ|[;×'ŠÃlØvKÄ"X³P²ƒ�w醿w!¯ôøæ(ÀÉÁÿ,üDÿÂ~a'þLįƒAÕ›r�ðI敵d×ú—·(ÇûØd¦Ë½ŠYˆŽUâ~üü»L1?§ç@œ€]9àô§ìS}ÑPÞ?wR”�Æ�ÄŽ»DØJB€r!~B»þ"VÎÓù3¢Cì7~ rÀÀ õD9ëÿ…3üþø™©ðe¿"èœf*ûà�@„Ø' 5@¦H1ÿŽq¬Ÿ¬â׉ëuàkúk®ØG,†jMDðwÄ(éÆûÿyøGpÅ”DÒëÄ[5à#‚&¶ç{‚@È@Š˜ÒqïñWª¥¼BÐ�Ý%ÁÇwÎÇlÁŸãbÈxï—"BÓШjNÁÓOê .óƒU�_èr|¿?qQp¿Ô ÍçO-á4Ä0�AVUú8#;ç2x&Íä稦È}þŒh7ǼÑ�¨`I~.Ùߺ©Ïâ[|úQj?»’ÁÓz6'BPwIéù™[zD…¼Å{Q‡ßoиeDˆåãŽ~û‰hØw"Ï,üÜ'LÊ÷s=__/b•€¬hÃÂ[_ŸwÑñ/›"Þ üqgÉ-bá¨eÜí{õ 50²XT-ãnß›sÊ ¼h >Ã;á±=¾hÏò¶5DóxŒyÄûðUo¥où�@_Ýùº·–�Ìã 'Ð…�(ZìhToa=ÊP&ƒ”{ÓO›hMw¾Ð z1:öÏØOóÌ7΀ï}ñîÅ�0M)5…Ö8‹!9‘Û‘£1º>ñ jSˆ?^³‰ãˆÌ­3—ž?~NéK¥'Wéu˜“¨ý•ûÞ<ï²Îú¥D­*‹£(Q‚—åäߎâüþ߸"â@` /Y‰>÷1¦#nÊà=˜·GÌ�P7,ßjynlçq$áüUÊ#×-ú�p ëñØü%O-ò¯ó*Ä­ÀXÚ8ï˸ãî î�»øZòj÷mãˈ£ßV}`y%–ÍâÀÙbæ"?ò;lGsÇóZœß!�óËQ=E:bSµú^Ä®B?¯�ÅAŸrÝïûø—16Ô€ß2óRÄ’„ù#bm€åx![Dü½eǃÇÉ¥ˆ¬AÌå;¬Æ‘eÕm'+–1¯ðŽà]a¬û0¹ØGìÅV½Å¾Ýâd"þ¢]ž7i‡®^¥œ,#Éš$ µ`ÙbÊ&aùHHÔ§O#»W/~Y½ _ëyq ]Ts@s@s LÐ@G˜ØgV¾rÿ>!€ùQ>F._nd4)Y’ð³£»�QÕŸ6„ù)4˜Ý¾½]1òF¯6ž@Ú�²n�ñÃ~åüù©Ce±Â˜‚s…Fƒ6¤YD*Ð!Óì¶*zÕ®MQ ! ¢ ¾ÓôéòÐv[(S&ú¹~}Û<™è o%Ð!놴�ûÍ7”Œ|…‰Dµì4:µ†%wL Ü:}‹ƒC¸�í«tÜ8yƒ&~0‘î_½oô7zÜèFO’J|_‚Jõ)%Ýn^@``¥,U²P½E<› ¢G·ÑÔÒSéâî‹F À�éû·Î0Ÿ^0™rÔÎAµçÖ6ö#úï'~­±èS'܃:òû4„…®%ð^‰�âIþ¸¾D9 ŠÅR/P«AQ¢¥ãÅ7‚ã!Lj¼î£xÁÚFìãÿCž4cQ^ÿkÜ+ä=¸Gô~„ÕŠn%,œ°€JÄkÊ�¼˜pGêB} /æ2d%W/`Áp ³ú þ"!À¦Øq‰nò°– 1 6,ÃÛëÆ[5ظyÅb׌E¤ r GXh€g #ÿñ+…À’ `ø†”!„½™Ÿå ˜G Zw¤ òQ÷%aàÏ­$»@Ü—sò ²?ü`¡ðC^Ã0(—«e–Q÷,VÏ#oj:öÜ�gÝQM~Žî5s+~&=3Å܃à*%!ˆ¯ä)î‡Áç ÌŸ¦•QžÓ[×90fFñ¢îø¡¶ÅðKvh}åmXžwy�]˜‚ ™†-®w÷CWÀ4,üQÛ „kFpÝn‹s©ùê~XÎy—?q•x\‘ãÆ�Ô~ظtNŒ³8—Ý=A:ªgÿå@ä�Xx8)¯.�Z}ŠfTšaúÑKÌIß{L�o?¦·b¾EP0½  ਬ£ ¥ ã$Ê_Ær©áІJŠëî�™h^ýyÎÄ6GÚP’¬<°Ø� t@Ƀýôʸ¾»ï5 tÑhU#J[$­K ¯ÃœËó./JŸ(‚oŒµPJPƒûʲr«‚ÉHƒ2¾rüƒ``/¾»’Âò­–m`[ã=ªö™) PÅL1÷ΰ ²Bfóß!\ß飿û 0sê:"(¸#oÆ=Ù†·ãÁ‰ƒDõ ËÚb žbþR¿Ï²ò¼i§HÇÿ¬±¬œÒZoáo ®Q¥!�‰& rUÊ‘ù˜+Aaæ¾x%d²±MËß(©3zQ©*.Ù‘zà-Ð�Îîþm7-mµ”^<L…BUü´ñ Èã;<ñ ¢Ö‡ZÓët4/#yy‹K `ž�¹5@?;Rçô#æó|¦º(…o#æ[R9©øV«ó¼ìùˆflsräc®T�×.��rÏ�T’Jd2­Y'Jº‚2P²‚"Œ;’ãDæÜD¿®ÀÊöÃïY+wµÄ»¥.U™ (E1;÷ÿö[J�¿òÐ…›7é³#Œ’•˜èLX«ÂŠ¢\¿~†5Eþ hH#^mÛÐq87qÌÃúbi×®3Z4b7]tŠ?ª¡Ñˆ&M(�ŸŸ³X‡iÓhƒBVŠÇšÉøÓ²6Bõ‚)wºtÖ"ÆñހŀÒI˹£¿õÕ-Z”ê³H î_Hä oë1/9>IHÍ9óæwìH‰âðŒ-ŒôüÉsZúåRÚ;m/9ž³„‘)J´(TèëB„¼í£·‹u,Ú%�Ê<ŠØUUŸV�ò4äY$Ó˜ìc ËŠ*¿V¡|-xæÈ4¡kfîº@åG”§Bm iò�ýNÓâ‹ 0ÐÞô„î^¸KóΧ€µ#ëÀ¢¢ü¨ò”»>Ï=$h?m¾�®¼BФÁ²¥î‚º.-°û ÚØ#±ÿpzr÷‰KÀ¡Œe2´?3U`iR$P‹²D[WÉ 7ºðEy¢M5ú†¨ËPÑ©ö5‰VÍg`ã ¢^ãÌŽBÖµ!4ï$Á– Ø6+-Rgl&z¯ˆØ¿qU8‚–Uµ&"]þÃ:ãÓ÷ÅÑ”µBË]æa‹òxÖ¶šÃýÀbBX†Àºã>ç• ¬Õ–è;1¼¨U +‘M…æ”Ì8`ä‹î¡/x'ôgÍ{.'©-÷õ¬Ô¨8Ñ®�DEʉň5_�ìÁ×ò£Xìo¿ã*ìœÈ  ±}Ä¢I–‡–¬Æô÷­ß¿_WÊ\Að z]x{ï6/Òš‰çKô\€NÐ4é(¬odºÜ–õà´é𼘓ÖCÐÊ/]�ŸÝa,”�)k¸ßîÿÇÄ`áˆ{æŽðìùÿÊZÿ|ß4©„õ{ðs_›ß�öj޹¿þOam"…,2ý,]]<³ÇÜÞK“{·4{AX€b!jGèsþ·…”Ìï4˜yÛA¹n!@ƒ ÍZ|ˆ(cv×’;Ö3ïë»j`B‹ï#*末ä oÃ:–Èó㘻n)�)LÁ¦�FtXù#ÏÙº Ÿo Q¾b|Oy¬‰ÂzN!U›Z�&ç,(s~šÓØ— ´¡aÑ :4÷�Ñ€’oÏ3c˜Ž/e+ÖÊ3 P¡Ë�.FšõïÞ¥{ bßÔ}è€y(4 Lÿ¸ý ó…4…ÓP‹­-¬M;�U £ÙÆfÁ®ÊuüëPª©œuÔ�W}N‚¾†õyGO Ä6ße;¥ ”S u¦ósŽo¼7�KUX@aÂN+ùò­VÛ°ŽÑøÀ"–³v@£okpo2ArYóXжìF”*�Lµßz3î¡_Æ«p×¾'"õcþv�k–À5Î+®cU€™.÷¤Âƒª”#ó°…r@¯–D¶ !t¦\lµS�(¿°î…rËúKBYA­™ûCÓ¥;çïPÑNE©ì@žàyH—÷_¦%-—Pàö@—õ ª'ʘˆ²VÏJ%z” ñcضxpÎAò¯ëoäu¾ÖÙP³- ‰Òj!´S¯8%¬´÷læ5WAek°2’‰!‹DåïVa…�$(Õ`N) íà9Q•D�E#ÌŸðÍľ$\ÅÚ k(•Ô|¤š%æ·r†´ûXI,7öìI*Ü â\cmóO»ZPòÂw㌪Ì3•û8�¯ÃúögVêìIÉð/c,¬ÇòŒÖtë±,§·ššš¯ 4ÐñªÜ ÝŸ8píÎ:{ý:=xü˜R%LHi'&€oÁ�SàNž\3Ø�E:´ _e‚†Óå—éá�‡”,g2Jè—ÐpûðRûÌ‚"hW]=|հ䈗6%Ê�Èc�æ¥ö-Œ�C†%@�äiðaü* / #‚ ­,54áÖ©NAqV¸+‚Û";B/œ}†Ð"gW-u»:‘•m2XÅÜ¿C”»pÄ.È#š·ZŸàkÅb,w!×dhü‡Àfÿxþ`Iä A#š¡*mæ>Èç)¤6àΖKxæÜßd©…–<4€C#\´&ÀÂ!EZa ¥.˜CkãUÏÇÂîÕp�S¾ãy�ÃÂ[ÏÏòß, ‹ù\ @ÅÔuëhÛ‰túòeÂ1èÿû½ççGµ ¢¢Y³k÷©S4iíZ:~ñ"=yöÌÈO•0!É’…¾*WÎV¸>ìÏ?ióÑ£FÛ“¾úŠâÆâU¨xãµ›2…XúMå󿥿±TÊCj=q"]¾u+ÔÒÉ$ 1͛ۖ;HSׯ§c.ÐÍ{Õ.ˆì”Ë�›>+VÌyFÿõ­;tHf{´Ÿ%/þá{0hñâPëåH›–úÔ©¬€ªQË—Ú¹|û¶‘#Z4Ê’*µ,S†rr=IíÝK³6o–‡ôeÙ²ôAæÌÎc¹³‰ïׯkÖ‡Õߟª,(³^ÊöþÕû4(Ù £íš3kR®z¹^Êy"¢ÑÃóÓÜZsƒ�ªp»ÂôÉðO‚¥¿J Å’Š ŽQßb�ÑÓW©gÿ�¾bΫÏòr8påƉx ^Þóö÷"¢‰?›ýÇ3“ Qfþ4ç)LT¼â«÷µ(K´u5Q†lDK›}÷tOÿ<å”.§9 9 9 9 9 9 9 9 9 9à-4Ðá-Ǽ(óþ}ê5w.í?sÆm-Õ­À†Ã‡é‡yóè Öí¨p¦LÔçÓO)Æ[,%U¨çœ9´ñÈ#e^‡”8n\%×ýîI`šÿò‹Q rþüÔ¡re÷…-9µ†%Xa„FIØBÃÿÛoƒ 0dɈàŽ5lH3f¤¾Ì“5¸+æ6]òâïƒé·åd‹ÑPæÁ“'Ô}Ö,Úsú´,æ²àñƒ#…øÞ€~߸‘~ 0pœ5uj÷ùçØu¡¥»vÑ`¾~PÃ⎙\òðàM:nŸ»M§VŸr^ùÊŽ+éá�‡¤�'KôN8´‹…ïÌŸÔ!2Ç<ÆÞ’߉º2"©n+¢žcäÑcûô QǺD«Ø_o"íò°œ8¹kþ†eD_±�4g;QÎ0b¸=š-˜L”&=Ñ óµ'xEþgñ³Ñ¯�è̶›DqY@®éõåÀ‡Éˆn\åo3[uþr®£[¢£Ü·ýÞ ðñsï—Å}™ˆÎ)Ê@Ì­ëD?#8Ãû³k Ã{žéššššššššššžq@žñÉëRp ÔtìX `·S ¸8‚Æ~æ”)é.»<Úö,Íÿçʘ"… Ðq›Ý6Õ2Ä rÔùàÊSØ2äâM–ž05.Q‚š–*eìË¿È:b² ¿[^¸£xl]‚ëWi-}àÖ 4²›®€+Whƒ ™OèØrì�¸Äj Á…Ôâ�Â}‘_²dT*G%—5!ù¨nÑ¢�A¡sׯÀI+÷í#X³€j.ì´€�åLY¶$QiÌŠôÇÖ­Fîe#%1�´žA©E;véàÁüN�èmvMf:P`06øúTÒ@‡Ê�°í�È0‚nž¾©�ް±ñ?SÛÿW¢^-ÍËÍ–—È·y MîŠ,\¼ àÔ?üFTÓÞ0ͬøí�mªm^!.ªx¢jM„–;,,à¾Ô¢+Ñ7ľü‡ÛªQ=‰`µ´ã.»¹‰)s|Û.›Epœ(-¡•øÖÆË®Õ“Ÿ�ù“ˆR¾ÃÀ�òܼìóêöߗΕæûêÇ÷´zS±Þÿ xÚ´g3Qœx ~Ot�õF.ž%Úð§Yp¾¬ïÍåiÞ¥È&Œ‡eýD/: &jÒÁûi Ã{žéššššššššššžq@žñÉëRª?3»6Ü ųĜ€%Än¶(—'�³}ÿmÛ.š@5Ø­UÛòå�yM¾˜0�?}JÉ9ÆÇìöí 7U²@dpM5‡ûã)©@ÜKuªR…*°Û,+˜È‘& ¡};:wí5Í7¦�ß{�¾«VÍ®˜mÚ÷l³!ÈÆŸ-`’¸±€�»±Z >Ýb �81cÒ„/¾ €!’~Z¸�`™êŒëÈ—Ï耫²áMšåäŸ:$'¾Õ@GØyø_j¡/[gÌfC6ÄšxxŸ(f,vͤ§Mf!ÞàNÂý㇂3°Hö|ÿ.MH4´‹¸Þ‰F/&’!‰`éQ.=»õb÷>©ýˆVZŒÝÚ×$Z5_¸àY°ÿ¿Á³ZülÙCôƒC£þ7®ùM½Êµü¬äÍã{ °!¼ žL Å'zpOİ™ü·y¤Á’j= <Í©×ZìGæÿ~®ÛV=@}‰½£�ŽÈ¼ƒúÜšššššššššo64Ð÷÷ [[Lܽ›±ÕB{¶ pp›ÍØšã4[%€~a—EÙØu‘'ÔŒ]H�bWR ™íÚ¹Ô‘ÖcölB\�ÕBàu:` ·^ ¸{ú¹~}cßÛ¿ˆ:†”êV=h•ÔÙ“leÒ|Ü8ãHº½R-:äØÁMÜ•IZ®«àº ÔàéEéÒ2+ÌÛÿú—Îl8CW_¥¤9’R†Ò(Y®d¶1:nžºI'W�¤˜ bR¼Ôñhôâù ÊQ;eª�‰û¦£‹ŽRÔhQ)×g¹¿íèÀÌôøîcJ™7%¥~?5¡]ôãôÚÓ-V4JU åm–—¢Ç‰îRÝñÜAG¡‹{.Òõã×)VÂX”%Ì`‚J.•,¾�;é즳tyßezrÿ ¥È“‚üJúÑ;ÅÞ±´¾‡ÞzV³°îSrñvm$ʘ�-•XPB€æƒ¬í[ˆ�*ìf)v\‘.ÿ¡¼‰±Ó“‡…PúÇ�Æyþ‰ÊÔ0ײ<¶÷YÿÏ™"åÃòDÑc�Û?,Øzñ\ô¥ŸÁhÝÑi¦à¾12åb_óˆãbÕ<¢Ç�Xž[Á­õ!ü;q€hç¢Û�ÐA”>+[WÔÚüÖòÖcÔ9¦Ö – J'<ʹýì¢}Ûˆ>(#¬6Μàk¼H”$ÑíDŸ¼K„˜ åj-e÷,Ñø‘…e¶’ÞdÞü)•†èî-Ž�˜ÝE� �¼vl¿dÅDoEc­t¾§A@�À¢ª�Y`܇y»”Ëlñ`=óé—D±b£¤=ù³õ ž5+ÁÅXhñ9n^#Ú¸\Xœœã~à $_Q¢òuC�w+<³‡ØP †n9ù‹á]P¯q/_Ïq~V%!†Þ¯÷KŠsÉtlKV&J–JMñ}Ë*¢ó§D{…ù½_»„ãÂÕ <6dV7ïðóëŽPãAüD¬ P[¸!Bü¼ßˆ­’.3»ukÉnÂl†y¼àÚ8š(?#¹Þ'ªÀï'ê‚QXûŠañ€óá݆UC¦œ<Ö5÷%Ø ƒN.š&Š”%JåGtt/Ѷ5D¸o¸ö%„uî)€;¸F“+&é®­û(ñŒË<Ĥ)UE +ÜwÄÔÈ’ÇLW÷0Và™½WDŒ}#+ñX‚e,$TB�2éD ¬˜~š®æšûÞÞ³¦°ÎòôyG½Qß�ë+Z°ºgÃwcùl~o_ˆ|<[ೕ<ùþ شɈi׌`R»QB±¶«�544444444444Ðáã3ð”WrKؕү p¬û Õ z@Ç‹g/hY›e´sB ¥ÕµÕ›Î[‰»5\C qðÞJßñ½X<]¤n¾&AðZ$±H/[SЭÏ0ñÓ6Ø2W݉VÌÿu,Ì· ~.Kà^uo*Þ ™&·Ð>µ 8`#óq¯¡E¯‚2[nK�˜)­¼€ã …§U@MŠ ´‡`úû]{ðv¶¾YÄàçG®éòèórD ò%ÂóߎïΫ”*ƒ’jŠ;¿á¡[Z8©¹yYx?Žß!XH©–¾Â�S¿Ö"VŽÚ&öq�½Ç‹8Ö<̨Ï׳˜Ç¹! Tòûm%ŒIÕš0°µË5f�µœzlµØPÂÝ{‚º°�•@ÁEDÌ ¸cë4@¬ ļ°’üV`¬F¬+ÁâÃÛ{"ÛðöyG½V•Äs`�•·r_W#:Åﯯy*ûEwy&×­¼&|;ö?uÍ“GµÿøƒüY!&*7V�•a>ÏŸßØâX“æ€æ€æ€æ€æ€æ€æ€æ€æ€æ€æ€;h ÃgܤÿË1~cpc »*ºÌ‚m•º2è0€5òwüû/uúýw#«6ÇØhýñÇj1·ûWØ2¤Î°aF>ŽÿdcåWWßN�j”A\‰6Ÿ|âl/2�Žøì– &î()#OÛTßmõÛotøüy£ø²ï¾£·cÄpW5Äôˆ:.ZDËöì1ú�€â,n¥¶“';ƒÎ/íÚ•HÉ`ä¸ÿg9>È’ X"¿úŠ2&On4ñ2€Ž¿{þMú±‘)iö¤”­F6z|ç1˜q€\`¤ãÏБ0}BJW"ퟱŸ^_ý1AäC»¹Ðä‡Ö°JSÖ1ØPÂL� B4”p@¿÷n5ëB¸ùç±�5ã¥%�h…hÍY¾Çi周BÀW%‡Ø4‹…mÛˆ¦� B hÈWÊÊ®¬ÞV à!%Äæ@¾¤7�·_”–@¸^ë½’Rñ=\ ¬`m«wp žC€!°2AË.¶@°$ùþ±¯þ/Ÿ#ññ^"44ïaÍ!8b&X˜ô|¢î´aD—Äg̬ÃBÔ€û €�Í"† Ú +Á⤠ó ÆÖ ÷A°øÂØA3(?·¨Gá|+IA³_fÁkÆà)WA!|Ÿv®mŽ_nÖ„US·&I”ŒÇƒÊ<¼GZ¶@.`J K_1ÖÔækÂxÂó“û}¶ìàqdÛj–bü[|H¨¥Ì< °°”Å=LΟnXŸD�),v¬Å8ó/·ƒø*’t‚ÀWŒE*@‚+7Ipå—N(‹XVÚ±ŽAÓR"Uå\ãÁE€4+Éñ Ààrî¯J¾ÜYß—çuK¦bË!~`÷­ìëÜ@|ð�úùw.Çχ;òäû÷õòå4z»+²ËXx4g÷ éØ}«&ÍÍÍÍÍÍÍÍÍÍÍ+4ÐaåˆÍñc–,`÷E°ÞXË@ËPœ”’g7dwF°æÈÊAªAŽ=t)¯ü˜¾([–êq0lOèØ… F ”-�+õ¬É+I ç2-9N補9éûZµœ%"èpvÂÍ‚ɼ�Tcð`ºqïÅà á+zô�É^o#èè:s&m;~ÜèÛô¯¿¦´‰ëçw\f«,Ó¦ ­ççE:ŠfÍJ FŽ4,ÔûÞ@Ç“»Ohè;CéÑ­G”2_Jjº®)E�Ýèï•CWhbщôø6KʘÜíO·§~ «�íc„ ¡õáÖ”4[RZýÝjÚôÓ&¼h±­…ÑŽú'�¤0 �~Hº}î6þHÙke7’à®jN –02üª UÃÒ# ‚àÆjrñÉôäÞÕT³�ÍD†›O�Ž,-šQ�¥vLù[æ7Î �Z°.9ôÇ!Š=*µ>ÔÚi) ÇŠñ†¾ùæ:T‘ú)•ẠVp™’û'¸­‚¶5húFv¿SL¸ �ûЯ+Xs¾ \‡³p‰…ŒîBã]ÒK²€ÐêÆn‰ …|뺽pZí„�à®gïK—XjŸ: d7},¬“7ZÝšˆ#™!ð’®~ÆÿH42èU‡ànOTíï® MÍm/`$„ø©½8 ).ÀXÀHJÈCò¦«òÈÜB@Ø¥�8þó(,Xúµaá|\Ÿn»`S©¾ì¡d�1ì#¿•ÙÆ›Ì[h÷N(b@8¼ú¬yM°{¦LB ¡>;©l=‰y7¤³(‰ç–2°ˆAøýar!… ª­7DzHÿŸ²pîÙð,ÂjÀŽà¢ªj.am°jÄ<óù»֦š°¾@qθ ÌV¼ ð<, ¨E,„CIuÈj·4ë©{?|Å÷ã·6PÍ ß}«åAÿ)Â=˜<Ë—L‹¨E‰ÞÍ!sÄÖj-0r¿·ªË%hçãZK3Ï@8®œM€ Gp?:�p?Ëú ð @$Ü»I K_{!SŒTUÁ9\XÕep¤"EüËÀð8Âóù%�=-»™`¬ÊæŽgkŽÆÔTëØ,t}}&Õú\Í ¾WN“áÖnç=ó(‰óÔ) Ü X!ǽfüœÂ]\¸!>�+åP7/ƒ2µ®LZ#s|¿'hÁ×çõJ¤}h÷#Ñç߉ïјÞ\„‹@Xd ‰<ýþ`7®“Y©hÆ�tEQ,ŠÂ/qÙ  +�*Y²P4+ãB:¹ÎÓÐÐÐÐÐÐÐÐÐx£9 �ŽnïvAë�©¼Ðºþð¡³d V¡Äâª)k–•˘Ñ0­wfòŽêêÁ±$Û‚0BuP•èÛJ,¡´Ð9¶ h8j”‘š�zC5r–x]€¸p*ׯŸá2(GPu_)"€€Zб#%dpËJ}çÍ£5¼�jÖŒö�9ãtÀ²§ßüù´zÿ~Â"€IêD‰(¼�Ž}ÓöÑ‚Æ Œ~Ôž[Ûˆ±aýÁ¥•/쀎h±£Q÷{Ý�ÒÛGo§e_/3,¾ò½@왼‡5[DI²$¡6GY2l!èh´º‘ÄRÄåPZVÀ]V‡À+Q,—ü¥_-¥�ãvi_ÿšgJì’¯x tL,2‘Îm=gÄþhs¤�h¨íÀºd\^–X2•X–àîëÎ�;Ô©“"ÑW+¸Ù/W®Õ´+Ý·M0€ µŸi©1‚oÏ„þB;yÍ9!\Æ1Ò­î•l J”®— œZÆ‚L•*d.±,9 o%©`B·‘ìæk‘-úê¹…(î…›UƒÂR“Aˆ™À¡[œ „æ°#öHOTºpFS‘’{˜ëLÍi”…oþ_WbÏ•¤k*fÿ¹-4Ä?ÿXX®\d¡>,@À °2ÍÜ*4úÅQÈÿ¯;o*\}Ư9bX ÷;¿®t#ö„*܇;¸å�˜Ï Zu±/ÿáâÖ €!ÅÜÀ3 Gá §m?QÏú X’Ä`ÁðbÒõŽJ+ý…‹¤Á*’¤ .XG@ÚùÞïÀÃò`ìok{^ÞÿWv#ÖR”oØN¸–SkÏà{«\6©ÒÀwð„û†@ñˆÁõúœ1SÀ[XT¥|ǵ4\…-œ"Ò`q#A_ûŠøëŒ~t¿ß�¢½ÍØ—'Wž¤éO7퀎ØÉbS§Ë�Œ| jĈƒ¾»õ�‘vpÎAò¯ëOqRÄ¡Ž;Êf�[ t$Ë™ŒZ`‰u(46çX‚¥IÆr©áІÁJ«ýmðWz÷ãwƒ•‘ žýãõ'X¾ÄOŸrÖÍ飃…· íc·Ó³‡Ï(W½\†å‹H�øÏ DSѶ®ÂV,H­P—n—@�ê±Ð‰Oj9‘#‚#¨2ÀÎd€çÿ³wàQT]ô(M@zïM)"JGP�ªT¤) "Xñ{C‘n¤H—*MzAŠté½÷^üï™——�lv“Í&�÷~;3¯Í›3³³ážwï¡ÓŠäW®žo[›Uí¥R'cÓùð½§Ž{[ÖJº¬GLY¿)ž.ngßg¿˜4[a{šÕÉtŒS¤¶ûO-SÌ0Õ æNÿ7¼“š-˦5(UêßÿæéëÞ»zÅ“‰å$2|‰áÚ”KÔ(¶Ø¤E²)ÂØïË¡FØÝ®Ô¦œ+®™ÎÊmLÿu'bëv–»É,÷µ3} ÓØÐ¼�ûLýµs‹!èfFŒ¢p[÷w��_›·¶‡»�ݧ~JíÂæˆ©r˜2ÇÛÜض 9ÕÕ»…y.ìjtF{Tzδq§1s§Â�à¿ÄMƼö¡_÷ß:z56r„˜þ±=üwÅ�6¬×OT†=kß�„ˆùØy§ž³mÜ[¾3˜>‰ß­ÚÍ$Ô w­Ùw§‰rG‘;WK‘€!±â‹ˆaŠ'6Z<š»W"K²šr¦Îb:'¦aYr4|J®“ÇD¯#�iK½‚Vâì¶fóÐsU°[ÀÖÓaÉ.¼¦ÊbʬèÓ2ÑIgŒ$ƒR:$Ç®6Îy›{ŸéèÀµv§cÛC^ÉýåÑü9égÀô@4¦ùjÞÙì_8'ivR˜{åÏéÏ´aLFg)S˜EdnQt’&Þ‘ìÛû’BÇO¤‡¯±Î6Z,¬› ŽûÄQK£¾B0Ñ/g4Í^¦6úŸ–(QA¾Ÿâ÷67^$H¸Í¥$‰ŸØ—†‡»½;"ÁêY¸ë¹ïÆŸ©›ø 3WFî0‚‡äQ Æt~Lëç6Š³× ù© QKÂ6*ÖáyÑoÞ‘Ĭv…û}úÃ'’Ê©«éM2Ù�mÖ8‰4©kêüÃ_w4:0lÅ(!Š´èÜ“è<ï3 ϧ7qí©‰�½ÿdØE5Ûá�?ð÷!ù� ±Ýò7hvÕî°pèVPE@PE@¸+P¢ÃÏm?&Nø¦&`Æö펮‚m–Oô^Mަò/«lû2j5P³�æ­M᫽-;têöèá–Η_¾ð‚­ ݮٵ vŽë”(�öÕª…ÖÝNDuF¨7B›Ñ¥ %�¥“AØÍ :¾œ83$}íçW^A>‰ìñ¶örOÖʽ¡ýþöÛø}Õ*ŸDÇ&Ñzx­¿,}£˜|Žtéb”èýühl¿ IÓIdÆñ{Ù©]§Ð#—yÆ|¢ÍA�Ú?£$zCô*’eJ†N:9e[~ß‚‘µFFJtø+w ù¸qí>Mø©QQ²]ITíUÕ]íìŸÚ-óÍiæ[ùkI#õvÙpmlA D‡›8ÉW=òRd Kž5¹#TÎ(œ;ÄËK-„XªTâQÒÜ+æG-7"ºÔÔ`dmø#–L½�ò*" À4ML×DßF¥LW#W¬erðÓÉô3Û®êîú£IeFõè}pÅ8£á6¦ÅáŠæ›§µ5¦xZ0È[H"ŸÖÛRÏ–¢â/–1Ç?ÿ!×ñ´Ù§c³˜Ì‹ó§FFǯ<}ìÞþ]fU9�¹r¸n+[õ­{%µÛÁH] K·ç$óáÓ*ç4bÍîH™»[:þ饑ô±ú¦Ä|2Õ×RyÞhLSV¨¸Ù§–E“rfŸzÔÕð6>›ëä™fö�È,�)b#Ÿ¨ÅÙê{žk¢Ys›³Rû…0ÔWX}!rÇ¿¯¹ºÏsö˜Ôg¾ÚE·Ì‰‘ï:Óý}Wø½îû‘9Óªóá£�*f5µ^’Wƒ#Ÿ‘M•Ç–ÄÇ—¦ÐûÍŒó�z.så;D v®î´iŒ òŽ2£{>…óÉÏ1÷˜f‹©�h3wšÈ"sا%^©ðéÀÀú´©a4`¬ 9ß±üyáûÙWš×ñkÂj¤Ø3Ú÷ßµL gSºûFåžpÜè<ïŽCݧ4é�¿—ò(x’Ðôìs—ü�‰öë8t(V‹Óü>yfËý³)®b"¢czûéXÞk9â%Їÿ]’eÎ^¶å~ô/aˆ–Ø$:Êt*ƒ*ßVñ:{øÃo3}‹s‡Î¡PƒB¨;*dy««Y˜ù…_(ìª »ÑqõüU0Єĵ7¨ÁˆÅ´y ç´© è¼eúKgI®y�•)BXFGàßK$èq3¢MT÷Ññ[qD1OÿÃ%Þ‘¢ÉL+Cs;©yló·St˜ic¼�çâ9½sãSƒ©°ü F[] ŽG‚„Î;š;5Ñ}„  ÿÚÃ(y�R÷‚f sõO·˜:Wk3‚×¹I¥wºÑc¶»°íÔ@Ò"�1¨PÌÝ­ÑÂÒRÆìtfgÊnœÉ6mͰ^’ú«½é;e�+¿Ù·ŸL»SIúˆTêH°ɦˆ¬YyÖ˜È"Fù2ùL´�McFåÉ}�y¯—×MœˆWTŒ¸DÝšŒK[d·îïŠ;ÊËÖs[¿8°á¯°º>¶ž÷­œ¼hþú›ZÏ'£}àïÚø TÎiÈ·&N°se:*¦¥¢ù"jLMÄŸŸ¶•tUýÄŸARÿЏ­wíéònKcJý½�¼û𘑌à ÑÆw3¯�QO|oOÙlôÜýZ ¸øO{KbØ6kÿ”ˆ³ÒæÈ[‹%Ø{ÂÑ‚}Þݸ�î5Þ¤ÐbZ9~—K=%éèfÛÙÇÜöÜ•+»q£Cn,ص+ÌW%§D·­¼ò/³ŸÔ£17IPE@PE@Pn”èð.]Çèÿþ‹þ²Rª¤¢8¢µd’~©¾8¿ÛJ„EÑŒ�ºzöÄq|ÓHX�¸ÄÑÁÈš/Ý·èõg âq!Y¬ÝNDÇïý…îS¦8S÷NÁe¯'�íÍ :ÍÁ¨Z�ÇC§²tÓen�ød,’¯®Ï�—­ýUÄÕ›NpJ[,n�ìe³{µðö-ØG7u"0Mjä©ðÚëžµ;Îì?ƒüµó£áY€Ý ¢ƒ©x˜Æ�ƒ~à7¢mñàvÊÚüøt8ÏÞ ¸SD½*ý¡à6y•9‘t¤‘Daª÷*x+òëK¯€¯=¦%º }˜zŠ)¨¬1-Ïí+• SO=™UäBp0ÕS^Y[%igš–7Gþœ¯vNL!Åh_«¼w )ÕÜÖH`TÑy¶Và�+øyíÞFÛ’Bä­Bx°ÁóMÚ™»[»ê›X,=^çd¤8‘?g2Íû{¿™YÝÏ:_©¦~é|÷6k�ð·7 gjÌ'ŸU¦;'?¥Í:‰Í·îZÏ>ŸÉsg<©È<5‘ï1MÓµy§'‹¼§§Ÿ_>ÇnG¿§6â=wd [–¯&ó©¾û¸ÓRùŠlrë/¸5ìhKf¯#pü°Ñ¡à¹Û˜Jï…2FÜžåÞQUÁÞŽìóîOûÅ-Do# yžèÚ ‰~í»r%Æ Éq^tݬ%°–üÝû²èœUÊ�\t¤¦(Š€" (Š€" (Š€E@‰‹D¶ΞŠq~\½;CH vo.bØ¿Ô2ÿÓuët”�h’ ã‹WÑeåÞ°w/•ÿ¬Y<¾Ïw½#6ŽÉy›‹nÈÙ‹Al!Œ °v;We `#!uxMÔ«`š®âyòØK ÝnÝ’L’þÇ ™‡V„ìÜ ¢ã¢¬(|îÛoÁmêûïÇ 6m@ñuk?Ïž�‹;‡¯?󌓒*"¢ƒ ©ÅBM·ÅѱkÁ. ®0Øö©ÏŸB¹÷˹O�_«üŠí³¶;eq�è˜Üz2Vý¼Ê™OëÕ­‘©h¦0óRqvÎÛéD¨tÚß IÒxpÓPFT�­S·"qêÄx瘰~ü$zHøÜsï=Ž`zº¾IH¦Öº7¾ù~1d¯|W¹ Ô˜¶*¹Ÿôv�Œaó¡»SÌ0½Òtq&Ò�ÿõ03ŠM3ôTmYe;A4æHZ›J¦îÀ^ü‘Û‘ø`Yu¼Æ3Šç2 WèRƒ+äÝF2áÙü¦„bâÌÍnÍ®$§p÷BqไíŠw¶}²¦¬~6AiN×Ãò5¨˜ÍŒR©ÐÓðp¦@>ÝNõ/„¬Õ4´*ÌŽ;’€Mß!õîaš86ÍQ�G�8pø¦Ä’Jô£ýy ¸_p¹[°$„·!÷Þ[§e¯¼>”¸Â›˜P<ÞFç¹:òLm]g0dJ¡çÅák�Ñ Š›•àVÞÖùÚò\Ï<`j¾.ÏÞ ¾Zy¢˜6�ϳ?Ý :�½ë˜âˆÉ>…Œð6^«/Q{ÛÎê3ðZ½Ó(Ù6þ¶– ´õÔØ¡ÖŽ/sP$H,X£S½ýsB"Êw‹×2goØûÂv¾¾ONùŽ:Qb‰moÿÛ[ãšú k…x}ØÓ–QOLSFͦ2b˜ý“$ع2ý]›êæߎ’ôO <çsïñUÌö|¶Ž÷¸¸<—|—½ò¾`ò¹­ lûÛÏÀG­M[·Qd½Ýï1Û–©¼ˆ‰Õ,±åü<)u´ºòüQÀÜÓ’‘<à{žæ]ϲ`ï ûû¼»ß üž�X§�} ®S߈Âï£Wú&¢MëÀ?ëýö›Éa{ä•T�­„Üh&g§—"jŠ€" (Š€" (Š€" øB@‰_¨XF—çlIAô³DyL�éÆ" n‰Ž+’†ŠÑ'ÎÉ’a±"9r Ñã�ãAÑw ÷?{ö`èÂ…H'ŽÐ¾-=ž ÃÔé�h:TïÛU«¢Ìƒ‚å}fÌÕµ¨Wº4Ú>ý´3¶ýp¯TªÆoÛØm¾L™�WþѶKª­–!©¶ Šèz5Iàϸzîù�&çF«Û½;ŽIJ¯$’Ù{>î1غ²èš$ ‡%ÄÆþù'úˆ˜$�dÇË"Ä]LÈŽ4B&ìõÁ×ÿCš|iÐxzc¤Ê�Ê9žûá\,úb‘3ßmK ZŸj¡s÷µ³øëŘýîl§ªPÃB(Ó¹ ’g�—XÒôIbƒû§÷žFŸü}põÂUç\5~®�ÜOyÈÆ“;Oâï_þÆêþ«ñÒÜ—à�áX±i6ú{=%5ÕæLt(íÞ¼ý�¬ÌíhÊž{Ø"H»‚›NÇLóÅ3uU:ùª_¹lR« üÚlá�:È�.eÀ, t%3Žýœ&�ì[/˜£é2:7­YíSãe‰øH‘FÏ�‚mצ+Ðö#{dœ•\ÝÌhê�|9TÒ"‰£“Q Ô‰ø¼�iC'6SM1 Å—¹W³žãÔl¾e Né·ÓÄÑÊkäµÒîl7 ÎLÑEcdL‡/LjF>�´bäí£ŸDôù³ÏOê­¸…¤©Áñ©�tŽïÜ,¢å‚éf!"x):ïý|yF2{3ÇJÔP=³Ï´RŒdòeVǃu$øý¸?…iIÇ1 *:ë/É>õaÜæŽ<`ŸKÜ0‚‡SC{ywз>DzÏTZyŽI6>(×Ë´r‘Ù¡½ÀS!cÛ6"ç¾�a[’L$þž¬œ=-çýŸI×Ä:ŠoS„ÛÛyÁ ::Þíy<²¯Dï¼njåÕ^ž Â3MÝÛò.ذÊ8¶IDU“ûk-ع;$š¹� ñ$¡Ë´HÖöí�cRÆwïÕcål�Ùº£ZzÈóSùù°õ‘¹‰’N ^ \ãƒiÁ˜ÌÚW¿Ê»¸±=òlL2Gî­a!Œë¼nbÉw,‰£Œ˜ZÐûY öžpÌ`Ÿw¾÷97_)ÌÜD¶;ª‡ç ÖHtL–¿“ž/PÀ‰Þx"gNk‚=…öSE@PE@P�;%:b覑ôC0/àJQE'ú£GãÀ‰~ÏBbÁMt°áè¥KñÃÌ™~û�¤èÖ¤I8"ÃMtøíRÑ L¼V¥Šsä&:"ëÇúéï¿�Ä’®‹f‰ç ’�1o¾‰ô)B¼OÒ–ä@ÿ9sB£!üuçµÆÑ1÷ŸðÉXñ|Db…äžôq‘Ol~TÈœN¢­±ç˜x¾|‰ŸÎ’ÒêYYqH‹Œè IÖB¢sHèX‹)¢cÇì^}8®_¾î Mgÿås—qùôeÄ¿/>®]ºæ”Ç¢ƒ™Ñq–}¿Ì™?RåJ…sGÎ�z´d™“áå/‡’N¡�¶ïS Nﯟ—yG‹¬°SÚLÁ�«² Z,QòDH‘-…C‚\>s9´wÛ mo Ñqæ¤8�S›iüºÈ¤ƒbjžR)�Óðn#q2ú3«9â^97aë�RÉ�Ÿ)F ¹IÖ»…¤™ŒÏ�÷“Ï4�匪XËGôÙ³‹_˜ñ+äùçy}ÙYy« ÂûKcDC–œ†Ø ™À•ÿ4o­–±îÅ2&Õ�9? •s¾L-D‹,­Õ;âÌž"Ž~oã|W ¹Â1}£/ÚÕ[3m«ù¾†-5ódŠ.~¿x}$.iü.RðšQX4:ÖI€øÂŠâØ{þ5QQlˆñ<Õóûw™Ö\ãÀ¨‹5×.0Š¥v3ÏhÄ4:sµ‘'vDž�ö»MÚ<[¾Lþ´â³å6ÞÞš¯Ôi¦Æÿ'ÉLF%ñ�êmþÒPÙvVwƒÇ|g1=XÈšÛÄÙR˃šYåçŒ~�%ìÜmƒ¹'¶°Ï;Ÿ��[Âk3q\’ÔOË;ž) ù[CRÒ!mçÙv½üýœE�¤Nœ8²¦Z¯(Š€" (Š€" (Š@(Jt„B;;g/]r´(VоÇ9ÙwS25*[5‹‰WÒ˦KôÀ€¹sq\R;Yc4D‰¼yÑ¥N'‚–ÛíÇâÄŸ'Îü@ìÅråœ ¶Ý}ô(^ê+^¿Œý?ºtA¢�4\�$úäàIñ`ã;wvR?y7eTÄ/óæ�ZîÔ@ñÅSSZ¢Y˜*ƒ‹ q÷? ç¦ ­ºèg�lðg %×ó‡cÄÉ=’3'z4k®#q¨‘²F46Ü-ŒÊáŸ�•‡ÖÜdUûjÕPGô[¼möúõøLƳ֬Bð_LØžÅ{ð[ƒßpö€çù!�P{Hm *?È9Å¿)N[?b=ƽ8Ήph¿½½S¶aÌg %÷utʶNÙŠ5F q*Iuâ§ÌýÑ=›è_ì;%¡oö_Õ•£-â&ø¬=PõÔ\IÓ%uŸÆïþù£ç1³ÓLì^¸§v‹÷3ĨÿA·^w“_™Œý+ö‡yîØ&užÔÈ_'?žøà $J!^Å›lV`œÎÊå§M¤Ãºåâ˜/egÊWŽ0u6“[pà h�™ï6ñ8oYF‡(S^U©ë?½ñÍœCˆw±WX³iŸŠ?!ÚCóÃÖñˆN®¯˜ÜòL!“WH’/é3›UátŠ.g4�–n#�ðkI[%ŽmKn°ž‘(Œ!!ÃhÆþ�%ñ8)ÌÔ<Þζ0ù÷—�”ö="‰�ãvüJR�¹õ»[êb0-Ú¬ñŒxÿáѬ³¬Þoè)·{›´;<.ø2‚€)}h¼Ëk�=²Ĭã˜÷‰ãEd$Ò¾z˜?9|+>o$×EÒÂÛ˜šŠÏ 7Þs·QL½µÔùZ™oÛ«Þʹ§)~Àó ³/ÙýIž×ZÒdæûîË9ÎH.FtÑ=±hº¤Eá™/¿ûŒ¨xKˆHïô\ìÃïŸi:ºß•ïIŸ@�Ñ4þ^êéAm›‡Šl¼‰ËèΕ÷`l‰RùÀèþxÎjÞ|ªÔ3‘+î:î÷xèÿ¥!@H„c ÿµ'°F®—Ä1£EmÃúOÛHTÍfŽ|^‹”bixëÔøcŒ§œï«Ôé �Ħô××öŠê=±ý¸�êóNÂòQáx_¼µ™ì¸Ô“¢®-¢ƒ¦…~*Š€" (Š€" (Š€";(Ñ;¸†•ÿO>(‘;d?£!Ù�5MšHCñKº¥DjI“”W„®™éN5j`l“k%¡@ò€øÜŸxâ˜1-ÙV™ç™g>IEÆVqÕNü{G6AúBéç}\�§3/ù’œØ~ÂO’. 2΀„÷'Œõ)3ä覣N$S\¥È‘‰îˆõÇò èœ#ñ@Ç<Àóñí��ip54�c67=sî3÷~±òÀ�þÏÈÁœ3S·P?$KNÿmoeÍÝ„-Sñl[oœœ§3>P#Nÿn�ß¾=â(-kȹ@û^¿&„ˆ‘ ‘{�GÝ:ÚI80uu˜jÉ—óß»/�Úì{`·8ÊS$üÝŒš Ôè¡Q÷!g>u²f�Q¾ßní Ó*f?y/‰ ¿Ÿ$ óŸÊ+¦æÊ÷#ÑøûOœìéå^ò�àųWÜhLsVã!CÌ�cڪض¨Ü_s‰ËÏ»¯ùj™" (Š€" (Š€" (‘! DGdi½" (Š@Ь_aR1µÅÁ)®3ÜÉØºõ9HŽ‘$»›­û;ÀÀo ÑÄ(/_QqŸÛi®1� ’¹ §r—D 65E@PE@PE@P�›‹€7o=›" (wÌ×ÿF!4Ú™A\ñÍ4'Kf¿jVô3�ÏØUá…uï80bø‚îl™*ŒyþiŒê™:Òˆ`3ÅÅà§n,"ÃŒpg~¶ª ,›mÄ·‡.ŒÛ×x;Í5X$±FŠŸ�`Òˆq,ŠÀS ^MPE@PE@PEàæ# DÇÍÇ\Ϩ(ŠÀ…À‚)²¢¹†ç’R§3¹í­ÞõD( ÎœþjQCànÀvšo½ê@0šÃŸ–JøwnIYIãÅ´\¾ÕãÚUßNs »IC�÷_ Û»VSÑ"$¤Ü½aËõHPE@PE@PEàæ  DÇÍÁYÏ¢(ŠÀ‹ÀÊù",b´Lg^}SëP¤b-#@í-@nZégdÜ ØRtšÒ´{ÄIœ)»!ÅÞøÈ-ºw»? TÈlPø|0P³IÜEävšktP¤èùÀ¯�NIÁÇ€ÊÏ�߈ΈÚWPE@PE@PE º(Ñ]µ¿" (Š€ƒÀ Ñá (/Ó‘äH˜H�‰)Û˜BRÇQE@PE@PE@P�;%:îÄ»ª×¤(Š€" (Š€"à��?þØo] ]»v ¤™¶QE@PE@PE@¸I(Ñq“€ÖÓ(Š€" (Š€" Ä ”èˆ÷Ag¡(Š€" (Š€" (Š@L! DGL!©ã(Š€" (Š€" ÜX¢#ª‘Áö»-@ÑI*Š€" (Š€" (Š€"p# DÇm|óââÔ��9ƒçÏ#e’$H“,âÝ+ʲw¨]½~{ŽEâ„ ‘.E $ˆ/Î_鵋װèËEøï¿ÿP¨a!¤/˜>ÎÏÙ߯;Œ¿~ú+\uîJ¹ñP�¸­`üÓçÀù3@üÀŸ…»¿ûž=ÞT—«ÂoÓX«Ø6mö.Û‹¤é“¢d»’±vØ?qá9ð?;­¹~M¾ßg�ä©‹˜@ Ø÷edç–°¶_dóÑzE@PE@PE@P�è! DGôð‹S½;ê8Þ#›Ô'  @Ö¬øcÍŒ\²$´ù«•+£t¾|¡ÇvgñæÍè?gŽsX§D Ô.^ÜV9ÛçOã§Y³°tË\ºz5´Ž$G¡ìÙQFƬ_º4î¹ç‘¶m„xÚCÛ²SµhQ´¬X1\Ó¡ à÷¿Œ³;a‚Ò¶m8Â!¦®“'¿vã†ÌŸ�?·mÃÎÇ�c–óÚÉ™uK–DÙüùY䨂�Ñ{út{á¶]Õªx¢@�ÛD·òüÑóè–¾›3Ìó#žGáF…£;ä-ë¿qÜFŒ©;&ÜùKµ/…gz<®<.<žÎˆvÇ‹¬ó|e"�âȾÀg¯›f$HZw‰´KŒ7˜Úv*Vö[‰4ùÒ Ý–v1>þ¥“—pñÔEÄ¿/>’eJããß Æ…çàNÀ1&¯áoù)ýE^­Û7ûv$;%r=T¨Ôz Èþ€ÿ39\¹,äHÊ›G�ÜŠsúGÀM°ïKÿ#šš` ‹`ûE6­WE@PE@PE@ˆJtD¿8Õ»IŸ>Ø{ìX¤sú¶IË“Ã-€ƒ�ògÉ‚_~9\ÿ)«VáÛÉ“�ò&åˇ!6ìÝ‹ŽC†àò5ñêD`Sß{I%ÂÞãÇѤwïZú®ªñØcèT£F¸Ê—úöÅn‰ª°öõ‹/¢dÞ¼öÐÙÆÄur “©Òu̬۽;Ìøîƒ‚Ù²¡oË–¡ESW¯F·ß=Žhç­š5ñì£�FÔ$ÚuwÑqzïi옽#“™�gâ≋P¢#’XÙ‰m¢crëÉXõó*¤+�m7´�•k¸ÝU¢#îÜÁ‹ç�÷„Ę5.â9µýhÓÕ›r\wB~Êš´Þíá¿]LÖÜŠs3%:‚AMû(Š€" (Š€" (Š€"p÷! DÇtÏ' !qâÜ9犎J )´<2 ¼+R ê#� ½¤Zò&ØÖ’ Ü·æ�è¸på Zþðž<é4-,ÑŒadÃé °åÀL’h‹“2'Kt\¸|¿ýù§:t;{ýúP’†Q#)“& ­ã#PŠ 9ã¶}Bš4ö"Mj+†ŽÕeù¬Ë¢{�Š©žš÷ë‡]!¤Jö´iÁyæË” g/^ĺ={0~ùräɘÑ/ÑQJ°yHÈ$Vþ¡‡�+}즒º“ˆo{æî‰“;O*Ñá L +ÑÀ1œA€K]Þ~˜: ^¬<ÐH¸¹œIäß À8 `\¿è5xª¶ïIÚ+uÙMÝg¿ušûn“¥·âœÁÎ_‰Ž`‘Ó~Š€" (Š€" (Š€" Ü](Ñq‡Þï’V©…�´ê ÑÙG4„/€$E�fÍœ~öÃѱlëV¼7ÂxxjI:«7Ÿ}Öv Ý2Òcþ† ¨T¸p„zŸŒ‹¹ÿüãôÕ¡2¦”ü‘Øè¥KñÃÌ™N«tÉ“ƒäNZÙþÖ±#îqõ�îur¨y2·�eŽ´|™3ãÛÆ�‘\tHÜF}’Õ;w¢J‘"¡Åwkׯ3B2ÝJS¢ãV¢ï9w°Ž»¸ààV¢ÃsoÕ^\xnյǥóΔŸ„7뙵|èøµïÙÍ™-¤öÃcÏ“ ¿×k™¾ãþ–èÊ›ð3q+Îé�ÈKƒ}_F6r°)¨‚íÙ|´^PE@PE@PE z(Ñ=ünIoêDL�ˆaëÖá'‰^H�X�{YT‰jL0j�ÆÔKLÁd�‘"ß…¤®j\®Z=õ”SõëÂ…8w®³ß¯U+'êÂö‰ê6¢£ý AX+i¤�R·T)ô›1Ã9íO¯¼‚…Œ°æ&:‚¹N¢ÒB¢9v9â ùƒ¤÷Š(2Þ—Û[Itüûǿؽp7Žn<ŠtÓ!÷S¹‘¾pzŸ'wœÄöYÛq_Êû� úûo IQµ[¢²‹£ßÛ¢Jt4(SÆI½tõúu'ýÔ—/¼:¤?¢ƒäV̼ƒDsx‹”‡ÀNT‰Ž3’«v·n¸!ä u-ê ÑÑLÈZÓ'ž@‹'Ÿ =«›èæ:÷ˆîISÑ?¡å”ÔRƒÛˆw+@»DÇ�k70íõiøë§¿ÂͲì[e±¤Û§Ü-F¾nØ:Œo2Þ)§4�Ï4:�‹6/ê8Š�ù¸7Á½h±°²–ï¡—}—å;œ=pe:•Aò¬ÉñÇ›âaõ²‚õ ¢Þèz¡¥l?¶ÑX‡” - Ù!!Rã§¹â]ç}¢ƒŽ÷™oÏÄŠÞ+B >÷x¥:”B•oª8×ê.�©ý@w¾Î·¯þ�–‘Ys$γËR?� gpH)o1ò^ô‰í'pO¼0Ù¼cxÿùÜb$ØšÎjÚ”bô¥O”<:ìŒIÄ{êe»æïÂà';¥Õ¨Žb¯söWþ°SÛLuö÷q,þJ¼ù^ÆïKå¯+ËÁ«B÷.Û‹ñ/ŽwÒ¥yצʕ uG×E–âþSÕy÷‰ÊqTžƒ_{_u0£'º¸|ÉìÓ^CȆICûþ(Ä ûú31uöÔ2º‚Q¾¬��'ÿ¬ !�¤_ ¶aPß<†‘v©X è=1l3K°„-õ‘Œ,DSbWÈ蜓äßY´ú˜ô\æÈ|n�ŸšúrNZ¿)B\xwòìý?àüYÓÆû“DNŸIÞ¥žã@Þ—$­d¡�¿²Idg‹¢EÑRþ6à¾? –°¶Ÿ¿yh¹" (Š€" (Š€" (Š@Ì  DGÌàk£\âaÒ–-è/Q³wì€Ç}(«jï»[^é½ô,8™¨mŸ~{Dób²hjоöš£íÁ}DÇ4!\¾™d¼YÓ¤ÁÇõê9ìU‹*Ñ1cíZ|9a‚sšOê×w4Hêuï¢& çoÍMts�+ÿýo æ W¯tipŒ@ÍMtPÈ�:¾,žxs˼cÂæþo.~¶ÐŠ+Øzî!gÕûúáëqáø…ÐSø#:è¤ÍñD¬¾7®ÞpÚ'ËœÌY1¿ö×µÎê|‚ß–èÈZ2+¬’eÆâÌä>äçžsVÐç{6ê�­oæ!ô��þ謈gA®'s!{¹ì¸pô‚s~®˜§½4ç%D¶º>*DLj#°uÊVglF#ht~WúR¼­b§OŸFëÖ­�ý@?jHº¸_”þ>ÌŠsUóÚ+>ø)Ùø¬­©lÿ9ðÊû~F£øÒÉKø>ç÷Î3CÒâáFš¼i@€QÖüây.Ô¨�%sdƒ‡Üàsxz÷iç¹ �ööÑ·‘8ub\9wó?šo‡u"€Ø�ÑEŒ´p[Úüiñh+O£…†U5ßÍ:Cë H“"îæÎþÄæ�%’ �t†�´plx†ûB-~âøØøÛFßvÜéÿÌ÷πėÛå2°ì@‡Ð‰—0nü087F01:åÚÅkÎyÚmiçŒË¾Ä,!‡5FŸ ’¨µûä=ïmQyÞIÈŒ¡fjHdÒaâ`ψ$ É¿Ñ?š²/¤®–ô¡M tnhˆ�²UÌJ}’Œ”`„Wò“<™½;lZ& :DÉ‚„dD…@îü¥1Ï�߉°e­!9è\Or¿ô«.¿uiåwHnóÙSìe¬D`�Œå6F ¼ß `TÓD1äž{�P8£¢)B£èùG¿ýæì¿Qµ*ž+)ËFż‰Ž¨^gÿ9s0|‘,a{OÅŸŽ‚ øÍ&:¨o0ᥠÎ\ë�©çh8!LieÉ _DG‚¤ Ðå\§õŠ>+0­Ý4'ÒáÃ+:Ä߃þƤ“�öÁ´x}óëî¡�}7ÑÑtvSG$\#W��¬`º¬Nû;9+ü]Õ˜òÚüõã_NQ»­íœÈw½{?P¢c`™�NÚ!j¼¾éu‡Ðp�CGõ�EtŠ*SL_tF„æßzë-w³H÷«T©‚çŸ>Òvq­�ÅÑÑÀTVݳuÓ£ù#:ªt«âhpðº¾Iû�ETñÓŠ(ÿAyçR¿Ïñ½CLÔY…†÷nF…èà€ >b¦ëÆèˆxj%2@Î1m¤)ùJn�;eVW!˜‹&S·½ wß.Í=‘,tÆÓ)ïËšU0z"¶nø‰`(c�Ân™«s#`®`æ6’;Ô?i!¯ Ù¢éÀ«ÕL‹1òª+øXD­#¯³i­¨“1m«ïöQ='#2™‘[ˆ¤ÉÃ�ÙP~jׯ0dÖS=õ|®Kbˆ¦äç‚ú#7ËvI„ÇP‰ü,‹Eía�<úS²ƒQ›ÆŽuŠ»v•‡4 ¦DGÀÒ¦Š€" (Š€" (Š€" ÜD”踉`GvªFãÆaÔ?ÿ„6K.®ú :Ñe\âà¡ "Ø –è àv Iÿ@arj_¼U³f„D§@’ƒQó%‚çõ6¦’ê-dD’„^K‚] £Bt,!öwÄiH#‰BMÚÙK—PKêv0š¤{Ó¦N¹/¢#*×éÖ"éòÜs¨ü°,‘ÐÜD…Ü#J]•G¢a¢kLD±hZ—ó]Âi¸�´¾ˆŽ¤é“â­ÃÆ¡oI ¦úyïÔ{ΘÿŒþcŽÅýïw4œBׇ%:ÒJ�6ëÛ¸j|ïö+Ôω4ÉS%šÌ�¥Ð^æžoã?$ài¯%Ì®öÖAï/­–mʈF¾P8šŽv>롲»¢ß 'ýPáF…Aœî#�ñé}Ÿ:ÑŽ>…=Þf‰"Ddzýžu¢sØÏ’îôO}êãwWÿQô2Z‡÷G•è`”P�œ=Áô ]+ ÂGB§<¤â윷Ó!ÈH”¹ÍMt´\ÚÔqÅØ¿ËlrÿTë] %^/áT/ë¾ 3:Ípö±‘$mÏ3òü�,³i¾˜¾ŠXÝ £~u$h’å Ùò% §^ˆ3}êf‰~xP¢·Q‘?l;sdD®­¨÷áßÏŸ15—¶)±¨Q¼‚ítë,]¼x¢ù!? /wÛBÌ‘(飼y‘%§Ìw{xqowÉï€<̨㮒ˈe×n�Ôñ¶}¤<ä˜$?³ônaŽO «ï‘!‹ÌC®#"£Ø;Ó7QÔ�¢àÖqŦ¿òg?}ôúÀD¾0Z‚‘Z�STmúؿˈ‘3ʇFƒÑ-ÅŸ�{0ß) ÷ÕsV—gc§<#Õ…¼úzXØá˜&ŒdI²Ö]€7> [_÷Q3O^Wǯ%-šü,ív¤àŽø•\( G¨m6VþF9/QÖ> ÙQ¢Ã"¢[E@PE@PE@Pno”èˆC÷¯žD#ð?âÖ¾“áLµ�ÊGŽvÛÆß6X¢ƒãu5 K6oF|ñR�jßË„XønòdçTtÖ·zê)§Å1Yù¾f×.,’þ %:Å:‘Jº§W%í“?‹ ÑÁ4R$Vh?H:˜‡²d ¶íÀ�ذw¯“‹{’¤´J*d‘/¢ƒ½Î +V ç´iÎ9^“{BAó@ÍMt¼+Ñ ÏD!$Ðs¸ÛY=79á®§ t¿Âýœ"_DGÊ)ÑaW§~ýÈõ÷¸0¤ÆæI›ÁÕêþÆ·DG�ç xt8ÜðÚÿ"™�¢ÑàNñãnâž/EÉ™jÊŸBt¸�×þÆq—3€‘w‹�Ú}Ê! x½nrÂ}ýVÜÑQ{Pm<Òì§Kï{ãøÖãp“Œ–!àoü¨<Ñðg‡cÛ´mN4ÓL1ý¯¥g®žÎ;¨ÒW•ðø;�»/n¢ãÍÝo"Eöaê™Æì“„Ÿ8Š›ô±ó Ó8‚¦Ó¢öÌ­0¦bZ¡4ŒÈ8ç0AH€ÄñNòaÉ13+«ÅAñêBd0EçÔí ÎéC{#ž=ÌykÍ+Ê8óŒSHy[åœI“ç[J4ßSË”TLŸEk÷‰D9üÏì»??“¨ ±3uÒJÎ3„€pëjŒüÓh@¸ûqŸbØ6ÍÔ_ç u{· ö˜äϬñ7 tÓ˜šN²å�„‰/ëð¼éãK¯ÄWû›€¾Œ~aÄ„?«ßè*÷Ï—EåœL‡U"¹95?¨ýá6·x{ÏqÉòœ»VR£õ¾2?)N#n˜F­¦Oד¯ª|Wo†“›Lú¾DhZû(dG‰‹ˆnE@PE@PE@¸½P¢#Ý¿�²âðÃyópàìÙÐY%²¡–hg0mÕÓ¢}/@¯@tˆŽM¢GðZÿþÎê–*…éÒLt„N\v Ùñ��&´L’{¤�&þ,P¢ƒ«3):NB…–YÆeÊkûOœ°»ŽÆµFü�^ç²­[ñÞˆθ‘6¡'Ù¹ÙDÇèçGcÓøM æÀ[GÞòžNíG¶hÐ|¢ÍA�Ú?£$zCô*’eJ†N:9e[~ß‚‘µFFJtDUÁÁœè�„= %Û•DÕ^U�s¸?ÜŽ÷Ê_K©·Ëº«ÃìBt¸‰“|Õó!oÕ¼aÆð>Hž5¹#TÎ9îØ!K¨£`©%í[ª�\ðQèvK›^?<üƒ3ê¥oS<Ü|&6qoÜöKtˆ>u:h}òKôÆ–cp“T?=ú“£¿“D‡[ëÅ ×[­ê¯tÜÛÑ!ìÜã&:Þ>ö6’¤ï¹—}šèS\¿rÝIOÅ4U4KôPÅי寓ßùÝ¥S®:‘õã{-·D¦EÇ(ÍHƒròÕúÑpµNT£Êïܦ�ú Ôa fǰ%¢U#/Z¦z"�@cä56Hf�d`¤Æ(yL(îK—Áê}0uS'×m/#$ Í­Ab ~ÈãÖCœø•…ð¶—Ÿ–TW2ç"¥€Ë<µ=»?aŽW_0ä‚§Öì½ßÌ\ ‡¹û¼kcö˜ø‘L˜=ÁŒûÝh!ëû>#Qöï2QŸôÝÆ–Rpœè§Ž›Èj�½-ö¹�ÑÁ;ŠÕâØ½Oı—/�!« #‹èpO†3oðý÷8"Î:íf}ð�%ânc÷%:¶8€Ö?ÿl»E¸µ‚êþˆvä:ÝXAê~­ZEx^wåÍ&:¦·ŸŽå½–#^¢xøß%YÂìeûWîGÿý�ÒØ$:Êt*ƒ*ßVñ:{øÃo3} ê>jPuGÕ × Ì|‡?�Â/ׯBtPœšQ$$.Ü«ôíþ¶1-Fîï<·ºüÒÉKø*õWÎ4¨YAí o³Ñq‰è iFí>K7~Ïýúzåí…ÿžpˆªF“y_F˜ˆjµ¤ÍŸ6L›k¯á³$&�;%Ö¬·gaI·%Î;­Ë…. ¾L “bä�œ�ml*(wJ¡Æâ´þ[œ×-…Üèhn5Z é±l¶G¿.‡8¤çý¼.NtZ]yÝý¯ŸI­dJÌêþŠY�c�ˆ[—�)•žÎcZv!ââ^Ðó<<m¸Ìã‘ÒfŸÚÔà �Z.aöíçÉc¢"$ÅÕ+@Ã62'qž[ë ¯ŽYM�JnábI=åmL¯T9'pxX‚Ç»]LÏøMð !7>–W.qô6¤�w;{lÓ@¥–Ÿÿ¾r�.ikÌ–8Ÿ¼²¿Â#äînÕsŽ”{ÿY[3Ÿ'�d)Ý£Blâ`“Žj™g�AØF!G©§ÖçIAt#wÁ“¶æÐ!G›cÄúõ8*‘ÖâK¨R�|ùðòc�É3šŸ~bN¬D‡EH·Š€" (Š€" (Š€" ÜÞ(чïß>‰ZøE¢<é±'då¡�îc™2¡™¤AzEþÞ�Ëk½Ì휯.m:רáÕ·H·m´zçNtb–ó¦Jš'CÄÆ£Btp¬·† ÃÊÿuÄÍgÑ‘ÀÇ\Ù.P¢ã‰xº`» f±bÈ&"íÞ6bñbg¾÷Kʯ‰o¿�QK–„5mŸ~#·Èu^“U /ôìé6ì7¸m[ä”(—@ìfK¿[Š™�g:Sc *¦¢rÛºaë0¾Éx§(.J À¾åû�±HF¼ºæU÷T�ýµ¿Š¸zÓ Î~‹Å-�½löpmlAß‚}qtãQ¿ŽmÛ®{Öî8³ÿ ò×Î�†Úâ·w ÑAl:1¦Ÿb*oëõ€ÛOÄZDÇ”WE€þ§¿|êjxÏÅ}<ûÝÙXüõbG—¦þoõ�tV¬oô{#û¨Óx³žI�Ä(Š…3ŠÃmÔ¤h]Õ”x;ªÝ‚âVÄÝ÷—nrî·Mz,jRر¹êŸ©©h… az#· ëeDÌYÆtWL{e­…´]>7lŠ.[Ç­›tp_·» ÷ér`·§”)$‚1F¼Pœ6ÚéÀ9sî´ˆDÏYO¢çñtÜóMpMÄ‹e€µJÄ�poLÏåKï#*çä¹¾xÃDc0êbΖxŒz$2›¹ñ~ñ¾b$[H†1] -[ѵ‹×®áGIiIññu^Zay$²®¥hŽ5—¿™¸`ÄZ°¢âÁö³çÕ­" (Š€" (Š€" (Š@ì  DGìࣣR\{æöíN”Çï[¶€Žwk»;tS0x[t‰Ž÷ڀشo_˜¡ÝDÇvq&ü³gª‰Á�ÁHŽæýúáüåËÈž6-†¾âÅ 3¢9”èhùã�Ø.«5ï•jp$ó¡_òÕĉøCœ4 ’o”T\6"Å›è`›È®“mÜ:%$…Øg "a|ñ&¹ì²ˆœR„BèÖn6ѱkÁ. ®0Ø9ýSŸËŠü÷îÈÿµÊ¯Ø>k»Sˆ·ÞAëÕ­‘©h& �³µbÒŒPé´¿“ÏôB¶Ãˆê#°uêV$N�ï{ÇÑi°uî-‰>÷Ü{�#˜ž®@ˆ÷ÐÝHö%À´G4F€ì•{Ëm Æ´UÉ“‹Wù6³ÁOÆ®ù»�(y"¼uè-ÄOìyÎ÷.Ý‹�e:W[ó?ž�ùÍw‹wO¾ ¦ˆ ĽÑ;_oç%H’W/\uRF1mÕ=ñî 7„›èð¥)3ë‰Üøf‰ÓÏýl2I5jxØè‘pƒ‡¸Ÿ!¦­:íEXûëÇrFÁeÏž=¢&Ö¹µlJ!®¨¯þ�éF݈ìÅy])‡)/¯M¦BzA¸`:ÌÓÉ×qžDAÈTB�Îé:Ò†ýh½„‡|ª¶Ùçg�÷%%Ö—@ñ'/—Ì@ÔûpÛ[�̪~¦Ã¢ ¸µS�6ÕÍQ“öÀ»=l °[æJ'>�ý´±«MÚ#s|Ø gKLX ä{ØÖ§‰¼©mÁë�º%üœlk¦Ô¢ÞÚr¹ÖûSØ#Ï–Ø&Lh„Ü=¥ž=juPð}ßN �´£î‰/Ò�iŘ^Œ6w¯èxd5û¾>ÿœ#Q8•L͇B¢4x5l«¡ß‹PxGSÆ{È{éË¢rNöï,\05\Ò ¡Á”_îg¡OW‰æùÄœ¥ygi+$V Æ?aªÊ½ >µ^2ep ½"n³áèQ’¿7¬qHIûÉè�йrQ¶'œKXÛ/Ü´@PE@PE@PE FP¢#FáŒýÁ�;ç¬X ©­¶Ÿ< 7ÑAñS!i‰Sí×… � Ì– ÕDÔÜZÙDJ‰Òˆ(¥Û.R¥ËÈ‘¶›³us$-ħãÆ!­8s뉖GAIë”CRj]“••kwïÆÀ¹s±WòÒÓž+YoT Y씄ý„è8,×Ô ‡ñ~ñšú¶lv��£yÿüƒ�ÇŽuŽxÞÔ²‚3"¢#²ëä@WäšʹOþ´"9r Ñã�ãÁÌ™qZ0'á3TðN'X¸çå&:*KÚ±GrætúûúÈ%Ø15Vtíçâ?ãÀ_� i4šØ¹+åv•µsºˆ·,ÄâÑq|Ûqôy¨�ã4¦ã¼ñôÆH•;•s<÷ùXôÅ"g¶%Ú–@µ>ÕìÔ}n¹šŸ«úi…B™Îe�<‹!’¦Oê¬;½÷´£AG8ÏUãçÈýTnV9vrçIüýËßXÝ5($í�±íï´-É"’F4F½ÔQ×!;ˆ ‰2 ´Ø":Ö —¨£Æã�sP#¤|—òaáÓSé´ò|X’Æ–P€œBä¾ÌMt�Tx¦ç3(ùzI‡ £͘úcpýòuGHœÏ�Û¦¿!)âz/wÈΑi¾H Ñ®]º†í3·cEßHœ*±Ï”lî±bkß t§Hm¢2xž©r[ß~Qœ÷òµøSœøtZÏ™¼QÇ8âÀh€N €?Ƙ™Q7¢v3CPGã}Ùÿ×EPÌÞ-L.>æ•gä·c†è}”•¨ÁÅf ÷ç³­†ê2�¯‡yj¨/Aíˆ+—M¤VïŠ3\æñÏJ!¬eïvÓ–Ä#A¸µæŽ©&Žùö_Ye¬][åz_6¬2×úÍðð©´ìä:*ç´GÒ_^ 3BÎé)5{ßt’kë)¤QcI£õšÑ0IšÌ¤Õbj®oß¶o4mß“v�ßðÁ»I‡–o y!ceÉé»-‰šBÑ 3©«HD/’ ¿®_7õŒÊatŽ/‹Ê9Ù¿ëËB, 0#}ü³yxžAß�w{ï4eCº‹¦$­¨Cáx|†HÊ0…­»>ؾO�>8½çt¸Z÷Š|V2ýД6SpãªxÞÄè¤N‘-…C‚\>#žÃk»¡í]Gt@¾C+ÅŽ9;MÃgèÔÎSN´IF¶ÄÑAr¡wþÞ8µK<ñ^–§J4™ÑÄ«Ôs¸~ÄzŒ{q\h�/í [é&:ÞŸWÎ]qˆ jnœ=(žt1F†4�ÕÙÊd³Ýœí¥S—0ä©!8¸Z¼óbŒ²iâNíœnð­"ézQoL xq�Ñ¢öñUàWq²»S u“U÷ƒ¿Š?!Ûùf¼ÞŠPù§FÏ�)–hÑnÿœÙç'EÈù3C2‚‘ tê3º"e!5¼~rÊ¥N•ŒvBŠôòŒÁ½ B¤0u£Þ–y¼�`[ÙùÙc»ez«ø €sòÕ¦€5#:ÜFgõüFÔ›å$p8çc‡L+fLdº«ÚÍ̱¯OKøØ:Š¡SÝ—5R¢4懭!Œv±dk#"XOò‚Ñ1Lå ~G@IDATm¯~ Úr_¬‘$¨/Ǧ¿M ïG޼&*‚º%ù Œ4¡Qg…z+¾,*çdÿßÞkê)qRC®05‰>4ï4e$ÔH¬ÑHJeËct9Ü3ÞZ+¦upŸ—¸ÀB~£KfÉðÞ„…÷±È»Üûضӭ" (Š€" (Š€" (ŠÀ­E@‰Ž[‹Œž½Å?€ÎøÈ¬g³f(’3'F/]ŠfÎtš·¯V uJ”×u¶Dm|&QÖÜÃaIÃ2îÏ?±H"IJt‰·1µS­âÅñ¢D>0‚$"ûbÂÌ\»Öi2¶cG'JÄ»}×1c°`£Y&KAðˆ¢Ú褑âSÝÌuºçA¥û”)ŽîÈ9Ùw[&IUÔ¨lYG;Ä–Ï�kúR®-£æHÇêÕii›=‹÷à·¿áì�³¡mI ÔRƒÊrÊ(þMpšu3¡ýööNÙ†1œ1èäî¸Ïx$·N‘Õþ5F8áwN¼ã´sPú̾3QúfÿUýW9Ú"n’�õ$¿IíÁµ‘4]ÄÏ��Ãù£ç1³ÓLì^¸t8[£þu@ÜF †É¯LÆþûǽ».užÔÈ_'?žøà $J!žÝ»Ì®_¹je¬ºÆ‰®áåß›à^”lW¬[Ñg…#ÞM"ÁÓF1B§ÎÐ:(Ò¤ˆSÜ·€è¦l:ŠšýkâÑV�:e?“ˆ£UPµgU”|£¤ífKQqk‡¬uHž“ÑA�#L•µTV´ZÖ*̸î7ÑÑbQ‹pßõÇÖGæb™ÝÝB÷yF-ùv ®œO³ËHå©”ŒöÈ[M¼Ñ·À¬À8u&:}c&@] êk4}xGVÜÓ:¦³ÆèFÇT|Z3Z¶Ü’z*—œó¾˜Ý÷¼FFe�ô ¦G~á™*¶ÍâJQrê«�РĨÃA²ãÔ1 mF“ŒÛ@ûrŽ`ÛKXÛ/Øyj?E@PE@PE@P�ÀP¢#0œ´•" (Š@G€ÑFŒ:"AÖù`ç‰2_DG¿¼»vzm%cþdá±ð�ѹkÁÐ �1‚%,‚íc×�E@PE@PE@P|" D‡OX´PPEàv@à± NжÕWcy¯åΔ™‹©±"2%:"Bçæ×Qpœ©�µr>hRQ„é¤( M£0ús-̾~*ÑE XÂ"Ø~Ñ�¯öWE@PE@PE@ˆ%:"ÆGkE@Pâ0Ÿ$øÄÑä°SL›?-š/l©®‹±¸±¥Ðö†Uf.LýDÁsj~X«%‚Ø_ ±GºU¢�@°„E°ý¢?cAPE@PE@PE "”舭SE@ˆÓ|–ø3G =E¶ÈQ>*}] É2‰—<[õó*LymŠˆˆˆõù@qµ[‡ÀG"†¾p*px¿gÔÙ ú«OT÷”ëž"XÂ"رºvílWí§(Š€" (Š€" (Š€" (Ñ  ê�Š€" (Š€"u.œ3‘‰“i2D½¿öPE@‰Ž@‘ÒvŠ€" (Š€" (Š€" Ü(Ñq{Ü'�¥" (Š€" (Š€"pG# Ô}{õâE@PE@P�XE@‰ŽX…WWE@PE@P�@P¢#”´�" (Š€" (Š€" øB@‰_¨h™" (Š€" (Š€" ÜT,ÑU ”`ûÝÔ‹Ó“)Š€" (Š€" (Š@¬" DG¬Â{÷ ~ìÌœ8)“$AšdÉïÞ{ïX®^¿Ž=G�"q„H—"Ä‹ûbÆ×.^â/á¿ÿþC¡†…�¾`úÛöþ^wýôW¸ùç®”Õy(\y\*øésàü ~à�ÏŸÙºåÀìñ¦}¹j@ñ'ïS-·MÛ†½Ëö"iú¤(Ù®dL «ãD�¸ðDaºÚôAà�1À¶õ@Æl@½Wî�‹Šä2N~íaÕhäÌI‡¨¾çŒê´có,al¿¨^»¶WE@PE@P�¸‹€q÷ÞDyf‡uï‘uü¤AÈš¬Yƒ‘K–„6µre”Îþñ‹7oFÿ9sœvuJ”@íâÅCûpçðéÓøiÖ,,ݲ—®^ ­#ÉQ({v”‘1ë—.�{î¹G¤m›�!žöÐv�ìT-Z-+V ×tè‚øý/ãìN˜ †´mŽpˆ©ëäɯݸ�!óçãÏmÛ°óðaç˜å¼¶GræDÝ’%Q6~9¶`ãFôž>ÝF¸mWµ*ž(P Â6Ñ­<ô<º¥ïæ óüˆçQ¸QáèyËúo·cêŠçÍËJµ/…gz<ãU·Oœ<Ä‹¬ó|e"�äȾÀg¯›f$HZw‰´KŒ7˜Úv*Vö[‰4ùÒ Ý–v1>þ¥“—pñÔEÄ¿/>’eJããß Æ…çàNÀ1&®aÏ¿À{M‰ä@íf�µ�‹­ê=l\ T¬ôžØ wlþ×2|Û„÷™sê¶îK¾M\(Y8 xíY3“ßV�|V—.Ç›vYròïƒÈû¸[sNwÿ›±›ï ` ‹`ûÝ ¼ôŠ€" (Š€" (Š€"psP¢ãæà|SÎÒ¤Oì=&ÞÓHìÛ&MP,O [´B vÉŸ% ~|ùåp½§¬Z…o'OvÊ›”/†pذw/:‚Ë×®…ëç.˜úÞ{Hš(ö?Ž&½{»«Ú¯ñØcèT£F¸¶/õí‹ÝUaíë_Dɼyí¡³�‰ëä@'%R¥ë˜1X·{w˜ñݳeCß–¯ÎÔÕ«Ñí÷ßÝMüî¿U³&ž}4/Šß"¯¸“ˆŽÓ{OcÇì¡=³óL\!M{‘&5‹CÇêÕÝÍ¢}�Œ©žš÷ë‡]!¤Jö´iÁyæË” g/^ĺ={0~ùräɘÑ/ÑQJ°yHÈ$Vþ¡‡�+}즒º“ˆo{æî‰“;O*Ñá L +ÑÀ1\l:ƒ˜Î]Ýå›NÀ�î‚o‰Ãþt…Á†é2…)ºm6ý-‘!<|ŸIÀ“5›úçí€}L[$Iî—ÈH‰b[³ X98wÆÔ1²c¬D‹Ä5[$™ëW)R/ʵbŒ`ÿ �)»¤ô¿.ÂïPÁœÓï`±T›ï ` ‹`ûÅD:¬" (Š€" (Š€" Ü”踠ߌSî�´J-„„ U—hˆÎ>¢!|$)z4kæô³þˆŽe[·â½²DU¬–¤³zóÙgm—Ð-#=æoØ€J… G¨×ñÉØ±˜ûÏ?N¿Q: cÊÈ—@Ž^º?ÌœéôI—<¹Cío;âžÐÀ'Ñ•ëäPódnËiù2gÆ·�#¹è�¸�ú$«wîD•"EB‹ÝïÖ®�g„dº•¦DÇ­DßsnM]åÁÂ{O#:¼ ›NÆðgÓ’ˆhþ$°b>p €«÷£š¦(¢±ãR÷6Õœ=F§#�ù5. ü½Hž Xv"l�‹ç� ™=dÇ"I÷”:v¹þ°ˆ¥#B$†¢’â+–¦kÃÆæ;(XÂ"Ø~±’¬(Š€" (Š€" (7%:n:äÑ?!u"¦ŠFİuëð“D/¤Nœ8Ü Q%:¨1Á¨S/1“5FŠ|’ºªq¹rhõÔSNÕ¯ bàܹÎ~¿V­œ¨ Û'ªÛ`ˆŽöƒa­¤‘btJÝR¥ÐoÆ ç´?½ò 2š›Ð æ:‰J ‰æØyäˆ3ä’Þ+¢È {^no%Ññïÿb÷ÂÝ8ºñ(ÒL‡ÜOåFúÂé}jtœÜqÛgmÇ})ïCò,ɱfðܸ~ëDÞjy±qìFlž´ñÄCá ƒ‚ß¾lýˆõ¸|ö22Í„,%²€ãr;çíD‚Ä �¹XfmQ ï›ÿã¿ëÿaÓ„M8ø÷Aßz‰S%F†"�·j^¤Ê-²,˜ˆŽý+÷cÏâ=8¼ö0®œ¿‚ŒE2"g…œÈþ¸,Å�E»ˆŽ³Ïbó„ÍØ·|þ»ñr”Ë�üµócþÇó}jtl³O^D¶2Ù°mê6ì_±™Í„ÇZ?†ë—¯cUÿU €<1.Ó¹Lè3píÒ5¬²&íµC×bïR#vþä'âEvYŠì)œg­)ÏÛ™ËH‘MÊå9õiò^=pµó<3¯ƒvló1ìZ° ÷Ü{mù(vÌÙ��sv:åÎà<¹*æò9¤-ä¹·NÝŠCk9ý8�Œ�dt¾7‰R$²Íb|'ã�ÝÀâ?€„2�¼…€‰CŠ?]¨T˜/Y çO1²Iõ$sa¡âa§ËTE«-펋3:e ûFo‚ÂÔ¾lÅ<`×Vq\§“ó<'«÷ˆ£{°u½q’×l<\ÒWOSF'ørùy¡^Á T,]Y¢jm®° (Tmè›X8-uÎyÕ"`ßN9_V‰8,aÒFEFD\—,Œ{æ•4™œ§�çØ½ÇŸÌRòz:w(Q$רqŽ3~3­qB~^–ÌÍ xdôÀ£�5›ú¾>{Žè\ç•Ë£ §<¯%KNà±ò@¹ª_{n© Äç.UZyžŽv?åO”Hð^–¬ü2Ç=¢Ùï*ÏÜØf¸"�”Û†cP�Ïï;ç™+?ðl# [ž°m½�ÎñÄÔb|î1é§QS¤ðDu!§dnÞF‚‚çñ¶ÇŸ1š"Þå<^#óæsm�Q,ŒZá3ÁgÔmäNŸÙ]bð�ê9Ý#Dõ98Vþ6aFà½æ»aÁTó}»q(X hÔHþOËÐÓúúrñbGˬ…è¬eI&_¦,XÂ"Ø~LI›(Š€" (Š€" (ŠÀm‚€·É�â4wž:…¢ù0èï¿q0$EÕn‰~È.Ž~o‹*ÑÑ L'õÒÕë×�ôS_¾ðBè�þˆ �[1óÍá-R:@;Q%:ÎHj¬Úݺá†x=¨kQOˆŽfBFК>ñZ<ùdèYÝDG0×¹GtOšŠþ -§¤–ÜF<Ú­ :n\»�i¯OÃ_?‰ËËʾUKº-qJÝbäë†­Ãø&ã�rŠ@ÓùL£¸h󢎣Ø)��{Ü‹ [ k©¬¶(tû]–ïpöÀY”éTɳ&ÇoЇÕË Ö/ˆz£ë…–²ýØFcR&´0d‡„H�Ÿj8äŠw�÷qTˆ:Þg¾=+z¯%øÜã•êP U¾©â\«»<¦öã:ÑAhdÍ‘8wè\˜KNý@jd(œÁ!¥¼ÅÈ{=Ð '¶ŸÀ=ñ„4âÊZ¶ÒÙòëÈ?GlòUχ&›w ï?Ÿ›@Œ[ÓYâý 1ŠÑS”>QòDè|°3$I`«B·»æïÂà';ÇÕ¨Žb¯ŠOlå+1µ�x÷Ä÷q,þJ<ã^ÆïKå¯+ËÁ«B÷.Û‹ñ/ŽwÒ¥yצʕ uG×E–âY¼«bä8P'#OökOà«æ´‰î._2û$ jÙ0IˆkÔXxȬ¾gÙ¾@�"†h°mÜ[¶ÿt ŒÓØ]jö?.+ùåUCw¶Üg¶mI¡ÇXC‚Ø2»Ýöв’!Ul·tÀ-#Qz½üGPÐaû¦¼^._t÷4ûìû£'Œ¾ðgtX×yØS›_‚ðƉóÛ—Ÿ§CœíMß­Žî¾Zù.›; hWÛÔÕo-çÈÏo{B‚$ûNöMvDç:·o:‹ÞíœwŸ˜D”MîIÛ$Ø1ÝT ùiÍ.×lÉ ÛÊ×ýܹY"J2-šw–sv³­=[K °dÞþ°$E½;Ô˜ÊÉÛè„ïú£D“z^ašð¹§¶�ú¾ŒäSpyõD¨+âmÃäõPT¢S|Y!/LñU¾ŒÏŸ)·sNÛ?˜ç`Ùl •¼Öhïö~þ\ˆ6!¯ÜVð1!¶þâÅw—zö}Õûí7ŒÝ¸ñä©&úi/K„1·<ögÁÁöó7-WE@PE@P�Û%:âø=»"ž�I[¶ ¿DUÌÞ±÷¡¬ª½ï>lyýu¤÷Ò³à%E•èhûôÓØ#š“ESƒ6ðµ×mîû#:¦ áòÍ$ã)Èš& >®WÏѨ`Ÿ¨ZT‰Žk×âË œÓ|R¿¾£AR¯{w'}5I8kn¢#˜ë\ùï¿xkØ0g¸z¥Kƒcjn¢ƒBîÔáðeñÄëøö®̪ª‹nZ:¤»;)A•î¤C)$UøQ@醑înéIé”.énЯsæÌ;óæ½™7of`À½¿�wÏ=÷Ô]÷¾™a¯³÷JÏë [û¿µ´±÷F5v°g«žMíz?0õ=¼Áž#_sGtÀI›¦xÚ?u?ýóìÕ:vòØjÇü¾ÉûÔî|w‚߆èHY(%]Ú}I9ˆQ†ƒüþåûj}æ ™©öœÚzüB�Ê7JíˆGEºÓQêRÓÃkÕüØ1k´¦µ»>8DÇ´JÓèø’ãjlDd©œ…"Fލvç#çwÉŸØÛÊvçÎjÑ‚½‘Á°Jœ.®^½z.{|�X;–"G!Ú÷Ôe—•ÓGðÎê6úR;vN}þ­Ëf!ª||ë1 L;P½3 -r×ËMogz›@ êÁ˜[¢ƒX9ëæTQ2W9È ¼‡wÎÞQï´.׺PôÑééý§´¾çz3¬ŠB?D!Ò¶„YR¾æŽ:D M)§¿›Õ&U£< òØÍUyA“*B $H§K�ÈDZØDÆJKj‘£G¦Ã³Ó�7Tÿ²Ëˆ/ÛåâSÔG:‘¢F¢ÜõsÖ†&D§<ô\ÍÓöX[5.úúøøÐ*&‡=5DŸ�稵·øç¼³ç=ø¶““ôù‹¥dÒaÁLj rò¿™ì4†õ™ÀÎcî[>S;Ä‘v¨hi¢4™´3"%°ÃQ O C`§Â.üBq |šØÉžžèÛ×Ü©ÇwE"Û§IŽ[×µžC‰Šü».!ÿâÇ|ï¶î‡Ï‚%FP`÷þ·�™0x®×ƒ�‰VÍåïðMôb"ü«À ?ÃXõ¦šÌ1çöq%5 U`?OvMøè«?‡õ ùƒ£>IJ±Ç<"=€-Ì•€yHîÏ´[Máç"(Þa»úíf¢‹‰"D< ºÂvùˆCâæéóDÔ@ß�ýøÙTøT÷7Ÿˆz¨š›7qÕQB[ø™C4Fk~öH{û‹ �-ˆÖ�Aïcé1ÿäê—Í ê\%ý˜¾ˆ¼Aÿ?Öð;Ö•¨ÃϺ�ý9{ ¯‡Ç„!¢èè^ݲã®{ý•I9Úé‚îƒèŽ}èrý/ýÀí«Ÿtd‰n¡?½™=½}|ú àû7–<�Ö\>k9¾gCèô[¦�}ôôgPÛåËiØŽvWÙ��f¼I%�‹�:ÞÞöó·89A@A@�×!:Âéã;ΤÃXŽÞ˜¸w/]ãècùÊ%Ó§§&¬õP5kVz+rdsÉßÑ¢£(�WÈ%ñQΜô]ÍšjLwDÇp¤¢+Œed1î‚3RÞ´i)¯|O,¸DG�Y³hv¥Xì ì·h-cÌ`39Ò%‰¯Î‡3ÑÜû\ÄäÏ€%KÔ¸-J•¢ºE‹ª²'6ÑTûݺQ´(ìy �=½÷”¤@�o?Viƒš¬oBQcGU#Ây çì“;OÔ¹;¢£ýéö/m<²c¸vP´9܆eKD«¿Y­v¾ƒ¼hþGó+5D.€0¡�ôEÆîœ¿C·_¤ì5³«*¤«šY�=olZ  Ã+(rçHc5¾ØxåG*©¦›ØãˆyJtœX~‚¦–g¯Û»Ÿ¿«æÉC$¢KÍ>Dp`·9ÔF‘4/^¤”)Ù ûꫯh“o® »êá<Ä×#°ô Î}ÑÇìȇcÒÝn[ç~Á9ßÐk­û޽ÑlÕ§TWD‡:ù—hÑç‹hÏ8ýsGt¼Óˆ6M¨J¯?¤~‰Ø£Æf¢xž=|F}âôQ8×_^Ÿ2–ͨ®ÛÁÑè@J­AéÑ�swIÖhm#{(zöàõOÚ_½Cyæ¡j«ù]·‰Ž˜‰bR³mÍ(A†êú£›�è·÷£kG®©È¤ö§Ú;¢{‡qï�S)½@Æ4ÙЄ�êÊÒX�Î?ZÝ#¢¡ªüVE]úŒSÞ�7Î4óè‚-ë9[pÞD'`ç~á�™lY­I€üì †#“7kÇ5R0�Hè9š¢Ù0Dd UÒü zöqì$ø�®Á?}`ÌÞÉg:¦ÅÊ›«:bkz+§—zà¨AR>3GËœÔNìñìh6©´�þèCþ ²Ã™°@z¢JÙø{Åc¤å1&n J˜T��{-•–Ó•ý­ÇÝÉd‚;û©�Ž1×»ã4>mÌ™ÿã o‰Æ²ãV´ŒŸÖgþ?3ðº°^Ûì(€,yø90y„4Y°ýÛyN&`¥ù×ð@&>Œ…ä>qÿ²hM ¤mÆNíÅÍÈúæ@-Î+çÐ׃ó<ûw"šð«î‡DŠÃsÂu�°jL¾ôþM—ñùuMn¡Ü…ÇhÔ%mv”Rç_ˆw4WôñÓ÷4Ù€wgÒFMÆÙ-Žï×R¹fˆz1ä*ÂÅ]¿ZiÒé©¡\ótÎ�¼f¬ ©«~å{4ïÞêyDíjèUwäßM;»¾ƒàü :ÀšqãùoÙ©ÐÕŽ/<þ~+Å'"Ê£r–,Å÷ïEo oû¹¾C©A@A@�×!:ÂÑS{ÌÂÝs�QÑX{¶Ì1шE®ò¿”._v[”½!:­Ð{Þ¼ ŽˆÑcRY H5€�ÍÑQºi¥Á�~ýöSQDõúˆŠu/¦†˜f "&jN¯I9ëô4‡èÀ€~`b¦Ç:Þe�Ú�j§H:5ØßiŠ¥1—ü¥®úà›èã>ÌXM‘ÅŸ/V5õ–ÖóÓ9¹ò$M.3YÕW[Ù_„‰é>£ê ¥iƒÔkßÞeoxÞ!?u*md]£àØ&ž£EcFËK)V€�çˆpøq¼ÖÔ@]þ˜šø~ QÍÏtu¸†t>Hë”ASâ_~Çy·¾½“¿u¢6=ý�fÈhQl½á¸fGH ˜¥uDWy—þ§¼[º®qŽ 0Zˆ0Á.ÿd©íž:ŠaÁ]·á²ƒñߊ�æ%´þ„©ŸÊd"\ÙçeYWc…«+þë!Óg‚ÿºS]½¤£°Þ$|n :ˆúBTKö|D³w›+œ®‰ŸÒFysŸß4d²’_ÝH‘tZ"DóxbˆèZ_· Îólò µ¯Óý@²Á�ýøkfðý.™Æ$úG;!¢`þ>GJ±‹gXÛ"“~oë´fôáþWy‰ÿ<qCÚ/¤°2åÝšÈûô ~îCÍ•àA �P(_WGÖx2Bþ³z Gèžtókãéœ!y@&ž=¡õVÑG³DÒ¼ÇßKØ·C8eY[]�OèË-c}9�K�§gxX¾–„#“óßVÍ9ÊcêPýÐzôèa.{t¢Ã#˜¤‘ ‚€ ‚€ ðF# DG8z¼uçÎ¥ú­(;¸jçÈ¡¢7ŠXâà~ )xKt@p»éÈ‘J·Ú�+W”èÀ@r êa=GX`^gC*©¡LFĈÕù’ßypˆŽíüå®ì4„�D�&ìÞãÇT… èv šd@Cöê°¹":‚sŸ¶I·êÕ©TnÞ"í¡ÙD„ÜK]•�£aBjH±hX·ÝhØNZWDGÌÄ1©óíÐ7¤Rý|sû5æÁ™iN�9+i,¥‰ *­Ct$Ι˜Z`U6"çB¤I†Ò¨Á ÞÂëdözëÿÎe2:µpœ½»´Z¦%" ùáh8Úÿ…WјoqLj*ýP®º¹8ýW F¯·z©h¥OÁD�³¢ÈÑQaD�ƒ~†Ô°Ó? Ë6L wWÅz-zZƒKt JhPÚAJ0½D�T¢g ¿%Oüh"�^wZd Êl³#:šmmFб bì¿&ÿUU•Zž ~QP•· ØF+:®PeDlÄHÃñù¾? ËLš/¤¯V¯Â�"ê½lâ,_J¼ùðÞ­ÿ®^ÍÒ£ýg.;ž+øî¶7íÌz‘^ȈzÃÁüா‡¨I‰5a*%L½S;ùáPßÈ¿ ^nÛ—ÕˆÖp”í³x�ưV¬9EZ¢ßOjǸ¹†£E²èQ†ìú*ƒÒéˆ œ^µ±&uôÇç´a\ïû ,ä_³s8®Ù%hØú "ò}¸2“‚‘#wgë}\ÕqQ2Å|Ü»"AвÁ:E¢=æíÕ}CrŸvTFù:üŒ¦;ÖT©_GŽ�üçi¢„騾K”9—£žžˆ‘åüÞ¦ägëlEòß7F¼ ]M&‡ *ލ·}µŽÒ¯Ç�B é×ðëÚ"Ð Ê@(‚XaØê;¢/¾ª‡ÿëžÎ’÷à> ÇÓ÷Õ°=Xý¯©ãª¿£ëœ#µü· Ù"•§q„4çöY7Fàa{ø-DGÈ0–Þ‚€ ‚€ ‚À!:ÂÑS7¢�fI¿òŽð&ßEŽvÓÆÝÑ[¢ãu›1ƒ¶=J‘ÙK5£];ÚÆÄ¯‹«©à¬oþñÇë¼ó}ï™3´‰ûoäèãD®ÃéžZrÚ'w¢i¤@¬ÀFr:˜l)Øåkm||èÐùó™=$ 9¥UL&‹\hîé}ÎçüÒƒ—-S3´âgAsOÍ&:¾æh�²Áˆñt»�Ñ#°É û:¡G䡪\ñÒÄ£ögØûÁv`úšûé\¤ÆÑ…G »ÕÝ�oˆŽì5²;t8Ôh®?úÄfÒ�5ì?vK{½%Gª)wæ Ña;¯Ý�c×#‘ÿ»}ö¶" p¿69aß¿wGtT_•Þi¬=eC³ ¥Ço�Mj ZD€»ñƒKt`mS+L¥ËN¨h¤™BîepºÁêgPÉŸKÒû]ý{¢m¢ã«³_QÜÔìÕ´ iÌ~ˆúƒ"PlÒǬÏjhé´ =ó*lÖhv"·$z;‰Ç ´ ñc�FÁhqD�É;ðÙ 3RÓ@·c;Šÿ>øê!`Ž9Œ™�üÐF@ )gÃn|�&5šq4ß8})©à‡µý�¨åÿtÙþ4ÂÕHyµëô% l] (Ãyîl¦Õ[×îºï^oÁ¹Ÿ»ó+ˆ>J¥¯ºŠ:p×õ×nY^·˜°>`ú(\)“žÅàOsäBumŸ«Û†ä>ÍsÇH —<�æ@û&ò{±^ëdxúá¯k}Í|‚´ºx†u’Ê�f¬œ ä[Þ·t$R+!Å’mvj+Ô#ú©Û*óÞ‡2µÎg÷5e¤ðÙûm “ér`Ÿ¶�=Òµ}T%°Ö¯y:gHÞhë4*®çFj¸‚ülm[0�ÿ6j¢kÖžçH£”öÕÐ-ÿËÃmâèåö¿ÿNþý·ßà=}KBtøA"A@A@A@ð!:<êe4óá�mß­[G—îñVB_‹ÆÞ�*¬��´UeXû"’³GÀ4t:†„è8Âz­ÆòK¶š… SšD‰<&:ìelf²£;“&°dñãÓt&MÜ™§Dþc Ñq*°ä<.RÖ»xó¦)*�h�¸#:<½Ïmœbá›iÓÔ¸A6~“û^6Ñ1³ÆL:2ïAs óUö9Ùí3ìÈfM˜K¢ƒµ9 Ñ;8ƒ£7X¯"v²ØÔñRGUwlÑ1š^ez�DGPQLEDåèÞ2[¨m!*7¤œšÃþ°ï¥úr©.EíËþÊž6q’¹bfÊ„ü(�Xœ”q”P9ÖxêÔ©@Z¼”€Ó¾Åç÷óu²+®ÐÈÜ#Õ’¡—R u�Ë_ИŽYpÛ-ÑÁúÐé€ ËÊÑÇ®“MR�Î7Z鯄&Ñak½áz£5ý•ç;(Âξ›èèr½ Åx›½çNÖ+Z/zñô…JO…4U0Cô@Ã÷”e­–U}‡n°îÒíÛ·ƒjîw?×ÒsdZH¬g N{4Fç᥹ZÕ€ÝòE˜w»R�abC³cʽÛÎN8Taˆœ€ÆÈ � pZÏà×»¿Í€TP¶™�ü®œÐ/Â$ ÌÖ¿@£Ú¾¯Û 9ìà¯¡ÛØŸŸ•áTW¼fˆeOÛæ¸2¸ј>ú|ÏC׺7ß6Ö÷ƒ�µLR„ÔÖ-âû¾ŽlD$ÔlîùˆX+Ö sµ^Däcœáз1 É}þÌ?ÖA@ks’H¯Âý'"ðšÈÿNݺå70þ¾­�93å;Æ!flBtøA#A@A@A@ð!:<êe5{ÁÿCGîb‘/çH œK+Õç´I =r&Nlª]CBt`À“&Ñvì¾ÅâØõ‹£q¬S *¢C5òýÀÊ?8�®² .œv«ºwWQ"vSö”è8véµÞ;̪»#:0„'÷ic™�©G4÷Ü£õ²‰Žåí–Óö!Û)R´Hô¿Çÿ €ÒÅ�ilAöʱ…%ÑQ¤c*ýKéó;Wü’ì‚îCÎOrRÍ5�/“¿õN­A¹>Í �©ð„è€85¢H@\Ø»ôÍ-FînžW]ÿøÖcú9ÁÏjЬ€v…³™è‰ðDt€4ƒvÞ¥ÜõsSõÉÕiH¦!t󯛊¨ª»°®ómøÓè€VK¬ ýµyþè9õŽÑ[ÕÙ)±VuYE[úoQ?Óº=ìFЗñÄBSŒÜ“ùÐÆ¤‚jÁNõ/õ­Pý¢,2¾•Èv"7gÒcÛj"£i`;ñáÀÿß"ˆPCjý�x§÷5&8@€Œ\j®pó�exÇ>¬ÿ4­o Ïô'æÁ|°©¼ŽwÞÓeho@ƒ6c;Q®‚ºl>¡W] ¤§rŽ hÏ?:VqÔC|~„›9õ”³�8(•–èÊEÿ�s»àœïÉ ß볘¤Éñ®ç½Ízð¯ñMWöÛÀx¶®¨ëûLàÔK�tÙôóæ>M”Múl,ò}8àœîj _6£¾œçi µÏý“(«æ>ÝMãWâ §óý1oa~ ¸’­Wk]˜† Zœ>ʺ.¼ßÑIHC´¢†3} &è4j+OÖÒqÍhϸ{>Ž–®KžÎ’÷À贤ͬµlœWRÿ}þù°…¿'¥™]á|Õûóû¬©6‡Ó›‚ÜØpæ 9þ²åôyñâQ3è¹ñ¿ä±c“·ZÞöóþ®¤§ ‚€ ‚€ „7„èoOÄZÏŽZø�£<éqŽÉÛÞM–L 7~þî»Õä„°ØÎùŠÜ¦S¥JÖU] ŒØsú4u˜¨·óÆg‘È[¾bãÁ!:0Kç)Shç_)qóLtDq±V´ó”èø�#^&mØ€.T9~JÅ"íÎ6mófµÞXœòkA—.4cË?¢¦M™21rcžÜ'4?"FP‚鉲'òßÀ÷ QH{CÈy~¶8zjH['{•_3›ðá:³þ E‹�:ÿÝ™"Gw¼çç·ž'Ÿ¢>êŽÂ*¢cý÷ëi}ÏõаøúÖׄQž¢7†fªžQ”QèÙÃg*eÒVEˆðe°‰Wš2«ºräF?ÞÚÌf¿›HÅR &zÄÝúìwi«î8Öîú¡Qp©S§¬I ×l½ìHO‘Vïn¯˜Mw[~‚(uF¢Ëç˜I£ë z ñëO™ Þ÷Q"þ:®»èß‘ Gq5nƒ~°!óý m›�üH‰³�ùyè}ØÖ¹®Þa�tX7fG14hGôõ s…è,¯µ^"DuÀæì!B "cß5'š«_KšÏÎé̹Í-X ­…SGôý.=pM¦5RjÁ!nl;ß+ÈW}ètØbá®Ú9×AÄý½ŽZDW ÊÂØÞmD�KèÈ•†_±Xôs…($÷Ùã3Æ� "«™Ì±5UÌ ¸÷¸ÖÚPïíóü€ù¿›Wu¤ "^<5[û¤d5Nñ5ÏÏéL~ôn£ëúLÔBãþ[¸>ßMåø}‡î‰;xÓóé-*ŽÔaˆ„BD”'V"¹Žr²µg<é‡6Á™ÓÛ÷àñCÖäˆCôâ…Ö5‘gÛþnTðå{ÌÒz&öuoÊÎÚs™8¥csþ›±1ë•%æM4®Ì[ÂÂÛ~®Ö u‚€ ‚€ ‚€ ðz" DÇköÜþ¾Ÿ&°§¶:ɹ�m¢â·òÿdÙþf§Úä�U9GªTTžS+š% Åãÿ`Ñ�¶[˜Té6}ºé¦Ž6ѱæÀê5w.%dgn-ÖòÈÁi�ÒpJ­çÏŸÓ>˜ôY»–Îs^zXõB…èËråTÙÕ‡'DǾ§Oiïîix³f®†¢uÒ÷sæ¨k˜7§ü Œèê>1ÐS¾§:<÷MÆ–'Mªûþû”%yrºÃ˜ƒð™Äx'b,ìuÙDG)N;öNÚ´ª¿«�tŒRc…ÔÆC—v]¢(1£PÝu)}ÉôJPyóÏ›iM·5~Ç¢ãƉ4,Û0å4†ã¼þòú?}|u¾ö»µ´©o�e+ئ •VÞoí® ØÍ�]ý°œurR‘NE(N öê°ÅLS(ß9GiGÀ޹*�©Dé?N�KÊn�¾Eþö'í»‡ $íŽ1íß´#È"�F0D½ÔœVS‘ÀDXXû§rÔQ}íÝ„FH±nÅaᎸR‹ñý0$�©ƒ9„È]™Mt€T(;¸,ú¢�"È E3«ö,zñä…Ç{`Ûò/9EÜÐ튌À‘æ ÄìùãçtråIÚ1|E�ÝeJ6{¬°*½8®•[Ê�µK=vÞó×âvâcõšìÌe‡2àé†ptÇOˆ~gG' ú Ukr:ßr»é�ÁižÌâc>/Ë¿;V°ÞGQÖûØlZ9޲hÝ„Š¼Ž¾SõHƒj8|¡‡€åª>¸“h—‘B � DàhÌŽÁNõv}ˆRòXgŽóý~Jth·¾×~S¦Ò2c\âû(•Öœqþ‘°ÂwNG­.Á�G> º&­{ª¢Ë�·k2Ä\Dä väÃz;ôÕz{·êgqóQìxLÞü© *Ó6$÷¹p?;ß×"ß?ñ9t` �Íý†�ü¢E×õøôæy"ER›Áj2Áòý]öä\r±¤š$Y†u–¨¨õJ ¨þc[­!“)§Æ﫱‰8Ørg¢ìþs:$ 8ðÞN¨ 6´ ʉ�÷¥v~=*´m0–'fˆèր̒Û±TÿàÌéí{ò$&lÜ*&ÜJê²ù´ÓÇ"Ô\óö¢c1ÿ-Y#{v½Qܵñ„蘷}; YÎ^ ¶Æ%J¨®Æ»÷ø1UéÛ— “”s?#uW`DGP÷iæ@”L÷™3é’%xn®™£3c¦�»#Ȩ.Uª¸»ìqý©Õ§hjÅ©ÊI‹Npö?¹ÿ„žÜy¢ôàˆ……¢ëXÑam¸ EeñÓŧûWïô4`±“ǦÏv|æGZ¨Jh?,û0ºsîN€«öŽ|\Dú¡%­—Ð?ÏØ Æ'uÜTq òä.{Z}­Í¡6ÿ9¢ÉÓ'•šD§ÖœR( šïÐíÓ·U´HD¶„ÑrahÖ¡tû {â�,Cé Ô`E§ZÇé�ihn½¹~®´7ÌE›èˆ+*=½ÿTÐܸw™=élˆ i¸ª!¥*’ÊtSÇÇ·ÓÄ�'Òå=ìfCt�Iwû,ãô~ªðnöZ9¨Ö¬Zªü²?Œø4R@!¬'N½÷+ïV/ÎÇõªŠ†~G4ª“ƒXÇ`‡®[ÍNÚvÕuŸØý�_3 #@ˆÄŒ­�ãñ8b‹Ó¯œرG}½¶ìXâ%¤ÄÁŽr8³»ð:uðݬÏ­v#õ±É�ˆÛ@ŽTä�èÏèZ8Xóõ¿õ92&"ÝwfsbèEwe r@xb k~™áh üqŸ0�ˆ�Áú¢óæöûwu=¢H|Ø�gb[Hî˜#*Înˆ"�9ˆ01Ú®ÒZyó<×/&jSYÏóÝHÖŠi©Ëž~Îfb¤g Gk_Oñ¿Çº©§@@àý³ $È<î/U}ov”޳¾ ÚBiÈŒýóÂ1Þ{›øùy’NgÚÚÇ®õ‰–0™ælc¯ß&çB2§·ï� òÓ9z)å�ZÎ&B�ï%¸çøï¦¼$At‹= bgÂÂùÜtw®w>7íä(‚€ ‚€ ÿ„èxƒžuÓ‘# Îø lpãÆ”‡wÕÍܺ•F®\©š·+_žªdï�“­æ¨�ÞµaÌ&®p–¹üA›8’ä2G—8R;U)P€êqä"H³>óçÓJ©„ÍéÐAE‰8·ï1kmà<Ï0‚ýÐÆÇG¥‘B[ˆ©Oñ�nñæ>1†1�(–,Qº#÷¹l[2NUT·hQ¥bêWð=ýÄ÷æ‰As¤CÅŠž4 ²Í¹Íçhö'³éÞ¥{~mA T�X•Ưê þ p˜q#¡ÝÉvªîЬCj 8¹;\ÐÉãKx·¥iÊ!ÜõfWÕÎþ€ ôÝ wƒ%ô�þ»ÇîVÚ"6ɇzFÎ5RuBUŠ™(ð÷ǬáÁµ´²ãJ:»ñ,Áál úб  ‹?_Lw\TŽ{ûZ‚ (kµ¬T¼{qŠ—=»ÿ1{ñôA+c綠*º·1JD*Ô¶áÚŽa;”x7ˆcH…�j“ªQžyTõð쬛räU[™ò5ϧêÆä爣ݗ¨ÜàrTèËB¦»¿#DÅAD웸O‘˜Ñ#H•²pJj¾­¹¿qí›èhº©i€ï ˆ‹ÚsjSòüÉín~eÌ�ˆ£-¿l¡§÷žúÕ£r(CÉ „h�Lå3ù»ö²NŒÀ8ÒÓtì§g5º vJ¤öìÐ_5�w°³c¹Ç(Çê|¸Ķ‘îÆá=G ïIJ¼ÜY‹ã°ùÇLÕÆªè÷�è ¤Ã&¬cÂ¥„*ú}`÷ýèÞZ8¤ Ùˆ Qz5‰®^âŸç_}3د‹_ÑÝ›h¡uS rÄR}èëx7ל�cúpš$ng,°”Eˆè×Ñ´ üˆh�f]mŒ3>]ÖÙ¨EÇMJ.¹ù+Ñ…ÇÇÑ•…ä>áðÇ=‚HÖ¶¥ËªqªÄÎzcÞ>Ïq? üF�2c{@ay3¾»#Ö6y�^«!7ЩԊ–!ê6Ô¡[b�1ò�Â̤U³¯áþZ3©WöMÚÙ×ÊgÖéÑì:we¤[CÚ5W"Äáú%L ò»jÖŽ¹—ñß#¤szóôjÃÚ$#ˆ’§áïüÿëÁY« ѳÌ?°UØ×8ÎçfÎõÎç¦�A@A@A࿃€ÿ�g¦wz�…ÓñïÆ½{*r‘IøŸ³ŽE˜.â%þ/Ïu™#;Nq´Kô¨Q)1ë¤ r%ÂK\ƒ'S!ÍÐÕCW)qÎÄç}¸6"×�‘(%É•„°Ó>¬ ‘ pÆ#)®â¦‰«¢;ÂzÞ×a|`sqA¬GâáÙάg�š'¨%Ú䊫5ÛDG÷GÝU´ô7n»¡¾/ ý<2~o‘ ï-"9â¤âÝËé¨ÔqõÇ�°ÛZî²ã½0Qü„/o±ˆt@Ä ©‡jûF7Œ_ËQ!êzçOD- ô8�ö(g~ÿ»ñ�Û¿Šsh¤œ>ªShõŸ¦£[Žïg½�‹Dù˜Ôq§ b¯5¤÷ùàžvì«8Œ1߈îo† o’…ô=¯XxKXxÛ/¼â ëA@A@�à# DGð1“‚€ áD!êY§Ë�%Ê\áð–dIŒÒ !"<6þ­uD^G`à¸/WGStêOÔ¤Óëx²fA lð–°ð¶_ØÞ�Œ.‚€ ‚€ /!:^&Ú2— ‚@¨"ððúC•¢m�ÏÚ>„óä°!%Žû¼X@IDATRcfBt†ÎË¿ÁñGˆê¶&JËi� k€”N&ÕVaôêM_þÚBkÆ?·pê­÷õh¿­á÷ô£ÐYÆÞ¼%,¼í÷æ 'w"‚€ ‚€ BtÈ; ‚€ ðÚ"ðC””&‡¹�„YR“�M‚Ôu¢Ã >޵9ÍÔ¡Ýz-ÑÞÒ‚çЈ0V¥¡Ö´0ç¯ãqÚ0Ö.i«W¾�õ2 ²-&þð–°ð¶ŸÿÙåLA@A@^g„èx�Ÿž¬]�ÿ8½£÷VéqSÅ¥4ÅÒPɾ%)v²ØA¢²{ÌnZÒj 'îgëÝ•€x��¤A˜!г§¥Zªµ*Ì$ÐÙ€zËîDÅ+šÚ×÷Ø‹£Uf±˜{ŠtD¿ÿõúÞ‡¬\K aáí=zôð¶«ôA@A@�×!:^ó(ËA@Þ c�HŽè1ˆÞNò¦Ü•܇ xŠ€ž"%íA@A@AÀ!:œ‘sA@A@�×qŒ¿�I)‚€ ‚€ ‚@˜# DG˜C,‚€ ‚€ „Bt„ª2¦ ‚€ ‚€ ¯Bt¼~ÏLV,‚€ ‚€ À¢#¸Ú ÞöÐA@A@A@Â'Bt„ÏçòÚ®êúÝ»tóÁŠ#½;6EŠñµ½— þìÅ :wíE�•Å�KQ"E ªË+¿þüÑsÚôÓ&ú÷ß)g�œ”8GâW¾&opeÿÚ5zW€îéK¦§lÕ²¨O£$zp—(r¢/{{¾²ýÛ‰VÏÓí?(OT ¸ç}C«å‰e'èü¶ó3qL*Ô¶Ph +ã�ððc¹ÿÙ¦woÅŠKÚ¿ϱ�ùðža�“¨'‹�‡G ËwÖ[ÂÂÛ~á_Y“ ‚€ ‚€ ‚‘oÐ[ÐaÒ$åxê–~øäÊž2%ý¾w/M߲ůyËR¥è½Ì™ýÎMaóÑ£4vÍuZ­`AªZ €¹¤ŽWîܡѫVÑÖcÇèñ³g~×@räL�šŠð˜µß{�"Dˆ@W¹mkbO»_;O åòæ¥f} é¤ hÑ.íìŽ% MlÓ&áZ÷‰ÉŸÿóM\¿žþ8q‚N_¹¢ÎQ�{{'mZªY¨ÍšUÊ6>LC—/7§�Û–+Gųg´MH/>¸ö€ú'©1­媛+¤C¾²þ‡ç¦Y5g˜¿p»ÂTvPÙõá©âýDD·®EŠL´ßñ• r‰Ó‡õþB7AÒ¢[�]B½ÁÒ6Kiçˆ�ôvæ·©í±¶¡>þã[�éÑíGù­È;YìPÿM0<¼oŽ¡}×.ÍOt`‡þ‡ó(Q‰Òe!ªXŸ¨ÖgDqâ‡|Öy¿ý¯YÀq²ç#š½;`}x¨ ËwÖ[ÂÂÛ~áOYƒ ‚€ ‚€ ‚@@„èˆÉk[Ó`Ø0:�½§AØ/ Pþ hʦM4ΗÀ@—¬)RÐ¨ÏØãdKvï¦_/Vµ ŠóG8:ž:LœHOž?wêåÿté7ßPÌhÑèü�Ô`èPÿ=8«ôî»Ô±R¥- Ng9ªÂXßzõ¨P¦LæTCã>1Ð-ŽTé1kí?{ÖßøöIŽT©hx3‡jéž=ÔÑ"»‰ÛrçÊ•©B>öT…¡½IDÇ�ówèÔêS~h­ì´’Ý|DBtøA&…°&:·XL»Çì¦DÙQ›CmÂä^÷AÃÒiüºcóªÖ�ˆ…vÕ‰®^r¿‚±+‰Š”rÝÓ+ˆè8¶ÏѺó§DÏžÕnAÔc”£><•Âò�õ–°ð¶_xÂUÖ"‚€ ‚€ ‚€ à@@ˆ¯}i17ïßW÷q�SH� €eH’„ŠY‘åÞy‡sª%gm ‚²1wDÇçO©ÙÈ‘tùçç`ËÅшAdÃ�‡騥K´�£-nñš ÑñðÉšýÇfh¿ãêüHD�Ä‹É98,CJ&gl»À¤I}'Ò¤rþüÔ¡bE»Yˆïƒ!ÕS“#èŒ/©’:aBÂ:3'KF÷=¢ýçÎѼíÛ)CÒ¤n‰ŽÂŒM6&“ÜY±lÙ(]â°M%õ&Î8N?˜n�¾%D‡30¡|.DG(êÅpaé4öb9ÿù. 'qʨωž>ÑPTiH„Ôr©3ýuˆhê¢Cüëx ïCˆ÷vèÂuýo¢âÉô˜?Œ#ªáàÙCw¢Ž–﬷„…·ýB…tA@A@A@#„è#`_õ°§8­RS&!`9¢“‹hWDHŠA�«~æÃѱíøqúfÚ4Õ¬ §³úªBÓÅïˆH�õ‡QÉ\¹ÕëøaÎZ{ð ê7£}{J/žßî 3·n¥‘+y‹,[¢8qäNB>ÎîÐ�"X�BzŸj¯í{^#,sòäôKýú‡uHlƒ>ÉžÓ§©tž<~ÕvDÇ×U«RY&™^¥ Ññ*ÑwÌ-©«X8—$¢Ã‘€çaé48›Ô†ÀÞ­D > ⬆í-"� ëùïñœÓÓÍåŒ�Ÿ´ô_gë9زMe=Ò|ŽòÈœ;4F ý1Âò�õ–°ð¶_è£## ‚€ ‚€ ‚€ „Bt„Š/y èD,e�ˆ)û÷ÓhŽ^H=z€—è€Æ¢`H½„LÆ)ò«oêªú|@Í?þX]š¼q#ù¬]«Ê#š7Wº¦Op�ÞíÆ�§}œF Ñ)5 ¦+V¨iGþ9ea2˜MtxsŸ@¥)Gsœ¾zU 9’Ó{™aæÅñUýþ�Ýx–®¾F‰r$¢ô§§Ä¹»Ôè¸uê�\u’ÞŠ÷ÅI‡öNØKÿ¼ø‡rÔÊA™Êg¢ÃsÓÑ…G)R”H”ëÓ\ÁoWv`Úzrï %Ë›ŒRLAë8½î4E‰…’çONy›æ¥¨±¢úëþï‹éÈü#tùÏËtãø Š?:%É“„2•ËDñÓ{–ÔÞ›ˆŽ‹;/Ò¹Íçèʾ+ôôÁSJš')¥-‘–R¿ŸÚßúBûäu :î]¾GGç¥ Û/пÿüKi>HCY«f¥õ߯w©ÑqhÖ!ztë¥*’ŠN,=Aw\¤dù’Ñ»-Þ¥O^Ðî±» òÀ¸H§"~ïÀóÇÏiïĽ~ï›´�ÎoÕbçþð¡_= qSÇUï„©<0�ß·»O(n*®ç÷Ô¥ñx�Ïõ>#îvýèu:³á Eˆ�ò5ËG§Öœ¢ÓkN«ú$¹“¨÷ ÝGé\i*1÷ñ¥Çéォ~XGÒw’ªïM´¸ÑL³P?Çi|é,Ñæß‰¢òr2å$Z0‘èö ¢2µˆJV#‚£|ý-› ‰œü/)‘öl&Úµ‘èïóD7®è¨D+TmL”Ôñ«Â_ÇëˆÎ'J�ˆçá”N;7m[Etü€îS¹Qî@´ì= Úο^6.#zÈ�Šïqʧ9{!´m ��ïru �äoZurç¦^óîMDNó|)9â° Qùº®ÛÛ#¼xÎ:51có<Ÿ8Î팪¹ˆNÓµý¦UøÔntÉ Æøâ¾ðk8]V‡×š*CÐý‡þ�hëõ¼ƒ1¾Ë¸D º�·s>yD„èRp%OKt”¿º¬!á7QþâD•ê`÷ô�ýióf¥}Õ”u¹RÄfð=0o oûy°$i"‚€ ‚€ ‚€ ð ¢ã€îí”§oߦq¬ù0þÏ?é²oŠª³ý�šýÎ\¢ã“"ETê¥g/^¨ôS?}êðÖ¸#: @nÄÌÛs4‡³H¹óš;.Ñq—ScUíߟþa¯t-j1ÑјÉXÃâÅ©é‡úMgÞÜç9Ö=iÈú'°´œZjBëÖ~cUxDÇ?Ïÿ¡e_,£]£wX^ÑÎEiKÿ-ªÞ#ß?e?Ík0OÕCÎgœÀy›äUŽbUÁ£D¤¦›RÊÂì=t²_SüJ÷.Ý£"‹Pœ”qè÷¯ØÃêd9jç Z3ÙËêkh?§îEʘ:s!Rit%E®˜:wÇàp¼¯ì²’v ÝáGðÙãn_˜J÷+­îÕ®­rx':@M¯<�îÿÍfËdL@Ir%Q¤”³ù�ŒCèæÉ›!“¦L\Kõ^*E~]=xÕTQ抙éÓÅúg ž?ÞO [ÃU ýšBŒ¢ôÑâD£N—;Q”Qü®™Â™õgh‡ÔiÅ‘)Ëüª¼säNZÚz©*¿ÿõû´ùgöæ;¾/¥ú²G×…3ýü¶ó4¯Þ<•.Í©ÅOŸjάI) ¤p¾*çž:�1ÙäÁD?·×Ó"âàÉc]QP‰É†…õ9>!œ½ño‡`ö…SDÕ8@ Dƒ+Cû^>Ú±í|½þûDò�šB±Ã>=Ñœqþ[€ ÄAr AœíÄA¢f%5©b_ËÁ�.o¢)Cˆbñ¯½?n$.6ð#ýмÀ)ïlè;Љôug bªYQY9o[/ŸIÔ‰ÉX‰J¼I`‘.{úùø!QûšD›–ì�÷/@oi°³ÏËrJ,æøóe\¾Âº†dN�õxîumA`9Û�ã5 f×{úÎÖš=›æ>L‘ø)Ïz[ŸqD*Ž8wgÞÞös·©A@A@A@xµÑñjñrö§L<,ä]µo½EǾø‚;éY`ÐàmÊ”¡s¬y±˜55`>­Z)m”ݢpé·p!šPʷߦïkÕRª"˜Á%:VìÛG?ÍŸ¯fù¡vm¥ARkÀ•¾ š$X¿1›èðæ>wþõuž2E Wë½÷cxj6Ñ!wèp¸²HìuLÏë [û¿µ´±÷F5v°g«žMíz?0õ=¼Áž5_sGtÀI›¦xÚ?u?ý󌷳ÅN[í˜ß7yŸÚ�ïNðÛ) ¥¤K»/)1Êp�ß¿|_í Ï\!3ÕžS[¯‚_èQùF©ñ¨H÷a:JýAjzxí¡š;æa�Ö4¢ vׇè˜Vi_r\��ƒ,•³PÄÈÕî|D"Ààü.ù{[ÙîܹC-Z´PeO?*qº¸zõê¹lþAb¢›×ˆ"³_~ßS—M\VNAÔÛWŸ»Ý�DŸë²Yˆ*ßzLÓTï H‹ÜõrÓÛ™Þ&ˆz0æ–è`‡dκ9U”ÌÕCrïá�³wÔ{­Ëµ.=Atzzÿ)­ï¹Þ «"€ÐÑEˆ´°-aÖ„”¯¹£ÑBSÊéïfµIÕ(Oƒ>>´ŠÉaO Ñgã9jí-þ9ïlÁy¾m䨅Ÿ¿ÿ¬fÒaÁLj rò¿™ìT‡õ™ÀÎuî3Žü8TU´4QšLš A¤" IòdõYŽÜàwÚ" 1™`ø¨A¤ÏÊQëˆîÔ-]‘ÙÉ�È�±¸_Eþ]—�ñc¾wÛÌ@T°Ñx˶%S‰¾mL„¨ ¬ "­šËßaŽò€5üЍë]võ âc«ÞT“9æÜ>6*®q@Ý´mDyü¿&vÓå»·ˆZó½ýÉä Ï.{yDÐÀpÿK�%N®Ï]}y[ß[C&³ºtÕÂQÒ9§ #ú±­/Ç»Zw$I -•߃C»ˆÎž šþGÀhOßÙ¶Ë—Ó°;‹æ";áÑŒ75¤q±±Ã[ÂÂÛ~þ''‚€ ‚€ ‚€ á!:ÂÍ£ð¿�ãL:Œåè�‰{÷Ò5Ž^0‘=F%Ó§§&¬õP5kVz+rdsÉßÑ¢£(�WÈ%ñQΜô]ÍšjLwDÇp¤¢+Œed1î‚3RÞ´i)¯|O,¸DG�Y³hïú‹ºv¥Xì ì·h-cÌ`39Ò%‰¯Î‡3ÑÜû\ÄäÏ€%KÔ¸-J•¢ºE‹ª²'6ÑTûݺQ´(ìù�=½÷”¤@�o?Viƒš¬oBQcGU#Ây çì“;ì�dsGt´?Ýžâ¥�§¢Bv ×§6‡ÛP¢l‰hõ7«ÕÎw�Íÿh®Æ±? Ñ�:& 4�¾ÈØ�ówèâö‹”½fvU…tU3«ó¶h¶­ P…á¬óÂNQÒX�/6^9‘Jªé&ö8bž'–Ÿ ©åÙ#Êöîçïª9ArÀ‰€è’C³ØmµQ$ÍÅ‹)eÊ€,ª“›�¯¾úŠ0ùæÊ°«þŸ:½ vn{jècvä#Q$×_O‡sÙnC¯ ´î;íA®>¥º":TÉ}¾ˆöŒÓß1wDÇ;�øgÓ„ªôðúCê—¨Ÿêj¢xž=|F}âôQ8×_^Ÿ2–Í` ÁÑè@J­AéÑ�swIÖhm#ã={ðŒú'í¯Þ¡< óPµ‰Õü®ÛDGÌD1©Ù¶f” CuýÑÍGôÛû¿Ñµ#×TdRûSíÑ=ŒÃ¸÷Æ©”^ cšlhBHue i¬Fç­îÑPU~«¢.}Æ)ïÆ�s k0�ÜA°ÅaÝ!g Î{€èD)þ˜É–ÕšÈÏt�ˆp˜¼YGEf2DBÏÑDµ>×3""©ªŠ³CѶ�û™hà7ºfÿx,Î_]c§�²N…/§ 2oè¢båÍU1�5!ÝÒîŽz$å3�?©�üã×:Ri!•Õ‡ü4d‡3a�4Y•xNŒ‘–ǘ¸�(aR=6îµTZNWö·wç=ǜΥŸÚéˆSß��ûu}ÉES‡#p)æ;~¶¼±¢¿v“@Ë_7Ðä uù•ÉÜŽævNç_ˆwt\³KÀÉ|…·-gêaqY¬»ïÂD©¨nÝ’\ƒ!FŽôZ•ûö¥GOŸRNÖÆš"0ˆž÷ä´°/Ë•£ê…x{,›3ÑÜû»f MÝÄ[˜Ù¾aAñ2ÁÙDô æ7š¯ÖZkV-¥ N|?�ÒÊ�®ˆŽ(1£P·ûÝTëÃvв¶ËT¤ÃwO¿SÄŸãÿ¤…MRÂ, é‹£_ØC«²Mt4\ÝPé‚hdU˜È ¤Ëêx±£Úáo]¦%­–ЮQ»TUÛãmUd�}Ý.{Jtøñ!¤‚öÇG¾P„†=Õ£òŽRU¥ú•"¤/ºËBó�;w¶›Y.]º4Õ¨Q#Èvá­�ÁÑ@ zlC*«©Ò£¹#:J÷/­48Я_Â~*Šè£^Q±îÅÔPÓ TÄDÍé5)g�œöðª¢6üÀÄL�u¬Õ�Ú�j§H:3¨ý}!‘¦Xs‰l¢ãƒo> �û0`4E¾XÕÔ[ZÏOääÊ“4¹ÌdU_yle&¦ûŒª3”¦ R¯}{—Ãn˜¼›:u*md]£àØ&ž£EcFËK)V ¶&7L:!Ôå�©�Òß�!ªù™.£׆-dB¡rÐÞ¼Jô�/¿ãìd_:��÷õô­{°XvOÿã2š[o8®­œ£ÓN¡fÀ,­#â¸JÔùS¢eÓuÍÏü a¬ßÒc!ÂQÉR›+úØ­‰#’eÃe â¿“ %ü§cšº…è�"έˆìµ~Ê? » ØÆ]ÍÅ3¬û‘I?—:­‰þ7ÜËKüëÄ ¬v �ÂJŸùÿ\6ƒ1©«ë–×7þ[8ÎBcÎLè@“Ö¾ÑgßèrX}B�lë‘�ôXzü8=“âkI8’µ1ÿ.nÎQS‡jð{ôà—-&DG0À’¦‚€ ‚€ ‚€ ¼ÑŽRݹsiÆÁƒ~+ŠÃ®Ú9r¨è�"–8¸_ƒ@ ÞÜn:r¤Ò-€öEçÊ•%:°�ˆzXϘ×Ù�Jj(“1¢Fu¾äw¢c;;>º²Óš°{�S&@ Û�h’ ªzWDGpîÓÖ"éV½:•ÊÍ[¤=4›è€�{`©«2p4LH )€  ëö [ÍÛIëŠèˆ™8&u¾¢ú†Ô@ªŸonk�ÖÁ™iN�9+i,¥‰ &²> Ñ‘8gbj}€=xA؈œ#‘&Jg +x‹³“Ùë­ÿ;G”ÉèÔÂqjôîÒj™–ˆ(@ä „£áhÿê¿Æ|‹;FìPé‡rÕÍ¥"_Ìå7ý£×[½T4‚Ò§`¢ÇÙ QäŽè¨0¢‚ŠÎA?CjØéŸ†e¦„»+Žb½Œù�‡§àˆ”v�L/Ñ£•èYÂỏM¤ÓëN+‚ D™m6ÑÑlk3‚–ˆmcÿ59oµg+?´<ü¢ *o°�Vt\¡ÊˆØˆ‘0†ãò}@–™4_H_¬^…!EÔ'zÙÄY¾”¸õaŽ<¨õ®^ÍÒ£ý�…EÃ�±øuV]gÚ™õBpÛˆzÃÿா‚4HF˜zÂ:&TJ˜Dý;iý†H‘Xóƒ%Äsºý/«­á(¤ÍšÅk4†µbÍ)ÒýÎÑ Î�vÉ¢CD²ëžW/•NGáôª�9½Òx3¢ãh§]ZÈ¿f3æp\³KH)gë{ 5“+�ï¾�1i îù¿DuZÙ£^Fú'¬÷·œŸKJ^»³M¨EãK×äïÑlç«úܬ!v<z¿©#s\·Ô)§B2'°E$Þ¤­š±#àóq7whÔ#²uGx@£lŸõwF¼‡ïBt„Ò2† ‚€ ‚€ ¯/Bt„£ggD8Í’~åáM8""¾‹í¦�»£·DÆë6cm9z”"³—jF»v´�‰…_/VSÁYßücÿ;Ÿí5\ç�ï{Ïœ¡MÜ#G§'rN÷Ô’Ó>¹³àH#b6’ÓÁdKÁž(_kããC‡ÎŸ§ÈìAZÈ)­b2YäŠè@sOïs>ç ¼l™š¡?š{j6Ññ5Gƒ” F4ˆ§sØíŒ�MNØ×!="{åØ\ñÒÄ£ögګ릠¹ŸÎõGj]x”°[ÝÝø†èÈ^#»C‡C�æú£Ol&X£ÁNñc·´× Qr¤šrgž¶óÚÝ8v=" ð_±Ûgo+Ò÷k“öýpwDGÕñUé�Æï¨.C³ ¥Ço�Mj ZD€»ñƒKt`¢©¦Ò‰e'T4ÒL!‚÷28Ý`õ3¨äÏ%éý®ïÛ·á/¢ã«³_QÜÔqý]G³¢þ ›ô1ëó×8�¤Ó‚öÌ«0¤ú¾%ÑÛy‘qØ|&º7ÕäÖëºÎhqD�I´ƒ‰ 8à‘jºãúý}^·s÷‰±1‡±&ñ8L~@w)¤œ Ñ Mj4ãh>ŽÂ€!%ÒgÁÚþÀi‘þ§ËögoŽœ€¨5Ò"íÄ:™H�Ùº®ô!Ðf(�7ª7J‰xŸ÷ëø “1³ô¸GÜ«§RæâÖ*K4zyÀ^ ò¾¥#mš2ïܱ_À6¨ið�Öóx¯$?§U®Û˜Ú�ÎidÐ�&È˶yÂMíÚþ÷ßéÏ¿}_h®ëé»!:|��ƒ ‚€ ‚€ ÿQ„èGÞ‡w*~·n]ºwÏoUјl¨ÂÚH[U†µ/"qzO,$DÇÖ#h5v¬š¦fá”&Q"�‰{m›™ìèΤ ,Yüø4�Iwæ)ÑGDÇA¨À’ó¸HYcìâMÞÖêkÐ�Öˆ;¢ÃÓûÜÆ)3¾™6M�acæ6Ç—Mt̬1“ŽÌ;BÐè|UGf˜µàxû ;²YÓæ’è`mhtÀÎàè Ö«ˆ�,6u¼ÔQÕ[tŒ¦W™$ÑTTSÑQ9z€#* µ-D冔Ssضã½T_N#Õ¥¨}Ù_Ù¢Ã&N2WÌL™�?&‹“2Ž*ÇO�:HË€—pÚ·øü~¾NvåÀ™{¤Z2ôR ´.`ù ³¸7 n»%:XŸ:°aY9zãØu²IªÑùF+ý•Ð$:l­#\o´F ¿Òá|EØÙ7cGtt¹Þ…b¼ÍÞs'ë­½xúB¥§Bš*˜!z á‚{ʲV˪¾C7XwéöíÛA5÷»ŽŸké92-$Ö“ÓÍÃ)¦ø«5JsµJL;û‹0ïM&êí¼ñYô󖝨xpˆŒÕyÊÚù×_JÜ|Q\¬í<%:~㈗I6  UΟŸR±H»³MÛ¼Y­7§üZÐ¥ ÍØ²Å�¨iS¦ AŒÜ˜'÷ AÔOV„ úMhÓ†Òr”‹'ö²‰Ž­¿n¥•�xË3RP!•mû§ì§y Ø+ƈŽq…ÇÑ…í(iž¤ÔroK{©ª¼o2‹«7œ¯ÊM77¥ÔEShc*†çN×_sëØ6í¤@w/Þ¥¬U³R�ùuLu Çÿ ÑL:1¤ŸB*g’‘ „“7Ã,¢cIK ½Ë¥®†óZìóÕ_¯¦Í}7+]šÚ³k«tV¸^wQ]ÊR)‹ÝT•툎: êPÖ*Yýµ¹²Ÿ£[ò°Ç™­ŠOÊÛ4¯*ï·‡}ÆL[«}­(Iî$ªÔÇË&:à܇9vóf duMPä(€Gˆ~�ÉéÉjëU=ˆÞ¿±ó¼‰‡Ø6„½!Ž(Û6ÿNÔ‚£D`H1…TSÆl‘n£b®áø[ž»‹N�µóžcl¤¤Bj*˜“!…9b¶)Cˆ bCº+¤½2f¢+Ü9áWÌfRÛ÷^íû6ýÍ‘.—Κ3Ö€êL” ±ãÜ.}ÛÈ¡Q˜æ‡Ýeè�4,¦kÝi{TÉIô×!­#²à€kí�ÅSˆ¾n ÇYu†£Ó貫ÏИóSþµ¹ï÷é¶\ÍëMÝŽ(¾s'Íe’ãÁ³g~CDá|jˆnýŒµÃJr¤SDÞ"FP‚鉲'²/û•%€´G0D€œçg‹£§†´Uqâ°Wù5³ N 3ëÏP´8Ѩóß�)rtÇ{~~ëyò)ê£î(¬":Ö¿žÖ÷\¯‹¯o}MHå‰!zchæ¡êE‰…ž=|¦RF!mU„H§¨Ë&:\iʬêÊ‘ý¶¨æö»‰T\ Õ áa¢G̘ÎGûBÚª;N„µs{ûQp©S»'öì¶®ÊÇÙA^-·¾bR �>JT1›®[~‚(uF¢Ëç˜ñu’Ïã›Y8JÀ8µñ×qGAX>e¥¥�Hôƒ ™Oô±Å‡ ú–SbýD#§vb~z¶u®K´l†N‡Aqc–µ®¨Ï´c'þ s…è,¯µ^"DuÀæì!ʦy'uþ]s¢¹úµ¤ùûˆ2ûÞ7.Þf¢Ñ§Žèû]z,àšÔ ü�”ZH­elûm¢XqÍ™ÿ#Re!e¬.G; :ÃÙ@6]bâ$UÇ•+8&•>G¢1l›>‚ Ög"“l uÙùÓf_vœ(M&çŽó�Îi§ÉúœŸo»c‡vÉY«,§lÎc4f}«Ä¼é•yKXxÛÏÕ¤NA@A@AàÕ# DÇ«ÁZÁß÷ïÓvâ�ãÔV'9WµMt@@üöÇj¼¿Ù©6yãFUΑ*•çÆŠfÉBñØaXJ'´Ý¤J·éÓM7u´‰Ž5P¯¹s)!;sk±–GN딆Sj=þœö±`¨ÏÚµtžóÒê*D_–óݬjüxBt\á{úd�ö~ឆ7³¶ôZí;x�¾Ÿ3GÕ`Þœò+0¢#¨ûÄ@OùžêðÜ7Xž4i¨îûïS–äÉécÂgã�ˆ±°×e¥8íØ;iÓªþ®>Ò1vH�RS` ]Úu‰¢ÄŒBuÔ¥ô%Ó+AåÍ?o¦5ÝÖø ˆŽ'nаlÔÓŽóúËëSüôñÕùÚïÖÒ¦>¼ý™­`›‚T~çÈ Ä°›»úa9ëä¤"�ŠPœqÔyÌÄ1±�“;çï(í8Â1W¥1•(ýÇéU;|Ü:}‹þüíOÚ3vAHÚâ×á +€,iCÔKÍi5Ù\@”�P€…ѱ*GÕ×Þ_h„ëVLÊ IcÚA€Bä®Ì&:@*”\– }QHdТ™U{½xòB ‰ã=°mù—œ"nèv•¾ kDš/C°ç�ŸÓÉ•'iÇð=~t—)Ùì±Âªlºã&ÐQ˜g)?Ö.õØyÏ_‹?؉cÍNkÅ÷¨¼|ˆtGŠÌâן8„¶{1�Pµ±& £ñ-—m`lõYÖ`²ø˜ÏËò÷Q”£7›VŽc…,DgØ1_‘×ÑwŠ£i° Kñô QœøœÞêk¢r¼Žƒ;‰pùüIÝ6JT"¿G„£1;¤|vÄ÷!JÉcaž.ŸÚ­ïµßÔ€©´Ì $J¥5gÜŸ$¬ð�ÓQë(A ¤¢c¨Øº'Q£¯´Èù�+Œù*ÖEéÅ©½*uàè®´XR¢›W5ôÓ$¢Lð@€Bñ?¶Õ)™r2yó§~ŽÞŽˆ<°âÜ¿þ—š<Â9žoÌØ(i éœ'se=–;ý3WH� :óß5²gWÑÅÓ¦ ò«ï-aám¿�Þ£ôA@A@A@„è\Ã|Tö•Ðm‘ŸíHék0l�¿~]•ûø¥AÊŸ!C�Dæhʧ¯²GÆ×\æš»cJN/5®eK¥÷á®�'DǼíÛiÈòåjˆÆ%Jþ¹²{�S•¾} ‘0I9—7RwFtuŸfDÉtŸ9“.Y‚çæš9:06ÑaÚ¸;‚ŒêR¥Š»ËןZ}ЦVœªœ´ègÿ“ûOèÉ�'JOŽXXx :°ŽVж�ÛPT?]|ºõ>AO;ylúlÇg~¤…ªtñ�öò£;çî¸jïÈÇE¤ZÒz ýóLGGÁI7U\E‚<¹ËžV_ks¨ÍŽè@2üI¥&Ñ©5§ ˆ¦Á;tûôm-R‘-aEt€\šu(Ý>Þx'ËP:5XÑÀ©Öqz`Úš[o®_…+í sÑ&:¢ÆŠJOï?UÄ47î]fO:"C®jH©Š¤2ÝÔññíÇ4ñã‰ty{çÙdÒÄÝ>Ë8ýƒŸ*D9jå Z³j©òËþø¹=ÑäÁ:RAÁúwâÔ{¿rJ«â|\¯ªhèwÚ!Ÿ³Ñ̺nõ|& 8Õ•1¤„¯� DàDGtE<Ž€Øâô+çNõtóG`´eR„ÓMÙö�‰¤Î‚ã½ ¯£Qûªc}þkuz+h„Üç¯6"9ÑaÈ‘ŠY‰.žÑµ p°æëësHwÂÆ�ÂÇ\‡:œú�Ùø_ˆ~éìh�yrÏzu]Ee@ BñÆ@ì79×;Ÿ›vrA@A@A@x=¢ãõ|n.WÝtäH‚3>(ܸ1åá]’3·n¥‘+WªæíÊ—§jÙ»âd«9j£7Gm³ †+œ†eîÐ&Ž$¹ÌÑ%ΆÔNU  zù€’À¬Ïüù´’EGas:tPQ"Îí{ÌšE8o7 ‚à�E?´ññQi¤ÐbêS|£[¼¹OŒa $Ê€%K”îÈ}.Û–ŒSÕ-ZTi‡˜ú|O?ñ½ybÐéP±¢'Mƒlsnó9šýÉlºwéž_[U'V¥ñÅÆ«:ˆCfĈphw²�ª;4ë�Nî´GòøÞí_išrw½ÙUµ³? }÷ÂÝ` }£ÿî±»•¶ˆM2À¡ž±\Fª:¡*ÅLøûcÖðàÚZÙq%�Ýx–àp6ýè€Ø †ÅŸ/¦‹;.*ǽ}-A†”µZV*Þ½8E‹ËžÝÿ˜½xú‚ •±wÒ^]ƒÛ�%"j[ˆpmǰJ¼D‚1¤�B„NµIÕ(Oƒ<ªzxvÖM9r�*�­LùšçSucòsÄÑîKTnp9*ôe!ÓÝߢâ "öMܧHÌ Šè‰�¤ŒJY8%5ßæ»åÝßèúÄ&:šnjàûâ¢öœÚ”<r½Yï‚ç@ÄÑ–_¶ÐÓ{Oýµ9”¡dB´G¦ò™ü]{Y'F`:ûéY¡«}�†_9¢ Ú³CÕ<¢Úìxï1ʱ:î3â{¢ÇuyWÏÑDÃ{jñò"¥8M•þ¢�àÑû‘ÌTm¬Š~ˆÎ€@:lÂ:&\J¨¢ß²2ŽîÍ„ ¯¤ ýˆ AtÇW5‰®^Ò‘ ß öëâW@ôF÷&ZhÝT‚11ö+›Z×G;Z@¼ý‚²µ uª)�Û†Ô]HMÕ¡/R€Ù†ûœÔeçODŠ\:«õ8@4äÌÏ‚êž8çñ9æ…R޵9ÍÔ¡Ýz-ÑÞÒ‚çÐü0V¥!„½Åg¼%,¼íç<¿œ ‚€ ‚€ ‚€ „„èÏAV!‚€ ལ÷VéqSÅ¥4ÅÒPɾ%)v²ØAŽ´{ÌnZÒj AX§ûƒîq±W‡@ÏD—²Ö…%ê �  ·ìNT¼â«[›Ì¾0„…·«ìÑ£‡·]¥Ÿ ‚€ ‚€ ‚@8B@ˆŽpô0d)‚€ ‚Àˆe#’#z ¢·“ü—‘�{÷!:cOŒ“-Ù½›~Y¼XÕ6(VÌápèüyê0q"=yþÜ©—ÿÓ¥ß|C1£E£ó7nPƒ¡Cý_ôà¬Ò»ïRÇJ•´l4|8�å¨ c}ëÕ£B™2™Su �ûÄ@·8R¥Ç¬Y´ÿìYãÛ'9R¥¢áͨ¥{öPÿE‹ì&nË�+W¦ ùØS†ö&wÎß¡S«Où¡µ²ÓJztó ÑáI˜šèXÜb1í³›eODmµ “{xÝ K§ñëŽÍ«Z?"ÚU'ºzÉý Æ®$*RÊýuO¯ ¢ãØ>GëΟ={JT»Q�QŽúðT ËwÖ[ÂÂÛ~á WY‹ ‚€ ‚€ ‚€!:X¼ö¥ÅLHܼ_ÝÇ5N!‚–!I*fE ”{çJÌ©–œ ´5$ÊÆÜŸ>¥f#GÒå[œŸƒ-Go "‘ w>¤c—.ÑB޶¸Åkú?{×EÕEÒ{‘Þ{/¢4AP�. H/‚‚RUPP±�¢t�Þ{—^¤H/R¤÷Þ;èÏ›Lv²ÙM6›Âï½ß—™7o^›3³»ùî™{�MtܾwÓþøÃ:p¿l×®@’†Q#IâK‡1¥¨�3N;)¤I7Ò¤j‘"èP¹²³Y¸¯“ƒ1ÕSÓÁƒq4€Tɘ<9¸ÎœiÒàÆ�;Øyü8fn܈l©S{%:J6y„Lòf¥óäA–”‘›Jêÿ‰èpDZ_Ö~¸räŠîÀDð± ¨ÃE¦ÓØ�åüç»Ì+)£Z÷ïYPTk0µ\ÆìÀß{€ ý�=òs¼NÞCHòlÄÂuñ,P&�5æ—#€·\<{ÄNÎÑ"ó™õ—°ð·_8¡Ð" (Š€" (Š€" (‘„€‘ì“ö°¤Uj&$­²DCtò á‰è Iñs“&¦Ÿ½ñFtl8pŸLœhšU“tV½ù¦Ý%pÏH�U{ö \�!êu|9}:VìÞmúMnß©“$ Ã[aÊúõ²D^‘K‘(Hî$—ý´ÍÑ)¼×É¡VÊÚ¾�5Òr¦M‹4@"Ñ!qõI¶9‚ … V;#:>®^oÉô$M‰Ž'‰¾knM]彤îˆ?ŽL§qðÙ´&$¶¯¾ HVCÄŽ�l¨\?h�‡’žn†dl|û½ õq´J‚-ÛTµFš%Q9 FĨ?Fd>³þþö‹xttDE@PE@PE@P�ˆ@@‰Žˆ@ñ1�A�ˆ¢1~çN “è…dqã[AX‰jL0j�ÆÔKLÁd#E~ H]Õàå—Ñâµ×Ì©qkÖ`䊦<¸E £ûa÷ ëÞ¢£Ý¨QØ!i¤�R«D ^¼ØL;¬eKä2Â6'ÑáÏu•fÍqäüy3äIïRd†=/÷O’èøû·¿qlÍ1\Ø{)ò¥@Öײ"e�”5:®¾‚CK!N’8H”.¶�ÞŽýƒ|µó!G¥Ø;}/öÍÙ‡è1££À;@ÁoO¶kâ.Ü»qi §AºbéÀq¹Ž#+� fܘH[$- 7+ŒX béþï£ñ׬¿pfÛ\:p q“ÆEªB©�£b$Íê[R{":Nm>…ãk�ãÜŽs¸ë>RJ�Ìe3#ãKƒ¬/¢ž¢ãÆ™Ø7kNn<‰ÿù™^΄ÜÕscÕ«°àÎn?kúq©ŸKm>7±Ƕ›Eø>,NãÓÇ€µ¿±d99ò³ÇW/¯×ÊÕè(_5ß’M¢†Dþ¢A—Ë”H[×®Ξ.�³¢­P½ �ÚõS¤ã¦•ÀÑ@²2�¤tÚ¼ذ8°ËêSµ!P0-û;·€�òó²f!p[_””O¯HöBjÛPƒßëR)È´æàÚekÍ[~N‘ùÒKÄa1 R=Ïí�#†Š^Oœx‚ñuÁ%zè}ü�óÞ€Ñ+4¦àJ›Ø'Ý?–$|'Š”ª4.Àîë3ûíÚµFûª™èr¥K(àû`þþöóaIÚDPE@PE@PEà  DÇÝß)�\½Š¢ù0jÛ6œ HQuL¢2Š£ßÝÂJt¼]²¤I½ôàÑ#“~êÛw\ÞoDÈm1óöÍá.R�ŽÃJt\—ÔXÕûôÁ?⢮Em!:šAkT¦ š½òJàtN¢ÃŸë<.º'�Dÿ„–YRK�nÝ:pìÐ O‚èøçá?XøÁBü9ìÏ`Ë+Õ¹ÖõYgê�bä;ÇïÄ̆3M=E é|¦Ñ \¸iaã(6²y&æ3h¶¦Ò—ï¡›ý˜îGÜ8}%;–D¢ô‰ðÛGâau³|uò¡(9˜"@IDATöñ²ÛO¯7Ý�2v�½'!ReXC®ØuÞöa!:èx_Òe 6 ØHð9Ç-Ѿ*ô®`®ÕYQå¨Nt�šTunž³Ã’eO†TRRÊ]Œ¼öþ¸|è2¢EÒTˆ+Û2¼˜Á�_çwŸ·«�³rN¼3ÏúŽáýçsã‹‘`k´´Q`SŠÑS”>v¢Øèt¦bÆ‹xÎ.]u£_m+©Œ"ï1åÍC6cAë¦üÒÇ/aíwâÍw3~^Ê/]ÎôN`fý™&]š[7$Í’µ¦ÔBº¢éÜOEȱ¯NcN6®ð]{kZFÜ»k•IT²aÎë˜[ g¯9ëÌ>y¨!j$<Û5Òrl»Ÿoð°M¾jŠ¿*û¬ÀôA[� øY‚äH‚¸ÛÁÝ@ór©â<—On]á’Àøþ@ùÙûãJpâbµÜÒ�äë…Nywcß¡Bœ°¯7#SÑ[‚ðflóÜzÑ “�-´²Uä%�¹VÙ×íÝÛ@ûZÀï‹‚÷ˆ-ï/Poƒi°B²–oHJ,áø —\‚?ÂÁº†gN’õe¯u´|lI`¹Û×£,ÌYïë3[{Ú4Lß»Ñå©$z[ïJD*÷<öfþþöó¶­WE@PE@PE@x²(ÑñdñuöûB<ÌÙ¿Ã%ªbÙáÃp¹å­Ú8q°ÿƒ�ÒMÏ‚ƒ†•èhóúë8.šóDSƒ6òý÷�¶ËÞˆŽ…B¸ôž3‡M�þÙgñEíÚF£ÂT„qV¢cñŽøvÖ,3Ë—uê ’Ú}ûšôUÔ$áúmsþ\çæ¿ÿFçñãÍpµ_|ÃWsr§‡'‹.^Ǭ²îˆ°Ÿ­Àš^kÌP|ƒ=OÍ<æ­÷]váö%ñ¬˜7¢ƒNÚLe2aç„�øç�¼n,–0mBóÆüŽq;ÌÛùÞ¿m¢#}ñô8½å´q³LùÍ37Íô9ß̉:ÓëX«�zèóCÍñ¬ÈòJd|9#n_¸mæçó´ÆË#´·ëÃBtL¬2æ0c3 WÕ\x&Æ3æí|F"Ðèü.÷­x[Å®]»†V­Z™²¯›*’.®~ýú›¿œ¸|ˆ!~ù÷=6ñX9i0Ð+@Ÿ»Ý×@ËO=6 WåÝ+wñSæŸÌ3CÒ¢`ý‚x6dz aÀ¨Û¼â�Ì_/¿‰’9¿ÇEnð9¼vìšy.H u¹Ðq“ÅÅý›÷±ªç*{XÄ~Œ.b¤…Ó’çNŽç[¸ê-4¾¢õÙ¬1¶ 5,älnʳ›Î6J$A:�î;ÒÂIt°a‚T ¡#n ì�¶—^2ýßøé �ør£\F–i�è±¢£`ƒ‚àÚÁÄ蔇wšyÚîokÆeß‘#Gb©�þ£ÏFIÔZùžw·°<Ÿ6v½…_¤´|W é0{´kD’ùåoŠ8Õiߌçºô¡ÙŽüDTUª�)‡E†0R‚Ô¤ y²ì˜DnÈ3m#Š ™`$ôQ“Èš[¢4V»7[-=‘Ù&ÉÁÈ�x ¤_eù­K.¿Cr›o\µgŠ•FÉXN›?ø´ À¨ ®‡ Ñž–Î�ϰDyÐ}tík•=mIüp Ûj6³Èûعo\ÆÂ�u7…‚>&ΦÁÊׯ­åÚ¶ y@ã½a„Ëv‡44^ÿ‚ý@Ê´Ö±§mÉg­kk$dVן<µpÕ…wΉ�¯ÛZãå{ÁÒI•Ί–‰%ÏÁž?�c�I�Öñõ™m»hnÚäZ´”ÙÁ�æòRC&/vøKXøÛ/Èâô@PE@PE@PE Ê  DG”¹Ar@H‡á½1fûv\�èÛž�Q¹¬YÑT´ªçÎ�81bا‚ìý!:JÉx ú÷7Q¯æÏ�ÏkÕ2cz#:(8ÞP"]a[vã.–=; gÎŒçe�tàûba%:zL�ŠÕòÖ'ñ˜Ûµ+ˆ3°÷ܹX(˜Ñ¦H¤Kª�w¢#¬×9WÈŸ¾óç›q[•/�z¥J™²/'ÑZûÅݺ!vLñ|‡Ãî߸�¾ûâîÕ»&mPÓUM+a,3"�ÇtÎÞ»&ÞI1oDGû#í‘$s²i�åpj³· RäI�eŸ,3o¾“¼hñG 3Žsc¬#aBBƒé‹l»vâNm<…¼µòš*¦«šRS^‹+ú~Q¼9Ht^Ä)Jc«Q¥GG8SI5û]<Ž!˜¯DÇÁE1¡’xDÅ^hù‚™“$�‘Œ.Ù3mèÀn³§�!iN�:…ôéƒG°˜N^6}ôú ùæÉøVý?�¬ô.|sÛWcû�|¦"ŠîùãïëpÛ­þj5V~ny�kޝiˆÓð_`n˹Ø:ÂúŒy#:žk,ßM£«ãöÅÛè�¢·éjGñ<¸ýß$úÆàÜ`Qd#{°5„E£ƒ)µ~Îò3®¿fH²Æ+ïÁ­蓺�y† 5*„cjžwñSÄGó Í‘,[2sþÎå;øõ¥_qᯠ&2©ýáö®èÁaÄ‹#LJ/’1MW7S]ÙÆ4VÊ 3×Èh¨j¿V3§Þ•”w#F¸…5Ø�¼ìI°%Ý!w ËsÀèF)”xMÈ–e PDè$)á0n­QBÈ  =‡µ[Z32"ƒ©ªÊˆCžÑNñðÓ'VÍ`ùz,#]ÛŽì�ŠN—dÞ€Ù@éJöY+b‚kbº¥-·\õ$H*åN²œü£V¸Ri1•Õ+ò´Éw‚i²ªÈœ#³Œ1f5�<µ56¯µ|fIWvÖwó לî¥oÛY#v}wqî× í:î‰Ké€ñó–ˆëcálbùã†yÃF]~2·ƒ«¹3 §ó@“Ž®sÎq²?B¾¤Í 5fþj­€ß=ïu·ÈVÞc±Ÿ*ÏOuùòÞ:-,Ïì.Ñ%ÿûLص ço¹þÞ——ÿ+åQ5W.Ä øÿÂ_ÂÂß~ÎëÒ²" (Š€" (Š€" (Š@ÔA@‰Ž¨s/pW„»güõ—‰ÞX-ÚNË)�E云ü¥÷àør¶eÙ¢ƒÑ ½fÎÄ2Ñþ Ca\Û¶H—,™×ˆÎóç¡C¦ÏU‡3‚õ´Ä"Ö]QÞÂd©X^«¥¸†AŒœéµª~ÿ=îÜ¿�ü¢%2P4Eh=ï)i/hV¬ˆšÅåõX1w¢#¬×9|ùrLø]^aûDÅ_ƒ øã&:¨o0«ñ,³ÖÚSk­s°aJ+›¼ðDtÄŒÝnv3­7 Ü„…mšH‡Ïïnˆm£¶aN³9Hž+9>Ø÷�shSv�–52º Á9*ìÈ ¦Ëêxª£yÃßqóߟ�?‡þiªÚhk" œç�e_‰Ž‘%G‚i‡¨ýñÁ_BÃ9ÕC 5Uå{—Ó]¡ùÎ�;;›…Z®P¡Þzë­PÛEµ6ŽŒ"Ñã4¦²ê›¡/˜ÍÑQ¡O£ÁÁ~½“÷6QD¯~õ*Jw/m†ú)ÓO†˜¨5©ò×ÍïÞ”ÃBt°Ãê/…˜é±R´¢¡Ýáv†¤³u~HHd*�É>'Ññò'/ãµo„ p5E浜gjê/¨¨rhÉ!Œ{}œ©¯:¼j�»ûäê“�¦ S¯}z]Ân„¼›0aÖˆ®QX¬¿ϱc £å§‘+šÐ"7ìtB¬+ßrJñ Pë]«Ì:ž8G…ª¡Oxù<ðr¿ãîd_0Qœ÷õ­1Z÷±ìžAdzÉj:¬¿ä:·dº•vŠ5}§Z:"®³@çw€…“¬šïäP ¶rL�ÅFA¤ÉhŸ±öÝšº"YVŸq‘ A[ ©P6h:¦ ë€çJº·œk}G¾ » ÞÆ[Í©£¢û‘ú/u[Ÿ Úò´üü“˜¡Õie¥°²Ž‚nNLêYu X7A[¸Ž"bη„С&­ý7À»ŸXåÈÚR�l¡è‘‘ôXpà�I °TÉÚD~‹[H”Ç„ø=zÈÃS¢# `iSE@PE@PE@Pž”èˆB7©ÞŒ˜¼{wàŠ‰ƒ«N¾|&z£¤C<°A‰ n72ÄèPû¢sÕª!\IF=¬’ ÎënL%5@Ȉx±b¹Ÿ < ѱQ]ÅiH#‰BMÚ�»wQMêv0š¤o£F¦ÞÑ–ëtj‘t«Yå Ê+Ò>š“è �{H©«²I4Lx�)€(Mëv«[0ͧ“ÖÑ?e|t>g9ômRƒ©~>¹jy´vOÙ�éu§#AêFÁL䨨DGÊü)Ñz—xðB±Áùƒ‘&Ù*dCÃÅòг›9×Ûà7‰x=»[ סí ÷–VËnɈF¾P8šŽö©þk[@qÓàM&ýP�zLä‹}úÿ}Oã«8_™h£O!D�»ÙD‘7¢ãÍÁošèö³I gú§�yáîÊCE/£U÷áV¢ƒQB?gþÙ¦—íQe{– sÌ«cpdåC�‘(sš“èh¾¾9¨%â4бÿ˜V^µ«4 Š}PÌ”7ô݀ś2#6â%�çz†ž’evš/¦¯"VO˜"êmkÙ�,_FÜz¯DÔ~ÁZÍ‚}ý�KDÃ÷‹øun«Îng¯—‚Û¶¨7ð·®[g˜É¦½R•²v O'K¿!ztÑü�Ÿ„$n—ÿa `¹Dy0mÖTY£m\+ל.3ð›D+¸:£Hæî²åµzž? TÈP8½zI¯4Êѵw¦]š#?³Ùó¹Î9KL)çÔ÷`j&OßßKÆØŸ¬žŸ ê¾ï%ä2Ó?q=¼¾Er_ÒËÚÝ­TrK4¾B-ùMs?kÛkH˜D„Þ/[‘9ž[Z)§Â3'±e$Ÿ¦­š¼)øýñ6wDÔ3²u¢DxP£l‡ãÿŒh2x�€ ”舤u E@PE@PE@Pž^”èˆB÷Îá´—ô£¼ÞT""’zÈÑn·ñ¶÷—èàxÝ&Oƺ}ûC¼T“ÛµÃ!~œ7ÏLEg}‹×‚¾ùì\ÃEyó}ûÑ£ø]ú¯‘èÛ‰\WÒ=½'iŸ¼YXˆ¦‘"±B"é`ò¤OT€µ9{Nœ@ ñ Í‘”Vñ…,òDt°¹¯×9Kò…÷[¸ÐÌð¾Ü šûjN¢ãc‰y# Ñ ¾Îálgë8É çy B. ^91ODG’LIÐþh{s~פ]˜ñÎŒ ¤Æ¾9ûÀ·Õ½�oyßÊëÒá0£yÞ|“PHÑhp¦øq¶t®—¢äL5åÍ|!:œÎkoã8ëÀH€ÿŠ]=vÕ�¼^'9á¼~[ÜÑQ}Tu<×ä9Óe@®¸tàœ¤£eHx?¬D'šðæ\xÐDs0Í#(x-ý²ô3ßAå¾+‡—º¾ä¼Œ û‰3&rži̾Œõ¥!Pœ¤�½¾ �C8`:-jÏ< c¡/Þž•È ŠŒÓf н™E>¬»hÕÙZq㛄Ƞž©†¨Û1â{àì «�·-Çæ¶5}UÆòƒºL!ånŒV iòVs‰æ“( SR1}­í—’é3«ìÜö’È ŠZ3-Òf®SˆšSWÓ>Û �ñ†öbI"o¼ÖðXÇ·…Œ™j�Àkäµúj$eN 7€a‹‚÷"™P8ŽiÓLx玽ƒ·aM×-=�ËÉ}Zê¹�]Þ9�µ@¨ ò¸í_™ðw‰vmÿÛoØv6à�–ºž Q¢#Ý)Š€" (Š€" (Š€"ðE@‰Ž(tãGÊ›ŠŸ¯\‰Ó7n®*¶� ÕD;ƒi«^í‹è’žÅ Ññ—è¼?|¸™¦V‰È”"…ÏD‡smk…ìè.¤ -MÒ¤˜$¤‰7ó•è £ƒ¢ã$Thie\¦¬±íÔey­5À¨1B­oD‡¯×¹ARf|2q¢54ÂÆžÛÞ?n¢cÊ[Sð×Ì¿@Í�Îç­È {-Ü_=*ŽlÑ4 y$:D›ƒ´Ý“%zCô*¦IˆŽ§;šºýs÷cRµI¡¡EUp0=K¢$¢¢xÛâ¨Ø¿¢™Ã¹q:ÞË/i¤º”ržRö…èp'9+çDæ� Á¥Od„ʹÆÃ‡‡Ð2ø©d’ö-©<ŸO“�ÛuC 1K¦^JÑÖEƒ-v÷Ám¯D‡èsP§ƒ60·Doì¿'I5ìùaF%"‰§Ö‹-\ok�P¥Ã‰†°s^Œ3¢£ËÅ.ˆ÷¬xÏÝì«Ø_áÑýG&=ÓTÑl¢‡.¼†Ð,w�Üæ3tIt—®^½ZóÀóü^Ë*‘iᱞ’öhÚ/’bJ>ZC-®ÖˆIóÍþ’Â;_b�Þ·«èwˆ3�šã׉V�|Ñ2Õ #'¨±A2ƒ$#5&ËcBápê`0”Ól½ONzŠ‚S@›æÔ¿ �u�€Çíçé’ºé-«�sûîë’êJÖLÑoŠÛÖ¯ðË7ÖÑÖÛ’¾*®}Ƶÿ´‰u=ŒÐXqÒUïo©Ùk"¬¾Âê½V¢@’J†/Æô`vê°æ‚{‡ï‚÷" Bb‚ö…ü×ja•�[QEwåz™BŠ©¤¼YDÌÉ´`LF[rÄŠº±Ž"{T>7cwìÀù;|åJà„üèÍœ9ñü~ IS¢#-(Š€" (Š€" (Š€"ðŸD@‰Ž(vÛ‰‡‰¹¨)D¾H")xl[ê Ð@Ò&‘ôÈŸ2¥]íq¢ƒv;[űGı”.�¢SA -¢Ã4 Øpåoÿô΋ .�vK»w7Q"Î6vÙW¢cÿéÓhõ‹xî|0[PÝÑÁ!|¹N'–yE�zp ^'/ëyÜDÇ¢v‹°±ÿFD�ŸÝ•W˜ÝìÔæS^Lä;?jM–-nd½ÞB�w ¸µpúBtPœšQ$$.œoé»Fñ\Šh1rϳ<ùÚ»Wîâ»d–畚Ô®p7;z"*$ͨÂg©`ƒ‚¨9®&úçè�Ë_6DU½9õÜ/#HDµZ’çê©~xç!zÅëeú9Sb-í²ëú¬3ßiÝnwõe|±ˆ#÷e>¶±SAµ"àCëRР°m=àt²·ÒcÃ2ÀÖšX9ø š5 �ìLÍd N³–R ¯¦.ÁAdÈ«-·'…|=›uÜg¢¤ýrƒžóp>ÚYÇs/ZejoPƒƒ6y#P ˜U¶·W$úä•tVz*w]‹öòÕ±t†E6�tp·G-Í‹s§‚<îíÂrlGS°ÏÖ;–6ˆ/ýî–ôZ_cN¢ÇÙ—$ÒW­­o!vЍ{!«M¿™@9IæÍ"bίÚÈ}‘çÀäm¾ˆ¨¿)\Ó%&É�ÕG�ÂõŸ�¤[K’Í©ÿ%i&„¿Zþö‹ˆëÓ1E@PE@PE@P"%:"Óñ¤D-ü*QŒô8.d�Ó^H“Æq¶|áÄâëµnætÎW–6�ªTqkáY¤Ûn´õÈtc½Î›TD?¯ˆ�‡…èàX�Ç�Çæ¿ÿ6âæ‹…èˆéa­lç+Ññ«D¼Œ]½š]PµHd‘vw›¸v­YoIù5»KL^·.�¨ióúë ¹m¾\'Qßé×Ï6ì7ºMd–(_ìqë\�%�ä•g1¦ b**§í¿3ŠWL,*#JŒÀÉ�'‘ºPj¼·ý=çRMyÇ8Wo4Ë”›­m†Œ¥2kcW Ê7ö^ðêØ¶ÛõMß×O]Gîê¹QwV]»:Äý…è v:1¦Ÿb*wëŸ]„C—#-¢cþ{"@?ìO�ºîkq/ûxÖ~¿ÖèÒÔ™VǤ³âùzsë!W•\Φ¦ìŒè¨;».rWˤ͹�ÝRH<ÎbÕFVCáf…My눭˜û®0bïïx© ¦2åÐ6�›è sŸBä|›¿Ÿ�åjZE1‰¸s øqФ'«c­ÚÖƒèõ«8Ï›Z‚àÛ¦°7ÅÂÅá´µ¿­$J„ÆSL5e›S¤ÛÖ±Ïqÿk™»‹•kó רLIÅÔT´‘B†”�ˆ §�ïPÄœÆtWL{e›]áÍ ¿xš�Ú×ê¼n»¿½g¤Ëécö‘h@u’¥t;KŸ6vi”„¤ùáìÃ2õN•¶j½i{TËü½ÇÒ™½Ë³öƼñÀÇ ­q–•èÆLVÙÓ6"æ|G~6wüá=Ý–§yý©Û$¥ƒ6oÆ !9n=x8DLɧÆèÖwE;¬œD:=#/OØæ/aáo?{^Ý+Š€" (Š€" (Š€" D-”èˆZ÷Ããj(®½äÐ!å1WR4ÐñnÛ±öí‘1qbû0p^¢ƒ½?bþ:y2pLœDÇ!Ý}ü8*‰ãÁ�ÁHަƒãÖ½{Ș<9Æ~àÅ 2¢uà+ÑÑ|èP’ÜÜtrPƒ#¡ý’ïfÏÆoÛ·›�)H¾W'vDŠ;ÑÁF¡]'Û8u:ŠI ±^uë"VŒ<h÷Ä)C} ¡Ûö¸‰Ž£«�btÙÑfú×¾–7ò? úFþ¸ ãphé!s>*N½ƒV[[!Má46tfo‹I3B¥ã©ŽÓ Ù&Vžˆ  n²¸èz±«Ñi°Ï9÷$zHøD{&šLO‘7…ót`™QL{DcÈ ¹·ÜûjL[•(‘x•Ÿ2ýÊh]u±ÅFç³�#®ë9?±þF–i®(²":V}± «z®2„ÅÇW>SDùbŒÞ�s€¹G1ãÅăÛLÊ(¦­ŠÝåµÇrž4e–v•È�ÞëLsç³ÉT\$Õ¨áaG�Øcºï�ÏÓV]s#¬ÝÛ;�—1£wbÏÙÖSù€8Èk´ÎØ©†Žì*ç±ê2fÎ$ÀI>S¾6sI”€íÔN!Ç•áð)- F°­ÿ,à5öó§’ë[ ^Ií$ü<õ>œÖ¹°p²•‹‚â¶­^´®l5l'NüŸí3À1Yký’£:hÓ·y,ÞÉÞ˜a=–˜µÈpÝcï‚…s]N¢£¼¤{.sfÓßÓ&‹`ÇÔXáµ_Šþ‚ÓžFÌø1Qov=d-—Õ*¯ýn-–w[8|T :.¼„�y§1ç 5@Ò¬IÍñŠÏWà÷oäõg±bmŠ¡Ò@É‘‚ñm~¾ÕOË_7?Jv*‰Dé™ãø)ãbƒ×N\3Út„s®*¿TAÖײšvÜ\9rÛ~݆­Ã·‚BÒÞˆ�Àÿg’E$�hŒz©5±–!;ˆ ‰2 ´È":vN�¨£–÷—!¥»•6„ÆC3›¤±ÛQ€œBäžÌIt�Tx£ß(þAqC�Q‹fj�©xtï‘çsà´EJЏMú*®‘i¾H ÑÞ}ˆCKaÓ Mˆ›4®Ç”lα"«l t'NfEepžr[»Ôç½|,þ'> Œå³%­•8ÜcÉò)Ò=†ˆ_¿íÚþJ„êM,r€:ŸJ™Ñ¶-;&L>¦åòÛ±Xô>JIÔàZ»•kÿf.à¨8æ+Ë:¾ïªg,êRÜ¿$J*é­>*Ê:voúJùÄ!«mÌX"D~àÞ6g4H¥ºâˆÿH/cqž.ï{¶X×Ú{BðTZö$$Êg¶�¤¿|%,˜ÓUë*Q �¤£c¨Øº'Ðø#KäüÒ9Á|©è¢|%©½Þºöuõ#WZ:5pù¼E};(+È)ÿu[K#%G~!o¶Y÷ÃÕÛU"±C‚‡VFú7øÐ"�xÌû?!K–…wÎC{%‚2Ÿ5–7ý{®ðîItÌ“ÿ=ÞÊ›×Do”Éœ9Ô�¾¿„…¿ýÂ{�Ú_PE@PE@PE rP¢#rp�ôQÅW‚?$Ú¢ˆ8Ú™Ò�Öpà@œ¸xÑ”CÚüа!ŠdË*ÑÁ9šIDÆ‘óâ‘ 0OD‡}ÎÛ>½¤—ñÞ{FïÃ[_ˆŽ™7¢ÿ¢Efˆ&eË‚žìÆÝ»¨öý÷`$LjÉåÍÔ]!¡]§=£dºO™‚ÓÁsûœ½w'`œD‡ÝÆÛždT—jÕ¼�ö¹þð²Ã˜Py‚qÒ²�ý÷nÞýk÷Œž±´¨@tp‹;,ƆŸ6°h,i–¤¸yþ&¨§AK˜6!ÞÝôn ia*=lØ~`Þ�¸vüZ°³Î7òy’釿·ž�XÑQtR'Î�Ø� ÷®‹§5ÀÚìióŸ#:˜ lù±8¼ü°A�Ñ4|†®¹j¢%H 0²%²ˆ’ rÀÕ£â‰w³l²¡áâ†nµ®Ã]waFý�ž´7ì“N¢#V‚X¸ó¾!&¨¹qãŒxÒÅÒhi#d(™Áîföw¯ÞÅ˜×ÆàÌVñ΋1:ÈNwõ˜àô¿U€|µó¡öÔÚ¦ü¸7ßµÆõ³R@1­O'I½÷£¤´*#ûU¦ >·òù‹S6YuËf Y ©®lcJ(þÌ�Œ !B':£+’HÄ:·Ÿœ—%ÕÓå �ÑVHI7å´ÛB¤0uï]d�;8ϺÖ´ÖJoE��›òÑf$#:œFr¤rnàÔQ«–×|ñ¬uL"‚é®HØx3›ð±ÏS �Ný�lÔÀ�]-8/#@n8]OQˆ§P¼m$vîݱҌ±Žú$�'¾ÞŒ5Ôú¸y=x‹÷ºK:1!Yœž9ç AÔµ�5ÚbùZ ‰Y¶K~gÓÉ ÉâÆõy wÂÂýØȽÞýØn§{E@PE@PE@P�§%:žÎûæqÕ͆ �ñ¡Y¿&MPHÞ’œ²~=†,Ybš·«T 5ЉwÅÍ–IÔF/‰Ú°ÍI0œ“4,3þø¿K$ɉ.q7¦vªV´(êKä#HB²ofÍÂ¥MïÐÁD‰¸·ï1u*VKÞnÁCŠ~h3r¤I#ŶSÝâÏur ÛH¢ô�?ßèŽÜ”²ÓÒHª¢z¥Jí»~±\Ó·rm¾5G:T®ìKÓPÛ_{ÓÞž†§o¶%�P}LuŒ*=ÊÔQü›"à4ÛȦv‡Ú™º=S÷˜1èäîpÒòH˜/oûW™hÂ]/w5íœ B_?y=LBßì¿eø£-â$èPÏ^1;ª�®Žø)B~~ì5ܺp K:.Á±5Ç@‡³mÔÿ ˆÓ¨Á0¯å<œÚtÊ8î�ç’eK†Ü5r£L÷2ˆ�X<»ÿ1{tÿ¨•±}ìv]ÃË&æ3(Þ¶8xnÓÀMF¼›D‚mLÅ�ck PÃB¦zP^ÑMù몯Šç[/$.êL¯ƒ´EÒzè-z2#ŽÖý°÷oÜÒ†äP¶rÙÀh�•r9÷¸l�qêLtìmÍJ] êk4úÈeÐ^úKguÄñÞc¨ku#¥Ïà/€»·]uÙå­þžÃ€A=-ñò’å%M•õb‘à ÑAûZ¾fª71ÅÀ £3(�N½R—²¦¸aVÆa½„p‘u�T¡£Ÿ‘!Œîø¨pþ´¹ðI¿À.�Fotoj ­Û•$GHŒPŒý•ªv­ç½3[P¼�ýB³s¬TS:wSw15U‡ï¦s¯sÜÏVê+j¨ØÆv¥^º °¢=ìzo{â9ìk‰XùÓ"uYCÐ�¨qZxæ´Ó‘‘�ÙpÙ9jÔ(»îÇö*ÝëÝ�ívºWE@PE@PE@x:P¢ãé¼oQnÕD8�—nÜ0‘Œ¤H%î:Qná~.H^HƉì8,Ñ.qcÅBJÑIaäJ4?Ç‹¬nL3t~Ïy¤ÌŸtÞGiP)rMAñx)â!U�Tà›ö‘mŒ¡3ž‘ Lq•8SbÝÙó> ã›S $z$á•�Ú"L_Es’+¦Âmã$:ºßén¢�¨¿qiÿ%óy!éç“ÉsËth|nÉ‘(ƒ¼�ž5™IçSÿ(Üèºð×Ôú¸%QKI“?¾Å2*"ak>:òëHÄ mÔ ‰ yÅ*»o)rú˜¥ÇA¢!T÷=0À}8Ÿ�9/u0˜â‰)¨Òd´43B››.Ô!�Cm”t™}žÒï†ObN¿ëcG ûù¸,m¦(Š€" (Š€" (Š€"ð˜P¢ã1®Ó)Š€" DŒ6bÔ ²Ng:…H”y":"gU:jxh#Ñ«æYk$uDÔ ûÙóê^PE@PE@PE j! DGÔººE@P�0 pûâm“¢mëÈ­ØØ£éÉ”XL�’)Ñ:�ÿÇ)ì]¯5�9—¥ B�~’>Šú4 £×lf•u«ØøKXøÛÏžW÷Š€" (Š€" (Š€" (Q %:¢ÖýÐÕ(Š€" „�/c~iô2ì.És'GÓ5MCÕuQ¢ÃF,jìëHš©=[¬µÄŽc žSóöj� {«)îøKXøÛÏ}~=VE@PE@PE@ˆ(Ñ5BPEÀzÅíeÒgHŒL¥3¡Ü÷å�0MÂPGÚòËÌ>(¬ÓýVwP@\íÉ!г°f�h]8D½©³Aô÷ºe*?¹µéÌQ›°ðw•=zôð·«öSE@PE@PE@ˆB(Ñ…n†.EPE@ø/#@±lFrÄ�<›ê¿Œ„^»¯(Ñá+RÚNPE@PE@P�ÿo”èøÿ¾¿zuŠ€" (Š€" üß" DÇÿí­Õ SE@PE@PE L(Ñ&¸´±" (Š€" (Š@TA@‰Ž¨r'tŠ€" (Š€" (Š€" ìåûÊvn–Í´Ú¿\ (ZÆ÷¾Õòàƒ8±áâ§Œ�âm‹GÔ°:Nˆ ÏA–ûŸmzý � 1Ñ?ƒÇÿõ kÜø@ÏaÁë£BMd>³þþö‹ xêE@PE@PE@P‚# DGpLžÚšcÇÇ{hðåÛo#oúôømûvLZ·.°ù{åËãÅœ9�íÂÚ}û0|ùrsX£X1T/ZÔ>eöç®]ð¥K±~ÿ~Ü}ð ðIŽü3¢¤ŒYçÅ-Z4œ—¶­GŽ„xÚÛùR¨X¸0š¿új°¦cW¯ÆÜ?-gw¬˜11¦M›`„CD]''øÏ?³jþ8xGÎ�3Ǭçµ=—93j/ŽR¹s³ÊØê½{1`Ñ"û0Ä}ÛŠQ&oÞÛ„÷ä­ ·Ð'e3Ì[ßB�zÂ;äë¿wÆ^L­55Øü%Ú•À?¿¬>*U¼”¸rˆØéúÈ„ºÄIƒ€^XÍH�´êj—o° Íl¼Ïæ|m÷·�ðñï^¹‹;Wï FœH˜&a„�ÿÿ0`TxþpŒèk¸p˜5 صÉúãqÌX@–\@å@íw�DIÃ?ëÌ_�Ïš'ïóÀ´-Áë£BMd>³þþö‹ xêE@PE@PE@P‚# DGpLžÚš†âÄEñž†b?4lˆ"Ù²aüï¿cD�Á.¹Ó¥ÃÐwÅãfó·lÁóæ™Ú†¥K!öœ8�cÆàÞÇn½‚.øäÄ�'.]Bžôá¨Ê / c•*ÁZ64Ç$ªÂ¶ïë×Gñ9ìC³�ˆëä@W$R¥ÇÔ©ØyìX�ñ�ù2dÀ æ.Ô‚­[Ñgî\g¯åÎU«âÍçÅS‰öÿDt\;q ‡—DkI§%¸sù”è„$R ‘MtÌk5[~Ù‚yS Íž6‘r Oû ‘é4~Ú±yRëgÄB»šÀùÓÞW0| P²¼÷ó¾žaDÇþ®Ö�ßÜê´z uÕG¥Rd>³þþö‹J¸êZE@PE@PE@P\(ÑáÂâ©/ÍBâòÍ›æ:.H )´l©R¡´#R âsÏ!¥¤Zr'ØÖ&AX¶ÍÑqûþ}42g®H~±½ÁˆF6\»}ûOŸÆ‰¶¸"k²‰ŽÛ÷îaÚØCî—íÚHÒ0j$I|ÉÁá0F rÆi'…4iàFšT-R*Wv6 ÷ur0¦zj:x0Ž�*“'×™3Mܸs;�ÇÌ�‘-uj¯DG Á&��IÞ¬tž<È’2rSIý?î8öËÚWŽ\Q¢Ã˜>V¢#‚õc¸Ètû±œÿ|—9c%eTKàþ= Šj�¦–˘ø{0¡?°G~Ž×É{Iž�X¸.žʤ±Æürð–‹g�؉Â9Zd>³þþö 'Ú]PE@PE@PE ’P¢#’€}ÒÖ´JÍ„„ U–hˆN¢!<$)~nÒÄô³7ÞˆŽ à“‰M³j’Îê£7ß´»îé±jÏ”+P D½Ž/§OÇŠÝ»M¿ÉíÛ#u’$�cx+LY¿C–È+²b)%É�䲟֡¢9:…÷:9ÔJYÛ²FZδiñCƒH$:$N£>ÉÖ#GP¡P¡ÀjgDÇÇÕ«ã !™ž¤)Ññ$ÑwÍ­©«\X¸—4¢Ã‘àÇ‘é4>›Ö„„Àöõ@×ÉjˆØq’ •ëíñPÒÓÍ�Œ�o¿´>"ŽVI°e›ªÖH³$Ê#gÁˆ5âLjÌgÖ_ÂÂß~�ŽŽ¨(Š€" (Š€" (Š€"(Ñ(>æ1¨±@4"Æï܉a½�,nÜ`++ÑA� F-Иz‰)˜lc¤È�©«¼ü2Z¼öš95nÍŒ\±Â”·hat?ì>aÝûCt´5 ;$�£Sj•(�Á‹›i‡µl‰\BFØæ$:ü¹N¢ÒL¢9Žœ?o†"é½BŠÌ°çåþIÿö7Ž­9† {/ E¾ÈúZV¤,�Ò£FÇ•ÃWphé!ÄI‰Ò%ÂöÑÛñÏ£�¯v>䨔{§ïž9û=ftx§(øíÉvMÜ…{7î!Má4HW,8.×qdåÄŒi‹¤Eáf…+A¬ Ýÿ}ô/þšõÎl;ƒK.!nÒ¸HU(rTÌ�¤Y}KjïODǩͧp|íqœÛq÷oÝGêB©‘¹lfd|)c�õEôÁÓ@tÜ8sûfíÃÉ�'ñï?ÿ"ÓË™�»zn¬úb•G�Ž=S÷àΕ;ÈP2.8ˆS›N!ÍóiðB«ðèÞ#l¾�'Æ%;• |Þ}ˆíc¶B¼cìœXo‰�¿òå+�õ,$ΘØ<vå®Iò¼]¿‡Ä¤^žS�&à­#·šç™é°x´‹û.âè꣈öL4<ßüy^~G–1õ© ¦2ÏA–W³xÒ®äÜÀÙígM?®#õs©Íç&vâØv³߇Åi|ú°ö7 –,'G~`öàê%àõÚ@¹嫿[²IÔ�È_4èr™iëZàÏ5ÀÙÀ¥sVT£ª7R»~*‚tÜ´8zH–Bæ‘”N›W–vY}ª6 † eç°Q~^Ö,nK â‹’òéÉ^Hmj`Pà»b]ê#™Ö\»l­yËïÀÉ#2_z‰8,Tªç¹½s„GEgc´«&~B™çm×±³D£zàÈ~«¶÷àÍwœ-B/“ 9(˜_^†³ä–qd­²…ÞÀgÀPÑë‰O0¾.¸D½�¿sÞ»0z…Æ\i3ûä£ûÇr€„Oâd@‘2@•ÁØ}}f¿]»Öh_5]®t |Ì_ÂÂß~>,I›(Š€" (Š€" (Š€" <”èx û;å‘«W1B4FmÛ†3)ªŽIôCFqô»[X‰Ž·K–4©—øG¼BÔµ¨-DG!#h�Ê”A³W^ œÎItøs�ÇE÷¤‘èŸÐ2Kj©Ñ­[ŽZáIÿ<ü ?Xˆ?‡ýly¥:—º>ëL½SŒ|çø�˜Ùp¦©§4�Ï4:� 7-lŦB6ÏÄ|ÍÖ4Cúâ=t³Óýˆ§o dÇ’H”>~ûH<¬n–¯N>Ôž"^Öcûéõ¦RÆ®³÷$Dª «bÈ»ÎÛ>,DïKº,Á¦› >ç¸%Ú—@…Þ̵:ë#ªÕ‰@“ªNÂͳâavX²ìÉ�ª@*CJ¹‹‘÷ÏÞ—]F´èBš qe[†3òëüîóvrVΉwæYß1¼ÿ|n|1l�–6 lJ1zŠÒÇN�ÎtBÌx1ÏÙ…£«Žbô+£Íaå!•Qä½"¦¼yÈf,h½À”_úø%¬ýN¼ùnÆÏKùïÅ£ëÁ™~bà ̬?Ó¤Ks놤Y’¢Ö”ZHW4�û©9öÕiÌÉÆõ¾koMˈƒ{w­2‰‚*B6ÌcsKáì5g]‚Ù'5$@�Dƒ'cû¯FZŽm÷ó ^¶ÉWMñWÅaŸ˜>"h ?K�Iw;¸h^Î"UœçòÉ­+\ßH ?{\ N\¬–[ú‘|½Ð)ïnì;Tˆöõf$bj8¢"rKÞŒmž[/št²…V¶Š¼$0×*ûº½{h_ ø}Qð±åýêm0 VHÖò I‰%áR‚KðG8X×ðÌI2£¾ÌC㵎–�- ,wûz”E‚9ë}}fkO›†é{÷"º< •Doë]‰HåžÇÞÌ_ÂÂß~ÞÖ¡õŠ€" (Š€" (Š€" (O%:ž,þ¡Î~_ˆ‡9û÷c¸DU,;|.÷¡¼U'öðRºéYpаm^ÇEóbžhjÐF¾ÿ¾Ñö`ÙѱP—Þsæ° Ò?û,¾¨]ÛhT˜Š0nÂJt,Þ±ßΚefù²N£AR»o_“¾Šš$\¿mN¢ÃŸëÜü÷ßè<~¼®ö‹/‚cøjN¢ƒBîÔáðdÑÅë˜UÖ¶â³XÓk�Šo°ç©™Ç¼õ¾kÂ.ܾ$žµóFtÐI›©L&윰ÿ<�×�ŦMhÞ˜ß1n‡y;ß›à·Mt¤/ž§·œ6b–é ¿yæ¦yƒ>ç›9Qgzkò@}~¨y#žY^É‚Œ/gÄí ·Íü|cžÖxyc„öv}XˆŽ‰U&âÀüflF䪚 ÏÄxƼ�ÏH�ßå¾o«Øµk×ЪU+SöuSEÒÅÕ¯_ßcó—S—/1Ä/¿ã¾Ç&+' zès·ûhù©Çf᪼{å.~Êü“yfHZ¬_Ïæx$ õ`›W¢C’ùëå7Q2ç÷¸È >‡×Ž]3Ï ´.º n²¸¸ó>Võ\ek"€Ø�ÑEŒ´pZòÜÉñ| W£…ÆW´>›5ÆÖ@¡†…œÍMyvÓÙ&B‰$H§Ó�`GZ8‰6L�*�!ÔbÄ��½ÓöâÒÁK¦ÿ?½_Nc”ËÈR# ¡=VtlP\#˜�òðÎC3OÛým͸ì;räH,rØWcôÙ(‰Z‹#ßóî–çàÓÆ®·ð‹”–ïj!f�v�Hò ¿üM§:í›Ñâ\—>4Û‘ŸH‚ªJU2å°ÈFJ0�š$O–“È y¦mcÄ@q!l‚„>jYsK”ÆJ`÷f«¥'�"Û$9¹/�ô«,¿uÉåwHnó�«ö @±²À(Ëió'Ÿ6•Áõ0$Ú3ÀÒò–(Z£�€®}­²§-‰Ža[Íf™c;÷�ËX8°nâ PÐÇÄÙ4Xùú µ\Û6!h¼7ŒpÙ.ã0‚†Æë_°H™Ö:ö´-ù¬um�„Ìêú“§®ºðÎ9q ðu[k¼|/Xº#©ÒYÑ2±ä9Øó'pì 0é�àÑ:¾>³m-ÂÀM›\‹–#;áÑ\^jÈäáÅ ûYœ(Š€" (Š€" (Š€" D”èˆ2·"èBé0\¢7Ælߎ ½`Û3â1*—5+šŠÖCõܹ'F ûT�½?DG)¯Aÿþ&JâÕüùñy­ZfLoDÇJ¤£+lË.bÜŲgGáÌ™ñ¼¬“|_,¬DG�©S±ZÞú$s»vEqöž; 3Ú‰tI óáNt„õ:ç ùÓwþ|3n«òåQ¯T)Söeã$:Bk¿¸[7ÄŽ)žïpØý÷Ñ7c_ܽzפ jºª)b%ŒeF¤ó˜ÎÙ{×Ä;)æ�èh¤=’dNb¢B6 ²Nmö¶AŠ<)°ì“eæÍw’-þhaÆqnl¢ƒu$LHh0}‘m×N\é�§�·V^SÅtUSjÊkÑbEß/Š7‰Î‹8EiLc5ªô(ãg*©f¿‹Ç1ó•è8¸è &T�¨Ø -_0s’ä 1�Ñ%{¦íØmö´1$Í©S§�>}ðÓÉËæ£�>B_!ß<ߪÿç‘•Þ…onûjìc¿‘ÏTDÑ=ü}Îc»Õ_­ÆÊÏ-rÍñ5 Ñaþ Ìm9[GXŸ1oDÇs�å»ituܾx½Sô6]í(ž·à›Dßœ,j€ìod¶†°ht0¥ÖÏY~Ƶã× IÖxEã ã=¸õ}R÷1ÏP¡F…PcL�ÀóN¢#~Šøh¾¡9’eKfÎß¹|¿¾ô+.üuÁD&µ?ÜÞÝ#8Œxq„IéE2¦éê¦`ª+Û˜ÆjX‘aæ Uí×jæÔ»’ònÄ·°»“—= ¶D¢;änay�À(…¯ Ù²Ì"Šˆ�$#Æ­µ¢"J™A"¡ç0 vKkFFd0UUqÈ3zÃi#¾~úĪ,_�eä£kÛ‘}¢SÀé’Ì0(]É>kELpML·´å–«žI¥œÀ‰C–“Ô W*-¦²zE>‚6ÙáNX0MV™“cd–1Ƭ’§¶Ææµ–Ï,éÊÎZãn¾ášÓ½ôm;+bÄ®ï.Îýzä¢]Ç=q)0~žÂ±b},œMB,ÜÐ"oبË�Bævp5wFátþhÒÑuÎY"NöGÈ—´Yá�ó³æÀÌ_­ð»ç½îÙÊ{L#öSåù©.CÞ[§…å™Ý%c£äŸ »váü-×Âßûòò£<ªæÊ…˜ÿ_øKXøÛÏy]ZVE@PE@PE@ˆ:(ÑuîîŠp÷Œ¿þ2Ñ«E{Âi9%b¢±ˆ\7’¿ô_ζ,ûCt0Z¡×Ì™X&Út(ŒkÛé’%óÑÁyþpmÊN¢£Ñ²FF$X#G…YÁtYOu4oø;NcþûóñçÐ?MUÛmMd�ó¼³ì+Ñ1²äH0íµ?>øëCh8Ç¡£zhᡦª|ïò`ú¢ë"4ß¹sgg³PË*TÀ[o½j»¨ÖÀÆ‘Ñ@$zœÆTV}3ôÓ£y#:*ô©`48دwòÞ&ŠèÕ¯^Eéî¥ÍP?eúɵ&ÕBþºù�ÛrXˆvXý¥3=VŠVC4´;ÜÎ�tö ÎÏ ‰L¥3Ù§à$:^þäe¼ö�0£¦È¼–óLMýõ5@-9„q¯�3õU‡W abwŸ\}²Ñ´aêµO¯KØ��w&LÀÑ5 ‹õâ9vla´ü4’bEZä†�NˆuEâ[Né/~j½k•YÇsç¡P5ô /Ÿ^àwÜ�ì &Šó¾¾5Fë"–Ý3èx6™@M‡õ—\ç–L·ÒN±¦ïTKGÄuèü°p’Uó�ÜjAØÖC®ƒé±aÂ(ˆ4í3Ö¾[SW$Ëê3.$h+!ÊMÇ4að\I÷V€s­ïÈWa·ÁÛx«9uTt?rX÷¥nkà³AA[ž–Ÿ3´:­¬VÖQÐíÂÉ‚I=«ná+â&h ×QDÌù–:Ôä µÿx÷«Y[ê‘-=2’ À2)–J"Y›Èoq ‰ò˜0À¿GyØÂ`Jt„,mª(Š€" (Š€" (ŠÀS€€Qè&Õ›1“wï\Q"qpÕÉ—ÏDo”tˆƒ6¡à/ÑAÁífC†Ýj_t®Z5D¢ƒK ÉÁ¨‡UaÁyÝ�©¤/V,÷S�Ça!:6Šã£«8 i$Q¨ÉA»q÷.ª BÝF“ômÔÈÔ{":Âr�N-’n5k¢|AyEÚGsr)uU6‰† ¯1Å¢iÝnu ¦YàtÒz":â§Œ�Îç,‡¾Mj0ÕÏ'W-�Öî)»1½ît$H�ÀhÀ¹&w@IDAT"˜‰›èH™?%Zï^(68ÿ`0Ò$[…lh¸X^qv3çzü&¯gwká:´ôÞÒjÙ-QÀÈ GÓÑþ/Õm (n¼É¤*P¯€‰|±Oÿ¿ïI`|ç+�`ô)„èq7›(òFt¼9øM�Ã~6©áLÿ40Ï@#Ü]y¨èe´*â><ÂJt0JèçÌ?Áô²=Ê¢lϲ�cŽyu ެ×9g‰)åœúLÍäIàû{‰Àû“Õó³Á@Ý÷�£„\fú'®‡×·HîKzY»»•Jn‰ÆW¨%Ÿ£iîg­c{ “ˆÐûe+2ÇsK+åTxæ$¶ŒâóÀ´U“7¿?ÞæŽˆzF¶N”j”ípüŸMï0��´Ž¡(Š€" (Š€" (ŠÀÓ‹€QèÞÙ"œö’~”7›JDDR9Úí6Þöþ¯ÛäÉX·obˆ—jr»vØ ÄÂ�󿙩è¬oñZÐ7Ÿ�k¸(o¾o?z¿Kÿ5�b;‘ëJº§÷$í“7 ÑÁ4R$VhC$Lžt≠°6#Gbωˆ!¤9’Ò*¾�Ežˆ6÷õ:gI¾ð~ šÞ—{BAs_ÍIt|,Ñ o„!Ä×9œíl='9á ¨Î@²”®cgéÓÆ.�’�4?œ}X¦ÞI£ÒV­7m�jù�¿÷X:"³wyÖÞ˜7ø¸¡5ÎÒ£ݘÉ*{ÚFÄœïÈÏæŽ?¼§Ûò4¯?u›$¢tÐæÍ˜!$Ç­‡ˆ)ùÔÝú®h‡•“H§gäå Ûü%,üígÏ«{E@PE@PE@P�¨…€Që~x\ ŵ—:d¢<æJŠ:Þm;Ö¾=2&NlîÃKtp ÷GŒÀ_'OŽÉ‚“è8$‚ »�G%qe£¥ÁHö£õŸ¼æàÃ~þTRb} ÄK ©�„Ÿ§Þ‡Ó:×N¶ÒaQPÜ¶Õ €Ö•­£†íĉÿ³}8&k­_`TmúV �Å;™ãÏ[3¬Ç³v9®›'¯ QÃè‹ÃY×»`ð5™AdÔZL­eÛÆ«@‚ÄöQÐ=Se1e­žD;0:ÃÝH6�â$C6×™s'%&ƒuÌ( Fc8mÒ`!|d<Ú7c„dkd•Ý·Naö…€L9Ü[¸ŽÃ;§3MVK¹¿í¾v�Ñ%w­²’°…ü�ÑDô­RÊKžÌ_ÂÂß~žÖ uŠ€" (Š€" (Š€" (O%:žü=Ó ÎÞ¼‰ÑâÄ!©­I®j'ÑAñ«·o›ñΊSmÜš5¦œ/CT’¶•Ê• IÄaRJ'¶]'¤J·I“ìnfï$:–ïÚ…¯fÌ@rqæÖ-�|’Ö)“¤Ôzøð!vˆ`èÈ+pBòÒÓj/Ž+¼lj‚n|!:ÎÉ5½ý³åýâ5 jîx¥×1ÜÊÝ»ñÅô馆ó&“”_!¡]'º/×TWæ¾,øÓ eÊ„z/½„\iÓâš`NÂg¬à�B°p®ËIt”—´cÏeÎlú{Údì˜+¼öKÑ_púÏÓˆ?&êÍ®‡¬å²Aåµß­Åònˇ� DÇ¥ƒ—00Ï@ã4¦ã¼Á¢Hš5©9^ñù üþ�¼þ,V¬M1T(9rB0¾ÍÏ·úiùëæGÉN%‘(]"s?e|ClðàÚ‰kF;‚ŽpÎUå—*ÈúZVÓŽ›+G®`Û¯Û°uøVPHÚØáÿ¬@²ˆ¤�Q/µ&Ö2dq!QFB�YDÇÎ uÔÀòþR#¤t·Ò†° Àxhf“4v; �SˆÜ“9‰’ oô{Å?(n2jÑL­3�î=2Bâ|œ¶èCI7`£I_Å52͉!ÚûqhÉ!l´ q“Æõ˜’Í9Vd•m�îÄɬ¨ γ@nk—úâ¼—�ÅâÄ'�±|¶¤µ‡{,Y>Eº£Çñë·]BÛ_ �P½‰EPGãS)3ÚÀ¶eÇDƒÉÁÇ´|C~;‹ÞG)‰\k·ríßÌÇ|eYÇ÷ã]õLƒE]Šû÷€DI%½ÕÇ@EYÇîÍ@_)Ÿ8dµ�K„ÈoÜÛæŒ©TWñßée,ÎÓå`ÏëZ{OžJ˃„DùÌö‘ô—¯„Åsºj]% ´“4bt [÷d‰œ_:'˜/]”¯$µ×›@×¾®~äJK§.Ÿ·È oÇe…à¡9…â¿nki¤äÈ/äÍ6ë~¸z»J$vHðÐÊHÿZä�yã'dɲðÎyh¯DPæ³Æò¦ŸbÏÞ=‰Žyò¿Ç[yóšè�2™3‡úÑ÷—°ð·_x¯Qû+Š€" (Š€" (Š€" DJtD®‘>ªøJð‡D[G;S:Ј/šrH›6D‘lÙB%:8G3‰È8r^<2æ‰è°ÏyÛ§—ôR#Þ{Ïè}xkã Ñ1sãFô_´È ѤlYðϓݸ{Õ¾ÿŒ„I-¹¼™º+$¢#´ë´ç`”L÷)SpÚ!xnŸ³÷è°ÛxÛ“ŒêR­š·Ó>×^v*O0NZv¢³ÿÞÍ{¸wížÑ #–ˆ®cq‡ÅØðÓ�%Í’7Ïßõ4h Ó&Ä»›Þ $-L¥‡ ÛÌ;׎_ vÖùF>O2ýÐüÖóñÏ+:ŠNêÄäÞuñ´X›=mþsD“á�-?‡—6(0š†ÏÐÕ#WM´IF¶DÑAra@î¸zT<ñn–­B64\ÜЭÖu¸kâ.̨?#°Â“ö†}ÒItÄJ ÷oÞ7Ä57nœOº#C-m„ %3ØÝÌþîÕ»óÚœÙ*Þy1FÙi⮜þá· �¯v>ÔžZÛ”÷æ»öÀ¸~V (¦‚¢õé$©÷~””Ved¿ÊTaÀç–C>Q`Ê&«nÙ,! $Õ•mL ÅŸ’$DèDgtE‰€Xçö“ó²¤zº|A"0Ú )"馜v[ˆ¦Î¢ã½‹¬£qçY×ú‚ÖZé­¨rS>ÚŒä`D‡ÓHŽTÎ œ:jÕ’Àáš/žµŽID0Ý of>öyСө’�úø¡³«çeÈ Ç£ë)*ƒñŠ·�Äν;Vš1ÖQŸ„âñÄ×›1¢†Z7¯oñ^wI'&$‹ÓÂ3ç|!ˆº6°F[,_ $‘"ËvÉïl:ya Yܸ>OáNX¸Û¹×»Ûít¯(Š€" (Š€" (Š€"ðt" DÇÓyß<®ºÙ�! 3>4ëפ É[’SÖ¯Ç�%KLóv•*¡F1ñ®¸Ù2‰Úè%Q¶9 †s’†eÆàw‰$9#Ñ%îÆÔNÕŠE}‰|`IHöͬYX"¢£´é:˜(÷ö=¦NÅjÉÛM£ xHÑmFŽ4i¤Ø–bêã¢[ü¹NŽaI”¾óçÝ‘›RvZIUT¯T)£b×/–kúV®Í£æH‡Ê•}ij›ãk�cÚÛÓpãô�À¶$ª�©ŽQ¥G™:ŠSœf;ˆáÐîP;S·gê3�ÜNZÉóåmÿ*�C¸ë宦�sCAèë'¯‡Iè›ý· ßb´Eœ$êÙ+fGõÑÕ?EÈÏ�½†[naIÇ%8¶æèp¶�úÔq5浜‡S›Nǽó\²lÉ�»Fn”é^±‹g÷?f�î?µ2¶�Ýn¢kxùÏÄ|ÅÛÏm¸Éˆw“H°�i£¡Scl jXÈTÊ+º)]@ÕáUñ|‹çMÝ/E$âhËiTìWÅ?,nw²§¨8‰ˆcvÒ�sÒB#:HâQc„)£Ò—H�^y2ºuà$:šýÞ,Øç…ÄE�éu�¶HZ½EïBæ`ÄѺÖáþ�ûAÚ�ÊV.í‘£RŽ ç×�-0N�‰Ž½­Y©«A}�F¹¢ Ú‹CéL Ž8Þ{ u­n¤ôüp÷¶«.»¼Õßs0¨§%^^²¼¤©²~BL#$:h_Ë×Lõ&¦¸atÒi£W áRÖ7ÌÊ8¬—.²’*tô32„ÑÕΟ¶">éØ%°Àè�îM-¡u»’ä‰б¿RÕ®õ¼w¦¢b Š·³_h¶bŽ•jŠBçNcê.¦¦êð=À`NãuŽûÙJ}E ÛØ®Ôë@·V´‡]ïmO<‡}-+Z¤Î#ëcb5N Ïœv:22.;G�ewÂÂýØ^¥{½û±ÝN÷Š€" (Š€" (Š€" (O'Jt<�÷-Ê­ú‚§óïÒ�&rƒ‘©äÏ]Ç"Ê-ÜÏÉ É8#‘‡%Ú%n¬XH):)Œ\‰æçx‘Õ�i†Îï9�”ùS‚Îû(m*E®)(/E<¤*� |Ó>²�‘ tÆ3„)®gJl¢;"{Þ§a|bsêO!‚D�‚Ä#¢²Q[„é«hNrÅT¸mœDG÷;ÝM´õ7.í¿d>/$ý|2yn™�Ï-#9e�·Ñ³&3©ã|ê…]þšZ·$j ` iòÇ·XFE$LbÍGG~‰8¡�Z!Q!¯Xe÷-#EN³ô8H4ä/"‚꾸çó1ç¥S<1UšŒ–fFhs3Â…Ú!$p¨�’.³ÏSúÝðIÌé÷b}ìè/aáo?—¥ÍE@PE@PE@P3Jt³þþö‹ xêE@PE@PE@P‚# DGpLþµ5�ÇŽ5Ž÷Ð.àó7Þ@ÞôéñÛö혴n]`ów+UÂó9sÛ…µû÷cø²eæ°v‰¨U¼¸}ÊìÏ]»†aK–`ý�¸ûàAà9’ù3fDi³þóÏ#Z´h8/mÛŽ ñ´¶ó¥P¥pa´|ùå`MÇ®Z…9[,gwìX±0¦]»`„CD]''ø÷ß³r%~?tGÏ�3Ǭçµ=—93ê–,‰2¹s³Êت½{1`áBû0Ä}‡*UP.oÞÛ„÷ä­ ·Ð'e3Ìë_G�†Â;äë¿wú^L­;5Øü¥:–«?½¬>*U¼�¸rˆØéúÈ„ºÄIƒ€Þí­f$HZ÷µK„7˜ßn>6ÞŒgs>‹:Døøw¯ÜÅ�«wó™˜H˜&a„�ÿ4 žƒ§Lj¾† g�™£€]›¬<ŽÈ’ ¨Ö¨÷6�(iøg�ñ ð¿–ÁÇÉ[øukðú¨P™Ï¬¿„…¿ý¢žºE@PE@PE@P�à(Ñ“mM“�qò¢xOC±ï›4A±lÙ0~ÍŒ 0Ø%wºtú¶xbÜlÞÖ­ø~î\SÛ¤lÙ „Þ“'ÑyÌÜ{øÐ­WÐÃù}„øqâàä¥Kh2`@Г>U/Z]ªWÖò­Aƒp\¢*lû¶Q#”Ì‘Ã>4ûˆ¸NtE"UzN�Š�Ç�ßy�/C jéò@Íß¶ }æÌq6ñZîV£^+"žªH´§‰è¸vòŽ,=ˆÖ⮋qçò(ÑI¤"›è˜Ûz.¶þ¼)ò¦@»=í"åþíƒF¦ÓøßŽÍ“Z?#:ÖΟñ¾‚á‹�Ò•¼Ÿ÷õ #:ìpµîö&ðà>P¿5Ðs¨«>*•"ó™õ—°ð·_TÂU×¢(Š€" (Š€" (Š€"àB@‰ÿúÒ\!$.ß¼i®ã‚¤�"AAË–*Ê:"ª<÷RJª%w€mm„eÛ¼·ïßGË!CpöŠäç+ ÑŒadõ۷qàÌÌ–h‹+²&›è¸}ï~ýýw{èÀýÒ]»IF�$‰/98Æ”âBÎ8í”�&�ÝH“ÅŠ¡sµjÎfá¾NÆTOÍƱR%còäà:s¦Iƒwî`牘±q#²¥Ní•è(%Øä2É›•Í“YRFn*©§‰èpDZ_Ö~¸rôŠîÀDð± ¨ÃE¦ÓØ�åüç»Ì+)£Þîß³ ¨Ù`j¹ŒÙ�?÷ú{äçx�¼‡�äÙˆ…ëâ_@¹4Ö˜Ÿ�^wñì;Q8G‹ÌgÖ_ÂÂß~á„B»+Š€" (Š€" (Š€" DJtD°OzØ#’V©…�´j ÑÕC4„'¢ƒ$ÅOÍš™~öÆѱáàA|4q¢iVSÒY½ÿÚkv—À=#=VîÙƒŠ „¨×ñù´iX¾{·é7¹S'¤N’$p o…)ë×cÈbyEV,E¢D ¹“\ö¿vîŒhŽNá½NµBÖö™¬‘–3mZ|߸1‰‰Ó¨O²íèQT.T(°ÚÑña­ZxUH¦'iJt䨚{§íÅþÙû#V x³(øíÉvMÜ…{7î!Má4HW"8.×qtÅQÄŠ i‹¥Eá…;Aì ÝÿyôöÍ܇³œÅ¥ƒ—7i\¤*” 9ªä@Ò¬¾%µ÷'¢ãôæÓ8±öÎí8‡û·î#u¡ÔÈ\>32¾�1Èú"úàß@tÜ8{ûgîÇ©�§ðÏßÿ Ó‹™�»Vn¬ül¥G�Ž=S÷àΕ;ÈP:Í?„Ó›N#M‘4(Úº(Ý{„­Ã·‚òĸt×Ò�ÏÀû±}Ìö@ˆwŒÝ�“ë-±ó—>)°ž…Ä›g®Ü5Iž·ë÷�8ƒÔËsêÑä¼mä6ó<3¯ƒvqÿE[u Ñ¢GC‘–EpdÙ]vÔÔ§*˜Ê<Y^ÎâqH»’sœmÿËôã:R?—Ú|nâ$Žc7‹ð}XœÆgŽkbËrräf�®^^©T¬ ÐQ¾rž%›D ‰üŃ.—)‘¶­¶¬þ: \:gE%0Z¡V3 µë§"HÇM+€c�d)dIé´y°a pp—Õ§F `Zöwnåçeõà¶*>/)Ÿ^’ì…Ô¶¡¾«4 >R�iÍÁµËÖš·®N•ùÒKÄa  jCÏí�#ø[¼BÔµ¨'DG3!#hMË•C‹—^ œÎItøs�'D÷¤©èŸÐ2Kj©ÑmÛŽZáI?ü Ú/À–a[‚-¯L·2X×g�©wŠ‘ï¿3šÌ0õ�¦ó™F'páæ…�£ØTÈ&z¬èh±ºÒ—ï¡›ý�îÜ8s¥»”F¢ô‰ðÛûâau³|õó¡Þñ²ÛOk8Í�2v�½'!R}XuC®ØuÞöa!:èx_Ü}16 ØHð9Ç-Õ©*WÙ\«³>¢ÊQ�è 4©Æ$ÜüK<ÌK–=RHeH)w1òþÙûãòáˈCHS!®lËð|C~�ß}Þ®BÎj9ñæ\ë;†÷ŸÏ�/F‚­é’¦�M)FOQú8‰â ëÙ®ˆ/Và9»plå1Œ~i´9¬6¤н[Ì”7ÙŒùmç›ò ¾€µßˆ7ßÍøy©ô­xt=8ÓOn8‰�f˜tinÝ�4KRÔ�R銧s?!Ǿ:�9Ù¸~À7�¬iqpï®U&QP]ȆÙc¬cn)œ½ú/—`ö©#@m P#ÑàÉØþ‹‘–cÛý|ã€?䫦äËâ°Ï L´ ŠŸ$HŽ$ˆ»Ú ´¬h‘*ÎsùäÖ. Œï$�Ÿ½ß¯'.VÉ-}_¾^è”w7ö*Ä ûz31µQ¹%oúž[/œt²…V¾º¼$0Ç*ûº½{èTX³0x�8òþõ6˜+${çUI‰%á2‚KðG8X×ðÌI2£‘ÌC㵎–�- ,wûr”E‚9ë}}fëýú+¦íÝ‹ò€T½­·%"•{{3 ûy[‡Ö+Š€" (Š€" (Š€" ç4c3 W�\ˆ3ºy;Ÿ‘4:¿+~-ÞV±k×®¡uëÖ¦ì릺¤‹kÔ¨‘Çæ/¦._bŠ_~Ç}�MdïÑQFÆkÜ¿¿‰’x9~|Z·®ÓÑAÁñ&éÀè Û²‹w‰ìÙQ8sf‘uÒ�ï‹…•èè9u*VÉ[ŸÄcÎ �8¿›3 3Ú‰tI óáNt„õ:çùÓwÞ<3nëJ•аLSöeã$:Bk¿¨Gĉ%žïpØý÷Ñ7c_ܽzפ j¾²9b'ŒmF¤ó˜ÎÙ{×Ä;)æ�èèt´’dNb¢B6 ²Níö¶CŠ<)°ô£¥æÍw’­~oeÆqnl¢ƒu$LHh0}‘m×N^Ãé�§‘·n^SÅtUSêÈkÑbÅÛÇkƒDçEœ¢4¦±Uv”q„3•T‹5âq Á|%:-<„ UÅ#*Vô�¢fN’4F"0ºdϯ{@v»=í Isúôi¤O<‚Åtò²yÿý÷ÑWÈ7OÆ·êÿ~d¥wá›Û¾ûØoä3Q Ï_‡óØnÕ«°âS˃\g|Ct˜†ÿsÞ™ƒm#¬Ï˜7¢ã¹·ä»it-ܾxߥøÎtµ£xÜ~€¯}epn¼°1²¿š=Ø¢ÑÁ”Z?eù ×N\3$Ù[Ëß 2Þƒ[Ð'uó jZµÇÔ<ï$:⧈�–Z"Y¶dæü�ËwðË ¿à¾ &2©Ó‘N®èÁaÄó#LJ/’1ÍW5S]ÙÆ4VÊ 3×Èh¨š¿Ô4§Þ–”w#F¸…5Ø�¼ìI°%Ý!w ËsÀèF)”ª dËR‹(&t’Œp·ÖŠŠ(%d‰„^ÀzïX32"ƒ©ªÊ‰CžÑNñ ðãGVÍ`ùz,']ÛŽî�ŠN—dÞ€Y@ÙªöY+b‚kbº¥­·\õ$HªæN¶œü£–»Ri1•ÕKò´Éw‚i²ªËœ#³Œ1f�<µ56¯µRfIWö—5îæ®9ÝK_w´"FìúOĹß0€\´ë¸'.eÆÏSX"V¬�…³Iˆå›Xä uÿAÈÜήæÎ(œnßͺ¸Î9KÄÉþù’6+¼sþ¯%0ãküîy÷‹lå=¦û©òüÔ’�!ï­ÓÂòÌî�±Qò·Ï„]»pþ–ëáï}%ù»‚Q5råB¬€¿/ü%,üíç¼.-+Š€" (Š€" (Š€" D”èˆ:÷wE¸{ú¾}&zc•hO8-§DL¼%"×Må_zŽ/g[–ý!:­Ð{Æ ,í:Æuè€tÉ’y�èà<[6}®:œ¬§%±î*ò&ÓHÅöBÈX-EÀ5 bäL¯UãÛoqçþ}ä-‘�¢)B£èy/I{A{¯JÔ))¯Çйa½ÎáË–aÂy…Yì#% ‚â�›è ¾ÁÌ·fšµÖ›ZÏh˜ƒ€ SZÙä…'¢#VüXèq³‡i½ià&,è°ÀD:|zÿSC@ü1êÌn1És%Gûýí�C›²“èhº´©Ñ ÖÈQaGV0]V—Ó]ÌþŽÓ˜×f¶ Ýbª:ì`" œç�e_‰Ž‘¥G‚i‡¨ýÑ~_{Ch8Ç¡£zhᡦªÒw•ÀôE×Eh¾[·nÎf¡–+W®Œ×_=ÔvQ­��#£�Hô8�©¬úfè ¦GóFtTîSÙhp°ßwÉ¿3QD/ñ2Ê~RÖ õc¦ 1QwR]äo�ß9¼)‡…è`‡UŸ 1Ós…h5DCÇ# Igêü<��ÈT6“} N¢ãÅ�^D…¯„ p5Eæ¾3×Ô4šß(PäðâÃ÷Ê8S_cx� &v÷ɵ&M¦^ûøº„Ýy7a¬]£°X!žãÄFËO#)V<¡EnØé„XW,¾å”þìg îÛV™u<7p¶ 5BŸðòyàÅ~ÇÝÉ>¢8ïYc´í)bÙ½‚Žg“ ÔtXÉunñ4+íkúNµtD\g�no &Y5ßÈ- „m=å:˜‹&Œ‚H“Ñ>cí{4wE²¬:ë"A‚¶R¡|ÐtLÖÏ•vo8×ú¦|ö¼�·šÓÇD÷#‡u_´þ7(hË3òóOb†V¿µ•ÂÊ: º]0Y0ihÕ-8hEÜmá:Šˆ9_B‡š´N_od•#kK=²¢GFÒcþÁƒx@&%ÀRI$k3ù-n%QXà÷ì)[L‰Ž0€¥ME@PE@PE@ø  DGºI §OÇäÝ»W”H\õóå3Ñ¥âà� B(øKtPp»Å�!F·€ÚÝjÔ‘èàHr0êa¥DXp^wc*©BFÄ‹ÛýTàqXˆŽ�âøø@œ†4’(Ôä Ý¸{5…¡n£Iú6mjê=a¹N§I�:uP© ¼"í£9‰ ¹‡”º*›DÄטˆbÑ´·zÓ,p:i=ñSÆG·s–Cß&5˜ê磫–Gk÷”ݘÖ`¤N`4ÌDŽ�Mt¤ÌŸmw‰/œ0i’­r64Y$¯8»™s½�“€W²»µpÚzoiµì–Œ(`ä …£éhÿ‡ê¿¶7 ÞdÒhXÀD¾Ø§Ÿö= Œ/žùÂD#} !zÜÍ&м¯ ~ÍDç°ŸMj8Ó? Ì3ÐwW*z­‹¹�°Œú)óOF0½|Ïò(ß«|à˜c^ƒ£+Ž‚ŒD™ÓœDGËõ-A-§QŒý‡´òª½XÕUQ¢} SÞÐwuYdʌ؈—<žë x~H–Ùi¾˜¾ŠX= cЍ7¬eC²|që½yP¯¨µšùû%ú!—ˆ†ñëÜV�ÝÎ^/·mQo:ào]·Î0 ’-L=z…*åí@Ÿ®–~CŒ¢ù!? IÜ.ÿ½ÚÀ2‰ò`Ú¬©²FÛ¸V®9]fà7‰VptF‘ÌÙdËkõ<¨œ pz­f’^i”=¢kïL»4[~f³çs�s–˜RΩïÁÔLž¾¿•Œ±?Z=ÿ7hÐÆ9JÈe¦âzx} 徤—µ»[™ä–h|åºò9úÕý¬ul¯!az¿lEæxni¥œ ϜĖ‘@|˜¶jò¦à÷ÇÛÜQÏÈÖ‰áA�²Ž¿3¢Éà=&P¢#"�Ö1E@PE@PE@ø÷" DGºw¶§½¤ä�ðæ‘ÔCŽv»�·½¿DÇë1y2Öíß�˜â¥šÜ±#6±ðÃܹf*:ë[Uúæ³s åÍ÷íÇŽa�ô_-Ñ)¶¹�¤{zWÒ>y³°L#Eb…6DÒÁäI'ž¨k7r$öœ<‰˜âAš-)­â Yä‰è`s_¯s¦ä ï·`�™¡�Ü šûjN¢ãC‰y5 Ñ ¾Îálgë8É çy B. ^91ODG’LIÐéX's~פ]˜þæô ¤ÆþÙûÁ·Õ½�oy_ÏëÒá0£yÞ|•PHÑhp¦øq¶t®—¢äL5åÍ|!:œÎkoã8ëÀH€ÿŠ]=~Õ�¼^'9á¼~[ÜÑQkT-<×ì9Óe@®¸t𜤣eHx?¬D'šðÚZpÈDs0Í#(x-ý²ô3ßA¿©ˆ>xÁyA":Þ?þ>gLä<Ó˜}ûsC 8I{}A‡pÀtZÔžyÆ4BŸ½ <+‘§Íà“ù°î¢UgkqÄ�l"ƒx¦¢nLjo�¿NZí¼m96ç°­ùË2Ž�Ô�` )wc´I“×[J4ŸDaИ’Šé³h>—´Hÿ³ÊÎmo‰œ ¨5Ó"mæ:…H¡9u5<éC°Íoho–$ñ&Àk �uyCȘ©Ö¼F^«¯FRæô1Ñz¶0x/’ …Ÿ±"mZïÜå»àmXÓäEKÏãùŠrŸ–xnc׆wN'AF-j‚C—DwéêÕ«¡5<Ïﵬ™ë%i�~ýYRLÉGk¨ÅÕ1i¾Ù_Zxçá‹­Ñû~ úâL§fÇøu¢U#_´LõD�ÆÈ jl�Ì ÉÀH�Éò˜P8œ:Lå4[ïÓ“ž¢àЦ9õ/(d]?àqûiš¤nzÝjãܾýФº’5Sô›âß¶õëüü•u´í¶¤¯ŠkŸqí?nf]#4–ŸrÕû[jQA„Õ—[½×JHR‰ÀðŘÌNÖRpïüMð^$AHLÐ>“Ÿâº­¬²sK"ªx"à®\/SH1•”7‹ˆ9™ŒéÁh‹�ZQ7ÖQäo�ÉçfìŽ#ÿŽ\¹8!ÿz-gN9 !IbJtB£E@PE@PE@Pþ“(ÑÅnû#ñ015…ÈJ$�mK� KÚ$’ùS¦´«=îÃCtpÀÎcÇb›8vŸqìÆeËb„èTÐB‹è0�6\ù?þˆó"¨K§Ý’O>1Q"Î6vÙW¢ãÀ™3hý³xî|0[PÝÑÁ!|¹N'–yE�zp+^'/ëyÜDÇÂŽ ±±ÿFĈÿ»+¯0»Ùéͧ1¼„xÎÄ"“è(Ý¥4*_Ùmöà‡ß§ùÔ}ÈÿF~Ô�,9ZÜ,Èz'¼Žopká:ô…è 85£HH\8ßÒw�â¹Ñbäžgyòµw¯ÜÅ7É,Ï+5+¨]ánvôDT":HšQ;„ÏRÁÆQg\ôÏÑ—ÿ¼lˆª†³º_F�ˆjµ$ÏÔSýðÎCôŽ×Ûôs¦ÄZÒ} ÖõYg¾ÓzÜîêËøb)FîË|lc§‚j-DÀ{Ö¥ qà�õ€ÓÉÞJH� K[kbÅ }Mk:Ù™šÉœf-¥^N\‚ƒÈ�ùV[nO øJ6ë¸ÏDIûå=çá|´ ²Žçž·ÊÔÞ mòF @ «lo¯HôÉKé¬ôTîº�ä«cÉt‹l éàn�ZšçN%xÜÛ…åØŽ¦`Ÿmw,m_úÚ-鵾ƜD�³/I¤/ÚZ5Þ4BîQ÷BV›~3€Š’Ì›EÄœ_´“û"Ï�3:ÈÛ|QS4¸¦I:L’«Žƒë/!I·–$ ZRÿKþ¥M˜þjmøÛ/"®OÇPE@PE@PE@ˆx”èˆxL#lÄSµð‹Dy0Òã„�N+š&�â|§hQÄæëµnætÎW“6]«WwkáY¤Ûn´íèQtc½Î›TD?¯ˆ�‡…èàXÝÆ�Çæ?ÿ4âæ‹„èˆåa­lç+Ññ‹D¼Œ]µŠ]P£X1d‘vw›¸v­YoIù5«{wL^·.�¨i÷Ê+ ¹m¾\'Qßì×Ï6ì7º];d–(_ìqëX�Å]å•g1¦ b**§í¿3šˆWL,*#J�À©�§�ºPj¼»ý]çRMyÇ8Wo:Ó”[¬m�Œe2kcW Ê7ö^ðêØ¶ÛõMß×O_GîZ¹Ñ`f»:Äý…è v:1¦Ÿb*wëŸ]„×#-¢cÞ»"@?l‹G] ÷µ8�—~¸k¿]ktiêÿZߤ³âù†s"Wõ\Φ¦ìŒèh0«r×̤͹�ÝRH<Îb5GÖDá…MyÛˆm˜ó¶0bmv´Aª‚©L9´Íã&:èܧ9ßæï'$@Å:AQB¢îÜ~˜"éÉê[«¶õ zÿ"Îóæ– 8Ŷ)ìM±pFq8mío@k‰¡1ÅSMÙæé¶5@ìsÜÿÒGæîn¥ÇÚ|Ã56SR15m¤�!¥$bÂiãû1§1ÝÓ^ÙfGWxsÂ/úUHí€ku^·ÝßÞ3ÒåÌqûH4 ºÉRºŽ�¥�ßri”„¤ùáìÃ2õNš–µj½i{ÔÌü¹ÇÒ™µË³öÆÜñÀ‡M¬q–“èÆLVÙÓ6"æ|S~6wüî=Ý–§yý©Û$¥ƒ6oÆt!9n=x8D,ɧÆèÖ·E;¬¢D:E——'ló—°ð·Ÿ=¯îE@PE@PE@P¢JtD­ûáq5×^|ø°‰ò˜#)èx·íx§NȘ8±}¸/ÑÁ�ÚŒ�}§NŽÉ‚“è8,‚ »Oœ@UqC¾6sI”€íÔN!Çáð)- F°­ÿL ‚ƒûécI‰õ5/�¤v~žzNëÖX0ÙJ‡EAqÛVÍÚV³Žšt'þOöฬµQi€Q´iÛ€<ïdŽ?mL·KÌÜä ¸nž¼*D £/Žì³®wþ�àk2ƒÈ†)µ˜Z˶�W�‰í£ {¦ÊbÊ,ZC‰v`t†»‘l:#ÄI†l®3çNI4Lë˜QŒÆpÚ¤ÁBøÈx´¯ÆÉÖÔ*»o�Âì ™r¸·p‡wNgš¬wäþvüÒ5vD—ܵÊrH ÀVò7F3Ñ·J)/]x2 ûyZƒÖ)Š€" (Š€" (Š€" EºcÄñë7\BÛ_�P«™EPGãc)3ÚÀ¶¥ÇEƒÉÁǼóªüv,½�25¸ÖnåÚ¿– 8&Žùj²Žoǻꙋº÷Jz«�*²ŽÝ›�¾R>yØj+¶‘߸·Í Rµ�8â¿ÒËXœ§û›Àž­Öµ~7!x*-{ •2ÛGÒ_¾Ìéªu•(ÐNÒˆÑ1 TlÛ xë}KäüÒ9Á|‰è¢|!©½^>èëêG®´ljàòy‹ úz,P^ �S(þË–FJŽüBÞüaÝWoW‰Ä Z9éßø=‹<â1ïoü„,YÞ9ï•Ê|ÖXÞôSì¹Â»'Ñ1Wþöx=o^½Q.sæP?úþþö ï5jE@PE@PE@P�ÈA@‰ŽÈÁ5ÒG_ ~—h‹bâhgJZ“�qòâESió}“&(–-[¨Dçh!GÏ‹G&À<ö9oûô’^jÄ»ï½om|!:fl܈þ š!š•/þód7îÞEÍo¿#aRK.o¦î ‰èí:í9%óÉ”)8ã<·ÏÙ{wÆItØm¼íIFu¯YÓÛiŸë�,=‚ Õ&'-;ÑÙïæ=Ü»vÏè ÐK‹ D×±¨ó"løq‹Æ’fIŠ›ço‚z´„iâíMo’¦ÒÆíæˆk'®;ë|#Ÿ'™~h^Ûyøû�E'uâ ‰ rïºxZ¬Ýžvÿ9¢ƒÉðÇV‹#ËŽMÃgèêÑ«&Z‚¤#["‹è ¹0 ÷\=&žx7ËV9š,jâVë:Ü5q¦7šXáI{Ã>é$:b'ˆ�û7ïb‚š7Ί']Œ‘!M—4E†Òìnf÷ê]Œ©0g·‰w^ŒÑAvš¸«Ç§¿ù­ä«—õ¦Ö3åǽù¦0®Ÿ•Š© h}ºJê½$¥U9Ù¯4Uð©å�Ï_˜²Éª[:SÈIueSBñg†d :Ñ]‘D" Ö¹ýä¼(©ž._�ŒBŠHº)§Ý"…©³èxï.ëx«³ó¬k}Ak­ôVÔ¹)mFr0¢Ãi$GªåN³jIàpÍÿ²ŽID0Ý of>öyСө’�úø¾›«çeÈ Ç£ë)*ƒñŠ·�Äν;Vš1ÖQŸ„âñÄ×›1¢†Z7¯oñî'’NLH§…gÎyB}ÐØm‘|-�DŠ,Û%¿³éä…�dqãú<…;aá~lä^ï~l·Ó½" (Š€" (Š€" (ŠÀ¿%:þ�÷Íãª[ :ãC³~Íš¡�¼%9eýz Y¼Ø4ïXµ*j—-•¨�Þµa›“`8'iX¦ÿþ;ÖH$ÉY‰.q7¦vªY¼8Iä#HB²¯fÎÄb¥MëÜÙD‰¸·ï9u*VIÞnÁCŠ~h7r¤I#ŶSÝâÏur ÛH¢ô�7ÏèŽÜ”²ÓÒHª¢†eÊí»~‘\Ó×rm¾5G:W«æKÓPÛœX{¿¾ñ+nœ¹Ø–B­1µ0ªì(SGñoŠ€Ól1#:îhêöLÝcÆ “»ó)Ë#ypž¼í_}¢qpùÓι¡ ôõS×Ã$ôÍþ[‡o5Ú"N’�õìU²£ÖèZˆŸ"äçÇ^í ·°¸Ëb_}t8ÛFýê€8� sß™‹Ó›Nǽó\²lÉ�»vn”û¤â$ÏîÌÝjel»ÝD×ðò£ÇŠŽ’J‚ç6 ÜdÄ»I$ØÆ´QŒÐ©=¶6 5)dªåÝ”}Pcx iUÄÔý\L"޶žA•~UPò½’v÷ {ŠŠ“ˆØ1f‡!8'-4¢ƒ$5F˜2*}©ôhµ!à•÷ £[N¢£ÅšÁ>/$.êO«�´ÅÒzè-z2#ŽÖ}¿÷oÜÒ†äP¶ŠÙÀh�Us9÷¸l�qêLtùΚ•ºÔ×hú¾+Ê “8ô—Ìê‹ã½çP×êFJŸÁŸwo»ê²Ë[ý½†ƒzYâå¥+Iš*ë'Ä4"ÁA¢ƒö¥|ÍÔjfŠ�FgP �6z….åM1pìŒÃz á"ë ©BG?#CÝñ~]àü+rá£~�] ŒÞø¤¹%´nW’!1B1ö—jصž÷ÎTTlAñvö ͖϶RMQèÜiLÝÅÔT�¿˜Ìi¼Îq?Y©¯¨¡bÛ•yè1ÀŠö°ë½í‰ç°/%be‹Eê<²>&† !Qã´ðÌi§##!³á²sÔ¨Qv',Ü�íUº×»Ûít¯(Š€" (Š€" (Š€"ðïD@‰Žç}‹r«¾ ÂéüwéÆ ¹ÁHŠTòÏ]Ç"Ê-ÜÏÉ É8+‘G$Ú%nìØH):)Œ\‰æçx‘Õ�i†Îï9�”ùS‚Îû(m*E®)(/E<¤*� |Ó>²�‘ tÆ3„)®gJl¢;"{ÞÃøÄæô!‚D�‚Ä#¢²Q[„é«hNrÅT¸mœDÇ'w>1ÑNÔ߸tà’ù¼�ôóÉä¹e:4>·ŒäH”AÞFϚ̤Žó©nt]økj}Ü’¨�‚¥€¤Éßb‘0‰5ùõ%â„6j¹D…¼d•Ý·Œ9sÜÒã Ñ�¿˜ªûà>œÏÇœ—:LñÄTi2Zš¡ÍÍj‡�À¡6JºÌ>OéwÃ'1§ß‹õ±£¿„…¿ý|\–6SE@PE@PE@xÌ(Ññ˜×éE@P"F1êˆY׳]C$Ê<‘³*5¼´“hŒ•s­�Õ’ŽŠ:"jŠ€�€¿„…¿ýìyu¯(Š€" (Š€" (Š€"µP¢#jÝ]�" (Š@¸}ñ¶IѶmä6lì¿ÑôdJ,¦Æ É”è �ÇŽ‚ãönØÈœËÒ¡H?IE} …Ñ봰ʺUlü%,üígÏ«{E@PE@PE@P�¨…€Që~èjE@P€Àç±>7zv—乓£ùêæ¡êº(Ña#5öõ%ÍÔž­ÖZâ�q;�kï¡Mýùo oúôømûvLZ·.°ù»•*áùœ9�íÂÚýû1|Ù2sX»D Ô*^Ü>eöç®]ð%K°þÀÜ}ð ðIŽü3¢´ŒYÿùç-Z4œ—¶mGŽ„xÚÛùR¨R¸0Z¾ür°¦cW­Âœ-–³;v¬XÓ®]0Â!¢®““?üûoŒY¹¿:„£çΙcÖóڞ˜uK–D™Ü¹YelÕÞ½°p¡}â¾C•*(—7oˆmÂ{òÖ…[蓲�æõ‰¯£@Ãáò‰õß;}/¦ÖÏ››•êX ¯þôª[mÔ:|!på"#&°Óõ‘ u‘“½Û[ÍH�´îj—o0¿Ý|l¼Ïæ|tˆðñï^¹‹;Wï æ31‘0MÂÿi0*<OŽq ó')~" �%ågëÕú@ôHæÁß(ìÞ ”¯ š|=QS¯(°wðrM`À¬°�x÷6pñœÕ/]fþn†}Œ§¹‡¿¿ ¡aâ/aáo¿ÐÖ£çE@PE@PE@ˆ,”èˆ,dŸÀ¸MÄÉ‹â= žoÒŲeÃø5k0"€À`—ÜéÒaèÛoë=oëV|?w®©oR¶lÂaÏÉ“è¨Qç¾#œêºE!¯'Oa`Ü nü�Ûù{ö‘üüNðÞ] mO ]/GòÞïÁ}kî9>ç «9ŸÛ߯ “„u„§»½O÷ýÕ«SE@PE@P�ÈG@‰ŽÈÇø±Í0W‰Ë7ošù.H )´l©R¡¬#R ÊsÏ!¥¤Zr'ØÖ&AX¶ÍÑqûþ}´2g¯ˆÇB¬€Do0"„‘ ×n߯�3g0[¢-®Èšl¢ãö½{øõ÷ßí¡÷Kwí $i5’$~P�#PŠ 9ã´SBš4v#Mj+†ÎÕª9›…û:9S=5<ÇH•ŒÉ“ƒëÌ™& nܹƒ�'N`ÆÆ�È–:µW¢£”`“GÈ$oV6OdI¹©¤ž&¢ÃÇ~YûáÊÑ+Jt¸ÁÇJtD0 ~ çt?©È?–ýTvy1pù<�A~ž´±.‘ÄÃÙ“À" 8»ÀÃ3ú*,iêÂÖ½;À/}¬@ÉŠu€œÂÒÛ·¶ûþêððg/Õ𭟳ÕÿZ3~‘H—Œ’‚ÏûûÎ.ÿ©²ÿ©Û­«(Š€" (Š€" (‘€€‘jTòˆ¤Uj!$­šDCtõ á‰è IñS³f¦Ÿ½ñFtl8xM´rvÔ”tVï¿öšÝ%pÏH�•{ö b�!êu|>m–ïÞmúMîÔ ©“„þªç”õë1dñbÓ'E¢D ¹“\ö¿vîŒh�+€G¢#,×É¡VÈÚ>“5Òr¦M‹ï7F"Ñ!qõI¶=ŠÊ… V;#:>¬U ¯ Éô$M‰Ž'‰¾knZQÁÁ­D‡ë>>©RTxžÔµG¥yÏ�–4N¢‰A{ã]àSë'ת�ízùyzûë�)¬~±2@žÿ7HP�¨ -;aétXG¾oI”�0ñ7õ•ï3ý;[úû»ÚÕú›‚Êß~¡­GÏ+Š€" (Š€" (Š€"Y(ÑYÈFâ¸Ô‰˜/ãwîÄ0‰^H7n°ÙÂJtPc‚Q 4¦^b &Û)òC@êªÆ/¾ˆV*˜SãV¯ÆÈåËMyp«VF÷ÃîÖ½?DGÇQ£°CÒH1:¥n©R¼ÈÊ2ì�w�KÈÛœ„Ž?×ITZH4ÇÑóòÚ®ØIïRd†i°y’DÇŸ¿ý‰ã«�ãÂÞ H‘/²VÈŠ”RzÔè¸rä /9Œg’<ƒDéaûèíøûÑßÈW/rTÍ�½Óöbÿìýˆ+ ¼Yüöd»&î½÷�¦p¤+‘—ë8ºâ(bÅ�…´ÅÒ¢p‹Âˆ� v�îÿ<úûfîÃÙ?ÎâÒÁKˆ›4.RJ…Ur iÖ¤AÚz;ð'¢ãôæÓ8±öÎí8‡û·î#u¡ÔÈ\>32¾ ¯G¢ùëÐzœîgo`ÿÌý8µñþùûdz1r×Ê�•Ÿ­ô¨Ñ±gêܹrJgÀ¡ù‡pzÓi¤)’E[Å£{�°uøVP@ž—îZ:ðxx÷!¶�Ùˆöޱ;pr½%vþÒç/Ö³�8cbóLØ•»&Éóvýg�zyN=š|€·�Üfžg¦ÃâuÐ.c«Ž!Zôh(Ò²Ž,;‚£ËŽšúTS™ç ËËY<iWrîƒóâ¯í™~\GêçR›ÏMœÄqìf¾Ëspæ8°ö7 ¶,'G~`Öàê%à•z@ÅÚÀJÉJ¸rž PO2æ*Á¦*Ú¶زøë$pI4’< dÌÔjæÝá½ipì �Lôhe°y°a pp—Õ§F `IïÐܹl”Ÿ—Õ €Û¨ø|%‰"¨niÛìÚ$šÑ�* <ë<\»l­yëàÔQ™OȈ¢aQµ¡çöÎU0cæhWMü„2Ï®cg‰Øµ ˆløìg‰xüœÆŸÔb jS}+º×xx¯<Ûɬ{Â{Cìxíÿ2åqñw€ôn_¹Ó†ò§@³±RéáÀl© Äç.iryž$JÅ—û¹}½u¿í%|ÙAt®%Ê[÷ήçžÚ")]?Û¸uÃ¥}òbëù]5ßÂåïG@¾b@ö@œàþK¤5 Ei#pò°uS¤Œ÷ç&°£Ì=�ûpæÀç)YJ¹Y¬uæá}…ëà:o‚õìŸ=ÄŒ¤H*”«$Häœ%hÙ—ß…Ó7n ³ü­ó–¼PñjöìˆîƒÐ‰¿„…¿ý‚^•)Š€" (Š€" (Š€"ðøP¢ãña^½Š¢ù0ê�?p6 EÕq‰~È(Ž~w +ÑñFéÒ&õÒƒG�Lú©¯ß|3pHoDÈm1óNÍá.R8€…°×%5V­>}ð·x’¨kQOˆŽfBFК–+‡/½8«“èðç:OˆîISÑ?¡e–ÔR£ÛŠwÅG{DÇßÿÆ‚ö °eØ–`«,Ó­ ÖõYgê�bä;ÇïÄŒ&3L=E é|¦Ñ \¸yaã(6²‰+:Z¬n�ô¥^e¶OÈþ‡t?àÆ™(Ý¥4¥O„ßÞ«›å«Ÿõ¦Ô ¬eûi §R&°2 @B¤ú°ê†\q?ç~¢ƒŽ÷ÅÝcÓ€M�Ÿs¼R�J¡òw•͵:ë#ªì‹CËÓ\aqp{êïk  I5&áæ_7ƒtI–=RHeH)w1òþÙûãòáˈCHS!®lËð|C~�ß}Þ®BÎj9ñæ\ë;†÷ŸÏ�/F‚­é’¦�M)FOQú8‰â ëÙ®ˆO¼Šnvlå1Œ~i´©­6¤н+R±ÍC6c~[ñœŠ½ðá Xû�xóÝŒŸ—JßV’‚Û 9<¹á$f4šaÒ¥¹ŸMš%)êN©‹tÅÓ¹ŸŠ�ã°<ãúßt²¦�óŒ¥ãÀ#Õ…l˜=Ƶ¤X±…Xçz¢nñÔ ¶¨‘hðdlÿÅH§qð³�_þ�¯F2d'ý´AÛÐ?ûÓ4‹ z8´hYÑ"UœçèÜ.\Z¢ôú‹ÃX~ö¨óàîç¥3ü}ùza:'wcß¡ ¬¾îçìc1µ ÚG¢]%Ní鸎�¥ÁŸÉ‹½¬š©òu›¯¨ó¬å\U!š§ˆÖ¿]Y"?–Èu‰¾ew ãëɧ¥Í,9檡½¢Ô¹Ûó‚Ù+$óÛF‚Ýö BR¼$$W6ßîg[!/VÍ i5®sÄØI lX ´’�í߀Ÿ¿t¥³j-¼'ýĈi׸ö$8z4þ ±¯aÀLÏÏÁécÀ�äÙ’Æ›MÛPwÅÝøYð?’Æý�™î‹i¿¼™/¿ {$}fþ€¿u2Hk‹Â…ÑRþbÙ›ùKXøÛÏÛ:´^PE@PE@P�ÈF@‰ŽÈF8œãßâaö�.QK��Ë}(oÕ>ó ´o�”nzœ2¬DG»W^Á Ѽ˜+š´‘mÚm–½ „pùn¶õ¿öôÏ>‹ÏêÕ3ìV +ѱhÇ|=S<bŸ×¯o4HêõíkÒWQ“„ë·ÍItøs�›ÿüÝÆ�7ÃÕ{þyp _ÍItPÈ�:ž,†x³Êº#–ÿo9V÷^m†âìyêä1o½ïš° ·/ÝœÂÑA'm¦r™°sÂNüýÀze8aÚ„æ�ùãv˜·ó½ ~ÛDGú’éqfëã f™ò›goš7ès¾–õ§Õ·Ö!ôÐ"CÍñ¬ÈòRd|1#n_¸mæçó´·–½…ÐÞ® Ñ1±úDœwЌ̓\5r!zÌèæí|F"Ðèü®øµxÅ®]»†Ö­[›²¯›ê’.®Q#ñ˜y°SZN;¾í»ã¾‡^ª& z·³NvÇß;{iŽê»WîâÇÌ?šg†¤EÁFñlŽgA€Q¶y%:Äóœ¿a~%s~�‹Üàsxíø5ó\�@ë~¡;â&‹‹û7ïce¯•ö°&ˆý]ÄH §%Ï�EZ¹ê-4¾ŠõÙ¬=¶6 5)älnʳšÏ2J$Aºžé ;ÒÂIt°a‚T ¡3nLìýu/.ºdú¿úã« ñå4F¹Œ,3Ò:1bÇ@ÁÆÁµ1‚‰Ñ)ï<4ót8ÐÁŒË¾#GŽÄ!‡}5FŸ�’¨µgä{ÞÝÂò|ü–�c­Š•µ"f�v�Hò ¿ü›2ÔªûJÎÕ”>´…S€® ,⣌8ä3åHn0 �÷åãIò„z |ãÝ6F”Lì"HHFð�ý¬¹å�üÀîÍVKO$Â�ÉÁ·ñã%�~Õä·.¹üÉm¾qÕžÁŠ %c9�oÒÜÌ" ¸F€D‹.$Átë­|¶mú¾8²û:{-“øá¶Õia‘9ö±sß¡°\~ù9Þ,Œš±�i­: iÁh:âgÊueËkŸuímçvæœ= 8ÊO> R=pþŒà¼ÊrÌǽmlG²‡ö�`=Vˆ‰’ÎßZeO[±eEqñ£32…æëýû£D�²ú0ºc‡�´Æï%'8Þû_[8Z-äóòÐ÷û ÙC¢àæ5Á|ŽëY0ËJ…åj L|%s0¢†ÑŒä¡-œlaʲ'â‰ÑK5óÇÉúb™!_5üÌ0Ò„ÑIKgXÑP›®–_ cw ˜‡Ïû1b‰ë%Aôû2¹?r=�¿áìžÍ—ß¾ðRHÒ’Þ�4ÛÕÁ获…ð¨&Z`1Éb:Ì_ÂÂß~Ž©µ¨(Š€" (Š€" (ŠÀcE@‰ŽÇ ·ï“Òa¸DoŒÙ¾$zÁ6þ‡¶bÖ¬h.ZµrçÆ31ŃâÁü!:ÊÈx�û÷7Q/çÏ�OëÖ5#{#:(8ÞD"]a[vã.!ÿá.œ93ŠÈ:éÀ÷ÅÂJtôœ:«öî5iæ|ðˆ3ð»9s°@0£M‘H—T:îDGX¯sŽ�?}çÍ3ã¶®T Ë”1e_6N¢#´ö‹zô@œXâ1 ‡Ý¿q}3öÅÝ«wMÚ æ+›#vBñLŠÑyLçì½k÷̱7¢£ÓÑNH’9‰‰ Ù4h“iÛno;¤È“K?ZjÞ|'yÑê÷Væœsc¬#aBBƒé‹l»vòNo<�¼u-�ÓUM©#ÞT±âmŠãµA¢ó"N/ÓX�*;Ê8™JªÅñ8†`¾‡„ªâ+úNQ3'I#]²ç×= »Ýžv†¤9}ú4Ò§OoÚøºyÿý÷ÑWÈ7Ovﮤ�ç!?!¥^qïË>ìK£SÕÓ›ÌÖYÿ·«¾X…ŸZä:ãë¢ÃŒ&NÃ9ïÌÁ¶ÖgÌÑñÜ[òÝ4ºn_¼�ïRˆ·RÌŽâypû¾Jô•Á¹ñÂÆÈn¿înZY›¹­çbëÏ[A’Žø‡dL©õS–ŸpíÄ5C’½µü­ ÍÜz€>©û˜g¨PÓB¨=¦vày'Ñ?E|´ÜÐɲ%3çï\¾ƒ_^øö]0‘I�ŽtrE÷#žaRz‘Œi¾ª9˜êÊ6¦±Vl˜¹FFCÕü¥¦9õ¶¤¼1b„Ý̧= ¶DÞÔËsÀèF)”ª ÎcyKžÑL§D’‚ãÖZŽëRI-çq¯a@½w¬å1"ƒ©ª˜r‡‡ÓFˆÃöÇ�¬šÁòõXN>º¶Ý/ÚPy¬#’tF—­jŸµ"&¸¦gâ irËUO‚¤jN+‚$Ǩå®TZL·ô’|m²Ã�° #ººÌÉ1HŒY$Om�Ík­”ÙJÅqIJx³¯;ºH¶ùDœæ ½<†2Zé¼Hö¼ÑÆ‘s�>*©�VZQ%¼F¦µªæ�ód*0Ža[®BÀ×cîmãu1µU!U<™ëïÅÙî-ÍVx°åü5òY³‡å~:×û¹àC2�¤ÁŠÓÎ3žË$ØH´Ñ˜ºê)3��„#_h]ä+¦E7«Ì-STÕ,`aÏg¾Ÿ�\Œþ¡ñsÓ^pd” É• —�„I¬sÜ.úUˆˆúÖ1û1åšÓ%´æ7©w}�ž~óy‹Èaê7¦(ã3á´ƒ;eNù¾gú8oæëïÂí0}ß>Ý»òر /À¤I�Íå!ÿ²&•µ˜¿„…¿ý¼]ŸÖ+Š€" (Š€" (Š€"Ù(ÑÙ‡aü»"ÜÍÿ¼2zc•hO8-§DL0'sSù—ÞƒãËÙ–eˆF+ôž1KEûƒ„ʸ�.Y2¯œgËáæÏÕ[oOˆ%±î*òŸm¦‘Ší…�±ZJTFÄÈ™^«Æ·ß⎼ј_´DЦ�¢ç½~O…Ø{Uª NIy�RÌ�èëu_¶ Ö¬1c}$‚⯄APüqÔ7˜ùÖL³ÖzSë­s°aJ+›¼ðDtÄŠ =nö0­7 Ü„˜H‡Oïjˆ?Fý�Ù-f#y®äh¿¿½shSvM—65º Á9*ìÈ ¦Ëêrº‹yÃßqóÚÌÖ¡[LU‡ƒLd�ó¼³ì+Ñ1²ôH“vˆÚí÷µ7„†s:ª‡�œX¥ï*�é‹®‹Ð|·noš³ƒ—råÊ•ñúëÞ8/m¢bµ�£'¢�©¬úfè ¦GóFtTîSÙhpðÚ¾Kþ�‰"zù‹—Qö“²ærÌô£!&êNª‹ü ‚{ýÂBtpÀUŸ 1Ós…8.£¡ã‘ކ¤3ÉÆùy !‘©l&ûT�ÔU/~ô"*|%^Q‡QSdî;sMM£ù�5@/>Œq¯Œ3õ5†×abwŸ\k²Ñ´aêµ�¯l>;&LÀêÕâ ƒõâ9Na´ü4:N‹‹s˜äÆ—£,M Ö‹o¶®�à¬ã9¦Öá›ó¡Ùåóâ€àw¾Þðµ7]=æOº8öÛö‹^®s,Ùdu)Ö_r�[<ÍJ;Åš¾S-Í ×Yyc^æX0ɪùFn�3eVÏ·­tJt0Ï?¤qìÁ4F³F[}W�u‘ V�kÛ¬¼¥?a×LXríqÂhŒ�¬t%q2·¢<µc4£Bh$fŠ3œú'a1âA\h¼n’<ž,<Ø2RæƒÆÖ¨a¹ŸÎu4�Ÿcj«�4l}¬œ§ƒ•Ix1²‚š s÷Y{»u0ž—g‡öq Q«Ì-Sž1z‚ÏÁ!h¨«á4'Ö˽‚¶A½dmŸYGÔ!áܾ??EãYäá›íåYàK¯ˆisL"<ÆJ„ëhy)†Ñ¶E“ByÙ„Qûäï+ZÏžòa ƒ)Ѱ´©" (Š€" (Š€" D ”舷ÁZDÃéÓ1y÷îÀ%Wý|ùLôFi‡8x`ƒ þÜn!i(LNí‹n5j„Htp $9õ°R",8¯»1•Ô!#âÅŽí~*ð8,DÇFbÿ@œ†4’(Ôä Ý¸{5…¡n£Iú6mjê=a¹N§I�:uP© ¼"í£9‰ ¹‡”º*›DÄטˆbÑ´·zÓ,p:i=ñSÆG·s–Cß&5˜ê磫™1wOÙ�i ¦!AêFÁT:66Ñ‘2J´ÝÕÖqÆsqpþÁ&Ò$[ålh²¨I°FÎõ6þM"^ɬ�]a;è½¥Õ²Û1¢€‘/ަ£�Ïz 7 ÞdÒhXÄé¿b$0¾xæ �`ô)„èq7›(òFt¼6ø5�Ã~6©áLÿ40Ï@#Ü]m¨èe´.æ><ÂJt0Jè§Ì?Áôò=Ë£|¯ò�cŽyy Ž®8j2eNsFt´\ßÔqÅØHûƒ©ª: *J´/aÊúnÀ¢.‹L™ñ’Çs=CÏÉ2;ÍÓW«'aLõ†µlH–/dÈìÝ&E­ÕÌßo¥H:&ò×r[uv;{½�¶E½Ïý�ëÖ:›í”X£W¡RÞîôé Œè˜þgµü$¸;ïß« ,›e JO•5ÚÆµrÍé2¿¶"žìsÜ;£Hæìq¥‚bЧÊâÐfê¡ZÍ,RÇÙ�e¦3¢6m¶üÌfÏg•Ý·—/XÑv}ªt²¹w£®õ5hš¶ÅÂo >Œ²8!xÓŠ—ú ÷lëžXµÖÖéX÷”‚ÉÙÖ[ù{ùºõ½í°ñš©à©­¿Ør¬ïºH„Lß°ßO{$ÚH¸‘Hkó©DU� öy÷=1,%‘üjnÚIH–ƒ¶` ®:ÏYuÎh"êr¼[Õªo× )ãnx/—ƪu�ÚX1GÖVÓ:Gm®³È î#x>®[Ø÷‡iÇôa5åÏO÷Üsïð× TX-/ÈPÃmšü-vK¢>lëPP¢ÃFD÷Š€" (Š€" (Š€"ð´" DGº³õ$�ÿAµíy#œ)’zÈÑn·ñ¶÷—èàx=&OƺýûS¼T“;vÄ!~˜;×LEg}« ¼M‹‹òæûöcǰFú¯–èÛ‰Ü@Ò=½+iŸ¼YXˆ¦‘"±B"é`ò¤OT€µ9{Nž49ªgKJ«øBy":ØÜ×뜹iú-X`fh#÷„‚澚“èøP¢A^ C4ˆ¯s8ÛÙzNrÂyž‚Ѓ 6UžˆŽ$™’ Ó1ñ,‰íš´ Óßœ„ÔØ?{?ø¶º·ñm¢#ïëy]:f4Ï›¯ é  Î?ΖÎõR”œ©¦¼™/D‡Óyímg=# ð_±«Ç¯Ò€×ë$'œ×o €{#:j�ª…çšY^ȹàÒÁKp’Œ–!àmü°\Û„×&àЂC&šƒi¦˜þŒ×Ò/K?óTñ›ŠxრK'Ññþñ÷‘8cbçe²çóØŸÅIúØë Ò8„¦Ó¢öÌ“°©Ã$¢à]àÙT–È8×0s”¤cja‘ë.Z«²µ8âÆ—”KâdfJ5¦ùaª¡â´eŠ¥�ŒæœÃ¶æâ$Þ´ÂÒ)` )wc)’&¯·”h¾ÖY¦¤bú,Z‡ÏÅaý?«ìÜönPˆ�é 6s�„SWƒâÔÔFp7ŠDímÕn¹\cÁ½}hÇ#—¾Z­F¯´ gŸ�âd"×A£`;µ>Ü­�Dά”ŸVAk„²¯Ç½]HÇvCÑ­”IžÚ†[Ž×ü%+u'|½ŸÎu8Þ}!t¨ÿòV9k¦/£x¸Óf�–ßïæVÍry6S¥·ÊÎ{ìlï­ÌTnLoeI½—30g„LÙ×€f�]óØí�{ ‘cýtšjF”pìBx¼RÏ;å#"Ê%•(Óž~,‘¨¶õ ((Ña#¢{E@PE@PE@xZP¢# ÝÙ‘ò&Þ§+VàÌ��«Š#dCMÑÎ`ÚªWDû"†¤gñÅÂCtì=‚6Ç›iê–*…L)RøLt8×¶VÈŽO„4¡¥‘\Ñ“„4ñf¾ÿÈ'¡BK+ã2e�m§/_¶‹Fc„Z#Þˆ_¯sÃÁƒøhâD3nh„Màä…ÇMtLy} öÍØjt;/¯úºÙÕcâÈMšG¢C´9¨ÑAÛ=Y¢7D¯"aš„èr¦‹©;0ç&Õœ*ÑZT3ѱ%z@^Û-Ù¡$ªô¯bæpnœŽ÷JßJ©îeœ§ƒ”}!:œÄIÎj9‘£JŽ c¸$JŸÈ•s�GŽq?âq2Iû–4 Gzˆ £ÐÉs»ÎaHÁ!fEÔK)Þ¶x°ÕÍj&âÞ"¸í•è}êtÐæ–è�á$©†fôW"’èpj½ØÂõ¶ÖõW:Ÿìl;çÅ8‰Žî»#Þ³â=w³/â|�G÷™ôTLSE³‰j¸ðB³Üµs›ÏÐ%Ñ]ºêH-Z?~¯e•È´ðX¯ÖÀ¯?[C-®ÖD50º�i•†/¶F§è3ÅŸ©Ù1~�õ&=É$hѦÆÉ ’ ŒÔ˜,� ߬§SA9ÍÖû v5œvM¾¢K‹cŸæÔ¿Ø#Üuý€Çí§i’6îu«�sûö+’êJÖÌЉ\gúõ~þÊ:ÞvÛ³îÍÇͬëa„ÆòS®¾þ–º¼!Q'S-öïWE"QБñBM xScÂÆßÙêe9OÑrŠ¿5ÚyÆ÷2±$¦MäçõCë«=Xçð`˨ ÞOŠj‡å~:á$¢–�R ™’Q\ýÛ÷-lI¼QWÅiŸ0H–B¢ó®3m„�X-Ï9µ‹œÂð®AK³vº"qì3ŒèùùK‹ä£ÞŠm$.:|!¤OW»&èž8‘„㺨«â´<…­”p¡]·³OXÊ$wÖy!…šnóäïÛ–1qb´­š6*ºWE@PE@P�§%:¢Ø�}$ÿ[ž/ÿQåy å?®<¶-µˆL6–´I$=ò§LiW{܇‡èà€�ÇŽÅ6qì>#âØ�˖ň€·C‹èp.†+ãÇq^þ“M§Ý’O>1Q"Î6vÙW¢ãÀ™3hýóÏv·÷¶ º7¢ƒ�}¹N'–yE�zp«V!Îë<ù¸‰Ž…bcÿ�ˆ'þw÷Î¥˜òéͧ1¼„EbE&ÑQºKiTþ¾r°ùÝ+¾Oó=¨û�ÿ�ü¨;¹®ûiYï„×QàÍÁÚØ¾§f ‰ ç[úöÞö-Fîmž']÷Ê]|“ì³ jVP»ÂÝì艨Dt�4£vŸ¥‚� ¢Î¸:蟣?.ÿyÙU g7t¿Œ ÔjIž;y�6ïuåëPÛF?*�ô„à 2d¾}8%|à+Ù¬ã>ÂWuƒžóp>šS#Á©51y#P „ÕÆÞRã%!)˜žªA[Y“8•më$_K¦[š ÔVp7¦Nª”Ù"œ�{»°Û³‹hö!Ï=m±ò|Å„ Û´ ê/üŒßm‚ž÷åèÌqëºØ–D Ol)îýª\#-,÷ÓêammMj^xº?ζ,ÔTô5ÆYz#Ôq·Æ/È3¼N3ù‰¾Èu–)©˜šÊ!ãjå[éöMKëƒQMëdþ)F’�ÑK¶(º·‘˜ºlÁd‹,¹tÎjÅ%F*E¤mÿë/£Í1q×.\�HÛbJHVõœ9ñvÑ¢òY̆/>·&V¢ÃFH÷Š€" (Š€" (Š€"ð´" DG¾³§$já‰ò`¤Ç‰€7òìåM“Í$ Ò;òÙØ|½ÖÍœÎùjÒ¦kõên-<‹tÛ�¶=ŠÎc¬×y“Æ��+bãa!:8V·ñã±ùÏ?�¸ù"!:byX+ÛùJtü"/cW­bÔ(V D¤ÝÝ&®]kÖ›@R~ÍêÞ“×­ $jÚ½ò (Fn›/×ùP¼zoöëgöÝ®2K”‹/ö¸‰Žõ?¬Çâ®òʳSP1•ÓvŽß‰Mf˜ª¨@tŒ(5§6žBêB©ñîöw�K5åãD\½éLSn±¶2–ɬ�]1(ß \Ø{Á«cÛn×7}_\?}¹kåFƒ™ ìê÷ÿ¢ƒ ØéĘ~Ši¨Ü­v!_Ž´ˆŽyïŠý°-u5Ü×â<^úáR¬ýv­Ñ¥©ÿk}“ΊçÎiˆ\Õs9›š²3¢£Á¬È]3w�6çvJtK! [«9²& ·�ײŶ�؆9oÏ1å6;Ú UÁT¦ÚæqN][‹€E ‰<¸s øaŠ8°ë[«.#è«—€Þ¿µ›[‚àmæ[ì §ƒ×ikZW±jܸN±g[ÄÙ÷—>2ww+=Öæ®±ù6Çý¢_…Ô ¸Vçu;Û°ÌH’¶Ñaž,¥}äÚ;5$ˆ!Çt·³¹P1“UK²ˆ¢äN£óü�W­oé¶œí=•©sB½…Ìs°ÊîÛð`ëÄ.,÷Ó¹†¦e-�_I¦šù�?÷I&_Ï}&9G’H@y†K&HD´úPžÕ¯]çYÏ{cv®3á+9Ó�95AB•‘6$ý˜:ŒÄ ¼ðÚ�‡1TRwR||§›&Z6‰ lY¤ˆÑuã‹1¶ù+*îo?{^Ý+Š€" (Š€" (Š€"ð¸P¢ãq#îÇ|×^|ø°‰ò˜sàèx·íx§N`jw /ÑÁñÚŒ�}§NÚIt–ÿdï>qUå?Öž Fr4<·îÝCÆäÉ1¶}€+ȈÖ�¯DGË¡CqXÞbŒ."ÔàHèA¿ä›Y³ð›8h$ß+©¸ìˆw¢ƒmB»N¶qêt”�b½4@ì˜1y*Ðî‰ø'õA(„nÛã&:Ž­:†ÑåG›é+|)oäô�üq•ÇáðyEW,*N½ƒÖÛZ#May%×a¶˜4#Tºœîâ1½�Ý|bµ‰88ÿ â&‹‹.ÊëêÑì3A÷$zHøD‹Í¦§È›"hƒ€#F 0í� 'åÞrï«1mU¢DâUþ—Ùè—FãØÊcˆ“(ºýÕ 1㺞ó“ëObd™‘æŠ"+¢cåg+±²×JCX|xåC0E”/Æè�9˜{+^,<¸ýÀ¤ŒbÚªh1‚? N¢Ã“¦Ì’$rã;ym\Ìùl2Iµý=âm}Îgˆi«®¹ÖÞú±žQp3f ©Iˆçœº‹�Zß|Ó¼Z«£�àtÈÏ�¯Í\…ÄQ,\ðŽß�òq\qÚJ!dOF§mmiÃ~4 mW¨e•¹ýécyË^œÏL7Dqlê}8­[Cëmw¦Ã¢ ¸m«æ‹xt5ëÈ= ÓqYk£Ò£:hÓ¶LdÛ§­€éÖc‰™;Äá_Ð>c8MäkðÈ>ëz!à¾&»µ�Ê>Þ(ך øÏ+œŒŠatŒÓ(ºÝNÞ-`ô Í&�¬#kk «“û'á'®ó¬oåŸJJ¬/,BŠc0e“' ¶þÞOç:ʧµ¢œš,ÎóÎ2S}‘Œ{ôÈJ{F²ÉiÇäþ½–Ûªé;ÕÒ¿°Ï3õÓtåÈðYö¦yBýoç챜{[׆uŒÌa„Ž/Æ?ÕªÈgì”|þ“žÌ9מ �_þ®²�/ºÔ–ô¦ŒÞx9K�?{þþö³×¦{E@PE@PE@P7JtÉÅ™[O´<òIZ§L’R롼q¸ãøqŒ\¾'%/=­NÉ’x¯JSö´ñ…è8'×ôÆO?™î¼¦A-[z +vïÆgÓ¦™sœ7™¼ÙÑÚur ûrM dîË‚?­P¦LhøÂ È•6-® æ$|Æ Þ) 纜DG%I;ö\æÌ¦¿§MÁŽ©±Âk?ÿg¶œA¬ø±ÐpVCd­˜Õ*¯ýf-–õX8|T :.º„�y§1ç�6FÒ¬IÍñòO—cÍWkÌzK´+�ª«®ÝS�oóó­~ZþùQºki$Jg ñSÆ7ÄÏ];yÍhGÐιªÿ\Y+då)cWŽ^Á¿ü�m÷�BÒÞˆ»ýÓ¶'YD҈ƨ—ºë²ƒ¸�(#¡@‹,¢cç‰:j<ÃÌA��²=ʣϴrml’Æ®¡9…È=™“è ©ðj¿WQ²}IC�Q‹fjý©xtï‘çsà´…ïIЏ Á52͉!Úûqxñal´ q“Æõ˜’íÿì]xW½¸»»[±âV¬¸KÑâR,P¤H[úJ©AK‹{‘"…âZÜ¡hq-$PœàÞÿž÷òv'›ÝdwCB€{¿�™7ÏæÍ™ÙÝpÏÜ{¬s…UÙè"$H¬£2pžå|[û6ÓzЕàË&MˆtÃYnô'0BÚu[krNäϹŒ·í�­=ÇL>Q ˆV(PŠ£0¶š^ö}�Zà&¯ã‡öz¤Áªœ‰¿kÅO¤ßÖ¯Ö˜µ‚ر Ño¤P‚E‹®‰ì�Y#Ðý[Ö^๠•Ð÷Cv~ïÕ×:dfÐTZfŽK|•2š#­Ý°*àœöZ]² Owÿ&@,›9ÐëWøœìˆŸÍ~h#àŽôJãW%Wa‚h 8år<ƒ{Ç]˜LÙ´,äh�Ð`ëíý´^�!: çb,G>{$�µÊ Ø@´Á&­!*QQ—ÍÖš†Ë�u¦ ºÐ÷€�Téû“�¨züP§¢!öˆËþÔý° ¹¦MY'¦‹Ž§ÑmH/†gš Ð\ÉÄ˲cöq(MÆ:!|AÎA‹ |V¦ÿ¬I=ôs$ePç�¢#'¿<Òž_2A*Ó¤±B®&ö–°ðvœÃéåPA@A@�pC@ˆŽpƒú垈ÿ_Nq´Eav´G x=µÅ¨QtáúõOôc‹T˜ó6‡DtàmùÍÁ³W¯ÚætFtØ]Òrz©I�:)½]ÜJ]µ`çN±’= l­Ë•SÿœÍw÷Ñ#ªóÄH˜” RwGt„t�戒ùbκd<7mfïHÀX‰ÓÇÕdTß:u\5»]fíšYs¦rÒbœý�ï=¦Çþ�•ž±°ˆ@t`«z­¢?ï@QY¢L‰èÞÕ{= X¼Ôñè£]ÙH Uédƒþ£ÞEþçýƒ´ZßÈG#Ò-벌^G|Þ:¢ƒø1½Òt:³îŒÂÑ4x†nŸ½­¢%@ ²%¬ˆ� #sŽ¤Û¾ì‰w°,•³P‹U-j퇇f¢ùÍæÛ*œio˜F+Ñ=ntzrï‰"& ¹q÷2¿φÈ�–kZRº’éÌ0µtûM«0�.ïcï<¢ƒLš¸Ûç§øVá7¿榆sªrxo¾ïA‡|ñ :Î?´7§Þcço‘²¼ß¨Wd¢òðÛðsv麵 ™,¨¯ËØB„?3p˜ƒ�F¢+&aG°ÃOt'à nÖ�I‘ö9PBº!¼­Ç2œÐ­zn7ë \«�âÐ� 6"9Ña5�#5Ù íç«kAà`ÍÐk€!jé®@ظ2Cø˜vˆ¡CÝ™}ÞŠ…ͧ;k \WªŠ&s Máhp¬Ÿÿ‡ßôoÉŽôiŽ­A�Oæ4lÅ×Ãy§:,V½Ç63c1w�ý%o± Íý4+èל ‚™æÈ¾Ç3µ�¯!ändT@IDATiÅ$Ñ`ÝiÓ@ÔY iÏ�þ â3íˆ6BÄ’¹ïxVÓdÔĈ'мÖ+ÑÑvKÛ Ÿ�æ5¢Ô…S[‡ÙÊ8"޶ý¸�žÜ}b«GäP–ŠYÑÙª³Gû˜· 3CWú-{õ¦Õƒúkð›ì‰Œ³/tò¢1_±“ø�½.kn¢�ã‰FÔi™5¬Ûßð׌#±€è ¤Ã¦n`Â¥œ*Ú6pÚ�¬EœAª€HAdˆÒbh@tõŸÌbÕÃmClDo|ÑF ­›J�# F Æ^¾¶©u¾Ÿð-Ñpîg âíçÌÖQ"Ö6�+ˆXH“Q§Èj܉èÝ’Öö2R[â—ðáDÿôíx··:/™hç­�k«0·†«yƒmhï§9?*j—1YÆ÷×s!ñµkYŒ!J��ŸK_Õ-Цs _˜¬³v@äÏ÷=ù\K­µº  Ï6<ËÆ@hà¼û¶j±{S�=ž!èÖtø\¯ÉÚ†òØA:mšIåfmÇõuáë®ÚX…Ö¶ð,;ŽÇf-ŽõŽÇ¦ŸìA@A@A@ˆ¨ÑQïÌk¶®k,œŽ7îÞU‘ˆ¤HÁÿu,^³Ër¹\öOÑeŽì8ÃÑ.±¢G§ä¬“‚ÈöuE(Cš¡«G®Rò<É Îûm *D®!(;YlJ‘7áMû°6D‚À�H¤¸J�!�Šîëó¾ó¿=L±ˆD8DdóÝÈ5姪%ZÉgk¶_<üBE;AãÆ‰êóÒÏ-ãçéÐðÜ"’#~ºø”8sb•:έñ¸Òõ@ëãþ¢|Å™,eGqxÞÎ�—PŸ i€ ¿›²> U”> ´qpéœÖã€FH&$¼Ñ¾4éxà ¶¯ ·9Ú. V0a†tTHgœ6ÇÃûÅqB�Á�9úãŸ;Ït8@vܾ® ¯´™õØ«6o oǽêë•ó ‚€ ‚€ ‚ÀÛ‹€oï½—+Aà�BÑFˆ:AÖûrï`‰2gDÇÆt1>ü>ÞÐG„ÇfNGåJtû ºäp»Á6Ü ~e'ò–°ðvÜ+»P9± ‚€ ‚€ ¼õÑñÖ?€ ¯/®?P)ÚöMÞG;GìT‚”XH�œ Ñ:áßÁq¼Qß´ QÆ:Õt@�Nê� z=F¯ß6ü×öºŸQ°}Ýï`èÖï-aáí¸Ð­VF ‚€ ‚€ ‚€ à=Btx��ŒA@xÅ Š6Hir˜e$Í™”Úln¢®‹±ˆ±·ê^Ĉ©Ï¡aÌ]ÑnÓ_öv[;ocÉ[ÂÂÛqo#ÆrÍ‚€ ‚€ ‚€ 1¢#bÜY… ‚€ Ž5X ¤'H—€2”É@¨HñRÅ q¦½öҲάŽÌ9ô¿¸ÿ…q�t3²úæåDWüì§€ÎD£;}AT¶¦½^Jž! Øz†×›ÖÛÞ^×€¼*ãA@A@A@W„èW¸åd‚€ ‚€ à �÷ˆÉ+6Q’®zI½7¶Þ öú�¢ãõ¿‡r‚€ ‚€ ‚€ àBt¸‡“ôA@A@^+„èx­n—,VA@A@B�€¡O† ‚€ ‚€ !:"ê�‘u ‚€ ‚€ ‚ÀËF@ˆŽ—�¨Ì'‚€ ‚€ D Ñá©Ö†·ã"À%ËA@A@Aà-E@ˆŽ·ôƇÕe_¿s‡nÞ¿O cǦ$ñâQ”È‘ÃêT¯|Þ§ÏŸÓùk×(Vôè”,AŠ%Ê+_SH xöðmùn ý÷ß”§IJž;yHC"lû•ƒWhÏø=AÖ—¹bfÊU/W�úˆT1þ¢ûwˆ¢F#úx°û+;¸“híÝ¿tu¢"eÝû²zžZqŠ.ì¸@q’Ç¡bÝŠ½¬ieˆÏ�Ë•®á€ÀêyD'¥HKÔˆ…ÝÃÂþœKtêQÊtD ;„ÅÞî9½ý] 5o oÇ…´iA@A@A ¬¢#¬�}óöš>]9ÞC:õ Æ�é�´iéÏýûiö¶m¶î�*U¢Ù³ÛŽMaëñã4qÝ:uX¯hQª[¤ˆiRû+þþ4~ÍÚ~â=zúÔÖ’#OúôT’çlT¢EЉ®rß.“'{ÚmýÜ)T+P€Ú½ÿ~�®Ó7m¢%{´³;z´h4ÍÇ'áð²®'öâMÛ¸‘þ:uŠÎ^¹¢ŽQ�k{7cFjP¬•Ê™UÊ6=J#W®4‡Áî»U«Feßy'Ø>¡m¼í> M>TMóÁ¬(oÓ¼¡�ò•�?:ÿ(ÍmÀž7+Þ½8Uý¥ªCmÄ:|/Ñ­ëDQ¢´dB\äìÑDƒ»ên H:öqÈKï°Üg9í³›’dOBÝNt{éó?ºõˆÞ~HQcF¥x©â½ôùß„ #Âsð&àø2®aÖ(¢å³‚Î'>Q*&ŠñÏVÕFD‘Øo\”èðn¢rµˆF/ ºž—QÓ°ÑÑ}Dï×!¹Èó= º~E�K“¿›žÏñ&�ðöw!$L¼%,¼Òz¤]A@A@�°B@ˆŽ°BöÌÛbÔ(ºp�½§!Ø�-ZPá,YhÆ–-4)€ÀÀ�œiÒи�> 2zÙÞ½ôãÒ¥ª¾E™2�‡#.P¯iÓèñ³gAÆY+–öʼnƒ.ܸA-FŽ´6¹U®U¨}R‹=8Öjôh:ÇQÆ~hÖŒŠeËfÕþe\'&ºÅ‘*æÎ¥ƒçΚßz�;]:Ý®�­jù¾}4t‰{^§>µkS�‚mcâð&þüéÌÚ36˜V÷^Mo>$!:l�„I!¬‰Ž¥—ÒÞ {)Ù;ÉÈçˆO˜\Ãë>©çv`NuÛªàד«Ño[ˆbÅ ¾Ÿ·­Ïùç·s‚�u@ä3ÐÛ™\�{úDŸ{Ì�óxjÖçö¯[Dñz:ÛÝ_ˆŽ7ûþÊÕ ‚€ ‚€ ‚@Ø# DGØcngXÊ„ÄÍ{÷Ôù®q )°,)RPK¤@µwߥäœjÉ‘@_C‚ lÌÑñàÉj7v,]¾Å ¶¼½�ˆD6ø?x@'.]¢Åmq‹×dˆŽ�Óýe¦¶í×:d#i5’0N`�"PŠ09cµ‹Lš4w Mj.L½jÖ´v õub2¤zj3f ù�*é“&%¬3{ªTt÷áC:xþ<-ع“²¤Lé’è(ÎØäb2É••É•‹2%ÛTRoÑáˆãðÌÃéÖÙ[Bt8ó’�…èxÉ€z1�Õaüª"{¼Xö9¤t ¢›W‰ÒñÏS“ÎúA<\¾@´ŠÎnððˆ¾ò$M�'`=~HôëP(Y±>Qö¼žŒv¯ï±¿‰ð𣕯íÞ8k¯ÿµ#Zð+Gº¤ç|®ß°y«ÊBt¼U·[.VA@A@Â!:ÂÔˆ0åN«Ô–IXMކèí$ÂÑ’â—Ö­Õ8³qEtì8y’>›¥svÔátV=kÔ0Cl{Dzl"ëºyú&EŠÂ¤)WÆÒ•H§È¯«‡¯š*Ê^3;}¸TÇàþã¹qÇ@°µ\ÓÒÖbô¥�?õ¾Ü›¢Åf¯¢ƒùnô¥©å§ªÚšckRáNì!eÛ=v7-ïžS¶÷>}�¶~ÏÞ|Ãç¥Ò•øƒàÐÀ‡v\ Í¨tiŽ­‰2%¢sPš"i›^ʱ'ÏÁoɾï¡O#¦ÖqÀˆ‚ZL6,žf_R´èL,°s=~·xñ Q=PÑàÌÐÿëÉå-¤z¢«—çMÚ1?ž÷ÆÐdì?Æz:0%½~Ðeg[o±EEö£#2æîýœþ3G]ÔcÝq€I Xó�“˜¯çwG݃?/Cˆ†õ3GD {@ÜógÌ—ØŸ…‘‹t*,{O¢Y£ˆ¾ås ¢Ñˆä�­ü]cв3â ÑKuò�;Åë‹ÂdÕà3ƒHD'­] £¡vÝ *,¿‚çîp<{‡ˆ%¬Ñ_ëøþðõôúgwnîü.à…—üœ–ô.k¤CT¢;>b£&k�E‹i1o oÇYN-EA@A@A@Â!:Ân÷Ov’I‡‰½1mÿ~ºÆÑ ÆðÚŠ™3SÖz¨›3'ÅŒÊ'æ ÑQŠçk>b„Š’x?Oú²A5³+¢‚ã-8ÒÑƲ²wQþw�Œ© ¯|wÌS¢cÀܹ´éèQ•¶aI¿~—��C–,¡ŒlGº¤Ðùp$:<½Î%Lþ [¶LÍÛ±R%jZª”*»³±!õ_Õ¿?ňƳPØ“»OhXúaôèö#•6¨ÍÆ6={&Ùà<†sö±ÿcuìŠèèq¶%̘PE…ì½Kõõ9êCÉr%£µŸ­Uo¾ƒ¼hÿW{ÕfÝ¢u L@h }‘1ÿ þä·Ó�Þi =~HW5§>{SÙŠt.B5F³Î ;½`Hc5¥ÌåG*©¶[ØãŒ¹KtœZyŠfVg�([¡…Ô9ArÀ‰€è’#!8°}Žø(’ÆÏÏ�Ò¦M«ú¸»éÙ³' còÍ™=~ÄigØyˆ�Gp©WÇb ÆÂàTuö&³nõ~»éëM´áKíA®?£¾":Ôlì4\Òa 훤?c®ˆŽw[ñwÓÔºôàú’Œ½•l&Šç郧ômüoÎÍW6§¬æuwÕKo–v\J{'ì%�tÀ?8CJ­_2ýBþçýIÖj}«@ÝŸÞJCSUÏPþ–ù©Þ´z¶v+Ñ'Yj·£%Î’Xµ?¼ù�~}ïWºv욊Lêq¦‡=º‡q˜Tb’Jé2¦Í¦6„TWÆ�Æj|áñê Uç×:ªé#Ny7iÒ$ÓÍ­=¶øNÞÔöä9@t¢ŠW`ç1¿%�h¤SI�‡ß¶jÇuñDÚy_°Ó¼©‹Ç°Bz�Î dOãÎzFœËï,§>Ú¨£Jp�HkUÓ ç‰T`˜ÃXŽüDßM#ÂÞ® ©­*0©â̬XÿÈÎvWi¶Bƒ-Î_;·>»'÷ÓºÞAŒÈ4�ü¬-ÎË Ø@´Á�ºê'.#� „"_`ŸðWLÛ>ºŒ-RTÕÉ«±Ç3?œI.DÿÀð¹éÊ8"ÊäÊŽ›Dñê6lWýÁDD#}ŒqH¹f5D mù“ëí_#¶æKh"©ß�¢ Ï„ÕNäsò÷=Òǹ2w<}Jó�Sѽ}}½“*n\jƒ(þ—9¨Ù¼%,¼çêú¤^A@A@�°F@ˆŽ°F؃ù±p7þóŠè�M¬=aµì1�œÌ-ù_Z'Ž/k_”½!:­0xÁZËÚ T~ëÖ�Ò$Nì2¢çÙsú´sû¾Å[…¶,Ö]�ÿ³�4RÑ]2º'Gex FŽôZµø�ò�yXKdkŠÀ z>ðöT°}\­Õ/ƯS²9ž^çÄuëhæ–-j®ÏXP¼Š‚âáMt@ß`a«…j­ ç6TZê `ƒ”V†¼pFtD‹�úßë¯z﵋Vt[¡"¾|ò¥" þžò7-n»˜’æHJ]�wµN­ÊV¢£åÚ–J$H'K…‰¬@º¬Oü>Qoø[šiYçe´gÜUÕíd7Y`m·–Ý%:&—œ¬ÒAû£ë±®ŠÐ°ÎGõ¸ì‘c«4¤!}ÑšïÓÇâM³pQ®\¹2}ðA€7ÎEŸˆXmptF4 •Õ°tÃéÑ\•‡VV¸¶!I‡¨(¢÷¿~ŸÊ|QF]îÏ~VÄDƒÙ (O“ ^?OˆL¸i36°ã2u?Ó]‘têD¼±~@Hd(“Á4J]Uú³ÒTá[öŠZ š"K;,U5Í–7³i€œ^}š~«ò›ª¯=±v 3ü÷º¿+M¤^ûüÎçê³3sæLÚ¼™= Ø&žcÄ`FËKƒã´;‡An|3Ekj ®pM] 8ÁQ‡6¤ÖÁ›ó!ÙÍ«ì€àw†0oXãCûˆå³ˆú8ö» `‹�ö6” ™]Ší7ìm«çé´S¨6WkVØ[ù�y>ÇŠÙºæ{¾Ö”Y>Òé”à`^~‚(•…@À¤1Z4U�ÝtÙN‚èû¶u9­?ajfn#z·¤9²ïq‚hŒà¬d%v2OÔÑÎú!Q!0 ÙýO x®$�3 ¶ˆ”é×\ÏêÉý´®£ ÿC[¤Ùý±²6)ƒðBd4A–Ó{Ó :%øÙ�}>‚¨Y7]Æ)Ï=�ç` 4ÐÕ°š‡™ÛùÞ2Aalô@^ÛWú:$8·;†ÏO¡Øš<ü°+?k#Ýõrúør„ÇtŽp�Ê/Å ÚÃX$.Tà—MåqŒÿ¾‚ ÀFLˆÀ’®‚€ ‚€ ‚€ !¢#Bܽˆ¦óçÓï‡ÛVŸ\�rçVÑ%-âà¶Á¼%: ¸Ý–Ó"@˜Ú}j×–èÀ@r êa#GX༎†TR#™Œˆ=ºc“íØ¢c' ±÷c§! $ 49`w=¢:L€@·Ñ$ÃZ¶TõΈO®ÓªEÒ¿~}ª”�_‘vÓ¬D„܃K]•…£aBkH±hXÿûýƒhX�´ÎˆŽ8ÉãPŸ+Ú¡oH ¤úùìögjÎÃsÓ¼&ó(nʸJAUZ6†èHž'9u9ÔÅÒâ¼8&Ïi’¥rj±ªE�NÖõ6ÿ“#ªd ÒÇT½«´Z¦" ùáh8Úñ¬Û, ¸kÌ.•~(oÓ¼œÞ�ñu̯U4‚Ò§`¢ÇÑ QäŠè¨1¦†ŠÎÁ8CjXÓ?�Ê5J w×Çz ;NOžˆú%ã/J0½Ü€rTn`9ÛœÓÞŸFg7œUˆ2«Y#:ÚmoGÐ±ÄØJý“ªª>²:íZT•w ÛA«>Y¥ÊˆØˆ�4¶ý x~@–™4_H_¬^…!ETc½lâ,_”. ÑÑ}±QH¯fùq�"É—ä5rê:ÓϬâÑFÔûÒ9Ö¸£[àl6)±¦n`B¥œA4´7ÑT†é6óO‚£óþãzDëiAé¹¼FcX+Öœ&#ÑŸ§uÄ“iÃÞE²äˆ=RE^_‡£AWú0M±ð{Œ¢,Î3Þ°"e‰F0÷ltOt­ÞZëÎR0Yûº*ÿÈ_×S~ÔÑ;ýu¤‚³¾Þb‹¹†|Â2Ã<¿Ÿf Ú@¸�Hëü%GU� ¦Ýq ‹s¤¾š[ö`’åçÀ=�‚«þ»ºÎM]ŽNÕu½Ï@"�2Ž�÷²©t­cÔÆ†%¼¶:º Ú2XgÁ÷gp~Ü  ѱ¿u¤Ò‡Õá??œÝsç£C_ËPÑf~Anóøo±ûõal`@AˆƒˆìA@A@AàME@ˆŽtgr4þƒjì'~#)9ÉÑnú¸Ú{Kt`¾þ¿ÿNÛŽ§¨ì¥ú½{wÚÁÄÂOK—ªSÁYß¾BW§¥ëüæû~__ÚÂã7stŠq"7átO�8í“+ó„è@)+°±œ&WöD˜ÏäÉtä•£z1§´ŠÃd‘3¢Ýݽ΅»vÑð+Ô:ó=� ¹»f%:>åh�ªDƒ¸{k?£G`%'¬í„“wŒªrFt$Ì��zø²g‰íÐìC4ÿÃù�H�ã‹�ÞVw5¿!:Þù໇šÍùæÛxL:°Fƒ5Å�µ§u½%Gª)WæÑau^»šÇZ�D¼-vûÜmEàz­ä„õú�¸+¢£î”ºônkí…™c$Ý8yƒ¬¤¢e@¸šßS¢k›Yc&�ZqJEs ÍÒŸáZ†g®¾ƒ*~_‘ÞëØci%:zžëI Ò'°^¦"{E¤+écÖ¨s0H§í™WasÇsDA'¢$)´È8Ö°p §cj«É‡m×õªŒG¬8œr‰�ÌH©†4?H54‰�¶H±œAÀç0Ö†�Ä»6h�¤�r4¤‘iòA;Žæ›¤[‘’ é³`ݱÃúºlÝîJ!v¤ƒÚ�uV] ˆSCÁÑ =n°®Ýs/¨Æ‚cÿ�Ž'3.Ã>Õ½¦nÔ„†uÌ(v²�åë€A°ZŽæÃ‘3ù§DÐ&„Ìõ8ö îØD0*­S&9ël1_›ò:t'ܽŸÖuXÞÝ!t ÿÒª¬žéË nµESù÷»�®YÏÏfŠ´ºl½ÇÖþ®ÊHå†ôVÆ@꽟.°€9"dÊÔ jÝË~Óߺ‡ù÷ú§SU#¢s×f£JC×”uŽ—Q¾Î©D‘öôsŽD560  D‡ADö‚€ ‚€ ‚€ ð¦" DGº³“ùM¼/7l KwïÚVƒÉ†:¬��´UUXû" §gqÇBCtc=‚Î'ªÓ4(^œ2$Kæ6Ña]ÛV&;¾`Ò–ŠsEÏfÒÄ•¹KtüÇ@t„ ,5Ï‹”5ÆünÞ4E¥1­WD‡»×¹ãäIúlÖ,5oH„�íä…ð&:æ|0‡Ž-8FÐès•_õu°Û¾ìÈfM˜S¢ƒµ9 Ñ;ü;Go°^E¼Tñè“KŸ¨ºKNÐì:³C$:BŠªÀd*z :Gðk»Åº£j#ª©sX7VÇ{¥8�TßRÖæ@ewˆ+q’½fvÊV-[ 9â§�¯„ʱÆ3gÎ86{œ˜Ó¾% È‘lÇÔxåЛo¬ZôRŠt)du‹Z³¸7 n»$:XŸ:°Q99zãÄu²’Tã ŽWú+/“è°j½áz£5ý•^z)ÂÎz1V¢£ïõ¾; {Ïìë_Óó'ÏUz*¤©‚¢.¸†�,g½œê3tƒu—n[RË„4ßk™92-46°#Ñ´ÆÁ8ÍÕª¨D7 ­ÒÄÕzvˆ>Cüš3¶é7éáH�ƒˆ646@f€d@¤Æïü˜àÍzè` ”Ռ޴ ¡`5þŠ.ÉŽ}˜Uÿâs×�·_æqÚ¸tëö£*œêŠ×ŒŠY;ì-ÃûMøVï{à\÷æóÖúz¡±þ¢}¬·¥OsÔÉ\íÀþë6ë@Ä<"^ )ohLü­½Þçvˆ–CüýÛ©Ö÷ËÀ˜¶àŸ×OõW{�Á¡ÁQ¸ŸÕöä~Za%¢Ö�'JÉdBpqõzjlA¼AWÅjŸ9’(q2&ˆ®Ú[:3!±™ŸshY…áí=—´Gâ˜DôLøF“|Ð[1â¢Û×Lúô65�÷À $Ö]«å* SÂ…tÝÖ1ž”Ÿrî¬üB 4Ý–ñß+86–>AjËZ?0!: *²A@A@�7!:"Ø�}Îÿ[^ÎÿQÅy+ù?®86–’E&›sÚ$�y’'7ÕN÷¡!:0a¯éÓi;vc²8vó2ehRÀÛ�!EtXƒ•7þùgºÊÿɆÓnÍ_¨(kSv—è8qéuœ0Á voÕ]ìÎuZ±|‡©Ç´oìy­�áMt¬ì¾’vŽØIQbD¡ÿ=úŸu)ªì·Û�&Õ$VX%?)I•¬äüŽ?¦ú‘ û�§qjð{Çf ´Þ™PÞóéc*Ü!: N�(Ö·ôÍ®ö/[ŒÜÕy^uý£[�èûÄß«e@³ÚŽf¢'"ÑÒ Ú!x–ò5ÏGõ«O#²� ›ÿÜTDUÓÅM/#�F´Z’æL¨Ï³‡Ïhpl`M‰µ¦ïÚ6t›úNëÿ ?A_Æ{™bäîœ}Lº¢ŽL|¬/…š—"ú{;k0¹ÑKßjjϤÇ~»Ýè XSø4௻ÿ�!‚µ1øQ᤿Æ�±ËM ÑEæ«dÑÇC™®î=΃óÁ¬ V­‰ßwå-ªû˜-41Ê3I�ôTMºðšØ©l¬u¬™¯5 ­àhH�T)£&¬�c?OŽ�†Dú¬,š}ÊùH#Vž»0d»÷�C½tÀÏ8ðmÒ9p»;G—ÎéëB_% LœYh°…¸wU¾F˜'÷S�Ð[£ÉÍ g÷ÇÚåÏZ²¾ÆoZoº#ŽÖü=~†·1aÆ?1WÙ[‘’ ©©œ2ö^î•ÜÓZˆjÚÆçÀŸb ù½dDÑ]Í„Ôe+~×dÉ�+º"”©ô2mÿ¿ÿ*mŽY‡Ñ5Žä0•C²jeÏN*ÄŸÅ,ôõ }b!: B²A@A@�7!:"ð�½ÈQ ¿r”"=μ‘g–[(U*jÍi�:ðd£ãõZ³:çkrŸÞµj9ôp.Òm:í;{–zMÓ¯ó&Їnˆ�{Bt`®>3fÐîþQâæ«˜èˆæd­èç.Ññ+G¼Lß´ C¨vᔎEÚmÖÖ­j½q9å×¢¾}é÷mÛlD�O•*1rcî\ç3öê}8|¸"l0nª�eä(w,¼‰Ží?m§Õ½ù•g6¤ B**«œq�´X ª"Ñ1©ø$º¸ó"¥ÌŸ’:íïd]ª*ø�ÅÕ[.Tå¶[ÛRúRéƒô1£s�¦kG¯¹tl›~ÃÒ£;~w(gÝœÔdaSìþm!:‚I'†ôSHCåh#²2�púf˜Et,ëÄôã÷8ÕÕp\‹õxí§kië[•.M£?©tVhoº¤)娕ÃÚU•­M5¡œurêså G·äç°¶:“ëP�¶üZ6Û¾IûhÉGKT¹ó�Δ"_ UiÞD‡UÁh€ (Ê‘ïý4‡Ø�ôªK±úö ¢Á¿Õk£Á!ÚŒ·Ø!¯Õ¶þIÔ±š®qtàZÅž�ˆuì¯CùÜ}uz¬Ýwísãmx¤¦‚9¦BÝŒZÄe¤»BÚ+cm+í\8E—iÃ~ÕLê\«õº­}PF¤ Ècp˜'NnŽì{«†0ÄœŽv™#*fе ‹ Jn58Ï;TÕ5®ÒmYû;+Cçz'0™gϫˎÛÐ`kÅΓûi]CË2ZçÅ]’©N¢Ž0IÆ_ÏCg[gâH@~†‹% ÑþS~V¿³·£÷Ævö–Е¬iȬš !ÍŠH�~Hâ^híá³g4ŽSwB|ü ƒ&ZŽ lW° ÒuË1Ƽ÷vœ9¯ìA@A@A@o„èoĽ8ĵWŸ>­¢<–œ8Ap¼;×£!5�£…–èÀ|�'M¢c/šÚJtœæÿd>žªó¬�ˆäh3f Ýü˜Ò'MJÓ»x±ͨÜ%:Ú�G§ù-ÆÈ! ŽxNôK¾_´ˆþd' ‚äG9—‰Hq$:Ð'¤ëD«NGQN!6¸IŠ5*šlö˜Å?¡!tcáMtønò¥©å¦ªÓWø†ßÈÿ<ðù¿Uþ�N¯áWtÙ"ÑaÕ;踯#¥*À¯äZ̈I#Bå¿Oœ¦2ÝgÕœE'—Ÿ¤X‰cQ¿ëüºz$Óx¢„O¤È‘”`z²w’îp„(¤=‚!äß[ìÝ5¤­ŠŸ½Ê¯™M-?•|7úRŒø1¨Ï¿}(j,ûs~aûš\j²º¢°ŠèØøÕFÚ8p£",>½õ)!E”;†è�‘ÙGª{-v4zúà©J…´U‘¢}¬D‡3M™5ý8rc¿6Îf}6‘Š ¤ÚÏÿ³E�¸ZŸõBÚ*ÂÚÕ8Ô# .}úôÁu ¶Íª‹°ú¬øÆ›æ5séaˆB@4‚Õ!¿€¿6sägG1sÁþ"JÆÇ ~:…�9œ¶õ¸ÆÁ ´]¡®.cûËçü–=;Ÿ‘nâØÐû°ZŸ¦úmw¤Ã‚ ¸±MËY<º¦>rLÃtŽ×Ú¬$¢:`óö!�±/ÛÍ×�%-<Àÿ|¦E8-økðÌ1}½ˆp\“émÒ@™ã�|­qƒþ¼’UCQ1ˆŽ±D·}øÝD¯À �¤�ôÖ«ƒûá#–µÕ½òÈ/9%Öך�ÂHÙäÌBƒ­·÷ÓºŽr©uô�U“ÅÚn-#ÕȸçÏuÚ3�MVóåûW#§®6Wë_˜v¤>Cš®lyˆð,»Ò<�þŒ«63—uotmP‡ÈDè¸cøS­Æ.òç/4éɬç:ríåá¿«ŒáE—zœÞÑïgÊäôgÏ[ÂÂÛqfm²A@A@A ¼¢#¼åùþ½wO½É7‰S[�¾u‹¬DÄo¤/ø—�j¿mެΖ;]:ªÎ¢æÆJåÈA 9J#¸”Nè»�I•þ³g›ajo%:Öqº„¯çϧ¤ìÌmÈZ¹9­SN©õŒß8Q ˆV(PŠ£0¶š^ö}�Zà&¯ã‡öz¤Áªœ‰¿kÅO¤ßÖ¯Ö˜µ‚ر Ño¤P‚E‹®‰ì�Y#Ðý[Ö^๠•Ð÷Cv~ïÕ×:dfÐTZfŽK|•2š#­Ý°*àœöZ]² Owÿ&@,›9ÐëWøœìˆŸÍ~h#àŽôJãW%Wa‚h 8år<ƒ{Ç]˜LÙ´,äh�Ð`ëíý´^�!: çb,G>{$�µÊ Ø@´Á&­!*QQ—ÍÖš†Ë�u¦ ºÐ÷€�Téû“�¨züP§¢!öˆËþÔý° ¹¦MY'¦‹Ž§ÑmH/†gš Ð\ÉÄ˲cöq(MÆ:!|AÎA‹ |V¦ÿ¬I=ôs$ePç�¢#'¿<Òž_2A*Ó¤±B®&ö–°ðvœÃéåPA@A@�pC@ˆŽpƒú垈ÿ_Nq´Eav´G x=µÅ¨QtáúõOôc‹T˜ó6‡DtàmùÍÁ³W¯ÚætFtØ]Òrz©I�:)½]ÜJ]µ`çN±’= l­Ë•SÿœÍw÷Ñ#ªóÄH˜” RwGt„t�戒ùbκd<7mfïHÀX‰ÓÇÕdTß:u\5»]fíšYs¦rÒbœý�ï=¦Çþ�•ž±°ˆ@t`«z­¢?ï@QY¢L‰èÞÕ{= X¼Ôñè£]ÙH Uédƒþ£ÞEþçýƒ´ZßÈG#Ò-벌^G|Þ:¢ƒø1½Òt:³îŒÂÑ4x†nŸ½­¢%@ ²%¬ˆ� #sŽ¤Û¾ì‰w°,•³P‹U-j퇇f¢ùÍæÛ*œio˜F+Ñ=ntzrï‰"& ¹q÷2¿φÈ�–kZRº’éÌ0µtûM«0�.ïcï<¢ƒLš¸Ûç§øVá7¿榆sªrxo¾ïA‡|ñ :Î?´7§Þcço‘²¼ß¨Wd¢òðÛðsv麵 ™,¨¯ËØB„?3p˜ƒ�F¢+&aG°ÃOt'à nÖ�I‘ö9PBº!¼­Ç2œÐ­zn7ë \«�âÐ� 6"9Ña5�#5Ù íç«kAà`ÍÐk€!jé®@ظ2Cø˜vˆ¡CÝ™}ÞŠ…ͧ;k \WªŠ&s Máhp¬Ÿÿ‡ßôoÉŽôiŽ­A�Oæ4lÅ×Ãy§:,V½Ç63c1w�ý%o± Íý4+èל ‚™æÈ¾Ç3µ�¯!iÅ$Ñ`ÝiÓ@ÔY iÏ�þ â3íˆ6BÄ’¹ïxVÓdÔĈ'мÖ+ÑÑvKÛ Ÿ�æ5¢Ô…S[‡ÙÊ8"޶ý¸�žÜ}b«GäP–ŠYÑÙª³Gû˜· 3CWú-{õ¦Õƒúkð›ì‰Œ³/tò¢1_±“ø�½.kn¢�ã‰FÔi™5¬Ûßð׌#±€è ¤Ã¦n`Â¥œ*Ú6pÚ�¬EœAª€HAdˆÒbh@tõŸÌbÕÃmClDo|ÑF ­›J�# F Æ^¾¶©u¾Ÿð-Ñpîg âíçÌÖQ"Ö6�+ˆXH“Q§Èj܉èÝ’Öö2R[â—ðáDÿôíx··:/™hç­�k«0·†«yƒmhï§9?*j—1YÆ÷×s!ñµkYŒ!J��ŸK_Õ-Цs _˜¬³v@äÏ÷=ù\K­µº  Ï6<ËÆ@hà¼û¶j±{S�=ž!èÖtø\¯ÉÚ†òØA:mšIåfmÇõuáë®ÚX…Ö¶ð,;ŽÇf-ŽõŽÇ¦ŸìA@A@A@ˆ¨ÑQïÌk¶®k,œŽ7îÞU‘ˆ¤HÁÿu,^³Ër¹\öOÑeŽì8ÃÑ.±¢G§ä¬“‚ÈöuE(Cš¡«G®Rò<É Îûm *D®!(;YlJ‘7áMû°6D‚À�H¤¸J�!�Šîëó¾ó¿=L±ˆD8DdóÝÈ5姪%ZÉgk¶_<üBE;AãÆ‰êóÒÏ-ãçéÐðÜ"’#~ºø”8sb•:έñ¸Òõ@ëãþ¢|Å™,eGqxÞÎ�—PŸ i€ ¿›²> U”> ´qpéœÖã€FH&$¼Ñ¾4éxà ¶¯ ·9Ú. V0a†tTHgœ6ÇÃûÅqB�Á�9úãŸ;Ït8@vܾ® ¯´™õØ«6o oǽêë•ó ‚€ ‚€ ‚ÀÛ‹€oï½—+Aà�BÑFˆ:AÖûrï`‰2gDÇÆt1>ü>ÞÐG„ÇfNGåJtû ºäp»Á6Ü ~e'ò–°ðvÜ+»P9± ‚€ ‚€ ¼õÑñÖ?€ ¯/®?P)ÚöMÞG;GìT‚”XH�œ Ñ:áßÁq¼Qß´ QÆ:Õt@�Nê� z=F¯ß6ü×öºŸQ°}Ýï`èÖï-aáí¸Ð­VF ‚€ ‚€ ‚€ à=Btx��ŒA@xÅ Š6Hir˜e$Í™”Úln¢®‹±ˆ±·ê^Ĉ©Ï¡aÌ]ÑnÓ_öv[;ocÉ[ÂÂÛqo#ÆrÍ‚€ ‚€ ‚€ 1¢#bÜY… ‚€ Ž5X ¤'H—€2”É@¨HñRÅ q¦½öҲάŽÌ9ô¿¸ÿ…q�t3²úæåDWüì§€ÎD£;}AT¶¦½^Jž! Øz†×›ÖÛÞ^×€¼*ãA@A@A@W„èW¸åd‚€ ‚€ à �÷ˆÉ+6Q’®zI½7¶Þ öú�¢ãõ¿‡r‚€ ‚€ ‚€ àBt¸‡“ôA@A@^+„èx­n—,VA@A@B�€¡¾}öY@IDATO† ‚€ ‚€ !:"ê�‘u ‚€ ‚€ ‚ÀËF@ˆŽ—�¨Ì'‚€ ‚€ D Ñá©Ö†·ã"À%ËA@A@Aà-E@ˆŽ·ôƇÕe_¿s‡nÞ¿O cǦ$ñâQ”È‘ÃêT¯|Þ§ÏŸÓùk×(Vôè”,AŠ%Ê+_SH xöðmùn ý÷ß”§IJž;yHC"lû•ƒWhÏø=AÖ—¹bfÊU/W�úˆT1þ¢ûwˆ¢F#úx°û+;¸“híÝ¿tu¢"eÝû²zžZqŠ.ì¸@q’Ç¡bÝŠ½¬ieˆÏ�Ë•®á€ÀêyD'¥HKÔˆ…ÝÃÂþœKtêQÊtD ;„ÅÞî9½ý] 5o oÇ…´iA@A@A ¬¢#¬�}óöš>]9ÞC:õ Æ�é�´iéÏýûiö¶m¶î�*U¢Ù³ÛŽMaëñã4qÝ:uX¯hQª[¤ˆiRû+þþ4~ÍÚ~â=zúÔÖ’#OúôT’çlT¢EЉ®rß.“'{ÚmýÜ)T+P€Ú½ÿ~�®Ó7m¢%{´³;z´h4ÍÇ'áð²®'öâMÛ¸‘þ:uŠÎ^¹¢ŽQ�k{7cFjP¬•Ê™UÊ6=J#W®4‡Áî»U«Feßy'Ø>¡m¼í> M>TMóÁ¬(oÓ¼¡�ò•�?:ÿ(ÍmÀž7+Þ½8Uý¥ªCmÄ:|/Ñ­ëDQ¢´dB\äìÑDƒ»ên H:öqÈKï°Üg9í³›’dOBÝNt{éó?ºõˆÞ~HQcF¥x©â½ôùß„ #Âsð&àø2®aÖ(¢å³‚Î'>Q*&ŠñÏVÕFD‘Øo\”èðn¢rµˆF/ ºž—QÓ°ÑÑ}Dï×!¹Èó= º~E�K“¿›žÏñ&�ðöw!$L¼%,¼Òz¤]A@A@�°B@ˆŽ°BöÌÛbÔ(ºp�½§!Ø�-ZPá,YhÆ–-4)€ÀÀ�œiÒи�> 2zÙÞ½ôãÒ¥ª¾E™2�‡#.P¯iÓèñ³gAÆY+–öʼnƒ.ܸA-FŽ´6¹U®U¨}R‹=8Öjôh:ÇQÆ~hÖŒŠeËfÕþe\'&ºÅ‘*æÎ¥ƒçΚßz�;]:Ý®�­jù¾}4t‰{^§>µkS�‚mcâð&þüéÌÚ36˜V÷^Mo>$!:l�„I!¬‰Ž¥—ÒÞ {)Ù;ÉÈçˆO˜\Ãë>©çv`NuÛªàד«Ño[ˆbÅ ¾Ÿ·­Ïùç·s‚�u@ä3ÐÛ™\�{úDŸ{Ì�óxjÖçö¯[Dñz:ÛÝ_ˆŽ7ûþÊÕ ‚€ ‚€ ‚@Ø# DGØcngXÊ„ÄÍ{÷Ôù®q )°,)RPK¤@µwߥäœjÉ‘@_C‚ lÌÑñàÉj7v,]¾Å ¶¼½�ˆD6ø?x@'.]¢Åmq‹×dˆŽ�Óýe¦¶í×:d#i5’0N`�"PŠ09cµ‹Lš4w Mj.L½jÖ´v õub2¤zj3f ù�*é“&%¬3{ªTt÷áC:xþ<-ع“²¤Lé’è(ÎØäb2É••É•‹2%ÛTRoÑáˆãðÌÃéÖÙ[Bt8ó’�…èxÉ€z1�Õaüª"{¼Xö9¤t ¢›W‰ÒñÏS“ÎúA<\¾@´ŠÎnððˆ¾ò$M�'`=~HôëP(Y±>Qö¼žŒv¯ï±¿‰ð𣕯íÞ8k¯ÿµ#Zð+Gº¤ç|®ß°y«ÊBt¼U·[.VA@A@Â!:ÂÔˆ0åN«Ô–IXMކèí$ÂÑ’â—Ö­Õ8³qEtì8y’>›¥svÔátV=kÔ0Cl{Dzl"ëºyú&EŠÂ¤)WÆÒ•H§È¯«‡¯š*Ê^3;}¸TÇàþã¹qÇ@°µ\ÓÒÖbô¥�?õ¾Ü›¢Åf¯¢ƒùnô¥©å§ªÚšckRáNì!eÛ=v7-ïžS¶÷>}�¶~ÏÞ|Ãç¥Ò•øƒàÐÀ‡v\ Í¨tiŽ­‰2%¢sPš"i›^ʱ'ÏÁoɾï¡O#¦ÖqÀˆ‚ZL6,žf_R´èL,°s=~·xñ Q=PÑàÌÐÿëÉå-¤z¢«—çMÚ1?ž÷ÆÐdì?Æz:0%½~Ðeg[o±EEö£#2æîýœþ3G]ÔcÝq€I Xó�“˜¯çwG݃?/Cˆ†õ3GD {@ÜógÌ—ØŸ…‘‹t*,{O¢Y£ˆ¾ås ¢Ñˆä�­ü]cв3â ÑKuò�;Åë‹ÂdÕà3ƒHD'­] £¡vÝ *,¿‚çîp<{‡ˆ%¬Ñ_ëøþðõôúgwnîü.à…—üœ–ô.k¤CT¢;>b£&k�E‹i1o oÇYN-EA@A@A@Â!:Ân÷Ov’I‡‰½1mÿ~ºÆÑ ÆðÚŠ™3SÖz¨›3'ÅŒÊ'æ ÑQŠçk>b„Š’x?Oú²A5³+¢‚ã-8ÒÑƲ²wQþw�Œ© ¯|wÌS¢cÀܹ´éèQ•¶aI¿~—��C–,¡ŒlGº¤Ðùp$:<½Î%Lþ [¶LÍÛ±R%jZª”*»³±!õ_Õ¿?ňƳPØ“»OhXúaôèö#•6¨ÍÆ6={&Ùà<†sö±ÿcuìŠèèq¶%̘PE…ì½Kõõ9êCÉr%£µŸ­Uo¾ƒ¼hÿW{ÕfÝ¢u L@h }‘1ÿ þä·Ó�Þi =~HW5§>{SÙŠt.B5F³Î ;½`Hc5¥ÌåG*©¶[ØãŒ¹KtœZyŠfVg�([¡…Ô9ArÀ‰€è’#!8°}Žø(’ÆÏÏ�Ò¦M«ú¸»éÙ³' còÍ™=~ÄigØyˆ�Gp©WÇb ÆÂàTuö&³nõ~»éëM´áKíA®?£¾":Ôlì4\Òa 훤?c®ˆŽw[ñwÓÔºôàú’Œ½•l&Šç郧ômüoÎÍW6§¬æuwÕKo–v\J{'ì%�tÀ?8CJ­_2ýBþçýIÖj}«@ÝŸÞJCSUÏPþ–ù©Þ´z¶v+Ñ'Yj·£%Î’Xµ?¼ù�~}ïWºv욊Lêq¦‡=º‡q˜Tb’Jé2¦Í¦6„TWÆ�Æj|áñê Uç×:ªé#Ny7iÒ$ÓÍ­=¶øNÞÔöä9@t¢ŠW`ç1¿%�h¤SI�‡ß¶jÇuñDÚy_°Ó¼©‹Ç°Bz�Î dOãÎzFœËï,§>Ú¨£Jp�HkUÓ ç‰T`˜ÃXŽüDßM#ÂÞ® ©­*0©â̬XÿÈÎvWi¶Bƒ-Î_;·>»'÷ÓºÞAŒÈ4�ü¬-ÎË Ø@´Á�ºê'.#� „"_`ŸðWLÛ>ºŒ-RTÕÉ«±Ç3?œI.DÿÀð¹éÊ8"ÊäÊŽ›Dñê6lWýÁDD#}ŒqH¹f5D mù“ëí_#¶æKh"©ß�¢ Ï„ÕNäsò÷=Òǹ2w<}Jó�Sѽ}}½“*n\jƒ(þ—9¨Ù¼%,¼çêú¤^A@A@�°F@ˆŽ°F؃ù±p7þóŠè�M¬=aµì1�œÌ-ù_Z'Ž/k_”½!:­0xÁZËÚ T~ëÖ�Ò$Nì2¢çÙsú´sû¾Å[…¶,Ö]�ÿ³�4RÑ]2º'Gex FŽôZµø�ò�yXKdkŠÀ z>ðöT°}\­Õ/ƯS²9ž^çÄuëhæ–-j®ÏXP¼Š‚âáMt@ß`a«…j­ ç6TZê `ƒ”V†¼pFtD‹�úßë¯z﵋Vt[¡"¾|ò¥" þžò7-n»˜’æHJ]�wµN­ÊV¢£åÚ–J$H'K…‰¬@º¬Oü>Qoø[šiYçe´gÜUÕíd7Y`m·–Ý%:&—œ¬ÒAû£ë±®ŠÐ°ÎGõ¸ì‘c«4¤!}ÑšïÓÇâM³pQ®\¹2}ðA€7ÎEŸˆXmptF4 •Õ°tÃéÑ\•‡VV¸¶!I‡¨(¢÷¿~ŸÊ|QF]îÏ~VÄDƒÙ (O“ ^?OˆL¸i36°ã2u?Ó]‘têD¼±~@Hd(“Á4J]Uú³ÒTá[öŠZ š"K;,U5Í–7³i€œ^}š~«ò›ª¯=±v 3ü÷º¿+M¤^ûüÎçê³3sæLÚ¼™= Ø&žcÄ`FËKƒã´;‡An|3Ekj ®pM] 8ÁQ‡6¤ÖÁ›ó!ÙÍ«ì€àw†0oXãCûˆå³ˆú8ö» `‹�ö6” ™]Ší7ìm«çé´S¨6WkVØ[ù�y>ÇŠÙºæ{¾Ö”Y>Òé”à`^~‚(•…@À¤1Z4U�ÝtÙN‚èû¶u9­?ajfn#z·¤9²ïq‚hŒà¬d%v2OÔÑÎú!Q!0 ÙýO x®$�3 ¶ˆ”é×\ÏêÉý´®£ ÿC[¤Ùý±²6)ƒðBd4A–Ó{Ó :%øÙ�}>‚¨Y7]Æ)Ï=�ç` 4ÐÕ°š‡™ÛùÞ2Aalô@^ÛWú:$8·;†ÏO¡Øš<ü°+?k#Ýõrúør„ÇtŽp�Ê/Å ÚÃX$.Tà—MåqŒÿ¾‚ ÀFLˆÀ’®‚€ ‚€ ‚€ !¢#Bܽˆ¦óçÓï‡ÛVŸ\�rçVÑ%-âà¶Á¼%: ¸Ý–Ó"@˜Ú}j×–èÀ@r êa#GX༎†TR#™Œˆ=ºc“íØ¢c' ±÷c§! $ 49`w=¢:L€@·Ñ$ÃZ¶TõΈO®ÓªEÒ¿~}ª”�_‘vÓ¬D„܃K]•…£aBkH±hXÿûýƒhX�´ÎˆŽ8ÉãPŸ+Ú¡oH ¤úùìögjÎÃsÓ¼&ó(nʸJAUZ6†èHž'9u9ÔÅÒâ¼8&Ïi’¥rj±ªE�NÖõ6ÿ“#ªd ÒÇT½«´Z¦" ùáh8Úñ¬Û, ¸kÌ.•~(oÓ¼œÞ�ñu̯U4‚Ò§`¢ÇÑ QäŠè¨1¦†ŠÎÁ8CjXÓ?�Ê5J w×Çz ;NOžˆú%ã/J0½Ü€rTn`9ÛœÓÞŸFg7œUˆ2«Y#:ÚmoGÐ±ÄØJý“ªª>²:íZT•w ÛA«>Y¥ÊˆØˆ�4¶ý x~@–™4_H_¬^…!ETc½lâ,_”. ÑÑ}±QH¯fùq�"É—ä5rê:ÓϬâÑFÔûÒ9Ö¸£[àl6)±¦n`B¥œA4´7ÑT†é6óO‚£óþãzDëiAé¹¼FcX+Öœ&#ÑŸ§uÄ“iÃÞE²äˆ=RE^_‡£AWú0M±ð{Œ¢,Î3Þ°"e‰F0÷ltOt­ÞZëÎR0Yûº*ÿÈ_×S~ÔÑ;ýu¤‚³¾Þb‹¹†|Â2Ã<¿Ÿf Ú@¸�Hëü%GU� ¦Ýq ‹s¤¾š[ö`’åçÀ=�‚«þ»ºÎM]ŽNÕu½Ï@"�2Ž�÷²©t­cÔÆ†%¼¶:º Ú2XgÁ÷gp~Ü  ѱ¿u¤Ò‡Õá??œÝsç£C_ËPÑf~Anóøo±ûõal`@AˆƒˆìA@A@AàME@ˆŽtgr4þƒjì'~#)9ÉÑnú¸Ú{Kt`¾þ¿ÿNÛŽ§¨ì¥ú½{wÚÁÄÂOK—ªSÁYß¾BW§¥ëüæû~__ÚÂã7stŠq"7átO�8í“+ó„è@)+°±œ&WöD˜ÏäÉtä•£z1§´ŠÃd‘3¢Ýݽ΅»vÑð+Ô:ó=� ¹»f%:>åh�ªDƒ¸{k?£G`%'¬í„“wŒªrFt$Ì��zø²g‰íÐìC4ÿÃù�H�ã‹�ÞVw5¿!:Þù໇šÍùæÛxL:°Fƒ5Å�µ§u½%Gª)WæÑau^»šÇZ�D¼-vûÜmEàz­ä„õú�¸+¢£î”ºônkí…™c$Ý8yƒ¬¤¢e@¸šßS¢k›Yc&�ZqJEs ÍÒŸáZ†g®¾ƒ*~_‘ÞëØci%:zžëI Ò'°^¦"{E¤+écÖ¨s0H§í™WasÇsDA'¢$)´È8Ö°p §cj«É‡m×õªŒG¬8œr‰�ÌH©†4?H54‰�¶ÿgï:À£¨ºè¡ H•Þ‹4iÒDAŠT¥J‘¦4QDÄú+*V¥KS@Š"Ò”*©R¤7齃þ÷¼ÉËN6»ÉfCB€{¿��7¯Í›3“l¸çÝ{˜b)"£€9¯a­�8‰Wýæè0…”·1�I“§ÛI4ß§•)©˜>‹Öõ}qXÿÏ)»?{¿Pˆ�é Vs�!„[WƒâÔÔFð6ŠDÝÛ©]s>¼Æ‚wÿÈÎG .}_wz�Zèî1ÅÉ>DîƒFÁvj}x[‰œY(_­$‚–!dïÇ»_Dç6‚¡Ô#NÊ$_}£ƒ-çkSÅIÅE݉@Ÿ§{n�÷@ê¿<[Ù™�éË(î¶©£äû»�S³@Þٜ͌²û»ûû+3•Ó[Y#©÷Xö°æŒ�©ô$к»ç:¶¿ûH!òOœ¯NS͈Î]W�ê�üPî9nFù¸¤eÚÓ7%ÕZ¯�‚=*Š€" (Š€" (ŠÀ�Š€qèÉŽ”�xïüö�;ºª$B6Ôí ¦­ª.Ú $=K ¢c«èt>Ü\¦aùòÈ™>}ÀD‡{mK…ìx[HZfÉ=AH(ÑñŸL@Ñq*´,2/SÖX;xò¤-�j�ø#:½ÏÛ·ã�ñãͼ‘6¡)Ä6ÑñÃÓ?`ëä­ æÀ«Ge«¯—�Þ#ŽlÑ4 ù$:D›ƒ´?¿—è Ñ«H‘9^9ôŠ©Û6m&Ô›)ÑYT'3щ%z@¶í–ëZ5û×4×p¸ïÕ>•4R=+º›Ã”!:ÜÄIþÚù‘¯f¾0sxŸ¤Ì–Ò•s�»víònŽð<­¤}K’#=ÂŽq¨ñȦ#RlˆYõRÊt.nuS[‹¸·nû%:DŸƒ:´�%zcÛq¸Iª¡%‡ý•›It¸µ^¬p½Õ¡þJ÷ýÝ aç¾7ÑÑóxO$»O¼ç^öA’pãê “žŠiªh–衆 ï!2+Ø  ù:!ºK§]©e"Çßky$2-:Ö«ðã0Gãàk‡«5Q Œn`Z¥ásœÙ)úLñgjvŒ]æì¤§#™�"ÚÔØ ™A’�‘ßËkÂ�õÔÁ`*(·Y½j'PCÁmgäWtqìÓÜú›…»nòº}5IÒÆ=íôq>W]R]ÉšA1~…§¥ß[À°�œóu}ëÞ¼ÙÚ¹Fh,8àlé•&u2Ñq`ÿ~Zt R†�‰/Ô¡€75&,þî^�I;EË)þþÑ(wKàebIL[Ê×ëëίöpƒ£ƒ-£*ø<)ª•çé^„›ˆš¿È$dBDFqõO_v°%ñF]·Qh|Ü mz!ˆŽzZ: !±XÞsj¹…á==–¦nôDâØFô ûÐ!ù¨·b�ÄEׄôéak‰I8®‹º*n+TÂI Ù}»ÇD¥|MrgÍ’ )Ôt›!¯ðÜZŽT©ÐV´~hJtXTô¨(Š€" (Š€" (w*Jtı'{Cþ·ˆáe+&‰Ž ¯TÀŸ?îúÞŸgþÔ}(Ò¤~ßлaÖ;îi}¦h¸>¶"¢ƒâÔŒ"!qáÞ¥oçðw¼Ùbäþ®s«ë/ŸºŒOÒ~b–AÍ jWx›�žˆKDI3j‡ð]*Ö¢žúî)ôÏ×'ÿ>iˆªf?7ó¾�0ÔjIW0]˜>×/]GïdN€;%ÖÜžs±¬Ï2ó;í­‹o�ú2�ØÍ#äzìcÓu"àEçVТ"ðÇrÑ2r£»ó¨Ñ^H�²»Ýê ¸Sø4”_wÿ P„Úý¨tÒ‚ƒÈ�™¶8 |`õ¼Îyá‡kyAÏëðz4·F‚[kâû•@ѲNûIMŒ*BR0=UÓβ&q*[ë&¿:æþäh*P[ÁÛ˜:©Z.‡Tp<Þý¢rn5$rÜ/¢Ù;|�´bå…K A¶:l:Ô ù'¾M;…mäìÐ^ç¾Ø—D _l)î]Cî‘•çéŒp>­& 5/|=w_–ßh%úß9z#Ôñ¶Ë;¼L3ùŠ>ÛÓÊ”TLMå‹�ñô ¬tñ¼£õÁ¨¦er þ)F’�ÑKVÝßLL]6ë{‡,9qÄéÅ%F*ÝL[ÿÏ?F›cü¦M8&‘ÖJHV�üùñ\©Rò³˜¼ï\X‰‹�E@PE@PEàNE@‰Ž8üdHÔÂ7åÁH�}!;òìrKeΌ֒éyù�lbn¯õ2·s¾¶ôéQ§ŽWß"ݶӺݻÑ}´³�7Mòä8"6¢ƒs½:v,Vÿý·7Ÿ-DG"ke¿@‰Žo$âeÌ¢E‚º¥K#»ˆ´{Ûø¥KÍzï•”_S{öÄ÷Ë–…5]ªWÅÈ­rŸ×Å«÷L¿~†°á¸Q]º —D¹b±Mt,ÿb9æô�-ÏbLAÅTTnÛ8v#&·œlªâÑ1¢üXy™ŠgBÇõÝK5å ߉¸z«)¦Üvi[䨘#\[1¨ð Ûr̯cÛöë›­/Î<‹‚õ ¢é”¦¶:ÂãÝBt›NŒé§˜†ÊÛúß/ÂΓ1Ñ1££Ð]ãSWÃ{-îóy¯ÏÃÒO—]šÆ?66鬨ÞlZ3¨SÀÝÕ”ÝM§6EÁzÃô9²Q¢[ŠKØ‚X½‘õP¢­lË[7b¦=7Í”;m脌Å2šrd±Mt¸u¬ вypéðÅâÀn쬺¢8 OŸz4hã‚S´™»Ø)N¯Û–þ t¨éÔx;pÝbÏVÄ=ö›>rížNz¬Õç,3Ò…ä�5:ÌÓf°gž£[C‚rNo;,‘ Us:µ$‹(Jî6:ÏŸ¯áÔøK·åîï«L�ê�Ð(dž¿¨SöþŒ¶nì¢ò<ÝkhUÉÑy ”dªWø{³�dòë¹Ï÷L (ïp¹T‰ˆö¯Ë»ú±§�õ|6–°ó´D¯äNCæÖ‰lVFÚ�ôcê0w$ð¢k—®_Ç×’º“âã½4ÑòJa»’%�®7ÆX VT<ØqöºzTE@PE@PE ¶P¢#¶âzמ³s§‰ò˜¶mèx·¶·[705�·E—èà|�FŒÀÖÂLí&:vʲÿÜ·µä?Ö¾ Fr´<®\AŽté0æ…/V˜�“@‰Žv_��²‹1¾DˆPƒ#…ý’O¦Nůâ Q�|‹¤â²)ÞDûDvŸìãÖé(+)Äz7mŠÄ ²)Ô®ˆø'õA(„n-¶‰Ž=‹ö`Ô££ÌåÿPvä¿vGþwO|‡�se‹®X\ :ÜzÖu@æ²%×eVLš*¯|Ågz!Û}|íñØ>s;’¦MŠ×ŽËvõx¶%ì‘D ŸxñãÁôô¤Û!äŒQL{DcÈ~y¶<jL[•2¥x•o3Ueö,܃$)“àÕ^E¤ž÷|ÿòýYq¤¹£˜ŠèXøÞB,ìµÐ¯ŸzLˆ1zc@þæ%J–×.^3)£˜¶*^‚ð/ƒ›èð¥)3÷5‰ÜøL¶�‹¹ßM¦â"©öß�ÿB£Gü­Ïý1mÕ/ÂÚß8Ö3 .GŽu‰°Í­‹0g·#ðÍ�æµ 9Ã…Àh·C~²üÚ,P\ÅÂoøH/?Ž¿tRÙ‹ÑiÛ@úp�BÛ�×wÊüüêMÙe/Îg¦¢86õ>Üöj3g·;ÓaQPÜÚ¢™"]Û9óNôWÖÚ¼À¨Ú¤uÓY{§=ð“óZbÊqø³-�ÓR~ îÚêÜ/#¼×d{Û4Pö|¥Üë½á¿^áÖ�`T £cÜFÑí.²·€Ñ+4K 9gΧV'÷OÂ'IRwk`åïHJ¬BŠs0e“/‹¶Á>O÷:ÍâDÿ¸5YÜíî2S}‘Œ»qÃI{F²Ém{äù=YЩé;ÑÑ¿°íL}Æ4]ùŠ|—ýižPÆ_›�Ë}´º6¬cd#t1þ©VS~ÆÈÏ_tÒ“¹¯µùØ1‘¿«¬q£KIoÊè�Çrçöùµ,aì8»6=*Š€" (Š€" (Š€"Û(ÑÛˆGózÿœ?ovò��ÔV;O�‚›è €øé�ôÿˆSí»Å‹ÍÕ gÏŽZ"jn­b�H-Q¥tbßeBª¼5a‚fŽn¢c¾¤Køà§Ÿ�Nœ¹�DË£°¤uÊ))µ®ËŽÃ {÷b䂨/yéiO•+‡kÖ4e_�Gäžš|õ•Î{Ô®�¯©ðÛŸâ½I“L¯›Vv6FDtDvŸœèªÜSS¹öIÁŸVcïô‚…{]n¢£š¤{0W.3Þ×GnÁŽ©±¢kÃÊ Ã¡5‡�(y"4›Ú yªæ1‚ÊK?YŠùoÍ�>.'vœÀÀB�Ó˜Žó¿´@šS²¹çŠ©²ÕEH•Ö‰ÊàufÊcíÙÜÑ“ ®„Ü6lT5 (ÒMg¹ÕŸà i×oí�t"¿)eî¶·6o¯h0¹øF)0Z¡DE‰ÂXj{yŽOp4 jË:>ë©g¬'rËïÚ+@Ê4ÎnýšMD+HËýf %Z¢Ä1À£5wÄ£^úH´d.j%ô|Fœßk�{ýl\øTZvŽCrÕrÙ3G»avÈ5=µNÉ-<ýÒ‡!bÙÂ�?"×GüñC[w¦WúKxr…&Œ– S~ê&ï+vÞYÈ”E3"�ˆ¶Á>O÷X¢ƒz.$Æ óDò¸û±L‚�DmÄ\ࡪNÙ~ºÓpY²Î¶Q׃ú4’*=¿ðUW.9©¨Hˆ]–ò°_�~ü$M¹¦'›‰NLGÏê´1½ßej‚Ps%·,3¶zƱ4º¯è„Èó%9G-($8ø³2æK‡Ôc?oR†uÁ˜%: Êæ‘ö²É„©LÓ%ó ¹òš8XÂ"Øq^—×SE@PE@PE@Pb %:b ê›{!ù9~—h‹ÒâhO²=µåÀ�Øüx¤ú¼eK”–¼Í‘¼F[Ù9¸ûèÑÐ9}¡�~ Ù$½ÔˆŽ�Þ‡Ÿ.¥®š¼r%úÿ"±Ö�>jþùšïÜå˨÷é§`$L¦Ô©ÁÔ]‘ݧ½£dÞþár žÛ6{ô&`ÜD‡íãïH2ªg½zþš®ß5oÆÕgœ´Dgÿ•óWpåÌ£'@G,-.\Çìî³±âË,K“; Î=êiÐRdI�çV=JZ˜Jì?ð��8³ïL¸V÷Ž|62ýÐŒÎ3ðï5ñH‰ÑI�*{*C‚\9{ÅÔñ£Ëæ.wÑù�Sm vÍßep`4 ߡӻO›h ’Œl‰)¢ƒä€‚pz�xâ½,ïyÑrvK¯ZÏé¦ñ›ðSóŸB+|ioØF7Ñ‘øÞĸzþª!&¨¹qî°l�cdH«¹­�½Bv;Ì/Ÿ¾ŒÑ��Æáuâ�ct�Mwz¯àô/«ÈÎïF…Ñhb#SŽí�OºtÈ—ÜIÅë÷é!©÷Äù[¦²:+²QEd7ü«œºyS„,xÊ)ó“"äüš¡Ãœ„5 ]‘ú>q{}åPw‚âæ]…é%¦ân}:–é„~¶{Øv»¾°µŽSœ!Äf$#:ÜFr¤¶8¡îqjIàpÍÔk 1j‚é®HØø3KøØvŠ¡SÝ—½ù¬›�ñÕ¶®bu‡Ì¡6…·Ñ±¾ïoÙéßJ飽[ßïøSÒ°•[Oç=�ê´¤É�#?ó×xÎY Ûèw¾«Ys9ĉ'¾w4_CÔ\±Æw‡×e”ÃÈžÑ …ü}ÐörŽ$I ÒxÙóÔå`Ú*kÞš2¶>˜ãen$‘¿EÊe ac˜Ä›°ð>·Sx×{ŸÛ~zTE@PE@PE ®" DG\}2A¬«í�! 3>2ë׺5ŠçÊ…–/Ç�9sL÷—jÕBƒ²eà �'Q½%jÚ›`8"iX~úýw,‘H’Ã]âmLíT¯L4—ÈF�DdM™‚96˜.“ºw7Q"Þýß�8‹¶l1Õ�(ú¡ËÈ‘&�;SL}lHtK0÷é^I”¾3fÝ‘óRv[fIUÔ¬bE£bëgË=},÷ˆQs¤{íÚ�t�´Ï¾¥ûðc“qî�ã°åõG×Ç·•¾5ã)þMpšu3Âá¥�/™ºÍ7›9èäî~ÀñHnŸ!»ýëŒ7á×N¾fú¹?(}öÀÙ( }süÚák�¶ˆ›d Cý~ÉûQT}$Oñûc×páØÌyeö.Þ :œ­Qÿƒ: n£Ãôç§ãઃÆqïnK›7- 6(ˆÊoWF’Tâ-»ËìÆÕ VÆú1ëMt o?~¢ø(×µضjà*#ÞM"ÁÓF1B§Á˜(Þ²¸©ô€è¦l=†ºÃë¢dû’¦nXi‰8Z{5ûÕD¹ËÙáaŽ'±aôC:ðš´Èˆ’xÔaʨl峡ýŠöaæuŸ¸‰Ž¶KÚ†ûy!qÑxRcd)�Å=,´Ìk0âhÙçËpõÜÕÐzHå­šŒöÈWK<Ú·À¬À¸[˜™ºÔ×hõ2ðZ_gQÝÄ¡?w²ìdï¼ûµg¡#?¿'N⋞ºû ½†ƒz9i™¼5ÜÛʯob�ÑH§�úM—GM1ôƒNû¡½g’*$Rb´GÉïóE¬º_è�У7Þnã­ÛJ’#$F(Æ^¥®­õ}öÐOúY£x;Çù²Æ¥�(wÉF,dÍå¤ÈjÒx°‚»‡§ÌÔV¥d>�è¯å8Þ=­¾K6ÇwkØÚê­1‚ÀmÁ`Ýçi¯O‚Š„ÚÂB–É3äýÓ|EH|ÐE´,YrÊ{¹Çt óÑéIŸ–¬sw`äÏ'/˵¦»k�2 '¾$Øø.[#¡Áë®[êˆÝÛzùQ·æù7�5¹ÛXò¾“6ͦrs·óþ:Ë}×hâ…î¶Ø,{Þçv-ÞõÞç¶ŸE@PE@PE@ˆ«(ÑWŸÌm¶®c"œÎ'Î�3‘Œ¤È(ÿ¼u,n³Ûò»\ñOá°Dvì’h—¤‰#ƒè¤0rE|]qʘfèèæ£ÈP$è¼�Ó& Räš‚âÉÒ'CÆ¢Á�ö1mŒ¡3ž‘ Lq•*g*ÝÓ×½æ'6×$z$á—mÏBѨ©2Ê,ÑM®øZ³›èxûÒÛ&Ú‰ú'¶�0?/$ý2yo™�ï-#9RfO‰´yÒšÔq��Ã�˜®‡ZÎÅÊ Y*ŽâØ2îÎO‘Ú¹ÓQ�öí‚�TQÎi˜O‡ö:zÔ)"„D0Úa&½O‚Áövƒá´DƒPÛ…ÄJ*!Ì˜ŽŠéÌ"Òæ¸tA¢8¶9cøeÎþüÈ;D’§�;„W¶<ΑØ­¶` ‹`ÇÝêûÕë+Š€" (Š€" (ŠÀÝ‹€wï³×;WEàŽB€ÑFŒ:"AÖãp�‰2_DÇÆt3]d>wè3Âc±¤£ò'º}Ýr¬ÝŠbkPß² KX;î–ݨ^XPE@PE@Pîz”è¸ë_@P�Û�‹Ç/šmëF®ÃÊþ+Í�0%ScEdJtD„Nì·Qpœ;ê›urpRýP„é¤~欇ÂèOµ�ýµÝîWTlo÷'½õKX;.z«ÕÑŠ€" (Š€" (Š€" �€Ác§#E@Pn1ï'zßhrØe¤+˜m·‰T×E‰‹XÜ8ºu/’ÜãžS#ÂZ ¢Ý¶¿=(¶,îÆR°„E°ãîFŒõžE@PE@PE n  DGÜxº E@P� è�´·HO•=rVʉªŸVEŠÌ)"�ií°µ˜ÑIÔ‘%‡þÛÞ6â‘Ò1†@/C_<8rÐs êlP4ºãÛ@åÚžz-E Å6jxÝi½-aì}½ûî»ÁÕqŠ€" (Š€" (Š€" Ä*JtÄ*Üz1E@PE@ð‡ÀÅó#9’&îË诗Öƒ€b j·ÿ%:nÿg¨w (Š€" (Š€" (�! DG`8i/E@PE@PEà¶B@‰ŽÛêqébE@PE@PE (Ñ ðt¨" (Š€" (Š€"WP¢#®>]—" (Š€" (Š€" Ül”è¸Ùˆê|Š€" (Š€" (Š@@ÀQÕÚv\¸e]‚" (Š€" (Š€" Ü¥(Ñq—>ø˜ºíãgÏâä… H�,îK‘ âÇ�©KÝòy¯Ý¸�}ÇŽ!iâÄHŸ*%HpË×Ù®_ºŽ%/Áÿý‡"M‹ Cá ‘ ‰³íG6Áš¡k­/OÕ<(Ô P¸ú¸T1ôCàÂY a"àÅÞ�¯lãJ`Þd§ÿ#µ€2•{³zûWìGò ÉQ®k¹›5­ÎâÂ{…åj×X@`Î$`Û c6 ±»Ç„ý:ر È”hô|L\áîž3Øï…ÈP –°v\dëÑvE@PE@PE@Pb %:b Ù[0o÷1cŒã=²K¿ß¤ È– ¿®_� Ë–…vïX­ÊŸ?ôÜ–þõ†ÏŸoN”-‹úeÊØ&sÑm¼pìúdèc¦yzüÓ(Ú¬ht§¼eã·ü´ŠçÍËÊ¿T5¾ªáU·NNœ:$HlôüÈDºÈ ƒ€Þ/8ÝH�tx+Ò!7½ÃÌ.3±zðjÜ—ÿ>tÝÖõ¦ÏùÔe\:} ïIˆ™SÜôùï„ ãÂ{p'àx3îaü@`æøð3%O dB œ|mÕh Ä�a¼IYàÏÕÀ£u€AÓ¯çfÔ4*lYˆ ’jÉ›`_K‚°lÍÑqñêU´2‡O‰ÇB¬¨Do0"„‘ g.^ĶC‡ð³D[œ’5Y¢ãâ•+øñ÷ßíÔ¡Çy›6…’4ŒI�<¬Gˆ(e„œqÛ!MZx‘&uK—F÷ÚµÝÝ¢}ŸœŒ©žÚ Œ=!¤JŽtéÀuæÏœç.]ÂÆ}û0yåJäÍ”É/ÑQ^°)$d’?«T¨rgˆÙTRwÑá�c¿<ýpj÷)%:¼�¹ÉçJtÜd@ƒ˜Îí0¾U‘=A,ûŽòHFàäQ »|=5íäÜ"‰‡Ãû�Ùpv2„‡gôUTÒÔE¬+—€oú8�’UŸò�ÊèÀúnýhÂÃü¨R7°qî^ÿkLþF"]rH >ÿûÜCwÕãÖ›UE@PE@P�@@‰Ž5.L¹KÒ*µ‚V[¢!zøˆ†ðEt�¤øªuk3Î~ø#:Vlߎ7Æ;9;êI:«—Ÿ|Ò =2ÒcáæÍ¨Z´h„zïOš„þiÆ}ß­2¥Ž|«çË—cÈœ9fLú”)Ar'�ìÞñBWŸDGTî“Sý&k{OÖHËŸ% >oÑ)E‡ÄmÔ'Y·{7ž(^<´ÚÑñzýú¨!$Ó­4%:n%úžkëЊ n%:<ÏñV•âÂ{p«î=.]÷ÈAIã$š´&�wœ¯\§B>—Ë×ÓsÕ�S¦°úÆÉÚ~;HP�¨ Íßçèt8g�’(!alê«À¯t{ö ö{!²» 6U°ã"[�¶+Š€" (Š€" (Š€"S(ÑSÈÆà¼Ô‰˜)c7nÄP‰^H›4i¸«E•è Æ£hL½ÄLÖ)òEHêª�<‚ö�?nš¾[¼#,0åÁíÛÝ;&ªÇ`T¾À@IDATˆŽ—¾ý$�£S–/�Á³�ü!CŸ„Œ°æ&t‚¹O¢ÒV¢9v•m»bC$½WD‘¦SÈÇ­$:þþõoì]¼ǶCúÂé‘çñ<ÈP4ƒO�ŽS»NaçÜ�¸'õ=H™5%Ö�Z�oü‹Â� #_­|Ø2i þúù/$H”EŸ) ~û²Mã7áʹ+È\"3²–Í ÎËuìþm7%M„,¥³ DÛH|oâ0Ãÿ»ñ¶NÙŠÃƉí'�4MRd,žùjæCšÙpW/\E¦â™�ëÑ\Èñ°l9ŽA Ö¡›îs‡Ïá¯)áÀÊøïßÿ�ó‘œ(X¿ ¾·Ð§FÇæ‰›qéÔ%d¯�;fîÀÁU‘¹df”êP 7®ÜÀÚákAyb\¡G…ÐwàúåëX?z}(ÚÆlÀþåŽØy•÷«„Ö³�*G*óNØÊMä};{©²K½¼§>M~€×�\gÞg¦Ãâ}ÐŽÿu{íA¼øñP²]Iìš¿ »çï6õ‹e4ïAîÇrûœÒVòÚÛgnÇ?ëÿ1㸎Lf2?7IR%±Ýnú1*ïÁ¡½ÀÒ_�IJœ|E€©£�Ó'€ê�€ª €…’•pá ' ‘d.,V‚ LU´n)°f1ðÏ~à„h,¤¾Èq?P¿µ‡÷ªß€=Û�´¢GÃ(ƒÕ‹€s�훜1u[ÅÊù‡æÒ`¥|½,ž\”@ŇªIAGÛfÓ*ѼˆÔlê[çáÌIgÍk—vËõ„Œ(*µšùîï^£1¦ŒòÔ$O!×iâ9w—ˆ]—�Ȇ÷†Iăàç6~¥–¾ 6E©G€1‚¡·q�;·È»�Öy&|6ÄŽ÷~ü g~Èæõ+wÒp@þcë0•>N‚Á–Ú@|ïÒ¤“÷I¢Tyžë—;ÏÛ.áî¢su (û¨óìl=�ÔÉàùÚÆ…sí“Gj:ï.ÿÞ —šu’„ÿó'tZê -ùEt�Vûw:Q7%+úoBJÁ<y‡ö|ŸÒf�g�ÛYgÁö+œ•×ãœwÿð> a" }f xy rmàޔ-ò½pðÜ9t—¿už• 5î¿ñ: –°v\Ø»Ò3E@PE@PE@Pb%:bëh_i÷éÓ!šßþñ‡¤¨Ú+Ñ9ÄÑïmQ%:šT¨`R/]»qäŸúø™gB§ôGtP€ÜŠ™w“ho‘òÐ (D•è8+©±ê÷éƒÅ“D]‹FBt´2‚Öªre´­R%ôªn¢#˜ûÜ'º'­Dÿ„–KRK�ê,Þ•íVÿ^ÿ³^˜…5Cׄ[eÅW+bYŸe¦Þ-F¾qìFLn9ÙÔSšÎg�À%Ú”0ŽbS!ñÅGÛÅm‘­|ÈVfÛ Ç/²~�s‡Î¡Â+�2[Jüú²xX½¬pãÂhôC£ÐZöŸÔl’!eB+C $Dê ­cÈï6ïó¨t¼Ïé9«¬ %øÜó•ïVO|ö„¹WwýÍ*âÐòu­¨8¸}�´ŽЄºpþŸóa†¤½?-2ÍhH)o1òþ÷÷ÇÉ�'/��¦B\YËþPvC~ýó¨­BþÚùñÌtçw Ÿ?ß›@Œ[«¹­B»RŒž¢ôIR&A�Ã=�(™x½lÏÂ=Ue”©­=¤6Jw©Øê!«1³³xNÅ~ýa,ýD¼ù^ÆŸ—jŸV“¯9Ý¿b?&7ŸlÒ¥y·¦É� hˆ¬e²z7Ý”ó¨¼ßõ>éæ\6É=ŽŽÏHÔ²áçÑž%%J,Ä‚8×S†p‹v $@�Dƒ/cÿFÊ<-·¶xøC~Õ0’!»8é'�Û‡þÙ¯&9$HØ`ÇŸ@»ª©ân£s»D‰Òë/cùڣ΃·Ÿ—Îð—å× Ó9yÇ~=ËëÝfÏIÄ4(fÏD»JœÚ?ýá9w—¿'z95å×máRîVǹ^C!š¯ˆÖ?÷„D~Ì•û|»žÀKO$[Ü–%'0w�§†ôªRçm f#d®ˆ,Xl› vëWIQEH®¼�=ÏÎB^,šÑjô¤sj¼'ü$HhkWÿý7^;ÖL×衇À957ÑA!wêpø²âuÌ#ë¾¶à °¸÷b3w°zª�Ùõ¾iÜ&\ì‘ ŽÓŽ»}7\õÑÁOÕ„Á@ï.NãKâø{þM?£Q}ùÔe|™ëKóÎ�´(Ö¼îËwH0êÁš_¢C<ÏEš1Q2G7{È ¾‡göž1ï ´žÇz"iÚ¤¸zþ*öZh§5@Çè"FZ¸-]Át(ÙÞSÇh¡±5�ŸÍc xËâîî¦<µÍT¡D¤Ç¡°‘n¢ƒïÍx¯!Ô&Mˆ-?nÁ‰'Ìø_Ö‰/·1ÊedÅ‘†ÐI�8е(®�LŒN¹~麹N×m]ͼ;räHÌr8PcôÙ·µv�üž÷¶¨¼o>+dÆg†Ò•œÈ€©£<3’<("ÿ~øÚ©ûHÚêÉÚ/?=š:ÄGEqÈçÌ�Ü`#<®Ê�'Éê-pÇ»5F”Kå!HHFpÇ~ž‚²#ÿ7àÏÕNO_$¶ ÉÁÝøÉî•qµå».�|Éc>wÚ^Á‰ øVærwÒ¿ÙÚ! ¸F€Ä‹/$ÁOή|ömõ²8²ûºG…-“øáÖžjë�9öÜ}ìZX _�ü9^-Œš±Æ´VÝ„´`4ñSä¾ò>`[=GëÜΕ_¢GùÊGÑ2BªŽœ9Žù¡â¸·Æ~${hÿ Öc„ ‘(éþ©Söõ,¶Œ (#~tF¦Ð}žc¾”( ÎFwlR‚ÖâŰäç{ùcG§‡ü¼|ô}Íž${Hœ?#˜Oó¼ ¦:©°<=�ñ��䌨a4#yh¿|ï`ʲ/â‰ÑKõŠ{wÈú™!¿jø3ÃHF'Í›ìDC­:^X~–ÌýjÈuøîq#–¸^D¿Ï—ç#÷Óý^Ý·ò½À /Å%-é9ÑH³Æ¨Fw<'„GmÑKHÓeÁÁŽs]Z‹Š€" (Š€" (Š€" Ä*JtÄ*Ü�_l»�Ã%zcôúõ8&Ñ ÖøÚªyò �h=Ô/X÷$Š †è¨(óµèßßDIK/ÞJ1Åsíâ5|”ò#ƒs‹_Zà~»ÝÝôr>¦w˜ŽµÃÖ‚$ñ�ȘRë«Ü_á̾3†${vÁ³aº_»p }2õ1ïPñVÅÑ`tƒÐv7Ñ‘<}r´[Ñió¦5í—N^Â7ƒc[�™È¤n»ºy¢{‡�0)½HÆ´YÔLue�i¬†–jî‘ÑPõ¾©gšž“”w#FŒ°Ý:’`Kéc§vTÞF'0J¡üãâ<–]òŒ`:%’Œpøn©ã¸.ŸÆq÷ 4zÞY#2˜ªŠ)wHp¸m„8l¿|é,¿+Ë�®µÝ‰6T!çŒ$�Ñ•jÙV'b‚kº'™�&<õ$Hjåw"!Hr|»À“J‹é–ªÈ� %;¼ :¢ëÈ59IƒÑ‹€t™œ¹y¯Õr9© 8/I öñK�}Þ§y3?¯áã9œt^${štrfäµî–ÔG �¨Þ#ÓZÕöÁy2ç°V 8ðñh€Gk¼/¦¶z\H_æÆúsq¶ûK³lyýº…�«Gåyº×û¾àC2�¤ÁoÝ-¾Ë$ØH´Ñ˜ºê )3��„#_h¯È¯˜¶¯:e~2EU½¢ö|çû ÉÅèn^eBreÅI Ej§�Ÿ³"¢±sÎqL¹æ6F -ùUê=¿FB›ŸyÈ!r˜ú�)ÊøN¸mûF¹¦ü¾gú8è÷ÂÅk×ðÓÖ­&ºwáž=a6Àd¾÷^´a”‡üË“F~¨Å‚%,‚çïþ´^PE@PE@P�˜F@‰Ž˜F8 ó_ánþç•Ñ‹D{Âmù%b‚9™[É¿l>_î¾,Ct0Z¡÷äɘ'Ú$T¾ëÚYÓ¦õÑÁë¬Ù¹ÓŒ9}Áå­bƒX*ë®)ÿÙf©Ä~§§DeDAŒœéµê~ú).ÉŽÆ"¢%2P4Eh=ïõ£x*Ä^¬YO•“í”bÞDGTïsøüù·d‰™ë ¯AñØ&:¨o0åÙ)f­�&62Zæ$äƒ)­,yá‹èH”<Þ:ÿ–é½jà*Ìê:ËD:¼sõC@üñíø¹íÏHW ^øë÷Ô¦ì&:ZÍketAÂurUØÈ ¦Ëzåà+f‡¿«3:ÍÀš¯×˜ª®Û»šÈw»»(Ñ1²ÂH“vˆÚ/l}Áîyè¨þº„xäĪ}V L_tV„æ_}ÕåMsðS~â‰'ðôÓ!Þ8?}âbµÅÑÑÀTV}³÷Ó£ù#:žèó„Ñàà½}–î3EôØ�¡ÒÛ•Ìí~™óKCL4œÐEš†÷úE…èà„‹ÞbæÝßÄq/ízÉ�tæBòáþy !‘³RNÛ&uÕ#o<‚Ç?¯¨Ë¨)2ýù馦ùÌæ¡ ;çìÄwÕ¿3õu‡× ab‡_ÿ{£iÃÔkož}ÓüìŒ7‹‹4 Ö_ˆç$I„Ñ Òè8-#Îa’~ëhj°®tr‡°ºt‚³ŽmL­Ã�ó‘ÙÉ£â€áw>ÞðÉg<#fŽz†8ö;¿+:½…=Þf‰"DÇ“ƒŸ4Ñ9gI wú§�…áîÚ_‹^F‡ÒÞÓ#ªD£„¾Êõ•LôÝGñh¯GCçýØhìþm·!ÈH”¹ÍÑÑny;PKÄmcÿ"˦ªÖ€Z(ûBYS^Ñwf¿2Û”±‘,]2Ï;òþ�,³i¾˜¾ŠXÝ cЍ&β!Y¾�=/°e�Dl”rV3ó/'EÒq�?YЩ³ýìz)mE½íý�³N �Í6%֨߄PyÔŽúôF tLÿ³X¾¼�÷/6æOu¥'Ê­q­\sÖ\À¯;�ˆ'ÛÆ£;ŠdÚfO*(¦xzBÚL=T¿µCê¸Ç±ÌtFæý,_³÷vÊÞŸ'�9Ѷ>cVY‡Ü‡·QWƒú4 M[±ðó‚£,ö Þ´2•�þÂ=[ݧÖùt;Ö}¥`r÷õWþ\~]û¹í°òŒ©à«o°Ør®Ï^‘™¾Qžv$ÚH¸‘HëôŽDU„� ¶ÝûH ËK¤5·ê&$Ë—a{0×S:uîh"êrt¬åÔwé�”ñ6 ¼WÎìÔzGmü6MÖVÏi£¶ ×Yòaï|Ÿ7, lýÉ´cú°zò燯gî{tôk*,– 2Ôp›$‹]�¨k½B JtXDô¨(Š€" (Š€" (w*JtÄ¡'ÛH¢øTk_ÈŽp¦ Hã#G»íãï,ÑÁùÞúþ{,ûë/$/Õ÷/½„B,|1}º¹�õíÜßeq\v¾¯ß³Kdüb‰N±N䦒¤}ògQ!:˜FŠÄ mˆ¤ƒ)”U‹Öõ}qXÿÏ)»?{¿Pˆ�é Vs�!„[WƒâÔÔFð6ŠDÝÛ©]s>¼Æ‚wÿÈÎG .}_wz�Zèî1ÅÉ>DîƒFÁvj}x[‰œY(_­$‚–!dïÇ»_Dç6‚¡Ô#NÊ$_}£ƒ-çkSÅIÅE݉@Ÿ§{n�÷@ê¿<[Ù™�éË(î¶©£äû»�S³@Þٜ͌²û»ûû+3•Ó[Y#©÷Xö°æŒ�©ô$к»ç:¶¿ûH!òOœ¯NS͈Î]W�ê�üPî9nFù¸¤eÚÓ7%ÕZ¯�‚=*Š€" (Š€" (ŠÀ�Š€qèÉŽ”�xïüö�;ºª$B6Ôí ¦­ª.Ú $=K ¢c«èt>Ü\¦aùòÈ™>}ÀD‡{mK…ìx[HZfÉ=AH(ÑñŸL@Ñq*´,2/SÖX;xò¤-�j�ø#:½ÏÛ·ã�ñãͼ‘6¡)Ä6ÑñÃÓ?`ëä­ æÀ«Ge«¯—�Þ#ŽlÑ4 ù$:D›ƒ´?¿—è Ñ«H‘9^9ôŠ©Û6m&Ô›)ÑYT'3щ%z@¶í–ëZ5û×4×p¸ïÕ>•4R=+º›Ã”!:ÜÄIþÚù‘¯f¾0sxŸ¤Ì–Ò•s�»víònŽð<­¤}K’#=ÂŽq¨ñȦ#RlˆYõRÊt.nuS[‹¸·nû%:DŸƒ:´�%zcÛq¸Iª¡%‡ý•›It¸µ^¬p½Õ¡þJ÷ýÝ aç¾7ÑÑóxO$»O¼ç^öA’pãê “žŠiªh–衆 ï!2+Ø  ù:!ºK§]©e"Çßky$2-:Ö«ðã0Gãàk‡«5Q Œn`Z¥ásœÙ)úLñgjvŒ]æì¤§#™�"ÚÔØ ™A’�‘ßËkÂ�õÔÁ`*(·Y½j'PCÁmgäWtqìÓÜú›…»nòº}5IÒÆ=íôq>W]R]ÉšA1~…§¥ß[À°�œóu}ëÞ¼ÙÚ¹Fh,8àlé•&u2Ñq`ÿ~Zt R†�‰/Ô¡€75&,þî^�I;EË)þþÑ(wKàebIL[Ê×ëëίöpƒ£ƒ-£*ø<)ª•çé^„›ˆš¿È$dBDFqõO_v°%ñF]·Qh|Ü mz!ˆŽzZ: !±XÞsj¹…á==–¦nôDâØFô ûÐ!ù¨·b�ÄEׄôéak‰I8®‹º*n+TÂI Ù}»ÇD¥|MrgÍ’ )Ôt›!¯ðÜZŽT©ÐV´~hJtXTô¨(Š€" (Š€" (w*Jtı'{Cþ·ˆáe+&‰Ž ¯TÀŸ?îúÞŸgþÔ}(Ò¤~ßлaÖ;îi}¦h¸>¶"¢ƒâÔŒ"!qáÞ¥oçðw¼Ùbäþ®s«ë/ŸºŒOÒ~b–AÍ jWx›�žˆKDI3j‡ð]*Ö¢žúî)ôÏ×'ÿ>iˆªf?7ó¾�0ÔjIW0]˜>×/]GïdN€;%ÖÜžs±¬Ï2ó;í­‹o�ú2�ØÍ#äzìcÓu"àEçVТ"ðÇrÑ2r£»ó¨Ñ^H�²»Ýê ¸Sø4”_wÿ P„Úý¨tÒ‚ƒÈ�™¶8 |`õ¼Îyá‡kyAÏëðz4·F‚[kâû•@ѲNûIMŒ*BR0=UÓβ&q*[ë&¿:æþäh*P[ÁÛ˜:©Z.‡Tp<Þý¢rn5$rÜ/¢Ù;|�´bå…K A¶:l:Ô ù'¾M;…mäìÐ^ç¾Ø—D _l)î]Cî‘•çéŒp>­& 5/|=w_–ßh%úß9z#Ôñ¶Ë;¼L3ùŠ>ÛÓÊ”TLMå‹�ñô ¬tñ¼£õÁ¨¦er þ)F’�ÑKVÝßLL]6ë{‡,9qÄéÅ%F*ÝL[ÿÏ?F›cü¦M8&‘ÖJHV�üùñ\©Rò³˜¼ï\X‰‹�E@PE@PEàNE@‰Ž8üdHÔÂ7åÁH�}!;òìrKeΌ֒éyù�lbn¯õ2·s¾¶ôéQ§ŽWß"ݶӺݻÑ}´³�7Mòä8"6¢ƒs½:v,Vÿý·7Ÿ-DG"ke¿@‰Žo$âeÌ¢E‚º¥K#»ˆ´{Ûø¥KÍzï•”_S{öÄ÷Ë–…5]ªWÅÈ­rŸ×Å«÷L¿~†°á¸Q]º —D¹b±Mt,ÿb9æô�-ÏbLAÅTTnÛ8v#&·œlªâÑ1¢üXy™ŠgBÇõÝK5å ߉¸z«)¦Üvi[䨘#\[1¨ð Ûr̯cÛöë›­/Î<‹‚õ ¢é”¦¶:ÂãÝBt›NŒé§˜†ÊÛúß/ÂΓ1Ñ1££Ð]ãSWÃ{-îóy¯ÏÃÒO—]šÆ?66鬨ÞlZ3¨SÀÝÕ”ÝM§6EÁzÃô9²Q¢[ŠKØ‚X½‘õP¢­lË[7b¦=7Í”;m脌Å2šrd±Mt¸u¬ вypéðÅâÀn쬺¢8 OŸz4hã‚S´™»Ø)N¯Û–þ t¨éÔx;pÝbÏVÄ=ö›>rížNz¬Õç,3Ò…ä�5:ÌÓf°gž£[C‚rNo;,‘ Us:µ$‹(Jî6:ÏŸ¯áÔøK·åîï«L�ê�Ð(dž¿¨SöþŒ¶nì¢ò<ÝkhUÉÑy ”dªWø{³�dòë¹Ï÷L (ïp¹T‰ˆö¯Ë»ú±§�õ|6–°ó´D¯äNCæÖ‰lVFÚ�ôcê0w$ð¢k—®_Ç×’º“âã½4ÑòJa»’%�®7ÆX VT<ØqöºzTE@PE@PE ¶P¢#¶âzמ³s§‰ò˜¶mèx·¶·[705�·E—èà|�FŒÀÖÂLí&:vʲÿÜ·µä?Ö¾ Fr´<®\AŽté0æ…/V˜�“@‰Žv_��²‹1¾DˆPƒ#…ý’O¦Nůâ Q�|‹¤â²)ÞDûDvŸìãÖé(+)Äz7mŠÄ ²)Ô®ˆø'õA(„n-¶‰Ž=‹ö`Ô££ÌåÿPvä¿vGþwO|‡�se‹®X\ :ÜzÖu@æ²%×eVLš*¯|Ågz!Û}|íñØ>s;’¦MŠ×ŽËvõx¶%ì‘D ŸxñãÁôô¤Û!äŒQL{DcÈ~y¶<jL[•2¥x•o3Ueö,܃$)“àÕ^E¤ž÷|ÿòýYq¤¹£˜ŠèXøÞB,ìµÐ¯ŸzLˆ1zc@þæ%J–×.^3)£˜¶*^‚ð/ƒ›èð¥)3÷5‰ÜøL¶�‹¹ßM¦â"©öß�ÿB£Gü­Ïý1mÕ/ÂÚß8Ö3 .GŽu‰°Í­‹0g·#ðÍ�æµ 9Ã…Àh·C~²üÚ,P\ÅÂoøH/?Ž¿tRÙ‹ÑiÛ@úp�BÛ�×wÊüüêMÙe/Îg¦¢86õ>Üöj3g·;ÓaQPÜÚ¢™"]Û9óNôWÖÚ¼À¨Ú¤uÓY{§=ð“óZbÊqø³-�ÓR~ îÚêÜ/#¼×d{Û4Pö|¥Üë½á¿^áÖ�`T £cÜFÑí.²·€Ñ+4K 9gΧV'÷OÂ'IRwk`åïHJ¬BŠs0e“/‹¶Á>O÷:ÍâDÿ¸5YÜíî2S}‘Œ»qÃI{F²Ém{äù=YЩé;ÑÑ¿°íL}Æ4]ùŠ|—ýižPÆ_›�Ë}´º6¬cd#t1þ©VS~ÆÈÏ_tÒ“¹¯µùØ1‘¿«¬q£KIoÊè�Çrçöùµ,aì8»6=*Š€" (Š€" (Š€"Û(ÑÛˆGózÿœ?ovò��ÔV;O�‚›è €øé�ôÿˆSí»Å‹ÍÕ gÏŽZ"jn­b�H-Q¥tbßeBª¼5a‚fŽn¢c¾¤Køà§Ÿ�Nœ¹�DË£°¤uÊ))µ®ËŽÃ {÷b䂨/yéiO•+‡kÖ4e_�Gäžš|õ•Î{Ô®�¯©ðÛŸâ½I“L¯›Vv6FDtDvŸœèªÜSS¹öIÁŸVcïô‚…{]n¢£š¤{0W.3Þ×GnÁŽ©±¢kÃÊ Ã¡5‡�(y"4›Ú yªæ1‚ÊK?YŠùoÍ�>.'vœÀÀB�Ó˜Žó¿´@šS²¹çŠ©²ÕEH•Ö‰ÊàufÊcíÙÜÑ“ ®„Ü6lT5 (ÒMg¹ÕŸà i×oí�t"¿)eî¶·6o¯h0¹øF)0Z¡DE‰ÂXj{yŽOp4 jË:>ë©g¬'rËïÚ+@Ê4ÎnýšMD+HËýf %Z¢Ä1À£5wÄ£^úH´d.j%ô|Fœßk�{ýl\øTZvŽCrÕrÙ3G»avÈ5=µNÉ-<ýÒ‡!bÙÂ�?"×GüñC[w¦WúKxr…&Œ– S~ê&ï+vÞYÈ”E3"�ˆ¶Á>O÷X¢ƒz.$Æ óDò¸û±L‚�DmÄ\ࡪNÙ~ºÓpY²Î¶Q׃ú4’*=¿ðUW.9©¨Hˆ]–ò°_�~ü$M¹¦'›‰NLGÏê´1½ßej‚Ps%·,3¶zƱ4º¯è„Èó%9G-($8ø³2æK‡Ôc?oR†uÁ˜%: Êæ‘ö²É„©LÓ%ó ¹òš8XÂ"Øq^—×SE@PE@PE@Pb %:b ê›{!ù9~—h‹ÒâhO²=µåÀ�Øüx¤ú¼eK”–¼Í‘¼F[Ù9¸ûèÑÐ9}¡�~ Ù$½ÔˆŽ�Þ‡Ÿ.¥®š¼r%úÿ"±Ö�>jþùšïÜå˨÷é§`$L¦Ô©ÁÔ]‘ݧ½£dÞþár žÛ6{ô&`ÜD‡íãïH2ªg½zþš®ß5oÆÕgœ´Dgÿ•óWpåÌ£'@G,-.\Çìî³±âË,K“; Î=êiÐRdI�çV=JZ˜Jì?ð��8³ïL¸V÷Ž|62ýÐŒÎ3ðï5ñH‰ÑI�*{*C‚\9{ÅÔñ£Ëæ.wÑù�Sm vÍßep`4 ߡӻO›h ’Œl‰)¢ƒä€‚pz�xâ½,ïyÑrvK¯ZÏé¦ñ›ðSóŸB+|ioØF7Ñ‘øÞĸzþª!&¨¹qî°l�cdH«¹­�½Bv;Ì/Ÿ¾ŒÑ��Æáuâ�ct�Mwz¯àô/«ÈÎïF…Ñhb#SŽí�OºtÈ—ÜIÅë÷é!©÷Äù[¦²:+²QEd7ü«œºyS„,xÊ)ó“"äüš¡Ãœ„5 ]‘ú>q{}åPw‚âæ]…é%¦ân}:–é„~¶{Øv»¾°µŽSœ!Äf$#:ÜFr¤¶8¡îqjIàpÍÔk 1j‚é®HØø3KøØvŠ¡SÝ—½ù¬›�ñÕ¶®bu‡Ì¡6…·Ñ±¾ïoÙéßJ飽[ßïøSÒ°•[Oç=�ê´¤É�#?ó×xÎY Ûèw¾«Ys9ĉ'¾w4_CÔ\±Æw‡×e”ÃÈžÑ …ü}ÐörŽ$I ÒxÙóÔå`Ú*kÞš2¶>˜ãen$‘¿EÊe ac˜Ä›°ð>·Sx×{ŸÛ~zTE@PE@PE ®" DG\}2A¬«í�! 3>2ë׺5ŠçÊ…–/Ç�9sL÷—jÕBƒ²eà �'Q½%jÚ›`8"iX~úýw,‘H’Ã]âmLíT¯L4—ÈF�DdM™‚96˜.“ºw7Q"Þýß�8‹¶l1Õ�(ú¡ËÈ‘&�;SL}lHtK0÷é^I”¾3fÝ‘óRv[fIUÔ¬bE£bëgË=},÷ˆQs¤{íÚ�t�´Ï¾¥ûðc“qî�ã°åõG×Ç·•¾5ã)þMpšu3Âá¥�/™ºÍ7›9èäî~ÀñHnŸ!»ýëŒ7á×N¾fú¹?(}öÀÙ( }süÚák�¶ˆ›d Cý~ÉûQT}$Oñûc×páØÌyeö.Þ :œ­Qÿƒ: n£Ãôç§ãઃÆqïnK›7- 6(ˆÊoWF’Tâ-»ËìÆÕ VÆú1ëMt o?~¢ø(×µضjà*#ÞM"ÁÓF1B§Á˜(Þ²¸©ô€è¦l=†ºÃë¢dû’¦nXi‰8Z{5ûÕD¹ËÙáaŽ'±aôC:ðš´Èˆ’xÔaʨl峡ýŠöaæuŸ¸‰Ž¶KÚ†ûy!qÑxRcd)�Å=,´Ìk0âhÙçËpõÜÕÐzHå­šŒöÈWK<Ú·À¬À¸[˜™ºÔ×hõ2ðZ_gQÝÄ¡?w²ìdï¼ûµg¡#?¿'N⋞ºû ½†ƒz9i™¼5ÜÛʯob�ÑH§�úM—GM1ôƒNû¡½g’*$Rb´GÉïóE¬º_è�У7Þnã­ÛJ’#$F(Æ^¥®­õ}öÐOúY£x;Çù²Æ¥�(wÉF,dÍå¤ÈjÒx°‚»‡§ÌÔV¥d>�è¯å8Þ=­¾K6ÇwkØÚê­1‚ÀmÁ`Ýçi¯O‚Š„ÚÂB–É3äýÓ|EH|ÐE´,YrÊ{¹Çt óÑéIŸ–¬sw`äÏ'/˵¦»k�2 '¾$Øø.[#¡Áë®[êˆÝÛzùQ·æù7�5¹ÛXò¾“6ͦrs·óþ:Ë}×hâ…î¶Ø,{Þçv-ÞõÞç¶ŸE@PE@PE@ˆ«(ÑWŸÌm¶®c"œÎ'Î�3‘Œ¤È(ÿ¼u,n³Ûò»\ñOá°Dvì’h—¤‰#ƒè¤0rE|]qʘfèèæ£ÈP$è¼�Ó& Räš‚âÉÒ'CÆ¢Á�ö1mŒ¡3ž‘ Lq•*g*ÝÓ×½æ'6×$z$á—mÏBѨ©2Ê,ÑM®øZ³›èxûÒÛ&Ú‰ú'¶�0?/$ý2yo™�ï-#9RfO‰´yÒšÔq��Ã�˜®‡ZÎÅÊ Y*ŽâØ2îÎO‘Ú¹ÓQ�öí‚�TQÎi˜O‡ö:zÔ)"„D0Úa&½O‚Áövƒá´DƒPÛ…ÄJ*!Ì˜ŽŠéÌ"Òæ¸tA¢8¶9cøeÎþüÈ;D’§�;„W¶<ΑØ­¶` ‹`ÇÝêûÕë+Š€" (Š€" (ŠÀÝ‹€wï³×;WEàŽB€ÑFŒ:"AÖãp�‰2_DÇÆt3]d>wè3Âc±¤£ò'º}Ýr¬ÝŠbkPß² KX;î–ݨ^XPE@PE@Pîz”è¸ë_@P�Û�‹Ç/šmëF®ÃÊþ+Í�0%ScEdJtD„Nì·Qpœ;ê›urpRýP„é¤~欇ÂèOµ�ýµÝîWTlo÷'½õKX;.z«ÕÑŠ€" (Š€" (Š€" �€Ác§#E@Pn1ï'zßhrØe¤+˜m·‰T×E‰‹XÜ8ºu/’ÜãžS#ÂZ ¢Ý¶¿=(¶,îÆR°„E°ãîFŒõžE@PE@PE n  DGÜxº E@P� è�´·HO•=rVʉªŸVEŠÌ)"�ií°µ˜ÑIÔ‘%‡þÛÞ6â‘Ò1†@/C_<8rÐs êlP4ºãÛ@åÚžz-E Å6jxÝi½-aì}½ûî»ÁÕqŠ€" (Š€" (Š€" Ä*JtÄ*Üz1E@PE@ð‡ÀÅó#9’&îË诗Öƒ€b j·ÿ%:nÿg¨w (Š€" (Š€" (�! DG`8i/E@PE@PEà¶B@‰ŽÛêqébE@PE@PE (Ñ ðt¨" (Š€" (Š€"WP¢#®>]—" (Š€" (Š€" Ül”è¸Ùˆê|Š€" (Š€" (Š@@ÀQÕÚv\¸e]‚" (Š€" (Š€" Ü¥(Ñq—>ø˜ºíãgÏâä… H�,îK‘ âÇ�©KÝòy¯Ý¸�}ÇŽ!iâÄHŸ*%HpË×Ù®_ºŽ%/Áÿý‡"M‹ Cá ‘ ‰³íG6Áš¡k­/OÕ<(Ô P¸ú¸T1ôCàÂY a"àÅÞ�¯lãJ`Þd§ÿ#µ€2•{³zûWìGò ÉQ®k¹›5­ÎâÂ{…åj×X@`Î$`Û c6 ±»Ç„ý:ر È”hô|L\áîž3Øï…ÈP –°v\dëÑvE@PE@PE@Pb %:b Ù[0o÷1cŒã=²K¿ß¤ È– ¿®_� Ë–…vïX­ÊŸ?ôÜ–þõ†ÏŸoN”-‹úeÊØ&sÑm¼pìúdèc¦yzüÓ(Ú¬ht§¼eã·ü´ŠçÍËÊ¿T5¾ªáU·NNœ:$HlôüÈDºÈ ƒ€Þ/8ÝH�tx+Ò!7½ÃÌ.3±zðjÜ—ÿ>tÝÖõ¦ÏùÔe\:} ïIˆ™SÜôùï„ ãÂ{p'àx3îaü@`æøð3%O dB œ|mÕh Ä�a¼IYàÏÕÀ£u€AÓ¯çfÔ4*lYˆ ’jÉ›`_K‚°lÍÑqñêU´2‡O‰ÇB¬¨Do0"„‘ g.^ĶC‡ð³D[œ’5Y¢ãâ•+øñ÷ßíÔ¡Çy›6…’4ŒI�<¬Gˆ(e„œqÛ!MZx‘&uK—F÷ÚµÝÝ¢}ŸœŒ©žÚ Œ=!¤JŽtéÀuæÏœç.]ÂÆ}û0yåJäÍ”É/ÑQ^°)$d’?«T¨rgˆÙTRwÑá�c¿<ýpj÷)%:¼�¹ÉçJtÜd@ƒ˜Îí0¾U‘=A,ûŽòHFàäQ »|=5íäÜ"‰‡Ãû�Ùpv2„‡gôUTÒÔE¬+—€oú8�’UŸò�ÊèÀúnýhÂÃü¨R7°qî^ÿkLþF"]rH >ÿûÜCwÕãÖ›UE@PE@P�@@‰Ž5.L¹KÒ*µ‚V[¢!zøˆ†ðEt�¤øªuk3Î~ø#:Vlߎ7Æ;9;êI:«—Ÿ|Ò =2ÒcáæÍ¨Z´h„zïOš„þiÆ}ß­2¥Ž|«çË—cÈœ9fLú”)Ar'�ìÞñBWŸDGTî“Sý&k{OÖHËŸ% >oÑ)E‡ÄmÔ'Y·{7ž(^<´ÚÑñzýú¨!$Ó­4%:n%úžkëЊ n%:<ÏñV•âÂ{p«î=.]÷ÈAIã$š´&�wœ¯\§B>—Ë×ÓsÕ�S¦°úÆÉÚ~;HP�¨ Íßçèt8g�’(!alê«À¯t{ö ö{!²» 6U°ã"[�¶+Š€" (Š€" (Š€"S(ÑSÈÆà¼Ô‰˜)c7nÄP‰^H›4i¸«E•è Æ£hL½ÄLÖ)òEHêª�<‚ö�?nš¾[¼#,0åÁíÛÝ;&ªÇ`ˆŽ—¾ý$�£S–/�Á³�ü!CŸ„Œ°æ&t‚¹O¢ÒV¢9v•m»bC$½WD‘¦SÈÇ­$:þþõoì]¼ǶCúÂé‘çñ<ÈP4ƒO�ŽS»NaçÜ�¸'õ=H™5%Ö�Z�oü‹Â� #_­|Ø2i þúù/$H”EŸ) ~û²Mã7áʹ+È\"3²–Í ÎËuìþm7%M„,¥³ DÛH|oâ0Ãÿ»ñ¶NÙŠÃƉí'�4MRd,žùjæCšÙpW/\E¦â™�ëÑ\Èñ°l9ŽA Ö¡›îs‡Ïá¯)áÀÊøïßÿ�ó‘œ(X¿ ¾·Ð§FÇæ‰›qéÔ%d¯�;fîÀÁU‘¹df”êP 7®ÜÀÚákAyb\¡G…ÐwàúåëX?z}(ÚÆlÀþåŽØy•÷«„Ö³�*G*óNØÊMä};{©²K½¼§>M~€×�\gÞg¦Ãâ}ÐŽÿu{íA¼øñP²]Iìš¿ »çï6õ‹e4ïAîÇrûœÒVòÚÛgnÇ?ëÿ1㸎Lf2?7IR%±Ýnú1*ïÁ¡½ÀÒ_�IJœ|E€©£�Ó'€ê�€ª €…’•pá ' ‘d.,V‚ LU´n)°f1ðÏ~à„h,¤¾Èq?P¿µ‡÷ªß€=Û�´¢GÃ(ƒÕ‹€s�훜1u[ÅÊù‡æÒ`¥|½,ž\”@ŇªIAGÛfÓ*ѼˆÔlê[çáÌIgÍk—vËõ„Œ(*µšùîï^£1¦ŒòÔ$O!×iâ9w—ˆ]—�Ȇ÷†Iăàç6~¥–¾ 6E©G€1‚¡·q�;·È»�Öy&|6ÄŽ÷~ü g~Èæõ+wÒp@þcë0•>N‚Á–Ú@|ïÒ¤“÷I¢Tyžë—;ÏÛ.áî¢su (û¨óìl=�ÔÉàùÚÆ…sí“Gj:ï.ÿÞ —šu’„ÿó'tZê -ùEt�Vûw:Q7%+úoBJÁ<y‡ö|ŸÒf�g�ÛYgÁö+œ•×ãœwÿð> a" }f xy rmàޔ-ò½pðÜ9t—¿už• 5î¿ñ: –°v\Ø»Ò3E@PE@PE@Pb%:bëh_i÷éÓ!šßþñ‡¤¨Ú+Ñ9ÄÑïmQ%:šT¨`R/]»qäŸúø™gB§ôGtP€ÜŠ™w“ho‘òÐ (D•è8+©±ê÷éƒÅ“D]‹FBt´2‚Öªre´­R%ôªn¢#˜ûÜ'º'­Dÿ„–KRK�ê,Þ•íVÿ^ÿ³^˜…5Cׄ[eÅW+bYŸe¦Þ-F¾qìFLn9ÙÔSšÎg�À%Ú”0ŽbS!ñÅGÛÅm‘­|ÈVfÛ Ç/²~�s‡Î¡Â+�2[Jüú²xX½¬pãÂhôC£ÐZöŸÔl’!eB+C $Dê ­cÈï6ïó¨t¼Ïé9«¬ %øÜó•ïVO|ö„¹WwýÍ*âÐòu­¨8¸}�´ŽЄºpþŸóa†¤½?-2ÍhH)o1òþ÷÷ÇÉ�'/��¦B\YËþPvC~ýó¨­BþÚùñÌtçw Ÿ?ß›@Œ[«¹­B»RŒž¢ôIR&A�Ã=�(™x½lÏÂ=Ue”©­=¤6Jw©Øê!«1³³xNÅ~ýa,ýD¼ù^ÆŸ—jŸV“¯9Ý¿b?&7ŸlÒ¥y·¦É� hˆ¬e²z7Ý”ó¨¼ßõ>éæ\6É=ŽŽÏHÔ²áçÑž%%J,Ä‚8×S†p‹v $@�Dƒ/cÿFÊ<-·¶xøC~Õ0’!»8é'�Û‡þÙ¯&9$HØ`ÇŸ@»ª©ân£s»D‰Òë/cùڣ΃·Ÿ—Îð—å× Ó9yÇ~=ËëÝfÏIÄ4(fÏD»JœÚ?ýá9w—¿'z95å×máRîVǹ^C!š¯ˆÖ?÷„D~Ì•û|»žÀKO$[Ü–%'0w�§†ôªRçm f#d®ˆ,Xl› vëWIQEH®¼�=ÏÎB^,šÑjô¤sj¼'ü$HhkWÿý7^;ÖL×衇À957ÑA!wêpø²âuÌ#ë¾¶à °¸º<âÒ@IDAT÷b3w°zª�Ùõ¾iÜ&\ì‘ ŽÓŽ»}7\õÑÁOÕ„Á@ï.NãKâø{þM?£Q}ùÔe|™ëKóÎ�´(Ö¼îËwH0êÁš_¢C<ÏEš1Q2G7{È ¾‡göž1ï ´žÇz"iÚ¤¸zþ*öZh§5@Çè"FZ¸-]Át(ÙÞSÇh¡±5�ŸÍc xËâîî¦<µÍT¡D¤Ç¡°‘n¢ƒïÍxïÿÙ»0)Š&ZH’$ç €p€d”$9H” I2’A�_$gÉQ’DÉÉQ2’sýëu_ßöîíÞííÁq@Õ÷1ÓÓizÞÌîrõ¦ê)B-JŒ(tà—tåè5þ£Aˆ/Ûå2¾ðxEèDŽ™rÔÍAX"˜�òøÞcuž6‡Û¨y1vüøñ´’Éao Ñg8jíuþžwµÐ<Ý>e2c²ž!o°`¢cF�~üoÖ(]×�Û*ñزYD�jiâ£0;äÓ¾ErQˆðxÈO�'Ð[ÀïÆiP žƒ �7ö3dá7ò×íûC÷tG"Þ­I¼�36�+Ï¿u‰øwˆoó­ëæ :*`ÏeÞ¤ïÖ@X"@"½Æ$Á\ýV>úÖoÏŽì�ö(ç2ˆÌa¬j#Mæ˜c{ߦ2Ñþ ÄçøŽ@@ÔŒ1¤µjǤ¢ àˆŸÏו1«iuì�s;]&Ž`ù'Ÿ²çcR=3ÑÅsŒózí˜ÍŽ{cè²öc=™‰ˆ’ßë²»­¯Ø"‚"ûÑ™óö~NÄQ@gõDwìfRV÷sgróµÿVã¨{ðç¥?ÑÀ®æˆdˆ‚Û7ó…Žgaè� ËÑ“hú0¢~|DÔ š‘<°e35¦(»#ž½TÉ�èÔQ^_d&3ø«ŸDš :iÕ< µýfPaù¥|»êÛê@+JüvbZõå*õæ;È‹&¿7QmöƨaB鋌Ý8sƒü·ùSÖjÚã‡tU³ª²7•-_‹|Tn8ë¼°Ó †4VŠLPŽp¤’j´‘=ŽÁ˜·DÇÑeGiZYöˆ²åišG�$ ‘ˆ.ÙÿË~‚»ÕþVФñ÷÷§T©R©>ÞnÚ·oO™|sgîsÚvâã\ê×±ƒ±08Uݽɬ[}߮ﳞÖ~¥=ÈU§VUD‡š��† ›.¤�ãôgÌÑñΧüÝ4±2ݽ|—ú'fo%›‰âyt÷õ‹ÛOá\wY]zÓ¼î®zéÍ¢f‹hǘ’øgH©õSúŸèÆéŠ$ûtͧNÝÝyD’ PÏPÎú9©Ê¤*�í6Ñ+q,j¼µ1%̘Pµß»z�~~ïgºtð’ŠLjw¼�#º‡q÷î8•Ò dLÃõ ©®Œ!�Õè¼£Õ5"ªÒÏ•TÓgœònܸq¦›W{lqݼ©šçÑ ˆR(Xœ�Çü–<¢�N $"¦lÒŽë‚ ´ó¸×h¢êMõò‘�TUH¹‚öqì°ô¥®Á_�Eù£kìÄ!Ö†z[�€3ºHYÓª#&°¦×c2irÇQ‚¤l& ’cÂG*-¤[ú€?‚†ìp%,àˆ®ÀçÄ &­'J”LÏ�k-™N§‚¼ %<Ù·m$úô`§ym�añ4:�Èžš-ôŒ8—ÿ N}´NG•à‘Öª¼Î©À0‡±Ì9‰¾�D„½1\R[gRÅ�ÙXÿÀÎvOi¶Â‚-Î_1›>{hî§½ÞÞŒÈ4�kýí÷el Ú`H]õ#—‘F ‘/°ŽüÓ¨³.c‹U•²kìñÌf’ Ñ?0|nZ3Žˆ2¹²õ*Qœøº Ûå¿0QCcR®Ù†(¡�¿q½ãk$°ù“w5‘ƒÔoHQ†g¶#{øœü}�ôqžÌÛß…»�Ñ܃Utﺓ'�^€I;65D”ÿË�€?Ôl¾¾Žót}R/‚€ ‚€ ‚À³F@ˆŽg�p(æ¿ÏÂÝøãÑëY{¶L1�œÌõù_*7Ž/»/ʾˆVè;o­bí*SÚ´¡” zŒèÀyþÔÚžZ•m¢£þªúJ$H'«ÂDV ]VGÿŽê «™·XLŽúSUµ9ÒFEØívÙ[¢c|¡ñ*í´?Zl­ {8ªGåb�[Éþ% é‹n²Ð|çΖ7Íà¡\ªT)úøãoœ‡>±ÚàèŽh@*«�©Ò£y":J (¥48pmýõWQDöù�Šô(¢.wPÚAŠ˜¨6£ùÕ êõ Ñ� ×÷fb¦çZv\F¢¶ÇÛ*’N�ˆ7öç„DÚ"iM“Sêª÷¿|ŸŠ÷c¯¨eÐYÔt‘ª©³¤N ȱÇhJé)ª¾âØŠN&føÌÊ3•¦ R¯u»ÙM}v¦M›F6°46„‰çèÑ™ÑòÑà8ÍÇÎa�ßLК¨ËKFWNpÔ¡ ©uðæ|Hvõ"; ø�þÌ–ûÄ1bÉt¢.Žý–=YÇ¢—£ %C&@—bËGÛŠ9:íjÎÖšŽV~cžÏ±t†®ùŽo��2«çg:�ÌK%·Œ@£õØõç$ˆ®qlÓú¦fÚf¢w ™#Ç'ˆÆÎ •d'óX�஢A0Ÿ�áÐ? �àÃuƒäqgaÁ‘2]ëêYCs?íuÔâŸch«€4¡?Vvs�2/DV@dÑA½7� ƒñ.?;°nCˆê´Ñel‘ò Ñx2A] Ûl¦má{Ë…±á½xm_ë#è�àÜÞ>?ybjòð“Öü¬ õfÔÓés’#<&s„ëD~)ÑÆ"q¡8¿l‚(�ƒüÿ+XÏžüa … Ñ °¤« ‚€ ‚€ D„舷A/¢öܹ4sß¾ÀÅeW�lÙTôF!K<°C0_‰n7â´&‡öE犃%:°�ˆzXÇ8¯«!•ÔP&#bF‹æÚx¢c ±we§! $ 49`·îß§JL€@·Ñ$ë×WõÐ\§­EÒ½jU*™ƒ_‘öÒl¢BîÁ¥®ÊÈÑ0a5¤‚X4¬û�îA4 l'­;¢#V’XÔù‚vèR©~¾¼þ¥šs߬}4§ÖŠ�,¶ÒDP•ÖÆIü’P˽-­÷Å~#T¤IÆR©ÞòzA:Ùë­ûG”~3HSaôžÒj™~ˆ(@ä „£áhdzhÅí#¶«ôCÙkg'àôªŒ>¯÷QÑJŸ‚‰W3D‘'¢£Üˆr*:ã ©a§öö0%Ü]~ëe4Ëë:=…–è@”ÐOé~R‚éÅz£b½ŠÎ9éÃItbí E��(³ÍŽèh¼¥1AKÄ6ˆ±ÿ˜âGUUvhYÊß:¿*o¸•–w\®ÊˆØˆ™(¦ã x~@–™4_H_¬ž‡!ETM½lâ,_”:#Ñ��±‘G¯fÉ!�"é$;ÈËeÑu¦ŸY/Ä£�¨÷¹S¬?pS·ÀÙlRbM\Ë„J13‚h@'¢‰ ÒÿlàŸWçýçUˆV/Ђҳy�ưV¬9e:¢ßŽéˆ'Ó†½E²p¿#R<•b‡6RUn I{ÊHg1lدü3ûf6]vÝ^½¤£L}Ò”¼¾Wƒ®ô5`š6bá·DYœf¼aùŠ aîÙèžèZ½µëîR0Ù}=•à¯ë ?èh‡m7t¤‚»¾¾b‹¹úwä™�¡¿Ÿf Ú@¸�HkñGU� ¦Ýu r¤¾šë·c’e�s¤àªúŽ®³£‰ ËѼ¬®oÕ‹¤Œ«Aà½hr]ëµ±v!¯­’nƒ¶ Ö™û=×ÜWËMtð/i‡ôa•ø¿îî¹ûÑa¯e¨h¿  ·9ü±;õa¬W@AˆƒˆìA@A@AàeE@ˆŽtg«s4þ@5ö#¿Ž Üäh7}<í}%:0_÷™3ió¡C…½T3Û¶¥­L,ü¸h‘:œõMŠ÷tZºÌo¾ï:y’6òø �bœÈµ8ÝSsNûäÉBCt �ˆØHNóvJöDX«ñãiÿ™3*Gõ¯œÒ*“Eîˆt÷ö:çoßNƒ—.UghÁ÷‚æÞšMt|ÁÑ …"ÄÛsØýŒ�MNØí„‘}„ªrGtÄOŸÚ�dÏÛÞ{iî's�H�C¿"¼­îi~Ctdý8«C‡CÍæ~Ó/“¬Ñ`§ø±{Úë…(9RMy2oˆÛyíi»ˆxUìú©ëŠ4ÀõÚä„}ýFÜÑQyBez§�öBÍ<”®¹B6©�hžæ-Ñ�µM+7�Ž.=ª¢9�f éÏp-ƒÓVßA%¾+AïuuöXÚDGûSí)^šxöe*²§w´ÞŠ@±I³>§ÎÁ �´gž‡ÍÍ͉ÞHªEƱ†ù8S#M>l¾¬We´8bÄâ”KìdFJ5¤ùAª¡qì´EŠ¥à æ8‡±†ì$Þ¾Vë …”«!�H“�s4ß8ÝŠ”THŸkÓ›ÖÿÓe{Û·5„Ø‘ê¬3€€°u5 N mWƒHô¨¾ºöÏÛA5\û‡t<žqø…î5q�&4ì1ÃØÉ>’¯Ávh}¸Z+ŽœYÇ?­ ‚62!d®Çµ_pÇ&‚!Ïû:e’»¾aÁó5ü@§â‚î„·÷Ó^‡-ðî ¡ý—O‹ê�¾ âá¶-˜È¿ß uÍ~6“¦ÒeûÛý=•‘Ê é­Œ�Ôû0µ³€9"dŠ”#jÐÁqÓßÞCˆü;ýÓ©ªQ‚¹+2áQººgÊžãi”/s*Q¤=íÆ‘¨Æz„è0ˆÈ^A@A@^V„èˆ@wv<¿‰÷ÕÚµtîÖ­ÀUEg²¡kg mUiÖ¾ˆÌéY¼±°Y� Åرê4Õ ¤´‰{MtØkÛÄdG&M`É9Wô &M<™·DÇ<DÇA¨ÀRð¼HYcÌÿêUST#ÐñDtx{�[�¡/§OWó†DØž< ÞDǬ�gÑÁy š�/ò«¾.vý$;²YÓæ–è`mhtÀöÍäè Ö«ˆ“<u<×QÕ^x˜fTš"ÑRT&SÑÑ8z€_Û-Ц•RF�ÃÞØŽ÷’ßs©.…íf§²7D‡Mœd*Ÿ‰Þ*ó–Ó®qSÅUBåXãñãÇ]›ƒ=NÈißäH¶cj¼°÷�Ì1R­z)ùZæ ²º XÜ›·=¬Ï�ذ,½qø2Ù$ÕèÜ£•þÊÓ$:l­#\o´F ¿ÒáLEØÙc].w¡˜o°÷ÜÅúDïCO>Qé©�¦ fˆh¸àB²,U²¨ÏÐÖ]ºn¥– i¾×2pdZX¬W3¢_Æh�ƒQš«UQ ˆn@Z¥±+ôì}†ø34;¦nÖoÒÑ mhl€ÌÉ€H�™ü˜àÍzè` ”mFïÚ ÐP°íEbÇ>ÌÖ¿ØÏÜu�€Çí§9œ6îcÝÇÞ~VšS]ñšA1}«£epw¢1ýôñλîuoº5Ð׃�5gc}-u¬ÉQ'³µû÷ë¬×y&D¼@SÞИ0øÛ½>ävˆ–Cü½ßD»Åû2°¦õøçõ ýÕdpX°ETî'DµCs?íEØDÔêÓDɘLÎ ®þ}{�-ˆ7èªØ¡ñiC‰&f‚袣¥ø9‡v‘- ïèá\Z°Ç‰cZÑ3æMòAoň‹6}˜ôédjœ÷À $Ö]ÛÞÎ¥SÂ…tÝö˜Ð”qüB 4ÝóÿWpl,M¼xÔˆµ~`BtTd/‚€ ‚€ /+BtD°;û„ÿZ^¨â�¼eü‡+Ž�%c‘ɺœ6 ¤‡_’$¦Úí>,D&ì0y2ídÇîë,Ž]·Hðv`Höb°òšƒÑEþ#N»•=z¨(»�){Kt>wŽš�c†»7‚ꞈ öæ:m,³² õˆ&M‚=¯ÝÞDDz¶ËhÛ�m9zdúßýÿÙKQeÿ?üil~Mb=K¢£PÇBTê‡RAÎïZñCòº~5ý¨ÚÌj®Íä´ÞiSöO²éc*¼!: N�(ö[úfOû§-Fîé<Ï»þþµûô]ÂïÔ2 Yí W3щèií°tF}<€ùá².Ðã<8ÌÖH°µ&fn#Êž_÷1[hb|À$ÒSÕjÉkb§²±vüÕ±r®ÖT€¶‚«!uRÉtšT° ×~¡96iÞdÑì£îG±òly™ ûùêïüŒßZ-œÛ½9:wJ_ú‚(aâ΂-Ľ?âk„…æ~êzk4Y yáîþØ}Qþ²>ëkLÑz#Ðqµºïñ3¼™ 3þ‰»ÜÑŠ”THMåŽ�qôò®t÷¶Öú@TÓf>þ+’ÑKFÝÓLH]¶t¦&K®\н¡„H¥§i»þùGisLß»—.q$‡±(’U!S&ú,Oþ,f¤>½õ‰…è0É^A@A@^V„èˆÀwö,G-üÌQˆô8ðFžYnžäÉ©§AjÊÈFÃëµ.f;çËsŸN*¸ôp/Òm:íƒÐvñʺŒíOÝø-{v>#Ýı¡÷a[çÚúmw¤Ã‚ ¸±õKX<º¼>rMÃtŠ×Z§¢:`sv!�±¯šÍÕ�%ÍßÍÿ¦E8õøkðøA}½ˆp]“émÒ@™ãm|­±ƒþ¼’­!�¨DÇØÑíVün¢W`†@ÒGzk„ÕÁýƒð‰Ãnõ®<ô+N‰ÕGR˜)›ÜYX°õõ~Úë(–BGÿØš,v»]Fª/�qOžè´g ›l;É÷¯\]3p¶Ö¿0íH}†4]oùáYö¤yýOmf.{otmP‡ÈDèxcø¯ZþŒ�åÏ_XÒ“ÙçÚéùñÿ«ŒáE—*œÞѦOïögÏWÂÂ×qfm²A@A@A ¼¢#¼ãùþ¹}[½É7ŽS[»v�l¢â×ÒüÃNµ)6¨³eK�šÊ²¨¹±Â™3S|ŽÒ.¥únfR¥ûŒf˜ÚÛDÇjN—Ðgî\JÄÎÜê¬å‘�Ó:¥å”Z�ù�ÃݧNÑø5kè 祇U-P€>/SF•Ým¼!:.ð5Õüé'5×4¼qcwSÑÚ}ûèë9sTΛ�ßl Žèé:1ÑC¾¦Z|?,gÚ´Tû½÷(sŠtƒ1á3™ñNÌXØë²‰Ž’œvì�téÔxw›ôŒRc…ÕÆäCçþçqC·)2kDš/C°Ç÷Ó±Çhûðí#A ·)Ù칞UÙè"ÄK¨£2pž%|[»ÔÑzЕàË&MˆtÃYnô'0BÚ•hrNän\ÆÛöÆV�b &‹�A”¢ræ(ŒM¦—c_.³Ö0(Ïëø~ª£i°J¥çïÚDqè·õËÔd­ v,Cô)”`Q£ib{cvÄ¢Úöcíž Z ]>aç÷}­ý§M¥eæ8Ç×Q2�9ÒÚ ËÎé¨Õ%[xºí7bÙÌ�^¾ÀçdGü öCw¤W½,(¹‚DKÀ)¿`¯ë¼;nÉdÊúÅ!G „[_ï§}†è€ž ˆ±Ì9‘—Çü¦ûa þrMåj³NLsO©Û�^ Ï24A ¹’ž –ÅãPš4�uBøþ‚œƒ ø¬L¤I=ôs%ePç‹¢# ¿<Ò„_2A*ÓD1]B®\&ö•°ðuœËéåPA@A@�pC@ˆŽpƒú鞈ÿ.§ß9Ú"/;Ú£¼žZoØ0:sùrˆ'ú¡^=ÊËy›C":pŽFüæà‰‹çtGt6z(¤âôRãš7Wzºx•ºjÞ¶m4d{Ø+¦þ¹›ïÖýûTéûï ‘0ÉâÇ'¤î Žèé:Í9%ÓcÖ,:g ž›6³w%`l¢Ãôñ´Õ¥R%OÍ^×_uœ¦•Ÿ¦œ´gÿƒÛèÁ�JOŽXXD :°Žå–ÓÖA[QT– }º}ñ6AO'Eúlûg�¤…ªt³AÿaY‡Ñ�Ó7‚´Úoä£é‡·\Lÿ>b�œÔñRÇS$ȃ›T6­ö·zåˆâÄä’“éøêã DÓàº~⺊–)€È–gEt€\še(]?ÉžxËX*#Õ[^Ï¥Öq¸wú^š[gn`…;í ÓhÑbG£‡·*bš·Îóëñlˆ ©¿²>¥.”Ú Sûû×ïÓ¤â“èüNöγ!:Ȥ‰»~Šqúß*üæwõlT}vuUïÍwíˆà�/X\§‚ÂùtâÔ{ìüÍW”÷ëôŠLT€¿ ?k»®[5ŸÉ‚ªºŒ-DÈñ3‡9h º"þìvùÉ�îÄuÚ0)2Ä1JH7„·õáX†úÓÎíf}εÚ)�b#’¶�)ÏNhÿ“ºÖ ½¢&�î „�'3„�i‡:DÑÝY·OYØ|²»çºÂ¥5™m Wƒcýôßü¦}v¤Orm z|t§a+è\ç=œê°±ôÛ ŒÅì?Ç(ùŠmXî§YA׺LL3GŽ=ž©�| N¤“D}[é>H›¢Î6¤=Cú3ˆ¿²Î´#ÚKæ¾ãYM™N žðÜÁÜE AsÅžœPf "{&­cò÷ÓKïA‚@„á:Rg$‚.ÒVsÕ”1õ¾ìïãEþ¿H�”lŒ“¸®Çf ×z×cÓOö‚€ ‚€ ‚€ DT„舨wƇu59’àŒÉ7h@9Ó¥£Y[¶ÐÈ+T÷¶eËR•üùƒ ]ÅQ}9jØM0\à4,sÿ�6r$ÉyŽ.q5¤vª”/ÕáÈD�gýæÏ§»w«.s:tPQ"®ý{ΞMëPÕ.ú¡Õøñ*�:CL}j@t‹/×i¯$ÊÀÅ‹•îÈm.Û–œSÕ.\Xi‡˜úå|MßòµycÐéP¾¼7]CìszÓiú¥æ/tëœvØb„Ê“*Ó„"ÔxˆCfĈph{¬­ªÛ?{¿šNîgµGòÈb~Û¿Âtåîzµ«êgo }óìÍP }cüޱ;”¶ˆM2À¡þ&çý¨<±2ÅJüócÖpçÒZÑq�ÚpŠàp6ýè€Ø †EM‘ÿv帷ÛfLHYªd¡¢=ŠRôxì-{ÅìÉÃ'­Œ]“w©è\þkQ_£m Ú¶ۮĻA$CÚ(DèT™\…rÖË©ª‡geÝ”ƒ—¨âØŠ”»InU7&/Gí8Ge—¡Ÿ0Ã�ö±{ÒnE:àœ°�ˆ�xÐAʨTSQ“­Mœæµl¢£ÑÆFA>/ .jÌ©A)ò¦°‡–qDmþa3=¼õ0°�CKd$D{¼U–=ÚÏÁŒÀ¸-Ì ] èkÔoOÔu ^T;v诜Ço²7#ê9ʱÐñý‰F|ÍN⻎º7³õM4¼—NË䪹` lÃ_3®Ä¢3 �›¸– —bª¸�Ó~t_-â RD "C”C5¢‹çøûüs«8$°€è� µÐº©9bbìT4µî÷cú æ~Æ ÞŽqî¬F^%b·�\AÄBÊt:EVÍæDï²{8ÊHm•‡_‡ý‹Ÿ´ãÝÑê¾d¢qÜ·:×–fn ¶ù‚mXï§9?*jë3YÆ÷×s!ѧkYŒ J‘–ŸË“ª›Ó¦E9_êLÖÙùó]{>×"»V—A8á9Á†gÙ œwç&-voê±Ç3Ýš¦Ýôšì6”GöÖiÓL*7»××’¯û£šš(´Û³ìJX¸›µ¸Ö»›~²A@A@A ¢" DGD½3/غ.±p:þ]¹uKEn ’")ÿsÕ±xÁ.ËãrÙ?Eç9²ã8G»Äˆ�’°N "WØ×¡ i†.î¿HIü’œ÷ÚTˆ\CPÞÐG„ÇNGåItû%ºäp»Á6Ü ~n'ò•°ðuÜs»P9± ‚€ ‚€ ¼òÑñÊ?€ /.w/ßU)ÚvŽßIÛ†lS‚”XH�œ Ñ:áßÁq¼Q_»%QºÌ:Õt@�Nê—1z=F¯Ú(ü×ö¢ŸQ°}Ñï`ØÖï+aá븰­VF ‚€ ‚€ ‚€ à;BtøŽ�ŒA@xÎôŽÚ[ir˜e$Ê’ˆnh¢®‹±ˆ±·u/¢¿®Ï¡aÌ[ÑnÓ_ö[¯bÉWÂÂ×q¯"ÆrÍ‚€ ‚€ ‚€ 1¢#bÜY… ‚€ô�ÑW ¤ÇK�ÒIK%¾/Aq’Ç q¦cvÐ⬎Ì9ô{Üé¡ÄC$ž½X }â þŽS@g¢ÑÍ{-益RèlC‡×ËÖÛ¾^WÏž=}*ãA@A@A@W„èW¸åd‚€ ‚€ à �»·‰É#&ÑI=õ’z_l}AíÅ#DÇ‹å A@A@AÀ;„èð'é%‚€ ‚€ ¼PÑñBÝ.Y¬ ‚€ ‚€ „!:ž A@A@"*BtDÔ;#ëA@A@�§�€OQ™OA@A@ˆ¢#´Z¾Ž‹—,KA@A@�W!:^Ñÿ¬.ûòÍ›tõΊ3&½'E~íµguªç>ï£'Oèô¥K#Z4J/E�ù¹¯)¤<¾÷˜6~»‘þûï?ò«åGI²% iH„m¿°çý9úÏ ëËP"½]åí õ©bô7DwnE‰Jôy_ïW¶gѪyºÿûe‰òõ~ìÓêytéQ:³õ ÅJ‹ ´)𴦕yB�@DxB±\鬘Ctx7QÒTD5XØýYØo³‰Žî%J–š¨zÓgq†W{N_BBÍWÂÂ×q!­GÚA@A@A@xVÑñ¬�}óv˜Ý»~�¢¼…â$�óÔç&ŒÏÁË€ãÓ¸†éÈ–L:S¬¸DÉ™(À?[Õ zíóà5óíûƒ¨X¢á ƒ®çiÔTÏCt`'ч•ˆ†.ýŒ÷ï]¾ Ç¥L‡ßÍÐÏñ2�ðõw!$L|%,|Òz¤]A@A@�g…€Ï Ùç0o½aÃèÌeöž†`?Ô«Gy3f¤©7Ò¸C²¤LI£>û,ÈèÅ;vЋ©úzEŠ8ûÏœ¡“&уÇ�ƒŒ³+–|ù%ÅŠ�Î\¹Bõ†µ›¼*WÈ“‡:V`Ž‹}:|8�⨠cßשCÞz˪ýÓ¸NLt�#UzΞM{N�ršß>È–:5 oÜ8°jÉÎ�4`¡w^§Î+R¹Ü¹Ç>‹ÂËDtÜ8sƒŽ¯:ÓŠN+èÞÕ{$DG $Ϥ𬉎EÍÑŽ1;(qÖÄÔj«gr /ú¤BtDœ;Ø”9ÕÍ˃_ÏÛ¹ˆ¦l$Š+ø~¾¶>áŸß|Ì >¸OÔ²'Q«^¾ÎäyÜ£‡úØc~œ'´f?·¿_#Š?´3¼Üý…èx¹ï¯\� ‚€ ‚€ <{„èxö‡Û1!qõömu¾KœB ,cÒ¤TÄŠ(óÎ;”„S-¹èkH”�y":î>|H�GޤóרcÁ–�£7‚ȆwïÒásçèW޶¸Æk2DÇÝè—ß7SîWíÝHÒ j$~,g�"Pò19cÛY&Mêº�&óæ¥åËÛÝÂ|�˜ ©žŽA'H•4‰Ö™)yrºuïí9}šæmÛF“%óHtdlÞf2É“yûmJŸäÙ¦’z™ˆWgL×N\¢Ã˜§|,DÇSÔ‡él‡ñóŠìñaÙ/å�÷“]½H”šžjµÐ—âáü¢åpv5€‡GôUhÒÔ…¬÷ˆ~ %KT%Ê”=4£½ë{ð/¢j<ü°_‰>¨èÝ8»×ÿÍû™#]Òp >Ïï ØC^©²¯Ôí–‹A@A@�g€€ÏÔˆ0åqN«ÔˆIXyކèä&ÂÑ’â§ Ô8³ñDtl=r„¾œ®svTâtVíË•3C÷ˆôX·?•Èž=X½ŽÞsæÐš}ûÔ¸™íÚQ²ø!¿ê9k˹b…“8n\¹“ˆ÷¿tè@‘W@n‰ŽÐ\'¦ZËkûš×Ë”"ýP·.ÅeÛ O²óÄ *•3g`µÑñEåÊô“LÏÓ„èxžè;Îí«C+"8¸…èpÜÇçUŠÏÁóºöˆtÞ þœÆ‰51`5›}¥ruo·ðÏÓg¥õ!RXý¬3@¶¿H *`«Ok�}äýD _S_y¦³§¯¿ !]­¯)¨|Òz¤]A@A@�g…€Ï Ùg8/t"–°FÄÔ={h4G/$Œ#ÈÙBKt@cQ 0¤^B &cˆù1 uUÝ÷ß§&Å‹«¦)6Ðø5kTyD“&J÷ÃŒ íÞ¢£í„ ´›ÓH!:¥ZÁ‚4b¹Î2ºiSÊÌd„1›Ðñå:�J#Žæ8q‘_ÛeÉ齂‹ÌP�6Ï“èøû·¿éÔ†StéÀ%Jœ-1e(ž�’dOâV£ãÚñktlå1z=þë7e\Ú5qýûä_ÊV=½Uö-:0çúõEŽ™²’� øíÎöNßKn= ä¹’SÊü) ób'Öž ¨1¢Rм)(W£\-v4§áÿ=ù�Î?Hçÿ:OWŽ\¡ bPÒœIé­2oQ‚ œúz:ð%¢Ãÿ:½é4]Ø}�ÞyHÉr&£tÅÒQš÷ø•ãgh¾:´ÂÓÁ}ëü-:4ÿ�Ýv–þû÷?Jû~ZÊR9 ­ûz�[�Žý³÷Ó½k÷(u¡ÔttÉQòßîOÉs'§<ÍòГOhÇØy`\¨S¡ÀgàñýÇ´kÒ®@´wOÞMg¶h±ózX�B¼4ñÔ3a*÷ÎàçíæŠ—šëù9uküÞ9~§zž‘ ×»|è2�\’"½‰r7ÎMÇW§«O¨ú¤9’ªç ý‡éÝNi*qî#KŽÐ?»þQã°Ždï$SŸ›èñ¢›nO}šçàÜ)¢M¿Eãå¼åG´`Ñõ+D¥«•¨B´Ž³®[¬£ªsæB?g &Bª¢�›ˆþÜ@ôÏ¢+¬±ÿ ¢4oUnàÙá½}-ÑÉ#D Y�Q¬'Úº’èÈ^=¦b=¢&#²³†EÙÚîûÛ«@4Æü‰ŽšXqø<5Çv ص ˆløz G<0~¶á'5ol"hSäyŸh2cèjXã±ül'Ô÷÷ØáÚ/ÿC”6‹‹7%Jåò•;g,ÿWÀÉ ÖN•n|ÁÚ@xî$â牣T¼¹Ÿ»¶èûm–ðMÖ¹zD”¿˜¾w¦{h‹$qülÓ�[í“÷Ëèçwý�Ë¿Oˆ²å%ªÝ’(zÐÿþN ¤�ËXiÑ™c:ê&waÏÏMà@.¨{À÷áÜI"Ó‰ë×ik>Løë/:�¢êG?¤aG¿«…–è¨Y¨�J½ôèÉ•~êÛO> œÒÑr#fÞŽ£9\EÊ'ð¢Z¢ã&§Æª<`ýËž$èZTg¢£“°úE‹R£><«Mtør�§Y÷¤>ëŸÀÒqj©‰-Ù»â¥=¢ãßÇÿÒÒÖKéÏÑYeáÎ…ió€ÍªÞ#ß3uÍ«7OÕCÎgœÀ¹æRŽbUÁ›×¢¾F�64¢T^e6 ¼ÿ1å�tëÜ-*Ô±ÅM—~kÏVËV#UŸU=°ýçÔž£H™ÀÊ€‘ £+(rŵÍõ84Dï+º¬ íC·|ö|Û¤RýK©kµëŸVÙ‡–»s…ÆÁín¼·u €fTœA·ÿ¹í4$á› )iö¤Š”r#òæºzì*EŠÌ¤)WÆR¿›Z‘_÷]4U”©|&úd‘þŽÁýÇsã��`«¿²~`WˆÑC”>zÜèÔé|'Š“½Š.vrÝIšøÁDU[~dyÊÛœ=¤lŒüƒ–´dÏ)Û{_¼G›¾co¾‹áóRòû’üApiàÃ3[Ïм:óTº4×ÖéPµYÕ(e¾”®MOå84ÏÁ”ÁDßµÓ§�þºÖqÀˆ‚ L6ü:ɱ¤¨Ñ˜X`çzÜnñìq¢* ¢Á�¡Ÿñ[½AŸ©\&ª1§†^?Уr�RoÄ£"ýé)ÍûièêüxcöéêO)¤·ëCCtL¯0�Ž,>¢æF„A抙éµ(¯©·ó‰ƒó»Ä·ì9d»qã5kÖL•½ÝTàtquê°ÇÌ�½ŸD;íð¶ïî‡n:x¨š1‚¨o+ÝØ–M»yè†êû×îÓ tƒÔ3Ò"G�ôÆ[oD=óHt°çÙ¯¶ŸŠ’¹¸ßAnà9¼qê†z.@ u¹Ô…b$ŒAo?¤u½Ö™iUÆ!º‘¶%Ê’ˆr7qÔ!ZhjýÙ¬2¹ 嬗Óî®Ê .PJ A:�ëD&ÒÂ&:Ð1vÒØŠP‹# øå]9zE�ÿhÐGâË6D¹Œ/<^:‘£E¦usÖ†&D§<¾÷X�§Íá6j^Œ?~<­drØ[CôÙŽZ{�¿ç]-4ÏA·O™Ì˜¬gÈ[DG,˜è˜ä�ÿ›5J×õã¶J<¶lQ§Zšø(Ìù´o�Ü@"<òÇä ôðÆ»1Dˆç H@Fà�ý Yø�üµDûþÐ=Ý‘‡wk’oãÇŒÍãÊóo]"þâÛ|ëº9ƒŽ ˜ÀsÙ†7é»5ÐDÖƒ�H¯1I0W¿•�¾õÛ³#{ =ʹ âs«ÚH“9æØÞ·©L´†ñ9þƒ#5c i­Ú1i�h8âçóueÌjZ{ãÜN—‰£Gþɧìù˜TÏLtñã¼^;æG³ãÞú�ì�ýÇXOf"¢¤Ã÷ºìnë+¶ˆ ÈÇ~tD¦À¼½Ÿ“qÐY=Ñ»™”€ÕýÜ™œÀ|í¿Õ8êüyéO4°«9"Ù¢àö Æ|¡ãYº@§Ârô$š>Œ¨Ÿ5ˆ¦@$lÙL�)Êîˆ'D/Uò#:u”×™É þªÁg‘&ˆNZ5OGCm¿TX~)ÏÝ9à\‰ŽÐ^çB&.^¬æmV²$Õ.\X•½ÙØDGHý—wïNÑ£²Ç, öðÖC˜f Ý¿~_¥ j¸®!E‹ÃžI68�áœ}pã�:öDt´;ÑŽâ§‹¯¢B¶ß®ú¶:Њ¿�˜V}¹J½ùò¢ÉïMT›½1Dê@˜€Ð@ú"c7ÎÜ ÿmþ”µšöø!]Õ¬ªìMeË×"•Î:/ìô‚!�Õ„"”#©¤md�c0æ-ÑqtÙQšV–=¢lyšæQçÉC$¢Köÿ²ŸàÀnµ¿•"iüýý)UªTª�·›öíÛÓ@&ßÜÙƒûœv†�‡øx—zÅu,Æ`, NUwo2ëVß·ëû¬§µ_irÕ©UÑ¡fc§á¦ iç8ýóDt¼ó)7M¬Lw/ߥþ‰Ù[Éf¢xÝ}DýâöS8×]V—Þ4¯»«^z³¨Ù"Ú1f�¤þÁRjý”þ'ºqú†"É>]ó©S÷GwÑ€dÔ3”³~Nª2©J`»MtÄJ‹omL 3&Tí÷®Þ£Ÿßû™.¼¤"“Úoçˆîaƽ;N¥ôÓp}CBª+cHc5:ïhu�ˆ†ªôs%Õô§¼7nœéæÕ[\7oj‡æ9@t¢ gç1¿%�h¤SI�‡)›´ãº`í<î5š¨zS½
à� !;\ 8¢+ð91HƒIë‰%ÓsãZK¦Ó© 0/H Oöm[‰€>=Øi^ÛÃcX<�Nç²§f =#Îå‚S­ÓQ%¸F¤µ*ï†óD*0Ìa,sN¢o'ao ×…ÔVÅ™Tqg6Ö?°³ÝSš­°`‹óW̦Ïšûi¯·7ã2 ¤ÁZ»Å}ˆ6RWýÈe¤ƒ�p@ä ¬#Å4ê¬ËØ"EU¥ì{<óƒ™äBô Ÿ›ÖŒ#¢L@®l½J'¾nÃvù/LDÔÐLJ”k¶!Jhão\ïø lþä]Mä õR”á™°íÈ>,Üî@IDAT'ß#}œ'óöwáî£G4÷àAÝ»îäI§`’ÇŽM åÁÿ2$à5›¯„…¯ã<]ŸÔ ‚€ ‚€ ‚€ ð¬¢ãY#Šùï³p7þxEôÆzÖž°-GL 's}þ—Ê�ãË/D¢úΛG«Xû„Ê”6m(e„#:pž?�Sc®ß±¼Uh`‹ÇbÝeø�m¤‘Šæ��Ñ=9*#bäH¯Uñûïé¿ÑèÇZ"ÃXSÑó^¿°§‚íó2e¨j~�’Í•èíuŽ]½š¦mܨæú’ÅK‡BP<¼‰èÌÿt¾ZkõÙÕ•V€:Ø ¥•!/ÜQcE¥î·»«ÞÛ‡m§¥m–ªH‡¯~¥ˆ¿&üE¿6ú•eND­µ¶§Ve›è¨¿ª¾Ò Òɪ0‘H—ÕÑ¿£zÃßj¦Å-ÓŸ£þTUmŽ´Q‘v»]ö–è_h¼J;í�Ö[+BÞŽêQ¹Ø#ÇV²IBú¢›,4ß¹³åM³x(—*UŠ>þ8Àç¡OD¬68º#�Êj`ê�„ôhžˆŽRJ) \[ÿDýUч}>¤"=ЍË”v�"&ªÍ¨F~µ‚zýBCt`Âõ½™˜é¹–—‘¨íñ¶Š¤S'â�ýy!‘¶HZÓ䔺êý/ß§âýØ+j4E5]¤jê,©¨rlÅ1šRzŠª¯8¶¢S„‰>³òL¥iƒÔkÝnvSŸ�iӦц ì … aâ9ztf´|48Nó±säÆ7´¦êòÆÒ„€Ñ•€uhCj¼9’]½Èè~§?ó†å>qŒX2�¨K€c¿eOÖ±èåhCÉ� Ð¥ØrÅѶbŽN;…š�³µf…£•ߘçs,�¡k¾ã[`§Ìêù™N§ó’ÃDÉ-#�ÆhÁD=výy ¢kÛÅ´þ„©™¶™è�BæÈ±GÄ ¢1‚³B%ÙÉy²ÐH#b6’ÓÁ¼�’=QÖjüxÚæŒÊQý+§´ŠÅd‘;¢ݽ½ÎùÛ·Óà¥KÕZð=� ¹·f_p4ÈG¡ˆñöv?£G`“v;¡Gd¡ªÜñÓÆ§v'ٳĶwÆ^šûÉ\'RãЯ‡o«{šßY?ÎêÐáP³¹ßô‹Ã¤k4Ø)~ìžöz!JŽTSžÌ¢Ãv^{šÇ®G"^»~êº" p½69a_¿÷DtTžP™Þi ½�C3¥+G®�Mj ZD€§ùCKt`mÓÊM££K�ªh¤™Bú3\ËàôƒÕwP‰ïJÐ{]�=–6ÑÑþT{Š—&ž}™Šìé­·"PlÒǬϩs0H§í™ça³GsDAs¢7’j‘q¬aþNÇÔH“›/ëU-ޱ8å;™‘R i~�jh;m‘b)8ƒ€9Îa¬!;‰·¯Õ:H!åjH#ÒäãÆÍ7N·"%ÒgÁÚôf‡õÿtÙÞömM!v¤ƒúë l] ˆSCÁÕ =ª¯®ýóvP�×þ!�g\~¡{M\§ {Ì0v²�äë€A°Z®ÖŠ#gÖñO+ˆ �L™ëqíܱ‰`Èó¾N™ä®oX°Å| ?Щ¸ ;áíý´×a ¼{Cè@ÿåÓ¢z¤/ƒx¸m &òïwC]³†ŸÍ¤©tÙ¾ÇvOe¤rCz+c õ>Lí,`Ž™"åˆtpœÇô·÷"ÿNÿtªjD”`îŠLx”®î™€²çxåËœJiO»q$ª±^!: "²A@A@�—!:"Ð�Ïoâ}µv-�»u+pUÑ™l¨ÄÚH[Ušµ/"szo,,DÇAÖ#h1v¬:Mµ‚)mâÄ^öÚ61ÙуIXrÎ=ƒIOæ-ÑñOÑq*°ÑûГ‡OTz*¤©‚¢.¸†�,K•,ê3t…u—®[©eB‡ïµ ™ëÕŒè—1Zã`”æjUT¢�Viì =;DŸ!þ ÍŽ©›õ›ôp$ƒ@€AD 3@2 Rc&?&x³:He›Ñû€v4l»Á_хر³õ/ö3w]#àqûi§�ûX÷±·Ÿ•æTW¼fDPLßêhÜ�hL?}¼ó®{Ý›n ôõ BcÍYÇX_KkrÔÉlíÀþý:ë@Äuž /Ð�€74& þv¯¹¢åï7Ñnñ¾ ,�i=þyýBµlU�û QíÐÜO{6µú4Q2&‚3ˆ«ß^c â º*¶Ah|ÚP¢„‰™ ºèhiÁ„Ä~Ρ]d Ã;z8—ìqDâ˜DôŒùF“|Ð[1â¢M&}:™ç=p ‡uAWŶ·sé”p!]·=&4åGœ;k)¿�M·ÅüÿK/5b­˜Ù ‚€ ‚€ ‚ÀËŠ€ìÎ>á¿–—ðªx#oÿáŠccÉXd².§Méá—$‰©v» Ñ� ;LžL;Ù±û:‹c×-R„ƼRD‡½¬¼æ At‘ÿȆÓne�*JÄîcÊÞ‡Ï�£fcƘaÁî� º'¢ƒ½¹Nˬ,H=¢I“`Ïk7†7ѱ¬í2Ú6dEŽ™þwÿöRTÙÿ›_“XÏ’è(Ô±•ú¡T�ó»Vü�ü‚îƒ_M?ª6³šk39­wÚÇ”ý“ìAú˜ oˆˆS#ŠÄ…ý–¾™ÃÓþi‹‘{:Ïó®¿í>}—ð;µ hV@»ÂÕLôDD":@šA;ÏRŽº9¨ê”ª4ä­!tõ響¨ªýkm×ËpÒè€VK¢,‰œú<¾÷˜úÆÔ!vJ¬•]VÒæ›ÕwZ÷»Ý ú2ÞØÓ#÷æ|ècÒ5c"às})T·0Ñ_[XË€É�úVS&=¶òÛíF_ÀNáS�¿îþ7‚"ÔÆàG…“þ @F.1-Dg™,�Q`~¸¬ ô8γ5l­‰™Ûˆ²ç×}Ìš0I�ôTµZòšØ©l¬u¬œ«5 ­àjH�T2�&l‚ǵ_hŽ�†Dš7Y4û¨û‘F¬<[^&Èþpî‡úû?ãÀ·V çvoŽÎ�Ò×…¾ J@˜¸³°` qï�øa¡¹Ÿz„ÞMh^¸»?v_”¿¬ÏúS´ÞtG\­î{ü ofÂŒbÆ.w´"%RS¹#d½¼+ݽ­µ>Õ´™Ï�ÿŠ�äCô’E÷4R—-�©É’+t/D(!RéiÚ®þQÚÓ÷î¥KÉa, ‡dUÈ”‰>Ë“‡?‹©Oo}b!: B²A@A@�—!:"ð�=ËQ ?s”"=N¼‘g–›'yrjÀi�šò²Ñðz­‹ÙÎùòܧS… .=Ü‹t›N;Oœ “ôë¼ bÅ¢kbã¡!:0Wç©Sé�¿ÿVâæË™èˆêf­èç-Ññ3G¼L^¿C¨bÞ¼”šEÚ]mú¦Mj½±9åׂ.]hææÍ�DM«Ò¥ b䯼¹ÎÇìÕûdð`EØ`ÜÄV­(G¹xcáMtlùq ­èį<³!RQÙ¶gêšWožªŠDǸ‚ãèì¶³”,g2j¾«¹½TUÞ=…ÅÕëÏWåF›QšÂi‚ô1ó §K.ytl›~S ¤›þ7)Kå,Tk~-SìþU!:‚I'†ôSHCåjCÞdáØÕgѱ¸9 Ð�þÓ­®†ëZìãU_¬¢MßoRº45~©¡ÒY¡½öÂÚ”¹Bf»«*ÛµÔ¢,•²8õ¹°‡£[rrØ[¥ñ•(W#~-›mç¸�´ð³…ªÜbw Jš#©*‡´ o¢ÃÖE0Z (òsäÁ½;D?Îbv ½êÂ쀾~…¨ïÏDUjApˆ6ã-vˆ…ÃÁkۦ߈š•Ñ5®\[ìÙh€ØcÀçî¢ÓcýqË17Þ†Gj*˜kJ!ÔM¢EÌQFº+¤½2Ö¨8Ѷ5Î)ºLöËaR'àZíë¶û ŒH�Æà0O˜Ä9ö¶†0Äœ®vž#J¤Õµ ‹ JnœçM?Ò5žÒmÙýÝ•¡s½„Ì3e×e×mX°µ± Íý´×P¿ˆÖyñ–dªäGô÷~&ÉøëyÀ {&Žäg¸@<"M¾àgõ[G;êqo açh [ÉNCfk‚„4+"m@ú!uˆ;xaµ{�Ó(NÝ ññ=.šh9‚°qîÜJ× /ÆóUTÜ×qæ¼²A@A@A ¼¢#¼÷á|×^q옊òXxø0ÁñnìT»v„Ô®V¢óµ7Žž=ë4µMtã?²÷�>Meùkw"9ŽAw< 4‰ÑäÖ^,§õ�·DGãQ£è¿ÅøGˆ@ƒ#Žý’ï, ßØ ƒ ùNÅe"R\‰ô é:ÑÇÖéÈÏ)ÄúÖªEÑ¢DAS =`ñOèƒ@ÝXx'ן¤‰Å&ªÓÿ†ßÈïæüFþ”RSèØJ~E—-"¶ÞA³�Í(y.~%×2#&�•Žþݦ2ݧ—ŸNG–¡ cP×Ëüºz$Óâ¼ÑÂ'Òk‘”`z⬉�;!Ji�`ˆ9Ã÷{o i«âÆe¯ò f?˜H'×�¤èq£Sç:S”ŽçüÌ–34¾ðxuEÏ*¢cÝ×ëh]¯uаøâÚ„QÞ¢7†fªîQÔ˜QéÑÝG*eÒVEŠôa°‰wš2+»räF~mœÍ~6‘Š ¤ÚOþ Œñ´>ûBÚª.„µ§q¨G\š4i‚ël›­‹°â„øÆ›æåßÖÃ…€hÛ!?�¿63çdG1sÁ»'JÌǵþ:…�9œ¶U¸ÆÁ ´]¼².cûS7~Ëž�ÏH7qlè}ØÖ¹¶~Ûé° (nlý�.¯�\Ó0�âµÖ)D„¨Øœ�DHdì«&DsõcIów³Ã?‡iÑN=þ<~P_/"\×dz›4Pæx_kì ?¯dkH *Ñ1¶At»¿[€è˜!�ô‘Þaupÿ |¢Ç°[½+ýŠSbõÑ„æ@Ê&wl}½Ÿö:Š¥ÐÑ?¶&‹Ýn—‘ê dÜ“':íÈ&ÛNòý+—E× œ­õ/L;RŸ!M×[~Dx–=iž@ÆS›™ËÞ]Ô!2:Þþ«V†?cgùó–ôdö¹ö_ºD~üÿ*cxÑ¥ §7EôƇéÓ»ýÙó•°ðuœY›ìA@A@A@o„èoÄÃx¾nßVoò�ãÔVÇ®]#›è€€øõ€ôÿ°Smʆ êlÙR§¦²,jn¬pæÌŸ£4‚K鄾›™Té>c†¦ö6ѱšÓ%ô™;—±3·:kydã´Ni9¥Öc~ãp÷©S4~Í:ÃyéaU  ÏË”QewoˆŽ |M5úI Ç5 oÜØÝT´vß>úzÎÕ†ó&ä7ƒ#:BºNLô�¯©Ÿû*ãË™6-Õ~ï=Êœ"Ý`ÌAøLf¼3öºl¢£$§{']:5ÞÝ&=c‡ÔXaµ1ùÆÐ¹?ÏQÔXQ©ö‚Ú”¡D%¨¼é»M´ºûêÀé#Ñqåèöö0å4†ã¼î²º” Cu¼æ«5´±ßFµÞü­òSÙae×·ùñV?̯–êTˆâ¦ÔDC¬$±±�¶gn(í8Âq® c*P†âФìÚ‰kô×ÏÑα; BÒžˆÓÿeÛƒ,iCÔKµéÕÙ\@”�P€=+¢cÏ4Ž:ª;O�!EºQ„…[žê娒ÆÔ@€BäîÌ&:@*|4ø#*к€"È E3»Ælzòà‰Çs`Û²Ï9EÜÐmŠŒÀ‘æ ÄìñýÇtlÅ1Ú>|;ÅHÃmJ6{®gU6ºñê¨ œg ßÖ.u´žt%ø²ÉD@Ó"Ýp–ý Œ��v嚀¹—ñ¶½±U§XƒÉâc¥€h…\…9 c“éåØ—Ë¬5 Êó:¾Ÿê¨G¬Réù»öQÜúmý25Y+ˆËýF %XÔhšÀÞ˜±€(€¶ýX{�ç‚VB—OØù½C_kÿiASi™9Îñu”LgŽ´vÃò€s:juÉžnûM€X6s —/ð9Ù?ƒýÐFÀé•F/ J® ÂÑpÊ/ØëzïŽ[2™²~qÈÑaÁÖ×ûi_�!: çb,sG$�Ýel Ú`ãV½[B—ÍÖNÃeÈ:Ó]è{À@ªtùÑAT=¸§SQ�»Ïå1¿é~Ø‚¿†\S¹Ú¬ÓœEÇSê6¤ó Mh®¤g‚eñAÇ8”& d�¾¿ ç Å>+“iRý\IÔùb†èÈÂ/�4á—L�Ê4QL—�+—‰}%,|çrz9A@A@A Ü¢#Ü ~º'â¿Ëéw޶ÈËŽö¨¯§Ö6ŒÎ\¾â‰~¨W�òrÞæ�ˆœ£¿9xââÅÀ9Ý�� ©8½Ô¸æÍ•Þ‡‡.^¥®š·m YƶŊ©îæ»uÿ>Uúþ{B$L²øñ ©»‚#:BºNsDÉô˜5‹ÎY‚ç¦Íì] ›è0}<íAFu©TÉS³×õÇW§iå§)'-ÁÙÿàözpã�Ò€#ˆ¬cy‡å´uÐV•%HŸ€n_¼MÐÓ€ÅI‡>ÛþY i¡*ÝlÐXÖatãô� ­öùhDú¡Å-Ó¿�Ø#Å'u¼Ôñ òàæU‡M«ý­^9¢ƒø1¹äd:¾ú¸ÂÑ4x†®Ÿ¸®¢%@ ²åY †fJ×O²'ÞÅ2–ÊHõ–×s©uî�¾—æÖ™XáN{Ã4ÚDG´ØÑèá퇊˜€æÆ­óüz<"C꯬O© ¥6ÃÔþþõû4©ø$:¿“½ólˆ2i⮟bœþÅ· ¿ù]=UŸ]]•Ã{ó];"8ä ש pþ�8õ;óåý:½"àÇoÃÏÚ®ëVÍg² ª.c rüÌÀaBˆ®ˆÿ;‚]~r ;q�6LŠ qÌ�Ò ám}8–á„þ´ƒs»YŸs­vŠC#‚؈ä@D‡m GʳÚÿ¤®�ƒ5C¯†¨ ¤»aãÉ ácÚ!†QtwÖíS6Ÿì®Å¹®piMæ@›ÂÕàX?ý7¿é_Ÿé“\[ƒÝÇiØ :×Ãy§:,F,½Ç6c1ûOÇ1J¾b–ûiVе.ÓÌ‘c�gj'_ƒiÅ$QßVºÒ¦�¨³ iÏ�þ â3íˆ6BÄ’¹ïxVS¦ÓĈ'ÿœÅª , z£GC-´n*AŽ€�ûM­ûý˜~Dƒ¹Ÿ1ˆ·cœ;«‘WG‰Øm W±�2�N‘U³9Ñ;…ìŽ2R[åá—ðáDÿâ'íxw´º/™h÷­Îµ¥™[C�m¾`Öûi΂ „ÚºÅL–ñ=ÄõÃÜEHôiÅZ#ˆR¤åçò¤êæ´iQŽÁ—:“uvDþ|מϵȮÕeNx@°áY6BçݹI‹Ý›zìñ A·¦i7½&» 命uÚ4“ÊÍnÇõµäëþ¨¦& í¶ð,»®Çf-®õ®Ç¦ŸìA@A@A@ˆ¨ÑQïÌ ¶®K,œŽWnÝR‘ˆ¤HÊÿ\u,^°Ëò¸\öOÑyŽì8ÎÑ.1¢E£$¬“‚ÈöuE(Cš¡‹û/R¿$ç}„6"×�™8&%Íž”ð¦ý³6D‚À�H¤¸Š—6žŠîxÖç}æ6þ2Äz á‘íä:Ö¨ù`¢Z¢M®¸[³Mtô¸×CE;AãÊá+êóÒÏ+ãçéÐðÜ"’#n긔0CB•:Ϋñ¸Òõ@ëãÎM¢™,eGqxÞÎ�_Ÿ i€ ¿›°& U”>tÚ‚88wJëq@#Ä� _´/œ&} |ÁöEƒá:Gƒ@ÛÄJ<&Ì�Ž éÌ‚Óæ¸w‡£8ë1ø1Güóæ‚ÈŽë—5á•*ƒÞƒ{Þæ+aáë¸ç}½r~A@A@A@xu¢ãÕ½÷rå‚€ ¼T ÚQG È:�ï,QæŽèx©Àx‰.¦¿…�7ôá±�ÓQyÝ~‰.9Ü.E° 7¨ŸÛ‰|%,|÷Ü.TN,‚€ ‚€ ¯<Bt¼ò�€ ‚À‹‹ÀÝËwUж�ãwÒ¶!ÛÔ… %RcgBt‡Nø·ApoÔ×nI”.³Nõ¤“úeŒ^„Ñ«6 ÿµ½ègl_ô;¶õûJXø:.l«•Ñ‚€ ‚€ ‚€ øŽ€¾c'#A@ž3½£öVšf‰²$¢††¨ë"D‡A,bìmÝ‹è¯kÁshDóV´Ûô—½ÁÖ�Å«Xò•°ðuÜ«ˆ±\³ ‚€ ‚€ D „èˆ÷AV!‚€ à}côUéñRÇ£´EÒR‰ïKPœäqBœiǘ´¸«#sýwz(ñI‡g†@/Cß°„è‚¿ãÐÙ€htóDEË;ê¥:ÛÐáõ²õ6„…¯×Õ³gO_‡Ê8A@A@A@Â!:Ân9™ ‚€ xBàîm"DrĈIôFRO½¤Þ[_P{ñÇÑñâßC¹A@A@A@ð!:¼ÃIz ‚€ ‚€ ‚€ ‚€ ‚€ ‚@D@ˆŽxSdI‚€ ‚€ ‚€ ‚€ ‚€ ‚€ àBtx‡“ôA@A@A@A@A@�ˆ€ð¦¸[Òå›7éúÝ»”8n\Š““—{aWnÝ¢›÷îQšD‰(òk¯y1âÅíòèÉ:}éň�Ç‹GQ#GŽ�óøßé¯ó�ر)~¬Xr�²(A@A@A@A@A@^$„èxwëΣG”gôhºõð!½Ÿ& ͬVÍí*úûÓ¤õëéð¹stí6+´ä¥rä OÞ{/ˆ³ÿ¡Ë–Ѷ£GéÂ�jDô¨Q)sŠÔ´D òK�ÚL¸÷¿z•ÚNœHôßT&W.jüá‡�m!-YB›¢H‘"ÑÏ-ZPœ1B¢Ú×8 ÖéMç6eÊPѬYƒti0iÝ:ú�¯õÄ… „cÖòNºtT­@*œ% ]dZޝ®/È$ÁTØXt˜�&;¾ìÞ]Òk‹'/.w¢ã>­X¸Uoè‡ŠŠ·Þ*…sæŒÞ|^+OZ "[µ”…½W«j(ž'�ÓV]?ªÍ—šL*š;·Ktœ8uJ&,[}¼·0gõêèä…ØJÊ*3¼DÒTM,üUU³_ÛˆY¢Á¢h®\RÑWmò¨&­rjë,/Žh»±'þýïè$Gýòå]‡UÛŒÖj”݇¹]›=ô�´xøáX‰Û,yB¢Ãæ@@@@®u—ø0vÕ*i6i’{ÕwªV•çï»/Æøoâ[ &«fxLÛIÆ×š )¥7âseÎì6YÛ¦zzCý°V:Ü�.� {æ±ÖH^¼¥¯iU"/Ú9}—;ÑÑ£N©¤ªÅ»öÀG"¨¸¶äê߸±Ü0·Äfš|§•-UJ—<<úùkšL2G‹ñ]ºHî(ËèB,lÖ ˜–Q05´¦[0š`U½ó¸¶ÒzNÛpya‰šg† “SÚÊ,—&Gì>]¼8FE‡íkm¸4oîæItÄàà  € € € €\Ã$:.‡¿M�?B[1eÕù]þÓŸ×'·k%ÂZ½ÁmûnÓÛ7ø*+l_«¾°–LÖbêí§ŸvËñý[¨í£^Ñ6Rvsÿåºuc²iÏiõÁn�Íé¤-�¼HN‰3l©†[´²Åb¨¶uŠ«ÄíâߥHtXBÄ#ã´zÇŸ|²u½Ç�›·aa•?ë<¯u•%º,ñea-¸¬—Vab­Í,?ø ´®TI~Õáó]µª§™~þÕn¾YRèñ € € € € pµ �èHä'l-¨¦®_/Ã5Á1kÓ&ùÓÚ)iUÂH�¹*¦nØ µt††Å?´­ÔkÚª(0¬e•U,XüSçiÂxŒ=·ÁÔŸê| KrV2ØíòÇûõ›m‘:eJ™ý�¸}í_rJtl×9Mu^†E!mg5ºC·œ˜I�è°™ÿ׿ܥY‚Ã�1I[Š Ð�î6,Þ¾G^¢£Áý÷»\6§Å’÷iÔ(úð`‰K Ý¦I k‹ÖÒËkåŽ- € € € € €ÀÕ*@¢#�Ÿì/¿ý&irc´¶�Ú«Iôxà飿¬FŽ”%;vHz�“aÕÙÚ-Ùq>úHÖíÜéN1½gOIŸ6m¨ÓÅXßwòd™þý÷n� ¯¶!Ö�ñܨQÑû§õèáZ\Ù>—;ÑaômG°H©óKŠè /–ÿò‹tÿä÷ôI�wÑQÛ%6’:ѱO+}ê¿û®»<8þV�êk¯ÕuÌ·O=­²9!^¢ÃÞÛv¤>uÅ ·}Dûön&ˆ= –èØrø°”Ö ’c:”Þ «ê°êŽ6šð¨¡É’Tó`¼ýxD@@@@’«‰Ž0>¹Sú‹ú‰Úʪ7æé�éÿ5úß�yt@xmdÕ%t(v¨X¤²+j¢ÁâY|=Ð7«ÁÌãýû»¡×iS¥’ÈÞ½ý›â\î1nœ,ÓŠ‹�;u’üÙ²ÅÚ¿§î³ÔÛçÙg%Ôõ^îDG¬ XÙ«—¤Õä�Žéÿδinù™Ê•¥a… n91ÿ’:ѱ^ÛPÙ ‹J·ß.ÿxâ‰X—¹A÷iµÏ#·Ýæ’:þDG…%¤±¯·JÛþJ½zîÁ¶á„ÎûøB¿«£4é5ëÖXßÕVå¡E|ó[b]+@@@@@�d$@¢#Žë'm“dÕc´zãàÉ“Ñ{¦ÕÖOµn¹Eì¦q•¢E%e³ªk’aúÆ�îõ5Q(ÈàkkQTåõ×Ý\Œméà »¡n7Ö-&vë&Y4ÿúâ ™»zµ[=°eK¹½@·œœþ]=uˆyÕ 1ôHêD‡%ž,eQ«LéZ£Fà%È­Øh2p [w‘"rwáÂ1*:¬jåõ/¿”9?þèfnX+oÖ¬A+:O¾U+<Æ®Zåª�¬Úà ›ÜQI_˪<êh"%�~Ÿ @@@@@ ¹ �èñÉý¬IŽ[ޱµÌM7¹Ê�†úëü,éÒÅØדÕ:ŒúލAàO뱟<þxÐÝOé¯ñ«¾ñ†Ûv“ÞÌ÷ÜsA÷ ¶²í‡ʆݻݦIÝ»»H�û½:a‚Ì_»Ö­Òºµ”Ì—Ï-_îD‡ ÓŽ«uUÑܹ£ßʇ³g˾ùÆ=漏•ï¸#z[B’:ѱDg¸¼5“¥NÙ²Ò¥zõX—¸C¿gM¢fŽ”ÕS¥ Œ•è°Áë6ÔÜ“W×äD÷ZµÂJtx/fH ·msU:ìþ¸~ϼ°dǰš5½§<"€ € € € €ÉN€DGˆ�Ì?ØÙv©�?¿ô«REÊG%BtucýEþ§Q•?¶k'·ûfNP»o_9râ„\Ÿ&�ÌxùåÀÍ!Ÿ¿¨s+¾ÕùŸj‚Ä~õ½ô¦û7zóÝbtÇŽR(G·|¹=´2£Z˜•¿ýVÞ›>Ý]w{ý“&I¤¶Ø²Ö¶­×ê“ÀèA>ûôó袟‹E]�Ý’-cÆ ‰ŽŸ~ýUÚîö³¡å5IN¢ãŒ~ï¬ešµ_›¦vöÜ‹™2IM�4Ò*#@@@@H®$:âùä¶9"#t°óHýÛyôhôÞ)t.Ç#:O¡¹þ"¾®Î9H5,;z‡¨…N3fÈ ­B°XØ¢…<5#js¬‡W>ûLê0i‹~�‹µ3 'ü-�^}òIWx\ƒwß•½ú~R¥H!³_yElVƒErJtlÖ6`ÖÆÉÂZoY ®ÄFR':N�=+Uu抅UÏXM`L×ïUßÉ“ÝêV�<"×é÷*XE‡íÐuìXùnófI§ßµÆ+Fﬢã‡={ÜlŽqZI´_“v^Øg_S“.mî¹Gªê|û € € € € €@r Ñæ§wNç#ÌÔÖPÃW®”¯ôòV¡áEFm3U_ÛuÔ_äßå›'a7˜ jrá¤Þð¾_[_}£Àã‹)+VÈ;Ó¦¹Ý¬•‘%- «æ°ª‹šzû…€¹ þ¡×6ób„¶Ðò"9%:̽Ñ{ïÉ>MØXø[pyï'ÜǤNtØuXE‡UvXD¼ð‚d׊ øÄ¿þÔS²uÿþèFǪUÅk]eÇ|·e‹t3Æž%C9tü¸[öö=û@¿?£õ»ð£&„üQ4Ki¥ó8¬UUî ƒêýû²Œ € € € €$'‰ø´v;&£ôfò�w°%ê&¶�&pÞÁ?æÍ“×.t¯0Yob׺å–x_í̹sÒPoŽÐ×°y Öþò>0Öéü‡Éózìm%4L«<&ë èÆ:pÚìü»& h5Ç¡?þ�’Ú¶h�&½Ñ±l™ š9Ó]™%;Úè…2šìȦ Œ-ûöÉ M²ÌþñGék­­|Ik�d­�,nÓY6¿Â*æ¯]+j¢ã¼V¥Øù¾Ðêþ$ˆ?ÑQJ+O»ë.wŽ`ÿ¬Õ‘ ·KÿÐV[‹¢Zmµýûßcœ7ðøâyòH1ý³øJ“Dý¦LqË•ÕíÎB…Ür°…sætmª¼m§µrÁ*%~ûýw·ªtÁ‚Òð�ä�KbƒÜ×lß.c5Á”Cg¨ nÕÊ;,ÖcB6üpT («Ðø8*�èUA“Y™£’Oö‚{mN‡V ˜½™=÷è£r¿îcëEFFÏc±Ê «àødÑ¢86LÞ†Êû#0ÑQ"{vi­Õ6K&»/Ùå?†e@@@@@àj Ñq‘>É}ÚFȘ[RÃâ�¥Kå…Y³Üòè:uÜMg÷$ŒvS|øÜ¹Ñ¡éפIŒDÇ~�!ò‚ÎqØ~à@ÐCìF{7miU]o‚ûßèð¯µ<ãå—åzm×eáOt„Úß[ßàþû¥}•*î©?Ñámõh‰—k׎±ÙfuôÖ$Ë®ß~‹±ÞÿÄ’+ÑÑdÐ ÙÂÕÿšýõ3±¤”?>[²D†F}üë½eKÙgiɧø–\k©U –ðòÂKtü¡  UêroÞ¼Þ&@@@@@�«^€DG|ħµýTýÿ¯Úš(¿VlêÜYRë脆UbŒÔöW6_Ã’^Ø@éòZ`-¨reÊä­v�VÑ`s~Ðyþ9"VÝ`û?T²dŒýíÉ6� ÑlðàX냭°dÉÌ^½$mT«¨FDȼ5k‚íkÝÓ>èªSlCäªUÒgâÄXû[Q«LéZ£F¬MÇ´ZÆæ™,×Ù)¿ë²?¬­Wà ÄŽ oêëÏÒë°ˆèÚU²«Q¨°è–\‰/ÞkÞ\J©N™¡•6}ýµÔï„©µº¦\±bÒ«n]IŸ6­[íOŠt~ì1©«s_cŽ]?c/šÿíob € € € € p- �èH‚OÝæw´Ô6Rïj;¢.¾y‰y9›¿±q÷n×–Éù²e“Ò¥‹óTÖÞiƒsTŵ¥Sàì8Nf-´[+;6k•ƒUšäÔä�…Û*ìR¾Ý½:Dýý\²jK±b:ÞZ‰ € € € € €‰ Ñ‘x»�G–ÒÖBë´J"ëõ×Ëö矗 ©S‡Ü—  € € € € € �x‰· yä÷{öˆÍK°DÇ-ZY@ € € € € € €@Ò�èHWΊ € € € € €—@€DÇ%@æ%@@@@@@ iHt$�+gE@@@@@�K @¢ã ó € € € € € �4$:’Æ•³"€ € € € € €À% Ñq �y @@@@@HIãzÑÎzêìYÙõÛorÝu×IŽo” iÓ^´s_‰':pô¨>q½×LéÓ_‰—È5!€ € € € €\A$:ôðl™ô[²Ä},“žzJÊÞtSôGÔuìXÙ¾ôóP ¯5h %óå“g† “?Μq»åΜYÞ~úé ‡¼ ç=p오J‘B†·k')4‘áÅy]˜õÃ2váBÙuè�œ?okþÙ3f”{‹“:eËJ±Î©ºý·¨*ƒýzs}š>·(š+—T,Y2zßGï¼SrfÊ+Ñq[�2¨eËèý¼…P‰Ž K—ÊàÈH·›µnªP¢„ܧYo¸Á%\üô“,Û°Aü‰Ž%šÙ¸g�wj÷xP«E¦¬Xá– åÌ)—*c»Õ�ÓÏŒ@@@@@¸v®ºDǶ#GdÄwßIVý5mïW|®mšDU¼Y©’ôŒ£:ÀΓÐDGZMšØ0q«R°ª<¡­«¬êÂb޶®²Y¶oµ7Þp39ÊÞ|³ôkÜØH‚–“èø~Ëy~Ì÷:–Üøpölùý�?\ë-kÁå¢#¡ïÓγ`Ý:ù¿Ï?w§´™#¡f™ø_Ó[NL¢£ÏâÅ®¥XKM¦ä h×å�—G@@@@@�ä'pU$:Îh%ÂTmß4\³6m’?­Z@«FÖ®ç'r�ÿN«'2jõÄö矗ÌéÒŹBéÓ¦•jz _þ÷¿îœÃÚ¶•â¾!çA:ļڛoºD‡µªŠÐþ!åq^\ÀÆÄ$:l¨y„f·°vUõ¹%$¬½Õ”—^kå…—èHÌû´sXË*k]å–ë×—‡|mÀÜÊ8þ%&Ññ¤Î‰Ð÷bóWÓÄJ­P±Gÿ<–8^’M € € € € €W¨@²NtXË©�4¹1Zg9ì=~<q­Îè£U¡böæÍRåã�Ýæî÷ß/}+Wµkôú„&:Fuè O¿÷ž«$¨xë­òZƒÑç –è°�õß}WöiUŠE“Š¥ÙCIª”)Ýó„üKL¢£¡^ëîC‡¤°Îô°kŸ®¶}§Lq/û/½öõ=xáOt$æ}vøè#Y·s§;Ýôž=Å&ᆗè°&6>TäÐa䙵%™E§3dÐ·ßÆØÕ*;¬Â£ÕÝwKA�¯B € € € € €$?�d—è8uîœLÔ�ÜV½1O[-�÷™çÑ*ˆ&¥K»jŽÙ³û¶Ä^¬4v¬|­Ç§Ñ$–Î�å¦0Ú%4Ña7ðßžü‰ŽÄ¼ÏÇû÷wCÞ­íUdïÞî5Âýç%:âÛ߆­·ó%°V댕QšûT‡­ïó%Ƭj¦r‘"®Ê£Ö-·Hjm#F € € € € €$�d“èøI‡k[õƽQ}P‡e{‘Vvsº…þ2¿Š&ÂiE´|×.)7|¸;Eký5ÿð CŽóû“è°„CÓÁƒ];ªªš„éY·®;e¨DÇM伦m�i2'XÜ¡ �–?,w 7Ü7¡‰ŽO-’�æÎu§±*‰2jiÑ\¯Ý†[eÄÄnÝ\ÂÆÖ&:ò>í=Vyýug’[Š�Oà@ñÄ&:ìº-Îj«³éF]�p-IDAT7º¤ÇW6ˆµ>ó†Ò7פŽ}/n3©äË# € € € € €À¥H‰ŽŸ5Yp«Þp÷G�was8Þ~»d‰g¶†ÿ8[®§C°¿ÐD‚ý’ÿ§Ž¥x¶l�»}ž˜D‡�èU�1_Ÿ§ÔJ�qÏ='¹ôæ~¨D‡÷ÂËôüTMì¬øå7¤Ü[o�vÝÝ49ó˜ÞŒ Mt´×ÄÏO¿þ*iuÇ´=$uT»¬Á‘‘2aéR÷2[¶”Û pË�‰[îû<¥³HªêÐu «P1“„„—è°ÖUq lÏ¡í¨²Dµ® uþý'NÈ8­ð¥U7«´âËëta‡Î)ap¹'Â# € € € € pe $‹DÇZ­(¸-ª­’1VÈŸ_úik¥òùò%XuÃÁƒ.ib˟Й:;ÜHl¢c£f¼ürôë…³à%:,aôY«A‚�ßÚŸ-Ú¶Mºèðõï÷ì‰Þe›ž»³;¢=X@@@@@®D�d‘è8 7Ä›Nœ(‘zÓÝ^X%F3mÕTÿòéàép¢µ×¡¿Þ·ø¶M)«•!áFbvþ—>ýTþ«í’ÒèL »9ßZ–`°˜óÊ+’*Œ¹§Îž•®cÆÈÚ;ÜqÖËÚa‹„$:¦­\)ý§N�>M^_˦Óúšû�uÛòëÜ“�Ÿ}Ö-Kt؆pßgÛaÃdƒ&p,"{õr•$îIÿ.V¢c«&�ÆjòhŒþmÖ!ì^Xû³êÅ‹ËÇê{c†¤{Çóˆ € € € € pé’E¢ÃãØ~äˆKRŒÔDÅΨ›ï¶ÍZ9=R¸°›­P·D I¯í—‚Å.M,~ï=9­U¶ÿܦMƒírÝ…$:Voß.�FŽtçn¨C²gýøc‚vðWÚΪŸ&k,šT¬(­yÄ-þKH¢£Ç¸qb­²Â KtXÂ#T¢#Ü÷ùÊgŸÉ¨9$Ö~ªìÍ7‡óònŸ Itü~ú´D¬[ç’ ¶n�1̾�Vˆ´ÒY/-õ/œáôa_0;"€ € € € €$™@²Jtx ç´ªc¦¶r®•_i•„ —ö"£¶Bª_ª”t,WNîÊ�Û[í»Ïž-ý—,qË‘zs݆—'$.$Ña¯óܨQò£¶H²¶Sçôš­BÃ"ÜŠÛwÝÎ�Òá£�lQê—//ªVuË�ÿÂMtü¡ó2j½ý¶Xå† âÞ{O%µ�“µÍ²hW¹²X «P‰Û'œ÷9eÅ ygÚ4Û]þ¦Ÿ×«O>é–Ãù—˜DÇ·:dðòåò…&9Žë{ö"µVÒÔÖäX�wò÷"E\ÒÌÛÆ# € € € € €À•/�,~V«ÒõÃ2B+¶Dͯ°í6¨|díÚÑ»þã)ðî»rLÑwž<²²mÛèmá.\h¢ã[MμøÉ'±^Οèø\—ÕLáœ9cíg+†èppÛÇâ%}�jõA°7ѱøçŸ¥÷øñî¡'{ÕµÁ€nFnCÉãJt„ó>ÏhUMC=çýüRéàó>�¹÷ø^,±“'K–CÅ“èxRÂ[%‡Å´=WkMn4×ïIÎx–{Çðˆ € € € € på $ûD‡Gj“;ælÞ,ôÊc²Þ¼o|Ç1o.Z$½¾þÚí>¾^=i UáÄ7z®Ã:#ÄÂ�¼p¡[.¥Ñó%*Ür‹dÖæq%ìÀ¶:›cƒ'÷‡?ÑÑdà@ÙùÛoRQ¥WÖ÷P0GÉ¡óGöè ‰ÉZ1I«lh¸Íô¯³>²‡˜Mn¢ã­I“d¦&Š,ú5i4Ù`Ûš$Û�ë´MؤîÝå‰þý]%Mz�a1½gOÛ%FÄ÷>mçˆeËd�·°dG›J•¤Œ&y²é€õ-ûöÉ ½®ÙÚ⫯µ¶òUßx‰{íŽ!*Zìœ×é_e�a’ZÏm‰Ž©ë×Ë%Kºê�‡ rÛm?@@@@@ ù \5‰ÿG°ïøq±æ%5I`qRÛ2Òê[_T«Öwê$6p:œh¢7ø-i_ô×$�ݤ�/ѱ@« þïóÏcœ.0ѱãàÁÛƒ=éôè£AÛLyû†“è°„I]MXV—´:$}j�nXºwÿã`­$™UIÒ£Né¯sB¬eX¨DG|ïÓÎm¯?|î\·x±ÿ¥b-&`¼DG¬ƒ¬øüùç%g¦L²zï^É«I¡¬×_d/V!€ € € € €$W�«2Ñøa Ñ*ˆŽÓ§»ÕC«W—veÊîòyË¡CÅZVÅï5o.¥µJ ÚoˆÍ½È”>½L~ñÅX‡ÙÍý¦ƒG'ORjeƬ޽Å-æhÃìÕ«e¥V§œÕöN�q³Îi­Èï+^dˆ[oÃÀm(x¨X¾i“tÿøc·ÙÚeÍ[³æ‚Þ§ÿuæ¯]+#çÍKð˜�VµR^+ež­VMri²Â‹†ú¾vëû '¾ìÖM²j…� € € € € pu \õ‰\^ìý÷ÝüŽ\ÚZj«¶{J§Õ WzœÒdÉnm•uàèQ9¡sErdÌ膅g¹ŠoÚŸÔ÷¹QÛzÑjkו/[6¹!]º+ý£âú@@@@@.£ÀUŸè˜ ­¢êë|‹7uDϸŒÜ¼4 € € € € €\L�«>Ña³:6êpo‹Ò¹rIúÔ©/¦çB@@@@@�Ë(pÕ':.£-/� € € € € €I,@¢#‰�9= € € € € €$�‰Ž¤³åÌ € € € € € �Ä$:’˜Ó#€ € € € € €@Ò �èH:[ÎŒ € € € € €I,@¢#‰�9= € € € € €$�‰Ž¤³åÌ 8uö¬ìúí7¹îºë$Ç�7J†´ip4»"€ € € € €\«W\¢cÀ²eÒoÉ÷yLzê)){ÓM2hæL™¿vm‚>#»a>²}{Éxýõ²`Ý:8cFXÇwzôQy¨dIé3q¢ü¼k—;ÆÎ1°eK¹.à ïMŸ.ßmÙâÖ¦L‘B†=óŒ¤ÒG‹Ž#FÈÞÇݲ÷/…nËž1£äÉ’Eî.\XªÝy§ØqþøUoöw=Zäüyyô®»¤Õ#�ø7‡½ƒ�+WæÌ2¸U«›ìUgýðƒŒ]¸Pv:¤—ñ×u˜Ó½ÅŠI�²e¥Xž<1Žã  € € € € €žÀ•è8uîœ0@öüþ»ÕdÀúN�$¥&,þõÅ2wõjïšÃ~üâ…$›Þ0ÿê»ï¤ß”)a×½V-©~÷ÝÒá£�dÝÎ�ÑǼߢ…ÜQ°`ôó?Μ‘Ú}ûÊ)}ôbVïÞ’&U*÷´Þ;ïÈ�£G½MAógÏ.o5j$y³f�Þ¾iï^i5t¨{^óž{ä…š5£·%d¡ÙàÁ²mÿþèCÞ~úi—8ˆ^¡ ;”&úW…µì¿®pÞ§�4»ViDtí}~KiôþÏä›õë£×[¨wß}òlµjÁ6±@@@@@¹¢ÃV®”g¦MsËÐêÕ¥]™2ny‰Þ ߸gOŒ�ëà±cÑ …r攇K•Š±Ýª/žªPÁ%ü‰ŽûŠ—[óæ�±¯ÿIÅ[o•Âz¾ÀDGÝrå¤óc�Eïúõš5òZDDôs[–è¸>MiñðÃn¿“§OËVM>,Ò “³þéÖ•Ì—Oi¥C MèX\ŒDÇNM`4H`ÔRË®5j¸×ðþ�8uJ&hM`ÌѤҎÜj{ß™3dˆ±‹]sÙ¢EÝ:/Ñ‘N«F>ð@ŒýüOnÔª;—–.•Á‘‘îi¦ôé¥B‰rŸVpd½á÷Ú ~úI–mØ $:<1@@@@@‚ \1‰ŽsÚ¶¨Ä Aò‹¶nÊ¥7Ö·vé"颪#‚]¸Ýˆo¢û[TÕP=ëÔ ¶›[çOtôÐý¬eT|˜èÈ¢7à­BÄKHô?^¾ùùç§ –è°–MŸé{ñÇ&MÚXË'« ±x§iS¹»H·|1Ÿi믡³f¹óÙ¼‹ýZYb´¢"°ý–Û)àŸ%p,‘c1^¯=·¾‡Pá%:‚½ÏPÇØú6~(wï–ôšÞ®]Œªï¸_ÔÉ’C·(à­â@@@@@�Išèئ3 FhÛ¨¬úkþ.Ú‚(®ø\gp4ˆª�x³R%éGu€�çR%:ŠäÊåZP=yRÞiÖÌÍÖ8®•u´mÕmµug¡BòÃÖ­î­…›è°�‡Í™#ã/vÇÙ\�'î½×-_ŒDGçQ£dÕ¶m’3S&W1$ªrâömå�y_$u¢Ã�W{ã 7“£ìÍ7K¿Æ�ã»$·ýW­âéªï¥YéÒRM�ó’NaÌN € € € € €W¥ÀEOtœÑ–LSµÕÔpMpÌÚ´IþÔJ�ZA1²ví8ï6L¾Ó_øgÔ_øoþyÉœ.]œû_ªDGq„mð­*Ä›M©´ûLš$ù³ess/"¢Ú?%$Ñ1ãûïåíÉ“Ý{|²|yéXµª[¾ÐDÇÑ'¤N¿~ÎÝf�<© ¦æC†¸s7}è!iÕF+.Ü$Oth%Kµ7ßt‰kUá«”‰ëºÖjÛ¯Û¢ÞK~­PiiÃÚõ=Ú2� € € € € pm \´D‡µœúH“£5 °÷øñš=´:£�Vi„ŠÙ›7K•�?v›»ß¿ô­\9Ô®Ñë›èhR±¢ØŽ`‘2E ±  ¯u•%:žÑëyaìX¹QgILìÖMzŽ'ßþò‹Ø¹¬µRb#¾þZ>^¸Ð½–%9,Ùaq¡‰ŽÈU«¤Ïĉî\¯Õ¯/K–”'u0ºµ¯*ªïmDûön[\ÿ“è°9ý›4 yZk¡åŸõQÿÝweŸVüX˜c3M¤J™2äñ¶aËáÃRZµSs/¬ªÃª;Úh£†Î_I¥Ÿ!� € € € € pí\P¢ã”¶nš¨C£­zcÞ–-rÞç–G©ßD[ Y5G‰ìÙ}[b/VÒ$Â×z|½Ñ½¥sg¹)cÆØ;¬Il¢#à4±žFöê%iu°¶?Ññ�¶|z¢9¤ œ^�?.oi5Ç9­\Õ¡ƒ«ôHh¢c—&…lF…µÀ²°ÖMÖÂÉâBÿ÷ùç²@‡�[`ÊK/É ZÓwÊ™®Ÿ‘…Í ±yqEbq�϶Ù`øv¾ÖèùóÅþ¼HŸ6­«Ž)]° ”ÓAç7eÍêmŠñxB«A¾ÐïÜ(­ˆ™¯-ÿs-¬ÊCÿŠdÉã8ž € € € € €\�‰Jtü¤ƒÀ­zcŒVoÔÙ^¤ÕDE­[n»Ù\EoV§Ô›íñÅò]»¤Üðán·Öú«üá5kÆwˆÛ~)ÞyF|õ•LZ¾<úÚ åÈ!£;v”A3gÆYÑa7ðŸÓVý±UÛ/ÍT·SQƒÈ çÌ)vþÔQÕ ’è°™!µÞ~Û½ÎmùóË V­ÜëÎ×ù'¯N˜à–íZ�šâVùw)v­ö:‹4i,îЄ‡µÙ²(¡b«VxŒÕ «"²j/ì[WI‡»[•G�%\ÍÛÆ# € € € € €ÀÕ%�àDÇÏšä¸uðà etÀµUn4¼ývÉÏl�ê“zZ�`¿Ð· „Ÿ4qP\ç^„‰Mt4~ðÁ8[WÍ�Û½¼¿¢Ã6ÜÛ†|{ÑBoÂ[»¥øÞþÁm>…Usx¯iû\H¢ã¿7ÊKŸ~ê^Ê’6“ÃâØHmM€Ø¼”»5ðNÓ¦n}¨‰ItX몸†ŠçÐÁèY2dˆõ’Ë6l�©š4[¡­ÀlH¹?ì;ÑM_�iÂ"®°ªŽ…úùX•G„V³�J"Ù1–ìfò,®×` € € € € €À•)�àD‡ ´½¥ Z9ЯJ)Ÿ/_‚ßᆃ]ÒÄnÀ?¡s3"t¦D¸‘ØDG�:u¤š&eâ‹ÀDÇy½F›uqàØ1wèØgŸ•Ú’+œDGšT©Ü1×é�ûìÚ–+�¶Uº»payB++¬M–?.$Ññδi2eÅ wº¡mÚÈ­yóFŸºãˆ²vÇ7Ãb²¶´Ê •&¡"1‰k‡em±gµÂc½V÷üW³´JcOT…FzNÿésÏIM Åt»µQ{yîÜè]-7²víèç, € € € € €\] NtØÍä¦:ì:rÓ&W!àqX%F3�ÉÑTÿòéàép¢µÎŽ¡¿Â·øVoÌ—ÕÊ�pãR':ìºÆ-^,‹þYrju«O>é.5¾DGB‰MtXUƒKÄèÐq‹›4™b‰/~Õ¹ ^¼R¯ž/éŒ�GïºKçäI™ÒU Yõ†UQ»”’• € € € € €ÀU-pQž”Í‹˜³y³ Ó*�É:Ó¢ñwÄýæ¢EÒëë¯Ýîãµ…R­úHh$6ÑQY¯åÎB…B¾œÝx/©ƒÕ‡‘‡: )[W•ÒAï�é þPaI ¬¾OÛˆ50ÀífÇ nÕ*è!óÖ¬‘FD¸m�ë ôç}4è~‰It¤×áæµê"TX¢²ÎÙH­É ‹&ÊN�RQ‡ÐÛgR0GÉ¡³]ö:$“µjcÒòåbà­Õxrž]·y‰Ž:¾µVoØL˜ìéÓ»óñ@@@@@àÚH’D‡ŸrŸ¶J²æ%õF¶…µ*¤7åm½µZß©“¤LÄ…Ä&:ü×lÙ /jÁ•�èv}�ëf¼ü²ÌÐ9)ïϘá65ÿÛßÄþ‚Å1­¤©ýöÛnˆ|îÌ™]!Ø~‰It;OàºÏŸÞ r·õ–èØqð`à.±žwÒdÌš”±øC¿;«´eÕ½yóÆÚ� € € € € €צ@’':Y‡è/õ;NŸîV­^]Úé<‰ÄÄ.ýå#fnQC[u«Y3äi"W­’>'†Üîß`ó-ºÖ¨!�G�’UÛ¶¹êŽ!­[ûw‰±ü¡ÎùÏ7߸–Q³z÷–TQ õÚvë5æÓYŸh2'ÜØ¶¿4<8¬Ý¯ÓÑÌ^½äÍ/¿”ëÖ¹cìZ­"%Tt1BÖîØá6¦‰‡\™2ÅÚõMµš¥f]»ºjŠX;E­ðÞg¨íþõ_vë&Y£ægÌùñG™­ƒÄWjåÏYH7ëL—Ö:€ü>,N € € € € € Jà’&:lpy±÷ßwó;reÈ [µ%QºT©B]ë¯�SgÎÈn�çràèQ9¡3[rdÌ(Vm’…�â×À§Ï[D@@@@.\à’&:&hÕAý ÜU¿Y©’ô|à� œ@@@@@®Y�Kšè°YuµEé\¹$}êÔ×,`_ (example: ``GAIA/GAIA3.Grp/AB``) - The FPS service returns a full calibration instance, which is then split into a filter object and a calibration object that refers to that filter. - Each one of these components has its own ``dmid`` generated by the API. ``dmid`` can be used to reference them. Example for filter ``GAIA/GAIA3.Grp/AB``: - photometric calibration identifer: ``dmid="_photcal_GAIA_GAIA3_Grvs_AB"`` - filter identifier ``dmid="_filter_GAIA_GAIA3_Grvs_AB"`` - **Coordinate systems**: Can be given either by ``dmid`` or by parameters (see `pyvo.mivot.writer.InstancesFromModels.add_simple_space_frame` and `pyvo.mivot.writer.InstancesFromModels.add_simple_time_frame`). - by ``dmid``: Identifiers are generated by the API when a frame is added in the GLOBALS. (example ``{"dmid": "_spaceframe_spaceRefFrame_equinox_refPosition"}``) - by parameters: The mapping parameters are given as dictionaries as for the mapping (see below) (example ``{"spaceRefFrame": "ICRS", "refPosition": 'BARYCENTER'}``) - ``Mapping``: Mapping of the table data to the property attributes. The fine structure of these dictionaries is specific to each mapped class, but all follow the same pattern. Values specified as strings are considered to be column identifiers, unless the string starts with a '*'. In this case, the stripped string is taken as the literal value. Other value types (numeric or boolean) are all considered as literals. +-------------+---------------------------------+ | **value** | **attribute value** | +=============+=================================+ | "\*M31" | "M31" | +-------------+---------------------------------+ | "ObjName" | value of the column "ObjName" | +-------------+---------------------------------+ | True | True | +-------------+---------------------------------+ | 123456 | 123456 | +-------------+---------------------------------+ | 45.8987 | 45.8987 | +-------------+---------------------------------+ - ``semantics``: Semantic tags (text + vocabulary entry) that apply to the property. +-------------+---------------------------------------------------------+ + **key** | **value** + +=============+=========================================================+ + description + free text description of the property + +-------------+---------------------------------------------------------+ + uri + URI of the vocabulary term to which the property refers + +-------------+---------------------------------------------------------+ + label + vocabulary term to which the property refers + +-------------+---------------------------------------------------------+ All ``semantics`` fields are considered literal values. Add Query origin ---------------- Add the Mango ``QueryOrigin`` instance to the current ``MangoObject``. .. figure:: _images/mangoDataOrigin.png :width: 500 DataOrigin package of Mango. ``QueryOrigin`` is the object grouping together all the components needed to model the origin of the MangoObject. It is always identified with ``dmid="_origin"`` .. code-block:: python builder.add_query_origin(mapping) The detail of the ``mapping`` parameter is given in the `pyvo.mivot.writer.InstancesFromModels.add_query_origin` documentation The ``QueryOrigin`` object can be automatically built from the INFO tags of the VOtable. The success of this operation depends on the way INFO tags are populated. The method below, analyzes the INFO tags and insert the resulting query origin into the annotations. .. code-block:: python builder.extract_data_origin() - This code has been optimized to work with Vizier output. - INFO tags of the VOTable header are analysed to set the ``QueryOrigin`` attributes. - INFO tags of the header of the first resource are analyzed to set the ``DataOrigin`` objects. - The automatic mapping does not work for VOtable joining several tables yet. Add Properties -------------- The main purpose of the ``MangoObject`` is to collect various properties contained in the data row, although synthetic properties (literal value only) can be added as well. - The properties are stored in a container named ``propertyDock``. - During he annotation process, properties are added one by one by specific methods. .. figure:: _images/mangoProperties.png :width: 500 Properties supported by Mango. Add EpochPosition ^^^^^^^^^^^^^^^^^ The ``EpochPosition`` property describes the astrometry of a moving source. .. figure:: _images/mangoEpochPosition.png :width: 500 EpochPosition components of Mango. It handles six parameters (position, proper motion, parallax and radial velocity) valid at a given epoch (``obsDate`` field) with their correlations and errors and the coordinate system for both space and time axis. .. code-block:: python builder.add_epoch_position(frames, mapping, semantics) The detail of the parameters is given with the description of the :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_mango_epoch_position` method. The first parameter (``frames``) specifies both space and time frames. It can either contain the frame dmid-s if they are already installed, for instance from TIMESYS and COOSYS tags, or the mapping elements needed to install them: Both frames can be automatically extracted from the COOSYS and TIMSYS VOTable elements. .. code-block:: python frame_mapping = builder.extract_frames() builder.add_epoch_position(frame_mapping, mapping, semantics) This automatic metedata extraction can be extended to any method parameters. - COOSYS -> coords:SpaceSys - TIMESYS -> coords:TimeSys - FIELD -> mango:EpochPosition .. code-block:: python epoch_position_mapping = builder.extract_epoch_position_parameters() builder.add_mango_epoch_position(**epoch_position_mapping) However, it is advisable to take a look at the automatic mapping, as its content is highly dependent on the VO table metadata, and the risk of incompleteness, mismatches or confusion cannot be ruled out. Add Brightness ^^^^^^^^^^^^^^ The ``Brightness`` binds a flux or a magnitude with an error and a photometric calibration. .. code-block:: python builder.add_mango_brightness(photcal_id, mapping, semantics) The detail of the parameters is given with the :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_mango_brightness` docstring. Add Color ^^^^^^^^^ The ``Color`` binds to a Color index or an hardness ratio value with an error and two photometric filters. .. code-block:: python builder.add_mango_color(filter_ids, mapping, semantics) The detail of the parameters is given with the :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_mango_color` docstring. Reference/API ============= .. automodapi:: pyvo.mivot.writer .. automodapi:: pyvo.mivot.utils .. automodapi:: pyvo.mivot.glossary astropy-pyvo-f0fdda3/docs/mivot/annoter_tips.rst000066400000000000000000000121241521254414300223050ustar00rootroot00000000000000*************************************************** MIVOT (``pyvo.mivot``): How to annotate data - Tips *************************************************** The annotation process is intended to be performed at the server level. How it is implemented depends on the related DAL protocol, the framework used, and the available metadata. This process likely occurs before the data table is streamed out because the Mivot block must precede the TABLE block. This means it cannot use the table FIELDs, but rather some internal representation. However, the examples below use the FIELDs to demonstrate how an annotation task could work. Map a magnitude to a Mango Brightness property ============================================== Assuming that our dataset has the two following fields, let's map the magnitude in the J band to the ``mango:Brightness`` class. .. code-block:: xml ?(jmag) 2MASS J-band magnitude ?(ejmag) Error on Jmag The MANGO brightness class packs together 3 components: the magnitude, its error and the photometric calibration. Mivot serializations of the photometric calibrations are given by the SVO `Filter Profile Service `_. The first thing to do is to get the FPS identifier of the searched filter (2MASS J in our case). Once the filter is selected, the identifier of the calibration in the desired system can by copied from the `FPS `_ page as shown below. .. image:: _images/filterProfileService.png :width: 500 :alt: FPS screen shot. Now, we can build the mapping parameters and apply them to add the mapping of that property. .. code-block:: python votable = parse("SOME/VOTABLE/PATH") builder = InstancesFromModels(votable, dmid="URAT1") # Add the mapping of a brightness property builder.add_mango_brightness( photcal_id="2MASS/2MASS.J/Vega", mapping={"value": "Jmag", "error": { "class": "PErrorSym1D", "sigma": "e_Jmag"} }, semantics={"description": "magnitude J", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#magnitude", "label": "magnitude"}) # Once all all properties have been mapped, we can # tell the builder to complete the mapping block builder.pack_into_votable() The mapping parameters can be interpreted that way: - The photometric calibration match the ``2MASS/2MASS.J/Vega`` FPS output - The magnitude is given by the FIELD identified by ``Jmag`` - The magnitude error, which is symmetrical, is given by the FIELD identified by ``e_Jmag`` - The optional semantics block of the property (see the MANGO specification) indicates that the property is a magnitude. Map table data to a Mango EpochPosition property ================================================ The mapping of any property follow the same schema but with specific mapping parameters. As it turns out, the EpochPosition can be very complex, with six parameters, their errors and their correlations. If the VOTable fields are available during the annotation process, the API can extract a template of the mapping parameters. .. code-block:: python scs_srv = SCSService(" https://vizier.cds.unistra.fr/viz-bin/conesearch/V1.5/I/239/hip_main") query_result = scs_srv.search( pos=SkyCoord(ra=52.26708 * u.degree, dec=59.94027 * u.degree, frame='icrs'), radius=0.5) builder = InstancesFromModels(query_result.votable, dmid="URAT1") # Get a mapping proposal based on the FIELD UCDs parameters = builder.extract_epoch_position_parameters() DictUtils.print_pretty_json(parameters) The JSON below shows the detected mapping parameters as a dictionary whose structure matches that expected by the API. .. code-block:: json { "frames": { "spaceSys": { "dmid": "_spaceframe_ICRS_BARYCENTER" }, "timeSys": {} }, "mapping": { "longitude": "t1_c8", "latitude": "t1_c9", "parallax": "t1_c11", "pmLongitude": "t1_c12", "pmLatitude": "t1_c13", "errors": { "properMotion": { "class": "PErrorSym2D", "sigma1": "e_pmRA", "sigma2": "e_pmDE" } }, "correlations": {} }, "semantics": { "description": "6 parameters position", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#astronomical-location", "label": "Astronomical location" } } This template can be updated manually or by any other means, and then used to adjust the "EpochPosition" mapping. .. code-block:: python # Add the EpochPosition to the annotations with the modified mapping parameters builder.add_mango_epoch_position(**parameters) builder.pack_into_votable() astropy-pyvo-f0fdda3/docs/mivot/example.rst000066400000000000000000000245131521254414300212400ustar00rootroot00000000000000.. _mivot-examples: ************************************************************ MIVOT (``pyvo.mivot``): How to use annotated data - Examples ************************************************************ Photometric Properties Readout ============================== This example is based on VOTables provided by the ``XTapDB`` service. This service exposes the slim `4XMM dr14 catalogue `_. It is able to map query responses on the fly to the MANGO data model. The annotation process only annotates the columns that are selected by the query. The following properties are supported: - ``mango:Brightness`` to which fluxes are mapped - ``mango:Color`` to which hardness ratio are mapped - ``mango:EpochPosition`` to which positions and first observation dates are mapped - ``mango:Status`` to which quality flags of the source detections are mapped A specific response format (``application/x-votable+xml;content=mivot``) must be set in order to tell the server to annotate the queried data. (*Please read the comment inside the code snippet carefully to fully understand the process*) .. doctest-skip:: >>> from pyvo.utils import activate_features >>> from pyvo.dal import TAPService >>> from pyvo.mivot.utils.xml_utils import XmlUtils >>> from pyvo.mivot.viewer.mivot_viewer import MivotViewer >>> >>> # Enable MIVOT-specific features in the pyvo library >>> activate_features("MIVOT") >>> >>> service = TAPService('https://xcatdb.unistra.fr/xtapdb') >>> result = service.run_sync( ... """ ... SELECT TOP 5 * FROM "public".mergedentry ... """, ... format="application/x-votable+xml;content=mivot" ... ) >>> >>> # The MIVOT viewer generates the model view of the data >>> m_viewer = MivotViewer(result, resolve_ref=True) >>> >>> # Print out the Mivot annotations read out of the VOtable >>> # This statement is just for a pedagogic purpose (access to a private attribute) >>> XmlUtils.pretty_print(m_viewer._mapping_block) In this first step we just queried the service and we built the object that will process the Mivot annotations. The Mivot block printing output is too long to be listed here. However, the screenshot below shows its shallow structure. .. image:: _images/xtapdbXML.png :width: 500 :alt: Shallow structure of the annotation block. - The GLOBALS section contains all the coordinate systems (in a wide sense). This includes the allowed values for the detection flags and the photometric calibrations. - The TEMPLATES section contains the objects to which table data is mapped. In this example, there is one ``MangoObject`` instance which holds all the mapped properties. At instantiation time, the viewer reads the first data row, which must exist, in order to construct the Python objects that reflect the mapped models and to make the data available through them. .. doctest-skip:: >>> # Discover the Python objects matching the TEMPLATES content >>> for dm_instance in m_viewer.dm_instances; >>> print(dm_instance) The annotations are consumed by this dynamic Python object which leaves are set with the data of the current row. You can explore the structure of this object by using standard object paths as shown below. Now, we can iterate through the table data and retrieve an updated Mivot instance for each row. .. doctest-skip:: >>> mango_object = m_viewer.dm_instances[0] >>> while m_viewer.next_row_view(): >>> if mango_object.dmtype == "mango:MangoObject": >>> print(f"Read source {mango_object.identifier.value} {mango_object.dmtype}") >>> for mango_property in mango_object.propertyDock: >>> if mango_property.dmtype == "mango:Brightness": >>> if mango_property.value.value: >>> mag_value = mango_property.value.value >>> mag_error = mango_property.error.sigma.value >>> phot_cal = mango_property.photCal >>> spectral_location = phot_cal.photometryFilter.spectralLocation >>> mag_filter = phot_cal.identifier.value >>> spectral_location = phot_cal.photometryFilter.spectralLocation >>> mag_wl = spectral_location.value.value >>> sunit = spectral_location.unitexpression.value >>> print(f" flux at {mag_wl} {sunit} (filter {mag_filter}) is {mag_value:.2e} +/- {mag_error:.2e}") Read source 4XMM J054329.3-682106 mango:MangoObject flux at 0.35 keV (filter XMM/EPIC/EB1) is 8.35e-14 +/- 3.15e-14 flux at 0.75 keV (filter XMM/EPIC/EB2) is 3.26e-15 +/- 5.45e-15 flux at 6.1 keV (filter XMM/EPIC/EB8) is 8.68e-14 +/- 6.64e-14 ... ... The same code can easily be connected with matplotlib to plot SEDs as shown below (code not provided). .. image:: _images/xtapdbSED.png :width: 500 :alt: XMM SED It is to be noted that the current table row keeps available through the Mivot viewer. .. code-block:: python row = m_viewer.table_row .. important:: The code shown in this example can be used with any VOTable that has data mapped to MANGO. It contains no features specific to the XtatDB output. This is exactly the purpose of the MIVOT/MANGO abstraction layer: to allow the same processing to be applied to any annotated VOTable. The same client code can be reused in many places with many datasets, provided they are annotated. EpochPosition Property Readout ============================== This example is based on a VOtable resulting on a Vizier cone search. This service maps the data to the ``EpochPosition`` MANGO property, which models a full source's astrometry at a given date. .. warning:: At the time of writing (Q1 2025), Vizier only mapped positions and proper motions (when available), and the definitive epoch class had not been adopted. Therefore, this implementation may differ a little bit from the standard model. Vizier does not wrap the source properties in a MANGO object, but rather lists them in the Mivot *TEMPLATES*. The annotation reader supports both designs. In the first step below, we run a standard cone search query by using the standard PyVO API. Once the query is finished, we can get a reference to the object that will process the Mivot annotations. .. doctest-skip:: >>> import astropy.units as u >>> from astropy.coordinates import SkyCoord >>> from pyvo.dal.scs import SCSService >>> from pyvo.utils import activate_features >>> from pyvo.mivot.viewer.mivot_viewer import MivotViewer >>> from pyvo.mivot.features.sky_coord_builder import SkyCoordBuilder >>> >>> # Enable MIVOT-specific features in the pyvo library >>> activate_features("MIVOT") >>> >>> scs_srv = SCSService("https://vizier.cds.unistra.fr/viz-bin/conesearch/V1.5/I/239/hip_main") >>> >>> query_result = scs_srv.search( ... pos=SkyCoord(ra=52.26708 * u.degree, dec=59.94027 * u.degree, frame='icrs'), ... radius=0.5) >>> >>> # The MIVOT viewer generates the model view of the data >>> m_viewer = MivotViewer(query_result, resolve_ref=True) We can now discover which data model classes the data is mapped to. .. doctest-skip:: >>> # Get a set of Python objects matching the TEMPLATES content and >>> # which leaves are set with the values of the first row >>> for dm_instance in m_viewer.dm_instances; >>> print(dm_instance) The first instance can be accessed by the ``m_viewer.dm_instance`` getter. This is a simple shorcut aiming at simplifying the code. .. doctest-skip:: >>> dm_instance = m_viewer.dm_instance >>> print(dm_instance.dmtype) mango:EpochPosition We can also provide a complete instance representation that includes all fields in the entire hierarchy. .. doctest-skip:: >>> # Print out the json serialization of the Python object >>> print(repr(dm_instance)) { "dmtype": "mango:EpochPosition", "longitude": { "dmtype": "ivoa:RealQuantity", "value": 51.64272638, "unit": "deg" }, "latitude": { "dmtype": "ivoa:RealQuantity", "value": 60.28156089, "unit": "deg" }, "pmLongitude": { "dmtype": "ivoa:RealQuantity", "value": 13.31, "unit": "mas/yr" }, "pmLatitude": { "dmtype": "ivoa:RealQuantity", "value": -23.43, "unit": "mas/yr" }, "epoch": { "dmtype": "ivoa:RealQuantity", "value": 1991.25, "unit": "yr" }, "parallax": { "dmtype": "ivoa:RealQuantity", "value": 5.12, "unit": "mas" }, "spaceSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "mango:EpochPosition.spaceSys", "frame": { "dmrole": "coords:PhysicalCoordSys.frame", "dmtype": "coords:SpaceFrame", "spaceRefFrame": { "dmtype": "ivoa:string", "value": "ICRS" } } } } The reader can transform ``EpochPosition`` instances into ``SkyCoord`` instances. These can then be used for further scientific processing. .. doctest-skip:: >>> while m_viewer.next_row_view(): >>> mango_property = m_viewer.dm_instance >>> if mango_property.dmtype == "mango:EpochPosition": >>> scb = SkyCoordBuilder(mango_property) >>> # do whatever process with the SkyCoord object >>> print(scb.build_sky_coord()) .. important:: Similar to the previous example, this code can be used with any VOTable with data mapped to MANGO. It contains no features specific to the Vizier output. It avoids the need for users to build SkyCoord objects by hand from VOTable fields, which is never an easy task. Homework ======== Simbad has released (Q3 2025) an annotated version of its Cone Search. It's a good case to exercise this API. .. code-block:: python SERVER = "https://simbad.cds.unistra.fr/cone?" VERB = 2 RA = 269.452076* u.degree DEC = 4.6933649* u.degree SR = 0.1* u.degree MAXREC = 100 RESPONSEFORMAT = "mivot" scs_srv = SCSService(SERVER) query_result = scs_srv.search( pos=SkyCoord(ra=RA, dec=DEC, frame='icrs'), radius=SR, verbosity=VERB, RESPONSEFORMAT=RESPONSEFORMAT, MAXREC=MAXREC) *The next section provides some tips to use the API documented in the* :ref:`annoter page `. astropy-pyvo-f0fdda3/docs/mivot/index.rst000066400000000000000000000054441521254414300207160ustar00rootroot00000000000000********************** MIVOT (``pyvo.mivot``) ********************** This module contains the new feature of handling model annotations in VOTable. Astropy version >= 6.0 is required. Introduction ============ .. pull-quote:: Model Instances in VOTables (MIVOT) defines a syntax to map VOTable data to any model serialized in VO-DML. The annotation operates as a bridge between the data and the model. It associates the column/param metadata from the VOTable to the data model elements (class, attributes, types, etc.) [...]. The data model elements are grouped in an independent annotation block complying with the MIVOT XML syntax. This annotation block is added as an extra resource element at the top of the VOTable result resource. The MIVOT syntax allows to describe a data structure as a hierarchy of classes. It is also able to represent relations and composition between them. It can also build up data model objects by aggregating instances from different tables of the VOTable. - Model Instances in VOTables is a VO `standard `_ - Requires Astropy>=6.0 - ``pyvo.mivot`` is a prototype feature which must be activated with ``activate_features("MIVOT")`` Implementation Scope ==================== This implementation is totally model-agnostic. - It does not operate any validation against specific data models. - It just requires the annotation syntax being compliant with the standards. However, many data samples used for the test suite and provided as examples are based on the ``EpochPropagation`` class of the ``Mango`` data model that is still a draft. This class collects all the parameters we need to compute the epoch propagation of moving sky objects. Some of the examples have been provided by a special end-point of the Vizier cone-search service (https://vizier.cds.unistra.fr/viz-bin/conesearch/V1.5/) that maps query results to this model. .. image:: _images/mangoEpochPosition.png :width: 500 :alt: EpochPropagation class used to validate this api. It is to be noted that the Vizier service does not annotate errors at the time of writing (Q1 2024) The implementation uses the Astropy read/write annotation module (6.0+), which allows to get (and set) Mivot blocks from/into VOTables as an XML element serialized as a string. .. pull-quote:: Not all MIVOT features are supported by this implementation, which mainly focuses on the epoch propagation use case: - ``JOIN`` features are not supported. - ``TEMPLATES`` with more than one ``INSTANCE`` not supported. Using the MIVOT package ======================= The ``pyvo.mivot`` module can be used to either read or build annotations. .. toctree:: :maxdepth: 2 viewer annoter writer example annoter_tips astropy-pyvo-f0fdda3/docs/mivot/viewer.rst000066400000000000000000000226021521254414300211030ustar00rootroot00000000000000****************************************************** MIVOT (``pyvo.mivot``): Annotation Viewer - Public API ****************************************************** Introduction ============ .. pull-quote:: Model Instances in VOTables (MIVOT) defines a syntax to map VOTable data to any model serialized in VO-DML. The annotation operates as a bridge between the data and the model. It associates the column/param metadata from the VOTable to the data model elements (class, attributes, types, etc.) [...]. The data model elements are grouped in an independent annotation block complying with the MIVOT XML syntax. This annotation block is added as an extra resource element at the top of the VOTable result resource. The MIVOT syntax allows to describe a data structure as a hierarchy of classes. It is also able to represent relations and composition between them. It can also build up data model objects by aggregating instances from different tables of the VOTable (get more in :doc:`index`). Using the API ============= .. attention:: The module based on XPath queries and allowing to browse the XML annotations (``viewer.XmlViewer``) has been removed from version 1.8 Integrated Readout ------------------ The ``ModelViewer`` module manages access to data mapped to a model through dynamically generated objects (``MivotInstance`` class). ``MivotInstance`` is a generic class that does not refer to any specific model. The mapped class of a particular instance is stored in its ``dmtype`` attribute. These objects can be used as standard Python objects, with their fields representing elements of the model instances. The first step is to instanciate a viewer that will provide the API for browsing annotations. The viewer can be built from a VOTable file path, a parsed VOtable (``VOTableFile`` object), or a ``DALResults`` instance. .. attention:: The code below only works with ``astropy 6+`` .. doctest-skip:: >>> import astropy.units as u >>> from astropy.io.votable import parse >>> from astropy.coordinates import SkyCoord >>> from pyvo.dal.scs import SCSService >>> from pyvo.utils.prototype import activate_features >>> from pyvo.mivot.viewer.mivot_viewer import MivotViewer >>> >>> scs_srv = SCSService("https://vizier.cds.unistra.fr/viz-bin/conesearch/V1.5/I/311/hip2") >>> m_viewer = MivotViewer( ... scs_srv.search( ... pos=SkyCoord(ra=52.26708 * u.degree, dec=59.94027 * u.degree, ... frame='icrs'), ... radius=0.1 ... ), ... resolve_ref=True ... ) In this example, the query result is mapped to the ``mango:EpochPosition`` class, but users do not need to know this in advance, since the API provides tools to discover the mapped models. .. doctest-skip:: >>> if m_viewer.get_models().get("mango"): >>> print("data is mapped to the MANGO data model") data is mapped to the MANGO data model We can also check which datamodel classes the data is mapped to. .. doctest-skip:: >>> mivot_instances = m_viewer.dm_instances >>> print(f"data is mapped to {len(mivot_instances)} model class(es)") data is mapped to 1 model class(es) .. doctest-skip:: >>> mivot_instance = m_viewer.dm_instances[0] >>> print(f"data is mapped to the {mivot_instance.dmtype} class") data is mapped to the mango:EpochPosition class At this point, we know that the data has been mapped to the ``MANGO`` model, and that the data rows can be interpreted as instances of the ``mango:EpochPosition``. .. doctest-skip:: >>> print(mivot_instance.spaceSys.frame.spaceRefFrame.value) FK5 .. doctest-skip:: >>> while m_viewer.next_row_view(): >>> print(f"position: {mivot_instance.latitude.value} {mivot_instance.longitude.value}") position: 59.90665631 52.12106214 position: 59.94033468 52.26722736 .... .. important:: Coordinate systems are usually mapped in the GLOBALS MIVOT block. This allows them to be referenced from any other MIVOT element. The viewer resolves such references when the constructor flag ``resolve_ref`` is set to ``True``. In this case the coordinate system instances are copied into their host elements. The code below shows how to access GLOBALS instances (one in this example) independently of the mapped data. .. doctest-skip:: >>> for globals_instance in m_viewer.dm_globals_instances: >>> print(globals_instance) We can also provide a complete instance representation that includes all fields in the entire hierarchy. .. doctest-skip:: >>> print(repr(globals_instance)) { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "frame": { "dmrole": "coords:PhysicalCoordSys.frame", "dmtype": "coords:SpaceFrame", "spaceRefFrame": { "dmtype": "ivoa:string", "value": "FK5" }, "equinox": { "dmtype": "coords:Epoch", "value": "J2000" } } } As you can see from the previous examples, model leaves (class attributes) are complex types. This is because they contain additional metadata as well as values: - ``value`` : attribute value - ``dmtype`` : attribute type such as defined in the Mivot annotations - ``unit`` (if any) : attribute unit such as defined in the Mivot annotations Per-Row Readout --------------- This annotation schema can also be applied to table rows read using the `astropy.io.votable` API outside of the ``MivotViewer`` context. .. doctest-skip:: >>> votable = parse(path_to_votable) >>> table = votable.resources[0].tables[0] >>> # init the viewer on the first resource of the votable (default) >>> mivot_viewer = MivotViewer(votable) >>> mivot_object = mivot_viewer.dm_instance >>> # and feed it with the numpy table row >>> for rec in table.array: >>> # apply the mapping to current row >>> mivot_object.update(rec) >>> # show that the model retrieve the correct values >>> # ... or do whatever you want >>> assert rec["RAICRS"] == mivot_object.longitude.value >>> assert rec["DEICRS"] == mivot_object.latitude.value Mivot/Mango as a Direct Gateway from Data to Astropy SkyCoord ------------------------------------------------------------- A simple way to get the most out of annotations is to use them to directly create Astropy objects, without having to parse the metadata, whether it comes from the annotation or the VOTable. .. doctest-skip:: >>> from pyvo.mivot.features.sky_coord_builder import SkyCoordBuilder >>> >>> m_viewer.rewind() >>> while m_viewer.next_row_view(): >>> sky_coord_builder = SkyCoordBuilder(mivot_instance) >>> sky_coord = sky_coord_builder.build_sky_coord() >>> print(sky_coord) In the above example, we assume that the mapped model can be used as a ``SkyCoord`` precursor. If this is not the case, an error is raised. .. important:: In the current implementation, the only functioning gateway connects ``Mango:EpochPosition`` objects with the ``SkyCoord`` class. The ultimate objective is to generalize this mechanism to any property modeled by Mango, and eventually to other IVOA models, thereby realizing the full potential of a comprehensive and interoperable mapping framework. Class Generation in a Nutshell ------------------------------ MIVOT reconstructs model structures with 3 elements: - ``INSTANCE`` for the objects - ``ATTRIBUTE`` for the attributes - ``COLLECTION`` for the elements with a cardinality greater than 1 The role played by each of these elements in the model hierarchy is defined by its ``@dmrole`` XML attribute. Types of both ``INSTANCE`` and ``ATTRIBUTE`` are defined by their ``@dmtype`` XML attributes. ``MivotInstance`` classes are built by following MIVOT annotation structure: - ``INSTANCE`` are represented by Python classes - ``ATTRIBUTE`` are represented by Python class fields - ``COLLECTION`` are represented by Python lists ([]) ``@dmrole`` and ``@dmtype`` cannot be used as Python keywords as such, because they are built from VO-DML identifiers, which have the following structure: ``model:a.b``. - Only the last part of the path is kept for attribute names. - For class names, forbidden characters (``:`` or ``.``) are replaced with ``_``. - Original ``@dmtype`` are kept as attributes of generated Python objects. - If the end-user is unaware of the class mapped by the actual ``MivotInstance``, if can can explore it by using its class dictionary ``MivotInstance.__dict__`` (see the Python `data model `_). .. doctest-skip:: >>> mivot_instance = mivot_viewer.dm_instance >>> print(mivot_instance.__dict__.keys()) dict_keys(['dmtype', 'longitude', 'latitude', 'pmLongitude', 'pmLatitude', 'epoch', 'Coordinate_coordSys']) .. doctest-skip:: >>> print(mivot_instance.Coordinate_coordSys.__dict__.keys()) dict_keys(['dmtype', 'dmid', 'dmrole', 'spaceRefFrame']) .. doctest-skip:: >>> print(mivot_instance.Coordinate_coordSys.spaceRefFrame.__dict__.keys()) dict_keys(['dmtype', 'value', 'unit', 'ref']) *More examples can be found* :ref:`here `. Reference/API ============= .. automodapi:: pyvo.mivot.viewer astropy-pyvo-f0fdda3/docs/mivot/writer.rst000066400000000000000000000211311521254414300211120ustar00rootroot00000000000000*************************************************** MIVOT (``pyvo.mivot``): Annotation Writer - Dev API *************************************************** Introduction ============ .. pull-quote:: Model Instances in VOTables (MIVOT) defines a syntax to map VOTable data to any model serialized in VO-DML. The annotation operates as a bridge between the data and the model. It associates the column/param metadata from the VOTable to the data model elements (class, attributes, types, etc.) [...]. The data model elements are grouped in an independent annotation block complying with the MIVOT XML syntax. This annotation block is added as an extra resource element at the top of the VOTable result resource. The MIVOT syntax allows to describe a data structure as a hierarchy of classes. It is also able to represent relations and composition between them. It can also build up data model objects by aggregating instances from different tables of the VOTable (get more in :doc:`index`). - Model Instances in VOTables is a VO `standard `_ - Requires Astropy>=6.0 - ``pyvo.mivot`` is a prototype feature which must be activated with ``activate_features("MIVOT")`` Use the API =========== Build Annotation Object per Object ---------------------------------- This documentation is intended for developers of data model classes who want to map them to VOTables and not for end users. A future version will allow end users to create annotations with ready-to-use data model building blocks. Creating annotations consists of 3 steps: #. Create individual instances (INSTANCE) using the ``MivotInstance`` class: objects are built attribute by attribute. These components can then be aggregated into more complex objects following the structure of the mapped model(s). #. Wrap the annotations with the ``MivotAnnotations`` class: declare to the annotation builder the models used, and place individual instances at the right place (TEMPLATES or GLOBALS). #. Insert the annotations into a VOtable by using the Astropy API (wrapped in the package logic). The annotation builder does not check whether the XML conforms to any particular model. It simply validates it against the MIVOT XML Schema if the ``xmlvalidator`` package if is installed. The example below shows a step-by-step construction of a MIVOT block mapping a position with its error (as defined in the ``MANGO`` draft) and its space coordinate system (as defined in the ``Coordinates`` model and imported by ``MANGO``). Build the empty MIVOT Block ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - The MIVOT block consists of: - A process status - A list of mapped models - A list of globals, which are objects not associated with VOTable data and that can be shared by any other MIVOT instance. - A list of templates, which are objects that are connected to VOTable data and whose leaf values change from one row to another. - ``MIVOT`` is still an experimental feature which must be activated .. code-block:: python from astropy.io.votable import parse from pyvo.utils import activate_features from pyvo.mivot.utils.exceptions import MappingException from pyvo.mivot.utils.dict_utils import DictUtils from pyvo.mivot.writer.annotations import MivotAnnotations from pyvo.mivot.writer.instance import MivotInstance from pyvo.mivot.viewer.mivot_viewer import MivotViewer activate_features("MIVOT") mivot_annotations = MivotAnnotations() mivot_annotations.add_model( "ivoa", "https://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml" ) mivot_annotations.add_model( "coords", "https://www.ivoa.net/xml/STC/20200908/Coords-v1.0.vo-dml.xml" ) mivot_annotations.add_model( "mango", "https://raw.githubusercontent.com/lmichel/MANGO/draft-0.1/vo-dml/mango.vo-dml.xml", ) mivot_annotations.set_report(True, "PyVO Tuto") Build the Coordinate System Object ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The space coordinate system is made of a space frame and a reference position, both wrapped in a ``coords:SpaceSys`` object (see the `Coordinates `_ data model). The time coordinate system is made of a time frame and a reference position, both wrapped in a ``coords:TimeSys`` object. - Each of these objects have a ``dmid`` which will be used as a reference by the ``EpochPosition`` instance. .. code-block:: python mivot_annotations.add_simple_space_frame(ref_frame="FK5", ref_position="BARYCENTER", equinox="J2000", dmid="_spacesys" ) mivot_annotations.add_simple_time_frame(ref_frame="TCB", ref_position="BARYCENTER", dmid="_timesys" ) Build the EpochPosition Object ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - In this example we only use the position attributes (RA/DEC) of the ``EpochPosition`` class. - The reference to the space coordinate system is added at the end. - The ``ref`` XML attributes reference columns that must be used to set the model attributes. Their values depend on the VOTable to be mapped. .. code-block:: python from astropy.io.votable import parse from pyvo.utils import activate_features from pyvo.mivot.utils.exceptions import MappingException from pyvo.mivot.utils.dict_utils import DictUtils from pyvo.mivot.writer.annotations import MivotAnnotations from pyvo.mivot.writer.instance import MivotInstance from pyvo.mivot.viewer.mivot_viewer import MivotViewer activate_features("MIVOT") position = MivotInstance(dmtype="mango:EpochPosition") position.add_attribute( dmtype="ivoa:RealQuantity", dmrole="mango:EpochPosition.longitude", unit="deg", ref="RAICRS", ) position.add_attribute( dmtype="ivoa:RealQuantity", dmrole="mango:EpochPosition.latitude", unit="deg", ref="DEICRS", ) position.add_reference( dmref="_spacesys", dmrole="mango:EpochPosition.spaceSys" ) Build the Position Error ^^^^^^^^^^^^^^^^^^^^^^^^ - We assume that the position error is the same on both axes without correlation. In terms of MANGO error, this corresponds to a 2x2 diagonal error matrix with two equal coefficients. - Finally, the error is added as a component of the ``EpochPosition`` instance. .. code-block:: python epoch_position_error = MivotInstance( dmtype="mango:EpochPositionErrors", dmrole="mango:EpochPosition.errors" ) position_error = MivotInstance( dmtype="mango:error.ErrorCorrMatrix", dmrole="mango:EpochPositionErrors.position", ) position_error.add_attribute( dmtype="ivoa:RealQuantity", dmrole="mango:error.ErrorCorrMatrix.sigma1", unit="arcsec", ref="sigm", ) position_error.add_attribute( dmtype="ivoa:RealQuantity", dmrole="mango:error.ErrorCorrMatrix.sigma2", unit="arcsec", ref="sigm", ) epoch_position_error.add_instance(position_error) position.add_instance(epoch_position_error) Pack the MIVOT Block ^^^^^^^^^^^^^^^^^^^^ - Pack the model instances previously built. - The latest step (build_mivot_block) includes a validation of the MIVOT syntax that works only if the ``xmlvalidator`` package has been installed. .. code-block:: python mivot_annotations.add_templates(position) mivot_annotations.build_mivot_block() Insert the MIVOT Block in a VOTable ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - This straightforward step is based on the Astropy VOTable API. - Annotations are stored in-memory (in the parsed VOtable). - The mapping can be tested with the ``MivotViewer`` API (see the :doc:`viewer`) - The VOtable must be explicitly saved on disk if needed. .. code-block:: python from astropy.io.votable import parse votable = parse(votable_path) mivot_annotations.insert_into_votable(votable) mivot_viewer = MivotViewer(votable) mapped_instance = mivot_viewer.dm_instance votable.to_xml("pyvo-tuto.xml") Validate the annotations against the models ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - This action requires the ``mivot-validatorXXX`` package to be installed. - It validates the mapped classes against the models they come from. .. code-block:: shell % pip install mivot-validator % mivot-instance-validate pyvo-tuto.xml ... Valid if no error message ... astropy-pyvo-f0fdda3/docs/nitpick-exceptions000066400000000000000000000011371521254414300214550ustar00rootroot00000000000000# Deprecated API py:class pyvo.dal.vosi.AvailabilityMixin # Non-public API classes. We should probably remove references to them altogether py:obj pyvo.io.uws.tree.Jobs py:class pyvo.dal.vosi.CapabilityMixin py:class pyvo.dal.vosi.EndpointMixin py:class pyvo.dal.adhoc.AxisParamMixin py:class pyvo.dam.obscore.ObsCoreMetadata py:obj pyvo.registry.regtap.Interface # There is no public API docs for this, yet it's useful to leave the reference in py:obj pyvo.io.vosi.exceptions py:class pyvo.dal.exceptions.PyvoUserWarning # other classes and functions that cannot be linked to py:class xmlrpc.client.Errorastropy-pyvo-f0fdda3/docs/registry/000077500000000000000000000000001521254414300175605ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/registry/index.rst000066400000000000000000000661701521254414300214330ustar00rootroot00000000000000.. _pyvo-registry: ************************** Registry (`pyvo.registry`) ************************** This is an interface to the Virtual Observatory Registry, a collection of metadata records of the VO's “resourcesâ€� (“resourceâ€� is jargon for: a collection of datasets, usually with a service in front of it). For a wider background, see `2014A&C.....7..101D`_ for the general architecture and `2015A&C....10...88D`_ for the search interfaces. .. _2014A&C.....7..101D: https://ui.adsabs.harvard.edu/abs/2014A%26C.....7..101D/abstract .. _2015A&C....10...88D: https://ui.adsabs.harvard.edu/abs/2015A%26C....10...88D/abstract There are two fundamental modes of searching in the VO: (a) Data discovery: This is when you are looking for some sort of data collection based on its metadata; a classical example would be something like “I need redshifts of supernovaeâ€�. (b) Service discovery: This is what you need when you want to query all services of a certain kind (e.g., „all spectral services claiming to have infrared data“), which in turn is the basis of all-VO *dataset* discovery (“give me all infrared spectra of 3C273â€�) Both modes are supported by this module. .. _registry-basic-interface: Basic interface =============== The main interface for the module is :py:meth:`pyvo.registry.search`; the examples below assume: .. doctest:: >>> from pyvo import registry This function accepts one or more search constraints, which can be either specified using constraint objects as positional arguments or as keyword arguments. The following constraints are available: * :py:class:`~pyvo.registry.Freetext` (``keywords``): one or more freetext words, mached in the title, description or subject of the resource. * :py:class:`~pyvo.registry.Servicetype` (``servicetype``): constrain to one of tap, ssa, sia1, sia2, conesearch (or full ivoids for other service types). This is the constraint you want to use for service discovery. * :py:class:`~pyvo.registry.UCD` (``ucd``): constrain by one or more UCD patterns; resources match when they serve columns having a matching UCD (e.g., ``phot.mag;em.ir.%`` for “any infrared magnitudeâ€�). * :py:class:`~pyvo.registry.UAT` (``uat``): constrain by concepts from the IVOA Unified Astronomy Thesaurus http://www.ivoa.net/rdf/uat. * :py:class:`~pyvo.registry.Waveband` (``waveband``): one or more terms from the vocabulary at http://www.ivoa.net/rdf/messenger giving the rough spectral location of the resource. * :py:class:`~pyvo.registry.Author` (``author``): an author (“creatorâ€�). This is a single SQL pattern, and given the sloppy practices in the VO for how to write author names, you should probably generously use wildcards. * :py:class:`~pyvo.registry.Datamodel` (``datamodel``): one of obscore, epntap, or regtap: only return TAP services having tables of this kind. * :py:class:`~pyvo.registry.Ivoid` (``ivoid``): exactly match a single IVOA identifier (that is, in effect, the primary key in the VO). * :py:class:`~pyvo.registry.Spatial` (``spatial``): match resources covering, enclosed or overlapping a certain geometry (point, circle, polygon, or MOC). *RegTAP 1.2 Extension* * :py:class:`~pyvo.registry.Spectral` (``spectral``): match resources covering a certain part of the spectrum (usually, but not limited to, the electromagnetic spectrum). *RegTAP 1.2 Extension* * :py:class:`~pyvo.registry.Temporal` (``temporal``): match resources covering a some point or interval in time. *RegTAP 1.2 Extension* Multiple constraints are combined conjunctively (â€�ANDâ€�). Constraints marked with *RegTAP 1.2 Extension* are not available on all IVOA RegTAP services (they are on pyVO's default RegTAP endpoint, though). Also refer to the class documentation for further caveats on these. Hence, to look for for resources with UV data mentioning white dwarfs you could either run: .. doctest-remote-data:: >>> resources = registry.search(keywords="white dwarf", waveband="UV") or: .. doctest-remote-data:: >>> resources = registry.search(registry.Freetext("white dwarf"), ... registry.Waveband("UV")) or a mixture between the two. Constructing using explicit constraints is generally preferable with more complex queries. An advantage of using explicit constraints is that you can pass additional parameters to the constraints. For instance, the UAT constraint can optionally expand your keyword to narrower or wider concepts. When looking for resources talking about Cepheids of all kinds, you can thus say: .. doctest-remote-data:: >>> resources = registry.search( ... registry.UAT("cepheid-variable-stars", expand_down=3)) There is no way to express this using keyword arguments. However, where the constraints accept multiple equivalent arguments, you can pass in sequences to the keyword arguments; for instance: .. doctest-remote-data:: >>> resources = registry.search(registry.Waveband("Radio", "Millimeter"), ... registry.Author("%Miller%")) is equivalent to: .. doctest-remote-data:: >>> resources = registry.search(waveband=["Radio", "Millimeter"], ... author='%Miller%') There is also :py:meth:`~pyvo.registry.get_RegTAP_query`, accepting the same arguments as :py:meth:`pyvo.registry.search`. This function simply returns the ADQL query that search would execute. This is may be useful to construct custom RegTAP queries, which could then be executed on TAP services implementing the ``regtap`` data model. Data Discovery ============== In data discovery, you look for resources matching your constraints and then figure out in a second step how to query them. For instance, to look for resources giving redshifts in connection with supernovae, you would say: .. doctest-remote-data:: >>> resources = registry.search(registry.UCD("src.redshift"), ... registry.Freetext("AGB")) After that, ``resources`` is an instance of :py:class:`~pyvo.registry.RegistryResults`, which you can iterate over. In interactive data discovery, however, it is usually preferable to use the ``to_table`` method for an overview of the resources available: .. doctest-remote-data:: >>> resources.to_table() # doctest: +IGNORE_OUTPUT ivoid ... ... object ... --------------------------------- ... ivo://cds.vizier/j/a+a/392/1 ... ivo://cds.vizier/j/a+a/566/a95 ... ivo://cds.vizier/j/aj/151/146 ... ivo://cds.vizier/j/apj/727/14 ... ... And to look for tap resources *in* a specific cone, you would do .. doctest-remote-data:: >>> from astropy.coordinates import SkyCoord >>> registry.search(registry.Freetext("Wolf-Rayet"), ... registry.Spatial((SkyCoord("23d +3d"), 3), intersect="enclosed")) # doctest: +IGNORE_OUTPUT ivoid ... ... object ... ----------------------------------- ... ivo://cds.vizier/j/a+a/688/a104 ... ivo://cds.vizier/j/apj/938/73 ... ivo://cds.vizier/j/other/pasa/41.84 ... Astropy Quantities are also supported for the radius angle of a SkyCoord-defined circular region: .. doctest-remote-data:: >>> from astropy import units as u >>> registry.search(registry.Freetext("Wolf-Rayet"), ... registry.Spatial((SkyCoord("23d +3d"), 180*u.Unit('arcmin')), intersect="enclosed")) # doctest: +IGNORE_OUTPUT ivoid ... ... object ... ----------------------------------- ... ivo://cds.vizier/j/a+a/688/a104 ... ivo://cds.vizier/j/apj/938/73 ... ivo://cds.vizier/j/other/pasa/41.84 ... Where ``intersect`` can take the following values: * 'covers' is the default and returns resources that cover the geometry provided, * 'enclosed' is for services in the given region, * 'overlaps' returns services intersecting with the region. The idea is that in notebook-like interfaces you can pick resources by title, description, and perhaps the access mode (“interfaceâ€�) offered. In the list of interfaces, you will sometimes spot an ``#aux`` after a standard id; this is a minor VO technicality that you can in practice ignore. For instance, you can simply construct :py:class:`~pyvo.dal.TAPService`-s from ``tap#aux`` interfaces. Once you have found a resource you would like to query, you can pick it by index; however, this will not be stable across multiple executions. Hence, RegistryResults also supports referencing results by short name, which is the style we recommend. Using full ivoids is possible, too, and safer because these are guaranteed to be unique (which short names are not), but it is rather clunky, and in the real VO short name collisions should be very rare. Use the ``get_service`` method of :py:class:`~pyvo.registry.RegistryResource` to obtain a DAL service object for a particular sort of interface. To query the fourth match using simple cone search, you would thus say: .. doctest-remote-data:: >>> voresource = resources["J/ApJ/727/14"] >>> voresource.get_service(service_type="conesearch").search(pos=(257.41, 64.345), sr=0.01) _r recno f_ID ID RAJ2000 ... SED DR7 Sloan Simbad deg ... float64 int32 str1 str18 float64 ... str3 str3 str5 str6 -------- ----- ---- ------------------ --------- ... ---- ---- ----- ------ 0.000618 1 P 170938.52+642044.1 257.41049 ... SED DR7 Sloan Simbad This method will raise an error if there is more than one service of the desired type. If you know for sure that all declared conesearch will be the same, you can safely use ``get_service(service_type='conesearch', lax=True)`` that will return the first conesearch it finds. However some providers provide multiple services of the same type -- for example in VizieR you'll find one conesearch per table. In this case, you can inspect the available `~pyvo.registry.regtap.Interface` to services with `~pyvo.registry.RegistryResource.list_interfaces`. Then, you can refine your instructions to `~pyvo.registry.RegistryResource.get_service` with a keyword constraint on the description ``get_service(service_type='conesearch', keyword='sncat')``. .. doctest-remote-data:: >>> for interface in voresource.list_interfaces(): ... print(interface) Interface(type='tap#aux', description='', url='https://tapvizier.cds.unistra.fr/TAPVizieR/tap') Interface(type='vr:webbrowser', description='', url='https://vizier.cds.unistra.fr/viz-bin/VizieR-2?-source=J/ApJ/727/14') Interface(type='conesearch', description='Cone search capability for table J/ApJ/727/14/table2 (AKARI IRC 3-24{mu}m, and Spitzer MIPS 24/70{mu}m photometry of Abell 2255 member galaxies)', url='https://vizier.cds.unistra.fr/viz-bin/conesearch/J/ApJ/727/14/table2?') Or construct the service object directly from the list of interfaces with: .. doctest-remote-data:: >>> voresource.list_interfaces()[0].to_service() TAPService(baseurl : 'https://tapvizier.cds.unistra.fr/TAPVizieR/tap', description : '') The list of interfaces can also be filtered to interfaces corresponding to services of a specific service type: .. doctest-remote-data:: >>> voresource.list_interfaces("tap") [Interface(type='tap#aux', description='', url='https://tapvizier.cds.unistra.fr/TAPVizieR/tap')] To operate TAP services, you need to know what tables make up a resource; you could construct a TAP service and access its ``tables`` attribute, but you can take a shortcut and call a RegistryResource's ``get_tables`` method for a rather similar result: .. doctest-remote-data:: >>> tables = resources["J/ApJ/727/14"].get_tables() # doctest: +IGNORE_WARNINGS >>> list(tables.keys()) ['J/ApJ/727/14/table2'] >>> sorted(c.name for c in tables["J/ApJ/727/14/table2"].columns) ['[24]', '[70]', 'dej2000', 'dr7', 'e_[24]', 'e_[70]', 'e_l15', 'e_l24', 'e_n3', 'e_n4', 'e_s11', 'e_s7', 'f_id', 'gmag', 'id', 'imag', 'l15', 'l24', 'n3', 'n4', 'raj2000', 'recno', 'rmag', 's11', 's7', 'sed', 'simbad', 'sloan', 'umag', 'y03', 'z', 'zmag'] In this case, this is a table with one of VizieR's somewhat funky names. To run a TAP query based on this metadata, do something like: .. doctest-remote-data:: >>> resources["J/ApJ/727/14"].get_service(service_type="tap#aux").run_sync( ... 'SELECT id, z FROM "J/ApJ/727/14/table2" WHERE z>0.09 and umag<18') ID z object float64 ------------------ ------- 171319.90+635428.0 0.09043 A special sort of access mode is ``web``, which represents some facility related to the resource that works in a web browser. You can ask for a “serviceâ€� for it, too; you will then receive an object that has a ``search`` method, and when you call it, a browser window should open with the query facility (this uses python's ``webbrowser`` module): .. doctest-skip:: >>> resources["J/ApJ/727/14"].get_service(service_type="web").search() # doctest: +IGNORE_OUTPUT Note that for interactive data discovery in the VO Registry, you may also want to have a look at Aladin's discovery tree, TOPCAT's VO menu, or at services like WIRR_ in your web browser. .. _WIRR: https://dc.g-vo.org/WIRR Service Discovery ================= Service discovery is what you want typically in connection with a search for datasets, as in “Give me all infrared spectra of Bellatrix“. To do that, you want to run the same DAL query against all the services of a given sort. This means that you will have to include a ``servicetype`` constraint such that all resources in your registry results can be queried in the same way. When that is the case, you can use each RegistryResource's ``service`` attribute, which contains a DAL service instance. The opening example could be written like this: .. This one is too expensive to run as part of CI/testing .. doctest-skip:: >>> from astropy.coordinates import SkyCoord >>> my_obj = SkyCoord.from_name("Bellatrix") >>> for res in registry.search(waveband="infrared", servicetype="ssap"): ... print(res.service.search(pos=my_obj, size=0.001)) ... In reality, you will have to add some error handling to this kind of all-VO queries: in a wide and distributed network, some service is always down. See `Appendix: Robust All-VO Queries`_. The central point is: With a ``servicetype`` constraint, each result has a well-defined ``service`` attribute that contains some subclass of dal.Service and that can be queried in a uniform fashion. TAP services may provide tables in well-defined data models, like EPN-TAP or obscore. These can be queried in similar loops, although in some cases you will have to adapt the queries to the resources found. In the obscore case, an all-VO query would look like this: .. Again, that's too expensive for CI/testing .. doctest-skip:: >>> for svc_rec in registry.search(datamodel="obscore"): ... print(svc_rec.service.run_sync( ... "SELECT DISTINCT dataproduct_type FROM ivoa.obscore")) Again, in production this needs explicit handling of failing services. For an example of how this might look like, see `GAVO's plate tutorial`_ .. _GAVO's plate tutorial: http://docs.g-vo.org/gavo_plates.pdf More examples ------------- Discover archives ^^^^^^^^^^^^^^^^^ You can use the registry ``search`` method (or the ``regsearch`` function) to discover archives that may have x-ray images and then query those archives to find what x-ray images that have of CasA. For the arguments you will enter ``'image'`` for the service type and ``'x-ray'`` for the waveband. The position is provided by the Astropy library. The query returns a :py:class:`~pyvo.registry.RegistryResults` object which is a container holding a table of matching services. In this example it returns 33 matching services. .. doctest-remote-data:: >>> import pyvo as vo >>> from astropy.coordinates import SkyCoord >>> >>> import warnings >>> warnings.filterwarnings('ignore', module="astropy.io.votable.*") >>> >>> archives = vo.regsearch(servicetype='sia1', waveband='x-ray') >>> pos = SkyCoord.from_name('Cas A') >>> len(archives) # doctest: +IGNORE_OUTPUT 33 There are also other type of services that you can choose via the ``servicetype`` parameter, for more details see :py:class:`~pyvo.registry.Servicetype`. You can learn more about the archives by printing their titles and access URL: .. doctest-remote-data:: >>> for service in archives: ... print(service.res_title, service.access_url) # doctest: +IGNORE_OUTPUT Chandra X-ray Observatory Data Archive https://cda.harvard.edu/cxcsiap/queryImages? Chandra Source Catalog Release 1 http://cda.cfa.harvard.edu/csc1siap/queryImages? ... It is not necessary to keep track of the URL because you can search images directly from the registry record, for example using the Chandra X-ray Observatory (CDA) service and the ``search`` method, inserting the position and size for the desired object. .. doctest-remote-data:: >>> images = archives["CDA"].search(pos=pos, size=0.25) >>> len(images) # doctest: +IGNORE_OUTPUT 822 Sometimes you are looking for a type of object. For this purpose, the ``keywords`` parameter is useful here. For example, you want to find all catalogs related to blazars observed with Fermi: .. doctest-remote-data:: >>> cats = vo.regsearch(keywords=['blazar', 'Fermi']) >>> len(cats) # doctest: +IGNORE_OUTPUT 551 Or you already know the particular catalog but not the base URL for that service. For example, you want to get cutout images from the NRAO VLA Sky Survey (NVSS): .. doctest-remote-data:: >>> colls = vo.regsearch(keywords=['NVSS'], servicetype='sia1') >>> for coll in colls: ... print(coll.res_title, coll.access_url) NRA) VLA Sky Survey https://skyview.gsfc.nasa.gov/cgi-bin/vo/sia.pl?survey=nvss& Sydney University Molonglo Sky Survey https://skyview.gsfc.nasa.gov/cgi-bin/vo/sia.pl?survey=sumss& Search results ============== What is coming back from registry.search is :py:class:`pyvo.registry.RegistryResults` which is rather similar to :ref:`pyvo-resultsets`; just remember that for interactive use there is the ``to_tables`` method discussed above. The individual items are instances of :py:class:`~pyvo.registry.RegistryResource`, which expose many pieces of metadata (e.g., title, description, creators, etc) in attributes named like their RegTAP counterparts (see the class documentation). Some attributes deserve a second look. .. doctest-remote-data:: >>> import pyvo as vo >>> colls = vo.regsearch(keywords=["NVSS"], servicetype='sia1') >>> nvss = colls["NVSS"] >>> nvss.res_title 'NRA) VLA Sky Survey' If you are looking for a particular data collection or catalog, as we did above when we looked for the NVSS archive, often simply reviewing the titles is sufficient. Other times, particularly when you are not sure what you are looking for, it helps to look deeper. A selection of the resource metadata, including the title, shortname and description, can be printed out in a summary form with the ``describe`` function. .. doctest-remote-data:: >>> nvss.describe(verbose=True) NRA) VLA Sky Survey Short Name: NVSS IVOA Identifier: ivo://nasa.heasarc/skyview/nvss Access modes: sia - sia: https://skyview.gsfc.nasa.gov/cgi-bin/vo/sia.pl?survey=nvss& ... The verbose option in ``describe`` will output more information about the content of the resource, if available. Possible added entries are the authors of the resource, an associated DOI, an url where more information is provided, or a reference to a related paper. The method ``service`` will, for resources that only have a single capability, return a DAL service object ready for querying using the respective protocol. You should only use that attribute when the original registry query constrained the service type, because otherwise there is no telling what kind of service you will get back. .. doctest-remote-data:: >>> nvss = colls["NVSS"].service # converts record to service object >>> nvss.search(pos=(350.85, 58.815),size=0.25,format="image/fits") Survey Ra ... LogicalName object float64 ... object ------ ------- ... ----------- nvss 350.85 ... 1 With this service object, we can either call its ``search`` function directly or create query objects to get cutouts for a whole list of sources. .. doctest-remote-data:: >>> cutouts1 = nvss.search(pos=(148.8888, 69.065), size=0.2) >>> nvssq = nvss.create_query(size=0.2) # or create a query object >>> nvssq.pos = (350.85, 58.815) >>> cutouts2 = nvssq.execute() Our discussion of service metadata offers an opportunity to highlight another important property, the service's *IVOA Identifier* (sometimes referred to as its *ivoid*). This is a globally-unique identifier that takes the form of a `URI `_: .. doctest-remote-data:: >>> colls = vo.regsearch(keywords=["NVSS"], servicetype='sia1') >>> for coll in colls: ... print(coll.ivoid) ivo://nasa.heasarc/skyview/nvss ivo://nasa.heasarc/skyview/sumss This identifier can be used to retrieve a specific service from the registry. .. doctest-remote-data:: >>> nvss = vo.registry.search(ivoid='ivo://nasa.heasarc/skyview/nvss')[0].get_service(service_type='sia1') >>> nvss.search(pos=(350.85, 58.815),size=0.25,format="image/fits") Survey Ra ... LogicalName object float64 ... object ------ ------- ... ----------- nvss 350.85 ... 1 When the registry query did not constrain the service type, you can use the ``access_modes`` method to see what capabilities are available. For instance with this identifier: .. doctest-remote-data:: >>> res = registry.search(ivoid="ivo://org.gavo.dc/flashheros/q/ssa")[0] >>> res.access_modes() # doctest: +IGNORE_OUTPUT {'ssa', 'datalink#links-1.0', 'tap#aux', 'web', 'soda#sync-1.0'} – this service can be accessed through SSA, TAP, a web interface, and two special capabilities that pyVO cannot produce services for (mainly because standalone service objects do not make much sense for them). To obtain a service for one of the access modes pyVO does support, use ``get_service(service_type=mode)``. For ``web``, this returns an object that opens a web browser window when its ``query`` method is called. RegistryResources also have a ``get_contact`` method. Use this if the service is down or seems to have bugs; you should in general get at least an e-Mail address: .. doctest-remote-data:: >>> res.get_contact() 'GAVO Data Centre Team (+49 6221 54 1837) ' Finally, the registry has an idea of what kind of tables are published through a resource, much like the VOSI tables endpoint (as a matter of fact, the Registry should contain exactly what is there, as VOSI tables in effect just gives a part of the registry record). Not all publishers properly provide table metadata to the Registry, though, but most do these days, and then you can run: .. doctest-remote-data:: >>> res.get_tables() # doctest: +IGNORE_OUTPUT {'flashheros.data': ... 29 columns ..., 'ivoa.obscore': ... 0 columns ...} Alternative Registries ====================== There are several RegTAP services in the VO. PyVO by default uses the one at the TAP access URL http://reg.g-vo.org/tap. You can use alternative ones, for instance, because they are nearer to you or because the default endpoint is down. You can pre-select the URL by setting the ``IVOA_REGISTRY`` environment variable to the TAP access URL of the service you would like to use. In a bash-like shell, you would say:: export IVOA_REGISTRY="https://mast.stsci.edu/vo-tap/api/v0.1/registry" before starting python (or the notebook processor). Within a Python session, you can use the `pyvo.registry.choose_RegTAP_service` function, which also takes the TAP access URL. To inspect which endpoint is currently in use, call `pyvo.registry.get_RegTAP_service_url`: .. doctest:: >>> from pyvo import registry >>> registry.get_RegTAP_service_url() 'http://reg.g-vo.org/tap' As long as you have on working registry endpoint, you can find the other RegTAP services using: .. We probably shouldn't test the result of the next code block; this will change every time someone registers a new RegTAP service... .. doctest-remote-data:: >>> res = registry.search(datamodel="regtap") >>> print("\n".join(sorted(r.get_interface(service_type="tap", lax=True).access_url ... for r in res))) http://dc.g-vo.org/tap http://gavo.aip.de/tap http://voparis-rr.obspm.fr/tap https://mast.stsci.edu/vo-tap/api/v0.1/registry https://registry.euro-vo.org/regtap/tap Reference/API ============= .. automodapi:: pyvo.registry .. automodapi:: pyvo.registry.regtap .. automodapi:: pyvo.registry.rtcons Appendix: Robust All-VO Queries =============================== The VO contains many services, and even if all of them had 99.9% uptime (which not all do), at any time you would always see failures, some of them involving long timeouts. Hence, if you run all-VO queries, you should catch errors and, at least in interactive sessions, provide some way to interrupt overly long queries. Here is an example for how to query all obscore services; remove the ``break`` at the end of the loop to actually do the global query (it's there so that you don't blindly run all-VO queries without reading at least this sentence): .. doctest-remote-data:: >>> from astropy.table import vstack >>> from pyvo import registry >>> >>> QUERY = "SELECT TOP 1 s_ra, s_dec from ivoa.obscore" >>> >>> results = [] >>> for i, svc_rec in enumerate(registry.search(datamodel="obscore", servicetype="tap")): ... # print("Querying {}".format(svc_rec.res_title)) ... try: ... svc = svc_rec.get_service(service_type="tap", lax=True) ... results.append( ... svc.run_sync(QUERY).to_table()) ... except KeyboardInterrupt: ... # someone lost their patience with a service. Query next. ... pass ... except Exception as msg: ... # some service is broken; you *should* complain, but ... #print(" Broken: {} ({}). Complain to {}.\n".format( ... pass # svc_rec.ivoid, msg, svc_rec.get_contact())) ... if i == 2: ... break >>> total_result = vstack(results) # doctest: +IGNORE_WARNINGS >>> total_result # doctest: +IGNORE_OUTPUT
s_ra s_dec deg deg float64 float64 ------------------ ------------------- 350.4619 -9.76139 208.360833592735 52.3611106494996 148.204840298431 29.1690999975089 243.044008 -51.778222 321.63278049999997 -54.579285999999996 Note that even this is not enough to reliably cover use cases like „give me all images of M1 in the X-Ray in the VO“. In some future version, pyVO will come with higher-level functionality for such tasks. astropy-pyvo-f0fdda3/docs/samp/000077500000000000000000000000001521254414300166505ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/samp/advanced_embed_samp_hub.rst000066400000000000000000000105271521254414300241660ustar00rootroot00000000000000.. doctest-skip-all Embedding a SAMP Hub in a GUI ***************************** Overview ======== If you wish to embed a SAMP hub in your Python Graphical User Interface (GUI) tool, you will need to start the hub programmatically using:: from pyvo.samp import SAMPHubServer hub = SAMPHubServer() hub.start() This launches the hub in a thread and is non-blocking. If you are not interested in connections from web SAMP clients, then you can use:: from pyvo.samp import SAMPHubServer hub = SAMPHubServer(web_profile=False) hub.start() This should be all you need to do. However, if you want to keep the Web Profile active, there is an additional consideration: when a web SAMP client connects, you will need to ask the user whether they accept the connection (for security reasons). By default, the confirmation message is a text-based message in the terminal, but if you have a GUI tool, you will likely want to open a GUI dialog instead. To do this, you will need to define a class that handles the dialog, and then pass an **instance** of the class to `pyvo.samp.SAMPHubServer` (not the class itself). This class should inherit from `pyvo.samp.WebProfileDialog` and add the following: 1) A GUI timer callback that periodically calls ``WebProfileDialog.handle_queue`` (available as ``self.handle_queue``). 2) A ``show_dialog`` method to display a consent dialog. It should take the following arguments: - ``samp_name``: The name of the application making the request. - ``details``: A dictionary of details about the client making the request. The only key in this dictionary required by the SAMP standard is ``samp.name`` which gives the name of the client making the request. - ``client``: A hostname, port pair containing the client address. - ``origin``: A string containing the origin of the request. 3) Based on the user response, the ``show_dialog`` should call ``WebProfileDialog.consent`` or ``WebProfileDialog.reject``. This may, in some cases, be the result of another GUI callback. Example of embedding a SAMP hub in a Tk application --------------------------------------------------- .. EXAMPLE START Embedding a SAMP Hub in a Tk Application The following code is a full example of a Tk application that watches for web SAMP connections and opens the appropriate dialog:: import tkinter as tk import tkinter.messagebox as tkMessageBox from pyvo.samp import SAMPHubServer from pyvo.samp.hub import WebProfileDialog MESSAGE = """ A Web application which declares to be Name: {name} Origin: {origin} is requesting to be registered with the SAMP Hub. Pay attention that if you permit its registration, such application will acquire all current user privileges, like file read/write. Do you give your consent? """ class TkWebProfileDialog(WebProfileDialog): def __init__(self, root): self.root = root self.wait_for_dialog() def wait_for_dialog(self): self.handle_queue() self.root.after(100, self.wait_for_dialog) def show_dialog(self, samp_name, details, client, origin): text = MESSAGE.format(name=samp_name, origin=origin) response = tkMessageBox.askyesno( 'SAMP Hub', text, default=tkMessageBox.NO) if response: self.consent() else: self.reject() # Start up Tk application root = tk.Tk() tk.Label(root, text="Example SAMP Tk application", font=("Helvetica", 36), justify=tk.CENTER).pack(pady=200) root.geometry("500x500") root.update() # Start up SAMP hub h = SAMPHubServer(web_profile_dialog=TkWebProfileDialog(root)) h.start() try: # Main GUI loop root.mainloop() except KeyboardInterrupt: pass h.stop() If you run the above script, a window will open that says "Example SAMP Tk application." If you then go to the following page, for example: http://astrojs.github.io/sampjs/examples/pinger.html and click on the Ping button, you will see the dialog open in the Tk application. Once you click on "CONFIRM," future "Ping" calls will no longer bring up the dialog. .. EXAMPLE END astropy-pyvo-f0fdda3/docs/samp/example_clients.rst000066400000000000000000000132011521254414300225530ustar00rootroot00000000000000.. doctest-skip-all .. _vo-samp-example_clients: Communication between Integrated Clients Objects ************************************************ As shown in :doc:`example_table_image`, the `pyvo.samp.SAMPIntegratedClient` class can be used to communicate with other SAMP-enabled tools such as `TOPCAT `_, `SAO DS9 `_, or `Aladin Desktop `_. In this section, we look at how we can set up two `pyvo.samp.SAMPIntegratedClient` instances and communicate between them. First, start up a SAMP hub as described in :doc:`example_hub`. Next, we create two clients and connect them to the hub:: >>> from pyvo import samp >>> client1 = samp.SAMPIntegratedClient(name="Client 1", description="Test Client 1", ... metadata = {"client1.version":"0.01"}) >>> client2 = samp.SAMPIntegratedClient(name="Client 2", description="Test Client 2", ... metadata = {"client2.version":"0.25"}) >>> client1.connect() >>> client2.connect() We now define functions to call when receiving a notification, call or response:: >>> def test_receive_notification(private_key, sender_id, mtype, params, extra): ... print("Notification:", private_key, sender_id, mtype, params, extra) >>> def test_receive_call(private_key, sender_id, msg_id, mtype, params, extra): ... print("Call:", private_key, sender_id, msg_id, mtype, params, extra) ... client1.ereply(msg_id, samp.SAMP_STATUS_OK, result = {"txt": "printed"}) >>> def test_receive_response(private_key, sender_id, msg_id, response): ... print("Response:", private_key, sender_id, msg_id, response) We subscribe client 1 to ``"samp.app.*"`` and bind it to the related functions:: >>> client1.bind_receive_notification("samp.app.*", test_receive_notification) >>> client1.bind_receive_call("samp.app.*", test_receive_call) We now bind message tags received by client 2 to suitable functions:: >>> client2.bind_receive_response("my-dummy-print", test_receive_response) >>> client2.bind_receive_response("my-dummy-print-specific", test_receive_response) We are now ready to test out the clients and callback functions. Client 2 notifies all clients using the "samp.app.echo" message type via the hub:: >>> client2.enotify_all("samp.app.echo", txt="Hello world!") ['cli#2'] Notification: 0d7f4500225981c104a197c7666a8e4e cli#2 samp.app.echo {'txt': 'Hello world!'} {'host': 'antigone.lambrate.inaf.it', 'user': 'unknown'} We can also find a dictionary that specifies which clients would currently receive ``samp.app.echo`` messages:: >>> print(client2.get_subscribed_clients("samp.app.echo")) {'cli#2': {}} Client 2 calls all clients with the ``"samp.app.echo"`` message type using ``"my-dummy-print"`` as a message-tag:: >>> print(client2.call_all("my-dummy-print", ... {"samp.mtype": "samp.app.echo", ... "samp.params": {"txt": "Hello world!"}})) {'cli#1': 'msg#1;;cli#hub;;cli#2;;my-dummy-print'} Call: 8c8eb53178cb95e168ab17ec4eac2353 cli#2 msg#1;;cli#hub;;cli#2;;my-dummy-print samp.app.echo {'txt': 'Hello world!'} {'host': 'antigone.lambrate.inaf.it', 'user': 'unknown'} Response: d0a28636321948ccff45edaf40888c54 cli#1 my-dummy-print {'samp.status': 'samp.ok', 'samp.result': {'txt': 'printed'}} Client 2 then calls client 1 using the ``"samp.app.echo"`` message type, tagging the message as ``"my-dummy-print-specific"``:: >>> try: ... print(client2.call(client1.get_public_id(), ... "my-dummy-print-specific", ... {"samp.mtype": "samp.app.echo", ... "samp.params": {"txt": "Hello client 1!"}})) ... except samp.SAMPProxyError as e: ... print("Error ({0}): {1}".format(e.faultCode, e.faultString)) msg#2;;cli#hub;;cli#2;;my-dummy-print-specific Call: 8c8eb53178cb95e168ab17ec4eac2353 cli#2 msg#2;;cli#hub;;cli#2;;my-dummy-print-specific samp.app.echo {'txt': 'Hello Cli 1!'} {'host': 'antigone.lambrate.inaf.it', 'user': 'unknown'} Response: d0a28636321948ccff45edaf40888c54 cli#1 my-dummy-print-specific {'samp.status': 'samp.ok', 'samp.result': {'txt': 'printed'}} We can now define a function called to test synchronous calls:: >>> def test_receive_sync_call(private_key, sender_id, msg_id, mtype, params, extra): ... import time ... print("SYNC Call:", sender_id, msg_id, mtype, params, extra) ... time.sleep(2) ... client1.reply(msg_id, {"samp.status": samp.SAMP_STATUS_OK, ... "samp.result": {"txt": "printed sync"}}) We now bind the ``samp.test`` message type to ``test_receive_sync_call``:: >>> client1.bind_receive_call("samp.test", test_receive_sync_call) >>> try: ... # Sync call ... print(client2.call_and_wait(client1.get_public_id(), ... {"samp.mtype": "samp.test", ... "samp.params": {"txt": "Hello SYNCRO client 1!"}}, ... "10")) ... except samp.SAMPProxyError as e: ... # If timeout expires than a SAMPProxyError is returned ... print("Error ({0}): {1}".format(e.faultCode, e.faultString)) SYNC Call: cli#2 msg#3;;cli#hub;;cli#2;;sampy::sync::call samp.test {'txt': 'Hello SYNCRO Cli 1!'} {'host': 'antigone.lambrate.inaf.it', 'user': 'unknown'} {'samp.status': 'samp.ok', 'samp.result': {'txt': 'printed sync'}} Finally, we disconnect the clients from the hub at the end:: >>> client1.disconnect() >>> client2.disconnect() astropy-pyvo-f0fdda3/docs/samp/example_hub.rst000066400000000000000000000021261521254414300216740ustar00rootroot00000000000000.. doctest-skip-all .. _vo-samp-example_hub: Starting and Stopping a SAMP Hub Server *************************************** There are several ways you can start up a SAMP hub: Using an Existing Hub ===================== You can start up another application that includes a hub, such as `TOPCAT `_, `SAO DS9 `_, or `Aladin Desktop `_. Starting a Hub Programmatically =============================== You can start up a hub by creating a `pyvo.samp.SAMPHubServer` instance and starting it, either from the interactive Python prompt, or from a Python script:: >>> from pyvo.samp import SAMPHubServer >>> hub = SAMPHubServer() >>> hub.start() You can then stop the hub by calling:: >>> hub.stop() However, this method is generally not recommended for average users because it does not work correctly when web SAMP clients try to connect. Instead, this should be reserved for developers who want to embed a SAMP hub in a GUI, for example. For more information, see :doc:`advanced_embed_samp_hub`. astropy-pyvo-f0fdda3/docs/samp/example_table_image.rst000066400000000000000000000243001521254414300233450ustar00rootroot00000000000000.. doctest-skip-all .. _vo-samp-example-table-image: Sending and Receiving Tables and Images over SAMP ************************************************* In the following examples, we make use of: * `TOPCAT `_, which is a tool to explore tabular data. * `SAO DS9 `_, which is an image visualization tool that can overplot catalogs. * `Aladin Desktop `_, which is another tool that can visualize images and catalogs. TOPCAT and Aladin will run a SAMP Hub if none is found, so for the following examples you can either start up one of these applications first, or you can start up the `pyvo.samp` hub. You can start this using the following command:: $ samp_hub Sending a Table to TOPCAT and DS9 ================================= The easiest way to send a VO table to TOPCAT is to make use of the `pyvo.samp.SAMPIntegratedClient` class. Once TOPCAT is open, first instantiate a `pyvo.samp.SAMPIntegratedClient` instance and then connect to the hub:: >>> from pyvo.samp import SAMPIntegratedClient >>> client = SAMPIntegratedClient() >>> client.connect() Next, we have to set up a dictionary that contains details about the table to send. This should include ``url``, which is the URL to the file, and ``name``, which is a human-readable name for the table. The URL can be a local URL (starting with ``file:///``):: >>> params = {} >>> params["url"] = 'file:///Users/tom/Desktop/aj285677t3_votable.xml' >>> params["name"] = "Robitaille et al. (2008), Table 3" .. note:: To construct a local URL, you can also make use of ``urlparse`` as follows:: >>> import urlparse >>> params["url"] = urlparse.urljoin('file:', os.path.abspath("aj285677t3_votable.xml")) Now we can set up the message itself. This includes the type of message (here we use ``table.load.votable``, which indicates that a VO table should be loaded and the details of the table that we set above):: >>> message = {} >>> message["samp.mtype"] = "table.load.votable" >>> message["samp.params"] = params Finally, we can broadcast this to all clients that are listening for ``table.load.votable`` messages using :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify_all`:: >>> client.notify_all(message) The above message will actually be broadcast to all applications connected via SAMP. For example, if we open `SAO DS9 `_ in addition to TOPCAT, and we run the above command, both applications will load the table. We can use the :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.get_registered_clients` method to find all of the clients connected to the hub:: >>> client.get_registered_clients() ['hub', 'c1', 'c2'] These IDs do not mean much, but we can find out more using:: >>> client.get_metadata('c1') {'author.affiliation': 'Astrophysics Group, Bristol University', 'author.email': 'm.b.taylor@bristol.ac.uk', 'author.name': 'Mark Taylor', 'home.page': 'https://www.star.bristol.ac.uk/mbt/topcat/', 'samp.description.text': 'Tool for OPerations on Catalogues And Tables', 'samp.documentation.url': 'http://127.0.0.1:2525/doc/sun253/index.html', 'samp.icon.url': 'http://127.0.0.1:2525/doc/images/tc_sok.gif', 'samp.name': 'topcat', 'topcat.version': '4.0-1'} We can see that ``c1`` is the TOPCAT client. We can now resend the data, but this time only to TOPCAT, using the :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify` method:: >>> client.notify('c1', message) Once finished, we should make sure we disconnect from the hub:: >>> client.disconnect() Receiving a Table from TOPCAT ============================= To receive a table from TOPCAT, we have to set up a client that listens for messages from the hub. As before, we instantiate a `pyvo.samp.SAMPIntegratedClient` instance and connect to the hub:: >>> from pyvo.samp import SAMPIntegratedClient >>> client = SAMPIntegratedClient() >>> client.connect() We now set up a receiver class which will handle any received messages. We need to take care to write handlers for both notifications and calls (the difference between the two being that calls expect a reply):: >>> class Receiver: ... def __init__(self, client): ... self.client = client ... self.received = False ... def receive_call(self, private_key, sender_id, msg_id, mtype, params, extra): ... self.params = params ... self.received = True ... self.client.reply(msg_id, {"samp.status": "samp.ok", "samp.result": {}}) ... def receive_notification(self, private_key, sender_id, mtype, params, extra): ... self.params = params ... self.received = True And we instantiate it: >>> r = Receiver(client) We can now use the :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.bind_receive_call` and :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.bind_receive_notification` methods to tell our receiver to listen to all ``table.load.votable`` messages:: >>> client.bind_receive_call("table.load.votable", r.receive_call) >>> client.bind_receive_notification("table.load.votable", r.receive_notification) We can now check that the message has not been received yet:: >>> r.received False We can now broadcast the table from TOPCAT. After a few seconds, we can check again if the message has been received:: >>> r.received True Success! The table URL should now be available in ``r.params['url']``, so we can do:: >>> from astropy.table import Table >>> t = Table.read(r.params['url']) Downloading http://127.0.0.1:2525/dynamic/4/t12.vot [Done] >>> t col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 ------------------------- -------- ------- -------- -------- ----- ---- ----- ---- ----- SSTGLMC G000.0046+01.1431 0.0046 1.1432 265.2992 -28.3321 6.67 5.04 6.89 5.22 N SSTGLMC G000.0106-00.7315 0.0106 -0.7314 267.1274 -29.3063 7.18 6.07 nan 5.17 Y SSTGLMC G000.0110-01.0237 0.0110 -1.0236 267.4151 -29.4564 8.32 6.30 8.34 6.32 N ... As before, we should remember to disconnect from the hub once we are done:: >>> client.disconnect() Example ======= .. EXAMPLE START Receiving and Reading a Table over SAMP The following is a full example of a script that can be used to receive and read a table. It includes a loop that waits until the message is received, and reads the table once it has:: import time from pyvo.samp import SAMPIntegratedClient from astropy.table import Table # Instantiate the client and connect to the hub client=SAMPIntegratedClient() client.connect() # Set up a receiver class class Receiver: def __init__(self, client): self.client = client self.received = False def receive_call(self, private_key, sender_id, msg_id, mtype, params, extra): self.params = params self.received = True self.client.reply(msg_id, {"samp.status": "samp.ok", "samp.result": {}}) def receive_notification(self, private_key, sender_id, mtype, params, extra): self.params = params self.received = True # Instantiate the receiver r = Receiver(client) # Listen for any instructions to load a table client.bind_receive_call("table.load.votable", r.receive_call) client.bind_receive_notification("table.load.votable", r.receive_notification) # We now run the loop to wait for the message in a try/finally block so that if # the program is interrupted e.g. by control-C, the client terminates # gracefully. try: # We test every 0.1s to see if the hub has sent a message while True: time.sleep(0.1) if r.received: t = Table.read(r.params['url']) break finally: client.disconnect() # Print out table print t .. EXAMPLE END Sending an Image to DS9 and Aladin ================================== As for tables, the most convenient way to send a FITS image over SAMP is to make use of the `pyvo.samp.SAMPIntegratedClient` class. Once Aladin or DS9 are open, first instantiate a `pyvo.samp.SAMPIntegratedClient` instance and then connect to the hub as before:: >>> from pyvo.samp import SAMPIntegratedClient >>> client = SAMPIntegratedClient() >>> client.connect() Next, we have to set up a dictionary that contains details about the image to send. This should include ``url``, which is the URL to the file, and ``name``, which is a human-readable name for the table. The URL can be a local URL (starting with ``file:///``):: >>> params = {} >>> params["url"] = 'file:///Users/tom/Desktop/MSX_E.fits' >>> params["name"] = "MSX Band E Image of the Galactic Center" See `Sending a Table to TOPCAT and DS9`_ for an example of a recommended way to construct local URLs. Now we can set up the message itself. This includes the type of message (here we use ``image.load.fits`` which indicates that a FITS image should be loaded, and the details of the table that we set above):: >>> message = {} >>> message["samp.mtype"] = "image.load.fits" >>> message["samp.params"] = params Finally, we can broadcast this to all clients that are listening for ``table.load.votable`` messages:: >>> client.notify_all(message) As for `Sending a Table to TOPCAT and DS9`_, the :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify_all` method will broadcast the image to all listening clients, and for tables it is possible to instead use the :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify` method to send it to a specific client. Once finished, we should make sure we disconnect from the hub:: >>> client.disconnect() Receiving a Table from DS9 or Aladin ==================================== Receiving images over SAMP is identical to `Receiving a Table from TOPCAT`_, with the exception that the message type should be ``image.load.fits`` instead of ``table.load.votable``. Once the URL has been received, the FITS image can be opened with:: >>> from astropy.io import fits >>> fits.open(r.params['url']) astropy-pyvo-f0fdda3/docs/samp/index.rst000066400000000000000000000062751521254414300205230ustar00rootroot00000000000000.. doctest-skip-all .. _vo-samp: ************************************************************* SAMP (Simple Application Messaging Protocol) (`pyvo.samp`) ************************************************************* `pyvo.samp` is a Python implementation of the SAMP messaging system. Simple Application Messaging Protocol (SAMP) is an inter-process communication system that allows different client programs, usually running on the same computer, to communicate with each other by exchanging short messages that may reference external data files. The protocol has been developed within the International Virtual Observatory Alliance (IVOA) and is understood by many desktop astronomy tools, including `TOPCAT `_, `SAO DS9 `_, and `Aladin `_. So by using the classes in `pyvo.samp`, Python code can interact with other running desktop clients, for instance displaying a named FITS file in DS9, prompting Aladin to recenter on a given sky position, or receiving a message identifying the row when a user highlights a plotted point in TOPCAT. The way the protocol works is that a SAMP "Hub" process must be running on the local host, and then various client programs can connect to it. Once connected, these clients can send messages to each other via the hub. The details are described in the `SAMP standard `_. `pyvo.samp` provides classes both to set up such a hub process, and to help implement a client that can send and receive messages. Note that setting up the hub from Python is not always necessary, since various other SAMP-aware applications may start up a hub independently; in most cases, only one running hub is used during a SAMP session. The following classes are available in `pyvo.samp`: * `pyvo.samp.SAMPHubServer`, which is used to instantiate a hub server that clients can then connect to. * `pyvo.samp.SAMPHubProxy`, which is used to connect to an existing hub (including hubs started from other applications such as `TOPCAT `_). * `pyvo.samp.SAMPClient`, which is used to create a SAMP client. * `pyvo.samp.SAMPIntegratedClient`, which is the same as `pyvo.samp.SAMPClient` except that it has a self-contained `pyvo.samp.SAMPHubProxy` to provide a simpler user interface. `pyvo.samp` is a full implementation of `SAMP V1.3 `_. As well as the Standard Profile, it supports the Web Profile, which means that it can be used to also communicate with web SAMP clients; see the `sampjs `_ library examples for more details. .. _IVOA Simple Application Messaging Protocol: http://www.ivoa.net/documents/latest/SAMP.html Using `pyvo.samp` ==================== .. toctree:: :maxdepth: 2 example_hub example_table_image example_clients advanced_embed_samp_hub Reference/API ============= .. toctree:: :maxdepth: 2 ref_api Acknowledgments =============== Some of this code was adapted from the `SAMPy `__ package written by Luigi Paioro, who has granted the Astropy Project permission to use the code under a BSD license. astropy-pyvo-f0fdda3/docs/samp/ref_api.rst000066400000000000000000000000671521254414300210120ustar00rootroot00000000000000Reference/API ************* .. automodapi:: pyvo.samp astropy-pyvo-f0fdda3/docs/utils/000077500000000000000000000000001521254414300170505ustar00rootroot00000000000000astropy-pyvo-f0fdda3/docs/utils/index.rst000066400000000000000000000024471521254414300207200ustar00rootroot00000000000000.. _pyvo-utils: ******************************* pyVO utilities (``pyvo.utils``) ******************************* This subpackage collects a few packages intended to help developing and maintaining pyVO. Almost all of this is not part of pyVO's public API and may change at any time. It is documented here for the convenience of the maintainers and to help users when the effects of this code becomes user-visible. There is one piece of public API here: `pyvo.utils.http.setup_user_agent`. This can be used at the beginning of a program to mark pyVO requests as comming from a specific client, e.g.,:: >>> from pyvo.utils.http import setup_user_agent >>> setup_user_agent(primary_component="clusterfinder") Code doing bulk downloads (e.g., for mirroring or archiving) should use:: >>> setup_user_agent(purpose="copy") Finally, code running for validation or testing should do before making such requests:: >>> setup_user_agent(purpose="test") See `Operational Identification of Software Components`_ for the background of this. .. _Operational Identification of Software Components: https://ivoa.net/documents/Notes/softid/ Reference/API ============= .. automodapi:: pyvo.utils.http .. automodapi:: pyvo.utils.xml.elements :no-inheritance-diagram: .. toctree:: :maxdepth: 1 prototypes astropy-pyvo-f0fdda3/docs/utils/prototypes.rst000066400000000000000000000102531521254414300220330ustar00rootroot00000000000000.. _pyvo-prototypes: ************************************************** Prototype Implementations (`pyvo.utils.prototype`) ************************************************** This subpackage provides support for prototype standard implementations. ``PyVO`` implements the IVOA standards. As part of the standard approval process, new features are proposed and need to be demonstrated before the standard may be approved. ``PyVO`` may implement features that are not yet part of an approved standard. Such features are unstable, as the standard may be subject to reviews and significant changes, until it's finally approved. The ``prototype`` package provides support for such prototypes by means of a decorator for implementations that are still unstable. The expectation is that they will eventually become standard at which time the decorator will be removed. Users of ``pyvo`` need to explicitly opt-in in order to use such features. If prototype implementations are accessed without the user explicitly opting in, an exception will be raised. .. _pyvo-prototypes-users: Activating Prototype Implementations ==================================== In order to activate a feature, users need to call the function:: activate_features('feature_one', 'feature_two') Where the arguments are names of prototype features. If a feature name does not exist, a `~pyvo.utils.prototype.PrototypeWarning` will be issued, but the call will not fail. If no arguments are provided, then all features are enabled. .. _pyvo-prototypes-developers: Marking Features as Experimental ================================ The design restricts the possible usage of the decorator, which needs to always be called with a single argument being the name of the corresponding feature. More arguments are allowed but will be ignored. If the decorator is not used with the correct ``@prototype_feature("feature-name")`` invocation, the code will error as soon as the class is imported. The decorator can be used to tag individual functions or methods:: @prototype_feature('a-feature') def i_am_a_prototype(*arg, **kwargs): pass In this case, a single function or method is tagged as part of the ``a-feature`` prototype feature. If the feature has a URL defined (see :ref:`pyvo-prototypes-registry` below). Alternatively, a class can be marked as belonging to a feature. All public methods will be marked as part of the prototype implementation. Protected, private, and *dunder* methods (i.e. any method starting with an underscore) will be ignored. The reason is that the class might be instantiated by some mediator before the user can call (and more importantly not call) a higher level facade:: @prototype_feature('a-feature') class SomeFeatureClass: def method(self): pass @staticmethod def static(): pass def __ignore__(self): pass Any number of classes and functions can belong to a single feature, and individual methods can be tagged in a class rather than the class itself. .. _pyvo-prototypes-registry: Feature Registry ================ The feature registry is a static ``features`` dictionary in the `~pyvo.utils.prototype` package. The key is the name of the feature and the value is an instance of the `~pyvo.utils.protofeature.Feature` class. This class is responsible for determining whether an instance should error or not, and to format an error message if it's not. While the current implementation of the ``Feature`` class is simple, future requirements might lead to other implementations with more complex logic or additional documentation elements. .. _pyvo-prototypes-api: Reference/API ============= .. automodapi:: pyvo.utils.prototype .. automodapi:: pyvo.utils.protofeature Existing Prototypes =================== .. _cadc-tb-upload: CADC Table Manipulation (cadc-tb-upload) ---------------------------------------- This is a proposed extension to the TAP protocol to allow users to manipulate tables (https://wiki.ivoa.net/twiki/bin/view/IVOA/TAP-1_1-Next). The `~pyvo.dal.tap.TAPService` has been extended with methods that allow for: * table creation * column index creation * table content upload * table removal More details at: :ref:`table manipulation` astropy-pyvo-f0fdda3/licenses/000077500000000000000000000000001521254414300165655ustar00rootroot00000000000000astropy-pyvo-f0fdda3/licenses/ASTROPY_LICENSE.rst000066400000000000000000000027301521254414300216240ustar00rootroot00000000000000Copyright (c) 2011-2013, Astropy Developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Astropy Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. astropy-pyvo-f0fdda3/licenses/LICENSE.rst000066400000000000000000000027511521254414300204060ustar00rootroot00000000000000Copyright (c) 2013, Virtual Astronomical Observatory, LLC (VAO) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the VAO nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. astropy-pyvo-f0fdda3/licenses/README.rst000066400000000000000000000002421521254414300202520ustar00rootroot00000000000000Licenses ======== This directory holds license and credit information for the affiliated package, works the affiliated package is derived from, and/or datasets. astropy-pyvo-f0fdda3/pyproject.toml000066400000000000000000000002651521254414300176770ustar00rootroot00000000000000[build-system] requires = ["setuptools", "setuptools_scm", "wheel"] build-backend = 'setuptools.build_meta' [tool.black] force-exclude = ''' ( .* ) '''astropy-pyvo-f0fdda3/pyvo/000077500000000000000000000000001521254414300157555ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/__init__.py000066400000000000000000000026021521254414300200660ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ PyVO is a package providing access to remote data and services of the Virtual observatory (VO) using Python. The pyvo module currently provides these main capabilities: * find archives that provide particular data of a particular type and/or relates to a particular topic * regsearch() * search an archive for datasets of a particular type * imagesearch(), spectrumsearch() * do simple searches on catalogs or databases * conesearch(), linesearch(), tablesearch() Submodules provide additional functions and classes for greater control over access to these services. This module also exposes the exception classes raised by the above functions, of which DALAccessError is the root parent exception. """ # Affiliated packages may add whatever they like to this file, but # should keep this content at the top. # ---------------------------------------------------------------------------- from ._astropy_init import * # ---------------------------------------------------------------------------- from . import registry from .dal import ssa, sia, sla, scs, tap from . import auth from .registry import search as regsearch from .dal import ( imagesearch, spectrumsearch, conesearch, linesearch, tablesearch, DALAccessError, DALProtocolError, DALFormatError, DALServiceError, DALQueryError, DALRateLimitError) astropy-pyvo-f0fdda3/pyvo/_astropy_init.py000066400000000000000000000002721521254414300212130ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst __all__ = ['__version__'] try: from .version import version as __version__ except ImportError: __version__ = '' astropy-pyvo-f0fdda3/pyvo/auth/000077500000000000000000000000001521254414300167165ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/auth/__init__.py000066400000000000000000000005671521254414300210370ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst __all__ = ["AuthSession", "AuthURLs", "CredentialStore", "ANONYMOUS", "BASIC", "CLIENT_CERTIFICATE", "COOKIE"] from .authsession import AuthSession from .authurls import AuthURLs from .credentialstore import CredentialStore from .securitymethods import ANONYMOUS, BASIC, CLIENT_CERTIFICATE, COOKIE astropy-pyvo-f0fdda3/pyvo/auth/authsession.py000066400000000000000000000071351521254414300216430ustar00rootroot00000000000000import logging from .authurls import AuthURLs from .credentialstore import CredentialStore __all__ = ["AuthSession"] class AuthSession: """ A requests-like session that pyvo can use to dispatch its network calls with authentication. The user adds their credentials to the credentials object, such as adding a cookie, certificate, or password. The network requests made by pyvo pass through here, and the URL of the request is matched against the capabilities of the service. Based on what credentials have been provided and the capabilities of the service, appropriate credentials are added to the request before it is sent. """ def __init__(self): super().__init__() self.credentials = CredentialStore() self._auth_urls = AuthURLs() def add_security_method_for_url(self, url, security_method, exact=False): """ Add a security method for a url. This is additive with update_from_capabilities. This can be useful to set additional security methods that aren't set in the capabilities for whatever reason. Parameters ---------- url : str URL to set a security method for security_method : str URI of the security method to set exact : bool If True, match only this URL. If false, match all URLs that match this as a base URL. """ self._auth_urls.add_security_method_for_url(url, security_method, exact=exact) def update_from_capabilities(self, capabilities): """ Update the URL to security method mapping using the capabilities provided. Parameters ---------- capabilities : object List of `~pyvo.io.vosi.voresource.Capability` """ self._auth_urls.update_from_capabilities(capabilities) def get(self, url, **kwargs): """ Wrapper to make a HTTP GET request with authentication. """ return self._request('GET', url, **kwargs) def post(self, url, **kwargs): """ Wrapper to make a HTTP POST request with authentication. """ return self._request('POST', url, **kwargs) def put(self, url, **kwargs): """ Wrapper to make a HTTP PUT request with authentication. """ return self._request('PUT', url, **kwargs) def delete(self, url, **kwargs): """ Wrapper to make a HTTP DELETE request with authentication. """ return self._request('DELETE', url, **kwargs) def _request(self, http_method, url, **kwargs): """ Make an HTTP request with authentication. This function looks at the url of the request, determines what credentials it should attach to the request to authenticate, and then dispatches the request to the underlying requests library using the session that has been configured with the credentials. Parameters ---------- http_method : str the HTTP verb of the request. url : str the URL to request """ auth_methods = self._auth_urls.allowed_auth_methods(url) logging.debug('Possible auth methods: %s', auth_methods) negotiated_method = self.credentials.negotiate_method(auth_methods) logging.debug('Using auth method: %s', negotiated_method) session = self.credentials.get(negotiated_method) return session.request(http_method, url, **kwargs) def __repr__(self): return '\n'.join([repr(self.credentials), repr(self._auth_urls)]) astropy-pyvo-f0fdda3/pyvo/auth/authurls.py000066400000000000000000000126401521254414300211420ustar00rootroot00000000000000import collections import logging from . import securitymethods __all__ = ["AuthURLs"] class AuthURLs(): """ AuthURLs helps determine which security method should be used with a given URL. It learns the security methods through the VOSI capabilities, which are passed in via update_from_capabilities. Three collections are used internally: ``full_urls`` Exact-match entries, populated when a capability declares ``use="full"``. An exact match takes priority and is returned without consulting any other collection. ``_explicit_urls`` Prefix-match entries registered by callers via ``add_security_method_for_url``. All matching entries are combined, so a registration for a base URL propagates to every sub-path beneath it. ``_capability_urls`` Prefix-match entries loaded from VOSI capabilities (``use="base"``). Only the most-specific (longest) matching entry is used. For a given URL ``allowed_auth_methods`` returns the union of: 1. The ``full_urls`` exact match, if one exists (short-circuits). 2. All matching ``_explicit_urls`` entries. 3. The single most-specific matching ``_capability_urls`` entry. """ def __init__(self): self.full_urls = collections.defaultdict(set) self._explicit_urls = collections.defaultdict(set) self._capability_urls = collections.defaultdict(set) def update_from_capabilities(self, capabilities): """ Update the URL to security method mapping using the capabilities provided. Parameters ---------- capabilities : object List of `~pyvo.io.vosi.voresource.Capability` """ for c in capabilities: for i in c.interfaces: for u in i.accessurls: url = u.content exact = u.use == 'full' if not i.securitymethods: self._add_capability_method(url, securitymethods.ANONYMOUS, exact) for sm in i.securitymethods: method = sm.standardid or securitymethods.ANONYMOUS self._add_capability_method(url, method, exact) def add_security_method_for_url(self, url, security_method, exact=False): """ Add a security method for a url. This is additive with update_from_capabilities. This can be useful to set additional security methods that aren't set in the capabilities for whatever reason. Parameters ---------- url : str URL to set a security method for security_method : str URI of the security method to set exact : bool If True, match only this URL. If False, match all URLs that start with this URL as a base. """ if exact: self.full_urls[url].add(security_method) else: self._explicit_urls[url].add(security_method) def _add_capability_method(self, url, security_method, exact=False): """Store a security method discovered from VOSI capabilities.""" if exact: self.full_urls[url].add(security_method) else: self._capability_urls[url].add(security_method) def allowed_auth_methods(self, url): """ Return the authentication methods allowed for a particular URL. The methods are returned as URIs that represent security methods. Parameters ---------- url : str the URL to determine authentication methods """ logging.debug('Determining auth method for %s', url) # Exact-match entries take unconditional priority. if url in self.full_urls: methods = self.full_urls[url] logging.debug('Matching full url %s, methods %s', url, methods) return methods methods = set() # Union every matching caller-registered prefix. for prefix, prefix_methods in self._sorted(self._explicit_urls): if url.startswith(prefix): logging.debug( 'Matching explicit url %s, methods %s', prefix, prefix_methods ) methods.update(prefix_methods) # Most-specific capability entry wins, stop at first match. for cap_url, cap_methods in self._sorted(self._capability_urls): if url.startswith(cap_url): logging.debug( 'Matching capability url %s, methods %s', cap_url, cap_methods ) methods.update(cap_methods) break if methods: return methods logging.debug('No match, using anonymous auth') return {securitymethods.ANONYMOUS} def _sorted(self, url_dict): """Yield (url, methods) pairs from ``url_dict``, longest URL first.""" yield from sorted(url_dict.items(), key=lambda x: len(x[0]), reverse=True) def __repr__(self): urls = [] for url, methods in self.full_urls.items(): urls.append('Full match:' + url + ':' + str(methods)) for url, methods in self._sorted(self._explicit_urls): urls.append('Explicit match:' + url + ':' + str(methods)) for url, methods in self._sorted(self._capability_urls): urls.append('Capability match:' + url + ':' + str(methods)) return '\n'.join(urls) astropy-pyvo-f0fdda3/pyvo/auth/credentialstore.py000066400000000000000000000114061521254414300224610ustar00rootroot00000000000000import logging from pyvo.utils.http import create_session from . import securitymethods __all__ = ["CredentialStore"] class CredentialStore: """ The credential store takes user credentials, and uses them to create appropriate requests sessions for dispatching requests using those credentials. Different types of credentials can be passed in, such as cookies, a jar of cookies, certificates, and basic auth. A session can also be associated with a security method URI by calling the set function. Before a request is to be dispatched, the AuthSession calls the get method to retrieve the appropriate requests.Session for making that HTTP request. """ def __init__(self): self.credentials = {} self.set(securitymethods.ANONYMOUS, create_session()) def negotiate_method(self, allowed_methods): """ Compare the credentials provided by the user against the security methods passed in, and determine which method is to be used for making this request. Parameters ---------- allowed_methods : list(str) list of allowed security methods to return Raises ------ Raises an exception if a common method could not be negotiated. """ available_methods = set(self.credentials.keys()) methods = available_methods.intersection(allowed_methods) logging.debug('Available methods: %s', methods) # If we have no common auth mechanism, then fail. if not methods: msg = 'Negotiation failed. Server supports %s, client supports %s' % \ (allowed_methods, available_methods) raise Exception(msg) # If there are more than 1 method to pick, don't pick # anonymous over an actual method. if len(methods) > 1: methods.discard(securitymethods.ANONYMOUS) # Pick a random method. return methods.pop() def set(self, method_uri, session): """ Associate a security method URI with a requests.Session like object. Parameters ---------- method_uri : str URI representing the security method session : object the requests.Session like object that will dispatch requests for the authentication method provided by method_uri """ self.credentials[method_uri] = session def get(self, method_uri): """ Retrieve the requests.Session like object associated with a security method URI. Parameters ---------- method_uri : str URI representing the security method """ return self.credentials[method_uri] def set_cookie(self, cookie_name, cookie_value, domain='', path='/'): """ Add a cookie to use as authentication. More than one call to set_cookie will add multiple cookies into the same cookie jar used for the request. Parameters ---------- cookie_name : str name of the cookie cookie_value : str value of the cookie domain : str restrict usage of this cookie to this domain path : str restrict usage of this cookie to this path """ cookie_session = self.credentials.setdefault(securitymethods.COOKIE, create_session()) cookie_session.cookies.set(cookie_name, cookie_value, domain=domain, path=path) def set_cookie_jar(self, cookie_jar): """ Set the cookie jar to use for authentication. Any previous cookies or cookie jars set will be removed. Parameters ---------- cookie_jar : obj the cookie jar to use. """ cookie_session = self.credentials.setdefault(securitymethods.COOKIE, create_session()) cookie_session.cookies = cookie_jar def set_client_certificate(self, certificate_path): """ Add a client certificate to use for authentication. Parameters ---------- certificate_path : str path to the file of the client certificate """ cert_session = create_session() cert_session.cert = certificate_path self.set(securitymethods.CLIENT_CERTIFICATE, cert_session) def set_password(self, username, password): """ Add a username / password for basic authentication. Parameters ---------- username : str username to use password : str password to use """ basic_session = create_session() basic_session.auth = (username, password) self.set(securitymethods.BASIC, basic_session) def __repr__(self): return 'Support for %s' % self.credentials.keys() astropy-pyvo-f0fdda3/pyvo/auth/securitymethods.py000066400000000000000000000002411521254414300225200ustar00rootroot00000000000000ANONYMOUS = 'anonymous' BASIC = 'ivo://ivoa.net/sso#BasicAA' CLIENT_CERTIFICATE = 'ivo://ivoa.net/sso#tls-with-certificate' COOKIE = 'ivo://ivoa.net/sso#cookie' astropy-pyvo-f0fdda3/pyvo/auth/tests/000077500000000000000000000000001521254414300200605ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/auth/tests/__init__.py000066400000000000000000000001001521254414300221600ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/auth/tests/conftest.py000066400000000000000000000012661521254414300222640ustar00rootroot00000000000000from contextlib import contextmanager import pytest import requests_mock class ContextAdapter(requests_mock.Adapter): """ requests_mock adapter where ``register_uri`` returns a context manager """ @contextmanager def register_uri(self, *args, **kwargs): matcher = super().register_uri(*args, **kwargs) yield matcher self.remove_matcher(matcher) def remove_matcher(self, matcher): if matcher in self._matchers: self._matchers.remove(matcher) @pytest.fixture(scope='function') def mocker(): with requests_mock.Mocker( adapter=ContextAdapter(case_sensitive=True) ) as mocker_ins: yield mocker_ins astropy-pyvo-f0fdda3/pyvo/auth/tests/data/000077500000000000000000000000001521254414300207715ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/auth/tests/data/tap/000077500000000000000000000000001521254414300215555ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/auth/tests/data/tap/capabilities.xml000066400000000000000000000071051521254414300247330ustar00rootroot00000000000000 http://example.com/tap/capabilities http://example.com/tap/availability http://example.com/tap/tables $security_methods http://example.com/tap $security_methods ADQL 2.0 ADQL-2.0
POINT
CIRCLE
DISTANCE
POLYGON
REGION
CONTAINS
INTERSECTS
AREA
CENTROID
COORD1
COORD2
application/x-votable+xml votable text/xml text/csv csv text/tab-separated-values tsv 604800 604800 600 600 134217728 134217728 10000 10000
astropy-pyvo-f0fdda3/pyvo/auth/tests/data/tap/tables.xml000066400000000000000000000013301521254414300235460ustar00rootroot00000000000000 test This is a unittest schema
test.table1
test.table2
astropy-pyvo-f0fdda3/pyvo/auth/tests/test_auth.py000066400000000000000000000250131521254414300224330ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.auth """ import base64 from requests.cookies import RequestsCookieJar from string import Template import pytest from astropy.utils.data import get_pkg_data_contents import pyvo.dal from pyvo.auth.authsession import AuthSession from pyvo.auth.authurls import AuthURLs from pyvo.auth import securitymethods from pyvo.dal.tests.test_tap import MockAsyncTAPServer from pyvo.utils.http import create_session @pytest.fixture(name='security_methods') def _security_methods(): return [None] @pytest.fixture() def auth_capabilities(mocker, security_methods): anon_element = '' sm_element = Template('') method_elements = [] for m in security_methods: if m is None: method_elements.append(anon_element) else: method_elements.append(sm_element.substitute(m=m)) def callback(request, context): t = Template(get_pkg_data_contents('data/tap/capabilities.xml')) capabilities = t.substitute(security_methods=method_elements) return capabilities.encode('utf-8') with mocker.register_uri( 'GET', 'http://example.com/tap/capabilities', content=callback ) as matcher: yield matcher class MockAnonAuthTAPServer(MockAsyncTAPServer): def validator(self, request): assert request.cert is None assert 'Authorization' not in request.headers assert 'Cookie' not in request.headers @pytest.fixture() def anon_auth_service(mocker): yield from MockAnonAuthTAPServer().use(mocker) class MockCookieAuthTAPServer(MockAsyncTAPServer): def validator(self, request): assert request.cert is None assert 'Authorization' not in request.headers assert request.headers.get('Cookie', None) == 'TEST_COOKIE=BADCOOKIE' @pytest.fixture() def cookie_auth_service(mocker): yield from MockCookieAuthTAPServer().use(mocker) class MockCertificateAuthTAPServer(MockAsyncTAPServer): def validator(self, request): assert request.cert == 'client-certificate.pem' assert 'Authorization' not in request.headers assert 'Cookie' not in request.headers @pytest.fixture() def certificate_auth_service(mocker): yield from MockCertificateAuthTAPServer().use(mocker) class MockBasicAuthTAPServer(MockAsyncTAPServer): def validator(self, request): pw = b'testuser:hunter2' basic_encoded = 'Basic ' + base64.b64encode(pw).decode('ascii') assert request.cert is None assert request.headers.get('Authorization', None) == basic_encoded assert 'Cookie' not in request.headers @pytest.fixture() def basic_auth_service(mocker): yield from MockBasicAuthTAPServer().use(mocker) @pytest.fixture() def bearer_token_tables(mocker): def callback(request, context): assert request.headers.get('Authorization', None) == 'Bearer mytoken' return get_pkg_data_contents('data/tap/tables.xml').encode('utf-8') with mocker.register_uri( 'GET', 'http://example.com/tap/tables', content=callback ): yield @pytest.mark.usefixtures('cookie_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#cookie']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_cookies_auth(): session = AuthSession() session.credentials.set_cookie('TEST_COOKIE', 'BADCOOKIE') service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") @pytest.mark.usefixtures('cookie_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#cookie']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_cookie_jar_auth(): session = AuthSession() jar = RequestsCookieJar() jar.set('TEST_COOKIE', 'BADCOOKIE') session.credentials.set_cookie_jar(jar) service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") @pytest.mark.usefixtures('certificate_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#tls-with-certificate']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_certificate_auth(): session = AuthSession() session.credentials.set_client_certificate('client-certificate.pem') service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") @pytest.mark.usefixtures('basic_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#BasicAA']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_basic_auth(): session = AuthSession() session.credentials.set_password('testuser', 'hunter2') service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") @pytest.mark.usefixtures('basic_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#BasicAA']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_negotiation(): session = AuthSession() session.credentials.set_password('testuser', 'hunter2') session.credentials.set_client_certificate('client-certificate.pem') session.credentials.set_cookie('TEST_COOKIE', 'BADCOOKIE') service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") class TestAuthURLs: """Unit tests for AuthURLs prefix/capability matching semantics.""" def test_capability_does_not_override_prefix_registration(self): auth = AuthURLs() auth.add_security_method_for_url('http://example.com/tap', 'custom-token') auth._add_capability_method( 'http://example.com/tap/tables', 'ivo://ivoa.net/sso#cookie' ) methods = auth.allowed_auth_methods('http://example.com/tap/tables') assert 'custom-token' in methods assert 'ivo://ivoa.net/sso#cookie' in methods def test_prefix_registration_propagates_to_all_subpaths(self): auth = AuthURLs() auth.add_security_method_for_url('http://example.com/tap', 'custom-token') for sub in ('/sync', '/async', '/tables', '/tables/schema'): methods = auth.allowed_auth_methods( 'http://example.com/tap' + sub ) assert 'custom-token' in methods, f"missing for {sub}" def test_multiple_prefix_registrations_are_unioned(self): auth = AuthURLs() auth.add_security_method_for_url('http://example.com/tap', 'token-a') auth.add_security_method_for_url('http://example.com/tap/v2', 'token-b') methods = auth.allowed_auth_methods('http://example.com/tap/v2/sync') assert 'token-a' in methods assert 'token-b' in methods def test_most_specific_capability_wins_over_less_specific(self): auth = AuthURLs() auth._add_capability_method( 'http://example.com/tap', 'ivo://ivoa.net/sso#cookie' ) auth._add_capability_method( 'http://example.com/tap/tables', 'ivo://ivoa.net/sso#BasicAA' ) methods = auth.allowed_auth_methods('http://example.com/tap/tables') assert 'ivo://ivoa.net/sso#BasicAA' in methods assert 'ivo://ivoa.net/sso#cookie' not in methods def test_exact_match_overrides_all(self): auth = AuthURLs() auth.add_security_method_for_url('http://example.com/tap', 'custom-token') auth._add_capability_method( 'http://example.com/tap/tables', 'ivo://ivoa.net/sso#cookie' ) auth.add_security_method_for_url( 'http://example.com/tap/tables', securitymethods.ANONYMOUS, exact=True ) methods = auth.allowed_auth_methods('http://example.com/tap/tables') assert methods == {securitymethods.ANONYMOUS} def test_no_match_returns_anonymous(self): auth = AuthURLs() methods = auth.allowed_auth_methods('http://example.com/unknown') assert methods == {securitymethods.ANONYMOUS} @pytest.mark.usefixtures('bearer_token_tables', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [ ['ivo://ivoa.net/sso#BasicAA', 'ivo://ivoa.net/sso#cookie', 'ivo://ivoa.net/sso#OAuth'] ]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_bearer_token_auth(): session = AuthSession() credentials = create_session() credentials.headers["Authorization"] = "Bearer mytoken" session.credentials.set("my-token", credentials) session.add_security_method_for_url("http://example.com/tap", "my-token") service = pyvo.dal.TAPService('http://example.com/tap', session=session) _ = service.tables @pytest.mark.usefixtures('anon_auth_service', 'auth_capabilities') @pytest.mark.parametrize('security_methods', [[None, 'ivo://ivoa.net/sso#FancyAuth']]) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_no_common_auth_negotiation(): session = AuthSession() session.credentials.set_password('testuser', 'hunter2') session.credentials.set_client_certificate('client-certificate.pem') session.credentials.set_cookie('TEST_COOKIE', 'BADCOOKIE') service = pyvo.dal.TAPService('http://example.com/tap', session=session) service.run_async("SELECT * FROM ivoa.obscore") astropy-pyvo-f0fdda3/pyvo/dal/000077500000000000000000000000001521254414300165155ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/__init__.py000066400000000000000000000033211521254414300206250ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .sia import search as imagesearch from .sia2 import search as imagesearch2 from .ssa import search as spectrumsearch from .sla import search as linesearch from .scs import search as conesearch from .tap import search as tablesearch from .query import DALService, DALQuery, DALResults, Record from .sia import SIAService, SIAQuery, SIAResults, SIARecord from .sia2 import SIA2Service, SIA2Query, SIA2Results, ObsCoreRecord from .ssa import SSAService, SSAQuery, SSAResults, SSARecord from .sla import SLAService, SLAQuery, SLAResults, SLARecord from .scs import SCSService, SCSQuery, SCSResults, SCSRecord from .tap import TAPService, TAPQuery, TAPResults, AsyncTAPJob, DEFAULT_JOB_POLL_TIMEOUT, DEFAULT_JOB_WAIT_TIMEOUT from .adhoc import DATALINK_BATCH_CALL_SIZE from .exceptions import ( DALAccessError, DALProtocolError, DALFormatError, DALServiceError, DALQueryError, DALOverflowWarning, DALRateLimitError) __all__ = [ "imagesearch", "spectrumsearch", "linesearch", "conesearch", "tablesearch", "DALService", "imagesearch2", "SIAService", "SIA2Service", "SSAService", "SLAService", "SCSService", "TAPService", "DALQuery", "SIAQuery", "SIA2Query", "SSAQuery", "SLAQuery", "SCSQuery", "TAPQuery", "DALResults", "SIAResults", "SIA2Results", "SSAResults", "SLAResults", "SCSResults", "TAPResults", "Record", "ObsCoreRecord", "SIARecord", "SSARecord", "SLARecord", "SCSRecord", "AsyncTAPJob", "DALAccessError", "DALProtocolError", "DALFormatError", "DALServiceError", "DALQueryError", "DALOverflowWarning", "DALRateLimitError", "DEFAULT_JOB_POLL_TIMEOUT", "DEFAULT_JOB_WAIT_TIMEOUT", "DATALINK_BATCH_CALL_SIZE"] astropy-pyvo-f0fdda3/pyvo/dal/adhoc.py000066400000000000000000001215751521254414300201600ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Datalink classes and mixins """ import numpy as np import warnings import copy import requests from .query import DALResults, DALQuery, DALService, Record from .exceptions import DALServiceError from .vosi import AvailabilityMixin, CapabilityMixin from .params import find_param_by_keyword, get_converter from astropy.io.votable.tree import Param from astropy import units as u from astropy.units import Quantity, Unit from astropy.units import spectral as spectral_equivalencies from astropy.io.votable.tree import Resource, Group, VOTableFile try: from astropy.io.votable.tree import TableElement except ImportError: from astropy.io.votable.tree import Table as TableElement from astropy.utils.collections import HomogeneousList from ..utils.decorators import stream_decode_content from ..utils import vocabularies from .params import PosQueryParam, IntervalQueryParam, TimeQueryParam, EnumQueryParam from ..dam.obscore import POLARIZATION_STATES # calls to DataLink from the results pages are batched for performance # reasons. This is the size of a batch DATALINK_BATCH_CALL_SIZE = 50 SODA_SYNC_IVOID = 'ivo://ivoa.net/std/SODA#sync-1' DATALINK_IVOID = 'ivo://ivoa.net/std/datalink' # MIME types DATALINK_MIME_TYPE = 'application/x-votable+xml;content=datalink' # monkeypatch astropy with group support in RESOURCE def _monkeypath_astropy_resource_groups(): old_group_unknown_tag = Group._add_unknown_tag def new_group_unknown_tag(self, iterator, tag, data, config, pos): if tag == "PARAM": return self._add_param(self, iterator, tag, data, config, pos) else: old_group_unknown_tag(self, iterator, tag, data, config, pos) old_init = Resource.__init__ def new_init(self, *args, **kwargs): old_init(self, *args, **kwargs) self._groups = HomogeneousList(Group) Resource.__init__ = new_init def resource_groups(self): return self._groups Resource.groups = property(resource_groups) def resource_add_group(self, iterator, tag, data, config, pos): group = Group(self, config=config, pos=pos, **data) self.groups.append(group) group.parse(iterator, config) Resource._add_group = resource_add_group old_resource_unknown_tag = Resource._add_unknown_tag def new_resource_unknown_tag(self, iterator, tag, data, config, pos): if tag == "GROUP": return self._add_group(iterator, tag, data, config, pos) else: old_resource_unknown_tag(self, iterator, tag, data, config, pos) Resource._add_unknown_tag = new_resource_unknown_tag if not hasattr(Resource, 'groups'): _monkeypath_astropy_resource_groups() __all__ = [ "AdhocServiceResultsMixin", "DatalinkResultsMixin", "DatalinkRecordMixin", "DatalinkService", "DatalinkQuery", "DatalinkResults", "DatalinkRecord", "SodaRecordMixin", "SodaQuery", "DATALINK_BATCH_CALL_SIZE"] def _get_input_params_from_resource(resource): # get the group with name inputParams group_input_params = next( group for group in resource.groups if group.name == "inputParams") # get only Param elements from the group return { _.name: _ for _ in group_input_params.entries if isinstance(_, Param)} def _get_params_from_resource(resource): return {_.name: _ for _ in resource.params} def _get_accessurl_from_params(params): if "accessURL" not in params: raise DALServiceError("Datalink has no accessURL") return params["accessURL"].value class AdhocServiceResultsMixin: """ Mixin for adhoc:service functionality for results classes. """ def __init__(self, votable, *, url=None, session=None): super().__init__(votable, url=url, session=session) self._adhocservices = list( resource for resource in votable.resources if resource.type == "meta" and resource.utype == "adhoc:service" ) def iter_adhocservices(self): yield from self._adhocservices def get_adhocservice_by_ivoid(self, ivo_id): """ Return the adhoc service starting with the given ivo_id. Parameters ---------- ivo_id : str the ivoid of the service we want to have. Returns ------- Resource The resource element describing the service. """ if isinstance(ivo_id, bytes): ivo_id = ivo_id.decode('utf-8') for adhocservice in self.iter_adhocservices(): if any( all(( param.name == "standardID", param.value.lower().startswith(ivo_id.lower()) )) for param in adhocservice.params ): return adhocservice raise DALServiceError( f"No Adhoc Service with ivo-id {ivo_id}!") def get_adhocservice_by_id(self, id_): """ Return the adhoc service starting with the given service_def id. Parameters ---------- id_ : str the service_def id of the service we want to have. Returns ------- Resource The resource element describing the service. """ for adhocservice in self.iter_adhocservices(): if adhocservice.ID == id_: return adhocservice raise DALServiceError( f"No Adhoc Service with service_def id {id_}!") class DatalinkResultsMixin(AdhocServiceResultsMixin): """ Mixin for datalink functionality for results classes. """ def _iter_datalinks_from_dlblock(self, preserve_order=False): """yields datalinks from the current rows using a datalink service RESOURCE. Parameters ---------- preserve_order : bool True to return the datalinks keeping the order of the current rows. NOTE: There might be a performance penalty for keeping the order as one request per row is sent to the service. When the order of the datalinks is not important, the execution is optimized to query the service in batches. """ def _get_results_tb(rows, dl_batch_tb): # Creates a new DL result table with the given rows as the results data # and the dl_batch_tb as the template for both table fields and other resources tb = VOTableFile() new_table = TableElement(tb) new_table.fields.extend(dl_batch_tb.get_first_table().fields) new_table.create_arrays(len(rows)) for index, row in enumerate(rows): new_table.array[index] = row results_resource = Resource() results_resource.type = "results" results_resource.tables.append(new_table) tb.resources.append(results_resource) # now add all the other resources from the dl_batch_tb for resource in dl_batch_tb.resources: if resource.type == "meta": tb.resources.append(resource) return tb if preserve_order: # one request at the time to preserve order for row in self: self.query = DatalinkQuery.from_resource( row, self._datalink, session=self._session, original_row=None) yield DatalinkResults( self.query.execute(post=True).votable, original_row=row) return # results from batch calls are not guaranteed to be in the same order with # the results rows. To map the links back to the original result rows, # create a dictionary of IDs to result rows, where ID is the value of # the column given by the ref field of the service descriptor (input parameter) original_rows = {} input_params = _get_input_params_from_resource(self._datalink) for name, input_param in input_params.items(): if input_param.ref: for row in self: original_rows[row[input_param.ref]] = row self.query = DatalinkQuery.from_resource( [_ for _ in self], self._datalink, session=self._session, original_row=None) remaining_ids = self.query['ID'] if not remaining_ids: # we are done before starting return current_batch = self.query.execute(post=True) if len(current_batch) == 0: raise DALServiceError( 'Could not retrieve datalinks for: {}'.format( ', '.join([_ for _ in remaining_ids]))) batch_size = 0 # unknown yet batch_size_determined = False # apparent only after first returned batch while remaining_ids: start_remaining_ids = len(remaining_ids) res_votable = current_batch.votable.get_first_table() id_index = 0 # Datalink spec: ID is the first column # Datalink spec: "... all links for a single ID value must be served in # consecutive rows in the output" # Accordingly, the line below should not be necessary but in # practice it might be needed np.ma.MaskedArray.sort(res_votable.array, id_index) last_id = res_votable.array[id_index][0] rows = [] for index, row in enumerate(res_votable.array): if row[id_index] == last_id: rows.append(row) else: yield DatalinkResults(_get_results_tb(rows, current_batch.votable), original_row=original_rows.get(last_id, None)) if not batch_size_determined: batch_size += 1 if last_id in remaining_ids: remaining_ids.remove(last_id) # proceed to the next ID last_id = row[id_index] rows = [row] if last_id in remaining_ids: remaining_ids.remove(last_id) if not batch_size_determined: batch_size += 1 batch_size_determined = True yield DatalinkResults(_get_results_tb(rows, current_batch.votable), original_row=original_rows.get(last_id, None)) if not remaining_ids: return # we are done if len(remaining_ids) == start_remaining_ids: # no progress raise DALServiceError( 'Could not retrieve datalinks for: {}'.format( ', '.join([_ for _ in remaining_ids]))) self.query['ID'] = remaining_ids[:batch_size] current_batch = self.query.execute(post=True) if not current_batch: raise DALServiceError( 'Could not retrieve datalinks for: {}'.format( ', '.join([_ for _ in remaining_ids]))) @staticmethod def _guess_access_format(row): """returns a guess for the format of what __guess_access_url will return. This tries a few heuristics based on how obscore or SIA records might be marked up. If will return None if row does not look as if it contained an access format. Note that the heuristics are tried in sequence; for now, we do not define the sequence of heuristics. """ if hasattr(row, "access_format"): return row.access_format if "access_format" in row: return row["access_format"] access_format = row.getbyutype("obscore:access.format" ) or row.getbyutype("ssa:Access.Format") if access_format: return access_format access_format = row.getbyucd("meta.code.mime" ) or row.getbyucd("VOX:Image_Format") if access_format: return access_format @staticmethod def _guess_access_url(row): """returns a guess for a URI to a data product in row. This tries a few heuristics based on how obscore or SIA records might be marked up. If will return None if row does not look as if it contained a product access url. Note that the heuristics are tried in sequence; for now, we do not define the sequence of heuristics. """ if hasattr(row, "access_url"): return row.access_url if "access_url" in row: return row["access_url"] access_url = row.getbyutype("obscore:access.reference" ) or row.getbyutype("ssa:Access.Reference") if access_url: return access_url access_url = row.getbyucd("meta.ref.url" ) or row.getbyucd("VOX:Image_AccessReference") if access_url: return access_url @staticmethod def _guess_datalink(row, **kwargs): # TODO: we should be more careful about whitespace, case # and perhaps more parameters in the following comparison if row._results._guess_access_format(row) == DATALINK_MIME_TYPE: access_url = row._results._guess_access_url(row) if access_url is not None: return DatalinkResults.from_result_url(access_url, **kwargs) def _iter_datalinks_from_product_rows(self): """yield datalinks from self's rows if they describe datalink-valued products. """ for row in self: # TODO: we should be more careful about whitespace, case # and perhaps more parameters in the following comparison if self._guess_access_format(row) == DATALINK_MIME_TYPE: access_url = self._guess_access_url(row) if access_url is not None: yield DatalinkResults.from_result_url( access_url, original_row=row) def iter_datalinks(self, preserve_order=False): """ Iterates over all datalinks in a DALResult. Parameters ---------- preserve_order : bool True to return the datalinks keeping the order of the current rows. NOTE: There might be a performance penalty for keeping the order as one request per row is sent to the service. When the order of the datalinks is not important, the execution is optimized to query the service in batches. """ if not hasattr(self, '_datalink'): try: self._datalink = self.get_adhocservice_by_ivoid(DATALINK_IVOID) except DALServiceError: self._datalink = None if self._datalink is None: yield from self._iter_datalinks_from_product_rows() else: yield from self._iter_datalinks_from_dlblock( preserve_order=preserve_order) class DatalinkRecordMixin: """ Mixin for record classes, providing functionallity for datalink. - ``getdataset()`` considers datalink. """ def getdatalink(self): """ Retrieve the datalink information for this record. Returns ------- DatalinkResults The datalink results for this record. Raises ------ DALServiceError If no datalink information is found for this record. """ try: datalink = self._results.get_adhocservice_by_ivoid(DATALINK_IVOID) query = DatalinkQuery.from_resource(self, datalink, session=self._session) return query.execute() except DALServiceError as error: datalink = self._results._guess_datalink(self, session=self._session) if datalink is not None: return datalink else: # re-raise the original error if nothing works raise DALServiceError("No datalink found for record.") from error @stream_decode_content def getdataset(self, timeout=None): try: url = next(self.getdatalink().bysemantics('#this')).access_url response = self._session.get(url, stream=True, timeout=timeout) try: response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, url) return response.raw except (DALServiceError, ValueError, StopIteration): # this should go to Record.getdataset() return super().getdataset(timeout=timeout) class DatalinkService(DALService, AvailabilityMixin, CapabilityMixin): """ a representation of a Datalink service """ def __init__(self, baseurl, session=None): """ instantiate a Datalink service Parameters ---------- baseurl : str the base URL that should be used for forming queries to the service. session : object optional session to use for network requests """ super().__init__(baseurl, session=session) # Check if the session has an update_from_capabilities attribute. # This means that the session is aware of IVOA capabilities, # and can use this information in processing network requests. # One such usecase for this is auth. if hasattr(self._session, 'update_from_capabilities'): self._session.update_from_capabilities(self.capabilities) def run_sync(self, id, *, responseformat=None, **keywords): """ runs sync query and returns its result Parameters ---------- id : str the dataset identifier responseformat : str the output format Returns ------- DatalinkResults the query result See Also -------- DatalinkResults """ return self.create_query(id, responseformat=responseformat, **keywords).execute() # alias for service discovery search = run_sync def create_query(self, id, *, responseformat=None, **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- id : str the dataset identifier responseformat : str the output format """ return DatalinkQuery( self.baseurl, id=id, responseformat=responseformat, session=self._session, **keywords) class DatalinkQuery(DALQuery): """ A class for preparing a query to a Datalink service. Query constraints are added via its service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. A session can also optionally be passed in that will be used for network transactions made by this object to remote services. In addition to the search constraint attributes described below, search parameters can be set generically by name via dict semantics. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ @classmethod def from_resource(cls, rows, resource, *, session=None, **kwargs): """ Creates a instance from a number of records and a Datalink Resource. XML Hierarchy: .. code:: xml """ original_row = kwargs.pop("original_row", None) input_params = _get_input_params_from_resource(resource) # get params outside of any group dl_params = _get_params_from_resource(resource) accessurl = _get_accessurl_from_params(dl_params) query_params = dict() for name, input_param in input_params.items(): if input_param.ref: if isinstance(rows, list): query_params[name] = [] for r in rows: query_params[name].append(r[input_param.ref]) else: # scalars are also accepted for backwards compatibility query_params[name] = rows[input_param.ref] elif np.isscalar(input_param.value) and input_param.value: query_params[name] = input_param.value elif ( not np.isscalar(input_param.value) and input_param.value.all() and len(input_param.value) ): query_params[name] = " ".join( str(_) for _ in input_param.value) for name, query_param in kwargs.items(): try: input_param = find_param_by_keyword(name, input_params) if input_param and query_param is None: del query_params[input_param.name] converter = get_converter(input_param) query_params[input_param.name] = converter.serialize( query_param) except KeyError: query_params[name] = query_param return cls( accessurl, session=session, original_row=original_row, **query_params) def __init__( self, baseurl, *, id=None, responseformat=None, session=None, **keywords): """ initialize the query object with the given parameters Parameters ---------- baseurl : str the Datalink baseurl id : str the dataset identifier responseformat : str the output format session : object optional session to use for network requests """ self.original_row = keywords.pop("original_row", None) super().__init__(baseurl, session=session, **keywords) if id is not None: self["ID"] = id if responseformat is not None: self["RESPONSEFORMAT"] = responseformat def execute(self, post=False): """ submit the query and return the results as a DatalinkResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return DatalinkResults( self.execute_votable(post=post), url=self.queryurl, original_row=self.original_row, session=self._session) class DatalinkResults(DatalinkResultsMixin, DALResults): """ The list of matching records resulting from an datalink query. Each record contains a set of metadata that describes an available record matching the query constraints. The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.Record` instances) are typically accessed by iterating over an ``DatalinkResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``DatalinkResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the images. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.Table` via the following conversion: ``table = results.to_table()`` ``DatalinkResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.Record` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def __init__(self, *args, **kwargs): self.original_row = kwargs.pop("original_row", None) super().__init__(*args, **kwargs) def getrecord(self, index): """ return a representation of a datalink result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has the additional function ``getdataset`` Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- Rec a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- pyvo.dal.Record """ return DatalinkRecord(self, index, session=self._session) def bysemantics(self, semantics, *, include_narrower=True): """ return the rows with the dataset identified by the given semantics Parameters ---------- semantics: str or list One or more term(s) from the datalink vocabulary (http://www.ivoa.net/rdf/datalink/core). datalink/core terms may be passed in with or without a leading hash. Free URIs may also be passed an and will be compared literally, i.e., without any URI normalisation. include_narrower: boolean If true, the result will include matches for any term that is narrower than the term passed in. Returns ------- Sequence of DatalinkRecord a sequence of dictionary-like wrappers containing the result record """ # If the URL juggling gets any more complicated here, we ought # to bite the bullet and only deal with full URLs. Sigh. if isinstance(semantics, str): semantics = [semantics] core_terms, other_terms = [], [] for term in semantics: if ":" in term: # it's a full URI, see if it's ours if term.startswith("http://www.ivoa.net/rdf/datalink/core#"): core_terms.append(term.split("#", 1)[-1]) else: other_terms.append(term) else: # it's a local term core_terms.append(term.lstrip("#")) if include_narrower: additional_terms = [] voc = vocabularies.get_vocabulary("datalink/core") for term in core_terms: if term in voc["terms"]: additional_terms.extend(voc["terms"][term]["narrower"]) core_terms = core_terms + additional_terms semantics = {"#" + term for term in core_terms} | set(other_terms) for record in self: if record.semantics in semantics: yield record def clone_byid(self, id, *, original_row=None): """ return a clone of the object with results and corresponding resources matching a given id Returns ------- Sequence of DatalinkRecord a sequence of dictionary-like wrappers containing the result record """ copy_tb = copy.deepcopy(self.votable) votable = copy_tb.get_first_table() # find index of ID column id_index = None for index, field in enumerate(votable.fields): if field.name == 'ID': id_index = index rows = [x for x in votable.array if x[id_index] == id] votable.create_arrays(len(rows)) for index, row in enumerate(rows): votable.array[index] = row # now remove unreferenced services from resources referenced_serviced = [x for x in votable.array['service_def'] if x] # remove customized that are not referenced by the current results for x in copy_tb.resources: if x.ID and x.ID not in referenced_serviced: copy_tb.resources.remove(x) return DatalinkResults(copy_tb, original_row=original_row) def getdataset(self, *, timeout=None): """ return the first row with the dataset identified by semantics #this Returns ------- DatalinkRecord a dictionary-like wrapper containing the result record. """ try: return next(self.bysemantics("#this")).getdataset(timeout=timeout) except StopIteration: raise ValueError("No row with semantics #this found!") def iter_procs(self): """ iterate over all rows with a processing service """ for row in self: if row.service_def: yield row def get_first_proc(self): """ returns the first datalink row with a processing service. """ for proc in self.iter_procs(): return proc raise IndexError("No processing service found in datalink result") @classmethod def from_result_url(cls, result_url, *, session=None, original_row=None): res = super().from_result_url(result_url, session=session) res.original_row = original_row return res class SodaRecordMixin: """ Mixin for soda functionality for record classes. If used, it's result class must have `pyvo.dal.adhoc.AdhocServiceResultsMixin` mixed in. """ def _get_soda_resource(self): try: return self._results.get_adhocservice_by_ivoid(SODA_SYNC_IVOID) except DALServiceError: pass dataformat = self.getdataformat() if dataformat is None: raise DALServiceError( "No SODA Resouces available and no dataformat in record. " "Maybe you forgot to include it into the TAP Query?") if "content=datalink" in dataformat: dataurl = self.getdataurl() if not dataurl: raise DALServiceError( "No dataurl in record, but dataformat contains " "'content=datalink'. Maybe you forgot to include it into " "the TAP Query?") try: datalink_result = DatalinkResults.from_result_url(dataurl) return datalink_result.get_adhocservice_by_ivoid( SODA_SYNC_IVOID) except DALServiceError: pass return None def processed( self, *, circle=None, range=None, polygon=None, band=None, **kwargs): """ Returns processed dataset. Parameters ---------- circle : `astropy.units.Quantity` latitude, longitude and radius range : `astropy.units.Quantity` two longitude + two latitude values describing a rectangle polygon : `astropy.units.Quantity` multiple (at least three) pairs of longitude and latitude points band : `astropy.units.Quantity` two bandwidth or frequency values """ soda_resource = self._get_soda_resource() if soda_resource: soda_query = SodaQuery.from_resource( self, soda_resource, circle=circle, range=range, polygon=polygon, band=band, **kwargs) soda_stream = soda_query.execute_stream() soda_query.raise_if_error() return soda_stream else: return self.getdataset() class DatalinkRecord(DatalinkRecordMixin, SodaRecordMixin, Record): """ a dictionary-like container for data in a record from the results of an datalink query, The commonly accessed metadata which are stadardized by the datalink standard are available as attributes. If the metadatum accessible via an attribute is not available, the value of that attribute will be None. All metadata, including non-standard metadata, are acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ @property def id(self): """ Input identifier """ return self.get("ID", decode=True) @property def access_url(self): """ Link to data or processing service """ row_url = self.get("access_url", decode=True) if not row_url: proc_resource = self._results.get_adhocservice_by_id( self.service_def) dl_params = _get_params_from_resource(proc_resource) row_url = _get_accessurl_from_params(dl_params) return row_url @property def service_def(self): """ reference to the service descriptor resource """ return self.get("service_def", decode=True) @property def error_message(self): """ Error if an access_url cannot be created """ return self.get("error_message", decode=True) @property def description(self): """ Human-readable text describing this link """ return self.get("description", decode=True) @property def semantics(self): """ Term from a controlled vocabulary describing the link """ return self.get("semantics", decode=True) @property def content_type(self): """ Mime-type of the content the link returns """ return self.get("content_type", decode=True) @property def content_length(self): """ Size of the download the link returns """ return int(self["content_length"]) def getdataurl(self): """ return the URL contained in the access URL column which can be used to retrieve the dataset described by this record. Raises :py:class:`~pyvo.dal.DALServiceError` if theres an error. """ if self.error_message: raise DALServiceError(self.error_message) return self.access_url def process(self, **kwargs): """ calls the processing service and returns it's result as a file-like object """ proc_resource = self._results.get_adhocservice_by_id(self.service_def) proc_query = DatalinkQuery.from_resource(self, proc_resource, **kwargs) proc_stream = proc_query.execute_stream() return proc_stream @property def params(self): """ the access parameters of the service behind this datalink row. """ proc_resource = self._results.get_adhocservice_by_id(self.service_def) return proc_resource.params @property def input_params(self): """ a list of input parameters for the service behind this datalink row. """ proc_resource = self._results.get_adhocservice_by_id(self.service_def) return list(_get_input_params_from_resource(proc_resource).values()) class AxisParamMixin: """ Stores the axis parameters (pos, band, time and pol) used in SODA or SIA2 queries """ @property def pos(self): if not hasattr(self, '_pos'): self._pos = PosQueryParam() self['POS'] = self._pos.dal return self._pos @property def band(self): if not hasattr(self, '_band'): self._band = IntervalQueryParam(unit=u.meter, equivalencies=u.spectral()) self['BAND'] = self.band.dal return self._band @property def time(self): if not hasattr(self, '_time'): self._time = TimeQueryParam() self['TIME'] = self.time.dal return self._time @property def pol(self): if not hasattr(self, '_pol'): self._pol = EnumQueryParam(POLARIZATION_STATES) self['POL'] = self.pol.dal return self._pol class SodaQuery(DatalinkQuery, AxisParamMixin): """ a class for preparing a query to a SODA Service. """ def __init__( self, baseurl, *, circle=None, range=None, polygon=None, band=None, **kwargs): super().__init__(baseurl, **kwargs) if circle is not None: self.circle = circle if range is not None: self.range = range if polygon is not None: self.polygon = polygon if band is not None: self.band = band @property def circle(self): """ The CIRCLE parameter defines a spatial region using the circle xtype defined in DALI. """ return getattr(self, '_circle', None) @circle.setter def circle(self, circle): if len(circle) != 3: raise ValueError( "Range must be a sequence with exactly three values") self['CIRCLE'] = PosQueryParam().get_dal_format(circle).\ replace('CIRCLE ', '') setattr(self, '_circle', circle) del self.range del self.polygon @circle.deleter def circle(self): if hasattr(self, '_circle'): delattr(self, '_circle') if 'CIRCLE' in self: del self['CIRCLE'] @property def range(self): """ A rectangular range. """ warnings.warn( "Use pos attribute instead", DeprecationWarning ) return getattr(self, '_circle', None) @range.setter def range(self, range): if len(range) != 4: raise ValueError( "Range must be a sequence with exactly four values") self['POS'] = PosQueryParam().get_dal_format(range) setattr(self, '_range', range) del self.circle del self.polygon @range.deleter def range(self): if hasattr(self, '_range'): delattr(self, '_range') if 'POS' in self and self['POS'].startswith('RANGE'): del self['POS'] @property def polygon(self): """ The POLYGON parameter defines a spatial region using the polygon xtype defined in DALI. """ return getattr(self, '_polygon', None) @polygon.setter def polygon(self, polygon): if len(polygon) < 6: raise ValueError( "Polygon must be a sequence of at least six values") self['POLYGON'] = PosQueryParam().get_dal_format(polygon).\ replace('POLYGON ', '') setattr(self, '_polygon', polygon) del self.circle del self.range @polygon.deleter def polygon(self): if hasattr(self, '_polygon'): delattr(self, '_polygon') if 'POLYGON' in self: del self['POLYGON'] @property def band(self): """ The BAND parameter defines the wavelength interval(s) to be extracted from the data using a floating point interval """ return getattr(self, "_band", None) @band.setter def band(self, band): setattr(self, "_band", band) if not isinstance(band, Quantity): valerr = ValueError( 'Band must be specified with exactly two values, ', 'expressing a frequency or wavelength range' ) try: # assume meters band = band * Unit("meter") if len(band) != 2: raise valerr except (ValueError, TypeError): raise valerr # transform to meters band = band.to(Unit("m"), equivalencies=spectral_equivalencies()) # frequency is counter-proportional to wavelength, so we just sort # it to have the right order again band.sort() self["BAND"] = "{start} {end}".format( start=band.value[0], end=band.value[1]) @band.deleter def band(self): if hasattr(self, '_band'): delattr(self, '_band') if 'BAND' in self: del self['BAND'] astropy-pyvo-f0fdda3/pyvo/dal/dbapi2.py000066400000000000000000000160141521254414300202320ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ An implementation of the Database API v2.0 interface to DAL VOTable responses. This only supports read-only access. """ from .query import Iter apilevel = "2.0" threadsafety = 2 paramstyle = "n/a" __all__ = "STRING BINARY NUMBER DATETIME ROWID".split() class Error(Exception): """ DB-API base exception """ pass class Warning(Exception): """ DB-API warning """ pass class InterfaceError(Error): """ DB-API exception indicating an error related to the database interface rather than the database itself. """ pass class DatabaseError(Error): """ DB-API exception indicating an error related to the database. """ pass class DataError(DatabaseError): """ DB-API exception indicating an error while processing data (e.g. divide by zero, numeric value out-of-range, etc.) """ pass class OperationalError(DatabaseError): """ DB-API exception indicating an error related to the database's operation and not necessarily under the control of the programmer. """ pass class IntegrityError(DatabaseError): """ DB-API exception indicating an inconsistancy in the database integrity. """ pass class InternalError(DatabaseError): """ DB-API exception indicating an internal error that might indicate that a connection or cursor is no longer valid. """ pass class ProgrammingError(DatabaseError): """ DB-API exception indicating an erroneous request (e.g. column not found) """ pass class NotSupportedError(DatabaseError): """ DB-API exception indicating a request is not supported """ pass class TypeObject: def __init__(self, *values): self._values = values @property def id(self): return self._values[0] def __eq__(self, other): if not isinstance(other, TypeObject): return False if other.id in self._values: return True return self.id in other._values def __ne__(self, other): return not self.__eq__(other) STRING = TypeObject(0) BINARY = TypeObject(1) NUMBER = TypeObject(2) DATETIME = TypeObject(3, STRING.id) ROWID = TypeObject(4, NUMBER.id) def connect(source): raise NotSupportedError("Connection objects not supported") class Cursor(Iter): """ A class used to walk through a query response table row by row, accessing the contents of each record (row) of the table. This class implements the Python Database API. """ def __init__(self, results): """Create a cursor instance. The constructor is not typically called by directly applications; rather an instance is obtained from calling a DalQuery's execute(). """ super().__init__(results) self._description = self._mkdesc() self._rowcount = len(self.resultset) self._arraysize = 1 def _mkdesc(self): flds = self.resultset.fieldnames out = [] for name in flds: fld = self.resultset.getdesc(name) typ = STRING if fld.datatype in ("short", "int", "long", "float", "double", "floatComplex", "doubleComplex", "boolean"): typ = NUMBER elif fld.datatype in "char unicodeChar unsignedByte".split(): typ = STRING out.append((name, typ)) return tuple(out) @property def description(self): """ a read-only sequence of 2-item seqences. Each seqence describes a column in the results, giving its name and type_code. """ return self._description @property def rowcount(self): """ the number of rows in the result (read-only) """ return self._rowcount @property def arraysize(self): """ the number of rows that will be returned by returned by a call to fetchmany(). This defaults to 1, but can be changed. """ return self._arraysize @arraysize.setter def arraysize(self, value): if not value: value = 1 self._arraysize = value def infos(self): """Return any INFO elements in the VOTable as a dictionary. Returns ------- dict : A dictionary with each element corresponding to a single INFO, representing the INFO as a name:value pair. """ return self.resultset._infos def fetchone(self): """Return the next row of the query response table. Returns ------- tuple : The response is a tuple wherein each element is the value of the corresponding table field. """ try: rec = self.next() out = [] for name in self.resultset.fieldnames: out.append(rec[name]) return out except StopIteration: return None def fetchmany(self, size=None): """Fetch the next block of rows from the query result. Parameters ---------- size : int The number of rows to return (default: cursor.arraysize). Returns ------- list of tuples : A list of tuples, one per row. An empty sequence is returned when no more rows are available. If a DictCursor is used then the output consists of a list of dictionaries, one per row. """ if not size: size = self.arraysize out = [] for _ in range(size): out.append(self.fetchone()) return out def fetchall(self): """Fetch all remaining rows from the result set. Returns ------- list of tuples : A list of tuples, one per row. An empty sequence is returned when no more rows are available. If a DictCursor is used then the output consists of a list of dictionaries, one per row. """ out = [] for _ in range(self._rowcount - self.pos): out.append(self.fetchone()) return out def scroll(self, value, mode="relative"): """Move the row cursor. Parameters ---------- value : str The number of rows to skip or the row number to position to. mode : str Either "relative" for a relative skip (default), or "absolute" to position to a row by its absolute index within the result set (zero-indexed). """ if mode == "absolute": if value > 0: self.pos = value else: raise DataError("row number not valid:" + str(value)) elif mode == "relative": self.pos += value def close(self): """Close the cursor object and free all resources. This implementation does nothing. It is provided for compliance with the Python Database API. """ # this can remain implemented as "pass" pass astropy-pyvo-f0fdda3/pyvo/dal/exceptions.py000066400000000000000000000302121521254414300212460ustar00rootroot00000000000000""" DAL Exceptions. """ __all__ = [ "DALAccessError", "DALProtocolError", "DALFormatError", "DALServiceError", "DALQueryError", "DALOverflowWarning", "DALRateLimitError"] import re from datetime import datetime, timezone from email.utils import parsedate_to_datetime import requests from astropy.utils.exceptions import AstropyUserWarning class DALAccessError(Exception): """ a base class for failures while accessing a DAL service """ _defreason = "Unknown service access error" def __init__(self, reason=None, url=None): """ initialize the exception with an error message Parameters ---------- reason : str a message describing the cause of the error url : str the query URL that produced the error """ if not reason: reason = self._defreason super().__init__(reason) self._reason = reason self._url = url @classmethod def _typeName(cls, exc): try: return exc.__qualname__ except AttributeError: return re.sub( r"'>$", '', re.sub(r"<(type|class) '(.*\.)?", '', str(type(exc))) ) def __str__(self): return self._reason def __repr__(self): return f"{self._typeName(self)}: {self._reason}" @property def reason(self): """ a string description of what went wrong """ return self._reason @property def url(self): """ the URL that produced the error. If None, the URL is unknown or unset """ return self._url class DALProtocolError(DALAccessError): """ a base exception indicating that a DAL service responded with an error. This can be either an HTTP protocol error or a response format error; both of these are handled by separate subclasses. This base class captures an underlying exception clause. """ _defreason = "Unknown DAL Protocol Error" def __init__(self, reason=None, cause=None, url=None): """ initialize with a string message and an optional HTTP response code Parameters ---------- reason : str a message describing the cause of the error cause : Exception an exception issued as the underlying cause. A value of None indicates that no underlying exception was caught. url : str the query URL that produced the error """ super().__init__(reason, url) self._cause = cause @property def cause(self): """ a string description of what went wrong """ return self._cause class DALFormatError(DALProtocolError): """ an exception indicating that a DAL response contains fatal format errors. This would include XML or VOTable format errors. """ _defreason = "Unknown VOTable Format Error" def __init__(self, cause=None, url=None, reason=None): """ create the exception Parameters ---------- cause : Exception an exception issued as the underlying cause. A value of None indicates that no underlying exception was caught. url the query URL that produced the error reason a message describing the cause of the error """ if cause and not reason: reason = "{}: {}".format( DALAccessError._typeName(cause), str(cause)) super().__init__(reason, cause, url) class DALServiceError(DALProtocolError): """ an exception indicating a failure communicating with a DAL service. Most typically, this is used to report DAL queries that result in an HTTP error. """ _defreason = "Unknown service error" def __init__(self, reason=None, code=None, cause=None, url=None): """ initialize with a string message and an optional HTTP response code Parameters ---------- reason : str a message describing the cause of the error code : int the HTTP error code (as an integer) cause : Exception an exception issued as the underlying cause. A value of None indicates that no underlying exception was caught. url : str the query URL that produced the error """ super().__init__(reason, cause, url) self._code = code @property def code(self): """ the HTTP error code that resulted from the DAL service query, indicating the error. If None, the service did not produce an HTTP response. """ return self._code @classmethod def from_except(cls, exc, url=None): """ create and return DALServiceError exception appropriate for the given exception that represents the underlying cause. """ if isinstance(exc, requests.exceptions.RequestException): try: response = exc.response except AttributeError: response = None code = 0 message = str(exc) # if there is a response, refine the error message if response is not None: code = response.status_code if code == 429: return DALRateLimitError.from_response(response, exc, url) content_type = response.headers.get('content-type', None) if content_type and 'text/plain' in content_type: message = f'{response.text} for {url}' # TODO votable handling return DALServiceError(message, code, exc, url) elif isinstance(exc, Exception): return DALServiceError(f"{cls._typeName(exc)}: {str(exc)}", cause=exc, url=url) else: raise TypeError("from_except: expected Exception") class DALRateLimitError(DALServiceError): """ Exception for HTTP 429 Too Many Requests responses. This exception is raised when a DAL service returns a 429 status code, indicating that the client has exceeded a rate limit. It provides structured access to retry timing information from the Retry-After header via the ``retry_after_seconds``, ``retry_after_raw``, and ``retry_after_date`` properties. """ _defreason = "Rate limit exceeded" def __init__(self, reason=None, *, code=429, cause=None, url=None, retry_after_seconds=None, retry_after_raw=None, retry_after_date=None): """ Initialize the rate limit exception. Parameters ---------- reason : str A message describing the error. code : int The HTTP status code (default 429). cause : Exception The underlying exception that caused this error. url : str The query URL that produced the error. retry_after_seconds : int or None Seconds to wait before retrying. retry_after_raw : str or None Raw Retry-After header value. retry_after_date : datetime or None Parsed datetime if header was HTTP-date format. """ super().__init__(reason, code, cause, url) self._retry_after_seconds = retry_after_seconds self._retry_after_raw = retry_after_raw self._retry_after_date = retry_after_date @property def retry_after_seconds(self): """ Seconds to wait before retrying, or None if not specified. """ return self._retry_after_seconds @property def retry_after_raw(self): """ The raw Retry-After header value, or None if not provided. """ return self._retry_after_raw @property def retry_after_date(self): """ If Retry-After was an HTTP-date, the parsed datetime. None if it was an integer or not provided. """ return self._retry_after_date @classmethod def from_response(cls, response, cause=None, url=None): """ Create a DALRateLimitError from an HTTP response. Parameters ---------- response : requests.Response The HTTP response object with status code 429. cause : Exception The underlying exception that caused this error. url : str The query URL that produced the error. Returns ------- DALRateLimitError A new exception instance with parsed retry information. """ retry_after_raw = None for header_name in response.headers: if header_name.lower() == 'retry-after': retry_after_raw = response.headers[header_name] break retry_after_seconds = None retry_after_date = None if retry_after_raw is not None: retry_after_seconds, retry_after_date = cls._parse_retry_after( retry_after_raw) if url: message = f"Rate limit exceeded (HTTP 429) for {url}" else: message = "Rate limit exceeded (HTTP 429)" if retry_after_seconds is not None: message += f". Retry after {retry_after_seconds} seconds" if retry_after_date: message += f" (at {retry_after_raw})" return cls( reason=message, code=429, cause=cause, url=url, retry_after_seconds=retry_after_seconds, retry_after_raw=retry_after_raw, retry_after_date=retry_after_date ) @staticmethod def _parse_retry_after(value): """ Parse a Retry-After header value. Parameters ---------- value : str The Retry-After header value (integer seconds or date). Returns ------- tuple (seconds, date) where seconds is an int and date is a datetime. For integer format, date is None. For a date format, both are set. Returns (None, None) if parsing fails. """ try: seconds = int(value) return max(0, seconds), None except ValueError: pass try: date = parsedate_to_datetime(value) if date.tzinfo is None: date = date.replace(tzinfo=timezone.utc) now = datetime.now(timezone.utc) seconds = max(0, int((date - now).total_seconds())) return seconds, date except ValueError: return None, None class DALQueryError(DALAccessError): """ an exception indicating an error by a working DAL service while processing a query. Generally, this would be an error that the service successfully detected and consequently was able to respond with a legal error response-- namely, a VOTable document with an INFO element contains the description of the error. Possible errors will include bad usage by the client, such as query-syntax errors. """ _defreason = "Unknown DAL Query Error" def __init__(self, reason=None, label=None, url=None): """ Parameters ---------- reason : str a message describing the cause of the error. This should be set to the content of the INFO error element. label : str the identifying name of the error. This should be the value of the INFO element's value attribute within the VOTable response that describes the error. url : str the query URL that produced the error """ super().__init__(reason, url) self._label = label @property def label(self): """ the identifing name for the error given in the DAL query response. DAL queries that produce an error which is detectable on the server will respond with a VOTable containing an INFO element that contains the description of the error. This property contains the value of the INFO's value attribute. """ return self._label class PyvoUserWarning(AstropyUserWarning): pass class DALOverflowWarning(UserWarning): pass astropy-pyvo-f0fdda3/pyvo/dal/mimetype.py000066400000000000000000000066041521254414300207260ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for parsing and working with mimetypes """ import mimetypes from email.message import Message from astropy.io.fits import HDUList from ..utils.http import use_session mimetypes.add_type('application/fits', '.fits') mimetypes.add_type('application/x-fits', '.fits') mimetypes.add_type('image/fits', '.fits') mimetypes.add_type('text/plain', '.txt') def mime2extension(mimetype, default=None): """ return a recommended file extension for a file with a given MIME-type. This function provides some generic mappings that can be leveraged in implementations of ``suggest_extension()`` in ``Record`` subclasses. >>> mime2extension('application/fits') 'fits' >>> mime2extension('image/jpeg') 'jpg' >>> mime2extension('application/x-zed', 'dat') 'dat' Parameters ---------- mimetype : str the file MIME-type byte-string to convert default : str the default extension to return if one could not be recommended based on ``mimetype``. By convention, this should not include a preceding '.' Returns ------- str the recommended extension without a preceding '.', or the value of ``default`` if no recommendation could be made. """ if not mimetype: return default if isinstance(mimetype, bytes): mimetype = mimetype.decode('utf-8') ext = mimetypes.guess_extension(mimetype, strict=False) if ext is None: return default return ext.lstrip(".") def mime_object_maker(url, mimetype, *, session=None): """ return a data object suitable for the mimetype given. this will either return a astropy fits object or a pyvo DALResults object, a PIL object for conventional images or string for text content. Parameters ---------- url : str the object download url mimetype : str the content mimetype session : object optional session to use for network requests Raises ------ ValueError if the mimetype is missing or cannot be parsed correctly """ if not mimetype: raise ValueError('mimetype required') session = use_session(session) msg = Message() msg['content-type'] = mimetype pp = msg.get_params() full_type = pp[0][0] params = pp[1:] mtype = [x.strip() for x in full_type.split('/')] if '/' in full_type else None if not mtype or len(mtype) > 2: raise ValueError(f"Can't parse mimetype \"{full_type}\"") if mtype[0] == 'text': return session.get(url).text if mtype[1] == 'fits' or mtype[1] == 'x-fits': response = session.get(url) return HDUList.fromstring(response.content) if mtype[0] == 'image': from PIL import Image from io import BytesIO response = session.get(url) bio = BytesIO(response.content) return Image.open(bio) if mtype[1] == 'x-votable' or mtype[1] == 'x-votable+xml': # As soon as there are some kind of recursive data structures, # things start to get messy for param in params: if (param[0].lower() == 'content') and (param[1].lower() == 'datalink'): from .adhoc import DatalinkResults return DatalinkResults.from_result_url(url) from .query import DALResults return DALResults.from_result_url(url) astropy-pyvo-f0fdda3/pyvo/dal/params.py000066400000000000000000000344271521254414300203640ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains functionallity related to VOTABLE Params. """ import numpy as np from collections.abc import MutableSet import abc from astropy import units as u from astropy.coordinates import SkyCoord from astropy.units import Quantity, Unit from astropy.time import Time from astropy.io.votable.converters import ( get_converter as get_votable_converter) from .exceptions import DALServiceError NUMERIC_DATATYPES = {'short', 'int', 'long', 'float', 'double'} def find_param_by_keyword(keyword, params): """ Searches for a specific param by keyword. This function will try to look for the keyword as-is first, and then tries to find the uppercase'd version of the keyword. """ if keyword in params: return params[keyword] keyword = keyword.upper() if keyword in params: return params[keyword] raise KeyError(f'No param named {keyword} defined') registry = dict() def xtype(name): def decorate(cls): registry[name] = cls return cls return decorate def unify_value(func): """ Decorator for serialize method to do unit conversion on input value. The decorator converts the input value to the unit in the input param. """ def wrapper(self, value): if self._param.unit: value = Quantity(value) if not value.unit.to_string(): value = value * Unit(self._param.unit) else: value = value.to(self._param.unit) if isinstance(value, Quantity): value = value.value return func(self, value) return wrapper def get_converter(param): if param.xtype in registry: return registry[param.xtype](param) if param.datatype in NUMERIC_DATATYPES: return Number(param) return Converter(param) class Converter: """ Base class for all converters. Each subclass handles the conversion of a input value based on a specific xtype. """ def __init__(self, param): self._param = param def serialize(self, value): """ Serialize for use in DAL Queries """ if isinstance(value, list): # multiple values return [str(_) for _ in value] else: return str(value) class Number(Converter): def __init__(self, param): if param.datatype not in {'short', 'int', 'long', 'float', 'double'}: pass super().__init__(param) @unify_value def serialize(self, value): """ Serialize for use in DAL Queries """ return get_votable_converter(self._param).output( value, np.zeros_like(value)) @xtype('timestamp') class Timestamp(Converter): def __init__(self, param): if param.datatype != 'char': raise DALServiceError('Datatype is not char') super().__init__(param) def serialize(self, value): """ Serialize time values for use in DAL Queries """ value = Time(value) if value.size == 1: return value.isot else: raise DALServiceError('Expecting a scalar time value') @xtype('interval') class Interval(Number): def __init__(self, param): try: arraysize = int(param.arraysize) if arraysize % 2: raise DALServiceError('Arraysize is not even') except ValueError: raise DALServiceError('Arraysize is not even') super().__init__(param) @unify_value def serialize(self, value): size = np.size(value) if size % 2: raise DALServiceError('Interval size is not even') return super().serialize(value) @xtype('point') class Point(Number): def __init__(self, param): try: arraysize = int(param.arraysize) if arraysize != 2: raise DALServiceError('Point arraysize must be 2') except ValueError: raise DALServiceError('Point arraysize must be 2') super().__init__(param) @unify_value def serialize(self, value): size = np.size(value) if size != 2: raise DALServiceError('Point size must be 2') return super().serialize(value) @xtype('circle') class Circle(Number): def __init__(self, param): arraysize = int(param.arraysize) if arraysize != 3: raise DALServiceError('Circle arraysize must be 3') super().__init__(param) @unify_value def serialize(self, value): size = np.size(value) if size != 3: raise DALServiceError('Circle size must be 3') return super().serialize(value) @xtype('polygon') class Polygon(Number): def __init__(self, param): try: arraysize = int(param.arraysize) if arraysize % 3: raise DALServiceError('Arraysize is not a multiple of 3') except ValueError: if param.arraysize != '*': raise DALServiceError('Arraysize is not a multiple of 3') super().__init__(param) @unify_value def serialize(self, value): size = np.size(value) try: if size % 3: raise DALServiceError('Size is not a multiple of 3') except ValueError: raise DALServiceError('Size is not a multiple of 3') return super().serialize(value) class AbstractDalQueryParam(MutableSet, metaclass=abc.ABCMeta): """ Base class for a DAL parameter. In general, a DAL parameter allows for multiple values which are OR-ed by the service. As such, the class behaves like a set that stores all the values. When a value is added to an attribute, it is validated and formatted to conform to the using service (SIA2 or SODA) and value errors might be raised. The `dal` attribute stores the current list of formatted attributes. Subclasses must override the `dal_formatter` method that formats values for serialization. That includes unit conversions and string representation Duplicates in the set are determine based on the formatted DAL representation of the value. """ def __init__(self, values=()): """ Parameters ---------- values : sequence, optional An initial set of values. """ self.dal = [] self._data = [] for item in values: self.add(item) super().__init__() @abc.abstractmethod def get_dal_format(self, item): """ Method to be provided by subclasses """ return def add(self, item): if item in self: return self._data.append(item) self.dal.append(self.get_dal_format(item)) def discard(self, item): # relies on the fact that both the raw and the formatted # attribute lists have the items in the same order. It # uses the formatted list (normalized units) to get the index. index = self.dal.index(self.get_dal_format(item)) self._data.pop(index) self.dal.pop(index) def __iter__(self): return iter(self._data) def __len__(self): return len(self._data) def __contains__(self, item): # check dal format for duplications since the quantities are known return self.get_dal_format(item) in self.dal class StrQueryParam(AbstractDalQueryParam): """ Representation of a unitless, single-value parameter. The formatter is just a str() cast """ def get_dal_format(self, val): return str(val) class PosQueryParam(AbstractDalQueryParam): """ Representation of a position parameter. Depending on the number of entries, the resulting DAL format is CIRCLE, RANGE or POLYGON. """ def get_dal_format(self, val): """ formats the tuple values into a string to be sent to the service entries in values are either quantities or assumed to be degrees """ self._validate_pos(val) if len(val) == 2 or len(val) == 3: shape = 'CIRCLE' elif len(val) == 4: shape = 'RANGE' elif len(val) > 5 and not len(val) % 2: shape = 'POLYGON' else: raise ValueError( 'Invalid shape {}. Tuple with 3 (CIRCLE), 4 (RANGE) or ' 'even 6 and above (POLYGON) accepted.'.format(val)) return '{} {}'.format(shape, ' '.join( [str(val.to(u.deg).value) if isinstance(val, Quantity) else val.transform_to('icrs').to_string() if isinstance(val, SkyCoord) else str((val * u.deg).value) for val in val])) def _validate_pos(self, pos): """ validates position This has probably been done already somewhere else """ if isinstance(pos, SkyCoord) and pos.size < 4: raise ValueError("radius should be provided in the pos tuple " "for CIRCLE searches.") if len(pos) == 2: if not isinstance(pos[0], SkyCoord): raise ValueError("a 2-length pos should be a coordinate and a radius") if not isinstance(pos[1], Quantity): radius = pos[1] * u.deg else: radius = pos[1] if radius <= 0 * u.deg or radius.to(u.deg) > 90 * u.deg: raise ValueError(f'Invalid circle radius: {radius}') elif len(pos) == 3: self._validate_ra(pos[0]) self._validate_dec(pos[1]) if not isinstance(pos[2], Quantity): radius = pos[2] * u.deg else: radius = pos[2] if radius <= 0 * u.deg or radius.to(u.deg) > 90 * u.deg: raise ValueError(f'Invalid circle radius: {radius}') elif len(pos) == 4: ra_min = pos[0] if isinstance(pos[0], Quantity) else pos[0] * u.deg ra_max = pos[1] if isinstance(pos[1], Quantity) else pos[1] * u.deg dec_min = pos[2] if isinstance(pos[2], Quantity) \ else pos[2] * u.deg dec_max = pos[3] if isinstance(pos[3], Quantity) \ else pos[3] * u.deg self._validate_ra(ra_min) self._validate_ra(ra_max) if ra_max.to(u.deg) < ra_min.to(u.deg): raise ValueError('min > max in ra range: {} > {}'. format(ra_min, ra_max)) self._validate_dec(dec_min) self._validate_dec(dec_max) if dec_max.to(u.deg) < dec_min.to(u.deg): raise ValueError('min > max in dec range: {} > {}'. format(dec_min, dec_max)) else: for i, m in enumerate(pos): if i % 2: self._validate_dec(m) else: self._validate_ra(m) def _validate_ra(self, ra): ra = Quantity(ra, u.deg) if ra.to(u.deg).value < 0 or ra.to(u.deg).value > 360.0: raise ValueError(f'Invalid ra: {ra}') def _validate_dec(self, dec): dec = Quantity(dec, u.deg) if dec.to(u.deg).value < -90.0 or dec.to(u.deg).value > 90.0: raise ValueError(f'Invalid dec: {dec}') class IntervalQueryParam(AbstractDalQueryParam): """ Representation of an interval DAL parameter. """ def __init__(self, unit=None, equivalencies=None): """ Parameters ---------- unit : `astropy.unit` Unit this paramter is represented in DAL format equivalencies: list List of equivalencies for unit conversion """ self._unit = unit self._equivalencies = equivalencies super().__init__() def get_dal_format(self, val): if isinstance(val, (tuple, Quantity)): if len(val) == 1: high = low = val[0] elif len(val) == 2: low = val[0] high = val[1] else: raise ValueError('Too few/many values in interval attribute: {}'. format(val)) else: high = low = val if isinstance(low, (int, float)) and isinstance(high, (int, float))\ and low > high: raise ValueError('Invalid interval: min({}) > max({})'.format( low, high)) if self._unit: if not isinstance(low, Quantity): low = u.Quantity(low, self._unit) low = low.to(self._unit, equivalencies=self._equivalencies).value if not isinstance(high, Quantity): high = Quantity(high, self._unit) high = high.to(self._unit, equivalencies=self._equivalencies).value if low > high: # interval could become invalid during transform (e.g. GHz->m) low, high = high, low return f'{low} {high}' class TimeQueryParam(AbstractDalQueryParam): """ Representation of a timestamp parameter. """ def get_dal_format(self, val): if isinstance(val, tuple): if len(val) == 1: max_time = min_time = val[0] elif len(val) == 2: min_time = val[0] max_time = val[1] else: raise ValueError('Too few/many members in time attribute: {}'. format(val)) else: max_time = min_time = val if not isinstance(min_time, Time): min_time = Time(min_time) if not isinstance(max_time, Time): max_time = Time(max_time) if min_time > max_time: raise ValueError('Invalid time interval: min({}) > max({})'.format( min_time, max_time )) return f'{min_time.mjd} {max_time.mjd}' class EnumQueryParam(AbstractDalQueryParam): """ Representation of an enum parameter """ def __init__(self, allowed_values): """ Parameters ---------- allowed_values : sequence Sequence of allowed values for the enum """ self._allowed = allowed_values super().__init__() def get_dal_format(self, val): if val not in self._allowed: raise ValueError('{} not a valid value from: {}'. format(val, self._allowed)) return str(val) astropy-pyvo-f0fdda3/pyvo/dal/query.py000066400000000000000000001101761521254414300202420ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for walking through the query response of VO data access layer (DAL) queries and general VOTable-based datasets. Most data queries in the VO return a table as a result, usually formatted as a VOTable. Each row of the table describes a single physical or virtual dataset which can be retrieved. For uniformity, datasets are described via standard metadata defined by a data model specific to the type of data being queried. The fields of the data model are identified most generally by their VOClient alias as defined in this interface, or at a lower level by the Utype or UCD of the specific standard and version of the standard being queried. While the data model differs depending upon the type of data being queried, the form of the query response is the same for all classes of data, allowing a common query response interface to be used. An exception to this occurs when querying an astronomical catalog or other externally defined table. In this case there is no VO defined standard data model. Usually the field names are used to uniquely identify table columns. """ __all__ = ["DALService", "DALServiceError", "DALQuery", "DALQueryError", "DALResults", "Record", "UploadList"] import os import shutil import re import requests from collections.abc import Mapping from io import BytesIO, StringIO import collections from warnings import warn from astropy.table import Table, QTable from astropy.io.votable import parse as votableparse from astropy.io.votable.ucd import parse_ucd from astropy.utils.exceptions import AstropyDeprecationWarning from .mimetype import mime_object_maker from .exceptions import (DALFormatError, DALServiceError, DALQueryError, DALOverflowWarning) from .. import samp from ..utils.decorators import stream_decode_content from ..utils.http import use_session class DALService: """ an abstract base class representing a DAL service located a particular endpoint. """ def __init__(self, baseurl, *, session=None, capability_description=None,): """ instantiate the service connecting it to a base URL Parameters ---------- baseurl : str the base URL that should be used for forming queries to the service. session : object optional session to use for network requests capability_description : str, optional the description of the service. """ self._baseurl = baseurl self._capability_description = capability_description self._session = use_session(session) @property def baseurl(self): """ the base URL identifying the location of the service and where queries are submitted (read-only) """ return self._baseurl @property def capability_description(self): """ The service description. """ return self._capability_description def __repr__(self) -> str: return (f"{type(self).__name__}(baseurl : '{self.baseurl}'," f" description : '{self.capability_description}')") def search(self, **keywords): """ send a search query to this service. This implementation has no knowledge of the type of service being queried. The query parameters are given as arbitrary keywords which will be assumed to be understood by the service (i.e. there is no argument checking). The response is a generic DALResults object. Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ q = self.create_query(**keywords) return q.execute() def create_query(self, **keywords): """ create a query object that constraints can be added to and then executed. Returns ------- DALQuery a generic query object """ q = DALQuery(self.baseurl, session=self._session, **keywords) return q def describe(self): """ describe the general information about the DAL service """ print(f'DAL Service at {self.baseurl}') class DALQuery(dict): """ a class for preparing a query to a particular service. Query constraints are added via its service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query can be changed via the baseurl property. A session can also optionally be passed in that will be used for network transactions made by this object to remote services. """ _ex = None def __init__(self, baseurl, *, session=None, **keywords): """ initialize the query object with a baseurl """ if isinstance(baseurl, bytes): baseurl = baseurl.decode("utf-8") self._baseurl = baseurl.rstrip("?") self._session = use_session(session) self.update({key.upper(): value for key, value in keywords.items()}) @property def baseurl(self): """ the base URL that this query will be sent to when one of the execute functions is called. """ return self._baseurl def execute(self): """ submit the query and return the results as a Results subclass instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return DALResults(self.execute_votable(), url=self.queryurl, session=self._session) def execute_raw(self): """ submit the query and return the raw response as a string. No exceptions are raised here because non-2xx responses might still contain payload. They can be raised later by calling ``raise_if_error`` """ f = self.execute_stream() out = None try: out = f.read() finally: f.close() return out @stream_decode_content def execute_stream(self, *, post=False): """ Submit the query and return the raw response as a file stream. No exceptions are raised here because non-2xx responses might still contain payload. They can be raised later by calling ``raise_if_error`` """ self._ex = None response = self.submit(post=post) try: response.raise_for_status() except requests.RequestException as ex: self._ex = DALServiceError.from_except(ex, self.queryurl) return response.raw def submit(self, *, post=False): """ does the actual request """ url = self.queryurl params = {k: v for k, v in self.items()} if post: response = self._session.post(url, data=params, stream=True, allow_redirects=True) else: response = self._session.get(url, params=params, stream=True, allow_redirects=True) return response def execute_votable(self, *, post=False): """ Submit the query and return the results as an AstroPy votable instance. As this is the level where qualified error messages are available, they are raised here instead of in the underlying execute_stream. Returns ------- astropy.io.votable.tree.VOTableFile an Astropy votable object Raises ------ DALServiceError for errors connecting to or communicating with the service DALFormatError for errors parsing the VOTable response See Also -------- astropy.io.votable DALServiceError DALFormatError DALQueryError """ try: return votableparse(self.execute_stream(post=post).read) except Exception as e: self.raise_if_error() raise DALFormatError(e, self.queryurl) def raise_if_error(self): """ Raise if there was an error on http level. """ if self._ex: raise self._ex @property def queryurl(self): """ The URL that encodes the current query. This is the URL that the execute functions will use if called next. """ return self.baseurl class DALResults: """ Results from a DAL query. It provides random access to records in the response. Alternatively, it can provide results via a Cursor (compliant with the Python Database API) or an iterable. """ @classmethod @stream_decode_content def _from_result_url(cls, result_url, session): return session.get(result_url, stream=True).raw @classmethod def from_result_url(cls, result_url, *, session=None): """ Create a result object from a url. Uses the optional session to make the request. """ session = use_session(session) return cls( votableparse(cls._from_result_url(result_url, session).read), url=result_url, session=session) def __init__(self, votable, *, url=None, session=None, client_set_maxrec=None): """ initialize the cursor. This constructor is not typically called by directly applications; rather an instance is obtained from calling a DALQuery's execute(). Parameters ---------- votable : astropy.io.votable.tree.VOTableFile the service response parsed into an astropy.io.votable.tree.VOTableFile instance. url : str the URL that produced the response session : object optional session to use for network requests client_set_maxrec: int the maximum number of records that were requested by the client. Raises ------ DALFormatError if the response VOTable does not contain a response table See Also -------- pyvo.dal.DALFormatError """ self._votable = votable self._url = url self._session = use_session(session) self._client_set_maxrec = client_set_maxrec self._status = self._findstatus(votable) if self._status[0].lower() not in ("ok", "overflow"): raise DALQueryError(self._status[1], self._status[0], url) if self._status[0].lower() == "overflow": self._handle_overflow_warning(client_set_maxrec) self._resultstable = self._findresultstable(votable) if not self._resultstable: raise DALFormatError( reason="VOTable response missing results table", url=url) self._fldnames = tuple( field.name for field in self._resultstable.fields) if not self._fldnames: raise DALFormatError( reason="response table missing column descriptions.", url=url) self._infos = self._findinfos(votable) def _handle_overflow_warning(self, client_set_maxrec=None): """ Handle overflow warning - can be overridden by subclasses. Default implementation issues a generic overflow warning. Subclasses can override this to customize or suppress warnings. Parameters ---------- client_set_maxrec : int, optional The maximum records requested by the client """ warn("Result set limited by user- or server-supplied MAXREC " "parameter.", category=DALOverflowWarning) def check_overflow_warning(self, client_set_maxrec=None): """ Check for overflow warnings and issue them if appropriate. It will check if the results were truncated due to server limits and issue a warning if the number of records returned is less than the maximum records requested by the user. If the results were truncated it distinguishes between expected truncation (where the user requested a maxrec) and unexpected truncation (where the user did not specify a maxrec). If the results were truncated it issues a warning. Parameters ---------- client_set_maxrec : int, optional The maximum records explicitly requested by the client """ if self._status[0].lower() == "overflow": maxrec_to_check = client_set_maxrec if client_set_maxrec is not None else self._client_set_maxrec if (maxrec_to_check is not None and len(self.resultstable.array) == maxrec_to_check): pass else: if maxrec_to_check is not None: warn(f"Results truncated at {len(self.resultstable.array)} records by service limits " f"(you requested maxrec={maxrec_to_check})", category=DALOverflowWarning) else: warn("Results truncated due to server limits. Consider " "setting a maxrec value.", category=DALOverflowWarning) def _findresultstable(self, votable): # this can be overridden to specialize for a particular DAL protocol res = self._findresultsresource(votable) if not res or len(res.tables) < 1: return None return res.tables[0] def _findresultsresource(self, votable): # this can be overridden to specialize for a particular DAL protocol if len(votable.resources) < 1: return None for res in votable.resources: if res.type.lower() == "results": return res return votable.resources[0] def _findstatus(self, votable): # this can be overridden to specialize for a particular DAL protocol # look first in the result resource res = self._findresultsresource(votable) if res: # should be a RESOURCE/INFO info = self._findstatusinfo(res.infos) if info: return (info.value, info.content) # if not there, check inside first table if len(res.tables) > 0: info = self._findstatusinfo(res.tables[0].infos) if info: return (info.value, info.content) # otherwise, look just below the root element info = self._findstatusinfo(votable.infos) if info: return (info.value, info.content) # assume it's okay return ("OK", "QUERY_STATUS not specified") def _findstatusinfo(self, infos): # this can be overridden to specialize for a particular DAL protocol status = None # return the last status to catch potential overflow or error sent # after the results. for info in infos: if info.name.lower() == 'query_status': status = info return status def _findinfos(self, votable): # this can be overridden to specialize for a particular DAL protocol infos = {} res = self._findresultsresource(votable) for info in res.infos: infos[info.name] = info.value for info in votable.infos: infos[info.name] = info.value return infos def __repr__(self): return f" 0: # find the last file written of the form, base-n.ext while n > 0 and not os.path.exists(mkpath(n)): n -= 1 if n > 0: n += 1 if n == 0: # never wrote a file of form, base-n.ext; try base.ext path = os.path.join(dir, f"{base}.{ext}") if not os.path.exists(path): return path n += 1 # find next available name while os.path.exists(mkpath(n)): n += 1 self._dsname_no = n return mkpath(n) def suggest_dataset_basename(self): """ return a default base filename that the dataset available via ``getdataset()`` can be saved as. This function is specialized for a particular service type this record originates from so that it can be used by ``cachedataset()`` via ``make_dataset_filename()``. """ # abstract; specialized for the different service types return "dataset" def suggest_extension(self, *, default=None): """ returns a recommended filename extension for the dataset described by this record. Typically, this would look at the column describing the format and choose an extension accordingly. This function is specialized for a particular service type this record originates from so that it can be used by ``cachedataset()`` via ``make_dataset_filename()``. """ # abstract; specialized for the different service types return default class Iter: def __init__(self, res): self.resultset = res self.pos = 0 def __iter__(self): return self def __next__(self): try: out = self.resultset.getrecord(self.pos) self.pos += 1 return out except IndexError: raise StopIteration() next = __next__ class Upload: """ This class represents a DALI Upload as described in http://www.ivoa.net/documents/DALI/20161101/PR-DALI-1.1-20161101.html#tth_sEc3.4.5 """ def __init__(self, name, content): """ Initialise the Upload object with the given parameters Parameters ---------- name : str Tablename for use in queries content : object If its a file-like object, a string pointing to a local file, a `DALResults` object or a astropy table, `is_inline` will be true and it will expose a file-like object under `fileobj` Otherwise it exposes a URI under `uri` """ try: self._is_file = os.path.isfile(content) except Exception: self._is_file = False self._is_fileobj = hasattr(content, "read") self._is_table = isinstance(content, Table) self._is_resultset = isinstance(content, DALResults) self._inline = any(( self._is_file, self._is_fileobj, self._is_table, self._is_resultset, )) self._name = name self._content = content @property def is_inline(self): """ True if the upload can be inlined """ return self._inline @property def name(self): return self._name def fileobj(self): """ A file-like object for a local resource Raises ------ ValueError if theres no valid local resource """ if not self.is_inline: raise ValueError( "Upload {name} doesn't refer to a local resource".format( name=self.name)) # astropy table if isinstance(self._content, Table): fileobj = BytesIO() self._content.write(output=fileobj, format="votable") fileobj.seek(0) return fileobj elif isinstance(self._content, (BytesIO, StringIO)): return self._content elif isinstance(self._content, DALResults): fileobj = BytesIO() table = self._content.to_table() table.write(output=fileobj, format="votable") fileobj.seek(0) return fileobj fileobj = open(self._content) return fileobj def uri(self): """ The URI pointing to the result """ # TODO: use a async job base class instead of hasattr for inspection if hasattr(self._content, "result_uri"): self._content.raise_if_error() uri = self._content.result_uri else: uri = str(self._content) return uri def query_part(self): """ The query part for use in DALI requests """ if self.is_inline: value = "{name},param:{name}" else: value = "{name},{uri}" return value.format(name=self.name, uri=self.uri()) class UploadList(list): """ This class extends the native python list with utility functions for upload handling """ @classmethod def fromdict(cls, dct): """ Constructs a upload list from a dictionary with table_name: content """ return cls(Upload(key, value) for key, value in dct.items()) def param(self): """ Returns a string suitable for use in UPLOAD parameters """ return ";".join(upload.query_part() for upload in self) _image_mt_re = re.compile(r'^image/(\w+)') _text_mt_re = re.compile(r'^text/(\w+)') _votable_mt_re = re.compile(r'^(\w+)/(x-)?votable(\+\w+)?') astropy-pyvo-f0fdda3/pyvo/dal/scs.py000066400000000000000000000452201521254414300176620ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for searching remote source and observation catalogs A Simple Cone Search (SCS) service allows a client to search for records in a source or observation catalog whose positions are within some minimum distance of a search position (i.e. within a specified "cone" on the sky). This module provides an interface for accessing such services. It is implemented as a specialization of the DAL Query interface. The ``search()`` function provides a simple interface to a service, returning an SCSResults instance as its results which represents the matching records from the catalog. The SCSResults supports access to and iterations over the individual records; these are provided as SCSRecord instances, which give easy access to key metadata in the response, including the ICRS position of the matched source or observation. This module also features the SCSQuery class that provides an interface for building up and remembering a query. The SCSService class can represent a specific service available at a URL endpoint. """ from pyvo.io.vosi.vodataservice import TableParam from astropy.coordinates import SkyCoord from astropy.units import Unit, Quantity from astropy.io.votable.tree import Field from astropy.table import Table from .query import DALResults, DALQuery, DALService, Record from .adhoc import DatalinkResultsMixin, DatalinkRecordMixin __all__ = ["search", "SCSService", "SCSQuery", "SCSResults", "SCSRecord"] def search(url, pos, radius=1.0, *, verbosity=2, **keywords): """ submit a simple Cone Search query that requests objects or observations whose positions fall within some distance from a search position. Parameters ---------- url : str the base URL of the query service. pos : astropy.coordinates.SkyCoord a SkyCoord instance defining the position of the center of the circular search region. converted if it's a iterable containing scalars, assuming icrs degrees. radius : `~astropy.units.Quantity` or float a Quantity instance defining the radius of the circular search region, in degrees. converted if it is another unit. verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, and 3 means as many columns as are available. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SCSResults a container holding a table of matching catalog records Raises ------ DALServiceError for errors connecting to or communicating with the service. DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SCSResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return SCSService(url).search(pos=pos, radius=radius, verbosity=verbosity, **keywords) class SCSService(DALService): """ a representation of a Cone Search service """ def __init__(self, baseurl, *, capability_description=None, session=None): """ instantiate a Cone Search service Parameters ---------- baseurl : str the base URL for submitting search queries to the service. session : object optional session to use for network requests """ super().__init__(baseurl, capability_description=capability_description, session=session) def _get_metadata(self): """ download the metadata resource """ if not hasattr(self, '_metadata'): query = self.create_query(pos=(0, 0), radius=0) metadata = query.execute_votable() setattr(self, '_metadata', metadata) @property def description(self): """ the service description. """ self._get_metadata() try: return getattr(self, '_metadata').description except AttributeError: return None @property def columns(self): """ the available columns on this service """ self._get_metadata() fields = filter( lambda field_or_param: isinstance(field_or_param, Field), self._metadata.iter_fields_and_params() ) try: return [ TableParam.from_field(field) for field in fields] except AttributeError: return [] def search(self, pos, radius=1.0, *, verbosity=2, **keywords): """ submit a simple Cone Search query that requests objects or observations whose positions fall within some distance from a search position. Parameters ---------- pos : astropy.coordinates.SkyCoord a SkyCoord instance defining the position of the center of the circular search region. converted if it's a iterable containing scalars, assuming icrs degrees. radius : `~astropy.units.Quantity` or float a Quantity instance defining the radius of the circular search region, in degrees. converted if it is another unit. verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columns, 3 means as many columns as are available. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SCSResults a container holding a table of matching catalog records Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SCSResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return self.create_query(pos=pos, radius=radius, verbosity=verbosity, **keywords).execute() def create_query(self, pos=None, radius=None, *, verbosity=None, **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- pos : astropy.coordinates.SkyCoord a SkyCoord instance defining the position of the center of the circular search region. converted if it's a iterable containing scalars, assuming icrs degrees. radius : `~astropy.units.Quantity` or float a Quantity instance defining the radius of the circular search region, in degrees. converted if it is another unit. verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columns, 3 means as many columns as are available. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SCSQuery the query instance See Also -------- SCSQuery """ return SCSQuery(self.baseurl, pos=pos, radius=radius, verbosity=verbosity, session=self._session, **keywords) def describe(self): print(self.description) print() rows = [( col.name, col.description, col.unit, col.ucd, col.utype, col.datatype.arraysize, col.datatype.content, ) for col in self.columns] names = ( 'name', 'description', 'unit', 'ucd', 'utype', 'arraysize', 'datatype', ) table = Table(rows=rows, names=names) table.pprint( max_lines=-1, max_width=-1, show_unit=False, show_dtype=False) class SCSQuery(DALQuery): """ a class for preparing a query to a Cone Search service. Query constraints are added via its service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. In addition to the search constraint attributes described below, search parameters can be set generically by name via dict semantics. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ def __init__( self, baseurl, pos=None, radius=None, *, verbosity=None, session=None, **keywords): """ initialize the query object with a baseurl and the given parameters Parameters ---------- pos : astropy.coordinates.SkyCoord a SkyCoord instance defining the position of the center of the circular search region. converted if it's a iterable containing scalars, assuming icrs degrees. radius : `~astropy.units.Quantity` or float a Quantity instance defining the radius of the circular search region, in degrees. converted if it is another unit. verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columns, 3 means as many columns as are available. session : object optional session to use for network requests """ super().__init__(baseurl, session=session) if pos is not None: self.pos = pos if radius is not None: self.radius = radius if verbosity is not None: self.verbosity = verbosity self.update({key.upper(): value for key, value in keywords.items()}) @property def pos(self): """ the position of the center of the circular search region as a `~astropy.coordinates.SkyCoord` instance. """ return getattr(self, "_pos", None) @pos.setter def pos(self, pos): setattr(self, "_pos", pos) if not isinstance(pos, SkyCoord): try: ra, dec = pos except (TypeError, ValueError): raise ValueError( 'Pos must be a sequence with exactly two values, ' 'expressing ra and dec in icrs degrees' ) # assume degrees pos = SkyCoord(ra=ra, dec=dec, unit="deg", frame="icrs") self["RA"] = pos.icrs.ra.deg self["DEC"] = pos.icrs.dec.deg @pos.deleter def pos(self): delattr(self, "_pos") del self["RA"] del self["DEC"] @property def radius(self): """ the radius of the circular region around pos as a `~astropy.units.Quantity` instance. """ return getattr(self, "_radius", None) @radius.setter def radius(self, radius): setattr(self, "_radius", radius) if not isinstance(radius, Quantity): valerr = ValueError("Radius must be exactly one value") try: # assume degrees radius = radius * Unit("deg") except ValueError: raise valerr try: if len(radius): raise valerr except TypeError: pass # len 1 self["SR"] = radius.to(Unit("deg")).value @radius.deleter def radius(self): delattr(self, "_radius") del self["SR"] @property def verbosity(self): """ an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, 3 means as many columns as are available. """ return getattr(self, "_verbosity", None) @verbosity.setter def verbosity(self, verbosity): setattr(self, "_verbosity", verbosity) self["VERB"] = verbosity @verbosity.deleter def verbosity(self): delattr(self, "_verbosity") del self["VERB"] def execute(self): """ submit the query and return the results as a SCSResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return SCSResults(self.execute_votable(), url=self.queryurl, session=self._session) class SCSResults(DatalinkResultsMixin, DALResults): """ The list of matching catalog records resulting from a catalog (SCS) query. Each record contains a set of metadata that describes a source or observation within the requested circular region (i.e. a "cone"). The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.scs.SCSRecord` instances) are typically accessed by iterating over an ``SCSResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``SCSResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the images. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.table.Table` via the following conversion: ``table = results.votable.to_table()`` ``SCSResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.scs.SCSRecord` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def _findresultsresource(self, votable): if len(votable.resources) < 1: return None return votable.resources[0] def _findstatus(self, votable): # this is specialized according to the Conesearch standard # look first in the preferred location: just below the root VOTABLE info = self._findstatusinfo(votable.infos) if info: return (info.name, info.value) # look next in the result resource res = self._findresultsresource(votable) if res: # look for RESOURCE/INFO info = self._findstatusinfo(res.infos) if info: return (info.name, info.value) # if not there, check for a PARAM info = self._findstatusinfo(res.params) if info: return (info.name, info.value) # last resort: VOTABLE/DEFINITIONS/PARAM # NOT SUPPORTED BY astropy; parser has been configured to # raise W22 as exception instead. # assume it's okay return ("OK", "Successful Response") def _findstatusinfo(self, infos): # this can be overridden to specialize for a particular DAL protocol for info in infos: if info.name == "Error": return info def getrecord(self, index): """ return a representation of a conesearch result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has the following additional properties: id, ra, dec Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- SCSRecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return SCSRecord(self, index, session=self._session) class SCSRecord(DatalinkRecordMixin, Record): """ a dictionary-like container for data in a record from the results of an Cone Search (SCS) query, describing a matching source or observation. The commonly accessed metadata which are stadardized by the SCS protocol are available as attributes. All metadata, particularly non-standard metadata, are acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ @property def pos(self): """ the position of the object or observation described by this record. """ return SkyCoord( ra=self.getbyucd("POS_EQ_RA_MAIN"), dec=self.getbyucd("POS_EQ_DEC_MAIN"), unit="deg", frame="icrs") @property def id(self): """ return the identifying name of the object or observation described by this record. """ return self.getbyucd("ID_MAIN") astropy-pyvo-f0fdda3/pyvo/dal/sia.py000066400000000000000000001036001521254414300176430ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for searching for images in a remote archive. A Simple Image Access (SIA) service allows a client to search for images in an archive whose field of view overlaps with a given rectangular region on the sky. The service responds to a search query with a table in which each row represents an image that is available for download. The columns provide metadata describing each image and one column in particular provides the image's download URL (also called the *access reference*, or *acref*). Some SIA services act as a cut-out service; in this case, the query result is a table of images whose field of view matches the requested region and which will be created when accessed via the download URL. This module provides an interface for accessing an SIA service. It is implemented as a specialization of the DAL Query interface. The ``search()`` function support the simplest and most common types of queries, returning an SIAResults instance as its results which represents the matching images from the archive. The SIAResults supports access to and iterations over the individual records; these are provided as SIARecord instances, which give easy access to key metadata in the response, such as the position of the image's center, the image format, the size and shape of the image, and its download URL. The ``SIAService`` class can represent a specific service available at a URL endpoint. """ import re from pyvo.io.vosi.vodataservice import TableParam from astropy.coordinates import SkyCoord from astropy.time import Time from astropy.units import Quantity, Unit import numpy as np from .query import DALResults, DALQuery, DALService, Record from .mimetype import mime2extension from .adhoc import DatalinkResultsMixin, DatalinkRecordMixin, SodaRecordMixin from .. import samp __all__ = ["search", "SIAService", "SIAQuery", "SIAResults", "SIARecord"] def search( url, pos, size=1.0, *, format=None, intersect=None, verbosity=2, **keywords): """ submit a simple SIA query that requests images overlapping a given region Parameters ---------- url : str the base URL for the SIA service pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the rectangular search region. assuming icrs decimal degrees if unit is not specified. size : `~astropy.units.Quantity` class or up to 2 floats. the full rectangular size of the search region along the RA and Dec directions. converted if it's a iterable containing scalars, assuming decimal degrees. format : str the image format(s) of interest. "all" (server-side default) indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata; "image/\\*" indicates a particular image format where * can have values like "fits", "jpeg", "png", etc. intersect : str a token indicating how the returned images should intersect with the search region; recognized values include: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps the search region (server-side default) CENTER select images whose center is within the search region ========= ====================================================== verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, 3 means as many columns as are available. (client-side default == 2) **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SIAResults a container holding a table of matching image records Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SIAResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ service = SIAService(url) return service.search(pos=pos, size=size, format=format, intersect=intersect, verbosity=verbosity, **keywords) class SIAService(DALService): """ a representation of an SIA service """ def __init__(self, baseurl, *, capability_description=None, session=None): """ instantiate an SIA service Parameters ---------- baseurl : str the base URL for submitting search queries to the service. session : object optional session to use for network requests """ super().__init__(baseurl, capability_description=capability_description, session=session) self._description = capability_description def _get_metadata(self): """ the metadata resource element """ if not hasattr(self, "_metadata"): query = self.create_query(format='metadata') metadata = query.execute_votable() setattr(self, "_metadata", metadata) try: setattr(self, "_metadata_resource", metadata.resources[0]) except IndexError: setattr(self, "_metadata_resource", None) @property def description(self): """ the service description. """ self._get_metadata() try: return getattr(self, "_metadata", None).description except AttributeError: return None @property def params(self): """ the service parameters. """ self._get_metadata() try: return getattr(self, "_metadata_resource", None).params except AttributeError: return None @property def columns(self): """ the available columns on this service """ self._get_metadata() fields = getattr(self, '_metadata', None).get_first_table().fields try: return [ TableParam.from_field(field) for field in fields] except AttributeError: return [] def search( self, pos, size=1.0, *, format=None, intersect=None, verbosity=2, **keywords): """ submit a SIA query to this service with the given parameters. Parameters ---------- pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the rectangular search region. assuming icrs decimal degrees if unit is not specified. size : `~astropy.units.Quantity` class or up to 2 floats. the full rectangular size of the search region along the RA and Dec directions. converted if it's a iterable containing scalars, assuming decimal degrees. size : `~astropy.units.Quantity` class or scalar float the size of the rectangular region around pos. assuming icrs decimal degrees if unit is not specified. format : str the image format(s) of interest. "all" (server-side default) indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata; "image/\\*" indicates a particular image format where * can have values like "fits", "jpeg", "png", etc. intersect : str a token indicating how the returned images should intersect with the search region; recognized values include: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps the search region (server-side default) CENTER select images whose center is within the search region ========= ====================================================== verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columns, 3 means as many columns as are available. (client-side default == 2) **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SIAResults a container holding a table of matching catalog records Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SIAResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return self.create_query( pos=pos, size=size, format=format, intersect=intersect, verbosity=verbosity, **keywords).execute() def create_query( self, pos=None, size=None, *, format=None, intersect=None, verbosity=None, **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the rectangular search region. assuming icrs decimal degrees if unit is not specified. size : `~astropy.units.Quantity` class or up to 2 floats. the full rectangular size of the search region along the RA and Dec directions. converted if it's a iterable containing scalars, assuming decimal degrees. size : `~astropy.units.Quantity` class or scalar float the size of the rectangular region around pos. assuming icrs decimal degrees if unit is not specified. format : str the image format(s) of interest. "all" (server-side default) indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata; "image/\\*" indicates a particular image format where * can have values like "fits", "jpeg", "png", etc. intersect : str a token indicating how the returned images should intersect with the search region; recognized values include: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps the search region (server-side default) CENTER select images whose center is within the search region ========= ====================================================== verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, 3 means as many columns as are available. **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SIAQuery the query instance See Also -------- SIAQuery """ return SIAQuery( self.baseurl, pos=pos, size=size, format=format, intersect=intersect, verbosity=verbosity, session=self._session, **keywords) def describe(self): print(self.description) print() class SIAQuery(DALQuery): """ a class for preparing a query to an SIA service. Query constraints are added via its service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. In addition to the search constraint attributes described below, search parameters can be set generically by name via dict semantics. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ def __init__( self, baseurl, pos=None, size=None, *, format=None, intersect=None, verbosity=None, session=None, **keywords): """ initialize the query object with a baseurl and the given parameters Parameters ---------- baseurl : str the base URL for the SIA service pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the rectangular search region. assuming icrs decimal degrees if unit is not specified. size : `~astropy.units.Quantity` class or up to 2 floats. the full rectangular size of the search region along the RA and Dec directions. converted if it's a iterable containing scalars, assuming decimal degrees. size : `~astropy.units.Quantity` class or scalar float the size of the rectangular region around pos. assuming icrs decimal degrees if unit is not specified. format : str the image format(s) of interest. "all" (server-side default) indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata; "image/\\*" indicates a particular image format where * can have values like "fits", "jpeg", "png", etc. intersect : str a token indicating how the returned images should intersect with the search region; recognized values include: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps the search region (server-side default) CENTER select images whose center is within the search region ========= ====================================================== verbosity : int an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, 3 means as many columns as are available. session : object optional session to use for network requests **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. """ super().__init__(baseurl, session=session, **keywords) if pos is not None: self.pos = pos if size is not None: self.size = size if format is not None: self.format = format if intersect is not None: self.intersect = intersect if verbosity is not None: self.verbosity = verbosity @property def pos(self): """ the position of the center of the rectangular search region as a `~astropy.coordinates.SkyCoord` instance. """ return getattr(self, "_pos", None) @pos.setter def pos(self, pos): setattr(self, "_pos", pos) if not isinstance(pos, SkyCoord): try: ra, dec = pos except (TypeError, ValueError): raise ValueError( 'Pos must be a sequence with exactly two values, ' 'expressing ra and dec in icrs degrees' ) # assume degrees pos = SkyCoord(ra=ra, dec=dec, unit="deg", frame="icrs") self["POS"] = "{ra},{dec}".format( ra=pos.icrs.ra.deg, dec=pos.icrs.dec.deg) @pos.deleter def pos(self): delattr(self, "_pos") del self["POS"] @property def size(self): """ the size of the rectangular region around pos as a `~astropy.units.Quantity` instance. """ return getattr(self, "_size", None) @size.setter def size(self, size): setattr(self, "_size", size) if not isinstance(size, Quantity): valerr = ValueError( 'Size must be either a single value or a sequence with two' 'values, expressing degrees' ) try: # assume degrees size = size * Unit("deg") except ValueError: raise valerr try: if len(size) > 2: raise valerr except TypeError: pass # len 1 try: self["SIZE"] = ",".join( str(deg) for deg in size.to(Unit("deg")).value) except TypeError: self["SIZE"] = str(size.to(Unit("deg")).value) @size.deleter def size(self): delattr(self, "_size") del self["SIZE"] @property def format(self): """ the image format(s) of interest. "all" (default) indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata; "image/\\*" indicates a particular image format where * can have values like "fits", "jpeg", "png", etc. """ return getattr(self, "_format", None) @format.setter def format(self, format_): setattr(self, "_format", format_) if not isinstance(format_, list): format_ = format_.split(',') normalized_formats = [] for user_input in format_: if user_input.upper() in ['ALL', 'METADATA', 'GRAPHIC', 'GRAPHIC-ALL']: normalized_formats.append(user_input.upper()) elif user_input.split('-')[0].upper() == 'GRAPHIC': normalized_formats.append(user_input.split('-')[0].upper()+"-"+user_input.split('-')[1]) else: normalized_formats.append(user_input) self["FORMAT"] = ",".join(normalized_formats) @format.deleter def format(self): delattr(self, "_format") del self["FORMAT"] @property def intersect(self): """ a token indicating how the returned images should intersect with the search region; recognized values include: ========= ====================================================== COVERS select images that completely cover the search region ENCLOSED select images that are complete enclosed by the region OVERLAPS select any image that overlaps with the search region CENTER select images whose center is within the search region ========= ====================================================== """ return getattr(self, "_intersect", None) @intersect.setter def intersect(self, intersect): setattr(self, "_intersect", intersect) self["INTERSECT"] = intersect.upper() @intersect.deleter def intersect(self): delattr(self, "_intersect") del self["INTERSECT"] @property def verbosity(self): """ an integer value that indicates the volume of columns to return in the result table. 0 means the minimum set of columsn, 3 means as many columns as are available. """ return getattr(self, "_verbosity", None) @verbosity.setter def verbosity(self, verbosity): setattr(self, "_verbosity", verbosity) self["VERB"] = verbosity @verbosity.deleter def verbosity(self): delattr(self, "_verbosity") del self["VERB"] def execute(self): """ submit the query and return the results as a SIAResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return SIAResults(self.execute_votable(), url=self.queryurl, session=self._session) class SIAResults(DatalinkResultsMixin, DALResults): """ The list of matching images resulting from an image (SIA) query. Each record contains a set of metadata that describes an available image matching the query constraints. The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.sia.SIARecord` instances) are typically accessed by iterating over an ``SIAResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``SIAResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the images. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.table.Table` via the following conversion: ``table = results.votable.to_table()`` ``SIAResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.sia.SIARecord` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def getrecord(self, index): """ return a representation of a sia result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has additional image-specific properties Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- SIARecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return SIARecord(self, index, session=self._session) class SIARecord(SodaRecordMixin, DatalinkRecordMixin, Record): """ a dictionary-like container for data in a record from the results of an image (SIA) search, describing an available image. The commonly accessed metadata which are stadardized by the SIA protocol are available as attributes. If the metadatum accessible via an attribute is not available, the value of that attribute will be None. All metadata, including non-standard metadata, are acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ def getdataformat(self): """ return the mimetype of the dataset described by this record. """ return self.getbyucd("VOX:Image_Format", decode=True) @property def pos(self): """ the position of the object or observation described by this record. """ return SkyCoord( ra=self.getbyucd("POS_EQ_RA_MAIN"), dec=self.getbyucd("POS_EQ_DEC_MAIN"), unit="deg", frame="icrs") # Image Metadata @property def title(self): """ the title of the image """ return self.getbyucd("VOX:Image_Title", decode=True) @property def instr(self): """ the name of the instrument (or instruments) that produced the data that went into this image. """ return self.getbyucd("INST_ID", decode=True) @property def dateobs(self): """ the modified Julian date (MJD) of the mid-point of the observational data that went into the image, as an astropy.time.Time instance """ dateobs = self.getbyucd("VOX:Image_MJDateObs") try: if not dateobs or np.isnan(dateobs): return None except TypeError: # np.isnan can only check floats. If can't check for nan, pass it along pass return Time(dateobs, format="mjd") @property def naxes(self): """ the number of axes in this image. """ return self.getbyucd("VOX:Image_Naxes") @property def naxis(self): """ the lengths of the sides along each axis, in pix, as a astropy Quantity pix """ return self.getbyucd("VOX:Image_Naxis") * Unit("pix") @property def scale(self): """ the scale of the pixels in each image axis, in degrees/pixel, as a astropy Quantity deg / pix """ return self.getbyucd("VOX:Image_Scale") * (Unit("deg") / Unit("pix")) @property def format(self): """ the format of the image """ return self.getbyucd("VOX:Image_Format", decode=True) # Coordinate System Metadata @property def coord_frame(self): """ the coordinate system reference frame, one of the following: "ICRS", "FK5", "FK4", "ECL", "GAL", and "SGAL". """ return self.getbyucd("VOX:STC_CoordRefFrame", decode=True) @property def coord_equinox(self): """ the equinox of the used coordinate system """ return self.getbyucd("VOX:STC_CoordEquinox") @property def coord_projection(self): """ the celestial projection (TAN / ARC / SIN / etc.) """ return self.getbyucd("VOX:WCS_CoordProjection", decode=True) @property def coord_refpixel(self): """ the image pixel coordinates of the WCS reference pixel """ return self.getbyucd("VOX:WCS_CoordRefPixel") @property def coord_refvalue(self): """ the world coordinates of the WCS reference pixel. """ return self.getbyucd("VOX:WCS_CoordRefValue") @property def cdmatrix(self): """ the WCS CD matrix defining the scale and rotation (among other things) of the image. ordered as CD[i,j] = [0,0], [0,1], [1,0], [1,1]. """ return self.getbyucd("VOX:WCS_CDMatrix").reshape((2, 2)) # Spectral Bandpass Metadata @property def bandpass_id(self): """ the bandpass by name (e.g., "V", "SDSS_U", "K", "K-Band", etc.) """ return self.getbyucd("VOX:BandPass_ID", decode=True) @property def bandpass_unit(self): """ the astropy unit used to represent spectral values. """ sia_unit = self.getbyucd("VOX:BandPass_Unit", decode=True) # the standard says this should be `"meters", "hertz", and "keV"', # which in practice everyone has ignored. Still, let's # translate the standard terms. Somewhat more dangerously, # we replace a missing unit with metres; in theory, we should # reject anything but the three terms above, but then 99% # of SIA services would break. And without the assumption of # a metre default, 20% of 2024 SIA1 services would have unusable # bandpasses. astropy_unit = { None: "m", "": "m", "meters": "m", "hertz": "Hz"}.get(sia_unit, sia_unit) return Unit(astropy_unit) @property def bandpass_refvalue(self): """ the characteristic (reference) wavelength, frequency or energy for the bandpass model, as an astropy Quantity of bandpass_unit """ value = self.getbyucd("VOX:BandPass_RefValue") if value is not None and self.bandpass_unit: return Quantity(value, self.bandpass_unit) @property def bandpass_hilimit(self): """ the upper limit of the bandpass as astropy Quantity in bandpass_unit """ value = self.getbyucd("VOX:BandPass_HiLimit") if value is not None and self.bandpass_unit: return Quantity(value, self.bandpass_unit) @property def bandpass_lolimit(self): """ the lower limit of the bandpass as astropy Quantity in bandpass_unit """ value = self.getbyucd("VOX:BandPass_LoLimit") if value is not None and self.bandpass_unit: return Quantity(value, self.bandpass_unit) # Processig Metadata @property def pixflags(self): """ the type of processing done by the image service to produce an output image pixel a string of one or more of the following values: * C -- The image pixels were copied from a source image without change, as when an atlas image or cutout is returned. * F -- The image pixels were computed by resampling an existing image, e.g., to rescale or reproject the data, and were filtered by an interpolator. * X -- The image pixels were computed by the service directly from a primary data set hence were not filtered by an interpolator. * Z -- The image pixels contain valid flux (intensity) values, e.g., if the pixels were resampled with a flux-preserving interpolator. * V -- The image pixels contain some unspecified visualization of the data, hence are suitable for display but not for numerical analysis. """ return self.getbyucd("VOX:Image_PixFlags", decode=True) # Access Metadata @property def acref(self): """ the URL that can be used to retrieve the image """ return self.getbyucd("VOX:Image_AccessReference", decode=True) @property def acref_ttl(self): """ the minimum time to live in seconds of the access reference """ return self.getbyucd("VOX:Image_AccessRefTTL") @property def filesize(self): """ the (estimated) size of the image in bytes """ return self.getbyucd("VOX:Image_FileSize") def getdataurl(self): """ return the URL contained in the access URL column which can be used to retrieve the dataset described by this record. None is returned if no such column exists. """ if self.acref is not None: return self.acref else: return super().getdataurl() def suggest_dataset_basename(self): """ return a default base filename that the dataset available via ``getdataset()`` can be saved as. This function is specialized for a particular service type this record originates from so that it can be used by ``cachedataset()`` via ``make_dataset_filename()``. """ out = self.title if isinstance(out, bytes): out = out.decode('utf-8') if not out: out = "image" else: out = re.sub(r'\s+', '_', out.strip()) return out def suggest_extension(self, *, default='dat'): """ returns a recommended filename extension for the dataset described by this record. Typically, this would look at the column describing the format and choose an extension accordingly. """ return mime2extension(self.format, default) def broadcast_samp(self, *, client_name=None): """ Broadcast the image to ``client_name`` via SAMP """ with samp.connection() as conn: samp.send_image_to( conn, self.getdataurl(), client_name, name=self.suggest_dataset_basename()) astropy-pyvo-f0fdda3/pyvo/dal/sia2.py000066400000000000000000001174301521254414300177330ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for searching for images in a remote archive. A Simple Image Access v2 (SIA2) service allows a client to search for images based on a number of criteria/parameters. The results are represented in ``pyvo.dam.ObsCoreMetadata`` format. The ``SIA2Service`` class can represent a specific service available at a URL endpoint. """ import warnings import numpy as np from astropy import units as u from astropy.time import Time from astropy.utils.decorators import deprecated from astropy.utils.exceptions import AstropyDeprecationWarning from .query import DALResults, DALQuery, DALService, Record from .adhoc import DatalinkResultsMixin, AxisParamMixin, SodaRecordMixin, DatalinkRecordMixin from .exceptions import DALServiceError from .params import IntervalQueryParam, StrQueryParam, EnumQueryParam from .vosi import AvailabilityMixin, CapabilityMixin from ..dam import ObsCoreMetadata, CALIBRATION_LEVELS __all__ = ["search", "SIA2Service", "SIA2Query", "SIA2Results", "ObsCoreRecord"] SIA2_STANDARD_ID = 'ivo://ivoa.net/std/SIA#query-2.0' SIA2_PARAMETERS_DESC = """ pos : single or list of tuples angle units (default: deg) the positional region(s) to be searched for data. Each region can be expressed as a tuple representing a CIRCLE, RANGE or POLYGON as follows: (ra, dec, radius) - for CIRCLE. (angle units - defaults to) (long1, long2, lat1, lat2) - for RANGE (angle units required) (ra, dec, ra, dec, ra, dec ... ) ra/dec points for POLYGON all in angle units band : scalar, tuple(interval) or list of tuples (spectral units (default: meter) the energy interval(s) to be searched for data. time : single or list of `~astropy.time.Time` or compatible strings the time interval(s) to be searched for data. pol : single or list of str from ``pyvo.dam.obscore.POLARIZATION_STATES`` the polarization state(s) to be searched for data. field_of_view : single or list of tuples angle units (default arcsec) the range(s) of field of view (size) to be searched for data spatial_resolution : single or list of tuples angle units required the range(s) of spatial resolution to be searched for data spectral_resolving_power : single or list of tuples the range(s) of spectral resolving power to be searched for data exptime : single or list of tuples time units (default: second) the range(s) of exposure times to be searched for data timeres : single of list of tuples time units (default: second) the range(s) of temporal resolution to be searched for data publisher_did : single or list of str specifies the unique identifier of dataset(s). It is global because it must include information regarding the publisher (obs_publisher_did in ObsCore) collection : single or list of str name of the collection that the data belongs to facility : single or list of str specifies the name of the facility (usually telescope) where the data was acquired. instrument : single or list of str specifies the name of the instrument with which the data was acquired. data_type : 'image'|'cube' specifies the type of the data calib_level : single or list from enum ``pyvo.dam.obscore.CALIBRATION_LEVELS`` specifies the calibration level of the data. Can be a single value or a list of values target_name : single or list of str specifies the name of the target (e.g. the intention of the original science program or observation) res_format : single or list of strings specifies response format(s). max_records : int allows the client to limit the number or records in the response **kwargs : custom query parameters single or a list of values (or tuples for intervals) custom query parameters that a specific service accepts. The values of the parameters need to follow the SIA2 format and represent the appropriate quantities (where applicable). """ def __getattr__(name): if name == 'SIA_PARAMETERS_DESC': warnings.warn("The name SIA_PARAMETERS_DESC is deprecated in v1.5 for SIA v2 services, " "use SIA2_PARAMETERS_DESC instead.", AstropyDeprecationWarning) return SIA2_PARAMETERS_DESC raise AttributeError(f"module {__name__!r} has no attribute {name!r}") def search(url, pos=None, *, band=None, time=None, pol=None, field_of_view=None, spatial_resolution=None, spectral_resolving_power=None, exptime=None, timeres=None, publisher_did=None, facility=None, collection=None, instrument=None, data_type=None, calib_level=None, target_name=None, res_format=None, maxrec=None, session=None, **kwargs): """ submit a simple SIA query to a SIA2 compatible service Parameters ---------- url : str url of the SIA service (base or endpoint) _SIA2_PARAMETERS """ service = SIA2Service(url, session=session) return service.search(pos=pos, band=band, time=time, pol=pol, field_of_view=field_of_view, spatial_resolution=spatial_resolution, spectral_resolving_power=spectral_resolving_power, exptime=exptime, timeres=timeres, publisher_did=publisher_did, facility=facility, collection=collection, instrument=instrument, data_type=data_type, calib_level=calib_level, target_name=target_name, res_format=res_format, maxrec=maxrec, **kwargs) search.__doc__ = search.__doc__.replace('_SIA2_PARAMETERS', SIA2_PARAMETERS_DESC) def _tolist(value): # return value as a list - is there something in Python to do that? if not value: return [] if isinstance(value, list): return value return [value] class SIA2Service(DALService, AvailabilityMixin, CapabilityMixin): """ a representation of an SIA2 service Note that within pyVO, SIA2 services are associated with the (non-existing) standard id ivo://ivoa.net/std/sia2 rather than ivo://ivoa.net/std/sia#query-2.0 as in the standard; users should generally not notice that, though. """ def __init__(self, baseurl, *, capability_description=None, session=None, check_baseurl=True): """ instantiate an SIA2 service Parameters ---------- url : str url - URL of the SIA2service (base or query endpoint) session : object optional session to use for network requests check_baseurl : bool True - use the capabilities end point of the service to get the query end point, False - baseurl is the query end point """ super().__init__(baseurl, capability_description=capability_description, session=session) # Check if the session has an update_from_capabilities attribute. # This means that the session is aware of IVOA capabilities, # and can use this information in processing network requests. # One such usecase for this is auth. if hasattr(self._session, 'update_from_capabilities'): self._session.update_from_capabilities(self.capabilities) self.query_ep = baseurl.strip('&') # default service end point if check_baseurl: for cap in self.capabilities: # assumes that the access URL is the same regardless of the # authentication method except BasicAA which is not supported # in pyvo. So pick any access url as long as it's not if cap.standardid and cap.standardid.lower() == SIA2_STANDARD_ID.lower(): for interface in cap.interfaces: if interface.accessurls and \ not (len(interface.securitymethods) == 1 and interface.securitymethods[0].standardid == 'ivo://ivoa.net/sso#BasicAA'): self.query_ep = interface.accessurls[0].content break else: continue break else: raise DALServiceError("This URL does not seem to correspond to an SIA2 service.") def search(self, pos=None, *, band=None, time=None, pol=None, field_of_view=None, spatial_resolution=None, spectral_resolving_power=None, exptime=None, timeres=None, publisher_did=None, facility=None, collection=None, instrument=None, data_type=None, calib_level=None, target_name=None, res_format=None, maxrec=None, **kwargs): """ Performs a SIA2 search against a SIA2 service See Also -------- pyvo.dal.sia2.SIA2Query """ return SIA2Query(self.query_ep, pos=pos, band=band, time=time, pol=pol, field_of_view=field_of_view, spatial_resolution=spatial_resolution, spectral_resolving_power=spectral_resolving_power, exptime=exptime, timeres=timeres, publisher_did=publisher_did, facility=facility, collection=collection, instrument=instrument, data_type=data_type, calib_level=calib_level, target_name=target_name, res_format=res_format, maxrec=maxrec, session=self._session, **kwargs).execute() class SIA2Query(DALQuery, AxisParamMixin): """ a class very similar to :py:attr:`~pyvo.dal.SIAQuery` class but used to interact with SIA2 services. """ def __init__(self, url, pos=None, *, band=None, time=None, pol=None, field_of_view=None, spatial_resolution=None, spectral_resolving_power=None, exptime=None, timeres=None, publisher_did=None, facility=None, collection=None, instrument=None, data_type=None, calib_level=None, target_name=None, res_format=None, maxrec=None, session=None, **kwargs): """ initialize the query object with a url and the given parameters Note: The majority of the attributes represent constraints used to query the SIA2 service and are represented through lists. Multiple value attributes are OR-ed in the query, however the values of different attributes are AND-ed. Intervals are represented with tuples and open-ended intervals should be expressed with float("-inf") or float("inf"). Eg. For all values less than or equal to 600 use (float(-inf), 600) Additional attribute constraints can be specified (or removed) after this object has been created using the *.add and *_del methods. Parameters ---------- url : url where to send the query request to _SIA2_PARAMETERS session : object optional session to use for network requests Returns ------- SIA2Results a container holding a table of matching image records. Records are represented in IVOA ObsCore format Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SIA2Results pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ super().__init__(url, session=session) for pp in _tolist(pos): self.pos.add(pp) for bb in _tolist(band): self.band.add(bb) for tt in _tolist(time): self.time.add(tt) for pp in _tolist(pol): self.pol.add(pp) for ff in _tolist(field_of_view): self.field_of_view.add(ff) for sp in _tolist(spatial_resolution): self.spatial_resolution.add(sp) for sr in _tolist(spectral_resolving_power): self.spectral_resolving_power.add(sr) for et in _tolist(exptime): self.exptime.add(et) for tr in _tolist(timeres): self.timeres.add(tr) for ii in _tolist(publisher_did): self.publisher_did.add(ii) for ff in _tolist(facility): self.facility.add(ff) for col in _tolist(collection): self.collection.add(col) for inst in _tolist(instrument): self.instrument.add(inst) for dt in _tolist(data_type): self.data_type.add(dt) for cal in _tolist(calib_level): self.calib_level.add(cal) for tt in _tolist(target_name): self.target_name.add(tt) for rf in _tolist(res_format): self.res_format.add(rf) for name, value in kwargs.items(): custom_arg = [] for kw in _tolist(value): if isinstance(kw, tuple): val = f'{kw[0]} {kw[1]}' else: val = str(kw) custom_arg.append(val) self[name] = custom_arg self.maxrec = maxrec __init__.__doc__ = \ __init__.__doc__.replace('_SIA2_PARAMETERS', SIA2_PARAMETERS_DESC) @property def field_of_view(self): if not hasattr(self, '_fov'): self._fov = IntervalQueryParam(u.deg) self['FOV'] = self._fov.dal return self._fov @property def spatial_resolution(self): if not hasattr(self, '_spatres'): self._spatres = IntervalQueryParam(u.arcsec) self['SPATRES'] = self._spatres.dal return self._spatres @property def spectral_resolving_power(self): if not hasattr(self, '_specrp'): self._specrp = IntervalQueryParam() self['SPECRP'] = self._specrp.dal return self._specrp @property def exptime(self): if not hasattr(self, '_exptime'): self._exptime = IntervalQueryParam(u.second) self['EXPTIME'] = self._exptime.dal return self._exptime @property def timeres(self): if not hasattr(self, '_timeres'): self._timeres = IntervalQueryParam(u.second) self['TIMERES'] = self._timeres.dal return self._timeres @property def publisher_did(self): if not hasattr(self, '_publisher_did'): self._publisher_did = StrQueryParam() self['ID'] = self._publisher_did.dal return self._publisher_did @property def facility(self): if not hasattr(self, '_facility'): self._facility = StrQueryParam() self['FACILITY'] = self._facility.dal return self._facility @property def collection(self): if not hasattr(self, '_collection'): self._collection = StrQueryParam() self['COLLECTION'] = self._collection.dal return self._collection @property def instrument(self): if not hasattr(self, '_instrument'): self._instrument = StrQueryParam() self['INSTRUMENT'] = self._instrument.dal return self._instrument @property def data_type(self): if not hasattr(self, '_data_type'): self._data_type = StrQueryParam() self['DPTYPE'] = self._data_type.dal return self._data_type @property def calib_level(self): if not hasattr(self, '_cal'): self._cal = EnumQueryParam(CALIBRATION_LEVELS) self['CALIB'] = self._cal.dal return self._cal @property def target_name(self): if not hasattr(self, '_target'): self._target_name = StrQueryParam() self['TARGET'] = self._target_name.dal return self._target_name @property def res_format(self): if not hasattr(self, '_res_format'): self._res_format = StrQueryParam() self['FORMAT'] = self._res_format.dal return self._res_format @property def maxrec(self): return self._maxrec @maxrec.setter def maxrec(self, val): if val is None: self._maxrec = None return if not isinstance(val, int) or val < 0: raise ValueError(f'maxrec {val} must be non-negative int') self._maxrec = val self['MAXREC'] = str(val) def execute(self): """ submit the query and return the results as a SIA2Results instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ result = SIA2Results(self.execute_votable(), url=self.queryurl, session=self._session) result.check_overflow_warning(self._maxrec) return result class SIA2Results(DatalinkResultsMixin, DALResults): """ The list of matching images resulting from an image (SIA2) query. Each record contains a set of metadata that describes an available image matching the query constraints. The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.sia2.ObsCoreRecord` instances) are typically accessed by iterating over an ``SIA2Results`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``SIA2Results`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the images. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.table.Table` via the following conversion: ``table = results.votable.to_table()`` ``SIA2Results`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.sia2.ObsCoreRecord` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def _handle_overflow_warning(self, client_set_maxrec=None): """ SIA2 overflow warning handling. For SIA2 results we suppress the default overflow warning during initialization because SIA2Query.execute() will call check_overflow_warning() after the results are initialized. """ pass def getrecord(self, index): """ return a representation of a SIA2 result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has additional image-specific properties Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- ObsCoreMetadataRecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return ObsCoreRecord(self, index, session=self._session) class ObsCoreRecord(SodaRecordMixin, DatalinkRecordMixin, Record, ObsCoreMetadata): """ a dictionary-like container for data in a record from the results of an image (SIA2) search, describing an available image in ObsCore format. The commonly accessed metadata which are stadardized by the SIA2 protocol are available as attributes. If the metadatum accessible via an attribute is not available, the value of that attribute will be None. All metadata, including non-standard metadata, are also acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ # OBSERVATION INFO @property def dataproduct_type(self): """ Data product (file content) primary type. This is coded as a string that conveys a general idea of the content and organization of a dataset. """ return self.get('dataproduct_type', decode=True) @property def dataproduct_subtype(self): """ Data product more specific type """ return self.get('dataproduct_subtype', decode=True, default=None) @property def calib_level(self): """ Calibration level of the observation: in {0, 1, 2, 3, 4} """ return self.get('calib_level') # TARGET INFO @property def target_name(self): """ The target_name attribute contains the name of the target of the observation, if any. This is typically the name of an astronomical object, but could be the name of a survey field. The target name is most useful for output, to identify the target of an observation to the user. In queries it is generally better to refer to astronomical objects by position, using a name resolver to convert the target name into a coordinate (when possible). """ return self.get('target_name', decode=True) @property def target_class(self): """ This field indicates the type of object that was pointed for this observation. It is a string with possible values defined in a special vocabulary set to be defined: list of object classes (or types) used by the SIMBAD database, NED or defined in another IVOA vocabulary. """ return self.get('target_class', decode=True, default=None) # DATA DESCRIPTION @property def obs_id(self): """ Collection specific internal ID given by the ObsTAP service """ return self.get('obs_id', decode=True) @property def obs_title(self): """ Brief description of dataset in free format """ return self.get('obs_title', decode=True, default=None) @property def obs_collection(self): """ The name of the collection (DataID.Collection) identifies the data collection to which the data product belongs. A data collection can be any collection of datasets which are alike in some fashion. Typical data collections might be all the data from a particular telescope, instrument, or survey. The value is either the registered shortname for the data collection, the full registered IVOA identifier for the collection, or a data provider defined short name for the collection. Examples: HST/WFPC2, VLT/FORS2, CHANDRA/ACIS-S, etc. """ return self.get('obs_collection', decode=True) @property def obs_create_date(self): """ Date when the dataset was created """ cd = self.get('obs_create_date', default=None) return cd if not cd else Time(cd) @property def obs_creator_name(self): """ The name of the institution or entity which created the dataset. """ return self.get('obs_creator_name', decode=True, default=None) @property def obs_creator_did(self): """ IVOA dataset identifier given by its creator. """ return self.get('obs_creator_did', decode=True, default=None) # CURATION INFORMATION @property def obs_release_date(self): """ Observation release date """ rt = self.get('obs_release_date', default=None, decode=True) return rt if not rt else Time(rt) @property def obs_publisher_did(self): """ ID for the Dataset assigned by the publisher. Note that data from a source (creator_did) can be published by multiple publishers and have assigned multiple publisher data IDs. """ return self.get('obs_publisher_did', decode=True) @property def publisher_id(self): """ IVOA-ID for the Publisher. It will also be globally unique since each publisher has a unique registered publisher ID """ return self.get('publisher_id', decode=True, default=None) @property def bib_reference(self): """ URL or bibcode for documentation. This is a forward link to major publications which reference the dataset. """ return self.get('bib_reference', decode=True, default=None) @property def data_rights(self): """ This parameter allows mentioning the availability of a dataset. Possible values are: public, secure, or proprietary. """ return self.get('data_rights', decode=True, default=None) # ACCESS INFORMATION @property def access_url(self): """ The access_url column contains a URL that can be used to download the data product (as a file of some sort). Access URLs are not guaranteed to remain valid and unchanged indefinitely. To access a specific data product after a period of time (e.g., days or weeks) a query should be performed to obtain a fresh access URL. """ return self.get('access_url', decode=True) @property def access_format(self): """ Content format of the dataset. The value of access_format should be a MIME type, either a standard MIME type, an extended MIME type from the above table, or a new custom MIME type defined by the data provider. """ return self.get('access_format', decode=True) @property def access_estsize(self): """ The approximate size (in kilobytes) of the file available via the access_url. This is used only to gain some idea of the size of a data product before downloading it, hence only an approximate value is required. Provision of dataset size estimates is important whenever it is possible that datasets can be very large. """ return self.get('access_estsize') * 1000 * u.byte # SPATIAL CHARACTERISATION @property def s_ra(self): """ ICRS Right Ascension of the center of the observation """ return self.get('s_ra') * u.deg @property def s_dec(self): """ CRS Declination of the center of the observation """ return self.get('s_dec') * u.deg @property def s_fov(self): """ Approximate size of the covered region as the diameter of a containing circle. For most data products the value given should be large enough to include the entire area of the observation; coverage within the bounded region need not be complete, for example if the specified radius encompasses a rotated rectangular region. For observations which do not have a well-defined boundary, e.g. radio or high energy observations, a characteristic value should be given. The radius attribute provides a simple way to characterize and use (e.g. for discovery computations) the approximate spatial coverage of a data product. The spatial coverage of a data product can be more precisely specified using the region attribute. """ return self.get('s_fov') * u.deg @property def s_region(self): """ Sky region covered by the data product (expressed in ICRS frame). It can be used to precisely specify the covered spatial region of a data product. It is often an exact, or almost exact, representation of the illumination region of a given observation defined in a standard way by the concept of Support in the Characterisation data model. """ return self.get('s_region', decode=True) @property def s_resolution(self): """ Spatial resolution of data specifies a reference value chosen by the data provider for the estimated spatial resolution of the data product in arcseconds. This refers to the smallest spatial feature in the observed signal that can be resolved. In cases where the spatial resolution varies across the field the best spatial resolution (smallest resolvable spatial feature) should be specified. In cases where the spatial frequency sampling of an observation is complex (e.g., interferometry) a typical value for spatial resolution estimate should be given; additional characterisation may be necessary to fully specify the spatial characteristics of the data. """ return self.get('s_resolution') * u.arcsec @property def s_xel1(self): """ Number of elements along the first spatial axis """ return self.get('s_xel1') @property def s_xel2(self): """ Number of elements along the second spatial axis """ return self.get('s_xel2') @property def s_ucd(self): """ UCD for the nature of the spatial axis (pos or u,v data) """ return self.get('s_ucd', decode=True, default=None) @property def s_unit(self): """ Unit used for spatial axis """ return self.get('s_unit', decode=True, default=None) @property def s_resolution_min(self): """ Resolution min value on spatial axis (FHWM of PSF) """ rmin = self.get('s_resolution_min', default=None) return rmin if not rmin else rmin * u.arcsec @property def s_resolution_max(self): """ Resolution max value on spatial axis (FHWM of PSF) """ rmax = self.get('s_resolution_max', default=None) return rmax if not rmax else rmax * u.arcsec @property def s_calib_status(self): """ A string to encode the calibration status along the spatial axis (astrometry). Possible values could be {uncalibrated, raw, calibrated} """ return self.get('s_calib_status', decode=True, default=None) @property def s_stat_error(self): """ This parameter gives an estimate of the astrometric statistical error after the astrometric calibration phase. """ return self.get('s_stat_error', decode=True, default=None) @property def s_pixel_scale(self): """ This corresponds to the sampling precision of the data along the spatial axis. It is stored as a real number corresponding to the spatial sampling period, i.e., the distance in world coordinates system units between two pixel centers. It may contain two values if the pixels are rectangular. """ return self.get('s_pixel_scale', decode=True, default=None) # TIME CHARACTERISATION @property def t_xel(self): """ Number of elements along the time axis """ return self.get('t_xel') @property def t_ref_pos(self): """ Time Axis Reference Position as defined in STC REC, Section 4.4.1.1.1 """ return self.get('t_ref_pos', decode=True, default=None) @property def t_min(self): """ The start time of the observation specified in MJD as an `~astropy.time.Time` instance. In case of data products result of the combination of multiple frames, min time must be the minimum of the start times. ``None`` is used for NaN response values. """ t_min = self.get('t_min') if np.isfinite(t_min): return Time(t_min, format='mjd') else: return None @property def t_max(self): """ The stop time of the observation specified in MJD as an `~astropy.time.Time` instance. In case of data products result of the combination of multiple frames, t_max must be the maximum of the stop times. ``None`` is used for NaN response values. """ t_max = self.get('t_max') if np.isfinite(t_max): return Time(t_max, format='mjd') else: return None @property def t_exptime(self): """ Total exposure time. For simple exposures, this is just the time_bounds size expressed in seconds. For data where the detector is not active at all times (e.g. data products made by combining exposures taken at different times), the t_exptime will be smaller than the time_bounds interval. For data where the xptime is not constant over the entire data product, the median exposure time per pixel is a good way to characterize the typical value. In some cases, exptime is generally used as an indicator of the relative sensitivity (depth) within a single data collection (e.g. obs_collection); data providers should supply a suitable relative value when it is not feasible to define or compute the true exposure time. In case of targeted observations, on the contrary the exposure time is often adjusted to achieve similar signal to noise ratio for different targets. """ return self.get('t_exptime') * u.second @property def t_resolution(self): """ Estimated or average value of the temporal resolution. """ return self.get('t_resolution') * u.second @property def t_calib_status(self): """ Type of time coordinate calibration. Possible values are principally {uncalibrated, calibrated, raw, relative}. This may be extended for specific time domain collections. """ return self.get('t_calib_status', decode=True, default=None) @property def t_stat_error(self): """ Time coord statistical error on the time measurements in seconds """ ter = self.get('t_stat_error', default=None) return ter if not ter else ter * u.second # SPECTRAL CHARACTERISATION @property def em_xel(self): """ Number of elements along the spectral axis """ return self.get('em_xel') @property def em_ucd(self): """ Nature of the spectral axis """ return self.get('em_ucd', decode=True, default=None) @property def em_unit(self): """ Units along the spectral axis """ return self.get('em_unit', decode=True, default=None) @property def em_calib_status(self): """ This attribute of the spectral axis indicates the status of the data in terms of spectral calibration. Possible values are defined in the Characterisation Data Model and belong to {uncalibrated , calibrated, relative, absolute}. """ return self.get('em_calib_status', decode=True, default=None) @property def em_min(self): """ Minimum of the spectral interval covered by the observation """ return self.get('em_min') * u.meter @property def em_max(self): """ Maximum of the spectral interval covered by the observation """ return self.get('em_max') * u.meter @property def em_res_power(self): """ Average estimation for the spectral resolution power stored as a double value, with no unit. """ return self.get("em_res_power") @property def em_res_power_min(self): """ Resolving power min value on spectral axis """ return self.get('em_res_power_min', None) @property def em_res_power_max(self): """ Resolving power max value on spectral axis """ return self.get('em_res_power_max', None) @property def em_resolution(self): """ A mean estimate of the resolution, e.g. Full Width at Half Maximum (FWHM) of the Line Spread Function (or LSF). This can be used for narrow range spectra whereas in the majority of cases, the resolution power is preferable due to the LSF variation along the spectral axis. """ if 'em_resolution' in self.keys(): return self.get('em_resolution') * u.meter return None @property def em_stat_error(self): """ Spectral coord statistical error (accuracy along the spectral axis) """ if 'em_stat_error' in self.keys(): return self.get('em_stat_error') * u.meter return None # OBSERVABLE AXIS @property def o_ucd(self): """ Nature of the observable axis within the data product """ return self.get('o_ucd', decode=True) @property def o_unit(self): """ Units along the observable axis """ return self.get('o_unit', decode=True, default=None) @property def o_calib_status(self): """ Type of calibration applied on the Flux observed (or other observable quantity). """ return self.get('o_calib_status', decode=True, default=None) @property def o_stat_error(self): """ Statistical error on the Observable axis. Note: the return value has the units defined in unit """ return self.get('o_stat_error', decode=True, default=None) # POLARIZATION CHARACTERISATION @property def pol_xel(self): """ Number of different polarization states present in the data. The default value is 0, indicating that polarization was not explicitly observed. Corresponding values are stored in the ``pol`` property """ return self.get('pol_xel') @property def pol_states(self): """ List of polarization states present in the data file. Possible values are: {I Q U V RR LL RL LR XX YY XY YX POLI POLA}. Values in the set are separated by the '/' character. A leading / character must start the list and a trailing / character must end it. It should be ordered following the above list, compatible with the FITS list table for polarization definition. """ return self.get('pol_states', decode=True, default=None) # PROVENANCE @property def instrument_name(self): """ The name of the instrument used for the acquisition of the data """ return self.get('instrument_name', decode=True) @property def facility_name(self): """ Name of the facility or observatory used to collect the data """ return self.get('facility_name', decode=True, default=None) @property def proposal_id(self): """ Identifier of proposal to which observation belongs """ return self.get('proposal_id', default=None, decode=True) @deprecated("1.5", alternative="SIA2Service") class SIAService(SIA2Service): pass @deprecated("1.5", alternative="SIA2Query") class SIAQuery(SIA2Query): pass @deprecated("1.5", alternative="SIA2Results") class SIAResults(SIA2Results): pass astropy-pyvo-f0fdda3/pyvo/dal/sla.py000066400000000000000000000370131521254414300176520ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for searching for spectral line metadata in a remote database. A Simple Line Access (SLA) service allows a client to search for metadata describing atomic and molecular transitions that can result in spectral line emission and absorption. The service responds to a search query with a table in which each row represents a transition that matches the query constraints. The columns provide the metadata describing the transition. This module provides an interface for accessing an SLA service. It is implemented as a specialization of the DAL Query interface. The ``search()`` function support the simplest and most common types of queries, returning an SLAResults instance as its results which represents the matching imagess from the archive. The SLAResults supports access to and iterations over the individual records; these are provided as SLARecord instances, which give easy access to key metadata in the response, such as the transition title. The SLAService class can represent a specific service available at a URL endpoint. """ from pyvo.io.vosi.vodataservice import TableParam from astropy.units import Quantity, Unit from astropy.units import spectral as spectral_equivalencies from astropy.io.votable.tree import Field from astropy.table import Table from .query import DALResults, DALQuery, DALService, Record __all__ = ["search", "SLAService", "SLAQuery", "SLAResults", "SLARecord"] def search(baseurl, wavelength, **keywords): """ submit a simple SLA query that requests spectral lines within a wavelength range Parameters ---------- baseurl : str the base URL for the SLA service wavelength : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SLAResults a container holding a table of matching spectral lines Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. """ service = SLAService(baseurl) return service.search(wavelength, **keywords) class SLAService(DALService): """ a representation of an spectral line catalog (SLA) service """ def __init__(self, baseurl, *, capability_description=None, session=None): """ instantiate an SLA service Parameters ---------- baseurl : str the base URL for submitting search queries to the service. session : object optional session to use for network requests """ super().__init__(baseurl, capability_description=capability_description, session=session) def _get_metadata(self): """ download the metadata resource """ if not hasattr(self, "_metadata"): query = self.create_query(request='getCapabilities') metadata = query.execute_votable() setattr(self, "_metadata", metadata) @property def description(self): """ the service description. If this is not provided during instantiation, this method will download a sample from the service and read the description in the sample's metadata instead. """ if self._description is not None: return self._description self._get_metadata() try: return getattr(self, "_metadata", None).description except AttributeError: return None @property def columns(self): """ the available columns on this service """ self._get_metadata() fields = filter( lambda field_or_param: isinstance(field_or_param, Field), self._metadata.iter_fields_and_params() ) try: return [ TableParam.from_field(field) for field in fields] except AttributeError: return [] def search(self, wavelength, **keywords): """ submit a simple SLA query to this service with the given constraints. This method is provided for a simple but typical SLA queries. For more complex queries, one should create an SLAQuery object via create_query() Parameters ---------- wavelength : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SLAResults a container holding a table of matching spectral lines Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SLAResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return self.create_query(wavelength, **keywords).execute() def create_query(self, wavelength=None, *, request="queryData", **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- wavelength : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. **keywords : additional parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SLAQuery the query instance See Also -------- SLAQuery """ return SLAQuery(baseurl=self.baseurl, wavelength=wavelength, request=request, session=self._session, **keywords) def describe(self): print(self.description) print() rows = [( col.name, col.description, col.unit, col.ucd, col.utype, col.datatype.arraysize, col.datatype.content, ) for col in self.columns] names = ( 'name', 'description', 'unit', 'ucd', 'utype', 'arraysize', 'datatype', ) table = Table(rows=rows, names=names) table.pprint( max_lines=-1, max_width=-1, show_unit=False, show_dtype=False) class SLAQuery(DALQuery): """ a class for preparing a query to an SLA service. Query constraints are added via its service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. In addition to the search constraint attributes described below, search parameters can be set generically by name via the dict semantics. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ def __init__( self, baseurl, wavelength=None, *, request="queryData", session=None): """ initialize the query object with a baseurl and the given parameters Parameters ---------- baseurl : str the base URL for the SLA service wavelength : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. session : object optional session to use for network requests """ super().__init__(baseurl, session=session) if wavelength is not None: self.wavelength = wavelength self.request = request @property def wavelength(self): """ the frequency/wavelength range the observations belong to. """ return getattr(self, "_wavelength", None) @wavelength.setter def wavelength(self, wavelength): setattr(self, "_wavelength", wavelength) if not isinstance(wavelength, Quantity): valerr = ValueError( 'Wavelength range must be a sequence with exactly two values', 'expressing a frequency or wavelength range') try: # assume meters wavelength = wavelength * Unit("meter") except ValueError: raise valerr try: if len(wavelength) != 2: raise valerr except TypeError: raise valerr # transform to meters wavelength = wavelength.to( Unit("m"), equivalencies=spectral_equivalencies()) # frequency is counter-proportional to wavelength, so we just sort it # to have the right order again wavelength.sort() self["WAVELENGTH"] = "{start}/{end}".format( start=wavelength.value[0], end=wavelength.value[1]) @wavelength.deleter def wavelength(self): delattr(self, "_wavelength") del self["WAVELENGTH"] @property def request(self): """ the type of service operation which is being performed """ return getattr(self, "_request", None) @request.setter def request(self, val): setattr(self, "_request", val) self["REQUEST"] = val @request.deleter def request(self): delattr(self, "_request") del self["REQUEST"] def execute(self): """ submit the query and return the results as a SLAResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return SLAResults(self.execute_votable(), url=self.queryurl, session=self._session) class SLAResults(DALResults): """ The list of matching spectral lines resulting from a spectal line catalog (SLA) query. Each record contains a set of metadata that describes a source or observation within the requested circular region (i.e. a "cone"). The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.sla.SLARecord` instances) are typically accessed by iterating over an ``SLAResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``SLAResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the images. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.table.Table` via the following conversion: ``table = results.votable.to_table()`` ``SLAResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.sla.SLARecord` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def getrecord(self, index): """ return a representation of a sla result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has additional image-specific properties Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- SLARecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return SLARecord(self, index, session=self._session) class SLARecord(Record): """ a dictionary-like container for data in a record from the results of an spectral line (SLA) query, describing a spectral line transition. The commonly accessed metadata which are stadardized by the SLA protocol are available as attributes. All metadata, particularly non-standard metadata, are acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ @property def title(self): """ a title/small description of the line transition """ return self.getbyutype("ssldm:Line.title", decode=True) @property def wavelength(self): """ the vacuum wavelength of the line in meters. """ return self.getbyutype("ssldm:Line.wavelength.value") * Unit("m") @property def species_name(self): """ the name of the chemical species that produces the transition. """ return self.getbyutype("ssldm:Line.species.name") @property def status(self): """ the name of the chemical species that produces the transition. """ return self.getbyutype("ssldm:Line.identificationStatus") @property def initial_level(self): """ a description of the initial (higher energy) quantum level """ return self.getbyutype("ssldm:Line.initialLevel.name", decode=True) @property def final_level(self): """ a description of the final (higher energy) quantum level """ return self.getbyutype("ssldm:Line.finalLevel.name") astropy-pyvo-f0fdda3/pyvo/dal/ssa.py000066400000000000000000000642041521254414300176630ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for searching for spectra in a remote archive. A Simple Spectral Access (SSA) service allows a client to search for spectra in an archive whose field of view overlaps with a given cone on the sky. The service responds to a search query with a table in which each row represents an image that is available for download. The columns provide metadata describing each image and one column in particular provides the image's download URL (also called the *access reference*, or *acref*). Some SSA services can create spectra on-the-fly from underlying data (e.g. image cubes); in this case, the query result is a table of images whose aperture matches the requested cone and which will be created when accessed via the download URL. This module provides an interface for accessing an SSA service. It is implemented as a specialization of the DAL Query interface. The ``search()`` function support the simplest and most common types of queries, returning an SSAResults instance as its results which represents the matching imagess from the archive. The SSAResults supports access to and iterations over the individual records; these are provided as SSARecord instances, which give easy access to key metadata in the response, such as the position of the spectrum's aperture, the spectrum format, its frequency range, and its download URL. The SSAService class can represent a specific service available at a URL endpoint. """ import re from pyvo.io.vosi.vodataservice import TableParam from astropy.coordinates import SkyCoord from astropy.time import Time from astropy.units import Quantity, Unit from astropy.units import spectral as spectral_equivalencies from astropy.io.votable.tree import Field from astropy.table import Table import numpy as np from .query import DALResults, DALQuery, DALService, Record from .mimetype import mime2extension from .adhoc import DatalinkResultsMixin, DatalinkRecordMixin, SodaRecordMixin from .. import samp __all__ = ["search", "SSAService", "SSAQuery", "SSAResults", "SSARecord"] def search( baseurl, pos=None, *, diameter=None, band=None, time=None, format=None, **keywords): """ submit a simple SSA query that requests spectra overlapping a given region Parameters ---------- baseurl : str the base URL for the SSA service pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the circular search region. assuming icrs decimal degrees if unit is not specified. diameter : `~astropy.units.Quantity` class or scalar float the diameter of the circular region around pos in which to search. assuming icrs decimal degrees if unit is not specified. band : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. time : `~astropy.time.Time` class or sequence of two strings the datetime range the observations were made in. assuming iso 8601 if format is not specified. format : str the image format(s) of interest. "all" indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SSAResults a container holding a table of matching spectrum records Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including a query syntax error. See Also -------- SSAResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return SSAService(baseurl).search( pos=pos, diameter=diameter, band=band, time=time, format=format, **keywords) class SSAService(DALService): """ a representation of an SSA service """ def __init__(self, baseurl, *, capability_description=None, session=None): """ instantiate an SSA service Parameters ---------- baseurl : str the base URL for submitting search queries to the service. """ super().__init__(baseurl, session=session, capability_description=capability_description) def _get_metadata(self): """ the metadata resource element """ if not hasattr(self, "_metadata"): query = self.create_query(format='metadata') metadata = query.execute_votable() setattr(self, "_metadata", metadata) @property def description(self): """ the service description. """ self._get_metadata() try: return getattr(self, "_metadata", None).description except AttributeError: return None @property def columns(self): """ the available columns on this service """ self._get_metadata() fields = filter( lambda field_or_param: isinstance(field_or_param, Field), self._metadata.iter_fields_and_params() ) try: return [ TableParam.from_field(field) for field in fields] except AttributeError: return [] def search( self, pos=None, *, diameter=None, band=None, time=None, format=None, **keywords): """ submit a SSA query to this service with the given constraints. Parameters ---------- pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the circular search region. assuming icrs decimal degrees if unit is not specified. diameter : `~astropy.units.Quantity` class or scalar float the diameter of the circular region around pos in which to search. assuming icrs decimal degrees if unit is not specified. band : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. time : `~astropy.time.Time` class or sequence of two strings the datetime range the observations were made in. assuming iso 8601 if format is not specified. format : str the image format(s) of interest. "all" indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SSAResults a container holding a table of matching catalog records Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError if the service responds with an error, including query syntax errors See Also -------- SSAResults pyvo.dal.DALServiceError pyvo.dal.DALQueryError """ return self.create_query( pos=pos, diameter=diameter, band=band, time=time, format=format, **keywords).execute() def create_query( self, pos=None, *, diameter=None, band=None, time=None, format=None, request="queryData", **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the circular search region. assuming icrs decimal degrees if unit is not specified. diameter : `~astropy.units.Quantity` class or scalar float the diameter of the circular region around pos in which to search. assuming icrs decimal degrees if unit is not specified. band : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. time : `~astropy.time.Time` class or sequence of two strings the datetime range the observations were made in. assuming iso 8601 if format is not specified. format : str the image format(s) of interest. "all" indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata. **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. Returns ------- SSAQuery the query instance See Also -------- SSAQuery """ return SSAQuery( self.baseurl, pos=pos, diameter=diameter, band=band, time=time, format=format, request=request, session=self._session, **keywords) def describe(self): print(self.description) print() rows = [( col.name, col.description, col.unit, col.ucd, col.utype, col.datatype.arraysize, col.datatype.content, ) for col in self.columns] names = ( 'name', 'description', 'unit', 'ucd', 'utype', 'arraysize', 'datatype', ) table = Table(rows=rows, names=names) table.pprint( max_lines=-1, max_width=-1, show_unit=False, show_dtype=False) class SSAQuery(DALQuery): """ a class for preparing a query to an SSA service. Query constraints are added via its service type-specific properties and methods. Once all the constraints are set, one of the various execute() functions can be called to submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ def __init__( self, baseurl, pos=None, *, diameter=None, band=None, time=None, format=None, request="queryData", session=None, **keywords): """ initialize the query object with a baseurl and the given parameters Parameters ---------- baseurl : str the base URL for the SSA service pos : `~astropy.coordinates.SkyCoord` class or sequence of two floats the position of the center of the circular search region. assuming icrs decimal degrees if unit is not specified. diameter : `~astropy.units.Quantity` class or scalar float the diameter of the circular region around pos in which to search. assuming icrs decimal degrees if unit is not specified. band : `~astropy.units.Quantity` class or sequence of two floats the bandwidth range the observations belong to. assuming meters if unit is not specified. time : `~astropy.time.Time` class or sequence of two strings the datetime range the observations were made in. assuming iso 8601 if format is not specified. format : str the image format(s) of interest. "all" indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata. session : object optional session to use for network requests **keywords : additional case insensitive parameters can be given via arbitrary case insensitive keyword arguments. Where there is overlap with the parameters set by the other arguments to this function, these keywords will override. """ super().__init__(baseurl, session=session) if pos is not None: self.pos = pos if diameter is not None: self.diameter = diameter if band is not None: self.band = band if time is not None: self.time = time if format is not None: self.format = format self.request = request self.update({key.upper(): value for key, value in keywords.items()}) @property def pos(self): """ the position of the center of the circular search region as a `~astropy.coordinates.SkyCoord` instance. """ return getattr(self, "_pos", None) @pos.setter def pos(self, pos): setattr(self, "_pos", pos) if not isinstance(pos, SkyCoord): try: ra, dec = pos except (TypeError, ValueError): raise ValueError( 'Pos must be a sequence with exactly two values, ' 'expressing ra and dec in icrs degrees' ) # assume degrees pos = SkyCoord(ra=ra, dec=dec, unit="deg", frame="icrs") self["POS"] = "{ra},{dec}".format( ra=pos.icrs.ra.deg, dec=pos.icrs.dec.deg) @pos.deleter def pos(self): delattr(self, "_pos") del self["POS"] @property def diameter(self): """ the diameter of the circular region around pos as a `~astropy.units.Quantity` instance. """ return getattr(self, "_diameter", None) @diameter.setter def diameter(self, diameter): setattr(self, "_diameter", diameter) if not isinstance(diameter, Quantity): valerr = ValueError( 'Diameter must be exactly one value, expressing degrees') try: # assume degrees diameter = diameter * Unit("deg") except ValueError: raise valerr try: if len(diameter): raise valerr except TypeError: pass # len 1 self["SIZE"] = diameter.to(Unit("deg")).value @diameter.deleter def diameter(self): delattr(self, "_diameter") del self["SIZE"] @property def band(self): """ the bandwidth range the observations belong to. """ return getattr(self, "_band", None) @band.setter def band(self, band): setattr(self, "_band", band) if not isinstance(band, Quantity): valerr = ValueError( 'Band must be a sequence with exactly two values', 'expressing a frequency or wavelength range') try: # assume meters band = band * Unit("meter") except ValueError: raise valerr try: if len(band) != 2: raise valerr except TypeError: raise valerr # transform to meters band = band.to(Unit("m"), equivalencies=spectral_equivalencies()) # frequency is counter-proportional to wavelength, so we just sort # it to have the right order again band.sort() self["BAND"] = "{start}/{end}".format( start=band.value[0], end=band.value[1]) @band.deleter def band(self): delattr(self, "_band") del self["BAND"] @property def time(self): """ the datetime range the observations were made in. """ return getattr(self, "_time", None) @time.setter def time(self, time): setattr(self, "_time", time) if not isinstance(time, Time): valerr = ValueError( 'Time must be a sequence with exactly two values, ' 'expressing a datetime in ISO 8601' ) try: # assume iso8601 time = Time(time, format="isot") except ValueError: raise valerr try: if len(time) != 2: raise valerr except TypeError: raise valerr # It seems astropy either has seconds and microseconds (the date_hms # subformat) or no seconds at all (the date_hm subformat). SSAP # probably doesn't allow microseconds. Rather than fix this # via a new astropy subformat, let's get by with local string # operations. literals = time.to_value('isot') self["TIME"] = "{start}/{end}".format( start=literals[0].split(".")[0], end=literals[1].split(".")[0]) @time.deleter def time(self): delattr(self, "_time") del self["TIME"] @property def format(self): """ the image format(s) of interest. "all" indicates all available formats; "graphic" indicates graphical images (e.g. jpeg, png, gif; not FITS); "metadata" indicates that no images should be returned--only an empty table with complete metadata. """ return getattr(self, "_format", None) @format.setter def format(self, val): setattr(self, "_format", val) if isinstance(val, (str, bytes)): val = [val] self["FORMAT"] = ",".join(val) @format.deleter def format(self): delattr(self, "_format") del self["FORMAT"] @property def request(self): """ the type of service operation which is being performed """ return getattr(self, "_request", None) @request.setter def request(self, val): setattr(self, "_request", val) self["REQUEST"] = val @request.deleter def request(self): delattr(self, "_request") del self["REQUEST"] def execute(self): """ submit the query and return the results as a SSAResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return SSAResults(self.execute_votable(), url=self.queryurl, session=self._session) class SSAResults(DatalinkResultsMixin, DALResults): """ The list of matching images resulting from a spectrum (SSA) query. Each record contains a set of metadata that describes an available spectrum matching the query constraints. The number of records in the results is by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.ssa.SSARecord` instances) are typically accessed by iterating over an ``SSAResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.DALResults.getcolumn` method. ``SSAResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the spectra. One can access that VOTable directly via the :py:attr:`~pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`~astropy.table.table.Table` via the following conversion: ``table = results.votable.to_table()`` ``SSAResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.ssa.SSARecord` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ def getrecord(self, index): """ return a representation of a sia result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has additional image-specific properties Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- SIARecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return SSARecord(self, index, session=self._session) class SSARecord(SodaRecordMixin, DatalinkRecordMixin, Record): """ a dictionary-like container for data in a record from the results of an SSA query, describing an available spectrum. The commonly accessed metadata which are stadardized by the SSA protocol are available as attributes. If the metadatum accessible via an attribute is not available, the value of that attribute will be None. All metadata, including non-standard metadata, are acessible via the ``get(`` *key* ``)`` function (or the [*key*] operator) where *key* is table column name. """ @property def ra(self): """ return the right ascension of the center of the spectrum """ return self.getbyutype("ssa:Target.Pos")[0] @property def dec(self): """ return the declination of the center of the spectrum """ return self.getbyutype("ssa:Target.Pos")[1] @property def title(self): """ return the title of the spectrum """ return self.getbyutype("ssa:DataID.Title", decode=True) @property def format(self): """ return the file format that this the spectrum is stored in """ return self.getbyutype("ssa:Access.Format", decode=True) @property def dateobs(self): """ return the modified Julien date (MJD) of the mid-point of the observational data that went into the spectrum """ dateobs = self.getbyutype("ssa:DataID.Date", decode=True) try: if not dateobs or np.isnan(dateobs): return None except TypeError: # np.isnan can only check floats. If can't check for nan, pass it along pass return Time(dateobs, format="iso") @property def instr(self): """ return the name of the instrument (or instruments) that produced the data that went into this spectrum. """ return self.getbyutype("ssa:DataID.Instrument", decode=True) @property def acref(self): """ return the URL that can be used to retrieve the spectrum. """ return self.getbyutype("ssa:Access.Reference", decode=True) @property def filesize(self): """ The (estimated) size of the image in bytes """ return self.getbyutype("ssa:Access.Size") def getdataurl(self): """ return the URL contained in the access URL column which can be used to retrieve the dataset described by this record. None is returned if no such column exists. """ dataurl = super().getdataurl() if dataurl is None: return self.acref else: return dataurl def suggest_dataset_basename(self): """ return a default base filename that the dataset available via ``getdataset()`` can be saved as. This function is specialized for a particular service type this record originates from so that it can be used by ``cachedataset()`` via ``make_dataset_filename()``. """ out = self.title if isinstance(out, bytes): out = out.decode('utf-8') if not out: out = "spectrum" else: out = re.sub(r'\s+', '_', out.strip()) return out def suggest_extension(self, *, default=None): """ returns a recommended filename extension for the dataset described by this record. Typically, this would look at the column describing the format and choose an extension accordingly. """ return mime2extension(self.format, default) def broadcast_samp(self, *, client_name=None): """ Broadcast the spectrum to ``client_name`` via SAMP """ with samp.connection() as conn: samp.send_spectrum_to( conn, self.getdataurl(), client_name, name=self.suggest_dataset_basename()) astropy-pyvo-f0fdda3/pyvo/dal/tap.py000066400000000000000000001226261521254414300176640ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for accessing remote source and observation catalogs """ from functools import partial from datetime import datetime import time from time import sleep import random import requests from urllib.parse import urlparse, urljoin from astropy.io.votable import parse as votableparse from .query import ( DALResults, DALQuery, DALService, Record, UploadList, DALServiceError, DALQueryError) from .vosi import AvailabilityMixin, CapabilityMixin, VOSITables from .adhoc import DatalinkResultsMixin, DatalinkRecordMixin, SodaRecordMixin from ..io import vosi, uws from ..io.vosi import tapregext as tr from ..utils.formatting import para_format_desc from ..utils.http import use_session from ..utils.prototype import prototype_feature import xml.etree.ElementTree import io __all__ = [ "search", "escape", "TAPService", "TAPQuery", "AsyncTAPJob", "TAPResults", "DEFAULT_JOB_POLL_TIMEOUT", "DEFAULT_JOB_WAIT_TIMEOUT"] IVOA_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ" # file formats supported by table upload and their corresponding MIME types TABLE_UPLOAD_FORMAT = {'tsv': 'text/tab-separated-values', 'csv': 'text/csv', 'FITSTable': 'application/fits'} # file formats supported by table create and their corresponding MIME types TABLE_DEF_FORMAT = {'VOSITable': 'text/xml', 'VOTable': 'application/x-votable+xml'} # common transient errors that can be retried TRANSIENT_ERRORS = (requests.exceptions.ConnectionError, requests.exceptions.Timeout) # Default timeout (in seconds) for job status polling requests. DEFAULT_JOB_POLL_TIMEOUT = 10 # Default timeout (in seconds) for overall job wait. DEFAULT_JOB_WAIT_TIMEOUT = 600. def _from_ivoa_format(datetime_str): """ parses an ivoa date in ISO 8601 format: YYYY-MM-DDTHH:MM:SS.[mmm]Z :param datetime_str: :return: corresponding datetime object """ # TODO Replace with datetime.fromisoformat(date_string) in Python3.7+ try: # with fraction of seconds first return datetime.strptime(datetime_str, IVOA_DATETIME_FORMAT) except ValueError: # and without return datetime.strptime(datetime_str, "%Y-%m-%dT%H:%M:%SZ") def escape(term): """ escapes a term for use in ADQL """ return str(term).replace("'", "''") def search(url, query, *, language="ADQL", maxrec=None, uploads=None, **keywords): """ submit a Table Access query that returns rows matching the criteria given. Parameters ---------- url : str the base URL of the query service. query : str, dict The query string / parameters language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int the maximum records to return. defaults to the service default uploads : dict a mapping from table names to file like objects containing a votable Returns ------- TAPResults a container holding a table of matching catalog records Raises ------ DALServiceError for errors connecting to or communicating with the service. DALQueryError if the service responds with an error, including a query syntax error. """ service = TAPService(url) return service.search(query, language=language, maxrec=maxrec, uploads=uploads, **keywords) class TAPService(DALService, AvailabilityMixin, CapabilityMixin): """ a representation of a Table Access Protocol service """ _tables = None _examples = None def __init__(self, baseurl, *, capability_description=None, session=None): """ instantiate a Table Access Protocol service Parameters ---------- baseurl : str the base URL that should be used for forming queries to the service. session : object optional session to use for network requests """ try: super().__init__(baseurl, session=session, capability_description=capability_description) # Check if the session has an update_from_capabilities attribute. # This means that the session is aware of IVOA capabilities, # and can use this information in processing network requests. # One such use case for this is auth. if hasattr(self._session, 'update_from_capabilities'): self._session.update_from_capabilities(self.capabilities) except DALServiceError as e: raise DALServiceError(f"Cannot find TAP service at '" f"{baseurl}'.\n\n{str(e)}") from None def get_tap_capability(self): """ returns the (first) TAP capability of this service. Returns ------- A `~pyvo.io.vosi.tapregext.TableAccess` instance. """ for capa in self.capabilities: if isinstance(capa, tr.TableAccess): return capa raise DALServiceError("Invalid TAP service: Does not" " expose a tr:TableAccess capability") @property def tables(self): """ returns tables as a dict-like object """ if self._tables is None: tables_url = f'{self.baseurl}/tables' response = self._session.get(tables_url, params={"detail": "min"}, stream=True) try: response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, tables_url) # requests doesn't decode the content by default response.raw.read = partial(response.raw.read, decode_content=True) self._tables = VOSITables( vosi.parse_tables(response.raw.read), tables_url) return self._tables def _parse_examples(self, examples_uri, *, depth=0): """returns the TAP queries from a DALI examples URI. """ if depth > 5: raise DALServiceError("Suspecting endless recursion when" " parsing TAP examples") response = self._session.get(examples_uri, stream=True) if response.status_code == 404: return [] try: response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, examples_uri) try: root = xml.etree.ElementTree.parse( io.BytesIO(response.content)).getroot() example_elements = root.findall('.//*[@property="query"]') except Exception as ex: raise DALServiceError.from_except(ex, examples_uri) examples = [TAPQuery(self.baseurl, example.text) for example in example_elements] for continuation in root.findall('.//*[@property="continuation"]'): examples.extend( self._parse_examples(continuation.get("href"), depth=depth + 1)) return examples @property def examples(self): """ returns examples as a list of TAPQuery objects """ if self._examples is None: examples_url = f'{self.baseurl}/examples' self._examples = self._parse_examples(examples_url) return self._examples @property def maxrec(self): """ the default output limit. Raises ------ DALServiceError if the property is not exposed by the service """ try: return self.get_tap_capability().outputlimit.default.content except AttributeError: pass raise DALServiceError("Default limit not exposed by the service") @property def hardlimit(self): """ the hard output limit. Raises ------ DALServiceError if the property is not exposed by the service """ try: return self.get_tap_capability().outputlimit.hard.content except AttributeError: pass raise DALServiceError("Hard limit not exposed by the service") @property def upload_methods(self): """ a list of upload methods in form of :py:class:`~pyvo.io.vosi.tapregext.UploadMethod` objects """ return self.get_tap_capability().uploadmethods def run_sync( self, query, *, language="ADQL", maxrec=None, uploads=None, **keywords): """ runs sync query and returns its result Parameters ---------- query : str The query language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int the maximum records to return. defaults to the service default uploads : dict a mapping from table names to objects containing a votable Returns ------- TAPResults the query result See Also -------- TAPResults """ return self.create_query( query, language=language, maxrec=maxrec, uploads=uploads, **keywords).execute() # alias for service discovery search = run_sync def run_async( self, query, *, language="ADQL", maxrec=None, uploads=None, delete=True, timeout=DEFAULT_JOB_WAIT_TIMEOUT, **keywords): """ runs async query and returns its result Parameters ---------- query : str, dict the query string / parameters language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int the maximum records to return. defaults to the service default uploads : dict a mapping from table names to objects containing a votable delete : bool delete the job after fetching the results timeout : float maximum time to wait for job completion in seconds. Default is 600. Returns ------- TAPResult the query instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response See Also -------- AsyncTAPJob """ job = AsyncTAPJob.create( self.baseurl, query, language=language, maxrec=maxrec, uploads=uploads, session=self._session, **keywords) job = job.run().wait(timeout=timeout) try: job.raise_if_error() except DALQueryError: if delete: job.delete() raise result = job.fetch_result(max_retries=keywords.get('max_retries', 0)) if delete: job.delete() return result def submit_job( self, query, *, language="ADQL", maxrec=None, uploads=None, **keywords): """ submit a async query without starting it and returns a AsyncTAPJob object Parameters ---------- query : str the query string / parameters language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int the maximum records to return. defaults to the service default uploads : dict a mapping from table names to objects containing a votable Returns ------- AsyncTAPJob the query instance See Also -------- AsyncTAPJob """ return AsyncTAPJob.create( self.baseurl, query, language=language, maxrec=maxrec, uploads=uploads, session=self._session, **keywords) def create_query( self, query=None, *, mode="sync", language="ADQL", maxrec=None, uploads=None, **keywords): """ create a query object that constraints can be added to and then executed. The input arguments will initialize the query with the given values. Parameters ---------- query : str the query string / parameters mode : str the query mode (sync | async). default "sync" language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int specifies the maximum records to return. defaults to the service default. uploads : dict a mapping from table names to objects containing a votable. """ return TAPQuery( self.baseurl, query, mode=mode, language=language, maxrec=maxrec, uploads=uploads, session=self._session, **keywords) def get_job(self, job_id): """ Returns the job corresponding to an ID. Note that the caller must be able to see the job in the current security context. Parameters ---------- job_id : str ID of the job to view Returns ------- `~pyvo.io.uws.tree.JobSummary` corresponding to the job ID """ response = self._session.get( self.baseurl + '/async/' + job_id, stream=True) response.raw.read = partial(response.raw.read, decode_content=True) return uws.parse_job(response.raw.read) def get_job_list(self, *, phases=None, after=None, last=None, short_description=True): """ lists jobs that the caller can see in the current security context. The list can be filtered on the server side by the phases of the jobs, creation date time or Note that by default jobs in 'ARCHIVED' phase are not returned. Parameters ---------- phases: list of str Union of job phases to filter the results by. after: datetime Return only jobs created after this datetime last: int Return only the most recent number of jobs short_description: flag - True or False If True, the jobs in the list will contain only the information corresponding to the TAP ShortJobDescription object (job ID, phase, run ID, owner ID and creation ID) whereas if False, a separate GET call to each job is performed for the complete job description. Returns ------- list of `~pyvo.io.uws.tree.JobSummary` """ params = {'PHASE': phases, 'LAST': last} if after: if isinstance(after, str): after = _from_ivoa_format(after) params['AFTER'] = after.strftime(IVOA_DATETIME_FORMAT) response = self._session.get(f'{self.baseurl}/async', params=params, stream=True) response.raw.read = partial(response.raw.read, decode_content=True) jobs = uws.parse_job_list(response.raw.read) if not short_description: dj = [] for job in jobs: dj.append(self.get_job(job.jobid)) return dj else: return list(jobs) def describe(self, width=None): """ Print a summary description of this service. This includes the interface capabilities, and the content description if it doesn't contain multiple data collections (in other words, it is not a TAP service). """ if len(self.tables) == 1: description = next(self.tables.values()).description if width: description = para_format_desc(description, width) print(description) print() capabilities = filter( lambda x: not str(x.standardid).startswith( 'ivo://ivoa.net/std/VOSI'), self.capabilities ) for cap in capabilities: cap.describe() print() @prototype_feature('cadc-tb-upload') def create_table(self, name, definition, *, format='VOSITable'): """ Creates a table in the catalog service. Parameters ---------- name: str Name of the table in the TAP service definition: stream (object with a read method) Definition of the table format: str Format of the table definition (VOSITable or VOTable). """ if not name or not definition: raise ValueError( 'table name and definition required in create: {}/{}'. format(name, definition)) if format not in TABLE_DEF_FORMAT.keys(): raise ValueError( 'Table definition file format {} not supported ({})'. format(format, ' '.join(TABLE_DEF_FORMAT.keys()))) headers = {'Content-Type': TABLE_DEF_FORMAT[format]} response = self._session.put(f'{self.baseurl}/tables/{name}', headers=headers, data=definition) response.raise_for_status() @prototype_feature('cadc-tb-upload') def remove_table(self, name): """ Remove a table from the catalog service (Equivalent to drop command in DB). Parameters ---------- name: str Name of the table in the TAP service """ if not name: raise ValueError( 'table name required in : {}'. format(name)) response = self._session.delete( f'{self.baseurl}/tables/{name}') response.raise_for_status() @prototype_feature('cadc-tb-upload') def load_table(self, name, source, *, format='tsv'): """ Loads content to a table Parameters ---------- name: str Name of the table source: stream with a read method Stream containing the data to be loaded format: str Format of the data source: tab-separated values(tsv), comma-separated values (csv) or FITS table (FITSTable) """ if not name or not source: raise ValueError( 'table name and source required in upload: {}/{}'. format(name, source)) if format not in TABLE_UPLOAD_FORMAT.keys(): raise ValueError( 'Table content file format {} not supported ({})'. format(format, ' '.join(TABLE_UPLOAD_FORMAT.keys()))) headers = {'Content-Type': TABLE_UPLOAD_FORMAT[format]} response = self._session.post( f'{self.baseurl}/load/{name}', headers=headers, data=source) response.raise_for_status() @prototype_feature('cadc-tb-upload') def create_index(self, table_name, column_name, *, unique=False): """ Creates a table index in the catalog service. Parameters ---------- table_name: str Name of the table column_name: str Name of the column in the table unique: bool True for unique index, False otherwise """ if not table_name or not column_name: raise ValueError( 'table and column names are required in index: {}/{}'. format(table_name, column_name)) result = self._session.post(f'{self.baseurl}/table-update', data={'table': table_name, 'index': column_name, 'unique': 'true' if unique else 'false'}, allow_redirects=False) if result.status_code == 303: job_url = result.headers['Location'] if not job_url: raise RuntimeError( 'table update job location missing in response') # run the job job = AsyncTAPJob(job_url, session=self._session) job = job.run().wait() job.raise_if_error() # TODO job.delete() else: raise RuntimeError( 'BUG: table update expected status 303 received {}'. format(result.status_code)) class AsyncTAPJob: """ This class represents a UWS TAP Job. """ _job = {} @classmethod def create( cls, baseurl, query, *, language="ADQL", maxrec=None, uploads=None, session=None, **keywords): """ creates a async tap job on the server under ``baseurl`` Parameters ---------- baseurl : str the TAP baseurl query : str the query string language : str specifies the query language, default ADQL. useful for services which allow to use the backend query language. maxrec : int the maximum records to return. defaults to the service default uploads : dict a mapping from table names to objects containing a votable session : object optional session to use for network requests """ tapquery = TAPQuery( baseurl, query, mode="async", language=language, maxrec=maxrec, uploads=uploads, session=session, **keywords) response = tapquery.submit() try: response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, tapquery.queryurl) job = cls(response.url, session=session) job._client_set_maxrec = maxrec return job def __init__(self, url, *, session=None, delete=True): """ initialize the job object with the given url and fetch remote values Parameters ---------- url : str the job url session : object, optional session to use for network requests delete : bool, optional whether to delete the job when exiting (default: True) """ self._url = url self._session = use_session(session) self._delete_on_exit = delete self._client_set_maxrec = None self._update() def __enter__(self): """ Enters the context """ return self def __exit__(self, exc_type, exc_val, exc_tb): """ Exits the context. Unless delete=False was set at initialization, the job is deleted. Any deletion errors are silently ignored to ensure proper context exit. """ if self._delete_on_exit: try: self.delete() except DALServiceError: pass def _update(self, wait_for_statechange=False, timeout=None): """ updates local job infos with remote values """ if timeout is None: timeout = ( DEFAULT_JOB_WAIT_TIMEOUT if wait_for_statechange else DEFAULT_JOB_POLL_TIMEOUT ) try: if wait_for_statechange: response = self._session.get( self.url, stream=True, timeout=timeout, params={ "WAIT": "-1" } ) else: response = self._session.get(self.url, stream=True, timeout=timeout) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) # requests doesn't decode the content by default response.raw.read = partial(response.raw.read, decode_content=True) self._job = uws.parse_job(response.raw.read) @property def job(self): """ all up-to-date uws job infos as dictionary """ # keep it up to date self._update() return self._job @property def url(self): """ the job url """ return self._url @property def job_id(self): """ the job id """ return self._job.jobid @property def phase(self): """ the current query phase """ self._update() return self._job.phase @property def execution_duration(self): """ maximum execution duration as `~astropy.time.TimeDelta`. """ self._update() return self._job.executionduration @execution_duration.setter def execution_duration(self, value): try: response = self._session.post( f"{self.url}/executionduration", data={"EXECUTIONDURATION": str(value)}) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) self._update() @property def destruction(self): """ datetime after which the job results are deleted automatically. read-write """ self._update() return self._job.destruction @destruction.setter def destruction(self, value): """ datetime after which the job results are deleted automatically. read-write Parameters ---------- value : datetime datetime after which the job results are deleted automatically """ if isinstance(value, str): value = _from_ivoa_format(value) try: response = self._session.post( f"{self.url}/destruction", data={"DESTRUCTION": value.strftime(IVOA_DATETIME_FORMAT)}) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) self._update() @property def quote(self): """ estimated runtime """ self._update() return self._job.quote @property def owner(self): """ job owner (if applicable) """ self._update() return self._job.ownerid @property def query(self): """ the job query """ self._update() for parameter in self._job.parameters: if parameter.id_.lower() == 'query': return parameter.content return '' @query.setter def query(self, query): try: response = self._session.post( f'{self.url}/parameters', data={"QUERY": query}) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) self._update() def upload(self, **kwargs): """ upload a table to the job. the job must not been started. """ uploads = UploadList.fromdict(kwargs) files = { upload.name: upload.fileobj() for upload in uploads if upload.is_inline } try: response = self._session.post( f'{self.url}/parameters', data={'UPLOAD': uploads.param()}, files=files ) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) self._update() @property def results(self): """ The job results if exists """ return self._job.results @property def result(self): """ Returns the UWS result that corresponds to the standard TAP result endpoint: "results/result". If no such result is found it falls back to the old behavior of returning the first result with id 'result'. """ try: for r in self._job.results: if r.href and r.href.endswith("results/result"): return r for r in self._job.results: if r.href and r.href.strip() and r.id_ == 'result': return r return None except (IndexError, AttributeError): return None @property def result_uris(self): """ a list of the last result uri's """ return [result.href for result in self._job.results] @property def result_uri(self): """ the uri of the result """ try: result = self.result if result is None: return None uri = result.href if not urlparse(uri).netloc: uri = urljoin(self.url, uri) return uri except IndexError: return None @property def uws_version(self): """ the version of the UWS serving this async job Asynchronous TAP jobs are managed using a standard called Universal Worker Service (UWS). For instance, starting version 1.1, you can have long polls, which save on monitoring requests. Normal users generally will not have to look at this. """ self._update() return self._job.version def run(self): """ starts the job / change phase to RUN """ try: response = self._session.post( f'{self.url}/phase', data={"PHASE": "RUN"}) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) return self def abort(self): """ aborts the job / change phase to ABORT """ try: response = self._session.post( f'{self.url}/phase', data={"PHASE": "ABORT"}) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) return self def wait(self, *, phases=None, timeout=DEFAULT_JOB_WAIT_TIMEOUT): """ waits for the job to reach the given phases. Parameters ---------- phases : list phases to wait for timeout : float or None maximum time to wait in seconds. If None, defaults to ``DEFAULT_JOB_WAIT_TIMEOUT``. Raises ------ DALServiceError if the job is in a state that won't lead to an result """ if not phases: phases = {"COMPLETED", "ABORTED", "ERROR"} interval = 1.0 increment = 1.2 active_phases = { "QUEUED", "EXECUTING", "RUN", "COMPLETED", "ERROR", "UNKNOWN"} while True: self._update(wait_for_statechange=True, timeout=timeout) # use the cached value cur_phase = self._job.phase if cur_phase not in active_phases: raise DALServiceError( "Cannot wait for job completion. Job is not active!") if cur_phase in phases: break # fallback for uws 1.0 or unsupported WAIT parameter sleep(interval) interval = min(120, interval * increment) return self def delete(self): """ deletes the job. this object will become invalid. """ try: response = self._session.delete( self.url, allow_redirects=False) response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, self.url) self._url = None def raise_if_error(self): """ raise a exception if theres an error Raises ------ DALQueryError if theres an error """ if self._job.phase in {"ERROR", "ABORTED"}: msg = "" if self._job.errorsummary: msg = self._job.errorsummary.message.content msg = msg or "" raise DALQueryError("Query Error: " + msg, self.url) def fetch_result(self, max_retries=0): """ returns the result votable if query is finished Parameters ---------- max_retries : int, optional Maximum number of retry attempts for transient network errors. Default is 0 (no retries). """ result_uri = self.result_uri if result_uri is None: self._update() self.raise_if_error() raise DALServiceError(reason="No result URI available", url=self.url) response = None for attempt in range(max_retries + 1): try: response = self._session.get(self.result_uri, stream=True) response.raise_for_status() break except TRANSIENT_ERRORS as ex: if attempt < max_retries: delay = (2 ** attempt) + random.uniform(0.8, 1) time.sleep(delay) continue else: raise DALServiceError.from_except(ex, self.url) except requests.RequestException as ex: # Non-retryable error - update and check for query errors self._update() self.raise_if_error() raise DALServiceError.from_except(ex, self.url) response.raw.read = partial(response.raw.read, decode_content=True) result = TAPResults(votableparse(response.raw.read), url=self.result_uri, session=self._session) result.check_overflow_warning(self._client_set_maxrec) return result class TAPQuery(DALQuery): """ a class for preparing a query to a TAP service. Query constraints are added via service type-specific methods. The various execute() functions will submit the query and return the results. The base URL for the query, which controls where the query will be sent when one of the execute functions is called, is typically set at construction time; however, it can be updated later via the :py:attr:`~pyvo.dal.DALQuery.baseurl` to send a configured query to another service. In addition to the search constraint attributes described below, search parameters can be set generically by name via dict semantics. The typical function for submitting the query is ``execute()``; however, alternate execute functions provide the response in different forms, allowing the caller to take greater control of the result processing. """ def __init__( self, baseurl, query, *, mode="sync", language="ADQL", maxrec=None, uploads=None, session=None, **keywords): """ initialize the query object with the given parameters Parameters ---------- baseurl : str the TAP baseurl query : str the query string mode : str the query mode (sync | async). default "sync" language : str the query language. defaults to ADQL maxrec : int the amount of records to fetch uploads : dict Files to upload. Uses table name as key and table content as value. session : object optional session to use for network requests """ baseurl = baseurl.rstrip("?") super().__init__(baseurl, session=session, **keywords) self._mode = mode if mode in ("sync", "async") else "sync" self._uploads = UploadList.fromdict(uploads or {}) self["REQUEST"] = "doQuery" self["LANG"] = language self._client_set_maxrec = maxrec if maxrec: self["MAXREC"] = maxrec self["QUERY"] = query if self._uploads: self["UPLOAD"] = self._uploads.param() @property def queryurl(self): """ the URL to which to submit queries In TAP, that varies depending on whether we run sync or async queries. """ return f'{self.baseurl}/{self._mode}' def execute_stream(self, *, post=False): """ submit the query and return the raw VOTable XML as a file stream Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors in the input query syntax """ # theres nothing to execute in non-sync queries if self._mode != "sync": raise DALServiceError( "Cannot execute a non-synchronous query. Use submit instead") return super().execute_stream(post=post) def execute(self): """ submit the query and return the results as a TAPResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ result = TAPResults( self.execute_votable(), url=self.queryurl, session=self._session ) result.check_overflow_warning(self._client_set_maxrec) return result def submit(self, *, post=False): """ Does the request part of the TAP query. This function is separated from response parsing because async queries return no votable but behave like sync queries in terms of request. It returns the requests response. """ url = self.queryurl files = { upload.name: upload.fileobj() for upload in self._uploads if upload.is_inline } response = self._session.post( url, data=self, stream=True, files=files) # requests doesn't decode the content by default response.raw.read = partial(response.raw.read, decode_content=True) return response class TAPResults(DatalinkResultsMixin, DALResults): """ The list of records resulting from a TAP query. Each record contains a set of metadata that describes an available result matching the query constraints. The number of records in the results is available by passing it to the Python built-in ``len()`` function. This class supports iterable semantics; thus, individual records (in the form of :py:class:`~pyvo.dal.Record` instances) are typically accessed by iterating over a ``TAPResults`` instance. Alternatively, records can be accessed randomly via :py:meth:`getrecord` or through a Python Database API (v2) Cursor (via :py:meth:`~pyvo.dal.DALResults.cursor`). Column-based data access is possible via the :py:meth:`~pyvo.dal.query.DALResults.getcolumn` method. ``TAPResults`` is essentially a wrapper around an Astropy :py:mod:`~astropy.io.votable` :py:class:`~astropy.io.votable.tree.TableElement` instance where the columns contain the various metadata describing the query results. One can access that VOTable directly via the :py:attr:`pyvo.dal.DALResults.votable` attribute. Thus, when one retrieves a whole column via :py:meth:`~pyvo.dal.DALResults.getcolumn`, the result is a Numpy array. Alternatively, one can manipulate the results as an Astropy :py:class:`astropy.table.Table` via the following conversion: ``table = results.to_table`` ``TAPResults`` supports the array item operator ``[...]`` in a read-only context. When the argument is numerical, the result is an :py:class:`~pyvo.dal.Record` instance, representing the record at the position given by the numerical index. If the argument is a string, it is interpreted as the name of a column, and the data from the column matching that name is returned as a Numpy array. """ @property def infos(self): """ return the info element as dictionary """ return getattr(self, "_infos", {}) @property def query_status(self): """ return the query status """ return getattr(self, "_infos", {}).get("QUERY_STATUS", None) def getrecord(self, index): """ return a representation of a tap result record that follows dictionary semantics. The keys of the dictionary are those returned by this instance's fieldnames attribute. The returned record has additional TAP-specific properties Parameters ---------- index : int the integer index of the desired record where 0 returns the first record Returns ------- TAPRecord a dictionary-like wrapper containing the result record metadata. Raises ------ IndexError if index is negative or equal or larger than the number of rows in the result table. See Also -------- Record """ return TAPRecord(self, index, session=self._session) def _handle_overflow_warning(self, client_set_maxrec=None): """ TAP-specific overflow warning handling. For TAP results we suppress the default overflow warning during initialization because TAPQuery.execute() will call check_overflow_warning() """ pass class TAPRecord(SodaRecordMixin, DatalinkRecordMixin, Record): pass astropy-pyvo-f0fdda3/pyvo/dal/tests/000077500000000000000000000000001521254414300176575ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/__init__.py000066400000000000000000000001001521254414300217570ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/dal/tests/conftest.py000066400000000000000000000012661521254414300220630ustar00rootroot00000000000000from contextlib import contextmanager import pytest import requests_mock class ContextAdapter(requests_mock.Adapter): """ requests_mock adapter where ``register_uri`` returns a context manager """ @contextmanager def register_uri(self, *args, **kwargs): matcher = super().register_uri(*args, **kwargs) yield matcher self.remove_matcher(matcher) def remove_matcher(self, matcher): if matcher in self._matchers: self._matchers.remove(matcher) @pytest.fixture(scope='function') def mocker(): with requests_mock.Mocker( adapter=ContextAdapter(case_sensitive=True) ) as mocker_ins: yield mocker_ins astropy-pyvo-f0fdda3/pyvo/dal/tests/data/000077500000000000000000000000001521254414300205705ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/000077500000000000000000000000001521254414300223575ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/cutout1.xml000066400000000000000000000260741521254414300245160ustar00rootroot00000000000000 the caller is allowed to use this link with the current authenticated identity
ivo://cadc.nrc.ca/MACHO?54150/cal054150r https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/MACHO/cal054150r.fits.fz?RUNID=e3h6rssb161oyf7j #this download ad:MACHO/cal054150r.fits.fz application/fits 18616320 true
ivo://cadc.nrc.ca/MACHO?54150/cal054150r soda-146cec58-9031-4568-9aeb-380eabb50942 #cutout SODA-sync cutout of ad:MACHO/cal054150r.fits.fz application/fits true
ivo://cadc.nrc.ca/MACHO?54150/cal054150r soda-142c15fb-f9ff-4ad0-b35f-7efb07d9bfea #cutout SODA-async cutout of ad:MACHO/cal054150r.fits.fz application/fits true
ivo://cadc.nrc.ca/MACHO?54151/cal054151b https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/MACHO/cal054151b.fits.fz?RUNID=e3h6rssb161oyf7j #this download ad:MACHO/cal054151b.fits.fz application/fits 21692160 true
ivo://cadc.nrc.ca/MACHO?54151/cal054151b soda-2d68bb35-50e4-459b-bfb2-ac2b5da1a5d1 #cutout SODA-sync cutout of ad:MACHO/cal054151b.fits.fz application/fits true
ivo://cadc.nrc.ca/MACHO?54151/cal054151b soda-fadba418-47ec-4a3d-b8ab-8368f3081082 #cutout SODA-async cutout of ad:MACHO/cal054151b.fits.fz application/fits true
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/cutout2.xml000066400000000000000000000142311521254414300245070ustar00rootroot00000000000000 the caller is allowed to use this link with the current authenticated identity
ivo://cadc.nrc.ca/MACHO?54151/cal054151r https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/data/pub/MACHO/cal054151r.fits.fz?RUNID=of051krube49ud2e #this download ad:MACHO/cal054151r.fits.fz application/fits 18987840 true
ivo://cadc.nrc.ca/MACHO?54151/cal054151r soda-40d74211-597b-4aa9-a153-f5ac67b77021 #cutout SODA-sync cutout of ad:MACHO/cal054151r.fits.fz application/fits true
ivo://cadc.nrc.ca/MACHO?54151/cal054151r soda-8e48c445-8f76-4c01-abcf-bdb1c2f7caf5 #cutout SODA-async cutout of ad:MACHO/cal054151r.fits.fz application/fits true
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/datalink-obscore.xml000066400000000000000000000315771521254414300263370ustar00rootroot00000000000000 calibration level (0,1,2,3) publisher dataset identifier short name for the data colection telescope name instrument name internal dataset identifier type of product timestamp of date the data becomes publicly available RA of central coordinates DEC of central coordinates size of the region covered (~diameter of minimum bounding circle) region bounded by observation typical spatial resolution dimensions (number of pixels) along one spatial axis name of intended target dimensions (number of pixels) along the other spatial axis start time of observation (MJD) end time of observation (MJD) exposure time of observation typical temporal resolution dimensions (number of pixels) along the time axis start spectral coordinate value stop spectral coordinate value typical spectral resolution dimensions (number of pixels) along the energy axis dimensions (number of pixels) along the polarization axis UCD describing the spectral axis polarization states present in the data URL to download the data estimated size of the download UCD describing the observable axis (pixel values) format of the data file(s) primary key timestamp of last modification of the metadata
2 ivo://cadc.nrc.ca/MACHO?54150/cal054150r MACHO Mt. Stromlo Observatory 50 inch MACHO 54150 image 2008-10-08T00:00:00.000 88.81762854444203 -67.77109486072844 1.0245546113974644 polygon 89.70783791485876 -67.41840881752057 89.74786512306278 -68.14322955012662 88.22311503462467 -68.14813181576002 87.81208257298478 -67.77896886699358 87.82899304985233 -67.4197778334441 4.353822892 4181 macho000071 4200 50527.522581 50527.526053 300.0 300.0 7 5.800000000000001E-7 7.8E-7 5.799999999999999 7 https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2ops/datalink?runid=b7vdfnrcr8kq35a1&ID=ivo%3A%2F%2Fcadc.nrc.ca%2FMACHO%3F54150%2Fcal054150r phot.count application/x-votable+xml;content=datalink 00000000-0000-0000-93cf-fed05e0e60f6 2019-11-20T19:29:40.929
2 ivo://cadc.nrc.ca/MACHO?54151/cal054151b MACHO Mt. Stromlo Observatory 50 inch MACHO 54151 image 2008-10-08T00:00:00.000 79.9564431173079 -70.32295142824165 1.0420934836421956 polygon 81.03835269676311 -69.95434045997953 81.07118698080274 -70.68523150491481 78.84035765138141 -70.68806135194416 78.88155357298983 -69.9513684574919 5.020573004 4175 macho000006 4168 50527.527002 50527.530475 300.0 300.0 8 4.800000000000001E-7 5.800000000000001E-7 5.799999999999999 8 https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2ops/datalink?runid=b7vdfnrcr8kq35a1&ID=ivo%3A%2F%2Fcadc.nrc.ca%2FMACHO%3F54151%2Fcal054151b phot.count application/x-votable+xml;content=datalink 00000000-0000-0000-b8fb-fed05e2e4e02 2019-11-20T19:29:40.960
2 ivo://cadc.nrc.ca/MACHO?54151/cal054151r MACHO Mt. Stromlo Observatory 50 inch MACHO 54151 image 2008-10-08T00:00:00.000 80.01859124602015 -70.30750032450052 1.0248990302163568 polygon 81.01558843560966 -69.95461093880266 81.06567094624911 -70.67927922356017 79.34988020864029 -70.684376201833 78.89013903241694 -70.31495449099631 78.91029632344201 -69.95565099163903 5.020573004 4181 macho000006 4169 50527.527002 50527.530475 300.0 300.0 7 5.800000000000001E-7 7.8E-7 5.799999999999999 7 https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2ops/datalink?runid=b7vdfnrcr8kq35a1&ID=ivo%3A%2F%2Fcadc.nrc.ca%2FMACHO%3F54151%2Fcal054151r phot.count application/x-votable+xml;content=datalink 00000000-0000-0000-b83a-fed05e27f58e 2019-11-20T19:29:40.960
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/datalink-ssa.xml000066400000000000000000000513431521254414300254620ustar00rootroot00000000000000 Spectra from the Flash and Heros Echelle spectrographs developed at Landessternwarte Heidelberg and mounted at La Silla and various other observatories. The data mostly contains spectra of OB stars. Heros was the name of the instrument after Flash got a second channel in 1995. This resource contains data associated with the publication 1996A&A...312..539S. For advice on how to cite the resource(s) that contributed to this result, see http://dc.zah.uni-heidelberg.de/tableinfo/flashheros.data SSAP A measure of how closely the record matches your query. Higher numbers mean better matches. Observed position RA and Dec as a 2-real array as required by SSAP. Target RA and Dec as a 2-real array as required by SSAP. URL of a preview for the dataset, where available. Access key for the data MIME type of the file served Size of the data in bytes Title or the dataset (usually, spectrum) Dataset identifier assigned by the creator Dataset identifier assigned by the publisher Processing/Creation date Date last published. Bandpass (i.e., rough spectral location) of this dataset; use something generic like 'Optical' here. Creator assigned version for this dataset (will be incremented when this particular item is changed). Common name of object observed. Object class (star, QSO,...; use Simbad object classification http://simbad.u-strasbg.fr/simbad/sim-display?data=otypes if at all possible) Redshift of target object Equatorial (ICRS) position of the target object. Signal-to-noise ratio estimated for this dataset ICRS location of aperture center Angular diameter of aperture Midpoint of exposure Exposure duration Midpoint of region covered in this dataset Width of the spectrum Lower value of spectral coordinate Upper value of spectral coordinate Number of points in the spectrum Local observation key (used to connect to single orders). Type of flux calibration Data model name and version System RA and Dec are given in Time conversion factor in Osuna-Salgado convention. Spectral conversion factor in Osuna-Salgado convention UCD of the spectral column Unit of the spectral column Flux/magnitude conversion factor in Osuna-Salgado convention UCD of the flux column Unit of the flux column Type of data (spectrum, time series, etc) Publisher of the datasets included here. Creator of the datasets included here. IOVA id of the originating data collection Instrument or code used to produce these datasets Method of generation for the data. Process used to produce the data URL or bibcode of a publication describing this data. Statistical error in flux Systematic error in flux Type of flux calibration Bin size in wavelength Statistical error in wavelength Systematic error in wavelength Type of wavelength calibration Resolution on the spectral axis Statistical error in position Type of calibration in spatial coordinates Spatial resolution of data
0.0 304.446675349555 38.0329313131891 304.446675349555 38.0329313131891 NaN NaN http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt?preview=True http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt image/fits 100800 Flash/Heros p Cyg 1990-10-11 09:28:07.500003 ivo://org.gavo.dc/~?flashheros/data/ca90/f0011.mt 1993-05-18T00:00:00 2017-02-22T13:19:40.966036 p Cyg star NaN NaN NaN NaN 304.446675349555 38.0329313131891 17.6 48175.39453125 NaN 5.40127e-07 2.78147e-07 4.01053e-07 6.792e-07 23181 ca90/f0011.mt NORMALIZED
The pubisher DID of the dataset of interest Recalibrate the spectrum. Right now, the only recalibration supported is max(flux)=1 ('RELATIVE'). Spectral cutout interval MIME type of the output format
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/datalink.desise000066400000000000000000000125111521254414300253440ustar00rootroot00000000000000{ "uri": "http://www.ivoa.net/rdf/datalink/core", "flavour": "RDF Property", "terms": { "this": { "label": "the data itself", "description": "the primary (as opposed to related) data of the identified resource", "wider": [], "narrower": [] }, "progenitor": { "label": "Progenitor", "description": "data resources that were used to create this dataset (e.g. input raw data)", "wider": [], "narrower": [] }, "derivation": { "label": "Derivation", "description": "data resources that are derived from this dataset (e.g. output data products)", "wider": [], "narrower": [] }, "auxiliary": { "label": "Auxiliary", "description": "auxiliary resources", "wider": [], "narrower": [ "weight", "error", "noise" ] }, "weight": { "label": "Weight map", "description": "resource with array(s) containing weighting values", "wider": [ "auxiliary" ], "narrower": [] }, "error": { "label": "Error map", "description": "resource with array(s) containing error values", "wider": [ "auxiliary" ], "narrower": [] }, "noise": { "label": "Noise map", "description": "resource with array(s) containing noise values", "wider": [ "auxiliary" ], "narrower": [] }, "calibration": { "label": "Applicable Calibration", "description": " Data products that can be used to remove instrumental signatures from #this. Note that the calibration steps such data products feed have not been applied to #this yet.", "wider": [], "narrower": [ "bias", "dark", "flat" ] }, "bias": { "label": "Bias Frame", "description": "Data products that can be used to remove detector offset levels from #this.", "wider": [ "calibration" ], "narrower": [] }, "dark": { "label": "Dark Frame", "description": "Data products that can be used to remove detector dark current from #this.", "wider": [ "calibration" ], "narrower": [] }, "flat": { "label": "Flat Field", "description": "Data products that can be used to remove the signature of non-homogeneous detector sensitivity from #this.", "wider": [ "calibration" ], "narrower": [] }, "preview": { "label": "Preview", "description": "low fidelity but easily viewed representation of the data ", "wider": [], "narrower": [ "preview-image", "preview-plot", "thumbnail" ] }, "preview-image": { "label": "Image preview", "description": "preview of the data as a 2-dimensional image", "wider": [ "preview" ], "narrower": [] }, "preview-plot": { "label": "Plot preview", "description": "preview of the data as a plot (e.g. spectrum or light-curve)", "wider": [ "preview" ], "narrower": [] }, "thumbnail": { "label": "Small Graphical Representation", "description": "A very small preview suitable for displaying many at one time.", "wider": [ "preview" ], "narrower": [] }, "proc": { "label": "Processing", "description": "server-side data processing result", "wider": [], "narrower": [ "cutout" ] }, "cutout": { "label": "Cutout", "description": "a subsection of the primary data", "wider": [ "proc" ], "narrower": [] }, "documentation": { "label": "Documentation", "description": "Structured or unstructured metadata helping to understand, interpret, or work with #this. Such information can range from processing logs to weather reports to technical documents on instruments to related publications.", "wider": [], "narrower": [ "detached-header" ] }, "detached-header": { "label": "Detached Header", "description": "Machine-readable metadata for #this, which in general will be necessary for its scientific use. Examples include FITS headers distributed without their data blocks or PDS label files.", "wider": [ "documentation" ], "narrower": [] }, "coderived": { "label": "Coderived Data", "description": "Data products sharing one or more progenitors with #this. This could be a lightcurve for an object catalog derived from repeated observations, the dataset processed using a different pipeline, or the like.", "wider": [], "narrower": [] }, "counterpart": { "label": "Counterpart", "description": "Data products sharing the target of the experiment or observation that led to #this but of unrelated provenance. This could be observations of the same object in different wavelengths or along different axes (time, spectrum), but spectra of dust of common origin but different laboratories would be #counterparts as well.", "wider": [], "narrower": [] }, "package": { "label": "Single Download Package", "description": "All file-like items related to #this and #this itself packaged together in a single downloadable archive.", "wider": [], "narrower": [] } } } astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/datalink.xml000066400000000000000000000133651521254414300247000ustar00rootroot00000000000000 Data links for data sets. Publisher data set id; this is an identifier for the dataset in question and can be used to retrieve the data. URL to retrieve the data or access the service. Identifier for the type of service if accessURL refers to a service. If accessURL is empty, this column gives the reason why. More information on this link What kind of data is linked here? Standard identifiers here include science, calibration, preview, info, auxiliary MIME type for the data returned. Size of the resource at access_url
ivo://org.gavo.dc/~?flashheros/data/ca90/f0011.mt http://dc.zah.uni-heidelberg.de/flashheros/q/echdl/dlmeta?ID=ivo%3A%2F%2Forg.gavo.dc%2F%7E%3Fflashheros%2Fdata_raw%2Fca90%2Fn0011.mt Split Echelle Orders #progenitor application/x-votable+xml;content=datalink -1
ivo://org.gavo.dc/~?flashheros/data/ca90/f0011.mt ndndtdihpgea #proc -1
ivo://org.gavo.dc/~?flashheros/data/ca90/f0011.mt http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt The full dataset. #this image/fits 100800
ivo://org.gavo.dc/~?flashheros/data/ca90/f0011.mt http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt?preview=True A preview for the dataset. #preview image/png -1
The pubisher DID of the dataset of interest Recalibrate the spectrum. Right now, the only recalibration supported is max(flux)=1 ('RELATIVE'). Spectral cutout interval MIME type of the output format
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/proc.xml000066400000000000000000000176041521254414300240540ustar00rootroot00000000000000 Data links for data sets. Publisher data set id; this is an identifier for the dataset in question and can be used to retrieve the data. URL to retrieve the data or access the service. Identifier for the type of service if accessURL refers to a service. If accessURL is empty, this column gives the reason why. More information on this link What kind of data is linked here? Standard identifiers here include science, calibration, preview, info, auxiliary Media type for the data returned. Size of the resource at access_url
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz procsvc An interactive service on this dataset. #proc -1
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz The full dataset. #this image/fits 68708160
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz?preview=True A preview for the dataset. #preview-image image/jpeg -1
ivo://org.gavo.dc/s/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/wider.dat An artificial thing. #preview image/jpeg -1
ivo://org.gavo.dc/s/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://example.edu/when-will-it-be-back Something requiring custom semantics. urn:example:rdf/dlext#oracle text/x-prediction -1
An interactive service on this dataset. The pubisher DID of the dataset of interest The latitude coordinate The longitude coordinate Factor to scale the image down before transporting (this does not currently take into account cutout parameters). Region to (approximately) cut out, as Circle, Region, or Polygon A polygon (as a flattened array of ra, dec pairs) that should be covered by the cutout. A circle (as a flattened array of ra, dec, radius) that should be covered by the cutout. Pixel coordinate along axis 1 Pixel coordinate along axis 2 Set to HEADER to retrieve just the primary header, leave empty for data.
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/proc_inf.xml000066400000000000000000000161561521254414300247110ustar00rootroot00000000000000 Data links for data sets. Publisher data set id; this is an identifier for the dataset in question and can be used to retrieve the data. URL to retrieve the data or access the service. Identifier for the type of service if accessURL refers to a service. If accessURL is empty, this column gives the reason why. More information on this link What kind of data is linked here? Standard identifiers here include science, calibration, preview, info, auxiliary Media type for the data returned. Size of the resource at access_url
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz procsvc An interactive service on this dataset. #proc -1
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz The full dataset. #this image/fits 68708160
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz?preview=True A preview for the dataset. #preview image/jpeg -1
An interactive service on this dataset. The pubisher DID of the dataset of interest The latitude coordinate The longitude coordinate Factor to scale the image down before transporting (this does not currently take into account cutout parameters). Region to (approximately) cut out, as Circle, Region, or Polygon A polygon (as a flattened array of ra, dec pairs) that should be covered by the cutout. A circle (as a flattened array of ra, dec, radius) that should be covered by the cutout. Pixel coordinate along axis 1 Pixel coordinate along axis 2 Set to HEADER to retrieve just the primary header, leave empty for data.
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/datalink/proc_units.xml000066400000000000000000000161601521254414300252720ustar00rootroot00000000000000 Data links for data sets. Publisher data set id; this is an identifier for the dataset in question and can be used to retrieve the data. URL to retrieve the data or access the service. Identifier for the type of service if accessURL refers to a service. If accessURL is empty, this column gives the reason why. More information on this link What kind of data is linked here? Standard identifiers here include science, calibration, preview, info, auxiliary Media type for the data returned. Size of the resource at access_url
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz procsvc An interactive service on this dataset. #proc -1
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz The full dataset. #this image/fits 68708160
ivo://org.gavo.dc/~?bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz http://dc.zah.uni-heidelberg.de/getproduct/bgds/data/gds_big/v6a/2010/GDS_0644-0035/i_s/eq010000ms/20100927.comb_avg.0001.fits.fz?preview=True A preview for the dataset. #preview image/jpeg -1
An interactive service on this dataset. The pubisher DID of the dataset of interest The latitude coordinate The longitude coordinate Factor to scale the image down before transporting (this does not currently take into account cutout parameters). Region to (approximately) cut out, as Circle, Region, or Polygon A polygon (as a flattened array of ra, dec pairs) that should be covered by the cutout. A circle (as a flattened array of ra, dec, radius) that should be covered by the cutout. Pixel coordinate along axis 1 Pixel coordinate along axis 2 Set to HEADER to retrieve just the primary header, leave empty for data.
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/mimetype/000077500000000000000000000000001521254414300224215ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/mimetype/ivoa_logo.jpg000066400000000000000000000304551521254414300251100ustar00rootroot00000000000000ÿØÿàJFIFHHÿá€ExifMM*JR(‡iZHH î �ÿÛC     ÿÛC  ÿÀ�î"ÿÄ ÿĵ}!1AQa"q2�‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2�B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýü¢Š(¢Š(¢Š(¢Š(¢“ò¯3ñŸÆŸ„_áwñ×ÄïxH¯TÕµÛ{yÑÃô®¦Ñ_ë¿ðQoÙCH’Hì<}ªxÂTÎWÃ~¾½S�I ŸŽì{Õm?㯊¿hiÚ—Ã+Oü,øi|…å×õ[ƒ\Õ“8Ùe .-¡=~Òùsÿ,Ð}ñn-+´$ÓØúSÇ|à=v= RÔ®õÌ›íü9¡Z=þ¥"žŒaˆÓI6'ûUæ³|TøÏ®È[ÿ|/à»~KŸë†æèŽÄÚÙ+"ý À5•á/hÞÐdÓü7¡gC4¦[¹v¼—r²Ï3æI¤=K»k´XfUùâ•yg,ïû@ßÈKüZð.‘œ–y6ûn–øä~«FÚçö„°£ñßÂï‘ÒCÂW6‡§™ܘ>ûÒºøxQêEiÅ×ò F/‹¾;ðñfø‰ð—V�NA™5Ÿ_ rÝGvk}‘]¨ÿv1ë^¹áxGÇÞσ¼A¦ø‡MÜQå´˜1…ÇXä_½ƒº8 ;ŠÉµêǽp¾(øW£øƒÅGźý瀾#$[ ñNŒŠ³È";¨�îï!Î3 ‘ü,‡š÷ª+âoþ×¶_üG£øKö�ðO�4ízõ$6^"ð–….¥¢êÉ3,[Í ˜ ½»«2vg\1Ýð÷íßû(øŠö;Qñ‡Aðåë�þ�âkk�Æ}~Õ/ëNÎ×Õì}yEsžñ…<]¤­ÿ…|MáïY0ÈŸJÔbºŒ�]ѱÑæ¥1…QLŠ( Š( Š( Š( Š+Ä"Ð|)á-C_ñ6±¦øB±„Íy¨ê7)½º¬ò9 £êhj©ßj6^‘s¨jw¶šu…ºžêêUŠ(”ufv =I¯…¼KûZø«ÆúMÜÿ³Ï„ô4ð\LR‹Ÿ/Eð¬x8-j­¶{ÿcXÏ÷ȯ†> øëö_Õ¼@º§íñÿâ¯í�®ÆÛ�…ü'lúg„íÜíHcxâu�Í3±š¸SœÝ¢®DêF*òv>îø‰ÿý�¼âvðǃ5mgã‡�ÎV=áí‰ÔÎðq†�t£èÌxé^=wñËþ ñ�|_ gÝà–‰'1jž2”Oxªz6ÙŒh§ØE'ã_9YÁ@´‡:h³çìÉðëᾓòã–îeW`;¼V±¦ãõ˜ýMy÷ˆà µ¼Çìž.ðÏ„¢‘rEðä%—“Ñî ¦½ YV&ZòÛÔâži†�Ú¿¡õ�×ìIûX|X„·Ç?Ú¿T6Ò�ÓiZ4·-l=„P5¤_š·Ô×Wàÿø%oÀíqq¯x§Ç"¾cºimÒÖÄH}Ù"iOã!>õù›¨þÒ´½i+jß¾&L¬ã‹Me¬GÓâ1\gü%¿Œ{nEiBÿÃâÆb§?ˆê¸©(裖9%méðH%yÿëÕ¨íÒL´M´ŽªÕ�…T »Ho½ìFükN'ò£õ,3÷G`GjÒ„ÉV[¾kJ&_—š¤²1£ž óž¿Z1¸ä•#‚Zæ¾%ü6ð¯Å¿ƒš�‚¼]jÓé·@IÄ'mÅ�ÂóÄ/ü¡äüƒ�H?—q~É¿iHï[~ø¡ñï@ÖŧÃÿÚ?Ä·:U´;æ´ñlpx’Ò=©’�$˜¸QŸ—ýnG¥~ò€Ïê+ľ"þÎÿ ¾&Kq{®x^ßNñ ¨Wþ ¾Ã¨ŒúÍ<ÁþÌ�Ô÷½ftg¥z)ù­çÔËkA~â³^OT|1á¯Ûë⧆V~,ü±ñ^žYu¿‡š–f}ãau†õ8I›Ú¾Çø_ûY|øµªA¤xkÇúvŸâ·á¼3âm+VFþïÙ®6»tÜ=ëáÏŠÿ³O�þØ®£k4¿ünÊeÔ­-vêztJX–¹·A‰cPy–@1€ WË%Ñ<=ãu2kÚV•¯ØJD¶’\F Õ)̽ˆd#Ø×u<› ‹ƒž§ÉÿW8gœâp³PÄÓù¯êß‘ý  #½-~ø'âÇÏ‚ºr|<ø�qã?y[›Áß&’úÚ4É-ïAûLt dAÇ÷çÁŸÛsá¿Ä�ZøCÇ7ßþ$ÎÁ-ô_ΟeÔŸþœoGî®2z&VOö+ÆÆeØŒ+ýätïÐö0y–¿w-{u>Ò¢�ŽãëK\'xQERä�K_~Ú_µþ�û4ü*·ÒtH¬µï‹ºü/ÿî“)&+HÇÊ×× r!CÀ^ �ò�â!¤ÛInÅ)(«³¦ý©¿l¿…¿²Ï�c>#™¼IãýB3ý…àý6Po/ I'_&zÈÃýÐÇŠü(ø™ûXüJøÉã˜|KãH4Ýnâ DÚF‰¨Aæè:U Óؘîg_ùø»ó9éq_2ëºÎ³â¿‰:׌üY¬j(ñŽ­pfÔõ�FO2yØö¢ 訸U8¨”·îϰ¯¥ÁäÐIJ®¯±óø¬ÚoJzy�ωü_âÿˆ>&MOÇ>(×<[} êצe�Aáb�îD£ XÕ@ì+²øWðËYø«ã½sCðûÆ×zg†ïõ™¾KXKìéÕÛjväñä_ ßþµúû&þ×Z—Ã]WÄñ—àxü=…¯åÓ®-¼=oiw%ä1y�E$±*™VB¥H|’Hæ½*êt©?cÎ¥(T©z¬øF5Iô¸�”œçqÿ Öh_Ì4%U?½_Os_^øà÷ÇÛsâž(G‚¼á8.ÏÛøv>Ì?ñÇ pªÉy èImªxgŠýIøQÿÿøðêÞÞûÄŸüN 5*ËnwŽÐ~å¦U›ý£\ÕójT•·}—ù�42ÉÕ×eçþGá†|)âÏíÓüá?øÊìÊwG¡iS^í๢R«ß©õ×ìÿû?üPð§íÉðïRø‘àMGÂv6Ú}þµg§, ,� G±‰Šmk Fð9 ~üiÚf�¤i0ØiVzeŒJ+{X(ÐÁTÐWÈæ3Á@cŽiJGgðÝZ5Á<Ϩ8b?ïÊW‹‰ÍëVƒ…’Lõ0ùERS½Ú5ãšAùçŽ-¦6eWõ'Ð�(?4¨÷­;y¨™‰eþþ/¡õÏFU ÂÅZá>é ÏjцFaç3•þø#ïøÓµtVóf_1Á89ÀèǶ*ìsï·ØÜƒÞ¹ô™d*«Ÿ)³·oU>õufp£ø@(ØÇû=ª·Ú1È#=¨�!½ñGì…à WTfm]tµ³Ô™ºµÍ³5´äÿÛHž½j¼?ö~_/àn­¶è#ñ¯ˆD8þ×»8À’+Ü(È>¾¸¯ËÚá&ŸðÃâî‰â_ éöñxÆïkw¥*m‹MÔÊ4»áÇú¸çD•Š”H„Œy„Wêq`’xñíŸâ½&OxOáý¬ö·(¼Ö ÖD&@ �¥©bfoîï�¤*Þ.ØÈVÇ¡”Õ©O¯ð<ìÚŒ*a&§Ñ_æ|¨Ác©ës�:äFñâ4‚cŒ…ãå= ex“ú~©ðöÛÃþ#Ñíu-:íÚYm®áÞŒF#чPG# ‚*’Ú]&«¼±¼S»ƒÜ“Ú½ë[ñÿ�®þXx]¼ºµ¦§.n¿´%-yQ¨™IêX‚6”mÏzý"¬¶N<ÉèÏÎ)Åjù¬Ö¨ç>~ÐÿgÍ:ÞßQ›[øÇð^Do¥ÝNgñƒ96“9Íä?儇Ì|®~í~³|;ø‘à¯Šß ´¿xÄ$ðÍú“å³ýÖ4r)ÃG"žSÁøõf!ð݇Ø$7àÍ&3Ó#éÞ°ü'â_üø™ÅO…ÑIz/¥-ã‰Dvž$·^ ±ƒòÅ~ƒ%%çÆÇÈ ×Ëæ¼>¬êa×Ëü�©Ê¸�ÝSÄ?Ÿùÿ™ûµEyßÂÏŠ> øÇð7Cø…à=Pj¾Ôâ&'d),2)+$2¡å%�ÁFSЃ^‰_}yçÿ>$xsáìñã‰>,œÛèÓ$¾ºÚ~iv�–$õwb¨£»0¯ä¯âWįüaø÷⟊7¸3x›_»2ËrÑÙ@¼AizGaF:�Ìyc_²ÿðW_ˆói_³ÇÃ…“´cÅ:亖¦‹üvÖ ¬ˆÞÆyboûg_…ÖÃ|9-À›ò¯{'Ã^õ_¢øcàÚS^ÐþxÍ ¾˜,´ •ŠÞY rŠ�Ä @\ÙõX6}�¥|z3¥7­O´¡V ¥:¾Gøý¤Â5ñÿ® wðóèÏáí~èKµtà×)5­Ä™yždNßÂeBp ‘õÅV¼³µÔ4«›Ûk{Ë;ˆš)àž1$r£ 2²žH8 ðk#cã˜.“ûJÙRÔ¼rß1ÎÒ·P;Uä7SiŠò³ ŽO•Ÿå#·â;Uíwà§‹<0¹øMwm¬øn,2ø;W¸òžÕs’¶W„1Tþì3ƒ¢¼kÅyÌ>2Ò,|LÚ7‹WPø}¬N Gcâ˜~Æd9ʈ¥$Ã7#þYHÔé±ÉWK33J’¯ÌayëïÁæ´"iä’KiŒ`>F¯„¼E¹c®kmâ½CRÕ¼e¨j.u­FþM÷ Æã€‚TPG ¯Oø/ã+O‡ß4³qáÏë6&h&wöÅ®`Y¤R7Ý…*˜nGQU¾2|VÓ¼kñw_œxcÂöz,7Ò¤Ööæ+™ÑX�#É»¶3Ðu¯k.ÁG]ƺ·ÄÏ�ž&—4ç­þ¼ŽÃú¤±G4÷ª/líbÈIHcÀÁíS[i‘j×±¶—9vwÌ�I÷××µ�kö-kL¶Ó<ºŸŒ5)äß>Ÿ¢XË:vUc ²¯üŠì¿á\øËÂ:rk?/<-ðcN�´“ÅâçS˜ž¿gÓlËË+c±t>¢½ÙŽ�Å5é»8¨åØšß ®Ëñ9û�MíõË‹µ˜ZÇP´�µU�›<ëšã|k¯ë^3Õì|%ðÎ?°ßK ®¥¯I…†ÊÜýé­Ôó$­ÈŒýÒ~`XŽöÇGÓ|Y«ê2ikwñi6mysâoÛÃç”FUßo¦¦`µa‰g3Ì:�„dSÒ4ÅÒu²¾[ÄñÈ×RÊò´�3u24ŒIv'bI54ëTÄ-,zßâûº~c­Jž¯4º[á_>¿‘Ùþξ7µýš?l]ÃV’IcðsÇ—PhÚµ´²“•­í k| è.Hòf=ÜÆÇœçö˜Œ×áŒü;oñà·‹ôÇf‡T¸Ó_É‘8e¸<3)ìé"£¥~¸þÎ¥øµûü)ø‰w�ígÖòê v»Eò®á*H+ä8‡>!J+I~}O¬áÌ|«áÜfîã×Ë¡øéÿ€3¯íqðCw™öVðŽ¢#ÏÝßö¨7cßJü¦°IT ÿZýÔÿ‚»ü7»Ö?g…ÿ4ûi'o ëï§j~Z–+m¨*¢±Ça6ô#îzóøÖŒ^ñjÇ �áŸB±K�ͤÎw¯^Lã­zʤ{žc‹±�½ä±�™ÙŠ9RIÉÁÈÖíž�©k½•–�aªêƦ+k+všW c„PIéØUÈü#¯F·PÂ/â÷fã#H™FÈꧨÍniv>0Ñ&±ÕtMǺF¥nì±ÜØÇuéžrÔ÷«ubôLÁAö=oâìçñáï�~ø—Tð‰åÓ|I£CTi2˜ôÉMÌ‹äOòâ6ò„O‡Áù�¥z—Á/ÛwãÁ›ø<=öûˆ¾ ‚&Äs9šÚ<à%½ØÌ‘¨èÄŠ;\ÏÄß�ß~#|8øqá­KþâØhž[-Mk°5IÌÒ1šp÷­åùi—þéõ¯�š¯ü&{[@ñŒ?é™ÉÑeuûÙêâ¹cB5©þý+�n¤¨Îô[?t¾ÁDþxÖXì[­*ú;˜�ü 6"¿–;/øŠãÄðÒµWäi·nçï ­XÓ<1ñ CñÊj:>�㟠êû~“ Õ¤�¹ºù�í$së^el’›»�½NúyÌÕ½¤>ãú³Ü7c<Õ OJÓ5­}7XÓìu]:a‰­o Y¢�z20 þ"¿ŸoþÐÿµ®‡®_Ùé?>#]Z¤25”öˆ58ò¼ª³M”‚=$Þ¾çøGûRüeñ‡‡¤Óõ}GÀþ:°Ô4=gÃ7–O0S†žÞdŸl°“�™cÊg  àŸ/€«CYY¯#ÓÃc©ÖÑhüÏ®/ÿfÿ†�r÷>‡Ä.ß;ŸÂº´¶pœúÛÖçñŠ¹ë¿‚ŸlÕÓÃÿ­¯í¶m[ox^)Éî?yk%¾¾ÓÖ¹ë�á¶ó/~xTPáIÓ¼c,,}öËg�ÿ}VüüVmÒ[¯ƒ òÉÚÏiâ->Eþ$dþUÂv£ÀßôØ¥It?…¾&ˆ‘·ìºõÝ‹ñßkÛÈ~7÷ëLkŒ1X<7¿¯n°(4¯XH¾ø´^Ý}+¤´dȪfø;ñ; H´¹öø*uý¢·Ä®>üZ ÆdÒÀ뎿mý(�:§�mmPKðKâbιŽ}*`ôÛz?zl~&ñr^y­ðSâëHF~ǧã§'?lÁõú×]ÿ |ò¬p|øœ]€+ç\iQƒžŸòøi¯ñÏÆR<‘ÙüÖÄ©ÕoKÅVqË& ùFšT…¥R‹È€1#Ì�÷Ü_þÙ~?“Ľ—‡~hÚ�–ž«ëgÅ3O§ËrÌGÙ£’+"$eÇÎêLjx/œãÌöÃý¤u}_R¶_ø;Â6ÖQ;ÜHú5ýô¨F@AºH•˜¶OS^–ŠrS§»Ûõ<Üf3 Ë*u%ëkþ‡;ì[û@êwÙ¤…ú ,±«<úåÕÃQÓ lÞ$õç�Jõ-;ö'ø�qáÛk]wâ߆4M’ ®æÑü94ò\0P ³Íp«Âñ�œòHɯ³øçûQøÚ-Auø—Bû:ù¿gÐü/šNœæ5y"’@Ýò¢·|Wwˆ|o-¯ŒµŠZ䚀’Þ«êW÷–ñ…SûÃ6ÀK }Üc5ïBŽgQ{ÕT¯$x2¯–Sw�&þÿÕŸSø‹áìÙàëŒüOý¤µ)µ8“Ë’ÊÃU±´™€øSáÒvG¦ø/OLƒÓí2‚A÷Ž8ÏÒ¼ÑÓIMLEÓêíÍÞ¹q+\^Nç“æÍ!gqõ9xV]úèi«Ú·Í.—|-o)Vå¢|:÷äϯ)ÿÂG¯ÐcRÿÀ†ÿ?á#×ÿè1©àC�xÏÃ�‰ºo�¬õ]6ëN¾ð��ô)E·Š|!ªáoôyýËH[¬s.QÔ‚r+Ó(kþ=þƒ:—þ7øÑÿ ½ÿA�KÿükŠÚÿ„�_ÿ Æ¥ÿ� þ4ÂG¯ÿÐcRÿÀ†ÿá­¬ük⯎oàïßøWIK®©ss¬XÏrd-pЄA±íi$œç=«7[·ø‘á�ŠšÏ‚5ßêÚÛxSû_Gº¶²¸µ·ÞŽui\”%A,¤3Á Kÿ„�^ÿ Æ¥ÿ� þ4ÂG¯ãÛ:–?ëá¿Æ¸‡žø£ñáÔzæ™âÿ†Ö‘Löº®—sáÛÏ´i—qàKo(}T�CJ²ä04ýTÔWÖ<7â[(t�h“,:½ŒLÍÉŠæn^ÞU•º‚æF ïþ=þƒ:—þ7ø×)âý.×Ç~M/Å-w©C¢kI¾ÒñÜYʰJ¤8,ʉñÁ–× 8¾&hA?ws Eo­ÅŽFøÜ¬›�Äßì±æ¦Òþ(x2öò]?Uñ^ÕJ†þÏñ*>™r¬3ÀIÂîàžP°ÖH,¬m<7xÓêR±[B¿jù�Ûv,p ‘‡¥?�tdûè\çõ  wø· ji§�l\ü‡ç|‚»¥¦­ûHþÛÚg„$Ô/µ/„ õhu_É,¥íõmyû9{:Û.&ŸÊSÎqú=^yð³á‡„~üÑ>ø&ÆK-NŒüóHd¸»™Éin'�ó$Ò9gw<’}0+Ð袊(ç?�ÿ³—‡>.^éÞ,Òu[ï‡th™thè¦æ<›{ˆÏËujÇïC'Ô©æ¾Ko‰Þ&øeã+~ÒZŸ€5»‰…¾‘ã+gðLj[ òîþ='n¿gŸiÏÝfú�X¾ ðæ�âÏêñ>‹¥øƒB¿„Ã{§ê©<¡ê®Œ#ë@&‚ +) ¬¡•�È`z{Š+’׿dß|5s¨þÌ~9‡GÑË¿ÃoI5î†ù$•´¹Ë\Øû*—ŒpW›KñÂ/ë‘è<â_�ZÉ-/õÄè�ÿNúœY„ƒØKå··Zú'áGüžö±ÿb?ú_-Uø£ÿ'õ_ù'qÿéÆJä¼ñÂ^ý§›Åz¶¥<¾Ôüž™a>¡m<‹zîTIn޹ÚÊy<ƒÅ?_ñž…ãïÛ2}Âíª^hÖþŠÎ[»�*æÑæúGòÇ�nm¿1Æp1@]OUø{ñ%¾$xnÒâþ6… ñf�n¹mRÉ:M÷»·Š²&øú”+ìŸ|iñOá÷‡þ$ü3¾Ón¼Sceö�üM¶ÛW´—%”Ì?唘XŒÅ VÇ §Î� ‚ t5CÂ^)Ô>ø¾ÿÊÓu]sá–«;]]Xipît+ÇlË<0/Í%´¤–’4Ë$™uR°Χ�ôsðÑüM$”A'6riF ß­öÿ+ìWSsæâ0ƒ© ƒ·æ¯uøià˜¾x?\ø›ñ6ïN´ñmæžfÕîžpm´ó"ÙDç�‘�šI<Ù2ÝåÇ_²›üj_‰²ëÞ5U̵,Þ`�ÊL`Üÿwæy~`_—8â¹ox²ûãˆìíÆ™ªè¿ téÖå-5Kv·¹ñÒ01I$ óGiÕ$¥}¬Êà ë:�ÄωP|C×-ç±Ò­UÓÁš5Âí{+iöd?vêuÇÊyŠ"†i3ë_³º©?¤eÿá;eÝŽpº^žú á3–%¹'­Rð·‹õŸ…¼E¨®�¨ø«ÀúõÂ^êúJ,šŽ™x°¤ 2DÄyðIQnT>b2àž2Ò4ïþÖÛÆV‘x–V¶Óô[-HyÖ¶>�k;�¿w½ä–Bd*X€p¸ªð­¾ÿЃà¯üÛÿñÚx¿ÅŸ³g�êÚÅkV7ö¦M*ùµÍ,[C¯Û2`\ˆrv‰âHÏ á€Ê•5âÿkø«ÿE³Æ_ø(Ò¿ù£šûãV’K¦üh׿ÔPn¶�RÑt絑Ç!eÛ«˜Éá¶0lƒš†ïD¿ø_ñßÀÅÍÍî�x¼«Ü1fžm>g<µÌ*2¬y–!»–G­êÑÖþ.üø‘ð:O üN¾¹ðOˆoÛté ŸíZEôM•žÞdŒ†Úà6|,‘8–ò÷Ã/ªiÀú‹»2cÜ€>•ÓøgãoÁïJ±xcâ‡�uk–8©¬ÅÀ>†'ep}Šæ¿F¶Ž}ú×–øÏàwÁ¯ˆ‚C㯅üW,ƒæ›SÐmæ—ð�¦áøð¥3´!‘åhÈÈ`Ä‚=séQ÷ääýjKÏØGö|IÌžÒüsðÖL|§Áþ5Ôtè×é ÌbÿÇ1X²þÆÞ#°Ïü"ŸµGÇÍ)ÌqkiÚ¯±óíwÿ  j+™Ÿöjý¤ì@7í;á�QAé¯ü0�™¾­osè*£üý°­×ÿg�SÅsáJØŸûâí¨³ÞßÞoÎ�ïýæüë…? mP\ý—å=ËZk ü˜Ó×áí™'x“ödµÞ�MÕäÇàd_ç@¾÷þó~t„’rI&¹øû\ÝŒ\|aø¢ú›?^Ü‘ÿ/T~•~?Ùsã½úí¿ÚºîćOü;Óí&�¦#ë@ –l²J08š©¨_ÚéÖ-y«_ZéÖ¨>iïgXQG»9Uxb›+æÆ?´'íâ°F¼Q— zålàŒþM]6�ûþÌuäWš—Âû?ê1œ‹Ïj—zܤúŸµÉ ü…|õ«þÑÿ´�M´ññB×õq÷tß ùšÅÛ˜Z,�ŸÂ¥±ñçÅÿ0�á_ìÙñ+R…þæ¯ã‰!ð͆;6Ù‹\2ÿ»Oµ~†økÁ> ðf˜,¼á/ xVÌ y>™ ¢cé�]0÷ �ôßÙãö“ñ¤@üGøÛ¢|/ÒŸïèß 4²÷Dͨކ ãŒÇ ŸB+Û~~Ê>x†?iÞ>%ñ ûÞ)ñmäšÎ¬ÇÔ\\—1ý#=«èÊ(Â�ÉúÒÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙastropy-pyvo-f0fdda3/pyvo/dal/tests/data/mimetype/test.fits000066400000000000000000000757001521254414300243000ustar00rootroot00000000000000SIMPLE = T / Standard FITS format BITPIX = 8 / NAXIS = 0 / no data in main file EXTEND = T / Extensions may exist FILENAME= 'swp06542llg' / original name of input file TELESCOP= 'IUE ' / International Ultraviolet Explorer ORIGIN = 'GODDARD ' / Tape writing location CAMERA = 3 / IUE camera number IMAGE = 6542 / IUE image sequence number APERTURE= '' / Aperture DISPERSN= 'LOW ' / IUE spectrograph dispersion DATE-OBS= 'nn/nn/nn' / Observation date (dd/mm/yy) DATE-PRO= 'nn/nn/nn' / Processing date (dd/mm/yy) DATE = '18-Feb-1993' / Date file was written (dd/mm/yy) RA = 0.000000 / Right Ascension in degrees DEC = 0.000000 / Declination in degrees EQUINOX = 1950.0 / Epoch for coordinates (years) THDA-RES= 0.000000 / THDA at time of read THDA-SPE= 0.000000 / THDA at end of exposure COMMENT * COMMENT * THE IUE VICAR HEADER COMMENT * COMMENT IUE-VICAR HEADER START 0001000100071204 1 2 013106542 1 C 1445* 4*IUESOC * * * 3600* * * * * * * * * * 2 C SWP6542, NGC 7027, 60 MIN, LG APER, LO DISP 3 C 4 C 5 C PROGRAM:NPBRB OBSERVER:BOHLIN DATE:1979.2609.260 17SEP 6 C 7 C 8 C 9 C 79260123556* 9 * 218 *OPSDEV14*112438 RDXSPREP 2 IMAGE 5614 * 10 C 091608 SCAN READLO SS 1 G3 58 *112511 SCAN READLO SS 1 G3 58 * 11 C 091623 X 56 Y 72 G1 99 HT 106 *112525 X 56 Y 72 G1 99 HT 106 * 12 C 093518 TLM,FES2ROM *114939 TLM,FES2ROM * 13 C 101100 FIN 3 T 3599 S 97 U 109 *120916 FESTRK TRACKING * 14 C 101150 MODE LWL *121950 FIN 3 T 3599 S 97 U 109 * 15 C 101239 TARGET FROM SWLA *122052 TARGET FROM SWLA * 16 C 101436 TARGET IN LWLA *122532 TARGET IN LWLA * 17 C 101542 EXPOBC 2 59 59 MAXG NOL *122642 EXPOBC 2 59 59 MAXG NOL * 18 C 101755 FESTRK TRACKING *122948 FESTRK TRACKING * 19 C 101919 TLM,SWPROM *123115 TLM,SWPROM * 20 C 101957 READPREP 3 IMAGE 6541 *123556 RDXSPREP 3 IMAGE 6542 * 21 C 102029 SCAN READLO SS 1 G3 44 *123631 SCAN READLO SS 1 G3 44 * 22 C 102045 X 60 Y 76 G1 82 HT 105 *123648 X 60 Y 76 G1 82 HT 105 * 23 C 104652 TLM,FES2ROM *123621 * 24 C 111319 MODE SWL *123646 * 25 C 111545 FIN 2 T 3599 S 98 U 109 *090650 ACQ STARTED * 26 C 111646 TARGET FROM LWLA *090952 TARGET IN SWLA * 27 C 111841 TARGET IN SWLA *091005 FES 761 IN 20 0 0 * 28 C 111953 EXPOBC 3 59 59 MAXG NOL *091059 EXPOBC 3 59 59 MAXG NOL * 29 C 112211 FESTRK TRACKING *091257 FESTRK TRACKING * 30 C 112328 TLM,LWRROM *091415 TLM,LWRROM .200000E 02 * 31 C 112412 MODE LWH *091534 READPREP 2 IMAGE 5613 * 32 C 33 C 34 C 35 C NPBRB*1*02*BOHLIN * 7* *N*00007027*0*0*1* 70 36 C 21 5 94+42 2 3*999* 0*0*99.0*99.00* 0.0 * 0* 120.00* 0* 37 C ' i cf@fh= %cc 38 C 39 C ?4 3 t ] D " 4 3c3D3 4 40 C 41 C 42 C 8 r 4 M , i ) K n c D H 43 C 44 C 45 C 46 C 47 C 48 C 49 C 50 C 0 0 0 0 0 020 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 51 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 020 0 04040 52 C 0 0 020 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 53 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 080 0 0 0 0 0 0 0 0 0 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 04040 54 C 2 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 55 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 020 0 0 0 0 0 0 0 0 0 0 0 56 0 0 0 0 020 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 04040 56 C 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 020 0 0 0 0 0a0 0 0 0 8 0 0 0 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 57 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 0 0 020 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 58 C 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 080 0 2 0 0 0 0 080 0 59 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 080 0 0 0 0 0 0 0 0 0 0 0 04040 59 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 020 0 0 0 0 0 0 0 0 0 60 0 0 0 0 0 0 0 080 0 820 0 030 0 0 0 0 0 0 0 0 8 0 0 0 08030 04040 60 C 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 8 0 0 0 0 61 0 0 0 0 0 020 0 0 0 0 0 0 020 0 0 0 0 0 0 0 0 020 080 0 0 0 04040 61 C 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 2 0 0 8 030 0 0 0 0 62 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 8 0 0 04040 62 C 222 0 0 2 0 0 0 2 280 0 0 0 0 0 0 8 0 0 0 0 2 0 0 0 0 0 0 0 0 020 63 0 0 0 0 028 0 0 0 0 0 0 0 0 0 0 0 020 0 0 080 020 0 0 0 0 0204040 63 C 0 0 0 0 0 028 8 0 0 0 0 0 0 0 0 0 0 0 0 0 8 2 020a0 0 0 0 0 0 2 0 64 2 0 0 0 0 0 0 0 0 8 0a8 0 0 0 0 0 0 020 0 0 02020 0 0 0 0 0 04040 64 C 0 0 0 c 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 028 0 8 0 0 2 0 0282020 0 65 0 2 0 8 0 020 0 0 0 0 0 0 0 0 0 2 0c0 03020 020 080 0 0 0 2 04040 65 C 80 0 2 0 0 0 0 0 08020 0 a 0 0 0 2 0 0 080 0 020 8 0 0 0 0 0 0 0 0 66 0 080 0 0 0 080 0 0 0 c 0 0 080 0 0 8 0 0 8 0 8 0 0 8 0 020 04040 66 C 80 0 8 0 018 0 020 0 0 0 0 0 0 0 0 080 0 8 0 020 0 8 0 0 0a0 2 0 8 67 0 0 0 080 0 0 0 8 0 2 0 030 0 0 0 0 0 0 0 020 020 8 8 0 8 0 04040 67 C 0 0 0 8 02080 8 0 0 0 0 0 0 0 0bffff0 0 0 0 0 2 0 2 0 0 0 0 0 0 2 68 0 0 0 0 3 0 0 0 082 2 c 0 0 02080 0 0 0 0 0 0 0 2 0 8a2 0 0 04040 68 C 0 c80 8 0 0 080 2 0 0 022 8 880 0 0 0 0 0 0 0 0 8 0 0 2 0 0 0 0 0 69 0 0 0 280 0 8 0 0 0c8 08020 0 0 0 0 0 0 0 0 088 0 0 0 0 8 0 04040 69 C 0 080 2 0 0 0 0 08280 8 0 2 8 0 0 2 2 3 020 020 0 0 0 0a0 2 a 0 0 70 a 0 0 0 2 8 08080 020a0 0 2202ffff0 0 0 0 0 0 0 0 0 0 0 080 04040 70 C 08222 c 0 2 0 0 0 0 282 0 080 020 0 0 0 a 280 0 0 2 0 080 0 820a2 71 22 020 020 0 8 020 8 020 0 0 2 0 8 0 080 2 280 08022 2 0 0 0 24040 71 C 2220 8 0 8 0 0 0 0 0 2 02080 8 2 0 0 0 2 0 020 082 0 0 0 0 02020 0 72 02088 0 0 082 82020 0 280 8 8 8 8 820 0 a8020 020 8 0 2 2 0 24040 72 C 0 2 0 8 0a2 0 088 0 0 0 2 2808020 0 220 0 2 0 0 0 8 0 a 0b0 0 0 b 73 280 0 0 0 0 0 0 0 2 0 020 080 0 0a080 8 0a0 0 8 0 2 0 fc0 0824040 73 C 0 880 02088 0 2 0 0 0 2 0 0aa82 0 280 0 0 880 08022 0 0 a 288 0 8 74 88 c 08a28 0 0 a 080 0 820 0 2808220 8a0 0 0 0208220 0 0 0 0 34040 74 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04040 75 C c1af6fbcc 0 0 09d707b 0c6 e 03dc8 c32474e366a29253f47413320314d64 76 29 03d8af6 51a1c9090 05e7d8233122e2a19282e1d32 f18117da5abab 0 0 0 76 C ac30 0ff 0 439abbba0 0445aa4 4371f2a31342b1d1d2c2f151914161d502d37 77 70727e207b197a227b14259a1e92209420951e96 1 0 1b8e1 0 0e02ce0fa3540 77 C 7b 07b 072 07b7b7b7b7b 039 0 07f4c4541ae547c979951ceae9580808645 0 78 03a3234363a302f2f3335332b35bdad 6c1f6568282 0 1 08282404040404040 78 C 0 0 6c2f2568381 0 1 080803b3535343b35313036373633338977877945776b 79 796a7b2f7f7e7f7a7a34777d7f7e8e487f40404040404040404040404040404040 79 C 993837611019 e89 0cc 040404040404040404040404040404040404040404040 80 404040404040404040404040404040404040404040404040404040404040404040 80 C dfbffbe 0 0 0 07f374399 2 2fe66fb30 0 0 0 0 0 0d0 0 0 0 0 0 0 080 81 0 0 0 0 0 0 0 0 0 0 088 0 0 0 c 0 0 0 c 0 0 0 0 0 0 0ff 0 0 04040 81 C 4f1960 0 0 0 0 0ff 0 0 0ff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 0 0 0ff 0 0 0ff 0 0 0 0 0 0 0ff 0 0 0ff 0 0 0 0 0 0 0 0 0 0 04040 82 C 83 C 84 C 85 C b2b 0 0 017 0 0 0 689a1e02ce0e1 0 021 0 016809e32 0 0dcc1f5a15e3b 86 b1dad9565668c969c92fc9 0 061415142 0 0404040 2 3 c d e404040404040 86 C c12 0 0 0 5 0 0 0 38a9ae02ce0e1 0 026 0 016809e32baab 6c1f2568381 87 0 1 07f807e7f7a7a3477 0 061414140 0 0404040 3 635 b c404040404040 87 C c1a 0 0 0 5 0 0 0 38999e02ce0e1 0 02b 0 016809e32bdad 6c1f6568282 88 0 1 082826b776a7b2f7e 0 061404141 0 0404040 2 432 b c404040404040 88 C c25 0 0 0 0 0 0 0 0899de02ce0e0 0 034 0 016809e32 0 0d8c5f2a0ab42 89 acdac579927eca7aca34c9 0 0714a4141 0 0404040 3 7 6 d e404040404040 89 C c30 0 0 0 a 0 0 01e89a1e02cdfe1 0 01b 0 012809e32 0 0d8c1f29f493f 90 addad581637cc97aca34c9 0 071424141 0 0404040 3 312 d e404040404040 90 C a f 0 0 016 0 0 01e8a96e02ce0e1 0 035 0 012809e4abdad 6c1f5568282 91 0 1 082826c796b7b307f 0 061404141 0 0404040 2 42f b c404040404040 91 C a14 0 0 0 0 0 0 019899ee02ce0e1 0 042 0 016809e4a 0 0d8c4f2a0ab3e 92 acdac679927fca7bc935c9 0 0714a4141 0 0404040 3 73b d e404040404040 92 C a1a 0 0 014 0 0 0238a9ce02cdfe1 0 042 0 016909e4abaab 6c1f2538381 93 0 1 080807ec97aca35c9 0 061514141 0 0404040 3 1 8 d e404040404040 93 C a20 0 0 0 a 0 0 0 5899be02cdfe1 0 034 0 016909e4abc6d 6c1f2528381 94 0 1 080807bc97bca35c9 0 061514141 0 0404040 3 122 d e404040404040 94 C a21 0ffffe2 0 0 02389a1e02ce0e0 0 042 0 012809e4a 0 0d8c1f2a0ce39 95 acdad481637bca7bca35c9 0 071424141 0 0404040 3 321 d e404040404040 95 C b e 0 0 028 0fffffb8a9ae02ce0e1 0 034 0 016809e52bdad 6c1f6568282 96 0 1 082826c796a7b307f 0 061404141 0 0404040 2 631 b c404040404040 96 C b14 0 0 01e 0 0 0 f8a98e02ce0e1 0 02d 0 010809e52baab 6c1f2568481 97 0 1 080807e7f7b7a3479 0 061414140 0 0404040 3 4 0 b c404040404040 97 C b19 0 0 02b 0 0 01089a0e02ce0e1 0 024 0 012809e32 0 0dcc4f6a1473f 98 b0daca768e6cc96ac930ca 0 06141514a 0 0404040 2 729 d e404040404040 98 C b24 0 0 0 d 0 0 019899ee02cdfe0 0 032 0 012809e32 0 0dcc1f5a15b3e 99 b1dad9565669c96aca30ca 0 061415142 0 0404040 2 327 d e404040404040 99 C b2a 0ffffef 0 0 023899be02cdfe1 0 02e 0 012909e32bf6f 6c1f6538282100 0 1 0828268c969ca2fca 0 061414151 0 0404040 2 1 7 d e404040404040100 CCOMMENT IUE-VICAR HEADER ENDED HISTORY IUE-LOG STARTED HISTORY *GEOMF 11:20Z SEP 21,'79 HCHISTORY ********* GEOM. & PHOTOM. CORRECTED IMAGE ********** CHISTORY PCF C/** DATA REC. 11 1 1 1 768 8448 5 3 6.1 5.0 2536 .00000 1PCHISTORY 0 1684 3374 6873 9091 10586 1PCHISTORY 14371 17745 21524 25105 28500 1PCHISTORY 11.000 11.000 11.000 11.000 11.000 11.000 1PCHISTORY 11.000 11.000 11.000 11.000 11.000 1PCHISTORY TUBE 3 SEC EHT 6.1 ITT EHT 5.0 WAVELENGTH 2536 DIFFUSER 0 1PCHISTORY C MODE : FACTOR .178E 00 1PCHISTORY *FICOR5 11:20Z SEP 21,'79 HCHISTORY ******** DATA FROM LARGE APERTURE ******** CHISTORY *EXTLOW 11:20Z SEP 21,'79 HCHISTORY @EXTLOW: OMEGA= 90.0, HBACK= 5, DISTANCE= 11.0 CHISTORY :HT=15, DC#= 1; ISN: 0 PSN 1 SIGS= .444 SIGL= .421CHISTORY B 1= -.283235346667D 03 B 2= .376096600120D 00 B 3= .000000000000D 00CHISTORY A 1= .964207510446D 03 A 2= -.466539532721D 00 A 3= .000000000000D 00CHISTORY LINE SHIFT = .000 SAMPLE SHIFT = .000 CHISTORY *SMOOTH 11:20Z SEP 21,'79 HCHISTORY *ARCHIVE 11:20Z SEP 21,'79 HCHISTORY *ITOE 11:20Z SEP 21,'79 HCHISTORY ***** FILE OF MERGED EXTRACTED SPECTRA ***** CHISTORY *** GROSS, BACKGROUND, NET & ABSOL. CALIB. NET *** CHISTORY *ETOEM 11:20Z SEP 21,'79 HCHISTORY *ARCHIVE 11:20Z SEP 21,'79 HLHISTORY IUE-LOG FINISHED END XTENSION= 'BINTABLE' / Extension type BITPIX = 8 / binary data NAXIS = 2 / Number of Axes NAXIS1 = 7532 / width of table in bytes NAXIS2 = 1 / Number of entries in table PCOUNT = 0 / Number of parameters/group GCOUNT = 1 / Number of groups TFIELDS = 9 / Number of fields in each row EXTNAME = 'IUE MELO' / name of table (?) COMMENT IUE MELO file data containing G, B, N, A, & E vectors COMMENT Each row contains order number, npts, W0, deltaW, & vectors above TFORM1 = '1I ' / Count and data type of field 1 TTYPE1 = 'ORDER ' / spectral order (low dispersion = 1) TUNIT1 = ' ' / unitless TFORM2 = '1I ' / field 2 has one 2-byte integer TTYPE2 = 'NPTS ' / number of non-zero points in each vector TUNIT2 = ' ' / unitless TFORM3 = '1E ' / Count and data type of field 3 TTYPE3 = 'LAMBDA ' / 3rd field is starting wavelength TUNIT3 = 'ANGSTROM' / unit is angstrom TFORM4 = '1E ' / Count and Type of 4th field TTYPE4 = 'DELTAW ' / 4th field is wavelength increment TUNIT4 = 'ANGSTROM' / unit is angstrom TFORM5 = '376E ' / Count and Type of 5th field TTYPE5 = 'GROSS ' / 5th field is gross flux array TUNIT5 = 'FN ' / unit is IUE FN TFORM6 = '376E ' / Count and Type of 6th field TTYPE6 = 'BACK ' / 6th field is background flux array TUNIT6 = 'FN ' / unit is IUE FN TFORM7 = '376E ' / Count and Type of 7th field TTYPE7 = 'NET ' / 7th field is net flux array TUNIT7 = 'ERGS ' / unit is IUE FN TFORM8 = '376E ' / Count and Type of 8th field TTYPE8 = 'ABNET ' / absolutely calibrated net flux array TUNIT8 = 'ERGS ' / unit is ergs/cm2/sec/angstrom TFORM9 = '376E ' / Count and Type of 9th field TTYPE9 = 'EPSILONS' / 9th field is epsilons TUNIT9 = ' ' / unitless END xDz33@)³¿F–¬ÚFšD«F‡ÏœF‰XõF¦lZFˆ›yFœ£…F’leFŸtF†œÄF‡ F|³§F�ñÌF�µDF†õ�F‰Â«F‹?FŠˆFŽ‘öFšæìFŠÜÏFBn†FArûF‘ ‚F•BpF‚jôF–ÝF¬ÕIF¯»·F�\FˆhFœ²†F›}£FŠ` F|„ÈF‡ËF§•§F¦^F†”¦Fš’jFŒš}FˆD•F¤ÛF“yâF“vAFŠnÚF�Ø F’¶1F– ÎF“ñF™�F�ØF°p³FŸc…F¥û‚F�ôFœËìF©aF£)\FŸŽ]F mF¡ë(F™_rF˜}fF™ÊF�F¦É½F�÷XF¦•ºF¬]F¸�$FŽ£FŒåÿF·‹FÓÝEFÛ^¬G"GG¾íHZ\”H«ÉiHÀ'ÓH­¼×H‡ƒ-H W\GBÐWFÉE£F¶Ë‡F¦Ž£F²ÀÁFÃÏF³Ã|F¸ûŒFªÚêF¹5TF¦€WFž@îF«Y¸F ÀëF¡•F§>F˜})F˜äF¦"®F·°/F§ciFªC$F©ÄæF¬EÎF¨¼"F¨²#FªSåF±;F´wF©F¦’FºeF¨éšFŸ¤ðF¬ÏF¶OF½GF©¿FšvìF¢?ŽF¬¦�F²S F·±AFµÏÅF¼˜"FÁ…F½aF¯D¦F¦%tFªµHF¨ú¯F¦X5F¤ÍóF°;ŸF«sF£X‚F¥ë®F«DWF¤³]F¬{�F©_tF¹·PF³èF¬&°F¯¢¸F¹PFË%¯FÙÿ¥FßÒ FÍ'sFÀ4F¹NKF²ë¹F«åñF²Ê)F®ªZF­ÌïF¹ùøF²@F©h‘F¨B¶F�¯¾F—4•F§F-F®ÂÊF´é¿F®@ÇF«z­FŸìäF›ìâF§ÿÛF§×œF¬²ÎF²9F¬&pFªÒœF³ŠœFÉwÿFÛ2FØ_ÌFÎ6%F¼�F¯IÝF¨,ÅF Í‡F©{8Fµ¡QF®§ûF©šF¥ðßF­°‘F¹WõFºb(F½ûFÝü®FÙ_§F½fF­–BF¹ŒFÕA›G'àñG�ÈÕH.#HEJHZ­G ì÷G F³¯hF£HF«KFª=F¥^¾F°v‰F²ÑÐF¬»F­×F¯,|F¯˜ºFª„F Ú˜F£î±F¨8uF¬ÌF¼[DF»“÷F­c·F¯‹©F¸×žF¯@´F¦ áFª>/F°÷KF«%bF¯|²F¿ÖFè2G-üXGˆ­GŒµÓGK˜ÜFæûBFªgÞF£�êF»TïFà¤ÎFÚºéF×›NFá?¡Fáÿ8F½JF§ÕÖF§×ÃF¢r4F¡üF§oF§F¤%¯F©¨F›`’Fˆ+'F‡F`'FxäæFˆ½rF‘;HFŠ_vF‰ÞÞF‘‰ÈF˜¨fF‘/FŠ£iF’›ÌF –ïFªo�Fªÿ¸F©áF�Ò/Fƒ§F“+jF˜›mF¤å²F©†>F•22F´ )F©YÂF§ÚZF—åÀFª;ƒF›ä"FšxaFœEF¯ ßFšô_F¥¤IFìÙbFúÁeFËÈ6Fåa®FÞWˆFÆÌFŽF�F‘ͳFx|°F �F�VF§…iFtBFŸž†F�/F‘œ†F–@£F™²†FŸEzF¤’›F£ìöFªß¼F¡èF­¤®Fµ#ÝF¡Ñ3F”XÐF¦H9F»nFÁaF±‰—F–´îF‹·±F¤ógF³áñF¯À€F«ßèF›3F•åÕFªçEF·�ÏF YŒF‹ŽF¹\‹F½ëöF¸#èF¹¨÷F¢T�Fœ±•F¢÷¡F¦ÞF­•F±ÂãF­�FË�ÊF»-F®Ž¢F™]†F®ìyF©ŠæFžu&F”É(F—+¿Fž‹F¦ûF¥S·F«k Fž«fF£ZF·_¿F±hÈF©qyFªªÜF¬¦ÈF¨®!F§±`F¨ùÈF·ïEF®ˆTF­Ý†F¬¶RF£;‘F˜ï F—¨PF›Ð•F�6F¨›F§|KF§™)Fª>NF®¥F­‚F—u•F…Ý÷F��ùF�é$F¦½ÒFª“YFŸ÷ŽF§óÃF ÆËF¥fF­§ÍFœâ“F©ÞqF¹HFª¦UFœjhF’�âF–¶×F¤ámF£žwF”¼çFœ9BF¤ùF¯%¯F«EÞFšM°F†‰„FˆF”–F˜ö0F£—bF°”nFª,-F ÑµF£�Fªu¼F§¸`FœßÊF›ƒF£ËÖF£þ#F¢U÷F¥uJF£žZF¥ñHF¢y‡F�ØF¢ˆoF¬ ùF·ÿôF­—éFž#¥F—ÏÑF“}F¤êÞF´ŒÆF®èÜF &¹F­j’F¶¿ÎF¥¹{F—ÙkF“r�F”SþF”lF“�F�}œF–›áF£8"F¨q@F¤¨ÄF«cSF¬ŸUF£ûF¡0LFß¼sFúk;F±‰¼FšššF�æuF‘ �F–^F—ÐéF¡‘ÐF¤™ÎFŸ\/F�FÎF�5—FmðFWÅeFP�¯Fr�žF�zF”g_F“*ÒF�~FŒ˜F‡Î’Fˆ|\F’¼F ¡èF¦XæF˜W©F�Á:F“IFœ ¹F™oKFmîÙFZ°Fcþ{FQPÎFx@F‘„ŽFŽÃÚF‡þ‹F‰ë@F�¦iF›€ãF™ÕÇF•}F‹sâFŠ–ÃF“ö³F™Š¬F�ÍÓF’SöF “XF›àÒF“vYF™(=F˜g¸F”«ŒF�ž=F‹#F† ÔF�VCF™kF¤×4F§öF£òUF‘ôrFˆº�FˆG$F‘aÊF�edF—‡¡F™¶âF�wðF‹aGF‹“nF”d²F›9¦F‘|>F“†7F‹‹�FˆyêF„J°F…=F‡½ÌFŒð™F‹ôF��3F•F’ 0FŽ:ËF‘ÍúF•°�F˜ƒøF”TÑFšµÏFœY�F›uF—$~F�Ö:F“¦¼F�ÓXF‚�F‚#µF„Š?F�­øFˆRF‘äôF�eÐF�‚F�¤ Fˆã�F�ô“F�²›F�íF•ÁJFŽ$�FŽT›FŒE"F›í]F lF™ÍéF�ÕAF‘…F„‹ÖFŠº,F£çwFÛÜF¸²ËECßÅ„z~DzBÀD´¢gÄ_ÔÐÄ&ôéEC9óÄßôDüÍÕD5ÀšEÊ]ÄAÉ´Ä,:ûÄÜ<D#Ù‰C¥¢)Ã̉øB¢�WCÇ0CÇ0Dˆƒ¼E,ŸyD> ÅŽ Å�ŸJDκõES'ð<ENE™n)E¡>Dy–%Ã5�BE ÖRDîôäÃДÅ;ŸÄ��&E45¨E"ú!ľÏáDlµ:Ä`Œ’Ľ*ØDò5ÜÃŽ‡ÃÇØ�ÄÔ©ÆÄzððÄQ„ÃÅÚmÄg²pÃjÏ1C�¬ÚE 2ECkÒDn¼ Ã•X5Ãè‚íDŒÈ¯C¦<ÂÞ6ŽBt?C‚ÄO–pÄuJüÄoYjÅ™üDðDÅ„èÕC{¾åDV�E NèÅP­ðÅkx¢D´ ¿E™Æ^E±å)F“·ÈG‘§éHD–H ’7H´ð@H¢�tHxÉ¡Gæ¢ÉFרóEn7�D×™šܤDÒ¦)Ey%E N‚E?ÅÍD¯ËES¡2D‡ƒ�By�DÒµœCŽéCŽU DS3„Ä’´¶Ä¬PÐC‰30Eú&C‡GD 8CÀÄäD$ÈÁC$°xCíÔC¶'�D—•øDÊû|CYkÃjdìECCY.Ä…‹"D à˜D×D×E R£ȠÄý?ĈOC<ÆDTÅŒD¾½ŠD¡:GEÎE+Ç×E r‡Cà¥ÙÄ,°BŠ-�ÃRjQÃîM‘Ät©DoüCϵÄiÅâDOÜ ÎD#ÀüCtysEG÷D³N›DhlDioùEµ˜EŠ4¤EÅ ÞEÜHE‘:E:Ö(E�ÞD kwCÒUD¬÷†Do‚ßDnã„E#H‘DÕè�D$ÁÞD Ã]Ä9%!Ä¿V–D £ÀDÁ+YE DÂAëDš9ãÃ`G€Ä6‘DB•vD2ÒAD¢ÒçDöuçD–ðûD�¦cE ¡EšïEá]ÉEÖÕE¯ÄEPDÜ9Dd7UAÕ'àD’ÚnE-Œ„Dð¿5D¢‡DS%DçB6ERàÊE]•†E|ÐEýæEêÜEm?[DØñCECkÿEÐð!F®k&Gj¸åHêœH0ÏÒHPGpTFebMDÿî£Âà²ÒDh˜ÂDCýíBÏ­D¼6NDß&DtìäD{žD 1´D«_|D1¹ˆÃÌëÁB�¨DVôD›¡EM¡EJ‘ÆD¹.øDä5ÁEA#›DîüfD4L D˜NÀDÿ%qD›½»D׿7EhÈF 7£F·ÙœG=È¿GF¸ùFñ/]FjCð°‰ÃÇ áE) (EïÂ%Eß=¨EÚ«FEF AE†ªDä@OE˜•DÐJDÛ -E-áüE<œ,E1ÎëEg’Dïü©Ä ‹µÄ5ÙÄÒÁñÅû–ÃûܶD|ÿÃ}’gàjÂD#ZöDÃBD2¢Ã1ÎNDZ‡¡E)¤jE~E… ïE€ŠyE“žËE¹ÜEÙ‚JF‘F ’Eä $E±bEE›£ÀEUÛßE ¾lEA+EL6Ed8EHóEŠCE1PElM&E�úbE3FœESöEDYD¥yñCŸòöD‚´PDéÇDÜŽ ÅŽ Å�ŸJDκõES'ð<ENE™n)E¡>Dy–%Ã5�BE ÖRDîôäÃДÅ;ŸÄ��&E45¨E"ú!ľÏáDlµ:Ä`Œ’Ľ*ØDò5ÜÃŽ‡ÃÇØ�ÄÔ©ÆÄzððÄQ„ÃÅÚmÄg²pÃjÏ1C�¬ÚE 2ECkÒDn¼ Ã•X5Ãè‚íDŒÈ¯C¦<ÂÞ6ŽBt?C‚ÄO–pÄuJüÄoYjÅ™üDðDÅ„èÕC{¾åDV�E NèÅP­ðÅkx¢D´ ¿E™Æ^E±å)F“·ÈG‘§éHD–H ’7H´ð@H¢�tHxÉ¡Gæ¢ÉFרóEn7�D×™šܤDÒ¦)Ey%E N‚E?ÅÍD¯ËES¡2D‡ƒ�By�DÒµœCŽéCŽU DS3„Ä’´¶Ä¬PÐC‰30Eú&C‡GD 8CÀÄäD$ÈÁC$°xCíÔC¶'�D—•øDÊû|CYkÃjdìECCY.Ä…‹"D à˜D×D×E R£ȠÄý?ĈOC<ÆDTÅŒD¾½ŠD¡:GEÎE+Ç×E r‡Cà¥ÙÄ,°BŠ-�ÃRjQÃîM‘Ät©DoüCϵÄiÅâDOÜ ÎD#ÀüCtysEG÷D³N›DhlDioùEµ˜EŠ4¤EÅ ÞEÜHE‘:E:Ö(E�ÞD kwCÒUD¬÷†Do‚ßDnã„E#H‘DÕè�D$ÁÞD Ã]Ä9%!Ä¿V–D £ÀDÁ+YE DÂAëDš9ãÃ`G€Ä6‘DB•vD2ÒAD¢ÒçDöuçD–ðûD�¦cE ¡EšïEá]ÉEÖÕE¯ÄEPDÜ9Dd7UAÕ'àD’ÚnE-Œ„Dð¿5D¢‡DS%DçB6ERàÊE]•†E|ÐEýæEêÜEm?[DØñCECkÿEÐð!F®k&Gj¸åHêœH0ÏÒHPGpTFebMDÿî£Âà²ÒDh˜ÂDCýíBÏ­D¼6NDß&DtìäD{žD 1´D«_|D1¹ˆÃÌëÁB�¨DVôD›¡EM¡EJ‘ÆD¹.øDä5ÁEA#›DîüfD4L D˜NÀDÿ%qD›½»D׿7EhÈF 7£F·ÙœG=È¿GF¸ùFñ/]FjCð°‰ÃÇ áE) (EïÂ%Eß=¨EÚ«FEF AE†ªDä@OE˜•DÐJDÛ -E-áüE<œ,E1ÎëEg’Dïü©Ä ‹µÄ5ÙÄÒÁñÅû–ÃûܶD|ÿÃ}’gàjÂD#ZöDÃBD2¢Ã1ÎNDZ‡¡E)¤jE~E… ïE€ŠyE“žËE¹ÜEÙ‚JF‘F ’Eä $E±bEE›£ÀEUÛßE ¾lEA+EL6Ed8EHóEŠCE1PElM&E�úbE3FœESöEDYD¥yñCŸòöD‚´PDéÇDÜŽ This is a “lightâ€� version of the full Gaia DR2 gaia_source table, containing the original astrometric and photmetric columns with just enough additional information to let careful researchers notice when data is becomes uncertain and the full error model should be consulted. The full DR2 is available from numerous places in the VO (in particular from the TAP services ivo://uni-heidelberg.de/gaia/tap and ivo://esavo/gaia/tap.vo-dmlhttp://www.ivoa.net/dm/VO-DML.vo-dml.xmlstc2http://www.ivoa.net/dm/STC.vo-dml.xmlndcubeurn:dachsjunk:not-model:ndcubedshttp://www.ivoa.net/dm/DatasetMetadata-1.0.vo-dml.xmlivoahttp://www.ivoa.net/dm/ivoa.vo-dml.xmlivo://org.gavo.dcGAVO Data Center1TIMESERIES0BARYCENTERTCBJ2015.5ICRSObservation time (JD in barycentric TCB).Integrated flux in G; Use -2.5 log10(flux)+zero point to convert to magnitudes, where zero point is 25.6884 for DR2 fluxes in G in the Vega system.Magnitude in G, Vega system. Converted from flux using the formula given there. If flux_error/flux<0.1, you can use 1.09*flux_error/flux as a good estimate for the error; else the distribution is so skewed that you should work with fluxes rather than magnitude.Error in G flux.Gaia DR2 source_id of the objectPublisher-assigned title of the data setGaia DR2 RA of source objectGaia DR2 Dec of source object
2456920.5128546842921290000.02.0244633198665625106712000.0
2456920.5868590062659600000.02.12635918930161776519500.0
2456934.71934151562149850000.02.357379601891061323700500.0
2456934.89549362941934760000.02.471832249920307621371500.0
2456961.89449747331734390000.02.590533097882719547525800.0
2457003.4517497892104220000.02.38067213968078322162500.0
2457003.62791153141916840000.02.48193534119698727515800.0
2457031.44824773961690810000.02.61816298069168623871700.0
2457159.5289318261786750000.02.558240523066988533130900.0
2457176.6052401572000550000.02.43552647443061717323600.0
2457176.78139499341995940000.02.438031295473038531137300.0
2457176.7813949941865150000.02.511615588522033735917300.0
2457217.48488136571567590000.02.700318789111836519312300.0
2457217.5588855411545590000.02.715664252034944317547200.0
2457243.22822660380051200.05.9299803836130423535790.0
2457243.2282266511594470000.02.681859119019044618471700.0
2457276.9587075891714040000.02.603347618259917324701500.0
2457277.0327569814386006000.04.2219148617232065148650000.0
2457314.51514880643684.4916.772456544623715137729.0
2457314.69113340551330620000.02.878264882849528332975800.0
2457340.69249006731747150000.02.582574518630597324057400.0
2457340.7665252461694830000.02.6155846430100111095400.0
2457381.17602146931449470000.02.78537692226139927228900.0
2457438.90777355531788970000.02.55689235560183215526400.0
2457494.62331029451770970000.02.56787198909823326964400.0
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/000077500000000000000000000000001521254414300217355ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/basic.xml000066400000000000000000000016051521254414300235420ustar00rootroot00000000000000 OK
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/dataset.xml000066400000000000000000000021701521254414300241040ustar00rootroot00000000000000 OK
image/fits http://example.com/querydata/image.fits
application/x-votable+xml http://example.com/querydata/votable.xml
application/x-votable+xml;content=datalink http://example.com/querydata/votable-datalink.xml
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/errorstatus.xml000066400000000000000000000016131521254414300250550ustar00rootroot00000000000000 ERROR
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/firstresource.xml000066400000000000000000000016051521254414300253600ustar00rootroot00000000000000 OK
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/missingcolumns.xml000066400000000000000000000011421521254414300255270ustar00rootroot00000000000000 OK
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/missingresource.xml000066400000000000000000000005431521254414300257020ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/missingtable.xml000066400000000000000000000007301521254414300251400ustar00rootroot00000000000000 OK astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/overflowstatus.xml000066400000000000000000000016761521254414300256000ustar00rootroot00000000000000
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/rootinfo.xml000066400000000000000000000016041521254414300243170ustar00rootroot00000000000000 OK
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/query/tableinfo.xml000066400000000000000000000016061521254414300244250ustar00rootroot00000000000000 OK
23 Illuminatus
42 Don't panic, and always carry a towel
1337 Elite
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/querydata/000077500000000000000000000000001521254414300225675ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/querydata/image.fits000066400000000000000000020205001521254414300245370ustar00rootroot00000000000000SIMPLE = T / conforms to FITS standard BITPIX = 8 / array data type NAXIS = 0 / number of array dimensions EXTEND = T END XTENSION= 'IMAGE ' / Image extension BITPIX = -64 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 256 NAXIS2 = 256 PCOUNT = 0 / number of parameters GCOUNT = 1 / number of groups END ?âÙ=;c?ÄLRÈWøÜ?Þ oʱ¦‚?âóÉa‚ «?ÂnÞî}Ø?ÀLGªØx?à¿ÓúŽ?ÕB6Æ4ÆT?ã²™E`½?Þq}SÎäæ?ÛÚ\0– ¬?¼¶Yv+‰ ?ÍÞi`?£É„£\°?Ù¬ÏéX?Õ6ƒGE÷?éÛÚ°cËÚ?îw/é@M?áw}d߯ò?¶ö¯f³¨?í^rR ?P?Ð+ºùö4Ð?í—dsH–M?ȵC“rw¸?ï×àLÞ?ãš%œ»Ç!?©Ø=¤ ð?ìHtR™ª®?çºR3{Ø?ê@­�Ò› ?ë× Öñ?ÒØKÈçR?Û¸5¼�r?æ›u|-â?ï"{²ÊŒ?Юɶ]>?Ü}Þèò?½F4Cêû?ä£ÇŽbÐ ?Ö7‘X¼?̆Þ@ÒÔ?ëBË”?»S¡¦H?Í·“î]¼¨?­K À©?áùþñ{È?èö=Rº'?èh›ÿ™äÔ?Óãœö�j–?鲡ëK ?ëóÛ4o²4?åŠ~0MÃý?çc­QóÎ,?éTÃa Á|?–´XÐç@?Á‘(?ëè˜äŠFó?À½gƒzèè?ëßšWO¥†?ãàŸÍg?Ü/Ìb?â‰àtíU!?ŨR±0?àÌ¿(�î?éub 9¹Õ?ÎòZ˜Ü?§ŸûØÛ@?ܺÔ\ÅF?ÂNXÍ“D?çóØ—Q?“HŸÁÁL€?íÅàØr o?ïd/êa?׉ ê Î?åeüÀâv©?æNV0øÉ?ÊjW¦+¤?å`-rãt?â4ºø8ï?±ÓDÂÊøð?èýóD×ç?âaW5 z?áÉA‰íŸ?æs%;•‰d?ÈNk Ô›ü?ìE&sÿM?æÑ(ƒÆ59?Þïï¬ü©R?ɸ52‚ã¸?Øæh—'”>?Ò²ŽÅP± ?á�Ôd>]u?Ú�A J^j?ïýèá1‹?Òïë.‰x?å%¸?hf)?ؘS-ˆt^?ããïìzä"?¯räÚþ?í/.˜»?Ì•O??Öq_ÙQÆð?Ô%je"B?ìØÆÎ_Tù?Ë>dÙºt?ä+�Öçv?†ërd^�À?ëZFº"Ÿ½?îìófB‰u?èÓ#bX•?ïÛ÷L­#?Ϲ?‰/õ$?Ó±� ^–?ß.þÆT"?ä5*ħÔ?Ù�y+Uú?ëf#ý�›?Í}q€^äX?ë˃$mtc?ÕÓ2ª{?ç®gfª«?â†ÆB¢d?å `y<�”?§dÄTiµ°?¤Ó¥%õ†À?â‚�Ï¢?ë.Ž 8·?Ð×êiFþà?ê{OÝÞo?è–żO—^?É×ÈØ5˜Ì?ÞJÿ»Tø?ÒƒO´•”?ì˯’pÅ?ÆÈgé'œ?ìB<à´f??èÍü­ºÞ?ÐP¡ ­ŸÐ?æTëuÜž?çQ€AÊ ?ÞZK(/W ?è3¶oì8?Ñ•Ž5ÜÜ?ïÖç ¸x?Ö˜‹U¯0?Ï®4J•ÄT?ä)ì| M™?ÝP)ªçt?Ó¿]pË?ÒGd‘·?ê¯Âï�ˆ?æþ¢\„_™?À2÷aÿ÷p?ë“­Gá*M?¶¶´? ?¡v Kà?íÍkÿë‡?î@¹…?ãD‚ð€–?åDvú?ﷃݰ¶…?pñWÁ®€?Év­”?ÙK58‡½,?í¿ºJàú?ØÈ@T6à?ȸ\dÀX?à›c@—+?ä"ðñ‡È?ãD¤„�°?í5¦Sœl?èm”m}œ?ê.ÿø.Â?ÌY^’wÔ?íKqŠ�•?ì–Ù0¥ÅS?дŸp+V?Õ©znÂæ?èLBÃU‹á?âÔ_/ÂäN?äR­"{ú?Ù›U-ƒÑx?ß©BÍïp?å¤d0& ?Õ9a6×õî?é ÿ¯¯ ?ÀÌžUæ ?È9xÚGF€?ÑöåYÚQÔ?ëIJØe¦?éq‡ÄGy�?¢¼¨Í˜ˆP?à+–e@Ñ?Þ¬Ü`Άä?ÎþŽïØ�?ä˜4�’žÈ?Ëßý}¡Ä°?À$Ê›7ÚL?î E b ?áSð﹌?íd°•ÿ?à$*ðGÑ?ÆLUb�Ôl?ç~ųkbW?Êëìàš»ä?•�PPjà?Õ|Þ2¼É0?è ÷#ðÌ?¥IÙ—së°?ì‡FÉþÆÑ?éL4§HÏ?êZpoU†?æÓ`h�Ž‘?åyR˜‹ò?äiwqäù?Áì ²‹ÝÀ?ç­íJ9?éIVrý~?ÚÆ˜+lRö?Û$‹ð�Ä?ÌŽ õ€/È?Ü7K>ZÂ?ÐáÅ.šv?Û®ÛÏŽAf?Ì„Úíß´?í�–()¿$?Ñ„Œ¼YÌ?©à‹>È:@?Úƒš iÚ?ÂEÈ@ž ?å)ªaÞª?½6)é½ ?¬ V»�üÀ?ÝQÇ+=G¼?¿U®\2`?ئyÊí—ž?Á½«öÊÑø½?ØÂ±æ½õD?ìB�dôB%?âz�‹be"?ä{˜IU€?”ÿ*ÛÏ`?ãzúæñ/?²æ­z·Ø?í?›n’?î2DV.µ?çñ¥ÎSl?àT}t?êÅ]øâlL?Átm Ìݤ?Ö>áT?v ?ã-3ËÆ$Y?âóà^Þr?�`°vðW ?ѸþÞÀðÎ?êøÍšœ‡?Ø?·ÞVÖ?﮳?º×º?ç螸46?×Þœè÷ÏÆ?ÒèÇl• J?àpë#ñt"?Õ6ŽUÚæ?Í ÂèbU?í¬[`4s~?לû?'Š?çdj&è�? +Ó Àà?Ó�å”côÐ?àW¶ãó U?à�=¢Í?åVÉó�„=?ÙÏŒÎS?æ·û/Ýå?í½êéÅÓ©?¢hÐÞÛÐ?Ä$8£»vä?¢É5“T¦0?îDúV?ï–÷3>?êH™Ä¦+?â²wê]7Ž?ÓýÊŠ¹ â?Ó¡Ò¢•¸?Ì»—VfWœ?ëQ—«CZ?܉Ÿtߊ.?ä—³‘c?Ø bÒscÔ?Á,m†(ã,?ÓWW/ÐæÊ?ã×Å_ËÔ?æÙ?<k?íHŠ YBõ?ÒÈu€Ëæ?á/ 9'Ò?ÑõƒyH³ ?͇ºœ5L?á™–û²S?å“äLLju?ïz$b×Â[?ãüÏ}j¼m?éæçOÕÓ~?è�r³­?Ï-<ø-ì?é9¬ÚùÆ?Û·® [°?ÛuµËˆÖ?í(&«èµ?ï5¶0F33?Ñc]—ëì?à+)±?± q<ð?ÍÊûûÚd?Ö?$ó4õh?á;¾,9?˲-™$m�?ÔŠ¼ ¢™6?ˆ±«€Þœ?ï”Ì{Ê=?¸ÑRfù?Ú§®)¿þ ?ähC;Y~ñ?Á5Ü2¸Ñ0?ÚYÎKLö?Õ?äõµì)?ïÓõ‡Æ<>?ätx¦þN?Æ0Á½›M?î¯gÌ& ?ÚíÑÇT?â7 Ë@??ÏI@ÕÜ?ä mø··?ß-^·\ʶ?ضË� L.?Ó$ ?�?áfü&0`>?ãì¥PÕG?îëöâÛs/?çåÈjkÐ?ëKfÞ|‰?Ùø n Ê?¹d·xÀ?çžÄ×+Wý?‡ì¥Wíë@?ܾìÒs�?ã†��L.Ô?ÎÀì ~3”?wóp$Ðà?äE^M)¤Ì?¿ÖeÔF@?åíÊœt0?¿¾™ü‘Pp?¬õ |…Ð?Í„Äù!D?‰E�âKt€?ÜpbÛ~μ?â¦L îëR?æmBe6Åà?â’–º€@?Þi¾Ò?çºÀ…l¦?íA6‡.å?ájý÷ó�?ëK_®-`°?á,CÜ×àp?í¢dçýQ?ÐVÆ9׳¤?âj/È>¤?Úôïõ QD?Ý(4`é?Ô«åÝðÊN?âÍùJÃul?Òƒ$›L!ô?Љ¤-¤�?¯]”Àˆ@?︳�b”œ?ãNˆCŽˆ?Ïõ”ÁLj°?çÌÒ+«õ?¸Ãê–¢$˜?êòœP'ä»?ÙÊÉÐÐÆ6?îÔ¥Q©’Ò?î¿GÌG¡?½Ù…‹ž€?­L~gVÙp?ÖÀAˆ×Ab?¯ËÚZ@?êY3Òú—?à+—ÀÓ"í?ï�¾@œÐ?º@P?™ˆ0?ïDƒrôð¿?Ý]ïËSé|?å[™a£5?�zkšÚò@?Îå,O~z¼?ÕQZñ‘÷z?âš1ôS¸?ãÖ¹Ùº?æ.ŠÒ�’?Íñ•Œ5œ4?ÎF ¨UUô?ݸ�z…b?ê„JŽ!j?«Ç§Ð9÷°?櫲ø~¬?äÕöë ‘-?çÈpæÜÖ?æ¨ÉRPÙ˜?Þ”.„¦8â?¨Ü&Ò_ðà?¸žjûƒmp?ÙøëÅ>6?êºHC ‰?âÝýB ñ?æG^2�9ú?ÆbÜŸàØÀ?ëÈøg ze?ëv *Ú¤?â;¹6òiÅ?êc Æ™Þw?ØÿŽíKÔ?ë�8ûI©?Üa¡¼�÷â?²éÏósý?è¾z ¼É?ÓÖŶʤ?Ù‚WýGÖ?åÐ’2ŠÊ ?ê|ßÐH*?ÉÂn‡ 6?ÂñÙ¨El?ê²HÄ`ƒõ?ç=`Ùj$?µ”Ø#d@?Ðv¶ÖÉr†?âwûÌa³ê?Òц �¦?ÔwïÅa,¶?±3�]”æ¸?åµHže&?�™Fz?ãw«ÍŽç±?Ä�A¢W|?Ðm'Q”?Õ©ÿ#T?Ê3y…><ð?¿¡÷uDá ?ïÙ¯>ðx?Òý‚sCÕÖ?ïqƒ`ºY?ì„/ˆ¾Šº?ÈáŠùƒô?Í­ lÞSt?嫿ÃGˆG?èp·Š‡ù­?¾t‘ʦ??á}ø¦Dgú?Ë8�z,?á5¨wn¿û?À0¢”mô?æy‹J8¹?ãÛ­½óFx?î3©TFá ?çïWp¸m;?Õú5OW0?ʇ …_x?ìxÎ)g?ãi?`?Æhª"±,?ß ¤ų̀R?ëê+]?Ð5-¨l-t?Ýòx£ÖÈ?ÞWW7 ɶ?æTp¥Å ?×mª‘cíX?¿7"ù2h?ÊSzïI0?ã/êüc£?ÙˆLkYº?ÙðG~?á‘kåÅÎ?ºfƒ£’-(?á5Ù•?Õ²®ĸ?äV¹ÀŸP?ãõd<‚(?í“ðN]³?ìgÑÂЕ¹?à€Ðqk?Âñ[×jô?ç ÔÚãL?dÞ;ößù?çð'!M¡Ô?ÒÀñ©ý ?íÒ^W#D?µã¦ôlüø?å©Úrê?ÓÙ–»÷3¶?ÊSJŸÎ*X?à~n%¯??äø’˜@á?Ò\d=0?éÎËÈ0˜?Ú'z9"òy[j ?â€ÅWœ°[?åWï48f?è^ ŒÆOÓ?ÕÓÑ]ÝÊ?Ú_é ô¨?îYÄUÃË?© ¾s�èÀ?Ñh à!� ?Î&z8ÕLè?ˆSE;?˜u%fŒw ?ÎòP“]al?â" Ÿ±5?ÞkŸ`nÂ?Úèe±UlX?ÑR^j'¹Â?Ó Uùž¸$?Ø8jè°v?ÒFÇr?êºXîµ?Ü=¯œë|?Ô9ñË>?îeGQ5w9?¹îæ)ƒ@?Ñb"¬?ÏVZ3vgˆ?èŒW0?áöÒcvÂX?ìÀ£DP?ʰźD ?Î⇡\?æDÙBBÛÚ?ÑØ…4Å7¶?Ö‰Y ?1 kÎA ?àÉ4?Ø*G9Ãnü?é$…t‹XI?ê¨8£”„Í?ë·}¤Éȇ?湫}‘ç?î[z—Hÿ+?ꇋIëÇ?ßF©ýÂSž?ïæô†<•ó?éGq¬C,?܆©JöëÜ?áÎ{÷ÿvY?Ù@³UO2ò?ÜOu•ùD*?ÞÝe¥�÷²?Ü �w¸T?í�d`�ìÿ?æ�ßÃñ?Ï5nÖj°?ãJáÏïÄ?è—ÇQçA§?˜7,@ùå ?çh÷–7Œ?åÛšŽ‘¸¦?¼zƒö§û ?ìDÉõ%“;?è$È0Ó3U?ãÔOÞ2Á®?®óŒün¶à?ï'áFfµ£?ÄëlälÀp?Å~Ýa?⋺S‚L„?èÁ1Ó$(?ãŠ÷'�€,?áçË}dí?ì¯>öP{Œ?âf}Ñ÷%û?ë̪t÷?âDxå)w?¾|“€>?H?å¯t›ò7©?í¿Uø÷á®?ëÕ‡cîÚ?î� " ˜?ÜÐk¯]º?œUvz€?é…'¼vÆ?ÍÂpø´õ ?ÓL°\Ýix?ÀFkSö©ô?ØîÒã¡?壾ÛÁŠ?é¨Õgö?àCËP˜ÑE?ï)h*7fÕ?à’ovþ45?Ó­8Ù]ÕŒ?á,KÍÑü©?Ê4ÅãŽb\?ÓI‘ì?äÝHzV?—?ɳqà?ÒÀdó@?¡œê1ð?Áí€ò²)¤?¨CVgP°?Û£üVªÎ–?É;>BK È?èØ&~¬º4?î×–—àˆ�?ï�©µÜ?àWÜ�A ?žÒ0gÕRà?æò ž‘cn?Åœ´ÏÆ´?ïÜgúxÌí?˜3ªh2À?ËE�ûó,°?Ýæü»žH?¬nd ˆ2°?æx`’zÔ?íû!ý¤P?ì¸ËÉÎú¹?ÞÔ| $F?ÉkìZ“ô?ÕŽúéöÒ?³ÒÛ�Ç-€?”Ó6 3`?é’¸o[™^?ã<�¯.7?á ð÷T¤?ÒoæÕ0©Ö?íË �d�?è¨1œè³æ?Èsƒù6°?Üù°ÔGB?Üo7©Lr°?èf¨%ÈQ/?Ù)%K� ?æ¦ëI¤×.?峿'iUÉ?ã=EeèÄ?Ü·§¹Ü"?¶Èâߪó?ätåØsh~?în¼Ý:à?«š]™» ?êl”_¦{?ÊY>¸áî�?áѶ–ûqâ?Ý,à˜Úd?ظt?ª¬?ÌG&ò8"d?ÍÔe.`p?Û&ôEbÕ¸?äoäðÊÕs?ìÕ�/)'?áøDÑðÊE?ã»: ¾?Ò‰åcð?Üò•:eìR?ï ¬PÓ[K?é”ý±’?Ç¿fÙÝD?”l¼Wˆð?ÂärW{ˆ?æ÷à�Ç'Ù?ÈX…ÑŒ?¼ì.I°?Ùc½tUz?Õüü¡öSì?豈¡›š?è%� Â?¾É‹ç�iØ?Õz<}¡ Ð?Õ£ˆWæâ®?ëaµ¦a»/?Ö8…>G$?á¹ÙõBt?íOÃÖì¤7?â‡üF¾ùÍ?ØŽè�J8?ê×ÅŒ"*?Ë·tâvø?æÞj+pS?ížfÃë¿?Š�Èd4?ÛÖq°­M ?ïâU§®·U?Æ“eó—Ü?ã£ÅøÙÁ?ìè�+ÖEi?Ý3<ñ‹n?Á¸Bxy¼?ÙaýÁ–ŽÐ?ÓçT7�?àÀÿ}îG?Û­Èû è>?Ü-vþF€?Äd–Nô?í.A~?¤?ÎÇs¬âL?ßž(Ô(?éPQ˜Rv?ѪYM´P?î|O„X|?Û~ŽCžº?êï8ÅãÚ?à,¼®èÓ²?ì„tDbu?íùæ3Ê;Â?Ò×'ÌÿE°?ä/óÍ`ø‚?Ã�›0.Žd?Ón@ØZ¾Ö?ê^û¯‚Ô?î,½õ]Óy?åõnr/X?Å¡¥Eg¤?ƒõc œˆ?Üz’¸ÁF?Ö?D¼¶‡¬?×Ö£g†?í´/9%±d?äQ¡J$?ê|¾÷fH¶?Åy.üè§„?æ[‰E��¬?ÀÒ¨æÕ$?ž ÑÀê@?Ý:<’x§Ü?Ô”ç׆?轊jHTÃ?Å^áà[`ä?áÄ¿~ÿú4?Ö‚öÊKè?ÚýŸeŸ‹¬?àîY ;?àj’P÷Yk?Ðñ¡ôd–„?ã¤$õïD?ï�«o4æ–?éVq0ð?ÜÏ YÆ9’?îe¥¬EÂË?Ô†0è’x?¶=*Ï”?à…�f1?µguÁÜ*?Í([ôyz\?ݤHób$°?ìY1Åwψ?æj H‡ ?à¹P²éb ?ì©„•êÃ?ÄRÍRÜÌ?ß»ÒX}�D?ã0äk%?å;lA÷ä©?äkvé YT?Ösq&2?пI™À®d?ÒS u¡Š?Õ`ÿæ3Ü?âñ,M¶?¬?Ú§eÒ©?Üı •ùx?ê>êõ×"b?ì »C;>?° hP�¿€?†ö¦=à?Î ôçõ@?àŠkº¨TÍ?Û> ²˜ä¨?ÚIBªÎø2?ÂPZßyæ”?èò2ËG?Ý8jè«ö?œ¤u蜨?©»-ÐŽà?Á2CP@Æd?¬�—h@?êqƒž­š?ÐEB—X®P?ÊRô-êæà?ë®0ÖѤ‡?ècC�ØMa?Í6³¹5¼?ëêÌp ÂØ?âe˜–Wó?á¯Ûï³"?í ½3ë1?î”WjU?²…M ¿ Ø?�Žà›!?¦ é0Ò0?ï óåú?ä�¢LÑ×€?èxÎié‘}?êãïºÍÙ?Ù¢i¹NÄ?æ`œ‘¼–?ºm´‹ï·¸?ѱ pId?Ô!4‘ïL?¨t½R½Š?¼MHnZȨ?´¡$©gH?Ä�4 mà?îºX1š ?ê¾°úÌì0?ç‡íàçi~?áJî@_q®?ï,IÆ|n?ËÎv¤ùp?í,.M…æë?ÜR˜>Yt?éò²fBâ?×äÒaªâ?êV×úw¯?Ó ¤Ââ?Ó©r%Ú€?×8&‰%¼¸?ìT☿½?çBÝôÿÏ�?í@|H”?Öl$8›–D?Ð�½ ¬²â?îÛV¼b{Õ?éÞe*ýi?ïAù2K$?ä„–ÑŽ3?΂†-UµÀ?Ó3ÎûhŠ?ì“”>æM?à4_z±'?Ñd¼#Üè?ÜÜÂ|³|?êÔMk‹?ê`F�ͽ?á®[zÎ)?àA¥ø)ó¬?ㄱ(ïѽ?ÊÏEÌyà?æúüõÒr‰?»±K µ¿X?؇'UÄä,?‰ÃÓÑĤ€?áÌ¢>hÁ?á#“µ>ö?â;¶ÅS:²?Ä,b'óð?Ö5i€”%Z?ï¢�³¥o‹?Ô– hÔ?¾‘’`œ÷È?æ³™¸�?äãÆHí?¬Jfu�?ãŠHíõÏ?ØÖ©–3XL?ß­]Ìÿ% ?ãh¼<›Œ«?¿¬¡™€?²E è#®È?À@®Äå×0?¾ÜÓ>_p?« � S!ð?åq ìþC?ï­vfùN‡?è³2=µ�?ÁAta…Ð?æÞ\¦ˆ!?盂öó_?´ÆþÀb‰?éþ9í™?àÒu ¥½¶?Û?tUÑž?ÚoyµvÒ?ëû$þÃ:?Ùs xÔ®?ê;òl0PE?åyŒ»¹?ÕÔŠ Ž¡ ?í=py Y?Ô¹È�Åú?èòôA _l?ÜÚC¦ˆ?Ãh˜ïå^Ì?ã#þœ”DY?ß|Í70?Ù\µƒºô2?åx"óÇe?èóÃ|�9p?îÖUC„,Ù?ºÓÅwʼè?¾ü[›3–`?ãêxÑæ¼ ?¼Ô_h Hð?ã—OhÈÝ?è~p¾OCá?Àùžàx?Ý\NÙ4â?ÞwË=(+6?㜘üÓ' ?Ä& �ÁèÀ?æÉ‚¦€h?äÒ¢aÕ™?Û‚ÆCÿax?©Uzõ«‚�?ÑöT ªZ€?Ý Ê«CÒ?ã=õ“oè0?ã͉ν‡?ÛzOá£X?án¨7É?ìteêm¾?ĉ@ñ˜u4?Í)Ðm¼(?Nô†CŽ ?êñ­aÑ{?áHsÈ…l€?æAÇ€Lµ‘?Ö€¤À�“ì?ê©ëô‰§?î÷gUeQ?â©Ï/jê?âï4‘Ôüt?îÅÉÆ£m?è^Áƒ&œ¤?äHá1:–k?ÓDÞÉyÀ?î�†¬ t?íèGsP¹;?㔿@Œlá?íö¸P™ ?íܳõ®V?îá!‰y7„?·Í:¹°98?ç0r³»@?î°*‘Ù[?Ôáð¤É‚?Ñ#kFT¼,?ïÞxÝÑ?»\z ˜B?í°i´Rñ?Ò ·WÛ.?ÞO’ê€Û(?м$ša|?°žhÜ'x?ÇÀØ*ï3\?É l?wæ0?Ã8¸·P?¸’aMø?á»ñ¼B Ä?ݨlÙ¿¦Ä?Ó,#ìúJ€?ëoL¢qhÉ?åW³¤?Úý"ñt¥>?Ψp�Àp?â,þ~n?ß4%X£G?Äú“>Fýô?¼ø„IÏè?Á[ˆlk‹Ì?âX˜¾�ú?ÆŽ·öK+t?æÖµÁ}¬'?á˜âE$d…?Ê; ‘Lµ?ÐvRfǼ?ëf�/&Â?ØÃª�OŠ?çÞœ¥°6U? “‚YYÈ?Ãw%ëNÌ?åàΡ'h?Õ!à¡ÎÆÎ?á›Ii^¥š?åû)ÑÛ«>?Ú³0æê�~?íúÑ®C?Öp·­{~Ð?è%O5/ƒ?Ö Ø¡ü#(?³Z1¯–¾À?±åÔÿz?ïw .ôC4?î «wÙ’O?ÝMxÜ –‚?å裺bò?¦¨[“)P?ì†1H6¿)?Ò®ð�ÿ ?ŸNüleÙÀ?ÛóƱsB?×ÏtÏn—P?ÚØzV. J?è¥þu‡_l?ä@³x8G?áC5¢½Že?¹.b`£åp?ׂ¸‹/r?ïö.Yú9?Ü‹ž^gnØ?¬=‡qæO0?Ø}kv–ì?Þ eYBó?Oé™:u˜?ï7ÈŒ·†—?èM¾dP£?Ý\Ù— †j?Û·z(Že~?èe®”HGä?ÆÆ,V-÷t?ã/ýn{ ?áÌ�ï#Û?ßHÙÓŸ¬8?ÕèL�¤?ÃG.n²�°?î9jº;?Ûá¦"<?ÜÇ׀«ø?çFs®fý?çÿzéì³?ØŠ örÂ?á -’AÂÙ?Øö{z?éVÿ…¸®æ?íï�¢Q´@?æ.I´§!o?ß1{1’?·¿C,ä·ð?ìhÊê·?í×Ìúý†™?ãE‡rpŸ?ïøÕ\ÓS?Ú#¢Ñ¯àÐ?äÓi,xå©?ê[1[n??µB/r©ý°?àéG—ŽÈ?Œa¥òð@?î%›Ä™«à?ßà/m†´?é‘—…§?³•‡–J©h?â¾¼«Ïðf?Ý" %àî?y-mÆ6V?¤.yßi ?ìP-¢F`Â?ÅÌ¡}°Ø?¾p#œa‡ˆ?¶‰¼×?Ý-HRø[4?ÄpÔøý´œ?ÇÉm Èx?êÛéŸaÕ†?× ]W”z?ïï�ê¸ü?ç]wY•\?âüêKA"?á¥;™à?ïZÐZ¯è?æAÿÎ$ÆÝ?Êôè?ß#fß]àê?ákÒMZ(Â?ãuÜFl²?ß&ê×�D?ãû —&Ü4?é1OéÈë?ÎózQ°?çBžâº®Ý?Ý”‡ŒÃ*?ÖÖmÞf?ãƒÆ˜!?ÔÑ*щIN?ÄìÓÀý�?ê“Ã" "‚?ÇyÛ8­t?稡¬d˜S?ïöó~¬Kô?Ø¥GK–:”?¢ì©›Bt€?Þò<×ô8?ï¬ùLÛ?á"µ78 ?ä† 9ãê?¹#ëíc¦H?á¹Òî_‡ó?äÑ=×>ó?ß4”üHª¼?Çå�¤;À�?î….·–Ù?èÞTìFþ ?ä†<0m[½?íŠhêÍä?ÓFÝdr|ø?â—ÂW)ßN?ï÷Ž$> C?Ò˜¹ÏG¶?í… —ü?Ñd ’¥×b?éÇ^,*?ê:å¿>z?é/tÚ!0?íØA6>a?Æž.îGWÀ?ÛŸV}=?ä„9àý·?çŽg3k?ÄÉx€¬Ð”?ä†Ñ ?ž¥w"ß`?Îø~fPõ¼?Ñ4ÃÑö?Ö—¾Õ‚ÉÄ?ê®,—Ñ^~?ÚU§:Ë{B?ì,[H/õÑ?æœ`1 ãµ?×æÚ–&˜>?ì¼j§l¿?çël¢}é÷?âñn…éj?ì~ÉX�¨?çyÀµ¯K²?ÎàåÑ>N ?Ö,ÊM@,?çàÔýQƒ?Ó5½?è¨ù~>:?äíwªâ›Ò?âÝrÞÎá?Ãî J®� ?åm™p¹‹l?êL�L>À¾?ëSŸ^œ?Àÿ»�b�È?Ý}�y�³0?îï”ðé+?Ûwj2k~\?ÑúÎ…gø?èµ1Ö Î�?š²8-‹ ?ëÒ’ õåO?ÅÆ‘Eƶœ?Þ÷Ì>Qš?²Ñ}¥I§ˆ?í»âÃMâ»?±½û÷ »H?êx« ¦mð?áA ã®êð?Ú9i'q„V?–ò¡™€?Ð:w·R-¨?Ü*iJÙ‰?àJ�=d�?°I‹ðEP?ãiAã]·ä?íþ94ó—ÿ?éë6ð1žv?ã#ŒÊð.÷?ƾ¨I›ÅÔ?ÐÔÆòÇá¦?îOõ§rY¹?æþ†M-A�?äG£m|ýa?¥¿,ßÐ?ìº nS�ì?è&6§°?â6wÊØn ?Ô¤šN«À?âVŠÔÓ)ë?ÅTlÓPµì?ê†ÖX8Ùr?ï0\Ó?Ú=^·ÿÎ ?ìý $Æ�‹?ëñO2?ÄMªÁ´ì?ÝGÚB:{ð?àÜæ*KÁ?¤ôÓ«AÐ?ÓÈñê^?Þĵl–?âUS¢PŠ“?ѱKåÏfž?ïÎ3ªìÅþ?±:�—M¸?ë‹?|þ‚?åo�ñŒ ?èÎ_ª¡… ?è«ßÁúÏ?ÅáÃiZ0Ü?ßwßøm‚ ?èCêz,±?ÕÂïÖК?à?Ž»ÒEÞ?°éµ8�ð?ÎAKve_?Âp€@æð$?íÖÖfSâ?Ô'_ X0?Ós+dv^?ѺÞ÷õ3Š?ß'–ߘîš?ÓÅ-Äö¼?å¸3¾lư?Л>@¥Ô?Ö+|‹ççr?®ýeh ?ìœM`1–?éså@'g?çæàÚi?°£òŒ‡;H?¤mu¥ 8?Ê£5’�t`?ãSf˜ß-ï?Ö†O%va2?ìꤧ=ó­?ÉõásDŽ?Ö«tú/J?Ó8ËQ¥ d?ãûè¢v‚Ý=?Í7Ǥâœ?ÑeÓU»\?ÈK¶0¾6Ô?Ð�TAÈ?æÄø"v�?ãu±¦’Q?î­£$¶ö?íõ©T*ù?ëo ¥õ?ÒÙè‰ÑLˆ?çc*³5o:?żaá{D?àùZk›?è¼Ý^¾K?ê%* ï??é@ôKD?Â|÷g¶?ÚÐDÕ%¦ô?ã�ñ3ŠX?ïÝôC²¬•?ÊÚN‡nX,?¢©n¯ö°0?Œ�¨ØŠZÀ?¸ð£ž‡ø?Üöæ¯}®?ÙìÖž; x?Ù­GEiA?ë±êD_ÝÔ?‹fPW3?À4\q f´?çïÕg½]?èÙNË^º?—³…ÒŒŽÀ?ïÉ ˆ.¼;?è\‘/Ô™?ß�óJ(G¦?µôJ†4ð`?ÙsÌ{ƒ¨?æLH ò© ?ÓùÕÔôø?äEoxÚø+?å3ï�Ey¼?áA� Œ?£Bòåãnð?àé8ªG4?ß9Àœ ÇØ?Þw˧H?ât]ö?7¥?Ÿ‘D'åÀ?ÙÁâsP?؆oQÊx?áG+ì{‘?âq¥é•³…?Áo¼›L™�?ã¿&OGÅ•?ãø¡D§ü?’½…¦ÅýÀ?ºV 5OØ?Óí. ?ÂõÛ>€?кüRC€†?ØPœ·—Í€?è¦PÖñU·?Êj·8Óñ0?ÑnW7¸‹?è@¼«Bx?Æÿ@k$.d?Öä^JÁP?îdŽsŽ¥p?ÜÞ¸K$|?êß0éZ‡"?Ùõ½ â?ÁTR ø?à„¤ÒÎÑ?Ý Æ˜Ðd?´Œ®`lh¸?×ä‘{mWB?æ´e4#rÄ?íÎÌßä}…?¤ù}2C7à?¤~øû“Ð?Ù¾¦%€˜?“äÂík˜?Öqú²Ýð ?áÀkZÏ×¹?í¤wü©»?äIÓ„?ånB‚A°?Ù.^M@?Ž?߉ }›�Ð?íx6ü�?è–¾º šû?ÁÐ/é(�8?¢d¶þ` ?äø8 „U†?ë”�Œmá?ÃÐh³®P?Í$¥F�|d?팖ùó>À?ç¶ÿžwT?ç#Þèb]?äom�Í?áæJÆXDˆ?çäM׌?¿Ixši>À?íÐá¾ Ì?ß·Ò6PZ^?æ—›÷ÛØT?×ç#¼Ýž?â&ÝRÆtj?érzkñ§?ëL! ê¢:?âíŸùo³?Ùs$WÑ,?“Gý}/üÀ?ëî(µòCY?Õt‹cw÷š?Ýß+Í'Vþ?âðõ…?ÕX�àÉ2?϶ºµi”?çšÃ�—êã?àÖ½ûøñ?Ó´‡³?Ú¼@/…Ǽ?«"M½kÏà?Ï+·�#Ìè?⼧⦉?ì„®�È?Þošzข?å#j÷µT?ÖR9Äî@?ÞƒÚ(È?Ñò<@ý¬0?è-¹Œß–é?ê—/ä÷¾?´ÊCHø?É´µ‚N÷¸?Â¥3AéÛ\?º%Hò°?ÞçrRx?â"Ùøl{?°…4edg˜?îMÐÉË �?ÕnWýS×&?ìB �‰è´?æ»Üê¶?Ô²i~ÕÚ?Ð$1%Zî¨?¿W)Q„ˆ?ÒyC²XK’?ÓC؇ÏÙæ?å�Ç­X.'?îæ©‘-?ã{¥OSÇ?ÕJÌqân?ÕÒ࿾6d?à­ì÷`Œ?Ä<ž?Ó»èÒ \?Á`±ƒ‡GD?îMWÞó]?àŸÑ?�?Þ :ÔX?ổ*Ûãö?Ýÿ‡7Ák4?³ŸQª€ ¸?«vBÛ¹p?Åþ@Bæ?Ê6Ä3(h|?Ý�½’ùl?Û`ßCê?µkT'‹�?Ü‚6?É¿?íËö98Y?æ¼ØœØþP?vV}Ý$¬€?îGÉø³¸o?ÜÄFcÒbB?ºP& qè?Öuã¸È\?ݲ“2‡¦?ï>Ó®íP?ë¿^ÿ3?ï÷—-‰·M?²7ÝŽ?´Df¨yƒØ?ë ž¯�R?vG§y·€?Ðü®FW†ž?ÁZHmªÇl?èwq�ož�?¥DÀÍ9Ð?Ò¬ _S4Ž?êaŒ†%Ý?ïꔢ©T®?¤5¸‘Ú`?á‡ìµ5SB?àÒÈHÇn÷?Ù\ŒúùÄÚ?ÒŒ~¸ F&?ÇtˆÐ§d?í£ òÔ K?çôbyE¹?ÖôYš¯Ÿd?ÅÑk–°?íV� �o|?ÛI9•�†œ?í‹ßëóÈ?íÄjÓ´b?íºtíó•?ç°¼ÓŒ&?êyöøGµá?æC�›c¡3?Ú„ Ì ‰?ÜjÖÓˆ¼?ä;cé³?Ùž°3w²?Ò�¡j˜èz?Ø•~ŸÞþê?ÏQV±?5?êÓƒ?ä‡�«4gð?è¬eËyµs?èžg{·'ˆ?·®Ìšˆo`?é'sÞ1e_?Òn¹dq”?è®Ô�ÇÉ?ºóáòŸRà?ѧqÎH?Õ¶I^%?é15~6~•?°KŽêèøH?ƵfqCí`?ä%ž/”Ô?íï¼%i.˜?åHñ¸ù‚?×ú�¹=Áø?ìs%ð’.?äæ­ŽÐº?è Ú’e‡Ó?êkÏŸ ?È6>›˜‡Ð?”Zñ1‘€à?Ø‹i6µ"?ë÷êN+,œ?ãÆÜü¥“ú?éù@c?95?ÁIÄê7“ ?܃a@Ãh?»zMœ|(¨?åh† SÁ?År✜ª¼?Ûèópð?È(XºB�?êš³Lªÿ¹?ï…Ù'ž·¾?—~‡5´?ÚÀ(Ûírx?é{€Ñ$?Þ²Í�-et?í oõ¢?ém�y�?ìé ZE0ü?Æ|·—Äa�?áë\C“Ò?æ�$eqAÿ?×[x“’?Ì&¶_íŒ?Û®€²±Ô?×ð¹QØQš?ì® …ñ"×?éÈÀF¢H?¡¨Gôß±à?Û ©¿‹?ï>,/GÈ?Éí­³Èë¬?éÁÀMwƒ&?à†ÊÔÇ ?ç¨Ê›vÛ?Êg‚èŒ?‚· êVÀ?àë¥Ç ¯^?×s9 ƒ[à?ß\òF"Û’?åp�‹2Þ?î__íòý ?Ô‚ûÕ†?ï�s —7 ?î C sd§?¿Ë1øÈ?ë�dµ çA?á*1L¤?ÈT3^²5À?ÕWqo‰^?àüÀs�Óâ?ê_ȶü‚\?Ð;7¥ç5T?ì¢W;ã2d?îÞ•Kâ‘Y?êkGÙï�?ÝN“ÙI)ü?È8zqâ*ì?íG¿Q9,)?ãëOqè[Ž?Úñ"› =>?Ô�<(n¼ð?Ø�<³Y¦?Ùåèéy®?¹”›ZOöØ?î~”vm`?Ð1mf9N?ïªá¡rx?ëåP4÷¯˜?Õy[�tÒ?ÚŒ5ߟ‰¢?á¥ëøt"?í@Úˆ±:ë?㎃Yç;?¿š·ŒhÈ?ã¼eÉ[RQ?âÒÀƒ»«à?ÒÜ"®G/¦?ê™1ô\ÝJ?á_¯¡•µ?ÐUØ\+‘ˆ?årö"iy?šFˆ‘=à?áó s<|?碅…ÏP?¶9 øn…?ã^ïz¹Àu?í[âÅšŒÿ?Ý Œ’ûu(?ïÝÕ{Äí†?èaª²TRE?Û¤»uíV”?ãÃFÈ Ðx?äî.�™ì?ÑsŽã¤?¬Wô6Ù ?ì©æšH,œ?èhíÈw†{?íÈ"¶€u×?à¡R §!Q?Þ=ŸÄmÔÖ?í\¼¨Ol¬?Ûm¬³nB?ØUzŸJ×Þ?Õ=Øw§œ?Ý3?Òcü?ß/¼Üà?ãÐìÛÕ—?ÉŸ·±`ð?äYß“ ëX?íT~´“Òð?ïŠh·?¼£s€óÈ?ë¨|TŸZ?îcͺ®Q?«±áž:P?ÝþºÝ°ø�?ãåB!fW?ìà„š¥?¤ªËÊY ?ä|JöÃ)?Ë£“0È4?ç‘î'¯S?ÝÐí»Ä,Ú?ß²¾?à§³ƒðU?ч”P­žò?ß ¢Š‘¨¤?íæ3¦“ij?äL7µ#a?Ê6²Ãfè ?«�•Rf?ï›QU”)í?ÓC.þZ?ä[¸H—T?ÜÆ3ù=³t?Óå*mU×d?ËQgãEd?ÆÕLM?ç~ù²ˆÁD?ßì4o’?ï¸JNJÊ?ꌈ‚¡?ë0Líå?Ü|Ÿõ?ÌAæaiH?¥èŸˆ§í ?㺇ÿÓ?ØV N$?ŠžœF±Ð?ç.ÔÀ¯©ý?îUÍà‰–?Èf­Òêæ¸?çTIlö:ÿ?ÆóÄ7–¸?åfÅá¯?êÚ¯$¾P?â«<±“¤?É�2IØ?Òâ/Og£,?£Ù©ÈõP?Æ›}‡ÆÐ?ì÷+-H¡˜kt?×øœP*Y?ê]—w´E?éƒÅ- 7T?Õz!·™œ?ç…†»ˆè?Êv˜|ÌmX?Äf)Ý#?äOV]Ñ£T?îI²vb3:?î¹5Ö&æÒ?àê¾”z?› ™U{6 ?Öµe¤'~?è7yól?äL qªô‹?•Jó­áÊ€?Üûk…9ô?ëRPŸ�’´?⇅÷ïõ?æÆ;ü«÷?Û–! ªeÐ?ì/�æg1º?Ãêew=ñÄ?émb˜Ôx4?í¦¾ö£å?Ñ39ã‡s²?èkH¬è›?êUøœh5?µ!Rt¬q?äsa6‚çw?à�Ÿ_),O?Ö’'â¬:B?~ça?âÅZÝ�?èº`³7?âtÇ:ú-?t§‘j¡0€?àåþP›~ƒ?ÌcmÿvŒ?݆¨†mÊ?Í‚¶uÌ�l?鵕؂º?ìÙˆnXå?Û.áו¤¢?æ­Ú®•Ô”?Âç*Pð‡p?æGsø1ïœ?¤5\#îàP?Ãl¼ç ®ä?»aªv‰Ø?œ‡^¦¹š€?áõzC˜…?ìÕ"!xüŠ?ìö;ÉÑý?Ân©~­‹Ô?æÖÌà&X‘?庸>½f ?ݺd+ë‹~?áWKº§Ó?ÊŽš:Slt?˜l#ýZšà?ÞÕbºÍ�Ö?ã¿J¿3˜\?Õïî´?e ?é ÓvÚô�?àCh³“RH?àºp„(K?꘮»ÌÄå?á*¤AC+M?åݹ|þ‹ì?ï©ú#Yü?è,‘Z˜êk?å�´7Ø&?Õ Ï£Ùåp?ÝóRíÝÃz?ä–Åñ°4X?Û��šá(ø?áþo½£2?¿ì§<Ð?ã¤]‰z€?Ë¥èø?Ìíg§6(?êc3mñ-?ä~…ßá"Ï?Ýÿc&æ?ï«[)ŽEE?èún ±?·|¥QÌ)H?È}š÷s?êe_P‘Uà?ëwšã:z°?“; tÛÖ?ØÕ"l‚?Ò®ÿ÷f à?ëÑ€š2Ht?ÜGI~&øâ?çR¡ÆL˜?ÑeiɈŽ?Æ ~ §ŸÌ?ä5[0'ø ?ìì ¡Ò] ?à(’1OŽÔ?ç_ÙÄÄ?Чû¨”Á6?ÝJz¶ä÷ö?á‘y,Ã×y?à…ØSý÷˜?áÛšõ?àÓš–?æ¢Kap¤û?ç²³ÜîQ¡?ía�È~i?‰ç6jZ!À?ãÇÊòÁÝâ?±ÕÖ$4¨?é|{¦ß ú?Õb#j­|˜?ìpèìÉ–g?Ð{O³z?â+޹¶‚—?àMzwÌÎ?éÛr�!0’?ÂÖC±ÅùD?éÏ?¥Ž?ç -M¤Œ8?ÚM?ÆûÌ?½¸uâ§Ñ ?´>~s Ü`?Ê«œ÷•*D?ÖZÇ¥Tº?Ù®G‘Ï,?¼uØ£,?ÔƒRkÕV?Þ|½ æÍþ?䎃 Þ q?âÂñ8ƒ|\?çI,<7Öå?è8ŒíÍ=ç?äEX{ ¬˜?Ó·¡t˜ü?Ïz_3G0D?ê"Êrcj²?«ÒñcfQð?ºPHɸVø?ÝTÿ3|6b?ÆO[©€ØÔ?³BYìtå@?ÛPbŒ?Ï=pRÖ¤Ä?Ñ5ZúËD?æL‹À¹cI?å�“%Ò˜_?Ëæ¥�O$?ëÒ“h~?ïî”r5MÑ?Ý÷±Çoî„?éÑ"r+r?Ç9L²µYD?î Pñ‹=°?â.!R8P?yË<ãg€?ÕkMßœd€?∞l?àïÛœTS?æíŽÊ4¬.?ËK”erµ?æ9£Eð?Ðx¥âG§~?êˆP‰?ì›ò Ó?Û)þ©?Ùé&ä(š²?µ$RLsl@?ë±Pe–k?°¿=—@?ÈäþûêbD?ë2‰áX·?ï /†xÆ?ÌŸZRõýŒ?˜à˜’öR€?Þ\¯—p?·I§¼—à?èòƒP(Ø?Ò.õ�Œ?íë—ñ…?îÄ ¢‘0£?ä('%®©c?Û”Í=N¦?îò ì¬?âóe4ç?Ù†æzŠ f?МúñÊ?ØßÒÿ¬oX?ëâóF2í›?å°2uå³§?àчì©s?ÝŠ,ãh¼?ÆTƒÍú\(?çU—-Ç‹?ÑeͰÇtj?Û;>“O¬Þ?èSß�‡?æ/ιՠ?×Ê�êq`?àò±Âfò.?ÁËj†(„?àË›?–\X?¿þ7ÆÅ(?ï©ÖU™’ÿ?í¼¹<¤ÚŒ?å¥ùÚ wM?Ü<;ÜG¯à?ÑÁ“³Cv?«†ž8O@?À&øFVÃÈ?à÷qy»ËÉ?ÐÞtr7ëà?âjYж�?ɺ-é?ÒN‹â'Í ?ç&c‰ƒÏ[?æjÃ;èÁÄ?âÌLÏd M?Ñ{º«=zš?äó©˜^?ÊYvÈe¨x?Ù Yˆt€Ö?«æ|1/@?Ïú¬8¦¹$?äÈ0Ò:Ú”?˜¸¡ãØ?å5A¼ñ¶?î&ž–HíX?ÚßùÏ9?Ú$•$@°?×2]#�Tp?ÀÚpî‚‘ˆ?Ð7³—˜Òæ?°ï' …ãø?ǫٻžd?Ü!GÎ,?Ó,éO—ì‚?£€»Àøp?Ððö¿�b*?å%Ê;‚?ä¶8A·ƒ?èØ,0ô†?êïƒè‘€'?ÌÑþ­I¸?íù½‹ÅÖ?²Ä޲ª ?ÐŒå|'áî?á@ÈÙ�þ?èûP„ëü‚? Òú¬$?êi4É ÉI?î.Áò/Ø?Èîƒ4%?å`mEgØ?ä™äCÿP?ï.úu�E—?ïÂ)N'Ü?ºr«Opñø?ׂ™±È?íšËƒSçm?̲ªåÎdd?ßèU�#+z?Û¾¹Ž´Ï&?ê·*»ÿ$?ä¦ÐOüQ?êŒ*»èV©?éÊêÔÚÓU?ækL¿Žè[?Ñ•œ.3Þ?¾ÍO:H?à)9U²¨¢?Þ˜3 Y4?Í­œ¼¸?í–ÉxÆpî?°� X ?É(÷i6:�?à ‘ËŠù?çIõ#þâð?àû.\˜«ë?íø†L“ú�?Àí&žZ@?ì ­6ª±Z?ão”†pu?Ù(j*ÐÀ>?´š‡FíËØ?ë¤ÅùWç�?êµ _Ñ-š?ÚKÞ�¢Ú´?íí7ÚlÑK?Î Ôƒ6?ÐIúñêâö?î„) º&U?×ü™ÌA?ã'q_ûÑ?Èþ÷È Iä?èbË4Wj?Ò¬ýiYWò?ׯ—2Ñv?ã:xй5»?åí5×~è?ÝPø»Køè?âÐýå5Ÿ@?·ž¬ ü¨?¾k£·è?æêlðêb¾?Éâ´§@à?îÍ÷Å¢ùª?çÔ5†îØ?ãíVðÇZ?×”—Aû|ª?âÍGÆNŠb?�ÁQŒöþ@?¼2;wÕÙ˜?å�Cá° ?àç”GL2ˆ?ïÄ ?à_Â?áÉ 'rˆú?Åö1ê3œ?äÉWuñ>?€}ú¢¿âÀ?ÏæŽ<`û,?ãDÆZ.ÞÙ?á ^NC ?æ¶öZ¢æ?Û\.å—¬?Òˆ›X ?Ÿ¼õ�Ë#à?î’öR'È ?Û(‹7ȶô?å +*¦¯ô?å?c·�?Óæc�©ò?èp yÊÌ?¥–œ‘ ?»ê‘ýà?ä9^¶P?ÛæÝZѸ²?áôs4?ãSº¿ß ?Í.ŒQÓ¬?íÑ›„{í“?ê FpëÐ?Ý §ð™¸?ëfS‹=ï?s"·•‰Ý€?Ÿlþ<"îà?èKzà¨AŠ?æ—ÃFF§W?ÑÍÅÚ7£Ô?ãdÀ›Gª?ØÄgYCIü?ëÃñ{�?ÏŽ°Mè'´?êÓþivç?Ì=vÒªò€?ÃôÓÍ—T?åw,a-?ÉÔ4 &˜?ç*6Íyú?¶»Ùj$0?ÖenÃsÕ@?â�ÕÕŒÈ{?톊�ðúÐ?±'¢c¨©x?íûÀOé?Ëdu’*à?Ítû;D[œ?íôœ«ºà?ÓIB�£?Ù™˜ª ™º?àGÜ¼ÔÆ?ïhæÙê?ÜŠÚn~éh?§îÁQpøP?áÿ¨tì]~?ìÖ�JUNÃ?Ò¾UÌôÞ?âQƒ(ùïð?´OÔ(³¨?ÆÆ¦‚—��?æ{þöÝ?éd.<¶¢^?ƒ'�t?ä½± <Ž?Ïh�bH€?ÒÜýz?øê?Ú¾H‰Øø?å.è«×�K?È£vû´Eì?å=ï"vß{?æédáºÀ?á°ñ×mðB?á =ù·Ö?é¦ jJI?ÖÍU(lì?ÇhD¬2θ?áa«‚ëši?Á½F&š,8?Û,¬žC-”?ÏÐ=nÇX?Ï3_Slœ?ä„Á œÈ?ݦ¬æé}R?âõ%Sd×é?»w8ÈX?£.s¢À?ç ArdÈA?ÝX˜˜ÆåZ?F™-…aÔ?ã`ϰM�?î(ˆì®?³Pò’ ?Ù ;Gê?êûîÂáö?åœìß™??ä3Ýw¹g?å;µž�ÔU?æe!VðÁí?ØÓpZK6f?Á‘ÿ?¬€?íÅùÞIE]?‘õñ¥K?Ђ¨V%á’?Ò+a®Ud?àÏòV?ìNLn”^2?ïçó‘(A?äÓØ´ŸŸQ?ÞºñÇÖÈ?àMÀ ½{y?à„¼6Pö;?Ö+d3H?äÜ‚V…R$?âÁ£òŠ¿†?æóvQ äÛó?Ô“[¤Ïø?ÑÎe™p6È?æÜáëM”4?ì7ß${?Â?í 'œ?¹ú÷r!pˆ?¢J®ñŒÕ ?Í!§—´?ç>\Ô¾¿Ë?Ú±#u j?ßçäªÀ?Ôe �¥4¸?Â"7”å°?ГÔ#-†ª?èŠD%2#*?ï´œbT̨?çä4–ì*Î?Û Ñ@uvŒ?¤óCAmâ€?éc¸•ï0—?À�~ð-€?ĢƂC¶?ÁBº(%C¸?“’qÞ ?¶ÂV™p¯¨?ï]ߟLÀ¯?Î ñò@ 0? \Øì' ?Ûü!É b?£¬§0NÊ€?åÞ½³Çq?£®=>ó‰ð?Ê)3õ�/?Ö\y{¦âT?â$û£bé?×Ãï¶ÌÆ?Æ~rˆsÛ$?â¸�\Ã&�?åúòŨü?Ře'vzˆ?æŽ1œD?ì”GÆL?çFÛK¬˜?Æ™'ÌÈð?Ô“øH¦™¶?ïb×È{^Ð?ïñ¾·wÞ€?és…Rm›¼?ªÉ*û÷ð?êo¢Ìá^?Ñ"8ªÇn?ç’*)€?à÷‰9íb?èr…ÌZ°‹?½ÓåÑA¨?ÞÌ<•.ø?è±Þ�tsx?ß%[ÌZ:x?Ýô­â¸T?ÞP$Ô(“b?Ç·Rá!Öl?å„]á|?²·ý ëq?èžJQœG‘?ÒøäR÷ÈJ?âÃ1?Ö>ßôÂξ?Ó\}E?Á¥“u°?íæU’Œ�??ãT½ì¥3v?ÕŒ,"—�‚?áIhÉ“ä)?Þì¯Â-²?éÅ¡X†’?ßî¿êXL?êS£¡Ý¹u?莳%]=?åO|>¬ô?ì�Åq÷‡?³fvŽF`Ð?ã�Ý�?áPE8öwë?­Ä&ù�3Ð?à Kb9ôw?äåÑ,Ìk?è;äV›¯ï?á\²0“Èq?ÌŠªg·@?ʲÝLîH?Ü­6((5j?ê ƒ“ñÉ?×F'g9¦$?Ü“Ÿâf?Š?ç¥@W8k?é}M1KKo?ÔÑ]O&Ä?â®´³ÃîÄ?ï‹i¾È¦?Ư&z‹E,?²�IdÛX?㽬Óu©?ìª^Òg:?°`ÎßÞ?«+X•D0?å{Í’�™?Ã9eTˆ?Ç5$bƨ?ç™°«?‚?×´®çÍZ?傳 ÍQ¥?éd ˆç?̉±ÇžeŒ?ëTyؼƒT?ë’ø4*®þ?¾kÁU�ˆ?ì¯xÔa?èàð¨úT?à#A%®/÷?ïý7õÅ?ÓNõ~…`8?ÞVa}œœ?äÓB(7º?á~¹sãð?Ïm©uòF°?Ñ—}%j¬R?æÒh±ü ƒ?çBNÔ“yÝ?Ò¶[!—`°?è¼J? €+?ßNi¹ò°?à–JHqû}?Ù’W;w–?µ/yGH%x?†Ã@—@?éÔI©Û_á?à™ öô?ÏÛ¨�½¯?Ø””vyÖ:?íG#8ÆZ?áLä„§Å?Í`ÅÒ¸@ð?ÚNuÊŽ?×�bê.?ì 9«iÀs?évÙH¨?åƒ|äŸË…?½³D{¶] ?æ=:q%Êt?ëÒùûåMã?êzuï2Ä?Š5‡ò@?âÍ{A 2?¦ð.ú9o�?»IU¨ž;?á4ظ]h…?¡ÝéêÐÇÐ?±¹Ô©Jð?àjjCâWÀ?Ò��ú,mÎ?îî8¾ˆœ?Ñ­Ì68\ ?ï&ªqG?äq49L±õ?çnâà !ú?Þˆ?1Vâ?Ù òˆ-8,?Ú�isþù‚?ÈBëëÀÌ?ã|Aé‘gž?Ï>í�êä?ÒhNVôíê?é$ìcæ ?íü…}¹?ïlBúþ?»O–Çyè�?®$µx¹°?Öv©•Y´?è!逡Á%?íÀ.‰§¥?å©3_Ô{¥?ãiÓó¿€?Ò³r®–ï¶?ìA =›ä€?î‘^h".r?çÆòöÙœ?Σ|¦ñ|?î¾ÚYsÆu?æ·#—Ç?èn÷f»À?êˆ:çÙº�?âs�*ÿ,¨?ÜÖeíá¼?¬DxwEP?Ñâ;‹¤>?ç¢~Á ?æ£J ª#?Øn»=1€?ìØôÜPæ?ÕÇÿŒ²w?íûà b„�?嬶m„å?Üs.Ïí·”?å|¡‰±g??„>Í·"@?á'ø¶Õ€?Ñ©ÎK§T?î¶.ªׯ?Û¶ÝóJ?ï9v+‘$Ê?ÒCbøò?ë! ø º?à(ÝŒ˜×¿?׬jšù—?Ð9÷sh�Z?Ëp€ýœ£”?ÍA©Ýˆ?ÊÛÅ*|ë8?¸6 Èš?è(Τ³¸®?Ä—�Zêˆ?âƒÒKß7¬?â¡crIÒE?é烷ËSH?àì½Vì›?à1A:ñV?îxÚ?fèI?ëNå Ãì?§.Ľµ$Ð?ê®®÷*WÚ?�Á¥qxÙÀ?“Yò-pýÀ?ÇH™ÑÀTL?ß å:FH?º¡8t²ø?ïS““r?ך¦¯ÝQˆ?ì‹®G”ž?í«ƒx?ä¡�€FJÇ?ê¼qÈ®n·?ÞÞHË?èù„4ªî?î§–ï�hù?¿ñ?ëh?ï^î‰Ûî?æy($ÇŸp?ç\â(\ª¡?ˆ4ãݬbÀ?X!`øKŠ?ì=BXGâ?Ü›S`ƒ:?Õ/]ê벺?ä+“ÛgV ?ähoátú?èd¾äX[?Àª8h‹Ö ?íÄ`šãN‘?ëfÐõ<”1?ìô Þw?à™3ÇØÅ?ëÍ*GÇ·?íYm¼7jÅ?íÍQdÐÞ?ÉMÇÊ.S0?ãÁ+ð¥ÌÉ?å–¸ê ƒa?Ê4“¨�B?ÖõÖò±Œ ?Ô#ÖB='ò?¥•—¢ß ?àC�ÆæÜÔ?Ù©UBê$?Õ{‹nºF4?Û÷T\“,?æ˜1B‰�?×¶ìÚr?‚±çuQÍ€?×.°•Cn?ä`»'†Ò³?°w�œ>È ?åTDXAve?ä zµÖ˜ñ?íŒgÔam?±5r ò ?æŒÊ¦4!?íCÙ7w?ì³Ü‹¾Œ?È Z ·T?Ô`Jç=º?Èçiu12l?Ö,ËýÐp?Ûƒ&«. Z?Êïíë+oä?ä…º¡ ¹ä?çª]gGâ?îlY;¨¦?Ø3|"AO?îô�m§‘?ÐÛ·å_š?äµ@¡òè¯?í‘…|¿ÄT?ä Û�‡.?ã¶ñý5¹?í×߈Ë?½sÍž´F0?åjé/–±?ál³Ä˜?� 2r] `?ï*+¥ç½?ß&~8ZŒú?Ì]ƒç®ˆ4?Ö| ñ !ä?ëG;¶Hú?ÊjÏUÛÄØ?î-'Ï)oj?±¼�.H2�?çvè["²?À)Ù6ÙWÀ?Èbü�8z ?æ×6Xé?ä?AT‘…2?Ûá]¦à�¾?ÒHav\<†?á}�Q®û%?çÆ¬L¹?Â);Bòp?ÑáþžÖ?Ö »¡l�º?ßÀ¬ÁQyš?âV[š ‡Ü?åIcëà?ç~¬¬2 [?ë-ËñWUn?Ñ>g…Bæd?ëÙê%�v¯?”�Ýâ¸Æ€?ÐM‘ÖGžŠ?Ï¿J¢�,?à¶E�;ÍÙ?Ñ ¾YÊ?ÜK Ž�Ö?ï9=LŸF?äºM|ÅS¿?¤Å%;'5€?Ú˜k„Xb?àÜ[ò1 1?í_'º³?éyYÒVg÷?à�PUÐÍ?Û¾Cm¤‰?áÒŒ7ÔüY?´\«Î?ìW)—[?¼°�‹tX?×°Ñ.?ãb2¬Ãá?â;”’‡ ?È[zG\ÈØ?Ê÷´'±Ñ?š4ߺý@à?æ!é›Uò9?èá �è”?ÔgÜSÞ!ê?îJ~f¢N?×ÅÈW Wê?•§¥L½ƒ`?”Æj}ò ?á¹Lef‰k?ä;PjüŸ?ÕÚóãRà?ë·RUå2?æ)P_è\?åå¯g˜Ç?í%¢œëj?á†p°Ìdý?ØOl ¦Š0?ëúKRbS]?â€çn Kä?ï…ߨ’ô?àj©³_Ÿ?Œ´ Žã’À?ï%uûºj¾?œGýй ?é�žé)fu?Èÿ¼Í÷ô?ÖvÚ'ˆž?ÀØZîÊð?í;Ñð?3ˆ?ã™âËÔ(Æ?ââíÜ/|?³o›n‚–X?ìúŸàнý?çÆ=j«†?ç,ñÞ¬�‹?Þ¼?d€ù ?Úh‹:¤MÞ?ÜíPà±Ö?ÀðŒ)ä„?ÁÁâ2À?æþB–3ým?ӂЮìà„?Úø4l×;|?θ^lìŸì?áSUxW°Q?ߤJmêï¶?ïd ÁÔõU?é7ô¡±J?è]Ó=3?è£$„P³ë?굄 6u?Ñ8Émÿúm.?åSá®Èk?æú2ì…?è„4ê +³?à»V»kÓ?Ò’ûdŸÁÄ?À”FÆQ¸?é9ƒ•au’?ÅÚÃ�Ä?êa†ÊH ?ïÃA,×f8?è�Tz<ê†?è+z˜?‚ì?á~€l_§?ásdÍÅŒÄ?êô|w'}?ßn¤:Ÿæ?ç3v&W?¾–%ÑÈ?êU’?+?á’hC¼?ã&c“p ?å¦G—O…#?á$EÍâÑÒ?å\xûY…ü?Ú“õÂÖø?ÖVPÜæ´ö?Ó®‰òOéx?ã/~)[1"?ž¤¡€?ìôØŒWÈ>?¶QSáåH?éÃ/¡sÕØ?è¨{ó÷о?îcPTÇ� ?ïœ>J≡?áIpžžE ?èt�!Ì‹þ?ÅæyID8?íì[çD+Ž?âÑ�sº?ãÌ >??ç¦oô7ô?´‡qøÔ¶8?Üe„zr× ?Á�ëMýx?Üî BN?á|ÐÁ2Ûå?Ü-šš¿ô?ísJfrü?Ü]æ ÚÅØ?æÀ,Ê�mm?å7¼(‡Õº?áÑ�f’â‹?ß ‡ñ™ò?뜾p‡Üs?è°¾<äó?á(à93nÏ?«˜Eà&?Ò×dbÂ(?Àø ¿;�?ÈÈ Ò ?ªY–“Ú�P?Ñ7ø}K,?ät³Ó­Æ?·\Ÿ‚¾mP?Ýmw4€ž>?Ù,4À÷?íã± ¬@?ºsÑáôp?ÈI�1t6|?ÍþìÞÜp?ämn‘‚ûÄ?‘{±+6¼ ?Ùã xÛ°?å¥"7¨%§?çì™g²(ï?í¦"+?ç¸`"»¨Ú?ÉQ†­ƒ·h?Ø3n_œ» ?é!Á:ò$?È%Æ+zÈ?ÒVaôÁ ö?¹àNßâEP?éwŒ·žP ?ëöñ�f=?ÍÐ$fð4?ìü€ ÿX?雳U+C·?ÞÏ¢`n ø?ç«£gI̵?ã“¡‰8½?Â乚¿î8?î±6³Ÿwr?æ�4~ï¶8?°ÚôºGÈ?îªUt¾²ê?á)FqS�ÿ?Ù,m¼?àJ°e–ü#?ÕŠú¾E€?ä×Çä™?刣ùÈÚÀ?áÞ[Öl¥?ÂÅ“:Ãø@?¼ƒ|Åp?ï§2}?ämˆpºEÄ?í¼§Ç²±G?Á|Z!ªˆ?ã>úâ9ïB?í%ë£>§'?À2«Âmƒ„?í'ħd�@?ãáÞðYá?Ö62dìó¸?§4¼TÎ?×%ÂɱûÖ?äç“°Óãp?åHïÔÁ?¡›ô¸½`?áoR?Ê?ØÃ(д¤?ž€¢ö+Ñ ?ºàõ�Ô@?à_ì Ui?èsëræl«?«R×Ë@?êÉ@)A¥?áE�º Ù)?ëX"QÚþ?åY Ôݼ?Á­ö"o¼0?Í”ý Ëé0?²\¤÷#®ø?ÂRa-´?ÀK£ �²ÀN?ÛwͱEw¬?êQ^?þB¤?ë£yÌèœe?â¸öM&ÎŽ?ÞBj³`å¼?Ój§ïØ­?Üz;%!P?áPØþkâú?ÔÌl_ºÈ?Ãâ³NR*ì?æe“�“ä}?²³Kȹ °?ïý£«EÝÔ?íïÒçj5b?ÕU·O ?ì‘0Y˜ô›?²z+çGD˜?ÑCã®êä?çÀÜ ´êk?Ú°>u?Ò_@ã²³ö?éG!NE�—?ÜMb›#s¼?Ôá�ÐÆCŠ?â±ïp„?±°X<†Ïð?ÀNý­¨ä?ØÍHh‰ÂR?Ör Jpº?Î)÷IÒØ?à'ôû¶S? h§Ê»P?ìß^¼ö›–?ÑGŠ'’?ì^? ämL?éH×dÒ[T?äq6ðt¼¡?ç ~µN¹¸?ÞJ¶2h?Ó.æF¼8?ÄHsƒµ�\?Ð5·yjÁÈ?ÑÚ XøÝ‚?ëê LÖ5s?ä…êO5Û?â:˜ÉŽH?êÝ{* S?á$„Óð�¢?Þ”N‡8£8?§Yrp45ð?×!oŽ'ß?ìš JV%r?Élág}ú¸?Ý‚íÿV@P?îíb&g?ª2¾m»ù`?äŠVÞø ?é!�tØðY?á. hCQ?ìØÖKñØ?çáu@êæ¨?×…Ë{�Þ?ÐGv,šmÆ?åíjÒž?ç_(‰UãJ?ïöï>5ãÙ?Ø+wá4ˆú?Ô2ˆRÁ¸r?ãhŒR¯É?Ýski"P¶?å!4¨�?ÔV•[2º¢?Ô�”–e�d?ã‘nŸÉ¡?í@¤»-tX?Ú_X`­FV?à·^žõ)(?·jq ˆ`?ázz§[D?é¯<;ëGb?ÉbM¯|?²Îé˜8?ã(~—©­³?ßmÁmø b?是†Ï¡M?ÒÓþ¬4?åÐîmœŸx?ΘÌY‘wˆ?½wÚïôFP?é}Ѩ�þ?ÆHÜ‘†¨?ï�ÈYÛn?ëÁíwÊþ²?àN‹cð »?Þk f-À?åԱج?äHcÕe–?߸ë¹Ê?ïÍ:ª½ (?Ð4{à$?ê‘;^Q)V?½&J÷cË?àƒÂ•T›(?¹œüÏ´Ó?ÚåùÕ—­.?ä½éÛL?ã5D9£^?Áj –“9€?·4Ì ÔP?íþ%ÏÌò?ß?ã€C@û©?ÛžcúU’°?ãW¢®²�?æ²¼_)?åH3”ÔŸ…?ê:¶:Qd?ë2©tP¾Ä?ã*qËÙ‚?ïÞeR�x?ßÅGY‰@â?ç^¶j?ãß°àqÈä?×`+}iÙ2?Ý&¸Ø¾÷x?Ãôsç5Gl?p9 ù™?»Ühè]ó¨?ÐY;�Nî.?ì$(gÇ£È?†hu'´@?�]¨€’`?Ò'°qš¦?¼Íö’]¬p?Öî*«`?îŒV΋ÿœ?Ù÷´‰Í ¼?Á³†¼[ D?ÃhÚ°]Š4?Ô,¸ëw`?•5SÚΠ`?çÑxŸá{?ÁI½ëF‘´?áÃÞÇ£j?è™3ÕQ¡?ƒ•–n›À?æ�¦8'/ÿ?Úìg+¾É ?î•Ye¨ê?êž e˜Ù0?àAŸÔÕ“Ö?Ö* á1ÈÜ?Ó|’w XD?Ùy1ÜyÝ.?×F%ëTv?à~®Cì9>?äì»Ûé?ä{³j¿â%?íðàª=ÀÃ?æ«r¨ä}è?á“AýdŽò?Ô+.¯‡àÌ?ìíZ…ˆ’Ò?ïwTN'Å?ï1„ î¯?à‹f5ÔÔ¼?ÉÄÝ�6QÜ?Ù«�Ff?Çs±½jC?š®ýoõ{À?èÈsñã—þ?ÇœeW�¤?¼üøœ?Öæ°ôçwŒ?çíSTU®%?èuyœ^¬ÿ?³ÆÞŽ!,x?Þ"út²ô?Ýõ†—¤V?¿Q�y0Žè?À©l�y?¬?Ól¶‘p�Š?ì¸Köø"7?áAòŠÐ~ ?éÓ—M©?qð<ÕÉ¡€?ãáD§ä]?âÏSÈðz?×h‚õùÊ?ç‹^ÅU¨?Öÿ¢Hˆ:n?صTÞ/¦L?¦kæý p?Øçê V˜?Äà‚¨z†�?èô–®…y„?ãs Îv?êƒÓÑAî?Û>¡°o“0?ßVv«¸E ?uñ"NEâ?¯·˜:›� ?âxôþí9?·¥ó°ç°?«ô[_§ Ð?ÊÊŸòºÜÈ?’{ákmœ ?šK«®ê`?̰£m`Î ?ÞpÞ÷¿ìø?è: Wkƒü?ÛÄÒ>mTÒ?ÌV+J$X?ì!b³¯…?ä&©Þí¯:?ÄlöÊY4?ãQ/~‘èì?4*7W °?ì#Ö^á?×Pìè?牻€ ý?í\–ÎI?Ït˜ã_  ?ì🂮.'?Ö�œ¸Š’?¬?µèk0?êìA§Á4i?Ë?¤?Ïjƒï:‚¼?â-qmò?ÕðºÍÞ„?Ó@ JÈ&?ã%ÀYÞ6H?é Ÿe/ê°?ÚD¦o ?äD«®¨?ïRcõt??¦ŠŸvW€?ìÕñHŠ€?„v3©j€?å;PØq™Ø?å;ŽßI?ž?Ò•Ô3j6?Óç|žÈgì?Ǧ6sÞ¬?à£Ná·©ò?á´T†|!?¥>b‡ï‘0?ÎÆè2™ø?ë°µëÂSä?£kHTŧÀ?Üw½Ü#(¬?âG›¦›q„?àzO á«?íO»¸ •?ã4Tç q?¶ÏQ) ?áÈã ßÚ?êuRŽÔE»?Ðè½/"?vOâ÷�r€?æc4…Xø?Ÿ¶¹óx ?Úq?U¦v?æQ;½(MÁ?âE÷{Úr‡?éã¿´ªv¦?ë>hˆCî?Ûð¹\C6H?¿möœ ?Âò0‰‡{ð?ë©áVëº?ëÛ•Û>€?í…Ò‘Á�p?¶]å#°?êû1£qi=?äÙåÿRé–?À‡2æœ?dzlqM”¨?ßHš-½½þ?ìÔž,�í?îášGÜ?Þ@&Ü[É>?âè¹ËÀÉX?îi9L]•–?ÎH7UKï4?î1e)üø1?éA”>]¿B?á×¥‰ö?Ò³®ÐÛc4?ê(À°?ÜÞŠÔ“N ?ç5øx�|?ìRƒ® pO?ædˆK¡.›?êÒÙPg¹t?Ë›Ìé‡pD?çNý¾û›?Çá]߉?ã7åO–¤?æ Ó +N?Îlùô çx?½¹Œ1°?ÕtØ$x?Õ^!oµý?µ¨ÙSëýÈ?á(SÙ$ö„?èß/vqâª?Ǻƒ;¿ëø?ÀûodáT?åè¢&û?ÜIÙËçff?ÖÖûCbÔ?çT§±AK?쎳ˆ+‡?¯t> ?×¹QY™N?Ñ|é¶ó@ô?ãdÕÅçÊ?ØBEô’ê?Ùß³çñÄ?àÊWÆñÕ½?Þ“è6f”?Ä„HOá"|?ÆÓ¬JêÈ?ÄwV1lM ?â@w«_«?ÄôÕéÔâ”?í™f˜^æ?ÔÓ|ŽRn?è7“whþ?äl®Ñ¡¨?çáéÔÃ?ÜóÖ#}–?Ý»2ìÊãš?äžó™ûÄ?äÞä�ãiŒ?â-(:žº�?»zô±¡(?ÕØÓý©^?°žl O™�?«ù¹âRgp?³kÝ÷�?×DZ¢W%v?ÎiMlâh?¥1S¦ZI0?цãÁ²ô?î6(g4W½?ÛWRàº#h?âƒùLªÈá?éômàqOã?æÂy,1±?æG_—®!ñ?ã ÀIf?3Gs|u°?¶¡€÷úP?çÿ`NÕ®?çk—Ï ¬Y?å‡ÔEJ?ãa”™il?ÞK:ŽÑ0?ê¢C^]óÆ?à:ðwHv%?Ó2P@øÖ?ÒÌô²– d?îzÒ@íX]?Ù²÷‡M¾?àí™6,Ås?‚(W}ë€?ÝU}�³N?Þd�¡Ì‰Ü?â}Ö¦Ð×? j›?É ´u¨È?¸}âPh*?âÃv…hŸ?ìè®ÏòÅ?ËЖ,s}À?ËØ£<$Yp?¼�f×Dep?ç7'Úá ?åYÿØê!,?îuZ:sÆ?ÕDúyÚ?Øí%®–ÐÆ?ÈÎföY9Ä?ÈêN®¤Øü?ç};ö;k?ÞShù/(6?ãçEì^D¼?ºå†þÀ?Ø\0˜>‰¼?ã¹ °¿ÊS?ªís†P?Ô�Æõ!ä?ÉØ(¼}´4?¿Pç †ïÀ?Ø�WN ~l?íyr"9ƒ?Ö^¿ZJ;‚?樬9gг?âQ>q„?ÛA_`4`?ì—Ί²¸?Ýømê Ô?Ú¢‰ �3l?³¤6]qð?êјÙÁÜ¿?ËûSËç)˜?á¾>,u·"?à >]p?Â6õ9õ¡Ô?Ì´ó·œP?¾ÚX87v ?ª›{ÒØg`?Ó5ñ%ÏÜ?ë�e d?ퟪÏtq?bùJâÛÌ?ÝÚ_ËÉ”ø?çxâ6CÚ?߈Ë&Ä(?£"a¡°?ØŽû˜ÑT?Ø•VÆýV?ÞÞ—/L?®¤ òò@?êµC£V7?³÷sdød@?ÈÚõ\'`?ì0I€�?àŒ»<ƒBÅ?Ê9»Öwü?Ô2ò›5_?Ú†$Šø†À?Â@=€Åo„?ÑÛx×s(X?åÐ8ªÆ¾ú?gÚ|~Ð?ϸÜò~•H?·jo³Ñ�à?ÐKÓí ?ä!.‰±Ã-?ìsÁ³K¢¡?åjï®Á±?évP¸©H£?¼þ¨�€?Ûì8úpû4?Íé÷"g@?Žfê‚É€?¸ÊXá0¤À?ë-— 3o²?Ãé ó…Ïd?ÑPôå¨÷?æ—1M][?îõ\¬GCÑ?ãÑ?§²Ò?Ýáˆè&,?ÀIÁ·’ `?♥C,?èC><�Mã?åÅßY`˜Ë?ÏŒìj2þ ?ç.š˜sI?Ý Í ;ä?ã’z<ŠÓH?åUp‚gå?ïõƧK±‚?æé2ÁJ>?ܼŽ[†n‚?×Í9`Y$?ÆfHJº5¨?£SºÏØ+0?Ä�Â¥ÿÐ?Ó�ãdž0?¥`�2 cà?ëÝ�oïS¢?ÚÞm‹–ë¼?ë³ÑO\Š?Ü®œ�5cú?ëž”u\ð?ä¢Ìßšß?ÎÞæ¾žÔ?Ãyñ…%Õ?å÷Î+Ïf·?ÖÍéDþ?ç8· ±C¬?áî¥âÞ¸–?®¢iGBÙP?áxK‚+¡³?éIã§?Ýœ!eÄ?ÕrÝÙ’b?à+”¸¡�å?âÁþá:|–?Úù"V ?Ñ0ŸýÁÀp?çâ…@âa?äÑögNÉ?Ÿú™P?åô½Üæ¡x?µ“1ó‹â¨?ãÁÜ|gm?ÔP ÜØÜ?ä«EûÇ–?çé'wÎÿ¤?Ê+êôn›h?ê„n¡D?àð¯E†­?éJ˜¾œÂ?àãEû°õK?ÔFM²ñïv?á˜Ç^ì´ã?àÏ=(ÁÙ?ëІV+:g?î�š{PŒ`?è4 ÈiÈÊ?Îíª ¿à?æ>u Aѽ?Øæ±läB?é^ÒMúr'?È«çïf€?çË­ÜAAK?Ì¡†îA4?ÇÀ.!x?ÚšfÆbB.?ë dkv„,?äºë­Ï?ܸ忰»ê?Õj¿�²X?ØÉÞ*±l?Ò§k.Ö¦?êsç·;”?Ï=®€Ól?ïôÔâ4õ/?É�ÕoôB´?ÑñªÓm‘¸?ÜÊç±i.?è‹{qøº?ì4_§¤fˆ?Úå¹ÂAúZ?Ú”ˆ QÀ?ä‚*Í1 Í?쀇¾0?á¹PÈû?ëОÝa’?ÕÖ÷7’x?áá°….Ÿ~?Ä6˜ÍZç(?ºˆY¿„ ?ä5J ×½³?Í3)3Yœ?ê…±ÅVË?ïÌ$íÒÏ?áLO^7½?½ðO¨ �?ê±+štxQ?ă‰ôü^h?æe>ë6Æž?ê2~Z?W?ê'–1ö`?ë÷ÉêaÜY?Ä i5*.Œ?î¼ Ÿ}7Á?ï~Zýýkµ?ͺ¤t¬\?áì‹=ä\¸?è’Ôå1’{?ØsL±Q’?Òé¾›T̬?è T$¹s?ªòiH•¸P?²ÒV%\à?ÎV6‘ Ü?ÎXøÒâ”?Újuw} ?y6êD¿s€?´7Ú>+ð?Øæze¡„Â?¯‹Ò¿†ÆÀ?áÃ;Ì„:?ëvzSt�R?ÆÎÌG‚t?ä»Âæ÷ö?¶£²œ�˜?âòë9k(q?ì.«òg±?çEÀ6áÕe?âʺ¥9Où?ì¾äñ¶ú¿?|ãQà#å€?ÆÕV¥Ôˆ?à[0­ÕY¶?êå¬V»?ÀR‡žƒ$D?íl-g%Í?À/9uL¸ø?µpÛ¶öö(?àdž«r»?“qÞ¾Aà?Ìîe-Ô?Ñ¥»eÁyt?íp–w,?ÈÊà¨}u0?ÂûÓŸdð?Ë…êó‹¼?ä§HÎ¥é6?éè¯6 äþ?âG–{˜¿?ÝømñŠ?£è¢'Y°?éù$„\м?ÕèìÐUº?ãÖXñR–O?ì˜p=8f?éæ?ä©Áò8Ø?äÕöè§AY?¼^¢(»@?îdØ"š?âj_ëí”z?á¤éÞµ!?ÇÙvüŒ˜À?ç¾K½ôY?êtu¾z?à'�ìq ?ßtæš� Ü?á¡:½²?ÚœF4MOÎ?Å›¾ÇŸ#P?´'Ü?í;榖íš?ã¹DE]Í?îÃ-ê%ô?ÐqŽK'æ?á ðŠKí?í6ó¶ç?ÔYŸëºøÐ?»’¬eÚ68?ìÁ›fôv®?ÚK«¢È¶?­5k§p?Þ×ìd´ž²?Éj¾üR?cÑ‹?Ù—Î?æ?é6¶4Rµ4?âöm÷ã?¢V|ße‡ ?Î~KU!¡è?ê%?þaè?Ï·,¼öîô?¢=�QÅï@?íC:Û[L€?ÓE`´gd?èkLOR?Ðɾس½¤?ã Ók6:?qÞòró €?ïO*X¦I?Á«”žÒ ?чî·|…¾?Ó;äT~€?á lR¢l?ÄI Œ¬8?ì10T7?ÈÆ¦Jzn@?áJÒÚÕ™?»‡tD¨§P?í,«™ë/?í:"k\']?à!nåˆ�Þ?âHØIF˜¨?ãÑYJIT´?æg�«á?áß½5«9f?àSeìn&N?ds�é¿'?î-Yx¯€?â¥$Ä&� ?êÆ9+ñ–@?Õ;ûåÐTä?éøtšQš?ì*Ÿö]f?Þè+PiW&?×*!'êµ ?È'Ù�k-?誓‹ [?âê^ˆüÆb?ÙTÄõzð?žGJNüà?î!î˜4»?äÞd—‡5?æ$œŸAõ??çÉf¬t`\?Û± ¾òéÀ?é½g¦c9?Ù‘‚¦¢îò?Ñ·ø›àbŠ?±¢¤Å�“ð?î¬àýÐç©?àh;s£Ô¥? ~w7æ$?îXË­[…Ô?¸�¶^Ç÷�?Öw_4)ö?ïf®=‚Ä?íÊø‹d‹?ß ø>[Ð?êWSÌ¢?äîÉ-°ˆâ?ê&š«6FÑ?ïûë7?¤ƒ‡®¶ªà?å?¥:äþ?ÓXE÷¨ú ?ã(3„t)Ï?Õ—øP£&?áSéÅtHî?ÜίÊ€$?ÛNÑ,�d?ˆ[�Ü?è¸ñŠhá?åÂWž8D¡?¿{¦@_è?Ôó�ø‚ t?éÞþªÕ²k?ØÃ›zrØX?ßÒ®”âû?Øs�¾¬°à?ãGM(¸T?جAhPû´?ä¶þ�‘‡•?íÂÕÚEÒÁ?ÜiÖÄÐz?æ'c¯À¤Ñ?á«N1�v?Ðî·1�¦?è]N^lÏT?ѱ„‚�ÏÚ?ç“ϸyš?Ò²¼Þ ø?äe‰a`ny?ñbá?±$?íL:E¤fo?Ö¹�-ºtÜ?æ‡�IjJ?Þ×Î]˜j?Úö>¡?é½úaò 8?Ê‹^©ð(”?å¦_DZ¡ô?êF)Deƒˆ?ÐÍX#Q«Ö?ÖËÄ�Æo’?¯öº.m`?⪓ÙÖaÈ?Äiýqš�ˆ?ÛÂ�Ôu¾\?äèΡ Õ›?ÉßqkºÏh?ëæŽÆ?©MLEÝð?µ½–Œ9?îiÃI#“»?Ô1âPôV?ËÕ?ÐðÙÐ?вTcþ?͘~Üâ?ÑÒ“×,?Ƀ\B£»è?¶ÍvªU¿0?ë”Åèœ?oÁT@Ÿ¦?·?à×50?±E0=fp@?ê5“™|ö{?î®N#ýû?äÚÒwìð?ê >Bûþ?î:¬ÐCØÑ?ïûnc)z ?Ði¹i�?îf·ÇÙ/?ªƒYº]Ó@?Ж®9ئ?Ú�-FlB?á)Z�UV?Ú§-­ä b?Ö8£æC˜®?îÖ ÏÄ??âØÉ¿ÿ%‘?çLn”ÃVâ?îaTpÖ§§?éGÆžÁ§?ÂN+C]1€?£@vG¦3�?ãrw«\?à»<·«Xò?áfX§i‰?ݯB+ °¾?Ùωïö?à:�‰Ó¦ ?ç^­^ÖL?Ûdé-Œ–.?áaçÝãÜÆ?îÿX{‰¿Q?³nÏyk@Ð?àÿħÂD¾?ç é!(šó?Ë+Db™8?ä£Á—Ã(ï?Њa“È?ÂÛ~Rêô?ì•0W16?Òúá•Ð@?æýÿQû™$?Þóˆ&ÿ~2?åaÕ‰­ë?ç01¦¹–T?ÛÕî¸î0?ÖÞ2“å|?äQgßêC?äº=$E¬?åJHU?àbŽ©`¤"?Éš®œØÄ?íf==ÑŒ?Ú¶ç ž?ÁœMÌòqÈ?ОëÞÃÄÆ?í0ö*¤ÿ?æÀ[KÄÖ?Œðu"ÝÀ?ç€rÿØ:?¥ˆÁÕìíà?êe³a6ƒ¨?èåe_Àׇ?åc2a!ºÔ?¿AÌR¼*?îÚÜÃð©?Òø[Ì�8?ê¬Lìð¿Â?æe0³’?î‚#µ�0?í]n…€ý?׆ëB@–?¶¦ã*?Tà?Ù -Šb‡Ê?â"Ù]bPþ?Ö¼ü‚Æ£d?¬†°?úÀ?ÆÈÖ½òD?Óïho!ö?æÎ¤YAD?ä#P­°?àÏÛu_ ©?ì�‹ˆ?Î0òXCŒ?îðe�:qÓ?ÕtqxÊ0?ÔÛF× /ê?¶Ä7EçV¨?ìž@gæyó?ÉË´f7 ?Ù8Ì XÿÄ?Ø-‡Éê:?×ÙŠ*‚�6?Òjl(N?Õ d”Xt?²sñÖ `?áLlê '†?ìðMnà°ß?îÛÛUѬ?ÚLàö6 ?Äï^ñP¯˜?ÂêO2É”?Æ]¶àçÈ?뉺D}¦?í”ô�I¼~?»¸Š Òh?Ë µ�í~?̉s(Îø?Á‚¡ÝÀ ?Å=øB¶1`?¯TY?ð?±º�/ÖЈ?ÊN–½XÔ?Ü-‡Ø8@?Òµ0Óèáf?ã �pZ?æ«AAF?½Ë¤HÔ1€?²\zþÍDè?Ó ±›0>î?ßÑüV‰#Ú?éÞÞi“Ì?è¤kW2?ÚÍIy¤æ–?èèÍã?Î ÞJ4?í–éGôðg?ÏÙ#)¡È¨?Ø Õ­ÝA¦?é’ŒDÒ¼?×#þ|ýØ?íF´jôß.?Ù.�=‘&˜?Ô¥ßzîGx?Õ/JKÉyØ?èó4;?ÒW/ìØ8B?èi,Ð�6?¾¼‚#þüX?åüíZõ†§?ìÖ•¨ÝbÊ?ÑUwð¥ép?Ûd=>˜Š?ãöEÇË¢?ÆèC öW ?äE÷=õ?áI |@©i?æNnµß"ñ?Û[í�°?м ¼8î?ãC¹$KÈ?Üt=úæd?ÝÖ1n¨ê?ìÿKÂfgN?Óü¤À³þ?æ!®ì7m|?¹³ÛI@?ïžÂáRÚ?”éË�¢¦ ?ë�Aõ|4½?ïÓÚ 6‹û?Úo”<‚8?Þ4¾Ä ¬?Á+‡m¼©œ?§fl¢Á¹?ÙöLÈŒÊ?ב³Ê8&?êê8´—‡„?ÚÂX 5–p?Ê‰ÎØu˜? TðƒxÖ@?ë:üu)¢?åNU䃎?ä1\$ié‰?·nâ`£h?¾,;H¥X?â¼æúüô?í�.dÙ8f?æ˜Ýf¥y(?á�á߃&�?íè ©ÊÄ.?ßË\s×®?Ú‰8qLäò?Ä€½†L?ä‡[wŠ;?ï|K¾i"?æÀ·x\�?²àWúô8?ÛäB?çv'€ð›q?™Ä8ís ?ÖZ»·‚Ò?É<ðŸœØ?Ö ª‡Mº(?ëÏÇøWÙf?âš3„^?æ‡5³."Ø?îëÿR³0Ë?ìẪ‡6ï?ë/v q»?æÍ«�·U?ê6q}�ý?ÁDŸHà?åõÞŒ©×¯?ÕÊ1Ï?ôâ?¿“o¨ÙZH?˪]3ŸT?ÕSWØNú?ÏýëK݈?æáöÝ?뫳—D],?ã±ù賫?ÂG¶GKøø?×¼¾€¹4?átúwø 1?ÌPP€½Lü?äôÿÇ‚~¶?à÷°xTï?ªA…lÌFà?ÔµÇWyr?å¬Ð€o/?¸YüáÒ@Ø?ÊÞ”ri+H?æu*ìñBg?ëQÿk ú´?ʦ4÷x$?ÜJqÛQ0æ?áƒäÃá-š?Ðûé�GÌ�?ÁaÛE¼¦¨?âpù…é{ ?áÛÄÍÈðÝ?Ò‡“´™fX?®]™—«?ØCºYý6?ìüU4ën?Ó�ƒÙ¦?à0¯bFÝ)?Ë”€Ö-÷?é{#—˜|Å?ï‰1s�ÂÏ?ê‚/NXÏþ?ÄM�`èˆ?㢎鴭,?Ø™�xEP?ç×1ŸO�?°å3Š‘-(?í‚¡à,�‚?ÒEÊtd?Çx$�“ÐT?É9ÞB—eÔ?Ãþ„dêh?ب†tEƾ?ê›7œ­A?±<Å™ƒè ?à˜û÷IÜ?â°.ŒÃOO?å(Bb•N?ì)ÛœÂàX?æÀŠL“×û?à õr¡®(?äkV;2Q?â®…sŽ_G?ã{ãqö?Ö[1 '‡b?å�Yµ;\?Ú¦.Ð/Ü?çÉJ·V º?Ñ7¤ƒÊ¨?Ϥ¤ü?ëîi ÈiŽ?èý3×?ï1̱ó>?Ñ3$:öx?ÏQ•æ€?亲½‹?Æ+‰œòüœ?ë] ˪ì?íuÁNÏs?Ò;?pçóV?çõ'Ük1Ã?éöêøŠ?²¿æúï·°?ã?¶±›&?çgŠ8Ž(ˆ?¤ó÷‚ðà?àA6xîÞ?åp›æ‰Ùª?¡Û!U+ÂÐ?Çw4h$[X?¹üˆÄ,À(?Þþ(J?æM‰ÄÁi™?Ì¿í�~�p?æåã Tgú?Ý�Ïá¿„Ü?Ùuª€úˆž?Òô^üBjæ?ÀaBê¡íÄ?è¿·˜Cw»?ɬ¢¦´`?Ã�‘˜ÿ`Ì?× ¡‰Žr?ïgâÁúG?ÜŽ¡·õZ?ÒNÓ×càº?ÌUxeœ?ࢠÄZûˆ?wÞ'ÕË€?äêQHÊ?·b6™ õ(?£“îIÒà?ïЙ9-p~?ÈtË|¶‘4?㛜HÛŸ?ã1×§þÉi?éñû3‰â?ĈG%'z¤?àÐÆ­ŠÌ?åq^A¿'6?îH @m}‡?ÈIk •Ýè?¿0'…à?ÑÕéF'd"?³"Àø±¤?ã3E¸Ç?¬?è‡P@Ì?Ø¡—ÓĶ?í¾v ýÂÙ?âB˜…Ngó?©óÂÈž! ?áÎ’Ðý¦?î,mD£T?î‹9»Øy?ßðì·Ýö?áV¨f�þ”?åÜ6â‹“Ù?åÁ[{VJ?äA=ΧÓ?ÁÞ# 8?³jÉdVðð?­q}Z+�?Ûƒ‰×n?èͶ†šÛ–?å‘bäaà¦?èäs·l€Æ?çç!d?Èy?]1œŒ?îy^°¸…4?ÐM±Áë#t?ÐÆk¬O¼?ÔœÄEÊ^p?çßs¿î?à%¹„)?¾ŠHð¡Èp?êP(=£n?⦤ ÚE5?ɶZc&„?ÚÝ8;ƒ4 ?¯ÂƒÆtåp?é”mß`:?Í3 ¾^Ù¸?èè M@µ?î{æ‘wxÂ?ëJ3à§q?ÒÎæ5/¶?æþ2ÝØ’­?ЦKv lÂ?ÜÜÃÕõ“Ü?ê·UoL?Ív¹{â8?èœ|ÆXÙ?|Æó·”€?wë�?ÝÂ8 O¤x?åUžo§²?×È•øéž?ç Æà†�b?àwtc”?ÒÚÊ$y�â?ÀGÀ¶q\@?Õ~*ª¡k^?í­‚÷Ñ™ó?ç8™Ï`µ»?åù¡˜Úa·?öÚFÄtŒ?×Ã8Þ Ê?áˆÊ¦ÒÏ?á3ùÚ§3K?ïßr঳?àþ´¹s¡^?ç ÒT€Š ?ưê.ÔÈ?´®½°ëÈ?ã¨S¼ôæ?ذb“Œ?ìºÂæô ?î§Ô¶\?Ði\=B—X?«ÕÿV€0?ç9œ¾D ?Ÿ$b6"4`?ÕBVª�¤´?Áw€0ü?ÑëÀ÷œš¢?Õ+ ÁèÊZ?à \šS»?ë Äy¾@µ?ÜR�qn¤?ç «Ê&õ ?ÇÅî©¥\?†\ˆ¬{œ?ÈCjnäà?ê‡òþj{?n‰›Š¼?ÜÃl¢Ò2?Ûï¿G[kÔ?‘á ®Ù§`?àa˜¢ãÔí?Ü�´ÓÈý?뢇’™}¸?–¹Ù yU ?ã6%®ùk2?çÙúÄW ö?ì5=? V¼?åfà§ø`ï?íétèVf?âPœ|5†?àM_È?×íá„�Fä?ï'ŸÀà?êÒÁ츂Þ?ÙXaËOõ?Ÿ»Rµzx@?áPªéßß_?ÇvçŽ&¨?žzµ¢Ü@?Æ|È|Õt?àç l´µ?êÛó2æ²?ï¹gDj@Š?°àDR÷@?å1üúûe?âÙ33=¨?Ðø“R|ÿÒ?à˶øÌ{?â4íq•{?á´]Q¼ãÝ?±áÜ0›äè?áçäSl�Ø?ÌZ+w$?éï—9Áx\?Â}¢ü�Ï ?äìj>;-?Ô6 õùP?ç±>ƒù?ɯëu©¿?ävêTß¹?Ö¦€ÊÆÚ?̃ÃëV?¬ˆgäÒ€?Ç„iš)°?ß³µºR0 ?æÂÁ—„Yå?îŽÑw8‡?”ðÜRó� ?ãDì±Ç1X?åL›ñéàË?è‹«(L?êë”Ëű?Ó·vü÷BÞ?ëºiÛÉâï?åŽé<7†A?âp½ç|Å‘?˜åÿ°êÀ?ä΃Úµ!?Üz9#×(?è`ã9[�Q?ê,§|·u~?àýI´Ó¾?æLÈZßêä?îÃ)ÉMúÂ?ÇÌ­ÐÎd4?ÙçE¤†?ê~‡­e/?ÞÒÕó•ò?í絿èšW?ÓZ„P>Fˆ?Ï‚«iÎx?忾ͧ‘?�žÆ{V??í<=1ófe?ÛΣº‚8?åp¶?Û¡Q¾øˆ?èç3&(]]?é°¸ÂQm?äžIFiÀV?Âê©‘òkP?×#ì’ÈŒ?Í< � ?ͺæ_E°t?Ù¼lX%š:?à¦zv‹�É?¹ èéËŠ?η’žXÀ?¿Zë Ï 8?«v¯âøp?ã�:ay?â_HO2|”?î“ûúð»?ä>†àƒ@?íòÖJî]±?âÎ8"І?æS½á¢22?˜˜s(œ*À?œ2ý4i<`?ÒËÞÁœ–?ÞûÍßdŠ?Öá\9Ì^u²?ÇDMJ¥µ\?¿¢OÚª˜?îzè}Òð9?¶¬º PX?æ% €“?äU$œzí,?Ä\ #HÅ|?ç²~¾’;œ?ï ú´³}Ú?à�6—Ü"@?ëá]…Ä�Ð?ìÇ<~0i?ЃsèjuÄ?æ sž™?ê}ô{o‡d?å-ÚsLu]?Ú§2¨Š–®?Øpî«g~´?çŠYnã?Ø(Æte›r?ž: éf€?�5ïîœ\À?çT¡„’U?»EÔI@?¨z8Áõ ?×µérZi(?·�Ü�ó’€?»ÕÙ°cÀ?ÙD)Áߊ?ììŠó½2P?Ñ@™¥“¡€?â=‹çE¤#?ÒÒìÕŽ?èµI[ª³¥?ÒhûùÏS?éX³Þh{ ?È#Ý*=aø?¡|œ·\ið?ãNÊ•�«?ì¾W;!J?Ñ**ú]CŠ?ÕOOƃóÖ?î›GÌÜi×?¿¯Éy?¤ÚVI¡ò@?íC¬¾äÎR?ç½ uþ¡B?ÌBLÈü?Ôè¯X7‡´?ÙT��ÏŒ?É—UÿE ,?æRì;䯼?í UÔŠ`?éÊÊYZ‘?éGl[z±ö?Ó1÷@Éòˆ?æÖy mÑÁ?æy24oZ‘?æûj&%?îˆs?&K?êæ›’ ,/?¦=Öþ'{?ß�=5ºôN?¶–ý1Bý˜?ÑjŸ`Î?¹jvɪˀ?Ø?y Ç Â?ÀKbº^P?íÕ�hÉ•î?ä8ˆTÒ®?èŸ~Û„Ñ&?á1}Žº&t?îËXeõª—?Ó !ëbw?èã£m`�Œ?Á-»Êܹ„?¸7Mà4òh?¾‹ös« �?•$ {¿^À?Š`Òêr?œ�t©D»À?Ó�¸#|žÔ?×¹Ed-�È?à_לÏ/z?ëõíÚÒ”¤?äšÚ[Üq?·=Âa‹D0?í³ ×n?ßÈ_,€º?‚×o…_ú?Ú�mݶ?Óì´uø§ô?ŸúU–Ü?Ò@ãÿÝÒØ?»Kh¤1?±nìqýP?á<‘èÆ?æTÕtC>w?ÆÅ�ìL8@?æÊ,¡Ïã~?æ6¬ -�?ë=ÕCUÏ ?ëƒg××£(?Îq" &¿?ÔÕS*·“x?¬3&ðÚ¤ð?δ!ɵ-Ì?×¼šÙä ?«ŒÓ¶º˜@?ïšÏþr~?Ü*²ÍÉÞ?æP™5©=?á&3•µ®?ÜФ�‹Z&?íj  ‡8*?ê~çÑJ&?êÑ…#ÚÈ ?å®Ûzy!?æöWãŸtr?çQ ©©.?ëe.R%›?Ôƒ'hÞÀˆ?ïàXÁ_¶'?ÈÇóxsšä?×+“/´h?ç“B˜N?èT \B»¨?äüòÖ�?È€Sr:6 ?êŒî ¶³?Ö šì†?Ü´•Lî?°@·®í€?ê–éW8Ö?Ìö×(?㪕‹}Î?Æã‹d8p?¡ cµµ�p?í¡\ r`á?äu�§“Û[?Øö¾±ýJ?È oz?å0£/>ê?î¹=ùöÿ?êzDýúŽ?Þg·™ó–?»l¸›«KÈ?ê]¡N/PP?³¶|^a@?èhùш:&?çJFìÑ ?á›k?Ûz?í�óûi&Á?’%å ÀÂà?�ŽìNy¹@?ç�›dxL?ïë&ÑpQæ?ã‡$iQï?Õl°y•[Ì?n`_ýÅ?ï»Àü;Å?ã'A[úñ?ÁÏ¡¸ê»Ø?ÙƒiÒÿ¾?ß¿mx&øz?å/®çÈ$r?ÑKÑ)Æ\ü?Øê÷FÇÄ?¨Å1@?þ ‚è?Ñ~úñcj”?îI——„–i?Ò<بﻶ?Üm3¶‘³š?äí„^ˆ ?ã©{qÑi?ÝwEø[¾?å šXºÀ?ÚòçM=eê?ÐY'«+H\?Ú?øÍÈŒ?Ò)]Þ„?î³Ñ°Éy›?ÌqG]^Ð8?Ö¬éižµø?Øó¾¦¦úÞ?î1Ì|aøU?àh-1~Ö–?¦••rp?Ó ÈÏG+¤?·þÇ Rš8?Õôº?Í&?ذö¢åAx?àÚ’ÞpNI?å°ÅEõ¦•?ãTAátEî?Ь)i$X?íÌg ŠÍx?Þ£öÑW~:?ä+š"�C>?ļš8`?ÆäYU=Ü?ì,ÖÓç[ ?äQÍw†G@?ÜK(ÆaôÌ?äH'*{?ÕžîMà?ÈÓªÜÝè?ã ”!§~?Ûå"èFù®?哵û°H?és<ñ­×Ø?îÿïCq®Ö?ÚCo¢Õ+ž?㥞ŒMZ°?áÞÍOu_i?ç-‹“U?â�Ê­`§ ?ïÝ»´s?ì+QƒFL?âOƒ tXC?Íé q5À?à´`:Ê!¥?ÝAÄ 6òN?áå�ÛÌ>ñ?êKí4É?â>/V!@?§UøÀt?ä¬Lf1�X?¯„Å%n@?„¤\:|?ÝM"®! ¢?êrqŒp¼Ø?µK¾;.¯x?ÛD/ÃÓd$?È,UœõH?È̳¿Y¾?¬žú];]?뙆 lN‰?ï€öH«Åa?ïK¥ ·á?èŸmƒR?Óžr¹¼5Ü?à•ïýP.t?íòd8I�é?ÙÝE°´²?ᯣSÜÇG?àåwTî¤?íŠK× ³¹?ìÿ”ƒjÖ?Ú¥Þ¿4r?¹«ä�¯bp?ÓtËsÿ­|?Æ< é×{myDõÖ?³Ã£âGðx?éiqg8jC?ÆkÜiûšˆ?ÚþU·CÛà?è#ª8ß?Üpß0€æ¾?ârûDv?ä}Ê\ó?è�’ű?ë c¶>Ò?íU»Ø7-!?¯v¶ýÙÇ`?å¥óTÉã?ÑZO!åD‚?×v./ц?å/O*ÝÅÈ?í‚�ÏNãd?ÉçÆ§?àÆhŠ‘l?çR�\æ?èW%+®?æÝìµ}Ë|?èår¥Î\�?âæ~çftÐ?Äß`Ý“À?à;�ÈÆí?ìSG*µ@ƒ?â‡q1)ž?Ô‡ïbõü¾?ék!�}ß8?³Â­È+ÌP?Ò]KzH.?ƒÐ_EŠ@?Ï ØV>?ì0·�?Åþ5›òD?¹µ Š(0?Ïʼݧ’è?Ìzã¤Êa4?æ~{~¼ô?æwrpšvé?ï Ù) wÙ?«âÌ2+üð?Ãoë~K…8?î ¤I>R?Ý©:ÔÙF¸?Б›x)nò?ÊVÌpã?³èžÕdTH?ìš�X0£?ß-ÃKå¾?å[s^£w~?ìë|^enÒ?ÄI€hˆÓ¨?áUQËŠ?æv�ÝØü?éfY¢ãø?ç€GÚ¹?ãJöÜìZÅ?å‡pò!ô?¸ÿ@(ƒ®°?çR³Duî®?Àß`Êè4?­g}ia ?ê0-QA*õ?ßúˆˆíÙ?æB,3’‹Í?ÃÙzйÎä?Ös’t(hH?Ò""$Ÿ|n?Þ–´rbd?ÀWRë´,?âç,óggž?ânküwƒü?á]“¯“”Â?Õ,žH6a´?äü¸�;?å=ùn6>?ìîûÄ}á?äš$ˆ@=1?Òzsé°?ÐÚ+kóxF?î�£>³?ê~|¸W³?ã§)â ®Û?ê�ƒô/þÅ?Å>lÅúî8?ä‚�ÙÈ�’?ä×>k›?³±!ïïËP?Ö]¿®ÛÑú?äœdߤJ?êR&\dµã?îz&å?ëò'ÚiÐ2?íµçO¦À?ã"cÙNø?çMmaÙœ{?ê×ÅÄ4}!?ÕIñöZ¶?í?×ÈÌÜD?ãTmUs«ü?Ô¹�!äîò?ã±J…tOË?âsFbo?ÓÍ£Kå‚ô?ÚÂ;¢2Öô?éé%-£?í^y!Î/¼?ÇÙpSŸžÜ?ÂÜÂ"0?ÖoŽÔ ½\?åüí7»Ü?ç¿ùøª/?ëNL²çÁ?žŒ.1" ?Ô(‚Ó^Pô?o8”Àš?ÙT]:©½l?ÝH�¡òzò?ÎÁµi@¥¸?æ/÷¨‘!?îåRìNg¼?àK”x.4¸?ço$œÖsä?í›8wÖÓø?Ñ]¡-7™¨?ØmÀ&T?âN/nÓf?ï4*®öñœ?à�¶wô+Ô?çñ%Ñ‚�]?¢�6Ë@[?͆*k<Ä?åîôÈ¢€á?°íÚ�†p?ÕœlAÓÈê?ì¶-y\Q?Úù± ž‚?╌¡‚Ÿ»?Ó¬`&â¸\?²’ãì¸Ü¸?Êr0Ï€ç$XÀ?ê½é�l+?èÏŠa,Ù?ÝÝJ8ÅÇœ?Óï=i ÈV?á2DâeR?×½š´-Óè?ã|µñÖS?ϼ7y`?ÛGù©�ìz?äÞã´-‡?áèÖ9×”?Ê-]R‰ø?åéý×–¥:?Ú>×6»–&?ßê¥Le¿D?±û¸^ È?Ë«èJ�Mp?éTS qž]?£�.%”P?±ð¨9÷ ?ß+mZ¸ß(?ìË*‚‘¢·?â¨^Φ)b?Ùè±= ?éJ¾V\ ?è§"ï±Þ?î:.\Š/?ëð̤¸[?âÎ-d¤0ý?å#}$I>?¸�.9^ ?ï=N=?ÜZà‰è®z?Ạ—KÅ�?æEÈ^6É?âm+îjg‡?ÛÐî\tõH?Ú´9sÖ�?ÔÊÂòbá ?è»+Ìé?ºÇP­zp?²¾_™X ?³" bÂÈ?äT:,6f%?èËaFJEy?ÜÒ©´{N ?ìé蟳e�?îbúÁz²9?Á)dü›‰4?¡¦fí1ðÐ?ì@330?É�ß7(t?Õ8#¿ò†?ÞYá`'§°?ïùE5Zë(?ï<Æ>¿†oUR?Ä�ñx`£¬?Ÿí Ù$@ ?ÜûW<~ÈB?‚’†ÏLÀ?ìbPj¶>h?Ó”Ó±Ýò?Ï¥nÖĬ ?ÁõDm_ch?èœ^¿DX?²ë2 eP?ãŸoÝ[0‡?ß6¨Ï³Â?åYP?ØYí´[™6?Û«Cwá¢Ê?á®öاô¼?´¼ ,Ì?å·t)�(Ó?ê¾ðF¥?â ÏDßñÌ?ê�öœû?ݰO¸­B?ãÉ|‘D.û?×k‘U;£þ?åM¬üÃB‚?ï/›{°žŸ?áuXðÖß?ì—o|¨�?êxt?¬çª?¢�ƒ5^P?Á7  ëü?Û©2CòE„?ØÑ?3­F?מÓ÷ÞëB?ÒÃ¥H`¬?ѠÓjó´?ëd‹í²¿?ÍU¶÷Í"œ?ëI^Ô­ÿ?éÀ& /ä7?Úh lÖ?çw>ß_/E?Þq±Ù‘?Ãü0F½³Ä?©6�'éiÀ?Û³™„†è?äÇ—©ö**?ÖÖö‹ü?½ÓLà�j?åã’¿%Ê?RO¬ÓN:?ž•©C04?Þ†ó§Ñ†?êОܔ4_?ç~ü¯˜C—?éI”ÂÙW?àÑ•°†_?ÐK~®¶ºV?äÂ7ðÙ •?éN+±á¨?äFXQE.Ô?ÉnˆÝEð?Ӟī®\?Ùë�WÚ>?î+‘êêƒ?åóÅááp?‡´ÜÏ„ @?ì‚ #á`?ßló˜z ?äØÃõá¯?áp¼d²]U?çT� du2?Ð\S ¾»Ö?æV\rîé?®v¢æÙ}?ë\Ä>€(¾?ÞJ¹¶*éö?ß]÷×:7n?èÖ5]_Ðg?¢|­¥ÿ¼?æâcIñº�?î$ôxOÌf?ÞåMí¶E†?穇™•ÕŒ?ßRmפ?Ït=¯€t4?çdnû>?¿-äî)©8?Á®C˜]�0?×cW[¦IŠ?ÕÙ;~Ÿ1v?íÎRýY?ÜhÀ4]=–?’3ýó ?¸97]85ˆ?ç:¡¸2�$?é 7ût´??ê׈o…Ý?åGùg‹ðˆ?ê·¤´z\?�nOÅú�À?´ïq%Wø?æ¥æÿ’¾–?ã�úM !Æ?ê§ î×Xa?â¬÷² „4?ë{¾¡¿xO?Ûw¡](Æ?ÁËÀâ�}?æÏKòkh?´°ôîN…¨?âç fǵ?äçב)Ó?¶B˜Þ>Ð?ªü+\¸P?ÇóÖj“.€?²œ« ÅTÈ?ë/bbŠ ?Ô€Áø0™r?îfD4±’=?³{nÊg#?ßAö�Q�?ÒÝDJÌ?ÁŒW Àô?Þ~DIªUü?é—%Ц££?翇‹2«?Ýü³™¶Ä?ïŠà…­8?ʰ ,?Î]ÒDó%?è¯Ü.^i?ߢa´\ýb?áz~ûÔJ÷?Ñê£Dj?áO×ÒØ‹|?Ûáäµïuü?â‡H ¤?Ù…�k-Þ?Ø7±�Ç!v?ä{_³y Ú?èŽÏw�ö·?�ë#"-{ ?ï W}ÉBm?ÙæÃ.,?�\r*IË€?ä¸à}¯?Ó³ëq‰î?á». ­òg?ÍZ‹§eP?â ûO¬«Í?}r}%;D?ÏìN‚øÊl?âqSwúÿÕ?ê-qÑÏ|?ì=4P÷ûè?Þ›óãs6®?›e}Pn?ªêt°<µp?ëšÃÎÅŠ?ïQæˆT?à”ПIùc?í^ø²âzà?è9­®;¡ð?äÐ8†£Ì½?Ñ/Äî¸ýt?ë^q ä—?çÆ¤KÔT×?Ñœôàmˆ?Mâ'µ?îúVýÓ?Ï âóì?¼¹ÊÏQÀ?ÌyìwŠMÀ?æ'©°ÉœJ?à'ïJG/?áÎ9ÖŽ‡?ÚxýÄ¥¤?Õ§Ÿú£¢À?樃¶8u�?uþ?ë{ô{ ÃÁ?àà^?‘gÇ?Æ ?]è?ê­¸n§ÕW?ÓÀIÇ?ä¤#p£KÚ?âàƒŒaËy?à—×è–?éðr»Ã¬®?îHž-Óƒˆ?ÝöjÌÚ¼l?á_ðÔ4Â?Ϲûƒ=ô?ÝÁ{¡v?Ó¡šÍ ?ÙìRr‘¬?ìŽÙÇ`F ?ÕcÕwdÿv?Õ�ö{ô£´?ï÷»ô_+?êÄz·ÀØ]?ã3ÂñÝ?íãÉlÍÎ?Ñü»HÅ @?ãËŒ§Ø’ò?Ô°x&sCÞ?Ôoá0u2?Ñ\§ˆ¿R¾?µ2a"È?êÃùu|±?Ö[Í8'ô?é£ñ>ßSÁ?â*ÞòlMÉ?Ûy!nÚhx?æ@ Ç�kU?çÈ6‚u{ö?äJé¡+Í?Ó„%¯ÀwØ?á 9¡:ex?¡¥TúÍü0?ÓYvu3V?à‘Óf�Tä?ìh¥$aÓA?ãbž~J?â=Ø*NÛm?Ü —à ?ÜÒ£³¥®?æ­zÂøpM?Álœg/ñh?íˆ]AµË¿?Ù’ Mæ&?ÒChb§À?ä’|ÿG5H?çíöçJH�?ÔÐv�ç¨8?êçs ¹p%?íʉ™Þ@?ê�-Ù'®ü?¸¿Ì2mÓ˜?D?òu?îP#‡(x¢?ãýÈÞ\©?ÕK<ÈdZ?5Ó×?èð¯có îiÔ?è�ãǶû?Ó°}õKø?ì)ÅJóx?ï£äk#M?ÍPѰâ…è?çõ„ýÂ?èª!É«,í?é£0—»?íy Ö±'E?ëüIˆrÒ\?àTžû]‘€?졬/ϼ?á‘Vù¼?ßž¼Iü ~?çN$X�Sh?åRž#ô÷ ?æyUÍNÄ—?ë¶³/ tÄ?µSw#Íoh?Öu]­ÚZ?èÍ~•kfÅ?磮U*Ln?à Ò)—£Ä?è:›wòݦ?ßä9%!b?ç/ÒĈ‘�?â˜{Áˆœ ?í¹°•É?âÝï¿«il?ã†-\’ÍÄ?î;DQŠ?áê4]Gð—?­wšyR?Õž)ºéj>?âˆÿÌNj?ìÌöÎç4?Þ¸¬E¬[à?ëÿêÝà˜.?³�’1æ<?ØGásE¼?Ð#͇aä?äÈ÷¤©ÙT?¼¿Ô3J·ˆ?º´þÙ-‚P?è«&̾?ߊí"âBª?æ„­£ÔH?ïcMê›âÉ?襫1«2?ÈåëŽ:KÀ?äå"*y-l?㉮ZþLU?ç¡Ñm°€/?¬©bâ†&À?çàɆg)?±¹‰¦Ðˆ?ëü¡_ãö?ãÔ ªZ½?ác”+ ?樢Æ�Í?×ÊkVÉt?ìñ¿’ w?ÃL¦ 1Úl?¼;¹µº ?å?7¬ë„?Ø¥–ù�ÿÖ?Ö[°á‚®?ì�Õ¨÷á?éÔWÌj?ë âÿhn>?æF� Ö?²š€£&¨?³=~ü7Ø?å#“~wåZ?ËNÔËž(?æZ—øW3-?édáå˘?îç7�U”?è”¶õ?Û6òÑ8ÎŽ?æÄjòD?Ј+ü¿[ò?ÞðD]}?¶BæÈ³?ëCÛñMø?ÍçêT¦Ð?Ò]Gjž?ÊgX‹€?àH=™Dì!?Ÿ ;¡à?íª×6è¥r?äî&ë“?Ñ: Óg¤?ºé)`ª@?ïŠl Û÷Û?îªÚµ�vK?çT²÷³?íÔ Ï42C?å0—÷¢"Æ?åxüÙ,Çã?é––.d®Ì?Ö—hfs�?ÖÇÜ¿4¸?ß;læ“ Î?Ô‘û¿,?²¿›ûò(?¢/C0Ì|?Žb¢0€?¹…>vÏH?Á`1H¿t?ä´d îþ?â(B/º7?³5®‰O?Ý%/î²¾?Ó@�…—Ž?äѪ“%_?æ²Ïö}‘?å‹—ýmF?ê*!�¦;€?ëXÕlªÉE?áÂYõæ?äYVS©—?â"}¾ÑI?ØÑ{;{º?Ï7cš´?Æ*ÞÁœ! ?±c¤”6¶?Õ°wje‚?Ó*({ ?êgÉdÓt?ïC‘îõTÖ?Ý�[;V`?í£ DRD?âŽrnô¿æ?‹"2ˆ@?¬+A¤×�`?ï´Ì½Yó?Õ#z¥ª˜?Ë;̳ÉY”?Ó£,òF3Ä?ÒÎûúÉ.´?Èí¤�ü”?æ2r5TWÁ?ÑNÃð&–?ç¸0ºj2¡?ÈžnH—$?ìçÝÇõ�?å_4Ìõàd?﫳ncEñ?bä³™Ð?æØ¾É´DH?é%KK¨¥Ç?ä€B7 ?ÌÚa÷¹œ?âDIËKB˜?ßD%ÙÝÌþ?›ïGÓÁgÀ?ÞˆÔ?Êýj?Ä g+qït?㦪œU]?ã×ÇiúU?ÓKfÛ³~?î;éESw?±Ћ¶½€?£ÔÕ³V”°?åߪãd~4?ì’Ũ/¥¿?Ù�óãh¼?ím ëÒÒ¼?ꋤŸ5¥?èD¢‡‹Ã?¢<*÷?à—®G¯…*?àzìŸØÐ¯?Ù $ÒäNŽ?ébX ¨?Øø‚Â5Ñ?ì�Ì=�,V?|,%QÕq€?î z†Jñ?àF¸w}¸÷?×6š·Ÿ^Ò?ÜËps¤jò?æ5¼ñl“‰?â®ø'¤àF?ÙøÍ©s¬d?à,•‹nÔ+?ïî®ÃRÝ„?èÐN¸Â{ê?àY‹™`_?ÁDp®:È?Ѐvs�Œ?ê0lÜ‹A ?ê¬ZïÇû?®6ËãÎ?诿@¼?àÞ|Ë‘Ÿ‡?ÈÃV?è ¯"?ç»ÅF²Òª?Ê»k_| \?ëb0aEØ?Ód±/R9ª?ëdîJHò?pÖ.;«‡?ä‰=÷Úõ?ã4�ó¹ð?ÒVMT b?±ðçØœÀ?å`¿{ò?ØŒžÚíz’?ÚÒÝ?°Î\?îorò¸)Ç?Ë�—k!d?äp¸§£¹ë?è\˜ç‚x?Ѥ—Ÿ}¼?³Z2!x?Ù;»¬@–®?~vIqü?âƒç ‰G?í½*‹¯N4?ãé}i‹š?í�QÁÖ?¸×œxÛÑ`?ã¤�~üض?âÍ€Ž'i?à÷šf °Ü?ÙÄÔ—è,¢?ÍyU1Ün”?¿N]Š ?ŸKÂUc‚À?ê™Oãã¼�?è¡Þ†]0�?å|cCó?á”6%˜Ìc?ïܶ0Y?åàÔò_ ÿ?çY¶F'?ßØÇµžÐŽ?áÈ–‘«q!?ÙåÌgÃÔ?×õî ¹J?È„]Ǫø?ä9±W \[?ᆲÕÙ"Š?åSa•‘(?Òè �r¦?áYO„1'?ç݆ªók?ß§qP±½Ò?Ó6V‚*°„?áGëyn?æ<° 9ò—?äý&ðkx?á¹ð§b/ô?â1æÊè|?çD2Ñ~ƒl?µ�ž©›1 ?Í™8ü Ô?çÿº~¬?å?¨ƒ s”?ç®ÅŸÆ‚�?æiì"ûä?½[nu†À?Ù{´­t?ìËß)Ch ?½•ÿ'"T°?ë;ÒëY’?Ü® ߣ޼?ãB®5È,¢?âˆ"™ÎF?ï1,ô¢¾ð?¸“¿š À?î_–(¤0?å©ih'?Ùÿ<Õä?ïÅ4¥Üæ’?ëG&\: _?‚¡ó{ÄÀ?èf™…¯?Ù[|-ù v?âÄ\ïa ?ä˜õJÊ?ÂíCÙC»�?ä�<´Œà?å‰6–ív£?ëäÜ”1š ?ÙT^(L¾Ä?åªË'åRÅ?å”cß%^?Ö#q²#Š?ÁòÁÕþÉì?ê'…›¸\µ?ºßö×”/P?å1Ë Y)?î˜M›¾¬?Õ$Â-�?á›%Ö“Ç?êÿ[?Ý~(Ç ²?ê(aŶüJ?ãD¥G‰?ï�'"j±P?‚·Ÿ|?Ž.yØåÀ?¨An1«'€?ÕÅ“"$v?Àyd¦e²$?°óÒ×å ?ÐE &Iö?áØ²Ÿ Ó›?åI½ÙÇ¥Í?ØÏ^C?Î #7m«Ô?ï1¿O‚Ž?Ã]ÇçÖ¬?ì�â ¬­|?½]V�zޏ?ä�Ãtt ?èª4-ËBx?å­ù�7P?à3øéW– ?ؽ�ö1Û"?î11ÿµÏ?ènš‚Z\?å ! Q’O?Ú&Áäëƒæ?é5SÂRB?á 7è;ë?îÜ.ÅE?éo&Égrf?î[0û«Ð^?Y,^ Ún?æÇÛŽÀÕ²?æuYQeþ?èÕ“köi?È~HÑ‚† ?êâÖöè?×\ÿC÷?S°ã?çJý¾Ú» ?ؼô,ƒp?¤oÙ¤«�€?à��š,£æ?æ7é®uï?ÂSFÒwï?Éþ´M˜4?ß×9˜›ÕN?æ­p˜Ð­Ü?éîR½Ìâ¤?î­ˆ$°–#?Ä…­—9 ø?Õ;Ùo«è?Ëuo7Œ?â�×£„?ãðú>ñAÒ?Ùè´˜šÖò?î2¥S±ž�?ê»›V?Â(dœû¼?ÊÏl†š~à?ã«Ä&+¦S?¬^*kÔ"P?Ómeo·ÖX?í‚ð*ˆ¨Þ?ä•v«mg?×FìÈ«f ?ØíÆsß®?ÏK!¾ÀL?êî8¡¾Yv?íê½ë~Z²?××E7ÒŽÔ?à7�±ÙÊÜ?Íz4ëvð?âbáÓrÓ?Ë´æfžò`?äc­s¦ ?ØmF6-Z?ìex¾Úàj?Ñ­|ïßœt?š [3æà?ËÆ6©Õf¼?Êj̰ìô?ÀÚAõ¤‚Ü?á5üÑ©šm?ï?^ÅL°M?îVš·ÚG?딤$1?Ö+?!ÇOf?À´�¦?ÅH´_�à?êB¦Ÿ?èô]0ŽS?ê’‘vt]£?×™e�(°:?ÛùO.¢T?Ôï’û`L?íø§;}œ?ÒþaÚÃØT?ãúÃ2f ?ÄqmBlˆ?èϸäãXM?ÉšwpƒD¸?⌻tr?ì'å¬ …?Ñz0lÓä`?äDrWf\”?å/°°÷Î?ãp6*+¥?â[*í¥?ë¦I—>¹?ØJí?D?¬$ûÉØv0?šÚLCTÏ€?ÑrncN2?ÉzŽ9ï ”?à&,Õí 7?©¾ƒà?âq‚XäLŠ?âÁJ {•?Òê�©Šš?ѳ¼ŒÝ\?çjÞ ÉJ?ç óî7¬´?Û�êÂÒ?ЧQÛÕS?ìB�™ ´?Ä Ö?>.¤?ËœoŒ€`?×°σN‚?Þ8h2ò¨t?îf€ò¤ÈI?âš±ÞáØ ?Ê•¿(×%$?ÕØ‰—¯M ?ê>Π¯€ó?À^c‰7?à1˜‚ç}`?è„�^?ÉÒ.å= ?ën'ýÜþøhh=?â(°¢Ýô¶?ÒÄø�‚\?×|6MÒ¶?îR¼p3 š?é‹;Œ«Á°?è#Ci_»ˆ?㫤ǻ¶?îTZ° ßJ?Ñ£aQOŒ¤?î—ÇÁ?0?ׇ¥ë"V?ºå²þ8?îAcÌB�?ëÇÜüù}°?Þ€Îïj 8?éÎ31D>¤?Õ„Ö$yç®?ê*6Ç#$?ÐzepcoT?Òìw9•›N?Ù@…³íO?ß:£>T?àq£– ?ã“ADz?¼ÀÍ«_8?‘¢+b`?ì˃3ÿ»?ârÀ +#?Ü'«/–æ?‡R íÃI€?î®Ù—Þã7?ȞĦR&¸?ßjIÏt¦?᥋õÎZ ?à˜µN±må?߀3i»BÔ?Ñ4˜|” ?ªØÂíß`?·ô­ Š ¨?ÛãÒˆ™ø?Ö�ÝT»º?ïq,h¼d?äB‘&åþ?ìÃòúwl%?ÏÑ7)½ˆ?Ûs¥­Ð t?ÚÈTîD4Ê?»]†#Æ À?ÓE Ðu¸ˆ?ê(¨¶@ý±:?å©ïLæ×]?å?VeÁ?Ý¡tA¢É?ËŠk‡™†X?ìGþ%ÁìJ?æ~—lµ?Ôò¯LŠ|?×!5ÀÿqÌ?è™F€Ø?ÒT5,¦ôÆ?rÞVS|?åö)g½¾?˱ž?ꡪ,Œ?“?ìÂh-qQ?Ö”áÚü?ã$ÇÛA©Å?Ú`KÏ}j?Óâá3†Gø?¡;xžÀ?ª�qÉ?p?�壑q?ÂÚÝ·*ëä?· 3޾€?í[ø+=?‘Thà(@?´E¿àš‰8?ìé?ÞëγÛ�¦?ÙlJ¸½f?Û¦îgö?ÊÓE�1ë4?£çĘ·`?ã*;gO; ?ïIbö³_ä?ʹ¹t÷o?ë�}€ˆ3¶?Æ�zx^ˆè?ÃxÕâÀ‡9ò?ï®FƒQk?ÞÔL-Þ?ëtIoé®v?ã]‰ý=€ç?ÄÑ8Åxœˆ?è<™¾e?åâtÃÆÛñ?êSxø›Žá?ãï…Îy#U?×MÙ²X�Š?°çA– È?ÝÃP`*B?ÙIú @@Ú?¸ˆ÷&�?ãÿ b7ô?Û{Îbwf?�?!ìÞy€?¨_~Цcp?îr:»Ñë?êŒé þ´[?ÝHn•nqh?ïí×,<|?ÛŒŸ­’?îLÄI™?Ú_üÊCN?çŸ\ͱO?Ý¡€ŽíÁâ?Õ&ž`ˆƒ6?Òã/é¨ÇÈ?Ý?9ZñdŒ?Ív,â^üL?ï¢d¼²?Ù‘§³E„?É�}`Ûä?ãN5ð·lë?âÞÂÌ„?Ú…£BÔ4¾?êÒ ð¦$?çÿû²#§?ã‡éâç®Ú?°hñØÜ|À?Ü—õj�è?É!��?‰ÓJeÃÀ?ÈUw’ÖI€?Øzí×áF?•ÎýF¨b€?íO`VŠ-÷?äõþÒ…¯P?ïÕFK ‰\?î‰ÆÀ" D?kÒð’ð?ÑIPØ‘%ä?çNX‡Ú?·‘£Þù Ø?Þ:ëÞ|ì†?ågIÓÀ‚@? ™ýO3ð?åpîbïX?¯ƒÚœýzà?Ó‘á*™¢?îòìïiM²?ÔŠÀYnÓb?ê÷«VÎý£?ç�šÏLñ?Îd`fÿœ?ã€$Éä?îÏ•n ?Ôå=™²ä?ìÁ½ÉÙŒS?×ä‰öžò?à×4õCäé?Úåw‹c?ÜA VUš¶?ãá$™¥Ù?ꉙJÆhö?ÛÜݯ-ð?äƒy½ÂÒ?ëÔå*R?äKoë5d?³(©^ÚX?áà‡‘öÆÖ?Ð'U’*(?Ñ�E-‚å‚?í•$«—7?æÙ‘AJ‘?à†·"‡j?è0¢®_r?ÏÔ ’>»D?ë¸läJJð?覀g›?áÐoöÎÔÆ?Ö8؆u@?ãáÝÙeÊ¡?¸è£ Fßp?ä)Rõ9.®?áüë »n£?ÓG ÚV?ÎHŸ6T¬?åÀ”Hµ©?£±»¶îÏà?Ú£OÔ?Î{æ 6d˜?Þ¢'Ž ?ÒVXо 2?á±g�Ãà??í€Í‰¦?én;—R*?ÏîFŒFv ?àåñ=]$?Û_ë$ŒCà?áËÊ®.¤?äohò¸ô?¡h•‹‚@?íIDzOT?Æ$qàFïü?îŸè¹—?åhrí+®?ªm a_0?èÄU¢é?î/µ)5Üü?Ñß®m|D@?ä<^1¯§]?àû^ %!²?íü›±î?µé¶ Žý ?æúì‚À5?áõ"ŸŒ?äð”*°W~?ì`d6*7€?â#dê�]?çÅ14û)?º v²DxÀ?Ë–W… ,?ã!ídëþ?Ÿ÷—¯ à?¾ku�ª„€?ë.µа?ĸÚc“†¸?Þá?xk‡ž?ß̽ªXþ^?ïœ~èõ.?ÁÃožD\?Ì^„Ï[–x?«Òb:5�?ìW�¯«v?ǃ¯øGËà?³.RokÁ8?Çoðo‘ýˆ?Û‚²JMÝô?²s¥zÎÐ?¹ZÚÞnÔÐ?Öt›µe‚F?Ôð KùyJ?ÙR3š?ÒñØõ@L?‹$T ä€?ÍÆ=bFØÄ?êOl<²§d?ÄNhØíx?δQâkÙ ?éä?ï•L¨?êg�š%?áëóºÂ ö?¯Æ˜¡—p?Ë}‰,D+�?áÚ¤lhUQ?•3ZÀoú?åA‹ÔÈ t?ç±³üI¿*?й›7O¾?êKlÑ:îI?çÒý‘“ý-?Øà1˜ª?íAñ\ÆÚ?Ä€œ2”ÆÀ?熉áíø¾?àòL}Ž5?ÂÒ2AÁD?ÍÞ“ÃÈÏ”?å_\ƒžó?îÝáÓ/y‰?ÖrêL±t?ÝÔu£ƒ2?ÞÂs"{åÜ?Óh3ý`?ã2¹ˆüù?é¤Ê8­;³?ÞŠ> w?î¯aˆ% ¹?âÏz:tØ ?êÈ:²Û™?ÈçHjNeô?Øø}·ëþÂ?áfH•3A?êÔ²Hu3o?¼Oüà•SP?”Še`?í#mE¸Qv?ãBý�9úŽ?í wì<,t?ä“T»�×?Æ~Ä¥f§?èô¾?™;?èylžÊù?žß¸#¢€?Ý©‚V›>?ìô€.û Ä?Õñj®wT?ìG2BÛTú?ÜièKÚà°?ݱ"ËÝÔ.?Ó¹[†­8?Ûø[¢à|F?ï‡%쇛k?ÚUêžc*p?رUêÒ=&?â®T½'?àŠh‡Wœ?áÓAODÎ? C³!?®¦ ë&Ú0?å½»ô3?à <¿á*?é=¸§\ÂP?ÌïžÕG\H?×§¿R`ŠŒ?Þi;¼o›Ê?àr…a„�Ä?¼rÉIUÊè?ÄO,lä@?çu-}ߌ?æ âí¡Ý‚?åýÇß¡?èïÞ&?ÙŽ™^dž?€¢�!̰?Õ«Ë ’pz?ÚINýÇ�?¸«å‡‚ø?èÚ‹ds6?éäÖp98µ?ÖbFöAÚê?åCêäæü¿?ç±@^Ûòb?åØcBæ`?äÚ£ž_?¾`Ëvì•`?Ð<ðíŽ?íAš^$ü ?îÎDbiÓ?áç]‰ÆÒ‡?ÚÃÜ¿)zø?ä¨üN û}?íõ<¸›?í#jf `~?ÚroóÄn?Qš&ÂEÐ?Í5Xüz˜?áÉz\Œ?ê²62‹ç™?é—Hò�¡?Ù-NH�Æ?×£@ùÛl"?íC@¤@ô?Éù%=œîL?².�˜T*X?è'=‰¿M:?Ñ¿$/€Ô?á‹l0þNæ?ëŠ}m?Ó‹½‚xv&?ìWS |=?ïð�sL™²?ëë÷Sÿ/?ääðgÑ«?Ä#þ$Šûô?¨�ð+7L ?å(׈¥…ú?Ù�Ҁʭ�?×Íqº�l?ä2’ضA?È7©`I?æåV?§?ædD„0c?䧆‹*?ì©bwÊke?ÀO׈jÄ?åæÃü¿ßX?ȾËÝÔ×H?ì–·jHÚ?çÕ—Ã'?ëpîMµ»?´jjo ~ð?â%OJê@R?Ù ¼µ× Š?àåÄ¢Û²;?uþ[¾4€?îÇœÒóɤ?ËT�÷y´?×äK½~b4?èÿ5íT&„?£õdÔ‰ô`?¦isvóð?×<çdj4¼?àæI~ Á?½\=e?ÿ�?ãÊoÃé ?è±@"üñq? 9Æ<ßP?í×+ˆÑës?Œ×·P¦åÀ?ÚS¤X =?æ5v¢ZL?çŒ$l‚æ�?â>Å)‹`?²,&S4€?Òom„hý8?Û Rv?æéêš®†Ç?àÜ0¥x½@?á]˜x©‘b?ß�Õëžà?ÞyŒE²?É¢wæì¨?á×dòm¢b?¸mrEe!˜?ëZ†ýÙ‰?°c(ºrÚ?¿}ËÏyêè?ÚSîh|¾?âÁ5Ê9¤ˆ?àÕ¹V£?ãwÜJ‚ÿÂ?Û�ÀëA$?è#‚†÷?»æqE‘À?‚L;FÅõ?í ¤Â}­Ã?Ä&�3ôÃD?íþB 4°?·c†)“rà?ÉHX”]¨?îTÿ)Ä¡[?Þ½�CŠ?á(œ î¹?ÎÝÍ5Ѱ?î Œaî‡?×änà²�?è~ÈKÎ%–?çSÌ»±?ëÏs2€3:?íÈúÎpL–?ÝN9ì;›Ê?~jn�Ú€€?å­Si~ ƒ?îA‰Ôi*?¸³CFf†X?æ÷Jyæ±?ë7`=&v»?äš`®žå?é`™\2?îJõ÷¢·?Ó`×&Wfâ?ï%•"pó´?îo«&{ÆÖ?ÞE{"³÷à?·˜ê‰tJØ?ÆÔÔR„0?ÙÕÝ]]CP?æ½Y¡’�?ãa÷îØ‚?ÊÉšƒ4x?åEÜiÊZ?î�ÒÇÛmq?é•O)y™Æ?Ôª›|PAø?Ö¥�.Y]º?ïlqÍÂ?å÷Î`�ч?èa7(@IÁ?ãâÇE?Ó`zÃÜ|È?Ýá½Æä?忥†šó]?îÜxkl3Š?çͺ\™-a?ÔxÓ›n?Ü÷ÓT…-\?èN2½Ÿ-¡?—“,Âc; ?ÛF‚( ÿ`?¯ós½P?ÜÝ™ o¶&?à÷òy¿†?Åtž¯£—ü?Ljä·Zå|?ãØKqÓH?ÇB[ÙÅ\?à^{Âà ÷?Ñ4ï°� R?ÀÆóFp×?ï�þrZ…ú?ïá´’ë¥?ë"|µ´²?ßXx0„A?Ù¥·ËÐ ´?è¯nà&ûo?ÆŒøUü`?è=Ðt?zâà­9ª€?ã¶1ç…™Ç?ìË(EƒÕ?À-Hèk?êv €Ü¦þ?âØÜPðïß?擉ÖB¦î?åWÉ>vs?”ð×Ðv@?ì5¿;¿3?íI‡Ú`¨?ÖIÛ™Œç€?ÍÚÙ2zÚL?À€}ðÜà ?ÕBN Æ ô?Ô]?¨µô?×Óúì«SÊ?Æ=ñ¯?èÈ?Ñ-YÔɘ?ºç”30Þ0?Ë`§BþÄô?Õ» ¤,R?ç!97Tnß?ÝJ£þˆ ?Ø�Ö¢‘’‚?Ü0‚D€cf?Ü §ÓNB?ÜE5´=Iê?±•­¸8¸?æ:Ç /S?²MQu¡Ð?¦rf` ?Ö°É‘Væ?Çá"G‹}È?æÑ+º ƒ´?ÂâÙ忨?Ü‹¯ìø�j?á@>G Ç?ãÞ£g,é?Ƀ°ìt™D?êÝþ0Cá˜?Ý JR|?äàùˆH„÷?ç’RŽ…°w?án ço½é?Á‚r2PT?èŠ õŘ`?ÆNØoþ¨?á8·Uâ'’?Õz(ÍbÑ–?è�¥!­Ýþ?Ër«Ïaİ?Ð;Ûþˆ|?ʉwÙRr�?¹®:�”?éò�ô‡Ó?­7øvŠ™P?écž„V¸e?Îg üN’�?éb�,ß­Å?Ûw• Œ?¸�‹CœX?ãrèêÔn?Æ'ìÛëˆ0?¶LS¯:¸?áÛK¡?àƒ¹ûð‚¦?Ú¯—ïž?Ðvùž\R?Ü^�R«`„?æâƱ' @?ªÒ$‡ý€?®�©6aZ`?ÂNTžÎ4?Ù+5ú6?ʽ?bœ@?áŽö8'?ÈêÄf4?ì÷ëÍ+½r?ï~›wë?âtZ�'ó?îJ�ÓJ²û?ÎÝ x±Çð?Æ äk?Õb*#ñQT?æV6Ä{3ó?¿ÚŒE> P?è cï‰w?âåÓ9ô›¢?áM'‘J{?Í<ÆT1È?å½è?éé5� ó?çW¡ºëG$?êo†Û"Jj?ﯓV/¸ì?ß�ýð­åš?ãØÊ¶¸b?ØwbøUi?ï·Ç�vûÓ?ÞºD,âÚ?×(dZtZd?éíº1ZT?è‰ú§iL?îEÞˆ½‘?Ý�­ú‚Ö?ì¡,½ó]?åk­ZâŠ?ì£Hô¾Uü?æRýÊ’3?µ&`鸀°?âÿŠe=û )^:º?íXô[žàÝ?ç (mƒA·?ÝÄ9~H ?Ý cû#ê�?å}9 ؤ•?î_D,I2=?ÙyJº;øˆ? Ë{„È?ëXt”ï3?ÓUX�3Ð,?áÔÉÚó]}?ãëð¢ƒäg?ãš~;�?á{Zò†™?À�³í5¥Ø?½8Œ†E+ø?ìR,Í_Ë?Å�|¿8ÿH?è˜ê¿€š§?â›9~PÈ?Á(Zî|x?íÒ‰¯4¢f?â¨P_áIî?Õa¸FLD?êáLUoô?ÃÖÞI�¸?ïŠÁB38?ìèV×dR?×Y®W³WH?ÔÚ­oõs¦?é?ZP­?Óc&$Æè?ìm¯§o‡'?Æ‚:Q¸?írw~[?ݲžI!Œ?ãÖá e#Ï?ç[–# óõ?å Na&èQ?Ûy*ÆŠâr?Ü×îŒÞ�˜?쳨ä½?äñ'ò·3Å?ëC‘ü ?âØF(G›ª?å°X¼”9|?×5øÅ’Òæ?Üî-ù ÌÔ?çÿG˜ž®?ÕW]eÞÚn?æü�Só_­?ãÈEQ]~?æšþÂ1W?á6õ°¶Þã?âx¤~¿…?о� z?蕯fеê?”ÚÆûb¤à?ê'¼ ÿ v?ähóUB‡?ÑèϽ‰?ÍKô?ê §V¤(e?âgAÅøn?³´LWÿ¬?ß½K²s�r?Í´îÉÛÄ?èÅ€5SH8?ç½>phŸö?º%b/Ýø ?Ís„›h0?à·F·ÆÃ?ævs|�>?Ýå=¶8z?ç®éÔ»Çk?ãîšßXa‚?çÜc©óÍ?°Î÷ÇYG ?Û¿11¦`€?Å›°?ç.×9‘a?ä”õT8ð?ØÁF³oì?Õì[M÷¿ø?ºÛo´uå˜?î³L¯pV?Ù Ä3r?…ëÍ–3À?»9tŠî•Ð?êëûuPá?Ê ¬Ð+²¨?ã.…8É@h?í– ÷%Y³?ÔUôœæ¶?Ø”�4ÌŽ?Û©�Z`„?ìëF±ABA?î·q*y&?䬼¢¤¬2?íñÿK3þ?çIhÎQÍ›?á?៿1?Ö?Ò¼á Oͬ?Ð!ú"„?À"˜¨ ÅD?×ä+paÒb?è¯_*ƒn?Ýß­¹ËÝŒ?ì5ÑÛï£?¶Žñ"X?¾'Ú ?ÒÝ€ÿ½³ä?Ô7ð9:RJ?æX‚�µD?žšwàlP?æ½:M÷ÇÏ?ã"†5sf?é§[�zÆ?éÙäS€'?Åc"utÑh?ÜžGYj$?à¯Íivâ?Û¬Zâ?Í”¾f“¬œ?á‚‘oóðâ?å¿Ít\³?¢«p‰Ã�?¡EU€Çrà?éŠ7þ[f½?çÇ·âm�?é.7jÄÉ¥?Âz§†Ï„?¸³aaÉœH?ä~53Ëe÷?Íä:ì¸xÜ?ã�µEX±Û?éã!#‚ð?åÒ On77?ÊPÝ?#KX?ägpúÇP?Ç+³øgn ?áè’Â$)?îD%“üHK?í›EÆ(“?×wƒÂ‰Â?ïfŸFÅ�?Âvê“ì¤?å(�[ „?í5—)ÿ©?æj�«L$5?Ítý«Ïˆ?ç´…è[Ò–?Ȳ-±8(?Ý|žÚê?ÁéøA?ÙE¬ºžØ,?æ‰Ï®µk?ëÅM\æø?æ@ÍœLf®?å£îž¿ßU?œÒOu§ ?ßeû4—¾?áŸD y~?ánËÍß0?è÷Ëp@f?ÚŠì°?ïiLçíÙÎ?ê£,ýiÔç?Ц̷áöR?�kæùi?ê3‡Ì®~ù?Ö­�µ%ÌX?ë÷ìI#Å?¿3Òë. è?áü²jÛs¥?èIT·™Gä?ÉQ: Ø­x?áþX¢8:?͉+asS¸?ÐTw³¶¨>?æTLæ _s?Ódü6Lì?ÖK튂?㬷““$å?Ùøpû• ?µ_+˜dø?鯌û#•?ëR«ªÕ+[?ë'¿ªVø?î™ `âÈ?å.ÉÜWi?¾>Vÿ�˜?æ¥Á 9?ä?ø°�K?Ùk®(MÏ’?äòª%„¤u?ìHŠ>û©å?ê<ø*P•?áCGYÕÍ0?ÇtNµïˆ?ªÛ*øQÊð?íþD5­Ìp?ÓК)cv?鄸º�?ÀÑXô¨õ¬?႘ðèÓ¿?¸1?ij8?ìÅà>µÑ¿?ÉÜf2]GH?å�ðñ†"L?±ÍŠ‚‘*`?Ý›hš¤ô?ÄÍ­œx¼?˜[8H à?Ófu ɶ?ï`nAu”G?ég9q[i—?ÒpP¶¥›T?ïüO£hI?ß&ÊwèÔ?®µVà—�0?›d¥ a ?±Óê@K­è?דÀX67–?á²�ÎJ‡?ç›§òM�?ÂftŠÊsè?çà$a Ÿµ?Ôx$µÞ„?ïÕÓÖ?ó?´;M|D8P?Ïð,†M ?Ö·ÚïMn|?èdåt]õo?åÃH~h-Õ?Ý’^(Œ"?ÇæÑ¬?Ô™_¦üE?ÞXŸ`Cž?ÏFÑB•.X?ïÀéÞ.=í?áÌÁ§yB?�Ù‡ÚÊË?ï,ÙÁhÏ?°eäfõ 8?ád'Eµ ?èò»ß™û?×ì¦44Ì?ÒÎå]ÛJ?Ú;é!ýæ?í`WJÖS?Ô‹Ôû €b?ë(�”´·Ç?îÊÌO‚Øl?å�çõrú?í/ÛöЦ�?¡Öš m`?Ëß2g¤Ü?¡‡SÇäJÐ?Ýãï@E»„?íü ÕŒÒ7?îò;:çÃ.?» °—žæ`?ÆA÷4fÅ ?ߎ&‰±°?â© °z·Ò?Ûj¶Üw"?Q̬˜?àó_ (â|?±A¨Ùl>°?å…ãéwâ?çB4Þ‹¯V?ëœûœËc?æÜ‘g[ºÉ?ÐÕüdÖkð?Ü}÷–7 ô?6ˆ§=0?ë0�ʯ¦ì?ç‰;]'jþ?¸ïs9Yê?ã¢ï´¹¦¥?ÖA!r^‘ ?áz?îÑ„•?í`i‡: V?È�ИŽ˜?È"nLîbP?ÚÌŠüÉ�‚?ÀØ,a€?âèØ1K›¿?–AÕ¼?êAcÎMÕÂ?åþéø¤„?½Üå3g.ð?éѼL¾Éz?ßB°üu N?ÚrR;TÇZ?Í§Žºï ˜?ÜšõPc2à?ßrOž"?Â{`«s?±¢­¾ùž ?Ñ[$M4N¢?Í¥ôÁˆ?Ûþ‹úÆ:X?â�êGÆçZ?h:Ãþ‚?ï¤Gì‚61?éctÑlB ?¬Í»´@Ó€?åV<£)ë?èŸg¢&¸??¯L7‡T‹0?ÔÎæ¼ù®ê߬?µUÌX´�?Ô"Îh ²?åîDG0?ç$\;fßè?ïí DŒP?ëîQ£eâ?â¹Ü¿\¯N?À»ðBL?ÓÙ^RÝ[ú?ÄȆ±•c¨?ï$¡àÕ|?ê¶ü«vÓá?ßÉêÒ¬(?ØÇ[ÿ‹[H?â—˜¢Õ ?à%ôu¦?ÕÔœ>±?É¢¥Ã|¸?é`.©IA?î#bJÍ(W?ã›j!&Oð?Øõ¸¤¥D®?ç™ ž}¸?Œùû]?àÐ’(IËa?ìþ¡zЊ±?çDËÉ!~Ý?•rð\Ÿ] ?Öò‹aò?ÚhX+ôôp?é‡ 3�N]?ãöùM×à?Ô }J$lR?˜³’Тp?áæPǰX?á³�A :?è<êGˆW:?äܵšZ?äX5)n�|?Ý%ˆt Ø?ΜGsOEÌ?À ´Koæ¬?áÒ:³Iê´?Ž^²ßéÀ?½Œpò‘á?Ù*x]UûØ?áÀ»¹¿À?É·+4?Ø{í?ãÚ?éågÄÊTb?êMiŸ£)#?¼ìX^?Ѷa´M?éf ˆÌû�?ÝNž4Ï„æ?Á Íú„?Ç'=˜�Ø?á°Wµ´Á?ìÑ×ÿ Q?�ð‚ "tÀ?åÚI[#›z?Ùó�ù>?ÀFw¼D¯œ?é“÷œ«S?ƃ=ŒrÜ?±Óãj ?ç dsá�?Øåâ�¤fò?ßG-Zy�‚?Û¤kX!Å"?ëT¹âa·?èêÛ’T?¿õSP °?èf=ðËÛ¹?Üjö3ûA(?Â/WæÎB˜?Ò Ç¥NŠ?æió˜¡é‰?ÎÞ{ ¬2”?¿ÆbÙÖðÐ?ÐýZFUf?Û Omt®ì?»ª�®7—H?Ùm ºZü?Æ‚iÛ/–€?à&3Žfú?ÏËWÚ‡ˆ?©tbÔLú?ÃåÔô7Ö ?í ÿ[~Z?ÛS�1ÈØä?È� ^ñj`?ã kÈ‹?ݲ_kסŒ?ÛðI¾Ì6?äTXë“ æ?àxÌ.¼‰?Ó—HÁvj?Ù¾3>`C’?ã3{ À ~?Ó[�Ú±?© ;-ãNÀ?ά„eù‘ü?Þ�$G]¡ä?ì‹§ A«?呇ÌÉg}?é<âb<ÿ?Åà �Übü?äÖ ¸?èó®¼Ný?ÐÙ]ÆÃD?Î"#nå„?ê¤;ó“_Ý?íè€F{~‹?æûâÚVŒù?éyi‰:? ?ÏåÿÞô„?È< ¨-ø?çIƒ°�–?Þ+/rHXR?Ý„¤M®!Ø?ïäΤ… ç?äÉm'ö›­?ç“°Há?íÆ!Bî?è�fôä?ĽHQñ ?äiT”²?Ö��Ð¦Ž ?ì%`—·?±¥�rìh?æË³2üù?Ê»³'çH?±ã`Nu†?Ñ(�®óŒú?é” ®ó.Ö?é©Ú]Á½?ëådëÌ b?„ tÖ{y€?¦ ¼:)Ê0?àÏ�Jƒ?èCBj=ܼ?ÞyÂèCÀ?µã‘¶ñΰ?í†?ò¬¸?ë¨^•úâ?Û;Pýá�v?àAãOx«?Ý7"p› ?äJ™,+x?ÑѾ«×«Ö?ãåq“Qk?ÑŽùFÆ?¡^æÍÃ~Ð?í Ú§¢Ÿª?á¦Å «Z]?Û`®u£ïþ?ï†hG“ž?ç u3j#?å^.\;êg?‰wI ?ÇóvžŸvP?îßúùÇ:Ü?µþ0äž°?åI/¤ý?×® Eš\x?Õ$ÿ|S¶ ?ÍûšUØ?æ&Àfßã·?×A‹i‡¹8?ѽÇ&È:’?¾–+Ï x?×F'‹Ä?ã_Z³¬»?î³]ɦñÕ?׬jÓ�¤?Æ+[mÝ�@?é§4›«°?ÀÁËkˆ“è?îÿ³-«ç?£í"Þ©°?ËÚœ4×l?ŵŒ(H?ì4¤‡Êȉ?ãÄ6�@„V?ëy.d¬º~?×�¸c2«L?ì‚\ªc?œ£hÈ~À?ÓT!p\?Ó ®«¦`?çM2퀽?âzª“†¼?лÑw´@?Ö¤Íî4 ?ß=K‚L4*?ëà±J4³?å0˜™whº?é§æˆ¹{a?²Þ©·æÐ?æúd_¡õ?ÀìF“®t?Ó�¡tbÏB?ç]¿?ëA¢e¬ð*?å�)<܇Š?ÙÝ»¼É ?¥/$Ö£ŠÀ?Û¼27ˆ€\?§ª3�°¬0?´8ei½ÊÐ?éòD²Mk?¹¬Nâ­ð?ÛD“àvÀô?ê·þùû5Ü?â�?á»ñË?Ò…¥ÄØ€–?êÒDÓâØ?é¿G1˜›•?™} éÉ·@?áÀ‡oÖ\×?à§;=sñ?ÈŒ=�H?Ö�µ¯:°n?æ-~4ŸR†?ϳ³*]v(?蔿Ùè†Ð?åsðXì^?ÚÏ™“þ;²?êùÓÄÜg?ïåÿ#V©¶?í/~k6nS?Ûlú]1Q?ç åvÌ?Öá“d†%ø?å4m}€8?ä‘DA,:”?ånFPÕXþ?ç¾%È�§q?íYÖ]ýE�?êC¢9@>A?ë¥Pa‰ÙŠ?Ú·0�ñÄ?àHoS?â£z©R?â^CƒÈ•?ä¢ÛâËWÐ?Ôñ¦¼9 ?½ò"×Ð�?–ÚÊ n@?åìãß™£ ?à%¬¢Ò6?Õß5“Òõ?¶õû ³óH?À»å¤~ŒÈ?«²žü�* ?»°ù¼�áX?äÐøÂ  ?ÔŽµŒåé`?Âïxl…û(?µÿ£Å¨°À?è�þPb“Ž?æÊ5›GBm?Ž_LEEØ€?èÜ `o”?à<Ú>‹Ý²?µ®�x�?àð¤˜e¼?‘#Ê»?Ù}\@8B?ÖhÇ}n?£skŽ0N?Ñ)ž@gCZ?âì�(ãié?áìB[·œ?Ëbh£ &ø?Ñc :lô&?æî1Îúˆ,?ë¨ ?Ý¡ˆOù¶?é½b¨^?ïfr€i_Ý?íºJ)^)T?§ãSba|€?è�5˜¥¦[?ê•æ9¾|?í´Jw<{x?¾Aø}z­0?Ç{Þx´?â›Ny7OÕ?Ýoð¹!>?á#f¦XCz?èèðÞpš­?Ðë¹R—\ ?Ôlí¹dà?ïCx[§û?æßûü}?í“GR·e8?í|É`¨?Ûð'Œä?ê9¦0{Cç?Õ ¨ÃœQ¾?À« (¹d?ïóÐ5Ë?îÉÀu*øÿ?á+Ö-|�? /^¥é�?êX<’Ü?îys‚¢á5?àA€tRæa?âÂí¦Z×?æ*‰„?Ý<Ú‘]‹|?àjfì §?áV£eæ!?ìØûâÛ†?âs¥3«ã?ĵ›4ò8?Ø€»]”6?ì_ï‘¡Ä@?æyB?ÑÕÝšÀR@?ÌÉZ¢ô?ʾ«°Îà?Íìê-Áø?ÂWöÂ@½Ô?×3-èÂRÎ?½3|ŽDVh?ÁI¿[9÷(?ßÓnÓ=Â?ÝP6ò‰Bx?ïÜ24RŽ?ÐlùW^sö?áú…¡Í?à,/B‹/I?第Yp?Â5P$ôè?ã¼£¦o?ê‡O�Í+)?ØÎÿÉ6íÐ?È[²é5ät?ëg.'/]?¾C‡?í À[Ò3a?äî¢%؉‰?âÖV4l?è>0q¥­¼?ãGÒO·P%?ëJÕX®€?âI3ÅzB?çä&?nÊ?ãèWª8®?è¼Åqp‹J?ï.ø+-ø?ßQL³>?ÀÄЙ$?é…n¡;]F?Û3òšò^?¯“ÔS ¢p?Ô�iæöJ?àW=¿jôÊ?›ÉÕÜŒˆÀ?¢‚ðß¶�?ÓÈa’ÍN$?É*SžÜÕ ?èÝ86º?ÉÐþæï€ø?ë8ißÂw?Ñ›Hàð?å}™€zœ?§MÒ`_÷À?ÖbʺNóø?å©DÄ|A?é‰ê®¢Èj?×>gpîá?å*Ó&y+?â‘E¦i:z?áJ �/g?ɸàiìYh?ÊÍ4iú4?Ó5P^�Œ?󮂦Tv?¿Ç¸Ø�Ð?Üzèä@Ò?î-IF2?Á°Š‹8m?æ#ýÖr d?~Ѩ=|?Àtq§”l?àò@÷…˜Í?Ñx­al’?ÀÙ¬ºbl¬?ÇÞ¥ŠÍ?ÞFdw=µ°?ÏE¯°.t�?Ó€­ÀYüÖ?êsÊø´;?Ô?D| ´?îðy€Ùï ?êÀŒ àV?ì‹Ú>ˆ÷?쬚ÖF^®?ì)iŸ9|S?犦\B†)?ÍØA:|Ÿ´?Ûa·pì?Ú=J,Àgœ?‘¾2¶;‡?Ýk :?à©þbJvö?°‹kŽ„Ò¨?ç‡Y(`Þ-?äß0þ`?â'ïM–Ô?ãÍc%JÜ«?ãÜ�wvV¤?â�ÔÌ/à5?è,sÙ™=�?À2Lt�l?ëó;TÞxb?ëíGkžœ?îÁ^YŸYÆ?Íï’t?ÞŬúÀ?¦.žN+À°?×`�€B Ü?áŽS½r?Õß“udD?Á·ikª]T?Ççu–Šä?—㤨ï™À?ì¹_sE¹?¿9Ü9ul�?é–Z6hã?ØÊAÓ?çÉX_Ð?ãl¹¨<œ0?Åx/ƒX?ìïãÙ¦”?ÄFÍ{íÈ?ÑÌçë�œÄ?Ù©ZÒ9>?å|£7ê" ?ÕèÄÔÞãŽ?ë˶–nÛÃ?ë¡æ9h?îö ƒçB?àuлZIA?êߟDŒ4?¦H½E³P?ç‹&ÑYÔ?¼ š*Џ?ÓÌè#Û¨�?è”ô¹Ù@�?Ú‚¯ÒPÃþ?ÔY^Ü¢H?â°º%DN?¾c„ f˜?ÇþLÖ`?í+4ÚÓ;´?ßÙû{Lú ?šm•¯'S ?ãª_ný˜Â?ÚåI÷;NÚ?Ãڣʜ…ˆ?ͬþº+ß”?ê$|-mê?ßû�Ü¢bž?ïEo1)w»?áî @פ?åc#,¾¾?ïB[%qM?ã0°ÌD ?ìvÀéÄï?ÛŽ¸¡5ˆ?àŠ€ N›?ËDÏ wè?ÂÌ?.a$?ßöd!;œb?Ô£NÊUdB?Ü›RZË¥ü?íŸöICC?ÓQÐn@È?ÐöMdú€?äÀPw¶?ÑÐhâá•0?ïøïiZ?ÚŒ�Ëz¤Ü?ÇÉkPTœ4?éMlµhT?åUŒ¡o?äðºžÇД?Ìmõ rÙô?Æt‹ì”ظ?ìš >µEŠ?æm³‰ÓÄL� ?î¾ÀW÷kò?ÊüGá?J¬?§}W:¨3�?ÄÈ�›¤Ÿ8?ÙÖ2nŽ2?Ñxr;Vû´?Ñ{ƒ-í9œ?ê˜9F�æx?̨'ŽX?àöå„$]Ø?å{Ð&´³ø?écµã¶PS? ÏâT$Ð?Ô ôZùô?ÍDï.t¹D?ÚTÍ}5R?ãA Ÿß‡H?áæ°«wÃ?î�oŸð?Ú 7-?îŸÈæy"u?ÜGïo¤Œˆ?éιa0Ùé?ÔÂ+W(/¨?Ô´ÑpÚH?Õör[eˆÀ?Á?W|@ì?܀®PòÒ?ÞPaÇ6(?Ó˜Ž!mà¢?Â^–gé?ä×¹PÂe?軇OÅ?Ð?à·²¿š?«H¢Vy®P?Þßk0¶¤?Æ#@%Ì ?ÖéfýÏL?ïO ÔáÎ?ç«l Ï 5?î�•ž?ç‹zR*z?ì×µ±ì—ð?ê{ö€*R?ÂJƒ~¶w ?à+Z!Ì>¸?æ”u«‘?ï&WÙè#}?Ô²ÏY¿®?ái`iI+?êß㓨I?Û^†Zª?€¯žóž€?Ý(=)Ã@?çªýì?Ÿ?àÝÙ�-ãÿ?¬Äà¹ðm ?ãÆ\zß8Ø?áhÁ¶>9�?ËÚ:%_vL?äÎü,8§}?èq?%™“?͹fã’`?êJÃRz½¦?ÖS£×ýÜH?Ñ~殮²?ê1B9ÍBS?¢DµUœC�?ÖC*¿ Ä?çê•q?ຠ¼‹+?ïbÐí<+?îUqp‡&‹?Ĺsµ3x?Íó?ˆo:´?Þ-:�ˆ²À?àR‡»a4?âtÙõÚ¢?êìuDáT?ïqIÙœ?‘Ô$L¨ô€?ë^šóΣ+?îöfâ53Ð?Š‚ø¤Ú¸€?êlg" A? øÚaN¬?ê7ªÞ›ê?æfJ|!ó‘?¢›Ý §D ?Æ�^‚ë^p?¬Ýâ"¥ó?è¬?Ûx1ãV'Ú?àäKvÂÓ?Óî,´}kÀ?åêñ¨ ?Ô£ýãvî?Ó@è´¢°Î?Ò\”V…w?ç4Š 6´\?è(®³µæ¢?Ô¸@OýH?ÄÒ {Tìà?î}Jüü7R?›âë\ ?änr/>`|?àº/ÞÌW?ÒØDgÛ`?Ý·~GÐø?Ý ?]œƒ?âØÝÇ¥?ë€ÎÂGù?ïÛFBt ?ËÑ‘¡!ÌA—^?ÖSQåNðp?áõ‹%©í?×1í¾�˜?áÈ[Œ8@?Ò�+þ!ñÄ?ÓÿòF› B?íá¦Ö¤/?ãµÎp„ù?íÑ)¨ùm~?îNédl~)?Ðö5¥NxT?ܨ?…P?ïe¿›ÃKN?à×±ÕÈ?è¬i²>ƒ)?åQeàE?´uÿ�2+h?䈌lC?î=Q´äË?æ Z Æa»?îì ±¡a­?âŒöqôb?Å53³0Ì?ÖÍCi+þP?íêë]ãl?ëaL$˜ $?ê¸ÛF<+Í?éC¿+®cÛ?ÉMZiU¹ð?î#ü´–ôœ?íQ•aG�²?êúNß5øc?Îze¹3P?w"oMÅê?àÛª¼4f?ĬÚpÌ�?µ^{(0ì¸?ây*X©¼ƒ? ª#½=€?Üf\J^"?ìõŸmiu?ÜÎîlÂ?ç�—�)he?ä.rý*Ͻ?勃áÛèb?Ì2ë ÏþÌ?àÒñ+AÀ?ã/É#B?ëY¾2tL`?Îî™RJL?äîî´šRp?Ñý!‚‘O¾?àÒú�?íë‡mÖˆ?í¬7Ä8Ö ?èÆtnœÞ�?î%!,ºÏ?Ñ&nQ)áœ?Æ@ä9|¤?ç¯ÂDãS?ê‰0RÝL¥?é²±"�g?ëÁ*ìèTµ?‘؈p\@?ë4Éô·õ4?ÝÜ1 =_N?Þ†³ ,š?Ñߨ°¯¬¼?èŠ�ºh ?ï]ïð?Á$2¹ÖÐ?æ{YýÝ?Ó=Y‚õ\?¶ 4–˜?ÄlºäŒ"ô?·UžS}Ò?ÁG1ê?ꃽ&²©8?Ó³j¹Mš?ä”ÿSLt ?å¶"ÓÔV=?ârE¸W;?ãŸNRöxn?é†Ïv#¡†?í(ñÿÊ2?íñ¾(Í ?Üæ_‰2îx?¶2ù"f-h?à Z>Åc:?ï…œ³�7¥?¤¸ù$û?ÞdµÎ(?ÒNú¬×ý?Ò;ÄÔ-˜°?ÃÿŠŒ¥ô�?å>—Ô»À?é?²÷1Mš?ÓÍGe_ÛŽ?ÒxÕž?Âä�·b”?Р�G �F?´"-Õ”Ú¸?íuÕ`ô²ý?êóÉèYF?¼uzô$ì?åî>Òb>Ó?æ=Yð²gÐ?å|�öík?é–è ò¹æ?ç/—>þƒÈ?ï ÷æ†Ô?äùÍöc°Ç?á­•);?ҵ׋ò·|?ëQÀM×£ì?éÃÉJè7m?í{�WuQ–?Ür$SU¹b?²‚Kž§¹p?íg·làO?ßÊñ(bxt?Ù›Èí2†?ä‹F­âÅ?ÒÖ°ñ@?ß~‚LÛP"?çKŒ�Û¸—?áã -Io?Ù”ŽÊ't�?ÞÉ—Z[„?í0dh÷7?¶6·@p?Ö¼Ú‚øÆ&?˜"T¬y;€?Ùjî‰o?¥iõõ2¾Ð?°.Ôt§h`?Á�ŸË¢{­?Ù;§n2>¬?é˜Þ4­ð;?ãÕ´SZë6?çŽþSèêt?ºçò¬ !?áeæ¹N*=?¼ý@`­(?ï±ù˜Mó ?ºÝÜÍP&?ÅÿõËdÐ?ä[gh÷¥ ?यsúê¶?ãc0q’A?ïÓ†ÔfN?èx ÿÃ?âë†|(ß?êì>—\úò?åc —Ûê?è§ñð/E?Ù—yRìÒB?î�éù„À?Ó˜™fM J?äÊ‚­›ò?æJakCa.?åæË눚?Í @×u²�?Óc?ñ’L?árZ³Ç?ÑÈñ: }œ?îïÐ�½³?×KWÉÿ6f?Ó3}8ÖØ4?¸#»îIÑ8?ËwÐÈ—^˜?ì,J¾÷ÄÔ?ï@m'où ?´“I@Œ¨?Ú‰ fìl?Ǹn¸C,?á‰a³Ù?â B¶H……?Ü®ÆÓ=l?Ø R?²v*ãÙ?r¡Pu?¯l_Cw@?îO�t dy?âK{MÒr?ê ¥ô9Æ0?Ñ�ÑÚølæ?åa•ùƒ€ ?« 2t°€à?·0_Cð?ص£4?é}«ä]6ª?°‚k¨ò¤8?Èé&±”?ÖX”Bw ?Ü™¥cN?êCÃ=¬#Î?æÀ§!èz©?É–¾—Fƒ€?SP‚ƒ?è¤OysÖ?à{¹ ¤?ÝO,*è v?ãUØXö†?äå>mŠÉ¥?à`êM¹1?Ë^îåD?îØ:¼ÕXw?Û~Nš¹°¾?ÞYÊTS,? —çÔ\?íŠõ‡§?(?·rH‚‰à ?ßçÛA�$Ü?ßÝ�µ¼ô?Ûím÷{z?Ù:>pªl?ÔÈ©p?ž¿ Ìß@?ØPA�͆ô?àÖDæÆø?•�€÷� ?ÝgÁÝe)‚?å9aÌÍ.N?ÊeG�»Ó4?Ò©.ê±ä?ïœ��Œ ?äø;‘pÃ?çï_/î�È?åMK—)ûê?­|Ä�ް?Þûøg(J>?ëﺖáõ·?äyÙtcÁd?áR\ aÄB?ä-ËzeÈ?Ï?+ì¯?æYRMI8?Ôóq®\ø?èGpŒyê?Ù£»°n?Æ!BQñ ´?ÌДáBUˆ?é"Ä"t¼?é‡oesŸ?�ïëϬâÀ?ØGAž ?ØÖy­’Ï€?ëôñL©ÍF?ã�z\�eB?ÝSYÉ@è?ëG¤\¯?îd™ÐÙ°?ï7¬]=ï0?£®.  �?à]ä/Gò?ì0,yz¤!?®ú wP8€?ä?, \Zõ?ÑC…ÞEÈ?ëIfìN’;?ßd:À?Ü\ÊZF>”?âRã‰ÞâÁ?è6¨Á ƒ?æÖ.Ù³`Ç?ÝÕ2çÈŽ?¯Vá.Kôà?ÒïiIímÒ?çºï拪?ÑÈšM{t?ï9ü3&ïx? Ž”S  ?ëì6ˬ{÷?é�ê1”¶¿?ÁwYòŽ|?éFÄøn¢Ñ?ÙC‹M±¯d?Ú/ûgãŽ?ΉªªÍÄ4?Õc;ÁDy†?Ûí/­æ?ìæ¢ LXþ?ÐÍ-…(¦?Ù¤x¦uØ ?ço»ÙÉÍ5?áê A¥†�?Üa'E=üF?Ô`°"©”¦?ÙBsH=~?ÇöÀ,Ø?Ы  `DÞ?ÂMFÊ uü?ãÀ,°EU?î­Æô-A?öÛ2la(?Ö= ™Wä ?êëÙa�?Ú?ßr?Þm-`�p?º¾G§‡÷?ÔÉuâ¦<?é0ïHì�L?Øè’n•&?Á y£(t?ß½` #0ª?ïI ‹®R?Úî´‰‚X?Ë—0…@?ì¤wú¡0 ?çhõß-«?ì�Rea�?ØîÆ7�²?ÛÆÆÛVf?àÍ×@¡ÿ?ëNÔ‰Êü?ÝùMA±b?â¼âŠ´C2?ÄVY-X¼?­ê£ÂRÐ?Ò.ŒV—ž?Éflñ3?èM`i‚Òõ?ÕîÑ}©¦?ºõµûp ?צõÌÞ$¦?»?|Z ?å$ÌÇ´Í?Ð>Rà÷ô?Àä)�|)ø?êjÀÇ¥&Š?âo±b9?Ñ_Ú7 ?ã'ùŒCÙ?Ï3ï K¯ô?è¿Ò¨‹tö?ÂÜáM ê$?Øû%µC0?ÅßmWªd?îXÿä'ãé?Æ»Üþ¬Ì?àP0O‰?ßf;_ ƒø?é�¢¤³>1?¨Hk®7Jà?ã†ÂC8)?éÂl]6?âî2F�öS?ìA‡üfZ?àÛŠ˜5ãÄ?ëË×?ꎆ ˆ{Õ?ëÈ×76&q?ˆë>Oë ?ê¸õBØè?êÕ‡7Í»Œ?äúï®!Lä?ãKeb¬Yd?ãSA?É?éLE ~I�?Ï…)â°?ØäºaâyT?ßG +Ÿ÷Ê?çM•(µ—Â?í£‡V²ê¢?ÓtîÇ3¤?îÐàžÎE¦?×Ý´Âý2~?Ζ�†ŒÛØ?ÈÁULèX?Ŧ×;Y4ø?æ¿{VÛŸ%?Òã?¶†¯D?ìáMüW>Ï?讼âhƒ?¹91~̺?Ö~s äœ*?ÙßÖÅ©ë?Î8F•ùûì?Õ§Ek(?çÝŽA~?ÛQ.�Å‘€? Z*L"Ð?â"ùÐ¥O?á�ô—Tó?æj�nKói?´j²:ˆ?íß�û ã?ênFX–?¦ºÆ.EË@?Ág—šýè?ß&5OmÌ?ª„x;qA@?ë'î�ö|[?Ì¿íuöt?ãáO¯Ú^?ã3…ÅPÐ?ëJÍOJbh?Ý€ˆÿ|?åáM4Óü?î9 O$jå?åžýËñg?ïêÅyGš‰?Ƕˆ®|€x?è6[{£nN?w“ çû„€?ä/ÉT{Zo?×dfг®>?ë³uÜD?ܨK»‰ä?ê¨ö¿/a?æëÙûâ?êšô÷¡«?è¤u²$ ?àØúF©B?ÂÆR¡Ü?çW1F›?û(4R’4?æïp ¿_?ß±:ˆqf?«kX¸ð¬Ð?îÓñ¶IK³?Ù¼¤Ô¨@?ÙëÓsiƒ�?ÉQ¹¶}T?ÈÈ'êNÃä?×€»ƒø?ØV‡ûÊýX?ß®3½@Y°?èWu�‡a?ê•õU: ?å/̽”_¦?ÆÙœzà¤?Ò»*ƒšl?ܦ³®hR*?Ç’r$/¯œ?Ø$½<ð/¶?·�[_øÓà?Ë{´ Øx?ãßã=ß?ß�zús²¶?Þî¼,95�?éç?ãž?Ól“Ih8?ìø¿xËÓ?È)scÕ� ?å^»Ú?(R?çhп·~Ó?’-@„à?ÒÇÑѰö?ÚÄj¯þ?ïÄ Œ{€`?ãCé_û?â®Ô¸ý°�?Êòá‹'…?‚ °)O¨€?âÒ µ^ü?âãK$û+Q?ëvØÎ°6?ä‰cáüT–?ß—…|O(N?ßÞÑ]¾?é?Gµ�Í?é¿D[±6?瑱í$Ú?Œ¦‡YCJ€?íÄû,žôä?æòƒ{ý¢¶?ì`9B­‹µ?µ·Ã{s p?ì^uBß­?ÞÊ›ƒc?Õ0·žáDp?ØI¡‹6à?ÕÿˆÚ·$?ë¶c¶¾wâ?꽈½µ$?…䈼6°?Ä]š®¹E¼?Òª#^6p?ä‘géFq?ì¦. ?Ò7kUm)¾?¥ÓøZf@?µžKO°?ÒÑöîøbB?é%ÒCM¬?­²ü¥õÀ?áS|z%?À`lu½ \?£¤ÂþcœÀ?Úª·ãLì?ÑpÊR?ÓgobÁ›p?æè¢†5ÖD?ÝÔÍ)Ï9b?ÕÍ…ovº?ãŽÜévÛ?îOØ�z?t˜�ó›?ékŽô S?Ør_ƒë¦$?âÚ mHóJ?ârFWDÞ?Å‹Q.?┯•Ö=?ÁœS…nãÔ?à^ú+ÕV/?èz †W?â VˆÁ\?ÕšÖ€]h?ضÓßjrü?Û÷¾ÐÒ*?ØÀ?µ¬?ƒUoü/_?äJ��v)?ãl‹=ßY-?îýÐÿ€A?á`kVÉhe?ëý“Pì?Ñ¿ôpÌf?ãÒt |©?ﲤá_R?â*#ZÿQ?ܤÃ* ^t?ª‰¼Tì#@?Ú´ùÖæ?ãY�‹ŒG?é‚�×^EI?á‰=€YlÒ?åíÖP&¬?í Ä¢¹4È?Þõˆaðµ?î=}fð??—uBD„à?Ö>ÍKl¦l?Â>ñý‡l,?æi’ ü+?è|GNâ´»?¶S? w0?æöÖÑ??Æ=ó»X?°­�A¢ø?çI)çi‰c?ÔÙÄY“lÀ?ê²²ÝmµÐ?éó]H3Ü(?àœ‰pÝþ?Ûå¯|:Ì2?Ä)aöºÊ@?è8¥om¿?äž‘ÏE‡r?èÉ…ÃOl[?¼˜# ÈXx?ìÀÖS Í×?Ð íà#eˆ?â:#û£Øx?ìÔ=³ðb)?ÖðÑÇØ>?éu»_çÅÅ?çÌ?ªü7?Ûc [§îÆ?×õ·hÆ?Ö,�aŽÜL?Òy—R ÆJ?Þ€Ï)E?ÆÊ̇Œ?èÇ d™,?㺊ƒä¶?Ûâ©–·ê¾?Þ@þðnô(?‘Ø81÷xÀ?à9׈;?Ö°™ù¿¾?Ð1Û w?»B2°¾x?äÛ+l[¡?ëL1Aó,?Ò$Ôp×?¯m¤3¨€?°B¯dÞôø?ßíñ0àF?Ó—–ýxM^?í\u¶œ�øôÿ?Ðê‰^”å´?œñûRE ?î}ߺ�þ?¬vžLk0?ïl1ÏO?í\âœh‘?Û ‚Ÿnz?ÜǗ˦àú?ÖkŠì?ï³¶AþB?ÝðTä?Ò 84K—^?¶,�]\‡°?áGëG>sï?á…ÓÎÞVi?“ ÚÒàà?Ûeàâ£Ñ¤?Òå–Fª?æ¸K/¦Ñ¢?ì)£ÚÛ×{?º|•Ç*X?Öá«¿­@¬?î/Õu žs?ÖR(áã®J?ì,·ù¡Å?éL•O˜¼D?äó‡Þ4@¬?àJnóA“?²µ²t'�?äMào&I‹?ãµrô·PW?Ä™U¤jÜÐ?às0™0¢?Äg‰´2�?ì.OÚÜq?ÞšžŒaÆJ?Æòb Zp?âJéê¸ß?ßš’¡Räî?ïôÎÀ_Ÿè?Ô‹“x¤ª?ÕµtJ1èT?â5à¤-†?äÇ�˜¿dÕ?æÊâo,?Óy7W¾¯¤?Ùë\‰“v?ë²ÛZ…I.?ïBµ‚×?VÈ´¢À?Ó ¬Ü‚ì?èU‹iuŒ?ÙèZöv?¾“ò¶‹Õ¸?ï–@èšÁ·?å4 |ƒ?Ã&{uµQ°?å7QÕÞ2y?ä6\ý1êÒ?À¹™+åw”?·3R|Q¦ ?Ú† ˆ,=Æ?¬–k•ÊÀ?ì† ëäT?å¯~–Q¢s?âÊ´îHz?ïÝéõœT—?î9ì¾±®¡?åÔ$“½œ?îàÙdÉô?ãeó&ù”?Ô?]‚8‰Ô?ïmÉ(Ïé†?Õ3c©¾_¦?é«ä :?¢²ôò~eð?Ø*ŠA^?Ó¯~P¦hö?ËË¢T\?«öºÔp?ÑÌ£ñº0?¼5'�|ÄÈ?èé,e[\?âê¾¾ßW?ï+Y” &4?×Üí¨’;²?¢�°ùŸ0?âöÕ¹O…?Ïen2d?Äqq^› ?ßú2£ß¾?ï,q˜Ic?ì]ÎAG¯J?Åé�™ƒ"`?è1‚»¹w?Ë{O‰Md?ïøÇÕÔ?èNÝ• Üþ?í"r�??ãë�E,Ð?ÏEgÀî?ꥱ«U?êÈO‘®?å1‹ÒýÁ?ï±bt�C>?äoDÉ  €?áb92·›Ù?ê¯9Jºõ?à§Ôÿ8Ä?ÁíYÐPœà?ì$�%äE…?â±vô:Ü?­[Dµ�‡�?Ôh1±;(?íAW•î�?âY-s?âzŠ M=;?×áë­v·´?æ3‡‚–¨j?ïeMÏÏ ?áhÅÁü?ål{îè0�?æ; ÁÚÎ?Ò"Xx~rÂ?îýî?¿’?îG¾�o?È¡¢SÌ?ïÂ)Z' =?ãeŪÒ× ?Çý½v ·?Õ9Ï$$“î?ëšÊ‰º%U?™'!¨?Ó‹aÚAê?ì¤%È:<æ?£„éŠFXà?Î_ï!‡»œ?ìó t¯g«?Þ!C®$Ïô?Ý”ËâvO²?¿ÔŸm¯ëˆ?ÚIá]ñ¸?ìvÝZ1-r?梺t`s? ¾}WKP?îWx À7?Ç,!õD=ø?é�º%Riº?Ò=LÜ¢?ÈB+õO‡ð?Ð5x1zøð?²ýúŒˆÇ?Óá´d?¨?ÁZxJ(¯ ?çïôÐ4z?ç#JëòÎV?è‹Ü±Ô°U?ã°@”®9?Ø&’þ·Ij?ÂC˜­Q=¼?ê ­w?êçŽÎ ¬ˆ?ÕÄõO ,?Ã�°jgø?ë_·(Y3 ?ïÛã©‘jV?¯k­¤á‹Ð?êR€8 /Œ?âè{§% ß?Ó« ÷ëŽp?ïéîÔi?ÒU?§,?áèµ å!?º,ú3N‚Ð?á^¤.” @?Þ £õDV?é»~çú?hû³›p?Þ˜Ì>?êÈ2h§\?ÂLè/&`?í³éõ"Àø?íZª-{ìÁ?ÐùRLÎv”?ËYBše¯ˆ?íÙ†Q±ÛË?°¼T‡TÜ@?ì vßA?ÌJl|³Jd?æHXkÂWv?íõãù¶«À?êVÏ š?ê@ òïÉ?¼K—×ä`?Âà<·¡Xt?í£á‘Ø?è–߆‹g�?êG¹ï@Z�?è8uæ]?ì·ÑàX ›?Åýy½†T?βß:Û³L?Üè™( 4€?ÒÅ(õ9!Z?çÝÛ„ã?éÕq¢Ü?åç35ሸ?Ú„ò¹f?¬_ð+lŰ?å!„Œ¤a?à“+<¿ÓÚ?èêZÔB�è?âlqtŸ»µ?êct&ÿP¢?à NKS¤?‘øDƒ7—`?éÃåÕM›ú?·,ë”vìP?âñò�I?ÜEï¡?é„¶u¨?å[ZÓ©±?ÔOš4xFÜ?ä:-/´lÆ?åK®ñ$ª?æ^¹˜Å’“?Û¢k’S ?äL@­8×Õ?ëac;B5Æ?ÑŸRó…=¸?Êš×>hÈ?ß ªëº(?ë¯'¡°?ç$=bÞ ?ÊÿLL ï�?êíàÐÈGT?Ý‹ ûK@p?ëë¤ìl?ÒÝ^.cZv?èÓ›Ï� ñ?í^“Ò…#T?ázËÁ  ?ìÊ”ÚÔ“#?ëMå³þtD?͋Эèt?ã%$Æq?ÚQë"?¡h ê ?æˆæDˤ„?Íîø¼Öª ?ÛK­óÛSn?í8¶þÏ?ÓbJq;d?¦#ôm}?Ã75‚+[¬?ݾ^Ҥä?ºGš%™³°?ïÐSÝŸ&?K=Ã+)X?ê°ÂŠÂR?à³74Gô?Ù4 ÅŒº@?æàlÉ9 ?á.hÙ¢G?â+x­—…&?áx;� ç?ÙŸeGú@?Ôóò?è0„¾FN?äz‡'!Î?ÞmgpM?èñû9gV?ç•ð#�?¸FÙØ ?㈤‘ûàç?ènÈe¥³?¥•�Þs½À?Ûw(‚¢?ï®Gý3j?×…Šw¬‚ ?í¤y;A‡–?Ô@¸QáŠà?ç’T¿›J1?è±¹ÞQ·Ô?Ì­�Míñl?â´ÛÑ<Îù?샚¦ÔJC?çô‰!¨§k?å¢V±7�?Üö‰/º?ØLÒwW?¢ÅÕµtÐ?ï]/Ä$�?ØsO*Ý ?ë26Àãgø?ÜõÏþÃü¬?Òž |L0?àg`TãRô?ïcÞ*©˜œ?çD·¶B ?ìò™*eì¾?žBýzÖ ?ì“MÚVv9?Úµð?¶úØ$b|�?çP‰šØ-/?Ý¿±½²?ÆÂ ¥cª$?·Ãð/�™ˆ?Ô‚¤¼njô?á ž-¤z?ì¦Jh†&?ɯöºj?èZ¾ñ%¬^?ç¨�0ž(?Òʵ[Ì+?ë[XŸÌ?â4xœf%ˆ?êï‘RV?Ì©IÃ3w?æ¯VͽV?Å�FØ?î&³S>íñ?å±�i´O¯?ízô¿6�?ã±<7Ò À?çÕu¶0ÿ?ÔPË—\Åê?â “ˆ�|q?Ô¾6ÛñŒ?Õ�“Wú?¹¡Á\&`?æXº#?ºÏTƒ…ÄØ?æ5¯v¯?׌�EmRN?íÈÞ�ÜŸñ?àwSKgLŸ?®£Ä[g°?ÞÒ: î¶?ÐA‹¿KÉp?êXAÉÿ`3?ï‘Ђ x?êK ”ø|?ÎÌo¢$€H?ï¢I: ê`?á¥.Çv×¥?íYàI9îñ?棰I¾Ù4?Û¶(¾‚˜€?ÌZhœÏàD?ÑUe1?êCóòãø?ãð·Ì½ƒ?ØRtwR?ìɰ´?åBð!â­¸?êùKSD–¯?ãaðŽq€ý?Ç-èˆ5à€?ê1bróÖ!?ákÅËFÕ›?«æà ˜Ø�?áù¼¿Š‰¬?ßN�òÓèº?ê‘êëÙ(�?Á°ó™+ŽÌ?´8›Ïn0?ìf‹ Ï ²?웥´B?ÂPk�?ã¹3 RAà?á µ¢ eP?ãêCÇ?àÊæ·¯e•?ãáLð`‡ü?ã³¹‰r£?Ü'2.ûuð?ÙïÀûâ—È?¶Mì´?ï._5÷]Ÿ?ã¡&˜?à ”á¾w?æ¤Ñ§“?ÚkºmS´?౑Ø© ?Áœ„©+à?猺*&“?æÍsâ•®Y?ÈA/ƒþ1”?ÊWdu§ž?æ,EŸé£?¶}HîœÈx?Ðã[�SEæ?Ñ e1^f?áÕ™q¼ô�?Ó L} 4r?éµÌV>z?Ü®�¼œ?¶N¹†ïC ?Ó^ÃÀÅÌ?Ý�¤�ÔU0?Õ³WÄÿ,?Ðú”çÛ�º?À¯x€ßNH?ìø6¾«c½?×�pXYá`?æÿ ¢øÆ?ã‘´K\yÁ?Ú’ç¡HL8?¸íõ� �è?ÒÔµ�\^?î3�‘b!á?焵^<Ïr?èüLˆHŽv?Ñ|቙PF?傲mñ¹?ìÕUb^ï?Û¥ à_?®mgØm0?ÕÏÁ©¢O?åòúê€8?Ì}ƒØ”æà?ÏÚkå7P?½R²¥¤Ð?ØÁ|»ˆ€?Ðüð6[i¾?éc/² Î?í7s¶êBÑ?¤:±‘V0?ÜÖ¦ñ^>^?äâg­žÂß?ªia4ÛÏð?æIÌ\]u¸?Òé<Ñ@_¼?¦§ÄS< ?Ùk3h�;?ÚW©ìê?áÕð´kX?ëò±ír?æŽá˜RàO?̳¦‚ô9¸?Û> ¥†?ãûÉlÎ*?ÒÀ8²mQú?âÝ9P˜~i?ØÏʹÊEÜ?íPºRC¼Q?î‹ $ÂÕÉ?¯Àšnª§P?Òh£a0Z?áö÷ýéN?JFš?èXÒè…•_?µ¯ç9Àùp?ê¹ue0¸¯?ÔoþÛkM®?Ü�à(?¾¶ë�É�?ïcÄJ¢5Ì?ÅA BÈÐ?Õõßî#ºò?Ç—)aAë´?îÉs Ÿè?áyâÂËŸ#?î·Ó}¿Áq?â2‘?ÙH`Cj‡¦?Þaÿ~ÅÅ?î³7×›-?¼ðîs‚?ˤ)Ê�?â?þií†?æ©%0d÷?æy† õ�>?®À”3s·€?½n nX?âé'šÐ}Š?¿‚ŸãðP?Ý[ÕêÙ,?ÕX,ÖO š?§Õž_&Ý?ÕT«à‰Gö?æG±A�Ÿq?Æ#UÙ¸?à^N¯w2ç?íX®[͘?Êk*º«Vh?áBÙEÔÚ?�3[ž�š@?ë=I6n”@?åŒÍü;f5?ªIºö,a ?í½p§í¼d?Òf^ð?ãM$p*[ƒ?ܘ¦Vdiz?ï‰fÀŽ(“?Ö�ˆ.°Ü?À¤b+6õ$?ÙË�@Áv?ãzã„ÞëE?Ù•*þX”?í‘mB“‚Ö?ξ€êdT?Áª%ßué”?áæ¬;¾„?ê]+‰R"J?éΉ-Áò?å›`×>@?ÕðÒÓì€`?«äÜIÅ÷à?å t7Ë$Õ?íG’˜„â?èXÓò¢¢?{'�}1Ú?·P!qC“ø?Ê_¿ @?å¾”î¦?Øo½eŸ+?¸Õ.'S² ?Ñ\ßüß~?ì²JÚ¥†?ßöƒzÓ¬Ü?ç–,mGQ?°PÙü8°?ìv®°² º?ÏçÄgú,?ï,y}}/?ï&ÕUrPj?ǵüKËGD?Æ 0Z„?æ^i>$rk?í&GO:>?ÂõVÎOb?å"ˆÐòª˜?Þש'wb?Çõ5÷T?ã†fH¨el?àÏXq”Ú?ï3„ž™ãn?çdÈÀQ «?×PŒ+D °?Ý0&�áût?¹”Ì'Æ+0?ï;x�U•?’(;ËÓ»`?í£zâ6÷?à¼}@:¬_?Óã”î˜?ßy˜P†—|?ï 7“Ÿ¹î?ä€DÛÅ A?íÄeÓ:?Ö}qïݺ?àVÂÑ—³Ð?效â€D?æ�²†ëD?ÜÄÓåøéî?À!é�}d?Ýö ‡ŸœÚ?ܱþÐ?ã!~a)ß?ØÇ²Û˜Á–?»ž’ùï (?èᨾÈܰ?Ñ5*ˆŽN?äË€e›!?ì–[}9®3?éLÕAô¢?·Â‡ίˆ?� »Õw?ï]G¡³Ë²?ÙuøØŸ.È?°L¿Æ¨(?¸ž\õ!€?ÍA ™H?Â3ÈSRp?Ñ`Pƒº�?ÔŠÙ«ÕÂ@?ìÌèrûˆ?á¢Ðqcñ ?Ñ[$†@Ö~?À~÷×´?çžàh™Ò]?Åv hÁà?éÓ5zŸ(&?ìRa§WÆ´?ØßF]kô?¸â'[üØ?î§KÇãt5?êû &�-%?ïÏìòbJ\?åû&FÿÌ?ãB­ �]?Ýàl°hxš?¯6:V -p?Î’ºøFƒd?ÏÃìú9*`?æÕ«×S?ÌG(sñ;8?Ì2ò? ü?Õ–É�Æà?¼åe« H?Ý>[@î®?Õi¿dIÄ?ÝÞ ‹vêŒ?Þ`"8tÌ,?æzƒé@?êb@¸ª0?Ì,xcÊÈ?âoæ«eš?îÐða/?Ó¶®2„´?ᜒ@ú(æ?ê�‰d˜Ñ�?ÐJ==&¢ ?åÚ­?ãaQY ¡7¨t?×Á)‘(T?Í(e{­ä?ÖC„'�´?ÙÁÍ]ŽÂ?äïä†M?…à˜Äþ÷€?Üí3W¼?åi9{dÉ ?àP�Z”ÿ?ºrÎEKµè?Û˜dž¸?ã @—�¯?ê‡üŸ4ó?éŠÝÜÁÏ?æ:Ú*\Cï?ÎŒl4{–à?Ý ýŽ‚cð?Â]âbû¤?­ö€�Y- ?ÕàÜÒðZ?îž+ÊÝB?ž­áÐfà?ìFòQK ?Ëaˆ­£…8?æjläÞ"¥?È;aÆ£Ü?ÉhE•$È?èב®uØ?ãÊêìó•?íðe³v¸1?â LV-ŠA?Øõs³kVÈ?¨�Va˜€?ê^úèt2?¾“]�ƒ`?ÕÊMÙ¼ž?äõn7¥- ?ãc¯Žý@°?ïÿÙ""Mƒ?ç ë~ ?°ùä_ÄÓP?æN_ Ñ"?ÛÜÆ^NhH?¢¼¦ 5ÿð?½-ÚKÊŒX?Òi4íÓ|?ͲP$͘?½3‰tÎ�?Ðü£™lº?Ŭ›‚`ÿ?ÕŸA¢œÏ?×Ðm¹�B?íÑ:·óŒã?ßyv¹ïœ?êcóf~&×?Ì%î;?±éðb³0?áµkä��Ú?ïçu�o¯?éóæ£ç´_?Гcì5P?íiŸîŽ$?ã äxÔýV?ßÂâ’õòn?µ ¥Ö?ЫŠéÚh?é/Yt…ƒ¿?°ù}<ù ?ØJŒÊEKô?€®t^�Í@?×£9 v�º?ëåd° ¼?²†°ƒOý?Þ%«r¯-j?å”åÿç;?ë¯~¦ª’ü?È#«­i,?é­Ç_³¯?�ùî ý?ãE¿µ ÌW?Æè…iÚ×?ïC½©Ã5?ä³í* |U?Üs¦KBˆz?ï€�˜×�?çTñ ?NúžQƒÔ?ãÛXx©?íRÛ¨8‘™?ç#Rv| ?Åmà+ñkt?Øø¬æÊ?åŽWýo ?Î }ù+XÄ?èLÚ½ Ù?ÏK�9d?Δ…)K`? )I|U¹`?äu´§FØ?¤ørI÷ `?Ö¦ùl5tp?èÁ‰–—?k(€Mø¼?Ù¹>cNº?ج lgÄh?Ý,s™" ?¾e^ Ï˜?è ×r%%Ç?ä‰Xè«#?ã ƒ²ŠK;?Àéä™›`ì?³±yÄÖãÐ?ÃÔ¦´¹Ä?é0�IEÏ6?áX}AÜìO?íÎò2H2„?ßÔK=% ?¿ð̱ë¬@?ß¶½Ó(Ü?æ³ô>jï?åtaVbº?á#=¸…¡¾?í� Ý "?å@†Ç!²?éPv уÕ?ä/+5=ë®?ç®S™ý(µ?zUJ9À’€?ëùYm¿?ìÎ 'ýº²?Ì]³áÍ2È?çéĠv1?ä>X­}¶Ñ?çûW5®’x?lTðo?¹G\¢?õ8?×ºÉÆú?ߨpf^Œ?Î7m”Ö Ü?Î'q¿Pl?æ6 ”èsm?äÑÝ×?ÒE7A`Z.?š¸örH@?Òõ8�4ÇÈ?àX‹Ü;[ô?Úæk�ÅÆ?é5#ÌLÛ¢?ÑIq%€?Üøeq,ï¾?×7gH]gà?Ù‘ð)î?Ûzž¶�½8?á燱(n?¨àGZP?ì6íJç?ëkk[3X±?åŒýYê£?Ø2Uå0ð?ÙOVÕOåœ?ÊÀŒ6³�Ø?ᦅf=¶+?ë4R�äW?éésL«í?ߥJ‡èþN?ç|{e—?Ø\,õ�b¶?Ùù]sº?ÐÇ?í—üŽ?Ù_¬ìmþ?˼¾lË`?íЖÏn?ËÌV´?è‰&8|}ã?îÏ’œmXâ?ë`Ö¨“?êü8™gñÌ?î¿|u?ïÆUÎÏÑ6?ÕÓ�:ãŽ?êœqFŸ¤?ãrzg„ZU?ÓË• ¤p?â~VÊyZ#?äYÁÚ�?Ñï\ŒIÎ?킟vjÐR?Ù•‰[1 ?Üõ_Ø!ö?æód¹¦N?À^®Âµ%€?ÑK=ö²?àEÆ`E¶?âY�ø€;?ÒÕí¬O ?äDcÓð=?ãÃØzÊŽ ?ÅßúO”?é¦ò`ùø??ïÎ^æ´¼È?ÔþöÁX ?Ö¼SŒ@�¨?ßÄýSIz?Ô’Kõ%V?ì…QìRo…?íóÁL‹·?èüðÌ/J?Ì�eˆ?íã›8ø~0?äìã|ÝB?Å™Dãxˆ”?éë~b�ÕI?ä¦â)fƒê?ßm½§Ó?ìÀ!³[SÊ?É8]ÌRõˆ?ê¥gì3¥?á"+Yo?ÔcO†?æX†Å, Ð?ßzЇ¸áî?ײ'0G�t?âž­–Ýßï?Ð nZEH?ÐÍCœÖ]?ïðÉž84 ?ç •ÍGa¿?ìd‡Ì(š”?åÌ¿pà)?Òiá+æ ?Ûƒ¤3(0@?ì.+Ä´…S?ÒåÑû—*?îÌê–!#¤?ïW=¸Ö©=?Ç™Ÿ¾ô4h?Ýt÷ÞbÄ?É�²º:…|?è Í@-"Î?ç“­ga"u?ß‹¾6ÚYY–j?Þp†÷jr?ëǃ†+Ûj?æ×u”~âÿ?팭=éìh?îQ˜¶¾jT?ãbßÿ•?áž”Gå»J?àÄÔÌŠy?Ý>ƒ3?b?ÞatÅ÷ô?ºêVà°?ÑVZ†áóF?×ïÅáG‡Â?áQå:­~?åð/�ä?æW*z¥¨?èÞîµN¥Â?°V?æT û׉Ú?ã,©.L)?æùÍ“d³T?æä@p‘÷?âòR»ëÈ*?®é ¦ÂÀ0?í}»L®2!?—b|8o`?Ða\Ÿ¡Í*?ëk`IÛÕU?å! 댷?¹U[ì[©@?é8gû¤‹??çmïì™|«?ܦ¦×«Øâ?È3Í\:€?ìW'H?²É?ã7¸ëâu?Ýw­Èúfz?â3¯*')Ž?Ñ(­´²Z@?ßK�šŠ ?íµ°EPe?¾£bN6$x?ض!x?â’Q‹÷?éÖYÆõKé?ïRÛðÒ’?äØN\õ½s?躢þóõ?áõ˜óÒQ?á¥:±¬»?èä×ßÛ?ä(E³�„c?Ò/AM�š^?á( xW6?³ûéÚ›�¨?éuAkÝ?æ÷Æœ"²?îÞ‹F!/ ?ÆK·1½M¼?éNæ¥$¯8?îY&«›?ä>œ?ÊŸ¾?æR¿ï¼#ô?ïË´j×!?éçç�[5r?Þ9On ?àð»�éõ?Ám•òò“,?ÞëÌk‚¥ð?ÒÎVã¸Ì?׋²„ è?ËAñÓª¾°?áÓÏV.?âî�$4z?ÓAÔ6G6�?ç0àz½¨?çÌ~š|ñ?ÊË¿[HÂð?á~O­„?ÇÒ¦9�¬?êëƒ�h*?Ô~\�¢Jº?çí™cmüV?æé¶H~ý?¥”c¹ ?ÐW{õ6�R?à6�Ês?íÀí’w×Í?ë‡qe¿�?áe‰ŸÝ¿?ڨЩl?Ó¿° GØ?Ó¢ikJ1À?¾9ݦ€?ÊIb TjØ?ÖËc—æÛ�?é¼®pd†?ïåYÍÙ·?äìõþæe?ÀZSTku˜?ÂsÐÚ:ˆ?ÑÅþE|.?éÛº•[•Œ?·tfuQIÀ?èY6Ý›vV?èÂ4èKµš?ÚØQ©p R?Í ™ze4?á4„Ú÷Ø´?ëP€UE¥’?ÕB§¢±€?éºæp�?æÍk³N?ä°&å²÷Y?ç`=c9?â¡)Çæ?Ûö:”f5¸?ëÑqëÎ;í?ËÚû ƒ­ä?ÕIl ðÕŽ?ÀÞóŽ/È?ßÒTË'¯?æà�PÚ�}?ÙZ¼_[à?êPŸ¼v“«?âºê"îŒâ?è3?„Þ©?ïÏ,ùOÿ�?íÑÖµl ­?ËÀžë¹« ?â=QÕ¸I\?Îr˜JKê(?½G Rò?ÚÕÒè´?×{@ÎÙ¨â?Ñ=}ÐdÓ°?ÑÁëÊì°?èo9�¾X?è'M>Ð?åx±×RÈÁ?¹� J8’à?æf¬^õ(Ä?®÷-­›!`?éàb¤tçp?–‘Ù­k¸?Ú‹Ö2�?ÊÃÍ+Â8ä?ì´$¯xZ?Å­åGÉw¼?² Ïæñh?ç%¼ßÛ…þ?áœ"âöî¥?ë½6°­P?áuSrÛ*µ?ávfq:?âQi8ñË ?îr3¨5¸?è„ðL<(B?Þ¶7mèàò?Õ˜.õp?îü1‰Úûk?ÅA“á®5À?Û?y1T?Ú@è*SÇt?à6ýß2éò?�QïY ?âÊ&2«‰,?ž�l�Õ‹ ?èž`=wC‡?°Ø£ "ºP?Ôhz7 —?dOæ°:?�ü‡QƒÇ€?âöëÆõ&?êm2«Š‡Ð?âŒL¨™±6?Ê}³Z#È?{äž•(C?ÅÀjJÐe¸?Ñ ô«&Û†?ïëI‹Áv?ª÷¥>‡3P?Ó�;öõ¸Ô?Òð7r X?èáƒ2¥DÀ?êX„­Z!?Ýò9ÂÜŸN?íU“ÐÃ??îW&×ÜŒ?áÞðÖÑà¶?Ø%Põ"H?èAí¾(Î?Ý ž¢ë?ÌŠ˜öyì?ÚˆãfÈÌN?åÚ8v7`ÿ?ºÎ½ÆØ?‚á¿Ã@?ÊÄPlØëä?É—^UtD?‹¨£üÇÃÀ?ï¯~v|?ç`¹%Ún?Öågãà?ï(¼�@?é•wDòÆé?{4Þ”Y¿?ÄÉ¿ ù\?äôÝ·É$?âo¦å ?é|1»Ùð?ã@ú|.Æý?Ê¡<÷9$?ÈFu©©¢?êvþ‘��z?ߺ<¸ò²?ëT+«Šï?è…\ó¬øõ?ä¦Öu¿4?ïf=TÇ?ÉåA= ®= €K?æÃl§/óI?Õ n‘ºø?ëÕ/9‚?âßµ«ªÑP?DIQ·„h?Öp¶K’;ò?ß6ÝOÞˆ?ì—ÊÏA/œ?æJ�Óå­\?åÚˆ¼›g¼?¤�|jVI ?Å $aà�0?âÕiT”hp?åŸ�6}'?ã�L:p Â?àD°kZÃ?ç­¼tyŠ?ÆUŒe<ü?ë¼#=ÛEa?¾k3Ieö¨?à㉄Ý?å¶�(�—?Û글‡à?ì¨AÿW¨?Ý”0íD9‚?�p²‚ì@?ÚÑR_iáÂ?Ù¨¸{Üc¨?ïÀÄ„äÕ?¡9ÐæÂ+`?ìˉªÆ·`?íœ)&Ý??í‡%Œl?،ܒg”?Ô'>î*?ìHJfÿç7?âæ_®X &?äji„õóN?¾ÞmÖ,À?Å$â|t?ÆA`£�Ï?í1×Ù`HÛ?퉈Ÿ{Ñ‹?ãŒÉÜ“"K?àÅŠ®þgn?€5“+hÀ?³&Ãøx?ä9×'D4?ãÙ6R 7s?å}ÁŠ{?߀Þ_¹¯œ?Ñ�èXÍp?Íå4ŒG-è?â]»ÝyÃc?îtù3áûw?ÕPýa"Ðp?âîTh9;^?æ\.Ô¿ª?ç»ÄÂ'?Æ×†9ùͬ?åÙó¥Â™?Í¡óUV8?ä!Ĭ~÷?“ùÏ0( ?ã€IßÛ0©?Òy™Í¦?·D�­ü?åógC�'?ä,ÿ½œÉï?à€Jïÿr”?ç·[UÚ ›?ë³ö©ˆÙb?îvP¦/™~?¾MEp;?í…”jZxv?µ~¨oÊð?Ó“X#†8?§Š !4°?·wg81Ë?wJ¹òX?สR¨æ?ÂÁ¢ãô?ÔØä¨â ?©!‰°[6°?é€1—cU6?Ä;Ææ‹T?¬œEzÙð?âžUûŽz?ì¶éwm)?Å ùÀ5¶°?æt¿s�k?èó„JÛ;?ÙQŒîÒ~†?é âÝæ?åêñ0­Ý?ïx?ieÔe?¿QÆ5ÜXà?ÔDeˆ­Ô?ãgÙú,`?ç$Dž7?Ð+!B wà?à €¨âÙ?Õ?Êðφ?¹�Á7Éfx?¬0BnSÐ?ê­vÌëÕ»?Þ>Ù‹þ$œ?çü²­é?Ý‚¿]_—à?ëÄ�W2?á ˜Á°�?ä¿\îÛ?Û ju·÷d?˔Ӆ¬Ä?ÖgÅø ¿š?ë%UqëHh?Ó ­‹³ø?ä2iKÒÉ?àí*¦Óéÿ?ÓŽSs?ÛP“UÑWä?æy$–‹ý ?é·; ç‘·?é¼u: Wô?к§47R?ד'Iró ?à2ÖwäI?²ct��¸0?Ù!i¤þ:?Â($’‹•P?àâ ¬bä`?Éö!=ÓÌ?ìµh É�?ÀÏ�')Oà?ÞKW‰Ü?Ìwtǘ?ìWÉÖJä8?å1·¬¼•?énïFÔ‘Œ?í‹ç§#bº?ìyï«¢â?Á±Ìª�Š ?Éæ…ê�$?å3“‰G¸?çWtg(ܾ?Ñç3‹ÄyÜ?ã™&;5ûÔ?Ñm}Ndr?ÖS[°u®?ìiq� !?åH=—3?ãb·UÉ�œ?æô¹V?Ã)ýщ�\?à£ÿ­œÝí?ÕIᑉÄþ?ädÙŠaÓÇ?åD4§—b•?Õ¤¤®S®?±ÞÿÄ{¹8?Ë7T[*@?ßÕ¯�¡Ãð?ØÔAö·'$?æ1,è.)?Üœ”¬’)Ò?è¥qw¸cÕ?É69,Üb¨?¦Ã6,ø±?áÕvÑë”?íH³¬OP?ÌrÈF{˜ô?ÉùæÃ�`ˆ?äïñÅ€Í?µ5>3(•(?í}°“¾?ïb•T QB?¯t]ö ãð?Ç$ ¤†0¸?è ó‡©?Ó�9Ü%T?П¡6;þ?ÕVÃUk2ò?íå6‰æH?íØE l�>?×îÅ{#÷`?êµMßWjj?Æ™sÜt ?ëèm¿ë Ÿ?áÁÑqè…?è@#÷kÊ?íÒ�¶Väý?Ô{Õá?Ú†YÓ…ª?áR ™u$?áò‘膀2?Ûo‡Q„Ãò?ìÁÏ�n±—?åÇ>"´?–16”° `?Ë£ÙË£?Õ§y \ž?àô]@õÌm?åå§½þø7?ìÃÀÆ} ?ïAKÜØí?P4›4›Ö?Í�ž¥‰Â¸?»è> €?ás�z¾HV?È­ZÅ…˜?ºTÁšhX?æ-LJ^ª×?ÉÆOÛ‹¾¤?Ü¿~–­íž?β¿»ÏÚ ?ÅŠ7?˜·¨?ÃòÒ™tÜ?é"ºu«�?ç3nƒnt?ë´¢œtmT?ÑMH?ׇCæK|?è#Þ0�9?ïûq” ²?ê'¾“óá?Êðr�؉L?Ó¾­ç¬“¦?àüYâãc?êÆëÝ©�½?ÙÞnÛhÿà?ãé�Í z?ÖuÀÆ=Æ?¿^kÅ Ð?Íĵ/»`?¾Ã(#ñ‡x?zö�U`€?©3ÅÎpcà?Á ær¯„?ÕisjÞà?à4È�ϲì?í¬O©ð%¥?Óvî°ƒèþ?ê…:ףƪ?帇—m+x?æìYV½Žú?Ùžd×ÈÞ?è3†PÃR?éy|›ƒç?ÃKžÔ?â%´î+ ¿?ãºåíú ?Õ–£'Çt$?âJ‰÷€x?§±‚�fcð?áF�kù6ü?ç—ÿV÷kñ?äïâË®°…?¥4 ±�@?ëÌ>kQÀ)?àî—Ž›®?ÖÅZà&.?¨r"¯õì0?í°†"ˆuÌ?Û«èÂÍkº?ÎáS'¨Å„?ºôæI¶ÿ ?Ù,™ä°ü�?í „ÖI?Ö‡3fOð?ã!Æ•qž+?ããhý"šò?Í©‚ûw¨ ?ÑmZ´e&?áv‹Î툈?ß—“ÐûÔ?®G·ßÚ…@?àSs}pBˆ?²³ËZr?éNG®úÔç?î0Àư£Æ?ê­ÛÖgÆ’?á¢/q¡ø?ÆØ&þQ|?î‚´I‰¼?Ÿ€q÷a@?ãÆkø?è½µÛmgd?«$í¬Œà?¡Ó ÆU0?äÉB‘ú2?áC6+“'É?®Úú¯ßV°?Ðá1+&w¦?ßkEy•¥~?èÛHpE?Û†¿‹—?ÊÖu²Ú´ ?Ò» Nˆ?ØjÔ�\,ð?ëâ T?Ðܼҡeì?u{“rY¾?Ð{“nøŸÄ?ì{µÓζF?ÓÒĬÙÚ?Ë#Òä6Å(?Ø(„÷/?Î¥&0[Î?½i‡^n˜?Α®ûOÐ?ëO¹Àôþt?ãÞ�f v~?Ú6—ïÏÏ¢?ë(^þt'?ç0|£ùÖ?Ì¢°á{ü¤?ín£už— ?Ó Ö˜¡{‚?â× c8+0?èÆ<œè?ÏÅ}fÏø?µúÅy?á÷?¸o£?Ôç8œJ2D?ÚQ¿3žö?íw6_à´?™Áy¡ €?êþl<¼?¼Èù·=tÐ?Ó)Mêµ¼˜?çŠüNlÍ?ƬԊÀD?àøæ\½Ö?퀴¶¡?Þ)¹ÍtÐ?àÐ $–s€?Ý”ºÐ³ål?­@üüë®0?È«íûH @?×;—óW¬Ž?êùe˜á%?ìßœe2ð˜?Þ»›x_Â?îÖ~°A?äÏßÜ3SŒ?ÕéZH¥HD?à¦î";ï?Ý![ ¦˜?݇Öß»¦?ï1«mg~¢?´óî8rœØ?ë¹ŸÖ ¶{?ßPß®Þ v?àÍɹ)J(?àËxô»�$?Þø”³>?è�jÿ?Ð\úP‘Ķ?É'«ƒa§@?áI(êh¯É?Ç› >½�´?ï\LJCö¦?àíÙŠ¥?ëÃf»Jt«?ÊHlf5´?cŒwYÀ€?â,Z‰ÃË¿?Ý�Áwþ¦?í¬”Éã²?ÞмÏî™$?âyºŠt±Æ?ê)’€šsN?ì.(c{…?ÓMÁž;D?Ôò¥mgl?¯ÈN_óE�?¾Ê�V¦*À?ꋾQùØÊ?ÊGœG„U”?èL(êQ!À?é¯}»c�:?æ=¸5Ñ?ô?ïÜÂÞ,ȵ?è €Ä5‰?ãU†.  ?ÓWšyÈÚÆ?Ùø ÁG˜~?­/Hr¿“à?ÄoÇÈѯ?ÝùhY^\?«d¯f]×À?ï-wk±ÎM?ëóŸli‰?­¢B®“‹€?îÕ¦ík>?ï°¤š#‡h?ÐLÇveH*?àã v2?âO±±¯¥ë?å�Ë‘%3Q?Ю6vÏáT?З9Èé[î?߇ˆbq;Œ?ìq�uIú?îð¸ŒÜM»?Ó·å ù®?ÙÂÆl4?åá‰æ5î�?ëþhŠØ|?ªýá�Í—`?è`WŠ ™?àiž¤–a?˧Ûðí|?åÑ̶�ï?Ï{æ$².�?ÌE´º?Œ?Ú¡FâöÜ?Ô‡rN3î?ï|W­srz?æeÐÑdÍÆ?åãµd3?ÚŠÀcO†?瀻Äë«Ü?ïˆa›?à6c3æ�?ãI£?%Í?ÞE&pXGÀ?çè$1-“Å?×°>¯°R?ërñ‰ ?׾ˋ’ú?Íd­áî¤?è\uWf•?ÞiE 1Å^?Á8¿e×5D?¤ PŽ8?Ü Yγú?ÀÉŠÌýt?·ÛýÉ…è?Á¹–ž¼?ïe7‹,?Ç/rØbT?Ü8MÎA’?ê»äŒ‹�¡?àabÓÌx>?âÙî&ZŒ?ëv_¶„?ˆ› hÆ?àlW£™î?Ùþ·œä?´í»}j]8?³ÄÂöC†¸?Ä�‰æüÿ¼?éèƒôÇf?ïüÎ;g|I?âêdÅF?Ô“{ë´?ÖÁõÔý –?»IM“P)˜?ßÂG¬¶?ì4:Å?ÎÊþ)‚ô?á�Ï鯥?Ù‹ÿvf¤?îf%!?ÃØG‚‚êÐ?ä¼Ý�0gÉ?Ù²¡$ú�–?ãû®×�¤™?Ù%ùsÄ?èð1êØ„?ä?FÙ´..?«¥®é? ?¡Ø�¥„à ?ÖA2ËMò?ÚZÈåäg`?…'îW–À?âã3ž|¯?ác¬C¤:?ëjhùaòX?Ð�'¼e*?î©EÝU"?í¤ü/(Y ?î§…!§˜ò?äã;µ„?ä2@8šÐ?±¾ºo“«?åq$Î9÷?éÔ'Nœ.?ïªßOÝI`?ÉW„Â(€?¯°à…VÐ?×IN– ò?â»æ+å?å ,pµö{?ãƒmé´ñ?ÚÚ¾„@òæ?Ñ>ÌUûØ?áÔ @sŒ²?àækJ2Lº?â#aê¹U°?é1¯»7A?àû _ý{?Ãö<ù›Œ?Ù.æ’<{,?ÏyáÇìuÄ?±×R؈½(?ÝÔÍwhšP?á‰8®Jê�?Æ ìÇq8?ãFÂzÆ\Ý?ì0^êò?ºáârR ?ïÝTÞ®–F?ìõäÌ©´?ÆuÜ:œøø?Ötâ¿\!F?ÎF¾y.€?ääg¹O?³íùÛ€0?äªP\‰<³?Û(Ñ,iý?ÀDüôå ?倯^=�?ÐéK¸ ?ìˆÈ†ò{?éFk�Üåç?¸’Ð6Q˜?érú†³®=?ÞbiT|Ú?ØLø‘Ѱ?êÙ«ãÝÈ?ëßÐsb€?謞se¯\?ŸG«³=W ?îÒEŸè5?ÞL€Äê\f?ÏgSâNd?µ–ÕÖݱˆ?×ÂK¨ÚÀ?Ã@0Dz±Ô?áãÍÍ]ÒË?ص¯ü©n?éÔB)v¢?Æ; B)Fô?àî¿.�¥–?ç¨î¼SgJ?èá™Öó¨1?Ûrú ŸÉ ?Õ* pfÛà?ä? 0[?ÕœáGn?èê0ä±rs?ÚŒJ…ÉhŒ?逽Š[Ã?ßÅÇù“þÊ?ÕyÖGeô?ë/šç¤?ïÉ• %S?ë¥ \8¼?çç·Øª·Š?ÔòuF?ÈöaØ[Í4?à¥T×C.?讬jŒá?àcÀ¦—o?´´Î°S ?àŽ;eÎ?¿?J;t@?kë¤?ëÑâÖ àK?é¢Í\ß·7?Ùâøt�¢?鞣j™Ýä?î�t-Q`I?Ðjû—kX?á`ñÀù…À?äÞ|Àû?ÓÐ4YÕš?ÕR<¯añÌ?íRö5Ã’D?Ù úÂ\/ð?ãU‰p:ÿ ?ìc«ƒ¡~b?ž¨õu�?šMùIž`?îw"�uÅ?×sô¸1¬,?ÕB&»óÚÀ?î{_Úái?Ð2&j p?êè¯ç¦v?ÄG†ý{�€?´FÞÎC‡`?µÕÐ,êë°?ç"šÄ:òz?æÿ»ù^i?à~Wƒ—�>?äÇXcɦ^?ÓM Gh]Æ?Âè¼²˜(?–ši˜U@?É;=¦m6(?ïO¶!qp?ä&_€ç¯?åÃoŠ$?âÜo¸[ÚÖ?Ø7Á�P¦?ì¹3°]s?í£V Ññ?Ÿv�‰üù ?â\½SUG?íUÍšÙïL?À8LÑfd?Þ�±œÎ«t?åÔÛΈ­_?åØÄ”¥¶þ?Ê7ÁæñL?¼uN¿‰h?î€�{Ì2í?ëÔIÜ„tf?Û»?_ü?ïS®Íòe?ߢ–ïÚ?¨9ñP Hð?ÚqõÚžB¸?Úg@¡ä”?çÇ|Uf<]?×�E©‰kv?±N†�À?ãø›ð37Ä?È3–�8¸?‚üÖ*'ŠÀ?ìïà\�?ʾ6W?<Ä?ÖË®Ú͆?ã�,Ö�œ‚?ïàaä§e?ÑÄ.²þ^?î© �’â?ÙAî>á4(?âN%À…˜?Ô.-žy>?ЈJp²?íίek?ín¤±A|?Ó›5”YÆF?åâÚtàá?Ÿ=Tüc€?ã1«×�cÆ?Ö±Ö¼J?ã <ØÁ¸?ã86v°‘?ÝnÍ"Œž’?ä²®›¸ùI?°9×È´qÈ?¶Ü¦aTo ?âOa¾Ãl^?ÒëÅnB?gM:¸àý?ÊÙÜþ~dä?ï·cþ0‡ç?¾ÃNR¹§x?Ö¾¾ �´†?è]O®d$5?Éš—ìE „?Íœm‚êpø?å£ï |ü’?æwS#í�?�Uy‚’Ü€?èœiä´…W?柑bÛÝÃ?îÙž-Ë_t?àD?°  Ú?àîœ8à?áLl¹Hí?ËF”“²h?Á¦¶þŸì?ä¢Lœ˜êZ?Ñ…¥é«eê?¬Ê­Ð?î%�Њž?Ù·®ÐWT?ÞÂd[‡CD?äR�Ÿ£Uå?ÂvŠ#�?çUwÎI‚Î?¡K³×²º°?ÖfNX3wä?ëßpüÃ�G?¢÷CÛ ?Ý’ò-Ŷx?£×p^Í.P?ÒÙ#{Ñô?èÔ¬è£7??ëÐå¸Ä£+?æT>%ïš?Å}^}¥€?¤?Óm ?ÕìnÐD?ßÌÚÀðýü?ÊÚ#‰Ô?èžjò&E??«7²pÔÿÀ?ë&%zA×ò?Õµgã?å�,�ÔŸì?å3Uö‘D�?žEb—LŠ?Æd€RCÈX?ï�â� ?îa¾EÛˆ«?Õ—R™Š?ß­’hŠÔ?í3³~y?Õšsi�?Í 1Ê"Œü?àì_úô¡?ÔRà‚¥Ê?å$u:G{r?Ð1VˆÝ ˆ?ècÝ£KÒ?ìÀÞçÁN?ÞÇ™ëéšô?ì)˜W–Î?ãþXóà£Y?á"Gê…�ï?àâ�czÇE?»HÆ4�x?É”-žŽl?è*ɼÝs?Ì�–]*eL?Ð�¿%Ív?ëêzÃó>?ÞüÁ÷DËÈ?ÄÅaÅ[,?Ö‹d.à6¸?ÙáåÐþ|v?áHx-Ùó?ÅyMò/:0?ìMÁF&�?æ4¥Ä#C?àâ+¡“XÁ?à¸^·ÎtÊ?ì’œ@bj>?»ß¸�àÖp?ß°&!öÌþ?Èo�tž²D?¥‰…,ˆê0?âè™mcÉ?ïÁ¦§î?á7î¼ï…ª?ßBŒß`(@?êûwƒ£Vé?Äàc!5ð@?ÕGL*è?Ùg|-€J?îåÓÊ‘nG?æ–‡£ÔÍë?ã¦Ø�,?Þo¼ww_˜?ÖßN¤ „?ß›ÖW[&ú?ãízJ�±ä?èò#íÌÓ„?ÀµW-ø´?ÀF))°'¼?ã=R’Aû?íÓüs( ?Ï_ @?á,ÜJÍh?Ú-ÚcO�Ô?Ò Ñ.oÐ?Ñý§/ 5(?î3_‰ E?Ò‚åðçNš?ëªÜô‰2Ç?Ø=}Sîº?ÇT#åÓ¹´?à›G´ÊE?á1–þðÒ’?Öù2:+Y¤?ï"™ 9ñ ?éÞ&*±?×dŸ¬¯È?ãöö=.t7?á³ü¬x¨?Ð(Ç,`Ä$?·=vaÁ0?Þkjû?àÀÓ5¿ ?ïÑHî;p[?½9Õ§eðè?ÙÅjšî�Ì?éUK™V“l?Ûît�üfÞ?×€�‰œ?ëÁ”‰âà¦?ãPkaŸ?çi�I?ç”ìõI6ˆ?æO£¿•`?ãÒ‘ £\§?æëÕŠÞª?‰5¡pð°?å–‘XJá?Øg²™n«¤?Çë¼*ÇX?«Ó8Êè€?Ù4%Œšô?ïËôÛlüÁ?ìlÛ‚¥ˆ|?Ê{ñɽ"è?è‰Í…?Ä/9F ?㸪™ÂG?探Á¶É?ç€Rö«¡?Ïa®u=? ?Õôgûlœ?Õ C;ÍŠð?àðf"Þ§ä?À%uÜŽ¼d?Т¥ |Ü?¯$²i™úð?ÆvUü¾d?ޣʳÞ>?á$Œ^ßË…?È[3d‘eÄ?“Õû•¿À?í-‰’ Ã?à@ý^#F~?ãÎM—|Ÿž?ÁYÅw,1 ?êo“(,2H?Љ×»h?ÝXúúm”?èZÿ U?Â’Rö½ü?×v(ÜFp?âü`×§Ö?ïm›ÍývŠ?Ý~Ù°þ�L?Åô ГÔ`?àLÙ\“gÜ?Øàé^¹[:?—6X|˜£À?æ\VÉp7?æS»ÄYØÙ?Ùhœ?(/Ö?îAë�Ê£ö?æ~ŸÜâÚ?ëÙ²@ëì?íAPÜVS?ÏŸÊB–äè?æ{Ìô¦y?ºþ-ÜëÁ ?ë •H²Õ?áAãQBM×?Ý—¡îño˜?ágbšb„I?è Ê4F?ѬÁÝÛ>R?Úÿ¯‹4Ò2?Þ'¦=”¬?ìMëx§˜?ë¼gÄ£5 ?‚T8'@?ç|ÃR #>?âA€­!² ?ãé Ügd®?êÛ÷‹Etô?½^cËð?Õ5௉š?äô¦÷º?êvǃ¾›?é¿ç¢Cº?ÃZ¸¤'”?ã ‚W*¥{?éw+Ö%?©'¤bÏb0?êvg³iý^?ëy™:p?滵•"?еÿ–V[\?èÙgê�vµ?â�çÑŠDH?ï¤Êž’i?åûÐ-‘?ío�x÷¬?Ö5�Ù‡´?í)|™c&?ï­8bõ¹?Ò³Y`?±Š‹ßQ§ ?âûE’D?ã�l×LS?ÖA–¿úâ?Ùšá—2?êšÙ‘äß?¥³¶˜g ?ï“�äAg?éžÞ™>?çMãÇ4?ìz�ê–?ãÑIÂÍ}?ÙnMpáÚÜ?ºnoÜðÀ?Ãt  +¼?ä"P 3?â�¤,„“?팳$WÃ?ÑsPmX?ã²MüáJ?äƒ$ÆzË?¨�â7Àf?æ¯:ó[?É¢wÛfÄè?×fó×Üì?åŽN*?ý?㸣Î&C?~ÿÎ;cc€?åÇÆ¾ ã¾?Ûj2ƒóG?Ô¼ü*F?Û´#** ?ÐeOgXüö?çŒHá°q:?±³ø~9x?Üž Czè?à/ùaéj?±"ëb¹±ð?ç#rg¤3‡?Éž‹i¸ ?Õ“&þ?—Ä?ïØ•uG×?Õ8é|ßöö?éW²>Š®•?éæÝ+†¯Œ?èÖLǃþ?á ÁÁKë~?Ñ~(œÁ|?Û(e{6uÌ?ß+!ƒkÐæ?ëÉ#ʳG)?å·]fI¹�?è9CÀ½ð9?ë†)…•ó?ê~OKfè?ÎWJ½$Òè?îwj‡H9B?Û¶ˆOëÅ´?á‹_\Mï?àqŠõb?´ÈÊéïêx?Ñü턉à?ßý^8¯T?�’0ËŠ ?çlq4ð×´?™�!BR| ?á>΃2 ?åñçtI‘?í~1ÝR?ÅÓ¤vý?ë§rH W+?Π͹Jkt?Û�yŸžfL?àvâ}H¾?è’£(†×?ãê¶&|®?Õn£ ×·Ü?ëæµÖ({?ØôÃ}G?íÿºV˜{?³)³3i°?Ðižë¢¸?ÁŸv Æd?Óì¼e¼ë"?­Ï³±Nª ?æïF-ÖèJ?Ò!•Ç’E®?ìT(`¶)Ô?ƼIñpå¼?Í@2ü¬8?Ä|+ÑÂo?ä>Ë £?îîÝ�îot?ëG->i%u?î‚é¨Õ÷?οt?h?ã[ûs¶?Õ¼�?òR?Ù„nº,íB?én­ß—Î?é ¤|e‚•?àt”ÒÑE?â|©¬N?Р³NX@?áy©¼µa?ȈÊ?ÙÎÎDð¯¾?ßð=h’?Õ4)®¶®þ?…¿–’ä·€?݇á‰Ü?Ì ¨û`?êˆ~–èû·?Ü8ø�M:?ævQב@?áéK×�a¯?îqlØ¢à?ÆÌÙßè?윑Ø`Ž?ìuU²™ •?í²ÔR’[à?¼{Ï‘îå¨?îƒþ>"“²?Ä…ë— ö@?›Íòp?ÑJz™²à?ÌÚ¾ØvD?àBì�j?à¹}&ƒÞg?â�Q¦?öÈ?áòP%,¼-?îdü¾2U‚?é:KÍ×Ý?Ú1 Ìž?ãµ…]xÌ?êÄ�©ÈŒ8?äão~_­?ÐgÇ:£”N?Ôílò†?ä¹m?׿¼Æü?µb¶Æ¸¨?פŒßþ0„?å8îQúµù?å¹ÐH–?ìà“¬Ê¤?ìŸ";eùÿ?ìQ¸$Y”ú?ê<+)¢ ¦?Ô ˜6¾ .?íB0¥)3?Þ½Åå6?æºã×ÝF?íBê~åƒ?˾•¿ ?äŽ':,+$?êl›ý+û£?É1/˜X?•wH»"?ãz¼¯y‹º?çL7¹·32?Úâ‘W ˆì?Õ*e<;?îÀÐwöN ?Ü:¯"S?ȈKÛˆ?Ë,Ç!‘\?Û¿k †4?ÔÊAtn?ÛÒ'¶•Ê8?Ô.)ç.Œ?Õ‘È1¡nˆ?٠Ѐ¨ÿB?ßLD$2,ò?ã;z•0$?ÝcÚFÿnN?ˆ ]jºñ€?™íâZÀ?ØÕÎõ} ø?¦ÕÜr>`?0)ü|À?íSæYpª%?ïdåquÑ?Ñ)Ö‘Li²?ì1ãÆe×â?ã1®±A’3?åJl¶�<|?¬¿áÞçð?î(§ÚÓ°þ?Á48­m”?â|dZ hl?Óöö#Ñ.?Ö acRP@?éÅ��ã"?‰Äêš~ ?™æFCOä`?é“:D]¥?ážĵ?ÄXå~±X?æ6?þU?Á¡`•BLÈ?§QœÇuP?×° Uk¢?¢� Ök[ð?• Ð"Å ?î²+ïÁ8?Âï·@á¤?«½ëˆáÏp?áÒ¿gV*?¶½‚ÍÙÀ?ÞÃå|â_È?Ї•Ô„T@?ÔãÇÔóHÒ?ÛÞiq„ü?åP³77þæ?ÛW�Ìú6?äÕ4bæå?ÐÃ*°ž*ö?è9W8?é­·;�?ºÞacîäp?à XBA"R?â›(Ê”?µMFî¼é ?ºn¤ A‘@?çâ£Y‰?æ/:÷µ]$?ã0U£�–î?á¥ÝáËÈS?î¿©Cu?îÊ=®²Kz?åXÂ¥Y?á[E.Kâ?Ü•#Fªþ?é)³á Oâ?¿g—£À?ÐÚèâ÷J~?âÍ€]PB'?èq/³Ó�?ËŰ #¸?ëÊšæ¾²A?x‚ó„ý?Æ×>°Jä?Ö€¤—t7Ì?á•H:üí·?ÛÀä" uè?ÔBÑ�bÎÔ?xáKp?ÔYßÖï²æ?ã—¤ÙÓn“?¾¸/?0p?îÐ €s Ý? 4¯á+@?äŠ=¾ÿ—¶?äHã³®¹è?º5ÓlM«È?ª¸B+&¡?j¸>ösó?Ó¨çÐr“Ü?æ>Gá6�?íу%â?ÎÓ©ÚИø?ÕÅHJ£ ?ÖT•�Î9Ž?è^^eYv´?Û0!ë‘T¨?á¨Åmž]Ÿ?¶½T¯m0?ïÚÒ�\Uä?Ý*�­~4?êv¾ÿCï"?Øæ¿‰x"?îÌà£u?Øë�ï\ÿh?ÓŒŒ>Ü?ÏðK^ü ?dJkttÎ?â ™aâvë?ëÊ]xs"ø?ÊUs0Ј,?¿Ð5úê°?ÏWSSˆ`?ØÛ9šþ?ç´A2`n?Ä+0ÒH?â«°¸æ�?×ÇLÊJm”?ÑÆ4½Ìô?í™’Ñ.>g?éS$Ü!??ìdºj»u,?ÑBå.GºÆ?ÞË–­÷T?âce˜(~V?Æ´p{ß ¨?­®í©çvð?ë�Ò=: ?묘HÊÛ×?é 'LÖ†?è ÞÐ6}?ÖD9O®À?Ð#ãhúò"?ß§+LD¸?Öðn˜º`?ÒsDƒÜx?×)-IÔeB?è¾1 ×vÀ?æ®ËÿcB?ÔU\⇖\?Ô€ìYÝåh¶p,?vŒ‚x?äÀKqkuÖ?Ó+ Ob°?ìn:—Ùr ?±œÙ‚ äÀ?Í@#-òƒÀ?ä—íÅJèr?ÁϜ¬?Ö¯é\Nåª?Öèþe®?Ü�V °2?âQö�ؽ?ç~ìÊ"q?æ@¨2^á ?ä"|Al¡½?íPtf‘ûµ?ê5CÑä?à·|€ ?ÍÐó/² ?çW Ii,?äÊ—@€b?å µ™Äê˜?ëîDŠßÜ™?åÒÚ‹“?Üú?³Ãû:?ëÞW·Á5¤?Ó„›[G¼>?ä¤ÈŸò?æ�� À?Ýuuf¸DŽ?íË¢)#f»?Ø›h—£ò?ßIQ;— ?â,È Lu?îø*ÉŠA?å_‹‘cg?éì¡Ø™—?°b…©Trx?éQgüwQ©?é® X¨°~?ÀÿbO@Üè?Ä-‡ï¶à?âfT¶3K?ºÔ@(�Ê ?ÅÕµ®û8?à£ï†G?½p@O‹—p?á_ìÒF?ç2üMâ�?½i@Ëd ?é @’ô7?½+—"ÊŸ°?ê]–HlZ?º¥ì§Œ:8?×c:§•Äž?ãá¦åBÊ?¢©d“·&°?МYæbûž?{îÿÈ€?êærpÓám?×ÿÊÜÃéR?äù=qá?Úé›ê�¤?ê¼–U ¾Ç?Ü6òrSþü?è²=¾8z?ÄQ…´˜?¹iç»§70?æ}^úCÀÌ?ݱœ=Ír?êq©ëåD�?ä!ÝYð?Óâð§ß N?âƒáoSÌY?µ mØÁÃÈ?ÀÅ1ó` ?Ò„}Já74?µíÿq3D8?êw¡Ô" z?®DôŒÍT0?µ6“`û¸?äá ét$O?²9õIÆ‹Ø?âÿTZk#6?›'Gž´€?çá0±•Ò?·ƒp�ÊÜÀ?Íþ£rà`?Ò‚×ä¤q¶?îí,G½ ?âºÖ| ?Ж¬;êÎ?ר› ®ž?àÅa Ew„?³hŽè?¿üaur8?ÐxñîÌ",?ë—,hïÑ»?¼/×2§j�?Û/Mý –F?åI%€ô)ï?ì(óey‘?ÂÄadÛ`?ÙWîÚ©È?ÑSÌ"»æ?Ô €pÿÂL?ïDñàL¨³?Õ„Ý•Oó?Ï殺/?Ñ ·{û‡?£`Çh � ?èp‹1Þ?æî˘ö­?êÜj¡ G?ïÑz �þž?Ú†Ðv";H?ÀÔîéˆo¨?Þ–�‚½mr?ç÷r…]‡?É LûÎel?ëÓ¦R AÊ?Ê6ËL¸?ìY,žc„ó?ÐeQd±h¶?Éo­UwOŒ?ß2MqåxÌ?à\-\¸É ?â· ‘ ¬Ë?ìŒp€JÄ?zî®}i€?æ’«ˆÙ”?ÍM¼9›&\?Ù[¸÷à$v?Écš\�g?Ј¢[V?†»¼RÇ@?í@ÀgŠè?Ñž �‘®?ã"�»5ó?é"®ج}?Ū7xÞø?Èg71|«?™fe…|/@?é5ñ—Ó?É)Ƕ8?éÔ¶ÚMõö?ÐW'@F,°?ï\”Z$ ?í¹LT´Ù¹?Ð0™/µ¸?ã�×ÐÔ ?‡‰ÀNɘÀ?ëÌà Ïå?ïÌ•ª0ø?È äˆÜ�?ÞŽ4òªx”?¸~ÒþÈÔh?ã q¤l?ÙIˆÜœº?ÕXú1 Z?ëíS$ÀO?êŠçÕñ@ƒ?ìU-º3ž{?Ä ®fD?éi!6ØfJ?á"â¥x¹?ÙÉÏ�|-®?ÞÍBÚr?Ù4úC¹àÄ?à¢Ê4a«?²ƒZ¤.›`?Ý?€¨¼P†?êâ¨6ÞÁE?Èð0Æyìè?à–-¾?f?ä~ üÚgì?å±m±æ¢È?æB¡1ßÊ?ãÇ—Ž5ý]?èñœ§h%?Ù�ºQ/?ÌÈTì?éò:P…s?§Ù*{sÐ ?옳žå?Øu�ûr)V?Î]!3Ã?ÕY‹Ò÷Þ?Î÷³D‹Å0?Ý´.TiçB?é¡}¢¿úå?íahˆ‘ÑN?Ù''^²?í4±«cO?ï¤ ±wËÚ?’�cŠ?å=IÊšÅ?߃hÈ7ßÔ?ëÝ1�?ÖˆEðé¸?ÛíØ'm[Ò?Û¬ŠÕÛ?ïœ�ƒ¯L?–d Òv ?ìòåŒu±?²)~=ÁøÀ?Ò®zð#Ĭ?ÉxxÝ|?çäê¤ÿœ?ë<'ß3vÝ?íÐ#lä• ?ç¹rŽÒ’˜?Ôìñ«Á´?Ø x6¬?ê &.j½?ÃË�ù�®Œ?ÎúëÆN_T?㸙ýV+ð?³`©tu_?àõ‘Ø@S?ë}ô·Wö??ãU†ÊÝbQ?ì­ÑR…¸Ÿ?¿ªª:@Ð?ÞìhwÐH?å#Ž]g¦?Ã_±š–ÙÔ?Ü=¡"‰~?ÁY\Ó~¨?á¤É×ßÃ?í8O#ÉÕ¾?ÙCñwª?çÕ]�´”,?ÚRSƒYÔ?·¶C³t›°?ë£N°O?ÞC ;^?ç¬DZ‡d ?Å¥à8>z|?¾JŽí“cH?ÎÎ"Eža?®döP9ƒp?žz”Í?Ú·-ð™`?Ðh{…fxô?ÑM€da…Ò?àȮޒ1?êèËøë)´?Ú¤ªõšä?ÄÂDXFÄ?ȯ ²Q ?Ø€cìýÐò?ÑÑø^$)@?îw¤,Tüû?îj’OY+5?ÙuŸxãÅV?îDS�'8W?Ç‚©Ng8?ÎRqðqñ¤?íè)ƒK%Ç?Ôêý/ø÷²?a8ØKªx?ßj<³åÜ?럻~î¥ð?ÔÑ즆L?ïß0æšnX?Òï½.>Êv?ÇØ¥t4?æÑ-â["?ßi'ŠYE4?ݦT¡Å÷Ö?ß‚gÆ©¢¨?Ö…‘ˆ"h?îRBèp–´?ÐfãDâ˜?ïæ¸~‰h?t€H7~€?Ê éï‹?уµw¯^&?¿:“°€]?åõÛ_»ÍÔ?Ø�ÐÖþæ?â%ÃËn;?ä{qËv=®?É]êç�@?Àüm6Ô| ?Û¹Öß+n?í^iŠëå…?îçœ4ZÉg?î¹”¹?Q?Ñs_äKj?ÊSU\l¤?јQ%M2?ÑTecj�?Z|¼¾ð?Ä"M2�Vˆ?Ó =‹@œ4?îèå?—Ñd?ëÄ�h£†ê?èÆAy'þp?͆ípâ$?åWe=k;r?åMüv†¹?ãÀ»QëY?íÒ—¸àºs?è¡ÚÑ@C?àdĶ5:j?ì $j¶Tl?ã‹?Œ`ø?³Ò¢Ñ(?ïIÇ_3ç?äß߯:àØ?ëPÍ¡¡L}?Íå ‘’ü?몟Ÿ›ªi?Û ­«�t?ê[ß2Èü?Ûj¼Èð&?í;‚i!?ð?àîDU–éu?âvzYöÁ?�ôÓJ…?Ëõ杖L?éõÛ–• C?ãÚ™ù×'Á?ï ¾ið§’?ìÖ³Ò2�Q?ëqóŒô{?ìâ[+PH`?á‹ø6Å?å…’þtâ?ê2)7wy³?æ¯y*w„†?Ü· øÃWN?» 6jØÖ?Ç¢ÕùØ?å*лߙ?Ï:®ì²"À?ÌOsˆ”?ç¦ýUé/x?àA>foo?Ôtv‡8°Š?âN¹Ê°0?Þb¹>3ö?ê ?Á»ÅK?â/½.?ÍÞQ²½´?ý,p 8?Î0$"¤&?ë�ªÒÐæÖ?Ó$rc{U˜?Ú°}R\‚¢?çg¶7+Ž?ÉÚ(e6¬?ìÊã¡4C.?ÀŒùÕÄåÌ?î˜ÉK z?¼‰‰Äµ<¸?æß‚ð&¸?à“ïWœq§?–Èé–Î�À?îIñù1H‡?ïÑÇg?¶�M6f?áÀL7­»k?¤î,¿]³�?×Б={äd?ïLÆ]sD?¶FCŒÈ?â@‡€9±ç?Ðß­ þ„Ô?íœ(ðrÏ?í¤‡‹`Y?–]áÍ~à?Éž»[ì1 ?ê±*¸n~)?â\v! y?É ÆÆ`¯0?Ñd"|#©Þ?èý³Ž�>þ?â5ŽüEu?îÌ ‹�¶Œ?ÈPÑg‚ÆL?ÒÂtOaä?ëfóG-?ÉÛ•bw…?ì rçÎm?ꀺ `b?ÐPârøõÀ?çäÌí>Ä?ºÈݮѸ?Ù§µTˆ^Ê?Ï>Þ ³øà?Ó:‘êªíÔ?Ôž$c|?Í„†þ#`?ïY&r�Xl?ä~ �®xP?Ô³;x£?Ê ‹¨;?â,Aªy¹o?ÛéUïX?Î玗�Ì”?Í ÜñDØ?Ç$Úwîè?Ò2¡ |?ÜÃ\aE¬?ÞÞ}IÆ?ÑÞ“ ÜeB?§)»LÄ?à„ðoS ß?ו #�s²?Ô­†õ†Æ?ÁS—ˆ³,?Ùÿÿzy!º?Ò-Ä"»¦?àRÍ.Fµ?ä� èÉ?ÑÛÑË+Êè?á¯äÄuH=?éqUÖ?嚀Aê ]?¥©~|³ ?í$k€~›…?Ýào@¢T?å¥:B© ä?’ÁUSD ?ê[©Ó?³ªZ%?hð?îo@lô?¿í÷ zØ?êmöô*-?À“f-(îì?ÕDÄŽh¢:?áÅËøûÍR?Þñh1ªl6?âzúC8°?ã¥aáªfn?äb…ÒAH;?æ�]I´ñ¯?ÕûE!ÜÂz?îòÍXí?×; p—Œ?ÃæËð‡r�?í¶¼qùJ³?Ý(Ý’}«V?z´É݆€?ën?õæú?éfƒ@w\T?ìæŽ¹©?ïz‚n[?áPŠY¯¢?É×{²?é�° Kð0?î�}ÿ'Š‹?èš=0kés?ì»C«9UÌ?Ý�d´Í¼?ç¯oÿ{£Á?ç Zv¬[/?ë×ÎÏŽê?êôuÿÏ­?ÙÎGü*‚Ð?ÞŠü°¢>Ê?š”s¸m¸`?ì?(]dS?ÞÍvɵL†?íµV;õ³­?ê²?·�³Z?ȇ Š­˜?ìªc©‰?à‡Ÿ§!%±?åÔ©B¼ˆ?ëþ*3Eo?Ø›¨·Ž4?Ëã‚béžx?àyš. Èh?ä‰ñá´?íñEsÀ]?Ò:mêŽÓø?ß,Ïþ¤|?¸…8(h[ ?åµ�™S—â?Í´Ë…h,?ï«æ$zÈ?ÞOqˆ °„?ÛQ/b˜V?ä�@~2`?ÓO6 [à?´>-mø?Öï¾Õ-pÔ?´=Ÿëè?ÜÚD Ò?î©Ý³/û1?ä ¸=&Dø?èÅšOw?íL©¢‰?ÛG >2ãF?Ía­X·r„?äM¢§•óð?ØÖôF:>?ç݆ÉàØ0?æÇÜ#� B?åÊ€mq9?ÆTq&SØ?ì,ëÔÅ�?Á]~Yö? ØÃþd!�?êzÓ8*p?á!V³½½ ?ÖÜ�«Å^?ëRñ!\Œ\?çCö†¦Y?ÑT+l–Ú?×£�ÊAg˜?¡ ÕèI!?ÌKjªÕù?å‘Ën•’Ï?å/7ó‚L?½˜GO8?áÓú”^!4?å䘿MÚ©?ž< êŸÀ?ÝYI» å`?ÊF«s1ßà?ØŸ»#‚ëH?Òp±Yê,?’»ûXlÀ?íØƒà±6?•Pm® ?ܯAH´¿†?ãÜø¯(ÿ´?áRÔúc¢¾?âNCÚsCÖ?Õ/Q"Ñ|?ß sP„“N?½¬à$Ý©Ø?êH7éÑNî?â(d"—0�?î™9rG—?ÎØ25›’$?ÆF«hÙŠ4?ä3±O44?éDçßÙGó?Ô˜ÊÎõhV? w‘ü?„Sbl?@?ÙSDP¶‰Ø?çûèJþ¶?Òy¡ûRî€?ëZÈ{¬ ?Ô"?òâ•l?çªL*. ´?׳ú»ûg ?Îî¸ØÑ˜?ÄÂ�‰.}°?çç��jœ"?Ûœü8`T,?ê¦ñ4Y?à•ójTö?ß!Jy¸|@?ÙQû^½ˆà?íkÌšª?Éú~ò�Hð?äVÊ?ñcv?×Z½÷bïô?àDƒ‡!'?ÄåÝP?ÖܯëÛf?Ñ,’Î-IÐ?Ї^5U*�?ÛU­‡bp?äŠíTæÑ&?éî?AÕû?îßÊü¹Ô3?›ÑrEå?ç™s ‚ǽ?Ü(*Úþ›x?ïÃ{Ö›ÉB?äO~�ð¡?¨Îp&0?Ï di;—¬?¢ÁcÛŒ?ßvP |jv?Ñg¿b‰ô?ÑŠÊ 3Þ®?î õD¢ïÙ?݃‚¯ŽÃÄ?ß+Y‚ΰH?‡Ÿç"†hÀ?í¼¬;þ$?É{ JÁKp?ïéÒn�Ð?é ;étž?äS7ž^?ã š›óÔ½?Ô®óyoH?èaùÉ>²�?é¸ßÏÎð—?Ȳ�d„?épE+ÊnF?é0ÿ† c?Ö( ÙjÞ?ÅÞEÀ?¾+•À ¸?É>XÀ¸?ï+=…›&?Ü9QûÎßp?íb$ßËd?ä²Zø\€?Ö\‚øÖ!¢?©¾¹¤¨Þ�?íiÁÚ ¥?Ú’<„æÚ?–o†Iå`?ã9öä8µ?ãC·ä§‘:?×p¹¤EV?îì‡3�?å�ð‹àS?î£J^~Œ?Åìòîô$?Îå€ À?±éâ’ÊÈ?é9SÚ€Ò?ذ I*-F?ÚɈ–]?ßžÑÌ�Š:?è}•/xj?ìÐd Eø?Ôß& ^@?ì@çæðý¦?ÆŠÿºÄ?Ôõ�&Åœ?çú³Ä€k@?Ÿ2Ö¹H8?ÁÑ@ÍTGä?µ§î0 ð?íFgÜ™å?èÓº›um¥?åÕ�;Û+?Þ託–?à6´ĉI?îiå7B ?á¼�Êó?®Nwähóà?ä…üä‘YQ? ËœX¶jÀ?Ø¿E�©æÆ?åñˆŒ®ò?ÜeåèÝÒ$?ÕZÀÓ¡Ì?Â܆/Žgè?çà¯>˜×?Ð2½Rä‡N?ÓzÍí·æ?èë-C2ŠÌ?ç_ùôç’±?ãyßwE›?× d•‡¾¦?á‡Ë?áÏITÁ?Ò0ó|†^Ô?ÛHÜ}�?Ø©�÷«n?çÕmÕn?³m§�²„(?ÖóC=´Fü?¨‹Ž}NÚ ?ÂðëZ ?åG|)¡µ©?áoó¦Ë!?¤^û@F€?ècÁ ì?¾ÝíÏ ?êpÃ' G'?¼?ƒJì�?�D®$ ?Ð%Ö�õ, ?íÊὺuÓ?äÌw>cT?žÑ¡×½n ?í#H $Â?èÍ?õÅ.?Ô Ks]ãÔ?Á@Àžc8?Õ‰ÄÞ…ÿp?ï=Ìèe¾T?ÐÍ�Wãòv?â&9v€£?ÍHï›â³T?é kFxV[?ÉíDH•·¨?Ïx‘—Eh?×°]Õ�¦?ÐÍÆ=V„ê?í[�%Ö´ß?Þ’¸6¿ÁÞ?ãÌ? lÔC?ÆqŠaªD?î[¾ à,-?Ò>>Wû±P?‘ÌŠ %ï ?Ûþ,v4ºº?éÜUš�üg?¤†ùJ�‘?ܽvò…Äø?äí1|(¤?¸Ã‡’ìÇ(?×B!(J?é™ùü!��?ß’OR9@„?äl™ÎM?èà�hªK£?äxc³µ?ì†H¬øHã?äì•‚êé^?╌@Xºe?£Xר €?»›@’YbP?ë"Äf–þ?Éé4¼,ä ?Új*ý@0?ï÷18Gq?åÓAîMè?ÝÚMï—ËŽ?×òvO Ø?Ð/8;0Fä?Â%Y\ø\?Ý'B7O#´?êVî‘øü?Óê¸èˆ§Ä?ËmÏͦë”?è(^ Ñ?ìcZF4š?Òý.Ç&ÇÈ?ìh©}i§?ö]â$?ëãÚ¥D’4?²DØad?ìtùD ŸE?çGcŽª¤?ík¿WQ½?ÉæÇà0\?°Ch"¸Ð?ÎÚ ®r?Ââè%¤°?â_÷ûŸ¸?â³÷t- ?ÚP�€*ÒH?ÕsÝúb0Â?èÓd[eØ??Õ”ÚèØ:æ?Ü­ì„;-f?áó Nm)?åÃMíjÿ„>ܨfv?â_EpÛé?Þ«\aÉPN?¦ÆÂ¬«p?âU'ãØZn?Û‹sEÒ?ìR#܆TŽ?ã/Úpá ?Ýÿ™ÊGqü?ë³ TÎLÞ?çš,˜å:D?á™5^2Ù?ëŒçhÔVl?Õ–×"®ž?�ã‚•�U?ìízKìú¯?ì1y‰¹¯9?Ô¾Ð&j?ç̪€¼cò?Çõ0/!Ü?à5-ª >‹?ÚU~NE ?ãË�/?ïW ‹Q ]?äªævl;#?¹\˜š«êh?¿¿¡.Y‚H?»œT]Üs?ãpþ�bÈâ?ïbרŒL?¤ü𽑰?æ›×r‡D?ÌØÕÞÍ9œ?àG×ÖYÌ?Ù®)¸mŽ^?£í=S*Ä?æ_“ìv+ô?â¾qPó‘µ?în,8rÌ9?è§ÀkýŒ%?ï"|Ý*j?àUÍ—ÒÃý?êã“4±?Ô™«Ÿ§ã.?å�w5¤ïð?×úr‚Íî?ßeoÛ€DX?Ý · À?Ý:¤ë›f?¦=û$ü3€?ãeïñõ‡V?Ý›Šªl?Ê—BäZ�?Ü—<`ŸŒx?Ù4h›•N6?Ê´uó3­P?ßðRæ2Ò?ÞÕeOñ;À?ÖÔ5˜ekz?å¦hë˜ýÑ?º¼{rO?Ú¢ö«7=”?ç#Óé€�A?àÉY¾U2?ìtXBOmŸ?äÏBY^¥ù?Âyúò,�?°8¸AU+p?Áȇ �yL?îó’"»|þ?Õt>?‘ã²?ëw¼@†à?Ñ(3à¬F?‚ Çuß?ÌÌ^r>¾(?èØ„g$,?Ç1; ]$?ÛTì¢~Ñì?ì}Ç!8€Ê?í_F65?ä*ô±+b­?ä“.‘“&?ÙwóRä„Ð?à ÿ(`=?äŽýýxZ?Úc7¥ý¹¢?à¨!ú둱?ÉëéÚ›y”?Õ�:eFð?ß.uýT˜?ÕfgŠ&?áN°5_î?É#g€f�?éd UË?Þá75L!v?â‹HžÖ{Ä?ꦹ8ƒo?ÖàãCa¦þ?Ø7]£d`?äÒüqù­?£�ô˜Gà?æJ­ÁËu?ä´Và‚@?Èåúl|ø?ïÌãÝâ“?éQkþr?à±B'å/?ËïÎóO@?Í[F>2h?í—‘¿yZ?¢?�.†¦`?˜@ø}œ ?ÛâÓèºeî?Ô‹Sê‚Î?äŠöê ê?Å7O¬ �?ã ¾6¯?êü‘o±á?Ë^Yå˜Ø?à’§åé2t?é¨Îr?æ�Ÿ.=?Ý&*—o,R?Ù�ó/…ü?È~VøLŒ?á4èšL?çŽÚ~Ø?ä)zlÁœ2?âa·’Øf?ÉìÌ&n¬©?Í�„ü …ü?æ,Ò‡„ùB?Øë †”Ü?Ôœ·.AÜ?äê¡w‹Sç?À)wŠ ?àxÛ~“ñ?×W«C4ä˜?åâÿöux¦?¤×å)ü`?ä¶~ôeÃð?ÉÑöñª_d?ÚÓue,¥L?Ü^¯Õˆ–?ê# ùKŠ�?飶‰ƒ?ç�_Qñ’?ÁAÑëÍ€”?ÏÐíheÅ�?À¥rËc,?Æ‚ɇ?í 31Rñ?�CšÔ-˜à?ëÂáœâÏ?㌼S�g?·˜ås?×;eÿQÄ.?èLàÐü_Ý?Ð"Hâç"?Ü€0ÿ½WF?—Æ aà?ª°-bT€?íÅl—£[?ØÕÄ~¹&?àN:ßwº?Ëw�wœ?Ç+ªðãÛ,?ß8ò �Œ?ØÛråÄ+´?ê_|ê€�õ?ç¡„^a×?ïÚÙáÀöÙ?È÷ Z™D?ã² pJê5?´h9#¥ˆ(?Řè��?ì§Ê4ãý¼?®Í¤ ð[@?ïØ3i(š?ª¨T'’f ?î¼?î8>?繊Øs2-?Áé–.y”?З†l-‚à?‹€—Úˆ?ÖŽQ¦s ?À°Á y€?Ó‚�"Ž?™H`ì ?æ¯CÇ_=?â°vò ™²?éšw ç|H?á§ÑÅZX?äè1È´¾>?Œ3ðÖ€?î* ´Z[¡?î4L¯èÄÒ?ì÷@ kLJ?í‡×}{× ?ᦷp ße?îî=F?ãÎû#,Ò†?ê±LºÊ®?Õ8 KÔúž?áŽ.é=?Ù÷+'´Ðþ?ÇÝO¯Cà?àù.{ÊÕ„?ÉñD ”�¬?îb¦Kãh?æi_X63?ÙáâýÛÚ(?Ô£½°¤L?àˆ/yŒ4Ñ?¶·Ï,eP?奨o‚WÞ?Û}®¹¤K2?édlºY?ë 2°17?íÎà Zç?ÖO®Úƒ~ˆ?îI`\?Â9(…Ü^¸?Öújƒü�.?Ô5aò0Ó|?ÌMãm‚¤?æ�Îi$d?æðüúßa?§ïßÍð?èº?øëvŒ?Ö¹¨*e¹F?ìM&;ÁR?Ò«fò÷i ?áÂÙ¾‘0?ÅéN#¦© ?ê¼›3¥ë?Ó‘=}ÔMÀ?ê¸Ê¨*^?Ócm¸;E²´�„?¿Ù´¢ôƒp?íjÆ6À§?ä�è½¾£?áe°Vzò?ݱøÅË�?ëùœ$LÃr?Ú Nîøj–?ä7ëñ÷˜?Ù{¦„ÀÍB?Û7 lу?«‘#¢�0?Ù}7æéVâ?Õzi'õCÈ?êº�¯È[8?êÏ™íÏá?°-Šù8À?ÙÍw¢íD?¢N®@?íÒðÿGEº?ÞLEÙûG:?äÅÚñqA}?霎ó­ÀÊ?â?ïsUgé?â‰L3Tpã?å;²”  ?å>ÈJËX?ã¡ÝKä°¦?§EˆÆ„ ?Ôñ‰�¥T~?è*wh_%?â�®¥Ñuó?ïboú;‰È?âkÑ%«~N?¾fHcf˜?ãCϨy‹f?æ£þîŸ.?Ó};zô·œ?Ô~¹©Ï?æ¦}¦~¤Í?å9ið‰"ó?á­øybÐT?ÛvâfßRÚ?«ûÇ‹X‹0?ÚиàýL?ÑlMJGj?ÞE&l&¦?Ñóý¦ Ú?à@õ¨&:H?ë9Y¿ T6?ªœ¿à?Ṇ"ò&?n¦ rÛ?œ îÄùà?†ÃǪq?ÝzÒÈ Þ ?ƬoÅfFÔ?ÈÒ ?ï”]Ó ?ÚGL÷ì?âË" ÉÉ?Ì>jÑÊ–(?ïSu|�tÐ?ÎÀúž’Áì?êã‰Î–I†?ÞÅA墦v?ÙŸË9EÔ?¼@šîѧ`?¬="ÇI{ð?í1mk‹]"?æÆa õ ý?Õ ½uÖ?ኆ™¸2Ð?Œµ?ì�™àšµ?Î`Ôm‡&O¯’¦?à?h¡ 7®?Ö¬€yÈ¡t?Èyî_:/”?ã®×…&Æ?à8J9Zù°?âtð³ˆ4ê?áÄZvFd?ÖÈ×"z42?ãWG‹ò²€?æËÆ“Q˜“?ïaÍ•1°¯?èáyŇâ&?«#»$Ä�?Ѓ\ìtÌ?ê"@T¾MÛ?ÙÁ ÝD¤@?à~{¯“í?çð”ÍÈ?çô�ƒ¹–?Ù§;sXç?â$œ¸œª?¨¤m¥è ?áB¸%­x?é›6)•R?ä(�Yeý?›K𳆙`?³&¥öKÝ@?àîUüJë³?ÛÅìƒ-Ê?Ó‘ô ßŸ@?ãúRÁq•?évyIæu?:Ä*Ò?êÓðÖ8ý_?ïu ¸½Ú?¹<íÀMv�?ÓtoN3?âc*oÏm? «w^“‘`?š¶ z`?ì§ŒÂÿñÇ?ÁÞgÛ¤8?ïè,WC�? #ÏHÑG ?Ì6ê@?�ê”Ï(€?°¿Ö®à?é5NÞ ý)?ÊËìW­?ë 5H?Þ‰)Z\”?Ù<Æê`cÆ?â*öFLë?ä4HÂðH¬?ë!Y£†¿?Ö%Þ)qrÄ?ã¦Å•®?Ý…PuIäŠ?ÞÅÑb®nœ?ê|^ökƒ ?Á·æ®É?èÛÍV©(“?ÝÊh–Ã.?Ñä[ØJÒ(?â‡ï¥lé?ã[ÈŽ�Ng?ç<öw°,B?Ñ_»ŒðŸ>?èÿ²Â“F?Ú²Ö1Tâ‚?Ѻäv×y.?Ô鬡�J ?í­‚È‰*6?©Tã+�?æ�—`h`U?à:p(KôÀ?àGØI•í?ÚÉ ƒ4&?ä± nù¥?àh¢©Š$J?Ç*7ubÐ?á�InšZB?ÛçÇ´µ‡Þ?æÿ!°Zñ?Ư›œ°?î: ‘_?½mP q#¸?çgtFñ?”4[ÍÇ“À?é™´G%LØ?á¾ a/ ?�@ðsÀAà?ÔGKw¹â?軼��z?È< ÍÀT°?çO”520€?¿­‚“n„?Õ›«ék˜?Èhú²�4?æ£ËмB?á€<(Ó ?ܶP�+ï?ÅP#’™p?à¡åŸ}ªŒ?ãIp¦7)?éSÂPVXe?èÌijÕŒî?åZ«ÞâF¤?슶ùœS?ïÎÊ-sÄÄ?ÂLŸVÌ0?è»c´—?ç�A�Û?¶eŸ!E݈?ꀜÑ´â?ÂÍHÁ¦± ?ä˜ÙÕ¥X?ÊlöMÿ= ?ÃÜ`uÄt?ÏßÁth?ïoM2Ö0ù?ï´Ü:‹?ÙL ¨ }?í¶È¦K¤?ëN2¡·Ç?îïNJÌL?ÓÏ,û2�Ø?êå¨"E+?íŠ�!ÛÓT?í�gFì?ÙÇqUpê?‡_íàòÀ?ï:æ{bû?êMr/ Û?î°�žS-?×£éÒ�ð?êÄJ@™)?Õæép®ì?ƪ°Ê´?Ü_Ä?IKº?éåj”›üö?³Qݽ·°?ïb‰'¸ã?êx¦ Ë–…?ïÙÕGÄ«?ï/Ð<â-?Ö 䘊?äÕ¸?Ì´ù¥“³T?ê©Âo€r?í€p5¾iõ?È~D9yõ?¾¥ú¨¥H?Ü8¯ R$?ÐSîƒs‡‚?Æ�´íf„?âërö“³ë?¬q‹ñ?£ðûÂn� ?©�rÂ�?éØe•�²×?ç¿%q€4v?ï Š'Bîü?×¾=Eóô?í}ý\ˆŒj?ç6L^õ?£zùÓ{ ?ë²õXÁ²2?߇¬Úbº?äjLÝÈÖš?Õjo׳º?ÌNùϨ?Åú¨R`HÈ?Óîr_ Ë?î’}H*U ?ÙËô26t?ÞÑY^ÝD?¸Š�÷üCh?é�óÚ0©Ä?éWG8‰P ?Á#Í­6|¤?»^˜÷™h?áeÕ±Ç?ä@�°¥#©?×Á¦1Rhœ?ç¢ö/˜^$?Ùû »1Ô?ês=ˆN‡»?Ø—¦>?’$ÑS=@?æXºÄݘ?è#ˆÈgÜW?ä–ÈxKm`?äZHå�?ᵈ„M�/?ïX<³Á £?â’XzéÄ?ãOÜ©ïØ?”aÜÚLë ?­‚W_§,Ð?í�;ö‘S?ÔXá ¯2?érÉ›ÍuÖ?ÒÝ‚q• ?ãg 1þ Ë?ë€neŽì?çXÅÝ�Ý+?· S7õ‚ø?èÜ�SÍÿ,?ãK7Æ�V?é,Óxl'’?êÔF�k?ëßy_0Á?ë{Y ,ÒV?êŒjÖµ€?éfg¼z?·b5ŸÉÅ?ÐW~ʦtü?èsÔÊΈÓ?ºÃ®€6õ?éÈAÛ…2V?ÞJ“?É1…Ö‰¸,?¦·FœXb°?âñzm%™ª?èRò‚ ?½‚ ‚û°?Ô‹+àçÈ»–¿*˜?áñó42?Ð3%¦;‚ ?Ø‹i’2¶?å }\p¶?ás’–*RN?ÀW„>Û˜?Õ‹ëÍLq ?æðêŠõG?怜�þH?ïP@ÅfÁ²?ävó“!?ïùc93”?ÌK"Eˆ˜?á;D}Ísï?Øk)±Û"?¦ý6˜!à?ß@R‘s½l?ߦŠö_0�?ãã)î[e?äÞ¦G[‰e?»­Y W ¸?Ú[ºó ûÈ?½äÌÄÎ,`?¾Fór’©°?ÞG`$Å¡à?ÒòÒãn?ïJžª!½À?Ò*f�J?íc±µíûK?‡÷M† #À?ç��qÆØ ?î´¡‰¢ú?Ò2Ÿ˜l?䟒>hÔÖ?çwß{Q/?é©‹¯i?æÀÄ|D$V?ç±W”ÊKæ?áâ['¬5?ÄZ•¤iÀ?áêÌvê?ã&âªé?ˆ0GEì?{î^µQÕ€?å@ /T¬�?å�ÿ^ãB)?ÓB“oÎ-¤?Ów»×z—Š?ê^œùõ�h?Ë}? õ ?ä©àôÞæ´?è<†ÀçÛ?åx‰�;3Ý?DZ`MÒß?¸”¹Ö+è?æHÌi7R¥?âh4ñ‡íÌ?áêVë†Dú?¿—ó_þY˜?Ò5 Ц?é™c—ìSi?ا�¨!n*?íî{1« ?àÀ1MÇ…B?ÇTZÿÞ˜?ÒÞëvçðT?à3òckï‰?®8~ÀR0?ã–„w3¶2?éÆn[� ?Öê:ÿê?à¡'aù8Ã?ÄÙYñ_¬°?ÞˆZL?Á0æšÐ°?Ç×Ñ}uþˆ?ÈéÜ�ÿ{l?ëÕ3ÍpG?Ç)ÙëbMì?ç0& t9ñ?âµd/…|Ì?¤Z‘*R ?Ò!H3zÒ¼?îÁß+0?꿤O8?럤�=tH?ÓQ[ÌéX0?îMd`T?âE{?ëÂÂË#?Ñôö `—þ?ïod+ȃ?Ó:¸¥Ú ?àÕUîÄO?À5ZRÆô?â`O¾,úp?ågÉOé?ç×mkQÅ?ë®*Âuö°?âËpÔ ?ê ÂÆWK?ë!LeúŸi?éÌꈫ,®?ÝX‰¶¼Hº?È‘”ù)t?Ñk~Ym_º?áêTuBö?Âÿ¾õü*?ÞŠ’¢@»8?Ú£Äps8&?à-ÑðOô?æ“ìd )à?èi·lý…j?³a–3½°?ÍœA\H?Ù_�'‘f?íEð�m«û?èEP± �?ÕB¼²«ˆ´?á¬ü„Û¦ú?Þ‰ ádüV?æ[ÎJ1ˆz?œ Ÿ?¿6lË®š€?ï42£‹?Ó¤§´W½´?ïå-PV?ê1¬®ƒV2?³~˜’RŸ½?éôe°Pì?äéôóÎlG?ÐS3¹ÿ|ˆ?ïì×અ½?àÊu~×ô?æ úW‹Sì?â‚L ‡?àôxjã`?é/�L�1 ?î,rÅÐ?îò¶¬N½?ÕÔ�Z¢?âöBÊÉ^Ö?ƒ_i�^€?¾ª`Èb°?Ïžåäðh?¾ ^LÿÛ?æáí–ôÉ?é‡$jE³ÿ?æÌÖAð^?×Ë\r6Ö?ä “ò˜é?è.);±×Ï?æåÒÐ3Ê!?èùƒHª=#?¾˜B�k‡8?Çáñó5IL?ÕGw'ÀÞ?㇫ÿÂZt?à ¿ÅÖj·?æH•ÐÕ²—?äØô�ŽÎ?ãŽþÜÁ?ày,æŽ�M?ç…1Cº?ë0b,Ƀ?»vÚº 0?âß»qÉz?í'BøQwƒ?ÖÜÈj˜€^?ïÖ»ûMØ?æ&[òŸ?êts:ÿ"í?Ñ�‘/÷,?ÛJKk0)?Ø+ ½‚?Ô½ØÑa†?ßk\L8}Ú?Õ|=Uwª?뙵Øyº?Ó…ÂËöüþ?Áë¹À’jÐ?ä¬�~m1þ?éŸoÝ^—Ú?ïGEà~NÉ?ä’ (§á?è¹ô›à?áûáá?Þ¤¥×p?Ýä6¹ë7d?ï½r”¤?×0`L©,F?î×Z?ì8C|r!g?ÔRñ�7Ž,?é9@�oú?ÎNA>h\T?å O?Êšý?½Ð3&BæH?áQbųI?ëó¨ 2àÞ?èK¥V ?ãC7Üàž?ÏK$,·?àKŸÊ9àf?àŽM‚žŠn?رÔ]58¨?ìÉ'1á t?î“£F9?»9F"¶ƒ@?ÒMö'³7?Î*âÄP Ü?·‡¡Ï¸?ÙõöË+¿ø?ër—¹_k?©£YÑ`?ªö@S'd?â{“µÉ ?æì¥e&�Ž?ìLˆ6ïÛÜ?â[&¹öÚÎ?ïÀæé*±?à<ö Q7?êÊËÊ?ïH‡×? m?Þí9,Œ4?”3”_@?Õ!ù»;†?å0±N¾O!?Û‰sôuŸ2?ëâ(Â×MÙ?êš'Q®?í•T–&ž¶?çôì\ìô?ékò}½è‡?è:)M‹¹?ÓGº‘ølÄ?Ó·*¼Njx?âv[øg?æÜ;¦S^?ç��,~Yü?禘ÊoYÐ?ïs–±Sžÿ?æ«ÂsëRw?áMÛbÇìd?²¸�hFËÐ?Û;…* ¯z?ïÀË2Žª¯?½†‹C>(?çׄúXÞ?ÒÄ�bÉÆ?ëð«ò¨MÉ?¶äMLn0?Èq–Xãø?æm#ÚÒª?éçîÙ3gö?Ä~Æ¡‚ö\?æßà¾Ê¸^?½)ŒÙ»‘ø?ÚD>Y±VI=?â(ÜïÞtÝ?ìA%#�›¢?ì·¼o¸/?¶m’â„?Ø?Ùi”&?쪞Ñâˆ?îu×|>ý?×B¾ñ�ð?ÉÉàÃÓýH?âq5p‹œ—?éöò€ÿ~æ?èvKÛtØŒ?ÅÉ ÔªÐ?êLÌ0à.?°§D°40?å>{L’”á?¦vP?ç”Í®w?»Áùªf @?¼¶½¼u‹`?ÆÄ[ÈõÔ?å²!˜;¨š?˜yÛbm€?Í[G?™Ð?Ñ�½øY 2?æwÒÞu”?Öñ¿Rr°ž?Òú¸Y¡¥?ç3C}ÓA)?ª†ÂÑš}p?ßn†« 6?ÑæBoÙÐ?絫ßyÐ?Û^Ö£ˆ»¬?èƒ�H‚?Ý ¶j ?ÙYGwÝ´Ú?Ãgž¹©ž�?‘ÜøÆ‚W ?ßMœ@UЈ?ÒŸ‚î�ù?ìUÎ…lï ?ê0ÀB$l¡?ë Ã$Vä‚?Øx ׿º?Ò´’ô è?ÐWÚ2T³¾?èp�ÍU[ì?Àëÿªºþ$?¥–®’è|`?ÝImò®?Õå¥Í–�r?Ú[.>ëýp?ì|‚]lè?íöguQb?ÜðÂoíö?ã –yçI?àÈâdÝ9¯?àM6Šåm¤?ß«uêц?è®-‚mÜ?Ä€®ðàfÜ?ì 6ص~?ëñ5˜�Ð?ÙóQn$?ªVŒåRúÀ?°duaá1˜?À}qÏ"|˜?æû5½t‰?ÓjŽ=2|?ÆH‘)wL?ä*ã C£@?Ó€Õþ°D?ÜKù�ÔÈJ?ÑÍð|Þ-x?¹&¬+c¡?ª^ìGwéP?Ðw€”·y?Ó_ÿ7¡?à}R)ònK?ëÈ¿æ¡5 ?à‹È±“±_?ÎKæ$5Àì?°ÖŠád‘€?�ùöU¾@?±9GÓ\0?â€×‡ó#/?âÅù?¼í8/¤#@?±¦ï¡#P?×ûÅ^‚À?éׄ(‚ŸQ?Ó•YÖ0žf?×#O…‘ò?äY¥vÒ‘¼?Â0ôNbx?äÖ™ßrœÅ?æØ¯ d?Í—©…#D0?ç­WB@Q?Ö¾–§½éä?Í•1¨†Æ¸?åªgrQò?çÌ.]ÙrÙ?×­  „?åU‹ŠÛòÔ?ê2.a�Ä|?è{IW?Ð:0;:÷?á5v«�X?åTýßcV?ÒÚ´ˆ�c\?í IÐBŒö?Ë™ügÀùl?é§e™¾?ÐB¾<‡b¤?Ýéß©2Ü`?«;d³ôÀ?Ñc¹d~?î¼ ·‘}’?Ë¢„%¡l?ã½ÜG…¦N?è…U¨Ãó?ÛÃNbº£?ç :·¶R­? â¡™Èø@?ÈoMžœ44?· -�à?çG Á—¹?ÑÂ2�Gª?ÇÓ…F2\?èý#ƒ?ä2.ÊQ?à¢4±®Yª?Ó"-̉QP?ã¡*dÆ7&?â½tˆ?玎bSê?Àêò}'WP?ê.Æk¤Æ?ì®ÚÏ ¨ ?ÞK‘ÍhzÎ?Ä录¬?î»Ç Ÿ?Å �U’4(?âL�닺?ês'_ßó?³r ú¢¦p?¡E¯ÇƒÐ?ã¢b¥?ìÙt= ’?ºaÂ5È?Ù¸Ý'–vž?Ï¿°Àã$ü?Þ†×Ô”…,?âq¶Ég4?êJZ³ug?À3{u–‚d?ï�D€�?ËYXÎ� à?èÏÓT0í^?é�€/Úÿè?Þø™˜ˆ„Ž?ïà*g]š?³°o?Ä €?íѬrhªð?¨8ÂYGà?îå¼2ÕÔ?·­vML@?ÃaN‡Ý¸ ?äQŠ�„�ß?šÖT—>—@?Õš.g®Ä?×°z pä?éeÜg‰ z?åzùg±�5?Öj6Ø”rš?ÏÛVè˜?Á´'ǾT¸?í«½æDA? å/TûC�?áaÁb¼Bõ?ë™Cè?è3GÝÙêã?âvP†°{?œ€/­Ÿ?Ý›Ö|^ãj?îQ£ž¡9?Ö]›8­?Îx¨±L?é­÷f ¡?Ûé§WSÖ|?ã£BÚ¢?ÀÐ œu9�?êF'îv]?âeâÕÙ ?´kþ­Çú?ŸŸANÓà?ÛÚß<å ?Ú�ïG:ô ?ëIýÏ“€¶?æ�,Ýp?Ä× Ag¯?§t"‚ûÇà?ß|â^Ñr?éš5Õóv?vP6]è€?ÜLL~?éÛÌXÍD¹?è»Ü/³@?àQ+õëÛ,? µY‡á¿ ?Ï�•éó¸?Ë)-œUÐ?­¯²«� ?ÚY§ËǦ?ÑD1¿HH?ès=aM7é?ïM¤WJY´?²“�7=…à?áËÔf仞?ÝSº³!Õ¬?Æ�'/0„$?íߥø4(?ÅWµ½êH?ãNû#e«?££uÐÐç€?ßçÚ „0?Æ•/qaŠ?² DC»¿?Í? Èhc´?ï÷è}qI?ëj{`à"?ë‘+ÛÐ?ïç¨cŠâ?ÁÀ{›îy€?é]�aéë?ßBàV÷ã˜?éÂñ”ïµ0?Ù>Q#öhÄ?ìÅ«^$â\?·‹înÿZ`?íXAƤ?ï!ݯ¼rh?êl‡6 ¿?ær}µÏ ô?´O4?ù¸?ëz'ðŠ-Z?ï …Zd?뺵Îÿ%?Ò [Œ&ä?Ä* d@ˆ,?±°Äñ¹@?êÇŒ·$D?Þ{}g^ê?Ï [ÆŒÐ?çõçmÓ?ëGüd2S¥?>ùÉA?êãrÈ�|ô?è¾ÕNþ?ê°âæüŸ“?ÝDL¢e�”?噳�§«?¢q9åJâ�?íÊ¿½êäè?ë°‚@ Þf?çw¦ûE©ƒ?â(vI°(?Þþïvë ¤?éî³/ð3b?ÂS&±™ÂÈ?”™&8p?@?è–ãð#?æªf ö¿?Á ¿Ãú½?åàÇ€Ìî?íŸEµ¯Ÿ?ä¹�ÒBï?ÛÐÔSÛŽ@?¼˜»Eâàð?Óó™¯ó?ߢœ÷Jö?ë£�j÷ ?â·jKZ¶V?ÓÎwÝ[˜?ê?ä3WD@?ßéeæ?Òû„EDÙv?àzøÐs?ÔËÓ€¼?ݱ°Æ®?žÀ¦ÂzÎ`?퇥(嫚?ïgY*„™ ?Û~ºu�l?ÔøùW9”?ÉáÀï9”8?À“hH¬?×™Š|Ø^‚?”‘OÖ ?¶gõ†pW0?çRáÑ4Àe?çi‹vÈ?ç¼,GÎXz?íÒÇh£&?ái²’ä?àêÄðSv?ßœ[eœ/j?ÐTÀ  Gà?•ÙUä4 À?éteò?éL ç¸­R?î‹Ñ~?ØEì˜zt?ÜæŸ˜È=À?é7B'ó­¼?ïIPH;'(?ìȧuIAÕ?Þ}/Ó:|,?Ã75†ò—Ð?êÞ(&~3ð?ïHßú(n?ã–$% ?á€ë e?îÅb5Æn¥?í0ÓyO1¾?Ò!N𨗌?´¥¨%ç$h?ï[΢J?Û¢÷<¸Ì?mÐSˆýr?Ö@y“ñÒ?ÐQ[Ø XÚ?ØÇíªÚš?áø�yopå?²°>-@?îðð@ %°?ãÝJ�å?ÑLá¶¹Ù?ÛªècÈÀ?îúo VWË?ÜöÖ �è?Òþ®ÖJ/ ?ï£53-¥²?ïWÏÎt2?Ú“ÕZ?Ì?å 1:*Ëä?ÃI�ËQw„?å�}};H"?èh@Mjt?êøy�€Ê?ï—ÔNHý?�b6åœÀ?édEûó¥ú?ÒCÅ˽OÀ?ÆþQ›X¼?Õ‰–‡Öî?ìºvÉTû[?äS踵?ªS·H4À?«X†1ì@?áæ»]P5?ÑfÉrï?ÛŸáäuõ?Öò)À™" ?í:ó6¢9Å?ݱ.;~„?ÍpoÈàMü?ïzÌÀ;?éwñ@Í t?Øÿv-×s2?æIòd²M?ÜÅÉóö¼?Ǧ¥Ú#7?ÖW¾Î}%?ÑJàO28ì?äîÁ™€+?áƒû{ÿ>?ï‚Õ¢ yœ?åÏ3…›IÕ?Ò çü½H?á(V§Ò›?ÀßÐì‚=p?éàéZ?æÞ¹82-?íðF»;b¶?ïpÊ}g®?íÓ¹ü®®¤?ì|]?š?¯ÓxŽV7`?ÛÅùd?î¬ÖðÃ!C?êO;9ƒ‘?×­Æ=…èÀ?ᆣw]•?ÝZvÂf;Ø?�ÍÚÏ@?ؽ� ”ý?çsŒÞå��?Æý<™á´?è`¨WM)v?ßÐÈ â^â?ê°àfzk¸?Úëd®ÕÖ?æWY¡G?åtþ¤/?¥îx9“P?î²|úŒDò?¼Ï#Ãôö?áçÙô2$}?ÈHÃÍ«C(?ºÁ+„ð!?î½ å‚=?¯%ÃH¥W`?ìõªb…fÊ?Ù½Ni% 6?ã/1«D?ݽ_'T–?ï.ÉBl?ê”Ñ0Ÿìþ?éÁ8Ç�²a?çÔRæÍ†+?Þß_«±€?æR1"í¹?М2Kywj?ã\ÚáŒ;?×+äA"?âD–Rð¶L?ÃѰ„½l?Ò/+zÂ?Ù�ÔFd?éA�ú�º?ä§³k”tM?»Ñ€J8?‹O�~ æÀ?ℽéÍì?Dù‚=?à£ó2)×?àMòúÁlº?çËØ€iÒ?È€'ŒŠ6Ð?Ïÿ�V 'd?àõñb8X?ï˜%×7CÖ?ï~[Ѷ»?è œ¿c“?À£„›Óùì?³|Kð¸ø?±—ià7ø?æðd…O ?ë›�ÔM+?ã`Ý0ƒµh?ÐNú‹”?틪WùŒ•?¼ ¤�Ÿ÷ð?šCÐB¢G`?Á"¼%öØ?çß•Y8é?áÜ·6¶Ä$?ì´Ž�ŽÌŽ?êTŒº0"§?¶»s·ç¯ˆ?Ù lÞ£Œ^?æyKÕ-Ò‡?è0"ö:?áA¥’`Y?æö»fœÌ¼?…Dîòå?âýãÊ„é?àûD7çKk?íV9Mö?³¨Û‹^x?ß „ÙD¨?Þûñ·Å°Î?陦¶bM?Òørm_æâ?ᢹ4‚‚?î£E­Bñ?äqöwñÙF?垨Áúô?ºAËÊôˆ?Ì͙ꕨ?Ί+…’÷¸?Þ(ø™ZÍŒ?ì&îÇŠ9C?î¥åÐÎÑ?ïe”¥�{ò?í…mJÆï?­j÷ÜOR`?²R.5Ÿ?ëb¡¨Zð?ØÖæum¾x?€n©‰X€?’SÕÆÍ ?ï/A¼�tÉ?â°ä§ïX;?âÍÊÍ …ñ?äæP/þìÍ?êäÒÄp?ã6á¸fßÊ?ëi±NAed?Ê ÍÐv8?å‘u,à?áb)?ðM7?Ò‚×’ÿ66?Ö¯Þé??ÌäÙ!�yô?Òç÷F32?ØÞ…‚_¤?ìè¤V™Ìä?íÅc”?ï6/Y8ý÷?èn4<ä?â»JÊÌ…Ø?ÞÙk.ÝР?µë”5O�?ØN]¿FÜ?íÄDÃUý?Ù¦¯MMæÈ?¼„¹§uüÈ?Ú{«SÈŒ?ë6Ê’œÊ ?ÔÊ£ÿ�Ê?ç%ЮöÓ?¸{5Ûï ?ìj™FHT?ï·6@Ì?êmy•�?ï ËìúÁ?’?áPƤ?ê�(ßûû?Ø,Ú¶ðL?îþ}!s¼?ç…n³öÜÌ?æC<ع1®?é¬=ñ³k·?³Êá ƒ†ð?Þ2,‡Á#ª?Ê…Ä9.H?çɤ³]‹[?ÛÌyÃcuL?Úª³èŽI¨?×oë“/éô?ÑébÉÄ•$?Û7Â_ÀdØ?Õ’vtfïè?Þvº¾Ü?æÂ³À«ì?Öùë[ˆ?åpù)&=?áÓr„qF§?Ï Ôš’ ¼?åÞMY_Y?èÅûÒã(Ÿ?è'k÷äé?å#‘Ò ?ß7&Mî$Ê1‚Ü?³} Irx?à…Ÿ­k?åãÛ‹æ¬?ì¿€–{û?ÎÓïÆˆ�°?܃ÜèAð,?í*Gz”Ê?Ú+¢%o¨?Ôº2ƒ+Î?ïÖõåèY?žß²2¶ð@?åšhQ€x?Ð'=¤kg?ä6=0àfÌ?çµÉ¥v¹?ÐVVa¦Â?¾ìvH ?ê!~Ä<ø�?êl¯ˆÏ1?ܦ3„í'?à«Eq´?í§Bnó¥?ÖcV�³¨?â'ßödÞ?ï‰tÓ´??åÏHb‹nÚ?Ö—�þ% ´?ËöÏ‘Z�ä?áêÕ†‡‚?â ½�¸æ½?é’ê»l?ì Z¥�k¹?°S7^÷û`?È6²…W?½Ä\H>}@?ç¡lŒv“?¤]3lì¦P?ÞžÎsýf¾?•�¢ªH€?ȘCªPœ?Áß#bû „?âL�f-¬Â?äŘm.?ê=-ðè?›é‘`J ?íq2)±^?Lwá°Â¼?Ò2a‚Ô÷‘ñš?ÒÏ:뇠ð?ìj»'€–]?ǃèo8°¼?å%3@k G?ë&i šjô?Áƒ¿[`?îšî{×Á?ç‰qëñÒG?ãw ~~®?¨Áñv7#0?Ý %öÊœî?³²µƒW¿8?•x äÜ ?ÃBh;ª;è?±#*]öx?ßFèu?îM¨ŒXÿ?Ø€0æ8�f?˦tyÛ²?ç"F 6S½?݈< AÇ"?Úâ"ØI�Œ?Ûô´e8H?ïf2VS˜?»@*D°ø?êz»ÉV]?Š¿ÃrÏ@?±"½1žð?ªªÊþªà?Ýž¶Þl†?²óÁ3�?×ùlÈzK2?ßéRW¢Ø?ì7’ß8)m?ìÈ<íåd?Ýw¬ìß’?ÅÏÚÛt›¬?ÊQ€Ÿ+ã,?ì¶mßP=§?¿]/·W¹8?Ý Å¹3ú\?ïËÞ+x?kSÄ?°?ÃCòÈäË(?×ZÞ[‚Î\?ïptÖ€â?‚Í@­1@?äïæ¹ú ?ä›nj{¥Î?ä®*¥sá?ܬë)7èD?çëÖ­Ž?ާ̰Q:š?んݵÍ?äî#Ÿ’•?â}?jÌXj?éOàý V?Ïên´7H?â—cø9=?ÑÓ" s„ò?äMÒÉ‚¹&?Ϥ–J3T´?ä ¾Ü*é?íß_ͬB?×)¥QBV?ì½´ˆŠÛ?ï6{â¯?ÖX柪>?®ôš†'Â`?åä/éSsK?ì.·´Ñfx?æh;nÀQÕ?ÑØhj$?ÈH ^=ð?èØ’ŠAe€?áìmõ¡šº?ïÖ¨B»Ä?Ç^‚ãöô?æ*«c¡ª?ÕZ$æÙæ?ÓŸãáêƒ:?ë²úЍw?àƒÌÉŒ¡ã?Æ °© ¤?ãuÆÖ¡Ób?á«ýÝì?Ö⨇þ^,?áW‡‚§Im?ài‰%n"?åG‘:9?çÅBŒý~q?a@® .ƒ?á³7ö“5?ç€ÕªCì?³.£óˆ¨?È�Ãf´?é§%=íèq?ÆÊ×:e?àõ´=ÚP?è+�©†H˜?Ý5…�¥Ô?ÈfÚ»9ä?â�[_I?â?”Û?Ýüäê,?ÐÖ!¤ó?æ^GWð­?Ñ+ãWžºº?Á˜”=ø{Ø?î.FÂa?æ– |þÛ?Ù×e¥à„4?Ù+¤ð¼¾Þ?ꉥœçC}?á’3b5¨?Éiv�é�,?Æ ÖŒ�à?áës¿�îw?ëÊsn©Å�?äÑ”m ¯Ë?ڨϊì¨?ç*ŠÊ8?„xÕ‘+À?à„©Lþ”G?àƒ”‘ÙNW?«Õ×Ç8k°?È÷p[Ô?âD¼K³?è�,ü„?Þéú³?íz­dVÂ=?ƒîñÒ¸?ëVë½g’º?ãÿœæ›@*?êÃŒSìc•?ê¿o˜óJn?æB«Röåm?ä%õ‘ÚJ€?äÈ�RÉ ?îˆ�[�#?ÀØìîs¿8?±q=l>x?â«gT�»?©ßÌ!ãW@?çdø>v»(?͹lO.¤°?È»-`q`?Ýøë@Ç•ð?ìd¸�àˆU?èÕ¿öDlì?ê†Öî3Í(?èt*»_?Ý\÷¡?å5æÈêC?åÑ›ùü¯F£Íÿî?»‚Û 1õH?°å^®Éuˆ?U£  ?æùÃ0EŠ?ípfÑ´Pñ?Ç LÅ{?Ñ©ÑO©ÑX?ΦÀ[÷-€?ÅÔÃ�ܘ?Þº^z+¨?Æ¢ã¶%3?í… (ÇÙÑ?ìUjyë?èpPâdUF?ÒÖ–óÓŸ?áyHµb-¤?̽6Û^�ô?ÕFöìì?ÖÒ'HÈ?ä¢1AÞÉI?Ô8çã)ÁŠ?⹋¬ž?×$ÉwJ=Ú?ëÈÈð Ã?ÛÅl²Q¼z?äs«ùP­ß?Uæ>ý”?Ðw<&0Í„?è1Ú±µSÐ?é(¤çl?ç§w=F>?éW¤‚‹Ì?〛◣¶?Ë,9o¾Ÿl?î DUâö?Ò?¸?éúiúÅ~£?Çé—ŒP™?êšr�?ç 䆌à7?îÉ+Ç_“Y?Á°$ËtO ?ïE¦$¯&?ÆÄ!ÔCÍØ?Ú:ióÜ?ãîxbrò2?оI©¶À?îa�W­¨m?Ã|J7?経».LÒ?×âeA´?î6 3ŒÝ?çôx>å‹â?×›»(RÇÖ?ãêqð)�P?㜇¹`R?è@ û’Ý?Øß…Ò8Ǧ?åq(ÞÒrµ?Ù†¬WT‰”?çü Àt?³7ÂYp?î§~.ç?ÖïÇÞT\?ësÁêO¶?ê9)¬½ö?í^1P¹NJ?Ó—áÝñx?Åì ŽT½8?â3mxÔ ä?ì†Ê‡?áú9å:Ó?à^�ts¥?ÐÑÅãð*?¼øËÄŽÀ?éLìÑy{ ?åqÓ”S É?ÉŒS$:È?ÕT˜yÔ?æ¨æS R&?íĶ ã¸?Û#×j«ðº?ëÈbËKV?Úï´š"?êÝ´Ë«}?ÛådîÏØ°?à%¤l# ?ïøZõù“?ÇçÀëx?Ð*$:+Ò?åöèèÑLž?¬pÓc ?ìÑ3Ìâî?åáÞæczƒ?Í£ú÷ ?è¹vÀÈe?Ðòù�æ„ò?°ü~qp ?àã%‘,�ö?Û“"¡7 Ê?ä…ðP±?ãLXµÈ¸Q?éJ.‹n?ØÁr„;¨ ?® Nšz ?æÆÐž; È?äùö‰,?ï$±¢>¨“?Úà�|^š?ë þœ é?àŒ�îgn?îÝ"´½±&?çíÁÛË?æ_˜Cé?ÞMÇ�EN?ê¨b4F?ãJø¢gî?бByOÖ?Ö9~ȱM?¾£õʤh?ÀλñÕ» ?à½Ô0:Z?Õ¯ÑY½^?ÓÚ8–°ÊR?î˜`gò*Í?ÆCNô3œ?ï↶w¸‹?æ?C76Š?éÁŽEØŒS?æòYØÅX?Önßé=”„?ë«fƒò?x?ÔÂïxµ�?îË%+|Y?ÚÚ6�{j?Ö?m v?»º1BÔÓ?«Š’öYì?ï=sUdjú?ÎôÓ péX?ê,‡¾âf£É?àõ^[î)·?æäq¼Ø°?п¯âÔ¨?î‚ìF¨TC?èš«—!Ý?Ýí¥jkô?’©°äd‹€?­ošÙ–P?ͧïþbô?ëÏ!Csç?§Ó19æúà?²R©Þ5hH?íG�²‰Ñ?è6]zm¬?Õ›KŠŠ€¢?È }ðxl?ÐûÑTÔ?ëv§q]¸?ì=>4Nœ?Ы2õ«±h?¦*À?ïqRø +?ëDÐÃx€?ØZnÄ|Ä?Õöy1¦±ä?Õ5úóøD?σ8»Éç”?ß*Λ¨öz?í�~àßÜÔ?ÀšDu5Ô?¸%÷Ú¿ï?ß° T æ?ß"­¡ï³€?Þ„¨…žÖp?¿‘=uP?è߇Žì²?îiý ÜI?Úk¸EçêH?Øò~mß\ú?âu@Á,K�?Âü¸è‡94?脉7›µ#?ÛÅPÁÔD?Å ­ÆC:¬?èJËA,N­?âÎ~/ß)¢?ÛnãOÏPÚ?äO‚cy‘?ÔË Õ`:?ã/`L8Æ?å¼\Nð”S?Òég¦Éÿö?ÂD%ør©ä?ØXL�´¾?à3.1œ%?ÑWÀ¸…š?Ð�!1G7P?Ë]Ëçâ\?ï˜#O‚/?Öwa‚?ôH?êçnHúâ?Û”aD¯‹�?Úº*©º{j?ã9ÄÙí“&?ã%:á’)?ëQ“sXy?Àç9ôªÆ8?ÀШÌU?Á2`á" á›Ò?ä‰ï¼uI?¸ÿ$†ØÔ(?Ú°ºŒ*Øì?®D©>…©0?èÒòÇ+?ë‚5>4³V?ºd¾ƒ�ô?ãÝ:—†Vy?Éåcl]|?ïå¦àyùV?èh‰øYc?Ý ÖØm¦¸?éf}6�!?ã½çí|?îE«ëtœ?â^a+•‡ˆ?¤œŒÆ?Ó,'ˆF>b?ëDüûö÷¾?¢–`› ?á:åXbao?Õ¶�Ü}ö ?îùÆÄzµ¥?çUŽPBÀ?à"ÌïaQ?à®C@Ú̺?Öĉ�¬š2?æê›]zM?ÔÍ'ãi[ºp?î£[ï– ?Û.‹7ÓÁ˜?äÌÌ<�Õ?âÉÍ.Cí(?æâ@)ý´a?ì?ê™æò?î7‰`q?ÕY”Œ‡É(?Ü�%õ¬Ž?Ó›ÖI=¦?ºO æ§ ?ç�¡óâk‘?ãÚ_4 ~?äàÃB{ ?æé/ió?ëPòbw?è9Ny\˜~?í1*ŠOÍ?ÖÙEÎ&Î?Î/ª×F¬?æ ™nºR,?ã“÷�‚ÎD?ïÖ~x ¹í?Ëîg †àp?ê 6y|Ty?ÑÐ’øòÈ?îûÖššßD?ÀÝ‘Ýõåà?☌hi*?ÊÒ.Ùø�?à6ýïl&?ㇲ>¸cI?ïŠ÷ʼnÀP?êÃ8-29? …PÃZ•@?æM;—=Ö?ålàê½Y?äÿ ‚c?ìVßk$?ĽWKyp?À‰‡È‡R€?´aá¦~Aà?ƶÈHfô¤?ã‘mhKæ?çˆhž)ék?ÕÊ|M>°?»"þŸö˜?½«T¤'€?Õ»Ã7¦$?ëž_÷Yf?¾’ûw`?áŽè6‘æ?²;aàè P?¶0ÿjž²à?Ó¹†°­•p?ï”ý\?ìÍž'\Xe?ë´æ�þö?¿ú·@ÕÀ?Üåcaë†Ú?Ë>`? Þ°?ì½Î>Âd:?ãþ¸/²˜’?É©NZH7>cN�?“c8`Ê?áÌL(›?¨9ò…?à=Ù&?ëš—´2NV?ØÉK‚xî?ç UòÇ2?ì# ³™ ?©¸6îJÁ€?Ö&ü'Ṏ?î”Æý"—?á: @Võ�?ØâÓ"\d?ìèy›¿ÊÁ?Ù ÎÖ…À?¬q†ì±À?à�fwU4x?»Š?Ø¥?È(pk™Œ?áŒÛÅÒç8?îíp¨Ì3ñ?Ê£ Ä;x?£E¦/Fÿp?Ū‘dƒ”8?Ҙ僛 ?îUgžê¥A?»s>‚êçà?çÓëí"a?׈謦¾Ž?ÓÃäjbâ?Ô|ší\T?Ôº/ø,0?ìûjêÿW&?¦|Æ&P?éf�;Ž&?ß sÁà?éÆÎ÷Ú�C?ÔPDÌ€Ìð?µ¦ï³‘ð?Ü„€™ú?ňŽN�,?êá1óŒ?í÷´v–—^?áFÛ<'¸7?Ó…•l´&?à ¬!r³?Â>_®_nt?곜„£Ž�?((ã?à�u‚ÇË?ê.òˆRH=?çÇe½?ÖÚç/Èè?í¿z‘ò�}?ßù`Æpaæ?î¹ ew)Þ?¶Ð%Áð‚p?í;%ǚÜ?ëGeþ´–i?4«ãÍÕ`?ì;Š‚]?ÚžÞö³ž?Õ�æn¾º–?éŽ�Ñ…?ãÂS‚ËÄ?Ù¢yCH¶N?ìçÜFž�g?ÌiXU f¨?ê‰d?çjL·�!ÿ?ÔšÁOÂ?ãM?E-�b?æÝ’›óVÇ?ÂÌq „?×’Ëwxö?ëÇ�I?êÚëvæŒ,?´è¼ý(I¸?æ=xôÇMš?íþÒ^Ùä?è½K“Ôgÿ?ÂKÕ¤O`´?Óp)RÎã@?î è* ?銂+6?ÖŠC$º?àüõ?ÅL?¶ˆÓ…_?åh‚Þ+ä?¦ª™›Ô�p?ßNŸÓCoæ?ÔâÃ…°»’?í°ÊœæbQ?És²#{üÐ?éÉ 0Òn3?ìµI‰¬r?É3´§¦?ÍÎl¶Ÿ(?çè�Óš�?Ø£Ä7D`?Яg}¸«z?ÑrÕù!6?ë¢Þã/Ï?Ù|’+Æ9?àò¿Ýk„ƒ?ë*OœÚ#?à�\!Ù0Î?á [/mŸ_?¶Çìuƒè?ËùŠ åL?ÞnÔ=vœ?åFÁñ–?ÛÀCfCÔ?ˆ }.€"?·éú«ú£?Á\êý¦Þ€?׫ÿÕ1¹J?äŸJË®âÕ?xp´T¯À€?Ô€óyv?èƒy Ãg?çrýz˜ˆ|?î´Œ€�Ü?Ò\WvŠo*?Ö¨îHÜ?Ûô*_ ƒÀ?Ü‹ÇÉÄÀ?äxß$™oÏ?îb.òäÃy?êŪP³Ðè?æ”ú)?Ø _a1 À?×Z%r…ô ?Òÿ–Ùá+F?à'%§Ü !?ÛV@[˜Øâ?Ò¤�“ÓVR?Ö]'À�èÚ?å8óÕ!$U?è×�#’Ì?º*m’šI0?Ú-_ò|ª|?ÛËùi¶1’?èÇ-ÏÍZ?ºaYºQ`?¢›TÙî/Ð?âåU4?,è?Ë'»˜©~Ô?°Ÿñ9@(?»š?ß Ë÷ô?æGL¤ô¦H?ꪌNTÆ"?ìÊE�…÷¼?Ò*¹3?ß!‰ L±Ò?è�Jye›,?ì%Âß1?áoï62?³àaÞÙÈ?ì_{àR?¸JÃJ&°?Àqdì?À–BÛW?ëÄú$™•?ÄNqÛ¤:Ü?Àš¬ä¹òŒ?ï l5ˆr'?äÕ¬»^î?ØšÏeI”?Ŧ7[2x?ÁÆukçÜ?�¤L PuÀ?¼¾|ZÇ­€?á ñ±ûS‰?íÆÿÏí?Ò4!EЉ^?¯ìÈd?ìó�ª?é În?ì4D9ÒOu?áRç/¼^7?Ùµmº�&�?ìOÊ$,ñ?ËJþ¢{œ?ï9Ü ô^è?æÉÇç*De?ßìñQ÷V?ÕÕ‰Á�„?ä²—œY{?Òc4˜B?Ûþ Ÿ†?«{ºYÈ@?ä[„7½”3?ÝGØî{$Þ?äîƒ�z ¹?ÖRŽïã^Þ?㣌Rhä?ÅwÐr”cD?âtNþ¯�’?è3°ˆ‚ØW?Ç;¦ÑOà8?çÃ+Ë®B?ËïK€¸?ãUþYÀÉ×?ưöÇÀ?ÇFi°ÄåP?è*:ìË-K?ÐÏ={bÞ*?èöyð¢ÒJ?ßy®*í?º ¬­„ýð?ææön ?Ñ~Ó;ª?Ô‡lñ¦²b?îï(·¸€?îq‡jè ¾?ÕyiÖÌg2?Í–Y"‰¾Ä?8gtÌ¿Ð?æGÛÑ8Ž?ë²ýb„ïÖ?çyz7¼Rã?ÆÃ”<$% ?໣G˜C=?¶×’_‹�?áôÆà¨Îå?ç ›ø¨?ÒÉñG0Ú†?è¬xÊR£?ïêe~è•?ÖëÏfxUŒ?ÞÇ:8ÓzØ?ÀØ~4ø0È?ÀÈ!ð1\¤?î@©}˜Cí?³omêr�è?ÑË&?Ü�™äƒŒp?Õ¿V÷ã ?ÇŽb!€?é1�ùŠÒä?íâ¯D.·1?ì8M­ÿ<0?×›O]�†x?ßèµ²[½?Â{‰¸¦ð?â5؈?³õ�¬A¨`?»Ö Yä?ßÿ�D¡çî?®˜¢®=à?ÐË–Ë£„z?íò¹å5?¼¨ù�Ôˆ?å  ©ì?Ù=&öˆþ?êAÁ~¦[L?Æ<`ÜV¼?Ô4�êM¤?ëÈ‘à‚?×�2m^¶È?å0Z¾F«?® fó�„Ð?ØÕÝ)º–?ÜjÞ áî?±LÚí£Ù˜?ÓÓÏ•´h(?Ð'°9i$?ãgŒÑí&2?ʘí]ªð?Ø©Ò/u^?ÓjƪôÄæ?ÊS€IHÀp?çd \}-?Ù�õB?jÞ?ÂÁúg�›4?ß×é�Vž?Ê¿ÿQÄÍŒ?°-Ë’�X?Ý¿á>eRú?йZ}ˆ¨(?ÖoŒ”?´}aä‡d¸?ìÉËR�?ê›Ly 7©?ì  Vw¿ø?Ëó¿§Æì?îš²±E§?Ä¡¥V%â?ÅÚnÄ‚�,?¢E Àà?쇳s?ʃ€ [?Ó(1�`+0?èç' 8?ãê!Ç<¿?çwô™B†?ïÇRä¨ Þ?Ü5OE˜=l?ç�]ã1#?‘8@`š>`?Ôí©éä(z?è@¤ö'u¿?æÍѧÉ+1º ¨?ÛþŽè—õÚ?ìë#ûgà6?ÅçѽŒÈ?ã ÏÔìD?èK™˜OWY?ç-' `'„?Ó›�¨àwŒ?îQ†m ?É{`Œ2à?I;?â6ŸF«á·?ìÅ ÕÝÃ?î@°V Ù\?äú¸Ä0×k?î7'#K°k?ȧµ†A±?àvznÈ?ÇØ¡>l%D?À^䱆Ê?ïÖì*°?î½UÔ ‚?ìOx­`¬\?Û¿,:×Ö?¢„xÖE ?ïG¾ˆAK7?Uç"¶a†?ìPW×\?ä%˜yˆÊ?äø£ ÙÅ?Üoò¤G$?¥gYG*{à?ç †v“ ´?½hŸÌ6Œ�?Ý6â§›b?ÝnUêÔ[4?™!’Ât `?�/¸à?é´sÿ[~%?Õalé h?‘ÏÅ•®ù ?ÑÐ:Íž`?Ò×q|Ïp?ãæ—c�œü?íi߀?–ÐÏàßk ?Àˆì�¨?æíÐȤ‘n?å3ÃÄ!¢�?ᤶ9ƒú?èú:�E~?á4…œd]7?á2)'9³ì?áHJ§Q?é‡þ¼%o?µ0e‡zà?äàãZ›GÏ?é½0 úhÛ?ë¸¦ÌÆ’ô?ä¨þÌ�i?ËÕFTù¤?ç1ñå89?Ëãùú†Ø?ä¶Ø¢®i?à3×Ã}¢?èc §Ï„ñ?Þ×Ç«–Æ?°Z¾=P?í²,Ø~?À?ÛQ$Šh÷4?ÏÒuz-�œ?Ë;©ß ˜?Üò¬©lÃb?àûʹž×?ëþ³Ø2÷?ßÞ=J†TÎ?©+°æß°?Ý'%\}È?àQƒëù¸è?Ø;âóš?Þ` ïÆ?åî›õ?ß-˜S¯Qþ?êÔ¬÷¬?Ço¨Í ¦?çøx�±Ò‡?îÄn Jê?Åz ×¤s˜?Úb³µvfÒ?í äØ&"¢?êi…žãDï?ÎĽüì?º†‰ØR¨ð?¼rc—>ôh?êÒHŒA"/?ìfª°1\?äÂàu@΂?ßsƒBâ>Z?Ù»ù¡Í˜ø?ݵø S ò?î¶/dáU.?å‰C F|?Ùû¥²ÏüR?´)áA©)˜?íå ? ,^?©÷ë5{«?¿ÔÔŸq(?î’“[gFÞ?âæêŇT¡? YšÆÈ?è©ñŸ)?àŽcΘ�8?ê~v€ùïü?ßVN‚3n?âuK3 ³¾?ë#[Jma?î®e¨‚@~?²S!s ?ê®x£)5?Ô—‹#›ë²?æüpß{\?â+ßÓ]ç?߃Cà=v?ç¹¼ ÷˜?êÁöº,h*?íù¢:cè8?äJ_Øúµ°h-?±{Ùçó#H?ä¼P–þ?µjo3¼0?¹¹ùòˆ€?ÌLøK™+€?ÐcþF+T&?è©Ã$Ýy?ë 0 (?ßœ´‰vM4?æ¨À£�ç•?ëD§KÜÂ?ìª'ô¸:$?Ú‹PU2·¼?åFó9€5?嬸ó—?äÑÎëäŠ~?èŒ ÷ÚÀ?àð]‘šN?ë¡zÁ.?î™ÕÀx_ö?î ׸f—v?êÄת1ù>?éâŽc7X½?ÄÔ/ó<`?ÈŽ©!8ø?á„»ó©‹?¿ ªS×G8?ãºF½Ã¥?êååœoÍ?Û„FÕÖs?À^."<?éà„y†¶?鯨 Šá‡?¿h€¥gá€?ÂjNz»®ô?Ú J¹Ã¦N?Õg§«Í*?àã彂‚?îu‹z�?¸2È{H?èBØIH©¹?ì¹,ùl‹Õ?×úœ5äÂ?Õ¡@Ø”?ØQ;A¨`?‰\¾[[¬?à߯]ú‘Â?ëµC Çýd?Þ¾¨×C,?âÄxØ7é?Ú ,MÁÐ?äˆh3PØ?ïFçó´Œd?ãDS2?åpÿZb“k?å?ŠÙézU?ê«0¨Zµ˜?›µcËäÅ?ìíNá˜ÂŽ?­ZR“+?ìÖ2hD¬?è`©˜c¶ª?Ñ.˜ž—ÓØ?àö”£Ú?™!–èd† ?Ù??(9/¢?ãN?ǤçÑ?ïŒúýà•C?íÎ ;ÃS¯?¿?Å“ÎÏ ?ë%=-3½?èï[ò ¥?îž²¥=?ëÅš¿Aÿ?îèÕ‚ú3N?ïžp6ôeM?½ìs‹»O˜?á®ÕÅ“?ÊNã…�Å?Ñxœ¯õ¤?¯/*]ú`?Ûìò«µq°?ìúŒ{xr?ÐL?áPnFYy?¼£ÏõH8?ÕûìE¤ÊF?ë‰éì#’Y?r^;$|€?ëÅQ—Oy+?ç±xÀz(ø?Ü>FWØŒ?Ôx80øP?Ô<-øM!?Ú®ë肘?í¡Íç£p/?à›5†:×ê?Ôrñ›ˆ´‚?è©ó ¨:?ȦBXÃŽ„?²d•gpµ ?£+Rd¤0?Ò€ùO–r?¿Ô¢š�ˆ¸?é)EóZ†I?ëÈŒ <¿­?ëò9;?æ –ªì+”?íi«hnúµ?í~†ÑÔô?Ôþy! ÔB?æ#E’;?Òþî¶¥b?ïjU¬ÿ¿u?Ò1š!ñÊ?É••ʬ³?î~vif«›?ã'ø F¸Ú?çÉåÐfz?ìÀ®ÂÇýh?Æ Å…¨?ãg‡ïzãD?éßá:`Y·?â‚þL_[Ë?áäÉ©ðP?äQw�/?ÕµìùDïr?ͯÁÿî6`?™‡ùÁý?@?á ^Z{p?šÐí¶°H ?êCu�Ñ ~?݈¾ïøÙ?ê›dˆï?çXóúÑ%?×÷è¡u?Ì ü‚k+?æ÷ú&\°Ò?çCä%u³?ÊMpŒž?çŽÇ€qj?ҌԔb²Ø?×¥¼·Æh@?Öû? lo,?(GÈ«q€?Ý@‚ìöê?蛽ÑYÀå?Ò­¶?&ê?ÀùޞŰ?ßAœØ?ÀÚcÃL¯óþ?쩚ݸv-?âzþ%um½?êYÁ+O?§ÂaªÚO@?éw·ŠZî^?ë2–±SCå?î©§}îGà?ê6‚BþÁ?ìZ–: ÞÒ?áØos¨î`?ÊÆ$YÎ÷?àù‘?׎Ø&gÿ¼?ãA×Û~^ËNÔ?¿Ú1çsø?¶vø P?æ±>HÑó?Ø¿�nêª?í9k¬a_ ?ç³RžQt?àËÑd‰¹Q?è¯ÚhËŠó?½ÆI¿8?ì…­9MŒ?çÿÉï�ØM?ìó/Є›?ìœä\“j_?Áóe–#…P?íkþŠãŒ„?Ñò%¸fL?Ê vªNÄ?”#ÍÇ9Æà?ê%ás߃ƒ?á(ìaê Ä?è3¶ü;|?ß‹fúa"?ç7¯p«ò?ãO÷S4—z?äŸONF¶?íMý•ü?ØyÔ¤Ì Ì?ç&8KùVý?ëÇKœFm?Õ-¹¤ÍÛ?äàôä^UŸ?î�8aFmÞ?í÷ƒý�N?ÜÄëÙŒsÊ?â•Ã�Q™?é+›[T1;?ÜAD¹ËYî?ÍV¿ �ˆì?ï“yÂj’z?Òy¤4�d?§:Ã�sÔp?ÈÐaÜÁ?¶‘ÊW|˜?ÐqšTßúþ?죓„ì�?ßñ¾š+»?Þ†î�vÂ`?ËR|¸Žò¼?Ý‚b�n €?Þ·Ò[ÓT?å~ó´Ë²'?µ~¾S60?èÊ!Kø"O?Û‚ÍÏYš?êðŠW?ë×|3㛥?Û[Q¿,£€?ï\‡¤_0$?Á;ˆ?êãýð¯ÞA?Á·ý·Ì´?èeàØ¶‘Û?ál¯€í“?ÙÊ‘ß=?à�…)kÙ_?ݯº–ëÿ¾?É‚~Á¨?À,*Ûz ?ë zm Ž9?âtÅyÒÌ?îšPÿ^£˜?µ©R™/p?ßü”}ôŒ?àEÀE]?æ7Ú ñ£‚?ÓȲ«›Ø"?æ¼�A$?ÕpXÍEª0?³d€d¿8?ÈŒ×h^?P?Ò8}ÑÌ1X?åye �›¾?ïcdëÖPk?½f‚9·>H?âPô ®?¬‰Ï#ÚûP?á)ÌA|�T?Ü—AÒ¸˜?æp©È‡¡†?ܤðQrñ ?àô¿{ƒ,œ?í?–àBº?äýFÛÞQ?†ˆ!ºA­@?Æ" Íi§ô?ã¯TÀ¤¿´?ïKÇL”?ç!2ñL ?ìn^ZXbP?ïe™ƒ\!M?Ú½t B”ì?ÛnÃqÚÈ?¸hÆ3È’P?æL? •êZ?êÜPŽ�c?ìÚ:‚Ì&ã?á´Tq˜Oï?åËoÉû?évn ¨bU?à¹ÿr3?Ûdäç·þ?ÕA(Ðe¾6?ªÄQD˜°?íÊÙÇ“}?㉗Uýîß?×ài±>^ ?ĨEéô¨?·øyˆmÚ�?Óðš1†?˹fg=t?îæ ^†ñ³?Á�ˆX ï˜?µ„–Öv>@?Ù8¤¡©:?×LÈ9:y?Á63=´{t?ãâô£"T?àé[kô%+?ï~úr&?ãabuñ¾?\Ü/ŸüÜ?ÀÝ>´˜yÄ?ÈõïÇØ+?ïFy±¹az?êCµ{Ìw?ãªãÏI™¢?Íìîë„à?鼫€-?Эæ“Ð?ä-D¨)¦™à?Þèï:¬ìÆ?ï¹· ‚L,Òâ?†Äõ“™CÀ?ʼOàWCà?åF6ˆXŒ\?×FN´"kD?Õ‰åâµYV?ì0Ñ(nR?æw¿¸XŸ?ßÞxº2ÈŒ?í{:1XÌ?ïµBÀ¾?¸6φ&Š?Õ˜©Ä4?Ò†Ðt„2ˆ?çΗ#[?ïT¾¬Ôw?ԩеʀ?Þ’¾á`5Ê?´g×iÌ ?Çê"¢?Þ ?Áê©Ïf¯ø?ݸû¥•ÍV?á^8d|?Äc�+tP?ãávÝq?ڦ̞Z?âø„ôí$?çeÁ<É&?×Áª[½¢¦?ÞÌu…�4?º{ÞŽÒð?¨kôGŠþ€?ÂÇŠ Ó´?Ó�ôøS/F?ßcÂ|—d?áøŒN›@?ÝP“1¥f?ß,ÎÈvà?櫹ÐUT?‹K¼oë€?ëùÕ»u,?·%‰ ”è?²Ç�I¯è?˜ª¸ïÈ[?ìymQú?Ü£¾ýǨü?ÔELÒøZ?ì¼6h0áY?�2£´»?Ѻ»:ZaB?âÀ/¼J}Ÿ÷¢?âæ5Tðbf?Ú†Á‘x?×B Œ !ü?ì!ô¨2µÏ?åÃÈ¢ É]?Ý‹�|„4‚?ØŸs2Í´È?Çízù€?Ñ5EûP�¦?ÖY¿¢ z¢?ïS’$ô¾?ãøÍÒwÂ6?ÑÞkï!—Þ?ãÒ~Ù÷?ä>ùD s?�Å]ÀÎ.À?âÌ5²{0?¶+!99â�?ìKAgq3%?ájZ™D?ÑÀ*)‹4x?ëÀI�÷?âZ“%U?âØ&ïpD?ãßýlªÚi?Íö/d„-l?ìçè(K ¬?âöᘕL-?á6E`Ïup?ËK ÷UÔ?Ç6ÝLx©4?¶É “Þ?œZáÖÂ`?Í—°üÜј?Íæó¦�?Þv¸l‹pn?ç»´rßFg?¼9NŪk€?é]¦XÕë?¿j¢%aL?ï©ÃM ±?ìò@øÚ�?Ì2Êó¬½ô?̰k0œût?Øóìß?ç17±‘ ®?æ]á®ÙŒ?ªÉ|Ÿj?ëžÜûœ†"?êCÆ<¾¶J?à5Pzžt?ëQß;Ѿ?åS•IÑL?Ö¡yf+Ø?Ô-·§*iÀ?æ©J{kþö?ã¬ÊIª:‚?Ü0"#ˆ?àÕ˜º®Ot?䦳ÕÅO??Í?—ÿ;T?ê›È¥ /0?æ1ð;�Í?¬†��\ Ð?ÌÐP�ãr?åž4Í×i?åÚœÌâ�ô?áû•�b?ኀÜâÕÛ?Ê¢@˜ ?ɱÿ„Èô?äºyZõ—?î¤.I½ìÆ?îÉÎ[<?ï¬`²({?í¨DÏç…~?Úã¦ð1¢?À�@Aï8?éé¿…=o?Ö¶7ñ>?Ùf-óE¤?Î?*ªj”?Ú6¼«ûÐ?æXŸ„¦Ó?åBbºü“?Žo ¨ˆ_€?Øl.áöäP?ãÒ:TjŽ?Ê”e¦¿óP?å—/ ö¹?Û಑öÆà?±é±~®X?Þ¤tW4†ž?̆µEœl?áY¹É½3c?בŠÁ©¡p?ÖÔ"~Fe?Ù£KÉ‹2?ßµðÔͽ¨?ÑŸË=†?ÝB&?Ð?¶«ÁbúV?ë¼| |^?ÖÓš¼v?åÉ-òb�C?â*yS‰ä?Õ»³¹xà ?èêA•H–'?Îr´nݦ4?Ç^NMÿ·è?µ sÀm8à?åäG.ÇJ}?Ý_¥£´é~?Ûo”ÝU»Ö?ÝÚÈÅê� ?ïÒÃïéÅ?´<äP<À?ê›Ö›ÿq™?éŸ9Š\ôg?ìHÚCÊÍ�?è@§*®?æz1ùâéW?̸Ó&}ˬ?ç軇&ñ!?âÃÛºý«`?’WaÄ�¡ ?ëqU±Š@?í�Mì-.?ŽCøÅÙµ€?ã“ËY¯ÄÇ?éþ‘.é:ÿ?éÉVÞ7U?Û´bQ)7Œ?Þ,±öÁŠ?ºY«r8'ø?âŸøÌÒ³ç?Ø�ÙRƒ­Œ?èÍk,ƒÍ?í•ÆÃì6£?Üú½]¥=?ch2ïê‚?ãÇ>‰oží?Ö}™Žçyê?è9ƒ¬›Á?è3÷„žX?îFÀ?Ãp?·»"Á¤ó ?ë„ã²7~]?¿N,2Y?¥àÚêW ?ÌZ�|‹Ol?ãrd3ò¸u?ÅqÖüW}˜?ÉÔUÀÇ…¬?éš°˜þ,ô?Í»¿’^º?âì÷-”8?é­à Ï)?ã?êg“rý?×+Ú<Ý®J?UÛÛvŠþ?ìã‘Âfó?ªt.BÐ?Æ‘F‰W?à]\Öj�J?ã#²“1g¨?ì°™£÷6Õ?îí>~ñ#?粌“A/?å-¿¬09?ç|§ó~?ÏQÿ²?ë¨gâúgÄ?ç…©ôÝÃä?ãØ¿ û¹õ?¦³�æ^�?Èó,®þ©è?ä[ÁóDü?àœ6þ×?ài*ÁôcM?ÛÇ‘mmëž?í„zsa˜?Û� (â¶?ê(ŒKEç,?ÓíA¿ç�¾?åB|¢�ÃÏ?éT@�˜Œ?Ù‚(³fÀ?Ì/ýÃoè?ëVϼ~Q?ã½V‰Üî?çÙÓ9€hÛ?§èŸÇIêð?Ç=.ÍÔ?ß�¢IfŠv?Ù“5¡ƒlà?ìΥ̕û ?é,3â|?ÝlÉm´Åø?¸žÃõˆ Ð?îzj4Þ£*?Àóï�å…?æ”Ì^¡¥?ç&N@«¯^?çS‚•êõ ?ê»ì'5Nñ?×Oðj÷^p?á¤q’qpc?ÎJrVM”?ל/ ¨v?è�l/—�g?ã2:ð€Lø?ìæ)Æ&ƺ?ØJ²Äl„?ÅD¤ `?ݳÑW@f?éâE4ë?â�ØaÖ?ë%™ç¥Ø(?ηÕB?àzŠüAB´?â|Dte¥?ÜŒ”²�Ž€?Á9¢(UCT?ìæÖ�ír?ÝÆIùß´î?¾­yr�Ø?Ì3×.†HP?ᬠ­�…�?ïÜÿ˜ûÑ?æq2€)÷?п åAr?ïUÓía™?íÉÅwvß?ì³òãƒr?ßYîPàbJ?vH)£OQ€?Ý ü³Â�,?âÃph+ö5?Í€º„Ǭ?á{Eøú+?ÞŠ©h¸ X?ÉÈ´nŒ?Üä º¢›Þ?Í»ä ¸?мi@�sB?Þ�Z©ø¢?íÆ¬ÐÁà?¯}JgG›`?ÓŠ,{Ö?×å‚Ès|ü?å}©¬?ÚPn«G/^?×:ìý±æ,?×Mߨj?ì–œ†­¶ú?è“5$-ѳ?ÕùïÁbæ?ÜeÃÕP ?Ò¶‘1õì$?ëÀ®ÁH?ÚE1¡€X?ëR|,ÆDè?Ä,ÄÅÌpœ?èšñ°I ?¸´…ü /¨?Ú�„À™v?î­3æT…?ë‡ÎƒJ˜?ì³öÐ^@Ê?å'Ü®å?ÓôZ�±ì?à�ÝèþŒ?ëʸd1X?À<øç t?×m9969f?ÄÝŠZ ˜?íipgœ@?”  ü³{à?ÝB…àÜz?äq®aà�{?à­üSeÖ5?ÍÙ3’`i˜?Ój‘±Ú?¬Z§Aö10?Õ”¡5q5¢?å0j2²k}?ÏÆ…ì–˜ì?Ò½¸Ñòä2?ÇsÙªTu¨?ÕözúK ?çÓÈö›W?£j{9C?é‡Í’Nr£?àYsûÄId?îìF@W‰)?ëÉØÑ ?á?=‘)L?ãÇä¡X?ʼ×fÖì°?樤ddo‡?Ç@xñþ È?ãž^‡yµ ?Ù)1ê�î?ÄÕ+(ìªÈ?ì”Z¯kÞ(?æ](9A݇?ê;n‡Æ©?ã‹‚óhðU?á$eå*?¤[F ¢°?Åuù:�%È?ÑUŽ?ž?›±þ€™ ?ÉO Ì•›¬?Òϸ/bS?Ë�“ÎFÈ(?»‚iÐxX?绩…Š ”?ÙAå£ d?ÌæŠKP>x?è|®+ͱ?ØëÉúÂ?ï �?ë­ zÀ«ü?æ)^.…—?¢ÌÊ|¾Û@?ı½·y}¤?³ïBÛÈ?á?Ðܨ"P?â�í·†(?ÓL*1¡.?ÓÎEµè,à?äŸëö›á?¼¥8³ºü@?àc^v}U¾?×° ÏÞ ¶?àorSŸ7p?¸ódJÊh?ßàŠ qF¨?êHv@�?ÏÔ�.ª¸°·T?ìÔ&õm?Лû¡²?—�à‘Š ?à �] 7]?ãó÷š˜€7?í~HM]˜)?ÃxÿߥJ”?ã¤Ä3s?A?Üj ‰9h?Ëã*Ñc?Ä!å x6?Þ£úοzÂ?æ¿Mù¾\?Çd„“½È?Ú†þ·(Ú?¹ZÆ÷+(?Ú|S˜ý`?ß$O B?ÑWþo¢¤â?Ć’Úß¡ä?àÂ~h¬½¯?í½j‡ÆN?ÙV9� ã^?¿Ã¯«ìT0?á¥ß©�¹˜?ä’–ÞCF?Åj²¥ÁØÐ?ã\Úm7Ï©?Ög‹Ð À?ÖßYõxT?×C¤±«ü¢?׊]’8?ÖU6JWór?ÙxEbmïê?ÔJâš"?é�ZVX?äšcéO?è‚F÷^ ?ÞÙ—Ì[.pÝÆ?îp¼$?à?Þù8:Ì?çQQ1)?í*þ‰I?æ×!ɹ?²÷žc¹Ö¨?Ú ,t°°?Ò Á#‡­(?ÐÈ?¾Ê»­¥ì?ìjÈ}†$?Þ¾’^?äÍéX.–?ïA—iTá?æÜ&$Þ-?Ó’¿á¤?Øâg¿ÛBØ?Õå"+í%0?펤ÿ^?ÍÃì%8Ü?Ö5ÅԦƆ?ÝÚ <™é¬?ì£ÃÕ D}?éýêÉpBK?Ö,$=ôn`?íµî ŸÜ?ж‡òÃN?åKä�†4?Û½®:• ?è¶a<? ¯‡$•ø?Îv÷?ê +¿DÔÄ?á�‰Mx7?ÕbKäã“*?â·´ ú`?®vJÊöØ?夠"ް?ëC|S‹‰;?·BZ[Ä?Ô†Ž¥…?ï9iü*�,?ã’·Zû§œ?ÃKN !nP?ÂÂ(Ý4?ƾš“\?âêJoc§?ª8ö%UÛ?×aÁÙš*?Ø.Ù«Yó$?áÍe¢üý?保Ù;Uü?íÐä¦6¥w?îÏÇj)ê?éÀ;\/7£?Ö¿ cáuÊ?äü²?ÈŒ”€?ÑËÍÆ~”?°RÉlZ0€?´8µJW¡?éçjGK•?ç5�²§Ê?¸'º¼78?äTÉÿºëK?êæ`s{·?ïNºÈ–r?¥u—Ã?!€?ܜٽÒ÷¶?ß&l»Eü?×7]A?Ì…ânp?×9‹¼?þ?Þ³j¨¼?Ù$ÍLwÑ”?é•–Uÿ ½?î®�r5×»?Ò˜NS³¹˜?Ö{êûs&Æ?Úš‰þ’?ï¬U9%Ý?ÔS†Û+8Ü?‚õ¯ýàƒ€?Ù�w„)?Â"MhÜü?ÇûÍgR±Ä?â¢[ñ3:�?–W@Û@?è� ´x²?Ú×5¡Ô¾†?ÓJ¹˜Íü?Úyë <2L?ê!|0ƒè?àÛ–ìR(ê?Ää¬òy§Ì? «ª¨&Aà?é_�Tˆ?ĬèvÿT?Ê)Êdìtl?åE*)?á£øÂWÝ®?ï�GÙ,<Ï?Ľ¦~òÉD?é_Ô¨DR?æðMh•* ?åùË!DÕ’?ïhµÙ–?ÞßÍ3h R?Ð'Hw¦‰&?è†kœ•Îe?íá1²I´Ð?Ð ñwŸf?èâvh˜¼N?í*—‡Ut?Æú ˆXP@?ì’¡.ÿÆc?éøÑS\É?Þé;r”H?ãëÑr¹œ?ÄfJ&àŸ(?ÝŸ"¼p ?Óâá«z½:?Ôfœû©?íÌŠÀŠš?Þ²Êã­ ôø`?ç<�oi°�?ܺÖX.?Ü™E¹ñÜ?ÅÈDã€\?ínž‹$ÑÛ?ì«séÅï?Ë+ÆRú�?ÉgÓ=Þ?èµ5ªß¬?áhgÚ5n?æ?YNòÍ?ãîÅ>@Æb?À©Ñª†œ?èspÉªÜ ?ÝIk”?ïû¾Áµàá?æ ’Ûm”?äÄ×6í?šIÌDWÝ?ï3šd»"/?ÅÕa©Êx?ã¨{+éîE?éõ¤‰=ìª?×  Ã¥+¦?ÚÍVÞwÊ?Çj8ØL?è­Ý�‘QŸ?í«Åá=?·Àð÷bíØ?åÏZ¢ÿ ?Ë—„HC@?îcS4ª;å?Ú çsŠÈâ?è|$ER0a?â\¤£k!×?íµPEŠ(•?êhˆÞ´w?Þ î~YÔ?{A�-ú€?ï§uAV?Ȥòªˆ¤?å ¯¼š?Œ¡ãjÞê?åÂÊÖ­Œ²?æRe{R�?äædš¿>0?äc$¤[Ù?áì©+‹2?ÒšwýEWf?æãÞM¬T™?éÅÅ\?æÆeŽíù‘?ê#ÿØ•9Û?ÊêµÖtð°?Ƀ4jõ88?ˤ6ûŒ 4?×qãïÎõ´?è¤ñÊN´‰?Ã&‘ëìÉh?ȃ'(µÚ·?ÜGáÁ‰",?àpƧñ(?ÊùÅJNx?èDƒ0ô¾G?â.é× ot?Ö¥éR@ Ä?ÊÝfËP8?êN_ KŠ?ŠWšAÊÑ€?ß*÷ %§^?ÆÛ°czvÀ?ã³­ëâ1Õ?³eS|[¸?ÊÄ6 g›À?á¤ÇÂ�?îjmiAh±?Ñz—ù!$?é’-¤ßþl?¶ÝO)hþ?íF1– 8e?ï^xÈw7?ëDþÍæ}?Ô;Òg|t?ÕaaÚíßš?êÕþž‡Ï÷?í†tyvGF?ä•v-­³s?²Ä'‚'Òp?ÜŸU¼<.?ç"¾ûS­î?ÑÈq¿èú?Ó¡Sß9Š?ÇI"ƒ “Ø?Ø¿ÞSÄåè>?Ù  w?È�“Þ~qœ?ãù¥¬bÞ¿?סøð;tT?î¶··q??áþ¶GU°?Ï]+s�eØ?ÍJ”¹MÁ$?í^�üÐÛG?·fp[ÙÍ�?Ñâ¥üÐ"?ÒêÆaþô?×rÝÅì?ÈŒÁ}å}P?ÝðÊ“1³¾?ɧJþ�Àì?¶²°œ4¹X?±÷ËÒîmÐ?·$€BÏß�?ä1 GK?¤E͈<6P?1§ÃÀ6€?ϲ+óåÐ?â¥æeS?ãþ@«ÌÛt?¦M�g\{À?é]Ö7÷•?¾ÈŸïÇq8?îÀ^;î=Ê?çî@ÑbT?ä G�YÄ?ÓGEíPÒ>?Ì­G7·Ó ?â¼¥6ñÄ?Úôć�±4?î �è+õ?ÜâwÙú´?¿Z Ù‚8?Ýä�xØæ?àÃ{ÔÊ?äõwR±K?ä•|ž…–Ä?é¤âaƒ§ ?én¥<³_D?âVå+ÓÿÄ?Ï�IÚ&mL?ã‡ÔmF"Ö?ïÙ©.ÔÂ?Кà7A°?ÌÒ~ÊG ?åçÚö?ç¥/ÇHP?Òý� #gº?¤’ä0u{`?éOórØØ?æykî·?éÜHž|œx?è×%OÊP?Òáµ²æÌ?ÛØË–âÊÐ?í ícábl?ÈÆø0Üž0?Âߨú£9?ånMQ M?:=ÊùÓx?ßöÛùzi?â  ã+—?éã%ÿ”9Ù?Ó³€Nò?Ûö´þƒŒä?æl ¶Ló?èÍK¯e?âr·7hÄ?á.››°;?±l�Õgø?é˜"ÃÈ?ë*´‡+r?Êú°(È?Ú¤ÅG{Â?Æó[�eÕ ?¸øBÚÏ(?ДV�xd?Ë^%­fÐ0?ëð–ÅêRš?îo‚ŠÑÇU?Çm^rh´?ظØðhr?ï l„’,?àáB¿±?é Üë·©?í‡læ°f-?ãÐf ¦ ’?ÈŒºõÐø?æãu ¬?åŒTQsZò?ž[<Ä ?æˆÑ¸¿¥I?Þn›„ûH6?îýcšjC?êkÛ¤T¡Ÿ?ï Nëað?ØkÛTó®0?çÏùniæ?ï-x3¯¾}?ç?Ç]ä‡?ÆìX—[†Ð?íÆš?Ú†+h{b?åÍÝûÁ[R?–øœªD˜?ãÔÐ÷J§?çjeÙÖz;?árèÍ�(?ÉTýêÖý„?àWÞ¤&#œ?ȉB§•­L?ärÈ ?ÞI­ã†Ó?Ï_ø´¸ÿ¼?ጳŸ2·Ó?ÔXG5 >?ÐîLÍöæ|?¢ï’Lû¸À?Ò’ØJÂp²?Ÿ˜'>®Š@?ìâ}â!¯?ÜëÑlÕV?ìiDö#_—? ؇h?Åoi Gùô?ÔÁü—d€?s¥ì­ù€?ìY᯻?ÙLP&v~?í»éá¶ÍK?éÞ¸l¨6 ?ÚáC®Ûh?áÓaüñ~ú?Ü•ùX\Úˆ?Ó«>áRª?Äsý?R8?àwtj4 û?ì8q,üüÄ?î/'i3o£�g?ÅWì Ô?¹DË¡¤w8?×€âî!í†?âÖz˜%ˆÒ?âC6Ø42?Ûh�gÔ}â?ãÔuæt’d?äê`Á.•?Á�ç”í¼p?ã¦yî9Á;?ä9Ö~wMš?Ý�xèÅå&?¾â—OP€?â~ҢĮ?â¤m;¾?ãïˆÁFî?Ê~>˜·T?æ ÈOä³?àyŒ³sGƒ?ÅÓgã#�˜?ïò³«­y?¸?®ˆ(?²Üœ1`ch?ë•J¥Gö?ËÓ9ÔV4P?Ñt‹>"ê?îË$T²À„?ç^¤m�„`?榉L´(#?ꊂ ¥hs?³“63—X?ïpVûÊæX?ïÿ÷À;y1?â?ÄÑÐëß?âE§–°à?àZé¿j[?ÀºƒàÀ8?àS/±?:?¹×Õ`?y]¨ñØÛ€?ꜩ˜ˆ‰½?ÕöÂ*û‹î?ÎåÛè?,?ßÚ\y�Íf?åz�‰ýÛ9?çv«z†Bƒ?͉sž²¨?Ú­Q…ˆŸn?ä„7íùm?Ö\ˆPT?àk̶}?áIª*jŽ?çÀæD+?æø†ð ]?°‹<ìèÛ?Ûij2¨|?äˆÄäD7¿?åY[¤t:P?Êf÷Wœü?Á²òèZ�?Ä—^&wÌx?å¢É^GÍ?Ú+…{@.~?éÌ‹Ü-Ø?éOßÈQ«?ÐéQ!kl‚?ìÛ u7…?Õv´6I/V?³D¹¯Kް?í½.?ë‰A„5?à�ͧüá´?Õyõ�ºFø?Á�6Òýü?å)r báÚ?Ùù¡ÃŽ?Î_9!ût?Êìÿ‚d?Ò®� %*?™iþílûà?Õ¥ï 6?Ϫ¦[g”?漇¨½Ž&?é$Z`?ád|7ó†º?Ô T&~«À?¹z7k"H?ººjúšð?×Ìx=G²Ê?çø é£?Ñå–N©§²?°ûuŠº?ìõsN‚]?wÚÍ;‡m€?±É!c�?éSÄWÚ‹?®qG–%A@?ÂR0צˆd?åqÎd0*?èvU‘wÛÂ?Ý ¢…0T?á�ÜgÄï?ï›c~­6J?ÕüÝ£7ô?ÓÅçMÔå"?ïBo ¸IL?îÝ\1é6?ËVÜ|{¼?Ì„ìÄ?Üe¹'ßx?èé —;$?Û'ÑÓ�2Ú?µ½kŒÅP?ÔÐÙûØê?î„Ø�?³O�)` ?í¿¤…ãL?à�¯ãŽœy?é?ù‚l�ê?Ó�7)�?˺{©_�?äÒ xÁ¡?ÕTÁR*J\?µCx“¨È?èF<Á‚I«?â ¿)äÄ9?íµ-c ©?ÓLBåƒ^?ä|³CÝåå?Ðþù––"?ì›È½~Jã?À³íš¨ñ¬?íuoMùËÖ?Îój¶¦4€?è5=»FWœ?áü×÷Í: ?Ô~R‰˜»ì?Ó‘ãlB¸?Ó˜ôOj?ìîNý]à;?äIll®½{?×Ûc³î88?ë/š˜å¡(?àT¬T_ ?Ùéºr„ØÎ?ÈÛÂ1WCP?åÁ�7‡©M?ìB › "?‡_ãr0\À?Õ¥»ìKú?꿾8?Ú^(kÇæ?ìέµKÇU?ã ±×?ÄDþÈ0�¼?ÅÞëbÔÈ?åU›èª0Õ?Éq�¸|?Ú/b*–d0?ézL÷3¶T?¸I’Òª¨?ìñ¯Ä¿»[?áè–V¤ç?ОŒÌ¬Ì?Á¢6HN?×Ö´z'>æ?ë½á¤bx?ÁŸ'ýªT?îw=ÙË’Ý?Þ‚"+I ?å ‹Ë_?Ã}»+4Œ?ä _F[Ï9?ºÉÌÕ?Ü(?æÛÎogï?ዎ­áh?×°Tt U?Ï\ßåŸÐ?Õ1®”KÄ(?Þ Þj“fd?ìÑÎù‡?ÐÄÐøWÁŒ?ì•ˬ­Û?ëEä?5?â˜I?Ä¢> kßÈ?·õħ֋(?äY3n=03?Ö5b³X$F?Äë®ì�×?è8ñ]‚?ȈwÿC(?êto€d´c?ég§«C?ÄÞu¡Ë0?èyK-øl¡?â— #Yv?àŽ-a?äÙtþ#x°?êÒ&˜«­c?Ö+eåÅZ?çmÓr?Òäʇ'Š ?äÅJæ-¤¿?â^yÐP,=?Òa–š†Izâ?ኒXC,?Î�®¼¢ì?ãõÆ"â*?ïM_äìÕ±?ë *ü“`›?É$õy|X?ãï\3 ¤“?án' ¤r‡?å»/`ä?ë5€’OÅ?é �¿)]?àžD—h•�?èŸÖdqnÝ?éçõýYÜ ?ìi% ”/_?Ú08L…Þ,? AÑD¿´?ß/ø)£Ê?Ñp¼C”r?ãRîñuÿ?ê‚Àå�Þ?á²WÈ”:ç?á2&WKÁ�?Ú�büYDæ?àj*à$?éÉÞ„Öi?ÈŽDOˉ¨?èý#‚Š|)?ÝèhãÂ?âùaÁí ?ÊVÀh�?ÑSãîf?ÂD‹?é¼²šÆCh?ïwe?î ÆÅÒ–p?’&¯ÿÝ`?Õ§ôê?ÎP�á�4?é/…Ùë?Ñ:†ÙÓ� ?éç[DÛSà?Гºa?ý ¸ygÌ?ã¨'%à6?ägþE ‹±?ê¨ðh¤êŽ?ßë\�âpp?ä^WŽæP—?âþ\Þ©ºR?çêÌ º?ïx„[l  ?›�HNÇ ?ÛͦhÌ?Ïö¹+pîü?ï£Ììõ¹?Ó…K^ò÷?ã½@Zl<ê?åâÛãT5M?Ùx Öí~x?׆¬ôÑ |?áVÍr´?á±|iú©?Ö=�ûÔ?Ö�ÎõY†n?§ˆ:a“Pð?èº6¸!+V?æCºf+w=?éw%ŠIé?èhRžPÊ@?í)"©ÆóÜ?×ÀלÛÉ?á Z'W|ï?Ö@ÚOÓ.,?ª0òùpô`?æ'¯QK?ç|àÝ™ù?á³|Þ™?ÄhMÈÁÔ?ãQr�é 5?À£2ù3¨?±}zZ£è�?ä45î¡Ý?çOD3ÁÝ$?ás=%?ä�¥ïTÆ?ìZ2ÿó–?ìvrÃéÂá?Û¡ü˜lò�?Ê€”$?èlo 7~?ïø‡J°_?Äç¸ ¿’¨?´b<ǸX?íìÒ~,5ª?¸ˆâ6§a?â7ºšÒ?Ñ#¡EJž?êíP«Ä?ÝèSœà B?äÐ�š=¹¨?Ö‹|+ÒÐÞ?íMKÒ44?î€LÐ?r´ÙhIì€?ì/€YìéÓ?·™x§Âh?à ¢D[Hõ?ãòãê91?é |u1TÃ?ét&…k7¶?Ö$ç«)h~?ï万¡?ÉËØ$Ÿ?ïh_ÆxÌÉ?¼Gyb¾%`?éQŽ´ŸþL?ï’ç —ÆÕ?ån ‹8¢?ØFb‹É ?è Ç¥kšF?Õ„ÞIMj?ê ÐjSIÀ?á+³0½E ?ïêY™ìß?í…[Ûµ°ë?§bnSa]€?âðʰšLã?ê›ÆßgÒG?èn=k®©Ü?ÔL×Z¤Ëž?îë³j÷¶?Ù‚‹è_Úê?àz× ´?²;ÕÖüH?¬Ç&ÌÀ?Ø…ý{¨?èê;1|Ã?Ò o@Ý4?Ñ«ÍÁ,‹ô?ÔñLõZÌ„?Ûorv«:H?àš¡G�`?ëÊG=@Ç?ÙáƒÞÕÍ~?ïå{e³@”?ÐѸSåŸ>?ÆœZ«m=L?Ù2}ß<¼?á×jZ—‡î?Ö^^¢IÌ?ßÉé×I?예�Po?Õc)ÆsÖ?ê ‘Ž£Æ?¥ãõИ0?ê—ÛIãA6?í5ÎþÂë?ëp@ -LŸ?¶‡¨ùcÜ ?ÑeŸÃ²ÑD?ïå;mÌ?á¯í Þà0?ê›SUÍ ³?Ðö×–! V?Ú�MÚáˆì?á®…y XK?âÕ `í o?ÜÕ¿¡VÀ?áËNÇ-¢?ß“�B?é9M¸xoS?m-’…*?Ðß*ëp?ÈiG�mâ¬?îÚØ·ð?ßôì Üo(?Ò ñ ±@?ÔZl¡Ê’?Ýâ áZ?åÌÓ¨#³?ÈÇt µ~”?Ò•ÿ`{Œ?Î #M®s?ëïf¬ ?³_° ã•`?ä°Ø½)$Å?Æ�[†$mÔ?â|!ëuT¬?Ö ½b…Ò¾?Ùµ*æXg?ëøi ]Þ?±oŒ€Ú-0?Õ‘X£ÞÅ>?Ð JûY ,?è õ�ÍÖ…?ÚH ¶.^¼?Ò±J3]?ëè¬nÍ8?çxDT‹_o?ßÏÖšyÒ ?Þ‰ÙgÿP?ï‡ÀÌCà¯?â¸Ü?Iâ½?áduíÊ@i?íDüL•0?í\õ•ý?î]â ÁÕØ?æò¹DVˆ?¾ëèN¨?ìËÄ<¹å?ÖWã5N¾Ð?Ëè P¹p?ã¹H20¬?ì*7W�?ë$XÆÕH­?ì`MOå; ?îÉõ*N¾?ã<·¦Z]?ì±t×û{ý?çD˜#ü$?ìü#ÁFI?뤃�"Ì¢?ѧô[�ؼ?ÈΣ ÚR”?í“�`zÎ�?Ñ0m@¯6?êÔ"jäö?Ä}èaªÍ€?ämÿ'~^?ì½—D¿œÕ?i5ðØË?­Þ5¸[À?½Èéf ã0?Ø^Z-h?pª‹£eQ€?Þ3:W�KF?�6À1^@?ì¬_Kš?æøY½w†ƒ?㕹ءvç?ì-”°!á?ävTBjõ?U¢ß{?çó/ÿan;?¯°95÷ù�?¹/£ñ¼#(?àÄëï�ŠÜ?ävG@‹Øà?çÁ¡ÌâÛ?ÑÀÀ£Þè?ÐÉŸ?W3˜?áÀ©ìÙnÒ?íì‘Ï÷ú?ˬz©L?Ó®9�&Ž?æ+32.çÄ?ÔµrÓð{ü?—V5ÚÀ?× Ajr?Ó?ë5d²h?èèê¼ií?Ó: “B¶?îεa§ÉŠ?à^̦VqY?Í8k[Ÿx?㮈ä1«Ù?ã�S©µÈ?å—W!8ž¥?íÚ!ÿÈ#/?Õ } ÇŠ~?ÙÑ¢�?åã(&ü®¥?Ê�›¾?Ç´üüýi|?Ž8º4?­_ºô„€?¤]Œ³áø`?èÕ7:<=ý?âAhãÈsÒ?ÒosEŽ?íXôÎöôs?ÀÅ üµòX?ܼœ8è?åjµìÒ�a?£¹åýÿ) ?Øà¼û'Qº?écýr"£?¸®E¬²Ð?îgW°ÓBÇ?Ñ®(Úª¶n?åSÔÜ�¼³?ÝÏCzÉÐ?à á�š¡?ï�ÉÿQVa?‰35¢%T€?éõÂû,à‘?å.3¿E~x?í鬛?·+Õ~ÈEø?튅&hà ?â` gkìM?¿ò¾‰Ð?ÒΉò¯RN?¶Nõ*.¨?ä»g™ƒ?ëT”RðÃÑ?r¨O?阔ý’ E?èO@~æ“?æ9q:å-?ëÓ&º&Y?ÃWéûm®p?æiÙ}«•?㸠SÝÂ?Ô Öt ›¶?ÅýŠäMú„?á¨Gß@?¾Bjî�Œ˜?Òÿ�]V‘X?¶ä¤êÎfè?émL!Ò¥’?Ô•¹3—.?ÃUDùv°à?È.ÜôZ”?Ø¥²î?е01Úâb?ï4³®\¯?Ë׬X]á|?ÒÙç'n?åî‰T†U±?ãËfM,È]?æ™ÓÛ4®¨?Ò¢jaqov?é~š®™G?‡U½èò@?Í…P®ÿA`?ä˲Jõ¨Ú?ذv4d¯*?ã=ÆeO_?ãvÍÛ&ˆ[?Àæoˆkˆ?ï¼4#h?æôMŽAÍ?Á‹ºô—l´?î°ÿa]_,?î@КÐf?ÒøŸÁØ3 ?Æ!íOpð?äx’¦÷þ?ïsbî¾?ã èëÖ©?é3!¹{ÿ?æZ†®fò?å²�„Ñ?äðÈ¡¾YÅ?î#§Ö ©©?ÏUgoäLt?ädŽ™ð à?ÄëC •¡ ?ëÍo­+Ä%?Õvÿþ)ÎÀ?í}_þÖùF?Þ–¬êލ~?Ú g ‚¢?ç?V3Ãó%?à?=¸bËé?háP²Z^?¡TUŒTPà?†z~bûªÀ?ê4ˆÆÞ´?ËŽj1¤?®Ñÿ½êà?Ò¾¯8ûÒö?ê–ªrOpƒ?ÅŸàœ^jÐ?ë0»y°l{?êQjq°,¨?î…_ѶúÃ?íØ�œsÓ€?î¿M�à,k?Ø 4q¬?íBØ-tÍõ?Á&¢0çr?â|‘3“—?Øk7Wk¹?ë³·ÿ#“?éOöªÞU?Ú’|?Z0?íÅ4è7@Ñ?΄úyo0?·À�§H?௅i,£?̹Wþ‹©?ç¬HøÖWŸ?åèzd B?Ù¢â2 o?΋_q=¨?ÂâN=Rl@?P7²¡"Ú?íÝ:N=Ìp?@Zæ�.¸?äš|§í–W?ÐZÕpx4?ª¸EsV/ ?ïÕÿònÐ’?Ð?lSø¿¸?èë®=+µ?Û!jÄQ,?ËŒ,ÝMÒX?Ç­æ˜bX?å© ñ¸l@?¸*ˆ·Áµx?é®_>"õS?ët7¹¥|m?Þq÷�I ~?Ù�Þ?M²B?æÏìQùj?æáe¤ô×Ñ?LÚ÷ß:x?ÍC�î$?ç\°®dá?ì’v'?ëonhªÑ^?ØäGT¸ö?Üê£÷¢?Ò‘+ðÚ‚?zÕǸµ�?ç ˜Ç›Z˜?ï.ÐÖÍ?á5(L¿åÎ?ätg?Ñ&G[N£ô?Ê)T|Þx?ÏÏ ûmZ ?»ÅËFOê ?×ôóωjÞ?Û�hho`?ä&|¡ûH ?±Îù‰x?Ø„–"Úź?È>öM~O@?Ø n ¾4‚?ãIa3Ôsç?ïSM8ê?ÌU‹Ê†Ql?áh½ªx�Ì?ïÄ›´B �?êI4ÔCˆG?íc+þXg?×”Ú„f‘œ?Ö¯•fÄä?â6à» ˆØ?à!& y]?æùõ5è?íL–èÉf?å¼¹b7'?Í)ÃBü¤?ìÔÛâáØÿ?ÐË�—0[p?æ&•Û9‡?Ó,âå…Ò‚?ÂðRÖÑP?å\ÑOè$?×K² bö?Ü£ÉgÞ¾?ç;ĆÇ�?ØÑ‘:½ Æ?ìòMKÅ?À˜¬�Xp?å'´±?ê˜e;23?èØˆMÇñþ?à;pjÞP?èݦI$^v?Ä·Ö[š¸?îø«%(pS?Ó�øÈ§L’?ãï#ŸÎ7?îx@{ž ?ë²KiÕc?ÍÝÒ(Rz´?°FzÅH?ê€,ð .%?×�ãÈĬ?É]d•Þ0?Ö¯bõÌ?ØB8eV‰L?¸è,[éû�?鮥¡ZÃÉ?Ù' dé´?æ.äÐõáØ?é뙥�]?ë¤(ù™Ï“?âá?Ã4 Þ?ß‹iÉÀ7‚?á�Äå?ç&‰?ªC‹?ÞŽ<ÇàÊ?à§ê*£±@?³ÈOŠS¨?ÐÆÕ¥å­$?ØwetÓkÜ?å`îØªMõ?ÂILms­P?Õ|•ŸÅ ?Ánn®ñd?Ë"Éöã¼?á»tS;ù?Ý4Ÿe›„?é"¦ðŸ2?•Èóyb| ?íà±^zß?ã[¦‘Ðg»?Ó0 ËŒÒ?ïâwÊ)Ÿ?èÜL†/ÿ8?ãLAàÚÙÿ?í69IÙîÚ?ﱋ 0Y?Њj�Q*”?íÝ4å@‰?ç1v&€ÒÇ?Òf˜¨^ê?è°6SCˆ?æÊiᄽ?î£>=ék?äb±«c¶Z?é`8'þÖ†?ìu¸�+ÄÓ?æ]ãFW#?ºŽö�šÀ?ï¯tAáq?îÄ·hGxÐ?æKG«‘¢?Úi(õùš?Ö ÝG)F?äÔ¿ïi»?ßLõ´2sR?ëgnIT& ?èú¥T·O�?µPî¼7Ñ@?ÆwÝ ÿ4?Ç0¿¥J?î^%j?VP?ÅùÆ,¬p?å§Ë2¶9}?æÿuZJñ–?ê& Ê‹Rï?膬3]bl?é£Õ¯mÞ?É>$lrÌ?íÎÇy­?æ��{Úr?ç<êùXVæ?îžv žö?åL¡f¦Æ¼?Õ¶‹©ˆ?ïÚ„½ÂC?Ȩã6h?ã÷ÍB\?Ø2eUõ’Ì?Ý@íåŽ?ߘÑÊ'8Ú?Á^ñ2ˆ·?Ùå'¤óµÆ?ï¡©º²{L?½Vö‘¢X?çÒM"ëÑ3?îømmY?ïÙ#G†�?¯Ú” 9à?Á¢l¢a€¤?ß��ÌÄ·?Óâè>ðZÐ?å5G_DüÊ?훿lô3é?ÆÊðLɺ@?äq`Hjõó?å9»ìþl×?éd9Ïß,?ů‹Gbü?î̸¯Ö?¶€ïÚ•�?êó¾XuÏ ?ê¯|}56=?íxdˆ"?¶,›¹@´?Érl#y9Ø?ìH'͘A?ìI;ˆt ±?æ‰@p%�Ä?ÛéÀ~ Ä?åeF¦ f?Ü¡Âs-.?åDæó;øc?çr}ĽE?ãì2l´Ë?Éø.:3$Ø?ìd'Ý/ ´?‚P{Äì€?ìù@¤8h?ѹGÜSn?×Ñõôx.?¬ÙB` P?æÊý½º?è¦~ýVâ?àÝÇN~?ÒÐá/â?Õ‡}Êê?ߦñËÿò€?ÊóM˜?åmh”Š–?Õ÷˜Ið?áw!„«Ç?ÛÃ/,j%&?ïAm :k?´¯x x?ƒ‰N„a?Þy„¹¼Õ–?ÔS&Ö…0?ìµOK| ®?äJbòKð?°¢°÷/T ?Ù:áóÍ Ø?áûŒðÀ%ý?îÈC»ËœÉ?Ü–ù‰:´"?è3¼0�?Ú÷È*Ö7ä?À.X˃È?äð¥[˜Å?îå#�gÓ?ÖXC{�Õ˜?èeÄrBu?̤´Gž„?íFð`qñ?Ï„_³¦?è¢ë¸]‘2?çâ¯À¿o~?áùøSo†¾?Ó* ÐÀ?Í/Ö‹=›¸?î‡ûü˜…Ô?‹î8Ð??²òˆµ–Àˆ?å¾Âèzä¬?ÖjëOý}H?Î.z§?ï,ùQVD÷?ãÞhß?ÕßmŸïªL?Ó2±šÍ$?Ùa½8?É d(©�È?ïÉ–Þ™«Ý?âJ€çÃQ?Ö§½fÁ–?ÙîÅÖ©R?¢Nnþ �?s×C p€?ã_'…A?èÓžgkØ?Þýoü�*@?ëk}ð‰µ?ï%Z%Áa+?±™« ÷�?ׄ[},Ê?Ø yYÐb?Ú†ùÏgè¦?ÆÚiùd|?çýÛÞu¸?ï’\ݬ®?ÍŽ”`¾)Œ?Ý_|R?á $z´ã?¨!ˆ¬æå°?ÖìÞ€û¦?Ý S:À´?؉)eª?Ý¢¹„y.È?èé¸Éž§û?ÎŒûø ?ëp÷.&w?プ­[$?߀à*1;Ð?ÍÓðb< ?눫ˆ8¯?⇻«„?Ür+>/Ò?Ñ9Tªì* ?íÂ4‰œ?ÔDfh™>*?Ü2BÊŽv?åݤ³”N¦?ëÐ>ÀE?êŠÎZ(®4?ÍsPwª ð?ÏÏÜ$=b?å#ág® ?ÂÒö Rñ8?ÎÀŽ)fŸÜ?ë>¡ Rý?Æ*L ~ Ž�¬?î¦:‚³?º›Q3G8?»Ù»Î{¤ ?ì¸v•?îGÁÁ-M¢?îÉZ²éÆ?¸dKÆŠRÐ?ÞIðw`?Ô€O3ÀtÖ?íèÕ%ÊPð?ëŽv`½ë?ßWÍÎÏÞ&?ÊÁºc*8?å¼´yï˜?ჰÚnMá?Õ žÚÖ ?á�0H��Ö?íÙñƒZpP?Ë+sîçÖP?ÐbŸóÐPÀ?äªÊg‰>E?Úyy’c˜¤?åOuâ]?ãR«�yk?È~H*[MÈ?Ñ�‡˜ƒŒ?áE:Ò‰¦M?æG+�üé6?ÛóÎQ ?Ê®hTaÙP?㈎_"E?ÆS¾�&Ð?àƒ®��Zá?Ý1®îD*”?åbõ T%??Óù¿;&?àñù«že.?ë!ÎÌýðÈ?Ö *¯ýÚ?á«®¨²Uv?Æé©Šhd?á+Ę—.˜?í\1 ,Ó?Õ®éY�Ú?Ò7º¹¨³¸?æÌS•ÿȈ?ÕÙ‰óTæ"?ßšéÛfm¤?ì5â°¾?°¤’jÁh?æ^ºÜŽÌS?·ºZ�Ü ?ÂZÉ „$?å ÓXv2é?æBAšm¦:?ë-’p8/?ÞŽ±é:¼?Î.üÜì €?åÇFŸ!$>?ç`œQÚ?΃¢o÷÷„?Ó-žÐø?íuA�`Óè?ç�?g4?ãîÇ·Ø?Æž¥Ë®uØ?ï$/Xà ‰?Ý|ú®ñ2X?íh¶\c5Ù?иs’K,?ÚÚâÞ â?ÐM«iå~Ö?×ôø¶?ÓCÓ]ìh?ã’âµh¬?ïötŠt«ö?ЗÊ*Øòž?í=ÛQ>"�?ë¤ß=Bß?îWëÏX†??íHPwÜï?¡ksÿVCà?Åpp?¼BÄ?ÆQܵdeL?­ î4rÀ?ãp­Fÿ?êÚô]¸²¼?¶­äý©x?ìÆâ«ŒM%?ºNÛ ?Ø5&�1G?ÑZ)¯Zê?ÍF€mC?Ùãï�S”?ìè&ß?ê1%ˆ½‹?éÚ-Kͽ?à>õÌ?Û=— ƒ†?èa˜=™~?ëeEÈBdJ?àËÙ'©:?ì3tà÷· ?íœH²3?î¤ØkÚJ…?ä‰>”ü© ?Óö¡OøzÆ?ë@ø3¹0?ߢZ䋺?íæDi:‹Œ?Ú<®Zu"?ÖlrnÆÍŽ?ÌÂþ­@ø?åC§ –û?è­K!¦u>?àÕ¾�»?× Dó¡Ax?Ó³~‚ú®?Þ\àâÕŠÖ?Üõ¹âA¨?Ð,ß>ô-j?¹¡@$®g°?î…ôqaj=?¯À^_µà?í?ˆÇrâ?Ø…`öïä¨?äIj&õÜ?âxžuèW?ìÿKÒÚ.?ã†%9¶-?åwñô‘·a?Ò‘AÀ‚š?áNxõá9?Ìqê_³¼?¾ìþå{Tˆ?äN˜ Xõo?¹ñPj€U°?˰Ì+a2à?Ö5׃°„?¼Á„Œh°?}ý„ÏNÁ?°»Ì4pp?è/ÒJ*S?ãnUq§ Æ?àOãp’k?áqߴä?áA_ ¼¢Y?é]q9¨¥ß?ál^ßÈ�?ÕáÞQ2®?å¨A1åUˆ?‘äˆÒ¸À?Âðèß^ d?Áæ®T¨°?Õûk"K2?îCXÊÿ„?ã›Gó\�ž?Ç¿Á±Œ^t?ØÀ6”?ØûVwoÔ?än(dòŒ?ìÊc.‚’�?ç?5žÀŒž?èãc‰a¥Þ?Åyò~S`P?ç]·Þ½£?êyGš¶}’?ä &%?éÉ`§%£?îäbdõÕ?ÉÄ`£¶„?Ñxο?å£b´cîP?ÝÆ 6T ¬?Úý@·½ó?æ)2Foņ?èõ~jÒòÞ?ÙvÝ8G°?ä6`�v¿?靈~¬ƒ?èj,Y‰Ò�?Étn¶äá\?ï«í]†Ú?äBðláâó?²Ð~-Óh?Ûgƒí��"?ジ(u”ø?½™Ìr7¸?ÓÁüí×F?ؙдD:?Äâ"5‡?í¼½bˆòð?å›Ryq[?äÝ>ö(v£?ål…a3�?Ó»²µé€?Ýõ�a„œ?×(eúﻺ?êë&.??ì?µ&P‹˜×¨?æå—Ë=ÏÉ?Øt 7'¶@?ß�™¹à?ख—‰?¼—¤ê #?ÞýY@óÂ?êº÷ã~•E?ã xν٪?ï‹åÐÓ@|?ÓÛTy)C&?ز©tÖAj?ÏÈš&¾ à?æ’›FÅ»?åçú•(Ì-?æ¸4åP€Ú?êKf½‘Â?ì Dý”Ö?ëÁ¾f; ¹?ã{o�É7h?ëOZÌ–¥?Å2åÁ©L\?ë vš$V?ì¿Á�Nÿm?è Z`oR?Ý¿©`Æ?ÖÃðö¾?¡æe"œ”à?Ñ�¬V­Õ$?Òº]ˆâmZ?Ô ¹¬6ÃP?ÓÁg ¸â8?ÅŸlUó¿0?à=Ñã|ýb?á�¿9ÉM_?éÿb_»»ì?éI??ݸŽÓø¬?äVk¥³ÉÎ?ÕÍpeÓц?å¹²ãC³?åX†µ¦?ÕÄ}B/Ì€?ãús-?"?Ý&aÙ75P?Ôú�n¢$\?åÖ 0µ?ê2© Î: ?è�î*PS�?à]–ffÅI?ãH±LÇu4?Û$2æ,Oô?ÔšêY¦{?ì Ä d§?ÑŒôGHPð?ࣨ08Ä?è`IrK9œ?çEb¤`‡?ÂÉpÝí\?ÛÇ+®%ÙÐ?帠Þw±á?â˜ÿ®Îd?ׇ!:ù ;Þ?â\8IJå?àïÿÍoú7?ÐÌKì¢?åe°èì?ÕÌí[.Ö?¤wEb&³ ?È|¦ý$ÏŒ?æÞ¼æqT|?äw÷@Ñ?çƒ#ýÚ2Ä?íRÁµÖX?é’ŠÌX°?ê矣ì8ú?ïâ²5Ì?Ü‘Gy‹&¸?ãÖ°Z ë­?äÌÛÿÉ ¶?ì3#Ô‘4þ?í¯Ž?¬°ê?ï8¦z`³¡?ÚëA6=âx?«–á<½âà?Ǧv7@ó”?Øl:Pê‚?èrT�QÖ?í=k©òÃ?çj©Wœ2?Èâø;.€ ?åÈE ±ž?Þ#¬Î´Hr?Æp HI±´?ï6 ZÛd?ÝÀ6ÆÄ¬?å—ÍOØ‚?º€àYi ?ÃzýF8øÀ?á²/Uç¶A?ÊdK­ ì?Ë.°«,@?å×—ÒÇX‡?ãHþ€?š?éܓק›—?Û¸¤ ‹6?Û”^­Œ\?¸I…$²?һׯÈ?ØM#yËL?ï’¯ðà¸?ÛNà¦XëÈ?ê“ñÀiÙ?ÕFýmëƒ.?·ÅÓ¬‰íp?ÕáÏ,¼Ô?â÷Åd?òû?ÏÔ¸ÑxŒÞ<¨g2?Ö¯x…êŽê?Í(ewv˜?î»nUýO?îqsˆ;%Ô?ÉOùåWÀ€?ê7r9FŽï?ΓyÅ–Wœ?éè«ÕÜl±?ܳ¨"¬_\?Æ‘©ñ@?ãWfõ¹oø?íÇf’,˜~?å�?ÿqÔ^?îøð¶ZØ?×�c-.¾ò?Îm¯×?éz(^× ?�ÚçsÉ  ?ìð¡]¥?î–#˜žØ ?ï/’8§su?á}~7¤ ?èâü?jú?�6äKIa€?Ùö\´óò?»W’ &†0?é¹±Èäz‰?Ø[„nѬ?Û?NÚÒ ?íÉ\V7øp?ÚÍËD~Æ?ÔrâÍôUh?ݺ ›$?é©P™À¹ú?ët;ø�–ý?ãƒ>�¢¼S?íx²�|Æt?ß÷Q`ؼ?Ÿ¤Uß•�À?’©sdòΠ?æà4ÄrÜí?àŸª%¢?ìUÁr„×G?ÕQ¦²Æ5´?É·ù¿Éùx?È>‰ò„lD?¸½'ónù�?¢‹n?¤Nó?Õwòƒ)ɘ?ìx,‚ÌÌ&?ܧr˜º*?ítÓ„²‰—?çÒÛ®2Ì?ìLNËLÈ·?·†–…4@?ÐÏxá€,?[NR2­ ?è7ÖÕ þ·?´kÆŽˆ?ÝmM7¾â€?jÜmÂ?Ü2SQú?ê,�CuŽ?ÆÜ:>m¼?™y÷i9`?Ƈ¢p€?ä³ ë“Ê?л€°_R?ÆUqÍÈTä?ìFÚƒOä?´aÉvÔè?æ‘N-é ™?Ø* þ¨�¦?ÓïÛwßh?Ì::?±:Äœµê?²{ṦX?à¨vÕ$b?âÒ'2qþ!?Ò¨Ðþ ìÖ?䢭p{ë?ïÍsXbl?ÑB¶]CNJ?ßF5çØL?éL� �É ?ïའ·˜?äv~Ñå´?ÜèÂ’Z@H?×ñž…²–?äÚD²9?áçHgÈáp?ëß~\ô‹?æöHçˆlÆ?ä ¦£&?ÌŸ _nzx?Ý˲ð²iV?ìß¼‘¿¿c?ãŠNìñ?æý7A…?íæÞ½iÖ?æœýÍjì??ë?ÚÓÏZ,?ïv�·H™m?âïyÊcØŸ?ÚY˜6�É?çÍjˆÒRè?éð1Tý†Æ?Óº@¿Lœ@?é[ö¦”?Þ~£¨º$?ì™Ô�Ý?‚?´�0j/ï8?ìm“?ä½+o¸E?ÚàpqÝ�b?ì÷këëdq?ÔþÇ Ëø?ÈX+ià>P?èrWCØŸ?áêcw|?—JFðÞH?ÜâçG…‚?¿ƒ–Ž·À?ä2Ûƒ*’œ?©é©™g?Ý©€Ój.?èc…¥�?éO­_¥?ÕŒ?ÇŸNÒ?³rˆyÚ`?Ú`ŸÌþ?à®ö™–I´?ѦRÞvY2?Ö�¥›í�b?Ìñv ê?Æžñ �ßÐ?Ó¯-Æ×ØT?îrq5–Œû?ë\󴩸?àú¬6‰Uˆ?�AùlZ‘À?äƒøøÚ–c?çnA"öÊ?Ætk‰=Lè?ä¼qî�K?Ús÷©Òt?à{�;³Êe?ÍÓpD�‡˜?ç×AÛMLÉ?À%�Üú°?Ó�€SF¨?̓ûó?ºò»¬ÿ]˜?î“Ià ¡?¬ÉB?ï¨(9{Ñ??ìÐÙÕ38Å?¹¿ŽR< ?ëAðW£ u?ìU ໼^?ë󾳑ø¾?±òY Ý*?¹¼Èd;3x?é Ç4L…?èëJ:gœ?ìð5ÆÆ¿?Ò¼Xü“(?ßúÆNV?åªšÐæÀQ?á¢~ÝžS�?êhÍF°?®¿m^—Ù°?âÂóü!Ë?ïãìÍØbÿ?åï-ñjø?ŒÔ�wm½@?æ9�7x?ªÆRF²ÜÐ?é‘4ÕÕÈ?á‹áú‘õn?ì6 ¬xÙo?áëœcĦ?ÈÞVÌ–S ?–Aï‹`@?ìVàhJ³?ÏüΩTD?âÒ�€ø‚?îTÃ#sÀL?åîî­ÖPŒ?à¥Áó`Ïæ?éÙ‚¶—á–?ãò ƒ6Uñ?î«Çtª ?Ú.2ga:?ä[×Uæ?Øê X¦œ?¿Özõü¦p?ã \>!?¿Ð�’6F?ãw*ûr"þ?Òò°?L¯ÏL|?æ.¾y‡?äÒ!#E1?ì~#[ÚÎ?ÔŽ°-œù�?ãb9-šæ?àÜÝp °?Ûÿ·º™)v?äˆcÔCP˜?èõne®þ?Õó7é§n?é7­‡+½É?؇I‡ˆk@?åvÑåûÜB?Óú8ÕÆu�?é‹%P ¨9?¸_§…—w ?áãeLÜ M?éPM@(ï?êcfE¬Vi?âÎ]Hò8¥?듃çÔÕ=?å“‚á—IH?êv’÷€uY?¹0ù'°Üp?æØ–Èiÿ?ßdž4õQê?ÊËú5–R?Ó4§ÊáL?Ñ`ç.¹ø?èV¯‘y0Œ?ÊV±Ð$à?ኅŠdQ.?×çA2¢U\?çÉ5V/ã?Ú™ª¹–ªÐ?Óœ†U²åP?ä 1ãžÁ,?ïÌnt…Êõ?ãý°â�&ò?àoã�¦cf?¹êð7>P?ãf…© á?ãÌÚÌ=¨•?ä()û°ì?æ�K÷çX?î†#-×+f?îÒQÂs„W?oò7ªí÷?äÈ,Øé?ß•5ƒ!Fä?¶Éúld@P?ä2ŠæÃˆ?ïx»¯¢üø?ï>¢†¾ú?äín Y?蔆…¨î?é…×(^ð,?¶û¾oÍÑ?Ð =ÑР?ÆÁ ´´6ä?ÝtWÖ<Ñ?á¤4‘-"?ãCÔ *ò#?îÙoj$—â?á:&ÂŒ?éžõ4éó?îô7Cø|?àCpê}!?ï¶ŠÕM?áiØQ ˜D?ŒØpr§@?ã?h±A…?¥$Îáø" ?à$�úƒ—­?á�1uÉ�Ô?Òï@=ÀÒ?áRÒãâj¤?ÅÀ'X-9”?ãDó46‰.?’ ~œ˜p@?á#ã¿�J?ìªSÐÅR?å(ƒ[‹�õ?éÃG[Ûö)?ÌXÎ5aÐ?µ&‹ßn¬H?¿1æý¢°?ÔÞxæœ)?æÔÅæe¼?Ãò�žåD?ËÇÍȻݬ?Â>�h®ß@?ì±a,g?ï~à�8v?ä|sò²¤•?æ®§Mâ0?å_BÚ?îÖOæÐ÷/?Ê&Q5> ”?Ój|›Â?Ôx¥ÄC÷è?äq@®:Jç?‡Ãç¿âÀ?àagµÕRK?ÛN~ô?ÔúÃú?¹D>L¦™ ?™RQ*£j@?êÑÂH;?“uÈ[2@?ãjŸ*_!?¢�”™ä÷ ?âÅœd"üÑ?ázÆþ¡JÉ?àûˆ.”iJ?êY5þXT?ÝÑëHÅÿž?篫;œ"K?ïX¹Ü�”?³aWŽt ?|�U‰iZ?á‚h³9Až?äkSù€^œ?Ӥˢè€?ÁÀ~— ÇT?él²³Äf*?Ç�oº¹Óx`?ݧýKûT ?®Ò%—ÔÐ?½ú^ëè?Ënˆ<¿ ?æò_ã·µ"?×-íáZqD?é­äZ/4?ê+Ù¡>}ˆ?é1;»W­ì?âò�0)i?ÕÝ‘OoLÖ?èꇺµ?àY½|›=?¶—sœ„à?Ñ�œÓ~¬?Ú05ÕQP?Ü?ãA Üï\Š?à"JXÂNÀ?êæ¬Ê�?°ØH¿ŒÀ?Ôù?±»Û?ÀAò€�%Ô?ÒÙ)ÎŪJ?È›yNÄ?¶ �âÂ¥È?ç iñw*?á™#|€+õ?ãtÓ¥a—?Þs«~åÍ?݉P×yÚ?ÈòðÔÄ?Ó)ëGÀ"L?ÒÄMÇÏ€?Ú´�¡Tl²?ê©_Ü Æ"?Æ2`UŽ @?ÔïÀ7bØÄ?ìw?â+Çî?Ý+˜˜9¬Ì?ìÈö�î ?ïx,ù%ØÛ?ÛNœ·àF?Øïr�í(Z?ê /¿™Tw?å3ý}wÛt?è˜,Ì�D`?íÇrŽhyž?Ý’-q<̬?êÃr¶Úû?Ç ,n`Ó„?Ñ Ï�ì Ê?ä*�7±;?à�4¤%±?ÎÒ…x\?Ú×.Ŭï?áêC+è?êÅ@»`à?ç]‘EŽÖ^?éjxï$ ?Åù�{ô>È?¸¤KD’`?ã§MŒê ?î¤ÙÛÊ?9 ÁG¢h?ÓN <T²?£û5YÇWð?РV Ÿ?Ã\N¾ƒúH?Û¹2ýgä2?îy™ç~È?ÔÑJyÅÖ?K=¨??ãg%ð¦£w?ÔGÌ݆ãæ?ìÕŽú»U?èy†#òwë?áÏ6ÔQÓ?ìvvýwCS?Ô!‚Ò 9^?ïf½½®P?�±zÜ$aà?Í­)<¯5?á–ú¥}Ó?£ÔgÉø`?è5 7Ð[ç?Ï}5 N‡ð?ëàé:he?â¦'•­€?æ‚÷(¨ï?íDiÔx÷*?Ò×IH7L?çÑ8Þh^?ï×�-ÚBæ?áˆíºç©ã?×'te«…T?ˈw·è5?é9”G(?Õ\x…ð °?áwOÀF?Ði?ë¼âWŠÓ?ïL•GÎN?Çû<�yÎËt´?â­8¨Wµ?åP²¹ ®?ËTË¿(Ç`?ä]ãBTÏx?ßX\ÆqÎ?å:£JÄ�Î?Õ½½±BÅ´?Îä?©bP?�×�Î¥€?·ÁÙHÀ?Ò®—ÍÁ.z?ãl #¿ºä?¬£};`?Üó‘»ü`?ŽZ(|ç€?âŸùO°}?éOfÄ0’?î?é�ÓÌz?à¦Ö/«ÏÎ?ìs#ÉÃ’?èU²^@?Ø*x™&ÕV?Ù"²åôÊ?Ùý¾å‚òê?Ê9R^ýx?ìqûB…µ“?ËscÈù~@?ãËØA•”?à–ß½� !?×ÝÛK¤<@?Ò«Ña£¹P?í¨Ì5�vZ?Ý>× P׆?ä �wM°?ë‹B6T—?ÍâœÝ® X?ïÕé{k?îIéâÁ Ÿ?éºbÂw5Ä?ë]e�¹-š?Ï3kÞšñ ?ÛênÑü:p?áÆCð(ßç?츮ˆ8 =?Ù¬ôý@ä?ÛŸ'…SÛ6?Þ+n(úð?_‡;�ðJ?ãÀÈú£PÌ?çM£íoŸ?ç¹Ç-0þæ?ÂAî•ß¾0?ë¢�æÝÝg?ÎST h„?Ü[cp¨’Ü?ä€Hf�¸?íL““*˵?w±’k^ù€?äüÜȦø:?ËTç_ÙÐ?ïÒnk|o?§…J¬­|P?ì·6Áj¨E?ã¹— Oý?× ¢îÄÊ?ÜUÞ!.­Œ?Ñ‘q—&Óî?á_TÑü¼Ö?±�Bˆ[ `?¸úQ™Ùh?ˆìíÎ@?àš-ŽSx?ײ�æ.0 ?Ûlíþ?Ö {ß…N?çÌGgB#?¼² ±ð2À?éÞ|y=?å~b¾¯G`? ÇP%¨D?ØñWÏÊ<?è‘ýšõÝ?Ö5Þ •V?â•9>d½y?à†•¢¾óO?×1!¬yl?Àí\8ö?îó%:/Fƒ?Ô¸†‰V¥Ð?ì ×ù&Îä?è×,%Rµð?å̆¾€Ýs?á‰)ıŒ?°�C–h?Ô�§,ÔÄÞ?ÖgÑ|³äd?ÛŠ´{¤ê?ÍŽ'ê Œ?ÙXvû'hÂ?Î_ñ·…,T?Ñ'�‰ø?Ö…‹ªÞÖ`?盋ò´ ?ïv¯xA?Å`ž{¤Ët?ìOxsÝþ?ç²¶lð·‘?ä´‡óJÂá?㯶�×b?ʘÑl–‚È?æ†m²C?Ûú#ßvûà?ÁÀ0Ï—Ü?Ë4„V#žÄ?ã¹…¯¡nK?ï>NtÖ$S?æ¶edd#­?ë=ÚŸ¼Ï¶?î†À�ÁF[?äµ4e`¬Z?¡¦j‡p?Ðò•”Ãr?çDÄYü€÷?åR#O­Ñ?ë7ýJUó?ÚBYý�]Ì?â”8¦¶§?¹þh¶ìº?ç ŽCAm?Ü¡†? ?âŠ'jéhB?×ðHŠøˆ?뉺Äã‚?٧um?¨Ñ!íeº@?ïg±¨û–¤?éL%?íz ¤ª@?“k€H“@?ÑêìaTàÈ?àÀI ôjr?çé«'Ÿý1?å�� l¬¾?íï¤=è‘?ãÉiªMÕ?ã�d�û?ÄÎx¥ ;?êõ}Õpys?à‘ëµBŒÞ?íÍ&“}X?ä/|Ónž¶?ìvJ×@Yr?¦Àø‡€<0?Ç™È}ÃÈ?éªáª:A™?á^ëÉM$?èŠÐ=]¿¤?á4v¥SÉ?Çܨ„å7\?ís¡dÖŸ?î:˜ÎY<ç?¾ŒãÁ�7¸?á[‚ã~Ùã?í¥Þ‹Ö^¬?ßüRCþÈ?ÒôÆöã\ª?ËD@Û“p?¹ãØÖK?Þ·_Q†Ï:?ÛLÔ]ÝY†?Ïú¤—ð?é� ñ~äh?ïôæe ób?ãîÉBÈj9?å `ÿ ?Ñ)†¨Þ¾?¦û‚'¾0?»˜À(ðÀ°?ãÛühÚÿr?ì§Íë÷“C?ïg^¨•S?ÞÛ RžX?àÞ‘ºÉ­?ε[:-¤D?×ì¶ gÌ?ͯéSØkx?Ãl�ü¯,?ÒKD·§ê?í-fm6?ßA, Ë©?Ïêv ?àÔ1åU­?îúÈ-¸Ð+?ç¢ècb!?ÓÄq W-R?ßtÎåUçî?ëøU_£êH?êfËðF}S?ïP2rÿ ˜?ê0Z^òK?ï¹ê’©Ì?×6uP5¾?x¢º«Å€?Ò”ßÇè’*?Ô$Ñפ‚?â|Úqš™?ÑÔ‰¹ …j?ío5¾QêJ?ê�—ÕèÄ?åƒ#,;’Ú?¦±±Ó­¨À?Ö©ž”?ʨ�‰d� ?ï¦T4ƒ ?æ•áüDaO?Ðò‘øm?æêR²Cé}?´�E²r¼P?Ô†;×ÞX?Î2<94z¤?’­¦pNà?íz }òf¼?à9è ª –?é:: Õ‚2?¿S�^è°ø?À,«úqÈÌ?ëÉ­™>L?  ›çGùP?ìËR®)Œ?Ñ}Uje‹.?âéré<ç?Ö­|§ñÜÄ?êd?GPX?̬xÖD?ÞËVœ@6?Ü»ÉOóf?Ë]@Ça?Îr›&Ÿ�$?×ký¨t?ìîX8DžÑ?ápÏÍ?ÆúEGßä?××}…ðîø?ë· pò‡?á=À‰Ek?è>µÓ4Ç.?áµÆ\ä/?×ä«Í“œ?åx]б]?Í1šè?ë>Q*3Oc?Ýš‹V”ô:?Ò‹QEd?ä\ÉìKÊ?îs?(Jîˆ?á4‘ù¹?–&LAOÿà?娫üC]ç?تg´ ?Þ,To›Ì?ÝØ¸0Äï¼?Ø5ªÅ÷‚h?ïß{in ?Ò™Hön:?ß¾ :,™?ê&)ó­I?árËúçÚB?î±YÌ£Û?çvRÁ]rØ?¼z %Ð H?éŒXÇ£qÊ?ê_†ñø>,?ÞPù•‘aª?܃ÀÎP®P?ë�vK^¼?Üq¹-ÜÜ?ÒUæ¢jB?¿_†Õ@?šBÐÅ·Ê ?ëFΆ¢è'?ÍÞN;_w¸?éñz‹åR?åViÙRÿ?ÅJ¹õ�ëX?Û À �Æ?Ð2IgÕ $?Ý·Xá à?Ì ïò=»$?æ¼øJ¿wÿ?ãïä$F"?àmô›¾g}?ᤀ£V¶?íïY[»ò?ΫBO9¼?Ðo�š6ê?¼~MåV˨?îF‹á¢d?½˜ƒÂ”Và?ç<ÇÅÛ\?ÚÓ¥žFˆ?·È‡Ú|ç ?ê›I·":?í¡.çÄæ?îKŒ'YÌP?äsìÁð7?µ2^ÿ€?çq<Ý�a?ÄæÈËy¦X?àc¾ò�¡?š­×>?§ ?ëÃSlg:¹?ç0Vè€OL?çÌúÌr«?º1©Ñ?íṯ̌Co?Ý;sÛƒr?äU8ð°æ?°>©UÐ?ãÝšÄai?±¯^S6ø?Ðu¸7�‡j?ï\³æÐ‘À?ãnÕ>Õÿ?áLëIQ[?¾2JÉHÍÈ?íë·ð&?ãä½ãÌ£?ÚDŽ�ùꔹ?çÖP“—ï?ÕŠ]XOê(?ë´N&“q?áGÔdgæ?ÕÂs¦D?×<-„�Š?Ю¼`ú?é24£¯ ¹?¦¶žêI¨?ì1¡t àn?Û,¥³Vü?àÊrûAÉ5?ëÉAzÖå?Ødfßm ?ÖY¥7ä ?ëÜE¢={œ?§3ž± ¢`?çå¼×¾8?ï´éEÞ«?Ô†,Ýl(?ËÛÆªÐ•Ô?ä›û“Sá?åÒ§6³’?ìõÄï å?ÀBx×Ì?Æá…Ó€'¼?äÄ-5Nœ?Ú ô�>xŒ?êØQô8™ö?Û5ý@Âø:?Ù_wãô6?àq—jÞu®?Ý�À¿\Uî?Ò‘Ò�+3ˆ?ÇîKCƒÁX?ÙQW‡m¬r?êY³:æaŽ?çXž•“‘¥?Ü: ~„?ß¾�ö&þ©¶}P?ê]êN ^?Á:òEž4(?êV‘)^ ?rɯëÀ?½¡â€È?ÁÿÃeNLÈ?à7ú0?�Ù¯ø`?¦§‚­• €?ÖP•à<?××jú²*?Ö�;ÄÝ‹,?î—2ZNš?펩d »?ìͱ—7ÿ{?èH7ÀPI�?ä }à}_G?è5�aå&1?ÆJåŒNÌ?Ý|vÂ@é$?í8ˆ__4u?àW•Îr¦ ?ês¤T†¸Ö?Å‘¥9„tp?²þô¾ f ?ÔŽÑV€?ÖGC@p„?ì–›ÙûG9?Ó²øšè�Þ?¦¤ ì†$ ?â^„Þ ¸?æû_Oá"?ç)iŒ?î' Ø?äÄžëú•?ÙtÀâ4ì?éC²`EÇ?Ò ²tIbÊ?Ð/)H“x?Ä„X¢¢k ?Û˜¶˜˜íd?ãÂw휯i?éµÄ‰Ÿ·?àÀ�Ï\¸j?Þydï;Ï.?Ô~|·Œ ?Ìðê=)†P?ìòú]›oÜ?ìTêm�º+?èŸ#tH}?Ú¹Ü)jFP?ë!pÁÇf?·H¹5R@?è eG*Ô?×5ì¯KÒ?ᬬS¾?íÑ()„»?Ô—*Ó0Ä?çצI"ô!?Â×}mðNl?˜Ô®9`?ª“°‡Ã3`?ÜÔŒóþ?ìz|„± Ø?åxýÞ8g?¸h¨ÁŽåÈ?âDOeÂ…?î¶lÃMA?­h�íå¾€?ÉA_ðéåt?äè g2•?׫#i�-R?שËÓduÊ?Ð5Õ$q–?ØÀƒöHç?×�TÒv8?ä¹4"®@?ë–W!úªÄ?êL.;âm"?Åá ÅœÆð?½k>¸]ް?åÐ{¶,æ?ÓE£v¢–?À^lp£„�' ?ij—Â0o?ÙͨI¾St?äfO\5¬œ?æf¶a­‚?éKWVe0ì?´˜òc�¨?äTg¥^_?¿|¤Ÿ_�?ç¤iÍùÓ?ß®´oQT?éEÝÊ Ž?ÍSþÔµ›¸?èéª?ÑÛ?í¥<öþ[Š?ØæVà­†?é9�f‚”?ÝxNu46?Ñ/ qi¤F?†t8Q`€?ÉEâ ÉwÄ?è�œ‰ÑV×?îò QLGÅ?ï~é¡Ç$?êe\»;Oæ?ïÙñ¿)ÛÅ?áû‘ùPZ?ËZãïùöÀ?ÕÝ5&ÑB>?ë«ÑôŽÅ?ºcJeÈû¸?á³Óጇ?³ !ÕÍÜH?䊴äL†?Ùªö…'Ï?ä?èŽqDÎ?î¾)‚59!?î#?!P"·?¦ÛÍŸåù@?–žDÂÀ?î½ì%f[â?¸^©4 ÿ`?í”Ñ£uú³?Þ®¹l²½œ?ï^õl”?½×y¦à?êr+ ä?¿íê­P^ ?Ñΰ¾­ž?ëzc§ãiY?¤Ê7`æ"`?åÆì¥òº?ÓÆ”43LÄ?ä̘^?ÑÏ©Ð�ˆ?Öýãi‹†?éhÅö:?îWt/ lX?ì¤Ç»ˆ?ê†ýµ:‚Y?¬jQ·H.ð?éêr så½?ï,??Q¢?¡ŽW’ò �?ëÆ[ÑÚ D?à x¹HŽ?Õ‚+™Ôb?à«�XêM+?íA.ºÌ?ËR*ÈA°?ÚhYmù÷x?Ä´ÜG®sà?él�á.À7?ë)bö‘©?Ò™ô9Áÿ*?á?4þ¡e?³&Æ�yÀ?å\Ëm<¯?â},Ro?æ¥óY½~?ï°çŸPñ#?àåiàÍ?ãŒ`fî¶!?Ö�ht?ï\?×§·w4±*?¸§÷Ư�X?ÇEÒÀ‡¸?åÅ¡‰6GN?Ã’•¨?⽟Øo?ÔÔ÷ âÂ?µ¸ª•$`0?âF<·H–?ì6\|N­š?ï²µó‡sÀ?ÜÓθ¾qT?ÓOfÁÒ2?æ6uжúš?î3E÷Ë$¨?¸äÑ&§¦À?í¹ã×$ç?éΗžYeò?Ùü9;ëæ?â༗€¡ï?ìv\ˆ6¶ ?À™g@¸Ì?à!žPB?Æe7:c¶¬?ÛeŸ?ÌN?ѹ- aýÆ?Çä5K=ð@?±R·�Xç?Ú%wÛMEŒ?чÖ0›-6?¬+Þ’¶¼?ÂÀeg•&0?ÑÊH¤ã”¦?èï|ûˆH?Ä\—L¨ƒ?Àr6ÃzÍÈ?ãÓL—Ì?Ñ©Þi'IÊ?ÜÖAÀ{ ú?Øj96˜?Öy=ã?å|×Åw"?é2�/I’w?Ø”N”Çj?é�¦w±?Ä,‹M~Cü?Ûlòძ ?í%Züwng?ºU S('8?äù†:w¶ò?¼·òë»Ø?¸¾Œ5.0`?Àv>”ˆH?Ô8õyÚ®?ÒZ¾:*?£l á&Âð?à�†¦ù½T?ê0Ll¤GO?ç°×Ÿ¹ƒ??☞äƒÖ¶?¶ŒDn°0?§YîÀëÉ?ÂB3azt?äþFB5f?àXµcËïͽÐ?ÀÖ.`_|?Ú¥¥‘Ò?Æ´¦ÿKd?çÅ$=.Îi?¹‘´í(?Ö/‘’îOÄ?äï(‰ÍëÕ?ìŒ[¿�E?âË0*æAp?ím ýàWÑ?Þâü¤¾?Åõ ó¯68?Ôn„h ]Ò?Ô”O;¯�Ø?ÛÓKÞ’ Ú?Ån0e0ר?à¨tˆïX2?Ç¥›í³L?ì룛’¨s?Û 8Ysøò?Ø;*ù"¹ž?än¹+ Ò?ÓÄè‹4/6?Ñã^Ö…?ì6z-?ÞuThË À?¹wªZ�?Ë¥ÍÈ?¸ú}AX?즕/Fç?옼æW{4?äãY7%•‡?ÓžûUŸÊ¾?æe�Ën§å?á Ú`¬å?å?åk[#n?™yÖ~ã–à?Û½¨&}ˆ?ÝÁ-ðêÖ(?æÁɵ_?çµQ¾÷ÿ#?éà^XC?ê�®Ö@,?ç̵$KnÍ?án‡¹Ã$?ÝX,˜® ?ê6Œë?æèÛÓ“ÀÆ?¾ ×gÅÈ?åµ2á_Vr?ÈjnKu8?²›A(¼Ø�?Ý‚Õ*bbr?âw…ŸŸ�?á/ûßâ?ãÿÏ®0þ�?íwîÃN[Í?ÛgŸ‡tç@?ßkópf"?çµ|ÙEã¾?±~Õõù…(?ænšÍ2z?µÅØ·”žà?Þޠص’ä?Ì!B8©óø?àû„4Ö p?èÜAÏ<+?çªw´ßZ?çfûfª?ͯ«Io`¨?å×ùßœh�?æT~ º±–?­vFg¸¼À?ÒèBÁ‡Öö?ìHv_?æçôÍ$?â^…fûwÔ?ØBuPÒl?Ó¢³�˜?ä½ü\FïQ?Í «:K€@?Î⑞Íä?·R|u0eð?èÂ'NÁíˆ?çñïËÐç¸?ìèÈAm?à~(âˆëj?éÕ6åów´?â&¼ >Éq?Ý• ‚|Æ8?ÕeŒ;×42?ìrUËà»i?Óar<Ί?ÒNx6—V?˜åª�e·€?Ùª|•μ?á9(m?ɱ?³�Ÿ�Íí ?ãŸQÆ?ÀÙ@À”¸?ë´ÁŠœ'?ì{²ÃŸk?ºíÙAh?í^jú5Œ?ßÁ°b†?ï3d?âz¿äçÿ"?áU}Øâ€?Õð•¶‘?å—À§­°?álÉ`Í?ÏÏženN8?ê;š�µ’%?ì\N�°76?ìèr"”ÿ?¿ÙÍ’ÉØ?åðÙ– é?èR¹×`¶Ô?ãëÑq¦Ýª?»HEG](?è+nÕ}?ÔÒ~î…S\?ç·ÓŸîqw?éMÜQŒMv?×¹û›Øáª?â†Dû‹?ì½ØW€ðY?îÑ^| Æ4?º”#Ò“È?¡-ê8Ï€?Â'íâ߉\?áhv™�‰?ÎF£$Ôº?ë4ijòhP?©¯åaÓ`?Ù¶‹3"ö.?Þ&dÐÉÄ?Ä!]óp?ßÜ#”¹$2?É’dÕ{°Ä?î 7“wáÄ?ëÒŒãŠ÷“?ÉÿÅÍÔËð?št8Óœ?èA¹5?íÏ©d'Þo?Ý –jò(€?æ1l?üá?å&;J¾õxÚyå?â�9Ä\Ó?¾#©NÁ(?Û;<ŸÄûÖ?ên—y*?Ü…xsì?çQÂL¡?ï¢è:x¹?àæ¹×ø1„?ìL®º¢]¨?å¹Àd¥Ö?Ý%Ñ xÔ?ï+˜”v˜?áô»óø‡?¹^ar$h?Ñ×»¯�PÆ?àùn uã?Ѩ}|†?ëÔðz0n%?ãZ+|ªóu?¶Þ÷3ÿWè?á¹›‘¡´?ãFx±dÿV?”P{šô�À?ì3GŸJL¯?zvð+ ü?Ð’èì•<ž?ܨ Bòƒ:?ìËìËËGD?çºn»0’{?à‡$û*?Ûß ˜hP?Ñ`¢Óò�?葘 „d?êpŒ¬wÇj?šŠO&ÊÐ@?ÐQʆ!žÞ?Ð|†�M ?à) Ã¿À?ì§M¢5¼?Îdã:w¦žó«X?Þo‰naH?® %¤¶90?íwBUŽà?áò*±R»¢?Úä§Qœžv?·Ý0‘‹ ˆ?æa‰J¥¼?æÿ*ßDD²?Þy¾-ëc°?Ù�MX €?Î=Þ’vuD?©òßÖG �?è 6ôd´÷?ÈãTeWÈ?Þ½Èg¼?írá –¼?ê ¡'…Wm?¯TÈKã°?Ï«ðVå¬?èøÖ?°W^?íÐºÊØ‘z?ìÒÕr²?é(Q1÷Æ?ìÑÏœ3ÏH?éå�Í­ù?Â'�›»Àð?ÖË6þTwb?ç�™Û6r?ïOGŒoå?|°ê?ßnîáw¢?Òñ&³ä¨?Âd8̇f0?ÖWlÁ\?Å· Çsø?Í¡í@w ?é9çK5xN?äj ¨µ/ô?Û÷‹øŽ{p?ÛÇlî3„?í`ÌýqËü?×Eæ u–?àS›.CÝ?à˜£¦XÌš?¤I'Rå³P?ì,¼õûß?èãîti‘í?Ú³ ì²”¤?ç`Wå&“?®Æ�8‚Ð?ã{»ÓŠÒ‘?æ,„ÅÂíá?â…?Š?î�Q¸(t?ä–™×r?ê ¦ƒSε?éEGŠ pî?ê¥Ë[(^Í?ï”íÔÆ?Á3CYq?Ï�¹þý „?ì�æîý—P?à?�„©…¬?ÁeÝNÀ\?ë¹|³àœŒ?ï_zDéû?Îož½ð‘´?ÛLoLc“€?ЧC3*þ?Å =f*Î?ÖžSº]Â?ÙTs )Â?çˆ@Ç×Ï?ëuæ‹%D?цÄ+Ñ ?Ä�òµ¯Ö,?èEù8�„!?îïdTl?Öià4LÆ?ÐyGýÊ‚z?Û¡';N?Ù¦o&=ÿ’?ï¢õC'7ø?Ín»w´,?âU5²Ûí?Ã-vË@?äZÌ©ñÜ?¿ÙÑá®H?ä� -«¢?Ý™~~}?ãh1†9?î µ›{¹N?è!”Mæ¹,?ÞKGoî^x?Þ©Ó¿©VÞ?Ñ"°1õ¡ø?Újð ö?ã¥k+Qæ?™•Ѽ’ À?çXÅgJÅß?ìsx¶P?ÔÑ÷!¡j¬?ëR$ºæAe?êDJéTàµ?ì ÍE¿Q®?ã?ôðék?èÁL‘_¶?äò˜Šb?Ð’hâ¦?ìÉáÿ0j5?Ô»�dr^.?Éðåm‚Ã4?ÜÚãåò« ?ï» u%ÃÒ?ïÃHžî(?êH9êè(?Óð•l§?êÁ>‰Š²?æ,ÙYº†?é¾k¤Üé?°#æ"׳p?Çíô›¤pt?åo2OJ?çB»×Û±?¸¡‰"{æØ?ãŽ(âØ7í?ÍÙ-¶zÄ?Ïvè ¤”T?ác'G]{?ÇÛ`�Þ–Ä?šüæ JiÀ?ÉÊÐÄr/¤?·H%_.²Ð?ä§Ð,k{®?ÑæŸþ)’?ãñAC5åŽÜÐ?î1üV•@y?íHÉA N?ç¹a˜³3†?éke]•ç?ÑU`Œ�¢?̵¿Xã@Ô?ëš¼üŽËY?ìh´9h9?íøþe×4~?ä {ÏÆy?à£/¯-ÐÚ?Á¬¨'�ã ?ÝPÚáà¦?èJTo+_æ?ÒÓl>ö?Ï\@]¸ïð?Üb‡\¿`?Äf¿ã¾H?Óiãµ�Ž?ÀÙÜûµ@?î™0Ç[º?±e‚ÀzÞ?çÜô.,²? ì6ü`?Ùj¼ ÇÄX?æõ�©‚w¢?Óœ óÒ­Š?ìÒÂq§1?ã ~Öòö³?ï6Èâ›L?²¦-ƒ:¬¸?ê×SN'¾?¨nyà6 ?æï™{4 ?å Ï uŠ?ãÞ-2S¡`?ê¡‹Ö?çT¦ÊÈ?ëOæ®â,?å!2ø£l?Ç&º¾Ë�Ô?æ9…¾aT?Å‹*šÿô?�8�É#@?ã zÏ|_}?¸Áº9¦�?ã5;ÙRÇk?É"ǪãX?ÚÒh@Þ›”?·-Ü)ƒh?Ý×QqÝ[4?±r¶_ñ„p?º%$nÔôp?ÙņuT0?Ñä™?Í%Ê?Ñò ³Œ©?ëU¿ÙÞ?â„ IQš?æ˜B˜…Ô�?Æ o’úÕ|?Êá&@ô²¨?Î$¥óÑ ?Ìç š?àD?ív3ù](?Ã~Ô®kð?âѲÝb؃?Ýù~ؾ?Î$÷ðs�˜?éÏ[Û?êu—C2ª3?ão|P(‰˜?ÒÓ�mJYò?Ù‹h69Œœ?ʇd± ?éÜ|wgÏ?̇MZ{œ°?ïRÖGç“k?à`Þ¼ÝTB?Òh2OtÎt?Åݼªc-|?àËeè'Q¶?¹ãa¬0G�?¢åÒ ?îc°uqK?íŸ-ÙxÖ,?é~ßl™?é¥]9sÌ?èÊhhÈ{°?êÚþ#Tx?žÒëð\€?êÁ^L͵î?ßÂWm�Ì?Ýg‰~‹d?ëû±~æÌ?Úþ[ÞAø�?ꘫ˜Û¸?Òs…R½Q„?íÁ噥lÌ?ßû( 6²?íéõ ‰?ÌÕšŠL?ÅJëÝáS?¾“×Û¼¨?ÜßΑ‘×à?Ú•ª\?ë¢à7kQ?à%"Ÿz†@<Ë�B?äò,-9?ë„„S·n?Êè”Áº´?å°áúö£?ìˆÄV?Ä|ö Í\?Ânó*çT?À[žØ£w°?Ë)Ü lÓŒ?ëpw‚—Âò?Ù §ö?àö2Àû†?ãqÏ¡@\ž?ßëσ.T?êœàÔ:»{?Ù|.¨ßàb?ÓR?\os?æ×sf˜/?åî °Ô{Ù?ªØ‚òp?åºò©ç½?Î`oa'°?Ýæü™­Œ?ÏÞG/[?ÄYâºäÂh?æ0´Î#óE?â£øn`?麿ðüþ?È~‚#ŒæX?äÌBE›Þ0?„t�Ý߀?Àkí�î~Ð?„óZsóõ?ì„ݽa¶“?ã¶I±›u¡?ë‹Ç0 –N?îi®óF�á?ÈÌka”˜t?Ü�KFɶ?Ô�”ä?�X?ÍØ‘^’ø?æìÄ!_w?âɣ׸×?à¨|i?ì66i¢é?ìÅFæßúz?¸T§4§B ?²ËïÁ§(?×gÁ‘•ªX?áŠÔ‚ËLý?Ñ­yô/)Ô?ícc5ã?ã³0âÆ¶?éÅÄ_÷ÿd?ê~²hÂ?Øò6ã{„?ä E”©Ù?扶tÙ‘?Ùÿ6”H?×)a†M¶?ØV�93Î?ã8›«Ëós?Îë-µˆÖ¼?Þï©m)R¶?àèZámB?ïè…˜Q?Ò±Û!¨”?Ëík}áÜ?ãrUB1Ù?æs=*Ç^‘?æ�bl—¸?Ñ�Xð‰~?îÔª6þ'5?½2†u: H?æã9úªh?ìün÷‹;?êüf”ù;?ê¢ÛÅÞXq?Öû]4eˆJ?äCÔ[„+R?×yaÕAì?ÖÈm*sql?×Ây u¶?Ò^Ô3€?”ùÞ2`?è»À{èu?â`µ‹ÎŽÓ?Ó¬#v¢t?· Øî£aÈ?Ók÷T­-²?蔲}Î?ï1³9ù¤?¾º’ÞˆP?çÎ啿�é?Ñy6­KøH?Ú=4�£à¶?ÎÒBÒ?Þ`Ç‘óÄ?æh�%®?áܤ]„jë?ÖZ“UŽ?à=×ÿ ê¼?ÂêÀ}ÂL?Ð$¨§äØ?‰¼™’€?æÆ“¬+ùg?ìܱ®Õ?îQ-¢�‚?ÙyÓë¨?ËÑP gå˜?àg'&1í?Òw�è¥È�?çN4ÐQÜ?ß>Ê\Ð?ÞªSÝÒ4"?Ûç_rËšª?á"$Ð])û?ÞŒ«Â4Rº?Ê?ùŸH˜?ʧӧ(´?Çú (~Âà?æ\ÚDÁh?äkE¥"¸?åÙ`…ªo ?áQ6oÿ?ìhll|Q?ֽ܎Z?Ö`n‚œ‹Œ?»Ìug#¿Ð?ß²‚õ@?è°ÓN(R™?Ù ðRî?ã¡$×P’?æ³ ­=?ÞÐÛöŒò?ÂÚÛ‰"¬?À)ð²Ø¾´?Ô;Ô­’j¸?àE6É«W?è#DÑgFc?…:sd{?é=Û÷2�î?Ñ\¬¸ m¸?шîë»QT?ïÛ¦ ¿ž?ÔdÆÚ:–6?é–Pi–™ü?êX<æJ91?Å‘à‘å´ ?è4¶Êïý£?ßmvZ'(?˺¾ÞÁÄx?ØË[Å9*¦?Ì#Ú5¶¬?éÜTÔœ„d?×Ü0£‰¾Ú?ä¶÷F)?äÅ,›Cù?é¢`Ýqb-?è®Äc¿+?·Ê¤&X¨?æDiŸ4p?á_RZ%y½?í«Â-»¨?á½2²}[o?åé¬bØë?Ý>6=ó¶?áˆ(XGz?ßV·ëúÓ"?ã”"мzº?Ðv!X 2?·ÅIkÚ‰�?à-Ù¡öÔ+?Þ„·jº»j?Ø‹{£L´p?µp?àU…¿¸¤?Ô׊ð"?çøÏŒË?ás�¢%�?¥ ,2F`?é%±<ŽŸ›?Ø`ŠãÈ"*?¿ôÊ(ýY¨?î3ïܺK(?Ñ9ãŠ)ž ?ߦX›“ ?ï#†äó?ª­EO2g@?­e‹lYép?Àá%åRˆ?Ô„/mmÌ?ëÖ–bH ?Ïaoó´"@?ã!@xÝæ™?æ è/¤«?оÏOš<Ø?åPÇ*€gè?ë• m!30?âã³:{gÃ?îKøÃ¶T?¹|ôóþê ?ÙŸkqÀr?ÓÕgu¤Ì?�Ù�Žä€?æê‰&ÈhÒ?Ó7cÏÊQì?â _�[;?å’¹ÛÀ¢?¨pCÜ'½�?Æ~ʯ8E´?ßÉ úP?Ö­7ºÓz~?Ð�i} b?ßùö<õÚ?Ù š:äì?Û!m�üä?⮨š;~Ç?ÓP±ƒÃ�ª?å°I‰{™?ï¯Í{o»?à˜ŠÃ—ƒ ?Ùg¿Ù dz?ÝmP;…$`?çœа.®?åaƒô?æÚ)“¤Ê4?ÐNå9Üâ?Ý1M%(© ?ä Þ˜Œë¥?á©ëy/eÏ?ä:cÉ| ?à=µ¡KÕ€?«u7–�?‘ºJû§`?à7š}£û?ÛÕ7,ºe„?èurY œ-?èK,ZrZ,?³Ùcqã�?á·XªBE?Ô“OÄÆ?Ê Ç¼ð³Ô?×v`õÂÂ?«OºÆa0?¨úù†P?µVo€?¶!<ÿ 4 ?ï³wñ«G?áÅ="Ÿ¯k?è*:ÖoÂ?ç/cs&‹?Ü©?[!ª?àK�•îì’?ÉÄu¾”ãˆ?ãëžñk}î?èfìí -Ê?âç‰Û0²^?ßtg$x4¤?ëÝ:aª?Ôyo�¹6v?Øv™UC*?çÑ@ “–?ï#ßóGÓS?íû�éÆA?ÆÔggç`?ãøéÕ??Á…‹šGó?è¡+cAXÛ?ËÌiЈ>°?ç���‰¬ý?’œ5 ´‹À?í�½€µê?ë‘u…?ënÞôF&?æwDwWþ"?îY'Q²6É?æ±y8ÿ&Â? Ï¹Ç$eÐ?•¶{xÊ?íÅ7æ‡8k?×ëü,’?Ì)S¼e?åff¹w Ã?ß0Iì{V?Ø+Ó9éKš?êW\¼™?–4`­`?¾ÝDÔ–h?ÞvŒhûØî?äd7ÙœÍ?¯yË7¾?éPNdÒ?ì€ß�» ì?ÒM!“üN?á�Ä?Â?שƒ¼‚Tà?á¹;S&?î\±ÎÔ# ?çÅõ%ŒQ?¹Ô»thtÐ?㟴P8?Ýß…¶@´Ò?Þg³A ?ÏëŽ==(?ánÿ ÿ)?�Tðä—l ?ì²rü x+?íIÅÁ·/D?ÓëˆÚò}?ÐFQ÷RZø?ÕR¯½­À?Úù¨dYe ?ÚHxÿ<Ø?ÈÕÝ&ì?à1þ'ûX?Ñø@‰Ìü?ïHéç°€?ëLj>ž~?ÅE$Mt?ÐÀVà ?Úôc̬?¡ïEÒns?ÙòX=Ù)ú?œ?Õ ’�¡q\?ê>©RùŽ?Ìj$,$,?¯C¢3Ë"À?ä¦Ás{• ?ã=¶{ežE?ØôS¢Î?”?Þ“à?Ü�¼Íùjˆ?æ×™ÓûËâ?´vÿ‹âɰ?ÒX +†wR?ÓÉÄç+NV?Ñ „LÏDF?Éþ …•”?­¯ÖgÙ°?éÉ_Ü#ü�?î‘ iáóÅ?ï²2´y?ïÝQÊ¥ü?éã—¢ôÜ?ÈW¾ .ä?—ð�ù© ?甃_W?î°îçݪ?Ç2|£Ó°?ë�ÕÙ ¨? àÈ*P?ë¬"U�Þ°?í»ŸÎës€?åçÞ€ý9?çñ ’�·?äD©ÓÔ]?ÒÆË Æ„ð?â7›K0bò?Öx¾Ê©nè?ÐäÐ=­Ë ?Øà[iøÕ?¸7“ ž9°?Íd¢l»Œ?ÙŠüª(%ü?±­¦€Eà?æÚÚ딉¦?ëÀ*k?áÛ£¿U –?Ù#Ã�–i?îÇÆ }ì‚?îcÖO)?ì5;\¨¢%?á¤Òí{â=?ÊŽÖòó ?Á¢Xt<Ä?Â&Oúí�x?Î_Œ£¬$?膦¾Òd?ÒîÅ+*?çñ#6ó­u?뙟¼?­(ÓZ3@?ì£ê!éU.?Î[–OCƈ?ÖGŠ:wüR?ÕM|# ì?䵡7˜¿?ê9EºLrp?á3‚#K4?Íe¬w�?çE ä–&F?è²›è‹ì\?Ê Ãl?¼|ÞKa(?̘‰œºÐl?ë2ðù‹`?ëÉ1žåý?î^AZV?î§iOÐ�Ù?ªUŠ]©À?í«™Ê¯_l?ÒuøùYÛÔ?äÁ1 s?ï?jG[¿ã?ç„­í|Q:?Üà€ˆ¢ è?ÚQD~#ùŒ?ìu›Øã}š?Õ+ý(È?ѧ£ ÉCh?§¶e'?Ð?¸“{?ÛLþÚ%B?Þ‘ÙS-1€?ÛPÂôѦ¸?Õp•š|'l?Ȉ¹øò ? wÐÄ‹�?°µF‚xÈ?ãÜK5þ‘?¤Ð�£A½?ÖVö]æˆ?ÊÓ¥Õ3ºˆ?ê£ð�’)?åø;<´?Öí<Äë"?±È²j=�?ëÃh˜)»?í(-)0Ä?ä\ ìVe§?Çê„Å_¬ô?é^;Oî‹W?ä< tœ¾è?ä…ÎÇþò?ÜCødVd\?Õ^ê®�[¸?­Glå‹?Ù‰¹f ?èö{n”Š?á§ÉbNq?¿;7;õÈ?ê8Î |t?â‚|e™HÐ?Ð6ϼ5?ß-"ÐÒš?Ì^©Ì?ÑT»gX?ÅRæu>@?玂hõSX?ÔÝW–�yð?Áe~Ö+C`?èÞ…aEã?Ò‰‹†ZÀ?Ð’—@Jp?ã jgT†?Þ´èX «?ã:žp½?«BAp�?ílCW&oR?ï»�=\Ø?Õ»Þ‰Œ?»]‰Y›@?ÅÚ›ùˆ?áÃS9Zï.?Ó_˜v.?Ø!tzfŒÚ?Ü 6,–�?å€à¬LÆ?ãu#ß$‹â?ÛÎl%íö?å¤EKE_Ð?à­º}Mк?ÓFÝp¿—¢?Ýà* \‡À?ëÁ_�Œ?àGSžmöA?צgI†­¶?ã+aúß‹W?Èß¼U`È?О<¥lL?åf¡ h†?¥lot1ú@?ã Qé–D?è'‹~ä?Á—xË9Üt?çb�ëò&?îX$Í'�R?镼»ÜZ?ì¼Å {ãŸ?ØëbˆB{t?ÉÇ—â($?ïµÿ®ÇV?íwÑÝÎp=?ÁšÁyL_?î&n 8›†?À­$ƒù´?åEíh¤J>?â&—ž"Šx?犷;ј?ãjÙ×GÀç?Ü«e¼b¦?z¹Ûó‚€?Ú»7¹id?³ê[úýJ?룫®)öÈ?ã~à¨$õ?©¹G¿¥ê�?Ü|HFMº?à&¯Ôµ±8?î3Ÿ�¤K?ÚÚ Gå¶?°‘pʯQ?ÍÇ5"(?é–òî‹?Û˜æhî´?î£ö•¬þ?·³?ÏRAH?ÚGâÇX]‰¶Â|?•5êÀm??ád�Ù¶›î?ê‚Á•sZR?ï~VEsˆŒ?Æ�8øÍ�¤?ëæW䮹Ò?Ý}�‰Fv?Ý—ÇÃ=?Óæú¢¶ž?äAV3>£?ÜÂ5[ŠP®?èz Bðz?ï~Ó2©Eô?éªJÉÊŸ ?ϽsL†,�?å�åÉä?ÍW÷äûá4?çZí솆$?ç¼á ´g‡?í—ñÞc\þ?Óòþv1gì?ëgJ$úÅ?aA.@/D?ä3llÐ?àÊŒ‹­?éH芾?ØÜX=õ‘�?Óλ© d.?㪠kVÊ]?̵7›ôɬ?ËßÅçáœ?Ò|ú™Ìiò?ÜÔߦ>Èœ?×7pyuÑÔ?茂uŽf?à]b.¹·?âÍð]žÞ?Ô›)oå¿~?¾ŒFI« @?ç@†~2zÈ?¹ÐBfÈ?èd+xë#?Ê3=€>Ù0?ºî-ÕMª ?ße¿ô%�ø?ìmxx ?Ï'Ô¡=-d?éZ|NÌü–?±9ìãf×8?Ü1K&Fò@?Û´ê3Ã2?ïúçÕDÇç?ÈÀË£Ø=ä?á¶?¥m?ìÅörÌ?¿¹îŽ�?‹ü·ß‘²@?Öpa©µè?·N\£øñ˜?ÀmLǨ?íï\Ï©ßÉ?뺱�ò�ƒ?OåÑZ(?¶Y$Œ@Ù€?èôᔑ–™?½Þ¨8I(?럡>ăþ?ÚÍK�Lª?µI\�”¸?Ψ3)‹„€?Ò…D¥8Â?íã§JÿÒ?é(iɯ9x?£Á>¦º?¹ÓÆntô@?á³Ï\´?à�°µj?ãVÍØOký?ëzgpјB?×Îhà&Uš?·-ÚéÆÓh?Õ¡ìœ9·P?± š{}ð?–ÔãåÖ@?ï*~S‹?îâº7~�?Ú¿èV@&?äY![g?×Màš6X"?Óª,±Ùj?¡Óªv°?íäèÿ�í~?äÖЬ0æß?Ò³¶%+pÖ?æW�eð�?êIìãM?á��eÀâÀ?åqáv"‚ø?¿W®_Nð?ßè„Òè´?äóxíŽO?â·Õd`Én?â-¨õÝŒð?× dyÂ?Ú6(Èo ”?Áï㽨œ?ºágæ€p?±çþÏ€?ïëúd§ÿ?ìm…U"l ?Ï6ÛúØçø?×vPÒ #´?ÃÐûØQÍÈ?äD¶·½ÿ?¼B:Á ]x?Á•óøxbÐ?À�Û;íh¼?ʼnúI+”?ç^_•#âp?äÛg9À’t?¼¶5Ä«×?Çáã|-‡´?æ +Ûãkó?°ãº«/ï0?Àˆ•ØŒŽD?ì¿zɇ]?Ë"?«Å|?ÒNÒiB\Î?î`…Û—lµ?ň6K•?ßZÝ@sDÒ?æm†Ôi­?³5ÃoÖWH?罃ðŒ†g?ºoQ �¨?Ôæh{ç$ˆ?ËÒqš»EÜ?ÚÚôÎò?æ+dFõßò?y�U�³€?ãî&foJ|?ái& ½J?ä \]ÈÈ?æbÇùWV-?ã½�úË?áøÊéQT3?ë$³Œ³÷?Ú•Ø[?rh?Ü�«zº?Ƈ¿Ì¡ûÔ?å€<\„f:?áùôQ?Ÿ?ñ]S0?Ù`¦úŠô?Û‚gÊá)ô?êYJŠèŽj?ÈqKµ+?ãnª3êá×?§ÒN‰ª€?ï|®½t.6?ê#‚„åt±?Ö¹"=ÏÕ?ÊGX`âÀ?ÛíIô•€?ïÊ…Fp™?ÆT¥®êݨ?ã*”_·À)?ÑZºgÅE¦?ë×WXIKÞ?ç(9±{Q?×… ÂÒÀ?Ø|þQ£ãT?š¾øó“ ?±Î¢O¸?ÄS=`"5L?ΫŠÆQ¬?Ì/�~ ×Ð?¥Èþ½Wm`?á½{H³¡?Õ[Ù­MPl?ë]Ï“Šœœ?Ô‹ª?Ï(?âlŸï>R¶?åÓRQ®I?¶*œÍ`ñ8?ãÊÂÔF²þ?ÞauêÒ¸?ë6çù±:?îo-ÍvÌo?¿¹ÉùxÙè?í¾3T!?ìÈe�Yt[?ÅJ[ª—d?è#ÓÉßþ?élz3™?Ä5/µ©û¼?å.Œ- ?½ÁÎJµH?ØK I8r±½+?Ö¦]ºprX?êæ¦…öi?á:ͧRâM?Ôâk ôV*?Üçö¹f*?ãy^*÷…Í?íV doÛ?ìü ªÓ”?à«.þ‰!;?ÌðKt5Ì`?ìHX™€-?ÒmÝ興F?ÍC¹<?Ï=èÅ›€?ëÒç‰6‰C?íY:Xšú3?èX ð§?í¯÷†m³ ?ØÐ“]Gf?Í×a°8t?ìÏý÷þ~?ÌW—7œ?ç» ŒãÆ-?~ð û?èAÍÇ V»?å»3”¯P?í}_ŽÅö?á+J=N@º?в€v~2?à Xr½C?׊¼YÚŒÈ?än'’OŸ?äžä5¢‘B?ÕŸÒòÅf?· ª�;Ýè?ãnÿÁ:îð?׸|VÙ0¬?ãéáø!š?èܳä‘;?Ô)GSp’ú?ë¼%Z ÷ƒ?Ös}Oÿà?°1®dÑÅ ?éõÃ#;Ì?íp+Àî?Øñ‡(ŠCz?ìDq‡Ï$?Ôl+(Æ£ˆ?âÞÉô±èÝ?ëgÕ@€Í(?è=k»cœî?Ü äSiÚ�?Ãð”›b ?áÊG¢‰}?äàž?R?éß1‡X4·?èĬèû£=?×KZ|ar?ë½z½’ ?Õ.¥v.Ú?éqm¤-Û?Òö09ì$?½œ&…‰k€?èB/†I«?lé€ÄË?å^zÞ™¦?âê�Cæ?Á| ^lþì?Ýlªï7?îÛ÷†W ?çqа«v*?Ð`B‹¦®?Ûà ¦Ùn?ÊÑÄÂkx?ç;_•õS¼?Úv”X?¹~%ºÇ«P?äv„Ž/?Û;«pk0?àŒ‹_žL?Ù'áqçÂ?“õàãËœ?Ò:«[®€?À:áºK˜?ÔïÕ~¯ ?Ý彚Ü[ì?³{/ZR'ð?èˆävð‹?Ƨç!”?çéEe€i®?æ˜#kI?ÞG·&™µÞ?ëË&ͬ— ?ÇŸ©¾ã 8?å°AaÌkJ?î4ÇP˜?ìS¸Ð-?á¾xkš?滨 i!?äÀ–¯ÃR?Ø:åðÍX˜?ì�¨úrÖ?髱Ëàê?âªýtå&?£ŸJ•ø�?ë3Qc²ê?ÖkP6²À.?¬f½Mü?ß5„N æ?]#K­?íÌ‘€Çãn?ÚÒáx€°6?ÞF4azŠ?ãìÞ{�Î?· ¥E‰¨?êéxHÊp?âVõݯ1C?Öÿ4°WÀ6?× WÚ¸Û6?ì• â`p~?×:Xlåp?Ó°‘—bù?ìl�,on?î“;²C¿R?êÖ[ù v�?ç$&CÆ?Õ@³–¹F?½ÔS·!è?ÒDïÂCÕL?Ä/oª×ÛÌ?ÇVu1Ö?Þµñˆ5N?„ftÜo€?ÜN”fíþ?âÿ×ï=/v?à¹{ÆÃ°›?ÐÍoz”?Ùø˜ý5n?¯î'C+Íð?űC—r?ÅŠ²RbÈ?¶¤Íüðˆ?çH"<¤¾?áVƒ ˆð¯?àVO{I_?ÎŽ‡Îðð?Û¬ú†kº¶?éxGÓºM=?àùt¶?Ø"PX<:v?ë'é«0{‹?è÷ayÙVm?áéD’£?çÝOU+N¸?Û½Éô?ë‚élp#±?áÀ…­! ?ÝòâZ5žÈ?ÏX€H6†ˆ?âÍÌr’#À?Ñ®-ÿsT?ׄ>…_?êkò™QÝE?ì¸ý3Ô?íªÁ ”­:?í¸þÂAj_?ëI\8 &¤?ì²·}Р¡?é˜5µÚF?tÛQVZ¾€?ì$@žÜÔ¯?ê^éÎ2÷:?ªº¸«•>p?á¬B(Ñï?Ô¸‡è×Ý®?çtºÞù5?Ö5ËÈíî?âÛžâb²?â`0OÅ?Ûdvƒå0:?釀¼šr‹?çpS?éó¬X‘3?êW�“ ?×óìLDˆ?âB±é4³?êØi¤Í�±?x¸9ŠU߀?æäy2ÑP?ê9Vá%7Þ?é]Û˜u‰ì?ß1»Ê’Š^?ì�ééŽÕ?æz÷} Ð?È)ú 7C@?Ò¶ƒ-Mž?Öß›{ ”€?Ú`CƒÎ¡þ?달~´†¡?áC÷W½øÏ?ÐMPÛBÀ?åPÉ’éÄ?ê¸øÜs%&?ér���íé?ìlvð›V®?Ý×§¹¢¬J?ï=S«Ÿz?§ é¶±Î?Øi–„Ð "?âà\TöÖˆ?æ/xƒßÖ?Ö�ó‚š?ÜâJYqQ€?ÉÙ7Åt?ƪ±k©¢�?‚º†¢b@?áˆ)ÎÔ?Úb®~€Ô?�¬êΑà?àÊ·[æÄs?îevŒ›f?ÕØ‡eÅ|&?àÈ@5ÙŒ?ã$�ÔƒŠ�?Ø F—GhÝ?ÏáR£ÞD?Õv‹o—|?Ò�ÖŠK(?Õm©�bòt?ÜlÇuh¨®?í›C~Tk?馡РN?ä7œoJ®:?éçÀzqdÅ?é²Ðá?ÀAyüÀ4?èÖMƒM_Ü?ÃH’4ʘD?äb€h3½ö?ÙULYΈ?Øï�u¤ì?î…Z :à$?Ðç/ö¼ ?×@ê‹¿¼�?åÒhAŸl?˧²ÁÍø?îqß»8½m?ä–›QXg?ëJõÚÍ¡?àiãvXEØ?çÆˆš}?®mµ"ƒ@?êµrqù0L?à%J"ÆÌ?æ!<µð?íN}ZC÷›?ܪ̴æ#?¿ýÁy¹(?ä¤jÚ8Ä~?Å‚pÌaÚ?ãAý ãÝü?Ú€×;ñ%È?æ{.Ýx£?Ò?Ú¥˜ºV?ãÄ­å·qT?é€ý¤uì??ٸߧõ œ?Àsê¶Ÿ$?Ñç!H€’ð?É•$, ?ï— L9/?éä0qÜôÌ?À{8žx<(?ÔYë9‹*N?ÅÀÁœ“.Œ?Û£àG.*?Ì=8£Ù{?¿e™JŸ@?è¡çõ?ì¡åᄘs?Ïa—×gˆx?¬Ðu¹@?Ô+½È¬?ÈÖ·Ÿ¼èð?¬Ù–íÁÿ`?ï%´õ&о?á;™VÏ?í°yUr?Ñ ÊÁ�Ed?âý2‰Lþd?ä){2«ÑJ?âñ�ÅÇQ`?Þ\18-s”?éÃtbk�|?ÛÉh³°?éÂm\l†?ߥ+øà?±Â�BK˜?ìĺ ·?ÖèÛVòµ&?ìÓ#�Â?ꀹa…‘_?Ì�v|&-$?ÆžzhÜ\d?æê ;í?ÌÁ>œ}b¤?ï’Hg?·I1vÅh?èG°@ìõ?çmóVë’u?é�–|v@Ï?å“P™6,Ù?âixtk?î³€ÿ9Æþ?æô/q 1?ßÀ©ZÌ?âH x±æ?·3„®y"°?Æ·Ž«Ù ?â7ák?åœE»R B?Þ?3ê_#Æ?ìâÔëÞúÁ?Ô‚î{Ÿ¸?Ô‹ƒ}–?Ür®¨ãÞ?ìc`"îYÌ?ÙÓBÜ—Ìd?êóh}pG?¨Ð ðP?â„ÝIá Z?ÀÍ 3ú3P?íK­ÝN)+?°‚‰vtœð?°�ñ'’»p?èaÇw®…ü?ÜUSqåÒ?ê¥Ð |H?Á}Í^„;h?ÞHK×̆˜?ÀƦY¸?îhá‡ë(?ßÜá~ ?³‡¼ —{?ÊÐpÂRœ„?‹= 2±'€?ßf“ÙE‘X?Å9k�ì[t?Ø’‡¦4ç?âû}!k¼{?ÕîÕô:ß4?Çå;$CŒ?Ûgx:º:?å#|ÌO±µ?ÎzC{³Ì?Ïà%>ð?èŽJ,)Ë?Ɖ‘6Ãæl?ãD§¥Âiß?ãU6SJIÇ?Ò=ؤ¢iz?À/€Ùa#,?ž\²�xÑà?îA!r\ä?é ¿+î?âœÝ<—lB?ï~T¤]”ä?é` û×ê?ëÏ+ªAZ?ê¨DØëüN?é��W�]A?èŒZ„¥üO?È´v{"Ð?ÃvÇZX¹?Ô÷ãìkv?«rÙùÄϰ?ï™ß>eÎ;?Ò¢yùlã¬?©+³cêƒ?å™áÀÃïW?½Nˆtuˆ?è?]©a]S?Á+Œ¼8?Ï^…bWÒ¬?ËgˆçCQ˜?Ø´¼Ì¥=?á~”¿Cê?å\þPì8ñ?ÙÙ/WÐ ö?å1ÓaóuÞ?î"§5}zÁ?ÞYOÝå�l?á ·—X?î*íìªÐÊ?âÖ׃ ?Ęà+¡l?¾ë0Û8?»™PºH?¿Ü7�åP¨?܃Ô=µßâ?åZƒG>ó?î  æäí?Ì5š¾@?ÝÄ}Ô¾£n?æb" •ô?Ï»ˆ"±_?ïƒ Ïb?êñP3®?ÁA\"©F¤?¢‘È�?Ò¤t|åŽ?Âm•Ö–â¤?î©Çk2ÊE?â±�g0™?ÐÇûj^ûÄ?çµr­ìY?åìÎ�•?ä�ÓdÑhß?á�}g�ÝÅ?áß ˜(·?ÓSrÌ–r?ÏåÃt„È?ì=^ùÎ7?ëÁ ;°?âJ–S�>_?ÛN)ÂL?ãÔáD¸£½?Ê½š«’€?ÜîÒ½ÞÑ`?Û!5BZ*È?É6dI%ÂT?ÒüQé²?ÙÄ—º2á?çšx7Užh?çRš+œ?ÕèÊÆƒ?àCcmØç®?ÝnÝ\Œÿ?ÔóÇú—$?åb¹ðÅŒ?ßwèHc±à?æ–üI±DÜ?Ù(Óuë¾?èQSßRƒÖ?Û𚀊 ?è¯;/?ÎÉûÌ ?ÓrÑB:þ¶?zêÓCå'?ê×ß«ià‡?ÁÖhÔ5È?¾kãÜýÖ˜?â•ú+èQ˜?Æ­XR™1°?ém§r.v?Øœ]v[?É÷8" ?æ³L;€‚m?ëà’æ{+?è ´@½?Ü/I)ÓP?¿ O>ûì?­„¹nºÐ?àvÓ¬#?ïOž¨•N'?­ë&q£˜€?ìíêÔàÕh?ÜÖ¾>·?çú­oÿÃCP?é(¦–Ü?ÙI×wT.d?ê^«Ät[?å=¸Ô¹u?Ö��¬Ô’?܉0£¸?쑉˜#??Ò�À�þ„?é(VâG?ÞUzêw~Ø?è0lyŸù?ç Þ¯½œ?æ*4¡ïÒ?ËfI‹Œ`?ìȲu¹(?Ÿ»“.j1@?èlW–‚fÚ?äÓùEÚ +?è|îÛi ?ãbÙéNî?Ó24y‰…b?åì´*¿ƒú?ÓcòÄHH$?í“=—Ïu?Ñ ˜ŠæD?Ȫ˜M´3\?â�÷¹§k?ç+� ¶é©?؆Ii@X€?Èë@OÀ?Ô یق?ßø&mâ›ö?âp©_Ë}*?ï+ùëÓá^?‰L«<—Z?”' `þã@?ÂLyžìx?Õð §ûêÚ?Øi)ŠkT?ås:Û{u?ár!z¥×žv.Žë?Ïm€.[� ?Þ»M~v,?ĨÆeòd?ÀËJœut�?榛Â4ví?âü@Ó¿w„?寒f"æ?Ý‚X²¼%ô?挟û®M?èÔ‚(Å·?êozè*²?í�)ú½H€?ï\}ª>˜å?Áb¾KÁ(?ÐXÞfÞ¦?ºwŽ7Ç«@?É„¡Ðøî`?¡1Ÿ th€?ÆdýÖwÈ?íЩ_ö­?Ðá�:4•Ä?èjÅûú~Î?ïÊndi£?ØdËy! ?¹6�eBÀ?ÍhS‘_úÐ?îi¤ ¼?é*`ܬ8?ìkPæÝ9t?Ú5X¹}Ó|?È¥=¶¨?Ó ‡„KøÞ?Ûõ­ ðfd?èNq”‘Ç‹?Ñj_ë˜%à?à™Ê�=¡Q?ïÑÈu¬¼ ?ë“�¾Z‘´?ÔކS?ÖÕˆ#?áJ4[Õéü?â`2èB´?ãKXQI?áÆ»ÒÙÜ[?Í ÇÓ}¸Ô?ëHYÍ•x–?žât›Wü?éÂ_Âl>?ÓiŒÙ¬Õ?ä]Á;žÓ?ëÃnXu_?åØQ)Yí£?ÐÈøOÒ?â�†!©šQ?íédÏgú?Ϙ.“Ú�Ì?㵬rî4�?å>¶¿™ã?ã³ÊŒ¼ÿv?è徨Öš?ë)(ßÁH??à�ê”g ?Î*† ŸÞü?Æ«= ƒ Ä?Äe;�$ ô?ì0Ê2’fh?î"Ú¶«•?âÆÆH7Œ2?áEg/Ù­?ëÐ K>Ò?Á»Ô'™( ?0û²©P?êÒ-}¦a?ãd7Œ–º#?àîÆIvô?Ø=Èxè†?Õìl^d�t?škä?·5zö4 ?äb¤Æwe\?ÕD*#¾?çR(‹Ùo?¶§²ß@?­J³À®0?ìåíT�I�?Ò=�Ì�mô?ê~ÈzRºµ?åÞy¢òP=?æ=H8ž|¢?Ùñ;&7E°?ÅÛ=H¢è ?åÙå¿"³?ÔcÛ½<:?ï”–­'k>?ëzÂ, V?ß±�SíË ?¸‘2~c°?ãHâ•å>?îRϼN(?­2O}�?ÉÏ ¾]B¸?tTI­îã€?î0¬‚ÛŸ?—­íA<@?ãr¿b��ã?¬xSeNP?Ó8š=Ÿ˜?¨>|kà?îfÜš²{?àùóYKõ?ÆQ$h{ï¸?ãiÊF+™R?å8ÿ¬r•?äu,ψK?èò¶Ï2?žaxÒ‹ ?�  òG‘@?Ø@~�Á¡þ?ëÿ\SÊ?æV»KX„*?Ü’˜.Ц?µ.éUêßx?Í~ðÎ'.€?¨~%ßst ?Å­©E—@?Äù°,x{”?ì4Œª-ì?îWè»PÃ?ÇÕšyB&x?î‡ÌþHÀ÷?Ñjô�kÂ?êš­s;†?è Z})Ø?Û�4£àoú?³i¬äNëÀ?é,â äª?ÍY(ßøH?×8QÐÙ ?×N³4Â?èzÜÈeý®?Ý™"e˜?Ò¼z° •@?é%hj™Òƒ?å&­B•t;?ç‘o%�˜?îi—�Ö]"?Òù>eÓr?ÒaÁ$˜Zþ?×çLj³mj?ÛÛîÒß¼?©ƒæüø0?Õ.hè,O?ÛRSŠ:?ÓÐ5 %d`?Ý–[ýÄP?îËÂâ|j?êa²?Ô ò!k2?²·q6@ò°?Þg{û3÷|?ä�~ò$&t?Ó�©¿Ë‚?ÈÙ:ê¼ì?çìap÷žf?Ù}døàW^?¶@ÉÈÛh?æ>ñCâ?¸?ê[)ðþ?ʧª?à8è’öz�?r#c "ª?Õð›Æ %–?æÆeWE??ÌD²eÖJð?âG®½P¬?s…EyÌ›€?©=½-bs?–] ÖÆ—@?Ý׈Áv ?ÁÑϺÕWh?½²]‹q_H?æðË B ?á÷‘^o�œ?î�8®ÄK?è»Þ–ì}]?·bš ¡P?âÅŒx·¬I?Íüß­è¡´?ào˜‰kæ¦?â@DþTPÛ?ÙId˜n·2?͵çÂI¨Ì?¤ºp6›KÐ?ï;í÷h%™?”¨8Ôdà?ß°]þºþB?ªß¯+šj0?ÕùKO5û’?¢ìŸRp?܈5N³¦?Ô†3ù€ÖL?ç/‚·Â_E?â|¾³ «J?±;=^Ö?å}RgˆW?ãÜ0‘OÌÎ?ÞjD«M¤Œ?âåO'¾ o?ÛTÈG©™8?ãX±)/Ç?䣨ë†×?³Bç^,¡ˆ?ÆPºwÎ?U´�?«AkØê½€?샨© üþ?âÀˆ¾4á?ãrWï€Lý?­ú½$=)0?ämv�Ôß?Ü6¡Û_CÐ?ڸθ*Úˆ?Èñã0ݤ?Ð7[Y‡$Ö?⹨ÕX?¶ˆè‚YÖ@?êÛc-?Æs¬l©3œ?Æ„þM3ä?Ø õ 4?⛬øÕA¸?äᜂAÝN?ÑüÆd÷,6?ȬoƒåÓH?Ï TekLØ?Û Ý]Øzb?ëÃÛQ¯Óû?ë<ºÉ È8?Ãì l�,?ì•è?æ¹ �]ϱ?íRÞ~5nå?êXÄ΋)þ?ÐÛâ¢ÀŠ?Ú#!CpR?êèŤ:£?Ù¯ààJ?Âô24H@?êÒÙêÔq?äLFiÐ'N?îO9®”?î°|õ['?µÓ!üÐð˜?æ=Þ^Î?Ú‰zY°?ÅÌE��°?Øø%'òŠÔ?ÝGQ2Ó{î?â¦Æ/—P?äÆýÙ¤Ý?Ñ|îàžá?|]õ–8²€?êB:Z}÷€?‚Š’{¾ @?ã· §¿??ë³Í\â ¥?¾ –¡îà?è$ÙN.ÄÅ?™‚Ùæ½`?å‹�òð¹ó?îp<ÿ޼�?ä5ºê¿¸?â$ý8²§¯?â䯀�,?î J·âäë?ÓŽž¦šü?ìsd?ïKò²è°š?Ü”‰Ð÷Íx?¤x>ÈZÅ?·Tqœ‰}p?æ7f½ÔÑ?î4·#ÒcK?Þ)¨ÕÃ:2?êýg�»(?æª/ÈP?ÐA¹z·Af?á³ÜÊÐ2?ê†Ø@x ?Ö›à©:ª`?¹òò]Av?ã¢={Z’?À‚;:”t?ÑåÁO–b~?Óƒ|™Kd(?Ô´ôK2W?èwþU€?ÞBïtS j?ÅŠîÞ?ZX?ÌÞ¿!Nº,?Ж š !R?´sʱih?ãÎ�â¡?ãäv™rPD?Ç- #…4?Ô2Åz–V?훫>¯]?ϧ¸$BV4?á5ØŽ^øÿ?Ö™'J1F?åfßΓ:Â?ã&jú ¯?ÀH>°ššl?皦¡E?í‡TW¼S?سR˜ù4?åáÊŒrz·?à�B!|üö?çKÈH[?ÕQ“ý˵Ø?á¹GÙ™T‰?ì¸f{½Ò?é@m–4i?ßP‰óc¶¼?Ýóx¥9XÈ?âc‰µÁJô?²nIÙÐH?ꌙzÇ?å#ìRÛq?íÞ’¬!âw?èïIKß§?ÜÔ ö•£h?âF‚-´€�?è;9™ M?ÄF]H1t°?êh•;à�?çPÌÊ*‚­?Ð?‰eFX?ÌôÇ/L?“ÆàI- ?ï$Ê1³ð?â#âT@?îa€¯YÊX?étó@bã?¶!ßÑ¢ìØ?±}]*$'h?è«öøºÝ?ân!œª?†ûã® D@?§l†< ?Ѿ.ç,ê?Â1ÉÝ3üÈ?Ðñ²H�Žh?íL©}3új?Ùˆ¢§âkÈ?îÓ·µy:?ïðcáçÜ?ß�ß÷nø>?ϱŒX‡©ì?ÖZ†P„ *?îlH€PA?á�„n y?ÂRa¶æ®Ø?Ħp8fÀ?â—fÌ#.’?Ô²-þþ ?ïPTgz¢?ÖrÑõ±¦?íhB �lï?­;€ë¤|°?å Æ›U ?ÜÃ&ÖD?íÓ°9ôL?¼·&Í�?Ï Èš6l?Ú÷}Ât=à?““EKþ|?í ð7|¤I?͵@÷m™Ô?áÅ<}θ?ÈhüR|ˆô?ë]Ê®2ê?èš‹ÿLT?ˆ3ÉþöÔ@?ÔL“i{`?ÛBZÎýDÌ?îò"pyÿc?ìùì+×í?éR;ù¥â]?êv+W[äK?àr›pé©?ãXÖåE[X?ÓºÔ&ÖÕº?á®×0Ç~>?Úк™�š:?ïgÞÂØþ¦?×pøÈµÌ?ÂA�•n¾¼?½v„'–9x?Í�_l…¼?åÿ×g·�?ßû† ¢„?Ì 4î3p?Ó‹x†¡fØ?è5\™�Ô„?ë3™ï1]?ÅœøÂX?ï5×Á�_?Àóã8М?ÃD#ËUÕ?éú…¬ã‚Â?áµw\þ.I?™|þ>fÝÀ?Ýá�k?Ÿ0?»â\KÉ(Ð?Þïšf|µ ?Ì’3°Ð?ÜÎ7GÀž?ì#añ†??µ=ê<³©P?ÀOJCTÂì?µû„_Šß8?Õn¬¥€ú?êfS-Þ�s?Ê/�~hÿT?Ð#�—Yø°?×’¾ìœ4¢?ቭ²™„q?àWYR²å?Ñ þß¶?áÿmTsá?áxG�z¨!?å�ç[Xþç?¸¬ÄÉÂß`?Ë게Ö$?ìL�…Ñ@?Í€µ•i†`?æN-ñ‹ãM?îþ¶ƒá3÷?å:vAžQ)?ìg$­8�?®>Z}ú?æT€eÍÝF?Ì/ƒ(}P?ЙQß(ÔH?Õ§”›(”?î§–oë+ž?ÚSÎîé6?ß#4½oÎ?îŒ)õ×—è?êÏñ3£ãQ?ìFY ™È5?å °&F˜á?ï³h�Ûe?ì|ù Á6C?íÙŸ¼>Çn?Ýyޤô?Ì•&Äp`ì?ßÂãÁVE„?çm+´`æM?×èö\O†?æ.B_A¬?îw¬ÀìšÏ?éØ}� ]?様µõ�¡?Û5(ЋS¢?ßï²ñ¯?ìÕе¬?ßanb¬ö?ÎÕÉ89¼?î×e´ö8ê?”¡ï� bÀ?Ö½8êc‹ ?æ¿åLúÚ?¸óë4p?äªù$ã?âÞ4R¬ ?îœC3©?Ú¦¼ô×Ô?îMÓ¦>öÉ?é𬣯j?ׇ e$þ?°çÖd(?â œŒ!W?Ç ýX×?íçHÑ©Â?éÑüaÊp ?ç^¾KC…Ë?Ѩ�?ï™ÇôDäÐ?Á”•æ„?æ— WÌ?É0^+ Œ¤?åÆ_WvH:?Þ" ž¨¨?Ñ{”é2dò?اT¤Ã²Ø?íì"ÛÂ"K?í`Ѓê6?æ|8Oò{?Ü ‰=ËŠ?á±Ð¡á©?èÈÚ¢sk:?Ó|Ö qR?ÅûßÒP?ç� Œ2?î¨DÓmö?Ú²rjJò?ã‘)ž¨Ô?èÐܱ}ˆ?è–¡BM?æ£Ê&ˆq�?×¾ ‰-ì?ÙABPµ´?â¿9±PI?Εøb�Ü€?×´$£û®Ô?݃í»Â�?·Ç¾mÓ² ?å BÇT¥·?Ê”ns<&T?è_¢LÓ?íë²@Qœ?ÁVr®Ì�?»Aí•þ^¸?±¥Ð$¨˜?ï™:“7¼?Ô—·ay”b?¶ÒG lJ¨?¼×Áع`0?í ½[ß?×½‹0¬ú?åŠ�sV¶?èà�Ñ[÷[?æ[4>/°}?ÈšÏôdžäIß ¾?áâ0ÀÉr&?ËVy £�?ÑüŸ6}Ì?æ"ÓI•»m?á,åâ½ï?ç�/¿Tè„?éXžŒ Oó?ÍGÈ„g”Ì?Ò²G@˜ùÎ?ÑåØüGÞ?Ý›kíö�N?ãh%5i{Ò?êi'VÛý?ÛÆ�@fK~?æ"e��ça?ãÎÄO`¬Ç?ßZ>û×ô?îyòÜÄ*?Û#´¼Øx ?ÔåDïiȤ?âŸîÕf7B?­~ �?×cuÞýcØ?ëHŒxkW«?ä¹ÄLA¨B?ÀX3ý7ô?ÛUáIe`?×ǃÍ3´?Ì©r)׈?ÙI¶¾Ü?çý½¹±÷?íz¬>·Z?š^;zÊÀ?Õ|k´^�æ?ß´$öyN?íbé3ó(?¯74yW ?Û³­îÈ?Î÷¶»­š|?á�6yèê?äÅ$¬ÄÏ?îÓ›)MÁz?ï‘­Árü?ÛÕ?’Ñ�?éi¸éV�Ð?Û[Ÿh�¼?í)ó áÒ?ÚFŒÎPh?îà­Ø›]?Âç´ü|ZH?Ò/ºêkH’?ÃKNÎrA?áb3Që¶ ?æ„q`©…¿?è`Ó�…%?îA�©w<ë?’�õIéÏ€?ë�V×PÏ?¯_~ÆÜ ?Y½Øü?åâ!óNÈü?íj�¢Þû?» áp|J ?ã�s'`·?å½Ç{�¦ø?È›²vkÓH?ÝC%za�à?ëòÏ_Ú·?ë°/>„�?æ@–¹¾A?ßð‚H€éÜ?‡ˆZ›¾©@?âox~“ë?ê(]n…iX?À„îÌ€H!µ?é;ݧ$1?èÆÒÊä(q?ë# ·°…¡?ëÖ³ø?ÍÔKÀ›÷Œ?îíñ‹LNv?Ƭ€å¦Ü?à+YChy?¬G¯ßÙ ?�R‹Б ? Aþú9‹`?Æ™ûýƒ`?×]�Ó§¬Ž?åZ²ñ8{`?àä…<€õà?äÇëoÞ ?ç0¢[à�´?è@ó*;Š?â3ïA†-?×AÖ$þ­$?ä¥~§±Öx?ËMê•aßh?î GïL?ß�÷Ԉ?æù“£Ë?Ú Uêôs?Ìâ‘¡ À?ãgÿJ‚²�?© žôž0?à¢éf-(w?ï–u�(?±-—R{î¨?ä•SfG2w?éÈ™9yF?äÿp¹E±?ÛŸ`/þ·ð?äW˜]«RÆ?Ø.³n»!â?ä{ÙÐÇq?Âþ2¤pŒ?é±�@úü°?åî}ðP”j?á/®ü ²¤?å™0ý+rØ?Êa܃„?Þøpä?àÌK®66 ?Üc7FاÂ?ϼé7”?ëmÀË©~Å?ìÈ�/#7?Ú fù¢@ü?ìß=ë§3?×ähh ð?Æ¡[sìU´?ì´-º"ó?«*¯‡¸¼P?Ó³ëéO:?¤”àGP?„°+5Ò¬À?Ôäîh—?½ë9®“y€?Ïöa˜ØId?æ¹Å¿Ña½?éB!Sj?Ì�„f{ìä?ʯÃ%Do?å¸}D‹9¬?åê}ö—Y?ÑALZv3 ?ÖÊ4r èp?ín‡q¥¥…?Úí·Ó<0?ãØ”ìoÒS?à×- ½Ý?í‹È7(?î@ö|ŽþJ?ÎVk�Ã’Ÿ!?«èî~ò0?’ùíê@?ã7­’$ZÖ?¢4\_ý0?àI]ëTŽ¢?ÜZúÏöTâ?ë b@T>Y?Ʊ3Âc>ü?àâûr;?–TU�«À?ïF›«=¢?-Åýï?áÝøF&ˆ?ê†$<+§ê?äRà51æ?ÌVØ}ÉØ?kÍ\�?ïçTû V?çtÏÚe*ô?Úù¬EVº?ÈçiÐ\ Ø?â Ño×qÏ?ïúþõ§áƒ?À;ã¿é�8?â9ZU {?è.ŸŒl4E?Ëõ˜´zÒX?èØÆFÜh ?Ãúí‘�œ˜?éS .ä b?îÜ¥iµ.ý?ÓLå•Ã:þ?éãÇì‹ý?àV½lù|?âD•8 Ó?êD-½ñÂ?–§/Öa ?Ãe`ªÕØX?Òdø[ ?ê�ïúDZ?ë&¨’nÍ*?¯Yl[h°?ÞÂ@QˆŠ?ÖòHÏŸ×b?’ úî…?‘ŽÓÌîM?é®�� à?èFr tB?× ˜@vO4?Á“¾`¦0?ë"}/V•_?ë =Ú.y ?È þ®”œ?è·W©ÐÑ ?˾¹ÖˆT?½4 €ˆÀ?ÞWjÀÃɾ?æÇê•ÔU ?Èf,^¦LD?Øâ¶4"†?Ô­(ÍR?í|·KÓ%?Íp[PV¤d?Ð"Ɔò™?â”×ÿ\+ ?Ûî@:èÛø?âæäÄÌx™?ã�…¾-#µ?é4b&:/?é&sȾv?åßÃÞ#°?ì,5©ÄrÐ?åWL"ëÇ?å9…ùË$(?ãí¶Èê?ì-§“ÏÈô?ã–£›»Ù?ë-"b“¹?èñÂ"Áãö?¥²Ö„¢ð?Øà¤€î�?’´f È/ ?Ò¾”ÜÌ?î!ïâÓÐó?³0ÅâœÀ?×°¢Û° ?¥ôH| †P?äOº*~œ¤?Ý…uò¹æX?ê£ÙùÈÙ?âä×7Ù?çæ¦ëEã?ìn,epþ?ï¸>¤uÐ?à‘ìïĈ•?Å1ô$‹Ä„?ßÿþoºŠ«tHú?Ö¹{Þ'9Ž?é(>uúw,?¥C)ZÄIÐ?Ö5bS_î&?§Ø!F�·À?ÕŠª?ƒî?Ø«6VD€?ï€�kaœx?ê9)yóÄž?ÐAPàòp?ír˜�Š…?äK­Ç H®?ì÷#L¿?ÚIh×xN?êF:ÐZëÒ?áDƒ š¼?ϺÜ <8?À¼«oçÎ ?ÂN2 s^Ø?ïÕYÜ^?á5z^‘?ê_’œ*Ë?Їë‚¯6?î‚z§Ñ94?ôf^6W˜?ÚÈ{ï5$?í†Rv4�œ?å¹¹3¼?Û– ÕÈ–l?êXø=ÜJ?íi »�¤0?Ók‹²¶&Ü?ЯÁA�ƒÌ?èÉD¤q¸@?é“ã¨2Á?ä€ô½¾N?ÕuHá¯ú ?ІgåO4?_D ?åÒºC´.À?ÝWz6˜?Ö¸Öegø?î R»¾ÚÐ?µÜöòìø?à-Wó‘”?ÊŒk1¨dð?â£òu/þ?ÝÅl´]>ö?bxÂæâµ?åH“”€­?Ò–xÞØv?ц+}ÁÈ®?ÖòKŽØL?ìdùp7t?ÔYáî.?íI¤õ¼V?áG[øïKV?Я•àBT@?Ûí@ü!à?åN;¢}4)?ì� È2à®?Òìf!*?꣘YÓí£?ãIõq›ö&?áhà /Þ6?Ú‡õ¡÷?ã†7JÁx^?Ê‚ò†‹žt?íùnæY?ÓЀ۬cÞ?é Ê(l[B?�†µ0ôýÀ?îG$c|aµ?¸–­Æxà?ÚVš¶“„N?ä¶IÒì?ám<2 ?àp�¤s-?ê4ïb,´?â?!~/Ü`?ÇÆÆ;NVŒ?êú �­÷ý?ÉQ(b+- ?¼ÿ~ÌÍ’ ?Ü{Ðìæà?ãúQi?ë²ëH�%?íˆ8�Fœ?ì÷-“ó?àÖ8ù²!?훘hk!?Ç÷œ¦Ð?êÿšº¤?à[š™Á?Ñæ©KÕWî?Õ°%CôpÊ?à»I!Z–?½‚ ¹Œ?Ù·ui³Æ?à*–/¨Jé?êUÅkåÆ?îJÀñ@,?ìˆ,eúÐ?î‰öìú¸»?ë ¯7vÕ?çc†ÉÙã? ïÔdCp?Úåøþ¬à?Â9æÒœ÷ð?ÙüýåÒÔ?àš¥�Iþ?ä[ßd5š?é693,]?ܺڬ[½ò?¹ÔµJœB`?tÌ ·ô«?×!4DÐ3Ì?ÛdbeÆÅŽ?á’F³Wi£?×[{À%Â?Á©ÅΖ‚8?ço­¤L?ºÊ.&*?âëéÕ”4 ?å [ÒaÈ{?ãñÕQûY„?ÄjD8]<Ð?ãv ôô;?Õàk÷ÞÐ?oh6µ¢÷?Ì‚2• ?ïÛ5ê¼è?çÙ'FåQ6?áöÆøÁò?í×É'ϺS?·7ïÕ¡ðH?Óq»æ56?ÑmdÊÅL?燿ièë?å'¸„“õ#?·;“¨ �?é|XC§Ì?΢G~c?ìÚe}6?àQ0X¡1L?Ô´þë�L?ï¢úÇY‰?í–“ÚI”Ø?å8z Ï œ?Ú µNí®?åÚˆ5yë?¸rÄ*÷8?È(}D…œ?îøŸ£3ü?â4¾ƒJ)?æÌJ€VŽC?¾‰Õ¯â§Ø?å�UŽÌ˜?êïí,�°ñ?äÐ=Éù` ?ÜjR��V:?¿Ï†3w¬ ?àLä»)6?ÚÛפ„^b?èG1žzž?ç‚&úaß¹?é"q5y7¸?íµNÊ’¿h?Þˆ— Çê?áñìFåg?ÖÓ«ºdL?ÂW9²¬è?í»Dûî?׿h6Uxê?Öï,*=¡8?›Ì3r¦?´×ÿyÿˆ?åH[˜�=?ÞÐf³B=¼?àáG¾Ž6?Ð�þ‚¿R?ã8ÊHá¹?ày³t‹?¯F>ÒƒÕp?Øràaóª?Ð@Ýå1®?ÄK·ûÁ€?î¹ÌŽ7Ý0?èšNæÍjè?Úà½íöJ?êº&Ô+?ÓPØý‹ì?É�ï:6L?ão/Í(Åÿ?ïXÄ6û¢?ÜT%Vìˆ?ß9}Õ˜'è?Ìf=¿Õd?ë2Òô,ï?Ô€nBTëp?é¥ÏƒY°?Þ £F/*Ô?é—áÆÑàÐ?é|gÔ­t?ë=Øjȵ?ç�¢2jg{?ß”©›úB?Âz3 ˆ<°?Ú})ùôP?肾IR?âÍ™L–?ê¤øB!¨�?ç8®ù ?â¤v)'?ê<ÍžÇÕå?åùß%’µ?à,UÆåÈe?ǹrÌm ?Ó‚±þŠ+P?ç(xgßåž?çy|÷¬ãN?ág — Wš?íHõ’]?³‡p¡H¢h?ÆösåRÐ?Þ‚�f�Sn?ë=~w[ÿ?áu /° Ø?â.-”ŠM?×±&Hµ¾d?Ê·8~î�È?îÎç‚|‚?Ø»Á3Ê3N?ë`ôDÉž?È¿- /¿È?Ñ��Ø÷Ø?íñüëe?ÙÝPNAÌ\?Ö¬‚¨h"Cv³?Æý‰±«Ì?ØFëòë?âNñÅucF?î¦(äO�?å¨áhEw?àG]âÏÒ?é_� xçó?Гžo‘·p?ïÊ3÷PÄ?굎]½ÕÝ?é[PÌû?éã ¸½ø÷?Ó§@½ž†?Б\¾RF*?ì‚�zR?妣b’Ù‹?æ€ •â?Ñq”_îp?å^ר™ZŸ?Ê'Ï/ML?æ‡)¶~ ?áø>ט¦”?·ûB˜0?ïû­B)?*?ïÌ~š2?äWöNIÊ?äÆmJA|W?¢>¾Ø}Íp?å5Y>¼"o?Õ‚%~Sê?é×;Ω?Ÿœ’XoE@?ã�!Û4â¨?нû˜¬HN?ÞŇ]Ûî”?䨥*”�?Ü°à‰¶1^?ÇÖa_T?ÈDýE?×{å§�ú?¾Ä\Âb`?ÓÓlá˜x?êüô„Lþ?¨-�˦@?ĸýóÈ?íÈãeIh?íŽàÔ¥1Þ?êÑÄ]ø×O?VH²omÞ?Êp6”—íŒ?ì�­òV8š?Ã× º¤•d? {„( ?ÐĉÖël¼?äÅ‘m?Á˜?é°Ü’þO?à./ÆLJ?›¬è4ëÆ`?醠Cnã?îG«�w?à!! y?å‰jRâ??ã…Ö'Ï>?í5¹¤z_ï?ÀRÛìÍü?Õ[—ˆ�?ßÀæ<ƒËÎ?àažlsÝ?å@\j²î?áèAø¥0u?âð#Em‡�?Ù/¤a'zÂ?á@¶ïgW?Ó&mÓí4?ÚË5U^× ?äÚz‹”·'?âŒ9Cý?äв ˜?Þ¾DðwòF?Ùò-$X{Ø?ßeMÜyæ*?¢QÖìxãà?ëõH/ù??ÔïÁ£Á”?ë %DöÏ©?ÖVú³£´?Ôã¥ë+@?Ù_´~ª Ø?æxÅ ?îNÒwÜy+?ån>éE@?ï.Æ…Q?ÓŒ!Ƭkx?ÊLÈ�ÉÊÜ?拏¾M�?†öÁ0Q~€?ÚHm¬«è?Ó%¶Æ$b?À qûlŒ?Ò±eó+6š?ÔÛÆˆ„³Ô?áR[ê2n?°€J%å¿?Øïq¬« ?îSúÌž"?¹—fƒ¹X?æ>[÷\WÌ?¿$ÇÌœÓ8?틪/´%¥?áØ8O2J?¬Å4À>p?é`P9͉-?í1æ=›?Ú^ubökn?ìï“ü?�ua…@?Û5üÄQe?Á€Å'•…?ÌPxV™�?åÖziÏ;?ãöMÑ•u?½„8PÞ¤ ?°täÒRØ?°'{ö ¨?êƒZZùç?к‚*–?éŽõ77×ó?Øå ËL?Ý^VPš?¼¿ñ�8?ïŽUøZÙ„?ŸŽÏG× ?ß»ëq"?ËE¦›S�?ÙG»Mu�”?íSÍo¼¦?ÔWÔ /G¢?Ô©1‰o8?ÓêS\ü�?ërMœ…ªH?é† üUvd?ÚÇ�¡3Žª?Þà Äyh?Ýð MÏr?ÐÅi{ǰ?ë,ÇtxðO?ËÆ.•ÂP?èýqnË`?Äaþ�©IÔ?®¢›Ø;ø ?ê(ï5›?íËÒ‰Òm?¸ûÎá'è?Øz)x÷߸?Ñú)¡:€?Ñú¨ô‚SÄ?âu2ø)šÉ?ãE_›�-?àTw¶‰?ÏïùfÐ?èÝóþ¶Ï?Ûù™(ÑnÌ?ìÝšßÑk?Ô¼…þï(¾?å£\ ?ÜÐÉLç´?¸ ß?âdÃ…e¿?ÝÀË^ ?äp õZ?Ù•Ÿ·y˜>?¥ÿªù5Š0?ÞîÙ�Ibø?ÇHþÖ?ð?¸hüÝ_xX?ívÉò©?î˜tý?´º~¶Ãø?ȼÿòPÅP?ÀCàˆ€º,?Ô²ÍÉ|$J?ãù-?ÐÏÊ?Ý%}‚ÞC ?è¾ÄÙ —é?Ü<9¦È­Ð?ÏÜ¥³è ¤?â46¦ä›ª?½Øw¤@?ßÒ�«_$?¡9WÜP?Ùu‚ MZ?ëë“'Tw,?Û¿EqàR–?á7ZqÅ%=?äV+…å3?ëÈ$5°?æ’ íÇ ?ÓFÆNŸ<\?ÐÈÆô©Žr?Ú×ðXõ0?Í«ä1>6 ?߇١>x?á.é‹—zé?ç‹§w3a®?¿Ÿ©ä‡¹ ?ÕY¾:£dà?¨z`ž‘æP?ßÕ¤zŒ_|?Ðp¶Õ_¬?¼šçø×sÈ?íïpþض?è‘ù&¤qƒ?´Óèò =8?ÒðÆ'jÖ ?ê;ðhô×?çÖ¾‹REœ?å}¦Ì ­Û?ãw×mª?äœÙ©ûÚR?íÃ’9ÐÅ”?Ì!@[Ý¢L?Ù$š²7žL?èŸ"mˆ"?㯚¨W1?ÒIH—޶?ï_ß½ üŠ?êD §`W4?¿¸ùž�?ÙþÔeX?ì æd²Z??Ë‘f÷Ll?É‚‹ñÁ\?Ò•þµÏýZ?ÝS™ÄFv?íŒ $ãDQ?¾Ïõ,FÞ0?Ò™rBêqð?°Õ«A{FÈ?ÍâÂWÐlø?å–Ÿ�¬ÃC?¡a\¼u8ð?ÈtЦ}Ú?ã�«µØ..?íom´(°;?×sïV Ž?lõBõÖÍ?âZa]�·c?ì~©îöCÒ?懊¬Ñ§?íÃ<1ÑÁ^?ét/òòäÔ?Ü“[U¬?࣡Wžµ?î>pS¶=z?­Æýpݰ?ßüÑôaÅT?ÌPе±ð?³œ> Ü˜?ºÍúýYI@?ª+}™›€?êS£š´?Кàn8#Ö?ätËv¿Æß?èK²ç¾©¬?äÚ‰Rã??ÊayòÚ­´?èÞC¨èx?ãåÌk{?¥aˆ§þÀà?ݦ¬ŸÞ?ÓñâÑÖH"?áú©É¸Ã`?ÕÈ»tþ™Î?ì“cïS~†?稳<È?阈/¡9?ØŽÕ…0¼?Ë"˜™o`?àŠ“D5ã¿?©cƒ2ß ?ÓÏ(à/pº?Ý>*diÀŠ?ÐYaƒè>À?°j¯g'ô°?· 1þF‹?Ü–â‡!´?ç§2Óˆ*®?éP™‚æ?âv‹?Ó aæ‚–?¹w9ÐF4Ð?ëÈHz)†¡?èBJ*[P?À7+”CÂÌ?ï3yÏ}p?ÌWÈ·ÏJ$?‰#ÚÙ5GÀ?ØqÒP([ò?ã´Ï·Œ2Ë?çpèaäÕ?ÂOª�\d?Ïß×WSd?ê)Qs‚P?ÚF8,XRˆ?켓ȩÄ?êUE®Ìa?á–ªzÙ?åO¦U– \?à]ÇHb@8?ÊjÀñð´l?ßšÙ3 ö?ì´·7Ò?ãÏô9Ű�?Ï<{Y8è?Ì',ÙFÜP?äôÏÖÛR÷?Übò“�µ¦?ä÷±t—¹ò?ä‘ÂJ0ÅÅ?줻º¼’?ßé£Öì�Ü?Ó%çNîGÜ?ïñØ&—ñ?“†r8' €?Ùð=D°2?ã€úb�Â?æ–âꮞÐ?Å�¸J^ 8?ç=—4e�C?ï¸=G hò?îÉMÀ½aä?ê‚ædsK?ÓwD» �,?ë@=棊?ê& =£%Ã?êØ»@ù´|?ë¿ÿ…ÿé?èpFϳh?çÔ™ Ž›N?Ò3ج?ähY™�±?Èyƒ± ;d?Íéß«¼ ?ç,;móÌÜ?ß¾„1“Ô?ÄOÀ.Îad?âZžðàž¬?¬ñÖ/…n€?Û‰XK’Ñæ?©°IÏók@?ØÛ¼�Ĩ?ïÉ×ËŸÀ_?�8<ÒÇ@?è…¹æT0h?M?%Ià ?æ"úµ¬¯Ê?ãúuãûûÑ?àƒ·>ûÇ?è˜Ap©L?£XÓÙóð?éíú!¡Â~?ËÙ�œq¿È?Ðô÷š"F?âÀ‰.ë?×ÑGõ²ˆ6?ÂlÁ¯.&ì?ÀÿIÒSH?ã¨J>»¹^?âõÈ·?„?áŠMÉ“?ÂÿìQÀµì?ç%�:“Ã?ÎL·ëRÔ|?ë¬[ð: V?ìIhë Úø?áÎ�UÖ'?ë� ð"¦ ?æ|tò ©Ò?ܺ’½„V~?æhøí=ÛV?Ï_ìùU ?Õj˜ h:?Ï_V¹wD?äJ_È?ϸÈIC¨?ÛP?Ôð+ˆ"ª–?Õÿœ]�A¾?él‚/LT?Æ~-·ÙÐ?à´D›¤ ?ì±£[šÈº?â!²h?ÌÃj ¨?ìë´y ͧ?Ã0^cÈð0?Çòªªæ>Ä?ãÍBߨï–?íÉh‚@Õ?ì_ž×ÏQs?Æ�ÈC+ð?¢™]®û €?çhíqç•î?Ôjî/ÌyÊ?߇&-uv?ß Iå‚Ò?áÐ?©ôM»?ÞúÍÎd·”?å-©ê4’?è=¡v/Ž?Ù4'ŠKÜ?‘”ŽÞjî ?ßÔ^ýX€?íG¸¯Ë:º?éž =«Õ?ËVi|?Ü CðCÀ?ʱH…¿z?â]ßÉ<�Ç?§HKÌÜ?ÅVÌ�d`?àDÞýfT¶?ífI •&?Ã$.8ú�T?èúzÔš‹‰?¹«¾½x?ì laý?ØæH5É>?ÞÌÚËAä~?â€uƒT>€?é^"ä/Ã,?Õïñ¡¼ð?µ3ª�3 ?íøÿ%e¯o?˱,¿vë?™*`óåz ?ºàݹUh?çÚñ@¾x?èÇ¢¾õãÕ?è3xû{o?㤈,¾E?垯 ˜ä­?Ñ~±P_)À?ëÑ0$ëËŠ?älN{k·?×ÐÑ9éè?ÛVÓH&?Ù¨‚ŽBê?çÞ_"o?í·÷ê5c?Á†û>‡À ?ÜÕòW\t?ï•:l²E?äëûŒÃG?ïøëj“6?àl¬_®?É—Jáq ?•Xzl1Ô@?æN1Däƒ?ÐÒÖ/-!P?˜'ìðÚ0€?¼=¨Iç–ˆ?çÇÔj¯m?ãTT]?F€?É Oi¦´”?ÔÊ<àƒŽ?쥹Ó"¹|?ך½Ï²¨?ç(ÚV;¾›?áìr—Ñßx?ï´ã&±â?ÓÁ3'å¯Ì?ßw…€Á\$?ŽF«ÖAìÀ?ï­1»i?å=H«åÁ?Ù³¼»—sÌ?Äõ.8�n@?îËï}�+&?æu3y.¿?Íî/¼�‚ð?äð~u$¦ˆ?â-n\3¼?ܸcmü‚?äü$á»-½?ãdÏ¥M?Ƹu:>}?Ï<bc½d?ç—È÷Wô?âÊÕÁnòl?åE$ï,Î?‰«©V7?†Žtv@?ÜåñONž¸?È¥GÌã÷ä?ïÞi;¨ÖÊ?ë Ä(~<9?Ô'¹�´?è×ä •c¼?äVŸàVºK?ê^�ä¸'6?ÐÚ¯jd"ä?Ú•ƒ¹#!à?åè�Æ$|?¸±¬ñrïx?ÔQX.8Ë>?ª–� €?âÙÛÀX‡é?å$žæ+V?ͧÙ4i=¸?ÓùMdM4ø?´Š":˜Ý ?ÐÁa€ b?¢Ž@Óž°?äý÷Îר5?í•åŠÀn?îà[®#R}?ë½c¥ì�W?¤Ñ„p™›0?Ƹ ‹?«l?î!±’Ð�?Ù&ñâUö?ÀÍåÝh?îE¢œ*Ö³?É}EÅT‰ô?½zAˆbŸ¸?Ë]šÎ¯A?Í)Œ]¥Y$?ÉFrÃ,;ˆ?ÐMðÉ”.?Æ# Éþ¸?ìŠÉ3h¬?çôÖœ¹?ßEjÖ{mî?ïx¯´z5]?æüÙ{a©½?Õ¢€/j‹~?èHA›i˦?æ­ãÄkw?Ñ~Òr:?¡¡Øq`?ìñ}�?ï È“¿ã�?Ö–�jËš?ào§™8ÔP?ç}”pTÖÜ? Ì«™´�0?áÄ¡í«‚\?ÐωRŒÄ¢?ÕÍLöIb@?ج þÇz?ПP9¼C?ÐU>ûm¤?ìIiJ^p? ð–ˆp?§Nb¶t ?ãì~ð±(Þ?ë‚°+µÜ!?Õu2z#š?å DB·?áHÛE©nŸ?á¼~¸$I{?�ìåó¦ú?è˜pOPÓ?à™ "¯?ÐÁù£_z?Æø 顼 ?Õ;sú‚f ?èî:zŸX“?Î~ä?×áhF Ñ?ì»Ü ÕÚ3?ç�XìV€?Ĥë]Sû¤?ï&”ßÏèû?ëóÅ„?Éç&3›—\?Âp*ŸÄ?Ù>ü?±ç8?Øjß$D.ô?ç ìóhÐn?Üv×£j’?Öñþ_bÛŽ?â 8Þ‡?ìE³ƒÒ¨?çKc…²ÓN?ÙY#Ëñ?ã/Lèçë?ê¦iÏE¥>?Â,VY¿„È?ÎQ¼—¥0?êúÚWé&?�þàáô"@?¶qwÚ‚éØ?á87ÜŽ®Å?è^žÕLS=?èÑ¢—ôÖé?ÓGÿG¼g?¶Ö‘ÐЙˆ?딚7ê½?® $^J?Ò!òu¨à?À­Ï ù^0?쬲)ãNZ?àkr«¡&·?ç6ÈðAˆ ?Û«íH=È?ÓÕ,¯‚uÎ?ץ͉Kl?ØÚdª1 „?¶ö‡4wj(?uC6†Ë?ïœ1xj48?Ú\íê5„?êXh™“Ð?ßC•�r?àJ7¡fˆ›?ê‚ë<Й?ξ.u삨?ŸEhR¾ ?ê¹Î9Xd??ä0ª�ˆ™û?‹ïPo¼t@?×Páæ…Z?ê%ñ•¾?ÁhŠéf©ä?év6++•?Ô.cø¦þÎ?²ÑîŸH?ìoo¼BÔÖ?”µô\ª `?ç^TŸ êH?äÛ� ¦®?î†Ê8²á?×£æ°?�>¯f€?ªèæ©dP?î¯ÿÇÅóŠ?à��óâ?µrçxZ#¸?ìMýR�?Ö‹‰žÜ?Ó4§1z³–?еŸ ›Þ?Ög}OKJÂ?Ñžl‹s|?àZÖ''0?Ô5‰a”¶?àÑ’£Ù>?àôYU~©_?Á»3UzPÜ?Ó–@ʆMà?Ú‚á5q ?ד%{¤|?ì !Á—Y?Ô›Àêðr?æÁö Ÿ´?Í*€ïÎ#T?ðüo Ô?ê(Èb¢¡Ö?Ò�Îÿ– ?ÞDÉz'h?×)6$ïÞ?ÓQ»Û‡?Ä?ç± Â9?à�ÍD;Ï?Æcü×O? Bαø³€?àôlm¸)•?•çBÇf»@?áÔb äÏÀ?í¥‰Æ{òn?Ò–C)Ç{¢?£ÝÌã†@?ídŠl–W?è‰ðã(ö?ájýÍòòÇ?”•K/³À?Õ�SÃ*Èp?ÏÍ-_ʳL?îTžé'?ëúN…aè?Òî#êËZ?Ãë„kñ­”?Øó½"^Þ?ä�|Ó+e?¾§·ú„°?é@‚ûû:Y?ÑBè3f’€?íoR'Möå?Ühñgqô?Û°J¾x?åíq?œNÃGYE@?ÜO!”V0?áªÀ¶]Ë?à ™M®².?áÌÙ+a%?ç]¢EÿÍ?ȇ,ÊŒvð?í´(°†•?À�hÀþ°?ͯþT©ðÀ?â FãÌ•–?¨¸9C•0?ç§(5›¢×?íFü ®~Š?êF¡Ò&.?ë\lÀ”ê?瀽V·K?׵ؑ’Š?ëBh­Y"‰?îÓ¦ÒÌ¥4?íàÆ�Òè?äa÷нîn?éri®ñpç?åù ZÇ ?ÖX[Úh?åê—ú5’?àDœZòð?ˆ9¹,®?£šIÓ00?µ,d î-¨?ÁÖͺ¼L?å/¨¶LDa?çÑciš!?ÕÎÖÓr”P?èÚ87,?°´FÄë| ?îT'hÄã?í¨Ðx’"É?í["­^?ãê¥e»p?ï6Ç´NÌ?Ü3­žLP?èN X¦?ÓS¡‚p§B?å#�î E ?ÑÛjÙ úv?îðlÂÊîB?ç>Kà�YÍ?ßGè‚¿w¬?×ÍÔÍi„Ì?ì›ÇáŸ_$?ÉÀ‰ã‘L?Ú¥‹˜Eê?X€t?í± \–?Út5» Æ?éÀý/f€r?íOhMu$K?êùt�· ü?ìSÑBÍÕ@?·KÎtÛâ˜?ê(¯ Œì ?äç�ˆ’og?ž¦Í�uë ?ÃÉ�¨¢ØŒ?ÉyO›è?ëNlû®ì4?¿Þà-šZÈ?èî½?¸?â±£U*Š?ì%2|?�’?곣ɌAY?髸ƒ”Ô9?ï³oÍIõ†?í.©E?«”}uì�0?ÙHZ¹[H?©_¯LW`?ìçÞb^‚?à殆ä&?ìxa?é ËJU7)?ÅÉ̇!ÿ?Дç 3T>?Òyª©§�$?Ñò{4Ê?àæ‘‹d›»?µGó{h¸�?Îr.Ó"Q$?æw{¨r�'?í!½×á?î2ö^á1?ÂzÂ6@?”÷…. À?Õsˆ}ø]¾?ÚŠÒG¬"Þ?Ôù8“¶Ü?ëѵy�Œ?ìŒ6Ç‹?éÑ®î/� ?­¸L#€?ß{{+½v¦?×/ ÈNL?ÜýâZŽ?’jƒµ£À?é¢äí÷ä?Ò6zEíN?±Ÿ”ÞÇà?ꕽ𣷢?ÖÅ£GôÀ?ãöÓÒϾ?Ŭ«/——Ô?²�‡H?È3aBh?áNz™ƒ|?à­ñööO?Áý¼µÒ%ø?ç_E›Î &?ç§h.ðúv?Ò þÆ).^?íôétPÖ–?°¼ì�VTˆ?ÐòJ•Í5h?èá­Uî¢Ä?¸ÈmÊÿ×è?èéCG¬Á¬?æ<¡‚Hø?ê�ódƒ?¼c¥+ì£`?ô ¶Û>´?Õ+Zäi—Ž?îã°xÙ|ì?ç:Å�ä?ãÂõÚ§=?Ò$Õÿo=²?Ö¯üz?æ?ે'°8?ß&@Ç&ê ?íE4Þkݦ?éSè G(O?̆oÉ*0?í`'J5?íi“nmæ?éwΨ/-Á?ÝL Ô?êÊ 8¶I]?äÃ�+¦µ$?î–ÂcòÂÎ?¯˜±ô™kp?ÚoÚ–ìÚT?ã?¬Ÿ6JU?ÛM™Lˆd?åÖ¹w4æU?ং¯’!“?Ñm°+h¥v?àC±v±y.?ìV8gû]?ä‡'†Ò Æ?ãÑKi§€Â?à°sl°‚6?æ�©kB6|‚�?¸lD§²È?ÍÌ•™_‹t?áÈG¶[ÌÍ?ï.ñz8R?ïÚ‚PÃøð?ï*�u£??áÑÛ¿ÃÖ#?Ü®Mø+UÎ?Ûõ¦½4?îÖãámý‹?íêbŠë?ÙÍGƒ8¦?®)9‘pîP?àã?³ÉPœ?ê®ÔÅžd£?ÕC%íÀ?áD‡6§†ÿ?¹¸Ä½{mÈ? ’A|ÖJÐ?¯ä“g¥ì?ãÝÜÒóÆ?é<ŒDÖMÌ?¶¤ ½[Àx?°K«AEÊø?Ùp”À ³?©Õ,œÄk`?Õ£x¨s#¸?ÆÉM] 0?î4:uÃ?Û_­ž†¿Î?ëŠlª,ZË?ÒÈÂeë:?¾´‘*&ð?ê 1Káá ?é-Ò9ïAF?ªÜX=2 ?éu‘|;…ã?ÏX,jY ?ÀïÕÕ—þl?îj^©&’$?Û�,“òìÎ?ÏÜ„(ïtü?á'!°.?Ê~t®o$?ßh“¿¨¨®?â= 5ž1?îy/èBì�?ãúœæ¾r£?ïjZ.C¦?àÍFT`?§9£¬É™ ?á–ðkíd?ã§í>á ¬?é¸2O‘?Þƒ†âÕ”4?ë)¿À ?×h±`¸&?é!†EÀ.ø?±™F±>?äÞW:�ÞN?î¹õ(<Ø?ÛµÞ…Oúþ?Ž–Eù"“?êg\?n/f?�£Ë@¼?Õx)}M±P?èÒåâ;—'?Ý\ø G Ê?Éš‹\ï?åÅ(�5­Ÿ?ÎŽî-ì?àÜbz²µ?ËâÌPÃð ?ë TeÁÝ?é¿Üp è?ÛS<½ö?³ò²Rd0?¢÷NŒ¦@?Ì %rIÍT?Ðw_6ðõ0?îÿz¯ä/Q?ïE§´DlÊ?îP2<ýy$?è¹f?®µiP¹Æ°?ïEÔ§�…0?Ü ÓÏD©°?â'î kìI?ë�P_?…ÐMG¯?ê÷‡³¨–\?ìªÉ…‚?ÐFÊtö¾$?§ m½³TÐ?á4½•¼ã?ìá v¤h?°Lu£Sü@?î‡àk\?è};oþÌ?Ý_Ñ<š$ö?ä\jgЧÅ?èÀ£»Ðêm?Ñ ò²±u¤?Ê“�íÆÊ?Ú…¡7ÁXB?À䲿µáL?¸$Ñ>¨?ÛæÎœŽ%Þ?å£íäU?ãîýhë¦?ª­kùñ†Ð?Ã�Í"¡?å#6µÏ�A?Ão¦g8?íJÖHì ?à…ïε¯9?×o…Ûi�b?èœtÂ.ÎÊ?·�ŽäçâØ?à'¢y ?íµœÞpÆÓ?û¾ÊS¬?Ýë1Š(¶?ë¾I ßXe?qj<îÚ?Õ]:úžŠH?é��LEƯ?Ðû7Æ|?ícà‡Ó{?äĖаau?Ü—“Škd?¬7ày³?ã™Ý(3öm?Ú`2@·ÔD?ÎMx¨Øš(?ÀBȺÓa¼?ì47WUŸ?î»]~>½¥?èó!ãÝvñ?é‚v¬ó�?ÞêŸÂü&T?¶ycìÙ?Ö9£ lÊ?ÐÎ]a½ü(?Ý0ø< Ä?äÑ¿ºÝéW?µnlóáV?æO¤É B’?ÒâŽqWíŽ?èÕ9K[×ð?Ú^¦- ?æQûÓ—¼ ?ή™I ?ëfƒ 4¸T?ß u:Øô?ä»={žo?ã_d÷\_j?í 75l?ë?šaót“?ârVI³÷(?í*q«ÕT£?팊wu³?Ü1±ë]¢R?ϰ‰‰…X?ÐHBÎj6P?¹ 7xÔ?ÚퟑæD?ã¡ã~mp;?�Éãsà?Ü xði^?Öÿù™¸¢?Òo�?ØwCÇgN?è<òšZ‡Ã?ÔªÃé™K ?ÜBãÕò?߀֭„ÊN?Ø ,›êç¬?ÓNW”?èæõÛPB?Ú@Ú@Ð>À?¹ŒSPB‡ ?ãâ)ZÂ�?ãÔ"ä~5?ãºv¬ûUZ?éå^`§?ÝÍMÍ31æ?åÄ­ºÑ™?êpâCÍ:N?î”\Ó@?ŽÞOk"À?çÑRHq¨?é¶y™•zê?ïëAZ¾Žk?ç~‹4Õ4¿?ÛG‘Z�b?ß�"†mI¢?Óïuaß!^?Òœ¿ò÷€x?æìë) ³?ÑE¾•D6?¸9 *•?ÍúÎt?¸jRpÙH?ëî¯/Ú†?Ññã‰^?ä_h®Y?ë[“”,ªž?×%™ð°€?ÊQ†®ê8?œb÷HA¯à?î¥Åh{¿®?¹2äSM‘€?ÕwZ“0ÙZ?驖羈?Ș™Dš@?²eÇPÊØ?Øê�¤À?Õr�’¢ƒà?äTÌÝó0?Ô{QeÝL?Ö�´¾€?ÀSâ¬:¤?´o ºè€à?©3eèßð?áTÆŒÉp±?â'ÂyL6Ÿ?ÊÓ<Ö”ØÌ?ì¹g£Sæ?î82™à°?é«×XͤŒ?çÃ6u²?áÏ6°ú¢s?ë•þ$Ùó?—ër{è@?â´±<²?àÐ=5F¢M?â鎮×?âÕ)ÛS?ÚÇ(5Ð�V?à.:£$´ ?ÞrM5¢?ç·ëô¦?ÀX¶øX@d?å�ÂâŸÑ?ÐÙ”þÛ<`?ëä+ tm\?ÆFÚkè?µz<�0ÝÀ?ã*"Œ–òÌ?á_¹xI¾º?ÑÛ$)^.æ?ÐmÝ9Cp0?ÜL‘WCĦ?Ü(¹R´œ?ïå+yÞw?ä�¤ê _?×ÎT1„ð”?ϰÙÍ÷Â?çCy4Ž?ìä_hSüÖ?æt!€zÎ?Ò÷ò¢.Þ?Ñ€�àgW¦?Ã\WÚ“L?ç6ÊÓÎÍ?[>ŠØ €?鈅2 «?Ôò>Á¯?Õ7Pxk<?×’¸\h©Œ?îÑX¿.fÜ?ãÑ›ž»}>?¹é[�6?ÅV®g�Î?áß»ž¢a$?·c=K�r ?î\Ì¡)X?è°9ƒõ�?Æô/wL?âV¿\LXÏ?錒, =?ÙùºÁ…¢?´ €u˜Aˆ?âöóõÁ4®?è`î=Ý.¬?é€Å�Ô+?ÛýO^áÞ?áX‰·²?ü?âf2#ºº?é,R‚#[?u_YÄÊ?ÐØ¶{ë¶?â³É¼=åg?㞸ÀwG+?ê×¶fpë?ÚtHõ�Š?Ö˜Û̹?2?{7S%þ?èf1ñ–>m?´ [x{¸?ä%orN–Ì?å—ŸKÑÑ?›EK,#À?ÉW·œ?ãÆ âÑÀ ?ãøÌ13Ç?Ö¢@~é/^?ÇìÄr8„?ê´ÁÝm3?é"ÅŒ7?³JËh¿ ˜?Þw¹)$$^?ßJÈ\¬°È?À�\-¶�\?åukFà"?Ó�¸òž%*?ÚéIç/Ÿp?çÉ«•+Bä?ìs³`$]?çŸ즎?â;J²‘?Ñ.AcíÞ?Ò/{¡ñ9x?àʽ¦5* ?íMæ¾>½?ÖUö 7ªŠ?çÁx "g'?Õ@T³º»ð?�—Ïl+˜@?ÑT!–]N?Åkæûz3Ð?èÔ‚à'#!?éz¶Ø·ê?Þ]—-ûT?¤¦÷Ô¦[€?ÕÜLV?é$£ ½[ž?æ…ë†ô¿p?¯�Å—´M€?âÆ™ÿ5¦³?Ó¶²¬wût?âïpl~!Ï?Ö—y¦Õì†?Ð[Ãfb?Ð“Ú §?Þ@æCå¸?Òð�'ÿÊ?Ð;ÇHÐý?Õú¬!1î?îW8²�ܵ?á�£+ïéT?âÝ³Â°ÜÆ?Éö©'D°€?áØ³–½?Ó¥9 ¬PÌ?æù”Ùw÷_?ÌܼaëÖ?ßïà_$bŠ?ÛÙL":gæ?îåΙx'?ÕöN�ç„n?Ñ1g))©"?﨧Da-?íE”Ó¿Ýñ?Þ*]2†™º?à~r��¥ ?猠ÿ>&î?ì1ĸÈ?åÿM£\ÁÌ?ÉÉLoPÀ?íó3å�¬B?̸ž~á¤?èv`LMK?Ûlwþââ&?í:Ö{•?ä–GÜŸ?è —4Nªã?Ù6{ÅZÖ?¼ýÙp;À?À+>Ó^7Ø?ßž΄ÍH?íÇú±?Ô¨Èñ„º?¶ÁìÛ p?â�UÙ W?´6Þ¿ðæ˜?ƶ?£· x?ëËfÒV)›?ǹƒ‡Gü?àÚ¶.ºšš?ÑšHÓ¶?íèÊæn‰¯?ÍÓr�]a ?ÎÛH¥ ?ìo~‹?%?”‡ �C@?ÙÌ !N¦º?äx×�0?ãó�Ôk¤?Þø±®Šå?×\%^f¬R?í£Ô%r?Áps�ë|L?ésÈåBfø?ÎIøò¡Üx?¦Õ“S3Ô`?ç̇ÃÚõg?áijL?âŒûö ~Ü?åÎWàpÎ?ܼЇي°?«¡–¥‘0?âž9!Ž?ߤpz7Ñ4?•@XšV`?ßc]}qjr?å Nîq˜?ê>»‡ ˜À?á°c%=º¢?è•ë{rW‡?í:‰½ qH?æã‘[oå?è.:~Æ?êÛ(¬Ã?ãðut´ ?í 5[†ý?ïù«¸¿ï×?Þ5w-àô?åaŒ¤a?ÜY9'ÇÒB?ìôÔÓPË?Æ Ðm5H?ÒÙ°w¯)Â?´1~B?×##j\?ç { �åt?æÆÂ…tT??•Ê_&€?Ø¥Ê7ÓžÌ?å!ëÝGâ;?ã¶€+Íñ?Þ$Ï&œ?Ð/#ß»P?ï¯ ‚?èѯ&±ÒŠ?äcc´Ô[Ì?âKµî ‘?ç\—«ˆ™?¤º¥Qÿ¾ð?Þx  dsâ?ï_ÒBŸÛ"?åºë Ñ}?âãv²|÷ž?æå?ÿS?í—ÿ�8ÞG?â#A6œd?ÐE°§¹¤?îc  øÅ•?ç'^¤ a?ÂÈ ”ëCŒ?äøÊ¢LŠa?ÐyëZÌñ&?µGf…Güð?ÞŘ^Ä-º?ÝBÝÝ Y¶?è*®]ux)?ÝUôçA8?ãºÀ›ò‚…?ÖìÖB¤Õ‚?î#‰ºÝ?Ãì–i”–8?ÂT1Î+l?ËÁÚ€s?í‘Ìi�5?nûÎÕ’?㔳}/N?ç¦-%!dÝ?ØÁ^<é!h?ÛûÿP¤Œ†?顿\Ä”?ë ‚å?éÇ€”VLÙ?–ƒ…iÀ€?Ô–NÚCBø?ã’%¹b?í™ï^ü„Ó?ëd]Q!ÔU?î=qžþ«¹?Óÿ®Ùö‚$?Èÿ\µC®à?×ÉŒ7#\?ãÞ{Lâ?ê 3ïÊ0?äõ_Vs¤T?èËq9ÑgÀ?ì>]{ök?ày•«\äÄ?§ŸV°a+ð?ë†8¥Ý?«ìÑ´Ð?á]"+xOM?êcçQ?ä¼óŠz7?æ/ÿ<`‘?åü[.¹dÕ?åéQaÏ?ËÒד5t?ÀFIDíH?äÀò8è- ?é?Y¬l6~?çó¬m ?êÖ?1?Eæ?çÉ�ËKÆœ?ب7sõü$?ëôã­ Š?×ËÙPø?ÉÁ³4½qh?¬V»Î*�Ð?èB‘êiÉê?ÏjØb•È?ápí…Ê›?âÙFüäø?ç¾òmáöR?åìzô9Îé?ålê‚ Î?ÐpªçEâf?âÞ\3›?ß’·�Ô¤?îÉÙ'ÉA?ÝcâUnÈ?åÑJ~ØîÍ?ÓèôßÃ’?âã%ÿD?æèÛzgsw?ê7>•«®Š?ÞËmÎvä?ä;?Íb?é÷:¼á{ˆ?¶ï¾KQKh?ë¬Dâ‘°?íôß|p§M?ãrLxè'¹?Ùxïv0?�lfÍà?Ä~S˜18Ü?ÇÄþmÄ ?à:Úk8¾õ?ä6\ >þ•?À3À]x¤?Ýf,Ƚ”?×3òîÖe8?à’´Gư?ì0ÁY|Ž?è· �¥ì?à‡z?3Ê?ÊJ5À?êå2"’?é§ëmEcƒ?á²`0Ǻ7?Ø?£Ä|׬?꛼•”ŠË?îP”0Œû«?ÞñA»¯¦V?߬õtq’?ÏÜ ÌZ>´?’¹i¦œ@?Äw0�O$?âéÜ£b¿=?{LL@J}€?ÔrfLä?é‚W�é?Êô¯ñå—t?én,´Ó[ç?Œ>§·²€?ÚæÚ�á,ò?ìEú“’?ãú¼€‰ô¤?äô29B½“?ë9Mi3tý?Ѭ”{«—,?ÐÂàEýÎ?ãÔZý�I?æ¾|ÊM?íd¦^q?í„Q•‚Œ?ªào 'YÐ?àÕ~Ïu`L?á®5”[ÕM?çÜ>[øÁ?ÐÕû›bd8?âÓyA,g?Üêqc’Ò~?ÙÀ\;W\?ê^?嬹p?ÕÏÑÂÛVf?ÆUë9Aòh?ç-Q­Huð?èî§!Žé?«ÞÊ8_îà?ïÓ ÅîV.?Øl(_Ìì?åè¹+X?ÓŒ,§†Üî?Æ©Ôg£Ê?ÞÕöù-~\?· Xª|÷?å'QØ'›@?á… àÄ»?ã-?…Y¤?å;MÒ’'m?åf¶8¢ ?É-‚Ìý?Ò›dÑÞ²?á(IË›1?¿ÕyÀ­—`?ÖBÚ/a^?éEÅÁÈN?Ó„¡¨ òr?àà6‚¤n?ã– Ïú?îÛá]’q ?çÈh Âð·?Ê ˆ(c9Ô?Ô×(ôë,?Æã)¸)Ä@?ì)+"6�˜?ÚáQa™A~?ÂW¦ºÕè?äE �‘¾?Í“ú\¬³|?ì÷N^(– ?× êöwú?Ùø„(‘j?Î(‰ÚGœ?âUNÒK?ÖÞ²ImÐ?Óï·�jö?ï~Ýjaq)?ä ÏÌö�?Ü}Ò7Þ?ãD)’èìr?æQcˆÛÜN?á MJ¥?ŰÂÅ¿ô?Û¢/gkr?èB¡€°?íø¤HÊ<{?éYGÉì%?šVê5À€?é»1£½@?Ò2üS`?ãþå:�?àñ³Üíë?ÔŠ­C»ÊL?é%H5Oöo?Ù¦› å?Öm¢í±Æj?ÍÁ\‚â?áWm­L?ÑŒ?(ßæ”?êÔZ™ÄÒ§?¶)á˜à�?°ôoNQcè?Ëî¶’ñÊx?~Ë·Ùéô€?íŒqê“r?ïî+þÛ?Ò#%dIî?·¦'àU{?îÎÛ·Òoo?â²fy¸=?ì=›¢Õjá?êÕLÈù×?ì£ã~ÿt|?ë�Ö×!Ä?¿Hx¶@?äÍü]jä?¶¡îæg€?ÁŠ›‡¬ˆ?Ü"šÞbÛZ?êŸn­/?À“ÿ 4©l?Ê…´?Ø œ?ì¾4-�?Ú®rzüi¶?ír"†¢&¤?ï93”ž?åÞê|Ž*?ÝZÔ&_�?àä[R¬ý?ÕG {¨˜?ì}lñj‘?Í›™¨?âÞbŸ‰?á_;/¶K?À°ºˆÝ:Ì?‰�•õXÀ?ì…ŸºFÙ>?¶¶#?Ûj�?Èc %ÊÄ?Ò;_·äB?å¶Ætëm~?î´.�Õñˆ?á™×”Û™À?¹àÏd2€?â*ÝbJÒÆ?àk×±®Ìò?íqæÌµJ?Úb?Ç6>?Å4±©`& ? ªM¡äð?ì5Þ—,’?ÙÈÅØƒ'j?«–œm‘ ?ÖÂY¸žŠl?Ý] Ù§`˜?æUè /‰?çàJCÅÛN?ç·Ý_În?ãμOq³Ë?Á(µ‹*Wˆ?Þøh­¬ ?Ÿ9ºØàÞÀ?í[p”.-?áéGÛê^?ä^ð޵¸?ïH�¦ðC:?åë¨ûçL?ÄdÚ(Ÿì?ßÉŸ3¬çÐ?Û~Ú”?îs£2ñÁ–?Þn€èÒ4 ?æ\Á/`^3? Cæøs˜?àBG±ÝQª?⌲ üç’?ºoaâTR�?æŒò„ŽŽÂ?åk¡3¤²?í�©ÐèÆ?ÙÀðáW<º?Ö²œq\¶?æoNÑÁŒ?솹¾ä¯?êígßÚ›7?ëÑ¡¤Ã ?âÓ>èØ??ã`¬ÔT¼È?£ƒ˜Î—e€?ÜSm½ É(?ÇXÜõ—È?á;‡Ww]{?ïà'$Û `?Ù²íŒbAà?ËG9cÞ…ø?¿7ÕÅkLà?Ï_þN¤?ÕgY옰?Ð9³}äÛd?ê¹SdªsÓ?ž¾ò“SÆÀ?ëw—kÝ=?ÓP:’yé4?ï}#œy›?¬—pðà?ÜÙ¢"¦?ì e‰ªr?×Gÿ_Àb?Õ ¦ ÙÐ ?ì‰&Ô¯}$?é4B+i#i?Õ9G·lïv?äàjœ¢ó#?ÀŽU—:\?Å\ô?í×-ãz?±ñ?.rk ?¢ºÐ)¨P?v²£çoº?Æ+ÂX{;8?åh]óyp?àëí¦Ø–?ì,8ß3•Ž?ØŸwGl?á^�³áߣ?î›<%ÞÇÝ?íŸ6A®Y?â“zÒÚ­|?Ú¼ÂiN?Ö[0(t:?ë:*Í!?ÕÀ‹ûͬ?¾ˆ�¡¯J?ç#‚e_ƒ?Ïñ#¶øò8?ÊT¾ÏÓ¨?¦‡‚Ÿ@?Í¢]�?Ï["Eö¤?î Ñ`³ŒÕ?Ë`Ín-ùÀ?àï§�ʸç?¾•]+ì20?Ù�¤FÌí?èê »?ïJÚQcF.?êÁ,̲²�?Ì©ŽÐÉt?ëÌ´Q’?°7È/6h?×lü<Yf?殬¬ë?çˆêµ¬½?íÔ¦�ì C?ÁV<@ƒ¶L?áa²¡„U?âjš™ˆªô¸?¾‹û}vm ?íJÆÒbžD?ëK¶þ?ÂAÞD]4?Ô+rÂÕX?â1ñËõx?‚�o$e2?Ïy`ŠòH?ÕMÞ­É@?çö¿‡gÜ¡?³§R¸ˆiH?é SñYZ½?ê*®„T¾?É.÷šsx?ãß.© ”7?í�ý!e4?Ûæªtø˜?á€}ó›?Ç·Æ_Ð?ìÒ&KÞëå?Þ[|Tv ?ï)‘l~³Ü?цá ^ìh?±°ÕjŽè?âÕAXK",?Ï=3öC¦Ì?ê2jßyh?¡Ae)úB°?ë%EÌñ·N?Å,h6øÌ?Ò~Œ>µ?ïYz«ÕîŠ?ë÷à‹"Ûz?ÜrÜiw2?ïFFe%?ØF¯…ÄR?°&¢l�@?é+}ø!½n?ḫŠN?Ò(9ÙG?Ðp*/ûl?¹ ˜ IX?ï•QŠ[¯õ?ê㦂k&?á!-œÿ¸?Ο‘†B}°?Ù¦OøNΤ?è¥Öކ¹E?láœ?à�”æê²ž?îÁ*Ó¹?æTùº¶!?µµµ-ø?Úq�$& ?êå¬í©^??w‡¬‚oq?æA.W?Ò9>ê‚Éž?×jŽQœ ì?µ ïæ(U¨?íl-½¢N"?Í2]ˆ…ŽÔ?âPã36?ç9@ˆ¤?ëÜó¾Lð?î§zÁ¯fc?è�ëÒ™ô—?ç(:¢õÝ?¢ØèhP5?ìõÓÁÃ?âפ¤1Ô?�’Þå Á€?éj:Ô‚„;?⌥ÆW7?êרѣè·?ã%ÛŸÊ8Å?Ñߦ«áC€?•] ÛÞþ ?á$ÿ¾ãÛ?Á@­0hø¨?ÙéŠú7ˆ?´AR·'�è?ÒÑ¥à=?ì`ŠÕ#È?æ¶£¬î}7?Ï*©Œ©Þ ?Äá‹ÜqÝ ?ê)è퟈?ÉÅ;˜ÀEx?Ùì‰ÿzð0?ã!·Jø8?ç%oâŒ?ÔP„2Ìuø?é ŸZ:¸•?ÕÀ¿ûMd?Êâɱ!'È?íwBÝ“Gè?ç,Ä¢ó†¦?в�ýV–æ?ã(?3¢4?»\gJ#¨?âq•½<å?�ÑÕ@®è€?ícøÞ “n?ãs®ÔG¿?î#[záµq?ê÷š˜4P’?ín­¥g‡�?©� BÉN?ç¥ �±Àr?À™H¿]þ¤?ìNGèg‰Z?ìU´üs?ÜH3§å(ö?íär±[D?Õ)#‡“Žœ?Þe-ÓZAT?¦þ•ša/€?ÎA-v³âD?ì¼tíK?ãU]úÈ™ó?éÉ­Àª³'?íôÊÚ‘X?¾é Øè?æi¯ v2À?ïITõO×ÿ?ÖRï5å8?ç_Í@çò�?æ”'|€|?ͽ, �;ì?Ô‰"”Gë ?¹‘g9_�?ã™ìЬ(?Ø ç"êÇT?Ù¼ò¡ùr‚?Ç”*•ìè?×eЦ=ØD?Åm¿Þ•´?ÔRÓ»0Q4?Ô—¸3qtü?ê¾:l0ÿ?»…=½ÂÈ?Ü:·W-& ?Ò¸BB ¨?ät;Sx�{?غG¾žá?ã/Ñ §Ô?çZ†#ÚuT?á�Ü+¡ñ[?Ô'ˆFoæ?Ú)¢^šJ?Öv}ç�.?ʧýE»¸?ÞÑ/šE4è?é#^åAˆ–?çõs%Þ+?ÒéPzަ?Ïì´mœ˜?È„>:`?æRC2w@l?Íä©Z%\0?ÛŸúemR?½[†ë@€?´Uï(z3¸?Ð H`]½¬?ãùè?ÙŪøõx?ÜÜ»IBÇÊ?ê=a$¡NU?êjŸko ¯?æ#0¦X ?áÇá.f\?ÓÃñìÂGú?âÐh Ãs2?ßÂYñr—|óÌ?íˆÔ8šp?íÐ^ãEªÎ?ßc Þ9X?áÿµ8Í’?¬å7Í0°?ÖêÿžsB?íÓ… ru�?¶¸ÒMñ> ?í[Í‹Õúm?îhœƒ¯cá?ßH Q[?ÌîeãøÓx?ÃrB$�è?ë 9ꀖî?ÖƒâáØ?í¹^™‰Õ?ÉýIüÂ\?æÆC~´î?è¯ÜzFß?ÆÒ,xò?êQŸÂB ?àG~"1\Î?ç£æÀ­Ï¾?ÔÒnü=¦¨?ÚQù^¾?¨[}!‘>Ð?™Ûpô ?îÃU%3Å/?Ýbhô¥æ^?±k¹¸°«h?à“‰ ø•ç?í-Ÿ]Gß®?ãÁ•¦nÛ.?áÚ^!Ë?�?ÚŸ%3M°ü?Â4k÷cƒÌ?™.Ø .@?Ûý¸xþØ?ì Šy‰G?Ï6¤ª1�?á^MÜ�?æ»q!Ô­?¹Æ_|•µð?â$ɬF/?ê}À!ûeQ?æÞÍz.§€?æžV´SfÍ?åé&oýT@?ãÍ#†uÕ6?¿‘¢¡lØ?ä_ú½t‚?émÛ0?ê+Qx ™?âÁ€ÿÑw?è•¢ìqŒ?îö–Í~R?Ù@„…<÷p?Ñðõ­k¬‚?Ó EÍܺ?•ëPâ¯À?ÐÔ¸3ˆè?�àH2?Ú¯ÃÝ‘š?æœ$Ød¢?ìÇ›Žªî?Ö�dìú”t?æ…É.ª3ö?ìð²õ�Õ?ìßh›¨C? ŸäN5½à?áIäPsö¾?Ô;AZ¡9Ö?àCì*?Õ¾‹ïàv?Ó²ËèéP?ÕGøQ£?åæ‹½9£Ü?ëgÀà"=î?ºêaµ]a ?ìú .=½ì?Õ)ú@"Tš?Èm p>•ð?êÁÚÑ»}Ì?Ê* cߘÄ?¤[„œŸ@?Þ²±/¥´ª?×T2+Ȥ?àÂ�ÝCÑ%?Ý!´¸�y ?ÅØýز!@?ÔJ\�Þj?èýÈr?Ä‹uJ"d?Ã�¶”2h˜?íLmÁ™Än?áŽïiÉrË?êX?•r‰š?ê$k§iÏ?¼J´šûP?Ñ�LL˜~´?éELŸÇR?Çp¸4Ñð@?Û¼§qâ¤?»/ʘ°P?åÌt¨à_#?êÄØ:¶ù ?| ËÚo=?ÑòNu0?ÙÎGéŒ,t?ä^Gk­Pë?î¡ÀÜóS?ÍFƒ‹óZ0?Ò«úNð?ÓñØr­Ä?ÐÔ5Õf&?…Òbj|9À?ìþŒ�ˆ™²?ÒG0 4J?ÅIìYiD¬?á-ÞcÜZ?Ôy6)cSŽ?º!u/À?êeb-ˆ7?í:qùgu@?Õ]†qj•L?¿ V(Šà?Ò:S¹«ÕŠ?àF½c+€—?ÕHel• ?äwkQ±?ØG*MÿÀ@?‹ì¢?²àT†Ò°?½ùK|÷ ˆ?ßnýæ5¦¶?ë¢ö|–Š=?Û¤pP:²?ïõâäþ6?í~ÛhÔO?Î=,Om„?ãœk:ô±k?Í­¤€ê/D?Ö°±¿[eæ?í(|îí® ?Ò±gqj$?âþøˆ3Iy?ÚÀJøqФ?êöE¤ç5^?ÚÍêõeAÖ?Á]žÐxˆ?ÆŒñÀ¨jÈ?ÞÎ-”0ö?È´àü�êÔ?ר‚L?ážÍÀ¿5¨?ÊN2¸È?æßâIxÕ?£©fšÓš€?؃m½-à?墳~]›?Ö¯¼úÈä?ï°±z[­?ÞÕÎ]اÜ?àÈÁˆRC`?Ù•®—¸À?Âë~«ðP?é9!?‹�?̸Õ¤Ø?Ù2K]ì\0?Öw¸)µ‘Ô?щ¼Ž-:œ?ì*†þa»?ÛÇifh*?½&%9Bs0?—È—¿$€?˜·@Ô?£žî/(b ?å@µç·éã?å´¤å+?Á(rjÜfø?ì�¶°~*?î×t²e,Š?ÕPNPz¿l?ãž-ù —?íTJ[Sèå?ï)idÒÇ?ã�Øñ"ÄH?èÕºš“Eš?ÎwÈê÷4?Õ�ÞÐ~W0?ܹ{ØÈê?á“×Ûçþ?æï.”9 ?Õ �«ú?Óèxà Ë\?Òpïr¾?èUÊ[<|?Ъé-Žf?í``º"N?ë$Žpû½?ÊŽY»¦0?Æã"¿Kd?ÚQˆPÔO°?類ۗ?ÁO«¡ˆ?êR˜à·1“?£ƒ²ÛŒ�?ãäüP�$Ñ?é?Gøýç'?ÞöÛè@»J?á@– uŸ�?ëÌ`ˆ'Æd?ÑÇzÄl/þ?Õhµ;�z?ê±ó?ï?îìÝpVP?ëAQ?ë1õ¶×?¹Þ70"E?ÎõKe.nx?£ Žä„ó0?Óá-dHŽê?´)¾ˆ¨?ÞÉU…šÐ?Ù™ŒR¶?å,Õæß?ìK Ÿ„N?Í ê­§€?Ô¿VNF¾&?¤÷þÓḭ?ÙÚ mrQú?ÉŠˆ–·Ð?°rúÚíX?uZ|É/à€?¬’:ÖØŽà?À®¸² Ø?²((;LÈX?•3 ±Ÿà@?ÉÖ,º£ ?àYƒ9?Ö?â77ñ¬ÕÜ?ÁLªƒ¶˜?×0É>�¼?ÉžìGhSø?ɘݵ4?Éûhr1ëP?µÊá#ѽ˜?ä2f,(à ?Ä]E3:x?ì§¶ v°î?æ*RĉuS?æ_‹¹,T6?í¸DQ¾-?×ë�Çî.n?èl~{´1?ÞÖÖ¤Õ‘ž?Íðk‘e:Ä?í²4Æbf¼?åOºáQ©�?ÀÇwP \?à’ó¾meî?â.RºÃO’?ãp)½xë?è—•Ûú ö.?ئ!+Æø?íLi7ÔtN?ìÝ�€×Û?Å‘�Qp”?äèö°ÅÃî?íj—~ZQ6?î^€IÙ�D?“½)ö?îrMrZ�?ÑŒGGÎ Þ?¼K•¹69ø?葤­sKÛ?Ù›5ŠÀ}¶?á,�A™&?åw¡ÖòÐb?ê*we†"[?è7 @&lÏ?à#¥ªÏ?ïY1æÒ?ÓßÇK»†?ßoäùÝôÂ?å9 Áœt™?ä»s§ÄG?Ý:™á9ð?ìÒœqó.¹?æ±æ²áKòë?î®®eìͼ?ÒÇÛ­‚?År“3‡ÄX?àØ�–THè?ä-ã3ü+ñ?âNüAùz°?ª?ÿ2?ç|è¶b×@?Ö¼Fþ‡h?½A¦LûO?éI¯8#«?Ù„Î6Íô&?ïv0©ÿ?ÖÈYÆá‰¾?éô]ž¨?ÏbåÒóG?âÅ“Ë9zÇ?¸¸${ó0?çÞËFÖ¬Y?ìJ ˆµîy?áŒ]�¥rû?ê"43î+?ÀKQïÔôô?×RÙ—Lþ�?Í,?q¼”¤?ªš¼Áˆ ?Ö…ž¹Âö¦?t}> ê€?ëM{åÌ?ån ¤<¤L?â�Åe Û ?Å$³,Yü?Á»P6­T„?Àé¦[+¡x?ïÍbÅF‘²?ÛKlQG²?Ý3dóaÞ²?Ùï×s�Gb?á7b9e-?Ú£Œb·pâ?ëjÃWÅÏ?Õ½E¯ïl?á>˜ü²\?ÐÐUNÝö?È’$׈? óòÀ?­p’G@Ë`?ë4¶”aþ?潬r ?שKŸã4?æî¿ÁäpÊ?Ðwødr?ìÅqr"?ÞLŸé¸¨Ò?îµS9fÇ¢?Õ „ª7>?Ú§Qj½¤?Ì»™4ô"°?íS±¨¢ŸK?åÛ—4ðº‹?âÙÂ,â3i?ÊCÂè0‰4?ë�Cå†N„?ДŒ^|Z?ÙP‡ÏŒ?Çõ¯Û(”?íRH/6&E?ï,lüž?ßU-�^¾j?éÌÅRV'W?¨›°Lp?⨉â™qÆ?Ú­ã�Mæ?è¨Áòä^Î?åºî—É1?ÐÈ]°ÏÈ?á]Úúwãv?¥aÛ)5p?ɦþ¼»cì?µ¦Ù¹Sw?äÈ =¥€?åM'Ñìì?º9!«¤8?ÞqËa@ö?ÝúiÙïëæ?ÙkÇoùÄ?ÇÆí¸Œ?Ø’’B?ÀðM4£ƒ|?Ýiá²ðSê?Ö«ôØÿRh?ížÎEM_ð?ëðîWƒ‰ÿ?ÖÅT˱d?ÕÍö³~=¶?ìêÊÚÌ?ï°ì¸T?ç‚‹uÞ+?å~� Z¿?¶á‚KäÞ8?åØaèô¨â?á�Ád\Ú?™äÒ`?æé»ú¦{?è:-V˜:?Õ¶–›Ï,ì?éoZ:q|?ê$×€\ù?ãwùUÑ8'?áXË7^-»?é²L&\ù?Ñ1>÷×�z?èú4‹$Z¤?è²�z–^?Üò6ÄÕB?Û"–Ư§B?✅c†�^?Ò³Ô1,Ò?Þ•ç?X›"?à—dcŽ(«?ݼWåÅÖ?æOé÷zT¾?å.¡T“_?ëh¨•êkH?æ_úˆõ I?Ç SËE¾ïd?Ìpœ€›L?Ï2Lù?¹Í€,?æÓ¹›|†?æí+‚¿îr?âZd¤¦ó·?Ä»�1À94?Û—SC'?ÑH�îl¶?îìBUoÐ ?ͱô x?¼õ ¹ŸH?æ0¹ü¬š¯?ïÉýdÞ?Íg�¨ ?Éð,H�“|K?Áé;i‚›´?ẇc|'?åÀ€øŒv8?à½æCãÉ»?ç�¾nˆBZ?¢è¦s½ýÐ?æ}~(Û_J?›*çAè_`?ÝÞ{5m=â?ÀQ]FÏ?í^L#šj?ÚœKþÿN?åÔX:Í?èÝk`x‹?Ñ,99ø"?ãó0?XŠÑ?è¶�Ðgåx?æ¹ûégÁ›?蘺ä˜óÌ?ç~/€ëQy?íÑÙ\?ÜXß" ?šú¡Æ@à?ÍêZ!X?ìÑɧà†ú?ÛKåÆþš?â ÕŸ›?îDÄ5|°/?âeÈúׇZ?ß'CÙ8ì?ÇŠè¤RþÈ?Ú²úŽ—j?Ç3 ›’°?ß�ÝûVn?ƺëÒÌ?ãZG�ó?ÕOr¿ëY`?Æ'Ót2š8?á ö6Ò½J?âêÝìÖ_?â… AÜvx?ä3¾qIJí?à.ÆÁ!?ÏÒ`W?ž\?Þšãjd?¨$L�Ãr@?Ç_t0K�?ݸO…¢?ÓyOÁö(Â?àÐUt°?ݰ)'ã*?æßþ‡˜à.?¶¿É·çˆ?•Òõ?7 ?Ù�`íþ?Ϧ‘Ís?Ý… »žþ?ëcT%Ä·?éo¶?ãº×ê™l‹?àV¹¶mê?Ú· dw Ê?é‰â³ÙÄp?éÓ•wVª¢?Å#,– í”?ÓÍkÐúÒº?É€³M™kè?á? »ø>ö?ä[ÿ?m[É?ëÞÂ!@+@?å�½27€®?½¹þîŽ?¹ùB¤M8?Ÿ�ZäÛ:€?·tâˆx(?ëÊø\Ÿ?Ë•��_?ÂÌ~Æ@?ä¸KPy4h?Ñþ”h•ŠÀ?é×K�ÄN‘?É)”Ô_°?åñžý:%Ý?æªB@³ø?ã‡÷op?çˆ=Y*ê×?Ý Ž9r?¸aª1~?áôwÓ×qz?§^¸nâp?ïÄɉ rt?èœkOÓ®?áÕ¢™;?ëqBCDP?ÔŠ�Ç[V?ݱî8Sõ?¼{_ìižÐ?°ü ·<à?ßÛ( -ù?ÃfÛÔª x?èÞfïR§·?ì¥ ³–Â?݉N€Å`Ò?«¹©þ&s ?ç§Ù›uG?â8�zw?ÕØ¥6ÝjB?ÐÀ /Íì6?Ã6º›ƒP?ãwÊ„2ZZ?мaõHÀ?Âë>Wö¼?ëŠÞ28?é(�0Oy?à].DV6?àh»_¿²?Ͻ,Ž!ýÀ?Ñ.|'��Š?ãzb=‡ã?Ö|´rB‰?Ô#RgïcB?ⱓ ~Ö?êʾoÃþó?互ì6?ï °èÔ]ô?àŒ»>¤?àݱ‡­.?ß¹ò@mœ`?ã¬"ØÖg?åå“àä9?í˜ê¯ÏE?æÕí½;Íì?ëö¯.L ?éúCô o?áÕÔ*!Œ?ç+ùÚÕ?ç~Ö˜ƒ_á?ÓÞ%Їu‚?ÛÒ÷’B˜?çU—Äź?èZ¡qŠ×?Øf§ÌnÞ?åÚ6¨÷^?Îåf¸#€D?ä…n”2~-?Óõ?ú ¦?†?]0u?¹Ã±žª# ?ïSu�LŠ?æ[]Îæ;?ÉësÆwN„?íÞ3¼Ð™Ý?âRÕ^ÃóT?áª5­m.?鬙¢äv?Ƅ̚ˆ8?¢‘Ž`ñ�?ë±Ôß™œq?î�i—[G?¹²Zy–‡Ø?Ç©³ƒ‡?È¥2;7?å«¶}�©·?ãG â>€?ÜŸïò´éÐ?ä÷ £©ß®?ÑYÖ œ’?î¦Ñ¯†pÐ?äÿ¶ ü¸?쥟yAT?ãU[§š(Î?äzÄKä.?ÓÑ^cèÀZ?ê Ðß•–?î²Y)÷2u?íêÌšu”?Þ?ÚŽ!4˜?ì™C0ª”‰?ìY¬:›?é¬Õ,ë?Ý¥:&©{f?áè7¦&õ?ÑùˆãÞª?Ü¿æåý|?ÃXá&*¥0?ãS`*-ÞR?±¡ˆzw¼€?²Äz‡¸ïH?º`Tp?îà³ñœTÐ?æ3œ¹'?Ù¬Þ@›¹^?™”N±²a?í+Ñyá†?ª²F<·,À?åñ›Ý©ß?âDí7z€?ìnðÜÝžÓ?åÕ”›7?â±ôÅû?âobÚ'D?âº×Çëw?Û«ªË{Ñ`?ã©l­ ?àm\Þmu?ì¯AM±Å4?åîxCMu?Å ™ À?ï‚·‡-ñi?àtÃæÿ ?æujWÞ‚¡?Û¦­µÐŽ?äùmæú±Å?°r¥ï)Û�?ê4vØðм?éBvÈóË8?ÒXmÉS*?©K=!ÑS�?çå R®x-?åÕmN ?¸+CR?°?äJ+�Ù"?ìᾫªÁ‰?Ì ðú%4Ü?Т'¿Ýb"?é0)’� ?½7ÜíF½À?çŸ ¢H*º?ÍÔ1E©–¤?é£ Yä;?±{ûÂ!p?ÛÙj(ò•X?âIÜ%ˆÄ°?žfM¤_à?×8zŸ�`?Ýår�‚?åd­G›˜6?å|q}¤h?±×’‚°² ?ãä–(«kÀ?ßíb±&�†?Ø_xÕNà?ïô�!¯å?Þ}å\ ¢|?ÑõÂè:²?éõßÒ#àà?ëv†9A:÷?î­¶F�&Û?Ù,ÃÙ[L?ɰøoÇüD?ϧE¼Ä?ÚÔ:¹0æp?¸\N šœ0?·_<Ãy?Ýl#\*AÀ?ÐîûR™ô?ÚùŸùŸ¯F?ì2™Ñ¹™‹?ã<rp“?î…/)÷QL?¹¡»ˆÕø?èì6ŽWi_?â8~W1Ñ?ï�}r†?çõä¼Çõ†?ËèÚÄZrD?ÊÍWˆX$?ï•p@޽>?ǹ§s¾~ ?„§­äoM?Ûëàa¶J?å°Ä^ºË?Ð'×6ãÁ¤?ã3Ï%E9?Ïå¾ñe”?îh hŸK?‘:@+$ ?뉴†oüF?êÓ2;qò?Ñuàà[B?޵ó­8?Á*XCT?¸6ã ¹A?ïêÓ¶ÚM!?Êþ‹H…°X?Ú’ú‰ãÜÀ?ÝÇ!á5[X?âˆÞª_ŽÍ?ímÃó;2?ï—™¹9¾?Ée~‚ùx?ÐÂ›Õøî?Þ,—o{ä?éªg›�á?»$ &?äò‚‰y7â?ïF¯¦­Ð?éÀ ¶-‘?æ<ÈѸ?Ï‚øžœŒ?í¯1p=ä#?å¨#?kT?˜ð÷°ÜNÀ?ã\mÿk[Ê?ØO ?V€š?ÜVØqL!Ö?ì^°jE?ácfË õM?äV&‰„�â?ׯC6‘Š?ê×EîZ[9?ën.ñ »ó?ß‚‰W�ê?æ·Î�}¯V?î¢È°àà?Éjñײœ,?ät˜ß7?êƒcø~?ë3úÓ9,?ër®q‹Ê�?à ÍÕG3e?ëA^ž$u?Ïiˆ ÷8�?áñª’qÉ6?é3 òÖ ‘?ÑKq·ó²?²uƒƒ0» ?èé*�ñ£:?ÓvbNÔ?ç�¤ôQú0?î'ꇒ?Ö;ªãȼ?×4ݘ(6?Öœw{S?­žZkÏP?Þ3ÙrÄ ø?¬Ó Ö¬äÐ?åÔav}‹O?æ9ÿfhW?ÙWj]x<@?ê§àkå?ë–w3÷æ÷?ä705…¤?á‡5tT-Ü?™âÉ1?í?ibÒ®?ÜNãÐ+¶l?ä!�û?Âçâ™qà?e’ýwæ?ߢ\fKÎ?î— %uß7?ÓÓÖгºÒ?æš^1BÆà?îp„J‡�R?Øï›L¿C†?á9ÇžrÆ?Û—Bý`è?íä…�úi?Òƒ@0c.?ÛJÔónˆ?ÓHcµ~ÿÂ?ä² yï?ä€é<³÷?çnûÊ#â÷?êeR®x»?ÃVEÏW¤?Ø0YW¹n?Þ÷͹PiŽ?êkë%Šn?¿_j®ðP?èö$&xâ{?ï&­þ<€Œ?Þ&Dœêp?èíØXb!?Ãc•*?ÂEŠçÔ?ÐqP?ä. È‚ä?؃ú¶€j?å`¯\af ?áúIÎ�±?¿gò*8?âðx‹_úŽ?ânû’’?Ã#2â¨<?èïºô> ;?Ôœä–bØ?ãr óÏ\I?éÛþ¼ûÒ?ß“¬áÈmÆ?Òoˆÿ œ?äÀ ÆÐ?�?à×6Û'è–?àQSÊzü?¶9Í×]fÈ?é 1ý´–?¹R.Œ!¤?ï—¢¶Ùg?¿‚xºÏ¨?éÅ6µ?ïlØÌ/¦?Ó^»ÞÀZ°?­6à£@?î<$»Èg¯?ââ‰&µ b?Ñ™Û[¢Mj?â%Èö ?äjüе‚S?í„]%›Ë?ÚÕÍÞ¿÷â?ÞÚ-ò#"0?ÇfæÛÌMà? ÉëN'×`?àYvÅÏuë?ÒMŠ)óú?¸ÇE)Mç@?Ýp8ê�‚\?ål͈·×—?åýn8îyæ?çÑ’˜ÓQ?°ÊbB/ð?ž½œ]€@?ÐS¼ÇcT?âbs²�Ý„?èÁ”*Û%?Ùä}`¥ÿ¤?ÂVÞ¡Ht?æ`Ä»B?Ûà”÷È?Ð<[vvI?ç�k qú?ÕÊ” ©ô?ìâto §?Êý_n­g?êWX M‰ë?ÙÒm©€?î+¦† óà?álæ~ÕoJ?Ût[¢Û†?»uO8ÅSH?”÷ªÝÀ?·U��jiÀ?Ñ=ƒÕ ¦?Øþˆ i†?âZŽ4å?Â×”t4?ÃÈÌf0 ?բϠæ§@?Øq>2>’?ÆÊ&_õ`?楾3Ã[?èZCÁä�K?ëD'Ëp¢?ßW9šâœ?Ï>¢xvwd?ÝθºŽ9Æ?ãw‰8ç Ï?æƒ!¿3¿?ër‘Ó1·1?ÙÿYÊ©³ä?ßk}ó©ª?ÑËŒTvüÖ?泸Vx(?â£qõûJJ?Çp—¾û?ØÓ°.þPÈ?éˆf2qŒ?ÌøOIZ(?îì!V4fþ?ÁºŽôذ?Ð8‡¾n¢?ä/”Ù-N?Ôd…3x]8?ßRçûÛ\J?ÚN‚U¦„?Ô¡7>+á?Ù¯îÜðNÐ?Çíã I`?Áv§Bšû\?¼_l\J‚x?ÜqŸ~e\?¼[† UÊ0?àÆlQŠœ«?¸î†# Êà?âR‚#3ÆO?Ëiz�Û ¤?Ý/ž.ý©à?Å윥ÜÕ|?͆ÓazÙŒ?â"Œàù?Ó*³DÈ×n?é½ò/ÒöD?ækIÛØ6�?ãä5|dc@?Ék< G$?° ÇèMØ?æ–ÙÓ1³¸?æ´JAçK?ãêñ¬šP?ÔÑG–Ïtˆ?ä¼Ô…üê?…Tˆž@?ä�•ùD°Í?ë¼Æ� ߃?î é%œ]a?Ñßá°Í�v?à|-BË?ãG)­“â?ÑÀ} š�ô?ŸÍ…APÀ?ììỽ?á´x÷"=?äËUžÒh?åpÆ~ÌN|?àô$˜?èÁtªqFí?×äêŒhØÀ?Ý?|‡dÐ?×ÊjLº˜?ßgD¬u�?åa΋{(?ìW“1é¤?ãñî—†›?íìà^ w?Öj'½Ò®Š?ì5Ï‹ ®’?êÀ¯•³?ࢠ ì|?ÅõãyOt?êtÜ•Ý?íÒ‚¬bÞ?åsÛŽ ôT?Éÿëi•ûh?îDPV?u…?ëiÄ;ß?Ö�ä6x?Ûó�OÌ@�?ë[Ø\k«?íá=žC ?ÚI�ûÿô?Ò¢¦X�»Š?Åùã“^jp?î#H®@_5?ÃFdyh?é©íÜM«£?åü¬" ¡?îû þW;?Çß¡Ô?Åe‡‚ýG ?ê9’DÌþ?× ÷Ô Š,?â „µw?æ wP?ïÏà•lýÏ?áªîŠñÊ?æ™À,_'.?ÌLI/ Ž?árÄÚ9p?ÊÁI±Á‹œ?â_¤ÁD?ë•ö£Y¥e?Öš^ÃSÌ?áÓÂÔHè$?éÚ×~ð»3?Ö¨}Ý”d?á£þkKÞ´?¤°qðîª@?£q= œ?쉟ò�?Ãë£"{oø?å6ò°æ�?æáœý(Ç?ËdžÔ—|?×íB^VçÊ?®€Ô†ëÀ?îD‡¢ºhâ?Ú#¢iDbœ?åËJT˜=G?îë’ŠøZ0?á0ªøNåY?ÒGkgWö?ꋳ¡Ð¥á?ŒSkWIÀ?î’wðd?Ù°®'�ì ?ÛóÔM/l?çê²*F1ò?ïÊÝ�[(?ÙÐ`Ï�P^?Ç-¡7lÅÔ?í«Žwo\?ìÏÁ ð_Ê?Úæ"ýå.:?Ú=QZ˜È?Õ3.h2_æ?ãœòzŒÍÓ?çÿ{69hÃ?ÑqKw?4?àA· ª?Ó†DRœ?àQ÷ý1Ð$?Ð.ó^ÍÜ"?êñ‰�Ô3Â?¤ôí ‰÷ ?ÜѤPI¶?ÎTj§«ä?íÔä×Üám?æ ‰-Zp|?ØØ­'F~?ë"èuKðÎ?Î:0Ú˜Ü?é׉ÞÓD'?Ï…wŒš—`?9þóè?±ÆÜø‘² ?Üî®dÍu?Öô8¡í¹$?ݹEÜ—?àvu¨q÷ø?äb{ûd�?Áò—Ü¡¨”?í„¿Èœ?âϸçkÛ?ÝÝHP•Ò?çªÏ.K™Ë?Ûé¿U¿¶Š?ã5 ñÑL?â(&A$ï­?ç¨Àc2¬5?ãRv¬¼L?êÕà ½÷}?êϼ_ ~ø?ènVa�_ ?â‹óºë\?Óy(}¬ö?Ö®õBüÚ?¦B·#S>°?â.¿�im?î^1Ï??å‰ë±r5?ËD‘Õ<Ø?막\På?ÄDh±4X?Ü[Â*á+Z?ê{ö•oέ?è#N†u�¤?ÜÒ×hfŽô?ä½7HykQ?îac£`o?äJÜC,¹?Ñ)(Hë¶?ç“­×~‡?г•^?ß`ì�?샱…ÑÞC?ïâ0u‹{?Ô›)™¥d?ëÈd)BÂ?å ìæ3c?ë:BÆ[³Å?Ì!^ð[[@?Κ`ßYñø?Ô`. ¨?âRSwYÔ ?àõ¡]�< ?��å)¨d ?]X9#à?ÁLc\Èz¤?ïSÀ|ºûý?¿íc@7&p?ïŽÞï;Þz?¼"~yxÙø?×Âoذ?ɽ)ÁHˆ?ã¿q…ðp?Óˆé7Ü?ß‹O ¬Ï(?à>H}ÑÔ ?ÂtS¸Ö0?é¨n”ǃ¦?ê#RÜ+íÏ?Øeº 1çN?™ÿ³ˆdà?�A8^¬@?ç�Ã�kkª?áN(Ñ6ö¡?ßNÄÉWD?Òˆ¼Ýþ?Ýs!¤8~??d´öh?ï†ç [–?ëiíÿdv¨?ï›0p®ó7?Ùa'UÊ�?Ë—¦›—t?Ónö®j’?ßL¯™¦H?ä=ä—¼û?âɵ†ª•:?¥=T%? ?ìc)îôÆ[?Þ¬ëx�éd?ݰUÂÐOö?Ù»Dy‹ ?ïX4¸à7|?íÖ»ù}Û§?ÕÌ‹P2d?æ�Þs5%>?ڇ΂-‚Ú?×\-ö—Ô?Î*Ë�]‹ô?âwSÏíIx?ÓŽªyð2?âÌÊ»$Ê¿?â0ƒBtü?�ÇŽ ÃÕ?ÛÞêL&D?â望:ü¨?Ï¥lP?븙qK q?ìØ !WÎ"?ï+¦ ‰?ÑcÿÐb†Ú?êÏl”ËÐ?ŒTª&:€?ßgû‘Ñ2 ?ÀE÷ÍÈ ?ãY—„qX?î@Ó�¸œ­?ÞÜú(ìð?Ç4°Â?@?´‚òÌ€?æ)²¤�ý?ϳì’Ï0?ïõü,$?æ´ëí*Ó?´¥“ûO¸?î‹á�÷?á![tÏz?Ñþ/úÖ"?å ÐhÑî¼?͸Úê·Íä?Ã�,ÑW¶ü?tœÉ�4‹€?àømpüžÛ?Ø®#½ve?Ï€uß,?Öì_«ØN¬?Ø.ÂÃZ?æ½) 8…»?·•ŽÅöÈ?È"ábUL?Ò(HŽC¯²?½œ/\¶˜?½nigÓò€?êIg}‰h?ÈXÆÛ®~Ì?ê:xÇ´a?³¬8ªmÐ?À*Ü€ÒT0?êb)õÎÝ”?áÆÀU¢Ä`?ï¼@eÃû?¹?X‰s±Ð?åÈ©Ë ?׸Ú5rü?ëÕ$b_ŸÏ?ØPQ±fˆ?æoc´%ƒß?ÆòZve�?Ìä\ÁÅÍH?èÚ,`+#?îD6Ó(?ê2ÏÛm;š?Ì¢¡¢M¬?Ö žŽ¸F?ï ±ó þ?]n‡‰Kl?æÌ6 8�®?î-ÜpŠè÷?Ú4úð*UÈ?ésúßUÀö?ÕÃ’ì—t?æGÚh›5?ÝyŸ eX"?äNù†¬á?ëÌÙVÏ?Ã|ûürÐ?ëï„{—¨?̇…4Íl?ݘý�¯�Ä?é­0…«gí?ç×[ ÜMÖ?Ü;¹ßÄ?è�ãXIA?â3šØéÍ?Ý’*\¶X?îOkBÑ?ß¼þÓ‚è?éÅ âxá?âîz^¢P ?ÐÌÝV�l>?Ö¿˜t.?é쟻j±?×&Ku°—ð?à€™¡K/Ë?îÒ”�éc?çã�7ÜW?æq&xtŠI?Â� ®Qi(?äæ%`�?Ú™/ø0\n?Õó�0^µ0?æô"ž3±?ëù�5óW¬?ì8J°dé?¡�“¿]@?b°�Ú()?Áê§"žÅ¤?ÔŠ´KŸù®?åµä&¡!n?’NÊ(„]à?˰W¥cl?áÆj†@?àªé÷3/y?»VI%̰?Ô(Ò�dø?žTYî ?ëpžþÕ~?À³åú˜?çP:L–w?äÚ|F—?íc˜rŠô?æßFCQð?ìß+sЋ?í³ˆ·I=2?Ó_؃ÑLš?ê˜l®»/³?¹3ÿ'\º ?Г(:ë®?äMR%R’?²¢ñ©‰¨?ÂÆ°°t?³B4 ÐÑ8?¿ vìXºà?¤Ñcý­P?è@p±Aƒ=?ì1Œá‰ø?¾Ðó{¹X?·Œ¯]Ñè?Ì +°ˆö8?îuë�šäÌ?耧½áš?Ð_�§¹ê?ÂFyÍÄ-l?è˧g»¾`?éáÞêÇj?ë!ãÆ)K ?Ññk„ÆÈð?‹k�ºÕ”@?Þ‰Ž5ýè?é­¬iR$ü?ÇQ q`™,?˨ èv�7?ä^b_z#?æ¦è$*¢¿?àgy]+<?ë­W3ú@?Úø¯ˆÓN?¼} T?à±-ˆ4¡?ä©"‘KJs?ÝgƒR�?ÛíwŠKïÔ?ݬ|•ÈÄ?ßÔFzk…¾?ë˜!_Rªñ?íø-›„èÊ?ã•O”§?娙æÁ×?¹ü ÒÉÇ?áAúŽcI²?ÒÍ›ñ:¸?ì '®y=¹?Û9¡¼¶w$?ÄÍ'Ñ=}¼?´†0W/?à�ñíQ=á?ícaüqF'?êèª?çaÌÿÜ¿“?èJòŸÊ ?êF§}–qÆ?×½Žx]è?æ^×å(‰?ÓjÕˆø�~?êÑjd´ð?ÝmMÑˬ?êÓµæ§\N?ëš[Ó¥ÞŽ?è6æ0 ?ã³;ïúý?ܲóàuz´?ç'¥’éax?ß#=5”/î?Æk˜e"Wø?çiþol·?ÅÀ�EÅ`?Ó9£Ù�\?ç&)c˜Æ?ÉvׄTÅÄ?ãpåýÀ§—?Ú�µò«xD?ì¢ùÓ?áQF”´ò[?ÖYfO§ ”?̃PMB@0?å™z)‰�ö?å�„û·«±?ë-ŽÅRj?܇%íø© ?îÿF@qW?çzo)?äêè ÑÆH?êžjÒì5¢?é�¶�ž?émš2‹?Ô>DxPú~?äQw(�x?Úß´ÿŒ�?¤™®@Å™�?ゃæC?ÒæÕ6®·È?ÑÀMÚÓÄ?ä‚@ürR´?èœK:é²?´‰wwp ?ë/ÁDõ½õ?âÞÓŽÎéˆ?éš,rˆcÄ?Ãõ©Jqd?Ô[ ÖöH¦?ÏË hx�L?å¯*v?ç¹ÓöÆ¢?¼9¥¾?È?àŒþ7æ×?ìmþJžW`?íïnR µ?Ï’$þSe?Ú±‚œ|¤?Õ4Óa¤>†?êˆA3´Ñ8?ãÇW»'R?ÝHáGbÀ0?¨ '0„´0?§Ú‹èúŒÀ?Ú3/H¢’ö?Ö�pN$'˜?Ø›Cê é?°ÄW#j1ð?éÞ?¸jæC?ÝŒzLwµð?ç]ð#,±?ã³%+©9?áüªA'?È~…²­d?ÙÖ�ü½çÄ?çT´G?àR#þ^?íÅ�7¥<ƒ?èr(5‚ãÇ?äoöá¤?æuZ¥Ïê™?êj©ÐÇÉç?æª2ÓÑÝQ?ïålÊØ�?VïlW¥Ð?é I¥²…#?ÝMa¶uØJ?êj½D%É?Â�”·Ä„?è΋1Ï×.?ÒvM¥,?ꢛ¬ÊÝ—?ä¹$/\hî?݉™Õ&Í’?ÛÈÒ�Ü ?ÒŽ”bjŠ?Ý�{°~”?é®ðÙä?ízSb>L?ïa¶m�Ë?æâ�€S?åeÜ‚¢ê_?Âjºá·`ä?Ñ,,wëçê?Óœ|ç´¼v?Ã×ê´d?ç]¾]ì÷?å��Ÿ\¨?ÚüÀ¡†n?׿œ-W²X?ÏSȤ÷?Ówø®;Ef?ãQ: Îå?ÐÕ†ªVKT?¹Ai>Ê?Ößäú¿“Ž?ÙÃòu£a*?Ú�å9ë¦X?ëªa¢+?äîœýCÖï?ëê,b‰ ¯?Ø=-Õ¤p?Ãfˆ>bIà?æ?¢´£×?é¥Û³Š¥¦?Ú΃>í˜?Ð%îfüÔ?Ùú}÷Ì?Ö“•p²0?æ�5¨Ý�?ã¹ö׌aV?ÇæE60$?ä“Ï_}™¡?”wЊã?êJ¡k[Y?ã!@ˆ%œú?âvD”Èo#?иúÔVâÜ?äYCº£ ™?éÆ}üj½Î?Ñ9½ j_ ?éÛ$ÁC[’?Öð§áääö?î¨Ð„o�s?ÖÿÖÈ(®Â?ÀV-ñ*D,?Š"œÛ�]@?äÕôç5?åb#ø Â8?á ÂÅ�?ÛŽ8Át?âõFäÞ.M?Å}gíì,?›³::ƒÎ@?Ì[î™?œˆ?ïÔû±*]v?ìú‡¾é×?…ˆ¸±FÀ?á/&aöB?ç§FÏæ?ë­+2WÞ?ìAëâPA¨?Ï®ðVÌk\?Ôµ ›Ò}R?år ÈãGT?ä©B•þ—ì?‘¥„“1¼?é©mItRÅ?ì•Öˆ}k8?ä¸ò®Eïd?â§P¸Ìf?¾¾F7X@?Ò…¿èö,?îÚ#uc[?î¢WJQœþ?³¨8ã�º¨?ë<^°™·?ãÉu8f«?ä  ‚Õ|?Î0²>S1„?ÖpïCi#?×ÉÓ,Ó$?ìÃ*2›­D?È,„”KÐä?ÑôC'Õ ?ï§,À¥7³?ïé»wBV?æ¿•-Ýt:?à/![ìý?Þì;ô§B?æ�“ûl×?×Ètn N?Ð!·ýÕ`?Ìbµ›ŠÌ?êP¤Û]T??ƲÆWü?×KЫ_Ú?äJ‚U�P0?ìö>Ú$ýE?Ùwðø—J?Ö!€ŒCZ.?â�L—èÂ'?Å`«Š{’ð?ïi‰L©?îjßÂÞ)§?ÐÔа¬Ò?ØwQÖðî?™~qªÀv€?Ä™T¥¬ë�?ÐjñÝ´¬–?»ˆã½¸?ÐÔóÝ@ð?쳆åÈ^?áÕ%�0(?îiŒ�q×?ãv´€?á‡ROS{¾?êˆc>bxu?»Q8®V‡X?â$K#Ö‘¦?Æq_yB\?ÉÙóM‚ ?Æ÷³&W¤?ÚBÝÔÔ?à²Ê"‚ß?ÐëLIHXÎ?Á®T/�­”?ïx‘Ú&ÉÆ?ÇÏý× Œü?íÂùÜÓ„?×#a”P8?§dZi›0?Æaà¬+àt?éiº Qi“?á»° ª¦?ìV4`ý ?¾… ëï×`?ç•*ñ´Ì?¼áÜüÓÌØ?»L /8?Û³Þ™¡8?Ú8Í�7ÃP?À7/Õ`?áßîƒÆc?â[*îpHÑ?ŠÊJÇP@?Ñ-õ4Sl?çÙbå¯)°?Þ©Ó%ÝŽ ?å²ýZ�ê?ªöc¹iõ?Æé”9,ˆ?¤»Ø(¥^ ?çªq¤?Ì[Xæi-à?qÒ`‹Ò7?æn@Í|JS?œIáÑÔ’`?Ñ£4¯GÐ?Ï8Õr?ø?×~ N|°?ãÛ°'´ø?ØHc†\?î‹`Ç» ?ÊÚ½£™Ã˜?ɦZÌ^©°?ë•hïQ§1?à9èð²Ñ?â�'>4ˆ«?àJq\…5?Ĺכº°?É…SiOJÜ?àM(©¯à?éXô€ÄîŸ?îè|Wìù?âAƴИ ?ã˜îM?Ý‹‹û„›6?èºÛkhîé?í" $Ñ?Ôˆ(’Å`?êaæ`"/?Ù‚?øGÑÐ?»ÀbäÞ?ïÒufe¥4?×|¬¬�èþ?ä*yp‰ÁL?èɉœZ?妰“£Õ ?¶Ä‚Æã°?ì–HÛЖ?ä©)¤Œ–G?Ⱪc�p?ìϧøÅ(Ì?á÷Ɖ<©�?ÀÙB–ÏH?ÆÈ$$0¢8?Õ°óºBZŽ?×îø¿ò¸J?Ú”Nf @?ë&ëáÌ?Úì�»Þ?¾vV7AE�?âÕÎ7aV#?Éb y~il?¥Ý�¹ì0?ëÅ?³z¼9Ÿv€?îS5н·?ã8•3&'0?ìŒ$^ìw?áÐ+‡Ü˜å?Ï/xNfjp?áÁ’¶WI ?àÓ^~ø`!?æâU RC1?á¸~Œ8f*?ÓÏÑsÊô?åwß¾z~?ž΄œ‡h?×ÄC‹�l?Ïdé v¸?ÕãÕ#Y¨J?É™4ð?Ú NÄef$?äw*kŠ’?êM8ãn@?ë«–+ø¦?ÏT$ŸÐ ¸?Ø3½A?ï™…?ì+©Ï�?âqÓ³‡€ ?À\Aº¿@?¦2S¤@?êУÄY#µ?¶s­ó<˜?ª:K2!?ãìØñ&” ?Éc7�©k(?à&ûÐÃ?±wO@›¿X?Ý­â´?¸ú?ì¿rØò|?Ÿ5€Öþ_€?¨ºdÜ~]à?¸l®æW ?äâTÚ÷2?Ð'y.sV?Õ�9´^ʰ?ÃB%rïü?Íy|=�ˆ?äºxZ‘�Ã?ä¾Ýð<2?Ñ{’4ô?戊>¸?ëqD·|?ë0 jn„^?îÀ(·/s+?ÈA2…Ll?°¡̼G?àÅîB¶‹ó?Ç Y+ÙĤ?ÛL³=ä ª?æXÇWäp£?æ#a’ü)X?ÙW¤WXö?ëQž—º#?âËb}[”š?Ý'@'SN?ï§n3¸ ?䛾|¦¢?Öƒs/ˆô?éwµÏCÜ?æ2”—.ŒÊ?̸w¹BÚ¨?Ø�7Óþ7Œ?äñÉ–ÝEl?Ö/»Ü¸j?àtŒI·Ü?æE"9‹&C?寬�ÿ ›?µ)Ù&§Sè?àp¢´Ìq?ÖT ³KŽ?íåÌ9Çå^?íNŒõ÷L5?è\ÕÐU¸?àáí»T?ãÌ4B“Á?îty™Ñ?ãf$ÝD&?çhð-?Û4|vÔ?Á­Á©ÀKð?ç™ýÅÔóT?ꊼ¦i@ò?Ù îœ$Læ?ÀbZ7}Lø?ã6=TÍd?ëÎ?‰ºU?¸u ¸y°€?éWþÝo’?è;â1B?îKÌ\ò®?ÝŘX¢?¾B©Î o°?Ô¼_ÔèF?ëÄ%/nlÅ?ì ð°…Ž?èkÉø¹´d?Åàè¶\|?ÎjßééÐ?¯…_„N½?ß•.ã�‰T?äs‚(Å&?ä,æíY”L?ѳØúf?ëë§sŸ�€?ÐñmbR�Ò?½£ÓD“¨ø?Ý ÊZò?áÒF‘&è¸?àÌQç"?Þ&mY°nü?¤ “b(ÝP?Ï1õ‹² ?å.øÄÅ·*?ÕÍ1‰Äl”?ä§R2ÍA+?ÆïŸTK?¹�¹ôoH@?æG+v$ë?Õσ롪?å[Æhe´$?ï˜ ù^6E?ê:¥ßÿ5?Ðj=\JÆ?åÙϹ¹?ëìc`®æö?î¶#­üŸ‰?æÉš>rN¨?ï2�p[‡?»'á®§@?í-ž“bµd?ìáÈÓ�î?å;¾õh?æLUL–|Þ?è¼FÖô©³?Ô­IaÝì?Ö ÀSLYV?Ï�lPï0?Ïÿµäì«ì?ÐíD@x?á†�ˆ%s¬?ïL36aÈ“?ï¦Bï�n.?ÀÉ æ@ÐD?Ð3Îg$@?Ùî½°º?ÑßýI­DÔ?Ṉ̃¤Ùð*?ãyd CV?èîRl|›—?èë)ô"Îô?ß9?¯h ?æ ybH„?¼ü‘³p£`?â`Mçe?ç�;Þ¼Ä?å1f!ººC?æˆr]/³?ÞÌÐ�B?àœO¸?§Ø§“ÑÕp?è…ê!¯€³?èÓT„<8ç?›că� ?Ò03µ°-¤?ë^–ã4k?”ZœØ�v€?äòr83þD?ÖýB–_ì|?ÒL qè?â”ãF-Õ¡?ëÀ‡ ‰Ð?Ø„Avü€?ê «ìi6‡?Ù”?x{Î? Ë5”Íð?èS³]¬½—?Ù…7Ž?¡¼6E4L?äØî¡O‰?Á}Œ7ÇRð?Û$´LÀ?ªI=à*à?àT�R]Û?âÛdös}?ÄuQ |?Ú$ÒEÝÉ^?ÁjDN‰zx?åð+M ?ç"N RQ¤?ÃhÐðBà ?ëfeüÓ?Í¢^Ú€?ããtߢ8?éo¦a#²Ñ?ïšl 7û?æ¤?Ê t?à‘d$-ø/?Ø"óšÇ’b?å‘ÀœýZ÷?æ[Ìýøè?æn]å eD?ÎmJŸÛ¶¼?ç:²Ôw_?Ñb¶¦�F^?½'û½{ ð?Í�e¡®UÀ?×¥0`çY ?ß—“FoÌ„?åÍ%nÈ\d?ádSL %F?ê¼åס’Â?ìA*Xþ`)?Òù|± ÀŽ?áî`¨?ê'qÆdYv?À©j¨?ÏÙð×÷|ø?èW´Tâ3?í,÷8TÏš?ãKÞßÉW˜?ÞRFô.?êôí$¼Æz?å]¡3#þ?ï1œ‰MN"?Ü].-Æ‘”?ä3{ÙŒ-?åi[±„&?âÐPêÔu»?åtDªØZ?åïA϶�?ç Aþ|’#?£…’~¶6�?æcÝÔ•‡?ï/7ù‘Ã3?íéáðÁp?½òÿQ8?ÀËÌ0?`@°«ýù?㣯´lT°?Ò¼ÓôK ø?îaN3Ú*¤?à3—^¤«š?Æ¡¬z)¤?ÄnÐìLÅp?éÑ-Óˆ¶ò?ÃÚ¡‡ìL?êµí1Rí¨?婳´��?»`6Êù8?⪯Ë}õ†?êNPØì ?é„l4Îa?¸l„;3ÂÀ?“tMî”'€?Ó™ÍT5V?è?Ùõ,?´ÂpføÐ?•ô{æ 3à?ãÏÁ〠?î²a ;¬p?˜\Þ]|±@?ËPý¥G–0?æ€qùSà?ëçö µ°?ìê3‰?•ßÀýû¼@?ä«7>#NÅ?ç9¿º’ú?áÏýÊ‹X?ì0‡#c!Ú?ßñ›§]™î?æGæsõG`?ïob«µpj?ÝkHòÿ^D?ë…W;ÝUË?äËJ_íN?±IåÈÊh?Ü|Ë•Ž`¬?Ñd8|¿Œ?Ô|@4fÝÆ?Ë+Û9´¨?Äã;4Uwl?ç ’&~?ê—kÎZÇ?Ø(°˜¸„¼?Âʬ>tO°?æ–ù‘/é?¬£¢3Ð?ÒÜæÑät¸?É™DC×Wè?áàÀè,–?êþùnHã?ïE%ì}?í\¼*™Êø?î”4ð':¸?ìê¢ú?åóÑx–?é“g¾ßH?±ÐljòCP?Õsm½§jø?☆�rO?ÉGE„è?ínˆ¾r'à?±}õb¸©?Ô¯ Úy͸?ãr¨5À·æ?äpÚytÇÄ?ãTx7°¬Q?î[gr¹B"?ÞÁ•;ù—0?Ð�- Üôj?æ3NØ(à?Â,nÑX?Ø×Ƙž~n?סeÉù?¹˜ƒ+r ?ã ~tÁ;?éúMclSC?Ü3†€Àì?�XÍ�# ?Þaá?ý¿Ä?Þ¹…� Ój?ç×=òʉ?ɸŽ÷Ôù?Ç¿p¯q ?íZ}ä*¿?ë±–Ó)ô ?å¡HÕŽ*?ãžD1)°û?ãupÒ‚Œ?Ò"Q›þ–?ïÙ:‰ r¿?âœGvÅÈr?Я}•n?ÜOkŠÙp?ÓFíéhú?Þ¼ÈnOÐ@?äÊTºØ^F?³ÎUz”tH?Œ;4=we?ÒmXA±“¶?ãân Ь?ì��›æ?ìæX²@Âå?ëÞGzÐL?Ê™–A­•?î$ÆäC],?ëϺ<ê?ÈÉHsI´?ÎŽ@ ü?åÐ$)Oå¾?×;«t?ëŽ�¤¡Rû?ͶÞÉm”?Û6‚A`’8?éûÜÉyî{?éféC‡ð^?àD¾Ú–G†?îsfìr- ?È‹û (?’r)a‹ñ`?Ò …Z´d?ßb4ýø?âSz°A÷Š?â.%-‘r?šÁî^p ?ÒSŰa4?Öê�V¹a?Íø…ZZ‹P?Œ6åpü”?æÇçŒðc2?ïÖ°=€÷o?Ò�ÿ=í€?ÙûåSYÒ?ãÈzñ³‡]?ë*é©_"ª?çÊ*Ö‘m?êL' ™ç?ÚŽ¨¢Cj®?Ó)¸À|?¿Rý¥ ðÈ?ë1úªy B?ß– wöV?ټƘSõ ?è¦(Ϧ<Ã?à‘RbßIß?ëÑwÛ±ß?à{ Ú7še?Ç9¦×ZÞ°?Ý vCt(?î;'—E´t?šz¾ßt*€?ÔA³Ò 9î?å *ä \æ?¶·%Œ[Ÿ?É>£w?ÅÜ 9‡œ?æ‘2�#?í ñ”tó?Ðbh'ðò@?è� §‰?ãÃm£ ?â¨]–€X1?Å6ˆÉäP?Ùr©¤b?Ñ.”�Õl?Éîš %Ú°?å¨~â[qð?ë y›½Hƒ?Ì|MÃàP?Õ€áÊïXˆ?æêÞ1Áÿ%?´÷’˜ÖØ?ÇT dÇä?�h ç d ?É·à”˜˜?ê@ä|x.?å3$º(,?ÝÊwœ~Åp?æšãé„K?íÜxön†¢?àA½ý ?æ:Âx3Uß?ÐmÏ.¾*?ï4Upz…â?Äæ YŽE,?îBÕ5$å?Õ²û€‹�î?ã RPÔ?ÕƒtÁÐÌ ?ÚÇvNúpà?ÔJàç6?èá÷�u?¶›ï&Ö8?«µt± e�?ØsrΠ¤?ãbhÈ ^É?’q�avå ?裋լ?Ý bà?îJ-†:×?ÐN.Á&T?ëÐïú¼¢´?àý÷kûâ?Ë|ä!Â’t?⚺ݽ?ÔjÁkïq0?í'ÓX±?À‹lOjÐ?àf&Õë)?Ù~FÊh!4?ÛôyË-Ä?á–ŠÍ„†Â?ÒRj$@d?à.‹:Æê?Ûô%ñï?ª×8ñÃÐ?”÷ñŽY ?»0|O‚ ?ØZh5AÄ?ߌ½ÓØ*?Ö+¥¨?Ø›‘™‹8?ãÓMÒ+?çoÒÕW;?ÕÚkÜP ?Ý¿6Â�?è_óHñHH?ÙØ1•g ?ÚÉ3Tvn?ØÐ›ôÎKº?è”uÖõc?ç¾Êï ´½?ؾò–n?Ä"QÆóøœ?€w@"ÇÏÀ?é(S)E Î?çBÖI,«‚?å�ù ØÃ†?ë,3OGü·?³V£SÓø ?ßÔ×tÔ?ÕMé¹ãì?×Á(µòŒ?¬ÂgòN*À?à hJ)H?À ·t¼„?¥]ö[ñò@?ã˜E®v²?ꇮ¥xœû?í`ñÆŽw³?å�íÄQ’¦?¦þöl~ð?áÌeŽnè?Ö©”Œ;|?¤×ð·�?é?Sr…?ÜÁTí{dÈ?áÓ‹G¶Œ?ÕA¨E|–?àu`Pžâ?—‹¡´w€?Ò�‘PK]º?¿³ÃM??îyå$g´î?ÐŒ8¿ìPN?èTPüÖ^p?ä²§“qÁh?ì®ÑÇÁT?ëG Ísý%?á¶7 º?êÃ'[M•?’mt >›à?îg aR�Æ?ê¸& óT5?Ù(NNjLv?·BÁ ×ä@?ì¤B1ù4J?¸•ø•ËX?×Q“4F~?ÕŽõ©´°?Þ® ÇM”t?Þ0u¢ê?ÀêIóŒ;À?ÈÃ=Á¦?à$,”ÿeò?î$‚ü0 ¯?Ý«é¥qâ?а°§^Þt?ï«CðfH?ÉT)Tƒ ?ÞÝA°‘–†?ÜÛ{K?ØÍ¬=ÂVò?윆¿–Š?éi—%åŠ?âêþ¬ É?Ô°�/ó‘?¾+1öȸ?ìU½×ë,?Â…ú PDH?ÈRJ=›„?ÊtQ )P ?êF?­®?¿üAfX?Ýêà ¸â?ì=±:sb¦?ë½('H#K?ÛuŠ#u3’?âYB:zßI?ë5d§ÊÅn?àâa#?åÆ&nƒ7d?©'M»õ×à?¶~¸izX`?é€<Ñ9Ú?ÂlØ0ÖMt?ËdzX,?ʾkŽÜ?†êÐÁO@?ïåÓºðC?»cqBÓ,?ÑFN§ ‰$?ÆÏÞ“Ïö@?äàâÛ©ö?ãìwˆ¨ÿr?íW¥cƒ›W?å4†¾Dt?ã•èm9j?µÄÙž‡¨ø?ÎZÝ¡wB¤?ác÷6Cß?ìz€ž½?•B:[€`?ì„YõB?Õ—5jß4N?êw]˜,ù?ÝàÈN±‹Ž?ép,¶öLN?â®{…8aˆ?æ$‚ø-?uá[‰×û?ãFÿ¬�Î?åxµý']?áÃbÙi»?æÚF0ä³?×Õ9‹c{j?Âk<ŠÂ¼?ÔÆ,‚ÿ%ø?ì K–k©?¨r¨U·ŠÀ?ÖУ {eÆ?ê1Atã}¦?îNÀßHK2?êÉœ%yë?ç'b‡»?ºÛ8C³�?íï†yL„?äfÙ*\‰?Â¥Èú2üø?êç‡f�EÚ?ç3X;ùpà?âhù®»9¾?ßB¦ÖV?¡"„¨Ä·P?ÁfCvX@?Ù|TJ0?å"ÿÈðŒ?ïˆÛ¢bû?ê°6ì�?Ü^‹>$?èW4j‚%?ëàQªïy?è¯æ"Õ†–?Þ ×íÆD?ªiÞz¸?¸À`T씀?ß凿¡Ò°?åÕz£{Ó?ërvp.e?ãÑ0Bkþ?åR´¢v¸?äcS.ƒÒ?ìË:€Üz®?âÕWÜLÚk?à_òG[N?爫J`1?¨ÛÇn�?Ñ)2»ÔD?ì&}Ôg×q?çVbPA;?誹÷µ¼v?î§# –’ß?ã±ÊóɃÐ?ËóÙGlâd?×Qy®…�À?×ÿnµ¨ ?ä [osò@?àYÅ�*Ú?ÁDµõJ=„?â‰oꮽÝ?Õ¬Zèü™ú?ú† ä�Ä?Ó´Æ!} ?à ,l£�?àƒ)]`™?ç ,Š´Ä?èC�BŒd ?Î�}6þÇ|?ʸnT�?ãXfJ]ß?è‘kpÅó`?ßÓ¥èÄ\?éTqD»_?åFý¿-Q%?¦+GI8S ?Ҝѹ7¹Æ?à$qªþŽ´?寡«ºeè?Ñ‚»|,"?à¼O¥Fj?¼â[hz¨?Ø¿SR¹ø°Êò?¯wŽF¸æð?Ðì…^ûÈ?äGþj&]Ð?çF2�1b?Û!Á‚ñI¾?®Š\ OP?ÑíÜÙù¬?å|Ò<Þ_?×isßI?æ7¨c�(??ÒTo–ÝŽ?µ;B¸¿·?àŸÐ±]Þ[?´!_¢5à?æ66,V?ãÍ»uÚ†?®Ã†÷ìP?äKÅ¡é+}?äg}xsæ?â�¿©Œx?îÛ%¥q¹ð?Ê�R¯cÐ(?ᆻ~dÿq?æ¯ídI~«?ÙÉùzz ?Ç/õñ›‚?­ÉD�ð?²¥°ì ˆ?Ó½( ?êŸ`¾µ?ìã*Ñ34¤?熳Ö=n?îé—Ä ¨w?ÂZk¦~Ð?äE]r@•`?î& ?û°?ìoí–Âü?äò4Ýéø2?íŽñW,s?äÂŽ"oÓí?éHm:@Ðp?äÒý•I$·?àŠ‚�¤Pô?ÏIižÜ¤?»b;eLõè?æÞðO¿ƒ.?Î|÷ê·¤ø?»wþW…qÈ?è•RgFe”?ÛLèZ]Ÿf?â»äö¾ìÙ?³_̉ÐÀ?Þ_åÞÝÎ?¼áã[› ?æÛryLÓ?å?º.ߢY?Ù+Žh[‘Â?ê,ä""ÇŠ?â…>í£?âÿMåz_È?ëRµ½‹3?Á*$ 7ñ?ìÞ[çö9|?Øa-J+z?ä‹ÿA?Øÿ쫸àŒ?Ò3+n Î"?º¼K$¥íØ?ݤùzÞÜr?Ӹ˟ïB?ljŽ#ç”?æÚIV¯�?ê1Ì5úˆ?ÔüDµ»”¶?Æd«—ôô?ìÈÔeg¶?èοÝH?׈t;ïI2?Ì¥ƒýCà?áL–ùJv?Ñþö¬Ê–²?âÇîÇøÙ?ÐKz?ÞÚš?4¦Ê?äPŸûä*?ÜRYlm?v?Ã38`îh?ä>0 ² "?æC¸ë›µå?Ùè½n†îT?éa÷:ö¦î?æƒJû„÷ð?½Œôç?ßîÃ5W?ÂÚm–˜´?îd&Pþ?éé¯DAê-?ãrOvj¥?áomêÔn?êÆèJoÕ?°C"eg€?ãC¤¨�œÀ?Äš^ “dÌ?Ò×L¢ˆÂÖ?Ú1"Wï`î?â#¬•œÜ�?¦žË53”`?îµû€m?º¸��X?î;~{Š<,?Ü ,ÜZp?´ ¹((?ïá!¹Í¦?îÆ®ž× H?°ôÒÒ�(?ê]‹ˆÃ?éÛ¿>lb·?ÎóŽO.çT?ìÍl Ëd&?Ð>š"©§¨?ãþ`4:�?à±ky¤Uê?´\Q |��?å4±T’Ü ?áŠ:VÅq-?æ"rx¹B3?ìa!£%Á8?ÜhV‹®j´?ÐýÓø](?ìXüaãp?Òâjeq†¼?ïš`æ—9÷?ãÛŸ‘j¹?ë¼· ÄÅ?ìIôüEM?ÝË'¹míš?Æ;°âf?£¢”Ù8P?Ö,ˆîÄ?Ý6®iÁ«â?‚¸ 8€?ç9¶JA[W?·´�ÈÕp?åÓŠÁ•]?ÊÔuGt` ?ª8×/e €?Χ†¥rÄ?·¸Þ@é 0?ØV<[bé>?èIãÑW¯ú?Ùdna‡Tâ?è½Ëyé¬$?ÏV»‘êç ?Ýš/‡'ð?Øe&÷Ÿ$Tâ­y°?åLÔ3ÏFÈ?²££mÆÛ(?ɼ†ûƒ‹H?½·'ñþ¬@?™`ä7ˆ`?ÞHx›f?íâÐ[7L?ïpc"ï?ïâ!êoëƒ?Í$Ý?È_Ì?ë¯)s�3?ãý$’6±à?´–¢Ÿ//È?ßî¥Í£‡’?àz�S·¤?ÁªÛä¼`”?DzÛ0¦L?ÍD²Ou¦4?éúSY¼Pâ?îÕ I–œð?ÔKÇ’�b:?àNžjƒ»?Ã¥£èõèØ?Ë{i$3T|?Ì#fÐÇ”?Ðô‰IéP?²<ñ\à?è×&Ãþéo?­Weç2¸?Ò‰r:øQ^?èï/$šXÞ?êöûNê ?íòé@;dq?ìÅ-ò< F?ëìÁqLI~?Â[i�¢€?â|Ǥoš?Å%}¼Ä à?Øúiå¹Ð?àgô3 Ž4?ï ?[q-?åÊ÷4¼‚?Ø^,Ð@‚?çÛcÎN:Á?h ¨TPÎ?íiH&ëKa?Ò–ë�ø ?ïbéy¹ùF?Äp™™6}\?Ó‚¡çz²?á ¼7PÞþ?á§ý™ž¤?ãç ‰BÊ?£á…ém2@?½r‚‚*Ø?ÎÁ�<�è¨?âXªÄªô?êh824V?Ü‹.’²L?Ã%¶CÇè¨?ßWB7âÞ¢?Ó]²lÚt?ç(’ÔN?Å6#„bhà?ØÕbn (Œ?ØÀ GÚÚ?ìBrSC°i?å1¨9ÎT?µ†HÙZ˜?ÛÖÅD[Ùš?æ†7É8ÆÑ?ì«ýØU­ ?êÒĤ~?áÑáñ‚-Y?Õ¬}Ћ�Ž?Õµ�È:n?åG�3Þ?—m’´'à?Ì:‘�87Ì?ÜÛ,ôb‹ä?ìô³ËëO?êâ5CÇò?æîÃèŽê?ÔK•ûU*?ч&ž<æP?Á� ³«Ð ?â…ë–LV±?×ç*S_j¦?æð�jo@Á?”�Ìb>5 ?à9‰¥Ô@?à¹m„Mˆ?ºâZ½ú€?äõwÊ*й?ßjšt•Ëh?·&™šŽ�?ë¾W 7Í?îVÿ?@‚?ÓÚ~«†Ì?ºr-—?Ù60Ãí[?Ü0fÙpì¦?ïdBç†ù?åõ©ZEŽæ?Šbùª¦¾?Ñx€!s"?îyaj1rP?âã‰}dû{?Ñïïq¾þ?±@·Ñrx?èOKJžÃr?ï^Žjùˆ?ØúJ�¡Rˆ?Þ5”⸾º?èô®aûî?èñVYÜÔj?éÖ30`ãž?똪^Ü”?r˜ÀìCë?Ö�R…óá?ØS=Eñ¦ ?ĬFî.L ?»•ëþ¶ø?¶º’˳|P?°þRÉø(?Ãþ~'³L?Å™þ$l„È?ЭG°—�J?ìW;ìH?å;_ñôÌX?Æ7/u:,€?æÀôÀÝŸK?Ÿœü¹5 €?׉hsöú"?Ø·(ÀT?á.b¸bÉ?ÒV^Ãmê>?æRMÜ?ëƒÜó!\×?ß».Їf¨?Þ”PÌ?Ö€ÙSÕæ?à0Å3“?í~‹Ã­Ž?ç>@H6?×?ïØaÊ?ßܦó3�î?Ê¡‚*¦?æ�ã·ÌM?äö²òÀtæ?åS¢‘N]á?Ú%>O†è?ÎL‚ö–XÌ?Õot¬›‚?ê„€žÿëá?ÚK¥Ó#*Â?ä?¡æ�[?´Þñ�K0°?çiÐÏ_&d?èé�'¸Íå?à¡T,ßà?é¶D§.Ó[?ºÒ�]@?è÷3Š8I?»î?Äš*ÉÕ¨š äþ?è­œ›˜Þ_?¿×âZ��?êSu5#ç?è–šY·?¾�")ý$p?ë[(@?~0Px¦?í@Œ?É9½?åêd;Ö ?«Q^¨W ?Õ »ª˜Ù†?ÇZöM«[�?Ý�Ö’÷x?ä¸Cð•Ð?îg통?¾]@ Ñ£Ð?ËÚߟŽZd?ÛZ¡ÏFå(?à�•† 6?àñÑü ˆ?ÓGVðhL?í8¸¸¹ƒ?³~õ´¹h?áê&éH³?Ú‡ ` ݘ?ãQq÷�?ëéLtÕì?Üô¬ý®% ?¶œ�¯KÍP?çXØ ëz²?ë4ðFÌ«?é—RWŒ?å˜æõŸþ?Þë1æv²à?Ñ�§))&|?è3ÇA®hN?ÂóJ€ ßx?ê¹æÅ]??ن‰æ6?é¨ôÞ< ?”Ý·Ò`< ?ÌPIËm�,?±åZGàd?Ý7ЃŲ@?pÓðmø„?åt¶¤ÏÆÿ?¿è–Ísí8?Ì.…€?Åžú¶çè?ߨ„¹7\?âžé*Gv?áÞ=Uñc?ßx2Ô÷Y ?åØ>MAšA?ä?…½1ÁÏ?ì¤yˆZ?ée¥cá˜R?Ø^Ò4õº?»dרf ˆ?çÑ(¸ÇØ?é®b±½?ï{¡t®Ü÷?ÍÇOÈÔÔx?är„´Ñ¡/?è ‹Ç­�¤?ÝNÃŽåv?Ñ›öô!”?ãÆ)ÜÉd?í:":Ââ?ëýÕ!³¼k?ÌM¤˜�˜?ìí>…XeÆ?¢%MùÞ�À?ÝÄÅz¼H?ïå-ûš$?ì Ûc{v?Ø ÷Nj÷x?껡ÞË?Éšä°Ó¯?äpƇ‡;s?ë ©\ùÿ?ÙøŽ»ÔÎê?¶P–Z; ?Õ&ªÌýÄ?Ðûç×ÏÄ‚?ïÌÂPÚ^Í?áÿ«SEú?ÑLEÜ¢ j?žgg¬,à?ëÝâ= ñ3?Á+¬<\W4?µÊ$Õ,`?ÚÄÂz™ú?ÞÓ­;¾æ?Ó^„—ˆ?ÞPUžà}0?êø;ƒV›®?탺‘s?Ýð.öÇð|?êC‚&?ÏðP-sþ@?³W?Ï>8?îX.Q`?Óò ÀF\N?Õyèi3b?åhM¨Ñ¤6?å‚•<øë?סoÑ("?Úgºë'Ø?ܦ™[ÏÏ>?Ë+àeªÆ ?×±´âÀ?Ü àÀzz?ãªß8 ÿ?⼆¸;§Ä?á¨=™Ž)?ÞIcp翸?νFæEê$?ÝV…Éò¼?à:+l­Ý3?ì­Â•(*•?×�¿„�}Ê?í"OKAÀû?ßWz§Ú{?Ò‹×ñOè?Ìá]d%ô?Ýn‹Ãn?ßO´Kù; ?á{^EŠ:?ê&THÄï?âŽ^õÖÉ?âp¸7Ü$™?åè7sy¼-?ßnšKà?Ðn Z¡©Þ?Óå¹J}ã¨?ãM¸†r?錔ձ£q?™ÿçBîCà?Ö€Ú÷Iâ?ëgAuº?ãe÷nØ$?ÔÜ•ºhõ\?Õ £ÓÔ¡?Ñ ¾à’°?ãZ)=ø??åä:îa»k?«Í̲8»?×wêþM&?Þ/À™?ë-0B�?ÆÌŠžfd?×B8¨x$?åÒY>ô(?éÖh³ÒÃ?Ðf \>N?î Mˆ|[?êÓ¦àp[ã?ÅX'[5Í?á_BŒÝË—?àM^nçÕ?é–1r~ÞD?ç®1'gâ?ì:ǘ­?èCg(‹š ?Ý<|êv#^?ݲyØæŒâ?ëò.¨uÝë?µ B}cŒ?© X¸¢°°?ã˜V7ÃÜÐ?¢É«+!‚€?Ü2¾?C/À?Ý�÷¤!Ln?àc$’FŒ?ç0VNóp?Ñ´}øPL?æŽ@Ár1?ßÕ{0Û”4?ÞĦOo(?ÊÖ”¿ªˆ?ï9‰BáøØ?чimI¸2?êW BI§?îŇ{m?Â÷ú0áÊè?â×Û×´”?ÚêœÆ)·L?Ìè|×?l?íýJQIc?³¥áø€?É�à'í,?‰eªÒ¨ü€?êM.¯¬�?¬›mî~p?ÀtR@{¥?¾¹Ð`IÞ¸?ç¨=bÃ)?⎵bš?׋r°¯®?ã;�d ?ã ´»Ó?äÙÁÿÝD'?³¥,wCP8?çÏ>snÇ?Á¤š~Ä´?ëâ£tº•?ÔOÓ¦J?æ×CWs?ãØ=�^aŒ?ì<_1û–??Ø1 “Z?Úq!ÖU‘ò?íTêVn?ë蓨6Áv?Ðïtúò,?à¡wŽ™—H?ßÛ!‰:?ãð Ww,4?îœŠÜ †Î?$ž1(p?åܘm^?Äãs§žt?íŸg�åï!?ä´÷� ?êº=b¨øò?é4²hZ5?ç­4ñ’…Ê?ìïWX½M?ã"yêœ N?Öbå¿»$"?ê½<™K?Í–a[ʳ ?“›‚®&ƒ`?–$©"$B ?Çç�_‹�?áï8k�Æ?è–ç­˜„Š?鄿�j[>?àv“š£â?ÌísôVŒ?î0Ó¯ú?ítÑG§Fœ?ï½ÌO :?ÇÇË©ü?ÐÀZÍb?¼Ø|p,©¸?Öç’)Ä?ã­ÈÞÚ½?Ü„«LS¯?íý6ïÅŽ?æÇ †A³?ÙE|DAò,?Ô–ò«T?èùnàgÔ?Óñ ü†ø?äv¢‹GÚ?î»·êk§¾?ãŸ]’Ý8m?tå©´—?ÃX£î› ?ï °v7PÆ?Á@Ú_„Å ?ïGYjXF?á­:˜õ?ë!h.;˜Å?꺞,�e?àŒÖB¸{?•ˆX/Òn?°f¨OïÈ?×i¸ÞŸ£â?ëQ,üt5f?Ôsmg…Z?Éš`måãì?X‡/2¬?Çà4=pÕ`?â±oÈ¿å?ï65 õ?èÝb¦§«¯?Ù ¾àŠÔ²?ÉzM—ü†p?é£bU0?ëÅÅ>wa}?àÏSV¯d5?á~üšÌQm?æÎ;ˆBzŠ?î¤ F?Û�j%s/ª? ˜ç*ýÉà?à­7N:à?î`ÍyœÖ¿?ÚíèX²^?å'ºüoL?ìý½È›¥?Дe?sЦ?é‡!§ å?æÖßÍó?é²@‡c›ô?Ú“¬dkö?Â\çÒCô?¼2‰LAÚp?âhZenK?ÛHþæoÞš?ä2·\6‚/?í×{Šs,:?ìºO§Ü«.?ç|cæš±»?媇ý˜¢?Ò%%Ž�0Ð?æèãöyÉ?ïÊ|Rré?Å‹ÚÅl´?éú D7$?êk3ò¸?Ù*–0ëx?Án³gäìl?çFô¸×?îÅ¡›câ?Ú™1$ ¢p?Ô“B½eo?ÐŒéÕnÆ2?ëö™EÕ??Ôíræ8&?èóïÚ\Â’?ãåñ\4?â—à'3yÿ?³¨e<x?Ø X�ºþd?ÄÇI7_‹°?æIG_dË6?ß1Q´H`?à!ËWcôú?Ñ÷ßÛøà?Ù› *h?É {Õ¦~L?èJØ¿î?ßÎ�?ÆÕN*R¬?Ü-¾ÒÚL´?í².á kš?à&Ë€„y)?ìl"¡wI?æ�ùŒw³?Ô�‹bàF(?àµ'ÊŸo?ê¯Xû µ{?ççEA«É?Õ$äJÕ-®?Îÿ4ûœ?ÖxšXøt?ÏæÖ�Œ?à�p!€Ô?̨Ú?ð?ÄKL„Òp?±j2p?ÖQ¹¤6?àîL@e,?Ù�Q…[Ò4?ç¤uñé?éyÐþÂÄ ?â³­‚…{?à¥~u‘3Ô?ë‰7ÕÙj8?ÝQ•DŸ;”?âW@ZË|Õ?ÝäÉXø¸Ú?åÔNSzB ?Ø­]_¦Üª?×ùªë_ë?‘£µý,?î^²û~‰g?å½nì7"E?à)}Šõzl?å´úC⿨?Ñ<öoŸ‡t?Á6ËeókP?ï©ÍCZŠ?㘶hµš2?ëý;Þ¿qæ?â3˜y*б?Ý›­(\38?áÝd_Z“ö?ãŸs§ý©>?å8!~»å?Ù¤�פ€^?æÛ&W’y?ãXKøŽC›?àërXÐ{?©ég«G ?à‰éÄQ*Â?½ñeãž0?¸¸ÇÚ² ?àÞV©;ï?çß*×ÏŸ?í"Ç4ãì7?¶-ïfp?ΰ´8bç?´§fÜÍÈ?îeê¶4?ãYa¡x¤?¾òY)‡h?É’.ŠÍ ?ìISÅðз?¢BXì ?ë€ì'Xµ~?ÐûæøÒ?ÎÒî�¹0?à'gï¤ßù?ÛûÀ»ö¢?å ¦Lá|0?à\~“f}?ÚÞnŽÎ?Ñ‹ ·qìæ?ìQTkÅ ~?ÕŽA5è”?耞½y÷H?èèköˆBä?éX¯ /<ù?ÏŠËݼ?ÑEƒ:ž€?î_ØÈT‡?ÛâlJûø?ä‡@((?çFÂ`ÝzÃ?ÌŽ¾U*?˜ƒÙ�€?Ô`UçQt?Ðgc•â`È?íß[ÿɳJ?è.- cd ?âÈÛSÊîìás?åç©�Žc?è…Q�:œµ?è8îÀ5–?äIPÿdrT?éMF·Ýùæ?ÄÐù§ ´?Ë‘¾¥è$?µï{‹Ó0?±u7´�%(?ä aðý~?Ð}0)ž?í$j�DT–?îL’�ú¥š?åJ~èÙ?µXìãf¸?æÔ­?çzÔ‘Å?ïÄ„H?¿1~qk`?ì#¹ðóµR?Ì®ƒåÍ@?Ìñ sC¼8?Ü¡  Ç‚?©"‰½�?³†ÛoÜ ?ÝÀÚe¯&?çõ„?Ðx’õõ—†?ÁG/fŠt?Ù±ùÝÕæ?Ñ]Iý¿¬?Ý?WÄ?îOAŠ“\?áêpj„ý¡?ÔÍê’¿Ç?¨½ó€r�?Üâ —ÝÂú?ïÎÞ±Á°¼?ßNíÚ^z:?éØ ¶÷b6?϶ܥÚÍÔ?ëàn-ñ¦i?Â&$nÕÔ?êºc¢K% ?Å[O cl?Ô-/»yÎ\?¼ +1™Ø?î�V<_Ξ?âõÊRŸ?æ�®5x?Ø[({Xb?í­øw(=?Å2A‘[Cà?çI�fq!?ÐiàÒK_.?äÌ pè±h?·¹^½<‡0?êÖZ„Èn?×Ð:V¨?è@Úu¸7?éÉ–Æ�Ž?ӨѡFB¬?О�{9e?í¶ØžŸnÌ?r?ÚeÐä€?ìôŠ}ìx}?š®K±ó`?Ä[3qý™€?ª�„# ?ÜŠ:Úè¡Ü?äyOLHh?ê“÷xT—¥?ÑK̿Ɩ?¼<ëÂ)z�?ܨ[¬§Äà?è0¶ `9�?Ó`ìþÒÜ?êê¿ñw‰?æ´ò~•x\?áqÉ åÒ?å„”ú¥?ÝZ‘@F ?洛kÿÏ™?ëÖà®Íd¾?ïŠPÙ?áDà--AÝ?°FÑÆüÃ8?é|†1)-?ªß  êQ ?áGŒ¨ï‡?Õ܇¸ò^~?ÄGÆjzP?Ó- üäÄŠ?ã³^âb ’?Ô¤~ Z?ž¯Wñõw€?ç’œÀ\’û?Ù_$§Âöp?àO£ùÌì?à©6/tÂ?Òø¸ (dx?îë‹L’8 ?ä�åÎë‰>?æçùå,CRŽ?êÐí’?ëh‡¦�Ø�?¸‡ây©ð?â›Qä¹n„?mLøPŽ©?î�Ÿ'�?Ì·åyE%P?ëÑ¡7g_É?Ü&½Pì¯þ?áV޽Hê?ë‡5Î%?³¯ýV›“X?àšÒ$9ÁŒ?äl¡pƒà#?é¤K£í�æ?¢§L@?èhTG•š?Ъ+(ó‚?ÌÎ¥ùoV ?Îi¤¦ó¸Ð?›}B¿® ?ëØ1§€[ú?æÝÓá·/”?ê¶FéIs?å¢)„#?×`ÃS|^j?¼ÛcK«Ê?à˜™/˜%?ÞS¯öóŒ?çãcúà?ÌlÃdz˜?ã'¨t¿q?ßÁòC…œD?ãíó$ŒµO?âÁÿòÓ#2?èŽY^�…?ÝÜ6CQ$´?ìÂáyé‡?Úß9òD0?Õ¡rfHç&?Ýämy·"H?ë I&Í`?¦´ÓMl0?çš0xCq?ãþ!�ñÀ¸?ëlD;G(6?ïŽÛÉW‰?Þ8‹ñE¼?â  †ƒ"M?Ò5§/Þå¬?à&€rQˆ?àË9ÌŽY?ïiÍ­·4?À< ÅwP?ïv̨a>?âpfò®M?Ü‘Ã>¿ºÂ?ꈶG@NÆ?á(ÀÒϹC?ëöúYQóë?é?áìÒ‚?Û|[‹tú ?é%¥õß÷'?àIÛU&?ÐIú'_%¨?îöLK†¢?ÔÑ ƒž8?ç`ˆê(Wh?Ù`P.k3"?ÔÔ6£¹?ؘ…ÞçÖ?êW¶øðS ?Ô÷ ë¨?åy•æF±5?άÇl*Å?äÓ(}ÞÎ?Îιժ‰¬?é œâ[Ô?Çé»è›4?èÌçã­¦?âMºŸ_?á*#ʃ¶d?ã�¬óèb?å]ÖgqÑc?ÛíÀ¥Év¦?íœô�Gf®?è\•ŒpÉ?æÛ®,®õ?àÏpë‰xˆ?ì“xsëÜ?Å:Hýg3Œ?ÙÃÇzÅö?Ö 1W”[?Ô‚�EâÔ?ê»—£s?Ñ íId,?äsá²�h?á·-S'Ú?ÜCwfò–L?Ó<¼ünø”?ámH½�?ÒÎ<�õš?èýþ©K ;?ân!øÅÙï?×ín–ÝVv?åì+Ÿû(J?àf½‘“h?ä1Q°2«?º©°Î3 ?á=ΤN-?î=—¢6Û?¸ ¸§�ø?`‘-^c?×"«Eñ”?ܲ2n$n?ß›–Ù€· ?æß«tq]Â?».¨íÔäè?±Ø÷¿5Þ8?掚=2Ca?ɼ´9ûô?éI“ƒÇ‡{?à\küÜ J?àÉ<<†¾?Æ…¸t6Ç?Ú}B¶7f6?ØP¡_oúš?áäôV5?à.Ñ)(šÙ?©E«õ¥¼p?àƒë{]rq?Æoš»’€?±O+bV…(?ÁäÂÌÀ³ B?Õº Æ?ç%ÕÇa•s?ëÇ&¡2jœ?îcèùüÞ ?àk©­ÞW!?ámОoÍf?Û.ŠLVü?Ôª1þnvú?æÝŸõE„?àü‹ÐˆÁ{?ëTtÅ=+?î oÒ —?Ý—LSG×H?Î ‡¬ý=Ä?Ñä&H“¿°?çe<¯¦?ìä ô`,?­±HË?⎤·^ ?Ów½¥=§Ö?ê|gû¸²–?¸œÐþÍÅ ?Ò†@ûè›Ø?Ó�&¨Ò"B?â™–-„?Þ?Õ?‘E”?ä �Dì¦?ΔÑú��|?�ÓãZÀ?À Í(Ø?à2凮½?Ómš÷;Â?Ì»u[Ä?ÜÉB‹GùL?Æ´f†n–H?°'82ÄÁX?ãTÂ̰r ?Ñšò Ù¿^?ä Ú‚H†?Áe‘E’MÈ?哟D¡…é?茽’Þîð?ãV~‡Þ¬ ?Ë“éw ô?àŒå&²xR?Ö¡0Wÿ„–?’ã²ÒÎ/à?ÁÏÈa4,?ïı³hO?åy„�×Ý?ج%ŽP^?ä!«#É=?Ãdœ®·´?Úišz®ö?Ø“nX9¶?’Ky],?î×¼#ò Ï?Î ?’è©?äé°Éͳž?åNê“(?Ò6 Eºx?é™:ËT](?âó�·öh?á²ô4­?Õƒ(͆±°?æóœJ¼9±?ÓžÁ?\l?ߘc´u–V?Ò¿ÐÕŦ?Ö(Lço8l?ÑîÌOú¯?Éúæ")_ˆ?»ôwä±,`?èÚˆ‹q*î?àÁKŸ½?Ùɬ2Áò?äóçíh«?ÜJÉ ˆ.?çWõöØû¶?ï%–ÍZØ?ÖÆ2:Ä?àK;JÈät?áñx§1Ÿ?ÖçD %Œ?Çô×&å±h?îŠÂ>ü½£?Ü“X-û\?ß›0j2?À¹Ê„ßÿœ?î÷J*.?äæ/r>|?êA»ìøÇA?ç!¾ ‘“?ïF¹D)ô?èA;99¨r?æ;)¿ â?Ä7<@|?ãºf*¢w¶?ÑÌŽ˜kFÐ?ìÎÙùòÞ?íoˆÍŸôä?ß­Dfnh?Ò­ÞèJ‰Ú?�x‘=g/`?éîM=(]?¯5¢Q´�?Ç©(Äòç4?åª#ÛAx?ï^o\‡ÇÃ?ݶwžÒ×ø?ܲ׊R?Â,j[Ÿ®ô?äáÑx¸?ê]mߺ?â CìÿU?»¸ G@ì?äÞ  ÿ?㯵áh%j?ÒœÐÝvš?±ô?)tZ ?ÐÖ)È{EŠ?â;Çnÿ¢I?»^\¼ˆ ¸?ÖLê�†?ì¨Dc½?à~8v’CØ?í)ü›ú?Ô›ÒKq –?áœCb×ù?À‰G#…Á$?ê3ÀbF\:?ÇÌ–Ï|?âým©òè¦?Ôøv“¤?šwfÓ> ?æÃµ”•4–?ïHÍ@r¦?ákËDuJ±?æíÉå´‡a?áÖÏZÎ…?ß•ä†Ô¼?ïãó*Ú2?Ö@êÚÿ€š?¢ŒùORUP?ÑøA;k .?±0ôf¦sP?ëÂÌtt‹?ã\%†ý6ï¼D?çÒFå†5ð?ì’j�%^}?×®éÍ(\?Á_Ë@›~d?Á’«@‰78?°V,¤†Ò@?æ¯â‰n‚?£û�Šœà?¼:ÕÃù—?âZjl¼ðè?äãŽJuª1?ïG e¦?Ï«{�¦ Œ?ç‘öÃû£ô?åXîsT?Ó­ûÒ¿Ê ?äìùmdZ,?Íî1Hüø?ÒÅÃ>±�?æp‡ÎæW?ÐÓ·ªÎ?ãùK•�]?ËÍ“²{Æ8?â]£ ë˼?Ü R^>i:?Óœ*Ýí  ?Ð>뵚?ËQÓ0ZÈ?ĸQ,n¨?ïª £—9’?–çà¯ÿ| ?몘h6u?îÎÿì´¡?àçkÍ^ý?ïVü¨�"%?è|´ww…°?´~‘/èîè?ìqEGÒçî?Úå|ç{Â?‘rÑa1a`?ß;a>Uñ¤?×�-ØìÞV?¿9‚‰É¶ ?Ýk 3ÃÝ0?çPápi.£?ê ‡Áq;õ?á,�ÿd²?׈�Pä—?ç±½ÃóŸ?èç9AÇ"?Û€¿-9¶ä? ”õ‰ñÔ?èhÍþ*à?ç4ÈlÛ*Ý?êÆš|<,?ïE’yHŽ¢?ë ´ÕÝA±?Æëážß$?æ+ Á¦?çC0W‰á?àOO1ª?ÙÙË}Bo?ê‚ÇÀ?ã?ëÿÍd!½?æ¶©4_?ì’„ÜX˜_?°\qXGx?èÚ÷ÎNÆ?×а&JŒ?ÍõÕãeØ?ï#¹È¸Èb?íÉ*t??ÃÌã•0€|?Ék ÃÄ?î^K`Í?Ó ,nÄ?ÒÞ8ÆN.r?ÑÿœÓ‹Ðà?º÷ñ_éø?¿úŽ·#ÚÐ?ä8ÄØOú?¶Ü¾ï}NH?ÚËw#…è?Í¡ö õØ?äÖÙKVy?éE6ä–�?ߢ,¢Gä?çN&ÑÖ ?Üø i“"?Ì^„ô¨¬L?Ü…YNæ†?ßëwÇT7(?æðŠ}Êú?°+¼Úéb€?㊦øpO?°�ñ°K?ÞEÑ�œ0?ÔÕMÕuñl?з)¼VŠ?£`]†åÚ°?£¥ªmú?àOßžž?ÕگͰ?èv~DÈô?áKÚgÙ~?ë”%4–2?ç!¤•Ãw?×p&(¼ò?äùA”úE?èéó÷?ÜZA_€0?á¸Çô?„?Ãô«êþ\À?·/—Ï‘u0?äÝð=q¿?ì^7ÒÝ?ïùq7k?ëú�þb’v?Ú&Ñ}„¬l?ά%Ü Üt?¡©÷°`ñ?ìȺ~Ñ?ÌÀ¬zQœ?ã½<¤O/ü?ï‚ò(G¤€?Ô¯5!ñmP?꜠«„‰?è�?yý^{?æ‘iìK=‡?ï@.d«?Ù¥¯¢�?Û¨§U)L?Õ{ηٟ ?¤ž—÷°p?éʶAÌA?áÞ'°hûJ?ßÇt)˜_ ?îJÄU'ä?Ã2DûÝ?ãÁ}]ø‡?ÛGF5¾`Ü?·"m˜�?Ôç½qŠ?gÑ9Î12?â¤W‹Ô�+?ÐAþa¢„$?±t'þoø?Þ›Õü?âmúY'I?¤äoÜ* ?å ì„Â\í?Á«ìOÑZÀ?妀s¡6?à㣬Ûèb?ÕkêPT~?éÛYñ?­/íköK ?ÎùA13Ê„?Q±°« €?ï¼ š´$?êç·.i?Ñ,ª|¦ët?ߢñÑm»f?èÖ žxùÞ?ºÀáxé è?·øf6àœ@?Ç0KŸ$ °?ãy§Æ¤]?Ã;°ÁßÇØ?ᬠQî¹?Äâ)p>³D?ìÿË û´¸?ß�c2&Ùô?ÄÈÅ¡8øl?Æ¢rhƒ|¸?æ�¶lX#7?ºïK$H ?ïÖ£ýBlÄ?é’<¤É9?î/gg¡?äÝúb\?î3¦âœîx?Þ$O$áÊ?érì )È?ê¾Ûå×´?êîD úd?×ÙbÃAœ?´ƒåQl�?ï³ûÐuAµ?기võ?ï@Ys¶I?ì�¿±ƒÑ?ÖU¿ä˜‰‚?ß>Å5Fþ?ëÝEaù?àâ"LKŸ‹?ÞN×%Ÿ?èlŠc�åÀ?¹øý:¥‡Ð?À³ºŽ74?ã{]rÊθ?êúVǾn�?ä¼á zŠ?è¯a7pö‚?à±£Äq'?סæ7/ûþ?Ãsf¦-{ð?Ю>þ*V? _�JEÔ?èïvvTBp?äð}�UnD?æT¸¼¶F¼?çvMH�åÁ?×b�tN?æþYçÁ?Ò‘Rʾž’?Ú 8å>?À„AFŒZø?Пá‹0\?è¨o³ÐH?ßܾm¾¥t?îNR±8Yš?ͨ ÈP+¤?Ó¯-Õ À?â�ªX½·?Ë`B=«X?Ù‡Zû¢v?ëæ'¶­Ê ?Ú´áËQØ?î)Úkj¹c?¡€££‰–@?ïXUå8æl?ÈHÊ¡Q?æ’_—Jô}?ÛÚ Ì¤"?íã¤ùù‘p?Ó×*¬&?ºÖ°/à?Ö÷ô§á”?Å'¬VnB?Á7ÿƳe¸?Î×Í|¥¢¨?Õç†SØ#`?ÕœÎdv–Ô?é”ëI?â#w|Ó¹?âÁHq ?çŽð— ô?ÅXþ&ÀhÔ?±Â"P¾h?Ò)s¨}¬?�/©bÜà?à‚K^eö^?Äô/çIˆ?Ä}Þ"°0?Ú§ð[ÅÐþ?ãºÕ¬™w�?½z¢ï¨ø@?¥’+b+· ?é{¦OaÇW?Øgý@oœx?ÚKŠ~ü?î>Km1ÁG?å&Oèì-‰?Û b^CÇè?°“$os¨?™ü’~c�?àï”M„Ôh?—~U -€?¡˜…�å�p?Ô]¯þ8?¢„šþ‹4€?˜£a4ôå`?¶¦”ŠÎÌð?Ü~Ø^Uä?ë4ÈØãæ?æb"úõ?çÞ"±ë~!?ät¥óY¨?Ä1§o?ã–ܧhß?æ¦Uû5x?ʵ“¥ú= ?ë�•1B;?êøžîhÊ'?ÂJÞTúÌ„?á!ÝmV?Ø€×#…¼?§Ì«Œ·° ?ÏØù`?èBl:h§?è ø¸¨ë?Õafád1?í\Vùbè?Øýö³eÝÊ?ë÷×f'Õ?ëiÒçÓS¤?ãâîm�Ý?£nt$Xïð?ÝB©L£=`?äHÅŒÌÒ;?ÁÍà›¸?á ÙYW¦?Øã¶Ùt‘?Æ—Ä©J"T?Ùäàv?ì+Áãì(?éƒ"ؽ?ßÚšÏØ4?ïÁXÐg?´�@õ9\ˆ?í+uÅÜ‹Û?äó ��?Îr¼&Oµ`?Õ牰B?èƒ-Ÿà~?늛:æü?áÞKÞ8¸Q?…½§*‹‹€?¼a§¶JÎ?Ò)GèD¦?çC% óna?ÜÄsõÜþ?î8ÄËéÙ(?ѧ«î�ðò?æc•dãš?çI ø¯€?ê�ùäwÎ?Ü·°/Ï—T?ï@xô ?çFÑvéÒ"?åÖKK*?äyÆdN_c?¼Ñuìþ¨x?é–Ÿ\Ü8?Ç!çgÄ4?àp´-7¬Ö?íA•ˆ‰Ð?ÉŸ8YÃv¨?à ³Ý–Î’?æçßá9â?ÑB_ü?étžçì;é?ç|ÎC¹u`?ä~Ç_¢<4?ž1¤yÜj€?Ðêw|œ?Ýû¢È'X?–Í��h?ìÑ´ æ£?â½ýÓ¹?¸q H©è?ïªîƒ{æD?Ð�åð7Þ?«)z¥3P?Á4’?íýl­ˆ‹œ?Ü�Ÿ@²ž¾?Þh@Q^‚?ãË&ññ§#?ë{®ïŠýê?ëß{‹[š?à`ãîXOó?�ŸPÝù ?æ[²ž²ö‡?Õ8UŸr?˳KÙùIœ?Õ~òèD4œ?ÙÏtƒ—^~?éEÏúe}?ª�Ú±}P€?îØõ¬l?ØLÃYe“Ì?ã—“YÊ‚f?ígFì 0?ØÔàÅ�2?íc(™s'G?ºëˆƒ�Ð8?ÔÌdÊ ñÜ?ê͈–áÌ?ºÄ#mð?çö×6ýž?å”0Ò2à?Å*I Û,ô?Õ2ïEÄý¾?•O'¯¡À?ã8–Ut;°?ì¼ð¨±)@?á¹B|& z?«~0‹q?Ôn¢è~?Ë][ i?Ü âW�l?‘»RÕw(`?êÐ1ËM?Þr«€k‘L?î~Á¢Ë??×P^á•"?ÓßÉ·Ej?î¨>yª”y?î‡:<°¢?àgÞòh‘Æ?ƒiðÖ�?¨wÞP}Æ�?ݪY €.?ïºæ§¥?­Kúµ^p?ï-’e°ª?î!×ûÂ4r?èB¦T.z?ÃÎØ�ë�?ë;ÅÛ7?æÌ’$R¾?í¾Ñï¯?íA€dx&?ÙCq©Õü?Ø#gAÑH’?£¹|Kø¤€?êö’Á¨‹q?Åw‡8è”Ü?Î�Ú‡?gÌ?åd sýà?ë`îPØh?ÙØ¤–�/J?¯º¬Úm¶Ð?ípý�Ñ ?Û4^ÞOФ?Ëo¸ñŒ›?ÎPGë;A¨?ãë ÔÇ6ä?±Xz1œð(?ÊKª�<‹È?Õž7Ôà¹?Ò†á!æf?ã ‚ÀþâZ?ÙçœõÊì?ÛÅÔ¬þ#X?â·´¿#ï‰?íÉFS2<È?åa ”U}?ÓÖûr?Œ?’hNe-é`?½`ç-28P?ébxçR?3¯>M¸?箾ÂæY?ã­½ul‘?ºÃý å£?æ´Ôîæf?èÞêT$ñ�?Ù¡¾Sƒîò?îæŒöÔ�?æÚN×ë^²?ÐVE3 r?Ò¤\߈?ì×cšãÓ?ͶP„5Z ?µ5KÔ¥=°?È[J)§A|?íŠe«m*¬?²Ã® �?ؘÊpšR?Ù8BGæ3ò?¼ÒÝQ˜?×nñÚ?âÄz¯NÁV?â öµ›(Ý?”ͽùž@?ßfhÐ=¦?ìù©ePzl?Ìœ,ºÄŒ?äüó`G�p?å·­5Lbb?ï×_Vq?×'iÀ5̼?ßE90fj?ì|Àñƒ?Ý/rûW?›¸´W½ ?î/ßX#¹?ࢗÛ&ûç?¸]fÃ�â?Ñša@€ ?¸×xS…ª?Ü®P]Ín0?íÝÀ Ì#}?çÔ§º�Žè?ׂNø·ßT?èü×m4¦?îœÍ½%1?ì!e¡«ˆ‹?áößDA°?é^æéíÏ?×J¬¦©ð?ç'×ß9´?»âs� n8?Ù7|BHͲ?åí(ý…»?àK†Â„ƒÇ?é¿ù%üGN?¿´É­Ëup?â“�Ó×Ì?ípÅ¿ã·=?Ò…€nf\Z?Ø·,”Ý ?ÃCË ÷¤?̪­—Ø1ì?ä§©$c‹?逰8¹wü?Ëñ ñçø?Ï­Å8†žœ?Ö”3ì�6Ú?Æž-dï1Ô?¥ïÚW€�?ê+ûð…•~?çž D�Óp?߇kfD ?Øz$iè¹H?âæéjP¥V?Þ²„QÍÚ?áÈW•ˆ?éª;ϳã¼?à›k­©Ê?ï$–EýÈ?ä®En3n´?Ô\Çì "º?åª/°ã¹d?¾jeànl0?托Ц^“?½½�±ø?ìðÜß?Æo­"˜?áß�Rë‡?Ô�¢ ?íàðÓ’??�Šymï&`?ÂX|ì|?îm|Å…áÞ?ëš�GÛ:Œ?âÁm¬Ôl?Þ%�e{6?ØVk4/Š?Ðà±±Ãð?ÏU�Π?åo˜šÎ"£?¡Â¤NÍÕ?ßK#Ýî0´?ÕÁXA॒?´ž0C5`?ܧ»•¾’v?ëöVh€?åÐ_ßNrž?ç©TOÿQ­?Õ<ß¡�>æ?îÿ™ú͆£?ãÀAn> ?袙ú? ?ǼßËX¯Ì?íÚ%;“?Ù_�kah?ÐΡªoþà?×/QÈP² ?ÇÂ×È:X?±4ãP° ?䃗Šj?á´á144w?é6Õ œi’?ãò—Seo?Òhuš˜R?ê‹Ä(ßJå?îÀd=¤ô?à“r‡ÞX»?çU'ºÂ?àMOðÖ?è V�è?çðÞgs™?èôiIz?ç¡9=�k?Ë÷@{ÏD?굆'A?ì#Ô“ú¹?ÞÈC@?Ò]Õ‹Ùϰ?Àj=fgø?äRÏHÛM)?îꮿQå?¶É-טJ€?Ô.A·rÛÂ?بU{Û{Š?áÚ½!ªÞ_?ÔöÊÉ)6Ì?ãbº_–·?êì.5ø0 ?ÖÃ\!QT?ÔdÞ6E.?Øgn* ?êb¾eÎCô?»ù|?ÜT–žhT?Þ}]ÐÆÒœ?àÎ$§;?çEzûyï™?ïé�3[?Ärle}ÿ¼?áÊnÕPñ?Î2 çÊÝP?î �–%?âJá')n?ʦc€?à„®‚Q‘?ã”Ó²G?çOš …7R?ïóuÊ­ûá?æCB#8ìt?’áØŸ(3À?îáüÔó×v?ï®;qtד?ãÆë—›õ?¾ù]Ê€ ø?å]­ïh˜?¿Ï·+¢P?àë �©õ+?àp¨Ì�ÔG?Àb|éx­ü?æZŒI?tAW]Œ?ÅYFLØl?éï<Z•ç?ê™Æe‹r¾?Äd27þ¶,?àÜ!ÍŠ¶?àI™ Þâ&?Õo”DŸDN?å|€7Ø?¦®è˜�= ?Êð�žÂ‰0?â»hˆ _‚?Ú-ÇP¡F¬?ãI'I$Ôt?ì—\ä¼ ?ºß L¯ï?åÄÏ–?ÔFÍdm¸Ê?ëwn��ä+?Ú:ôàEµ|?ãÁ¬R-¥ý?ÈŒú¼ãU?àch�/?àQ¶1¾?éL‰ý¬*‘?í”aÕÑ?¸±79ûbø?Ü/¸äútÆ?é1f©Ü@?ã›!_�Rÿ?áµÄdäŒ?ÁP³‹îÈ4?Õ»WKwÊ?¯=dŽ È?à|¡“?Úòþ)VÑ\?ãr3ý­t?ìû�p®?Â^@ôÛ¦d?Ûýe›D?ÔKýM•ž¾?æ~îñÄ¢?Ú˜Ó³aͰ?åöö²Õ¾?ÈU'½dð?Ã.œüä?éæ0’À{û?µÉ�úÕØ?àÇòô¯?ç*.Š?-?ã¡,l�©:?  zá�§?ϼLY¬q@?δ Ðò ?àÉšòA¬¬?Üáú=ï)ô?°öó§GY°?è$œÒtœí?Å_ÙÑù’œ?Ô0Ýæõî?íÜÅEr?Ì/^vc¨?å[lé»�í?ÉÀ‘Ï©?¹z´5ª:à?ÍòàÔh?äT­z¹ì§?ÝGXpîz?â?#/$TV?âQ…p�5+?룋Åöö?Ö«PÁ_%>?ß3Í?z?ÔÌjÖúj?¨Ûµ‰Eú?Ù�0Ø–?î;e!8©?ïýI°•Ž?‚­à€wˆÀ?Õ–h£]_h?ÝÚë\ŠÞ²?ç’ÑØÄIØ?èæÏÓñ¿?ì\»`+—?è%D Öã?ãžc!Ô ?ë¹V9•?ëà%ßñbv?Ø5†iML?ãm¶¹ŸDí?âù0¸ÍV?î&.`0â–?ë¾yìç!ö?æ†U=¡ß›?íwá[ô9þ?àUû‹Xƒ'?ÒÇ�Ýœˆ†?áÞ´t:?´:‹¨‹¹˜?êˆôotÀ?åÖBÛ‹u?ÝLÁYtõ?ÆíŽ2µ$?è£îŸ ö?šM6 ?ëÆHf ס?ܨU¶ô8?Ùœ‡ÂÑ}‚?æ\Ú7]{?æà†Dˆ?çÀ>°&!~?׿v…›ÆÌ?Ö>=è4?ï´>Iwò§?ÈéeEÈ?д^<ØCb?ß °/öb?á:°–…7?Ø&jä?ÜZýþÁ7?î#ûzè~ž?Ø‘ p$Å”?Ö$’‹Ü¢ ?áÌà©Ï¡?èw‰'¯Ë­?Þòß�ô q?¬öÈ:.³€?§SloþÄ@?œ('8Kà?ã¹’ç.Pí?éÃźåX?áob\qå?ëÓ9Äà¢a?Õ{ù¦úÌ?ß²×ðض^?îI2¤™°‹?è=ëÇ^ß?Ùé»N^VÈ?àQ|! Ÿ?êñB: Q?æêH{w|?½ZþÄ‘P?–ÊO‚Õ?î¨r¬Pø9?èÊ€{¬ÑL?ÕMÃT©Â?±¼©ÖRð?á¤J{žO?ÐKÆk«qŽ?çˆc­Ú?î”5Z‚3*?è$/þ·k?Ú�#ZN¤ô?×+j5�74?é4j¯_Þg?â+êbfÊþ?¾”¥Aö ?éßQ˜U§?×Cþ±‚!ò?Ù‚ó�¹÷?”lµ3FÍ ?ÒZÄéCO&?èoÛD“¤?é‡ñPLr?Ä âšÅ,?×cº|4Ôþ?ÞÞ06?äP?ã)<�Z”Ç?鎦iÃô?ìpeò¥-ã?Ž[X3/¦@?¸á<_Ð�?ÞDíàÚÝ œ.ä?鿇*Γ7?³¦:øÐð?ÛÕ4ÓVÑŠ?Ö¨+×A…l?â·/Pì–p?ÐTtF“ ö?ë»Ì�Í×x?륂ž¢Î??à?3\ñÉ…?êfÃâÉŸ“?å–ÃÀw ?Ùü—Òkoü?΂ ¦³”?â>j^Z…O?Á÷I¿ÃÒ(?èÄQ|b©?Ù99˜�æd?ã­nà+?äâ¼5ß¡8?í, ãøÁc?©¥O<ôÒP?Òp²hì?ÚS“c¶˜L?çrš`°Ê?›è™™ÉÓ ?Ùƒ&ÙËAâ?è…Ø4P|?é“ð“i¼?ÖPJ¦w¢?ìò‚!‹ä?îÇßþÆ·…?ã.Q|:×?ç;Êâ[]?æ§Æ",²ß?Þ–„ƒ?ÐJx"b?Å�‡Ë£t?è|§"¿`?çŒçöP?å.0š¯?èÊBðY]`?îHõ—„?é¹$Šïér?À¨&g·*„?Î ©¹�v?â8ý¥~Eê?ç¤Âàš??ß$§{ªÚ?Íq#R ?î·ë#=¼Ã?ïêxï`~?Ð;yÍÄ?çòIj¬/Ç?Ïî>½#¸ ?éJóÓn±­?èŽÁþk¤¯?ÄŸ¾â &¤?×%O ?Á*œ +rà?½¯u¢ü¦€?ëƒdk�–?±ôYå´p?²J‰Ýþ`?ãîˉrɺ?Γ¨³E¾Ì?Ü¢ Uâî?Ð¢Š‰¾¢æ?ÓCØ—¡?ÎJ¹\Úd?Ú›X[¦=¦?ï? dEØ‹?âLµÊÂ7?±¢ôÆXÃð?Ð˨å³xP?É<xõ°Ø?ã 'ðœP?àÔ`æga?ßÒ¯Î~,?ãE£¼_î�?Ë“¶‚°?ÞhÀà¼ð?ÐZ7„ö?â®iOS¡?æÞ€G0ï�?ãÊ +%G?ÊK–ï·ø?Ü!3Ÿâ?Ñ‘Ïòä?àš˜R~0?¿¥¯å?ï ¹�õ¡'?îO8õ–£Ð?äÈ©öþšÛ?Ú{TuÏÌ.Hß(?Ðgz£¹\?ßÚ«ƒµt?Ò>g,É ?çUë‚ø?Ø Ѫð@?àéköm=5?æ±=äJƒ?ƒ2zfJÒ?à�¦J¦À?îD¨ƒy‚?ßæ«ýZBp?Úr�¦È]Ì?롌Š3?ÕÎhR?äwïw?麇P2¬ö?à ÀmÑœ?ゟ°œdÜ?ËaG�Ä ?ê"!?Cr9?ÚúK}ªð?²#›žÜ‘?×Ñ&‰pÄ?Ðõ£ß$Àf?ØèOm  N?î‘X”YNtÞ?ß,î°˜Œj?å×øs5¾?ÝT/ýžÐ?ÃW7'Ó9X?ÀQ4íˆø?æ“Á®Q"?á2¯`TR2?ä~Ì5� ?áeÄÀh°>?ëÜZ™V�?ÉzË­T4$?à´·lcqæ?ëËžk‘ùm?Îc5j‰�˜?ìÊÏE\`+?ï eˆã²W?£¬Tr) ?©8¢—<ð?ëªÅ;zì?Û}<›-\?걞Åf?Ôì–“RÖl?¼'¶ôèì`?è¤Y¥ù¡W?ÔÍæU‡FÚ?íÛÔÀø”Þ?Á¸ º›œ?¿(v."0?ÄÂ�m×µŒ?Ëþ‰a•´?®9JÐo��?Ö›]u’œd?Á=%8ŽŽÜ?¤<‡¢A>?©´,,‹?ÆŒ�]®Éh?¿Ó.Gs˜è?Ï>k³Yl?ç«´Ž7’?ç;B§Þ?ågƛӿ?í´ò&tñÿ?í)>I|«¨?»ç�¯èÊ(?Õ"-%9éÀ?Þ~šºs°?Û�¦q/D?äøö f‘ž?Ü1 ÇÞ ?ã©4/ˆò”?¿ß96ÿH?à.ý¨î?í'¶^dà?Ý”!#u� ?íL­óT?å7ÛÑ£?ìȆûÖ¢?èç#]d°k?Û¡ªJ…[(?âç3,Y.ý?ۣ͸g¸?帺Õ6Qg?´Q°Þ ?ÒÈ»„‰M?ß}¥CñZ?Ë­v2¹ñð?åÌðzXy?¨Óï 7Ð?ï‘.‚†?ËyâSBP?�¯+ò{€?Ï–S2¹2?Ò÷N+�oÊ?ìùw8w%?žm=‰B@?دùÅzX?â\°G£y…?Ù¦qHñt?æ·]):žÓ?ëHnæ r ?¢ªâÐe?í�ƒW­Ð[?ܱ€ÒTj?ÑêÂ%ô®?ål�f[(ß?Ï:çŠ ˜?Äqi)‚ùü?äGï�|”?ëës��³d?ÅUÁÍÆœ(?ÍÕ3óQ{h?â¼»gáÈ�?Ú¬¡Ò2¾?ÅF6�Ë?Öuù˜`ç?ïÅŸY”„?ŒuÌ;î&?ï ï]²×.?ìü,‘âî?œ¯É¬•/@?¢–ú÷É_0?ê]]©š_ê?¸…ÈM™P?â»LÕiÍ:?äo{×Ýi?âÈ–´ø÷?æÌÌÂ÷?èˆÞ:Rx?¶†Bºœg0?¯Çç¿Ïà?ï7qÙL?ÑK›%™??ÞݤP±ºl?á¶+¸Y5½?鶹ǭó:?àŽ7ÛÜ]:?î¨óÉóö=?Ürí$Î?ëÍ�ð¡I?É}Ó}¬l`?É?ešÝŒ¨?È´„ &Tì?ågi‘ª?­ žnX ?èŒØó,¨…?ëmã§AÞ?á’Ù‚ÙÆ/?ºÀ¿ÃÝ?ÅÝ®HJT?ÖAõÿ9 ?ÂaH¨�ÌÐ?ÄŸ×Èw~ø?Ú^™êT ®?èkS»Ì ?á)cZRœ?ÙT²'<û?îÄ¿¾ �k?êg©œÆ‰7?ã+&õëŠÏ?í`SrÒøŸ?·^Í2ð?Ó#@½lÍ*?ªa(nl0?݇›ùSú˜?â¢hB ð?Â�Þ¥ƒT?ì°$MôÈŽ?ã64:Už÷?él'�Q?å+ãV›àa?¾¡hÃFâ�?ÐÿÊú9fÖ?Â8[nÝ1À?åó‚àÏ’?ØÇ€Ô¥L’?ìPÝþ»U?春:Îf|?ï”È”;ã?˜'’{@?ëZ&ÂXö¤?ì½ä#Æ ?ï¹6Ú@ò?æ£p­,Ý?à3>‘¸Äè?¯M¬àô€?Ý·*£n3ú?Ön�äàAZ?ÕÖ(³2²?á­í–�Ô?ÚŽq¸æM¶?ÂÅ^ÔBr„?æFJI|L?èŸ,bv�‘?®=žP~@?ìQï•1ñ?ã_Dôò?Ô’¼;¦#à?ì8ÀÖ¦5Ô?Ý®E¼#Îò?Í*�ˆ�œx?븧ÇU·ö?ãL%„½\}?àYϵK?Ôó�·¥¤?áóãBÍr ?ÉSá"¢`x?×o­ÄÏê?æä!)ËŸù?ÕŽœyþ°?Ýþ‰9L·V?Þ[¾êúÜÖ?ÙÄ6£'ê?¸¹\¼ÆUÀ?¾ß*Eÿè?ɸ!Òr˜œ?äCÛј?“�Tܹ?ÜL„ŠÕÓø?ã|ÈÒé¸?îÞE?Ýó¯?Õ…#úËX?ß_Ãß'1¼?æM©ƒ|?â6»û$’?åDSÖcb±?æ¢W¬53ó?âüümÅ?ïV•&®i?ï:ÿÇU(‡?טÍî€è?æ"%h µe?îÍÀWœ?ë ×EòæÙ?¯<¬ Ò(P?ëVl•'ª?° LI‘²¨?åV4‚ËßÃ?ÁÔO\u2?¸²›qeø?…<ïç_]€?ÛñZ#Ãø?Ë æ,è¨?Áù¥"Ú¢$?ËÖà0Þ´?è"ÐÚî±?î/m�8]—?êy¦ðöt?×·ƒûØV?À9ùnò?¨—YÒ¨op?Ô|4¡uQ†?å!ÂÞp  ?Ñ¥X=[Þâ?Ñ;C…w�´?ÓhId�ÅÈ?â’KQËÍÖ?Ù 'îÙDÓ´ÊB?á×7ÕI›‰?Ô æ—1ËV?êCÄWb/?ìà�tF„?ÅÓȹ>�°?Ê;ZW5„?߸û ±Mœ?É‚¸bª#8?Éþ4Wpø˜?çùØ^)Ê?ì—¡¦º?ïSû²Àð¾?Õ-DÿÖxþ?¯œÀÖä`Ð?îÑï«0Z?š ®á‰ ?£»yi2³?æð'|À?ìt*ØI‡ð?ÙyN»‹H?Á2¦fÉ…´?ÇG2ºÜ�ü?àãœÆbê–?Ñ�[93Æ¢?çVéÛmD?Í#öå]B?É�LƒÓ?ï1úì.‹?Õæ×LŒ?ã¥õ.H®~?ÒgS[ÉÐ?Ášñ©ç`?êô� ”MÚ?ÚŸáœ÷Pz?×€Û,Ö¸?áëŠDt‚?áæ‹íë?ï£î�°K?ÒÒû3aëD?Á HEÁ+?ï8ëš² .?äP²�ã‚&?ƺXÔ?ªMæ>°?éÔooÓ?ÍCG6z`?à`­È¤+?Ã_ÉjÈ?ÊÂŽSIöø?á/Ô~¡@?íQ—jÓž…?çÇì]Ÿ?í�¦JÊ7©?ç– û“ ?Ù0F,ÿР?î;{6g?Õ$9EÕjì?ï"Ca¯H¿?ï€wÂ�Y÷?îúq&¼°ï?èm¡µù©t?®-Δ±d ?ëÅRÚ Ä?Ûzp~×Ä.?éè*ü­·‡?è0‡b£i†?£¥ÕÊ«w�?í¨OÍ–�s?ë‘‹“•'Î?ÈÔÝÎ�E¸?Ò¶&Rë ?ëùê ðŒ?åRU¹E—X?çÌFW¨ø?ÈFB¡¼?Ùã’?âŠ'¼ÉCÏ?ï'Öhd ?ãÎoˆžU?éûãŽ]i'?Ê8>¹<&l?ëÇ4årâ­?íÝgƒûE?®Hª®Ê”ð?êÍœÎ'W|?ìœËòÄÔ?ÏÀ­¿µ­ä?ßð4p®‚Z?å'EŽ {R?ÓþŸI©Ž?Ëæß·ÿ&˜?Æ;0‘ÆØ?7nOø?èó×À¯?Ô—I©cp?áµBÓŠmÝ?Ò7÷aSÒ?›¾_ìí`?æU£¥_Y?ì>q…NÓÿ?ìàCŸn·±?ç\‹sks?çwÈôÌÜ?çj>+^þŠ?� sdÐ; ?ëÝW4£¢¡?à7ï/ ²?ì0ÙЃ¿·?ÄÕ°Ðod?ß§?|âš?¿»ØŽ#9�?éÊ-§Ã?ä…þƤý3?îÈ•^ü"?ßV¤/�š?“éaÔ  ?Û*õnnÊ8?ﻺv®õ,?è”`»’??Î�Å}¾ô?Љå¶vÄj?Çì&¸ƒp?ȨSã×½´?ĘB3³$?ãýç °‹=?ã ·½Î?Ï¡g)ç•ä?Ó d5nGJ?ÚÒÈþÞØ?äu\Œš?ÔޏDq?À�‡cqÄœ?ÞR+—„?ß‘q‚éÒ?åžôÖIÐ?ê}¾Ï™Î}?•ûc«?½·¤éžà?ä–ÎF7z?ÖðŠIc?æÒ1ëdÏâ?Þ†Ý'*ü?â݉rJÖ?å特~¬?›ç¨åOÀ?æºQY «Ã?Á˜v�ÐÌL?Ì/U"Ke,?ãl›ÐÐ*t?ßJsÏ¡î2?ßH°¼ñ¤?ê%ÕðÐfD?ØqÆ\ZÓ?拾 {Ð?å_.šl?î¯äÓчI?ìÖ—î1Í?ïÓc&ì¶=?ÞgPû%¬?äÝpð#si?Ôr¸} â?ÆgcsŸd?äƒ^Š‚É?`ýjSw?æLl ë€S?ÇËÑXÒZØ?Ýš™VLN?Û�µõ 7ˆ?ÔÓ½I5æÌ?¼[c)5kà?Ѱ\×´ÿN?ÍD£Š_(?ÕL2öé’4?åÂÞ­-îü? +Øpà?Ô0Ћ(Ü?Ò9KØ}ì(?º¸ö_ðè?ܦüSÓmz?í"Òì´ü?ѱ\ì•Úb?ãʙފÝ×?í—½@# (?Ð+ÌE~¬Ø?ãkKiüÕ?ï'Ϙ¬?åÀˆ—çÎ?æKŠÂwÁ?å¤E«„è^?î<ƒi$w?ìTV4\Ý�?ç", z?èÑã¹A‚’?àêò^o1?Ó þá¾?è;=X>?íeAÌú?ÙÏ„Åþ?ëGÁ@@Ç?ÓRŸS�*?ä’‰¬œI,?Ìëv¤?ìμ�(?ÇpD<½�?íÅ‘?æ”Æ?áÓžŽ|o\?Ê®—Fˆ3D?åÙIò÷À!?ÔiŒ+ô\0?îÆ1¿ëöv?ÝI°2–T?æ=Yx¤hè?—à ム ?豤Ņð[?·ÈÈ¡„È?²´ .È?ÐJ@&.ö?ÕÀ‹õ8?é솭/+t?Ü[?£s²F?Æš)“ŸåT?å¹ÄêW $?“+ÉÍ.Z€?êßz] mÚ?œìy”hZ ?¸�· ì?ÓÜ'[•y.?×àÞ!aþœ?Û‡`vôWÜ?ÐÊ�³té4?êh³›àæ)?íC0·?îÓAX){¨?ãQ•õ”ÄÀ?í5êµøñ?îrv£ì‹Æ?é[æíÜyß?ï;@œ�T?ê,&óök¾?Ó¦ ‡¸?ÞWƒØ5òÜ?îŠ5¨Ãg¥?Þ:Óä^h?í†ÕòÉ ?²ÌÇ/là?ëïDZ†x‰?랟ç�¯?ïJ¯DZ?ÍbÀoê?뾋s÷¼ü?Ç/p˜pÇÌ?Â5P�hcÀ?êFpN|$³?âUœ¯Kã?éÌ„š«„?ìE $îþ§?¨S|%ÝÐ?·‡í”ÝÅx?ìœÆÉü?íÊ¢uŒÏ¨?í.æ>=±?à”â�‰Æ­?ÅÀ¶’±œ?ij¶rÊBœ?ííF²O?æòrÓu“š?î_ –ž ?É›«Py¹4?±í¤L=¢p?æGà¬Ä(Á?é’Àé0Ù?År[;^ ô?ઑps¤?í]%„qŶ?Þ†~à�Ô?ÚÙ �Ä›ð?¦Ê yÐMð?í„5¢’s?ã’v¸ä?Ä‚*µ¢h„?åÎKßÄvP?ÙgìYüî?ዲõé"?ÞàXô?ä=`Ðn¯”?ì±, 0k¿?å×+ÝG5?í:8ƒÿ6¦?ìÇE10y?ÔCV6÷B?ëH÷�û¹?ÞW­ù’»Ü?Ð+·E‚Ø6?Ý1 �‰ÝÆ?ê¥9rœ~?æóÌSr?ÀÜ´Á%H?ì,ÌœbK?è¿v•Œ?×ðÃá�¼?ë­ûAÃÒ´?ìˆ>5¡y?ß+üùôü?â¥{§á¡?Ö…ç;s€?ÛÄ~±Xø?§s %!ç`?Ôñ?¼ü?ˆ‰[J¤?îîà“¥�î?â0ŽÕ%?íµ)õ©�ï?ÒO�;q6�?àÎaÕDÙ©?ÞßÄZ“w²?à4¦®5ƒm?á%˜íŒq¼?é%yºFa?æDípXP?ïX¦yÞ?Úñ2¬ªØ¬?ãºç¾F?Ýè† ?ヰ$Ø–t?íˀ蹎?×Õ"¢ÎA?àu�F¨Õ¥?ï_·²1ŸÇ?çyâÉÚÐ?ЬÒKfp?Îú Ù,+?‰ w€¯€?•‰ïU€òÀ?ÐB‚DZ˜¤?ɯ~Ô?ÕÞ;‹qØH?ß8l°}0Ž?êð¹¾r(?ï†cÏ*ˆ¥?¾©àd!¨ ?ç, M÷¾?Ý|³]º¯¤?Ôÿé‡kR?ïWÁbAš¦?›)j.ÏР?ÐðécÒ ä?ÄòE‘ãBð?è åAWq?Ø1Õ@Ev\?æ±ãÎ�"?¯…Ó=5`?×݇±P?ë}SÕô ?Ì;}þùø?µÚÌM?¯D[!ǰ?ç–ìUx¼?Äz—_N�ô?ìß÷ï#£?ç|þŠôÁ? wªŠÐ” ?ÃRw’ÜD?ê[;ÁÊíu?ØÒ„Ó‹Ê?Ôãðx£á?ì‚´ëqþ§?Ã’XM ?ɹ¤uJ.?ç�í’?ãåIë|×>?סò¬Hž6?ߨÁÉfì‚?éQÄqŠc?æ¾ï"Ÿ#‘?Øúÿ^jò?ç”ØÝ’ÃO?ìr%l;°0?ÐG†™sT ?Åûã?—dô?Òš¨Ïçof?ÊòAŽ-8ø?ÔëȰNŽ ?Ö˜?A÷Â?»hÆ~02�?ÃJžüÝ¢è?æñìÄG“"?ÌEþÑÆ@?á‹…±bn&?ÐTË>FŒ"?èÄ�9Wíd?ÕÇÂÂÛ.?èÿ%ÆN¡&?ëÌÉÝB?Í4|>ÌÐ?Ô¹uË?¹Ñ('û?ÌáÔé¯H?Û‰ÿ¿4?ëyÜCÃÚ{?É:y\kÚä?ß„W&¨?åuµxÓ´?Ó¥…€�L?ÛÔ0s8?è4Að¹ ë?á3&©7v?í`‚ (‡®?ï—�;ã¶?ägn2Š›?í1¯Çä?Ú»±ç õr?íNãÚfN?ë»ìáøµX?ѹ>&ì]€?ÙÏwl¨?ëwØôPƒ?ã\àó?ÕeÈ1¼Ãˆ?Ç r[m-?Ô3G£ÏÎ ?Ð6¶µ¢Ô?ØñL- Z?ãÞûûúhÚ?êT ÍØ?Ý&h_èô?êÇà¡õ™µ?äQõQþž\?è6Àù¡?È2è%îä?×Q—˜lPR?ã]e$“µ½?Ï9%¶Nû¨?àGó%Õ?Òt7Õï�?Þl»3xS?êÕ”MF‰I?ì>Ëq¤à?æt¬ÖAME?â3œÛ_#Ø?ëã5?æiýŽ‹�Ó?Õ ;ç)Ö?èC€Lb5?çÞ2¦^Ù]?Òªê'¸?ܰç¿ã³Ô?ä�¤O#ùà?áúÏñ |ô?Û톕£z?Ñ}ò•„¦º?è*€ðIÊÜ?åá¥NT]É?”-›7À?çY³:Tnø?ê2ºÜ<ßq?Û›Ï; .‚?ç͵�•ð?à"ÀB“'U?ìmÞžå6?ÞvÔYìâ?èåF\Nb×?æ Ø®ì�?É ¦(È?íÐ EŽ¿˜?ÛRÁ~’î?¸Ð!ÉŒH?±šÿìüP?ãŠ5ÚˆSo?äêm|MJ(?í)¹xB[?ì¢-�åÞT?˚ΑöÀ?Ö¨„½¨î?×f@n¥V?èiSÝú?設ô'?ÙµTö,¯®?ïB"1V œ?ÒÿUg�‰?ë +¾½8[?Ç6jXÚì?ãh4³G;­?ËvÜ'€?ÓëNNqæ?Ø‘ïßè?áÄn‰ß?ã¬ÊqÎ�™?Ç“íhœ+X?²óÅ+l ?äj‚?7üsz?î~økÒ?ì¬?Þ�‚AH&?ã%Ö¶­&?Õz;_ØÅ ?äÝ`1„ØÞ?çK¤ei–?îVl.è?�ar±£×@?åÐ…]p§?èÁ.v³å?ÞNwFõ-t?ç;ÄëAqã?ï–ÂB?äIðr>r"?š’­€`�À?ädHûÏ;.?Í«m¥TÆP?Ð ÷?4ê?Ñòó™Ï/?ê¯çŒßpS?ì*_EGi?ÌdMÅú\h?ØfW”ú?ÈÌ@žÓ$?ìŽ?�÷Nö?°�B•A3`?Ý[ýÌŒì?íçÔ�4?Ý1D&2Kl?ÑÈ4Ã�– ?Õ|±#w?ì*†KT?Äl”Ñ�?êÝ:#Üà?é¸\¯EC?ß(«ý�¨?ä¤Èé¿?â”YRÊÃ?Õ+Ž&“ Î?îo/¨´Ãú?ÄO@µ8€ì?Ñϯ3„ýj?–ô¬©Ë ?Óô@d[æF?ï�–R?ã>ŽZ7E?ÎM<«ä?íÄè¬W�ô?–“‹6?Ûê6v­ÒF?ïY[ò$šú?ÚžUÖ?ïÿp¯ˆ:?pO¼j!?çªýN¼. ?Ì%|¯!Ë´?êSÐ�—C?îž b‹©Â?~Oõ%Œ?íkge×Ð?ÂMgúËP?ÔzSÐÄX?ØI<ãbd?î�†×€r|?é¿“_g á?í<ÕàeHX?îêœûlnÍ?À}bêCy´?Úh¨·Êx?ÏwlƒH(?Ñ$Žúj?£ô?¡mß?ÉÇLKŽöÐ?îàgk™KÅ?éRG;½ÿ…?À Ð1)ø?ä�ð׎Ö?ÓÚf‘¯lü?áø _kâh?Ö9züü?è\×ú�ÕA?äèÉ;P?î5#fÛüB?Õ}fÖ ?ä½·%æv??Ýô!–ßt?Î WêÛÁä?êHžéäe?ë$É ðý‹?Þ$iŽ©Á´?è™—ç­?ãi5Å-ò?é?+Õhq?ÝÛ]Ò;P?ï;826ð?èþ­#Lmq?ëëóo×?åÒKÑ Î?Ö|=ó$€?ï#}®gå?° 3ö4h?Ò;LµEÊ:?ïà4{Ýÿ?Ðú9¹j0ª?»=óEòè?îZ_i�?çÐöñEn?íu§]‘ù’?蘖ÂGn¾?¯òCR±rÀ?¾m»Ž"H?ç,EFG?î™BØwÀC?ÜØl�{b�?Æûô“›l?åb¯¯nc?îwO>Rê?í9þoÐü0?Ä2s°]¤?ã a?[9Ë?êŒ\ÅÒê?ë}Y3]›\?¼±«]îX?s+?×ì☫ÒF?Öæ�§VÖ?Öüµí¤nŒ?ë{׿Œ·?娳-xÌÁ?ïÓ1;¶ëú?Àyè9Üô°?Ôc­P’Â?ã6¤AoÞØ?¶�'´MÏh?Û~@•ä°?í!!•é®?Ôé­ŸxÊ?å“XÝ E??àfÓyÔœ¯?Ò–—ÚaÇ€?Ü>&z”Gþ?çÐå`ú?ÎÝÒƒøã ?ÀtÛŽsì?À–økôߨ?í)§öúá9?êÏ®áãö5?åo Î÷È4?âe«6®C˜?Ú:ìúüîÆ?Ô­ñ¨Ó<¶?²Ž?æ(¶p?Þ9~GÚ?è e(µ@9?âº^Ž>° ?ÐäŽ?¬?îØê5ùú?Ôb– ´=^?ïL 1^?Ý8Ìö”ß¾?Äh jÄà?“5 8³@?á_c�ðDÌ?á<Àˆ®–?ÙÙÑ9?V?àiKú�ä?íHiÚqª?ØÒ¤RÍá4?Õ‡Üÿƒ$?íx›]ÐÐ?Û1†àô.?Îá«&2?ÆMÖ¡;Od?Ö:#ó?Ëf‹�Ý´?fg&…6?èùn.øt°?áNñ&½Ž™?²KÄ y¨?Çš°ÿ~~˜?™¦º�\e@?Ä``¥Œ0?ÅgJß3”?î›"j€g?ì@�Tj\?ÜÚQ�7> ?³æ×ö1�X?á¹còˆ½?§çã‹t0?ãXàÜaʽ?á~=ù:Z?Ô¯q{NÊÐ?Ä�Òþ ­L?êÑ8õ(:¢?ØÑ½2ò¢?�f˜jùÂ?о@š;â?æð’ÇíS�?âèË"šLä?Å `ÂW`?ï¢.?yZŸ?îÚàQ‹²T?ë%DŸ´g‘?ã�çS¼q?Ѥ”m-Â4?Õ�Rf#\6?Ø0ƒ”dL?Ðîœí� ¨?åöC�±È?Ú°ÂÓ’?èñݹ0Z?â ù0�æÕ?Ò\“w¯ÚH?•Á#€�= ?��ñtØÀ?çú–3ÈÊ?×PÀ¶º\N?²t¦uØ?ÖúpÂçx?äÇdt)õ?³ ÒßrßP?á‘DÞ¿Þ©?âD‰^­?Çï+.ß?ì34_E£Œ?ÒHi±,D?Ò™UÂ’y^?íšJƇÿØ?ÜØ Rô¨º?î*]6ß]i?íM¹°ÃÏ8?äÆÑ*3º?ïä�!§�?înˆ–’&?í—FL�f;?ìžõmT?Öí–?Wö(ÈW?Øq‘´X–?à¬?Ð-½uŸÜò?ÑÒ`eï�?Ü}-ãì?ÕÁ­²#*?ï[¦rt—?çM»Ãt”¡?ßõüÝr߈?ä“ÅyJƒH?êeú�’.=?ã[“’g?éD]-G?ÒÕ0Z1ð?ãxzâø?é?ìŠÇ}à:ò?º‰—™Ì x?ä~¨¹‰œ|?èæ70É<�?ç_Ü÷:GŠ?Ñ;@ô–Ô‚?Ôˆ+í…Þ?Òé ÷}8ð?ã#D‚aU±?Ý€×~îø?ÑàFæ—’8?é°‹øAuT?í¤i›�?Þ܋ڬ¨p?àH+Æò!g?ꂊ¬w«?è’Ëa'©–?îÒ&d8<?æúä ¾¯?¶“¼€õh�?å ¡¼>7>?Ák}Û¡=ø?ïâöï?Ñ­ZÝv�þ?Ñã¡NG®¦?ÔŒÎ[å2È?å«Àß÷CE?¢+2¡mŸà?ÝN›�¡æö?âbr‰îݳ?ÔTѯ) ?Ç?ܱD¬?ì‚+¥"?ì/Çÿl´?áS›gß:?çMåcZÖ·?í%–\½ëD4?çÛZ}A?áyrõ?Ññ 2ËùH?ÛÌÔ¯P?ãªê·l?ÁZzMGøÌ?Üç\Ês­@?íPD 1!°?תNøDÊÒ?οֲ(�t?Ý›‚Æj¥º?æ]p¨ ?¯5–Tq¤�?î3ê“’Ô?À•Úo}gœ?ÍP¨¶ü¦Ì?Õ.â‹DÖ?ȼΛ™\|?â1awKn?ïäg×2h?ÑŽã^M.?éX]Œ“ªè?âî�ɇªE?ßž]“S°?×AÏ6Ýv?ä+;l8¬Ô?¿CaF:Í@?Úã‚û¸ ?´M7_vø?ëÂ!'ÞÉÚ?æœÞé?ïÜÔÉg?™ò ",Ò?ä=˜t¢?ãÂP®ðóT?¾ån>KwÈ?Å¢`wë³x?á°{ío?â3V1¿°?èÈ€¢Û4?à¨è�ëS@?í°˜iHó?ÖüþÚÚæ?ÖÐÐÂæ�ø?Î]âñ°?á·oh_Ì?îÑ"à¾ÆÒ?Ê] ê~±€?êø›c�}?Ωm&Kd?»²ß[î¢P?íPÒ¶ÿ"p?çÅê˜C?аç¼^XÚ?Í Þ»RÀ?æóAØ5?Ó<'œœÀ?㶦ðe?–lšia€?ä¹Cèš ’?î6RŒšéF?Üüt õ”h?íâ½¶‡,v?ëÈ-LúÞŸ?Ø?ú�´$¸?ê=ýŒâ”?Ôˆ­ßHy¤?î,(V® V?ì õœ#¬Å?ÄãtpC•?ÖH"x–Bè?ëð‰G£V²?è`ˆrfU¸?î'ïÅþ~?åÉòh;”?í-Å\ê‚�?·D™ê A8?îÔßêþ¸å?áIñøó>?åÅ,FÊ?à×EOý?ÕÝ þFQ ?¥/t~Ìä€?ç/9šÓ×)?à`íðÛÂ?î2Ö­ï#a?Úžö?Ò.{±¯®`?Ö¾‚ñíÑÈ?Ôè„êUØŠ?Ø&Á˜XýD?ÓP|ˆ>~ö?åo62Y6?ä—Eé'»?ê ?V_4?ê(o«Š†�?Ñx—¬bÎ?ÌÚû¾K ?Ë®±Í:ü0?Üݤ#ñô:?ÙbÕ°™ ?â°~î «’?ÙC b• `?¦±âÀ^“?ìãÒAz3Ö?×{Y)wMZ?ÑP‘Ü}Ø ?é…dÞ�ç›?›Ü…‰ã€?ɇñY�T?ä÷åЮ?Ü@d Îü?³X¤?ß© Pl>h?Ú«ç¢�¾?Õñ;B?ºƒËäë(?¨¸U†n‘`?îºFúùÌ®?¹‘ïhà?ë�5­v¹?ã\‹ˆœ±?ä å>N?í‘’P¸5®?ßï�Åí’?Òê‡ò™R?ÒýÛÞØÅB?è»æÉü�?å>Ë~X.ð?æ4 Q–š?ãM_`¥mÏ?êõ6g¨¾±?îš÷§|Ôk?ÁCbzb{ð?ƆSiE(?äÜ¥_بb?²H]@½µÈ?ÌÆ'Ä?ïfåÍ‘×Ú?¿äͶ:dP?ܾBX°@?ÛÔ@Ÿ©�?è(Ú&{?Ú|~Žr?ÄV‹-�?Û»s~MÂä?ìFÒÜÊ?äBqŽ Ò?âésÈ V ?Ô›´ ¯ßÒ?ågà,Ì?È2îSx£h?ßÀU|àb?äí Å1Õ?îóÿ‡š ?æ�9èÁxT?ë&H)‡wž?¿&¿T‘`?Ó¸SØ8a$?ãë‰3ët?ºZ\$Ãû?ãôÓ@!a¿?ã$}ÐþG©?å—æÈÔu?åÿÝ3‰'Ÿ?â�jN®¬?é“6ÿ––?¹›uÖr X?àÈþJ;"n?¶…$¢$Öh?àwѾßT?êâÊÃLݲ?ד ´Éü?ÖJ§Ö¡é?§â�¹C@?ÍÁ©n±& ?ëFú�–Íà?áÓ%Oä5´?áÃ÷¶&®ƒ?êF• 4j?ÚÈ{%él?áÄñLMä?ÙF–óbãô?ÕÄ5öb?æHeª1J?ã©u³A?çQ÷¬—O?¬#ºâ”�?®ˆEª’Ð?áŽ_a¬ª‘?ÐVƒí’ Ö?àØéªxbñ?¬È�å ?á0gãCûÂ?µVóq©ÛP?Ö�t§ È‚?Ôi`ÜM&?ì÷CPdA?Úô�³g`?ï<7oŠ?Šœi§9K€?áØ-"¡õ{?äö¡^4?èì¾ ñ:?åš]±òK�?ááÚ˶€b?ìç±»'!K?å=Þ¬-÷O?Ë/š„ã£P?šk¯Ü#`?ét£b¨Ç?Ú²“–Gœ?¿‚•$÷È?ƒ+ñ¼3ŽÀ?×L¯>é,?Ù’{�¸ð?Ò«-e0 è?éSÂS™þ?àȽË%?Ü\]øßJ?´ àêöP?Â%UsÕ¢°?å³ lU:?é¼’víï?½lò¢¹X ?ÜÁý¤^z?à?ÊÅ×[Ú?è3_-áƒ?âÎ1¡V{?¯@Õ ‹°?æýå#X?ɾŽbý€ ?âVØ©²„ß?抓Z„Òx?ã#WûBÛ?ìÓÓ­º€ ?±Å ÁñÊè?ã°Fýã?à$§„?î&Ž–�^’?å^ÿʲ?ÈÔÆvŠú$?ÒÒ‹¼æNâ?â]þòh3Æ?àKHZô s?ÛŠlpBý?æpË7©?Ô;baF?ì R ^ƨ?Ò÷ÀV’KÂ?ç#غÇ{x?ÛV·-Â?élî¥Ñ'2?Øß‰ü’ñ®?ЙsÒʶ?îõ›U`U?ÛHBŠ“?Úçi1Owè?Ùâ Ïèåú?ëcÚe,Ek?ã åYÐ?¿ÈÔ=‚x?Ú�î‘æ?åQ—3ÙÑ?ݱ‘fµ:?âh§†?â?K®â*Ú?äÖjr3jâ?âï=àªÊÐ?à5šà¦×³?äƒ�Y0�Î?Ï|tšÎt?ᥢK.ß?â‡Øxˆd?ßíé�1x?â!LÂ9è?Ì»ýz¯2$?Äï—ûÇd?†Ä„š¦Å@?ÙÖ‹'ú¢?´TTü³6x?̼ªÆ?®Þó@ïà?ë�×÷x÷?Ôµ(ö!¶?ç_,ŠC[í?î´1ì)GÑ?×? έK¬?é9ž#[šu?³j ‡N?ÊçRk0nü?îcg’ÃNƒ?�l^Á¡ ?ïÚ&SÆe²?íªºÃ£ñ¥?Á‰Ü>?¶œ“žõø(?Ôë5¥ml?­I{tL�?Å„!é{œ?éöôæß]?È'X4S�T?¹¢¾–ͤh?åjbd;…¢?ä[�P ?#?åš(mн?ÑB«Z�€V?ß/ƒ­Z¾&?ìDÁôŽã÷?Çí‡ûÈ?à�!U?ãfÁ©Ä1½?Ö¥�Ôlž?í`µF"á?à˜ÎŽWÊè?àWOÜf›3?ì2Kâ5fÀ?éX¿œÌü2?Óa+«“À?àúnÓ×m?°ÃõB úÈ?éþ�Ý[h?çõ�ä‹»w? ® i–P?Ñ̦¬d¬:?ÈhÒR°ñÌ?´@—V‚Ѩ?Ø—¸®.aÎ?í,M5X?ªjã¨UÁp?ÆZêtÁ ?ïsÙU³{?ßþã9ºOZ?åŠ \‰V?å 0¸½&?Øò¹©vd¨?¨eóB™è?ߢ A €?á5�ˆv9O?â�GU¬,‘?в§^cuÎ?ß�æîÑþ€?ÎÀÅ&íè?£Ù&QŒ9 ?Ò;à MÉP?Љ²�{�?Äî¹´aE,?´ˆK&ÉØ?æ½"°ký?Âú¶Þ((?æ!…yÖÚ?ºÍïjøœø?Ú>+0饆?ç~CX?ïFðˆŠ…O?åxÌÑü´Ã?ää�ÎÕÈ?ŽZŒæ)À?æ¬@!³.?çŠmï8ø ?Ð%¦ßØ?°ñMž“l(?Ü·iAoNÔ?êÔ|�ç?�oIËè`?ï=éUÙ_î?ç�ÊxMÝ›?Ôº©Þ®×?ÕU.æ‰/l?×z.¼?À åíö´¸?â_5“¼„—?ŠcŒ‘Ï?í½[Ί&?È@¶GŒ�?ÍáI…t?ìÞ1²!y?ä}é¢?3?è4ÅØ(?ëÐRªO}~?潕¢Qí?éë”Éà‚?í…Â6Ë „?Ø8;¾2¸?Â0€û¥ŸØ?Ø Þ? qŽ?ÞÚ*½!çJ?æíƒvmpå?î_ t§?ïÖ©Á?íƒ?çö ’…œÔ?Öæ�ßPT?¯àsÕüF?ÞÓ‡¸tmp?îë´–QÍ?×�·5t(?ã»×ãO?Ç\Ý¿ ˆ ?åßþ��G?äàŒË�q?Ú°„öÇ*?ÓFaᘳ®?ÚÔ+’•À?ƒ6;ýù�À?™�³km ?ém�.ˆL?� krªõ€?¾ß§ó­?˜Dÿ6s`?Öx�ã¯6Æ?Ïv*DŽÜ?íÜFû†åè?r8Û x?²Ãဥh?Å'WlÚi¤?çRƒ´oÎ}?à‚Jþ(,š?Ã?ûÃxì?îŽÆDÒ€—?Òº)×B ?ï�²çèÚJ?çÕ÷²Þlë?ÚOuç†ÖÚ?ÚaLøâ*”?åÉ¥ð;/x?µïYÿpà?Úó¨ÄÒün?æ™·kMŽ?Ñ€~DÓæf?à,`˜^]?à—¢²n­À?ä„TdHÀ?ë@è‰f3?åˆ;c¯úo?Ì™fë’¥?Ðr¯ìœpL?Æê‡XUp?•è?¼oÿ� h?ÖéRÚ8FV?Æ…qÌñœ?ÐNxé¦ò?ÖP®Úl¸?æ±:1Þé_?Ùáøä÷|?îÕ%¨¢í?ÑJ›Ÿ£©d?ë*õ•KÕ?áË”R‘Ë…?êû÷X’?ãsJ³œ%?ç~sKärG?é–O ·Y?ï‡|‰*>?´÷N]ŽßX?ãåO×?³g»ÅÙÐ?ìe­h�?è½Ð޾ôˆ?ß~²yî¤ê?àUt“ó?â˜�gè?™­—ÅuÀ?¤ó1�!•P?ëžÅ¶ý|ó?ÖVÖ`ÞÔ?Á@ªôOL?æ>ýØÇ…º?¨ÜrNŽ%à?å[Mί?åC Ål?ÛS(Oë(?s¹„…áÞ?ß^�± òø?§­Kr�?îàŽð?åÞ «‘%½?âzÉ„¬`?á3.ËÚu?ê£&´9?À?&Àš?×fî r?°¿ëvY0?ë I›É?íKt›ŸO?ìŒRûT9ß?ày9…åD®?ÂQ2¸’ˆØ?æ H¾ Çß?åÞ¨x°ƒ@?è„ñíSd?Èã{³<¹l?•E/º8 ?ÙóLt �?ãœRºãd?ν:¤–9?áçcËòÒž?îøÐ”Ð{?áØÏy÷Ž‚?Ù)2`L€¢?ƵFÍ3$?ëªiWj¼º?í:Ï¢ó?Õ#\µ¹b?ŒP>ÖüÀ?Å`ø ¢Wt?Ú�`�[Yô?éëù,4óŠ?ã +ÈGþ?æ:Hƒwþ+?ãæd˜ö~?ëºüñή˜?éŒ?úî?á5{_‰z?Þj–[ ¥?äÊšELHù?àaå‹õ¯Ò?¹†ÂzÝ¿H?Õh-àù‘6?ë5r–nÛ?îS ‘é¦?ïÁ^+°é?çÕN¸B?¢ª‹×£8�?âö/RÓ9?Ñ}ù?Â4�?ïs³„¡ø?¾ã¢¯åÐ?ç«6, ?å6J¾Ü Ì?›Ão4��à?ÑÄg»d?âÝ ýßO–?ֿɒP?èf`±óÀ?ßP�Zµ”?àç.H©àß?½I™qø?³~£œŒrØ?βÆúÉ€„?æ&¾dϸ{?ê6ÍïÁå?í×Í.Zõ¿?áRC“h?‰»ÞØÀ?èI(rÞ¸J?ÒÇ‹É3¾È?ïö©å옥?ݳ†9 ?èÞȹ£ÚÌ?èÞ#bTÓ?áTŠYJ(?áce^ƒ(?пe†ëxh?Þf UT?å&–Ïaæg?Ñ€èÜ?éç\hZ?áë.R�€»?¦“)MâÙ ?æ?ÉW“ÑJ?èöƒ9Á‡?é rØ·ï+?íAû%ï•?êThL…hÓ?áI‚�å£û?Úò¼À˜žô?àÀ˜â‘U?Ýlì#œâ?í}iú#Sx?éCúؼW?Ù/ÌhtSì?ɯhÁ²�?ªš‘ˆà ?Ð4]› ä?´@À@÷Lh?Ê•f >2d?êhˆÃ.© ?î® NK)?Þ‘¥¬ T?²<È(VO8?ÜŒ)ý´.?ïõ®ä%Ç!?ë¿ý¹{’?ì�»sÕW?Ý#§’Œ–?Ö¤©C‡¢Æ?ÊóÛAp?í+bqóË)?Úñ¼ŸÙ?¦Jï"+�?ìå—,9Â?ï8˜d –/?­÷—Ä®Y`?ÁDÂòû“?é£t×ïµ&?íŒz*¿ÈA?ͬ Æm„?í£AL}{ù?Þõ®s¼?Ь¶1>h?دöX¥B?Ô6q§Þò’?ê>_ß~Á?Êû*ñëØä?ì0Î2ˆ”?ÚÊ_D6¥P?ЄU}ð?ç\–°�À?×Ѭ•ØÓ4?Þÿ£%1„?å#÷^… ?ì2á<×5Ü?ß Å† ¥Â?ã@T—ª?ÃP»ô†ì?Ìó0‡�ÿ?§–˜ÑÀN`?“$ò! µ€?ÍùEcï«4?ºÆõ#Þ9°?Ò ¯yœ?ÅT^\#ù?ãŠÂXú?Ú¼}Ù¢b¬?êÑÇm íg?äq’Š4Zz?Ú‚“‡’.8?ØþàOÏü?Ô|ßÿÏþü?¸LZpK?ÔK–†ø?œÜȉz?¸;ñÅè?Õ%Šííeú?ã¦ÉRDÓ?±‡leÜ ?톃)_ Þ?ß`ÖÖBæ¬?í.Jï¶Î?Øh¦UX>?ì:àUæ?è<çVlâÖ?ìוøËšf?ç ¾òߌ?œ/Bû’Üà?âÜõ‡Æ«þ?è�^²Z?Øûo̯¹ú?åÂó¥ô7£?æµ§ ?ïû©Øæ?êר¡ªG?ßRsR'Þ?Ápå�}?ÙOúº.”’?ÈЊ’œ?¼-ÝÅB£?î§Rªj›¸?á·ãðÍcf?oˆJ\XÐ?ƪ,ÔÏÄ?ß"”^Jé–?çP¯µOª?Ç/mCúÎ ?Õ› –%Т?¾¬â“Ơ?ìO­Ã^wp?§ÍÄ;¸À?á»M“4Ü?±Þ7Í�?µõ×V�p˜?èªØ ’ï?Ã<“�Vä?ÒáMkM® ? 4Â�‹�°?íUÿ&m›ˆ?Á«rÆs?ÒHóÕ˜d²?‰ŸÁš À?Ñ«ÍqU.ª?Ò¢‡xl?äÍÕª9Ìê?ܵP!:†?ØšͤŒ?Í~T#.T?×—*ãë¶X?æö81¹Áó?Õ é‡üØ?åÙÒA{#r?Ù2ŠUƒ�²?ï?O!’37?â¡�¶êj?ÐEŽÏA±�?é8-©†~ ?زö›‚?êœÙ?Ä»¼},ø?ê:ù*æ[‘?Óêg�*ò?êß…�Ám¡?­4NšŠ¶?éKbF�åË?°¶à…z.ˆ?î²­£óR?_Zëùö?ãèò²ÔÒn?Þ\¯›o?º Ëi–¢x?ÒQœ&ަ?àFUÅÓâ?áÏj×jÊs?ã@Ì> ¹ã?Ј`¬iÆ@?¶›€Y$8?„á{×@Ä@?âi˜;hÜ?±ªj ó-(?ç_Ú¹éuß?èЖ˜Êz«?àŠRrŽ?ËǰŸœÐ?Äӳѳ?é¼2Ÿ?ÚFÅÑóÜÔ?¸Á ÐÔ¡?èýO¾Jç?á8ÑžÅ?Õ÷ü$Wú?ÑèÅöœ?Ón®oq¦T?ácž9nÞ?Ê@]ªT?á9™ �Œ2?ÓYÓŽRGþ?ÈÝÓ¼“$?ì"Ö©Zü?ïçFT‰q?ʚ쉫°?Î~�“Á”?î�ª�¿?\?ì8Í•P?Ý:§E2?­ƒÏºFÕÀ?Ý*EXã è?¦í§p?í¡Ñúë'?äŒ(á ã?Úµf…sþþ?êHW5;?Ãî…¾H�?ÐϦ¨v(?çY]‘Qí&?Ù¾¾³—L?åîï%/?åØ)µ…ƒ?ã­…¢‹?Ä(âC¸?׌ýÖýF?ÛUeîÑ“r?åä’&ðª?ë^½�Èû?àB>»äíü?çó¼q5ßÚ?ì›Yj}?ïsç}Øí·?Ùô$ðú&?î"XsÁi?á…ÿ„ÀZ?ãS¾pº˜¦?ꙜÉÌB7?ã <Û ®?ë �ß‹Mþ?åH À?Þ gõ ?Íât†éJÔ?ã}†pHuT?î×ö¥ @n?ÕMàÇ6‰¼?î þlþ?°;éÍ+O ?îi´c&ËÌ?ã7‡r F]?剺ý¾ïc?á*UâvÞy?î;BÊÅö?ìr‰ùNåÆ?èë8fÔr?âs­ Áï-?Þ ´Xý‚b?ÀdtÕ­Ò?æÁÅEÉü?çªÙ&©d?ÚÛ5L †Ž?qÓš…?âfÀÈš£?å.‡\ó·'?å ŠÍ5YÆ?ëôqúêÓ}?î¾9$\?æµK‡qô?áÁi2¦[?í§yw^O?êñÆX*y­?îÌçïY_½?Ѧ^÷$2?¹F{m>ß0?å7Ã(•‹?Ò7ùR9Ù ?ìРËdI?Þ•c¥-Öv?Õ“F^6Ú?çn«Wí?­­†üîŠ`?ç�žæöEj?äãËOÄ?ëöL§j Ž?äåïàø�¿?âw„»-v?ì&}?IÄ»?áÚVšk h?Âþ5ïUC?ä6éènn?êÚ£Ãûî?´$6êC€?Õt6?è¼È’SmÈ?ï�|'ä³¶?×z¬níSø?ÑÚVž¢Ól?èz¯Xõ©?Μòý®?D?ìÒE�õ±a?çÒ�BÏ?جŸÙé5º?ЫýV/6ž?ß³ºF®š&?»ÇØ2??ßlÂ_bd ?ànÊk¨Ä?២´2µ7?èàè�y¤?ç¤ßžcÁÓ?·.��¡)(?Úk?²7ô?íÄ&ÐK?Þ® ÀD?ÓۑТ"&?â~ e\ŠA?ä`xOmXé?߸,ð‘œ?°EÁW ?ÚVñ“W?Íl.ýµ ?ÐgHø;h?ÕÒ;«­®?ËAö8~ÑÄ?°,z®ø?ìʳÚ%¤(?í >ª~¥Ã?ÖKì^ºÎ?¤>vþJ§°?ÖÕŽ B2?£Q5¸²åÐ?å›×Ïf( ?åÆË~å×y?²ûÐ~¢×˜?Ð…<`‡ü`?íT˜UTZ‹?ÙØ ÷„/X?ß{³¾` ?îŸð7D·Y?ÚØØ…Àût?Ëm¶;ex?ÀRXïŽJØ?µÆðúN÷ø?»¿ ˆÀ?∠2šß�?°õ[NÙ À?ãy €4ÞŒ?Êfgöösl?ïIæŸò•?í!+ÑÕe?îÄ ‰KÏÒ?Ýr‹*ivü?ݾ£é¢&?ÈNgÿL3À?Éõ„>F'Ä?ëYØ÷4C?Æüî�vd?ÕÖLj$Ìî?Ò˜Äõ'@?îÉÏ¬Š‘?Á]²84\?âBêlWz,?·k÷¶WàH?åð½nÄ·÷?ÑîErÞ´|?ïu“…— ?讣19uR?ïô÷º¼¢´?Ê@XZ!¸¨?èüÂâf²”?¾ßDw‚œ€?êQoX8Œ?Ö¯_ÿTþ?è7]¦Õ±Ô?ìžI9tÚ?ÝÇ’#?Ê™ïºt?ÐÅ»Mø_? ØZDÐp°?¦Î†µê9�?­6œöRN?í€IQ7Ö©?’&øäéï@?ï�ÓC6Z?éZe-Û]?æ{±¢Í?꜕ø3vo?ÕÒ›byó8?Ý¥JµFì?ÙæL�2™ª?ÜÂÙp’�ö?àß�­�X?Åý‰þf”?ǼñÝΟì?ÜCíW%gZ?è1[p”úá?ë1Á¤˜££?²3�dKˆ?nÝn¤?¯;XËðýà?ØûT·�·?äß°ªh à?ïØü8Ã�„?î%–¿§Å?äZÁg ÄØ?²­`6vx?ågr€4Ü^?Ð&ò¼úJ?ÜŒà“Áˆ´?×â­šOÚ?àäI¬8„8?ë¢Àý‚’î?ÛFH5éì?îñù�¨£?ΠA:ñ ?ÕeÓ?µº¦'¶b�?ÇC“Îñ�?ë³þå½g?}?1>?í üH·�1?ë_E�ñ@Õ?¾gþ’ ÞÐ?ŒZ=NìR€?í¬_ëdd‡?×#Úˆ”¹®?¿ö?:±¸?µôÍßLËp?ݯåQÏŠ�?í3VÇJ…ê?Ð2dx¶t°?íÍn?æ†>?Ù‘7K0Fb?çõ‡½\V5?ï‰É¯•?Ù…ýycú ?äxޥϬY?Éú¾\(Z�?ßÔ@½mÿœ?ïrä¸â<­?æÿKAÄë?ë*é5¬X?Á|îùhe˜?á€i»£’?º&XèF°?£;%’¨~�?Äiãêc1¬?Ìxc ­?躊U^¸u?؃ÄA©~è?˯ ‘¿Î|?ÕI;~§ ¬?Ö&<ÉŠ ?âéõ­Žã]?œÎÙ8@ªà?±?ÃW¡6 ?ÞÌc?`?Ä€ Uð?Ùá)üxy–?ê~õ´ô¿_?Ñ×HÞF?âð_†ÜJn?à¼ÖÃÂÂ?Ú*ùØYò˜?ÞÔÈn2œÂ?ÜC±V­´?ê–ã—Žê­?âJרY^ ?Ðrž%]£Ì?ì•ú ŸC¾?àU`¯STI?àkù¾çB?ãpè“Ù+ì?Ús•#¥ú?쑾žKÛY?ãÓŸ*"r?é ÂöÐ÷?°‡qlÞ{ð? ¿‡ÝŒ¬@?ç±<`qÒ?à·�²2R8?×w�©ÚtP?À(î÷jˆ?ÛfØÀ«:ê?çéöÂ¥�3?×uS/ ?¶a{XÐ ?ï*q^HxÇ?ÂùÚ¸ ?ï¤3œé?ÜãqýÈü?±Å·kP?æ—‡bL?漪š€=È?á‰nUF=?Ô¯Ãbø?çþª(Ìi?炎}sÒZ?¤èš°@?×�¨í=vš?útÊ?ÚAÍéù¿J?¹Ìµ*YwÈ?Ýçë°ø?ì1&€‡Ú?јP¿†_Ò?êîdÅ�?یƳ�"r?ÖhÛÑ©ä€?°qîÕxè?€ 3OÖ´@?Òq�;ÏÁ¢?ïøGvÐjõ?åP"·S›;?ÔIý¨w¢?Þ`¼P2R?Ói-k?í¥žð„ W?ÊŸÁ|F ä?Í�ÇëZx,?Õ¶žrõž?çc)J/Qt?è$¾ìÅ\?ÄÑ ]ë?Ý !¹#’?ås`yŸS?Ä–ÇÔ–ˆ?íP½U_¾ê?å«Õ¬ ?çã1èîé?ç$ÖL¿„?äo ^?¸•N£¶¡à?ÀÝ·ÚøÔ(?ÀWbÙ—€?Ú†0i™–?àuÜ�¦Ö?ÛIîµt v?Îð¡z¿AÈ?¡‹ºó3ð?ÞÑžaš¾ž?Æq"ÍÔˆä?ëÝ„ äŸ?àü‚³2?ëó"Å2Ó?àò£ÆŠPU?Ò “à-™X?Å 5Ð5›Ô?ªÄ‹!à?â¡‘Õ´?îôã÷�X?è^â$qŠ$?ÙB iß"?ÈYη&h?çÄ¥U­µ?ÎM~=ÇÝL?àÄ;CºI?{ò!˜Þ„€?¢™ðááP?Á„ÝÑ�® ?ÓÇŧ_ôR?¼xlq¨€?âxVñÔFP?ïÔÎQ�J?î5ü“6?©*ÖC¾ ?â8 š" u?Û9‘yKpÚ?Ð:¸øª„?ï›Í¸ �u?ßþ^D}vp?× ßaÀÕ˜?ÒÆAçµÆ?ÓàÇ“…¿Ú?ØÉã‡Î¾?Øh?šQ}P?êD³~�O?ìmÄv2ü—?áóK&6^]?ëµø¦®õ?ÎÝERl?ïéaið?çëp„‡?Õm#•Ô¦?Ó9£h©ðþ?ÂT³®3p?ßX{�qp4?Ùxå[€ ?Ã^¦]´©L?ìc¿Y�²?ËoÙÞªë$?Þ‘d"™ê?ä/%õ5óø?¨~{%?°?¼ú ÚíK8?àUëì:Í?”j2Å:À ?æê²’[Ñ?œc7ƉÜà?ßèí˜ÑðB?ìVã€0Î?î×Mƒõâ\?ê¸T¿ØÕ¸?Ò/D¯‘lè?é) ›¬mÌ?³Xb"Ò®?ê¢?=¦?ÅC¤þ­¯Ø”?íAû©«m�?ÚC«~.1ð?ãyz´ˆ'Ç?í+{ ó!?¶î´Ú¦”ø?¿m) ¾Š?�üúi(o€?ìćBXá?ÐAŽ�z‡2?á—œ …x?ìVïÃ?ßæ?ÑN2=çÔ?È ÈI|Lt?è;’µ¦iÆ?ëSÏÞ¬?áïr ?Ý›ê“Á>?êÛ%ƒ+v ?Ñ^‹b…ö?íåç{‡¹?ãЊi¦Å6?Ò6~x¶)T?í+Û§aò?èuîÜ’/?Ál¨ìá(?Óβٜ¶?¾Ì0ˆ%�Ð?æ�‘JB�r?çNHZim©?¤€ø—vž@?ê­˜‰‘Y ?ä,;ô ü¹?�Ät (7 ?ç"Ýg.¢×?è0BÌ@¾E?Ãõp¬¤ø?Õè6žTô?–éžãÅ8 ?·Š'úôÑà?Ü¿¨š°?L?Í�§nÐ'Ô?ÏѺ�e˜?ì ‡af?êÕXM'Þ?è¬Ã^ˈ?ç) vH^7?Ãèõ:ña¸?z%E–Be?âY(ç¦ë?ÙÔ7[ë”?Å9Ã7,>h?×! KBn?짆?ââ\¶?æ¯Ç9§ã?⻫ ÷ ?åÊçÒ&:Y?ïŠ\É[„×?Ïo'0ÞâÐ?âÇÿ—¼­c?ê8sø.?ÉÙÒˆŽº?ÔiJ©]a®?ÓOš°·ö?è@X„/¢?én ~_±8?èçÝ1�q?ç•ÇbÙ’9?â¤|@õbj?âç—ž—z™?àãÞšÔÂö?ë7~—–¿?Ü[�ù0ø?ã Šf­´?Ì£x3 9ô?ë·‡Ý�>?Ð o< ˜?ȉÅÇÿsü?çÿQÕY$?ï¥ÞW(Á?åòeÇ©k?ï˜PX’“?àŽß[C–?ÐUöí,à?ëŠËø š?Í Ô|´4?àu'€pP÷?ÔÒÂD ¼?Ð…Ív02?àïâÔ ² ?иŠxÝòÊ?Ü C qV?ÒÏh˜´‘Ú?Ô±œj)˜Z?Äï.‹��X?Ò˜^êe¶?Ѳ¾ ˆ8?ÏVŸLƒ{0?ªÑN¹ì\P?Û£œ¬…ª?î± &ÈÙf?Ý¿Xù$x?éÁÑy?ºÄ±¦r&è?àaƒ`¤¡]?à ®ûfP?ës^®ËX°?æ¼"DQY?ÃR+¼+Ô?À6æû˜öˆ?è�ÇWè¹a?ègšîîRm?²[ü”ß?åµ*H…¼?àZd\ûº?Óa 4º?ÚÚS‹ì¼?ì£LÉ#?êa,Œ!®_?Ø5ëy’6 ?ªª”–ï.?Í9ÒU„?î'h: U©?íô Ÿ¥›?å=nÀxJZ?íÒ¤^[?åxV…?~ ?ãi»��—ñ?éDTœÙðF?Ó…ŠÆäv>?Âìu:Ëäl?éŽq¬ËÁ ?ÚóŠðàEð?Üolçíì?ïÓÍÙl?Þɼ<ý?Ç[y@ÿ$?ìŽê=¯’]?Þµiu·04?Ö$ˆ0Ï?Ûª”;Û~?ì@.|ͤ?¢°’*#Ð?å¥ð\¸^?ïÅôÔs?ÕÔÚ†5A?é—® §o ?ÍLÁùRûˆ?ë¢îbš™?ÙUƒ’æX?Ý´ÙÅ3ëL?ç‹£ØW˜û?ÜÃÉ̾]?ÓYbŠ@„?ásF¯ô?Á&Á9~ÍÐ?çÏÏJ¸¨?[à€ ?·Î<ŸÑðh?ç¸hi´ý?ÜGeª¢b?Ùgyº<ÿ?ã$ö#vÇÔ?í`èkv?é'¬ »œ³?×ê!e¿Y ?”¤[Η ?Î᳇ßÎÌ?èP`%úM2?êX»gxùü?à‘y\ú|?Ý‚ä—{JÚ?É=§£>¼ ?²sÍÖõ8?ä|Æ©BÎÙ?åÅ[dÖ)?·wÙí9Nh?Ý䈊ó¯0?Ûª‘[�?¸8q&è?Ç‹ÏN¹¼,?ê·ñ?ë5¨±Èªo?ï(Ž1F•$?Ê—�]ä0?çtï‰2–?¤á ³?hÐ?ÐŽ\ˆ9ñú?Å]Š nP?çÇYe¨Å?à±;Y¿â?êt‹&ÙQ ?Í!;#yØ?ßñ8?Üê0P ôØ?×J±±ÔP ?èÍÖMo?ξ%ãÎD?ã÷d2×]?ê}Ìfø¼ç?ÕËÒs€²?ÐÊ3~º?ÃqOX4gÌ?éx¬2¼2¼?ŸY6AðŒà?ÐÞ�°âÀ?Á¡ÏT˜”?ã!.±RÁ½?í¦dvn6?Ù}#PýË’?írG¿ï?⬬‹tT~?Ô�TÉÔ†ì?ÕÄ6ó¯+€?äØ˜z˜ É?¹WZQ· ?ÃÇ]%�œ?—XâÊå à?ÞŒÑC+ô?á>ùo‚TÀ?Ó’�*ª–?ÙòBP|?Ò2˜ò8NŽ?ã8í%vØM?æCœ¶’†-?Àfnä$h0?å•Z+jÊ?ès=yX&?ÖCO§¤P?ÛÄtn|_†?ènÆy¤B?á‡êßq—Ÿ?¡^Oe/Ý�?¶‡GY8?æŠ Áƒ?ã •ãEw ?ïåÜÅm;²?Ç´wð[ä?ãv³%Õs?ÈNÃs>?îñÁ~b+Ü?îÔÙ’<?ì`œ[ŒÏ^?褱èäà?ÒÆìÈ(E?íaýíZæ{?äø8µ�¨Ç?¯1üÞ­çÀ?ÕÿÅ÷ËÈ`?ër0׬©Ä?ì\´¿Â�?Óz’P½?äA ?›¡w?Ò( ï?&´?àÏÕ£¼?Ẍ¨½”ƒ?É~è¶Ã X?È,yÒà?Ýø¡¬£Ú²?Ùèfº ’?Ù,b[ÄÚ?ާ†P¦ç?ÅÝ=W!\?º³ô!£ë0?ìxº‚`6·?çån Ç*W?àÿcÐ ž?Ã^‹Î4 ¸?Ìîžžð(?Þ ôý÷ü?溮ÊzˆE?ì‡�$·¯!?î=��h¬?éЧÿ“(?ÂSi˲h?¶¶- N½€?™ Asˆ˜?àCÄë\ºF?Ó,@2ìÜ?Äè’èÈT?Ò?5-V?Ã*§’Ot?©8+ÐÇ`?ÑG}�@?×�Ü/ßÂ?æ\û7šÆ?Ê…Ý?å|«ºå³?Á ü(´$?íÌ~×p?®‚|¨ª€?ì� Ьí?Ñ×0kk©4?Ì|,®}½D?çý/Õ‘KÄ?æh�u�>?ÎÙ¸Ìû´?ç*4L%�ã?Ëòá î×|?ìHO®ä’Ò?Ô%Y+É ˜?æHRe¢P?èc[.Wä?åƒp%�Â?ÛF{ÒCo?ï³â÷A‘?ã�†$Œp?骊وIo?éè4~±Ž?Ýa9ãgˆ?Ķ2ÊÁËÜ?Ò�œÆ‚†üb^?Ù{|Èv|p?ç`¶w€?Ôï2·>%–?½�Nú-Ø?ãOO‰5íŽ?ÀÉdãzÅ,?áaƒþâ±�?ßåÒºÏ?_#ß’wö?ãé� ·?Ê�Ýà,?Ä2¤´žÅä?æû²#b?Þï~´}^?Ø•�œÁo?Ý�wvkKT?Àþhö\?Ê9êj÷d?á•@¶ „c?½�huCî0?é)UÎV ê?íxÆŠ bÆ?ÑféþË ?éì,«?ávÿ&éG?êþ ¾·3?êx·fšÜt?Åâ«hhBh?àtyw÷5G?ç]: |§?˜xÄ„¦ï ?Ó;özt?Úî…·È�’?Û¤°Zê?ÞŒß4ž?ÝÒÏÜH?ééÅkdH?èA,ÖD·?ä<µc®³ä?ç�®ÿ?Ñ�}IËò?è-†ì"$+?â들`Ä?çSsKmÖb?Óâ¾ñ„?é7ñó¦\?îù)é4‘¶?ÐU�âûþ0?Ážo®ž3€?ÅKVQˆô$?ç gÎ/Ç?˜<„ñm`?ßb¶‚Øß?¿�%YÁ¡¨?å㢼—ÿ„?Êsa“ÄÌ?䮜W¯š?æjƒ—A?áàS¡�¯?å²}§w^?ïdâj‘“?æb•‡!…?Ñ7gÏØÙì?îL1e= ?áÞ®ø\?Ô¹æíò;¤?Çß·&³/h?ï*©oõó?Ç–wÌÞÄ ?ÔÀŒÄ9 ú?á¹t'mÇ?Ô£’ž£@?äëXÜÿC,?ÍUG×;ä?éºÁ?îIOZºÿ?àÍ*Ü!-h?ïdl-|¶*?²U{¹¢P?ãÝ烮¿?è;‹ÕX?éGTÔ2¼)?çëðt…Èó?è�-gvw?ç9PmKQ?éùL.îÝ?½÷3‘ `?ä÷9ºÆmþ?Í`w§ŒÔ?ÒJtÀNì?îr›�ñ{«?°"`ˆžÊ¨?îC&ÆïÒ?éÚzþU?î~sâéa?ëƒ÷~ÙlU?îºØiî´?ë#Y=è>ù?ÜP¶ô å?ï»ÝŒäÈ?꿌$Í%?ÚͲ!ù*?áŠÀÏå?éø\ˆ'�?ê�óþÓµ?êNw· æ?¾ÅK>£Íè?Ò˜ð`ôÈ@?ççûøë†¢?Á\£6ç¡è?ÖhÐÖ3þ?ßècÛh>?ê¿ PZ?ܳøzö?ß´µåÏTj?Íëã¦wÈ€?ÅhÅÊ?€?èR_nÎÏæ?å~]¸Ll?ÝCª óˆâ?ïúzø×"?æŵ‘(Ì?éœ)c.ÈÚ?µtµÍ‰¶À?ìÜ™=¸…?Þ�ÌxA÷ð?Ù\¹Z‰ò$?웓!Q?Ó,ÕËÇ‘F?èµÇS2ˆ´?ïús£W²¦?¯ü�Ï~P?ãqû5¢û?ÚíîTd?Øž�Cx’:?àÂà,|æ?êÖk{¡j?ÑEP÷š?œlã ~l@?ëUšÊƒ¸ç?á°Ða¼Ú?Ûž8þˆR?×ó[—¡ëÀ?Ù�3nB¶?¦Èãt ?ÐÔ`üØ^?ãZ{qÒ?оêè˜?ì�ç*_¬‰?ïv Ð Ê?½kÀb¨?Ê¥7 ‘(?È)Þ®AD?œTö‰Mú@?ª‹JX‡0?ä3Z¤;&®?äm¦Èê5ß?ßj5ÿ5ª?àf;éKÞë?ìRÖ 4?ëÄ£r\ºh?áÿõŒ HÍ?Éä 8~T?éÃ}la<ç?ïÛf:Øä?çÁÝó7÷?àH•<¤?í˜?ÑnÊi?èE77Î?ÓSØJcÔ?èÖÕlóK?ä©H'Áðè?âVZÔãöx?æ¤íÝö?ªð=Tã�?îìH̹Ä?ï›+Y©ö?ÝÌ_fc×¾?θ)]Ž~ ?¦ÆÐ²Q,à?Ó\Ü~Ȇ:?è”xá�¸?éYöoè’ó?êK{ø ¬r?¶�ŽøHØ?Ý ¬™`Cp?Ù§$�¯þ?Ýd"/—@?ìÄ9Ý=d?­F›€?çXÍëIé?Îfµþï¬?îêxÖ;®?ïdØ#K‡?å…Á”¶q6?Ëm$Sò 0?ÌGA¯ÈX?±NŠØ†?½ö�û"^0?åé�Ôð,ì?ß kºV™Þ?¸¨‡’Bð?ÝóÏÿ¥²Š?Üܨt©w&?á>0•6@?¯DqÁ˜Ò�?ëèlÖ:a6?ל�ofx?è €é�%?È‹˜oaˆ?ëg#z&T?ÔÈp=vÆz?ç¹°á”@?ãθg†&?¶òW@ŽQ?爀!Ö?ƳÚ}n¹Ð?ß±WÏ?Õ{¼~ü\ð?¸7ÂZj?Ò±M Á4J?í–Ù“¶«À?¬ZÁ4ÿP ?¿(çPx‡è?ìB¬ôÌ�…?ЉãHc\?íêTäMCR?ê0µ2%h?Òë&M­&¨?îý4 ¥~?Ñhý|Sš?éÁ°ø=¯|?êzíÕE ?¤Mæ)€?ì¾w ‰Ë?Ù­Å„·vX?ç‡q­˜D¤?ßËjèœ)Ö?ÅX— ÄD$?Ç™ìâSxä?¬nÞ¹P€?º¦4LG›Ø?ë\xˆ*”g?³…dÖõ9(?ѼãM³ø’?‡$·ñ?¨ÑÊh#p?é²A¬£ƒÚ?è‘eý¦}x?é€âs��'?íC�9í1Y?Ô¤N�²?ÅnŒ\Í?ä~(lÞÕÕ?á2S5>ã?éeBÈSÌ?ãØ1ŸF]J?í儬­[?�[ Îôà?íèJÅÑ?ã�ÊÊŸ5Á?”¤Ü×€?Ò*Kr]‘ü?ï,qG^cM?åcažì›X?ÀéäñœÂ”?àô}G÷F@?ãUvý*ó?Ÿ±MZ\`?ï“Îv?ÙwÚ~ºÊ?ãÇàå“gñ?æ|mêùÆÞ?êƒ(¶ƒÐ?ë'âªæö*?ÖÄU!?ì®ÈŒ¯©•?•ˆ=gå@`?Ïï§�°ÿì?àbÖü½–/?èõS›='?Í_¥+l?ë�W]„6B?é�¨²¶¬Þ?è`è¤,$˜?âÄ•YxìŒ?YUÁ9,?Ó4Y/š6?êàIèB«²?ê’Jv-Ô?ß&Œ“ËÍ?ìŠI “h?ÓŒ]'ˆ`�?ÚZµõ™£Œ?éÕEùtˆ?ââygu ¸?î“Ý€>y?Û«D½¦]Ø?»®Ø¥Š«à?ÅY õàï´?à¢Ã‚+Î?ïÇæó¬pè?áj‘Ȥa?éí•}ý ?âú»7@?Óú?æV¹³°QÇ?Ý¥ÆH{lx?å :Œ B²?«Ðç;éx`?믘sÒ®?ê�þ±É°s?Ùråž�$?è\ò|5f\?é¾4SY?á‰ÖÍg“ ?ì’ïºyxð?à2š#£b?áÑÎVõ‚g?çß<çC;ç?í›ÛÚömè?éªêeØ?º�Ò|NL¨?»ñœß«x?ÔoØ›ÚwÜ?ŸöžeŸ ?´‹PP 4?ìG–¼®ï?Þ]rŽä¥Ô?ëÉj�Ž¿g?Ðj[e»Ú?ÁÆÝúAãØ?ìnÞüù2W?ÌÔ´0çÕ?êÿ÷UÊ,ú?áÑ�Ø{5ß?å©ÝÈÃz/?ì[`–�Û?Ð?ÞqÆ9=ã?�þŸ‚c`?Ô�ªÂI˜?àFᜒµÇ?ÁD�e�L?ãL=%�ˆ?ÖL`T9Ø?Ú¾Ÿ0’?Ü—Ô©}´?è+ÎIÃ?×Sz%ì~î?Õ«ÇcGMd?Øšé £ð?ÆÎ òßE„?ë\öv¬­?áŵ‰°?Úë¤3«¥¾?ë·SxeQ?Û/0 zxÚ?èŒ$¼/þa?Ê©*¦s¼?àa~ǒ?ãì̇WØ?ŸJiÕµ`@?´Ð}1aò ?ì�ÄF^âß?¡e¶…r·€?×£ÐÛ—yN?â4õõë÷?Ú›e}‹_Ð?ç!/µ¹?ãúˆ«}â?òµ¨]ý@?Ö9lpáã4?ÀáßR€¬?樷Ï?í§¤¦‘X?ÐÅvA?,$?ë0»N ?Ós–e2¦>?îuƒoŽ?Ñ “ª‹fV?§wŽõç|?êÿ?�cÁç?Õ€AÁ�Lò?ãçÙ–ˆÜ?îPÛk½½þ?¼Ø…ˆ!  ?é£jêÝô?µE#¦€B-?£éLÚ<?âW1‹á‚g?ân/ÜÛW?Î䫬)Í4?ʉa}>œ?�elb¸,€?Ô€q(m.–?î�cSYÙŸ?Ü ‹OÁhx?é-¶˜ã¶·?ÓP!¤#.?ïVO&ký±?ï7+,l?èGˆ{¬|¿?»V>ŒÔAØ?ÖR”Œ0Ö?êë$Û`�‰?êŠñ'{ Æ?ì7ÄÚÞ°Æ?ïZÑkÖç?Ç\_ÔXH?È4Å}}±ˆ?°Á½`Qè?Â�™¬ú‘?ÕÈïàyÎ?微ÿ.?´Áäžá?X?à„UUUÖM? HM–ÿ^0?Áà Ft?ãû;wR*?À9ð�FV”?°#ô½þ?°é¦Üuc�?ëG‚±ìº‚?Ó¦7ˤP?²€©gS?Ë åö{O¼?ê16s�Ú?èx~}­S¡?Ë!ت9 ?ãT c¡{m?êëq|tÛ?ÝQEðž¦^?êØÏÅn€W?ÖûíÖöÁ?ÕGÕq¯1ô?©76™ÝÐ?Û0«[c_ì?Ë”úÿ,–„?ºóî;_h?Ùh~éut4?Ó‹¤¬?Þ“D¾!»>?·éÁ¤‘?ÕðòSÕ>X?îÞVæKåE?ëü2-³?áA©(§q§?â ÛÃ$?ìº+—kÄ?ëR ô˜6?â^]e¿?ã3¸ä?Ákšû½nô?ïž>¿äK¼?º¢= à?êÿvŠògJ?êâÎ “á?ì–ãÑ÷ó3?ŸskÀ›2 ?ëY X?åûMj¾ë¦?î!¯ kÜ;?µe ¦Q§È?Ù16ò¬æ\?l¥y&?±ƒ-(‚ ?²þ§ù8Îh?Õ°Ä@+âJ?â�ìÕj¸“?èÁ‚‘]9y?çñ! ¼?ç"¬ªJù&?äK»¼™?ÃRì߸?´èse–¿8?㚬aõQ€?ѹI1ü¯?æ¥hÔ‚)?ÕkŽ)+oÂ?ª�bÛð?æªvŒL-?ïˆÜhÀïÃ?îŽQYKb?è@_ˆMõ?³2º~À?ßAÎ3èú?ë9OcÑÒ?·Œë$צ?è.Þ=Ì¢˜?Š4#%ðè?Ø{( ?í�Ñÿø5W?ë fÂ?èç<‡¨Ày?Û´Ú‘³c²?ç=Ì4Õ?·é~¹|‡ ?µq´’ŠGÀ?㘫Ò^Q?åãLýæ+™?à‘˜7ç?årw©ÂEç?ì¸åtÔ¤’?èÜ5¥ó]…?í¹©ýU4ô? tM0Âö€?è<^q9??âäo‰‡¶i?ËñЍÚp?浂6¾áW?ëÉ{*cÏ?ê&Œ® ’X?ìêožZ*�?èGäƒ/·¿?Å:¬¤?é“÷nàý|?ãÄÍ,��?Ü8Ãò€?ÜdG¥Ü‹>?ác4t'_?Ç/æh¢œð?éë…q)<È?í™]¿ÍÃ?ëÞ™ZüYj?æü¼Š/›?°<ºñ½ÁÐ?œpˆ{]–?Â(§Œ#œ?ßáE;4Í”?Òú!–Y’?ÚÎ_…,4?Ì;c]ù ?Ð)Q=}Ä?ÝPC*ÇãP?ýÓãs?í„UÝ#°õ?ì9Ô�þ?�ÅÓ/? ?ëÚI„±�Ú?éÉc·f?ëug?üæI?Ó§ŸÓ2x˜?ײ¿ÄF¢?ïê€\qðJ?ç‘:nî²Ò?áÙâ�˜µ@?äK2^ˆ Ã?ÖÛð®*,”?É©0Ù³Ì?ÚnÓ¢ÉâÚ?¸ÈKwõÀ?Û@äÕÚ:?è}\(–?Õs·ö.?�™º¢€?è;uÂÈ?î÷ÓˬI4?ï•ù»Î¼?Ò·é% ?¾²ºÓÂ?ìé¢Òd˜Ü?ÉK6Ap˜?±¡ìÁM‘ ?Õ俦 VN?áŠG±ö´?éz�S]¦Î?¢ò¤_Ð?ï¥0áVÑ?Ã<ÐÑËTô?è,ï'GËû?ïù­[?éÎ Ž;–Y?ã­ åè«+?î“}RóÆ?Ù3qnÏþ?¥†y“Ô‰Ð?ÓÖ²¸‡)?ä¾<š—ã?åO†ÏšRY?ëŸåî\+?ì’Pû�å¸?à%kn°àT?ã~µaùŸë?Ù©ý£0r¶?¹WÛ†r?áúáþEM?ØLß¼ã h?Ãôq„Q”?Ð$Þˆ–÷ä?Ô †�¯£Â?îbÙòÐ:+?Æ&È+åÏÜ?Ò}öS�Žä?» ¯Bb À?Óù’­_Þ?²×ä]¦¨8?ĸhB"»?æè d-0?äÕá.ô†õ?åE®2s-?í„ Iÿ?ë+ ª1|C?ïS>ˆ<Ç?ÚÿCÞÇe4?¤ì< @)p?ÌÄòídù€?²¤äÁÊ`?íBkÎòzW?é¾C\@£V?á¿>â[½?ìþ­ì(?áF0:üpá?ÀàÆ<%Él?Ùäí»^U”?èõâ¦�9?èô¼ß ú?Þ‚ ììè¤?ä‰,¯J‰Ç?Ó ]ÛÂ\?ઈ ÕÈ*?éS 5¤l?å½>¾ÛL€?ßcÄ‹A¤?Ò sP?Ú¡2L¥æ?Û4K�›Ìþ?Ï9pƒI2À?×/””¹—?¹$öÚ¨‘8?áãénV±m?ÓÅ¥¨‡M?åP¨êçú?¯Ùi¼§?Þo>8²\?Æ©ã,FÜ?×gm{.“*?ãó:F¡úú?î.]F9Wö?ëça_ïS–?Õ4¿lá,Æ?ßá çû0?鞯äÇ´ó?åÍà1Ï?ÛE—­¢?Þ¾CL}6?gãÖŠz?³ ñ†5á€?Ü;Ò«Ž˜?ë&:¼ã§?äóî5T×4?âhÒY°°?âöªÈŽ›?©7sÃä0?áfçá¶Yì?Ö^�„nL0?ä�{¯-t ?Öî¹O¯ ?�Þšaq?Ù ú??æJ^‚/…?î�/í ?ì4Ëlu?ïÒ}Øb¡?àZ‘ìM?ÜTËÆpô?áD›û· |?¹I1~EÀ?Õìn!ÜÆ?»mZy)Ð?éÅÔßj�?¥µ¸,ç¾Ð?cäÎøÉ,?¢ê|i‘\Ð?Ô|#LØ?ÌÂL®_¹p?â΄y+?­PEB\åð?ÑŽ™:?ȼÙ᯸?á9"¡¥k�?ܳ T*›†?ÑÙÚNÁ¢?çÆš,e Ž?à·úF¿2Ô?)J`þã@?Ì«žþ†?u÷/?Ú²àax?ÀìgKSQÈ?îqW÷sÄ?Ò¼Á™˜?Øa‚¢ªw¾?Ô…½�aYl?ÙÍ  $èº?ä DA #ô?Òæ^< 2?Зæy§0?¥z(þÑ¢p?ÞøË,äTî?î{÷FÌ“S?¿ N÷) ?É@ˆ:Øh?¦ûc;)?³—È•ls€?èi”â)?â(ËP‰ìX?ì “ÇQ¢?Øá^ô Cn?ÛQiþêä*?íµ†ŠšÔ?î­«+&¾ú?Ì ‘%`ü?ìÈŽ!ë?Ý l_­Øt?ä�éBÀ?æB�öÂ)0?éFëhXìŽ?Ü4‡É?Þ›BZ3AŒ?寶Àk¾?Û¸Àï¼?áÙk}ó•�?í.Ë ¬ ?ç¿û&ʹ?ëýñ±F?Ú ŸÐ9?ï»àÝ�Ü?Ãû¸fóô?æ®úô^ þ?ëKz]à '?ìç]çal>?ÚºŠ8˜–¸?±Õ˜Þí=?Ù²†lÒ?ÕCšæ¬ò„?¹¹„Ç3?çI_Õ˜c?ÙøH�Ž·b?êÆvæ¡Áµ?¸†Á½.HX?ØB~ iñ4?è·ÝwªVU?æõh$l€å?ÛîÆxkÜ?–«÷'œ?Ø{l.`84?èQÞ÷pÃ?Ü@LÞȦP?Øû›N9º?Ó„G N$?Ëõå»àì˜?Ì�lUùél?r�{kÿM€?Ç\‘Ô|\?ì…¸Ö±J?Ôtõ)ˆ'¦?×%àv9ª?É,ä¶ó]°?ë3àRùl�?ÐÖOÍ{+¢?踹ˆªä�ŠÞÚ?Á Ï€ô?׆é©Î^?î¿6w7#?Ë©Uʆœ?Ò›COËÄ?©ˆ1Àô³�?è°õ{Ø?ÏìV½bC”?Ø÷0ü»Ú?Û®u¸‘»d?”UWL™i ?Ô;HƒÌdR?á,Ó KéJ?×åc¼W?Õ ‹Ü mð?ìhTv­}í?ÎÕ.»x?ç „h¦” ?¶dǃrp?ß¿H9?éñ}çW?רÚ^?Æ'ÁšX?ØUÕc+²?áWƒ÷\oØ?å[$_�?ÚkÍÝÞP?¨¼è±WWP?åÁô±ø–�?ç€ç×?çf=ž†-~?Äp镲Ø?Ö¦ÃWÅîž?çÐØ(Qáœ?íœ1ï ¹@?Ø¿èü»Î>?®Æ¡„’@`?ʼn²ó1J0?éä/ ¨?ç”˨úØÄ?Ó‹æ¥Ì?×:7^fqn?Û³ô×b¼?¸¨]h†÷?Þ¶‹¹ t?êššÐï¶?ïü±ö?Ø‹èF¯t$?±‹í#ð?ÕvðŸ)È?²(APÈ.˜?ÕpRä“”?ÜåDzÑAà?刃<¾bô?ßO?+`~Š?ј—¡Â?«´pÝ)µ?×gŽdtš?ëM…rx5 ?Žx…ìQáÀ?Õµ?zóä?㥩êzòˆ?âö<þ ñy?ëçº R-Ú?æ#åÊ1i™?æ¨z<ÍÎ\?瑘F†?Ø uªLŸl?Ó0‚�rGJ?É îFd?ÄÄGhÔ?ä_¶ éºÒݽ?åP=ÒúU?Üùp�EÆ?åšðCð4Â?â��¼L: ?Ç_YÑuŸø?ÙþfíWnª?`gê°³?î÷*™V³¬?ÐOÜ$$v?îõ€¬Øþ?Ï{$ P?Í伊ƒç”?Ë{ŒÏÒqÀ?ÁÉ2©ej”?ÕW*Ö‘€?°YZ°Öˆ?Ð ¦Ê?²yù›÷(°?â]Z¤;?ÑäÇø¼ ?áæh|‘?ÑrØ—ú ?¸TÎàäx?ÔÓ‚J 3f?ÎF§ñNb¨?ÌlÁUNè?Àúçßßt`?Ä 4OUy,?âDLnEaY?ßüwÑ@™P?äÚ}<ìy7?ÍA36Û ?é ÞIèc?×:9$µq4?½:ëî��?Îá쎆ä?ÙgƉ¾?Á¢1+à;Œ?îKøË¿?§ü¼K¹àp?Á‡Í÷"”?â¨ÐžqÂ?êp.3…ê¿?í°ÜÍ¿l?éT>#°”?Èè¬òo8?ì(m©t`?Í@R´ÔæÄ?Ô(›RÛÎ?ÄSl¸ŒÎø?¢ˆ)Ò"ÿ@?ç¹ d^¢V?×'¶:3 °?Ûä1)¬¡?Ö¥óÝZ4Î?â­ ¤îÂ?Üpš.ctJ?¢tLixÀ`?íV)ª‚…¨?Éîãÿ‡â´?àŸ±†pÒ$?â{Ç M; ?åñìÍÄÞ?Õ?Ê ¿¹¯g¨?Ìtýnƒ.ô?íë£c¸B@?Å;M;”¶?×÷ûÒ—òâ?ÝDZYáv?áY:+Š˜'?å=êQ$ñ�?¯ÿ¤¨öp?Ï3/±S $?Àà—d¨?Ѥ«c³ó°?´e¦Vp¸?à6`µð%ž?ë5$�Ýø?ÙNîÚà˜?å€w.»oð?ïõÁ©÷Ñ?íÏI^¹^í?ÎÖXN”8?äÀ.ûe«?äß,õÔ;?ÎÞ]¤ƒWÜ?í€ksi.j?Ú„ ú¬z?èÎpÏ}ê[?ª¸úgx`?Ûý6�%u¨?áwr ŠÁu?çdéÑÑ??ïÔ”t…ý?æNfʃyÃ?Õæ �³¸?ÛµÆj½¦?Üš'«Yÿ€?ï¤LÀV¢?ÑaêyÇLÄ?ìó¼ªAFâ?ì‰þ€ü½™?Ñjüáó¯?Ó9k/²?Ù±�ßå?îl�SYEmäâ?ä“·ëŠf?ê¼'ˆ9i?Ä8ù,T=4?ÖØµ§’?ì›ó¶{xy?漯*<­?®|¥1À€?â,w0ó×?ç ƒ¿@cÑ?º—0Ϩ(?Ð|þç2š?ê��i”?ÕaÙûéä?è¡Ý4|Ð/?Ù¿e|ñ€?Ý‹«^²â?ë*ñ?è?ÑA5ï„?çö(­êöy?Ñÿ %eT?Öµ¿I†«ª?Á[¬¾9?Ÿ‚àÕ÷D€?Éç%ÉsX?Ð}*wd@?¸Pyö¡È°?Î#G[bk?¨^©#¥éÀ?‡'èh @?àd"~7?¼ e{GP?°e:Æ­�`?îu¨$Óç^?ä­�¼ ¹?¯™]ùçŽP?â\xf‹0 ?æM¤ËKõX?èˆî}…Œ?ÛöÛšéè?ཨ/?Ë`}sTx?îÚ ÷p?íïö÷ ã ?Àp; §ø�?ì^Mƒ„�?êD¬è³e1?ã³�5zÕ(?èÛÿG3\‘?È ¦àxNÌ?г—[‡”?äP7ûÝ ?‚A‹Šƒ!À?­JÃû´Œà?è·Ä”c}?ç&ÊDŠ@?ÐÙLy'ˆL?ÕÐIU¶?Àíâ€4Çx?åÉ¡§o;¥?ê¾ö±CÞÌ?Á$0²ÒÈ?ìþذ„F‚?ÆYÏn¿|?ê_µ�#?Åê‚g¬?໊\*?ìƒÅ‡ýŒŽ?èÑ9rñ!€?æJÊâ�ÿ?쾟^ì&?¥3Š+�?µÊ/û–W?Àbÿ}l½8?äë“-� £?À’ ƒ;—˜?ß|�BˆÜ?Ýx�u#jv?âº[çܸ?æ¸î†÷�Å?Ì¥Ÿ%4¨?äÕHLìÞ×?êú¯lö¼i?ß7BxÌ?šK͈"€à?Ý6àN‰$8?ëñP×*E?äthŸ‹W??â‰â!`- ?ÉÄ6¿Ïø?¸±xP¾³ ?ÍÔ*¶ÄÜ?ìKÒ²œ^?ã-Yo¼?àùý¬¯7%?×§¦¢4?Y3Ô ø$?Ù´:ÀèJ?åFã´r�C?ì=5G¡ùæ?Ì »D‰]Ü?¾S84ÛÀ?Ò?rÓ˜íp?Õ»n‡h/r?è)ÞböÞ5?ÛIröö£‚?À@.§Ä¨?è!¢Pb²?Ý‚?`8éþÂT?Ø›oTø›H?ư�üf%Ð?梲™E*?åŒN�vc?ìEï•>Z{?ÁÊåc̈?‹Ñ[>ñ�@?¹$ޝÀ{è?º:í€Ô18?è7ÿ«› ¤?Ü!�^)Ä?ìi¡€<èg?ì™ñ”'®?ÐÇöæY‘è?àsq‡�C?ï ‡mÁ?ïs•^¯â?Å«ZÜx@?Ú4�¦²�?ëŸÌ|IAÚ?ä]âÞ¸¢ë?ÃèªÜÃ�0?áôi²cò?ê„cßÑÐ;?çO³Eçˆ/?ꊭɋ¹?q�ƒ#¤Å€?Ûèd|Ëqì?£ó–¡ôa�?ëÁ�‡VÁ?ß焤3’z?Å5ÕÅË™œ?êW�Ôˆ_¤?¨$Ù\ù  ?Ö m•nì?ìIåÿ<(Ä?áÂl¦æi?Øâb\‘Ü?âèÇ‚- ÿ?á¸x໓?È­0t¨?âea?î?ì5)ˆÃê?Ê k‰°?ì �„,'?®¬È�× °?Òûç~To?á¡hÜJÔ ?H™1:?¡XP´Â0?‘ƒ?eæÚ?ÐÉ®ätŽ?Ïžµ4Å À?èÿ:ÎSÜ?î¯ÌÇaä?Ý×Mvf?ÞOö£øZø?ä±HÄV¬Ù?å©ýê”?Ù"KÔS´?àÂÀÔ‡É?Ó‘F a�¶?ãX yz?Î)ðxÜiÄ?ìŸ@û†N=?ír Dz;?È '­Îà?Í2B‡|D?ÚS–¡­³,?Þnµ©ˆ;x?ëj;Þï`Þ?‰àW<š?çÁKN%�?à0aˆž�?Ô- ¼Ø¾º?ä›�+c|?ÜLU¬/Ê?˃ùù[44?Óôzô»@ª?稰7v¬?ݸÙ`” ‚?¤7‰ßÀ?Ç{³Ü†³T?µ‹ùàO�(?âÓ‘y×?Ù£ ä@?äS‡ûù‘„?Æp&YíÐ?ë!ŽƒOw?ã‚Ólx?á„7«Ûÿ?䥹Æ~�?–Òl?çª)�æÅ?æ¶!µ³s!?ãݒ⦩?çäX¡˜?ã‚ZòJô¿?ïÀ§CôÀ?â”.ïä½?µ£”�°(?Âe¹*'ô?ÐÖ—CP¾?͇ÄÈ<ÿ˜?Úí~v+à?å^bšrÎ?ïЯ�NQ}?Ø:ÊË”?Ûë{U¥*2?í³ƒò–Ô?ãƒ;œvË­?  @®6 ?Í+œ±sÄ?è*`Å¿?Úý@:òÞ?Ñ ¯¡ºŸÞ?ÖC2”î%h?àL£¤Á?ã@ÅŸgá?ïo`�ñüU?܃+ä:?Þéd´�êœ?áùºxÕÜ?çÖ”Š�L¯?×k£š¹G¨?ãª}F¬?ã\hIfÁ?ቲ(œ\?áαÝö6D?â!ÇënU#?ÑØð¶¾¨?¿\¹k5ÃÀ?жøË]F?áð¶ZÈ~•?᛿9Öc?ï�è¢~?àˆÈ2?ÝÖè—…Ëì?éÎ"®<�Š?åÊ_=–/?é¿ïKÙÈ?ïk@»N9º?ÚYFZ#×(?ç‚¢+YŒË?íRôuìNŠ?ëò¹àjm?ætSµ‹Ám?î¿P>×ÿ�?ئD$$Y~?Ï¥å�“„?ÊöJLè„?ß“`gN#?åhÈzoæ?æp?A�ù?ëN]ØÖ?æcýDB¿?щؒ­?Ú?⢋FŠ\³?äxJ—ê?ë­J…¶âÄ?ïÁ™éU?êXb!BG¶?¥c3èã~ ?áxþ÷Fz?î"NT�È+?ç=Áä%ñÙ?Ò.*Ð6Ïü?¿”ΦØ/°?äØŒQµÇ?îr$ž·á.?Æ+Ø6Âäl?è>ö’e?ÁU†Ä‘«¤?ÆPÐCç8p?ã`�†=&?¸5¨W$QP?×;°Þ]lš?ÝÃÀ*t?Éø]*^°?ÎM¹,¡¨?�yiO?É’a…¯°?à*{_€•?žÿaÑ�&À?ÌT¹³ �?Öôfm¦ƒb?á >•õñ?åh;‹¶ê£?âá´Ý2b?å9`×TUÆ?žÀçöÀ?åÝÛMÊ9h?ܰڱ °Æ?ä]ì 9?ß³'Ü[Ø?áØþ�ãY?¡éØN™?Ìή`{¤?ëî6‹l?ßrH¸ÂÚL?é¦ á–-?蜭~µU?ç¼;íUÖ?ë"£L2zd?ÆB:5/4?íCÑæ )?ì*Òšñö?Ø-‘kbzX?Ð}¨EÜž?âTöƒ"\B?ì}„#x ?ÝêõUºº"?ì’Øn.,?ìÂÃDÝ›]?Ôˆ 쳈ö?ì‘ÞEþ;Á?ÔŽ;ºXáZ?âQfˆO¿Û?Ú5ëØÏ–?ê5 |pÍ?âúƨ´y²?á*ZŸv#?À8Ì!Ö H?Ð#³ÎL–?î|½?AY(?ɨ™Ç 3Ð?ž#ó¹É?îNO÷8ã?ã6Bޝð?áñ /ÐZ?ÙÆ0j p?îö _ahi?³ Ý=&!°?Ñëç 8ˆ?Û05 8?ÛB�â\X?Öaº(:?ãíÏtS²!?çš¼[ªTg?âbZ‹#�C?¶äHzh?Úí½£X8?·41óÐ?ÝmEkG'T?ä s±_ªä?å ¨S¯FÇ?Ȫ Ç1Ì?Æ…Ÿì$?±j€�?ÚøÕØ�ž?ÝÍù¦>ÔT?Œ©¨-(@?´ö¡ ¢?åÒݹ¦Ü?đȥì÷P?»·¥C|ð¨?³\ÖèǶp?ÄûèÅL?é ôñƒ]?êm¸E¬?á©øòš—?ì¼ÞùÒ†ø?ÎÉ¿XF�þÊ£š?ì5ˆjÅ?å*… ÿ?¶<æ¨^­?¨–Af nÀ?ßüM^J©’?ä§h‘0?åMh­šxß?íoJH¶œt?â·¢5–í?æ´:¤Bf?ã‘Pä�å?µzlŒfâ ?Ãö‰¦p8?Ø/;¯ÿÒè?¦ý¤S€°?ÑøUÖR¦?ßkpë•ߤ?ê?_±k?í5lÜäOþ?¿œ¯£í48?ÁѫЂîx?Ì *ÔÓhÔ?ã`Úm•9?ÄÙh0Cá?ç>ϰMÁ?Ú7?ÔŒ(Îæþ?íûéK²·_?ä/HËo³–?è8®ÐdH²?çŽkÈ$l?ÎÿÅ×x \?èwh7?é v©²âU?ßC)¼Œ?Þ>¸} :?áåËP”é'?éåÕOXù?³÷: {7°?è@?<Ñ1>?æè_ì—Õ?ÜnoÑvbf?çÝ嵈?ÙûÜ@3°?¹ËG¾žR?¦‹ ÜRð?åäܼmWÇ?ê²–óà`?Ó²÷†Çñ›?Ò˜%öŠÙ†?ωÈUÒ?Õ�ÒX¬þ?·².Œ¤2 ?îþ¤IA&D?è^Üv�^A?éȺWšå?éø!¿Ó7?á_Ä«¤{?çœ]°ÂÎQ?ÚÙˆ«¤?Ôt›òÅÍÎ?Áâ WB�?äeiºl?ˉGºƒ•è?ï�Ï7-ò¦?Æ–`œá¬?æªKR_¨²?ÆßôFIŠ$?èâÙ9 âÛ?ËHÚ©5,?áø š°?ÛÀN½m""?×§[j² Ú?鵺W8Ö?Ô@,Œ—T?Ê©–X$?½ù� “Ûè?ä\%qçH?æÊ¸º_ã?ê}––:ø?â³Ä»öþž?èóÇÒ98?ÐI;Ña*?ç¤u{Å Ç?Øy¢q:L?¿a*Átjh?¯gd-P?·J´€?Öñ`ŽMxÂ?æóë­§+Ž?êH¥ÞÅ?Üâk Ø‘$?æ? ÷?®Ì#©ÍT0?ÅÚÕêÜ ?ÖAÚ‹¯Ú?áTXÞ`^4?äfv1ùd?ì ÏØ]G?Фº؃À?¹‰Pýkx˜?Í­‡±[Qd?Âx˜Ê) ?¿ùm ‰p?Æ � ‡Õ ?ÉÕ iÊ’Ð?Íæ½øÏaÜ?×Vêä™´?ã´g+y ?ãËvƒœ�?â‚XéèÑœ?°Ü½~b?â67ùë_?Ù�¾áoc"?ãJ9"ň›?ºÆN¦àýx?¿î¼dÆbØ?ÕO2²B�ú?߃gãBÎ?âƒZœ?9?çóBÞÙý?à3È 3ˆ?åÜXÿ£È›?ë8«"´ìÍ?æÛFZ _o?ÆÃI¦é`H?©&–ºœX?¤®Ëmýã`?ÇS^|ê_Ü?îsç|Š_?íµê‚ÍN?åã¿�Nö[?ç¢ >Ò]?è×,c©�r?ÔI²ÈçðÜ?Ý[±á¶?íÂrã6Sr?Ì•ð :í˜?ÞÅP¥ZN?äbÁ¶í³?Û�(™½„?íE²ŽòË!?áSÇqìH?ØåÍlß!þ?Ø#�±!^€?î­dçE ?é§v¿ /Œ?ãÏ**ç?éǪŠ{¦!?߃);Üâ ?ÂYøLÇÿø?ÔBiÄ4½:?çY°µÙ?é@òƒ'M�?ï†(Wû;?îðØwPO�?¸�{MT0?Œ:¾NAw@?Ë&÷zü?Âo€tsÕÔ?Çî~?7à?ì Úò0y?ÎàI=†d?ï 6WÿfÞ?ìÂÏâ›?Ô½Çà‘B>?ã·Ó¨Í:Ù?»V¨¦¥.À?܉D �?Àð}\ÕP€?ìŸ+í™#?à8ÔFÇôµ?áØ’Aé¯\?Ï×5_F€?î×@òí?ѯqmÌ)¢?é>iÍìYÄ?Áv2‘9?ŠyñÒðÄÀ?¶`·œ€€?áe’èHÝŸ?é/á¸hE?íjFåC?Òû|]Z{$?Ô½™CÃý ?Õ %Ñ”þ?æ�uTWù±?î&ZÊ’<»?êÎßuä§â?ÙhçíJÕ?ãÎôˆEá(?ä‘Ú÷!­Ö?觤Mè00?íž2¾@”—?åì‹¢Z*?Ü& µë~?Õ5RŽ.v?ÛÉ}¢ê8?æ[«²à÷”?àùFëK–Z?È´m7}Ì?ì“¶ÍÛ "?Ô¢¥ôGMž?ã^qªµí?êøšU—÷?ÑP6VA¬?¹:fù`?å÷E¶!?è-[æµÔ?Ýz3¬j?Îá£03›0?á÷s˜t?ê›ûsíýD?Áf÷I¨?§÷x¬fb ?î�B4š^?íh�HyÑ?ÏІij~X?â2 œùû?å4âOiw/?ÖlA½\?Îl‹Üyb¤?ÃnΖžH?îºíþ?•ì?¯d_ôËÁ°?Ù1éd`7H?æ]üMÑŒ©?б&·ö:R?ïW [þ?§‡žŠ,P?äJ´Œ*?Ô{ãÈ/7²?âtÅë$ƒ?äÞñ^ß¶¬?îÐú,· J?Ær–’zx ?Ón8v}š?ÅÞYó@*D?Ê8Ì�’Jð?ÞdjȪÐ?ÄPÚ¾(À?×Ô:›…Æ?±zÃ…²îè?è‘Z> ³Ü?ìŒ�ð÷h¯?À#ç~Kp?ÒŠ2÷9E?ÝÒ�z#‡r?àŠáóÊbb?ÑH0eISÊ?â°ð×öÈN?ë2ßÄÓ )?åÔùÂX?çŒ{yÆ?é"ÖÒó?åÀ¶ÄÌÅ?Ò�")—ã?ÓßMƒo”?á<€ÌÑ:D?æ*O X?åzÄ„!�?ÞÆW«kÄ?îôv©¶»–?ÒbÜûSå¸?ÇH1T:œ?Â�\0Rä?Øõ‘R/[ö?ÔLD›Ss`?èãò'în€?»*Ž¹ÎˆP?Ü6…3: ?糌˜uµÎ?íÖùæô¶¢?â,Åmà?æ¯îEôy?éH¬éàë?ë_±˜t:%?ÊÜG­¤Vd?ÔïºPt"â?î úöÚ’—?Õ)ì»V{x?ÚG¬M0?çµ’o½bË?æ`·ÒO M?ái‡¿Izb?»w8Iì¢P?ãéñ„Öð?ã¯gB×!l?ëF–5À€ÿ?É#aáæH?î@¡%:<¾?Ò&NÎÊ-z?äË�…%|t?çsÄíÆIÇ?äp ‚›h?îï<\`Œ?¸ ÅtÅx?á&¹‡ÔÖ?ê÷0ÁmÈ?ꔥDÒon?í¦Êja½-?ÓF¡?ûÐ ?ÇçG˜çÈÌ?Û°ïî£2?ê/€Å•"·?ëdÃŽP9?Ȉ‹;l_?ãʵý¤v?´àßShè°?Ûs`»’8?ḼhñfL?Ê˺ä?àÞÂÕ ~?ì7 ¢æ ?åeÄÁuL?âÎ\¿Cö,?¾´’1û�X?ê—i É?çSÅr%±?î‚åˆW< ?îýt•Ùƒj?æbþ[3åŽ?Æâ>Q¢°P?æ„î\Ë_?ìG¾ë©VŽ?ÛG‰S—Œ?äXå;Îp?áV}Òc7?ß%8õÈéŒ?ÉVNxäÈ?ça’_�Ï,?æ;³õ¥V?Þ^ËÆùJ’?Ú]Ϭ“n?â´ÊÍ/fm?Ÿ¬† Š`?ÔI§QLP@?àÏ!Nõ?ä@櫾m? Â¾�Ù ? c.F2É@?øm2‡ïp?åÛ*Ô”X?ëÓß¶±}?ÕÖLUF›˜?ªÖ,Àã��?Ûl�¹ß¤ì?êwÔ[�R_?ë<¼²Âå ?íì2}Í]ƒ?Óíx/^Õv?ê6—[/@?ï-"’ŸR¯?çãòl3ì?ÝðC0‡á’?äðäÝ?å^Êhu|”?Óý¤' ˜?Üjn¾ ²?ê¾îfŽó?íîUT®?×´­‰¡dÖ?À¨z®F˜?Ä‘AD= (?ã/kk- ?Á¥§†�˜?ÃØU›R)ñcê?ÐÐ:Hv?ë³on×ð?ÏaÎÉ ­?ßV…ê? è?¸†á«¬�?ž(o^ ¯`?äúË€eºA?Ïz€ìµ°?èá1µ®£A?ê—»«7ñ?ÛH뢶¦r?èÎz<� Ñ?뎜ô4>j?ïOb‘Ì a?bè´�?î±®Ÿ«Ÿ? @±„¡`?ïV¢ à�Þ?éÆšÔ=?¤ƒ><«)?â0ÔX‰d?åGâ†-}ð?îŸÜø(*?Þæ[÷10?èNN,F0?Þç3s3ä?ß„R× È–?çœmʦ…ö?´Úñ³pyà?¦,,ÅEÅ�?è׬ZÞ?ʈy{® ?ÒB4½»ˆ¢?Χûë‹t?¸µ^¿ |X?¼ö¶õ+ ?Ì;Ô-`Px?¨”¬§„¦P?éŠW< K?ÖîCEdÈò?Áè$­ñk„?Ñ$ ´VÏx?îóÛs–ý|?Ç«’ļ¼?°âO[u�x?ß´âVYÛœ?àœ4·M€ç?¬WiTV ?´ÉË%G,0?³µ Zdô?äsm?˜Vl?䈣a›§?æ¸AzM=”?æS¼3ý?æo½£«î??Õøþ”—�¨?ÇZi^ê?¿É{$vsp?Èà‹�Œ|?äsÓ­Úä?Ù2ýyµð?árÙžLe?Á‡á&õÌ?Ûònmœ.¼?åZ¥&ëso?ïÂSÔØ?â™ì”×%?ÐÐØÑÿ¥²?ӡߊã)º?äIíãØe?ÐfezŽ2?ºuZ.¨Ý¨?éŽ(m¸~§?í�‡ìŽó{?äëƒw¼y‘?ÓU§U¦?£ÎOÚ}” ?Óîäž'l:?Ûw¥•y&?âÝ¥—D%\?×d8¤kŒ?Q�»$º?ÕÒ½Cdÿ?ÃóI•Ù?ç­Iïãi?åÏ,å"–£?î–çKÝ<—?×ÏåŠåGˆ?á¦ÿEŒÄs?çÐËãÖr`?îs¨qÿ•?éP Ý~?Ókº´ƒî?è×ÇîØ?ÂB”T…xx? ÞkAÄ?ÕkvD`´À?ê§½é ¦(?ÑõIhLóø?àEºÅÊý6?åp¥V)h“?éªÀˆ!Ä?äÇEPO>?é‡È”DÆa?¤f@`àY ?å|.Ôšy2?ßjcÂðÖÆ?²·�!pu?ã�#/·?áÒ„„{Ã�?èÃÅv>=«?í?ztÄ×?åbz êب?ÆSŸ29ü?ìþRå?ÏûX ØNà?ÓZ�©Rb?Ô!ш{öv?ÅIÕúL6?éTÞ¸©„ß?ÓF‹qb&X?Ü|*·~¿@?ѧe ,´~?é2Üpçõi?ßÞJ«OÈd?ÅoÈdél?Þã™­¸?å:)lîA?߯^çÑ5Ò?Ú|ã_Qé€?êãgx¯÷â?ëNµ!?Õ„?Ãw¡¾Fí˜?áã¯üY%9?Ú…´Oðߢ?Î&�?ë–?×d‰õf?å8ŠÐ†ŠÖ?ÙŠÑ5´?ízÿë/4 ?åñ_5êý?ÓQˆ+³´?ä�êΆš?ÅU•Èf”?埬/>ª4?ÔGµb«AR?ÕöÒ­J ?áÎØH¸õš?äË• ¡¬?ënP)0#?èÛ›œÄh×?䱫Ðш?çÉWÓ£?îß;"î�%?Å̭IJ‚?æÚH2U*?ÖÑê«Ä-?æ{÷ý¸?å“w“,[ï?àt›çH?àš©KÒ9?щ»W2%`?Ôàñ™™”†?ìô?ìú;ohÀ”?ít“Ðê2Ö?í,„#L¶¥?àEäù±5?¨Jêf¶žà?Ó8—o¤¶?Ð3P÷Ÿú²?¿‰ô¼Ê· ?É­ º‚ÓÜ?èºz¶³Nµ?å ´º,?àZïoI?߈¸üéI4?®ô‹\ ÍÀ?ÞÕàÕÙep?Ì?Y‘€?ÐDˆDò?ÄÆ3ˆJ8?äØÏ’Ë%?ê¡3‚Z  ?éçžÑO™.?艹· ñ?â¡Ý/hi?É��JˆG?¦ð`O@ð?اQ�Ûņ?ˆ«¦ˆ€?äò¾R±4?ïH/ù�?Ò—l’¬iž?àöp•6¬a?ÓÝ7òúïê?íç´.ø€Ö?ä} %î–?åe/. ?àûð%@~ò?áþaÑsß­?á��Yì’?ãp½Tz˜?æüČΰ?ŸŒ²â2`?æW7@[ôê?ég{.�&n?Õ¬ñ,nzH?éÊ#§¸{¦?Þ~XžÌT?Ñ?ãOwO?ï*TûP'š?Õ9·UÊ?â¡…ìWÄ?ƺÑkÛ©Ø?ÕîŠjx¶ú?¥Uý?VÕÐ?Àà‹nGxÄ?ÈÂ#3Ê7?èÕ?ÏZK?ÖtY²*?¦ÌÈWÛP0?Ô†3‚²W6?°´ÿKÍ!È?ì¼ÊP}�6?ÓËË º©®?à ‡`k0?Æ««CÌ?é¢*',?± ÎíW»?ÍYÉ÷¦Pp?êˆc¤@˜?àÃ?ÏÒ]&MÑÐ?æ4mb½+þ?Ëj®êÛ|?ÞŒ:‚Áò?êœ\a–�?Ù:�áÊ?ãhMY)ª?‘L%k@?Ä\['gà?åæƒKßü?è!Õx«HÂ?ç£4ÒÅ8‚?ç|€uæ?éhïù¯6 ?Ðlð>Sâ?êPø;±,Í?êEE›UÙ?ÑòoY™än?Ö«ú³ŽÔÐ?ÑTé«xiü?å‘ Øõtm?Ö¸Z‹]Øæ?‚Üê ^?ì<-þ0}?Ô]±?¼æ?à_c5Ø&ª?Ñü}¸ô`V?à*ß~.u;?�JB�W÷`?ÛQ¹ýÖí?Ý3�ç ó?åoñXߟå?º~+­wØx?É»ÎòE¸?´¾Ôï±q?ëWÄà#?ïº7;ˆÃb?ìE¼Éi€†?´ŠDÔ1:H?§Áe`!¸@?îª/(!h?¾\k̺ۀ?ë”!Њÿ¶?ÂÜ|†þt?´›[V Ê@?ȉHR°–?í�ìÉš²Ú?é�LîŒ?å )Sw¦Ø?ãð>âãçÌ?é‡ÉREóº?ãÔÇ3P?ëùice›?ÐÌ’`Î \?À~ÌÖä€?á\ò•Þ^ ?É sþ¥ð?ç•J2óâ?ãÝ^àoÓú?ÞX2²€†Ì?Ù)¦YøÅ2?ÙyºwN?±W>ÊK7à?ã#ˆX�çô?Ò=Õtw¦N?±=ú E0?ãà›?£�?ày?ežz‚?Éz{‚üÅt?åvQ2¾M?éSzšR?ÓæY¹»éN?éƒÔÙø?Û" ÷–?炆‹_Þœ?Î}üÆŽè?ëGþ™‚ ?Æ5A³&8?àÏ ¼u?ÐUí(âÚ?ïZÞ'FåŽ?ÔW™ ˆDR?ìm­K'D.?ÔÌØ÷ëwð?æ÷ó>?Ø.òdé Æ?Ç›±Dô- ?ìhS8!Œ]?ê�}Ð¥X?ã¥IÉÈò?\2sñÌ?ê¯iZ®™??ëBõœ»qœ?ã’Á˜ù|·?áyci2¸?ám”Þ_º»?ìƇÌ´?Í ¦iMKx?’tÏî¾8€?êÍÉc?Í?ìÆtíÙñƒ?Õ Ð\j?ãà¯nñ@?èu;ë�™Å?äwiÛî(/?á8 š³.?Ä`›D"y?æØ{=áš?Û£7‡~TÔ?ïuê+§Zª?ès©ÓbÆ?ÖãßÄb£v?ÝF™§÷O~?¼!‘vzܸ?É~†`Â`?ê¼ñ¶ä;?Ó1Ý/\?ÛT?áïNÍ?Öot,]uf?ëƒdêºRN?½¯´»Ä˜?«’�Áª„�?Ýüi©ƒ*?ųDÿ`·ä?å\k•B‘?Ú.k0j¢?¥a!¼ñp?ïU¥ ƒD?å*á5;?í“GõõèB?î©c³WÌ?ØœI·ãŽ?î^oGhÅ?çÿÍ~ƒ?Åghmê„?ëñâ9ì·æ?Òa ·öñ´?Ò;^Ÿ8ì?犬ô¥â?ãSW›¤5?´½ Ö¹À?ÖüRÍjv?»)¶ƒ>À?àÆP¶ìÉ?ãšwXëbÉ?êZ"U¨+?â²­ô¾?ß#õ!CD?ß„æ†éæ?ÃŒTYsÈÈ?´B5I°?ï‹ó×2Xp?Љ îÈp?ïæàùþó5?áÄwyb=?ὯŠJ †?Ï×<±ŒX?ÔZ²™!�?£�ß„À?ß(I¤’ÈÀ?Ø¡/ÐÛú?;W÷ƒãÔ?Òâ`Žªß ?ì n•ôãþ?í. p±?å<�D‰Òb?Øfª!Bì?äÄãm3;p?º}â”Ø?Ð…¿«9‰r?æ-01Û�'?îë\ïøá?ï–kX¾]?ïýW½�?ìö»îÎ/?åç’å…¹?ï«"œ®?îZì}ŠûH?æÞ7Q›Á¬?³Ã°p„õ¨?·Ãq¬Y¥È?Á†Ñ·Ÿp(?Ûʯ‰æ3Ú?æ�r°zºÎ?æXj©q?Þ#xÉz?¯+A~ûˆÀ?ÆH¡M)˜?à–÷©â#?áݪOª.¥?ÖB+Ä‹â?ákþÂñ¤°?Áz[}ØÚ\?åWȵ Y?ã’9úX?¯úGžŸ$?è¿a±ÅSâ?Ë\ä´Zíœ?è16$¥Î?ë²Ë9 2?Èê1 ?⟪Ã,?åºJýMg?èzoÇ–Å?æ° -7óD?ã¿^©êØ?›4B訃€?åÚ°Jÿ¼Æ?ì”É­<:?êu´Óü¶?s°¦ünR€?—)̱ä@?â`@#Ú�Ä?³çiA@±p?íEéÁÈeË?ãàý_—:j?ã»Û`n?ïþŽ’Ýu‰?â€3´ŸÜp?èyg㥧?ëÖHSý?×SÊZ?’N?œ¾LwžÁ€?ÁØ 5XÐ?ºÚ!çç8@?C˜ëë ”?ÒŠ›ëº? =êÓvw ?ïJÛ_ø¥?ÕP¤¶ü ^?Ø ï\Šxà?Ód•õc–?ØØ¶ê]Ž?޵᪜¿?ÕË)¸õ^ž?âìɉËä>?å»#d#=?ãà…ÐÝj ?ê—·z`2¢?Ù†i§%2ô?á3êƒn?î‹Ûä ?âæ`åýF¾?ç6•à7G/?êñkô-Xz?¹ À<áß?Õ¥©‰�º?Ö‚Ktü¾Ò?ë)¬ÜxLè?À%ÈÆ?Ø?Õ§¸"rÒ?âÔˆW@"Ú?㣂|L?¸}Q/¾¬@?ÃüÖ& x?éGÀåÅÖ?âòÿ}E¤;?çÐöu5Ž.?àÃ$ÿÄ7?â(ün7;?Ò àШqx?Ðc #õè?ÎÉ5òNËÌ?Є`ˆ1ê?ÎÄv±€Ë„?ì’í"6±¹?×±ðÚ?Ê#ã1éä?Ùš³§C;?ÛÒ´�Æd?ÙWJâ‚‚Ô?ÔµR±Ó²?ÞÆo±³)Œ?·¯´O…óè?ï¸x„…h?è…!Ø�þ,?îÓ;�í*?à­ ñßcæ?î)KØKÞŒ?ïC֡а?è\ÿj6I?è®Ê(·0b?à¥GÔÆàG?Уš5ñÊ?Ç ô,=7è?ï(¯Á.o?ȋ̮‹tœ?á5[¥Éak?ÙàfÅ%?í2¹Ý?êÞu-–u?ì „9?Q¡?îÿ5€Õ?ÞK]ež$n?Ð6Àtqû¬?â‰î‡%f?ê¶OÄú›?í&2š’¢Ì?²{r>ƒÍ?㙼�?ÈÕI€ì?íÜWWïÍ?×Î%ê×€ò?ìOõ‡eÓb?áªÀ“í?Ø¥ Ní–?ßeý¥$°?ä~нšfì?è>ÒmŸe?Ü£õµyöê?ßÍh÷]ª^? Õv5$à?¸ÇZ££h?Í �"-¼ ?ㆠ÷h"?é„™ð6,?ÖúUY dÈ?ÑÍ €Æ?ÏÕ¬ÊMP?Ô¢È�¥:?²8‘ÍŠu¸?ÙeÒ’4†?×.Z”'°?ÓW?Çé ?­�íÉÁÐ?°¸gû©ã?êü+Ø<žÂ?Û×û²òÔB?Ü`ÐW>Æ?â®Ë}/Áî?ëш©°QÉ?èÓ–©\’?ÔÑ“ùoö?矿ê Ç?ìÕÖ*e?ìå;HÖ†D?Ù-Y"/€˜?æ¥?c�Æê?ï`‚ÿªÓr?âd½€|›?“Õó‡Và?åúÅOÏÚŠ?Û¡Wy’yð?Ú¾_‰²V8?±D“TûW8?è¢k"˜©w?áð¢çr#µ?é)ÎLÈA?¢ÅŒ:Np?åÁÁó83ä?Ñ ½QJY?€¬ƒ†¶µ?Ø•'þÃ?ïá¨e÷?éA-Ô<6?ç��:"ë6?àaÛÞrß?âD�+&}€?ã53,b+Î?îÙ -ó/~?Æî=Tçø?㔇rÇÝ?Òôë<ºL?åt*’¸¾Ï?Οÿ§ºjŒ?ã³y+ù?½šÃ¨`V¸?Ó…òDÜ ¾?Õu¥êÈÍZ?±ðË2„ ?ã�öÛ¢�?Ô�û½ÚØ?í{×o{½Û?ãEÏáõŸ‡?å9’°Èÿq?ÄÚú ›Ì?ã�ÌhoÀ?À¿¨ $ÆÔ?Íú{dÄéÈ?Ü 9—‡¨?ç<*5”’Ì?Çÿ¶ôp?±!Æo"8?ã |f‘§3?íá ¦êÏ?Ñ·V.±BÈ?ïÝü(¶&?àñf @[`?Úž†Ÿ1DÀ?æ ó~jù?Õ•_Y†?ê5ÞÜÃE?ÞÚ®&¯Ž?Ò«cW>?Тy$en?â·Ý*ûÄÏ?ë]!~Qå?ênŒ”-’?Ù rZ Ô?ê¡+�l?îQ<ó¬À“?æª×·wh?ë—ãÃaÂW?šÔüÁ—¿€?ÕáÚv±<¨?垀hÁ?ëŒd(�‘—?Ü:v±"œ.?Ú¢sé†~?å³å(s™k?ç×�Z‚ˆ*?îïŠþ;þ'?Ù«®/íÕú?Ù ¡€ƒ~Œ?äªoYzƒ ?¶f pѹh?è†U=�T™?Ã:hþß1à?âûv‚ þ?èvŒžx?±r`ä¿°?{Q]}…?¾D¡¶Š?êÑ¿ìxü”?×¥ –%P?Ú¬€¯ïv?èÌk ·ö?Ù,1fØ¡f?­²Ê9#ãÐ?ë1J1Ô×?éR¥QJcl?çFî²Áx“?ë;¢ÚÉ–'?©ÇøFÀ?êÂòüÎr?ãmw¤ ŸO?ÞXÓr£â?UÜf5"j?¹ÃŸ¸rˆ?ëÒ­[?禣N«·|?ÙYDè@x?¯ÖÐx–Ó�?î0 S½@?í(è5EZÕ?Ïq‡¤Òh?ßGu}·!8?à³ët:¯?ÃᣡŽ�ð?í¸6´é?ä]³h>„$?Ú·îï x?å~KŒ–è6?è@ä§a˜h?éuJÔB7?ÎP‚—ìØ?Ó<¯Oÿp?è ?歷þL?µ:òȽGp?Þ[µ>ú—r?Å.#gIÄ?écø-¸M­?äï@?¨[?·AÄ,�Û€?íø5’ø)È?àæ#i1Kí?²ýÛ‹#Ð?êài„bÎ?âÒ¦M¹D–?牜¶L ×?îåRÜ€-1?íᜀÍ[?ï$j0E$ÿ?äTºû#‰[?ÙñÖLyãÎ?Í%žÕ© f?ÆøIÞTl`?ëï§,H?ç~DÄ?Ò•ª„)†º?°•C·j€h?íe  „?é0žHGt$?ë¦FH„/?鲫ÖI·Ÿ?ìÎìn½©?íŠ8ÝMÚ?Ý#!óÙ4?㦗*?º`H¡¦©È?çØOø­0Þ?¨ Ž&fp?ß§³í;‹Ô?êH´ ÷Ì?ã1¶ú #K?àYspÚv÷?�0·]°À?ⵯҿp?æK1ªÜüÝ?ë�í{z`?ïë]p%º?â›F’Û‡?å`¨Ü7•?Ûmþ|)Æ2?â,Pu’:?é1Úø¬÷?ìP3_‰¢“?ÖZwGö¬?ï1$~šä?” ¬`?ä$ÖƒÜ>_?æ†7,þ®÷?ì#$™WÐm?ÑTº³¹f~?¼|h§zá?ê ’ó=ß?™F1ËõR?ä‹Å‚qv?áòCßI?â^ò…±rx?Ð+‡jil?ä·ˆD±J.?î˳DÎ ?Õ׆‚+ïž? cäõ ?¶á ŽYéè?èëW�ÁD?醨“æ?³;®p”K?ÞÔÎÏ †?×$Žö°+ª?ÇÛå—á¤Ü?ïÅûÛÄ«?Õì�aÜkf?“Vë$]û ?ä~(t?ï{)ßþ?Ú M‰o¨?Ò¿ÔɃÄ?ÞåçPø?îð¸|n›‹?é�L9®‰>?çEEþ.”?Ù2ÖYî?½}(`‘z`?éãÕëþJR?ÅŒðŠë?¤à8¤è0?åôa{Wà?î¡E¼9 g?ÑçØÃT®?çü Cbfâ?¨¡÷©Äà?Ùè~®vL?³#üQE�Zœ,?á;n¥:Ï?êE7Œ?áè<´c�?å½ïFŸ½?]Á®ˆ?àš²$œ1ð?ÜÂ'ƒô-¶?ãöß#a¡û?é8<‡Cma?»ŽïwCx?æ]Þä?Ð,x†èÚH?ãª@@±?Ól·§E\?ÓWÕcÁ‚æ?â^�Y‚[K?žj@Äx² ?Õ/Þ1KxÔ?ä� Ï(Õ?Åè‹8Y*ì?ä‘£×ÿí?êØ(4 aV?À#JIi,ô?É"ùU ë(?ît»î6}æ?׊£q9P?Ýß* κ?î ¨þEŸ?ïG” ¯ôg?ÎIISnư?»­‘v‘h?£�öŽP?ë–Sš¦?é½S`î¥ä?ÚànÁå?èspê:2Y?â½àPsz¦?ÊJÂ|£Œ?î%†cÞH”?Úÿþ©ß?íï—§•C1?˜¬Eöa`?å?³-±+?’“•B+{À?Ò¯Îꘀ?ÛÒíÒ_¾?š�¾àzW ?âÀ-#?â33Ÿ³‹ ?î‘/J×?ìPBw&~á?ÀvPï¢p€?ë« ä ®�?é/T"{õ?´k_+_­˜?îæ} m}?àœß¸ô>?ãyåÆ{Ñ~?äôÂÙs׫?è² PÉó ?Õp`(W0?ÖÙ¥íå"?á¯Ø`›?ÖCY¸V€?ÀÛ­i¹Ì(?å·ÐîË?ë"�ÓR?àÄWŒjªZ?à˜ &Ç|º?î7»åóÈA?é-ê8€ Š?ÈšFˆ¸Òx?å¸Î—öÃû?½Õ—ÒÄ[è?ˆùóV¦ŽÀ?é¤jÊAXÙ?ìè.Ƀx?ç!áEVç?´Äoê‹ ?á'ðÆ-M?ÚÎúÿå?çÅÉì× ;?ÅÀ¬”Œ?в›ÃKò?ªÌ —ßé@?ÄE=$Y]4?é*Öè"F_?ÐÒ¡_:’Ö?è`õTÞÀ?ܲíÈV?ëÊÂK´?ãY×Xs0Z?íb?—ÂÔ?£3äê†CÐ?áJfà€x|?ßÖ…Z5Ü?îÂ8*Å;*?ÒõÆR¨‘x?”Äá,Oà?ÕNu$þ•j?ÚÅ ÓXu$?ì}¢^×u?Ë&ˆ»}Ð?ë%ÖwMy ?Ûè¢O 1L?àÒ¾!.Ä?Úr}°¹Ó¨?ê™9¦ö+«?â©C«NR?Lj™¤£`?Á”@ ¸À?ÐÂgÜf?í�N6:F¹?çîš ­ú…?£ÊŠ»?ã;r¦Œï?ïCÄ„Æ`X?èÁò�Ñî ?Û¶9Ò„<ÿG?ê+ñ ˆ?à"dö·ß{?êhtÇ@?ípåzу?ë:ž>BJo?ïf~ã±x?ãpÊ•›r?ï}®ÔyÞî?åÓ»KŸ�?Ûž·t²D?ì ’åk¹—?Úw{Ò?àHUNÌq?Á¾·UYp?âÓp3y?áNQ?×t´‚÷À?îA�¬g®¾?âÕ 4?å4ÛøŠ�?è®À½Õ+?ªÝÉ5ˆ�?¶.©xÜ?à g�ç^O?ïÔ!I ?¼~úÀ¾À?ïÞJkÞç»?ëŒ�)c;>?Þï±hbb¤?î ÆêË?Ù Xêš?ÙõDAì]4?îV×šŽ¡·?Ýüð‡x˜?Í:c(Ãk¸?¶NÇ„bð?ã¹L�(M?êÍ¥LÎh“?è§+B)U.?ß·¾kœH?É7vãžL ?ä¿øÿ#ö?ÊI ’é?äYãë;9Å?³Æó2)TH?æ`œ�MJi?ÝÖt~ ·^?Àx½Š*ô?àà-Á§Žè?áDš šÃ?Òϧ§t?ÑVέ>?Û°F=Ä(?Úü¸ö.Ãî?èâ(Ir?ïØ«ôǨ?âô›f2ï?Ø[3L”?Ó¬î‹a}@?ë ²1Oë�?æÅZRôp?²,—ƒ›ƒ ?ë#`þø�£?½²ÒîÑè?Àªã� T?Þn¨“ ?ê95y�Š?°éð°gè?ëªO*“–?çàŸÏ3Yi?Ûˆ W�È?ßv«Å u,?¿°7:°t?âaþAø½?Ø{©.cè?ê:Å´wq?Üo1DÉ£?àSñç_µH?ä5?``Üq?ʾ®ši¿¨?Õ±ªå'Œ?í£K›A¬?Ô ‰°>?á+ûî'¥}?¾¶|•\P?çÑë�ãúH?ëµ áb ?Ú’Tä­ãþ?Щg“Tþ¶?à“1Û«?ì| ‚½´B?âŠpý5Ž%?ÛÏ£ŠÅý`?à7 «Ù?ã|u3Ú»?à(ÂBË+?ª¼¬ÅÈ€?Ò£«šz?àý&:sÕò?ç`o¯™Òˆ?ê‚§5Þßj?îkÜÕ[Þ?ï�Šê£78?în¨³&¤?ÜþêgìF?ߣ>ÜLÖN?Ô\�w°Ô?ÉÉ^tÏ ?îÆÒvµß?ã4�ÉûSo?ËWŠ)t?á�¤;± ?íÁ)øª” ?Þ‘ddUü?²UYÛÏ£`?à¢kø½Î?êO´‹8áÀ?¦RÀ¶0?Òž]ݨ&P?‹)@ÕØ@?èäŽ`Îw?Þ‹Á¯}”?âÚÞÀs ·?àÅ�°%†²?Ûöêj­`d?åѳh»‰?îØ)Á½y?â˜Gió(`?Úb,ÄŒ=æ?«Ô½w-�à?Õ­Yø—ÀH?¡:sÚí�?àØÚç9� ?ᜟ¦`]?é­ {^?ç­ý ›?Á¤ÄaÇ?êÌœ’´„ü?Ñ—Cî¨ò?šž@Eä?ïQ¦9Næ?âŠ@â¾?Ñ€¨ÐÆá¼?îáë\É?á¼Ñ¤¹äR?Çår.bŸ˜?êʰdÞž?ÝÞHÀ"?×r.ñåÐ?éJå¾^Ï?ââGù“Þ?ÓH¾Óª¬?ÀsPÙYsX?ÕÏlðÿ]?àƒâ/“´j?àÛz@Šà?æÿ9âHd?»1³Æ > ?åÿe¤Ew;?ÛÀú_$?Û›šõÀô?Ý,&kñ?ä»)ô¢Ö??âd݇Hôr?ërÑË =?íx.Bò° ?æ,‘Ÿ]L?¶§IØÿ°?ßÀ‚|aeˆ?Ä–¯ºÏ7?ºåt»ðå?á!Ù¶Ü?ì #ÎgÂB?î5ž0”6?Ên�¥Ý–h?‡˜7ÜÞÀ?ݘ–_1 ?ïšxÛ®?ßë†É€?éMÊ3¹5?ؤ·ìL?ßh@ –¤?Êz�÷ç4?þOžŒ?ß[îç"?ìÁ¤C·’?îeÀ£â  ?àPÊU�Ú?绳õH~Ö?ìt2b&’?ß'l\Š˜?ÓâÀ£vH?ÞÓ‘‰Á)�?è÷cÞ.ä2?Ê�6,- ?à8­JÈ?êê;8' ”?èöÒ„K“?­X,4YÉP?ºUœg¾¿(?Ü•š72³ ?àÉÆñM?Ñ�ZW´?Ä×V훕¬?퇥PL?äf1<ò…?Ž0üã¦u€?ê�·BHȦ?´ÄÑØ?ÞÐ�ÓÀjv?Û†ù‹ì?á'!4¼¯W?ï~o¿ÛWŒ?ãW _šbr?íÆ¤MÁÀ4?ïÑê‡KŠé?Àxô,%í ?Ü2 v(?åjÁ7Í œ?Ú=Ydl?íÚ§Ü9ª?Ú´PÖqYÔ?½A­¯§ø?ÒJé9׎?î.Ìë›iN?Û=vÊ–R?¹å¥™å�?ï/ñÇȲ?Þ¶úŽXGn?æa =[É„?É„M²?ä|Àä_‘Q?âš\¨5° ?ßÓÏÍ#U‚?Ö’5ȸ?ëöÓifœ?Í;Ž�šà?½l^Ú,Îð?烈i…ø ?Á}·ÃœüÔ?â ı`¾?ïù 5õL|?ã´½Ý2ö¯?à+(ð?ãr�X¾/2?åz‹?¹Ÿ?ì<£AüZ?åàd©j?å¥Tº±D˜?êšÑT¡–ý?ï |–Ö-?îb'õm?à8Ä––�9?¡/`Ê~ôp?àLѨÝ?×u½ÌϘšk?ª�›é?´ ?ãEp?¥^?Э9e Ó*?á“F¦–«?ÖеQÒ?ë¤G Û‰X?ähFGwõ^?í!“Ãé?ÝK·Ú‹Ô¢?Í!å»4t?â&ç#¢mK?Ì©òÝNŠd?ÛÕÅÉ?D?ãÝÞi÷ç?ä/ âx« ?Ó Ö%è?Õ$}h-òÒ?ࡱ «2?èõ�e-Ë�?ÁtêŒíà�?ìÿÎÙ±¥?å=óã§œ?ä|ÿu 6™?áùÈ)bV?ÙP�çÄ?ï§<ä@-L?êüç>;Z¤î?…@1€‹È?ÑH”É]è?ây’À�T?í CeÐ&?Ы™S‰Jj?鲓0qØÜ?ª‚’ÎdÂð?ê¼nQµ�‹?â{ÞQ4¤?å5ðÜ«ƒó?ã5Y~^Z ?ÒG‡ Øé¶?ìDb¶›­?Û†‡hP?í~0Ò�e?Úé}¼H?í”l°§)?߃õfš~?Ô÷ ¦Õ˜Ö?çøÓèé ô?àÙ¹œ6 ’?ë6‚¶P??Ü€�²m ?äÓ¿ Åx?Ð^�–ÑÒH?ÆÍAyˆ¹ä?ÍCS¥úÎ?è¹Dñ?ë /NS„B?Îû1-ÇX?Ù D<3Ð?ïÖ‡Õ65–?Û±`÷‚À´?îÙK.ë&v?åã­á©èƒ?ÓÐkSÇ8r?±¨W‰‚p?àÞŽO ŒŸ?ë(j9PF?Ù%ø4-I°?ÐýK·Š?ê&H.‚,Ú?à>…H ñ¬?ìûÄU!d?ã ÖšøX?æ‘IÛ¥éƒ?Ñ–Î:Çn?ØàwÓ°C ?æ÷Z‹Sšq?Øßq%P‚ ?î›îÒ”¤?ë¢^¹ër?Ð[1êÀš?Ä$Ñ9ÉÏø?à »'.s?Ø®:ød¦h?ì¢õ¬v°x?î¾{’â+F?Òƒ¨Ür6€?Ò  =}%ª?á¹v-³“Œ?Ú¸?•´{Ð?í{ QèØ?î¢~Vî†!?í…»+Ë)Q?èÙu€y/?¶‡5 ´ ?ì¯P î(Í?¤çXXW?íðl×ñÐ}?’nu¶€ð`?»ò¬À¾?íŒõ®Øe??²a÷êdB¸?áÙX¥?«2¾-I¤?ãP„Î �Œ?Ôà'^Zù?Ì"~ŸÝâT?íÞ`µ1™$?Ô"Åuî°?è1Âd]¤?~b³Iz‡€?èƒ5×`¸›?ÒNú¥+ÿÆ?ÛŸ+ïðèT?Ã륂íMÜ?¸¸´ƒ ?ä…„yÃS?Ñ5Ý¿áÄ?Åôذ˜?í€Â|š?ÜšYz!„”?ÌGOÏÔ®?ÝÚ¤ùí'N?à}}:õ G?è¼Í@Ç?ãªnaM¿?ÐæÉwR?ÖÌ¥ŽøóÄ?Ý~„Àî#¦?Þå¢è”HV?ÈW±¹™°?Ó”IfÉX?ã‹Us¹‡Ô?éy~©Ùƒ?Õ´Žöûè?ʯÄÏ{ü?ë-«žd?ê¡Ì⤎¨?丞Ü/Ø?á�;lŒÎ3?ãzÚû°Â?áQ«qjŽš?à«‚ ›£?âWÎÉ»ÂO?ìÊEQ€¦ ?ìýð§1?ÒýrEÈaŽ?ÁjWÚr(?èEª:`›¾?àÆÂhß +?èrŠv+¤?ë’Ù$æÎ�?‰jP‘x›€?æZ“™‡�?ÞПÝh¢?Ͳ! èd?äu µ?í ÕÀ[H?ïò«ÃôV�? ™p–´À?è`‹8Ãã—?èà«*”­_?×ÖëÂnb€?é�€±?Y?î´–üÀÿÍ?ï§?Ñ ?¾ïïaziø?ëÒiÞì?Î÷b�5¸?Ô#QK4?Ó’ <¢~?ìm¢¦¿ ß?Öd )É0?Ýäöyƒ^?ìâùVû&:?Þîš=ñ’?ÒÍ’Fæ?Îl“Žüï¤?Ò㻊š|–?å±y�*’È?¼žÄz«€?¹v™RïQ¨?Ö‡§téîH?àëÀRí›?Õt ‘É´?ÕÒ ÖL^?å5u‰hçå?éNCq‰ë?ÕEzÛŸf?çbFò8›Ž?èFòK v?ëô!]]F?Óær¦Ó*?º{b py?íu'ôœ¿‹?˜ÿŒÔlé?ÚÔÝŽ8‹0?ÌÔ"ž–m?ä×cçmå?·êС<p?ÈêhŒ÷?êÖä!áæ?âÙÏ¢?ëwy[ðÂÍ?â´“u Vô?Ó•_Tˆ?Ü2õÚ?âíÝ2Âõ?ß}qò"=V?Ø *Ô8?ÜLXä?ÉWù°?èašù°ÿC?ÀA'ëOà?×e0®™.?éÊèxS&?í®é%T±@?í2Œø¾Q?ï±–"B?Þ݇c«§H?äKx2f˜?å b!‘æ÷?Õ cgkb,?àÕ×!ãe?Ó/•R"�Ü?ííu°ˆ?Þ<xçî?ë[¨ò2g??à-\#>˜õ?­h–�À?Óí��¢ð?×Ù#~[(?ì_En ¿.?è ´¦›Ã?¥Å4ãû@?ºqSmçò?Íò °1?å28ÉW …?ÇÔä#£¬?êð¨ŒKµï?ßÏ`žK˜ì?ß{™Nnp$?Á÷ÀŒ# ?Ö¶KyD?ë"'HD‹(?¨Ì’Hi#`?áÜe £³ ?ÝIÒ¢Dx?ì–Ê“—Hö?ãm—×_1~?Ì}]¦b|?ê¼ÐÔ•Ÿ?èøy¡¡?ä(]Jw€ ?æQ6™…?ÎcÒãÄ?äÒ?¸_—-?ïæâL�'?鉯ÌÍl?ë‚@L J´?ç}SY"’G?ïy¨#?ï¾£“é½?êd1Í|?ªüÙMR‡ ?ä‡õ‰> Ö?çÊVÆ&?ë›*êdΑ?ÔVym?ÒËò z`?ÔbQVŽ”>?îhƒ¢ Œà? Y–=Ç3@?�&ë'D@?àr°OJÄh?隇¤¸óñ?¯â²îXÜP?ëÍ_Y¢�?Ïà^‚¼¯Ø?æ Ó/¿-p?ÝdñJz>È?ØR[JÌÇ`?áö¯ÀV ?Òp.„“õŽ?ïÖ¾QÕߪ?®` ²Uº�?Ý>�S)<?¿å vÚ?í ?¼Ê"¤?ëYœ�]eÙ?²u)v¨?ê÷g@ 1?Ó—ñ:G ?´©—Gôx8?êÒ5~6'?¾zIF¡‹X?èUt?½¿i?íµöv‚:ˆ?ÛÛ�|x?®®Á}�ÿ ?ּ؀ x?éàˆ.–]?ë•Ký2?êÞû3Šäþ?êîYØ*«?ëÃÓü„?Æü�ÖÒ?Ô± Ìjnð?—_£CM €?ÃJƒ}ò#,?༫Âôñ?äå2FJf?â¸ÿçíî”?ïa‡ËçI?¢6�h+�?çì�±Ô»?¢ýÇQ"’?çÍ•0T^u?î'|‡JÂ7?ê‡âØ$`?ž±Œæ/?éMÙ¢Êq?–ßѬ$±€?îĽ#nY¥?ìrD Ô¦?èN Àk&?ᥣI{ ‡?ÀXì_Uj?ÊÛ‡z³ÒÈ?â•Çeÿµê?Œ/JÕ4$?ê~šy¡?í2V28­?ë]{ªo}|?ëâ'ä;¬ó?Å.ޤÞaÈ?ìÙqµ±)ž?é¸â¶§ºã?âÅÝì–¹í?éä¯pD+&?ã`LËéV?Ùܬ'˜G„?ËWb÷¿ýd?áµ1„�u?à KTÍ,?阑:ÕÎ?Ñ9·ã�=è?æµ±§õ­ý?ÝËIzÙã0?âdöt#Ü?ä%œÙ\J ?×Ý]¬{b?ÚeÕ´DB?ëµ°‹i@U?ä bõ«q?îš#Š€�?ãAšÓärì?·ë4@ë@°?Ò:ª”Š?І³?{â?ä1R»Ácà?ÔàÄÙ¡ýF?Ù�€*¯åª?åmeðlè?¾›}ŒP?Ðc“ô$¶Ø?â™õ,Å?ÞrÕ¹jm`?áL½Z¯Ó?Ð_ƒbÛ-Ž?çE» Jƒ?ÈýØÍÈ¡ ?àl=â¦ÖÂ?âæ÷O„«æ?»_©Zöi@?ĵöìŠí(?Û�²U—(?‚–DJʧÀ?ý˜/RX¤?êäˆ<ýæ‹?ÖYaŠÉ5À?èÛõ…‹ÇN?‡úìþ{¬@?âðÁú»6±?åûh•ü)?îh¾|û8?åtZT¨2?ÇI£¶&¿h?áÂÄÅC¿?äLõGz­?꿳ù×E?é¯ö¬`J?àJšE„ô?ÍÀûÇë»NÓçh?ߤ(­:î?ÎZRZQ>¬?° QÖçñP?ã«—¼`5Š?êŽ{éõ?äÕ ;d?Ô^ÃRè?íòVä¹ö?ëóñ (0É?Õû9sÛ:”?Õ ÄÃK†?è”Òˆ�?êüÿ­³)Ä?ç‡ÜùÀwY?ÔÕ#<�:x?áŒ�Š:?èZÖKr ¾?¶†=*U—h?é2[Æ–?îr)¯¥ñý?ê$ö C0?áL$‹Ž{r?ÂJŒ:Š?¥3)µÐ?á^ÀËÓ?²ì—»¢dø?% Ñ�€?×Ç—ó0n?áCꋤ?î*Ê]c©¹?Ï@+XÚlÄ?æ¿—CŸ3�?᜜oFëæ?á'è{Íò?Óè’½‡ÇT?ÙäªüËh&?Óß©î*€?À?ÂCÅØ?áÆAf}6x?Ô}R„›­?äs'¤%Gx?Ú¤5`®×Þ?çªSW­øG?ÌQëÖ?Îuíx?å›_LewÄ?æ”�þ¶fT?ˆ TzÈ9À?Àdr˜¨à?蟂øþÅ?ê *õaÈ?Ñ^Ò…ÓÆ?îœ ñ�žZ?åÌã+M?ÐvmðGè?ßÀ=Zf)â?Ýà.DI»–?¡Fê�îk�?ÙYˆó¹ò(?âþ¯1—?Ü¢.Þ) ?àt ¿“�?’÷†Dˆà?ï{¬+�!í?À5ë·J§¼?çzhÅW?ǘÍÏ?>ø?Ë›2bé§À?îÁ4‹sâ?望†3a½?Þ[Š|¹ÝÆ?å�÷D[ØŽ?êÊ\þG”!?äʼ-3?åA Û_q‹?éÞfûÄt ?åo&¥6m‡?µ´…U¨?×Eø½§]*?Ò‚ÜftbT?ë9›¯)Ø?Ô��] “?èuëÚö2ÿ?àâߺkiN?êvWðôo?ä}ɶÃÈú?ßÈN¶qáp?ÈŠ mB"?”—G¹kôÀ?Û�Û¹›:?¯Tx‰›Ì`?ÒšœÀ¸ÏÄ?ßÛ›Ì[.?Ü…Bmx€ ?È^=JFk¬?Á³ûṵ́?íîÌ¢Ûl‘?Õ-µYå¸?éFSpé,?áH� µ£?êM[ZrØh?ÓÚ{8ƒº?ÙŒJ8>‚n?é1Î ›Ì;?ÚTþ§L}?ælÉ,‚l?ÚëâüØšº?ÛC…p•ó4?Ã_6γœ?ê|’°c^´?¼æG9nÊH?áDa�C€ ?ï0DŒ÷è?¬­Ù•¾ à?ãšÊ_nn™?Ù0IØIº$?áø=€6ÊÊ?ïÜ£¾þf?ѽF:†?¯ G;" ?î!$VCÓ?á ï<¶6?ã”¶ìL?Ü#ì�Ú?�b4TlÇÀ?¿É)R”DÐ?ïÉ÷µ¢×v?Éx²Vø"à?éU°qÏ/?¹ ,è?âD„Ú¯ä?Íèq.›Ü? ¯:<]lp?áíØˆ3�ÿ?Å£R…È;¬?œ—# ?äv� *4?àYÊT„ï!?çt¼ì‹Á?å”Á¤1c?él¡z•©¸?îû™èÀ?½u¡‡è�?ãž"†ò“?ÝìIÏ®¾?î õâ�Ý:?Ì!2“UË?ê”R`Òøº?ÖYZ 0N?äÄhÒC+#?ìÓ�—ÒŸ„?°©nƒ¯‹(?î¬ …Vy?Ò$ÓaN3?ÒÇœéV†J?æõ*°?سУ#2*?âÛ›!é›J?í¢­iê?ìyipñP?Ûιì‰j8?ç.Æ*°?ÔÍѧgÜd?ë#¾�À¯?Òñ"¿¦ x?šLÌ<¿k?ä¢Ëä³?Þ†M5�d?à”ÑÖÈÊ?ÄBͼ»?áÑ”û<'?Î(hÎ�?àžþ…ÎŒ?ÔUfñž?ìÄY$o ?©cþ$dð?Ž^ß%êÀ?¹òã³ÍOp?ä‹]Ü]�?îÒºvè¯|?Ì»†Èò;˜?í¦ìÔó†í?â  ëï:?ת.éÈyj?íw{dû-Ý?å ÝÞ——m?ÇØt1To˜?°‹pÐÊ�(?êî GFsi?º®à„¸ð?æU:?ªÍ?ºÍ�ö]ÿP?ÕIÿ’�¾Z?á”öBþ�?á“ÏñÎ-?ÜŒýÂô¶î?áCÌ L¥m?ç1]£+ão?ã\GÛ�V?î Bœ2?Ü1õÚ*?Ñ t!Æ?Ú�0™f?îžeãëéì?Ñ鈸i@®?îçØBDøÈ?Ë�*0aÑ´?áŽõt°)?ë… 3ëW ?ŸP°÷€ ?Þ@0ëð˜?Ñ”k€�B?⮎¡Müú?æZò4ëkä?Ã@ž#p?ã¼¥Ül !?ª¥bmšzp?×ñÞG�H?ágbôÞÙ?ÙKoP\‹Ò?ä úâ,(?äS±?x×3?êl#rØ„1?§•&ËŒ&ð?Ñ3ë/x>T?âR•˜vÒ?âWo€±ì3?å‹wÁ¿‚?ÜÙ€“ºâH?ë"îQZÙr?ç÷XSê^Ù?–œ—`?ä?ÚYƈF?îÉ]g«{w?éEI–t„?éäDKAN?Í/žîIMx?êýìd¬×F?ߒ¸ÇS?éMqÞb«�?åCþNcÚŠ?ê«~¢ü¬?åݵú±�?ÈçÞrØ\?åàÆ–oLã?êmú* �?äf‰ÚÂåw?á3z£lä8?×N·š¤OV?á[nYy2“?ÒGÝ\%æ?çHïÞÑj?ܢϚŽ„?Ø>ˆGåð?ì1Mªø ?ÏŽ4œ~0?èm³ó&K?Û<Ÿ¶Š?Þ®P-£Î?îìÝ¢øè‚?ÓŽyüy`?©ÿÉ�µo°?Ü�7©Ïd?Ã*ÈñTx?À’]ˆ� ?ÔZ¥¬éÐ?à;ƒ†®ÿ?ÐR¢¿Ižd?¹,ÿC¯â¸?¼Î¨óQØ?ìqà¦�?ꦤõ¦€Ó?ç<¼@%—?ãõ#„rð@Ú`?·§A-Ö?Ü4ð„wp†?ؘ}àq˜?è‚ ŠÉûÙ?ßCÁø¬ãè?ÌÖ§Nà¸?âádëe‘“?ï¶_ÐAë?Æíx%êŠT?äbˆ‚Í?Þï6,2�À?§7½�?ÆÉ¬-Üè0?܃m®%&º?á΄}XÇ÷?á3p"§ã?ÒN€ÎrÏ.?ÅW–µ«—´?ÆÕWJD¤?í®¶+Y+?ØîHe/D?¿í|øtcX?Ï7ÒáêФ?ì˜AæHš,?i†õöéÁ?¸¹§YM`?æNb€~[?ÌâÊ óuÌ?áÖ“µ`?˜’Šõ)Ÿ ?ãŸ�¾÷è?ï“™ï˜N¿?à{<в ?ÁÇ5`||?Á9”çÏþÌ?Ò,{\®ä?¡ °ø–?í]³L�0‚?裄„Å™?ÐV'(q€2?Ë^ßJNØ?ÐåOoAáÊ?îÌæ,ÖŒé?×¢ÕìŒ6 ?ß‘vMceì?ìgzq·›?ÎO §f§Œ?è)†bôýi?å_À€0E?ä¹~[¹?ã{�–y™¹?Æ0?üÏ�°?Èïh˜yL?Ìv×!΂(?ÀÜwê(±Ð?±~,He ?é«b'm?訕ö7?º[5í…x?Ô$<_ Yv?àUTC»j?áÈÍfeŠ?â+{>;€L?¦}» svP?Õ=T ®L?Óñ¶±£ø?¼ÉxªŸõð?ê‡V¦´ &?ǬŠYOP?Ùfùfo®ž?Þ‰Q°³¹¢?êÐÇSn?©´sqí}�?À• F/Z8?Á±›à1?4?¼ßÅãÄŽ€?ìU-ù'E§?愳@ñS?ëÐfX/!ß?à;ñÖ—�?ÜM àÉ�?å¢Ö{®;º?æ]È=ß¶?î°\å·?éù€áLd?çÌë%WM?Ä*…'‚L?á5H©Çº?·Ê÷·\Ñ8?ÜCuÕÃ{0?ÜP ðN¬L?å �”î5n?æ–x‹zè?蜋M}¯?ÖsD,™Ð?ÄŽ<±/V0?æ_GîÌIx?î’qx=H?èM¶ï²¦?Ë蜅ßl?ÙÄ··à?ÙŸT_—vÒ?¦fLJèà?ç¿B;–8¼?Òg¨\î9j?à³Èh¾¥¨?Ñ”ërêV?ç'ˆæ-7Ý?ë$9 jñ—?Ñ‹åF4ܰ?àY*d‚wÆ?ï&’©ð·?éò"ÞùLP?êïLxRË>?àýYò,a­?ãb~ê?î‘÷N:&?êÎ:=ƒJ?ììW�xSk?¡^xõÎn`?éOÿ–Í?ëÂö†‹?ÛqÇk¤CB?îG4.¾?ëè:oJßÂ?ËŒlÒ³>?èAJù­ó?îО¡*'?»c¶˜hË`?áx'`ð×@?Ñìì¥ Œ?ä{â¬ÕО?æ[\ 9'Ë?ÂÓù�TF\?â7ÈN#•0?Ó¢ ¹¤î?èÖrߒй?ååùâp¾?ãÕD1š?çd€‘]ó?à(ïìI‹?ãj<¦‹+Ï?áZY”`t8?ì«& ¦×Ï?ç.Ž”Q:ã?Õö¸"‰£¦?ç^“Ml£\?ç²Lë¯i’?êÖ‡ƒrÆ)?Ò>›ö?ÞÁ…²1¨H?ä l¹a?Î {na¨?¼}«Ižp?äa;…Sy+?ê”D/Ü?í 7ò?uÃ?íDÿ„3‚%?ïUŸ…¹~\?áõ%Qqr?â5û#1x?ÕµaÛ¬ÝÚ?Êàn@ŒÓ ?Û�êæ?èlFŒÔ;?åIÍ¡.æ?Ýu÷�ˆA”?Ð Úæ/ò’?Ý &/–J?ѯ¬ œ0?é/ñ�[?çÌÚCL?îÈ5@M‹Ÿ?ÛkG2LÌ?Ü\æz³ @?ëNJhîe’?æ�üJž9Ö?°×8ÙºP¸?ãÅóoÙÞ›?ÒÄŠSGÉ?®ÓåÏúÛÐ?à 9 h†®?»Œ€KæÉø?ìïMR>ƒ?z“â ô€?àTFœÏ¯?é(,°?áü‘lŽÎ?Ø5hEµ�ø?å²zö‡`?îšÊ"æ$ý?çÞ`¤ÙÌ?²f†,QP?âÿ,ʵ(ü?ä¦ËŒÇÚ ?ìÕKFê?±½“=ÿ‚È?ã�í¤|€f? ý’­¶Ì?ê�WµÉ?ã¬øë-?â“ $Lö¡?è=~¬U'?Ò“jÊãÂP?ê̺Štg?ß+Y팔?°¼VM׉à?Ù¨ýbʪ?Á*~w‹K¤?âuïTÀ[!?èÌs™ø/(?æÑÏ(ìÕ–?ݤ\ȼ�z?ëÊ…“Ã]9?ïSe2o`ô?º9U­0M¨?ÛÞÝŠLl?ÚÙ,,M¥ê?ãrÈhª¨?ȵ}·|?Ï�kÞÃHx?ä;²ÿz?ë^–»¥?ïWÕü0ó™?¥[c0°?Ð{dˆLúT?äUþ$G‚é?×jåQ¾Á¨?äƒÛQî�ž?¾Âæ-õ70?ÚË4æH˜?Â@¢¨nø?Ò ”·! T?â¦#²¿÷t?ì±ócxðÍ?çDZê'ׯ?ß½…þ™ºØ?è6"ãË\¿?â8”yVU ?âïæéŠÝ?ã ŽqâOÓ?ÄʄꞼ?Ëï3¸H¼?èÂd·™'ò?ç®VÓ‚”?èšiƒÙ«?ÝC¤Åÿ`?êÆïŠ«¿?êšÔ;¶C?ÞòÃŒíy?äéAH"þ?è' ð:ž?ìõ"J,S{?å"·'­˜�?Ã3aãL~h?î>>3"ª?µ;€§Š°?éxQ@G1?íÕÄ¿mÇó?é`Äãàõ?è�þI\ZŒ?Óó; ŠUŒ?äÀ¬X}0?ÙFdÈéZd?ÞðDc!gn?ÜÆë˜FT?Þê7\Ô®@?é<®¦L—§?á”ßIõã�?å’¾Åt_ç?ÚÓôTáò¨?³Ðǘ Ø?á«TeÉvá?ÓtÄt�k:?ºwã‰Xà?Àݽ Yò`?Öh ¤u¬?âÜ·Òýß?‘—[ 4i@?Ú„léÍi?ÖbØTÊl?ßS~.-ƒ^?ë[þJ_Ü?רHÿN€?¾œãzor?×l§=nô?ì ëú�æu?ã&\(¨õ?ï¢Qíüs?ìÑF?³¸ÑÉ• H?²AŸÐé$¨?æÿ@Ñ9R?�7! „ÂÀ?¾[u‰çã°?ÐY-œq€\?ï]xtä½?ï°%Jº1¢?À8Ø&Ò,?‚(ÍMë@?ÛADþJ@?¢óÁlš�?Θ9>ôÈ?äº1Oau?Í*b\^¨?ÊHN4Òýè?å?ˆ X.&?îÚƒÉN?í«8xx�²?ê‘2sr ?ì˜ßB‚6¨?çñ9ÿ£{P?éä‚¥ÄZI?è4©.VW¡?¸\NÜ×ÎÀ?¯–ôÊ@?Öö<í@2x?Ϙ =qx?í‚Hw’u¸?ïxÔÇtå?Ù‹^¹Ü0ª?ÀÆúcŽeP?è÷ëãÌóŽ?¥*ñ3iP?æ�YSÌèQ?ëô?Ú”Uš?sv³LÕª€?î#BIBÚ?çMÀs¨?Ý…ŸË·ö?ãýSåvÎ)?ïHU<ÉÔ ?Ó3ÏP/ºö?Ü} Om¾?¸hZw3X?¸CPûJ0?ánÜ òªe?àÞL ¦¬q?ÁìÈiÓÔ?âÈn"BZþ?Êò'‹éÐ?àšu}”5?Á °“³ ?Øwsþ?¼“G'(¨?è¥u­¦R?¹É�о?è@×O@ 8?ÐNŠJm$¦?¦-Œ#»ºð?ÚÁú;ËßÂ?ߦZ1wU‚?í6ÇUÁèþ?ã§?[ê] ?ÙRž‚�œd?éåbu¼tv?غ©bF�?ís†8ÏÕ?Ñ÷¶+c ?ê�Wtp?êD‹¿�š?æw(µ³åë?ªà·¡4P?èbX%ã?Ô£s­¨X?Ý™F#n„?Ùº"éÛÌ?ÅŸ2׋l?µ‰Æ%Ý8?Ø èb¿bÊ?ÙÁnF’œ?Üi$Håú?Ôªüx�¤?å_{®7ª ?ïÖxìñL�?ÔzŒØ»‚?sñè?Ïö®Æ×¬Ô?·¤ ?"�0?Ód®ŠÑP˜?ëTá´´¨Í?á[ªTÓE?äÓU.Ë7S?Õ–’È8Äš?ëÍ=ZNhI?À·Oàlà?ÌSÏý9g?戎Á�àÔ?èýöÊNÈ ?ÎòÌp#ÄÀ?ïÈâl‘NÅ?Ðw½06„?ã•"ŧ?�ê—Üj ?áì–wí3??ä*qÕ·?é!H´ê±?éD<±që?ã�f—Ìm?ÀIqþ|�È?ÃdÍ\ÇP?Ñ@‡ÚÇ †?Þ@3ªÐqN?áQÿËò)?ã,BMJB©?æäF¯…u¬?ä¬v�)³Ó?îç �di?ÝÉü ðª?Øs c4¨?ëTI;ÿ?ä#.ÝŒ{{?ÚŒ EvÈ?ØÅQ×�ô?ã·T4s¶?âˆIKžáO?Â!·j�¦p?æÚV?Í—;_õ+¸?çårËeá?ê »œžfŸ?´WE)‹åà?Þ?�¯‘Ò?Þèë7;d?Èß�몥?çS¸ŸÀìÖ?ÝV$=ž?ìu;m”0€?å·Õå¿??ä*ØF•/[?âpmµRc«?êð™%Ì?á }_´@Š?ÆÇ!D÷Ù´?Ññ8¿\ˆ?ÑÀ�îSkÄ?è€ã�_?è¶£ÐËv³?äY8a ?ÇŠ4ýq$?äÍ�ëWBE?è#÷zõ`?á„u”€õf?˜üJ‡áð ?Ñ œz´´ö?Ê •Ö‚�?Ú�i—zÌú?ÚÇõ×±‘¾?×ô‰¨'–?Ö‡”ÒØ4?ºŒŸ±Û�?éòþ+TöP?å§èâjÝ?ëµ<ì’Ù³?å¥ÄÊ?æ¶vÍFs?Ó‡Ýi4?ɶÈE�=p?è2Ëô3å1?àýZŸ.$?™½ þM¾À?º>Çò¾Ó`?ã’Bé ?ïu±ÅÚ?Ö U¤OðD?ÚÉ$ºÆš?äšð)“б?çQ6ÿc}Ä?ê®lp8¾Å?Ílû þ ?×!*M°Þ?ˆÍäæj„À?ä‰c,ìï’?Þ!ê`:Â?äÀ”Ø�«½?ãxýš/3?ÀÿRVã(?îæ©�}2?ß%´ÚÍ&?íöDQÁ�?ìGnvнA?傽{Ç "?ÒKß,ÉÛÒ?›ç9òx?í•€YW•?Û|+i €?Ä^¼è'AÐ?áîcaà&Ê?å31™[-‡?äã¡bì?Æ¢£å¥?ä²D+ qw?­’í­\ ?¶‘êªØ?ï¿ `‰Ü?Ðü¤AîôØ?Á•]<Ï0?ãõ)˜³Kä?ã¨+Ñ`?Öáå/l^?ØV—ú—Ð?Ú¦Ÿ3�þl?Æ@Ó[Ò¬?Òög*Ÿ¤œ?í2q½‰ ?îÖT[6?³´BïÁ6?ÇU¿ïÇdÄ?êa„½MÞÙ?ìSv'vLØ?Ü'"¸æÆ¾?ÕbÓnrn?¸ÄÒf@?âÖÕv•?ï$ïŽ1`è?ä_²jÚ¹?äJVÝGª?ÈN² sL?éB/­F¤Š?Ëç§u˜ä¨?ÐŇ»=-”?î/~ÅK9”?»(G Êw°?Õý¡Ó‡4à?Бï›?¡ïõßG?Ñe²]ôXî?ØeSó.€?ëƒnxA¶6?ì$mFEµ|?æO2׈É&?ÕuS£¢0h?؈Ƚ†?ɘÀNÅWØ?¨ÝV¾ ?ÖÃõ£Á» ?Ôö?DŒ7F?Û�Pd¶ËÀ?ä6ž.«9©?îÜn÷B?î�-)CM?Òk“1¡Ø?âh^T÷ï[?Ý“ç'ì¬?ånûV­-h?Ò‚îúóHü?Øé‡ø³ŠÆ?à €ÙŒ¦1?å%QÿÚ ?ÓM¾î½l„?ëëøÒÞÍH?êÿ÷. â>?ïq” "?Ífí:Œt?íΩኜc?ΡBI¦0¼?ß„ŽQ�´ˆ?ãäsHéâ?︧_;Õ?Ñõ%kxÎ?ï^_ýÒ�?ÐPäh¨¬?¾RF° ?ÐÚ ¼+>n?Ðë~XM\?ÝÍù?Þ‚?ßnýñ).?êÏ>>owé?âÉë¦ÑÇ�?ïŽI�/ø?ÛÑ_Yè?ç G‚+?â[ ý±]™?â%õÊ©Em?ÄitWŒd¨?â&jÄ·HS?šÀÝ–�€@?ÞEJý³æ?Àè8¼°qL?àuäàÅ5¾?èûZ·„uf?ˆێ´œ?ânF“1Ž?×0÷äòB?ÍFN³�¾Ô?æSÚ$�±?Ød[sØ?ØGLñtÁ@?é´.µ¦ª³?ÙAÁ2H]>?Ç!2Çv×ö\?ã¹T?Ã’ÿ’nsh?©ºØpyÙ?ïL«a£?â‰ðzSò?Ý&ýnþ?ä S‚‚v9?§z?¹"ñP?Ñc‘¶q½?îZž–Ÿñ8?àf°¿� ?ÞÑ 6¼1Ü?æ¿Ðˆh®w?ãß�gŽ�0?ãRÄ>D´î?° úÏv?Ô[ž¯¨@Ø?äXšo´â?ä�µÃânL?¥•šE  ?êM>¡„ø?êäzGP®¨?ßÌv_غ?Ùw6‘‘†j?íU{Ïvu>?�ÂÓïKL@?ÛÒP9�…$?¬!°÷:Š€?ëx°oß—º?íݶ;Æ–8?ë±àÛv£?æÁ3Ûý"?Çr«˜N�0?ÒJF¹Æ—?à|˜kp8G?±g�î�j˜?Ò˜Éà•{Æ?±Î™Y§Ø?ÛKÖ8ñº?îÝãð³Ò ?Û`š¡R–œ?ësÌ .ío?ÅÓôV”ýÈ?ÑF zj‰Ä?¹Ú6U6B?Ï"�ck?ë¸Î™wõ|?Ý uOVöü?Ó4-¿šÎ´?ÒæÈºÿ ?Äz/QÏ/°?Ý!1¹Åê?©R2b°?¼�¿Ì2p?á,]ã‘û?ÈQcNí@|?ã¥þèBàc?ªÐ�Ñe�?ÞÆp�´ï–?Í9'�Œ?ä%£xŠák?Á27\×±L?èæ}ï�?íõ£Ðd?±Hv–íý ?ÖûŠ4³>J?íw¿ ’Šö?Í8”Ù%»?Ú±“@ 6?á}ŽlKW‚?äœ>Z(z?ì†ã‹š7ó?³NñX<È?Ù^µµ«lR?Ô¿âÂáTR?ÕXŒÝb8?ÇYaæ*«˜?Óûc„`r–?áÓ>S¥„?° Ët©¸?äS(Ÿ?Êò‚AB”?ܺÊèzÔ?äºÆ±áI‘?ïãFÈÁ?ë8u€ ?Ëè<'Ž-(?æf¹–y«‚?ïñn°©’?êæ8Ç×­‰?êdætÙ?¾7�´/{Ð?Ço§SA×$?áœ\ÙVÂÔ?ålǼp¼?Þ„Båã˜?¦Ø¦Ñåp?ì(ôÜ&{?â²)Ð+º ?îŽcª™ã?ÍÓ@»0ì?ée.‰®ðÅ?æ;m.w8j?åß™8뿸?Û¼A¡$V?Ò€ ¡¶ôž?æïÉW•_?â—ãzᯌ?â¨Tp·:Ý?íª"!I{?Õôhv¾º6?Ú~¿KL£â?àrçì«O1?çò§0 (?î¥ÊƒöY/?âÍ% =¶?Ú[)'6 ?à]ÖÇ®¯Ü?ìï«�©?š4† ÉKà?ж ODp?Ûoà€ „?Ñ�ª¬œ\–?¨&"Ëà?ÊKI¸Fì?Õ:°| H�?ëâ{7u«?èäFwcé?èé@¾_D?æ �ª_™??諟ýÝ?µ÷Pâ?éŸGÈÕT?µïPm?Òíƒ&În¶?Ã÷©/YðØ?xž—D‘»€?ÚnÓúŠ ?çZbínª(?�ˆè5¯g€?ã ¡‡ | ?Ù³ÇKûu4?Ýà@ÇIRÄ?ãä ®ÓSþ?彪B™t„?áÉ‚ˆKÆ?ë:_®â?Æ‹yoàÏp?ézxHÓÐ?åKóâëùk?èîjÄ¢í^?™VsÒµåÀ?ã,=³Û̽?ëAê£z5?ëÛ úJí9?«È@ |ª`?äŸz_Ê;?Å)ÀÆ Ì?æïuJæl?ßgž­ NŽ?›þ·Ï„à?Õ ç6sF€?מý­²†|?æ]/žÓß?áA6™›™?Ô·‰.¸1Ê?¶»=4±`?è©Ò¦¢?ç»{Áå™?í3š÷ä¢Ó?ÞG¨’�x°?£~ ’ô@?íálìYÐ?ЦÅÁ¿c>?í;9£L ?Ñ­;[„ݲ?æÈNKÅ´?éÙÏk›…–?áóÌ¢—L?£š ³èvÀ?æaàßÔ›?Ì‹�p¶ò ?µ�À+‰šÈ?àÓ ?9Ý?êæú?âóùb�ŽU?ã-¯9$/=?Ûç DL/Ò?Ý×�/ÉN?‡zAÑ.Ù?¶á$›¯‹Ð?ÁxªÎÜSø?Ðhá¿ÑG”?çZµÙþ?ØßbQê ? } þu0?Äæxëõ´?‚d¦Üà?Ïÿ=”VF0?ádýX»?ÝH5TqÈ?å¡?ùï(?ÏBmmt¨?©?­Ê`?áY³J„?®?ÃçÁœ¬ ?åŠSɯ?Ë01°àˆ?ÚöýFÚx?îX2Ûû�N?Ô?è–Sû|?Ü÷&õàiX?íýšsÐ?¸¬™M&_p?Ý”§ 4,Z�?ÇHB%åì?é%Ò ™áã?ì}7ÅÝ¡E?ìö½2ðY?Ü·¡ß£F?ÜvÓèkãº?ãô.;8ê ?ëø»8Y:Ö?ç¬Øü^?âÙ-²ÎžI?æ˜ß÷U*?íáù E¤?æ¢YnƲ?ÆÆ(�…�?êÓ� ÝcÔ?Ôé ;H?ç¢*àªgâ?à¬é»F:?á6õælJ?ØäÅÔÆ£Ú?ËÌß±¥ÄÒ“G?·Ll�Ù?à2!ic•?å¶c Þ‹ƒ?§ëM?CÀ?ïBž›[`)?ïìNUÒPÑ?ᚉëmІ?å<à»/ U?§Û™ÚÕý0?æ|å¿h|“?ÐGÁ˜Ž?æü;Täfî?�H�ßy@?ÆMVNB€?ÑøÑôXœ?æ5Áý{ô?Ùp#Ô܈?éÕÅtó{E?ÝÊFK Û¶?ä? Ãó 2?Þ=3Jî¶?Õé +�?»‹vŒÛöÐ?ê{ÒÁŸP:?Œxíÿ×À?àŽîrÀNB?Õ2Sòà€Z?Á[‹â{—(?í^×?éè—¸!!/?ãsBtÁ…?Ô¨IAÛ z?ë³N ¥m?űóoÄ&T?ïñ¯ t›?Ñn� BÑl?ìy8ÒÂÑd?à<1¥lS?Ú»áÞK¬Z?Õ( 4Ì?ÕH¯ÀPö>?èØä½çç@?Ûø7DíØæ?ŸFqçÀ?ãøcmìh*?º;¤Y#Á°?×Ù˜ØG²Ö?Û�Ê h?Ò}X”ŠR?ëVÞ@:¨�?暴žÌ?î|ª´ i?ß¹“$ØŠ?ãˆ=KÙ%£?µy>4ð…À?å)̪ëX?–‘ ñP~`?àêoð$?ìùÊW+p+?èí�O‰Š;?ç)·…¢„µ?ï1`kù°}?ãÏ¡£¡?âžÇí ƒµ?ß{,üzºÀ?Þd¥Æhˆ?¾é ¾uX?áæŽH©ó?°jßå¡V8?ãõF˜Ðs?­ÎÊŠÍñ°?æ�¯ö:j?ë\†FÁ=?èe›BÕ¿?ß&C,Ø:ª?Ø„,*8l?ëŒÙ€�½J?ê•b£øÂU?Ò «�l?É¥û½'®D?¹XD®26 ?¡…öGÈÐ?¤N:Œ^�@?ÅRCsÁ”ì?îÜ7¤ ?Þ´ ßaP?ãà†œ‹„Ì?íTlŸÜ¾b?Ï ÇÖ,?ãïZΕB?Ûß<ƒ_¬b?à÷kºîa™?¢f„Uï`?áT’ù?ÇO‰€äRX?ãà Õ¬‡?»¬`ð°?åe׉uz?Ü•�Ë\?Ì•¤Á'BØ?ê³¢úº ?×ÞW«A±Ì?é‹�}¯u/?Ÿ”¥“½ ?áuZ©%ª?é´�¹óä?àˆdŽ‘S\?íZàa$?æ ÙTï3?¢m3‡Ë `?¬t—NP?Ñ+JÈ�?Ùóäàà?èÎ bcû³?ÚMu¼H˜?éóŠ† ó?ïKŠHBÒ€?ÓP²Ø kÂ?í”ʶqG?Úo;[ð?Ö%Ôz ?ì7B6PŒx?¯ÛÚŸà?äsjè§€i?¼ÅQ2Фx?ç¹|Àßè?î¯Ð•&…?î¾èq t?Ò˜—5#Ið?ëwóàä??Çxlg¬U8?´ –)›½€?ï¬1j°„î?é„·ëõĆ?©¥�Y?ÏÍiQ7_Ä?­À"ôÞÿð?×��Ù íx?îŽl'wJí?îâ9·¦k^?Ó[�¢ÔH@?Ô®ªÐÞ¹4?äMÙ¦ã?å>¤,�ð9?àKT�x@?èÂß,×%?ïAš#»†P?éI½Œ¯?™³&—Þô ?Âê%ÆÃ6è?ÎŒ™ÀO"œ?Ô\¯š?Ë¿úGˆdP?¨˜æñÏÎÀ?âd7�—MŸ?àH@á',>?Ùýp²$Àj?ÕÞzŸ€¾?í°irY>r?Ææ|u%¬ô?åHÔí¸ré?Á`-4hê ?Î~BK±P?ÖÞþ•`?áÅà‘™ ?ãâhjýc6?á¯êŽ:I¾?ÀtHV�èX?ê#é¸@?Ýáóå”Dš?Ï2×s0 È?“mUŒ¿@?ä½JëK'\?° #½½@?» f?Gˆ0?ÛºõzP7Ä?êÈ\Â:‘?ê sŸÎîh?Õ §‚»mx?ÕòuÕJ©|?ë“e�©L?Óó–lV™Ò?îÝ©¡En?àML2*ƒ?ÛéäÞ†R?âx†Ê-Ü?êŒ!¯ ?Êývžh$?܇úå´¥à?ãJš�Š„ƒ?äØR€mÀ ?º°ÒPô0x?Þ,÷£?N?ヌAàŽ?Ð^d�1¯J?ém»¡UBÊ?Õ²Q�Ð×|?ï§í„lË\?çñcŸitö?×0jôÀ?± 0£Ú?áq7èvUx?å&ü¢C€?Ômk›ÖÜ?î®1ŒÃ-ë?àEô;‹C1?ì¹BeVóe?ܼƒ¨>”?¾ê8ɶ“à?è:êÈ–©@?ÆxÔ8ó˜?ØÎ-Ðä?ëì:?åš�?¸Ç8aÀ?ïæ#”ú†ç?߸Q6ñKÈ?ì»åÑAà?ØM´à:„?é–DZÍ?Ç�˜wòà?½0ð�Jh?¾¨š^AÙ ?à÷…m\b½?æ“ƒÜ ã?íM=}“= ?Õ-}5�P,?϶˜`k?�1”z @?Õ+#æ ?ÛÄ‚º«Àò?Ë‹h1¹,?Ö& rƒ�ô?ã©%QÐi?×€ÕO5p?Ð}Ý(U™„?ÔM~Go8$?ÙÞîõ�éB?éF÷m‘úB?Ðó véü?ÛWÿäK¤@?Ó”«ƒ.n?Þò&rñX?ä¦#ob§�?±¸‚np?ت´h?ÐgeÜÅ�Î?ÀvMY-�„?Ì»q~u±´?æŽ�Oik ?Η:e}&�?Ñ¥G;!‰¾?šû3šoà?ÔȘ•%í?ékMêâ?âà•Žþ3ã?Õ™Sª›—?ëI¬Žì®¤?ëM‡ÆÌg?ÑHä0ÔD?ÚéÊ …`F?ßâftÊÝú?Ûóú�´Rê?ê�ñ&#Âæ?ßUÀå™&Ø?ÖŠ­V»È?â¾çªÕ±b?ÄŽg´O–”?è1çvT)?×É+!¾¬$?ÐÇf­£e„?â„•6"$Ó?ãKÕøÌÊ?Ô«E[Æ@š?Òsg­ÖSº?ä=RD`dÈ?ÇFî!�Aü?ÚQ´˜úk'?²±�ù àè?ÛÖƒ�e?çÖ_¢®è?ßJwW ?ãk‡oí r?àûm¬*·?Óé-°?É¿(l€}d?Ð%ÐÁ;ˆœ?Ùp*Œ°ÅP?Ý+$ÝS¸?Û§óg"?Õ¦‹Ò?àjÆëI;?îƒ|ÙÝÊ?íÊì’›?ǨŸ“‘|l?åÏ‹p?Ýó­åæ?Ü‘;zÌóB?Ú†S�iî?å�Ý6Ȳ?Û�¨††„$?îåZõ®ð?ìky{uÐ?á7íD—ô?½8ŽEÔ?¸Ûªãø?éоœM?í† ‡€œ·?Ó\‹/}h®?«Ò|úBað?¬±?ð?ℨ×@¥?ïÇ“4?ÌÊX”pÑ ?æmWwäø?ì=KÂá˜?åmh À�?çÞRfvT™?à‡¥’…Ÿ?ï#¿íM^Ë?ê? Å �ç?ë>]í§¼?ä~Ý5?àÜáô0?Ì¡L qx?ïº.hÄIž?Þ¡¿ú“°?ï5î"/Î?Ô;×ôâ36?ï²;Ç‘5?ÝT^,ÉÊî?ÞKlWþ€r?Ñ}ó¬ja?ÈT84@ä?ä¶„`D?Ü5¿ CV?П’ðJª?¼ñû·³¼¨?ì5{A Y?æá°ØL:?Ò”œƒÆ?ï!ßz ×Ä?줼*üc~?â]äN„ ?تNm&n°?ám•÷2£´?×Å ™"â?âgúxÙ?ãO¬¥‹®?î{iêcÄ¡?çB8iô?´(Gxã˜(?ÆX5 ¼°¨?êÏ"FKg?ìgEoK?âg³9†?ã:Õø¦ƒ?îŠ:H.Nœ?Îh>\BžÐ?î?† R•?Â=¥‹"vŒ?á<œËÀ…?ä]ŽE}¿¬?¸„*1tZ¸?×µ²¡ E|?Õê I[Â?Эô|©ì?ΰpîrmÄ?Ý®-µv00?à{xÔªÞ—?ß…ø†åâ?´bf%ˆð?äz™È c?é¦Ñ´ŠF?éÍúêÈ?è›GŽi?çt@S!£×?בI7[‚?à“×½n ?ã_Ÿ@ƒc‡?×LìŒ?ä"ú|2—?㦢àJ?ã’Ö�¶º?Òh*j¤B?¿iéÓ­6 ?åV'ÃŽ×u?Ç#òšÅd?×€0Pwgæ?äÍ=ÙÙö?ïQ‹HÊô›?ÝkF@ :T?ÑCÛHl¶?èC¨çŸ?ܦùJšb?Ìæ¼ŽZÄd?Å}ZF”`?âw¹LWB ?ìé¨Rµ?»©§¸Se¨?áîB­~,²?Ðpw 0GÊ?ìwÂõÅ $?µ5*Ë«È?Ç¥ŸÄŒò´?Ûq67¹(:?ÙTÃF[˜´?ÐÇ*e«3?âcÛ„6¤?í5?°?ÓHº;yan?ÖŸ�¬Ì@?šxfë¤?î=LpTã?ß?šX~[b?ÜLp­?á'¢ tÑ?îõÐJW…?’eãž©þ?è‹Ú¹é×?éBôÖ¿X‚?âš�ªˆ¬?Ì‹n,Gãp?â%¾ºH1õ?ÂEþa@?àc‰@Rš?äæïŽ×¼?Ì{ÉX8|?í÷0!‡ðh?ìsî¸^?ï7½É~eL?çÁJï7Ȇ?·Y'âW@?ÔÅ ÖãÿH?㘄ð‚Ö?æ±YëcB?íˆ^¸c¼?égÌ §V¢?¶^4«I(?³#ºû?ä›C¶�À­?çqY3á±Î?Õ 39©/î?èEÕ±®¿?åì,Ÿ„ÖV?Õš±,¹:?æª�I]Í?Õn'¼2?åG��E?ï * ¸±ý?îWcÓº[?ìR&zˆQ?³·aåøåx?Ð�ûÏDõd?íÆW(ÍöÌ?Ò€¸Èã?ëþË.m˜c?Ñ_ÁI²Äª?åNiE+ŠÚ?í ºœìP›?©!¶úÞ�Ð?î~5à(ÿ?—ÞöOB'€?×dm|ºJ?çMëÅ£÷­?ÑèÒ°=\?ÑdÈ\xŒ?Ú¨`ãæïŽ?é¤ä‘{?éƒã/•Žz?㉒ ª|^?à³Ü0Ù®?ë°nˆ¨Ó;?Ü$z õº?âøc1å'»?é¾Þuá�??èc¡S?ÝþKEj?ìªÏll�ž?Ýîl:pÃ2?ßÌ'Dð’V?Ñ®|ãË5Î?â!Q¨ë2�?­8Ýùm ?Ðdoi8\L?×î’Ÿ Þ?Ë U€ñÞ?ìB„‹>¯ö?àí" _3?Û²@G $r?Ö’#H½]â?ÌÑESêÜ?èü—Äo?Ói£í^?Êå‘WMˆ?çÉø¤¡ð?ïN°lo™?ë¸%`R¦ ?Ó¦¶ƒð?îLa,ÀŠí?ìê /?ÛÞ·P?ÞÕ<¬˜;À?æŠAÆJç?¼<•´Π?çú�U7ù¯?ìçk{²hV?ätìûþ„?æZ\`¤ø?ؒȃ9ÉB?Ú§Q!Τ?Õ³gè@µf?Ö#P ƒBº?àUpä0Ø?ëga0±?áçêT$`Ê?Þ²€#‚8?ܼ6, 7?Ú´ê8á?ç§ú]Só?IJ|…v(?Ýë€ÇiÒr?½ùè†1Ó˜?à¼Ã8ây¤?Ñ46LR,â?áhûÚg}\?°t&™pŸà?Û}®Á6Sf?Êç4!Šû`?…î,×?ͼ,j¹½�?À¼^ }(?꟡aû?î¢ Èõˆ?ê„Ô`<àù?Éôµ_þøä?ÍÈ<gM¼?æI£òÛº;?9h­?íRƈgÁ?Æd Ü+ô?å0‹¾Øe¢?Êa# Ù¾ô?¾8Ôhö-È?ƒu[?á¤Da‘v?ë9+£˜?܈ü5»»0?äã]m‡¨?ÞéýZ~ƒø?ìAR"#ó“?ÝÁ¾Ð÷?Òqf�‰ÜV?ˆœÄ6íSÀ?ß‹MÕì?Ü?á3ƒª±&?Ìè/®ã ?ÒMÔ=d?±ðs+‘H?åó†ÔZœ„?Ð j«ÒEt?Ä¥…Xu%X?ÝFB“œñŽ?éd+BîøØ?Ù#G°Äj?àDŠš ¨˜?´�qD%è?ÛRþ^îØ?ät|l×ì?Ú,†ÆÄf?³ÅÜŸÁ¨?ã£:¨Ôoª?긙æ?Å g:pà?Ýúð†š-0?íÖšUÖN ?Çk0XÄ?æx•ÿîwõ?é�·µ>7b?ë1ù à?¤iÁ— p?ʳËEf?ïIê¾øÕ0?蟞‚¶QÌ?íX8jM?ÔÝd߆ ?Ûöø&·@?ç‹útÑñ?Ël “2°?îLY¶Õ�?¡>³� < ?ïòÃø!Ð?î+§³T²?ïé‘Ýé4?êkÙ‚(ùá?åCí¨˜S^?î«ø�A›&?á"dV4í?Ö �WŠ�Ð?Ó"h<�?Å3z…‡H?ÐÍÎAÊÝ?ÓìóͶ�º?»úq•'ü8?жï/IR?å$¤LO ?îëI›¸M‰?ÆK˜¦‡8?Ì„bw~Ót?�TîÉÊÀ?ë /í­?ß['<©ä,?ëŽˈ$Ÿ?Ð+¬ÉxÔ?Úp·[‹?§Ì? ß%�?À?ú>ô˜ˆ?ëd�RÝo#?ÒQ!+hé ?ãØäÅé—?éE„¯£èë?µ�¨ NX?ä¨ÇþW{?ô›;æ#|?à¶0§í¼*?É踄W(?ç¹Ë‰¦ž?Ÿé& `?â|¦óÏžh?ä 4ò} ?â×�D“T?íàá<ü°?ØàÒÕfÉø?èr =Gß÷?âÞAnâö?ïŒ)%?äR`,Ñ/?âÄ[…á?­'”Ñ×— ?ê�,wè‡�?ÂWÄu?á*l=?Ã=û}M­ô?ÀÃþ—Ê”Œ?ëíO€C(?Ú¹ˆµ•’?Þ1¥ دˆ?¸ (S¥è@?Å&ÃÂ8)?É:ºÙ?âÆéÃXŠÜ?é¥k¡ý ½?ºXÞÁÁÛX?˃ak{p�?Ó/H£J>Ô?ã"gÔXU¼?â¹ÊúŠ—“?é@¿_Ü.R?±¦ðT ”0?ëóƒ°iÂ�?á‘*EÙˆ�?ë¹CÅ�ª€?Ö{·™mÎ?×¢}±¦iH?™BËeÆìà?Ýÿr ?éµ9+*Ù?ã,±Q ý?ÅÖ6bÀ†x?Ãb®†/ö°?ÝEŠÂ)OØ?Àöáà@Oh?¼Ò-cƒC8?êT`ö¹¥?ƒ"¼×�÷@?šöé^â `?âÀÕàб?è…;“…È?Ó”�ê.ì?æDgÕ†C?ØŠæ>†G?ÓÞ¨ÌuÎ?æ×O¿Î?Ô?àzq¥u�?ÔÃ;R…z?èœncƒ�o?®½izµí ?ÛÄoÒ?Ý}ØBº?ísmSM’?ׂVˆ³x¨?ãù¥ŸÓ?ãT῎&?Ï×î¢Pç ?Ä ém,¤8?ëÙ­ɽ?µv’ЧBx?è’Ì€EÚ(?ë!'x•.?Ó¤‰ ’\?ä3ý|‹1´?Ú³”}2*?àÆv Ñ©?}€‚"9€?ÎO­S¡„?›Ê…<–  ?çwÒ�B?ïœâ7{w?p¨ŠÝ ?äã¼w¨?èüa]œ6¡?éï_e¥2ÿ?Ðãržã%\?ØwÝoó©€?åI)Þ,Êݶ?ËŽÁžðäð?³Ì±šcÜ ?çå4Ù%Ôt]?Ø4ÑŰߖ?îŸ ×”Ò?Ñ�|+õƒò?ë¸è„?§< ™"�€?ä§9„¼•?̦Ù_ü?ÐÑkþG8â?½=È€+¦ˆ?å�}])?ÞŽ×ãe2r?Î_N³¢«d?ÊÎJPq7°?ìóü\/Ö?èAQå?èºW\d;4?à eDåŠ\?Í:!ž¦XÌ?ïÄ:Ì– ¼?ïPLº£A?ÜZºP ?ê¢e4÷>?A_T?ߨ|,1ÌÂ?ÛT9Ê‚üÞ?â1…î° ?ìŒ1ù1 ?팋œƒ! ?ÕïdW±µ$?±¥cB>¾¨?ÛCEF)Ä?ë¡l•Zt?É2ÜÔfô?ÖÏž®È@?Úù(–ˆ¢?íº0ßÀïb?äö¸žŽ$¥?ìüŒÓ$,h?ѧÊÜCÒ?Ñ’bH€?éÁ/™7¼?ÆY\!V?æ‹HV~ý=?ärýÒBGó?×ñ{;¬ ¤?Èý)™®€?Ý(êÓÿ¨Â?ç.^µ•öÉ?àOcÑpká?ã ²"¡°#?ãâˆüÈ)A?ÛÒ¹ÎD°?è æ@3ÖÄ?îhC0’µ?ÊàìFK{\?”Þ®]±?í7Cµ„ñš?ÁA�Á±Ë0?±9@>Åè?éÂxj¼û?œ¶ªY¬à?æû7w§hY?ã5Oi©+?ÓQáî<¨?ìÕßzéÍÉ?Ï]f†€]”?è÷¯ä—÷Ü?wÇ3ç–?ÄÕXÚüÈ?çóȇG¼?èÒ#¹¶ü;?èØq˸?ä©×`fÃ?Γ;ÈŸÓÜ?è¦ÅÑ”³­?Õ™|v.?Õ_ÉmX¨?Ý©žrŠäè?ëÛ±Q“M^?€« $švÀ?âpáþA›?ÞƒÕŠƒÍ´?ÙæÆ`¤a®?ë¤r±C?¹íÆâü?EËÑ0?É×úXß(À?çŠ×Ùµªü?â«@uë ?êBܨyNÓ?Ú1åþírü?Û˜ÛZ±d‚?êèíÍxì?¼n éçÄ(?âK€™i“ ?äE�›ÙL¿?è[{¥O[Ó?Ô;ÙŠP|?í½E©¿Ã?í<=î ’\?ÕÞúj²?ë;„$`C®?Ý6úÌò ?Åt›8#œ?éâhsÛ©c?н†÷zú?íÓ'“v-$?ì€pÕUX9?ÓvJËj?ÛS)iæ7?ãMÅý¬«?ì{ œqõ?îù·Ù$]À?èûyA6ª?ÔâocCjX?Ýc0ŒYAÎ?âÚpˆU?îÔÚ[EN¼?Úø,�[„Š?¾_«ZnØ?תSŤ>?ß®ä]ÚÕ,?êdÁºsùÈ?Ù\Ns–v?åŒ-§<Î?ïhà.­¤Å?åWâ#é¯*?«� W–ˆ?Ú/›96mø?ËÀíHŠ=ì?éþBÎ�S}?áï< ~Y?݇SϾä?åþ?f·�?æß! ž8"?ßÙÉIª"?µ‹}ì|x?è9dúå§‘?­1 À¦à?ì;G°ÑÂÇ?©´êöÎeP?ï÷EtÁ•n?»Kcµê˜?Û›±m)žú?ÑI–y¡Ô?å¹Õ¯�Ì)?±Ú\È€?˜S­ `?îã}ý‡œ?ìl}C‡�n?ÈIŽ(?ÕµoE:Þ?¤&ÆéÿÐ?зã2«©V?é0c¢ÔQœ?嘩‚‰a´?ËùÝX` ?ÖÂýlÈW¤?íö ñx5d?æ€j“„•?·ÛOü’Í?èÒ÷ºOŸ?À…¤H|™¨?æ�b·Þ?ìvB’^¾z?â5c0¨ƒ?Õv_*¬¨?Âöô‘½$?àUú,Ù¹?¾F²uà?ዉ3`’Ü?縃Πù?ݑї8Â?ÒàÂ'çŠ?ä—ߌ¾?íIKØM'Î?Õl·Í¾?ÅŸgdð?ïM;÷^”A?ëQ<Å«¾Ô?â'ÐÒ£V ?ݨúZÝm€?éíÌ(už?ßÔÆX?àçúß,?ïÏÂ)bÕÍ?ï÷FFà¤?´=¸[„ð?Ø®U™Û ?ÓhóÉ1ºÄ?Ù°×™…ó?åù�4Íþ�?Ë�©†ô?»k}½&�?Ò`8à ½„?âÚ�è6E}?Ûp9XX`¾?äð¯¡{‹E?Ëå@Á®†Œ?éqÐÚÇ?î^Jm¿°U?ŸŽöY¿h@?çlêHþÕ_?pTG;Ý€?“+_•­à?Þìlk!�?Ôú0ã³H ?æD þ Kj?ÚIAºåR?Ù±ûza�?Ì�Ř�ÀL?í`µü®@?Üȸˆ>?åÛñR]•æ?È[)Ž*qÌ?é_0=y?êtRnê?à9v“ñò?Áoöq^d?å~è s¾\?Ò`4 ¡ÿT?£hr³G[ ?ß<�h/ýt?ç¾Í¡Áò5?Ôq瘤Mp?ëÊ*�÷~o?À�_ºŠ�?Ï™_CŽÄ?™K.¬?ß4á̸Gô?ãCrfañs?äéމEÂ?¸è�M3µ?©þÁÇ?á­­\øz?Àí;?üu@?ìÅLF3ä»?Éû½©´´?â¹¼c}+?êŠB[®RÆ?àÔ)¥é¿?ë¡—†�ˆ ?ê>?ò5eò?ÝSý4òç†?Æw¿tàt?±w»S<#H?ïì0æë/?»S‰“=h?àŽO£¼Í?ìÔˆN%Ê?Ú“ïð:àú?ÔŸ]Æ�¿°?í áŠ3i?ë~sw¹°W?Ù ¡/,?Çädðà?í°Í Ft¨?”éÑ–#S@?ÓxoD,?jú´Ssn?âòéôdS?ç& ŸNý/?êž¡Š ?îc ›IñÇ?ët´ú9 ×?ÝG�ÚÿV?íÂLF¦Ùn?í¤À‰á]\?ìÏfþµÔ?íþVàCw?Äœ~�³ßÈ?áM}ôÉN„?»V¨þxϨ?æÌ™³ÒóÖ?Ò@™PžÉ¢?ëà?èc)lô{�?³E0ï ù`?ÚÝ®,w|?íÄõöò�Œ?Ò¦¡|Y&?Ú…íÿ [Ì?¼!½ áhð?êŽ÷nI^®?›¬÷<�?çmBË›v÷?ÏÙTrÃÔ?Ãd1¬®�?ë‡5yÒò|?Õ:_vãp?äÏ�QG?Ù­ó>¿Ç*?×2ƒ`hàî?í^¯q?ÇPõ¿}½h?ÞjûÛ²f¶?ä*ÛË»œœ?ëvÂ&ÀÊ�?èt¨nŽ“?¤¶ÐÇkñð?àØÐÉ »Þ?Éè=¹ý±(?Ôƒ©ìµN?¢0ȶ«P?å5pÞ¸5?Ï}¾N7SÔ?À†~þ+D?àµwÃÓO?ܘaÕj?Ó¢œÍ_D ?·QJ”$8?ë>µž�á?xÄÆsÂ?æéºGõ?á(מ6ˆè?ªóQ¸)þ€?¶ ÊÇ"÷À?è•íÌ|œ?×RÚÅþÖ?í)‹(ÐÅ ?êʬ`Cg?Ô]Å=V?ß'òŠOšz?ã7d~^û?îo­àP… ?ëÇcêÍ[O?ÍO ú¯˜¸?¹Ê¿Ò€KÐ?°úJ¬÷˜0?Ÿ¸›` ?ãòm¡î«?œU¢€?ÏlôŠ` ?ÓcÒßã&?Ý�¸“_ƒÖ?Ì ú„â¨?è*`#®ƒµ?æq〢fB?áªÉùu<ï?æF…€jC?ç1Ë ÌÞÎ?¹:ÔÛ¹@˜?â“GZ²ã?íŽgÆÚÞY?âh,‚iR1? ÇØT£0?ÆÂJÎûœ?î3˜Ðcˆ¨?îóÞSìÌÙ?¼œÄc'? (½ á ?Ì1i—D�Ø?â]ø©›!À?ÕE‹‚ÕÏ®?í`âIÙW?Ùˆq5EUj?¡•Á(›~à?×|°˜µ–?Ê3q,?ân1.cŒ^?Á.á9=÷„?ÖdòÓqtX?ç}o3X ?‹E˜Ý¸3À?×G¾.âA’?° ä�tôð?íÃw0+Ù:?áö¿$mù@?̉œÁ l?ÇÈZM¨?íŒzŸšÅ?ÇB#ÙÈ?è×cKz?à�ƒ†T+å?Å53b¼’8?ÓGoä&?Ñ0 Z€öä?¾þî ƒè?»ì÷"”Åx?Ñ|Y^÷ì?ÕX@Wl ˆ?›•œÓ- ?âÙ¨ÉðE?×ò…¨Íê?ëMW±¶pº?°Îo§¿%P?Ùy÷1?Žô?íÁLÍs8Ç?åߨrü'?êOÝ6º|Ø?ØCë+ó–°?æIéÄgÿ?ÑÓ"õZ?ìˆ/�ÔL%?h6’å?Íø)3®w„?åMÉ£ ?í=_ÆÑd¢?à4<Ü>D ?ç£F<™´³?ØôØÌ�$?£þÚPfFà?ìaéFìÔ“?ìï5ì±?†ßj�+?êh!(ôÏ?½È§8L(?çWµ(2v“?âRôye¯?µ–3x ?»/úÞÝ,°?Áé¤è¦Ä?Ô •¨õ ¼?ÐË�èfDp?æÎ,I0v?é!ÐúvC%?î2mÒFÙ™?¶§ïO€?mÊÝ2ˆ�?çê¬ßμ"?î°lðÝD?ÝËçv&Ïš?éWîöðÅ�?ÝûüÁ:Ò?Æ{X!¯SØ?ÌÏ!È—h(?Ó²w†zEÈ?ÜôVÜ2Ç‚?‘&¼!­`?î¼,è„~?ÞŠ“‘&Ø?ãë ¿Êï?Ç”wnp¨?ál>¹¥á?äŒkÙIÉ“?çl·šÊ!à?ì§–ŒçŠ?ì[³ j°�?ä'§6×ôå?ªˆn P?ËZ�W—u¬?èP9ë¬ù?éÃ^‚¼ËG?ìˆ(š­Ã9?ÌZ×ÓÜIT?âþ·¢^“?ÆúøY?á®N¡N]?äž?°\ÑŸ�±X?¬Äš%Ž ?ê@ñp•?ÒÒH;<Ä?éÔÉœŒo‡?êÃyÙŒB?À-,9r<|?ÚÊ�q0Ì?ãM�¶ÛÏ»?¤ûSÿKp?ä­â[ ê?îMà ˜/?Ó¡œï©ÿ~?çVëÙvv?Ö{N!MÖ?â©Ç¶‘V?¢ûÎ"Œ�?ÀÐÞh~)$?æn£ª`Þ?ǦöRî#?ê½VçwX?î´*?;D?å…2%Å?Ûó;t4z?àPŒ(–‡?Öâ;×r?Ô Ø_.?à<úcÄ?å»j��ù?å06øµ»?€=OíX€?ྑüS?ÌbyªÁNÈ?ìçfv:Å?ãÀi_:.¼?ç’Ÿ…SÄö?Û e•9^?ê©Pªäµ ?Ëšû;¦çè?è9¢¿iR?à«éN»Ä??Ä1[˜xÒ?ãqÒi…÷ÿ?ìÓ�ÏÆ�?è £mÓÄ?ãÚlר˜à?áaÙEæ†?׆�¦"ù„?Ò c­‘ix?Â~!ÿ{©X?ÚHLŸ1u¾?Û „ ú?ª¶˜l�ª€?é…õk KÐ?ã¹ÒOá?Õ�e÷¢?èA…E\%?çSf×nûÀ?Þ:å-€�:?ë)µ÷!4ª?çwßW[ôÙ?Þ‡Ÿ”Õ¸?à€ÍΟYß?’·eå×à?ÙË·«9·Ð?ÆËSU 8?æÙ+ ME?çË'šù·?â¶Ý4ó?½ïò7,¹ ?íaäPž0?ìÃÇ>d",?ì÷V>Z޹?î±OæQÜ?ã²Kùæ?áåe çqe?Þû݋ȷà?�×9§Œ@?ÞØÍƒ¶h?ë«}GÞ(¡?±…sgèì0?âhÄh‰Uñ?Ôä¦}"´ì?ãVÍ*#�?ìÕÜõ”Ã?Ù‰äë [?àc¥ÜC3i?æÂZl¹ ?ç¬� &ÒÞ?Ì£)yÔ8t?èϸ “MK?º— I«¦?ä„ Òˆ>?̧�iâ0`?êëu.Á??é‰wP¬á?Úè•KðX?¸?~xsˆ?áÃ@(Sn?èqZïMþA?Ý<ÛÛ…è?¼OÜ7?ÜéÇ'#Ò?¿i­>Êáà?ÏÀñFUôD?æÐ'Á¾1?íBRÃM[á?ÒS]¢ØO$?Ò³„M[ÕR?È –L*–œ?èXvŒŠÄ2?éXåeû«s?¶F‰¬SYÀ?éKvµZD˜?ØgMd ‚d?Èù&&Œœ?ç-˽§¯?“^"¡ à?Ïé!V0¨?Ù…++5ã¦?Ñ)<£ V?á#”×Âk?ìÒþBXÔ?]"È?ÜNÁ �iÊ?ÓõˆÏõì?îsV{'½Ÿ?ïr!*Á ¿?֛ȯDEä?áEµˆ@F?á<±ç…©?ê¡:÷ i?Âç˜ù±?ÀJk÷¿¤3ÿ0œ?èÄ¥E×ò¯?âGóJ´P?ßÄ6Á›[d?ëÐ,ÎíûÞ?á�ÔJ}?È?æZ­¨P¤?ä+{ªWºƒ?ËŒØ>mÓü?áé¹e¦Þ?áÇŽ¢1;?× ¨qÄcÆ?Ã-Fb¨?éqa#rÄp?Õ¥2nÝä?ës�°:?³U6 y�¸?ÜÉ×^[Î?ÕJõZÍÿ ?Î�àÆp?Õ`¶ld?߸> Q¬?È=¯K³€?Ó~˜ÝÚ2?í›±¶ð…?烉r?íÒì5.² ?»|BEhè?à@,×ß V?Û ¥Žª?ê y“Ìñ?Üz«6Áä?Ïø÷öH-?à�©E©,O?Þ÷°ª$ª~?²z›<4G0?íŠ'k…ª©?Úeœ4…ØÄ?é¶½½ \?ç½T]l?�?â¸6á5Àû?É–§Ñ6M?ß‘‘4ª^?×iT€Ä¬?ènäF–gÝ?èé‹Â”4?ÕR¾ vF?íØêšlÔØ?άþ~ú�Œ?àÔ½"ú5¡?áæwBöw?àõûýÌ�?âS“~òÆ?ÌÂíÈøÿÔ?Þ�n6§w?év�0ew?êFQk€v‘?ÌEa©çwp?Òƒb|@?ÒK:5Jͬ?ÈYÛøúèÜ?Äìï%’l€?½¦¤6cà?mâÊÕ̾?è¿Nh‘*?ÙBžßšî ?àc)¦ùòV?á¼Ù•ž±þ?ʽê�ÃùD?ßz†”ð¨?ëv%Äý?ÃÁzVbÐ?˽88›rœ?슂¡Bïk?ì¦#œû?Ù8‡SøÀ?×¼b ß«Â?áȃGÖeü?êú,.??åU•og—?¶e1¥oà?Î,ì“"¼?ÔUû{ìÕd?ØnîpF`?Ûµ›¨Ôz ?쨶’TZS?á¡/¶¦ø?ïïH_=ª¹?ÒFËûMa^?ÕMB²Ð?ä�Ž@êMá?Õ‰á#yf?î¢ Fƒ=É?ï+*¥ˆ Œ?ãO|è�ú˜?Ûìì5¾�>?äa8Ù}„s?äÁÃÂzx?à‘Y(­Z?Ô±9rc¿Ò?ÁÓZr+T”?Ð#VD?ËZÌ‹ä?ã²ûÒër;?˜P‰¼ ?Î…"”ä?å-.*ëÚí?ÆÇhõˆ?‚âqcÀ?²Ì ì�`p?Ðmï*c3À?æ5üu[Mn?çP¢6aD�?çƒe±F¸™?›öz£åà?ÛŠÏÐ?æ™´n„g?âßþ“%sh?ںĠ—ÿÌ?»r“º è?Í ×l*ͬ?©-à°À?ì…upvå(?æ63²?Î5úAÇ´?ºy ½Êz°?íI¼Z•bä?ߎc‰ÇÃH?á¯äO·À�?Ó1Mcd�(?̳†û»?±ÙaFë"ø?Ü�Lb”é?éšaÔŠô¢?¹Ê `[È?ÒXŒçµ Ô?ÂùW €´h?ë0Œ®\Á?ÖÕéf¡Ø¬?ÍxƒÅŽt?ÝÇ�öä,?ßÀö©XÊN?æÉð<6åÙ?ærï„,?äÝÐÜ– S?â�Œû1¨J?ï¸Ç6?îØc¤?åÎðê4'M?šÙv¬ @?ÊxkD­™ ?œ‡Ê™‹s ?ÓÈ�^D|?Ìê¹·”¿ì?Ñ»H;c•¢?æ�ZS× œ?ï.aoŒ?ß„{M3ýF?¤ p%@?îÛî‹QT/?ÑA¹¯v?ÄJè8çP?“…Ai1F€?ä×ÇÓGh$?Ûé–§ªñL?æéëvœù?í²Ñ»ï¦£?îÞR6|œ…?ã?E¼½ú?סõãè?â�DJ £?å°cb™í?Ù7E™ªÑš?êûœ -{C?_š³ÓD?ç£k�Í2ª?ÇÚ?„ÂD?¾yÿö¿‘¨?å‰qêw?ÓÃÑnxEª?äËâ�˜ ?¡ Aµœ8?ëœ{(N?݃€¸‹Ö?ÎDØèb÷,?äË™©Ëš?í”Ñ‘ˆì®?è1QâY´?çWäI0=?çFû—Ú]?Ðâ9ÁÛ?Ñc%K|-¤?æGu@ ·'?¸YŠ¿�® ?ª 6$­°?бéü²Ä€?ãɶ½Bz\?í³ ÇîÏ?ص—rë²þ?Û­žÄÛÜ\?ÅXNò~°à?Äù4iƼ?åA¦¢’èø?îQPF;?»gÖ‚6x?ãª!D"�?ÁAX š ¨?×ÉDŸˆQ"?í‰ü±5ðj?êOóÓ/‹J?Î `ÜØŒ?ã!xŠ(¤ ?áO€ÔÂvÞ?¶z>nîKð?í°By¶ÿ?ë÷á½#f?ÑAz?¾€ôf £0?¶»¾tå 8?×Ì?ô±Ä?Á\âãc‡Œ?í­Êÿ[6å?ç_ÃaàïW?ä>Ê6ˆ?ÎûrË)¾�?î¾9±‚¥,?ßÖqtõ¡â?ê�_5ó ?±ƒREHç?§ò¤¿ã¦�?«iI2‘à?«” ãØ;°?ã¥|½kË?ÕŸ¦‘0?ã@D]¦¨?Ùú¬–ñ¶?íÇg·p¡?ä­‚5"?Ù'c|6z?ß{%–Ù:$?æzçÿû^?½ ± ýè?íÍži“¯?̬*-íÚø?‡�§'½¿€?áÇYÅNë?á´þûòE?±\kóÙ0?Àë÷ŽZ,?ÕÛù‡Ø?Ü‚J¨#` ?å̶Ã]µD?Ȥ‚Ò÷]H?´L\ñÛ¾ˆ?ïéB›`OL?ìjÅð¸nÞ?àŽ’ž»?ã=ÇЋõ�?ÒÇöFÊq´?èïTÍ"Ôq?Ù:8%‡ºr?¨¤nƒ)?è¶Ò¥q}Û?ÈïMXF4x?ÍÀ“ÍzQ?Ûcï`áÏÜ?ܬS²ÆÉ6?ÒI�¿9Œ?ÔSøƒ× ¼?¥’à%�?ìâÆ 6=??ägÁ?»�Â?ÌÛ–eßO�?ê=î·»òÃ?nJoRaö?ÓÕsžTž?áðt@-îz?åWð?ì žÝ${?×®�+P!†?ç8~àËfó?íƒÌMÊm£?ê‚6Ç?"|?ÎÜw逶?äVžZèE?ä8kyÀ¢�?äjd|™2¸?¦\lœ�?çDÏlGñ?ì¶'¤â‘?ìZà}�–.?ãäéLr²Â?Ïݵk5“Ä?ËúæNiPP?ÎÞ¤­àÕ?Ã|X)÷ H?²>‡lÒž8?ë­ްðí?Õp×"¢?Ð{Vó«Ô?ìÃБÜ\•?Ôæ6\0C4?è€Ô¸±òŸ?Ôðþ(|à?衜8ä?áhwᲬI?éæƒ¦Æ(ñ?Ç÷®¦‘C\?ìâ «"õ›?ä¦qÂ�o„?àÐ�°*G?êÅÇN?ê¤s?†#?Ô¿ì­�‚?è ØÖƒ"?Ы:ø?â °‰qrR?Ü>ñæ±7¤?Ùk´èå‚?ãʪ?õ*‡?ÖñYG#l?ßm¡Ê%á0?å¿ Œ›F?æTîÒœ¡.?àˆðàž?ädî²!û?áX’² Ã;?±[ˆ§“ǰ?ÐU‘üµl?–Ïáã  ?ÀøðV¤n4?ÄúztÒ ?ã#tÑÙ‹~?ï?¿ÐWÒÜ?Û…Á¢dÙj?âc5�A?æ–5H>š?ã$æ2ÂN6?뻎ëÒh?gÌÀp¸¾?ê‚°e?ÉP¯�@?î·‡á�D6?ìN™"p›“?æ•/ ÛÉr?ä‰%®ßEç?äIÉèS?Ûÿ<׋p?ÚôüzOü?×~@r?ºò?á0eƒ6o?ís³ý´¦Z?å%NÙ[+*?è[P¨b?Éñ‡©œ|ˆ?Ú¯ŽiHd?ì¦ó`‚‹Ÿ?íb�q)þs?Ýñœ�©Nâ?î{zïµÚ?á?ŽŠ�æ?åc™†.o¤?í1š†V¨?æîï{$#?ܧy ñ�Ü?Çcnz#ž`?Óp®µ“$Ö?æ”Ç,™?æò«Cê|?Ùh8œéb ?É ÛÉïð ?ë­tñ=ŽÖ?âz-6bg9?Ø oý�¸?à+8”-_?ä½×2µ,?ÀỸ.È?Á©¿y$d?†è §€—€?ìyñk�ì?ˆGŽà?ØxÇ|?ïÂMÔŽ$?ÚØnÜÅ?Ç ÅUC� ?âíº?¹g?êØE¡Øù?ÃŒX¤‡¤?ÂMæ¾ÒT?éí^½w”…?æ�8.?ì åW;oÒ?Èc[}Öä?¤s‚ k`?ß“¦ëSD?á]Ñhªª?ê¥V‹Pc'?ÙVèKÜ p?쟊7ñI=?è)i¶G?­(­Sž€?Þ„‡™×µ?æ ��z«ø?êß“bæîJ?í(˜2n?å¸j�ÕÄ?ÓÞù�‡oÎ?Ñ› Òo‹J?ë¦DLv„?Ø«Ë=¸h€?åÊzÁx@?Û.g'Ö°?çü0iÆ£a?åYÕaŸ=?È6%Ž£žì?äz笿?àJ~ÁæÐ‚?é8ÔF;?¸ö[|(P?ßßk»Ù¤?åð à²^Ú?áùÁk»ž?Á[Éf œ?ÔÀÎÏ|j?«V>,ž�?ЄÑöC²â?ãoS LêÍ?Á™±Œ îÐ?áµ(Ý©0ä?ãÁ˜Æ’!¹?ÐT»"g&:?î‹™áØ©?ퟗƒmEÙ?Øâeàœuž?àT³ÍY¿g?½Âæ1760?ã5‘uda>?æ¥Â'ÌÈk?›xZcU€?ÑIù�(°?à‰ IÃ'Ð?¥ˆmÓò`?è¯ÑU…'o?Àœ?š¨c(?î/Ö‡¤Ìw?ê~n%™$Q?á˜R UÖ�?¶—fǺþ@?›04ô¸@?ìgnP?ïñsl„³?Æ�%ˆ ¸?ÕÇ@ÁR?â$$Œ>?í/ä¹¼ ?ÊØÜ¾âÔ?Üñ‡»ì?é ¿±®ö£?Ô^-4?ï—Æ*Æ”?µ9ÐÜ9A?àµ�7ŽTj?ÑO|³ÅJ?Ú3·©à¬?è®edoV?¿Â M»à?ì<‡ïÅȱ?îáX É3¿?êý¡|�_‹?­Ø01�6?ã\xÔ¦€þ?Ïš:ô2¡@?áÁÅ›}Õ·?Ã9zG[%€?å¸ò1®»í?¸x³oX?ëŽÈ„ŠAF?×å5Ú 3z?㪒¢.«?|üUî!½?èEîîú·|?ºEix @?Û`Yµ$â?Ø´L;€Œ¨?áøD~²§?ËDgEŽÁL?Ó¿ §vÎx?é·Ä fËi?éñD¡ˆ ?Ül&C@<¾?èÑe½ÿûˆ?�è?q“À?Ȱ½; �Ð?ãÜþ•¹;¾?飹}”·Š?ˈáa}x?ë®Ù›WXá?�^­U( ?äóî|iäR?ïÕîhò "?àÂR^Ž?èâ½ÿÞø?å{cyÛ?ê°C&Û¼?ë®ÆŠIL?ìvéAƒî?ìþ—¢‰?â`9ª¥f?ëuòØ«f~?­6½Â8#@?ÕÚLº1œ?âGÍ8k2½?á½iõ;d?ë¼Ã?è•8Œlʦ?¦û§u  ?áÏ,hÖ?Å_’’T¨”?ßQÚ»\>?ÉYü„n8ä?Áž�ý?È?âö×øojü?ÒØ%0L?ÑgÃ]Î[æ?ïe½~Üu?Êâ+0EŠ?ãYXðëŠ?ÑÛþ{4öÀ?£¥[VES0?êÅJp’è?éX±œCî?ì’q•¹ðD?×$ç|)nâ?Øe»Idwä?ÕËJ̰Žh?Ò~[!†%Ì?Ö(»~bÖ¼?áøšüïäÛ?ÞÎ @ÏB?àÓyA!Ç(?æ”ù¾J?’†¢u � ?áûÔ¨GLY?ï…R"&)?§zaäG'�?À.ê(yDÐ?áŸæa6ÝU?Óae’Í´?ß<ʶ?ìÇäùßõ,?ÃuNQ=€?±lSK°?ç!M›>8?Ú|�Ž$H?¬Øom€?׉G›JÉ?˵l=¯Iè?æp�wbaÌ?­oÖ΃‡À?ëb¼¿�?î*ôî«?ˆ?ßÕ?»ºŠ?×u¨K0?êúœÞçs?ÓèÏñ˜?Ô >íå¼?×R…¬?î�l0+þ]?À¸·Ç?¶€ ¢­`?⇥y-?Ýš0º3¯˜?º0ÑLÎ5è?¿ŸÞ…1?µ°ß©^�?äNƒ�¼Q?ÚsW±kŽä?¨‰òk�äà?é$óÈH?êcÁ€+ê]?Õé…̇ 8?Ø0óùñÌ.?ÒÍpZ4Ÿn?¿.Uy›¨?½–F0TW˜?ä5È”?í�’²�?Ö"ýH«¨Æ?ï••nàÐ=?ˆÕþ¼r@?éî”,ߪ?²gñ©-þ°?é±kDó­B?Ûæ÷ÐÓ”(?çòg`I?Ñã®w]Àâ?­Á"‹ ÀÐ?Öab:Ш?àöìÀ ?µòÞè„Ø?æ4§QRÏ#?ìeò­ÛÓ¨?¿9_ ö€?å½”õÆs?°&�©°?ῦ´ãˆ?ÚßGq|?°Æ.œÉEØ?Ýñ =CKÂ?ÞÅ>M¾j?â«]ÈDç?ápBÜ%†»?Ä<= $_ô?äÔZsMž?é‰r…Ï‚†?Þ–ÖŽ¢\?Âs¬vêæÐ?êjàÝùIÙ?ÊèK}X?×ßù«—5®?³Yµ�͈?À¡ÉçèÛ ?Â!jP�V˜?ãlq~ç?�7r üù ?㘗GLúW?è21Ð8Z?ÉuJzÃ?ëÌ…„]ñ?¹•#ûÝ3`?ÌSkB^¬?ê…ý´;?ÊF'X8м?ë¼óë?ïñoº Ö?áGõ÷Ëó?åo"•¿õ ?ÜF“Ù¡Áœ?éÑ)è ÖÊ?º\kWñç¨?¤�F�`?à3ØÓl?áì1ž¡g�?ìàœäÍ?æ² ‰=l?ï�;ר›š?ßE•ˆ%ô’?ÙÑWKΦÒ?Ù ©P  ?Ú¶ƒXV?í\85²A>?Ó  BW`?äH$„)d?é%Y:úþ¥?¾1çùà?ÐÞ,a >?ß$$‰ðŠ?Ú°ÈEXêØ?ìlº‰ø/ž?äÏ�ÝæÏH?ÑUn(| D?²om&®_ø?éYù«$« ?ß‚î»27h?ÝÃ;Çb?½càÑ'û?â2&ÐÞ?²?|ÕåÙ§ø?ãêH¡aÚW?퀟U!?áúa“Q²\?ãã(,0“?á|þŽt³6?çÙ¦Š÷º„?ïî2�®+?×j}¨�?ßSRÁ&?ÇR»Ÿ¯x?ÀvEçNûü?Íœ_rú}(?°±°þ:¶@?¢Xîƒ!°?Ášï�ÑdX?ÕÕ—úó'Ì?é"WeAÒ?î3l5¯Wù?é’Ó5îº?êظÅl?·€ ȯ�?И·üOÐ?ï†óßZBn?ÂÎm”UíÈ?»Pvn£¼°?â{J2§˜?í€*8¡¾?ãp@ 0[?Ü|-Þ(dV?Á0ò`/P?Öy§ ‰ú?ÐfŒëà2î?ë�©w?éÂq™Üˆ?é!¥Û,?ëO/[ù?¯?å0ŠÄËfi?ÛWöÙv¾?â™f0•d?Ðýq® "?æåºÐ'À~?³ÚÁù÷Ð?â>*T7ý9?Õßb®`—Ð?¢‹0R�?ÙúÂsä� ?à}zâ×=(?ì²Â6bƒØ?픫=/?ï»�0?ØžV}$&?eÃrʧ?ìsñ0¿s?Óð¬eºJ?ï3]F(Þ?±½8Ök˜?âŸ%ÙÙþ?ÕŽmÈè�?èP¿§$$ø?—Ð*í¿`?Öot`y!n?íyã\¨�Ê?îþÔs]P¦?çbþAu ?½RQ¦Çˆ?íU2«ä`—?êTÝÏ�Á?è´†¦ ¼?õ_«?íÓ¼6ƒ†ï?›É¦xÔx?ë|S[zÁ?å€NÆôò ?ÞʵÀì?Ö]Q?Uü?ÒÝÄ–N†?ìlÑtX?陫)V?ìµIÓ �–?¼1`>W?í¾i>?í©BºY¶?ïïÂUv«?Ì…B �v ?ì8:äß•?Ü8`„éî?â�“ùˆf ?ÉUü™µ!´?ëû¯E³™Â?Újs†Ž!B?À}ù8ú‹ˆ?¼Sºßí?Ê%‘ /2|?çñ­É?ä9ê—¼.?êÔ�÷EÃ�?å9ö¹>'­?î`ÃŒ^±?ë\÷‘^ñ?ï1èÙË)C?î\!îrî ?¯ Ó\§{À?ÉÖŽá¶šÄ?ÍÈ̃Û$?㟯ÑYw?À�4ƒ|˜?ë¶@L?Ȥ.)ˆ?áãý¹bš?Ф¸K²_ö?ÊHIdVÂÄ?îÛõDw§?맦>¦û”?±b¯A+à?�òÏñ‡?á­E¡V?ÖkR*ÝÆ?éÎ:tÁ•ž?¤p•ou·à?ç­²º!Ì?Ó.PdPÜØ?ÒâŠi¬n?á4�1ž[?í.YLŽx?çä1:—¨J?ÐΠØ!´²?Ùr#%kè?çñ±V�Dr?¤~lõghp?Ø€"¯ Ñà?Ö¤ž_Ã)ˆ?ЭÊ~ì&?á«£àЉr?ÎWVȺ2¸?×çß´Ô$?ØÛS2»?ƽPdN�P?ìgÐÃø¨?Ø€£e= ?ær6�«?â ÿF<ƒ¥?ºXÙôžP?ÊÁÝe`ãÜ?Å/‰š434?ß…ÿ2Âð?î+Ø"i€Ë?æ�ÂU© Þ?Ê¥)c¦¬`?ÛK‹¢­˜?Õ@ IyKü?Ô@Ïgz©¦?�î&£Å ?á�¤.g`?èH²³ä?뱪\-‰?Ë1Ëz™¼?âkýˆk@?憞þð>?ÆRòðã‡È?îât:yQ?Ëj¡<„ý?ê%9ïŠì?鏸¦àŽ?ÜZA|w{`?Ùc;\ÔÞ?ïI¢8—Îû?ÃHÅL�¦˜?èËZàjT?Ú2¥)7V?Ó¤TXŸÀ:?âŠÙ‡ëƒ=?éj¦T!?ä;)È‹Ã?À¥¤y/x?à”Ië¨]¨?±¿äaE ?çñBÄ´^?éÜED/þ?“Êrn°ˆ ?ëKsÆ×ò?ìP±¨„�?Êj²ˆt ?ÓVëOöÖ?ªÖ>�ÌZ0?ÕpŠ o4Æ?Ô‡† D6ø?åö^‡¾?Î�H|¹[ˆ?îh£êÔ‚?çPt?çÎô1ìé ?Ó©f£œ9p?ï¯év$7?èFm¬±|!?í…LüX‚Œ?ã—È/øVÚ?äröš…?੣ϡq?íSÕp°?ëE|«ë<ó?âæÙµåê?ã;Á>Pœ~?ÝtìZ?ªÀâ¹fp?ÛzÏï?ÄMäð쌴?—òŒrl€?î•�²Ào?àIõ³¢c‡?éö'^vh?ãšóNqWÿ?êþGhc®?å:,Y+a¼? z f<)°?ìZ³6dG?×HH7sĦ?Ð!ŸÀIt?Ó¿_9‚?Úeá8*?íÛá)’?ÖU�x;T?äµÁeµ�?ÓŠHjƒ¡T?âõ‚;é?âß;P|?Ìôƒ7?£,?蚥/ñ?ÙáS Šf?¹i¦‚ÔœÐ?Ø›“Œ&ó?ÆGÖÃ"È?ÝÓå6ž?ä£Ü¤Ì‚?èÁä�õ^?ç¿kt³;´?͈Yel¤?ßÑ&97^?Ç•ǫ+h?â0�æî[P?ÏÙ™ŽLª8?èB5:šek?Õs}öVa?ÕßSäGEŠ?ïÛ‘†`Ìa?àâTp|}?í°*ElE“?àç´ž^?Ò À€•Ëð?âe:X�¹?Äè;Yá¹ eq?Úo´Ér?ÛPÄ:?ì>;.& ?° ©x?³ôŽNÐ?ÚÕž;�êz?Ûº‰„QR?Ñ@;iVR?ïÆ6ZÞè?äÓå[¸J?Û#B“Ä?æH¯©úlò?é®ã•®Ç?è!Ž{@!Š?Ô£¯8ºJ?ÞŸ¯È˜ž?ܧˆ?Í�X?àØ­=Ž£?ìq þpá?é¾”,Þ1 ?ÓD©ZàB?Î ­=x&l?á¾°9RUê?·Õê�ç@?Î|Ø>µ,?ªßk=o�?â�Ê­ÑYl?àÕì3�¨?àëé.¼%B?ëÎ!+¿?Ü"?DÊçœ?îŒ|ƪ—"?ÈE'èd4?Ý€ vl06?×Ûõ«-Ú?à�ù½¡ÉV?ãêxwÁO? p1â>à?à é¾/[«?ž¨žQ) ?ÕKoöWZ?ìèŒ(ÁÄ?ãÚp lL·?ÜâM©Ïä?ÜÁ˜È Çr?êò¨ÄÞ|í?ç…˜¾�?àÖ5«&?â‰- œ?´- K)³?çÍ15 b?Ü>´^]ô¢?ÔÝ$-tæ?Õ—^" œ?ºùþGP(?ã7l´‘MV?Ú13¸?é€,•g?†µ³·Ad?à°�öá?h"KØ.¡?Þ ߸¾ˆ?ÈÞM:ÝHŒ?Õ ¨#íß\?ÄôH· St?×¹vl?èëjšpŽ?ßl5F¡\4?êî•p 6?~¡ {"€?Û¶ Œ‰gä?äq±‡ Iø?Ë2”À ×@?ål�Lt?ê<‹Lª²˜?æ”5Áý?˰“E L?à è#e¤ø?À”yg”Ü?¿Ç,ä…è?ºÎ±8$–¨?º¥w¨ù&`?â¦n·Ð0ž?ãê¤ÖøS?èlð°f”Ê?è�¢Æ“µ&?ëP¡è?BÖ?â4;[óÄ?äFØ›:Ã@?ÉÔ–“X„?î]¹¢Pò‡?î2^º²$?á”CºÜK?Õ©R9‚‚Œ?ìüuÒê ?Ób¦%Àv?_lG(…?”ƒ·/[ ?Ø û04p?çÁ¨ñÞYÉ?ï‹Õ"â?ç�°eM?ámW,x?Åny•»X?él2ó½ÒÊ?çŠÔBþ/!?묾CÊ©p?Ðßv c²Ö?×÷Î}™ï^?ÓŒZYœDB?Ü\ÙñëM–?êÏ\kI�?éá;WsX?z7UûÇ3€?Å;z "· ?ä4£¾OŠØ?ë•ʾa?Ô#HU,â?ÓT=ωœ?»jÚKBŽ?箋QÍ]þ?îÜØ¾?ã7‚Dþ»?í_wûÇé?í0Ï­ú5?â뛺ìÕù?æg%€M£$?ר°ÖWž?ËçD© ×4?ç“É?ဠ¡Ì„�?à×ìÎy1e?傘¤Ó1?ãZøB½S?íã§ÙfO/?èGjÛ€H?íþ4– µ?ÌT©=ýä?Ã3%é9Iü?å¡Ê6=?¢fJ <?êZ"fdI??à–mhÃŽ?ØMàÁÇøÄ?©­-¹µ5ð?×åÂfÀ�8?ØHe2Tþ?ÐÈpÓj?Ã4ûh}Ø?Äf¤ª#l?¯JWa7Éð?ÛÀRÌ›O?×O€U ¼ ?ÐP;fÅZ?Äl¹›¹Ä?ä;éìû?éi¬— ?ͪÑÐ[h4?â“7œëÕÒ?æoy˜ø2-?߯ñ>J8?¡4 qÖy ?îfÒ0Ãû?íÚ=ŸLç?à3© è,?á©�Žq ?ä�Zrààº?äØeÚ°~V?ÊMæ]]Qä?ì=yÃ&$?Ô:&¦³x4?âG@9tÀ:?à•bI� K?Áª ¢=}l?ÛWj3||&?Ó�¬Î!ÜÄ?ÛÔ–ë<.¬?Êì‘?œ?îð0!¡e†?Ñ€I)»ø?Ñ38eðÇ ?̵i»,‹Ì?¸0qÆW¶h?×ÑkØ„ŒÚ?íË")]Ê!?ÙL%f ð?ᄇþmF?åO l;?­”ˆ·"¦ð?ã¯@gŸ)~?èz­�Ñ‹¢?æÖœ8·?ëHªî}³„?çêI×–Ë”?í(Kf‹ü?à¡òƒ„?åDSsj� ?¯Ëbw ð?ÃÈ?” º ?æüô°6ÞT?Ý7.„‚,6?Ìw| î`\?ÝæºnÞ?Ú\;ï–I&?ë¸?kÿ_Ë?à¼ÓäËš?ÒºÅ?™”R?´É’ EL(?±¥ß7äà?æ‘Pph²?ê`œhxIS?Ã#ïSy„?¶‘Z^&_P?횟DP‹?ê[~/?ç:JZøV?á]ÏóÒ?â}ýéS?ìጕ4¹±?ÏÃ6.NP?Á$*Ãg~€?ÙFÛJ*]X?Àž34+FD?ׯå|b/ˆ?íšp=Ox¹?ÎßËI)ù¬?æÅ»)€�¹?ÛlöpÕì?å5yV—3ï?î�G –ê?Ó—i}Œ^.?îA 5xŠÿ?áp×rV.?áÓh­+«?í¤Q«¹?Ê›€Åοü?æÝ2—f?î²b‚;®P?6ДÛ×?ì3,ãÿß??ß�B­Yn?è›TŠð¥_?´±�*œñ°?á�ElJpv?à{oôI�?Ý6”x&L?ÚDJÄx£N?âw& í?ïê$fÂŽR?êÃ91³å?ÜcØë ?"?ìýe¹CG?Í�fA4Ûä?Çà?nu˜?êù²r¯Xþ?ì¢xê2Έ?ØöFÚ$?æ©Ã»î?ÖC™K Oî?ÝÓ~Á{†Î?çdûu¾A?éÙŸd¹?ÀH†Ø›ÿL? E=ôãÐ?¬oì)må ?Õ‘UÞ’?Ô( ñÈ”?Õm¢9B?Ç&:J9‚„?½ßÀÿh?èã¿LUh?œ¸µYá€?ºrºÍÕçh?º\+£~Âð?ѾÊežÈ?ÑaÛï÷õ8?ÉIÊÊä?ïm„ß7á?ãÔÆ—²¾ï?Ë– »ß¦H?àIáão?å34òµ–‡?µìæ6-°?éP©•Õú{?ãÊ_¨Êuï?ì~&ÂQ�X?Ò´@\/P?ÓajRÆoÔ?ãÅ—ËîåZ?ã(þþÍ O?ÀΗÞ?Í[7>a|?ë€ÄÙl?äŸÆf˜G?é“LIQϽ?†”ù>e€À?í=¶*?×û{™$–?¾P &@?Ô]ïut¡?Î0µ½×7È?æ .«/Ÿ?¢òì» y€?ÑO_xÉÂ?ÕçÄ8Üœ?•\ÝBP€?Ò>n‚*rž?ÒÌ‚ƒÇ?Ç]ˆþ¯¤ä?ëd-,¨@¿?ËœH¶Ä'°?î�ù¯•*?ãú —uá?êþŠhCuÇ?Âó… �?Ø®B‚OOJ?±áá¨ßP?ÙKxÛmß|?ÞÐbHR ?à'Ñ`™‘Õ?Ñf¾Ôv~?ÑS啜ö?ì?â>7\?¹‚*:äÀ?æðz‘Àz?»ò\fiàP?èôÿt¹§G?Øéï¿öš?éP� ÆÝ«?æ0Ö¾Óį?æ+…l4õ‰?ܽrh½Z?æÜˆ­ð@N?Þ;Ãö¸˜?“»û„1DÀ?Àe�Gï#`?Ê |y Ï?䟚þÏüö?ÐAÁÒŸüþ?íÈdSÒøv?çÝ�ƒq�0?íxèÏt;?»ieA>ÖX?ì‹bŽŸ×?ÑeÏ``@¸?áX—B^8á?¥8ÔqÐ?ã´x5¶€•?ÝZ 4¼Á|?牴G?ä£Gú‘ñ?äò¹^"‘y?åFYý¯© ?Ñå8Ön‚Š?Ýä b8ô?î¨ÿsõ?¹bNÉ¿E?“” À?Æ} 1¸•ô?Í’ëß�Zx?æcœ…eä]?ì- µW?ëeo^ôj?ë>ˆµ,ú”?´³j|ùá ?î©÷º0Τ?—á�ð ±à?Âדúªô?Û+Ø�¤ô?»6úú8?êû•8A›?ì=Ý¿ptØ?ê½d†`´ß?Ï�uñ�l?ç)ÒÎ$;?Ã/I�¤?Û§âå@Ö®?­³/÷'¼?ÃÙ* Ý�¼?â&júWŠ?àeÑL„¢@?ÑùÚý¾T?Ë“Þò^`?Û/h&;Vò?ã¾xÖ“‹p?•›>¦Ï@À?ãÂ�¨'[?ã]z²ê¡?ê×;gÄ-6?Ôx§$’?Ô9m?CÆê?æÒÍ;‹3-?˜»´¦ ?Eè‰6?ǬÁÜšØ?¼P5\30?¿»‚V,x?âS-s!¯?ï+bØÂW¼?Ê%6Q7xX?é|–{eæ�?és F)1:?ÚtØlp͵î\?é!&v¼ƒ?ëT+ #?îéL¡œ ™?²‚%dàXx?ÄGJe%�?©áå¾ê ?¤yyÅað?ÆXˆŸï‚\?Ûœ˜òj ?¶½º½Öˆ?ì¾Ì?CÜ*?íó§gŽ…?Ù2Ó¨ßèp?×½‚¾yÎ?××ÝÀ?âÚ—‚Q^ ?àû²hß?èÒvi]?Ûʃºi?äPÝÃy?Áî¶—�Äð?æŸ|lëw‡?â6ìǶ?åýΈ¹=?ßÞVÞføÐ?æ²°Z¹„?ç»%•‡;?ÜCü":?à­!&OTt?Òž7+PðÜ?èá M§÷k?æ”æ ›ñ?ßY®j/Ø?Úñ`öqô¤?ÇM–‹ŒÀ?§$^ž—àÀ?Ð^¹EŽ¥à?è×� ~~?Îoq!r\?ë'yïs€Å?ïçýCD?Á�k¶Íì°?ììLÓ£”?Ì@Ùã¤?ÝóŽ" �`?ÛGÓRŸã>?è“÷vL?Ü#õ÷N?êYý ÊÂ?ë3kŠÊWg?í‘'QÝÞ?í«qã¢s?ÚéŸÉ(‡ ?Ï £[·h?Öc&ˆœuL?Õ˜ÍË@ñv?Η(“ƒ2Ô?çÃi¯+äÞ?í¸[ÙØÿü?ÄÊ»¶Ì Ä?ÌÏÎ/K±Ð?îÜúÉ*à?Õ{�´îy¨?Ï€²�Bk4?á:2¼`Eò?ËÑQ Ïu�?î&ËQV6?éP³Ôtj?Üìü¬€?P?ï¥'i]?íÌÓµ”?â¶:,À ?¹Õ‰>!?áà¿£7’?°Fx[žp?ëpT'¾–[?íÿ±HùBq?×9a–óŠ?à|”uI~€?ã¢Ý3k:¿?åEŽDB6?ï~–]ï ³?é}1OQýë?ìDË|¼?âzªœƒ'ì?ëóôKm!?ÖIšègs?ÔÅ:•ƒnH?å茦á?ïÔ°!Áí ?ÍtgŸË8?ç©’4ïb?ìüÏ!Ö-?ÌK\¦ä*8?ßðC>€mÆ?ÉD¸Ó€Ø?Ô�¸•jÀ¸?¬_Á]©?ܰ^_y…2?ì ÷q†G?ãÒ—9øs?´<‚£Ö®è?ßÿîà0?ÛhàS+[ô?ä+Ó«G©?ÚÛ±Ó p?Ñèa¯H•0?ë^Ÿesï?³—îñŸûx?Ôßš ¥ä:?³m_ÿ\“€?à°­]¸¯?éí‡?Ì?çFqF?à6©1"Æ®?àÎ\zFª?í>C#Öæ¥?ìÐ)7y?Ô=dh)À"?ÛRQ1tä?¿x;ûÛp?ÕA¾µSÉ0?팄jól;?Ꭲa«èB?ÏeSä?´?Ò ŠÊ?Òÿ:mɰ?­Ñ+Ãç ?¹x\]=¸?ìÍ}ú?í†)óÐCl?Ŭ6@¨ °?ë-}šÇò?î׿jÕ4?Ú¢`‘²Zö?èâBç’�Ä?�¬ŸýÎcÀ?âO¬„�Ý?àÃäZkî?â¡€-²uû?ç¶HÀËÆý?ɸ‚÷Ü ?åhÁ‚^]é?í1“ã‚?Òä•ìyzì?Î|ÿ”?ê'èWÓ%S?”Ï& ?îPŽóz?Ê7‹¼³¨?ÃÑZÍë€?¦àõ›?Ó¬ö9ið?ã@„fžU?î¬äûα?ÚP³ùŸì?ÎÕGÙ](d?—�EgOT`?ëZÅ·ðy?åCxØ`—?€nóf‹ò?æuI­!A?ãà©7Š/X?×ùwÛQà?î|#­ûIe?¶t s€?›�ê:4¬ ?íK;c¹¸o?äojêþIÎ?îì48%tQ?Ó%ä3Pð ?âÕŠ‚šÅZ?àº`"Ûi/?ââg’©5†?ã7[ßÜ?èØr®Æ?¡.ï¹ð?è‹Âj 5?ãHþ<é—p?ïžÜN_ˆ”?Õ¿efj?½R— °H?×p-ÛÀ*ê?Ü!ñÈ‹xº?ê ¡Akà?Üdr+FdÔ?Ьïp8O€?íM¼Q«…?Üg˜ka”?ëÁªPb?Ü€Héé?¶?é#4€r÷7?°]Cý®V`?ãhWœÜf•?ØGBß�˜V?Þ c«ÄH8?ÐäB#¯†?É$—|ð0?Å<Ò* h?êC¬uk?Ô:åuì` ?ì-ùúšh?àBgކ‹ÿ?ëý A™ ?ÃdK2C� ?î©.ìõ÷?ìÃëvë?éÈ_N(}&?Û’cQ|Ó¦?âÍÇsG?×eÛ ƒº?âÆ2ЫÑ?êCç”X¶?î‘#Ôî«”?ɇpêØ?å‘•÷^r?ß°î!œSz?ëíA!U X?Ý ž=Kò?¼=Ë~‘ë?½Z¸Aø?åùÝ÷¦â?æäd¬/ö?©È�L¼?ÔŒ,n|Äv?†Í¹+†À?⌱q ?ï‹c$`f€?â ˸?¨<¼¹Íóð?€å²ÀÓ/?êþ�Èš?âֈ¹?äÌya#�?á‚Z8‰}ã?éÓÊñÔ}u?Ýóœ~¯’?»D¬æô«È?æ#pÅÏŒ»?±¡Ø�@?èº-yšó?×òÐU¼œ?ËϦ]¿à?«´l—Ð?麢Y¦AÉ?À=V¯Ž¼„?¯1Þ¨ó ?è,½ÙÆž ?ä&LÃ:€ÿ?ÞC-nµT?íÆ˜¨3P9?ë-U³ÇØ?೯ƒñ²?èñAŒ6ñT?ÔµL�*vÒ?ê�\úxÃÙ?ëËÄÃ01?í×OÄßý°?èT ®#?Ø>L‡nÕ6?çÃ$^+?ÍÅ~&.šà?èÒ~úÉ?åüoCX1?ªã*åá7 ?Äô~�€?ã´F�Ùÿ?ßbk´>·V?¿§¦~x ?ÔÈ.Å.©$?Ü¡›Š¡+˜?Óƒ“m[yx?îIÅ÷`G?äø›‚ŸF?ì|¬Å5F?Þô…/…m˜?ï!7œŒ¹?á|óYcíô?Æ3�y¥Uà?Æ„Yh¬,?šðßÌgÒ ?Ê"ŸGëÅ0?íì=rwÃ?åp¯+G%Ö?çs S÷‘\?ت¬Ûå¾ê?ïg!vpX?¹‰½C3ø?ÝÃÀQëœ?Ù¤O~ðB?È.Û£ŸæÐ?àd¯?ì²wÌ?’�ÆŒ·ý?çûñ—FaÚ?êwqë’m ?ãI84`’ù?¿BDº@?Õ}rCµ|?áÞÔŠ™q?äf¼êfZ€?ìIã’q¸.?à‡wx=œ‚?Ùd¤ÿ؉Œ?”š#ðC?éž_ÂYY¤?ç°4FÆ£5?î ~‰ò n?Æ€:/¬t?êYòL[§?îˆ@‡?ÑrGäB ?ÞyìNê?¶éƒ~~ª(?¶õHª+ ?ç‚Äâ "?͇js5™?ÝEþ Ʀ?ÐÈi+¡Š?îjê·IÐ?í…Ïçä?áÒôÚxä?í}7ñ“�?â‚ä‘v¼ ?æJ‚?Ô´ÁÍÊ�t?“9F_)?ï;×/t!™?蟽‡ö×?딣…ë4?ì&c8]ôü?á÷‚J«?çd6æ1²?T$6 m ?ãD~%ZQ?윚Ò]š?ç4ÈÛ¥?À§Þ[EÌ?çøí6Â?Á]Ýx$?âh p•ƒ?й“O­o®?í`%°�Ã?â++¿ï4 ?åéÎçÞÝ?é$€^؇?Ú(p¶Â\Ò?ê¿â& ¸F?ÞÙ,!³"ä?È*K($?Ô­‡ø¡dÐ?ìhÎÖ{&?§Øÿù^0?Ä,L1o¬o÷?^í†mš?ï$dä¿¢?è ÐùŸ‹g?¹h™Î—Šˆ?³¿¸_ú¨Ð?܆áÕlÔ?À”Ϙ¤?ëÞ×N¡?è¾³hB�7?í\üìÌ•³?ÚV�§› `?çk (ÏW?ÃvM¼°?¸?À„ `�Uä?Ó]_C’H®?ÜÚœà:n?Ûn(ídf&?í/‰KÚ?k?ã!ßc?íºJ¿awð?׀ǔõ¹Î?· ¦ó~H?Ú8pÙ‘ ?ÑaSŽr?Å�ƒÜ4ð?ÀøY{«ÒP?åËDz,sƒ?ïm¦m™ù?ÉûMë*¶ð?ÝU®q A€?ˆ�L$÷ @?äË Iíæ?áíFut�å?îd’Ú} #?ë¼é›ts?ƃÑ)ܘ?Έ«ÙñE4?ïüxæÃŒ-?Ö~¼¯Oux?çqˆÇZU?݉�¡Iëø?æ ð tË?ÒÃHŽ·±f?äfcm^Î…?E-Zö5`?åD¡ß¶)Ø?ç΂8ƒN&?ëÜS¶`?ï.ú‚]Æ¢?æô‡–fáã?ãóoÚ' e?ï�K‰–šé?Ð9Ä)O\?à�™ÒÆ÷?ã8ó•ëO,?èëIˆ�±E?ìx˸šÉ?ä�9Ä—?Ù*YX^¯?Ø�†Zµõ|?Ûò¡lã0?ãØ$P^èP?æxŸSàlE?ï•OHŸÛ?ǽM ¥Kh?ßé×é…uÖ?ètbŒ¥ëä?áñâu?á±�lõJ?ß°^€ïÉÜ?ÐAl»G\?ænE<’,?ã»JÝqâ?ïÊâ ¤˜í?ì‚l˜¥X?ÌE²—è?âêÔ§/>6?â–¥…e?;?ëå5éÚ'? ’/£X�?á_~Bís?ÙÕ¼HýÄÐ?ØZ³€˜?éß�pf+Ï?ÔÜ%ÐíQú?èú ²yIÛ?ß³À)ì8>?ÓaDº8X?”Cn?84`?ÞíªvÑžÊ?ê×øî!þ?ï²èbÉ?è¸2fG?Ô�ث؋D?ÊH=<òD?Ÿˆ[‰%`?îÚâ^ÝÃõ?ébÊËP¯&?ämD̽?íŠ8Ú³7?ßXAËZ0?Êø€¤%?µZLé¤Kà?—sëø &À?â¢×å€é«?ïY2�>‚€?æêƒd<Š®?ˆ‡ñeôV@?Ú€sµk0¸?±Ö9ê˘?â‘,«ZÑ´?¯œ"å—ð?ÉÚ¸3Q×?麎„ M?ç¹�¼3�?Ä×£e}÷?åcØŒá)&?íŽ6N+=?ëEêÑz�?éx”v?èšÿ0ÿK?ÖÊ­©ëˆ¾?潺‹JÖŽ?ç»yüN?ÖDZ•îó²?ƼŸ£-ÔP?¶ù#XŸ?íùpÅDÌ¥?ì9“¦ M?ëGŒè?÷›”Dè?Ûi2í8Ü?ÒŒ,ö0?á{ÇBëîf?ì‹�8¾ý?ï:¥Q¦Þ?æFbl¨£?Ôþ…Nn_?ê:ñúN?ëÅ NŠ¿Ô?á8ýEãÁú?ÕB~Ÿ�[?ìÎåsêµ`?›OG©O¢à?ìSål =²?©8v•„È@?вiãL‘?çC'�ìŽD?édôŦQ¹?ïáÔ£=„3?̪jп/4?ë¤ Œåï1?ÔÌ�ôL"?ÈwÚ�A¤?á5¡èy=?ÚÇŨ.èÆ?¯´ÊÒ?âj¦_“Ñô?î$šÉÛ?é2/•)¡?Ϩ\okçü?Ò¡@ül<®?擘ùÙÎ?¿Ò³ùná?ÂÛyÚRÙx?ì¼�m\}ñ?ß0'+ÿ½â?Î7Ûí=œ?àþÁÖJf?ç]áe:j‰?ç*mÞ7»S?Ó«/Ý“èœ?ëÇ%@\ýN?âÉç›E?î P'ÿ7"?é#m¶­;m?ï£åÓzQ?îm®{þÄ?½™•¡;?æ¼Ì ÿX?ÒY"ïβ?⤖9²¹R?èƒ�à²c?¡‡…ÕF4?æ±@pôa³?¸y/OoeX?…U�½A ?ßì3‰lò?Û¬ía¦³Œ?ï·£`Š ?ÖA�7eÄ?Àuø÷ÒŒ?ÖôDáÒ ?Ø’Ê8Ìl?ÕVFi�%þ?í$““÷ÿ©?ÈöÁÁÇrx?ÁüX×íà?Ì‹#Ú t8?Ïñ’¤ˆ;Ø?ìÊqa^ß?“ãÚ$‹@?ìmÏŸMc¢?˹¹í“ ?Å"Õƒ!(Ø?£x¶ˆ?Æyï@iM€?´|«)àh?êtà÷hGû?YQQe¶¼?ãLÂsÇ7y?ÅhÌÿÔX?ë´ÅË0?îT'_6 ?y¤Û$,F€?ÎXÑIõþ�?Ûç�zÁ÷@?ÕÿÄÏ18?DZ SÊ?¹GÉnÈ ?îzÐú=va?ƒÙ¯F[N@?Ö·Ú–Ð?ìn¾¹Ò?ïû”b�sü?ÈÖºJoŒ?¡&îÿ±p?ë5Ʊ[?騇æùÜß?Ó*m” Ü\?½*h1€x?ë•ל !?×_nIxC^?¯h.ÏdÐ?Æ)b‹b˜?Ì " K|?ê�–‘@?¡J‹Qà”`?Ç"Ö?ÆôÀ?ø«ªnp?ãî…iôd?æ»Å:³8 ?ß�ckì|?íCn'cù?鼕#?�`?ç}lµ?ÐLj‡›�l?¿Òˆ,Ï»ð?à´Ì_×U?‰Žå(ï€?¬„�öwœð?î±ø~€Ž?ê$dI?„Èz· €?í¦�ư/X?¿³pÃ^�à?͇;kã°¨?Í.Hö_c¨?ÊÏ+ÐI·|?ß•/3®•˜?ÌqbÌ%À?ïEÄ/ëùö?æ@§¦'’?ì׬þË…~?ØIFè ‡4?Üû”¸ºö¨?Îãdð÷Ç?å÷ÄHç80?㯔 z=?ïü´éŽ—™?ê /»ìW²?éþÒ½ÅÈÇ?á�eaV[æ?ÃgÏJªÅX?ѸOþá†?âÎÔJxø#?’šõÀ"°à?ã}²¶›Ä?Þhí©ßR?êáXŠþÝ?æýxõ°?îj§6}b?íNÃöUÍ?ádÄùôX?êºÆx!§|?ìÒZ —Ù?¬HvÃãÀ?Ó,˜Iˆ¾Ê?Ú|¶©"ûd?ÞàË„‡?Öº+Ùà%Æ?í‹Ñ[Hßr?ç6x}J?”Sb¨VÁ ?˜[¨¹?Î1KÇ ?í¯‹ÆÇ?ëIÉâ?å4áÎHÉ'?Õ”$d\œ ?ÑI³‰6¦?ë`ÑâaL?à:ÁBÒ ?çYœãuÙ?Ôí‡ì—V?í?R'[Ì?Ŧæ#Sר?ã�l¬˜y×?葸¬ñ@?ßJ[Àþ„?în»P<"Ä?âƒèuAÑ?Înh0±¡ô?°Ì@ ¼0 ?©8Z‚õ?Ý÷‹|?«@wxNTð?ê¸îÕ´\?À´‰-�d?Ûåhë/>?ëp±fjvj?äˆï„ãÐ?縎Z%™?Ô˜šâ"À?Û+ÛMÎH?Õý}êid?ÒXJ…t¤?ׂ¤!¡J?ØE‡0hü?Ø0)søz?Õ<Ïý/?È{ö¸ucô?áýx¢ò½ô?ἨMOÛ?é†QQ{Ëö?×Ì'´[:ì?êïHÚ/?Þø$Mêð?áä,¼©öá?áHŒ�uNÃ?çl8¢³;?¥›# –�?ÓÄ“¸N€?Ö.¯Ñö ?ž¡)5¥p`?ìòÙÐQ´?ÁKcLJÈ?éW{Nþæ?â™ù¡\ÖÛ?æ7Q¾NLL?Ɖ’"è+œ?ËnüÜÞÄ?ëÕð${?éòMfÈ?é­„”w?ë›Ø¬‹?Å9.|fð?Ì.:·…÷¤?çÂ�4È!?è�¾íñÔ?Í5¨) `|?ê)¡7ó¦ë?Õ±M›H? -ûD�‡ ?Äòçøù`?ËÚîLQX?á7Yßg9?äeÄky?Ð܆çÞ6@?Ðú¬o Ñô?صx36OÐ?àÊOÑû…õ?ä b…¡u?ç ª¸–Ù?¹Žì§}ÍÐ?ÉOŠW:ü?ÙÔQ0ÿz?Ñ~w? ²È?ãÙæ®õ.R?ÛOÀTJ=d?å Ä§ïp?§¶þ}uš€?ÓaF»™8?¸(�쉨?ëxí‚¿òÍ?í ©gG£ˆ?é�õ‹i?Ñ/E^û?ØÍÚÑ›Ä?Ö!H^®š´?Ðp›”;”b?Ý×‹F?€Uú¸o?æŸ0¸\!?°¿² Î&ˆ?¼�¹ƒ:È?µ|W*"yX?úØÒ;“?èŠ"ïi?æ x¹‘?í ~ ?Îâ®gÓŒ?âÀåÅ÷U?ê“êã»o,?Щ{ZÄ(¢?ïüo ŒŒý?ïÑÆ[ÕÖ=?ÏeàßUÈ?ÙÖ³‹\÷–?¾£éw͸?Ò/ÒÃ=„ ?ÇH`k ¶€?æþ8nºŠ?Ñ5A‹ë¥H?ëº |Ñ?ÅúëÆx?Ù×(œYj?拊�( õ?ºµ“b6P?ì÷¯Å Ä ?îÁ(Ë3f?íÄf�¬N?ê�¢Åݱ?ÞÂU>Â}ô?—4ñ˜"Ñ ?Ó§\r|Á®?Õ!¶ÍÓ°Š?éÐE5S!S?ßR SqÊ?ꥳn�t?ãÛiå…®?ÙÏóÔ�ˆ?è¾/üŒú?Ê¿º²ÄÀt?Ôø‰›4Ì?ë~û¯¤Gý?îBFØg??°ŸUCí%x?Ú’�-êÅŠ?à†£ý¤0?½T4nô¨?팈s¾3?Òä%C$Af?Ï[[¾Ä?ìªvýðA?ãê`úã?î;ö›8R¸?àÿ÷ƒAŸ?ë8¨šÌ?Õ¸ƒCýD?Ù=lrtæ?ßH;P#å¸?ÝùÓôÇô?íºqüœ&ë?ë��f¸?ÒØî-Å‚?îdí:�µV?ÓËKôÍ®ü?Ø6�³Îó$?æ,Ó)|¡j?äû ØDµƒ?ÙšlUˆ\?Õà–¥³Rè?é°y#vÌ?—Ô”&gçà?Ú�ôÉmðæ?åF6Ú`Ï?îR,\.�?¤½[¾º¦à?áž¶R"’?í/‡|˜à?î7î?ã]|ÊÀƒ?ìçv¦~;ƒ?ÑYÃ,(ë>?Ô,AYà×>?Ò› ×'?³gÊ.º?°?ØŸ&mG¾?Ëî’àPÕì?å���±·g?Ù÷¼›·ã\?Ì� /¿ì?ÐùðƸ?ÈgªÌ×Ô ?Ûd›Ó( ?ìD¡ïÕ/·?çP w_Ú?è47�¿uE?Ðpõ™ Œ?î�h’òØ?æ;É`¬Yr?Ð1‚c5”?ã6ÜmŠN/?èÞÿŸê?Ú©Þ-¸�?ïÃ,cbÇ?ßh“:U�?ìH ëÿ�Ï?¦ü—Maê?ஆýt»t?ßêjø ?åV\µã4¡?ßê„âp¢?ÒœL£CGh?ê¶$øšµ?ÞQÙž¹vÜ?æúˆV?Å·SñëŒ?éç+Ö™Tœ?ÍÁ–$šŒ0?ϱ@�R§„?Â}Q:SRP?ÉÐ^~O?y$Ãs™€?Åæž·È?ÍÕs?Ê`�&a ?t¯=ïB¯?Ñ%ÅW¦¯Î?ç2—6 ÿ ?ão_›NÖu?ìÚþ½ 8?¼ÞnÀN°?Ó‹Hóâ°?ÞݵTöÔÚ?ã ]ya/?í¡®ÑE ?Û¢ OÏfà?æø€Ú„”?×ý=$X?ÚszTÝí8?ÍôeuKD?ã<]¬ñXÏ?àdთ‘?é~¹ƒ“¾?æ@�D`Üã?—C×8¬g ?㜿>¯.?~l2!ÊK?ߣ¯|}ݶ?ÁMpÉH?Ñ7¤–mr?露òÕ?Õ ‚!žŽ?àIÉ·ÜêÜ?ÕµSª¾¬?áÊ—‰;c?ààžã`Ž?⡚š²?ÒŽC£Kj?ëÅ<�¼ææ?Ë€¬õ½"€?É·E†ÙcÈ?è�NcêðŒ ’?äiû¼ôÓ*?Ûô ã€8?ëõú1®†/?Ò¸S³ïŸŠ?ê >[vô?ØvAkzÀ ?p MlÞâ€?Ê„‘{5¨?áÈ06X&�?¿‡Ôyî4(?Ð :’H?»Z 2=PÐ?â"„;$?Õ\©Á’Ç$?ç³s˜Ô&3?ÔÜÒ³É ~?토 ™Ý¬?кÃ9w¡Ž?Ñqz%#ó2?ë©ß�åbç?à?¹ëø¨?ã5W�VC?áâèïÕçù?èpµ1Y3“?ìýLÞˆyâ?±ça{;Ý ?à$óìù6Ý?íBÍî �?ÊûGí?ìÀ¿�K?áÃ÷êè‰�?„+\±W?ãªùÆE?Ò[¼Qˆ^è?åÀ5£VýÕ?ØÜívààÌ?ËMîŽè2\?Øo ¢£:?¾zëe@]È?Ü12Ú{V?Ó–3i›€˜?£_, š�?ì~ Òõê?ß_Ñ[Dgü?â|¥ƒ¬÷þ?îo2r¸6?èÏI+ZT?‚‰‹u?épÇèpI}?ãât½¢ /?Ý{Bžþ?ìü�qÌÜ?Õüª4ŽeX?”î^T?ÂÆ©�U^L?ÚóPÒ2nF?Äu�­êßÐ?æ‡Æ`eÍ^?ì}*TA¼â?Ó¹ÐÆ-—”?ÕpC³x„È?ãÞX›Ô@O?å$Þ‹«Þ?Ô=Rý C?Ì °-hL?àïÕËž?áÆŠè”Ø?ã M×RÙa?ì’ðL%?˜ø#5Ÿ@?î–&;ã¹§?Êæ«Ì „L?À“}@ˆwŒ?îÒ�[â”?Ðg[ÃJéB?¿òCú; ¨?Ô_‰�Òv?µ‰‚ð™?ê+6¬½Ò?ä4¤Q¡¸o?é¸,L\òá?ÑýèZž¾Ü?Å~ÆÉd?é[¸;°Ø=?è•]�Ïl?æ‰Ù ±7ú?ãù"’°?Ý.©"J ?åÎëóc>?Ú¬í]¹.?ì«&»à%W?Á #Õ[D?×0æOžH?ÄÔ=zå$?Ö>‰dl?´F«x¶H?ïM`¾u?ØeDOÞ{˜?å9HÆÝŠ?Åsd[Æo¬?¸òDr×à?î¡øáLÙÐ?ãÀ,¡‹ñò?ìýÌØgèS?ç†âUbí?ã×1Öø?ÓígLÂ�Œ?ç쨔FH‚?èKHÉ­Ö?Ûw²Ëº„?Ðuó…ƒ0?̨‡§™h?î‹óì‚ ?Ô—PúÙ?ÍßVä2“œ?ÛŽ(™çd?Ъ8–é0?ÄÆÚxëŸd?Âõ«q–?Ñ>$#‚²°?ïñI§U°a?ÖÒ¥$�2R?ìj«üP„±?íŒé] 8ò?ïTšK,Y?ï‰K˜@ذ?س�? AX?èȘ5r›»?Ùo�ƒK\?—¹¸Í¿ ?Û!, ¿*D?íÙeC÷ýì?ç—õ¯V7‚?çO)BÆS?œ çVLà?°\ Y‚µ�?ÈšƒXƒ¬?ŹÙ“EÀ?å&9ÛŒ¤¼?é¸S“Ã?ß+¾ÞøÊ?îü…o£?æ¢ñ�)Ëj?ÓXĜծð?àÛ)9K¶M?~ë�M€?àâZ·r«?î½FŒ×áû?ÈóÊ6PÐ?æ"pü”\m?Ñïw †n¦?ë!'Ø]çK?â›W@ÙáÎ?äMr_3Ü…?Äͨ£õöp?z†þßx?çE‹öŒ?�·6é? ?ä‹Ý5Y?ÐKŒd‡x?íÐt�&æ?½ºÈ(Æ{à?ã»õPâb`?ém?õ˜l?îuš&?ê]G�}í"?ã“LO…ò?Ü®³A²k?–5h’/Ã@?â%ýÜ»Åc?å—éJh [?äóÔôý“À?í~ï0›Ó?´U9¬µV ?Å´�5aH?ì'Ù¹ñ?íîIÓÓ•‚?Ñ•P±ƒDh?áÐl™Á|?⠣ߦŸ4?Õ%oúÓÆ?ÑLd1ñ@2?ç ÅãeÁ„?â¸íáë?â¦n[£T?Ô±l‹Qàæ?êÌ´ñÖ}ù?׸dBHû‚?æÑÆO½°è?éïF¬šQƒ?âIPC–b?ìpñ«çP,?Óìu9#?Ö�ÐögmÔ?çß¡`á�?âÙ²—t@˜?ì#ÅÌ1nn?æåªûFÍ:?íéJ4XÄ?ã •Uˆ«Î?éLÉŽÓâ?ßQÌcâ2?Ú”>Ô| ?éÔjû¨×+?ì¿yw?×QòL2?ê¶ý¥hƒ\?Ý0& j?ê |bÊ?×,úƒ¡ôÜ?µ˜ñ'`?ç×òƒß9? ôfmÞP?«¾•œ0�0?q‰DØñ0€?ï³5ã„ÐM?ÆâgnÝ‚°?ãS'wêÅŒ?âL·lÙ­¿?·}¥oòÈ?Ófæ[$pª?Ð Æ Ìè?§É†û)* ?à°Àý~?æ—2Å’Z?È×”ÐÉø?ؼ–¹Òï*?ëòÎ#§Ëé?ß¡ÁMQæ?ê ¨4°¤?ÇÆʱ?ëø÷#ƒëê?æ¬ïc�dD?Ì53Ö¼?ߺA":‰P?í#„÷س?âæt}�Üw?âÝ^;Þ?ؽj°mÝ?ä¾ÍЦ?Á…†Ä8?ì}ÙÖäÜÄ?äÎäòâ2?Ñã©#1?á]?T°X?êõg_ù?ï$ŽGÚú¶?žŒ À$µ ?ïÁÜ’ÞõÑ?¢êu… p?ÛÆ|�bD?íQUvÊ¥)?ᑺӰ¢¸?Ùúm‰?2?à…‹{=Ñ¿?àéœö¥`ü?ï'l {½?âö#HÍ ?ÏÓ¿FêoT?Ô,Šªí*ð?ãh¢Ã¨íÈ?¥U»lÏÞÐ?¿PS¤p ?à)É|R §?â35Î¥#Æ?í ÷8_ü�?à—©§Î3Ü?â€*® ¦¶?ÛR_�N?äE†''y?Ëx­^PÖ,?áˆV8rya?âr ZÅ€m?è¤ÐÀ^?á^¨ýŸzÌ?žd.Ñ}‹ ?ã:“æ¤á?ìÎõÕ®7¼?Úl€Ÿb¬z?ÍS�ãÝÔ?ì�nys•i?È9¼+Îi´?ÒÉ98 4j?½ú£¨ª3H?ÅP!4-+?åᇴ¨‘F?Ò(ØõŸ_|?ë:ªÅ×?êg¢ýºÒ?ÝÅÖ- 'n?Ü&ó*ûÐ?Ññ€Bz?ãáæ™¥1'?ç6•Êt‰?ÕÅ{jù‚?ÏNms©„D?íl ¸Ó1?çHÝ´4œ?âñêO‰?ÖqK‘'è?ЇSB,p?Þ�ì+çÍò?éoÉÙ*Š?ÛfÞþGà?ä ÷‹ôê²?Þ¢GžÈ½œ?в*gðwB?íÙNý:ý;?è�—èSZ?å2zõ?ë½–—Ë©¹?»×Ð’ϰ? àµ`8„?ÌNRD¶Ò?Ùž*9¨­ª?̤.3xÐÀ?Ü<(¦È?á„‹8q?éêxW[?ìç$5‰6?ÕŸÏÐQ†?îSlëÌ?쵄 |F«?·ã@Úˆ‹(?Êu[öü?¶VÒ8¯N ?Ùà¤g^AØ?¯d;9…p?è+õ9þý?ÐCîÜß’?äYr¼€ ?å]Âûá‰?ç$4÷«ä¢?áŒêgïCR?Æ÷7»óæL?éxÔj??ÑüNêM*?ç<,Ou?ÈüÇÿõL?ï°ïVNÝX?Õ¤*¹’r?Ò;Z=é´?Ñ>žV ¬˜?Þ¤œ$ÆÔ?À:¯¯«;d?欱Ó¥?Õ=Ûl­B?Õ�²#�ô?ì’C°µK?ïlÞ(ÜDÔ?¹&¥ÊŸ¯x?¸ ¶Þè?¢6L­äë@?± íV‘ýÐ?ëÚ{²_¼?â€&@AoŸ?ãvFC²?ìÁ¼«c9?Ã'CÙ途?ÍϵÐ$7?”ÞŠË— ?ï;fCF«ò?Ãt÷«°?ÃñÇÎì}X?¸ñÇ͹Π?tÍŒ€?æ<âZA„?�T§Îëc ?­cÃ+Ð?¼ô®Æf˜?Í´-ý8Ø ?¤[lK&@?å5,´9h?â]ŽƒS²º?çÄQ±ã›?ÛB’À cv?Éè¦×d?êò\`Ѝ?áöpîâÓ²?Ò ·¸fF?Ø$Ÿþa|?íC†öÎú?ÖÛÚôÚÀ?ÃLt¸Pô?½¸óvÁµX?ÖͰ¼¢†?Óàsk[ü?êή‚ æÝ?ÛùœÂeÂ?؈tõÊ?ï~q@Ư?ëá£53H?Ãqî“ål?ÁèZìË@?À*ý>zÑ0?옉ÂÏ=…?ï8‚L¸u?»c=Âĺ0?êÔ™†¨K ?ªb&8J,p?Æ&ãF}ä?ÏÏô¶[¨?àÐ(’Û?ÛMq6Ū?²!APÞÏ ?àcFEªBÈ?ꫬª(*?À˜I·_œ?êø/Ba?åŽþj¸�?íî÷‡?Ã!¬ñÒ?ä·ßönX¿?×Ò Æ¸�¸?é`OR5uÇ?Ý7—³‰¹˜?Ôy0~8Nê?Œ',È¡À?Ä/ø1º´œ?ኩv³)i?ÜùûºI'”?â§Q~úU?œBÏ‹—@?îé3XNÖ‘?âµúnÕ ?λ‹Î:¨”?±sàå'à?äsrA¡K?ÒÌ8½Ð¢?ÐÙ jú?Ö˜æŠ\?è%ü¶É?íxQ‹Œ ?ãÙS¹ûš?ãEÅ´�?æS<"á›?È“=¨�?ä¢:|fq?Ø|dåųú?Ãâ{ÿ|?¡¡óM*Ð?è©&ëÒ¹Q?Å­«�7�°?Ô�ÛÀ¡L?îü¹?ïŽhÜè??ãÀÊœ)©ø?ÙŒ²”®?àgÊr%n?Ð+üÚ)³Ö?ß³Û_J?å~øÜ"†?–gëZ�‡?é{Ù¬È4·?àÏ (9~?Ä.c#?ãSJÔ†±é?Ñ$ã^âò?©³ïèHÒ°?Á6Ž›ø?êh·Ìž)?Ø?%ïñ|r?çPw „Þ=?ë%gûC÷Û?ЕkóBóè?ë(0l´2Ú?á㦉ÑÕÝ?ÜKm—TÒ¤¥ t?굃>¥¬.>?Ó‚—:Y \?í`Ktá/?‘Ù‘?¾áŠ2(¸?ìûqȲË?×yp:æÄ?Ðú’Fäüx?Õì‰ÑF„?ÌXñ Úh ?ìZº“ók}?Ѭ\¤÷,?çkB >q?å óMnó×?îu‚½óe?ëð¾"–v?Ôµä ý®ê?Ó‹&¡jÖ¦?ìSÚ×\Í›?ØUÒ‘ü?ân÷²>B¤?Û‡©ŸW}†?æÒörHr7?ã™m°æª?æE@âg¼$?ï«þn m´?æV»¯y R?á„ó�Þ’‹?åÎ(9~Ö?ívŠ=So^?íðë0¤»J?¸WÇ:ÊRH?×þ’¤À·Å�C?Ñnz¼%¼?íǃÆWVâ?ßhoõæÒb?Ù®[ÅU®?í�è2^¸ß?¹½4rd¿È?±ì†e. ?ád<Ó1·?Ý +¸9Æ?Õ´nÞ5èþ?á'Mä°|?㯢Äã§?éòÝà½j?é]ßw °‚?á>oÜL;?áûc¸Ù¹ ?èêÇRòCÉ?ãƒ[Q9B?ÉPgùQ´?ÒŠgݸd?àã�ª®W?é@hè²™È?Ä´ÛÓH?ÖU—ì^?㤺Æ>L·?í3¼!ß·¿?ênôaXÞ/?ÉÒD«�®È?j°|8ñ?æÄÌÞ³R?ã/¸ð2¾?´œ]WéôÀ?í½‚¦ec&?í�B·Ÿ *?äê/Ó µ§?ïA -S?ã«w04_à?ê¹B—¾Wô?¢“­€U à?ëÑÀK?îzk(ùc?æ_pI_¡®?ç,m‹»t7?äàÁ1R?ÂØ·+Tì?Þ¢íì8˜?ãÕ&_Ü×A?å[»Ñõp?Óaýt%µ–?ÌÔÕ ÕЄ?£È¨©…MÀ?Ê"á祭`?ãÁÄò·)T?ÑÊšP#Å?Ï~Nr�¼?ßk2F©nN?ì‘ÌØ/bš?ãÓ;Þ±…W?̱|%Í‚?ÚZæ3ãiÈ?Õ°pû¶Z?êfØ}?åSz*€¢)?åe7.Ü¥y?Ãå(ì%cØ?Ä`ë ,\?ïíw$ó×?ßoM` Â?éù¶ô!Õ ?—1Î:í1?âÕgÚ"Û?�í'c¯¹ ?ëëÒtœZÎ?Ñ�ó�çh?Ê®YeU?×xæÄöÅâ?Ê¿_–82$?ëðê øåë?Ѓ"sØÔ?Ì€Ë]ë1À?y«¬A† €?áüY'03?å�ìÍ„¡?äG¿ÜYâ?Ñܬò?䤻۟þ?Ö¨Œ‡Eáð?ÝùE \?î_%›HK?â…Ϲ…¤Ó?ÌßKƹ´?ïøG¥úì#?ìP<].9C?í|¸Y’¦?Ùá7ô^¦?êrzш»®?Á†ÝaóJÄ?éiâ`[#²?î^�Ðü²G?è\tÚAH?é ܼ'À?è„®Â,u?¡n¡ˆlp?Ë–äÝlô?Ísw”?¸˜UåÙy€?Ñm¾õn8?ÄÓ„%Èb@?먻¥)A0?àv«,&•ˆ?íçß²†?ëıôl•"?èúÎá3Šƒ?ÚsH¬éz?æë?{u?Ûþ ‰¶=F?È.˜•úãÀ?ìì6‘ðª?Ð:`v^ž?êǺBöŒè?Ь™\ýx?ĶÜ=*¨¤?ëîó‚Ig?ÐßUwÏö?Æ4!Cïzè?ï1Bȯ¯„?ÝÎ2ü“?átŠ)¯5¯?åµÑ7jã´?Õ¤áÙ¸Å|?Ýsa‰Ô\\?î8FtÞ”&?À‰0ñy�?Ô}Ëå±Ð?¨R±P?À_S£`?Ç¿g ·*X?î,î<Î^g?áñŒDŒìM?ÑPÙ^™¾?Éè¾|`,?ÑøKêŒz?ãØ´Þω3?ÒOÎþ~ô?æöð‚-? î&°.�?Г|øo0?ØØÝ ž?Âs…÷ÃÝX?ÝIˆe?ÕY{ãÖ¶šm�?è Œ•ίõ?ç�òÀ_‘’?ÔÙ·ý{5*?Uéyõ?¼¡TQ¼8?‹˜{ãų?è™àìIuŸ?löžª 3?æ²üF™“¸?ÒÁ3ô‡‰˜?í¦æ™ÑÆ?àU§‡ô‡?ÎÄiÁ8¨?ß®~¢é?½ƒºäd§è?Ð"YáªUF?¼ª�)¨bÀ?ÖÔîi /¨?àNªÅcPÑ?壩Oú?ÛQ|¨^ø?ëkŠ­™d1?°èôú1¸?¦¬ ?¿3‰,2À?ÑUøÌCD?éÑïJ6}Ì?Èp‚¤À¬?çɬAˆ??äcÜŒ÷?æãÒ@\!?î±ì·¦‚?îèµÔ"è?ài)"ª³?°=Øó¯ ?Ò_ÔßÛþ?æ9ë¼Û×?ÑÛ0æ }®?ß#­xQ�Ž?ÈQ´. 4?êòûE›Õ`?Ñ}RòR?âw9ÿÿ?ìÚíþõ ¡?Üú*ˆ|?Á‚[�cÁ ?¹¿º?çñŒà "½?ë#XpE×?쵎…&?å¿à¬«Û?ÆcÜŠÁP¸?§%/ |ß?ïoÃ#?é`‡ÃÐHÐ?Ø”i_3¶?ìqj*hª?ÊñÞóZiÌ?á²_zEZ?à> ¹TC?êÝ8†ïß?äèÜï»u÷?ØRÅ‚�úø?Ƣɼ0?¹óžo|ÄÐ?¿D¶½è?â©ÜñùöÁ?èÛf/?ÖJ‡·Çîˆ?Þ»Ah`?ïÈÓØD?ï;ž¥“ú?àJÅPCê¼?ØB-æÃg¤?³¿—²U§Ø?ÞhX�]@ô?Û B3+»?â®SùÖý?Çã’‰wÄ?êÙ†Š÷[?ër®ãü$�?Ðf^ª�Êð?ìöʧÓX?ÛŠ�´ŠÛ¨?ÍSÁ`.�ô?ê1!ÑÚ}I?ØE�f,¦?èu9Ø¢V!?äb‹9�’?EV”êè?íÏ®¦¶??ï Æô·Ìe?’Èî f�À?É=x.¿DP?ÆvT9’p?Ñ ëã—:?à&´7‡k3?Ðn@�A²°‰?ЛA#kj?Ñß’£Ž`?ìð€›~o?°-JH¤h?ãBõty3?ëKŽ%g ?ç|[dLÿW?æƒ 2)#?Í軨ƒÈ?ÚÖ]†�È?á¼ïöWÏ ?Í×ë™À?êƒ ý}?ëÒýdb´2?к3®ÅbX?êšÖô?ÞX/ÿ:?Ñm³WyUî?é�®À*Sú?¼,•»¥ À?íê¥;fÖ?îÕŽ’‚Õ?Þ¢wΞØ`?è6qkkìŠ?Üôô•‹”?Ô^§s¾?ìS Â½Ëw?ìÍ|`\]ž?íÀ×H-ªf?Æ2 ¤K&T?Ë |¼q©à?Í‚­O?êiG7S¬Þ?ç>$�š¬È?Õ˜ûUšêÜ?áÔú6þû´?ì>x˜Z³ ?Ès­ ¨¸ð?ã­"hoX?å�KÒÓ?èaô̬ ?ÊŠ'n9ë`?Ý*y;KÔ?㎜Z�¹?á±JmñÂ?ÈV¬1)Ø?ÒÅ'Þ™~?ãY8*>D‚?ç0bÒ^6?Ϙ@v…Ò\?Óo}¨ ›8?ß;©!V¢?ä ‡©Rï?Ú/¾¦˜;?éÁ¿û`l½?ÄCÆ”ó?ë0~nÿ?Ü<¥›Eܸ?Ó¼ÒŒš„8?á …6‹ A?íL©ÌçÛ?ÕF�?8 ?Øíe~dßð?âï‡÷±¤’?熸F)?å«'�â™|?ŘôzÔÚÐ?Äo¥òRD?ßò€Ñ?ÎWÅmà|?â¡�¸�?â–ƒ’?ÔeE”à�?è-K·{#?Ø]ø“´p”?Én”´åö¤?âu#:Œ?íhôv€-ì?ìõ¾qȸ?âªì±€ñŸ?Ûò’ô µ4?ágè�pÝ?ëÊO;]\?±·¶¼áÈ?ííYZHt?´•ÆD\,Ø?×E‡4ÁO\?ëŒØø‰ëy?ê«j KGÊ?ëƒú,:gP?ç¸.õq_…?ßS¾v“Œ?�¡tQ©M@?åûÂMua¦?àläŸÆ1?îgG�–,é?Ö#pâ·×”?âHé»^ €?Ø!LZ) ?äëI=*�?å~v Q=�?׉ÁÔ|Ä?¿[> 0` ?Ô�9’uôÒ?åW%kÿ#?è3Ük)ê?ìãÍ$i¿Þ?Þ��ñž D?ã¢LIÙÃE?»éÚ°6ìØ?é;w›jަ?®aÿ@?‘(W½®ö@?¶�åÁ3t(?èn<‚ÿu�?èÄÇ‹ûP?ØLoN~Ö?åùIG…á?ÖYú:/F?êJW¹kÔj?ïGú)q?ÔA+¾Áx?çU â,i?ê#š!™¢Ä?ß6´Fûì?ìKö\£¢C?ïÛ@R?WP?êñÝKš” ?æÔíÁß�?ëÃ¥VÉÓ?ïš9>n*F?ê©H±5Q?äM� xÿ?ãÍÛŸDÀ•?Ú7ôÝr¿ª?æ„“)mø?íÅ$:ù?àŸ+%+/?Ñ #Ú1”?Á8™©]¼?߃â%Ô5?äÂÝg‰‘l?À`T2ä¾Ì?â&¼””ƒ~?Í­;ßà˜?ÅâáÓò>¬?ç:¶WD?³%PL Ü8?ÝÈ:�X h?ê?p2V¡Ä?âl¿¢% ?èb=Î9Ú/?Øe'È4©8?d;‡ž?ÓŒ­iw'Ì?À™Ùc$3?èÚ<ÛPªÕ?Ô:îx¦8?°]®'sÈ?»m—4Ú€?éÙ¦cjÏ?Øç«É \?Ðiî)A@?î¼g®|Áp?î„6P›Ú?ë S-E½�?är>yv5V?ϱ.-Z—Ø?*\^…?Ìx™éúËð?ÔR�m^r(?æƒ��¬j?çêômAôÏ?é^ýÏ.™?éËRØÅÑ?éÉË[{ÀÚ?×—õ�?âÜ?ì9ÈOÉN?êùØñ|?ຠ©å‰?Æwûô?ꦤ‚Ú®õ?‚‘Þ¼ ËÀ?º–�} ?Æè.3œ?àŸ¢@Ê?è#èÄäúb?ÞüLѤ?âJ¿[¦Ô±?èÎÐ.¥ýƒ?°‰IÀ)È?É Í‡Ê\ ?µb4ð8è?ɈÄÀ6ÍÀ?êÂ9w:Î?ì´œOÝþÚ?è"¨(:8?î?3ÚŠ+‹?ÁlÈbÞ¨?éƒÙ¯•³_?ÝäX©Í¶?“ƒïøå,`?Ñsâ|¶8À?Û �Nà4?×Û*ð—çD?ÙuµÇ º?éá�ž¥­?áFa€-m?àpm`M?ã…V"`àì?Ìò¸…d?ÎÞÀ:£lÈ?ÉAÐ@7�?Ý�ø·Z»?šÔRÈ®@?ïøÿþÃ?ÞÑ�ZuL?ìŽO«H¼?ÂCã¢/‰È?çdD o!­?àEÌçM¨¢?Á˜‹I1è?Ý=¦Ô¹ü?ÃÜ*¹‡É|?Á¼X­È?à™áo PÕ?ÝJ4ŒÒȆ?ë{¶»ô?È’¬UH?Ù¯J8ˆ?¡ 1ó0?ØÎˆíþ?¬ÐÑ>‚à?Ê_m¼Pˆè?Óé^ÙWè?äBΛI?åÐLÛCŸ?Á‘"ŽqÓÄ?êWãBÏC?êp¹XvY?®¶_�®à?ïîÿ)¢4?ëu£tcM?âœRÝ»?Õú@–v6?ï !Rö^?�Œß{ä ?í‡sKßäÀ?ƒÔÒì€?àûî) ñ?é!1(Ü£·?áoò”s�?ÌúøíI¸?ÖÄ v?Ú‹‚o4û’?¶ìW<Œ3(?Ô¼»ezY‚?ì�Ói9`Œ?à�´‰Ã)?ÇAä#µï4? Oƒ†•�?Êef€·M$?·bªSù?ð?± ꊭ#H?êcC@8Z ?ãzZ�P?ï"0}ÍF?д?Ð.Ä?É0¤{éÌ?âOÚ&ã‹/?ጣS©þ?Üj®k² ²?à[ù§pê)?ÏÉ•“v¼0?ìŠ!{æÍŸ?ÁlcYù`?ïƒA±c%°?´�Ò)�®È?ÖÓL½[s¸?Ͻ_•kí°?ç8`­Ø{ ?ÃDˆý6 ?»p€ô‹]ð?áùâwÈQ?¡Gncr Ð?í*ä\,Ç?ÜvO'qæ?ËÝ,¿R,?æ„{ì¸?×�Pqýê?æa[óÕ?ßq­Ôœ?Îzs­ã´?µ*wME¨?íÂ3CXYê?ßågl—Þ?ÞÝñ}Ý�æ?âU½VK?Ñ[á!®Ù?æìO³›?ç¨öÅ«ƒ?ï_…Diš?åKa�íà0?Èäï¶£@?î9è“•9Ð?êó˜¶Ã?ãëJ¿æÛ¢?Úìäã™ ˆ?ìij“î…?àìÖ±A_?µˆ8“Uǰ?ž¾_sp?çm¢^èPX?!V5†aP?ë8¤“PX?ÔU 곜T?Ñ�Ýt `"?Ê«L>L?èöÓ ßlƒ?´¶�#P¿�?ä£ÖmÜ ?álL´›Z]?èÎõ€¿è(?×GͰ¥ÅÈ?ßD)ìîýL?Úßá*?æ‡Âz…?èçÿêBã?§ÞÄ¡®)?æÛ¸¼ÆœÇ?تÀF?器Çó¸_?åÿ%¢9iÐ?Ü¥¶ò<£¢?ï÷ʼa?çÆï‹ÌP?š¸Ë]?ìÝ)°ç]?çžý{ÇX?î·&Q�G?ãü¼@} ?à}ü"9ß?Ë«ÆÃ#$?î’X4?èî�‚®�?zôóNPi?í;è3„º÷?ï:‰&¦?äxb¤+”?ìt¼Ñ�ž?àã„y±5?ì5¶ ¡Œ?³ÚÚ Ð?ã±íñW8?ï¾.Þò¥?ÒÔgèOz ?ï…ËGÏ-?í:ºâAðƒ?ÖT‚- Ð?¦¬©^ð?âÂâ\3ç?êq0ƒL´Ž?çM¨<5ÖŸ?Ïýá¡`ðè?®ó²7»?P?ïÕlìç?½éÖé�!È?ÛÆùzϨ?ì°dœ_`ì?¹/a)E}°?ÛI4X ˆ?âºd!©¨?ç‡åE!4„?îx”\.ÕZ?éðÿòv+?·fÛ'³Ø°?ãê/ð�¾ä?Þ<:eo²?ä;Òòù”?á³�&å?àŒv:šy?âÕ²ƒµe�?ÚzD¸sL?É-Û\q˜?áD jÏZN?Ú%Ê�"†?Ê^;-Ðà?Õ‡²‡J?Ñ‹wôÅ„?ä™Ë˜”Ò?Ïñ›Õ¡â?É´ØÝ5ûl?Ú­Ö.¶?èàu‰ç$ß?ç©Dõ&?£DɣИP?Ò¼D>7óN?æ* /›•?˃’7¼yô?ãøåY|<ª?·©#a^(?½þżØ?¾ü­Ò÷‡P?Á¨ì,Åð?ÃKÝGÄ©(?áBù}a¼‹?Ò­œc� ?ã)Æ�î?Úe& ^?ÌšÓüLc?Ü àd¦Ý?à½d™Ch9?ㆿwÉÌ?¯‘ƒÊÚ?À SÑoOH?ã¾^šß.'?í\ûâEÒ8?ïWFþÌÛ·?áæCµ9»?¶Š¹!jÈH?îT?¨ââ¹?åëFÀa‹!?æ šÃ±(?Û|6ò¯Iˆ?í´¦º2Ù[?ä‰pQ'Û?ÅÝäºÜ"ð?æSÝ\Q?ÝßZwÄÁ?äe�[�€c?î—ÂàtQ]?Òî)͉Ö?×,kgTýú?ßÜJ2]Zü?Þ L©Á?ã–gB”O;?ÌrnDì…ø?”ŠÏ°^?ï!ãŠÉ;?ÁêF Ù´?äïóèÓq?éB=ð'Q?¼[µ80Pp?佞­Ìß?Úhºû� ?ÑÆz3|?çg߈?×O÷)ç^?´Â 5áp?ê‹Ë­á•?êKÊ „?ä/^6?ì´‘JK¼?ٲלž‚?át+”8Îl?ÒÑu±Ì§Ä?ÑgÂ@šõ?ࣸ?Óúlcݦ?Ùíã‡ÎÉ:?è€_n1ª?Þ¿€~…?Û6§¦÷†æ?æâ¥ßŸ,?䙩¹á©?“ÚÇ J ?¸ÿFnÚ?Ûo ºöór?îaÒ�…ˆ9?ËŠŽøïŒ?Ûñ¾çx:?éΡÔÈåú?ã™â›Uk§?î VWÚfÿ?ÒºŽÂ�å?ç<Ü!òkó?¾OÜ4 “?âÒ!5I{|?®T.“¨ö ?Ðô¢ƒ?åƒçcCÓ?ÚˆJ!õê?ì 6zOJü?éÊéRt;?”˜û»‰à?çãÓªÙ?ëP5øP?ç]Š‹‰³?ïWûæ|#K?Ørrѳ 4?Ð2¥£¡Sø?Ùb†øÅâh?âl*<Œ?èð(×fE£?Èʼn«mP?Õëw¦>Mî?ÕÁÜ7ÞØ~?瑽lKÍÏ?ÖÒðÐ5Ê?Áø<àU¤?ä:—_Ù?ß±oãîl?ã;QŒÃ ?ê}^Ç¡þ?ä�Å™°âç?›#Ã…×F?wû§ÎR§€?ÒŒø8Œ"?Ë0ÖÉ(„?ÜBc+OŠN?ÓhŽ”/ ?¸ï#9�?ÐC;vÌ?è��„ðÈ?éMöGÀ"?ÂFËÞé~ð?ìÝl°Èt?ÆÐy8—ð|?ÆãƆè?¸ö9¬éH?…•”Q±À?ï…«´Ž½ó?�8:ÕLã`?ÝØ£/A0ü?ëÝÖRÓ“?ãZë7¾?ø?‡:Ÿb?Ü�*ñ× ?¤|4Äd ?½áH«³¸?á‰>ÊþG?¢Á@c­ ?ÚÍÑcÿJ?îïnæšý÷?ÂçS Nt?àÒHœ+?êÙ7lÓ?Õ+ ‹Ö?îs*-|ø?á¹Øz0I¢?ÇsÈÔü?´JØ£Èø?½+»$?çP³ü¶x?Ò}ùo d?ºïJ°Þ%h?Ó“À÷?6?à"m¯žGQ?꯻TGeÅ?êO·pÆ\?ᡈ1aœ§?Û^YÙóW ?´e.ÁCÃ`?îÆw7d!?ï¢*i nr?ä`‹Q®r?ä–Ÿ¿)?í8ƒõ—zÅ?æ‚8HÀ¬e?Â%yþÏUÈ?åß:ךa#?ìòù,ÝÄ?×I8¾ê&?±{؆ˆžÈ?ÆU†N½,?àþ Š.K?î&�Û—f?Å·›ZpØ?ÜZvÅ̸?è\)þÄi%?æÏB›¥?¹ÜEÔ‘å�?êʉ s›,?Î;eÏ—‰T?ã?+yU#?éÂÔs97?Üõ)**•?Ð5•Á|!ì?Ýap&äH?âùfÛ¬6©?Äozºqˆ?éÿR|ñ�à?ã\îÚŽê~?æäÖ ½ý[?ÞÈ#‘àŽ?Ó¶:¾D܈?µ2õ(Jp?ïgç0OÀ£?¿<VÐŽ¨?æ&¬'EÌ?Û3Õ/²p$?éߟ掠?ÛG|Ìr`"¡e?ïµk÷÷€X?æ*r@NC?¥ªý:ü€?áëYÜqÞ?ÝC,lbHh?§•ò" –0?¯Ù&óEŠà?Ñ·ØF?ç35¤ËÉ?qxòzu€?ÆB#ä8œ?ÒèiN„D?Ôù¥Ä²ÈZ?àä“™¶Rª?²y¨/P?êö„ùüwŒ?×§[ß$±@?ês¶j k?ïÖ–Zp[«?êº=u%9?¿,ž¸ Ð ?ÛE[îOÞ?Ùæ&ÜöB"?íU(!‰ö€?íµyÀxF?Ó,Ò¬)ê?§½üÇÞ3?ÏÂícf ?ä6<ã.ñx?ã fþD?ä�gHº?б<&O&?î%Ö¬Ù[?žC=`?Ù¸Q—§�Z?Þ“l-IÜV?àB€Z\ø'?㎘7^ë$?í¬çˆ‹?ÎW™b z°?ëÐ%�êÍi?ä0.¼GBç?Ö]ÿ9·�?ÆíjL�æÔ?Öl®(!v?É:?Ôòà~�?ï>ûÂ2?ç¶¾ÖÌ%*?Çå7ÉÓéÀ?îØºŠ¬\:?®¼ýíÅ�Ð?ß'ÙÅ çŒ?Ñ?o[w�z?×…ïñ–2f?àÊ2ªìš)?í³�ÉÂë?Öû'6Ê?Ü^žâOFÖ?Ás®ñ©Ò`?¾þÍËÇð?íY¬uf‚?íØ8ùƒêø?ÂË¥7 &è?ìUx¦í_?ß'_ɾÃ?Ë׿ ‘ä?ß*Ÿ¿È"?ͧ ä\?Öqm×øó€?Ïó ÑËX?á“+µÙ?« ’¬Að?ï®§vƒèl?×ÂW)ÿJ*?éc‚cÔ?à(n‹gž?æÈÀlÆ3D?×ÿw æX?ädS:ž�™?Ô ´‡òBŽ?å¢C2Mñ¡?íM¬°Œ?í¯Ç;!ï?æ<Ÿ™Ç9 ?щ|(˜?ï›Ê(,7»?ºKý.âéX?ÙA5Ï ëÞ?Í{�!qˆ²X?æ‚À˜ù ï?ˆñð‘b@?îcÝôdt?ãæ¿,[³R?ã�ýq‚½U?èM¨�%Z?ì»7ƒ7ø?îyqqÇ?龵؟<?ÙJVܾäî?ÑÕTÀ€Îø?š$Çë™ÙÀ?Õ˜sHÙÅh?çÿ/Ä'“ß?ëvHê§À¢?áaɵˆ®û?Þ°öض”?ä ��øÓ.?椢)î†6?Ì”lføÐ?¿kŽY>¿H?¾úP”9`?ွG¢ –?ÙЖœäž?êRà‚ëŸ?Ý õ9„ö?èÖ´ì,›?Æê ›ò„?°ÒWF4?ï&—m ÷?âÝ~+vØõ?ã44§¡Ì.?í‹´À±y?ç˜U¹¼¸?×,+;tmÐ?ÄÚˆ!¸?¥Á�ÀKê°?âµõJî¡6?Üîã êÐD?ºsØÆP®ð?¢TiÐ?ƒE�.€?éÐ:ÒT?麘žU"?í8ˆV‘?ä�•}‡ô«?³!X*P?à.ï�Ð’?éF0x”?ä·Qqß?Þqq}½T¸?Uã…ô?îZI £ÚS?ê˜Å„•ªZ?æÑ@Àö3Š?²=ÉoÀ?äe[r~ ?çG(Ó‘¨ä?îQöå"ª?Ûwjïʵ†?Ð�$:ŠT?áGüvJh?׆cŒ˜?ÞÞ³¯?Ð-o�n°H?Å8ÓÖ€êø?Õçt;\+?¦ÞÉù®æ€?ëÆ:«¶~7?Ô•ËPïÍâ?Ò&ÌW]ö?ëžR³1ƒÅ?ànýó¤öª?ÙU2Öëµþ?ëµùÈ=æ?Ùù›Õ�›˜?çEÛvÀ¥?ÚF!­ø?ägPÑQÍñ?ÇCS5–[¼?èë¦øƒ.?¼¹ÐD½ˆ?½NY̧@x?æ2…Ëè†F?Öã‰`ÎØ¢?ßs‘x{vv?ähe=Ê?Ó¢��Bµ ?Ð(Ãc ?ããà-Ô»þ?àa�çN@?êAo“ U?È×S¢�¿|?ï Ï‹s�ð?ÊŽÙŒä?è¾³–žÅ?ç)•S?Ú•Nx¦Zø?ÙJ%=b?Øô£§¾à?ï•ôP^?â,Õ.áÀ?îh‘×›‘?Ö±î b?ô?¯‚Ìïà?ÔÊŽ4‘ü?áã“5�ì¿?íP]ˆy?î÷Ýœ)K?ê&Ãk�\?Ò;ð­¬ L?éÎ uþ[C?á•›ru§Â?ëTwÍ~ ?¼D^›Nß ?É #v;C ?Öù´Àþ÷š?ãÉ�ïôBý?²TÞØ`?á9À£Hm¡?ÏT£Q§°?ØÁ’y]­„?° ½Gñêð?ÓÍ0®]¨\?Ú{Ÿ`OsP?›ÿZ<ò à?åÁa›M@9?Àæ`H³¤?èó�ùEL%?µi”Þz¤�?Ó&ÆF#´?äýmn�éÓ?Ó&ééd ?’ó9êDÀ`?äïB?ÀjB?ã/8y�?ÅY-L<@Ì?é¶ÝÅó?å±¥²,p?Ó¿©ß-uº?ì qOu ?Õjß#`?î$r®Yo?ÊXÎX;8|?à‰9Ïù‘?ëCjÁæ-?¼‚¢„¨Ð¨?ïð¿­5òý?°É›Òš� ?ÃD�¥zÜ?´š(ES20?à‡ƒð d?ÃÑ—ãä?ﰾ飬·?ç¤YœÛ†{?ä“öù[M?å×Î?ñE?¸‹% dH?âïß¾¾˜?ë•ùO?á?@Û½º�?ã+™ˆ—²4?²y¼àÿ¸?±¡OG%×?§?ÖäSÐ?̃©þ8y,?ßÂŒ:!Â?ìR«ÉÑh?Î( D*\?æ�Ä®e?Ô¡ž�¤â¶?ëÌXðã©?½_�àáÖ ?ïk�BWke?Îd;aÇ?å£í=Òûò?æ'igÉ!v?à·à;•f�?îÀ„ÖÔ¥O?æ„–ÊÉf¢?å}b@F_?ÂÃ"Ã@?¸é/û°Óh?’¿éÈÒ¯à?ÏÓwK ?ã•SÌ«z?Ê1?¶˜?¼fê2ð=€?ì)W/ b?È*|WæÐ?Þæ²ì(?âûJ˜Gî²?×x;‚dÒ?ꉣ XÛ?㨠oÕ?ê^+à¬?ïAæ$hóŸ?Õ~€î†ç?î– ¥ † ?å°ž@�c?g™�õ*?ƨ�@¼½0?Ý}1Îo2?ÖüÏn4?Ó·Øé`–ü?ÀÇHüWpx?ãb®Sòb?á7¿å6 ?éYÓ½Iï?µwE$TAH?åß8:�,ô?ãTŒXÙÈ¡?¡ÎÞ¦Kk@?í-I«ÄM?ìëÙ@ýË?ä4ÑŽàG|?íqškkêÙ?~(Ä´ÖÒ?ïÙ”å{?í_ý¤ ¥?ÒVûj?Àçƒ0 ¾h?³y�.0P?â!ùpn»˜?æâDö¡K\?ÆÿGEø¼?㕳1Ä ?Ä:�yH¡Œ?³wcZ.ëX?w 暉€?ë×+ÑX3þ?ê6{à?âÖqfJF?¿¥�¯Òzè?ímtª&(?ჰcð¿ ?ɰç]T?ÄŒ,½#Ü?îÒ®èáD”?½¢ÔXT¡?ËZÀ®sk0?êÜ]ÕË•Ï?áq>» ' ?š�fdÔñà?Õ+õ^‘N?í�‘6™ß?ïÎû|tù¯?çF3)[2?îÌÆ§”ì?í›¶,áQ‹?ä`]€NþÖ?èe¬PìVž?¦ÿ‚<èP?Ùø„ïMy´?²½j¢Ö?ÞWÿÆÎà”?Ó h\B•?æúôŽê¼?祈V}?áâ3þ9O(?œõ˜€?è:Ï ŠH?è,�HX„F?èijlL`?³Í×§*Èh?æºÕ pˆ?¾ÌR«H?Ý}‡‡Þˆ?µµ1,£ø?ë“Âü@?æ<àS²!€?ëõÁŸ†^?íÒ ‡?Ú烫2Ã6?Ý4äPU¦?êÜO ì¡?Ã!)r�Éd?îa#=Ñ\0?à-ÿÉÒû†?Ø9¦_Nêì?ìbª¿ÏY?íœIQQß?ȧj³1Ž`?»qÖ(_à?äýåÊPI?ÁmÅ¡–K”?äu&4¡?àÈäšmƒÈ?çØ5µ|�Y?Õ²¬ÃÅ^8?èL³ïPê¸?îŽÞæ×?ìä¹?¬«â?ëKÂáS?ê¾J˜4ª?ÝâŽa6?ã°ëvÇÑ?Ç ³'Ö (?ê3ê[¿‹#?㯊8¢?Èÿ}Vhä?Þ+®4p:”?ëê1±9ß'?º”¿ø Ø?éJsSÙ߬?î…2ÀEì?¬s,9\¹À?ß þí]?Ö?êè€ë '?×42*Æ?É;î~I ?È®V¹(?ȤDÿ ?ð?àõ¢,&ˆ>?ÝíüÅ$b?ÛÀKéƒ'þ?º½m„˜šH?ï´— Ÿ‡?ÍB7 Dt?äêî z?ÕHO–tèz?äפ¤>ÛÃ?¶¥»,?ÐÓ<’êæ?áÚ„[M`ç?î-’x&[’?§rɧ†0?Ö6{âHV?àl(K6Ax?纕‡G?éý¢°Ï?ÝF÷‘õ¿6?ÓEƇ(ª?Ý<óº+è?éîfèš÷¶?Ƽ›8Jø?êXY«E?çU<µA:û?îñ�ãâÓ8?ãÒx°‚‹?×a"M„X–?íÓ�äz?è6°Vd ˜?å4éŒì-?ëÀèò}Õà?ëª�=2òW?æbÿª,�?â.äÈ‘ÿ ?ì¹óõ�ôK?ÔjàL¹Œˆ?ëévQu¶?Ò5 ‡˜Ò?Ö5ÿ1EŽ?ì¢Hè›?Ý ÛèI6v?Øÿ®¬Ùö?Ø^ËDGAP?î…k+CLf?çrpF¢&?âÁ-Y¶Ò?²½ð(?äøu8EF?å��@¥ ?âµl©Á$Š?·À“'¨?Ït ýp÷ì?Ö>ÊwÔØ?ãvŒ–(nP?ä&Þ>‡?çç[DŒ?ì&”@ê ³?ìŠJØo?ëpb­'C?âµÀÃx×a?Çzü=�kÐ?ÒÁá× B?ÕÔÊ`¬ð¬?åŠ_~Úµ?Óì÷íïA€?§‘!S´30?è<ôº?Èkík?Ó�2ÑU\?Ú«¢/ÀäÒ?À'ƒ ms?âýmú‡?êù®„²q?~»?æ`lVG�ž?á¬�•"Kþ?½O�2ºÐˆ?»´ïƒYùø?Ô‰j–4‚?Òuoýú�²?æèDC¬?ºœÝ:`?ÝSöÏò‡â?Éï d³(?§€�ΗKð?àêºÍñ²?¾"pð¶õà?îšhg.�?îTšwÙ“?ДO§hÎ?ãŽ6š¤ö?ÌèÖ-Õ|Ü?å@÷$ÙÇb?äEäØ4„?ÞÅ"ÛC ?Ðb•°Â5:?äÅ] º”§?ç<Ñ��[N?Ð=5޽r?À¯Ýœaä?å?Á#|ƒn?èdÃc%À.?Ú+êŠL^?ÖL@ˆàd?Ê0î2ïû˜?ÀXÓ¹ák?æªï~ßhU?Û1i¸b¶?¤W–~[À?Þn›Á!ç*?ãš~M@?áÜl±X!¥?éQfæë?Ýj8qsÏ:?¶ †2—°¸?ÓƒÌ] ÚÊ?ß”ú_ ?Øgtb´�F?»®ÈªYVP?é†ïbdE®?æ™8vô¶7?ä�¯ª¶*¶?ËÝ¥šð?“©Y ž`?䢯1Ãhr?íòÂ’Ý?îò½;9$Œ?½v {•¬È?éüÀñ±U#?ÄÆÐßÔ?ímóñðîP?à•g8à]Á?ÈšÜ/œ?ÉîϬh?Ñ£¡w´,„?ÞzÚ/Á"?çT éÍ?èü•b´D}?Õå>Øšg ?×é•ýJŽ?Òã“:¿b?è2rfØ}?¥;h%|0?ÕhCb§–?¾&e”˜nx?á VE?Ï,C)ƒ…°?ظfÂ$?à3$(î¸û?é@–VmÔ&?Ñê‘Ý´¨?ézhðZ-?êh™èyrš?ÈfR]ê:Œ?™«}c°«`?Ð6à>‰×š÷è?⮋<Ç�t?â®s¿Ìƒ?á]¼ý"d ?è½BK®y?ÑOCTB? Ââ–KÐ?˵IVŒùü?ÔöìÈöm?¢ûbºÀ?êëb„s?ÊÍ%™¨æœ?ãFÏK?Ñ”mÔ`L˜?ÇA©®ìç(?é†?O¬3?ßS?pÅ_²?í”<H×?ájõŸÅ~Õ?بu·Ð?ï1 ,WQK?Åc묛ìä?áÓ¡Š©.(?Ò ï° ‚?ã;ÁæÆ·?Ƴ£$‰8?Ê�J|{�8?¹Xب»¶¨?Âè€>‰�à?ìk´º—?ÞdÄOÛ ?ÌíÁ‚~ü?䕾ö+O?ïy7’È$?ïa¸FÏÀ?ØgÑæu¯„?âw— ,?ˆÊVç¨l€?˜šÉYÊ ?豉üøt?׿m¾Ec\?ܯô³» ?æ]CM›ò?Óí/¦ôÅÖ?Ò("Ó¹ ?äXO¹ ¡~?ÓýÑ{ÿßÂ?±<¯Ì.Tˆ?£?î^Uð?Åç€6Rô´?ª÷­¡·€?êÀCwBT?åùÍ‚Q¥?æí¼Ôƒ@ÿ?»Á¿æ?×¹¹ø9Ì?îHü“Kã?× ¤Ì@¬ì?ãªøÅX„w?±²Háá°?Ó¾©ØÈ‚?æ U…œð?Ö?Ÿ”ˆhp?ÞÖækž:x?ë›Îü(Oo?éAg¸“çX?­˜Ú%(Èp?Å/aˆyØ?೸fbl,?©MÑh�ð?ãÇTPíÌ?ã=Ùùo­?ê�§DE8?ªiÓÖ� p?œããQù’ ?ê鈷Åž?ç{Òe¢®…?ºåæ|°1 ?ç­^µí™I?ÙnÚŽ¶è?à)o“äG?Õ£²À!Ê?뚇«±pD?à3O”¸Ìç?âßÑòbÕ?äßå‹ðœ?ÌÛ°uëY4?Ì]•¯o?‘h�5 “ ?Ûg«b•î?ÙRF½WÕR?ã ÙåýÚ�?Ññ�PQKœ?¡ÆsD+:Ð?í©ˆ1ȺC?êÊv›Û§?Û'ÎÝ ò?Ü‚ëªÚî?ÁÆìKPà?ÂÚõ¬?³)dz(R8?¯b#Mn|Ð?ÆúfÀ+£P?Ö¾D[w¹L?ê›üu'uD?ì¼>TƒÂ?ßIi,/j?µXÓ‡í�?ÜÇÆ+ÏFx?ɹ%’¶D?áǪ�˜?Èî5œ¨B?Þ‘Vÿ8?â,ÎÒØ?ãÝH¹A]@?“þHA{à?À<­E5 ?ÖïV#sT?Ûã(¥È.?å€õŠx‹y?é‰òþ"Ás?ÜC [ '~?ÚŽ•[�T?Ó"�F±Þ?ѵ¥ÒŠš€?Ñi4—|r?ÌUBÀ�Š€?Ö7#nn?Ö¬£xª?Â?ëª"šŽ{?ÐÒ9 ù’?èûÅv!Ë?ÕN.œwŽª?µøhGí´@?×{¦”¸?Ø’aööŸ$?ƒ‘Ì]–?â„Gž+-æ?âÒt.^-^?Ùr¿NÑ‚?ПdôöDº?š[1Ý/ûÀ?Ëôð?ĺ\6¼?íãɯ—Íû?…,$Áp®@?ÖȺg¹­^?ÝIçÌY<Î?æ÷^DȽ?¶"5÷ØK?äe¥’‘!?ÄÊÌLèÓ ?ïo¨ÐÝù?ÓÜeHn?Â�Ê‘`6¤?×e¥Š8öN?Ô84”å¢?À�ÅÐ}’l?×6ì‡9_x?Ò6…ÿt?é• @\I?™,Jzà?ä’\ R?âŽ^Q¬?çI8üë?ä9çI¢ëí?”%€?ηö b¬?�Ê¥¹Á`€?ΦVˆh€?ãgXÄY©?Éß©J®1€?ÔÜ:¸ºê?áç9ééDŽ?Ô›lÔ\|?âÙ á´0?Ù€>9ñ\ø?ä%½â‹»F?Ó¤¥MA|Ä?ê´0,B?Ákzç`„?Ö}ÖÍ2?Öø¢h?ã£:¼!k?èÄ·)®4?âõ¿¯ð¸?ãKü†­Š?ìTd)�‰?ëzÄÁ˜€?Ð >wö”?Õ.ƽaIN?¶éÎû7oà?î“>±½?ÀmàOR t? ,È7 €?æÙœy?ÞÆ¢jäÐ?ëùðßgê4?çœô/´–?ιøÃT?éJ3> )?êð!ÀÂè?Å·è©(©à?ÝV²§Ü?Ö»1X®{཈?Ð ùî>?å•Ô«y.´?Ú|–þ"LB?ÚÃú[#®?í£¤KÄT ?êŽÍÙ'?Æ«9!¤T?וxe/¾¢?ÐC&HËÔ?ìÂz‹9‰j?–9Y¾ÚY ?ïÅ^¨*Tu?ç’Jƒ«?àÉBû}?â˜Ïp?éÐ8|¯±?ëÀpÝÅþá?©p1]Qx?ì¨Aø>M?Üôêß\ãL?¶ëÓ¿•ÐP?à é�–¡F?ì"Qß–¹'?å&b�o•×?žŽ+�Úè?î[ù£Dx?å_*ÁHÆm?áVÃëìt?ÑÊÖžb~b?â—�§al?Ãk(8l?ìƒØQb�?ïá R?¶�PhlëX?é-{»dmä?¯’‚ËÜ ?ã‹–g§ü~?é•3Á®h²?ë*ŽO ˆ’?èÆÚ)Â%Ç?ìSÕs˜¦?î°~Z—Æ?îˆð¨UC?ÙÐ.+PÌD?èÌñœ;¾?ì]€½¨e�?îÝáÂD0q?¦æ1{VÀ?ØdcTkþ?¸a¼½žX?ã¯Ç±Ç ü?ì$SkÂí?ã" ÔÂü?êùª(Ÿ?èV Ãsøï?Û¶~I0Ç&?êD}b 4?ì y:M?â­=úG¯É?ìkb0ÑÅ‚?ÙJ>ûætÐ?Þ�‹Ä?×RÄ”•�"?àÿ„Ïj‚§?Ü‚gÕ.Œ?莇±§éÄ?Üfß+@Â?§’˜@¤?²\ª·‰=ˆ?â?Þ<(ò‹?åP4�äÕ?´+™åUoÀ?ì€ôç7·?ªå`çÞ`�?Ð7Mh´Ò?ÝcműÜ?âÚ~ ÔK?½#ÍÏ™b�?Ή3Àï>D?Ôëͱ¿�?ÁH"Ù³y,?áëSb�b?ÒòmÅè†?×¹ÏËD?ž‰û¨*@?ÀÍë\?µÈY(! ?Óº 8`° ?Ý„àêˆh?ß�UŒC?æß 1h??Ñ~>´ÿt?æÖÌôèÛô?ì²Sª•»¹?ÂUÙ6ÿ{„?بñÒ{à ?ã~ïôèD?ëÚ!Ã¥9G?àÊÙ§9šs?äQ³�îèÀ?ØÄu¨E?ÁÔ—‡`?á& À?àwhú¾‘?顃væY:?Ö¡VNúÈ?ã“ßCUzÑ?Ô ²Iôl?ã(‘”E’ò?ÐÞfѼÞ?ܤ“»BŒ?íý.ßœD?î¡ÅT–Àm?á�¬{NöÙ?ØÞ踙P? ËÛÿ¦ó°?æ7P¹ÇíL?Ûɸ\³œ?ïÐÄ�ˆHÊ?êß:C¡˜?ä¹e{(â?±ø’òð °?ïÚù –cn?ÄBÝZ¥™t?ã�ñÚe€Y?ÓÙͤx¦F?à†ÃVRÊÀ@?Ò± ép„Š?Ë·A ®@?Õ¥ÅûK:?ؼ,›é,X?ß_›\…¬?íù˜d‚?í3ïî‹?êÀº\¨Ç?Üýæ[¸€?àªmÞj ¤?èTÏ> }?æî ó¬Ž"?ßBu³÷fL?ã­|œø?ÖXTÎÈ,¢?Ý3Д×ü¶?ìΠŸ^ ?è–7õÀ—?ÝøKÇ82è?Ñw"˜ÃÐ?ã±~«ñùš?î‹íÝ1W?Ö�éÀ6Š?¸8ž©Å?Ä¥ŒÞÁ?ì} ßÜ?é󩑬³?îQü�…Ä?íÿð®û¸Ð?ßÛvCý€F?ÍåÚâ.úœ?Ñ]b²ìih?äöo�ëÿê?ë¥�ÀÃÅ ?éQHM•Å?å´Žýh»?ï”ÑK¹~†?âæ+˜ô`ô?î¦ÈãºMj?ïXÝj½½z?ßjKʬÚ?ǃ¡ç‰�ä?Ì8Þ¹|?™q"Ù‚`?ã”Û=,äO?Ç3m"Ð3`?ïc¸­ IQ?á/ÉÁ˰6?Ð_x°²6Ô?ßsWŒªV?äe+VðNÏ?äƒz¡p?î¶™?¥„?×N;ö0qX?ã# \jB?ë‚hQ-Ol?Ç1YÞÈ?å‡V+‹Œ¡?áÏšß8Dˆ?ИP5Âqh?îíKK ˆ?à3Ÿ]"*‘?Â>,(dAh?ìínâÒµ ?Ø_‹”ŽL?Õ¨EÈ;*?àT��SpÉ?êE3 ÒêÆ?¡¬5úzšÐ?Êõ?ô€?ï¨~^~å?ä³2î>c?ß,Æ”WŠ?ä*È)Y'$?Ð’úB 2?Ó#b&?Üoš4^­–?Ø+Š3F*Z?ãœÉ ñ€¤?ïÆÞøÚ?ãa˶Œ?Þ¿‡¥Ô?ÑAÛõ(æ?êíÆ Ö“®?îw 1 ,?ëLË0ü?æé×íº¨?à ¤˜¦a?êp,6¡W?Ù²7O?î>Ú›ë/{?á¹§+G6?Ù’jMƒd?ä£ò§k+?è>FSÌù…?ÌêîseW¸?‘áÚ'Æ«€?Ù Eé. Ú?¥Øéϰ?Þ;ÄÀ!ÙÒ?«òzíÖ½P?áUâ]S˜u?ìyÈÅ ?Ì)®î"²$?äz¹­b‚?îúõ i?ëæ´y˜ -?æùÖ pØ€?åR.Óñ¯ã?áó³®eE?àcá’ì?ÙùyëŸ)Z?×° =]Bt?Òz<‹ø¦?ê‰;`ßég?ï :<bÚ?í ñMàHŽ?Òè1ú0R?º£ñQÈ�X?ÃWO…ºk„?êRB&$©œ?àä×c?ìŠè1AÍà?æŸý|‡˜¸?êùs?å¢ÊÞšO·?ÄÃ?g`¢\?³§)c}ð?çs Ÿö?àô”ÄÂ?ÀpÙ`¯˜h?Ù;¸øyÖ:?Ѳ\-í4?Õ^¬o½UH?æL•ùki(?ãg @J?ê‚J=Ú‰¡?ã«r¬Ì?éÛ¢(×ÿ?Üvhµút?íkáà‡WB?åøoµÍ?ìBö½÷ï ?ï«‘Cœ¼?åØ�™·V?ÌšjÉ´~H?êõʵ§*?·‘¡`?íx”œÅl©?èþçbÀS(?Þƒ’QÃÆÊ?è5·� BB?½_ÿN.å¨?«XMSk°?Ê8†‚\|?ØRY‹ç&?ÇVqÜU0?¸¯�SÓà?ãñų¸z?Ϻ›ŠF¨Ì?ÞÊwj!ò?æÙ?%zî?ãRʪÖQÑ?±êiä^ùh?Ì<öLð¸?àHj„i‚?êxv�¦:N?âéy csv?ß J<ƒn?îúm©Ã€R?ÞF4J÷^?äiù¯æeø?}Ñ-*;[€?�SôÜû?䬸IÙÌ?æE C 1?ÝLb™y?É×ùU¼Ä?ïW%ßÎ0·?Ûèá¥]žö?¥ ÕË?äo­ÌÈíÐ?Íîw-ñp?ëaC‡ïE'?Æ�xÙ8?È9ƒ ^ ?Ó5¡ÒÀ¦¸?Üu&|]ÜŒ?áO�&öiû?ܺ"»ÝÒ?­g…p€?ÊQÌç±Ê”?ÌnÂâsOP?á~G^…í?燸].$æ?ï‚áeƒuí?í¾©h«Uf?×Ô_kƒ‡Ž?á;&Æó²?è2­„ä£Ë?¼€­(Œp�?ã\ت‹ä?Ü+yÛºð?熟dÜ ?è^÷�´Å?ë2{IÛ=â?éôñjw�?î qS‰#À?ål+ ›ä?´2µWúº�?í…Ø…¯/’?Á!tÔH˜ô?Ï`f¦+Ì?è‡Ý1+tð?åû'm@`í?é} 1˜ ?³Åœ/9z?¸n(Ï„Ëð?Ò÷Ö“•ûÀ?ë6³Hrâ?á鱎›û?¢ÔlÐW��?쳎�ÖTL?±y¬%fň?­…Ÿ@žP?ë›xMI?겿¹ló?íF !»ß?ïvwty^ø?´°ÛAHš`?áI>*†f?àù*n¥)È?Á7]¸Lq`?ÅBDn‡p�?Âò,ác†˜?äAë«ð‰w?¬Luî–P?�E~²n¤À?ÞZõN‚?Ö‹^‰ŠÖ°?ß­ aðá¦?ÏôAο x?ۗ͘eö?à$ðô½?殡 œ ?ìut™Q?ŸîGs§À?åef×°mû?è�&î9ï?"Þu½?°¬_�a‰?Î0LÑÅüP?³ª±CîX?ê\礆?ä‡Î�I`’?¸élþ%hØ?Ï�Þí[¨?ÅtYùhVÐ?è�æ¿RyÖ?ßë·‹ªù2?Ø ‚s‚±ø?äÔô�æ ?ÓËš2©dœ?ïëì ¥s|?¦=àØYÙð?àÖ‹:µ?á=åŒ2WÞ?¤°ûLoP?ÑvGí2 Ò?ß>Ç;aŒš?á]€Ñþc?à·`®„5O?çö‰SåJ›?Æ[.PVG ?Ð5ú«ùO¢?Ó:HñL”¢?˜ ­¬ûÀ?¸IoË¿£¨?ë8xÏ•£?ìП1‰9?æ3Ö3øx;?Ĥ ÏX®Ð?Þ÷�“n™Z? p3C‰Ì`?ïü¤®ºì»?îâPÂnŽ¡?ï½4,™G?Åô…çä¯Ì?à’£²´;*?êÌBî€å?âP¦F?¿ŠxšðØ8?Ì;Àê~ ?Æ‘$ÎÌL\?��*b‰€@?êó’+B»X?æŠBÚyû=?äÐ~)0|h?Þ–©VWœÀ?á"- …«ú?Üm·Ž« ?à'ÿ×ĉé?ƒ�å:4€?êËèRúÙ?Æ<åKwË„?çÎò�û R?ƸÏ͇.Ô?¼  š€?Í,¤‡úD?äø~Ðßn?îi;ýo?å&NÖ�?ê rKòæQ?î'<ÆÊý­?ºZåoÙ°?ånÛ�sXA?Ûí£0?à‡%Ì•2?¦›ì¡ò0?ÞW¢ÓŒ?íUÀ³ÑÜ?ºj»TÄØ?áù¬. ×?²LŸ;�h?¨‘H+7 0?ࢮñ³ÔÔ?íæÐ“Rýõ?æÊ¬Tÿ ?ãM±"EV?ê¾+Ï‚Q?ã×vN�¡X?ïöƒ«°È?ã’ãGá?ËñÄmU“h?Òf"z0?ä€d†™†k?íôp…lÌ?«o)»ê߀?q“œ€?çµ�õú•)?Ð+Š¥TD?ÌMò§§íx?çÞ{�D!Û?î/rcq˜i?Äs¥ÂŽ4|?áîÙ¶(é?ÅA~nYžŒ?£])ZY ?ÉÛ‹ø'h?Ô¦r�aŠô?ìó„Wò Y?í/Ê;ŸZ®?å§óÙÝê?Û0 G|?ç| @mÑ?ä·cr”ï?Éj,‡F2¬?â$„½K(Ä?ëX»º8c?¸É•äÜ�€?Ô²û%…L?îÚ¹" î?ÝC£à÷or?ãéQ ?ãY¬ö� !?Ö¦Qu[�x?êÚŸQf§?ڮЙÕÊ?З]èéÆH?å­0mTË?Äì7ÖÈø?â I¹Q‹ü?Èš ’Œ?Þ�) nûxª½?ÚPŽ«&÷>?ï•E`¹ƒ‹?åMû 8ù?ÐéBÖ™. ?ÊKÌ«À?ßUÀì¸?±ì€9G€?Ø& Ì©Ä?ì>ôÜ¡ô]?ä¤:„ã´9?ÊÌæú€?ïöÿ[Y'?Ý%;³“†?‰þ•‡áÀ?Óî ô?Ä‘æ¦:d?ì\V Áàâ?Õ*.#–*?êT2Ä6T_?­Ÿâ ƒP?ê’jR8«œ?ä+6…Nj5?–ŽÁ¨ÕOÀ?ä>¤Û ?Ú³ãWî \?×☤ ?ìK<¥ ?îÙ²­IYè?ÍI !:€?ìèS™äІ?Å”sÚî× ?Óoçë�ˆ8?ع¸E³ÊJ?å,:+ŒŒK?æ³üŸ¼˜?á†"Q;?Ða¼+ Q ?âpøsì?Þ6÷«%Ô?­ ‹]|`?°X5µÊû¨?´§Nsh?ì/‰!}»ã?í‰èÑI?Û|5Ýý „?ã•DÃÑÕ?âžÚ¬±t_?·…�HÉ p?äA¾Ý>.ú?ÇÞ»SÒ\?Іl×h?ß/ü5@?xú‡µªü?ïUG±dî?Ò%ê”=âvaî?ÒJ„‹Æ?픣ó€ÌÁ?àðzYò?î'¹)‹,?›»6¹f)€?Ñ™ù¬y¦¤?à�u¦bë?æ‘ñrSÅ?ºU@?ï\âÛ…ë”?ç,–Ï?Þˆúi¤Æh?Þ9êør?šnÆéÐ?ÜAÉÕÙ�â?¾ØXŸº°?îüûæù˜?çóDzøuT?íNë8=XÔ?èwÎëcf?ìt'ê|#q?â:ùM@6Œ?ÇêqùC0?ìxÏtì¿?ê|úÂS7??ÝM´ä^X?ëñÙ¹EZ^?Üëâé‡f?Ë�[Z¥x?ÇÖ],x¢À?æFUZñ)3?Òé+ ‚?æøÑ?ߘò?ãJÉMÜ U?è¢ÜÎ?å-:‡xÑ?ÑÖ̲ùŒ?ìÒo#£¤“?ä ‘Ò˜ß�?„ÙМnˆ?¥¿Û·—¥0?í¶fyÉ0h?ìxoÀÛv?Þ²¯ŠÊc€?£p’ô0?å¿}mÃÒ?ßÙýæêÆ?épù~?åÄG~;­"?©ð´»0�?äý®Ÿ½/?釥Kø?=?ê×ÿ¯üh„?×Ûp�ß?Ûy!T>?ê˜={ïÁj?ä,… “`?ì ¼:ù?ç™±¦œK?Ù«¸#|‚?ë¦F$Ñë?èA”(–Fá?í]Æ7ÌÝ?æ7 ?-Ö)?è¤ú)ÃÜ?ëcÌ%Û‡?ÍŒ m}´?Øûo4Œ&?Ý9„ò¡º?êuÁ+¼¼?ÜØ•yVÇø?Ŧ‡ó÷¸?©*MŽ0°?é#’<õ~�?éV«ªœãz?ì5XÆ]÷?ü.’?åÕadûÞ`?ÎuhÚìW�?ÖE”ÍM=Gäž@?ë}³qGjy?ß3`Fš2?Ø…o“´?ãž²ŽM¯Þ?êH]O„4Ÿ?è¤cÝ6Z¤?Þþ%›«*?ÓPTz{À?®ˆ8ª7y�?è&-JD‹0?î\ÆÀ€H0? 7v�?ï_éû ?²áÝVð?ë.,:š©?ãeWS.±.?ã‘r#³?- ?�„ÅìNÎÀ?êRW'-€î?…´ 4€€?ë{Ãë$p)?뼃�ïE¹?§bÛ¦sÏ@?à¨]¶?0›?à êœÇ?Ä�R¾âœ?èÜWSlã/?Óÿ¥;ý&?ïHJ%~éö?×+��\ö?ÆP´_ª?ã3q;Z?�…ÈTÀ?ä‚m1© Â?ÍÙ…ÑœxX?¸T“ýŽh?ï]ÕV¬Íâ?ÝlT�¥�?翵¥ ¬?é�ô^³�?ÞŠ:Èâ‚?âË¿‹y- ?ÒŽóåç?âxøæu«Ý?Øz½‡ûäæ?Ôûð4$ð?íJ¿¥Ò;Š?À�†pdmð?ÉÏ« Á<È?ä•84h}†?—JÙó£h ?ï岈½»i?Ìfv0Ú(¨?²Hø^¥)°?â$¾�°I‰?Åi:÷®Ë?ànpÁ¼Æ…?¸|»`˜?Â�tÜ"x?Ì‚‰ñWšX?²ÍW[Ëbh?î x"ÖM?án¨©þK?¾D¢%Ó?åßÌôºäÚ?ã<ŠaþÚ?ÉZÇ | ”?Þ vÞ¤o”?âZ?}ªEˆ?¾a—P-8?ÒïÞ0�“`?µI[ÁïçX?ä­„U W¨?Øûð¥È½?Ô_v¸dy?Ñ4™4òº?Ñ]Ej’sü?èƒì8 ?×NÂ7Œ|?â Ň%?ãžì�?é¸\’‡ã?¨U»N2à?ìPq5tË?ЄmyVNÚ?Ú~¨D6Œ?èøN5‡c„?y&�ÓP߀?ÞzÃ÷–<ê?Â_«Š-È?’’6Ý?ÝGLZÄ’?Ü ‹Ò'Ä?¿ð–¶�[?æÈ¬ /±Ý?ëâõþ®¤?åwÿ™~¾�?ÕVdÐ'yÜ?颇n]u#?åLŒ¿gô?ÜõèÕ³|2?ÖSø% Ò?¢™Dß›Ç0?Ðk+¦q‚?épᎂãv?¸ÎÆRÄ~¨?Ð Š¶~Î?âF.Í„Ê?Î{âWG*Ø?³,ÜÐJe(?åÞV½€ár?链cÕ0?éEÃoõáZ?œ]‹~•Ê?àQ°ÈÃü×?¢ÐÝˉž ?Ù:Å-‡ÇÀ?ÖÛ~3ã>>?ãã¬:?j2?èTàø44#?ÜËs¶Nzì?ÀB=€ˆØ?Ô5v¨·«|?ã¹€•aËÂ?꺹`âñ?æO,öbü?æ¬ôÿ�‹?á©« ?äfÊ5û>?ßáÅUäCx?Ù¶ø:S%Œ?ì'ç•çsô?éÕxϸÐ?ë¦?Ç?Ì—M†¤±t?Þ©òvstØ?·.¿E™ZÀ?åüQ&›?Ùn4¸Öef?åÿѵJû?Ü)î¬ ?ÛMÞ_:è¨?ë¼;£Í˜?ÕNñwG©6?ÝÇ>c륒?ì®�â·þ¼?¹—öš 0?«ÂîëˆÐ?Î\�Ó1žØ?ï¹êu¸û?ç·¸lr|?è_úBS¥?Þ+sª«Ò’?çA¸­Ô§?çÐ*´ºÙµ?êfp"sî”?åIGón«ì?ìÚUu¸‹Ò?†kK¢~7€?ľ©ÑÏd?ÏÅвlD¤?ÁŠIJ_¤?°FÑ J?éMøfõ$?³L«ÈŸSø?ÀþjŒ¤?ÍýpÖø?Àh3Wâ°?ãùN=œoË?Й¿cÜš?êÇó•'?ï‹–ˆš~G?Òo|Ød�è?æÙÄì— Ç?í* E_œ?ëòI’ RÊ?áð6Φ?å˼0œ?¹Qw•S?ànÅ4ö?Ú¤“x�ÞÆ?àO ²äÀ—?ÔÈ‘*‰¯Ô?Ä8@ë›T?â“ä5�kB?≷WWo?éÛSôˆÜù?ᬠp2R?ê¥HIÈÂe?ª/òê“p?îåšG å�?æ©§a —?¦±øb½Š€?ãådÎ$Œi?ç°…2 Y?»zaª�wÈ?ç5úaŸ?×mh�&p?ÄfÍRð…¨?êÎh£ù?ìš�¥ïc•?äÿûÙÂÿ?ï]iĶ¥?תװ”›p?éîvb¯š?È&j²4u¬?ìI\#ع?äñÓ'Ó§?ßV¼�ã÷P?ä›0#+ù¼?ÑÊDwüU¤?îÆ§ó?¡?ÈÒ£˜/ð?í…hE �?× vk£¶Ð?ã65ÝZB?î<š)ós?Ú¡õê|þÞ?ì“êÇj?á®Ê¶ø ?Õ«B˜‘Î?ƈz” 'Ð?ë‚U›…À?çõ|Ìv ƒ?ä5ï‚Ú5?ײ™ÌÛßt?Â…�:æN°?å%¦<#Ç?ïifáÊãÍ?Û€Gº-®:?©í,û Æ€?à?ìC'jK?¨¾æ·7½@?´iŸ«v?¤¦éQ†0?×V®‹�$˜?Ã:DM6Ü?çÅC¬ ò€?ç�¶¾dÇÂ?æAi„ oí?í(À c?áUtV¢Ù?Ö Én:¢?Õ`¦�Ò�?èªÍ¦ÿ˜î?íþ”à]ý?Óö>’±ä?xvM�ÓW?âZ¹ Ÿã«?ÚÕbL¹®?£Ó�††š0?롇R^g?ìO3¡¡vB?¬Ç\‡?ÜT‚e¤?Æ? ­’h?ß*ÊŠ“Dª?Ö |âZÈ4?³TС õ?Ôa2H·„¦?ï²MO„ ?䄹ï›ð?Ýè­¾`�f?ÉvÛã(œ?Ö¸'u€4?艸/²ÒÍ?à[¦‰£ûë?äÇóU?í�üòv=¼?Ì£m¾`¡ ?ìo€ÁÁÔ¸?â¾Áÿ2[K?ÚÌ~pŽ8?Ñ~ãU� ?Õq¥âìÃ?耕“«›ú?ÌÂ�E¿@?ãŽÑQöV?ã�ã)5?¾™Cš"¸?Æ¥6‡¢/x?áÑIϹ/|?ägSX&�?˰È/Dø?ÖIl$—S†?éòg¬š¿+?ìÑ�*µï»?â��vJ~?ßí�\g]ð?´ösK<‡ ?爥¦|o?Ôg ²-þT?ËÁ¾1Œ$?Óúç?&øÈ?دœ¼é`?Òúª�cµÊ?È÷WŠbð?ÀŽaJÌP?éúdCÎu”?éƒf‹Q6Š?ÎÓÇ(ø7?ê@ëNr?¨ ìÈB�?ѶXVzœ?ÏÊ­‘F�ˆ?ëgÇàÍõ²?ß'òFâóš?á÷6�ÿòÁ?Ð9.vüò?×Ëå�±hÜ?àtc”æ?êë+wÃ?æ�WØ-!`?ËÞ|úŸ),?áà¨M?ïpÀHˆÂ?ÄÂÒ7æ¼?åtDÅu¸C?ß¡÷]ëT?ï.l±SEü?ãH_>­Ä^?ëø1±‰HŠ?¼Ž…‹øMX?ÓÈuïIÿŠ?µQêPJà?íDÊi|~¤?è6”qDs[?ë‘Ór¦,F?Â-#p¯í(?ÔÂø|)´œ?ã#É9(|W?äÊEYCÂ?çU;|a?âºóSá?IJ˟Sè?Ò»tq‡šî?á¶š’æž6?Õ7xÄŽÖ?àÃ×eÄ\j?Ò‡?'Áe$?ì®tr�?± �-V(?ë1úÚµÇj?ÑäÈS5¬È?áü|«á~€?Ö'½/fv?¼H4°XI ?ÍôÁ=á6`?ìŽI–Òf?Ú)rúŒŠä?Ö×àO7÷È?á”wG¬?Ôh ÁnŽ?¡ñîÛÀŸÐ?‹o(gEœ@?Æž¨ð¿Od?èÓ¼ýÊ]?çeª&'A?é�~,®?àZl_™2}?îgÚ3—I ?–d§ Â~à?ër.âLu?çG�6½«?’>—†� ?Ù•ÐíÌÝ`?à£všH×?â¯Þpz?ì³(~�É?ÉÙÌ~â?ìÅ}Еš?î:x2.š§?ÔÌz?œØú?¿Üm¤ ê?å¡úÉÒZe?à>|µÙf*?çÒŽ"ß;_?Ôfb¾æb?àŽìúßV?̾Dæ³8?´ðlFèí ?ãNîãâ&?é_†ºÈƒ?ã§xŶ<Þ?åÖr‰^5?ÄWN¤Íð?ÞÎ/&ëÊ?ç…EJyEƒ?á6Û(ÊÆ?Ë @ìZ0?È �’ÉL?•N'Õœ ?Ú¶|48¬?ßî¶�Æš?Ñ�B*ŒêÎ?éf«¿KŸ?Þәߞdž?ä]‘¯õ’3?¦‹àfׄð?æ ËÕ”…/?äò‡v%?鬠ª»�?ìøþrŸç?Ö~�´!DŽ?â5–ä ( ?·±~³P?Â\ÈãÆì(?êRÔ‘»ÿT?êÚX–â?êáã§#?ÜÛMK»–è?ÝÏ ¯Zˆ ?àŽÓ^<[«?Ý«ˆX¿x?ì_âfK·?í¸¹àܰk?Ç€à*_“X?Ý67,›?ƹ˜o6F´?Î2äʃ@?åXì• û?ß\Qººè ?ê2_‹�¯Ÿ?zœN j€?Ðþ)bTÓÌ?ÌГ@�å0?ë¦ðw7?¶_só>H?å6º¨6¢Z?äŠKR{ÿŒ?ÚøÓ”–¶?è—ÅjŒÕk?²ý7?ÉHÎ8Ÿ¸ì?â]»A�b?åÖ$#sb?ê.ü:ìÒ?´¤^¬ÙÎ ?â]ª#,5?ÐfQ«[Ëà?»—ÏwŸÐ?èˆÒÈnNC?Ýu(„!¸?Ñ(2xÅÕž?åüp„¿uâ?£æZlç=à?ísx(?çÁsyG2~?ë1îU¬n‚?è~(úæYã?â"ñ�¯Ã?é€MYP­û?äE�µ‹x*?é±ý‘‹?íwh@¿v?ëƒÑ顯?á.XKÝi?í–U×Ôü?èªÈå ?äÆ-Üö7Þ?¶xÓCãx?ÊŠr²q'H?ë¹{ò1&?ïêͰÙ?ÖOÝfú?è(û÷œa\?ÔãžÉ Z?éá±ZIx?âj7Ò©?è–tÁÉÒ;?ÏÃf))´x?ç•rôQR?¹ŒIÙ‰‚ð?äé ³eG?ä\ÿ¨Ë?ç†5“Qöú?íÁõâ™?½÷8 ™W°?À¡G™0?ä;ù À Ã?áŽBû?Û­Æ…?í‹,#a8D?½‚åäV]à?ÖÇhLüêŒ?ÞMo…l#¬?ÐÈN§ ¼?Ódƒ­4¬f?Ìõ•Îøw€?êè•Vã·?Ô ”ƇBf?î"\ªM'?Ý»¹¥JŒ`?±Òkð´(?ÙÕóO³¥Ì?æû»?ç g?â\À¶Ï?å«„ÕÖ�?Þ ÍÖNÆ?áYÛ×-¼Í?îÇÿG„#ê?åz«{q/ˆ?ë•`&Sø?â¼1-×?ÀœÍT¤Œ?ék^?é8?äs¾ å©?Ÿ ÷ŒCh@?ß`/}2D?ÖýÿÀcÈ?Ñ™8yw®?ínPt–X?Ï#{ä'f¤?ÒwâÁ Bì?¡¸OMœà?èý¶ñùV?îןP?í;[`Ô ?ïaŠÁ¼º?í5~Ó©[w?Ò¤Y‘ûˆ?Ó"'EJ?Ó ×Uœ^?ïñÊÅõá?ã mœšÌ?îjŒj0n?ÕÍ7‹Ð?ïMbã‚O?×(ðy®Â¢?Ü‹Í�@¤?Ñ.<âW’ ?ÐÒœ$¨?éúë—²'?Ò�YܶP?Ýl>†s ?êô 8L0Œ?×@êßM;T?æA‡¦«p?·HRæ‚i?ÍqÐ ª4?ä&·ó??á$§¯æÌc?ǨØöè?â, ëÉ´Ñ?Õ}ÊÇ7e€?Þ²mÖͺ?îcó Š¼?ëØÈ1]??¼r‚«tøX?ØÔ&Q!?ÜÊòA{ÿ®?ë©�ÅÕIË?¼]ý sˆ?çØ mt¢?¼ó7ßMý?ä=7ñ ‚?à‡û¸†M'?ä}ºÙ?‹‰ÿÁ:)?ßútVeF?´Šö*çh?á­£Áb'º?îê¶”ÛAa?ã•ñØ«,Ø?ݼø «¶x?Ü B�qïª?г‰m§ˆf?ä6`·�N„?¦·“‰Õ€?êNN9+¶?ëOvÝ™bÿ?Þ2÷ÂXhL?Ñ}�ú)qü?ß_ææÉvú?ïñ¯‚�$?ߣš@¿ ê?Áeç3Pä,?íqWõ§C?Øš>æ’Ø?ÞÁECýâ?ÄóÚ$õ\?Ð*r|\É?ç5-˜}?èvH—O¡?ß[øZD,^?áâ �1ík?à·ROzé?¨ÝnÛ.dÐ?ï~%IÍbV?äLÂôôä‚?é‰Ýõ4?îV è÷¬?ÅtÆ ºÔ?§šå’Ži`?ÖLJNv:x?®dô¦£@?×ùsÁ€?¼†{m/ä¸?½¡´“ÛÙà?ï&lh€c?Å]Ê'§hâ�?ÐOECæ ²?Ï´údÄ?Ën6‚¯­?ÚV‡í� ê?âp¶Yc?—m}ëà?Ö+ž 5¶‚?ÎóïrUÄ?á(ÔYÖÈ?ê”Æ:rB�?àa³�¯ ±?·NéàJÈ?á®Æ™U?ã)œ\˜?ì'liaÄ?íY£7'&u?å®qŒj#?Ê´qY ép?îÒ•µ²;È?º‰8–çëà?êfèÅÇQL?ÐÙ«±8P?è&™xTŽÕ?Ø 9àãÎ?ÐrðgœF?Ý(u_Á­ô?ãlÒ'%úz?ÈÅÂ4�?é2û³È„?ÍÇ!')=ü?á§ÿra?íOŠ:�Â?‹/ÝÅ€À?æÕkk º'?ãàèÉ`K?Ò[�|K7Ô?ìk}R‹]?ļ‘ºð?˧}½†]¸?âÜiy²h¹?ÚTd†Ù ?—#DQ`?à0½=&@?èL}bì®??î´ÊÏRàž?Ç÷d€ïø?áÿ·ík&—?ž×Q�w ?ä*ݪž Y?o7ÌF„?Ül\ÆÐ“P?ÏÈG�]°l?éVŸ™n?ìÎcÍJ?»е¯(?Ù}ž€´ó¨?î6¡Žj[?Ž_íî®î@?ë”×:øÏí?í¼<Ρ¸F?Ö÷€¾%zÀ?ØÁµ’Ëòl?ë› w ¡N?á?¼Ái)Õ?äW16û??¯\áÖƒêÐ?íò<ˆvyN?Æ–Ûø1@?Õ%ÔÙòíð?écÙ…|è¯?í't§N#?ÛRyKŠò?Ç⟛]£4?æÂ÷i–ÙZ?»ˆ˜lS+?ïEy ¦�?ãÎþGl?àû•2À6s?ïfjUÏå.?Ý+„2Àg:?çP1=‹±?Üþáƒ9?Ž?ÜÍ›¬Ü?ÙxÏ:¿º¦?Ø“ÇQ1šª?êåýhÍôë?ìÔ‹ÔJUõ?Úé½oÄÃV?áý[�ÞR?âÙ9¯È_ó?ì­eƒÚ,í?ǃåän˜ ?æ2qxÈŸ?ïʼn‡u?íÎit•ú?îÃ÷Šú:?Ô"T ÙÀ?ê¿dóšÙ?í&¬D‰’?ßG^AŸ6\?Þæ¡�*Þ?çc ú`H!?¼• ÷BÐ?耗„è/Ï?íÒ�Ùœ’«?ÏÀ.Ô?â~ð…çï?ëV`Ú?¨Ÿ?ÝæRê¹&?è¢Ë ƒ¨÷?Ü{ñl£˜0?í@ྯŢ?×?æ`«h?º^ïñLt@?æ¿�õygi?ÚØNçZx?í‘‹‰ÆA–?ä,)dÕ1­?¬Ú��*ì€?í•TÄx?åxy8ÃRÌ?žJAŽƒÀ?æ.¯�‹q?ÌhCM'7 ?쀵—µ{W?ë">™JS?Áü\-A+ ?æðOµÖÞc?áªsp'«S?íö7+i0E?Ú" í-¸ˆ?êÈV|чØ?á7ªzú j?îÀ1Pí?ÎQ´ÄµXÔ?Ø¡T¢ƒ‹l?Õ&:k”?ÒâùÉØÚ?׬³œ?îlœ¦±s×?á8uç?ÕÏ�›gêÖ?àp¾Ë?ì2å Ä:?ÐŒ�Œì‡‚?ã§ÇxŸ\?ÚC™ÐÎL?ØR?ª1¾l?±û£srB˜?ëÒaÇ€�?ï¢öèî?áa«�É?ïXrÐÒt?âY},ñþ?àäs‘¼*"?¢¡…Né0?çÂPVš<¢?èÒw¡«›æ?ÃÏ«=˜çl?ÑÔU1k�V?ì…3eO?âÚ)�Ä—ô?ÑáQ³>„?Ä|Å9&�À?î-x÷N?ïp]Ý*ó?äãY".@?°#}³¡0H?ÎseÆAP?ßYEÉ­b?î_hf&…?Ë›F–Õ=l?¿± Ð?åõÄ™ ?é¢ü¶/Øš?ÝWE/ôI&?è–Ê «Å?áí÷ÂT½?ï'ýüÈ‹…?ÌŽ®.Î\?ç¾³¬‹;&?à^¬Ÿ¾m?áš7 hz?â@lÂg?ê»ìˆ‹�f?Ư§°p$t?Â_pp@s|?çë<ñ³'%?íļŠÈ  ?íŠsfgÌš?¸½£áÿØ?ãÒ4Ù˜ª?Õó@cɲ ?ä+û|êú?Õæ.Èq ?Äã¾/–BØ?Ù`ŒÄµ”:?Õ¯§¨K 0?ìêë—?p?âX ¢ƒ $?�hT<%­à?ïWÎT•x?°aNþ;J�?œ•0D†?ÓªM÷f?åÝa~Ôm*?Üüɺqþ?é@>k—×?îVøuu6L?äö˜¬_jC?éÆï®T9>?Óî%îC“.?ã•@„ØÆ©?àøóÅAoë?ÀÙ1mž¦´?ÄÒ¯Ñ-Î4?ï#WVÉx?ã´$`.–¶?Ô~bú?‡°Óê@?턤¨”½û?ã5@)�-?át¹tÇJ?ÌýmÈÊÏÄ?æü]j\™j?йbõõEâ?ëFÚ”ôßE?Öªe{¢�v?é²÷Í‘ ?×ÉywîÝ?½Þ»JyF�?ç�ÊHÁû?íì¡‚œ?À®:6»D?å�™ò}ì`?¶|%‰=€?ÚzÜæó„?ÚI£YY¾ô?í@uxñ©`?ίHyÚå�?¯¨”3k2@?¥ã‡™-@?Îa[ gž°?àÌ®¡å7?íI¬–ɪ½?ïÝ%3¿ð?²Âªî¿h?Ñ5ˆ}Œú*?îPUKšÏ¡?ää@Rˆ@È?Ä܉5‹?â¼æmËÓ?âV¬üyU?Áë)©*äÈ?Òjÿ9rF?í–]hÜF/?´ë +*ýè?éQ‰“¦Ç?Ϫ–©I5?ÜNF(10H?åw ZST?ë‡fÇå±ç?¤ù‰9˜äp?é°rGÂSþ?Äóê�5d?¸!|˜Ôp?ë@¼ã¬6:?Ü**ÚX�z?ξ�¼'™l?À¹ÿKFW ?ïi,-òÜ?ÖâïPqã´?Ì4«“ƒ``?ÃNò¡¸?àåóžÀe?ì“4luï�?æ…óà•–C?ÛçñõÕ¯6?ä]0ÓŽ|W?ía´ú뻸?»I÷ˆ?禳4È?àñ§úˆ?ìªÿ¦§mx?ß ôÛmG:?Çõx”—,0?€f}Ï’À?µaŠÖ̘?ácaIЄ4?èŸ¸Íø€?Öíåñs´?Õ€:(Uî?Жޙÿ `?Èb7ïEr?îˆ×fRÅ?îˬ¤á á?ÓT°o¦ú?Î0 `7_Ô?í 0Ô¨?ëÁ_Šp�P?ä�:Ã:œ?Îæë?ë.nåœþ?ο€*|O,?èöOõz´?â§FÉÒ}r?ß÷i|t%Ú?é >î¡Ñ?¯³¢ fÖÐ?ÔÀS,Þ?é…ýcá?æ´tÂ… ?áKÒ£•L?í#ؾ>n?è‚bÂLÓT?Ï4( &;?Âû¤–?ë–/¼î b?ì ¥Ó¬úâ?é° ´¼s?¸¿tÌìô(?ͼ‘Ý„kä?ËýޝÅs$?ÝB}xô\?à óŽþÖ¼?Èü©•Zº?ãß-³Ôç!?àyêÉø?ëÐÛ&7‚Æ?¾ÑŽ-œ?àÞÓá?»‰�w¯ðø?ë·§�al±?èŽspf ?æ9OÌda?íñÈXc!?ÀÓ_Ìñ^à?í=pxöŠI?Úl` µ?èü›gä±?Øwµ… ?Á)‹6oÓ?îv”–)„ë?¡ ß—ì`?êÿ=W‘*?ÚÐêð Ì?È�l¬|x?çÝ4æ•Ù?ëv^Ý&æ9?í­–Ç=@?ª+òÒ©£`?­q0À?É«4-¾5È?ì�™|¸ƒ5?ÔÞ`•”…b?߬AËý ?Ïâµ¹Ìfd?æ7qyc �?ìq° >Æ.?âŒ9´2 ·?èé ê*¥?êÄÚ3?ßó³ln?=Ìa¬È?ã`�þÉm?¸ËøwsÈ?â õñ)C^?ÑË|£7Ì?å§'?;™¡?×H+Ð~ö|?’i`¦m`?¢Ûik—€?çñ !°?ºPÎØà?⃽A¦ÑG?ÛŽ?‰ïáÒ?îÆw\�Þ¬?Ý`KO“ä?ÆF³ÁÞ—?Ì‘±ô h?êø^KY?àþüü?ÑÚvã(?ã/Íê­X?Öõø½…#l?«w?U¼?ÆOce~´?îFæœ1;?ÙP|)C–Œ?Ü>ïø�–x?à�°ƒðh?D†>¹,€?Ü4¿ÉD:?×Rõ$4âP?èjË•³,?ïìe”iG×?Ü2ãYÿÌ?ä°­¨£½)?é�<^A?ÀXÓ‹PH?Ä¥MP´?ç!x“Ÿl«?äÍ[jé¸?êØ½�‰?ѼP­žþx?Ü¢ÆÂ¯±°?ì=%·¾´‡?† sfì?í!ü,oì?Á,ðcNp?«e„pñ[P?럋>…›?çN”aêB?è`ȧÿ?ÊN_5äY0?ÎdGóBg8?ÌG±³?äu') l?æ./‹Û‡ÿ?鿃úç?æsÚTþ‡Ÿ?Ù³ÇÞ_Dè?¢ø·Á·¬0?ã¥Ôi µ6?àû2}—ž?ç„Ü� &Ã?ãƒÀ5zÔ1?ÏC<èø?çå"™Oæ±?ÒÞqÖ=?–mö“GÐ?»�175Ð?ÒvD‚„e0?Ã.™0ÑÈ?ÝŒ‚ÜÔl*?ÔÉ!ß¡Lh?ۯϗèÜÄ?î À§†’˜?œ Xç ?ª‡öOù@?ãžx µì?á!ô%¯0ë?ákh)eB»?ÓÆj;„ ®?ÌðÄ,¥Rx?чÁé\=?Þ±Á›+8?è+[K²…%?é(kJµn—?èçÂ:R]�?Ш¸{L?åÑàð[k…?ážÕȦK?æB {ø?è­ù"„ì?Ç^ÒÐl4X?Ô€€…I¥²?ìInlnÚ?ï×¥½”/?×`Aˆ‰Öè?ë›àwÉ÷?ÔÑKžëz?äýl¯´qÿ?êc—¿5þ¹?èѪË\'v?å Îól «?ᥳ Ê�?ÈFÔNìü?ç&_¤¬³½?ÅfLTõ“”?çžÉf»ï&?Ð% ;ì?Ær°QÐ?ÒÆÌµAÃ,?àú0BH‚˜?ª»|§Ô@?áô„ÈÇ÷Ê?¢Æ2㮃 ?ã°ùG¿ò?ç®Ô h?ÁnfEö¦ø?êÇ6ÿ3ï?ï –·?¯?ÎÔÔ�A?Ö^žc¨–ª?ΛP.)¿Ô?à¨óëä-?åeêù©ø2?ìòaG¾?å:z§O2M?ãƒSÆ×n?‚@»…È@?Ô× Îyþ?ÝÇšE ò?ê¡å=T7Ã?Ý‘c±Ø?Ý®r 6E?í â71m?ÏϨvO#ä?µµ×L{x?³(ÀÊFüh?ìèHV#Õ?ÖmÕ ’È?Ô°eìN°ê?ÒßêHÊ‘À?ª¬!x!?´(²šÄà?˜Û¼ô ?Ù�y(žCÎ?ë䮺ªpö?ÛÂw6äúH?çÓñz܈_?íC‰dTSÜ?ï£Ö±X,Ä?í•À¥![?¶xj„›°?ê!#é„?Î<‘âY÷¼?ï£Áöî°B?·O»XF‘ð?îû}¯_X0?ëÅ�¿½‡N?ÀŽý¾Y—?ÔR{iãr†?äê‚1šJð?ÝÁi5$Gð?ïJʃNý?×­~ngÎ?á7~ºÍ�×?ÙìwÎgRî?ˆÇªÞ»À?ÝïgÙ[ð?Ü´@!9þô?ä/ŸÜtx?î\Ö¬ÑæS?æÕ»a¨¾?ãZ[SW7)?ê ´Õ E+?ž®8   à?�õª�U?îÖMW¿7?Þ¤ÍÙàö?Àí—áÖ£x?ì­¾èæ­Ð?ÚÃzǵ:?èÈjiRI"?Ç´ §}?â“kÏ�wæ?Î"k×#£8?ãZZ€¯?ÁŸ¦Ë•` ?îêý~?ଌöÔ?àu¸ÿã7W?â“ïGÕ‰?ãåÊËâ:?¬[>0?Ù„r@È?âÍ’Kö6?ë—†[¾¼?ß®YC…Í‹(?ÛAÝ«™+˜?¿SoX¨ÁØ?ÕÙ€'vò? uîzà?ÎþfÂ7-l?ªLeú b ?×Öpš®Ê?¸� C×­Ø?Æ+?½¾Œø?á,Vå’Jâ?î‚ßùNõ?Ûä*á¬?ä"`ͳš?Øï° ¾ot?ǰ38Œ?Ù5h$Ñ ?í(ú%;?í6å7-?ãõÔЩ¬?×� Ï�f?ã}¾J ?åÒ{­~Û?îd Á*9?Þ?ý$äð?äKú|úet?ʪý8&~Œ?äKÂ(Nn„?çÀƒå¦�?æáœ'l?ââ‡Ø?Ù.HgºÎD?ÕeT•#Cº?àÂ:V3?é‹Cgù@Ù?Ãõ”É�›0?ì(‹�3.?×¼S*mH?Ê,æ½>€à?ìPJÓ®#x?–Œ±Ãì ?×Nr†%·Ø?ìi ty?Ö7Û;÷gÂ?ÊçÓ³s(?Ù0�â–Ì?É�8ØÀt(?ä¯À³ÿÐ�?å;'U;°È?×zù � ?Õ�jN?ìk~|6Ö?ÜÁiƒ’”?¶¨mÚ0IX?¡ßîRZÅ@?È—<ÏOœX?ä0ƒB‹?Ñxu†ç5?¥9Dp„xP?êà‰3B`ç?çºÎGm—?ãù³«m%É?éØN»aÇ?èØ}éŽä?ëZpG„5S?Ú`œå€ÜÈ?Û°7Ú¼Bd?ßUO,µŠ?æE޼pá?Ö�ü£ÚÜ‚?äÓõ)? ?Ør*ijvt?ÐÓæ%‡„?åô�êÚG?Éí îKiœ?î’ë}á s?¤ÅåaEK�?À}f£h_?àr“Ù64-?çæG1Û}?À6I )t?Âl˜t¦/Œ?Ò¬‚îqT°?Õ|;›´%Ö?éSÜ[¦h?Èpé„]d?Âp�ü‹(?Ê?õÝ€…È?˜ýª{w;?è‘F¾Ð?ìlC˜?æd ü?ÓŒ…Fž?»HÊ Í(?À{<:B%t?ÃÛ(%€9T?çÂ’�ú“%?ªK³&»@?âk�©Yf?âôUöªNV?¦ñ9€)à?à‰D4Þ/?æLhðm©*?æ —J"q?§ó*8{u°?é†ÕYU"ì?«–{ß@F?á÷ƒDÕ@q?É>9�ÇÓx?îky{̓Ú?ïñ7¬½ä?âÿZuw§3?×qhèùž?Æ›¢ð á„?ï>!;…¼-?�xrý÷·À?ÙŸ,7G®À?î=Áz��Š?Û&¥ò(æô?דÌYÌ7$?‹YË¢—g?çác·†yb?Ñ#Ÿ+´~Ê?ß»*÷ãR?è€*bU¾?碒%¿âT?ÏUYÏü?·ïµaƒí?è:g^±ÄT?èÛ†IÔÔ¯?âÌôÈŸµæ?ÒV™Bh³˜?år�u0gA?Ð$³{ét?éšôšý´¨?çHåÄ!ó?ç6[Úþ?ïݨÌ+°D?á_ —º·œ?Ñ;÷cá .?ÑgkûÓƒ†?ÕÅb‡e›?é9( ��4?ë˜�Ò·jæ?à�œÏ¥¬?â1S®.š?æU±»2úL?êKŸËß<×?ÕcÖúÄ6¦?É\¢ õ¡=&?èjl”¿?à6¸0ŽÅ?ç¶íŸìÞä?êJ"skZ?ÑêPd-Š?Ñõa°á?ï|IcRº?Ü ª¢ÈD–?Ȩ†õh?ÚQJ)×]*?ÛKA5~>?ÅO«3²Æ€?§ÜÈð‡%0?²Et¿¬0¸?çí´r³±Ÿ?Ó«s`êÔ?ÉX‘“�gø?ÁåÔ\ù€?ßüF4!oj?¸Ë.攘x?ÀªÀl(?ÝZä|A½f?Ü ¥yŒå¨?èü¥us8?æ½3'ó;?ÔÛâ\�œ?Ýý.EÉwf?é¯îÜþŠe?åÓzQ_¸´?ߡ9*/Ð?Õ105T•þ?ëÁ?qî}?Ý5âš# 4?è–B‰.!?åd íä?Â{‡š0?ám€ø²1O?ØV$°žž?¸_hïè?â%e¯å?ÜÁ›`›;ˆ?Õ›°Î¿\8?ÔDÙ•³³8?ãPÏ*‡åx?æ毸ž?å·”Ço¥Ã?îÇi&ÀÇÜ?èíÿ„•YH?å™aG q>?¡óÙÇ;Œ°?³“�¦ ¾�?ïƒÃC F%?Ïs4Ú�qŒ?ìwíÇ¥:?ÇtçÈ#Ü?ïS  +>Œ?àæ|«]ða?ë{LU™¶ì?äI«V?ïkA©‡?ÞbvÿìŽ?í*hÂgfM?Õ¶¹ˆ`–?ïLe xA?ãÒ¢Îÿã?Ó� «©L?çõ²£Uø?Ü6f`’BÆ?âc°k�N?ê® ¿v,x?íq!Õb?äïîRÇ?³Ìn4ªÐ?”­r:‚“`?»êE´¢xà?ëÈÛª¡³?Û³•AÎþL?é£Ã’«Úr?ëÏ 3?ŒBé ?›¬¼ª ?Ê)ú_vŠh?ÖÎf¼ | ?éIg‰m$K?¸ÝãD¤<�?è„ý%Cü?íK¥µ=N?Ä5M:“>$?à¸`50ú?ïv.gw&?¦úãläí ?”ì„yˆ…À?ïñê\…8º?îBEh1á?·rv”ìm@?Á�=Œò2$?À¦T?µ¾?ìÇÀ?âd�é^‘Õ?Éí›k˜à˜?¸[E·°?ä;…׌¶?Û~éå ?܉`g�j?áhw¼i‹?³–:yÛ¸˜?íÞÈÙþC9?çž–V; ó?Ö Îì#ƒÐ?Ñ£¨¸¿ÇÊ?æ#¸êea?ãÑvÐ,Šà?Àt_Ö-ŠÈ?ÚN°į?½Û¥ÜG6p?Åo9H¬´Ä?ÙöìMþTò?Ï+ªÈíø?Èþã4Ï?ÈSš�žŠ?í?Ò…¬1?Û*éM_³€?ºÙÂÏ{æà?ëÒ(š@Á?ÑýPP0n?â/T}ÈŽÈ?ã>s¡ûàÆ?Úa¨�ÉUL?Ò Ù(½`Ø?ãÛ"½‰‚?ã×ob?ÔÔ^¬ýò$?Ô¥6lç&ø?Ö¡Vvšü?ã´–ÃÃÐ?¹”ÛP6õ`?äD6ü!?ïzrç8ßž?í^±á¯4ñ?çQTÉ8?µÙ@’ O¨?áyµPÛ|?çdÜÍÌ'ô?Ï�'´?êÉN|µ+„?ì2Â@|]?Ëó©ð+Ý ?é÷Ú™§?Ýâ".ÒÇL?æGÜ“ ?îtù0‡=?Ø[&laÒ?çëzØöø?ÜûÎÛX†?è4#(¬Kd?´P3/Â0?âÓ%âIb?䢬5ñ×m?ϬŠ1>µ”?à´TËÇñ±?èÑ�tqà?îöj®©ìB?ê`ŸÕÔ?Ô¿I ?ÔàŒþ?ÜT ²t§–?Òš£m¨Ý„?è}ôvÝô?îÉ™%7K€?åÉ<@ðí[?ÝYõ”è¢T?ïˆÓñ™×±?ïô¯!:?°J ÊÞá?á Í­X½ ?à.˜\×­?ç‘‹1‚¤?ík\ÿ§?îÛ¸ Ý–l?ïX,�?è|jŸn°Ó?ïïä°š»?Ã+¶NÒŒ?ÙzFN®N?ÉŸ8I À?ªu¥ƒ ?ºS,@‰…°?îO‰"§"?Ûø˜Ö*!î?èÍÎÃ|’5?àoD$mÜ@?íDãº$P­?Ã3³k®ú ?çïzþ-?Öoõ5†?ÇO»òîH?ì»§ù?ç€cµö™?¡£HªZP?àëO_ñVÛ?Üs Æ5S&?ïœ/–ÐiD?Ç”5ÆæD,?ÝÊA/y¨?ѵiSá`?è~¡ú Œh?æ�PÜ8u?¹Ø]ðÎ�?áö³1#”~?Þ{2¬]Ì?Û r¸3ø?â’¯;1–t?Âï"{‡4t?æS@ë‚Ô?ËL�¸L€?Õ0¦”Dhh?»R^Àÿ˜0?Ä2WvwP?Á*²hÕ¶Ì?d삤¶?ÁÐÙ¹µð¨?ëæ¥9›2-?éÜ6#—?á-TÿÆ?²ÀÙ€h?àåóªv?°d€xÆh?Ãnv1 $ø?Þì@ AÁÊ?œqaË9³`?ë<×ÕáÕ"?êÕ�À�¥ ?ßNfŸP.?à’‹z”š?ɼ-ÎXiü?Ëb™~Ìè4?àª.gcÆ?î6d7·”p?áô…õ&ÓM?á~òv¨á=?Ñ@œ ¼?Ù¤vè½mŒ?ì¸m– Æ}?Ï(ê¾áh?î ÉBÇ*¡?Ð ÉàEê?Ó8øRǤ\? @ŒnvP?ݽ֑IÅÂ?ß}WÓ²?Ïr>ÔðxL?éä�b’V‚?ÜnÀg¹e?ìËâÇ›?è?Ù‚çÏæÄ?à·‚£&Ù?ÊH(o$iü?ÛyìZµ\?ä£ËmIªe?Ú›9ˆ�ßn?È™töÑ(?ÝÜÒÙ@²?ãÃN¹ ?Ïú¦òñ¨?ã6LJâeÌ?î¼ öŽk?Æß Óå}„?éð ¹£Õ?æ`oÓÈ¥T?è}ÅÐÜ?ÇfRè™ñ?É•êÕRMØ?çO|„z H?ÒÇ\·ùÃÚ?ë‚þûÜõM?äj±è}ýa?ÕJÖfJÐ?ÚpÇin#¢?Òv#îÜüL?À?×ûÙó¨?ã�KÏ>S?Ñi›»q¨Þ?íp‘ZÔ ?¾ª›'ñQ ?í¬§B2Ü?“«ha‡% ?éa¨ÆîAÒ?°««Ad¦¸?âõ8Qpµ?¡i�æ‚„`?Óz?z{"?ê ÏlÖœ¨?Ú¶ê>'ö?æð³_K[?à~¿©œ?änj˜vˆ?ïÚhGIi?§Õ�0·Ô€?ã2dÀÅ?ͼËžqœ?ëu¢Ïåž”?å »"íºò?¶!‚Æð?ét~dÝH?ê~—TäK?îþ…nÈXô?Ýâÿ‘²Nœ?´8ì÷ÀjÈ?ëÐ G)A�?¶–j[fHp?ç }†>X?Ðü“ ¥2&?ås“êä_›?ÞúŽw?.?çF«ºV=?ïÙi\MÆ?Ç…Kߤñ@?Óï�+x“.?Üt¦žý:?ïmH}M?ír#¡?€©W€?ï„’ ‚5–?ܨÛÖOà&?À†ª1ü€?à#5ü…*O?«ûYp»¶à?æc£{I[?àßWIÌÌú?±ˆ¿M‹¸?비®t–�?ë>£ÃÒu?qLÔ,µ€?蘆s¥—?º,ûðɈ?ä˰^³½ë?˱8[óñ ?Ã"ÍØíL?áÎM©»þw?äš*#?¶]Î�i�0?ä¢=VXwv?¢5´Õü�?Û:&%öX?ççãBrì?ȪSO<¢l?ܲhžC]Ä?îÀ�Ê"|?è„�ê÷‚�?×ÎöWc `?�ð�²Ÿ ?g Ø É…?Ýh„îF9¨?çrë_:dn?ËBÑ»�dü?çrý¨¾[?äBÚßád?ç:�¼ì´þ?ÀŸúŸ?ïŠ>ç…xé?í#À±e›X?äÖ-G ?âpsGÅó?â D‹°]i?ãð‚#èï?Rphôt?ì‰KOÛ¥7?ᎋœ…#÷?è�N/ŸpK?é#é»›ë¢?ä>¡êÐ8?�©ì<†Û?Á&‹Ziè?ãE0&‹Ä¡?ïƒ}5[^?îd kÀ¯?Ç%"Ï"?ÆwKMD°?ÔJؘ•8?ˆúå÷C€?íU`œ:~£?äûÌÞ¢I?å×’{jW5?æ(^"Ie?²ï¨Sª¤(?Ú·ã6 º?㽿qè¸?Ç—ÜoH?â*[&݃¶?ÛÍñ…ä?ÌXÖ`U�?çÞT=?áHQ ?šç…�â`?â¤?¸§L?âñ�_<9?è;ó{FƒN?è[Í µ{»?Ã]nD|?èΑÙí; ?äsy"aa?îõ„'wQ?´ğM׸?à0Ú$`=?ŽÜ(.—N@?Ïã‘ ïð?Ûç,Gö?焽FÔ¥�?Õ20Dd¬š?Öbu0qØZ?æ7¬#�?Çú—¥Rؘ?ãÛbY—ºÍ?ãU{Y`Œ?Åö·Hn€?ïpcJÌ?èŽs›cO&?ᙉWëh�?Âå÷û<?æ‚ÛR·­@ü?é=GݨÞ?Ò¡±p ?ëN¾Ä(ˆ?àøf mG¥?ç+�âËÓ?í+c¯]è?í‘„v!‹˜?ר³PKN?åéf}~?ãCˆBfܳ?àx)Ø«:?²‘«�"{Ð?Ýüõý ä.?ÐpJT®�˜?©3F`× p?ê.C¶jûÄ?àkF�æ@?â_Rx?ïý¥ªO×?ÛÒ]Ã% P?ë�Ÿ�x{ð?Ö¥¥¾�Æ?ÄGéeïÅt?éC…D…J?µ=ëUè˜?ÒWw™³Õ2?î4÷¨lÁ�?åÎÓ–¶b#?Äë¿A.H@?¶h#ãÀÁ�?ê´Cªã.?Ý]Ý6xœÐ?á=”¤/ ì?Ô§zýï¨ø?ïí«ø‚=‰?×™ë"@ ?ë/³Lb$?ï`²Öˆ?ÏŽÕÆ¹þ? ¸Êÿ,@?á:ž¯s…?àÚY«å>?íÄ%©•Ÿ‰?áìù¶ºÚ"?Þ�X[±"?ê]ý­N±?ì Î\jZ(?­(œ{€?×Ìs�ü ?ã2°À>X?æ�ÉPþ¤l?ÁÜZ”gl?áócyã#?ÞŸ‚¨©é¼?×PŸ/äø’?è]×3 $?èÊjPµ‚Ú?Ù?Vw˜€>?ã58›ˆ?†4ÝÍ“¡@?ä¨4Øù?Óç ;Ô–Ê?ïº^«sM?Õž\®’H?ç�üm5K?à œ5µD?Õ‰• tÈ?Åvêà7X?ܺ4Bg­n?ÏŸW,¤áp?äw:L%Á?ëtqáüQÍ?Ø=”*r´?ÊϬ��7`?éQN 2bY?ë|.<Ò^¸?�‘m••Ó ?§Ãk�µ³P?í¿7¦PB¼?Øúï ÉWÖ?ãáÍsj81?Þ"èWøƒÀ?àå;¸–¬Ø?åïÍÜ·?šðÍï�yà?äNþ(’?î±&KÎ?ïçºp‹ª?°4SÛ\Ѱ?é%ê�®³?Ä¥¯§ˆ P?ÜD.ú7ùÈ?ê°e“?¼|÷F‰Û@?Û4¨°ŒÇ?•˜FïŠ8 ?Ò§h'ÄÀ?èýªH¾?ã.·“y+?É-® À2|?ÌVyÒRI`?ç²[,ô.í?Ä·ßõúþì?§V|^c'`?ê?¹�|�`?» ßO¿aÐ?Ö8!+à�*?ÓÍæµeÈ?è<Ú•ÄŒ?á ¦uÚEí?冟[I:?ÙÒSå€c?Ç× OØ?ìYÂʵw”?à̼Úþe–?ï„Ø2 0 ?«òó_0?çö(jš�?åm`äˆ �?ÂeiÑÂA”?Ð0ð_1|2?æ >EÆâF?×È´†ùb?É2iʳ`?Ø'Žä?Ñ ÅPŸ¸f?¥®² M ?Ý#©, n?Û9¡_<ü?îJ¸_‹Ú?ì¬@Ëž�¸?àÿ ™^[2?ÍÍÜW~“@?éé§Œ¸á?çý!<Ü–5?°dB?è�²¿œ œ?ßp•�)é@?àš qÓ­?í"[6Ë?Ó åqAœ?ïȺ-�>/?Ïa} ?ïy.£"Ó?Ñp³ ¾?Éf¶¼ýWì?ä,ƒÖL3?Ø@<}ð�?ïj߉MŸS?í…Á˜3Œ?¹ÏÑb{ŸÐ?Ç—¡¥£T?Ç’±®4Ò$?€Åî$³JÀ?ÔùîXª`?åfè[¢?ÅgPÈܠ?àu¯÷šÿÞ?¨am_…?Ù*3dí þ?¿0lWz´h?í¶ðVu� ?ä@‚D½Œ?ÒÛ©™Âï¾?˜Ý”:$@?Ð�:ëkx¢?Ï^éÊ(âˆ?á7É ¶;?Áô¼¼¥‚Ø?æÀ-LüN?ä䂼´@?èºHÓO…À?Ùëx,ì?Ûò ü Š?Ú~±ûEì?ÉóuÝhÝ€?šƸ÷ˆ€?ìpâ0gK?kV«EŠ-?ïô%¤+¹K?á7Ñ£÷XE?èm/­¹‡E?æÕiðgrÁ?Òµ·^šý?ÌË�ïÄ$?Û¬e{´¸Þ?îdn`š-Y?î]bñókÁ?ÕGïS�Uº?Óf¢¢(pö?Þˆ™ô5·T?ê�ÌQ°?ê„�,§d?嬦 ?¹Z …_ø?ã™×’O™®?ãÁÄ©¾ú?Úü�Dz˜?ÞîÞæ21:?ÝàO{­Ð?Ñ‹ÞÁ�`?È+&¿c,?äsj«œHf?êÌñ”QøŠ?Õ¾`DZ¦?è¢ èfŸ$?뀶×Q�??ÄWš)Ù¼?èëœ�‰s?î¹o­z&½?×K€û»Ò?ít4¢'Þ ?êM‰Øé-m?ënB“?Èü0#œ„ ?«ó¡“ÕÒÀ?‹0ý:Ê?Áéý‡ÓÔ?rêÛÝ4L€?Ñ9ŒâEÄ?á)­qÏS?ǸætÍ€?ãl…]2Ð ?ÀŠˆÊ5¸Œ?éM@¿%.?æ«\“©D?áßDËJkÖ?â¶,8m=?Üw¨tv?ΉgË3 ?Ö�¯ý„š?ÂpL)O ?å“r“šÁ?ÄÆ±³Û?â�¦ è1?ܸé°R0?Ý•çF?î¶åoîq¨?æ°wW åh?êuëå¼?µ†‹ä_�?ךç¹)‚?ã{JæßBš?ã`¼:–e?—yžÀ?åó†8h\l?ÙtZ¦¿&?ê #@µz?çAP9Ó‘-?Þ¦mà£yÎ?ÝÆï´ %|?íÖßõÑÙ?¤˜¬Ð?à,6xþ2x?Â0xÍâ¬?ԻΌ²Qr?î‹‘i–+¿?æCiüEû?ãÜOU¡#ð?ìv÷QïŒ?Ú÷Ê·;öT?Àû§�G§ä?ê‚ËÍÒ‚?¯£þ?ϰ?×]Ô· ?ä�ž/¦‘ò?„l½Çù¡À?ÑWt<8~¬?í†gÎ'Ê|?Ðq¾?Çò4?߯c)vTÚ?çq&˜‰°?ŒÁXïÑ€?Ö~cÇ7a?䳆B†ç?£[¹¥‚'ð?ÜÏ?¨,|?ëDe«eKe?ËiË�ET@?×t8Ì�?Ý/°Ø}Â?ê ™BÉ,?ßxrt´ñf?ïʳ“é'ç?ÝÆ¿¹È¨?ÐÛp°Ðµ?â†g\—ë?Û¨2‹€‚*?íÂ<ªNR?íÃ�ð)ý{?ëˆ�æ?é+l¹vãá?îyÁo|:ý?ÔÁ„iõÊB?ï”Wìzd“?ìFyiÎ ?ì1—;nÙ?ê&Ú¢ß?¾ç$!\Ø?ǃ¿TrÌ?î´uõ2i?Ù9ÆF§Ü ?é/D¯‘�e?î|ÿ�óãµ?î‹hüô{?Á~TwN˜Œ?ï†cHwšt?ךËhi[Î?å¦Ïù€Ÿ?íù§‚5?æ) s‰nú?ÕÈX@€ª®?Ø»†´?ïOœ#ékÒ?Ü«ôŠ-pf?¹�F’� ?ڕׄR?åß$ö$®?ɲ¼|5 ?Ï·te,bÈ?Ë¢÷¹!­˜?Ó|VerÌ?ì‘Æ¯^Ç(?ÕÇèíQ?‡›0BÀ?ì<’tx&³?Üš~ûw|*?âˆØÓ�?Î?ŸÊUd?ÂÌÄ8Ä?ë$5DD?Ólò B‚?Ôµ;K_¸¬?Ú•B:�? TT‡‚L�?Ú¤»‡²˜¾?Ϙ €�h?³ªù%Iì?è¨ ý„|[?­CÜÞš°?ÙŽ’DÄŠ?ãÀ>÷@‹)?´-¯7êc`?ëÜ£xZ�?É„:¸t´?î¶•æš·÷?ääÇtih?ÏÔ§%¬iÐ?´Æ{á¦h?æu'@PЖ?Ñ‘«_R´–?¶–jöa°?é�Áƒ‘?á ýNóüï?ëoÝŸ¦0?áÛcT¼Ì?ç²SÙ»$?îº  ×?âmW‰êT?èNĈ ²?² :D%è?ï�²:Ìü?Ë fòs'L?íÞ:‹ù4§?ç‹&öHà?íW-¢W0?ÈW¾ÁÙ¬?ÁÁ }Pî˜?º‚âïÎP?ÑçÕæ.ü?ÄŠPLM%ü?ÙÏhƒx&.?Ù’®g …˜?åŠ%¾|Ÿ%?Ó‘´6¯W?î "¶Ì¯?ÜájsÛYb?Îp2Y}rˆ?Ñ*L×û„?å­]í&ž½?ëiÒ�ˆ;4?îjh{)ˆ~?ç„ûƒb1í?á«I0"«Ì?ØRÏÒŠh?å)ùLNŸš?ÓîHÍt4 ?´C‚Rýø?à¾A+®/?©{è]³à?à·£Ù­+�?ïÓ)Åmu¬?AL?Þ ”?ꉿ¥4ò?ÒÒX©µÐ?ß�œQDÖ„?å6ȆDÕê?Íl¨ÑÛ8Ø?ç;è«D{?Û»/¡€«b?Å» †¢Ø?ÐkKÏ?¶Ä?Ö_–&ЏR?Ùû·OáJÚ?µ²OðÞ0?»± tz8?Ôt¿³6VÈ?æhÁ¦\°K?êHÉ/œz?è'cAþ¡?á‚<@tæ"?Úx« ©ï`?ïL¥�^×*?ã¥#Þ?Ø]e¶$:?Úí“…Ž–Þ?ÌË&¥ŽÕü?å?¥ ŽÇm?ÓXs~Ú� ?­SèZ?Ȫ‹ƒOT?é:Z%q?í‚̵H‰2?æ`\\=âq?ïÊÓ�?Ü‘û¥Cä?Ò#ÿ=‘:æ?Çm²Šy�?ïE£ÌÕãà?é<�.d¶”?è¡uÙ^?Ó€˜B¨†?œ+rœà?Ú3úXVY‚”?Ôu@#•϶?Ö’§/‹=?Ù°¢šYM�?êc·b?Ö?ä+Úàöl?пSåúžª?ï[¾90@@?×÷ÌT á8?à©�íËo¯?ëdÙQU7?À`8ä'I´?ëÜöÈÏË?�™pi¬@?åj&1’ë?Ø G=« ?Ѧò >Ò?³U?#¨?Ç·KöÅý¤?Ýt ˆLËt?åî_xÕ ó?è;SV{™b?íS�rT,…?ÀvB¦Å9L?åb:ª¯ÿu?楯¬RH?êŸü¢ƒh¨?ä•Xƒ†Ñ?Ù#?ßIŠ?Àä"âDŽ0?î³’âL¦u?é^À¸ y?ç#›«ÅÒ•?ï­«(:ü?”ÅÚè9|€?Òž5Úº9?áÔËž9bS?ãUÐÕÁ?bŒ ?(?Ùe"T!d?ëkUS†�Á?ÝR5“cD?Ó 6¤+5,?á-ªRo�?⬟°[iæ?¤¼;ˆ<ã0?Þ)žã–ñ0?ïH©[ºŒ?ïÿزÚÏ?ÀóFE Ø?ìkãDæj?çh�;qn?ÛÒñnl?î²ÆH `ö?êz_îý£?ÕõßH §@?ÃQ`òº$?â÷ àPj'?à_œÆ&æý?Þ Ý† ?è/S9¡1È?èfÏSºY?çùö¬v†?Ü'"@Â)è?Ý䋸fž�?äßæ"I;?âcB~ ìz?ã\÷;,û¥?Ö£”B'Ò?ì¡E«¤?'‘“…?èI7ªÓ¥?â~bEãm?æd¶WuZ?ß”]÷ �?Í'xw}âº?ìâ¥hùy?Þ;Ì’¼D?äPE™ðVì?Î]´^Ò¸?Õ™Þs8?Ûâ9þ–?Õj­šô?ä�t†^(?Õëú“ :t?Ü^¨}êº?ç]·“§†Þ?ؾI™\B?èeÑ£1õ?â}ã�­éÇ?é":pž´U?ÚŠ#KÒ¨?å$8ûF§x?Þ÷bš\?Ûq(¹™ýæ?â|ì2¿*'?Ù¦wÖÜè¬?ì‡ð.¥ef?¸¥$RÆ=ˆ?áw; oY?×ÎtìØöê³*Ç?äñLóÄ*k?ëã+Ûוô?ÖvìF=Ø?ÆÁ+�ø3?ì÷çA�f?Ú€ðW_„P?‰(5Õç4@?ÔC¡[I5î?ÓƒÐZ†‡*?ä�Š%/r ?­T ,²¹P?ºÕ²µð?ã–ù:FÑØ?åPœþq\·?äèæÑ<°?Ôl°õZv?à¢q¥Bj:?ŠÔ”©pí@?Ö�wcªä?è©aF�0§?Þæ/Øüì˜?ÙH¼fÜ1Ò?àŠ.&z„Ä? �JÔ?ë"ñ L©?¿5wÆe9?Û&4ûñ~V?²ì{A›åØ?ÉOM\ì?Ü4ìèh?ë| ¯f¦(?Í´sr½zÀ?Øöê~ZòÂ?ÕÌ=P©ñì?î$]‹ê¸?äçe»%c?íFîµV™Û?䧺0B³?®›¤°ó� ?Ÿj 2:D?—îdÃΓ`?ÜÊÜè;?ÝÕj_l€?äà�ÅÞõ?ÊóÍ|\ ?Ã'Ò'Ÿ¦ ?Ö Ü™ßôÚ?ì@b6»»‹?ë™CçæÄÝ?êm‡gÔ<?ïq¤G˜@Û?ÈÔ“8Qú?ßhŠ9¸æ?Û‚ŒïË(®?ìªÒS×´^?î6»e à‹?¡ÕÏ+ð„à?äó»¦û…?ïÃ�#=¢Ð?Ò’uÆ>¦~?Þ�Aëpˆ?ï|æmbY?Äz&8ä�t?ŸÇ㣠�?ÑmJàcâ?àSòýnu.?²›Ý<¡p?ÛA݉¬?âÉ'¨í~?ضú¾E¿�?é?�GùÁ?âZðç†üÐ?ìRWlYú?Ðp�žÙ´?ï–0€Ù6S?Ò›‰x ^?á\ ÜúÉh?æÒlkmmŸ?çýÈÎØs�?à÷›Å*1?ÂÐCp—YT?çVjÔ®ßé’®Ô@?è9~ŠcÌ?Óww€Ó0?ì‘´|èÄ?Òj¡ý¼óÎ?åðÙBãG?Ò1Oƶü?çT¢5¹Ä?Î\  @|T?ìY1½ÛØ?á _·Ð?âKø¹S»?ìÄݾW5Ë?áè ñìd?ëV×°1u9?ÄC¦Ÿgí?âúÜM�ñv?èÞ ô0 ?ï CWžÓ?äÍt�L³@?´HŽUóAP?਎•{¯?…¶Ö9€?ÞÉ#p`Ѝ?Ù�›NV0?梈1Å;?Ùô¦„?×X¤½£­ ?ä¤íƒs²ñ?Ó œ1 Ä?ê«Ð©Ê.?èŠÁÞ¯nu?êáõ¡�t?Ø¡„{M$v?ácq³%?…·Jî©¿€?ìî||ïdš?á�×*�â?ϯA”N&Ì?®z40à?ØEFe ?ÛÎq± ?èCKÕQ,K?Ð 8ÞoÖ?ÜØ8<ýˆ?ÅßPl?ÑS—ã…Ê?åêÜCé4?êÌhÅàx?cý•ÆY?Çm£pn² ?ëæ¢F½g?çfô…»}?àSNtlü?ÅCæ\$²Œ?ß1!dÌ»Z?{d¶¿?؃Ñlkót?ÆŒŠ¢Ò*D?î4-H•7?Ö”WÏGEb?ç×8Ý“Ã@?Õu²B?»†?æ-»kI?Þ /æ,¢?ÛÑ9$jì ?ç�Bœ&’?êÆùqb#È?Òhfpt4ð?ÍoÕWº‘Œ?Ü„ƒÍºç¾?Ö²”Àvž?Ð ¢I.?ಈ#z§?ëÜAÜ[Oz?½à@é#Û°?à;t™ñb?®éþ� ?ãìtòÂ#�?Ñ÷{þq”ª?çœåx*0=?êôa$™•?æ�ü›Z'?àºyMõZ@?åñLp2t?îmŸÚÔ�9?¢«¶@Ûz0?ê ^ÿz?ÞÚŸE¾Ç„?ÚKV¦³&?å×ÿ—þdš?ìc4óÛ%J?Äu¤§Ò·?ë]þ‡áº_?ÜûDœ×a?Àß-Ý‘(?ÝÞa ¤´„?ìwuBѰ?IJ¯Jžó„?å‚õ(�?᪲Âiô0?ÄÛ>öM64?àœh擟�?Ê�f®rc¸?åDFiõM?ê‰?è!?퀂´!?íB HBãi?Õ[¾s·‡6?Á”?õ ‘@?¬j«`eáÐ?âë%d§Î?íñ¼Ê+?çMº+ À?é iU‡Lc?ØåîǶ’$?Ô•8²ê{?ê`îg_%4?•ÝS&G @?æÃ–þ„¿±?Áé KÁ†ü?鉸/aS?ÝÁŽeu^j?ÕuŸ;›mÜ?ì ÄiÂ'?ÖSˆW|‰j?åZvq†Ë?æÁ•ÞÂçÞ?ºQÀ¾h?rÙ3][?ÔûðÅš6?ß2˜Gi�b?à�:KMFÅ?¿|”Ù–/è?ç;qè1þ?ßáåùâL?ç,ð¨ÎÉý?Þ*_\£Ï8?ã:[#üŠÆ?é¦8¯0Þø?î³Þ©*²?ê¶$?Ö@‹6f ?¹<ª‰¢õ8?ꊘ~áX?ê�þê©8É?³þdïk(0?×�dn.̬?æµóp_!?ÕOBçúª?ÙBó®b?Þtì 6B?åï8”0§?�Ç€;UÑÀ?Ø‘€%Ù¾?Å/ù#X?±¯Ó]ä¸?Æ]T  ?Ûá-F_ö€?îGjâ�?æMRÁœ¥?ç ÛIHM?·òâY7¿0?æ»|¿µ?ÕùÚηŒ€?ì›f%_?农¼Ì7?ë¯Q.�å*?ë¡å¢úH?ë}Iµ;z?í0¼¾Cì?Á¦ØèQð?ÒF B?Ò?íä…Î~?ÝV=º�–p?Ñ[Ìg2®p?ÎGе“tH?îÛbª�„�?ãëä(Í>?°+@ß»oH?‡¢×éù¼À?ãoÌ©F–ò?ï!ÀíØ—?Þ… Ù¿[H?ƒ]‘Å0À?Ûjíf²Ò?…ê›ú49À?µ(»Tùd@?æÝUíÇäl?ï]âAQ Â?쩉ØáCý?±‰a»)ø?Ì’ºNl\?ÕË—*?ç'…oUµ?ä@�¸ÜæÀ?È“ï²tK|?Ϥ*û4›�?åÙŽ#2?½_yÉæwÈ?Éü£ÿû¦$?¯ Á ¼€?ï@Kw´¶?âÒ S€ß?½ü³;ª¨?ê˜�!õ²'?ÝÆûùÌ~Î?Êy7°.æ¼?ÕˆÆT˜¢?êG«;ˆo?èA�³5z9?ÉÏU'´rü?×I¶–XNØ?ìÑñi)Ê?ç$ªp›R¨?¡l®2^h°?Ô„C·ÚÐ?™nÂu@?ì—|bõ?³U-1qáX?Ë©Ö4r­È?åÃxËþ3?è¼ðrdÛ?íOõl'ß?±W/ÈW¸?ëo}µÑ)›?áACç‚ÃÉ?¬¾¼…€?ÕÐGR2ö²?åk÷šx(?g v‚ÖÅ?ϼ¯BSæT?îš4(B¶?é%?òÀ§å?Ó’o8èÅâ?ÌÏ%È©”$?ÅÝ'-ô-@?èøW±Õü;?ë©þ;vù®?量®%ÿÉ?á%ÿ|öÿC?ÙD9àÂÌ?Ó«ý¤´Lâ?ÓL[¿Ã Ê?â‘Óʨ0S?à{ü–&?Éþ¾(=#(?î÷ão¶j?â(Ú<ÁP?íÂÉ9‡”…?Ùù„ŠÅf?×uŨëÔ?ä[Í»·:?îÕ 4e:?ÞÔ’Tp?àð‰ôÕÝ?ʦ« ÓP?Û2dqp@’?æi_*"Ãä?ïÊÛ¶ŒŒ‰?írQ/Qwž?ëìr6’™j?j;‡#q?ì.+ÖŸ¸?»¹vöm@ˆ?Ñ¢h)¾?åI©œùÛý?Ú|¯ìüfÄ?ê$gèîYÁ?Ρ±øÛÞX?ÝYù?éz?èá4+ŠY?éà2¦…ó«?èÆ~Ü pø?ç(ꑬFd?ãiÜ®×­?¾.žpM ?îèGÏl^;?ÞüuöÓäÌ?ï6()Ä•:?ÔƒêŸ|b?À„24*ðä?Β̓xÈÜ?Þ{Ú>ôúCç?è§I“ó`©?ì [ï–7?²8?àvq‘“ ?ÌAT½<¨?½ gü�—0?îëa¼Qæ|?­¹�•¨ ?ØZ„hp°?æ_©­N�!?èkéÎäÓø?çjÿÐó£Ò?ÓIEž§ˆ¢?²Â〬X?åZÙÞ¾£~?‚bX¢åm?Þ°«O€T?”�³n^a ?Íæy£Ê ?뢦ë»ù¦?k AŸ?˲‘H?ã1ër¬�U?çšx×¾Ó!?ã \ª?µ‡‡XÕNÐ?å‚f…À©?æ0yóö¤²?ïs™<Ö?ã»óû¶>ï?Ð7ï®�s¾?àiÿG´¼d?‘%n²é9À?ç$ p-Y?è+¥k悼?è�MÓ=†Ï?Ô¼gpEV?çdƒw¹]Ä?ä‡.**L?í 1öŠ+?�•¢‘�€?Ø’Ý0jò?Þ÷äîÐþ?é#fsÍX?µj}¢Óh?ÀHˆ}$w,?­Ê×À80?àÒLÕ(?½›(Iüà8?ïÂ5AÚð2?;rö5cP?Ýã_Ù „?ͦŠ>9ÇX?É¡l�Ý7Ð?Ð^^ˆV >?Ô®´]‹Ž?¶AˆOÿŽx?êÏ6¾ýô„?Ç�Ôçø*˜?È€á:²€?Æç™b]bT?ÛCd¿ló²?èà��„ ?ÓlÑ6³gV?ÙtyZÎ](?Ø­© yR?ê4gýkÀ?ҙۤ˕?ž€§-v?ß2Ù<Ç?Ä ´¢Ÿ?Æ•3Ï»,?ÖÕ «4ýÀ?×­æ©ÐÁŽ?Ö÷�`!×ð?ãiLO„â?Ç•€ùRø?î+/Ú´æE?Ån‰{‘ ?å>,�?Ù#µ ¥Ž’?ë¨ ~®f=?èøßŸÂìf?áÃë’.ÄÚ?Ü;øöõ»@?ÎþìÀ@%?åŒ UŒå´?ì nøÖNÔ?Òw‚ý“ó”?î->¨ró?æ÷é†ZÇ?å{8‹MÔz?äÁˆÍ®ø7?Ú\ïÙp?àTÔ ÜÁb?æ-r…¼Ÿ?à(“®¿À?Àó,,óØ?瑱ßá?Ï 6ãä?ë­N‹“ûÚ?ìÓÿC�ÿ8?ˆ [’/«?åÂ@ã”ï‹?®fž * p? £&oF0?¤fÝÌ;L?ßQp½È`?³˜AËÛi?ì(‘‚öû©?è¨<¹(ÈŠ?Ô/1T¶{?ã*®±?W‡?ê¸ã¬ª§?ë„”C#c?ȬàŸî´`?Û ÖC©??¥@FrsP?ê-©Ž"£?ìfR«xÑè?ËP*]ß?ÓU­Í÷Ïø?ÐÀ_Ñ š?®’÷C—y@?¨ ‡Ÿªƒ0?è�´ ¦?í¢ø3÷d?Ðí·äØ�ò?ï½ß¼z?îÌþèÒu?å`ÄRy…?áOÂe�?âÔª§B?ãŰ•ñ?Øè'iJ@ ?à ÿFKÚr?å0JµŽFè? )õ”¸0?éCQ3AB¡?ïV¿€•äÏ?±R’Eâh?Á!EǘX?Öl³‚?Ìtw>šä?¯Ç-„ŠA ?î^¬i5øú?Õ>¿š ž?ëëÛÌ_L-?îP®×`ÿ? ž¿±X¬ð?Ñ"ô‰ög´?êK 6?è6ë¸*5¡?®±|Ûð?Õ]Óo¢|?ê2ó“—À?åL¡¨¦¡J?ç¥�Ê(ë ?ÊiJ(¬t?Ê–�ÄÔ|?¡f0j"€?çKî#?à[ š û?ìnIìÐ\?íBXõœåÊ?оË'º2ö?Á󦮹?ïx ¢q?¯µaNä ?À™Ä*÷‚@?íZ@dß‘?ãgþYé*¼?à§ øfŠ?ÈÆ\߈òä?Æ&hï‘Qä?Ðç«óñ¡V?ÆÍçFÜ?ã`›ç3-t?ÙîRnhÏú?ã ¿JÊ�?îžÉ8Äg?æàIs~‘?ë»vT'?ã­KSLT?ë©2üÉî?ï^>c?�¼æÞªç@?Ð ýÄÉÒ?ê�,–ÒÕâ?ï]ê³m ?ïó½[¼Ä?ä\�üŠœ?Ĺ�3–H?â÷æ…|Bí?»¹]öWX?­ÂXð?å YŽîÉO?Úcf‰y_?îi�<8Ì?·Æë�æ˜?ɤٳ(—´?ÔÎ"ˆ”×?ävñ�—?ßÓ ÜÆ.Ð?ÅËÜ¿à?ïäUý?Ìò¥‘mð?åΦ ´z?£ÛqÇhÎ0?ïºg´­?ÎÜg@cd¸?îÑëÄæÈÈ?»™îQ B0?¦-)48sð?ÒNV¯4†?¹È œH¥`?ÍKÕTI›ˆ?Æäa"aʨ?ÙTÐ\- ´?¯o®4iP?ìßñ“J‰Ñ?Ð[Œª™^?¸&Òh®¸?Ü‘ÐEÜ?Õ!œx‚o€?½$fäçÐ?à——áb`ç?ÛÚ�æ×B?ÖO<äø¸?ݾÛ ¹˜?ÔwÈ™ô?évŽÁQß|?êñå‘Ë?èuB¥w'?çƒäæ‡ ö?θM.ùT?¯3 å%f@?¡»ô˜ÜØÐ?äK†‹oFV?×EŠP9ØÌ?ãÑ­E?Ô7d[jT ?æôÐÒžtY?éžR¬îGç?ÛA°+?çbNè|uw?Ô­…Å>’†?Õ­ªÛœL?ÚöJhD½ö?ï�äÄ7o?Ï"¿×�ÿ4?À`é>fJä?É}ó)³Mø?ìX5¸ßn?ÛòŒˆ‘Ê?Ôªc T{ö?ä/ðr=è­?àKYzÜÛW?äT^Šb!î?ÖZÑC¡Q?´Ú8p#x?ì•™u%çø?ètÂÀ·*ô?äoJa™Q?Ïí&À»ð?ÝÍ|4ÌãF?âRV1eX?ã(Îùžýe?ÇŸjÑé»0?Ée ÿ30?ȼS%Pà?ç4 D–x2?àmÇíÃÀk?ì÷ëy ?Ð'‘ÀÈk°?ÏÕ£›G$?áz÷ØØð?åGüºM�?à�ëü{9?Ã&BTRFÐ?Ûbmé{À?ÂG"˜¯?ØÂÏñí¨?ë) �œýö?é¢ìçÚì?– §áÈã ?¹]u>ð?°Z¿•ù•?â•À´!¦»?æ&ð«:?Çò×­•À€?èQŒ‚㳡?ï ²ºÈŸ±?É%>Y‡Š@?�´i™Bö ?ão“Xˆ»?Ý1ÞH$~?ãѬ*¤è|?âãQê Õ¶?ëþçêÜ?ì.|Èÿ? 3¶­àõ@?±˜ÐZ×x?ÛU³òèâ?ïAÛèá)?ëg}«Š{?±ó fÒè?ç\HzW¡‰?µ³±©R€X?Ò×eG™ì?Т[ÉU?ÑÆBÑ6-V?í6ð¶’ñ?’Ên Œµ ?åSçNB�?ÔSÖÁf?ÛÉ„±àè?릉\â ?äú½Î®›�?áWå2Ì÷?ådŠŽýÖ?ìU�í?ç.=¦ ?Þ4rZà—N?Ý5û‚÷dŽ?ØÄ‹´Ët?åü!Ƈ?Ð r’â ?ß•3é¬óv?êÒ�N¢·)?î¿Ã1NZ?Ái™‰^½ø?Û©Ð…Ž?ª×þˆ1�ð?á³Bx‰UØ?È&TÎÈü?Ä‚u (¬?�û `?åâq6ƒÓ?×â t Œ?ç{|-D?Ø>κôÃ2?Ù�J½D?ÑJ‚aÍËt?çò&S ?Â<íê-� ?çÝBÄêî?íCÎk×[ò?Ä&Ⱥ¤?ç~Lb?G?μJ*›tü?Ò4Õº�Þ?îí§ ãC?Óòb%Ái(?Èó†k?Ý‘üµ³+x?îA£XõZ?“*\ð,À?äSä.RŒI?í«Ûà êñ?ÂðàcB˜?Õ¡Øp?²Ç3Hy^à?ÒFŽ^`z?áP½j ¥¬?éËòÃMò?Ú„#§X?䯴S£¡?î¿ «¸?Þ96*™^?ÕQˆ»ºgœ?Åí?êÆV$?çòk…R:�?íï�Hø\?ï–ìddÆÕ?²£ÔqWM?àæ»¾@‰?ÝÒžÜhü?Å“Õ0}E?Ëöà'&¨”?꜋dþK?ìA*�Š©?é’þ|€Þ?ËçLœœ¤?åàTr“'?ëZþç¬@v?¦fÞÇp?Êi¡!T?ÑÉNsO ?è÷™Óf@?±G\_FÐ?çä°0uϤ?àvãV.{?íý~+At§?í^ËLW?èÁböp;?Ìh)>J¼0?èO7éÚ§?Ñi²œ?¾*?ä|Þ¬é?îk´íÎw‡?èÛH»]£?è+Vœt›?×u:^ ?âÆd‘VN?êyØ�;åi?æÒ ðü f?×ç{Œú?áµEÇ¡?ërRã„3^?Æþ¶óa8?ïÓb0M?³Ž†Ûˆ?âßqèÆ#ç?åøætÛi?؇˜hè d?ã²øË>¯?À]I^'Ѭ?ôAWo?ËzÀBh?±R8$_‚˜?ì#1½tŒÖ?æ¹7‡v�A?Ð�Ú†Â?Û.�•g€?áO|Òiï?Ðq‡ÎÝœ?â|¶.ßê?ëÿ¨dþŒõ?áŠÝFBš¶?ÛðßøZ?©˜k¬ß™ ?épEÛy`?çËòsß� ?è&oXv⛼?ÞH°j`Rü?í¨ Qj?ãž|-…W ?éj ¼˜O?Ýp©½¡ïö?ì7ô†òZ�?âú’‘JI?ëlÓµÃT?âˆRP7xC?ìœd z?èÍ:¯éPà?®¥™B-½�?×àoØ ?è%Ï)H…?è�ðê=$?åÌÐW$ô?Óm?pe°l?ØÃvÖÚ’Ø?ÇŸ’í�4?Û[¾u°Ø?æ•ן‡;ô?Ó&y^±d?컌”þ‡?ïÁ62ç?јòFò?ïVu³Õy?´©ŠyŸuH?å÷ÿËYJÉ?îŽô$&?ÖX»,e ?ƒ>¢*}ÝÀ?ízßÅT ?˜kõo�ö?àžC™ö?îõ£Ar¨?Æ‘Íëè@?ìÊýÞ‹¬?¬u û¢°?ÔÝxùVÔä?ÇÑ›í]H?éŸMU�D?ÏMŒ•}�Ô?éuÒÔª?ÛFNµ& ?æÁønArU?í§àÞ@IŒ?ÑE—ò’æ?ïiðÉ?›€¡ÌJà?ÆI8®è¸?ä—µÖ�óð?·®É !Ø ?æYa.®²?å^,¬¿x?é¶â� L±?çö4D¯à?×Ðõ=Ã?Ì YéH€ì?°?g µÐ?ÙTT?”2>Ü=�€?ànBʉ¸ð?ââO�¨=?ÑÀjÁGð¤?å,›¯'t?ÌcsUÊ ?é‰R¾å/?×8^» ªf?Óã*T€�|?è1j/]?Á� ]š?á�º±q¾Ã?Ûù@èl?æ�ÝÈ)å'?à¹Ε»?ïè“ëa�?¹³D)ßÊØ?»U[Ã&È?ßÈ1Zçã@?â1£Ù’û?éÕÑn?ÐðFÐ:_?Œw³Äµ@?é¿]RÃS"?ërªœÑZ�?ÞwbÕÜÀ?ÝbqYˆ}ò?Òì®§8?§ÆšÀGð?èò Áý‹á?Ã3Ä÷U,?ËšÁµ*pÄ?ïŽ6ƒÆX ?ërÇûCÀŸ?ìÿ 7RR,?í™òÅ1»?à)u˜ä†A?è�”fyGÀ?Úº&àžÀˆ?ë=Îð—ù¾?³Á!Ôͯ€?åǽZñ1¡?ÄÃPª‘–?çq¹{,·Ó?Å'Ÿ´M®€?ÛRPß�ÍZ?äÈÓ÷Ý«?äœdxíÿ?Ä ß£œ¬¼?íà ed?ìÊ]�Ul?Ø|ûÆ&Ô?ê—=ôŽù™?Ý„ –ó…?æÉx9|øé?±ý¸}N.¨?ᇟò\?ê–*}Rä?à ü0Ýu?× Ì¶böd?î¸ÈÄÖÏê?ë6è+é­?Φªq÷´?Ù i—4Íz?Ø€¥÷’\–?ç©‚¡¸NØ?îh›¯ÊÒ?â"pžñ€?ésûÏ£S?íÄ�¤HèÉ?ÍÎÈBi0?ëÁD@ ??ÁnòÆÑ¨?è4dPbý¾?¥Ýoñ�p?à8¿:ô�>?ÖVán_ü?ÃÞm=�øØ?ëñ†ZšŽ?Ú¾g®?Ê›„’nˆð?îÍ‚d †?Ëà!W¬ã”?Ñ{ãç_ ?ìî›”DÚÎ?å&ŠW]k?ìm„£¿?é·âÒ×4ý?×È=ä_X?Û® T„r?Ñï]YŽjä?Ô<8«ñ‚?ÍCí\=è?…€Œ;]À?ì„­z€x?ç»gò.K\?ÓötÛãNê?ïɲý¸#T?Üã¨EZô?‡¦Y‘#8À?¸âÜ>ˆ?Ñ)W•ê?à@“·C.Ç?ã\æx¬y5?é\ü$IµÀ?Üê¾³øÄ?ÝzB׉$?çȱææï.?º»¥_Ö­ð?Òª®ž(ó ?¾IÙÚÄ�¨?ãõÐ|Z½?íHa=Ø R?æLÿLžH6?�«#-øà?éoàJéº?‘V]˜§@?ÖoŒÍò?Ù6Š>QÎ?ÀxÑå6Mè?챓 t»ë?ÀØ)’ˆ¯ð?èS"ä°D?í… !IE?¾^„vé ?È�VÞ<´¼?ÒO_,?ÛdÚã )²?à »y—`?áåÕ°,‡H?×ï'vBk˜?áhî·z_w?â凂©•?Í´¥ (?ã¸8ˆmË?áו¤ór?ì}Pê4 ?Ñ5Øö°?çtÝ.©Ë?’WÝqU?é �LâÝ?íåwë,?·~ˆaè…0?è=isÐ?㉚¦î¬?ÙšÆiíPž?ÇŒ ¡ P?îKå6k|*?ê boÇe?⯠W?Ñ�£rCIØ?ë7Eó?غ«wï3?äJ�z[¸?Ȇü”Mü?ÚkZÓ¬ª?ê‰Ö¶5¹­?ÓŽ ,®¬?�hV¿Ñ{ ?ÂðOêb¸ì?ãµÅ– F?á¿B&ƪ¿?לƒ¡ùîj?ÂÑŠ—‹?³-ÈF›š˜?ÜÒñPŒ#6?Ø“Y€»ôN?êÏèUJ�Ë?ÒK#èhå2?ê·J7R×l?êê)­Øt?ìuÝP^Ç?ÃÄÅ®j”?á[{›É*?â¡ÞŒÄ?È«_Â:Là?ä¾}¤ý]?΄6ÇëP¨?îi=TÚå}?ÌÑð2ÕÚŒ?ãÕàL6 ?ÐÝ\(~*?Þîom´¨?°Ìø.0Ø?â�a7óC?ÑqA4ŒbB?ï*v¡Û`J?Ûΰ^MJ?ߊNc§ïà?îFƒíèìª?ïÿ^¾[ù]?ãø}1?“û§”9ó`?¿,Œ¦ß&€?åÃÜÂÊÝ?í#Fà®� ?Ꮍì(¨2?äºJÚ ±ä?ïóÂ?Ý"6ß衺?àJÃôË n?ÛŸq6 #?â2‘mœæ?Ü ¼â%Hz?áÆân.œ:?ʺr˜þ)h?ç{ë~˜O?Û ¡ ¨?ÅÐ^±ì?æðMçEL?é,Öa0ºW?í+a°PW?ÇöŽtÊô?ÚXÈ’C%¨?��µF¨À?Õ%H1GÜ?æÙòÚ?è¢E<‰ó½?âìÅ!–ײ?ì�  Ü|Ë?豄;ãq5?æ;šyó9?Ú/[Ðìe¼?ȈöÊ­0?Û�³ 9�D?Ü,«~vçÊ?í0­™­T?èy+(k0H?ÙúôÑÒwŠ?èj²t¸b”?å›Å­±Žè?ír/{Ï$?ÜÞáÜ”t?èäWÃ[R[?†C‰Š$"?Ì1ê&Îî4?äçN¦Ùƒñ?î’—öf?Óáäkr²ž?ï�‹Ûàý?×!‰.Þì?åñž°\é?ê3[³G48?З}Ãp?íw ‡C¸„?àá+Ôr¤?ä Iæ±íc?ë¥Ø9u–?Õ‡zÓ\MÐ?ç”옲Ê3?Â\¼ãöGl?ºëI“²?ãœQX ç?í³àxáÝA?ï¥$¯?×�R¢6Ü?å2Õó±?Ð÷N�tÞ¢?ÄwŸúe&L?Ã.½îhJL?ãÊæ:?ÉŸT Òô?ØÜªC»¸Ö?Ÿ4N¶À?¬m{,Ž`à?ÌvŸPêg„?î?ì� ÛØû¸?è“!À {?¹– }�`?ç »†²Èé?á K¾Øj?æ·ÉÀ]5?ÒÊ /x´?ß–uEè?ç˜Þ‚Fyè?ê䛸îe ?Í=¾¡žµ ?éŠ{7�?Ëë[—öÇÐ?µþ;A<Ó@?ìr‡!,Ë$?¦Ï@Ì­b@?·÷ éÃr8?Ø_yßÇá€?Ò�{¦ò¹°?í©õû5?è€�Þ](¿?ëbt�Æ"c?Ÿw†þ`?¸lq|Òy0?൸ӽ|ž?ää¬Ó—/�?Ã�Ðæ»ò?Þ 4¯ÃJ�?í„å�[§?Ì >Õ2¸?ϬÜï$ °?êAœõp ?½�»§3âH?Ûs¿0;ÿÖ?ݸ€Yø.?êÿ Õiv?í„L"oâÛ?öüÃÕTH?ãcoñ¡h,?ãõW“ w?Òýññ�uÞ?Ö¼Ìz(ˆ?¶(�-$ø?²ÅJÄ'?ÕéWÎ{s\?ã1ЄaZ£?мÁ`ÿÌ’?ìmÉá¾íÔ?ßHÂÿ@ ú?îL7çÄ8J?½o›ÀFð?ÚŠlŠÄ?Õ“¾¼~±Æ?ëÀJ¤æþ/?˜äö©Š‹€?Ú§)²Òg?Þ±�F�L?çOØÀZ?Þ�²§ eü?é” —&ÑÓ?ì+ºåvú?¹¯ªçï­`?ÑRø{™¨ð?Þjf/ú?æšÒ_ÿûö?ç¬þi;I¤?‰�ãùJc?Öˆ!]¸À?Úu悈?æ°®FÒañ?ëÆH·�Ý?Ï€÷0?ï~ú½Ø¨?æo= Â­?àgÐlP ?ÝKÏch³H?Þ&I}x?ÙÞ¨ê9?àÓ[a*â?í‚:ÀÎ?ÄåþôWÀ?æd�VðÖ¸?äì.vÞ4?ìÉFëÎ?سô³��?Ðs}àçhf?Å? £C|?Љ*²²„?ÙeIñÞ?âGŠz‹†?å®úÝ)rˆ?鯲=4ÒÕ?Ò+ž ÊÂÌ?­ðYD)`?Ö4±U{Ê?툟Þ“o?ÞËÀáu1z?ç1ÒFííÑ?ר33U@?íY¶Sa£?ë¹ÖéÕ¯I?Õ£þ5æ¢�?낎]R™Ÿ?Øû}‚‘éî?ØÔµû¤ED?ãõèß0=?ëൾ?è´Ãaåª�?á8;ä�Öæ?éçòì2ñ¸?Û ¹ð ˆ?Àjo&ýõ ?çu©…©À?æÀ `ü„ä?í¸�g´ã?¢,�m†?·º(™aQh?àl/¸J¾?ïGš\›•?ÞBa�@ØŽ?ÆwÍ£„ý8?Ôíǹî?ê¸ÀTÃ[Æ?íªX:ëœ?Ïu¿7Hˆ?Óþlj)â?q¸ ªbâ€?á[æœÕ~j?Úy‚þ ú?âº$²9?îL@ ¤;?ª4 }¢Z ?éq]ö{¶6?îÌŒGeÿ–?åñ.IÎæ°?Û€o�­ø²?ê—#oQÖ?ÊÛ 6.8?Õ“øj-n?çhîlÓÙ?ãfD¤�?îK``ß�i?éËÎLíëÂ?Ü„ ï/?ß�ÜDP²>?çde­®bá?èIü©ªA?ïœ{Uw°�?ã{‰µñy?ëh�n\Eš?Ó1ø‡qt.?ÜäÛ„xj?à —•À¬œ?Ñ™Ùi$Æ?ÚI‡üØÍ ?Åý¬g{MÔ?ŸCBǬh?ç O ’™}?Ùí‹5 Ù(?Äî±Ä?Ñë–é™à‚?Ï"‰Ã>ݨ?ç¥q�¥ü?ä:ì JßÙ?ä¹op?ʳ‹író?æV=�k’×?Åh›Ø¾\?éäBÝ„Š!?ÂܦH=áD?Ëc3¯—Øø?ÁX³àÄð?¶i<Ç6o°?áØ VwN?ÚӇ؎‡&?á”›+ô6¯?ÅÓá7K?ã`Óœ„ïN?Þ‡Þü¼?ï0Œ5Ë2?À›nçëè?ÓžGêå¹Ú?Í««ÖAD?³ ÀÅ8?³õ!TØ4 ?îe7oëUÌ?ì±µ)Vúj?ÃÎáØ›�?égÞ3ŽÄ+?èËž¹ŠÃ?ÂS"('@?æQ¾BÏù?«QKyQ°?ìÝÅ_R7?Æ– ´üù´?â�”c £Å?ÙY{mÍã‚?ß \7­ÂÀ?ÌaCuG™¼?̰e°0h?Ü€ÃÍ6E*?ØLá‹?ÛvÅ0â?ЇËq7„?Ö6Âmšµê?è}ò³º?àFfq¹È�?Ú2R¯*—à?ÒO0k ‰¶?íà5íý?Äh¡èíÆd?ÐBÎùHý\?Ð#ˆÂ\Œ¦?Ös�UÍj:?Á ˆÏ©8à?ÜòÇæ¥?ÁÒ寮T?×LþX]ò?ã}çᣣ?ÅÉ–Mèx?ïK P§Y?¯U¹ÚOp?€-Oz¢À?î0^ùâ$K?ç�Þ„ �*?çži¡Ã?ßEŸ4@?ÉñÚ†X´\?êÔu£?µ™³Ë‘Ù°?Ç·Ç*h ?ãmK¬ñY4?ào€Ÿ0h?Å öÒI\?Ât¢\ è?åõó š�?ÐŒåê•�?ÕÏTÛÁ?ãÑc&“&Î?Á³¬êCS¤?•v¿¦ ?Ø~éîj\z?ê·úƒËÁ6?ëá¿Áí¸ä?‚åâ›4üÀ?íªº¯’?¯9³/Œà?ã|ÛtŽ?ÌO¨2À?è `a?äËä)gï”?¹mÚµà`?à¢5ßfn?Õ¿«³!ª(?ã“ÚIº?é'­Ìt1Ü?îvì¤Çe?Ò˜Fü÷ Ú?Ú‚ÜK:n?í�ÒYtŸy?È‚ø›ùÀ?æÄ 1Å%?ç\�ý‘·Ì? ©Ðã¥Ð?¨W­¶Ò´?çv\è´œÂ?œþÑ4À?᧸Ñê€(?Ò» ¦K’¼?ÄB[/¼?Ê‹†xžÌ�?ê¢Pzf°?å6ãNu/?åiu´ƒŒ?äÑKû…!?À'�ð�¥”?íq­·÷¥?Ø"b‚^˜?æ&9«ãC?Ïüû>þ;ð?îšÝl_5ö?¶KpãP(?ì°Î›³?¸¸ËŠ^iX?º;y|`?îó %¼˜º?Ònï[fþ¸?Æ ‘çâ¸?êAܸø=?ãÁ{ ?áæ%‰J2H?æŠKÉ­^-?ÚK�*€<2?íøñ…µ;?¢†ÇÁü�?ì‘E[ ?ç©W#õ?¸â™R?ÛÎê/½8à?´ÇÚävÊ@?â}È¥1x?Å^"ùÔ‰À?Ì(ØSÏ©ô?¨¦Ò @?ëÎÍ»Â?åRY³ô„?ëߪWW7 ?Í&@ã®!„?ïÀ½ã‰N&?Ðo…â[t*?Ø § è?îe¿ÄÞ?é§|@¹õ?Ñ| ¿?í>׳¾?ÎÖÅß¶(?ÑMcJò˜Ž?å4Fù©`ä?ï%3Buÿñ?Ü�Röë|?Ü PGi,Ø?á(kS}$?Ô ÿcY¤?ÝÅ;DåB?é›þ+uËô?ë¶Xæhj8?Æg�Öª ?ÊõÊ$Û" ?¯ôÓUð?ëor>SP?àh~åÛˆÄ?×AV»˜næ?ã}+朜»?Ô�ٿ܉È?…šÕC¬k€?íí9ÐõJ•?ãm%{ Ÿ?Þe jn) ?­évaÊ®à?Ö w¦+žx?ë�œ=º¿Í?èyJ°Ð!?ís¡\ç?ã¥&¹\„U?Ú‰Å÷æ?îæ'l,?áœpÆõ6Â?Ô¨äiŽ?ﮩ8[Ò?è�*�œ4î?íÍø&ÅJ?â¿ZµætW?ìdÑ5ú”?ßàdÑœÁ?ÝmÂJ ö,?Û4ËÈ̶¨?ÓÏ}«é�Š?â¼�¤¹ZÒ?·I{ɨ�p?‘hŒÜ¡�?ì2òùh ˆ?îCÈ?ðv�?È €™X(?ë-�w~t*?ìÜ-[ÿ?Æ#LSs|?ï…-œ9?¹ŽK§$nx?Ù-�‘MŽ?kž|\.?ít_ÓH¶õ?SÊ[š¶¦?ìæ~ß?Ä4"¡«„?ìÿ L-ªÉ?ãèfìAÿµ?æ)LêÙO?àÚm3)—0?ÞDGÒ¼J ?à�ãÕêKÌ?ßuÁ&[14?çš´¿Ó=5?×éx.Ø?àòª¼$!Š?íð¦oIN8?Ä"è¹Çð?ëîô­ê‘Û?Ýø5³ 68?ß„¡líò4?Ù‡c’ßwÎ?ëñ,2èÝ(?á7ÎÉ×™?êÿ@ï.›V?ã³½¶u8×?â8—èíéT?ë”g$ï)?ìÏ&b‡³Æ?äz•?¯aw?ˬ˜ë‚7¤?ã»Ã.s€?àc šsA½?åÙ! Óy?ÎU8m<ÿ4?Ù luù“*?æ2ìä œ?ºcÚ*ø~?ã‚�wzqu?ÁÀƒrÆÆ$?ç>`o{ú?åæâ¢ò3Ô?Üi_–à@f?Ô`8€&H8?ëMœ—ó?ãª÷©wx?Œá¦Ó-À?¹²$94_?ÞÕÑMÒ‹x?Ë]ŽYLM¬?à „‚Š?ä{qÜØ´?íw’´•1?ê!b°Þa_?Û“\LØ ?ì ?jÒ-?âØæÃ±,?èÌKÊÎø?ɰ[âžËX?în¶Þ4òI?âA[$FîØ?×ß 5S‰x?ÌŠX�*Œô?®cÐò! ?³3ïU� ?Ú¡¤;é?æø‡>…íú?ɱ�{ªRl?¶C¡|aìè?ÕvÑp æ?ËñÍ“ü?ì@†âOçg?º_ÌCÞÑØ?¹O¡×õ`H?ÜeÅ.Bqä?ºƒK¼ÛÙ˜?¸ ¹<›zØ?ÏægÕz‹Ð?ë'Ã_º^´?Ì  ¢öÒø?à $Hu?ê6÷fTa}?Þ>åÌ a&ø?ï*8s1?àî$ïOãÿ?îÝÉfN•?î$uhíÒ?Ü&ow\c~?ÛèžhšJ?êë;œ6L?çZTçt!ë?ãŠwõ 8?µ f_¡?¼ê[™?äsù›ÇÜþ?ÌCž÷”?®ÛØÑ/þ`?Ü”p…Kì?çó*Ð?ìšcW?àýe ©}}?ÍJW#áÃ$?ÔÙ0‹—¼j?ØÇßtäoH?Í£óÒ"Ùø?Ø}à ¼KL?ÆSh²G®8?ÝbÚ£0‘P?ìY-¼^§]?âfÚ¿æ?عnËWÈ?äÍ BÔF?ä¹ý:ãËí?Òì8 0ˆ?ïfžü?à)½$:Ÿí?Úœ dý¾?å\Fbò¹”?É£K°§ã˜?êZž$8Ó?ÌÌ@4L;4?Ø@óåƒÁî?æGøÑñœ?ïiß…fì ?Ã\½ ã>|?èE;/g?íÉú0�£5?ÆÆXîqãà?Èоî%žÁ(j?芠Qßð?؃TÈœÓ?ì÷…Šu›ï?µ9X¯xr?äuß™÷)??êêÍ7‹”?åMÄ"²)b?ë1æ;ït?¡:ù’ Ò?å+œÃ~?å�‘òûi?ï7ls‰l?ì!³�ÅÁ?µUõÚs`?Æ~Ï}WXX?¾QJp…3à?àÉÁ$œ×?Þëû½Z?ä¶©Ô˜Cæ?¨—.ÏVP?Ó±ñîÌ?á–7Sû˜�?¢.¥é?â�Ìqèš‹?À¤ÿ¿¬ ?p²öýø?Þ‡×Z'ÑÚ?ÒˆHCÞ« ?î1“Ì ?ê˜"ÓLX?àÔU7æP>?è.å›â‡?›2$µCÀ?϶ÜÑ‹òä?ÑžÐ;p?ìÎ�/?胥³þ`Ö?âÙ ôùh”?ê¿ÃçPTå?Ý0$ ?Ð?¶T£ˆ0?Ðë„põª?ݿ޼8?âªxÉ)vü?æ/L0ÝV?ê á{Ê?áé:›¶A?ÓtÖùiñ4?娨RÇy?Õ,D>±9Š?ÉfSú¥œ?Õ àÄ^®?˰}lψ?ß·“)åaê?âVvàž?¿ÊñEÊ?åê”7¸K‰?é—A¿#f‚?ÙÚ½>Ø?íèe?çø¦±Oñ?ÚǪc ¨?æ5òám˜?å„9`…•?á²ô€¨Œò?µùnаÇ?åÎK›Ç?Áw�³Ðrø?ç#½Ñèé?îSWÝp±´?›D¸.ƒ?ï§•µä9?X¨ ‘9x?Àh¼Y[E´?Ìj†� Î?´€bÚ|ËX?Öm+Tòpp?ïÒj`šË-?åT®~²?Ðx=õœ?ØÓîÓçº@?ï |N᪵? < !¥0?ß ²PÙ¾X?Å¥”-,¹p?ÝdSNCÈ?éüaà àh?Ú¢D1& t?±ýY ÒÐ?Ñ3'Â#m°?Ç�J­A\?Û#¬Ç ¤?Æ7±þÍ `?Õ›yÃÏ\¦?ÆZcìt©d?²g4ÇaX?ÒÏÏÔ…~?âÇÓ)Îa?î_œKì^“?Ô)Û<ÎÁ8?à%—�t)?Ô~8ä(?ãÅ*W•¹ú?Öfæ­h?ê¤Â"¯?ëµØ}#÷?ã7¶m ¸�?ÔOµþ$ì2?êÙé»(HD?Þj ˆÁÉ?í᩺å­t?Úå%#Ì„œ?Ë·- ?ÉŠßé¿¿d?àÈ6À.‰?à‡—KÔª,?â‘ ³.0?¾,8{)?ÈÓ ËML˜?·™³å*È?莢9Rc?ï¤I!ë?×0Úíês?Å{Û¢mš€?åã†Ìû°ê?ÈÕÈŠQk?èøÔwž~ ?Æl4lt;\?ê R'Õã?ìÔ<–¤G?âaä$4NO?¿7J�h?ÞD0úÔp?èÎãØgrÂ?ë"dA¡žj?Éèw•Ôt?èÊjŠ,*?Óä%Á•¥P8$?âÜ-¸ê÷?Ó/ˆàpD?êq‹‚?׸0ûiœ?ÂyÖƒÓúœ?ƶFu¨P?Ó¾\ÔÞì?ÊÂ8U½¤4?ëGgatô?×ì~æox,?ÒŸ¼õb?íÔ‹$²?Ð7ÎŒrT?Ý� aº?Ê-µ°ñLÈ?Ï}Ì8ñ ð?î TE‘mH?â¼,Ô쇧?æC»÷ìùU?°ê�#] ?Æž»Ï³Z°?Û°9Œ‰‚ð?⋟e3�?ä?DZãJ?ËþpHÜ ?ÁæKÞ”?ãÆÌÿ“ª³?à[ˆ ìÒ?Ö- ‚‰I@?Ë,RxZÜ?âÔõp0?시;e?áÙ?ts†?Ì0¬?Üï é�•ì?ÞaLÑc:?Ì­°:�Ü?ÐÄÂ�»fÒ?ÄÖÁ2 l?ï¬`+Ó?㈹¹ œ`?åîm¬¥¨Š?äSl•{ ?¨(S "N ?ÜJo“†B�?æõ\“?ëF‰` ßZ?ʶ�Ù2À?ï?V8ö–î?Çþ—õv?çü ¬¶?ì¯f9Û‡?äZ콄·?Öƒ«ÕtÞè?ì/e”µ'?é{ /ià?Û,_ (Z?ì)ܽ¼Òå?ÊÍÃ;5”?ÒÖ¦·«hž?è„C©Ô@ê?æ2ípk.?а^2RBÂ?ëÔE‚ñé?én^(‚¨?ãý6â×qE?ÐÊÿßKe†?Ó�îÙSž¤?²~ó„ef@?䜠ÛR(œ?íÜ[ЬÃÁ?êë¾ÿç)?Ðîµ_{f?ÑÀ¼a›Ê0?è�…ÐþqD?Ü:ë~B(ô?ê>ö0k­ˆ?³Áª�ÀÀ?à/gï?Â$/Ó«ç¼?ëJ"sØ; ?êÒ·Ñ/ÔÝ?¦?—T³c€?쥟cAƒß?îDŠ…´á?ìÿ¤Ó-»u?ÞG7qF?èôO{¹{š?ì?ïj´úË?ìÇ j�?ân&,’>9?î0¸yNPŠ?è�{Vù±o?Ü‹ó»Œ�n?à–nj¹ßÀ?á!mA—z?Ìw*+p?á ‘(0Æó?ՒÔEjæ?çÂs¾bX?Òn±­*JŒ?»ÌJ2‡ð?â^…bÊl?ïqYW¿ ñ?¦7µŸ×Õ@?ÊÍpFŒ5¨?¯÷¶«Üð?ÔßÀˆ ,?ãlË Óà?î¬Ü_Ã(ó?ãP—Ð.@&?¹œæL²¾¨?ÔÍzß;ª?Á²ù9ªL�?ëõhÇ…b6?È4¼·äB ?äE¢_ß?çŽØvÎ%?Îܺ-. ?Ѽº¿$ò?äBgP¦?z ¨VÆ€?ɦg7Ù¬ ?¸ºk³‚vP?çNØh…§¥?Ä„#CîÁÜ?Ò¦ÃØBØF?çWçfOé?Ú­a¤ù¾?çyÈñÞ?ß$þAÞÒ?ÍDÕõŠê@?Í™¡…2c,?èëoÖi k?×Q-ò]Ô?´y±§z£˜?ïÕ/¢ž¨?ÐËî,w¬?ï­Š.ª@I?Þ`»ÿר?Èl¸"Z ?éå‘á®Ð?é>F< Ë?½ù™ì²0?íývë(p?é†ò`!B?âvðªÖå?áöa²&¥?è×%\eå ?í{Øœ›£?—õ�é±bÀ?ãL,@Ë<ó?àiÇÕ�2‘?ê‹krZƒ‚?Ù‰ò€’?Þ?á¤,Á<}ë?í0_ .âL?â£ï| Çè?îbBãX?çÔwcc?ãnÙÓ,'?àÀ*ÝÆó?ç~/˃î?í‰gË×O?¾Ý€@¼P?éá·› úó?ËÛ[Ð9H?Õ}l>Rð?ã&.§P M?ë‡o7²Ð1?Ö52œÁ�?ÓæFÉh?åŽÕ!|ÛÜ?¾½f¿s& ?áfhñ ¾>?ç4ÙFA5n?±J�¼ Á0?ézA·6?¥?âIé¨Ç¥°?è|©[!V¶?Ès¤ÐÝt?æµh­k¥=?Ý-¹=øµ†?æ¬*syj?ɸ.ûlÈ?ÖÏÞXÇ�À?æPôu8?îªóé?ÊÍ/ÝcPd?èC¢,}H?Ê8óÀ7áÜ?ì7qx =œ?ÙTð¶{ª`?ëõj9Ñ?â|c$�ú�?š£z"ù ?eö<™¼–?ÙÒ±ê¨0 ?èÓœ+¶¼Ñ?Þ‘à P4?L1¢?îó­zr�?ä1°¥>=Û?ÕÛF8¯~?Ç‚ëè˜?ãÒÇ-%Q¯?⦱mï?Îì>-wô?éhFØ1~Ñ?ÓGŒ¿•~?àL8%µ@=?á̱£…«$?èé+=8U„?½-rSÀ ?â4>²6ú?îºÐ¡?‚B?Û�Ôluâ?éõã8C3?è :Ủ?éÖéå¿R?Ô± ¤0,?ÌõÙØpNÀ?ÔÀÕb®A†?ã騑>âÑ?ï�÷øY�e?ç}A ^LŸ?îÐ^èM?ë¨ tä‹?äH‹MK¨?êqJÓ÷?ÑíÀÞj²@?æØô ]Çê?á¾6·Zh?è’Ð×�Z?Û'UÇízx?éѯø}Ó?ïX(�È?™ô\ï \?ÒÆ–;}#À?Ø7Aòà?Ðàú lýÞ?ÔàΙLÅÊ?ÁÙãL!²ˆ?×eŒˆÿ9Ò?ÞŸi’Mˆ¦?ï¿«¥�Üg?çȘÛÈt?ÕêÞ2{Hˆ?Ćv9iÚœ?¹|U«øè?é±±VažH?�´NuF9?ÀÛä1ñ€?äqãYɧ?Ü jÏC.?Ò“W› Ò?çÏ”ßdŒ®?¸k�е¹È?ä¿“+Íj‚?Öa)¶t16?ï”t|®?Þ$9TÌ—?é2ý…€œ.?èúL\ ,-?â³2%4Þp?é¶8JTì?îjσNè?éÊMÀLJM?î21%ÊmÀ?át9ÕÇ3>?é‚òâ¤u?ß-ù¾Kô?à"j,˜º?è?ºÔ5Æ?Êd¥dg!ì?Õ+züÄ2˜?ÚV7~í"?Ðè ôÕv?°h›Dñ�?ïµ–›Ã¬?¢?�õ�vð?èñ.ÊŒ†T?ÃC£é—@?×(Ôªžf?àæq Å?æÌ‡Ò y?Ðî ò’�?ÒDDjÛÃ?¤�ñd;i ?ç1kÜÍ›f?�>1—û€?ÝÒ(Òn6X?ÔÀ4g :?š@’µ?ëU:øCµ?°` †�ˆ?à4¸¶ª$¼?ÓZk$ÀD?éÈÐ}àI?ài^Vˆd?ãÀênâÀ?Ô¨|­%å´?æå”áäLÃ?À�ëå}ü?à‡íBõïh?îØ›l‹3?ç  ZD?à;áá•VÑ?îÍ XzÈ?· À}¦H8?ßø´ƒgÚ?£)è­ùP?è:�çæH?è³Й³\?ÛaÃA¨^?ån´? ’¬?Õ!y&Þ?Ñ 7OñÅ|?ãIÁ¥ÔÌ?¸ºpûRÚà?Ù²Ig'f?Ú/ûpþ?ÒpOI·Ø?éƒn©�cÏ?¼XsHÚu?Ù¶HZhQ*?ÔapÌSZì?ãÕ8S²ß*?ŠŸ“ÂÝT?畵'œº‚?é%õ%Š6?é–U¬gK?ÊÔóå”�¼?ä:”óÊŽr?ë•MK€Xº?èg¾–™É?æŽòn>ûš?È�VîRX?ë§p©'£?á ~ÇÔþ_?èÁ¢ˆ~l–?âe0±Ê ?Ë>*³IÅ ?ÑmP€aØ?èQ†)£?ì.¿O$-?å·PA(?ãa?é}ŽÿRÆ?¤R•…ú4€?êåª Aúý?î V„¦—[?ê_1M­¿?Þ],ðØ :?ì¥S/K?œ�–6{¸À?àUØÏÌ’0?Àÿ¸´´à?Úó _"d?í·�{eyÚ?ì_Ë‚?æ¤/è 7U?îé<¦z:?Öwm¾e¬?“G.§²ÃÀ?ê\Ã÷•­@?íÉnAMZÓ?ãÓ¿›5?d;íõiC?è|í¨QB?âÝ&2ªr)?æ?©‘R9H?è;›aÎŽŽ?͵‹- s,?¥þß;ÚÖ°?Ák;ñxMt? vYrÕP?ÒÉ\µ,gê?Õ®˜§Ã`?ì;ýãaë…?ëkDasD?ê8I£ÒHŒ?ëñ2O¸?×#«6å4–?¼÷}f�Mè?ïhÍ-^ñF?îk«¨´†©?Ó»#â÷žÈ?·@êHf€?ÛÁ~>‡?äãWüT ?çu_ÁÙb?ÔcD_­P?ÒÚÃs>ê?å±X³ð„ ?éDp®ÅA?Ög1.§³Ð?ãxÁ 9Ž?ãá.ðHÔ?îØ½•sÁb?è]5"Qvû?èªxmI—?ÍñP¯ñפ?ÕïSñr¸?Ⱦ¬¯á÷?Þ³(ð1Ѥ?ïH±~ׯ?åõ³Ã¨4Î?Å'uƒ×C¨?¸¤ìz”x?îYLUàò?ݶ ·Ô?è+]@!pz?Ò¶;ùnûR?éö.4rL?îürQÍÓ?ï—‡X†+?í`$ŒBœ?ÃÙ¥O„Òd?Õ�¥w¥žÆ?»Ù¾@:=è?¬»­yàà?Îöìcƒ,?º`”!†P?±¡/˜@i0?æ¶ûA¥Ú ?ÛIâ>÷s>?ê¥ 2út¤?Ûíä_r¨F?ä£mg·Z?Ý‚<éñ?é0”U�Ç?Ò? ËfÄŠ?ìRpï ÿ?åNÊçÅO?äKTð;œ¼?Í÷Þ�¾,?≀ ¯?ïm©%�TÅ?îŽv*e~m?ïãÕ-Òõ?ã ïÚj?áø[2™?¯‘-’{@?Ú%}l¶4š?Л³‹)?×¹`&j ?ç³�?:P‘?¸›¶Fç�H?Èìe´†¼?èËy+?Ûð?Î9±[� Ð?à»Ï“ì²ù?Ò°÷Ñb?éW~dÙþÉ?æjˆõh9?ç›–Fx­ö?ÝT}.å\â?Ý}ªIH~?ÐàÑ©£›D?¶þ›f•¢P?â�|·Ì+?ç�\}5d-?ÜÕ¡|`=Š?Ê0Ü–þfä?ÐDÄË} Ò?à«•ƒ?à¶$•®•a?íÏʰ$Òp?ìÒŒ×?ë6aK¼XU?«¡Ýüý.?¼¥Ÿcàh?ëÝá[!{?΃w;q„?ï²�òÙÏ?à�ö™Ó2?ËëVkѾÐ?ÕwQ­Æ?ƯùWØ?áïµV¯¡Ê?êl1®Ìš¡?Éu—œk”?éÆU9wœ?Â.9âé·d?Ø]$9æ¾?íÖmèë,ù?䊖{HÕ~?á:â¾ÀÀ›?â‚…CÔôë?çèùÖŠV™?È ¿ŒnÜ?ÝûŽBѱT×?´ñŸÄKb ?ÐËyrÁÌ?é|~®Ì?å™çíO2?ã#ñû’i…?â{Aêò+$?éçèse=H?½:m*Šbø?íª{ÉC�û?ãpm½¸†?Ù�4KÙÐÖ?Ò«±ŠM­?ê Ð2B²?Éè” @?é‰�äL?ácEtd?ãúEðé{ ?áüu‹ÅÙ?­¬ 3‚ ?êñ˵+%?×ó1;ßZ?éžþ¡»m??äˆh³Ó‡$?äGæ�³”?äF¸I1¥?æq4âA¹Q?åœ+f¶�?„ZšÀ?á«ÔêjŸ×?¯‰�“ÝYà?Èôï…0?×oÒwIÓ?ÐÐ۲ܴ?ì“"6ž½—?ã\á˜Àδ?�êÎ…?Ô (ä2*?Þ;]ÃAÏ?Óê{Õf(þ?ОèD;©n?ã^±°òg¸?Úºô‡žÎ?≥¼cx?�4`GÛà?éRÞžH?ÎÏ*Ü�X?Í@æt,?Ó¹µ7 ¬?å™m9(Àg?ß( «=€0?²Õ]âF8?í±+³›î¯?µ*ÄW:r¸?¨�]YÅÐ?æi×ï�`=?Ú÷ð—& ?Ôµ…—'{z?áÑžÓkNé?ÛŸÿhðÂ?Òúˆ€¥„?›NVñâÀ?ä°¬‚2?ìN N€´{?èÆôHeß?ß’Ïaúª?ï9<'#3?í¤áœP¯?ÔxCx °?å%zϬ�Ð?í(o|smë?àš.¶›®À?ë:z¯ñ�&?ÎM„üîp?ëo¼Pg“ ?Ð`¢š[°?Òù–t�Š?ÔV'jžš?è~�ó»?ç•‹xÛæ‚?ÖõKÏoÌ6?ÕF]‡3Ü?Á€J�à˜?Ûq´‰^t?ç¢2q1¬?Õ›FTáü?Óõ}ß‹Z|?ŽØ7‚+€?ç3~橃n?ç§ óf` ?Ï" �_¸?Ö/B–Ê5*?àF̆Rƒ?ÞYõTäÊ?ì³z–}{?ãªÅ0N?ãähèÇ×?ØLe¦�œ?Ò0ùà^}v?çiõkFYã?Äyô¢\ý@?ëÁ—´¹<î?ëÄY­ ?àªl*¶9?£‡s½�°?©·©ŽlžÀ?È?)ºWà¬?ãVeÁj-.?ãR ?¢?Ö¥ í †¶?Ó¥’@ÐRú?Äÿj÷.?ÄA.ÿ/Ò”?î�b@<½‚?n9O[=€?º¿‚s ™¸?¾à�ÚåÀ?ÙÐ/´Ød?Éäv-óv|?Äö±¢ÉN”?½íê±@@?ìÔô&[dC?è$KgaQ?âÓ ¹æ39?æäÙÊ?ÆÖéC-ï€?î©V£^þ?ïé0L“�?ÞF°öëDT?Ô_äÇaò?äÚ�£ùކ?ȃMèõИ?ÚSuüHï0?çP.ð…lG?·~ø#?È®Ù�ÿ´?° MéDz¸?ÖAG‰Z?ÞzFÃßü?àlI¯>ªj?ß9Èyº?ën¸2Luq?éj‹Îí²?®¯ð$+M`?î^:—ïå3?ËÂ%3rH˜?è+ŸePÆ„?ãþ”R4bÀ?ÆÄÖÏÚ°?ØãImF?æKü9 ¸?äeÚÊœ�?áŒ�kµ–ì?áa�ú >?ãhôÐ’{?×®+ßðÜ?ľ‚féÙ ?åeõ³öϲ?¼ìS. ?ãï{eÖ“?Ñ”•…ªÈ?±øLü!Kˆ?ìuðÕ:?ßý ÐØ?ë|0ËRÿ?¶uwj8?Ø,à;E°(?àר~-;?éCÿëKf?뢗Ӿ¶÷?ã8àËso?ç>t}e+??Ñ]>.üQ?Ó…æz\?ïùGƒ?¤+¬ýT9Ð?ÄG¡?°n tã`?á“qµ¿´q?èN¤Âøma?Úòd�¨?Æ›_xï¼$?Õ¯+.ÏŒ6?Ë”*J=t?Û8)ËЪ?Ò yóòþ?ÆÓjã䉔?æ¶yr<ýÂ?áÃ;¬”O?ç;~gÐE„?Ô9œn± *?âä¨tÇkú?çg—mþR?f‡f¯¿>?ëÑí#¶WL?ïüæEœb÷?ÌU~zÆàà?ÂÕ¥Q’,?Ò½‚�¨‘š?î;Mî°ru?åì± ‚Ÿ”?ذ¥U§Z?ç Œ�èÏT?Ð%õý»ãÒ?ÆŠyëç<Œ?ÐnSÖo’?Ü" /1,À?™ëòR`?¼nû€|5à?ÔÌéÛ‰{–?ê'(¿^)?ï®”´ÌžÑ?ìÕðøXÿ?陪»¼?éõ`*ñ»?äDƒ}#¶?á±À‹Î]»?àÈOÁ6¬?ç…V· Hû?d  ŒEY?×£E:7¶?åŒ;àrïj?î„çš™…!?ç”ú-Éóp?ç9÷÷ ?â>ëoóó?ç8P·Ç…ì?Á¹¬åÊSH?Úv©è�0?ã¾J2±Ô?è€9΋W³?§XØKš?à ˆI?×q×Ö]þ€?ìœ ãt¸=?Ç¿°6gô?|uÕ¬M�?ìq„Mö[©?é,²7;?íx?vmš?à=~tpb?âäôtx?ª6$%µE@?æ–˦™+w?ê@Ð=>i‰?ì�—õ‰ÒÃ?ëQ«ˆ ð±?Û_ÿ-XÀà?âÍàˆÁ›0?çQ7 (NÑ?ÕÓßLû÷?O[ïE¢4?ëç¼?íêkróØÕ?ਸÍQÚC?£Ÿrp¨À?ïy‰…3o‰?ÐÚ�êÓ$?׳Žjª›´?ÒÃæ7FÄ~?Î( àŽ¤?Ëž»ºÃJ4?ëXíðxI#?¿V¤�» à?é:wœ:e6?Ùñ¯­ÃAª?Ç¢ý´ì?âI—8Hç?Þ‘¯&Qˆ~?¿Z5öˆ^Ð?å(T¿k²?æñõ)3ð?ê†rÝ<4?î¶i^ø?ïÄé˜?æ)®2ŠŽÔ?Æ'"kí€?Ý…Qùî2B?ã÷î­•*!?ã•i^æþµ?äì©Õ*=÷?à¸-†‡›;?ÇOÀà*£ì?îÅ9ëƵ?¶›Ÿ‚Kø?á=É« ?ÛT³±È?ÓKƒgÒ§ ?ètE†\?ëy9–ðJ?t€"‹?ºQ±?¥˜p?ëíóõ"†ö?îÁº<_š§?ÚøF«g~?ïµKEÔ?سw¨¬&?îAš$‘‹¿?íŠW�žŠº?èÒ,;á?ávÅQT•?éÒ•¦oØ?¸¯;~íwP?êÝß 8|?îNï¶@Ûü?é-Éã_>?ä�Q;�w?ØÒ ÖÃïü?ÕÁÈ\?÷?ï{Ü;iÞ?ãÇĽK¬°?ãJù^Ñ?ï‰*V”3?àIá¸L?ÆQÂx ô?äÀ÷ýÆÿ?çð®»´­?ìÆ?�ÅL?ꪇ“Ì{?Çi+RCðP?ï&Eë1¹G?ÌÏ롹€8?ì¤gú’±?ÅÒ…öé=˜?ïm�*w£ ?äBënñsÊ?ìAó´€?ë!ÓáÈ3‘?íxÊBêN?ÐüÅ»¿d?ѯY{Tëz?«òû¦È&°?Ç$È—?ãä�åY§?½Uô./˜?Ä‘2PŽ?Ýûsûþ:€?Ô: (ST”?·ªfÅ÷0?ïÛä ô&?Ã�ØæÒ(?º>gg³°?î´e*5:6?ßz$Ì�?ÎNkÊt?Ýpª:RÞ?²ÑÔʽ›Ø?é†k$õ;B?ÞÉÇ t˜?ÚÁ¢%À>œ?åEš‹ „¬?Áù¬ÖË ?îÅhnDês?ÝD’ýu÷„?íjÚ"~§W?èÒ¾iˆ<©?埦@Ž …?íQ|_?ÊÃ?ÍA³² l?×ÇÝ ö?ï1ÖéÆ]?îmËŸ?ÉÌkÍ>?âB?éJ�FÚñÑ?Él‡²DÌ?Ô^×2Gì?Йöõí\P?ë—é‘/=¾?ÊÒÖ¨©"p?ëÌ’Bö…?áF7P„Ó?‚ú^oó?ëmpª1 ø?—ôœ²›À?í=ÈSó¯?ææçg Í?ßµi.Î?Ú�]Aì ?¶ŸÃçß)È?á2�d�H?ÍØä¼Mþh?îèoñð?àå-”»v?àÄ/Ú4A?ÉP¿—. ?šwaË©% ?åÖÖôÁõ>?ãØI§“ƒG?ÐZŠ¡æ?Ñ�áôYB(?áã��Ùe)?ßMë‘ –Ê?ؼ�R™›Ì?ѯÃh‹ÚØ?ѽ‰.IR?Ðv:M|~?ÑÎ+L©#r?æËG2ø“?ïQ'¤¡?ï©i€h›¸?Ü?Z‡-Û”?îðMɧ.?äôÚ°ë?çÑ]ÐH?ØmJãÞ’8?Ý×\øGü?캵öÿ?Å¡†«üãè?¶�ÅkFÔ°?é·}MWßj?ÌŠ™A÷àœ?áu²u*|A?ã¹£ª/µ?ÀIßZp­Œ?Ûzf%ƒ,?åL ²®µÝ?á!¿ª¢0?ÙH|YÚSÊ?™ª´2$Ðà?á@îøÚк?áËzÿÔ}?ŠÛ�4H?ïla­¹»?ÁCñ!Îä?Î0¡Á*l?çyÌÖç Ç?Âáa—¾Ô?¾¦ç­éBH?ëzN²¤0?±ÒHŸ¾À?× w?mQ`?ÁW tte�?؈¬ ;™?à_¬ ïØ?äÔLÇ“l?í;U]‘�+?å ö кU?íûiNÑÛ?Àì¸^ëWT?Åà¾Ôk?Ó³a†R?ãZ29Ò‹¡?¶É·Ó\¿h?ßRÿ…6Ì?ì#‚|Û_°?æ÷A¹µÌA?ç¾nÝ1¾«?² 4Ëk ?çË4+Få?ì; òûµ?…$c2¿À?ïZï–ñU?¯_¯ÓÀ«P?³Ä—öå?ãÅŠZÜE–?éd£�Ñ›1?СžRz°?äHGÈÅä?Ëel¯N´?Ã8õêFD?åJËý•&ñ?äéÅkËÙ?阜çÞö?Ç‹!à?Òâ9Z—gâ?ä9?�šÅÃ?æ K±.�g?çdï&žY?Ú¦Ï~8·Z?¾Ÿ³ïÒ°?áblzq“?Òµ¦À´?¡S’ ?Û¨c0 ‡ö?æèß}Üs°?�4í\‡ ?ë?GªäM�?½\[gZÈ?Õ[Ȉà&h?À2Юμ?à%X×%å?äҳɻ?ÐáÕ"V?âÃóJãá?èçû’åð¼?äTÿ$šÎ?Ï HùˆL¤?æÚP“š?핵Lä¥?âkËS€3?廿îÄr?äIÖ¿Ä?ºuWI6µ¨?ÜÌ„T;j?àsoOå8!?â‹ýN±x?ã4ƒba5®?à·0Æ�ES?Ø·áòôÆ?�ÎÈ+Ç@?Îî¤9ÌQœ?Þ%oƒ£s8?ÔöVK�²‚?ëPä°€¬š?Ò� ­D Î?â�c[=f ?ëÈ–íèþ²?à}Á z1º?ÒÛ�‰cÁâ?èƒêŸÎm?ìyVó CÝ?ÞZv»éŠØ?ÏÚAÈ¡`?ëhG>ëÀ‰?år8f ß?î„9«Ð?×Óeé$Ö,?ïp�e#À`?æ�e«'Æ?Ü ×ïJ$?Ô7a&é¸?àý6�™?×b[é›QÎ?×Â3š˜?Ðï, ©›¶?ȱÀèo?¥¬ìËœ�?²¹–G*bÐ?ÀU{²�Ä?î‰á.7K?Ð��Ê3ÆT?ÙDh‹{µp?ìÕÈ1Äß-?ïð]2>í¬?‡t˜Ü÷È?Ý�éx?ÏË Y ?êµr´'èr?ÙÉO�¹ìp?ä—í +…?‹eàÓkB€?Þvº2Py¤?Òþ×- ?¸À4ðü(?»©ìŸ»Í ?Ï„Lû ?ßÖç“Â?Õ²ÀŒq¢$?îòŠ@¸?”?ÞP}îòž>?ätçvÔß�?Õ8oǦ¦?ËӳȩÌ?ä‹ÁaÆÖ?åÆfÌ€7ø?äœ�âœ?åjªDÓí?ÐéÝ÷ö‘˜?ì#ÄM)à?Ìø„û!7„?æÈ7ûÎ%?ëÊ 0Ã(Á?ç3ò�³?áZ*‹ —?Ö+ˆ»ïêp?ׄ22UI?à«¶$ˆX¯?¿;-^u¢°?ï«1ö3pt?Ç2.,�t?°$ ÂVH?ÑW{0½b?ÍtŽð`?Õ7sr ¤ú?é9¿3?ˆ?é%qhëzÌ?ìâ[âó¡?êÒYQ£V#?à[‚*×JH?í*Ú1 ÈJ?±¹ºùþà?í-qÕ­õ?î÷9?é“_“è?± ?qŠ€?ïya¾k3°?ì=w˜hÓa?ÛV FSú?è�9�S#?à~_;N_?â‹æÅ— »?éñ*9+I¾?à ´Ø›�?ÔøŽÂ/�&?ÝhL 0?ºü$…`—0?ï.”�eS‰?ê9¿õ¦ã?ׯçݼëB?âm•@£ÕÖ?ãšx­GÚ¡?Ò|ž}@ª°?ÀwžbtÙì?èYäS^±?ºBìÚÇ&P?ÍL÷9+)?ç�4ºÈ'?ž/ƒqE?Ò¼¾lÓir?çd‡“sF¶?ëµß*r_ò?îèKY7W?ßj†.¶Âì?Øê2lÀ`À?å_í¸ï÷�?닞“Cä™?Òü€Vì&R?² ¥-è?á B” b?ܲ7 W ?í¥SFØÛÊ?ÛÝ¡ÅWž@?ÐU_:7è¼?Ú¨4�{sÂ?ÃðJâê„?ÛA™ ÕGì?³–B­„K8?ÌH1Þ à?á§é5« ²?çâ]^e,?±wÁüˆbP?ìû6‘hw?Ít�NH;´?™Š²-¡¾à?Ïċœð?ßgMè}?îŸÓÊ®jt?Ô§Ý#ƒŠ?ÒÆÞ\~È?¿ßW°?ê>ÕâÈ'?² ÓÙæ™ ?ïÐ\3Ôk?硘}?ÙvÔ‚þÅ™¸‰€?ÕkÍf-˜?ïv”v*Ñ?Ù¼®ö|B&?ãÍ’|¯¿?ìs7åV­?ï‰Ï´Ã6´?ïfŒ}ˆá?Ñß~?ßøšž%ˆ?àwð¸´\?ã¹ÒJzL¼?è«ö¢á×x?Ðõö�%ò$?ËX G?ÓÝb2Aˆˆ?Òù‰�7L?î¡¢PœÊ?Ø uÏžº?è“*Ò1û?Ø©`Jr?Õÿ¨Å2Z?Òµu9ts?› dÐ~  ?èJLÒþN?阂ÑJžY?äiƒ£N?ÕJÀ5á+H?Úç®U÷÷2?ÎF×;‰?ÓØJv ‚‚?àL ˜I§ð?̶¯_㈈?²—Ûtª¨?â çR;‹›?ë@ãeÜ?ëHL�Š'‡?Ö¾oÑXžd?ØR�Â�YW–b?ÊÝ+g?t?× ³FIVä?äÛê“#"Ž?çæM¡2Ùí?łͷÇD?êíp/V£?áõªèë|?çΡ |?ã«$¡J�?îž#Äå±¹?Õ“FaÏ’0?àŸšŠlY?À»€ï,µŒ?Ó8whpt?ª·8Cu€?é™B  ”?äû6á?oÈ?б³V¯ãv?ïñ€h5¨s?æ’:[º ?Çâv¸á'0?ÃÉíßxÔL?í�ž §û?ãÂÑŠ½o½?ÙJzý6?ÐU ÇMÙø?ìn2J �ˆ?¼Hêø?Ü9Oð/CŽ?áÿ£¨¿J·?¿Åç—i¨?·%‚ï`x?Ôcí¹E0N?îË84=Uˆ?ë×¶<áí~?�±¾æžºà?ØÙ¿%^?ê5¿§²òô€?è‘'#‚»þ?à¢Ý¦‹êÂ?ãk?Z’ù?çø‘!�V?¼SV*>p¸?ìÇl=®f?Ð@¢2 ê?Õå,¨éx?ä,hù =?Ñ)lštæP?ëÕå å³ž?çPYá>„(?Ò# =µØ?êA P}?âuÆGGÓ?Ó�TØç:?à.�ºS£(?à±—#øÓo?ÌX§Üjh?€÷�ž/À?ÓÕÑðZJ?êoŸ~tÏ?ÒÏeѦÒ?è¶M5û™?î­ –s?ã:ºñÛ³?ï¿ÑÅä± ?ۃخ43t?âä“Üâ^�?ÑÞ?Ù.·º?ã7L‘Z-?ìh78®€?ç𗍾’?ÂÚ'·¥üt?¢ðùÚ;XP?ì@7ëb)?Î… ¨”hŒ?î{ ¤1&?ï¿2’O8¶?ÐBâf)?Ô²äÁ‡¾?ÞÐkYohÜ?ЄBPë ?ëCzãtY?âñ“_UV@?é>}háà?´b×ÖB°?æ 0R†?Õ•‹.4?Í-|÷¤{ü?Ú£Vºl@?é=;MR�z?£ô[¶SP?áUùvýÞ?Ðz®’íB?íe‡}Ñ?ã‚/·oM?ä±`Q?°Q £¼Ø?íœç+aÃÇ?åø ê@+f?Á¡KÈ'¢Ì?æYÇÅ&�?ï·±¡·Å?à¸òw–ŒE?Ï}ÿ ø?Ó㺩Ohl? SV·?î0!\E?Åt_Ôø`?í£éÎÁ‡?ä¯úËᨒ?¶sû¦ä¨?áëÀH ý?áÁR@uj?Ó(ænT{?ë» Šê–?å?äVŒõË›?â\ –ʸ?ÖHLp ò?â„ 6É+?Òh“Ôd?íhgùwüç?ÀJËTmx?íðA¢Ôç®?áüt’ÄÎF?ã�*û²?íÑ—7eVx?äèÛÕL¤?Ç^rÀ?ê¼?¾|w­R?Ê8o+´ª˜?ï¸qA »Î?á‡$†}a?]ûJ‡xê?ÞËn.à,’?ç¬Á«mt?éŒ[]殕?Ôµ‹H?ͤKdKdè?Õ§Ò�¬2R?ªï¼VV?é(TLã÷?âYåÕÂøÌ?çš)R°2?Ô—tR?ê›w³J?Ü“ùtè@Ö?ÔQ™¢?ÀÄ-NF¨?ȾgØódH?èå?SÃ?åMk²¿ª?áтǭ?îª÷MÀc?ÑÛ±r¿J?ê #JM8c?ã®øà\B?Áw…ZH/?è¹P¦?îqÎ==&V?̼&[Çñ?ë Ü5|¸?êâQ¢}?§_¯¥Ü­@?ÓÊ_Ðƺ?Üãg#Xwò?ßSF×µËB?ÇÇøq¸4?±Q,Í^éH?½ Má8 ?ëa£8Éâ8?ë™j|Ÿ9?تW¶­ç2?¯ ,¥A˜À?èƒQ.gðž?äE䦀Ð?åb@‘�;}?ç­ÛŒÍ6?ëßÿg!ÜÌ?Â!Ç©øà?êCŠV³?‚Ķ ?ß»î#MǺ?Û äðpØR?ëC0>QO?Â!U³r�?æ�� S�?åtÚ²>›–?r³'ã0x?æ†qúÒèþ?£?ÓzÄ ?åP3ÙÒP-?Çü!á'Äh?ÿ²� 8?è)—WSè‘?͈q(9?á)&\0?ãWUÀw?æ;­ î Â?áz¿�](Ï?ßÒUjªr?À s;$?¡5 Ç�?ëg&i1÷?²½Ÿø ?×rÕIª?éë56aZÅ?¹ZGPÝð?ÕT‡.Y¯\?Ô^/á—zœ?Òàï.%úð?à�쉉 ë?æ(ßXÏFð?äå�jÇ&y?Ãõ°&®¼?Ê  ôÈÈ?šfÇ<«N ?ïÙGØà‚Y?ã2±@©L?ì½R;C%ª?§K~']í�?åb¹fò”¨?¾õTP‚X?åNäˆä º?пU“MØ?ØFé<ÿÞ?í‚VêÛå?ég]ûŽ‚?î= #Û++?ã9•¦‰þ?Ë忼 ”?çϲö¤7#?Ä¿ +ŒD?æn6÷=·,?î00?fù?Ù�x6tÌ?í>9»>¡í?Ô£@²½J?×ò«ñÅð?ìþ,|ÇY?ºÞpŽ�?î}5¥v?ë+z9ï8ˆ?ÜXCnI½¶?‘þƒkî?Ò ­¿ ?º’¤7È?íÏ›þß-¢?ß]…u‹ô?ìNnR·®´?ÖS†¾É„?èÑ]%;(?ê$_D‘Ð?¸%x:j‰H?ìg’0úÍÌ?àUW­½ž?èh¦©%Šˆ?Ä,0lA¨¸?·k“OkiÐ?ïdî%½?Ì7�Š�³,?é‹áàK?é¹�p!é¤?ÞLŒ Ùn?éŠáo±Ð?× ~h¿6?ë—˜2‰Îj?å.W/ k?ÕÙUí™à?ï@*AÖÔC?áßÇÒÞžf?ÂúƒF¦æ|?ì?ò‚Ç)›?è‰G�M?ÞR˜>Þ~*?î�íjð#?§êeñ�?ä};Y{t?¢êãU£XÀ?À T<^x?ãˆáû1ª?å?-xúb€?¹YqŒø?åä­>?æ2%ƒÆr?áÈíÉ^í?È¢Á¦»7Ô?ÂdÇ]?µìÆÈ3P?ÛžCcÁuÞ?Ñx”P?бt´T€?éÊQ×d?ë¾_4øiK?à¦[N/g›?èhv‡s\?ìjÎŽ\û‘?å�¬“‡…ò?ßší|U?ß †à‡6¤?Þkó¿Z?ÝÊ€Œde?ÒÃò (>?¼�Î(•è?æœÒ¹UЇ?ä„åEKSj?ÌN@—ª(?ÁWÈôý:˜?åªW¿4Èá?î')á;”Z?êÝ==0û?î$ºKOÕM?âD—qUƒç?ÜÓ+ñ#Ü ?äig}×g?Ó¿S·ß˜À?ÕËÿQLx?¡`\fZ?ì$^vhK ?Â¥Ž²–?ÑÇLm"h?ìÚ@a²‡?èæ±Ë\0?Ô瀬J?×I™fm_?í Ms¯æ?Ó¶û÷’¤(?Ö÷ ËsZ¶?£)kAWî�?à�·ç‡‰x?²†JÖÿfØ?ä@�zDÄ�?éÎŒÙ|Á?ë}‹ÔH U?á î\Á'q?åT#8z_w?ÊJ#í=¥?›F–ruÈ€?Ùèê?냚?À _(V,?ãIoÇï3L?ì†Î.p2?Ñeÿ4¶?ÂCÈj¥#œ?ëE5•ãúþ?ä À™BÅ?ë,>P÷ùž?ï ø¦æŒð?ÐÒ’•Ô?£‘#ú=ðp?â¡£º+u?à¥J'ÿÈ€?Ü´ü¿"¸:?i?¶àø¶à?ãù÷ÆK?Ó„rrøO6?Ü1¹Ì%?ÜŠF9˜î?á=óÜ¡ó?Þ¡’nó°?eAdÑ™v?ÕïV@hú?á—¤:™•?Ù®—8¹•$?æy•PIÎÁ?j9a¨?Ú®æ3?vf?Öžokµµ¾?ã¦�•ÞEî?Ëãzý(äP?ÈWÉŸ{g?ç Ù—RO?âî0á÷?ì—””ªß?áœl1:óÏ?´»œ˜ùz?áÅŽ¹Æ€+?áz:+rp@?ë¹Y2-?Í¿QbN!(?æÛe?é•ù`7«v?é¶GUq%?æ¥Aî?ïçö¦^8!?èñõJw¯?à²îG­?Ö­ãd b?씉ææ¨?êPL'¥Üð?貇l1m$?ãÈœÉh¾?àjàK˜?ߘ€Ã¡ÄŒ?Ð{Å!–ú?Ó g×ôX.?á,ïåü³?è|\ý«?ìânF -½?—.7¢ž?©QÈ�ü€?æÀ[¾ Š?æXo' ë?×.ªZ?ì`×�Ë_?ïgH;Ý—ü?á íÌÔ?àx¾ $5¿?è¾ïÁ2/˜?Ç 6Z2:?ØšÜ*E)Ž?´ÖÂç"a0?ÔZ�ìiâD?ä×A̳½?çÀWȲH³?æñ–áì„Ù?â�è`âѰ?ÕU+ü°rð?Ù[Ù¡h2€?ã¶ÓšŽÏë?ÆÅ›�f ø?êÕ¶Ûk“?êø6Apá?çJ8\º?Ñ(M*v66?åç'ˆ:þß?ÇüË”x>ô?Û%÷›1D¸?Öç,Úïà`?͹‡Æ‡å\?áP›¾Ÿ†‡?äþ]˜ÚÄ?ÍáÞŒÚW¸?Ôírô?Ö(7'E‚Þ?À]ùY}X?ºÊ¬©Ðæ8?à«7Úd�o?àzæ2O?êr³wàI—?½kãÀɰ?íñ Ñr[?é´ÙMö{?¿ÉŒ¡N` ?ÂjÒxŽÄ?ä\¢~´4Í?Ü\\E…i?ä�ˆtÉ,’?Ô�fC@ç\?ã­ ]Ò‘è?Æé*rN³¤?Ú~mD×Ê?⺳•�'?æ¤eº$‘v?Ù � \?êÆûbÝ5ª?ì—ô}ŽÎ8?áÁ²­R?\?Ô9bš¢?å:�¼”6Ç?ÕVrÑ 0?îË•ü¦@i?Ýžà5$Á¬?Á�Ä5µ?êM¬àq®“?ß™¾Ã{wX?¶&n6†� ?ØÞa0.J?ï¾>B¨ü‹?ã¿ ?îç�\-ô?ÞQ�~ Þ?â%ì,ý?à(ð2Â?ÝoÂoiÔ¼?Æý ±O^8?Åê·~5ü?î Eêz ?á*Îzíñ¬?æÎ+8^t?Ð ¿óÖò?ïpX”¤?ÐÊ™)ç–?¢œ0ûLJ?Øõ¼scÖô?Þº¼ªZ?ã–ÓÙÿ?èoT¦–µ?Þ |ï|*F?é$0?Ñ6Ù�{´?æ&bº¤?ëÐìî/?ìÏO1�?Í )Ǩ?¨ÿÕшŽ@?Ýzo²©Š‚?×¥eÓ»Çf?Ô Y×”©6?ë5f4Ä×?ŽðììLÚ@?¾™&Б9?¿<�·íOè?àr—ƒR3?Û cµ ¾@?ìØàçëÂ.?°Ëo[öÈ?ï"ÔÛù;?¼›´‹'†ð?áXÛ<o,?ØÁ $Áž?ºçðG�À?íKÌß&��?âÚ{3ý£?ãµgDásç?è|ú h„‘?æ°@ùÃÂŒ?«®ßž ó ?×ÿ$Žwx0?êÐO¹He�?Ý® ÞpªÄ?àMý’ Œ?°ç#|x˜?¶­ŽAą̈?ÎÍi[©ä?Úqd‚,?È×Á'NET?Ì�rÎkè?“‰&ùä4à?¶V­MRMh?æ¯ûòQ>þ?ÕûÚœKŽ?׉ô-wúj?íÂÊfú¬0?ëÜæ gÛ?ÁÙ;3dØD?Þ}Üë^u¾?ë·Îõ —ô?ã �ÕÚÔ§?°Àg6]?Ò…}°�è?î/ê�‡?ÔšˆûœÛÚ?ì³RŒäöÌ?u ¬ÃÉì€?ëõ¼•b?àvè­›?¾NØï‡¸?W@˜L?êœçãéx?æÉˆ§r!ó?½êN`™¸?ãÔp¤xÆÛ?Þ¥p•¨?Ý¦áÒ?í±ìOèR?䕨·õ=f?ê’•ø£?çP!p‚ØÕ?ìD˜²rç5?å9;=ßüM?ê ,RÝ:Ò?ïÑr8ø?Î=±fŽ´?¼ša°‹O(?í&¡Àø?çûõ¦û* ?íœBp“é?¸ºG(Ã@?íh˜oõ…ø?á³»å±+?è›3ªííú?àW“Ý÷‚ÿ?ïŸYx?¦V?çaZÑÛ6?Ù=gW‚?ÜM³ÿö?Ô®·èVÀŒ?ç©ÿxÅëQ?çw(‡­yÊ?⃚êzT?Ê�µ`4 ?åG(G±ÛE?ê´Ô¢ân?Ü %+á,?åš áä)Æ?ÓyXØìæ?¾µbÍ 0?Ño×ç.¾ò?ÛlTé°Rl?îQ_0 °?츿Xá?Ü-ÅŽDP„?螈¸ftÐ?ácè**?�A]Ðݯ€?à§Ê=4ç?Ô£·oÏ:?êKá…ˆ?ã¬ÓšãIf?¯öhš@?áñ�Ê&¯?âñ8I3÷š?Ð?Üh•æ€?ã33—X?ΜñWL?ÑR¶ØtÓ?ãK>´å?ê>H¢—ã?âñÛ¶i9·?ßmüMà?Â2jËi3è?wÀû™Ç€?ÓÏþ¿¬å6?ëêKA~\*?㬉J¹O?ž× 78À?²n£½^Ð?Þ¸^ïG”?ë¡¢•Œ:?å‡#Æ&c?æñ’Àô}?ìäï·}y$?Ý«� ²Ò¦?Ó„{5K\?ê}sf^iœ?êV‘ ÏL?ài ˜5}#?àÒ’­îM?ìÚ˜Þÿï?įï¸ÄŒ?Ñá0[eT?·_,¿èÈ?ÚB<ÌÙî¼?»gü8w¤?ÔAÁ§‚S?ÈÉž¼áû˜?èQn ¤¶=?¤æ>ý$»à?äýM²?×ÝšCö+Ö?ß5ò7¦Š?¹ùFMÀì˜?µWTÎ?å«›Äí„?àœ@'Øc/?®±ÀlÂð?íôtŸ“Ú*?â ³V‡+?ëœï¡yé?êÄí°•š?áËg¨Éjl?×À¼¢YÖ´?Å“.+Õ¥„?à�8ëQ€?îÈ6çú??Ò9Ææ?؂Š•(?ê%®�¿'Ÿ?îìzfOŽõ?Ѳ/¡ÅÌ.?äxB92¿?Êšˆ—*?Ø$l… ðÌ?Ô$Š C¥º?Ù±\kѯ‚?á Ý� �?áýIùå›?܆àRûJ?¹lêE™ðh?àQÏj’²?،֛ð?äˆÐä&A?×[Ì'> ²?Ñb0°r?æ³"¢f´?ØÁ¢Û!œH?½06×´ ?×n¦JØ…ô?Àíì}4?ÁÔK¯ßX?±gàÍÆ0?È3’eJ¬?»iEåt`?ë^†¦H¥€?µ�·H4%ð?Ó±{ñŒ·x?Ù4ðïúåª?és”§0¨?ê \u•òG?æÑP¹Oh²?ŬsÎ ?̳OÛ ª¸?ëþÞ¶»ð?ãßUó?Ë«xNN@?çÝeQ̹¶?«íææÄ ?ÏëÌ��JÀ?ųUžgt?ë—3–iŸ"?çFñº0?á��†V µ?Ä´›7GÚ,?¶!Œ0¡ÜÐ?é*̪è¸?à]S$O;?â\¶Åû)?ØC/wð¸?ê¦:œ¯Þ?ïH¶•‰p•?£Gn+en°?àteÜì6?Óˆhõ»„ ?âã5 «ü­?Ö¥y¬cv?ІÇþËÿ4?îE;ø¦×c?Ý(¬ØÍ®?æ‡ZVZœ±?î¿®íõÊš?ỽeà·"?ܪÓ>†X?Óî[¶«oÞ?ç³z?àÀÄ)ž€¾?Ç"ÏszX?°Ç¡2í)¨?Ó„G•‚â?éfá"Àï+?ß w§w”?Ñ$áÅôl�®Žn:?Í÷|ê쯤?ß§ ^êò?ÚHñ]d?ê,Lôñ(?æ´´TV,?̪Åæ†�?é k•(þo?Ñ{lO}Á&?ßÌœ/b6F?ç0º�Bå?š/„ݯQÀ?íÐ%r–#ß?ÔÐv8?çÂ¥—,?ש{\Ò„?½Õê^¥bÈ?áÀ\†©(¹?íù(þa?ÙnCLäPê?ëç(™¸S?éüÖ;Åù«?ÞLŸÂ,Lv?Å(Cü_˜?Ú¹*•Éâ?íÐÚáâ?ê�£ÄXrø?åã® ì€?ï8@þñ}?Û,2Õ6o?Ñþ›>bP®?Þì�Í“Ëp?³&g¤…1è?á‹’žØRñ?×í/OÆj?âØ¨Ü¤—¹?Ö›¶Î&Ž?êßÝW]�?ì×úÝì)9?Ûλ²nê?ËÑ'Jœ¾@?éÍ<$àš?·�›Ê+GÀ?í^ud{O?ÖN+'õn?ÛÝiL¾½&?á å*~«?è1úäoÓð?ç˜0ðx%—?ìî  P?ÆÌ„MªGŒ?îR­Mñî?é�ëÛPæ}?í–Ñ vB?Ó1¬™é±V?ã=ˆ—h?æï0û°—ì?º>í·‘­°?ßi÷Í•?é _æ�I?ÊéËX?ÞÝnÉØ?¦Ëe¢'k€?Ⴞ»º¸?ÃIà êÜ?Íï|€>Ô@?·ò³j/7°?Ð몷i„?Þ0ëw¦l:?ê¤@"-)?ëÓÌ5S(©?ÊÌ~ÿÆ7Ü?¢ÿ˜‹ïà?ï\»ùHx?³Iµçƒ_ˆ?ܦtQ.»@?ÊØ™²o¬?î´.J®¶¡?ã[xY?Éxž»?ÁH¢!h²ì?ëË^šŽ™~?×bϦo\?Æ5Ý6sñ?µ/úW½}?æZI¨mÁÀ?Ó¢½Z,6?Øo0‡ñd?嚉Ùb¬?­ºâ¤—°?ïä¥|R½á?ï¾Ì 3ô+?êÜé2~?î§ Ù�¦‚?Ûw7ëþ?Ä(F~afð?åïG5°xy?߃‚áè?âRãòF&?ä> öš!ý?Ðõò~F?Þ£OX‹«b?æÆ(dgØ?Л5_-Z?Ýž*åÉú?ÌÝ6w-�˜?É™[e]xŒ?êb¦ÉÇ^?ìæïc¨¶¦?纔\€Ó?äÚÿšÈì?ä|L†y•/?ÖŒ!;?Ùáò”θj?íµßÄ,±?íZݾ¨ô(?‡V`s:€?îäW{é"?Å�`f´ ¸?îç¯?Æ nËÆü?Ò¼•#ÆÀ~?ۚ̔c?ÔÜŒÐD?°Ý…ˆk©à?÷•N´…”?â±ÛÈÖÌ?ë¥ê5´¶?ÁÉ´†¥Ð?¢A:Fn² ?î¡Ò©7MÍ?Ç žáNí°?ÒÍ  ò2?ÖÓtûl*?àß¹f É*?´[U­s�Ø?È‚s•TP?Ù÷ï©Ð)¤?ѱ5Á†?ÂA ±áb$?ËMpu÷…X?í³•|û¥Ù?ãcàï?åܶŠü¦?Àm*sµ6,?í ˆï?Ý{ô\ Ž?í'VÖÐÐ?«o^µ§D€?á·gÌ`¹?äKy;É?ÑÁ\r5‚ˆ?íÒÁQÓ�?ã0×f¨è?ç�L®*å?²ßÀ“�rh?¬ŸYÍ…±Ð?âżUüoa?êNêw®ø?ã¡èä‘?ã¸Ñ?–ÞØz'à?Óئ¤N?­š˜ú©gà?Õ`¿ry#œ?ÇH x®ï$?ï]âü¨?äQÕ¯E q?éš[áå^C?Þ­g¶j:?Üä’Öˆ?ê„á7� ?爡©Êâª?ï*ŸHhC?á#�:¨3[?‚RlÖdP?×w³\uc´?Ã@…°ãÔ?éŒ|í(ä?à4{K V?°M‘Â.³à?å=?[ÙI?ä­YŽgí=?ê|–¾=?Ú } ²¤?ÐÃ�]ùôÒ? '±ù=N?ÉZòþ7ô?î«ã~¯>k?ÀR˜£Õeì?ïÅ¡“æ#�?èé‰Ιi?ž5Éòi`?›Ž»Gƒ¹`?æ ƒ zO?ª¥æè°‚à?éϬ$øì?ÙXöÆ“ ?Ýð&Çø?§¦:Ô�?¸ªïPß?æßÍ˧W¥?ÊÇÚ5ÇX?Ï{:Þø?åÆùä¥f ?ï$4ññã=?ÑepäS�?æÔv®ìú?ï!úóˆ=©?æÒ&áu?åÝòõOw“?îSk­ÉRø?ÂW œü?åîŸsè"=?Ù %#õ¸?{Ò@c$"€?Èÿþ²˜u”?â‘r�£8y?Çe³ ÐÅ”?Ûû°B9‡B?ÏŸÓâÌ?ïÀì ýõ?ɸqª±,Ø?Áp1¾û€ü?ì§èÚÃü¨?ïòºå×{?ækËÜ£#?Üø�V t?áB;|quZ?éËB9t?é1í¤¯Èå?çY“ÜM^0?㽦Tß(?æ_ÀŽ"Š2?Õõ›ˆ¤O ?â‘r·½ &?áF;*oë ?ï$�7ò§?à‡SÑ�Â?ãÖßð*µÑ?Ñ…÷H¥¬?ÒLòp>Æ?×Ö}È@oè?ܪK$�p¼?¢zíC€?ÓÔ”é¾?Ö;v�ì"¸?ØoÀœäðP?îÀÙ ‹ˆ?Ço,›DÞD?æêj2E·´?è�U¶ˆqÔ?å©‚óò­_?ŸžQ'µÔ?ãeÈÕß.á?г¿û{Œ?Ð)¾˜¨2?ä^ØÍªö?åvV¡#À?êDòÓÇ¥¢?ÒH�wòÚ?éuûVN(S?àH×™©Ö?åoî” "Ù?çÍË\žµ†?�jÿÌvà?Þ�4AG¾?ßâ–Àôº?ÞÚncf¯`?Ò¦ÌÉôP?Ö1p]¾3ò?èû¶ÿ€Ë?Ø®TìSÊ?ã¡Ä¨Fì…?ïý¦&$_?îæ«aÚ]?äÁYÚí ?騲Ý�<5?Š]½°d‘À?çÚ_í ƒ?Ô¸;Å"°J?¶9€"?šˆ?ྠ1À€?âz‰�óö?šA�JŽF@?Å µ4žó°?¹¦Ã®êº?ëaE¿Y«8?àf”ûsy?çS]Œô]é?á°÷ÇÒ–E?︕îh”«?à ¤=?¯úFdâZ?ï ÔÏô?½wéVØÄ˜?Ù懀.€?Û±ÛÉY¾è?ï[Raâÿ?ß"~yø?ÅU¼ dÉà?ï�n‹Hß?Þ¥¹’Ö|„?î¥ÝÖ ª¥?èdðcº"�?ëmx{y?±ÌVf@‘(?ÕœŠ þãä?Á-3ÝhL?â½¹àòò?µ%:}c?éù®×t½?È)‰ ™Ì?ÓÈøàu:?âSYȉÔ?æ‰eƉ¿?ÑQ,*÷"?鮡½è�ó?ém¡8Mú?íkÊWͤÍ?î¦â”Úõ|?늄NÀy8?å˜P4ö À?ì!y‚œ›Ã?Ê~?Þ=•¹?Ϫ?æ© &…’?¦37�” �?î¸éÈg”v?îjúb:Øý?å³å!<î?ìá†ü‹W?¤£³{¹d ?Ú…§ýåÁT?Þj�j›(?ìÓ§×ëÿ?åä±å=)?Úò\&År?ÞÌpù£l?êú’î ¦Ñ?à|ÅeI_?ã/žfk% ?æ*6Ùî™?Å¥µnÏè?Üyb¼"?Å©)aCl?Დ;ip1?·0½þþþð?ã®Fšr¦?ÇpyÀëä?ßr6«í�€?Áý;Zª”?å̆!ß?ãÚÛàaË,?—^^yÛîà?®§Ø»Ð?à>AÊ�æ?ÓßøVoKl?Ãçyž„pè?ÈÉ$Û{l?Û]ýÈH~?ÙíåŹp*?êsãiäl›?»k‘9Í(?Ü0}˜Dw?¶çÖá ?ë"|œÂf?Ö³^gÞ“ž?ÎÇÖ'Î@?ä¹[½5}?ЈöЉwä?ÛÅž]¡I€?î㎋¼~?æ‹¿J¨€?éÁ®8yÍ?ër pF²ñ?ÓO(þÐ:?ë{Ó¼SÖ?×ÙqÅ¡ ?ç¹2 CU?ìòÛÏÿ¤?à¤�º‡Ô?Ö?^$„gÀ?ë~.vä?Ó3›ÿ4š?Û÷8Óî?âÛ3È*?ç5Y“ Ó]?ÉÉ*º ?æ‚åN±Tè?ÁsŒò D?Þ–M•zÄ?äá!éX™ ?çÂESX¤`?ËwQ©p#¼?rÛž¢6€?ÁÂ5�”ú¤?ß>�ývD?Ã?Mâû5¬?ïù³9`ó?·ôQz¦iÈ?çWªûO†?¥Ñó=ð?êø»Ç†fŸ?â;~¿²?Áã¢B/1h?ÄgÀô£ ?ÑЀE,?Æ“·Dåw˜?ÝÈv�¥ð¦?æ{RëlÈ?î‘`˜H¡?äå6zœ=?ÕÊÆ(Ër?°™UFwx?ì'.Ú6ž?£¤¶Vçà?¢oê wp?܆_áÃ^.?×âd?ÝÞ‚œ?å�nš²-S?Ü|ðæÕë ?ゟcá®p?´L€‡ P?êR'6(²²?§Âa Šz?Ò™™ûÔÐ?Ðøú*C.?Ä‘ž 9 ô?¹Ð8&42€?Ы? »Á„?´”�AI1?µý;÷ÎL(?ª}©§p?ÑJ¸ÐÓ ?âr m‡ìZ?àkÈÇä?×ÎF‰s¿8?àp®¡—¾?åã1!‡~K?ãÜ: etk?Ãbn®œp?À×Z–™¸¬?ï5A¶Â§c?—=º¿òÈÀ?ÁÃpŽD?ߌAð,?홇´1É?ä=žç ?–;0<]À?ˬ˜ªL?èÏþز­?ÎD„^ XÀ?éh"j$N?ÊÈ`Ó?°Pwþ‰ð ?àš@Æ'M?Çb*‰Ž¿?áÝà!]þ?ÂÜ—;þkø?ã´L)±ŸÅ?Û¢˜›gtG?ѹ×ÎØw\?âGc©°,+?í«5®­/?àkê¤ÑÔµ?ç“ß3x—?â½»Š}?¡†Ë'ìà?Ó• q‹ïD?æô�8Ͼ+?ÑÇÞo‚ø?ârut”™?Úˆàb[¾¨?Ós€DÐ~B?â'âäŒ?Þ VÜç?†B'Îté@?º Ù]-À?ì¹e7yL?çÌ�^xd?ÇeÀti›À?î·˜™?ãüp·¯÷?éù\´BØ ?Æ4ÙÓŇ˜?Ð#£FVP?Ësôì& ?Õkß5.�?Æ#àÓô?Òè�BV% ?êØP&fß?Æ�þ–|!Ü?átO·ïr?¤õåÈâð?Öµ/SÒˆ(?éÅœ�S^­?Þ97W�ëT?Øß*òçø&?ß�NwúÊ?Ú¤(1@?äÅ~-ؤê?¬¼i•âp?êäÿ]¿mÂ?Ø„ËÏ>mÀ?ÐÃ~Ðv3ž?ÖêÇ F!r? $ƬG?Õe+¼ahâ?Ï”½ÆšÐ´?Âï[%5n ?êÆjó9‰H?†Ò•6Â@?È¿Kx™q?à˜¿pTh"?ç9æÝTŽ.?í�ÿ'Zˆ?Þö¼úâú6?ԘᨆX?çI«z¼þ?ži\óz)?ÚâÞ &ÃÖ?¬,ýo-¬@?Í�g]gÙÌ?à½TÐR¼?í(gê¡h?èµâÇ„À?æ-©Ò’_?ï5$‡?ﳄsZX?¾âÞ/óµÀ?Ô2×–¤s€?åzù„Ç?ëMuÎï|?ºÐt@)‹ˆ?åù@©@?š ö©é€?é7—¼¢G?²Nï�|À?ÛkìK˼h?ëõ͵tún?³‡Dq¥`?î ´ïÐÚÓ?äxæù´FŽ?Üÿ�Zµö¾?â'.k©@ ?îÕ,Ôj¡Ð?³©ñdæH?ç4ñwí@?ÕPgˆK|?Çõdçë„8?Çé°ÿ‹ t?äüfOíÊT?âÐÇ¨Ž �?ç«ìÑ:?è“óbX¼É?ïýàÜ“*?ï�6ÃËöq?Ø.“0f?Ñ/¯„SI*?ël^ê©tÂ?î^ÐÌ/³?í˜ì<’w?î?.ÌH<?à³·':-?Ñ{#Ð(?çl´›yä?é¹ÓÓ V¸?ã{ÄŸA—ê?íáâ´%ÁY?å½�î¡/€?Ò´1: ª?Ä —Ø,ô?ë&”­ÊÙ?ØpdÓ9®?ç¯äGŒ”?‚·Íe;ä?åOO\‰b?–ß?]á`?ÑõôŠ�· ?ܨ5wW…˜?ëãŸXnÌ?çþËÂp:%?¢'ôßñÀ?­PÃ�Œç?°ôi×?à£ó)NwÅ?Í>Ìw¼�?Ûå¿£—ÆD?îD-Šæùó?â¤KDÓ„Ù?åfO?דæO`? ?Þ`¥ž†Ø?Õ/ ð—Ú¸?í‰Úje…)?⬭aL%?Ý9ˆ«ý÷ ?æ´ã/…!°?¿±%UÆ�ø?â³fS9Ó?ßêÛ©®”v?Øf4Á¿mŠ?¼uEVh?æ7þˆ©ÌÆ?ÉoÝèFâœ?Ø]2tq¶ˆ?ʨÄ>ˆ?Ó¶Šn@D?èÆÅ9ZZ ?¡. : à?æóÀOi£?ÒvAUìx?æËH=õÁŠ?Å“§ó;zp?Éo¡Å„vT?ç˜oÚëCS?Ý›tRVU\?Þ �¨p?Ýtyȇô¨?Õ›³GsX?Ü:‘ƒüñ6?f•?Ö!ChWж?ë\–”Ï7 ?í.gb©Ýw?Ôã…ÐX¸?å;C×é‘?äc 0Ãs;?ÜDÉg«*à?à‘d9�ú?î¥eņd�?ÄYê)Ð?Úƒ÷¿æ?áèê[g?º~* P?êâ?NâÅÏ?⺳¢«¯’?ëà/h`ŽH?áR+þn=?äÔ¹ë‡Ê³?䥅T¿Ã?å~pmÈn?Ãs@rAp`?笪êŽË?ÎF%—+ˆì?åpƒoð~+?À¨êY#t€?©‚‹�€?ÜH¶´8?æ(àcèÐ"?ã™ûùÉ#?ê^ù–B¤?ÑG £s]b?èÁ4`øêê?çPxºŸâp?Ð ¤ÓɦF?i§sT�W?ì¹Zñ_"M?Õaþ×lp?ÔƒÏÁ¯Ô?á\à�Œ?Õ+Ä[¬?ÕqÔv§l?éò“wvÄÌ?ꇅ&‚¤`?îÈöÐdí‰?�U«t\@?èÕÞ›„—±?ŽeD•~ù@?Àïä®{¤?çú<ïþÁ?åá^Ê#›^?ß½Ë0rà?Ê#ÛZ´¾´?¶ž}<žQ?Âm©d(D?¹`íJ?Áˆãeô?àŒðxPÒò?³ˆ¹k˜qø?ÇÔž7«…t?ä�ÒÓ\˜Ô?åì!þ´êB?à)–i“5¶?µåâ@“0Ð?ï7ÈûU)?Ð�­�<†(?¿¢.��?Ï%&15éà?¹½§5V6`?´¦_¡`¬?Ðõëö£æJ?·^/tÙ#Ø?Í ÑÅk§˜?ã*ñpRhm?ž³Éà?ínâOy?ã…˜ ¤‘Û?ÌÆ‘øÍ ?ço–�uw0?ÒLp”QX?ï8‚Ûð1¦?ï㯡-¨Š?î*'Ëæ÷?ã·<`µ:¼?äHÆ›ýëQ?×iu¨DFÆ?éááŸd â?Úòz¶âªf?Õ93oüà?æVtX Á¨?Üã5¼ì¥‚?ê±¼H0?Ö9¡ó4ÛL?ÛŒú›�X¾?ÆÆ_Äà?éLé–&Šè?Ç]s÷K/ô?ê¯w×ê?àœmR,q?ëÒb }?ßïO¢^?ç~ãÒå»?áh4˜ŒU?®à<†ïXp?å¸L–b„?Û�ÀnPTª?ÆA©¡òÞ?Õ’jÿ‰ö¦?œ9ŠS_À?àU}£´?—ßð’X€?Õ‘Üé¹?ê"Ü /¯?ê0ÙØYî?²·ïH±âx?Òå5H%Ì?ëf’ÏüŒü?ì�1�pÝ?h%PSæ?Ø)TÊ"ä?ëÚÍ‘?Ð*Ù %þJ?¹PÎzD ?죔Œ¢+º?²a¼þdØ?í×Óõ’VØ?áRL™F)?àCÉÔµ€?í=•ú.&?íôÈÝeÜ„?îÜÖˆDn?êº IÂûç?ß|«×Ù©–?Ê1,7ÀØ?éy˜{ó'b?Ë‹”òÌÅÜ?Ò™jïk?Ü¿e« ²?éê­ªŸU?Üü¢º@$?×iU¥FZv?ï¹dè˜ô?£ªp§¼d°?ÕØ0“x´R?ç`ú4 P9?âÄêƒP¯ª?ÃgF�Êì?Ö¾#©b³š?ëê„B6‘?¾x5b¨?Þ…Rã~?ìï0Ðl'»?½þy^Ƴ?ï¸J\ÏRß?ÏÑ ú½ì?ͪë<úT?ìþ.£VÀm?Ú†_ž²¦?ég§úWŸ?à©mœÔìö?áÑ .ó3?äÍ )¯w0?㡵l€oS?êì�ã(¢F?ãµÖcq¶‹?è¹|ƒ6U?Ò˜õv›¼?ì3|Z1Œ?èÄ ÀÍ� ?éw¨y«ðb?ïá»�E.U?àì0 h™P?ÄE€FÓ_Ì?ÜÔK—ÍÎ?ÚŠ§ºxô?Ï´�0pì?ê‰ôâÂ*A?ÏäV>¶P?¨æ¨ü­0?ê퇄š %?½¬µèø0?ßpXEPÿ¾?Ùâ§9êä?Á¡½÷39,?À|‰�t$?éb ä'×?áÎ!ü½äØ?å•äJž¢?è›I nŸ&?î‰BÖêh�?ïÒqX1¢í?Áe•’•²4?�èÎ@»>€?Üɇ?׎?Õ²ïT4ž?íl»r`ë?ï €Å˜QÆ?ïŽëˆ¾^þ?Æ ¡ @|?ìÑœá#Ö=?Ä/‚spV ?ºÝ˜ž¹’Ø?è'4GÏa³?à:v͘t?ëçפ×O¡?ÅH½‘NòÔ?çðUðô?çîQ4“B?îÀEîWZ?ëx+ïß5%?ß�:û<¢?éN :ÎÚ+?Ø„¾­kîî?äÛ_ïɃ?X?éøÒ@Èz?ç{LàU3€?»%a*Ê?Ö'Ÿ{�k¸?ä ™{Ó…€?éñLuÇêD?Êz·'À?äw‘Ë]?án�ù_?äYª¤ qL?ãž •9¥?é %ü¢Óe?處i°Ð?Ø/Ü¡¯[Gš«Ð?î øŒÄ[·?î°Ïj¢ø?ãŠ;ÿ6b?Öo…œ‰dÐ?Ô€BƒoAÎ?ÔJyƒ�Ò^?ªv?å&÷@?ì”Sùgov?ãÓ{6(;°?ÝæíDœoø?íΔ·¤‘Ç?â#TwH?ÝüD\˼¢?ȉڸ;µ¤?ét§jc÷Ö?Õièqš6?æfPÜŽ”?å×(.‡^?íX{ Û?ÚäbÀ1Û?ÑÉ,ÜHeD?ÍÚyJeªÈ?èÒ¹SNø?æm?Ñ@¸¦GÈÂ?æª<@Ñó?ÜY£&�x?çŽdµ”´?í´sÐD?ê_€˜þë?×nÄwdf?ç}}˜j;«?ïÖßNÌ ?Ü@@ŽéÓÞ?ác³º†�?íXÕÝ!ìH?êæ…à¶>t?¦ÿªRø‚ ?î ÑhÙ‚ß?²7Ê@ªž ?Ü(Ù9öj? âÍ-ð?àÇõÌ÷g?á$ ì"÷?ïŒ{Ño�Î?ÍuÅ|¡§Ô?§]µŽ@?ëÉÈodŽ5?Ökߺô§º?âIn¿‰¿¸?†8 /'@?åïÃ&3gc?Öô)¸þ?³–€Êâ½€?éÝJ%ªU?à:ùI:6Ò?gcÇØA?Ó‘�¦Tn?åí/_XÂ?ÚþÑsôø?ïÁ¬Õð=²?æ=ϼPŠã?Ûá[žEÒ?Ђ9›¥Ô?ÚÁ�L;Ê?ë8j4%D5?h�b¬X?ãõ²¦X@?ê#ì«‹x³?é§òˆŸIO?äÞ¡8M] ?Êǃˆ°?âZ”žbß´?×>4e2_Ò?ÎÍeFéqì?Ñôž+‚f?—¼¼ü¨ô€?ìÖ‡+ýüŸ?Ƽîfìt?ì NeKÑ?Í.iU]iô?éÜn‚ö ?Þ\'<¬òÔ?Û¡2ñd?êÕ;`~Š?à°·4fq?ï•è¦gÝ?Þ{Mr´?Ñmb¨â×Ò?ä()’tÊ?î) š�ºS´?ÑŠ.Ðnî?çïëµÈmK?ÒxÓ‚’ê?ìÉëò‹P#?ç;c‚¾•ø?ë²È?ìòr´È?àŒP?'?î,D³P„¯?äLìÝìæ?ã+S8=?Àì‚ÄÓ¼?Ñ|ã3Õœ?»¦ЕéÈ?çY.\ÍÑ9?ß@U]"…è?âð¤+T½?äSÚCr¡?Ï“¨?à‚1¬bH?ë§F«Ø ?» æ3H?q)•jT€?ã,»øªG?©c¥Vëgð?Û°¬_s2?ëI 7³Ì­?é½�”µ??ßË)ÐRÐ?רÃ`¯ð?Ó·WÌ-ø?æA¹ö\'1?™Þä%s<?å½yE\N?¿¢D!–è?îݾ ÁÑ©?Þñ^�¢?ÒíÁ¸¬Ö?ì|õ• ?Õ©~›ì?ì˜}‰Y!Q?äÑÐió{�?í`™R>U?ÝO¤K~?æÎ4Ä×QÍ?Ã1z9b»p?íCg} –?Ü”QûHÎ?ä³IÒ-&Ç?Âø›õiÔ?îƒësM×?Á 6ÇÓP? ì„/1 ?Þ8†›e˜?Ú{3üÇÄü?Ò{b ÃoR?ã0ç–±^À?áˆ%¾Ã?âê5ö=<?Ò M_9¥p?×O©ÍÔ?Ò¢ÞOç×Â?ä ¡ˆÖÕþ?Å&¥ïMü@?årË6—Á?ØÞç¢?é |.?£?ç|k¾c¢?Ô¬±’ t?™ý=Güà?ÚÌ—ÛP}(?ß±�ö²¬P?检÷^X�?³›°phÙØ?Õà7V?â·4=éP9?Ôzª‰fVL?Ú‰¢,»NÌ?íF¥Ó<?ÔOÎë¿Áž?èBOš‘k?å'ód·b7?²£Ç´a/À?ã­J=Ç*ª?¬ÛÓ÷€?ãÝj©Þ{?ïn§ò‘?évcÿUzÎ?Á©ª‘É ?¯\èÎ�?Ü||éeŽø?áf²éÈió?êT\$Øìª?Û S"Ú ?ÜŠM/ y(?çJý#Œ³ª?Õï¥* ˆ?Õr„4ý4@?àêk¾}8�?êK¨ê5‰astropy-pyvo-f0fdda3/pyvo/dal/tests/data/scs/000077500000000000000000000000001521254414300213605ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/scs/result.xml000066400000000000000000003463251521254414300234350ustar00rootroot00000000000000 ROSAT was an orbiting x-ray observatory active in the 1990s. We provide a table of all photons observed during ROSAT's all-sky survey (RASS) as well as images of both survey and pointed observations. For ROSAT data products, see http://www.xray.mpe.mpg.de/cgi-bin/rosat/rosat-survey {'SR0': 0.5, 'DEC0': 2.0, 'RA0': 78.0} Written by DaCHS 1.0.1 SCSRenderer This resource contains data associated with the publication 2000IAUC.7432R...1V. For advice on how to cite the resource(s) that contributed to this result, see http://dc.zah.uni-heidelberg.de/tableinfo/rosat.photons A table of x-ray photons detected by ROSAT Right Ascension, equinox 2000.0 Declination, equinox 2000.0 Time the photon was detected, in Julian years. Energy of incoming photon (corrected) [keV] Total positional error, 1{sigma} arcsec Galactic longitude Galactic latitude ROSAT cluster survey exposure time Photon identifier (a combination of observation date and detector coordinates) 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 MzAwOTc4MzkwOTM=
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia/000077500000000000000000000000001521254414300213445ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia/dataset.xml000066400000000000000000000071121521254414300235140ustar00rootroot00000000000000 OK Not the access key for the data Access key for the data MIME type of the file served Size of the data in bytes Epoch at midpoint of observation Object being observed, Simbad-resolvable form Approximate center of image, RA Approximate center of image, Dec Synthetic name of the image Lower limit of the bandpass (in BandPass_Unit units) Upper limit of the bandpass (in BandPass_Unit units) The pixel scale on each image axis
This should not be the dataurl http://example.com/querydata/image.fits image/fits 153280 18885.9416782409 Test 288.95078924817 15.0322239971381 Test Observation 3.8e-07 5.2e-07 0.000403806 0.000406123
This should not be the dataurl http://example.com/querydata/image.fits image/fits 153280 Test 288.95078924817 15.0322239971381 Test Observation 3.8e-07 5.2e-07 0.000403806 0.000406123
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/000077500000000000000000000000001521254414300214265ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/capabilities-basicauth.xml000066400000000000000000000020121521254414300265350ustar00rootroot00000000000000 https://example.com/sia/capabilities https://example.com/sia/availability https://example.com/sia/auth-v2query astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/capabilities-newformat.xml000066400000000000000000000022571521254414300266070ustar00rootroot00000000000000 https://example.com/sia/capabilities https://example.com/sia/availability https://example.com/sia/v2query astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/capabilities-priv.xml000066400000000000000000000027241521254414300255640ustar00rootroot00000000000000 https://example.com/sia/capabilities https://example.com/sia/availability https://example.com/sia/auth-v2query https://example.com/sia/v2query https://example.com/sia/v2query astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/capabilities.xml000066400000000000000000000031611521254414300246020ustar00rootroot00000000000000 https://example.com/sia/capabilities https://example.com/sia/availability https://example.com/sia/v2query https://example.com/sia/auth-v2query https://example.com/sia/v2query https://example.com/sia/v2query astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sia2/dataset.xml000066400000000000000000000236761521254414300236130ustar00rootroot00000000000000 calibration level (0,1,2,3) publisher dataset identifier short name for the data colection telescope name instrument name internal dataset identifier type of product timestamp of date the data becomes publicly available RA of central coordinates DEC of central coordinates size of the region covered (~diameter of minimum bounding circle) region bounded by observation typical spatial resolution dimensions (number of pixels) along one spatial axis name of intended target dimensions (number of pixels) along the other spatial axis start time of observation (MJD) end time of observation (MJD) exposure time of observation typical temporal resolution dimensions (number of pixels) along the time axis start spectral coordinate value stop spectral coordinate value typical spectral resolution dimensions (number of pixels) along the energy axis dimensions (number of pixels) along the polarization axis UCD describing the spectral axis polarization states present in the data URL to download the data estimated size of the download UCD describing the observable axis (pixel values) format of the data file(s) primary key timestamp of last modification of the metadata
1 ivo://cadc.nrc.ca/TEST?C190508_1442_SCI/C190508_1442_SCI TEST TEST-1.6m TEST-INSTR TEST-DATASET image 2000-01-01T00:00:00.000 253.0637009871805 69.94853437563255 0.7176383627131244 polygon 252.33774699999995 70.20847500000002 253.83481099999992 70.19265699999998 253.77173199999996 69.68570399999999 252.31050299999995 69.70114700000002 2048 BYW1651+6953 2048 58612.30703703704 58612.30726851852 20.295 0.1 1 1.1699999999999998E-6 1.33E-6 1 https://example.com/datalink?runid=i4oh43a0oky3dyvp&ID=ivo%3A%2F%2Fexample.com%2FTEST%3FC190508_1442_SCI%2FC190508_1442_SCI phot.count application/x-votable+xml;content=datalink f0a8f0ad-be05-4adf-ab3d-8b13c45b79b1 2019-09-19T22:17:07.594
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sla/000077500000000000000000000000001521254414300213475ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/sla/dataset.xml000066400000000000000000000261431521254414300235240ustar00rootroot00000000000000 Splatalogue SLAP Service small description identifying the line the name of the line catalog this entry was drawn from the wavelength in the vacuum of the transition originating the line The molecular formula which may include notation of the common quantum state of the transition The molecular formula which may include notation of the common quantum state of the transition Actual chemical name of the species The type of molecular given as an integer identifier sijmu2. Einstein coefficient Lower state energy Upper state energy Lower state energy in Kelvin Upper state energy in Kelvin an integer flag indicating whether this record provides the recommended frequency for this line. The initial and final quantum number states that produces this line Known interstellar species a description of the spectral line
JPL: CH2OHCOCH2OH v29=1 65(10,55)-65( 9,56)JPL0.0026007993198247656115269.3542CH2OHCOCH2OH v29=1Dihydroxyacetone0131.249668558294-4.74809778436645442.7856446.63057178378637.066044526917642.59806942928565(10,55)-65( 9,56)0
JPL: NH2CO2CH3 v=1 9( 4, 6)- 8( 3, 6) EJPL0.00260079801795189115269.4119NH2CO2CH3 v=1Methyl Carbamate017.1236909189353-4.83754596637333130.4111134.256073708445187.631403639604193.16343131112 9( 4, 6)- 8( 3, 6) E0
JPL: NH2CO2CH3 v=1 9( 4, 6)- 8( 3, 6) EJPL0.002600797618590801115269.4296NH2CO2CH3 v=1Methyl Carbamate013.6709044372638-4.84357552571736130.4111134.256074298853187.631403639604193.163432160581 9( 4, 6)- 8( 3, 6) E0
JPL: (CH3)2CO v=0 54(33,21)-54(32,22) EEJPL0.0026007950374124845115269.544(CH3)2CO v=0Acetone15230.27724514961-3.02603304293211835.60529839.4502681148261202.242703660791207.77473767207154(33,21)-54(32,22) EE1
JPL: cis-CH2OHCHO v=1 14( 2,13)-14( 1,14)JPL0.0026007933722844356115269.6178cis-CH2OHCHO v=1Glycolaldehyde021.9273878887541-4.87033282331431231.969235.813980576529333.749727368876339.28176492197714( 2,13)-14( 1,14)0
JPL: C3H8 N/AJPL0.0026007911904735396115269.7145C3H8Propane00.635151099856094-6.7094715707246130.94892134.793903802094188.405202200504193.937244394447N/A0
JPL: C3H8 N/AJPL0.0026007911882172737115269.7146C3H8Propane00.423328037153043-6.97957609404102130.94891134.79389380543188.405187812818193.93723001156N/A0
JPL: NH2CO2CH3 v=1 23(20, 3)-24(19, 5) EJPL0.002600789356130706115269.7958NH2CO2CH3 v=1Methyl Carbamate05.01323226119246-5.72089974485859279.3062283.15118651397401.85700719681407.38905329251523(20, 3)-24(19, 5) E0
JPL: C3H8 N/AJPL0.0026007859830224104115269.9453C3H8Propane01.69346180808879-6.4646252884359130.94896134.793951500753188.405259751251193.937313021783N/A0
JPL: NH2CO2CH3 v=1 23(20, 3)-24(19, 5) EJPL0.0026007822579477637115270.1104NH2CO2CH3 v=1Methyl Carbamate05.2265567985742-5.72089656247709279.3063283.151297007897401.857151073676407.38921226771423(20, 3)-24(19, 5) E0
JPL: NH2CO2CH3 v=1 23(20, 3)-24(19, 5) EJPL0.002600781919510257115270.1254NH2CO2CH3 v=1Methyl Carbamate04.80745869862592-5.72021293919008279.3063283.151297508243401.857151073676407.38921298759623(20, 3)-24(19, 5) E0
JPL: C3H8 N/AJPL0.002600780777848383115270.176C3H8Propane01.05845801182539-6.20136303548129130.94894134.793939196077188.405230975878193.937295318201N/A0
JPL: C2H5OOCH-trans 21( 9,12)-20( 9,11)JPL0.0026007731630344477115270.5135C2H5OOCH-transEthyl formate058.6767590539827-4.6139139381576178.957782.8027104538654113.601864252006119.13394479168221( 9,12)-20( 9,11)0
JPL: C2H5OOCH-trans 21( 9,13)-20( 9,12)JPL0.0026007731630344477115270.5135C2H5OOCH-transEthyl formate058.6767590539827-4.6139139381576178.957782.8027104538654113.601864252006119.13394479168221( 9,13)-20( 9,12)0
JPL: NH2CH2CH2OH v26=1 18( 4,14)-17( 5,13)JPL0.002600759664053141115271.1118NH2CH2CH2OH v26=1Aminoethanol02.00560091486674-6.01486204317833267.4658271.310830411005384.821410750999390.35352000438218( 4,14)-17( 5,13)0
CDMS: CO v=0 1-0CDMS0.0026007576334647012115271.2018CO v=0Carbon Monoxide10.0121216495404374-7.1424633520481903.8450334130820605.53211357267721-01
JPL: CO v=0 1-0JPL0.0026007576334647012115271.2018CO v=0Carbon Monoxide10.0121216495404374-7.1424633520481903.8450334130820605.53211357267721-01
Lovas/NIST: CO v=0 1-0Lovas/NIST0.002600757628952286115271.202CO v=0Carbon Monoxide11-01
SLAIM: CO v=0 1- 0SLAIM0.002600757628952286115271.202CO v=0Carbon Monoxide10.0121242121-7.142360865160203.8450334197533405.532113582275631 1- 01
CDMS: FeCO N=14-13, J=13-12CDMS0.0026007539084712634115271.3669FeCOIron Monocarbonyl0131.500969428903-4.061336764522968.408872.253838920225398.4244375310149103.956559027197N=14-13, J=13-120
CDMS: CH3CHNH2COOH - I 29(11,18)-29( 8,21)CDMS0.002600753536198126115271.3834CH3CHNH2COOH - I&alpha;-Alanine02.70687445003096-6.2029243806737686.4611190.306149470606124.397535405638129.92965769369129(11,18)-29( 8,21)0
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/ssa/000077500000000000000000000000001521254414300213565ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/ssa/result.xml000066400000000000000000001212031521254414300234150ustar00rootroot00000000000000 DALServer proxy service for JHU spectrum services Degree of match to query parameters URL used to access dataset Content or MIME type of dataset Datamodel name and version Dataset or segment type Number of points SI factor and dimensions SI factor and dimensions SI factor and dimensions Dataset Title Dataset creator Data collection to which dataset belongs Creator's ID for the dataset Data processing/creation date Version of dataset IVOA Dataset ID Instrument name Band as in RSM Coverage.Spectral Original source of the data Dataset creation type Dataset publisher Publisher's ID for the dataset ID Restrictions on data access Target RA and Dec Target name Object class of observed target Target redshift Target variability amplitude (typical) Spatial coordinate frame name Equinox Timescale Spatial Position Aperture angular size Query Metadata Access Metadata Estimated dataset size General Dataset Metadata Dataset Identification Metadata Curation Metadata Target Metadata Coordinate System Metadata Spatial Axis Characterization
1.0http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261170552832application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115923.80+005905.16 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611705528322000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261170552832SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261170552832PUBLIC179.849160 0.984768SDSS J115923.80+005905.16GALAXY0.4519410FK52000TAI179.849160 0.984768
1.0http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443407863906304application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115923.80+005905.16 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434078639063042001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443407863906304SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443407863906304PUBLIC179.849160 0.984768SDSS J115923.80+005905.16GALAXY0.4517070FK52000TAI179.849160 0.984768
0.2182701723871967http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261472542720application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115955.84+010937.46 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614725427202000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261472542720SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261472542720PUBLIC179.982660 1.160404SDSS J115955.84+010937.46GALAXY0.07839570FK52000TAI179.982660 1.160404
0.2182701723871967http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408233005056application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115955.84+010937.46 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082330050562001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408233005056SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408233005056PUBLIC179.982660 1.160404SDSS J115955.84+010937.46GALAXY0.07828230FK52000TAI179.982660 1.160404
0.2152962973906383http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261447376896application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120029.86+005857.51 SKYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614473768962000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261447376896SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261447376896PUBLIC180.124420 0.982641SDSS J120029.86+005857.51SKY-99990FK52000TAI180.124420 0.982641
0.2152962973906383http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408224616448application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120029.86+005857.51 SKYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082246164482001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408224616448SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408224616448PUBLIC180.124420 0.982641SDSS J120029.86+005857.51SKY-99990FK52000TAI180.124420 0.982641
8.695981252317388E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408262365184application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120008.29+010848.68 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082623651842001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408262365184SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408262365184PUBLIC180.034560 1.146855SDSS J120008.29+010848.68GALAXY3.19604E-050FK52000TAI180.034560 1.146855
8.695981252317388E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261464154112application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120008.29+010848.68 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614641541122000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261464154112SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261464154112PUBLIC180.034560 1.146855SDSS J120008.29+010848.68GALAXY3.05799E-050FK52000TAI180.034560 1.146855
8.497366575010945E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408249782272application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115943.32+010204.53 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082497822722001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408249782272SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408249782272PUBLIC179.930500 1.034592SDSS J115943.32+010204.53GALAXY0.1740460FK52000TAI179.930500 1.034592
8.497366575010945E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261510291456application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115943.32+010204.53 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422615102914562000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261510291456SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261510291456PUBLIC179.930500 1.034592SDSS J115943.32+010204.53GALAXY0.1740790FK52000TAI179.930500 1.034592
4.841872020928674E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408237199360application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120020.57+010207.33 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082371993602001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408237199360SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408237199360PUBLIC180.085720 1.035371SDSS J120020.57+010207.33GALAXY0.1985670FK52000TAI180.085720 1.035371
4.841872020928674E-7http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261455765504application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120020.57+010207.33 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614557655042000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261455765504SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261455765504PUBLIC180.085720 1.035371SDSS J120020.57+010207.33GALAXY0.1986180FK52000TAI180.085720 1.035371
2.7872930478268343E-9http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261468348416application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115938.50+005726.95 QSOsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614683484162000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261468348416SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261468348416PUBLIC179.910430 0.957486SDSS J115938.50+005726.95QSO-0.0002556920FK52000TAI179.910430 0.957486
2.7872930478268343E-9http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408270753792application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115938.50+005726.95 QSOsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082707537922001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408270753792SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408270753792PUBLIC179.910430 0.957486SDSS J115938.50+005726.95QSO-0.000136880FK52000TAI179.910430 0.957486
2.367640751371186E-9http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261459959808application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115949.74+010446.07 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614599598082000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261459959808SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261459959808PUBLIC179.957260 1.079465SDSS J115949.74+010446.07GALAXY0.2004570FK52000TAI179.957260 1.079465
2.367640751371186E-9http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408207839232application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115949.74+010446.07 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082078392322001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408207839232SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408207839232PUBLIC179.957260 1.079465SDSS J115949.74+010446.07GALAXY0.2003520FK52000TAI179.957260 1.079465
6.785416172617944E-12http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261162164224application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115904.60+005656.94 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611621642242000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261162164224SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261162164224PUBLIC179.769180 0.949151SDSS J115904.60+005656.94GALAXY0.3960870FK52000TAI179.769180 0.949151
6.785416172617944E-12http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443407893266432application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115904.60+005656.94 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434078932664322001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443407893266432SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443407893266432PUBLIC179.769180 0.949151SDSS J115904.60+005656.94GALAXY0.396050FK52000TAI179.769180 0.949151
2.341439286296514E-14http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261501902848application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115944.85+005628.47 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422615019028482000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261501902848SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261501902848PUBLIC179.936880 0.941241SDSS J115944.85+005628.47GALAXY0.1009130FK52000TAI179.936880 0.941241
2.341439286296514E-14http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408212033536application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115944.85+005628.47 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082120335362001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408212033536SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408212033536PUBLIC179.936880 0.941241SDSS J115944.85+005628.47GALAXY0.1008910FK52000TAI179.936880 0.941241
4.041185654538269E-15http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261187330048application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115928.97+005619.92 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611873300482000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261187330048SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261187330048PUBLIC179.870720 0.938866SDSS J115928.97+005619.92GALAXY0.1638470FK52000TAI179.870720 0.938866
4.041185654538269E-15http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443407914237952application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115928.97+005619.92 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434079142379522001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443407914237952SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443407914237952PUBLIC179.870720 0.938866SDSS J115928.97+005619.92GALAXY0.163890FK52000TAI179.870720 0.938866
8.581980694287659E-16http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408279142400application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115944.81+011207.06 QSOsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082791424002001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408279142400SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408279142400PUBLIC179.936720 1.201961SDSS J115944.81+011207.06QSO2.000140FK52000TAI179.936720 1.201961
8.581980694287659E-16http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261480931328application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115944.81+011207.06 QSOsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614809313282000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261480931328SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261480931328PUBLIC179.936720 1.201961SDSS J115944.81+011207.06QSO1.030260FK52000TAI179.936720 1.201961
2.0502337296517507E-17http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408258170880application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120044.06+005553.57 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082581708802001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408258170880SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408258170880PUBLIC180.183580 0.931548SDSS J120044.06+005553.57GALAXY0.1255930FK52000TAI180.183580 0.931548
2.0502337296517507E-17http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261506097152application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120044.06+005553.57 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422615060971522000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261506097152SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261506097152PUBLIC180.183580 0.931548SDSS J120044.06+005553.57GALAXY0.125550FK52000TAI180.183580 0.931548
1.4806720665249466E-20http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261489319936application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120034.98+005517.51 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614893199362000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261489319936SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261489319936PUBLIC180.145770 0.921530SDSS J120034.98+005517.51GALAXY0.08604780FK52000TAI180.145770 0.921530
1.4806720665249466E-20http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408216227840application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120034.98+005517.51 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082162278402001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408216227840SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408216227840PUBLIC180.145770 0.921530SDSS J120034.98+005517.51GALAXY0.08602110FK52000TAI180.145770 0.921530
1.6300048361147802E-21http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261174747136application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115922.31+010453.49 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611747471362000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261174747136SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261174747136PUBLIC179.842950 1.081526SDSS J115922.31+010453.49GALAXY0.1035140FK52000TAI179.842950 1.081526
1.6300048361147802E-21http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443407901655040application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115922.31+010453.49 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434079016550402001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443407901655040SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443407901655040PUBLIC179.842950 1.081526SDSS J115922.31+010453.49GALAXY0.1035230FK52000TAI179.842950 1.081526
1.33654114566609E-22http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380725178694238208application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120020.40+004752.35 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#807251786942382082001-03-31 05:48:15Z6.2.5ivo://sdss/dr6/spec/2_5/#80725178694238208SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80725178694238208PUBLIC180.084990 0.797876SDSS J120020.40+004752.35GALAXY0.139860FK52000TAI180.084990 0.797876
1.0976232720625123E-25http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261485125632application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120022.76+004741.46 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422614851256322000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261485125632SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261485125632PUBLIC180.094830 0.794849SDSS J120022.76+004741.46GALAXY0.1398420FK52000TAI180.094830 0.794849
1.0976232720625123E-25http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443408220422144application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J120022.76+004741.46 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434082204221442001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443408220422144SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443408220422144PUBLIC180.094830 0.794849SDSS J120022.76+004741.46GALAXY0.1397970FK52000TAI180.094830 0.794849
8.441184510333563E-42http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380443407868100608application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115918.12+005113.61 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804434078681006082001-01-21 11:23:50Z6.2.5ivo://sdss/dr6/spec/2_5/#80443407868100608SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80443407868100608PUBLIC179.825520 0.853781SDSS J115918.12+005113.61GALAXY0.07704420FK52000TAI179.825520 0.853781
8.441184510333563E-42http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261136998400application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115918.12+005113.61 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611369984002000-04-29 03:22:00Z6.2.5ivo://sdss/dr6/spec/2_5/#80442261136998400SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261136998400PUBLIC179.825520 0.853781SDSS J115918.12+005113.61GALAXY0.07709410FK52000TAI179.825520 0.853781
8.441184510333563E-42http://vaosa-vm1.aoc.nrao.edu/ivoa-dal/JhuSsapServlet?REQUEST=getData&FORMAT=votable&PubDID=ivo%3A%2F%2Fjhu%2Fsdss%2Fdr6%2Fspec%2F2.5%2380442261136998400application/x-votable+xmlSPECTRUM-1.0SPECTRUM4000sA10**(-17) erg s**(-1) cm**(-2) A**(-1)SDSS J115918.12+005113.61 GALAXYsdssSDSS DR6ivo://sdss/dr6/spec/2_5/#804422611369984006.2.5ivo://sdss/dr6/spec/2_5/#80442261136998400SDSS 2.5-M SPEC2 v4_5OPTICALSURVEYARCHIVALELTE VOivo://jhu/sdss/dr6/spec/2.5#80442261136998400PUBLIC179.825520 0.853781SDSS J115918.12+005113.61GALAXY0.07709410FK52000TAI179.825520 0.853781
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/000077500000000000000000000000001521254414300213545ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/capabilities.xml000066400000000000000000000273251521254414300245400ustar00rootroot00000000000000 http://dc.zah.uni-heidelberg.de/__system__/tap/run/availability http://dc.zah.uni-heidelberg.de/__system__/tap/run/capabilities http://dc.zah.uni-heidelberg.de/__system__/tap/run/tableMetadata http://dc.zah.uni-heidelberg.de/tap Registry 1.1 Registry 1.0 Obscore-1.1 GloTS 1.0 ADQL 2.0 ADQL 2.0
gavo_simbadpoint(identifier TEXT) -> POINT
gavo_simbadpoint queries simbad for an identifier and returns the corresponding point. Note that identifier can only be a literal, i.e., as simple string rather than a column name. This is because our database cannot query simbad, and we probably wouldn't want to fire off millions of simbad queries anyway; use simbad's own TAP service for this kind of applications.
gavo_match(pattern TEXT, string TEXT) -> INTEGER
gavo_match returns 1 if the POSIX regular expression pattern matches anything in string, 0 otherwise.
ivo_healpix_center(hpxOrder INTEGER, hpxIndex BIGINT) -> POINT
returns a POINT corresponding to the center of the healpix with the given index at the given order.
ivo_string_agg(expression TEXT, delimiter TEXT) -> TEXT
An aggregate function returning all values of expression within a GROUP contcatenated with delimiter
gavo_to_jd(d TIMESTAMP) -> DOUBLE PRECISION
The function converts a postgres timestamp to julian date. This is naive; no corrections for timezones, let alone time scales or the like are done; you can thus not expect this to be good to second-precision unless you are careful in the construction of the timestamp.
ivo_interval_overlapsivo_interval_overlaps(l1 NUMERIC, h1 NUMERIC, l2 NUMERIC, h2 NUMERIC) -> INTEGER
The function returns 1 if the interval [l1...h1] overlaps with the interval [l2...h2]. For the purposes of this function, the case l1=h2 or l2=h1 is treated as overlap. The function returns 0 for non-overlapping intervals.
ivo_healpix_index(order INTEGER, ra DOUBLE PRECISION, dec DOUBLE PRECISION) -> BIGINT
Returns the index of the (nest) healpix with order containing the spherical point (ra, dec). An alternative, 2-argument form ivo_healpix_index(order INTEGER, p POINT) -> BIGINT is also available.
ivo_hashlist_has(hashlist TEXT, item TEXT) -> INTEGER
The function takes two strings; the first is a list of words not containing the hash sign (#), concatenated by hash signs, the second is a word not containing the hash sign. It returns 1 if, compared case-insensitively, the second argument is in the list of words coded in the first argument. The behaviour in case the the second argument contains a hash sign is unspecified.
gavo_to_mjd(d TIMESTAMP) -> DOUBLE PRECISION
The function converts a postgres timestamp to modified julian date. This is naive; no corrections for timezones, let alone time scales or the like are done; you can thus not expect this to be good to second-precision unless you are careful in the construction of the timestamp.
ivo_nocasematch(value TEXT, pattern TEXT) -> INTEGER
ivo_nocasematch returns 1 if pattern matches value, 0 otherwise. pattern is defined as for the SQL LIKE operator, but the match is performed case-insensitively. This function in effect provides a surrogate for the ILIKE SQL operator that is missing from ADQL. On this site, this is actually implemented using python's and SQL's LOWER, so for everything except ASCII, your milage will vary.
ivo_hasword(haystack TEXT, needle TEXT) -> INTEGER
gavo_hasword returns 1 if needle shows up in haystack, 0 otherwise. This is for "google-like"-searches in text-like fields. In word, you can actually employ a fairly complex query language; see http://www.postgresql.org/docs/8.3/static/textsearch.html for details.
ivo_apply_pm(ra DOUBLE PRECISION, dec DOUBLE PRECISION, pmra DOUBLE PRECISION, pmde DOUBLE PRECISON, epdist DOUBLE PRECISION) -> POINT
Returns a POINT (in the UNDEFINED reference frame) for the position an object at ra/dec with proper motion pmra/pmde has after epdist years. positions must be in degrees, PMs in should be in julian years (i.e., proper motions are expected in degrees/year). pmra is assumed to contain cos(delta). NOTE: This currently is a crappy approximation that does *not* go through the tangential plane. If you use it, let the operators know so we replace it with something real.
BOX
POINT
CIRCLE
POLYGON
REGION
CENTROID
COORD1
COORD2
DISTANCE
CONTAINS
INTERSECTS
AREA
LOWER
OFFSET
CAST
IN_UNIT
UNION
EXCEPT
INTERSECT
text/xml application/x-votable+xml;version=1.4 vodml text/html html application/x-votable+xml;serialization=binary2 votable/b2 application/geo-json geojson application/fits fits text/csv text/csv;header=present csv application/x-votable+xml;serialization=tabledata votable/td application/json json application/x-votable+xml votable text/plain text/tab-separated-values tsv 172800 3600 20000 10000000 100000000
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/examples.htm000066400000000000000000000105671521254414300237150ustar00rootroot00000000000000 Examples queries for HEASARC's TAP service

Examples for the TAP service at HEASARC

Simple geometric query on rosmaster with circle and point

The Table Access Protocol Service at HEASARC allow for simple geometric queries. For example, this query searches for observations in the rostmaster catalog within a circle of radius 1 degree of the coordinates (ra,dec)=(50,-85) -- i.e., basically a cone search -- and an exposure longer than 10000 seconds:

            SELECT * FROM rosmaster                      WHERE exposure > 10000 and                            1=CONTAINS(POINT('ICRS', ra, dec),CIRCLE('ICRS', 50, -85, 1))          

Simple geometric query on rosmaster with circle and point

The Table Access Protocol Service at HEASARC allow for simple geometric and cross-match queries. For example, this query searches for observations common to the rostmaster catalog AND the chanmaster catalog with a minimum exposure of 10ks.

	   SELECT * FROM rosmaster as ros	            INNER JOIN chanmaster as chan	                ON ros.name = chan.name	            WHERE ros.exposure > 10000 and chan.exposure > 10000	            ORDER by ros.exposure	             

Simple geometric query on rosmaster with intersects, circle, point

The Table Access Protocol Service at HEASARC allow for simple geometric queries. For example, this (slow) query searches for observations in the rostmaster catalog where a circle of radius 1 degree of the coordinates (ra,dec)=(50,-85) intersects with a circle of 1 degree radius around the center of the pointing:

            SELECT * FROM rosmaster                      WHERE 1=INTERSECTS(CIRCLE('ICRS', ra, dec,1),CIRCLE('ICRS', 50, -85, 1))          

Simple geometric query on rosmaster with polygon

The Table Access Protocol Service at HEASARC allow for simple geometric queries. For example, this query searches for observations in the rostmaster catalog where a pointing lies with a user-defined polygon, in this case a triangle with vertices (-5,-5), (5,-5), and (0,5)):

            SELECT * FROM rosmaster                      WHERE  exposure > 10000 AND                             1=CONTAINS(POINT('ICRS', ra, dec),POLYGON('ICRS', -5, -5, 5, -5, 0, 5))          

Simple geometric query on rosmaster, chanmaster with join on distance

The Table Access Protocol Service at HEASARC allow for simple geometric queries. For example, this query computes the distance between rostmaster observations and a given point, selecting those observations near it, and ordering the result by that distance:

          SELECT DISTANCE(	      POINT('ICRS', ra, dec),              POINT('ICRS', 266.41683, -29.00781)) AS dist, *	  FROM rosmaster	  WHERE 1=CONTAINS(	      POINT('ICRS', ra, dec),	      CIRCLE('ICRS', 266.41683, -29.00781, 1))	  ORDER BY dist ASC          
ObsCore queries
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/lazy-table1.xml000066400000000000000000000013331521254414300242230ustar00rootroot00000000000000 test.table1Test table 1Lazy Test Table 1utype id Primary key unit meta.id;meta.main utype VARCHAR indexed primary test.foreigntable testkey testkey Test foreigner utype
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/lazy-table2.xml000066400000000000000000000026231521254414300242270ustar00rootroot00000000000000 test This is a unittest schema test.table2Test table 2Lazy Test Table 2utype id Primary key unit meta.id;meta.main utype VARCHAR indexed primary test.foreigntable testkey testkey Test foreigner utype
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/obscore-examples.html000066400000000000000000000034741521254414300255220ustar00rootroot00000000000000

ObsCore Examples from Heidelberg

These are examples for ADQL you can run in TAP services carrying an ivoa.obscore table. See ObsCore for the underlying data model.

Finding images by time and place

Suppose you read in an old amateur observer's log there was an unexpected object on the night sky in the cold winter nights of the week between January 12th and 18th, 1903 – and now you would like to see whether there could be an observation of such a thing.

SELECT s_ra, s_dec, t_min FROM ivoa.obscore
  WHERE t_min BETWEEN gavo_to_mjd('1903-01-12')
      AND gavo_to_mjd('1903-01-19')

There is also a shortcut via user defined functions. As an extension to regular ADQL, DaCHS lets you write gavo_simbadpoint('object') and replaces the result with a position obtained from simbad, like this:

SELECT access_url, t_exptime, t_min FROM ivoa.obscore
  WHERE
    t_min BETWEEN gavo_to_mjd('J2416128.5')
      AND gavo_to_mjd('J2416133.5') AND
    1=CONTAINS(gavo_simbadpoint('Aldebaran'),
      CIRCLE('ICRS', s_ra, s_dec, 15))
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/obscore-image.xml000066400000000000000000000632171521254414300246230ustar00rootroot00000000000000 Definition and support code for the ObsCore data model and table. Definition and support code for the ObsCore data model and table. The IVOA-defined obscore table, containing generic metadata for datasets within this datacenter. For advice on how to cite the resource(s) that contributed to this result, see http://dc.zah.uni-heidelberg.de/tableinfo/ivoa.ObsCore The IVOA-defined obscore table, containing generic metadata for datasets within this datacenter. The calib_level flag takes the following values: === =========================================================== 0 Raw Instrumental data requiring instrument-specific tools 1 Instrumental data processable with standard tools 2 Calibrated, science-ready data without instrument signature 3 Enhanced data products (e.g., mosaics) === =========================================================== High level scientific classification of the data product, taken from an enumeration Data product specific type Amount of data processing that has been applied to the data Name of a data collection (e.g., project name) this data belongs to Unique identifier for an observation Free-from title of the data set Dataset identifier assigned by the publisher. Dataset identifier assigned by the creator. The URL at which to obtain the data set. MIME type of the resource at access_url Estimated size of data product Object a targeted observation targeted Class of the target object (star, QSO, ...) RA of (center of) observation, ICRS Dec of (center of) observation, ICRS Approximate spatial extent for the region covered by the observation Region covered by the observation, as a polygon Best spatial resolution within the data set Lower bound of times represented in the data set, as MJD Upper bound of times represented in the data set, as MJD Total exporure time Minimal significant time interval along the time axis Minimal wavelength represented within the data set Maximal wavelength represented within the data set Spectral resolving power delta lambda/lamda UCD for the product's observable List of polarization states in the data set Name of the facility at which data was taken Name of the instrument that produced the data Number of elements (typically pixels) along the first spatial axis. Number of elements (typically pixels) along the second spatial axis. Number of elements (typically pixels) along the time axis. Number of elements (typically pixels) along the spectral axis. Number of elements (typically pixels) along the polarization axis. Sampling period in world coordinate units along the spatial axis Nature of the product's spectral axis
image 0 Carte du Ciel potsdam/data/fits/POT032_000002E.fits POT032 000002E 1913-08-26 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000002E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000002E.fits image/fits 435344 3.50857212362378 32.5520448642212 2.62789597705705 Polygon ICRS 5.0880992953 33.8657594349 5.0355038987 31.2453170186 1.9726562093 31.2287678614 1.9153724039 33.8626908007 0.633652077522129 20005.0 20005.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam AO Potsdam, CdC 32-cm refractor 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000002F.fits POT032 000002F 1913-09-27 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000002F.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000002F.fits image/fits 435344 3.53452561567638 32.5695561136923 2.63052286885795 Polygon ICRS 5.103047601 33.886686541 5.0917765511 31.2555119167 2.0160910239 31.2347269366 1.9365250319 33.8649731746 0.634285487467423 20037.0 20037.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam AO Potsdam, CdC 32-cm refractor 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000016E.fits POT032 000016E 1913-11-24 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000016E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000016E.fits image/fits 435344 35.1868032690563 32.4808618261433 2.63817216226016 Polygon ICRS 36.7551716874 33.7680816314 36.6569941298 31.1022837509 33.6625182329 31.1788382583 33.6735378399 33.8410154025 0.63612992526032 20095.0 20095.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam, POT032C 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000019E.fits POT032 000019E 1914-01-10 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000019E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000019E.fits image/fits 435344 41.9674003552431 32.3991901793566 2.63199545777752 Polygon ICRS 43.548354499 33.6930243809 43.505828469 31.0660423298 40.4307731342 31.0878159639 40.3821684028 33.7082053158 0.634640565840527 20142.0 20142.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam, POT032C 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000023E.fits POT032 000023E 1913-11-24 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000023E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000023E.fits image/fits 435344 51.013271521456 32.3592083837928 2.63320798636414 Polygon ICRS 52.5854005932 33.6698086892 52.51655884 31.0228597137 49.4658779108 31.0489341391 49.4582217525 33.6839678682 0.63493293710053 20095.0 20095.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam, POT032C 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000024E.fits POT032 000024E 1914-01-14 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000024E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000024E.fits image/fits 435344 53.2710128701656 32.3315125241693 2.63161394905183 Polygon ICRS 54.8696536533 33.6223099336 54.8100487496 31.0070068952 51.7281712497 31.0126204922 51.6981281808 33.6237338407 0.63454857445322 20146.0 20146.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam, POT032C 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000037E.fits POT032 000037E 1914-01-23 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000037E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000037E.fits image/fits 435344 82.5782914160801 32.0756686823358 2.63224704496679 Polygon ICRS 84.1734494156 33.3485377418 84.0849626303 30.7322269305 81.0277353071 30.7779028646 81.0221467846 33.3910659111 0.634701229864731 20155.0 20155.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam, POT032C 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000041E.fits POT032 000041E 1914-01-28 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000041E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000041E.fits image/fits 435344 91.6034594938728 31.9863773920912 2.63157744935597 Polygon ICRS 93.1854668029 33.2901563606 93.1207735598 30.6519541351 90.0617359171 30.6701913547 90.0404624178 33.3040260012 0.63453977345489 20160.0 20160.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam T-berg, POT032 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000042E.fits POT032 000042E 1914-01-23 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000042E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000042E.fits image/fits 435344 93.8580667241656 31.9665743279601 2.63161025563022 Polygon ICRS 95.4495587754 33.2578595127 95.3683729818 30.6303045167 92.309936229 30.6592222838 92.3026865321 33.2851196812 0.634547683876008 20155.0 20155.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam T-berg, POT032 14930 14929 -1 -1 -1 NaN
image 0 Carte du Ciel potsdam/data/fits/POT032_000043E.fits POT032 000043E 1914-01-28 ivo://org.gavo.dc/~?potsdam/data/fits/POT032_000043E.fits http://dc.zah.uni-heidelberg.de/getproduct/potsdam/data/fits/POT032_000043E.fits image/fits 435344 96.1095474818101 31.929532175206 2.63162090137484 Polygon ICRS 97.6853052447 33.2333654587 97.6308154 30.6046273426 94.5763673352 30.6070206617 94.5432016023 33.2334262897 0.634550250833854 20160.0 20160.0 NaN NaN NaN NaN NaN em.opt Astrophysikalisches Observatorium Potsdam Potsdam T-berg, POT032 14930 14929 -1 -1 -1 NaN
astropy-pyvo-f0fdda3/pyvo/dal/tests/data/tap/tables.xml000066400000000000000000000013311521254414300233460ustar00rootroot00000000000000 test This is a unittest schema test.table1
test.table2
astropy-pyvo-f0fdda3/pyvo/dal/tests/make_testdata.py000066400000000000000000000106021521254414300230360ustar00rootroot00000000000000from pathlib import Path import numpy as np from astropy.table import Table from astropy.io.votable.tree import VOTableFile, Info from astropy.io.fits import ImageHDU def _votablefile(): table = Table([ [23, 42, 1337], [b'Illuminatus', b"Don't panic, and always carry a towel", b'Elite'] ], names=('1', '2')) table['1'].meta['ucd'] = 'foo;bar' table['2'].meta['utype'] = 'foobar' votable_file = VOTableFile.from_table(table) info = Info(name='QUERY_STATUS', value='OK') info.content = 'OK' votable_file.resources[0].infos.append(info) return votable_file def votablefile(): votable_file = _votablefile() return votable_file def votablefile_errorstatus(): votable_file = _votablefile() info = Info(name='QUERY_STATUS', value='ERROR') info.content = 'ERROR' votable_file.resources[0].infos[0] = info return votable_file def votablefile_overflowstatus(): votable_file = _votablefile() info_ok = Info(name='QUERY_STATUS', value='OK') info_overflow = Info(name='QUERY_STATUS', value='OVERFLOW') votable_file.resources[0].infos[0] = info_ok votable_file.resources[0].infos.append(info_overflow) return votable_file def votablefile_missingtable(): votable_file = _votablefile() del votable_file.resources[0].tables[0] return votable_file def votablefile_missingresource(): votable_file = _votablefile() del votable_file.resources[0] return votable_file def votablefile_missingcolumns(): votable_file = _votablefile() del votable_file.resources[0].tables[0].fields[:] return votable_file def votablefile_firstresource(): votable_file = _votablefile() votable_file.resources[0]._type = 'results' return votable_file def votablefile_tableinfo(): votable_file = _votablefile() votable_file.resources[0].tables[0].infos[:] = ( votable_file.resources[0].infos[:]) del votable_file.resources[0].infos[:] return votable_file def votablefile_rootinfo(): votable_file = _votablefile() votable_file.infos[:] = ( votable_file.resources[0].infos[:]) del votable_file.resources[0].infos[:] return votable_file def votablefile_dataset(): table = Table([ [ 'image/fits', 'application/x-votable+xml', 'application/x-votable+xml;content=datalink' ], [ b'http://example.com/querydata/image.fits', b'http://example.com/querydata/votable.xml', b'http://example.com/querydata/votable-datalink.xml' ] ], names=('dataformat', 'dataurl')) table['dataformat'].meta['ucd'] = 'meta.code.mime' table['dataurl'].meta['utype'] = 'Access.Reference' table['dataurl'].meta['ucd'] = 'meta.dataset;meta.ref.url' votable_file = VOTableFile.from_table(table) info = Info(name='QUERY_STATUS', value='OK') info.content = 'OK' votable_file.resources[0].infos.append(info) return votable_file def dataset_fits(): hdu = ImageHDU(np.random.random((256, 256))) return hdu def main(): dirname = Path(__file__).parent / 'data' votablefile().to_xml( str(dirname / 'query/basic.xml'), tabledata_format='tabledata') votablefile_errorstatus().to_xml( str(dirname / 'query/errorstatus.xml'), tabledata_format='tabledata') votablefile_overflowstatus().to_xml( str(dirname / 'query/overflowstatus.xml'), tabledata_format='tabledata') votablefile_missingtable().to_xml( str(dirname / 'query/missingtable.xml'), tabledata_format='tabledata') votablefile_missingresource().to_xml( str(dirname / 'query/missingresource.xml'), tabledata_format='tabledata') votablefile_missingcolumns().to_xml( str(dirname / 'query/missingcolumns.xml'), tabledata_format='tabledata') votablefile_firstresource().to_xml( str(dirname / 'query/firstresource.xml'), tabledata_format='tabledata') votablefile_tableinfo().to_xml( str(dirname / 'query/tableinfo.xml'), tabledata_format='tabledata') votablefile_rootinfo().to_xml( str(dirname / 'query/rootinfo.xml'), tabledata_format='tabledata') votablefile_dataset().to_xml( str(dirname / 'query/dataset.xml'), tabledata_format='tabledata') dataset_fits().writeto( str(dirname / 'querydata/image.fits'), overwrite=True) if __name__ == '__main__': main() astropy-pyvo-f0fdda3/pyvo/dal/tests/test_adhoc.py000066400000000000000000000202541521254414300223510ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.adhoc """ import datetime from astropy import units as u from astropy.time import Time import pytest from pyvo.dal.adhoc import AxisParamMixin, SodaQuery def test_pos(): class TestClass(dict, AxisParamMixin): pass test_obj = TestClass() test_obj.pos.add((1, 2, 3) * u.deg) assert len(test_obj._pos) == 1 assert test_obj['POS'] == ['CIRCLE 1.0 2.0 3.0'] test_obj.pos.add((1, 2, 3, 4)) assert len(test_obj._pos) == 2 assert test_obj['POS'] == ['CIRCLE 1.0 2.0 3.0', 'RANGE 1.0 2.0 3.0 4.0'] # duplicates are ignored test_obj.pos.add((1, 2, 3)) assert len(test_obj._pos) == 2 assert test_obj['POS'] == ['CIRCLE 1.0 2.0 3.0', 'RANGE 1.0 2.0 3.0 4.0'] # polygon test_obj.pos.add((1, 2, 3, 4, 5, 6)) assert len(test_obj._pos) == 3 assert test_obj['POS'] == ['CIRCLE 1.0 2.0 3.0', 'RANGE 1.0 2.0 3.0 4.0', 'POLYGON 1.0 2.0 3.0 4.0 5.0 6.0'] # deletes test_obj.pos.remove((1, 2, 3, 4)) assert len(test_obj._pos) == 2 assert test_obj['POS'] == ['CIRCLE 1.0 2.0 3.0', 'POLYGON 1.0 2.0 3.0 4.0 5.0 6.0'] # test borders test_obj.pos.discard((1, 2, 3) * u.deg) test_obj.pos.discard((1, 2, 3, 4, 5, 6)) assert (len(test_obj._pos) == 0) test_obj.pos.add((0, 90, 90)) assert len(test_obj._pos) == 1 assert test_obj['POS'] == ['CIRCLE 0.0 90.0 90.0'] test_obj.pos.pop() test_obj.pos.add((360, -90, 1)) assert len(test_obj._pos) == 1 assert test_obj['POS'] == ['CIRCLE 360.0 -90.0 1.0'] test_obj.pos.pop() test_obj.pos.add((0, 360, -90, 90)) assert len(test_obj._pos) == 1 assert test_obj['POS'] == ['RANGE 0.0 360.0 -90.0 90.0'] test_obj.pos.pop() test_obj.pos.add((0, 0, 180, 90, 270, -90)) assert len(test_obj._pos) == 1 assert test_obj['POS'] == ['POLYGON 0.0 0.0 180.0 90.0 270.0 -90.0'] # errors test_obj.pos.pop() with pytest.raises(TypeError): test_obj.pos.add(('A', 2, 3)) with pytest.raises(ValueError): test_obj.pos.add((-2, 7, 3)) with pytest.raises(ValueError): test_obj.pos.add((3, 99, 3)) with pytest.raises(ValueError): test_obj.pos.add((2, 7, 91)) with pytest.raises(ValueError): test_obj.pos.add((-1, 7, 3, 4)) with pytest.raises(ValueError): test_obj.pos.add((2, 1, 3, 4)) with pytest.raises(ValueError): test_obj.pos.add((1, 2, 4, 3)) with pytest.raises(ValueError): test_obj.pos.add((-2, 7, 5, 9, 10, 10)) with pytest.raises(ValueError): test_obj.pos.add((2, 99, 5, 9, 10, 10)) with pytest.raises(ValueError): test_obj.pos.add((1, 2, 3, 4, 5, 6, 7)) def test_band(): class TestClass(dict, AxisParamMixin): pass test_obj = TestClass() assert not hasattr(test_obj, '_band') test_obj.band.add(33) assert 33 in test_obj.band assert test_obj['BAND'] == ['33.0 33.0'] test_obj.band.add((50 * u.meter, 500)) assert 33 in test_obj.band assert (50 * u.meter, 500) in test_obj.band assert test_obj['BAND'] == ['33.0 33.0', '50.0 500.0'] test_obj.band.discard(33) assert (50 * u.meter, 500) in test_obj.band assert test_obj['BAND'] == ['50.0 500.0'] test_obj.band.pop() assert not test_obj.band assert not test_obj['BAND'] test_obj.band.add((float('-inf'), 33)) assert (float('-inf'), 33) in test_obj.band assert test_obj.band.dal == ['-inf 33.0'] test_obj.band.clear() test_obj.band.add((33, float('inf'))) assert (33, float('inf')) in test_obj.band assert test_obj.band.dal == ['33.0 inf'] test_obj.clear() # error cases with pytest.raises(ValueError): test_obj.band.add(()) with pytest.raises(ValueError): test_obj.band.add((1, 2, 3)) with pytest.raises(TypeError): test_obj.band.add(('INVALID', 6)) with pytest.raises(ValueError): test_obj.band.add((3, 1)) def test_time(): class TestClass(dict, AxisParamMixin): pass test_obj = TestClass() assert not hasattr(test_obj, '_time') now = Time(datetime.datetime.now(tz=datetime.timezone.utc)) test_obj.time.add(now) assert now in test_obj.time assert test_obj['TIME'] == ['{now} {now}'.format(now=now.mjd)] min_time = '2010-01-01T00:00:00.000Z' max_time = '2010-01-01T01:00:00.000Z' test_obj.time.add((min_time, max_time)) assert now in test_obj.time assert (min_time, max_time) in test_obj.time assert test_obj['TIME'] == ['{now} {now}'.format(now=now.mjd), '{min} {max}'.format(min=Time(min_time).mjd, max=Time(max_time).mjd)] test_obj.time.discard(now) assert (min_time, max_time) in test_obj.time assert test_obj['TIME'] == ['{min} {max}'.format(min=Time(min_time).mjd, max=Time(max_time).mjd)] test_obj.time.pop() assert not test_obj.time assert not test_obj['TIME'] # error cases with pytest.raises(ValueError): test_obj.time.add([]) with pytest.raises(ValueError): test_obj.time.add([now, min_time, max_time]) with pytest.raises(ValueError): test_obj.time.add(['INVALID']) with pytest.raises(ValueError): test_obj.time.add([max_time, min_time]) def test_pol(): class TestClass(dict, AxisParamMixin): pass test_obj = TestClass() assert not hasattr(test_obj, '_pol') test_obj.pol.add('YY') assert 'YY' in test_obj.pol assert test_obj['POL'] == ['YY'] test_obj.pol.add('POLI') assert 'YY' in test_obj.pol assert 'POLI' in test_obj.pol assert test_obj['POL'] == ['YY', 'POLI'] # test duplicate test_obj.pol.add('POLI') assert 'YY' in test_obj.pol assert 'POLI' in test_obj.pol assert test_obj['POL'] == ['YY', 'POLI'] test_obj.pol.remove('YY') assert 'POLI' in test_obj.pol assert test_obj['POL'] == ['POLI'] test_obj.pol.pop() assert not test_obj._pol assert not test_obj['POL'] # error cases with pytest.raises(ValueError): test_obj.pol.add(None) with pytest.raises(ValueError): test_obj.pol.add(['INVALID']) def test_soda_query(): test_obj = SodaQuery(baseurl='some/url') test_obj.circle = (2, 3, 5) assert test_obj._circle == (2, 3, 5) assert test_obj['CIRCLE'] == '2.0 3.0 5.0' assert test_obj._circle assert not hasattr(test_obj, '_polygon') assert not hasattr(test_obj, '_range') test_obj.range = (8, 9, 3, 4) * u.deg assert test_obj['POS'] == 'RANGE 8.0 9.0 3.0 4.0' assert test_obj._range is not None assert not hasattr(test_obj, '_polygon') assert not hasattr(test_obj, '_circle') test_obj.polygon = (1, 2, 3, 4, 5, 6) assert test_obj['POLYGON'] == '1.0 2.0 3.0 4.0 5.0 6.0' assert test_obj._polygon assert not hasattr(test_obj, '_range') assert not hasattr(test_obj, '_circle') del test_obj.polygon assert not hasattr(test_obj, '_polygon') assert not hasattr(test_obj, '_circle') assert not hasattr(test_obj, '_range') # error cases with pytest.raises(TypeError): test_obj.circle = ('A', 1, 2) with pytest.raises(ValueError): test_obj.circle = (1, 1, 2, 2) with pytest.raises(ValueError): test_obj.circle = (-1, 1, 2) with pytest.raises(ValueError): test_obj.circle = (1, 99, 2) with pytest.raises(ValueError): test_obj.circle = (1, 1, 91) with pytest.raises(ValueError): test_obj.range = (1, 2, 3) with pytest.raises(ValueError): test_obj.range = (2, 1, 3, 4) with pytest.raises(ValueError): test_obj.range = (1, 2, 4, 3) with pytest.raises(ValueError): test_obj.range = (-1, 2, 3, 4) with pytest.raises(ValueError): test_obj.range = (2, 1000, 3, 4) with pytest.raises(ValueError): test_obj.range = (1, 1, -91, 4) with pytest.raises(ValueError): test_obj.range = (1, 1, 3, 92) with pytest.raises(ValueError): test_obj.polygon = (1, 2, 3, 4) with pytest.raises(ValueError): test_obj.polygon = (2, 1, 3, 4, 5, 6, 7) astropy-pyvo-f0fdda3/pyvo/dal/tests/test_datalink.py000066400000000000000000000321101521254414300230540ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.datalink """ from functools import partial import re import pytest import pyvo as vo from pyvo.dal.adhoc import DatalinkResults, DALServiceError from pyvo.dal.sia2 import SIA2Results from pyvo.dal.tap import TAPResults from pyvo.utils import testing, vocabularies from pyvo.dal.sia import search from astropy.utils.data import get_pkg_data_contents, get_pkg_data_filename get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') @pytest.fixture() def ssa_datalink(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/datalink-ssa.xml') with mocker.register_uri( 'GET', 'http://example.com/ssa_datalink', content=callback ) as matcher: yield matcher sia_re = re.compile("http://example.com/sia.*") @pytest.fixture() def register_mocks(mocker): with mocker.register_uri( "GET", "http://example.com/querydata/image.fits", content=get_pkg_data_contents("data/querydata/image.fits"), ) as matcher: yield matcher @pytest.fixture() def sia(mocker): with mocker.register_uri( "GET", sia_re, content=get_pkg_data_contents("data/sia/dataset.xml") ) as matcher: yield matcher @pytest.fixture() def datalink(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/datalink.xml') with mocker.register_uri( 'POST', 'http://example.com/datalink', content=callback ) as matcher: yield matcher @pytest.fixture() def datalink_product(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/datalink.xml') with mocker.register_uri( 'GET', 'http://example.com/datalink.xml', content=callback ) as matcher: yield matcher @pytest.fixture() def obscore_datalink(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/datalink-obscore.xml') with mocker.register_uri( 'GET', 'http://example.com/obscore', content=callback ) as matcher: yield matcher @pytest.fixture() def res_datalink(mocker): first_batch = True def callback(request, context): nonlocal first_batch if first_batch: first_batch = False return get_pkg_data_contents('data/datalink/cutout1.xml') else: return get_pkg_data_contents('data/datalink/cutout2.xml') with mocker.register_uri( 'POST', 'https://example.com/obscore-datalink', content=callback ) as matcher: yield matcher @pytest.fixture() def proc(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/proc.xml') with mocker.register_uri( 'GET', 'http://example.com/proc', content=callback ) as matcher: yield matcher @pytest.fixture() def datalink_vocabulary(mocker): # astropy download_file (which get_vocabluary uses) does not use # requests, so we can't mock this as we can mock the others. We # replace the entire function for a while dl_voc_uri = 'http://www.ivoa.net/rdf/datalink/core' def fake_download_file(src_url, *args, **kwargs): assert src_url == dl_voc_uri return get_pkg_data_filename('data/datalink/datalink.desise') real_download_file = vocabularies.download_file try: vocabularies.download_file = fake_download_file yield finally: vocabularies.download_file = real_download_file @pytest.mark.usefixtures('ssa_datalink', 'datalink') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_datalink(): results = vo.spectrumsearch( 'http://example.com/ssa_datalink', (30, 30)) for preserve_order in [False, True]: dl_res = set(results.iter_datalinks(preserve_order=preserve_order)) assert len(dl_res) == 1 datalinks = dl_res.pop() assert datalinks.original_row["accsize"] == 100800 assert 4 == len(datalinks) for dl in datalinks: assert dl.semantics in ['#this', '#preview', '#progenitor', '#proc'] @pytest.mark.usefixtures('obscore_datalink', 'res_datalink') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_datalink_batch(): results = vo.dal.imagesearch( 'http://example.com/obscore', (30, 30)) for preserve_order in [False, True]: dls = list(results.iter_datalinks(preserve_order=preserve_order)) assert len(dls) == 3 assert dls[0].original_row["obs_collection"] == "MACHO" @pytest.mark.usefixtures('proc', 'datalink_vocabulary') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") class TestSemanticsRetrieval: def test_access_with_string(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') assert datalinks.original_row is None res = [r["access_url"] for r in datalinks.bysemantics("#this")] assert len(res) == 1 assert res[0].endswith("eq010000ms/20100927.comb_avg.0001.fits.fz") def test_access_with_list(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') res = [r["access_url"] for r in datalinks.bysemantics(["#this", "#preview-image"])] assert len(res) == 2 assert res[0].endswith("eq010000ms/20100927.comb_avg.0001.fits.fz") assert res[1].endswith("20100927.comb_avg.0001.fits.fz?preview=True") def test_access_with_expansion(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') res = [r["access_url"] for r in datalinks.bysemantics(["#this", "#preview"])] assert len(res) == 3 assert res[0].endswith("eq010000ms/20100927.comb_avg.0001.fits.fz") assert res[1].endswith("20100927.comb_avg.0001.fits.fz?preview=True") assert res[2].endswith("http://dc.zah.uni-heidelberg.de/wider.dat") def test_access_without_expansion(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') res = [r["access_url"] for r in datalinks.bysemantics( ["#this", "#preview"], include_narrower=False)] assert len(res) == 2 assert res[0].endswith("eq010000ms/20100927.comb_avg.0001.fits.fz") assert res[1].endswith("http://dc.zah.uni-heidelberg.de/wider.dat") def test_with_full_url(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') res = [r["access_url"] for r in datalinks.bysemantics("urn:example:rdf/dlext#oracle")] assert len(res) == 1 assert res[0].endswith("when-will-it-be-back") def test_all_mixed(self): datalinks = DatalinkResults.from_result_url('http://example.com/proc') res = [r["access_url"] for r in datalinks.bysemantics([ "urn:example:rdf/dlext#oracle", 'http://www.ivoa.net/rdf/datalink/core#preview', '#this', 'non-existing-term'])] assert len(res) == 4 assert res[0].endswith("eq010000ms/20100927.comb_avg.0001.fits.fz") assert res[1].endswith("comb_avg.0001.fits.fz?preview=True") assert res[2].endswith("http://dc.zah.uni-heidelberg.de/wider.dat") assert res[3].endswith("when-will-it-be-back") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") @pytest.mark.usefixtures('datalink_product', 'datalink_vocabulary') class TestIterDatalinksProducts: """Tests for producing datalinks from tables containing links to datalink documents. """ def test_no_access_format(self): res = testing.create_dalresults([ {"name": "access_url", "datatype": "char", "arraysize": "*", "utype": "obscore:access.reference"}], [("http://foo.bar/baz.jpeg",)], resultsClass=TAPResults) assert list(res.iter_datalinks()) == [] def test_obscore_utype(self): res = testing.create_dalresults([ {"name": "data_product", "datatype": "char", "arraysize": "*", "utype": "obscore:access.reference"}, {"name": "content_type", "datatype": "char", "arraysize": "*", "utype": "obscore:access.format"},], [("http://example.com/datalink.xml", "application/x-votable+xml;content=datalink")], resultsClass=TAPResults) links = list(res.iter_datalinks()) assert len(links) == 1 assert (next(links[0].bysemantics("#this"))["access_url"] == "http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt") def test_sia2_record(self): res = testing.create_dalresults([ {"name": "access_url", "datatype": "char", "arraysize": "*", "utype": "obscore:access.reference"}, {"name": "access_format", "datatype": "char", "arraysize": "*", "utype": "obscore:access.format"},], [("http://example.com/datalink.xml", "application/x-votable+xml;content=datalink")], resultsClass=SIA2Results) links = list(res.iter_datalinks()) assert len(links) == 1 assert (next(links[0].bysemantics("#this"))["access_url"] == "http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt") def test_sia1_record(self): res = testing.create_dalresults([ {"name": "product", "datatype": "char", "arraysize": "*", "ucd": "VOX:Image_AccessReference"}, {"name": "mime", "datatype": "char", "arraysize": "*", "ucd": "VOX:Image_Format"},], [("http://example.com/datalink.xml", "application/x-votable+xml;content=datalink")], resultsClass=TAPResults) links = list(res.iter_datalinks()) assert len(links) == 1 assert (next(links[0].bysemantics("#this"))["access_url"] == "http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt") def test_ssap_record(self): res = testing.create_dalresults([ {"name": "product", "datatype": "char", "arraysize": "*", "utype": "ssa:access.reference"}, {"name": "mime", "datatype": "char", "arraysize": "*", "utype": "ssa:access.format"},], [("http://example.com/datalink.xml", "application/x-votable+xml;content=datalink")], resultsClass=TAPResults) links = list(res.iter_datalinks()) assert len(links) == 1 assert (next(links[0].bysemantics("#this"))["access_url"] == "http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt") def test_generic_record(self): # The meta.code.mime and meta.ref.url UCDs are perhaps too # generic. To ensure a somewhat predictable behaviour, # we at least make sure we pick the first of possibly multiple # pairs (not that this would preclude arbitrary amounts of # chaos). res = testing.create_dalresults([ {"name": "access_url", "datatype": "char", "arraysize": "*", "ucd": "meta.ref.url"}, {"name": "access_format", "datatype": "char", "arraysize": "*", "utype": "meta.code.mime"}, {"name": "alt_access_url", "datatype": "char", "arraysize": "*", "ucd": "meta.ref.url"}, {"name": "alt_access_format", "datatype": "char", "arraysize": "*", "utype": "meta.code.mime"},], [("http://example.com/datalink.xml", "application/x-votable+xml;content=datalink", "http://example.com/bad-pick.xml", "application/x-votable+xml;content=datalink",)], resultsClass=TAPResults) links = list(res.iter_datalinks()) assert len(links) == 1 assert (next(links[0].bysemantics("#this"))["access_url"] == "http://dc.zah.uni-heidelberg.de/getproduct/flashheros/data/ca90/f0011.mt") @pytest.mark.usefixtures("sia", "register_mocks") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_no_datalink(): # for issue #328 getdatalink() exits messily when there isn't a datalink results = search("http://example.com/sia", pos=(288, 15), format="all") result = results[0] with pytest.raises(DALServiceError, match="No datalink found for record."): result.getdatalink() astropy-pyvo-f0fdda3/pyvo/dal/tests/test_mimetype.py000066400000000000000000000031501521254414300231200ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.mimetype """ from functools import partial import pytest import requests_mock from astropy.utils.data import get_pkg_data_contents from pyvo.dal.mimetype import mime_object_maker mime_url = 'https://someurl.com/' get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') try: from PIL import Image # noqa: F401 HAS_PILLOW = True except ImportError: HAS_PILLOW = False @pytest.fixture() def mime(mocker): def callback(request, context): if 'mime-text' in request.url: return b'Text content' elif 'image' in request.url: return get_pkg_data_contents('data/mimetype/ivoa_logo.jpg') elif 'fits' in request.url: return get_pkg_data_contents('data/mimetype/test.fits') with mocker.register_uri( 'GET', requests_mock.ANY, content=callback ) as matcher: yield matcher @pytest.mark.usefixtures('mime') @pytest.mark.skipif('not HAS_PILLOW') def test_mime_object_maker(): assert 'Text content' == mime_object_maker(mime_url + 'mime-text', 'text/csv') img = mime_object_maker(mime_url + 'image', 'image/jpeg') assert img assert 'JPEG' == img.format fits = mime_object_maker(mime_url + 'fits', 'application/fits') assert 2 == len(fits) # error cases with pytest.raises(ValueError): mime_object_maker(None, "not/a/mime/type") with pytest.raises(ValueError): mime_object_maker(None, None) astropy-pyvo-f0fdda3/pyvo/dal/tests/test_monkeypatch.py000066400000000000000000000006031521254414300236110ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.datalink """ from astropy.table import Table from astropy.utils.data import get_pkg_data_filename def test_monkeypatch(): Table.read(get_pkg_data_filename("data/monkeypatch.xml")) import pyvo # noqa: F401 Table.read(get_pkg_data_filename("data/monkeypatch.xml")) astropy-pyvo-f0fdda3/pyvo/dal/tests/test_params.py000066400000000000000000000163371521254414300225650ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.datalink """ from functools import partial from urllib.parse import parse_qsl from pyvo.dal.adhoc import DatalinkResults from pyvo.dal.params import find_param_by_keyword, get_converter, AbstractDalQueryParam, IntervalQueryParam from pyvo.dal.exceptions import DALServiceError import pytest import numpy as np import astropy.units as u from astropy.utils.data import get_pkg_data_contents, get_pkg_data_fileobj get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') get_pkg_data_fileobj = partial( get_pkg_data_fileobj, package=__package__, encoding='binary') @pytest.fixture() def proc(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/proc.xml') with mocker.register_uri( 'GET', 'http://example.com/proc', content=callback ) as matcher: yield matcher @pytest.fixture() def proc_ds(mocker): def callback(request, context): return b'' with mocker.register_uri( 'GET', 'http://example.com/proc', content=callback ) as matcher: yield matcher @pytest.fixture() def proc_units(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/proc_units.xml') with mocker.register_uri( 'GET', 'http://example.com/proc_units', content=callback ) as matcher: yield matcher @pytest.fixture() def proc_units_ds(mocker): def callback(request, context): data = dict(parse_qsl(request.query)) if 'band' in data: assert data['band'] == ( '6.000000000000001e-07 8.000000000000001e-06') return b'' with mocker.register_uri( 'GET', 'http://example.com/proc_units_ds', content=callback ) as matcher: yield matcher @pytest.fixture() def proc_inf(mocker): def callback(request, context): return get_pkg_data_contents('data/datalink/proc_inf.xml') with mocker.register_uri( 'GET', 'http://example.com/proc_inf', content=callback ) as matcher: yield matcher @pytest.fixture() def proc_inf_ds(mocker): def callback(request, context): data = dict(parse_qsl(request.query)) if 'band' in data: assert data['band'] == ( '6.000000000000001e-07 +Inf') return b'' with mocker.register_uri( 'GET', 'http://example.com/proc_inf_ds', content=callback ) as matcher: yield matcher @pytest.mark.usefixtures('proc') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_find_param_by_keyword(): datalink = DatalinkResults.from_result_url('http://example.com/proc') proc_dl = datalink[0] input_params = {param.name: param for param in proc_dl.input_params} polygon_lower = find_param_by_keyword('polygon', input_params) polygon_upper = find_param_by_keyword('POLYGON', input_params) circle_lower = find_param_by_keyword('circle', input_params) circle_upper = find_param_by_keyword('CIRCLE', input_params) assert polygon_lower == polygon_upper assert circle_lower == circle_upper @pytest.mark.usefixtures('proc') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_serialize(): datalink = DatalinkResults.from_result_url('http://example.com/proc') proc_dl = datalink[0] input_params = {param.name: param for param in proc_dl.input_params} polygon_conv = get_converter( find_param_by_keyword('polygon', input_params)) circle_conv = get_converter( find_param_by_keyword('circle', input_params)) scale_conv = get_converter( find_param_by_keyword('scale', input_params)) kind_conv = get_converter( find_param_by_keyword('kind', input_params)) assert polygon_conv.serialize((1, 2, 3)) == "1 2 3" assert polygon_conv.serialize(np.array((1, 2, 3))) == "1 2 3" assert circle_conv.serialize((1.1, 2.2, 3.3)) == "1.1 2.2 3.3" assert circle_conv.serialize(np.array((1.1, 2.2, 3.3))) == "1.1 2.2 3.3" assert scale_conv.serialize(1) == "1" assert kind_conv.serialize("DATA") == "DATA" @pytest.mark.usefixtures('proc') @pytest.mark.usefixtures('proc_ds') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_serialize_exceptions(): datalink = DatalinkResults.from_result_url('http://example.com/proc') proc_dl = datalink[0] input_params = {param.name: param for param in proc_dl.input_params} polygon_conv = get_converter( find_param_by_keyword('polygon', input_params)) circle_conv = get_converter( find_param_by_keyword('circle', input_params)) band_conv = get_converter( find_param_by_keyword('band', input_params)) with pytest.raises(DALServiceError): polygon_conv.serialize((1, 2, 3, 4)) with pytest.raises(DALServiceError): circle_conv.serialize((1, 2, 3, 4)) with pytest.raises(DALServiceError): band_conv.serialize((1, 2, 3)) @pytest.mark.usefixtures('proc_units') @pytest.mark.usefixtures('proc_units_ds') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_units(): datalink = DatalinkResults.from_result_url('http://example.com/proc_units') proc_dl = datalink[0] proc_dl.process(band=(6000 * u.Angstrom, 80000 * u.Angstrom)) @pytest.mark.usefixtures('proc_inf') @pytest.mark.usefixtures('proc_inf_ds') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.E02") def test_inf(): datalink = DatalinkResults.from_result_url('http://example.com/proc_inf') proc_dl = datalink[0] proc_dl.process(band=(6000, +np.inf) * u.Angstrom) def test_dal_query_param(): class Test(AbstractDalQueryParam): def get_dal_format(self, item): return str(item) # check test_obs behaves like a set but also holds the dal representation test_obs = Test() test_obs.add(1) assert 1 in test_obs assert test_obs.dal == ['1'] test_obs.add(2) test_obs.add(3) assert len(test_obs) == 3 assert test_obs.dal == ['1', '2', '3'] assert {2, 3} < test_obs assert {1, 2, 3, 4} > test_obs test_obs.clear() assert len(test_obs) == 0 assert len(test_obs.dal) == 0 def test_dal_format(): iqp = IntervalQueryParam(unit=u.m, equivalencies=u.spectral()) assert '1.0 1.0' == iqp.get_dal_format(1) assert '1.0 2.0' == iqp.get_dal_format((1, 2)) assert '1.0 2.0' == iqp.get_dal_format((100 * u.cm, 200 * u.cm)) assert '1.0 2.0' == iqp.get_dal_format((100, 200) * u.cm) assert '0.14989622900000002 1.0' == iqp.get_dal_format((100 * u.cm, 2 * u.GHz)) assert '14.9896229 29.9792458' == iqp.get_dal_format((0.01, 0.02) * u.GHz) # Quantity intervals are corrected in terms of min and max .. assert '1.0 2.0' == iqp.get_dal_format((2, 1) * u.m) # But unitless intervals are not with pytest.raises(ValueError): iqp.get_dal_format((2, 1)) astropy-pyvo-f0fdda3/pyvo/dal/tests/test_query.py000066400000000000000000000544551521254414300224520ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.query """ import warnings from functools import partial from contextlib import ExitStack from io import BytesIO from os import listdir import pytest import numpy as np import platform from pyvo.dal.query import DALService, DALQuery, DALResults, Record, Upload from pyvo.dal.exceptions import DALServiceError, DALQueryError, DALFormatError, DALOverflowWarning from pyvo.version import version from astropy.table import Table, QTable from astropy.io.votable import parse as votableparse from astropy.io.votable.tree import VOTableFile try: # Workaround astropy deprecation, remove try/except once >=6.0 is required from astropy.io.votable.tree import TableElement except ImportError: from astropy.io.votable.tree import Table as TableElement from astropy.io.fits import HDUList from astropy.utils.data import get_pkg_data_contents, get_pkg_data_filename get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') @pytest.fixture() def register_mocks(mocker): with ExitStack() as stack: matchers = [ stack.enter_context(mocker.register_uri( 'GET', '//example.com/query/basic', content=get_pkg_data_contents('data/query/basic.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/missingtable', content=get_pkg_data_contents('data/query/missingtable.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/missingresource', content=get_pkg_data_contents('data/query/missingresource.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/missingcolumns', content=get_pkg_data_contents('data/query/missingcolumns.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/firstresource', content=get_pkg_data_contents('data/query/firstresource.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/rootinfo', content=get_pkg_data_contents('data/query/rootinfo.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/tableinfo', content=get_pkg_data_contents('data/query/tableinfo.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/dataset', content=get_pkg_data_contents('data/query/dataset.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/querydata/image.fits', content=get_pkg_data_contents('data/querydata/image.fits') )), # mocker.register_uri( # 'GET', 'http://example.com/querydata/votable.xml', # content=get_pkg_data_contents('data/querydata/votable.xml') # ), # mocker.register_uri( # 'GET', 'http://example.com/querydata/votable-datalink.xml', # content=get_pkg_data_contents('data/querydata/votable-datalink.xml') # ), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/nonexistant', text='Not Found', status_code=404 )), stack.enter_context(mocker.register_uri( 'GET', '//example.com/query/errornous', text='Error', status_code=500 )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/plaintext_error', content=b'No intersection between cutout and image', headers={'Content-Type': 'text/plain; charset=utf-8'}, status_code=500 )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/errorstatus', content=get_pkg_data_contents('data/query/errorstatus.xml') )), stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/overflowstatus', content=get_pkg_data_contents('data/query/overflowstatus.xml') )), ] def verbosetest_callback(request, context): assert 'VERBOSE' in request.qs and '1' in request.qs['VERBOSE'] return get_pkg_data_contents('data/query/basic.xml') matchers.append(stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/verbosetest', content=verbosetest_callback ))) def useragent_callback(request, context): assert 'User-Agent' in request.headers assert request.headers['User-Agent'] == 'pyvo-unittest pyVO/{} Python/{} ({}) (IVOA-test)'.format( version, platform.python_version(), platform.system()) return get_pkg_data_contents('data/query/basic.xml') matchers.append(stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/query/useragent', content=useragent_callback ))) yield matchers def _test_results(results): """Regression test result columns for correctnes""" assert len(results) == 3 assert results['1', 0] == 23 assert results['1', 1] == 42 assert results['1', 2] == 1337 truth = 'Illuminatus' assert results['2', 0] == truth truth = "Don't panic, and always carry a towel" assert results['2', 1] == truth truth = 'Elite' assert results['2', 2] == truth def _test_records(records): """ Regression test dal records for correctness""" assert len(records) == 3 assert all([isinstance(record, Record) for record in records]) assert records[0]['1'] == 23 truth = 'Illuminatus' assert records[0]['2'] == truth assert records[1]['1'] == 42 truth = "Don't panic, and always carry a towel" assert records[1]['2'] == truth assert records[2]['1'] == 1337 truth = 'Elite' assert records[2]['2'] == truth @pytest.fixture def url(): return "http://example.com/query/basic" @pytest.fixture def description(): return "An example service." @pytest.fixture def basic_service(url, description): return DALService(url, capability_description=description) @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.usefixtures('register_mocks') class TestDALService: def test_init(self, url, description, basic_service): """Test if baseurl and description are passed correctly""" assert basic_service.baseurl == url assert basic_service.capability_description == "An example service." def test__repr__(self, basic_service): assert str(basic_service) == (f"DALService(baseurl : '{basic_service.baseurl}'," f" description : '{basic_service.capability_description}')") def test_search(self): """ Test (in conjunction with mocker) that parameters arrive serverside, while also ensuring data consistency """ service = DALService('http://example.com/query/verbosetest') dalresults = service.search(VERBOSE=1) _test_results(dalresults) _test_records(dalresults) def test_useragent(self): service = DALService('http://example.com/query/useragent') service.search() def test_http_exception_404(self): service = DALService('http://example.com/query/nonexistant') try: service.search() except DALServiceError as exc: assert exc.code == 404 else: assert False def test_http_exception_500(self): service = DALService('http://example.com/query/errornous') try: service.search() except DALServiceError as exc: assert exc.code == 500 else: assert False def test_http_exception_message_preserved(self): query = DALQuery('http://example.com/query/plaintext_error') stream = query.execute_stream() stream.read() with pytest.raises(DALServiceError) as exc_info: query.raise_if_error() assert 'No intersection between cutout and image' in str(exc_info.value) def test_query_exception(self): service = DALService('http://example.com/query/errorstatus') with pytest.raises(DALQueryError): service.search() def test_query_warning(self): service = DALService('http://example.com/query/overflowstatus') with pytest.warns(DALOverflowWarning): service.search() @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W53") def test_format_exception(self): with pytest.raises(DALFormatError): service = DALService('http://example.com/query/missingtable') service.search() with pytest.raises(DALFormatError): service = DALService('http://example.com/query/missingresource') service.search() with pytest.raises(DALFormatError): service = DALService('http://example.com/query/missingcolumns') service.search() @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.usefixtures('register_mocks') class TestDALQuery: def test_url(self): queries = ( DALQuery('http://example.com/query/basic'), DALQuery(b'http://example.com/query/basic'), ) assert all( q.queryurl == 'http://example.com/query/basic' for q in queries ) def test_params(self): query = DALQuery( 'http://example.com/query/basic', verbose=1, foo='BAR') assert query['VERBOSE'] == 1 assert query['FOO'] == 'BAR' def test_execute(self): query = DALQuery('http://example.com/query/basic') dalresults = query.execute() assert dalresults.queryurl == 'http://example.com/query/basic' _test_results(dalresults) _test_records(dalresults) def test_execute_raw(self): query = DALQuery('http://example.com/query/basic') raw = query.execute_raw() assert raw.startswith(b'') def test_execute_stream_clears_stale_ex_on_success(self, mocker): query = DALQuery('http://example.com/query/basic') with mocker.register_uri('GET', '//example.com/query/basic', text='Server Error', status_code=500): query.execute_stream() assert query._ex is not None with mocker.register_uri('GET', '//example.com/query/basic', content=get_pkg_data_contents('data/query/basic.xml')): query.execute_stream() assert query._ex is None def test_execute_votable_raises_parse_error_not_stale_http_error(self, mocker): query = DALQuery('http://example.com/query/basic') with mocker.register_uri('GET', '//example.com/query/basic', text='Server Error', status_code=500): query.execute_stream() assert query._ex is not None with mocker.register_uri('GET', '//example.com/query/basic', content=b'not valid votable xml', status_code=200): with pytest.raises(DALFormatError): query.execute_votable() @pytest.mark.filterwarnings('ignore::astropy.io.votable.exceptions.W03') @pytest.mark.filterwarnings('ignore::astropy.io.votable.exceptions.W06') @pytest.mark.usefixtures('register_mocks') class TestDALResults: def test_init(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert dalresults.queryurl == 'http://example.com/query/basic' assert isinstance(dalresults.votable, VOTableFile) assert isinstance(dalresults.resultstable, TableElement) assert dalresults.fieldnames == ('1', '2') assert ( dalresults.fielddescs[0].name, dalresults.fielddescs[1].name ) == ('1', '2') assert dalresults.status == ('OK', 'OK') def test_from_result_url(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert dalresults.status == ('OK', 'OK') def test_init_errorstatus(self): with pytest.raises(DALQueryError): DALResults.from_result_url('http://example.com/query/errorstatus') def test_init_overflowstatus(self): with pytest.warns(DALOverflowWarning): DALResults.from_result_url('http://example.com/query/overflowstatus') def test_init_missingtable(self): with pytest.raises(DALFormatError): DALResults.from_result_url('http://example.com/query/missingtable') @pytest.mark.filterwarnings('ignore::astropy.io.votable.exceptions.W53') def test_init_missingresource(self): with pytest.raises(DALFormatError): DALResults.from_result_url( 'http://example.com/query/missingresource') def test_init_missingcolumns(self): with pytest.raises(DALFormatError): DALResults.from_result_url( 'http://example.com/query/missingcolumns') def test_init_firstresource(self): dalresults = DALResults.from_result_url( 'http://example.com/query/firstresource') assert dalresults.status == ('OK', 'OK') def test_init_tableinfo(self): dalresults = DALResults.from_result_url( 'http://example.com/query/tableinfo') assert dalresults.status == ('OK', 'OK') def test_init_rootinfo(self): dalresults = DALResults.from_result_url( 'http://example.com/query/rootinfo') assert dalresults.status == ('OK', 'OK') def test_repr(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert repr(dalresults)[0:26] == "" def test_iter(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') records = list(iter(dalresults)) _test_results(dalresults) _test_records(records) def test_dataconsistency(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert isinstance(dalresults['1'], np.ndarray) assert isinstance(dalresults['2'], np.ndarray) _test_results(dalresults) _test_records(dalresults) def test_table_conversion(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert isinstance(dalresults.to_table(), Table) assert isinstance(dalresults.to_qtable(), QTable) assert len(dalresults) == len(dalresults.to_table()) assert len(dalresults) == len(dalresults.to_qtable()) def test_id_over_name(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert isinstance(dalresults['_1'], np.ndarray) assert isinstance(dalresults['_2'], np.ndarray) table = dalresults.to_table() with pytest.raises(KeyError): assert table['_1'] with pytest.raises(KeyError): assert table['_2'] def test_nosuchcolumn(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') with pytest.raises(KeyError): dalresults['nosuchcolumn'] with pytest.raises(KeyError): dalresults.getdesc('nosuchcolumn') def test_columnaliases(self): dalresults = DALResults.from_result_url( 'http://example.com/query/basic') assert dalresults.fieldname_with_ucd('foo') == '1' assert dalresults.fieldname_with_ucd('bar') == '1' assert dalresults.fieldname_with_utype('foobar') == '2' assert dalresults.fieldname_with_ucd('baz') is None assert dalresults.fieldname_with_utype('foobaz') is None def test_check_overflow_warning_no_maxrec(self): with pytest.warns(DALOverflowWarning): dalresults = DALResults.from_result_url('http://example.com/query/overflowstatus') with pytest.warns(DALOverflowWarning, match="Results truncated due to server limits"): dalresults.check_overflow_warning() def test_check_overflow_warning_exact_match(self): with pytest.warns(DALOverflowWarning): dalresults = DALResults.from_result_url('http://example.com/query/overflowstatus') with warnings.catch_warnings(): warnings.simplefilter("error") dalresults.check_overflow_warning(client_set_maxrec=3) def test_check_overflow_warning_service_truncation(self): with pytest.warns(DALOverflowWarning): dalresults = DALResults.from_result_url('http://example.com/query/overflowstatus') with pytest.warns(DALOverflowWarning, match="Results truncated at 3 records by service limits"): dalresults.check_overflow_warning(client_set_maxrec=1000) def test_check_overflow_warning_uses_stored_maxrec(self): with pytest.warns(DALOverflowWarning): dalresults = DALResults.from_result_url('http://example.com/query/overflowstatus') dalresults._client_set_maxrec = 1000 with pytest.warns(DALOverflowWarning, match="Results truncated at 3 records by service limits"): dalresults.check_overflow_warning() def test_check_overflow_warning_parameter_overrides_stored(self): with pytest.warns(DALOverflowWarning): dalresults = DALResults.from_result_url('http://example.com/query/overflowstatus') dalresults._client_set_maxrec = 1000 with warnings.catch_warnings(): warnings.simplefilter("error") dalresults.check_overflow_warning(client_set_maxrec=3) def test_check_overflow_warning_no_overflow_status(self): dalresults = DALResults.from_result_url('http://example.com/query/basic') with warnings.catch_warnings(): warnings.simplefilter("error") dalresults.check_overflow_warning(client_set_maxrec=1000) def test_handle_overflow_warning_default_behavior(self): votable = votableparse(BytesIO(get_pkg_data_contents('data/query/overflowstatus.xml'))) with pytest.warns(DALOverflowWarning, match="Result set limited by user- or server-supplied MAXREC parameter."): _ = DALResults(votable, url='http://test.com') def test_stored_client_set_maxrec_initialization(self): votable = votableparse(BytesIO(get_pkg_data_contents('data/query/basic.xml'))) result = DALResults(votable, url='http://test.com', client_set_maxrec=100) assert result._client_set_maxrec == 100 result2 = DALResults(votable, url='http://test.com') assert result2._client_set_maxrec is None @pytest.mark.filterwarnings('ignore::astropy.io.votable.exceptions.W03') @pytest.mark.filterwarnings('ignore::astropy.io.votable.exceptions.W06') @pytest.mark.usefixtures('register_mocks') class TestRecord: def test_itemaccess(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] assert record['1'] == 23 truth = 'Illuminatus' assert record['2'] == truth assert record['_1'] == 23 assert record['_2'] == truth def test_nosuchcolumn(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] with pytest.raises(KeyError): record['nosuchcolumn'] def test_iter(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] record = list(iter(record)) assert record[0] == '1' assert record[1] == '2' def test_len(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] assert len(record) == 2 def test_repr(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] truth = 'Illuminatus' assert repr(record) == repr(('23', truth)) def test_get(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] assert record.get('2', decode=True) == 'Illuminatus' def test_columnaliases(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] assert record.getbyucd('foo') == 23 assert record.getbyucd('bar') == 23 truth = 'Illuminatus' assert record.getbyutype('foobar') == truth record.getbyucd('baz') is None record.getbyutype('foobaz') is None def test_datasets(self): records = DALResults.from_result_url( 'http://example.com/query/dataset') record = records[0] assert record.getdataurl() == 'http://example.com/querydata/image.fits' dataset = record.getdataset() HDUList.fromstring(dataset.read()) def test_nodataset(self): record = DALResults.from_result_url( 'http://example.com/query/basic')[0] assert record.getdataurl() is None with pytest.raises(KeyError): record.getdataset().read() def test_cachedataset(self, tmpdir): tmpdir = str(tmpdir) record = DALResults.from_result_url( 'http://example.com/query/dataset')[0] record.cachedataset(dir=tmpdir) assert "dataset.dat" in listdir(tmpdir) class TestUpload: bytesio = BytesIO(get_pkg_data_contents('data/query/dataset.xml', encoding='binary')) filename = get_pkg_data_filename('data/query/dataset.xml') astropy_table = Table.read(filename) records = DALResults(votableparse(filename)) @pytest.mark.parametrize('content', (bytesio, filename, astropy_table, records)) def test_upload(self, content): upload = Upload('up', content) fileobj = upload.fileobj() assert fileobj fileobj.close() def test_upload_nonfileobj(self): upload = Upload('up', 'some text that is not a resource') with pytest.raises(ValueError): upload.fileobj() astropy-pyvo-f0fdda3/pyvo/dal/tests/test_scs.py000066400000000000000000000026351521254414300220660ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.scs """ from functools import partial import re import pytest from pyvo.dal.scs import search, SCSService from astropy.utils.data import get_pkg_data_contents get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') scs_re = re.compile('http://example.com/scs.*') @pytest.fixture() def scs(mocker): def callback(request, context): return get_pkg_data_contents('data/scs/result.xml') with mocker.register_uri( 'GET', scs_re, content=callback ) as matcher: yield matcher @pytest.mark.usefixtures('scs') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_search(): results = search('http://example.com/scs', pos=(78, 2), radius=0.5) assert len(results) == 1273 class TestSCSService: def test_init(self): service = SCSService('http://example.com/scs', capability_description="SCS") assert service.baseurl == 'http://example.com/scs' assert service.capability_description == "SCS" @pytest.mark.usefixtures('scs') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_search(self): service = SCSService('http://example.com/scs') results = service.search(pos=(78, 2), radius=0.5) assert len(results) == 1273 astropy-pyvo-f0fdda3/pyvo/dal/tests/test_sia.py000066400000000000000000000074771521254414300220630ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.sia """ from functools import partial import os import re import pytest from pyvo.dal.sia import search, SIAService, SIAQuery from astropy.io.fits import HDUList from astropy.coordinates import SkyCoord from astropy.utils.data import get_pkg_data_contents get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') sia_re = re.compile('http://example.com/sia.*') @pytest.fixture() def register_mocks(mocker): with mocker.register_uri( 'GET', 'http://example.com/querydata/image.fits', content=get_pkg_data_contents('data/querydata/image.fits') ) as matcher: yield matcher @pytest.fixture() def sia(mocker): with mocker.register_uri( 'GET', sia_re, content=get_pkg_data_contents('data/sia/dataset.xml') ) as matcher: yield matcher def _test_result(result): assert result.getdataurl() == 'http://example.com/querydata/image.fits' assert isinstance(result.getdataobj(), HDUList) assert result.filesize == 153280 @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('register_mocks') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.parametrize("position", ((288, 15), SkyCoord(288, 15, unit="deg"))) @pytest.mark.parametrize("format", ("IMAGE/JPEG", "all")) def test_search(position, format): results = search('http://example.com/sia', pos=position, format=format) result = results[0] _test_result(result) class TestSIAService: @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('register_mocks') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W49") def test_search(self): description = "A SIA service." url = 'http://example.com/sia' service = SIAService(url, capability_description=description) assert service.baseurl == url assert service.capability_description == description results = service.search(pos=(288, 15)) result = results[0] _test_result(result) assert results[1].dateobs is None @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('register_mocks') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W49") def test_formatter(self): service = SIAQuery('http://example.com/sia') service.format = "image" assert service["FORMAT"] == "image" service.format = "all" assert service["FORMAT"] == "ALL" service.format = "Graphic-png" assert service["FORMAT"] == "GRAPHIC-png" service.format = "Unsupported" assert service["FORMAT"] == "Unsupported" @pytest.mark.usefixtures('sia') class TestNameMaking: def test_slash_replace(self): res = SIAService('http://example.com/sia').search(pos=(288, 15)) res["imageTitle"][0] = "ogsa/dai output" assert res[0].make_dataset_filename() == os.path.join(".", "ogsa_dai_output.fits") def test_default_for_broken_media_type(self): res = SIAService('http://example.com/sia').search(pos=(288, 15)) res["mime"][0] = "application/x-youcannotknowthis" assert res[0].make_dataset_filename() == os.path.join(".", "Test_Observation.dat") def test_default_media_type_adaption(self): res = SIAService('http://example.com/sia').search(pos=(288, 15)) res["mime"][0] = "image/png" assert res[0].make_dataset_filename() == os.path.join(".", "Test_Observation.png") astropy-pyvo-f0fdda3/pyvo/dal/tests/test_sia2.py000066400000000000000000000311571521254414300221350ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.sia """ from functools import partial from pathlib import Path import re import requests_mock import warnings import pytest from pyvo.dal.sia2 import search, SIA2Service, SIA2Query, SIAService, SIAQuery from pyvo.dal.exceptions import DALServiceError, DALOverflowWarning import astropy.units as u from astropy.coordinates import SkyCoord from astropy.utils.data import get_pkg_data_contents from astropy.utils.exceptions import AstropyDeprecationWarning get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') sia_re = re.compile('https://example.com/sia/v2query*') capabilities_url = 'https://example.com/sia/capabilities' @pytest.fixture() def sia(mocker): with mocker.register_uri( 'GET', sia_re, content=get_pkg_data_contents('data/sia2/dataset.xml') ) as matcher: yield matcher @pytest.fixture() def capabilities(mocker): with mocker.register_uri( 'GET', capabilities_url, content=get_pkg_data_contents('data/sia2/capabilities.xml') ) as matcher: yield matcher def _test_result(record): assert record.obs_collection == 'TEST' assert record.obs_id == 'TEST-DATASET' assert record.instrument_name == 'TEST-INSTR' assert record.facility_name == 'TEST-1.6m' @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('capabilities') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_search(): results = search('https://example.com/sia', pos=(33.3 * u.deg, 4.2 * u.deg, 0.0166 * u.deg)) result = results[0] _test_result(result) class TestSIA2Service: def test_capabilities(self): # this tests the SIA2 capabilities with various combinations: with requests_mock.Mocker() as cm: cm.get('https://example.com/sia/capabilities', content=get_pkg_data_contents('data/sia2/capabilities.xml')) cm.get('https://example.com/sia-basicauth/capabilities', content=get_pkg_data_contents( 'data/sia2/capabilities-basicauth.xml')) cm.get('https://example.com/sia-newformat/capabilities', content=get_pkg_data_contents( 'data/sia2/capabilities-newformat.xml')) cm.get('https://example.com/sia-priv/capabilities', content=get_pkg_data_contents( 'data/sia2/capabilities-priv.xml')), cm.get('https://example.com/sia/myquery/capabilities', content=get_pkg_data_contents('data/sia2/capabilities.xml')) # multiple interfaces with single security method each and # anonymous access. service = SIA2Service('https://example.com/sia') assert service.query_ep == 'https://example.com/sia/v2query' # one interface with multiple security methods service = SIA2Service('https://example.com/sia-newformat') assert service.query_ep == 'https://example.com/sia/v2query' # multiple interfaces with single security method each (no anon) service = SIA2Service('https://example.com/sia-priv') assert service.query_ep == 'https://example.com/sia/v2query' # any access point will be valid even when it contains query params service = SIA2Service('https://example.com/sia/myquery?param=1') assert service.query_ep == 'https://example.com/sia/v2query' # capabilities checking is bypassed all together with the # check_baseurl=False flag service = SIA2Service('https://example.com/sia/myquery?param=1&', check_baseurl=False) assert service.query_ep == 'https://example.com/sia/myquery?param=1' POSITIONS = [(2, 4, 0.0166 * u.deg), (12, 12.5, 34, 36), (12.0 * u.deg, 34.0 * u.deg, 14.0 * u.deg, 35.0 * u.deg, 14.0 * u.deg, 36.0 * u.deg, 12.0 * u.deg, 35.0 * u.deg), (SkyCoord(2, 4, unit='deg'), 0.166 * u.deg)] ERR_POSITIONS = [(SkyCoord(2, 4, unit='deg'), "radius should be provided in the pos tuple"), ((1, 2), "a 2-length pos should be a coordinate and a radius")] @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('capabilities') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W49") @pytest.mark.parametrize("position", POSITIONS) def test_search_scalar(self, position): service = SIA2Service('https://example.com/sia') results = service.search(pos=position) result = results[0] _test_result(result) @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('capabilities') @pytest.mark.parametrize(("position", "expected_errmsg"), ERR_POSITIONS) def test_search_scalar_errors(self, position, expected_errmsg): service = SIA2Service('https://example.com/sia') with pytest.raises(ValueError, match=expected_errmsg): service.search(pos=position) @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('capabilities') def test_search_vector(self, pos=POSITIONS): service = SIA2Service('https://example.com/sia') results = service.search(pos=pos) result = results[0] _test_result(result) @pytest.mark.usefixtures('sia') @pytest.mark.usefixtures('capabilities') def test_search_deprecation(self, pos=POSITIONS): # test the deprecation with pytest.warns(AstropyDeprecationWarning): deprecated_service = SIAService('https://example.com/sia') deprecated_results = deprecated_service.search(pos=pos) result = deprecated_results[0] _test_result(result) class TestSIA2Query(): def test_query(self): query = SIA2Query('someurl') query.field_of_view.add((10, 20)) assert query['FOV'] == ['10.0 20.0'] query.field_of_view.add((1 * u.rad, 60)) assert query['FOV'] == ['10.0 20.0', '57.29577951308232 60.0'] query.spatial_resolution.add((1 * u.arcsec, 2)) assert query['SPATRES'] == ['1.0 2.0'] query.spectral_resolving_power.add((3, 5)) assert query['SPECRP'] == ['3 5'] query.exptime.add((25, 50)) assert query['EXPTIME'] == ['25.0 50.0'] query.timeres.add((1, 3)) assert query['TIMERES'] == ['1.0 3.0'] query.publisher_did.add('ID1') query.publisher_did.add('ID2') assert query['ID'] == ['ID1', 'ID2'] query.facility.add('TEL1') assert query['FACILITY'] == ['TEL1'] query.collection.add('ABC') query.collection.add('EFG') assert query['COLLECTION'] == ['ABC', 'EFG'] query.instrument.add('INST1') assert query['INSTRUMENT'] == ['INST1'] query.data_type.add('TYPEA') assert query['DPTYPE'] == ['TYPEA'] query.calib_level.add(0) query.calib_level.add(1) assert query['CALIB'] == ['0', '1'] query.target_name.add('TARGET1') assert query['TARGET'] == ['TARGET1'] query.res_format.add('pdf') assert query['FORMAT'] == ['pdf'] query.maxrec = 1000 assert query['MAXREC'] == '1000' query = SIA2Query('someurl', custom_param=23) assert query['custom_param'] == ['23'] query['custom_param'].append('-Inf 0') assert query['custom_param'] == ['23', '-Inf 0'] query = SIA2Query('someurl', custom_param=[('-Inf', 0), (2, '+Inf')]) assert query['custom_param'] == ['-Inf 0', '2 +Inf'] with pytest.warns(AstropyDeprecationWarning): deprecated_query = SIAQuery('someurl') deprecated_query.field_of_view.add((10, 20)) assert deprecated_query['FOV'] == ['10.0 20.0'] def test_variable_deprecation(): # Test this while we are in the deprecation period, as the variable is durectly # used at least by astroquery.alma with pytest.warns(AstropyDeprecationWarning): from pyvo.dal.sia2 import SIA_PARAMETERS_DESC assert SIA_PARAMETERS_DESC def test_none_standardid_capability(): """Test that SIA2Service handles capabilities with None standardID.""" # Mock a capabilities response with a None standardID with requests_mock.Mocker() as m: # Mock the capabilities endpoint m.get('http://example.com/sia/capabilities', content=b''' http://example.com/sia/query http://example.com/sia/query ''') # This should not raise an AttributeError sia2_service = SIA2Service('http://example.com/sia') # Basic verification that the service was created successfully assert sia2_service is not None assert sia2_service.query_ep is not None def test_url_is_not_sia2(): # with capabilities from an other service type, we raise an error with open(Path(__file__).parent / "data/tap/capabilities.xml", "rb") as f: with requests_mock.Mocker() as mocker: mocker.get("http://example.com/sia/capabilities", content=f.read()) with pytest.raises(DALServiceError, match="This URL does not seem to correspond to an " "SIA2 service."): SIA2Service('http://example.com/sia') @pytest.fixture() def sia2_overflow_fixture(mocker): """Mock SIA2 service that returns overflow status with exactly 10 records""" def callback(request, context): votable_content = ''' Result truncated ''' + ''.join( f'' for i in range(10)) + '''
TESTobs{i}TESTTEST
''' return votable_content.encode('utf-8') with mocker.register_uri( 'GET', 'https://example.com/sia/capabilities', content=get_pkg_data_contents('data/sia2/capabilities.xml') ): with mocker.register_uri( 'GET', sia_re, content=callback ): yield mocker @pytest.mark.usefixtures('sia2_overflow_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") class TestSIA2OverflowWarnings: """Test SIA2 overflow warning behavior""" def test_no_maxrec_overflow_warning(self): service = SIA2Service('https://example.com/sia') with pytest.warns(DALOverflowWarning, match="Results truncated due to server limits"): results = service.search(pos=(33.3, 4.2, 0.1)) assert len(results) == 10 def test_maxrec_exact_match_no_warning(self): service = SIA2Service('https://example.com/sia') with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") results = service.search(pos=(33.3, 4.2, 0.1), maxrec=10) overflow_warnings = [warning for warning in w if issubclass(warning.category, DALOverflowWarning)] assert len(overflow_warnings) == 0, f"Unexpected overflow warnings: {overflow_warnings}" assert len(results) == 10 def test_maxrec_service_truncation_warning(self): service = SIA2Service('https://example.com/sia') with pytest.warns(DALOverflowWarning, match=r"Results truncated at 10 records by service limits" r".*you requested maxrec=100"): results = service.search(pos=(33.3, 4.2, 0.1), maxrec=100) assert len(results) == 10 astropy-pyvo-f0fdda3/pyvo/dal/tests/test_sia2_remote.py000066400000000000000000000221511521254414300235020ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.sia2 against remote services """ import pytest import astropy.units as u from astropy.utils.exceptions import AstropyDeprecationWarning from pyvo.dal.sia2 import search, SIA2Service from pyvo.dal.adhoc import DatalinkResults from pyvo import regsearch CADC_SIA_URL = 'https://ws.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/sia' @pytest.mark.remote_data class TestSIACadc(): # Tests the SIA2 client against the CADC SIA service def test_service(self): cadc = SIA2Service(baseurl=CADC_SIA_URL) with pytest.raises(AstropyDeprecationWarning): assert cadc.availability with pytest.raises(AstropyDeprecationWarning): assert cadc.availability.available with pytest.raises(AstropyDeprecationWarning): assert cadc.availability.notes with pytest.raises(AstropyDeprecationWarning): assert cadc.availability.notes[0] == 'service is accepting queries' assert cadc.capabilities @pytest.mark.xfail(reason="https://github.com/astropy/pyvo/issues/361") @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_datalink_batch(self): # Maximum batch size in CADC SIA is around 25 # Test whether multiple batches can be retrieved results = search(CADC_SIA_URL, pos=(2.8425, 74.4846, 10), maxrec=55) ids = [] for i in results.iter_datalinks(): assert i.to_table()[0]['ID'] not in ids ids.append(i.to_table()[0]['ID']) assert len(ids) == 55 @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_pos(self): results = search(CADC_SIA_URL, pos=(2.8425, 74.4846, 0.001)) assert len(results) > 10 # check that results are datalink assert isinstance(results[0].getdataobj(), DatalinkResults) # limit results to 5 to expedite tests results = search(CADC_SIA_URL, pos=(2.8425, 74.4846, 0.001), maxrec=5) assert len(results) == 5 # check attributes of a record record = results[0] record.dataproduct_type record.dataproduct_subtype record.calib_level # TARGET INFO record.target_name record.target_class # DATA DESCRIPTION record.obs_id record.obs_title record.obs_collection record.obs_create_date record.obs_creator_name record.obs_creator_did # CURATION INFORMATION record.obs_release_date record.obs_publisher_did record.publisher_id record.bib_reference record.data_rights # ACCESS INFORMATION record.access_url record.access_format record.access_estsize # SPATIAL CHARACTERISATION record.s_ra record.s_dec record.s_fov record.s_region record.s_resolution record.s_xel1 record.s_xel2 record.s_ucd record.s_unit record.s_resolution_min record.s_resolution_max record.s_calib_status record.s_stat_error record.s_pixel_scale # TIME CHARACTERISATION record.t_xel record.t_ref_pos record.t_min record.t_max record.t_exptime record.t_resolution record.t_calib_status record.t_stat_error # SPECTRAL CHARACTERISATION record.em_xel record.em_ucd record.em_unit record.em_calib_status record.em_min record.em_max record.em_res_power record.em_res_power_min record.em_res_power_max record.em_resolution record.em_stat_error # OBSERVABLE AXIS record.o_ucd record.o_unit record.o_calib_status record.o_stat_error # POLARIZATION CHARACTERISATION record.pol_xel record.pol_states # PROVENANCE record.instrument_name record.facility_name record.proposal_id @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_band(self): results = search(CADC_SIA_URL, band=(0.0002, 0.0003), maxrec=5) # TODO - correctness assert len(results) == 5 @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_time(self): results = search(CADC_SIA_URL, time=('2002-01-01T00:00:00.00', '2002-01-02T00:00:00.00'), maxrec=5) assert len(results) == 5 @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_pol(self): results = search(CADC_SIA_URL, pol=['YY', 'U'], maxrec=5) assert len(results) == 5 for rr in results: assert 'YY' in rr.pol_states or 'U' in rr.pol_states @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_fov(self): results = search(CADC_SIA_URL, field_of_view=(10, 20), collection='TESS', maxrec=5) assert len(results) == 5 # how to test values @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_spatial_res(self): results = search(CADC_SIA_URL, spatial_resolution=(1, 2), collection='MACHO', maxrec=5) assert len(results) == 5 for rr in results: assert 1 * u.arcsec <= rr.s_resolution <= 2 * u.arcsec @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_spec_resp(self): results = search(CADC_SIA_URL, spectral_resolving_power=(1, 2), collection='NEOSSAT', maxrec=5) assert len(results) == 5 for rr in results: assert 1 <= rr.em_res_power <= 2 @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_exptime(self): results = search(CADC_SIA_URL, exptime=(1, 2), collection='GEMINI', maxrec=5) assert len(results) == 5 for rr in results: assert 1 * u.second <= rr.t_exptime <= 2 * u.second @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_timeres(self): results = search(CADC_SIA_URL, timeres=(1, 2), maxrec=5) assert len(results) == 5 for rr in results: assert 1 * u.second <= rr.t_resolution <= 2 * u.second def test_publisher_did(self): ids = ['ivo://cadc.nrc.ca/CFHT?447231/447231o', 'ivo://cadc.nrc.ca/CFHT?447232/447232o'] results = search(CADC_SIA_URL, publisher_did=ids) assert len(results) == 2 assert results[0].obs_publisher_did in ids assert results[1].obs_publisher_did in ids @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_facility(self): results = search(CADC_SIA_URL, facility='JCMT', maxrec=5) assert len(results) == 5 for rr in results: assert rr.facility_name == 'JCMT' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_collection(self): results = search(CADC_SIA_URL, collection='IRIS', maxrec=5) assert len(results) == 5 for rr in results: assert rr.obs_collection == 'IRIS' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_instrument(self): results = search(CADC_SIA_URL, instrument='IRAS', maxrec=5) assert len(results) == 5 for rr in results: assert rr.instrument_name == 'IRAS' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_dataproduct_type(self): results = search(CADC_SIA_URL, data_type='image', maxrec=5) assert len(results) == 5 for rr in results: assert rr.dataproduct_type == 'image' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_target_name(self): results = search(CADC_SIA_URL, target_name='BarnardStar', collection='NEOSSAT', maxrec=5) assert len(results) == 5 for rr in results: assert rr.target_name == 'BarnardStar' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_res_format(self): results = search( CADC_SIA_URL, res_format='application/x-votable+xml;content=datalink', maxrec=5) assert len(results) == 5 for rr in results: assert rr.access_format == \ 'application/x-votable+xml;content=datalink' @pytest.mark.filterwarnings("ignore::pyvo.dal.exceptions.DALOverflowWarning") def test_reg_sia2(self): image_services = regsearch(servicetype='sia2') irsa_seip = \ [s for s in image_services if 'irsa' in s.ivoid and 'seip' in s.ivoid][0] result = irsa_seip.search(pos=(31.8425, 77.4846, 0.1), maxrec=1) assert len(result) == 1 astropy-pyvo-f0fdda3/pyvo/dal/tests/test_sla.py000066400000000000000000000032051521254414300220470ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.sla """ from functools import partial import re import pytest from pyvo.dal.sla import search, SLAService from astropy.utils.data import get_pkg_data_contents get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') sla_re = re.compile('http://example.com/sla.*') @pytest.fixture() def sla(mocker): with mocker.register_uri( 'GET', sla_re, content=get_pkg_data_contents('data/sla/dataset.xml') ) as matcher: yield matcher @pytest.mark.usefixtures('sla') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W49") def test_search(): results = search('http://example.com/sla', wavelength=(7.6e-6, 1.e-5)) assert len(results) == 21 class TestSLAService: def test_service_init(self): url = "http://test" description = "A SLA service." service = SLAService(url, capability_description=description) assert service.baseurl == url assert service.capability_description == description assert str(service) == f"SLAService(baseurl : '{url}', description : '{description}')" @pytest.mark.usefixtures('sla') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W49") def test_search(self): service = SLAService('http://example.com/sla') results = service.search(wavelength=(7.6e-6, 1.e-5)) assert len(results) == 21 astropy-pyvo-f0fdda3/pyvo/dal/tests/test_ssa.py000066400000000000000000000025221521254414300220570ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.ssa """ from functools import partial import re import pytest from pyvo.dal.ssa import search, SSAService from astropy.utils.data import get_pkg_data_contents get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') ssa_re = re.compile('http://example.com/ssa.*') @pytest.fixture() def ssa(mocker): def callback(request, context): return get_pkg_data_contents('data/ssa/result.xml') with mocker.register_uri( 'GET', ssa_re, content=callback ) as matcher: yield matcher @pytest.mark.usefixtures('ssa') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") def test_search(): results = search('http://example.com/ssa', pos=(0.0, 0.0), diameter=1.0) assert len(results) == 36 class TestSSAService: @pytest.mark.usefixtures('ssa') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W42") def test_search(self): service = SSAService('http://example.com/ssa') assert str(service) == "SSAService(baseurl : 'http://example.com/ssa', description : 'None')" results = service.search(pos=(0.0, 0.0), diameter=1.0) assert len(results) == 36 assert results[35].dateobs is None astropy-pyvo-f0fdda3/pyvo/dal/tests/test_tap.py000066400000000000000000002142341521254414300220620ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.dal.tap """ import warnings from copy import deepcopy from functools import partial from contextlib import ExitStack import datetime import re from io import BytesIO, StringIO from unittest.mock import Mock from urllib.parse import parse_qsl import tempfile import pytest import requests import requests_mock from pyvo import dal from pyvo.dal.tap import escape, search, AsyncTAPJob, TAPService from pyvo.dal import DALQueryError, DALServiceError, DALOverflowWarning, DALRateLimitError from pyvo.io.uws import JobFile from pyvo.io.uws.tree import Parameter, Result, ErrorSummary, Message from pyvo.auth.authsession import AuthSession from pyvo.io.vosi.exceptions import VOSIError from pyvo.utils import prototype from astropy.time import Time, TimeDelta from astropy.utils.data import get_pkg_data_contents get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') job_re_path_full = re.compile('^http://example.com/tap/async/([0-9]+)') job_re_path = re.compile('^/tap/async/([0-9]+)') job_re_phase_full = re.compile('^http://example.com/tap/async/([0-9]+)/phase') job_re_parameters_full = re.compile( '^http://example.com/tap/async/([0-9]+)/parameters') job_re_result_full = re.compile( '^http://example.com/tap/async/([0-9]+)/results/result') def _test_image_results(results): assert len(results) == 10 @pytest.fixture() def sync_fixture(mocker): def callback(request, context): return get_pkg_data_contents('data/tap/obscore-image.xml') with mocker.register_uri( 'POST', 'http://example.com/tap/sync', content=callback ) as matcher: yield matcher @pytest.fixture() def create_fixture(mocker): def match_request(request): data = request.text.read() if b'VOSITable' in data: assert request.headers['Content-Type'] == 'text/xml', 'Wrong file format' elif b'VOTable' in data: assert request.headers['Content-Type'] == \ 'application/x-votable+xml', 'Wrong file format' else: assert False, 'BUG' return True with mocker.register_uri( 'PUT', 'https://example.com/tap/tables/abc', additional_matcher=match_request, status_code=201 ) as matcher: yield matcher @pytest.fixture() def delete_fixture(mocker): with mocker.register_uri( 'DELETE', 'https://example.com/tap/tables/abc', status_code=200, ) as matcher: yield matcher @pytest.fixture() def load_fixture(mocker): def match_request(request): data = request.text.read() if b',' in data: assert request.headers['Content-Type'] == 'text/csv', 'Wrong file format' elif b'\t' in data: assert request.headers['Content-Type'] == \ 'text/tab-separated-values', 'Wrong file format' elif b'FITSTable' in data: assert request.headers['Content-Type'] == \ 'application/fits', 'Wrong file format' else: assert False, 'BUG' return True with mocker.register_uri( 'POST', 'https://example.com/tap/load/abc', additional_matcher=match_request, status_code=200, ) as matcher: yield matcher def get_index_job(phase): return """ v3njuz4k1ebpdb5q user {} 2021-10-29T17:34:19.638 2021-10-28T17:34:19.638 14400 2021-11-04T17:34:19.638 article cadcauthtest1.pyvoTestTable true """.format(phase).encode('utf-8') @pytest.fixture() def overflow_fixture(mocker): """Mock TAP service that returns overflow status with exactly 10 records""" def callback(request, context): votable_content = ''' Result truncated due to MAXREC ''' + ''.join(f'' for i in range(10)) + '''
{i}test{i}
''' return votable_content.encode('utf-8') with mocker.register_uri( 'POST', 'http://example.com/tap/sync', content=callback ) as matcher: yield matcher class MockAsyncTAPServer: def __init__(self): self._jobs = dict() def validator(self, request): data = dict(parse_qsl(request.body)) if 'QUERY' in data: if "select" not in data['QUERY'].casefold(): raise DALQueryError("Missing select") def use(self, mocker): with ExitStack() as stack: matchers = { 'create': stack.enter_context(mocker.register_uri( 'POST', 'http://example.com/tap/async', content=self.create )), 'job': stack.enter_context(mocker.register_uri( requests_mock.ANY, job_re_path_full, content=self.job )), 'phase': stack.enter_context(mocker.register_uri( requests_mock.ANY, job_re_phase_full, content=self.phase )), 'parameters': stack.enter_context(mocker.register_uri( requests_mock.ANY, job_re_parameters_full, content=self.parameters )), 'result': stack.enter_context(mocker.register_uri( 'GET', job_re_result_full, content=self.result )), 'get_job': stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/tap/async/111', content=self.get_job )), 'get_job_list': stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/tap/async', content=self.get_job_list )) } yield matchers def create(self, request, context): if request.method == 'GET': return self.get_job_list(request, context) self.validator(request) newid = max(list(self._jobs.keys()) or [0]) + 1 data = dict(parse_qsl(request.body)) job = JobFile() job.version = "1.1" job.jobid = newid if 'test_erroneus_submit.non_existent' in request.text: job.phase = 'ERROR' job._errorsummary = ErrorSummary() job.errorsummary.message = Message() job.errorsummary.message.content =\ 'test_erroneus_submit.non_existent not found' else: job.phase = 'PENDING' job.quote = Time.now() + TimeDelta(1, format='sec') job.creationtime = Time.now() job.executionduration = TimeDelta(3600, format='sec') job.destruction = Time.now() + TimeDelta(3600, format='sec') for key, value in data.items(): param = Parameter(id=key) param.content = value job.parameters.append(param) context.status_code = 303 context.reason = 'See other' context.headers['Location'] = ( f'http://example.com/tap/async/{newid}') self._jobs[newid] = job def job(self, request, context): self.validator(request) jobid = int(job_re_path.match(request.path).group(1)) if request.method == 'GET': job = self._jobs[jobid] io = BytesIO() job.to_xml(io) return io.getvalue() elif request.method == 'POST': data = dict(parse_qsl(request.body)) action = data.get('ACTION') if action == 'DELETE': del self._jobs[jobid] def phase(self, request, context): self.validator(request) jobid = int(job_re_path.match(request.path).group(1)) if request.method == 'GET': phase = self._jobs[jobid].phase return phase elif request.method == 'POST': newphase = request.body.split('=')[-1] job = self._jobs[jobid] result = get_pkg_data_contents('data/tap/obscore-image.xml') if newphase == 'RUN': newphase = 'COMPLETED' result = Result(**{ 'id': 'result', 'size': len(result), 'mime-type': 'application/x-votable+xml', 'xlink:href': ( 'http://example.com/tap/async/{}/results/result' ).format(jobid) }) try: job.results[0] = result except (IndexError, TypeError): job.results.append(result) job.phase = newphase def parameters(self, request, context): self.validator(request) jobid = int(job_re_path.match(request.path).group(1)) job = self._jobs[jobid] if request.method == 'GET': pass elif request.method == 'POST': data = dict(parse_qsl(request.body)) if 'QUERY' in data: assert data['QUERY'] == 'SELECT TOP 42 * FROM ivoa.obsCore' for param in job.parameters: if param.id_.lower() == 'query': param.content = data['QUERY'] if 'UPLOAD' in data: for param in job.parameters: if param.id_.lower() == 'upload': uploads1 = {data[0]: data[1] for data in [ data.split(',') for data in data['UPLOAD'].split(';') ]} uploads2 = {data[0]: data[1] for data in [ data.split(',') for data in param.content.split(';') ]} uploads1.update(uploads2) param.content = ';'.join([ f'{key}={value}' for key, value in uploads1.items() ]) def result(self, request, context): self.validator(request) return get_pkg_data_contents('data/tap/obscore-image.xml') def get_job(self, request, context): self.validator(request) jobid = int(job_re_path.match(request.path).group(1)) job = JobFile() job.jobid = jobid job.phase = 'EXECUTING' job.ownerid = '222' job.creationtime = Time.now() io = BytesIO() job.to_xml(io) return io.getvalue() def _get_jobref_rep(self, jobid, phase, runid, ownerid, creation_time): doc = (' \n' ' {}\n' ' {}\n' ' {}\n' ' {}\n' ' \n') return doc.format(jobid, phase, runid, ownerid, creation_time) def get_job_list(self, request, context): self.validator(request) fields = parse_qsl(request.query) phases = [] last = None after = None for arg, val in fields: if arg == 'PHASE': phases.append(val) elif arg == 'LAST': last = int(val) elif arg == 'AFTER': after = val doc = '\n' +\ '\n' if phases: doc += self._get_jobref_rep('abc1', 'EXECUTING', 'def1', '21', '2018-12-20T00:23:15.79') doc += self._get_jobref_rep('abc2', 'EXECUTING', 'def2', '21', '2018-12-20T00:23:15.79') if after: doc += self._get_jobref_rep('abc3', 'EXECUTING', 'def3', '21', '2018-12-20T00:23:15.79') if last: doc += self._get_jobref_rep('abc4', 'EXECUTING', 'def4', '21', '2018-12-20T00:23:15.79') doc += self._get_jobref_rep('abc5', 'EXECUTING', 'def5', '21', '2018-12-20T00:23:15.79') doc += self._get_jobref_rep('abc6', 'EXECUTING', 'def6', '21', '2018-12-20T00:23:15.79') doc += '' return doc.encode('UTF-8') @pytest.fixture() def async_fixture(mocker): mock_server = MockAsyncTAPServer() yield from mock_server.use(mocker) @pytest.fixture() def async_fixture_with_timeout(mocker): mock_server = MockAsyncTAPServer() yield from mock_server.use(mocker) @pytest.fixture() def tables(mocker): def callback_tables(request, context): return get_pkg_data_contents('data/tap/tables.xml') def callback_table1(request, context): return get_pkg_data_contents('data/tap/lazy-table1.xml') def callback_table2(request, context): return get_pkg_data_contents('data/tap/lazy-table2.xml') with ExitStack() as stack: matchers = { 'tables': stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/tap/tables', content=callback_tables )), 'table1': stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/tap/tables/test.table1', content=callback_table1 )), 'table2': stack.enter_context(mocker.register_uri( 'GET', 'http://example.com/tap/tables/test.table2', content=callback_table2 )), } yield matchers @pytest.fixture() def examples(mocker): def callback_examplesXHTML(request, context): uri = f"://{request.netloc}{request.path}" if uri == '://example.com/tap/examples': return get_pkg_data_contents('data/tap/examples.htm') elif uri == '://example.org/obscore-examples.html': return get_pkg_data_contents('data/tap/obscore-examples.html') else: assert False, f"Unexpected examples URI: {uri}" with mocker.register_uri( 'GET', requests_mock.ANY, content=callback_examplesXHTML ) as matcher: yield matcher @pytest.fixture() def capabilities(mocker): def callback(request, context): return get_pkg_data_contents('data/tap/capabilities.xml') with mocker.register_uri( 'GET', 'http://example.com/tap/capabilities', content=callback ) as matcher: yield matcher @pytest.fixture() def tapservice(capabilities): """ preferably use this fixture when you need a generic TAP service; it saves a bit of parsing overhead. (but of course make sure you don't modify it). """ return TAPService('http://example.com/tap') @pytest.mark.usefixtures('capabilities') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") @pytest.mark.filterwarnings("error::pyvo.io.vosi.exceptions.W19") def test_deepcopy_tapservice_with_auth_session(): """ deepcopy must not re-run ElementWithXSIType.__init__ on capabilities. Without that guard, TAPCapRestriction.__init__ runs with standardID=None and raises W19 when capabilities were loaded via AuthSession. """ service = TAPService('http://example.com/tap', session=AuthSession()) copied = deepcopy(service) assert copied is not service assert copied.baseurl == service.baseurl assert copied.capabilities is not service.capabilities orig_tap = service.get_tap_capability() copy_tap = copied.get_tap_capability() assert copy_tap is not orig_tap assert copy_tap.standardid == 'ivo://ivoa.net/std/TAP' assert len(copy_tap.languages) == len(orig_tap.languages) assert copy_tap.languages[0].name == orig_tap.languages[0].name == 'ADQL' def test_escape(): query = 'SELECT * FROM ivoa.obscore WHERE dataproduct_type = {}' query = query.format(escape("'image'")) assert query == ( "SELECT * FROM ivoa.obscore WHERE dataproduct_type = ''image''") @pytest.mark.usefixtures('sync_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_search(): results = search('http://example.com/tap', "SELECT * FROM ivoa.obscore") _test_image_results(results) class TestTAPService: def test_init(self): url = 'http://example.com/tap' description = "An example TAP service." service = TAPService(url, capability_description=description) assert service.baseurl == url assert service.capability_description == description assert str(service) == f"""TAPService(baseurl : '{url}', description : '{description}')""" def _test_tables(self, table1, table2): assert table1.description == 'Lazy Test Table 1' assert table1.title == 'Test table 1' assert table2.description == 'Lazy Test Table 2' assert table2.title == 'Test table 2' @pytest.mark.usefixtures('tables') def test_tables(self): service = TAPService('http://example.com/tap') vositables = service.tables assert list(vositables.keys()) == ['test.table1', 'test.table2'] assert "test.table1" in vositables assert "any.random.stuff" not in vositables table1, table2 = list(vositables) self._test_tables(table1, table2) def _test_examples(self, parsed_examples): assert len(parsed_examples) == 6 assert "SELECT * FROM rosmaster" in parsed_examples[0]['QUERY'] # the last query is from the continuation assert parsed_examples[-1]['QUERY'].startswith( "\nSELECT access_url, t_exptime, t_min FROM ivoa.obscore") @pytest.mark.usefixtures('examples') def test_examples(self): service = TAPService('http://example.com/tap') service_examples = service.examples self._test_examples(service_examples) @pytest.mark.usefixtures('capabilities') def test_maxrec(self): service = TAPService('http://example.com/tap') assert service.maxrec == 20000 @pytest.mark.usefixtures('capabilities') def test_hardlimit(self): service = TAPService('http://example.com/tap') assert service.hardlimit == 10000000 @pytest.mark.usefixtures('capabilities') def test_upload_methods(self): service = TAPService('http://example.com/tap') upload_methods = service.upload_methods assert upload_methods[0].ivo_id == ( 'ivo://ivoa.net/std/TAPRegExt#upload-https') assert upload_methods[1].ivo_id == ( 'ivo://ivoa.net/std/TAPRegExt#upload-ftp') assert upload_methods[2].ivo_id == ( 'ivo://ivoa.net/std/TAPRegExt#upload-inline') assert upload_methods[3].ivo_id == ( 'ivo://ivoa.net/std/TAPRegExt#upload-http') @pytest.mark.usefixtures('sync_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_run_sync(self): service = TAPService('http://example.com/tap') results = service.run_sync("SELECT * FROM ivoa.obscore") _test_image_results(results) @pytest.mark.usefixtures('sync_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_search(self): service = TAPService('http://example.com/tap') results = service.search("SELECT * FROM ivoa.obscore") _test_image_results(results) @pytest.mark.usefixtures('async_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_run_async(self, monkeypatch): service = TAPService('http://example.com/tap') mock_delete = Mock() monkeypatch.setattr(AsyncTAPJob, "delete", mock_delete) results = service.run_async("SELECT * FROM ivoa.obscore", delete=False) _test_image_results(results) # make sure that delete was not called mock_delete.assert_not_called() @pytest.mark.usefixtures('async_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_run_async_on_error(self, monkeypatch): service = TAPService('http://example.com/tap') mock_delete = Mock() monkeypatch.setattr(AsyncTAPJob, "delete", mock_delete) with pytest.raises(DALQueryError): service.run_async("bad query", delete=True) # make sure that the job is deleted even with a bad query mock_delete.assert_called_once() @pytest.mark.usefixtures('async_fixture') def test_submit_job(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") assert job.url == 'http://example.com/tap/async/' + job.job_id assert job.phase == 'PENDING' assert job.execution_duration == TimeDelta(3600, format='sec') assert isinstance(job.destruction, Time) assert isinstance(job.quote, Time) assert job.query == "SELECT * FROM ivoa.obscore" job.run() job.wait() job.delete() @pytest.mark.usefixtures('async_fixture') def test_erroneus_submit_job(self): service = TAPService('http://example.com/tap') job = service.submit_job( "SELECT * FROM test_erroneus_submit.non_existent") with pytest.raises(DALQueryError) as e: job.raise_if_error() assert 'test_erroneus_submit.non_existent not found' in str(e) def test_raise_if_error_uses_cached_phase(self, async_fixture): matchers = async_fixture service = TAPService('http://example.com/tap') job = service.submit_job( "SELECT * FROM test_erroneus_submit.non_existent") call_count_before = matchers["job"].call_count with pytest.raises(DALQueryError): job.raise_if_error() assert call_count_before == matchers["job"].call_count @pytest.mark.usefixtures('async_fixture') def test_submit_job_case(self): """Test using mixed case in the QUERY parameter to a job. DALI requires that query parameter names be case-insensitive, and some TAP servers reflect the input case into the job record, so the TAP client has to be prepared for any case for the QUERY parameter name. """ service = TAPService('http://example.com/tap') # This has to be tested manually, bypassing the normal client layer, # in order to force a mixed-case parameter name. response = service._session.post( "http://example.com/tap/async", data={ "REQUEST": "doQuery", "LANG": "ADQL", "quERy": "SELECT * FROM ivoa.obscore", } ) response.raw.read = partial(response.raw.read, decode_content=True) job = AsyncTAPJob(response.url, session=service._session) assert job.url == 'http://example.com/tap/async/' + job.job_id assert job.query == "SELECT * FROM ivoa.obscore" @pytest.mark.usefixtures('async_fixture') def test_modify_job(self): service = TAPService('http://example.com/tap') job = service.submit_job( "SELECT * FROM ivoa.obscore", uploads={ 'one': 'http://example.com/uploads/one' }) job.query = "SELECT TOP 42 * FROM ivoa.obsCore" job.upload(two='http://example.com/uploads/two') for parameter in job._job.parameters: if parameter.id_ == 'query': assert parameter.content == 'SELECT TOP 42 * FROM ivoa.obsCore' break elif parameter.id_ == 'upload': assert ( 'one=http://example.com/uploads/one' in parameter.content) assert ( 'two=http://example.com/uploads/two' in parameter.content) @pytest.mark.usefixtures('async_fixture') def test_get_job(self): service = TAPService('http://example.com/tap') job = service.get_job('111') assert job.jobid == '111' assert job.phase == 'EXECUTING' assert job.ownerid == '222' @pytest.mark.usefixtures('async_fixture') @pytest.mark.remote_data def test_get_job_list(self): service = TAPService('http://example.com/tap') # server returns: # - 3 jobs for last atribute # - 2 jobs for phase attribute # - 1 job for after attribute # Tests consists in counting the cumulative number of jobs as per # above rules after = datetime.datetime.now(tz=datetime.timezone.utc) assert len(service.get_job_list()) == 0 assert len(service.get_job_list(last=3)) == 3 assert len(service.get_job_list(after='2018-04-25T17:46:01Z')) == 1 assert len(service.get_job_list(phases=['EXECUTING'])) == 2 assert len(service.get_job_list(after=after, phases=['EXECUTING'])) == 3 assert len(service.get_job_list(after='2018-04-25T17:46:01.123Z', last=3)) == 4 assert len(service.get_job_list(phases=['EXECUTING'], last=3)) == 5 assert len(service.get_job_list(phases=['EXECUTING'], last=3, after=datetime.datetime.now(tz=datetime.timezone.utc))) == 6 @pytest.mark.usefixtures('create_fixture') def test_create_table(self): prototype.activate_features('cadc-tb-upload') try: buffer = BytesIO(b'table definition in VOSITable format') service = TAPService('https://example.com/tap') service.create_table(name='abc', definition=buffer) tmpfile = tempfile.NamedTemporaryFile('w+b', delete=False) tmpfile.write(b'table definition in VOTable format here') tmpfile.close() with open(tmpfile.name, 'rb') as f: service.create_table('abc', definition=f, format='VOTable') with pytest.raises(ValueError): service.create_table('abc', definition=buffer, format='Unknown') with pytest.raises(ValueError): service.create_table('abc', definition=None, format='VOSITable') finally: prototype.deactivate_features('cadc-tb-upload') @pytest.mark.usefixtures('delete_fixture') def test_remove_table(self): prototype.activate_features('cadc-tb-upload') try: service = TAPService('https://example.com/tap') service.remove_table(name='abc') finally: prototype.deactivate_features('cadc-tb-upload') @pytest.mark.usefixtures('load_fixture') def test_load_table(self): # csv content in buffer prototype.activate_features('cadc-tb-upload') try: service = TAPService('https://example.com/tap') table_content = BytesIO(b'article,count\nart1,1\nart2,2\nart3,3') service.load_table(name='abc', source=table_content, format='csv') # tsv content in file tmpfile = tempfile.NamedTemporaryFile('w+b', delete=False) tmpfile.write(b'article\tcount\nart1\t1\nart2\t2\nart3\t3') tmpfile.close() with open(tmpfile.name, 'rb') as f: service.load_table('abc', source=f, format='tsv') # FITSTable content in file tmpfile = tempfile.NamedTemporaryFile('w+b', delete=False) tmpfile.write(b'FITSTable content here') tmpfile.close() with open(tmpfile.name, 'rb') as f: service.load_table('abc', source=f, format='FITSTable') with pytest.raises(ValueError): service.load_table('abc', source=table_content, format='Unknown') with pytest.raises(ValueError): service.load_table('abc', source=None, format='tsv') finally: prototype.deactivate_features('cadc-tb-upload') def test_create_index(self): prototype.activate_features('cadc-tb-upload') try: service = TAPService('https://example.com/tap') def match_request_text(request): # check details of index are present return 'table=abc&index=col1&unique=true' in request.text with requests_mock.Mocker() as rm: # mock initial post to table-update and the subsequent calls to # get, run and check status of the job rm.post('https://example.com/tap/table-update', additional_matcher=match_request_text, status_code=303, headers={'Location': 'https://example.com/tap/uws'}) rm.get('https://example.com/tap/uws', [{'content': get_index_job("PENDING")}, {'content': get_index_job("COMPLETED")}]) rm.post('https://example.com/tap/uws/phase', status_code=200) # finally the call service.create_index(table_name='abc', column_name='col1', unique=True) # test wrong return status code with requests_mock.Mocker() as rm: # mock initial post to table-update and the subsequent calls to # get, run and check status of the job rm.post('https://example.com/tap/table-update', additional_matcher=match_request_text, status_code=200, # NOT EXPECTED! headers={'Location': 'https://example.com/tap/uws'}) with pytest.raises(RuntimeError): service.create_index(table_name='abc', column_name='col1', unique=True) finally: prototype.deactivate_features('cadc-tb-upload') @pytest.mark.usefixtures('async_fixture') def test_job_no_result(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") with pytest.raises(DALServiceError) as excinfo: job.fetch_result() assert "No result URI available" in str(excinfo.value) job.delete() @pytest.mark.usefixtures('async_fixture') def test_fetch_result_network_error(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', exc=requests.exceptions.ConnectTimeout ) with pytest.raises(DALServiceError) as excinfo: job.fetch_result() assert "Unknown service error" in str(excinfo.value) job.delete() @pytest.mark.usefixtures('async_fixture') def test_job_no_result_uri(self): status_response = ''' 1 COMPLETED ''' service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) job._update() with pytest.raises(DALServiceError) as excinfo: job.fetch_result() assert "No result URI available" in str(excinfo.value) job.delete() @pytest.mark.usefixtures('async_fixture') def test_job_with_empty_error(self): error_response = ''' 1 ERROR ''' service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=error_response) job._update() with pytest.raises(DALQueryError) as excinfo: job.fetch_result() assert "" in str(excinfo.value) @pytest.mark.usefixtures('async_fixture') def test_endpoint_503_with_retry_after(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=503, headers={'Retry-After': '30'}, text='Service temporarily unavailable') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALServiceError) as excinfo: service._get_endpoint('capabilities') error_msg = str(excinfo.value) assert "503 Service Unavailable (Retry-After: 30)" in error_msg assert "404 Not Found" in error_msg @pytest.mark.usefixtures('async_fixture') def test_endpoint_case_insensitive_retry_after(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=503, headers={'RETRY-AFTER': '60'}, text='Service temporarily unavailable') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALServiceError) as excinfo: service._get_endpoint('capabilities') error_msg = str(excinfo.value) assert "503 Service Unavailable (Retry-After: 60)" in error_msg @pytest.mark.usefixtures('async_fixture') def test_endpoint_stops_on_server_error(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: first_url = rm.get('http://example.com/tap/capabilities', status_code=500, text='Internal Server Error') second_url = rm.get('http://example.com/capabilities', text='Success') with pytest.raises(DALServiceError) as excinfo: service._get_endpoint('capabilities') assert first_url.call_count == 1 assert second_url.call_count == 0 error_msg = str(excinfo.value) assert "HTTP Code: 500" in error_msg @pytest.mark.usefixtures('async_fixture') def test_job_result_with_non_standard_id(self): """Test fix for Github issue https://github.com/astropy/pyvo/issues/670""" status_response = ''' 1 COMPLETED ''' service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) job._update() result = job.result assert result is not None assert result.id_ == "main" assert result.href.endswith("results/result") @pytest.mark.usefixtures('async_fixture') def test_job_result_fallback_to_id_based_lookup(self): status_response = ''' 1 COMPLETED ''' service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) job._update() result = job.result assert result is not None assert result.id_ == "result" assert not result.href.endswith("results/result") @pytest.mark.usefixtures('async_fixture') def test_job_result_multiple_results(self): """Test that standard URL structure is preferred when multiple results exist.""" status_response = ''' 1 COMPLETED ''' # Check that we return the /results/result URL if it exists service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) job._update() result = job.result assert result is not None assert result.id_ == "main" assert result.href.endswith("results/result") @pytest.mark.usefixtures('async_fixture') def test_job_result_empty_href(self): status_response = ''' 1 COMPLETED ''' service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) job._update() result = job.result assert result is None @pytest.mark.usefixtures('async_fixture') def test_job_result_handles_attribute_error(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job._job = None result = job.result assert result is None @pytest.mark.usefixtures('async_fixture') def test_job_result_handles_malformed_results(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") mock_result = Mock() del mock_result.href mock_job = Mock() mock_job.results = [mock_result] job._job = mock_job result = job.result assert result is None @pytest.mark.usefixtures('async_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_fetch_result_retry_connection_error(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) call_count = 0 def response_callback(request, context): nonlocal call_count call_count += 1 if call_count <= 2: raise requests.exceptions.ConnectionError() else: return get_pkg_data_contents('data/tap/obscore-image.xml') rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', content=response_callback ) result = job.fetch_result(max_retries=2) assert len(result) == 10 assert call_count == 3 job.delete() @pytest.mark.usefixtures('async_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") def test_fetch_result_retry_timeout_error(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) call_count = 0 def response_callback(request, context): nonlocal call_count call_count += 1 if call_count == 1: raise requests.exceptions.Timeout() else: return get_pkg_data_contents('data/tap/obscore-image.xml') rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', content=response_callback ) result = job.fetch_result(max_retries=1) assert len(result) == 10 assert call_count == 2 job.delete() @pytest.mark.usefixtures('async_fixture') def test_fetch_result_no_retry_on_http_error(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', status_code=404 ) with pytest.raises(DALServiceError): job.fetch_result(max_retries=2) job.delete() @pytest.mark.usefixtures('async_fixture') def test_fetch_result_retry_exhausted(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', exc=requests.exceptions.ConnectionError() ) with pytest.raises(DALServiceError): job.fetch_result(max_retries=2) job.delete() @pytest.mark.usefixtures('async_fixture') def test_fetch_result_default_no_retry(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore") job.run() job.wait() status_response = ''' 1 COMPLETED ''' with requests_mock.Mocker() as rm: rm.get(f'http://example.com/tap/async/{job.job_id}', text=status_response) rm.get( f'http://example.com/tap/async/{job.job_id}/results/result', exc=requests.exceptions.ConnectionError() ) with pytest.raises(DALServiceError): job.fetch_result() job.delete() @pytest.mark.usefixtures("tapservice") class TestTAPCapabilities: def test_no_tap_cap(self): svc = TAPService('http://example.com/tap') svc.capabilities = [] with pytest.raises(DALServiceError) as excinfo: svc.get_tap_capability() assert str(excinfo.value) == ("Invalid TAP service:" " Does not expose a tr:TableAccess capability") def test_no_adql(self): svc = TAPService('http://example.com/tap') svc.get_tap_capability()._languages = [] with pytest.raises(VOSIError) as excinfo: svc.get_tap_capability().get_adql() assert str(excinfo.value) == ("Invalid TAP service:" " Does not declare an ADQL language") def test_get_adql(self, tapservice): assert tapservice.get_tap_capability().get_adql().name == "ADQL" def test_missing_featurelist(self, tapservice): assert ( tapservice.get_tap_capability().get_adql().get_feature_list("fump") == []) def test_get_featurelist(self, tapservice): features = tapservice.get_tap_capability().get_adql().get_feature_list( "ivo://ivoa.net/std/TAPRegExt#features-adqlgeo") assert {f.form for f in features} == { 'CENTROID', 'CONTAINS', 'COORD1', 'POLYGON', 'INTERSECTS', 'COORD2', 'BOX', 'AREA', 'DISTANCE', 'REGION', 'CIRCLE', 'POINT'} def test_get_missing_feature(self, tapservice): assert tapservice.get_tap_capability().get_adql().get_feature( "ivo://ivoa.net/std/TAPRegExt#features-adqlgeo", "Garage") is None def test_get_feature(self, tapservice): feature = tapservice.get_tap_capability().get_adql().get_feature( "ivo://ivoa.net/std/TAPRegExt#features-adqlgeo", "AREA") assert feature.form == "AREA" assert feature.description is None def test_missing_udf(self, tapservice): assert tapservice.get_tap_capability().get_adql().get_udf("duff function") is None def test_get_udf(self, tapservice): func = tapservice.get_tap_capability().get_adql().get_udf("IVO_hasword") # case insensitive! assert func.form == "ivo_hasword(haystack TEXT, needle TEXT) -> INTEGER" def test_get_endpoint_candidates(): # Directly instantiate the TAPService with a known base URL svc = TAPService("http://astroweb.projects.phys.ucl.ac.uk:8000/tap") # Check if the correct endpoint candidates are generated expected_urls = [ "http://astroweb.projects.phys.ucl.ac.uk:8000/tap/capabilities", "http://astroweb.projects.phys.ucl.ac.uk:8000/capabilities" ] assert svc._get_endpoint_candidates("capabilities") == expected_urls def test_timeout_error(): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', exc=requests.Timeout("Request timed out") ) rm.register_uri( 'GET', 'http://example.com/capabilities', exc=requests.Timeout("Request timed out") ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Request timed out" in error_message def test_generic_request_exception(): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', exc=requests.RequestException("Some request error") ) rm.register_uri( 'GET', 'http://example.com/capabilities', exc=requests.RequestException("Some request error") ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Some request error" in error_message def test_unexpected_exception(): service = TAPService('http://example.com/tap') class CustomException(Exception): pass with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', exc=CustomException("Unexpected error occurred") ) rm.register_uri( 'GET', 'http://example.com/capabilities', exc=CustomException("Unexpected error occurred") ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message def test_tap_service_initialization_error(): with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', status_code=404 ) rm.register_uri( 'GET', 'http://example.com/capabilities', status_code=404 ) service = TAPService('http://example.com/tap') with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message assert "404" in error_message def test_endpoint_connection_errors(): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', status_code=404 ) rm.register_uri( 'GET', 'http://example.com/capabilities', status_code=404 ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message assert "404" in error_message assert "The service URL is incorrect" in error_message def test_invalid_tap_url(): service = TAPService('not-a-url') with requests_mock.Mocker() as rm: rm.register_uri( 'GET', requests_mock.ANY, exc=requests.exceptions.ConnectionError( "Failed to establish connection") ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message assert "Connection failed" in error_message def test_http_error_responses(): error_codes = { 403: "Forbidden", 500: "Internal Server Error", 502: "Bad Gateway", 503: "Service Unavailable" } for code, reason in error_codes.items(): with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', status_code=code, reason=reason ) rm.register_uri( 'GET', 'http://example.com/capabilities', status_code=code, reason=reason ) service = TAPService('http://example.com/tap') with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message assert f"{code} {reason}" in error_message def test_network_error(): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.register_uri( 'GET', 'http://example.com/tap/capabilities', exc=requests.exceptions.ConnectionError( "Failed to establish connection") ) rm.register_uri( 'GET', 'http://example.com/capabilities', exc=requests.exceptions.ConnectionError( "Failed to establish connection") ) with pytest.raises(DALServiceError) as excinfo: _ = service.capabilities error_message = str(excinfo.value) assert "Unable to access the capabilities endpoint at:" in error_message assert "Connection failed" in error_message @pytest.mark.remote_data @pytest.mark.parametrize('stream_type', [BytesIO, StringIO]) def test_tap_upload_remote(stream_type): tmp_table = (''' external URI for the physical artifact
2013.1.01365.S
''') if stream_type == BytesIO: tmp_table = tmp_table.encode() query = ('select top 3 proposal_id from ivoa.ObsCore oc join ' 'TAP_UPLOAD.proj_codes pc on oc.proposal_id=pc.prop_id') service = TAPService('https://almascience.nrao.edu/tap') res = service.search(query, uploads={'proj_codes': stream_type(tmp_table)}) assert len(res) == 3 for row in res: assert row['proposal_id'] == '2013.1.01365.S' @pytest.mark.usefixtures('overflow_fixture') @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W27") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W48") @pytest.mark.filterwarnings("ignore::astropy.io.votable.exceptions.W06") class TestTAPOverflowWarnings: """Test TAP overflow warning behavior""" def test_sync_no_maxrec_overflow_warning(self): service = TAPService('http://example.com/tap') with pytest.warns(DALOverflowWarning, match="Results truncated due to server limits"): results = service.run_sync("SELECT * FROM ivoa.obscore") assert len(results) == 10 def test_sync_maxrec_exact_match_no_warning(self): service = TAPService('http://example.com/tap') with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") _ = service.run_sync("SELECT * FROM ivoa.obscore", maxrec=10) overflow_warnings = [warning for warning in w if issubclass(warning.category, DALOverflowWarning)] assert len(overflow_warnings) == 0, f"Unexpected overflow warnings: {overflow_warnings}" def test_sync_maxrec_service_truncation_warning(self): service = TAPService('http://example.com/tap') with pytest.warns(DALOverflowWarning, match="Results truncated at " "10 records by service limits.*you requested maxrec=100"): results = service.run_sync("SELECT * FROM ivoa.obscore", maxrec=100) assert len(results) == 10 def test_search_function_no_maxrec(self): with pytest.warns(DALOverflowWarning, match="Results truncated due to server limits"): results = search('http://example.com/tap', "SELECT * FROM ivoa.obscore") assert len(results) == 10 def test_search_function_with_maxrec(self): with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") _ = search('http://example.com/tap', "SELECT * FROM " "ivoa.obscore", maxrec=10) overflow_warnings = [warning for warning in w if issubclass(warning.category, DALOverflowWarning)] assert len(overflow_warnings) == 0, f"Unexpected overflow warnings: {overflow_warnings}" def test_tapresults_suppresses_construction_warning(self): from pyvo.dal.tap import TAPResults from astropy.io.votable import parse as votableparse import requests response = requests.post('http://example.com/tap/sync', data={'QUERY': 'SELECT * FROM test'}) votable = votableparse(BytesIO(response.content)) with warnings.catch_warnings(): warnings.simplefilter("error") result = TAPResults(votable, url='http://test.com', session=None) assert len(result) == 10 def test_tap_create_query_maxrec_tracking(self): service = TAPService('http://example.com/tap') query = service.create_query("SELECT * FROM ivoa.obscore", maxrec=10) assert query._client_set_maxrec == 10 assert query["MAXREC"] == 10 query2 = service.create_query("SELECT * FROM ivoa.obscore") assert query2._client_set_maxrec is None assert "MAXREC" not in query2 def test_edge_case_maxrec_zero(self): service = TAPService('http://example.com/tap') query = service.create_query("SELECT * FROM ivoa.obscore", maxrec=0) assert query._client_set_maxrec == 0 assert "MAXREC" not in query @pytest.mark.usefixtures('async_fixture') class TestTAPAsyncOverflowWarnings: """Test async TAP overflow warnings""" def test_async_job_stores_maxrec(self): service = TAPService('http://example.com/tap') job = service.submit_job("SELECT * FROM ivoa.obscore", maxrec=5) assert job._client_set_maxrec == 5 def test_async_job_manual_creation_no_maxrec(self): job_response = ''' 123 PENDING 2025-07-29T17:34:19.638 2025-07-28T17:34:19.638 14400 2025-07-04T17:34:19.638 ''' with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/async/123', text=job_response) job = AsyncTAPJob('http://example.com/tap/async/123') assert job._client_set_maxrec is None assert job.job_id == '123' assert job.phase == 'PENDING' def test_tap_integration_with_existing_tests(): service = TAPService('http://example.com/tap') query = service.create_query("SELECT * FROM ivoa.obscore") assert query is not None assert hasattr(query, '_client_set_maxrec') @pytest.mark.usefixtures('async_fixture') class TestRateLimitError: """Tests for HTTP 429 rate limit error handling""" def test_rate_limit_error_with_retry_after_integer(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=429, headers={'Retry-After': '30'}, text='Rate limit exceeded') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALRateLimitError) as excinfo: service._get_endpoint('capabilities') error = excinfo.value assert error.retry_after_seconds == 30 assert error.retry_after_raw == '30' assert error.retry_after_date is None assert error.code == 429 assert "Rate limit exceeded" in str(error) assert "Retry after 30 seconds" in str(error) def test_rate_limit_error_with_retry_after_http_date(self): service = TAPService('http://example.com/tap') http_date = 'Wed, 21 Oct 2099 07:28:00 GMT' with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=429, headers={'Retry-After': http_date}, text='Rate limit exceeded') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALRateLimitError) as excinfo: service._get_endpoint('capabilities') error = excinfo.value assert error.retry_after_raw == http_date assert error.retry_after_date is not None assert error.retry_after_seconds is not None assert error.retry_after_seconds > 0 assert error.code == 429 assert http_date in str(error) def test_rate_limit_error_case_insensitive_header(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=429, headers={'RETRY-AFTER': '60'}, text='Rate limit exceeded') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALRateLimitError) as excinfo: service._get_endpoint('capabilities') error = excinfo.value assert error.retry_after_seconds == 60 assert error.retry_after_raw == '60' def test_rate_limit_error_without_retry_after(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=429, text='Rate limit exceeded') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALRateLimitError) as excinfo: service._get_endpoint('capabilities') error = excinfo.value assert error.retry_after_seconds is None assert error.retry_after_raw is None assert error.retry_after_date is None assert error.code == 429 assert "Rate limit exceeded" in str(error) def test_rate_limit_is_dal_service_error(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', status_code=429, headers={'Retry-After': '30'}, text='Rate limit exceeded') rm.get('http://example.com/capabilities', status_code=404) with pytest.raises(DALServiceError) as excinfo: service._get_endpoint('capabilities') assert isinstance(excinfo.value, DALRateLimitError) assert excinfo.value.retry_after_seconds == 30 def test_rate_limit_from_except_returns_rate_limit_error(self): mock_response = requests.models.Response() mock_response.status_code = 429 mock_response.headers = {'Retry-After': '45'} http_error = requests.exceptions.HTTPError(response=mock_response) result = DALServiceError.from_except(http_error, url='http://example.com/tap') assert isinstance(result, DALRateLimitError) assert result.retry_after_seconds == 45 assert result.code == 429 def test_rate_limit_on_async_job_submission(self): service = TAPService('http://example.com/tap') with requests_mock.Mocker() as rm: rm.get(requests_mock.ANY, text='') rm.post('http://example.com/tap/async', status_code=429, headers={'Retry-After': '120'}, text='Rate limit exceeded') with pytest.raises(DALRateLimitError) as excinfo: service.run_async("SELECT * FROM table") error = excinfo.value assert error.retry_after_seconds == 120 assert error.code == 429 def test_rate_limit_on_tables_endpoint(self): with requests_mock.Mocker() as rm: rm.get('http://example.com/tap/capabilities', text='') rm.get('http://example.com/tap/tables', status_code=429, headers={'Retry-After': '60'}, text='Rate limit exceeded') service = TAPService('http://example.com/tap') with pytest.raises(DALRateLimitError) as excinfo: _ = service.tables error = excinfo.value assert error.retry_after_seconds == 60 assert error.code == 429 def test_public_constants_accessible_from_dal(): assert isinstance(dal.DEFAULT_JOB_POLL_TIMEOUT, (int, float)) assert isinstance(dal.DEFAULT_JOB_WAIT_TIMEOUT, (int, float)) assert isinstance(dal.DATALINK_BATCH_CALL_SIZE, int) astropy-pyvo-f0fdda3/pyvo/dal/vosi.py000066400000000000000000000227231521254414300200550ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ VOSI classes and mixins """ from itertools import chain import requests from urllib.parse import urlparse from astropy.utils.decorators import lazyproperty, deprecated from .exceptions import DALServiceError, DALRateLimitError from ..io import vosi from ..utils.url import url_sibling from ..utils.decorators import stream_decode_content, response_decode_content from ..utils.http import use_session __all__ = ['CapabilityMixin', 'VOSITables'] class EndpointMixin: def _get_endpoint_candidates(self, endpoint): """Construct endpoint URLs from base URL and endpoint""" urlcomp = urlparse(self.baseurl) # Include the port number if present netloc = urlcomp.hostname if urlcomp.port: netloc += f':{urlcomp.port}' curated_baseurl = f'{urlcomp.scheme}://{netloc}{urlcomp.path}' if not endpoint: raise AttributeError('endpoint required') return [f'{curated_baseurl}/{endpoint}', url_sibling(curated_baseurl, endpoint)] @staticmethod def _build_error_message(endpoint, attempted_urls): """Build error message from attempted URLs and their failures""" return ( f"Unable to access the {endpoint} endpoint at:\n" f"{chr(10).join(attempted_urls)}\n\n" f"This could mean:\n" f"1. The service URL is incorrect\n" f"2. The service is temporarily unavailable\n" f"3. The service doesn't support this protocol\n" f"4. If a 503 was encountered, retry after the suggested delay.\n" ) @staticmethod def _get_response_body(response): """Extract response body for error messagess""" max_length = 500 # Truncate if too long (500 chars), to avoid overwhelming the user if response is None or not response.headers.get("Content-Type", "").startswith("text"): return "" return f" Response body: {response.text[:max_length]}" def _handle_http_error(self, error, url, attempted_urls): """Handle HTTP errors and update attempted_urls list""" response_body = self._get_response_body(error.response) if error.response.status_code == 429: raise DALRateLimitError.from_response(error.response, error, url) if error.response.status_code == 503: # Handle Retry-After header, if present retry_after = None for header in error.response.headers: if header.lower() == 'retry-after': retry_after = error.response.headers[header] break if retry_after: attempted_urls.append( f"- {url}: 503 Service Unavailable (Retry-After: " f"{retry_after}){response_body}") return True elif error.response.status_code == 404: attempted_urls.append(f"- {url}: 404 Not Found") return True status_code = error.response.status_code attempted_urls.append( f"- {url}: HTTP Code: {status_code} " f"{error.response.reason}{response_body}") return False def _get_endpoint(self, endpoint): """Attempt to connect to service endpoint""" attempted_urls = [] try: candidates = self._get_endpoint_candidates(endpoint) except (ValueError, AttributeError) as e: raise DALServiceError( f"Cannot construct endpoint URL from base '{self.baseurl}' and endpoint '{endpoint}'. " f"{type(e).__name__}: {str(e)}" ) from e for ep_url in candidates: try: response = self._session.get(ep_url, stream=True) response.raise_for_status() return response.raw except requests.HTTPError as e: if not self._handle_http_error(e, ep_url, attempted_urls): break except requests.ConnectionError: attempted_urls.append( f"- {ep_url}: Connection failed " f"(Possible causes: incorrect URL, DNS issue, or service is down)") break except requests.Timeout: attempted_urls.append( f"- {ep_url}: Request timed out (Service may be overloaded or slow)") except (requests.RequestException, Exception) as e: attempted_urls.append(f"- {ep_url}: {str(e)}") break raise DALServiceError( self._build_error_message(endpoint, attempted_urls)) @deprecated(since="1.5") class AvailabilityMixin(EndpointMixin): """ Mixing for VOSI availability """ @deprecated(since="1.5") @stream_decode_content def _availability(self): """ Service Availability as a :py:class:`~pyvo.io.vosi.availability.Availability` object """ return self._get_endpoint('availability') @lazyproperty @deprecated(since="1.5") def availability(self): return vosi.parse_availability(self._availability().read) @property @deprecated(since="1.5") def available(self): """ True if the service is available, False otherwise """ return self.availability.available @property @deprecated(since="1.5") def up_since(self): """ datetime the service was started """ return self.availability.upsince class CapabilityMixin(EndpointMixin): """ Mixing for VOSI capability """ @stream_decode_content def _capabilities(self): """ Retrieve the raw capabilities document from the service. """ return self._get_endpoint('capabilities') @lazyproperty def capabilities(self): return vosi.parse_capabilities(self._capabilities().read) class TablesMixin(CapabilityMixin): """ Mixin for VOSI tables """ @stream_decode_content def _tables(self): try: interfaces = next( _ for _ in self.capabilities if _.standardid.startswith( 'ivo://ivoa.net/std/VOSI#tables') ).interfaces accessurls = chain.from_iterable(_.accessurls for _ in interfaces) tables_urls = (_.value for _ in accessurls) except StopIteration: tables_urls = [ f'{self.baseurl}/tables', url_sibling(self.baseurl, 'tables') ] for tables_url in tables_urls: try: response = self._session.get(tables_url, stream=True) response.raise_for_status() break except requests.HTTPError as ex: if ex.response.status_code == 429: raise DALRateLimitError.from_response(ex.response, ex, tables_url) continue except requests.RequestException: continue else: raise DALServiceError("No working tables endpoint provided") return response.raw @lazyproperty def tables(self): return VOSITables(vosi.parse_tables(self._tables().read)) class VOSITables: """ This class encapsulates access to the VOSITables using a given Endpoint. Access to table names is like accessing dictionary keys. using iterator syntax or `keys()` """ def __init__(self, vosi_tables, endpoint_url, *, session=None): self._vosi_tables = vosi_tables self._endpoint_url = endpoint_url self._cache = {} self._session = use_session(session) def __len__(self): return self._vosi_tables.ntables def __getitem__(self, key): return self._get_table(key) def __iter__(self): for tablename in self.keys(): yield self._get_table(tablename) def __contains__(self, tablename): return tablename in self.keys() def _get_table(self, name): if name in self._cache: return self._cache[name] table = self._vosi_tables.get_table_by_name(name) if not table.columns and not table.foreignkeys: tables_url = f'{self._endpoint_url}/{name}' response = self._get_table_file(tables_url) try: response.raise_for_status() except requests.RequestException as ex: raise DALServiceError.from_except(ex, tables_url) table = vosi.parse_tables(response.raw.read).get_first_table() self._cache[name] = table return table @response_decode_content def _get_table_file(self, tables_url): return self._session.get(tables_url, stream=True) def keys(self): """ Iterates over the keys (table names). """ for table in self._vosi_tables.iter_tables(): yield table.name def values(self): """ Iterates over the values (tables). Gathers missing values from endpoint if necessary. """ for name in self.keys(): yield self._get_table(name) def items(self): """ Iterates over keys and values (table names and tables). Gathers missing values from endpoint if necessary. """ for name in self.keys(): yield (name, self._get_table(name)) def describe(self): for table in self: table.describe() astropy-pyvo-f0fdda3/pyvo/dam/000077500000000000000000000000001521254414300165165ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/dam/__init__.py000066400000000000000000000002431521254414300206260ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .obscore import * __all__ = ["ObsCoreMetadata", "POLARIZATION_STATES", "CALIBRATION_LEVELS"] astropy-pyvo-f0fdda3/pyvo/dam/obscore.py000066400000000000000000000056001521254414300205250ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module for representing data in ObsCore format """ __all__ = ['ObsCoreMetadata', 'POLARIZATION_STATES', 'CALIBRATION_LEVELS'] # to be moved to ObsCore POLARIZATION_STATES = ['I', 'Q', 'U', 'V', 'RR', 'LL', 'RL', 'LR', 'XX', 'YY', 'XY', 'YX', 'POLI', 'POLA'] CALIBRATION_LEVELS = [0, 1, 2, 3, 4] class ObsCoreMetadata(): """ Representation of an ObsCore observation TBD setters to do validation and unit check. """ def __init__(self): # OBSERVATION INFO self.dataproduct_type = None self.dataproduct_subtype = None self.calib_level = None # TARGET INFO self.target_name = None self.target_class = None # DATA DESCRIPTION self.obs_id = None self.obs_title = None self.obs_collection = None self.obs_create_date = None self.obs_creator_name = None self.obs_creator_did = None # CURATION INFORMATION self.obs_release_date = None self.obs_publisher_did = None self.publisher_id = None self.bib_reference = None self.data_rights = None # ACCESS INFORMATION self.access_url = None self.access_format = None self.access_estsize = None # SPATIAL CHARACTERISATION self.s_ra = None self.s_dec = None self.s_fov = None self.s_region = None self.s_resolution = None self.s_xel1 = None self.s_xel2 = None self.s_ucd = None self.s_unit = None self.s_resolution_min = None self.s_resolution_max = None self.s_calib_status = None self.s_stat_error = None self.s_pixel_scale = None # TIME CHARACTERISATION self.t_xel = None self.t_ref_pos = None self.t_min = None self.t_max = None self.t_exptime = None self.t_resolution = None self.t_calib_status = None self.t_stat_error = None # SPECTRAL CHARACTERISATION self.em_xel = None self.em_ucd = None self.em_unit = None self.em_calib_status = None self.em_min = None self.em_max = None self.em_res_power = None self.em_res_power_min = None self.em_res_power_max = None self.em_resolution = None self.em_stat_error = None # OBSERVABLE AXIS self.o_ucd = None self.o_unit = None self.o_calib_status = None self.o_stat_error = None # POLARIZATION CHARACTERISATION self.pol_xel = None self.pol_states = None # PROVENANCE self.instrument_name = None self.facility_name = None self.proposal_id = None astropy-pyvo-f0fdda3/pyvo/discover/000077500000000000000000000000001521254414300175735ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/discover/__init__.py000066400000000000000000000011071521254414300217030ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Various functions dealing with global data disovery. """ import warnings from pyvo.utils.prototype import PrototypeWarning # if you remove this warning, also remove the ignorere in test_imagediscovery. warnings.warn("pyvo.discover's API is still under design in pyVO 1.6 and" " may change without prior notice. Feedback to the authors is most" " welcome.", PrototypeWarning) from .image import images_globally, ImageDiscoverer, ImageFound __all__ = ['images_globally', "ImageDiscoverer", "ImageFound"] astropy-pyvo-f0fdda3/pyvo/discover/image.py000066400000000000000000000601371521254414300212360ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Global image discovery. This module is intended to cover the much-requested use case "give me all images with properties x, y, and z, where these properties for now is the location in space, time, and spectrum; sensitivity clearly would be great, but that needs standard work. The code here looks for data in SIA1, SIA2, and Obscore services for now. """ # TODOs: # * Evaluate and log Overflow conditions in the three protocols # * do more (s_region!) on the basis of the WCS parts in SIA1 # * In obscore, we probably should make the dataproduct type constraint # configurable (this should really also work for cubes) # * Obscore query generation *might* want some extra logic for inclusive, # (as in OR whatever IS NULL) -- but is that a good idea? # * It would be nice if we preserved datalink availability and perhaps # even let people do automatic cutouts to the RoI. import functools import threading import requests from astropy import units as u from astropy import table from astropy import time from ..dam import obscore from .. import dal from .. import registry from ..registry import regtap # imports for type hints from collections.abc import Callable from collections.abc import Generator from astropy.units import quantity __all__ = ["ImageFound", "ImageDiscoverer", "images_globally"] # We should probably have a general way to set query timeouts in pyVO. # For now, we don't, but for global discovery there's really no way # around them. So, let me hack something here. class SessionWithTimeout(requests.Session): def __init__(self, *args, default_timeout=None, **kwargs): self.default_timeout = default_timeout super().__init__(*args, **kwargs) def request(self, *args, **kwargs): if "timeout" not in kwargs: kwargs["timeout"] = self.default_timeout return super().request(*args, **kwargs) class Queriable: """A facade for a queriable service. We keep these rather than work on `pyvo.registry.RegistryResource`-s directly because the latter actually live in VOTables which are very hard to manipulate. They are constructed with a resource record. """ def __init__(self, res_rec): self.res_rec = res_rec self.ivoid = res_rec.ivoid self.title = self.res_rec.res_title def __str__(self): return f"<{self.ivoid}>" def __repr__(self): return str(self) @functools.cache def obscore_column_names(): """returns the names of obscore columns. For lack of alternatives, I pull them out of ObsCoreMetadata for now. """ return [name for name in dir(obscore.ObsCoreMetadata()) if not name.startswith("_")] class ImageFound(obscore.ObsCoreMetadata): """Obscore metadata for a found record. The mandatory obscore fields are kept as attributes. We are pulling these out from the various VOTables that we retrieve because we need to do some manipulation of them that is simpler to do if they are proper Python objects. This also keeps track of the service the record came from, which is available from the origin_service attribute. """ attr_names = set(obscore_column_names()) def __init__(self, origin_service, obscore_record): self.origin_service = origin_service for k, v in obscore_record.items(): if k not in self.attr_names: raise TypeError( f"ImageFound does not accept {k} keys") setattr(self, k, v) @classmethod def from_obscore_recs(cls, origin_service, obscore_result): if not obscore_result: return ap_table = obscore_result.to_table() our_keys = [n for n in ap_table.colnames if n in cls.attr_names] for row in obscore_result: yield cls( origin_service, dict(zip(our_keys, (row[n] for n in our_keys)))) @classmethod def from_sia1_recs(cls, origin_service, sia1_result, filter_func): for rec in sia1_result: if not filter_func(rec): continue mapped = { "dataproduct_type": "image" if rec.naxes == 2 else "cube", "access_url": rec.acref, "em_max": None if rec.bandpass_hilimit is None else rec.bandpass_hilimit.to(u.m).value, "em_min": None if rec.bandpass_lolimit is None else rec.bandpass_lolimit.to(u.m).value, # Sigh. Try to guess exposure time? "t_min": None if rec.dateobs is None else rec.dateobs.mjd, "t_max": None if rec.dateobs is None else rec.dateobs.mjd, "access_estsize": None if rec.filesize is None else rec.filesize/1024, "access_format": rec.format, "instrument_name": rec.instr, "s_xel1": rec.naxis[0].to(u.pix).value, "s_xel2": rec.naxis[1].to(u.pix).value, "s_ra": rec.pos.icrs.ra.to(u.deg).value, "s_dec": rec.pos.icrs.dec.to(u.deg).value, "obs_title": rec.title, } yield cls(origin_service, mapped) def _clean_for(records: list[Queriable], ivoids_to_remove: set[str]): """returns the Queriables in records the ivoids of which are not in ivoids_to_remove. """ return [r for r in records if r.ivoid not in ivoids_to_remove] class ImageDiscoverer: """A management class for VO global image discovery. This encapsulates all of constraints, service lists, results, and diagnostics. This probably should not be considered API but rather as an implementation detail of discover_images. The normal usage is do call discover_services(), which will locate all VO services that may have relevant data. Alternatively, call set_services(registry_results) with some result of a registry.search() call. ImageDiscoverer will then pick capabilities it can use out of the resource records. Records without usable capabilities are silently ignored. Then call query_services to execute the discovery query on these services. See images_globally for a discussion of its constructor parameters. """ # Constraint defaults # a float in metres spectrum = None # MJD floats time_min = time_max = None # a center as a 2-tuple in ICRS degrees center = None # a radius as a float in degrees radius = None def __init__(self, *, space=None, spectrum=None, time=None, inclusive=False, watcher=None, timeout=20): self.session = SessionWithTimeout(default_timeout=timeout) if space: self.center = (space[0], space[1]) self.radius = space[2] if spectrum is not None: self.spectrum = spectrum.to(u.m, equivalencies=u.spectral()).value if time is not None: if isinstance(time, tuple): self.time_min, self.time_max = time[0].mjd, time[1].mjd else: self.time_min = self.time_max = time.mjd self.inclusive = inclusive self.already_queried, self.failed_services = 0, 0 self.results: list[obscore.ObsCoreMetadata] = [] self.watcher = watcher self.log_messages: list[str] = [] self.known_access_urls: set[str] = set() self._service_list_lock = threading.Lock() with self._service_list_lock: # only write to these while holding the lock self.sia1_recs, self.sia2_recs, self.obscore_recs = [], [], [] def _info(self, message: str) -> None: """sends message to our watcher (if there is any) """ if self.watcher is not None: self.watcher(self, message) def _log(self, message: str) -> None: """logs message. This will also do whatever _info does. """ self.log_messages.append(message) self._info(message) def _purge_redundant_services(self): """removes services querying data already covered by more capable services from our current services lists. """ def ids(recs): return {r.ivoid for r in recs} self.sia1_recs = _clean_for(self.sia1_recs, ids(self.sia2_recs) | ids(self.obscore_recs)) self.sia2_recs = _clean_for(self.sia2_recs, ids(self.obscore_recs)) # In addition, now throw out all services that have an # IsServedBy relationship to another service we will also # query. That's particularly valuable if there are large # obscore services covering data from many SIA1 services. ids_present = table.Table([ table.Column( name="id", data=list( sorted(ids(self.sia1_recs) | ids(self.sia2_recs) | ids(self.obscore_recs))), description="ivoids of candiate services", meta={"ucd": "meta.ref.ivoid"}),]) if len(ids_present) == 0: return services_for = regtap.get_RegTAP_service().run_sync( """SELECT ivoid, related_id FROM rr.relationship JOIN tap_upload.ids AS leftids ON (ivoid=leftids.id) JOIN tap_upload.ids AS rightids ON (related_id=rightids.id) WHERE relationship_type='isservedby' """, uploads={'ids': ids_present}) for rec in services_for: self._log(f"Skipping {rec['ivoid']} because" f" it is served by {rec['related_id']}") collections_to_remove = {r["ivoid"] for r in services_for} self.sia1_recs = _clean_for(self.sia1_recs, collections_to_remove) self.sia2_recs = _clean_for(self.sia2_recs, collections_to_remove) self.obscore_recs = _clean_for(self.obscore_recs, collections_to_remove) def _discover_obscore_services(self, *constraints): # For obscore, we currently have a defunct discovery pattern # ("obscore" in the Datamodel constraint). There is obscore-new, # which fixes the problem, but until that's adopted by all the # obscore services, we have to try both and the pick the # more suitable version. # Once we move obscore-new to obscore, remove this function # and put # self.obscore_recs = [Queriable(r) for r in registry.search( # registry.Datamodel("obscore"), *constraints)] # back into discover_services. obscore_services = registry.search( registry.Datamodel("obscore_new"), *constraints) tap_services_with_obscore = registry.search( registry.Datamodel("obscore"), *constraints) new_style_access_urls = set() for rec in obscore_services: new_style_access_urls |= { i.access_url for i in rec.list_interfaces("tap")} for tap_rec in tap_services_with_obscore: access_urls = { i.baseurl for i in rec.list_services("tap")} if new_style_access_urls.isdisjoint(access_urls): obscore_services.append(obscore_services) return [Queriable(r) for r in obscore_services] def discover_services(self): """fills the X_recs attributes with resources declaring coverage for our constraints. X at this point is sia1, sia2, and obscore. It tries to filter out as many duplicates (i.e., services operating on the same data collections) as it can. The order of preference is Obscore, SIA2, SIA. """ constraints = [] if self.center is not None: constraints.append( registry.Spatial(list(self.center)+[self.radius], inclusive=self.inclusive)) if self.spectrum is not None: constraints.append( registry.Spectral(self.spectrum*u.m, inclusive=self.inclusive)) if self.time_min is not None or self.time_max is not None: constraints.append( registry.Temporal( (self.time_min, self.time_max), inclusive=self.inclusive)) with self._service_list_lock: self.sia1_recs = [Queriable(r) for r in registry.search( registry.Servicetype("sia"), *constraints)] self._info(f"Found {len(self.sia1_recs)} SIA1 service(s)") self.sia2_recs = [Queriable(r) for r in registry.search( registry.Servicetype("sia2"), *constraints)] self._info(f"Found {len(self.sia2_recs)} SIA2 service(s)") self.obscore_recs = self._discover_obscore_services(*constraints) self._info("Found {} Obscore service(s)".format( len(self.obscore_recs))) self._purge_redundant_services() def set_services(self, registry_results: registry.RegistryResults, purge_redundant: bool = True) -> None: """as an alternative to discover_services, this sets the services to be queried to the result of a custom registry query. This will pick the "most capabable" interface from each record and ignore records without image discovery capabilities. If you set purge_redundant to false, this will not attempt to eliminate services that are alternative interfaces to services that are already called. There are very few situations in which you would want to do that, mostly related to debugging. """ with self._service_list_lock: for rsc in registry_results: if "tap" in rsc.access_modes(): # TODO: we ought to ensure there's an obscore # table on this; but by the time this sees users, # I hope to have fixed obscore discovery. self.obscore_recs.append(Queriable(rsc)) elif "sia2" in rsc.access_modes(): self.sia2_recs.append(Queriable(rsc)) elif "sia" in rsc.access_modes(): self.sia1_recs.append(Queriable(rsc)) # else ignore this record if purge_redundant: self._purge_redundant_services() def reset_services(self): """clears the queues of services to query. This is the only supported way to interrupt operations once query_services has been called. This will not interrupt the query currently running. There is currently no way to do that. """ with self._service_list_lock: self.sia1_recs, self.sia2_recs, self.obscore_recs = [], [], [] self._log("Cancelling queries with {} service(s) queried" .format(self.already_queried)) def _add_records(self, recgen: Generator[ImageFound, None, None]) -> int: """adds records from regen to the global results. This will skip datasets the access urls of which we have already seen and will return the number of datasets actually added. """ n_added = 0 for obscore_record in recgen: if obscore_record.access_url in self.known_access_urls: continue self.known_access_urls.add(obscore_record.access_url) self.results.append(obscore_record) n_added += 1 return n_added def _query_one_sia1(self, rec: Queriable): """runs our query against a SIA1 capability of rec. Since SIA1 cannot do spectral and temporal constraints itself, we do them client-side provided sufficient metadata is present. If metadata is missing, we keep or discard accoding to self.inclusive. """ def non_spatial_filter(sia1_rec): if self.spectrum and not self.inclusive and ( sia1_rec.bandpass_hilimit is not None and sia1_rec.bandpass_lolimit is not None): if not (sia1_rec.bandpass_lolimit <= self.spectrum*u.m <= sia1_rec.bandpass_hilimit): return False # Regrettably, the exposure time is not part of SIA1 standard # metadata. We fudge things a bit; this should not # increase false positives very badly. if (self.time_min is not None or self.time_max is not None) \ and not self.inclusive and sia1_rec.dateobs: if not (self.time_min-0.1 < sia1_rec.dateobs.mjd < self.time_max+0.1): return False return True self._info(f"Querying SIA1 {rec.title}...") svc = rec.res_rec.get_service("sia", session=self.session, lax=True) n_found = self._add_records( ImageFound.from_sia1_recs( rec.ivoid, svc.search( pos=self.center, size=self.radius, intersect='overlaps'), non_spatial_filter)) self._log(f"SIA1 {rec.title} {n_found} records") def _query_sia1(self): """runs the SIA1 part of our discovery. This will be a no-op without a space constraint due to limitations of SIA1. """ if self.sia1_recs and self.center is None: self._log("SIA1 service(s) skipped due to missing space" " constraint") return # we don't do a for loop here because we want to react to changes # in self.sia1_recs while self.sia1_recs: rec = self.sia1_recs.pop() try: self._query_one_sia1(rec) except Exception as msg: self._log(f"SIA1 {rec.ivoid} skipped: {msg}") self.failed_services += 1 self.already_queried += 1 def _query_one_sia2(self, rec: Queriable): """runs our query against a SIA2 capability of rec. """ self._info(f"Querying SIA2 {rec.title}...") svc = rec.res_rec.get_service("sia2", session=self.session, lax=True) constraints = {} if self.center is not None: constraints["pos"] = self.center+(self.radius,) if self.spectrum is not None: constraints["band"] = self.spectrum if self.time_min is not None or self.time_max is not None: constraints["time"] = ( time.Time(self.time_min, format="mjd"), time.Time(self.time_max, format="mjd")) n_found = self._add_records( ImageFound.from_obscore_recs( rec.ivoid, svc.search(**constraints))) self._log(f"SIA2 {rec.title}: {n_found} records") def _query_sia2(self): """runs the SIA2 part of our discovery. """ while self.sia2_recs: rec = self.sia2_recs.pop() try: self._query_one_sia2(rec) except Exception as msg: self._log(f"SIA2 {rec.ivoid} skipped: {msg}") self.failed_services += 1 self.already_queried += 1 def _query_one_obscore(self, rec: Queriable, where_clause: str): """runs our query against a Obscore capability of rec. """ self._info(f"Querying Obscore {rec.title}...") svc = rec.res_rec.get_service("tap", session=self.session, lax=True) n_found = self._add_records( ImageFound.from_obscore_recs( rec.ivoid, svc.run_sync("select * from ivoa.obscore "+where_clause))) self._log(f"Obscore {rec.title}: {n_found} records") def _query_obscore(self): """runs the Obscore part of our discovery. """ where_parts = ["dataproduct_type='image'"] if self.center is not None: where_parts.append( "(1=contains(point('ICRS', s_ra, s_dec)," " circle('ICRS', {}, {}, {}))".format( self.center[0], self.center[1], self.radius) + " or 1=intersects(circle({}, {}, {}), s_region))".format( self.center[0], self.center[1], self.radius)) if self.spectrum is not None: where_parts.append( f"(em_min<={self.spectrum} AND em_max>={self.spectrum})") if self.time_min is not None or self.time_max is not None: where_parts.append( "({h1}>={l2} AND {h2}>={l1}" " AND {l1}<={h1} AND {l2}<={h2})".format( l1="t_min", h1="t_max", l2=self.time_min, h2=self.time_max)) where_clause = "WHERE "+(" AND ".join(where_parts)) while self.obscore_recs: rec = self.obscore_recs.pop() try: self._query_one_obscore(rec, where_clause) except Exception as msg: self._log("Obscore {} skipped: {}".format( rec.res_rec['ivoid'], msg)) self.failed_services += 1 self.already_queried += 1 def get_query_stats(self): """returns a tuple of n(total to query), n(already queried) """ total_to_query = len(self.obscore_recs)\ + len(self.sia1_recs)\ + len(self.sia2_recs) return total_to_query, self.already_queried, self.failed_services def query_services(self): """queries the discovered image services according to our constraints. This creates and fills the results and the log_messages attributes. """ if (not self.sia1_recs and not self.sia2_recs and not self.obscore_recs): raise dal.DALQueryError("No services to query. Unless" " you overrode service selection, you will have to" " loosen your constraints.") self._query_obscore() self._query_sia2() self._query_sia1() def images_globally( *, space: tuple[float, float, float] | None = None, spectrum: quantity.Quantity | None = None, time: time.Time | None = None, inclusive: bool = False, watcher: Callable[['ImageDiscoverer', str], None] | None = None, timeout: float = 20, services: registry.RegistryResults | None = None)\ -> tuple[list[obscore.ObsCoreMetadata], list[str]]: """returns a collection of ObsCoreMetadata-s matching certain constraints and a list of log lines. Parameters ---------- space : An optional tuple of ra, dec, and the search radius, all in degrees; images returned must intersect a spherical circle described in this way. spectrum : An astropy quantity convertible to a (vacuum) wavelength; images must cover this point in the (electromagnetic) spectrum. time : An astropy time that must be in the observation time of the image (if it declares a time). inclusive : Set to True to incluse services that do not declare their STC coverage. As of 2024, it may be advisable to do that as many relevant archives do not do that. watcher : A callable that will be called with the ImageDiscoverer instance and a string perhaps suitable for displaying to a human. services : An optional `~pyvo.registry.RegistryResults` instance to override automatic services detection. When an image has insufficient metadata to evaluate a constraint, it is excluded; this mimics the behaviour of SQL engines that consider comparisons with NULL-s false. Returns ------- discovered_images, log_lines The images found are returned in a list of `pyvo.discover.ImageFound` instances. log_lines is a list of strings reporting which services were queried with which result (and possibly more). So far, this is not considered machine-readable. """ discoverer = ImageDiscoverer( space=space, spectrum=spectrum, time=time, inclusive=inclusive, watcher=watcher, timeout=timeout) if services is None: discoverer.discover_services() else: discoverer.set_services(services) discoverer.query_services() return discoverer.results, discoverer.log_messages astropy-pyvo-f0fdda3/pyvo/discover/tests/000077500000000000000000000000001521254414300207355ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/discover/tests/test_imagediscovery.py000066400000000000000000000231671521254414300253710ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.discover.image """ import weakref import pytest from astropy import coordinates from astropy import time from astropy import units as u from pyvo import dal from pyvo import registry from pyvo.discover import image from pyvo import discover class TestImageFound: def testBadAttrName(self): with pytest.raises(TypeError): image.ImageFound("ivo://x-fake", {"invented": None}) class FakeQueriable: """a scaffolding class to record queries built by the various discovery methods. It's a stand-in for all of discover.Queriable, the resource record, and the services. All query functions just make their search arguments available in search_args and search_kwargs attributes here and otherwise return whatever you pass in as return_this. """ def __init__(self, return_this=[]): self.title = "Fake scaffold service" self.ivoid = "ivo://x-invalid/pyvo-fake" self.return_this = return_this self.res_rec = weakref.proxy(self) def get_service(self, service_type, **kwargs): return self def search(self, *args, **kwargs): self.search_args = args self.search_kwargs = kwargs return self.return_this run_sync = search class FakeSIARec: """a convenience class to halfway easily create SIA1 records sufficient for testing. """ defaults = { "bandpass_lolimit": 5e-7*u.m, "bandpass_hilimit": 7e-7*u.m, "dateobs": time.Time("1970-10-13T14:00:00"), "filesize": 20, "naxis": (10*u.pix, 20*u.pix), "naxes": 2, "pos": coordinates.SkyCoord(0*u.deg, 0*u.deg)} def __init__(self, **kwargs): for key, value in self.defaults.items(): setattr(self, key, value) for key, value in kwargs.items(): setattr(self, key, value) def __getattr__(self, name): return None class TestTimeCondition: def test_sia1(self): # this primarily tests for local filtering queriable = FakeQueriable([ FakeSIARec(), FakeSIARec(dateobs=time.Time("1970-10-14"))]) d = discover.ImageDiscoverer( space=(0, 0, 1), time=( time.Time("1970-10-13T13:00:00"), time.Time("1970-10-13T17:00:00"))) d._query_one_sia1(queriable) assert len(d.results) == 1 assert abs(d.results[0].t_min-40872.583333333336) < 1e-10 assert queriable.search_kwargs == { 'pos': (0, 0), 'size': 1, 'intersect': 'overlaps'} def test_sia1_nointerval(self): queriable = FakeQueriable([ FakeSIARec(), FakeSIARec(dateobs=time.Time("1970-10-14"))]) d = discover.ImageDiscoverer( space=(0, 0, 1), time=time.Time("1970-10-13T13:00:02")) d._query_one_sia1(queriable) assert len(d.results) == 1 def test_sia2(self): queriable = FakeQueriable() d = discover.ImageDiscoverer( time=( time.Time("1970-10-13T13:00:00"), time.Time("1970-10-13T17:00:00"))) d._query_one_sia2(queriable) assert set(queriable.search_kwargs) == {"time"} assert abs(queriable.search_kwargs["time"][0].utc.value - 40872.54166667) < 1e-8 def test_sia2_nointerval(self): queriable = FakeQueriable() d = discover.ImageDiscoverer( time=time.Time("1970-10-13T13:00:00")) d._query_one_sia2(queriable) assert set(queriable.search_kwargs) == {"time"} assert abs(queriable.search_kwargs["time"][0].utc.value - 40872.54166667) < 1e-8 assert abs(queriable.search_kwargs["time"][1].utc.value - 40872.54166667) < 1e-8 def test_obscore(self): queriable = FakeQueriable() d = discover.ImageDiscoverer( time=(time.Time("1970-10-13T13:00:00"), time.Time("1970-10-13T17:00:00"))) d.obscore_recs = [queriable] d._query_obscore() assert set(queriable.search_kwargs) == set() assert queriable.search_args[0] == ( "select * from ivoa.obscore WHERE dataproduct_type='image'" " AND (t_max>=40872.541666666664 AND 40872.708333333336>=t_min" " AND t_min<=t_max AND 40872.541666666664<=40872.708333333336)") def test_obscore_nointerval(self): queriable = FakeQueriable() d = discover.ImageDiscoverer( time=( time.Time("1970-10-13T13:00:00"))) d.obscore_recs = [queriable] d._query_obscore() assert set(queriable.search_kwargs) == set() assert queriable.search_args[0] == ( "select * from ivoa.obscore WHERE dataproduct_type='image'" " AND (t_max>=40872.541666666664 AND 40872.541666666664>=t_min" " AND t_min<=t_max AND 40872.541666666664<=40872.541666666664)") class TestSpaceCondition: def test_sia1_fails_without_space(self): queriable = FakeQueriable() di = discover.ImageDiscoverer( time=( time.Time("1970-10-13T13:00:00"))) di.sia1_recs = [queriable] di.query_services() assert di.log_messages == [ 'SIA1 service(s) skipped due to missing space constraint'] def test_sia2(self): queriable = FakeQueriable() di = discover.ImageDiscoverer(space=(30, 21, 1)) di.sia2_recs = [queriable] di.query_services() assert queriable.search_kwargs == {'pos': (30, 21, 1)} def test_obscore(self): queriable = FakeQueriable() di = discover.ImageDiscoverer(space=(30, 21, 1)) di.obscore_recs = [queriable] di.query_services() assert queriable.search_args == ( "select * from ivoa.obscore WHERE dataproduct_type='image'" " AND (1=contains(point('ICRS', s_ra, s_dec)," " circle('ICRS', 30, 21, 1))" " or 1=intersects(circle(30, 21, 1), s_region))",) def test_no_services_selected(): with pytest.raises(dal.DALQueryError) as excinfo: image.ImageDiscoverer().query_services() assert "No services to query." in str(excinfo.value) # Tests requiring remote data below this line @pytest.mark.remote_data def test_single_sia1(): results, log = discover.images_globally( space=(116, -29, 0.1), time=time.Time(56383.105520834, format="mjd"), services=registry.search( registry.Ivoid("ivo://org.gavo.dc/bgds/q/sia"))) im = results[0] assert im.s_xel1 == 10800. assert isinstance(im.em_min, float) assert abs(im.s_dec+29) < 2 assert im.instrument_name == 'Robotic Bochum Twin Telescope (RoBoTT)' assert "BGDS GDS_" in im.obs_title assert "dc.g-vo.org/getproduct/bgds/data" in im.access_url @pytest.mark.remote_data def test_cone_and_spectral_point(): # This should really return just a few services. If this # starts hitting more services, see how we can throw them out # again, perhaps using a time constraint. watcher_msgs = [] def test_watcher(disco, msg): watcher_msgs.append(msg) images, logs = discover.images_globally( space=(134, 11, 0.1), spectrum=600*u.eV, time=(time.Time('1990-01-01'), time.Time('1999-12-31')), watcher=test_watcher) assert len(logs) < 10, ("Too many services in test_cone_and_spectral." " Try constraining the discovery phase more tightly to" " keep this test economical") skip_msg = ("Skipping ivo://org.gavo.dc/__system__/siap2/sitewide because" " it is served by ivo://org.gavo.dc/__system__/obscore/obscore") assert skip_msg in logs assert skip_msg in watcher_msgs assert len(images) >= 8 assert "RASS" in {im.obs_collection for im in images} @pytest.mark.remote_data def test_servedby_elision(): d = discover.ImageDiscoverer(space=(3, 1, 0.2)) # siap2/sitewide has isservedby to tap d.set_services( registry.search( registry.Ivoid( "ivo://org.gavo.dc/tap", "ivo://org.gavo.dc/__system__/siap2/sitewide"))) assert d.sia2_recs == [] assert len(d.obscore_recs) == 1 assert repr(d.obscore_recs[0]) == "" assert ('Skipping ivo://org.gavo.dc/__system__/siap2/sitewide' ' because it is served by ivo://org.gavo.dc/tap' in d.log_messages) @pytest.mark.remote_data def test_access_url_elision(): with pytest.warns(): di = discover.ImageDiscoverer( time=time.Time("1910-07-15", scale="utc"), spectrum=400*u.nm) di.set_services( registry.search( registry.Ivoid( "ivo://org.gavo.dc/tap", "ivo://org.gavo.dc/__system__/siap2/sitewide")), # that's important here: we *want* to query the same stuff twice purge_redundant=False) di.query_services() # make sure we found anything at all assert di.results assert len([1 for lm in di.log_messages if "skipped" in lm]) == 0 # make sure there are no duplicate records access_urls = [im.access_url for im in di.results] assert len(access_urls) == len(set(access_urls)) @pytest.mark.remote_data def test_cancelling(): def query_killer(disco, msg): if msg.startswith("Querying") and di.already_queried > 0: disco.reset_services() di = discover.ImageDiscoverer( time=time.Time("1980-07-15", scale="utc"), spectrum=400*u.nm, timeout=1, watcher=query_killer) di.set_services(registry.search(servicetype="sia2")) di.query_services() assert ('Cancelling queries with 1 service(s) queried' in di.log_messages) astropy-pyvo-f0fdda3/pyvo/io/000077500000000000000000000000001521254414300163645ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/__init__.py000066400000000000000000000001001521254414300204640ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/io/uws/000077500000000000000000000000001521254414300172025ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/uws/__init__.py000066400000000000000000000002421521254414300213110ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst __all__ = ['parse_job', 'parse_job_list', 'JobFile'] from .endpoint import * from .tree import * astropy-pyvo-f0fdda3/pyvo/io/uws/endpoint.py000066400000000000000000000102031521254414300213700ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains a contains the high-level functions to read the various VOSI Endpoints. """ from astropy.utils.xml.writer import XMLWriter from astropy.io.votable.util import convert_to_writable_filelike from ...utils.xml.elements import xmlattribute, parse_for_object from .tree import JobSummary, Jobs __all__ = ["parse_job", "parse_job_list", "JobFile"] def parse_job_list( source, pedantic=None, filename=None, _debug_python_based_parser=False ): """ Parses a job xml file (or file-like object), and returns a `~pyvo.io.uws.tree.Jobs` object. Parameters ---------- source : str or readable file-like object Path or file object containing a tableset xml file. pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. Returns ------- `~pyvo.io.uws.tree.Jobs` object See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ return parse_for_object(source, Jobs, pedantic, filename, _debug_python_based_parser).joblist def parse_job( source, pedantic=None, filename=None, _debug_python_based_parser=False ): """ Parses a job xml file (or file-like object), and returns a `~pyvo.io.uws.endpoint.JobFile` object. Parameters ---------- source : str or readable file-like object Path or file object containing a tableset xml file. pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. Returns ------- `~pyvo.io.uws.endpoint.JobFile` object See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ return parse_for_object(source, JobFile, pedantic, filename, _debug_python_based_parser) class JobFile(JobSummary): """ availability element: represents an entire file. The keyword arguments correspond to setting members of the same name, documented below. """ def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self._version = None @xmlattribute def version(self): return self._version @version.setter def version(self, version): self._version = version def parse(self, iterator, config): for start, tag, data, pos in iterator: if start and tag == 'xml': pass elif start and tag == 'job': # version was not required in v1.0, so default to that. self._version = data.get('version', '1.0') break return super().parse(iterator, config) def to_xml(self, fd): with convert_to_writable_filelike(fd) as _fd: w = XMLWriter(_fd) xml_header = ( '\n' '\n' ) w.write(xml_header) super().to_xml(w) astropy-pyvo-f0fdda3/pyvo/io/uws/tests/000077500000000000000000000000001521254414300203445ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/uws/tests/__init__.py000066400000000000000000000000001521254414300224430ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/000077500000000000000000000000001521254414300212555ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-error.xml000066400000000000000000000024711521254414300237040ustar00rootroot00000000000000 1337 ERROR 2018-01-01T02:00:00Z 2018-01-01T00:00:00Z 2018-01-01T00:05:00Z 2018-01-01T02:00:00Z 7200 2018-02-01T00:00:00Z ADQL SELECT 'test' doQuery We have problem astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-implicit-v1.0.xml000066400000000000000000000015301521254414300250420ustar00rootroot00000000000000 1576511540079_32840 COMPLETED 2019-12-16T10:52:20 2019-12-17T10:52:20 600 2019-12-17T10:52:20 ADQL-2.0 tap doQuery SELECT ra, dec FROM table astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-duplicate-elements.xml000066400000000000000000000015051521254414300273050ustar00rootroot00000000000000 myjobid COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table initial processing completed astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-empty-jobinfo.xml000066400000000000000000000014141521254414300263020ustar00rootroot00000000000000 myjobid COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-namespace-elements.xml000066400000000000000000000016631521254414300272740ustar00rootroot00000000000000 myjobid COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table 50 75 no collision astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-nested-jobinfo.xml000066400000000000000000000016051521254414300264300ustar00rootroot00000000000000 jobid123 COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table 1500 100 astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-simple-jobinfo.xml000066400000000000000000000016111521254414300264340ustar00rootroot00000000000000 test123 COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table 100 1 1 astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job-with-typed-jobinfo.xml000066400000000000000000000015721521254414300262760ustar00rootroot00000000000000 myid123 COMPLETED 2025-06-04T00:00:00Z 2025-06-04T00:05:00Z 2025-06-04T02:00:00Z 7200 2025-06-04T00:00:00Z SELECT * FROM table 100 3.14 pyvo astropy-pyvo-f0fdda3/pyvo/io/uws/tests/data/job.xml000066400000000000000000000024561521254414300225600ustar00rootroot00000000000000 1337 COMPLETED 2018-01-01T02:00:00Z 2018-01-01T00:00:00Z 2018-01-01T00:05:00Z 2018-01-01T02:00:00Z 7200 2018-02-01T00:00:00Z ADQL SELECT 'test' doQuery astropy-pyvo-f0fdda3/pyvo/io/uws/tests/test_job.py000066400000000000000000000152541521254414300225360ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.io.uws """ import pytest import pyvo.io.uws as uws from pyvo.io.uws.tree import ExtensibleUWSElement from astropy.utils.data import get_pkg_data_filename class TestJob: def test_job(self): job = uws.parse_job(get_pkg_data_filename( "data/job.xml")) assert job.jobid == '1337' assert job.version == '1.1' job = uws.parse_job(get_pkg_data_filename( "data/job-implicit-v1.0.xml")) assert job.version == '1.0' def test_error_job(self): job = uws.parse_job(get_pkg_data_filename( "data/job-error.xml")) assert job.jobid == '1337' assert job.version == '1.1' assert not job.errorsummary.has_detail assert job.errorsummary.type_ == 'fatal' assert job.errorsummary.message.content == 'We have problem' def test_simple_jobinfo(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-simple-jobinfo.xml")) assert job.jobinfo is not None assert 'tapQueryInfo' in job.jobinfo assert job.jobinfo['tapQueryInfo'] is not None tap_info = job.jobinfo['tapQueryInfo'] assert 'pct_complete' in tap_info assert 'chunks_processed' in tap_info assert 'total_chunks' in tap_info assert tap_info['pct_complete'].value == 100 assert tap_info['chunks_processed'].value == 1 assert tap_info['total_chunks'].value == 1 assert tap_info['pct_complete'].text == "100" keys = list(job.jobinfo.keys()) assert 'tapQueryInfo' in keys def test_jobinfo_multiple_access_patterns(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-simple-jobinfo.xml")) assert job.jobinfo is not None tap_info1 = job.jobinfo['tapQueryInfo'] tap_info2 = job.jobinfo.get('tapQueryInfo') assert tap_info1 is tap_info2 assert tap_info1 is not None def test_jobinfo_text_content_and_types(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-typed-jobinfo.xml")) assert job.jobinfo is not None int_elem = job.jobinfo['integer_value'] assert int_elem.value == 100 assert isinstance(int_elem.value, int) assert int_elem.text == "100" float_elem = job.jobinfo['float_value'] assert float_elem.value == 3.14 assert isinstance(float_elem.value, float) assert float_elem.text == "3.14" string_elem = job.jobinfo['string_value'] assert string_elem.value == "pyvo" assert isinstance(string_elem.value, str) assert string_elem.text == "pyvo" empty_elem = job.jobinfo['empty_value'] assert empty_elem.value is None assert empty_elem.text is None def test_jobinfo_get_methods(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-simple-jobinfo.xml")) jobinfo = job.jobinfo assert jobinfo.get('nonexistent') is None assert jobinfo.get('nonexistent', 'default') == 'default' tap_info = jobinfo.get('tapQueryInfo') assert tap_info is not None assert 'tapQueryInfo' in jobinfo assert 'nonexistent' not in jobinfo tap_info = jobinfo['tapQueryInfo'] assert tap_info is not None with pytest.raises(KeyError): _ = jobinfo['nonexistent'] def test_jobinfo_edge_cases(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-simple-jobinfo.xml")) jobinfo = job.jobinfo str_repr = str(jobinfo) assert 'jobInfo' in str_repr or len(str_repr) > 0 repr_str = repr(jobinfo) assert 'ExtensibleUWSElement' in repr_str assert 'elements=' in repr_str def test_no_jobinfo(self): job = uws.parse_job(get_pkg_data_filename( "data/job.xml")) assert job.jobinfo is None def test_nested_jobinfo_access(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-nested-jobinfo.xml")) assert job.jobinfo is not None query_info = job.jobinfo['queryInfo'] assert query_info is not None metrics = query_info['metrics'] assert metrics is not None assert metrics['execution_time'].value == 1500 assert metrics['rows_returned'].value == 100 def test_jobinfo_overwrite_behavior(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-duplicate-elements.xml")) assert job.jobinfo is not None status = job.jobinfo.get('status') assert status is not None assert status.value == "completed" def test_extensible_element_creation(self): element = ExtensibleUWSElement(config={}, pos=(1, 1), _name='test') assert element._name == 'test' assert len(element._elements) == 0 assert 'test' in str(element) assert 'elements=0' in repr(element) assert 'nonexistent' not in element assert element.get('nonexistent') is None assert list(element.keys()) == [] def test_jobinfo_namespace_elements(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-namespace-elements.xml")) assert job.jobinfo is not None progress = job.jobinfo.get('progress') assert progress is not None # Assert that the value is the last one of the elements with the same name assert progress.value == 75 unique_elem = job.jobinfo.get('uniqueElement') assert unique_elem is not None keys = job.jobinfo.keys() assert len(keys) > 0 def test_multiple_elements_same_name(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-duplicate-elements.xml")) assert job.jobinfo is not None _ = [key for key in job.jobinfo.keys() if 'status' in key] status = job.jobinfo['status'] assert status.value == "completed" def test_empty_jobinfo(self): job = uws.parse_job(get_pkg_data_filename( "data/job-with-empty-jobinfo.xml")) assert job.jobinfo is not None assert len(job.jobinfo.keys()) == 0 assert len(job.jobinfo._elements) == 0 def test_jobinfo_numeric_content_conversion(self): element = ExtensibleUWSElement(config={}, pos=(1, 1), _name='test') element.content = 100 assert not isinstance(element.content, str) assert element.content == 100 element.parse(iter([]), {}) assert element.text == "100" assert element.value == 100 assert isinstance(element.text, str) astropy-pyvo-f0fdda3/pyvo/io/uws/tree.py000066400000000000000000000373261521254414300205260ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains xml element classes as defined in the VOResource standard. """ from functools import partial from astropy.utils.collections import HomogeneousList from astropy.time import Time, TimeDelta from ...utils.xml.elements import ( xmlattribute, xmlelement, Element, ContentMixin) uwselement = partial(xmlelement, ns='uws') def XSInDate(val): if not val: return None try: return Time(val, format='iso') except ValueError: pass try: return Time(val, format='isot') except ValueError: pass raise ValueError(f'Cannot parse datetime {val}') InDuration = partial(TimeDelta, format='sec') XSOutDate = partial(Time, out_subfmt='date') __all__ = [ 'UWSElement', 'Reference', 'JobSummary', 'Parameters', 'Parameter', 'Results', 'Result', 'ExtensibleUWSElement', 'Jobs', 'JobInfo'] def _convert_boolean(value, default=None): return { 'false': False, '0': False, 'true': True, '1': True }.get(value, default) class UWSElement(Element): def __init__(self, config=None, pos=None, _name='', _ns='uws', **kwargs): super().__init__(config, pos, _name, 'uws', **kwargs) class Reference(UWSElement): """standard xlink references""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.type = kwargs.get('xlink:type') self.href = kwargs.get('xlink:href') @xmlattribute(name='xlink:type') def type(self): """the type of the result""" return self._type @type.setter def type(self, type_): self._type = type_ @xmlattribute(name='xlink:href') def href(self): """the url the result can be retrieved""" return self._href @href.setter def href(self, href): self._href = href class JobSummary(Element): def __init__(self, config=None, pos=None, _name='job', **kwargs): super().__init__(config, pos, _name, **kwargs) self.jobid = kwargs.get('id') self._runid = None self._ownerid = None self._phase = None self._quote = None self._creationtime = None self._starttime = None self._endtime = None self._executionduration = None self._destruction = None self._parameters = Parameters() self._results = Results() self._errorsummary = None self._message = None self._jobinfo = None @uwselement(name='jobId', plain=True) def jobid(self): """ The identifier for the job """ return self._jobid @jobid.setter def jobid(self, jobid): self._jobid = jobid @uwselement(name='runId', plain=True) def runid(self): """client supplied identifier""" return self._runid @runid.setter def runid(self, runid): self._runid = runid @uwselement(name='ownerId', plain=True) def ownerid(self): """the owner (creator) of the job""" return self._ownerid @ownerid.setter def ownerid(self, ownerid): self._ownerid = ownerid @uwselement(plain=True) def phase(self): """the execution phase""" return self._phase @phase.setter def phase(self, phase): self._phase = phase @uwselement(plain=True) def quote(self): """estimated completion time""" return self._quote @quote.setter def quote(self, quote): self._quote = XSInDate(quote) @quote.formatter def quote(self): try: return str(XSOutDate(self._quote)) except ValueError: return None @uwselement(name='creationTime', plain=True) def creationtime(self): """The instant at which the job was created.""" return self._creationtime @creationtime.setter def creationtime(self, creationtime): self._creationtime = XSInDate(creationtime) @creationtime.formatter def creationtime(self): try: return str(XSOutDate(self._creationtime)) except ValueError: return None @uwselement(name='startTime', plain=True) def starttime(self): """The instant at which the job started execution.""" return self._starttime @starttime.setter def starttime(self, starttime): self._starttime = XSInDate(starttime) @starttime.formatter def starttime(self): try: return str(XSOutDate(self._starttime)) except ValueError: return None @uwselement(name='endTime', plain=True) def endtime(self): """The instant at which the job finished execution""" return self._endtime @endtime.setter def endtime(self, endtime): self._endtime = XSInDate(endtime) @endtime.formatter def endtime(self): try: return str(XSOutDate(self._endtime)) except ValueError: return None @uwselement(name='executionDuration', plain=True) def executionduration(self): """ The duration (in seconds) for which the job should be allowed to run - a value of 0 is intended to mean unlimited """ return self._executionduration @executionduration.setter def executionduration(self, executionduration): if not isinstance(executionduration, TimeDelta): executionduration = InDuration(float(executionduration)) self._executionduration = executionduration @executionduration.formatter def executionduration(self): if self.executionduration: return str(int(self._executionduration.value)) @uwselement(plain=True) def destruction(self): """The time at which the whole job will be destroyed""" return self._destruction @destruction.setter def destruction(self, destruction): self._destruction = XSInDate(destruction) @destruction.formatter def destruction(self): try: return str(XSOutDate(self._destruction)) except ValueError: return None @uwselement def parameters(self): """The parameters to the job""" return self._parameters @parameters.adder def parameters(self, iterator, tag, data, config, pos): parameters = Parameters(config, pos, 'parameters', **data) parameters.parse(iterator, config) self._parameters = parameters @uwselement def results(self): """The results for the job""" return self._results @results.adder def results(self, iterator, tag, data, config, pos): results = Results(config, pos, 'results', **data) results.parse(iterator, config) self._results = results @uwselement(name='errorSummary', plain=True) def errorsummary(self): """The error summary of the job.""" return self._errorsummary @errorsummary.adder def errorsummary(self, iterator, tag, data, config, pos): res = ErrorSummary(config, pos, 'errorSummary', **data) res.parse(iterator, config) self._errorsummary = res @uwselement(name='jobInfo', plain=True) # � Add plain=True def jobinfo(self): """Implementation-specific job information""" return self._jobinfo @jobinfo.adder def jobinfo(self, iterator, tag, data, config, pos): jobinfo = JobInfo(config, pos, 'jobInfo', **data) jobinfo.parse(iterator, config) self._jobinfo = jobinfo class Jobs(HomogeneousList, UWSElement): """A parsed representation of the joblist endpoint. """ def __init__(self, config=None, pos=None, _name='jobs', **kwargs): HomogeneousList.__init__(self, JobSummary) UWSElement.__init__(self, config, pos, _name, **kwargs) @uwselement def jobs(self): return self @jobs.adder def jobs(self, iterator, tag, data, config, pos): return @uwselement(name='jobref') def joblist(self): return self @joblist.adder def joblist(self, iterator, tag, data, config, pos): job = JobSummary(config, pos, 'jobref', **data) job.parse(iterator, config) self.append(job) class Parameters(UWSElement, HomogeneousList): """ Parameters element of a job """ def __init__(self, config=None, pos=None, _name='parameters', **kwargs): """ """ # Note: Above is a load-bearing empty comment. # Do not remove, or else the Sphinx build may fail (see PR #193). HomogeneousList.__init__(self, Parameter) UWSElement.__init__(self, config, pos, _name, **kwargs) @uwselement(name='parameter') def parameters(self): return self @parameters.adder def parameters(self, iterator, tag, data, config, pos): parameter = Parameter(config, pos, 'parameter', **data) parameter.parse(iterator, config) self.append(parameter) class Parameter(ContentMixin, UWSElement): def __init__(self, config=None, pos=None, _name='parameter', **kwargs): super().__init__(config, pos, _name, **kwargs) self.byreference = _convert_boolean(kwargs.get('byReference')) self.id_ = kwargs.get('id') @xmlattribute def byreference(self): """ if this attribute is true then the content of the parameter represents a URL to retrieve the actual parameter value. """ return self._byreference @byreference.setter def byreference(self, byreference): self._byreference = byreference @xmlattribute(name='id') def id_(self): """the identifier for the parameter""" return self._id @id_.setter def id_(self, id_): self._id = id_ class Results(UWSElement, HomogeneousList): """ """ def __init__(self, config=None, pos=None, _name='results', **kwargs): HomogeneousList.__init__(self, Result) UWSElement.__init__(self, config, pos, _name, **kwargs) @uwselement(name='result') def results(self): return self @results.adder def results(self, iterator, tag, data, config, pos): result = Result(config, pos, 'result', **data) result.parse(iterator, config) self.append(result) class Result(Reference, UWSElement): """A reference to a UWS result.""" def __init__(self, config=None, pos=None, _name='result', **kwargs): super().__init__(config, pos, _name, **kwargs) self.id_ = kwargs.get('id') self.size = int(kwargs.get('size') or 0) self.mimetype = kwargs.get('mime-type') @xmlattribute(name='id') def id_(self): """the identifier for the result""" return self._id @id_.setter def id_(self, id_): self._id = id_ @xmlattribute def size(self): """the size of the result""" return self._size @size.setter def size(self, size): self._size = size @xmlattribute def mimetype(self): """the mimetype of the result""" return self._mimetype @mimetype.setter def mimetype(self, mimetype): self._mimetype = mimetype class ErrorSummary(UWSElement): """A UWS Error summary.""" def __init__(self, config=None, pos=None, _name='errorSummary', **kwargs): super().__init__(config, pos, _name, **kwargs) self.type_ = kwargs.get('type') self.has_detail = _convert_boolean(kwargs.get('hasDetail')) self.message = None @xmlattribute(name='type') def type_(self): """the type of the error""" return self._type @type_.setter def type_(self, type_): self._type = type_ @xmlattribute def has_detail(self): """whether error has details""" return self._has_detail @has_detail.setter def has_detail(self, has_detail): self._has_detail = has_detail @uwselement(name='message') def message(self): """The error message""" return self._message @message.setter def message(self, message): self._message = message class Message(ContentMixin, UWSElement): """The actual UWS Error message.""" def __init__(self, config=None, pos=None, _name='message', **kwargs): super().__init__(config, pos, _name, **kwargs) class ExtensibleUWSElement(ContentMixin, UWSElement): """ UWS Element that can handle arbitrary child elements. """ def __init__(self, config=None, pos=None, _name='', **kwargs): super().__init__(config, pos, _name, **kwargs) self._elements = {} self._text_content = None self._name = _name def _add_unknown_tag(self, iterator, tag, data, config, pos): """Handle unknown tags without generating warnings Parameters ---------- iterator : iterator The iterator that provides the XML elements. tag : str The tag name of the unknown element. data : dict Additional data associated. config : dict Configuration options. pos : tuple The position of the element in the XML document (line, column). Returns ------- ExtensibleUWSElement object """ element = ExtensibleUWSElement(config, pos, tag, **data) element.parse(iterator, config) # Last element with the same tag wins self._elements[tag] = element return element def parse(self, iterator, config): """Override parse to capture text content for leaf elements""" super().parse(iterator, config) # Capture text content from ContentMixin if hasattr(self, 'content') and self.content is not None: if isinstance(self.content, str): self._text_content = self.content.strip() else: self._text_content = str(self.content).strip() if self.content else None @property def text(self): """Get the text content of this element""" if self._text_content is not None and self._text_content.strip(): return self._text_content if hasattr(self, 'content') and self.content is not None: content_str = str(self.content).strip() return content_str if content_str else None return None @property def value(self): """Get the text content converted to appropriate type""" text = self.text if not text: return None # Try to convert to int, float, if not leave as string try: return int(text) except ValueError: try: return float(text) except ValueError: return text def get(self, name, default=None): """Get element by name (supports both local names and full namespaced names)""" return self._elements.get(name, default) def keys(self): """Return all available keys (both local and namespaced)""" return list(self._elements.keys()) def __contains__(self, name): """Support 'in' operator""" return name in self._elements def __getitem__(self, name): """Dict-like access""" if name not in self._elements: raise KeyError(f"Element '{name}' not found") return self._elements[name] def __str__(self): if self._text_content: return self._text_content return f"<{self._name} with {len(set(self._elements.values()))} children>" def __repr__(self): unique_elements = len(set(self._elements.values())) return f"ExtensibleUWSElement(name='{self._name}', elements={unique_elements})" class JobInfo(ExtensibleUWSElement): """JobInfo element that can contain arbitrary elements.""" def __init__(self, config=None, pos=None, _name='jobInfo', **kwargs): super().__init__(config, pos, _name, **kwargs) astropy-pyvo-f0fdda3/pyvo/io/vosi/000077500000000000000000000000001521254414300173445ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/vosi/__init__.py000066400000000000000000000002131521254414300214510ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .endpoint import parse_tables, parse_capabilities, parse_availability astropy-pyvo-f0fdda3/pyvo/io/vosi/availability.py000066400000000000000000000034171521254414300223750ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from astropy.utils.collections import HomogeneousList from ...utils.xml.elements import xmlelement, Element from .exceptions import W32, W33, W34, W35 __all__ = ["Availability"] ###################################################################### # FACTORY FUNCTIONS def _convert_boolean(value, default=None): return { 'false': False, '0': False, 'true': True, '1': True }.get(value, default) ###################################################################### # ELEMENT CLASSES class Availability(Element): def __init__(self, config=None, pos=None, _name='availability', **kwargs): super().__init__(config, pos, _name, **kwargs) self._available = None self._upsince = None self._downat = None self._backat = None self._notes = HomogeneousList(str) @xmlelement(plain=True, multiple_exc=W32) def available(self): return self._available @available.setter def available(self, available): self._available = _convert_boolean(available) @xmlelement(name='upSince', plain=True, multiple_exc=W33) def upsince(self): return self._upsince @upsince.setter def upsince(self, upsince): self._upsince = upsince @xmlelement(name='downAt', plain=True, multiple_exc=W34) def downat(self): return self._downat @downat.setter def downat(self, downat): self._downat = downat @xmlelement(name='backAt', plain=True, multiple_exc=W35) def backat(self): return self._backat @backat.setter def backat(self, backat): self._backat = backat @xmlelement(name='note', plain=True) def notes(self): return self._notes astropy-pyvo-f0fdda3/pyvo/io/vosi/endpoint.py000066400000000000000000000300531521254414300215370ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains a contains the high-level functions to read the various VOSI Endpoints. """ from astropy.utils.xml import iterparser from astropy.utils.collections import HomogeneousList from astropy.io.votable.exceptions import vo_raise, vo_warn from astropy.io.votable.util import version_compare from ...utils.xml.elements import xmlattribute, xmlelement, Element from . import voresource as vr from . import vodataservice as vs from . import availability as av from .exceptions import W15, W16, E07, E10 __all__ = [ "parse_tables", "parse_capabilities", "parse_availability", "TablesFile", "CapabilitiesFile", "AvailabilityFile"] def _pedantic_settings(pedantic): """ Controls the pedantic parser settings. Based on the bool passed in to pedantic, create a config to be passed to astropy parsing to raise exceptions or ignore them on pedantic errors. Parameters ---------- pedantic : bool When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Returns ------- A dict containing 'verify' configuration settings. """ if pedantic: return {'verify': 'exception'} else: return {'verify': 'warn'} def parse_tables(source, *, pedantic=None, filename=None, _debug_python_based_parser=False): """ Parses a tableset xml file (or file-like object), and returns a `~pyvo.io.vosi.endpoint.TablesFile` object. Parameters ---------- source : str or readable file-like object Path or file object containing a tableset xml file. pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. _debug_python_based_parser : bool, optional If `True`, use the Python-based parser. This is useful for debugging purposes. Defaults to False. Returns ------- tables_file : `~pyvo.io.vosi.endpoint.TablesFile` object See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ config = _pedantic_settings(pedantic) if filename is None and isinstance(source, str): config['filename'] = source else: config['filename'] = filename with iterparser.get_xml_iterator( source, _debug_python_based_parser=_debug_python_based_parser ) as iterator: return TablesFile( config=config, pos=(1, 1)).parse(iterator, config) def parse_capabilities(source, *, pedantic=None, filename=None, _debug_python_based_parser=False): """ Parses a capabilities xml file (or file-like object), and returns a `~pyvo.io.vosi.endpoint.CapabilitiesFile` object. Parameters ---------- source : str or readable file-like object Path or file object containing a capabilities xml file. pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. _debug_python_based_parser : bool, optional If `True`, use the Python-based parser. This is useful for debugging purposes. Defaults to False. Returns ------- capabilities_file : `~pyvo.io.vosi.endpoint.CapabilitiesFile` object See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ config = _pedantic_settings(pedantic) if filename is None and isinstance(source, str): config['filename'] = source else: config['filename'] = filename with iterparser.get_xml_iterator( source, _debug_python_based_parser=_debug_python_based_parser ) as iterator: return CapabilitiesFile( config=config, pos=(1, 1)).parse(iterator, config) def parse_availability(source, *, pedantic=None, filename=None, _debug_python_based_parser=False): """ Parses a availability xml file (or file-like object), and returns a `~pyvo.io.vosi.endpoint.AvailabilityFile` object. Parameters ---------- source : str or readable file-like object Path or file object containing a availability xml file. pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. _debug_python_based_parser : bool, optional If `True`, use the Python-based parser. This is useful for debugging purposes. Defaults to False. Returns ------- availability_file : `~pyvo.io.vosi.endpoint.AvailabilityFile` object See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ config = _pedantic_settings(pedantic) if filename is None and isinstance(source, str): config['filename'] = source else: config['filename'] = filename with iterparser.get_xml_iterator( source, _debug_python_based_parser=_debug_python_based_parser ) as iterator: return AvailabilityFile( config=config, pos=(1, 1)).parse(iterator, config) class TablesFile(Element): """ TABLESET/TABLE element: represents an entire file. The keyword arguments correspond to setting members of the same name, documented below. """ def __init__(self, *, config=None, pos=None, version="1.1"): Element.__init__(self, config, pos) self._tableset = None self._table = None self._ntables = None version = str(version) if version not in ("1.0", "1.1"): raise ValueError("'version' should be one of '1.0' or '1.1'") config['version'] = version self._version = version def __repr__(self): if self.table: return repr(self.table) elif self.tableset: return repr(self.tableset) else: return super().__repr__() @xmlattribute def version(self): """ The version of the TableSet specification that the file uses. """ return self._version @version.setter def version(self, version): version = str(version) if version not in ('1.0', '1.1'): raise ValueError( "pyvo.io.vosi.tables only supports VOSI versions 1.0 and 1.1") self._version = version @xmlelement def tableset(self): """ The tableset. Must be a `~pyvo.io.vosi.vodataservice.TableSet` object. """ return self._tableset @tableset.setter def tableset(self, tableset): self._tableset = tableset @tableset.adder def tableset(self, iterator, tag, data, config, pos): tableset = vs.TableSet(config, pos, 'tableset', **data) tableset.parse(iterator, config) self._tableset = tableset @xmlelement(cls=vs.VODataServiceTable) def table(self): """ The `~pyvo.io.vosi.vodataservice.VODataServiceTable` root element if present. """ return self._table @table.setter def table(self, table): self._table = table @property def ntables(self): """ The number of tables in the file. """ return self._ntables def parse(self, iterator, config): super().parse(iterator, config) if self.tableset is None and self.table is None: vo_raise(E07, config=config, pos=self._pos) self._version = config['version'] if config['version'] not in ('1.0', '1.1'): vo_warn(W15, config=config, pos=self._pos) if self.table: if version_compare(config['version'], '1.1') < 0: vo_warn(W16, config=config, pos=self._pos) self._ntables = 1 else: self._ntables = sum( len(schema.tables) for schema in self.tableset.schemas) return self def iter_tables(self): """ Iterates over all tables in the VOSITables file in a "flat" way, ignoring the schemas. """ if self.table: yield self.table else: for schema in self.tableset.schemas: yield from schema.tables def get_first_table(self): """ When you parse table metadata for a single table here is only one table in the file, and that's all you need. This method returns that first table. """ for table in self.iter_tables(): return table raise IndexError("No table found in VOSITables file.") def get_table_by_name(self, name): """ Looks up a table element by the given name. """ for table in self.iter_tables(): if table.name == name: return table raise KeyError(f"No table with name {name} found") class CapabilitiesFile(Element, HomogeneousList): """ capabilities element: represents an entire file. The keyword arguments correspond to setting members of the same name, documented below. """ def __init__(self, *, config=None, pos=None, _name='capabilities', **kwargs): Element.__init__(self, config=config, pos=pos, **kwargs) HomogeneousList.__init__(self, vr.Capability) @xmlelement(name='capability') def capabilities(self): """List of `~pyvo.io.vosi.voresource.Capability` objects""" return self @capabilities.adder def capabilities(self, iterator, tag, data, config, pos): capability = vr.Capability(config, pos, 'capability', **data) capability.parse(iterator, config) self.append(capability) def parse(self, iterator, config): for start, tag, data, pos in iterator: if start: if tag == "xml": pass elif tag == "capabilities": break else: vo_raise(E10, config=config, pos=pos) super().parse(iterator, config) return self class AvailabilityFile(av.Availability): """ availability element: represents an entire file. The keyword arguments correspond to setting members of the same name, documented below. """ def parse(self, iterator, config): for start, tag, data, pos in iterator: if start: if tag == 'xml': pass elif tag == 'availability': break super().parse(iterator, config) return self astropy-pyvo-f0fdda3/pyvo/io/vosi/exceptions.py000066400000000000000000000340541521254414300221050ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ .. _warnings: Warnings -------- .. note:: Most of the following warnings indicate violations of the VOSI specification. They should be reported to the authors of the tools that produced the VOSI file. To control the warnings emitted, use the standard Python :mod:`warnings` module. Most of these are of the type `VOSISpecWarning`. {warnings} .. _exceptions: Exceptions ---------- .. note:: This is a list of many of the fatal exceptions emitted by vosi.endpoint when the file does not conform to spec. Other exceptions may be raised due to unforeseen cases or bugs in vosi.endpoint itself. {exceptions} """ from astropy.utils.exceptions import AstropyWarning from ...utils.xml.exceptions import XMLWarning __all__ = ["VOSIWarning"] __all__ += [f"W{i:0>2}" for i in range(1, 36)] __all__ += [f"E{i:0>2}" for i in range(1, 10)] class VOSIWarning(AstropyWarning): """ The base class of all VOSI warnings and exceptions. Handles the formatting of the message with a warning or exception code, filename, line and column number. """ class W01(VOSIWarning, XMLWarning): """ The attribute must be a valid URI as defined in `RFC 2396 `_. """ message_template = "'{}' is not a valid URI" default_args = ('x',) class W02(VOSIWarning, XMLWarning): """ The attribute must be any of the accepted types in the VOSI spec. """ message_template = ( "'{}' is not a valid datatype according to the VOSI spec") default_args = ('x',) class W03(VOSIWarning, XMLWarning): """ The attribute must be an positive integer. """ message_template = "Size must be positive" class W04(VOSIWarning, XMLWarning): """ The attribute must have one of the recognized values 'indexed', 'primary', 'nullable'. """ message_template = "'{}' is not a recognized flag" default_args = ('x',) class W05(VOSIWarning, XMLWarning): """ A ``name`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one name element" default_args = ('x',) class W06(VOSIWarning, XMLWarning): """ A ``description`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one description element" default_args = ('x',) class W07(VOSIWarning, XMLWarning): """ A ``unit`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one unit element" default_args = ('x',) class W08(VOSIWarning, XMLWarning): """ A ``ucd`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one ucd element" default_args = ('x',) class W09(VOSIWarning, XMLWarning): """ A ``utype`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one utype element" default_args = ('x',) class W10(VOSIWarning, XMLWarning): """ A ``fromColumn`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one fromColumn element" default_args = ('x',) class W11(VOSIWarning, XMLWarning): """ A ``targetColumn`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one targetColumn element" default_args = ('x',) class W12(VOSIWarning, XMLWarning): """ A ``targetTable`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one targetTable element" default_args = ('x',) class W13(VOSIWarning, XMLWarning): """ A ``title`` element can only appear once within its parent element. According to the schema, it may only occur once (`1.1 `__, """ message_template = "{} element contains more than one title element" default_args = ('x',) class W14(VOSIWarning, XMLWarning): """ The tableset element must contain at least one schema element. """ message_template = ( "tableset element must contain at least one schema element.") class W15(VOSIWarning, XMLWarning): """ Unknown issues may arise using ``dal`` with VOSITables files from a version other than 1.0 or 1.1 """ message_template = ( 'pyvo.dal is designed for VOSITables version 1.0, and 1.1, but ' + 'this file is {}') default_args = ('x',) class W16(VOSIWarning, XMLWarning): """ The table element is not a valid root element in VOSI before version 1.1 """ message_template = ( "The element table is not a valid root element in VOSI below v1.1") class W17(VOSIWarning, XMLWarning): """ A ``queryType`` element can only appear once within the ParamHTTP element. According to the schema, it may only occur once (`1.1 `__, """ message_template = ( "ParamHTTP element contains more than one ParamHTTP element") class W18(VOSIWarning, XMLWarning): """ The QueryType element must not occur more than two times. """ message_template = ( "The QueryType element must not occur more than two times.") class W19(VOSIWarning, XMLWarning): """ TAP Capabilities must not have an ivo-id other than ivo://ivoa.net/std/TAP """ message_template = ( "TAP Capabilities must not have an ivo-id other than " "ivo://ivoa.net/std/TAP" ) class W20(VOSIWarning, XMLWarning): """ TAP Capabilties must have at least one `language` element. """ message_template = ( "TAP Capabilties must have at least one `language` element.") class W21(VOSIWarning, XMLWarning): """ TAP Capabilties must have at least one outputFormat element. """ message_template = ( "TAP Capabilties must have at least one `outputFormat` element.") class W22(VOSIWarning, XMLWarning): """ The `retentionPeriod` element must not occur more than once. """ message_template = ( "The retentionPeriod element must not occur more than once") class W23(VOSIWarning, XMLWarning): """ The `executionDuration` element must not occur more than once. """ message_template = ( "The executionDuration element must not occur more than once") class W24(VOSIWarning, XMLWarning): """ The `outputLimit` element must not occur more than once. """ message_template = ( "The outputLimit element must not occur more than once") class W25(VOSIWarning, XMLWarning): """ The `uploadLimit` element must not occur more than once. """ message_template = ( "The uploadLimit element must not occur more than once") class W26(VOSIWarning, XMLWarning): """ The ivo-id attribute is mandatory. """ message_template = "The ivo-id attribute is mandatory" class W27(VOSIWarning, XMLWarning): """ The `form` element must not occur more than once. """ message_template = "The form element must not occur more than once" class W28(VOSIWarning, XMLWarning): """ The `mime` element must not occur more than once. """ message_template = "The mime element must not occur more than once" class W29(VOSIWarning, XMLWarning): """ The `default` element must not occur more than once. """ message_template = "The default element must not occur more than once" class W30(VOSIWarning, XMLWarning): """ The `hard` element must not occur more than once. """ message_template = "The hard element must not occur more than once" class W31(VOSIWarning, XMLWarning): """ The content of the `DataLimit` element must be byte or row """ message_template = ( "The content of the DataLimit element must be byte or row") class W32(VOSIWarning, XMLWarning): """ The `available` element must not occur more than once. """ message_template = "The available element must not occur more than once" class W33(VOSIWarning, XMLWarning): """ The `upSince` element must not occur more than once. """ message_template = "The upSince element must not occur more than once" class W34(VOSIWarning, XMLWarning): """ The `downAt` element must not occur more than once. """ message_template = "The downAt element must not occur more than once" class W35(VOSIWarning, XMLWarning): """ The `backAt` element must not occur more than once. """ message_template = "The backAt element must not occur more than once" class W36(VOSIWarning, XMLWarning): """ The `resultType` element must not occur more than once. """ message_template = "The resultType element must not occur more than once" class W37(VOSIWarning, XMLWarning): """ The `dataType` element must not occur more than once. """ message_template = "The dataType element must not occur more than once" class E01(VOSIWarning, XMLWarning, ValueError): r""" The attribute must be a valid arraysize according to the VOTable standard. From the VOTable 1.2 spec: A table cell can contain an array of a given primitive type, with a fixed or variable number of elements; the array may even be multidimensional. For instance, the position of a point in a 3D space can be defined by the following:: and each cell corresponding to that definition must contain exactly 3 numbers. An asterisk (\*) may be appended to indicate a variable number of elements in the array, as in:: where it is specified that each cell corresponding to that definition contains 0 to 100 integer numbers. The number may be omitted to specify an unbounded array (in practice up to =~2×10� elements). A table cell can also contain a multidimensional array of a given primitive type. This is specified by a sequence of dimensions separated by the ``x`` character, with the first dimension changing fastest; as in the case of a simple array, the last dimension may be variable in length. As an example, the following definition declares a table cell which may contain a set of up to 10 images, each of 64×64 bytes:: **References**: `1.1 `__, `1.2 `__ """ message_template = "Invalid arraysize attribute '{}'" default_args = ('x',) class E02(VOSIWarning, XMLWarning, ValueError): """ The `FKColumn` element must have a `fromColumn`. """ message_template = "fkColumn element is missing a fromColumn" class E03(VOSIWarning, XMLWarning, ValueError): """ The element must have a `targetColumn`. """ message_template = "The element is missing a targetColumn" class E04(VOSIWarning, XMLWarning, ValueError): """ The element must have a `targetTable`. """ message_template = "The element is missing a targetTable" class E05(VOSIWarning, XMLWarning, ValueError): """ The element must contain at least one `fkColumn`. """ message_template = "The element contains no `fkColumn`" class E06(VOSIWarning, XMLWarning, ValueError): """ The element must have a ``name`` element. """ message_template = "The {} element must have a name element" default_args = ('x',) class E07(VOSIWarning, XMLWarning, ValueError): """ Raised either when the file doesn't appear to be XML, or the root element is not tableset or table. """ message_template = "File does not appear to be a VOSITables file" class E08(VOSIWarning, XMLWarning, ValueError): """ The element must have a ``version`` element. """ message_template = "The {} element must have a version element" default_args = ('x',) class E09(VOSIWarning, XMLWarning, ValueError): """ The element must have a ``form`` element. """ message_template = "The {} element must have a form element" default_args = ('x',) class E10(VOSIWarning, XMLWarning, ValueError): """ Raised when then file doesn't appear to be valid capabilities xml """ message_template = "File does not appear to be a VOSICapabilities file" class VOSIError(Exception): """ Raised for non-XML VOSI errors """ pass astropy-pyvo-f0fdda3/pyvo/io/vosi/tapregext.py000066400000000000000000000416771521254414300217400ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from astropy.utils.collections import HomogeneousList from textwrap import indent from astropy.io.votable.exceptions import vo_raise, warn_or_raise from ...utils.xml.elements import ( Element, ContentMixin, xmlelement, xmlattribute) from . import voresource as vr from .exceptions import ( W05, W06, W19, W20, W21, W22, W23, W24, W25, W26, W27, W28, W29, W30, W31, E06, E08, E09, VOSIError) __all__ = [ "TAPCapRestriction", "TableAccess", "DataModelType", "Language", "Version", "LanguageFeatureList", "LanguageFeature", "OutputFormat", "UploadMethod", "TimeLimits", "DataLimits", "DataLimit"] INDENT = 4 * " " ###################################################################### # ELEMENT CLASSES class DataModelType(ContentMixin, Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) ivo_id = kwargs.get('ivo-id', None) if ivo_id is None: warn_or_raise(W26, W26, config=config, pos=pos) self.ivo_id = ivo_id def __repr__(self): return '{}'.format( self.ivo_id, self.content) def describe(self): """ Prints out a human readable description """ print(f"Datamodel {self.content}") print(indent(self.ivo_id, INDENT)) print() @xmlattribute(name='ivo-id') def ivo_id(self): """The IVORN of the data model.""" return self._ivo_id @ivo_id.setter def ivo_id(self, ivo_id): self._ivo_id = ivo_id class OutputFormat(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) ivo_id = kwargs.get('ivo-id') self.mime = None self._aliases = HomogeneousList(str) self.ivo_id = ivo_id def __repr__(self): return '{}'.format( self.ivo_id, self.mime) def describe(self): """ Prints out a human readable description """ print(f'Output format {self.mime}') if self.aliases: print(indent('Also available as {}'.format(', '.join(self.aliases)), INDENT)) print() @xmlelement(plain=True, multiple_exc=W28) def mime(self): return self._mime @mime.setter def mime(self, mime): self._mime = mime @xmlelement(name='alias') def aliases(self): return self._aliases class UploadMethod(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) ivo_id = kwargs.get('ivo-id') self.ivo_id = ivo_id def __repr__(self): return f'' def describe(self): """ Prints out a human readable description """ print("Upload method supported") print(indent(self.ivo_id, INDENT)) print() @xmlattribute(name='ivo-id') def ivo_id(self): """The IVORN of the upload model.""" return self._ivo_id @ivo_id.setter def ivo_id(self, ivo_id): self._ivo_id = ivo_id class TimeLimits(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self._default = None self._hard = None def __repr__(self): return ''.format( self.default, self.hard) @xmlelement(plain=True, multiple_exc=W29) def default(self): return self._default @default.setter def default(self, default): self._default = int(default) @xmlelement(plain=True, multiple_exc=W30) def hard(self): return self._hard @hard.setter def hard(self, hard): self._hard = int(hard) class LanguageFeature(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self.form = None self.description = None @xmlelement(plain=True, multiple_exc=W27) def form(self): return self._form @form.setter def form(self, form): self._form = form @xmlelement(plain=True, multiple_exc=W06) def description(self): return self._description @description.setter def description(self, description): self._description = description def parse(self, iterator, config): super().parse(iterator, config) if not self.form: vo_raise(E09, self._element_name, config=config, pos=self._pos) class LanguageFeatureList(Element, HomogeneousList): def __init__( self, config=None, pos=None, _name='languageFeatures', **kwargs ): Element.__init__(self, config, pos, _name, **kwargs) HomogeneousList.__init__(self, LanguageFeature) self.type = kwargs.get('type') self._features = HomogeneousList(LanguageFeature) @xmlattribute def type(self): return self._type @type.setter def type(self, type_): self._type = type_ @xmlelement(name='feature', cls=LanguageFeature) def features(self): return self class Version(ContentMixin, Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) ivo_id = kwargs.get('ivo-id') self.ivo_id = ivo_id def __repr__(self): return '{}'.format( self.ivo_id, self.content) @xmlattribute(name='ivo-id') def ivo_id(self): """The IVORN of the version.""" return self._ivo_id @ivo_id.setter def ivo_id(self, ivo_id): self._ivo_id = ivo_id class Language(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self.name = None self._versions = HomogeneousList(Version) self.description = None self._languagefeaturelists = HomogeneousList(LanguageFeatureList) def __repr__(self): return f'{self.name}' def describe(self): """ Prints out a human readable description """ print(f"Language {self.name}") for languagefeaturelist in self.languagefeaturelists: print(indent(languagefeaturelist.type, INDENT)) for feature in languagefeaturelist: print(indent(feature.form, 2 * INDENT)) if feature.description: print(indent(feature.description, 3 * INDENT)) print() print() def get_feature_list(self, ivoid): """ returns a list of features groupd with the features id ivoid. Parameters ---------- ivoid : the ivoid of a TAPRegExt feature list. It is compared case-insensitively against the service's ivoids. Returns ------- A (possibly empty) list of `~pyvo.io.vosi.tapregext.LanguageFeature` elements """ ivoid = ivoid.lower() for features in self.languagefeaturelists: if features.type.lower() == ivoid: return features return [] def get_feature(self, ivoid, form): """ returns the `~pyvo.io.vosi.tapregext.LanguageFeature` with ivoid and form if present. We return None rather than raising an error because we expect the normal pattern of usage here will be "if feature is present", and with None-s this is simpler to write than with exceptions. Since it's hard to predict the form of UDFs, for those rather use the get_udf method. ivoid (regrettably) has to be compared case-insensitively; form is compared case-sensitively. Parameters ---------- ivoid : str The IVOA identifier of the feature group the form is in form : str The form of the feature requested Returns ------- A `~pyvo.io.vosi.tapregext.LanguageFeature` or None. """ for feature in self.get_feature_list(ivoid): if feature.form == form: return feature return None def get_udf(self, function_name): """ returns a `~pyvo.io.vosi.tapregext.LanguageFeature` corresponding to an ADQL user defined function on the server, on None if the UDF is not available. This is a bit heuristic in that it tries to parse the form, which is specified only so-so. Parameters ---------- function_name : str A function name. This is matched against the server's function names case-insensitively, as guided by ADQL's case insensitivity. Returns: A `~pyvo.io.vosi.tapregext.LanguageFeature` instance or None. """ function_name = function_name.lower() for udf in self.get_feature_list( "ivo://ivoa.net/std/TAPRegExt#features-udf"): this_name = udf.form.split("(")[0].strip() if this_name.lower() == function_name: return udf return None @xmlelement(plain=True, multiple_exc=W05) def name(self): return self._name @name.setter def name(self, name): self._name = name @xmlelement(name='version', cls=Version) def versions(self): return self._versions @xmlelement(plain=True, multiple_exc=W06) def description(self): return self._description @description.setter def description(self, description): self._description = description @xmlelement(name='languageFeatures', cls=LanguageFeatureList) def languagefeaturelists(self): return self._languagefeaturelists def parse(self, iterator, config): super().parse(iterator, config) if not self.name: vo_raise(E06, self._element_name, config=config, pos=self._pos) if not self.versions: vo_raise(E08, self._element_name, config=config, pos=self._pos) class DataLimit(ContentMixin, Element): def __init__(self, unit=None, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self.unit = unit def __str__(self): return f"{self.unit}:{self.content}" @xmlattribute def unit(self): return self._unit @unit.setter def unit(self, unit): self._unit = unit @property def content(self): return self._content @content.setter def content(self, content): self._content = int(content) def parse(self, iterator, config): super().parse(iterator, config) if self.unit not in ('byte', 'row'): warn_or_raise(W31, W31, config=config, pos=self._pos) class DataLimits(Element): def __init__(self, config=None, pos=None, **kwargs): super().__init__(config=config, pos=pos, **kwargs) self.default = None self.hard = None def __repr__(self): parts = [] if self.default is not None: parts.append("default={self.default}") if self.hard is not None: parts.append("hard={self.hard}") return ''.format(" ".join(parts)) @xmlelement(cls=DataLimit, multiple_exc=W29) def default(self): return self._default @default.setter def default(self, default): self._default = default @xmlelement(cls=DataLimit, multiple_exc=W30) def hard(self): return self._hard @hard.setter def hard(self, hard): self._hard = hard class TAPCapRestriction(vr.Capability): def __init__( self, config=None, pos=None, _name='capability', standardID=None, **kwargs ): if standardID != 'ivo://ivoa.net/std/TAP': warn_or_raise(W19, W19, config=config, pos=pos) super().__init__( config, pos, _name, standardID='ivo://ivoa.net/std/TAP', **kwargs) @vr.Capability.register_xsi_type('tr:TableAccess') class TableAccess(TAPCapRestriction): def __init__(self, config=None, pos=None, _name='capability', **kwargs): super().__init__(config, pos, _name, **kwargs) self._datamodels = HomogeneousList(DataModelType) self._languages = HomogeneousList(Language) self._outputformats = HomogeneousList(OutputFormat) self._uploadmethods = HomogeneousList(UploadMethod) self.retentionperiod = None self.executionduration = None self.outputlimit = None self.uploadlimit = None def describe(self): """ Prints out a human readable description """ super().describe() for datamodel in self.datamodels: datamodel.describe() for language in self.languages: language.describe() for outputformat in self.outputformats: outputformat.describe() for uploadmethod in self.uploadmethods: uploadmethod.describe() if self.retentionperiod: print("Time a job is kept (in seconds)") print(indent(f"Default {self.retentionperiod.default}", INDENT)) if self.retentionperiod.hard: print(indent(f"Maximum {self.retentionperiod.hard}", INDENT)) print() if self.executionduration: print("Maximal run time of a job") print(indent(f"Default {self.executionduration.default}", INDENT)) if self.executionduration.hard: print(indent(f"Maximum {self.executionduration.hard}", INDENT)) print() if self.outputlimit: print("Maximum size of resultsets") print(indent("Default {} {}".format( self.outputlimit.default.content, self.outputlimit.default.unit), INDENT) ) if self.outputlimit.hard: print(indent("Maximum {} {}".format( self.outputlimit.hard.content, self.outputlimit.hard.unit), INDENT) ) print() if self.uploadlimit and self.uploadlimit.hard: print("Maximal size of uploads") print(indent("Maximum {} {}".format( self.uploadlimit.hard.content, self.uploadlimit.hard.unit), INDENT)) print() def get_adql(self): """ returns the (first) ADQL language element on this service. ADQL support is mandatory for IVOA TAP, so in general you can rely on this being present. """ for lang in self.languages: if lang.name == "ADQL": return lang raise VOSIError( "Invalid TAP service: Does not declare an ADQL language") @xmlelement(name='dataModel', cls=DataModelType) def datamodels(self): """Identifier of IVOA-approved data model supported by the service.""" return self._datamodels @xmlelement(name='language', cls=Language) def languages(self): """Languages supported by the service.""" return self._languages @xmlelement(name='outputFormat', cls=OutputFormat) def outputformats(self): """Output formats supported by the service.""" return self._outputformats @xmlelement(name='uploadMethod', cls=UploadMethod) def uploadmethods(self): """ Upload methods supported by the service. The absence of upload methods indicates that the service does not support uploads at all. """ return self._uploadmethods @xmlelement(name='retentionPeriod', cls=TimeLimits, multiple_exc=W22) def retentionperiod(self): """Limits on the time between job creation and destruction time.""" return self._retentionperiod @retentionperiod.setter def retentionperiod(self, retentionperiod): self._retentionperiod = retentionperiod @xmlelement(name='executionDuration', cls=TimeLimits, multiple_exc=W23) def executionduration(self): """Limits on executionDuration.""" return self._executionduration @executionduration.setter def executionduration(self, executionduration): self._executionduration = executionduration @xmlelement(name='outputLimit', cls=DataLimits, multiple_exc=W24) def outputlimit(self): """Limits on the size of data returned.""" return self._outputlimit @outputlimit.setter def outputlimit(self, outputlimit): self._outputlimit = outputlimit @xmlelement(name='uploadLimit', cls=DataLimits, multiple_exc=W25) def uploadlimit(self): return self._uploadlimit @uploadlimit.setter def uploadlimit(self, uploadlimit, cls=DataLimits): self._uploadlimit = uploadlimit def parse(self, iterator, config): super().parse(iterator, config) if not self.languages: warn_or_raise(W20, W20, config=config, pos=self._pos) if not self.outputformats: warn_or_raise(W21, W21, config=config, pos=self._pos) astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/000077500000000000000000000000001521254414300205065ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/__init__.py000066400000000000000000000001001521254414300226060ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/000077500000000000000000000000001521254414300214175ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/availability.xml000066400000000000000000000011451521254414300246140ustar00rootroot00000000000000 true 2000-00-00T00:00:00Z 2666-00-00T00:00:00Z 2666-23-23T13:37:00Z foo bar astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/capabilities.xml000066400000000000000000000077671521254414300246130ustar00rootroot00000000000000 http://example.org/tap/availability https://example.org/tap/availability http://example.org/tap/capabilities https://example.org/tap/capabilities http://example.org/tap/tables https://example.org/tap/tables http://example.org/tap https://example.org/tap https://paris.example.org/tap QUERY=SELECT%20*%20FROM%20tap_schema.tables&LANG=ADQL Obscore-1.1 Registry 1.0 GloTS 1.0 Obscore-1.0 ADQL 2.0 ADQL 2.0
form 1
description 1
form 2
description 2
BOX
POINT
text/xml text/html html 172800 3600 2000 10000000 100000000
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/capabilities/000077500000000000000000000000001521254414300240505ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/capabilities/minimal-tapregext.xml000066400000000000000000000036241521254414300302260ustar00rootroot00000000000000 http://example.org/tap/capabilities http://example.org/tap/tables http://example.org/tap ADQL 2.0 ADQL 2.0 text/xml astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/capabilities/multiple_capa_descriptions.xml000066400000000000000000000022101521254414300321720ustar00rootroot00000000000000 one two astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables.xml000066400000000000000000000026561521254414300234240ustar00rootroot00000000000000 test This is a unittest schema test.allTest tableAll test data in one tableutype30 id Primary key unit meta.id;meta.main utype VARCHAR indexed primary test.foreigntable testkey testkey Test foreigner utype
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/000077500000000000000000000000001521254414300226715ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/datatypes_tap.xml000066400000000000000000000107421521254414300262610ustar00rootroot00000000000000 test test.tap _boolean BOOLEAN _smallint SMALLINT _integer INTEGER _bigint BIGINT _real REAL _double DOUBLE _timestamp TIMESTAMP _char CHAR _varchar VARCHAR _binary BINARY _varbinary VARBINARY _point POINT _region REGION _clob CLOB _blob BLOB
test.taptype _boolean BOOLEAN _smallint SMALLINT _integer INTEGER _bigint BIGINT _real REAL _double DOUBLE _timestamp TIMESTAMP _char CHAR _varchar VARCHAR _binary BINARY _varbinary VARBINARY _point POINT _region REGION _clob CLOB _blob BLOB
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/datatypes_votable.xml000066400000000000000000000075501521254414300271340ustar00rootroot00000000000000 test test.votable _boolean boolean _bit bit _unsignedBytes unsignedByte _short short _int int _long long _char char _unicodeChar unicodeChar _float float _double double _floatComplex floatComplex _doubleComplex doubleComplex
test.votable _boolean boolean _bit bit _unsignedBytes unsignedByte _short short _int int _long long _char char _unicodeChar unicodeChar _float float _double double _floatComplex floatComplex _doubleComplex doubleComplex
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_datatypes.xml000066400000000000000000000014141521254414300307010ustar00rootroot00000000000000 test test datatype int INTEGER
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_descriptions.xml000066400000000000000000000013471521254414300314160ustar00rootroot00000000000000 test ucd test one two
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_names.xml000066400000000000000000000012621521254414300300070ustar00rootroot00000000000000 test test one two
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_ucds.xml000066400000000000000000000013071521254414300276420ustar00rootroot00000000000000 test ucd test one two
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_units.xml000066400000000000000000000013141521254414300300440ustar00rootroot00000000000000 test test unit one two
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_column_utypes.xml000066400000000000000000000013211521254414300302310ustar00rootroot00000000000000 test test utype one two
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_foreignkey_descriptions.xml000066400000000000000000000020111521254414300322500ustar00rootroot00000000000000 test test foreigntable fromcolumn targetcolumn desc1 desc2 fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_foreignkey_utypes.xml000066400000000000000000000017631521254414300311100ustar00rootroot00000000000000 test test foreigntable fromcolumn targetcolumn utype1 utype2 fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_fromcolumns.xml000066400000000000000000000017451521254414300277010ustar00rootroot00000000000000 test test foreigntable fromcolumn fromcolumn targetcolumn fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_schema_descriptions.xml000066400000000000000000000012011521254414300313460ustar00rootroot00000000000000 descriptiontest one two astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_schema_names.xml000066400000000000000000000011041521254414300277450ustar00rootroot00000000000000 one two astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_schema_titles.xml000066400000000000000000000011431521254414300301510ustar00rootroot00000000000000 titletest one two astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_schema_utypes.xml000066400000000000000000000011431521254414300301760ustar00rootroot00000000000000 utypetest one two astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_table_descriptions.xml000066400000000000000000000012621521254414300312040ustar00rootroot00000000000000 test descriptiononetwo
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_table_names.xml000066400000000000000000000011671521254414300276050ustar00rootroot00000000000000 test onetwo
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_table_titles.xml000066400000000000000000000012241521254414300300000ustar00rootroot00000000000000 test titleonetwo
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_table_utypes.xml000066400000000000000000000012241521254414300300250ustar00rootroot00000000000000 test utypeonetwo
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_targetcolumns.xml000066400000000000000000000017531521254414300302230ustar00rootroot00000000000000 test test foreigntable fromcolumn targetcolumn targetcolumn fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/multiple_targettables.xml000066400000000000000000000017471521254414300300200ustar00rootroot00000000000000 test test foreigntable foreigntable fromcolumn targetcolumn fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_fromcolumn.xml000066400000000000000000000015141521254414300262710ustar00rootroot00000000000000 test test foreigntable fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_schema_name.xml000066400000000000000000000010321521254414300263430ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_schemas.xml000066400000000000000000000010031521254414300255240ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_table_description.xml000066400000000000000000000011501521254414300275760ustar00rootroot00000000000000 test description
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_table_name.xml000066400000000000000000000011041521254414300261720ustar00rootroot00000000000000 test
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/no_targetcolumn.xml000066400000000000000000000016031521254414300266130ustar00rootroot00000000000000 test test foreigntable fromcolumn fromcolumn int
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/single_table_description.xml000066400000000000000000000012601521254414300304450ustar00rootroot00000000000000 test descriptionA test table with a single description
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/sizenegative.xml000066400000000000000000000013621521254414300261120ustar00rootroot00000000000000 test test.sizezero ZERO INTEGER
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/wrong_arraysize.xml000066400000000000000000000014071521254414300266420ustar00rootroot00000000000000 test test.wrong_arraysize wrongarraysize INTEGER
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/wrong_datatypes_tap.xml000066400000000000000000000013501521254414300274700ustar00rootroot00000000000000 test test.wrong_tap WRONG WRONG
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/wrong_datatypes_votable.xml000066400000000000000000000013601521254414300303410ustar00rootroot00000000000000 test test.wrong_votable wrong wrong
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/data/tables/wrong_flag.xml000066400000000000000000000014241521254414300255410ustar00rootroot00000000000000 test test.wrong_flag wrongflag INTEGER prmary
astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/test_availability.py000066400000000000000000000012431521254414300245710ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.io.vosi """ import pyvo.io.vosi as vosi from astropy.utils.data import get_pkg_data_filename class TestAvailability: def test_availability(self): availability = vosi.parse_availability(get_pkg_data_filename( "data/availability.xml")) assert availability.available assert availability.upsince == "2000-00-00T00:00:00Z" assert availability.downat == "2666-00-00T00:00:00Z" assert availability.backat == "2666-23-23T13:37:00Z" assert "foo" in availability.notes assert "bar" in availability.notes astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/test_capabilities.py000066400000000000000000000225071521254414300245560ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.io.vosi """ import contextlib import io from operator import eq as equals import pytest import pyvo.io.vosi as vosi import pyvo.io.vosi.vodataservice as vs import pyvo.io.vosi.tapregext as tr from pyvo.io.vosi.exceptions import W06 from astropy.utils.data import get_pkg_data_filename @pytest.fixture(name='parsed_caps') def _parsed_caps(): return vosi.parse_capabilities(get_pkg_data_filename( "data/capabilities.xml")) @pytest.fixture(name='parsed_minimal_tapregext') def _minimal_tapregext(): return vosi.parse_capabilities(get_pkg_data_filename( "data/capabilities/minimal-tapregext.xml")) @pytest.mark.usefixtures("parsed_caps") class TestCapabilities: def test_availability(self, parsed_caps): assert equals( parsed_caps[0].standardid, "ivo://ivoa.net/std/VOSI#availability") assert isinstance(parsed_caps[0].interfaces[0], vs.ParamHTTP) assert parsed_caps[0].interfaces[0].accessurls[0].use == "full" assert equals( parsed_caps[0].interfaces[0].accessurls[0].content, "http://example.org/tap/availability") def test_capendpoint(self, parsed_caps): assert equals( parsed_caps[1].standardid, "ivo://ivoa.net/std/VOSI#capabilities") assert isinstance(parsed_caps[1].interfaces[0], vs.ParamHTTP) assert parsed_caps[1].interfaces[0].accessurls[0].use == "full" assert equals( parsed_caps[1].interfaces[0].accessurls[0].content, "http://example.org/tap/capabilities") def test_tablesendpoint(self, parsed_caps): assert parsed_caps[2].standardid == "ivo://ivoa.net/std/VOSI#tables" assert isinstance(parsed_caps[2].interfaces[0], vs.ParamHTTP) assert parsed_caps[2].interfaces[0].accessurls[0].use == "full" assert equals( parsed_caps[2].interfaces[0].accessurls[0].content, "http://example.org/tap/tables") def test_type_parsed(self, parsed_caps): assert isinstance(parsed_caps[3], tr.TableAccess) def test_stdid_parsed(self, parsed_caps): assert parsed_caps[3].standardid == "ivo://ivoa.net/std/TAP" def test_dm_parsed(self, parsed_caps): assert equals( parsed_caps[3].datamodels[0].ivo_id, "ivo://ivoa.net/std/ObsCore#table-1.1") assert parsed_caps[3].datamodels[0].content == "Obscore-1.1" assert equals( parsed_caps[3].datamodels[1].ivo_id, "ivo://ivoa.net/std/RegTAP#1.0") assert parsed_caps[3].datamodels[1].content == "Registry 1.0" def test_language_parsed(self, parsed_caps): assert parsed_caps[3].languages[0].name == "ADQL" assert equals( parsed_caps[3].languages[0].versions[0].ivo_id, "ivo://ivoa.net/std/ADQL#v2.0") assert parsed_caps[3].languages[0].versions[0].content == "2.0" assert parsed_caps[3].languages[0].description == "ADQL 2.0" def test_udfs(self, parsed_caps): assert equals( parsed_caps[3].languages[0].languagefeaturelists[0].type, "ivo://ivoa.net/std/TAPRegExt#features-udf") assert equals( parsed_caps[3].languages[0].languagefeaturelists[0][0].form, "form 1") assert equals( parsed_caps[3].languages[0].languagefeaturelists[0][ 0].description, "description 1") assert equals( parsed_caps[3].languages[0].languagefeaturelists[0][1].form, "form 2") assert equals( parsed_caps[3].languages[0].languagefeaturelists[0].features[ 1].description, "description 2") def test_adqlgeos(self, parsed_caps): assert equals( parsed_caps[3].languages[0].languagefeaturelists[1].type, "ivo://ivoa.net/std/TAPRegExt#features-adqlgeo") assert equals( parsed_caps[3].languages[0].languagefeaturelists[1].features[ 0].form, "BOX") assert equals( parsed_caps[3].languages[0].languagefeaturelists[1].features[ 1].form, "POINT") def test_outputformats(self, parsed_caps): assert equals( parsed_caps[3].outputformats[0].ivo_id, "ivo://ivoa.net/std/TAPRegExt#output-votable-binary") assert parsed_caps[3].outputformats[0].mime == "text/xml" assert parsed_caps[3].outputformats[1].ivo_id is None assert parsed_caps[3].outputformats[1].mime == "text/html" def test_uploadmethods(self, parsed_caps): assert equals( parsed_caps[3].uploadmethods[0].ivo_id, "ivo://ivoa.net/std/TAPRegExt#upload-https") assert equals( parsed_caps[3].uploadmethods[1].ivo_id, "ivo://ivoa.net/std/TAPRegExt#upload-inline") def test_temporal_limits(self, parsed_caps): assert parsed_caps[3].retentionperiod.default == 172800 assert parsed_caps[3].executionduration.default == 3600 def test_spatial_limits(self, parsed_caps): assert parsed_caps[3].outputlimit.default.unit == "row" assert parsed_caps[3].outputlimit.default.content == 2000 assert parsed_caps[3].outputlimit.hard.unit == "row" assert parsed_caps[3].outputlimit.hard.content == 10000000 assert parsed_caps[3].uploadlimit.hard.unit == "byte" assert parsed_caps[3].uploadlimit.hard.content == 100000000 def test_multiple_capa_descriptions(self): with pytest.warns(W06): vosi.parse_capabilities(get_pkg_data_filename( 'data/capabilities/multiple_capa_descriptions.xml')) with pytest.raises(W06): vosi.parse_capabilities(get_pkg_data_filename( 'data/capabilities/multiple_capa_descriptions.xml'), pedantic=True) @pytest.mark.usefixtures("parsed_minimal_tapregext") class TestMinimalTAPRegExt: def test_standard_id(self, parsed_minimal_tapregext): assert isinstance(parsed_minimal_tapregext[2], tr.TableAccess) def test_limits(self, parsed_minimal_tapregext): assert parsed_minimal_tapregext[2]._uploadlimit is None assert parsed_minimal_tapregext[2]._outputlimit is None def test_adql(self, parsed_minimal_tapregext): assert parsed_minimal_tapregext[2].get_adql().name == "ADQL" def test_udfs(self, parsed_minimal_tapregext): assert parsed_minimal_tapregext[2].get_adql().languagefeaturelists == [] def test_uploadmethods(self, parsed_minimal_tapregext): assert parsed_minimal_tapregext[2].uploadmethods == [] def test_describe(self, parsed_minimal_tapregext): with io.StringIO() as buf, contextlib.redirect_stdout(buf): parsed_minimal_tapregext[2].describe() output = buf.getvalue() assert "http://example.org/tap" in output assert "Output format text/xml" in output assert "Maximal size" not in output @pytest.mark.usefixtures("parsed_caps") class TestInterface: def test_interface_parsed(self, parsed_caps): assert parsed_caps[3].interfaces[0].accessurls[0].use == "base" assert equals( parsed_caps[3].interfaces[0].accessurls[0].content, "http://example.org/tap") def test_mirrors_parsed(self, parsed_caps): assert len(parsed_caps[3].interfaces[0].mirrorurls) == 2 def test_mirrors_have_titles(self, parsed_caps): assert ([m.title for m in parsed_caps[3].interfaces[0].mirrorurls] == ["https version", "Paris mirror"]) def test_mirrors_have_urls(self, parsed_caps): assert ([m.content for m in parsed_caps[3].interfaces[0].mirrorurls] == ['https://example.org/tap', 'https://paris.example.org/tap']) def test_testquerystring_parsed(self, parsed_caps): assert (parsed_caps[3].interfaces[0].testquerystring.content == 'QUERY=SELECT%20*%20FROM%20tap_schema.tables&LANG=ADQL') @pytest.fixture(name='cap_with_free_prefix') def _cap_with_free_prefix(recwarn): caps = vosi.parse_capabilities(io.BytesIO(b""" https://archive.eso.org/tap_obs ObsCore-1.1 ADQL 2.0 ADQL-2.0 """)) return recwarn, caps # this is a test for when people ignore the canonical prefixes for # registry documents. class TestFreePrefixes: def test_parses_without_warning(self, cap_with_free_prefix): warnings, _ = cap_with_free_prefix assert len(warnings) == 0 def test_parses_as_tapregext(self, cap_with_free_prefix): _, cap = cap_with_free_prefix assert isinstance(cap[0], tr.TableAccess) astropy-pyvo-f0fdda3/pyvo/io/vosi/tests/test_tables.py000066400000000000000000000344551521254414300234040ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.io.vosi """ import contextlib import io import pytest import pyvo.io.vosi as vosi import pyvo.io.vosi.vodataservice as vs from pyvo.io.vosi.exceptions import ( W02, W03, W04, W05, W06, W07, W08, W09, W10, W11, W12, W13, W14, W37) from pyvo.io.vosi.exceptions import E01, E02, E03, E06 from astropy.utils.data import get_pkg_data_filename class TestTables: def test_all(self): tablesfile = vosi.parse_tables( get_pkg_data_filename("data/tables.xml")) table = next(tablesfile.iter_tables()) assert table.name == "test.all" assert table.title == "Test table" assert table.description == "All test data in one table" assert table.utype == "utype" assert table.nrows == 30 col = table.columns[0] fkc = table.foreignkeys[0] assert col.name == "id" assert col.description == "Primary key" assert col.unit == "unit" assert col.ucd == "meta.id;meta.main" assert col.utype == "utype" assert isinstance(col.datatype, vs.TAPType) assert str(col.datatype) == "VARCHAR" assert col.datatype.arraysize == "*" assert col.datatype.delim == ";" assert col.datatype.size == "42" assert col.datatype.content == "VARCHAR" assert "indexed" in col.flags assert "primary" in col.flags assert fkc.targettable == "test.foreigntable" assert fkc.fkcolumns[0].fromcolumn == "testkey" assert fkc.fkcolumns[0].targetcolumn == "testkey" assert fkc.description == "Test foreigner" assert fkc.utype == "utype" def _test_datatypes_votable(self, cols): assert cols[0].datatype.content == 'boolean' assert cols[1].datatype.content == 'bit' assert cols[2].datatype.content == 'unsignedByte' assert cols[3].datatype.content == 'short' assert cols[4].datatype.content == 'int' assert cols[5].datatype.content == 'long' assert cols[6].datatype.content == 'char' assert cols[7].datatype.content == 'unicodeChar' assert cols[8].datatype.content == 'float' assert cols[9].datatype.content == 'double' assert cols[10].datatype.content == 'floatComplex' assert cols[11].datatype.content == 'doubleComplex' def test_datatypes_votable(self): tablesfile = vosi.parse_tables( get_pkg_data_filename("data/tables/datatypes_votable.xml")) votable, votabletype = tuple(tablesfile.iter_tables()) self._test_datatypes_votable(votable.columns) self._test_datatypes_votable(votabletype.columns) def _test_datatypes_tap(self, cols): assert cols[0].datatype.content == 'BOOLEAN' assert cols[1].datatype.content == 'SMALLINT' assert cols[2].datatype.content == 'INTEGER' assert cols[3].datatype.content == 'BIGINT' assert cols[4].datatype.content == 'REAL' assert cols[5].datatype.content == 'DOUBLE' assert cols[6].datatype.content == 'TIMESTAMP' assert cols[7].datatype.content == 'CHAR' assert cols[8].datatype.content == 'VARCHAR' assert cols[9].datatype.content == 'BINARY' assert cols[10].datatype.content == 'VARBINARY' assert cols[11].datatype.content == 'POINT' assert cols[12].datatype.content == 'REGION' assert cols[13].datatype.content == 'CLOB' assert cols[14].datatype.content == 'BLOB' def test_datatypes_tap(self): tablesfile = vosi.parse_tables( get_pkg_data_filename("data/tables/datatypes_tap.xml")) tap, taptype = tuple(tablesfile.iter_tables()) self._test_datatypes_tap(tap.columns) self._test_datatypes_tap(taptype.columns) def test_wrong_datatypes_tap(self): with pytest.warns(W02): vosi.parse_tables( get_pkg_data_filename("data/tables/wrong_datatypes_tap.xml")) def test_wrong_datatypes_votable(self): with pytest.warns(W02): vosi.parse_tables(get_pkg_data_filename( "data/tables/wrong_datatypes_votable.xml")) def test_no_schemas(self): with pytest.warns(W14): vosi.parse_tables( get_pkg_data_filename("data/tables/no_schemas.xml")) with pytest.raises(W14): vosi.parse_tables( get_pkg_data_filename("data/tables/no_schemas.xml"), pedantic=True) def test_no_schema_name(self): with pytest.raises(E06): vosi.parse_tables( get_pkg_data_filename("data/tables/no_schema_name.xml")) def test_multiple_schema_names(self): with pytest.warns(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_schema_names.xml")) with pytest.raises(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_schema_names.xml"), pedantic=True) def test_multiple_schema_titles(self): with pytest.warns(W13): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_schema_titles.xml")) with pytest.raises(W13): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_schema_titles.xml"), pedantic=True) def test_multiple_schema_descriptions(self): with pytest.warns(W06): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_schema_descriptions.xml")) with pytest.raises(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_schema_descriptions.xml"), pedantic=True) def test_multiple_schema_utypes(self): with pytest.warns(W09): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_schema_utypes.xml")) with pytest.raises(W09): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_schema_utypes.xml"), pedantic=True) def test_no_table_name(self): with pytest.raises(E06): vosi.parse_tables( get_pkg_data_filename("data/tables/no_table_name.xml")) def test_multiple_table_names(self): with pytest.warns(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_table_names.xml")) with pytest.raises(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_table_names.xml"), pedantic=True) def test_multiple_table_titles(self): with pytest.warns(W13): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_table_titles.xml")) with pytest.raises(W13): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_table_titles.xml"), pedantic=True) def test_multiple_table_descriptions(self): with pytest.warns(W06): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_table_descriptions.xml")) with pytest.raises(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_table_descriptions.xml"), pedantic=True) def test_multiple_table_utypes(self): with pytest.warns(W09): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_table_utypes.xml")) with pytest.raises(W09): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_table_utypes.xml"), pedantic=True) def test_multiple_column_names(self): with pytest.warns(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_column_names.xml")) with pytest.raises(W05): vosi.parse_tables( get_pkg_data_filename("data/tables/multiple_column_names.xml"), pedantic=True) def test_multiple_column_descriptions(self): with pytest.warns(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_descriptions.xml")) with pytest.raises(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_descriptions.xml"), pedantic=True) def test_multiple_column_units(self): with pytest.warns(W07): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_column_units.xml")) with pytest.raises(W07): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_units.xml"), pedantic=True) def test_multiple_column_ucds(self): with pytest.warns(W08): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_column_ucds.xml")) with pytest.raises(W08): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_ucds.xml"), pedantic=True) def test_multiple_column_utypes(self): with pytest.warns(W09): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_column_utypes.xml")) with pytest.raises(W09): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_utypes.xml"), pedantic=True) def test_multiple_column_datatypes(self): with pytest.warns(W37): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_column_datatypes.xml")) with pytest.raises(W37): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_column_datatypes.xml"), pedantic=True) def test_tap_size(self): with pytest.warns(W03): vosi.parse_tables(get_pkg_data_filename( "data/tables/sizenegative.xml")) with pytest.raises(W03): vosi.parse_tables(get_pkg_data_filename( "data/tables/sizenegative.xml"), pedantic=True) @pytest.mark.xfail def test_wrong_flag(self): with pytest.warns(W04): vosi.parse_tables(get_pkg_data_filename( "data/tables/wrong_flag.xml")) with pytest.raises(W04): vosi.parse_tables(get_pkg_data_filename( "data/tables/wrong_flag.xml"), pedantic=True) def test_multiple_fromcolumns(self): with pytest.warns(W10): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_fromcolumns.xml")) with pytest.raises(W10): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_fromcolumns.xml"), pedantic=True) def test_missing_fromcolumn(self): with pytest.raises(E02): vosi.parse_tables(get_pkg_data_filename( "data/tables/no_fromcolumn.xml")) def test_multiple_targetcolumns(self): with pytest.warns(W11): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_targetcolumns.xml")) with pytest.raises(W11): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_targetcolumns.xml"), pedantic=True) def test_missing_targetcolumn(self): with pytest.raises(E03): vosi.parse_tables(get_pkg_data_filename( "data/tables/no_targetcolumn.xml")) def test_multiple_targettables(self): with pytest.warns(W12): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_targettables.xml")) with pytest.raises(W12): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_targettables.xml"), pedantic=True) def test_multiple_foreignkey_descriptions(self): with pytest.warns(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_foreignkey_descriptions.xml")) with pytest.raises(W06): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_foreignkey_descriptions.xml"), pedantic=True) def test_multiple_foreignkey_utypes(self): with pytest.warns(W09): vosi.parse_tables(get_pkg_data_filename( "data/tables/multiple_foreignkey_utypes.xml")) with pytest.raises(W09): vosi.parse_tables( get_pkg_data_filename( "data/tables/multiple_foreignkey_utypes.xml"), pedantic=True) def test_wrong_arraysize(self): with pytest.raises(E01): vosi.parse_tables( get_pkg_data_filename( "data/tables/wrong_arraysize.xml")) def test_no_table_description(self): """Test handling of describing tables with no description """ tableset = vosi.parse_tables( get_pkg_data_filename( "data/tables/no_table_description.xml")) nodesc_table = tableset.get_first_table() assert nodesc_table.description is None with io.StringIO() as buf, contextlib.redirect_stdout(buf): nodesc_table.describe() output = buf.getvalue() assert 'No description' in output def test_single_table_description(self): """Test describing a table with a single description """ tableset = vosi.parse_tables( get_pkg_data_filename( "data/tables/single_table_description.xml")) onedesc_table = tableset.get_first_table() describe_string = 'A test table with a single description' assert describe_string in onedesc_table.description with io.StringIO() as buf, contextlib.redirect_stdout(buf): onedesc_table.describe() output = buf.getvalue() assert describe_string in output astropy-pyvo-f0fdda3/pyvo/io/vosi/vodataservice.py000066400000000000000000000755321521254414300225710ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains xml element classes as defined in the VODataService standard There are different ways of handling the various xml tags. * Elements with complex content * Elements with simple content and attributes * Elements with simple content without attributes Elements with complex content are parsed with objects inherited from `~pyvo.utils.xml.elements.Element`. Elements with simple content are parsed with objects inherited from `~pyvo.utils.xml.elements.Element` defining a ``value`` property. """ import re from astropy.utils import deprecated from astropy.utils.collections import HomogeneousList from textwrap import indent from astropy.utils.xml import check as xml_check from astropy.io.votable.exceptions import vo_raise, vo_warn, warn_or_raise from ...utils.xml.elements import ( xmlattribute, xmlelement, Element, ElementWithXSIType, ContentMixin) from . import voresource as vr from .exceptions import ( W01, W02, W03, W04, W05, W06, W07, W08, W09, W10, W11, W12, W13, W14, W17, W18, W36, W37, E01, E02, E03, E04, E05, E06) __all__ = [ "TableSet", "TableSchema", "ParamHTTP", "VODataServiceTable", "BaseParam", "TableParam", "InputParam", "DataType", "SimpleDataType", "TableDataType", "VOTableType", "TAPDataType", "TAPType", "FKColumn", "ForeignKey"] ###################################################################### # FACTORY FUNCTIONS def _convert_boolean(value, default=None): return { 'false': False, '0': False, 'true': True, '1': True }.get(value, default) ###################################################################### # ATTRIBUTE CHECKERS def check_anyuri(uri, config=None, pos=None): """ Raises a `~pyvo.io.vosi.tables.exceptions.VOSITablesWarning` if *uri* is not a valid URI. As defined in RFC 2396. """ if uri is not None and not xml_check.check_anyuri(uri): warn_or_raise(W01, W01, uri, config=config, pos=pos) return False return True def check_datatype_flag(data, config=None, pos=None): """ Checks if the datatype flag is valid """ if data not in ('indexed', 'primary', 'nullable'): warn_or_raise(W04, W04, data, config=config, pos=pos) return False return True ###################################################################### # ELEMENT CLASSES class TableSet(Element, HomogeneousList): """ TableSet element as described in http://www.ivoa.net/xml/VODataService/v1.1 The set of tables hosted by a resource. """ def __init__( self, config=None, pos=None, _name='tableset', version='1.1', **kwargs ): HomogeneousList.__init__(self, TableSchema) Element.__init__(self, config, pos, _name, **kwargs) self._version = version def __repr__(self): return '... {} schemas ...'.format( len(self)) @xmlattribute def version(self): """The version of the standard""" return self._version @version.setter def version(self, version): self._config['version'] = version self._version = version @xmlelement(name='schema') def schemas(self): """ A list of schemas. Must contain only `~pyvo.io.vosi.vodataservice.TableSchema` objects. A named description of a set of logically related tables. The name given by the "name" child element must be unique within this TableSet instance. If there is only one schema in this set and/or there's no locally appropriate name to provide, the name can be set to "default". This aggregation does not need to map to an actual database, catalog, or schema, though the publisher may choose to aggregate along such designations, or particular service protocol may recommend it. """ return self @schemas.adder def schemas(self, iterator, tag, data, config, pos): schema = TableSchema(config, pos, 'schema', **data) schema.parse(iterator, config) self.append(schema) def parse(self, iterator, config): super().parse(iterator, config) if not self.schemas: warn_or_raise(W14, W14, config=config, pos=self._pos) class TableSchema(Element, HomogeneousList): """ TableSchema element as described in http://www.ivoa.net/xml/VODataService/v1.1 A detailed description of a logically-related set of tables. """ def __init__(self, config=None, pos=None, _name='schema', **kwargs): HomogeneousList.__init__(self, VODataServiceTable) Element.__init__(self, config, pos, _name, **kwargs) self._name = None self._title = None self._description = None self._utype = None def __repr__(self): return '... {} tables ...'.format( self.name, len(self.tables)) @xmlelement(plain=True, multiple_exc=W05) def name(self): """ A name for the set of tables. This is used to uniquely identify the table set among several table sets. If a title is not present, this name can be used for display purposes. If there is no appropriate logical name associated with this set, the name should be explicitly set to "default". """ return self._name @name.setter def name(self, name): self._name = name @xmlelement(plain=True, multiple_exc=W13) def title(self): """ a descriptive, human-interpretable name for the table set. This is used for display purposes. There is no requirement regarding uniqueness. It is useful when there are multiple schemas in the context (e.g. within a tableset; otherwise, the resource title could be used instead). """ return self._title @title.setter def title(self, title): self._title = title @xmlelement(plain=True, multiple_exc=W06) def description(self): """ A free text description of the tableset that should explain in general how all of the tables are related. """ return self._description @description.setter def description(self, description): self._description = description @xmlelement(plain=True, multiple_exc=W09) def utype(self): """ an identifier for a concept in a data model that the data in this schema as a whole represent. The format defined in the VOTable standard is strongly recommended. """ return self._utype @utype.setter def utype(self, utype): self._utype = utype @xmlelement(name='table') def tables(self): """ A list of tables in the schema. Must contain only `~pyvo.io.vosi.vodataservice.VODataServiceTable` objects. A description of one of the tables that makes up the set. The table names for the table should be unique. """ return self @tables.adder def tables(self, iterator, tag, data, config, pos): table = VODataServiceTable(config, pos, 'table', **data) table.parse(iterator, config) self.append(table) def parse(self, iterator, config): super().parse(iterator, config) if not self.name: vo_raise(E06, self._Element__name, config=config, pos=self._pos) @vr.Interface.register_xsi_type('vs:ParamHTTP') class ParamHTTP(vr.Interface): """ ParamHTTP element as described in http://www.ivoa.net/xml/VODataService/v1.1 A service invoked via an HTTP Query (either Get or Post) with a set of arguments consisting of keyword name-value pairs. Note that the URL for help with this service can be put into the Service/ReferenceURL element. """ def __init__(self, config=None, pos=None, _name='', **kwargs): super().__init__( config=config, pos=pos, _name=_name, **kwargs) self._querytypes = HomogeneousList(str) self._resulttype = None @xmlelement(name='queryType', multiple_exc=W17) def querytypes(self): """ The type of HTTP request, either GET or POST. The service may indicate support for both GET and POST by providing 2 queryType elements, one with GET and one with POST. """ return self._querytypes @xmlelement(name='resultType', multiple_exc=W36) def resulttype(self): """The MIME type of a document returned in the HTTP response.""" return self._resulttype @resulttype.setter def resulttype(self, resulttype): self._resulttype = resulttype def parse(self, iterator, config): super().parse(iterator, config) if len(self.querytypes) > 2: warn_or_raise(W18, W18, config=config, pos=self._pos) class VODataServiceTable(Element): """ Table element as described in http://www.ivoa.net/xml/VODataService/v1.1 """ def __init__( self, config=None, pos=None, _name='table', version='1.1', **kwargs ): super().__init__(config, pos, _name, **kwargs) self._name = None self._title = None self._description = None self._utype = None self._type = kwargs.get("type") self._version = version self._nrows = None self._columns = HomogeneousList(TableParam) self._foreignkeys = HomogeneousList(ForeignKey) def __repr__(self): return '... {} columns ...'.format( self.name, len(self.columns)) def describe(self): print(self.name) if self.description is not None: print(indent(self.description, 4 * " ")) else: print('No description') print() @xmlelement(plain=True, multiple_exc=W05) def name(self): """ the fully qualified name of the table. This name should include all catalog or schema prefixes needed to sufficiently uniquely distinguish it in a query. In general, the format of the qualified name may depend on the context; however, when the table is intended to be queryable via ADQL, then the catalog and schema qualifiers are delimited from the table name with dots (.). """ return self._name @name.setter def name(self, name): self._name = name @xmlelement(plain=True, multiple_exc=W13) def title(self): """ a descriptive, human-interpretable name for the table. This is used for display purposes. There is no requirement regarding uniqueness. """ return self._title @title.setter def title(self, title): self._title = title @xmlelement(plain=True, multiple_exc=W06) def description(self): """ a free-text description of the table's contents """ return self._description @description.setter def description(self, description): self._description = description @xmlelement(plain=True, multiple_exc=W09) def utype(self): """ an identifier for a concept in a data model that the data in this table represent. The format defined in the VOTable standard is highly recommended. """ return self._utype @utype.setter def utype(self, utype): self._utype = utype @xmlelement(plain=True, multiple_exc=W09) def nrows(self): """ the approximate number of rows in the table. This is None if the data provider failed to provide this information. """ return self._nrows @nrows.setter def nrows(self, nrows): self._nrows = int(nrows) @xmlattribute def type(self): """ a name for the role this table plays. Recognized values include "output", indicating this table is output from a query; "base_table", indicating a table whose records represent the main subjects of its schema; and "view", indicating that the table represents a useful combination or subset of other tables. Other values are allowed. """ return self._type @type.setter def type(self, type_): self._type = type_ @xmlattribute def version(self): """The version of the standard""" return self._version @version.setter def version(self, version): self._config['version'] = version self._version = version @xmlelement(name='column') def columns(self): """ A list of columns in the table. Must contain only `~pyvo.io.vosi.vodataservice.TableParam` objects. A description of a table column. """ return self._columns @columns.adder def columns(self, iterator, tag, data, config, pos): column = TableParam(config, pos, 'column', **data) column.parse(iterator, config) self.columns.append(column) @xmlelement(name='foreignKey') def foreignkeys(self): """ A list of columns in the table. Must contain only `~pyvo.io.vosi.vodataservice.ForeignKey` objects a description of a foreign keys, one or more columns from the current table that can be used to join with another table. """ return self._foreignkeys @foreignkeys.adder def foreignkeys(self, iterator, tag, data, config, pos): foreignkey = ForeignKey(config, pos, 'foreignKey', **data) foreignkey.parse(iterator, config) self.foreignkeys.append(foreignkey) def parse(self, iterator, config): super().parse(iterator, config) if not self.name: vo_raise(E06, self._Element__name, config=config, pos=self._pos) @deprecated("1.5", alternative="VODataServiceTable") class Table(VODataServiceTable): pass class BaseParam(Element): """ BaseParam element as described in http://www.ivoa.net/xml/VODataService/v1.1 a description of a parameter that places no restriction on the parameter's data type. As the parameter's data type is usually important, schemas normally employ a sub-class of this type (e.g. Param), rather than this type directly. """ def __init__(self, config=None, pos=None, _name='', **kwargs): super().__init__( config=config, pos=pos, _name=_name, **kwargs) self._name = None self._description = None self._unit = None self._ucd = None self._utype = None def __repr__(self): return f'' @xmlelement(plain=True, multiple_exc=W05) def name(self): """the name of the element""" return self._name @name.setter def name(self, name): self._name = name @xmlelement(plain=True, multiple_exc=W06) def description(self): """ a free-text description of the element's contents """ return self._description @description.setter def description(self, description): self._description = description @xmlelement(plain=True, multiple_exc=W07) def unit(self): """the unit associated with all values in the element""" return self._unit @unit.setter def unit(self, unit): self._unit = unit @xmlelement(plain=True, multiple_exc=W08) def ucd(self): """ the name of a unified content descriptor that describes the scientific content of the element. There are no requirements for compliance with any particular UCD standard. The format of the UCD can be used to distinguish between UCD1, UCD1+, and SIA-UCD. See http://www.ivoa.net/Documents/latest/UCDlist.html for the latest IVOA standard set. """ return self._ucd @ucd.setter def ucd(self, ucd): self._ucd = ucd @xmlelement(plain=True, multiple_exc=W09) def utype(self): """ an identifier for a concept in a data model that the data in this element represent. The format defined in the VOTable standard is highly recommended. """ return self._utype @utype.setter def utype(self, utype): self._utype = utype class TableParam(BaseParam): """ TableParam element as described in http://www.ivoa.net/xml/VODataService/v1.1 A description of a table parameter having a fixed data type. The allowed data type names match those supported by VOTable. """ @classmethod def from_field(cls, field): """ Create a instance from a `~astropy.io.votable.tree.Field` instance. """ instance = cls() instance.name = field.name instance.description = field.description instance.unit = field.unit instance.ucd = field.ucd instance.utype = field.utype datatype = VOTableType(arraysize=field.arraysize) datatype.value = field.datatype instance.datatype = datatype return instance def __init__(self, config=None, pos=None, _name='', std=None, **kwargs): super().__init__( config=config, pos=pos, _name=_name, **kwargs) self._datatype = None self._flags = HomogeneousList(str) self._std = _convert_boolean(std) @xmlelement(name='dataType') def datatype(self): """The type of data contained in the element""" return self._datatype @datatype.setter def datatype(self, datatype): if datatype is not None and not isinstance(datatype, TableDataType): raise ValueError("datatype must be an TableDataType object") self._datatype = datatype @datatype.adder def datatype(self, iterator, tag, data, config, pos): datatype = TableDataType(config, pos, 'dataType', **data) datatype.parse(iterator, config) if self.datatype: warn_or_raise( W37, args=self._Element__name, config=config, pos=pos) self.datatype = datatype @xmlelement(name='flag') def flags(self): """ A list of flags. Must contain only `str` objects. a keyword representing traits of the column. Recognized values include "indexed", "primary", and "nullable". """ return self._flags @xmlattribute def std(self): """ If true, the meaning and use of this parameter is reserved and defined by a standard model. If false, it represents a database-specific parameter that effectively extends beyond the standard. If not provided, then the value is unknown. """ return self._std @std.setter def std(self, std): self._std = std def parse(self, iterator, config): super().parse(iterator, config) if not self.name: vo_raise(E06, self._Element__name, config=config, pos=self._pos) class InputParam(BaseParam): """ InputParam element as described in http://www.ivoa.net/xml/VODataService/v1.1 A description of a service or function parameter having a fixed data type. """ def __init__( self, config=None, pos=None, _name='', use="optional", std="1", **kwargs): BaseParam.__init__(self, config, pos, _name, **kwargs) self._datatype = None self._use = use self._std = _convert_boolean(std, True) @xmlelement(name='dataType') def datatype(self): """The type of data contained in the element""" return self._datatype @datatype.setter def datatype(self, datatype): if datatype is not None and not isinstance(datatype, SimpleDataType): raise ValueError("datatype must be an SimpleDataType object") self._datatype = datatype @xmlattribute def use(self): """ An indication of whether this parameter is required to be provided for the application or service to work properly. Allowed values are "required" and "optional". """ return self._use @use.setter def use(self, use): self._use = use @xmlattribute def std(self): """ If true, the meaning and behavior of this parameter is reserved and defined by a standard interface. If false, it represents an implementation-specific parameter that effectively extends the behavior of the service or application. """ return self._std @std.setter def std(self, std): self._std = std def parse(self, iterator, config): super().parse(iterator, config) if not self.name: vo_raise(E06, self._Element__name, config=config, pos=self._pos) class DataType(ContentMixin, ElementWithXSIType): """ DataType element as described in http://www.ivoa.net/xml/VODataService/v1.1 A type (in the computer language sense) associated with a parameter with an arbitrary name. This XML type is used as a parent for defining data types with a restricted set of names. """ def __init__( self, config=None, pos=None, _name='dataType', arraysize=None, delim=None, extendedType=None, extendedSchema=None, **kwargs ): super().__init__( config=config, pos=pos, _name=_name, **kwargs) if arraysize is None: arraysize = "1" if delim is None: delim = " " self.arraysize = arraysize self._delim = delim self._extendedtype = extendedType self.extendedschema = extendedSchema def __repr__(self): return '{}'.format( self.arraysize, self.content) @xmlattribute def arraysize(self): """Specifies the size of the dataType""" return self._arraysize @arraysize.setter def arraysize(self, arraysize): if all(( arraysize is not None, not re.match(r"^([0-9]+x)*[0-9]*[*]?(s\W)?$", arraysize) )): vo_raise(E01, arraysize, self._config, self._pos) self._arraysize = arraysize @xmlattribute def delim(self): """ the string that is used to delimit elements of an array value when arraysize is not "1". Unless specifically disallowed by the context, applications should allow optional spaces to appear in an actual data value before and after the delimiter (e.g. "1, 5" when delim=","). the default is " "; i.e. the values are delimited by spaces. """ return self._delim @delim.setter def delim(self, delim): self._delim = delim @xmlattribute(name='extendedType') def extendedtype(self): """ The data value represented by this type can be interpreted as of a custom type identified by the value of this attribute. If an application does not recognize this extendedType, it should attempt to handle value assuming the type given by the element's value. string is a recommended default type. This element may make use of the extendedSchema attribute and/or any arbitrary (qualified) attribute to refine the identification of the type. """ @extendedtype.setter def extendedtype(self, extendedtype): self._extendedtype = extendedtype @xmlattribute(name='extendedSchema') def extendedschema(self): """ An identifier for the schema that the value given by the extended attribute is drawn from. This attribute is normally ignored if the extendedType attribute is not present. """ return self._extendedschema @extendedschema.setter def extendedschema(self, extendedschema): if extendedschema is not None: check_anyuri(extendedschema, self._config, self._pos) self._extendedschema = extendedschema class SimpleDataType(DataType): """ SimpleDataType element as described in http://www.ivoa.net/xml/VODataService/v1.1 A data type restricted to a small set of names which is imprecise as to the format of the individual values. This set is intended for describing simple input parameters to a service or function. """ def _content_check(self, value): if value is not None: valid_values = { 'integer', 'real', 'complex', 'boolean', 'char', 'string'} if value not in valid_values: vo_warn(W02, value, self._config, self._pos) class TableDataType(DataType): """ TableDataType element as described in http://www.ivoa.net/xml/VODataService/v1.1 an abstract parent for a class of data types that can be used to specify the data type of a table column. Subtypes must be decorated with ``register_xsi_type('ns:name')``. """ @TableDataType.register_xsi_type('vs:VOTable') @TableDataType.register_xsi_type('vs:VOTableType') class VOTableType(TableDataType): """ VOTableType element as described in http://www.ivoa.net/xml/VODataService/v1.1 """ def _content_check(self, value): if value is not None: valid_values = ( 'boolean', 'bit', 'unsignedByte', 'short', 'int', 'long', 'char', 'unicodeChar', 'float', 'double', 'floatComplex', 'doubleComplex') if value not in valid_values: vo_warn(W02, value, self._config, self._pos) class TAPDataType(TableDataType): """ TAPDataType element as described in http://www.ivoa.net/xml/VODataService/v1.1 an abstract parent for the specific data types supported by the Table Access Protocol. """ def __init__( self, config=None, pos=None, _name='dataType', size=None, **kwargs ): super().__init__( config=config, pos=pos, _name=_name, **kwargs) self.size = size @xmlattribute def size(self): """ the length of the fixed-length value. This corresponds to the size Column attribute in the TAP_SCHEMA and can be used with data types that are defined with a length (CHAR, BINARY). """ return self._size @size.setter def size(self, size): if size is not None and int(size) < 0: size = 0 warn_or_raise(W03, W03, config=self._config, pos=self._pos) self._size = size @TableDataType.register_xsi_type('vs:TAP') @TableDataType.register_xsi_type('vs:TAPType') class TAPType(TAPDataType): """ TAPType element as described in http://www.ivoa.net/xml/VODataService/v1.1 a data type supported explicitly by the Table Access Protocol (v1.0). """ def _content_check(self, value): if value is not None: valid_values = ( 'BOOLEAN', 'SMALLINT', 'INTEGER', 'BIGINT', 'REAL', 'DOUBLE', 'TIMESTAMP', 'CHAR', 'VARCHAR', 'BINARY', 'VARBINARY', 'POINT', 'REGION', 'CLOB', 'BLOB') if value not in valid_values: vo_warn(W02, value, self._config, self._pos) class FKColumn(Element): """ FKColumn element as described in http://www.ivoa.net/xml/VODataService/v1.1 """ def __init__(self, config=None, pos=None, _name='fkColumn', **kwargs): super().__init__( config=config, pos=pos, _name=_name, **kwargs) self._fromcolumn = None self._targetcolumn = None def __repr__(self): return '...'.format( self.fromcolumn, self.targetcolumn) @xmlelement(name='fromColumn', plain=True, multiple_exc=W10) def fromcolumn(self): """ The unqualified name of the column from the current table. """ return self._fromcolumn @fromcolumn.setter def fromcolumn(self, fromcolumn): self._fromcolumn = fromcolumn @xmlelement(name='targetColumn', plain=True, multiple_exc=W11) def targetcolumn(self): """ The unqualified name of the column from the target table. """ return self._targetcolumn @targetcolumn.setter def targetcolumn(self, targetcolumn): self._targetcolumn = targetcolumn def parse(self, iterator, config): super().parse(iterator, config) if self.fromcolumn is None: vo_raise(E02, config=config, pos=self._pos) if self.targetcolumn is None: vo_raise(E03, config=config, pos=self._pos) class ForeignKey(Element): """ ForeignKey element as described in http://www.ivoa.net/xml/VODataService/v1.1 """ def __init__(self, config=None, pos=None, _name='foreignKey', **kwargs): Element.__init__(self, config, pos, _name, **kwargs) self._targettable = None self._fkcolumns = HomogeneousList(FKColumn) self._description = None self._utype = None def __repr__(self): return '...'.format( self.targettable) @xmlelement(name='targetTable', plain=True, multiple_exc=W12) def targettable(self): """ the fully-qualified name (including catalog and schema, as applicable) of the table that can be joined with the table containing this foreign key. """ return self._targettable @targettable.setter def targettable(self, targettable): self._targettable = targettable @xmlelement(name='fkColumn') def fkcolumns(self): """ A list of foreign key columns. Must contain only `~pyvo.io.vosi.vodataservice.FKColumn` objects. a pair of column names, one from this table and one from the target table that should be used to join the tables in a query. """ return self._fkcolumns @fkcolumns.adder def fkcolumns(self, iterator, tag, data, config, pos): fkcolumn = FKColumn(config, pos, 'fkColumn', **data) fkcolumn.parse(iterator, config) self.fkcolumns.append(fkcolumn) @xmlelement(plain=True, multiple_exc=W06) def description(self): """ a free-text description of what this key points to and what the relationship means. """ return self._description @description.setter def description(self, description): self._description = description @xmlelement(plain=True, multiple_exc=W09) def utype(self): """ an identifier for a concept in a data model that the association enabled by this key represents. The format defined in the VOTable standard is highly recommended. """ return self._utype @utype.setter def utype(self, utype): self._utype = utype def parse(self, iterator, config): super().parse(iterator, config) if not self.targettable: vo_raise(E04, config=config, pos=self._pos) if not self.fkcolumns: vo_raise(E05, config=config, pos=self._pos) astropy-pyvo-f0fdda3/pyvo/io/vosi/voresource.py000066400000000000000000000360431521254414300221200ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This file contains xml element classes as defined in the VOResource standard. There are different ways of handling the various xml tags. * Elements with complex content * Elements with simple content and attributes * Elements with simple content without attributes Elements with complex content are parsed with objects inherited from `~pyvo.utils.xml.elements.Element`. Elements with simple content are parsed with objects inherited from `~pyvo.utils.xml.elements.Element` defining a ``value`` property. """ from astropy.utils.collections import HomogeneousList from textwrap import indent from ...utils.xml.elements import ( Element, ElementWithXSIType, ContentMixin, xmlattribute, xmlelement) from .exceptions import W06 __all__ = [ "ValidationLevel", "Capability", "Interface", "AccessURL", "SecurityMethod", "WebBrowser", "WebService", "MirrorURL"] ###################################################################### # ELEMENT CLASSES class ValidationLevel(ContentMixin, Element): """ ValidationLevel element as described in http://www.ivoa.net/xml/VOResource/v1.0 the allowed values for describing the resource descriptions and interfaces. See the RM (v1.1, section 4) for more guidance on the use of these values. Possible values: 0: The resource has a description that is stored in a registry. This level does not imply a compliant description. 1: In addition to meeting the level 0 definition, the resource description conforms syntactically to this standard and to the encoding scheme used. 2: In addition to meeting the level 1 definition, the resource description refers to an existing resource that has demonstrated to be functionally compliant. When the resource is a service, it is consider to exist and functionally compliant if use of the service accessURL responds without error when used as intended by the resource. If the service is a standard one, it must also demonstrate the response is syntactically compliant with the service standard in order to be considered functionally compliant. If the resource is not a service, then the ReferenceURL must be shown to return a document without error. 3: In addition to meeting the level 2 definition, the resource description has been inspected by a human and judged to comply semantically to this standard as well as meeting any additional minimum quality criteria (e.g., providing values for important but non-required metadata) set by the human inspector. 4: In addition to meeting the level 3 definition, the resource description meets additional quality criteria set by the human inspector and is therefore considered an excellent description of the resource. Consequently, the resource is expected to be operate well as part of a VO application or research study. """ def __init__( self, config=None, pos=None, _name='validationLevel', validatedBy=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._validatedby = validatedBy def __repr__(self): return '{}'.format( self.validatedby, self.content) @xmlattribute def validatedby(self): """ The IVOA ID of the registry or organisation that assigned the validation level. """ return self._validatedby @validatedby.setter def validatedby(self, validatedby): self._validatedby = validatedby class AccessURL(ContentMixin, Element): """ AccessURL element as described in http://www.ivoa.net/xml/VOResource/v1.0 The URL (or base URL) that a client uses to access the service. How this URL is to be interpreted and used depends on the specific Interface subclass """ def __init__( self, config=None, pos=None, _name='accessURL', use=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._use = use def __repr__(self): return '{}'.format( self.use, self.content) @xmlattribute def use(self): """ A flag indicating whether this should be interpreted as a base URL, a full URL, or a URL to a directory that will produce a listing of files. Possible values: full: Assume a full URL--that is, one that can be invoked directly without alteration. This usually returns a single document or file. base: Assume a base URL--that is, one requiring an extra portion to be appended before being invoked. dir: Assume URL points to a directory that will return a listing of files. """ return self._use @use.setter def use(self, use): self._use = use class MirrorURL(ContentMixin, Element): """ A URL available as a mirror of an access URL. These come with a human-readable title intended to aid in mirror selection. """ def __init__( self, config=None, pos=None, _name='accessURL', title=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._title = title @xmlattribute def title(self): """ A human-readable title for the mirror. """ return self._title class SecurityMethod(ContentMixin, Element): """ SecurityMethod element as described in http://www.ivoa.net/xml/VOResource/v1.0 A description of a security mechanism. this type only allows one to refer to the mechanism via a URI. Derived types would allow for more metadata. """ def __init__( self, config=None, pos=None, _name='securityMethod', standardID=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._standardid = standardID def __repr__(self): return '{}'.format( self.standardid, self.content) @xmlattribute(name='standardID') def standardid(self): """ A URI identifier for a standard security mechanism. """ return self._standardid @standardid.setter def standardid(self, standardid): self._standardid = standardid class Interface(ElementWithXSIType): """ Interface element as described in http://www.ivoa.net/xml/VOResource/v1.0 A description of a service interface. Since this type is abstract, one must use an Interface subclassto describe an actual interface. Additional interface subtypes (beyond WebService and WebBrowser) are defined in the VODataService schema. """ def __init__( self, config=None, pos=None, _name='interface', version='1.0', role=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._xsi_type = kwargs.get('xsi:type') self._version = version self._role = role self._resulttype = None self._testquerystring = None self._accessurls = HomogeneousList(AccessURL) self._securitymethods = HomogeneousList(SecurityMethod) self._mirrorurls = HomogeneousList(MirrorURL) def __repr__(self): return '...'.format( self.role) def describe(self): """ Prints out a human readable description """ print(f'Interface {self._xsi_type}') accessurls = '\n'.join( accessurl.content for accessurl in self.accessurls) print(indent(accessurls, 4 * " ")) print() @xmlattribute def version(self): """ The version of a standard interface specification that this interface complies with. When the interface is provided in the context of a Capability element, then the standard being refered to is the one identified by the Capability's standardID element. If the standardID is not provided, the meaning of this attribute is undefined. """ return self._version @version.setter def version(self, version): self._version = version @xmlattribute def role(self): """ A tag name the identifies the role the interface plays in the particular capability. If the value is equal to "std" or begins with "std:", then the interface refers to a standard interface defined by the standard referred to by the capability's standardID attribute. For an interface complying with some registered standard (i.e. has a legal standardID), the role can be match against interface roles enumerated in standard resource record. The interface descriptions in the standard record can provide default descriptions so that such details need not be repeated here. """ return self._role @role.setter def role(self, role): self._role = role @xmlelement(name='accessURL', cls=AccessURL) def accessurls(self): """ A list of access urls in the interface. Must contain only `AccessURL` objects. """ return self._accessurls @xmlelement(name='mirrorURL', cls=MirrorURL) def mirrorurls(self): """ mirror(s) for this access URL. """ return self._mirrorurls @xmlelement(name='securityMethod', cls=SecurityMethod) def securitymethods(self): """ the mechanism the client must employ to gain secure access to the service. when more than one method is listed, each one must be employed to gain access. """ return self._securitymethods @xmlelement(name='testQueryString') def testquerystring(self): """ a string to be used in an interface-specific way to obtain a non-empty result from the service. """ return self._testquerystring @testquerystring.setter def testquerystring(self, testquerystring): self._testquerystring = testquerystring @xmlelement def resulttype(self): """ The MIME type of a document returned in the HTTP response. """ return self._resulttype @resulttype.setter def resulttype(self, resulttype): self._resulttype = resulttype class Capability(ElementWithXSIType): """ Capability element as described in http://www.ivoa.net/xml/VOResource/v1.0 a description of what the service does (in terms of context-specific behavior), and how to use it (in terms of an interface) """ def __init__( self, config=None, pos=None, _name='capability', standardID=None, **kwargs ): super().__init__(config, pos, _name, **kwargs) self._description = None self._standardid = standardID self._validationlevels = HomogeneousList(ValidationLevel) self._interfaces = HomogeneousList(Interface) def __repr__(self): return ( '' '... {} validationLevels, {} interfaces ...' '' ).format( self.standardid, len(self.validationlevels), len(self.interfaces)) def describe(self): """ Prints out a human readable description """ print(f"Capability {self.standardid}") print() if self.description: print(self.description) print() for interface in self.interfaces: interface.describe() @xmlelement(plain=True, multiple_exc=W06) def description(self): """ A human-readable description of what this capability provides as part of the over-all service Use of this optional element is especially encouraged when this capability is non-standard and is one of several capabilities listed. """ return self._description @description.setter def description(self, description): self._description = description @xmlelement(name='validationLevel', cls=ValidationLevel) def validationlevels(self): """ A numeric grade describing the quality of the capability description and interface, when applicable, to be used to indicate the confidence an end-user can put in the resource as part of a VO application or research study. """ return self._validationlevels @xmlelement(name='interface', cls=Interface) def interfaces(self): """ a description of how to call the service to access this capability Since the Interface type is abstract, one must describe the interface using a subclass of Interface, denoting it via xsi:type. Multiple occurances can describe different interfaces to the logically same capability--i.e. data or functionality. That is, the inputs accepted and the output provides should be logically the same. For example, a WebBrowser interface given in addition to a WebService interface would simply provide an interactive, human-targeted interface to the underlying WebService interface. """ return self._interfaces @xmlattribute(name='standardID') def standardid(self): """ A URI identifier for a standard service. This provides a unique way to refer to a service specification standard, such as a Simple Image Access service. The use of an IVOA identifier here implies that a VOResource description of the standard is registered and accessible. """ return self._standardid @standardid.setter def standardid(self, standardid): self._standardid = standardid @Interface.register_xsi_type('vr:WebBrowser') class WebBrowser(Interface): """ WebBrowser element as described in http://www.ivoa.net/xml/VOResource/v1.0 A (form-based) interface intended to be accesed interactively by a user via a web browser. The accessURL represents the URL of the web form itself. """ @Interface.register_xsi_type('vr:WebService') class WebService(Interface): """ WebService element as described in http://www.ivoa.net/xml/VOResource/v1.0 A Web Service that is describable by a WSDL document. The accessURL element gives the Web Service's endpoint URL. """ def __init__(self, config=None, pos=None, _name='interface', **kwargs): super().__init__(config, pos, _name, **kwargs) self._wsdlurls = HomogeneousList(str) @xmlelement(name='wsdlURL') def wsdlurls(self): """ The location of the WSDL that describes this Web Service. If not provided, the location is assumed to be the accessURL with "?wsdl" appended. Multiple occurances should represent mirror copies of the same WSDL file. """ return self._wsdlurls astropy-pyvo-f0fdda3/pyvo/mivot/000077500000000000000000000000001521254414300171135ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/__init__.py000066400000000000000000000001001521254414300212130ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/mivot/features/000077500000000000000000000000001521254414300207315ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/features/__init__.py000066400000000000000000000000001521254414300230300ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/features/sky_coord_builder.py000066400000000000000000000257261521254414300250210ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Utility transforming MIVOT annotation into SkyCoord instances """ import numbers from astropy.coordinates import SkyCoord from astropy import units as u from astropy.coordinates import ICRS, Galactic, FK4, FK5 from astropy.time.core import Time from pyvo.mivot.glossary import SkyCoordMapping from pyvo.mivot.utils.exceptions import NoMatchingDMTypeError, MappingError class SkyCoordBuilder: ''' Utility generating SkyCoord instances from MIVOT annotations - SkyCoord instances can only be built from model classes containing the minimal set of required parameters (a position). - In this implementation, only the mango:EpochPosition class is supported since it contains the information required to compute the epoch propagation which is a major use-case parameters ----------- mivot_instance: dict or MivotInstance Python object generated from the MIVOT block as either a Pyhon object or a dict ''' def __init__(self, mivot_instance): self._mivot_instance_dict = mivot_instance.to_dict() self._map_coord_names = None def build_sky_coord(self): """ Build a SkyCoord instance from the MivotInstance dictionary. The operation requires the dictionary to have ``mango:EpochPosition`` as dmtype. This instance can be either the root of the dictionary or it can be one of the Mango properties if the root object is a mango:MangoObject instance This is a public method which could be extended to support other dmtypes. returns ------- SkyCoord Instance built by the method raises ------ NoMatchingDMTypeError if the SkyCoord instance cannot be built. """ if self._mivot_instance_dict and self._mivot_instance_dict["dmtype"] == "mango:MangoObject": property_dock = self._mivot_instance_dict["propertyDock"] for mango_property in property_dock: if mango_property["dmtype"] == "mango:EpochPosition": self._mivot_instance_dict = mango_property return self._build_sky_coord_from_mango() raise NoMatchingDMTypeError( "No INSTANCE with dmtype='mango:EpochPosition' has been found:" " in the property dock of the MangoObject, " "cannot build a SkyCoord from annotations") elif self._mivot_instance_dict and self._mivot_instance_dict["dmtype"] == "mango:EpochPosition": return self._build_sky_coord_from_mango() raise NoMatchingDMTypeError( "No INSTANCE with dmtype='mango:EpochPosition' has been found:" " cannot build a SkyCoord from annotations") def _get_time_instance(self, hk_field, besselian=False): """ Format a date expressed in year as [scale]year - Exception possibly risen by Astropy are not caught parameters ---------- hk_field: dict MIVOT instance attribute besselian: boolean besselian time scale is used if True, otherwise Julian (default) returns ------- Time instance or None raise ----- MappingError: if the Time instance cannot be built for some reason """ if hk_field['dmtype'] == "coords:Epoch": representation = 'yr' if "unit" not in hk_field else hk_field.get("unit") timestamp = hk_field['value'] # Process simple attribute else: representation = hk_field.get("dmtype") timestamp = hk_field.get("value") if not representation or not timestamp: raise MappingError(f"Cannot interpret field {hk_field} " f"as a {('besselian' if besselian else 'julian')} timestamp") time_instance = self._build_time_instance(timestamp, representation, besselian) if not time_instance: mode = "besselian" if besselian else "julian" raise MappingError(f"Cannot build a Time instance from {hk_field} ({mode} date)") return time_instance def _build_time_instance(self, timestamp, dmtype, besselian=False): """ Build a Time instance matching the input parameters. - Returns None if the parameters do not allow any Time setup - Exception possibly risen by Astropy are not caught at this level parameters ---------- timestamp: string or number The timestamp must comply with the given dmtype dmtype: string mango:DecimalYear, mango:JulianEpoch, mango:BesselianEpoch, mango:iso, mango:mjd, mango:jd (See MANGO primitive types derived from ivoa:timeStamp) besselian: boolean (optional) Flag telling to use the besselain calendar. We assume it to only be relevant for FK4 frame returns ------- Time instance or None """ # these types are not MANGO dmtype, however they can encountered in some free-style datasets. if dmtype in ("mango:year", "yr", "y"): # it the timestamp is numeric, we infer its format from the besselian flag if isinstance(timestamp, numbers.Number): return Time(f"{('B' if besselian else 'J')}{timestamp}", format=("byear_str" if besselian else "jyear_str")) if besselian: if timestamp.startswith("B"): return Time(f"{timestamp}", format="byear_str") elif timestamp.startswith("J"): # a besselain year cannot be given as "Jxxxx" return None elif timestamp.isnumeric(): # we force the string representation not to break the test assertions return Time(f"B{timestamp}", format="byear_str") else: if timestamp.startswith("J"): return Time(f"{timestamp}", format="jyear_str") elif timestamp.startswith("B"): # a julian year cannot be given as "Bxxxx" return None elif timestamp.isnumeric(): # we force the string representation not to break the test assertions return Time(f"J{timestamp}", format="jyear_str") # no case matches return None # in the following cases, the calendar (B or J) is given by the besselian flag # We force to use the string representation to avoid breaking unit tests. elif dmtype in ("mango:mjd", "mango:jd", "mango:iso"): astropyformat = dmtype.split(":")[1] time = Time(f"{timestamp}", format=astropyformat) return (Time(time.byear_str) if besselian else time) elif dmtype == "mango:DecimalYear": return Time(float(timestamp), format="decimalyear") elif dmtype == "mango:BesselianEpoch": # we accept both "Bxxxx" and "Jxxxx" formats for besselian years, # because the prefix is stripped and this does not impact the result. if isinstance(timestamp, str) and (timestamp.startswith("B") or timestamp.startswith("J")): timestamp = timestamp[1:] return Time(float(timestamp), format="byear") elif dmtype == "mango:JulianEpoch": # we accept both "Bxxxx" and "Jxxxx" formats for julian years, # because the prefix is stripped and this does does not impact the result. if isinstance(timestamp, str) and (timestamp.startswith("B") or timestamp.startswith("J")): timestamp = timestamp[1:] return Time(float(timestamp), format="jyear") return None def _get_space_frame(self): """ Build an astropy space frame instance from the MIVOT annotations. - Equinox are supported for FK4/5 - Reference location is not supported returns ------- FK2, FK5, ICRS or Galactic Astropy space frame instance """ coo_sys = self._mivot_instance_dict["spaceSys"]["frame"] equinox = None frame = coo_sys["spaceRefFrame"]["value"].lower() if frame == 'fk4': self._map_coord_names = SkyCoordMapping.default_params if "equinox" in coo_sys: equinox = self._get_time_instance(coo_sys["equinox"], True) # by FK4 takes obstime=equinox by default return FK4(equinox=equinox) return FK4() if frame == 'fk5': self._map_coord_names = SkyCoordMapping.default_params if "equinox" in coo_sys: equinox = self._get_time_instance(coo_sys["equinox"]) return FK5(equinox=equinox) return FK5() if frame == 'galactic': self._map_coord_names = SkyCoordMapping.galactic_params return Galactic() self._map_coord_names = SkyCoordMapping.default_params return ICRS() def _build_sky_coord_from_mango(self): """ Build a SkyCoord instance from the ``mango:EpochPosition instance``. - The epoch (obstime) is meant to be given in year. - ICRS frame is taken by default - The cos-delta correction is meant to be applied. The case ``mango:pmCosDeltApplied = False`` is not supported yet returns ------- SkyCoord instance built by the method """ kwargs = {} kwargs["frame"] = self._get_space_frame() for mango_role, skycoord_field in self._map_coord_names.items(): # ignore not mapped parameters if mango_role not in self._mivot_instance_dict: continue hk_field = self._mivot_instance_dict[mango_role] if mango_role == "obsDate": besselian = isinstance(kwargs["frame"], FK4) fobstime = self._get_time_instance(hk_field, besselian=besselian) # FK4 class has an obstime attribute which must be set at instanciation time if besselian: kwargs["frame"] = FK4(equinox=kwargs["frame"].equinox, obstime=fobstime) # This is not the case for any other space frames else: kwargs[skycoord_field] = fobstime # ignore not set parameters elif (hk_value := hk_field["value"]) is not None: # Convert the parallax (mango) into a distance if skycoord_field == "distance": kwargs[skycoord_field] = ( (hk_value * u.Unit(hk_field["unit"])).to(u.parsec, equivalencies=u.parallax())) elif "unit" in hk_field and hk_field["unit"]: kwargs[skycoord_field] = hk_value * u.Unit(hk_field["unit"]) else: kwargs[skycoord_field] = hk_value return SkyCoord(**kwargs) astropy-pyvo-f0fdda3/pyvo/mivot/features/static_reference_resolver.py000066400000000000000000000050751521254414300265400ustar00rootroot00000000000000""" Class used to resolve each static REFERENCE found in mivot_block. """ from copy import deepcopy from pyvo.mivot.utils.exceptions import MivotError from pyvo.mivot.utils.xpath_utils import XPath from pyvo.utils.prototype import prototype_feature @prototype_feature('MIVOT') class StaticReferenceResolver: """ Namespace for the function processing the static REFERENCEs """ @staticmethod def resolve(annotation_seeker, templates_ref, mivot_block): """ Resolve all static REFERENCEs found in the mivot_block. The referenced objects are first searched in GLOBALS and then in the templates_ref table. REFERENCE elements are replaced with the referenced objects set with the roles of the REFERENCEs. Works even if REFERENCE tags are numbered by the former processing. Parameters ---------- annotation_seeker : AnnotationSeeker Utility to extract desired elements from the mapping block. templates_ref : str Identifier of the table where the mivot_block comes from. mivot_block : xml.etree.ElementTree The XML element object. Returns ------- int The number of references resolved. Raises ------ MappingError If the reference cannot be resolved. NotImplementedError If the reference is dynamic. """ resolved_refs = 0 for ele in XPath.x_path_startwith(mivot_block, './/REFERENCE_'): dmref = ele.get("dmref") # If we have no @dmref in REFERENCE, we consider this is a ref based on a keys if dmref is None: raise NotImplementedError("Dynamic reference not implemented") target = annotation_seeker.get_globals_instance_by_dmid(dmref) if target is None and templates_ref is not None: target = annotation_seeker.get_templates_instance_by_dmid(templates_ref, dmref) if target is None: raise MivotError(f"Cannot resolve reference={dmref}") target_copy = deepcopy(target) # If the reference is within a collection: no role if ele.get('dmrole'): target_copy.attrib["dmrole"] = ele.get('dmrole') parent_map = {c: p for p in mivot_block.iter() for c in p} parent = parent_map[ele] # Insert the referenced object parent.append(target_copy) # Drop the reference parent.remove(ele) resolved_refs += 1 return resolved_refs astropy-pyvo-f0fdda3/pyvo/mivot/glossary.py000066400000000000000000000166641521254414300213450ustar00rootroot00000000000000""" Glossary for the MIVOT package - Model related words (hard-coded for now) - URLs """ __all__ = ["Url", "IvoaType", "Roles", "CoordSystems", "ModelPrefix", "VodmlUrl", "EpochPositionAutoMapping"] class Url: """ Service URL(s) that are used by the API """ #: Filter Profile Service URL (SVO) FPS = ( "http://svo2.cab.inta-csic.es/svo/theory/fps/fpsmivot.php?PhotCalID=" ) class IvoaType: """ Primitive VODML types """ #: primitive type for strings string = "ivoa:string" #: primitive type for reals real = "ivoa:real" #: primitive type for real quantity (real + unit) RealQuantity = "ivoa:RealQuantity" #: primitive type for booleans bool = "ivoa:boolean" #: primitive type for a point in time datetime = "ivoa:datatime" class Roles: """ Accepted roles for all implemented classes; correspond to the last path element of the ``dmroles`` as defined in VODML (VODML-ID) """ # Roles of the EpochPosition class that are supported # Do not change the ordering: it used below to access fields EpochPosition = [ "longitude", "latitude", "parallax", "radialVelocity", "pmLongitude", "pmLatitude", "obsDate", ] #: Roles of the EpochPositionCorrelations class that are supported EpochPositionCorrelations = [ "longitudeParallax", "latitudeParallax", "pmLongitudeParallax", "pmLatitudeParallax", "longitudeLatitude", "pmLongitudePmLatitude", "latitudePmLatitude", "latitudePmLongitude", "longitudePmLatitude", "longitudePmLongitude", "isCovariance", ] #: Roles of the EpochPositionErrors class that are supported EpochPositionErrors = [ "parallax", "radialVelocity", "position", "properMotion", ] #: Roles of the PErrorSym1D class that is supported PErrorSym1D = [ "sigma" ] #: Roles of the PErrorAsym1D class that are supported PErrorAsym1D = [ "low", "high" ] #: Roles of the PErrorSym2D class that are supported PErrorSym2D = [ "sigma1", "sigma2" ] #: Roles of the PErrorSym2D class that are supported PErrorEllipse = [ "semiMajorAxis", "semiMinorAxis", "angle" ] #: Roles of the PhotometricProperty class that are supported PhotometricProperty = ["value", "error" ] #: Roles of the Color class that are supported Color = ["value", "error", "definition" ] #: Roles of the QueryOrigin class that are supported QueryOrigin = ["publisher", "server_software", "service_protocol", "request", "request_date", "query", "contact", "ivoid" ] #: Roles of the DataOrigin class that are supported DataOrigin = ["ivoid", "reference_url", "resource_version", "creators", "cites", "is_derived_from", "original_date", "rights", "rights_uri", "articles" ] #: Roles of the Article class that are supported Article = ["identifier", "editor" ] class CoordSystems: """ Supported values for the coordinate system parameters (space and time) """ #: see IVOA `refframe `_ vocabulary space_frames = ["eq_FK4", "FK4", "eq_FK5", "FK5", "ICRS", "GALACTIC", "SUPER_GALACTIC", "ECLIPTIC"] #: see IVOA `refposition `_ vocabulary ref_positions = ["BARYCENTER", "GEOCENTER", "TOPOCENTER"] #: see IVOA `timescale `_ vocabulary time_frames = ["TAI", "TT", "TDT", "ET", "IAT", "UT1", "UTC", "GMT", "GPS", "TCG", "TCB", "TBD", "LOCAL"] #: supported time formats (could be replaced witha vocabulary later on) time_formats = ["byear", "cxcsec", "decimalyear", "fits", "gps", "iso", "timestamp", "jyear", "year", "jd", "mjd"] class ModelPrefix: """ Model names as defined in VODML """ #: `VODML `_ primitive types ivoa = "ivoa" #: VODML prefix of the MANGO model mango = "mango" #: VODML prefix of the `Photometry Data Model #: `_ Phot = "Phot" #: VODML prefix of the Astronomical `Astronomical Coordinates and Coordinate Systems #: `_ datamodel coords = "coords" #: VODML prefix of the `Astronomical Measurements Model #: `_ meas = "meas" class VodmlUrl: """ VODML URLs of the supported models. Names of the class attributes match the `ModelPrefix` fields. """ #: VODML URL of the `VODML #: `_ primitive types ivoa = "https://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml" #: VODML URL of the MANGO model mango = "https://raw.githubusercontent.com/ivoa-std/MANGO/refs/heads/wd-v1.0/vo-dml/mango.vo-dml.xml" #: VODML URL of the `Photometry Data Model `_ Phot = "https://ivoa.net/xml/VODML/Phot-v1.vodml.xml" #: VODML URL of the `Astronomical Coordinates and Coordinate Systems #: `_ datamodel coords = "https://ivoa.net/xml/VODML/Coords-v1.vo-dml.xml" #: VODML URL of the `Astronomical Measurements Model #: `_ meas = "https://ivoa.net/xml/VODML/Meas-v1.vo-dml.xml" class EpochPositionAutoMapping: """ Expected UCDs for identifying FIELD to be mapped to EpochPosition attributes. - UCD-s of the associated errors are derived from them - list items must have an exact match - Single values are evaluated as starting with """ #: UCD-s accepted to map the longitude longitude = ["POS_EQ_RA_MAIN", "pos.eq.ra;meta.main"] #: UCD-s accepted to map the latitude latitude = ["POS_EQ_DEC_MAIN", "pos.eq.dec;meta.main"] #: UCD-s accepted to map the proper motion longitude pmLongitude = ["pos.pm;pos.eq.ra"] #: UCD-s accepted to map the proper motion latitude pmLatitude = ["pos.pm;pos.eq.dec"] #: UCD-s accepted to map the obsDate obsDate = ["time.epoch;obs;stat.mean", "time.epoch;obs"] #: UCD-s accepted to map the parallax parallax = ["pos.parallax.trig"] #: first word of UCD-s accepted to map the radial velocity radialVelocity = "spect.dopplerVeloc.opt" class SkyCoordMapping: """ Mapping of the MANGO:EpochPosition parameters to the SkyCoord parameters """ default_params = { Roles.EpochPosition[0]: 'ra', Roles.EpochPosition[1]: 'dec', Roles.EpochPosition[2]: 'distance', Roles.EpochPosition[3]: 'radial_velocity', Roles.EpochPosition[4]: 'pm_ra_cosdec', Roles.EpochPosition[5]: 'pm_dec', Roles.EpochPosition[6]: 'obstime'} galactic_params = { Roles.EpochPosition[0]: 'l', Roles.EpochPosition[1]: 'b', Roles.EpochPosition[2]: 'distance', Roles.EpochPosition[3]: 'radial_velocity', Roles.EpochPosition[4]: 'pm_l_cosb', Roles.EpochPosition[5]: 'pm_b', Roles.EpochPosition[6]: 'obstime'} astropy-pyvo-f0fdda3/pyvo/mivot/seekers/000077500000000000000000000000001521254414300205545ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/seekers/__init__.py000066400000000000000000000001461521254414300226660ustar00rootroot00000000000000""" ``seekers`` package contains utilities for retrieving components of VOTales or of Mivot blocks """astropy-pyvo-f0fdda3/pyvo/mivot/seekers/annotation_seeker.py000066400000000000000000000363501521254414300246450ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Utilities for extracting sub-blocks from a MIVOT mapping block. """ import logging from pyvo.mivot.utils.exceptions import MivotError, MappingError from pyvo.mivot.utils.vocabulary import Att, Ele from pyvo.mivot.utils.vocabulary import Constant from pyvo.mivot.utils.xpath_utils import XPath from pyvo.utils.prototype import prototype_feature @prototype_feature('MIVOT') class AnnotationSeeker: """ This class provides tools for extracting mapping sub-blocks commonly used by other stake-holders. All functions using the mapping employ this class to obtain XML elements. To simplify the job for other tools, the XML namespace is removed from the mapping block. Attributes: ---------- _xml_block (~`xml.etree.ElementTree.Element`): Full mapping block. _globals_block (~`xml.etree.ElementTree.Element` or None): GLOBALS block. _templates_blocks (dict): Templates dictionary where keys are tableref and values are XML-TEMPLATES. """ def __init__(self, xml_block): """ Initializes the AnnotationSeeker. - Split the mapping as elements of interest. - Remove the name_spaces. - Append numbers to JOIN/REFERENCE. Parameters ---------- xml_block (~`xml.etree.ElementTree.Element`): XML mapping block """ self._xml_block = xml_block self._globals_block = None self._templates_blocks = {} self._find_globals_block() self._find_templates_blocks() self._rename_ref_and_join() def _find_globals_block(self): """ Extract the GLOBALS element from the XML mapping block and store its reference. """ for child in self._xml_block: if self._name_match(child.tag, Ele.GLOBALS): logging.debug("Found " + Ele.GLOBALS) self._globals_block = child def _find_templates_blocks(self): """ Search the TEMPLATES elements from the XML mapping block and store its reference. This method iterates through the children of the XML mapping block, identifies TEMPLATES blocks, and associates them with their respective @tableref values in the _templates_blocks dictionary. Returns ------- dict: TEMPLATES tablerefs and their mapping blocks {'tableref': mapping_block, ...} Raises ------ MivotElementNotFound If a TEMPLATES block is found without a @tableref attribute, and there are already other TEMPLATES blocks. """ for child in self._xml_block: if self._name_match(child.tag, Ele.TEMPLATES): tableref = child.get(Att.tableref) if tableref is not None: logging.debug("Found " + Ele.TEMPLATES + " %s", tableref) self._templates_blocks[tableref] = child elif not self._templates_blocks: logging.debug("Found " + Ele.TEMPLATES + " without " + Att.tableref) self._templates_blocks["DEFAULT"] = child else: raise MivotError(Ele.TEMPLATES + " without " + Att.tableref + " must be unique") def _rename_ref_and_join(self): """ Tag specified elements with a numerical suffix to make them unique. This is necessary to avid confusions when resolving cross references between elements The elements that are renamed are: - JOIN - REFERENCE """ cpt = 1 for tag in ['REFERENCE', 'JOIN']: xpath = './/' + tag for ele in XPath.x_path(self._xml_block, xpath): ele.tag = tag + '_' + str(cpt) cpt += 1 @staticmethod def _name_match(name, expected): """ Return true if name matches expected whatever the namespace Parameters ---------- name (str): Name to compare expected (str): Expected name for the comparison Returns ------- bool """ if type(name).__name__ == 'cython_function_or_method': return False return name.endswith(expected) """ Properties """ @property def globals_block(self): """ GLOBALS getter """ return self._globals_block def get_globals_collections(self): """ Return a list of all GLOBALS/COLLECTION elements. These collections have no @dmroles but often @dmids. They have particular roles - Used by references (e.g., filter definition) - Used as head of the mapped model (e.g., [Cube instance]) Returns ------- list: GLOBALS/COLLECTION elements """ return XPath.x_path(self._globals_block, ".//COLLECTION") def get_models(self): """ Get the declared MODELs and their URLs. Returns ------- dict: MODELs and their URLs {'model': [url], ...} """ models_found = {} eset = XPath.x_path(self._xml_block, ".//" + Ele.MODEL) for ele in eset: models_found[ele.get("name")] = ele.get("url") return models_found def get_templates_tableref(self): """ Get all @tableref of the mapping. Returns ------- list: @tableref found in the mapping """ return self._templates_blocks.keys() def get_templates(self): """ Return a list of TEMPLATES @tableref. Returns ------- [string] tablerefs of all TEMPLATES elements """ templates_found = [] eset = XPath.x_path(self._xml_block, ".//" + Ele.TEMPLATES) for ele in eset: tableref = ele.get("tableref") if tableref is None: tableref = Constant.FIRST_TABLE templates_found.append(tableref) return templates_found def get_templates_block(self, tableref): """ Return the TEMPLATES mapping block of the table identified @tableref. If tableref is None or equals to Constant.FIRST_TABLE, return the first TEMPLATES. Parameters ---------- tableref (str): @tableref of the searched TEMPLATES Returns ------- XML element: matching TEMPLATES block or None """ # one table: name forced to DEFAULT or take the first if tableref is None or tableref == Constant.FIRST_TABLE: for _, tmpl in self._templates_blocks.items(): return tmpl if tableref not in self._templates_blocks: raise MivotError( "No TEMPLATES with tableref=" + tableref) return self._templates_blocks[tableref] """ INSTANCE """ def get_instance_dmtypes(self): """ Get @dmtypes of all mapped instances Returns ------- dict: @dmtypes of all mapped instances {GLOBALS: [], TEMPLATES: {}} """ dmtypes_found = {Ele.GLOBALS: [], Ele.TEMPLATES: {}} eset = XPath.x_path(self._globals_block, ".//" + Ele.INSTANCE) for ele in eset: dmtypes_found[Ele.GLOBALS].append(ele.get(Att.dmtype)) for tableref, block in self._templates_blocks.items(): dmtypes_found[Ele.TEMPLATES][tableref] = [] eset = XPath.x_path(block, ".//" + Ele.INSTANCE) for ele in eset: dmtypes_found[Ele.TEMPLATES][tableref].append(ele.get(Att.dmtype)) return dmtypes_found def get_instance_by_dmtype(self, dmtype_pattern): """ Get all the mapped instances that have a @dmtype containing dmtype_pattern Parameters ---------- dmtype_pattern (str): @dmtype looked for Returns ------- dict: @dmtypes of all mapped instances {'dmtype': [instance], ...} """ instance_found = {Ele.GLOBALS: [], Ele.TEMPLATES: {}} eset = XPath.x_path_contains(self._globals_block, ".//" + Ele.INSTANCE, Att.dmtype, dmtype_pattern ) instance_found[Ele.GLOBALS] = eset for (tableref, block) in self._templates_blocks.items(): instance_found[Ele.TEMPLATES][tableref] = XPath.x_path_contains(block, './/' + Ele.INSTANCE, Att.dmtype, dmtype_pattern) return instance_found """ GLOBALS INSTANCES """ def get_globals_instances(self): """ Return the list of all GLOBALS/INSTANCE elements. These collections have no @dmroles but often @dmids. They have particular roles when: - Used by references (e.g., filter definition) - Used as head of the mapped model (e.g., Cube instance) Returns ------- list: GLOBALS/INSTANCE elements """ return XPath.x_path(self._globals_block, "./" + Ele.INSTANCE) def get_globals_instance_dmids(self): """ Get a list of @dmid for GLOBALS/INSTANCE. Returns ------- list: @dmid of GLOBALS/INSTANCE """ dmids_found = [] eset = XPath.x_path(self._globals_block, ".//" + Ele.INSTANCE + "[@" + Att.dmid + "]") for ele in eset: dmids_found.append(ele.get(Att.dmid)) return dmids_found def get_globals_instance_by_dmid(self, dmid): """ Get the GLOBALS/INSTANCE with @dmid=dmid. Parameters ---------- dmid (str): @dmid of the searched GLOBALS/INSTANCE Returns ------- dict: `~xml.etree.ElementTree.Element` """ eset = XPath.x_path(self._globals_block, (".//" + Ele.INSTANCE + "[@" + Att.dmid + "='" + dmid + "']") ) for ele in eset: return ele return None def get_globals_instance_dmtypes(self): """ Get the list the @dmtype GLOBALS/INSTANCE. Returns ------- list: @dmtype of GLOBALS/INSTANCE """ dmtypes_found = [] for inst in self.get_globals_instances(): dmtypes_found.append(inst.get(Att.dmtype)) return dmtypes_found def get_templates_instance_by_dmid(self, tableref, dmid): """ Get the TEMPLATES/INSTANCE with @dmid=dmid and TEMPLATES@tableref=tableref. Parameters ---------- tableref (str): @tableref of the searched TEMPLATES dmid (str): @dmid of the searched TEMPLATES/INSTANCE Returns ------- dict: ~`xml.etree.ElementTree.Element` """ templates_block = self.get_templates_block(tableref) if templates_block is None: return None eset = XPath.x_path(templates_block, ".//" + Ele.INSTANCE + "[@" + Att.dmid + "='" + dmid + "']") for ele in eset: return ele return None def get_globals_instance_from_collection(self, sourceref, pk_value): """ Get the GLOBALS/COLLECTION[@dmid=sourceref]/INSTANCE/PRIMARY_KEY[@value='pk_value']. Parameters ---------- sourceref (str): @dmid of the searched GLOBALS/COLLECTION pk_value: (str): @value of the searched GLOBALS/COLLECTION/INSTANCE/PRIMARY_KEY Returns ------- dict: ~`xml.etree.ElementTree.Element` """ einst = XPath.x_path( self._globals_block, ".//" + Ele.COLLECTION + "[@" + Att.dmid + "='" + sourceref + "']/" + Ele.INSTANCE + "/" + Att.primarykey + "[@" + Att.value + "='" + pk_value + "']") parent_map = {c: p for p in self._globals_block.iter() for c in p} for inst in einst: return parent_map[inst] return None """ GLOBALS COLLECTION """ def get_globals_collection(self, dmid): """ Get the GLOBALS/COLLECTION with @dmid=dmid. Parameters ---------- dmid (str):@dmid of the searched GLOBALS/COLLECTION Returns ------- dict: `xml.etree.ElementTree.Element` """ eset = XPath.x_path(self._globals_block, ".//" + Ele.GLOBALS + "/" + Ele.COLLECTION + "[@" + Att.dmid + "='" + dmid + "']") for ele in eset: return ele return None def get_globals_collection_dmids(self): """ Get the list of all the @dmid of GLOBALS/COLLECTION. Returns ------- list: @dmid of GLOBALS/COLLECTION """ dmids_found = [] eset = XPath.x_path(self._globals_block, ".//" + Ele.COLLECTION + "[@" + Att.dmid + "]") for ele in eset: dmids_found.append(ele.get(Att.dmid)) return dmids_found def get_globals_collection_dmtypes(self): """ Get the list of the @dmtype of GLOBALS/COLLECTION/INSTANCE. Used for collections of static objects. Returns ------- list: @dmtype of GLOBALS/COLLECTION/INSTANCE """ eles = XPath.x_path(self._globals_block, ".//" + Ele.COLLECTION + "/" + Ele.INSTANCE) dmtypes_found = [] for inst in eles: dmtype = inst.get(Att.dmtype) if dmtype not in dmtypes_found: dmtypes_found.append(dmtype) return dmtypes_found def get_collection_item_by_primarykey(self, coll_dmid, key_value): """ Get the GLOBALS/COLLECTION/INSTANCE with COLLECTION@dmid=dmid and INSTANCE with a PRIMARY_key which @value matches key_value. An exception is raised if there is less or more than one element matching the criteria. The 2 parameters match the dynamic REFERENCE definition. Parameters ---------- coll_dmid (str): @dmid of the searched GLOBALS/COLLECTION key_value (str): @value of the searched GLOBALS/COLLECTION/INSTANCE/PRIMARY_KEY Returns ------- dict: ~`xml.etree.ElementTree.Element` Raises ------ MivotElementNotFound: If no element matches the criteria. MappingError: If more than one element matches the criteria. """ eset = XPath.x_path(self._globals_block, ".//" + Ele.COLLECTION + "[@" + Att.dmid + "='" + coll_dmid + "']/" + Ele.INSTANCE + "/" + Att.primarykey + "[@" + Att.value + "='" + key_value + "']") if len(eset) == 0: message = (f"{Ele.INSTANCE} with {Att.primarykey} = {key_value} in " f"{Ele.COLLECTION} {Att.dmid} {key_value} not found" ) raise MivotError(message) if len(eset) > 1: message = ( f"More than one {Ele.INSTANCE} with {Att.primarykey}" f" = {key_value} found in {Ele.COLLECTION} " f"{Att.dmid} {key_value}" ) raise MappingError(message) logging.debug(Ele.INSTANCE + " with " + Att.primarykey + "=%s found in " + Ele.COLLECTION + " " + Att.dmid + "=%s", key_value, coll_dmid) parent_map = {c: p for p in self._globals_block.iter() for c in p} return parent_map[eset[0]] astropy-pyvo-f0fdda3/pyvo/mivot/seekers/resource_seeker.py000066400000000000000000000074521521254414300243230ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Class that provides multiple getters on VOTable RESOURCE elements. """ from pyvo.mivot.utils.vocabulary import Constant from pyvo.utils.prototype import prototype_feature @prototype_feature('MIVOT') class ResourceSeeker: """ This class provides multiple getters on resource tables. Some methods are simple wrappers for external tools in order to have all the search functions on RESOURCE gathered in within a single namespace. """ def __init__(self, resource): """ Constructor Parameters ---------- resource (astropy.votable.Resource): The resource object to be queried. """ self._resource = resource def get_table_ids(self): """ Return the list of table ids. Only resource children are considered. The @ID is first searched and then the @name, and finally 'AnonymousTable' is taken. Returns ------- list of str: table ids. """ ids_found = [] for table in self._resource.tables: if table.ID is not None: ids_found.append(table.ID) elif table.name is not None: ids_found.append(table.name) else: ids_found.append(Constant.ANONYMOUS_TABLE) return ids_found def get_table(self, table_name_or_id): """ Return the table matching table_name first by ID and then by name. Parameters ---------- table_name_or_id (str): Name or id of the table to get. Returns ------- ~astropy.votable.table: table matching the table_name. """ if table_name_or_id == Constant.FIRST_TABLE: return self._resource.tables[0] for table in self._resource.tables: if (table_name_or_id is None or table.name == table_name_or_id or table.ID == table_name_or_id): return table return None def get_params(self): """ Return the VOTable PARAMS. Returns ------- ~astropy.votable.Resource.params: VOTable PARAMS. """ return self._resource.params def get_id_index_mapping(self, table_name): """ Build an index binding column number with field id. Parameters ---------- table_name (str): Name of the table. Returns ------- dict: dictionary mapping field id to column number: {name: {ID, ref, indx}...} """ column_index = {} table = self.get_table(table_name) indx = 0 for field in table.fields: field_desc = {} if field.ID is not None: field_desc["ID"] = field.ID if field.ref is not None: field_desc["ref"] = field.ref field_desc["indx"] = indx if "ID" not in field_desc: field_desc["ID"] = field.name column_index[field.name] = field_desc indx += 1 return column_index def get_id_unit_mapping(self, table_name): """ Build an index binding field unit with field id. Parameters ---------- table_name (str): Name of the table. Returns ------- dict: A dictionary mapping field id to field unit {ID1: unit, name1: unit, ref1: unit ...}. """ unit_index = {} table = self.get_table(table_name) for field in table.fields: unit = field.unit if field.ID is not None: unit_index[field.ID] = unit elif field.name is not None: unit_index[field.name] = unit elif field.ref is not None: unit_index[field.ref] = unit return unit_index astropy-pyvo-f0fdda3/pyvo/mivot/seekers/table_iterator.py000066400000000000000000000032301521254414300241240ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Iterator for table rows. """ from pyvo.utils.prototype import prototype_feature @prototype_feature('MIVOT') class TableIterator: """ Simple wrapper iterating over table rows. Some methods are simple wrappers for external tools in order to have all the search functions on TABLE gathered in within a single namespace. """ def __init__(self, name, data_table): """ Constructor of the TableIterator class. Parameters ---------- name (str): Table name (not really used). data_table (~numpy.ndarray): Numpy table returned by `~astropy.votable`. """ self.name = name self.data_table = data_table self.last_row = None self.iter = None # not used yet self.row_filter = None def get_next_row(self): """ Return the next Numpy row or None. The end of table exception usually returned by Numpy is trapped. """ # The iterator is set at the first iteration if self.iter is None: self.iter = iter(self.data_table) try: while True: row = next(self.iter) if row is not None: if self.row_filter is None or self.row_filter.row_match(row): self.last_row = row return row else: return None except StopIteration: return None def rewind(self): """ Set the pointer on the table-top, destroys the iterator actually. """ self.iter = None astropy-pyvo-f0fdda3/pyvo/mivot/tests/000077500000000000000000000000001521254414300202555ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/tests/__init__.py000066400000000000000000000076571521254414300224050ustar00rootroot00000000000000""" Utility class to check that generated XML match reference elements. Only used by the tests """ from pyvo.utils import activate_features # Activate MIVOT for all tests activate_features('MIVOT') try: from defusedxml import ElementTree as etree except ImportError: from xml.etree import ElementTree as etree from pyvo.mivot.utils.xml_utils import XmlUtils class XMLOutputChecker: """ This class is used to compare XML outputs, ignoring whitespace differences. """ def check_output(self, want, got): """ Compare two XML outputs, ignoring whitespace differences. Parameters ---------- want : str The expected XML output. got : str The actual XML output. Returns ------- bool True if the two XML outputs are equal, False otherwise. """ return (self._format_xml(want.strip()) == self._format_xml(got.strip())) def output_difference(self, want, got): """ Return a string describing the differences between two XML outputs. Parameters ---------- want : str The expected XML output. got : str The actual XML output. Returns ------- str A string describing the differences between the two XML outputs. """ return f"Diff:\n{self._format_xml(want)}\nvs.\n{self._format_xml(got)}" def _format_xml(self, xml_str): """ Format an XML string. Parameters ---------- xml_str : str The XML string to format. Returns ------- str The formatted XML string. """ return "\n".join(line.strip() for line in xml_str.splitlines()) @staticmethod def xmltree_to_file(xmltree, file_path): """ Write an XML tree to a file. Parameters ---------- xmltree : ~`xml.etree.ElementTree.Element` The XML tree to write to the file. file_path : str The path to the output file. """ with open(file_path, 'w') as output: output.write(XmlUtils.pretty_string(xmltree)) @staticmethod def xmltree_from_file(file_path): """ Parse an XML tree from a file. Parameters ---------- file_path : str The path to the XML file. Returns ------- ~`xml.etree.ElementTree.Element` The parsed XML tree. """ return etree.parse(file_path) @staticmethod def assertXmltreeEquals(xmltree1, xmltree2): """ Assert that two XML trees are equal. Parameters ---------- xmltree1 : ~`xml.etree.ElementTree.Element` The first XML tree for comparison. xmltree2 : ~`xml.etree.ElementTree.Element` The second XML tree for comparison. """ xml_str1 = etree.tostring(xmltree1).decode("utf-8") xml_str2 = etree.tostring(xmltree2).decode("utf-8") checker = XMLOutputChecker() assert checker.check_output(xml_str1, xml_str2, 0), f"XML trees differ:\n{xml_str1}\n---\n{xml_str2}" @staticmethod def assertXmltreeEqualsFile(xmltree1, xmltree2_file): """ Assert that an XML tree is equal to the content of a file. Parameters ---------- xmltree1 : ~`xml.etree.ElementTree.Element` The XML tree for comparison. xmltree2_file : str The path to the file containing the second XML tree. """ xmltree2 = XMLOutputChecker.xmltree_from_file(xmltree2_file).getroot() xml_str1 = etree.tostring(xmltree1).decode("utf-8").strip() xml_str2 = etree.tostring(xmltree2).decode("utf-8").strip() checker = XMLOutputChecker() assert checker.check_output(xml_str1, xml_str2), f"XML trees differ:\n{xml_str1}\n---\n{xml_str2}" astropy-pyvo-f0fdda3/pyvo/mivot/tests/conftest.py000066400000000000000000000012661521254414300224610ustar00rootroot00000000000000from contextlib import contextmanager import pytest import requests_mock class ContextAdapter(requests_mock.Adapter): """ requests_mock adapter where ``register_uri`` returns a context manager """ @contextmanager def register_uri(self, *args, **kwargs): matcher = super().register_uri(*args, **kwargs) yield matcher self.remove_matcher(matcher) def remove_matcher(self, matcher): if matcher in self._matchers: self._matchers.remove(matcher) @pytest.fixture(scope='function') def mocker(): with requests_mock.Mocker( adapter=ContextAdapter(case_sensitive=True) ) as mocker_ins: yield mocker_ins astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/000077500000000000000000000000001521254414300211665ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/filter_gaia_grp.xml000066400000000000000000000063731521254414300250370ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/filter_gaia_grvs.xml000066400000000000000000000063771521254414300252340ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/000077500000000000000000000000001521254414300231245ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/annotation_seeker.0.1.xml000066400000000000000000000122651521254414300276610ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/annotation_seeker.0.2.xml000066400000000000000000000040751521254414300276620ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/annotation_seeker.0.4.xml000066400000000000000000000012211521254414300276520ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/globals_models.json000066400000000000000000000010431521254414300270030ustar00rootroot00000000000000{"coords": "https://www.ivoa.net/xml/STC/20200908/Coords-v1.0.vo-dml.xml", "cube": "https://volute.g-vo.org/svn/trunk/projects/dm/Cube/vo-dml/Cube-1.0.vo-dml.xml", "ds": "https://volute.g-vo.org/svn/trunk/projects/dm/DatasetMetadata/vo-dml/DatasetMetadata-1.0.vo-dml.xml", "ivoa": "https://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml", "mango": "file:/Users/sao/Documents/IVOA/GitHub/ivoa-dm-examples/tmp/Mango-v1.0.vo-dml.xml", "meas": "https://www.ivoa.net/xml/Meas/20200908/Meas-v1.0.vo-dml.xml"}astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/instance_dmtypes.json000066400000000000000000000015171521254414300273740ustar00rootroot00000000000000{ "GLOBALS": [ "coords:TimeSys", "coords:TimeFrame", "coords:StdRefLocation", "coords:SpaceSys", "coords:SpaceFrame", "mango:coordinates.PhotometryCoordSys", "mango:coordinates.PhotFilter", "mango:coordinates.PhotometryCoordSys", "mango:coordinates.PhotFilter", "mango:coordinates.PhotometryCoordSys", "mango:coordinates.PhotFilter", "ds:experiment.ObsDataset", "ds:experiment.Target" ], "TEMPLATES": { "_PKTable": [ "cube:SparseCube" ], "Results": [ "cube:NDPoint", "cube:Observable", "meas:Time", "coords:MJD", "cube:Observable", "meas:GenericMeasure", "coords:PhysicalCoordinate", "cube:Observable", "meas:GenericMeasure", "coords:PhysicalCoordinate", "meas:Error", "meas:Symmetrical" ] } }astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/mango_object.xml000066400000000000000000000450621521254414300263040ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/multiple_templates.xml000066400000000000000000000004741521254414300275640ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/static_reference_resolved.xml000066400000000000000000000013471521254414300310630ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/test_header_extraction.xml000066400000000000000000000165731521254414300304110ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/test_mivot_frames.xml000066400000000000000000000026041521254414300274020ustar00rootroot00000000000000 Generated by pyvo.mivot.writer astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/test_mivot_photcal.xml000066400000000000000000000074441521254414300275660ustar00rootroot00000000000000 Generated by pyvo.mivot.writer astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/test_mivot_writer.json000066400000000000000000000020041521254414300276040ustar00rootroot00000000000000{ "dmtype": "mango:EpochPosition", "longitude": { "value": 52.2340018, "unit": "deg" }, "latitude": { "value": 59.8937333, "unit": "deg" }, "errors": { "dmtype": "mango:EpochPositionErrors", "dmrole": "mango:EpochPosition.errors", "position": { "dmtype": "mango:error.ErrorCorrMatrix", "dmrole": "mango:EpochPositionErrors.position", "sigma1": { "value": 6.0, "unit": "arcsec" }, "sigma2": { "value": 6.0, "unit": "arcsec" } } }, "spaceSys": { "dmtype": "coords:SpaceSys", "dmid": "_spacesys_icrs", "dmrole": "mango:EpochPosition.spaceSys", "frame": { "dmtype": "coords:SpaceFrame", "dmrole": "coords:PhysicalCoordSys.frame", "spaceRefFrame": { "value": "ICRS" }, "refPosition": { "dmtype": "coords:StdRefLocation", "dmrole": "coords:SpaceFrame.refPosition", "position": { "value": "BARYCENTER" } } } } }astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/reference/test_mivot_writer.xml000066400000000000000000000033431521254414300274420ustar00rootroot00000000000000 Mivot writer unit test astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/simbad-cone-mivot.xml000066400000000000000000000221011521254414300252210ustar00rootroot00000000000000 IVOID of the service specification Used access protocol and version Data publisher HTTP request URL Query execution date Publisher email address Successful query Distance (in degrees) between this object and the cone-search's target. Main identifier for an object Right ascension Declination Object type Coordinate error major axis Coordinate error minor axis Coordinate error angle Proper motion in RA Proper motion in DEC Proper motion error major axis Proper motion error minor axis Proper motion error angle Parallax Radial Velocity Angular size major axis Angular size minor axis Galaxy ellipse angle MK spectral type Morphological type
1.0409523503457668E-5 NAME Barnard's Star c 269.45207695861900 4.69336496657667 Planet 17 57 48.4984700683 +04 41 36.113879675 0.0262 0.0290 90 -801.551 10362.394 0.032 0.036 90 546.9759 1
Truncated result
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/static_reference.xml000066400000000000000000000011131521254414300252110ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.header_extraction.1.xml000066400000000000000000001115131521254414300265170ustar00rootroot00000000000000 VizieR Astronomical Server vizier.cds.unistra.fr Date: 2024-03-21T15:16:08 [V7.33.3] Explanations and Statistics of UCDs: See LINK below In case of problem, please report to: cds-question@unistra.fr IVOID of the protocol through which the data was retrieved Query execution date Full request URL (POST) Email or URL to contact publisher Software version Data centre that produced the VOTable Gaia DR3 Part 1. Main source (Gaia Collaboration, 2022) IVOID of underlying data collection First author or institution Bibcode of the dataset Year of the article publication Dataset landing page Dataset identifier that can be used for citation Date of first publication in the data centre Licence URI hand-made mapping Gaia DR3 source catalog (1811709771 sources) Right ascension (FK5, Equinox=J2000.0) at Epoch=J2000, proper motions taken into account Declination (FK5, Equinox=J2000.0) at Epoch=J2000, proper motions taken into account Unique source designation (unique across all Data Releases) (designation) Right ascension (ICRS) at Ep=2016.0 (ra) Declination (ICRS) at Ep=2016.0 (dec) Unique source identifier (unique within a particular Data Release) (source_id) Standard error of right ascension (ra_error) Standard error of declination (dec_error) ? Parallax (parallax) ? Standard error of parallax (parallax_error) ? Total proper motion (pm) ? Proper motion in right ascension direction, pmRA*cosDE (pmra) ? Standard error of proper motion in right ascension direction (pmra_error) ? Proper motion in declination direction (pmdec) ? Standard error of proper motion in declination direction (pmdec_error) [-1/1] Correlation between right ascension and declination (ra_dec_corr) [-1/1]? Correlation between right ascension and parallax (ra_parallax_corr) [-1/1]? Correlation between right ascension and proper motion in right ascension (ra_pmra_corr) [-1/1]? Correlation between right ascension and proper motion in declination (ra_pmdec_corr) [-1/1]? Correlation between declination and parallax (dec_parallax_corr) [-1/1]? Correlation between declination and proper motion in right ascension (dec_pmra_corr) [-1/1]? Correlation between declination and proper motion in declination (dec_pmdec_corr) [-1/1]? Correlation between parallax and proper motion in right ascension (parallax_pmra_corr) [-1/1]? Correlation between parallax and proper motion in declination (parallax_pmdec_corr) [-1/1]? Correlation between proper motion in right ascension and proper motion in declination (pmra_pmdec_corr) ? Radial velocity (radial_velocity) ? Radial velocity error (radial_velocity_error) ? Spectral line broadening parameter (vbroad) ? Integrated Grvs magnitude (grvs_mag) [0/1] Flag indicating the availability of additional information in the QSO candidates table (in_qso_candidates) [0/1] Flag indicating the availability of additional information in the galaxy candidates table (in_galaxy_candidates) [0/7] Flag indicating the availability of additional information in the various Non-Single Star tables (non_single_star) [0/1] Flag indicating the availability of mean BP/RP spectrum in continuous representation for this source (has_xp_continuous) [0/1] Flag indicating the availability of mean BP/RP spectrum in sampled form for this source (has_xp_sampled) [0/1] Flag indicating the availability of mean RVS spectrum for this source (has_rvs) [0/1] Flag indicating the availability of epoch photometry for this source (has_epoch_photometry) [0/1] Flag indicating the availability of epoch radial velocity for this source (has_epoch_rv) [0/1] Flag indicating the availability of GSP-Phot MCMC samples for this source (has_mcmc_gspphot) [0/1] Flag indicating the availability of MSC MCMC samples for this source (has_mcmc_msc) [0/1] Flag indicating that the source is present in the Gaia Andromeda Photometric Survey (GAPS) (in_andromeda_survey) ? Effective temperature from GSP-Phot Aeneas best library using BP/RP spectra (teff_gspphot) ? Surface gravity from GSP-Phot Aeneas best library using BP/RP spectra (logg_gspphot) ? Iron abundance from GSP-Phot Aeneas best library using BP/RP spectra (mh_gspphot) ? Distance from GSP-Phot Aeneas best library using BP/RP spectra (distance_gspphot) ? Monochromatic extinction A_0 at 547.7nm from GSP-Phot Aeneas best library using BP/RP spectra (azero_gspphot) ? HIP cross-id number, van Leeuwen, Cat. I/311 (hip_original_ext_source_id) ? PS1 cross-id name, Chambers et al., Cat. II/349 (ps1_original_ext_source_id) ? SDSS name, Albareti et al., 2017ApJS..233...25A (sdss13_ext_source_id) ? SkyMapperDR2 cross-id name, Onken et al., 2019PASA...36...33O (skym2_original_ext_source_id) Tycho-2 cross-id name, Hog et al., Cat. I/259 (tyc2_original_ext_source_id) URAT1 name, Zacharias et al., Cat. I/329 (urat1_original_ext_source_id) ALLWISE cross-id name, Cutri et al., Cat. II/328 (allwise_original_ext_source_id) ? APASS9 identification, Henden et al., Cat. II/336 (apass9_original_ext_source_id) GSC2.3 cross-id name, Lasker et al., Cat. I/305 (gsc23_original_ext_source_id) RAVE DR5 cross-id name, Kunder et al., Cat. III/279 (rave5_original_ext_source_id) 2MASS cross-id name, Cutri et al., Cat. II/246 (twomass_original_ext_source_id) RAVE DR6 cross-id name, Steinmetz et al., Cat. III/283 (rave6_original_ext_source_id) Barycentric right ascension (ICRS) at Ep=2000.0 (added by CDS) (ra2000) Barycentric declination (ICRS) at Ep=2000.0 (added by CDS) (dec2000)
307.7911702004070 +20.4311044212247 Gaia DR3 1816065554621487360 307.79115807079 +20.43108005561 1816065554621487360 0.0511 0.0477 0.4319 0.0691 6.049 -2.557 0.064 -5.482 0.067 0.1212 0.1337 -0.4109 -0.0072 0.0069 -0.0085 -0.2983 -0.2603 -0.0251 0.2688 0 0 0 1 0 0 0 0 1 1 0 4696.2 4.1928 -0.7942 2428.5532 0.0380 132513077911637877 URAT1-553569515 N2PD017546 20310987+2025519 307.79117020041 20.43110442122
307.7958370989668 +20.4325479549513 Gaia DR3 1816065558924798592 307.79582391363 +20.43253083107 1816065558924798592 0.3203 0.2898 -0.5553 0.4195 4.751 -2.780 0.395 -3.853 0.426 0.3740 0.1981 -0.3253 -0.0486 0.0632 -0.0608 -0.1303 -0.2989 -0.0876 0.4716 0 0 0 0 0 0 0 0 0 0 0 132513077957999584 N2PD017483 307.79583709897 20.43254795495
307.7973736604703 +20.4355882715396 Gaia DR3 1816065558920966528 307.79737366047 +20.43558827154 1816065558920966528 6.0643 2.1063 0.7514 0 0 0 0 0 0 0 0 0 0 0 132523077973693273 307.79737366047 20.43558827154
307.7885745651585 +20.4301331822264 Gaia DR3 1816065558924801792 307.78856137441 +20.43011713943 1816065558924801792 0.1196 0.1127 0.0910 0.1671 4.557 -2.781 0.153 -3.610 0.165 0.1448 0.1580 -0.3400 0.0468 0.0149 0.0299 -0.2083 -0.2178 0.0615 0.3266 0 0 0 0 0 0 0 0 1 0 0 5071.5 4.6975 -0.7109 2923.6248 0.0090 132513077885716709 URAT1-553569502 N2PD017266 307.78857456516 20.43013318223
307.7897816527446 +20.4315208963567 Gaia DR3 1816065554622254464 307.78977228741 +20.43150439876 1816065554622254464 0.3688 0.3801 -0.6243 0.5059 4.205 -1.975 0.444 -3.712 0.498 0.2553 0.0889 -0.3890 -0.0365 -0.0773 -0.0307 -0.2998 -0.2452 0.0025 0.3249 0 0 0 0 0 0 0 0 0 0 0 132513077897708356 N2PD096440 307.78978165274 20.43152089636
matching records value="truncated result (maxtup=5)"
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.header_extraction.2.xml000066400000000000000000000121141521254414300265150ustar00rootroot00000000000000 VizieR Astronomical Server cds:8082 Date: 2025-04-19T10:08:58 [V7.5] Explanations and Statistics of UCDs: See LINK below In case of problem, please report to: cds-question@unistra.fr IVOID of the protocol through which the data was retrieved Query execution date Full request URL Email or URL to contact publisher Software version Data centre that produced the VOTable Constraint -out.meta=dhuM 1400-MHz Sky Survey, Maps Covering Dec -5 to +82 (Condon+ 1985-86) IVOID of underlying data collection First author or institution Article or Data origin sources Editor name (article) Year of the article publication Dataset landing page Date of first publication in the data centre Licence URI List of the map centers Distance from center (000.0-08.5)[FK4/B1950] Record number assigned by the VizieR team. Should Not be used for identification. [datatype=int] Observation date Right Ascension (B1950) of map center Declination (B1950) of map center Name of FITS file in "maps" subdirectory Associated Data web page Downbload the FITS file Right ascension (ICRS) (computed by VizieR, not part of the original data) Declination (ICRS) (computed by VizieR, not part of the original data)
0.0011983-10-06000.0-08.5f001.fitfitsFITS000.6405-08.2216
matching records
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.header_extraction.xml000066400000000000000000003212711521254414300263640ustar00rootroot00000000000000 VizieR Astronomical Server cdsarc.cds.unistra.fr Date: 2025-04-07T12:06:32 [V7.4.6] Explanations and Statistics of UCDs: See LINK below In case of problem, please report to: cds-question@unistra.fr IVOID of the protocol through which the data was retrieved Query execution date Full request URL Email or URL to contact publisher Software version Data centre that produced the VOTable Constraint -out.meta=dhuM URAT1 Catalog (Zacharias+ 2015) IVOID of underlying data collection First author or institution Article or Data origin sources Editor name (article) Year of the article publication Dataset landing page Date of first publication in the data centre Licence URI URAT1 catalog Distance from center (052.2670800+59.9402700)[ICRS], at Epoch of catalog (Epoch) URAT1 recommended identifier (ZZZ-NNNNNN) (13) [datatype=char] Right ascension on ICRS, at "Epoch" (1) Declination on ICRS, at "Epoch" (1) Position error per coordinate, from scatter (2) Position error per coordinate, from model (2) (nst) Total number of sets the star is in (3) (nsu) Number of sets used for mean position (3) (epoc) Mean URAT observation epoch (1) ?(mmag) mean URAT model fit magnitude (4) ?(sigp) URAT photometry error (5) (nsm) Number of sets used for URAT magnitude (3) (ref) largest reference star flag (6) (nit) Total number of images (observations) (niu) Number of images used for mean position (ngt) Total number of 1st order grating observations (ngu) Number of 1st order grating positions used ?(pmr) Proper motion RA*cosDec (from 2MASS) (7) ?(pmd) Proper motion in Declination (7) ?(pme) Proper motion error per coordinate (8) [1/11] Match flag URAT with 2MASS (9) [1/11] Match flag URAT with APASS (9) [-] "-" if there is no match with GSC2.4 (14) ?(id2) unique 2MASS star identification number ?(jmag) 2MASS J-band magnitude ?(ejmag) Error on Jmag [0,58]? J-band quality-confusion flag (10) ?(hmag) 2MASS H-band magnitude ?(ehmag) Error on H-band magnitude (10) [0,58]? H-band quality-confusion flag (10) ?(kmag) 2MASS Ks-band magnitude ?(ekmag) Error on Ks-band magnitude (10) [0,58]? Ks-band quality-confusion flag (10) (ann) Number of APASS observation nights (12) (ano) Number of APASS observations (12) ?(abm) APASS B-band magnitude (11) ?(ebm) Error on Bmag ?(avm) APASS V-band magnitude ?(evm) Error on Vmag ?(agm) APASS g-band magnitude ?(egm) Error on gmag ?(arm) APASS r-band magnitude ?(erm) Error on rmag ?(aim) APASS i-band magnitude ?(eim) Error on imag
0.049402750-146023052.2340018+59.89373339613132013.41815.3400.0131397474001.5-12.35.91575880868113.7130.028513.3400.034513.1010.03451417.6320.20416.1640.00116.6900.00115.7500.001
0.031797750-146062052.2504219+59.90958812221662013.53717.7660.01660222200-2.66.06.011175880876815.7940.0842515.0010.0922515.0280.1472700
0.033292750-146084052.2609042+59.90712222124662013.46718.1540.08560191800-9.8-4.46.011175880875015.2470.0882514.9950.1244614.3650.1142600
0.036592750-146098052.2686898+59.90368643123662013.37618.1430.022601413001111-1-1-100
0.045475750-146164052.3107322+59.90040423417662013.53517.8460.061602222000.7-5.25.811149436904815.6100.061514.9460.078514.6000.086500
0.043982750-146213052.3322281+59.91079898362332013.78018.3460.22930330050.4-17.37.311149436899515.6380.069514.8860.083514.6750.100500
0.048035750-146232052.3403269+59.90928616613132013.49813.6790.0121318080005.2-3.95.51349436900712.5220.023512.1890.023512.0860.026531214.1730.03314.3470.01813.8750.03313.5780.069
0.046409750-146245052.3456364+59.91568781212772013.43417.1220.02970414100-1.01.05.611149436896614.2090.030513.2700.028513.0290.030500
0.020939750-146093052.2669561+59.91933082510432013.3528.6020.02040126001111-1-1-100
0.020870750-146099052.2690619+59.919423921014322013.8468.5270.0373064001111--1-1-100
0.014874750-146123052.2879544+59.92969366329662013.37217.4890.08760141300-1.5-4.16.411149436889514.560215.0470.0852514.6530.0872500
0.032417750-146132052.2943525+59.91087443424662013.72118.1790.07660151500-2.2-1.65.811149436899315.3250.0482514.5760.0672514.1950.063500
0.040484750-146134052.2959558+59.90246144727552013.61118.4510.04250101000-4.412.26.011149436904216.1700.0972515.4450.116615.653200
0.027692750-146136052.2969233+59.91696333630552013.37418.3500.08250151500-2.14.46.011149436895915.7720.0702515.0150.0872514.8030.1042500
0.021100750-146138052.2987561+59.9263650151135222013.5860022002.9-26.411.271149436891616.7820.1652715.8950.1752715.4330.1772700
0.035679750-146155052.3057528+59.91031362821662013.47017.9400.06960181800-3.44.15.811149436900115.5340.0552515.0400.092514.7000.0922500
0.025295750-146156052.3059601+59.92413365436552013.15818.4640.08650770065.57.86.511149436892616.4050.1192616.0050.2042715.5640.2012700
0.026930750-146163052.3105422+59.9244261176176112013.77700110037.430.513.111149436892516.3200.1092515.4860.1232615.0380.1182600
0.039970750-146183052.3189791+59.90991974433662013.69018.5120.0556099002.44.66.011149436900315.7200.0642514.8900.075514.7470.090500
0.019092750-146152052.3047506+59.937367211151442013.12618.4030.107407600-5.8-16.28.011149436883416.8100.1932715.9920.1992715.6400.2142700
0.020072750-146153052.3053716+59.93436036445442013.29618.2910.23730870030.6-20.36.871149436885916.2120.0992515.3390.1202615.1790.1482600
0.021880750-146159052.3091815+59.93444502941552013.63118.0170.2123012900-0.8-6.36.011149436885816.4700.1372615.4060.1162615.3390.1602700
0.025664750-146175052.3168392+59.94639501619662013.43917.8440.03360252500-6.64.55.711149436875715.5010.0552514.8110.0612514.5160.0752500
0.025290750-146176052.3172297+59.93735395431552013.66018.4860.095501414002.3-11.56.211149436883516.4750.1292615.7860.1622715.7490.2372800
0.029091750-146182052.3184422+59.92670116643552013.73418.7280.0825010900-10.414.26.611149436891515.8980.0812515.1750.1002514.6220.0872500
0.028688750-146189052.3212203+59.9496400198118222013.35218.51110320013.4-2.512.311149436873416.2890.1042515.8450.1812715.5220.1832700
0.027290750-146191052.3213516+59.94267362623662013.46317.9790.03860232300-1.24.95.811149436877816.1190.0882515.6750.1542615.1130.1272600
0.031386750-146206052.3296428+59.93855443045442013.69019.3490.26930760011.434.96.011149436882615.9280.0822515.4110.1282614.9860.1182600
0.032830750-146209052.3306025+59.93219751210882013.47116.9380.029804343004.66.65.611149436887514.6430.035513.9530.043513.7480.053500
0.034542750-146221052.3358481+59.93772141316662013.53617.9290.049602323006.1-2.85.611149436883315.4490.0482514.8520.081514.8870.1082500
0.035569750-146224052.3371944+59.94592179911112013.41416.3690.0211105858004.48.25.611149436875913.9310.027513.1730.031512.9020.030500
0.036228750-146228052.3391817+59.94313394430442013.75418.7790.116408800-0.525.16.011149436877516.5060.1242615.9400.1832715.4360.1692700
0.036259750-146229052.3394681+59.94031311616772013.53217.7390.057703029007.13.25.6111132435807015.4990.0742514.9780.0854514.7760.1162600
0.038744750-146237052.3423429+59.931354210043222013.71118.6480.069204300-7.9-27.17.31113620183816.3830.1082516.137215.707200
0.039405750-146243052.3454028+59.94398115462332013.55618.8580.100304400-29.7-18.76.811149436877017.1470.2222816.2100.2282815.8680.2532800
0.042539750-146247052.3487833+59.92868867272112013.70319.272102200-1.0-14.77.311149436890416.4450.1202615.4980.129615.5500.1872700
0.041644750-146250052.3500932+59.938012214910102013.41816.6200.0161005555000.64.15.611149436882914.1080.029513.2930.033513.0550.033500
0.042891750-146255052.3523933+59.94397035551442013.67118.9550.029405500-8.5-23.46.911175880899016.8180.1752715.7220.149716.916200
0.047900750-145933052.1905831+59.91154862519662013.48017.9600.078601717009.3-22.16.011175880877916.1220.094515.6790.140715.3150.192700
0.046752750-145959052.2012094+59.90716331923662013.48918.1350.025601717009.7-10.66.011175880875116.0030.1064515.1160.0934515.1720.1784700
0.041776750-145979052.2127270+59.908595815093322013.90118.9670.24430320020.3-19.410.311175880875816.6440.1452715.921216.740200
0.026421750-145988052.2177525+59.93092256613132013.46214.2240.0151318383003.1-1.25.811175880887211.3320.022510.2770.02859.9640.022500
0.041472750-145990052.2200053+59.90616253125662013.58217.8250.04960191700-4.4-5.96.111175880872715.9120.1022515.3140.1652715.0150.1532600
0.042576750-145996052.2219553+59.90419696613132013.42914.6260.0121317876000.4-5.35.91175880872112.1620.023511.3200.028511.0500.02352416.8450.08915.0270.00114.5100.085
0.022141750-146002052.2247150+59.93396062227662013.53818.8140.16540222100-11.321.95.811149436886516.9120.2112716.3010.2672815.7390.2392800
0.023557750-146018052.2316656+59.92477501212772013.44517.2860.026704242008.1-9.75.911175880883515.1380.0552514.5630.0622514.2520.0782500
0.026209750-146029052.2360836+59.91915815585332013.44618.5330.3762033001111-1-1-100
0.023308750-146033052.2379494+59.92209817613132013.47214.9230.0121357776001.8-7.65.811175880882313.2700.026512.9040.033512.7350.033500
0.030926750-146041052.2399071+59.91250332818662013.53917.3990.02860232300-5.2-8.86.071175880878315.6170.0862514.9710.1022514.8550.1332600
0.032283750-146043052.2403975+59.9108858134107222013.39718.9640.064202200-12.17.010.011149436899416.7450.1622715.915215.971200
0.030627750-146045052.2415433+59.91244506169222013.33517.4450.0242033001111-1-1-100
0.031026750-146049052.2452325+59.9112394190190112013.77718.776101100-67.7-117.314.711175880878016.4330.1352615.8730.1792715.5140.2362800
0.027683750-146051052.2461478+59.91465112722662013.46318.1590.04560232200-8.5-7.66.111114664206015.8360.0792515.4720.1132615.322200
0.020736750-146056052.2481158+59.92183949981332013.20919.0480.0692055001111-1-1-100
0.049510750-145875052.1683236+59.93824784140442013.65318.5490.04040550019.45.96.5711-75880892616.1270.107515.2560.107614.8710.128600
0.048590750-145887052.1702414+59.937453612571222012.99113.9210.0342033001111-1-1-100
0.048229750-145889052.1709828+59.94330221112662013.52617.4160.043603535009.46.15.911175880898315.7380.076515.6770.144715.3930.205800
0.048752750-145890052.1713750+59.93143501211882013.50317.1100.028804141005.9-4.95.9111127328005015.4230.053514.7920.072514.4040.097500
0.046061750-145913052.1803169+59.92503941114662013.45617.6750.044603232003.39.65.911175880883615.8140.079515.6610.135716.738200
0.044014750-145914052.1811616+59.94952036613132013.46114.8180.0111377773008.59.05.81175880902813.4860.028513.0860.037512.9520.039552516.6380.00015.4420.03615.8980.06215.0660.05014.8450.058
0.042768750-145917052.1823739+59.94567004030662013.64918.5730.019601111001111-1-1-100
0.043524750-145922052.1850706+59.925911411097222013.38718.2890.16520220013.6-56.49.611175880883916.1440.1092515.7710.157715.066200
0.042216750-145925052.1868361+59.95320064742442013.66419.1010.224406600-8.7-9.46.211149436811116.6100.1292616.058215.7840.1972800
0.040142750-145927052.1869408+59.94029612020662013.48917.9940.042602020005.95.06.0111128056707915.7000.1042515.1680.1144614.530200
0.041106750-145929052.1880718+59.95140642526662013.58018.3540.12660171700-7.84.66.111175880903716.2940.1252615.425216.062200
0.038411750-145935052.1906267+59.94327311614662013.47017.5460.0576038380012.24.55.911175880898015.6030.0682515.1470.108514.9370.1432600
0.039597750-145938052.1918033+59.95238221310992013.40716.8870.023904747000.19.35.911175880904315.3200.050515.0510.092514.6950.113600
0.043102750-145939052.1918572+59.91936196613132013.43413.9030.01113180800019.3-6.85.91175880881112.6430.024512.2590.030512.0790.027552215.4810.02314.4680.03814.9560.05214.1260.05413.8760.081
0.038533750-145940052.1921275+59.94896391719662013.44518.0560.02460242400-0.43.16.011143241923415.6010.0712514.6970.069514.5280.119600
0.036671750-145951052.1958144+59.94868582523442013.52916.8940.1534010100010.2-0.86.0311123921700915.8160.0842515.2730.1062614.235200
0.036190750-145953052.1972169+59.949513311910102013.38916.0940.0431005858000.80.45.931175880902914.2660.0492513.8910.0492513.702200
0.037715750-145955052.1991867+59.92398144238552013.48018.5110.052508800-11.30.16.511175880883016.6850.1562716.0970.1922815.2840.2052700
0.039428750-145956052.2004306+59.96126331913662013.37817.5890.03060353500-4.54.66.011175880909815.7080.0692515.1040.095515.1690.1712700
0.035618750-145957052.2005153+59.92775929157442013.62518.8360.1524055001111-1-1-100
0.036617750-145960052.2016304+59.95659642733552013.73818.6470.02350101000-1.6-4.86.111175880906416.4540.1312616.182215.441200
0.032441750-145963052.2027467+59.944026110911112013.40816.4410.0211105656004.8-3.15.911175880898914.7830.0312514.1920.048513.8990.060500
0.032197750-145964052.2031066+59.93715333889222013.79517.7980.4002043001111-1-1-100
0.034542750-145965052.2041036+59.95435834636662013.54718.4400.08660111100-0.9-8.56.511175880905616.0880.0992515.6450.1622714.9450.1352600
0.031211750-145968052.2057602+59.945826710712122013.43315.8130.0161256564006.8-0.15.91175880899713.2980.024512.4990.030512.2300.03151216.8000.18515.7270.001
0.030966750-145969052.2062669+59.93471535137662013.50118.4110.07160121000-16.210.06.611175880889616.4600.1392616.101215.822200
0.025791750-145987052.2168179+59.93468473442662013.59819.5070.0872087001.49.36.111149436800116.9400.1842716.2200.2212815.9370.2512800
0.023239750-145993052.2206928+59.93989422722662013.55317.7560.082602321001111-1-1-100
0.020864750-146004052.2255104+59.938965698132222013.42218.2360.1092073001111-1-1-100
0.015445750-146030052.2362992+59.94118508282332013.05517.5600.3482033001111-1-1-100
0.016676750-146052052.2466444+59.92710723737662013.49218.2990.070601512002.5-4.46.411175880884515.9880.0982515.2900.1152615.2650.2052700
0.014724750-146055052.2480839+59.9290353251410102013.32916.8400.1781003434001111-1-1-100
0.017463750-146063052.2508794+59.92480813023662013.41817.8950.0656022200015.02.96.211175880883415.8580.0782515.3500.1132615.405200
0.011856750-146070052.2539083+59.930420012911112013.45115.5830.06911034340010.9-12.05.911175880886913.217212.899212.9790.0272500
0.018206750-146085052.2617168+59.92226315232332013.51118.2560.0903088004.9-23.26.611175880882515.9330.0942515.1370.1042514.9190.1422600
0.017484750-146087052.2641631+59.95769284428552013.31018.1900.1675012110025.9-20.76.511141378138116.5340.1882715.235215.2000.1882700
0.020866750-146089052.2647878+59.919435314218222013.7128.5660.4472033001111-1-1-100
0.020918750-146090052.2656714+59.91936392514332013.9648.5290.0103044001111-1-1-100
0.000082750-146094052.2672150+59.940316189772013.5985.5310.4937939373737-7.00.35.511112507147412.7120.23082.6030.19272.4130.236800
0.008436750-146100052.2690918+59.9318944169662013.55114.4930.108601717001111--1-1-100
0.016946750-146102052.2694767+59.92336676613132013.47512.0220.016136747400-1.2-5.55.511131867191311.0800.102510.7210.018510.6380.023552213.0250.00612.2290.02912.6440.04612.0370.04211.8670.035
0.011438750-146119052.2840414+59.93261332813662013.23816.1770.08665212100-3.14.95.811149436887313.029212.158211.9410.0262500
0.024388750-146121052.2867748+59.96257563555552013.73219.1020.248408700-17.4-14.26.611175880910716.5860.1422715.7210.1352715.898200
0.029304750-146122052.2874027+59.96775081414772013.39217.5750.02170353500-1.5-0.85.611149436863214.9700.0382514.0580.045513.7780.043500
0.032470750-146126052.2895014+59.97073817713132013.45115.5720.015135717100-3.95.75.611149436860612.9320.023512.0940.024511.7890.026500
0.035009750-146131052.2930547+59.97277443025552013.66318.1540.04850131300-2.411.25.811149436859415.7450.0622515.0730.087514.7730.0972500
0.025769750-146135052.2968034+59.96130641314772013.54117.4570.03870353500-4.715.75.611149436866515.7050.0692515.1280.0922514.9360.1042500
0.018310750-146144052.3010061+59.9470925171171112013.01800110016.3108.213.511149436875416.6550.1722716.3810.3062815.683200
0.039074750-146146052.3013697+59.975370899992013.44016.5480.01690555500-5.1-0.35.611149436857414.5970.034513.8930.038513.6350.044500
0.024343750-146148052.3014987+59.95745972834662013.50418.6090.12760121100-12.98.95.9111124102617716.2980.1072515.6770.1572715.1290.1292600
0.040880750-146154052.3057421+59.97627784032552013.60818.6060.092501211005.60.56.011149436857216.4900.1232615.9500.1862715.720200
0.037715750-146158052.3090078+59.97160287364442013.57617.5740.1534044002.30.07.211149436860016.4490.1272615.5800.1422614.590200
0.038783750-146161052.3094356+59.9727425151010102013.40417.1300.018100474700-7.3-0.35.611149436859314.8620.0482514.1040.0562513.813200
0.024688750-146162052.3105325+59.95192974244552013.71518.9870.1505088001111-1-1-100
0.030470750-146169052.3139508+59.95970119855332013.71817.8630.0463055001111-1-1-100
0.030474750-146170052.3152114+59.95891752119662013.51417.7100.04460212000-12.724.95.711149436868415.651215.3290.1262614.747200
0.026707750-146171052.3155167+59.95144222415662013.48717.8170.024602929005.412.35.711149436872715.7350.0592515.1100.0842514.9050.1052500
0.040398750-146172052.3165128+59.97219942219662013.56717.6770.060602423000.3-4.55.711149436859515.8780.0882515.2390.1052514.8480.1162600
0.039734750-146178052.3177702+59.97084312218662013.52917.7200.036602323004.10.85.711149436860415.6140.0602515.1710.0962514.6660.0932500
0.035145750-146181052.3183368+59.96427896638552013.65818.9340.14050660013.3-18.76.511149436865017.0160.1892716.0040.2022715.5610.1922700
0.030971750-146192052.3214386+59.95503925940442013.66518.8590.140408800-38.7-8.56.411149436870416.5270.1282615.808215.318200
0.031681750-146196052.3242203+59.95386426788322013.52218.45510430010.131.07.71149436871216.8340.1632716.109216.36621217.5710.49717.4000.001
0.034861750-146200052.3259394+59.95888581310772013.43717.0250.02770444400-0.75.05.611149436868315.1080.0452514.6900.061514.3880.073500
0.038755750-146214052.3325711+59.96092141315662013.63117.6690.03760282800-4.9-4.05.511149436866615.7060.0652515.4140.111615.0170.1192600
0.037790750-145973052.2101897+59.9651028128128112013.94017.431101100-141.7-195.710.111149436864217.639216.408215.3540.1622700
0.036356750-145977052.2118531+59.963871732952222013.72418.2462033001111-1-1-100
0.037767750-145978052.2124958+59.9663347127127112014.02518.290101100135.3100.210.011141378138217.639216.408215.3540.1622700
0.039744750-145999052.2231803+59.97338364871222013.71918.7881033001111-1-1-100
0.021407750-146003052.2249117+59.94376002223662013.32818.4980.114602524005.7-11.16.111175880898716.2330.1282615.1530.0992515.0160.1452600
0.035145750-146007052.2259831+59.968761112911112013.46316.6470.019110565600-0.10.95.911175880914214.5590.038513.8740.048513.5210.047500
0.020072750-146017052.2308514+59.94885251412772013.31116.9150.057793736003.2-6.06.011145188442715.0570.0492514.6720.0682514.6180.1052500
0.040894750-146028052.2356869+59.97802364132552013.59118.7140.023401010009.5-59.46.411175880921016.1640.1162615.5710.1484615.0510.1572700
0.019714750-146040052.2396922+59.95443063365222013.12318.8810.0342044001111-1-1-100
0.018988750-146046052.2440811+59.95536568613132013.48915.1660.0211357574002.81.55.811175880906013.7540.0242513.3090.0382513.1340.0372500
0.033557750-146047052.2444797+59.97186223125662013.68918.1990.03460151400-3.9-0.16.111175880916616.2300.1082615.7390.1602715.2840.1952700
0.021717750-146048052.2449492+59.95894611620662013.45418.0520.045602220009.812.96.011175880908016.2050.1102615.2610.1092615.2620.1922700
0.028204750-146053052.2467506+59.96657281310882013.49316.8650.02280454500-7.6-8.75.911141235956514.6790.0352514.0720.046513.7390.0582500
0.020219750-146057052.2481875+59.95813923022662013.37417.1490.053602020003.0-5.56.211175880907615.6600.0712515.0690.0892514.9240.1362600
0.021223750-146058052.2487220+59.95939831213992013.44916.8980.022903939006.2-0.45.911175880908515.0570.0612514.4420.0732514.1730.0782500
0.036035750-146068052.2522172+59.97552862628662013.45618.2780.09360121200-13.5-17.96.211175880919016.3100.1212615.5630.1492615.146200
0.043256750-146072052.2552314+59.98311723340442013.50019.1850.090407700-4.343.06.11113611798616.7260.1492615.8190.164717.251200
0.048555750-146073052.2552783+59.98846421717662013.40818.0410.086602020003.0-8.16.011175880924915.7970.075515.1340.095515.0150.1472600
0.033418750-146074052.2553883+59.97317176613132013.44414.1990.013131878700-1.70.25.91175880917711.5100.023510.5870.028510.3000.02252416.3720.10514.8750.00113.9220.126
0.043717750-146081052.2604243+59.98386036434662013.57118.6740.1686010100014.97.26.811185023945416.5020.1502615.8850.185715.5700.2562800
0.032100750-146083052.2608539+59.97221817575112013.70318.74910220043.218.97.511149436859616.7380.1722715.350215.920200
0.049321750-146091052.2657139+59.98958613248332013.67818.6510.04630770016.49.46.111149436850716.3310.1102615.7790.169715.7880.2422800
0.046491750-146105052.2716081+59.98670534343112013.95714.54610110046.1-146.86.111149436852216.6420.1442615.5820.133615.5720.1952700
0.049329750-146106052.2721311+59.98953441821662013.53718.1940.049601818009.1-3.56.011175880925415.8630.085514.9950.093515.2630.187700
0.032008750-146112052.2786911+59.9717461111010102013.39416.8320.022100525200-0.1-15.75.911175880916514.6580.0402513.9660.046513.7580.053500
0.039682750-146114052.2798206+59.97943569910102013.40616.5290.0141005353001.7-4.85.911175880921214.6400.041514.2210.0654514.0330.073500
0.043201750-146118052.2824372+59.98278141516662013.44917.4560.057603232002.3-4.95.911175880922415.4400.056514.5480.059514.4000.088500
0.044158750-146139052.2990233+59.98143083432552013.38118.5730.032509900-15.1-8.76.311175880921616.2170.1072615.254215.527200
0.048261750-146145052.3010575+59.98543444035442013.53018.4130.150407700-0.21.76.411175880923816.0850.095515.2230.103515.0250.156700
0.048163750-146151052.3045872+59.98462284736442013.59318.4520.086408800-6.1-2.96.511175880923216.5320.1322616.1400.208815.399200
0.049987750-145880052.1690739+59.94972695795222013.72919.0040.135202200-2.617.17.51149436809516.8490.1492616.663216.31921318.1560.001
0.049581750-145881052.1691200+59.94741615728662013.44518.2950.183609900-34.35.36.311149436807716.4910.1132615.9310.1562715.4540.159700
0.049017750-145885052.1698575+59.94588061613772013.35317.3700.031703434008.23.16.011175880899815.3090.0512514.6050.061514.3200.080500
0.047321750-145896052.1741953+59.94894031215662013.48817.4520.021603232007.03.05.911124987388815.4650.056515.0340.081514.7090.105600
0.048312750-145911052.1788664+59.95983338431332013.75218.7290.02530550013.36.96.711149436867216.7040.1562716.664215.5850.2082700
0.044746750-145926052.1869258+59.96004811918662013.60817.9390.044602525006.3-22.05.911175880909316.0410.0992515.3070.1032615.2910.1952700
0.046378750-145941052.1924456+59.96773831622662013.33018.0740.02560171700-8.0-13.46.011175880913515.8630.0822515.6100.1442615.0840.1632700
0.043355750-145946052.1941594+59.96364561010992013.40416.8250.027904747007.8-12.25.911175880911614.9360.0512514.3230.0622514.098200
0.042651750-145947052.1943544+59.96247223640442013.64917.4350.06540770028.3-0.76.411175880910616.2590.1092615.7170.1562714.895200
0.049788750-145949052.1947844+59.97445721313662013.39117.5940.030603030005.0-1.05.911175880918315.5410.061514.8910.076514.7220.1102600
0.042324750-145972052.2100333+59.97150362425552013.62718.3660.022501414003.613.76.011175880916416.1210.1022515.5330.134615.2310.1712700
0.049180750-145974052.2106543+59.98052921715662013.44117.7420.038602626000.1-11.26.011175880921415.5870.067514.9620.080514.6350.107600
0.044311750-145980052.2130069+59.97535081215662013.52817.6560.032602929000.4-0.55.911175880918715.0000.050514.0540.053513.7160.052500
0.045071750-145986052.2162192+59.97745972724662013.64518.3000.0716014140016.3-5.86.011175880920116.3110.1202615.7140.1574715.2810.1754700
0.042351750-146005052.2255808+59.977175399992013.43416.8130.02190505000-0.9-5.45.911175880919814.3690.0344513.5290.038513.3270.0444500
0.047728750-146010052.2278934+59.98378063632552013.53718.4900.088509900-12.9-30.66.311143874706116.3700.1162616.1090.219814.798200
0.044271750-146011052.2288256+59.98018538613132013.45015.1870.0121377979000.5-3.35.91175880921313.5460.028513.0070.031512.8600.031551217.3250.00816.0130.16216.3790.00815.4650.00815.0060.148
0.048283750-146022052.2335583+59.98554331412772013.40317.2950.019703939006.4-5.75.911175880923915.1030.051514.4200.057514.2170.083500
0.043104750-146240052.3436564+59.95995533433552013.69518.5470.02150101000-11.13.35.911149436867116.1500.0882515.1160.089514.7370.087500
0.048970750-146249052.3500103+59.96622816613132013.50812.5200.011131888800-1.92.85.51164559043011.2160.021511.0050.018510.8680.023572413.8220.02612.9920.03513.4190.05312.7050.04412.4080.043
0.049442750-146260052.3547244+59.96304008659422013.72418.5720.385404200-8.3-23.27.311149436865716.7490.1712716.2580.2612815.404200
0.047279750-146261052.3548542+59.95768589696112013.70318.7111011006.48.18.5111131865095716.6690.1412615.8070.161715.970200
0.046354750-146207052.3297766+59.97437892420662013.50517.7210.031602222000.58.25.711149436858316.1100.0842515.3270.111615.4650.1792700
0.049237750-146216052.3331683+59.97673476050552013.59618.7470.046507700-29.216.26.611149436857016.6280.1412615.6710.151615.278200
0.043484750-146217052.3335950+59.96823006613132013.50311.9330.0121379090221.712.95.51149436862910.6920.0214510.2940.0184510.1940.023572413.4540.01512.4380.02712.9260.04412.1110.04911.8340.048
0.047142750-146242052.3441606+59.96734119910102013.40516.3040.021100636300-4.67.35.611149436863414.4570.037514.0130.044513.8020.052500
matching records
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.instance_multiple.xml000066400000000000000000000304541521254414300264130ustar00rootroot00000000000000 Automatically annotated by XTAPDB the flux of the energy band number 1 of the ep camera in sc the flux of the energy band number 2 of the ep camera in sc the flux of the energy band number 3 of the ep camera in sc
0.0 0.1 0.2
1.0 2.1 3.2
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.mango_annoter.xml000066400000000000000000000732701521254414300255260ustar00rootroot00000000000000 VizieR Astronomical Server vizier.cds.unistra.fr Date: 2024-03-21T15:16:08 [V7.33.3] Explanations and Statistics of UCDs: See LINK below In case of problem, please report to: cds-question@unistra.fr IVOID of the protocol through which the data was retrieved Query execution date Full request URL (POST) Email or URL to contact publisher Software version Data centre that produced the VOTable Gaia DR3 Part 1. Main source (Gaia Collaboration, 2022) IVOID of underlying data collection First author or institution Bibcode of the dataset Year of the article publication Dataset landing page Dataset identifier that can be used for citation Date of first publication in the data centre Licence URI Gaia DR3 source catalog (1811709771 sources) Right ascension (FK5, Equinox=J2000.0) at Epoch=J2000, proper motions taken into account Declination (FK5, Equinox=J2000.0) at Epoch=J2000, proper motions taken into account Unique source designation (unique across all Data Releases) (designation) Right ascension (ICRS) at Ep=2016.0 (ra) Declination (ICRS) at Ep=2016.0 (dec) Unique source identifier (unique within a particular Data Release) (source_id) Standard error of right ascension (ra_error) Standard error of declination (dec_error) ? Parallax (parallax) ? Standard error of parallax (parallax_error) ? Total proper motion (pm) ? Proper motion in right ascension direction, pmRA*cosDE (pmra) ? Standard error of proper motion in right ascension direction (pmra_error) ? Proper motion in declination direction (pmdec) ? Standard error of proper motion in declination direction (pmdec_error) [-1/1] Correlation between right ascension and declination (ra_dec_corr) [-1/1]? Correlation between right ascension and parallax (ra_parallax_corr) [-1/1]? Correlation between right ascension and proper motion in right ascension (ra_pmra_corr) [-1/1]? Correlation between right ascension and proper motion in declination (ra_pmdec_corr) [-1/1]? Correlation between declination and parallax (dec_parallax_corr) [-1/1]? Correlation between declination and proper motion in right ascension (dec_pmra_corr) [-1/1]? Correlation between declination and proper motion in declination (dec_pmdec_corr) [-1/1]? Correlation between parallax and proper motion in right ascension (parallax_pmra_corr) [-1/1]? Correlation between parallax and proper motion in declination (parallax_pmdec_corr) [-1/1]? Correlation between proper motion in right ascension and proper motion in declination (pmra_pmdec_corr) ? Radial velocity (radial_velocity) ? Radial velocity error (radial_velocity_error) ? Spectral line broadening parameter (vbroad) ? Integrated Grvs magnitude (grvs_mag) [0/1] Flag indicating the availability of additional information in the QSO candidates table (in_qso_candidates) [0/1] Flag indicating the availability of additional information in the galaxy candidates table (in_galaxy_candidates) [0/7] Flag indicating the availability of additional information in the various Non-Single Star tables (non_single_star) [0/1] Flag indicating the availability of mean BP/RP spectrum in continuous representation for this source (has_xp_continuous) [0/1] Flag indicating the availability of mean BP/RP spectrum in sampled form for this source (has_xp_sampled) [0/1] Flag indicating the availability of mean RVS spectrum for this source (has_rvs) [0/1] Flag indicating the availability of epoch photometry for this source (has_epoch_photometry) [0/1] Flag indicating the availability of epoch radial velocity for this source (has_epoch_rv) [0/1] Flag indicating the availability of GSP-Phot MCMC samples for this source (has_mcmc_gspphot) [0/1] Flag indicating the availability of MSC MCMC samples for this source (has_mcmc_msc) [0/1] Flag indicating that the source is present in the Gaia Andromeda Photometric Survey (GAPS) (in_andromeda_survey) ? Effective temperature from GSP-Phot Aeneas best library using BP/RP spectra (teff_gspphot) ? Surface gravity from GSP-Phot Aeneas best library using BP/RP spectra (logg_gspphot) ? Iron abundance from GSP-Phot Aeneas best library using BP/RP spectra (mh_gspphot) ? Distance from GSP-Phot Aeneas best library using BP/RP spectra (distance_gspphot) ? Monochromatic extinction A_0 at 547.7nm from GSP-Phot Aeneas best library using BP/RP spectra (azero_gspphot) ? HIP cross-id number, van Leeuwen, Cat. I/311 (hip_original_ext_source_id) ? PS1 cross-id name, Chambers et al., Cat. II/349 (ps1_original_ext_source_id) ? SDSS name, Albareti et al., 2017ApJS..233...25A (sdss13_ext_source_id) ? SkyMapperDR2 cross-id name, Onken et al., 2019PASA...36...33O (skym2_original_ext_source_id) Tycho-2 cross-id name, Hog et al., Cat. I/259 (tyc2_original_ext_source_id) URAT1 name, Zacharias et al., Cat. I/329 (urat1_original_ext_source_id) ALLWISE cross-id name, Cutri et al., Cat. II/328 (allwise_original_ext_source_id) ? APASS9 identification, Henden et al., Cat. II/336 (apass9_original_ext_source_id) GSC2.3 cross-id name, Lasker et al., Cat. I/305 (gsc23_original_ext_source_id) RAVE DR5 cross-id name, Kunder et al., Cat. III/279 (rave5_original_ext_source_id) 2MASS cross-id name, Cutri et al., Cat. II/246 (twomass_original_ext_source_id) RAVE DR6 cross-id name, Steinmetz et al., Cat. III/283 (rave6_original_ext_source_id) Barycentric right ascension (ICRS) at Ep=2000.0 (added by CDS) (ra2000) Barycentric declination (ICRS) at Ep=2000.0 (added by CDS) (dec2000)
307.7911702004070 +20.4311044212247 Gaia DR3 1816065554621487360 307.79115807079 +20.43108005561 1816065554621487360 0.0511 0.0477 0.4319 0.0691 6.049 -2.557 0.064 -5.482 0.067 0.1212 0.1337 -0.4109 -0.0072 0.0069 -0.0085 -0.2983 -0.2603 -0.0251 0.2688 0 0 0 1 0 0 0 0 1 1 0 4696.2 4.1928 -0.7942 2428.5532 0.0380 132513077911637877 URAT1-553569515 N2PD017546 20310987+2025519 307.79117020041 20.43110442122
307.7958370989668 +20.4325479549513 Gaia DR3 1816065558924798592 307.79582391363 +20.43253083107 1816065558924798592 0.3203 0.2898 -0.5553 0.4195 4.751 -2.780 0.395 -3.853 0.426 0.3740 0.1981 -0.3253 -0.0486 0.0632 -0.0608 -0.1303 -0.2989 -0.0876 0.4716 0 0 0 0 0 0 0 0 0 0 0 132513077957999584 N2PD017483 307.79583709897 20.43254795495
307.7973736604703 +20.4355882715396 Gaia DR3 1816065558920966528 307.79737366047 +20.43558827154 1816065558920966528 6.0643 2.1063 0.7514 0 0 0 0 0 0 0 0 0 0 0 132523077973693273 307.79737366047 20.43558827154
307.7885745651585 +20.4301331822264 Gaia DR3 1816065558924801792 307.78856137441 +20.43011713943 1816065558924801792 0.1196 0.1127 0.0910 0.1671 4.557 -2.781 0.153 -3.610 0.165 0.1448 0.1580 -0.3400 0.0468 0.0149 0.0299 -0.2083 -0.2178 0.0615 0.3266 0 0 0 0 0 0 0 0 1 0 0 5071.5 4.6975 -0.7109 2923.6248 0.0090 132513077885716709 URAT1-553569502 N2PD017266 307.78857456516 20.43013318223
307.7897816527446 +20.4315208963567 Gaia DR3 1816065554622254464 307.78977228741 +20.43150439876 1816065554622254464 0.3688 0.3801 -0.6243 0.5059 4.205 -1.975 0.444 -3.712 0.498 0.2553 0.0889 -0.3890 -0.0365 -0.0773 -0.0307 -0.2998 -0.2452 0.0025 0.3249 0 0 0 0 0 0 0 0 0 0 0 132513077897708356 N2PD096440 307.78978165274 20.43152089636
matching records value="truncated result (maxtup=5)"
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.mivot_viewer.first_instance.xml000066400000000000000000000021421521254414300304160ustar00rootroot00000000000000 Prototype for covariance errors hand-made mapping
SourceName
OtherSourceName
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.mivot_viewer.no_mivot.xml000066400000000000000000000272241521254414300272450ustar00rootroot00000000000000 URAT1 Catalog (Zacharias+ 2015) IVOID of underlying data collection URAT1 catalog Distance from center (052.2670800+59.9402700)[ICRS], at Epoch of catalog (Epoch) URAT1 recommended identifier (ZZZ-NNNNNN) (13) [datatype=char] Right ascension on ICRS, at "Epoch" (1) Declination on ICRS, at "Epoch" (1) Position error per coordinate, from scatter (2) Position error per coordinate, from model (2) (nst) Total number of sets the star is in (3) (nsu) Number of sets used for mean position (3) (epoc) Mean URAT observation epoch (1) ?(mmag) mean URAT model fit magnitude (4) ?(sigp) URAT photometry error (5) (nsm) Number of sets used for URAT magnitude (3) (ref) largest reference star flag (6) (nit) Total number of images (observations) (niu) Number of images used for mean position (ngt) Total number of 1st order grating observations (ngu) Number of 1st order grating positions used ?(pmr) Proper motion RA*cosDec (from 2MASS) (7) ?(pmd) Proper motion in Declination (7) ?(pme) Proper motion error per coordinate (8) [1/11] Match flag URAT with 2MASS (9) [1/11] Match flag URAT with APASS (9) [-] "-" if there is no match with GSC2.4 (14) ?(id2) unique 2MASS star identification number ?(jmag) 2MASS J-band magnitude ?(ejmag) Error on Jmag [0,58]? J-band quality-confusion flag (10) ?(hmag) 2MASS H-band magnitude ?(ehmag) Error on H-band magnitude (10) [0,58]? H-band quality-confusion flag (10) ?(kmag) 2MASS Ks-band magnitude ?(ekmag) Error on Ks-band magnitude (10) [0,58]? Ks-band quality-confusion flag (10) (ann) Number of APASS observation nights (12) (ano) Number of APASS observations (12) ?(abm) APASS B-band magnitude (11) ?(ebm) Error on Bmag ?(avm) APASS V-band magnitude ?(evm) Error on Vmag ?(agm) APASS g-band magnitude ?(egm) Error on gmag ?(arm) APASS r-band magnitude ?(erm) Error on rmag ?(aim) APASS i-band magnitude ?(eim) Error on imag
0.049402 750-146023 52.2340018 59.8937333 9 6 13 13 2013.418 15.340 0.013 13 9 74 74 0 0 1.5 -12.3 5.9 1 5 758808681 13.713 0.028 5 13.340 0.034 5 13.101 0.034 5 1 4 17.632 0.204 16.164 0.001 16.690 0.001 15.750 0.001
0.049402 750-146023 58.2340018 69.8937333 9 6 13 13 2013.418 15.340 0.013 13 9 74 74 0 0 1.5 -12.3 5.9 1 5 758808681 13.713 0.028 5 13.340 0.034 5 13.101 0.034 5 1 4 17.632 0.204 16.164 0.001 16.690 0.001 15.750 0.001
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.mivot_viewer.xml000066400000000000000000000431651521254414300254160ustar00rootroot00000000000000 Epoch photometry. This table contains light curve data points. Each entry is a photometric flux-time pair for a given object, band and time. It follows the (evolving) VO convention for time series as much as possible. At the time of writing, a VO recommendation has not yet been released. Source ID Photometric Band
5813181197970338560 G
5813181197970338560 BP
5813181197970338560 RP
Source Id. A unique single numerical identifier of the source obtained from GaiaSource. Transit unique identifier. For a given object, a transit comprises the different Gaia observations (SM, AF, BP, RP and RVS) obtained for each focal plane crossing. Photometric band. Values: G (per-transit combined SM-AF flux), BP (blue photometer integrated flux) and RP (red photometer integrated flux). Different times are defined for each band. For G, it is the field-of-view transit averaged observation time. For BP and RP, it is the observation time of the BP CCD transit. The units are Barycentric JD (in TCB) in days -2,455,197.5, computed as follows. First the observation time is converted from On-board Mission Time (OBMT) into Julian date in TCB (Temps Coordonnee Barycentrique). Next a correction is applied for the light-travel time to the Solar system barycentre, resulting in Barycentric Julian Date (BJD). Finally, an offset of 2,455,197.5 days is applied (corresponding to a reference time $T_0$ at 2010-01-01T00:00:00) to have a conveniently small numerical value. Although the centroiding time accuracy of the individual CCD observations is (much) below 1~ms (e.g. in BP and RP), the G band observation time is averaged over typically 9 CCD observations taken in a time range of about 44sec. Vega magnitude, computed from the flux applying the zero-point defined in ExtPhotZeroPoint. Band flux value for the transit. For G band, it is a combination of individual SM-AF CCD fluxes. For BP and RP bands, it is an integrated CCD flux. Flux error. If the flux has been rejected or is unavailable, this error will be set to null. Band flux divided by its error. If the flux has been rejected or is unavailable, this field will be set to null. Rejected by DPAC photometry processing. Rejected by DPAC variability processing (or variability analysis). All Gaia data processed by the Data Processing and Analysis Consortium comes tagged with a solution identifier. This is a numeric field attached to each table row that can be used to unequivocally identify the version of all the subsystems that where used in the generation of the data as well as the input data used. It is mainly for internal DPAC use but is included in the published data releases to enable end users to examine the provenance of processed data products. To decode a given solution ID visit https://gaia.esac.esa.int/decoder/solnDecoder.jsp
5813181197970338560 17091923342681275 G 1705.9437360200984 15.216574774452164 15442.456273273616 44.151258712309364 349.76254 F F 4097 369295551293819386
5813181197970338560 17096015648964756 G 1706.0177100217386 14.767336693604877 23356.70699319823 33.53035403015752 696.584 F F 4194817 369295551293819386
5813181197970338560 19103616164443503 G 1742.3215763366886 15.278342999137502 14588.447956240941 15.054069973748831 969.07 F F 1 369295551293819386
astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.photcal_SDSS.xml000066400000000000000000000061131521254414300251550ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/tests/data/test.photcal_error.xml000066400000000000000000000004501521254414300255300ustar00rootroot00000000000000 PhotCalID not found: zaada astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_annotation_seeker.py000066400000000000000000000125221521254414300254000ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Test for mivot.seekers.annotation_seeker.py """ import pytest try: from defusedxml import ElementTree as etree except ImportError: from xml.etree import ElementTree as etree from astropy.utils.data import get_pkg_data_filename from pyvo.mivot.seekers.annotation_seeker import AnnotationSeeker from pyvo.mivot.utils.dict_utils import DictUtils from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer import MivotViewer from pyvo.mivot.tests import XMLOutputChecker @pytest.fixture def a_seeker(): m_viewer = MivotViewer( get_pkg_data_filename("data/test.mivot_viewer.xml"), tableref="Results" ) return AnnotationSeeker(m_viewer._mapping_block) @pytest.fixture def a_multiple_seeker(): m_viewer = MivotViewer( get_pkg_data_filename("data/test.instance_multiple.xml"), tableref="Results") return AnnotationSeeker(m_viewer._mapping_block) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_multiple_templates(): """ Try to create an AnnotationSeeker with a mapping_block containing multiple TEMPLATES. """ mapping_block = XMLOutputChecker.xmltree_from_file( get_pkg_data_filename("data/reference/multiple_templates.xml")) with pytest.raises(Exception, match="TEMPLATES without tableref must be unique"): AnnotationSeeker(mapping_block.getroot()) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_all_reverts(a_seeker): # Checks the GLOBALS block given by the AnnotationSeeker # by comparing it to the content of the file test.0.1.xml XMLOutputChecker.assertXmltreeEqualsFile(a_seeker.globals_block, get_pkg_data_filename("data/reference/annotation_seeker.0.1.xml")) # Checks the TEMPLATES block given by the AnnotationSeeker # by comparing it to the content of the file test.0.2.xml XMLOutputChecker.assertXmltreeEqualsFile(a_seeker.get_templates_block("Results"), get_pkg_data_filename("data/reference/annotation_seeker.0.2.xml")) # Checks the list of all the tableref found by the AnnotationSeeker assert list(a_seeker.get_templates_tableref()) == ['_PKTable', 'Results'] # a_seeker should have only 2 COLLECTIONS in GLOBALS: _CoordinateSystems and _Datasets assert len(a_seeker.get_globals_collections()) == 2 # a_seeker should have only 1 INSTANCES in GLOBALS: _tg1 assert len(a_seeker.get_globals_instances()) == 1 assert a_seeker.get_globals_instance_dmtypes() == ['ds:experiment.Target'] assert (a_seeker.get_globals_instance_dmids() == ['_timesys', '_spacesys1', '_photsys_G', '_photsys_RP', '_photsys_BP', '_ds1', '_tg1']) assert a_seeker.get_globals_collection_dmids() == ['_CoordinateSystems', '_Datasets'] selection = a_seeker.get_instance_by_dmtype("coords") assert len(selection["GLOBALS"]) == 5 for ele in selection["GLOBALS"]: assert ele.get("dmtype").startswith("coords") assert len(selection["TEMPLATES"]["_PKTable"]) == 0 assert len(selection["TEMPLATES"]["Results"]) == 3 for _, table_sel in selection["TEMPLATES"].items(): for ele in table_sel: assert ele.get("dmtype").startswith("coords") with pytest.raises(Exception, match="INSTANCE with PRIMARY_KEY = wrong_key_value " "in COLLECTION dmid wrong_key_value not found"): a_seeker.get_collection_item_by_primarykey("_Datasets", "wrong_key_value") pksel = a_seeker.get_collection_item_by_primarykey("_Datasets", "5813181197970338560") XMLOutputChecker.assertXmltreeEqualsFile(pksel, get_pkg_data_filename("data/reference/annotation_seeker.0.4.xml")) with (pytest.raises(Exception, match="More than one INSTANCE with " "PRIMARY_KEY = G found in COLLECTION dmid G")): double_key = etree.fromstring("""""") a_seeker.get_collection_item_by_primarykey("_CoordinateSystems", "G" ).append(double_key) a_seeker.get_collection_item_by_primarykey("_CoordinateSystems", "G") with pytest.raises(Exception, match="INSTANCE with PRIMARY_KEY = wrong_key " "in COLLECTION dmid wrong_key not found"): a_seeker.get_collection_item_by_primarykey("_CoordinateSystems", "wrong_key") assert a_seeker.get_instance_dmtypes() == DictUtils.read_dict_from_file( get_pkg_data_filename("data/reference/instance_dmtypes.json")) assert a_seeker.get_templates_instance_by_dmid("Results", "wrong_dmid") is None assert a_seeker.get_templates_instance_by_dmid("Results", "_ts_data").get("dmtype") == "cube:NDPoint" assert a_seeker.get_globals_instance_from_collection( "_CoordinateSystems", "ICRS").get("dmtype") == "coords:SpaceSys" assert a_seeker.get_globals_instance_from_collection("wrong_dmid", "ICRS") is None @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_multiple_seeker(a_multiple_seeker): assert (a_multiple_seeker.get_instance_dmtypes()["TEMPLATES"] == {"Results": ["mango:Brightness", "mango:Brightness", "mango:Brightness"]}) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_header_mapper.py000066400000000000000000000066231521254414300244710ustar00rootroot00000000000000""" This module contains test cases for validating the generation of mapping dictionaries that allow to extract Mivot instances from INFO located in the VOTable header """ import pytest from astropy.io.votable import parse from astropy.utils.data import get_pkg_data_filename from pyvo.utils import activate_features from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.writer.header_mapper import HeaderMapper # Enable MIVOT-specific features in the pyvo library activate_features("MIVOT") data_origin_mapping = { "service_protocol": "ivo://ivoa.net/std/ConeSearch/v1.03", "request_date": "2025-04-07T12:06:32", "request": ("https://cdsarc.cds.unistra.fr/beta/viz-bin/mivotconesearch" "/I/329/urat1?RA=52.26708&DEC=59.94027&SR=0.05"), "contact": "cds-question@unistra.fr", "server_software": "7.4.6", "publisher": "CDS", "dataOrigin": [{ "ivoid": "ivo://cds.vizier/i/329", "creators": ["Zacharias N."], "cites": "bibcode:2015AJ....150..101Z", "original_date": "2015", "reference_url": "https://cdsarc.cds.unistra.fr/viz-bin/cat/I/329", "rights_uri": "https://cds.unistra.fr/vizier-org/licences_vizier.html", "articles": [{ "editor": "Astronomical Journal (AAS)" }] }] } coosys_mappings = [{"spaceRefFrame": "ICRS", "epoch": "2345"}] timesys_mappings = [{"timescale": "TCB"}] @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_all(): """ checks that the mapping dictionaries extracte from the VOTable match the expected ones """ votable = parse(get_pkg_data_filename("data/test.header_extraction.xml")) builder = HeaderMapper(votable) assert builder.extract_origin_mapping() == data_origin_mapping assert builder.extract_coosys_mapping() == coosys_mappings assert builder.extract_timesys_mapping() == timesys_mappings @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_field_extraction(): """ checks that the epochPosition mapping dictionaries extracted from the VOTable columns match the expected ones """ votable = parse(get_pkg_data_filename("data/test.header_extraction.1.xml")) builder = HeaderMapper(votable) mapping, error_mapping = builder.extract_epochposition_mapping() assert mapping == {"longitude": "RA_ICRS", "latitude": "DE_ICRS", "parallax": "Plx", "pmLongitude": "pmRA", "pmLatitude": "pmDE", "radialVelocity": "RV"} assert error_mapping == {"position": {"class": "PErrorSym2D", "sigma1": "e_RA_ICRS", "sigma2": "e_DE_ICRS"}, "parallax": {"class": "PErrorSym1D", "sigma": "e_Plx"}, "properMotion": {"class": "PErrorSym2D", "sigma1": "e_pmRA", "sigma2": "e_pmDE"}, "radialVelocity": {"class": "PErrorSym1D", "sigma": "e_RV"}} votable = parse(get_pkg_data_filename("data/test.header_extraction.2.xml")) builder = HeaderMapper(votable) mapping, error_mapping = builder.extract_epochposition_mapping() assert mapping == {"obsDate": {"dateTime": "ObsDate", "representation": "iso"}, "longitude": "RAB1950", "latitude": "DEB1950" } astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_mango_annoter.py000066400000000000000000000232711521254414300245220ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This module contains test cases for validating the functionality of MivotInstance, MivotAnnotations, and related components in the pyvo.mivot package. These tests ensure that the classes behave as expected, including error handling and XML generation for data models. """ import os import pytest from unittest.mock import patch from astropy.io.votable import parse from astropy.utils.data import get_pkg_data_contents, get_pkg_data_filename from pyvo.utils import activate_features from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.utils.xml_utils import XmlUtils from pyvo.mivot.writer.instances_from_models import InstancesFromModels from pyvo.mivot.utils.exceptions import MappingError # Enable MIVOT-specific features in the pyvo library activate_features("MIVOT") # File paths for test data votable_path = os.path.realpath( os.path.join(__file__, "..", "data", "test.mivot_viewer.no_mivot.xml") ) data_path = os.path.realpath( os.path.join(os.path.dirname(os.path.realpath(__file__)), "data") ) @pytest.fixture() def mocked_fps_grvs(mocker): def callback(request, context): return bytes(get_pkg_data_contents('data/filter_gaia_grvs.xml'), "utf8") with mocker.register_uri( 'GET', 'http://svo2.cab.inta-csic.es/svo/theory/fps/fpsmivot.php?PhotCalID=GAIA/GAIA3.Grvs/AB', content=callback ) as matcher: yield matcher @pytest.fixture() def mocked_fps_grp(mocker): def callback(request, context): return bytes(get_pkg_data_contents('data/filter_gaia_grp.xml'), "utf8") with mocker.register_uri( 'GET', 'http://svo2.cab.inta-csic.es/svo/theory/fps/fpsmivot.php?PhotCalID=GAIA/GAIA3.Grp/AB', content=callback ) as matcher: yield matcher @pytest.fixture def mocked_fps(): with patch('requests.get') as mock_get: yield mock_get @pytest.mark.filterwarnings("ignore:root:::") def add_color(builder): filter_ids = {"high": "GAIA/GAIA3.Grp/AB", "low": "GAIA/GAIA3.Grvs/AB"} mapping = {"value": 8.76, "definition": "ColorIndex", "error": {"class": "PErrorAsym1D", "low": 1, "high": 3} } semantics = {"description": "very nice color", "uri": "vocabulary#term", "label": "term"} builder.add_mango_color(filter_ids=filter_ids, mapping=mapping, semantics=semantics) @pytest.mark.filterwarnings("ignore:root:::") def add_color_without_definition(builder): filter_ids = {"high": "GAIA/GAIA3.Grp/AB", "low": "GAIA/GAIA3.Grvs/AB"} mapping = {"value": 8.76, "error": {"class": "PErrorAsym1D", "low": 1, "high": 3} } semantics = {"description": "very nice color", "uri": "vocabulary#term", "label": "term"} builder.add_mango_color(filter_ids=filter_ids, mapping=mapping, semantics=semantics) @pytest.mark.filterwarnings("ignore:root:::") def add_photometry(builder): photcal_id = "GAIA/GAIA3.Grvs/AB" mapping = {"value": "GRVSmag", "error": {"class": "PErrorAsym1D", "low": 1, "high": 3} } semantics = {"description": "Grvs magnitude", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#magnitude", "label": "magnitude"} builder.add_mango_brightness(photcal_id=photcal_id, mapping=mapping, semantics=semantics) def add_epoch_position(builder): frames = {"spaceSys": {"spaceRefFrame": "ICRS", "refPosition": 'BARYCENTER', "equinox": None}, "timeSys": {"timescale": "TCB", "refPosition": 'BARYCENTER'}} mapping = {"longitude": "_RAJ2000", "latitude": "_DEJ2000", "pmLongitude": "pmRA", "pmLatitude": "pmDE", "parallax": "Plx", "radialVelocity": "RV", "obsDate": {"dmtype": "mango:mjd", "value": 579887.6}, "correlations": {"isCovariance": True, "longitudeLatitude": "RADEcor", "latitudePmLongitude": "DEpmRAcor", "latitudePmLatitude": "DEpmDEcor", "longitudePmLongitude": "RApmRAcor", "longitudePmLatitude": "RApmDEcor", "longitudeParallax": "RAPlxcor", "latitudeParallax": "DEPlxcor", "pmLongitudeParallax": "PlxpmRAcor", "pmLatitudeParallax": "PlxpmDEcor", }, "errors": {"position": {"class": "PErrorSym2D", "sigma1": "e_RA_ICRS", "sigma2": "e_DE_ICRS"}, "properMotion": {"class": "PErrorSym2D", "sigma1": "e_pmRA", "sigma2": "e_pmDE"}, "parallax": {"class": "PErrorSym1D", "sigma": "e_Plx"}, "radialVelocity": {"class": "PErrorSym1D", "sigma": "e_RV"} } } semantics = {"description": "6 parameters position", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#astronomical-location", "label": "Astronomical location"} builder.add_mango_epoch_position(frames=frames, mapping=mapping, semantics=semantics) def add_epoch_position_with_wrong_date(builder): frames = {"spaceSys": {"spaceRefFrame": "ICRS", "refPosition": 'BARYCENTER', "equinox": None}, "timeSys": {"timescale": "TCB", "refPosition": 'BARYCENTER'}} mapping = {"longitude": "_RAJ2000", "latitude": "_DEJ2000", "obsDate": {"representation": "mango:mjd", "value": 579887.6}, } semantics = {"description": "6 parameters position", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#astronomical-location", "label": "Astronomical location"} builder.add_mango_epoch_position(frames=frames, mapping=mapping, semantics=semantics) @pytest.mark.usefixtures("mocked_fps_grvs", "mocked_fps_grp") @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_all_properties(): votable_filename = get_pkg_data_filename("data/test.mango_annoter.xml") votable = parse(votable_filename) builder = InstancesFromModels(votable, dmid="DR3Name") # pylint: disable=E501 builder.add_query_origin( {"service_protocol": "ASU", "request_date": "2024-03-21T15:16:08", "request": ("https://vizier.cds.unistra.fr/viz-bin/votable?-oc.form=dec&-out.max=5&" "-out.add=_r&-out.add=_RAJ,_DEJ&-sort=_r&-c.eq=J2000&-c.r= 2&" "-c.u=arcmin&-c.geom=r&-source=I/355/gaiadr3&-order=I&" "-out.orig=standard&-out=DR3Name&-out=RA_ICRS&-out=DE_ICRS&" "-out=Source&-out=e_RA_ICRS&-out=e_DE_ICRS&-out=Plx&" "-out=e_Plx&-out=PM&-out=pmRA&-out=e_pmRA&-out=pmDE&" "-out=e_pmDE&-out=RADEcor&-out=RAPlxcor&-out=RApmRAcor&" "-out=RApmDEcor&-out=DEPlxcor&-out=DEpmRAcor&-out=DEpmDEcor&" "-out=PlxpmRAcor&-out=PlxpmDEcor&-out=pmRApmDEcor&-out=RV&" "-out=e_RV&-out=Vbroad&-out=GRVSmag&-out=QSO&-out=Gal&-out=NSS&" "-out=XPcont&-out=XPsamp&-out=RVS&-out=EpochPh&-out=EpochRV&" "-out=MCMCGSP&-out=MCMCMSC&-out=And&-out=Teff&-out=logg&" "-out=[Fe/H]&-out=Dist&-out=A0&-out=HIP&-out=PS1&-out=SDSS13&" "-out=SKYM2&-out=TYC2&-out=URAT1&-out=AllWISE&-out=APASS9&" "-out=GSC23&-out=RAVE5&-out=2MASS&-out=RAVE6&-out=RAJ2000&" "-out=DEJ2000&"), "contact": "cds-question@unistra.fr", "server_software": "7.33.3", "publisher": "CDS", "dataOrigin": [{"ivoid": "ivo://cds.vizier/i/355", "creators": ["Gaia collaboration"], "cites": "bibcode:2022yCat.1355....0G, ""doi:10.26093/cds/vizier.1355", "original_date": "2022", "reference_url": "https://cdsarc.cds.unistra.fr/viz-bin/cat/I/355", "rights_uri": "https://cds.unistra.fr/vizier-org/licences_vizier.html", "articles": [{"identifier": "doi:10.1051/0004-6361/202039657e]", "editor": "A&A"}] }] }) add_color(builder) add_photometry(builder) add_epoch_position(builder) builder.pack_into_votable(schema_check=False) assert XmlUtils.strip_xml(builder._annotation.mivot_block) == ( XmlUtils.strip_xml(get_pkg_data_contents("data/reference/mango_object.xml")) ) builder = InstancesFromModels(votable, dmid="DR3Name") with pytest.raises(MappingError): add_epoch_position_with_wrong_date(builder) with pytest.raises(MappingError): add_color_without_definition(builder) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_extraction_from_votable_header(): """ test that the automatic mapping extraction is well connected with the annoter """ votable_filename = get_pkg_data_filename("data/test.header_extraction.1.xml") votable = parse(votable_filename) builder = InstancesFromModels(votable, dmid="URAT1") builder.extract_frames() builder.extract_data_origin() epoch_position_mapping = builder.extract_epoch_position_parameters() builder.add_mango_epoch_position(**epoch_position_mapping) builder.pack_into_votable(schema_check=True) assert XmlUtils.strip_xml(builder._annotation.mivot_block) == ( XmlUtils.strip_xml(get_pkg_data_contents("data/reference/test_header_extraction.xml")) ) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_mivot_instance.py000066400000000000000000000132101521254414300247050ustar00rootroot00000000000000''' Test the class generation from a dict.x Created on 19 févr. 2024 @author: michel ''' import pytest from copy import deepcopy from astropy.table import Table from pyvo.mivot.viewer.mivot_instance import MivotInstance fake_hk_dict = { "dmtype": "EpochPosition", "longitude": { "dmtype": "RealQuantity", "value": 52.2340018, "unit": "deg", "ref": "RAICRS" }, "latitude": { "dmtype": "RealQuantity", "value": 59.8937333, "unit": "deg", "ref": "DEICRS" } } fake_dict = { "dmtype": "EpochPosition", "longitude": { "dmtype": "RealQuantity", "value": 52.2340018, "unit": "deg", }, "latitude": { "dmtype": "RealQuantity", "value": 59.8937333, "unit": "deg", } } test_dict = { "tableref": "Results", "root_object": { "dmid": "_ts_data", "dmrole": "", "dmtype": "cube:NDPoint", "observable": [ { "dmtype": "cube:Observable", "dependent": {"dmtype": "ivoa:boolean", "value": True}, "measure": { "dmrole": "cube:MeasurementAxis.measure", "dmtype": "meas:Time", "coord": { "dmrole": "meas:Time.coord", "dmtype": "coords:MJD", "date": {"dmtype": "ivoa:real", "value": 1705.9437360200984}, }, }, }, { "dmtype": "cube:Observable", "dependent": {"dmtype": "ivoa:boolean", "value": True}, "measure": { "dmrole": "cube:MeasurementAxis.measure", "dmtype": "meas:GenericMeasure", "coord": { "dmrole": "meas:GenericMeasure.coord", "dmtype": "coords:PhysicalCoordinate", "cval": {"dmtype": "ivoa:RealQuantity", "value": 15.216575}, }, }, }, { "dmtype": "cube:Observable", "dependent": {"dmtype": "ivoa:boolean", "value": True}, "measure": { "dmrole": "cube:MeasurementAxis.measure", "dmtype": "meas:GenericMeasure", "coord": { "dmrole": "meas:GenericMeasure.coord", "dmtype": "coords:PhysicalCoordinate", "cval": {"dmtype": "ivoa:RealQuantity", "value": 15442.456}, }, "error": { "dmrole": "meas:Measure.error", "dmtype": "meas:Error", "statError": { "dmrole": "meas:Error.statError", "dmtype": "meas:Symmetrical", "radius": {"dmtype": "ivoa:RealQuantity", "value": 44.15126}, }, }, }, }, ], }, } def test_mivot_instance_constructor(): """Test the class generation from a dict.""" mivot_object = MivotInstance(**fake_hk_dict) assert mivot_object.longitude.value == 52.2340018 assert mivot_object.longitude.unit == "deg" assert mivot_object.latitude.value == 59.8937333 assert mivot_object.latitude.unit == "deg" assert mivot_object.longitude.dmtype == "RealQuantity" assert mivot_object.dmtype == "EpochPosition" def test_mivot_instance_update(): """Test the class generation from a dict followed by an update""" mivot_object = MivotInstance(**fake_hk_dict) t = Table() t["RAICRS"] = [67.87] t["DEICRS"] = [-89.87] mivot_object.update(t[0]) assert mivot_object.longitude.value == 67.87 assert mivot_object.latitude.value == -89.87 def test_mivot_instance_missing_filed(): """Test that the generated class returns None for missing fields instead of raising an error. """ mivot_object = MivotInstance(**fake_hk_dict) assert mivot_object.missing_field is None def test_mivot_instance_unit_filtering(): """Test that unit are properly read and stored in the class instance. """ mydict = deepcopy(fake_hk_dict) mydict["longitude"]["unit"] = "mas.year-1" mivot_object = MivotInstance(**mydict) assert mivot_object.longitude.unit == "mas.year-1" mydict["dmid"] = "a.b.c" # make sure that no exception are thrown. mivot_object = MivotInstance(**mydict) def test_mivot_instance_ref_id(): """Test that dmid/ref are properly read and stored in the class instance. """ mydict = deepcopy(fake_hk_dict) mydict["longitude"]["ref"] = "ref.b.c" mydict["dmid"] = "id.b.c" mivot_object = MivotInstance(**mydict) assert mivot_object.dmid == "id.b.c" assert mivot_object.longitude.ref == "ref.b.c" def test_mivot_instance_update_wrong_columns(): """Test the class generation from a dict followed by an update with wrong columns.""" mivot_object = MivotInstance(**fake_hk_dict) t = Table() t["RAICRSXX"] = [67.87] t["DEICRS"] = [-89.87] with pytest.raises(KeyError, match="RAICRS"): mivot_object.update(t[0]) def test_mivot_instance_display_dict(): """Test the class generation from a dict and rebuild the dict from the instance.""" mivot_object = MivotInstance(**fake_hk_dict) assert mivot_object.to_hk_dict() == fake_hk_dict assert mivot_object.to_dict() == fake_dict astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_mivot_viewer.py000066400000000000000000000272571521254414300244220ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Test for mivot.viewer.mivot_viewer.py """ import os import pytest import re from astropy.utils.data import get_pkg_data_filename from pyvo.mivot.utils.vocabulary import Constant from pyvo.mivot.utils.dict_utils import DictUtils from pyvo.mivot.utils.exceptions import MappingError from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer import MivotViewer from astropy import version as astropy_version dm_raw_instances = [ { "dmrole": "", "dmtype": "mango:Brightness", "value": { "dmtype": "ivoa:RealQuantity", "value": None, "unit": None, "ref": "SC_EP_1_FLUX", }, }, { "dmrole": "", "dmtype": "mango:Brightness", "value": { "dmtype": "ivoa:RealQuantity", "value": None, "unit": None, "ref": "SC_EP_2_FLUX", }, }, { "dmrole": "", "dmtype": "mango:Brightness", "value": { "dmtype": "ivoa:RealQuantity", "value": None, "unit": None, "ref": "SC_EP_3_FLUX", }, }, ] globals_photcal = { "dmid": "CoordSystem_XMM_EB1_id", "dmtype": "Phot:PhotCal", "identifier": { "dmtype": "ivoa:string", "value": "XMM/EPIC/EB1", "unit": None, "ref": None, }, "magnitudeSystem": { "dmrole": "Phot:PhotCal.magnitudeSystem", "dmtype": "Phot:MagnitudeSystem", "type": { "dmtype": "Phot:TypeOfMagSystem", "value": "XMM", "unit": None, "ref": None, }, "referenceSpectrum": { "dmtype": "ivoa:anyURI", "value": "https://xmm-tools.cosmos.esa.int/external" "/xmm_user_support/documentation/sas_usg/USG/SASUSG.html", "unit": None, "ref": None, }, }, "photometryFilter": { "dmid": "CoordSystem_XMM_FILTER_EB1_id", "dmtype": "Phot:PhotometryFilter", "dmrole": "Phot:PhotCal.photometryFilter", "identifier": { "dmtype": "ivoa:string", "value": "XMM/EPIC/EB1", "unit": None, "ref": None, }, "name": { "dmtype": "ivoa:string", "value": "XMM EPIC EB1", "unit": None, "ref": None, }, "description": { "dmtype": "ivoa:string", "value": "Soft", "unit": None, "ref": None, }, "bandName": { "dmtype": "ivoa:string", "value": "EB1", "unit": None, "ref": None, }, "spectralLocation": { "dmrole": "Phot:PhotometryFilter.spectralLocation", "dmtype": "Phot:SpectralLocation", "ucd": { "dmtype": "Phot:UCD", "value": "em.wl.effective", "unit": None, "ref": None, }, "unitexpression": { "dmtype": "ivoa:Unit", "value": "keV", "unit": None, "ref": None, }, "value": {"dmtype": "ivoa:real", "value": 0.35, "unit": None, "ref": None}, }, "bandwidth": { "dmrole": "Phot:PhotometryFilter.bandwidth", "dmtype": "Phot:Bandwidth", "ucd": { "dmtype": "Phot:UCD", "value": "instr.bandwidth;stat.fwhm", "unit": None, "ref": None, }, "unitexpression": { "dmtype": "ivoa:Unit", "value": "keV", "unit": None, "ref": None, }, "extent": {"dmtype": "ivoa:real", "value": 0.3, "unit": None, "ref": None}, "start": {"dmtype": "ivoa:real", "value": 0.2, "unit": None, "ref": None}, "stop": {"dmtype": "ivoa:real", "value": 0.5, "unit": None, "ref": None}, }, "transmissionCurve": { "dmrole": "Phot:PhotometryFilter.transmissionCurve", "dmtype": "Phot:TransmissionCurve", "access": { "dmrole": "Phot:TransmissionCurve.access", "dmtype": "Phot:Access", "reference": { "dmtype": "ivoa:anyURI", "value": "https://xmm-tools.cosmos.esa.int/external/xmm_user_support" "/documentation/sas_usg/USG/SASUSG.html", "unit": None, "ref": None, }, "format": { "dmtype": "ivoa:string", "value": "text/html", "unit": None, "ref": None, }, }, }, }, } @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_get_first_instance_dmtype(path_to_first_instance): """ Test the function get_first_instance_dmtype() which is used to find the first INSTANCE/COLLECTION in TEMPLATES. """ m_viewer = MivotViewer(votable_path=path_to_first_instance) assert m_viewer.get_dm_instance_dmtypes("one_instance")[0] == "one_instance" assert m_viewer.get_dm_instance_dmtypes("some_instances")[0] == "first" with pytest.raises(Exception, match="Can't find INSTANCE in TEMPLATES"): m_viewer.get_dm_instance_dmtypes("empty") with pytest.raises(Exception, match="No TEMPLATES with tableref=not_existing_tableref"): m_viewer.get_dm_instance_dmtypes("not_existing_tableref") @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_table_ref(m_viewer): """ Test if the mivot_viewer can find each table_ref and connect to the right table_ref. Test if the mivot_viewer can find each models. """ assert m_viewer._mapped_tables == ['_PKTable', 'Results'] with pytest.raises(Exception, match=re.escape(r"The table first_table doesn't match with any mapped_table " r"(['_PKTable', 'Results']) encountered in TEMPLATES")): m_viewer._connect_table("wrong_tableref") assert m_viewer.connected_table_ref == Constant.FIRST_TABLE assert (m_viewer.get_models() == {'mango': 'file:/Users/sao/Documents/IVOA/GitHub/ivoa-dm-examples/tmp/Mango-v1.0.vo-dml.xml', 'cube': 'https://volute.g-vo.org/svn/trunk/projects/dm/Cube/vo-dml/Cube-1.0.vo-dml.xml', 'ds': 'https://volute.g-vo.org/svn/trunk/projects/dm/' 'DatasetMetadata/vo-dml/DatasetMetadata-1.0.vo-dml.xml', 'meas': 'https://www.ivoa.net/xml/Meas/20200908/Meas-v1.0.vo-dml.xml', 'coords': 'https://www.ivoa.net/xml/STC/20200908/Coords-v1.0.vo-dml.xml', 'ivoa': 'https://www.ivoa.net/xml/VODML/IVOA-v1.vo-dml.xml'}) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_global_getters(m_viewer): """ Test each getter for TEMPLATES of the model_viewer. """ assert m_viewer.get_table_ids() == ['_PKTable', 'Results'] assert m_viewer.get_models() == DictUtils.read_dict_from_file( get_pkg_data_filename("data/reference/globals_models.json")) m_viewer._connect_table('_PKTable') row = m_viewer.next_table_row() assert row[0] == '5813181197970338560' assert row[1] == 'G' row = m_viewer.next_table_row() assert row[0] == '5813181197970338560' assert row[1] == 'BP' m_viewer.rewind() row = m_viewer.next_table_row() assert row[0] == '5813181197970338560' assert row[1] == 'G' @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_no_mivot(path_no_mivot): """ Test the viewer behavior when there is no mapping """ m_viewer = MivotViewer(path_no_mivot) assert m_viewer.get_table_ids() is None assert m_viewer.get_models() is None with pytest.raises(MappingError): m_viewer._connect_table('_PKTable') with pytest.raises(MappingError): m_viewer._connect_table() assert m_viewer.next_table_row() is None @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_instance_mutiple_in_templates(path_to_multiple_instance): """ Test case with a TEMPLATES containing multiple instances """ m_viewer = MivotViewer(votable_path=path_to_multiple_instance) instance_dict = [] # test the DM instances children of TEMPLATES before their values are set for dmi in m_viewer.dm_instances: instance_dict.append(dmi.to_hk_dict()) assert instance_dict == dm_raw_instances # test the DM instances children of TEMPLATES set with the values of the first row m_viewer.next_row_view() row_values = [] for dmi in m_viewer.dm_instances: row_values.append(dmi.value.value) assert row_values == pytest.approx([0.0, 0.1, 0.2], rel=1e-3) # test the DM instances children of TEMPLATES set with the values of the second row m_viewer.next_row_view() row_values = [] for dmi in m_viewer.dm_instances: row_values.append(dmi.value.value) assert row_values == pytest.approx([1.0, 2.1, 3.2], rel=1e-3) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_globals_instances(path_to_multiple_instance): """ Test case for the GLOBALS instance access as MivotInstances """ m_viewer = MivotViewer(votable_path=path_to_multiple_instance) instance_dict = [] photcals = 0 photfilters = 0 # test the DM instances children of TEMPLATES before their values are set for dmi in m_viewer.dm_globals_instances: if dmi.dmtype == "Phot:PhotCal": photcals += 1 elif dmi.dmtype == "Phot:PhotometryFilter": photfilters += 1 else: assert False, f"Unexpected dmtype {dmi.dmtype} in GLOBALS " instance_dict.append(dmi.to_hk_dict()) assert photcals == 3 assert photfilters == 3 # just check the first one assert instance_dict[0] == globals_photcal def test_check_version(path_to_viewer): if not check_astropy_version(): with pytest.raises(Exception, match=f"Astropy version {astropy_version.version} " f"is below the required version 6.0 for the use of MIVOT."): MivotViewer(votable_path=path_to_viewer) if astropy_version.version is None: assert not check_astropy_version() elif astropy_version.version < '6.0': assert not check_astropy_version() else: assert check_astropy_version() is True @pytest.fixture def m_viewer(): if not check_astropy_version(): pytest.skip("MIVOT test skipped because of the astropy version.") votable_name = "test.mivot_viewer.xml" votable_path = get_pkg_data_filename(os.path.join("data", votable_name)) return MivotViewer(votable_path=votable_path) @pytest.fixture def path_to_viewer(): if not check_astropy_version(): pytest.skip("MIVOT test skipped because of the astropy version.") votable_name = "test.mivot_viewer.xml" return get_pkg_data_filename(os.path.join("data", votable_name)) @pytest.fixture def path_to_multiple_instance(): votable_name = "test.instance_multiple.xml" return get_pkg_data_filename(os.path.join("data", votable_name)) @pytest.fixture def path_to_first_instance(): votable_name = "test.mivot_viewer.first_instance.xml" return get_pkg_data_filename(os.path.join("data", votable_name)) @pytest.fixture def path_no_mivot(): votable_name = "test.mivot_viewer.no_mivot.xml" return get_pkg_data_filename(os.path.join("data", votable_name)) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_mivot_writer.py000066400000000000000000000056621521254414300244310ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This module contains test cases for validating the functionality of MivotInstance, MivotAnnotations, and related components in the pyvo.mivot package. These tests ensure that the classes behave as expected, including error handling and XML generation for data models. """ import os import pytest from pyvo.utils import activate_features from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.utils.exceptions import MappingError from pyvo.mivot.utils.xml_utils import XmlUtils from pyvo.mivot.writer.annotations import MivotAnnotations from pyvo.mivot.writer.instance import MivotInstance # Enable MIVOT-specific features in the pyvo library activate_features("MIVOT") # File paths for test data votable_path = os.path.realpath( os.path.join(__file__, "..", "data", "test.mivot_viewer.no_mivot.xml") ) data_path = os.path.realpath( os.path.join(os.path.dirname(os.path.realpath(__file__)), "data") ) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_MivotInstance(): """ Test the MivotInstance class for various operations including attribute addition, reference addition, and XML generation. Verifies that invalid operations raise the expected MappingError. """ with pytest.raises(MappingError): MivotInstance("") instance1 = MivotInstance("model:type.inst", dmid="id1") with pytest.raises(MappingError): instance1.add_attribute( dmrole="model:type.inst.role1", value="value1", unit="m/s" ) with pytest.raises(MappingError): instance1.add_attribute( dmtype="model:type.att1", dmrole="model:type.inst.role1" ) with pytest.raises(MappingError): instance1.add_reference(dmref="dmreference") with pytest.raises(MappingError): instance1.add_reference(dmrole="model:type.inst.role2") with pytest.raises(MappingError): instance1.add_instance("azerty") instance1.add_reference(dmrole="model:type.inst.role2", dmref="dmreference") instance1.add_attribute( dmtype="model:type.att1", dmrole="model:type.inst.role1", value="*value1", unit="m/s", ) assert XmlUtils.strip_xml(instance1.xml_string()) == ( "" + "" + "" + "" ) @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_MivotAnnotations(): """ Test the MivotAnnotations class for template and global instance addition. Verifies that invalid operations raise the expected MappingError. """ mb = MivotAnnotations() with pytest.raises(MappingError): mb.add_templates(12) with pytest.raises(MappingError): mb.add_globals(12) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_resource_seeker.py000066400000000000000000000051511521254414300250550ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Test for mivot.seekers.resource_seeker.py """ import pytest from astropy.io.votable import parse from astropy.utils.data import get_pkg_data_filename from pyvo.mivot.seekers.resource_seeker import ResourceSeeker from pyvo.mivot.version_checker import check_astropy_version @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_id_table(rseeker): """ Checks the IDs of tables found by the RessourceSeeker, checks the IDs of the field of the table concerned. """ assert rseeker.get_table_ids() == ['_PKTable', 'Results'] assert (rseeker.get_id_index_mapping('_PKTable') == {'pksrcid': {'ID': '_pksrcid', 'indx': 0}, 'pkband': {'ID': '_pkband', 'indx': 1} } ) assert (rseeker.get_id_index_mapping('Results') == {'source_id': {'ID': '_srcid', 'indx': 0}, 'transit_id': {'ID': 'transit_id', 'indx': 1}, 'band': {'ID': '_band', 'indx': 2}, 'time': {'ID': '_obstime', 'indx': 3}, 'mag': {'ID': '_mag', 'indx': 4}, 'flux': {'ID': '_flux', 'indx': 5}, 'flux_error': {'ID': '_fluxerr', 'indx': 6}, 'flux_over_error': {'ID': 'flux_over_error', 'indx': 7}, 'rejected_by_photometry': {'ID': 'rejected_by_photometry', 'indx': 8}, 'rejected_by_variability': {'ID': 'rejected_by_variability', 'indx': 9}, 'other_flags': {'ID': 'other_flags', 'indx': 10}, 'solution_id': {'ID': 'solution_id', 'indx': 11} } ) table = rseeker.get_table('_PKTable') for field in table.fields: field.ID = None assert (rseeker.get_id_index_mapping('_PKTable') == {'pksrcid': {'indx': 0, 'ID': 'pksrcid'}, 'pkband': {'indx': 1, 'ID': 'pkband'} } ) for table in rseeker._resource.tables: table.ID = None assert rseeker.get_table_ids() == ['AnonymousTable', 'AnonymousTable'] for table in rseeker._resource.tables: table.name = "any_name" assert rseeker.get_table_ids() == ['any_name', 'any_name'] assert (rseeker.get_id_index_mapping('any_name') == {'pksrcid': {'indx': 0, 'ID': 'pksrcid'}, 'pkband': {'indx': 1, 'ID': 'pkband'}} ) @pytest.fixture def rseeker(): votable_path = get_pkg_data_filename("data/test.mivot_viewer.xml") votable = parse(votable_path) for resource in votable.resources: return ResourceSeeker(resource) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_sky_coord_builder.py000066400000000000000000000266441521254414300254040ustar00rootroot00000000000000''' The first service in operation that annotates query responses in the fly is Vizier https://cds/viz-bin/mivotconesearch/VizierParams Data are mapped on the mango:EpochPropagtion class as it is implemented in the current code. This test case is based on 2 VOTables: Both tests check the generation of SkyCoord instances from the MivotInstances built for the output of this service. ''' import pytest from copy import deepcopy from astropy.utils.data import get_pkg_data_filename from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer.mivot_instance import MivotInstance from pyvo.mivot.features.sky_coord_builder import SkyCoordBuilder from pyvo.mivot.utils.exceptions import NoMatchingDMTypeError, MappingError from pyvo.mivot.viewer.mivot_viewer import MivotViewer from pyvo.utils import activate_features # Enable MIVOT-specific features in the pyvo library activate_features("MIVOT") # annotations generated by Vizier as given to the MivotInstance vizier_dict = { "dmtype": "mango:EpochPosition", "longitude": { "dmtype": "ivoa:RealQuantity", "value": 52.26722684, "unit": "deg", "ref": "RAICRS", }, "latitude": { "dmtype": "ivoa:RealQuantity", "value": 59.94033461, "unit": "deg", "ref": "DEICRS", }, "pmLongitude": { "dmtype": "ivoa:RealQuantity", "value": -0.82, "unit": "mas/yr", "ref": "pmRA", }, "pmLatitude": { "dmtype": "ivoa:RealQuantity", "value": -1.85, "unit": "mas/yr", "ref": "pmDE", }, "obsDate": { "dmtype": "mango:year", "value": 1991.25, "unit": "yr", "ref": None, }, "spaceSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "coords:Coordinate.coordSys", "frame": { "dmtype": "coords:SpaceFrame", "dmrole": "coords:PhysicalCoordSys.frame", "spaceRefFrame": { "dmtype": "ivoa:string", "value": "ICRS" }, }, }, } # The same edited by hand (parallax added and FK5 + Equinox frame) vizier_equin_dict = { "dmtype": "mango:EpochPosition", "longitude": { "dmtype": "ivoa:RealQuantity", "value": 52.26722684, "unit": "deg", "ref": "RAICRS", }, "latitude": { "dmtype": "ivoa:RealQuantity", "value": 59.94033461, "unit": "deg", "ref": "DEICRS", }, "pmLongitude": { "dmtype": "ivoa:RealQuantity", "value": -0.82, "unit": "mas/yr", "ref": "pmRA", }, "pmLatitude": { "dmtype": "ivoa:RealQuantity", "value": -1.85, "unit": "mas/yr", "ref": "pmDE", }, "parallax": { "dmtype": "ivoa:RealQuantity", "value": 0.6, "unit": "mas", "ref": "parallax", }, "obsDate": { "dmtype": "mango:year", "value": 1991.25, "unit": "yr", "ref": None, }, "spaceSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "coords:Coordinate.coordSys", "frame": { "dmtype": "coords:SpaceFrame", "dmrole": "coords:PhysicalCoordSys.frame", "spaceRefFrame": { "dmtype": "ivoa:string", "value": "FK5" }, "equinox": { "dmtype": "coords:Epoch", "value": "2012", } } }, } # The same edited mapped on a dummy class vizier_dummy_type = { "dmtype": "mango:DumyType", "longitude": { "dmtype": "ivoa:RealQuantity", "value": 52.26722684, "unit": "deg", "ref": "RAICRS", }, "latitude": { "dmtype": "ivoa:RealQuantity", "value": 59.94033461, "unit": "deg", "ref": "DEICRS", }, "pmLongitude": { "dmtype": "ivoa:RealQuantity", "value": -0.82, "unit": "mas/yr", "ref": "pmRA", }, "pmLatitude": { "dmtype": "ivoa:RealQuantity", "value": -1.85, "unit": "mas/yr", "ref": "pmDE", }, "parallax": { "dmtype": "ivoa:RealQuantity", "value": 0.6, "unit": "mas", "ref": "parallax", }, "obsDate": { "dmtype": "ivoa:RealQuantity", "value": 1991.25, "unit": "yr", "ref": None, }, "coordSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "coords:Coordinate.coordSys", "spaceRefFrame": { "dmtype": "coords:SpaceFrame.spaceRefFrame", "value": "FK5", "unit": None, "ref": None, }, "equinox": { "dmtype": "coords:Epoch", "value": "2012", "unit": "yr", }, }, } def check_skycoo(scoo, ra, dec, distance, pm_ra_cosdec, pm_dec, obstime): """ Check the SkyCoord instance against the constant values given as parameters """ try: assert scoo.ra.degree == pytest.approx(ra) assert scoo.dec.degree == pytest.approx(dec) if distance: assert scoo.distance.pc == pytest.approx(distance) if pm_ra_cosdec: assert scoo.pm_ra_cosdec.value == pytest.approx(pm_ra_cosdec) if pm_dec: assert scoo.pm_dec.value == pytest.approx(pm_dec) except AttributeError: assert scoo.galactic.l.degree == pytest.approx(ra) assert scoo.galactic.b.degree == pytest.approx(dec) if obstime: assert str(scoo.obstime) == obstime def test_no_matching_mapping(): """ Test that a NoMatchingDMTypeError is raised not mapped on mango:EpochPosition """ with pytest.raises(NoMatchingDMTypeError): mivot_instance = MivotInstance(**vizier_dummy_type) scb = SkyCoordBuilder(mivot_instance) scb.build_sky_coord() @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_vizier_output(): """ Test the SkyCoord issued from the Vizier response """ mivot_instance = MivotInstance(**vizier_dict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() check_skycoo(scoo, 52.26722684, 59.94033461, None, -0.82, -1.85, None) vizier_dict["spaceSys"]["frame"]["spaceRefFrame"]["value"] = "Galactic" mivot_instance = MivotInstance(**vizier_dict) scoo = mivot_instance.get_SkyCoord() assert (str(scoo).replace("\n", "").replace(" ", "") == "") check_skycoo(scoo, 52.26722684, 59.94033461, None, -0.82, -1.85, None) vizier_dict["spaceSys"]["frame"]["spaceRefFrame"]["value"] = "QWERTY" mivot_instance = MivotInstance(**vizier_dict) scoo = mivot_instance.get_SkyCoord() check_skycoo(scoo, 52.26722684, 59.94033461, None, -0.82, -1.85, "J1991.250") @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_vizier_output_with_equinox_and_parallax(): """Test the SkyCoord issued from the modified Vizier response * (parallax added and FK5 + Equinox frame) """ mivot_instance = MivotInstance(**vizier_equin_dict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() check_skycoo(scoo, 52.26722684, 59.94033461, 1666.66666667, -0.82, -1.85, "J1991.250") mydict = deepcopy(vizier_equin_dict) mydict["spaceSys"]["frame"]["spaceRefFrame"]["value"] = "FK4" mivot_instance = MivotInstance(**mydict) scoo = mivot_instance.get_SkyCoord() check_skycoo(scoo, 52.26722684, 59.94033461, 1666.66666667, -0.82, -1.85, "B1991.250") mydict = deepcopy(vizier_equin_dict) mydict["spaceSys"]["frame"]["spaceRefFrame"]["value"] = "FK4" mydict["spaceSys"]["frame"]["equinox"]["value"] = "J2012" with pytest.raises(MappingError, match=r".*besselian date.*"): mivot_instance = MivotInstance(**mydict) scoo = mivot_instance.get_SkyCoord() @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_simad_cs_output(): """Test the SkyCoord issued from a Simbad SCS response """ filename = get_pkg_data_filename('data/simbad-cone-mivot.xml') m_viewer = MivotViewer(filename, resolve_ref=True) mivot_instance = m_viewer.dm_instance scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() check_skycoo(scoo, 269.45207696, 4.69336497, 1.82823411, -801.551, 10362.394, "J2000.000") def test_time_representation(): """ Test various time representations Inconsistent values are not tested since there are detected by ``astropy.core.Time`` """ # work with a copy to not alter other test functions mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:mjd" mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert scoo.obstime.jyear_str == "J1864.331" mydict["obsDate"]["dmtype"] = "mango:jd" mydict["obsDate"]["value"] = "2460937.36" mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert scoo.obstime.jyear_str == "J2025.715" mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:iso" mydict["obsDate"]["value"] = "2025-05-03" mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert scoo.obstime.jyear_str == "J2025.335" for timestamp in ["2025.0", 2025.0]: mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:DecimalYear" mydict["obsDate"]["value"] = timestamp mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert scoo.obstime.decimalyear == 2025.0 for timestamp in ["B356", "356", 356.0]: mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:BesselianEpoch" mydict["obsDate"]["value"] = timestamp mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert pytest.approx(scoo.obstime.decimalyear, 0.1) == 356.0 for timestamp in ["J1899", "1899", 1899]: mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:JulianEpoch" mydict["obsDate"]["value"] = timestamp mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) scoo = scb.build_sky_coord() assert pytest.approx(scoo.obstime.decimalyear, 0.1) == 1899 mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "mango:year" mydict["obsDate"]["value"] = "turlutu" mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) with pytest.raises(MappingError): scb.build_sky_coord() mydict = deepcopy(vizier_equin_dict) mydict["obsDate"]["dmtype"] = "turlututu" mydict["obsDate"]["value"] = "turlututu" mivot_instance = MivotInstance(**mydict) scb = SkyCoordBuilder(mivot_instance) with pytest.raises(MappingError): scb.build_sky_coord() astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_static_reference.py000066400000000000000000000022231521254414300251720ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Test for mivot.features.static_reference_resolver.py """ import pytest from astropy.utils.data import get_pkg_data_filename from pyvo.mivot.seekers.annotation_seeker import AnnotationSeeker from pyvo.mivot.features.static_reference_resolver import StaticReferenceResolver from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer import MivotViewer from . import XMLOutputChecker @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_static_reference_resolve(a_seeker, instance): StaticReferenceResolver.resolve(a_seeker, None, instance) XMLOutputChecker.assertXmltreeEqualsFile( instance.getroot(), get_pkg_data_filename("data/reference/static_reference_resolved.xml") ) @pytest.fixture def instance(): return XMLOutputChecker.xmltree_from_file( get_pkg_data_filename("data/static_reference.xml")) @pytest.fixture def a_seeker(): m_viewer = MivotViewer( get_pkg_data_filename("data/test.mivot_viewer.xml"), tableref="Results") return AnnotationSeeker(m_viewer._mapping_block) astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_user_api.py000066400000000000000000000365631521254414300235120ustar00rootroot00000000000000""" Check the API exposed to the user works properly This unit test can also be used as a code example Created on 26 Feb. 2024 @author: michel """ import os import pytest from urllib.request import urlretrieve import astropy.units as u from astropy.coordinates import SkyCoord from pyvo.dal.scs import SCSService from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer import MivotViewer from astropy.io.votable import parse ref_ra = [ 0.04827189, 0.16283175, 0.29222255, 0.42674592, 359.5190115, 359.94372764, ] ref_dec = [ -0.36042119, 0.22293899, -0.07592034, -0.21749947, -0.1281483, -0.28005255, ] ref_pmdec = [ -11.67, -3.09, -73.28, -114.08, -19.05, -25.43 ] ref_pmra = [ 61.75, 39.02, 54.94, 20.73, -45.19, -5.14 ] @pytest.fixture def data_path(): return os.path.dirname(os.path.realpath(__file__)) @pytest.fixture def data_sample_url(): return "https://raw.githubusercontent.com/ivoa/dm-usecases/main/pyvo-ci-sample/" @pytest.fixture def vizier_url(): return "https://vizier.cds.unistra.fr/viz-bin/conesearch/V1.5/I/239/hip_main?RA=0&DEC=0&;SR=0.5" @pytest.fixture def delt_coo(): """acceptable delta for coordinate value comparisons""" return 0.0000001 @pytest.fixture def path_to_votable(data_path, data_sample_url): votable_name = "vizier_for_user_api.xml" votable_path = os.path.join(data_path, "data", votable_name) urlretrieve(data_sample_url + votable_name, votable_path) yield votable_path os.remove(votable_path) @pytest.fixture def path_to_full_mapped_votable(data_path, data_sample_url): votable_name = "gaia_epoch_propagation_full.xml" votable_path = os.path.join(data_path, "data", votable_name) urlretrieve(data_sample_url + votable_name, votable_path) yield votable_path os.remove(votable_path) @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_mivot_viewer_next(path_to_votable): """ Check that ten MivotViewer iterating over the data rows provides the expected values """ mivot_viewer = MivotViewer(path_to_votable, resolve_ref=True) mivot_instance = mivot_viewer.dm_instance assert mivot_instance.dmtype == "mango:EpochPosition" assert mivot_instance.coordSys.spaceRefFrame.value == "ICRS" ra = [] dec = [] pmra = [] pmdec = [] while mivot_viewer.next_row_view(): ra.append(mivot_instance.longitude.value) dec.append(mivot_instance.latitude.value) pmra.append(mivot_instance.pmLongitude.value) pmdec.append(mivot_instance.pmLatitude.value) assert ra == ref_ra assert dec == ref_dec assert pmra == ref_pmra assert pmdec == ref_pmdec @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_mivot_tablerow_next(path_to_votable): """ Check that the MIVOT interpreter can be applied to a classical table readout. - The MivotViewer is initialized on the first data row (behind the stage) to be able to build a MivoInstance that will provide a model view on the data - The data table is read in a classical way - The MivotInstance is updated with data row providing so a model view on it """ votable = parse(path_to_votable) table = votable.resources[0].tables[0] mivot_viewer = MivotViewer(votable, resolve_ref=True) mivot_instance = mivot_viewer.dm_instance assert mivot_instance.dmtype == "mango:EpochPosition" assert mivot_instance.coordSys.spaceRefFrame.value == "ICRS" ra = [] dec = [] pmra = [] pmdec = [] for rec in table.array: mivot_instance.update(rec) ra.append(mivot_instance.longitude.value) dec.append(mivot_instance.latitude.value) pmra.append(mivot_instance.pmLongitude.value) pmdec.append(mivot_instance.pmLatitude.value) assert ra == ref_ra assert dec == ref_dec assert pmra == ref_pmra assert pmdec == ref_pmdec @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_external_iterator(path_to_votable, delt_coo): """Checks that the values returned by MIVOT are the same as those read by Astropy - The MivotViewer is initialized on the first data row (behind the stage) to be able to build a MivoInstance that will provide a model view on the data - The data table is read in a classical way - The MivotInstance is updated with data row providing so a model view on it - The attribute values are then checked against the table data """ # parse the VOTable outside of the viewer votable = parse(path_to_votable) table = votable.resources[0].tables[0] # init the viewer mivot_viewer = MivotViewer(votable) mivot_instance = mivot_viewer.dm_instance for rec in table.array: mivot_instance.update(rec) assert rec["RAICRS"] == mivot_instance.longitude.value assert rec["DEICRS"] == mivot_instance.latitude.value assert rec["pmRA"] == mivot_instance.pmLongitude.value assert rec["pmDE"] == mivot_instance.pmLatitude.value @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_with_withstatement(path_to_votable): """check that the values read by a MivotViewer used with a with statement are those expected """ read_ra = [] read_dec = [] read_pmra = [] read_pmdec = [] with MivotViewer(path_to_votable) as mivot_viewer: mivot_object = mivot_viewer.dm_instance while mivot_viewer.next_row_view(): read_ra.append(mivot_object.longitude.value) read_dec.append(mivot_object.latitude.value) read_pmra.append(mivot_object.pmLongitude.value) read_pmdec.append(mivot_object.pmLatitude.value) assert read_ra == ref_ra assert read_dec == ref_dec assert read_pmra == ref_pmra assert read_pmdec == ref_pmdec @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_with_dict(path_to_votable): """check that the MIVOT object user dictionary match the read data""" with MivotViewer(path_to_votable, resolve_ref=True) as mivot_viewer: mivot_object = mivot_viewer.dm_instance # let"s focus on the last data row while mivot_viewer.next_row_view(): pass # check the slim (user friendly) dictionary assert mivot_object.to_dict() == { "dmtype": "mango:EpochPosition", "longitude": {"dmtype": "ivoa:RealQuantity", "value": 359.94372764, "unit": "deg"}, "latitude": {"dmtype": "ivoa:RealQuantity", "value": -0.28005255, "unit": "deg"}, "pmLongitude": {"dmtype": "ivoa:RealQuantity", "value": -5.14, "unit": "mas/yr"}, "pmLatitude": {"dmtype": "ivoa:RealQuantity", "value": -25.43, "unit": "mas/yr"}, "epoch": {"dmtype": "ivoa:RealQuantity", "value": 1991.25, "unit": "year"}, "coordSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "coords:Coordinate.coordSys", "spaceRefFrame": {"dmtype": "coords:SpaceFrame", "value": "ICRS"}, }, } # check the whole dictionary assert mivot_object.to_hk_dict() == { "dmtype": "mango:EpochPosition", "longitude": { "dmtype": "ivoa:RealQuantity", "value": 359.94372764, "unit": "deg", "ref": "RAICRS", }, "latitude": { "dmtype": "ivoa:RealQuantity", "value": -0.28005255, "unit": "deg", "ref": "DEICRS", }, "pmLongitude": { "dmtype": "ivoa:RealQuantity", "value": -5.14, "unit": "mas/yr", "ref": "pmRA", }, "pmLatitude": { "dmtype": "ivoa:RealQuantity", "value": -25.43, "unit": "mas/yr", "ref": "pmDE", }, "epoch": { "dmtype": "ivoa:RealQuantity", "value": 1991.25, "unit": "year", "ref": None, }, "coordSys": { "dmtype": "coords:SpaceSys", "dmid": "SpaceFrame_ICRS", "dmrole": "coords:Coordinate.coordSys", "spaceRefFrame": { "dmtype": "coords:SpaceFrame", "value": "ICRS", "unit": None, "ref": None, }, }, } @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_with_full_dict(path_to_full_mapped_votable): """check that the MIVOT object user dictionary match the read data - The data sample used here maps the whole EpochPosition model except TimeSys """ with MivotViewer(path_to_full_mapped_votable, resolve_ref=True) as mivot_viewer: mivot_object = mivot_viewer.dm_instance # let"s focus on the second data row while mivot_viewer.next_row_view(): # check the slim (user friendly) dictionary assert mivot_object.to_dict() == { "dmtype": "mango:EpochPosition", "longitude": {"dmtype": "ivoa:RealQuantity", "value": 307.79115807079, "unit": "deg"}, "latitude": {"dmtype": "ivoa:RealQuantity", "value": 20.43108005561, "unit": "deg"}, "parallax": {"dmtype": "ivoa:RealQuantity", "value": 0.4319, "unit": "mas"}, "radialVelocity": {"dmtype": "ivoa:RealQuantity", "value": None, "unit": "km/s"}, "pmLongitude": {"dmtype": "ivoa:RealQuantity", "value": -2.557, "unit": "mas/yr"}, "pmLatitude": {"dmtype": "ivoa:RealQuantity", "value": -5.482, "unit": "mas/yr"}, "epoch": {"dmtype": "coords:Epoch", "value": "2016.5"}, "pmCosDeltApplied": {"dmtype": "ivoa:boolean", "value": True}, "errors": { "dmrole": "mango:EpochPosition.errors", "dmtype": "mango:EpochPositionErrors", "parallax": { "dmrole": "mango:EpochPositionErrors.parallax", "dmtype": "mango:ErrorTypes.PropertyError1D", "sigma": {"dmtype": "ivoa:real", "value": 0.06909999996423721, "unit": "mas"}, }, "radialVelocity": { "dmrole": "mango:EpochPositionErrors.radialVelocity", "dmtype": "mango:ErrorTypes.PropertyError1D", "sigma": {"dmtype": "ivoa:real", "value": None, "unit": "km/s"}, }, "position": { "dmrole": "mango:EpochPositionErrors.position", "dmtype": "mango:ErrorTypes.ErrorMatrix", "sigma1": {"dmtype": "ivoa:real", "value": 0.0511, "unit": "mas"}, "sigma2": {"dmtype": "ivoa:real", "value": 0.0477, "unit": "mas"}, }, "properMotion": { "dmrole": "mango:EpochPositionErrors.properMotion", "dmtype": "mango:ErrorTypes.ErrorMatrix", "sigma1": {"dmtype": "ivoa:real", "value": 0.06400000303983688, "unit": "mas/yr"}, "sigma2": {"dmtype": "ivoa:real", "value": 0.06700000166893005, "unit": "mas/yr"}, }, }, "correlations": { "dmrole": "mango:EpochPosition.correlations", "dmtype": "mango:EpochPositionCorrelations", "positionPm": { "dmrole": "mango:EpochPositionCorrelations.positionPm", "dmtype": "mango:Correlation22", "isCovariance": {"dmtype": "ivoa:boolean", "value": True}, "a2b1": {"dmtype": "ivoa:real", "value": -0.0085}, "a2b2": {"dmtype": "ivoa:real", "value": -0.2983}, "a1b1": {"dmtype": "ivoa:real", "value": -0.4109}, "a1b2": {"dmtype": "ivoa:real", "value": -0.0072}, }, "parallaxPm": { "dmrole": "mango:EpochPositionCorrelations.parallaxPm", "dmtype": "mango:Correlation12", "isCovariance": {"dmtype": "ivoa:boolean", "value": True}, "a1b1": {"dmtype": "ivoa:real", "value": -0.2603}, "a1b2": {"dmtype": "ivoa:real", "value": -0.0251}, }, "positionParallax": { "dmrole": "mango:EpochPositionCorrelations.positionParallax", "dmtype": "mango:Correlation21", "isCovariance": {"dmtype": "ivoa:boolean", "value": True}, "a2b1": {"dmtype": "ivoa:real", "value": 0.0069}, "a1b1": {"dmtype": "ivoa:real", "value": 0.1337}, }, "positionPosition": { "dmrole": "mango:EpochPositionCorrelations.positionPosition", "dmtype": "mango:Correlation22", "isCovariance": {"dmtype": "ivoa:boolean", "value": True}, "a2b1": {"dmtype": "ivoa:real", "value": 0.1212}, "a1b2": {"dmtype": "ivoa:real", "value": 0.1212}, }, "properMotionPm": { "dmrole": "mango:EpochPositionCorrelations.properMotionPm", "dmtype": "mango:Correlation22", "isCovariance": {"dmtype": "ivoa:boolean", "value": True}, "a2b1": {"dmtype": "ivoa:real", "value": 0.2688}, "a1b2": {"dmtype": "ivoa:real", "value": 0.2688}, }, }, "coordSys": { "dmid": "_spacesys_icrs", "dmrole": "mango:EpochPosition.coordSys", "dmtype": "coords:SpaceSys", "frame": { "dmrole": "coords:PhysicalCoordSys.frame", "dmtype": "coords:SpaceFrame", "spaceRefFrame": {"dmtype": "ivoa:string", "value": "ICRS"}, }, }, } break @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_cone_search(vizier_url): """ Test that data returned by Vizier CS (1 row) and read through MIVOt are those expected """ scs_srv = SCSService(vizier_url) m_viewer = MivotViewer( scs_srv.search( pos=SkyCoord(ra=52.26708 * u.degree, dec=59.94027 * u.degree, frame="icrs"), radius=0.05, ), resolve_ref=True ) mivot_instance = m_viewer.dm_instance assert mivot_instance.dmtype == "mango:EpochPosition" assert mivot_instance.spaceSys.frame.spaceRefFrame.value == "ICRS" ra = [] dec = [] pmra = [] pmdec = [] while m_viewer.next_row_view(): ra.append(mivot_instance.longitude.value) dec.append(mivot_instance.latitude.value) pmra.append(mivot_instance.pmLongitude.value) pmdec.append(mivot_instance.pmLatitude.value) assert ra == [52.26722684] assert dec == [59.94033461] assert pmra == [-0.82] assert pmdec == [-1.85] astropy-pyvo-f0fdda3/pyvo/mivot/tests/test_vizier_cs.py000066400000000000000000000110201521254414300236550ustar00rootroot00000000000000''' The first service in operation the annotates query responses in the fly is Vizier https://cds/viz-bin/mivotconesearch/VizierParams Data are mapped o the EPochPropagtion model as it is implemented in the current code. This test case is based on 2 VOTables: - The Vizier native (vizier_cs_withname.xml) where all ATTRIBUTE@ref are based on FIELD@name even when a field has an ID. - The patched vizier (vizier_cs_withid.xml) where all ATTRIBUTE@ref are based on FIELD@ID or FIELD@name if it exists. The test checks that: - The position fields can be retrieved through the mapping. - Both cases give the same results A third test checks the case where a referenced column does not exist. Created on 26 janv. 2024 @author: michel ''' import os import pytest from urllib.request import urlretrieve from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer import MivotViewer from pyvo.mivot.utils.exceptions import MivotError @pytest.fixture def data_path(): return os.path.dirname(os.path.realpath(__file__)) @pytest.fixture def data_sample_url(): return "https://raw.githubusercontent.com/ivoa/dm-usecases/main/pyvo-ci-sample/" @pytest.fixture def delt_coo(): """ acceptable delta for coordinate value comparisons """ return 0.0000005 @pytest.fixture def path_to_withname(data_path, data_sample_url): votable_name = "vizier_cs_withname.xml" votable_path = os.path.join(data_path, "data", votable_name) urlretrieve(data_sample_url + votable_name, votable_path) yield votable_path os.remove(votable_path) @pytest.fixture def path_to_withid(data_path, data_sample_url): votable_name = "vizier_cs_withid.xml" votable_path = os.path.join(data_path, "data", votable_name) urlretrieve(data_sample_url + votable_name, votable_path) yield votable_path os.remove(votable_path) @pytest.fixture def path_to_badref(data_path, data_sample_url): votable_name = "vizier_cs_badref.xml" votable_path = os.path.join(data_path, "data", votable_name) urlretrieve(data_sample_url + votable_name, votable_path) yield votable_path os.remove(votable_path) @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_with_name(path_to_withname, delt_coo): """ Test that the epoch propagation works with all FIELDs referenced by name or by ID """ m_viewer = MivotViewer(votable_path=path_to_withname, resolve_ref=True) m_viewer.next_row_view() mivot_object = m_viewer.dm_instance assert abs(mivot_object.longitude.value - 52.2340018) < delt_coo assert abs(mivot_object.latitude.value - 59.8937333) < delt_coo assert abs(mivot_object.pmLongitude.value - 1.5) < delt_coo assert abs(mivot_object.pmLatitude.value - -12.30000019) < delt_coo assert str(mivot_object.epoch.value) == '2013.418' assert str(mivot_object.coordSys.spaceRefFrame.value) == 'ICRS' m_viewer.next_row_view() assert abs(mivot_object.longitude.value - 32.2340018) < delt_coo assert abs(mivot_object.latitude.value - 49.8937333) < delt_coo assert abs(mivot_object.pmLongitude.value - 1.5) < delt_coo assert abs(mivot_object.pmLatitude.value - -12.30000019) < delt_coo assert str(mivot_object.epoch.value) == '2013.418' assert str(mivot_object.coordSys.spaceRefFrame.value) == 'ICRS' @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_with_id(path_to_withid, delt_coo): """ Test that the epoch propagation works with all FIELDs referenced by name or by ID """ # Test with all FILELDs referenced by names m_viewer = MivotViewer(votable_path=path_to_withid) m_viewer.next_row_view() mivot_instance = m_viewer.dm_instance assert abs(mivot_instance.longitude.value - 52.2340018) < delt_coo assert abs(mivot_instance.latitude.value - 59.8937333) < delt_coo assert abs(mivot_instance.pmLongitude.value - 1.5) < delt_coo assert abs(mivot_instance.pmLatitude.value - -12.30000019) < delt_coo assert str(mivot_instance.epoch.value) == '2013.418' @pytest.mark.remote_data @pytest.mark.skipif(not check_astropy_version(), reason="need astropy 6+") def test_bad_ref(path_to_badref, delt_coo): """ Test that the epoch propagation works with all FIELDs referenced by name or by ID """ # Test with all FILELDs referenced by names with (pytest.raises(MivotError, match="Attribute mango:EpochPosition.epoch can not be set.*")): MivotViewer(votable_path=path_to_badref) astropy-pyvo-f0fdda3/pyvo/mivot/utils/000077500000000000000000000000001521254414300202535ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/utils/__init__.py000066400000000000000000000000431521254414300223610ustar00rootroot00000000000000from .mivot_utils import MivotUtilsastropy-pyvo-f0fdda3/pyvo/mivot/utils/dict_utils.py000066400000000000000000000045511521254414300227750ustar00rootroot00000000000000""" Utility class to process dictionary. """ import json import logging from pyvo.mivot.utils.exceptions import MivotError from pyvo.mivot.utils.json_encoder import MivotJsonEncoder class DictUtils: """ Static class implementing convenient operations on dictionaries. """ @staticmethod def add_array_element(dictionnary, key): """ Add a [] as key element if not exist Parameters: ----------- dictionnary: dict dictionnary to be updated key: string key to be added Returns: -------- Bool True if the key element has been added """ if key not in dictionnary: dictionnary[key] = [] return True return False @staticmethod def read_dict_from_file(filename, fatal=False): """ Read a dictionary from a file and raise an exception if something goes wrong. Parameters: - filename (str): The filename. Any file that can be processed by json.load is accepted - fatal (bool): Triggers a system exit if True. Returns: - dict: The dictionary extracted from the file. Raises: - DataFormatException: If the file has an incorrect format. """ try: logging.debug("Reading json from %s", filename) from collections import OrderedDict with open(filename) as file: return json.load(file, object_pairs_hook=OrderedDict) except Exception as exception: if fatal: raise MivotError(f"reading {filename}") else: logging.error(f"{exception} reading {filename}") @staticmethod def _get_pretty_json(dictionary): """ Return a pretty string representation of the dictionary. Parameters: - dictionary (dict): The dictionary. Returns: - str: A pretty string representation of the dictionary. """ return json.dumps(dictionary, indent=2, cls=MivotJsonEncoder) @staticmethod def print_pretty_json(dictionary): """ Print out a pretty string representation of the dictionary. Parameters: - dictionary (dict): The dictionary. """ print(DictUtils._get_pretty_json(dictionary)) astropy-pyvo-f0fdda3/pyvo/mivot/utils/exceptions.py000066400000000000000000000024041521254414300230060ustar00rootroot00000000000000""" MIVOT Exceptions 3 exception classes - AstropyVersionException that prevent to use the package - MappingError if the annotation cannot be processed (e.g. no MIVOT block) but the VOtable parsing can continue - MivotError in any other case (block the processing) """ class MivotError(Exception): """ The annotation block is there but something went wrong with its processing """ class MappingError(Exception): """ Exception raised if a Resource or MIVOT element can't be mapped for one of these reasons: - It doesn't match with any Resource/MIVOT element expected. - It matches with too many Resource/MIVOT elements than expected. This exception is trapped by the Viewer so that the processing can continue by ignoring the annotations """ class NoMatchingDMTypeError(TypeError): """ Exception thrown when some PyVO code misses MIVOT element: - When trying to build a SkyCoord while there is no position in the annotations - is mapped to a model unknown to the PyVO code. This exception is never caught by the mivot package. It must be handled by the calling code. """ class AstropyVersionException(Exception): """ Exception raised if the version of astropy is not compatible with MIVOT. """ astropy-pyvo-f0fdda3/pyvo/mivot/utils/json_encoder.py000066400000000000000000000015411521254414300232760ustar00rootroot00000000000000import json import numpy class MivotJsonEncoder(json.JSONEncoder): """ Custom JSON encoder for NumPy data types. This class extends the default JSONEncoder to handle NumPy integers, floating-point numbers, and arrays during JSON encoding. """ def default(self, obj): """ Serialize NumPy data types to their Python equivalents for JSON encoding. Parameters ---------- obj : Any The object to be encoded. Returns ------- Any The serialized version of the object. """ if isinstance(obj, numpy.integer): return int(obj) elif isinstance(obj, numpy.floating): return float(obj) elif isinstance(obj, numpy.ndarray): return obj.tolist() else: return super().default(obj) astropy-pyvo-f0fdda3/pyvo/mivot/utils/mivot_utils.py000066400000000000000000000262241521254414300232110ustar00rootroot00000000000000''' Utilities handling various operations on Mivot instances ''' import numpy from pyvo.mivot.utils.exceptions import MappingError from pyvo.mivot.glossary import IvoaType, Roles, ModelPrefix class MivotUtils: """ Some utilities making easier the transformation of Mivot elements into dictionary components. These dictionaries are used to generate ``MivotInstance`` objects """ @staticmethod def _valid_mapped_dmroles(mapped_roles, class_name): """ Check that the given mapped roles of the given class, are in the `pyvo.mivot.glossary.Roles`, which reflects the model. Parameters ---------- mapped_roles: dict Dictionary of the matches between the dmroles (dict keys) and the column identifiers (dict values). This mapping is a user input. class_name: str Name of the class to which the mapping applies Returns ------- dict The dictionary of valid matches between the dmroles (dict keys) and the column identifiers (dict values). Raises ------ MappingError If the class ``class_name`` is not supported or if some mapped role does not exist for the glossary """ # Check that the class is in the glossary if not hasattr(Roles, class_name): raise MappingError(f"Unknown or unimplemented class {class_name}") # get the list of supported roles dmroles = getattr(Roles, class_name) real_mapping = [] for mapped_role, column in mapped_roles: # 'class' is a reserved word, not a role if mapped_role == "class" or isinstance(column, dict) or isinstance(column, list): continue found = False for leaf in dmroles: dmrole = f"{ModelPrefix.mango}:{class_name}.{leaf}" if dmrole.lower().endswith("." + mapped_role.lower()): real_mapping.append((dmrole, column)) found = True break if not found: raise MappingError(f"Class {ModelPrefix.mango}:{class_name} " f"has no {mapped_role} attribute." f"Supported roles are {dmroles}") return real_mapping @staticmethod def xml_to_dict(element): """ Recursively create a nested dictionary from the XML tree structure, preserving the hierarchy. The processing of elements depends on the tag: - For INSTANCE, a new dictionary is created. - For COLLECTION, a list is created. - For ATTRIBUTE, a leaf structure is created in the tree structure with dmtype, dmrole, value, unit, and ref keys. Parameters ---------- element : `xml.etree.ElementTree.Element` The XML element to convert to a dictionary Returns ------- dict The nested dictionary representing the XML tree structure. """ dict_result = {} for key, value in element.attrib.items(): dict_result[key] = value for child in element: dmrole = child.get("dmrole") if child.tag == "ATTRIBUTE": dict_result[dmrole] = MivotUtils._attribute_to_dict(child) elif child.tag == "INSTANCE": # INSTANCE is recursively well managed by the function _to_dict dict_result[dmrole] = MivotUtils.xml_to_dict(child) elif child.tag == "COLLECTION": dict_result[dmrole] = MivotUtils._collection_to_dict(child) return dict_result @staticmethod def _attribute_to_dict(child): """ Convert an ATTRIBUTE (XML) element to a dictionary. ATTRIBUTE being always a leaf, the conversion is not recursive. Parameters ---------- child : `xml.etree.ElementTree.Element` ATTRIBUTE XML element to convert. Returns ------- dict: A dictionary representing the ATTRIBUTE element with keys: 'dmtype', 'dmrole', 'value', 'unit', and 'ref'. """ attribute = {} if child.get("dmtype") is not None: attribute["dmtype"] = child.get("dmtype") if child.get("value") is not None: attribute["value"] = MivotUtils.cast_type_value(child.get("value"), child.get("dmtype")) else: attribute["value"] = None if child.get("unit") is not None: attribute["unit"] = child.get("unit") else: attribute["unit"] = None if child.get("ref") is not None: attribute["ref"] = child.get("ref") else: attribute["ref"] = None return attribute @staticmethod def _collection_to_dict(child): """ Convert a COLLECTION element (child) to a list of dictionaries. Parameters ---------- child : `xml.etree.ElementTree.Element` COLLECTION XML element to convert Returns ------- list({}) list of dictionaries representing the COLLECTION items """ collection_items = [] for child_coll in child: collection_items.append(MivotUtils.xml_to_dict(child_coll)) return collection_items @staticmethod def cast_type_value(value, dmtype): """ Cast value to the Python type matching dmtype. Parameters ---------- value : str value to cast dmtype : str model dmtype Returns ------- Union[bool, float, str, None] The casted value or None """ lower_dmtype = dmtype.lower() # empty strings cannot be casted if "string" not in lower_dmtype and value == "": return None if numpy.issubdtype(type(value), numpy.floating): return float(value) if isinstance(value, str): lower_value = value.lower() else: lower_value = value if "bool" in lower_dmtype: if value == "1" or lower_value == "true" or lower_value: return True else: return False elif lower_value in ('notset', 'noset', 'null', 'none', 'nan') or value is None: return None elif (isinstance(value, numpy.ndarray) or isinstance(value, numpy.ma.core.MaskedConstant) or value == '--'): return None elif "real" in lower_dmtype or "double" in lower_dmtype or "float" in lower_dmtype: return float(value) else: return value @staticmethod def format_dmid(dmid): """ Replace characters that could confuse XPath queries with '_'. This is not required by the MIVOT schema but this makes this API more robust Returns ------- str formatted dmid """ if dmid is not None: return dmid.replace("/", "_").replace(".", "_").replace("-", "_") return "" @staticmethod def get_field_attributes(table, column_id): """ Parameters ---------- table : astropy.table Table (from parsed VOTable) of the mapped data column_id : str Identifier of the table column from which we want to get the unit Returns ------- unit, ref, literal """ ref, literal = MivotUtils.get_ref_or_literal(column_id) if literal: return None, None, literal else: try: field = table.get_field_by_id_or_name(ref) return str(field.unit), column_id, None except KeyError as keyerror: raise MappingError(f"Cannot find any field identified by {column_id}") from keyerror @staticmethod def get_ref_or_literal(value_or_ref): """ Check if value_or_ref must be interpreted as a column reference or a literal. Returns ------- (ref, literal) """ if not value_or_ref: raise MappingError("An attribute cannot be set with a None value") elif isinstance(value_or_ref, str): return ((None, value_or_ref.replace("*", "")) if value_or_ref.startswith("*") else (value_or_ref, None)) else: return (None, value_or_ref) @staticmethod def as_literal(identifier): """ Make sure the identifier will be interpreted as a literal (* prefix). Literal are either non string values or strings starting with a * Parameters ---------- identifier: str column identifier or literal value Returns ------- str identifier prefixes with a * """ if isinstance(identifier, str) and not identifier.startswith("*"): return "*" + identifier return identifier @staticmethod def populate_instance(property_instance, class_name, mapping, table, dmtype, as_literals=False, package=None): """ This function inserts in the property_instance all expected attributes. - The structure of the class is supposed to be flat (only ATTRIBUTEs). - All attributes are meant to have the same dmtype. - The mapping is checked against the `pyvo.mivot.glossary.Roles`. Parameters ---------- property_instance : `pyvo.mivot.writer.instance.MivotInstance` Mivot instance to populate with attributes class_name : str Name of the property_instance class (dmtype). Used to get all the attribute roles (given by the model) of the class mapping : dict Dictionary associating model roles with their values. table : astropy.table Table (from parsed VOTable) of the mapped data dmtype : string common dmtype of object attributes as_literal : boolean, optional (default isTrue) If True, all attribute are set with literal values (@value="...") package : str, optional (default as None) Package name possibly prefixing dmroles """ mapped_roles = MivotUtils._valid_mapped_dmroles(mapping.items(), class_name) pkg = f"{package}." if package else "" for dmrole, column in mapped_roles: # minimal reserved characters escaping if isinstance(column, str): column = column.replace("&", "&") # force column references to be processed as literals if requested if as_literals: column = MivotUtils.as_literal(column) unit, _, _ = MivotUtils.get_field_attributes(table, column) if isinstance(column, bool): r_dmtype = IvoaType.bool else: r_dmtype = dmtype r_dmrole = dmrole.replace(":", f":{pkg}") property_instance.add_attribute(dmtype=r_dmtype, dmrole=r_dmrole, value=column, unit=unit) astropy-pyvo-f0fdda3/pyvo/mivot/utils/vocabulary.py000066400000000000000000000031531521254414300227760ustar00rootroot00000000000000""" MIVOT vocabulary and regular expressions. """ import re from astropy import units as u from pyvo.utils import prototype_feature class Constant: """ Class used to set constant to identify XML attributes added to the MIVOT ATTRIBUTES """ FIRST_TABLE = "first_table" FIELD_UNIT = "field_unit" COL_INDEX = "col_index" NOT_SET = "NotSet" ANONYMOUS_TABLE = "AnonymousTable" # Regexp pattern to check no valid mapping is present NoMapping = re.compile(r".REPORT\s+status=['\"]KO") unit_mapping = { "deg": u.degree, "rad": u.radian, "hourangle": u.hourangle, "arcsec": u.arcsec, "mas": u.mas, "pc": u.pc, "km": u.km, "m": u.m, "mas/yr": u.mas / u.yr, "mas/y": u.mas / u.yr, "km/s": u.km / u.s, } @prototype_feature('MIVOT') class Ele: """ Constant used to identify MIVOT Element """ namespace = "" VODML = namespace + "VODML" MODEL = namespace + "MODEL" GLOBALS = namespace + "GLOBALS" TEMPLATES = namespace + "TEMPLATES" INSTANCE = namespace + "INSTANCE" ATTRIBUTE = namespace + "ATTRIBUTE" COLLECTION = namespace + "COLLECTION" JOIN = namespace + "JOIN" REFERENCE = namespace + "REFERENCE" WHERE = namespace + "WHERE" NOROLE = "NOROLE" @prototype_feature('MIVOT') class Att: """ Constant used to identify attributes in MIVOT Element """ dmrole = "dmrole" dmtype = "dmtype" dmid = "dmid" name = "name" value = "value" dmref = "dmref" tableref = "tableref" sourceref = "sourceref" ref = "ref" primarykey = "PRIMARY_KEY" foreignkey = "foreignkey" astropy-pyvo-f0fdda3/pyvo/mivot/utils/xml_utils.py000066400000000000000000000121551521254414300226510ustar00rootroot00000000000000""" Utility class to process XML. """ import re from pyvo.mivot.utils.xpath_utils import XPath import xml.etree.ElementTree as ET from xml.dom import minidom from pyvo.mivot.utils.vocabulary import Constant from pyvo.mivot.utils.vocabulary import Att from pyvo.mivot.utils.exceptions import MivotError class XmlUtils: """ Static class implementing convenient operations on XML """ @staticmethod def pretty_print(xmltree, *, lshift=""): """ Pretty print an XML tree Parameters ---------- xmltree: (~`xml.etree.ElementTree.Element`) XML tree to pretty print lshift : str, optional, default "" Sequence to be inserted at the beginning of each line Usually a space sequence """ print(XmlUtils.pretty_string(xmltree, lshift=lshift)) @staticmethod def pretty_string(xmltree, *, lshift="", clean_namespace=True): """ Return a pretty string representation of an XML tree (as Etree or string) Parameters ---------- xmltree (~`xml.etree.ElementTree.Element`) or string: XML tree to convert to a pretty string lshift : str, optional, default "" Sequence to be inserted at the beginning of each line Usually a space sequence clean_namespace : boolean, optional, default True Default namespace (ns0) removed from element names if True Returns ------- str: The pretty string representation of the XML tree. """ if isinstance(xmltree, str): root = xmltree else: if hasattr(xmltree, 'getroot'): root = ET.tostring(xmltree.getroot(), encoding='unicode') else: root = ET.tostring(xmltree, encoding='unicode') root = root.replace("\n", "") reparsed = minidom.parseString(root) pretty_string = re.sub(r" +\n", "", reparsed.toprettyxml(indent=" ")) pretty_string = pretty_string.replace("\n", "") \ .replace("\n\n", "\n") \ .replace("<", f"{lshift}<") if clean_namespace: return pretty_string.replace("ns0:", "") else: return pretty_string @staticmethod def strip_xml(xml_string): """ Strip unnecessary whitespace and newline characters from an XML string. Used by unit tests to compare xml strings Parameters: - xml_string (str): The XML string to strip. Returns: - str: The stripped XML string. """ return ( xml_string.replace("\n", "").replace(" ", "").replace("'", "").replace('"', "") ) @staticmethod def add_column_indices(mapping_block, index_map): """ Add column ranks to attributes having a ref. Using ranks allows identifying columns even when NumPy arrays have been serialized as []. Parameters ---------- mapping_block : ~`xml.etree.ElementTree.Element` The XML mapping block. index_map : dict A dictionary mapping ref values to column indices. """ for ele in XPath.x_path(mapping_block, ".//ATTRIBUTE"): attr_ref = ele.get(Att.ref) if attr_ref is not None and attr_ref != Constant.NOT_SET: field_desc = None if attr_ref in index_map: field_desc = index_map[attr_ref] else: for _, value in index_map.items(): if value["ID"] == attr_ref: field_desc = value break if not field_desc: if not ele.get(Att.value): raise MivotError( f"Attribute {ele.get(Att.dmrole)} can not be set:" f" references a non existing column: {attr_ref} " f"and has no default value") else: ele.attrib.pop(Att.ref, None) if field_desc: ele.attrib[Constant.COL_INDEX] = str(field_desc["indx"]) if field_desc["ID"] != attr_ref: ele.set(Att.ref, field_desc["ID"]) @staticmethod def add_column_units(mapping_block, unit_map): """ Add field units to attributes having a ref. Used for performing unit conversions. Parameters ---------- mapping_block : ~`xml.etree.ElementTree.Element` The XML mapping block. unit_map : dict A dictionary mapping ref values to units. """ for ele in XPath.x_path(mapping_block, ".//ATTRIBUTE"): ref = ele.get(Att.ref) if ref is not None and ref != Constant.NOT_SET: unit = None if ref in unit_map: unit = unit_map[ref].__str__() else: unit = "" ele.attrib[Constant.FIELD_UNIT] = unit astropy-pyvo-f0fdda3/pyvo/mivot/utils/xpath_utils.py000066400000000000000000000064121521254414300231740ustar00rootroot00000000000000""" Utility class performing XPath queries on XML trees. """ class XPath: """ Static class use to perform XPath queries on XML trees. """ @staticmethod def x_path(etree, path): """ Return all the elements of the XML tree that match the given XPath query. Parameters ---------- etree : ~`xml.etree.ElementTree.Element` The XML tree to query. path : str The XPath query to perform. Returns ------- list The list of all the elements of the XML tree that match the given XPath query. """ return etree.findall(path) @staticmethod def x_path_contains(etree, path, key, value): """ Return all the elements of the XML tree that match the given XPath query with a given attribute containing a given value. Example of a path: ".//INSTANCE[contains(@dmtype,'dmtype_pattern')]" Parameters ---------- etree : ~`xml.etree.ElementTree.Element` The XML tree to query. path : str The XPath query to perform. key : str The attribute to look for. value : str The value to look for. Returns ------- list The list of all the elements of the XML tree that match the given XPath query with a given attribute containing a given value. """ result = [] xset = etree.findall(path) for ele in xset: if value in ele.get(key): result.append(ele) return result @staticmethod def x_path_startwith(etree, path): """ Return all the elements of the XML tree that match the given XPath query with a given Tag starting with a given value. Example of a path: ".//*[starts-with(name(), 'REFERENCE_')]" This function is only used in the static reference resolver to find all the REFERENCEs and JOINs. It adds a counter to the path to find all the REFERENCEs and JOINs. Parameters ---------- etree : `xml.etree.ElementTree.Element` The XML tree to query. path : str The XPath query to perform. Returns ------- list The list of all the elements of the XML tree that match the given XPath query. """ return {elem for elem in etree.iter() if elem.tag.startswith("REFERENCE_")} @staticmethod def select_elements_by_atttribute(etree, element, attribute, attribute_value): """ Select all xml elements named 'element' having @attribute=attribute_value Parameters ---------- etree : `xml.etree.ElementTree.Element` The XML tree to query. element: str name of the searched elements attribute: str name of the element attribute used for the selection attribute_value: str attribute value of the selected elements Returns ------- list The list of all the elements of the XML tree that match the given XPath query. """ return XPath.x_path(etree, f'.//{element}[@{attribute}="{attribute_value}"]' ) astropy-pyvo-f0fdda3/pyvo/mivot/version_checker.py000066400000000000000000000006621521254414300226420ustar00rootroot00000000000000from astropy import version as astropy_version def check_astropy_version(): """ Check if the installed version of astropy is compatible with MIVOT. """ if not astropy_version.version: return False if astropy_version.version < "6.0": print(f"Astropy version {astropy_version.version} is below " f"the required version 6.0 for the use of MIVOT.") return False return True astropy-pyvo-f0fdda3/pyvo/mivot/viewer/000077500000000000000000000000001521254414300204145ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/viewer/__init__.py000066400000000000000000000002201521254414300225170ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .mivot_instance import MivotInstance from .mivot_viewer import MivotViewer astropy-pyvo-f0fdda3/pyvo/mivot/viewer/mivot_instance.py000066400000000000000000000214271521254414300240160ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ MivotInstance is the root of the Python generated classes. Instances of MivotInstance are built from a dictionary issued from the XML view of the mapped model. This dictionary is used to extend the object with all components (classes, attributes, collections) necessary to reproduce the structure of the mapped model. Instances of this class are built by `pyvo.mivot.viewer.mivot_viewer`. Although attribute values can be changed by users, this class is first meant to provide a convenient access the mapped VOTable data """ from pyvo.utils.prototype import prototype_feature from pyvo.mivot.utils.mivot_utils import MivotUtils from pyvo.mivot.utils.dict_utils import DictUtils from pyvo.mivot.features.sky_coord_builder import SkyCoordBuilder # list of model leaf parameters that must be hidden for the final user hk_parameters = ["ref"] @prototype_feature('MIVOT') class MivotInstance: """ MivotInstance holds the dictionary (__dict__) similar with the mapped model structure where the references have been resolved. The dictionary keeps the hierarchy of the XML : "key" : {not a leaf} means key is the dmtype of an INSTANCE "key" : {leaf} means key is the dmrole of an ATTRIBUTE "key" : "value" means key is an element of ATTRIBUTE "key" : [] means key is the dmtype of a COLLECTION """ def __init__(self, **instance_dict): """ Constructor of the MIVOT class. Parameters ---------- kwargs (dict): Dictionary of the XML object. """ self._create_class(**instance_dict) def __getattr__(self, item): """ Return None for any attribute that does not exist in the class, except for the attributes that start with "_" which correspond to internal class attributes. This allows to avoid AttributeError when accessing non existing attributes. """ if item.startswith("_"): super().__getattr__(item) return None def __str__(self): """ return a human readable representation of object """ return f"" def __repr__(self): """ return a human readable (json) unambigous representation of object """ return DictUtils._get_pretty_json(self.to_dict()) def to_hk_dict(self): """ return a human readable (dict) representation of object with a few housekeeping data such as column references. This might be used to apply the mapping out of the MivotViewer context """ return self._get_class_dict(self, slim=False) def to_dict(self): """ return a human readable (dict) representation of object """ return self._get_class_dict(self, slim=True) def _create_class(self, **kwargs): """ Recursively initialize the MIVOT class with the dictionary of the XML object got in MivotViewer. For the unit of the ATTRIBUTE, we add the Astropy unit or the Astropy time equivalence by comparing the value of the unit with values in time.TIME_FORMATS.keys() which is the list of time formats. We do the same with the unit_mapping dictionary, which is the list of Astropy units. Parameters ---------- kwargs (dict): Dictionary of the XML object. """ for key, value in kwargs.items(): if isinstance(value, list): # COLLECTION setattr(self, self._remove_model_name(key), []) for item in value: getattr(self, self._remove_model_name(key)).append(MivotInstance(**item)) elif isinstance(value, dict): # INSTANCE if not self._is_leaf(**value): setattr(self, self._remove_model_name(key), MivotInstance(**value)) if self._is_leaf(**value): setattr(self, self._remove_model_name(key), MivotInstance(**value)) else: # ATTRIBUTE if key == 'value': # We cast the value read in the row setattr(self, self._remove_model_name(key), MivotUtils.cast_type_value(value, getattr(self, 'dmtype'))) else: setattr(self, self._remove_model_name(key), value) def update(self, row, ref=None): """ Update the MIVOT class with the new data row. For each leaf of the MIVOT class, we update the value with the new data row. Parameters ---------- row (astropy.table.row.Row): The new data row. ref (str, optional):The reference of the data row, default is None. """ for key, value in vars(self).items(): if isinstance(value, list): for item in value: item.update(row=row) elif isinstance(value, MivotInstance): if isinstance(vars(value), dict): if 'value' not in vars(value): value.update(row=row) if 'ref' in vars(value): value.update(row=row, ref=getattr(value, 'ref')) else: if key == 'value' and ref is not None and ref != 'null': setattr(self, self._remove_model_name(key), MivotUtils.cast_type_value(row[ref], getattr(self, 'dmtype'))) def get_SkyCoord(self): """ returns ------- - a SkyCoord instance or None """ return SkyCoordBuilder(self).build_sky_coord() @staticmethod def _remove_model_name(value): """ Return the last element of a model path built like model:a.b.c Parameters ---------- value (str): The string to process. """ if value: next_index_underscore = value.rfind(".") return value[next_index_underscore + 1:] return value def _is_leaf(self, **kwargs): """ Check if the dictionary is an ATTRIBUTE. Parameters ---------- **kwargs (dict): The dictionary to check. Returns ------- bool: True if the dictionary is an ATTRIBUTE, False otherwise. """ if isinstance(kwargs, dict): for _, value in kwargs.items(): if isinstance(value, dict): return False return True def _get_class_dict(self, obj, classkey=None, slim=False, with_dmtypes=True): """ Recursively displays a serializable dictionary. This function is only used for debugging purposes. Parameters ---------- obj (dict or object): The dictionary or object to display. classkey (str, optional): The key to use for the object's class name in the dictionary, default is None. slim (bool, optional): if true, only @values and @units (if not empty) are attached to model leaves. @dmtype and @ref attributes are ignored with_dmtypes (boolean, optional) : if true dmtypes are added to the primitive types (model leaves) Returns ------- dict or object The serializable dictionary representation of the input. """ # This case is likely not to occur because MIVOT does not support dictionaries if isinstance(obj, dict): data = {} for (k, v) in obj.items(): data[k] = self._get_class_dict(v, classkey, slim=slim) return data elif hasattr(obj, "_ast"): return self._get_class_dict(obj._ast()) elif hasattr(obj, "__iter__") and not isinstance(obj, str): return [self._get_class_dict(v, classkey, slim=slim) for v in obj] elif hasattr(obj, "__dict__"): data = {key: obj._get_class_dict(value, classkey, slim=slim) for key, value in obj.__dict__.items() if not callable(value) and not key.startswith('_')} # remove the house keeping parameters if slim is True: # data is atomic value (e.g. float): the type be hidden if with_dmtypes is False and ("ref" in data or "value" in data): data.pop("dmtype", None) # remove unit when not set if "unit" in data and not data["unit"]: data.pop("unit", None) for hk_parameter in hk_parameters: data.pop(hk_parameter, None) if classkey is not None and hasattr(obj, "__class__"): data[classkey] = obj.__class__.__name__ return data else: return obj astropy-pyvo-f0fdda3/pyvo/mivot/viewer/mivot_viewer.py000066400000000000000000000451301521254414300235100ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ MivotViewer implements the user API for accessing mapped data. - extracts the annotation block from the VOTable - builds an XML view of the mapped model - updates the leaves of the XML view with the values read in the data rows - builds Python instances providing access to the mapped values by object attributes. The code below shows a typical use of `MivotViewer .. code-block:: python with MivotViewer(path_to_votable) as mivot_viewer: print(f"mapped class id {mivot_instance.dmtype}") print(f"space frame is {mivot_instance.Coordinate_coordSys.spaceRefFrame.value}") mivot_object = mivot_viewer.dm_instance while mivot_viewer.next_row_view(): print(f"latitude={mivot_object.latitude.value}") print(f"longitude={mivot_object.longitude.value}") See `tests/test_user_api.py`to get different examples of the API usage. """ import logging from copy import deepcopy from astropy import version from astropy.io.votable import parse from astropy.io.votable.tree import VOTableFile from pyvo.dal import DALResults from pyvo.mivot.utils.vocabulary import Ele, Att from pyvo.mivot.utils.vocabulary import Constant, NoMapping from pyvo.mivot.utils.exceptions import (MappingError, MivotError, AstropyVersionException) from pyvo.mivot.utils.xml_utils import XmlUtils from pyvo.mivot.utils.xpath_utils import XPath from pyvo.mivot.seekers.annotation_seeker import AnnotationSeeker from pyvo.mivot.seekers.resource_seeker import ResourceSeeker from pyvo.mivot.seekers.table_iterator import TableIterator from pyvo.mivot.features.static_reference_resolver import StaticReferenceResolver from pyvo.mivot.version_checker import check_astropy_version from pyvo.mivot.viewer.mivot_instance import MivotInstance from pyvo.utils.prototype import prototype_feature from pyvo.mivot.utils.mivot_utils import MivotUtils # Use defusedxml only if already present in order to avoid a new depency. try: from defusedxml import ElementTree as etree except ImportError: from xml.etree import ElementTree as etree @prototype_feature('MIVOT') class MivotViewer: """ MivotViewer is a PyVO table wrapper aiming at providing a model view on VOTable data read with usual tools. """ def __init__(self, votable_path, tableref=None, resolve_ref=False): """ Constructor of the MivotViewer class. Parameters ---------- votable_path : str, DALResults, VOTableFile Reference of the VOTable from which Astropy will extracts the annotation block tableref : str, optional Used to identify the table to process. If not specified, the first table is taken by default. resolve_ref : boolean Ask for references between MIVOT instances to be resolved (referenced instances are copied into the host object). This is usually used to copy the coordinates systems into the object that uses them. Parameters ---------- resolve_ref : bool, optional If True, replace the REFERENCE elements with a copy of the objects they refer to. e.g. copy the space coordinates system, usually located in the GLOBALS block, in the position objects Default is False. """ if not check_astropy_version(): raise AstropyVersionException(f"Astropy version {version.version} " f"is below the required version 6.0 for the use of MIVOT.") if isinstance(votable_path, DALResults): self._parsed_votable = votable_path.votable elif isinstance(votable_path, VOTableFile): self._parsed_votable = votable_path else: self._parsed_votable = parse(votable_path) self._table_iterator = None self._connected_table = None self._connected_tableref = None self._current_data_row = None # when the search object is in GLOBALS self._globals_instance = None self._last_row = None self._templates = None self._resource = None self._annotation_seeker = None self._mapping_block = None self._mapped_tables = [] self._resource_seeker = None self._dm_instances = [] self._dm_globals_instances = [] self._resolve_ref = resolve_ref try: self._set_resource() self._set_mapping_block() self._resource_seeker = ResourceSeeker(self._resource) self._set_mapped_tables() self._connect_table(tableref) self._init_instances() self._init_globals_instances() except MappingError as mnf: logging.error(str(mnf)) def __enter__(self): """ with statement implementation """ return self def __exit__(self, exc_type, exc_value, traceback): """ with statement implementation """ logging.info("MivotViewer closing..") def close(self): """ with statement implementation """ logging.info("MivotViewer is closed") @property def votable(self): """ returns the Astropy parsed votable """ return self._parsed_votable @property def annotation_seeker(self): """ Return an API to search various components in the XML mapping block. """ return self._annotation_seeker @property def resource_seeker(self): """ Return an API to search various components in the VOTabel resource. """ return self._resource_seeker @property def connected_table(self): """ getter for the identifier the astropy.table instance the viewer is connected to """ return self._connected_table @property def connected_table_ref(self): """ getter for the identifier the table the viewer is connected to """ return self._connected_tableref @property def dm_instance(self): """ returns ------- MivotInstance: The Python object (MivotInstance) built from the XML view of the first 'TEMPLATES' child, with the attribute values set according to the values of the current read data row. """ dm_instances = self._dm_instances return self.dm_instances[0] if dm_instances else None @property def dm_instances(self): """ Returns ------- [MivotInstance]: The list of Python objects (MivotInstance) built from the XML views of the TEMPLATES children, whose attribute values are set from the values of the current read data row. """ return self._dm_instances @property def dm_globals_instances(self): """ Returns ------- [MivotInstance]: The list of Python objects (MivotInstance) built from the XML views of the GLOBALS children, whose attribute values are set from the values of the current read data row. This method allows to retrieve the GLOBALS (coordinates systems usually) even when the viewer is in ``resolve_ref=False`` mode or if the reference to the coordinates systems have not been setup in the objects representing the mapped data. """ return self._dm_globals_instances @property def table_row(self): """ getter for the current astropy.table.array row """ return self._current_data_row def next_row_view(self): """ jump to the next table row and update the MivotInstance instance with the row values Returns ------- [MivotInstance] List of updated instances or None it he able end has been reached """ self.next_table_row() if self._current_data_row is None: return None self._init_instances() for dm_instance in self._dm_instances: dm_instance.update(self._current_data_row) return self._dm_instances def get_table_ids(self): """ Return a list of the table located just below self._resource. """ if self.resource_seeker is None: return None return self.resource_seeker.get_table_ids() def get_models(self): """ Get a dictionary of models and their URLs. Returns ------- dict: Model names and a lists of their URLs. The format is {'model': [url], ...}. """ if self._annotation_seeker is None: return None return self._annotation_seeker.get_models() def next_table_row(self): """ Iterate once on the table row Returns: numpy row: the current table row of None if the end of the table has been reached """ if self._table_iterator is None: return None self._current_data_row = self._table_iterator.get_next_row() return self._current_data_row def rewind(self): """ Rewind the table iterator on the table the veizer is connected with. """ if self._table_iterator: self._table_iterator.rewind() def _get_templates_child_instances(self, tableref=None): """ Returns ------- [`xml.etree.ElementTree.Element`] List of all INSTANCES elements children of the current TEMPLATES block """ if self._annotation_seeker is None: return None templates_block = self._annotation_seeker.get_templates_block(tableref) return XPath.x_path(templates_block, ".//" + Ele.INSTANCE) def get_dm_instance_dmtypes(self, tableref): """ Return the dmtypes of the INSTANCEs children of the TEMPLATES block mapping the data table identified by tableref. Parameters ---------- tableref : str or None Identifier of the data table. Returns ------- [string] list of dmtypes Raises ------ MivotError if no INSTANCE can be found """ dmtypes = [] templates_block = self._annotation_seeker.get_templates_block(tableref) instances = XPath.x_path(templates_block, ".//" + Ele.INSTANCE) for instance in instances: dmtypes.append(instance.get(Att.dmtype)) if not dmtypes: raise MivotError("Can't find " + Ele.INSTANCE + " in " + Ele.TEMPLATES) return dmtypes def _connect_table(self, tableref=None): """ Iterate over the table identified by tableref. Required to browse table data. Connect to the first table if tableref is None. Parameters ---------- tableref : str or None, optional Identifier of the table. If None, connects to the first table. """ if not self._resource_seeker: raise MappingError("No mapping block found") stableref = tableref if tableref is None: stableref = "" self._connected_tableref = Constant.FIRST_TABLE logging.debug("Since " + Ele.TEMPLATES + "@table_ref is None, " "the mapping will be applied to the first table." ) elif tableref not in self._mapped_tables: raise MappingError(f"The table {self._connected_tableref} doesn't match with any " f"mapped_table ({self._mapped_tables}) encountered in " + Ele.TEMPLATES ) else: self._connected_tableref = tableref self._connected_table = self._resource_seeker.get_table(tableref) if self.connected_table is None: raise MivotError(f"Cannot find table {stableref} in VOTable") logging.debug("table %s found in VOTable", stableref) self._templates = deepcopy(self.annotation_seeker.get_templates_block(tableref)) if self._templates is None: raise MivotError("Cannot find " + Ele.TEMPLATES + f" {stableref} ") logging.debug(Ele.TEMPLATES + " %s found ", stableref) self._table_iterator = TableIterator(self._connected_tableref, self.connected_table.to_table()) self._squash_join_and_references() self._set_column_indices() self._set_column_units() def _get_model_view(self, xml_instance): """ Return an XML model view of the last read row. - References are possibly resolved here. - ``ATTRIBUTE@value`` are set with actual data row values Returns ------- `xml.etree.ElementTree.Element` XML model view of the last read row. """ templates_copy = deepcopy(xml_instance) if self._resolve_ref is True: while StaticReferenceResolver.resolve(self._annotation_seeker, self._connected_tableref, templates_copy) > 0: pass # Make sure the instances of the resolved references # have both indexes and unit attribute XmlUtils.add_column_indices(templates_copy, self._resource_seeker .get_id_index_mapping(self._connected_tableref)) XmlUtils.add_column_units(templates_copy, self._resource_seeker .get_id_unit_mapping(self._connected_tableref)) for ele in XPath.x_path(templates_copy, ".//ATTRIBUTE"): ref = ele.get(Att.ref) if ref is not None and ref != Constant.NOT_SET and Constant.COL_INDEX in ele.attrib: index = ele.attrib[Constant.COL_INDEX] ele.attrib[Att.value] = str(self._current_data_row[int(index)]) return templates_copy def _init_instances(self): """ Read the first table row and build all MivotInstances (_dm_instances attribute) from it. The table row iterator in rewind at the end to make sure we won't lost the first data row. """ if not self._dm_instances: self.next_table_row() xml_instances = self._get_templates_child_instances(self.connected_table_ref) self._dm_instances = [] for xml_instance in xml_instances: self._dm_instances.append( MivotInstance( **MivotUtils.xml_to_dict(self._get_model_view(xml_instance)) )) self.rewind() def _init_globals_instances(self): """ Build one MivotInstance for each GLOBALS/INSTANCE. Internal references are always resolved Globals MivotInstance are stored in the _dm_globals_instances list """ if not self._dm_globals_instances: globals_copy = deepcopy(self._annotation_seeker.globals_block) while StaticReferenceResolver.resolve(self._annotation_seeker, None, globals_copy) > 0: pass for ele in XPath.x_path(globals_copy, "./" + Ele.INSTANCE): self._dm_globals_instances.append( MivotInstance( **MivotUtils.xml_to_dict(ele) )) def _set_mapped_tables(self): """ Set the _mapped_tables list with the TEMPLATES tablerefs. """ if not self.resource_seeker: self._mapped_tables = [] else: self._mapped_tables = self._annotation_seeker.get_templates() def _set_resource(self): """ select the first resource with @type=results The annotations, if there are, are supposed to be there. The case of multiple 'results' annotated is not taken into account yest """ if len(self._parsed_votable.resources) < 1: raise MivotError("No resource detected in the VOTable") rnb = 0 for res in self._parsed_votable.resources: if res.type.lower() == "results": logging.info("Resource %s selected", rnb) self._resource = self._parsed_votable.resources[rnb] return rnb += 1 raise MivotError("No resource @type='results'detected in the VOTable") def _set_mapping_block(self): """ Set the mapping block found in the resource and set the annotation_seeker """ if NoMapping.search(self._resource.mivot_block.content): raise MappingError("Mivot block is not found") # The namespace should be removed self._mapping_block = ( etree.fromstring(self._resource.mivot_block.content .replace('xmlns="http://www.ivoa.net/xml/mivot"', '') .replace("xmlns='http://www.ivoa.net/xml/mivot'", ''))) self._annotation_seeker = AnnotationSeeker(self._mapping_block) logging.info("Mapping block found") def _squash_join_and_references(self): """ Remove both JOINs and REFERENCEs from the templates and store them in to be resolved later on. This prevents the model view of being polluted with elements that are not in the model """ for ele in XPath.x_path_startwith(self._templates, ".//REFERENCE_"): if ele.get("sourceref") is not None: self._dyn_references = {ele.tag: deepcopy(ele)} for child in list(ele): ele.remove(child) for ele in XPath.x_path_startwith(self._templates, ".//JOIN_"): self._joins = {ele.tag: deepcopy(ele)} for child in list(ele): ele.remove(child) def _set_column_indices(self): """ Add column ranks to attribute having a ref. Using ranks allow identifying columns even when numpy raw have been serialised as [] """ index_map = self._resource_seeker.get_id_index_mapping(self._connected_tableref) XmlUtils.add_column_indices(self._templates, index_map) def _set_column_units(self): """ Add field unit to attribute having a ref. Used for performing unit conversions """ unit_map = self._resource_seeker.get_id_unit_mapping(self._connected_tableref) XmlUtils.add_column_units(self._templates, unit_map) astropy-pyvo-f0fdda3/pyvo/mivot/writer/000077500000000000000000000000001521254414300204275ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/mivot/writer/__init__.py000066400000000000000000000004351521254414300225420ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .annotations import MivotAnnotations from .instance import MivotInstance from .instances_from_models import InstancesFromModels from .header_mapper import HeaderMapper from .mango_object import MangoObject, Property astropy-pyvo-f0fdda3/pyvo/mivot/writer/annotations.py000066400000000000000000000303001521254414300233320ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ MivotAnnotations: A utility module to build and manage MIVOT annotations. """ import os import logging try: import xmlschema except ImportError: xmlschema = None # Use defusedxml only if already present in order to avoid a new dependency. try: from defusedxml import ElementTree as etree except ImportError: from xml.etree import ElementTree as etree from astropy.io.votable.tree import VOTableFile, Resource try: from astropy.io.votable.tree import MivotBlock except ImportError: pass from astropy.io.votable import parse from astropy import version from pyvo.utils.prototype import prototype_feature from pyvo.mivot.utils.xml_utils import XmlUtils from pyvo.mivot.utils.exceptions import MappingError, AstropyVersionException from pyvo.mivot.writer.instance import MivotInstance from pyvo.mivot.version_checker import check_astropy_version __all__ = ["MivotAnnotations"] @prototype_feature("MIVOT") class MivotAnnotations: """ This module provides a class to construct, validate, and insert MIVOT blocks into VOTable files. The MIVOT block, represented as an XML structure, is used for data model annotations in the IVOA ecosystem. The main features are: - Construct the MIVOT block step-by-step with various components. - Validate the MIVOT block against the MIVOT XML schema (if ``xmlschema`` is installed). - Embed the MIVOT block into an existing VOTable file. The MIVOT block is constructed as a string to maintain compatibility with the Astropy API. Attributes ---------- suggested_space_frames: string array, class attribute A warning is emitted if a frame not in this list is used to build a space frame. This list matches https://www.ivoa.net/rdf/refframe/2022-02-22/refframe.html. suggested_ref_positions: string array, class attribute A warning is emitted if a reference position not in this list is used to build a space or a time frame. suggested_time_frames: string array, class attribute A warning is emitted if a frame not in this list is used to build a space frame. This list matches https://www.ivoa.net/rdf/timescale/2019-03-15/timescale.html. """ def __init__(self): """ """ # Dictionary containing models with their names as keys and URLs as values self._models = {} # str: Indicates the success status of the annotation process.s self._report_status = True # str: message associated with the report, used in the REPORT block. self._report_message = "Generated by pyvo.mivot.writer" # list(str or MivotInstance): GLOBALS blocks to be included in the MIVOT block. self._globals = [] # list(str or MivotInstance): TEMPLATES blocks to be included in the MIVOT block. self._templates = [] # str: An optional ID for the TEMPLATES block. self._templates_id = "" # str: list of the dmid of the INSTANCE stored in the GLOBALS self._dmids = [] # str: Complete MIVOT block as a string self._mivot_block = "" @property def mivot_block(self): """ Getter for the whole MIVOT block. Returns ------- str Complete MIVOT block as a string. """ return self._mivot_block def _get_report(self): """ Generate the component of the MIVOT block. Returns ------- str The block as a string, indicating the success or failure of the process. """ if self._report_status: return f'{self._report_message}' else: return f'{self._report_message}' def _get_models(self): """ Generate the components of the MIVOT block. Returns ------- str The components as a formatted string. """ models_block = "" for key, value in self._models.items(): if value: models_block += f'\n' else: models_block += f'\n' return models_block def _get_globals(self): """ Generate the component of the MIVOT block. Returns ------- str The block as a formatted string. """ globals_block = "\n" for glob in self._globals: globals_block += f"{glob}\n" globals_block += "\n" return globals_block def _get_templates(self): """ Generate the component of the MIVOT block. Returns ------- str The block as a formatted string, or an empty string if no templates are defined. """ if not self._templates: return "" if not self._templates_id: templates_block = "\n" else: templates_block = f'\n' for templates in self._templates: templates_block += f"{templates}\n" templates_block += "\n" return templates_block def build_mivot_block(self, *, templates_id=None, schema_check=True): """ Build a complete MIVOT block from the declared components and validates it against the MIVOT XML schema. Parameters ---------- templates_id : str, optional The ID to associate with the block. Defaults to None. schema_check : boolean, optional (default True) Skip the XSD validation if False (use to make test working in local mode). Raises ------ Any exceptions raised during XML validation are not caught and must be handled by the caller. """ if templates_id: self._templates_id = templates_id self._mivot_block = '\n' self._mivot_block += self._get_report() self._mivot_block += "\n" self._mivot_block += self._get_models() self._mivot_block += "\n" self._mivot_block += self._get_globals() self._mivot_block += "\n" self._mivot_block += self._get_templates() self._mivot_block += "\n" self._mivot_block += "\n" self._mivot_block = self.mivot_block.replace("\n\n", "\n") self._mivot_block = XmlUtils.pretty_string(self._mivot_block) if schema_check: self.check_xml() def add_templates(self, templates_instance): """ Add an element to the block. Parameters ---------- templates_instance : str or MivotInstance The element to be added. Raises ------ MappingError If ``templates_instance`` is neither a string nor an instance of `MivotInstance`. """ if isinstance(templates_instance, MivotInstance): self._templates.append(templates_instance.xml_string()) if templates_instance.dmid is not None: self._dmids.append(templates_instance.dmid) elif isinstance(templates_instance, str): self._templates.append(templates_instance) else: raise MappingError( "Instance added to templates must be a string or MivotInstance." ) def add_globals(self, globals_instance): """ Add an block to the block. Parameters ---------- globals_instance : str or MivotInstance The block to be added. Raises ------ MappingError If ``globals_instance`` is neither a string nor an instance of `MivotInstance`. """ if isinstance(globals_instance, MivotInstance): self._globals.append(globals_instance.xml_string()) if globals_instance.dmid is not None: self._dmids.append(globals_instance.dmid) elif isinstance(globals_instance, str): self._globals.append(globals_instance) else: raise MappingError( "Instance added to globals must be a string or MivotInstance." ) def add_model(self, model_name, *, vodml_url=None): """ Add a element to the MIVOT block. Parameters ---------- model_name : str The short name of the model. vodml_url : str, optional The URL of the VO-DML file associated with the model. """ self._models[model_name] = vodml_url def set_report(self, status, message): """ Set the element of the MIVOT block. Parameters ---------- status : bool The status of the annotation process. True for success, False for failure. message : str The message associated with the REPORT. Notes ----- If ``status`` is False, all components of the MIVOT block except MODEL and REPORT are cleared. """ self._report_status = status self._report_message = message if not status: self._globals = [] self._templates = [] def check_xml(self): """ Validate the MIVOT block against the MIVOT XML schema v1.0. Raises ------ MappingError If the validation fails. Notes ----- The schema (mivot 1.0) is loaded from a local file to avoid dependency on a remote service. """ # put here just to improve the test coverage root = etree.fromstring(self._mivot_block) mivot_block = XmlUtils.pretty_string(root, clean_namespace=False) if not xmlschema: logging.warning( "XML validation skipped: no XML schema validator found. " + "Please install it (e.g., pip install xmlschema)." ) return schema = xmlschema.XMLSchema11(os.path.dirname(__file__) + "/mivot-v1.xsd") try: schema.validate(mivot_block) except Exception as excep: raise MappingError(f"Validation failed: {excep}") from excep def insert_into_votable(self, votable_file, override=False): """ Insert the MIVOT block into a VOTable. Parameters ---------- votable_file : str or VOTableFile The VOTable to be annotated, either as a file path or a ``VOTableFile`` instance. override : bool If True, overrides any existing annotations in the VOTable. Raises ------ MappingError If a mapping block already exists and ``override`` is False. """ if not check_astropy_version(): raise AstropyVersionException(f"Astropy version {version.version} " "is below the required version 6.0 for the use of MIVOT.") if isinstance(votable_file, str): votable = parse(votable_file) elif isinstance(votable_file, VOTableFile): votable = votable_file else: raise MappingError( "votable_file must be a file path string or a VOTableFile instance, " "not a {type(votable_file)}." ) for resource in votable.resources: if resource.type == "results": for subresource in resource.resources: if subresource.type == "meta": if not override: raise MappingError( "A type='meta' resource already exists in the first 'result' resource." ) else: logging.info("Overriding existing type='meta' resource.") break mivot_resource = Resource() mivot_resource.type = "meta" mivot_resource.mivot_block = MivotBlock(self._mivot_block) resource.resources.append(mivot_resource) astropy-pyvo-f0fdda3/pyvo/mivot/writer/header_mapper.py000066400000000000000000000276201521254414300236040ustar00rootroot00000000000000""" ``HeaderMapper`` class source """ import logging from pyvo.mivot.glossary import Roles, EpochPositionAutoMapping from pyvo.mivot.utils.dict_utils import DictUtils class HeaderMapper: """ This utility class generates dictionaries from header elements of a VOTable. These dictionaries are used as input parameters by `pyvo.mivot.writer.InstancesFromModels` to create MIVOT instances that are placed in the GLOBALS block or in the TEMPLATES. In the current implementation, the following elements can be extracted: - COOSYS -> coords:SpaceSys - TIMESYS - coords:TimeSys - INFO -> mango:QueryOrigin - FIELD -> mango:EpochPosition """ def __init__(self, votable): """ Constructor parameters: Parameters ---------- votable : astropy.io.votable.tree.VOTableFile parsed votable from which INFO element are processed """ self._votable = votable def _check_votable_head_element(self, parameter): """ Check that the parameter is a valid value. .. note:: Vizier uses the ``UNKNOWN`` word to tag not set values """ return parameter is not None and parameter != "UNKNOWN" def _extract_query_origin(self): """ Create a mapping dictionary from ``INFO`` elements found in the VOTable header. This dictionary is used to populate the ``mango:QueryOrigin`` attributes Returns ------- dict Dictionary that is part of the input parameter for :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_query_origin` """ mapping = {} for info in self._votable.infos: if info.name in Roles.QueryOrigin: mapping[info.name] = info.value return mapping def _extract_data_origin(self, resource): """ Create a mapping dictionary from ``INFO`` elements found in the header of the first VOTable resource. This dictionary is used to populate the ``mango:QueryOrigin`` part of the ``mango:QueryOrigin`` instance. Returns ------- dict Dictionary that is part of the input parameter for :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_query_origin` """ mapping = {} article = None for info in resource.infos: if info.name in Roles.DataOrigin or info.name == "creator": if DictUtils.add_array_element(mapping, "dataOrigin"): article = {} if info.name != "creator": article[info.name] = info.value else: DictUtils.add_array_element(article, "creators") article["creators"].append(info.value) for info in resource.infos: art_ref = {} if info.name in Roles.Article: DictUtils.add_array_element(article, "articles") art_ref[info.name] = info.value if art_ref: article["articles"].append(art_ref) mapping["dataOrigin"].append(article) return mapping def extract_origin_mapping(self): """ Create a mapping dictionary from all VOTable ``INFO`` elements. This dictionary is used to build a ``mango:QueryOrigin`` INSTANCE - INFO elements located in the VOTable header are used to build the ``mango:QueryOrigin`` part which scope is the whole VOtable by construction (one query -> one VOTable) - INFO elements located in the resource header are used to build the ``mango:DataOrigin`` part which scope is the data located in this resource. Returns ------- dict Dictionary that can be used as input parameter for :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_query_origin` """ mapping = self._extract_query_origin() for resource in self._votable.resources: mapping = {**mapping, **self._extract_data_origin(resource)} return mapping def extract_coosys_mapping(self): """ Create a mapping dictionary for each ``COOSYS`` element found in the first VOTable resource. Returns ------- [dict] Array of dictionaries which items can be used as input parameter for :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_simple_space_frame` """ mappings = [] for resource in self._votable.resources: for coordinate_system in resource.coordinate_systems: mapping = {} if not self._check_votable_head_element(coordinate_system.system): logging.warning(f"Not valid COOSYS found: ignored in MIVOT: {coordinate_system}") continue mapping["spaceRefFrame"] = coordinate_system.system if self._check_votable_head_element(coordinate_system.equinox): mapping["equinox"] = coordinate_system.equinox if self._check_votable_head_element(coordinate_system.epoch): mapping["epoch"] = coordinate_system.epoch mappings.append(mapping) return mappings def extract_timesys_mapping(self): """ Create a mapping dictionary for each ``TIMESYS`` element found in the first VOTable resource. .. note:: the ``origin`` attribute is not supported yet Returns ------- [dict] Array of dictionaries which items can be used as input parameter for :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_simple_time_frame` """ mappings = [] for resource in self._votable.resources: for time_system in resource.time_systems: mapping = {} if not self._check_votable_head_element(time_system.timescale): logging.warning(f"Not valid TIMESYS found: ignored in MIVOT: {time_system}") continue mapping["timescale"] = time_system.timescale if self._check_votable_head_element(time_system.refposition): mapping["refPosition"] = time_system.refposition mappings.append(mapping) return mappings def extract_epochposition_mapping(self): """ Analyze the FIELD UCD-s to infer a data mapping to the EpochPosition class. This mapping covers the 6 parameters with the Epoch and their errors. The correlation part is not covered since there is no specific UCD for this. The UCD-s accepted for each parameter are defined in `pyvo.mivot.glossary`. The error classes are hard-coded as the most likely types. - PErrorSym2D for 2D parameters - PErrorSym1D for 1D parameters Returns ------- (dict, dict) A mapping proposal for the EpochPosiion + errors that can be used as input parameter by :py:meth:`pyvo.mivot.writer.InstancesFromModels.add_mango_epoch_position`. """ def _check_ucd(mapping_entry, ucd, mapping): """ Inner function checking that mapping_entry matches with ucd according to `pyvo.mivot.glossary` """ if mapping_entry in mapping: return False dict_entry = getattr(EpochPositionAutoMapping, mapping_entry) if isinstance(dict_entry, list): return ucd in dict_entry else: return ucd and ucd.startswith(dict_entry) def _check_obs_date(field): """ check if the field can be interpreted as a value date time This algorithm is a bit specific for Vizier CS """ xtype = field.xtype unit = field.unit representation = None if xtype == "timestamp" or unit == "'Y:M:D'" or unit == "'Y-M-D'": representation = "iso" # let's assume that dates expressed as days are MJD elif xtype == "mjd" or unit == "d": representation = "mjd" if representation is None and unit == "year": representation = "year" if representation is not None: field_ref = field.ID if field.ID is not None else field.name return {"dateTime": field_ref, "representation": representation} return None table = self._votable.get_first_table() fields = table.fields mapping = {} error_mapping = {} for field in fields: ucd = field.ucd for mapping_entry in Roles.EpochPosition: if _check_ucd(mapping_entry, ucd, mapping) is True: if mapping_entry == "obsDate": if (obs_date_mapping := _check_obs_date(field)) is not None: mapping[mapping_entry] = obs_date_mapping else: mapping[mapping_entry] = field.ID if field.ID is not None else field.name # Once we got a parameter mapping, we look for its associated error # This nested loop makes sure we never have error without value for err_field in fields: err_ucd = err_field.ucd # We assume the error UCDs are the same the these of the # related quantities but prefixed with "stat.error;" and without "meta.main" qualifier if err_ucd == ("stat.error;" + ucd.replace(";meta.main", "")): param_mapping = err_field.ID if err_field.ID is not None else err_field.name if mapping_entry == "parallax": error_mapping[mapping_entry] = {"class": "PErrorSym1D", "sigma": param_mapping} elif mapping_entry == "radialVelocity": error_mapping[mapping_entry] = {"class": "PErrorSym1D", "sigma": param_mapping} elif mapping_entry == "longitude": if "position" in error_mapping: error_mapping["position"]["sigma1"] = param_mapping else: error_mapping["position"] = {"class": "PErrorSym2D", "sigma1": param_mapping} elif mapping_entry == "latitude": if "position" in error_mapping: error_mapping["position"]["sigma2"] = param_mapping else: error_mapping["position"] = {"class": "PErrorSym2D", "sigma2": param_mapping} elif mapping_entry == "pmLongitude": if "properMotion" in error_mapping: error_mapping["properMotion"]["sigma1"] = param_mapping else: error_mapping["properMotion"] = {"class": "PErrorSym2D", "sigma1": param_mapping} elif mapping_entry == "pmLatitude": if "properMotion" in error_mapping: error_mapping["properMotion"]["sigma2"] = param_mapping else: error_mapping["properMotion"] = {"class": "PErrorSym2D", "sigma2": param_mapping} return mapping, error_mapping astropy-pyvo-f0fdda3/pyvo/mivot/writer/instance.py000066400000000000000000000141501521254414300226060ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ MivotInstance is a simple API for building MIVOT instances step by step. A MIVOT instance is a MIVOT serialisation of an object whose attributes are set with column values or literals. A MIVOT instance can contain ATTRIBUTEs elements, COLLECTIONs of elements, or other INSTANCEs. The MIVOT INSTANCE structure is defined by the data model on which the data is mapped. """ from pyvo.utils.prototype import prototype_feature from pyvo.mivot.utils.exceptions import MappingError from pyvo.mivot.utils.mivot_utils import MivotUtils __all__ = ["MivotInstance"] @prototype_feature("MIVOT") class MivotInstance: """ API for building elements of MIVOT annotation step by step. This class provides methods for incremental construction of a MIVOT instance. It builds elements that can contain , , and . Support for elements is not yet implemented. The main features are: - Model-agnostic: The implementation is independent of any specific data model. - Syntax validation: Ensures basic MIVOT syntax rules are followed. - Context-agnostic: Ignores context-dependent syntax rules. attributes ---------- _dmtype : string Instance type (class VO-DML ID) _dmrole : string Role played by the instance in the context where it is used (given by the VO-DML serialization of the model) _dmid : string Free identifier of the instance """ def __init__(self, dmtype, *, dmrole=None, dmid=None): """ Parameters ---------- dmtype : str dmtype of the INSTANCE (mandatory) dmrole : str, optional dmrole of the INSTANCE dmid : str, optional dmid of the INSTANCE Raises ------ MappingError If ``dmtype`` is not provided """ if not dmtype: raise MappingError("Cannot build an instance without dmtype") self._dmtype = dmtype self._dmrole = dmrole self._dmid = MivotUtils.format_dmid(dmid) self._content = [] @property def dmid(self): return self._dmid def add_attribute(self, dmtype=None, dmrole=None, *, value=None, unit=None): """ Add an element to the instance. Parameters ---------- dmtype : str dmtype of the ATTRIBUTE (mandatory) dmrole : str dmrole of the ATTRIBUTE (mandatory) value : str or numerical, optional ID of the column to set the attribute value. If ref is a string starting with a * or is numerical, it is considered as a value (* stripped) as a ref otherwise unit : str, optional Unit of the attribute Raises ------ MappingError If ``dmtype`` or ``dmrole`` is not provided, or if both ``ref`` and ``value`` are not defined """ if not dmtype: raise MappingError("Cannot add an attribute without dmtype") if not dmrole: raise MappingError("Cannot add an attribute without dmrole") ref, literal = MivotUtils.get_ref_or_literal(value) if not ref and not value: raise MappingError("Cannot add an attribute without ref or value") xml_string = f' element to the instance. Parameters ---------- dmrole : str dmrole of the REFERENCE (mandatory) dmref : str dmref of the REFERENCE (mandatory) Raises ------ MappingError If ``dmrole`` or ``dmref`` is not provided """ if not dmref: raise MappingError("Cannot add a reference without dmref") if not dmrole: raise MappingError("Cannot add a reference without dmrole") xml_string = f'' self._content.append(xml_string) def add_instance(self, mivot_instance): """ Add a nested element to the instance. Parameters ---------- mivot_instance : MivotInstance INSTANCE to be added Raises ------ MappingError If ``mivot_instance`` is not of type ``MivotInstance`` """ if not isinstance(mivot_instance, MivotInstance): raise MappingError("Instance added must be of type MivotInstance") self._content.append(mivot_instance.xml_string()) def add_collection(self, dmrole, mivot_instances): """ to be documented """ dm_att = "" if dmrole: dm_att = f"dmrole=\"{dmrole}\"" self._content.append(f'') for mivot_instance in mivot_instances: if isinstance(mivot_instance, MivotInstance): self._content.append(mivot_instance.xml_string()) else: self._content.append(mivot_instance) self._content.append("\n") self._content.append("") def xml_string(self): """ Build and serialize the element as a string. Returns ------- str The string representation of the element """ xml_string = f'" in fps_reponse: message = re.search(r'(.*)', fps_reponse).group(1) raise MappingError(f"FPS service error: {message}") # set the identifiers that will be used for both PhotCal and PhotFilter cal_id = MivotUtils.format_dmid(filter_name) photcal_id = f"_photcal_{cal_id}" filter_id = f"_photfilter_{cal_id}" # skip if the same dmid is already recorded if cal_id in self._annotation._dmids: logging.warning("An instance with dmid=%s has already been stored in GLOBALS: skip", cal_id) return photcal_id, filter_id self._annotation._dmids.append(cal_id) logging.info("%s PhotCal can be referred with dmref='%s'", cal_id, photcal_id) # parse the PhotCal and extract the PhotFilter node photcal_block = etree.fromstring(fps_reponse) filter_block = XPath.x_path_contains(photcal_block, ".//" + Ele.INSTANCE, Att.dmtype, "Phot:photometryFilter")[0] # Tune the Photcal to be placed as a GLOBALS child (no role but an id) # and remove the PhotFilter node which will be shifted at the GLOBALS level del photcal_block.attrib["dmrole"] photcal_block.set("dmid", photcal_id) photcal_block.remove(filter_block) # Tune the PhotFilter to be placed as GLOBALS child (no role but an id) filter_role = filter_block.get("dmrole") del filter_block.attrib["dmrole"] filter_block.set("dmid", filter_id) # Append a REFERENCE on the PhotFilter node to the PhotCal block reference = Element("REFERENCE") reference.set("dmrole", filter_role) reference.set("dmref", filter_id) photcal_block.append(reference) self._annotation.add_model("ivoa", vodml_url=VodmlUrl.ivoa) self._annotation.add_model("Phot", vodml_url=VodmlUrl.Phot) # fix some FPS tweaks photcal_block_string = XmlUtils.pretty_string(photcal_block, lshift=" ") photcal_block_string = photcal_block_string.replace( "", "") filter_block_string = XmlUtils.pretty_string(filter_block, lshift=" ") filter_block_string = filter_block_string.replace("Phot:photometryFilter", "Phot:PhotometryFilter") filter_block_string = filter_block_string.replace("Phot:PhotCal.photometryFilter.bandwidth", "Phot:PhotometryFilter.bandwidth") self._annotation.add_globals(photcal_block_string) self._annotation.add_globals(filter_block_string) return photcal_id, filter_id def add_simple_space_frame(self, spaceRefFrame="ICRS", refPosition="BARYCENTER", equinox=None, epoch=None): """ Adds a SpaceSys instance to the GLOBALS block as defined in the Coordinates data model V1.0 (https://ivoa.net/documents/Coords/20221004/index.html). Notes: - This function implements only the most commonly used features. Custom reference positions for TOPOCENTER frames are not supported. However, methods for implementing the missing features can be derived from this code. - A warning is emitted if either ``spaceRefFrame`` or ``refPosition`` have unexpected values. - No error is raised if the parameter values are inconsistent. - The ``dmid`` of the time frame is built from ``spaceRefFrame``, ``refrefPosition_position`` and ``equinox``. Parameters ---------- spaceRefFrame : str, optional, default "ICRS" The reference frame for the space frame. refPosition : str, optional, default "BARYCENTER" The reference position for the space frame. equinox : str, optional, default None The equinox for the reference frame, if applicable. epoch : str, optional, default None The epoch for the reference location, if applicable. Returns ------- str The actual dmid of the time frame INSTANCE """ # build the dmid dmid = f"_spaceframe_{spaceRefFrame.replace('*', '')}" if equinox: dmid += f"_{equinox.replace('*', '')}" if refPosition: dmid += f"_{refPosition.replace('*', '')}" # skip if the same dmid is already recorded if dmid in self._annotation._dmids: logging.warning("A spaceSys instance with dmid=%s has already been stored in GLOBALS: skip", dmid) return dmid logging.info("spaceSys %s can be referred with dmref='%s'", spaceRefFrame, dmid) self._annotation._dmids.append(dmid) # add (or overwrite) used models self._annotation.add_model(ModelPrefix.ivoa, vodml_url=VodmlUrl.ivoa) self._annotation.add_model(ModelPrefix.coords, vodml_url=VodmlUrl.coords) # check whether ref_frame and ref_position are set with appropriate values self._check_value_consistency(spaceRefFrame, CoordSystems.space_frames) self._check_value_consistency(refPosition, CoordSystems.ref_positions) # Build the SpaceSys instance component by component space_system_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:SpaceSys", dmid=dmid) # let's start with the space frame space_frame_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:SpaceFrame", dmrole=f"{ModelPrefix.coords}:PhysicalCoordSys.frame") space_frame_instance.add_attribute(dmtype=IvoaType.string, dmrole=f"{ModelPrefix.coords}:SpaceFrame.spaceRefFrame", value=MivotUtils.as_literal(spaceRefFrame)) if equinox is not None: space_frame_instance.add_attribute(dmtype=f"{ModelPrefix.coords}:Epoch", dmrole=f"{ModelPrefix.coords}:SpaceFrame.equinox", value=MivotUtils.as_literal(equinox)) # then let's build the reference position. # The RefLocation type depends on the presence of an epoch (see coords DM) if epoch is not None: ref_position_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:CustomRefLocation", dmrole=f"{ModelPrefix.coords}:SpaceFrame.refPosition") ref_position_instance.add_attribute(dmtype=IvoaType.string, dmrole=f"{ModelPrefix.coords}:CustomRefLocation.position", value=MivotUtils.as_literal(refPosition)) ref_position_instance.add_attribute(dmtype="coords:Epoch", dmrole=f"{ModelPrefix.coords}:CustomRefLocation.epoch", value=MivotUtils.as_literal(epoch)) else: ref_position_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:StdRefLocation", dmrole=f"{ModelPrefix.coords}:SpaceFrame.refPosition") ref_position_instance.add_attribute(dmtype=IvoaType.string, dmrole=f"{ModelPrefix.coords}:StdRefLocation.position", value=MivotUtils.as_literal(refPosition)) # and pack everything space_frame_instance.add_instance(ref_position_instance) space_system_instance.add_instance(space_frame_instance) # add the SpaceSys instance to the GLOBALS block self._annotation.add_globals(space_system_instance) return dmid def add_simple_time_frame(self, timescale="TCB", *, refPosition="BARYCENTER"): """ Adds a TimeSys instance to the GLOBALS block as defined in the Coordinates data model V1.0 (https://ivoa.net/documents/Coords/20221004/index.html). Notes: - This function implements only the most commonly used features. *Custom reference directions* are not supported. However, methods for implementing missing features can be derived from this code. - A warning is emitted if either ``timescale`` or ``refPosition`` have unexpected values. - No error is raised if the parameter values are inconsistent. - The ``dmid`` of the time rame is built from ``timescale`` and ``refPosition``. Parameters ---------- timescale : str, optional, default "TCB" The reference frame for the time frame. refPosition : str, optional, default "BARYCENTER" The reference position for the time frame. Returns ------- str The actual dmid of the time frame INSTANCE """ # buikd the dmid dmid = f"_timeframe_{timescale.replace('*', '')}" if refPosition: dmid += f"_{refPosition.replace('*', '')}" dmid = MivotUtils.format_dmid(dmid) # skip if the same dmid is already recorded if dmid in self._annotation._dmids: logging.warning("An timeSys instance with dmid=%s has already been stored in GLOBALS: skip", dmid) return dmid logging.info("timeSys %s can be referred with dmref='%s'", timescale, dmid) self._annotation._dmids.append(dmid) # add (or overwrite) used models self._annotation.add_model(ModelPrefix.ivoa, vodml_url=VodmlUrl.ivoa) self._annotation.add_model(ModelPrefix.coords, vodml_url=VodmlUrl.coords) # check whether ref_frame and ref_position are set with appropriate values self._check_value_consistency(timescale, CoordSystems.time_frames) self._check_value_consistency(refPosition, CoordSystems.ref_positions) # Build the TimeSys instance component by component time_sys_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:TimeSys", dmid=dmid) # Let's start with the time frame time_frame_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:TimeFrame", dmrole=f"{ModelPrefix.coords}:PhysicalCoordSys.frame") time_frame_instance.add_attribute(dmtype=IvoaType.string, dmrole=f"{ModelPrefix.coords}:TimeFrame.timescale", value=MivotUtils.as_literal(timescale)) # Then let's build the reference position ref_position_instance = MivotInstance(dmtype=f"{ModelPrefix.coords}:StdRefLocation", dmrole=f"{ModelPrefix.coords}:TimeFrame.refPosition") ref_position_instance.add_attribute(dmtype=IvoaType.string, dmrole=f"{ModelPrefix.coords}:StdRefLocation.position", value=MivotUtils.as_literal(refPosition)) # pack everything time_frame_instance.add_instance(ref_position_instance) time_sys_instance.add_instance(time_frame_instance) # add the TimeSys instance to the GLOBALS block self._annotation.add_globals(time_sys_instance) return dmid def add_mango_brightness(self, *, photcal_id=None, mapping={}, semantics={}): """ Add a Mango ``Brightness`` instance to the current `MangoObject` with the specified photometric calibration, using the mapping parameter to associate VOtable data with it. This method acts as a front-end for `pyvo.mivot.writer.MangoObject` logic. Parameters ---------- photcal_id : string, optional (default is None) Filter profile service (http://svo2.cab.inta-csic.es/theory/fps/} identifier of the desired photometric calibration. It is made of the filter identifier followed by the photometric system (e.g. GAIA/GAIA3.Grvs/AB) mapping : dict, optional (default to an empty dictionary ({}) A dictionary defining the mapping of values. It includes: - mapping of the brightness value - one separate block for the error specification semantics : dict, optional (default to an empty dictionary ({}) A dictionary specifying semantic details to be added to the Mango property. Returns ------- `Property` The Mango property Notes ----- The mapping example below maps the data of the GaiaD3 table that can be found in the test suite. Notice that the (fake) error bounds are given as literalS. .. code-block:: python photcal_id="GAIA/GAIA3.Grvs/AB" mapping={"value": "GRVSmag", "error": { "class": "PErrorAsym1D", "low": 1, "high": 3} } semantics={"description": "Grvs magnitude", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#magnitude", "label": "magnitude"} builder = InstancesFromModels(votable, dmid="DR3Name") builder.add_mango_magnitude(photcal_id=photcal_id, mapping=mapping, semantics=semantics) """ # make sure MANGO is mentioned in self._annotation.add_model(ModelPrefix.mango, vodml_url=VodmlUrl.mango) # Add the photometric calibration instance in photcal_id, _ = self.add_photcal(photcal_id) # Add the brightness property to the MANGO instance return self._mango_instance.add_brightness_property(photcal_id, mapping, semantics=semantics) def add_mango_color(self, *, filter_ids={}, mapping={}, semantics={}): """ Add a Mango ``Color`` instance to the current `MangoObject` with the specified low and high filters, using the mapping parameter to associate VOtable data with it. This method acts as a front-end for `pyvo.mivot.writer.MangoObject` logic. Parameters ---------- filter_ids : string, optional (default to an empty dictionary {}) Filter profile service (http://svo2.cab.inta-csic.es/theory/fps/} identifiers of the high and low photometric calibrations that contain the desired filters. Identifiers are made of the filter identifier followed by the photometric system (e.g. GAIA/GAIA3.Grvs/AB). mapping : dict, optional (default to an empty dictionary ({}) A dictionary defining the mapping of values. It includes: - The mapping of the color value and the color definition (ColorIndex or HardnessRatio). - One separate block for the error specification. semantics : dict, optional (default to an empty dictionary {}) A dictionary specifying semantic details to be added to the Mango property. Returns ------- `Property` The Mango property Notes ----- The mapping example below maps the data of the GaiaD3 table that can be found in the test suite. The (fake) color value is given as a literal, it does not refer to any table column. .. code-block:: python filter_ids={"low": "GAIA/GAIA3.Grp/AB", "high": "GAIA/GAIA3.Grvs/AB"} mapping={"value": 0.08, "definition": "ColorIndex", "error": { "class": "PErrorAsym1D", "low": 0.01, "high": 0.02} } semantics={"description": "Fake color index", "uri": "http://astrothesaurus.org/uat/1553", "label": "Spectral index"} builder = InstancesFromModels(votable, dmid="DR3Name") builder.add_mango_color(filter_ids=filter_ids, mapping=mapping, semantics=semantics) """ self._annotation.add_model(ModelPrefix.mango, vodml_url=VodmlUrl.mango) filter_low_name = filter_ids["low"] filter_high_name = filter_ids["high"] _, filter_low_id = self.add_photcal(filter_low_name) _, filter_high_id = self.add_photcal(filter_high_name) return self._mango_instance.add_color_instance(filter_low_id, filter_high_id, mapping, semantics=semantics) def add_mango_epoch_position(self, *, frames={}, mapping={}, semantics={}): """ Add a Mango ``EpochPosition`` instance to the current `MangoObject` with the specified frames and semantics, using the mapping parameter to associate VOtable data with it. This method acts as a front-end for `pyvo.mivot.writer.MangoObject` logic. Parameters ---------- frames : dict, optional (default to an empty dictionary {}) A dictionary specifying the frames (space and time coordinate systems) to be used. Frames parameters are global, they cannot refer to table columns. If a frame description contains the "dmid" key, that value will be used as an identifier an already installed frame (e.g. with ``extract_frames()``). Otherwise the content of the frame description is meant to be used in input parameter for ``add_simple_(space)time_frame()`` mapping : dict, optional (default to an empty dictionary {}) A dictionary defining the mapping of values. It includes: - A flat list for position parameters. - Two separate blocks for correlations and error specifications. semantics : dict, optional (default to an empty dictionary {}) A dictionary specifying semantic details to be added to the Mango property. Returns ------- `Property` The Mango property Notes ----- The mapping example below maps the data of the GaiaD3 table that can be found in the test suite. .. code-block:: python frames={"spaceSys": {"spaceRefFrame": "ICRS", "refPosition": 'BARYCENTER', "equinox": None}, "timeSys": {"timescale": "TCB", "refPosition": 'BARYCENTER'}} mapping={"longitude": "_RAJ2000", "latitude": "_DEJ2000", "pmLongitude": "pmRA", "pmLatitude": "pmDE", "parallax": "Plx", "radialVelocity": "RV", "correlations": {"isCovariance": True, "longitudeLatitude": "RADEcor", "latitudePmLongitude": "DEpmRAcor", "latitudePmLatitude": "DEpmDEcor", "longitudePmLongitude": "RApmRAcor", "longitudePmLatitude": "RApmDEcor", "longitudeParallax": "RAPlxcor", "latitudeParallax": "DEPlxcor", "pmLongitudeParallax": "PlxpmRAcor", "pmLatitudeParallax": "PlxpmDEcor", }, "errors": { "position": { "class": "PErrorSym2D", "sigma1": "e_RA_ICRS", "sigma2": "e_DE_ICRS"}, "properMotion": { "class": "PErrorSym2D", "sigma1": "e_pmRA", "sigma2": "e_pmDE"}, "parallax": { "class": "PErrorSym1D", "sigma": "e_Plx"}, "radialVelocity": { "class": "PErrorSym1D", "sigma": "e_RV"} } } semantics={"description": "6 parameters position", "uri": "https://www.ivoa.net/rdf/uat/2024-06-25/uat.html#astronomical-location", "label": "Astronomical location"} builder = InstancesFromModels(votable, dmid="DR3Name") builder.add_mango_epoch_position(frames=frames, mapping=mapping, semantics=semantics) """ self._annotation.add_model(ModelPrefix.mango, vodml_url=VodmlUrl.mango) space_frame_id = "" if "spaceSys" in frames and frames["spaceSys"]: if "dmid" in frames["spaceSys"]: space_frame_id = frames["spaceSys"]["dmid"] else: space_frame_id = self.add_simple_space_frame(*frames["spaceSys"]) time_frame_id = "" if "timeSys" in frames and frames["timeSys"]: if "dmid" in frames["timeSys"]: time_frame_id = frames["timeSys"]["dmid"] else: time_frame_id = self.add_simple_time_frame(**frames["timeSys"]) return self._mango_instance.add_epoch_position(space_frame_id, time_frame_id, mapping, semantics) def add_query_origin(self, mapping={}): """ Add the Mango ``QueryOrigin`` instance to the current `MangoObject`. This method acts as a front-end for `pyvo.mivot.writer.MangoObject` logic. Parameters ---------- mapping : dict, optional (default to an empty dictionary {}) A dictionary defining the QueryOrigin fields. Mapped fields are global, they cannot refer to table columns Returns ------- `MivotInstance` Notes ----- The partial mapping example below maps a fake QueryOrigin. A complete (long) example based on GaiaD3 can be found in the test suite. .. code-block:: python builder = InstancesFromModels(votable, dmid="DR3Name") builder.add_query_origin( { "service_protocol": "ivo://ivoa.net/std/ConeSearch/v1.03", "request_date": "2025-04-07T12:06:32", "request": ( "https://cdsarc.cds.unistra.fr/beta/viz-bin/mivotconesearch" "/I/329/urat1?RA=52.26708&DEC=59.94027&SR=0.05" ), "contact": "cds-question@unistra.fr", "server_software": "7.4.6", "publisher": "CDS", "dataOrigin": [ { "ivoid": "ivo://cds.vizier/i/329", "creators": ["Zacharias N."], "cites": "bibcode:2015AJ....150..101Z", "original_date": "2015", "reference_url": "https://cdsarc.cds.unistra.fr/viz-bin/cat/I/329", "rights_uri": "https://cds.unistra.fr/vizier-org/licences_vizier.html", "articles": [{"editor": "Astronomical Journal (AAS)"}], } ], } ) """ self._annotation.add_model(ModelPrefix.mango, vodml_url=VodmlUrl.mango) query_origin_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:origin.QueryOrigin", dmid="_origin") MivotUtils.populate_instance(query_origin_instance, "QueryOrigin", mapping, self._table, IvoaType.string, as_literals=True, package="origin") if "dataOrigin" in mapping: origins = [] data_origin_mappings = mapping["dataOrigin"] for data_origin_mapping in data_origin_mappings: data_origin_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:origin.DataOrigin") MivotUtils.populate_instance(data_origin_instance, "DataOrigin", data_origin_mapping, self._table, IvoaType.string, as_literals=True, package="origin") if "articles" in data_origin_mapping: articles = [] for art_mapping in data_origin_mapping["articles"]: art_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:origin.Article") MivotUtils.populate_instance(art_instance, "Article", art_mapping, self._table, IvoaType.string, as_literals=True, package="origin") articles.append(art_instance) data_origin_instance.add_collection(f"{ModelPrefix.mango}:origin.DataOrigin.articles", articles) if "creators" in data_origin_mapping: creators = [] for art_mapping in data_origin_mapping["creators"]: creators.append(f"") data_origin_instance.add_collection(f"{ModelPrefix.mango}:origin.DataOrigin.creators", creators) origins.append(data_origin_instance) query_origin_instance.add_collection(f"{ModelPrefix.mango}:origin.QueryOrigin.dataOrigin", origins) self._annotation.add_globals(query_origin_instance) self._annotation._dmids.append("_origin") return query_origin_instance def pack_into_votable(self, *, report_msg="", sparse=False, schema_check=True): """ Pack all mapped objects in the annotation block and put it in the VOTable. Parameters ---------- report_msg : string, optional (default to an empty string) Content of the REPORT Mivot tag sparse : boolean, optional (default to False) If True, all properties are added in a independent way to the the TEMPLATES. They are packed in a MangoObject otherwise. schema_check : boolean, optional (default to True) If True the MIVOT block is validated against its schema. This may test failing due to remote accesses. """ self._annotation.set_report(True, report_msg) if sparse is True: for prop in self._mango_instance.mango_properties: # Add each individual property to the TEMPLATES block self._annotation.add_templates(prop.xml_string()) else: # Pack the MangoObject and put it in the TEMPLATES self._annotation.add_templates(self._mango_instance.get_mango_object( with_origin=("_origin" in self._annotation._dmids))) self._annotation.build_mivot_block(schema_check=schema_check) self._annotation.insert_into_votable(self._votable, override=True) astropy-pyvo-f0fdda3/pyvo/mivot/writer/mango_object.py000066400000000000000000000312561521254414300234370ustar00rootroot00000000000000''' Created on 22 Jan 2025 @author: laurentmichel ''' from pyvo.mivot.utils.exceptions import MappingError from pyvo.mivot.utils.mivot_utils import MivotUtils from pyvo.mivot.writer.instance import MivotInstance from pyvo.mivot.glossary import ( IvoaType, ModelPrefix, Roles) class Property(MivotInstance): """ Class representing one property of a MangoInstance. MangoInstance property instances are `pyvo.mivot.writer.MivotInstance` augmented with a semantics block. """ def __init__(self, dmtype=None, *, dmrole=None, dmid=None, semantics={}): """ Parameters ---------- dmtype : str dmtype of the INSTANCE (mandatory) dmrole : str, optional (default as None) dmrole of the INSTANCE dmid : str, optional (default as None) dmid of the INSTANCE semantics : dict, optional (default as {}) Mapping of the semantic block (supported key: descripton, uri, label) Raises ------ MappingError If ``dmtype`` is not provided """ super().__init__(dmtype, dmrole=dmrole, dmid=dmid) if "description" in semantics: # we assume the description as always being a literal self.add_attribute(dmtype="ivoa:string", dmrole="mango:Property.description", value=f"*{semantics['description']}") if "uri" in semantics or "label" in semantics: semantics_instance = MivotInstance(dmtype="mango:VocabularyTerm", dmrole="mango:Property.semantics") if "uri" in semantics: semantics_instance.add_attribute(dmtype="ivoa:string", dmrole="mango:VocabularyTerm.uri", value=f"*{semantics['uri']}") if "label" in semantics: semantics_instance.add_attribute(dmtype="ivoa:string", dmrole="mango:VocabularyTerm.label", value=f"*{semantics['label']}") self.add_instance(semantics_instance) class MangoObject: """ This class handles all the components of a MangoObject (properties, origin, instance identifier). It is meant to be used by `pyvo.mivot.writer.InstancesFromModels` but not by end users. - There is one specific method for each supported property (EpochPosition, photometry and QueryOrigin). - The internal structure of the classes is hard-coded in the class logic. """ def __init__(self, table, *, dmid=None): ''' Constructor parameters: parameters ---------- table : astropy.io.votable.tree.TableElement VOTable table which data is mapped on Mango dmid: stringn optional (default as None) Reference of the column to be used as a MangoObject identifier ''' self._table = table self._properties = [] self._dmid = dmid def _get_error_instance(self, class_name, dmrole, mapping): """ Private method building and returning an Mango error instance Returns: MivotInstance """ prop_err_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:error.{class_name}", dmrole=dmrole) MivotUtils.populate_instance(prop_err_instance, class_name, mapping, self._table, IvoaType.RealQuantity, package="error") return prop_err_instance def _add_epoch_position_correlations(self, **correlations): """ Private method building and returning the correlation block of the EpocPosition object. Returns ------- `Property` The EpochPosition correlations component """ epc_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:EpochPositionCorrelations", dmrole=f"{ModelPrefix.mango}:EpochPosition.correlations") MivotUtils.populate_instance(epc_instance, "EpochPositionCorrelations", correlations, self._table, IvoaType.real) return epc_instance def _add_epoch_position_errors(self, **errors): """ Private method building and returning the error block of the EpocPosition object. Returns ------- `Property` The EpochPosition error instance """ err_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:EpochPositionErrors", dmrole=f"{ModelPrefix.mango}:EpochPosition.errors") for role, mapping in errors.items(): error_class = mapping["class"] if (role in Roles.EpochPositionErrors and error_class in ["PErrorSym2D", "PErrorSym1D", "PErrorAsym1D"]): err_instance.add_instance( self._get_error_instance(error_class, f"{ModelPrefix.mango}:EpochPositionErrors.{role}", mapping)) return err_instance def add_epoch_position(self, space_frame_id, time_frame_id, mapping, semantics): """ Add an ``EpochPosition`` instance to the properties of the current ``MangoObject``. Both mapping and semantics arguments inherit from `pyvo.mivot.writer.InstancesFromModels.add_mango_epoch_position`. Parameters ---------- space_frame_id : string Identifier (dmid) of space system INSTANCE located in the GLOBALS time_frame_id : string Identifier (dmid) of time system INSTANCE located in the GLOBALS mapping : dict Mapping of the EpochPosition fields semantics : dict Mapping of the MangoObject property Returns ------- `Property` The EpochPosition instance """ ep_instance = Property(dmtype=f"{ModelPrefix.mango}:EpochPosition", semantics=semantics) MivotUtils.populate_instance(ep_instance, "EpochPosition", mapping, self._table, IvoaType.RealQuantity) if "obsDate" in mapping: if "dmtype" not in mapping["obsDate"] or "value" not in mapping["obsDate"]: raise MappingError("obsDate requires both 'dmtype' and 'value' keys") ep_instance.add_attribute(dmtype=mapping["obsDate"]["dmtype"], dmrole="mango:EpochPosition.obsDate", value=mapping["obsDate"]["value"]) if "correlations" in mapping: ep_instance.add_instance(self._add_epoch_position_correlations(**mapping["correlations"])) if "errors" in mapping: ep_instance.add_instance(self._add_epoch_position_errors(**mapping["errors"])) if space_frame_id: ep_instance.add_reference(dmrole=f"{ModelPrefix.mango}:EpochPosition.spaceSys", dmref=space_frame_id) if time_frame_id: ep_instance.add_reference(dmrole=f"{ModelPrefix.mango}:EpochPosition.timeSys", dmref=time_frame_id) self._properties.append(ep_instance) return ep_instance def add_brightness_property(self, filter_id, mapping, semantics={}): """ Add a ``Brightness`` instance to the properties of the current ``MangoObject``. Both mapping and semantics arguments inherit from `pyvo.mivot.writer.InstancesFromModels.add_mango_brightness`. Parameters ---------- filter_id : string Identifier (dmid) of the PhotCal INSTANCE located in the GLOBALS mapping : dict Mapping of the EpochPosition fields semantics : dict Mapping of the MangoObject property Returns ------- `Property` The Brightness instance """ # create the MIVOT instance mapping the MANGO property mag_instance = Property(dmtype=f"{ModelPrefix.mango}:Brightness", semantics=semantics) # set MANGO property attribute MivotUtils.populate_instance(mag_instance, "PhotometricProperty", mapping, self._table, IvoaType.RealQuantity) # build the error instance if it is mapped if "error" in mapping: error_mapping = mapping["error"] error_class = error_mapping["class"] mag_instance.add_instance( self._get_error_instance(error_class, f"{ModelPrefix.mango}:PhotometricProperty.error", error_mapping)) # add MIVOT reference to the photometric calibration instance mag_instance.add_reference(dmrole=f"{ModelPrefix.mango}:Brightness.photCal", dmref=filter_id) self._properties.append(mag_instance) return mag_instance def add_color_instance(self, filter_low_id, filter_high_id, mapping, semantics={}): """ Add an ``Color`` instance to the properties of the current ``MangoObject``. Both mapping and semantics arguments inherit from `pyvo.mivot.writer.InstancesFromModels.add_mango_color`. Parameters ---------- filter_low_id : string Identifier (dmid) of the low energy Photfilter INSTANCE located in the GLOBALS filter_high_id : string Identifier (dmid) of the high energy Photfilter INSTANCE located in the GLOBALS mapping : dict Mapping of the EpochPosition fields semantics : dict Mapping of the MangoObject property Returns ------- `Property` The Color instance """ error_mapping = mapping["error"] mag_instance = Property(dmtype=f"{ModelPrefix.mango}:Color", semantics=semantics) coldef_instance = MivotInstance(dmtype=f"{ModelPrefix.mango}:ColorDef", dmrole=f"{ModelPrefix.mango}:Color.colorDef") mapped_roles = MivotUtils._valid_mapped_dmroles(mapping.items(), "Color") def_found = False for dmrole, column in mapped_roles: if dmrole.endswith("definition"): def_found = True coldef_instance.add_attribute(dmtype="mango:ColorDefinition", dmrole="mango:ColorDef.definition", value=f"*{column}") if not def_found: raise MappingError("Missing color definition") mapping.pop("definition") MivotUtils.populate_instance(mag_instance, "PhotometricProperty", mapping, self._table, IvoaType.RealQuantity) coldef_instance.add_reference(dmrole=f"{ModelPrefix.mango}:ColorDef.low", dmref=filter_low_id) coldef_instance.add_reference(dmrole=f"{ModelPrefix.mango}:ColorDef.high", dmref=filter_high_id) error_class = error_mapping["class"] mag_instance.add_instance(self._get_error_instance(error_class, f"{ModelPrefix.mango}:PhotometricProperty.error", error_mapping)) mag_instance.add_instance(coldef_instance) self._properties.append(mag_instance) return mag_instance def get_mango_object(self, with_origin=False): """ Make and return the XML serialization of the MangoObject. Parameters ---------- with_origin : bool Ask for adding a reference (_origin) to the query origin possibly located in the GLOBALS Returns ------- string The XML serialization of the MangoObject """ mango_object = MivotInstance(dmtype="mango:MangoObject", dmid=self._dmid) if self._dmid: ref, value = MivotUtils.get_ref_or_literal(self._dmid) att_value = ref if ref else value mango_object.add_attribute(dmrole="mango:MangoObject.identifier", dmtype=IvoaType.string, value=att_value) if with_origin: mango_object.add_reference("mango:MangoObject.queryOrigin", "_origin") m_properties = [] for prop in self._properties: m_properties.append(prop.xml_string()) mango_object.add_collection("mango:MangoObject.propertyDock", m_properties) return mango_object astropy-pyvo-f0fdda3/pyvo/mivot/writer/mivot-v1.xsd000066400000000000000000000313341521254414300226350ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/mivot/writer/v1.1.xsd000066400000000000000000000416761521254414300216520ustar00rootroot00000000000000 Deprecated in Version 1.1 astropy-pyvo-f0fdda3/pyvo/mivot/writer/v1.2.xsd000066400000000000000000000520761521254414300216470ustar00rootroot00000000000000 VOTable1.2 is meant to serialize tabular documents in the context of Virtual Observatory applications. This schema corresponds to the VOTable document available from http://www.ivoa.net/Documents/latest/VOT.html Accept UCD1+ Accept also old UCD1 (but not / + %) including SIAP convention (with :) content-role was previsouly restricted as: ]]>; is now a name token. Deprecated in Version 1.2 Deprecated in Version 1.1 Added in Version 1.2: INFO for diagnostics The 'encoding' attribute is added here to avoid problems of code generators which do not properly interpret the TR/TD structures. 'encoding' was chosen because it appears in appendix A.5 The ID attribute is added here to the TR tag to avoid problems of code generators which do not properly interpret the TR/TD structures Added in Version 1.2: INFO for diagnostics Added in Version 1.2: INFO for diagnostics in several places astropy-pyvo-f0fdda3/pyvo/mivot/writer/v1.3.xsd000066400000000000000000000575351521254414300216550ustar00rootroot00000000000000 VOTable is meant to serialize tabular documents in the context of Virtual Observatory applications. This schema corresponds to the VOTable document available from http://www.ivoa.net/Documents/latest/VOT.html Accept UCD1+ Accept also old UCD1 (but not / + %) including SIAP convention (with :) content-role was previsouly restricted as: ]]>; is now a token. Values for this attribute must be taken from the IVOA refframe vocabulary, http://www.ivoa.net/rdf/refframe The reference position SHOULD be taken from the IVOA refposition vocabulary (http://www.ivoa.net/rdf/refposition). This is a time origin of a time coordinate, given as a Julian Date for the the time scale and reference point defined. It is usually given as a floating point literal; for convenience, the magic strings “MJD-origin� (standing for 2400000.5) and “JD-origin� (standing for 0) are also allowed. The time origin is the offset or the time coordinate to Julian Date. The timeorigin attribute MUST be given unless the time's representation contains a year of a calendar era, in which case it MUST NOT be present. This is the time scale used. Values SHOULD be taken from the IVOA timescale vocabulary (http://www.ivoa.net/rdf/timescale). The reference position SHOULD be taken from the IVOA refposition vocabulary (http://www.ivoa.net/rdf/refposition). Deprecated in Version 1.1 Added in Version 1.2: INFO for diagnostics The 'encoding' attribute is added here to avoid problems of code generators which do not properly interpret the TR/TD structures. 'encoding' was chosen because it appears in appendix A.5 The ID attribute is added here to the TR tag to avoid problems of code generators which do not properly interpret the TR/TD structures Added in Version 1.2: INFO for diagnostics Added in Version 1.2: INFO for diagnostics in several places astropy-pyvo-f0fdda3/pyvo/registry/000077500000000000000000000000001521254414300176255ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/registry/__init__.py000066400000000000000000000016721521254414300217440ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ a package for interacting with registries. The regtap module supports access to the IVOA Registries """ from .regtap import (search, ivoid2service, get_RegTAP_query, get_RegTAP_service_url, choose_RegTAP_service, RegistryResults, RegistryResource) from .rtcons import (Constraint, SubqueriedConstraint, Freetext, Author, Servicetype, Waveband, Datamodel, Ivoid, UCD, UAT, Spatial, Spectral, Temporal, RegTAPFeatureMissing) __all__ = ["search", "get_RegTAP_query", "get_RegTAP_service_url", "Constraint", "SubqueriedConstraint", "Freetext", "Author", "Servicetype", "Waveband", "Datamodel", "Ivoid", "UCD", "UAT", "Spatial", "Spectral", "Temporal", "choose_RegTAP_service", "RegTAPFeatureMissing", "RegistryResults", "RegistryResource",] astropy-pyvo-f0fdda3/pyvo/registry/regtap.py000066400000000000000000001302321521254414300214620ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ a module for basic VO Registry interactions. A VO registry is a database of VO resources--data collections and services--that are available for VO applications. Typically, it is aware of the resources from all over the world. A registry can find relevant data collections and services through search queries--typically, subject-based. The registry responds with a list of records describing matching resources. With a record in hand, the application can use the information in the record to access the resource directly. Most often, the resource is a data service that can be queried for individual datasets of interest. This module provides basic, low-level access to the RegTAP Registries using standardized TAP-based services. """ import collections import functools import itertools import os import textwrap import warnings from astropy import table from astropy.utils.decorators import deprecated from astropy.utils.exceptions import AstropyDeprecationWarning import numpy from . import rtcons from ..dal import scs, sia, sia2, ssa, sla, tap, query as dalq from ..io.vosi import vodataservice from ..utils.formatting import para_format_desc __all__ = ["search", "get_RegTAP_query", "get_RegTAP_service_url", "Interface", "RegistryResource", "RegistryResults", "ivoid2service"] REGISTRY_BASEURL = os.environ.get("IVOA_REGISTRY", "http://reg.g-vo.org/tap" ).rstrip("/") # ADQL only has string_agg, where we need string arrays. We fake arrays # by joining elements with a token separator that we think shouldn't # turn up in the things joined. Of course, people could create # resources that break us; let's assume there's nothing be gained # from that ever. TOKEN_SEP = ":::py VO sep:::" def shorten_stdid(s): """removes leading ivo://ivoa.net/std/ from s if present. We're using this to make the display and naming of standard ivoids less ugly in several places. Nones remain Nones. """ if s and s.startswith("ivo://ivoa.net/std/"): return s[19:] return s def expand_stdid(s): """returns s if it already looks like a URI, and it prepends ivo://ivoa.net/std otherwise. This is the (approximate) reverse of shorten_stdid. """ if s is None or "://" in s: return s return "ivo://ivoa.net/std/" + s def regularize_SIA2_id(standard_id): """returns standard_id with SIA2 standard ids modified to what they should have been. Regrettably, SIA2 uses the same standardID as SIA1; sure, they use different fragments, but that doesn't really help with the logic we have here. To make up for that, we replace them with the sia2 ids they should have had on input. This function assumes lowercased ids as they come from RegTAP services. """ if standard_id.startswith("ivo://ivoa.net/std/sia#query-2"): return "ivo://ivoa.net/std/sia2" elif standard_id.startswith("ivo://ivoa.net/std/sia#query-aux-2"): # query-aux-2 is mentioned in discovering data collections, # which isn't really the place to define this. But then # it's endorsed, and SIA2 doesn't say anything about it. return "ivo://ivoa.net/std/sia2#aux" else: return standard_id @functools.lru_cache(1) def get_RegTAP_service(): """ a lazily created TAP service offering the RegTAP services. Always get the TAP service there using this function to avoid re-creating the server and profit from caching of capabilties, tables, etc. To switch to a different RegTAP service, use :py:func:`choose_RegTAP_service`. """ return tap.TAPService(REGISTRY_BASEURL) def get_RegTAP_service_url(): """ Return the access URL of the currently configured RegTAP service. By default, pyVO uses whatever is given in the environment variable ``IVOA_REGISTRY``, defaulting to GAVO's TAP service. To change this use :py:func:`pyvo.registry.choose_RegTAP_service`. Returns ------- str The TAP access URL of the current RegTAP endpoint. """ return REGISTRY_BASEURL def choose_RegTAP_service(access_url): """ changes the RegTAP service used by :py:func:`search` to the one at access_url. By default, pyVO uses whatever is given in the environment variable ``IVOA_REGISTRY``, defaulting to GAVO's TAP service. In order to change the service used on the fly, always use this function in order to clear caches that need clearing. Parameters ---------- access_url : str The TAP access URL of the new RegTAP endpoints. To find alternate endpoints, try ``regsearch(datamodel='regtap')`` and look at ``.get_interface("tap").access_url`` of the results. """ global REGISTRY_BASEURL get_RegTAP_service.cache_clear() REGISTRY_BASEURL = access_url def get_RegTAP_query(*constraints: rtcons.Constraint, includeaux=False, service=None, **kwargs): """returns SQL for a RegTAP query for constraints and keywords. This function's parameters are as for search; this is basically a wrapper for rtcons.build_regtap_query maintaining the legacy keyword-based interface. """ # we don't document the service parameter -- it's probably not useful # to users and is just the conscequence of having retrofitted service # sensing into the API. if service is None: service = get_RegTAP_service() constraints = list(constraints) + rtcons.keywords_to_constraints(kwargs) # maintain legacy includeaux by locating any Servicetype constraints # and replacing them with ones that includes auxiliaries. if includeaux: for index, constraint in enumerate(constraints): if isinstance(constraint, rtcons.Servicetype): constraints[index] = constraint.include_auxiliary_services() return rtcons.build_regtap_query(constraints, service) def search(*constraints: rtcons.Constraint, includeaux: bool = False, maxrec: int = None, **kwargs): """ execute a simple query to the RegTAP registry. The function accepts query constraints either as Constraint objects passed in as positional arguments or as their associated keywords. For what constraints are available, see :ref:`registry-basic-interface`. The values of keyword arguments may be tuples or lists when the associated Constraint objects take multiple arguments. All constraints, whether passed in directly or via keywords, are evaluated as a conjunction (i.e., in an AND clause). Parameters ---------- *constraints : `~pyvo.registry.Constraint` instances The constraints (keywords to match, positions to cover, ...) that the returned records need to satisfy. The accepted constraints are: - keywords: one or more freetext words, mached in the title, description or subject of the resource. - servicetype: constrain to one of tap, ssa, sia, conesearch (or full ivoids for other service types). This is the constraint you want to use for service discovery. - ucd: constrain by one or more UCD patterns; resources match when they serve columns having a matching UCD (e.g., phot.mag;em.ir.% for "any infrared magnitude"). - waveband: one or more terms from the vocabulary at http://www.ivoa.net/rdf/messenger giving the rough spectral location of the resource. - author: an author ("creator"). This is a single SQL pattern, and given the sloppy practices in the VO for how to write author names, you should probably generously use wildcards. - datamodel: one of obscore, epntap, or regtap: only return TAP services having tables of this kind. - ivoid: exactly match a single IVOA identifier (that is, in effect, the primary key in the VO). - spatial: match resources covering a certain geometry (point, circle, polygon, or MOC). RegTAP 1.2 Extension. - spectral: match resources covering a certain part of the spectrum (usually, but not limited to, the electromagnetic spectrum). RegTAP 1.2 Extension - temporal: match resources covering a some point or interval in time. RegTAP 1.2 Extension Multiple constraints are combined conjunctively ("AND"). includeaux : bool Flag for whether to include auxiliary capabilities in results. This may result in duplicate capabilities being returned, especially if the servicetype is not specified. maxrec : int Overrides the RegTAP server's default limit on the number of rows to return. You may need to use this if you want to retrieve more than a few thousand matches. The server may also have a hard limit that ``maxrec`` cannot override. Note that truncated search results are not reproducible. **kwargs : strings, mostly shorthands for ``constraints``; see the documentation of a specific constraint for what keyword it uses and what literal it expects. Returns ------- ~pyvo.registry.RegistryResults` a container holding a table of matching resource (e.g. services) See Also -------- RegistryResults """ service = get_RegTAP_service() query = RegistryQuery( service.baseurl, get_RegTAP_query(*constraints, includeaux=includeaux, service=service, **kwargs), maxrec=maxrec) return query.execute() class RegistryQuery(tap.TAPQuery): def execute(self): """ submit the query and return the results as a RegistryResults instance Raises ------ DALServiceError for errors connecting to or communicating with the service DALQueryError for errors either in the input query syntax or other user errors detected by the service DALFormatError for errors parsing the VOTable response """ return RegistryResults(self.execute_votable(), url=self.queryurl) class RegistryResults(dalq.DALResults): """ an iterable set of results from a registry query. Each record is returned as RegistryResults You can iterate over these, or access them by (numeric) index; note, however, that these indexes will not be stable across different executions and thus should only be used in interactive sessions. Alternatively, you can use short names as indexes; there *might* be clashes for these, as they are not unique VO-wide. Where this matters, you need to use full ivoids as index. """ def getrecord(self, index): """ return all the attributes of a resource record with the given index as SimpleResource instance (a dictionary-like object). Parameters ---------- index : int the zero-based index of the record """ return RegistryResource(self, index) def get_summary(self): """ returns a brief overview of the matched results as an astropy table. This is mainly intended for interactive use, where people would like to inspect the matches in, perhaps, notebooks. """ return table.Table([ list(range(len(self))), [r.short_name for r in self], [r.res_title for r in self], [r.res_description for r in self], [", ".join(sorted(r.access_modes())) for r in self]], names=("index", "short_name", "title", "description", "interfaces"), descriptions=( "Index to access the resource within self", "Short name", "Resource title", "Resource description", "Access modes offered")) @functools.cache def _get_ivo_index(self): return {r.ivoid: index for index, r in enumerate(self)} @functools.cache def _get_short_name_index(self): return {r.short_name: index for index, r in enumerate(self)} def __getitem__(self, item): """ returns a record by numeric index, short names, or ivoid. This will raise an IndexError or a KeyError when item does not match a record returned. """ if isinstance(item, int): return self.getrecord(item) elif isinstance(item, str): if item.startswith("ivo://"): return self.getrecord(self._get_ivo_index()[item]) else: return self.getrecord(self._get_short_name_index()[item]) else: raise IndexError(f"No resource matching {item}") class _BrowserService: """A pseudo-service class just opening a web browser for browser-based services. """ def __init__(self, access_url, capability_description=None): self.baseurl = access_url self.capability_description = capability_description def __repr__(self): return f"BrowserService(baseurl : '{self.baseurl}', description : '{self.capability_description}')" def search(self): import webbrowser webbrowser.open(self.baseurl, 2) class Interface: """ a service interface. These consist of an access URL, a standard id for the capability (typically the ivoid of an IVOA standard, or None for free services), an interface type (something like vs:paramhttp or vr:webbrowser) and an indication if the interface is the "standard" interface of the capability. Such interfaces can be turned into services using the ``to_service`` method if pyvo knows how to talk to the interface. Note that the constructor arguments are assumed to be normalised as in regtap (e.g., lowercased for the standardIDs). """ service_for_standardid = { "ivo://ivoa.net/std/conesearch": scs.SCSService, "ivo://ivoa.net/std/sia": sia.SIAService, "ivo://ivoa.net/std/sia2": sia2.SIA2Service, "ivo://ivoa.net/std/ssa": ssa.SSAService, "ivo://ivoa.net/std/sla": sla.SLAService, "ivo://ivoa.net/std/tap": tap.TAPService} def __init__(self, access_url, *, standard_id=None, intf_type=None, intf_role=None, capability_description=None): self.access_url = access_url self.standard_id = standard_id self.type = intf_type self.role = intf_role self.capability_description = capability_description self.is_standard = self.role == "std" if self.standard_id is not None: self.is_vosi = self.standard_id.startswith("ivo://ivoa.net/std/vosi") else: self.is_vosi = False # a service is user visible if it has a corresponding service class if self.standard_id is not None and self.standard_id != "": service_type = self.standard_id.split("#")[0] # remove possible suffixes/standard keys self.is_user_visible = service_type in self.service_for_standardid # or if it is a webpage else: self.is_user_visible = self.type == "vr:webbrowser" def __repr__(self): if not self.standard_id or self.standard_id is None: return (f"Interface(type={self.type!r}, " f"description={self.capability_description!r}, " f"url={self.access_url!r})") return (f"Interface(type={self.standard_id.rsplit('/')[-1]!r}, " f"description={self.capability_description!r}, " f"url={self.access_url!r})") def to_service(self, *, session=None): if self.type == "vr:webbrowser": return _BrowserService(self.access_url, self.capability_description) if self.standard_id is None or not self.is_standard: raise ValueError("This is not a standard interface. PyVO" " cannot speak to it.") service_class = self.service_for_standardid.get( self.standard_id.split("#")[0]) if service_class is None: raise ValueError("PyVO has no support for interfaces with" f" standard id {self.standard_id}.") if service_class == sia2.SIA2Service: return service_class(self.access_url, capability_description=self.capability_description, check_baseurl=False, session=session) else: return service_class( self.access_url, capability_description=self.capability_description, session=session) def supports(self, standard_id): """returns true if we believe the interface should be able to talk standard_id. At this point, we naively check if the interfaces's standard_id has standard_id as a prefix. At this point, we cut off standard_id fragments for this purpose. This works for all current DAL standards but would, for instance, not work for VOSI. Hence, this may need further logic if we wanted to extend our service generation to VOSI or, perhaps, VOSpace. Parameters ---------- standard_id : str The ivoid of a standard. """ if not self.standard_id: return False standard_id = regularize_SIA2_id(standard_id) return self.standard_id.split("#")[0] == standard_id.split("#")[0] class RegistryResource(dalq.Record): """ a dictionary for the resource metadata returned in one record of a registry query. A SimpleResource acts as a dictionary, so in general, all attributes can be accessed by name via the [] operator, and the attribute names can by returned via the keys() function. For convenience, it also stores key values as properties; these include: """ _service = None # the following attribute is used by datasearch._build_regtap_query # to figure build the select clause; it is maintained here # because this class knows what it expects to get. # # Each item is either a plain string for a column name, or # a 2-tuple for an as clause; all plain strings are used # used in the group by, and so it is assumed they are # 1:1 to ivoid. expected_columns = [ "ivoid", "res_type", "short_name", "res_title", "content_level", "res_description", "reference_url", "creator_seq", "created", "updated", "rights", "content_type", "source_format", "source_value", "region_of_regard", "waveband", (f"\n ivo_string_agg(COALESCE(access_url, ''), '{TOKEN_SEP}')", "access_urls"), (f"\n ivo_string_agg(COALESCE(standard_id, ''), '{TOKEN_SEP}')", "standard_ids"), (f"\n ivo_string_agg(COALESCE(intf_type, ''), '{TOKEN_SEP}')", "intf_types"), (f"\n ivo_string_agg(COALESCE(intf_role, ''), '{TOKEN_SEP}')", "intf_roles"), (f"\n ivo_string_agg(COALESCE(cap_description, ''), '{TOKEN_SEP}')", "cap_descriptions")] def __init__(self, results, index, *, session=None): dalq.Record.__init__(self, results, index, session=session) self._mapping["access_urls" ] = self._parse_pseudo_array(self._mapping["access_urls"]) self._mapping["standard_ids"] = [ regularize_SIA2_id(id) for id in self._parse_pseudo_array(self._mapping["standard_ids"])] self._mapping["intf_types" ] = self._parse_pseudo_array(self._mapping["intf_types"]) self._mapping["intf_roles" ] = self._parse_pseudo_array(self._mapping["intf_roles"]) self._mapping["cap_descriptions" ] = self._parse_pseudo_array(self._mapping["cap_descriptions"]) self.interfaces = [Interface(props[0], standard_id=props[1], intf_type=props[2], intf_role=props[3], capability_description=props[4]) for props in itertools.zip_longest( self["access_urls"], self["standard_ids"], self["intf_types"], self["intf_roles"], self["cap_descriptions"])] @staticmethod def _parse_pseudo_array(literal): """ parses RegTAP pseudo-arrays into lists. Parameters ---------- literal : str the result of an ivo_string_agg call with TOKEN_SEP Returns ------- A list of strings corresponding to the orginal, database-side aggregate. """ if not literal: # As VOTable, we don't distinguish between None and "" return [] return literal.split(TOKEN_SEP) @property def ivoid(self): """ the IVOA identifier for the resource. """ return self.get("ivoid", decode=True) @property def res_type(self): """ the resource types that characterize this resource. """ return self.get("res_type", decode=True) @property def short_name(self): """ the short name for the resource """ return self.get("short_name", decode=True) @property def res_title(self): """ the title of the resource """ return self.get("res_title", default=None, decode=True) @property def content_levels(self): """ a list of content level labels that describe the intended audience for this resource. """ return self.get("content_level", default="", decode=True).split("#") @property def res_description(self): """ the textual description of the resource. """ return self.get("res_description", decode=True) @property def reference_url(self): """ URL pointing to a human-readable document describing this resource. """ return self.get("reference_url", decode=True) @property def creators(self): """ The creator(s) of the resource in the order given by the resource record author """ return self.get("creator_seq", default="", decode=True).split(";") @property def created(self): """Date of creation of the resource.""" return self.get("created", decode=True) @property def updated(self): """Date of last modification of the resource.""" return self.get("updated", decode=True) @property def rights(self): """A statement of usage conditions for the content of the resource. This information is often incomplete in the registry, you might get more information at the ``reference_url``. """ return self.get("rights", decode=True) @property def content_types(self): """ list of natures or genres of the content of the resource. """ return self.get("content_type", decode=True).split("#") @property def source_format(self): """ The format of source_value. """ return self.get("source_format", decode=True) @property def source_value(self): """ The bibliographic source for this resource (typically a bibcode or a DOI). """ return self.get("source_value", decode=True) @property def region_of_regard(self): """ numeric value representing the angle, given in decimal degrees, by which a positional query against this resource should be "blurred" in order to get an appropriate match. """ # we get NULLs as NaNs here val = self["region_of_regard"] if numpy.isnan(val): return None return val @property def waveband(self): """ a list of names of the wavebands that the resource provides data for """ return self.get("waveband", default="", decode=True).split("#") @property def access_url(self): """ the URL that can be used to access the service resource. """ # some services declare some data models using multiple # identifiers; in this case, we'll get the same access URL # multiple times in here. Be cool about that situation: access_urls = list(sorted(set(self["access_urls"]))) if len(access_urls) == 0: raise dalq.DALQueryError( f"The resource {self.ivoid} has no queriable interfaces.") elif len(access_urls) > 1: warnings.warn(AstropyDeprecationWarning( f"The resource {self.ivoid} has multiple capabilities. " " You should explicitly pick one using get_service. " " Returning some access_url now, but this behaviour " " may change in the future.")) return access_urls[0] @property def standard_id(self): """ the IVOA standard identifier """ standard_ids = list(set(self["standard_ids"])) if len(standard_ids) == 1: return standard_ids[0] else: raise dalq.DALQueryError( "This resource supports several standards ({})." " Use get_service or restrict your query using Servicetype." .format(", ".join(sorted(self.access_modes())))) def access_modes(self): """ returns a set of interface identifiers available on this resource. For standard interfaces, get_service will return a service suitable for querying if you pass in an identifier from this list as the service_type. This will ignore VOSI (infrastructure) services. """ return {shorten_stdid(intf.standard_id) or "web" for intf in self.interfaces if (intf.standard_id or intf.type == "vr:webbrowser") and not intf.is_vosi} def get_interface(self, *, service_type: str, lax: bool = False, std_only: bool = False, keyword: str = None): """returns a regtap.Interface class for service_type. The meaning of the parameters is as for get_service. This method does not return services, though, so you can use it to obtain access URLs and such for interfaces that pyVO does not (directly) support. Parameters ---------- service_type : str If you leave out ``service_type``, this will return a service for "the" standard interface of the resource. If a resource has multiple standard capabilities (e.g., both TAP and SSAP endpoints), this will raise a DALQueryError. Otherwise, a service of the given service type will be returned. Pass in an ivoid of a standard or one of the shorthands from rtcons.SERVICE_TYPE_MAP, or "web" for a web page (the "service" for this will be an object opening a web browser when you call its query method). lax : bool If there are multiple capabilities for service_type, the function choose the first matching capability by default Pass lax=False to instead raise a DALQueryError. std_only : bool Only return interfaces declared as "std". This is what you want when you want to construct pyVO service objects later. This parameter is ignored for the "web" service type. Returns ------- `~pyvo.registry.regtap.Interface` """ if service_type == "web": # this works very much differently in the Registry # than do the proper services candidates = [intf for intf in self.interfaces if intf.type == "vr:webbrowser"] else: service_type = expand_stdid( rtcons.SERVICE_TYPE_MAP.get( service_type, service_type)) candidates = [intf for intf in self.interfaces if ((not std_only) or intf.is_standard) and not intf.is_vosi and ((not service_type) or intf.supports(service_type))] if not candidates: raise ValueError("No matching interface.") if keyword is not None: candidates = [candidate for candidate in candidates if candidate.capability_description is not None and keyword in candidate.capability_description] if len(candidates) > 1 and not lax: raise ValueError("Multiple matching interfaces found. If you know that they are all equivalent, " "use 'lax=True'.\n" "Otherwise, the search can be constrained by specifying a 'service_type' " "or a 'keyword' to be found in the service description." " You might also want to see all the available services" " with `pyvo.registry.regtap.RegistryResource.list_interfaces()`.") return candidates[0] def get_service(self, service_type: str = None, *, lax: bool = False, keyword: str = None, session: object = None): """ return an appropriate DALService subclass for this resource that can be used to search the resource using service_type. Raise a ValueError if the service_type is not offered on the resource (or no standard service is offered). With lax=False, also raise a ValueError if multiple interfaces exist for the given service_type. VOSI (infrastructure) services are always ignored here. A magic service_type "web" can be passed in to get non-standard, browser-based interfaces. The service in this case is an object that opens a web browser if its query() method is called. Parameters ---------- service_type : str If you leave out ``service_type``, this will return a service for "the" standard interface of the resource. If a resource has multiple standard capabilities (e.g., both TAP and SSAP endpoints), this will raise a DALQueryError. Otherwise, a service of the given service type will be returned. Pass in an ivoid of a standard or one of the shorthands from rtcons.SERVICE_TYPE_MAP, or "web" for a web page (the "service" for this will be an object opening a web browser when you call its query method). lax : bool If there are multiple capabilities for service_type, the function choose the first matching capability by default Pass lax=False to instead raise a DALQueryError. keyword : str A keyword that should be in the service description. Some resources have multiple capabilities ("services") of the same type (see list_interfaces for a discussion). get_service will usually raise a ValueError in that case. Passing a ``keyword`` that uniquely identifies the capability to query will make get_service predictably return the desired service. Use list_interfaces to find such a unique description fragment. session : object optional requests session to use to communicate with the service constructed. Returns ------- `pyvo.dal.DALService` For standard service types, a specific DAL service instance (e.g., a `pyvo.dal.tap.TAPService` when requesting ``tap`` services) is returned. For ``web`` services, what is returned is an opaque service object that has a ``search()`` method simply opening a web browser on the access URL. See Also -------- list_interfaces : return a list with all the available services. """ return self.get_interface(service_type=service_type, lax=lax, std_only=True, keyword=keyword).to_service(session=session) @property def service(self): """ return a service for this resource. This will in general only work if the registry query has constrained the service type; otherwise, many resources will have multiple capabilities. Use get_service instead in such cases. See Also -------- get_service : select a service of a specific service type. list_interfaces : return a list with all the available interfaces to services. """ if self._service is not None: return self._service self._service = self.get_service(service_type=None, lax=True) return self._service def list_interfaces(self, service_type: str = None): """List the interfaces to services available for this registry record. The interface objects in the list can then be used to instantiate the service with the `~pyvo.registry.regtap.Interface.to_service` method. Parameters ---------- service_type : str, optional Restricts the list to interfaces corresponding to services of this service type. The list of possible values can be printed with ``pyvo.registry.rtcons.SERVICE_TYPE_MAP.keys()``. Returns ------- list A list of `~pyvo.registry.regtap.Interface` objects. See Also -------- get_service : when you already know that there is only one service of a specific service type. """ interfaces = [interface for interface in self.interfaces if interface.is_user_visible] if service_type is not None: service_type = expand_stdid(rtcons.SERVICE_TYPE_MAP.get(service_type, service_type)) interfaces = [interface for interface in interfaces if interface.is_standard and interface.supports(service_type)] return sorted(interfaces, key=lambda interface: interface.access_url) def search(self, *args, **keys): """ assuming this resource refers to a searchable service, execute a search against the resource. This is equivalent to: .. code:: python self.to_service().search(*args, **keys) The arguments provided should be appropriate for the service that the DAL service type would expect. See the documentation for the appropriate service type: ============ =========================================== Service type Use the argument syntax for ============ =========================================== catalog :py:meth:`pyvo.dal.scs.SCSService.search` sia :py:meth:`pyvo.dal.sia.SIAService.search` sia2 :py:meth:`pyvo.dal.sia2.SIA2Service.search` ssa :py:meth:`pyvo.dal.ssa.SSAService.search` line :py:meth:`pyvo.dal.sla.SLAService.search` database *not yet supported* ============ =========================================== Raises ------ DALServiceError if the resource does not describe a searchable service. """ try: return self.service.search(*args, **keys) except ValueError: # I blindly assume the ValueError comes out of get_interface. # But then that's likely enough. raise dalq.DALServiceError( f"Resource {self.ivoid} is not a searchable service") def describe(self, *, verbose=False, width=78, file=None): """ Print a summary description of this resource. Parameters ---------- verbose : bool If false (default), only user-oriented information is printed. If true, additional information -- reference url, reference to the related article, and alternative identifier (often a DOI) -- will be printed if available. width : int Format the description with given character-width. file : writable file-like object If provided, write information to this output stream. Otherwise, it is written to standard out. """ print(para_format_desc(self.res_title), file=file) print("Short Name: " + self.short_name, file=file) print("IVOA Identifier: " + self.ivoid, file=file) print("Access modes: " + ", ".join(sorted(self.access_modes())), file=file) for interface in self.list_interfaces(): if interface.is_user_visible: if interface.type == "vr:webbrowser": print(f"- webpage: {interface.access_url}", file=file) else: service_item = (f"- {interface.standard_id.rsplit('/')[-1]}: " f"{interface.access_url}") if interface.capability_description: service_item += f", description: {interface.capability_description}" print(textwrap.fill(service_item, width, subsequent_indent=" "), file=file) if self.res_description: print(file=file) print(para_format_desc(self.res_description), file=file) print(file=file) if self.waveband: val = (str(v) for v in self.waveband) print( para_format_desc("Waveband Coverage: " + ", ".join(val)), file=file) if verbose: if self.source_value: print(f"\nSource: {self.source_value}", file=file) if self.creators: # if any creator has a name longer than 70 characters, we # truncate it. creators = [f"{creator[:70]}..." if len(creator) > 70 else creator for creator in self.creators] nmax_authors = 5 if len(creators) <= nmax_authors: print(f"Authors: {', '.join(creators)}", file=file) else: print(f"Authors: {', '.join(creators[:nmax_authors])} et al.\n" "See creators attribute for the complete list of authors.", file=file) alt_identifiers = self.get_alt_identifiers() if alt_identifiers: print( "Alternative identifier(s): {}".format( ", ".join(alt_identifiers)), file=file) if self.reference_url: print("More info: " + self.reference_url, file=file) def get_contact(self): """ return contact information for this resource in a string. Use this to report bugs or unexpected downtime. """ res = get_RegTAP_service().run_sync(""" SELECT role_name, email, telephone FROM rr.res_role WHERE base_role='contact' AND ivoid={}""".format( rtcons.make_sql_literal(self.ivoid))) contacts = [] for row in res: contact = row["role_name"] if row["telephone"]: contact += f" ({row['telephone']})" if row["email"]: contact += f" <{row['email']}>" contacts.append(contact) return "\n".join(contacts) def get_alt_identifiers(self): """return a sequence of non-ivoid identifiers for the resource. This is typically used to provide a DOI for the resource. """ res = get_RegTAP_service().run_sync(""" SELECT alt_identifier FROM rr.alt_identifier WHERE ivoid={}""".format(rtcons.make_sql_literal(self.ivoid))) return [r["alt_identifier"] for r in res] def _build_vosi_column(self, column_row): """ return a io.vosi.vodataservice.Column element for a query result from get_tables. """ res = vodataservice.TableParam() for att_name in ["name", "ucd", "unit", "utype"]: setattr(res, att_name, column_row[att_name]) res.description = column_row["column_description"] # TODO: be more careful with the type; this isn't necessarily a # VOTable type (regrettably) res.datatype = vodataservice.VOTableType( arraysize=column_row["arraysize"], extendedType=column_row["extended_type"]) res.datatype.content = column_row["datatype"] return res def _build_vosi_table(self, table_row, columns): """ return a io.vosi.vodataservice.VODataServiceTable element for a query result from get_tables. """ res = vodataservice.VODataServiceTable() res.name = table_row["table_name"] res.title = table_row["table_title"] res.description = table_row["table_description"] res.utype = table_row["table_utype"] res._columns = [ self._build_vosi_column(row) for row in columns] res.origin = self return res def get_tables(self, *, table_limit=500): """ return the structure of the tables underlying the service. This returns a dict with table names as keys and vodataservice.VODataServiceTable objects as values (pretty much what tables returns for a TAP service). The table instances will have an ``origin`` attribute pointing back to the registry record. Note that not only TAP services can (and do) define table structures. The meaning of non-TAP tables is not always as clear. Also note that resources do not need to define tables at all. You will receive an empty dictionary if they don't. """ svc = get_RegTAP_service() tables = svc.run_sync( """SELECT table_name, table_description, table_index, table_title, table_utype FROM rr.res_table WHERE ivoid={}""".format( rtcons.make_sql_literal(self.ivoid))) if len(tables) > table_limit: raise dalq.DALQueryError(f"Resource {self.ivoid} reports" f" {len(tables)} tables. Pass a higher table_limit" " to see them all.") if len(tables) == 0: return {} all_columns = svc.run_sync( """SELECT name, ucd, unit, utype, datatype, arraysize, extended_type, column_description, table_index FROM rr.table_column WHERE ivoid={}""".format( rtcons.make_sql_literal(self.ivoid)), maxrec=1000000) columns_by_table = collections.defaultdict(list) for col_row in all_columns: columns_by_table[int(col_row["table_index"])].append(col_row) return { table_row["table_name"]: self._build_vosi_table( table_row, columns_by_table[int(table_row["table_index"])]) for table_row in tables } @deprecated("1.5", "ivoid2service does not work in the presence of" " multiple capabilities. Use" " registry.search(ivoid=...)[0].get_service('capname') instead.") def ivoid2service(ivoid, servicetype=None): """ return service(s) for a given IVOID. The servicetype option specifies the kind of service requested (conesearch, sia, sia2, ssa, slap, or tap). By default, if none is given, a list of all matching services is returned. """ constraints = [rtcons.Ivoid(ivoid)] if servicetype is not None: constraints.append(rtcons.Servicetype(servicetype)) resources = search(*constraints) if len(resources) == 0: if servicetype: raise dalq.DALQueryError(f"No resource {ivoid} with" f" {servicetype} capability.") else: raise dalq.DALQueryError(f"No resource {ivoid}") # We're grouping by ivoid in search, so if there's a result # there is only one. resource = resources[0] return resource.get_service(servicetype, lax=True) astropy-pyvo-f0fdda3/pyvo/registry/rtcons.py000066400000000000000000001267351521254414300215250ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Constraints for doing registry searches. The Constraint class encapsulates a query fragment in a RegTAP query, e.g., a keyword, a sky location, an author name, a class of services. They are used either directly as arguments to registry.search, or by passing keyword arguments into registry.search. The mapping from keyword arguments to constraint classes happens through the _keyword attribute in Constraint-derived classes. """ import datetime import warnings from astropy import units as u from astropy import constants from astropy.coordinates import SkyCoord from astropy.utils.exceptions import AstropyDeprecationWarning import numpy from ..dal import query as dalq from ..utils import vocabularies from .import regtap # Classes from this module are exposed at the higher level namespace, not listing them here __all__ = ["build_regtap_query"] # a mapping of service type shorthands to the ivoids of the # corresponding standards. This is mostly to keep legacy APIs. # In the future, preferably rely on shorten_stdid and expand_stdid # from regtap. SERVICE_TYPE_MAP = {k: "ivo://ivoa.net/std/" + v for k, v in [ ("image", "sia"), ("sia", "sia"), ("sia1", "sia"), ("spectrum", "ssa"), ("ssap", "ssa"), ("ssa", "ssa"), ("scs", "conesearch"), ("conesearch", "conesearch"), ("line", "slap"), ("slap", "slap"), ("table", "tap"), ("tap", "tap"), ]} # New-style standard IDs carry a #fragment with a minor version and cannot # be matched with equality, so we match them with LIKE patterns instead. NEW_STYLE_STDIDS = { "sia2": ("ivo://ivoa.net/std/sia#query-2.%", "ivo://ivoa.net/std/sia#query-aux-2.%"), "hats": ("ivo://ivoa.net/std/hats#hats-%", None), "hips": ("ivo://ivoa.net/std/hips#hips-1.%", None), } class RegTAPFeatureMissing(dalq.DALQueryError): """ Raised when the current RegTAP server does not support a feature needed for a constraint. This could be that it is missing some ADQL feature indispensible to write that constraint, or because it is missing a table or column. To recover, choose another RegTAP service. Search constraining ``datamodel="regtap"``, and then use `pyvo.registry.choose_RegTAP_service` with a TAP access URL discovered in this way. """ class _AsIs(str): """a sentinel class make `make_sql_literal` not escape a string. """ def make_sql_literal(value): """makes a SQL literal from a python value. This is not suitable as a device to ward against SQL injections; in what we produce, callers could produce arbitrary SQL anyway. The point of this function is to minimize surprises when building constraints. Parameters ---------- value : object Conceptually, the function should produces SQL literals for anything that might reasonably add up in a registry query. In reality, a ValueError will be raised for anything we do not know about. Returns ------- str A SQL literal. """ if isinstance(value, _AsIs): return value if isinstance(value, str): return "'{}'".format(value.replace("'", "''")) elif isinstance(value, bytes): return "'{}'".format(value.decode("ascii").replace("'", "''")) elif isinstance(value, (int, numpy.integer, float, numpy.floating)): return f'{value}' elif isinstance(value, datetime.datetime): return f"'{value.isoformat()}'" elif isinstance(value, set): return '('+", ".join(make_sql_literal(s) for s in sorted(value))+')' else: raise ValueError("Cannot format {} as a SQL literal" .format(repr(value))) def format_function_call(func_name, args): """make an ADQL literal for a function call with arguments. Parameters ---------- func_name : str the name of the function to call. args : sequence of anything python values for the arguments for the function. Returns ------- str ADQL ready for inclusion into a query. """ return "{}({})".format( func_name, ", ".join(make_sql_literal(a) for a in args)) class Constraint: """an abstract base class for data discovery contraints. These, essentially, are configurable RegTAP query fragments, consisting of a where clause, parameters for filling that, and possibly additional tables. Users construct concrete constraints with whatever they would like to constrain things with. To implement a new constraint, in the constructor set ``_condition`` to a string with {}-type replacement fields (assume all parameters are strings), and define ``fillers`` to be a dictionary with values for the _condition template. Don't worry about SQL-serialising the values, Constraint takes care of that. If you need your Constraint to be "lazy" (cf. Servicetype), it's ok to overrride get_search_condition without an upcall to Constraint. If your constraints need extra tables, give them in a list in _extra_tables. For the legacy x_search with keywords, define a _keyword attribute containing the name of the parameter that should generate such a constraint. When pickung up such keywords, sequence values will in general be unpacked and turned into sequences of constraints. Constraints that want to the all arguments in the constructor can set takes_sequence to True. """ # TODO: _extra_tables is only used in the legacy leg of # the fulltext constraint any more, and there it's wrong, too. # Let's do away with extra_tables and tell people to use # SubqueriedConstraint whenever they think they need it. _extra_tables = [] _condition = None _fillers = None _keyword = None takes_sequence = False def get_search_condition(self, service): """ Formats this constraint to an ADQL fragment. This takes the service the constraint is being executed on as an argument because constraints may be written differently depending on the service's features or refuse to run altogether. Parameters ---------- service : `~pyvo.dal.TAPService` The RegTAP service the query is supposed to be run on (that is relevant because we adapt to the features available on given services). Returns ------- str A string ready for inclusion into a WHERE clause. """ if self._condition is None: raise NotImplementedError("{} is an abstract Constraint" .format(self.__class__.__name__)) return self._condition.format(**self._get_sql_literals()) def _get_sql_literals(self): """ returns self._fillers as a dictionary of properly SQL-escaped literals. """ if self._fillers: return {k: make_sql_literal(v) for k, v in self._fillers.items()} return {} class SubqueriedConstraint(Constraint): """ An (abstract) constraint for when the constraint is over a table other than rr.resource. We need to be careful with these, because they will in general have 1:n relationships to rr.resource, and these will lead to duplicated interfaces if we just do the NATURAL JOIN we normally do. Instead, we have to resort to ivoid in (subquery) conditions. In particular, extra_tables will always be empty for these. To configure those, give the table to query in _subquery_table and _condition, _fillers, and _keyword as usual. The rest is taken care of by get_search_condition. """ _subquery_table = None def get_search_condition(self, service): if self._condition is None or self._subquery_table is None: raise NotImplementedError("{} is an abstract Constraint" .format(self.__class__.__name__)) return ("ivoid IN (SELECT DISTINCT ivoid FROM {subquery_table}" " WHERE {condition})".format( subquery_table=self._subquery_table, condition=self._condition.format(**self._get_sql_literals()))) class Freetext(Constraint): """ A constraint using plain text to match against title, description, subjects, and person names. """ _keyword = "keywords" def __init__(self, *words: str): """ Parameters ---------- *words : str One or more string arguments. It is recommended to pass multiple words in multiple strings arguments. You can pass in phrases (i.e., multiple words separated by space), but behaviour might then vary quite significantly between different registries. Examples -------- >>> from pyvo import registry >>> registry.Freetext("Gamma", "Ray", "Burst") # doctest: +IGNORE_OUTPUT """ self.words = words def get_search_condition(self, service): # cross-table ORs kill the query planner. We therefore # write the constraint as an IN condition on a UNION # of subqueries if we can (i.e., the service has UNION); # It may look as if this has to be really slow, but in fact it's almost # always a lot faster than direct ORs. if service.get_tap_capability().get_adql().get_feature( "ivo://ivoa.net/std/TAPRegExt#features-adql-sets", "UNION"): return self._get_union_condition(service) else: self._extra_tables = ["rr.res_subject"] return self._get_or_condition(service) def _get_union_condition(self, service): base_queries = [ "SELECT DISTINCT ivoid FROM rr.resource WHERE" " 1=ivo_hasword(res_description, {{{parname}}})", "SELECT DISTINCT ivoid FROM rr.resource WHERE" " 1=ivo_hasword(res_title, {{{parname}}})", "SELECT DISTINCT ivoid FROM rr.res_subject WHERE" " rr.res_subject.res_subject ILIKE {{{parpatname}}}"] self._fillers, subqueries = {}, [] for index, word in enumerate(self.words): parname = f"fulltext{index}" parpatname = f"fulltextpar{index}" self._fillers[parname] = word self._fillers[parpatname] = '%' + word + '%' args = locals() subqueries.append(" UNION ALL ".join( q.format(**args) for q in base_queries)) self._condition = " AND ".join( f"ivoid IN ({part})" for part in subqueries) return super().get_search_condition(service) def _get_or_condition(self, service): base_queries = [ " 1=ivo_hasword(res_description, {{{parname}}})", " 1=ivo_hasword(res_title, {{{parname}}})", " rr.res_subject.res_subject ILIKE {{{parpatname}}}"] self._fillers, conditions = {}, [] for index, word in enumerate(self.words): parname = f"fulltext{index}" parpatname = f"fulltextpar{index}" self._fillers[parname] = word self._fillers[parpatname] = '%' + word + '%' args = locals() conditions.append(" OR ".join( q.format(**args) for q in base_queries)) self._condition = " AND ".join(f"({part})" for part in conditions) return super().get_search_condition(service) class Author(SubqueriedConstraint): """ A constraint for creators (“authors�) of a resource; you can use SQL patterns here. The match is case-sensitive. """ _keyword = "author" _subquery_table = "rr.res_role" def __init__(self, name: str): """ Parameters ---------- name : str Note that regrettably there are no guarantees as to how authors are written in the VO. This means that you will generally have to write things like ``%Hubble%`` (% being “zero or more characters� in SQL) here. """ self._condition = "role_name LIKE {auth} AND base_role='creator'" self._fillers = {"auth": name} class Servicetype(Constraint): """ A constraint for for the availability of a certain kind of service on the result. The constraint normally is a custom keyword, one of: * ``sia``, ``sia1`` (SIAP version 1 services; prefer ``sia1`` for symmetry, although ``sia`` will be kept as the official IVOA short name for SIA1) * ``sia2`` (SIAP version 2 services) * ``ssa``, ``ssap`` (synonymous for SSAP services) * ``scs``, ``conesearch`` (synonymous for cone search services, prefer ``scs``) * ``line`` (for SLAP services) * ``tap``, ``table`` (synonymous for TAP services, prefer ``tap``) * ``image`` (a deprecated alias for sia) * ``spectrum`` (a deprecated alias for ssap) You can also pass in the standards' ivoid (which generally looks like ``ivo://ivoa.net/std/`` (except for SIA2) and have to be URIs with a scheme part in any case); note, however, that for standards pyVO does not know about it will not build service instances for you. Multiple service types can be passed in; a match in that case is for records having any of the service types passed in. Contrary to what the names of the service types may suggest, “image� and "spectrum" do *not* select all resources serving images or spectra. For instance, at the moment you would have to search for images served in three different ways: SIAv1, SIAv2, and ObsTAP. Against that, “image� only selects SIAv1, and "spectrum" similarly omits ObsTAP. A global discovery module is under active development to provide global dataset discovery. When it is ready, these two misleading options may be removed. The match is literal (i.e., no patterns are allowed); this means that you will not receive records that only have auxiliary services, which is what you want when enumerating all services of a certain type in the VO. In data discovery, you can use ``Servicetype(...).include_auxiliary_services()`` or use registry.search's ``includeaux`` parameter; but, really, there is little point using this constraint in data discovery in the first place. """ _keyword = "servicetype" def __init__(self, *stds): """ Parameters ---------- *stds : str one or more standards identifiers. The constraint will match records that have any of them. """ self.stdids = set() self.like_patterns = set() for std in stds: if std in ('image', 'spectrum'): warnings.warn(AstropyDeprecationWarning( f"The '{std}' servicetype is deprecated. See" " https://pyvo.readthedocs.io/en/latest/api/pyvo.registry" ".Servicetype.html#pyvo.registry.Servicetype" " for more information.")) if std in SERVICE_TYPE_MAP: self.stdids.add(SERVICE_TYPE_MAP[std]) elif "://" in std: self.stdids.add(std) elif std in NEW_STYLE_STDIDS: self.like_patterns.add(NEW_STYLE_STDIDS[std][0]) else: raise dalq.DALQueryError("Service type {} is neither a full" " standard URI nor one of the bespoke identifiers" " {}, {}".format(std, ", ".join(SERVICE_TYPE_MAP), ", ".join(NEW_STYLE_STDIDS))) def clone(self): """returns a copy of this servicetype constraint. """ new_constraint = Servicetype() new_constraint.stdids = set(self.stdids) new_constraint.like_patterns = set(self.like_patterns) return new_constraint def get_search_condition(self, service): # we sort to make it easy for tests (and it's # virtually free for the small sets we have here). fragments = [] std_ids = ", ".join(make_sql_literal(s) for s in sorted(self.stdids)) if std_ids: fragments.append(f"standard_id IN ({std_ids})") for pattern in sorted(self.like_patterns): fragments.append(f"standard_id like '{pattern}'") return " OR ".join(fragments) def include_auxiliary_services(self): """returns a Servicetype constraint that has self's service types but includes the associated auxiliary services. This is a convenience to maintain registry.search's signature. """ expanded = self.clone() expanded.stdids |= {std + '#aux' for std in expanded.stdids} for main_pattern, aux_pattern in NEW_STYLE_STDIDS.values(): if main_pattern in expanded.like_patterns and aux_pattern: expanded.like_patterns.add(aux_pattern) return expanded class Waveband(Constraint): """ A constraint on messenger particles. This builds a constraint against rr.resource.waveband, i.e., a verbal indication of the messenger particle, coming from the IVOA vocabulary http://www.ivoa.net/rdf/messenger. The :py:class:`pyvo.registry.Spectral` constraint enables selections by particle energy, but few resources actually give the necessary metadata (in 2021). Multiple wavebands can be given (and are effectively combined with OR). """ _keyword = "waveband" _legal_terms = None def __init__(self, *bands): """ Parameters ---------- *bands : strings One or more of the terms given in http://www.ivoa.net/rdf/messenger. The constraint matches when a resource declares at least one of the messengers listed. """ if self.__class__._legal_terms is None: self.__class__._legal_terms = {w.lower() for w in vocabularies.get_vocabulary("messenger")["terms"]} bands = [band.lower() for band in bands] for band in bands: if band not in self._legal_terms: raise dalq.DALQueryError( f"Waveband {band} is not in the IVOA messenger" " vocabulary http://www.ivoa.net/rdf/messenger.") self.bands = list(bands) self._condition = " OR ".join( "1 = ivo_hashlist_has(rr.resource.waveband, {})".format( make_sql_literal(band)) for band in self.bands) class Datamodel(SubqueriedConstraint): """ A constraint on the adherence to a data model. This constraint only lets resources pass that declare support for one of several well-known data models; the SQL produced depends on the data model identifier. Records returned with these constraints will have a TAP (or auxiliary TAP) capability. Known data models at this point include: * obscore -- generic observational data * epntap -- solar system data * regtap -- the VO registry. * obscore-new -- the table-based new-style obscore discovery. Don't use in code built to last: this will become normal obscore when we have migrated the VO. DM names are matched case-insensitively here mainly for historical reasons. """ _keyword = "datamodel" # if you add to this list, you have to define a method # _make__constraint. _known_dms = {"obscore", "epntap", "regtap", "obscore_new"} def __init__(self, dmname): """ Parameters ---------- dmname : string A well-known name; currently one of obscore, epntap, and regtap. """ dmname = dmname.lower() if dmname not in self._known_dms: raise dalq.DALQueryError("Unknown data model id {}. Known are: {}." .format(dmname, ", ".join(sorted(self._known_dms)))) self._subquery_table, self._condition = getattr( self, f"_make_{dmname}_constraint")() def _make_obscore_constraint(self): # There was a bit of chaos with the DM ids for Obscore. # Be lenient here obscore_pat = 'ivo://ivoa.net/std/obscore%' return "rr.res_detail", ( "detail_xpath = '/capability/dataModel/@ivo-id'" f" AND 1 = ivo_nocasematch(detail_value, '{obscore_pat}')") def _make_obscore_new_constraint(self): return "rr.res_table NATURAL JOIN rr.resource", ( "table_utype LIKE 'ivo://ivoa.net/std/obscore#table-1.%'" # Only use catalogresource-typed records to keep out # full TAP services that may have the table in their # tablesets. " AND res_type = 'vs:catalogresource'") def _make_epntap_constraint(self): # we include legacy, pre-IVOA utypes for matches; lowercase # any new identifiers (utypes case-fold). return "rr.res_table", " OR ".join( f"table_utype LIKE '{pat}'" for pat in ['ivo://vopdc.obspm/std/epncore#schema-2.%', 'ivo://ivoa.net/std/epntap#table-2.%']) def _make_regtap_constraint(self): regtap_pat = 'ivo://ivoa.net/std/RegTAP#1.%' return "rr.res_detail", ( "detail_xpath = '/capability/dataModel/@ivo-id'" f" AND 1 = ivo_nocasematch(detail_value, '{regtap_pat}')") class Ivoid(Constraint): """ A constraint selecting a single resource by its IVOA identifier. """ _keyword = "ivoid" def __init__(self, ivoid, *more_ivoids): """ Parameters ---------- ivoid : string One or more string arguments. The IVOA identifier of the resource to match. As RegTAP requires lowercasing ivoids on ingestion, the constraint lowercases the ivoid passed in, too. more_ivoids : strings You can pass in multiple ivoids to match. As usual, they are combined by an or. """ self.ivoids = [id.lower() for id in (ivoid,) + more_ivoids] def get_search_condition(self, service): return " OR ".join( f"ivoid={make_sql_literal(id)}" for id in self.ivoids) class UCD(SubqueriedConstraint): """ A constraint selecting resources having tables with columns having UCDs matching a SQL pattern (% as wildcard). """ _keyword = "ucd" _subquery_table = "rr.table_column" def __init__(self, *patterns): """ Parameters ---------- patterns : strings SQL patterns (i.e., ``%`` is 0 or more characters) for UCDs. The constraint will match when a resource has at least one column matching one of the patterns. """ self._condition = " OR ".join( f"ucd LIKE {{ucd{i}}}" for i in range(len(patterns))) self._fillers = {f"ucd{index}": pattern for index, pattern in enumerate(patterns)} class UAT(SubqueriedConstraint): """ A constraint selecting resources having UAT keywords as subjects. The UAT (Unified Astronomy Thesaurus) is a hierarchical system of concepts in astronomy. In the VO, its concept identifiers are dashed strings, something like ``x-ray-transient-sources``. The full list of identifiers is available from http://www.ivoa.net/rdf/uat. Note that not all data providers properly use UAT keywords in their subjects even in 2025 (they should, though), and their keyword assignments may not always be optimal. Consider doing free text searches if UAT-based results are disappointing, and then telling the respective data providers about missing keywords. """ _keyword = "uat" _subquery_table = "rr.res_subject" _condition = "res_subject in {query_terms}" _uat = None @classmethod def _expand(cls, term, level, direction): """ Recursively expand term in the uat. This returns a set of concepts that are ``level`` levels wider or narrower (depending on the value of ``direction``) than term. This function assumes the _uat class attribute has been filled before; that is the case once a constraint has been constructed. Parameters ---------- term: str the start term level: int expand this many levels direction: str either ``wider`` to expand towards more general concepts or ``narrower`` to expand toward more specialised concepts. """ result = {term} new_concepts = cls._uat[term][direction] if level: for concept in new_concepts: result |= cls._expand(concept, level-1, direction) return result def __init__(self, uat_keyword, *, expand_up=0, expand_down=0): """ Parameters ---------- uat_keyword: str An identifier from http://www.ivoa.net/rdf/uat, i.e., a string like type-ib-supernovae. Note that these are always all-lowercase. expand_up: int In addition to the concept itself, also include expand_up levels of parent concepts (this is probably rarely makes sense beyond 1). expand_down: int In addition to the concept itself, also include expand_down levels of more specialised concepts (this is usually a good idea; having more than 10 here for now is equivalent to infinity). """ if self.__class__._uat is None: self.__class__._uat = vocabularies.get_vocabulary("uat")["terms"] if uat_keyword not in self._uat: raise dalq.DALQueryError( f"{uat_keyword} does not identify an IVOA uat" " concept (see http://www.ivoa.net/rdf/uat).") query_terms = {uat_keyword} if expand_up: query_terms |= self._expand(uat_keyword, expand_up, "wider") if expand_down: query_terms |= self._expand(uat_keyword, expand_down, "narrower") self._fillers = {"query_terms": query_terms} class Spatial(SubqueriedConstraint): """ A RegTAP constraint selecting resources covering a geometry in space. This is a RegTAP 1.2 extension not yet available on all Registries (in 2022). Also note that not all data providers give spatial coverage for their resources. To find resources having data for RA/Dec 347.38/8.6772:: >>> from pyvo import registry >>> resources = registry.Spatial((347.38, 8.6772)) To find resources claiming to have data for a spherical circle 2 degrees around that point:: >>> resources = registry.Spatial((347.38, 8.6772, 2)) To find resources claiming to have data for a polygon described by the vertices (23, -40), (26, -39), (25, -43) in ICRS RA/Dec:: >>> resources = registry.Spatial([23, -40, 26, -39, 25, -43]) To find resources claiming to cover a MOC_, pass an ASCII MOC:: >>> resources = registry.Spatial("0/1-3 3/") .. _MOC: https://www.ivoa.net/documents/MOC/ To find resources which coverage is enclosed in a region, >>> enclosed = registry.Spatial("0/0-11", intersect="enclosed") To find resources which coverage intersects a region, >>> overlaps = registry.Spatial("0/0-11", intersect="overlaps") When you already have an astropy SkyCoord:: >>> from astropy.coordinates import SkyCoord >>> resources = registry.Spatial(SkyCoord("23d +3d")) SkyCoords also work as circle centers (plain floats for the radius are interpreted in degrees):: >>> resources = registry.Spatial((SkyCoord("23d +3d"), 3)) Or you can provide the radius angle as an Astropy Quantity: >>> resources = registry.Spatial((SkyCoord("23d +3d"), 1*u.rad)) """ _keyword = "spatial" _subquery_table = "rr.stc_spatial" takes_sequence = True def __init__(self, geom_spec, *, order=6, intersect="covers", inclusive=False): """ Parameters ---------- geom_spec : object For now, this is DALI-style: a 2-sequence is interpreted as a DALI point, a 3-sequence as a DALI circle, a 2n sequence as a DALI polygon. Additionally, strings are interpreted as ASCII MOCs, SkyCoords as points, and a pair of a SkyCoord and a float or Quantity as a circle. Other types (proper geometries or MOCPy objects) might be supported in the future. order : int, optional Non-MOC geometries are converted to MOCs before comparing them to the resource coverage. By default, this constraint uses order 6, which corresponds to about a degree of resolution and is what RegTAP recommends as a sane default for the order actually used for the coverages in the database. intersect : str, optional Allows to specify the connection between the resource coverage and the *geom_spec*. The possible values are 'covers' for services that completely cover the *geom_spec* region, 'enclosed' for services completely enclosed in the region and 'overlaps' for services which coverage intersect the region. inclusive : bool, optional Normally, this constraint will remove all resources that do not declare their spatial coverage. Pass inclusive=True to retain these. """ self.inclusive = inclusive def tomoc(s): return _AsIs(f"MOC({order}, {s})") if isinstance(geom_spec, str): geom = _AsIs("MOC({})".format( make_sql_literal(geom_spec))) elif isinstance(geom_spec, SkyCoord): geom = tomoc(format_function_call("POINT", (geom_spec.ra.value, geom_spec.dec.value))) elif len(geom_spec) == 2: if isinstance(geom_spec[0], SkyCoord): # If radius given is astropy quantity, then convert to degrees if isinstance(geom_spec[1], u.Quantity): if geom_spec[1].unit.physical_type != 'angle': raise ValueError("Radius quantity is not of type angle.") radius = geom_spec[1].to(u.deg).value else: radius = geom_spec[1] geom = tomoc(format_function_call("CIRCLE", [geom_spec[0].ra.value, geom_spec[0].dec.value, radius])) else: geom = tomoc(format_function_call("POINT", geom_spec)) elif len(geom_spec) == 3: geom = tomoc(format_function_call("CIRCLE", geom_spec)) elif len(geom_spec) % 2 == 0: geom = tomoc(format_function_call("POLYGON", geom_spec)) else: raise ValueError("This constraint needs DALI-style geometries.") if intersect == "covers": self._condition = f"1 = CONTAINS({geom}, coverage)" elif intersect == "enclosed": self._condition = f"1 = CONTAINS(coverage, {geom})" elif intersect == "overlaps": self._condition = f"1 = INTERSECTS(coverage, {geom})" else: raise ValueError("'intersect' should be one of 'covers', 'enclosed', or 'overlaps' " f"but its current value is '{intersect}'.") def get_search_condition(self, service): # we *could* make this a bit less demanding on the server # if we MOC-ified the geometries locally -- but then we'd # have to depend on pymoc, and that's too high a price for # something as esoteric as a server that understands # MOC-based geometries but does not have a MOC function. if not service.get_tap_capability().get_adql().get_feature( "ivo://org.gavo.dc/std/exts#extra-adql-keywords", "MOC"): raise RegTAPFeatureMissing( "Current RegTAP service does not support MOC.") # We should compare case-insensitively here, but then we don't # with delimited identifiers -- in the end, that would have to # be handled in dal.vosi.VOSITables. if "rr.stc_spatial" not in service.tables: raise RegTAPFeatureMissing( "stc_spatial missing on current RegTAP service") cond = super().get_search_condition(service) if self.inclusive: return cond[:-1]+" OR coverage IS NULL)" else: return cond class Spectral(SubqueriedConstraint): """ A RegTAP constraint on the spectral coverage of resources. This is a RegTAP 1.2 extension not yet available on all Registries (in 2022). Worse, not too many resources bother declaring this at this point. For robustness, it might be preferable to use the `Waveband` constraint for the time being.. This constraint accepts quantities, i.e., values with units, and will convert them to RegTAP's representation (which is Joule of particle energy) if it can. This ought to work for wavelengths, frequencies, and energies. Plain numbers are interpreted as particle energies in Joule. RegTAP uses the observer frame at the solar system barycenter, but it is probably wise to use constraints suitably relaxed such that frame and reference position (within reason) do not matter. To find resources covering the messenger particle energy 5 eV:: >>> from astropy import units as u >>> from pyvo import registry >>> resources = registry.Spectral(5*u.eV) To find resources overlapping the band between 5000 and 6000 Ångström:: >>> resources = registry.Spectral((5000*u.Angstrom, 6000*u.Angstrom)) To find resources having data in the FM band:: >>> resources = registry.Spectral((88*u.MHz, 102*u.MHz)) """ _keyword = "spectral" _subquery_table = "rr.stc_spectral" takes_sequence = True def __init__(self, spec, *, inclusive=False): """ Parameters ---------- spec : astropy.Quantity or a 2-tuple of astropy.Quantity-s A spectral point or interval to cover. This must be a wavelength, a frequency, or an energy, or a pair of such quantities, in which case the argument is interpreted as an interval. All resources *overlapping* the interval are returned. Plain floats are interpreted as messenger energy in Joule. inclusive : bool, optional Normally, this constraint will remove all resources that do not declare their spectral coverage. Pass inclusive=True to retain these. """ self.inclusive = inclusive if isinstance(spec, tuple): self._fillers = { "spec_lo": self._to_joule(spec[0]), "spec_hi": self._to_joule(spec[1])} self._condition = ("1 = ivo_interval_overlaps(" "spectral_start, spectral_end, {spec_lo}, {spec_hi})") else: self._fillers = { "spec": self._to_joule(spec)} self._condition = "{spec} BETWEEN spectral_start AND spectral_end" def _to_joule(self, quant): """returns a spectral quantity as a float in joule. A plain float is returned as-is. """ if isinstance(quant, (float, int)): return quant try: # is it an energy? return quant.to(u.Joule).value except u.UnitConversionError: pass # try next try: # is it a wavelength? return (constants.h * constants.c / quant.to(u.m)).value except u.UnitConversionError: pass # try next try: # is it a frequency? return (constants.h * quant.to(u.Hz)).value except u.UnitConversionError: pass # fall through to give up raise ValueError(f"Cannot make a spectral quantity out of {quant}") def get_search_condition(self, service): if "rr.stc_spectral" not in service.tables: raise RegTAPFeatureMissing( "stc_spectral missing on current RegTAP service") cond = super().get_search_condition(service) if self.inclusive: return (f"({cond}) OR NOT EXISTS(" "SELECT 1 FROM rr.stc_spectral AS inner_s WHERE" " inner_s.ivoid=rr.resource.ivoid)") else: return cond class Temporal(SubqueriedConstraint): """ A RegTAP constraint on the temporal coverage of resources. This is a RegTAP 1.2 extension not yet available on all Registries (in 2022). Worse, not too many resources bother declaring this at this point. Until this changes, you will probably have a lot of false negatives (i.e., resources that should match but do not because they are not declaring their time coverage) if you use this constraint. This constraint accepts astropy Time instances or pairs of Times when specifying intervals. Plain numbers will be interpreted as MJD. RegTAP uses TDB times at the solar system barycenter, and it is probably wise to relax constraints such that such details do not matter. This constraint does not attempt any conversions of time scales or reference positions. To find resources claiming to have data for Jan 10, 2022:: >>> from pyvo import registry >>> from astropy.time import Time >>> resources = registry.Temporal(Time('2022-01-10')) To find resources claiming to have data for some time between MJD 54130 and 54200:: >>> resources = registry.Temporal((54130, 54200)) """ _keyword = "temporal" _subquery_table = "rr.stc_temporal" takes_sequence = True def __init__(self, times, *, inclusive=False): """ Parameters ---------- spec : astropy.Time or a 2-tuple of astropy.Time-s A point in time or time interval to cover. Plain numbers are interpreted as MJD. All resources *overlapping* the interval are returned. inclusive : bool, optional Normally, this constraint will remove all resources that do not declare their temproal coverage. Pass inclusive=True to retain these. """ self.inclusive = inclusive if isinstance(times, tuple): self._fillers = { "time_lo": self._to_mjd(times[0]), "time_hi": self._to_mjd(times[1])} self._condition = ("1 = ivo_interval_overlaps(" "time_start, time_end, {time_lo}, {time_hi})") else: self._fillers = { "time": self._to_mjd(times)} self._condition = "{time} BETWEEN time_start AND time_end" def _to_mjd(self, quant): """returns a time specification in MJD. Times not corresponding to a single point in time are rejected. A plain float is returned as-is. """ if isinstance(quant, (float, int)): return quant val = quant.to_value('mjd') if not isinstance(val, numpy.number): raise ValueError("RegTAP time constraints must be made from" " single time instants.") return val def get_search_condition(self, service): if "rr.stc_temporal" not in service.tables: raise RegTAPFeatureMissing( "stc_temporal missing on current RegTAP service") cond = super().get_search_condition(service) if self.inclusive: return (f"({cond}) OR NOT EXISTS(" "SELECT 1 FROM rr.stc_temporal AS inner_t WHERE" " inner_t.ivoid=rr.resource.ivoid)") else: return cond # NOTE: If you add new Contraint-s, don't forget to add them in # registry.__init__, in docs/registry/index.rst and in the docstring # of regtap.query. def build_regtap_query(constraints, service): """returns a RegTAP query ready for submission from a list of Constraint instances. Parameters ---------- constraints : sequence of `~pyvo.registry.Constraint`-s A sequence of constraints for a RegTAP query. All of them will become part of a conjunction (i.e., all of them have to be satisfied for a record to match). service : `~pyvo.dal.TAPService` The RegTAP service the query is supposed to be run on (that is relevant because we adapt to the features available on given services). Returns ------- str An ADQL literal ready for submission to a RegTAP service. """ if not constraints: raise dalq.DALQueryError( "No search parameters passed to registry search") serialized, extra_tables = [], set() for constraint in constraints: if isinstance(constraint, str): constraint = Freetext(constraint) serialized.append( "(" + constraint.get_search_condition(service) + ")") extra_tables |= set(constraint._extra_tables) joined_tables = ["rr.resource", "rr.capability", "rr.interface" ] + list(sorted(extra_tables)) # see comment in regtap.RegistryResource for the following # oddity select_clause, plain_columns = [], [] for col_desc in regtap.RegistryResource.expected_columns: if isinstance(col_desc, str): select_clause.append(col_desc) plain_columns.append(col_desc) else: select_clause.append("{} AS {}".format(*col_desc)) fragments = ["SELECT", ", ".join(select_clause), "FROM", "\nNATURAL LEFT OUTER JOIN ".join(joined_tables), "WHERE", "\n AND ".join(serialized), "GROUP BY", ", ".join(plain_columns)] return "\n".join(fragments) def keywords_to_constraints(keywords): """returns constraints expressed as keywords as Constraint instances. Parameters ---------- keywords : dict regsearch arguments as a kwargs-style dictionary. Returns ------- sequence of `Constraint`-s Raises ------ DALQueryError if an unknown keyword is encountered. """ constraints = [] for keyword, value in keywords.items(): if keyword not in _KEYWORD_TO_CONSTRAINT: raise TypeError(f"{keyword} is not a valid registry" " constraint keyword. Use one of {}.".format( ", ".join(sorted(_KEYWORD_TO_CONSTRAINT)))) constraint_class = _KEYWORD_TO_CONSTRAINT[keyword] if (isinstance(value, (tuple, list)) and not constraint_class.takes_sequence): constraints.append(constraint_class(*value)) else: constraints.append(constraint_class(value)) return constraints def _make_constraint_map(): """returns a map of _keyword to constraint classes. This is used in module initialisation. """ keyword_to_constraint = {} for att_name, obj in globals().items(): if (isinstance(obj, type) and issubclass(obj, Constraint) and obj._keyword): keyword_to_constraint[obj._keyword] = obj return keyword_to_constraint _KEYWORD_TO_CONSTRAINT = _make_constraint_map() astropy-pyvo-f0fdda3/pyvo/registry/tests/000077500000000000000000000000001521254414300207675ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/registry/tests/__init__.py000066400000000000000000000001001521254414300230670ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/registry/tests/commonfixtures.py000066400000000000000000000041171521254414300244260ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Common fixtures for pyVO registry tests """ import pytest from astropy.utils.data import ( get_pkg_data_filename, import_file_to_cache) # We need to populate the vocabulary cache with our test data; # we cannot use requests_mock here because a.u.data uses urllib. from astropy.utils.data import _get_download_cache_loc, _url_to_dirname # noqa: F401 @pytest.fixture() def messenger_vocabulary(mocker): """the IVOA messenger vocabulary in astropy's cache. Should we clean up after ourselves? """ import_file_to_cache( 'http://www.ivoa.net/rdf/messenger', get_pkg_data_filename( 'data/messenger.desise', package=__package__)) # We need an object standing in for TAP services for query generation. # It would perhaps be nice to pull up a real TAPService instance from # capabilities and tables, but that's a non-trivial amount of XML. # Let's see how far we get with faking it. class _FakeLanguage: """ a stand-in for vosi.tapregext.Language for rtcons.Constrants. """ def __init__(self, features): self.features = features def get_feature(self, type, form): return (type, form) in self.features class _FakeTAPService: """ A stand-in for a TAP service intended for rtcons.Constraints. features is a set of (type, form) tuples for now. tables is a dict with table names as keys (let's worry about the values later). """ def __init__(self, features, tables): self.tables = tables adql_lang = _FakeLanguage(features) class _: def get_adql(otherself): return adql_lang self.tap_cap = _() def get_tap_capability(self): return self.tap_cap FAKE_GAVO = _FakeTAPService({ ("ivo://ivoa.net/std/TAPRegExt#features-adql-sets", "UNION"), ("ivo://org.gavo.dc/std/exts#extra-adql-keywords", "MOC"), }, { "rr.stc_spatial": None, "rr.stc_spectral": None, "rr.stc_temporal": None, }) FAKE_PLAIN = _FakeTAPService(frozenset(), {}) astropy-pyvo-f0fdda3/pyvo/registry/tests/conftest.py000066400000000000000000000012661521254414300231730ustar00rootroot00000000000000from contextlib import contextmanager import pytest import requests_mock class ContextAdapter(requests_mock.Adapter): """ requests_mock adapter where ``register_uri`` returns a context manager """ @contextmanager def register_uri(self, *args, **kwargs): matcher = super().register_uri(*args, **kwargs) yield matcher self.remove_matcher(matcher) def remove_matcher(self, matcher): if matcher in self._matchers: self._matchers.remove(matcher) @pytest.fixture(scope='function') def mocker(): with requests_mock.Mocker( adapter=ContextAdapter(case_sensitive=True) ) as mocker_ins: yield mocker_ins astropy-pyvo-f0fdda3/pyvo/registry/tests/data/000077500000000000000000000000001521254414300217005ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/registry/tests/data/README000066400000000000000000000001421521254414300225550ustar00rootroot00000000000000Instructions for how to update these data items should be found in the fixtures in test_regtap.py astropy-pyvo-f0fdda3/pyvo/registry/tests/data/capabilities.xml000066400000000000000000000504011521254414300250530ustar00rootroot00000000000000 http://dc.zah.uni-heidelberg.de/taphttps://dc.zah.uni-heidelberg.de/tapGloTS 1.0Registry 1.1Obscore-1.1ADQL2.02.1The Astronomical Data Query Language is the standard IVOA dialect of SQL; it contains a very general SELECT statement as well as some extensions for spherical geometry and higher mathematics.
gavo_apply_pm(ra DOUBLE PRECISION, dec DOUBLE PRECISION, pmra DOUBLE PRECISION, pmde DOUBLE PRECISION, epdist DOUBLE PRECISION) -> POINT
Returns a POINT (in the UNDEFINED reference frame) for the position an object at ra/dec with proper motion pmra/pmde has after epdist years. positions must be in degrees, PMs in should be in julian years (i.e., proper motions are expected in degrees/year). pmra is assumed to contain cos(delta). This function goes through the tangential plane. Since it does not have information on distance and radial velocity, it cannot reconstruct the true space motion, and hence its results will degrade over time. This function should not be used in new queries; use ivo_epoch_prop instead.
gavo_getauthority(ivoid TEXT) -> TEXT
returns the authority part of an ivoid (or, more generally a URI). So, ivo://org.gavo.dc/foo/bar#baz becomes org.gavo.dc. The behaviour for anything that's not a full URI is undefined.
gavo_ipix(long REAL, lat REAL) -> BIGINT
gavo_ipix returns the q3c ipix for a long/lat pair (it simply wraps the 13c_ang2ipix function). This is probably only relevant when you play tricks with indices or PPMXL ids.
gavo_match(pattern TEXT, string TEXT) -> INTEGER
gavo_match returns 1 if the POSIX regular expression pattern matches anything in string, 0 otherwise.
gavo_mocintersect(moc1 MOC, moc2 MOC) -> MOC
returns the intersection of two MOCs.
gavo_mocunion(moc1 MOC, moc2 MOC) -> MOC
returns the union of two MOCs.
gavo_specconv(expr DOUBLE PRECISION, dest_unit TEXT) -> DOUBLE PRECISION
returns the spectral value expr converted to dest_unit. expr has to be in either energy, wavelength, or frequency, and dest_unit must be a VOUnit giving another spectral unit (e.g., MHz, keV, nm, or Angstrom). This is intended to let users express spectral constraints in their preferred unit independently of the choice of unit in the database. Examples:: gavo_specconv(obscore.em_min, "keV") > 300 gavo_specconv(obscore.em_max, "MHz") > 30 gavo_specconv(spectral_start, "Angstrom") > 4000 There is a variant of gavo_specconv accepting expr's unit in a third argument.
gavo_specconv(expr NUMERIC, expr_unit TEXT, dest_unit TEXT) -> NUMERIC
returns expr assumed to be in expr_unit expressed in dest_unit. This is a variant of the two-argument gavo_specconv for when the unit of expr is not known to the ADQL translator, either because it because it is a literal or because it does not look like a spectral unit. Examples:: gavo_specconv(656, 'nm', 'J') BETWEEN spectral_start AND spectral_end gavo_specconv(arccos(phi)*incidence, 'Hz', 'eV') Clearly, overriding known units is likely to yield bad results; the translator therefore warns if an existing unit is overridden with a different unit.
gavo_vocmatch(vocname TEXT, term TEXT, matchagainst TEXT) -> INTEGER
returns 1 if matchagainst is term or narrower in the IVOA vocabulary vocname, 0 otherwise. This is intended for semantic querying. For instance, gavo_vocmatch('datalink/core', 'calibration', semantics) would be 1 if semantics is any of calibration, bias, dark, or flat. For RDF-flavoured vocabularies (strict trees), term will expand to the entire branch rooted in term. For SKOS-flavoured vocabularies (where narrower is not transitive), only directly narrower terms will be included. Both the term and the vocabulary name must be string literals (i.e., constants). matchagainst can be any string-valued expression.
ivo_epoch_prop(ra DOUBLE PRECISION, dec DOUBLE PRECISION, parallax DOUBLE PRECISION, pmra DOUBLE PRECISION, pmdec DOUBLE PRECISION, radial_velocity DOUBLE PRECISION, ref_epoch DOUBLE PRECISION, out_epoch DOUBLE PRECISION) -> DOUBLE PRECISION[6]
Returns a 6-vector of (ra, dec, parallax, pmra, pmdec, rv) at out_epoch for these quantities at ref_epoch. Essentially, it will apply the proper motion under the assumption of linear motion. Despite the name of the positional parameters, this is not restricted to equatorial systems, as long as positions and proper motions are expressed in the same reference frames. Units on input and output are degrees for ra and dec, mas for parallax, mas/yr for pmra and pmdec, and km/s for the radial velocity. ref_epoch and out_epoch are given in Julian years. parallax, pmra, pmdec, and radial_velocity may be None and will enter the computations as 0 then, except in the case of parallax, which will be some small value. When abs(parallax) is smaller or equal to that small value, parallax and radial velocity will be NULL on output. In daily use, you probably want to use the ivo_epoch_prop_pos functions.
ivo_epoch_prop_pos(ra DOUBLE PRECISION, dec DOUBLE PRECISION, parallax DOUBLE PRECISION, pmra DOUBLE PRECISION, pmdec DOUBLE PRECISION, radial_velocity DOUBLE PRECISION, ref_epoch DOUBLE PRECISION, out_epoch DOUBLE PRECISION) -> POINT
Returns a POINT giving the position at out_epoch for an object with the six parameters at ref_epoch. Essentially, it will apply the proper motion under the assumption of linear motion. Despite the name of the positional parameters, this is not restricted to equatorial systems, as long as positions and proper motions are expressed in the same reference frames. Units on input are degrees for ra and dec, mas for parallax, mas/yr for pmra and pmdec, and km/s for the radial velocity. ref_epoch and out_epoch are given in Julian years. parallax, pmra, pmdec, and radial_velocity may be None and will enter the computations as 0 then, except in the case of parallax, which will be some small value.
ivo_epoch_prop_pos(ra DOUBLE PRECISION, dec DOUBLE PRECISION, pmra DOUBLE PRECISION, pmdec DOUBLE PRECISION, ref_epoch DOUBLE PRECISION, out_epoch DOUBLE PRECISION) -> POINT
A variant of ivo_epoch_prop_pos that behave as if parallax and radial_velocity were both passed as NULL.
ivo_geom_transform(from_sys TEXT, to_sys TEXT, geo GEOMETRY) -> GEOMETRY
The function transforms ADQL geometries between various reference systems. geo can be a POINT, a CIRCLE, or a POLYGON, and the function will return a geometry of the same type. In the current implementation, from_sys and to_sys must be literal strings (i.e., they cannot be computed through expressions or be taken from database columns). All transforms are just simple rotations, which is only a rough approximation to the actual relationships between reference systems (in particular between FK4 and ICRS-based ones). Note that, in particular, the epoch is not changed (i.e., no proper motions are applied). We currently support the following reference frames: ICRS, FK5 (which is treated as ICRS), FK4 (for B1950. without epoch-dependent corrections), GALACTIC. Reference frame names are case-sensitive.
ivo_hashlist_has(hashlist TEXT, item TEXT) -> INTEGER
The function takes two strings; the first is a list of words not containing the hash sign (#), concatenated by hash signs, the second is a word not containing the hash sign. It returns 1 if, compared case-insensitively, the second argument is in the list of words coded in the first argument. The behaviour in case the the second argument contains a hash sign is unspecified.
ivo_hasword(haystack TEXT, needle TEXT) -> INTEGER
gavo_hasword returns 1 if needle shows up in haystack, 0 otherwise. This is for "google-like"-searches in text-like fields. In word, you can actually employ a fairly complex query language; see https://www.postgresql.org/docs/current/textsearch.html for details.
ivo_healpix_center(hpxOrder INTEGER, hpxIndex BIGINT) -> POINT
returns a POINT corresponding to the center of the healpix with the given index at the given order.
ivo_healpix_index(order INTEGER, ra DOUBLE PRECISION, dec DOUBLE PRECISION) -> BIGINT
Returns the index of the (nest) healpix with order containing the spherical point (ra, dec). An alternative, 2-argument form ivo_healpix_index(order INTEGER, p POINT) -> BIGINT is also available.
ivo_histogram(val REAL, lower REAL, upper REAL, nbins INTEGER) -> INTEGER[]
The aggregate function returns a histogram of val with nbins+2 elements. Assuming 0-based arrays, result[0] contains the number of underflows (i.e., val<lower), result[nbins+1] the number of overflows. Elements 1..nbins are the counts in nbins bins of width (upper-lower)/nbins. Clients will have to convert back to physical units using some external communication, there currently is no (meta-) data as lower and upper in the TAP response.
ivo_interval_has(val NUMERIC, iv INTERVAL) -> INTEGER
The function returns 1 if the interval iv contains val, 0 otherwise. The lower limit is always included in iv, behaviour on the upper limit is column-specific.
ivo_interval_overlaps(l1 NUMERIC, h1 NUMERIC, l2 NUMERIC, h2 NUMERIC) -> INTEGER
The function returns 1 if the interval [l1...h1] overlaps with the interval [l2...h2]. For the purposes of this function, the case l1=h2 or l2=h1 is treated as overlap. The function returns 0 for non-overlapping intervals.
ivo_nocasematch(value TEXT, pattern TEXT) -> INTEGER
ivo_nocasematch returns 1 if pattern matches value, 0 otherwise. pattern is defined as for the SQL LIKE operator, but the match is performed case-insensitively. This function in effect provides a surrogate for the ILIKE SQL operator that is missing from ADQL. On this site, this is actually implemented using python's and SQL's LOWER, so for everything except ASCII, your mileage will vary.
ivo_normal_random(mu REAL, sigma REAL) -> REAL
The function returns a random number drawn from a normal distribution with mean mu and width sigma. Implementation note: Right now, the Gaussian is approximated by summing up and scaling ten calls to random. This, hence, is not very precise or fast. It might work for some use cases, and we will provide a better implementation if this proves inadequate.
ivo_simbadpoint(identifier TEXT) -> POINT
gavo_simbadpoint queries simbad for an identifier and returns the corresponding point. Note that identifier can only be a literal, i.e., as simple string rather than a column name. This is because our database cannot query simbad, and we probably wouldn't want to fire off millions of simbad queries anyway; use simbad's own TAP service for this kind of application.
ivo_string_agg(expression TEXT, delimiter TEXT) -> TEXT
An aggregate function returning all values of expression within a GROUP contcatenated with delimiter
ivo_to_jd(d TIMESTAMP) -> DOUBLE PRECISION
The function converts a postgres timestamp to julian date. This is naive; no corrections for timezones, let alone time scales or the like are done; you can thus not expect this to be good to second-precision unless you are careful in the construction of the timestamp.
ivo_to_mjd(d TIMESTAMP) -> DOUBLE PRECISION
The function converts a postgres timestamp to modified julian date. This is naive; no corrections for timezones, let alone time scales or the like are done; you can thus not expect this to be good to second-precision unless you are careful in the construction of the timestamp.
BOX
POINT
CIRCLE
POLYGON
REGION
CENTROID
COORD1
COORD2
DISTANCE
CONTAINS
INTERSECTS
AREA
LOWER
ILIKE
OFFSET
CAST
IN_UNIT
WITH
TABLESAMPLE
Written after a table reference, TABLESAMPLE(10) will make the database only use 10% of the rows; these are `somewhat random' in that the system will use random blocks. This should be good enough when just testing queries (and much better than using TOP n).
MOC
A geometry function creating MOCs. It either takes a string argument with an ASCII MOC ('4/13 17-18 8/3002'), or an order and another geometry.
COALESCE
This is the standard SQL COALESCE for providing defaults in case of NULL values.
VECTORMATH
You can compute with vectors here. See https://wiki.ivoa.net/twiki/bin/view/IVOA/ADQLVectorMath for an overview of the functions and operators available.
CASE
The SQL92 CASE expression
UNION
EXCEPT
INTERSECT
text/tab-separated-valuestsvtext/plaintxttext/csvcsv_baretext/csv;header=presentcsvapplication/jsonjsonapplication/geo+jsongeojsonapplication/x-votable+xmlvotableapplication/x-votable+xml;serialization=BINARY2votable/b2votableb2application/x-votable+xml;serialization=TABLEDATAtext/xmlvotable/tdvotabletdapplication/x-votable+xml;serialization=TABLEDATA;version=1.1text/xmlvotabletd1.1application/x-votable+xml;version=1.1text/xmlvotable1.1application/x-votable+xml;serialization=TABLEDATA;version=1.2text/xmlvotabletd1.2application/x-votable+xml;serialization=TABLEDATA;version=1.5vodmlapplication/x-votable+xml;version=1.5vodmlbtext/htmlhtmlapplication/fitsfits17280072002000016000000100000000
http://dc.zah.uni-heidelberg.de/__system__/tap/run/availabilityhttps://dc.zah.uni-heidelberg.de/__system__/tap/run/availabilityhttp://dc.zah.uni-heidelberg.de/__system__/tap/run/capabilitieshttps://dc.zah.uni-heidelberg.de/__system__/tap/run/capabilitieshttp://dc.zah.uni-heidelberg.de/__system__/tap/run/tableMetadatahttps://dc.zah.uni-heidelberg.de/__system__/tap/run/tableMetadatahttp://dc.zah.uni-heidelberg.de/__system__/tap/run/exampleshttps://dc.zah.uni-heidelberg.de/__system__/tap/run/examples
astropy-pyvo-f0fdda3/pyvo/registry/tests/data/messenger.desise000066400000000000000000000047401521254414300250730ustar00rootroot00000000000000{ "uri": "http://www.ivoa.net/rdf/messenger", "flavour": "RDF Class", "terms": { "Photon": { "label": "Photon", "description": " Carrier particles of the electromagnetic interaction", "preliminary": "", "wider": [], "narrower": [ "Radio", "Millimeter", "Infrared", "Optical", "UV", "X-ray", "Gamma-ray", "EUV" ] }, "Radio": { "label": "Radio", "description": " Photon with a wavelength longer than 10 mm (or \u03bd<30 GHz)", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "Millimeter": { "label": "Millimeter", "description": " Photon with a wavelength between 0.1 mm and 10 mm (or 30 GHz<=\u03bd<300 GHz)", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "Infrared": { "label": "Infrared", "description": " Photon with a wavelength between 1 \u00b5m and 100 \u00b5m", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "Optical": { "label": "Optical", "description": " Photon with a wavelength between 300 nm and 1000 nm", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "UV": { "label": "Ultraviolet", "description": " Photon with a wavelength between 100 nm and 300 nm", "preliminary": "", "wider": [ "Photon" ], "narrower": [ "EUV" ] }, "EUV": { "label": "Extreme UV", "description": " Photon with an energy between 12 eV and 120 eV", "preliminary": "", "wider": [ "UV" ], "narrower": [] }, "X-ray": { "label": "X-Ray", "description": " Photon with an energy between 120 eV and 120 keV", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "Gamma-ray": { "label": "Gamma Ray", "description": " Photon with an energy above 120 keV", "preliminary": "", "wider": [ "Photon" ], "narrower": [] }, "Neutrino": { "label": "Neutrino", "description": " This term comprises all generations of neutrinos (electron, \u00b5, \u03c4), and particles as well as antiparticles.", "preliminary": "", "wider": [], "narrower": [] } } }astropy-pyvo-f0fdda3/pyvo/registry/tests/data/multi-interface.xml000066400000000000000000000311461521254414300255170ustar00rootroot00000000000000 ADQL query translated to local SQL (for debugging)Original ADQL queryQuery successfulSoftware that produced this VOTableBase URI of the serverAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceOriginating VO resourceData centre that has delivered the dataContact optionMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceName of a person or entity that produced a contributing resource The terms are taken from the vocabulary http://ivoa.net/rdf/voresource/content_level. The terms are taken from the vocabulary http://ivoa.net/rdf/voresource/content_type. The allowed values for waveband include: Radio, Millimeter, Infrared, Optical, UV, EUV, X-ray, Gamma-ray.Unambiguous reference to the resource conforming to the IVOA standard for identifiers.Resource type (something like vg:authority, vs:catalogservice, etc).A short name or abbreviation given to something, for presentation in space-constrained fields (up to 16 characters).The full name given to the resource.A hash-separated list of content levels specifying the intended audience.An account of the nature of the resource.URL pointing to a human-readable document describing this resource.The creator(s) of the resource in the order given by the resource record author, separated by semicolons.The UTC date and time this resource metadata description was created.The UTC date this resource metadata description was last updated.A statement of usage conditions (license, attribution, embargo, etc).A hash-separated list of natures or genres of the content of the resource.The format of source_value. This, in particular, can be ``bibcode''.A bibliographic reference from which the present resource is derived or extracted.A single numeric value representing the angle, given in decimal degrees, by which a positional query against this resource should be ``blurred'' in order to get an appropriate match.A hash-separated list of regions of the electro-magnetic spectrum that the resource's spectral coverage overlaps with.An identifier for the resource or an entity related to the resource in URI form.AAAAIml2bzovL29yZy5nYXZvLmRjL2ZsYXNoaGVyb3MvcS9zc2EAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAQRmxhc2gvSGVyb3MgU1NBUAAAABAARgBsAGEAcwBoAC8ASABlAHIAbwBzACAAUwBTAEEAUAAAAAAAAAEVAFMAcABlAGMAdAByAGEAIABmAHIAbwBtACAAdABoAGUAIABGAGwAYQBzAGgAIABhAG4AZAAgAEgAZQByAG8AcwAgAEUAYwBoAGUAbABsAGUAIABzAHAAZQBjAHQAcgBvAGcAcgBhAHAAaABzACAAZABlAHYAZQBsAG8AcABlAGQAIABhAHQACgBMAGEAbgBkAGUAcwBzAHQAZQByAG4AdwBhAHIAdABlACAASABlAGkAZABlAGwAYgBlAHIAZwAgAGEAbgBkACAAbQBvAHUAbgB0AGUAZAAgAGEAdAAgAEwAYQAgAFMAaQBsAGwAYQAgAGEAbgBkACAAdgBhAHIAaQBvAHUAcwAgAG8AdABoAGUAcgAKAG8AYgBzAGUAcgB2AGEAdABvAHIAaQBlAHMALgAgAFQAaABlACAAZABhAHQAYQAgAG0AbwBzAHQAbAB5ACAAYwBvAG4AdABhAGkAbgBzACAAcwBwAGUAYwB0AHIAYQAgAG8AZgAgAE8AQgAgAHMAdABhAHIAcwAuACAASABlAHIAbwBzACAAdwBhAHMACgB0AGgAZQAgAG4AYQBtAGUAIABvAGYAIAB0AGgAZQAgAGkAbgBzAHQAcgB1AG0AZQBuAHQAIABhAGYAdABlAHIAIABGAGwAYQBzAGgAIABnAG8AdAAgAGEAIABzAGUAYwBvAG4AZAAgAGMAaABhAG4AbgBlAGwAIABpAG4AIAAxADkAOQA1AC4AAAA1aHR0cDovL2RjLnphaC51bmktaGVpZGVsYmVyZy5kZS9mbGFzaGhlcm9zL3Evc3NhL2luZm8AAAArAFcAbwBsAGYALAAgAEIALgA7ACAASwBhAHUAZgBlAHIALAAgAEEALgA7ACAATQBhAG4AZABlAGwALAAgAEgALgA7ACAAUwB0AGEAaABsACwAIABPAC4AAAATMjAxMi0wNC0wM1QxMzozMDowMAAAABMyMDIzLTExLTA5VDIwOjUzOjE1AAAAg0lmIHlvdSB1c2UgdGhpcyBkYXRhLCBwbGVhc2UgYWNrbm93bGVkZ2U6ICJUaGlzIHJlc2VhcmNoIG1hZGUgdXNlIG9mCkZsYXNoL0hlcm9zIGRhdGEgc2VydmVkIHRocm91Z2ggdGhlIEdBVk8gZGF0YSBjZW50ZXIiLiBUaGFua3MuAAAAAAAAAAdiaWJjb2RlAAAAEwAxADkAOQA2AEEAJgBBAC4ALgAuADMAMQAyAC4ALgA1ADMAOQBTf8AAAAAAAAdvcHRpY2FsAAACDGh0dHA6Ly9kYy56YWgudW5pLWhlaWRlbGJlcmcuZGUvZmxhc2hoZXJvcy9xL3NkbC9kbG1ldGE6OjpweSBWTyBzZXA6OjpodHRwOi8vZGMuemFoLnVuaS1oZWlkZWxiZXJnLmRlL2ZsYXNoaGVyb3MvcS9zZGwvZGxnZXQ6OjpweSBWTyBzZXA6OjpodHRwOi8vZGMuemFoLnVuaS1oZWlkZWxiZXJnLmRlL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly9kYy56YWgudW5pLWhlaWRlbGJlcmcuZGUvZmxhc2hoZXJvcy9xL3NzYS90YWJsZU1ldGFkYXRhOjo6cHkgVk8gc2VwOjo6aHR0cDovL2RjLnphaC51bmktaGVpZGVsYmVyZy5kZS9mbGFzaGhlcm9zL3Evc3NhL2NhcGFiaWxpdGllczo6OnB5IFZPIHNlcDo6Omh0dHA6Ly9kYy56YWgudW5pLWhlaWRlbGJlcmcuZGUvZmxhc2hoZXJvcy9xL3NzYS9hdmFpbGFiaWxpdHk6OjpweSBWTyBzZXA6OjpodHRwOi8vZGMuemFoLnVuaS1oZWlkZWxiZXJnLmRlL2ZsYXNoaGVyb3MvcS93ZWIvZm9ybTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly9kYy56YWgudW5pLWhlaWRlbGJlcmcuZGUvZmhzc2E/AAABRGl2bzovL2l2b2EubmV0L3N0ZC9kYXRhbGluayNsaW5rcy0xLjE6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvc29kYSNzeW5jLTEuMDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3Zvc2kjdGFibGVzOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3Zvc2kjY2FwYWJpbGl0aWVzOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3Zvc2kjYXZhaWxhYmlsaXR5Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3NzYQAAAMp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwAAAAfnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZAAAAGk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAjZG9pOjEwLjIxOTM4L29VdXFham5XbW9mUDJ3NzUuQWNjOGc=
astropy-pyvo-f0fdda3/pyvo/registry/tests/data/regtap.xml000066400000000000000000007524541521254414300237250ustar00rootroot00000000000000 ADQL query translated to local SQL (for debugging)Original ADQL queryQuery successfulSoftware that produced this VOTableBase URI of the serverAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceAdvice on citing this resourceOriginating VO resourceData centre that has delivered the dataContact optionMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceMore information on the data SourceName of a person or entity that produced a contributing resource The terms are taken from the vocabulary http://ivoa.net/rdf/voresource/content_level. The terms are taken from the vocabulary http://ivoa.net/rdf/voresource/content_type. The allowed values for waveband include: Radio, Millimeter, Infrared, Optical, UV, EUV, X-ray, Gamma-ray.Unambiguous reference to the resource conforming to the IVOA standard for identifiers.Resource type (something like vg:authority, vs:catalogservice, etc).A short name or abbreviation given to something, for presentation in space-constrained fields (up to 16 characters).The full name given to the resource.A hash-separated list of content levels specifying the intended audience.An account of the nature of the resource.URL pointing to a human-readable document describing this resource.The creator(s) of the resource in the order given by the resource record author, separated by semicolons.The UTC date and time this resource metadata description was created.The UTC date this resource metadata description was last updated.A statement of usage conditions (license, attribution, embargo, etc).A hash-separated list of natures or genres of the content of the resource.The format of source_value. This, in particular, can be ``bibcode''.A bibliographic reference from which the present resource is derived or extracted.A single numeric value representing the angle, given in decimal degrees, by which a positional query against this resource should be ``blurred'' in order to get an appropriate match.A hash-separated list of regions of the electro-magnetic spectrum that the resource's spectral coverage overlaps with.An identifier for the resource or an entity related to the resource in URI form.AAAAHml2bzovL2Nkcy52aXppZXIvai9hK2EvNDkyLzkyMwAAABF2czpjYXRhbG9nc2VydmljZQAAAA1KL0ErQS80OTIvOTIzAAAAMQBQAHUAbABzAGEAcgAgAFQAaQBtAGkAbgBnACAAZgBvAHIAIABGAGUAcgBtAGkAIABHAGEAbQBtAGEALQByAGEAeQAgAFMAcABhAGMAZQAgAFQAZQBsAGUAcwBjAG8AcABlAAAACHJlc2VhcmNoAAADhABXAGUAIABkAGUAcwBjAHIAaQBiAGUAIABhACAAYwBvAG0AcAByAGUAaABlAG4AcwBpAHYAZQAgAHAAdQBsAHMAYQByACAAbQBvAG4AaQB0AG8AcgBpAG4AZwAgAGMAYQBtAHAAYQBpAGcAbgAgAGYAbwByACAAdABoAGUAIABMAGEAcgBnAGUAIABBAHIAZQBhACAAVABlAGwAZQBzAGMAbwBwAGUAIAAoAEwAQQBUACkAIABvAG4AIAB0AGgAZQAgAEYAZQByAG0AaQAgAEcAYQBtAG0AYQAtAHIAYQB5ACAAUwBwAGEAYwBlACAAVABlAGwAZQBzAGMAbwBwAGUAIAAoAGYAbwByAG0AZQByAGwAeQAgAEcATABBAFMAVAApAC4AIABUAGgAZQAgAGQAZQB0AGUAYwB0AGkAbwBuACAAYQBuAGQAIABzAHQAdQBkAHkAIABvAGYAIABwAHUAbABzAGEAcgBzACAAaQBuACAAZwBhAG0AbQBhACAAcgBhAHkAcwAgAGcAaQB2AGUAIABpAG4AcwBpAGcAaAB0AHMAIABpAG4AdABvACAAdABoAGUAIABwAG8AcAB1AGwAYQB0AGkAbwBuAHMAIABvAGYAIABuAGUAdQB0AHIAbwBuACAAcwB0AGEAcgBzACAAYQBuAGQAIABzAHUAcABlAHIAbgBvAHYAYQAgAHIAYQB0AGUAcwAgAGkAbgAgAHQAaABlACAARwBhAGwAYQB4AHkALAAgAGkAbgB0AG8AIABwAGEAcgB0AGkAYwBsAGUAIABhAGMAYwBlAGwAZQByAGEAdABpAG8AbgAgAG0AZQBjAGgAYQBuAGkAcwBtAHMAIABpAG4AIABuAGUAdQB0AHIAbwBuACAAcwB0AGEAcgAgAG0AYQBnAG4AZQB0AG8AcwBwAGgAZQByAGUAcwAsACAAYQBuAGQAIABpAG4AdABvACAAdABoAGUAIAAiAGUAbgBnAGkAbgBlAHMAIgAgAGQAcgBpAHYAaQBuAGcAIABwAHUAbABzAGEAcgAgAHcAaQBuAGQAIABuAGUAYgB1AGwAYQBlAC4AIABMAEEAVAAnAHMAIAB1AG4AcAByAGUAYwBlAGQAZQBuAHQAZQBkACAAcwBlAG4AcwBpAHQAaQB2AGkAdAB5ACAAYgBlAHQAdwBlAGUAbgAgADIAMABNAGUAVgAgAGEAbgBkACAAMwAwADAARwBlAFYAIAB0AG8AZwBlAHQAaABlAHIAIAB3AGkAdABoACAAaQB0AHMAIAAyAC4ANABzAHIAIABmAGkAZQBsAGQALQBvAGYALQB2AGkAZQB3ACAAbQBhAGsAZQBzACAAZABlAHQAZQBjAHQAaQBvAG4AIABvAGYAIABtAGEAbgB5ACAAZwBhAG0AbQBhAC0AcgBhAHkAIABwAHUAbABzAGEAcgBzACAAbABpAGsAZQBsAHkALAAgAGoAdQBzAHQAaQBmAHkAaQBuAGcAIAB0AGgAZQAgAG0AbwBuAGkAdABvAHIAaQBuAGcAIABvAGYAIABvAHYAZQByACAAdAB3AG8AIABoAHUAbgBkAHIAZQBkACAAcAB1AGwAcwBhAHIAcwAgAHcAaQB0AGgAIABsAGEAcgBnAGUAIABzAHAAaQBuAC0AZABvAHcAbgAgAHAAbwB3AGUAcgBzAC4AIABUAG8AIABzAGUAYQByAGMAaAAgAGYAbwByACAAZwBhAG0AbQBhAC0AcgBhAHkAIABwAHUAbABzAGEAdABpAG8AbgBzACAAZgByAG8AbQAgAG0AbwBzAHQAIABvAGYAIAB0AGgAZQBzAGUAIABwAHUAbABzAGEAcgBzACAAcgBlAHEAdQBpAHIAZQBzACAAYQAgAHMAZQB0ACAAbwBmACAAcABoAGEAcwBlAC0AYwBvAG4AbgBlAGMAdABlAGQAIAB0AGkAbQBpAG4AZwAgAHMAbwBsAHUAdABpAG8AbgBzACAAcwBwAGEAbgBuAGkAbgBnACAAYQAgAHkAZQBhAHIAIABvAHIAIABtAG8AcgBlACAAdABvACAAcAByAG8AcABlAHIAbAB5ACAAYQBsAGkAZwBuACAAdABoAGUAIABzAHAAYQByAHMAZQAgAHAAaABvAHQAbwBuACAAYQByAHIAaQB2AGEAbAAgAHQAaQBtAGUAcwAuACAAVwBlACAAZABlAHMAYwByAGkAYgBlACAAdABoAGUAIABjAGgAbwBpAGMAZQAgAG8AZgAgAHAAdQBsAHMAYQByAHMAIABhAG4AZAAgAHQAaABlACAAaQBuAHMAdAByAHUAbQBlAG4AdABzACAAaQBuAHYAbwBsAHYAZQBkACAAaQBuACAAdABoAGUAIABjAGEAbQBwAGEAaQBnAG4ALgAAADdodHRwczovL2Nkc2FyYy5jZHMudW5pc3RyYS5mci92aXotYmluL2NhdC9KL0ErQS80OTIvOTIzAAABeQBTAG0AaQB0AGgAIABEAC4AQQAuADsAIABHAHUAaQBsAGwAZQBtAG8AdAAgAEwALgA7ACAAQwBhAG0AaQBsAG8AIABGAC4AOwAgAEMAbwBnAG4AYQByAGQAIABJAC4AOwAgAEQAdQBtAG8AcgBhACAARAAuADsAIABFAHMAcABpAG4AbwB6AGEAIABDAC4AOwAgAEYAcgBlAGkAcgBlACAAUAAuAEMALgBDAC4AOwAgAEcAbwB0AHQAaABlAGwAZgAgAEUALgBWAC4AOwAgAEgAYQByAGQAaQBuAGcAIABBAC4ASwAuADsAIABIAG8AYgBiAHMAIABHAC4AQgAuADsAIABKAG8AaABuAHMAdABvAG4AIABTAC4AOwAgAEsAYQBzAHAAaQAgAFYALgBNAC4AOwAgAEsAcgBhAG0AZQByACAATQAuADsAIABMAGkAdgBpAG4AZwBzAHQAbwBuAGUAIABNAC4AQQAuADsAIABMAHkAbgBlACAAQQAuAEcALgA7ACAATQBhAG4AYwBoAGUAcwB0AGUAcgAgAFIALgBOAC4AOwAgAE0AYQByAHMAaABhAGwAbAAgAEYALgBFAC4AOwAgAE0AYwBMAGEAdQBnAGgAbABpAG4AIABNAC4AQQAuADsAIABOAG8AdQB0AHMAbwBzACAAQQAuADsAIABSAGEAbgBzAG8AbQAgAFMALgBNAC4AOwAgAFIAbwBiAGUAcgB0AHMAIABNAC4AUwAuAEUALgA7ACAAUgBvAG0AYQBuAGkAIABSAC4AVwAuADsAIABTAHQAYQBwAHAAZQByAHMAIABCAC4AVwAuADsAIABUAGgAZQB1AHIAZQBhAHUAIABHAC4AOwAgAFQAaABvAG0AcABzAG8AbgAgAEQALgBKAC4AOwAgAFQAaABvAHIAcwBlAHQAdAAgAFMALgBFAC4AOwAgAFcAYQBuAGcAIABOAC4AOwAgAFcAZQBsAHQAZQB2AHIAZQBkAGUAIABQAC4AAAATMjAwOS0wMS0xN1QxNzowMzo1OQAAABMyMDIyLTEwLTEwVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAwADgAQQAmAEEALgAuAC4ANAA5ADIALgAuADkAMgAzAFN/wAAAAAAAD2dhbW1hLXJheSNyYWRpbwAAASRodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0ErQS80OTIvOTIzL3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQStBLzQ5Mi85MjM6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0ErQS80OTIvOTIzAAAAZGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAABednM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAADNzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAB8Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNDkyLzkyMy90YWJsZTEgKEZFUk1JIHB1bHNhciBjYW5kaWRhdGVzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAACBkb2k6MTAuMjYwOTMvY2RzL3Zpemllci4zNDkyMDkyMwAAAB1pdm86Ly9jZHMudml6aWVyL2ovYSthLzYxMi9hMQAAABF2czpjYXRhbG9nc2VydmljZQAAAAxKL0ErQS82MTIvQTEAAAAeAEgALgBFAC4AUwAuAFMALgAgAEcAYQBsAGEAYwB0AGkAYwAgAFAAbABhAG4AZQAgAFMAdQByAHYAZQB5AAAACHJlc2VhcmNoAAAIKgBXAGUAIABwAHIAZQBzAGUAbgB0ACAAdABoAGUAIAByAGUAcwB1AGwAdABzACAAbwBmACAAdABoAGUAIABtAG8AcwB0ACAAYwBvAG0AcAByAGUAaABlAG4AcwBpAHYAZQAgAHMAdQByAHYAZQB5ACAAbwBmACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUAIABpAG4AIAB2AGUAcgB5ACAAaABpAGcAaAAtAGUAbgBlAHIAZwB5ACAAKABWAEgARQApACAAZwBhAG0AbQBhAC0AcgBhAHkAcwAsACAAaQBuAGMAbAB1AGQAaQBuAGcAIABhACAAcAB1AGIAbABpAGMAIAByAGUAbABlAGEAcwBlACAAbwBmACAARwBhAGwAYQBjAHQAaQBjACAAcwBrAHkAIABtAGEAcABzACwAIABhACAAYwBhAHQAYQBsAG8AZwAgAG8AZgAgAFYASABFACAAcwBvAHUAcgBjAGUAcwAsACAAYQBuAGQAIAB0AGgAZQAgAGQAaQBzAGMAbwB2AGUAcgB5ACAAbwBmACAAMQA2ACAAbgBlAHcAIABzAG8AdQByAGMAZQBzACAAbwBmACAAVgBIAEUAIABnAGEAbQBtAGEALQByAGEAeQBzAC4AIABUAGgAZQAgAEgAaQBnAGgAIABFAG4AZQByAGcAeQAgAFMAcABlAGMAdAByAG8AcwBjAG8AcABpAGMAIABTAHkAcwB0AGUAbQAgACgASAAuAEUALgBTAC4AUwAuACkAIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUAIABzAHUAcgB2AGUAeQAgACgASABHAFAAUwApACAAdwBhAHMAIABhACAAZABlAGMAYQBkAGUALQBsAG8AbgBnACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuACAAcAByAG8AZwByAGEAbQAgAGMAYQByAHIAaQBlAGQAIABvAHUAdAAgAGIAeQAgAHQAaABlACAASAAuAEUALgBTAC4AUwAuACAASQAgAGEAcgByAGEAeQAgAG8AZgAgAEMAaABlAHIAZQBuAGsAbwB2ACAAdABlAGwAZQBzAGMAbwBwAGUAcwAgAGkAbgAgAE4AYQBtAGkAYgBpAGEAIABmAHIAbwBtACAAMgAwADAANAAgAHQAbwAgADIAMAAxADMALgAgAFQAaABlACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIABhAG0AbwB1AG4AdAAgAHQAbwAgAG4AZQBhAHIAbAB5ACAAMgA3ADAAMAAgAGgAIABvAGYAIABxAHUAYQBsAGkAdAB5AC0AcwBlAGwAZQBjAHQAZQBkACAAZABhAHQAYQAsACAAYwBvAHYAZQByAGkAbgBnACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUAIABhAHQAIABsAG8AbgBnAGkAdAB1AGQAZQBzACAAZgByAG8AbQAgAGwAPQAyADUAMAB7AGQAZQBnAH0AIAB0AG8AIAA2ADUAewBkAGUAZwB9ACAAYQBuAGQAIABsAGEAdABpAHQAdQBkAGUAcwAgAHwAYgB8ADwAPQAzAC4AIABJAG4AIABhAGQAZABpAHQAaQBvAG4AIAB0AG8AIAB0AGgAZQAgAHUAbgBwAHIAZQBjAGUAZABlAG4AdABlAGQAIABzAHAAYQB0AGkAYQBsACAAYwBvAHYAZQByAGEAZwBlACwAIAB0AGgAZQAgAEgARwBQAFMAIABhAGwAcwBvACAAZgBlAGEAdAB1AHIAZQBzACAAYQAgAHIAZQBsAGEAdABpAHYAZQBsAHkAIABoAGkAZwBoACAAYQBuAGcAdQBsAGEAcgAgAHIAZQBzAG8AbAB1AHQAaQBvAG4AIAAoADAALgAwADgAewBkAGUAZwB9AH4ANQAtAGEAcgBjAG0AaQBuACAAbQBlAGEAbgAgAHAAbwBpAG4AdAAgAHMAcAByAGUAYQBkACAAZgB1AG4AYwB0AGkAbwBuACAANgA4ACUAIABjAG8AbgB0AGEAaQBuAG0AZQBuAHQAIAByAGEAZABpAHUAcwApACwAIABzAGUAbgBzAGkAdABpAHYAaQB0AHkAIAAoADEALgA1ACUAIABDAHIAYQBiACAAZgBsAHUAeAAgAGYAbwByACAAcABvAGkAbgB0AC0AbABpAGsAZQAgAHMAbwB1AHIAYwBlAHMAKQAsACAAYQBuAGQAIABlAG4AZQByAGcAeQAgAHIAYQBuAGcAZQAgACgAMAAuADIALQAxADAAMABUAGUAVgApAC4AIABXAGUAIABjAG8AbgBzAHQAcgB1AGMAdABlAGQAIABhACAAYwBhAHQAYQBsAG8AZwAgAG8AZgAgAFYASABFACAAZwBhAG0AbQBhAC0AcgBhAHkAIABzAG8AdQByAGMAZQBzACAAZgByAG8AbQAgAHQAaABlACAASABHAFAAUwAgAGQAYQB0AGEAIABzAGUAdAAgAHcAaQB0AGgAIABhACAAcwB5AHMAdABlAG0AYQB0AGkAYwAgAHAAcgBvAGMAZQBkAHUAcgBlACAAZgBvAHIAIABiAG8AdABoACAAcwBvAHUAcgBjAGUAIABkAGUAdABlAGMAdABpAG8AbgAgAGEAbgBkACAAYwBoAGEAcgBhAGMAdABlAHIAaQB6AGEAdABpAG8AbgAgAG8AZgAgAG0AbwByAHAAaABvAGwAbwBnAHkAIABhAG4AZAAgAHMAcABlAGMAdAByAHUAbQAuACAAVwBlACAAcAByAGUAcwBlAG4AdAAgAHQAaABpAHMAIABsAGkAawBlAGwAaQBoAG8AbwBkAC0AIABiAGEAcwBlAGQAIABtAGUAdABoAG8AZAAgAGkAbgAgAGQAZQB0AGEAaQBsACwAIABpAG4AYwBsAHUAZABpAG4AZwAgAHQAaABlACAAaQBuAHQAcgBvAGQAdQBjAHQAaQBvAG4AIABvAGYAIABhACAAbQBvAGQAZQBsACAAYwBvAG0AcABvAG4AZQBuAHQAIAB0AG8AIABhAGMAYwBvAHUAbgB0ACAAZgBvAHIAIAB1AG4AcgBlAHMAbwBsAHYAZQBkACwAIABsAGEAcgBnAGUALQBzAGMAYQBsAGUAIABlAG0AaQBzAHMAaQBvAG4AIABhAGwAbwBuAGcAIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAHAAbABhAG4AZQAuACAASQBuACAAdABvAHQAYQBsACwAIAB0AGgAZQAgAHIAZQBzAHUAbAB0AGkAbgBnACAASABHAFAAUwAgAGMAYQB0AGEAbABvAGcAIABjAG8AbgB0AGEAaQBuAHMAIAA3ADgAIABWAEgARQAgAHMAbwB1AHIAYwBlAHMALAAgAG8AZgAgAHcAaABpAGMAaAAgADEANAAgAGEAcgBlACAAbgBvAHQAIAByAGUAYQBuAGEAbAB5AHoAZQBkACAAaABlAHIAZQAsACAAZgBvAHIAIABlAHgAYQBtAHAAbABlACwAIABkAHUAZQAgAHQAbwAgAHQAaABlAGkAcgAgAGMAbwBtAHAAbABlAHgAIABtAG8AcgBwAGgAbwBsAG8AZwB5ACwAIABuAGEAbQBlAGwAeQAgAHMAaABlAGwAbAAtAGwAaQBrAGUAIABzAG8AdQByAGMAZQBzACAAYQBuAGQAIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAGMAZQBuAHQAZQByACAAcgBlAGcAaQBvAG4ALgAgAFcAaABlAHIAZQAgAHAAbwBzAHMAaQBiAGwAZQAsACAAdwBlACAAcAByAG8AdgBpAGQAZQAgAGEAIABmAGkAcgBtACAAaQBkAGUAbgB0AGkAZgBpAGMAYQB0AGkAbwBuACAAbwBmACAAdABoAGUAIABWAEgARQAgAHMAbwB1AHIAYwBlACAAbwByACAAcABsAGEAdQBzAGkAYgBsAGUAIABhAHMAcwBvAGMAaQBhAHQAaQBvAG4AcwAgAHcAaQB0AGgAIABzAG8AdQByAGMAZQBzACAAaQBuACAAbwB0AGgAZQByACAAYQBzAHQAcgBvAG4AbwBtAGkAYwBhAGwAIABjAGEAdABhAGwAbwBnAHMALgAgAFcAZQAgAGEAbABzAG8AIABzAHQAdQBkAGkAZQBkACAAdABoAGUAIABjAGgAYQByAGEAYwB0AGUAcgBpAHMAdABpAGMAcwAgAG8AZgAgAHQAaABlACAAVgBIAEUAIABzAG8AdQByAGMAZQBzACAAdwBpAHQAaAAgAHMAbwB1AHIAYwBlACAAcABhAHIAYQBtAGUAdABlAHIAIABkAGkAcwB0AHIAaQBiAHUAdABpAG8AbgBzAC4AIAAxADYAIABuAGUAdwAgAHMAbwB1AHIAYwBlAHMAIAB3AGUAcgBlACAAcAByAGUAdgBpAG8AdQBzAGwAeQAgAHUAbgBrAG4AbwB3AG4AIABvAHIAIAB1AG4AcAB1AGIAbABpAHMAaABlAGQALAAgAGEAbgBkACAAdwBlACAAaQBuAGQAaQB2AGkAZAB1AGEAbABsAHkAIABkAGkAcwBjAHUAcwBzACAAdABoAGUAaQByACAAaQBkAGUAbgB0AGkAZgBpAGMAYQB0AGkAbwBuAHMAIABvAHIAIABwAG8AcwBzAGkAYgBsAGUAIABhAHMAcwBvAGMAaQBhAHQAaQBvAG4AcwAuACAAVwBlACAAZgBpAHIAbQBsAHkAIABpAGQAZQBuAHQAaQBmAGkAZQBkACAAMwAxACAAcwBvAHUAcgBjAGUAcwAgAGEAcwAgAHAAdQBsAHMAYQByACAAdwBpAG4AZAAgAG4AZQBiAHUAbABhAGUAIAAoAFAAVwBOAGUAKQAsACAAcwB1AHAAZQByAG4AbwB2AGEAIAByAGUAbQBuAGEAbgB0AHMAIAAoAFMATgBSAHMAKQAsACAAYwBvAG0AcABvAHMAaQB0AGUAIABTAE4AUgBzACwAIABvAHIAIABnAGEAbQBtAGEALQByAGEAeQAgAGIAaQBuAGEAcgBpAGUAcwAuACAAQQBtAG8AbgBnACAAdABoAGUAIAA0ADcAIABzAG8AdQByAGMAZQBzACAAbgBvAHQAIAB5AGUAdAAgAGkAZABlAG4AdABpAGYAaQBlAGQALAAgAG0AbwBzAHQAIABvAGYAIAB0AGgAZQBtACAAKAAzADYAKQAgAGgAYQB2AGUAIABwAG8AcwBzAGkAYgBsAGUAIABhAHMAcwBvAGMAaQBhAHQAaQBvAG4AcwAgAHcAaQB0AGgAIABjAGEAdABhAGwAbwBnAGUAZAAgAG8AYgBqAGUAYwB0AHMALAAgAG4AbwB0AGEAYgBsAHkAIABQAFcATgBlACAAYQBuAGQAIABlAG4AZQByAGcAZQB0AGkAYwAgAHAAdQBsAHMAYQByAHMAIAB0AGgAYQB0ACAAYwBvAHUAbABkACAAcABvAHcAZQByACAAVgBIAEUAIABQAFcATgBlAC4AAAA2aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BK0EvNjEyL0ExAAAMrABIAC4ARQAuAFMALgBTAC4AIABDAG8AbABsAGEAYgBvAHIAYQB0AGkAbwBuADsAIABBAGIAZABhAGwAbABhACAASAAuADsAIABBAGIAcgBhAG0AbwB3AHMAawBpACAAQQAuADsAIABBAGgAYQByAG8AbgBpAGEAbgAgAEYALgA7ACAAQQBpAHQAIABCAGUAbgBrAGgAYQBsAGkAIABGAC4AOwAgAEEAbgBnAHUAZQBuAGUAcgAgAEUALgBPAC4AOwAgAEEAcgBhAGsAYQB3AGEAIABNAC4AOwAgAEEAcgByAGkAZQB0AGEAIABNAC4AOwAgAEEAdQBiAGUAcgB0ACAAUAAuADsAIABCAGEAYwBrAGUAcwAgAE0ALgA7ACAAQgBhAGwAegBlAHIAIABBAC4AOwAgAEIAYQByAG4AYQByAGQAIABNAC4AOwAgAEIAZQBjAGgAZQByAGkAbgBpACAAWQAuADsAIABCAGUAYwBrAGUAcgAgAFQAagB1AHMAIABKAC4AOwAgAEIAZQByAGcAZQAgAEQALgA7ACAAQgBlAHIAbgBoAGEAcgBkACAAUwAuADsAIABCAGUAcgBuAGwAbwBlAGgAcgAgAEsALgA7ACAAQgBsAGEAYwBrAHcAZQBsAGwAIABSAC4AOwAgAEIAbwBlAHQAdABjAGgAZQByACAATQAuADsAIABCAG8AaQBzAHMAbwBuACAAQwAuADsAIABCAG8AbABtAG8AbgB0ACAASgAuADsAIABCAG8AbgBuAGUAZgBvAHkAIABTAC4AOwAgAEIAbwByAGQAYQBzACAAUAAuADsAIABCAHIAZQBnAGUAbwBuACAASgAuADsAIABCAHIAdQBuACAARgAuADsAIABCAHIAdQBuACAAUAAuADsAIABCAHIAeQBhAG4AIABNAC4AOwAgAEIAdQBlAGMAaABlAGwAZQAgAE0ALgA7ACAAQgB1AGwAaQBrACAAVAAuADsAIABDAGEAcABhAHMAcwBvACAATQAuADsAIABDAGEAcgByAGkAZwBhAG4AIABTAC4AOwAgAEMAYQByAG8AZgBmACAAUwAuADsAIABDAGEAcgBvAHMAaQAgAEEALgA7ACAAQwBhAHMAYQBuAG8AdgBhACAAUwAuADsAIABDAGUAcgByAHUAdABpACAATQAuADsAIABDAGgAYQBrAHIAYQBiAG8AcgB0AHkAIABOAC4AOwAgAEMAaABhAHYAZQBzACAAUgAuAEMALgBHAC4AOwAgAEMAaABlAG4AIABBAC4AOwAgAEMAaABlAHYAYQBsAGkAZQByACAASgAuADsAIABDAG8AbABhAGYAcgBhAG4AYwBlAHMAYwBvACAAUwAuADsAIABDAG8AbgBkAG8AbgAgAEIALgA7ACAAQwBvAG4AcgBhAGQAIABKAC4AOwAgAEQAYQB2AGkAZABzACAASQAuAEQALgA7ACAARABlAGMAbwBjAGsAIABKAC4AOwAgAEQAZQBpAGwAIABDAC4AOwAgAEQAZQB2AGkAbgAgAEoALgA7ACAAZABlAFcAaQBsAHQAIABQAC4AOwAgAEQAaQByAHMAbwBuACAATAAuADsAIABEAGoAYQBuAG4AYQB0AGkALQBBAHQAYQBpACAAQQAuADsAIABEAG8AbQBhAGkAbgBrAG8AIABXAC4AOwAgAEQAbwBuAGEAdABoACAAQQAuADsAIABEAHIAdQByAHkAIABMAC4ATwAnAEMALgA7ACAARAB1AHQAcwBvAG4AIABLAC4AOwAgAEQAeQBrAHMAIABKAC4AOwAgAEUAZAB3AGEAcgBkAHMAIABUAC4AOwAgAEUAZwBiAGUAcgB0AHMAIABLAC4AOwAgAEUAZwBlAHIAIABQAC4AOwAgAEUAbQBlAHIAeQAgAEcALgA7ACAARQByAG4AZQBuAHcAZQBpAG4AIABKAC4ALQBQAC4AOwAgAEUAcwBjAGgAYgBhAGMAaAAgAFMALgA7ACAARgBhAHIAbgBpAGUAcgAgAEMALgA7ACAARgBlAGcAYQBuACAAUwAuADsAIABGAGUAcgBuAGEAbgBkAGUAcwAgAE0ALgBWAC4AOwAgAEYAaQBhAHMAcwBvAG4AIABBAC4AOwAgAEYAbwBuAHQAYQBpAG4AZQAgAEcALgA7ACAARgBvAGUAcgBzAHQAZQByACAAQQAuADsAIABGAHUAbgBrACAAUwAuADsAIABGAHUAZQBzAHMAbABpAG4AZwAgAE0ALgA7ACAARwBhAGIAaQBjAGkAIABTAC4AOwAgAEcAYQBsAGwAYQBuAHQAIABZAC4AQQAuADsAIABHAGEAcgByAGkAZwBvAHUAeAAgAFQALgA7ACAARwBhAHMAdAAgAEgALgA7ACAARwBhAHQAZQAgAEYALgA7ACAARwBpAGEAdgBpAHQAdABvACAARwAuADsAIABHAGkAZQBiAGUAbABzACAAQgAuADsAIABHAGwAYQB3AGkAbwBuACAARAAuADsAIABHAGwAaQBjAGUAbgBzAHQAZQBpAG4AIABKAC4ARgAuADsAIABHAG8AdAB0AHMAYwBoAGEAbABsACAARAAuADsAIABHAHIAbwBuAGQAaQBuACAATQAuAC0ASAAuADsAIABIAGEAaABuACAASgAuADsAIABIAGEAdQBwAHQAIABNAC4AOwAgAEgAYQB3AGsAZQBzACAASgAuADsAIABIAGUAaQBuAHoAZQBsAG0AYQBuAG4AIABHAC4AOwAgAEgAZQBuAHIAaQAgAEcALgA7ACAASABlAHIAbQBhAG4AbgAgAEcALgA7ACAASABpAG4AdABvAG4AIABKAC4AQQAuADsAIABIAG8AZgBtAGEAbgBuACAAVwAuADsAIABIAG8AaQBzAGMAaABlAG4AIABDAC4AOwAgAEgAbwBsAGMAaAAgAFQALgBMAC4AOwAgAEgAbwBsAGwAZQByACAATQAuADsAIABIAG8AcgBuAHMAIABEAC4AOwAgAEkAdgBhAHMAYwBlAG4AawBvACAAQQAuADsAIABJAHcAYQBzAGEAawBpACAASAAuADsAIABKAGEAYwBoAG8AbABrAG8AdwBzAGsAYQAgAEEALgA7ACAASgBhAG0AcgBvAHoAeQAgAE0ALgA7ACAASgBhAG4AawBvAHcAcwBrAHkAIABEAC4AOwAgAEoAYQBuAGsAbwB3AHMAawB5ACAARgAuADsAIABKAGkAbgBnAG8AIABNAC4AOwAgAEoAbwB1AHYAaQBuACAATAAuADsAIABKAHUAbgBnAC0AUgBpAGMAaABhAHIAZAB0ACAASQAuADsAIABLAGEAcwB0AGUAbgBkAGkAZQBjAGsAIABNAC4AQQAuADsAIABLAGEAdABhAHIAegB5AE4AcwBrAGkAIABLAC4AOwAgAEsAYQB0AHMAdQByAGEAZwBhAHcAYQAgAE0ALgA7ACAASwBhAHQAegAgAFUALgA7ACAASwBlAHIAcwB6AGIAZQByAGcAIABEAC4AOwAgAEsAaABhAG4AZwB1AGwAeQBhAG4AIABEAC4AOwAgAEsAaABlAGwAaQBmAGkAIABCAC4AOwAgAEsAaQBuAGcAIABKAC4AOwAgAEsAbABlAHAAcwBlAHIAIABTAC4AOwAgAEsAbABvAGMAaABrAG8AdgAgAEQALgA7ACAASwBsAHUAegBuAGkAYQBrACAAVwAuADsAIABLAG8AbQBpAG4AIABOAHUALgA7ACAASwBvAHMAYQBjAGsAIABLAC4AOwAgAEsAcgBhAGsAYQB1ACAAUwAuADsAIABLAHIAYQB1AHMAIABNAC4AOwAgAEsAcgB1AGUAZwBlAHIAIABQAC4AUAAuADsAIABMAGEAZgBmAG8AbgAgAEgALgA7ACAATABhAG0AYQBuAG4AYQAgAEcALgA7ACAATABhAHUAIABKAC4AOwAgAEwAZQBlAHMAIABKAC4ALQBQAC4AOwAgAEwAZQBmAGEAdQBjAGgAZQB1AHIAIABKAC4AOwAgAEwAZQBtAGkAZQByAGUAIABBAC4AOwAgAEwAZQBtAG8AaQBuAGUALQBHAG8AdQBtAGEAcgBkACAATQAuADsAIABMAGUAbgBhAGkAbgAgAEoALgAtAFAALgA7ACAATABlAHMAZQByACAARQAuADsAIABMAG8AaABzAGUAIABUAC4AOwAgAEwAbwByAGUAbgB0AHoAIABNAC4AOwAgAEwAaQB1ACAAUgAuADsAIABMAG8AcABlAHoALQBDAG8AdABvACAAUgAuADsAIABMAHkAcABvAHYAYQAgAEkALgA7ACAATQBhAHIAYQBuAGQAbwBuACAAVgAuADsAIABNAGEAbAB5AHMAaABlAHYAIABEAC4AOwAgAE0AYQByAGMAbwB3AGkAdABoACAAQQAuADsAIABNAGEAcgBpAGEAdQBkACAAQwAuADsAIABNAGEAcgB4ACAAUgAuADsAIABNAGEAdQByAGkAbgAgAEcALgA7ACAATQBhAHgAdABlAGQAIABOAC4AOwAgAE0AYQB5AGUAcgAgAE0ALgA7ACAATQBlAGkAbgB0AGoAZQBzACAAUAAuAEoALgA7ACAATQBlAHkAZQByACAATQAuADsAIABNAGkAdABjAGgAZQBsAGwAIABBAC4ATQAuAFcALgA7ACAATQBvAGQAZQByAHMAawBpACAAUgAuADsAIABNAG8AaABhAG0AZQBkACAATQAuADsAIABNAG8AaAByAG0AYQBuAG4AIABMAC4AOwAgAE0AbwByAGEAIABLAC4AOwAgAE0AbwB1AGwAaQBuACAARQAuADsAIABNAHUAcgBhAGMAaAAgAFQALgA7ACAATgBhAGsAYQBzAGgAaQBtAGEAIABTAC4AOwAgAGQAZQAgAE4AYQB1AHIAbwBpAHMAIABNAC4AOwAgAE4AZABpAHkAYQB2AGEAbABhACAASAAuADsAIABOAGkAZQBkAGUAcgB3AGEAbgBnAGUAcgAgAEYALgA7ACAATgBpAGUAbQBpAGUAYwAgAEoALgA7ACAATwBhAGsAZQBzACAATAAuADsAIABPACcAQgByAGkAZQBuACAAUAAuADsAIABPAGQAYQBrAGEAIABIAC4AOwAgAE8AaABtACAAUwAuADsAIABPAHMAdAByAG8AdwBzAGsAaQAgAE0ALgA7ACAATwB5AGEAIABJAC4AOwAgAFAAYQBkAG8AdgBhAG4AaQAgAE0ALgA7ACAAUABhAG4AdABlAHIAIABNAC4AOwAgAFAAYQByAHMAbwBuAHMAIABSAC4ARAAuADsAIABQAGEAegAgAEEAcgByAGkAYgBhAHMAIABNAC4AOwAgAFAAZQBrAGUAdQByACAATgAuAFcALgA7ACAAUABlAGwAbABlAHQAaQBlAHIAIABHAC4AOwAgAFAAZQByAGUAbgBuAGUAcwAgAEMALgA7ACAAUABlAHQAcgB1AGMAYwBpACAAUAAuAC0ATwAuADsAIABQAGUAeQBhAHUAZAAgAEIALgA7ACAAUABpAGUAbAAgAFEALgA7ACAAUABpAHQAYQAgAFMALgA7ACAAUABvAGkAcgBlAGEAdQAgAFYALgA7ACAAUABvAG8AbgAgAEgALgA7ACAAUAByAG8AawBoAG8AcgBvAHYAIABEAC4AOwAgAFAAcgBvAGsAbwBwAGgAIABIAC4AOwAgAFAAdQBlAGgAbABoAG8AZgBlAHIAIABHAC4AOwAgAFAAdQBuAGMAaAAgAE0ALgA7ACAAUQB1AGkAcgByAGUAbgBiAGEAYwBoACAAQQAuADsAIABSAGEAYQBiACAAUwAuADsAIABSAGEAdQB0AGgAIABSAC4AOwAgAFIAZQBpAG0AZQByACAAQQAuADsAIABSAGUAaQBtAGUAcgAgAE8ALgA7ACAAUgBlAG4AYQB1AGQAIABNAC4AOwAgAGQAZQAgAGwAbwBzACAAUgBlAHkAZQBzACAAUgAuADsAIABSAGkAZQBnAGUAcgAgAEYALgA7ACAAUgBpAG4AYwBoAGkAdQBzAG8AIABMAC4AOwAgAFIAbwBtAG8AbABpACAAQwAuADsAIABSAG8AdwBlAGwAbAAgAEcALgA7ACAAUgB1AGQAYQBrACAAQgAuADsAIABSAHUAbAB0AGUAbgAgAEMALgBCAC4AOwAgAFMAYQBmAGkALQBIAGEAcgBiACAAUwAuADsAIABTAGEAaABhAGsAaQBhAG4AIABWAC4AOwAgAFMAYQBpAHQAbwAgAFMALgA7ACAAUwBhAG4AYwBoAGUAegAgAEQALgBBAC4AOwAgAFMAYQBuAHQAYQBuAGcAZQBsAG8AIABBAC4AOwAgAFMAYQBzAGEAawBpACAATQAuADsAIABTAGMAaABhAG4AZAByAGkAIABNAC4AOwAgAFMAYwBoAGwAaQBjAGsAZQBpAHMAZQByACAAUgAuADsAIABTAGMAaAB1AGUAcwBzAGwAZQByACAARgAuADsAIABTAGMAaAB1AGwAegAgAEEALgA7ACAAUwBjAGgAdwBhAG4AawBlACAAVQAuADsAIABTAGMAaAB3AGUAbQBtAGUAcgAgAFMALgA7ACAAUwBlAGcAbABhAHIALQBBAHIAcgBvAHkAbwAgAE0ALgA7ACAAUwBlAHQAdABpAG0AbwAgAE0ALgA7ACAAUwBlAHkAZgBmAGUAcgB0ACAAQQAuAFMALgA7ACAAUwBoAGEAZgBpACAATgAuADsAIABTAGgAaQBsAG8AbgAgAEkALgA7ACAAUwBoAGkAbgBpAG4AZwBhAHkAYQBtAHcAZQAgAEsALgA7ACAAUwBpAG0AbwBuAGkAIABSAC4AOwAgAFMAbwBsACAASAAuADsAIABTAHAAYQBuAGkAZQByACAARgAuADsAIABTAHAAaQByAC0ASgBhAGMAbwBiACAATQAuADsAIABTAHQAYQB3AGEAcgB6ACAATAAuADsAIABTAHQAZQBlAG4AawBhAG0AcAAgAFIALgA7ACAAUwB0AGUAZwBtAGEAbgBuACAAQwAuADsAIABTAHQAZQBwAHAAYQAgAEMALgA7ACAAUwB1AHMAaABjAGgAIABJAC4AOwAgAFQAYQBrAGEAaABhAHMAaABpACAAVAAuADsAIABUAGEAdgBlAHIAbgBlAHQAIABKAC4ALQBQAC4AOwAgAFQAYQB2AGUAcgBuAGkAZQByACAAVAAuADsAIABUAGEAeQBsAG8AcgAgAEEALgBNAC4AOwAgAFQAZQByAHIAaQBlAHIAIABSAC4AOwAgAFQAaQBiAGEAbABkAG8AIABMAC4AOwAgAFQAaQB6AGkAYQBuAGkAIABEAC4AOwAgAFQAbAB1AGMAegB5AGsAbwBuAHQAIABNAC4AOwAgAFQAcgBpAGMAaABhAHIAZAAgAEMALgA7ACAAVABzAGkAcgBvAHUAIABNAC4AOwAgAFQAcwB1AGoAaQAgAE4ALgA7ACAAVAB1AGYAZgBzACAAUgAuADsAIABVAGMAaABpAHkAYQBtAGEAIABZAC4AOwAgAHYAYQBuACAAZABlAHIAIABXAGEAbAB0ACAARAAuAEoALgA7ACAAdgBhAG4AIABFAGwAZABpAGsAIABDAC4AOwAgAHYAYQBuACAAUgBlAG4AcwBiAHUAcgBnACAAQwAuADsAIAB2AGEAbgAgAFMAbwBlAGwAZQBuACAAQgAuADsAIABWAGEAcwBpAGwAZQBpAGEAZABpAHMAIABHAC4AOwAgAFYAZQBoACAASgAuADsAIABWAGUAbgB0AGUAcgAgAEMALgA7ACAAVgBpAGEAbgBhACAAQQAuADsAIABWAGkAbgBjAGUAbgB0ACAAUAAuADsAIABWAGkAbgBrACAASgAuADsAIABWAG8AaQBzAGkAbgAgAEYALgA7ACAAVgBvAGUAbABrACAASAAuAEoALgA7ACAAVgB1AGkAbABsAGEAdQBtAGUAIABUAC4AOwAgAFcAYQBkAGkAYQBzAGkAbgBnAGgAIABaAC4AOwAgAFcAYQBnAG4AZQByACAAUwAuAEoALgA7ACAAVwBhAGcAbgBlAHIAIABQAC4AOwAgAFcAYQBnAG4AZQByACAAUgAuAE0ALgA7ACAAVwBoAGkAdABlACAAUgAuADsAIABXAGkAZQByAHoAYwBoAG8AbABzAGsAYQAgAEEALgA7ACAAVwBpAGwAbABtAGEAbgBuACAAUAAuADsAIABXAG8AZQByAG4AbABlAGkAbgAgAEEALgA7ACAAVwBvAHUAdABlAHIAcwAgAEQALgA7ACAAWQBhAG4AZwAgAFIALgA7ACAAWgBhAGIAbwByAG8AdgAgAEQALgA7ACAAWgBhAGMAaABhAHIAaQBhAHMAIABNAC4AOwAgAFoAYQBuAGkAbgAgAFIALgA7ACAAWgBkAHoAaQBhAHIAcwBrAGkAIABBAC4AQQAuADsAIABaAGUAYwBoACAAQQAuADsAIABaAGUAZgBpACAARgAuADsAIABaAGkAZQBnAGwAZQByACAAQQAuADsAIABaAG8AcgBuACAASgAuADsAIABaAHkAdwB1AGMAawBhACAATgAuAAAAEzIwMTgtMDQtMDlUMDg6MzI6MzgAAAATMjAyMi0xMi0yMFQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQA4AEEAJgBBAC4ALgAuADYAMQAyAEEALgAuAC4AMQBIf8AAAAAAAAlnYW1tYS1yYXkAAATnaHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjEyL0ExL2xpc3Q/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjEyL0ExL3NvdXJjZXM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjEyL0ExL3NucmNhdD86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0ErQS82MTIvQTEvbHNjb21wPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQStBLzYxMi9BMS9jb21wb24/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL0ErQS82MTIvQTE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0ErQS82MTIvQTE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0ErQS82MTIvQTEvbGlzdD86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0ErQS82MTIvQTEvc291cmNlcz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0ErQS82MTIvQTEvc25yY2F0Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQStBLzYxMi9BMS9sc2NvbXA/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjEyL0ExL2NvbXBvbj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQStBLzYxMi9BMTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovQStBLzYxMi9BMQAAAjdpdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAGjdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAAEFc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAEyUNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQStBLzYxMi9BMS9saXN0IChMaXN0IG9mIGZpdHMgaW1hZ2VzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQStBLzYxMi9BMS9zb3VyY2VzIChIR1BTIHNvdXJjZSBjYXRhbG9nIChIR1BTX1NPVVJDRVMpKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQStBLzYxMi9BMS9zbnJjYXQgKEJ1bmRsZWQgdmVyc2lvbiBvZiBTTlJjYXQgdXNlZCBmb3IgYXNzb2NpYXRpb25zIChTTlJDQVQpKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQStBLzYxMi9BMS9sc2NvbXAgKEhHUFMgbGFyZ2Utc2NhbGUgZW1pc3Npb24gbW9kZWwgcGFyYW1ldGVycyAoSEdQU1xfTEFSR0VcX1NDQUxFX0NPTVBPTkVOVCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjEyL0ExL2NvbXBvbiAoSEdQUyBjb21wb25lbnQgbGlzdCAoSEdQU1xfR0FVU1NfQ09NUE9ORU5UUykpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjEyL0ExL2xpc3QgKExpc3Qgb2YgZml0cyBpbWFnZXMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjEyL0ExL3NvdXJjZXMgKEhHUFMgc291cmNlIGNhdGFsb2cgKEhHUFNfU09VUkNFUykpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjEyL0ExL3NucmNhdCAoQnVuZGxlZCB2ZXJzaW9uIG9mIFNOUmNhdCB1c2VkIGZvciBhc3NvY2lhdGlvbnMgKFNOUkNBVCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjEyL0ExL2xzY29tcCAoSEdQUyBsYXJnZS1zY2FsZSBlbWlzc2lvbiBtb2RlbCBwYXJhbWV0ZXJzIChIR1BTXF9MQVJHRVxfU0NBTEVfQ09NUE9ORU5UKSk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0ErQS82MTIvQTEvY29tcG9uIChIR1BTIGNvbXBvbmVudCBsaXN0IChIR1BTXF9HQVVTU19DT01QT05FTlRTKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAgZG9pOjEwLjI2MDkzL2Nkcy92aXppZXIuMzYxMjAwMDEAAAAfaXZvOi8vY2RzLnZpemllci9qL2ErYS82MTgvYTE4NgAAABF2czpjYXRhbG9nc2VydmljZQAAAA5KL0ErQS82MTgvQTE4NgAAAB0ARAB5AG4AYQBtAGkAYwAgAHMAcABlAGMAdAByAGEAIABvAGYAIAAxADAAIABwAHUAbABzAGEAcgBzAAAACHJlc2VhcmNoAAAHBQBQAHUAbABzAGEAcgBzACAAcwBjAGkAbgB0AGkAbABsAGEAdABlAC4AIABEAHkAbgBhAG0AaQBjACAAcwBwAGUAYwB0AHIAYQAgAHMAaABvAHcAIABiAHIAaQBnAGgAdABuAGUAcwBzACAAdgBhAHIAaQBhAHQAaQBvAG4AIABvAGYAIABwAHUAbABzAGEAcgBzACAAaQBuACAAdABoAGUAIAB0AGkAbQBlACAAYQBuAGQAIABmAHIAZQBxAHUAZQBuAGMAeQAgAGQAbwBtAGEAaQBuAC4AIABTAGUAYwBvAG4AZABhAHIAeQAgAHMAcABlAGMAdAByAGEAIABkAGUAbQBvAG4AcwB0AHIAYQB0AGUAIAB0AGgAZQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAbwBmACAAZgBsAHUAYwB0AHUAYQB0AGkAbwBuACAAcABvAHcAZQByACAAaQBuACAAdABoAGUAIABkAHkAbgBhAG0AaQBjACAAcwBwAGUAYwB0AHIAYQAuACAARAB5AG4AYQBtAGkAYwAgAHMAcABlAGMAdAByAGEAIABzAHQAcgBvAG4AZwBsAHkAIABkAGUAcABlAG4AZAAgAG8AbgAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBhAGwAIABmAHIAZQBxAHUAZQBuAGMAaQBlAHMALAAgAGIAdQB0ACAAdwBlAHIAZQAgAG8AZgB0AGUAbgAgAG8AYgBzAGUAcgB2AGUAZAAgAGEAdAAgAGYAcgBlAHEAdQBlAG4AYwBpAGUAcwAgAGwAbwB3AGUAcgAgAHQAaABhAG4AIAAxAC4ANQBHAEgAegAuACAAUwBjAGkAbgB0AGkAbABsAGEAdABpAG8AbgAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBzACAAYQB0ACAAaABpAGcAaABlAHIAIABmAHIAZQBxAHUAZQBuAGMAaQBlAHMAIABoAGUAbABwACAAdABvACAAYwBvAG4AcwB0AHIAYQBpAG4AIAB0AGgAZQAgAHQAdQByAGIAdQBsAGUAbgBjAGUAIABmAGUAYQB0AHUAcgBlACAAbwBmACAAdABoAGUAIABpAG4AdABlAHIAcwB0AGUAbABsAGEAcgAgAG0AZQBkAGkAdQBtACAAbwB2AGUAcgAgAGEAIAB3AGkAZABlACAAZgByAGUAcQB1AGUAbgBjAHkAIAByAGEAbgBnAGUAIABhAG4AZAAgAGMAYQBuACAAZABlAHQAZQBjAHQAIAB0AGgAZQAgAHMAYwBpAG4AdABpAGwAbABhAHQAaQBvAG4AcwAgAG8AZgAgAG0AbwByAGUAIABkAGkAcwB0AGEAbgB0ACAAcAB1AGwAcwBhAHIAcwAuACAAVABlAG4AIABwAHUAbABzAGEAcgBzACAAdwBlAHIAZQAgAG8AYgBzAGUAcgB2AGUAZAAgAGEAdAAgADIAMgA1ADAATQBIAHoAIAAoAFMALQBiAGEAbgBkACkAIAB3AGkAdABoACAAdABoAGUAIABKAGkAYQBtAHUAcwBpACAANgA2AG0AIAB0AGUAbABlAHMAYwBvAHAAZQAgAHQAbwAgAHMAdAB1AGQAeQAgAHQAaABlAGkAcgAgAHMAYwBpAG4AdABpAGwAbABhAHQAaQBvAG4AcwAuACAAVABoAGUAaQByACAAZAB5AG4AYQBtAGkAYwAgAHMAcABlAGMAdAByAGEAIAB3AGUAcgBlACAAZgBpAHIAcwB0ACAAbwBiAHQAYQBpAG4AZQBkACwAIABmAHIAbwBtACAAdwBoAGkAYwBoACAAdABoAGUAIABkAGUAYwBvAHIAcgBlAGwAYQB0AGkAbwBuACAAYgBhAG4AZAB3AGkAZAB0AGgAcwAgAGEAbgBkACAAdABpAG0AZQAgAHMAYwBhAGwAZQBzACAAbwBmACAAZABpAGYAZgByAGEAYwB0AGkAdgBlACAAcwBjAGkAbgB0AGkAbABsAGEAdABpAG8AbgAgAHcAZQByAGUAIAB0AGgAZQBuACAAZABlAHIAaQB2AGUAZAAgAGIAeQAgAGEAdQB0AG8AYwBvAHIAcgBlAGwAYQB0AGkAbwBuAC4AIABTAGUAYwBvAG4AZABhAHIAeQAgAHMAcABlAGMAdAByAGEAIAB3AGUAcgBlACAAYwBhAGwAYwB1AGwAYQB0AGUAZAAgAGIAeQAgAGYAbwByAG0AaQBuAGcAIAB0AGgAZQAgAEYAbwB1AHIAaQBlAHIAIABwAG8AdwBlAHIAIABzAHAAZQBjAHQAcgBhACAAbwBmACAAdABoAGUAIABkAHkAbgBhAG0AaQBjACAAcwBwAGUAYwB0AHIAYQAuACAATQBvAHMAdAAgAG8AZgAgAHQAaABlACAAbgBlAHcAbAB5ACAAbwBiAHQAYQBpAG4AZQBkACAAZAB5AG4AYQBtAGkAYwAgAHMAcABlAGMAdAByAGEAIABhAHIAZQAgAGEAdAAgAHQAaABlACAAaABpAGcAaABlAHMAdAAgAGYAcgBlAHEAdQBlAG4AYwB5ACAAbwByACAAaABhAHYAZQAgAHQAaABlACAAbABvAG4AZwBlAHMAdAAgAHQAaQBtAGUAIABzAHAAYQBuACAAbwBmACAAYQBuAHkAIABwAHUAYgBsAGkAcwBoAGUAZAAgAGQAYQB0AGEAIABmAG8AcgAgAHQAaABlAHMAZQAgAHAAdQBsAHMAYQByAHMALgAgAEYAbwByACAAUABTAFIAcwAgAEIAMAA1ADQAMAArADIAMwAsACAAQgAyADMAMgA0ACsANgAwACAAYQBuAGQAIABCADIAMwA1ADEAKwA2ADEALAAgAHQAaABlAHMAZQAgAHcAZQByAGUAIAB0AGgAZQAgAGYAaQByAHMAdAAgAGQAeQBuAGEAbQBpAGMAIABzAHAAZQBjAHQAcgBhACAAZQB2AGUAcgAgAHIAZQBwAG8AcgB0AGUAZAAuACAAVABoAGUAIABmAHIAZQBxAHUAZQBuAGMAeQAtAGQAZQBwAGUAbgBkAGUAbgBjAGUAIABvAGYAIABzAGMAaQBuAHQAaQBsAGwAYQB0AGkAbwBuACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAGkAbgBkAGkAYwBhAHQAZQBzACAAdABoAGEAdAAgAHQAaABlACAAaQBuAHQAZQByAHYAZQBuAGkAbgBnACAAbQBlAGQAaQB1AG0AIABjAGEAbgAgAHIAYQByAGUAbAB5ACAAYgBlACAAaQBkAGUAYQBsAGwAeQAgAHQAdQByAGIAdQBsAGUAbgB0ACAAdwBpAHQAaAAgAGEAIABLAG8AbABtAG8AZwBvAHIAbwB2ACAAcwBwAGUAYwB0AHIAdQBtAC4AIABUAGgAZQAgAHQAaABpAG4AIABzAGMAcgBlAGUAbgAgAG0AbwBkAGUAbAAgAHcAbwByAGsAZQBkACAAdwBlAGwAbAAgAGEAdAAgAFMALQBiAGEAbgBkACAAZgBvAHIAIAB0AGgAZQAgAHMAYwBpAG4AdABpAGwAbABhAHQAaQBvAG4AIABvAGYAIABQAFMAUgAgAEIAMQA5ADMAMwArADEANgAuACAAUABhAHIAYQBiAG8AbABpAGMAIABhAHIAYwBzACAAdwBlAHIAZQAgAGQAZQB0AGUAYwB0AGUAZAAgAGkAbgAgAHQAaABlACAAcwBlAGMAbwBuAGQAYQByAHkAIABzAHAAZQBjAHQAcgBhACAAbwBmACAAdABoAHIAZQBlACAAcAB1AGwAcwBhAHIAcwAsACAAUABTAFIAcwAgAEIAMAAzADUANQArADUANAAsACAAQgAwADUANAAwACsAMgAzACAAYQBuAGQAIABCADIAMQA1ADQAKwA0ADAALAAgAGEAbABsACAAbwBmACAAdwBoAGkAYwBoACAAdwBlAHIAZQAgAGEAcwB5AG0AbQBlAHQAcgBpAGMAYQBsAGwAeQAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAuACAAVABoAGUAIABpAG4AdgBlAHIAdABlAGQAIABhAHIAYwBsAGUAdABzACAAbwBmACAAUABTAFIAIABCADAAMwA1ADUAKwA1ADQAIAB3AGUAcgBlACAAcwBlAGUAbgAgAHQAbwAgAGUAdgBvAGwAdgBlACAAYQBsAG8AbgBnACAAdABoAGUAIABtAGEAaQBuACAAcABhAHIAYQBiAG8AbABhACAAdwBpAHQAaABpAG4AIABhACAAYwBvAG4AdABpAG4AdQBvAHUAcwAgAG8AYgBzAGUAcgB2AGkAbgBnACAAcwBlAHMAcwBpAG8AbgAgAG8AZgAgADEAMgAgAGgAbwB1AHIAcwAsACAAZgByAG8AbQAgAHcAaABpAGMAaAAgAHQAaABlACAAYQBuAGcAdQBsAGEAcgAgAHYAZQBsAG8AYwBpAHQAeQAgAG8AZgAgAHQAaABlACAAcAB1AGwAcwBhAHIAIAB3AGEAcwAgAGUAcwB0AGkAbQBhAHQAZQBkACAAdABoAGEAdAAgAHcAYQBzACAAYwBvAG4AcwBpAHMAdABlAG4AdAAgAHcAaQB0AGgAIAB0AGgAZQAgAG0AZQBhAHMAdQByAGUAbQBlAG4AdAAgAGIAeQAgAHYAZQByAHkAIABsAG8AbgBnACAAYgBhAHMAZQBsAGkAbgBlACAAaQBuAHQAZQByAGYAZQByAG8AbQBlAHQAcgB5ACAAKABWAEwAQgBJACkALgAAADhodHRwczovL2Nkc2FyYy5jZHMudW5pc3RyYS5mci92aXotYmluL2NhdC9KL0ErQS82MTgvQTE4NgAAAFQAVwBhAG4AZwAgAFAALgBGAC4AOwAgAEgAYQBuACAASgAuAEwALgA7ACAASABhAG4AIABMAC4AOwAgAFoAaABhAG4AZwAgAEoALgBIAC4AOwAgAEwAaQAgAEoALgBRAC4AOwAgAFcAYQBuAGcAIABDAC4AOwAgAEgAYQBuACAASgAuADsAIABXAGEAbgBnACAAVAAuADsAIABHAGEAbwAgAFgALgBZAC4AAAATMjAxOC0xMC0yNlQwOToyOTozOAAAABMyMDIyLTExLTA0VDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAxADgAQQAmAEEALgAuAC4ANgAxADgAQQAuADEAOAA2AFd/wAAAAAAABXJhZGlvAAABJ2h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQStBLzYxOC9BMTg2L3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQStBLzYxOC9BMTg2Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9BK0EvNjE4L0ExODYAAABkaXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAF52czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAAM3N0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAM5Db25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0ErQS82MTgvQTE4Ni90YWJsZTEgKFBhcmFtZXRlcnMgb2YgMTAgcHVsc2FycyBhcmUgbGlzdGVkIHRvZ2V0aGVyIHdpdGggZnJlcXVlbmNpZXMgZm9yIHByZXZpb3VzIGR5bmFtaWMgc3BlY3RydW0gb2JzZXJ2YXRpb25zKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAACBkb2k6MTAuMjYwOTMvY2RzL3Zpemllci4zNjE4MDE4NgAAAB9pdm86Ly9jZHMudml6aWVyL2ovYSthLzYxOS9hMTI0AAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAADkovQStBLzYxOS9BMTI0AAAAJgBUAEgATwBSACAAcwB1AHIAdgBlAHkAIABpAG4AIABuAG8AcgB0AGgAZQByAG4AIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUAAAAIcmVzZWFyY2gAAAkBAFIAYQBkAGkAbwAgAGMAbwBuAHQAaQBuAHUAdQBtACAAcwB1AHIAdgBlAHkAcwAgAG8AZgAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAcABsAGEAbgBlACAAYwBhAG4AIABmAGkAbgBkACAAYQBuAGQAIABjAGgAYQByAGEAYwB0AGUAcgBpAHoAZQAgAEgASQBJACAAcgBlAGcAaQBvAG4AcwAsACAAcwB1AHAAZQByAG4AbwB2AGEAIAByAGUAbQBuAGEAbgB0AHMAIAAoAFMATgBSAHMAKQAsACAAcABsAGEAbgBlAHQAYQByAHkAIABuAGUAYgB1AGwAYQBlACAAKABQAE4AZQApACwAIABhAG4AZAAgAGUAeAB0AHIAYQBnAGEAbABhAGMAdABpAGMAIABzAG8AdQByAGMAZQBzAC4AIABBACAAbgB1AG0AYgBlAHIAIABvAGYAIABzAHUAcgB2AGUAeQBzACAAYQB0ACAAaABpAGcAaAAgAGEAbgBnAHUAbABhAHIAIAByAGUAcwBvAGwAdQB0AGkAbwBuACAAKAA8AH4AMgA1ACIAKQAgAGEAdAAgAGQAaQBmAGYAZQByAGUAbgB0ACAAdwBhAHYAZQBsAGUAbgBnAHQAaABzACAAZQB4AGkAcwB0ACAAdABvACAAcwB0AHUAZAB5ACAAdABoAGUAIABpAG4AdABlAHIAcwB0AGUAbABsAGEAcgAgAG0AZQBkAGkAdQBtACAAKABJAFMATQApACwAIABiAHUAdAAgAG4AbwAgAGMAbwBtAHAAYQByAGEAYgBsAGUAIABoAGkAZwBoAC0AcgBlAHMAbwBsAHUAdABpAG8AbgAgAGEAbgBkACAAaABpAGcAaAAtAHMAZQBuAHMAaQB0AGkAdgBpAHQAeQAgAHMAdQByAHYAZQB5ACAAZQB4AGkAcwB0AHMAIABhAHQAIABsAG8AbgBnACAAcgBhAGQAaQBvACAAdwBhAHYAZQBsAGUAbgBnAHQAaABzACAAYQByAG8AdQBuAGQAIAAyADEAYwBtAC4AIABPAHUAcgAgAGcAbwBhAGwAIABpAHMAIAB0AG8AIABpAG4AdgBlAHMAdABpAGcAYQB0AGUAIAB0AGgAZQAgADIAMQBjAG0AIAByAGEAZABpAG8AIABjAG8AbgB0AGkAbgB1AHUAbQAgAGUAbQBpAHMAcwBpAG8AbgAgAGkAbgAgAHQAaABlACAAbgBvAHIAdABoAGUAcgBuACAARwBhAGwAYQBjAHQAaQBjACAAcABsAGEAbgBlACAAYQB0ACAAPAAyADUAIgAgAHIAZQBzAG8AbAB1AHQAaQBvAG4ALgAgAFcAZQAgAG8AYgBzAGUAcgB2AGUAZAAgAGEAIABsAGEAcgBnAGUAIABmAHIAYQBjAHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAHAAbABhAG4AZQAgAGkAbgAgAHQAaABlACAAZgBpAHIAcwB0ACAAcQB1AGEAZAByAGEAbgB0ACAAbwBmACAAdABoAGUAIABNAGkAbABrAHkAIABXAGEAeQAgACgAbAA9ADEANAAuADAAewBkAGUAZwB9AC0ANgA3AC4ANAB7AGQAZQBnAH0AIABhAG4AZAAgAHwAYgB8ADwAPQAxAC4AMgA1AHsAZABlAGcAfQApACAAdwBpAHQAaAAgAHQAaABlACAASwBhAHIAbAAgAEcALgAgAEoAYQBuAHMAawB5ACAAVgBlAHIAeQAgAEwAYQByAGcAZQAgAEEAcgByAGEAeQAgACgAVgBMAEEAKQAgAGkAbgAgAHQAaABlACAAQwAtAGMAbwBuAGYAaQBnAHUAcgBhAHQAaQBvAG4AIABjAG8AdgBlAHIAaQBuAGcAIABzAGkAeAAgAGMAbwBuAHQAaQBuAHUAdQBtACAAcwBwAGUAYwB0AHIAYQBsACAAdwBpAG4AZABvAHcAcwAuACAAVABoAGUAcwBlACAAZABhAHQAYQAgAHAAcgBvAHYAaQBkAGUAIABhACAAZABlAHQAYQBpAGwAZQBkACAAdgBpAGUAdwAgAG8AbgAgAHQAaABlACAAYwBvAG0AcABhAGMAdAAgAGEAcwAgAHcAZQBsAGwAIABhAHMAIABlAHgAdABlAG4AZABlAGQAIAByAGEAZABpAG8AIABlAG0AaQBzAHMAaQBvAG4AIABvAGYAIABvAHUAcgAgAEcAYQBsAGEAeAB5ACAAYQBuAGQAIAB0AGgAbwB1AHMAYQBuAGQAcwAgAG8AZgAgAGUAeAB0AHIAYQBnAGEAbABhAGMAdABpAGMAIABiAGEAYwBrAGcAcgBvAHUAbgBkACAAcwBvAHUAcgBjAGUAcwAuACAAVwBlACAAdQBzAGUAZAAgAHQAaABlACAAQgBMAE8AQgBDAEEAVAAgAHMAbwBmAHQAdwBhAHIAZQAgAGEAbgBkACAAZQB4AHQAcgBhAGMAdABlAGQAIAAxADAAOQAxADYAIABzAG8AdQByAGMAZQBzAC4AIABBAGYAdABlAHIAIAByAGUAbQBvAHYAaQBuAGcAIABzAHAAdQByAGkAbwB1AHMAIABzAG8AdQByAGMAZQAgAGQAZQB0AGUAYwB0AGkAbwBuAHMAIABjAGEAdQBzAGUAZAAgAGIAeQAgAHQAaABlACAAcwBpAGQAZQBsAG8AYgBlAHMAIABvAGYAIAB0AGgAZQAgAHMAeQBuAHQAaABlAHMAaQBzAGUAZAAgAGIAZQBhAG0ALAAgAHcAZQAgAGMAbABhAHMAcwBpAGYAaQBlAGQAIAAxADAAMwA4ADcAIABzAG8AdQByAGMAZQBzACAAYQBzACAAcgBlAGwAaQBhAGIAbABlACAAZABlAHQAZQBjAHQAaQBvAG4AcwAuAFcAZQAgAHMAbQBvAG8AdABoAGUAZAAgAHQAaABlACAAaQBtAGEAZwBlAHMAIAB0AG8AIABhACAAYwBvAG0AbQBvAG4AIAByAGUAcwBvAGwAdQB0AGkAbwBuACAAbwBmACAAMgA1ACIAIABhAG4AZAAgAGUAeAB0AHIAYQBjAHQAZQBkACAAdABoAGUAIABwAGUAYQBrACAAZgBsAHUAeAAgAGQAZQBuAHMAaQB0AHkAIABvAGYAIABlAGEAYwBoACAAcwBvAHUAcgBjAGUAIABpAG4AIABlAGEAYwBoACAAcwBwAGUAYwB0AHIAYQBsACAAdwBpAG4AZABvAHcAIAAoAFMAUABXACkAIAB0AG8AIABkAGUAdABlAHIAbQBpAG4AZQAgAHQAaABlACAAcwBwAGUAYwB0AHIAYQBsACAAaQBuAGQAaQBjAGUAcwAgAHsAYQBsAHAAaABhAH0AIAAoAGEAcwBzAHUAbQBpAG4AZwAgAEkAKABuAHUAKQB7AHAAcgBvAHAALgB0AG8AfQBuAHUAXgBhAGwAcABoAGEAXgApAC4AIABCAHkAIABjAHIAbwBzAHMALQBtAGEAdABjAGgAaQBuAGcAIAB3AGkAdABoACAAYwBhAHQAYQBsAG8AZwBzACAAbwBmACAASABJAEkAIAByAGUAZwBpAG8AbgBzACwAIABTAE4AUgBzACwAIABQAE4AZQAsACAAYQBuAGQAIABwAHUAbABzAGEAcgBzACwAIAB3AGUAIABmAG8AdQBuAGQAIAByAGEAZABpAG8AIABjAG8AdQBuAHQAZQByAHAAYQByAHQAcwAgAGYAbwByACAAOAA0ADAAIABIAEkASQAgAHIAZQBnAGkAbwBuAHMALAAgADUAMgAgAFMATgBSAHMALAAgADEANgA0ACAAUABOAGUALAAgAGEAbgBkACAAMwA4ACAAcAB1AGwAcwBhAHIAcwAuACAAVwBlACAAZgBvAHUAbgBkACAANwA5ACAAYwBvAG4AdABpAG4AdQB1AG0AIABzAG8AdQByAGMAZQBzACAAdABoAGEAdAAgAGEAcgBlACAAYQBzAHMAbwBjAGkAYQB0AGUAZAAgAHcAaQB0AGgAIABYAC0AcgBhAHkAIABzAG8AdQByAGMAZQBzAC4AIABXAGUAIABpAGQAZQBuAHQAaQBmAGkAZQBkACAANgA5ADkAIAB1AGwAdAByAGEAcwB0AGUAZQBwACAAcwBwAGUAYwB0AHIAYQBsACAAcwBvAHUAcgBjAGUAcwAgACgAYQBsAHAAaABhADwALQAxAC4AMwApACAAdABoAGEAdAAgAGMAbwB1AGwAZAAgAGIAZQAgAGgAaQBnAGgALQByAGUAZABzAGgAaQBmAHQAIABnAGEAbABhAHgAaQBlAHMALgAgAEEAcgBvAHUAbgBkACAAOQAwADAAMAAgAG8AZgAgAHQAaABlACAAcwBvAHUAcgBjAGUAcwAgAHcAZQAgAGUAeAB0AHIAYQBjAHQAZQBkACAAYQByAGUAIABuAG8AdAAgAGMAbABhAHMAcwBpAGYAaQBlAGQAIABzAHAAZQBjAGkAZgBpAGMAYQBsAGwAeQAsACAAYgB1AHQAIABiAGEAcwBlAGQAIABvAG4AIAB0AGgAZQBpAHIAIABzAHAAYQB0AGkAYQBsACAAYQBuAGQAIABzAHAAZQBjAHQAcgBhAGwAIABkAGkAcwB0AHIAaQBiAHUAdABpAG8AbgAsACAAYQAgAGwAYQByAGcAZQAgAGYAcgBhAGMAdABpAG8AbgAgAG8AZgAgAHQAaABlAG0AIABpAHMAIABsAGkAawBlAGwAeQAgAHQAbwAgAGIAZQAgAGUAeAB0AHIAYQBnAGEAbABhAGMAdABpAGMAIABiAGEAYwBrAGcAcgBvAHUAbgBkACAAcwBvAHUAcgBjAGUAcwAuACAATQBvAHIAZQAgAHQAaABhAG4AIAA3ADcANQAwACAAcwBvAHUAcgBjAGUAcwAgAGQAbwAgAG4AbwB0ACAAaABhAHYAZQAgAGMAbwB1AG4AdABlAHIAcABhAHIAdABzACAAaQBuACAAdABoAGUAIABTAEkATQBCAEEARAAgAGQAYQB0AGEAYgBhAHMAZQAsACAAYQBuAGQAIABtAG8AcgBlACAAdABoAGEAbgAgADMANwA2ADAAIABzAG8AdQByAGMAZQBzACAAZABvACAAbgBvAHQAIABoAGEAdgBlACAAYwBvAHUAbgB0AGUAcgBwAGEAcgB0AHMAIABpAG4AIAB0AGgAZQAgAE4ARQBEACAAZABhAHQAYQBiAGEAcwBlAC4AIABTAHQAdQBkAHkAaQBuAGcAIAB0AGgAZQAgAGwAbwBuAGcAIAB3AGEAdgBlAGwAZQBuAGcAdABoAHMAIABjAG0AIABjAG8AbgB0AGkAbgB1AHUAbQAgAGUAbQBpAHMAcwBpAG8AbgAgAGEAbgBkACAAdABoAGUAIABhAHMAcwBvAGMAaQBhAHQAZQBkACAAcwBwAGUAYwB0AHIAYQBsACAAaQBuAGQAaQBjAGUAcwAgAGEAbABsAG8AdwBzACAAdQBzACAAdABvACAAYwBoAGEAcgBhAGMAdABlAHIAaQB6AGUAIABhACAAbABhAHIAZwBlACAAZgByAGEAYwB0AGkAbwBuACAAbwBmACAARwBhAGwAYQBjAHQAaQBjACAAYQBuAGQAIABlAHgAdAByAGEAZwBhAGwAYQBjAHQAaQBjACAAcgBhAGQAaQBvACAAcwBvAHUAcgBjAGUAcwAgAGkAbgAgAHQAaABlACAAYQByAGUAYQAgAG8AZgAgAHQAaABlACAAbgBvAHIAdABoAGUAcgBuACAAaQBuAG4AZQByACAATQBpAGwAawB5ACAAVwBhAHkALgAgAFQAaABpAHMAIABkAGEAdABhAGIAYQBzAGUAIAB3AGkAbABsACAAYgBlACAAZQB4AHQAcgBlAG0AZQBsAHkAIAB1AHMAZQBmAHUAbAAgAGYAbwByACAAZgB1AHQAdQByAGUAIABzAHQAdQBkAGkAZQBzACAAbwBmACAAYQAgAGQAaQB2AGUAcgBzAGUAIABzAGUAdAAgAG8AZgAgAGEAcwB0AHIAbwBwAGgAeQBzAGkAYwBhAGwAIABvAGIAagBlAGMAdABzAC4AAAA4aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BK0EvNjE5L0ExMjQAAADlAFcAYQBuAGcAIABZAC4AOwAgAEIAaQBoAHIAIABTAC4AOwAgAFIAdQBnAGUAbAAgAE0ALgA7ACAAQgBlAHUAdABoAGUAcgAgAEgALgA7ACAASgBvAGgAbgBzAHQAbwBuACAASwAuAEcALgA7ACAATwB0AHQAIABKAC4AOwAgAFMAbwBsAGUAcgAgAEoALgBEAC4AOwAgAEIAcgB1AG4AdABoAGEAbABlAHIAIABBAC4AOwAgAEEAbgBkAGUAcgBzAG8AbgAgAEwALgBEAC4AOwAgAFUAcgBxAHUAaABhAHIAdAAgAEoALgBTAC4AOwAgAEsAbABlAHMAcwBlAG4AIABSAC4AUwAuADsAIABMAGkAbgB6ACAASAAuADsAIABNAGMAQwBsAHUAcgBlAC0ARwByAGkAZgBmAGkAdABoAHMAIABOAC4ATQAuADsAIABHAGwAbwB2AGUAcgAgAFMALgBDAC4ATwAuADsAIABNAGUAbgB0AGUAbgAgAEsALgBNAC4AOwAgAEIAaQBnAGkAZQBsACAARgAuADsAIABIAG8AYQByAGUAIABNAC4AOwAgAEwAbwBuAGcAbQBvAHIAZQAgAFMALgBOAC4AAAATMjAxOC0xMS0xNFQwNzo1NTo0OAAAABMyMDIyLTExLTA0VDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAxADgAQQAmAEEALgAuAC4ANgAxADkAQQAuADEAMgA0AFd/wAAAAAAABXJhZGlvAAAB1Wh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQStBLzYxOS9BMTI0L2xpc3Rhdmc/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjE5L0ExMjQvbGlzdGNvbnQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjE5L0ExMjQvY2F0YWxvZz86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQStBLzYxOS9BMTI0Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9BK0EvNjE5L0ExMjQAAAC8aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAACUdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAAFdzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAGIQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjE5L0ExMjQvbGlzdGF2ZyAoTGlzdCBvZiBmaXRzIGZpbGVzIGZvciBhdmVyYWdlIGltYWdlcyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0ErQS82MTkvQTEyNC9saXN0Y29udCAoTGlzdCBvZiBjb250aW51dW0gZml0cyBpbWFnZXMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BK0EvNjE5L0ExMjQvY2F0YWxvZyAoRnVsbCBjb250aW51dW0gY2F0YWxvZyAoY29ycmVjdGVkIHZlcnNpb24gZnJvbSBlcnJhdHVtLCBBJkEsIDY0MSwgQzEgKDIwMjApKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAgZG9pOjEwLjI2MDkzL2Nkcy92aXppZXIuMzYxOTAxMjQAAAAfaXZvOi8vY2RzLnZpemllci9qL2ErYS82MjEvYTExNgAAABF2czpjYXRhbG9nc2VydmljZQAAAA5KL0ErQS82MjEvQTExNgAAACEASABFAFMAUwAgAEoAMQA4ADIANQAtADEAMwA3ACAAcABhAHIAdABpAGMAbABlACAAdAByAGEAbgBzAHAAbwByAHQAAAAIcmVzZWFyY2gAAAZtAFcAZQAgAHAAcgBlAHMAZQBuAHQAIABhACAAZABlAHQAYQBpAGwAZQBkACAAdgBpAGUAdwAgAG8AZgAgAHQAaABlACAAcAB1AGwAcwBhAHIAIAB3AGkAbgBkACAAbgBlAGIAdQBsAGEAIAAoAFAAVwBOACkAIABIAEUAUwBTACAASgAxADgAMgA1AC0ALQAxADMANwAuACAAVwBlACAAYQBpAG0AIAB0AG8AIABjAG8AbgBzAHQAcgBhAGkAbgAgAHQAaABlACAAbQBlAGMAaABhAG4AaQBzAG0AcwAgAGQAbwBtAGkAbgBhAHQAaQBuAGcAIAB0AGgAZQAgAHAAYQByAHQAaQBjAGwAZQAgAHQAcgBhAG4AcwBwAG8AcgB0ACAAdwBpAHQAaABpAG4AIAB0AGgAZQAgAG4AZQBiAHUAbABhACwAIABhAGMAYwBvAHUAbgB0AGkAbgBnACAAZgBvAHIAIABpAHQAcwAgAGEAbgBvAG0AYQBsAG8AdQBzAGwAeQAgAGwAYQByAGcAZQAgAHMAaQB6AGUAIABhAG4AZAAgAHMAcABlAGMAdAByAGEAbAAgAGMAaABhAHIAYQBjAHQAZQByAGkAcwB0AGkAYwBzAC4AIABUAGgAZQAgAG4AZQBiAHUAbABhACAAaQBzACAAcwB0AHUAZABpAGUAZAAgAHUAcwBpAG4AZwAgAGEAIABkAGUAZQBwACAAZQB4AHAAbwBzAHUAcgBlACAAZgByAG8AbQAgAG8AdgBlAHIAIAAxADIAIAB5AGUAYQByAHMAIABvAGYAIABIAC4ARQAuAFMALgBTAC4AIABJACAAbwBwAGUAcgBhAHQAaQBvAG4ALAAgAHQAbwBnAGUAdABoAGUAcgAgAHcAaQB0AGgAIABkAGEAdABhACAAZgByAG8AbQAgAEgALgBFAC4AUwAuAFMALgAgAEkASQAgAGkAbQBwAHIAbwB2AGkAbgBnACAAdABoAGUAIABsAG8AdwAgAGUAbgBlAHIAZwB5ACAAcwBlAG4AcwBpAHQAaQB2AGkAdAB5AC4AIABFAG4AaABhAG4AYwBlAGQAIABlAG4AZQByAGcAeQAtACAAZABlAHAAZQBuAGQAZQBuAHQAIABtAG8AcgBwAGgAbwBsAG8AZwBpAGMAYQBsACAAYQBuAGQAIABzAHAAYQB0AGkAYQBsAGwAeQAtAHIAZQBzAG8AbAB2AGUAZAAgAHMAcABlAGMAdAByAGEAbAAgAGEAbgBhAGwAeQBzAGUAcwAgAHAAcgBvAGIAZQAgAHQAaABlACAAVgBlAHIAeQAgAEgAaQBnAGgAIABFAG4AZQByAGcAeQAgACgAVgBIAEUALAAgAEUAPgAwAC4AMQBUAGUAVgApACAAZwBhAG0AbQBhAC0AcgBhAHkAIABwAHIAbwBwAGUAcgB0AGkAZQBzACAAbwBmACAAdABoAGUAIABuAGUAYgB1AGwAYQAuACAAVABoAGUAIABuAGUAYgB1AGwAYQAgAGUAbQBpAHMAcwBpAG8AbgAgAGkAcwAgAHIAZQB2AGUAYQBsAGUAZAAgAHQAbwAgAGUAeAB0AGUAbgBkACAAbwB1AHQAIAB0AG8AIAAxAC4ANQAgAGQAZQBnAHIAZQBlAHMAIABmAHIAbwBtACAAdABoAGUAIABwAHUAbABzAGEAcgAsACAAfgAxAC4ANQAgAHQAaQBtAGUAcwAgAGYAdQByAHQAaABlAHIAIAB0AGgAYQBuACAAcAByAGUAdgBpAG8AdQBzAGwAeQAgAHMAZQBlAG4ALAAgAG0AYQBrAGkAbgBnACAASABFAFMAUwAgAEoAMQA4ADIANQAtADEAMwA3ACwAIAB3AGkAdABoACAAYQBuACAAaQBuAHQAcgBpAG4AcwBpAGMAIABkAGkAYQBtAGUAdABlAHIAIABvAGYAIAB+ADEAMAAwAHAAYwAsACAAcABvAHQAZQBuAHQAaQBhAGwAbAB5ACAAdABoAGUAIABsAGEAcgBnAGUAcwB0ACAAZwBhAG0AbQBhAC0AcgBhAHkAIABQAFcATgAgAGMAdQByAHIAZQBuAHQAbAB5ACAAawBuAG8AdwBuAC4AIABDAGgAYQByAGEAYwB0AGUAcgBpAHMAYQB0AGkAbwBuACAAbwBmACAAdABoAGUAIABuAGUAYgB1AGwAYQAnAHMAIABzAHQAcgBvAG4AZwBsAHkAIABlAG4AZQByAGcAeQAtAGQAZQBwAGUAbgBkAGUAbgB0ACAAbQBvAHIAcABoAG8AbABvAGcAeQAgAGUAbgBhAGIAbABlAHMAIAB0AGgAZQAgAHAAYQByAHQAaQBjAGwAZQAgAHQAcgBhAG4AcwBwAG8AcgB0ACAAbQBlAGMAaABhAG4AaQBzAG0AcwAgAHQAbwAgAGIAZQAgAGMAbwBuAHMAdAByAGEAaQBuAGUAZAAuACAAQQAgAGQAZQBwAGUAbgBkAGUAbgBjAGUAIABvAGYAIAB0AGgAZQAgAG4AZQBiAHUAbABhACAAZQB4AHQAZQBuAHQAIAB3AGkAdABoACAAZQBuAGUAcgBnAHkAIABvAGYAIABSAHsAcAByAG8AcAAuAHQAbwB9ACAARQBeAGEAbABwAGgAYQBeACAAdwBpAHQAaAAgAGEAbABwAGgAYQA9AC0AMAAuADIAOQArAC8ALQAwAC4AMAA0ACgAcwB0AGEAdAApACsALwAtADAALgAwADUAKABzAHkAcwApACAAZABpAHMAZgBhAHYAbwB1AHIAcwAgAGEAIABwAHUAcgBlACAAZABpAGYAZgB1AHMAaQBvAG4AIABzAGMAZQBuAGEAcgBpAG8AIABmAG8AcgAgAHAAYQByAHQAaQBjAGwAZQAgAHQAcgBhAG4AcwBwAG8AcgB0ACAAdwBpAHQAaABpAG4AIAB0AGgAZQAgAG4AZQBiAHUAbABhAC4AIABUAGgAZQAgAHQAbwB0AGEAbAAgAGcAYQBtAG0AYQAtAHIAYQB5ACAAZgBsAHUAeAAgAG8AZgAgAHQAaABlACAAbgBlAGIAdQBsAGEAIABhAGIAbwB2AGUAIAAxAH4AVABlAFYAIABpAHMAIABmAG8AdQBuAGQAIAB0AG8AIABiAGUAIAAoADEALgAxADIAKwAvAC0AMAAuADAAMwAoAHMAdABhAHQAKQArAC8ALQAwAC4AMgA1ACgAcwB5AHMAKQApAHgAMQAwAF4ALQAxADEAXgBjAG0AXgAtADIAXgBzAF4ALQAxAF4ALAAgAGMAbwByAHIAZQBzAHAAbwBuAGQAaQBuAGcAIAB0AG8AIAB+ADYANAAlACAAbwBmACAAdABoAGUAIABmAGwAdQB4ACAAbwBmACAAdABoAGUAIABDAHIAYQBiACAATgBlAGIAdQBsAGEALgAgAEgARQBTAFMAIABKADEAOAAyADUALQAxADMANwAgAGkAcwAgAGEAIABQAFcATgAgAHcAaQB0AGgAIABjAGwAZQBhAHIAIABlAG4AZQByAGcAeQAtAGQAZQBwAGUAbgBkAGUAbgB0ACAAbQBvAHIAcABoAG8AbABvAGcAeQAgAGEAdAAgAFYASABFACAAZwBhAG0AbQBhAC0AcgBhAHkAIABlAG4AZQByAGcAaQBlAHMALgAgAFQAaABpAHMAIABzAG8AdQByAGMAZQAgAGkAcwAgAHUAcwBlAGQAIABhAHMAIABhACAAbABhAGIAbwByAGEAdABvAHIAeQAgAHQAbwAgAGkAbgB2AGUAcwB0AGkAZwBhAHQAZQAgAHAAYQByAHQAaQBjAGwAZQAgAHQAcgBhAG4AcwBwAG8AcgB0ACAAdwBpAHQAaABpAG4AIABtAGkAZABkAGwAZQAtAGEAZwBlAGQAIABQAFcATgBlAC4AIABEAGUAZQBwACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIABvAGYAIAB0AGgAaQBzACAAaABpAGcAaABsAHkAIABzAHAAYQB0AGkAYQBsAGwAeQAtAGUAeAB0AGUAbgBkAGUAZAAgAFAAVwBOACAAZQBuAGEAYgBsAGUAIABhACAAcwBwAGUAYwB0AHIAYQBsACAAbQBhAHAAIABvAGYAIAB0AGgAZQAgAHIAZQBnAGkAbwBuACAAdABvACAAYgBlACAAcAByAG8AZAB1AGMAZQBkACwAIABwAHIAbwB2AGkAZABpAG4AZwAgAGkAbgBzAGkAZwBoAHQAcwAgAGkAbgB0AG8AIAB0AGgAZQAgAHMAcABlAGMAdAByAGEAbAAgAHYAYQByAGkAYQB0AGkAbwBuACAAdwBpAHQAaABpAG4AIAB0AGgAZQAgAG4AZQBiAHUAbABhAC4AAAA4aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BK0EvNjIxL0ExMTYAAAs2AEgALgBFAC4AUwAuAFMALgAgAEMAbwBsAGwAYQBiAG8AcgBhAHQAaQBvAG4AOwAgAEEAYgBkAGEAbABsAGEAIABIAC4AOwAgAEEAaABhAHIAbwBuAGkAYQBuACAARgAuADsAIABBAGkAdAAgAEIAZQBuAGsAaABhAGwAaQAgAEYALgA7ACAAQQBuAGcAdQBlAG4AZQByACAARQAuAE8ALgA7ACAAQQByAGEAawBhAHcAYQAgAE0ALgA7ACAAQQByAGMAYQByAG8AIABDAC4AOwAgAEEAcgBtAGEAbgBkACAAQwAuADsAIABBAHIAcgBpAGUAdABhACAATQAuADsAIABCAGEAYwBrAGUAcwAgAE0ALgA7ACAAQgBhAHIAbgBhAHIAZAAgAE0ALgA7ACAAQgBlAGMAaABlAHIAaQBuAGkAIABZAC4AOwAgAEIAZQBjAGsAZQByACAAVABqAHUAcwAgAEoALgA7ACAAQgBlAHIAZwBlACAARAAuADsAIABCAGUAcgBuAGwAbwBlAGgAcgAgAEsALgA7ACAAQgBsAGEAYwBrAHcAZQBsAGwAIABSAC4AOwAgAEIAbwBlAHQAdABjAGgAZQByACAATQAuADsAIABCAG8AaQBzAHMAbwBuACAAQwAuADsAIABCAG8AbABtAG8AbgB0ACAASgAuADsAIABCAG8AbgBuAGUAZgBvAHkAIABTAC4AOwAgAEIAbwByAGQAYQBzACAAUAAuADsAIABCAHIAZQBnAGUAbwBuACAASgAuADsAIABCAHIAdQBuACAARgAuADsAIABCAHIAdQBuACAAUAAuADsAIABCAHIAeQBhAG4AIABNAC4AOwAgAEIAdQBlAGMAaABlAGwAZQAgAE0ALgA7ACAAQgB1AGwAaQBrACAAVAAuADsAIABCAHkAbAB1AG4AZAAgAFQALgA7ACAAQwBhAHAAYQBzAHMAbwAgAE0ALgA7ACAAQwBhAHIAbwBmAGYAIABTAC4AOwAgAEMAYQByAG8AcwBpACAAQQAuADsAIABDAGEAcwBhAG4AbwB2AGEAIABTAC4AOwAgAEMAZQByAHIAdQB0AGkAIABNAC4AOwAgAEMAaABhAGsAcgBhAGIAbwByAHQAeQAgAE4ALgA7ACAAQwBoAGEAbgBkACAAVAAuADsAIABDAGgAYQBuAGQAcgBhACAAUwAuADsAIABDAGgAYQB2AGUAcwAgAFIALgBDAC4ARwAuADsAIABDAGgAZQBuACAAQQAuADsAIABDAG8AbABhAGYAcgBhAG4AYwBlAHMAYwBvACAAUwAuADsAIABDAG8AbgBkAG8AbgAgAEIALgA7ACAARABhAHYAaQBkAHMAIABJAC4ARAAuADsAIABEAGUAaQBsACAAQwAuADsAIABEAGUAdgBpAG4AIABKAC4AOwAgAGQAZQBXAGkAbAB0ACAAUAAuADsAIABEAGkAcgBzAG8AbgAgAEwALgA7ACAARABqAGEAbgBuAGEAdABpAC0AQQB0AGEAaQAgAEEALgA7ACAARABtAHkAdAByAGkAaQBlAHYAIABBAC4AOwAgAEQAbwBuAGEAdABoACAAQQAuADsAIABEAG8AcgBvAHMAaABlAG4AawBvACAAVgAuADsAIABEAHIAdQByAHkAIABMAC4ATwAnAEMALgA7ACAARAB5AGsAcwAgAEoALgA7ACAARQBnAGIAZQByAHQAcwAgAEsALgA7ACAARQBtAGUAcgB5ACAARwAuADsAIABFAHIAbgBlAG4AdwBlAGkAbgAgAEoALgAtAFAALgA7ACAARQBzAGMAaABiAGEAYwBoACAAUwAuADsAIABGAGUAZwBhAG4AIABTAC4AOwAgAEYAaQBhAHMAcwBvAG4AIABBAC4AOwAgAEYAbwBuAHQAYQBpAG4AZQAgAEcALgA7ACAARgB1AG4AawAgAFMALgA7ACAARgB1AGUAcwBzAGwAaQBuAGcAIABNAC4AOwAgAEcAYQBiAGkAYwBpACAAUwAuADsAIABHAGEAbABsAGEAbgB0ACAAWQAuAEEALgA7ACAARwBhAHQAZQAgAEYALgA7ACAARwBpAGEAdgBpAHQAdABvACAARwAuADsAIABHAGwAYQB3AGkAbwBuACAARAAuADsAIABHAGwAaQBjAGUAbgBzAHQAZQBpAG4AIABKAC4ARgAuADsAIABHAG8AdAB0AHMAYwBoAGEAbABsACAARAAuADsAIABHAHIAbwBuAGQAaQBuACAATQAuAC0ASAAuADsAIABIAGEAaABuACAASgAuADsAIABIAGEAdQBwAHQAIABNAC4AOwAgAEgAZQBpAG4AegBlAGwAbQBhAG4AbgAgAEcALgA7ACAASABlAG4AcgBpACAARwAuADsAIABIAGUAcgBtAGEAbgBuACAARwAuADsAIABIAGkAbgB0AG8AbgAgAEoALgBBAC4AOwAgAEgAbwBmAG0AYQBuAG4AIABXAC4AOwAgAEgAbwBpAHMAYwBoAGUAbgAgAEMALgA7ACAASABvAGwAYwBoACAAVAAuAEwALgA7ACAASABvAGwAbABlAHIAIABNAC4AOwAgAEgAbwByAG4AcwAgAEQALgA7ACAASAB1AGIAZQByACAARAAuADsAIABJAHcAYQBzAGEAawBpACAASAAuADsAIABKAGEAYwBoAG8AbABrAG8AdwBzAGsAYQAgAEEALgA7ACAASgBhAG0AcgBvAHoAeQAgAE0ALgA7ACAASgBhAG4AawBvAHcAcwBrAHkAIABEAC4AOwAgAEoAYQBuAGsAbwB3AHMAawB5ACAARgAuADsAIABKAG8AdQB2AGkAbgAgAEwALgA7ACAASgB1AG4AZwAtAFIAaQBjAGgAYQByAGQAdAAgAEkALgA7ACAASwBhAHMAdABlAG4AZABpAGUAYwBrACAATQAuAEEALgA7ACAASwBhAHQAYQByAHoAeQBuAHMAawBpACAASwAuADsAIABLAGEAdABzAHUAcgBhAGcAYQB3AGEAIABNAC4AOwAgAEsAYQB0AHoAIABVAC4AOwAgAEsAZQByAHMAegBiAGUAcgBnACAARAAuADsAIABLAGgAYQBuAGcAdQBsAHkAYQBuACAARAAuADsAIABLAGgAZQBsAGkAZgBpACAAQgAuADsAIABLAGkAbgBnACAASgAuADsAIABLAGwAZQBwAHMAZQByACAAUwAuADsAIABLAGwAdQB6AG4AaQBhAGsAIABXAC4AOwAgAEsAbwBtAGkAbgAgAE4AdQAuADsAIABLAG8AcwBhAGMAawAgAEsALgA7ACAASwByAGEAdQBzACAATQAuADsAIABMAGEAbQBhAG4AbgBhACAARwAuADsAIABMAGEAdQAgAEoALgA7ACAATABlAGYAYQB1AGMAaABlAHUAcgAgAEoALgA7ACAATABlAG0AaQBlAHIAZQAgAEEALgA7ACAATABlAG0AbwBpAG4AZQAtAEcAbwB1AG0AYQByAGQAIABNAC4AOwAgAEwAZQBuAGEAaQBuACAASgAuAC0AUAAuADsAIABMAGUAcwBlAHIAIABFAC4AOwAgAEwAbwBoAHMAZQAgAFQALgA7ACAATABvAHAAZQB6AC0AQwBvAHQAbwAgAFIALgA7ACAATAB5AHAAbwB2AGEAIABJAC4AOwAgAE0AYQBsAHkAcwBoAGUAdgAgAEQALgA7ACAATQBhAHIAYQBuAGQAbwBuACAAVgAuADsAIABNAGEAcgBjAG8AdwBpAHQAaAAgAEEALgA7ACAATQBhAHIAaQBhAHUAZAAgAEMALgA7ACAATQBhAHIAdABpAC0ARABlAHYAZQBzAGEAIABHAC4AOwAgAE0AYQByAHgAIABSAC4AOwAgAE0AYQB1AHIAaQBuACAARwAuADsAIABNAGUAaQBuAHQAagBlAHMAIABQAC4ASgAuADsAIABNAGkAdABjAGgAZQBsAGwAIABBAC4ATQAuAFcALgA7ACAATQBvAGQAZQByAHMAawBpACAAUgAuADsAIABNAG8AaABhAG0AZQBkACAATQAuADsAIABNAG8AaAByAG0AYQBuAG4AIABMAC4AOwAgAE0AbwBvAHIAZQAgAEMALgA7ACAATQBvAHUAbABpAG4AIABFAC4AOwAgAE0AdQByAGEAYwBoACAAVAAuADsAIABOAGEAawBhAHMAaABpAG0AYQAgAFMALgA7ACAAZABlACAATgBhAHUAcgBvAGkAcwAgAE0ALgA7ACAATgBkAGkAeQBhAHYAYQBsAGEAIABIAC4AOwAgAE4AaQBlAGQAZQByAHcAYQBuAGcAZQByACAARgAuADsAIABOAGkAZQBtAGkAZQBjACAASgAuADsAIABPAGEAawBlAHMAIABMAC4AOwAgAE8AJwBCAHIAaQBlAG4AIABQAC4AOwAgAE8AZABhAGsAYQAgAEgALgA7ACAATwBoAG0AIABTAC4AOwAgAE8AcwB0AHIAbwB3AHMAawBpACAATQAuADsAIABPAHkAYQAgAEkALgA7ACAAUABhAG4AdABlAHIAIABNAC4AOwAgAFAAYQByAHMAbwBuAHMAIABSAC4ARAAuADsAIABQAGUAcgBlAG4AbgBlAHMAIABDAC4AOwAgAFAAZQB0AHIAdQBjAGMAaQAgAFAALgAtAE8ALgA7ACAAUABlAHkAYQB1AGQAIABCAC4AOwAgAFAAaQBlAGwAIABRAC4AOwAgAFAAaQB0AGEAIABTAC4AOwAgAFAAbwBpAHIAZQBhAHUAIABWAC4AOwAgAFAAcgBpAHkAYQBuAGEAIABOAG8AZQBsACAAQQAuADsAIABQAHIAbwBrAGgAbwByAG8AdgAgAEQALgBBAC4AOwAgAFAAcgBvAGsAbwBwAGgAIABIAC4AOwAgAFAAdQBlAGgAbABoAG8AZgBlAHIAIABHAC4AOwAgAFAAdQBuAGMAaAAgAE0ALgA7ACAAUQB1AGkAcgByAGUAbgBiAGEAYwBoACAAQQAuADsAIABSAGEAYQBiACAAUwAuADsAIABSAGEAdQB0AGgAIABSAC4AOwAgAFIAZQBpAG0AZQByACAAQQAuADsAIABSAGUAaQBtAGUAcgAgAE8ALgA7ACAAUgBlAG4AYQB1AGQAIABNAC4AOwAgAFIAaQBlAGcAZQByACAARgAuADsAIABSAGkAbgBjAGgAaQB1AHMAbwAgAEwALgA7ACAAUgBvAG0AbwBsAGkAIABDAC4AOwAgAFIAbwB3AGUAbABsACAARwAuADsAIABSAHUAZABhAGsAIABCAC4AOwAgAFIAdQBpAHoALQBWAGUAbABhAHMAYwBvACAARQAuADsAIABTAGEAaABhAGsAaQBhAG4AIABWAC4AOwAgAFMAYQBpAHQAbwAgAFMALgA7ACAAUwBhAG4AYwBoAGUAegAgAEQALgBBAC4AOwAgAFMAYQBuAHQAYQBuAGcAZQBsAG8AIABBAC4AOwAgAFMAYQBzAGEAawBpACAATQAuADsAIABTAGMAaABsAGkAYwBrAGUAaQBzAGUAcgAgAFIALgA7ACAAUwBjAGgAdQBlAHMAcwBsAGUAcgAgAEYALgA7ACAAUwBjAGgAdQBsAHoAIABBAC4AOwAgAFMAYwBoAHUAdAB0AGUAIABIAC4AOwAgAFMAYwBoAHcAYQBuAGsAZQAgAFUALgA7ACAAUwBjAGgAdwBlAG0AbQBlAHIAIABTAC4AOwAgAFMAZQBnAGwAYQByAC0AQQByAHIAbwB5AG8AIABNAC4AOwAgAFMAZQBuAG4AaQBhAHAAcABhAG4AIABNAC4AOwAgAFMAZQB5AGYAZgBlAHIAdAAgAEEALgBTAC4AOwAgAFMAaABhAGYAaQAgAE4ALgA7ACAAUwBoAGkAbABvAG4AIABJAC4AOwAgAFMAaABpAG4AaQBuAGcAYQB5AGEAbQB3AGUAIABLAC4AOwAgAFMAaQBtAG8AbgBpACAAUgAuADsAIABTAGkAbgBoAGEAIABBAC4AOwAgAFMAbwBsACAASAAuADsAIABTAHAAZQBjAG8AdgBpAHUAcwAgAEEALgA7ACAAUwBwAGkAcgAtAEoAYQBjAG8AYgAgAE0ALgA7ACAAUwB0AGEAdwBhAHIAegAgAEwALgA7ACAAUwB0AGUAZQBuAGsAYQBtAHAAIABSAC4AOwAgAFMAdABlAGcAbQBhAG4AbgAgAEMALgA7ACAAUwB0AGUAcABwAGEAIABDAC4AOwAgAFQAYQBrAGEAaABhAHMAaABpACAAVAAuADsAIABUAGEAdgBlAHIAbgBlAHQAIABKAC4ALQBQAC4AOwAgAFQAYQB2AGUAcgBuAGkAZQByACAAVAAuADsAIABUAGEAeQBsAG8AcgAgAEEALgBNAC4AOwAgAFQAZQByAHIAaQBlAHIAIABSAC4AOwAgAFQAaQBiAGEAbABkAG8AIABMAC4AOwAgAFQAaQB6AGkAYQBuAGkAIABEAC4AOwAgAFQAbAB1AGMAegB5AGsAbwBuAHQAIABNAC4AOwAgAFQAcgBpAGMAaABhAHIAZAAgAEMALgA7ACAAVABzAGkAcgBvAHUAIABNAC4AOwAgAFQAcwB1AGoAaQAgAE4ALgA7ACAAVAB1AGYAZgBzACAAUgAuADsAIABVAGMAaABpAHkAYQBtAGEAIABZAC4AOwAgAHYAYQBuACAAZABlAHIAIABXAGEAbAB0ACAARAAuAEoALgA7ACAAdgBhAG4AIABFAGwAZABpAGsAIABDAC4AOwAgAHYAYQBuACAAUgBlAG4AcwBiAHUAcgBnACAAQwAuADsAIAB2AGEAbgAgAFMAbwBlAGwAZQBuACAAQgAuADsAIABWAGEAcwBpAGwAZQBpAGEAZABpAHMAIABHAC4AOwAgAFYAZQBoACAASgAuADsAIABWAGUAbgB0AGUAcgAgAEMALgA7ACAAVgBpAG4AYwBlAG4AdAAgAFAALgA7ACAAVgBpAG4AawAgAEoALgA7ACAAVgBvAGkAcwBpAG4AIABGAC4AOwAgAFYAbwBlAGwAawAgAEgALgBKAC4AOwAgAFYAdQBpAGwAbABhAHUAbQBlACAAVAAuADsAIABXAGEAZABpAGEAcwBpAG4AZwBoACAAWgAuADsAIABXAGEAZwBuAGUAcgAgAFMALgBKAC4AOwAgAFcAYQBnAG4AZQByACAAUgAuAE0ALgA7ACAAVwBoAGkAdABlACAAUgAuADsAIABXAGkAZQByAHoAYwBoAG8AbABzAGsAYQAgAEEALgA7ACAAWQBhAG4AZwAgAFIALgA7ACAAWQBvAG4AZQBkAGEAIABIAC4AOwAgAFoAYQBiAG8AcgBvAHYAIABEAC4AOwAgAFoAYQBjAGgAYQByAGkAYQBzACAATQAuADsAIABaAGEAbgBpAG4AIABSAC4AOwAgAFoAZAB6AGkAYQByAHMAawBpACAAQQAuAEEALgA7ACAAWgBlAGMAaAAgAEEALgA7ACAAWgBlAGYAaQAgAEYALgA7ACAAWgBpAGUAZwBsAGUAcgAgAEEALgA7ACAAWgBvAHIAbgAgAEoALgA7ACAAWgB5AHcAdQBjAGsAYQAgAE4ALgAAABMyMDE5LTAxLTE1VDA5OjExOjQxAAAAEzIwMjItMTEtMDRUMDA6MDA6MDAAAAA2aHR0cHM6Ly9jZHMudW5pc3RyYS5mci92aXppZXItb3JnL2xpY2VuY2VzX3Zpemllci5odG1sAAAAB2NhdGFsb2cAAAAHYmliY29kZQAAABMAMgAwADEAOQBBACYAQQAuAC4ALgA2ADIAMQBBAC4AMQAxADYASH/AAAAAAAAPcmFkaW8jZ2FtbWEtcmF5AAABe2h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQStBLzYyMS9BMTE2L2xpc3Q/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BK0EvNjIxL0ExMTYvYm94Zml0cz86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQStBLzYyMS9BMTE2Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9BK0EvNjIxL0ExMTYAAACQaXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAeXZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAABFc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAABA0NvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQStBLzYyMS9BMTE2L2xpc3QgKExpc3Qgb2YgZml0cyBmaWxlcyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0ErQS82MjEvQTExNi9ib3hmaXRzIChTcGVjdHJhbCBmaXQgaW5mb3JtYXRpb24gZm9yIGFsbCBib3hlcyAoYW5hbHlzaXMgQSwgdGFiLiA1IGluIHBhcGVyKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAgZG9pOjEwLjI2MDkzL2Nkcy92aXppZXIuMzYyMTAxMTYAAAAfaXZvOi8vY2RzLnZpemllci9qL2ErYS82MjYvYTEwNAAAABF2czpjYXRhbG9nc2VydmljZQAAAA5KL0ErQS82MjYvQTEwNAAAABkATABPAFQAQQBBAFMAIABwAHUAbABzAGEAcgAgAGQAaQBzAGMAbwB2AGUAcgBpAGUAcwAAAAhyZXNlYXJjaAAABtcAVwBlACAAcAByAGUAcwBlAG4AdAAgAGEAbgAgAG8AdgBlAHIAdgBpAGUAdwAgAG8AZgAgAHQAaABlACAATABPAEYAQQBSACAAVABpAGUAZAAtAEEAcgByAGEAeQAgAEEAbABsAC0AUwBrAHkAIABTAHUAcgB2AGUAeQAgACgATABPAFQAQQBBAFMAKQAgAGYAbwByACAAcgBhAGQAaQBvACAAcAB1AGwAcwBhAHIAcwAgAGEAbgBkACAAZgBhAHMAdAAgAHQAcgBhAG4AcwBpAGUAbgB0AHMALgAgAFQAaABlACAAcwB1AHIAdgBlAHkAIAB1AHMAZQBzACAAdABoAGUAIABoAGkAZwBoAC0AYgBhAG4AZAAgAGEAbgB0AGUAbgBuAGEAcwAgAG8AZgAgAHQAaABlACAATABPAEYAQQBSACAAUwB1AHAAZQByAHQAZQByAHAALAAgAHQAaABlACAAZABlAG4AcwBlACAAaQBuAG4AZQByACAAcABhAHIAdAAgAG8AZgAgAHQAaABlACAATABPAEYAQQBSACAAYwBvAHIAZQAsACAAdABvACAAcwB1AHIAdgBlAHkAIAB0AGgAZQAgAG4AbwByAHQAaABlAHIAbgAgAHMAawB5ACAAKAB7AGQAZQBsAHQAYQB9AD4AMAB7AGQAZQBnAH0AKQAgAGEAdAAgAGEAIABjAGUAbgB0AHIAYQBsACAAbwBiAHMAZQByAHYAaQBuAGcAIABmAHIAZQBxAHUAZQBuAGMAeQAgAG8AZgAgADEAMwA1AE0ASAB6AC4AIABBACAAdABvAHQAYQBsACAAbwBmACAAMgAxADkAIAB0AGkAZQBkAC0AYQByAHIAYQB5ACAAYgBlAGEAbQBzACAAKABjAG8AaABlAHIAZQBuAHQAIABzAHUAbQBtAGEAdABpAG8AbgAgAG8AZgAgAHMAdABhAHQAaQBvAG4AIABzAGkAZwBuAGEAbABzACwAIABjAG8AdgBlAHIAaQBuAGcAIAAxADIAIABzAHEAdQBhAHIAZQAgAGQAZQBnAHIAZQBlAHMAKQAsACAAYQBzACAAdwBlAGwAbAAgAGEAcwAgAHQAaAByAGUAZQAgAGkAbgBjAG8AaABlAHIAZQBuAHQAIABiAGUAYQBtAHMAIAAoAGMAbwB2AGUAcgBpAG4AZwAgADYANwAgAHMAcQB1AGEAcgBlACAAZABlAGcAcgBlAGUAcwApACAAYQByAGUAIABmAG8AcgBtAGUAZAAgAGkAbgAgAGUAYQBjAGgAIABzAHUAcgB2AGUAeQAgAHAAbwBpAG4AdABpAG4AZwAuACAARgBvAHIAIABlAGEAYwBoACAAbwBmACAAdABoAGUAIAAyADIAMgAgAGIAZQBhAG0AcwAsACAAdABvAHQAYQBsACAAaQBuAHQAZQBuAHMAaQB0AHkAIABpAHMAIAByAGUAYwBvAHIAZABlAGQAIABhAHQAIAA0ADkAMQAuADUAMgAgAHsAbQB1AH0AcwAgAHQAaQBtAGUAIAByAGUAcwBvAGwAdQB0AGkAbwBuAC4AIABFAGEAYwBoACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuACAAaQBuAHQAZQBnAHIAYQB0AGUAcwAgAGYAbwByACAAMQBoAHIAIABhAG4AZAAgAGMAbwB2AGUAcgBzACAAMgA1ADkAMgAgAGMAaABhAG4AbgBlAGwAcwAgAGYAcgBvAG0AIAAxADEAOQAgAHQAbwAgADEANQAxAE0ASAB6AC4AIABUAGgAaQBzACAAaQBuAHMAdAByAHUAbQBlAG4AdABhAGwAIABzAGUAdAB1AHAAIABhAGwAbABvAHcAcwAgAEwATwBUAEEAQQBTACAAdABvACAAcgBlAGEAYwBoACAAYQAgAGQAZQB0AGUAYwB0AGkAbwBuACAAdABoAHIAZQBzAGgAbwBsAGQAIABvAGYAIAAxAC0ANQBtAEoAeQAgAGYAbwByACAAcABlAHIAaQBvAGQAaQBjACAAZQBtAGkAcwBzAGkAbwBuAC4AIABUAGgAdQBzACAAZgBhAHIALAAgAHQAaABlACAATABPAFQAQQBBAFMAIABzAHUAcgB2AGUAeQAgAGgAYQBzACAAcgBlAHMAdQBsAHQAZQBkACAAaQBuACAAdABoAGUAIABkAGkAcwBjAG8AdgBlAHIAeQAgAG8AZgAgADcAMwAgAHIAYQBkAGkAbwAgAHAAdQBsAHMAYQByAHMALgAgAEEAbQBvAG4AZwAgAHQAaABlAHMAZQAgAGEAcgBlACAAdAB3AG8AIABtAGkAbABkAGwAeQAgAHIAZQBjAHkAYwBsAGUAZAAgAGIAaQBuAGEAcgB5ACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkACAAcAB1AGwAcwBhAHIAcwAgACgAUAA9ADEAMwAgAGEAbgBkACAAMwAzAG0AcwApACwAIABhAHMAIAB3AGUAbABsACAAYQBzACAAdABoAGUAIABzAGwAbwB3AGUAcwB0AC0AcwBwAGkAbgBuAGkAbgBnACAAcgBhAGQAaQBvACAAcAB1AGwAcwBhAHIAIABjAHUAcgByAGUAbgB0AGwAeQAgAGsAbgBvAHcAbgAgACgAUAA9ADIAMwAuADUAcwApAC4AIABUAGgAZQAgAHMAdQByAHYAZQB5ACAAaABhAHMAIAB0AGgAdQBzACAAZgBhAHIAIABkAGUAdABlAGMAdABlAGQAIAAzADEAMQAgAGsAbgBvAHcAbgAgAHAAdQBsAHMAYQByAHMALAAgAHcAaQB0AGgAIABzAHAAaQBuACAAcABlAHIAaQBvAGQAcwAgAHIAYQBuAGcAaQBuAGcAIABmAHIAbwBtACAANABtAHMAIAB0AG8AIAA1AC4AMABzACAAYQBuAGQAIABkAGkAcwBwAGUAcgBzAGkAbwBuACAAbQBlAGEAcwB1AHIAZQBzACAAZgByAG8AbQAgADMALgAwACAAdABvACAAMgAxADcAcABjAC8AYwBtAF4AMwBeAC4AIABLAG4AbwB3AG4AIABwAHUAbABzAGEAcgBzACAAYQByAGUAIABkAGUAdABlAGMAdABlAGQAIABhAHQAIABmAGwAdQB4ACAAZABlAG4AcwBpAHQAaQBlAHMAIABjAG8AbgBzAGkAcwB0AGUAbgB0ACAAdwBpAHQAaAAgAGwAaQB0AGUAcgBhAHQAdQByAGUAIAB2AGEAbAB1AGUAcwAuACAAVwBlACAAZgBpAG4AZAAgAHQAaABhAHQAIAB0AGgAZQAgAEwATwBUAEEAQQBTACAAcAB1AGwAcwBhAHIAIABkAGkAcwBjAG8AdgBlAHIAaQBlAHMAIABoAGEAdgBlACwAIABvAG4AIABhAHYAZQByAGEAZwBlACwAIABsAG8AbgBnAGUAcgAgAHMAcABpAG4AIABwAGUAcgBpAG8AZABzACAAdABoAGEAbgAgAHQAaABlACAAawBuAG8AdwBuACAAcAB1AGwAcwBhAHIAIABwAG8AcAB1AGwAYQB0AGkAbwBuAC4AIABUAGgAaQBzACAAbQBhAHkAIAByAGUAZgBsAGUAYwB0ACAAZABpAGYAZgBlAHIAZQBuAHQAIABzAGUAbABlAGMAdABpAG8AbgAgAGIAaQBhAHMAZQBzACAAYgBlAHQAdwBlAGUAbgAgAEwATwBUAEEAQQBTACAAYQBuAGQAIABwAHIAZQB2AGkAbwB1AHMAIABzAHUAcgB2AGUAeQBzACwAIAB0AGgAbwB1AGcAaAAgAGkAdAAgAGkAcwAgAGEAbABzAG8AIABwAG8AcwBzAGkAYgBsAGUAIAB0AGgAYQB0ACAAcwBsAG8AdwBlAHIALQBzAHAAaQBuAG4AaQBuAGcAIABwAHUAbABzAGEAcgBzACAAcAByAGUAZgBlAHIAZQBuAHQAaQBhAGwAbAB5ACAAaABhAHYAZQAgAHMAdABlAGUAcABlAHIAIAByAGEAZABpAG8AIABzAHAAZQBjAHQAcgBhAC4AIABMAE8AVABBAEEAUwAgAGkAcwAgAHQAaABlACAAZABlAGUAcABlAHMAdAAgAGEAbABsAC0AcwBrAHkAIABwAHUAbABzAGEAcgAgAHMAdQByAHYAZQB5ACAAdQBzAGkAbgBnACAAYQAgAGQAaQBnAGkAdABhAGwAIABhAHAAZQByAHQAdQByAGUAIABhAHIAcgBhAHkAOwAgAHcAZQAgAGQAaQBzAGMAdQBzAHMAIABzAG8AbQBlACAAbwBmACAAdABoAGUAIABsAGUAcwBzAG8AbgBzACAAbABlAGEAcgBuAGUAZAAgAHQAaABhAHQAIABjAGEAbgAgAGkAbgBmAG8AcgBtACAAdABoAGUAIABhAHAAcAByAG8AYQBjAGgAIABmAG8AcgAgAHMAaQBtAGkAbABhAHIAIABzAHUAcgB2AGUAeQBzACAAdQBzAGkAbgBnACAAZgB1AHQAdQByAGUAIAByAGEAZABpAG8AIAB0AGUAbABlAHMAYwBvAHAAZQBzACAAcwB1AGMAaAAgAGEAcwAgAHQAaABlACAAUwBxAHUAYQByAGUAIABLAGkAbABvAG0AZQB0AHIAZQAgAEEAcgByAGEAeQAuAAAAOGh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovQStBLzYyNi9BMTA0AAABMgBTAGEAbgBpAGQAYQBzACAAUwAuADsAIABDAG8AbwBwAGUAcgAgAFMALgA7ACAAQgBhAHMAcwBhACAAQwAuAEcALgA7ACAASABlAHMAcwBlAGwAcwAgAEoALgBXAC4AVAAuADsAIABLAG8AbgBkAHIAYQB0AGkAZQB2ACAAVgAuAEkALgA7ACAATQBpAGMAaABpAGwAbABpACAARAAuADsAIABTAHQAYQBwAHAAZQByAHMAIABCAC4AVwAuADsAIABUAGEAbgAgAEMALgBNAC4AOwAgAFYAYQBuACAATABlAGUAdQB3AGUAbgAgAEoALgA7ACAAQwBlAHIAcgBpAGcAbwBuAGUAIABMAC4AOwAgAEYAYQBsAGwAbwB3AHMAIABSAC4AQQAuADsAIABJAGEAYwBvAGIAZQBsAGwAaQAgAE0ALgA7ACAATwByAHIAdQAgAEUALgA7ACAAUABpAHoAegBvACAAUgAuAEYALgA7ACAAUwBoAHUAbABlAHYAcwBrAGkAIABBAC4AOwAgAFQAbwByAGkAYgBpAG8AIABNAC4AQwAuADsAIABUAGUAcgAgAFYAZQBlAG4AIABTAC4AOwAgAFoAdQBjAGMAYQAgAFAALgA7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dAAtAFMAZQBwAHQAZQBtAGIAZQByACAAdwBpAHQAaAAgAHQAaABlACAAcwBlAHYAZQBuAC0AYgBlAGEAbQAgAEEAcgBlAGMAaQBiAG8AIABMAC0AYgBhAG4AZAAgAEYAZQBlAGQAIABBAHIAcgBhAHkAIAAoAEEATABGAEEAKQAgAHIAZQBjAGUAaQB2AGUAcgAgAHMAeQBzAHQAZQBtACAAYQBuAGQAIAB0AGgAZQAgAFcAaQBkAGUAYgBhAG4AZAAgAEEAcgBlAGMAaQBiAG8AIABQAHUAbABzAGEAcgAgAFAAcgBvAGMAZQBzAHMAbwByACAAcwBwAGUAYwB0AHIAYQBsACAAcAByAG8AYwBlAHMAcwBvAHIAcwAuACAAVwBoAGkAbABlACAAdABoAGUAcwBlACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIAB3AGUAcgBlACAAZwBlAGEAcgBlAGQAIABtAGEAaQBuAGwAeQAgAGEAdAAgAHQAZQBzAHQAaQBuAGcAIABhAG4AZAAgAGQAZQBiAHUAZwBnAGkAbgBnACAAcwB1AHIAdgBlAHkAIABzAHQAcgBhAHQAZQBnAHkALAAgAGgAYQByAGQAdwBhAHIAZQAsACAAYQBuAGQAIABzAG8AZgB0AHcAYQByAGUALAAgAGEAcABwAHIAbwB4AGkAbQBhAHQAZQBsAHkAIAA0ADgAaAByACAAbwBmACAAdABlAGwAZQBzAGMAbwBwAGUAIAB0AGkAbQBlACAAeQBpAGUAbABkAGUAZAAgAHMAYwBpAGUAbgBjAGUALQBxAHUAYQBsAGkAdAB5ACAAZABhAHQAYQAuACAAVABvACAAdABlAHMAdAAgAG8AdQByACAAYQBiAGkAbABpAHQAeQAgAHQAbwAgAGQAaQBzAGMAcgBpAG0AaQBuAGEAdABlACAAYwBvAHMAbQBpAGMAIABzAGkAZwBuAGEAbABzACAAZgByAG8AbQAgAHIAYQBkAGkAbwAtAGYAcgBlAHEAdQBlAG4AYwB5ACAAaQBuAHQAZQByAGYAZQByAGUAbgBjAGUAIABhAG4AZAAgAG4AbwBpAHMAZQAsACAAMQA2ADUAIABjAGEAbgBkAGkAZABhAHQAZQBzACAAcgBhAG4AZwBpAG4AZwAgAGkAbgAgAHIAZQBsAGkAYQBiAGkAbABpAHQAeQAgAGwAaQBrAGUAbABpAGgAbwBvAGQAIAB3AGUAcgBlACAAcgBlAG8AYgBzAGUAcgB2AGUAZAAgAHcAaQB0AGgAIAB0AGgAZQAgAHMAaQBuAGcAbABlAC0AYgBlAGEAbQAgAEwALQBiAGEAbgBkACAAdwBpAGQAZQAgAHMAeQBzAHQAZQBtACAAYQB0ACAAQQByAGUAYwBpAGIAbwAgAGkAbgAgADIAMAAwADUAIABKAGEAbgB1AGEAcgB5AC0ARgBlAGIAcgB1AGEAcgB5AC4AIABPAGYAIAB0AGgAbwBzAGUALAAgADQAMQAlACAAdwBlAHIAZQAgAGMAbwBuAGYAaQByAG0AZQBkACAAYQBzACAAcgBlAGEAbAAuACAAVwBlACAAcAByAGUAcwBlAG4AdAAgAHQAaABlACAAcgBlAHMAdQBsAHQAcwAgAG8AZgAgAGIAbwB0AGgAIAB0AGgAZQAgAEEATABGAEEAIABhAG4AZAAgAHQAaABlACAAcwBpAG4AZwBsAGUALQBiAGUAYQBtACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIABmAG8AcgAgAHQAaABlACAAcwBhAG0AcABsAGUAIABvAGYAIAAxADYANgAgAGMAbwBuAGYAaQByAG0AZQBkACAASABJACAAcwBvAHUAcgBjAGUAcwAsACAAYQBzACAAdwBlAGwAbAAgAGEAcwAgAG8AdQByACAAYQBzAHMAZQBzAHMAbQBlAG4AdAAgAG8AZgAgAHQAaABlAGkAcgAgAG8AcAB0AGkAYwBhAGwAIABjAG8AdQBuAHQAZQByAHAAYQByAHQAcwAuAAAAN2h0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovQUovMTMwLzI2MTMAAAEWAEcAaQBvAHYAYQBuAGUAbABsAGkAIABSAC4AOwAgAEgAYQB5AG4AZQBzACAATQAuAFAALgA7ACAASwBlAG4AdAAgAEIALgBSAC4AOwAgAFAAZQByAGkAbABsAGEAdAAgAFAALgA7ACAAQwBhAHQAaQBuAGUAbABsAGEAIABCAC4AOwAgAEgAbwBmAGYAbQBhAG4AIABHAC4ATAAuADsAIABNAG8AbQBqAGkAYQBuACAARQAuADsAIABSAG8AcwBlAG4AYgBlAHIAZwAgAEoALgBMAC4AOwAgAFMAYQBpAG4AdABvAG4AZwBlACAAQQAuADsAIABTAHAAZQBrAGsAZQBuAHMAIABLAC4AOwAgAFMAdABpAGUAcgB3AGEAbAB0ACAAUwAuADsAIABCAHIAbwBzAGMAaAAgAE4ALgA7ACAATQBhAHMAdABlAHIAcwAgAEsALgBMAC4AOwAgAFMAcAByAGkAbgBnAG8AYgAgAEMALgBNAC4AOwAgAEsAYQByAGEAYwBoAGUAbgB0AHMAZQB2ACAASQAuAEQALgA7ACAASwBhAHIAYQBjAGgAZQBuAHQAcwBlAHYAYQAgAFYALgBFAC4AOwAgAEsAbwBvAHAAbQBhAG4AbgAgAFIALgBBAC4AOwAgAE0AdQBsAGwAZQByACAARQAuADsAIAB2AGEAbgAgAEQAcgBpAGUAbAAgAFcALgA7ACAAdgBhAG4AIABaAGUAZQAgAEwALgAAABMyMDA4LTAyLTA5VDE0OjM1OjMzAAAAEzIwMjItMTAtMThUMDA6MDA6MDAAAAA2aHR0cHM6Ly9jZHMudW5pc3RyYS5mci92aXppZXItb3JnL2xpY2VuY2VzX3Zpemllci5odG1sAAAAB2NhdGFsb2cAAAAHYmliY29kZQAAABMAMgAwADAANQBBAEoALgAuAC4ALgAxADMAMAAuADIANgAxADMAR3/AAAAAAAAFcmFkaW8AAAL7aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BSi8xMzAvMjYxMy90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BSi8xMzAvMjYxMy9kYXRhPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9BSi8xMzAvMjYxMzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovQUovMTMwLzI2MTM6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FKLzEzMC8yNjEzL3RhYmxlMz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FKLzEzMC8yNjEzL2RhdGE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL0FKLzEzMC8yNjEzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9BSi8xMzAvMjYxMwAAAS9pdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAEBdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAACZc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAACN0NvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQUovMTMwLzI2MTMvdGFibGUzICgqUGFyYW1ldGVycyBvZiBMQlcgKEwtYmFuZCB3aWRlKSBkZXRlY3Rpb25zKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQUovMTMwLzI2MTMvZGF0YSAoQUxGQSBkZXRlY3Rpb25zLCBkaXN0YW5jZXMsIEhJIG1hc3NlcywgYW5kIG9wdGljYWwgY291bnRlcnBhcnRzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQUovMTMwLzI2MTMvdGFibGUzICgqUGFyYW1ldGVycyBvZiBMQlcgKEwtYmFuZCB3aWRlKSBkZXRlY3Rpb25zKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQUovMTMwLzI2MTMvZGF0YSAoQUxGQSBkZXRlY3Rpb25zLCBkaXN0YW5jZXMsIEhJIG1hc3NlcywgYW5kIG9wdGljYWwgY291bnRlcnBhcnRzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAACBkb2k6MTAuMjYwOTMvY2RzL3Zpemllci41MTMwMjYxMwAAAB5pdm86Ly9jZHMudml6aWVyL2ovYXBqLzY0Mi84NjgAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAANSi9BcEovNjQyLzg2OAAAACEAUgBvAHQAYQB0AGkAbwBuACAAbQBlAGEAcwB1AHIAZQBzACAAZgBvAHIAIAAyADIAMwAgAHAAdQBsAHMAYQByAHMAAAAIcmVzZWFyY2gAAAEdAFQAaABlACAAbABhAHIAZwBlAC0AcwBjAGEAbABlACAAbQBhAGcAbgBlAHQAaQBjACAAZgBpAGUAbABkACAAbwBmACAAbwB1AHIAIABHAGEAbABhAHgAeQAgAGMAYQBuACAAYgBlACAAcAByAG8AYgBlAGQAIABpAG4AIAB0AGgAcgBlAGUAIABkAGkAbQBlAG4AcwBpAG8AbgBzACAAdQBzAGkAbgBnACAARgBhAHIAYQBkAGEAeQAgAHIAbwB0AGEAdABpAG8AbgAgAG8AZgAgAHAAdQBsAHMAYQByACAAcwBpAGcAbgBhAGwAcwAuACAAVwBlACAAcgBlAHAAbwByAHQAIABvAG4AIAB0AGgAZQAgAGQAZQB0AGUAcgBtAGkAbgBhAHQAaQBvAG4AIABvAGYAIAAyADIAMwAgAHIAbwB0AGEAdABpAG8AbgAgAG0AZQBhAHMAdQByAGUAcwAgAGYAcgBvAG0AIABwAG8AbABhAHIAaQB6AGEAdABpAG8AbgAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBzACAAbwBmACAAcgBlAGwAYQB0AGkAdgBlAGwAeQAgAGQAaQBzAHQAYQBuAHQAIABzAG8AdQB0AGgAZQByAG4AIABwAHUAbABzAGEAcgBzACAAbQBhAGQAZQAgAHUAcwBpAG4AZwAgAHQAaABlACAAUABhAHIAawBlAHMAIAByAGEAZABpAG8AIAB0AGUAbABlAHMAYwBvAHAAZQAuAAAAN2h0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovQXBKLzY0Mi84NjgAAAA/AEgAYQBuACAASgAuAEwALgA7ACAATQBhAG4AYwBoAGUAcwB0AGUAcgAgAFIALgBOAC4AOwAgAEwAeQBuAGUAIABBAC4ARwAuADsAIABRAGkAYQBvACAARwAuAEoALgA7ACAAVgBhAG4AIABTAHQAcgBhAHQAZQBuACAAVwAuAAAAEzIwMDgtMTItMTZUMTA6MjY6MzIAAAATMjAyMi0xMC0yNFQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMAA2AEEAcABKAC4ALgAuADYANAAyAC4ALgA4ADYAOABIf8AAAAAAAAVyYWRpbwAAASRodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi82NDIvODY4L3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQXBKLzY0Mi84Njg6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0FwSi82NDIvODY4AAAAZGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAABednM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAADNzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAACGQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BcEovNjQyLzg2OC90YWJsZTEgKFJvdGF0aW9uIG1lYXN1cmVzIGZvciAyMjMgcHVsc2Fycyk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAgZG9pOjEwLjI2MDkzL2Nkcy92aXppZXIuMTY0MjA4NjgAAAAdaXZvOi8vY2RzLnZpemllci9qL2Fwai83NjkvNjYAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAMSi9BcEovNzY5LzY2AAAAJwBUAGgAZQAgAEUATABNACAAcwB1AHIAdgBlAHkALgAgAFYALgAgAFcAaABpAHQAZQAgAGQAdwBhAHIAZgAgAGIAaQBuAGEAcgBpAGUAcwAAAAhyZXNlYXJjaAAAA4wAVwBlACAAcAByAGUAcwBlAG4AdAAgAHQAaABlACAAZABpAHMAYwBvAHYAZQByAHkAIABvAGYAIAAxADcAIABsAG8AdwAtAG0AYQBzAHMAIAB3AGgAaQB0AGUAIABkAHcAYQByAGYAcwAgACgAVwBEAHMAKQAgAGkAbgAgAHMAaABvAHIAdAAtAHAAZQByAGkAbwBkACAAKABQADwAPQAxACAAZABhAHkAKQAgAGIAaQBuAGEAcgBpAGUAcwAuACAATwB1AHIAIABzAGEAbQBwAGwAZQAgAGkAbgBjAGwAdQBkAGUAcwAgAGYAbwB1AHIAIABvAGIAagBlAGMAdABzACAAdwBpAHQAaAAgAHIAZQBtAGEAcgBrAGEAYgBsAGUAIABsAG8AZwBnAD0AfgA1ACAAcwB1AHIAZgBhAGMAZQAgAGcAcgBhAHYAaQB0AGkAZQBzACAAYQBuAGQAIABvAHIAYgBpAHQAYQBsACAAcwBvAGwAdQB0AGkAbwBuAHMAIAB0AGgAYQB0ACAAcgBlAHEAdQBpAHIAZQAgAHQAaABlAG0AIAB0AG8AIABiAGUAIABkAG8AdQBiAGwAZQAgAGQAZQBnAGUAbgBlAHIAYQB0AGUAIABiAGkAbgBhAHIAaQBlAHMALgAgAEEAbABsACAAbwBmACAAdABoAGUAIABsAG8AdwBlAHMAdAAgAHMAdQByAGYAYQBjAGUAIABnAHIAYQB2AGkAdAB5ACAAVwBEAHMAIABoAGEAdgBlACAAbQBlAHQAYQBsACAAbABpAG4AZQBzACAAaQBuACAAdABoAGUAaQByACAAcwBwAGUAYwB0AHIAYQAgAGkAbQBwAGwAeQBpAG4AZwAgAGwAbwBuAGcAIABnAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAcwBlAHQAdABsAGkAbgBnACAAdABpAG0AZQBzACAAbwByACAAbwBuAGcAbwBpAG4AZwAgAGEAYwBjAHIAZQB0AGkAbwBuAC4AIABOAG8AdABhAGIAbAB5ACwAIABzAGkAeAAgAG8AZgAgAHQAaABlACAAVwBEAHMAIABpAG4AIABvAHUAcgAgAHMAYQBtAHAAbABlACAAaABhAHYAZQAgAGIAaQBuAGEAcgB5ACAAbQBlAHIAZwBlAHIAIAB0AGkAbQBlAHMAIAA8ADEAMABHAHkAcgAuACAARgBvAHUAcgAgAGgAYQB2AGUAIAA+AH4AMAAuADkATQBfAHsAcwB1AG4AfQBfACAAYwBvAG0AcABhAG4AaQBvAG4AcwAuACAASQBmACAAdABoAGUAIABjAG8AbQBwAGEAbgBpAG8AbgBzACAAYQByAGUAIABtAGEAcwBzAGkAdgBlACAAVwBEAHMALAAgAHQAaABlAHMAZQAgAGYAbwB1AHIAIABiAGkAbgBhAHIAaQBlAHMAIAB3AGkAbABsACAAZQB2AG8AbAB2AGUAIABpAG4AdABvACAAcwB0AGEAYgBsAGUAIABtAGEAcwBzACAAdAByAGEAbgBzAGYAZQByACAAQQBNACAAQwBWAG4AIABzAHkAcwB0AGUAbQBzACAAYQBuAGQAIABwAG8AcwBzAGkAYgBsAHkAIABlAHgAcABsAG8AZABlACAAYQBzACAAdQBuAGQAZQByAGwAdQBtAGkAbgBvAHUAcwAgAHMAdQBwAGUAcgBuAG8AdgBhAGUALgAgAEkAZgAgAHQAaABlACAAYwBvAG0AcABhAG4AaQBvAG4AcwAgAGEAcgBlACAAbgBlAHUAdAByAG8AbgAgAHMAdABhAHIAcwAsACAAdABoAGUAbgAgAHQAaABlAHMAZQAgAG0AYQB5ACAAYgBlACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkACAAcAB1AGwAcwBhAHIAIABiAGkAbgBhAHIAaQBlAHMALgAgAFQAaABlAHMAZQAgAGQAaQBzAGMAbwB2AGUAcgBpAGUAcwAgAGkAbgBjAHIAZQBhAHMAZQAgAHQAaABlACAAbgB1AG0AYgBlAHIAIABvAGYAIABkAGUAdABhAGMAaABlAGQALAAgAGQAbwB1AGIAbABlACAAZABlAGcAZQBuAGUAcgBhAHQAZQAgAGIAaQBuAGEAcgBpAGUAcwAgAGkAbgAgAHQAaABlACAARQB4AHQAcgBlAG0AZQBsAHkAIABsAG8AdwAgAG0AYQBzAHMA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IABCAHUAdAAgAGEAcwAgAGgAYQBzACAAYgBlAGUAbgAgAHMAdQBnAGcAZQBzAHQAZQBkACAAYgB5ACAAbgB1AG0AZQByAG8AdQBzACAAaQBuAHYAZQBzAHQAaQBnAGEAdABvAHIAcwAsACAAYQBzAHQAcgBvAG0AZQB0AHIAeQAgAG8AZgBmAGUAcgBzACAAYQBuACAAYQBkAGQAaQB0AGkAbwBuAGEAbAAgAHAAYQB0AGgAIAB0AG8AIABnAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAdwBhAHYAZQAgAGQAZQB0AGUAYwB0AGkAbwBuAC4AIABHAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAdwBhAHYAZQBzACAAZABlAGYAbABlAGMAdAAgAGwAaQBnAGgAdAAgAHIAYQB5AHMAIABvAGYAIABlAHgAdAByAGEAZwBhAGwAYQBjAHQAaQBjACAAbwBiAGoAZQBjAHQAcwAsACAAYwByAGUAYQB0AGkAbgBnACAAYQBwAHAAYQByAGUAbgB0ACAAcAByAG8AcABlAHIAIABtAG8AdABpAG8AbgBzACAAaQBuACAAYQAgAHEAdQBhAGQAcgB1AHAAbwBsAGEAcgAgACgAYQBuAGQAIABoAGkAZwBoAGUAcgAtAG8AcgBkAGUAcgAgAG0AbwBkAGUAcwApACAAcABhAHQAdABlAHIAbgAuACAAQQBzAHQAcgBvAG0AZQB0AHIAeQAgAG8AZgAgAGUAeAB0AHIAYQBnAGEAbABhAGMAdABpAGMAIAByAGEAZABpAG8AIABzAG8AdQByAGMAZQBzACAAaQBzACAAcwBlAG4AcwBpAHQAaQB2AGUAIAB0AG8AIABnAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAdwBhAHYAZQBzACAAdwBpAHQAaAAgAGYAcgBlAHEAdQBlAG4AYwBpAGUAcwAgAGIAZQB0AHcAZQBlAG4AIAByAG8AdQBnAGgAbAB5ACAAMQAwAF4ALQAxADgAXgAgAGEAbgBkACAAMQAwAF4ALQA4AF4ASAB6ACAAKABIAF8AMABfACAAYQBuAGQAIAAxAC8AMwB5AHIAXgAtADEAXgApACwAIABvAHYAZQByAGwAYQBwAHAAaQBuAGcAIABhAG4AZAAgAGIAcgBpAGQAZwBpAG4AZwAgAHQAaABlACAAcAB1AGwAcwBhAHIAIAB0AGkAbQBpAG4AZwAgAGEAbgBkACAAQwBNAEIAIABwAG8AbABhAHIAaQB6AGEAdABpAG8AbgAgAHIAZQBnAGkAbQBlAHMALgAgAFcAZQAgAHAAcgBlAHMAZQBuAHQAIABhACAAbQBlAHQAaABvAGQAbwBsAG8AZwB5ACAAZgBvAHIAIABhAHMAdAByAG8AbQBlAHQAcgBpAGMAIABnAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAdwBhAHYAZQAgAGQAZQB0AGUAYwB0AGkAbwBuACAAaQBuACAAdABoAGUAIABwAHIAZQBzAGUAbgBjAGUAIABvAGYAIABsAGEAcgBnAGUAIABpAG4AdAByAGkAbgBzAGkAYwAgAHUAbgBjAG8AcgByAGUAbABhAHQAZQBkACAAcAByAG8AcABlAHIAIABtAG8AdABpAG8AbgBzACAAKABpAC4AZQAuACwAIAByAGEAZABpAG8AIABqAGUAdABzACkALgAgAFcAZQAgAG8AYgB0AGEAaQBuACAAOQA1ACUAIABjAG8AbgBmAGkAZABlAG4AYwBlACAAbABpAG0AaQB0AHMAIABvAG4AIAB0AGgAZQAgAHMAdABvAGMAaABhAHMAdABpAGMAIABnAHIAYQB2AGkAdABhAHQAaQBvAG4AYQBsACAAdwBhAHYAZQAgAGIAYQBjAGsAZwByAG8AdQBuAGQAIAB1AHMAaQBuAGcAIAA3ADEAMQAgAHIAYQBkAGkAbwAgAHMAbwB1AHIAYwBlAHMALAAgAHsATwBtAGUAZwBhAH0AXwBHAFcAXwA8ADAALgAwADAANgA0ACwAIABhAG4AZAAgAHUAcwBpAG4AZwAgADUAMAA4ACAAcgBhAGQAaQBvACAAcwBvAHUAcgBjAGUAcwAgAGMAbwBtAGIAaQBuAGUAZAAgAHcAaQB0AGgAIAB0AGgAZQAgAGYAaQByAHMAdAAgAEcAYQBpAGEAIABkAGEAdABhACAAcgBlAGwAZQBhAHMAZQA6ACAAewBPAG0AZQBnAGEAfQBfAEcAVwBfADwAMAAuADAAMQAxAC4AIABUAGgAZQBzAGUAIABsAGkAbQBpAHQAcwAgAHAAcgBvAGIAZQAgAGcAcgBhAHYAaQB0AGEAdABpAG8AbgBhAGwAIAB3AGEAdgBlACAAZgByAGUAcQB1AGUAbgBjAGkAZQBzACAANgB4ADEAMABeAC0AMQA4AF4ASAB6ADwAfgBmADwAfgAxAHgAMQAwAF4ALQA5AF4ASAB6AC4AIABVAHMAaQBuAGcAIABhACAAVwBJAFMARQAtAEcAYQBpAGEAIABjAGEAdABhAGwAbwBnACAAbwBmACAANQA2ADcANwAyADEAIABBAEcATgAsACAAdwBlACAAcAByAGUAZABpAGMAdAAgAGEAIABsAGkAbQBpAHQAIABlAHgAcABlAGMAdABlAGQAIABmAHIAbwBtACAARwBhAGkAYQAgAGEAbABvAG4AZQAgAG8AZgAgAHsATwBtAGUAZwBhAH0AXwBHAFcAXwA8ADAALgAwADAAMAA2ACwAIAB3AGgAaQBjAGgAIABpAHMAIABzAGkAZwBuAGkAZgBpAGMAYQBuAHQAbAB5ACAAaABpAGcAaABlAHIAIAB0AGgAYQBuACAAdwBhAHMAIABvAHIAaQBnAGkAbgBhAGwAbAB5ACAAZgBvAHIAZQBjAGEAcwB0AC4AIABJAG4AYwBpAGQAZQBuAHQAYQBsAGwAeQAsACAAdwBlACAAZABlAHQAZQBjAHQAIABhAG4AZAAgAHIAZQBwAG8AcgB0ACAAbwBuACAAMgAyACAAbgBlAHcAIABlAHgAYQBtAHAAbABlAHMAIABvAGYAIABvAHAAdABpAGMAYQBsACAAcwB1AHAAZQByAGwAdQBtAGkAbgBhAGwAIABtAG8AdABpAG8AbgAgAHcAaQB0AGgAIAByAGUAZABzAGgAaQBmAHQAcwAgADAALgAxADMALQAzAC4AOAA5AC4AAAA3aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BcEovODYxLzExMwAAACYARABhAHIAbABpAG4AZwAgAEoALgA7ACAAVAByAHUAZQBiAGUAbgBiAGEAYwBoACAAQQAuAEUALgA7ACAAUABhAGkAbgBlACAASgAuAAAAEzIwMTktMDgtMTJUMTI6MTc6NDAAAAATMjAyMi0xMS0wNFQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQA4AEEAcABKAC4ALgAuADgANgAxAC4ALgAxADEAMwBEf8AAAAAAAA1vcHRpY2FsI3JhZGlvAAABJGh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQXBKLzg2MS8xMTMvdGFibGU3Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9BcEovODYxLzExMzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovQXBKLzg2MS8xMTMAAABkaXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAF52czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAAM3N0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAIxDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0FwSi84NjEvMTEzL3RhYmxlNyAoVkxCQStHYWlhIGFzdHJvbWV0cnkgYW5kIHByb3BlciBtb3Rpb25zKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAACBkb2k6MTAuMjYwOTMvY2RzL3Zpemllci4xODYxMDExMwAAAB5pdm86Ly9jZHMudml6aWVyL2ovYXBqLzg2NC8xNTAAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAANSi9BcEovODY0LzE1MAAAAC4AQgBsAGEAYwBrACAAaABvAGwAZQBzACAAJgAgAG4AZQB1AHQAcgBvAG4AIABzAHQAYQByAHMAIABpAG4AIABuAGUAYQByAGIAeQAgAGcAYQBsAGEAeABpAGUAcwAAAAhyZXNlYXJjaAAABksATgBlAGEAcgBiAHkAIABnAGEAbABhAHgAeQAgAHMAdQByAHYAZQB5AHMAIABoAGEAdgBlACAAbABvAG4AZwAgAGMAbABhAHMAcwBpAGYAaQBlAGQAIABYAC0AcgBhAHkAIABiAGkAbgBhAHIAaQBlAHMAIAAoAFgAUgBCAHMAKQAgAGIAeQAgAHQAaABlACAAbQBhAHMAcwAgAGMAYQB0AGUAZwBvAHIAeQAgAG8AZgAgAHQAaABlAGkAcgAgAGQAbwBuAG8AcgAgAHMAdABhAHIAcwAgACgAaABpAGcAaAAtAG0AYQBzAHMAIABhAG4AZAAgAGwAbwB3AC0AbQBhAHMAcwApAC4AIABUAGgAZQAgAE4AdQBTAFQAQQBSACAAbwBiAHMAZQByAHYAYQB0AG8AcgB5ACwAIAB3AGgAaQBjAGgAIABwAHIAbwB2AGkAZABlAHMAIABpAG0AYQBnAGkAbgBnACAAZABhAHQAYQAgAGEAdAAgAEUAPgAxADAAawBlAFYALAAgAGgAYQBzACAAZQBuAGEAYgBsAGUAZAAgAHQAaABlACAAYwBsAGEAcwBzAGkAZgBpAGMAYQB0AGkAbwBuACAAbwBmACAAZQB4AHQAcgBhAGcAYQBsAGEAYwB0AGkAYwAgAFgAUgBCAHMAIABiAHkAIAB0AGgAZQBpAHIAIABjAG8AbQBwAGEAYwB0ACAAbwBiAGoAZQBjAHQAIAB0AHkAcABlADoAIABuAGUAdQB0AHIAbwBuACAAcwB0AGEAcgAgACgATgBTACkAIABvAHIAIABiAGwAYQBjAGsAIABoAG8AbABlACAAKABCAEgAKQAuACAAVwBlACAAYQBuAGEAbAB5AHoAZQBkACAATgB1AFMAVABBAFIALwBDAGgAYQBuAGQAcgBhAC8AWABNAE0ALQBOAGUAdwB0AG8AbgAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBzACAAZgByAG8AbQAgAGEAIABOAHUAUwBUAEEAUgAtAHMAZQBsAGUAYwB0AGUAZAAgAHMAYQBtAHAAbABlACAAbwBmACAAMQAyACAAZwBhAGwAYQB4AGkAZQBzACAAdwBpAHQAaABpAG4AIAA1ACAATQBwAGMAIABoAGEAdgBpAG4AZwAgAHMAdABlAGwAbABhAHIAIABtAGEAcwBzAGUAcwAgACgATQBfACoAXwApACAAMQAwAF4ANwAtADEAMQBeAE0AXwB7AHMAdQBuAH0AXwAgAGEAbgBkACAAcwB0AGEAcgAgAGYAbwByAG0AYQB0AGkAbwBuACAAcgBhAHQAZQBzACAAKABTAEYAUgBzACkAfgAwAC4AMAAxAC0AMQA1AE0AXwB7AHMAdQBuAH0AXwAvAHkAcgAuACAAVwBlACAAZABlAHQAZQBjAHQAZQBkACAAMQAyADgAIABOAHUAUwBUAEEAUgAgAHMAbwB1AHIAYwBlAHMAIAB0AG8AIABhACAAcwBlAG4AcwBpAHQAaQB2AGkAdAB5ACAAbwBmACAAfgAxADAAXgAzADgAXgBlAHIAZwAvAHMALgAgAFUAcwBpAG4AZwAgAE4AdQBTAFQAQQBSACAAYwBvAGwAbwByAC0AaQBuAHQAZQBuAHMAaQB0AHkAIABhAG4AZAAgAGMAbwBsAG8AcgAtAGMAbwBsAG8AcgAgAGQAaQBhAGcAcgBhAG0AcwAgAHcAZQAgAGMAbABhAHMAcwBpAGYAaQBlAGQAIAA0ADMAIABvAGYAIAB0AGgAZQBzAGUAIABzAG8AdQByAGMAZQBzACAAYQBzACAAYwBhAG4AZABpAGQAYQB0AGUAIABOAFMAcwAgAGEAbgBkACAANAA3ACAAYQBzACAAYwBhAG4AZABpAGQAYQB0AGUAIABCAEgAcwAuACAAVwBlACAAZgB1AHIAdABoAGUAcgAgAHMAdQBiAGQAaQB2AGkAZABlACAAQgBIAHMAIABiAHkAIABhAGMAYwByAGUAdABpAG8AbgAgAHMAdABhAHQAZQBzACAAKABzAG8AZgB0ACwAIABpAG4AdABlAHIAbQBlAGQAaQBhAHQAZQAsACAAYQBuAGQAIABoAGEAcgBkACkAIABhAG4AZAAgAE4AUwBzACAAYgB5ACAAdwBlAGEAawAgACgAWgAvAEEAdABvAGwAbAApACAAYQBuAGQAIABzAHQAcgBvAG4AZwAgACgAYQBjAGMAcgBlAHQAaQBuAGcAIABwAHUAbABzAGEAcgApACAAbQBhAGcAbgBlAHQAaQBjACAAZgBpAGUAbABkAC4AIABVAHMAaQBuAGcAIABlAGkAZwBoAHQAIABuAG8AcgBtAGEAbAAgACgATQBpAGwAawB5ACAAVwBhAHkALQB0AHkAcABlACkAIABnAGEAbABhAHgAaQBlAHMAIABpAG4AIAB0AGgAZQAgAHMAYQBtAHAAbABlACwAIAB3AGUAIABjAG8AbgBmAGkAcgBtACAAdABoAGUAIAByAGUAbABhAHQAaQBvAG4AIABiAGUAdAB3AGUAZQBuACAAdABoAGUAIABTAEYAUgAgAGEAbgBkACAAZwBhAGwAYQB4AHkAIABYAC0AcgBhAHkAIABwAG8AaQBuAHQAIABzAG8AdQByAGMAZQAgAGwAdQBtAGkAbgBvAHMAaQB0AHkAIABpAG4AIAB0AGgAZQAgADQALQAyADUAIABhAG4AZAAgADEAMgAtADIANQBrAGUAVgAgAGUAbgBlAHIAZwB5ACAAYgBhAG4AZABzAC4AIABXAGUAIABhAGwAcwBvACAAYwBvAG4AcwB0AHIAYQBpAG4AZQBkACAAZwBhAGwAYQB4AHkAIABYAC0AcgBhAHkAIABwAG8AaQBuAHQAIABzAG8AdQByAGMAZQAgAGwAdQBtAGkAbgBvAHMAaQB0AHkAIAB1AHMAaQBuAGcAIAB0AGgAZQAgAHIAZQBsAGEAdABpAG8AbgAgAEwAXwBYAF8APQB7AGEAbABwAGgAYQB9AC4ATQBfACoAXwArAHsAYgBlAHQAYQB9AFMARgBSACwAIABmAGkAbgBkAGkAbgBnACAAYQBnAHIAZQBlAG0AZQBuAHQAIAB3AGkAdABoACAAcAByAGUAdgBpAG8AdQBzACAAdwBvAHIAawAuACAAVABoAGUAIABYAC0AcgBhAHkAIABsAHUAbQBpAG4AbwBzAGkAdAB5ACAAZgB1AG4AYwB0AGkAbwBuACAAKABYAEwARgApACAAbwBmACAAYQBsAGwAIABzAG8AdQByAGMAZQBzACAAaQBuACAAdABoAGUAIAA0AC0AMgA1ACAAYQBuAGQAIAAxADIALQAyADUAawBlAFYAIABlAG4AZQByAGcAeQAgAGIAYQBuAGQAcwAgAG0AYQB0AGMAaABlAHMAIAB0AGgAZQAgAHsAYQBsAHAAaABhAH0APQAxAC4ANgAgAHMAbABvAHAAZQAgAGYAbwByACAAaABpAGcAaAAtAG0AYQBzAHMAIABYAFIAQgBzAC4AIABXAGUAIABmAGkAbgBkACAAdABoAGEAdAAgAE4AUwAgAFgATABGAHMAIABzAHUAZwBnAGUAcwB0ACAAYQAgAGQAZQBjAGwAaQBuAGUAIABiAGUAZwBpAG4AbgBpAG4AZwAgAGEAdAAgAHQAaABlACAARQBkAGQAaQBuAGcAdABvAG4AIABsAGkAbQBpAHQAIABmAG8AcgAgAGEAIAAxAC4ANABNAF8AewBzAHUAbgB9AF8AIABOAFMALAAgAHcAaABlAHIAZQBhAHMAIAB0AGgAZQAgAEIASAAgAGYAcgBhAGMAdABpAG8AbgAgAHMAaABvAHcAcwAgAGEAbgAgAGEAcABwAHIAbwB4AGkAbQBhAHQAZQAgAG0AbwBuAG8AdABvAG4AaQBjACAAaQBuAGMAcgBlAGEAcwBlACAAaQBuACAAdABoAGUAIAA0AC0AMgA1ACAAYQBuAGQAIAAxADIALQAyADUAawBlAFYAIABlAG4AZQByAGcAeQAgAGIAYQBuAGQAcwAuACAAVwBlACAAYwBhAGwAYwB1AGwAYQB0AGUAIAB0AGgAZQAgAG8AdgBlAHIAYQBsAGwAIAByAGEAdABpAG8AIABvAGYAIABCAEgAIAB0AG8AIABOAFMAIAB0AG8AIABiAGUAIAB+ADEAIABmAG8AcgAgADQALQAyADUAawBlAFYAIABhAG4AZAAgAH4AMgAgAGYAbwByACAAMQAyAC0AMgA1AGsAZQBWAC4AAAA3aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BcEovODY0LzE1MAAAAI8AVgB1AGwAaQBjACAATgAuADsAIABIAG8AcgBuAHMAYwBoAGUAbQBlAGkAZQByACAAQQAuAEUALgA7ACAAVwBpAGsAIABEAC4AUgAuADsAIABZAHUAawBpAHQAYQAgAE0ALgA7ACAAWgBlAHoAYQBzACAAQQAuADsAIABQAHQAYQBrACAAQQAuAEYALgA7ACAATABlAGgAbQBlAHIAIABCAC4ARAAuADsAIABBAG4AdABvAG4AaQBvAHUAIABWAC4AOwAgAE0AYQBjAGMAYQByAG8AbgBlACAAVAAuAEoALgA7ACAAVwBpAGwAbABpAGEAbQBzACAAQgAuAEYALgA7ACAARgBvAHIAbgBhAHMAaQBuAGkAIABGAC4ATQAuAAAAEzIwMjMtMTAtMDlUMDg6MDY6MDgAAAATMjAyMy0xMC0wOVQwODoxMTozNgAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQA4AEEAcABKAC4ALgAuADgANgA0AC4ALgAxADUAMABWf8AAAAAAAAV4LXJheQAAAcxodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi84NjQvMTUwL3RhYmxlMz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi84NjQvMTUwL3RhYmxlMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi84NjQvMTUwL3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQXBKLzg2NC8xNTA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0FwSi84NjQvMTUwAAAAvGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAlHZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAABXc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAABakNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQXBKLzg2NC8xNTAvdGFibGUzIChOdVNUQVIgcG9pbnQgc291cmNlIHByb3BlcnRpZXMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BcEovODY0LzE1MC90YWJsZTIgKE51U1RBUiwgQ2hhbmRyYSwgYW5kIFhNTS1OZXd0b24gb2JzZXJ2YXRpb25zIG9mIHRoZSBOdVNUQVIgZ2FsYXh5IHNhbXBsZSk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0FwSi84NjQvMTUwL3RhYmxlMSAoR2FsYXh5IHByb3BlcnRpZXMpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAAAAAAB1pdm86Ly9jZHMudml6aWVyL2ovYXBqLzkwNS83NgAAABF2czpjYXRhbG9nc2VydmljZQAAAAxKL0FwSi85MDUvNzYAAAAtADMAcgBkACAASABBAFcAQwAgAGMAYQB0AC4AIABvAGYAIABWAEgARQAgAGcAYQBtAG0AYQAtAHIAYQB5ACAAcwBvAHUAcgBjAGUAcwAgACgAMwBIAFcAQwApAAAACHJlc2VhcmNoAAAD3wBXAGUAIABwAHIAZQBzAGUAbgB0ACAAYQAgAG4AZQB3ACAAYwBhAHQAYQBsAG8AZwAgAG8AZgAgAFQAZQBWACAAZwBhAG0AbQBhAC0AcgBhAHkAIABzAG8AdQByAGMAZQBzACAAdQBzAGkAbgBnACAAMQA1ADIAMwAgAGQAYQB5AHMAIABvAGYAIABkAGEAdABhACAAZgByAG8AbQAgAHQAaABlACAASABpAGcAaAAtAEEAbAB0AGkAdAB1AGQAZQAgAFcAYQB0AGUAcgAgAEMAaABlAHIAZQBuAGsAbwB2ACAAKABIAEEAVwBDACkAIABPAGIAcwBlAHIAdgBhAHQAbwByAHkALgAgAFQAaABlACAAYwBhAHQAYQBsAG8AZwAgAHIAZQBwAHIAZQBzAGUAbgB0AHMAIAB0AGgAZQAgAG0AbwBzAHQAIABzAGUAbgBzAGkAdABpAHYAZQAgAHMAdQByAHYAZQB5ACAAbwBmACAAdABoAGUAIABuAG8AcgB0AGgAZQByAG4AIABnAGEAbQBtAGEALQByAGEAeQAgAHMAawB5ACAAYQB0ACAAZQBuAGUAcgBnAGkAZQBzACAAYQBiAG8AdgBlACAAcwBlAHYAZQByAGEAbAAgAFQAZQBWACwAIAB3AGkAdABoACAAdABoAHIAZQBlACAAdABpAG0AZQBzACAAdABoAGUAIABlAHgAcABvAHMAdQByAGUAIABjAG8AbQBwAGEAcgBlAGQAIAB0AG8AIAB0AGgAZQAgAHAAcgBlAHYAaQBvAHUAcwAgAEgAQQBXAEMAIABjAGEAdABhAGwAbwBnACwAIAAyAEgAVwBDAC4AIABXAGUAIAByAGUAcABvAHIAdAAgADYANQAgAHMAbwB1AHIAYwBlAHMAIABkAGUAdABlAGMAdABlAGQAIABhAHQAIAA+AD0ANQB7AHMAaQBnAG0AYQB9ACAAcwBpAGcAbgBpAGYAaQBjAGEAbgBjAGUALAAgAGEAbABvAG4AZwAgAHcAaQB0AGgAIAB0AGgAZQAgAHAAbwBzAGkAdABpAG8AbgBzACAAYQBuAGQAIABzAHAAZQBjAHQAcgBhAGwAIABmAGkAdABzACAAZgBvAHIAIABlAGEAYwBoACAAcwBvAHUAcgBjAGUALgAgAFQAaABlACAAYwBhAHQAYQBsAG8AZwAgAGMAbwBuAHQAYQBpAG4AcwAgAGUAaQBnAGgAdAAgAHMAbwB1AHIAYwBlAHMAIAB0AGgAYQB0ACAAaABhAHYAZQAgAG4AbwAgAGMAbwB1AG4AdABlAHIAcABhAHIAdAAgAGkAbgAgAHQAaABlACAAMgBIAFcAQwAgAGMAYQB0AGEAbABvAGcALAAgAGIAdQB0ACAAYQByAGUAIAB3AGkAdABoAGkAbgAgADEAewBkAGUAZwB9ACAAbwBmACAAcAByAGUAdgBpAG8AdQBzAGwAeQAgAGQAZQB0AGUAYwB0AGUAZAAgAFQAZQBWACAAZQBtAGkAdAB0AGUAcgBzACwAIABhAG4AZAAgADIAMAAgAHMAbwB1AHIAYwBlAHMAIAB0AGgAYQB0ACAAYQByAGUAIABtAG8AcgBlACAAdABoAGEAbgAgADEAewBkAGUAZwB9ACAAYQB3AGEAeQAgAGYAcgBvAG0AIABhAG4AeQAgAHAAcgBlAHYAaQBvAHUAcwBsAHkAIABkAGUAdABlAGMAdABlAGQAIABUAGUAVgAgAHMAbwB1AHIAYwBlAC4AIABPAGYAIAB0AGgAZQBzAGUAIAAyADAAIABuAGUAdwAgAHMAbwB1AHIAYwBlAHMALAAgADEANAAgAGgAYQB2AGUAIABhACAAcABvAHQAZQBuAHQAaQBhAGwAIABjAG8AdQBuAHQAZQByAHAAYQByAHQAIABpAG4AIAB0AGgAZQAgAGYAbwB1AHIAdABoACAARgBlAHIAbQBpACAATABhAHIAZwBlACAAQQByAGUAYQAgAFQAZQBsAGUAcwBjAG8AcABlACAAYwBhAHQAYQBsAG8AZwAgAG8AZgAgAGcAYQBtAG0AYQAtAHIAYQB5ACAAcwBvAHUAcgBjAGUAcwAuACAAVwBlACAAYQBsAHMAbwAgAGUAeABwAGwAbwByAGUAIABwAG8AdABlAG4AdABpAGEAbAAgAGEAcwBzAG8AYwBpAGEAdABpAG8AbgBzACAAbwBmACAAMwBIAFcAQwAgAHMAbwB1AHIAYwBlAHMAIAB3AGkAdABoACAAcAB1AGwAcwBhAHIAcwAgAGkAbgAgAHQAaABlACAAQQB1AHMAdAByAGEAbABpAGEAIABUAGUAbABlAHMAYwBvAHAAZQAgAE4AYQB0AGkAbwBuAGEAbAAgAEYAYQBjAGkAbABpAHQAeQAgACgAQQBUAE4ARgApACAAcAB1AGwAcwBhAHIAIABjAGEAdABhAGwAbwBnACAAYQBuAGQAIABzAHUAcABlAHIAbgBvAHYAYQAgAHIAZQBtAG4AYQBuAHQAcwAgAGkAbgAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAcwB1AHAAZQByAG4AbwB2AGEAIAByAGUAbQBuAGEAbgB0ACAAYwBhAHQAYQBsAG8AZwAuAAAANmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovQXBKLzkwNS83NgAABgkAQQBsAGIAZQByAHQAIABBAC4AOwAgAEEAbABmAGEAcgBvACAAUgAuADsAIABBAGwAdgBhAHIAZQB6ACAAQwAuADsAIABBAG4AZwBlAGwAZQBzACAAQwBhAG0AYQBjAGgAbwAgAEoALgBSAC4AOwAgAEEAcgB0AGUAYQBnAGEALQBWAGUAbABhAHoAcQB1AGUAegAgAEoALgBDAC4AOwAgAEEAcgB1AG4AYgBhAGIAdQAgAEsALgBQAC4AOwAgAEEAdgBpAGwAYQAgAFIAbwBqAGEAcwAgAEQALgA7ACAAQQB5AGEAbABhACAAUwBvAGwAYQByAGUAcwAgAEgALgBBAC4AOwAgAEIAYQBnAGgAbQBhAG4AeQBhAG4AIABWAC4AOwAgAEIAZQBsAG0AbwBuAHQALQBNAG8AcgBlAG4AbwAgAEUALgA7ACAAQgBlAG4AWgB2AGkAIABTAC4AWQAuADsAIABCAHIAaQBzAGIAbwBpAHMAIABDAC4AOwAgAEMAYQBiAGEAbABsAGUAcgBvAC0ATQBvAHIAYQAgAEsALgBTAC4AOwAgAEMAYQBwAGkAcwB0AHIAYQBuACAAVAAuADsAIABDAGEAcgByAGEAbQBpAG4AYQBuAGEAIABBAC4AOwAgAEMAYQBzAGEAbgBvAHYAYQAgAFMALgA7ACAAQwBvAHQAdABpACAAVQAuADsAIABDAG8AdQB0AGkAbgBvACAAZABlACAATABlAG8AbgAgAFMALgA7ACAARABlACAAbABhACAARgB1AGUAbgB0AGUAIABFAC4AOwAgAEQAaQBhAHoAIABIAGUAcgBuAGEAbgBkAGUAegAgAFIALgA7ACAARABpAGEAegAtAEMAcgB1AHoAIABMAC4AOwAgAEQAaQBuAGcAdQBzACAAQgAuAEwALgA7ACAARAB1AFYAZQByAG4AbwBpAHMAIABNAC4AQQAuADsAIABEAHUAcgBvAGMAaABlAHIAIABNAC4AOwAgAEQAaQBhAHoALQBWAGUAbABlAHoAIABKAC4AQwAuADsAIABFAGwAbABzAHcAbwByAHQAaAAgAFIALgBXAC4AOwAgAEUAbgBnAGUAbAAgAEsALgA7ACAARQBzAHAAaQBuAG8AegBhACAAQwAuADsAIABGAGEAbgAgAEsALgBMAC4AOwAgAEYAYQBuAGcAIABLAC4AOwAgAEYAZQByAG4AYQBuAGQAZQB6ACAAQQBsAG8AbgBzAG8AIABNAC4AOwAgAEYAbABlAGkAcwBjAGgAaABhAGMAawAgAEgALgA7ACAARgByAGEAaQBqAGEAIABOAC4AOwAgAEcAYQBsAHYAYQBuAC0ARwBhAG0AZQB6ACAAQQAuADsAIABHAGEAcgBjAGkAYQAgAEQALgA7ACAARwBhAHIAYwBpAGEALQBHAG8AbgB6AGEAbABlAHoAIABKAC4AQQAuADsAIABHAGEAcgBmAGkAYQBzACAARgAuADsAIABHAGkAYQBjAGkAbgB0AGkAIABHAC4AOwAgAEcAbwBuAHoAYQBsAGUAegAgAE0ALgBNAC4AOwAgAEcAbwBvAGQAbQBhAG4AIABKAC4AQQAuADsAIABIAGEAcgBkAGkAbgBnACAASgAuAFAALgA7ACAASABlAHIAbgBhAG4AZABlAHoAIABTAC4AOwAgAEgAaQBuAHQAbwBuACAASgAuADsAIABIAG8AbgBhACAAQgAuADsAIABIAHUAYQBuAGcAIABEAC4AOwAgAEgAdQBlAHkAbwB0AGwALQBaAGEAaAB1AGEAbgB0AGkAdABsAGEAIABGAC4AOwAgAEgAdQBuAHQAZQBtAGUAeQBlAHIAIABQAC4AOwAgAEkAcgBpAGEAcgB0AGUAIABBAC4AOwAgAEoAYQByAGQAaQBuAC0AQgBsAGkAYwBxACAAQQAuADsAIABKAG8AcwBoAGkAIABWAC4AOwAgAEsAaQBlAGQAYQAgAEQALgA7ACAATABhAHIAYQAgAEEALgA7ACAATABlAGUAIABXAC4ASAAuADsAIABMAGUAbwBuACAAVgBhAHIAZwBhAHMAIABIAC4AOwAgAEwAaQBuAG4AZQBtAGEAbgBuACAASgAuAFQALgA7ACAATABvAG4AZwBpAG4AbwB0AHQAaQAgAEEALgBMAC4AOwAgAEwAdQBpAHMALQBSAGEAeQBhACAARwAuADsAIABMAHUAbgBkAGUAZQBuACAASgAuADsAIABMAG8AcABlAHoALQBDAG8AdABvACAAUgAuADsAIABNAGEAbABvAG4AZQAgAEsALgA7ACAATQBhAHIAYQBuAGQAbwBuACAAVgAuADsAIABNAGEAcgB0AGkAbgBlAHoAIABPAC4AOwAgAE0AYQByAHQAaQBuAGUAegAtAEMAYQBzAHQAZQBsAGwAYQBuAG8AcwAgAEkALgA7ACAATQBhAHIAdABpAG4AZQB6AC0AQwBhAHMAdAByAG8AIABKAC4AOwAgAE0AYQB0AHQAaABlAHcAcwAgAEoALgBBAC4AOwAgAE0AaQByAGEAbgBkAGEALQBSAG8AbQBhAGcAbgBvAGwAaQAgAFAALgA7ACAATQBvAHIAYQBsAGUAcwAtAFMAbwB0AG8AIABKAC4AQQAuADsAIABNAG8AcgBlAG4AbwAgAEUALgA7ACAATQBvAHMAdABhAGYAYQAgAE0ALgA7ACAATgBhAHkAZQByAGgAbwBkAGEAIABBAC4AOwAgAE4AZQBsAGwAZQBuACAATAAuADsAIABOAGUAdwBiAG8AbABkACAATQAuADsAIABOAGkAcwBhACAATQAuAFUALgA7ACAATgBvAHIAaQBlAGcAYQAtAFAAYQBwAGEAcQB1AGkAIABSAC4AOwAgAE8AbABpAHYAZQByAGEALQBOAGkAZQB0AG8AIABMAC4AOwAgAE8AbQBvAGQAZQBpACAATgAuADsAIABQAGUAaQBzAGsAZQByACAAQQAuADsAIABQAGUAcgBlAHoAIABBAHIAYQB1AGoAbwAgAFkALgA7ACAAUABlAHIAZQB6AC0AUABlAHIAZQB6ACAARQAuAEcALgA7ACAAUgBlAG4AIABaAC4AOwAgAFIAaABvACAAQwAuAEQALgA7ACAAUgBpAHYAaQBlAHIAZQAgAEMALgA7ACAAUgBvAHMAYQAtAEcAbwBuAHoAYQBsAGUAegAgAEQALgA7ACAAUgB1AGkAegAtAFYAZQBsAGEAcwBjAG8AIABFAC4AOwAgAFMAYQBsAGEAegBhAHIAIABIAC4AOwAgAFMAYQBsAGUAcwBhACAARwByAGUAdQBzACAARgAuAFMALgA7ACAAUwBhAG4AZABvAHYAYQBsACAAQQAuADsAIABTAGMAaABuAGUAaQBkAGUAcgAgAE0ALgA7ACAAUwBjAGgAbwBvAHIAbABlAG0AbQBlAHIAIABIAC4AOwAgAFMAZQByAG4AYQAgAEYALgA7ACAAUwBpAG4AbgBpAHMAIABHAC4AOwAgAFMAbQBpAHQAaAAgAEEALgBKAC4AOwAgAFMAcAByAGkAbgBnAGUAcgAgAFIALgBXAC4AOwAgAFMAdQByAGEAagBiAGEAbABpACAAUAAuADsAIABUAG8AbABsAGUAZgBzAG8AbgAgAEsALgA7ACAAVABvAHIAcgBlAHMAIABJAC4AOwAgAFQAbwByAHIAZQBzAC0ARQBzAGMAbwBiAGUAZABvACAAUgAuADsAIABVAGsAdwBhAHQAdABhACAAVAAuAE4ALgA7ACAAVQByAGUAbgBhAC0ATQBlAG4AYQAgAEYALgA7ACAAVwBlAGkAcwBnAGEAcgBiAGUAcgAgAFQALgA7ACAAVwBlAHIAbgBlAHIAIABGAC4AOwAgAFcAaQBsAGwAbwB4ACAARQAuADsAIABaAGUAcABlAGQAYQAgAEEALgA7ACAAWgBoAG8AdQAgAEgALgA7ACAAZABlACAATABlAG8AbgAgAEMALgA7ACAAQQBsAHYAYQByAGUAegAgAEoALgBEAC4AOwAgAFQAaABlACAASABBAFcAQwAgAEMAbwBsAGwAYQBiAG8AcgBhAHQAaQBvAG4AAAATMjAyMi0wOC0wNFQxMTo1NToxNAAAABMyMDIzLTA2LTA4VDExOjUzOjU2AAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADAAQQBwAEoALgAuAC4AOQAwADUALgAuAC4ANwA2AEF/wAAAAAAACWdhbW1hLXJheQAAAchodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi85MDUvNzYvdGFibGU0Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQXBKLzkwNS83Ni90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BcEovOTA1Lzc2L3NvdXJjZXM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL0FwSi85MDUvNzY6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0FwSi85MDUvNzYAAAC8aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAACUdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAAFdzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAHNQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BcEovOTA1Lzc2L3RhYmxlNCAoSEFXQyBzb3VyY2VzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgVGVWIGhhbG8gY2FuZGlkYXRlIHB1bHNhcnMgd2l0aGluIDFkZWcpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9BcEovOTA1Lzc2L3RhYmxlMyAoTmV3IEhBV0Mgc291cmNlcyB3aXRoIG5vIFRlViBjb3VudGVycGFydCk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0FwSi85MDUvNzYvc291cmNlcyAoU291cmNlIGxpc3QgYW5kIG5lYXJlc3QgVGVWQ2F0IHNvdXJjZXMgKFRhYmxlIDEpIGFuZCByYWRpdXMsIGJlc3QtZml0IHNwZWN0cnVtLCBhbmQgZW5lcmd5IHJhbmdlIChUYWJsZSAyKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAgZG9pOjEwLjI2MDkzL2Nkcy92aXppZXIuMTkwNTAwNzYAAAAeaXZvOi8vY2RzLnZpemllci9qL2Fwai85MTQvMTIxAAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAADUovQXBKLzkxNC8xMjEAAAAlAEwAaQBtAGkAdABzACAAbwBuACAAUwBNAEIASAAgAGIAaQBuAGEAcgBpAGUAcwAgAGYAcgBvAG0AIABOAEEATgBPAEcAcgBhAHYAAAAIcmVzZWFyY2gAAAajAFMAdQBwAGUAcgBtAGEAcwBzAGkAdgBlACAAYgBsAGEAYwBrACAAaABvAGwAZQAgAGIAaQBuAGEAcgBpAGUAcwAgACgAUwBNAEIASABCAHMAKQAgAHMAaABvAHUAbABkACAAZgBvAHIAbQAgAGYAcgBlAHEAdQBlAG4AdABsAHkAIABpAG4AIABnAGEAbABhAGMAdABpAGMAIABuAHUAYwBsAGUAaQAgAGEAcwAgAGEAIAByAGUAcwB1AGwAdAAgAG8AZgAgAGcAYQBsAGEAeAB5ACAAbQBlAHIAZwBlAHIAcwAuACAAQQB0ACAAcwB1AGIAcABhAHIAcwBlAGMAIABzAGUAcABhAHIAYQB0AGkAbwBuAHMALAAgAGIAaQBuAGEAcgBpAGUAcwAgAGIAZQBjAG8AbQBlACAAcwB0AHIAbwBuAGcAIABzAG8AdQByAGMAZQBzACAAbwBmACAAbABvAHcALQBmAHIAZQBxAHUAZQBuAGMAeQAgAGcAcgBhAHYAaQB0AGEAdABpAG8AbgBhAGwAIAB3AGEAdgBlAHMAIAAoAEcAVwBzACkALAAgAHQAYQByAGcAZQB0AGUAZAAgAGIAeQAgAFAAdQBsAHMAYQByACAAVABpAG0AaQBuAGcAIABBAHIAcgBhAHkAcwAuACAAVwBlACAAdQBzAGUAZAAgAHIAZQBjAGUAbgB0ACAAdQBwAHAAZQByACAAbABpAG0AaQB0AHMAIABvAG4AIABjAG8AbgB0AGkAbgB1AG8AdQBzACAARwBXAHMAIABmAHIAbwBtACAAdABoAGUAIABOAG8AcgB0AGgAIABBAG0AZQByAGkAYwBhAG4AIABOAGEAbgBvAGgAZQByAHQAegAgAE8AYgBzAGUAcgB2AGEAdABvAHIAeQAgAGYAbwByACAARwByAGEAdgBpAHQAYQB0AGkAbwBuAGEAbAAgAFcAYQB2AGUAcwAgACgATgBBAE4ATwBHAHIAYQB2ACkAIAAxADEAeQByACAAZABhAHQAYQAgAHMAZQB0ACAAdABvACAAcABsAGEAYwBlACAAYwBvAG4AcwB0AHIAYQBpAG4AdABzACAAbwBuACAAcAB1AHQAYQB0AGkAdgBlACAAUwBNAEIASABCAHMAIABpAG4AIABuAGUAYQByAGIAeQAgAG0AYQBzAHMAaQB2AGUAIABnAGEAbABhAHgAaQBlAHMALgAgAFcAZQAgAGMAbwBtAHAAaQBsAGUAZAAgAGEAIABjAG8AbQBwAHIAZQBoAGUAbgBzAGkAdgBlACAAYwBhAHQAYQBsAG8AZwAgAG8AZgAgAH4ANAA0ADAAMAAwACAAZwBhAGwAYQB4AGkAZQBzACAAaQBuACAAdABoAGUAIABsAG8AYwBhAGwAIAB1AG4AaQB2AGUAcgBzAGUAIAAoAHUAcAAgAHQAbwAgAHIAZQBkAHMAaABpAGYAdAAgAH4AMAAuADAANQApACAAYQBuAGQAIABwAG8AcAB1AGwAYQB0AGUAZAAgAHQAaABlAG0AIAB3AGkAdABoACAAaAB5AHAAbwB0AGgAZQB0AGkAYwBhAGwAIABiAGkAbgBhAHIAaQBlAHMALAAgAGEAcwBzAHUAbQBpAG4AZwAgAHQAaABhAHQAIAB0AGgAZQAgAHQAbwB0AGEAbAAgAG0AYQBzAHMAIABvAGYAIAB0AGgAZQAgAGIAaQBuAGEAcgB5ACAAaQBzACAAZQBxAHUAYQBsACAAdABvACAAdABoAGUAIABTAE0AQgBIACAAbQBhAHMAcwAgAGQAZQByAGkAdgBlAGQAIABmAHIAbwBtACAAZwBsAG8AYgBhAGwAIABzAGMAYQBsAGkAbgBnACAAcgBlAGwAYQB0AGkAbwBuAHMALgAgAEEAcwBzAHUAbQBpAG4AZwAgAGMAaQByAGMAdQBsAGEAcgAgAGUAcQB1AGEAbAAtAG0AYQBzAHMAIABiAGkAbgBhAHIAaQBlAHMAIABlAG0AaQB0AHQAaQBuAGcAIABhAHQAIABOAEEATgBPAEcAcgBhAHYAJwBzACAAbQBvAHMAdAAgAHMAZQBuAHMAaQB0AGkAdgBlACAAZgByAGUAcQB1AGUAbgBjAHkAIABvAGYAIAA4AG4ASAB6ACwAIAB3AGUAIABmAG8AdQBuAGQAIAB0AGgAYQB0ACAAMgAxADYAIABnAGEAbABhAHgAaQBlAHMAIABhAHIAZQAgAHcAaQB0AGgAaQBuACAATgBBAE4ATwBHAHIAYQB2ACcAcwAgAHMAZQBuAHMAaQB0AGkAdgBpAHQAeQAgAHYAbwBsAHUAbQBlAC4AIABXAGUAIAByAGEAbgBrAGUAZAAgAHQAaABlACAAcABvAHQAZQBuAHQAaQBhAGwAIABTAE0AQgBIAEIAcwAgAGIAYQBzAGUAZAAgAG8AbgAgAEcAVwAgAGQAZQB0AGUAYwB0AGEAYgBpAGwAaQB0AHkAIABiAHkAIABjAGEAbABjAHUAbABhAHQAaQBuAGcAIAB0AGgAZQAgAHQAbwB0AGEAbAAgAHMAaQBnAG4AYQBsAC0AdABvAC0AbgBvAGkAcwBlACAAcgBhAHQAaQBvACAAcwB1AGMAaAAgAGIAaQBuAGEAcgBpAGUAcwAgAHcAbwB1AGwAZAAgAGkAbgBkAHUAYwBlACAAdwBpAHQAaABpAG4AIAB0AGgAZQAgAE4AQQBOAE8ARwByAGEAdgAgAGEAcgByAGEAeQAuACAAVwBlACAAcABsAGEAYwBlAGQAIABjAG8AbgBzAHQAcgBhAGkAbgB0AHMAIABvAG4AIAB0AGgAZQAgAGMAaABpAHIAcAAgAG0AYQBzAHMAIABhAG4AZAAgAG0AYQBzAHMAIAByAGEAdABpAG8AIABvAGYAIAB0AGgAZQAgADIAMQA2ACAAaAB5AHAAbwB0AGgAZQB0AGkAYwBhAGwAIABiAGkAbgBhAHIAaQBlAHMALgAgAEYAbwByACAAMQA5ACAAZwBhAGwAYQB4AGkAZQBzACwAIABvAG4AbAB5ACAAdgBlAHIAeQAgAHUAbgBlAHEAdQBhAGwALQBtAGEAcwBzACAAYgBpAG4AYQByAGkAZQBzACAAYQByAGUAIABhAGwAbABvAHcAZQBkACwAIAB3AGkAdABoACAAdABoAGUAIABtAGEAcwBzACAAbwBmACAAdABoAGUAIABzAGUAYwBvAG4AZABhAHIAeQAgAGwAZQBzAHMAIAB0AGgAYQBuACAAMQAwACUAIAB0AGgAYQB0ACAAbwBmACAAdABoAGUAIABwAHIAaQBtAGEAcgB5ACwAIAByAG8AdQBnAGgAbAB5ACAAYwBvAG0AcABhAHIAYQBiAGwAZQAgAHQAbwAgAGMAbwBuAHMAdAByAGEAaQBuAHQAcwAgAG8AbgAgAGEAbgAgAFMATQBCAEgAQgAgAGkAbgAgAHQAaABlACAATQBpAGwAawB5ACAAVwBhAHkALgAgAEgAbwB3AGUAdgBlAHIALAAgAHcAZQAgAGQAZQBtAG8AbgBzAHQAcgBhAHQAZQBkACAAdABoAGEAdAAgAHQAaABlACAAKAB0AHkAcABpAGMAYQBsAGwAeQAgAGwAYQByAGcAZQApACAAdQBuAGMAZQByAHQAYQBpAG4AdABpAGUAcwAgAGkAbgAgAHQAaABlACAAbQBhAHMAcwAgAG0AZQBhAHMAdQByAGUAbQBlAG4AdABzACAAYwBhAG4AIAB3AGUAYQBrAGUAbgAgAHQAaABlACAAdQBwAHAAZQByACAAbABpAG0AaQB0AHMAIABvAG4AIAB0AGgAZQAgAGMAaABpAHIAcAAgAG0AYQBzAHMALgAgAEEAZABkAGkAdABpAG8AbgBhAGwAbAB5ACwAIAB3AGUAIAB3AGUAcgBlACAAYQBiAGwAZQAgAHQAbwAgAGUAeABjAGwAdQBkAGUAIABiAGkAbgBhAHIAaQBlAHMAIABkAGUAbABpAHYAZQByAGUAZAAgAGIAeQAgAG0AYQBqAG8AcgAgAG0AZQByAGcAZQByAHMAIAAoAG0AYQBzAHMAIAByAGEAdABpAG8AIABvAGYAIABhAHQAIABsAGUAYQBzAHQAIAAxAC8ANAApACAAZgBvAHIAIABzAGUAdgBlAHIAYQBsACAAbwBmACAAdABoAGUAcwBlACAAZwBhAGwAYQB4AGkAZQBzAC4AIABXAGUAIABhAGwAcwBvACAAZABlAHIAaQB2AGUAZAAgAHQAaABlACAAZgBpAHIAcwB0ACAAbABpAG0AaQB0ACAAbwBuACAAdABoAGUAIABkAGUAbgBzAGkAdAB5ACAAbwBmACAAYgBpAG4AYQByAGkAZQBzACAAZABlAGwAaQB2AGUAcgBlAGQAIABiAHkAIABtAGEAagBvAHIAIABtAGUAcgBnAGUAcgBzACAAcAB1AHIAZQBsAHkAIABiAGEAcwBlAGQAIABvAG4AIABHAFcAIABkAGEAdABhAC4AAAA3aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BcEovOTE0LzEyMQAAAvcAQQByAHoAbwB1AG0AYQBuAGkAYQBuACAAWgAuADsAIABCAGEAawBlAHIAIABQAC4AVAAuADsAIABCAHIAYQB6AGkAZQByACAAQQAuADsAIABCAHIAbwBvAGsAIABQAC4AUgAuADsAIABCAHUAcgBrAGUALQBTAHAAbwBsAGEAbwByACAAUwAuADsAIABCAGUAYwBzAHkAIABCAC4AOwAgAEMAaABhAHIAaQBzAGkAIABNAC4AOwAgAEMAaABhAHQAdABlAHIAagBlAGUAIABTAC4AOwAgAEMAbwByAGQAZQBzACAASgAuAE0ALgA7ACAAQwBvAHIAbgBpAHMAaAAgAE4ALgBKAC4AOwAgAEMAcgBhAHcAZgBvAHIAZAAgAEYALgA7ACAAQwByAG8AbQBhAHIAdABpAGUAIABIAC4AVAAuADsAIABEAGUAQwBlAHMAYQByACAATQAuAEUALgA7ACAARABlAG0AbwByAGUAcwB0ACAAUAAuAEIALgA7ACAARABvAGwAYwBoACAAVAAuADsAIABFAGwAbABpAG8AdAB0ACAAUgAuAEQALgA7ACAARQBsAGwAaQBzACAASgAuAEEALgA7ACAARgBlAHIAcgBhAHIAYQAgAEUALgBDAC4AOwAgAEYAbwBuAHMAZQBjAGEAIABFAC4AOwAgAEcAYQByAHYAZQByAC0ARABhAG4AaQBlAGwAcwAgAE4ALgA7ACAARwBlAG4AdABpAGwAZQAgAFAALgBBAC4AOwAgAEcAbwBvAGQAIABEAC4AQwAuADsAIABIAGEAegBiAG8AdQBuACAASgAuAFMALgA7ACAASQBzAGwAbwAgAEsALgA7ACAASgBlAG4AbgBpAG4AZwBzACAAUgAuAEoALgA7ACAASgBvAG4AZQBzACAATQAuAEwALgA7ACAASwBhAGkAcwBlAHIAIABBAC4AUgAuADsAIABLAGEAcABsAGEAbgAgAEQALgBMAC4AOwAgAEsAZQBsAGwAZQB5ACAATAAuAFoALgA7ACAASwBlAHkAIABKAC4AUwAuADsAIABMAGEAbQAgAE0ALgBUAC4AOwAgAEwAYQB6AGkAbwAgAFQALgBKAC4AVwAuADsAIABMAHUAbwAgAEoALgA7ACAATAB5AG4AYwBoACAAUgAuAFMALgA7ACAATQBhACAAQwAuAC0AUAAuADsAIABNAGEAZABpAHMAbwBuACAARAAuAFIALgA7ACAATQBjAEwAYQB1AGcAaABsAGkAbgAgAE0ALgBBAC4AOwAgAE0AaQBuAGcAYQByAGUAbABsAGkAIABDAC4ATQAuAEYALgA7ACAATgBnACAAQwAuADsAIABOAGkAYwBlACAARAAuAEoALgA7ACAAUABlAG4AbgB1AGMAYwBpACAAVAAuAFQALgA7ACAAUABvAGwAIABOAC4AUwAuADsAIABSAGEAbgBzAG8AbQAgAFMALgBNAC4AOwAgAFIAYQB5ACAAUAAuAFMALgA7ACAAUwBoAGEAcABpAHIAbwAtAEEAbABiAGUAcgB0ACAAQgAuAEoALgA7ACAAUwBpAGUAbQBlAG4AcwAgAFgALgA7ACAAUwBpAG0AbwBuACAASgAuADsAIABTAHAAaQBlAHcAYQBrACAAUgAuADsAIABTAHQAYQBpAHIAcwAgAEkALgBIAC4AOwAgAFMAdABpAG4AZQBiAHIAaQBuAGcAIABEAC4AUgAuADsAIABTAHQAbwB2AGEAbABsACAASwAuADsAIABTAHcAaQBnAGcAdQBtACAASgAuAEsALgA7ACAAVABhAHkAbABvAHIAIABTAC4AUgAuADsAIABWAGEAbABsAGkAcwBuAGUAcgBpACAATQAuADsAIABWAGkAZwBlAGwAYQBuAGQAIABTAC4ASgAuADsAIABXAGkAdAB0ACAAQwAuAEEALgA7ACAAVABoAGUAIABOAEEATgBPAEcAcgBhAHYAIABDAG8AbABsAGEAYgBvAHIAYQB0AGkAbwBuAC4AAAATMjAyMy0wMS0wOVQwOTozNjoyMAAAABMyMDIzLTAxLTE4VDA2OjQzOjE1AAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADEAQQBwAEoALgAuAC4AOQAxADQALgAuADEAMgAxAEF/wAAAAAAACGluZnJhcmVkAAACV2h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovQXBKLzkxNC8xMjEvdGFibGUyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9BcEovOTE0LzEyMTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovQXBKLzkxNC8xMjE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL0FwSi85MTQvMTIxL3RhYmxlMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovQXBKLzkxNC8xMjE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL0FwSi85MTQvMTIxAAAA12l2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAy3ZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAAdXN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAiNDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL0FwSi85MTQvMTIxL3RhYmxlMiAoMk1SUyBnYWxheHkgY2F0YWxvZyB3aXRoIGVzdGltYXRlcyBvZiB0aGUgc3VwZXJtYXNzaXZlIGJsYWNrIGhvbGUgKFNNQkgpIG1hc3MgYW5kIGRpc3RhbmNlLCBhbG9uZyB3aXRoIHRoZSBHVyBzdHJhaW4gdXBwZXIgbGltaXQgdG93YXJkcyB0aGUgZGlyZWN0aW9uIG9mIGVhY2ggZ2FsYXh5KTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQXBKLzkxNC8xMjEvdGFibGUyICgyTVJTIGdhbGF4eSBjYXRhbG9nIHdpdGggZXN0aW1hdGVzIG9mIHRoZSBzdXBlcm1hc3NpdmUgYmxhY2sgaG9sZSAoU01CSCkgbWFzcyBhbmQgZGlzdGFuY2UsIGFsb25nIHdpdGggdGhlIEdXIHN0cmFpbiB1cHBlciBsaW1pdCB0b3dhcmRzIHRoZSBkaXJlY3Rpb24gb2YgZWFjaCBnYWxheHkpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAIGRvaToxMC4yNjA5My9jZHMvdml6aWVyLjE5MTQwMTIxAAAAHml2bzovL2Nkcy52aXppZXIvai9hcGovOTE2LzEwMAAAABF2czpjYXRhbG9nc2VydmljZQAAAA1KL0FwSi85MTYvMTAwAAAAIwBHAGEAbABhAGMAdABpAGMAIABwAHUAbABzAGEAcgAgAHcAaQB0AGgAIABwAHIAbwBwAGUAcgAgAG0AbwB0AGkAbwBuAHMAAAAIcmVzZWFyY2gAAAX7AFcAZQAgAGUAeABwAGwAbwByAGUAIAB0AGgAZQAgAHAAbwBzAHMAaQBiAGkAbABpAHQAeQAgAG8AZgAgAGkAbgBmAGUAcgByAGkAbgBnACAAdABoAGUAIABwAHIAbwBwAGUAcgB0AGkAZQBzACAAbwBmACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABwAG8AcAB1AGwAYQB0AGkAbwBuACAAbwBmACAAbgBlAHUAdAByAG8AbgAgAHMAdABhAHIAcwAgAHQAaAByAG8AdQBnAGgAIABtAGEAYwBoAGkAbgBlACAAbABlAGEAcgBuAGkAbgBnAC4AIABJAG4AIABwAGEAcgB0AGkAYwB1AGwAYQByACwAIABpAG4AIAB0AGgAaQBzACAAcABhAHAAZQByACAAdwBlACAAZgBvAGMAdQBzACAAbwBuACAAdABoAGUAaQByACAAZAB5AG4AYQBtAGkAYwBhAGwAIABjAGgAYQByAGEAYwB0AGUAcgBpAHMAdABpAGMAcwAgAGEAbgBkACAAcwBoAG8AdwAgAHQAaABhAHQAIABhAG4AIABhAHIAdABpAGYAaQBjAGkAYQBsACAAbgBlAHUAcgBhAGwAIABuAGUAdAB3AG8AcgBrACAAaQBzACAAYQBiAGwAZQAgAHQAbwAgAGUAcwB0AGkAbQBhAHQAZQAgAHcAaQB0AGgAIABoAGkAZwBoACAAYQBjAGMAdQByAGEAYwB5ACAAdABoAGUAIABwAGEAcgBhAG0AZQB0AGUAcgBzACAAdABoAGEAdAAgAGMAbwBuAHQAcgBvAGwAIAB0AGgAZQAgAGMAdQByAHIAZQBuAHQAIABwAG8AcwBpAHQAaQBvAG4AcwAgAG8AZgAgAGEAIABtAG8AYwBrACAAcABvAHAAdQBsAGEAdABpAG8AbgAgAG8AZgAgAHAAdQBsAHMAYQByAHMALgAgAEYAbwByACAAdABoAGkAcwAgAHAAdQByAHAAbwBzAGUALAAgAHcAZQAgAGkAbQBwAGwAZQBtAGUAbgB0ACAAYQAgAHMAaQBtAHAAbABpAGYAaQBlAGQAIABwAG8AcAB1AGwAYQB0AGkAbwBuAC0AcwB5AG4AdABoAGUAcwBpAHMAIABmAHIAYQBtAGUAdwBvAHIAawAgACgAdwBoAGUAcgBlACAAcwBlAGwAZQBjAHQAaQBvAG4AIABiAGkAYQBzAGUAcwAgAGEAcgBlACAAbgBlAGcAbABlAGMAdABlAGQAIABhAHQAIAB0AGgAaQBzACAAcwB0AGEAZwBlACkAIABhAG4AZAAgAGMAbwBuAGMAZQBuAHQAcgBhAHQAZQAgAG8AbgAgAHQAaABlACAAbgBhAHQAYQBsACAAawBpAGMAawAtAHYAZQBsAG8AYwBpAHQAeQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAYQBuAGQAIAB0AGgAZQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAbwBmACAAYgBpAHIAdABoACAAZABpAHMAdABhAG4AYwBlAHMAIABmAHIAbwBtACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUALgAgAEIAeQAgAHYAYQByAHkAaQBuAGcAIAB0AGgAZQBzAGUAIABhAG4AZAAgAGUAdgBvAGwAdgBpAG4AZwAgAHQAaABlACAAcAB1AGwAcwBhAHIAIAB0AHIAYQBqAGUAYwB0AG8AcgBpAGUAcwAgAGkAbgAgAHQAaQBtAGUALAAgAHcAZQAgAGcAZQBuAGUAcgBhAHQAZQAgAGEAIABzAGUAcgBpAGUAcwAgAG8AZgAgAHMAaQBtAHUAbABhAHQAaQBvAG4AcwAgAHQAaABhAHQAIABhAHIAZQAgAHUAcwBlAGQAIAB0AG8AIAB0AHIAYQBpAG4AIABhAG4AZAAgAHYAYQBsAGkAZABhAHQAZQAgAGEAIABzAHUAaQB0AGEAYgBsAHkAIABzAHQAcgB1AGMAdAB1AHIAZQBkACAAYwBvAG4AdgBvAGwAdQB0AGkAbwBuAGEAbAAgAG4AZQB1AHIAYQBsACAAbgBlAHQAdwBvAHIAawAuACAAVwBlACAAZABlAG0AbwBuAHMAdAByAGEAdABlACAAdABoAGEAdAAgAG8AdQByACAAbgBlAHQAdwBvAHIAawAgAGkAcwAgAGEAYgBsAGUAIAB0AG8AIAByAGUAYwBvAHYAZQByACAAdABoAGUAIABwAGEAcgBhAG0AZQB0AGUAcgBzACAAZwBvAHYAZQByAG4AaQBuAGcAIAB0AGgAZQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAbwBmACAAawBpAGMAawAgAHYAZQBsAG8AYwBpAHQAeQAgAGEAbgBkACAARwBhAGwAYQBjAHQAaQBjACAAaABlAGkAZwBoAHQAIAB3AGkAdABoACAAYQAgAG0AZQBhAG4AIAByAGUAbABhAHQAaQB2AGUAIABlAHIAcgBvAHIAIABvAGYAIABhAGIAbwB1AHQAIAAxADAAXgAtADIAXgAuACAAVwBlACAAZABpAHMAYwB1AHMAcwAgAHQAaABlACAAbABpAG0AaQB0AGEAdABpAG8AbgBzACAAbwBmACAAbwB1AHIAIABpAGQAZQBhAGwAaQB6AGUAZAAgAGEAcABwAHIAbwBhAGMAaAAgAGEAbgBkACAAcwB0AHUAZAB5ACAAYQAgAHQAbwB5ACAAcAByAG8AYgBsAGUAbQAgAHQAbwAgAGkAbgB0AHIAbwBkAHUAYwBlACAAcwBlAGwAZQBjAHQAaQBvAG4AIABlAGYAZgBlAGMAdABzACAAaQBuACAAYQAgAHAAaABlAG4AbwBtAGUAbgBvAGwAbwBnAGkAYwBhAGwAIAB3AGEAeQAgAGIAeQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAaQBuAGcAIAB0AGgAZQAgAG8AYgBzAGUAcgB2AGUAZAAgAHAAcgBvAHAAZQByACAAbQBvAHQAaQBvAG4AcwAgAG8AZgAgADIAMQA2ACAAaQBzAG8AbABhAHQAZQBkACAAcAB1AGwAcwBhAHIAcwAuACAATwB1AHIAIABhAG4AYQBsAHkAcwBpAHMAIABoAGkAZwBoAGwAaQBnAGgAdABzACAAdABoAGEAdAAgAGIAeQAgAGkAbgBjAHIAZQBhAHMAaQBuAGcAIAB0AGgAZQAgAHMAYQBtAHAAbABlACAAbwBmACAAcAB1AGwAcwBhAHIAcwAgAHcAaQB0AGgAIABhAGMAYwB1AHIAYQB0AGUAIABwAHIAbwBwAGUAcgAtAG0AbwB0AGkAbwBuACAAbQBlAGEAcwB1AHIAZQBtAGUAbgB0AHMAIABiAHkAIABhACAAZgBhAGMAdABvAHIAIABvAGYAIAB+ADEAMAAsACAAbwBuAGUAIABvAGYAIAB0AGgAZQAgAGYAdQB0AHUAcgBlACAAYgByAGUAYQBrAHQAaAByAG8AdQBnAGgAcwAgAG8AZgAgAHQAaABlACAAUwBxAHUAYQByAGUAIABLAGkAbABvAG0AZQB0AHIAZQAgAEEAcgByAGEAeQAsACAAdwBlACAAbQBpAGcAaAB0ACAAcwB1AGMAYwBlAGUAZAAgAGkAbgAgAGMAbwBuAHMAdAByAGEAaQBuAGkAbgBnACAAdABoAGUAIABiAGkAcgB0AGgAIABzAHAAYQB0AGkAYQBsACAAYQBuAGQAIABrAGkAYwBrAC0AdgBlAGwAbwBjAGkAdAB5ACAAZABpAHMAdAByAGkAYgB1AHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAG4AZQB1AHQAcgBvAG4AIABzAHQAYQByAHMAIABpAG4AIAB0AGgAZQAgAE0AaQBsAGsAeQAgAFcAYQB5ACAAdwBpAHQAaAAgAGgAaQBnAGgAIABwAHIAZQBjAGkAcwBpAG8AbgAgAHQAaAByAG8AdQBnAGgAIABtAGEAYwBoAGkAbgBlACAAbABlAGEAcgBuAGkAbgBnAC4AAAA3aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9BcEovOTE2LzEwMAAAADkAUgBvAG4AYwBoAGkAIABNAC4AOwAgAEcAcgBhAGIAZQByACAAVgAuADsAIABHAGEAcgBjAGkAYQAtAEcAYQByAGMAaQBhACAAQQAuADsAIABSAGUAYQAgAE4ALgA7ACAAUABvAG4AcwAgAEoALgBBAC4AAAATMjAyMy0wMS0yNlQxNDozMTo0MwAAABMyMDIzLTAyLTE1VDA3OjQ2OjI3AAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADEAQQBwAEoALgAuAC4AOQAxADYALgAuADEAMAAwAFJ/wAAAAAAADW9wdGljYWwjcmFkaW8AAAEkaHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9BcEovOTE2LzEwMC90YWJsZTU/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL0FwSi85MTYvMTAwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9BcEovOTE2LzEwMAAAAGRpdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAXnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAAAzc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAtENvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovQXBKLzkxNi8xMDAvdGFibGU1IChVcC10by1kYXRlIGxpc3Qgb2YgNDE3IG5ldXRyb24gc3RhcnMgd2l0aCBtZWFzdXJlZCBwcm9wZXIgbW90aW9ucyBpbiBSQSBhbmQgREVDKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAACBkb2k6MTAuMjYwOTMvY2RzL3Zpemllci4xOTE2MDEwMAAAACFpdm86Ly9jZHMudml6aWVyL2ovbW5yYXMvMzU5LzE1MjQAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAQSi9NTlJBUy8zNTkvMTUyNAAAACsAMQAwACAAbgBlAHcAIABwAHUAbABzAGEAcgBzACAAaQBuACAAQQByAGUAYwBpAGIAbwAgAGQAcgBpAGYAdAAtAHMAYwBhAG4AIABzAHUAcgB2AGUAeQAAAAhyZXNlYXJjaAAAA8kAVwBlACAAcAByAGUAcwBlAG4AdAAgAHQAaABlACAAcgBlAHMAdQBsAHQAcwAgAG8AZgAgAGEAIAA0ADMAMAAtAE0ASAB6ACAAcwB1AHIAdgBlAHkAIABmAG8AcgAgAHAAdQBsAHMAYQByAHMAIABjAG8AbgBkAHUAYwB0AGUAZAAgAGQAdQByAGkAbgBnACAAdABoAGUAIAB1AHAAZwByAGEAZABlACAAdABvACAAdABoAGUAIAAzADAANQAtAG0AIABBAHIAZQBjAGkAYgBvACAAcgBhAGQAaQBvACAAdABlAGwAZQBzAGMAbwBwAGUALgAgAE8AdQByACAAcwB1AHIAdgBlAHkAIABjAG8AdgBlAHIAZQBkACAAYQAgAHQAbwB0AGEAbAAgAG8AZgAgADEAMQA0ADcAZABlAGcAXgAyAF4AIABvAGYAIABzAGsAeQAgAHUAcwBpAG4AZwAgAGEAIABkAHIAaQBmAHQALQBzAGMAYQBuACAAdABlAGMAaABuAGkAcQB1AGUALgAgAFcAZQAgAGQAZQB0AGUAYwB0AGUAZAAgADMAMwAgAHAAdQBsAHMAYQByAHMALAAgADEAMAAgAG8AZgAgAHcAaABpAGMAaAAgAHcAZQByAGUAIABuAG8AdAAgAGsAbgBvAHcAbgAgAHAAcgBpAG8AcgAgAHQAbwAgAHQAaABlACAAcwB1AHIAdgBlAHkAIABvAGIAcwBlAHIAdgBhAHQAaQBvAG4AcwAuACAAVABoAGUAIABoAGkAZwBoAGwAaQBnAGgAdAAgAG8AZgAgAHQAaABlACAAbgBlAHcAIABkAGkAcwBjAG8AdgBlAHIAaQBlAHMAIABpAHMAIABQAFMAUgAgAEoAMAA0ADAANwArADEANgAwADcALAAgAHcAaABpAGMAaAAgAGgAYQBzACAAYQAgAHMAcABpAG4AIABwAGUAcgBpAG8AZAAgAG8AZgAgADIANQAuADcAbQBzACwAIABhACAAYwBoAGEAcgBhAGMAdABlAHIAaQBzAHQAaQBjACAAYQBnAGUAIABvAGYAIAAxAC4ANQBHAHkAcgAgAGEAbgBkACAAaQBzACAAaQBuACAAYQAgADEALgA4AC0AeQByACAAbwByAGIAaQB0ACAAYQBiAG8AdQB0ACAAYQAgAGwAbwB3AC0AbQBhAHMAcwAgACgAPgAwAC4AMgBNACkAIABjAG8AbQBwAGEAbgBpAG8AbgAuACAAVABoAGUAIABsAG8AbgBnACAAbwByAGIAaQB0AGEAbAAgAHAAZQByAGkAbwBkACAAYQBuAGQAIABzAG0AYQBsAGwAIABlAGMAYwBlAG4AdAByAGkAYwBpAHQAeQAgACgAZQA9ADAALgAwADAAMAA5ACkAIABtAGEAawBlACAAdABoAGUAIABiAGkAbgBhAHIAeQAgAHMAeQBzAHQAZQBtACAAYQBuACAAaQBtAHAAbwByAHQAYQBuAHQAIABuAGUAdwAgAGEAZABkAGkAdABpAG8AbgAgAHQAbwAgAHQAaABlACAAZQBuAHMAZQBtAGIAbABlACAAbwBmACAAYgBpAG4AYQByAHkAIABwAHUAbABzAGEAcgBzACAAcwB1AGkAdABhAGIAbABlACAAdABvACAAdABlAHMAdAAgAGYAbwByACAAdgBpAG8AbABhAHQAaQBvAG4AcwAgAG8AZgAgAHQAaABlACAAcwB0AHIAbwBuAGcAIABlAHEAdQBpAHYAYQBsAGUAbgBjAGUAIABwAHIAaQBuAGMAaQBwAGwAZQAuACAAVwBlACAAYQBsAHMAbwAgAHIAZQBwAG8AcgB0ACAAbwBuACAAbwB1AHIAIABpAG4AaQB0AGkAYQBsAGwAeQAgAHUAbgBzAHUAYwBjAGUAcwBzAGYAdQBsACAAYQB0AHQAZQBtAHAAdABzACAAdABvACAAZABlAHQAZQBjAHQAIABvAHAAdABpAGMAYQBsAGwAeQAgAHQAaABlACAAYwBvAG0AcABhAG4AaQBvAG4AIAB0AG8AIABKADAANAAwADcAKwAxADYAMAA3ACwAIAB3AGgAaQBjAGgAIABpAG0AcABsAHkAIAB0AGgAYQB0ACAAaQB0AHMAIABhAGIAcwBvAGwAdQB0AGUAIAB2AGkAcwB1AGEAbAAgAG0AYQBnAG4AaQB0AHUAZABlACAAaQBzACAAPgAxADIALgAxAC4AIABJAGYALAAgAGEAcwAgAGUAeABwAGUAYwB0AGUAZAAgAG8AbgAgAGUAdgBvAGwAdQB0AGkAbwBuAGEAcgB5ACAAZwByAG8AdQBuAGQAcwAsACAAdABoAGUAIABjAG8AbQBwAGEAbgBpAG8AbgAgAGkAcwAgAGEAbgAgAEgAZQAgAHcAaABpAHQAZQAgAGQAdwBhAHIAZgAsACAAbwB1AHIAIABuAG8AbgAtAGQAZQB0AGUAYwB0AGkAbwBuACAAaQBtAHAAbABpAGUAcwAgAGEAIABjAG8AbwBsAGkAbgBnACAAYQBnAGUAIABvAGYAIABsAGUAYQBzAHQAIAAxAEcAeQByAC4AAAA6aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9NTlJBUy8zNTkvMTUyNAAAAJkATABvAHIAaQBtAGUAcgAgAEQALgBSAC4AOwAgAFgAaQBsAG8AdQByAGkAcwAgAEsALgBNAC4AOwAgAEYAcgB1AGMAaAB0AGUAcgAgAEEALgBTAC4AOwAgAFMAdABhAGkAcgBzACAASQAuAEgALgA7ACAAQwBhAG0AaQBsAG8AIABGAC4AOwAgAFYAYQB6AHEAdQBlAHoAIABBAC4ATQAuADsAIABFAGQAZQByACAASgAuAEEALgA7ACAATQBjAEwAYQB1AGcAaABsAGkAbgAgAE0ALgBBAC4AOwAgAFIAbwBiAGUAcgB0AHMAIABNAC4AUwAuAEUALgA7ACAASABlAHMAcwBlAGwAcwAgAEoALgBXAC4AVAAuADsAIAByAGEAbgBzAG8AbQAgAFMALgBNAC4AAAATMjAwNi0wNy0xMFQxMTo0NTozNgAAABMyMDIxLTEwLTIxVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAwADUATQBOAFIAQQBTAC4AMwA1ADkALgAxADUAMgA0AEx/wAAAAAAABXJhZGlvAAAB22h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvMzU5LzE1MjQvdGFibGUzPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvMzU5LzE1MjQvdGFibGU1Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvMzU5LzE1MjQvdGFibGUyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy8zNTkvMTUyNDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovTU5SQVMvMzU5LzE1MjQAAAC8aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAACUdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAAFdzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAG9Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy8zNTkvMTUyNC90YWJsZTMgKFBhcmFtZXRlcnMgZm9yIHRoZSBuaW5lIGlzb2xhdGVkIHB1bHNhcnMgZGVyaXZlZCBmcm9tIHRoZSB0ZW1wbyB0aW1pbmcgYW5hbHlzaXMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy8zNTkvMTUyNC90YWJsZTUgKE9ic2VydmVkIGFuZCBkZXJpdmVkIHBhcmFtZXRlcnMgZm9yIHRoZSAxMCBwdWxzYXJzIGRpc2NvdmVyZWQgaW4gdGhlIHN1cnZleSk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzM1OS8xNTI0L3RhYmxlMiAoU1RTY0kvTkFJQyBzdXJ2ZXkgZGV0ZWN0aW9uIHN0YXRpc3RpY3MuKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAAAAAAAhaXZvOi8vY2RzLnZpemllci9qL21ucmFzLzQyNy8xMDUyAAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAAEEovTU5SQVMvNDI3LzEwNTIAAAAhAEgAVABSAFUAIABzAHUAcgB2AGUAeQAuACAAVABpAG0AaQBuAGcAIABvAGYAIAA1ADQAIABwAHUAbABzAGEAcgBzAAAACHJlc2VhcmNoAAAEdQBXAGUAIABwAHIAZQBzAGUAbgB0ACAANwA1ACAAcAB1AGwAcwBhAHIAcwAgAGQAaQBzAGMAbwB2AGUAcgBlAGQAIABpAG4AIAB0AGgAZQAgAG0AaQBkAC0AbABhAHQAaQB0AHUAZABlACAAcABvAHIAdABpAG8AbgAgAG8AZgAgAHQAaABlACAASABpAGcAaAAgAFQAaQBtAGUAIABSAGUAcwBvAGwAdQB0AGkAbwBuACAAVQBuAGkAdgBlAHIAcwBlACAAcwB1AHIAdgBlAHkALAAgADUANAAgAG8AZgAgAHcAaABpAGMAaAAgAGgAYQB2AGUAIABmAHUAbABsACAAdABpAG0AaQBuAGcAIABzAG8AbAB1AHQAaQBvAG4AcwAuACAAQQBsAGwAIAB0AGgAZQAgAHAAdQBsAHMAYQByAHMAIABoAGEAdgBlACAAcwBwAGkAbgAgAHAAZQByAGkAbwBkAHMAIABnAHIAZQBhAHQAZQByACAAdABoAGEAbgAgADEAMAAwAG0AcwAsACAAYQBuAGQAIABuAG8AbgBlACAAbwBmACAAdABoAG8AcwBlACAAdwBpAHQAaAAgAHQAaQBtAGkAbgBnACAAcwBvAGwAdQB0AGkAbwBuAHMAIABpAHMAIABpAG4AIABiAGkAbgBhAHIAaQBlAHMALgAgAFQAdwBvACAAZABpAHMAcABsAGEAeQAgAHAAYQByAHQAaQBjAHUAbABhAHIAbAB5ACAAaQBuAHQAZQByAGUAcwB0AGkAbgBnACAAYgBlAGgAYQB2AGkAbwB1AHIAOwAgAFAAUwBSACAASgAxADAANQA0AC0ANQA5ADQANAAgAGkAcwAgAGYAbwB1AG4AZAAgAHQAbwAgAGIAZQAgAGEAbgAgAGkAbgB0AGUAcgBtAGkAdAB0AGUAbgB0ACAAcAB1AGwAcwBhAHIALAAgAGEAbgBkACAAUABTAFIAIABKADEAOAAwADkALQAwADEAMQA5ACAAaABhAHMAIABnAGwAaQB0AGMAaABlAGQAIAB0AHcAaQBjAGUAIABzAGkAbgBjAGUAIABpAHQAcwAgAGQAaQBzAGMAbwB2AGUAcgB5AC4AIABJAG4AIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAaABhAGwAZgAgAG8AZgAgAHQAaABlACAAcABhAHAAZQByACAAdwBlACAAZABpAHMAYwB1AHMAcwAgAHQAaABlACAAZABlAHYAZQBsAG8AcABtAGUAbgB0ACAAYQBuAGQAIABhAHAAcABsAGkAYwBhAHQAaQBvAG4AIABvAGYAIABhAG4AIABhAHIAdABpAGYAaQBjAGkAYQBsACAAbgBlAHUAcgBhAGwAIABuAGUAdAB3AG8AcgBrACAAaQBuACAAdABoAGUAIABkAGEAdABhAC0AcAByAG8AYwBlAHMAcwBpAG4AZwAgAHAAaQBwAGUAbABpAG4AZQAgAGYAbwByACAAdABoAGUAIABzAHUAcgB2AGUAeQAuACAAVwBlACAAZABpAHMAYwB1AHMAcwAgAHQAaABlACAAdABlAHMAdABzACAAdABoAGEAdAAgAHcAZQByAGUAIAB1AHMAZQBkACAAdABvACAAZwBlAG4AZQByAGEAdABlACAAcwBjAG8AcgBlAHMAIABhAG4AZAAgAGYAaQBuAGQAIAB0AGgAYQB0ACAAbwB1AHIAIABuAGUAdQByAGEAbAAgAG4AZQB0AHcAbwByAGsAIAB3AGEAcwAgAGEAYgBsAGUAIAB0AG8AIAByAGUAagBlAGMAdAAgAG8AdgBlAHIAIAA5ADkAcABlAHIAIABjAGUAbgB0ACAAbwBmACAAdABoAGUAIABjAGEAbgBkAGkAZABhAHQAZQBzACAAcAByAG8AZAB1AGMAZQBkACAAaQBuACAAdABoAGUAIABkAGEAdABhACAAcAByAG8AYwBlAHMAcwBpAG4AZwAsACAAYQBuAGQAIABhAGIAbABlACAAdABvACAAYgBsAGkAbgBkAGwAeQAgAGQAZQB0AGUAYwB0ACAAOAA1AHAAZQByACAAYwBlAG4AdAAgAG8AZgAgAHAAdQBsAHMAYQByAHMALgAgAFcAZQAgAHMAdQBnAGcAZQBzAHQAIAB0AGgAYQB0ACAAaQBtAHAAcgBvAHYAZQBtAGUAbgB0AHMAIAB0AG8AIAB0AGgAZQAgAGEAYwBjAHUAcgBhAGMAeQAgAHMAaABvAHUAbABkACAAYgBlACAAcABvAHMAcwBpAGIAbABlACAAaQBmACAAZgB1AHIAdABoAGUAcgAgAGMAYQByAGUAIABpAHMAIAB0AGEAawBlAG4AIAB3AGgAZQBuACAAdAByAGEAaQBuAGkAbgBnACAAYQBuACAAYQByAHQAaQBmAGkAYwBpAGEAbAAgAG4AZQB1AHIAYQBsACAAbgBlAHQAdwBvAHIAawA7ACAAZgBvAHIAIABlAHgAYQBtAHAAbABlACwAIABlAG4AcwB1AHIAaQBuAGcAIAB0AGgAYQB0ACAAYQAgAHIAZQBwAHIAZQBzAGUAbgB0AGEAdABpAHYAZQAgAHMAYQBtAHAAbABlACAAbwBmACAAdABoAGUAIABwAHUAbABzAGEAcgAgAHAAbwBwAHUAbABhAHQAaQBvAG4AIABpAHMAIAB1AHMAZQBkACAAZAB1AHIAaQBuAGcAIAB0AGgAZQAgAHQAcgBhAGkAbgBpAG4AZwAgAHAAcgBvAGMAZQBzAHMALAAgAG8AcgAgAHQAaABlACAAdQBzAGUAIABvAGYAIABkAGkAZgBmAGUAcgBlAG4AdAAgAGEAcgB0AGkAZgBpAGMAaQBhAGwAIABuAGUAdQByAGEAbAAgAG4AZQB0AHcAbwByAGsAcwAgAGYAbwByACAAdABoAGUAIABkAGUAdABlAGMAdABpAG8AbgAgAG8AZgAgAGQAaQBmAGYAZQByAGUAbgB0ACAAdAB5AHAAZQBzACAAbwBmACAAcAB1AGwAcwBhAHIAcwAuAAAAOmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNDI3LzEwNTIAAAELAEIAYQB0AGUAcwAgAFMALgBEAC4AOwAgAEIAYQBpAGwAZQBzACAATQAuADsAIABCAGEAcgBzAGQAZQBsAGwAIABCAC4AUgAuADsAIABCAGgAYQB0ACAATgAuAEQALgBSAC4AOwAgAEIAdQByAGcAYQB5ACAATQAuADsAIABCAHUAcgBrAGUALQBTAHAAbwBsAGEAbwByACAAUwAuADsAIABDAGgAYQBtAHAAaQBvAG4AIABEAC4ASgAuADsAIABDAG8AcwB0AGUAcgAgAFAALgA7ACAARAAnAEEAbQBpAGMAbwAgAE4ALgA7ACAASgBhAG0AZQBzAG8AbgAgAEEALgA7ACAASgBvAGgAbgBzAHQAbwBuACAAUwAuADsAIABLAGUAaQB0AGgAIABNAC4ASgAuADsAIABLAHIAYQBtAGUAcgAgAE0ALgA7ACAATABlAHYAaQBuACAATAAuADsAIABMAHkAbgBlACAAQQAuADsAIABNAGkAbABpAGEAIABTAC4AOwAgAE4AZwAgAEMALgA7ACAATgBpAGUAdABuAGUAcgAgAEMALgA7ACAAUABvAHMAcwBlAG4AdABpACAAQQAuADsAIABTAHQAYQBwAHAAZQByAHMAIABCAC4AOwAgAFQAaABvAHIAbgB0AG8AbgAgAEQALgA7ACAAVgBhAG4AIABTAHQAcgBhAHQAZQBuACAAVwAuAAAAEzIwMTgtMTItMTJUMTI6NTM6MDUAAAATMjAyMi0xMS0wNFQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQAyAE0ATgBSAEEAUwAuADQAMgA3AC4AMQAwADUAMgBCf8AAAAAAAAVyYWRpbwAAAYZodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQyNy8xMDUyL3RhYmxlMzQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80MjcvMTA1Mi90YWJsZWExPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy80MjcvMTA1Mjo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovTU5SQVMvNDI3LzEwNTIAAACQaXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAeXZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAABFc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAABtkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDI3LzEwNTIvdGFibGUzNCAoT2JzZXJ2YWJsZSBwYXJhbWV0ZXJzIGZvciBlYWNoIG9mIHRoZSBwdWxzYXJzIHdpdGggYSBmdWxsIHRpbWluZyBzb2x1dGlvbiAodGFibGUgMykgYW5kIGRlcml2ZWQgcGFyYW1ldGVycyAodGFibGUgNCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80MjcvMTA1Mi90YWJsZWExIChQYXJhbWV0ZXJzIGFuZCBTL04gcmF0aW9zIGZvciBkZXRlY3Rpb25zIG9mIHByZXZpb3VzbHkta25vd24gcHVsc2FycyBieSB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZSBpbiB0aGUgbWlkLWxhdGl0dWRlIHBvcnRpb24gb2YgdGhlIEhUUlUgc3VydmV5KTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAAAAAAAhaXZvOi8vY2RzLnZpemllci9qL21ucmFzLzQzNi8zNTU3AAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAAEEovTU5SQVMvNDM2LzM1NTcAAAAsAEgAVABSAFUAIABzAHUAcgB2AGUAeQA6ACAAbABvAG4AZwAtAHAAZQByAGkAbwBkACAAcAB1AGwAcwBhAHIAcwAgAHAAbwBsAGEAcgBpAG0AZQB0AHIAeQAAAAhyZXNlYXJjaAAABKkAVwBlACAAcAByAGUAcwBlAG4AdAAgAGEAIABwAG8AbABhAHIAaQBtAGUAdAByAGkAYwAgAGEAbgBhAGwAeQBzAGkAcwAgAG8AZgAgADQAOQAgAGwAbwBuAGcALQBwAGUAcgBpAG8AZAAgAHAAdQBsAHMAYQByAHMAIABkAGkAcwBjAG8AdgBlAHIAZQBkACAAYQBzACAAcABhAHIAdAAgAG8AZgAgAHQAaABlACAASABpAGcAaAAgAFQAaQBtAGUAIABSAGUAcwBvAGwAdQB0AGkAbwBuACAAVQBuAGkAdgBlAHIAcwBlACAAKABIAFQAUgBVACkAIABzAG8AdQB0AGgAZQByAG4AIABzAHUAcgB2AGUAeQAuACAAVABoAGUAIABzAG8AdQByAGMAZQBzACAAZQB4AGgAaQBiAGkAdAAgAHQAaABlACAAdAB5AHAAaQBjAGEAbAAgAGMAaABhAHIAYQBjAHQAZQByAGkAcwB0AGkAYwBzACAAbwBmACAAJwBvAGwAZAAnACAAcAB1AGwAcwBhAHIAcwAsACAAdwBpAHQAaAAgAGwAbwB3ACAAZgByAGEAYwB0AGkAbwBuAGEAbAAgAGwAaQBuAGUAYQByACAAYQBuAGQAIABjAGkAcgBjAHUAbABhAHIAIABwAG8AbABhAHIAaQB6AGEAdABpAG8AbgAgAGEAbgBkACAAbgBhAHIAcgBvAHcALAAgAG0AdQBsAHQAaQAtAGMAbwBtAHAAbwBuAGUAbgB0ACAAcAByAG8AZgBpAGwAZQBzAC4AIABBAGwAdABoAG8AdQBnAGgAIAB0AGgAZQAgAHAAbwBzAGkAdABpAG8AbgAgAGEAbgBnAGwAZQAgAHMAdwBpAG4AZwBzACAAYQByAGUAIABnAGUAbgBlAHIAYQBsAGwAeQAgAGMAbwBtAHAAbABlAHgALAAgAGYAbwByACAAdAB3AG8AIABvAGYAIAB0AGgAZQAgAGEAbgBhAGwAeQBzAGUAZAAgAHAAdQBsAHMAYQByAHMAIAAoAEoAMQA2ADIAMgAtADMANwA1ADEAIABhAG4AZAAgAEoAMQA3ADEAMAAtADIANgAxADYAKQAgAHcAZQAgAG8AYgB0AGEAaQBuAGUAZAAgAGEAbgAgAGkAbgBkAGkAYwBhAHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAGcAZQBvAG0AZQB0AHIAeQAgAHYAaQBhACAAdABoAGUAIAByAG8AdABhAHQAaQBuAGcAIAB2AGUAYwB0AG8AcgAgAG0AbwBkAGUAbAAuACAAVwBlACAAdwBlAHIAZQAgAGEAYgBsAGUAIAB0AG8AIABkAGUAdABlAHIAbQBpAG4AZQAgAGEAIAB2AGEAbAB1AGUAIABvAGYAIAB0AGgAZQAgAHIAbwB0AGEAdABpAG8AbgAgAG0AZQBhAHMAdQByAGUAIAAoAFIATQApACAAZgBvAHIAIAAzADQAIABvAGYAIAB0AGgAZQAgAHMAbwB1AHIAYwBlAHMAIAB3AGgAaQBjAGgALAAgAHcAaABlAG4AIABjAG8AbQBiAGkAbgBlAGQAIAB3AGkAdABoACAAdABoAGUAaQByACAAZABpAHMAcABlAHIAcwBpAG8AbgAgAG0AZQBhAHMAdQByAGUAcwAgACgARABNACkALAAgAHkAaQBlAGwAZABzACAAYQBuACAAaQBuAHQAZQBnAHIAYQB0AGUAZAAgAG0AYQBnAG4AZQB0AGkAYwAgAGYAaQBlAGwAZAAgAHMAdAByAGUAbgBnAHQAaAAgAGEAbABvAG4AZwAgAHQAaABlACAAbABpAG4AZQAgAG8AZgAgAHMAaQBnAGgAdAAuACAAVwBpAHQAaAAgAHQAaABlACAAZABhAHQAYQAgAHAAcgBlAHMAZQBuAHQAZQBkACAAaABlAHIAZQAsACAAdABoAGUAIAB0AG8AdABhAGwAIABuAHUAbQBiAGUAcgAgAG8AZgAgAHYAYQBsAHUAZQBzACAAbwBmACAAUgBNACAAYQBzAHMAbwBjAGkAYQB0AGUAZAAgAHcAaQB0AGgAIABwAHUAbABzAGEAcgBzACAAZABpAHMAYwBvAHYAZQByAGUAZAAgAGQAdQByAGkAbgBnACAAdABoAGUAIABIAFQAUgBVACAAcwBvAHUAdABoAGUAcgBuACAAcwB1AHIAdgBlAHkAIABzAHUAbQBzACAAdABvACAANQAxAC4AIABUAGgAZQAgAFIATQBzACAAYQByAGUAIABuAG8AdAAgAGMAbwBuAHMAaQBzAHQAZQBuAHQAIAB3AGkAdABoACAAdABoAGUAIABoAHkAcABvAHQAaABlAHMAaQBzACAAbwBmACAAYQAgAGMAbwB1AG4AdABlAHIALQBjAGwAbwBjAGsAdwBpAHMAZQAgAGQAaQByAGUAYwB0AGkAbwBuACAAbwBmACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABtAGEAZwBuAGUAdABpAGMAIABmAGkAZQBsAGQAIAB3AGkAdABoAGkAbgAgAGEAbgAgAGEAbgBuAHUAbAB1AHMAIABpAG4AYwBsAHUAZABlAGQAIABiAGUAdAB3AGUAZQBuACAANAAgAGEAbgBkACAANgBrAHAAYwAgAGYAcgBvAG0AIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAEMAZQBuAHQAcgBlAC4AIABBACAAcABhAHIAdABpAGEAbAAgAGEAZwByAGUAZQBtAGUAbgB0ACAAdwBpAHQAaAAgAGEAIABjAG8AdQBuAHQAZQByAC0AYwBsAG8AYwBrAHcAaQBzAGUAIABzAGUAbgBzAGUAIABvAGYAIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAG0AYQBnAG4AZQB0AGkAYwAgAGYAaQBlAGwAZAAgAHcAaQB0AGgAaQBuACAAdABoAGUAIABzAHAAaQByAGEAbAAgAGEAcgBtAHMAIABpAHMALAAgAGgAbwB3AGUAdgBlAHIALAAgAGYAbwB1AG4AZAAgAGkAbgAgAHQAaABlACAAYQByAGUAYQAgAG8AZgAgAHQAaABlACAAQwBhAHIAaQBuAGEALQBTAGEAZwBpAHQAdABhAHIAaQB1AHMAIABhAHIAbQAuAAAAOmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNDM2LzM1NTcAAADnAFQAaQBiAHUAcgB6AGkAIABDAC4AOwAgAEoAbwBoAG4AcwB0AG8AbgAgAFMALgA7ACAAQgBhAGkAbABlAHMAIABNAC4AOwAgAEIAYQB0AGUAcwAgAFMALgBEAC4AOwAgAEIAaABhAHQAIABOAC4ARAAuAFIALgA7ACAAQgB1AHIAZwBhAHkAIABNAC4AOwAgAEIAdQByAGsAZQAtAFMAcABvAGwAYQBvAHIAIABTAC4AOwAgAEMAaABhAG0AcABpAG8AbgAgAEQALgA7ACAAQwBvAHMAdABlAHIAIABQAC4AOwAgAEQAJwBBAG0AaQBjAG8AIABOAC4AOwAgAEsAZQBpAHQAaAAgAE0ALgBKAC4AOwAgAEsAcgBhAG0AZQByACAATQAuADsAIABMAGUAdgBpAG4AIABMAC4AOwAgAE0AaQBsAGkAYQAgAFMALgA7ACAATgBnACAAQwAuADsAIABQAG8AcwBzAGUAbgB0AGkAIABBAC4AOwAgAFMAdABhAHAAcABlAHIAcwAgAEIALgBXAC4AOwAgAFQAaABvAHIAbgB0AG8AbgAgAEQALgA7ACAAdgBhAG4AIABTAHQAcgBhAHQAZQBuACAAVwAuAAAAEzIwMTctMTEtMjFUMDk6NDQ6MjkAAAATMjAyMS0xMC0yMVQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQAzAE0ATgBSAEEAUwAuADQAMwA2AC4AMwA1ADUANwBUf8AAAAAAAAVyYWRpbwAAAxdodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQzNi8zNTU3L3RhYmxlMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQzNi8zNTU3L3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNDM2LzM1NTc6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzQzNi8zNTU3Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80MzYvMzU1Ny90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80MzYvMzU1Ny90YWJsZTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQzNi8zNTU3Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80MzYvMzU1NwAAAS9pdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAEBdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAACZc3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAACEUNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDM2LzM1NTcvdGFibGUyIChQdWxzYXJzIGZvciB3aGljaCBubyBSTSBjYW4gYmUgZGV0ZXJtaW5lZCk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQzNi8zNTU3L3RhYmxlMSAoUHVsc2FycyBmb3Igd2hpY2ggUk0gY2FuIGJlIGRldGVybWluZWQpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80MzYvMzU1Ny90YWJsZTIgKFB1bHNhcnMgZm9yIHdoaWNoIG5vIFJNIGNhbiBiZSBkZXRlcm1pbmVkKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDM2LzM1NTcvdGFibGUxIChQdWxzYXJzIGZvciB3aGljaCBSTSBjYW4gYmUgZGV0ZXJtaW5lZCk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAIWl2bzovL2Nkcy52aXppZXIvai9tbnJhcy80NTgvMzM0MQAAABF2czpjYXRhbG9nc2VydmljZQAAABBKL01OUkFTLzQ1OC8zMzQxAAAALAA0ADIAIABtAGkAbABsAGkAcwBlAGMAbwBuAGQAIABwAHUAbABzAGEAcgBzACAAaABpAGcAaAAtAHAAcgBlAGMAaQBzAGkAbwBuACAAdABpAG0AaQBuAGcAAAAIcmVzZWFyY2gAAAZgAFcAZQAgAHIAZQBwAG8AcgB0ACAAbwBuACAAdABoAGUAIABoAGkAZwBoAC0AcAByAGUAYwBpAHMAaQBvAG4AIAB0AGkAbQBpAG4AZwAgAG8AZgAgADQAMgAgAHIAYQBkAGkAbwAgAG0AaQBsAGwAaQBzAGUAYwBvAG4AZAAgAHAAdQBsAHMAYQByAHMAIAAoAE0AUwBQAHMAKQAgAG8AYgBzAGUAcgB2AGUAZAAgAGIAeQAgAHQAaABlACAARQB1AHIAbwBwAGUAYQBuACAAUAB1AGwAcwBhAHIAIABUAGkAbQBpAG4AZwAgAEEAcgByAGEAeQAgACgARQBQAFQAQQApAC4AIABUAGgAaQBzACAARQBQAFQAQQAgAEQAYQB0AGEAIABSAGUAbABlAGEAcwBlACAAMQAuADAAIABlAHgAdABlAG4AZABzACAAdQBwACAAdABvACAAbQBpAGQALQAyADAAMQA0ACAAYQBuAGQAIABiAGEAcwBlAGwAaQBuAGUAcwAgAHIAYQBuAGcAZQAgAGYAcgBvAG0AIAA3AC0AMQA4AHkAcgAuACAASQB0ACAAZgBvAHIAbQBzACAAdABoAGUAIABiAGEAcwBpAHMAIABmAG8AcgAgAHQAaABlACAAcwB0AG8AYwBoAGEAcwB0AGkAYwAgAGcAcgBhAHYAaQB0AGEAdABpAG8AbgBhAGwALQB3AGEAdgBlACAAYgBhAGMAawBnAHIAbwB1AG4AZAAsACAAYQBuAGkAcwBvAHQAcgBvAHAAaQBjACAAYgBhAGMAawBnAHIAbwB1AG4AZAAsACAAYQBuAGQAIABjAG8AbgB0AGkAbgB1AG8AdQBzAC0AdwBhAHYAZQAgAGwAaQBtAGkAdABzACAAcgBlAGMAZQBuAHQAbAB5ACAAcAByAGUAcwBlAG4AdABlAGQAIABiAHkAIAB0AGgAZQAgAEUAUABUAEEAIABlAGwAcwBlAHcAaABlAHIAZQAuACAAVABoAGUAIABCAGEAeQBlAHMAaQBhAG4AIAB0AGkAbQBpAG4AZwAgAGEAbgBhAGwAeQBzAGkAcwAgAHAAZQByAGYAbwByAG0AZQBkACAAdwBpAHQAaAAgAFQARQBNAFAATwBOAEUAUwBUACAAeQBpAGUAbABkAHMAIAB0AGgAZQAgAGQAZQB0AGUAYwB0AGkAbwBuACAAbwBmACAAcwBlAHYAZQByAGEAbAAgAG4AZQB3ACAAcABhAHIAYQBtAGUAdABlAHIAcwA6ACAAcwBlAHYAZQBuACAAcABhAHIAYQBsAGwAYQB4AGUAcwAsACAAbgBpAG4AZQAgAHAAcgBvAHAAZQByACAAbQBvAHQAaQBvAG4AcwAgAGEAbgBkACwAIABpAG4AIAB0AGgAZQAgAGMAYQBzAGUAIABvAGYAIABzAGkAeAAgAGIAaQBuAGEAcgB5ACAAcAB1AGwAcwBhAHIAcwAsACAAYQBuACAAYQBwAHAAYQByAGUAbgB0ACAAYwBoAGEAbgBnAGUAIABvAGYAIAB0AGgAZQAgAHMAZQBtAGkAbQBhAGoAbwByACAAYQB4AGkAcwAuACAAVwBlACAAZgBpAG4AZAAgAHQAaABlACAATgBFADIAMAAwADEAIABHAGEAbABhAGMAdABpAGMAIABlAGwAZQBjAHQAcgBvAG4AIABkAGUAbgBzAGkAdAB5ACAAbQBvAGQAZQBsACAAdABvACAAYgBlACAAYQAgAGIAZQB0AHQAZQByACAAbQBhAHQAYwBoACAAdABvACAAbwB1AHIAIABwAGEAcgBhAGwAbABhAHgAIABkAGkAcwB0AGEAbgBjAGUAcwAgACgAYQBmAHQAZQByACAAYwBvAHIAcgBlAGMAdABpAG8AbgAgAGYAcgBvAG0AIAB0AGgAZQAgAEwAdQB0AHoALQBLAGUAbABrAGUAcgAgAGIAaQBhAHMAKQAgAHQAaABhAG4AIAB0AGgAZQAgAE0AMgAgAGEAbgBkACAATQAzACAAbQBvAGQAZQBsAHMAIABiAHkAIABTAGMAaABuAGkAdAB6AGUAbABlAHIALgAgAEgAbwB3AGUAdgBlAHIALAAgAHcAZQAgAG0AZQBhAHMAdQByAGUAIABhAG4AIABhAHYAZQByAGEAZwBlACAAdQBuAGMAZQByAHQAYQBpAG4AdAB5ACAAbwBmACAAOAAwACAAcABlAHIAIABjAGUAbgB0ACAAKABmAHIAYQBjAHQAaQBvAG4AYQBsACkAIABmAG8AcgAgAE4ARQAyADAAMAAxACwAIAB0AGgAcgBlAGUAIAB0AGkAbQBlAHMAIABsAGEAcgBnAGUAcgAgAHQAaABhAG4AIAB3AGgAYQB0ACAAaQBzACAAdAB5AHAAaQBjAGEAbABsAHkAIABhAHMAcwB1AG0AZQBkACAAaQBuACAAdABoAGUAIABsAGkAdABlAHIAYQB0AHUAcgBlAC4AIABXAGUAIAByAGUAdgBpAHMAaQB0ACAAdABoAGUAIAB0AHIAYQBuAHMAdgBlAHIAcwBlACAAdgBlAGwAbwBjAGkAdAB5ACAAZABpAHMAdAByAGkAYgB1AHQAaQBvAG4AIABmAG8AcgAgAGEAIABzAGUAdAAgAG8AZgAgADEAOQAgAGkAcwBvAGwAYQB0AGUAZAAgAGEAbgBkACAANQA3ACAAYgBpAG4AYQByAHkAIABNAFMAUABzACAAYQBuAGQAIABmAGkAbgBkACAAbgBvACAAcwB0AGEAdABpAHMAdABpAGMAYQBsACAAZABpAGYAZgBlAHIAZQBuAGMAZQAgAGIAZQB0AHcAZQBlAG4AIAB0AGgAZQBzAGUAIAB0AHcAbwAgAHAAbwBwAHUAbABhAHQAaQBvAG4AcwAuACAAVwBlACAAZABlAHQAZQBjAHQAIABTAGgAYQBwAGkAcgBvACAAZABlAGwAYQB5ACAAaQBuACAAdABoAGUAIAB0AGkAbQBpAG4AZwAgAHIAZQBzAGkAZAB1AGEAbABzACAAbwBmACAAUABTAFIAcwAgAEoAMQA2ADAAMAAtADMAMAA1ADMAIABhAG4AZAAgAEoAMQA5ADEAOAAtADAANgA0ADIALAAgAGkAbQBwAGwAeQBpAG4AZwAgAHAAdQBsAHMAYQByACAAYQBuAGQAIABjAG8AbQBwAGEAbgBpAG8AbgAgAG0AYQBzAHMAZQBzACAAbQBwAD0AMQAuADIAMgBeACsAMAAuADUAXgBfAC0AMAAuADMANQBfAE0AXwB7AHMAdQBuAH0AXwAsACAAbQBjAD0AMAAuADIAMQBeACsAMAAuADAANgBeAF8ALQAwAC4AMAA0AF8ATQBfAHsAcwB1AG4AfQBfACAAYQBuAGQAIABtAHAAPQAxAC4AMgA1AF4AKwAwAC4ANgBeAF8ALQAwAC4ANABfAE0AXwB7AHMAdQBuAH0AfQAsACAAbQBjAD0AMAAuADIAMwBeACsAMAAuADAANwBeAF8ALQAwAC4AMAA1AF8ATQBfAHsAcwB1AG4AfQBfACwAIAByAGUAcwBwAGUAYwB0AGkAdgBlAGwAeQAuACAARgBpAG4AYQBsAGwAeQAsACAAdwBlACAAdQBzAGUAIAB0AGgAZQAgAG0AZQBhAHMAdQByAGUAbQBlAG4AdAAgAG8AZgAgAHQAaABlACAAbwByAGIAaQB0AGEAbAAgAHAAZQByAGkAbwBkACAAZABlAHIAaQB2AGEAdABpAHYAZQAgAHQAbwAgAHMAZQB0ACAAYQAgAHMAdAByAGkAbgBnAGUAbgB0ACAAYwBvAG4AcwB0AHIAYQBpAG4AdAAgAG8AbgAgAHQAaABlACAAZABpAHMAdABhAG4AYwBlACAAdABvACAAUABTAFIAcwAgAEoAMQAwADEAMgArADUAMwAwADcAIABhAG4AZAAgAEoAMQA5ADAAOQAtADMANwA0ADQALAAgAGEAbgBkACAAcwBlAHQAIABsAGkAbQBpAHQAcwAgAG8AbgAgAHQAaABlACAAbABvAG4AZwBpAHQAdQBkAGUAIABvAGYAIABhAHMAYwBlAG4AZABpAG4AZwAgAG4AbwBkAGUAIAB0AGgAcgBvAHUAZwBoACAAdABoAGUAIABzAGUAYQByAGMAaAAgAG8AZgAgAHQAaABlACAAYQBuAG4AdQBhAGwALQBvAHIAYgBpAHQAYQBsACAAcABhAHIAYQBsAGwAYQB4ACAAZgBvAHIAIABQAFMAUgBzACAASgAxADYAMAAwAC0AMwAwADUAMwAgAGEAbgBkACAASgAxADkAMAA5AC0AMwA3ADQANAAuAAAAOmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNDU4LzMzNDEAAAIjAEQAZQBzAHYAaQBnAG4AZQBzACAARwAuADsAIABDAGEAYgBhAGwAbABlAHIAbwAgAFIALgBOAC4AOwAgAEwAZQBuAHQAYQB0AGkAIABMAC4AOwAgAFYAZQByAGIAaQBlAHMAdAAgAEoALgBQAC4AVwAuADsAIABDAGgAYQBtAHAAaQBvAG4AIABEAC4ASgAuADsAIABTAHQAYQBwAHAAZQByAHMAIABCAC4AVwAuADsAIABKAGEAbgBzAHMAZQBuACAARwAuAEgALgA7ACAATABhAHoAYQByAHUAcwAgAFAALgA7ACAATwBzAGwAbwB3AHMAawBpACAAUwAuADsAIABCAGEAYgBhAGsAIABTAC4AOwAgAEIAYQBzAHMAYQAgAEMALgBHAC4AOwAgAEIAcgBlAG0AIABQAC4AOwAgAEIAdQByAGcAYQB5ACAATQAuADsAIABDAG8AZwBuAGEAcgBkACAASQAuADsAIABHAGEAaQByACAASgAuAFIALgA7ACAARwByAGEAaQBrAG8AdQAgAEUALgA7ACAARwB1AGkAbABsAGUAbQBvAHQAIABMAC4AOwAgAEgAZQBzAHMAZQBsAHMAIABKAC4AVwAuAFQALgA7ACAASgBlAHMAcwBuAGUAcgAgAEEALgA7ACAASgBvAHIAZABhAG4AIABDAC4AOwAgAEsAYQByAHUAcABwAHUAcwBhAG0AeQAgAFIALgA7ACAASwByAGEAbQBlAHIAIABNAC4AOwAgAEwAYQBzAHMAdQBzACAAQQAuADsAIABMAGEAegBhAHIAaQBkAGkAcwAgAEsALgA7ACAATABlAGUAIABLAC4ASgAuADsAIABMAGkAdQAgAEsALgA7ACAATAB5AG4AZQAgAEEALgBHAC4AOwAgAE0AYwBrAGUAZQAgAEoALgA7ACAATQBpAG4AZwBhAHIAZQBsAGwAaQAgAEMALgBNAC4ARgAuADsAIABQAGUAcgByAG8AZABpAG4AIABEAC4AOwAgAFAAZQB0AGkAdABlAGEAdQAgAEEALgA7ACAAUABvAHMAcwBlAG4AdABpACAAQQAuADsAIABQAHUAcgB2AGUAcgAgAE0ALgBCAC4AOwAgAFIAbwBzAGEAZABvACAAUAAuAEEALgA7ACAAUwBhAG4AaQBkAGEAcwAgAFMALgA7ACAAUwBlAHMAYQBuAGEAIABBAC4AOwAgAFMAaABhAGkAZgB1AGwAbABhAGgAIABHAC4AOwAgAFMAbQBpAHQAcwAgAFIALgA7ACAAVABhAHkAbABvAHIAIABTAC4AUgAuADsAIABUAGgAZQB1AHIAZQBhAHUAIABHAC4AOwAgAFQAaQBiAHUAcgB6AGkAIABDAC4AOwAgAFYAYQBuACAASABhAGEAcwB0AGUAcgBlAG4AIABSAC4AOwAgAFYAZQBjAGMAaABpAG8AIABBAC4AAAATMjAxNy0xMS0xMFQxMzowNTo1NgAAABMyMDIxLTEwLTIxVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAxADYATQBOAFIAQQBTAC4ANAA1ADgALgAzADMANAAxAER/wAAAAAAABXJhZGlvAAAInGh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDU4LzMzNDEvdGFiMi0xMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNDU4LzMzNDE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzQ1OC8zMzQxOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80NTgvMzM0MS90YWIyLTEyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy80NTgvMzM0MTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovTU5SQVMvNDU4LzMzNDE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ1OC8zMzQxL3RhYjItMTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ1OC8zMzQxOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80NTgvMzM0MTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDU4LzMzNDEvdGFiMi0xMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNDU4LzMzNDE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzQ1OC8zMzQxOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80NTgvMzM0MS90YWIyLTEyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy80NTgvMzM0MTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovTU5SQVMvNDU4LzMzNDE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ1OC8zMzQxL3RhYjItMTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ1OC8zMzQxOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80NTgvMzM0MTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDU4LzMzNDEvdGFiMi0xMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNDU4LzMzNDE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzQ1OC8zMzQxAAADFml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAALsdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAAb9zdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAPaQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80NTgvMzM0MS90YWIyLTEyIChUaW1pbmcgbW9kZWwgcGFyYW1ldGVycyk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ1OC8zMzQxL3RhYjItMTIgKFRpbWluZyBtb2RlbCBwYXJhbWV0ZXJzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDU4LzMzNDEvdGFiMi0xMiAoVGltaW5nIG1vZGVsIHBhcmFtZXRlcnMpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80NTgvMzM0MS90YWIyLTEyIChUaW1pbmcgbW9kZWwgcGFyYW1ldGVycyk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ1OC8zMzQxL3RhYjItMTIgKFRpbWluZyBtb2RlbCBwYXJhbWV0ZXJzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDU4LzMzNDEvdGFiMi0xMiAoVGltaW5nIG1vZGVsIHBhcmFtZXRlcnMpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80NTgvMzM0MS90YWIyLTEyIChUaW1pbmcgbW9kZWwgcGFyYW1ldGVycyk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAIGl2bzovL2Nkcy52aXppZXIvai9tbnJhcy80NTkvMTQwAAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAAD0ovTU5SQVMvNDU5LzE0MAAAACYATQA4ADEALAAgAEwATQBDACAAYQBuAGQAIAAzAEMAIAAyADcAMwAvAEMAbwBtAGEAIAAxADcALQA2ADAAawBlAFYAIABvAGIAcwAuAAAACHJlc2VhcmNoAAAGFgBXAGUAIABwAHIAZQBzAGUAbgB0ACAAcgBlAHMAdQBsAHQAcwAgAG8AZgAgAGEAIABkAGUAZQBwACAAcwB1AHIAdgBlAHkAIABvAGYAIAB0AGgAcgBlAGUAIABlAHgAdAByAGEAZwBhAGwAYQBjAHQAaQBjACAAZgBpAGUAbABkAHMALAAgAE0AOAAxACAAKABlAHgAcABvAHMAdQByAGUAIABvAGYAIAA5AC4ANwBNAHMAKQAsACAATABhAHIAZwBlACAATQBhAGcAZQBsAGwAYQBuAGkAYwAgAEMAbABvAHUAZAAgACgANgAuADgAIABNAHMAKQAgAGEAbgBkACAAMwBDACAAMgA3ADMALwBDAG8AbQBhACAAKAA5AC4AMwBNAHMAKQAsACAAaQBuACAAdABoAGUAIABoAGEAcgBkACAAWAAtAHIAYQB5ACAAKAAxADcALQA2ADAAawBlAFYAKQAgAGUAbgBlAHIAZwB5ACAAYgBhAG4AZAAgAHcAaQB0AGgAIAB0AGgAZQAgAEkAQgBJAFMAIAB0AGUAbABlAHMAYwBvAHAAZQAgAG8AbgBiAG8AYQByAGQAIAB0AGgAZQAgAEkATgBUAEUARwBSAEEATAAgAG8AYgBzAGUAcgB2AGEAdABvAHIAeQAsACAAYgBhAHMAZQBkACAAbwBuACAAMQAyACAAeQBlAGEAcgBzACAAbwBmACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIAAoADIAMAAwADMALQAyADAAMQA1ACkALgAgAFQAaABlACAAYwBvAG0AYgBpAG4AZQBkACAAcwB1AHIAdgBlAHkAIAByAGUAYQBjAGgAZQBzACAAYQAgADQAewBzAGkAZwBtAGEAfQAgAHAAZQBhAGsAIABzAGUAbgBzAGkAdABpAHYAaQB0AHkAIABvAGYAIAAwAC4AMQA4AG0AQwByAGEAYgAgACgAMgAuADYAeAAxADAAXgAtADEAMgBeAGUAcgBnAC8AcwAvAGMAbQBeADIAXgApACAAYQBuAGQAIABzAGUAbgBzAGkAdABpAHYAaQB0AHkAIABiAGUAdAB0AGUAcgAgAHQAaABhAG4AIAAwAC4AMgA1ACAAYQBuAGQAIAAwAC4AOAA3AG0AQwByAGEAYgAgAG8AdgBlAHIAIAAxADAAIABwAGUAcgAgAGMAZQBuAHQAIABhAG4AZAAgADkAMAAgAHAAZQByACAAYwBlAG4AdAAgAG8AZgAgAGkAdABzACAAZgB1AGwAbAAgAGEAcgBlAGEAIABvAGYAIAA0ADkAMAAwACAAZABlAGcAXgAyAF4ALAAgAHIAZQBzAHAAZQBjAHQAaQB2AGUAbAB5AC4AIABXAGUAIABoAGEAdgBlACAAZABlAHQAZQBjAHQAZQBkACAAaQBuACAAdABvAHQAYQBsACAAMQA0ADcAIABzAG8AdQByAGMAZQBzACAAYQB0ACAAUwAvAE4APgA0AHsAcwBpAGcAbQBhAH0ALAAgAGkAbgBjAGwAdQBkAGkAbgBnACAAMwA3ACAAcwBvAHUAcgBjAGUAcwAgAG8AYgBzAGUAcgB2AGUAZAAgAGkAbgAgAGgAYQByAGQAIABYAC0AcgBhAHkAcwAgAGYAbwByACAAdABoAGUAIABmAGkAcgBzAHQAIAB0AGkAbQBlAC4AIABUAGgAZQAgAHMAdQByAHYAZQB5ACAAaQBzACAAZABvAG0AaQBuAGEAdABlAGQAIABiAHkAIABlAHgAdAByAGEAZwBhAGwAYQBjAHQAaQBjACAAcwBvAHUAcgBjAGUAcwAsACAAbQBvAHMAdABsAHkAIABhAGMAdABpAHYAZQAgAGcAYQBsAGEAYwB0AGkAYwAgAG4AdQBjAGwAZQBpACAAKABBAEcATgApAC4AIABUAGgAZQAgAHMAYQBtAHAAbABlACAAbwBmACAAaQBkAGUAbgB0AGkAZgBpAGUAZAAgAHMAbwB1AHIAYwBlAHMAIABjAG8AbgB0AGEAaQBuAHMAIAA5ADgAIABBAEcATgAgACgAaQBuAGMAbAB1AGQAaQBuAGcAIAA2ADQAIABTAGUAeQBmAGUAcgB0ACAAZwBhAGwAYQB4AGkAZQBzACwAIABzAGUAdgBlAG4AIABsAG8AdwAtAGkAbwBuAGkAegBhAHQAaQBvAG4AIABuAHUAYwBsAGUAYQByACAAZQBtAGkAcwBzAGkAbwBuAC0AbABpAG4AZQAgAHIAZQBnAGkAbwBuACAAZwBhAGwAYQB4AGkAZQBzACwAIAB0AGgAcgBlAGUAIABYAC0AcgBhAHkAIABiAHIAaQBnAGgAdAAgAG8AcAB0AGkAYwBhAGwAbAB5ACAAbgBvAHIAbQBhAGwAIABnAGEAbABhAHgAaQBlAHMALAAgADEANgAgAGIAbABhAHoAYQByAHMAIABhAG4AZAAgAGUAaQBnAGgAdAAgAEEARwBOACAAbwBmACAAdQBuAGMAbABlAGEAcgAgAG8AcAB0AGkAYwBhAGwAIABjAGwAYQBzAHMAKQAsACAAdAB3AG8AIABnAGEAbABhAHgAeQAgAGMAbAB1AHMAdABlAHIAcwAgACgAQwBvAG0AYQAgAGEAbgBkACAAQQBiAGUAbABsACAAMwAyADYANgApACwAIAAxADcAIABvAGIAagBlAGMAdABzACAAbABvAGMAYQB0AGUAZAAgAGkAbgAgAHQAaABlACAATABhAHIAZwBlACAAYQBuAGQAIABTAG0AYQBsAGwAIABNAGEAZwBlAGwAbABhAG4AaQBjACAAQwBsAG8AdQBkAHMAIAAoADEAMwAgAGgAaQBnAGgALQAgAGEAbgBkACAAdAB3AG8AIABsAG8AdwAtAG0AYQBzAHMAIABYAC0AcgBhAHkAIABiAGkAbgBhAHIAaQBlAHMAIABhAG4AZAAgAHQAdwBvACAAWAAtAHIAYQB5ACAAcAB1AGwAcwBhAHIAcwApACwAIAB0AGgAcgBlAGUAIABHAGEAbABhAGMAdABpAGMAIABjAGEAdABhAGMAbAB5AHMAbQBpAGMAIAB2AGEAcgBpAGEAYgBsAGUAcwAsACAAbwBuAGUAIAB1AGwAdAByAGEAbAB1AG0AaQBuAG8AdQBzACAAWAAtAHIAYQB5ACAAcwBvAHUAcgBjAGUAIAAoAE0AOAAyACAAWAAtADEAKQAgAGEAbgBkACAAbwBuAGUAIABiAGwAZQBuAGQAZQBkACAAcwBvAHUAcgBjAGUAIAAoAFMAVwBJAEYAVAAgAEoAMQAxADAANQAuADcAKwA1ADgANQA0ACkALgAgAFQAaABlACAAbgBhAHQAdQByAGUAIABvAGYAIAAyADUAIABzAG8AdQByAGMAZQBzACAAcgBlAG0AYQBpAG4AcwAgAHUAbgBrAG4AbwB3AG4ALAAgAHMAbwAgAHQAaABhAHQAIAB0AGgAZQAgAHMAdQByAHYAZQB5ACcAcwAgAGkAZABlAG4AdABpAGYAaQBjAGEAdABpAG8AbgAgAGkAcwAgAGMAdQByAHIAZQBuAHQAbAB5ACAAYwBvAG0AcABsAGUAdABlACAAYQB0ACAAOAAzACAAcABlAHIAIABjAGUAbgB0AC4AIABXAGUAIABoAGEAdgBlACAAYwBvAG4AcwB0AHIAdQBjAHQAZQBkACAAQQBHAE4AIABuAHUAbQBiAGUAcgAtAGYAbAB1AHgAIAByAGUAbABhAHQAaQBvAG4AcwAgACgAbABvAGcAIABOAC0AbABvAGcAIABTACkAIABhAG4AZAAgAGMAYQBsAGMAdQBsAGEAdABlAGQAIABBAEcATgAgAG4AdQBtAGIAZQByACAAZABlAG4AcwBpAHQAaQBlAHMAIABpAG4AIAB0AGgAZQAgAGwAbwBjAGEAbAAgAFUAbgBpAHYAZQByAHMAZQAgAGYAbwByACAAdABoAGUAIABlAG4AdABpAHIAZQAgAHMAdQByAHYAZQB5ACAAYQBuAGQAIABmAG8AcgAgAGUAYQBjAGgAIABvAGYAIAB0AGgAZQAgAHQAaAByAGUAZQAgAGUAeAB0AHIAYQBnAGEAbABhAGMAdABpAGMAIABmAGkAZQBsAGQAcwAuAAAAOWh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNDU5LzE0MAAAAFwATQBlAHIAZQBtAGkAbgBzAGsAaQB5ACAASQAuAEEALgA7ACAASwByAGkAdgBvAG4AbwBzACAAUgAuAEEALgA7ACAATAB1AHQAbwB2AGkAbgBvAHYAIABBAC4AQQAuADsAIABTAGEAegBvAG4AbwB2ACAAUwAuAFkALgA7ACAAUgBlAHYAbgBpAHYAdABzAGUAdgAgAE0ALgBHAC4AOwAgAFMAdQBuAHkAYQBlAHYAIABSAC4AQQAuAAAAEzIwMTctMDgtMDFUMDg6MDk6NDIAAAATMjAyMS0xMC0yMVQwMDowMDowMAAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMQA2AE0ATgBSAEEAUwAuADQANQA5AC4ALgAxADQAMABNf8AAAAAAAAV4LXJheQAAASpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ1OS8xNDAvdGFibGUxPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy80NTkvMTQwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80NTkvMTQwAAAAZGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAABednM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAADNzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAADPQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80NTkvMTQwL3RhYmxlMSAoTGlzdCBvZiB0aGUgZGV0ZWN0ZWQgc291cmNlcyB3aXRoIFMvTj40IGluIHRoZSBjb21iaW5lZCBzdXJ2ZXkgb2YgdGhyZWUgZmllbGRzLCBNODEsIExNQyBhbmQgM0MgMjczL0NvbWEpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAAAAAACFpdm86Ly9jZHMudml6aWVyL2ovbW5yYXMvNDg0LzM2OTEAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAQSi9NTlJBUy80ODQvMzY5MQAAACIAVQBUAE0ATwBTAFQAIABwAHUAbABzAGEAcgAgAHQAaQBtAGkAbgBnACAAcAByAG8AZwByAGEAbQBtAGUALgAgAEkALgAAAAhyZXNlYXJjaAAABkcAVwBlACAAcAByAGUAcwBlAG4AdAAgAGEAbgAgAG8AdgBlAHIAdgBpAGUAdwAgAGEAbgBkACAAdABoAGUAIABmAGkAcgBzAHQAIAByAGUAcwB1AGwAdABzACAAZgByAG8AbQAgAGEAIABsAGEAcgBnAGUALQBzAGMAYQBsAGUAIABwAHUAbABzAGEAcgAgAHQAaQBtAGkAbgBnACAAcAByAG8AZwByAGEAbQBtAGUAIAB0AGgAYQB0ACAAaQBzACAAcABhAHIAdAAgAG8AZgAgAHQAaABlACAAVQBUAE0ATwBTAFQAIABwAHIAbwBqAGUAYwB0ACAAYQB0ACAAdABoAGUAIAByAGUAZgB1AHIAYgBpAHMAaABlAGQAIABNAG8AbABvAG4AZwBsAG8AIABPAGIAcwBlAHIAdgBhAHQAbwByAHkAIABTAHkAbgB0AGgAZQBzAGkAcwAgAFIAYQBkAGkAbwAgAFQAZQBsAGUAcwBjAG8AcABlACAAKABNAE8AUwBUACkAIABuAGUAYQByACAAQwBhAG4AYgBlAHIAcgBhACwAIABBAHUAcwB0AHIAYQBsAGkAYQAuACAAVwBlACAAYwB1AHIAcgBlAG4AdABsAHkAIABvAGIAcwBlAHIAdgBlACAAbQBvAHIAZQAgAHQAaABhAG4AIAA0ADAAMAAgAG0AYQBpAG4AbAB5ACAAYgByAGkAZwBoAHQAIABzAG8AdQB0AGgAZQByAG4AIAByAGEAZABpAG8AIABwAHUAbABzAGEAcgBzACAAdwBpAHQAaAAgAHUAcAAgAHQAbwAgAGQAYQBpAGwAeQAgAGMAYQBkAGUAbgBjAGUAcwAuACAARgBvAHIAIAAyADAANQAgACgAOAAgAGkAbgAgAGIAaQBuAGEAcgBpAGUAcwAsACAANAAgAG0AaQBsAGwAaQBzAGUAYwBvAG4AZAAgAHAAdQBsAHMAYQByAHMAKQAsACAAdwBlACAAcAB1AGIAbABpAHMAaAAgAHUAcABkAGEAdABlAGQAIAB0AGkAbQBpAG4AZwAgAG0AbwBkAGUAbABzACwAIAB0AG8AZwBlAHQAaABlAHIAIAB3AGkAdABoACAAdABoAGUAaQByACAAZgBsAHUAeAAgAGQAZQBuAHMAaQB0AGkAZQBzACwAIABmAGwAdQB4ACAAZABlAG4AcwBpAHQAeQAgAHYAYQByAGkAYQBiAGkAbABpAHQAeQAsACAAYQBuAGQAIABwAHUAbABzAGUAIAB3AGkAZAB0AGgAcwAgAGEAdAAgADgANAAzACAATQBIAHoALAAgAGQAZQByAGkAdgBlAGQAIABmAHIAbwBtACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIABzAHAAYQBuAG4AaQBuAGcAIABiAGUAdAB3AGUAZQBuACAAMQAuADQAIABhAG4AZAAgADMAIAB5AHIALgAgAEkAbgAgAGMAbwBtAHAAYQByAGkAcwBvAG4AIAB3AGkAdABoACAAdABoAGUAIABBAFQATgBGACAAcAB1AGwAcwBhAHIAIABjAGEAdABhAGwAbwBnAHUAZQAsACAAdwBlACAAaQBtAHAAcgBvAHYAZQAgAHQAaABlACAAcAByAGUAYwBpAHMAaQBvAG4AIABvAGYAIAB0AGgAZQAgAHIAbwB0AGEAdABpAG8AbgBhAGwAIABhAG4AZAAgAGEAcwB0AHIAbwBtAGUAdAByAGkAYwAgAHAAYQByAGEAbQBlAHQAZQByAHMAIABmAG8AcgAgADEAMgAzACAAcAB1AGwAcwBhAHIAcwAsACAAZgBvAHIAIAA0ADcAIABiAHkAIABhAHQAIABsAGUAYQBzAHQAIABhAG4AIABvAHIAZABlAHIAIABvAGYAIABtAGEAZwBuAGkAdAB1AGQAZQAuACAAVABoAGUAIAB0AGkAbQBlACAAcwBwAGEAbgBzACAAYgBlAHQAdwBlAGUAbgAgAG8AdQByACAAbQBlAGEAcwB1AHIAZQBtAGUAbgB0AHMAIABhAG4AZAAgAHQAaABvAHMAZQAgAGkAbgAgAHQAaABlACAAbABpAHQAZQByAGEAdAB1AHIAZQAgAGEAcgBlACAAdQBwACAAdABvACAANAA4ACAAeQByACwAIAB3AGgAaQBjAGgAIABhAGwAbABvAHcAIAB1AHMAIAB0AG8AIABpAG4AdgBlAHMAdABpAGcAYQB0AGUAIAB0AGgAZQBpAHIAIABsAG8AbgBnAC0AdABlAHIAbQAgAHMAcABpAG4ALQBkAG8AdwBuACAAaABpAHMAdABvAHIAeQAgAGEAbgBkACAAdABvACAAZQBzAHQAaQBtAGEAdABlACAAcAByAG8AcABlAHIAIABtAG8AdABpAG8AbgBzACAAZgBvAHIAIAA2ADAAIABwAHUAbABzAGEAcgBzACwAIABvAGYAIAB3AGgAaQBjAGgAIAAyADQAIABhAHIAZQAgAG4AZQB3AGwAeQAgAGQAZQB0AGUAcgBtAGkAbgBlAGQAIABhAG4AZAAgAG0AbwBzAHQAIABhAHIAZQAgAG0AYQBqAG8AcgAgAGkAbQBwAHIAbwB2AGUAbQBlAG4AdABzAC4AIABUAGgAZQAgAHIAZQBzAHUAbAB0AHMAIABhAHIAZQAgAGMAbwBuAHMAaQBzAHQAZQBuAHQAIAB3AGkAdABoACAAaQBuAHQAZQByAGYAZQByAG8AbQBlAHQAcgBpAGMAIABtAGUAYQBzAHUAcgBlAG0AZQBuAHQAcwAgAGYAcgBvAG0AIAB0AGgAZQAgAGwAaQB0AGUAcgBhAHQAdQByAGUALgAgAEEAIABtAG8AZABlAGwAIAB3AGkAdABoACAAdAB3AG8AIABHAGEAdQBzAHMAaQBhAG4AIABjAG8AbQBwAG8AbgBlAG4AdABzACAAYwBlAG4AdAByAGUAZAAgAGEAdAAgADEAMwA5ACAAYQBuAGQAIAA0ADYAMwBrAG0ALwBzACAAZgBpAHQAcwAgAHQAaABlACAAdAByAGEAbgBzAHYAZQByAHMAZQAgAHYAZQBsAG8AYwBpAHQAeQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAYgBlAHMAdAAuACAAVABoAGUAIABwAHUAbABzAGUAIABkAHUAdAB5ACAAYwB5AGMAbABlACAAZABpAHMAdAByAGkAYgB1AHQAaQBvAG4AcwAgAGEAdAAgADUAMAAgAGEAbgBkACAAMQAwACAAcABlAHIAIABjAGUAbgB0ACAAbQBhAHgAaQBtAHUAbQAgAGEAcgBlACAAYgBlAHMAdAAgAGQAZQBzAGMAcgBpAGIAZQBkACAAYgB5ACAAbABvAGcAbgBvAHIAbQBhAGwAIABkAGkAcwB0AHIAaQBiAHUAdABpAG8AbgBzACAAdwBpAHQAaAAgAG0AZQBkAGkAYQBuAHMAIABvAGYAIAAyAC4AMwAgAGEAbgBkACAANAAuADQAIABwAGUAcgAgAGMAZQBuAHQALAAgAHIAZQBzAHAAZQBjAHQAaQB2AGUAbAB5AC4AIABXAGUAIABkAGkAcwBjAHUAcwBzACAAdAB3AG8AIABwAHUAbABzAGEAcgBzACAAdABoAGEAdAAgAGUAeABoAGkAYgBpAHQAIABzAHAAaQBuAC0AZABvAHcAbgAgAHIAYQB0AGUAIABjAGgAYQBuAGcAZQBzACAAYQBuAGQAIABkAHIAaQBmAHQAaQBuAGcAIABzAHUAYgBwAHUAbABzAGUAcwAuACAARgBpAG4AYQBsAGwAeQAsACAAdwBlACAAZABlAHMAYwByAGkAYgBlACAAdABoAGUAIABhAHUAdABvAG4AbwBtAG8AdQBzACAAbwBiAHMAZQByAHYAaQBuAGcAIABzAHkAcwB0AGUAbQAgAGEAbgBkACAAdABoAGUAIABkAHkAbgBhAG0AaQBjACAAcwBjAGgAZQBkAHUAbABlAHIAIAB0AGgAYQB0ACAAaABhAHMAIABpAG4AYwByAGUAYQBzAGUAZAAgAHQAaABlACAAbwBiAHMAZQByAHYAaQBuAGcAIABlAGYAZgBpAGMAaQBlAG4AYwB5ACAAYgB5ACAAYQAgAGYAYQBjAHQAbwByACAAbwBmACAAMgAtADMAIABpAG4AIABjAG8AbQBwAGEAcgBpAHMAbwBuACAAdwBpAHQAaAAgAHMAdABhAHQAaQBjACAAcwBjAGgAZQBkAHUAbABpAG4AZwAuAAAAOmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNDg0LzM2OTEAAAD1AEoAYQBuAGsAbwB3AHMAawBpACAARgAuADsAIABCAGEAaQBsAGUAcwAgAE0ALgA7ACAAVgBhAG4AIABTAHQAcgBhAHQAZQBuACAAVwAuADsAIABLAGUAYQBuAGUAIABFAC4ARgAuADsAIABGAGwAeQBuAG4AIABDAC4AOwAgAEIAYQByAHIAIABFAC4ARAAuADsAIABCAGEAdABlAG0AYQBuACAAVAAuADsAIABCAGgAYQBuAGQAYQByAGkAIABTAC4AOwAgAEMAYQBsAGUAYgAgAE0ALgA7ACAAQwBhAG0AcABiAGUAbABsAC0AVwBpAGwAcwBvAG4AIABEAC4AOwAgAEYAYQByAGEAaAAgAFcALgA7ACAARwByAGUAZQBuACAAQQAuAEoALgA7ACAASAB1AG4AcwB0AGUAYQBkACAAUgAuAFcALgA7ACAASgBhAG0AZQBzAG8AbgAgAEEALgA7ACAATwBzAGwAbwB3AHMAawBpACAAUwAuADsAIABQAGEAcgB0AGgAYQBzAGEAcgBhAHQAaAB5ACAAQQAuADsAIABSAG8AcwBhAGQAbwAgAFAALgBBAC4AOwAgAFYAZQBuAGsAYQB0AHIAYQBtAGEAbgAgAEsAcgBpAHMAaABuAGEAbgAgAFYALgAAABMyMDIwLTAyLTA1VDE0OjQ4OjU1AAAAEzIwMjEtMTAtMjFUMDA6MDA6MDAAAAA2aHR0cHM6Ly9jZHMudW5pc3RyYS5mci92aXppZXItb3JnL2xpY2VuY2VzX3Zpemllci5odG1sAAAAB2NhdGFsb2cAAAAHYmliY29kZQAAABMAMgAwADEAOQBNAE4AUgBBAFMALgA0ADgANAAuADMANgA5ADEASn/AAAAAAAAFcmFkaW8AAAGGaHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80ODQvMzY5MS90YWJsZWIyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDg0LzM2OTEvdGFibGViMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNDg0LzM2OTE6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzQ4NC8zNjkxAAAAkGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAHl2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAARXN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAQxDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ4NC8zNjkxL3RhYmxlYjIgKFJvdGF0aW9uYWwgcGFyYW1ldGVycyBmb3IgMTk3IGlzb2xhdGVkIHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80ODQvMzY5MS90YWJsZWIxIChSb3RhdGlvbmFsIHBhcmFtZXRlcnMgZm9yIDggYmluYXJ5IHN5c3RlbXMpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAAAAAACFpdm86Ly9jZHMudml6aWVyL2ovbW5yYXMvNDkzLzEwNjMAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAQSi9NTlJBUy80OTMvMTA2MwAAACIARABpAHMAYwBvAHYAZQByAHkAIABhAG4AZAAgAHQAaQBtAGkAbgBnACAAbwBmACAANAAwACAAcAB1AGwAcwBhAHIAcwAAAAhyZXNlYXJjaAAABrIAVwBlACAAcAByAGUAcwBlAG4AdAAgAHQAaABlACAAcgBlAHMAdQBsAHQAcwAgAG8AZgAgAHAAcgBvAGMAZQBzAHMAaQBuAGcAIABhAG4AIABhAGQAZABpAHQAaQBvAG4AYQBsACAANAA0ACAAcABlAHIAIABjAGUAbgB0ACAAbwBmACAAdABoAGUAIABIAGkAZwBoACAAVABpAG0AZQAgAFIAZQBzAG8AbAB1AHQAaQBvAG4AIABVAG4AaQB2AGUAcgBzAGUAIABTAG8AdQB0AGgAIABMAG8AdwAgAEwAYQB0AGkAdAB1AGQAZQAgACgASABUAFIAVQAtAFMAIABMAG8AdwBMAGEAdAApACAAcAB1AGwAcwBhAHIAIABzAHUAcgB2AGUAeQAsACAAdABoAGUAIABtAG8AcwB0ACAAcwBlAG4AcwBpAHQAaQB2AGUAIABiAGwAaQBuAGQAIABwAHUAbABzAGEAcgAgAHMAdQByAHYAZQB5ACAAbwBmACAAdABoAGUAIABzAG8AdQB0AGgAZQByAG4AIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUAIAB0AG8AIABkAGEAdABlAC4AIABPAHUAcgAgAHAAYQByAHQAaQBhAGwAbAB5ACAAYwBvAGgAZQByAGUAbgB0ACAAcwBlAGcAbQBlAG4AdABlAGQAIABhAGMAYwBlAGwAZQByAGEAdABpAG8AbgAgAHMAZQBhAHIAYwBoACAAcABpAHAAZQBsAGkAbgBlACAAaQBzACAAZABlAHMAaQBnAG4AZQBkACAAdABvACAAZQBuAGEAYgBsAGUAIAB0AGgAZQAgAGQAaQBzAGMAbwB2AGUAcgB5ACAAbwBmACAAcAB1AGwAcwBhAHIAcwAgAGkAbgAgAHMAaABvAHIAdAAsACAAaABpAGcAaABsAHkAIABhAGMAYwBlAGwAZQByAGEAdABlAGQAIABvAHIAYgBpAHQAcwAsACAAdwBoAGkAbABlACAAbwB1AHIAIAA3ADIALQBtAGkAbgAgAGkAbgB0AGUAZwByAGEAdABpAG8AbgAgAGwAZQBuAGcAdABoAHMAIAB3AGkAbABsACAAYQBsAGwAbwB3ACAAdQBzACAAdABvACAAZABpAHMAYwBvAHYAZQByACAAcAB1AGwAcwBhAHIAcwAgAGEAdAAgAHQAaABlACAAbABvAHcAZQByACAAZQBuAGQAIABvAGYAIAB0AGgAZQAgAHAAdQBsAHMAYQByACAAbAB1AG0AaQBuAG8AcwBpAHQAeQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuAC4AIABXAGUAIAByAGUAcABvAHIAdAAgAHQAaABlACAAZABpAHMAYwBvAHYAZQByAHkAIABvAGYAIAA0ADAAIABwAHUAbABzAGEAcgBzACwAIABpAG4AYwBsAHUAZABpAG4AZwAgAHQAaAByAGUAZQAgAG0AaQBsAGwAaQBzAGUAYwBvAG4AZAAgAHAAdQBsAHMAYQByAC0AdwBoAGkAdABlACAAZAB3AGEAcgBmACAAYgBpAG4AYQByAHkAIABzAHkAcwB0AGUAbQBzACAAKABQAFMAUgBzACAASgAxADUAMwA3AC0ANQAzADEAMgAsACAASgAxADUANAA3AC0ANQA3ADAAOQAsACAAYQBuAGQAIABKADEANgAxADgALQA0ADYAMgA0ACkALAAgAGEAIABiAGwAYQBjAGsALQB3AGkAZABvAHcAIABiAGkAbgBhAHIAeQAgAHMAeQBzAHQAZQBtACAAKABQAFMAUgAgAEoAMQA3ADQANQAtADIAMwApACAAYQBuAGQAIABhACAAYwBhAG4AZABpAGQAYQB0AGUAIABiAGwAYQBjAGsALQB3AGkAZABvAHcAIABiAGkAbgBhAHIAeQAgAHMAeQBzAHQAZQBtACAAKABQAFMAUgAgAEoAMQA3ADIANwAtADIAOQA1ADEAKQAsACAAYQAgAGcAbABpAHQAYwBoAGkAbgBnACAAcAB1AGwAcwBhAHIAIAAoAFAAUwBSACAASgAxADcAMAA2AC0ANAA0ADMANAApACwAIABhAG4AIABlAGMAbABpAHAAcwBpAG4AZwAgAGIAaQBuAGEAcgB5ACAAcAB1AGwAcwBhAHIAIAB3AGkAdABoACAAYQAgADEALgA1AC0AeQByACAAbwByAGIAaQB0AGEAbAAgAHAAZQByAGkAbwBkACAAKABQAFMAUgAgAEoAMQA2ADUAMwAtADQANQApACwAIABhAG4AZAAgAGEAIABwAGEAaQByACAAbwBmACAAbABvAG4AZwAgAHMAcABpAG4ALQBwAGUAcgBpAG8AZAAgAGIAaQBuAGEAcgB5ACAAcAB1AGwAcwBhAHIAcwAgAHcAaABpAGMAaAAgAGQAaQBzAHAAbABhAHkAIABlAGkAdABoAGUAcgAgAG4AdQBsAGwAaQBuAGcAIABvAHIAIABpAG4AdABlAHIAbQBpAHQAdABlAG4AdAAgAGIAZQBoAGEAdgBpAG8AdQByACAAKABQAFMAUgBzACAASgAxADgAMQAyAC0AMQA1ACAAYQBuAGQAIABKADEAOAAzADEALQAwADQAKQAuACAAVwBlACAAcwBoAG8AdwAgAHQAaABhAHQAIAB0AGgAZQAgAHQAbwB0AGEAbAAgAHAAbwBwAHUAbABhAHQAaQBvAG4AIABvAGYAIAAxADAAMAAgAHAAdQBsAHMAYQByAHMAIABkAGkAcwBjAG8AdgBlAHIAZQBkACAAaQBuACAAdABoAGUAIABIAFQAUgBVAC0AUwAgAEwAbwB3AEwAYQB0ACAAcwB1AHIAdgBlAHkAIAB0AG8AIABkAGEAdABlACAAcgBlAHAAcgBlAHMAZQBuAHQAcwAgAGIAbwB0AGgAIABhAG4AIABvAGwAZABlAHIAIABhAG4AZAAgAGwAbwB3AGUAcgAgAGwAdQBtAGkAbgBvAHMAaQB0AHkAIABwAG8AcAB1AGwAYQB0AGkAbwBuACwAIABhAG4AZAAgAGkAbgBkAGkAYwBhAHQAZQBzACAAdABoAGEAdAAgAHcAZQAgAGgAYQB2AGUAIAB5AGUAdAAgAHQAbwAgAHIAZQBhAGMAaAAgAHQAaABlACAAYgBvAHQAdABvAG0AIABvAGYAIAB0AGgAZQAgAGwAdQBtAGkAbgBvAHMAaQB0AHkAIABkAGkAcwB0AHIAaQBiAHUAdABpAG8AbgAgAGYAdQBuAGMAdABpAG8AbgAuACAAVwBlACAAcAByAGUAcwBlAG4AdAAgAGUAdgBhAGwAdQBhAHQAaQBvAG4AcwAgAG8AZgAgAHQAaABlACAAcABlAHIAZgBvAHIAbQBhAG4AYwBlACAAbwBmACAAbwB1AHIAIABzAGUAYQByAGMAaAAgAHQAZQBjAGgAbgBpAHEAdQBlACAAYQBuAGQAIABvAGYAIAB0AGgAZQAgAG8AdgBlAHIAYQBsAGwAIAB5AGkAZQBsAGQAIABvAGYAIAB0AGgAZQAgAHMAdQByAHYAZQB5ACwAIABjAG8AbgBzAGkAZABlAHIAaQBuAGcAIAB0AGgAZQAgADkANAAgAHAAZQByACAAYwBlAG4AdAAgAG8AZgAgAHQAaABlACAAcwB1AHIAdgBlAHkAIAB3AGgAaQBjAGgAIAB3AGUAIABoAGEAdgBlACAAcAByAG8AYwBlAHMAcwBlAGQAIAB0AG8AIABkAGEAdABlAC4AIABXAGUAIABzAGgAbwB3ACAAdABoAGEAdAAgAG8AdQByACAAcAB1AGwAcwBhAHIAIAB5AGkAZQBsAGQAIABmAGEAbABsAHMAIABiAGUAbABvAHcAIABlAGEAcgBsAGkAZQByACAAcAByAGUAZABpAGMAdABpAG8AbgBzACAAYgB5ACAAYQBwAHAAcgBvAHgAaQBtAGEAdABlAGwAeQAgADIANQAgAHAAZQByACAAYwBlAG4AdAAgACgAZQBzAHAAZQBjAGkAYQBsAGwAeQAgAGkAbgAgAHQAaABlACAAYwBhAHMAZQAgAG8AZgAgAG0AaQBsAGwAaQBzAGUAYwBvAG4AZAAgAHAAdQBsAHMAYQByAHMAKQAsACAAYQBuAGQAIABkAGkAcwBjAHUAcwBzACAAZQB4AHAAbABhAG4AYQB0AGkAbwBuAHMAIABmAG8AcgAgAHQAaABpAHMAIABkAGkAcwBjAHIAZQBwAGEAbgBjAHkAIABhAHMAIAB3AGUAbABsACAAYQBzACAAZgB1AHQAdQByAGUAIABhAGQAYQBwAHQAYQB0AGkAbwBuAHMAIABpAG4AIABSAEYASQAgAG0AaQB0AGkAZwBhAHQAaQBvAG4AIABhAG4AZAAgAHMAZQBhAHIAYwBoAGkAbgBnACAAdABlAGMAaABuAGkAcQB1AGUAcwAgAHcAaABpAGMAaAAgAG0AYQB5ACAAYQBkAGQAcgBlAHMAcwAgAHQAaABlAHMAZQAgAHMAaABvAHIAdABmAGEAbABsAHMALgAAADpodHRwczovL2Nkc2FyYy5jZHMudW5pc3RyYS5mci92aXotYmluL2NhdC9KL01OUkFTLzQ5My8xMDYzAAABQABDAGEAbQBlAHIAbwBuACAAQQAuAEQALgA7ACAAQwBoAGEAbQBwAGkAbwBuACAARAAuAEoALgA7ACAAQgBhAGkAbABlAHMAIABNAC4AOwAgAEIAYQBsAGEAawByAGkAcwBoAG4AYQBuACAAVgAuADsAIABCAGEAcgByACAARQAuAEQALgA7ACAAQgBhAHMAcwBhACAAQwAuAEcALgA7ACAAQgBhAHQAZQBzACAAUwAuADsAIABCAGgAYQBuAGQAYQByAGkAIABTAC4AOwAgAEIAaABhAHQAIABOAC4ARAAuAFIALgA7ACAAQgB1AHIAZwBhAHkAIABNAC4AOwAgAEIAdQByAGsAZQAtAFMAcABvAGwAYQBvAHIAIABTAC4AOwAgAEYAbAB5AG4AbgAgAEMALgBNAC4ATAAuADsAIABKAGEAbQBlAHMAbwBuACAAQQAuADsAIABKAG8AaABuAHMAdABvAG4AIABTAC4AOwAgAEsAZQBpAHQAaAAgAE0ALgBKAC4AOwAgAEsAcgBhAG0AZQByACAATQAuADsAIABMAGUAdgBpAG4AIABMAC4AOwAgAEwAeQBuAGUAIABBAC4ARwAuADsAIABOAGcAIABDAC4AOwAgAFAAZQB0AHIAbwBmAGYAIABFAC4AOwAgAFAAbwBzAHMAZQBuAHQAaQAgAEEALgA7ACAAUwBtAGkAdABoACAARAAuAEEALgA7ACAAUwB0AGEAcABwAGUAcgBzACAAQgAuAFcALgA7ACAAdgBhAG4AIABTAHQAcgBhAHQAZQBuACAAVwAuADsAIABUAGkAYgB1AHIAegBpACAAQwAuADsAIABXAHUAIABKAC4AAAATMjAyMy0wNy0yOFQwOTo1MTozOQAAABMyMDIzLTA3LTI4VDA4OjU4OjUxAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADAATQBOAFIAQQBTAC4ANAA5ADMALgAxADAANgAzAEN/wAAAAAAABXJhZGlvAAARl2h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2Mzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2Mzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2Mzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2Mzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2Mzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNDkzLzEwNjMvdGFibGVhMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL01OUkFTLzQ5My8xMDYzL3RhYmxlYTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTY/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTQ/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy80OTMvMTA2My90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL01OUkFTLzQ5My8xMDYzOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9NTlJBUy80OTMvMTA2MwAAB8tpdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAWpdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAADmXN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAGhNDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlYTIgKFB1bHNhcnMgd2l0aCBTL05fZXhwXz5TL05fbWluXz05IHdoaWNoIHdlcmUgbm90IGRldGVjdGVkIGluIHRoZSB+NDQgcGVyIGNlbnQgb2YgdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5IHByb2Nlc3NlZCBieSB0aGUgcGFydGlhbGx5IGNvaGVyZW50IHNlZ21lbnRlZCBhY2NlbGVyYXRpb24gc2VhcmNoIHBpcGVsaW5lIGZvciB0aGlzIHBhcGVyKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGVhMSAoNzU1IHJlZGV0ZWN0aW9ucyBvZiAzOTAgcHVsc2FycyByZWNvcmRlZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgNDQgcGVyIGNlbnQgb2YgdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5IGFzIHJlcG9ydGVkIGluIHRoaXMgcGFwZXIpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTYgKEJlc3QtZml0dGluZyB0ZW1wbzIgdGltaW5nIHBhcmFtZXRlcnMgZm9yIGZvdXIgbmV3bHkgZGlzY292ZXJlZCBiaW5hcnkgcHVsc2Fycyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlNCAoQmVzdC1maXR0aW5nIFRFTVBPMiB0aW1pbmcgcGFyYW1ldGVycyBmb3IgMjggcHVsc2Fycyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlMyAoRGlzY292ZXJ5IHBhcmFtZXRlcnMgb2YgdGhlIHNldmVuIG5ld2x5IGRpc2NvdmVyZWQgcHVsc2FycyBmb3Igd2hpY2ggZnVsbCB0aW1pbmcgc29sdXRpb25zIGFyZSBub3QgeWV0IGF2YWlsYWJsZSk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlMiAoNDAgbmV3bHkgZGlzY292ZXJlZCBwdWxzYXJzIGZyb20gdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5KTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGVhMiAoUHVsc2FycyB3aXRoIFMvTl9leHBfPlMvTl9taW5fPTkgd2hpY2ggd2VyZSBub3QgZGV0ZWN0ZWQgaW4gdGhlIH40NCBwZXIgY2VudCBvZiB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkgcHJvY2Vzc2VkIGJ5IHRoZSBwYXJ0aWFsbHkgY29oZXJlbnQgc2VnbWVudGVkIGFjY2VsZXJhdGlvbiBzZWFyY2ggcGlwZWxpbmUgZm9yIHRoaXMgcGFwZXIpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZWExICg3NTUgcmVkZXRlY3Rpb25zIG9mIDM5MCBwdWxzYXJzIHJlY29yZGVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHRoZSA0NCBwZXIgY2VudCBvZiB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkgYXMgcmVwb3J0ZWQgaW4gdGhpcyBwYXBlcik6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlNiAoQmVzdC1maXR0aW5nIHRlbXBvMiB0aW1pbmcgcGFyYW1ldGVycyBmb3IgZm91ciBuZXdseSBkaXNjb3ZlcmVkIGJpbmFyeSBwdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGU0IChCZXN0LWZpdHRpbmcgVEVNUE8yIHRpbWluZyBwYXJhbWV0ZXJzIGZvciAyOCBwdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGUzIChEaXNjb3ZlcnkgcGFyYW1ldGVycyBvZiB0aGUgc2V2ZW4gbmV3bHkgZGlzY292ZXJlZCBwdWxzYXJzIGZvciB3aGljaCBmdWxsIHRpbWluZyBzb2x1dGlvbnMgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGUyICg0MCBuZXdseSBkaXNjb3ZlcmVkIHB1bHNhcnMgZnJvbSB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZWEyIChQdWxzYXJzIHdpdGggUy9OX2V4cF8+Uy9OX21pbl89OSB3aGljaCB3ZXJlIG5vdCBkZXRlY3RlZCBpbiB0aGUgfjQ0IHBlciBjZW50IG9mIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSBwcm9jZXNzZWQgYnkgdGhlIHBhcnRpYWxseSBjb2hlcmVudCBzZWdtZW50ZWQgYWNjZWxlcmF0aW9uIHNlYXJjaCBwaXBlbGluZSBmb3IgdGhpcyBwYXBlcik6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlYTEgKDc1NSByZWRldGVjdGlvbnMgb2YgMzkwIHB1bHNhcnMgcmVjb3JkZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgdGhlIDQ0IHBlciBjZW50IG9mIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSBhcyByZXBvcnRlZCBpbiB0aGlzIHBhcGVyKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGU2IChCZXN0LWZpdHRpbmcgdGVtcG8yIHRpbWluZyBwYXJhbWV0ZXJzIGZvciBmb3VyIG5ld2x5IGRpc2NvdmVyZWQgYmluYXJ5IHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTQgKEJlc3QtZml0dGluZyBURU1QTzIgdGltaW5nIHBhcmFtZXRlcnMgZm9yIDI4IHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTMgKERpc2NvdmVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXZlbiBuZXdseSBkaXNjb3ZlcmVkIHB1bHNhcnMgZm9yIHdoaWNoIGZ1bGwgdGltaW5nIHNvbHV0aW9ucyBhcmUgbm90IHlldCBhdmFpbGFibGUpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTIgKDQwIG5ld2x5IGRpc2NvdmVyZWQgcHVsc2FycyBmcm9tIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlYTIgKFB1bHNhcnMgd2l0aCBTL05fZXhwXz5TL05fbWluXz05IHdoaWNoIHdlcmUgbm90IGRldGVjdGVkIGluIHRoZSB+NDQgcGVyIGNlbnQgb2YgdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5IHByb2Nlc3NlZCBieSB0aGUgcGFydGlhbGx5IGNvaGVyZW50IHNlZ21lbnRlZCBhY2NlbGVyYXRpb24gc2VhcmNoIHBpcGVsaW5lIGZvciB0aGlzIHBhcGVyKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGVhMSAoNzU1IHJlZGV0ZWN0aW9ucyBvZiAzOTAgcHVsc2FycyByZWNvcmRlZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgNDQgcGVyIGNlbnQgb2YgdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5IGFzIHJlcG9ydGVkIGluIHRoaXMgcGFwZXIpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTYgKEJlc3QtZml0dGluZyB0ZW1wbzIgdGltaW5nIHBhcmFtZXRlcnMgZm9yIGZvdXIgbmV3bHkgZGlzY292ZXJlZCBiaW5hcnkgcHVsc2Fycyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlNCAoQmVzdC1maXR0aW5nIFRFTVBPMiB0aW1pbmcgcGFyYW1ldGVycyBmb3IgMjggcHVsc2Fycyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlMyAoRGlzY292ZXJ5IHBhcmFtZXRlcnMgb2YgdGhlIHNldmVuIG5ld2x5IGRpc2NvdmVyZWQgcHVsc2FycyBmb3Igd2hpY2ggZnVsbCB0aW1pbmcgc29sdXRpb25zIGFyZSBub3QgeWV0IGF2YWlsYWJsZSk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlMiAoNDAgbmV3bHkgZGlzY292ZXJlZCBwdWxzYXJzIGZyb20gdGhlIEhUUlUtUyBMb3dMYXQgc3VydmV5KTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGVhMiAoUHVsc2FycyB3aXRoIFMvTl9leHBfPlMvTl9taW5fPTkgd2hpY2ggd2VyZSBub3QgZGV0ZWN0ZWQgaW4gdGhlIH40NCBwZXIgY2VudCBvZiB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkgcHJvY2Vzc2VkIGJ5IHRoZSBwYXJ0aWFsbHkgY29oZXJlbnQgc2VnbWVudGVkIGFjY2VsZXJhdGlvbiBzZWFyY2ggcGlwZWxpbmUgZm9yIHRoaXMgcGFwZXIpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZWExICg3NTUgcmVkZXRlY3Rpb25zIG9mIDM5MCBwdWxzYXJzIHJlY29yZGVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHRoZSA0NCBwZXIgY2VudCBvZiB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkgYXMgcmVwb3J0ZWQgaW4gdGhpcyBwYXBlcik6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlNiAoQmVzdC1maXR0aW5nIHRlbXBvMiB0aW1pbmcgcGFyYW1ldGVycyBmb3IgZm91ciBuZXdseSBkaXNjb3ZlcmVkIGJpbmFyeSBwdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGU0IChCZXN0LWZpdHRpbmcgVEVNUE8yIHRpbWluZyBwYXJhbWV0ZXJzIGZvciAyOCBwdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGUzIChEaXNjb3ZlcnkgcGFyYW1ldGVycyBvZiB0aGUgc2V2ZW4gbmV3bHkgZGlzY292ZXJlZCBwdWxzYXJzIGZvciB3aGljaCBmdWxsIHRpbWluZyBzb2x1dGlvbnMgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGUyICg0MCBuZXdseSBkaXNjb3ZlcmVkIHB1bHNhcnMgZnJvbSB0aGUgSFRSVS1TIExvd0xhdCBzdXJ2ZXkpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZWEyIChQdWxzYXJzIHdpdGggUy9OX2V4cF8+Uy9OX21pbl89OSB3aGljaCB3ZXJlIG5vdCBkZXRlY3RlZCBpbiB0aGUgfjQ0IHBlciBjZW50IG9mIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSBwcm9jZXNzZWQgYnkgdGhlIHBhcnRpYWxseSBjb2hlcmVudCBzZWdtZW50ZWQgYWNjZWxlcmF0aW9uIHNlYXJjaCBwaXBlbGluZSBmb3IgdGhpcyBwYXBlcik6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL01OUkFTLzQ5My8xMDYzL3RhYmxlYTEgKDc1NSByZWRldGVjdGlvbnMgb2YgMzkwIHB1bHNhcnMgcmVjb3JkZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgdGhlIDQ0IHBlciBjZW50IG9mIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSBhcyByZXBvcnRlZCBpbiB0aGlzIHBhcGVyKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNDkzLzEwNjMvdGFibGU2IChCZXN0LWZpdHRpbmcgdGVtcG8yIHRpbWluZyBwYXJhbWV0ZXJzIGZvciBmb3VyIG5ld2x5IGRpc2NvdmVyZWQgYmluYXJ5IHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTQgKEJlc3QtZml0dGluZyBURU1QTzIgdGltaW5nIHBhcmFtZXRlcnMgZm9yIDI4IHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTMgKERpc2NvdmVyeSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXZlbiBuZXdseSBkaXNjb3ZlcmVkIHB1bHNhcnMgZm9yIHdoaWNoIGZ1bGwgdGltaW5nIHNvbHV0aW9ucyBhcmUgbm90IHlldCBhdmFpbGFibGUpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy80OTMvMTA2My90YWJsZTIgKDQwIG5ld2x5IGRpc2NvdmVyZWQgcHVsc2FycyBmcm9tIHRoZSBIVFJVLVMgTG93TGF0IHN1cnZleSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAIWl2bzovL2Nkcy52aXppZXIvai9tbnJhcy81MDEvMTExNgAAABF2czpjYXRhbG9nc2VydmljZQAAABBKL01OUkFTLzUwMS8xMTE2AAAAIwBHAEEASQBBACAAcAB1AGwAcwBhAHIAcwAgAGEAbgBkACAAdwBoAGUAcgBlACAAdABvACAAZgBpAG4AZAAgAHQAaABlAG0AAAAIcmVzZWFyY2gAAAZjAFcAaABpAGwAZQAgAHQAaABlACAAbQBhAGoAbwByAGkAdAB5ACAAbwBmACAAbQBhAHMAcwBpAHYAZQAgAHMAdABhAHIAcwAgAGgAYQB2AGUAIABhACAAcwB0AGUAbABsAGEAcgAgAGMAbwBtAHAAYQBuAGkAbwBuACwAIABtAG8AcwB0ACAAcAB1AGwAcwBhAHIAcwAgAGEAcABwAGUAYQByACAAdABvACAAYgBlACAAaQBzAG8AbABhAHQAZQBkAC4AIABUAGEAawBlAG4AIABhAHQAIABmAGEAYwBlACAAdgBhAGwAdQBlACwAIAB0AGgAaQBzACAAcwB1AGcAZwBlAHMAdABzACAAdABoAGEAdAAgAG0AbwBzAHQAIABtAGEAcwBzAGkAdgBlACAAYgBpAG4AYQByAGkAZQBzACAAYgByAGUAYQBrACAAYQBwAGEAcgB0ACAAZAB1AGUAIAB0AG8AIABzAHQAcgBvAG4AZwAgAG4AYQB0AGEAbAAgAGsAaQBjAGsAcwAgAHIAZQBjAGUAaQB2AGUAZAAgAGkAbgAgAHMAdQBwAGUAcgBuAG8AdgBhACAAZQB4AHAAbABvAHMAaQBvAG4AcwAuACAASABvAHcAZQB2AGUAcgAsACAAdABoAGUAIABvAGIAcwBlAHIAdgBlAGQAIABiAGkAbgBhAHIAeQAgAGYAcgBhAGMAdABpAG8AbgAgAGMAYQBuACAAcwB0AGkAbABsACAAYgBlACAAcwB1AGIAagBlAGMAdAAgAHQAbwAgAHMAdAByAG8AbgBnACAAcwBlAGwAZQBjAHQAaQBvAG4AIABlAGYAZgBlAGMAdABzACwAIABhAHMAIABtAG8AbgBpAHQAbwByAGkAbgBnACAAbwBmACAAbgBlAHcAbAB5ACAAZABpAHMAYwBvAHYAZQByAGUAZAAgAHAAdQBsAHMAYQByAHMAIABpAHMAIAByAGEAcgBlAGwAeQAgAGMAYQByAHIAaQBlAGQAIABvAHUAdAAgAGYAbwByACAAbABvAG4AZwAgAGUAbgBvAHUAZwBoACAAdABvACAAYwBvAG4AYwBsAHUAcwBpAHYAZQBsAHkAIAByAHUAbABlACAAbwB1AHQAIABtAHUAbAB0AGkAcABsAGkAYwBpAHQAeQAuACAASABlAHIAZQAsACAAdwBlACAAdQBzAGUAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAARwBhAGkAYQAgAGQAYQB0AGEAIAByAGUAbABlAGEAcwBlACAAdABvACAAcwBlAGEAcgBjAGgAIABmAG8AcgAgAGMAbwBtAHAAYQBuAGkAbwBuAHMAIAB0AG8AIAAxADUAMwA0ACAAcgBvAHQAYQB0AGkAbwBuAC0AcABvAHcAZQByAGUAZAAgAHAAdQBsAHMAYQByAHMAIAB3AGkAdABoACAAcABvAHMAaQB0AGkAbwBuAHMAIABrAG4AbwB3AG4AIAB0AG8AIABiAGUAdAB0AGUAcgAgAHQAaABhAG4AIAAwAC4ANQBhAHIAYwBzAGUAYwAuACAAVwBlACAAZgBpAG4AZAAgADIAMgAgAG0AYQB0AGMAaABlAHMAIAB0AG8AIABrAG4AbwB3AG4AIABwAHUAbABzAGEAcgBzACwAIABpAG4AYwBsAHUAZABpAG4AZwAgADEAIABuAG8AdAAgAHIAZQBwAG8AcgB0AGUAZAAgAGUAbABzAGUAdwBoAGUAcgBlACwAIABhAG4AZAAgADgAIABuAGUAdwAgAHAAbwBzAHMAaQBiAGwAZQAgAGMAbwBtAHAAYQBuAGkAbwBuAHMAIAB0AG8AIAB5AG8AdQBuAGcAIABwAHUAbABzAGEAcgBzAC4AIABXAGUAIABlAHgAYQBtAGkAbgBlACAAdABoAGUAIABwAGgAbwB0AG8AbQBlAHQAcgBpAGMAIABhAG4AZAAgAGsAaQBuAGUAbQBhAHQAaQBjACAAcAByAG8AcABlAHIAdABpAGUAcwAgAG8AZgAgAHQAaABlAHMAZQAgAHMAeQBzAHQAZQBtAHMAIABhAG4AZAAgAHAAcgBvAHYAaQBkAGUAIABlAG0AcABpAHIAaQBjAGEAbAAgAHIAZQBsAGEAdABpAG8AbgBzACAAZgBvAHIAIABpAGQAZQBuAHQAaQBmAHkAaQBuAGcAIABHAGEAaQBhACAAcwBvAHUAcgBjAGUAcwAgAHcAaQB0AGgAIABwAG8AdABlAG4AdABpAGEAbAAgAG0AaQBsAGwAaQBzAGUAYwBvAG4AZAAgAHAAdQBsAHMAYQByACAAYwBvAG0AcABhAG4AaQBvAG4AcwAuACAATwB1AHIAIAByAGUAcwB1AGwAdABzACAAYwBvAG4AZgBpAHIAbQAgAHQAaABhAHQAIAB0AGgAZQAgAG8AYgBzAGUAcgB2AGUAZAAgAG0AdQBsAHQAaQBwAGwAaQBjAGkAdAB5ACAAZgByAGEAYwB0AGkAbwBuACAAaQBzACAAcwBtAGEAbABsAC4AIABIAG8AdwBlAHYAZQByACwAIAB3AGUAIABzAGgAbwB3ACAAdABoAGEAdAAgAHQAaABlACAAbgB1AG0AYgBlAHIAIABvAGYAIABiAGkAbgBhAHIAaQBlAHMAIABiAGUAbABvAHcAIAB0AGgAZQAgAHMAZQBuAHMAaQB0AGkAdgBpAHQAeQAgAG8AZgAgAEcAYQBpAGEAIABhAG4AZAAgAHIAYQBkAGkAbwAgAHQAaQBtAGkAbgBnACAAaQBuACAAbwB1AHIAIABzAGEAbQBwAGwAZQAgAGMAbwB1AGwAZAAgAHMAdABpAGwAbAAgAGIAZQAgAHMAaQBnAG4AaQBmAGkAYwBhAG4AdABsAHkAIABoAGkAZwBoAGUAcgAuACAAVwBlACAAYwBvAG4AcwB0AHIAYQBpAG4AIAB0AGgAZQAgAGIAaQBuAGEAcgB5ACAAZgByAGEAYwB0AGkAbwBuACAAbwBmACAAeQBvAHUAbgBnACAAcAB1AGwAcwBhAHIAcwAgAHQAbwAgAGIAZQAgAGYAXgB0AHIAdQBlAF4AXwB5AG8AdQBuAGcAXwA8ADUALgAzACgAOAAuADMAKQAgAHAAZQByACAAYwBlAG4AdAAgAHUAbgBkAGUAcgAgAHIAZQBhAGwAaQBzAHQAaQBjACAAKABjAG8AbgBzAGUAcgB2AGEAdABpAHYAZQApACAAYQBzAHMAdQBtAHAAdABpAG8AbgBzACAAZgBvAHIAIAB0AGgAZQAgAGIAaQBuAGEAcgB5ACAAcAByAG8AcABlAHIAdABpAGUAcwAgAGEAbgBkACAAYwB1AHIAcgBlAG4AdAAgAHMAZQBuAHMAaQB0AGkAdgBpAHQAeQAgAHQAaAByAGUAcwBoAG8AbABkAHMALgAgAEYAbwByACAAbQBhAHMAcwBpAHYAZQAgAHMAdABhAHIAcwAgACgAPgAxADAATQBfAHsAcwB1AG4AfQBfACkAIABpAG4AIABwAGEAcgB0AGkAYwB1AGwAYQByACwAIAB3AGUAIABmAGkAbgBkACAAZgBeAHQAcgB1AGUAXgBfAE8AQgBfADwAMwAuADcAIABwAGUAcgAgAGMAZQBuAHQALAAgAHcAaABpAGMAaAAgAHMAZQB0AHMAIABhACAAZgBpAHIAbQAgAGkAbgBkAGUAcABlAG4AZABlAG4AdAAgAHUAcABwAGUAcgAgAGwAaQBtAGkAdAAgAG8AbgAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAbgBlAHUAdAByAG8AbgAgAHMAdABhAHIAIABtAGUAcgBnAGUAcgAgAHIAYQB0AGUALAAgADwAPQA3AC4AMgB4ADEAMABeAC0ANABeAC8AeQByAC4AIABPAG4AZwBvAGkAbgBnACAAYQBuAGQAIABmAHUAdAB1AHIAZQAgAHAAcgBvAGoAZQBjAHQAcwAsACAAcwB1AGMAaAAgAGEAcwAgAHQAaABlACAAQwBIAEkATQBFAC8AcAB1AGwAcwBhAHIAIABwAHIAbwBnAHIAYQBtACwAIABNAGUAZQByAFQAaQBtAGUALAAgAEgASQBSAEEAWAAsACAAYQBuAGQAIAB1AGwAdABpAG0AYQB0AGUAbAB5ACAAdABoAGUAIABTAEsAQQAsACAAdwBpAGwAbAAgAHMAaQBnAG4AaQBmAGkAYwBhAG4AdABsAHkAIABpAG0AcAByAG8AdgBlACAAdABoAGUAcwBlACAAYwBvAG4AcwB0AHIAYQBpAG4AdABzACAAaQBuACAAdABoAGUAIABmAHUAdAB1AHIAZQAuAAAAOmh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovTU5SQVMvNTAxLzExMTYAAAANAEEAbgB0AG8AbgBpAGEAZABpAHMAIABKAC4AAAATMjAyMS0wMS0xM1QwNzoxMzoxMAAAABMyMDIxLTEwLTIxVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADEATQBOAFIAQQBTAC4ANQAwADEALgAxADEAMQA2AEF/wAAAAAAABXJhZGlvAAACa2h0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNTAxLzExMTYvY2F0YWxvZz86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNTAxLzExMTY6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzUwMS8xMTE2Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9NTlJBUy81MDEvMTExNi9jYXRhbG9nPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9NTlJBUy81MDEvMTExNjo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovTU5SQVMvNTAxLzExMTYAAADXaXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAADLdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXIAAAB1c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAABS0NvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovTU5SQVMvNTAxLzExMTYvY2F0YWxvZyAoQ2F0YWxvZ3VlIG9mIHNvdXJjZXMgd2l0aGluIDIwIGFyY3NlYyBvZiBBVE5GIHB1bHNhcnMpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy81MDEvMTExNi9jYXRhbG9nIChDYXRhbG9ndWUgb2Ygc291cmNlcyB3aXRoaW4gMjAgYXJjc2VjIG9mIEFUTkYgcHVsc2Fycyk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAIWl2bzovL2Nkcy52aXppZXIvai9tbnJhcy81MjcvNTE4MwAAABF2czpjYXRhbG9nc2VydmljZQAAABBKL01OUkFTLzUyNy81MTgzAAAAKgBHAGEAbABhAGMAdABpAGMAIABkAGkAcwB0AHIAaQBiAHUAdABpAG8AbgAgAG8AZgAgAHAAdQBsAHMAYQByACAAcwBjAGEAdAB0AGUAcgBpAG4AZwAAAAhyZXNlYXJjaAAABJUASQBuAHQAZQByAHMAdABlAGwAbABhAHIAIAByAGEAZABpAG8ALQB3AGEAdgBlACAAcwBjAGEAdAB0AGUAcgBpAG4AZwAgAGwAZQBhAGQAcwAgAHQAbwAgAGYAbAB1AHgAIABkAGUAbgBzAGkAdAB5ACAAZgBsAHUAYwB0AHUAYQB0AGkAbwBuAHMAIABhAG4AZAAgAHAAdQBsAHMAZQAgAGIAcgBvAGEAZABlAG4AaQBuAGcAIABvAGYAIABwAHUAbABzAGEAcgAgAHMAaQBnAG4AYQBsAHMALgAgAEgAbwB3AGUAdgBlAHIALAAgAEcAYQBsAGEAYwB0AGkAYwAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACAAYQBuAGQAIAB0AGgAZQAgAHMAdAByAHUAYwB0AHUAcgBlACAAbwBmACAAdABoAGUAIABzAGMAYQB0AHQAZQByAGkAbgBnACAAbQBlAGQAaQB1AG0AIABhAHIAZQAgAHMAdABpAGwAbAAgAHAAbwBvAHIAbAB5ACAAdQBuAGQAZQByAHMAdABvAG8AZAAuACAAUAB1AGwAcwBhAHIAIABwAHUAbABzAGUAIABiAHIAbwBhAGQAZQBuAGkAbgBnACAAZABhAHQAYQAgAGEAdgBhAGkAbABhAGIAbABlACAAZgBvAHIAIABhACAAcgBlAGwAYQB0AGkAdgBlAGwAeQAgAGwAYQByAGcAZQAgAG4AdQBtAGIAZQByACAAbwBmACAAcAB1AGwAcwBhAHIAcwAgAGkAcwAgAHcAZQBsAGwALQBzAHUAaQB0AGUAZAAgAGYAbwByACAAcwB1AGMAaAAgAGkAbgB2AGUAcwB0AGkAZwBhAHQAaQBvAG4AcwAuACAAVwBlACAAYwBvAGwAbABlAGMAdABlAGQAIABhAG4AIAB1AHAALQB0AG8ALQBkAGEAdABlACAAcwBhAG0AcABsAGUAIABvAGYAIABwAHUAYgBsAGkAYwBsAHkALQBhAHYAYQBpAGwAYQBiAGwAZQAgAHAAdQBsAHMAYQByACAAcwBjAGEAdAB0AGUAcgBpAG4AZwAgAGQAYQB0AGEAIABhAG4AZAAgAGkAbgB0AHIAbwBkAHUAYwBlAGQAIABhACAAbgBlAHcAIABxAHUAYQBuAHQAaQB0AHkAIAAtACAAdABoAGUAIAByAGUAZAB1AGMAZQBkACAAcwBjAGEAdAB0AGUAcgBpAG4AZwAgAHMAdAByAGUAbgBnAHQAaAAgAHQAbwAgAHMAdAB1AGQAeQAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAZABpAHMAdAByAGkAYgB1AHQAaQBvAG4AIABvAGYAIABwAHUAbABzAGEAcgAgAHMAYwBhAHQAdABlAHIAaQBuAGcAIABpAG4AIAB0AGgAZQAgAE0AaQBsAGsAeQAgAFcAYQB5AC4AIABXAGUAIABzAGgAbwB3ACAAdABoAGEAdAAgAHQAaABlACAAYwB1AHIAcgBlAG4AdAAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBzACAAYQByAGUAIABkAG8AbQBpAG4AYQB0AGUAZAAgAGIAeQAgAHQAdwBvACAAZABpAHMAdABpAG4AYwB0ACAAcAB1AGwAcwBhAHIAIABwAG8AcAB1AGwAYQB0AGkAbwBuAHMAOgAgAGEAIABsAG8AYwBhAGwAIABhAG4AZAAgAGEAbgAgAGkAbgBuAGUAcgAtAEcAYQBsAGEAYwB0AGkAYwAgAG8AbgBlACAAcwBlAHAAYQByAGEAdABlAGQAIABiAHkAIAB7AHQAaQBsAGQAZQB9AHsAdABhAHUAfQA9ADEAMABeAC0ANQAuADEAXgBzAC4AYwBtAF4ANgBeAC8AcABjAC4AIABUAGgAZQAgAHMAdAByAG8AbgBnAGUAcgAgAGUAbABlAGMAdAByAG8AbgAgAGQAZQBuAHMAaQB0AHkAIABmAGwAdQBjAHQAdQBhAHQAaQBvAG4AcwAgAGEAcwBzAG8AYwBpAGEAdABlAGQAIAB3AGkAdABoACAAdABoAGUAIABpAG4AbgBlAHIALQBHAGEAbABhAGMAdABpAGMAIABwAG8AcAB1AGwAYQB0AGkAbwBuACAAbgBhAHQAdQByAGEAbABsAHkAIABlAHgAcABsAGEAaQBuACAAdABoAGUAIABvAGIAcwBlAHIAdgBlAGQAIABzAHQAZQBlAHAAZQBuAGkAbgBnACAAbwBmACAAcAB1AGwAcwBhAHIAIABzAGMAYQB0AHQAZQByAGkAbgBnACAAdABpAG0AZQAgAC0AIABkAGkAcwBwAGUAcgBzAGkAbwBuACAAbQBlAGEAcwB1AHIAZQAgACgARABNACkAIAByAGUAbABhAHQAaQBvAG4ALgAgAFcAZQAgAG0AZQBhAHMAdQByAGUAIABhAG4AIABpAG4AbgBlAHIAIABkAGkAcwBrACAAcgBlAGcAaQBvAG4AIAB3AGkAdABoACAAMwBrAHAAYwA8AHIAPAA1AC4ANQBrAHAAYwAgAGYAcgBvAG0AIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAGMAZQBuAHQAZQByACAAdABvACAAaABhAHYAZQAgAGEAIABzAGMAYQB0AHQAZQByAGkAbgBnACAAcwBjAGEAbABlACAAaABlAGkAZwBoAHQAIABvAGYAIABhAGIAbwB1AHQAIAAwAC4AMgA4AGsAcABjACwAIABzAHUAcABwAG8AcgB0AGkAbgBnACAAYQAgAGMAbwByAHIAZQBsAGEAdABpAG8AbgAgAGIAZQB0AHcAZQBlAG4AIABpAG4AdABlAHIAcwB0AGUAbABsAGEAcgAgAHIAYQBkAGkAbwAgAHMAYwBhAHQAdABlAHIAaQBuAGcAIABhAG4AZAAgAHMAdAByAHUAYwB0AHUAcgBlAHMAIABhAHMAcwBvAGMAaQBhAHQAaQBuAGcAIAB3AGkAdABoACAAdABoAGUAIABpAG8AbgBpAHoAZQBkACAAZwBhAHMAIABhAG4AZAAgAHMAdABlAGwAbABhAHIAIABhAGMAdABpAHYAaQB0AGkAZQBzAC4AAAA6aHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvSi9NTlJBUy81MjcvNTE4MwAAAA8ASABlACAAUQAuAFkALgA7ACAAUwBoAGkAIABYAC4AAAATMjAyMy0xMi0wN1QxMTozOTo1NgAAABMyMDIzLTEyLTA3VDEwOjQwOjQzAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADIAMAAyADQATQBOAFIAQQBTAC4ANQAyADcALgA1ADEAOAAzAEh/wAAAAAAABXJhZGlvAAABLmh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovTU5SQVMvNTI3LzUxODMvdGFibGViMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovTU5SQVMvNTI3LzUxODM6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL01OUkFTLzUyNy81MTgzAAAAZGl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAABednM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAADNzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAACRQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9NTlJBUy81MjcvNTE4My90YWJsZWIxIChQdWxzYXIgc2NhdHRlcmluZyBkYXRhIGFuZCB0aGVpciBzb3VyY2VzKTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAAAAAAAjaXZvOi8vY2RzLnZpemllci9qL290aGVyL3JhYS8yMS4xMDcAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAQSi9vdGhlci9SQUEvMjEuMQAAABUATgBlAHcAIABwAHUAbABzAGEAcgBzACAAZgByAG8AbQAgAEcARwBQAFMAAAAIcmVzZWFyY2gAAAaoAEQAaQBzAGMAbwB2AGUAcgB5ACAAbwBmACAAcAB1AGwAcwBhAHIAcwAgAGkAcwAgAG8AbgBlACAAbwBmACAAdABoAGUAIABtAGEAaQBuACAAZwBvAGEAbABzACAAZgBvAHIAIABsAGEAcgBnAGUAIAByAGEAZABpAG8AIAB0AGUAbABlAHMAYwBvAHAAZQBzAC4AIABUAGgAZQAgAEYAaQB2AGUALQBoAHUAbgBkAHIAZQBkAC0AbQBlAHQAZQByACAAQQBwAGUAcgB0AHUAcgBlACAAUwBwAGgAZQByAGkAYwBhAGwAIAByAGEAZABpAG8AIABUAGUAbABlAHMAYwBvAHAAZQAgACgARgBBAFMAVAApACwAIAB0AGgAYQB0ACAAaQBuAGMAbwByAHAAbwByAGEAdABlAHMAIABhAG4AIABMAC0AYgBhAG4AZAAgADEAOQAtAGIAZQBhAG0AIAByAGUAYwBlAGkAdgBlAHIAIAB3AGkAdABoACAAYQAgAHMAeQBzAHQAZQBtACAAdABlAG0AcABlAHIAYQB0AHUAcgBlACAAbwBmACAAYQBiAG8AdQB0ACAAMgAwACAASwAsACAAaQBzACAAdABoAGUAIABtAG8AcwB0ACAAcwBlAG4AcwBpAHQAaQB2AGUAIAByAGEAZABpAG8AIAB0AGUAbABlAHMAYwBvAHAAZQAgAHUAdABpAGwAaQB6AGUAZAAgAGYAbwByACAAZABpAHMAYwBvAHYAZQByAGkAbgBnACAAcAB1AGwAcwBhAHIAcwAuACAAVwBlACAAZABlAHMAaQBnAG4AZQBkACAAdABoAGUAIABzAG4AYQBwAHMAaABvAHQAIABvAGIAcwBlAHIAdgBhAHQAaQBvAG4AIABtAG8AZABlACAAZgBvAHIAIABhACAARgBBAFMAVAAgAGsAZQB5ACAAcwBjAGkAZQBuAGMAZQAgAHAAcgBvAGoAZQBjAHQALAAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAUABsAGEAbgBlACAAUAB1AGwAcwBhAHIAIABTAG4AYQBwAHMAaABvAHQAIAAoAEcAUABQAFMAKQAgAHMAdQByAHYAZQB5ACwAIABpAG4AIAB3AGgAaQBjAGgAIABlAHYAZQByAHkAIABmAG8AdQByACAAbgBlAGEAcgBiAHkAIABwAG8AaQBuAHQAaQBuAGcAcwAgAGMAYQBuACAAbwBiAHMAZQByAHYAZQAgAGEAIABjAG8AdgBlAHIAIABvAGYAIABhACAAcwBrAHkAIABwAGEAdABjAGgAIABvAGYAIAAwAC4AMQA1ADcANQAgAHMAcQB1AGEAcgBlACAAZABlAGcAcgBlAGUAcwAgAHQAaAByAG8AdQBnAGgAIABiAGUAYQBtAC0AcwB3AGkAdABjAGgAaQBuAGcAIABvAGYAIAB0AGgAZQAgAEwALQBiAGEAbgBkACAAMQA5AC0AYgBlAGEAbQAgAHIAZQBjAGUAaQB2AGUAcgAuACAAVABoAGUAIABpAG4AdABlAGcAcgBhAHQAaQBvAG4AIAB0AGkAbQBlACAAZgBvAHIAIABlAGEAYwBoACAAcABvAGkAbgB0AGkAbgBnACAAaQBzACAAMwAwADAAIABzAGUAYwBvAG4AZABzACAAcwBvACAAdABoAGEAdAAgAHQAaABlACAARwBQAFAAUwAgAG8AYgBzAGUAcgB2AGEAdABpAG8AbgBzACAAZgBvAHIAIABhACAAYwBvAHYAZQByACAAYwBhAG4AIABiAGUAIABtAGEAZABlACAAaQBuACAAMgAxACAAbQBpAG4AdQB0AGUAcwAuACAAVABoAGUAIABnAG8AYQBsACAAbwBmACAAdABoAGUAIABHAFAAUABTACAAcwB1AHIAdgBlAHkAIABpAHMAIAB0AG8AIABkAGkAcwBjAG8AdgBlAHIAIABwAHUAbABzAGEAcgBzACAAdwBpAHQAaABpAG4AIAB0AGgAZQAgAEcAYQBsAGEAYwB0AGkAYwAgAGwAYQB0AGkAdAB1AGQAZQAgAG8AZgAgACsALwAtADEAMAB7AGQAZQBnAH0AIABmAHIAbwBtACAAdABoAGUAIABHAGEAbABhAGMAdABpAGMAIABwAGwAYQBuAGUALAAgAGEAbgBkACAAdABoAGUAIABoAGkAZwBoAGUAcwB0ACAAcAByAGkAbwByAGkAdAB5ACAAaQBzACAAZwBpAHYAZQBuACAAdABvACAAdABoAGUAIABpAG4AbgBlAHIAIABHAGEAbABhAHgAeQAgAHcAaQB0AGgAaQBuACAAKwAvAC0ANQB7AGQAZQBnAH0ALgAgAFUAcAAgAHQAbwAgAG4AbwB3ACwAIAB0AGgAZQAgAEcAUABQAFMAIABzAHUAcgB2AGUAeQAgAGgAYQBzACAAZABpAHMAYwBvAHYAZQByAGUAZAAgADIAMAAxACAAcAB1AGwAcwBhAHIAcwAsACAAaQBuAGMAbAB1AGQAaQBuAGcAIABjAHUAcgByAGUAbgB0AGwAeQAgAHQAaABlACAAZgBhAGkAbgB0AGUAcwB0ACAAcAB1AGwAcwBhAHIAcwAgAHcAaABpAGMAaAAgAGMAYQBuAG4AbwB0ACAAYgBlACAAZABlAHQAZQBjAHQAZQBkACAAYgB5ACAAbwB0AGgAZQByACAAdABlAGwAZQBzAGMAbwBwAGUAcwAsACAAcAB1AGwAcwBhAHIAcwAgAHcAaQB0AGgAIABlAHgAdAByAGUAbQBlAGwAeQAgAGgAaQBnAGgAIABkAGkAcwBwAGUAcgBzAGkAbwBuACAAbQBlAGEAcwB1AHIAZQBzACAAKABEAE0AcwApACAAdwBoAGkAYwBoACAAYwBoAGEAbABsAGUAbgBnAGUAIAB0AGgAZQAgAGMAdQByAHIAZQBuAHQAbAB5ACAAdwBpAGQAZQBsAHkAIAB1AHMAZQBkACAAbQBvAGQAZQBsAHMAIABmAG8AcgAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAZQBsAGUAYwB0AHIAbwBuACAAZABlAG4AcwBpAHQAeQAgAGQAaQBzAHQAcgBpAGIAdQB0AGkAbwBuACwAIABwAHUAbABzAGEAcgBzACAAYwBvAGkAbgBjAGkAZABlAG4AdAAgAHcAaQB0AGgAIABzAHUAcABlAHIAbgBvAHYAYQAgAHIAZQBtAG4AYQBuAHQAcwAsACAANAAwACAAbQBpAGwAbABpAHMAZQBjAG8AbgBkACAAcAB1AGwAcwBhAHIAcwAsACAAMQA2ACAAYgBpAG4AYQByAHkAIABwAHUAbABzAGEAcgBzACwAIABzAG8AbQBlACAAbgB1AGwAbABpAG4AZwAgAGEAbgBkACAAbQBvAGQAZQAtAGMAaABhAG4AZwBpAG4AZwAgAHAAdQBsAHMAYQByAHMAIABhAG4AZAAgAHIAbwB0AGEAdABpAG4AZwAgAHIAYQBkAGkAbwAgAHQAcgBhAG4AcwBpAGUAbgB0AHMAIAAoAFIAUgBBAFQAcwApAC4AIABUAGgAZQAgAGYAbwBsAGwAbwB3AC0AdQBwACAAbwBiAHMAZQByAHYAYQB0AGkAbwBuAHMAIABmAG8AcgAgAGMAbwBuAGYAaQByAG0AYQB0AGkAbwBuACAAbwBmACAAbgBlAHcAIABwAHUAbABzAGEAcgBzACAAaABhAHYAZQAgAHAAbwBsAGEAcgBpAHoAYQB0AGkAbwBuAC0AcwBpAGcAbgBhAGwAcwAgAHIAZQBjAG8AcgBkAGUAZAAgAGYAbwByACAAcABvAGwAYQByAGkAegBhAHQAaQBvAG4AIABwAHIAbwBmAGkAbABlAHMAIABvAGYAIAB0AGgAZQAgAHAAdQBsAHMAYQByAHMALgAgAFIAZQAtAGQAZQB0AGUAYwB0AGkAbwBuACAAbwBmACAAcAByAGUAdgBpAG8AdQBzAGwAeQAgAGsAbgBvAHcAbgAgAHAAdQBsAHMAYQByAHMAIABpAG4AIAB0AGgAZQAgAHMAdQByAHYAZQB5ACAAZABhAHQAYQAgAGEAbABzAG8AIABsAGUAYQBkAHMAIAB0AG8AIABzAGkAZwBuAGkAZgBpAGMAYQBuAHQAIABpAG0AcAByAG8AdgBlAG0AZQBuAHQAcwAgAGkAbgAgAHAAYQByAGEAbQBlAHQAZQByAHMAIABmAG8AcgAgADYANAAgAHAAdQBsAHMAYQByAHMALgAgAFQAaABlACAARwBQAFAAUwAgAHMAdQByAHYAZQB5ACAAZABpAHMAYwBvAHYAZQByAGkAZQBzACAAYQByAGUAIABwAHUAYgBsAGkAcwBoAGUAZAAgAGEAbgBkACAAdwBpAGwAbAAgAGIAZQAgAHUAcABkAGEAdABlAGQAIABhAHQAIABoAHQAdABwADoALwAvAHoAbQB0AHQALgBiAGEAbwAuAGEAYwAuAGMAbgAvAEcAUABQAFMALwAuAAAAPGh0dHBzOi8vY2RzYXJjLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY2F0L0ovb3RoZXIvUkFBLzIxLjEwNwAAAXAASABhAG4AIABKAC4ATAAuADsAIABXAGEAbgBnACAAQwAuADsAIABXAGEAbgBnACAAUAAuAEYALgA7ACAAVwBhAG4AZwAgAFQALgA7ACAAWgBoAG8AdQAgAEQALgBKAC4AOwAgAFMAdQBuACAASgAuAC0ASAAuADsAIABZAGEAbgAgAFkALgA7ACAAUwB1ACAAVwAuAC0AUQAuADsAIABKAGkAbgBnACAAVwAuAC0AQwAuADsAIABDAGgAZQBuACAAWAAuADsAIABHAGEAbwAgAFgALgBZAC4AOwAgAEgAbwB1ACAATAAuAC0ARwAuADsAIABYAHUAIABKAC4AOwAgAEwAZQBlACAASwAuAEoALgA7ACAAVwBhAG4AZwAgAE4ALgA7ACAASgBpAGEAbgBnACAAUAAuADsAIABYAHUAIABSAC4ALQBYAC4AOwAgAFkAYQBuACAASgAuADsAIABHAGEAbgAgAEgALgAtAFEALgA7ACAARwB1AGEAbgAgAFgALgA7ACAASAB1AGEAbgBnACAAVwAuAC0ASgAuADsAIABKAGkAYQBuAGcAIABKAC4ALQBDAC4AOwAgAEwAaQAgAEgALgA7ACAATQBlAG4AIABZAC4ALQBQAC4AOwAgAFMAdQBuACAAQwAuADsAIABXAGEAbgBnACAAQgAuAC0ASgAuADsAIABXAGEAbgBnACAASAAuAEcALgA7ACAAVwBhAG4AZwAgAFMALgAtAFEALgA7ACAAWABpAGUAIABKAC4ALQBUAC4AOwAgAFgAdQAgAEgALgA7ACAAWQBhAG8AIABSAC4AOwAgAFkAbwB1ACAAWAAuAC0AUAAuADsAIABZAHUAIABEAC4ASgAuADsAIABZAHUAYQBuACAASgAuAC0AUAAuADsAIABZAHUAZQBuACAAUgAuADsAIABaAGgAYQBuAGcAIABDAC4ALQBGAC4AOwAgAFoAaAB1ACAAWQAuAAAAEzIwMjItMDQtMjBUMDc6MjE6NDkAAAATMjAyMy0wOC0wN1QwODo0OToyNQAAADZodHRwczovL2Nkcy51bmlzdHJhLmZyL3Zpemllci1vcmcvbGljZW5jZXNfdml6aWVyLmh0bWwAAAAHY2F0YWxvZwAAAAdiaWJjb2RlAAAAEwAyADAAMgAxAFIAQQBBAC4ALgAuAC4AMgAxAC4ALgAxADAANwBIf8AAAAAAAAVyYWRpbwAACSVodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGU3Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTU/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGUyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9vdGhlci9SQUEvMjEuMTA3Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9vdGhlci9SQUEvMjEuMTA3Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGU1Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTM/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMj86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPUovb3RoZXIvUkFBLzIxLjEwNzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPUovb3RoZXIvUkFBLzIxLjEwNzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTc/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNT86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGUzPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTI/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1KL290aGVyL1JBQS8yMS4xMDc6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1KL290aGVyL1JBQS8yMS4xMDc6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGU3Pzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL0ovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTU/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMz86OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9KL290aGVyL1JBQS8yMS4xMDcvdGFibGUyPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9Si9vdGhlci9SQUEvMjEuMTA3Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9Si9vdGhlci9SQUEvMjEuMTA3AAADzWl2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAALpdnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3NlcgAAAdFzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6OjpzdGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAoFQ29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNyAoUG9sYXJpemF0aW9uIFBhcmFtZXRlcnMgb2YgRWlnaHQgTmV3bHkgRGlzY292ZXJlZCBQdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTUgKEJpbmFyeSBQdWxzYXJzIERpc2NvdmVyZWQgaW4gdGhlIEdQUFMgU3VydmV5IChTb3J0ZWQgYnkgUHVsc2FyIFBlcmlvZCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMyAoRGlzdGFudCBQdWxzYXJzIHdpdGggRXhjZXNzIERNcyBDaGFsbGVuZ2luZyB0aGUgQ3VycmVudGx5IFdpZGVseSBVc2VkIE1vZGVscyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL290aGVyL1JBQS8yMS4xMDcvdGFibGUyIChBIExpc3Qgb2YgUHVsc2FycyBEaXNjb3ZlcmVkIGJ5IHRoZSBHUFBTIFN1cnZleSAoU2VlIGh0dHA6Ly96bXR0LmJhby5hYy5jbi9HUFBTLyBmb3IgVXBkYXRlcykpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNyAoUG9sYXJpemF0aW9uIFBhcmFtZXRlcnMgb2YgRWlnaHQgTmV3bHkgRGlzY292ZXJlZCBQdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTUgKEJpbmFyeSBQdWxzYXJzIERpc2NvdmVyZWQgaW4gdGhlIEdQUFMgU3VydmV5IChTb3J0ZWQgYnkgUHVsc2FyIFBlcmlvZCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMyAoRGlzdGFudCBQdWxzYXJzIHdpdGggRXhjZXNzIERNcyBDaGFsbGVuZ2luZyB0aGUgQ3VycmVudGx5IFdpZGVseSBVc2VkIE1vZGVscyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL290aGVyL1JBQS8yMS4xMDcvdGFibGUyIChBIExpc3Qgb2YgUHVsc2FycyBEaXNjb3ZlcmVkIGJ5IHRoZSBHUFBTIFN1cnZleSAoU2VlIGh0dHA6Ly96bXR0LmJhby5hYy5jbi9HUFBTLyBmb3IgVXBkYXRlcykpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNyAoUG9sYXJpemF0aW9uIFBhcmFtZXRlcnMgb2YgRWlnaHQgTmV3bHkgRGlzY292ZXJlZCBQdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTUgKEJpbmFyeSBQdWxzYXJzIERpc2NvdmVyZWQgaW4gdGhlIEdQUFMgU3VydmV5IChTb3J0ZWQgYnkgUHVsc2FyIFBlcmlvZCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMyAoRGlzdGFudCBQdWxzYXJzIHdpdGggRXhjZXNzIERNcyBDaGFsbGVuZ2luZyB0aGUgQ3VycmVudGx5IFdpZGVseSBVc2VkIE1vZGVscyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL290aGVyL1JBQS8yMS4xMDcvdGFibGUyIChBIExpc3Qgb2YgUHVsc2FycyBEaXNjb3ZlcmVkIGJ5IHRoZSBHUFBTIFN1cnZleSAoU2VlIGh0dHA6Ly96bXR0LmJhby5hYy5jbi9HUFBTLyBmb3IgVXBkYXRlcykpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlNyAoUG9sYXJpemF0aW9uIFBhcmFtZXRlcnMgb2YgRWlnaHQgTmV3bHkgRGlzY292ZXJlZCBQdWxzYXJzKTo6OnB5IFZPIHNlcDo6OkNvbmUgc2VhcmNoIGNhcGFiaWxpdHkgZm9yIHRhYmxlIEovb3RoZXIvUkFBLzIxLjEwNy90YWJsZTUgKEJpbmFyeSBQdWxzYXJzIERpc2NvdmVyZWQgaW4gdGhlIEdQUFMgU3VydmV5IChTb3J0ZWQgYnkgUHVsc2FyIFBlcmlvZCkpOjo6cHkgVk8gc2VwOjo6Q29uZSBzZWFyY2ggY2FwYWJpbGl0eSBmb3IgdGFibGUgSi9vdGhlci9SQUEvMjEuMTA3L3RhYmxlMyAoRGlzdGFudCBQdWxzYXJzIHdpdGggRXhjZXNzIERNcyBDaGFsbGVuZ2luZyB0aGUgQ3VycmVudGx5IFdpZGVseSBVc2VkIE1vZGVscyk6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBKL290aGVyL1JBQS8yMS4xMDcvdGFibGUyIChBIExpc3Qgb2YgUHVsc2FycyBEaXNjb3ZlcmVkIGJ5IHRoZSBHUFBTIFN1cnZleSAoU2VlIGh0dHA6Ly96bXR0LmJhby5hYy5jbi9HUFBTLyBmb3IgVXBkYXRlcykpOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6AAAAAAAAABhpdm86Ly9jZHMudml6aWVyL3ZpaS8xNTYAAAARdnM6Y2F0YWxvZ3NlcnZpY2UAAAAHVklJLzE1NgAAABYAQwBhAHQAYQBsAG8AZwAgAG8AZgAgADUANQA4ACAAUAB1AGwAcwBhAHIAcwAAAAhyZXNlYXJjaAAAAZ4AVABoAGUAIABjAGEAdABhAGwAbwBnAHUAZQAgAGkAcwAgAGEAbgAgAHUAcAAtAHQAbwAtAGQAYQB0AGUAIABjAG8AbQBwAGkAbABhAHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAHAAcgBpAG4AYwBpAHAAYQBsACAAbwBiAHMAZQByAHYAZQBkACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAG8AZgAgADUANQA4ACAAcAB1AGwAcwBhAHIAcwAsACAAaQBuAGMAbAB1AGQAaQBuAGcAIABwAG8AcwBpAHQAaQBvAG4AcwAsACAAdABpAG0AaQBuAGcAIABwAGEAcgBhAG0AZQB0AGUAcgBzACwAIABwAHUAbABzAGUAIAB3AGkAZAB0AGgAcwAsACAAZgBsAHUAeAAgAGQAZQBuAHMAaQB0AGkAZQBzACwAIABwAHIAbwBwAGUAcgAgAG0AbwB0AGkAbwBuAHMALAAgAGQAaQBzAHQAYQBuAGMAZQBzACwAIABhAG4AZAAgAGQAaQBzAHAAZQByAHMAaQBvAG4ALAAgAHIAbwB0AGEAdABpAG8AbgAsACAAYQBuAGQAIABzAGMAYQB0AHQAZQByAGkAbgBnACAAbQBlAGEAcwB1AHIAZQBzAC4AIABJAHQAIABhAGwAcwBvACAAbABpAHMAdABzACAAdABoAGUAIABvAHIAYgBpAHQAYQBsACAAZQBsAGUAbQBlAG4AdABzACAAbwBmACAAYgBpAG4AYQByAHkAIABwAHUAbABzAGEAcgBzACwAIABhAG4AZAAgAHMAbwBtAGUAIABjAG8AbQBtAG8AbgBsAHkAIAB1AHMAZQBkACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAGQAZQByAGkAdgBlAGQAIABmAHIAbwBtACAAdABoAGUAIABiAGEAcwBpAGMAIABtAGUAYQBzAHUAcgBlAG0AZQBuAHQAcwAuACAAVQBuAGMAZQByAHQAYQBpAG4AdABpAGUAcwAgAGEAcgBlACAAcQB1AG8AdABlAGQAIABmAG8AcgAgAG0AbwBzAHQAIABxAHUAYQBuAHQAaQB0AGkAZQBzAC4AAAAxaHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvVklJLzE1NgAAACcAVABhAHkAbABvAHIAIABKAC4ASAAuADsAIABNAGEAbgBjAGgAZQBzAHQAZQByACAAUgAuAE4ALgA7ACAATAB5AG4AZQAgAEEALgBHAC4AAAATMTk5OS0wMy0wMlQxMDoyMTo1MwAAABMyMDIxLTEwLTIxVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADEAOQA5ADMAQQBwAEoAUwAuAC4ALgA4ADgALgAuADUAMgA5AFR/wAAAAAAABXJhZGlvAAAEdWh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL1ZJSS8xNTYvdGFibGUxPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9VklJLzE1Njo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPVZJSS8xNTY6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9WSUkvMTU2L3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPVZJSS8xNTY6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1WSUkvMTU2Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvVklJLzE1Ni90YWJsZTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1WSUkvMTU2Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9VklJLzE1Njo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL1ZJSS8xNTYvdGFibGUxPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9VklJLzE1Njo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPVZJSS8xNTYAAAG9aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAaV2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAA+XN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAsFDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTU2L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTU2L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTU2L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTU2L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAGGl2bzovL2Nkcy52aXppZXIvdmlpLzE4OQAAABF2czpjYXRhbG9nc2VydmljZQAAAAdWSUkvMTg5AAAAEgBDAGEAdABhAGwAbwBnACAAbwBmACAAUAB1AGwAcwBhAHIAcwAAAAhyZXNlYXJjaAAAAcUAVABoAGUAIABjAGEAdABhAGwAbwBnAHUAZQAgAGkAcwAgAGEAIABjAG8AbQBwAGkAbABhAHQAaQBvAG4AIABvAGYAIAB0AGgAZQAgAHAAcgBpAG4AYwBpAHAAYQBsACAAbwBiAHMAZQByAHYAZQBkACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAG8AZgAgADcAMAA2ACAAcAB1AGwAcwBhAHIAcwAgACgAdQBwAGQAYQB0AGUAZAAgAGYAcgBvAG0AIAA1ADUAOAAgAHAAdQBsAHMAYQByAHMAIABpAG4AIAB0AGgAZQAgAHAAcgBlAHYAaQBvAHUAcwAgAHYAZQByAHMAaQBvAG4AKQAsACAAaQBuAGMAbAB1AGQAaQBuAGcAIABwAG8AcwBpAHQAaQBvAG4AcwAsACAAdABpAG0AaQBuAGcAIABwAGEAcgBhAG0AZQB0AGUAcgBzACwAIABwAHUAbABzAGUAIAB3AGkAZAB0AGgAcwAsACAAZgBsAHUAeAAgAGQAZQBuAHMAaQB0AGkAZQBzACwAIABwAHIAbwBwAGUAcgAgAG0AbwB0AGkAbwBuAHMALAAgAGQAaQBzAHQAYQBuAGMAZQBzACwAIABhAG4AZAAgAGQAaQBzAHAAZQByAHMAaQBvAG4ALAAgAHIAbwB0AGEAdABpAG8AbgAsACAAYQBuAGQAIABzAGMAYQB0AHQAZQByAGkAbgBnACAAbQBlAGEAcwB1AHIAZQBzAC4AIABJAHQAIABhAGwAcwBvACAAbABpAHMAdABzACAAdABoAGUAIABvAHIAYgBpAHQAYQBsACAAZQBsAGUAbQBlAG4AdABzACAAbwBmACAAYgBpAG4AYQByAHkAIABwAHUAbABzAGEAcgBzACwAIABhAG4AZAAgAHMAbwBtAGUAIABjAG8AbQBtAG8AbgBsAHkAIAB1AHMAZQBkACAAcABhAHIAYQBtAGUAdABlAHIAcwAgAGQAZQByAGkAdgBlAGQAIABmAHIAbwBtACAAdABoAGUAIABiAGEAcwBpAGMAIABtAGUAYQBzAHUAcgBlAG0AZQBuAHQAcwAuACAAVQBuAGMAZQByAHQAYQBpAG4AdABpAGUAcwAgAGEAcgBlACAAcQB1AG8AdABlAGQAIABmAG8AcgAgAG0AbwBzAHQAIABxAHUAYQBuAHQAaQB0AGkAZQBzAC4AAAAxaHR0cHM6Ly9jZHNhcmMuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jYXQvVklJLzE4OQAAACcAVABhAHkAbABvAHIAIABKAC4ASAAuADsAIABNAGEAbgBjAGgAZQBzAHQAZQByACAAUgAuAE4ALgA7ACAATAB5AG4AZQAgAEEALgBHAC4AAAATMjAwNC0wOC0wMVQyMjo1NTo0MwAAABMyMDIxLTEwLTIxVDAwOjAwOjAwAAAANmh0dHBzOi8vY2RzLnVuaXN0cmEuZnIvdml6aWVyLW9yZy9saWNlbmNlc192aXppZXIuaHRtbAAAAAdjYXRhbG9nAAAAB2JpYmNvZGUAAAATADEAOQA5ADMAQQBwAEoAUwAuAC4ALgA4ADgALgAuADUAMgA5AFR/wAAAAAAABXJhZGlvAAAEdWh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL1ZJSS8xODkvdGFibGUxPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9VklJLzE4OTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPVZJSS8xODk6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vY29uZXNlYXJjaC9WSUkvMTg5L3RhYmxlMT86OjpweSBWTyBzZXA6OjpodHRwOi8vdGFwdml6aWVyLmNkcy51bmlzdHJhLmZyL1RBUFZpemllUi90YXA6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vdm90YWJsZT8tc291cmNlPVZJSS8xODk6OjpweSBWTyBzZXA6OjpodHRwOi8vdml6aWVyLmNkcy51bmlzdHJhLmZyL3Zpei1iaW4vVml6aWVSLTI/LXNvdXJjZT1WSUkvMTg5Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL2NvbmVzZWFyY2gvVklJLzE4OS90YWJsZTE/Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3RhcHZpemllci5jZHMudW5pc3RyYS5mci9UQVBWaXppZVIvdGFwOjo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL3ZvdGFibGU/LXNvdXJjZT1WSUkvMTg5Ojo6cHkgVk8gc2VwOjo6aHR0cDovL3Zpemllci5jZHMudW5pc3RyYS5mci92aXotYmluL1ZpemllUi0yPy1zb3VyY2U9VklJLzE4OTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9jb25lc2VhcmNoL1ZJSS8xODkvdGFibGUxPzo6OnB5IFZPIHNlcDo6Omh0dHA6Ly90YXB2aXppZXIuY2RzLnVuaXN0cmEuZnIvVEFQVml6aWVSL3RhcDo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi92b3RhYmxlPy1zb3VyY2U9VklJLzE4OTo6OnB5IFZPIHNlcDo6Omh0dHA6Ly92aXppZXIuY2RzLnVuaXN0cmEuZnIvdml6LWJpbi9WaXppZVItMj8tc291cmNlPVZJSS8xODkAAAG9aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoOjo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL3RhcCNhdXg6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvY29uZXNlYXJjaDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC90YXAjYXV4Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6aXZvOi8vaXZvYS5uZXQvc3RkL2NvbmVzZWFyY2g6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAaV2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnM6cGFyYW1odHRwOjo6cHkgVk8gc2VwOjo6dnI6d2ViYnJvd3Nlcjo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZzOnBhcmFtaHR0cDo6OnB5IFZPIHNlcDo6OnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2cjp3ZWJicm93c2VyAAAA+XN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6OnN0ZDo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAsFDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTg5L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTg5L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTg5L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjpDb25lIHNlYXJjaCBjYXBhYmlsaXR5IGZvciB0YWJsZSBWSUkvMTg5L3RhYmxlMSAoT2JzZXJ2ZWQgYW5kIERlcml2ZWQgcGFyYW1ldGVycyAodGFibGVzIDEsIDIgYW5kIDQgb2YgdGhlIHB1YmxpY2F0aW9uKSk6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6OjoAAAAAAAAAHWl2bzovL25hc2EuaGVhc2FyYy9hdG5mcHVsc2FyAAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAABEFUTkYAAAATAEEAVABOAEYAIABQAHUAbABzAGEAcgAgAEMAYQB0AGEAbABvAGcAAAAIcmVzZWFyY2gAAAnTAFQAaABlACAAQQB1AHMAdAByAGEAbABpAGEAIABUAGUAbABlAHMAYwBvAHAAZQAgAE4AYQB0AGkAbwBuAGEAbAAgAEYAYQBjAGkAbABpAHQAeQAgACgAQQBUAE4ARgApACAAUAB1AGwAcwBhAHIAIABDAGEAdABhAGwAbwBnACAAaQBzACAAYQAgAGMAYQB0AGEAbABvAGcAIABvAGYAIABrAG4AbwB3AG4AIABwAHUAbABzAGEAcgBzACAAYwBvAG0AcABpAGwAZQBkACAAYgB5ACAAUgAuAE4ALgAgAE0AYQBuAGMAaABlAHMAdABlAHIAIABlAHQAIABhAGwALgAgAGEAbgBkACAAaQBzACAAZABlAHMAYwBlAG4AZABlAGQAIABmAHIAbwBtACAAcAB1AGwAcwBhAHIAIABkAGEAdABhAGIAYQBzAGUAIAB1AHMAZQBkACAAZgBvAHIAIAB0AGgAZQAgAHAAYQBwAGUAcgAgACYAcQB1AG8AdAA7AEMAYQB0AGEAbABvAGcAIABvAGYAIAA1ADUAOAAgAFAAdQBsAHMAYQByAHMAJgBxAHUAbwB0ADsAIABiAHkAIABKAC4ASAAuACAAVABhAHkAbABvAHIALAAgAFIALgBOAC4AIABNAGEAbgBjAGgAZQBzAHQAZQByACAAYQBuAGQAIABBAC4ARwAuACAATAB5AG4AZQAgADEAOQA5ADMALAAgAEEAcABKAFMALAAgADgAOAAsACAANQAyADkALQA1ADYAOAAuACAAVABoAGUAIABjAHUAcgByAGUAbgB0ACAAYwBhAHQAYQBsAG8AZwAgAGgAYQBzACAAYgBlAGUAbgAgAHMAdQBwAHAAbABlAG0AZQBuAHQAZQBkACAAYgB5ACAAaQBuAGMAbAB1AHMAaQBvAG4AIABvAGYAIABwAHUAYgBsAGkAcwBoAGUAZAAgAGQAYQB0AGEAIABmAHIAbwBtACAAbQBvAHIAZQAgAHIAZQBjAGUAbgB0ACAAcgBhAGQAaQBvACAAcwB1AHIAdgBlAHkAcwAsACAAaQBuACAAcABhAHIAdABpAGMAdQBsAGEAcgAsACAAdABoAGUAIABQAGEAcgBrAGUAcwAgAE0AdQBsAHQAaQBiAGUAYQBtACAAKABQAE0AKQAgAFAAdQBsAHMAYQByACAAUwB1AHIAdgBlAHkAIAAoAE0AYQBuAGMAaABlAHMAdABlAHIAIABlAHQAIABhAGwALgAgADIAMAAwADEALAAgAE0ATgBSAEEAUwAsACAAMwAyADgALAAgADEANwAtADMANQApACAAWwBhAHYAYQBpAGwAYQBiAGwAZQAgAGEAdAAgAHQAaABlACAASABFAEEAUwBBAFIAQwAgAGEAcwAgAHQAaABlACAAUABNAFAAVQBMAFMAQQBSACAAdABhAGIAbABlAF0AIABhAG4AZAAgAHQAaABlACAAUwB3AGkAbgBiAHUAcgBuAGUAIABJAG4AdABlAHIAbQBlAGQAaQBhAHQAZQAgAEwAYQB0AGkAdAB1AGQAZQAgAFAAdQBsAHMAYQByACAAUwB1AHIAdgBlAHkAIAAoAEUAZAB3AGEAcgBkAHMAIABlAHQAIABhAGwALgAgADIAMAAwADEALAAgAE0ATgBSAEEAUwAsACAAMwAyADYALAAgADMANQA4AC0AMwA3ADQAKQAsACAAYgBvAHQAaAAgAG0AYQBkAGUAIAB1AHMAaQBuAGcAIAB0AGgAZQAgAEEAVABOAEYAIABQAGEAcgBrAGUAcwAgADYANAAtAG0AIAByAGEAZABpAG8AIAB0AGUAbABlAHMAYwBvAHAAZQAuACAAQgBpAG4AYQByAHkAIABwAGEAcgBhAG0AZQB0AGUAcgBzACAAZgBvAHIAIABrAG4AbwB3AG4AIABiAGkAbgBhAHIAeQAgAHAAdQBsAHMAYQByAHMAIABhAHIAZQAgAGEAbABzAG8AIABpAG4AYwBsAHUAZABlAGQAIABhAHMAIAB3AGUAbABsACAAYQBzACAAYQBsAGwAIABhAHYAYQBpAGwAYQBiAGwAZQAgAGEAcwB0AHIAbwBtAGUAdAByAGkAYwAgAGEAbgBkACAAcwBwAGkAbgAgAHAAYQByAGEAbQBlAHQAZQByACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuACAAZgBvAHIAIABhAGwAbAAgAHAAdQBsAHMAYQByAHMALgAgAFQAaABlACAAYwBhAHQAYQBsAG8AZwAgAGkAbgBjAGwAdQBkAGUAcwAgAGEAbABsACAAcAB1AGIAbABpAHMAaABlAGQAIAByAG8AdABhAHQAaQBvAG4ALQBwAG8AdwBlAHIAZQBkACAAcAB1AGwAcwBhAHIAcwAuACAAVAB3AG8AIABzAGUAcABhAHIAYQB0AGUAIABzAG0AYQBsAGwAIABzAHUAYgBzAGUAdABzACAAbwBmACAAcAB1AGwAcwBhAHIAcwAgAGQAZQB0AGUAYwB0AGUAZAAgAG8AbgBsAHkAIABhAHQAIABoAGkAZwBoACAAZQBuAGUAcgBnAGkAZQBzACAAYQByAGUAIABhAGwAcwBvACAAaQBuAGMAbAB1AGQAZQBkACAAaQBuACAAdABoAGUAIABjAHUAcgByAGUAbgB0ACAAdABhAGIAbABlADoAIAB0AGgAZQAgAGYAaQByAHMAdAAgAGcAcgBvAHUAcAAgAGMAbwBtAHAAcgBpAHMAZQBzACAAWAAtAHIAYQB5ACAAYQBuAGQAIABnAGEAbQBtAGEALQByAGEAeQAgAHAAdQBsAHMAYQByAHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAGEAcABwAGEAcgBlAG4AdABsAHkAIABwAG8AdwBlAHIAZQBkACAAYgB5ACAAcwBwAGkAbgAtAGQAbwB3AG4AIABlAG4AZQByAGcAeQAsACAAYgB1AHQAIAB3AGgAaQBjAGgAIABoAGEAdgBlACAAbgBvAHQAIABiAGUAZQBuACAAZABlAHQAZQBjAHQAZQBkACAAYQB0ACAAcgBhAGQAaQBvACAAdwBhAHYAZQBsAGUAbgBnAHQAaABzACwAIAB3AGgAaQBsAGUAIAB0AGgAZQAgAHMAZQBjAG8AbgBkACAAZwByAG8AdQBwACAAYwBvAG4AdABhAGkAbgBzACAAYQBuAG8AbQBhAGwAbwB1AHMAIABYAC0AcgBhAHkAIABwAHUAbABzAGEAcgBzACAAKABBAFgAUABzACkAIABhAG4AZAAgAHMAbwBmAHQALQBnAGEAbQBtAGEALQByAGEAeQAgAHIAZQBwAGUAYQB0AGUAcgBzACAAKABTAEcAUgBzACkAIABmAG8AcgAgAHcAaABpAGMAaAAgAGMAbwBoAGUAcgBlAG4AdAAgAHAAdQBsAHMAYQB0AGkAbwBuAHMAIABoAGEAdgBlACAAYgBlAGUAbgAgAGQAZQB0AGUAYwB0AGUAZAAuACAAQQBjAGMAcgBlAHQAaQBvAG4ALQBwAG8AdwBlAHIAZQBkACAAcAB1AGwAcwBhAHIAcwAgAHMAdQBjAGgAIABhAHMAIABIAGUAcgAgAFgALQAxACAAYQBuAGQAIAB0AGgAZQAgAHIAZQBjAGUAbgB0AGwAeQAgAGQAaQBzAGMAbwB2AGUAcgBlAGQAIABYAC0AcgBhAHkAIABtAGkAbABsAGkAcwBlAGMAbwBuAGQAIABwAHUAbABzAGEAcgBzACAAcwB1AGMAaAAgAGEAcwAgAFMAQQBYACAASgAxADgAMAA4AC4ANAAtADMANgA1ADgAIABhAHIAZQAgAG4AbwB0ACAAaQBuAGMAbAB1AGQAZQBkACAAaQBuACAAdABoAGkAcwAgAHQAYQBiAGwAZQAsACAAaABvAHcAZQB2AGUAcgAuACAATQBhAG4AeQAgAHAAZQBvAHAAbABlACAAaABhAHYAZQAgAGMAbwBuAHQAcgBpAGIAdQB0AGUAZAAgAHQAbwAgAHQAaABlACAAYwBvAG0AcABpAGwAYQB0AGkAbwBuACAAbwBmACAAdABoAGUAIABkAGEAdABhACAAYwBvAG4AdABhAGkAbgBlAGQAIABpAG4AIAB0AGgAaQBzACAAYwBhAHQAYQBsAG8AZwAgAGEAbgBkACAAdABoAGUAIABkAGEAdABhAGIAYQBzAGUAIAB0AGgAYQB0ACAAaQB0ACAAdwBhAHMAIABkAGUAcgBpAHYAZQBkACAAZgByAG8AbQAuACAAVABoAGUAIABhAHUAdABoAG8AcgBzACAAcABhAHIAdABpAGMAdQBsAGEAcgBsAHkAIAB0AGgAYQBuAGsAIABBAG4AZAByAGUAdwAgAEwAeQBuAGUAIABvAGYAIAB0AGgAZQAgAFUAbgBpAHYAZQByAHMAaQB0AHkAIABvAGYAIABNAGEAbgBjAGgAZQBzAHQAZQByACwAIABKAG8AZAByAGUAbABsACAAQgBhAG4AawAgAE8AYgBzAGUAcgB2AGEAdABvAHIAeQAsACAARABhAHYAaQBkACAATgBpAGMAZQAgAG8AZgAgAFAAcgBpAG4AYwBlAHQAbwBuACAAVQBuAGkAdgBlAHIAcwBpAHQAeQAsACAAYQBuAGQAIABSAHUAcwBzAGUAbABsACAARQBkAHcAYQByAGQAcwAsACAAdABoAGUAbgAgAGEAdAAgAFMAdwBpAG4AYgB1AHIAbgBlACAAVQBuAGkAdgBlAHIAcwBpAHQAeQAgAG8AZgAgAFQAZQBjAGgAbgBvAGwAbwBnAHkALgAgAFQAaABlACAAYQBsAHMAbwAgAGEAYwBrAG4AbwB3AGwAZQBkAGcAZQAgAHQAaABlACAAZQBmAGYAbwByAHQAcwAgAG8AZgAgAFcAYQByAHcAaQBjAGsAIABVAG4AaQB2AGUAcgBzAGkAdAB5ACAAcwB0AHUAZABlAG4AdABzACAAQQBkAGEAbQAgAEcAbwBvAGQAZQAgAGEAbgBkACAAUwB0AGUAdgBlAG4AIABUAGgAbwBtAGEAcwAgAHcAaABvACAAYwBvAG0AcABpAGwAZQBkACAAYQBuAGQAIABjAGgAZQBjAGsAZQBkACAAYQAgAHIAZQBjAGUAbgB0ACAAdgBlAHIAcwBpAG8AbgAgAG8AZgAgAHQAaABlACAAZABhAHQAYQBiAGEAcwBlAC4AIABUAGgAZQAgAG8AcgBpAGcAaQBuAGEAbAAgACgAcwB1AG0AbQBlAHIAIAAyADAAMAAzACkAIABkAGEAdABhAGIAYQBzAGUAIABhAHQAIAB0AGgAZQAgAEEAVABOAEYAIAB3AGUAYgBzAGkAdABlACAAdwBhAHMAIABjAG8AbQBwAGkAbABlAGQAIAB3AGkAdABoACAAdABoAGUAIABpAG4AdgBhAGwAdQBhAGIAbABlACAAYQBzAHMAaQBzAHQAYQBuAGMAZQAgAG8AZgAgAE0AYQByAHkAYQBtACAASABvAGIAYgBzACwAIAB3AGgAaQBsAGUAIAB0AGgAZQAgAEEAVABOAEYAIAB3AGUAYgAgAGkAbgB0AGUAcgBmAGEAYwBlACAAdwBhAHMAIABkAGUAcwBpAGcAbgBlAGQAIABhAG4AZAAgAGMAbwBuAHMAdAByAHUAYwB0AGUAZAAgAGIAeQAgAEEAbABiAGUAcgB0ACAAVABlAG8AaAAsACAAYQAgAFMAdQBtAG0AZQByACAAVgBhAGMAYQB0AGkAbwBuACAAUwBjAGgAbwBsAGEAcgAgAGEAdAAgAHQAaABlACAAQQBUAE4ARgAgAGkAbgAgADIAMAAwADIALwAyADAAMAAzAC4AIABUAGgAZQAgAGEAdQB0AGgAbwByAHMAIAB3AG8AdQBsAGQAIABhAHAAcAByAGUAYwBpAGEAdABlACAAaQBmACAAYQBuAHkAbwBuAGUAIABtAGEAawBpAG4AZwAgAHUAcwBlACAAbwBmACAAdABoAGkAcwAgAGMAYQB0AGEAbABvAGcAIABpAG4AIABhACAAcAB1AGIAbABpAGMAYQB0AGkAbwBuACAAYQBjAGsAbgBvAHcAbABlAGQAZwBlAHMAIAB0AGgAZQAgAHMAbwB1AHIAYwBlACAAbwBmACAAdABoAGUAaQByACAAaQBuAGYAbwByAG0AYQB0AGkAbwBuACAAYgB5ACAAcQB1AG8AdABpAG4AZwAgAHQAaABlACAAQQBUAE4ARgAgAFAAdQBs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YQB0AGEAIAB0AGgAcgBvAHUAZwBoACAAcABlAHIAaQBvAGQAaQBjAGkAdAB5ACAAcwBlAGEAcgBjAGgAZQBzACAAaQBuACAAZwBhAG0AbQBhAC0AcgBhAHkAIABhAG4AZAAgAHIAYQBkAGkAbwAgAGQAYQB0AGEAIABhAHIAbwB1AG4AZAAgAEwAQQBUACAAdQBuAGEAcwBzAG8AYwBpAGEAdABlAGQAIABzAG8AdQByAGMAZQAgAHAAbwBzAGkAdABpAG8AbgBzAC4AIABUAGgAZQAgAGMAYQB0AGEAbABvAGcAdQBlAGQAIABwAHUAbABzAGEAcgBzACAAYQByAGUAIABkAGkAdgBpAGQAZQBkACAAaQBuAHQAbwAgAHQAaAByAGUAZQAgAGcAcgBvAHUAcABzADoAIABtAGkAbABsAGkAcwBlAGMAbwBuAGQAIABwAHUAbABzAGEAcgBzACwAIAB5AG8AdQBuAGcAIAByAGEAZABpAG8ALQBsAG8AdQBkACAAcAB1AGwAcwBhAHIAcwAsACAAYQBuAGQAIAB5AG8AdQBuAGcAIAByAGEAZABpAG8ALQBxAHUAaQBlAHQAIABwAHUAbABzAGEAcgBzAC4AIABUAGgAaQBzACAAYwBhAHQAYQBsAG8AZwAgAHMAdQBtAG0AYQByAGkAegBlAHMAIAByAGUAcwB1AGwAdABzACAAbwBmACAAdABoAGUAIABhAG4AYQBsAHkAcwBpAHMAIABvAGYAIABwAHUAbABzAGUAIABwAHIAbwBmAGkAbABlAHMAIABhAG4AZAAgAGUAbgBlAHIAZwB5ACAAcwBwAGUAYwB0AHIAYQAsACAAYQBuAGQAIABhAG4AYQBsAHkAcwBpAHMAIABvAGYAIAB0AGgAZQAgAG8AZgBmAC0AcABlAGEAawAgAHAAaABhAHMAZQAgAGkAbgB0AGUAcgB2AGEAbABzACwAIABhAG4AZAAgAGMAbwBtAHAAYQByAGUAcwAgAHQAaABlACAAZwBhAG0AbQBhAC0AcgBhAHkAIABwAHIAbwBwAGUAcgB0AGkAZQBzACAAdwBpAHQAaAAgAHQAaABvAHMAZQAgAGkAbgAgAHQAaABlACAAcgBhAGQAaQBvACwAIABvAHAAdABpAGMAYQBsACwAIABhAG4AZAAgAFgALQByAGEAeQAgAGIAYQBuAGQAcwAuACAARgBsAHUAeAAgAGwAaQBtAGkAdABzACAAZgBvAHIAIABwAHUAbABzAGEAcgBzACAAdwBpAHQAaAAgAG4AbwAgAG8AYgBzAGUAcgB2AGUAZAAgAGcAYQBtAG0AYQAtAHIAYQB5ACAAZQBtAGkAcwBzAGkAbwBuACAAYQByAGUAIABwAHIAbwB2AGkAZABlAGQALgAAADpodHRwczovL2hlYXNhcmMuZ3NmYy5uYXNhLmdvdi9XM0Jyb3dzZS9hbGwvZmVybWlsMnBzci5odG1sAAAACwBBAGIAZABvACAAZQB0ACAAYQBsAC4AAAATMjAyMy0xMi0wOFQwMDowMDowMAAAABMyMDIzLTEyLTA4VDAwOjAwOjAwAAAAAAAAAAdjYXRhbG9nAAAAAAAAABMAMgAwADEAMwBBAHAASgBTAC4ALgAyADAAOAAuAC4ALgAxADcAQX/AAAAAAAAJZ2FtbWEtcmF5AAABfWh0dHBzOi8vaGVhc2FyYy5nc2ZjLm5hc2EuZ292L2NnaS1iaW4vVzNCcm93c2UvdzNxdWVyeS5wbD90YWJsZWhlYWQ9bmFtZT1oZWFzYXJjX2Zlcm1pbDJwc3ImQWN0aW9uPU1vcmUrT3B0aW9ucyZBY3Rpb249UGFyYW1ldGVyK1NlYXJjaCZDb25lQWRkPTE6OjpweSBWTyBzZXA6OjpodHRwczovL2hlYXNhcmMuZ3NmYy5uYXNhLmdvdi9jZ2ktYmluL1czQnJvd3NlL2dldHZvdGFibGUucGw/bmFtZT1mZXJtaWwycHNyOjo6cHkgVk8gc2VwOjo6aHR0cHM6Ly9oZWFzYXJjLmdzZmMubmFzYS5nb3YveGFtaW4vdm8vdGFwOjo6cHkgVk8gc2VwOjo6aHR0cHM6Ly9oZWFzYXJjLmdzZmMubmFzYS5nb3YveGFtaW4vdm8vY29uZT9zaG93b2Zmc2V0cyZ0YWJsZT1mZXJtaWwycHNyJgAAAGQ6OjpweSBWTyBzZXA6Ojo6OjpweSBWTyBzZXA6Ojppdm86Ly9pdm9hLm5ldC9zdGQvdGFwI2F1eDo6OnB5IFZPIHNlcDo6Oml2bzovL2l2b2EubmV0L3N0ZC9jb25lc2VhcmNoAAAAXnZyOndlYmJyb3dzZXI6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHA6OjpweSBWTyBzZXA6Ojp2czpwYXJhbWh0dHAAAAAzOjo6cHkgVk8gc2VwOjo6Ojo6cHkgVk8gc2VwOjo6c3RkOjo6cHkgVk8gc2VwOjo6c3RkAAAALTo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6Ojo6OnB5IFZPIHNlcDo6OgAAAAAAAAAbaXZvOi8vbmFzYS5oZWFzYXJjL3BtcHVsc2FyAAAAEXZzOmNhdGFsb2dzZXJ2aWNlAAAABlBhcmtlcwAAACoAUABhAHIAawBlAHMAIABNAHUAbAB0AGkAYgBlAGEAbQAgAFMAdQByAHYAZQB5ACAATgBlAHcAIABQAHUAbABzAGEAcgAgAEMAYQB0AGEAbABvAGcAAAAIcmVzZWFyY2gAAAVGAFQAaABlACAAUABhAHIAawBlAHMAIABNAHUAbAB0AGkAYgBlAGEAbQAgACgAUABNACkAIABQAHUAbABzAGEAcgAgAFMAdQByAHYAZQB5ACAAdQBzAGUAcwAgAHQAaABlACAAMgAwACAAYwBtACAAbQB1AGwAdABpAGIAZQBhAG0AIAByAGUAYwBlAGkAdgBlAHIAIABzAHkAcwB0AGUAbQAgAGEAbgBkACAAbQB1AGwAdABpAGIAZQBhAG0AIABmAGkAbAB0AGUAcgAgAGIAYQBuAGsAcwAsACAAZABpAGcAaQB0AGkAegBlAHIAIABhAG4AZAAgAGQAYQB0AGEALQBhAGMAcQB1AGkAcwBpAHQAaQBvAG4AIABzAHkAcwB0AGUAbQAgAHQAbwAgAHMAdQByAHYAZQB5ACAAYQAgAHIAZQBnAGkAbwBuACAAdwBpAHQAaABpAG4AIAB8AGIAfAAgACYAbAB0ADsAIAA1ACAAZABlAGcAcgBlAGUAcwAgAGkAbgAgAHQAaABlACAAaQBuAG4AZQByACAARwBhAGwAYQBjAHQAaQBjACAAcABsAGEAbgBlACAAZgBvAHIAIABwAHUAbABzAGEAcgBzACwAIABtAGEAbgB5ACAAbwBmACAAdwBoAGkAYwBoACAAdwBpAGwAbAAgAGIAZQAgAHkAbwB1AG4AZwAgAGEAbgBkAC8AbwByACAAcwBoAG8AcgB0AC0AcABlAHIAaQBvAGQALgAgAFQAaABpAHMAIABzAHUAcgB2AGUAeQAgAGkAcwAgAGEAIABmAGEAYwB0AG8AcgAgAG8AZgAgADcAIAB0AGkAbQBlAHMAIABtAG8AcgBlACAAcwBlAG4AcwBpAHQAaQB2AGUAIAB0AG8AIAB5AG8AdQBuAGcAIABhAG4AZAAgAGQAaQBzAHQAYQBuAHQAIABwAHUAbABzAGEAcgBzACAAdABoAGEAbgAgAHQAaABhAHQAIABvAGYAIABKAG8AaABuAHMAdABvAG4AIABlAHQAIABhAGwALgAgACgAMQA5ADkAMgAsACAATQBOAFIAQQBTACwAIAAyADUANQAsACAANAAwADEAKQAgAHcAaABpAGMAaAAgAGQAZQB0AGUAYwB0AGUAZAAgADEAMAAwACAAcAB1AGwAcwBhAHIAcwAuACAAVABoAGUAIABwAHIAZQBzAGUAbgB0ACAAcwBvAHUAcgBjAGUAIABsAGkAcwB0ACAAYwBvAG4AdABhAGkAbgBzACAAcAB1AGwAcwBhAHIAcwAgAHQAaABhAHQAIABoAGEAdgBlACAAYgBlAGUAbgAgAG4AZQB3AGwAeQAgAGQAaQBzAGMAbwB2AGUAcgBlAGQAIABpAG4AIAB0AGgAZQAgAGMAbwB1AHIAcwBlACAAbwBmACAAdABoAGkAcwAgAHMAdQByAHYAZQB5AC4AIABUAGgAZQAgAFAATQAgAFMAdQByAHYAZQB5ACAAaQBzACAAcwBwAGUAYwBpAGYAaQBjAGEAbABsAHkAIAB0AGEAcgBnAGUAdABlAGQAIABmAG8AcgAgACgAaQApACAAbwBiAHMAYwB1AHIAZQBkACAAcgBlAGcAaQBvAG4AcwAgAG8AZgAgAHQAaABlACAARwBhAGwAYQBjAHQAaQBjACAAcABsAGEAbgBlACwAIAAoAGkAaQApACAAeQBvAHUAbgBnACAAcAB1AGwAcwBhAHIAcwAsAGEAbgBkACAAKABpAGkAaQApACAAYgBpAG4AYQByAHkAIABwAHUAbABzAGEAcgBzACAAdwBpAHQAaAAgAG0AYQBzAHMAaQB2AGUAIABjAG8AbQBwAGEAbgBpAG8AbgBzAC4AIABBAHMAIABvAGYAIABBAHUAZwB1AHMAdAAgADEAOQA5ADkALAAgAGEAbgBhAGwAeQBzAGkAcwAgAG8AZgAgAGEAYgBvAHUAdAAgADUAMAAlACAAbwBmACAAdABoAGUAIAB0AG8AdABhAGwAIABlAHgAcABlAGMAdABlAGQAIABkAGEAdABhACAAdABvACAAYgBlACAAYwBvAGwAbABlAGMAdABlAGQAIABoAGEAcwAgAHIAZQBzAHUAbAB0AGUAZAAgAGkAbgAgAHQAaABlACAAYwBvAG4AZgBpAHIAbQBlAGQAIABkAGUAdABlAGMAdABpAG8AbgAgAG8AZgAgAG8AdgBlAHIAIAA0ADAAMAAgAG4AZQB3ACAAcAB1AGwAcwBhAHIAcwAgACgAYQBuACAAaQBuAGMAcgBlAGEAcwBlACAAbwBmACAAbQBvAHIAZQAgAHQAaABhAG4AIAA1ADAAJQAgAG8AZgAgAHQAaABlACAAawBuAG8AdwBuACAAcABvAHAAdQBsAGEAdABpAG8AbgApAC4AIABIAGUAcgBlACAAYQByAGUAIABzAG8AbQBlACAAbwBmACAAdABoAGUAIABmAGUAYQB0AHUAcgBlAHMAIABvAGYAIAB0AGgAZQAgAFAATQAgAFMAdQByAHYAZQB5ADoAIAAmAGwAdAA7AHAAcgBlACYAZwB0ADsAIABTAHUAcgB2AGUAeQAgAEEAcgBlAGEAOgAgAC0AMgA2ADAAIAAmAGwAdAA7ACAAbAAgACYAbAB0ADsAIAA1ADAAIABkAGUAZwAgACwAIAAtADUAIAAmAGwAdAA7ACAAYgAgACYAbAB0ADsAIAA1ACAAZABlAGcAIABDAGUAbgB0AGUAcgAgAEYAcgBlAHEAdQBlAG4AYwB5ADoAIAAxADMANwA0ACAATQBIAHoAIABCAGEAbgBkAHcAaQBkAHQAaAA6ACAAMgA4ADgAIABNAEgAegAgACgAOQA2ACAAYwBoAGEAbgBuAGUAbABzACAAeAAgADMAIABNAEgAegAgAHAAZQByACAAYwBoAGEAbgBuAGUAbAAgAHgAIAAyACAAcABvAGwAYQByAGkAegBhAHQAaQBvAG4AcwApACAAUwBhAG0AcABsAGkAbgBnACAAUgBhAHQAZQA6ACAAMAAuADIANQAgAG0AcwAgAHgAIAAxACAAYgBpAHQAIABwAGUAcgAgAGMAaABhAG4AbgBlAGwAIABJAG4AdABlAGcAcgBhAHQAaQBvAG4AIABUAGkAbQBlADoAIAAz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
astropy-pyvo-f0fdda3/pyvo/registry/tests/test_regtap.py000066400000000000000000001102311521254414300236600ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.registry.regtap """ import io import re from functools import partial from unittest.mock import MagicMock, patch from urllib.parse import parse_qsl import pytest from astropy import time from pyvo.registry import regtap from pyvo.registry import rtcons from pyvo.registry.regtap import REGISTRY_BASEURL from pyvo.registry import search as regsearch from pyvo.dal import DALOverflowWarning from pyvo.dal import query as dalq from pyvo.dal import tap, sia2 from astropy.utils.data import get_pkg_data_contents from .commonfixtures import messenger_vocabulary, FAKE_GAVO # noqa: F401 get_pkg_data_contents = partial( get_pkg_data_contents, package=__package__, encoding='binary') @pytest.fixture(name='capabilities') def _capabilities(mocker, scope="session"): def callback(request, context): return get_pkg_data_contents('data/capabilities.xml') with mocker.register_uri( 'GET', REGISTRY_BASEURL + '/capabilities', content=callback ) as matcher: yield matcher # to update this, run # import requests # from pyvo.registry import regtap # # with open("data/regtap.xml", "wb") as f: # f.write(requests.get(regtap.REGISTRY_BASEURL+"/sync", { # "LANG": "ADQL", # "QUERY": regtap.get_RegTAP_query(keywords="pulsar", ucd=["pos.distance"])}).content) @pytest.fixture(name='regtap_pulsar_distance_response') def _regtap_pulsar_distance_response(mocker, capabilities, scope="session"): with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=get_pkg_data_contents('data/regtap.xml')) as matcher: yield matcher @pytest.fixture() def keywords_fixture(mocker, capabilities, scope="session"): def keywordstest_callback(request, context): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert "res_subject ILIKE '%vizier%'" in query assert "ivo_hasword(res_description, 'vizier')" in query assert "1=ivo_hasword(res_title, 'vizier')" in query assert ".res_subject ILIKE '%pulsar%'" in query assert "1=ivo_hasword(res_description, 'pulsar')" in query assert "1=ivo_hasword(res_title, 'pulsar')" in query return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=keywordstest_callback ) as matcher: yield matcher @pytest.fixture() def single_keyword_fixture(mocker, capabilities, scope="session"): def keywordstest_callback(request, context): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert (" UNION ALL SELECT DISTINCT ivoid FROM rr.res_subject WHERE " "rr.res_subject.res_subject ILIKE '%single%'") in query assert "1=ivo_hasword(res_description, 'single') " in query assert "1=ivo_hasword(res_title, 'single')" in query return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=keywordstest_callback ) as matcher: yield matcher @pytest.fixture() def servicetype_fixture(mocker, capabilities, scope="session"): def servicetypetest_callback(request, context): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert "'ivo://ivoa.net/std/conesearch'" not in query assert "'ivo://ivoa.net/std/sia'" not in query assert "'ivo://ivoa.net/std/ssa'" not in query assert "'ivo://ivoa.net/std/slap'" not in query assert "'ivo://ivoa.net/std/tap'" in query return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=servicetypetest_callback ) as matcher: yield matcher @pytest.fixture() def waveband_fixture(mocker, capabilities, scope="session"): def wavebandtest_callback(request, content): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert "1 = ivo_hashlist_has(rr.resource.waveband, 'optical'" in query return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=wavebandtest_callback ) as matcher: yield matcher @pytest.fixture() def datamodel_fixture(mocker, capabilities, scope="session"): def datamodeltest_callback(request, content): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert ( "detail_xpath = '/capability/dataModel/@ivo-id'" in query) assert ( "ivo_nocasematch(detail_value, 'ivo://ivoa.net/std/obscore%'))" in query) return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=datamodeltest_callback ) as matcher: yield matcher @pytest.fixture() def aux_fixture(mocker, capabilities, scope="session"): def auxtest_callback(request, context): data = dict(parse_qsl(request.body)) query = data['QUERY'] assert "ivo://ivoa.net/std/tap#aux" in query return get_pkg_data_contents('data/regtap.xml') with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=auxtest_callback, ) as matcher: yield matcher @pytest.fixture(name='multi_interface_fixture') def _multi_interface_fixture(mocker, capabilities, scope="session"): # to update this, run # import requests # from pyvo.registry import regtap # # with open("data/multi-interface.xml", "wb") as f: # f.write(requests.get(regtap.REGISTRY_BASEURL+"/sync", { # "LANG": "ADQL", # "QUERY": regtap.get_RegTAP_query( # ivoid="ivo://org.gavo.dc/flashheros/q/ssa")}).content) with mocker.register_uri( 'POST', REGISTRY_BASEURL + '/sync', content=get_pkg_data_contents('data/multi-interface.xml') ) as matcher: yield matcher @pytest.fixture(name='flash_service') def _flash_service(multi_interface_fixture, scope="session"): return regtap.search( ivoid="ivo://org.gavo.dc/flashheros/q/ssa")[0] class TestInterfaceClass: def test_basic(self): intf = regtap.Interface("http://example.org") assert intf.access_url == "http://example.org" assert intf.standard_id is None assert intf.type is None assert intf.role is None assert intf.is_standard is False assert not intf.is_vosi assert intf.capability_description is None def test_repr(self): description = "An example description." intf = regtap.Interface("http://example.org", standard_id="ivo://gavo/std/a", intf_type="vs:paramhttp", intf_role="std", capability_description=description) assert (repr(intf) == "Interface(type='a', description='An example description.'," " url='http://example.org')") intf = regtap.Interface("http://example.org", capability_description=description) assert repr(intf) == ("Interface(type=None, description='An example description.'," " url='http://example.org')") def test_unknown_standard(self): intf = regtap.Interface("http://example.org", standard_id="ivo://gavo/std/a", intf_type="vs:paramhttp", intf_role="std") assert intf.is_standard with pytest.raises(ValueError) as excinfo: intf.to_service() assert str(excinfo.value) == ( "PyVO has no support for interfaces with standard" " id ivo://gavo/std/a.") def test_known_standard(self): intf = regtap.Interface("http://example.org", standard_id="ivo://ivoa.net/std/tap#aux", intf_type="vs:paramhttp", intf_role="std") assert isinstance(intf.to_service(), tap.TAPService) assert not intf.is_vosi def test_sia2_standard(self): intf = regtap.Interface("http://example.org", standard_id="ivo://ivoa.net/std/sia2", intf_type="vs:paramhttp", intf_role="std") assert isinstance(intf.to_service(), sia2.SIA2Service) assert not intf.is_vosi def test_secondary_interface(self): intf = regtap.Interface("http://example.org", standard_id="ivo://ivoa.net/std/tap#aux", intf_type="vs:webbrowser", intf_role="web") with pytest.raises(ValueError) as excinfo: intf.to_service() assert str(excinfo.value) == ( "This is not a standard interface. PyVO cannot speak to it.") def test_VOSI(self): intf = regtap.Interface("http://example.org", standard_id="ivo://ivoa.net/std/vosi#capabilities", intf_type="vs:ParamHTTP", intf_role="std") assert intf.is_vosi # The following tests have their assertions in the fixtures. # It would certainly not hurt to refactor this so they are # in the tests (we could also just rely on the rtcons tests # that exercise about the same thing). @pytest.mark.usefixtures('keywords_fixture', 'capabilities') def test_keywords(): regsearch(keywords=['vizier', 'pulsar']) @pytest.mark.usefixtures('single_keyword_fixture', 'capabilities') def test_single_keyword(): regsearch(keywords=['single']) regsearch(keywords='single') @pytest.mark.usefixtures('servicetype_fixture', 'capabilities') def test_servicetype(): regsearch(servicetype='table') @pytest.mark.usefixtures( 'waveband_fixture', 'capabilities', 'messenger_vocabulary') def test_waveband(): regsearch(waveband='optical') @pytest.mark.usefixtures('datamodel_fixture', 'capabilities') def test_datamodel(): regsearch(datamodel='ObsCore') @pytest.mark.usefixtures('aux_fixture', 'capabilities') def test_servicetype_aux(): regsearch(servicetype='table', includeaux=True) @pytest.mark.usefixtures('aux_fixture', 'capabilities') def test_bad_servicetype_aux(): with pytest.raises(dalq.DALQueryError): regsearch(servicetype='bad_servicetype', includeaux=True) class _NS: """a namespace exposing its keyword arguments as attributes. We need this here to let us conveniently construct _FakeResults. """ def __init__(self, **kwargs): for k, v in kwargs.items(): setattr(self, k, v) class _FakeResults: """ a minimal standin for dal.query.Results to be used with dal.query.Record. It is constructed with a dictionary that should eventually be used as the mapping in the Record. """ def __init__(self, valdict): self.fieldnames = list(valdict.keys()) self.resultstable = _NS(array=_NS(data=[list(valdict.values())])) def get_regtap_results(**kwargs): """ return a RegTAP result as expected by RegistryResult with all values empty, completed with what's in kwargs. """ res = {} for key in regtap.RegistryResource.expected_columns: if isinstance(key, str): res[key] = None else: res[key[-1]] = None res.update(kwargs) return _FakeResults(res) def test_spatial(): assert (rtcons.keywords_to_constraints({ "spatial": (23, -40)})[0].get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.stc_spatial" " WHERE 1 = CONTAINS(MOC(6, POINT(23, -40)), coverage))") def test_spectral(): assert (rtcons.keywords_to_constraints({ "spectral": (1e-17, 2e-17)})[0].get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.stc_spectral WHERE" " 1 = ivo_interval_overlaps(spectral_start, spectral_end, 1e-17, 2e-17))") def test_to_table(multi_interface_fixture, capabilities): t = regtap.search( ivoid="ivo://org.gavo.dc/flashheros/q/ssa").get_summary() assert (set(t.columns.keys()) == {'index', 'short_name', 'title', 'description', 'interfaces'}) assert t["index"][0] == 0 assert t["title"][0] == 'Flash/Heros SSAP' assert (t["description"][0][:40] == 'Spectra from the Flash and Heros Echelle') assert (t["interfaces"][0] == 'datalink#links-1.1, soda#sync-1.0, ssa, tap#aux, web') @pytest.fixture(name='rt_pulsar_distance') def _rt_pulsar_distance(regtap_pulsar_distance_response, capabilities): return regsearch(keywords="pulsar", ucd=["pos.distance"]) def test_record_fields(rt_pulsar_distance): rec = rt_pulsar_distance["VII/156"] assert rec.ivoid == "ivo://cds.vizier/vii/156" assert rec.res_type == "vs:catalogservice" assert rec.short_name == "VII/156" assert rec.res_title == "Catalog of 558 Pulsars" assert rec.content_levels == ['research'] assert rec.res_description[:20] == "The catalogue is an up-to-date"[:20] assert rec.reference_url == "https://cdsarc.cds.unistra.fr/viz-bin/cat/VII/156" assert rec.creators == ['Taylor J.H.', ' Manchester R.N.', ' Lyne A.G.'] assert rec.content_types == ['catalog'] assert rec.source_format == "bibcode" assert rec.source_value == "1993ApJS...88..529T" assert rec.region_of_regard is None assert rec.waveband == ['radio'] assert rec.created == "1999-03-02T10:21:53" # updated might break when regenerating data/regtap.xml, # replace by the new date assert rec.updated == "2021-10-21T00:00:00" assert rec.rights == "https://cds.unistra.fr/vizier-org/licences_vizier.html" # access URL, standard_id and friends exercised in TestInterfaceSelection class TestResultIndexing: def test_get_with_index(self, rt_pulsar_distance): # this is expecte to break when the fixture is updated assert (rt_pulsar_distance[0].res_title == 'Pulsar Timing for Fermi Gamma-ray Space Telescope') def test_get_with_short_name(self, rt_pulsar_distance): assert (rt_pulsar_distance["ATNF"].res_title == 'ATNF Pulsar Catalog') def test_get_with_ivoid(self, rt_pulsar_distance): assert (rt_pulsar_distance["ivo://nasa.heasarc/atnfpulsar" ].res_title == 'ATNF Pulsar Catalog') def test_out_of_range(self, rt_pulsar_distance): with pytest.raises(IndexError) as excinfo: rt_pulsar_distance[40320] assert (str(excinfo.value) == f"index 40320 is out of bounds for axis 0 with size {len(rt_pulsar_distance)}") def test_bad_key(self, rt_pulsar_distance): with pytest.raises(KeyError) as excinfo: rt_pulsar_distance["hunkatunka"] assert (str(excinfo.value) == "'hunkatunka'") def test_not_indexable(self, rt_pulsar_distance): with pytest.raises(IndexError) as excinfo: rt_pulsar_distance[None] assert (str(excinfo.value) == "No resource matching None") @pytest.mark.usefixtures('multi_interface_fixture', 'capabilities', 'flash_service') class TestInterfaceSelection: """ tests for the selection and generation of services within RegistryResource. """ def test_exactly_one_result(self): results = regtap.search( ivoid="ivo://org.gavo.dc/flashheros/q/ssa") assert len(results) == 1 def test_access_modes(self, flash_service): assert set(flash_service.access_modes()) == { 'datalink#links-1.1', 'soda#sync-1.0', 'ssa', 'tap#aux', 'web'} def test_standard_id_multi(self, flash_service): with pytest.raises(dalq.DALQueryError) as excinfo: _ = flash_service.standard_id assert str(excinfo.value) == ("This resource supports several" " standards (datalink#links-1.1, soda#sync-1.0, ssa," " tap#aux, web). Use get_service or restrict your query" " using Servicetype.") def test_get_web_interface(self, flash_service): svc = flash_service.get_service(service_type="web") assert isinstance(svc, regtap._BrowserService) assert (svc.baseurl == "http://dc.zah.uni-heidelberg.de/flashheros/q/web/form") assert str(svc) == ("BrowserService(baseurl : " "'http://dc.zah.uni-heidelberg.de/flashheros/q/web/form'," " description : '')") import webbrowser orig_open = webbrowser.open try: open_args = [] webbrowser.open = lambda *args: open_args.append(args) svc.search() assert open_args == [ ("http://dc.zah.uni-heidelberg.de/flashheros/q/web/form", 2)] finally: webbrowser.open = orig_open def test_get_aux_interface(self, flash_service): svc = flash_service.get_service(service_type="tap#aux") assert (svc._baseurl == "http://dc.zah.uni-heidelberg.de/tap") def test_get_aux_as_main(self, flash_service): assert (flash_service.get_service(service_type="tap")._baseurl == "http://dc.zah.uni-heidelberg.de/tap") def test_get__main_from_aux(self, flash_service): assert (flash_service.get_service(service_type="tap")._baseurl == "http://dc.zah.uni-heidelberg.de/tap") def test_get_by_alias(self, flash_service): assert (flash_service.get_service(service_type="spectrum")._baseurl == "http://dc.zah.uni-heidelberg.de/fhssa?") def test_get_unsupported_standard(self, flash_service): with pytest.raises(ValueError) as excinfo: flash_service.get_service(service_type="soda#sync-1.0") assert str(excinfo.value) == ( "PyVO has no support for interfaces with standard id" " ivo://ivoa.net/std/soda#sync-1.0.") def test_get_nonexisting_standard(self, flash_service): with pytest.raises(ValueError) as excinfo: flash_service.get_service(service_type="http://nonsense#fancy") assert str(excinfo.value) == ( "No matching interface.") def test_unconstrained(self, flash_service): with pytest.raises(ValueError, match="Multiple matching interfaces found.*"): flash_service.get_service(lax=False) def test_interface_without_role(self): # There's an ugly corner case in our array simulation for # capabilities and interfaces: if there's a single untyped # interface, the returned type (or role) will be an empty # string, and the split() will return an empty list. # This swallowed the interface in pyVO 1.3. rec = get_regtap_results( access_urls="http://example.org/tap", standard_ids="ivo://ivoa.net/std/TAP", intf_types="vr:webbrowser", intf_roles="") resource = regtap.RegistryResource(rec, 0) assert len(resource.interfaces) == 1 assert resource.interfaces[0].standard_id == 'ivo://ivoa.net/std/TAP' # get_service still won't work because it needs a paramhttp # interface (and a role="std"). with pytest.raises(ValueError) as excinfo: resource.get_service(service_type='tap') assert (str(excinfo.value) == "No matching interface.") def test_get_service_by_keyword(self): rec = _makeRegistryRecord( access_urls=["http://example1.org/tap", "http://example2.org/tap", "http://example3.org/tap"], standard_ids=["ivo://ivoa.net/std/tap"] * 3, intf_types=["vs:paramhttp"] * 3, intf_roles=["std"] * 3, cap_descriptions=["Example 1 TAP", "Example 2 TAP"]) # no description for the third one service = rec.get_service(service_type="tap", keyword="Example 2") assert service.capability_description == "Example 2 TAP" def test_sia2_query(self): rec = _makeRegistryRecord( access_urls=["http://sia2.example.com", "http://sia.example.com"], standard_ids=[ "ivo://ivoa.net/std/sia#query-2.0", "ivo://ivoa.net/std/sia"], intf_roles=["std"] * 2, intf_types=["vs:paramhttp"] * 2, cap_descriptions=["A mock SIA2 Service."] * 2) assert rec.access_modes() == {"sia", "sia2"} assert rec.get_interface(service_type="sia2").access_url == 'http://sia2.example.com' assert rec.get_interface(service_type="sia").access_url == 'http://sia.example.com' def test_sia2_aux(self): rec = _makeRegistryRecord( access_urls=["http://sia2.example.com", "http://sia.example.com"], standard_ids=[ "ivo://ivoa.net/std/sia#query-aux-2.0", "ivo://ivoa.net/std/sia#aux"], intf_roles=["std"] * 2, intf_types=["vs:paramhttp"] * 2, cap_descriptions=["A mock service."] * 2) assert rec.access_modes() == {"sia#aux", "sia2#aux"} assert rec.get_interface(service_type="sia2").access_url == 'http://sia2.example.com' assert rec.get_interface(service_type="sia").access_url == 'http://sia.example.com' def test_non_standard_interface(self): intf = regtap.Interface("http://url", standard_id="", intf_type="", intf_role="") assert intf.supports("ivo://ivoa.net/std/sia") is False def test_supports_none(self): intf = regtap.Interface("http://url", standard_id="", intf_type="", intf_role="") assert intf.supports(None) is False def test_non_searchable_service(self): rec = _makeRegistryRecord() with pytest.raises(dalq.DALServiceError) as excinfo: rec.search() assert str(excinfo.value) == ( "Resource ivo://pyvo/test_regtap.py is not a searchable service") def test_list_interfaces(self): rec = _makeRegistryRecord( access_urls=["http://sia.example.com", "http://sia.example.com", "http://tap.example.com", "http://vosi.example.com", "http://website.com" ], standard_ids=["ivo://ivoa.net/std/sia#aux", "ivo://ivoa.net/std/sia#aux", "ivo://ivoa.net/std/tap", "ivo://ivoa.net/std/vosi", ""], intf_roles=["std"] * 4 + ["non standard"], intf_types=["vs:paramhttp"] * 4 + ["vr:webbrowser"], cap_descriptions=["A mock service."] * 5) # webpages should be there, but not vosi assert len(rec.list_interfaces()) == 4 # only sia ones assert len(rec.list_interfaces("sia")) == 2 class _FakeResult: """A fake class just sufficient for giving dal.query.Record enough to pull in the dict this is constructed. As an extra service, list values are stringified with regtap.TOKEN_SEP -- this is how they ought to come in from RegTAP services. """ def __init__(self, d): self.fieldnames = list(d.keys()) vals = [regtap.TOKEN_SEP.join(v) if isinstance(v, list) else v for v in d.values()] class _: class array: data = [vals] self.resultstable = _ def _makeRegistryRecord(**overrides): """returns a minimal RegistryResource instance, overriding some built-in defaults with the dict overrides. """ defaults = { "access_urls": "", "standard_ids": "", "intf_types": "", "intf_roles": "", "cap_descriptions": "", "ivoid": "ivo://pyvo/test_regtap.py", } defaults.update(overrides) return regtap.RegistryResource(_FakeResult(defaults), 0) def _mock_svc(*run_sync_results): svc = MagicMock() svc.run_sync.side_effect = list(run_sync_results) return svc class TestGetTablesUnit: """Unit tests for get_tables.""" def test_no_tables_returns_empty_dict(self): rsc = _makeRegistryRecord() with patch('pyvo.registry.regtap.get_RegTAP_service', return_value=_mock_svc([])): assert rsc.get_tables() == {} def test_limit_exceeded_raises(self): table_rows = [{"table_name": f"t{i}", "table_description": "", "table_index": i, "table_title": "", "table_utype": ""} for i in range(5)] rsc = _makeRegistryRecord() with patch('pyvo.registry.regtap.get_RegTAP_service', return_value=_mock_svc(table_rows)): with pytest.raises(dalq.DALQueryError, match=r"reports 5 tables"): rsc.get_tables(table_limit=4) def test_multiple_tables_columns_grouped_correctly(self): table_rows = [ {"table_name": "t1", "table_description": "", "table_index": 1, "table_title": "", "table_utype": ""}, {"table_name": "t2", "table_description": "", "table_index": 2, "table_title": "", "table_utype": ""}, ] column_rows = [ {"name": "c1", "ucd": "", "unit": "", "utype": "", "datatype": "char", "arraysize": "*", "extended_type": "", "column_description": "", "table_index": 1}, {"name": "c2", "ucd": "", "unit": "", "utype": "", "datatype": "char", "arraysize": "*", "extended_type": "", "column_description": "", "table_index": 2}, ] rsc = _makeRegistryRecord() with patch('pyvo.registry.regtap.get_RegTAP_service', return_value=_mock_svc(table_rows, column_rows)): result = rsc.get_tables() assert set(result.keys()) == {"t1", "t2"} assert len(result["t1"].columns) == 1 assert len(result["t2"].columns) == 1 class TestInterfaceRejection: """tests for various artificial corner cases where interface selection should fail (or just not fail). """ def test_nonunique(self): rsc = _makeRegistryRecord( access_urls=["http://a", "http://b"], standard_ids=["ivo://ivoa.net/std/tap"] * 2, intf_types=["vs:paramhttp"] * 2, intf_roles=["std"] * 2) with pytest.raises(ValueError, match="Multiple matching interfaces found.*"): rsc.get_service(service_type="tap", lax=False) def test_nonunique_lax(self): rsc = _makeRegistryRecord( access_urls=["http://a", "http://b"], standard_ids=["ivo://ivoa.net/std/tap"] * 2, intf_types=["vs:paramhttp"] * 2, intf_roles=["std"] * 2, cap_descriptions=["Test TAP service."] * 2) assert (rsc.get_service(service_type="tap", lax=True)._baseurl == "http://a") def test_nonstd_ignored(self): rsc = _makeRegistryRecord( access_urls=["http://a", "http://b"], standard_ids=["ivo://ivoa.net/std/tap"] * 2, intf_types=["vs:paramhttp"] * 2, intf_roles=["std", ""]) assert (rsc.get_service(service_type="tap", lax=False)._baseurl == "http://a") def test_select_single_matching_service(self): rsc = _makeRegistryRecord( access_urls=["http://a", "http://b"], standard_ids=["", "ivo://ivoa.net/std/tap"], intf_types=["vs:webbrowser", "vs:paramhttp"], intf_roles=["", "std"]) assert (rsc.service._baseurl == "http://b") # this makes sure caching the service obtained doesn't break # things assert (rsc.service._baseurl == "http://b") def test_capless(self): rsc = _makeRegistryRecord() with pytest.raises(ValueError) as excinfo: rsc.service._baseurl assert str(excinfo.value) == ( "No matching interface.") @pytest.mark.remote_data def test_maxrec(): with pytest.warns(DALOverflowWarning) as w: _ = regsearch(servicetype="tap", maxrec=1) assert len(w) == 1 assert str(w[0].message).startswith("Result set limited") @pytest.mark.remote_data def test_get_contact(): rsc = _makeRegistryRecord( ivoid="ivo://org.gavo.dc/flashheros/q/ssa") assert (rsc.get_contact() == "GAVO Data Centre Team (+49 6221 54 1837)" " ") @pytest.mark.remote_data def test_get_alt_identifier(): rsc = _makeRegistryRecord(ivoid="ivo://cds.vizier/i/337") assert set(rsc.get_alt_identifiers()) == { 'doi:10.26093/cds/vizier.1337', } @pytest.mark.remote_data class TestDatamodelQueries: # right now, the data model queries are all rather sui generis, and # rather fickly on top. Let's make sure they actually return something # against the live registry. Admittedly, this is about as much # a test of the VO infrastructure as of pyvo. def test_obscore(self): assert len(regsearch(rtcons.Datamodel('obscore'))) > 0 def test_epntap(self): assert len(regsearch(rtcons.Datamodel('epntap'))) > 0 def test_regtap(self): assert len(regsearch(rtcons.Datamodel('regtap'))) > 0 @pytest.mark.usefixtures('multi_interface_fixture', 'capabilities', 'flash_service') class TestExtraResourceMethods: """ tests for methods of RegistryResource containing some non-trivial logic (except service selection, which is in TestInterfaceSelection, and get_tables, which is in TestGetTables). """ def test_unique_standard_id(self): rsc = _makeRegistryRecord( access_urls=["http://a"], standard_ids=["ivo://ivoa.net/std/tap"], intf_types=["vs:paramhttp"], intf_roles=["std"]) assert rsc.standard_id == "ivo://ivoa.net/std/tap" def test_describe_multi(self, flash_service): out = io.StringIO() flash_service.describe(verbose=True, file=out) output = out.getvalue() assert "Flash/Heros SSAP" in output assert ("Access modes: datalink#links-1.1, soda#sync-1.0," " ssa, tap#aux, web" in output) assert "- webpage: http://dc.zah.uni-heidelberg.de/flashheros/q/web/form" in output assert "- tap#aux: http://dc.zah.uni-heidelberg.de/tap" in output # datalink, soda and vosi are not printed here assert "- datalink" not in output assert "Source: 1996A&A...312..539S" in output assert "Authors: Wolf" in output assert "Alternative identifier(s): doi:10.21938/" in output assert "More info: http://dc.zah" in output def test_describe_long_authors_list(self): """Check that long list of authors use et al..""" rsc = _makeRegistryRecord( access_urls=[], standard_ids=["ivo://pyvo/test"], short_name=["name"], intf_types=[], intf_roles=[], creator_seq=["a;" * 6], res_title=["title"] ) out = io.StringIO() rsc.describe(verbose=True, file=out) output = out.getvalue() # output should cut at 5 authors assert "Authors: a, a, a, a, a et al." in output def test_describe_long_author_name(self): """Check that long author names are truncated.""" rsc = _makeRegistryRecord( access_urls=[], standard_ids=["ivo://pyvo/test"], short_name=["name"], intf_types=[], intf_roles=[], creator_seq=["a" * 71], res_title=["title"] ) out = io.StringIO() rsc.describe(verbose=True, file=out) output = out.getvalue() # should cut the long author name at 70 characters assert f"Authors: {'a' * 70}..." in output def test_no_access_url(self): rsc = _makeRegistryRecord( access_urls=[], standard_ids=[], intf_types=[], intf_roles=[]) with pytest.raises(dalq.DALQueryError) as excinfo: rsc.access_url assert str(excinfo.value) == ("The resource" " ivo://pyvo/test_regtap.py has no queriable interfaces.") def test_unique_access_url(self): rsc = _makeRegistryRecord( access_urls=["http://a"], standard_ids=["ivo://ivoa.net/std/tap"], intf_types=["vs:paramhttp"], intf_roles=[""]) assert rsc.access_url == "http://a" def test_ambiguous_access_url_warns(self, recwarn): rsc = _makeRegistryRecord( access_urls=["http://a", "http://b"], standard_ids=["ivo://ivoa.net/std/tap"] * 2, intf_types=["vs:paramhttp"] * 2, intf_roles=["std"] * 2) assert rsc.access_url == "http://a" assert ('The resource ivo://pyvo/test_regtap.py has multipl' in [str(w.message)[:50] for w in recwarn]) # TODO: While I suppose the contact test should keep requiring network, # I think we should can the network responses involved in the following; # the stuff might change upstream any time and then break our unit tests. @pytest.fixture(name='obscore_tables') def _obscore_tables(scope="session"): rsc = _makeRegistryRecord( ivoid="ivo://org.gavo.dc/__system__/obscore/obscore") return rsc.get_tables() @pytest.mark.usefixtures("obscore_tables") class TestGetTables: @pytest.mark.remote_data def test_get_tables_limit_enforced(self): rsc = _makeRegistryRecord( ivoid="ivo://org.gavo.dc/tap") with pytest.raises(dalq.DALQueryError) as excinfo: rsc.get_tables() assert re.match(r"Resource ivo://org.gavo.dc/tap reports \d+ tables." " Pass a higher table_limit to see them all.", str(excinfo.value)) @pytest.mark.remote_data def test_get_tables_names(self, obscore_tables): assert (list(sorted(obscore_tables.keys())) == ["ivoa.obscore"]) @pytest.mark.remote_data def test_get_tables_table_instance(self, obscore_tables): assert (obscore_tables["ivoa.obscore"].name == "ivoa.obscore") assert (obscore_tables["ivoa.obscore"].description[:42] == "The IVOA-defined obscore table, containing") assert (obscore_tables["ivoa.obscore"].title == "GAVO Data Center Obscore Table") assert (obscore_tables["ivoa.obscore"].origin.ivoid == "ivo://org.gavo.dc/__system__/obscore/obscore") @pytest.mark.remote_data def test_get_tables_column_meta(self, obscore_tables): def getcol(name): for col in obscore_tables["ivoa.obscore"].columns: if name == col.name: return col raise KeyError(name) assert getcol("access_url").datatype.content == "char" assert getcol("access_url").datatype.arraysize == "*" assert getcol("s_region").datatype._extendedtype == "adql:region" assert getcol("access_format").ucd == 'meta.code.mime' assert getcol("em_min").unit == "m" assert (getcol("t_max").utype == "obscore:char.timeaxis.coverage.bounds.limits.stoptime") assert (getcol("t_exptime").description == "Total exposure time") @pytest.mark.remote_data def test_get_tables_utype(self, obscore_tables): assert (obscore_tables["ivoa.obscore"].utype == "ivo://ivoa.net/std/obscore#table-1.1") @pytest.mark.remote_data def test_sia2_service_operation(): svcs = regsearch( servicetype='sia2', ivoid='ivo://cadc.nrc.ca/sia') assert len(svcs) == 1 res = svcs[0].search(pos=(30, 40, 0.1), time=(time.Time(58794.9, format="mjd"), time.Time(58795, format="mjd"))) assert len(res) > 10 assert "s_dec" in res.to_table().columns def test_get_RegTAP_service_url_default(): assert regtap.get_RegTAP_service_url() == regtap.REGISTRY_BASEURL def test_get_RegTAP_service_url_reflects_changes(): alt_svc = "https://example.com/tap" previous_url = regtap.REGISTRY_BASEURL try: regtap.choose_RegTAP_service(alt_svc) assert regtap.get_RegTAP_service_url() == alt_svc finally: regtap.choose_RegTAP_service(previous_url) @pytest.mark.remote_data def test_endpoint_switching(): alt_svc = "https://mast.stsci.edu/vo-tap/api/v0.1/registry" previous_url = regtap.REGISTRY_BASEURL try: regtap.choose_RegTAP_service(alt_svc) assert regtap.get_RegTAP_service()._baseurl == alt_svc res = regtap.search(keywords="wirr") assert len(res) > 0 finally: regtap.choose_RegTAP_service(previous_url) astropy-pyvo-f0fdda3/pyvo/registry/tests/test_rtcons.py000066400000000000000000000722151521254414300237170ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.registry.rtcons, i.e. RegTAP constraints and query building. """ import datetime from astropy.time import Time from astropy import units as u from astropy.coordinates import SkyCoord from astropy.utils.exceptions import AstropyDeprecationWarning import numpy as np import pytest from pyvo import registry from pyvo.registry import rtcons from pyvo.dal import query as dalq from .commonfixtures import messenger_vocabulary, FAKE_GAVO, FAKE_PLAIN # noqa: F401 # We should make sure non-legacy numpy works as expected for string literal generation np.set_printoptions(legacy=False) def _build_regtap_query_with_fake( *args, service=FAKE_GAVO, **kwargs): return rtcons.build_regtap_query( *args, service=service, **kwargs) def _make_subquery(table, condition): """returns how condition would show up in something produced by SubqueriedConstraint. """ return f"ivoid IN (SELECT DISTINCT ivoid FROM {table} WHERE {condition})" class TestAbstractConstraint: def test_no_search_condition(self): with pytest.raises(NotImplementedError): rtcons.Constraint().get_search_condition(FAKE_GAVO) class TestSQLLiterals: @pytest.fixture(scope="class", autouse=True) def literals(self): class _WithFillers(rtcons.Constraint): _fillers = { "aString": "some harmless stuff", "nastyString": "that's not nasty", "bytes": b"keep this ascii for now", "anInt": 210, "aFloat": 5e7, "numpyStuff": np.float64(23.7), "timestamp": datetime.datetime(2021, 6, 30, 9, 1), } return _WithFillers()._get_sql_literals() def test_strings(self, literals): assert literals["aString"] == "'some harmless stuff'" assert literals["nastyString"] == "'that''s not nasty'" def test_bytes(self, literals): assert literals["bytes"] == "'keep this ascii for now'" def test_int(self, literals): assert literals["anInt"] == "210" def test_float(self, literals): assert literals["aFloat"] == "50000000.0" def test_numpy(self, literals): assert float(literals["numpyStuff"]) - 23.7 < 1e-10 def test_timestamp(self, literals): assert literals["timestamp"] == "'2021-06-30T09:01:00'" def test_odd_type_rejected(self): with pytest.raises(ValueError) as excinfo: rtcons.make_sql_literal({}) assert str(excinfo.value) == "Cannot format {} as a SQL literal" class TestFreetextConstraint: def test_basic(self): assert rtcons.Freetext("star").get_search_condition(FAKE_GAVO) == ( "ivoid IN (SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_description, 'star') " "UNION ALL SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_title, 'star') " "UNION ALL SELECT DISTINCT ivoid FROM rr.res_subject" " WHERE rr.res_subject.res_subject ILIKE '%star%')") def test_interesting_literal(self): assert rtcons.Freetext("α Cen's planets").get_search_condition(FAKE_GAVO) == ( "ivoid IN (SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_description, 'α Cen''s planets') " "UNION ALL SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_title, 'α Cen''s planets') " "UNION ALL SELECT DISTINCT ivoid FROM rr.res_subject" " WHERE rr.res_subject.res_subject" " ILIKE '%α Cen''s planets%')") def test_multipleLiterals(self): assert rtcons.Freetext("term1", "term2").get_search_condition(FAKE_GAVO) == ( "ivoid IN (SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_description, 'term1') " "UNION ALL SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_title, 'term1') " "UNION ALL SELECT DISTINCT ivoid FROM rr.res_subject" " WHERE rr.res_subject.res_subject ILIKE '%term1%')" " AND " "ivoid IN (SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_description, 'term2') " "UNION ALL SELECT DISTINCT ivoid FROM rr.resource" " WHERE 1=ivo_hasword(res_title, 'term2') " "UNION ALL SELECT DISTINCT ivoid FROM rr.res_subject" " WHERE rr.res_subject.res_subject ILIKE '%term2%')") def test_adaption_to_service(self): assert rtcons.Freetext("term1", "term2").get_search_condition(FAKE_PLAIN) == ( "( 1=ivo_hasword(res_description, 'term1') OR 1=ivo_hasword(res_title, 'term1')" " OR rr.res_subject.res_subject ILIKE '%term1%')" " AND ( 1=ivo_hasword(res_description, 'term2') OR 1=ivo_hasword(res_title, 'term2')" " OR rr.res_subject.res_subject ILIKE '%term2%')") class TestAuthorConstraint: def test_basic(self): assert (rtcons.Author("%Hubble%").get_search_condition(FAKE_GAVO) == _make_subquery("rr.res_role", "role_name LIKE '%Hubble%' AND base_role='creator'")) class TestServicetypeConstraint: def test_standardmap(self): assert (rtcons.Servicetype("scs").get_search_condition(FAKE_GAVO) == "standard_id IN ('ivo://ivoa.net/std/conesearch')") def test_fulluri(self): assert (rtcons.Servicetype("http://extstandards/invention" ).get_search_condition(FAKE_GAVO) == "standard_id IN ('http://extstandards/invention')") def test_multi(self): assert (rtcons.Servicetype("http://extstandards/invention", "sia" ).get_search_condition(FAKE_GAVO) == "standard_id IN ('http://extstandards/invention'," " 'ivo://ivoa.net/std/sia')") def test_includeaux(self): assert (rtcons.Servicetype("http://extstandards/invention", "sia1" ).include_auxiliary_services().get_search_condition(FAKE_GAVO) == "standard_id IN ('http://extstandards/invention'," " 'http://extstandards/invention#aux'," " 'ivo://ivoa.net/std/sia'," " 'ivo://ivoa.net/std/sia#aux')") def test_junk_rejected(self): with pytest.raises(dalq.DALQueryError) as excinfo: rtcons.Servicetype("junk") assert str(excinfo.value) == ("Service type junk is neither" " a full standard URI nor one of the bespoke identifiers" " image, sia, sia1, spectrum, ssap, ssa, scs, conesearch, line, slap," " table, tap, sia2, hats, hips") def test_legacy_term(self): assert (rtcons.Servicetype("conesearch").get_search_condition(FAKE_GAVO) == "standard_id IN ('ivo://ivoa.net/std/conesearch')") def test_sia2(self): assert ( rtcons.Servicetype("conesearch", "sia2").get_search_condition(FAKE_GAVO) == ("standard_id IN ('ivo://ivoa.net/std/conesearch')" " OR standard_id like 'ivo://ivoa.net/std/sia#query-2.%'")) def test_sia2_aux(self): constraint = rtcons.Servicetype("conesearch", "sia2").include_auxiliary_services() assert (constraint.get_search_condition(FAKE_GAVO) == ("standard_id IN ('ivo://ivoa.net/std/conesearch', 'ivo://ivoa.net/std/conesearch#aux')" " OR standard_id like 'ivo://ivoa.net/std/sia#query-2.%'" " OR standard_id like 'ivo://ivoa.net/std/sia#query-aux-2.%'")) def test_hats(self): assert (rtcons.Servicetype("hats").get_search_condition(FAKE_GAVO) == "standard_id like 'ivo://ivoa.net/std/hats#hats-%'") def test_hats_aux(self): # hats has no auxiliary service concept; aux expansion should not add a pattern constraint = rtcons.Servicetype("hats").include_auxiliary_services() assert (constraint.get_search_condition(FAKE_GAVO) == "standard_id like 'ivo://ivoa.net/std/hats#hats-%'") def test_hips(self): assert (rtcons.Servicetype("hips").get_search_condition(FAKE_GAVO) == "standard_id like 'ivo://ivoa.net/std/hips#hips-1.%'") def test_image_deprecated(self): with pytest.warns(AstropyDeprecationWarning): assert (rtcons.Servicetype("image").get_search_condition(FAKE_GAVO) == "standard_id IN ('ivo://ivoa.net/std/sia')") def test_spectrum_deprecated(self): with pytest.warns(AstropyDeprecationWarning): assert (rtcons.Servicetype("spectrum").get_search_condition(FAKE_GAVO) == "standard_id IN ('ivo://ivoa.net/std/ssa')") @pytest.mark.usefixtures('messenger_vocabulary') class TestWavebandConstraint: def test_basic(self): assert (rtcons.Waveband("Infrared", "EUV").get_search_condition(FAKE_GAVO) == "1 = ivo_hashlist_has(rr.resource.waveband, 'infrared')" " OR 1 = ivo_hashlist_has(rr.resource.waveband, 'euv')") def test_junk_rejected(self): with pytest.raises(dalq.DALQueryError) as excinfo: rtcons.Waveband("junk") assert str(excinfo.value) == ( "Waveband junk is not in the IVOA messenger vocabulary http://www.ivoa.net/rdf/messenger.") def test_normalisation(self): assert (rtcons.Waveband("oPtIcAl").get_search_condition(FAKE_GAVO) == "1 = ivo_hashlist_has(rr.resource.waveband, 'optical')") class TestDatamodelConstraint: def test_junk_rejected(self): with pytest.raises(dalq.DALQueryError) as excinfo: rtcons.Datamodel("junk") assert str(excinfo.value) == ( "Unknown data model id junk. Known are: epntap, obscore, obscore_new, regtap.") def test_obscore_new(self): cons = rtcons.Datamodel("obscore_new") assert (cons.get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.res_table" " NATURAL JOIN rr.resource" " WHERE table_utype LIKE 'ivo://ivoa.net/std/obscore#table-1.%'" " AND res_type = 'vs:catalogresource')") assert (cons._extra_tables == []) def test_obscore(self): cons = rtcons.Datamodel("ObsCore") assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.res_detail", "detail_xpath = '/capability/dataModel/@ivo-id'" " AND 1 = ivo_nocasematch(detail_value," " 'ivo://ivoa.net/std/obscore%')")) assert cons._extra_tables == [] def test_epntap(self): cons = rtcons.Datamodel("epntap") assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.res_table", "table_utype LIKE 'ivo://vopdc.obspm/std/epncore#schema-2.%'" " OR table_utype LIKE 'ivo://ivoa.net/std/epntap#table-2.%'")) assert cons._extra_tables == [] def test_regtap(self): cons = rtcons.Datamodel("regtap") assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.res_detail", "detail_xpath = '/capability/dataModel/@ivo-id'" " AND 1 = ivo_nocasematch(detail_value," " 'ivo://ivoa.net/std/RegTAP#1.%')")) assert cons._extra_tables == [] class TestIvoidConstraint: def test_basic(self): cons = rtcons.Ivoid("ivo://example/some_path") assert (cons.get_search_condition(FAKE_GAVO) == "ivoid='ivo://example/some_path'") def test_multiple(self): cons = rtcons.Ivoid( "ivo://org.gavo.dc/tap", "ivo://org.gavo.dc/__system__/siap2/sitewide") assert (cons.get_search_condition(FAKE_GAVO) == ("ivoid='ivo://org.gavo.dc/tap'" " OR ivoid='ivo://org.gavo.dc/__system__/siap2/sitewide'")) class TestUCDConstraint: def test_basic(self): cons = rtcons.UCD("phot.mag;em.opt.%", "phot.mag;em.ir.%") assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.table_column", "ucd LIKE 'phot.mag;em.opt.%' OR ucd LIKE 'phot.mag;em.ir.%'")) @pytest.mark.remote_data class TestUATConstraint: def test_basic(self): cons = rtcons.UAT("solar-flares") assert (cons.get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.res_subject WHERE res_subject in ('solar-flares'))") def test_nonterm(self): with pytest.raises(dalq.DALQueryError, match="solarium does not identify"): rtcons.UAT("solarium") def test_wider(self): cons = rtcons.UAT("solar-flares", expand_up=2) assert (cons.get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.res_subject WHERE res_subject in" " ('solar-activity', 'solar-flares', 'solar-physics', 'solar-storm'))") def test_narrower(self): cons = rtcons.UAT("solar-activity", expand_down=1) assert (cons.get_search_condition(FAKE_GAVO) == "ivoid IN (SELECT DISTINCT ivoid FROM rr.res_subject WHERE res_subject in" " ('solar-active-regions', 'solar-activity', 'solar-filaments', 'solar-flares'," " 'solar-magnetic-bright-points', 'solar-prominences', 'solar-storm'))") cons = rtcons.UAT("solar-activity", expand_down=2) assert (cons.get_search_condition(FAKE_GAVO).startswith( "ivoid IN (SELECT DISTINCT ivoid FROM rr.res_subject WHERE res_subject in" " ('ephemeral-active-regions', 'quiescent-solar-prominence'," " 'solar-active-region-filaments'")) class TestSpatialConstraint: def test_point(self): cons = registry.Spatial([23, -40]) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(6, POINT(23, -40)), coverage)") assert cons._extra_tables == [] def test_circle_and_order(self): cons = registry.Spatial([23, -40, 0.25], order=7) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(7, CIRCLE(23, -40, 0.25)), coverage)") def test_polygon(self): cons = registry.Spatial([23, -40, 26, -39, 25, -43]) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(6, POLYGON(23, -40, 26, -39, 25, -43)), coverage)") def test_moc(self): cons = registry.Spatial("0/1-3 3/") assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC('0/1-3 3/'), coverage)") def test_moc_and_inclusive(self): cons = registry.Spatial("0/1-3 3/", inclusive=True) assert cons.get_search_condition(FAKE_GAVO) == ( "ivoid IN (SELECT DISTINCT ivoid FROM rr.stc_spatial WHERE 1 = " "CONTAINS(MOC('0/1-3 3/'), coverage) OR coverage IS NULL)") def test_SkyCoord(self): cons = registry.Spatial(SkyCoord(3 * u.deg, -30 * u.deg)) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(6, POINT(3.0, -30.0)), coverage)") def test_SkyCoord_Circle(self): cons = registry.Spatial((SkyCoord(3 * u.deg, -30 * u.deg), 3)) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(6, CIRCLE(3.0, -30.0, 3)), coverage)") def test_SkyCoord_Circle_RadiusQuantity(self): for radius in [3*u.deg, 180*u.Unit('arcmin'), 10800*u.Unit('arcsec')]: cons = registry.Spatial((SkyCoord(3 * u.deg, -30 * u.deg), radius)) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(MOC(6, CIRCLE(3.0, -30.0, 3.0)), coverage)") with pytest.raises(ValueError, match="is not of type angle."): cons = registry.Spatial((SkyCoord(3 * u.deg, -30 * u.deg), (1 * u.m))) def test_enclosed(self): cons = registry.Spatial("0/1-3", intersect="enclosed") assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = CONTAINS(coverage, MOC('0/1-3'))") def test_overlaps(self): cons = registry.Spatial("0/1-3", intersect="overlaps") assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spatial", "1 = INTERSECTS(coverage, MOC('0/1-3'))") def test_not_an_intersect_mode(self): with pytest.raises(ValueError, match="'intersect' should be one of 'covers', 'enclosed'," " or 'overlaps' but its current value is 'wrong'."): registry.Spatial("0/1-3", intersect="wrong") def test_no_MOC(self): cons = registry.Spatial((SkyCoord(3 * u.deg, -30 * u.deg), 3)) with pytest.raises(rtcons.RegTAPFeatureMissing) as excinfo: cons.get_search_condition(FAKE_PLAIN) assert (str(excinfo.value) == "Current RegTAP service does not support MOC.") def test_no_spatial_table(self): cons = registry.Spatial((SkyCoord(3 * u.deg, -30 * u.deg), 3)) previous = FAKE_GAVO.tables.pop("rr.stc_spatial") try: with pytest.raises(rtcons.RegTAPFeatureMissing) as excinfo: cons.get_search_condition(FAKE_GAVO) assert (str(excinfo.value) == "stc_spatial missing on current RegTAP service") finally: FAKE_GAVO.tables["rr.spatial"] = previous class TestSpectralConstraint: # These tests might need some float literal fuzziness. I'm just # too lazy at this point to see if pytest has something on board # that would be useful there. def test_energy_float(self): cons = registry.Spectral(1e-19) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "1e-19 BETWEEN spectral_start AND spectral_end") def test_energy_eV(self): cons = registry.Spectral(5 * u.eV) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "8.01088317e-19 BETWEEN spectral_start AND spectral_end")) def test_energy_interval(self): cons = registry.Spectral((1e-10 * u.erg, 2e-10 * u.erg)) assert cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "1 = ivo_interval_overlaps(spectral_start, spectral_end, 1e-17, 2e-17)") def test_wavelength(self): cons = registry.Spectral(5000 * u.Angstrom) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "3.9728917142978567e-19 BETWEEN spectral_start AND spectral_end")) def test_wavelength_interval(self): cons = registry.Spectral((20 * u.cm, 22 * u.cm)) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "1 = ivo_interval_overlaps(spectral_start, spectral_end," " 9.932229285744642e-25, 9.029299350676949e-25)")) def test_frequency(self): cons = registry.Spectral(2 * u.GHz) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "1.32521403e-24 BETWEEN spectral_start AND spectral_end")) def test_frequency_and_inclusive(self): cons = registry.Spectral(2 * u.GHz, inclusive=True) assert (cons.get_search_condition(FAKE_GAVO) == "(ivoid IN (SELECT DISTINCT ivoid FROM rr.stc_spectral" " WHERE 1.32521403e-24 BETWEEN spectral_start AND spectral_end))" " OR NOT EXISTS(SELECT 1 FROM rr.stc_spectral AS inner_s" " WHERE inner_s.ivoid=rr.resource.ivoid)") def test_frequency_interval(self): cons = registry.Spectral((88 * u.MHz, 102 * u.MHz)) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_spectral", "1 = ivo_interval_overlaps(" "spectral_start, spectral_end, 5.830941732e-26, 6.758591553e-26)")) def test_no_spectral(self): cons = registry.Spectral((88 * u.MHz, 102 * u.MHz)) with pytest.raises(rtcons.RegTAPFeatureMissing) as excinfo: cons.get_search_condition(FAKE_PLAIN) assert (str(excinfo.value) == "stc_spectral missing on current RegTAP service") class TestTemporalConstraint: def test_plain_float(self): cons = registry.Temporal((54130, 54200)) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_temporal", "1 = ivo_interval_overlaps(time_start, time_end, 54130, 54200)")) def test_plain_float_and_inclusive(self): cons = registry.Temporal((54130, 54200), inclusive=True) assert (cons.get_search_condition(FAKE_GAVO) == "(ivoid IN (SELECT DISTINCT ivoid FROM rr.stc_temporal" " WHERE 1 = ivo_interval_overlaps(time_start, time_end, 54130, 54200)))" " OR NOT EXISTS(SELECT 1 FROM rr.stc_temporal AS inner_t" " WHERE inner_t.ivoid=rr.resource.ivoid)") def test_single_time(self): cons = registry.Temporal(Time('2022-01-10')) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery("rr.stc_temporal", "59589.0 BETWEEN time_start AND time_end")) def test_time_interval(self): cons = registry.Temporal((Time(2459000, format='jd'), Time(59002, format='mjd'))) assert (cons.get_search_condition(FAKE_GAVO) == _make_subquery( "rr.stc_temporal", "1 = ivo_interval_overlaps(time_start, time_end, 58999.5, 59002.0)")) def test_multi_times_rejected(self): with pytest.raises(ValueError) as excinfo: registry.Temporal(Time(['1999-01-01', '2010-01-01'])) assert (str(excinfo.value) == "RegTAP time constraints must" " be made from single time instants.") def test_no_temporal(self): cons = registry.Temporal((Time(2459000, format='jd'), Time(59002, format='mjd'))) with pytest.raises(rtcons.RegTAPFeatureMissing) as excinfo: cons.get_search_condition(FAKE_PLAIN) assert (str(excinfo.value) == "stc_temporal missing on current RegTAP service") class TestWhereClauseBuilding: @staticmethod def where_clause_for(*args, **kwargs): cons = list(args) + rtcons.keywords_to_constraints(kwargs) return _build_regtap_query_with_fake(cons).split("\nWHERE\n", 1)[1].split("\nGROUP BY\n")[0] @pytest.mark.usefixtures('messenger_vocabulary') def test_from_constraints(self): assert self.where_clause_for( rtcons.Waveband("EUV"), rtcons.Author("%Hubble%"))\ == ("(1 = ivo_hashlist_has(rr.resource.waveband, 'euv'))\n" " AND ({})".format( _make_subquery( "rr.res_role", "role_name LIKE '%Hubble%' AND base_role='creator'"))) @pytest.mark.usefixtures('messenger_vocabulary') def test_from_keywords(self): assert self.where_clause_for( waveband="EUV", author="%Hubble%")\ == ("(1 = ivo_hashlist_has(rr.resource.waveband, 'euv'))\n AND ({})".format( _make_subquery("rr.res_role", "role_name LIKE '%Hubble%' AND base_role='creator'"))) @pytest.mark.usefixtures('messenger_vocabulary') def test_mixed(self): assert self.where_clause_for( rtcons.Waveband("EUV"), author="%Hubble%")\ == ("(1 = ivo_hashlist_has(rr.resource.waveband, 'euv'))\n" " AND ({})".format( _make_subquery("rr.res_role", "role_name LIKE '%Hubble%' AND base_role='creator'"))) def test_bad_keyword(self): with pytest.raises(TypeError) as excinfo: _build_regtap_query_with_fake( *rtcons.keywords_to_constraints({"foo": "bar"})) # the following assertion will fail when new constraints are # defined (or old ones vanish). I'd say that's a convenient # way to track changes; so, let's update the assertion as we # go. assert str(excinfo.value) == ("foo is not a valid registry" " constraint keyword. Use one of" " author, datamodel, ivoid, keywords, servicetype," " spatial, spectral, temporal, uat, ucd, waveband.") def test_with_legacy_keyword(self): assert self.where_clause_for( "plain", "string" ) == ( '(ivoid IN (SELECT DISTINCT ivoid FROM rr.resource WHERE ' "1=ivo_hasword(res_description, 'plain') UNION ALL SELECT DISTINCT ivoid FROM rr.resource " "WHERE 1=ivo_hasword(res_title, 'plain') UNION ALL SELECT DISTINCT ivoid FROM " "rr.res_subject WHERE rr.res_subject.res_subject ILIKE '%plain%'))\n" ' AND (ivoid IN (SELECT DISTINCT ivoid FROM rr.resource WHERE ' "1=ivo_hasword(res_description, 'string') UNION ALL SELECT DISTINCT ivoid FROM rr.resource " "WHERE 1=ivo_hasword(res_title, 'string') UNION ALL SELECT DISTINCT ivoid FROM " "rr.res_subject WHERE rr.res_subject.res_subject ILIKE '%string%'))") class TestSelectClause: def test_expected_columns(self): # This will break as regtap.RegistryResource.expected_columns # is changed. Just update the assertion then. assert _build_regtap_query_with_fake( rtcons.keywords_to_constraints({"author": "%Hubble%"}) ).split("\nFROM\nrr.resource\n")[0] == ( "SELECT\n" "ivoid, " "res_type, " "short_name, " "res_title, " "content_level, " "res_description, " "reference_url, " "creator_seq, " "created, " "updated, " "rights, " "content_type, " "source_format, " "source_value, " "region_of_regard, " "waveband, " "\n ivo_string_agg(COALESCE(access_url, ''), ':::py VO sep:::') AS access_urls, " "\n ivo_string_agg(COALESCE(standard_id, ''), ':::py VO sep:::') AS standard_ids, " "\n ivo_string_agg(COALESCE(intf_type, ''), ':::py VO sep:::') AS intf_types, " "\n ivo_string_agg(COALESCE(intf_role, ''), ':::py VO sep:::') AS intf_roles, " "\n ivo_string_agg(COALESCE(cap_description, ''), ':::py VO sep:::') AS cap_descriptions") def test_group_by_columns(self): # Again, this will break as regtap.RegistryResource.expected_columns # is changed. Just update the assertion then. assert (_build_regtap_query_with_fake([rtcons.Author("%Hubble%")]).split("\nGROUP BY\n")[-1] == ("ivoid, " "res_type, " "short_name, " "res_title, " "content_level, " "res_description, " "reference_url, " "creator_seq, " "created, " "updated, " "rights, " "content_type, " "source_format, " "source_value, " "region_of_regard, " "waveband")) def test_joined_tables(self): expected_tables = [ # from author constraint "rr.res_role", # default tables "rr.resource", "rr.capability", "rr.interface", ] assert all(table in _build_regtap_query_with_fake([rtcons.Author("%Hubble%")]) for table in expected_tables) @pytest.mark.remote_data def test_all_constraints(): text = rtcons.Freetext("star") author = rtcons.Author(r"%ESA%") servicetype = rtcons.Servicetype("tap") waveband = rtcons.Waveband("optical") datamodel = rtcons.Datamodel("obscore") ivoid = rtcons.Ivoid(r"ivoid") ucd = rtcons.UCD(r"pos.eq.ra") moc = rtcons.Spatial("0/0-11", intersect="overlaps") spectral = rtcons.Spectral((5000 * u.Angstrom, 6000 * u.Angstrom)) time = rtcons.Temporal((50000, 60000)) uat = rtcons.UAT('galaxies', expand_down=3) result = registry.search( text, author, servicetype, waveband, datamodel, ivoid, ucd, moc, spectral, time, uat ) assert result.fieldnames == ( 'ivoid', 'res_type', 'short_name', 'res_title', 'content_level', 'res_description', 'reference_url', 'creator_seq', 'created', 'updated', 'rights', 'content_type', 'source_format', 'source_value', 'region_of_regard', 'waveband', 'access_urls', 'standard_ids', 'intf_types', 'intf_roles', 'cap_descriptions') astropy-pyvo-f0fdda3/pyvo/samp/000077500000000000000000000000001521254414300167155ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/samp/__init__.py000066400000000000000000000020401521254414300210220ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ This subpackage provides classes to communicate with other applications via the `Simple Application Messaging Protocol (SAMP) `_. Before integration into Astropy it was known as `SAMPy `_, and was developed by Luigi Paioro (INAF - Istituto Nazionale di Astrofisica). """ from astropy import config as _config from .client import * from .constants import * from .errors import * from .hub import * from .hub_proxy import * from .integrated_client import * from .utils import * from .vo_helpers import * class Conf(_config.ConfigNamespace): """ Configuration parameters for `pyvo.samp`. """ use_internet = _config.ConfigItem( True, "Whether to allow `pyvo.samp` to use the internet, if available.", aliases=["pyvo.samp.utils.use_internet"], ) n_retries = _config.ConfigItem( 10, "How many times to retry communications when they fail" ) conf = Conf() astropy-pyvo-f0fdda3/pyvo/samp/client.py000066400000000000000000000613371521254414300205570ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import copy import os import select import socket import threading import warnings from urllib.parse import urlunparse from .constants import SAMP_STATUS_OK, SAMP_STATUS_WARNING from .errors import SAMPClientError, SAMPWarning from .hub import SAMPHubServer from .standard_profile import ThreadingXMLRPCServer from .utils import get_num_args, internet_on __all__ = ["SAMPClient"] class SAMPClient: """ Utility class which provides facilities to create and manage a SAMP compliant XML-RPC server that acts as SAMP callable client application. Parameters ---------- hub : :class:`~pyvo.samp.SAMPHubProxy` An instance of :class:`~pyvo.samp.SAMPHubProxy` to be used for messaging with the SAMP Hub. name : str, optional Client name (corresponding to ``samp.name`` metadata keyword). description : str, optional Client description (corresponding to ``samp.description.text`` metadata keyword). metadata : dict, optional Client application metadata in the standard SAMP format. addr : str, optional Listening address (or IP). This defaults to 127.0.0.1 if the internet is not reachable, otherwise it defaults to the host name. port : int, optional Listening XML-RPC server socket port. If left set to 0 (the default), the operating system will select a free port. callable : bool, optional Whether the client can receive calls and notifications. If set to `False`, then the client can send notifications and calls, but can not receive any. """ # TODO: define what is meant by callable def __init__( self, hub, name=None, description=None, metadata=None, addr=None, port=0, callable=True, ): # GENERAL self._is_running = False self._is_registered = False if metadata is None: metadata = {} if name is not None: metadata["samp.name"] = name if description is not None: metadata["samp.description.text"] = description self._metadata = metadata self._addr = addr self._port = port self._xmlrpcAddr = None self._callable = callable # HUB INTERACTION self.client = None self._public_id = None self._private_key = None self._hub_id = None self._notification_bindings = {} self._call_bindings = { "samp.app.ping": [self._ping, {}], "client.env.get": [self._client_env_get, {}], } self._response_bindings = {} self._host_name = "127.0.0.1" if internet_on(): try: self._host_name = socket.getfqdn() socket.getaddrinfo(self._addr or self._host_name, self._port or 0) except OSError: self._host_name = "127.0.0.1" self.hub = hub if self._callable: self._thread = threading.Thread(target=self._serve_forever) self._thread.daemon = True self.client = ThreadingXMLRPCServer( (self._addr or self._host_name, self._port), logRequests=False, allow_none=True, ) self.client.register_introspection_functions() self.client.register_function( self.receive_notification, "samp.client.receiveNotification" ) self.client.register_function(self.receive_call, "samp.client.receiveCall") self.client.register_function( self.receive_response, "samp.client.receiveResponse" ) # If the port was set to zero, then the operating system has # selected a free port. We now check what this port number is. if self._port == 0: self._port = self.client.socket.getsockname()[1] protocol = "http" self._xmlrpcAddr = urlunparse( ( protocol, f"{self._addr or self._host_name}:{self._port}", "", "", "", "", ) ) def start(self): """ Start the client in a separate thread (non-blocking). This only has an effect if ``callable`` was set to `True` when initializing the client. """ if self._callable: self._is_running = True self._run_client() def stop(self, timeout=10.0): """ Stop the client. Parameters ---------- timeout : float Timeout after which to give up if the client cannot be cleanly shut down. """ # Setting _is_running to False causes the loop in _serve_forever to # exit. The thread should then stop running. We wait for the thread to # terminate until the timeout, then we continue anyway. self._is_running = False if self._callable and self._thread.is_alive(): self._thread.join(timeout) if self._thread.is_alive(): raise SAMPClientError( f"Client was not shut down successfully (timeout={timeout}s)" ) @property def is_running(self): """ Whether the client is currently running. """ return self._is_running @property def is_registered(self): """ Whether the client is currently registered. """ return self._is_registered def _run_client(self): if self._callable: self._thread.start() def _serve_forever(self): while self._is_running: try: read_ready = select.select([self.client.socket], [], [], 0.1)[0] except OSError as exc: warnings.warn( f"Call to select in SAMPClient failed: {exc}", SAMPWarning ) else: if read_ready: self.client.handle_request() self.client.server_close() def _ping(self, private_key, sender_id, msg_id, msg_mtype, msg_params, message): reply = {"samp.status": SAMP_STATUS_OK, "samp.result": {}} self.hub.reply(private_key, msg_id, reply) def _client_env_get( self, private_key, sender_id, msg_id, msg_mtype, msg_params, message ): if msg_params["name"] in os.environ: reply = { "samp.status": SAMP_STATUS_OK, "samp.result": {"value": os.environ[msg_params["name"]]}, } else: reply = { "samp.status": SAMP_STATUS_WARNING, "samp.result": {"value": ""}, "samp.error": {"samp.errortxt": "Environment variable not defined."}, } self.hub.reply(private_key, msg_id, reply) def _handle_notification(self, private_key, sender_id, message): if private_key == self.get_private_key() and "samp.mtype" in message: msg_mtype = message["samp.mtype"] del message["samp.mtype"] msg_params = message["samp.params"] del message["samp.params"] msubs = SAMPHubServer.get_mtype_subtypes(msg_mtype) for mtype in msubs: if mtype in self._notification_bindings: bound_func = self._notification_bindings[mtype][0] if get_num_args(bound_func) == 5: bound_func( private_key, sender_id, msg_mtype, msg_params, message ) else: bound_func( private_key, sender_id, None, msg_mtype, msg_params, message ) return "" def receive_notification(self, private_key, sender_id, message): """ Standard callable client ``receive_notification`` method. This method is automatically handled when the :meth:`~pyvo.samp.client.SAMPClient.bind_receive_notification` method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from the :class:`~pyvo.samp.SAMPClient` class this method should be overwritten. .. note:: When overwritten, this method must always return a string result (even empty). Parameters ---------- private_key : str Client private key. sender_id : str Sender public ID. message : dict Received message. Returns ------- confirmation : str Any confirmation string. """ return self._handle_notification(private_key, sender_id, message) def _handle_call(self, private_key, sender_id, msg_id, message): if private_key == self.get_private_key() and "samp.mtype" in message: msg_mtype = message["samp.mtype"] del message["samp.mtype"] msg_params = message["samp.params"] del message["samp.params"] msubs = SAMPHubServer.get_mtype_subtypes(msg_mtype) for mtype in msubs: if mtype in self._call_bindings: self._call_bindings[mtype][0]( private_key, sender_id, msg_id, msg_mtype, msg_params, message ) return "" def receive_call(self, private_key, sender_id, msg_id, message): """ Standard callable client ``receive_call`` method. This method is automatically handled when the :meth:`~pyvo.samp.client.SAMPClient.bind_receive_call` method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from the :class:`~pyvo.samp.SAMPClient` class this method should be overwritten. .. note:: When overwritten, this method must always return a string result (even empty). Parameters ---------- private_key : str Client private key. sender_id : str Sender public ID. msg_id : str Message ID received. message : dict Received message. Returns ------- confirmation : str Any confirmation string. """ return self._handle_call(private_key, sender_id, msg_id, message) def _handle_response(self, private_key, responder_id, msg_tag, response): if private_key == self.get_private_key() and msg_tag in self._response_bindings: self._response_bindings[msg_tag]( private_key, responder_id, msg_tag, response ) return "" def receive_response(self, private_key, responder_id, msg_tag, response): """ Standard callable client ``receive_response`` method. This method is automatically handled when the :meth:`~pyvo.samp.client.SAMPClient.bind_receive_response` method is used to bind distinct operations to MTypes. In case of a customized callable client implementation that inherits from the :class:`~pyvo.samp.SAMPClient` class this method should be overwritten. .. note:: When overwritten, this method must always return a string result (even empty). Parameters ---------- private_key : str Client private key. responder_id : str Responder public ID. msg_tag : str Response message tag. response : dict Received response. Returns ------- confirmation : str Any confirmation string. """ return self._handle_response(private_key, responder_id, msg_tag, response) def bind_receive_message(self, mtype, function, declare=True, metadata=None): """ Bind a specific MType to a function or class method, being intended for a call or a notification. The function must be of the form:: def my_function_or_method( private_key, sender_id, msg_id, mtype, params, extra) where ``private_key`` is the client private-key, ``sender_id`` is the notification sender ID, ``msg_id`` is the Hub message-id (calls only, otherwise is `None`), ``mtype`` is the message MType, ``params`` is the message parameter set (content of ``"samp.params"``) and ``extra`` is a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default. Parameters ---------- mtype : str MType to be caught. function : callable Application function to be used when ``mtype`` is received. declare : bool, optional Specify whether the client must be automatically declared as subscribed to the MType (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). metadata : dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). """ self.bind_receive_call(mtype, function, declare=declare, metadata=metadata) self.bind_receive_notification( mtype, function, declare=declare, metadata=metadata ) def bind_receive_notification(self, mtype, function, declare=True, metadata=None): """ Bind a specific MType notification to a function or class method. The function must be of the form:: def my_function_or_method( private_key, sender_id, mtype, params, extra) where ``private_key`` is the client private-key, ``sender_id`` is the notification sender ID, ``mtype`` is the message MType, ``params`` is the notified message parameter set (content of ``"samp.params"``) and ``extra`` is a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default. Parameters ---------- mtype : str MType to be caught. function : callable Application function to be used when ``mtype`` is received. declare : bool, optional Specify whether the client must be automatically declared as subscribed to the MType (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). metadata : dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). """ if self._callable: if not metadata: metadata = {} self._notification_bindings[mtype] = [function, metadata] if declare: self._declare_subscriptions() else: raise SAMPClientError("Client not callable.") def bind_receive_call(self, mtype, function, declare=True, metadata=None): """ Bind a specific MType call to a function or class method. The function must be of the form:: def my_function_or_method( private_key, sender_id, msg_id, mtype, params, extra) where ``private_key`` is the client private-key, ``sender_id`` is the notification sender ID, ``msg_id`` is the Hub message-id, ``mtype`` is the message MType, ``params`` is the message parameter set (content of ``"samp.params"``) and ``extra`` is a dictionary containing any extra message map entry. The client is automatically declared subscribed to the MType by default. Parameters ---------- mtype : str MType to be caught. function : callable Application function to be used when ``mtype`` is received. declare : bool, optional Specify whether the client must be automatically declared as subscribed to the MType (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). metadata : dict, optional Dictionary containing additional metadata to declare associated with the MType subscribed to (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). """ if self._callable: if not metadata: metadata = {} self._call_bindings[mtype] = [function, metadata] if declare: self._declare_subscriptions() else: raise SAMPClientError("Client not callable.") def bind_receive_response(self, msg_tag, function): """ Bind a specific msg-tag response to a function or class method. The function must be of the form:: def my_function_or_method( private_key, responder_id, msg_tag, response) where ``private_key`` is the client private-key, ``responder_id`` is the message responder ID, ``msg_tag`` is the message-tag provided at call time and ``response`` is the response received. Parameters ---------- msg_tag : str Message-tag to be caught. function : callable Application function to be used when ``msg_tag`` is received. """ if self._callable: self._response_bindings[msg_tag] = function else: raise SAMPClientError("Client not callable.") def unbind_receive_notification(self, mtype, declare=True): """ Remove from the notifications binding table the specified MType and unsubscribe the client from it (if required). Parameters ---------- mtype : str MType to be removed. declare : bool Specify whether the client must be automatically declared as unsubscribed from the MType (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). """ if self._callable: del self._notification_bindings[mtype] if declare: self._declare_subscriptions() else: raise SAMPClientError("Client not callable.") def unbind_receive_call(self, mtype, declare=True): """ Remove from the calls binding table the specified MType and unsubscribe the client from it (if required). Parameters ---------- mtype : str MType to be removed. declare : bool Specify whether the client must be automatically declared as unsubscribed from the MType (see also :meth:`~pyvo.samp.client.SAMPClient.declare_subscriptions`). """ if self._callable: del self._call_bindings[mtype] if declare: self._declare_subscriptions() else: raise SAMPClientError("Client not callable.") def unbind_receive_response(self, msg_tag): """ Remove from the responses binding table the specified message-tag. Parameters ---------- msg_tag : str Message-tag to be removed. """ if self._callable: del self._response_bindings[msg_tag] else: raise SAMPClientError("Client not callable.") def declare_subscriptions(self, subscriptions=None): """ Declares the MTypes the client wishes to subscribe to, implicitly defined with the MType binding methods :meth:`~pyvo.samp.client.SAMPClient.bind_receive_notification` and :meth:`~pyvo.samp.client.SAMPClient.bind_receive_call`. An optional ``subscriptions`` map can be added to the final map passed to the :meth:`~pyvo.samp.hub_proxy.SAMPHubProxy.declare_subscriptions` method. Parameters ---------- subscriptions : dict, optional Dictionary containing the list of MTypes to subscribe to, with the same format of the ``subscriptions`` map passed to the :meth:`~pyvo.samp.hub_proxy.SAMPHubProxy.declare_subscriptions` method. """ if self._callable: self._declare_subscriptions(subscriptions) else: raise SAMPClientError("Client not callable.") def register(self): """ Register the client to the SAMP Hub. """ if self.hub.is_connected: if self._private_key is not None: raise SAMPClientError("Client already registered") result = self.hub.register(self.hub.lockfile["samp.secret"]) if result["samp.self-id"] == "": raise SAMPClientError( "Registration failed - samp.self-id was not set by the hub." ) if result["samp.private-key"] == "": raise SAMPClientError( "Registration failed - samp.private-key was not set by the hub." ) self._public_id = result["samp.self-id"] self._private_key = result["samp.private-key"] self._hub_id = result["samp.hub-id"] if self._callable: self._set_xmlrpc_callback() self._declare_subscriptions() if self._metadata != {}: self.declare_metadata() self._is_registered = True else: raise SAMPClientError( "Unable to register to the SAMP Hub. Hub proxy not connected." ) def unregister(self): """ Unregister the client from the SAMP Hub. """ if self.hub.is_connected: self._is_registered = False self.hub.unregister(self._private_key) self._hub_id = None self._public_id = None self._private_key = None else: raise SAMPClientError( "Unable to unregister from the SAMP Hub. Hub proxy not connected." ) def _set_xmlrpc_callback(self): if self.hub.is_connected and self._private_key is not None: self.hub.set_xmlrpc_callback(self._private_key, self._xmlrpcAddr) def _declare_subscriptions(self, subscriptions=None): if self.hub.is_connected and self._private_key is not None: mtypes_dict = {} # Collect notification mtypes and metadata for mtype in self._notification_bindings.keys(): mtypes_dict[mtype] = copy.deepcopy( self._notification_bindings[mtype][1] ) # Collect notification mtypes and metadata for mtype in self._call_bindings.keys(): mtypes_dict[mtype] = copy.deepcopy(self._call_bindings[mtype][1]) # Add optional subscription map if subscriptions: mtypes_dict.update(copy.deepcopy(subscriptions)) self.hub.declare_subscriptions(self._private_key, mtypes_dict) else: raise SAMPClientError( "Unable to declare subscriptions. Hub " "unreachable or not connected or client " "not registered." ) def declare_metadata(self, metadata=None): """ Declare the client application metadata supported. Parameters ---------- metadata : dict, optional Dictionary containing the client application metadata as defined in the SAMP definition document. If omitted, then no metadata are declared. """ if self.hub.is_connected and self._private_key is not None: if metadata is not None: self._metadata.update(metadata) self.hub.declare_metadata(self._private_key, self._metadata) else: raise SAMPClientError( "Unable to declare metadata. Hub " "unreachable or not connected or client " "not registered." ) def get_private_key(self): """ Return the client private key used for the Standard Profile communications obtained at registration time (``samp.private-key``). Returns ------- key : str Client private key. """ return self._private_key def get_public_id(self): """ Return public client ID obtained at registration time (``samp.self-id``). Returns ------- id : str Client public ID. """ return self._public_id astropy-pyvo-f0fdda3/pyvo/samp/constants.py000066400000000000000000000014651521254414300213110ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Defines constants used in `pyvo.samp`. """ from astropy.utils.data import get_pkg_data_filename __all__ = [ "SAFE_MTYPES", "SAMP_ICON", "SAMP_STATUS_ERROR", "SAMP_STATUS_OK", "SAMP_STATUS_WARNING", ] __profile_version__ = "1.3" #: General constant for samp.ok status string SAMP_STATUS_OK = "samp.ok" #: General constant for samp.warning status string SAMP_STATUS_WARNING = "samp.warning" #: General constant for samp.error status string SAMP_STATUS_ERROR = "samp.error" SAFE_MTYPES = [ "samp.app.*", "samp.msg.progress", "table.*", "image.*", "coord.*", "spectrum.*", "bibcode.*", "voresource.*", ] with open(get_pkg_data_filename("data/astropy_icon.png"), "rb") as f: SAMP_ICON = f.read() astropy-pyvo-f0fdda3/pyvo/samp/data/000077500000000000000000000000001521254414300176265ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/samp/data/astropy_icon.png000066400000000000000000000026321521254414300230500ustar00rootroot00000000000000‰PNG  IHDR(-SgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<ÙPLTEÿ�ÿ…ÿ„ÿ“ÿzþ‚ýyýxÿ�ÿšýiÿˆþ�ÿ�þuýoý.þ3ûý.ü%ý) þ=ü1üþ.þ-ý$ùýý"ý!ý%ÿƒÿ‰ÿ˜ÿ—ÿ—ÿ�ÿšÿ¤þ~þ…þ€þŽþ�þ‘þ‘þ«:ÿ‡þ�þ�þ‡þ}ÿ…ÿ‰ÿ†ÿ…ÿŒ ÿªNþΗþ²[ÿ†þ…þ{þ}þ€þvþvþ‚ þ€þtþoÿÿÿþ¼þ€þsþuþ¢RþþûþÚ»þôëý~þvþmþ»ŠþÇ¢þ÷ðþ°yþoþmýXþ�KþË®þ׿þdþ\þÛÈþÉ®þ¸˜þàÏþZýLþùõþ‰XþпþɰþSýBþúøþRþU ý8þTþ>þáØþ«•þR þÒÅþ;þ@þ�wþú÷ý3 þÚÐþÐÅý-þ=ý'þâÝþÓÇý!ý…lþ´¨þªœýiKý!ý$ý/ý-ü3 üþäàþøõý\Güüü ü ü&ý,ý"ý2ü ý ýE4ýýýý'ý'üüü þïîýmdüý$ýý#þ‘þ� ÿ‰ÿ‹þÔ¬þtýmþéÕþýùþØ´þþ{ýqýdÿÿÿþŽ@þ–NþåÔþõíþuý_þ�NýWþšWþ�Gý\þãÔþÆ¢ýIýVýOýCþÒ»þ϶þ¡þàÐýBýNþRþ_þøöþË´þüûþ»œý5ýAþJþTþa0þxIþμþ¸œýB þ‚Wý4ý$þÚÏþ×Éý4ý"þêáý6þD þëåÿûúþÎÁþ;ý+ý#ý6üþš‘üŽ_<íªtRNSU€ˆl*”îþþúªHíþýûûüýáPýþúýþþþþø¶%ñüþþþýC¨úþþüˆ-öþþü¨tüþþü  üþþüt¨üþþö-ˆüþþú¨Cýþþþüñ%¶øþþþþýúþýPáýüûûýþíHªûþî•*m“ƒU ebKGDI‡ä|IDATÓïþ!"#$%&'()*+,-.ª/0«123 4 5 67¬89:;<=­>?@ ABCDEFGH®IJ¯K LM°N±O²³´µPQR¶ST·U¸V¹º»¼½·WX¾YZ[¿I\ÀÁÂÃÄÅÆ]^Ç_`ÈabÉʸ¸ËÌÍÎcdÏefÐghÑÒÓ¸Ô¸ÕÖij×klØmnÙ¸ÚÛÜÝÞoIßpqràstáâãäååuævçwxáyz{èéêë|¸}ì~€í�‚…†‡ˆ‰Š‹Œ�ïŽ��‘’“𔕖—˜™šñI›òœ�žŸ ¡¢£¤¥¦§¨© …Ùz….÷pE%tEXtdate:create2013-12-16T11:17:45+01:00‹à×í%tEXtdate:modify2013-12-11T20:36:35+01:00ذœIEND®B`‚astropy-pyvo-f0fdda3/pyvo/samp/data/clientaccesspolicy.xml000066400000000000000000000004341521254414300242310ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/samp/data/crossdomain.xml000066400000000000000000000004671521254414300227000ustar00rootroot00000000000000 astropy-pyvo-f0fdda3/pyvo/samp/errors.py000066400000000000000000000013371521254414300206070ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Defines custom errors and exceptions used in `pyvo.samp`. """ import xmlrpc.client as xmlrpc from astropy.utils.exceptions import AstropyUserWarning __all__ = ["SAMPClientError", "SAMPHubError", "SAMPProxyError", "SAMPWarning"] class SAMPWarning(AstropyUserWarning): """ SAMP-specific Astropy warning class. """ class SAMPHubError(Exception): """ SAMP Hub exception. """ class SAMPClientError(Exception): """ SAMP Client exceptions. """ class SAMPProxyError(xmlrpc.Fault): """ SAMP Proxy Hub exception. """ class SAMPProxyTimeoutError(SAMPProxyError): """ SAMP Proxy Hub timeout exception. """ astropy-pyvo-f0fdda3/pyvo/samp/hub.py000066400000000000000000001553361521254414300200620ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import copy import os import queue import select import socket import threading import time import uuid import warnings import xmlrpc.client as xmlrpc from urllib.parse import urlunparse from astropy import log from .constants import SAMP_STATUS_OK, __profile_version__ from .errors import SAMPHubError, SAMPProxyError, SAMPProxyTimeoutError, SAMPWarning from .lockfile_helpers import create_lock_file, read_lockfile from .standard_profile import ThreadingXMLRPCServer from .utils import SAMPXXEServerProxy, ServerProxyPool, _HubAsClient, internet_on from .web_profile import WebProfileXMLRPCServer, web_profile_text_dialog __all__ = ["SAMPHubServer", "WebProfileDialog"] __doctest_skip__ = [".", "SAMPHubServer.*"] class SAMPHubServer: """ SAMP Hub Server. Parameters ---------- secret : str, optional The secret code to use for the SAMP lockfile. If none is is specified, the :func:`uuid.uuid1` function is used to generate one. addr : str, optional Listening address (or IP). This defaults to 127.0.0.1 if the internet is not reachable, otherwise it defaults to the host name. port : int, optional Listening XML-RPC server socket port. If left set to 0 (the default), the operating system will select a free port. lockfile : str, optional Custom lockfile name. timeout : int, optional Hub inactivity timeout. If ``timeout > 0`` then the Hub automatically stops after an inactivity period longer than ``timeout`` seconds. By default ``timeout`` is set to 0 (Hub never expires). client_timeout : int, optional Client inactivity timeout. If ``client_timeout > 0`` then the Hub automatically unregisters the clients which result inactive for a period longer than ``client_timeout`` seconds. By default ``client_timeout`` is set to 0 (clients never expire). mode : str, optional Defines the Hub running mode. If ``mode`` is ``'single'`` then the Hub runs using the standard ``.samp`` lock-file, having a single instance for user desktop session. Otherwise, if ``mode`` is ``'multiple'``, then the Hub runs using a non-standard lock-file, placed in ``.samp-1`` directory, of the form ``samp-hub-``, where ```` is a unique UUID assigned to the hub. label : str, optional A string used to label the Hub with a human readable name. This string is written in the lock-file assigned to the ``hub.label`` token. web_profile : bool, optional Enables or disables the Web Profile support. web_profile_dialog : class, optional Allows a class instance to be specified using ``web_profile_dialog`` to replace the terminal-based message with e.g. a GUI pop-up. Two `queue.Queue` instances will be added to the instance as attributes ``queue_request`` and ``queue_result``. When a request is received via the ``queue_request`` queue, the pop-up should be displayed, and a value of `True` or `False` should be added to ``queue_result`` depending on whether the user accepted or refused the connection. web_port : int, optional The port to use for web SAMP. This should not be changed except for testing purposes, since web SAMP should always use port 21012. pool_size : int, optional The number of socket connections opened to communicate with the clients. """ def __init__( self, secret=None, addr=None, port=0, lockfile=None, timeout=0, client_timeout=0, mode="single", label="", web_profile=True, web_profile_dialog=None, web_port=21012, pool_size=20, ): # Generate random ID for the hub self._id = str(uuid.uuid1()) # General settings self._is_running = False self._customlockfilename = lockfile self._lockfile = None self._addr = addr self._port = port self._mode = mode self._label = label self._timeout = timeout self._client_timeout = client_timeout self._pool_size = pool_size # Web profile specific attributes self._web_profile = web_profile self._web_profile_dialog = web_profile_dialog self._web_port = web_port self._web_profile_server = None self._web_profile_callbacks = {} self._web_profile_requests_queue = None self._web_profile_requests_result = None self._web_profile_requests_semaphore = None self._host_name = "127.0.0.1" if internet_on(): try: self._host_name = socket.getfqdn() socket.getaddrinfo(self._addr or self._host_name, self._port or 0) except OSError: self._host_name = "127.0.0.1" # Threading stuff self._thread_lock = threading.Lock() self._thread_run = None self._thread_hub_timeout = None self._thread_client_timeout = None self._launched_threads = [] # Variables for timeout testing: self._last_activity_time = None self._client_activity_time = {} # Hub message id counter, used to create hub msg ids self._hub_msg_id_counter = 0 # Hub secret code self._hub_secret_code_customized = secret self._hub_secret = self._create_secret_code() # Hub public id (as SAMP client) self._hub_public_id = "" # Client ids # {private_key: (public_id, timestamp)} self._private_keys = {} # Metadata per client # {private_key: metadata} self._metadata = {} # List of subscribed clients per MType # {mtype: private_key list} self._mtype2ids = {} # List of subscribed MTypes per client # {private_key: mtype list} self._id2mtypes = {} # List of XML-RPC addresses per client # {public_id: (XML-RPC address, ServerProxyPool instance)} self._xmlrpc_endpoints = {} # Synchronous message id heap self._sync_msg_ids_heap = {} # Public ids counter self._client_id_counter = -1 @property def id(self): """ The unique hub ID. """ return self._id def _register_standard_api(self, server): # Standard Profile only operations server.register_function(self._ping, "samp.hub.ping") server.register_function( self._set_xmlrpc_callback, "samp.hub.setXmlrpcCallback" ) # Standard API operations server.register_function(self._register, "samp.hub.register") server.register_function(self._unregister, "samp.hub.unregister") server.register_function(self._declare_metadata, "samp.hub.declareMetadata") server.register_function(self._get_metadata, "samp.hub.getMetadata") server.register_function( self._declare_subscriptions, "samp.hub.declareSubscriptions" ) server.register_function(self._get_subscriptions, "samp.hub.getSubscriptions") server.register_function( self._get_registered_clients, "samp.hub.getRegisteredClients" ) server.register_function( self._get_subscribed_clients, "samp.hub.getSubscribedClients" ) server.register_function(self._notify, "samp.hub.notify") server.register_function(self._notify_all, "samp.hub.notifyAll") server.register_function(self._call, "samp.hub.call") server.register_function(self._call_all, "samp.hub.callAll") server.register_function(self._call_and_wait, "samp.hub.callAndWait") server.register_function(self._reply, "samp.hub.reply") def _register_web_profile_api(self, server): # Web Profile methods like Standard Profile server.register_function(self._ping, "samp.webhub.ping") server.register_function(self._unregister, "samp.webhub.unregister") server.register_function(self._declare_metadata, "samp.webhub.declareMetadata") server.register_function(self._get_metadata, "samp.webhub.getMetadata") server.register_function( self._declare_subscriptions, "samp.webhub.declareSubscriptions" ) server.register_function( self._get_subscriptions, "samp.webhub.getSubscriptions" ) server.register_function( self._get_registered_clients, "samp.webhub.getRegisteredClients" ) server.register_function( self._get_subscribed_clients, "samp.webhub.getSubscribedClients" ) server.register_function(self._notify, "samp.webhub.notify") server.register_function(self._notify_all, "samp.webhub.notifyAll") server.register_function(self._call, "samp.webhub.call") server.register_function(self._call_all, "samp.webhub.callAll") server.register_function(self._call_and_wait, "samp.webhub.callAndWait") server.register_function(self._reply, "samp.webhub.reply") # Methods particularly for Web Profile server.register_function(self._web_profile_register, "samp.webhub.register") server.register_function( self._web_profile_allowReverseCallbacks, "samp.webhub.allowReverseCallbacks" ) server.register_function( self._web_profile_pullCallbacks, "samp.webhub.pullCallbacks" ) def _start_standard_server(self): self._server = ThreadingXMLRPCServer( (self._addr or self._host_name, self._port or 0), log, logRequests=False, allow_none=True, ) prot = "http" self._port = self._server.socket.getsockname()[1] addr = f"{self._addr or self._host_name}:{self._port}" self._url = urlunparse((prot, addr, "", "", "", "")) self._server.register_introspection_functions() self._register_standard_api(self._server) def _start_web_profile_server(self): self._web_profile_requests_queue = queue.Queue(1) self._web_profile_requests_result = queue.Queue(1) self._web_profile_requests_semaphore = queue.Queue(1) if self._web_profile_dialog is not None: # TODO: Some sort of duck-typing on the web_profile_dialog object self._web_profile_dialog.queue_request = self._web_profile_requests_queue self._web_profile_dialog.queue_result = self._web_profile_requests_result try: self._web_profile_server = WebProfileXMLRPCServer( ("localhost", self._web_port), log, logRequests=False, allow_none=True ) self._web_port = self._web_profile_server.socket.getsockname()[1] self._web_profile_server.register_introspection_functions() self._register_web_profile_api(self._web_profile_server) log.info("Hub set to run with Web Profile support enabled.") except OSError: log.warning( f"Port {self._web_port} already in use. Impossible to run the " "Hub with Web Profile support.", SAMPWarning, ) self._web_profile = False # Cleanup self._web_profile_requests_queue = None self._web_profile_requests_result = None self._web_profile_requests_semaphore = None def _launch_thread(self, group=None, target=None, name=None, args=None): # Remove inactive threads remove = [] for t in self._launched_threads: if not t.is_alive(): remove.append(t) for t in remove: self._launched_threads.remove(t) # Start new thread t = threading.Thread(group=group, target=target, name=name, args=args) t.start() # Add to list of launched threads self._launched_threads.append(t) def _join_launched_threads(self, timeout=None): for t in self._launched_threads: t.join(timeout=timeout) def _timeout_test_hub(self): if self._timeout == 0: return last = time.time() while self._is_running: time.sleep(0.05) # keep this small to check _is_running often now = time.time() if now - last > 1.0: with self._thread_lock: if self._last_activity_time is not None: if now - self._last_activity_time >= self._timeout: warnings.warn( "Timeout expired, Hub is shutting down!", SAMPWarning ) self.stop() return last = now def _timeout_test_client(self): if self._client_timeout == 0: return last = time.time() while self._is_running: time.sleep(0.05) # keep this small to check _is_running often now = time.time() if now - last > 1.0: for private_key in self._client_activity_time.keys(): if ( now - self._client_activity_time[private_key] > self._client_timeout and private_key != self._hub_private_key ): warnings.warn( f"Client {private_key} timeout expired!", SAMPWarning ) self._notify_disconnection(private_key) self._unregister(private_key) last = now def _hub_as_client_request_handler(self, method, args): if method == "samp.client.receiveCall": return self._receive_call(*args) elif method == "samp.client.receiveNotification": return self._receive_notification(*args) elif method == "samp.client.receiveResponse": return self._receive_response(*args) elif method == "samp.app.ping": return self._ping(*args) def _setup_hub_as_client(self): hub_metadata = { "samp.name": "PyVO SAMP Hub", "samp.description.text": self._label, "author.name": "The PyVO Collaboration", "samp.documentation.url": "https://pyvo.readthedocs.io/en/latest/dal/", "samp.icon.url": self._url + "/samp/icon", } result = self._register(self._hub_secret) self._hub_public_id = result["samp.self-id"] self._hub_private_key = result["samp.private-key"] self._set_xmlrpc_callback(self._hub_private_key, self._url) self._declare_metadata(self._hub_private_key, hub_metadata) self._declare_subscriptions( self._hub_private_key, {"samp.app.ping": {}, "x-samp.query.by-meta": {}} ) def start(self, wait=False): """ Start the current SAMP Hub instance and create the lock file. Hub start-up can be blocking or non blocking depending on the ``wait`` parameter. Parameters ---------- wait : bool If `True` then the Hub process is joined with the caller, blocking the code flow. Usually `True` option is used to run a stand-alone Hub in an executable script. If `False` (default), then the Hub process runs in a separated thread. `False` is usually used in a Python shell. """ if self._is_running: raise SAMPHubError("Hub is already running") if self._lockfile is not None: raise SAMPHubError("Hub is not running but lockfile is set") if self._web_profile: self._start_web_profile_server() self._start_standard_server() self._lockfile = create_lock_file( lockfilename=self._customlockfilename, mode=self._mode, hub_id=self.id, hub_params=self.params, ) self._update_last_activity_time() self._setup_hub_as_client() self._start_threads() log.info("Hub started") if wait and self._is_running: self._thread_run.join() self._thread_run = None @property def params(self): """ The hub parameters (which are written to the logfile). """ params = {} # Keys required by standard profile params["samp.secret"] = self._hub_secret params["samp.hub.xmlrpc.url"] = self._url params["samp.profile.version"] = __profile_version__ # Custom keys params["hub.id"] = self.id params["hub.label"] = self._label or f"Hub {self.id}" return params def _start_threads(self): self._thread_run = threading.Thread(target=self._serve_forever) self._thread_run.daemon = True if self._timeout > 0: self._thread_hub_timeout = threading.Thread( target=self._timeout_test_hub, name="Hub timeout test" ) self._thread_hub_timeout.daemon = True else: self._thread_hub_timeout = None if self._client_timeout > 0: self._thread_client_timeout = threading.Thread( target=self._timeout_test_client, name="Client timeout test" ) self._thread_client_timeout.daemon = True else: self._thread_client_timeout = None self._is_running = True self._thread_run.start() if self._thread_hub_timeout is not None: self._thread_hub_timeout.start() if self._thread_client_timeout is not None: self._thread_client_timeout.start() def _create_secret_code(self): if self._hub_secret_code_customized is not None: return self._hub_secret_code_customized else: return str(uuid.uuid1()) def stop(self): """ Stop the current SAMP Hub instance and delete the lock file. """ if not self._is_running: return log.info("Hub is stopping...") self._notify_shutdown() self._is_running = False if self._lockfile and os.path.isfile(self._lockfile): lockfiledict = read_lockfile(self._lockfile) if lockfiledict["samp.secret"] == self._hub_secret: os.remove(self._lockfile) self._lockfile = None # Reset variables # TODO: What happens if not all threads are stopped after timeout? self._join_all_threads(timeout=10.0) self._hub_msg_id_counter = 0 self._hub_secret = self._create_secret_code() self._hub_public_id = "" self._metadata = {} self._private_keys = {} self._mtype2ids = {} self._id2mtypes = {} self._xmlrpc_endpoints = {} self._last_activity_time = None log.info("Hub stopped.") def _join_all_threads(self, timeout=None): # In some cases, ``stop`` may be called from some of the sub-threads, # so we just need to make sure that we don't try and shut down the # calling thread. current_thread = threading.current_thread() if self._thread_run is not current_thread: self._thread_run.join(timeout=timeout) if not self._thread_run.is_alive(): self._thread_run = None if ( self._thread_hub_timeout is not None and self._thread_hub_timeout is not current_thread ): self._thread_hub_timeout.join(timeout=timeout) if not self._thread_hub_timeout.is_alive(): self._thread_hub_timeout = None if ( self._thread_client_timeout is not None and self._thread_client_timeout is not current_thread ): self._thread_client_timeout.join(timeout=timeout) if not self._thread_client_timeout.is_alive(): self._thread_client_timeout = None self._join_launched_threads(timeout=timeout) @property def is_running(self): """Return an information concerning the Hub running status. Returns ------- running : bool Is the hub running? """ return self._is_running def _serve_forever(self): while self._is_running: try: read_ready = select.select([self._server.socket], [], [], 0.01)[0] except OSError as exc: warnings.warn( f"Call to select() in SAMPHubServer failed: {exc}", SAMPWarning ) else: if read_ready: self._server.handle_request() if self._web_profile: # We now check if there are any connection requests from the # web profile, and if so, we initialize the pop-up. if self._web_profile_dialog is None: try: request = self._web_profile_requests_queue.get_nowait() except queue.Empty: pass else: web_profile_text_dialog( request, self._web_profile_requests_result ) # We now check for requests over the web profile socket, and we # also update the pop-up in case there are any changes. try: read_ready = select.select( [self._web_profile_server.socket], [], [], 0.01 )[0] except OSError as exc: warnings.warn( f"Call to select() in SAMPHubServer failed: {exc}", SAMPWarning ) else: if read_ready: self._web_profile_server.handle_request() self._server.server_close() if self._web_profile_server is not None: self._web_profile_server.server_close() def _notify_shutdown(self): msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.event.shutdown") for mtype in msubs: if mtype in self._mtype2ids: for key in self._mtype2ids[mtype]: self._notify_( self._hub_private_key, self._private_keys[key][0], {"samp.mtype": "samp.hub.event.shutdown", "samp.params": {}}, ) def _notify_register(self, private_key): msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.event.register") for mtype in msubs: if mtype in self._mtype2ids: public_id = self._private_keys[private_key][0] for key in self._mtype2ids[mtype]: # if key != private_key: self._notify( self._hub_private_key, self._private_keys[key][0], { "samp.mtype": "samp.hub.event.register", "samp.params": {"id": public_id}, }, ) def _notify_unregister(self, private_key): msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.event.unregister") for mtype in msubs: if mtype in self._mtype2ids: public_id = self._private_keys[private_key][0] for key in self._mtype2ids[mtype]: if key != private_key: self._notify( self._hub_private_key, self._private_keys[key][0], { "samp.mtype": "samp.hub.event.unregister", "samp.params": {"id": public_id}, }, ) def _notify_metadata(self, private_key): msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.event.metadata") for mtype in msubs: if mtype in self._mtype2ids: public_id = self._private_keys[private_key][0] for key in self._mtype2ids[mtype]: # if key != private_key: self._notify( self._hub_private_key, self._private_keys[key][0], { "samp.mtype": "samp.hub.event.metadata", "samp.params": { "id": public_id, "metadata": self._metadata[private_key], }, }, ) def _notify_subscriptions(self, private_key): msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.event.subscriptions") for mtype in msubs: if mtype in self._mtype2ids: public_id = self._private_keys[private_key][0] for key in self._mtype2ids[mtype]: self._notify( self._hub_private_key, self._private_keys[key][0], { "samp.mtype": "samp.hub.event.subscriptions", "samp.params": { "id": public_id, "subscriptions": self._id2mtypes[private_key], }, }, ) def _notify_disconnection(self, private_key): def _xmlrpc_call_disconnect(endpoint, private_key, hub_public_id, message): endpoint.samp.client.receiveNotification( private_key, hub_public_id, message ) msubs = SAMPHubServer.get_mtype_subtypes("samp.hub.disconnect") public_id = self._private_keys[private_key][0] endpoint = self._xmlrpc_endpoints[public_id][1] for mtype in msubs: if mtype in self._mtype2ids and private_key in self._mtype2ids[mtype]: log.debug(f"notify disconnection to {public_id}") self._launch_thread( target=_xmlrpc_call_disconnect, args=( endpoint, private_key, self._hub_public_id, { "samp.mtype": "samp.hub.disconnect", "samp.params": {"reason": "Timeout expired!"}, }, ), ) def _ping(self): self._update_last_activity_time() log.debug("ping") return "1" def _query_by_metadata(self, key, value): public_id_list = [] for private_id in self._metadata: if key in self._metadata[private_id]: if self._metadata[private_id][key] == value: public_id_list.append(self._private_keys[private_id][0]) return public_id_list def _set_xmlrpc_callback(self, private_key, xmlrpc_addr): self._update_last_activity_time(private_key) if private_key in self._private_keys: if private_key == self._hub_private_key: public_id = self._private_keys[private_key][0] self._xmlrpc_endpoints[public_id] = ( xmlrpc_addr, _HubAsClient(self._hub_as_client_request_handler), ) return "" # Dictionary stored with the public id log.debug(f"set_xmlrpc_callback: {private_key} {xmlrpc_addr}") server_proxy_pool = None server_proxy_pool = ServerProxyPool( self._pool_size, SAMPXXEServerProxy, xmlrpc_addr, allow_none=1 ) public_id = self._private_keys[private_key][0] self._xmlrpc_endpoints[public_id] = (xmlrpc_addr, server_proxy_pool) else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") return "" def _perform_standard_register(self): with self._thread_lock: private_key, public_id = self._get_new_ids() self._private_keys[private_key] = (public_id, time.time()) self._update_last_activity_time(private_key) self._notify_register(private_key) log.debug(f"register: private-key = {private_key} and self-id = {public_id}") return { "samp.self-id": public_id, "samp.private-key": private_key, "samp.hub-id": self._hub_public_id, } def _register(self, secret): self._update_last_activity_time() if secret == self._hub_secret: return self._perform_standard_register() else: # return {"samp.self-id": "", "samp.private-key": "", "samp.hub-id": ""} raise SAMPProxyError(7, "Bad secret code") def _get_new_ids(self): private_key = str(uuid.uuid1()) self._client_id_counter += 1 public_id = "cli#hub" if self._client_id_counter > 0: public_id = f"cli#{self._client_id_counter}" return private_key, public_id def _unregister(self, private_key): self._update_last_activity_time() public_key = "" self._notify_unregister(private_key) with self._thread_lock: if private_key in self._private_keys: public_key = self._private_keys[private_key][0] del self._private_keys[private_key] else: return "" if private_key in self._metadata: del self._metadata[private_key] if private_key in self._id2mtypes: del self._id2mtypes[private_key] for mtype in self._mtype2ids.keys(): if private_key in self._mtype2ids[mtype]: self._mtype2ids[mtype].remove(private_key) if public_key in self._xmlrpc_endpoints: del self._xmlrpc_endpoints[public_key] if private_key in self._client_activity_time: del self._client_activity_time[private_key] if self._web_profile: if private_key in self._web_profile_callbacks: del self._web_profile_callbacks[private_key] self._web_profile_server.remove_client(private_key) log.debug(f"unregister {public_key} ({private_key})") return "" def _declare_metadata(self, private_key, metadata): self._update_last_activity_time(private_key) if private_key in self._private_keys: log.debug(f"declare_metadata: private-key = {private_key} {metadata=!s}") self._metadata[private_key] = metadata self._notify_metadata(private_key) else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") return "" def _get_metadata(self, private_key, client_id): self._update_last_activity_time(private_key) if private_key in self._private_keys: client_private_key = self._public_id_to_private_key(client_id) log.debug( f"get_metadata: private-key = {private_key} client-id = {client_id}" ) if client_private_key is not None: if client_private_key in self._metadata: log.debug(f"--> metadata = {self._metadata[client_private_key]}") return self._metadata[client_private_key] else: return {} else: raise SAMPProxyError(6, "Invalid client ID") else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _declare_subscriptions(self, private_key, mtypes): self._update_last_activity_time(private_key) if private_key in self._private_keys: log.debug( f"declare_subscriptions: private-key = {private_key} {mtypes=!s}" ) # remove subscription to previous mtypes if private_key in self._id2mtypes: prev_mtypes = self._id2mtypes[private_key] for mtype in prev_mtypes: try: self._mtype2ids[mtype].remove(private_key) except ValueError: # private_key is not in list pass self._id2mtypes[private_key] = copy.deepcopy(mtypes) # remove duplicated MType for wildcard overwriting original_mtypes = copy.deepcopy(mtypes) for mtype in original_mtypes: if mtype.endswith("*"): for mtype2 in original_mtypes: if mtype2.startswith(mtype[:-1]) and mtype2 != mtype: if mtype2 in mtypes: del mtypes[mtype2] log.debug( "declare_subscriptions: subscriptions accepted from " f"{private_key} => {str(mtypes)}" ) for mtype in mtypes: if mtype in self._mtype2ids: if private_key not in self._mtype2ids[mtype]: self._mtype2ids[mtype].append(private_key) else: self._mtype2ids[mtype] = [private_key] self._notify_subscriptions(private_key) else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") return "" def _get_subscriptions(self, private_key, client_id): self._update_last_activity_time(private_key) if private_key in self._private_keys: client_private_key = self._public_id_to_private_key(client_id) if client_private_key is not None: if client_private_key in self._id2mtypes: log.debug( f"get_subscriptions: client-id = {client_id} " f"mtypes = {self._id2mtypes[client_private_key]!s}" ) return self._id2mtypes[client_private_key] else: log.debug( f"get_subscriptions: client-id = {client_id} mtypes = missing" ) return {} else: raise SAMPProxyError(6, "Invalid client ID") else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _get_registered_clients(self, private_key): self._update_last_activity_time(private_key) if private_key in self._private_keys: reg_clients = [] for pkey in self._private_keys.keys(): if pkey != private_key: reg_clients.append(self._private_keys[pkey][0]) log.debug( f"get_registered_clients: {private_key=!s} clients = {reg_clients}" ) return reg_clients else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _get_subscribed_clients(self, private_key, mtype): self._update_last_activity_time(private_key) if private_key in self._private_keys: sub_clients = {} for pkey in self._private_keys.keys(): if pkey != private_key and self._is_subscribed(pkey, mtype): sub_clients[self._private_keys[pkey][0]] = {} log.debug( f"get_subscribed_clients: private_key = {private_key} mtype = {mtype} " f"clients = {sub_clients}" ) return sub_clients else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") @staticmethod def get_mtype_subtypes(mtype): """ Return a list containing all the possible wildcarded subtypes of MType. Parameters ---------- mtype : str MType to be parsed. Returns ------- types : list List of subtypes Examples -------- >>> from pyvo.samp import SAMPHubServer >>> SAMPHubServer.get_mtype_subtypes("samp.app.ping") ['samp.app.ping', 'samp.app.*', 'samp.*', '*'] """ subtypes = [] msubs = mtype.split(".") indexes = list(range(len(msubs))) indexes.reverse() indexes.append(-1) for i in indexes: tmp_mtype = ".".join(msubs[: i + 1]) if tmp_mtype != mtype: if tmp_mtype != "": tmp_mtype = tmp_mtype + ".*" else: tmp_mtype = "*" subtypes.append(tmp_mtype) return subtypes def _is_subscribed(self, private_key, mtype): subscribed = False msubs = SAMPHubServer.get_mtype_subtypes(mtype) for msub in msubs: if msub in self._mtype2ids: if private_key in self._mtype2ids[msub]: subscribed = True return subscribed def _notify(self, private_key, recipient_id, message): self._update_last_activity_time(private_key) if private_key in self._private_keys: if not ( self._is_subscribed( self._public_id_to_private_key(recipient_id), message["samp.mtype"] ) ): raise SAMPProxyError( 2, "Client {} not subscribed to MType {}".format( recipient_id, message["samp.mtype"] ), ) self._launch_thread( target=self._notify_, args=(private_key, recipient_id, message) ) return {} else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _notify_(self, sender_private_key, recipient_public_id, message): if sender_private_key not in self._private_keys: return sender_public_id = self._private_keys[sender_private_key][0] try: log.debug( "notify {} from {} to {}".format( message["samp.mtype"], sender_public_id, recipient_public_id ) ) recipient_private_key = self._public_id_to_private_key(recipient_public_id) arg_params = (sender_public_id, message) samp_method_name = "receiveNotification" self._retry_method( recipient_private_key, recipient_public_id, samp_method_name, arg_params ) except Exception as exc: warnings.warn( "{} notification from client {} to client {} failed [{}]".format( message["samp.mtype"], sender_public_id, recipient_public_id, exc ), SAMPWarning, ) def _notify_all(self, private_key, message): self._update_last_activity_time(private_key) if private_key in self._private_keys: if "samp.mtype" not in message: raise SAMPProxyError(3, "samp.mtype keyword is missing") recipient_ids = self._notify_all_(private_key, message) return recipient_ids else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _notify_all_(self, sender_private_key, message): recipient_ids = [] msubs = SAMPHubServer.get_mtype_subtypes(message["samp.mtype"]) for mtype in msubs: if mtype in self._mtype2ids: for key in self._mtype2ids[mtype]: if key != sender_private_key: _recipient_id = self._private_keys[key][0] recipient_ids.append(_recipient_id) self._launch_thread( target=self._notify, args=(sender_private_key, _recipient_id, message), ) if not recipient_ids: warnings.warn( "No client was able to receive this message", SAMPWarning, ) return recipient_ids def _call(self, private_key, recipient_id, msg_tag, message): self._update_last_activity_time(private_key) if private_key in self._private_keys: if not ( self._is_subscribed( self._public_id_to_private_key(recipient_id), message["samp.mtype"] ) ): raise SAMPProxyError( 2, "Client {} not subscribed to MType {}".format( recipient_id, message["samp.mtype"] ), ) public_id = self._private_keys[private_key][0] msg_id = self._get_new_hub_msg_id(public_id, msg_tag) self._launch_thread( target=self._call_, args=(private_key, public_id, recipient_id, msg_id, message), ) return msg_id else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _call_( self, sender_private_key, sender_public_id, recipient_public_id, msg_id, message ): if sender_private_key not in self._private_keys: return try: log.debug( "call {} from {} to {} ({})".format( msg_id.split(";;")[0], sender_public_id, recipient_public_id, message["samp.mtype"], ) ) recipient_private_key = self._public_id_to_private_key(recipient_public_id) arg_params = (sender_public_id, msg_id, message) samp_methodName = "receiveCall" self._retry_method( recipient_private_key, recipient_public_id, samp_methodName, arg_params ) except Exception as exc: warnings.warn( "{} call {} from client {} to client {} failed [{},{}]".format( message["samp.mtype"], msg_id.split(";;")[0], sender_public_id, recipient_public_id, type(exc), exc, ), SAMPWarning, ) def _call_all(self, private_key, msg_tag, message): self._update_last_activity_time(private_key) if private_key in self._private_keys: if "samp.mtype" not in message: raise SAMPProxyError( 3, f"samp.mtype keyword is missing in message tagged as {msg_tag}", ) public_id = self._private_keys[private_key][0] msg_id = self._call_all_(private_key, public_id, msg_tag, message) return msg_id else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _call_all_(self, sender_private_key, sender_public_id, msg_tag, message): msg_id = {} msubs = SAMPHubServer.get_mtype_subtypes(message["samp.mtype"]) for mtype in msubs: if mtype in self._mtype2ids: for key in self._mtype2ids[mtype]: if key != sender_private_key: _msg_id = self._get_new_hub_msg_id(sender_public_id, msg_tag) receiver_public_id = self._private_keys[key][0] msg_id[receiver_public_id] = _msg_id self._launch_thread( target=self._call_, args=( sender_private_key, sender_public_id, receiver_public_id, _msg_id, message, ), ) return msg_id def _call_and_wait(self, private_key, recipient_id, message, timeout): self._update_last_activity_time(private_key) if private_key in self._private_keys: timeout = int(timeout) now = time.time() response = {} msg_id = self._call(private_key, recipient_id, "samp::sync::call", message) self._sync_msg_ids_heap[msg_id] = None while self._is_running: if 0 < timeout <= time.time() - now: del self._sync_msg_ids_heap[msg_id] raise SAMPProxyTimeoutError(1, "Timeout expired!") if self._sync_msg_ids_heap[msg_id] is not None: response = copy.deepcopy(self._sync_msg_ids_heap[msg_id]) del self._sync_msg_ids_heap[msg_id] break time.sleep(0.01) return response else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") def _reply(self, private_key, msg_id, response): """ The main method that gets called for replying. This starts up an asynchronous reply thread and returns. """ self._update_last_activity_time(private_key) if private_key in self._private_keys: self._launch_thread( target=self._reply_, args=(private_key, msg_id, response) ) else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") return {} def _reply_(self, responder_private_key, msg_id, response): if responder_private_key not in self._private_keys or not msg_id: return responder_public_id = self._private_keys[responder_private_key][0] counter, hub_public_id, recipient_public_id, recipient_msg_tag = msg_id.split( ";;", 3 ) try: log.debug( f"reply {counter} from {responder_public_id} to {recipient_public_id}" ) if recipient_msg_tag == "samp::sync::call": if msg_id in self._sync_msg_ids_heap.keys(): self._sync_msg_ids_heap[msg_id] = response else: recipient_private_key = self._public_id_to_private_key( recipient_public_id ) arg_params = (responder_public_id, recipient_msg_tag, response) samp_method_name = "receiveResponse" self._retry_method( recipient_private_key, recipient_public_id, samp_method_name, arg_params, ) except Exception as exc: warnings.warn( ( f"{recipient_msg_tag} reply from client {responder_public_id} " f"to client {recipient_public_id} failed [{exc}]" ), SAMPWarning, ) def _retry_method( self, recipient_private_key, recipient_public_id, samp_method_name, arg_params ): """ This method is used to retry a SAMP call several times. Parameters ---------- recipient_private_key The private key of the receiver of the call recipient_public_key The public key of the receiver of the call samp_method_name : str The name of the SAMP method to call arg_params : tuple Any additional arguments to be passed to the SAMP method """ if recipient_private_key is None: raise SAMPHubError("Invalid client ID") from . import conf for attempt in range(conf.n_retries): if not self._is_running: time.sleep(0.01) continue try: if ( self._web_profile and recipient_private_key in self._web_profile_callbacks ): # Web Profile callback = { "samp.methodName": samp_method_name, "samp.params": arg_params, } self._web_profile_callbacks[recipient_private_key].put(callback) else: # Standard Profile hub = self._xmlrpc_endpoints[recipient_public_id][1] getattr(hub.samp.client, samp_method_name)( recipient_private_key, *arg_params ) except xmlrpc.Fault as exc: log.debug( f"{recipient_public_id} XML-RPC endpoint error " f"(attempt {attempt + 1}): {exc.faultString}" ) time.sleep(0.01) else: return # If we are here, then the above attempts failed error_message = ( samp_method_name + " failed after " + str(conf.n_retries) + " attempts" ) raise SAMPHubError(error_message) def _public_id_to_private_key(self, public_id): for private_key in self._private_keys.keys(): if self._private_keys[private_key][0] == public_id: return private_key return None def _get_new_hub_msg_id(self, sender_public_id, sender_msg_id): with self._thread_lock: self._hub_msg_id_counter += 1 return ( f"msg#{self._hub_msg_id_counter};;{self._hub_public_id};;" f"{sender_public_id};;{sender_msg_id}" ) def _update_last_activity_time(self, private_key=None): with self._thread_lock: self._last_activity_time = time.time() if private_key is not None: self._client_activity_time[private_key] = time.time() def _receive_notification(self, private_key, sender_id, message): return "" def _receive_call(self, private_key, sender_id, msg_id, message): if private_key == self._hub_private_key: if "samp.mtype" in message and message["samp.mtype"] == "samp.app.ping": self._reply( self._hub_private_key, msg_id, {"samp.status": SAMP_STATUS_OK, "samp.result": {}}, ) elif "samp.mtype" in message and ( message["samp.mtype"] == "x-samp.query.by-meta" or message["samp.mtype"] == "samp.query.by-meta" ): ids_list = self._query_by_metadata( message["samp.params"]["key"], message["samp.params"]["value"] ) self._reply( self._hub_private_key, msg_id, {"samp.status": SAMP_STATUS_OK, "samp.result": {"ids": ids_list}}, ) return "" else: return "" def _receive_response(self, private_key, responder_id, msg_tag, response): return "" def _web_profile_register( self, identity_info, client_address=("unknown", 0), origin="unknown" ): self._update_last_activity_time() if client_address[0] not in ["localhost", "127.0.0.1"]: raise SAMPProxyError(403, "Request of registration rejected by the Hub.") if not origin: origin = "unknown" if isinstance(identity_info, dict): # an old version of the protocol provided just a string with the app name if "samp.name" not in identity_info: raise SAMPProxyError( 403, "Request of registration rejected " "by the Hub (application name not " "provided).", ) # Red semaphore for the other threads self._web_profile_requests_semaphore.put("wait") # Set the request to be displayed for the current thread self._web_profile_requests_queue.put((identity_info, client_address, origin)) # Get the popup dialogue response response = self._web_profile_requests_result.get() # OK, semaphore green self._web_profile_requests_semaphore.get() if response: register_map = self._perform_standard_register() translator_url = "http://localhost:{}/translator/{}?ref=".format( self._web_port, register_map["samp.private-key"] ) register_map["samp.url-translator"] = translator_url self._web_profile_server.add_client(register_map["samp.private-key"]) return register_map else: raise SAMPProxyError(403, "Request of registration rejected by the user.") def _web_profile_allowReverseCallbacks(self, private_key, allow): self._update_last_activity_time() if private_key in self._private_keys: if allow == "0": if private_key in self._web_profile_callbacks: del self._web_profile_callbacks[private_key] else: self._web_profile_callbacks[private_key] = queue.Queue() else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") return "" def _web_profile_pullCallbacks(self, private_key, timeout_secs): self._update_last_activity_time() if private_key in self._private_keys: callback = [] callback_queue = self._web_profile_callbacks[private_key] try: while self._is_running: item_queued = callback_queue.get_nowait() callback.append(item_queued) except queue.Empty: pass return callback else: raise SAMPProxyError(5, f"Private-key {private_key} expired or invalid.") class WebProfileDialog: """ A base class to make writing Web Profile GUI consent dialogs easier. The concrete class must: 1) Poll ``handle_queue`` periodically, using the timer services of the GUI's event loop. This function will call ``self.show_dialog`` when a request requires authorization. ``self.show_dialog`` will be given the arguments: - ``samp_name``: The name of the application making the request. - ``details``: A dictionary of details about the client making the request. - ``client``: A hostname, port pair containing the client address. - ``origin``: A string containing the origin of the request. 2) Call ``consent`` or ``reject`` based on the user's response to the dialog. """ def handle_queue(self): try: request = self.queue_request.get_nowait() except queue.Empty: # queue is set but empty pass except AttributeError: # queue has not been set yet pass else: if isinstance(request[0], str): # To support the old protocol version samp_name = request[0] else: samp_name = request[0]["samp.name"] self.show_dialog(samp_name, request[0], request[1], request[2]) def consent(self): self.queue_result.put(True) def reject(self): self.queue_result.put(False) astropy-pyvo-f0fdda3/pyvo/samp/hub_proxy.py000066400000000000000000000136521521254414300213150ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import copy import xmlrpc.client as xmlrpc from .errors import SAMPHubError from .lockfile_helpers import get_main_running_hub from .utils import SAMPXXEServerProxy, ServerProxyPool __all__ = ["SAMPHubProxy"] class SAMPHubProxy: """ Proxy class to simplify the client interaction with a SAMP hub (via the standard profile). """ def __init__(self): self.proxy = None self._connected = False @property def is_connected(self): """ Whether the hub proxy is currently connected to a hub. """ return self._connected def connect(self, hub=None, hub_params=None, pool_size=20): """ Connect to the current SAMP Hub. Parameters ---------- hub : `~pyvo.samp.SAMPHubServer`, optional The hub to connect to. hub_params : dict, optional Optional dictionary containing the lock-file content of the Hub with which to connect. This dictionary has the form ``{: , ...}``. pool_size : int, optional The number of socket connections opened to communicate with the Hub. """ self._connected = False self.lockfile = {} if hub is not None and hub_params is not None: raise ValueError("Cannot specify both hub and hub_params") if hub_params is None: if hub is not None: if not hub.is_running: raise SAMPHubError("Hub is not running") else: hub_params = hub.params else: hub_params = get_main_running_hub() try: url = hub_params["samp.hub.xmlrpc.url"].replace("\\", "") self.proxy = ServerProxyPool( pool_size, SAMPXXEServerProxy, url, allow_none=1 ) self.ping() self.lockfile = copy.deepcopy(hub_params) self._connected = True except xmlrpc.ProtocolError as p: # 401 Unauthorized if p.errcode == 401: raise SAMPHubError( "Unauthorized access. Basic Authentication required or failed." ) else: raise SAMPHubError(f"Protocol Error {p.errcode}: {p.errmsg}") def disconnect(self): """ Disconnect from the current SAMP Hub. """ if self.proxy is not None: self.proxy.shutdown() self.proxy = None self._connected = False self.lockfile = {} @property def _samp_hub(self): """ Property to abstract away the path to the hub, which allows this class to be used for other profiles. """ return self.proxy.samp.hub def ping(self): """ Proxy to ``ping`` SAMP Hub method (Standard Profile only). """ return self._samp_hub.ping() def set_xmlrpc_callback(self, private_key, xmlrpc_addr): """ Proxy to ``setXmlrpcCallback`` SAMP Hub method (Standard Profile only). """ return self._samp_hub.setXmlrpcCallback(private_key, xmlrpc_addr) def register(self, secret): """ Proxy to ``register`` SAMP Hub method. """ return self._samp_hub.register(secret) def unregister(self, private_key): """ Proxy to ``unregister`` SAMP Hub method. """ return self._samp_hub.unregister(private_key) def declare_metadata(self, private_key, metadata): """ Proxy to ``declareMetadata`` SAMP Hub method. """ return self._samp_hub.declareMetadata(private_key, metadata) def get_metadata(self, private_key, client_id): """ Proxy to ``getMetadata`` SAMP Hub method. """ return self._samp_hub.getMetadata(private_key, client_id) def declare_subscriptions(self, private_key, subscriptions): """ Proxy to ``declareSubscriptions`` SAMP Hub method. """ return self._samp_hub.declareSubscriptions(private_key, subscriptions) def get_subscriptions(self, private_key, client_id): """ Proxy to ``getSubscriptions`` SAMP Hub method. """ return self._samp_hub.getSubscriptions(private_key, client_id) def get_registered_clients(self, private_key): """ Proxy to ``getRegisteredClients`` SAMP Hub method. """ return self._samp_hub.getRegisteredClients(private_key) def get_subscribed_clients(self, private_key, mtype): """ Proxy to ``getSubscribedClients`` SAMP Hub method. """ return self._samp_hub.getSubscribedClients(private_key, mtype) def notify(self, private_key, recipient_id, message): """ Proxy to ``notify`` SAMP Hub method. """ return self._samp_hub.notify(private_key, recipient_id, message) def notify_all(self, private_key, message): """ Proxy to ``notifyAll`` SAMP Hub method. """ return self._samp_hub.notifyAll(private_key, message) def call(self, private_key, recipient_id, msg_tag, message): """ Proxy to ``call`` SAMP Hub method. """ return self._samp_hub.call(private_key, recipient_id, msg_tag, message) def call_all(self, private_key, msg_tag, message): """ Proxy to ``callAll`` SAMP Hub method. """ return self._samp_hub.callAll(private_key, msg_tag, message) def call_and_wait(self, private_key, recipient_id, message, timeout): """ Proxy to ``callAndWait`` SAMP Hub method. """ return self._samp_hub.callAndWait(private_key, recipient_id, message, timeout) def reply(self, private_key, msg_id, response): """ Proxy to ``reply`` SAMP Hub method. """ return self._samp_hub.reply(private_key, msg_id, response) astropy-pyvo-f0fdda3/pyvo/samp/integrated_client.py000066400000000000000000000414701521254414300227610ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from .client import SAMPClient from .hub_proxy import SAMPHubProxy __all__ = ["SAMPIntegratedClient"] __doctest_skip__ = ["SAMPIntegratedClient.*"] class SAMPIntegratedClient: """ A Simple SAMP client. This class is meant to simplify the client usage providing a proxy class that merges the :class:`~pyvo.samp.SAMPClient` and :class:`~pyvo.samp.SAMPHubProxy` functionalities in a simplified API. Parameters ---------- name : str, optional Client name (corresponding to ``samp.name`` metadata keyword). description : str, optional Client description (corresponding to ``samp.description.text`` metadata keyword). metadata : dict, optional Client application metadata in the standard SAMP format. addr : str, optional Listening address (or IP). This defaults to 127.0.0.1 if the internet is not reachable, otherwise it defaults to the host name. port : int, optional Listening XML-RPC server socket port. If left set to 0 (the default), the operating system will select a free port. callable : bool, optional Whether the client can receive calls and notifications. If set to `False`, then the client can send notifications and calls, but can not receive any. """ def __init__( self, name=None, description=None, metadata=None, addr=None, port=0, callable=True, ): self.hub = SAMPHubProxy() self.client_arguments = { "name": name, "description": description, "metadata": metadata, "addr": addr, "port": port, "callable": callable, } """ Collected arguments that should be passed on to the SAMPClient below. The SAMPClient used to be instantiated in __init__; however, this caused problems with disconnecting and reconnecting to the HUB. The client_arguments is used to maintain backwards compatibility. """ self.client = None "The client will be instantiated upon connect()." # GENERAL @property def is_connected(self): """ Testing method to verify the client connection with a running Hub. Returns ------- is_connected : bool True if the client is connected to a Hub, False otherwise. """ return self.hub.is_connected and self.client.is_running def connect(self, hub=None, hub_params=None, pool_size=20): """ Connect with the current or specified SAMP Hub, start and register the client. Parameters ---------- hub : `~pyvo.samp.SAMPHubServer`, optional The hub to connect to. hub_params : dict, optional Optional dictionary containing the lock-file content of the Hub with which to connect. This dictionary has the form ``{: , ...}``. pool_size : int, optional The number of socket connections opened to communicate with the Hub. """ self.hub.connect(hub, hub_params, pool_size) # The client has to be instantiated here and not in __init__() because # this allows disconnecting and reconnecting to the HUB. Nonetheless, # the client_arguments are set in __init__() because the # instantiation of the client used to happen there and this retains # backwards compatibility. self.client = SAMPClient(self.hub, **self.client_arguments) self.client.start() self.client.register() def disconnect(self): """ Unregister the client from the current SAMP Hub, stop the client and disconnect from the Hub. """ if self.is_connected: try: self.client.unregister() finally: if self.client.is_running: self.client.stop() self.hub.disconnect() # HUB def ping(self): """ Proxy to ``ping`` SAMP Hub method (Standard Profile only). """ return self.hub.ping() def declare_metadata(self, metadata): """ Proxy to ``declareMetadata`` SAMP Hub method. """ return self.client.declare_metadata(metadata) def get_metadata(self, client_id): """ Proxy to ``getMetadata`` SAMP Hub method. """ return self.hub.get_metadata(self.get_private_key(), client_id) def get_subscriptions(self, client_id): """ Proxy to ``getSubscriptions`` SAMP Hub method. """ return self.hub.get_subscriptions(self.get_private_key(), client_id) def get_registered_clients(self): """ Proxy to ``getRegisteredClients`` SAMP Hub method. This returns all the registered clients, excluding the current client. """ return self.hub.get_registered_clients(self.get_private_key()) def get_subscribed_clients(self, mtype): """ Proxy to ``getSubscribedClients`` SAMP Hub method. """ return self.hub.get_subscribed_clients(self.get_private_key(), mtype) def _format_easy_msg(self, mtype, params): msg = {} if "extra_kws" in params: extra = params["extra_kws"] del params["extra_kws"] msg = {"samp.mtype": mtype, "samp.params": params} msg.update(extra) else: msg = {"samp.mtype": mtype, "samp.params": params} return msg def notify(self, recipient_id, message): """ Proxy to ``notify`` SAMP Hub method. """ return self.hub.notify(self.get_private_key(), recipient_id, message) def enotify(self, recipient_id, mtype, **params): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify`. This is a proxy to ``notify`` method that allows to send the notification message in a simplified way. Note that reserved ``extra_kws`` keyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standard ``samp.mtype`` and ``samp.params``, to the message sent. Parameters ---------- recipient_id : str Recipient ID mtype : str the MType to be notified params : dict or set of str Variable keyword set which contains the list of parameters for the specified MType. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.enotify("samp.msg.progress", msgid = "xyz", txt = "initialization", ... percent = "10", extra_kws = {"my.extra.info": "just an example"}) """ return self.notify(recipient_id, self._format_easy_msg(mtype, params)) def notify_all(self, message): """ Proxy to ``notifyAll`` SAMP Hub method. """ return self.hub.notify_all(self.get_private_key(), message) def enotify_all(self, mtype, **params): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.notify_all`. This is a proxy to ``notifyAll`` method that allows to send the notification message in a simplified way. Note that reserved ``extra_kws`` keyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standard ``samp.mtype`` and ``samp.params``, to the message sent. Parameters ---------- mtype : str MType to be notified. params : dict or set of str Variable keyword set which contains the list of parameters for the specified MType. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.enotify_all("samp.msg.progress", txt = "initialization", ... percent = "10", ... extra_kws = {"my.extra.info": "just an example"}) """ return self.notify_all(self._format_easy_msg(mtype, params)) def call(self, recipient_id, msg_tag, message): """ Proxy to ``call`` SAMP Hub method. """ return self.hub.call(self.get_private_key(), recipient_id, msg_tag, message) def ecall(self, recipient_id, msg_tag, mtype, **params): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.call`. This is a proxy to ``call`` method that allows to send a call message in a simplified way. Note that reserved ``extra_kws`` keyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standard ``samp.mtype`` and ``samp.params``, to the message sent. Parameters ---------- recipient_id : str Recipient ID msg_tag : str Message tag to use mtype : str MType to be sent params : dict of set of str Variable keyword set which contains the list of parameters for the specified MType. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> msgid = cli.ecall("abc", "xyz", "samp.msg.progress", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"}) """ return self.call(recipient_id, msg_tag, self._format_easy_msg(mtype, params)) def call_all(self, msg_tag, message): """ Proxy to ``callAll`` SAMP Hub method. """ return self.hub.call_all(self.get_private_key(), msg_tag, message) def ecall_all(self, msg_tag, mtype, **params): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.call_all`. This is a proxy to ``callAll`` method that allows to send the call message in a simplified way. Note that reserved ``extra_kws`` keyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standard ``samp.mtype`` and ``samp.params``, to the message sent. Parameters ---------- msg_tag : str Message tag to use mtype : str MType to be sent params : dict of set of str Variable keyword set which contains the list of parameters for the specified MType. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> msgid = cli.ecall_all("xyz", "samp.msg.progress", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"}) """ self.call_all(msg_tag, self._format_easy_msg(mtype, params)) def call_and_wait(self, recipient_id, message, timeout): """ Proxy to ``callAndWait`` SAMP Hub method. """ return self.hub.call_and_wait( self.get_private_key(), recipient_id, message, timeout ) def ecall_and_wait(self, recipient_id, mtype, timeout, **params): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.call_and_wait`. This is a proxy to ``callAndWait`` method that allows to send the call message in a simplified way. Note that reserved ``extra_kws`` keyword is a dictionary with the special meaning of being used to add extra keywords, in addition to the standard ``samp.mtype`` and ``samp.params``, to the message sent. Parameters ---------- recipient_id : str Recipient ID mtype : str MType to be sent timeout : str Call timeout in seconds params : dict of set of str Variable keyword set which contains the list of parameters for the specified MType. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient >>> cli = SAMPIntegratedClient() >>> ... >>> cli.ecall_and_wait("xyz", "samp.msg.progress", "5", ... txt = "initialization", percent = "10", ... extra_kws = {"my.extra.info": "just an example"}) """ return self.call_and_wait( recipient_id, self._format_easy_msg(mtype, params), timeout ) def reply(self, msg_id, response): """ Proxy to ``reply`` SAMP Hub method. """ return self.hub.reply(self.get_private_key(), msg_id, response) def _format_easy_response(self, status, result, error): msg = {"samp.status": status} if result is not None: msg.update({"samp.result": result}) if error is not None: msg.update({"samp.error": error}) return msg def ereply(self, msg_id, status, result=None, error=None): """ Easy to use version of :meth:`~pyvo.samp.integrated_client.SAMPIntegratedClient.reply`. This is a proxy to ``reply`` method that allows to send a reply message in a simplified way. Parameters ---------- msg_id : str Message ID to which reply. status : str Content of the ``samp.status`` response keyword. result : dict Content of the ``samp.result`` response keyword. error : dict Content of the ``samp.error`` response keyword. Examples -------- >>> from pyvo.samp import SAMPIntegratedClient, SAMP_STATUS_ERROR >>> cli = SAMPIntegratedClient() >>> ... >>> cli.ereply("message_id", SAMP_STATUS_ERROR, result={}, ... error={"samp.errortxt": "Test error message"}) """ return self.reply(msg_id, self._format_easy_response(status, result, error)) # CLIENT def receive_notification(self, private_key, sender_id, message): return self.client.receive_notification(private_key, sender_id, message) receive_notification.__doc__ = SAMPClient.receive_notification.__doc__ def receive_call(self, private_key, sender_id, msg_id, message): return self.client.receive_call(private_key, sender_id, msg_id, message) receive_call.__doc__ = SAMPClient.receive_call.__doc__ def receive_response(self, private_key, responder_id, msg_tag, response): return self.client.receive_response( private_key, responder_id, msg_tag, response ) receive_response.__doc__ = SAMPClient.receive_response.__doc__ def bind_receive_message(self, mtype, function, declare=True, metadata=None): self.client.bind_receive_message(mtype, function, declare=True, metadata=None) bind_receive_message.__doc__ = SAMPClient.bind_receive_message.__doc__ def bind_receive_notification(self, mtype, function, declare=True, metadata=None): self.client.bind_receive_notification(mtype, function, declare, metadata) bind_receive_notification.__doc__ = SAMPClient.bind_receive_notification.__doc__ def bind_receive_call(self, mtype, function, declare=True, metadata=None): self.client.bind_receive_call(mtype, function, declare, metadata) bind_receive_call.__doc__ = SAMPClient.bind_receive_call.__doc__ def bind_receive_response(self, msg_tag, function): self.client.bind_receive_response(msg_tag, function) bind_receive_response.__doc__ = SAMPClient.bind_receive_response.__doc__ def unbind_receive_notification(self, mtype, declare=True): self.client.unbind_receive_notification(mtype, declare) unbind_receive_notification.__doc__ = SAMPClient.unbind_receive_notification.__doc__ def unbind_receive_call(self, mtype, declare=True): self.client.unbind_receive_call(mtype, declare) unbind_receive_call.__doc__ = SAMPClient.unbind_receive_call.__doc__ def unbind_receive_response(self, msg_tag): self.client.unbind_receive_response(msg_tag) unbind_receive_response.__doc__ = SAMPClient.unbind_receive_response.__doc__ def declare_subscriptions(self, subscriptions=None): self.client.declare_subscriptions(subscriptions) declare_subscriptions.__doc__ = SAMPClient.declare_subscriptions.__doc__ def get_private_key(self): return self.client.get_private_key() get_private_key.__doc__ = SAMPClient.get_private_key.__doc__ def get_public_id(self): return self.client.get_public_id() get_public_id.__doc__ = SAMPClient.get_public_id.__doc__ astropy-pyvo-f0fdda3/pyvo/samp/lockfile_helpers.py000066400000000000000000000175521521254414300226130ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst # TODO: this file should be refactored to use a more thread-safe and # race-condition-safe lockfile mechanism. import datetime import os import stat import warnings import xmlrpc.client as xmlrpc from contextlib import suppress from pathlib import Path from urllib.parse import urlparse from astropy import log from astropy.utils.data import get_readable_fileobj from .errors import SAMPHubError, SAMPWarning from .utils import SAMPXXEServerProxy def read_lockfile(lockfilename): """ Read in the lockfile given by ``lockfilename`` into a dictionary. """ # lockfilename may be a local file or a remote URL, but # get_readable_fileobj takes care of this. lockfiledict = {} with get_readable_fileobj(lockfilename) as f: for line in f: if not line.startswith("#"): kw, val = line.split("=") lockfiledict[kw.strip()] = val.strip() return lockfiledict def write_lockfile(lockfilename, lockfiledict): lockfile = open(lockfilename, "w") lockfile.close() os.chmod(lockfilename, stat.S_IREAD + stat.S_IWRITE) lockfile = open(lockfilename, "w") now_iso = datetime.datetime.now().isoformat() lockfile.write(f"# SAMP lockfile written on {now_iso}\n") lockfile.write("# Standard Profile required keys\n") lockfile.writelines(f"{key}={value}\n" for key, value in lockfiledict.items()) lockfile.close() def create_lock_file(lockfilename=None, mode=None, hub_id=None, hub_params=None): # Remove lock-files of dead hubs remove_garbage_lock_files() lockfiledir = "" # CHECK FOR SAMP_HUB ENVIRONMENT VARIABLE if "SAMP_HUB" in os.environ: # For the time being I assume just the std profile supported. if os.environ["SAMP_HUB"].startswith("std-lockurl:"): lockfilename = os.environ["SAMP_HUB"][len("std-lockurl:"):] lockfile_parsed = urlparse(lockfilename) if lockfile_parsed[0] != "file": warnings.warn( f"Unable to start a Hub with lockfile {lockfilename}. " "Start-up process aborted.", SAMPWarning, ) return False else: lockfilename = lockfile_parsed[2] else: # If it is a fresh Hub instance if lockfilename is None: log.debug("Running mode: " + mode) if mode == "single": lockfilename = os.path.join(Path.home(), ".samp") else: lockfiledir = os.path.join(Path.home(), ".samp-1") # If missing create .samp-1 directory try: os.mkdir(lockfiledir) except OSError: pass # directory already exists finally: os.chmod(lockfiledir, stat.S_IREAD + stat.S_IWRITE + stat.S_IEXEC) lockfilename = os.path.join(lockfiledir, f"samp-hub-{hub_id}") else: log.debug("Running mode: multiple") hub_is_running, lockfiledict = check_running_hub(lockfilename) if hub_is_running: warnings.warn( "Another SAMP Hub is already running. Start-up process aborted.", SAMPWarning, ) return False log.debug("Lock-file: " + lockfilename) write_lockfile(lockfilename, hub_params) return lockfilename def get_main_running_hub(): """ Get either the hub given by the environment variable SAMP_HUB, or the one given by the lockfile .samp in the user home directory. """ hubs = get_running_hubs() if not hubs: raise SAMPHubError("Unable to find a running SAMP Hub.") # CHECK FOR SAMP_HUB ENVIRONMENT VARIABLE if "SAMP_HUB" in os.environ: # For the time being I assume just the std profile supported. if os.environ["SAMP_HUB"].startswith("std-lockurl:"): lockfilename = os.environ["SAMP_HUB"][len("std-lockurl:"):] else: raise SAMPHubError("SAMP Hub profile not supported.") else: lockfilename = os.path.join(Path.home(), ".samp") return hubs[lockfilename] def get_running_hubs(): """ Return a dictionary containing the lock-file contents of all the currently running hubs (single and/or multiple mode). The dictionary format is: ``{: {: , ...}, ...}`` where ``{}`` is the lock-file name, ``{}`` and ``{}`` are the lock-file tokens (name and content). Returns ------- running_hubs : dict Lock-file contents of all the currently running hubs. """ hubs = {} lockfilename = "" # HUB SINGLE INSTANCE MODE # CHECK FOR SAMP_HUB ENVIRONMENT VARIABLE if "SAMP_HUB" in os.environ: # For the time being I assume just the std profile supported. if os.environ["SAMP_HUB"].startswith("std-lockurl:"): lockfilename = os.environ["SAMP_HUB"][len("std-lockurl:"):] else: lockfilename = os.path.join(Path.home(), ".samp") hub_is_running, lockfiledict = check_running_hub(lockfilename) if hub_is_running: hubs[lockfilename] = lockfiledict # HUB MULTIPLE INSTANCE MODE lockfiledir = "" lockfiledir = os.path.join(Path.home(), ".samp-1") if os.path.isdir(lockfiledir): for filename in os.listdir(lockfiledir): if filename.startswith("samp-hub"): lockfilename = os.path.join(lockfiledir, filename) hub_is_running, lockfiledict = check_running_hub(lockfilename) if hub_is_running: hubs[lockfilename] = lockfiledict return hubs def check_running_hub(lockfilename): """ Test whether a hub identified by ``lockfilename`` is running or not. Parameters ---------- lockfilename : str Lock-file name (path + file name) of the Hub to be tested. Returns ------- is_running : bool Whether the hub is running hub_params : dict If the hub is running this contains the parameters from the lockfile """ is_running = False lockfiledict = {} # Check whether a lockfile already exists try: lockfiledict = read_lockfile(lockfilename) except OSError: return is_running, lockfiledict if "samp.hub.xmlrpc.url" in lockfiledict: try: proxy = SAMPXXEServerProxy( lockfiledict["samp.hub.xmlrpc.url"].replace("\\", ""), allow_none=1 ) proxy.samp.hub.ping() is_running = True except xmlrpc.ProtocolError: # There is a protocol error (e.g. for authentication required), # but the server is alive is_running = True except OSError: pass return is_running, lockfiledict def remove_garbage_lock_files(): lockfilename = "" # HUB SINGLE INSTANCE MODE lockfilename = os.path.join(Path.home(), ".samp") hub_is_running, lockfiledict = check_running_hub(lockfilename) if not hub_is_running: # If lockfilename belongs to a dead hub, then it is deleted if os.path.isfile(lockfilename): with suppress(OSError): os.remove(lockfilename) # HUB MULTIPLE INSTANCE MODE lockfiledir = os.path.join(Path.home(), ".samp-1") if os.path.isdir(lockfiledir): for filename in os.listdir(lockfiledir): if filename.startswith("samp-hub"): lockfilename = os.path.join(lockfiledir, filename) hub_is_running, lockfiledict = check_running_hub(lockfilename) if not hub_is_running: # If lockfilename belongs to a dead hub, then it is deleted if os.path.isfile(lockfilename): with suppress(OSError): os.remove(lockfilename) astropy-pyvo-f0fdda3/pyvo/samp/setup_package.py000066400000000000000000000000001521254414300220700ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/samp/standard_profile.py000066400000000000000000000131651521254414300226150ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import socketserver import sys import traceback import warnings import xmlrpc.client as xmlrpc from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer from .constants import SAMP_ICON from .errors import SAMPWarning from .utils import safe_xmlrpc_loads __all__ = [] class SAMPSimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): """ XMLRPC handler of Standard Profile requests. """ def do_GET(self): if self.path == "/samp/icon": self.send_response(200, "OK") self.send_header("Content-Type", "image/png") self.end_headers() self.wfile.write(SAMP_ICON) def do_POST(self): """ Handles the HTTP POST request. Attempts to interpret all HTTP POST requests as XML-RPC calls, which are forwarded to the server's ``_dispatch`` method for handling. """ # Check that the path is legal if not self.is_rpc_path_valid(): self.report_404() return try: # Get arguments by reading body of request. # We read this in chunks to avoid straining # socket.read(); around the 10 or 15Mb mark, some platforms # begin to have problems (bug #792570). max_chunk_size = 10 * 1024 * 1024 size_remaining = int(self.headers["content-length"]) L = [] while size_remaining: chunk_size = min(size_remaining, max_chunk_size) L.append(self.rfile.read(chunk_size)) size_remaining -= len(L[-1]) data = b"".join(L) params, method = safe_xmlrpc_loads(data) if method == "samp.webhub.register": params = list(params) params.append(self.client_address) if "Origin" in self.headers: params.append(self.headers.get("Origin")) else: params.append("unknown") params = tuple(params) data = xmlrpc.dumps(params, methodname=method) elif method in ( "samp.hub.notify", "samp.hub.notifyAll", "samp.hub.call", "samp.hub.callAll", "samp.hub.callAndWait", ): user = "unknown" if method == "samp.hub.callAndWait": params[2]["host"] = self.address_string() params[2]["user"] = user else: params[-1]["host"] = self.address_string() params[-1]["user"] = user data = xmlrpc.dumps(params, methodname=method) data = self.decode_request_content(data) if data is None: return # response has been sent # In previous versions of SimpleXMLRPCServer, _dispatch # could be overridden in this class, instead of in # SimpleXMLRPCDispatcher. To maintain backwards compatibility, # check to see if a subclass implements _dispatch and dispatch # using that method if present. response = self.server._marshaled_dispatch( data, getattr(self, "_dispatch", None), self.path ) except Exception as e: # This should only happen if the module is buggy # internal error, report as HTTP server error self.send_response(500) # Send information about the exception if requested if ( hasattr(self.server, "_send_traceback_header") and self.server._send_traceback_header ): self.send_header("X-exception", str(e)) trace = traceback.format_exc() trace = str(trace.encode("ASCII", "backslashreplace"), "ASCII") self.send_header("X-traceback", trace) self.send_header("Content-length", "0") self.end_headers() else: # got a valid XML RPC response self.send_response(200) self.send_header("Content-type", "text/xml") if self.encode_threshold is not None: if len(response) > self.encode_threshold: q = self.accept_encodings().get("gzip", 0) if q: try: response = xmlrpc.gzip_encode(response) self.send_header("Content-Encoding", "gzip") except NotImplementedError: pass self.send_header("Content-length", str(len(response))) self.end_headers() self.wfile.write(response) class ThreadingXMLRPCServer(socketserver.ThreadingMixIn, SimpleXMLRPCServer): """ Asynchronous multithreaded XMLRPC server. """ def __init__( self, addr, log=None, requestHandler=SAMPSimpleXMLRPCRequestHandler, logRequests=True, allow_none=True, encoding=None, ): self.log = log SimpleXMLRPCServer.__init__( self, addr, requestHandler, logRequests, allow_none, encoding ) def handle_error(self, request, client_address): if self.log is None: socketserver.BaseServer.handle_error(self, request, client_address) else: warnings.warn( ( "Exception happened during processing of request from " f"{client_address}: {sys.exc_info()[1]}" ), SAMPWarning, ) astropy-pyvo-f0fdda3/pyvo/samp/tests/000077500000000000000000000000001521254414300200575ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/samp/tests/__init__.py000066400000000000000000000000001521254414300221560ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/samp/tests/test_client.py000066400000000000000000000036131521254414300227510ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import os import sys import pytest # By default, tests should not use the internet. from pyvo.samp import SAMPWarning, conf from pyvo.samp.client import SAMPClient from pyvo.samp.hub import SAMPHubServer from pyvo.samp.hub_proxy import SAMPHubProxy from pyvo.samp.integrated_client import SAMPIntegratedClient CI = os.environ.get("CI", "false") == "true" IS_MACOS = sys.platform == "darwin" def setup_module(module): conf.use_internet = False def test_SAMPHubProxy(): """Test that SAMPHubProxy can be instantiated""" SAMPHubProxy() @pytest.mark.slow def test_SAMPClient(): """Test that SAMPClient can be instantiated""" proxy = SAMPHubProxy() SAMPClient(proxy) def test_SAMPIntegratedClient(): """Test that SAMPIntegratedClient can be instantiated""" SAMPIntegratedClient() @pytest.fixture def samp_hub(): """A fixture that can be used by client tests that require a HUB.""" my_hub = SAMPHubServer() my_hub.start() yield my_hub.stop() @pytest.mark.skipif(IS_MACOS and CI, reason="This test hangs on MacOS GHA.") @pytest.mark.filterwarnings("ignore:unclosed timeout: raise Exception(f"Timeout while waiting for file: {filename}") assert rec_mtype == mtype assert rec_private_key == private_key assert rec_sender_id == sender_id assert rec_params == params class Receiver: def __init__(self, client): self.client = client def receive_notification(self, private_key, sender_id, mtype, params, extra): write_output(mtype, private_key, sender_id, params) def receive_call(self, private_key, sender_id, msg_id, mtype, params, extra): # Here we need to make sure that we first reply, *then* write out the # file, otherwise the tests see the file and move to the next call # before waiting for the reply to be received. self.client.reply(msg_id, TEST_REPLY) self.receive_notification(private_key, sender_id, mtype, params, extra) def receive_response(self, private_key, sender_id, msg_id, response): pass def random_id(length=16): return "".join(random.sample(string.ascii_letters + string.digits, length)) def random_params(directory): return { "verification_file": os.path.join(directory, random_id()), "parameter1": "abcde", "parameter2": 1331, } astropy-pyvo-f0fdda3/pyvo/samp/tests/test_hub.py000066400000000000000000000016711521254414300222530ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst import time import pytest from pyvo.samp import conf from pyvo.samp.hub import SAMPHubServer def setup_module(module): conf.use_internet = False def test_SAMPHubServer(): """Test that SAMPHub can be instantiated""" SAMPHubServer(web_profile=False, mode="multiple", pool_size=1) @pytest.mark.slow def test_SAMPHubServer_run(): """Test that SAMPHub can be run""" hub = SAMPHubServer(web_profile=False, mode="multiple", pool_size=1) hub.start() time.sleep(1) hub.stop() @pytest.mark.slow def test_SAMPHubServer_run_repeated(): """ Test that SAMPHub can be restarted after it has been stopped, including when web profile support is enabled. """ hub = SAMPHubServer(web_profile=True, mode="multiple", pool_size=1) hub.start() time.sleep(1) hub.stop() time.sleep(1) hub.start() time.sleep(1) hub.stop() astropy-pyvo-f0fdda3/pyvo/samp/tests/test_hub_proxy.py000066400000000000000000000026501521254414300235120ustar00rootroot00000000000000import os import sys import pytest from pyvo.samp import conf from pyvo.samp.hub import SAMPHubServer from pyvo.samp.hub_proxy import SAMPHubProxy CI = os.environ.get("CI", "false") == "true" IS_MACOS = sys.platform == "darwin" def setup_module(module): conf.use_internet = False @pytest.mark.skipif(IS_MACOS and CI, reason="This test hangs on MacOS GHA.") class TestHubProxy: def setup_method(self, method): self.hub = SAMPHubServer(web_profile=False, mode="multiple", pool_size=1) self.hub.start() self.proxy = SAMPHubProxy() self.proxy.connect(hub=self.hub, pool_size=1) def teardown_method(self, method): if self.proxy.is_connected: self.proxy.disconnect() self.hub.stop() def test_is_connected(self): assert self.proxy.is_connected def test_disconnect(self): self.proxy.disconnect() def test_ping(self): self.proxy.ping() def test_registration(self): result = self.proxy.register(self.proxy.lockfile["samp.secret"]) self.proxy.unregister(result["samp.private-key"]) @pytest.mark.skipif(IS_MACOS and CI, reason="This test hangs on MacOS GHA.") def test_custom_lockfile(tmp_path): lockfile = str(tmp_path / ".samptest") hub = SAMPHubServer(web_profile=False, lockfile=lockfile, pool_size=1) hub.start() proxy = SAMPHubProxy() proxy.connect(hub=hub, pool_size=1) hub.stop() astropy-pyvo-f0fdda3/pyvo/samp/tests/test_standard_profile.py000066400000000000000000000212651521254414300250160ustar00rootroot00000000000000import os import pytest # By default, tests should not use the internet. from pyvo.samp import conf from pyvo.samp.hub import SAMPHubServer from pyvo.samp.integrated_client import SAMPIntegratedClient import xmlrpc.client from .test_helpers import TEST_REPLY, Receiver, assert_output, random_params CI = os.environ.get("CI", "false") == "true" def setup_module(module): conf.use_internet = False @pytest.mark.skipif(CI, reason="flaky in CI") class TestStandardProfile: @property def hub_init_kwargs(self): return {} @property def client_init_kwargs(self): return {} @property def client_connect_kwargs(self): return {} @pytest.fixture(autouse=True) def setup_method(self, tmp_path): self.tmpdir = str(tmp_path) self.hub = SAMPHubServer( web_profile=False, mode="multiple", pool_size=1, **self.hub_init_kwargs ) self.hub.start() self.client1 = SAMPIntegratedClient(**self.client_init_kwargs) self.client1.connect(hub=self.hub, pool_size=1, **self.client_connect_kwargs) self.client2 = SAMPIntegratedClient(**self.client_init_kwargs) self.client2.connect(hub=self.hub, pool_size=1, **self.client_connect_kwargs) def teardown_method(self): if self.client1.is_connected: self.client1.disconnect() if self.client2.is_connected: self.client2.disconnect() self.hub.stop() def test_main(self): self.client1_id = self.client1.get_public_id() self.client2_id = self.client2.get_public_id() self.metadata1 = { "samp.name": "Client 1", "samp.description.text": "Client 1 Description", "client.version": "1.1", } self.metadata2 = { "samp.name": "Client 2", "samp.description.text": "Client 2 Description", "client.version": "1.2", } # Check that the clients are connected assert self.client1.is_connected assert self.client2.is_connected # Check that ping works self.client1.ping() self.client2.ping() # Check that get_registered_clients works as expected. assert self.client1_id not in self.client1.get_registered_clients() assert self.client2_id in self.client1.get_registered_clients() assert self.client1_id in self.client2.get_registered_clients() assert self.client2_id not in self.client2.get_registered_clients() # Check that get_metadata works as expected assert self.client1.get_metadata(self.client1_id) == {} assert self.client1.get_metadata(self.client2_id) == {} assert self.client2.get_metadata(self.client1_id) == {} assert self.client2.get_metadata(self.client2_id) == {} self.client1.declare_metadata(self.metadata1) assert self.client1.get_metadata(self.client1_id) == self.metadata1 assert self.client2.get_metadata(self.client1_id) == self.metadata1 assert self.client1.get_metadata(self.client2_id) == {} assert self.client2.get_metadata(self.client2_id) == {} self.client2.declare_metadata(self.metadata2) assert self.client1.get_metadata(self.client1_id) == self.metadata1 assert self.client2.get_metadata(self.client1_id) == self.metadata1 assert self.client1.get_metadata(self.client2_id) == self.metadata2 assert self.client2.get_metadata(self.client2_id) == self.metadata2 # Check that, without subscriptions, sending a notification from one # client to another raises an error. message = {} message["samp.mtype"] = "table.load.votable" message["samp.params"] = {} with pytest.raises(xmlrpc.client.Fault): self.client1.notify(self.client2_id, message) # Check that there are no currently active subscriptions assert self.client1.get_subscribed_clients("table.load.votable") == {} assert self.client2.get_subscribed_clients("table.load.votable") == {} # We now test notifications and calls rec1 = Receiver(self.client1) rec2 = Receiver(self.client2) self.client2.bind_receive_notification( "table.load.votable", rec2.receive_notification ) self.client2.bind_receive_call("table.load.votable", rec2.receive_call) self.client1.bind_receive_response("test-tag", rec1.receive_response) # Check resulting subscriptions assert self.client1.get_subscribed_clients("table.load.votable") == { self.client2_id: {} } assert self.client2.get_subscribed_clients("table.load.votable") == {} assert "table.load.votable" in self.client1.get_subscriptions(self.client2_id) assert "table.load.votable" in self.client2.get_subscriptions(self.client2_id) # Once we have finished with the calls and notifications, we will # check the data got across correctly. # Test notify params = random_params(self.tmpdir) self.client1.notify( self.client2.get_public_id(), {"samp.mtype": "table.load.votable", "samp.params": params}, ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) params = random_params(self.tmpdir) self.client1.enotify( self.client2.get_public_id(), "table.load.votable", **params ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) # Test notify_all params = random_params(self.tmpdir) self.client1.notify_all( {"samp.mtype": "table.load.votable", "samp.params": params} ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) params = random_params(self.tmpdir) self.client1.enotify_all("table.load.votable", **params) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) # Test call params = random_params(self.tmpdir) self.client1.call( self.client2.get_public_id(), "test-tag", {"samp.mtype": "table.load.votable", "samp.params": params}, ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) params = random_params(self.tmpdir) self.client1.ecall( self.client2.get_public_id(), "test-tag", "table.load.votable", **params ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) # Test call_all params = random_params(self.tmpdir) self.client1.call_all( "tag1", {"samp.mtype": "table.load.votable", "samp.params": params} ) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) params = random_params(self.tmpdir) self.client1.ecall_all("tag2", "table.load.votable", **params) assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) # Test call_and_wait params = random_params(self.tmpdir) result = self.client1.call_and_wait( self.client2.get_public_id(), {"samp.mtype": "table.load.votable", "samp.params": params}, timeout=5, ) assert result == TEST_REPLY assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) params = random_params(self.tmpdir) result = self.client1.ecall_and_wait( self.client2.get_public_id(), "table.load.votable", timeout=5, **params ) assert result == TEST_REPLY assert_output( "table.load.votable", self.client2.get_private_key(), self.client1_id, params, timeout=60, ) # TODO: check that receive_response received the right data astropy-pyvo-f0fdda3/pyvo/samp/tests/test_vo_helpers.py000066400000000000000000000022021521254414300236320ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from astropy.io.votable import parse from astropy.io.votable.tree import Info, Param, VOTableFile from astropy.table import Table from pyvo.samp.vo_helpers import accessible_table def make_votable_with_metadata(): """Return a VOTableFile with a PARAM and INFO to verify metadata survives.""" vot = VOTableFile() vot.params.append(Param(vot, name="TestParam", value="42", datatype="int")) vot.infos.append(Info(name="TestInfo", value="hello")) return vot def test_accessible_table_with_votable(): vot = make_votable_with_metadata() with accessible_table(vot) as url: assert url.startswith("file://") roundtripped = parse(url[len("file://"):]) assert roundtripped.params[0].name == "TestParam" assert roundtripped.infos[0].name == "TestInfo" def test_accessible_table_with_astropy_table(): t = Table({"a": [1, 2, 3], "b": ["x", "y", "z"]}) with accessible_table(t) as url: assert url.startswith("file://") roundtripped = parse(url[len("file://"):]) assert len(roundtripped.get_first_table().array) == 3 astropy-pyvo-f0fdda3/pyvo/samp/tests/test_web_profile.py000066400000000000000000000056721521254414300237770ustar00rootroot00000000000000""" Test the web profile using Python classes that have been adapted to act like a web client. We can only put a single test here because only one hub can run with the web profile active, and the user might want to run the tests in parallel. """ import os import threading from urllib.request import Request, urlopen import pytest from pyvo.samp import SAMPHubServer, SAMPIntegratedClient, conf from pyvo.samp.web_profile import CLIENT_ACCESS_POLICY, CROSS_DOMAIN from astropy.utils.data import get_readable_fileobj from .test_standard_profile import TestStandardProfile as BaseTestStandardProfile from .web_profile_test_helpers import ( AlwaysApproveWebProfileDialog, SAMPIntegratedWebClient, ) CI = os.environ.get("CI", "false") == "true" def setup_module(module): conf.use_internet = False @pytest.mark.skipif(CI, reason="flaky in CI") class TestWebProfile(BaseTestStandardProfile): @pytest.fixture(autouse=True) def setup_method(self, tmp_path): self.dialog = AlwaysApproveWebProfileDialog() t = threading.Thread(target=self.dialog.poll) t.start() self.tmpdir = str(tmp_path) lockfile = str(tmp_path / ".samp") self.hub = SAMPHubServer( web_profile_dialog=self.dialog, lockfile=lockfile, web_port=0, pool_size=1 ) self.hub.start() self.client1 = SAMPIntegratedClient() self.client1.connect(hub=self.hub, pool_size=1) self.client1_id = self.client1.get_public_id() self.client1_key = self.client1.get_private_key() self.client2 = SAMPIntegratedWebClient() self.client2.connect(web_port=self.hub._web_port, pool_size=2) self.client2_id = self.client2.get_public_id() self.client2_key = self.client2.get_private_key() def teardown_method(self): if self.client1.is_connected: self.client1.disconnect() if self.client2.is_connected: self.client2.disconnect() self.hub.stop() self.dialog.stop() # The full communication tests are run since TestWebProfile inherits # test_main from TestStandardProfile def test_web_profile(self): # Check some additional queries to the server with get_readable_fileobj( f"http://localhost:{self.hub._web_port}/crossdomain.xml" ) as f: assert f.read() == CROSS_DOMAIN with get_readable_fileobj( f"http://localhost:{self.hub._web_port}/clientaccesspolicy.xml" ) as f: assert f.read() == CLIENT_ACCESS_POLICY # Check headers req = Request(f"http://localhost:{self.hub._web_port}/crossdomain.xml") req.add_header("Origin", "test_web_profile") resp = urlopen(req) assert resp.getheader("Access-Control-Allow-Origin") == "test_web_profile" assert resp.getheader("Access-Control-Allow-Headers") == "Content-Type" assert resp.getheader("Access-Control-Allow-Credentials") == "true" astropy-pyvo-f0fdda3/pyvo/samp/tests/web_profile_test_helpers.py000066400000000000000000000222601521254414300255110ustar00rootroot00000000000000import threading import time import xmlrpc.client as xmlrpc from pyvo.samp.client import SAMPClient from pyvo.samp.errors import SAMPClientError, SAMPHubError from pyvo.samp.hub import WebProfileDialog from pyvo.samp.hub_proxy import SAMPHubProxy from pyvo.samp.integrated_client import SAMPIntegratedClient from pyvo.samp.utils import SAMPXXEServerProxy, ServerProxyPool class AlwaysApproveWebProfileDialog(WebProfileDialog): def __init__(self): self.polling = True WebProfileDialog.__init__(self) def show_dialog(self, *args): self.consent() def poll(self): while self.polling: self.handle_queue() time.sleep(0.1) def stop(self): self.polling = False class SAMPWebHubProxy(SAMPHubProxy): """ Proxy class to simplify the client interaction with a SAMP hub (via the web profile). In practice web clients should run from the browser, so this is provided as a means of testing a hub's support for the web profile from Python. """ def connect(self, pool_size=20, web_port=21012): """ Connect to the current SAMP Hub on localhost:web_port. Parameters ---------- pool_size : int, optional The number of socket connections opened to communicate with the Hub. """ self._connected = False try: self.proxy = ServerProxyPool( pool_size, SAMPXXEServerProxy, f"http://127.0.0.1:{web_port}", allow_none=1, ) self.ping() self._connected = True except xmlrpc.ProtocolError as p: raise SAMPHubError(f"Protocol Error {p.errcode}: {p.errmsg}") @property def _samp_hub(self): """ Property to abstract away the path to the hub, which allows this class to be used for both the standard and the web profile. """ return self.proxy.samp.webhub def set_xmlrpc_callback(self, private_key, xmlrpc_addr): raise NotImplementedError( "set_xmlrpc_callback is not defined for the web profile" ) def register(self, identity_info): """ Proxy to ``register`` SAMP Hub method. """ return self._samp_hub.register(identity_info) def allow_reverse_callbacks(self, private_key, allow): """ Proxy to ``allowReverseCallbacks`` SAMP Hub method. """ return self._samp_hub.allowReverseCallbacks(private_key, allow) def pull_callbacks(self, private_key, timeout): """ Proxy to ``pullCallbacks`` SAMP Hub method. """ return self._samp_hub.pullCallbacks(private_key, timeout) class SAMPWebClient(SAMPClient): """ Utility class which provides facilities to create and manage a SAMP compliant XML-RPC server that acts as SAMP callable web client application. In practice web clients should run from the browser, so this is provided as a means of testing a hub's support for the web profile from Python. Parameters ---------- hub : :class:`~pyvo.samp.hub_proxy.SAMPWebHubProxy` An instance of :class:`~pyvo.samp.hub_proxy.SAMPWebHubProxy` to be used for messaging with the SAMP Hub. name : str, optional Client name (corresponding to ``samp.name`` metadata keyword). description : str, optional Client description (corresponding to ``samp.description.text`` metadata keyword). metadata : dict, optional Client application metadata in the standard SAMP format. callable : bool, optional Whether the client can receive calls and notifications. If set to `False`, then the client can send notifications and calls, but can not receive any. """ def __init__(self, hub, name=None, description=None, metadata=None, callable=True): # GENERAL self._is_running = False self._is_registered = False if metadata is None: metadata = {} if name is not None: metadata["samp.name"] = name if description is not None: metadata["samp.description.text"] = description self._metadata = metadata self._callable = callable # HUB INTERACTION self.client = None self._public_id = None self._private_key = None self._hub_id = None self._notification_bindings = {} self._call_bindings = { "samp.app.ping": [self._ping, {}], "client.env.get": [self._client_env_get, {}], } self._response_bindings = {} self.hub = hub self._registration_lock = threading.Lock() self._registered_event = threading.Event() if self._callable: self._thread = threading.Thread(target=self._serve_forever) self._thread.daemon = True def _serve_forever(self): while self.is_running: # Wait until we are actually registered before trying to do # anything, to avoid busy looping # Watch for callbacks here self._registered_event.wait() with self._registration_lock: if not self._is_registered: return results = self.hub.pull_callbacks(self.get_private_key(), 0) for result in results: if result["samp.methodName"] == "receiveNotification": self.receive_notification( self._private_key, *result["samp.params"] ) elif result["samp.methodName"] == "receiveCall": self.receive_call(self._private_key, *result["samp.params"]) elif result["samp.methodName"] == "receiveResponse": self.receive_response(self._private_key, *result["samp.params"]) self.hub.disconnect() def register(self): """ Register the client to the SAMP Hub. """ if self.hub.is_connected: if self._private_key is not None: raise SAMPClientError("Client already registered") result = self.hub.register("Astropy SAMP Web Client") if result["samp.self-id"] == "": raise SAMPClientError( "Registration failed - samp.self-id was not set by the hub." ) if result["samp.private-key"] == "": raise SAMPClientError( "Registration failed - samp.private-key was not set by the hub." ) self._public_id = result["samp.self-id"] self._private_key = result["samp.private-key"] self._hub_id = result["samp.hub-id"] if self._callable: self._declare_subscriptions() self.hub.allow_reverse_callbacks(self._private_key, True) if self._metadata != {}: self.declare_metadata() self._is_registered = True # Let the client thread proceed self._registered_event.set() else: raise SAMPClientError( "Unable to register to the SAMP Hub. Hub proxy not connected." ) def unregister(self): # We have to hold the registration lock if the client is callable # to avoid a race condition where the client queries the hub for # pushCallbacks after it has already been unregistered from the hub with self._registration_lock: super().unregister() class SAMPIntegratedWebClient(SAMPIntegratedClient): """ A Simple SAMP web client. In practice web clients should run from the browser, so this is provided as a means of testing a hub's support for the web profile from Python. This class is meant to simplify the client usage providing a proxy class that merges the :class:`~pyvo.samp.client.SAMPWebClient` and :class:`~pyvo.samp.hub_proxy.SAMPWebHubProxy` functionalities in a simplified API. Parameters ---------- name : str, optional Client name (corresponding to ``samp.name`` metadata keyword). description : str, optional Client description (corresponding to ``samp.description.text`` metadata keyword). metadata : dict, optional Client application metadata in the standard SAMP format. callable : bool, optional Whether the client can receive calls and notifications. If set to `False`, then the client can send notifications and calls, but can not receive any. """ def __init__(self, name=None, description=None, metadata=None, callable=True): self.hub = SAMPWebHubProxy() self.client = SAMPWebClient(self.hub, name, description, metadata, callable) def connect(self, pool_size=20, web_port=21012): """ Connect with the current or specified SAMP Hub, start and register the client. Parameters ---------- pool_size : int, optional The number of socket connections opened to communicate with the Hub. """ self.hub.connect(pool_size, web_port=web_port) self.client.start() self.client.register() astropy-pyvo-f0fdda3/pyvo/samp/utils.py000066400000000000000000000147761521254414300204460ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Utility functions and classes. """ import inspect import queue import traceback import xmlrpc.client as xmlrpc from io import StringIO from urllib.request import urlopen from .constants import SAMP_STATUS_ERROR from .errors import SAMPProxyError def internet_on(): from . import conf if not conf.use_internet: return False else: try: urlopen("http://google.com", timeout=1.0) except Exception: return False else: return True __all__ = ["SAMPMsgReplierWrapper", "SAMPXXEServerProxy", "safe_xmlrpc_loads"] def get_safe_parser(use_datetime=False, use_builtin_types=False): """ Return a safe XML parser and its associated unmarshaller. """ unmarshaller = xmlrpc.Unmarshaller(use_datetime, use_builtin_types) parser = xmlrpc.ExpatParser(unmarshaller) if hasattr(parser, "_parser"): # Explicitly disable external entities to prevent XXE. # While None is often the default, being explicit ensures security # across different environments and expat builds. parser._parser.ExternalEntityRefHandler = None return parser, unmarshaller def safe_xmlrpc_loads(data, use_datetime=False, use_builtin_types=False): """ A secure replacement for `xmlrpc.client.loads` that prevents XXE. """ parser, unmarshaller = get_safe_parser(use_datetime, use_builtin_types) parser.feed(data) parser.close() return unmarshaller.close(), unmarshaller.getmethodname() class SAMPXXEServerProxy(xmlrpc.ServerProxy): """ An XML-RPC server proxy that uses a safe transport to prevent XXE. """ def __init__(self, uri, *args, **kwargs): if "transport" not in kwargs: from urllib.parse import urlparse parsed_uri = urlparse(uri) base_class = ( xmlrpc.SafeTransport if parsed_uri.scheme == "https" else xmlrpc.Transport ) class XXESafeTransport(base_class): def getparser(self): return get_safe_parser(self._use_datetime, self._use_builtin_types) kwargs["transport"] = XXESafeTransport( use_datetime=kwargs.get("use_datetime", False), use_builtin_types=kwargs.get("use_builtin_types", False), ) super().__init__(uri, *args, **kwargs) def getattr_recursive(variable, attribute): """ Get attributes recursively. """ if "." in attribute: top, remaining = attribute.split(".", 1) return getattr_recursive(getattr(variable, top), remaining) else: return getattr(variable, attribute) class _ServerProxyPoolMethod: # some magic to bind an XML-RPC method to an RPC server. # supports "nested" methods (e.g. examples.getStateName) def __init__(self, proxies, name): self.__proxies = proxies self.__name = name def __getattr__(self, name): return _ServerProxyPoolMethod(self.__proxies, f"{self.__name}.{name}") def __call__(self, *args, **kwrds): proxy = self.__proxies.get() function = getattr_recursive(proxy, self.__name) try: response = function(*args, **kwrds) except xmlrpc.Fault as exc: raise SAMPProxyError(exc.faultCode, exc.faultString) finally: self.__proxies.put(proxy) return response class ServerProxyPool: """ A thread-safe pool of `xmlrpc.ServerProxy` objects. """ def __init__(self, size, proxy_class, *args, **keywords): self._proxies = queue.Queue(size) for _ in range(size): self._proxies.put(proxy_class(*args, **keywords)) def __getattr__(self, name): # magic method dispatcher return _ServerProxyPoolMethod(self._proxies, name) def shutdown(self): """Shut down the proxy pool by closing all active connections.""" while True: try: proxy = self._proxies.get_nowait() except queue.Empty: break # An undocumented but apparently supported way to call methods on # an ServerProxy that are not dispatched to the remote server proxy("close") class SAMPMsgReplierWrapper: """ Function decorator that allows to automatically grab errors and returned maps (if any) from a function bound to a SAMP call (or notify). Parameters ---------- cli : :class:`~pyvo.samp.SAMPIntegratedClient` or :class:`~pyvo.samp.SAMPClient` SAMP client instance. Decorator initialization, accepting the instance of the client that receives the call or notification. """ def __init__(self, cli): self.cli = cli def __call__(self, f): def wrapped_f(*args): if get_num_args(f) == 5 or args[2] is None: # notification f(*args) else: # call try: result = f(*args) if result: self.cli.hub.reply( self.cli.get_private_key(), args[2], {"samp.status": SAMP_STATUS_ERROR, "samp.result": result}, ) except Exception: err = StringIO() traceback.print_exc(file=err) txt = err.getvalue() self.cli.hub.reply( self.cli.get_private_key(), args[2], {"samp.status": SAMP_STATUS_ERROR, "samp.result": {"txt": txt}}, ) return wrapped_f class _HubAsClient: def __init__(self, handler): self._handler = handler def __getattr__(self, name): # magic method dispatcher return _HubAsClientMethod(self._handler, name) class _HubAsClientMethod: def __init__(self, send, name): self.__send = send self.__name = name def __getattr__(self, name): return _HubAsClientMethod(self.__send, f"{self.__name}.{name}") def __call__(self, *args): return self.__send(self.__name, args) def get_num_args(f): """ Find the number of arguments a function or method takes (excluding ``self``). """ if inspect.ismethod(f): return f.__func__.__code__.co_argcount - 1 elif inspect.isfunction(f): return f.__code__.co_argcount else: raise TypeError("f should be a function or a method") astropy-pyvo-f0fdda3/pyvo/samp/vo_helpers.py000066400000000000000000000072111521254414300214360ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A module with helpers for broadcasting results to samp clients """ import contextlib import os import tempfile from astropy.io.votable.tree import VOTableFile from .integrated_client import SAMPIntegratedClient __all__ = [ 'find_client_id', 'send_table_to', 'send_product_to', 'send_spectrum_to', 'send_image_to', 'accessible_table', 'connection'] def find_client_id(conn, name): """returns the SAMP id of the client with samp.name samp_name. This will raise a KeyError if the client is not on the hub. """ for client_id in conn.get_registered_clients(): if conn.get_metadata(client_id).get("samp.name") == name: return client_id raise KeyError(name) def send_table_to(conn, table, client_name=None, name="data"): """ sends astropy_table via SAMP. """ with accessible_table(table) as url: message = { "samp.mtype": "table.load.votable", "samp.params": { "url": url, "name": name, }, } if client_name is None: for client_id in conn.get_registered_clients(): conn.call_and_wait(client_id, message, "10") else: client_id = find_client_id(conn, client_name) conn.call_and_wait(client_id, message, "10") def send_product_to(conn, url, mtype, client_name=None, name="data"): """ sends SAMP messages to load data. This is a helper for send_spectrum_to and send_image_to, which work exactly analogous to each other, except that the mtypes are different. If dest_client_id, this is a broadcast (and we don't wait for any responses). If dest_client_id is given, we wait for acknowledgement by the receiver. """ message = { "samp.mtype": mtype, "samp.params": { "url": url, "name": name, }, } if client_name is None: conn.notify_all(message) else: client_id = find_client_id(conn, client_name) conn.notify(client_id, message) def send_spectrum_to(conn, url, client_name=None, name="data"): """ asks a spectrum client to open a remote spectrum via SAMP. """ send_product_to( conn, url, "spectrum.load.ssa-generic", client_name=client_name, name=name) def send_image_to(conn, url, client_name=None, name="data"): """ asks an image client to open a remote image via SAMP. """ send_product_to( conn, url, "image.load.fits", client_name=client_name, name=name) @contextlib.contextmanager def accessible_table(table): """ a context manager making astropy_table available under a (file) URL for the controlled section. """ handle, f_name = tempfile.mkstemp(suffix=".xml") with open(handle, "w") as f: # This can be removed once the minimum supported version of astropy # is 8.0, as this will have a write method for VOTableFile if isinstance(table, VOTableFile): table.to_xml(f) else: table.write(output=f, format="votable") try: yield "file://" + f_name finally: os.unlink(f_name) @contextlib.contextmanager def connection( client_name="pyvo client", description="A generic PyVO client", **kwargs ): """ a context manager to give the controlled block a SAMP connection. The program will disconnect as the controlled block is exited. """ client = SAMPIntegratedClient( name=client_name, description=description, **kwargs) client.connect() try: yield client finally: client.disconnect() astropy-pyvo-f0fdda3/pyvo/samp/web_profile.py000066400000000000000000000131531521254414300215670ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from urllib.parse import parse_qs from urllib.request import urlopen from astropy.utils.data import get_pkg_data_contents from .standard_profile import SAMPSimpleXMLRPCRequestHandler, ThreadingXMLRPCServer __all__ = [] CROSS_DOMAIN = get_pkg_data_contents("data/crossdomain.xml") CLIENT_ACCESS_POLICY = get_pkg_data_contents("data/clientaccesspolicy.xml") class WebProfileRequestHandler(SAMPSimpleXMLRPCRequestHandler): """ Handler of XMLRPC requests performed through the Web Profile. """ def _send_CORS_header(self): if self.headers.get("Origin") is not None: method = self.headers.get("Access-Control-Request-Method") if method and self.command == "OPTIONS": # Preflight method self.send_header("Content-Length", "0") self.send_header( "Access-Control-Allow-Origin", self.headers.get("Origin") ) self.send_header("Access-Control-Allow-Methods", method) self.send_header("Access-Control-Allow-Headers", "Content-Type") self.send_header("Access-Control-Allow-Credentials", "true") if self.headers.get("Access-Control-Request-Private-Network") == "true": self.send_header("Access-Control-Allow-Private-Network", "true") else: # Simple method self.send_header( "Access-Control-Allow-Origin", self.headers.get("Origin") ) self.send_header("Access-Control-Allow-Headers", "Content-Type") self.send_header("Access-Control-Allow-Credentials", "true") def end_headers(self): self._send_CORS_header() SAMPSimpleXMLRPCRequestHandler.end_headers(self) def _serve_cross_domain_xml(self): cross_domain = False if self.path == "/crossdomain.xml": # Adobe standard response = CROSS_DOMAIN self.send_response(200, "OK") self.send_header("Content-Type", "text/x-cross-domain-policy") self.send_header("Content-Length", f"{len(response)}") self.end_headers() self.wfile.write(response.encode("utf-8")) self.wfile.flush() cross_domain = True elif self.path == "/clientaccesspolicy.xml": # Microsoft standard response = CLIENT_ACCESS_POLICY self.send_response(200, "OK") self.send_header("Content-Type", "text/xml") self.send_header("Content-Length", f"{len(response)}") self.end_headers() self.wfile.write(response.encode("utf-8")) self.wfile.flush() cross_domain = True return cross_domain def do_POST(self): if self._serve_cross_domain_xml(): return return SAMPSimpleXMLRPCRequestHandler.do_POST(self) def do_HEAD(self): if not self.is_http_path_valid(): self.report_404() return if self._serve_cross_domain_xml(): return def do_OPTIONS(self): self.send_response(200, "OK") self.end_headers() def do_GET(self): if not self.is_http_path_valid(): self.report_404() return split_path = self.path.split("?") if split_path[0] in [f"/translator/{clid}" for clid in self.server.clients]: # Request of a file proxying urlpath = parse_qs(split_path[1]) try: proxyfile = urlopen(urlpath["ref"][0]) self.send_response(200, "OK") self.end_headers() self.wfile.write(proxyfile.read()) proxyfile.close() except OSError: self.report_404() return if self._serve_cross_domain_xml(): return def is_http_path_valid(self): valid_paths = ["/clientaccesspolicy.xml", "/crossdomain.xml"] + [ f"/translator/{clid}" for clid in self.server.clients ] return self.path.split("?")[0] in valid_paths class WebProfileXMLRPCServer(ThreadingXMLRPCServer): """ XMLRPC server supporting the SAMP Web Profile. """ def __init__( self, addr, log=None, requestHandler=WebProfileRequestHandler, logRequests=True, allow_none=True, encoding=None, ): self.clients = [] ThreadingXMLRPCServer.__init__( self, addr, log, requestHandler, logRequests, allow_none, encoding ) def add_client(self, client_id): self.clients.append(client_id) def remove_client(self, client_id): try: self.clients.remove(client_id) except ValueError: # No warning here because this method gets called for all clients, # not just web clients, and we expect it to fail for non-web # clients. pass def web_profile_text_dialog(request, queue): samp_name = "unknown" if isinstance(request[0], str): # To support the old protocol version samp_name = request[0] else: samp_name = request[0]["samp.name"] text = f"""A Web application which declares to be Name: {samp_name} Origin: {request[2]} is requesting to be registered with the SAMP Hub. Pay attention that if you permit its registration, such application will acquire all current user privileges, like file read/write. Do you give your consent? [yes|no]""" print(text) answer = input(">>> ") queue.put(answer.lower() in ["yes", "y"]) astropy-pyvo-f0fdda3/pyvo/utils/000077500000000000000000000000001521254414300171155ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/utils/__init__.py000066400000000000000000000001221521254414300212210ustar00rootroot00000000000000from .compat import * from .prototype import prototype_feature, activate_features astropy-pyvo-f0fdda3/pyvo/utils/compat.py000066400000000000000000000001771521254414300207570ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Placeholder for compatibility constructs """ __all__ = [] astropy-pyvo-f0fdda3/pyvo/utils/decorators.py000066400000000000000000000010721521254414300216340ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from functools import partial, wraps def stream_decode_content(func): @wraps(func) def wrapper(*args, **kwargs): raw = func(*args, **kwargs) raw.read = partial(raw.read, decode_content=True) return raw return wrapper def response_decode_content(func): @wraps(func) def wrapper(*args, **kwargs): response = func(*args, **kwargs) response.raw.read = partial(response.raw.read, decode_content=True) return response return wrapper astropy-pyvo-f0fdda3/pyvo/utils/formatting.py000066400000000000000000000035361521254414300216500ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ A collection of routines to format metadata """ import re from itertools import chain import textwrap _parasp = re.compile(r"(?:[ \t\r\f\v]*\n){2,}[ \t\r\f\v]*") _ptag = re.compile(r"\s*(?:)|(?:\\para(?:\\ )*)\s*") def para_format_desc(text, width=78): """ format description text into paragraphs suitable for display in the shell. That is, the output will be one or more plain text paragraphs of the prescribed width (78 characters, the default). The text will be split into separate paragraphs where there occurs (1) a two or more consecutive carriage return, (2) an HTML paragraph tag, or (2) a LaTeX paragraph control sequence. It will attempt other substitutions of HTML and LaTeX markup that sometimes find their way into resource descriptions. """ paras = _parasp.split(text) paras = filter( bool, chain.from_iterable(_ptag.split(para) for para in paras)) paras = ("\n".join( map(lambda ll: ll.strip(), para.splitlines()) ) for para in paras) paras = map(deref_markup, paras) return "\n\n".join(textwrap.fill(para, width) for para in paras) _musubs = [ (re.compile(r"<"), "<"), (re.compile(r">"), ">"), (re.compile(r"&"), "&"), (re.compile(r""), ''), (re.compile(r"

"), ''), (re.compile(r"°"), " deg"), (re.compile(r"\$((?:[^\$]*[\*\+=/^_~><\\][^\$]*)|(?:\w+))\$"), r'\1'), (re.compile(r"\\deg"), " deg"), ] _alink = re.compile(r'''\s*(\S.*\S)\s*''') def deref_markup(text): """ perform some substitutions of common markup suitable for text display. This includes HTML escape sequence """ for pat, repl in _musubs: text = pat.sub(repl, text) text = _alink.sub(r"\3 <\2>", text) return text astropy-pyvo-f0fdda3/pyvo/utils/http.py000066400000000000000000000033701521254414300204510ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ HTTP utils """ import platform import requests from ..version import version __all__ = ["setup_user_agent"] _USER_AGENT_TEMPLATE = ("pyVO/{pyvo_version} Python/{python_version}" " ({system}) (IVOA-{purpose})") def setup_user_agent(*, purpose="science", primary_component=""): """ Sets up a user agent for http requests made by pyVO. This respects the IVOA Note "Operational Identification of Software Components", https://ivoa.net/documents/Notes/softid/ ("softid"). If you do not want this, perhaps for privacy reasons, you can put an arbitrary string into pyvo.utils.http.USER_AGENT. Parameters ---------- purpose : str The function of the current user agent in the VO: Usually "science", but infrastructure code might use test or copy as per the softid Note. primary_component : str An custom identifier for your particular program, preferably in the form "myProgram/0.2". """ global USER_AGENT USER_AGENT = _USER_AGENT_TEMPLATE.format( pyvo_version=version, python_version=platform.python_version(), system=platform.system(), purpose=purpose) if primary_component: USER_AGENT = primary_component+" "+USER_AGENT def use_session(session): """ Return the session passed in, or create a default session to use for this network request. """ if session: return session else: return create_session() def create_session(): """ Create a new empty requests session with a pyvo user agent. """ session = requests.Session() session.headers['User-Agent'] = USER_AGENT return session setup_user_agent() astropy-pyvo-f0fdda3/pyvo/utils/protofeature.py000066400000000000000000000040341521254414300222070ustar00rootroot00000000000000from dataclasses import dataclass __all__ = ['Feature'] @dataclass class Feature: """ A prototype feature implementing a standard that is currently in the process of being approved, but that might change as a result of the approval process. A Feature must have a name. Optionally, a feature may have a *url* that is displayed to the user in case a feature is used without the user explicitly opting in on its usage. The URL is expected to contain more information about the standard and its state in the approval process. """ name: str url: str = '' on: bool = False def should_error(self): """ Should accessing this feature fail? Returns ------- bool Whether accessing this feature should result in an error. """ return not self.on def error(self, function_name): """ Format an error message when the feature is being accesses without the user having opted in its usage. This function will be used as a callback when an error message needs to be displayed to the user, with the function name that was accessed as an argument. Extensions of this class may have additional information to display. Parameters ---------- function_name: str The name of the function associated to this feature and that the user called. Returns ------- str: The error message to be displayed to the user. """ message = (f'{function_name} is part of a prototype feature ({self.name}) that has not ' 'been activated. For information about prototype features please refer to ' 'https://pyvo.readthedocs.io/en/latest/utils/prototypes.html .') if self.url: message += f' For more information about the {self.name} feature please visit {self.url}.' message += (" To suppress this error and enable the feature use " f"`pyvo.utils.activate_features('{self.name}')`") return message astropy-pyvo-f0fdda3/pyvo/utils/prototype.py000066400000000000000000000103731521254414300215400ustar00rootroot00000000000000import inspect import warnings from functools import wraps from collections.abc import Iterable from .protofeature import Feature from pyvo.dal.exceptions import PyvoUserWarning __all__ = ['features', 'prototype_feature', 'activate_features', 'PrototypeWarning', 'PrototypeError'] features: dict[str, "Feature"] = { 'cadc-tb-upload': Feature('cadc-tb-upload', 'https://wiki.ivoa.net/twiki/bin/view/IVOA/TAP-1_1-Next', False), 'MIVOT': Feature('MIVOT', 'https://ivoa.net/documents/MIVOT/20230620/REC-mivot-1.0.pdf', False) } def prototype_feature(*args): """ Decorator for functions and classes that implement unstable standards which haven't been approved yet. The decorator can be used to tag individual functions or methods. Please refer to the user documentation for details. Parameters ---------- args: iterable of arguments. Currently, the decorator must always be called with one and only one argument, a string representing the feature's name associated with the decorated class or functions. Additional arguments will be ignored, while using the decorator without any arguments will result in a ``PrototypeError`` error. Returns ------- The class or function it decorates, which will be associated to the feature provided as argument. """ feature_name = _parse_args(*args) decorator = _make_decorator(feature_name) return decorator def _set_features(flag, *feature_names: Iterable[str]): names = feature_names or set(features.keys()) for name in names: if not _validate(name): continue features[name].on = flag def activate_features(*feature_names: Iterable[str]): """ Activate one or more prototype features. Parameters ---------- feature_names: Iterable[str] An arbitrary number of feature names. If a feature with that name does not exist, a `PrototypeWarning` will be issued. If no arguments are provided, all features will be activated Returns ------- """ _set_features(True, *feature_names) def deactivate_features(*feature_names: Iterable[str]): """ De-activate one or more prototype features. Parameters ---------- feature_names: Iterable[str] An arbitrary number of feature names. If a feature with that name does not exist, a `PrototypeWarning` will be issued. If no arguments are provided, all features will be de-activated Returns ------- """ _set_features(False, *feature_names) class PrototypeError(Exception): pass class PrototypeWarning(PyvoUserWarning): pass def _parse_args(*args): if not args or callable(args[0]): raise PrototypeError("The `prototype_feature` decorator must always be called with the " "feature name as an argument") return args[0] def _make_decorator(feature_name): def decorator(decorated): if inspect.isfunction(decorated): return _make_wrapper(feature_name, decorated) if inspect.isclass(decorated): method_infos = inspect.getmembers(decorated, predicate=_should_wrap) _wrap_class_methods(decorated, method_infos, feature_name) return decorated return decorator def _validate(feature_name): if feature_name not in features: warnings.warn(f'No such feature "{feature_name}"', category=PrototypeWarning) return False return True def _warn_or_raise(function, feature_name): _validate(feature_name) feature = features[feature_name] if feature.should_error(): raise PrototypeError(feature.error(function.__name__)) def _should_wrap(member): return inspect.isfunction(member) and not member.__name__.startswith('_') def _wrap_class_methods(decorated_class, method_infos, feature_name): for method_info in method_infos: setattr(decorated_class, method_info[0], _make_wrapper(feature_name, method_info[1])) def _make_wrapper(feature_name, function): @wraps(function) def wrapper(*args, **kwargs): _warn_or_raise(function, feature_name) return function(*args, **kwargs) return wrapper astropy-pyvo-f0fdda3/pyvo/utils/testing.py000066400000000000000000000022231521254414300211430ustar00rootroot00000000000000""" Miscellenaneous utilities for writing tests. """ from astropy.io.votable import tree from pyvo.dal import query as dalquery try: TABLE_ELEMENT = tree.TableElement except AttributeError: TABLE_ELEMENT = tree.Table def create_votable(field_descs, records): """returns a VOTableFile with a a single table containing records, described by field_descs. """ votable = tree.VOTableFile() resource = tree.Resource(type="results") votable.resources.append(resource) table = TABLE_ELEMENT(votable) resource.tables.append(table) table.fields.extend( tree.Field(votable, **desc) for desc in field_descs) table.create_arrays(len(records)) for index, rec in enumerate(records): table.array[index] = rec return votable def create_dalresults( field_descs, records, *, resultsClass=dalquery.DALResults): """returns a DALResults instance for a query returning records described by field_descs. The arguments are as for create_votable. """ return resultsClass( create_votable(field_descs, records), url="http://testing.pyvo/test-url") astropy-pyvo-f0fdda3/pyvo/utils/tests/000077500000000000000000000000001521254414300202575ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/utils/tests/__init__.py000066400000000000000000000001001521254414300223570ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst astropy-pyvo-f0fdda3/pyvo/utils/tests/test_http.py000066400000000000000000000006731521254414300226550ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.utils.http """ import platform from pyvo.utils.http import create_session from pyvo.version import version def test_create_session(): test_session = create_session() assert (test_session.headers['User-Agent'] == (f'pyvo-unittest pyVO/{version} Python/{platform.python_version()}' f' ({platform.system()}) (IVOA-test)')) astropy-pyvo-f0fdda3/pyvo/utils/tests/test_prototype.py000066400000000000000000000076471521254414300237530ustar00rootroot00000000000000from copy import deepcopy from unittest import mock import pytest from pyvo.utils import prototype_feature, activate_features, prototype from pyvo.utils.prototype import PrototypeError, PrototypeWarning, Feature @pytest.fixture(name='prototype_function') def _prototype_function(features): features({ 'my-feature': Feature('my-feature', url='http://somewhere/else') }) @prototype_feature('my-feature') def i_am_prototype(arg): arg('called') return i_am_prototype @pytest.fixture(name='features') def _features(): previous_available = deepcopy(prototype.features) prototype.features.clear() def add(features): prototype.features.update(features) yield add prototype.features.clear() prototype.features.update(previous_available) def test_feature_turned_off_by_default(prototype_function): with pytest.raises(PrototypeError) as e: prototype_function(None) assert 'i_am_prototype is part of a prototype feature (my-feature) that has not been activated. ' in str( e.value) assert 'please visit http://somewhere/else' in str(e.value) assert 'https://pyvo.readthedocs.io/en/latest/utils/prototypes.html' in str(e.value) assert "pyvo.utils.activate_features('my-feature')" in str(e.value) def test_activate_feature(prototype_function): probe = mock.Mock() activate_features('my-feature') try: prototype_function(probe) except Exception as exc: assert False, f"Should not have raised {exc}" probe.assert_called_once_with('called') def test_non_existent_feature_warning(): with pytest.warns(PrototypeWarning) as w: activate_features('i dont exist') assert len(w) == 1 assert str(w[0].message) == 'No such feature "i dont exist"' def test_activate_all_features(features): features({ 'feat-one': Feature('feat-one'), 'feat-two': Feature('feat-two') }) activate_features() assert set(prototype.features.keys()) == {'feat-one', 'feat-two'} assert prototype.features['feat-one'].on assert prototype.features['feat-two'].on def test_decorate_class(features, recwarn): features({ 'class': Feature('class') }) probe = mock.Mock() @prototype_feature('class') class SomePrototype: def method(self): probe('method') @staticmethod def static(): probe('static') def __ignore__(self): probe('ignore') with pytest.raises(PrototypeError): SomePrototype.static() with pytest.raises(PrototypeError): SomePrototype().method() SomePrototype().__ignore__() probe.assert_called_once_with('ignore') probe.reset_mock() activate_features('class') SomePrototype.static() probe.assert_called_once_with('static') probe.reset_mock() SomePrototype().method() probe.assert_called_once_with('method') probe.reset_mock() SomePrototype().__ignore__() probe.assert_called_once_with('ignore') def test_decorator_without_args_errors_out(): with pytest.raises(PrototypeError) as e: @prototype_feature def function(): pass assert str(e.value) == ("The `prototype_feature` decorator must always be called with the feature " "name as an argument") def test_decorator_without_args_around_class(): with pytest.raises(PrototypeError) as e: @prototype_feature class Class: pass assert str(e.value) == ("The `prototype_feature` decorator must always be called with the feature " "name as an argument") def test_decorator_with_no_arguments_and_class(): with pytest.raises(PrototypeError) as e: @prototype_feature() class Class: pass assert str(e.value) == ("The `prototype_feature` decorator must always be called with the feature " "name as an argument") astropy-pyvo-f0fdda3/pyvo/utils/tests/test_url.py000066400000000000000000000004651521254414300224770ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.utils.url """ from pyvo.utils.url import url_sibling def test_url(): url = "http://example.org/tap/capabilities" siblingified = url_sibling(url, "tables") assert siblingified == "http://example.org/tap/tables" astropy-pyvo-f0fdda3/pyvo/utils/tests/test_vocabularies_remote.py000066400000000000000000000063431521254414300257300ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.utils.vocabularies It's hard to write meaningful tests for those that don't require network connectivity because essentially it's all just wrapping downloads. Hence, I'm just giving in rather than bother with a mock server. """ import os import pathlib import time import pytest from astropy.utils import data from pyvo.dal.exceptions import PyvoUserWarning from pyvo.utils import vocabularies @pytest.mark.remote_data class TestVocabularies: def test_basic_getting(self): # clear the lru cache in case someone else has already used # datalink/core. vocabularies.get_vocabulary.cache_clear() voc = vocabularies.get_vocabulary("datalink/core") assert "progenitor" in voc["terms"] assert data.is_url_in_cache("http://www.ivoa.net/rdf/datalink/core") def test_label_getting(self): voc = vocabularies.get_vocabulary("datalink/core") assert (vocabularies.get_label(voc, "coderived") == "Coderived Data") def test_label_getting_default(self): voc = vocabularies.get_vocabulary("datalink/core") assert vocabularies.get_label(voc, "oov", "Missing") == "Missing" def test_refreshing(self): voc = vocabularies.get_vocabulary("datalink/core", force_update=True) # first make sure that things didn't break assert "progenitor" in voc["terms"] # now guess that a download has actually happened; we don't want # to reflect cache name generation here, so we just check if there's # a recent download in the cache directory dldir = data._get_download_cache_loc() with os.scandir(dldir) as entries: last_change = 0 for entry in entries: last_change = max(last_change, entry.stat().st_mtime) assert time.time() - last_change < 2 def test_non_existing_voc(self): with pytest.raises(vocabularies.VocabularyError): vocabularies.get_vocabulary("not_an_ivoa_vocabulary") def test_failed_update(self): # Create a fake vocabulary and make it so old the machine # will want to refresh it. fake_voc = "http://www.ivoa.net/rdf/astropy-test-failure" cache_dir = pathlib.Path(data._get_download_cache_loc() ) / data._url_to_dirname(fake_voc) cache_dir.mkdir(exist_ok=True) cache_name = cache_dir / "contents" with open(cache_name, "w") as f: f.write("{}") with open(cache_dir / "url", "w") as f: f.write(fake_voc) os.utime(cache_name, (1000000000, 1000000000)) with pytest.warns(PyvoUserWarning) as msgs: vocabularies.get_vocabulary("astropy-test-failure") # this sometimes catches a warning about an unclosed socket that, # I think, originates somewhere else; let me work around it for # the moment. for msg in msgs: if str(msg.message) == ("Updating cache for the vocabulary" " astropy-test-failure failed: HTTP Error 404: Not Found"): break else: raise AssertionError("No warning about failed cache update") astropy-pyvo-f0fdda3/pyvo/utils/url.py000066400000000000000000000012011521254414300202630ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst """ URL utils """ from urllib.parse import urlparse, urlunparse from posixpath import split as pathsplit, join as pathjoin def url_sibling(url, sibling): """ Replaces the last path element in an url Parameters ---------- url : str The url for which the last path element should be replaced sibling : str The replace value """ parsed = urlparse(url) newpath_segments = pathsplit(parsed.path)[:-1] + (sibling,) newpath = pathjoin(*newpath_segments) return urlunparse(list(parsed[:2]) + [newpath] + list(parsed[3:])) astropy-pyvo-f0fdda3/pyvo/utils/vocabularies.py000066400000000000000000000043161521254414300221520ustar00rootroot00000000000000""" A shallow interface to IVOA vocabularies. See http://ivoa.net/documents/Vocabularies/ (>= version 2) for the larger background. In this module, we essentially wrap the retrieval and caching of the desise files. """ import functools import json import os import time import warnings from astropy.utils.data import download_file, clear_download_cache from pyvo.dal.exceptions import PyvoUserWarning IVOA_VOCABULARY_ROOT = "http://www.ivoa.net/rdf/" class VocabularyError(Exception): """A generic error that occurred when interacting with the IVOA vocabulary repository. """ @functools.lru_cache def get_vocabulary(voc_name, force_update=False): """returns an IVOA vocabulary in its "desise" form. See Vocabularies in the VO 2 to see what is inside of this. This will use a cache to avoid repeated updates, but it will attempt to re-download if the cached copy is older than 6 months. """ src_url = IVOA_VOCABULARY_ROOT + voc_name if force_update: clear_download_cache(src_url) try: src_name = download_file( src_url, cache=True, show_progress=False, http_headers={"accept": "application/x-desise+json"}) except Exception as msg: raise VocabularyError("No such vocabulary: {} ({})".format( voc_name, msg)) if time.time() - os.path.getmtime(src_name) > 3600 * 60 * 150: # attempt a re-retrieval, but ignore failure try: src_name = download_file( IVOA_VOCABULARY_ROOT + voc_name, cache="update", show_progress=False, http_headers={"accept": "application/x-desise+json"}) except Exception as msg: warnings.warn("Updating cache for the vocabulary" f" {voc_name} failed: {msg}", category=PyvoUserWarning) with open(src_name, encoding="utf-8") as f: return json.load(f) def get_label(voc, term, default=None): """returns the label of term if it's in the desise vocabulary voc, term capitalised otherwise. """ if term in voc["terms"]: return voc["terms"][term]["label"] else: return default # vi:et:sw=4:sta astropy-pyvo-f0fdda3/pyvo/utils/xml/000077500000000000000000000000001521254414300177155ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/utils/xml/__init__.py000066400000000000000000000000001521254414300220140ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/utils/xml/elements.py000066400000000000000000000355561521254414300221210ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from inspect import getmembers from functools import partial import warnings from astropy.utils.xml import iterparser from astropy.io.votable.exceptions import warn_or_raise from pyvo.utils.xml.exceptions import UnknownElementWarning __all__ = [ "xmlattribute", "xmlelement", "make_add_complexcontent", "make_add_simplecontent", "Element", "ElementWithXSIType", "ContentMixin", "parse_for_object"] def parse_for_object( source, object_type, pedantic=None, filename=None, _debug_python_based_parser=False ): """ Parses an xml file (or file-like object), and returns a object of specified object_type. object_type must be a subtype of `~pyvo.utils.xml.elements.Element` type Parameters ---------- source : str or readable file-like object Path or file object containing a tableset xml file. object : object type to return (subtype `~pyvo.utils.xml.elements.Element`) pedantic : bool, optional When `True`, raise an error when the file violates the spec, otherwise issue a warning. Warnings may be controlled using the standard Python mechanisms. See the `warnings` module in the Python standard library for more information. Defaults to False. filename : str, optional A filename, URL or other identifier to use in error messages. If *filename* is None and *source* is a string (i.e. a path), then *source* will be used as a filename for error messages. Therefore, *filename* is only required when source is a file-like object. Returns ------- object : `~pyvo.utils.xml.elements.Element` object or None See also -------- pyvo.io.vosi.exceptions : The exceptions this function may raise. """ config = { 'pedantic': pedantic, 'filename': filename } if filename is None and isinstance(source, str): config['filename'] = source with iterparser.get_xml_iterator( source, _debug_python_based_parser=_debug_python_based_parser ) as iterator: return object_type( config=config, pos=(1, 1)).parse(iterator, config) class xmlattribute(property): def __init__(self, fget=None, fset=None, fdel=None, doc=None, name=None): super().__init__(fget, fset, fdel, doc) if name: self.name = name elif fget is not None: self.name = fget.__name__ else: raise ValueError( "xmlattribute either needs a getter or a element name or both") def __call__(self, fget): return self.__class__(fget, name=self.name) def getter(self, fget): return self.__class__( fget, self.fset, self.fdel, self.__doc__, self.name) def setter(self, fset): return self.__class__( self.fget, fset, self.fdel, self.__doc__, self.name) def deleter(self, fdel): return self.__class__( self.fget, self.fset, fdel, self.__doc__, self.name) class xmlelement(property): """ """ def __init__( self, fget=None, fset=None, fdel=None, fadd=None, fformat=None, doc=None, name=None, ns=None, plain=False, cls=None, multiple_exc=None ): super().__init__(fget, fset, fdel, doc) if name: self.name = name elif fget is not None: self.name = fget.__name__ else: self.name = None self.ns = ns self.plain = plain self.cls = cls self.multiple_exc = multiple_exc self.fadd = fadd self.fformat = fformat def __call__(self, fget): return self.__class__( fget, name=self.name or fget.__name__, ns=self.ns, plain=self.plain, cls=self.cls, multiple_exc=self.multiple_exc ) def __get__(self, obj, owner=None): if obj is not None: val = super().__get__(obj, owner) if self.plain: return val elif not isinstance(val, (Element, list)): element = ContentMixin(_name=self.name, _ns=self.ns) element.content = val return element else: return val else: return super().__get__(obj, owner) def getter(self, fget): return self.__class__( fget, self.fset, self.fdel, self.fadd, self.fformat, self.__doc__, self.name, self.ns, self.plain, self.cls, self.multiple_exc) def setter(self, fset): return self.__class__( self.fget, fset, self.fdel, self.fadd, self.fformat, self.__doc__, self.name, self.ns, self.plain, self.cls, self.multiple_exc) def deleter(self, fdel): return type(self)( self.fget, self.fset, fdel, self.fadd, self.fformat, self.__doc__, self.name, self.ns, self.plain, self.cls, self.multiple_exc) def adder(self, fadd): if self.cls: raise RuntimeError( 'xmlelement cls parameter has no effect when adder is' ' defined') if self.multiple_exc: raise RuntimeError( 'xmlelement multiple_exc parameter has no effect when' ' adder is defined') return self.__class__( self.fget, self.fset, self.fdel, fadd, self.fformat, self.__doc__, self.name, self.ns, self.plain, self.cls, self.multiple_exc) def formatter(self, fformat): return self.__class__( self.fget, self.fset, self.fdel, self.fadd, fformat, self.__doc__, self.name, self.ns, self.plain, self.cls, self.multiple_exc) def object_attrs(obj): objtype = type(obj) attrs = { getattr(objtype, name).name: value for name, value in getmembers(obj) if isinstance(getattr(objtype, name, None), xmlattribute)} return attrs def object_children(obj): objtype = type(obj) try: for child in obj: if isinstance(child, Element): yield (child._Element__name, None, child) except TypeError: for name, child in getmembers(obj): if child is None: continue descr = getattr(objtype, name, None) if isinstance(descr, xmlelement): element_name = descr.name if descr.fformat: fformat = partial(descr.fformat, obj) else: fformat = None yield (element_name, fformat, child) elif isinstance(child, Element): yield (child._Element__name, None, child) def object_mapping(obj): objtype = type(obj) for name, val in getmembers(obj): descr = getattr(objtype, name, None) if isinstance(descr, xmlelement): if descr.fadd is None: if descr.cls is None: fadd = make_add_simplecontent( obj, descr.name, name, descr.multiple_exc) else: fadd = make_add_complexcontent( obj, descr.name, name, descr.cls, descr.multiple_exc) else: fadd = partial(descr.fadd, obj) yield descr.name, fadd def make_add_complexcontent( self, element_name, attr_name, cls_, exc_class=None): """ Factory for generating add functions for elements with complex content. """ def add_complexcontent(iterator, tag, data, config, pos): attr = getattr(self, attr_name) element = cls_( config=config, pos=pos, _name=element_name, **data) if attr and exc_class is not None: warn_or_raise( exc_class, args=element_name, config=config, pos=pos) if isinstance(getattr(self, attr_name, None), list): getattr(self, attr_name).append(element) else: setattr(self, attr_name, element) element.parse(iterator, config) return add_complexcontent def make_add_simplecontent( self, element_name, attr_name, exc_class=None, check_func=None, data_func=None): """ Factory for generating add functions for elements with simple content. This means elements with no child elements. If exc_class is given, warn or raise if element was already set. """ def add_simplecontent(iterator, tag_ignored, data_ignored, config, pos_ignored): # Ignored parameters are kept in the API signature to be compatible # with other functions. for start, tag, data, pos in iterator: if not start and tag == element_name: attr = getattr(self, attr_name) if attr and exc_class: warn_or_raise( exc_class, args=self._Element__name, config=config, pos=pos) if check_func: check_func(data, config, pos) if data_func: data = data_func(data) if isinstance(getattr(self, attr_name), list): getattr(self, attr_name).append(data) else: setattr(self, attr_name, data or None) break return add_simplecontent class Element: """ A base class for all classes that represent XML elements. Subclasses and Mixins must initialize their independent attributes after calling ``super().__init__``. """ def __init__(self, config=None, pos=None, _name='', _ns='', **kwargs): if config is None: config = {} self._config = config self._pos = pos self.__name = _name self.__ns = _ns self._tag_mapping = {} def _add_unknown_tag(self, iterator, tag, data, config, pos): if tag != 'xml': warn_or_raise( UnknownElementWarning, UnknownElementWarning, tag, config, pos) def _end_tag(self, tag, data, pos): pass def _ignore_add(self, iterator, tag, data, config, pos): pass def parse(self, iterator, config): """ For internal use. Parse the XML content of the children of the element. Override this method and do after-parse checks after calling ``super().parse``, if you need to. Parameters ---------- iterator : xml iterator An iterator over XML elements as returned by `~astropy.utils.xml.iterparser.get_xml_iterator`. config : dict The configuration dictionary that affects how certain elements are read. """ tag_mapping = dict(object_mapping(self)) for start, tag, data, pos in iterator: if start: tag_mapping.get(tag, self._add_unknown_tag)( iterator, tag, data, config, pos) else: if tag == self._Element__name: self._end_tag(tag, data, pos) break return self def to_xml(self, w, **kwargs): if self._Element__ns: name = ':'.join((self._Element__ns, self._Element__name)) else: name = self._Element__name with w.tag(name, attrib=object_attrs(self)): for name, formatter, child in object_children(self): if isinstance(child, Element): child.to_xml(w, formatter=formatter) else: if formatter: child = formatter() if not child: child = '' w.element(name, str(child)) class ElementWithXSIType(Element): """ An XML element that supports type dispatch through xsi:type. When a class A is derived from this, it gains a decorator register_xsi_type, which classes derived from A can use to say "construct me rather than A when xsi:type has the value I'm putting in. At this point we are doing *no* namespace processing in our XML parsing. Hence, we discard any prefixes both when registering and when matching. We probably should do namespaces one day; astropy.utils.xml will presumably learn them when they add VO-DML support. Let's revisit this when it's there safely. Meanwhere, use canonical Registry prefixes (cf. RegTAP 1.1, sect. 5) everywhere in your code; these will continue to be safe no matter what. """ _xsi_type_mapping = {} @classmethod def register_xsi_type(cls, typename): """Decorator factory for registering subtypes.""" def register(class_): """Decorator for registering subtypes""" cls._xsi_type_mapping[typename.split(":")[-1]] = class_ return class_ return register def __new__(cls, *args, **kwargs): xsi_type = None # Another namespace trouble: people can bind the xsi URI # to anything, *and* it's not unlikely they have another # type attribute, too. Wiggle out of it by preferring a # literal xsi:type and otherwise hope for the best. This # really needs to be fixed when we switch to namespace-aware # parsing. for name, val in kwargs.items(): if name == "xsi:type": xsi_type = val break elif name.split(":")[-1] == "type": xsi_type = val if xsi_type is None: dtype = cls else: try: dtype = cls._xsi_type_mapping[xsi_type.split(":")[-1]] except KeyError: warnings.warn(f"Unknown xsi:type {xsi_type} ignored") dtype = cls obj = Element.__new__(dtype) if args or kwargs: obj.__init__(*args, **kwargs) return obj class ContentMixin(Element): """ Mixin class for elements with inner content. """ def __init__(self, config=None, pos=None, _name=None, _ns=None, **kwargs): super().__init__(config, pos, _name, _ns, **kwargs) self._content = None def __bool__(self): return bool(self.content) __nonzero__ = __bool__ def _end_tag(self, tag, data, pos): self.content = data def _content_check(self, content): pass def _content_parse(self, content): return content @property def content(self): """The inner content of the element.""" return self._content @content.setter def content(self, content): self._content_check(content) self._content = self._content_parse(content) def to_xml(self, w, **kwargs): if self._Element__ns: name = ':'.join((self._Element__ns, self._Element__name)) else: name = self._Element__name try: content = kwargs['formatter']() except (KeyError, TypeError): content = self.content if content is not None: w.element(name, str(content), attrib=object_attrs(self)) astropy-pyvo-f0fdda3/pyvo/utils/xml/exceptions.py000066400000000000000000000020661521254414300224540ustar00rootroot00000000000000# Licensed under a 3-clause BSD style license - see LICENSE.rst from astropy.utils.exceptions import AstropyWarning __all__ = ['XMLWarning', 'UnknownElementWarning'] def _format_message(message, name, config=None, pos=None): if config is None: config = {} if pos is None: pos = ('?', '?') filename = config.get('filename', '?') return f'{filename}:{pos[0]}:{pos[1]}: {name}: {message}' class XMLWarning(AstropyWarning): """ Base warning for violations of XML specifications """ def __init__(self, args, config=None, pos=None): if config is None: config = {} if not isinstance(args, tuple): args = (args, ) msg = self.message_template.format(*args) self.formatted_message = _format_message( msg, self.__class__.__name__, config, pos) Warning.__init__(self, self.formatted_message) class UnknownElementWarning(XMLWarning): """ Warning for missing xml elements """ message_template = "Unknown element {}" default_args = ('x',) astropy-pyvo-f0fdda3/pyvo/utils/xml/tests/000077500000000000000000000000001521254414300210575ustar00rootroot00000000000000astropy-pyvo-f0fdda3/pyvo/utils/xml/tests/test_elements.py000066400000000000000000000055671521254414300243210ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst """ Tests for pyvo.utils.xml.elements """ import io import pytest from astropy.utils.xml import iterparser from pyvo.utils.xml import elements class TBase(elements.ElementWithXSIType): pass @TBase.register_xsi_type("foo:TOther1") class TOther1(TBase): pass # it's unclear whether we want to support unprefixed type names # once we properly handle XML namespaces. Feel free to adapt # the following declaration. @TBase.register_xsi_type("TOther2") class TOther2(TBase): pass class _Root(elements.Element): def __init__(self): super().__init__(self, _name="root") self._tbase = None @elements.xmlelement(name="tbase", cls=TBase) def tbase(self): return self._tbase @tbase.setter def tbase(self, obj): self._tbase = obj class TestXSIType: # Note: most of these tests will need namespace declarations # once we're properly dealing with namespaces. However, I # don't want to predicate an API to proper namespace support, # so they're missing for now. def _parse_string(self, xml_source): with iterparser.get_xml_iterator(io.BytesIO(xml_source)) as i: return _Root().parse(i, {}) def test_no_type(self): found_type = self._parse_string(b'').tbase.__class__ assert found_type.__name__ == "TBase" def test_prefixed_type(self): found_type = self._parse_string(b'' ).tbase.__class__ assert found_type.__name__ == "TOther1" def test_unprefixed_type(self): # This is undesired behaviour; this test should fail once # we've properly parsing XML found_type = self._parse_string(b'' ).tbase.__class__ assert found_type.__name__ == "TOther1" def test_badprefixed_type(self): found_type = self._parse_string(b'' ).tbase.__class__ assert found_type.__name__ == "TOther2" def test_xsi_ignorable(self): # This is again unwelcome behaviour, but unavoidable as long # as we hack around namespaces found_type = self._parse_string(b'' ).tbase.__class__ assert found_type.__name__ == "TOther2" def test_xsi_preferred(self): # Another piece unwelcome behaviour. found_type = self._parse_string( b'' ).tbase.__class__ assert found_type.__name__ == "TOther2" def test_bad_type(self): with pytest.warns(match='Unknown xsi:type ns1:NoSuchType ignored'): self._parse_string(b'') astropy-pyvo-f0fdda3/setup.cfg000066400000000000000000000073641521254414300166130ustar00rootroot00000000000000[tool:pytest] minversion = 7.0 norecursedirs = build docs/_build testpaths = "pyvo" "docs" astropy_header = true doctest_plus = enabled text_file_format = rst addopts = --doctest-rst --doctest-continue-on-failure remote_data_strict = true timeout = 30 filterwarnings = error ignore:numpy.ndarray size changed:RuntimeWarning ignore:unclosed =5.0 requests python_requires = >=3.10 [options.extras_require] all = pillow defusedxml test = pytest-doctestplus>=0.13 pytest-astropy>=0.6 requests-mock pytest-timeout docs = sphinx-astropy [options.package_data] pyvo.auth.tests = data/tap/*.xml pyvo.io.uws.tests = data/*.xml pyvo.io.vosi.tests = data/*.xml, data/tables/*.xml, data/capabilities/*.xml pyvo.registry.tests = data/*.xml, data/*.desise pyvo.mivot.writer = *.xsd pyvo.mivot.tests = data/*.xml, data/input/*.xml, data/output/*.xml, data/reference/*json, data/reference/*xml pyvo.dal.tests = data/*.xml, data/*/* pyvo.samp = data/astropy_icon.png, data/*xml [coverage:run] source = pyvo omit = pyvo/_astropy_init* pyvo/conftest.py pyvo/*setup_package* pyvo/tests/* pyvo/*/tests/* pyvo/extern/* pyvo/version* */pyvo/_astropy_init* */pyvo/conftest.py */pyvo/*setup_package* */pyvo/tests/* */pyvo/*/tests/* */pyvo/extern/* */pyvo/version* [coverage:report] exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don't complain about packages we have installed except ImportError # Don't complain if tests don't hit assertions raise AssertionError raise NotImplementedError # Don't complain about script hooks def main\(.*\): # Ignore branches that don't pertain to this version of Python pragma: py{ignore_python_version} # Don't complain about IPython completion helper def _ipython_key_completions_ astropy-pyvo-f0fdda3/setup.py000066400000000000000000000036411521254414300164760ustar00rootroot00000000000000#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst # NOTE: The configuration for the package, including the name, version, and # other information are set in the setup.cfg file. import os import sys from setuptools import setup # First provide helpful messages if contributors try and run legacy commands # for tests or docs. TEST_HELP = """ Note: running tests is no longer done using 'python setup.py test'. Instead you will need to run: tox -e test If you don't already have tox installed, you can install it with: pip install tox If you only want to run part of the test suite, you can also use pytest directly with:: pip install -e .[test] pytest For more information, see: http://docs.astropy.org/en/latest/development/testguide.html#running-tests """ if 'test' in sys.argv: print(TEST_HELP) sys.exit(1) DOCS_HELP = """ Note: building the documentation is no longer done using 'python setup.py build_docs'. Instead you will need to run: tox -e build_docs If you don't already have tox installed, you can install it with: pip install tox You can also build the documentation with Sphinx directly using:: pip install -e .[docs] cd docs make html For more information, see: http://docs.astropy.org/en/latest/install.html#builddocs """ if 'build_docs' in sys.argv or 'build_sphinx' in sys.argv: print(DOCS_HELP) sys.exit(1) VERSION_TEMPLATE = """ # Note that we need to fall back to the hard-coded version if either # setuptools_scm can't be imported or setuptools_scm can't determine the # version, so we catch the generic 'Exception'. try: from setuptools_scm import get_version version = get_version(root='..', relative_to=__file__) except Exception: version = '{version}' """.lstrip() setup(use_scm_version={'write_to': os.path.join('pyvo', 'version.py'), 'write_to_template': VERSION_TEMPLATE}) astropy-pyvo-f0fdda3/tox.ini000066400000000000000000000043441521254414300163000ustar00rootroot00000000000000[tox] # Please note that not all the combinations below are guaranteed to work # as oldestdeps and devastropy might not support the full python range # listed here envlist = py{310,311,312,313,314}-test{,-alldeps,-oldestdeps,-devdeps}{,-online}{,-cov} linkcheck codestyle build_docs requires = setuptools >= 30.3.0 pip >= 19.3.1 [testenv] extras = test alldeps: all description = run tests oldestdeps: with oldest supported dependencies devdeps: with development version of dependencies cov: determine the code coverage passenv = CI setenv = PYTEST_ARGS = -rsxf --show-capture=no online: PYTEST_ARGS = --remote-data=any --reruns=1 --reruns-delay 10 -rsxf --show-capture=no devdeps: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/scientific-python-nightly-wheels/simple https://pypi.anaconda.org/liberfa/simple https://pypi.anaconda.org/astropy/simple # No astropy py314 wheels on pypi yet py314: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/liberfa/simple https://pypi.anaconda.org/astropy/simple deps = cov: coverage devdeps: numpy>=0.0.dev0 devdeps: pyerfa>=0.0.dev0 devdeps: astropy>=0.0.dev0 oldestdeps: astropy==5.0 # We set a suitably old numpy along with an old astropy, no need to pick up # deprecations and errors due to their unmatching versions oldestdeps: numpy==1.22 online: pytest-rerunfailures commands = pip freeze !cov: pytest --pyargs {env:PYTEST_ARGS} # Run pytest with coverage to include module imports in report # See https://github.com/pytest-dev/pytest-cov/issues/455 for more info cov: coverage run -m pytest --pyargs --cov-config={toxinidir}/setup.cfg {env:PYTEST_ARGS} cov: coverage xml -o {toxinidir}/coverage.xml [testenv:linkcheck] changedir = docs description = check the links in the HTML docs extras = docs commands = pip freeze sphinx-build -W -b linkcheck . _build/html [testenv:build_docs] changedir = docs description = invoke sphinx-build to build the HTML docs extras = docs commands = pip freeze sphinx-build -W -b html . _build/html [testenv:codestyle] skip_install = true description = check code style deps = flake8 changedir = {toxinidir} commands = flake8 pyvo --count