pax_global_header00006660000000000000000000000064151046171730014517gustar00rootroot0000000000000052 comment=91fa41ad05e71fd03c3156372cd0ef1bd52b2261 libjwt-3.2.3/000077500000000000000000000000001510461717300130175ustar00rootroot00000000000000libjwt-3.2.3/.github/000077500000000000000000000000001510461717300143575ustar00rootroot00000000000000libjwt-3.2.3/.github/workflows/000077500000000000000000000000001510461717300164145ustar00rootroot00000000000000libjwt-3.2.3/.github/workflows/build-and-test.yml000066400000000000000000000031201510461717300217470ustar00rootroot00000000000000name: LibJWT Build, Unit Tests, and Coverage on: workflow_dispatch: push: branches: [ "master" ] paths-ignore: - "doxygen/**" - ".github/**" - "images/**" - ".gitignore" - "*.md" pull_request: branches: [ "master" ] paths-ignore: - "doxygen/**" - ".github/**" - "images/**" - ".gitignore" - "*.md" jobs: build-macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: ConorMacBride/install-package@v1 with: brew: gnutls openssl@3 jansson pkgconf cmake check curl bats-core jq - name: Build and Test uses: threeal/cmake-action@v2.1.0 with: options: WITH_LIBCURL=YES build-args: | -- all check build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ConorMacBride/install-package@v1 with: apt: gnutls-dev libssl-dev libjansson-dev pkg-config check lcov valgrind libcurl4-openssl-dev bats jq - name: Build, Test, and Coverage uses: threeal/cmake-action@v2.1.0 with: options: | ENABLE_COVERAGE=YES WITH_LIBCURL=YES build-args: | -- all check-code-coverage - uses: codecov/codecov-action@v5.1.2 with: token: ${{ secrets.CODECOV_TOKEN }} files: ${{github.workspace}}/build/check-code-coverage.info disable_search: true verbose: true - name: Memcheck working-directory: ${{github.workspace}}/build run: ctest -T memcheck libjwt-3.2.3/.github/workflows/deploys-docs.yml000066400000000000000000000026731510461717300215540ustar00rootroot00000000000000name: LibJWT Documentation on: workflow_dispatch: push: branches: - "master" tags: - v* paths: - include/jwt.h - doxygen/** - cmake/LibJWTDoxyfile.cmake jobs: build: if: ${{github.ref == 'refs/heads/master'}} runs-on: macos-latest steps: - uses: actions/checkout@v4 with: fetch-tags: true fetch-depth: 0 - uses: ConorMacBride/install-package@v1 with: brew: openssl@3 jansson pkgconf cmake doxygen graphviz autoconf automake libtool - name: Build Head docs run: | set -e cmake -B build make -C build doxygen-doc mv build/doxygen-doc/html gh-pages rm -rf build - name: Build v2 release docs run: | set -e git checkout v2.1.1 autoreconf -fi mkdir build cd build ../configure make doxygen-doc cd .. mv build/doxygen-doc/html gh-pages/stable rm -rf build - name: Upload pages id: deployment uses: actions/upload-pages-artifact@v3 with: path: gh-pages/ deploy: permissions: id-token: write pages: write deployments: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: build steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 libjwt-3.2.3/.gitignore000066400000000000000000000001031510461717300150010ustar00rootroot00000000000000# Generic ignores for cmake project /build/** /out/** # VIM *.swp libjwt-3.2.3/CMakeLists.txt000066400000000000000000000242711510461717300155650ustar00rootroot00000000000000# Copyright (C) 2015-2025 maClara, LLC # This file is part of the JWT C Library # # SPDX-License-Identifier: MPL-2.0 # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. cmake_minimum_required (VERSION 3.7...3.15) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") include(LibJWTVersions) project(${LIBJWT_PROJECT} VERSION ${LIBJWT_VERSION} DESCRIPTION ${LIBJWT_DESCRIPTION} HOMEPAGE_URL ${LIBJWT_HOMEPAGE_URL} LANGUAGES C) set(MEMORYCHECK_COMMAND_OPTIONS "-q --tool=memcheck --leak-check=yes --num-callers=50 --trace-children=yes --leak-check=full --track-origins=yes --gen-suppressions=all") set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_compile_options(-Wall -Werror -Wextra -Wunused) # Must be set after the above include(GNUInstallDirs) # Find all the things we need for the library find_package(PkgConfig REQUIRED) pkg_check_modules(JANSSON jansson>=2.0 REQUIRED IMPORTED_TARGET) if (NOT DEFINED WITH_GNUTLS) set(GNUTLS_AUTO TRUE) endif() option(WITH_GNUTLS "Whether to use GnuTLS (default is auto detect)" ON) option(WITH_MBEDTLS "Whether to use mbedTLS (default is OFF)" OFF) option(WITH_LIBCURL "Whether to include CUrl for retrieving JWKS (default is OFF)" OFF) option(WITH_TESTS "Whether to build and run the testsuite (default is ON)" ON) option(WITH_KCAPI_MD "Whether to use the Linux Kernel Crypto API to offload hmac (default OFF)" OFF) # Optional if (WITH_GNUTLS) if (NOT GNUTLS_AUTO) set(GNUTLS_REQUIRED REQUIRED) endif() pkg_check_modules(GNUTLS gnutls>=3.6.0 IMPORTED_TARGET ${GNUTLS_REQUIRED}) endif() if (WITH_MBEDTLS) pkg_check_modules(MBEDTLS mbedcrypto>=3.6.0 IMPORTED_TARGET REQUIRED) endif() if (WITH_LIBCURL) pkg_check_modules(LIBCURL libcurl>=7.8.8 IMPORTED_TARGET REQUIRED) endif() if (WITH_KCAPI_MD) find_library(HAVE_KCAPI kcapi REQUIRED) endif() # Required pkg_check_modules(OPENSSL openssl>=3.0.0 IMPORTED_TARGET REQUIRED) add_library(jwt SHARED) add_library(jwt_static STATIC) set_target_properties(jwt_static PROPERTIES OUTPUT_NAME jwt COMPILE_FLAGS -DJWT_STATIC_DEFINE) if (HAVE_KCAPI) target_link_libraries(jwt PRIVATE kcapi) target_link_libraries(jwt_static PRIVATE kcapi) add_definitions(-DUSE_KCAPI_MD) endif() add_custom_command( OUTPUT jwt-builder.i COMMAND bash -c "${CMAKE_C_COMPILER} -E -DJWT_BUILDER ${CMAKE_SOURCE_DIR}/libjwt/jwt-common.c -o jwt-builder.i ${CMAKE_C_FLAGS}" -o jwt-builder.i DEPENDS libjwt/jwt-common.c) add_custom_command( OUTPUT jwt-checker.i COMMAND bash -c "${CMAKE_C_COMPILER} -E -DJWT_CHECKER ${CMAKE_SOURCE_DIR}/libjwt/jwt-common.c -o jwt-checker.i ${CMAKE_C_FLAGS}" -o jwt-checker.i DEPENDS libjwt/jwt-common.c) add_custom_target(gen_jwt_builder ALL DEPENDS jwt-builder.i) add_custom_target(gen_jwt_checker ALL DEPENDS jwt-checker.i) add_dependencies(jwt gen_jwt_builder gen_jwt_checker) add_dependencies(jwt_static gen_jwt_builder gen_jwt_checker) set(JWT_SOURCES libjwt/base64.c libjwt/jwt-memory.c libjwt/jwt.c libjwt/jwks.c libjwt/jwt-setget.c libjwt/jwt-crypto-ops.c libjwt/jwt-encode.c libjwt/jwt-verify.c libjwt/jwt-builder.c libjwt/jwt-checker.c libjwt/jwks-curl.c) # Allow building without deprecated functions (suggested) option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library (default included)" FALSE) if (EXCLUDE_DEPRECATED) set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED) endif() # Must come after the above so headers are available include(GenerateExportHeader) generate_export_header(jwt ${NO_BUILD_DEPRECATED}) include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/libjwt) target_link_libraries(jwt PUBLIC PkgConfig::JANSSON) target_link_libraries(jwt_static PUBLIC PkgConfig::JANSSON) # Process the detected packages set(HAVE_CRYPTO FALSE) if (GNUTLS_FOUND) set(HAVE_CRYPTO TRUE) add_definitions(-DHAVE_GNUTLS) target_link_libraries(jwt PUBLIC PkgConfig::GNUTLS) target_link_libraries(jwt_static PUBLIC PkgConfig::GNUTLS) list(APPEND JWT_SOURCES libjwt/gnutls/sign-verify.c) endif() if (MBEDTLS_FOUND) set(HAVE_CRYPTO TRUE) add_definitions(-DHAVE_MBEDTLS) target_link_libraries(jwt PUBLIC PkgConfig::MBEDTLS) target_link_libraries(jwt_static PUBLIC PkgConfig::MBEDTLS) list(APPEND JWT_SOURCES libjwt/mbedtls/sign-verify.c) endif() set(HAVE_CRYPTO TRUE) add_definitions(-DHAVE_OPENSSL) target_link_libraries(jwt PUBLIC PkgConfig::OPENSSL) target_link_libraries(jwt_static PUBLIC PkgConfig::OPENSSL) list(APPEND JWT_SOURCES libjwt/openssl/jwk-parse.c libjwt/openssl/sign-verify.c) if (LIBCURL_FOUND) add_definitions(-DHAVE_LIBCURL) target_link_libraries(jwt PUBLIC PkgConfig::LIBCURL) target_link_libraries(jwt_static PUBLIC PkgConfig::LIBCURL) endif() set(TOOLS) function(jwt_add_tool) set(oneValueArgs NAME SRC DIR) cmake_parse_arguments(Tool "" "${oneValueArgs}" "" ${ARGN}) list(APPEND TOOLS ${Tool_NAME}) add_executable(${Tool_NAME} ${Tool_SRC}) target_link_libraries(${Tool_NAME} PRIVATE jwt_static PkgConfig::OPENSSL) # target_link_libraries(${Tool_NAME} PRIVATE jwt) set_target_properties(${Tool_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tools" COMPILE_FLAGS -DJWT_STATIC_DEFINE) install(TARGETS ${Tool_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endfunction() jwt_add_tool(NAME jwt-verify SRC tools/jwt-verify.c) jwt_add_tool(NAME jwt-generate SRC tools/jwt-generate.c) jwt_add_tool(NAME jwk2key SRC tools/jwk2key.c) jwt_add_tool(NAME key2jwk SRC tools/key2jwk.c) install(DIRECTORY ${CMAKE_SOURCE_DIR}/tools/ DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 FILES_MATCHING PATTERN "*.1") # We need one of the things above to even work if (NOT HAVE_CRYPTO) message(FATAL_ERROR "No crypto support detected") endif() target_sources(jwt PRIVATE ${JWT_SOURCES}) target_sources(jwt_static PRIVATE ${JWT_SOURCES}) target_include_directories(jwt PUBLIC $ $ ) # Define versioning for the library (comes from configure.ac) set_target_properties(jwt PROPERTIES VERSION ${LIBJWT_VERSION_INFO} SOVERSION ${LIBJWT_COMPATVERSION} ) add_definitions(-D_GNU_SOURCE -DKEYDIR=\"${CMAKE_SOURCE_DIR}/tests/keys\") # Install header install(FILES include/jwt.h ${CMAKE_BINARY_DIR}/jwt_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES LICENSE README.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) # Install library install(TARGETS jwt EXPORT ${LIBJWT_PROJECT}Targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) # Install Static library install(TARGETS jwt_static EXPORT ${LIBJWT_PROJECT}StaticTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) # For cmake users install(EXPORT ${LIBJWT_PROJECT}Targets FILE ${LIBJWT_PROJECT}Config.cmake NAMESPACE ${LIBJWT_PROJECT}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIBJWT_PROJECT} ) # For pkg-config users unset(LIBJWT_LDFLAGS) foreach (FLAG ${JANSSON_LDFLAGS} ${OPENSSL_LDFLAGS} ${GNUTLS_LDFLAGS} ${MBEDTLS_LDFLAGS} ${LIBCURL_LDFLAGS}) string(APPEND LIBJWT_LDFLAGS " " ${FLAG}) endforeach() configure_file(libjwt/libjwt.pc.in libjwt.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/libjwt.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) find_package(Doxygen 1.9.8) if (DOXYGEN_FOUND) set(DOXYGEN_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/doxygen-doc) include(LibJWTDoxyfile) doxygen_add_docs(doxygen-doc ALL include/jwt.h) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen-doc/man/man3/ DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 FILES_MATCHING PATTERN "man3/JW*.3" PATTERN "man3/jw*.3") install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen-doc/html/ DESTINATION ${CMAKE_INSTALL_DOCDIR}/html/) endif() option(ENABLE_COVERAGE "Enable code coverage rules" OFF) # Tests and coverage depend on this, but optional if (WITH_TESTS) if (ENABLE_COVERAGE) set(CHECK_REQUIRED REQUIRED) endif() pkg_check_modules(CHECK check>=0.9.10 IMPORTED_TARGET ${CHECK_REQUIRED}) find_program (BATS_CMD bats) else() if (ENABLE_COVERAGE) message(SEND_ERROR "You must set WITH_TESTS=ON to enable code coverage") endif() endif() function(jwt_add_test) set(oneValueArgs NAME) cmake_parse_arguments(LibTest "" "${oneValueArgs}" "" ${ARGN}) add_executable(${LibTest_NAME} tests/${LibTest_NAME}.c) target_link_libraries(${LibTest_NAME} PRIVATE jwt) set_target_properties(${LibTest_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tests) target_link_libraries(${LibTest_NAME} PRIVATE PkgConfig::CHECK) add_test(NAME ${LibTest_NAME} COMMAND /bin/bash -c "export TEST=${LibTest_NAME}; . ${CMAKE_SOURCE_DIR}/tests/test-env.sh; exec ${CMAKE_BINARY_DIR}/tests/${LibTest_NAME}") endfunction() if (CHECK_FOUND) include(CTest) set (UNIT_TESTS jwt_crypto) # JWKS Tests list (APPEND UNIT_TESTS jwt_jwks jwt_jwks_errors jwt_ec jwt_rsa jwt_hs) # Checker and Builder list (APPEND UNIT_TESTS jwt_builder jwt_checker jwt_flipflop) # Claims list (APPEND UNIT_TESTS jwt_claims) foreach (TEST ${UNIT_TESTS}) jwt_add_test(NAME ${TEST}) endforeach() if (BATS_CMD) add_test(NAME jwt_cli COMMAND /bin/bash -c "export SRCDIR=\"${CMAKE_SOURCE_DIR}\"; \"${CMAKE_SOURCE_DIR}\"/tests/jwt-cli.bats") endif() add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} DEPENDS ${UNIT_TESTS} ${TOOLS}) if (ENABLE_COVERAGE) set(CMAKE_BUILD_TYPE "Debug") include(CodeCoverage) append_coverage_compiler_flags() set(COVERAGE_LCOV_INCLUDES "${CMAKE_SOURCE_DIR}/libjwt/") setup_target_for_coverage_lcov( NAME check-code-coverage OUTPUT "${PROJECT_NAME}-${PROJECT_VERSION}-coverage" TITLE "${PROJECT_NAME}-${PROJECT_VERSION} Code Coverage" EXECUTABLE ctest -j ${PROCESSOR_COUNT} DEPENDENCIES ${UNIT_TESTS} ${TOOLS}) endif() elseif(ENABLE_COVERAGE) message(SEND_ERROR "Coverage enabled, but did not find check library") endif() if (NOT ENABLE_COVERAGE) add_custom_target(check-code-coverage COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan "Coverage needs to be enabled for this target (ENABLE_COVERAGE=YES)" VERBATIM) endif() set(CPACK_PROPERTIES_FILE "${CMAKE_SOURCE_DIR}/cmake/CPackConfig.cmake") include(CPack) libjwt-3.2.3/LICENSE000066400000000000000000000405261510461717300140330ustar00rootroot00000000000000Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. libjwt-3.2.3/README.md000066400000000000000000000064431510461717300143050ustar00rootroot00000000000000![LibJWT - The C JWT Library](images/LibJWT-800x152.png) --- [![codecov](https://codecov.io/gh/benmcollins/libjwt/graph/badge.svg?token=MhCaZ8cpwQ)](https://codecov.io/gh/benmcollins/libjwt) [![maClara](https://img.shields.io/badge/Sponsored%20by-maClara%2C%20LLC-blue?style=plastic&logoColor=blue)](https://maclara-llc.com) > [!WARNING] > Version 3 of LibJWT is a complete overhaul of the code. Please see documentation for usage. ## :bulb: Supported Standards Standard | RFC | Description -------- | :------------------------------------------------------------------------: | ---------------------- ``JWS`` | :page_facing_up: [RFC-7515](https://datatracker.ietf.org/doc/html/rfc7515) | JSON Web Signature ``JWE`` | :page_facing_up: [RFC-7516](https://datatracker.ietf.org/doc/html/rfc7516) | JSON Web Encryption ``JWK`` | :page_facing_up: [RFC-7517](https://datatracker.ietf.org/doc/html/rfc7517) | JSON Web Keys and Sets ``JWA`` | :page_facing_up: [RFC-7518](https://datatracker.ietf.org/doc/html/rfc7518) | JSON Web Algorithms ``JWT`` | :page_facing_up: [RFC-7519](https://datatracker.ietf.org/doc/html/rfc7519) | JSON Web Token > [!NOTE] > Throughout this documentation you will see links such as the ones > above to RFC documents. These are relevant to that particular part of the > library and are helpful to understand some of the specific standards that > shaped the development of LibJWT. ## :construction: Build Prerequisites ### Required - [JANSSON](https://github.com/akheron/jansson) (>= 2.0) - [CMake](https://cmake.org) (>= 3.7) ### Crypto support - OpenSSL (>= 3.0.0) - GnuTLS (>= 3.6.0) - MbedTLS (>= 3.6.0) > [!NOTE] > OpenSSL is required and used for JWK(S) operations. ### Algorithm support matrix JWS Algorithm ``alg`` | OpenSSL | GnuTLS | MbedTLS :---------------------------- | :----------------- | :----------------- | :---------------------- ``HS256`` ``HS384`` ``HS512`` | :white_check_mark: | :white_check_mark: | :white_check_mark: ``ES256`` ``ES384`` ``ES512`` | :white_check_mark: | :white_check_mark: | :white_check_mark: ``RS256`` ``RS384`` ``RS512`` | :white_check_mark: | :white_check_mark: | :white_check_mark: ``EdDSA`` using ``ED25519`` | :white_check_mark: | :white_check_mark: | :x: ``EdDSA`` using ``ED448`` | :white_check_mark: | :white_check_mark: ``>= 3.8.8`` | :x: ``PS256`` ``PS384`` ``PS512`` | :white_check_mark: | :white_check_mark: | :white_check_mark:``*`` ``ES256K`` | :white_check_mark: | :x: | :white_check_mark: ``*`` RSASSA-PSS support in MbedTLS depends on Mbed-TLS/TF-PSA-Crypto#154 ### Optional - [Check Library](https://github.com/libcheck/check/issues) (>= 0.9.10) for unit testing - [Doxygen](https://www.doxygen.nl) (>= 1.13.0) for documentation ## :books: Docs and Source :link: [Current Docs](https://libjwt.io) :link: [Legacy Docs v2.1.1](https://libjwt.io/stable) :link: [GitHub Repo](https://github.com/benmcollins/libjwt) ## :package: Pre-built Packages LibJWT is available in most Linux distributions as well as through [Homebrew](https://formulae.brew.sh/formula/libjwt#default) for Linux, macOS, and Windows. ## :hammer: Build Instructions ### With CMake: $ mkdir build $ cd build $ cmake .. $ make libjwt-3.2.3/cmake/000077500000000000000000000000001510461717300140775ustar00rootroot00000000000000libjwt-3.2.3/cmake/CPackConfig.cmake000066400000000000000000000022451510461717300172130ustar00rootroot00000000000000# This file will be configured to contain variables for CPack. These variables # should be set in the CMake list file of the project before CPack module is # included. The list of available CPACK_xxx variables and their associated # documentation may be obtained using # cpack --help-variable-list # # Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) # and some are specific to a generator # (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables # usually begin with CPACK__xxxx. set(CPACK_BINARY_TBZ2 "OFF") set(CPACK_BINARY_DEB "ON") set(CPACK_GENERATOR "TXZ") set(CPACK_PACKAGE_VENDOR "maClara, LLC") set(CPACK_SOURCE_GENERATOR "TXZ") set(CPACK_SOURCE_TBZ2 "ON") set(CPACK_SET_DESTDIR "ON") set(CPACK_PACKAGE_CONTACT "Ben Collins ") set(CPACK_IGNORE_FILES "/\\.git/" "\\.gitignore" "\\.github/" "\\.swp\$" "\\.DS_Store") string(TOLOWER ${CPACK_PACKAGE_NAME} CPACK_PACKAGE_NAME) if (NOT ${CPACK_SOURCE_PACKAGE_FILE_NAME} EQUAL "") set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") else() set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-binary") endif() libjwt-3.2.3/cmake/CodeCoverage.cmake000066400000000000000000000765171510461717300174470ustar00rootroot00000000000000# Copyright (c) 2012 - 2017, Lars Bilke # 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. # # CHANGES: # # 2012-01-31, Lars Bilke # - Enable Code Coverage # # 2013-09-17, Joakim Söderberg # - Added support for Clang. # - Some additional usage instructions. # # 2016-02-03, Lars Bilke # - Refactored functions to use named parameters # # 2017-06-02, Lars Bilke # - Merged with modified version from github.com/ufz/ogs # # 2019-05-06, Anatolii Kurotych # - Remove unnecessary --coverage flag # # 2019-12-13, FeRD (Frank Dana) # - Deprecate COVERAGE_LCOVR_EXCLUDES and COVERAGE_GCOVR_EXCLUDES lists in favor # of tool-agnostic COVERAGE_EXCLUDES variable, or EXCLUDE setup arguments. # - CMake 3.4+: All excludes can be specified relative to BASE_DIRECTORY # - All setup functions: accept BASE_DIRECTORY, EXCLUDE list # - Set lcov basedir with -b argument # - Add automatic --demangle-cpp in lcovr, if 'c++filt' is available (can be # overridden with NO_DEMANGLE option in setup_target_for_coverage_lcovr().) # - Delete output dir, .info file on 'make clean' # - Remove Python detection, since version mismatches will break gcovr # - Minor cleanup (lowercase function names, update examples...) # # 2019-12-19, FeRD (Frank Dana) # - Rename Lcov outputs, make filtered file canonical, fix cleanup for targets # # 2020-01-19, Bob Apthorpe # - Added gfortran support # # 2020-02-17, FeRD (Frank Dana) # - Make all add_custom_target()s VERBATIM to auto-escape wildcard characters # in EXCLUDEs, and remove manual escaping from gcovr targets # # 2021-01-19, Robin Mueller # - Add CODE_COVERAGE_VERBOSE option which will allow to print out commands which are run # - Added the option for users to set the GCOVR_ADDITIONAL_ARGS variable to supply additional # flags to the gcovr command # # 2020-05-04, Mihchael Davis # - Add -fprofile-abs-path to make gcno files contain absolute paths # - Fix BASE_DIRECTORY not working when defined # - Change BYPRODUCT from folder to index.html to stop ninja from complaining about double defines # # 2021-05-10, Martin Stump # - Check if the generator is multi-config before warning about non-Debug builds # # 2022-02-22, Marko Wehle # - Change gcovr output from -o for --xml and --html output respectively. # This will allow for Multiple Output Formats at the same time by making use of GCOVR_ADDITIONAL_ARGS, e.g. GCOVR_ADDITIONAL_ARGS "--txt". # # 2022-09-28, Sebastian Mueller # - fix append_coverage_compiler_flags_to_target to correctly add flags # - replace "-fprofile-arcs -ftest-coverage" with "--coverage" (equivalent) # # USAGE: # # 1. Copy this file into your cmake modules path. # # 2. Add the following line to your CMakeLists.txt (best inside an if-condition # using a CMake option() to enable it just optionally): # include(CodeCoverage) # # 3. Append necessary compiler flags for all supported source files: # append_coverage_compiler_flags() # Or for specific target: # append_coverage_compiler_flags_to_target(YOUR_TARGET_NAME) # # 3.a (OPTIONAL) Set appropriate optimization flags, e.g. -O0, -O1 or -Og # # 4. If you need to exclude additional directories from the report, specify them # using full paths in the COVERAGE_EXCLUDES variable before calling # setup_target_for_coverage_*(). # Example: # set(COVERAGE_EXCLUDES # '${PROJECT_SOURCE_DIR}/src/dir1/*' # '/path/to/my/src/dir2/*') # Or, use the EXCLUDE argument to setup_target_for_coverage_*(). # Example: # setup_target_for_coverage_lcov( # NAME coverage # EXECUTABLE testrunner # EXCLUDE "${PROJECT_SOURCE_DIR}/src/dir1/*" "/path/to/my/src/dir2/*") # # 4.a NOTE: With CMake 3.4+, COVERAGE_EXCLUDES or EXCLUDE can also be set # relative to the BASE_DIRECTORY (default: PROJECT_SOURCE_DIR) # Example: # set(COVERAGE_EXCLUDES "dir1/*") # setup_target_for_coverage_gcovr_html( # NAME coverage # EXECUTABLE testrunner # BASE_DIRECTORY "${PROJECT_SOURCE_DIR}/src" # EXCLUDE "dir2/*") # # 5. Use the functions described below to create a custom make target which # runs your test executable and produces a code coverage report. # # 6. Build a Debug build: # cmake -DCMAKE_BUILD_TYPE=Debug .. # make # make my_coverage_target # include(CMakeParseArguments) option(CODE_COVERAGE_VERBOSE "Verbose information" FALSE) # Check prereqs find_program( GCOV_PATH gcov ) find_program( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl) find_program( FASTCOV_PATH NAMES fastcov fastcov.py ) find_program( GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat ) find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test) find_program( CPPFILT_PATH NAMES c++filt ) if(NOT GCOV_PATH) message(FATAL_ERROR "gcov not found! Aborting...") endif() # NOT GCOV_PATH # Check supported compiler (Clang, GNU and Flang) get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) foreach(LANG ${LANGUAGES}) if("${CMAKE_${LANG}_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang") if("${CMAKE_${LANG}_COMPILER_VERSION}" VERSION_LESS 3) message(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...") endif() elseif(NOT "${CMAKE_${LANG}_COMPILER_ID}" MATCHES "GNU" AND NOT "${CMAKE_${LANG}_COMPILER_ID}" MATCHES "(LLVM)?[Ff]lang") message(FATAL_ERROR "Compiler is not GNU or Flang! Aborting...") endif() endforeach() set(COVERAGE_COMPILER_FLAGS "-g --coverage" CACHE INTERNAL "") if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") include(CheckCXXCompilerFlag) check_cxx_compiler_flag(-fprofile-abs-path HAVE_cxx_fprofile_abs_path) if(HAVE_cxx_fprofile_abs_path) set(COVERAGE_CXX_COMPILER_FLAGS "${COVERAGE_COMPILER_FLAGS} -fprofile-abs-path") endif() endif() if(CMAKE_C_COMPILER_ID MATCHES "(GNU|Clang)") include(CheckCCompilerFlag) check_c_compiler_flag(-fprofile-abs-path HAVE_c_fprofile_abs_path) if(HAVE_c_fprofile_abs_path) set(COVERAGE_C_COMPILER_FLAGS "${COVERAGE_COMPILER_FLAGS} -fprofile-abs-path") endif() endif() set(CMAKE_Fortran_FLAGS_COVERAGE ${COVERAGE_COMPILER_FLAGS} CACHE STRING "Flags used by the Fortran compiler during coverage builds." FORCE ) set(CMAKE_CXX_FLAGS_COVERAGE ${COVERAGE_COMPILER_FLAGS} CACHE STRING "Flags used by the C++ compiler during coverage builds." FORCE ) set(CMAKE_C_FLAGS_COVERAGE ${COVERAGE_COMPILER_FLAGS} CACHE STRING "Flags used by the C compiler during coverage builds." FORCE ) set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "" CACHE STRING "Flags used for linking binaries during coverage builds." FORCE ) set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "" CACHE STRING "Flags used by the shared libraries linker during coverage builds." FORCE ) mark_as_advanced( CMAKE_Fortran_FLAGS_COVERAGE CMAKE_CXX_FLAGS_COVERAGE CMAKE_C_FLAGS_COVERAGE CMAKE_EXE_LINKER_FLAGS_COVERAGE CMAKE_SHARED_LINKER_FLAGS_COVERAGE ) get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR GENERATOR_IS_MULTI_CONFIG)) message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading") endif() # NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR GENERATOR_IS_MULTI_CONFIG) if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") link_libraries(gcov) endif() # Defines a target for running and collection code coverage information # Builds dependencies, runs the given executable and outputs reports. # NOTE! The executable should always have a ZERO as exit code otherwise # the coverage generation will not complete. # # setup_target_for_coverage_lcov( # NAME testrunner_coverage # New target name # EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR # DEPENDENCIES testrunner # Dependencies to build first # BASE_DIRECTORY "../" # Base directory for report # # (defaults to PROJECT_SOURCE_DIR) # EXCLUDE "src/dir1/*" "src/dir2/*" # Patterns to exclude (can be relative # # to BASE_DIRECTORY, with CMake 3.4+) # NO_DEMANGLE # Don't demangle C++ symbols # # even if c++filt is found # ) function(setup_target_for_coverage_lcov) set(options NO_DEMANGLE SONARQUBE) set(oneValueArgs BASE_DIRECTORY NAME OUTPUT TITLE) set(multiValueArgs EXCLUDE EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES LCOV_ARGS GENHTML_ARGS) cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(NOT LCOV_PATH) message(FATAL_ERROR "lcov not found! Aborting...") endif() # NOT LCOV_PATH if(NOT GENHTML_PATH) message(FATAL_ERROR "genhtml not found! Aborting...") endif() # NOT GENHTML_PATH # Set base directory (as absolute path), or default to PROJECT_SOURCE_DIR if(DEFINED Coverage_BASE_DIRECTORY) get_filename_component(BASEDIR ${Coverage_BASE_DIRECTORY} ABSOLUTE) else() set(BASEDIR ${PROJECT_SOURCE_DIR}) endif() # Collect excludes (CMake 3.4+: Also compute absolute paths) set(LCOV_EXCLUDES "") foreach(EXCLUDE ${Coverage_EXCLUDE} ${COVERAGE_EXCLUDES} ${COVERAGE_LCOV_EXCLUDES}) if(CMAKE_VERSION VERSION_GREATER 3.4) get_filename_component(EXCLUDE ${EXCLUDE} ABSOLUTE BASE_DIR ${BASEDIR}) endif() list(APPEND LCOV_EXCLUDES "${EXCLUDE}") endforeach() list(REMOVE_DUPLICATES LCOV_EXCLUDES) set(LCOV_INCLUDES "") foreach(INCLUDE ${COVERAGE_LCOV_INCLUDES}) if(CMAKE_VERSION VERSION_GREATER 3.4) get_filename_component(INCLUDE ${INCLUDE} ABSOLUTE BASE_DIR ${BASEDIR}) endif() list(APPEND LCOV_INCLUDES "${INCLUDE}") endforeach() list(REMOVE_DUPLICATES LCOV_INCLUDES) # Conditional arguments if(CPPFILT_PATH AND NOT ${Coverage_NO_DEMANGLE}) set(GENHTML_EXTRA_ARGS "--demangle-cpp") endif() # Setting up commands which will be run to generate coverage data. # Cleanup lcov set(LCOV_CLEAN_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -directory . -b ${BASEDIR} --zerocounters ) # Create baseline to make sure untouched files show up in the report set(LCOV_BASELINE_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -c -i -d . -b ${BASEDIR} -o ${Coverage_NAME}.base ) # Run tests set(LCOV_EXEC_TESTS_CMD ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} ) # Capturing lcov counters and generating report set(LCOV_CAPTURE_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --directory . -b ${BASEDIR} --capture --output-file ${Coverage_NAME}.capture ) # add baseline counters set(LCOV_BASELINE_COUNT_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} -a ${Coverage_NAME}.base -a ${Coverage_NAME}.capture --output-file ${Coverage_NAME}.total ) # filter collected data to final coverage report set(LCOV_FILTER_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --remove ${Coverage_NAME}.total ${LCOV_EXCLUDES} --output-file ${Coverage_NAME}.lcov1 ) set(LCOV_EXTRACT_CMD ${LCOV_PATH} ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} --extract ${Coverage_NAME}.lcov1 ${LCOV_INCLUDES} --output-file ${Coverage_NAME}.info ) # Generate HTML output set(LCOV_GEN_HTML_CMD ${GENHTML_PATH} ${GENHTML_EXTRA_ARGS} ${Coverage_GENHTML_ARGS} -o ${Coverage_OUTPUT} --title ${Coverage_TITLE} ${Coverage_NAME}.info ) if(${Coverage_SONARQUBE}) # Generate SonarQube output set(GCOVR_XML_CMD ${GCOVR_PATH} --sonarqube ${Coverage_NAME}_sonarqube.xml -r ${BASEDIR} ${GCOVR_ADDITIONAL_ARGS} ${GCOVR_EXCLUDE_ARGS} --object-directory=${PROJECT_BINARY_DIR} ) set(GCOVR_XML_CMD_COMMAND COMMAND ${GCOVR_XML_CMD} ) set(GCOVR_XML_CMD_BYPRODUCTS ${Coverage_NAME}_sonarqube.xml) set(GCOVR_XML_CMD_COMMENT COMMENT "SonarQube code coverage info report saved in ${Coverage_NAME}_sonarqube.xml.") endif() if(CODE_COVERAGE_VERBOSE) message(STATUS "Executed command report") message(STATUS "Command to clean up lcov: ") string(REPLACE ";" " " LCOV_CLEAN_CMD_SPACED "${LCOV_CLEAN_CMD}") message(STATUS "${LCOV_CLEAN_CMD_SPACED}") message(STATUS "Command to create baseline: ") string(REPLACE ";" " " LCOV_BASELINE_CMD_SPACED "${LCOV_BASELINE_CMD}") message(STATUS "${LCOV_BASELINE_CMD_SPACED}") message(STATUS "Command to run the tests: ") string(REPLACE ";" " " LCOV_EXEC_TESTS_CMD_SPACED "${LCOV_EXEC_TESTS_CMD}") message(STATUS "${LCOV_EXEC_TESTS_CMD_SPACED}") message(STATUS "Command to capture counters and generate report: ") string(REPLACE ";" " " LCOV_CAPTURE_CMD_SPACED "${LCOV_CAPTURE_CMD}") message(STATUS "${LCOV_CAPTURE_CMD_SPACED}") message(STATUS "Command to add baseline counters: ") string(REPLACE ";" " " LCOV_BASELINE_COUNT_CMD_SPACED "${LCOV_BASELINE_COUNT_CMD}") message(STATUS "${LCOV_BASELINE_COUNT_CMD_SPACED}") message(STATUS "Command to filter collected data: ") string(REPLACE ";" " " LCOV_FILTER_CMD_SPACED "${LCOV_FILTER_CMD}") message(STATUS "${LCOV_FILTER_CMD_SPACED}") message(STATUS "Command to extract collected data: ") string(REPLACE ";" " " LCOV_EXTRACT_CMD_SPACED "${LCOV_EXTRACT_CMD}") message(STATUS "${LCOV_EXTRACT_CMD_SPACED}") message(STATUS "Command to generate lcov HTML output: ") string(REPLACE ";" " " LCOV_GEN_HTML_CMD_SPACED "${LCOV_GEN_HTML_CMD}") message(STATUS "${LCOV_GEN_HTML_CMD_SPACED}") if(${Coverage_SONARQUBE}) message(STATUS "Command to generate SonarQube XML output: ") string(REPLACE ";" " " GCOVR_XML_CMD_SPACED "${GCOVR_XML_CMD}") message(STATUS "${GCOVR_XML_CMD_SPACED}") endif() endif() # Setup target add_custom_target(${Coverage_NAME} COMMAND ${LCOV_CLEAN_CMD} COMMAND ${LCOV_BASELINE_CMD} COMMAND ${LCOV_EXEC_TESTS_CMD} COMMAND ${LCOV_CAPTURE_CMD} COMMAND ${LCOV_BASELINE_COUNT_CMD} COMMAND ${LCOV_FILTER_CMD} COMMAND ${LCOV_EXTRACT_CMD} COMMAND ${LCOV_GEN_HTML_CMD} ${GCOVR_XML_CMD_COMMAND} # Set output files as GENERATED (will be removed on 'make clean') BYPRODUCTS ${Coverage_NAME}.base ${Coverage_NAME}.capture ${Coverage_NAME}.total ${Coverage_NAME}.info ${GCOVR_XML_CMD_BYPRODUCTS} ${Coverage_NAME}/index.html WORKING_DIRECTORY ${PROJECT_BINARY_DIR} DEPENDS ${Coverage_DEPENDENCIES} VERBATIM # Protect arguments to commands COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." ) # Show where to find the lcov info report add_custom_command(TARGET ${Coverage_NAME} POST_BUILD COMMAND true; COMMENT "Lcov code coverage info report saved in ${Coverage_NAME}.info." ${GCOVR_XML_CMD_COMMENT} ) # Show info where to find the report add_custom_command(TARGET ${Coverage_NAME} POST_BUILD COMMAND true; COMMENT "file://${CMAKE_BINARY_DIR}/${Coverage_OUTPUT}/index.html" ) endfunction() # setup_target_for_coverage_lcov # Defines a target for running and collection code coverage information # Builds dependencies, runs the given executable and outputs reports. # NOTE! The executable should always have a ZERO as exit code otherwise # the coverage generation will not complete. # # setup_target_for_coverage_gcovr_xml( # NAME ctest_coverage # New target name # EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR # DEPENDENCIES executable_target # Dependencies to build first # BASE_DIRECTORY "../" # Base directory for report # # (defaults to PROJECT_SOURCE_DIR) # EXCLUDE "src/dir1/*" "src/dir2/*" # Patterns to exclude (can be relative # # to BASE_DIRECTORY, with CMake 3.4+) # ) # The user can set the variable GCOVR_ADDITIONAL_ARGS to supply additional flags to the # GCVOR command. function(setup_target_for_coverage_gcovr_xml) set(options NONE) set(oneValueArgs BASE_DIRECTORY NAME) set(multiValueArgs EXCLUDE EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(NOT GCOVR_PATH) message(FATAL_ERROR "gcovr not found! Aborting...") endif() # NOT GCOVR_PATH # Set base directory (as absolute path), or default to PROJECT_SOURCE_DIR if(DEFINED Coverage_BASE_DIRECTORY) get_filename_component(BASEDIR ${Coverage_BASE_DIRECTORY} ABSOLUTE) else() set(BASEDIR ${PROJECT_SOURCE_DIR}) endif() # Collect excludes (CMake 3.4+: Also compute absolute paths) set(GCOVR_EXCLUDES "") foreach(EXCLUDE ${Coverage_EXCLUDE} ${COVERAGE_EXCLUDES} ${COVERAGE_GCOVR_EXCLUDES}) if(CMAKE_VERSION VERSION_GREATER 3.4) get_filename_component(EXCLUDE ${EXCLUDE} ABSOLUTE BASE_DIR ${BASEDIR}) endif() list(APPEND GCOVR_EXCLUDES "${EXCLUDE}") endforeach() list(REMOVE_DUPLICATES GCOVR_EXCLUDES) # Combine excludes to several -e arguments set(GCOVR_EXCLUDE_ARGS "") foreach(EXCLUDE ${GCOVR_EXCLUDES}) list(APPEND GCOVR_EXCLUDE_ARGS "-e") list(APPEND GCOVR_EXCLUDE_ARGS "${EXCLUDE}") endforeach() # Set up commands which will be run to generate coverage data # Run tests set(GCOVR_XML_EXEC_TESTS_CMD ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} ) # Running gcovr set(GCOVR_XML_CMD ${GCOVR_PATH} --xml ${Coverage_NAME}.xml -r ${BASEDIR} ${GCOVR_ADDITIONAL_ARGS} ${GCOVR_EXCLUDE_ARGS} --object-directory=${PROJECT_BINARY_DIR} ) if(CODE_COVERAGE_VERBOSE) message(STATUS "Executed command report") message(STATUS "Command to run tests: ") string(REPLACE ";" " " GCOVR_XML_EXEC_TESTS_CMD_SPACED "${GCOVR_XML_EXEC_TESTS_CMD}") message(STATUS "${GCOVR_XML_EXEC_TESTS_CMD_SPACED}") message(STATUS "Command to generate gcovr XML coverage data: ") string(REPLACE ";" " " GCOVR_XML_CMD_SPACED "${GCOVR_XML_CMD}") message(STATUS "${GCOVR_XML_CMD_SPACED}") endif() add_custom_target(${Coverage_NAME} COMMAND ${GCOVR_XML_EXEC_TESTS_CMD} COMMAND ${GCOVR_XML_CMD} BYPRODUCTS ${Coverage_NAME}.xml WORKING_DIRECTORY ${PROJECT_BINARY_DIR} DEPENDS ${Coverage_DEPENDENCIES} VERBATIM # Protect arguments to commands COMMENT "Running gcovr to produce Cobertura code coverage report." ) # Show info where to find the report add_custom_command(TARGET ${Coverage_NAME} POST_BUILD COMMAND true; COMMENT "Cobertura code coverage report saved in ${Coverage_NAME}.xml." ) endfunction() # setup_target_for_coverage_gcovr_xml # Defines a target for running and collection code coverage information # Builds dependencies, runs the given executable and outputs reports. # NOTE! The executable should always have a ZERO as exit code otherwise # the coverage generation will not complete. # # setup_target_for_coverage_gcovr_html( # NAME ctest_coverage # New target name # EXECUTABLE ctest -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR # DEPENDENCIES executable_target # Dependencies to build first # BASE_DIRECTORY "../" # Base directory for report # # (defaults to PROJECT_SOURCE_DIR) # EXCLUDE "src/dir1/*" "src/dir2/*" # Patterns to exclude (can be relative # # to BASE_DIRECTORY, with CMake 3.4+) # ) # The user can set the variable GCOVR_ADDITIONAL_ARGS to supply additional flags to the # GCVOR command. function(setup_target_for_coverage_gcovr_html) set(options NONE) set(oneValueArgs BASE_DIRECTORY NAME) set(multiValueArgs EXCLUDE EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES) cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(NOT GCOVR_PATH) message(FATAL_ERROR "gcovr not found! Aborting...") endif() # NOT GCOVR_PATH # Set base directory (as absolute path), or default to PROJECT_SOURCE_DIR if(DEFINED Coverage_BASE_DIRECTORY) get_filename_component(BASEDIR ${Coverage_BASE_DIRECTORY} ABSOLUTE) else() set(BASEDIR ${PROJECT_SOURCE_DIR}) endif() # Collect excludes (CMake 3.4+: Also compute absolute paths) set(GCOVR_EXCLUDES "") foreach(EXCLUDE ${Coverage_EXCLUDE} ${COVERAGE_EXCLUDES} ${COVERAGE_GCOVR_EXCLUDES}) if(CMAKE_VERSION VERSION_GREATER 3.4) get_filename_component(EXCLUDE ${EXCLUDE} ABSOLUTE BASE_DIR ${BASEDIR}) endif() list(APPEND GCOVR_EXCLUDES "${EXCLUDE}") endforeach() list(REMOVE_DUPLICATES GCOVR_EXCLUDES) # Combine excludes to several -e arguments set(GCOVR_EXCLUDE_ARGS "") foreach(EXCLUDE ${GCOVR_EXCLUDES}) list(APPEND GCOVR_EXCLUDE_ARGS "-e") list(APPEND GCOVR_EXCLUDE_ARGS "${EXCLUDE}") endforeach() # Set up commands which will be run to generate coverage data # Run tests set(GCOVR_HTML_EXEC_TESTS_CMD ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS} ) # Create folder set(GCOVR_HTML_FOLDER_CMD ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/${Coverage_NAME} ) # Running gcovr set(GCOVR_HTML_CMD ${GCOVR_PATH} --html ${Coverage_NAME}/index.html --html-details -r ${BASEDIR} ${GCOVR_ADDITIONAL_ARGS} ${GCOVR_EXCLUDE_ARGS} --object-directory=${PROJECT_BINARY_DIR} ) if(CODE_COVERAGE_VERBOSE) message(STATUS "Executed command report") message(STATUS "Command to run tests: ") string(REPLACE ";" " " GCOVR_HTML_EXEC_TESTS_CMD_SPACED "${GCOVR_HTML_EXEC_TESTS_CMD}") message(STATUS "${GCOVR_HTML_EXEC_TESTS_CMD_SPACED}") message(STATUS "Command to create a folder: ") string(REPLACE ";" " " GCOVR_HTML_FOLDER_CMD_SPACED "${GCOVR_HTML_FOLDER_CMD}") message(STATUS "${GCOVR_HTML_FOLDER_CMD_SPACED}") message(STATUS "Command to generate gcovr HTML coverage data: ") string(REPLACE ";" " " GCOVR_HTML_CMD_SPACED "${GCOVR_HTML_CMD}") message(STATUS "${GCOVR_HTML_CMD_SPACED}") endif() add_custom_target(${Coverage_NAME} COMMAND ${GCOVR_HTML_EXEC_TESTS_CMD} COMMAND ${GCOVR_HTML_FOLDER_CMD} COMMAND ${GCOVR_HTML_CMD} BYPRODUCTS ${PROJECT_BINARY_DIR}/${Coverage_NAME}/index.html # report directory WORKING_DIRECTORY ${PROJECT_BINARY_DIR} DEPENDS ${Coverage_DEPENDENCIES} VERBATIM # Protect arguments to commands COMMENT "Running gcovr to produce HTML code coverage report." ) # Show info where to find the report add_custom_command(TARGET ${Coverage_NAME} POST_BUILD COMMAND true; COMMENT "Open ./${Coverage_NAME}/index.html in your browser to view the coverage report." ) endfunction() # setup_target_for_coverage_gcovr_html # Defines a target for running and collection code coverage information # Builds dependencies, runs the given executable and outputs reports. # NOTE! The executable should always have a ZERO as exit code otherwise # the coverage generation will not complete. # # setup_target_for_coverage_fastcov( # NAME testrunner_coverage # New target name # EXECUTABLE testrunner -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR # DEPENDENCIES testrunner # Dependencies to build first # BASE_DIRECTORY "../" # Base directory for report # # (defaults to PROJECT_SOURCE_DIR) # EXCLUDE "src/dir1/" "src/dir2/" # Patterns to exclude. # NO_DEMANGLE # Don't demangle C++ symbols # # even if c++filt is found # SKIP_HTML # Don't create html report # POST_CMD perl -i -pe s!${PROJECT_SOURCE_DIR}/!!g ctest_coverage.json # E.g. for stripping source dir from file paths # ) function(setup_target_for_coverage_fastcov) set(options NO_DEMANGLE SKIP_HTML) set(oneValueArgs BASE_DIRECTORY NAME) set(multiValueArgs EXCLUDE EXECUTABLE EXECUTABLE_ARGS DEPENDENCIES FASTCOV_ARGS GENHTML_ARGS POST_CMD) cmake_parse_arguments(Coverage "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(NOT FASTCOV_PATH) message(FATAL_ERROR "fastcov not found! Aborting...") endif() if(NOT Coverage_SKIP_HTML AND NOT GENHTML_PATH) message(FATAL_ERROR "genhtml not found! Aborting...") endif() # Set base directory (as absolute path), or default to PROJECT_SOURCE_DIR if(Coverage_BASE_DIRECTORY) get_filename_component(BASEDIR ${Coverage_BASE_DIRECTORY} ABSOLUTE) else() set(BASEDIR ${PROJECT_SOURCE_DIR}) endif() # Collect excludes (Patterns, not paths, for fastcov) set(FASTCOV_EXCLUDES "") foreach(EXCLUDE ${Coverage_EXCLUDE} ${COVERAGE_EXCLUDES} ${COVERAGE_FASTCOV_EXCLUDES}) list(APPEND FASTCOV_EXCLUDES "${EXCLUDE}") endforeach() list(REMOVE_DUPLICATES FASTCOV_EXCLUDES) # Conditional arguments if(CPPFILT_PATH AND NOT ${Coverage_NO_DEMANGLE}) set(GENHTML_EXTRA_ARGS "--demangle-cpp") endif() # Set up commands which will be run to generate coverage data set(FASTCOV_EXEC_TESTS_CMD ${Coverage_EXECUTABLE} ${Coverage_EXECUTABLE_ARGS}) set(FASTCOV_CAPTURE_CMD ${FASTCOV_PATH} ${Coverage_FASTCOV_ARGS} --gcov ${GCOV_PATH} --search-directory ${BASEDIR} --process-gcno --output ${Coverage_NAME}.json --exclude ${FASTCOV_EXCLUDES} ) set(FASTCOV_CONVERT_CMD ${FASTCOV_PATH} -C ${Coverage_NAME}.json --lcov --output ${Coverage_NAME}.info ) if(Coverage_SKIP_HTML) set(FASTCOV_HTML_CMD ";") else() set(FASTCOV_HTML_CMD ${GENHTML_PATH} ${GENHTML_EXTRA_ARGS} ${Coverage_GENHTML_ARGS} -o ${Coverage_NAME} ${Coverage_NAME}.info ) endif() set(FASTCOV_POST_CMD ";") if(Coverage_POST_CMD) set(FASTCOV_POST_CMD ${Coverage_POST_CMD}) endif() if(CODE_COVERAGE_VERBOSE) message(STATUS "Code coverage commands for target ${Coverage_NAME} (fastcov):") message(" Running tests:") string(REPLACE ";" " " FASTCOV_EXEC_TESTS_CMD_SPACED "${FASTCOV_EXEC_TESTS_CMD}") message(" ${FASTCOV_EXEC_TESTS_CMD_SPACED}") message(" Capturing fastcov counters and generating report:") string(REPLACE ";" " " FASTCOV_CAPTURE_CMD_SPACED "${FASTCOV_CAPTURE_CMD}") message(" ${FASTCOV_CAPTURE_CMD_SPACED}") message(" Converting fastcov .json to lcov .info:") string(REPLACE ";" " " FASTCOV_CONVERT_CMD_SPACED "${FASTCOV_CONVERT_CMD}") message(" ${FASTCOV_CONVERT_CMD_SPACED}") if(NOT Coverage_SKIP_HTML) message(" Generating HTML report: ") string(REPLACE ";" " " FASTCOV_HTML_CMD_SPACED "${FASTCOV_HTML_CMD}") message(" ${FASTCOV_HTML_CMD_SPACED}") endif() if(Coverage_POST_CMD) message(" Running post command: ") string(REPLACE ";" " " FASTCOV_POST_CMD_SPACED "${FASTCOV_POST_CMD}") message(" ${FASTCOV_POST_CMD_SPACED}") endif() endif() # Setup target add_custom_target(${Coverage_NAME} # Cleanup fastcov COMMAND ${FASTCOV_PATH} ${Coverage_FASTCOV_ARGS} --gcov ${GCOV_PATH} --search-directory ${BASEDIR} --zerocounters COMMAND ${FASTCOV_EXEC_TESTS_CMD} COMMAND ${FASTCOV_CAPTURE_CMD} COMMAND ${FASTCOV_CONVERT_CMD} COMMAND ${FASTCOV_HTML_CMD} COMMAND ${FASTCOV_POST_CMD} # Set output files as GENERATED (will be removed on 'make clean') BYPRODUCTS ${Coverage_NAME}.info ${Coverage_NAME}.json ${Coverage_NAME}/index.html # report directory WORKING_DIRECTORY ${PROJECT_BINARY_DIR} DEPENDS ${Coverage_DEPENDENCIES} VERBATIM # Protect arguments to commands COMMENT "Resetting code coverage counters to zero. Processing code coverage counters and generating report." ) set(INFO_MSG "fastcov code coverage info report saved in ${Coverage_NAME}.info and ${Coverage_NAME}.json.") if(NOT Coverage_SKIP_HTML) string(APPEND INFO_MSG " Open ${PROJECT_BINARY_DIR}/${Coverage_NAME}/index.html in your browser to view the coverage report.") endif() # Show where to find the fastcov info report add_custom_command(TARGET ${Coverage_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo ${INFO_MSG} ) endfunction() # setup_target_for_coverage_fastcov function(append_coverage_compiler_flags) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${COVERAGE_COMPILER_FLAGS}" PARENT_SCOPE) message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}") endfunction() # append_coverage_compiler_flags # Setup coverage for specific library function(append_coverage_compiler_flags_to_target name) separate_arguments(_flag_list NATIVE_COMMAND "${COVERAGE_COMPILER_FLAGS}") target_compile_options(${name} PRIVATE ${_flag_list}) if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_Fortran_COMPILER_ID STREQUAL "GNU") target_link_libraries(${name} PRIVATE gcov) endif() endfunction() libjwt-3.2.3/cmake/GenerateExportHeader.cmake000066400000000000000000000443301510461717300211520ustar00rootroot00000000000000# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #[=======================================================================[.rst: GenerateExportHeader -------------------- Function for generation of export macros for libraries This module provides the function ``GENERATE_EXPORT_HEADER()``. .. versionadded:: 3.12 Added support for C projects. Previous versions supported C++ project only. The ``GENERATE_EXPORT_HEADER`` function can be used to generate a file suitable for preprocessor inclusion which contains EXPORT macros to be used in library classes:: GENERATE_EXPORT_HEADER( LIBRARY_TARGET [BASE_NAME ] [EXPORT_MACRO_NAME ] [EXPORT_FILE_NAME ] [DEPRECATED_MACRO_NAME ] [NO_EXPORT_MACRO_NAME ] [INCLUDE_GUARD_NAME ] [STATIC_DEFINE ] [NO_DEPRECATED_MACRO_NAME ] [DEFINE_NO_DEPRECATED] [PREFIX_NAME ] [CUSTOM_CONTENT_FROM_VARIABLE ] ) The target properties :prop_tgt:`CXX_VISIBILITY_PRESET <_VISIBILITY_PRESET>` and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` can be used to add the appropriate compile flags for targets. See the documentation of those target properties, and the convenience variables :variable:`CMAKE_CXX_VISIBILITY_PRESET _VISIBILITY_PRESET>` and :variable:`CMAKE_VISIBILITY_INLINES_HIDDEN`. By default ``GENERATE_EXPORT_HEADER()`` generates macro names in a file name determined by the name of the library. This means that in the simplest case, users of ``GenerateExportHeader`` will be equivalent to: .. code-block:: cmake set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) add_library(somelib someclass.cpp) generate_export_header(somelib) install(TARGETS somelib DESTINATION ${LIBRARY_INSTALL_DIR}) install(FILES someclass.h ${PROJECT_BINARY_DIR}/somelib_export.h DESTINATION ${INCLUDE_INSTALL_DIR} ) And in the ABI header files: .. code-block:: c++ #include "somelib_export.h" class SOMELIB_EXPORT SomeClass { ... }; The CMake fragment will generate a file in the ``${CMAKE_CURRENT_BINARY_DIR}`` called ``somelib_export.h`` containing the macros ``SOMELIB_EXPORT``, ``SOMELIB_NO_EXPORT``, ``SOMELIB_DEPRECATED``, ``SOMELIB_DEPRECATED_EXPORT`` and ``SOMELIB_DEPRECATED_NO_EXPORT``. They will be followed by content taken from the variable specified by the ``CUSTOM_CONTENT_FROM_VARIABLE`` option, if any. The resulting file should be installed with other headers in the library. The ``BASE_NAME`` argument can be used to override the file name and the names used for the macros: .. code-block:: cmake add_library(somelib someclass.cpp) generate_export_header(somelib BASE_NAME other_name ) Generates a file called ``other_name_export.h`` containing the macros ``OTHER_NAME_EXPORT``, ``OTHER_NAME_NO_EXPORT`` and ``OTHER_NAME_DEPRECATED`` etc. The ``BASE_NAME`` may be overridden by specifying other options in the function. For example: .. code-block:: cmake add_library(somelib someclass.cpp) generate_export_header(somelib EXPORT_MACRO_NAME OTHER_NAME_EXPORT ) creates the macro ``OTHER_NAME_EXPORT`` instead of ``SOMELIB_EXPORT``, but other macros and the generated file name is as default: .. code-block:: cmake add_library(somelib someclass.cpp) generate_export_header(somelib DEPRECATED_MACRO_NAME KDE_DEPRECATED ) creates the macro ``KDE_DEPRECATED`` instead of ``SOMELIB_DEPRECATED``. If ``LIBRARY_TARGET`` is a static library, macros are defined without values. If the same sources are used to create both a shared and a static library, the uppercased symbol ``${BASE_NAME}_STATIC_DEFINE`` should be used when building the static library: .. code-block:: cmake add_library(shared_variant SHARED ${lib_SRCS}) add_library(static_variant ${lib_SRCS}) generate_export_header(shared_variant BASE_NAME libshared_and_static) set_target_properties(static_variant PROPERTIES COMPILE_FLAGS -DLIBSHARED_AND_STATIC_STATIC_DEFINE) This will cause the export macros to expand to nothing when building the static library. If ``DEFINE_NO_DEPRECATED`` is specified, then a macro ``${BASE_NAME}_NO_DEPRECATED`` will be defined This macro can be used to remove deprecated code from preprocessor output: .. code-block:: cmake option(EXCLUDE_DEPRECATED "Exclude deprecated parts of the library" FALSE) if (EXCLUDE_DEPRECATED) set(NO_BUILD_DEPRECATED DEFINE_NO_DEPRECATED) endif() generate_export_header(somelib ${NO_BUILD_DEPRECATED}) And then in somelib: .. code-block:: c++ class SOMELIB_EXPORT SomeClass { public: #ifndef SOMELIB_NO_DEPRECATED SOMELIB_DEPRECATED void oldMethod(); #endif }; .. code-block:: c++ #ifndef SOMELIB_NO_DEPRECATED void SomeClass::oldMethod() { } #endif If ``PREFIX_NAME`` is specified, the argument will be used as a prefix to all generated macros. For example: .. code-block:: cmake generate_export_header(somelib PREFIX_NAME VTK_) Generates the macros ``VTK_SOMELIB_EXPORT`` etc. .. versionadded:: 3.1 Library target can be an ``OBJECT`` library. .. versionadded:: 3.7 Added the ``CUSTOM_CONTENT_FROM_VARIABLE`` option. .. versionadded:: 3.11 Added the ``INCLUDE_GUARD_NAME`` option. :: ADD_COMPILER_EXPORT_FLAGS( [] ) .. deprecated:: 3.0 Set the target properties :prop_tgt:`CXX_VISIBILITY_PRESET <_VISIBILITY_PRESET>` and :prop_tgt:`VISIBILITY_INLINES_HIDDEN` instead. The ``ADD_COMPILER_EXPORT_FLAGS`` function adds ``-fvisibility=hidden`` to :variable:`CMAKE_CXX_FLAGS _FLAGS>` if supported, and is a no-op on Windows which does not need extra compiler flags for exporting support. You may optionally pass a single argument to ``ADD_COMPILER_EXPORT_FLAGS`` that will be populated with the ``CXX_FLAGS`` required to enable visibility support for the compiler/architecture in use. #]=======================================================================] include(CheckCompilerFlag) include(CheckSourceCompiles) # TODO: Install this macro separately? macro(_check_cxx_compiler_attribute _ATTRIBUTE _RESULT) check_source_compiles(CXX "${_ATTRIBUTE} int somefunc() { return 0; } int main() { return somefunc();}" ${_RESULT} ) endmacro() # TODO: Install this macro separately? macro(_check_c_compiler_attribute _ATTRIBUTE _RESULT) check_source_compiles(C "${_ATTRIBUTE} int somefunc(void) { return 0; } int main(void) { return somefunc();}" ${_RESULT} ) endmacro() macro(_check_jansson_long_long _RESULT) list(APPEND CMAKE_REQUIRED_FLAGS ${JANSSON_CFLAGS}) check_source_compiles(C "#include #if JSON_INTEGER_IS_LONG_LONG != 1 #error No long long #endif int main(void) { exit(0);}" ${_RESULT} ) endmacro() macro(_test_compiler_hidden_visibility) if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2") set(GCC_TOO_OLD TRUE) elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "4.2") set(GCC_TOO_OLD TRUE) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0") set(_INTEL_TOO_OLD TRUE) endif() # Exclude XL here because it misinterprets -fvisibility=hidden even though # the check_compiler_flag passes if(NOT GCC_TOO_OLD AND NOT _INTEL_TOO_OLD AND NOT WIN32 AND NOT CYGWIN AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(IBMClang|XLClang|XL)$" AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$" AND NOT CMAKE_CXX_COMPILER_ID MATCHES Watcom) if (CMAKE_CXX_COMPILER_LOADED) check_compiler_flag(CXX -fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY) check_compiler_flag(CXX -fvisibility-inlines-hidden COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) else() check_compiler_flag(C -fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY) check_compiler_flag(C -fvisibility-inlines-hidden COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) endif() endif() endmacro() macro(_test_compiler_has_deprecated) # NOTE: Some Embarcadero compilers silently compile __declspec(deprecated) # without error, but this is not a documented feature and the attribute does # not actually generate any warnings. if(CMAKE_CXX_COMPILER_ID MATCHES Borland OR CMAKE_CXX_COMPILER_ID MATCHES Embarcadero OR CMAKE_CXX_COMPILER_ID MATCHES HP OR GCC_TOO_OLD OR CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$" OR CMAKE_CXX_COMPILER_ID MATCHES Watcom) set(COMPILER_HAS_DEPRECATED "" CACHE INTERNAL "Compiler support for a deprecated attribute") else() if (CMAKE_CXX_COMPILER_LOADED) _check_cxx_compiler_attribute("__attribute__((__deprecated__))" COMPILER_HAS_DEPRECATED_ATTR) if(COMPILER_HAS_DEPRECATED_ATTR) set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}" CACHE INTERNAL "Compiler support for a deprecated attribute") else() _check_cxx_compiler_attribute("__declspec(deprecated)" COMPILER_HAS_DEPRECATED) endif() else() _check_c_compiler_attribute("__attribute__((__deprecated__))" COMPILER_HAS_DEPRECATED_ATTR) if(COMPILER_HAS_DEPRECATED_ATTR) set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED_ATTR}" CACHE INTERNAL "Compiler support for a deprecated attribute") else() _check_c_compiler_attribute("__declspec(deprecated)" COMPILER_HAS_DEPRECATED) endif() endif() endif() endmacro() macro(_test_compiler_has_constructor) if(CMAKE_CXX_COMPILER_ID MATCHES Borland OR CMAKE_CXX_COMPILER_ID MATCHES Embarcadero OR CMAKE_CXX_COMPILER_ID MATCHES HP OR GCC_TOO_OLD OR CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$" OR CMAKE_CXX_COMPILER_ID MATCHES Watcom) set(COMPILER_HAS_CONSTRUCTOR "" CACHE INTERNAL "Compiler support for a constructor attribute") else() if (CMAKE_CXX_COMPILER_LOADED) _check_cxx_compiler_attribute("__attribute__((__constructor__))" COMPILER_HAS_CONSTRUCTOR_ATTR) if(COMPILER_HAS_CONSTRUCTOR_ATTR) set(COMPILER_HAS_CONSTRUCTOR "${COMPILER_HAS_CONSTRUCTOR_ATTR}" CACHE INTERNAL "Compiler support for a constructor attribute") else() _check_cxx_compiler_attribute("__declspec(constructor)" COMPILER_HAS_CONSTRUCTOR) endif() else() _check_c_compiler_attribute("__attribute__((__constructor__))" COMPILER_HAS_CONSTRUCTOR_ATTR) if(COMPILER_HAS_CONSTRUCTOR_ATTR) set(COMPILER_HAS_CONSTRUCTOR "${COMPILER_HAS_CONSTRUCTOR_ATTR}" CACHE INTERNAL "Compiler support for a constructor attribute") else() _check_c_compiler_attribute("__declspec(constructor)" COMPILER_HAS_CONSTRUCTOR) endif() endif() endif() endmacro() get_filename_component(_GENERATE_EXPORT_HEADER_MODULE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) macro(_DO_SET_MACRO_VALUES TARGET_LIBRARY) set(DEFINE_DEPRECATED) set(DEFINE_CONSTRUCTOR) set(DEFINE_EXPORT) set(DEFINE_IMPORT) set(DEFINE_NO_EXPORT) if (COMPILER_HAS_DEPRECATED_ATTR AND NOT WIN32) set(DEFINE_DEPRECATED "__attribute__ ((__deprecated__))") elseif(COMPILER_HAS_DEPRECATED) set(DEFINE_DEPRECATED "__declspec(deprecated") endif() if (COMPILER_HAS_CONSTRUCTOR_ATTR AND NOT WIN32) set(DEFINE_CONSTRUCTOR "__attribute__ ((__constructor__))") elseif(COMPILER_HAS_CONSTRUCTOR) set(DEFINE_CONSTRUCTOR "__declspec(constructor)") endif() get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE) if(NOT ${type} STREQUAL "STATIC_LIBRARY") if(WIN32 OR CYGWIN) set(DEFINE_EXPORT "__declspec(dllexport)") set(DEFINE_IMPORT "__declspec(dllimport)") elseif(COMPILER_HAS_HIDDEN_VISIBILITY) set(DEFINE_EXPORT "__attribute__((visibility(\"default\")))") set(DEFINE_IMPORT "__attribute__((visibility(\"default\")))") set(DEFINE_NO_EXPORT "__attribute__((visibility(\"hidden\")))") endif() endif() endmacro() macro(_DO_GENERATE_EXPORT_HEADER TARGET_LIBRARY) # Option overrides set(options DEFINE_NO_DEPRECATED) set(oneValueArgs PREFIX_NAME BASE_NAME EXPORT_MACRO_NAME EXPORT_FILE_NAME DEPRECATED_MACRO_NAME NO_EXPORT_MACRO_NAME STATIC_DEFINE CONSTRUCTOR_MACRO_NAME NO_DEPRECATED_MACRO_NAME CUSTOM_CONTENT_FROM_VARIABLE INCLUDE_GUARD_NAME) set(multiValueArgs) cmake_parse_arguments(_GEH "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(BASE_NAME "${TARGET_LIBRARY}") if(_GEH_BASE_NAME) set(BASE_NAME ${_GEH_BASE_NAME}) endif() string(TOUPPER ${BASE_NAME} BASE_NAME_UPPER) string(TOLOWER ${BASE_NAME} BASE_NAME_LOWER) # Default options set(EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_EXPORT") set(NO_EXPORT_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_EXPORT") set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${BASE_NAME_LOWER}_export.h") set(DEPRECATED_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_DEPRECATED") set(CONSTRUCTOR_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_CONSTRUCTOR") set(STATIC_DEFINE "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_STATIC_DEFINE") set(NO_DEPRECATED_MACRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_NO_DEPRECATED") set(VERSION_MAJOR_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_VERSION_MAJOR") set(VERSION_MINOR_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_VERSION_MINOR") set(VERSION_MICRO_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_VERSION_MICRO") set(VERSION_STRING_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_VERSION_STRING") set(USE_LONG_LONG_NAME "${_GEH_PREFIX_NAME}${BASE_NAME_UPPER}_USES_LONG_LONG") if(_GEH_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Unknown keywords given to GENERATE_EXPORT_HEADER(): \"${_GEH_UNPARSED_ARGUMENTS}\"") endif() if(_GEH_EXPORT_MACRO_NAME) set(EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_EXPORT_MACRO_NAME}) endif() string(MAKE_C_IDENTIFIER ${EXPORT_MACRO_NAME} EXPORT_MACRO_NAME) if(_GEH_EXPORT_FILE_NAME) if(IS_ABSOLUTE ${_GEH_EXPORT_FILE_NAME}) set(EXPORT_FILE_NAME ${_GEH_EXPORT_FILE_NAME}) else() set(EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${_GEH_EXPORT_FILE_NAME}") endif() endif() if(_GEH_DEPRECATED_MACRO_NAME) set(DEPRECATED_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_DEPRECATED_MACRO_NAME}) endif() string(MAKE_C_IDENTIFIER ${DEPRECATED_MACRO_NAME} DEPRECATED_MACRO_NAME) if(_GEH_CONSTRUCTOR_MACRO_NAME) set(CONSTRUCTOR_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_CONSTRUCTOR_MACRO_NAME}) endif() string(MAKE_C_IDENTIFIER ${CONSTRUCTOR_MACRO_NAME} CONSTRUCTOR_MACRO_NAME) if(_GEH_NO_EXPORT_MACRO_NAME) set(NO_EXPORT_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_NO_EXPORT_MACRO_NAME}) endif() string(MAKE_C_IDENTIFIER ${NO_EXPORT_MACRO_NAME} NO_EXPORT_MACRO_NAME) if(_GEH_STATIC_DEFINE) set(STATIC_DEFINE ${_GEH_PREFIX_NAME}${_GEH_STATIC_DEFINE}) endif() string(MAKE_C_IDENTIFIER ${STATIC_DEFINE} STATIC_DEFINE) if(_GEH_DEFINE_NO_DEPRECATED) set(DEFINE_NO_DEPRECATED 1) else() set(DEFINE_NO_DEPRECATED 0) endif() if(_GEH_NO_DEPRECATED_MACRO_NAME) set(NO_DEPRECATED_MACRO_NAME ${_GEH_PREFIX_NAME}${_GEH_NO_DEPRECATED_MACRO_NAME}) endif() string(MAKE_C_IDENTIFIER ${NO_DEPRECATED_MACRO_NAME} NO_DEPRECATED_MACRO_NAME) if(_GEH_INCLUDE_GUARD_NAME) set(INCLUDE_GUARD_NAME ${_GEH_INCLUDE_GUARD_NAME}) else() set(INCLUDE_GUARD_NAME "${EXPORT_MACRO_NAME}_H") endif() get_target_property(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY} DEFINE_SYMBOL) if(NOT EXPORT_IMPORT_CONDITION) set(EXPORT_IMPORT_CONDITION ${TARGET_LIBRARY}_EXPORTS) endif() string(MAKE_C_IDENTIFIER ${EXPORT_IMPORT_CONDITION} EXPORT_IMPORT_CONDITION) if(_GEH_CUSTOM_CONTENT_FROM_VARIABLE) if(DEFINED "${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}") set(CUSTOM_CONTENT "${${_GEH_CUSTOM_CONTENT_FROM_VARIABLE}}") else() set(CUSTOM_CONTENT "") endif() endif() configure_file("${CMAKE_SOURCE_DIR}/include/jwt_export.h.in" "${EXPORT_FILE_NAME}" @ONLY) endmacro() function(GENERATE_EXPORT_HEADER TARGET_LIBRARY) get_property(type TARGET ${TARGET_LIBRARY} PROPERTY TYPE) if(NOT ${type} STREQUAL "STATIC_LIBRARY" AND NOT ${type} STREQUAL "SHARED_LIBRARY" AND NOT ${type} STREQUAL "OBJECT_LIBRARY" AND NOT ${type} STREQUAL "MODULE_LIBRARY") message(WARNING "This macro can only be used with libraries") return() endif() _test_compiler_hidden_visibility() _test_compiler_has_deprecated() _test_compiler_has_constructor() _check_jansson_long_long(HAS_LONG_LONG) if(HAS_LONG_LONG) set(DEFINE_LONG_LONG "1" CACHE INTERNAL "Use long long") else() set(DEFINE_LONG_LONG "0" CACHE INTERNAL "Do not use long long") endif() _do_set_macro_values(${TARGET_LIBRARY}) _do_generate_export_header(${TARGET_LIBRARY} ${ARGN}) endfunction() function(add_compiler_export_flags) if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12) message(DEPRECATION "The add_compiler_export_flags function is obsolete. Use the CXX_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN target properties instead.") endif() _test_compiler_hidden_visibility() _test_compiler_has_deprecated() _test_compiler_has_constructor() option(USE_COMPILER_HIDDEN_VISIBILITY "Use HIDDEN visibility support if available." ON) mark_as_advanced(USE_COMPILER_HIDDEN_VISIBILITY) if(NOT (USE_COMPILER_HIDDEN_VISIBILITY AND COMPILER_HAS_HIDDEN_VISIBILITY)) # Just return if there are no flags to add. return() endif() set (EXTRA_FLAGS "-fvisibility=hidden") if(COMPILER_HAS_HIDDEN_INLINE_VISIBILITY) set (EXTRA_FLAGS "${EXTRA_FLAGS} -fvisibility-inlines-hidden") endif() # Either return the extra flags needed in the supplied argument, or to the # CMAKE_CXX_FLAGS if no argument is supplied. if(ARGC GREATER 0) set(${ARGV0} "${EXTRA_FLAGS}" PARENT_SCOPE) else() string(APPEND CMAKE_CXX_FLAGS " ${EXTRA_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" PARENT_SCOPE) endif() endfunction() # FIXME(#24994): The following module(s) are included only for compatibility # with projects that accidentally relied on them with CMake 3.26 and below. include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) libjwt-3.2.3/cmake/LibJWTDoxyfile.cmake000066400000000000000000000066721510461717300177130ustar00rootroot00000000000000# Doxygen config. Only things that differ from the default set(DOXYGEN_MARKDOWN_ID_STYLE "GITHUB") set(DOXYGEN_PROJECT_LOGO "images/LibJWT.svg") set(DOXYGEN_PROJECT_ICON "images/favicon.ico") set(DOXYGEN_INPUT_ENCODING "ISO-8859-1") set(DOXYGEN_STRIP_FROM_PATH ${CMAKE_SOURCE_DIR}) set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C "YES") set(DOXYGEN_TYPEDEF_HIDES_STRUCT "YES") set(DOXYGEN_EXTRACT_ALL "YES") set(DOXYGEN_SHOW_HEADERFILE "NO") set(DOXYGEN_SHOW_INCLUDE_FILES "NO") set(DOXYGEN_SHOW_USED_FILES "NO") set(DOXYGEN_SHOW_FILES "NO") set(DOXYGEN_SHOW_NAMESPACES "NO") set(DOXYGEN_QUIET "YES") set(DOXYGEN_WARN_NO_PARAMDOC "YES") set(DOXYGEN_WARN_IF_UNDOC_ENUM_VAL "YES") set(DOXYGEN_EXAMPLE_PATH "doxygen") set(DOXYGEN_EXAMPLE_PATTERNS "*.dox *.c") set(DOXYGEN_IMAGE_PATH "images") set(DOXYGEN_VERBATIM_HEADERS "NO") set(DOXYGEN_HTML_HEADER "doxygen/header.html") set(DOXYGEN_HTML_FOOTER "doxygen/footer.html") set(DOXYGEN_HTML_EXTRA_STYLESHEET "doxygen/doxygen-awesome.css \\\n\tdoxygen/libjwt.css") set(DOXYGEN_HTML_COLORSTYLE "LIGHT") set(DOXYGEN_COPY_CLIPBOARD "NO") set(DOXYGEN_GENERATE_DOCSET "YES") set(DOXYGEN_DOCSET_FEEDNAME "Docs provided by maClara, LLC") set(DOXYGEN_DOCSET_BUNDLE_ID "com.maclara-llc.LibJWT") set(DOXYGEN_DOCSET_PUBLISHER_ID "com.maclara-llc.DocPublish") set(DOXYGEN_DOCSET_PUBLISHER_NAME "maClara, LLC") set(DOXYGEN_GENERATE_QHP "YES") set(DOXYGEN_QCH_FILE "LibJWT.qch") set(DOXYGEN_QHP_NAMESPACE "com.maclara-llc.LibJWT") set(DOXYGEN_DISABLE_INDEX "YES") set(DOXYGEN_GENERATE_TREEVIEW "YES") set(DOXYGEN_GENERATE_LATEX "YES") set(DOXYGEN_PAPER_TYPE "letter") set(DOXYGEN_LATEX_BATCHMODE "YES") set(DOXYGEN_GENERATE_MAN "YES") set(DOXYGEN_MAN_LINKS "YES") set(DOXYGEN_GENERATE_DOCBOOK "YES") set(DOXYGEN_MACRO_EXPANSION "YES") set(DOXYGEN_EXPAND_ONLY_PREDEF "YES") set(DOXYGEN_PREDEFINED "_DOXYGEN JWT_EXPORT= JWT_NO_EXPORT= JWT_DEPRECATED=") string(APPEND DOXYGEN_PREDEFINED " \\\n\tJWT_DEPRECATED_EXPORT= JWT_DEPRECATED_NO_EXPORT=") string(APPEND DOXYGEN_PREDEFINED " \\\n\tJWT_CONSTRUCTOR= __attribute__(x)= __declspec(x)=") set(DOXYGEN_GENERATE_TAGFILE "${DOXYGEN_OUTPUT_DIRECTORY}/LibJWT.tag") set(DOXYGEN_DOT_IMAGE_FORMAT "svg") set(DOXYGEN_INTERACTIVE_SVG "YES") set(DOXYGEN_SEARCHENGINE "NO") set(DOXYGEN_LAYOUT_FILE "doxygen/DoxygenLayout.xml") # List of extra files we need for a nice theme set(DOXYGEN_HTML_EXTRA_FILES "doxygen/doxygen-awesome-paragraph-link.js") string(APPEND DOXYGEN_HTML_EXTRA_FILES " \\\n\tdoxygen/doxygen-awesome-paragraph-icon.js") string(APPEND DOXYGEN_HTML_EXTRA_FILES " \\\n\tdoxygen/doxygen-awesome-fragment-copy-button.js") string(APPEND DOXYGEN_HTML_EXTRA_FILES " \\\n\tdoxygen/doxygen-awesome-interactive-toc.js") string(APPEND DOXYGEN_HTML_EXTRA_FILES " \\\n\tdoxygen/maclara-pill.svg") # Base templates for ALIASES set(rfc_url "https://datatracker.ietf.org/doc/html/rfc") set(fa_i "\\emoji :page_facing_up:") set(a_pre "RFC-\\1\"") string(APPEND DOXYGEN_ALIASES " \\\n\trfc{2}=\"${a_pre_b}\\1#section-\\2\\\">RFC-\\1 Sec \\2\"") string(APPEND DOXYGEN_ALIASES " \\\n\trfc_t{2}=\"${fa_i} ${a_pre}\\1#section-\\2\\\">RFC-\\1 Sec \\2\"") set(DOXYGEN_VERBATIM_VARS DOXYGEN_EXAMPLE_PATTERNS DOXYGEN_PREDEFINED DOXYGEN_HTML_EXTRA_STYLESHEET DOXYGEN_HTML_EXTRA_FILES DOXYGEN_ALIASES) libjwt-3.2.3/cmake/LibJWTVersions.cmake000066400000000000000000000021311510461717300177220ustar00rootroot00000000000000# Source of truth set(LIBJWT_PROJECT "LibJWT") set(LIBJWT_DESCRIPTION "The C JSON Web Token Library +JWK +JWKS") set(LIBJWT_HOMEPAGE_URL "https://libjwt.io") set(LIBJWT_VERSION_SET 3 2 3) set(LIBJWT_SO_CRA 16 3 2) # SONAME History # v1.12.1 0 => 1 # v1.15.0 1 => 2 # v3.0.0 2 => 14 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html string(TOLOWER ${LIBJWT_PROJECT} LIBJWT_PROJECT_LOWER) list(GET LIBJWT_VERSION_SET 0 DEFINE_MAJOR) list(GET LIBJWT_VERSION_SET 1 DEFINE_MINOR) list(GET LIBJWT_VERSION_SET 2 DEFINE_MICRO) string(JOIN "." LIBJWT_VERSION ${LIBJWT_VERSION_SET}) set(DEFINE_VERSION "\"${LIBJWT_VERSION}\"") list(GET LIBJWT_SO_CRA 0 LIBJWT_SO_CURRENT) list(GET LIBJWT_SO_CRA 1 LIBJWT_SO_REVISION) list(GET LIBJWT_SO_CRA 2 LIBJWT_SO_AGE) # Libtool does -version-info cur:rev:age, but cmake does things # a bit different. However, the result is the same. math(EXPR JWT_SO_MAJOR "${LIBJWT_SO_CURRENT} - ${LIBJWT_SO_AGE}") set(LIBJWT_VERSION_INFO "${JWT_SO_MAJOR}.${LIBJWT_SO_AGE}.${LIBJWT_SO_REVISION}") set(LIBJWT_COMPATVERSION "${JWT_SO_MAJOR}") libjwt-3.2.3/cmake/mingw-w64.cmake000066400000000000000000000003401510461717300166350ustar00rootroot00000000000000# cmake -DCMAKE_TOOLCHAIN_FILE=mingw-w64.cmake set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) libjwt-3.2.3/doxygen/000077500000000000000000000000001510461717300144745ustar00rootroot00000000000000libjwt-3.2.3/doxygen/DoxygenLayout.xml000066400000000000000000000241731510461717300200400ustar00rootroot00000000000000 libjwt-3.2.3/doxygen/doxygen-awesome-fragment-copy-button.js000066400000000000000000000077121510461717300242360ustar00rootroot00000000000000/** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css MIT License Copyright (c) 2022 - 2023 jothepro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ class DoxygenAwesomeFragmentCopyButton extends HTMLElement { constructor() { super(); this.onclick=this.copyContent } static title = "Copy to clipboard" static copyIcon = `` static successIcon = `` static successDuration = 980 static init() { $(function() { $(document).ready(function() { if(navigator.clipboard) { const fragments = document.getElementsByClassName("fragment") for(const fragment of fragments) { const fragmentWrapper = document.createElement("div") fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title fragment.parentNode.replaceChild(fragmentWrapper, fragment) fragmentWrapper.appendChild(fragment) fragmentWrapper.appendChild(fragmentCopyButton) } } }) }) } copyContent() { const content = this.previousSibling.cloneNode(true) // filter out line number from file listings content.querySelectorAll(".lineno, .ttc").forEach((node) => { node.remove() }) let textContent = content.textContent // remove trailing newlines that appear in file listings let numberOfTrailingNewlines = 0 while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { numberOfTrailingNewlines++; } textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) navigator.clipboard.writeText(textContent); this.classList.add("success") this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon window.setTimeout(() => { this.classList.remove("success") this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon }, DoxygenAwesomeFragmentCopyButton.successDuration); } } customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) libjwt-3.2.3/doxygen/doxygen-awesome-interactive-toc.js000066400000000000000000000066171510461717300232550ustar00rootroot00000000000000/** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css MIT License Copyright (c) 2022 - 2023 jothepro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ class DoxygenAwesomeInteractiveToc { static topOffset = 38 static hideMobileMenu = true static headers = [] static init() { window.addEventListener("load", () => { let toc = document.querySelector(".contents > .toc") if(toc) { toc.classList.add("interactive") if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) { toc.classList.add("open") } document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => { if(toc.classList.contains("open")) { toc.classList.remove("open") } else { toc.classList.add("open") } }) document.querySelectorAll(".contents > .toc > ul a").forEach((node) => { let id = node.getAttribute("href").substring(1) DoxygenAwesomeInteractiveToc.headers.push({ node: node, headerNode: document.getElementById(id) }) document.getElementById("doc-content")?.addEventListener("scroll",this.throttle(DoxygenAwesomeInteractiveToc.update, 100)) }) DoxygenAwesomeInteractiveToc.update() } }) } static update() { let active = DoxygenAwesomeInteractiveToc.headers[0]?.node DoxygenAwesomeInteractiveToc.headers.forEach((header) => { let position = header.headerNode.getBoundingClientRect().top header.node.classList.remove("active") header.node.classList.remove("aboveActive") if(position < DoxygenAwesomeInteractiveToc.topOffset) { active = header.node active?.classList.add("aboveActive") } }) active?.classList.add("active") active?.classList.remove("aboveActive") } static throttle(func, delay) { let lastCall = 0; return function (...args) { const now = new Date().getTime(); if (now - lastCall < delay) { return; } lastCall = now; return setTimeout(() => {func(...args)}, delay); }; } } libjwt-3.2.3/doxygen/doxygen-awesome-paragraph-icon.js000066400000000000000000000010121510461717300230300ustar00rootroot00000000000000/* Icon from https://fonts.google.com/icons Licensed under the Apache 2.0 license: https://www.apache.org/licenses/LICENSE-2.0.html */ class DoxygenAwesomeParagraphIcon { static icon = ` ` } libjwt-3.2.3/doxygen/doxygen-awesome-paragraph-link.js000066400000000000000000000036511510461717300230500ustar00rootroot00000000000000/** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css MIT License Copyright (c) 2022 - 2023 jothepro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ class DoxygenAwesomeParagraphLink { static title = "Permanent Link" static init() { $(function() { $(document).ready(function() { document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => { let anchorlink = document.createElement("a") anchorlink.setAttribute("href", `#${node.getAttribute("id")}`) anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title) anchorlink.classList.add("anchorlink") node.classList.add("anchor") anchorlink.innerHTML = DoxygenAwesomeParagraphIcon.icon node.parentElement.appendChild(anchorlink) }) }) }) } } libjwt-3.2.3/doxygen/doxygen-awesome-tabs.js000066400000000000000000000073251510461717300211030ustar00rootroot00000000000000/** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css MIT License Copyright (c) 2023 jothepro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ class DoxygenAwesomeTabs { static init() { window.addEventListener("load", () => { document.querySelectorAll(".tabbed:not(:empty)").forEach((tabbed, tabbedIndex) => { let tabLinkList = [] tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { tab.id = "tab_" + tabbedIndex + "_" + tabIndex let header = tab.querySelector(".tab-title") let tabLink = document.createElement("button") tabLink.classList.add("tab-button") tabLink.appendChild(header) header.title = header.textContent tabLink.addEventListener("click", () => { tabbed.querySelectorAll(":scope > ul > li").forEach((tab) => { tab.classList.remove("selected") }) tabLinkList.forEach((tabLink) => { tabLink.classList.remove("active") }) tab.classList.add("selected") tabLink.classList.add("active") }) tabLinkList.push(tabLink) if(tabIndex == 0) { tab.classList.add("selected") tabLink.classList.add("active") } }) let tabsOverview = document.createElement("div") tabsOverview.classList.add("tabs-overview") let tabsOverviewContainer = document.createElement("div") tabsOverviewContainer.classList.add("tabs-overview-container") tabLinkList.forEach((tabLink) => { tabsOverview.appendChild(tabLink) }) tabsOverviewContainer.appendChild(tabsOverview) tabbed.before(tabsOverviewContainer) function resize() { let maxTabHeight = 0 tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { let visibility = tab.style.display tab.style.display = "block" maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight) tab.style.display = visibility }) tabbed.style.height = `${maxTabHeight + 10}px` } resize() new ResizeObserver(resize).observe(tabbed) }) }) } static resize(tabbed) { } }libjwt-3.2.3/doxygen/doxygen-awesome.css000066400000000000000000002036351510461717300203320ustar00rootroot00000000000000/** Doxygen Awesome https://github.com/jothepro/doxygen-awesome-css MIT License Copyright (c) 2021 - 2023 jothepro Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ html { /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ --primary-color: #1779c4; --primary-dark-color: #335c80; --primary-light-color: #70b1e9; /* page base colors */ --page-background-color: #ffffff; --page-foreground-color: #2f4153; --page-secondary-foreground-color: #6f7e8e; /* color for all separators on the website: hr, borders, ... */ --separator-color: #dedede; /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ --border-radius-large: 8px; --border-radius-small: 4px; --border-radius-medium: 6px; /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ --spacing-small: 5px; --spacing-medium: 10px; --spacing-large: 16px; /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); --odd-color: rgba(0,0,0,.028); /* font-families. will affect all text on the website * font-family: the normal font for text, headlines, menus * font-family-monospace: used for preformatted text in memtitle, code, fragments */ --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; /* font sizes */ --page-font-size: 15.6px; --navigation-font-size: 14.4px; --toc-font-size: 13.4px; --code-font-size: 14px; /* affects code, fragment */ --title-font-size: 22px; /* content text properties. These only affect the page content, not the navigation or any other ui elements */ --content-line-height: 27px; /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ --content-maxwidth: 1050px; --table-line-height: 24px; --toc-sticky-top: var(--spacing-medium); --toc-width: 200px; --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); /* colors for various content boxes: @warning, @note, @deprecated @bug */ --warning-color: #faf3d8; --warning-color-dark: #f3a600; --warning-color-darker: #5f4204; --note-color: #e4f3ff; --note-color-dark: #1879C4; --note-color-darker: #274a5c; --todo-color: #e4dafd; --todo-color-dark: #5b2bdd; --todo-color-darker: #2a0d72; --deprecated-color: #ecf0f3; --deprecated-color-dark: #5b6269; --deprecated-color-darker: #43454a; --bug-color: #f8d1cc; --bug-color-dark: #b61825; --bug-color-darker: #75070f; --invariant-color: #d8f1e3; --invariant-color-dark: #44b86f; --invariant-color-darker: #265532; /* blockquote colors */ --blockquote-background: #f8f9fa; --blockquote-foreground: #636568; /* table colors */ --tablehead-background: #f1f1f1; --tablehead-foreground: var(--page-foreground-color); /* menu-display: block | none * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. * `GENERATE_TREEVIEW` MUST be enabled! */ --menu-display: block; --menu-focus-foreground: var(--page-background-color); --menu-focus-background: var(--primary-color); --menu-selected-background: rgba(0,0,0,.05); --header-background: var(--page-background-color); --header-foreground: var(--page-foreground-color); /* searchbar colors */ --searchbar-background: var(--side-nav-background); --searchbar-foreground: var(--page-foreground-color); /* searchbar size * (`searchbar-width` is only applied on screens >= 768px. * on smaller screens the searchbar will always fill the entire screen width) */ --searchbar-height: 33px; --searchbar-width: 210px; --searchbar-border-radius: var(--searchbar-height); /* code block colors */ --code-background: #f5f5f5; --code-foreground: var(--page-foreground-color); /* fragment colors */ --fragment-background: #F8F9FA; --fragment-foreground: #37474F; --fragment-keyword: #bb6bb2; --fragment-keywordtype: #8258b3; --fragment-keywordflow: #d67c3b; --fragment-token: #438a59; --fragment-comment: #969696; --fragment-link: #5383d6; --fragment-preprocessor: #46aaa5; --fragment-linenumber-color: #797979; --fragment-linenumber-background: #f4f4f5; --fragment-linenumber-border: #e3e5e7; --fragment-lineheight: 20px; /* sidebar navigation (treeview) colors */ --side-nav-background: #fbfbfb; --side-nav-foreground: var(--page-foreground-color); --side-nav-arrow-opacity: 0; --side-nav-arrow-hover-opacity: 0.9; --toc-background: var(--side-nav-background); --toc-foreground: var(--side-nav-foreground); /* height of an item in any tree / collapsible table */ --tree-item-height: 30px; --memname-font-size: var(--code-font-size); --memtitle-font-size: 18px; --webkit-scrollbar-size: 7px; --webkit-scrollbar-padding: 4px; --webkit-scrollbar-color: var(--separator-color); --animation-duration: .12s } @media screen and (max-width: 767px) { html { --page-font-size: 16px; --navigation-font-size: 16px; --toc-font-size: 15px; --code-font-size: 15px; /* affects code, fragment */ --title-font-size: 22px; } } @media (prefers-color-scheme: dark) { html:not(.light-mode) { color-scheme: dark; --primary-color: #1982d2; --primary-dark-color: #86a9c4; --primary-light-color: #4779ac; --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); --odd-color: rgba(100,100,100,.06); --menu-selected-background: rgba(0,0,0,.4); --page-background-color: #1C1D1F; --page-foreground-color: #d2dbde; --page-secondary-foreground-color: #859399; --separator-color: #38393b; --side-nav-background: #252628; --code-background: #2a2c2f; --tablehead-background: #2a2c2f; --blockquote-background: #222325; --blockquote-foreground: #7e8c92; --warning-color: #3b2e04; --warning-color-dark: #f1b602; --warning-color-darker: #ceb670; --note-color: #163750; --note-color-dark: #1982D2; --note-color-darker: #dcf0fa; --todo-color: #2a2536; --todo-color-dark: #7661b3; --todo-color-darker: #ae9ed6; --deprecated-color: #2e323b; --deprecated-color-dark: #738396; --deprecated-color-darker: #abb0bd; --bug-color: #2e1917; --bug-color-dark: #ad2617; --bug-color-darker: #f5b1aa; --invariant-color: #303a35; --invariant-color-dark: #76ce96; --invariant-color-darker: #cceed5; --fragment-background: #282c34; --fragment-foreground: #dbe4eb; --fragment-keyword: #cc99cd; --fragment-keywordtype: #ab99cd; --fragment-keywordflow: #e08000; --fragment-token: #7ec699; --fragment-comment: #999999; --fragment-link: #98c0e3; --fragment-preprocessor: #65cabe; --fragment-linenumber-color: #cccccc; --fragment-linenumber-background: #35393c; --fragment-linenumber-border: #1f1f1f; } } /* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ html.dark-mode { color-scheme: dark; --primary-color: #1982d2; --primary-dark-color: #86a9c4; --primary-light-color: #4779ac; --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); --odd-color: rgba(100,100,100,.06); --menu-selected-background: rgba(0,0,0,.4); --page-background-color: #1C1D1F; --page-foreground-color: #d2dbde; --page-secondary-foreground-color: #859399; --separator-color: #38393b; --side-nav-background: #252628; --code-background: #2a2c2f; --tablehead-background: #2a2c2f; --blockquote-background: #222325; --blockquote-foreground: #7e8c92; --warning-color: #3b2e04; --warning-color-dark: #f1b602; --warning-color-darker: #ceb670; --note-color: #163750; --note-color-dark: #1982D2; --note-color-darker: #dcf0fa; --todo-color: #2a2536; --todo-color-dark: #7661b3; --todo-color-darker: #ae9ed6; --deprecated-color: #2e323b; --deprecated-color-dark: #738396; --deprecated-color-darker: #abb0bd; --bug-color: #2e1917; --bug-color-dark: #ad2617; --bug-color-darker: #f5b1aa; --invariant-color: #303a35; --invariant-color-dark: #76ce96; --invariant-color-darker: #cceed5; --fragment-background: #282c34; --fragment-foreground: #dbe4eb; --fragment-keyword: #cc99cd; --fragment-keywordtype: #ab99cd; --fragment-keywordflow: #e08000; --fragment-token: #7ec699; --fragment-comment: #999999; --fragment-link: #98c0e3; --fragment-preprocessor: #65cabe; --fragment-linenumber-color: #cccccc; --fragment-linenumber-background: #35393c; --fragment-linenumber-border: #1f1f1f; } body { color: var(--page-foreground-color); background-color: var(--page-background-color); font-size: var(--page-font-size); } body, table, div, p, dl, #nav-tree .label, .title, .sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, .SelectItem, #MSearchField, .navpath li.navelem a, .navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { font-family: var(--font-family); } h1, h2, h3, h4, h5 { margin-top: 1em; font-weight: 600; line-height: initial; } p, div, table, dl, p.reference, p.definition { font-size: var(--page-font-size); } p.reference, p.definition { color: var(--page-secondary-foreground-color); } a:link, a:visited, a:hover, a:focus, a:active { color: var(--primary-color) !important; font-weight: 500; background: none; } a.anchor { scroll-margin-top: var(--spacing-large); display: block; } /* Title and top navigation */ #top { background: var(--header-background); border-bottom: 1px solid var(--separator-color); } @media screen and (min-width: 768px) { #top { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; } } #main-nav { flex-grow: 5; padding: var(--spacing-small) var(--spacing-medium); } #titlearea { width: auto; padding: var(--spacing-medium) var(--spacing-large); background: none; color: var(--header-foreground); border-bottom: none; } @media screen and (max-width: 767px) { #titlearea { padding-bottom: var(--spacing-small); } } #titlearea table tbody tr { height: auto !important; } #projectname { font-size: var(--title-font-size); font-weight: 600; } #projectnumber { font-family: inherit; font-size: 60%; } #projectbrief { font-family: inherit; font-size: 80%; } #projectlogo { vertical-align: middle; } #projectlogo img { max-height: calc(var(--title-font-size) * 2); margin-right: var(--spacing-small); } .sm-dox, .tabs, .tabs2, .tabs3 { background: none; padding: 0; } .tabs, .tabs2, .tabs3 { border-bottom: 1px solid var(--separator-color); margin-bottom: -1px; } .main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { background: var(--page-secondary-foreground-color); } @media screen and (max-width: 767px) { .sm-dox a span.sub-arrow { background: var(--code-background); } #main-menu a.has-submenu span.sub-arrow { color: var(--page-secondary-foreground-color); border-radius: var(--border-radius-medium); } #main-menu a.has-submenu:hover span.sub-arrow { color: var(--page-foreground-color); } } @media screen and (min-width: 768px) { .sm-dox li, .tablist li { display: var(--menu-display); } .sm-dox a span.sub-arrow { border-color: var(--header-foreground) transparent transparent transparent; } .sm-dox a:hover span.sub-arrow { border-color: var(--menu-focus-foreground) transparent transparent transparent; } .sm-dox ul a span.sub-arrow { border-color: transparent transparent transparent var(--page-foreground-color); } .sm-dox ul a:hover span.sub-arrow { border-color: transparent transparent transparent var(--menu-focus-foreground); } } .sm-dox ul { background: var(--page-background-color); box-shadow: var(--box-shadow); border: 1px solid var(--separator-color); border-radius: var(--border-radius-medium) !important; padding: var(--spacing-small); animation: ease-out 150ms slideInMenu; } @keyframes slideInMenu { from { opacity: 0; transform: translate(0px, -2px); } to { opacity: 1; transform: translate(0px, 0px); } } .sm-dox ul a { color: var(--page-foreground-color) !important; background: var(--page-background-color); font-size: var(--navigation-font-size); } .sm-dox>li>ul:after { border-bottom-color: var(--page-background-color) !important; } .sm-dox>li>ul:before { border-bottom-color: var(--separator-color) !important; } .sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { font-size: var(--navigation-font-size) !important; color: var(--menu-focus-foreground) !important; text-shadow: none; background-color: var(--menu-focus-background); border-radius: var(--border-radius-small) !important; } .sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { text-shadow: none; background: transparent; background-image: none !important; color: var(--header-foreground) !important; font-weight: normal; font-size: var(--navigation-font-size); border-radius: var(--border-radius-small) !important; } .sm-dox a:focus { outline: auto; } .sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { text-shadow: none; font-weight: normal; background: var(--menu-focus-background); color: var(--menu-focus-foreground) !important; border-radius: var(--border-radius-small) !important; font-size: var(--navigation-font-size); } .tablist li.current { border-radius: var(--border-radius-small); background: var(--menu-selected-background); } .tablist li { margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); } .tablist a { padding: 0 var(--spacing-large); } /* Search box */ #MSearchBox { height: var(--searchbar-height); background: var(--searchbar-background); border-radius: var(--searchbar-border-radius); border: 1px solid var(--separator-color); overflow: hidden; width: var(--searchbar-width); position: relative; box-shadow: none; display: block; margin-top: 0; } /* until Doxygen 1.9.4 */ .left img#MSearchSelect { left: 0; user-select: none; padding-left: 8px; } /* Doxygen 1.9.5 */ .left span#MSearchSelect { left: 0; user-select: none; margin-left: 8px; padding: 0; } .left #MSearchSelect[src$=".png"] { padding-left: 0 } .SelectionMark { user-select: none; } .tabs .left #MSearchSelect { padding-left: 0; } .tabs #MSearchBox { position: absolute; right: var(--spacing-medium); } @media screen and (max-width: 767px) { .tabs #MSearchBox { position: relative; right: 0; margin-left: var(--spacing-medium); margin-top: 0; } } #MSearchSelectWindow, #MSearchResultsWindow { z-index: 9999; } #MSearchBox.MSearchBoxActive { border-color: var(--primary-color); box-shadow: inset 0 0 0 1px var(--primary-color); } #main-menu > li:last-child { margin-right: 0; } @media screen and (max-width: 767px) { #main-menu > li:last-child { height: 50px; } } #MSearchField { font-size: var(--navigation-font-size); height: calc(var(--searchbar-height) - 2px); background: transparent; width: calc(var(--searchbar-width) - 64px); } .MSearchBoxActive #MSearchField { color: var(--searchbar-foreground); } #MSearchSelect { top: calc(calc(var(--searchbar-height) / 2) - 11px); } #MSearchBox span.left, #MSearchBox span.right { background: none; background-image: none; } #MSearchBox span.right { padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); position: absolute; right: var(--spacing-small); } .tabs #MSearchBox span.right { top: calc(calc(var(--searchbar-height) / 2) - 12px); } @keyframes slideInSearchResults { from { opacity: 0; transform: translate(0, 15px); } to { opacity: 1; transform: translate(0, 20px); } } #MSearchResultsWindow { left: auto !important; right: var(--spacing-medium); border-radius: var(--border-radius-large); border: 1px solid var(--separator-color); transform: translate(0, 20px); box-shadow: var(--box-shadow); animation: ease-out 280ms slideInSearchResults; background: var(--page-background-color); } iframe#MSearchResults { margin: 4px; } iframe { color-scheme: normal; } @media (prefers-color-scheme: dark) { html:not(.light-mode) iframe#MSearchResults { filter: invert() hue-rotate(180deg); } } html.dark-mode iframe#MSearchResults { filter: invert() hue-rotate(180deg); } #MSearchResults .SRPage { background-color: transparent; } #MSearchResults .SRPage .SREntry { font-size: 10pt; padding: var(--spacing-small) var(--spacing-medium); } #MSearchSelectWindow { border: 1px solid var(--separator-color); border-radius: var(--border-radius-medium); box-shadow: var(--box-shadow); background: var(--page-background-color); padding-top: var(--spacing-small); padding-bottom: var(--spacing-small); } #MSearchSelectWindow a.SelectItem { font-size: var(--navigation-font-size); line-height: var(--content-line-height); margin: 0 var(--spacing-small); border-radius: var(--border-radius-small); color: var(--page-foreground-color) !important; font-weight: normal; } #MSearchSelectWindow a.SelectItem:hover { background: var(--menu-focus-background); color: var(--menu-focus-foreground) !important; } @media screen and (max-width: 767px) { #MSearchBox { margin-top: var(--spacing-medium); margin-bottom: var(--spacing-medium); width: calc(100vw - 30px); } #main-menu > li:last-child { float: none !important; } #MSearchField { width: calc(100vw - 110px); } @keyframes slideInSearchResultsMobile { from { opacity: 0; transform: translate(0, 15px); } to { opacity: 1; transform: translate(0, 20px); } } #MSearchResultsWindow { left: var(--spacing-medium) !important; right: var(--spacing-medium); overflow: auto; transform: translate(0, 20px); animation: ease-out 280ms slideInSearchResultsMobile; width: auto !important; } /* * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 */ label.main-menu-btn ~ #searchBoxPos1 { top: 3px !important; right: 6px !important; left: 45px; display: flex; } label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { margin-top: 0; margin-bottom: 0; flex-grow: 2; float: left; } } /* Tree view */ #side-nav { padding: 0 !important; background: var(--side-nav-background); min-width: 8px; max-width: 50vw; } @media screen and (max-width: 767px) { #side-nav { display: none; } #doc-content { margin-left: 0 !important; } } #nav-tree { background: transparent; margin-right: 1px; } #nav-tree .label { font-size: var(--navigation-font-size); } #nav-tree .item { height: var(--tree-item-height); line-height: var(--tree-item-height); overflow: hidden; text-overflow: ellipsis; } #nav-tree .item > a:focus { outline: none; } #nav-sync { bottom: 12px; right: 12px; top: auto !important; user-select: none; } #nav-tree .selected { text-shadow: none; background-image: none; background-color: transparent; position: relative; color: var(--primary-color) !important; font-weight: 500; } #nav-tree .selected::after { content: ""; position: absolute; top: 1px; bottom: 1px; left: 0; width: 4px; border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; background: var(--primary-color); } #nav-tree a { color: var(--side-nav-foreground) !important; font-weight: normal; } #nav-tree a:focus { outline-style: auto; } #nav-tree .arrow { opacity: var(--side-nav-arrow-opacity); background: none; } .arrow { color: inherit; cursor: pointer; font-size: 45%; vertical-align: middle; margin-right: 2px; font-family: serif; height: auto; text-align: right; } #nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { opacity: var(--side-nav-arrow-hover-opacity); } #nav-tree .selected a { color: var(--primary-color) !important; font-weight: bolder; font-weight: 600; } .ui-resizable-e { width: 4px; background: transparent; box-shadow: inset -1px 0 0 0 var(--separator-color); } /* Contents */ div.header { border-bottom: 1px solid var(--separator-color); background-color: var(--page-background-color); background-image: none; } @media screen and (min-width: 1000px) { #doc-content > div > div.contents, .PageDoc > div.contents { display: flex; flex-direction: row-reverse; flex-wrap: nowrap; align-items: flex-start; } div.contents .textblock { min-width: 200px; flex-grow: 1; } } div.contents, div.header .title, div.header .summary { max-width: var(--content-maxwidth); } div.contents, div.header .title { line-height: initial; margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; } div.header .summary { margin: var(--spacing-medium) auto 0 auto; } div.headertitle { padding: 0; } div.header .title { font-weight: 600; font-size: 225%; padding: var(--spacing-medium) var(--spacing-large); word-break: break-word; } div.header .summary { width: auto; display: block; float: none; padding: 0 var(--spacing-large); } td.memSeparator { border-color: var(--separator-color); } span.mlabel { background: var(--primary-color); border: none; padding: 4px 9px; border-radius: 12px; margin-right: var(--spacing-medium); } span.mlabel:last-of-type { margin-right: 2px; } div.contents { padding: 0 var(--spacing-large); } div.contents p, div.contents li { line-height: var(--content-line-height); } div.contents div.dyncontent { margin: var(--spacing-medium) 0; } @media (prefers-color-scheme: dark) { html:not(.light-mode) div.contents div.dyncontent img, html:not(.light-mode) div.contents center img, html:not(.light-mode) div.contents > table img, html:not(.light-mode) div.contents div.dyncontent iframe, html:not(.light-mode) div.contents center iframe, html:not(.light-mode) div.contents table iframe, html:not(.light-mode) div.contents .dotgraph iframe { filter: brightness(89%) hue-rotate(180deg) invert(); } } html.dark-mode div.contents div.dyncontent img, html.dark-mode div.contents center img, html.dark-mode div.contents > table img, html.dark-mode div.contents div.dyncontent iframe, html.dark-mode div.contents center iframe, html.dark-mode div.contents table iframe, html.dark-mode div.contents .dotgraph iframe { filter: brightness(89%) hue-rotate(180deg) invert(); } h2.groupheader { border-bottom: 0px; color: var(--page-foreground-color); box-shadow: 100px 0 var(--page-background-color), -100px 0 var(--page-background-color), 100px 0.75px var(--separator-color), -100px 0.75px var(--separator-color), 500px 0 var(--page-background-color), -500px 0 var(--page-background-color), 500px 0.75px var(--separator-color), -500px 0.75px var(--separator-color), 900px 0 var(--page-background-color), -900px 0 var(--page-background-color), 900px 0.75px var(--separator-color), -900px 0.75px var(--separator-color), 1400px 0 var(--page-background-color), -1400px 0 var(--page-background-color), 1400px 0.75px var(--separator-color), -1400px 0.75px var(--separator-color), 1900px 0 var(--page-background-color), -1900px 0 var(--page-background-color), 1900px 0.75px var(--separator-color), -1900px 0.75px var(--separator-color); } blockquote { margin: 0 var(--spacing-medium) 0 var(--spacing-medium); padding: var(--spacing-small) var(--spacing-large); background: var(--blockquote-background); color: var(--blockquote-foreground); border-left: 0; overflow: visible; border-radius: var(--border-radius-medium); overflow: visible; position: relative; } blockquote::before, blockquote::after { font-weight: bold; font-family: serif; font-size: 360%; opacity: .15; position: absolute; } blockquote::before { content: "“"; left: -10px; top: 4px; } blockquote::after { content: "â€"; right: -8px; bottom: -25px; } blockquote p { margin: var(--spacing-small) 0 var(--spacing-medium) 0; } .paramname, .paramname em { font-weight: 600; color: var(--primary-dark-color); } .paramname > code { border: 0; } table.params .paramname { font-weight: 600; font-family: var(--font-family-monospace); font-size: var(--code-font-size); padding-right: var(--spacing-small); line-height: var(--table-line-height); } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { text-shadow: 0 0 15px var(--primary-light-color); } .alphachar a { color: var(--page-foreground-color); } .dotgraph { max-width: 100%; overflow-x: scroll; } .dotgraph .caption { position: sticky; left: 0; } /* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ .interactive_dotgraph .dotgraph iframe { max-width: 100%; } /* Table of Contents */ div.contents .toc { max-height: var(--toc-max-height); min-width: var(--toc-width); border: 0; border-left: 1px solid var(--separator-color); border-radius: 0; background-color: var(--page-background-color); box-shadow: none; position: sticky; top: var(--toc-sticky-top); padding: 0 var(--spacing-large); margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); } div.toc h3 { color: var(--toc-foreground); font-size: var(--navigation-font-size); margin: var(--spacing-large) 0 var(--spacing-medium) 0; } div.toc li { padding: 0; background: none; line-height: var(--toc-font-size); margin: var(--toc-font-size) 0 0 0; } div.toc li::before { display: none; } div.toc ul { margin-top: 0 } div.toc li a { font-size: var(--toc-font-size); color: var(--page-foreground-color) !important; text-decoration: none; } div.toc li a:hover, div.toc li a.active { color: var(--primary-color) !important; } div.toc li a.aboveActive { color: var(--page-secondary-foreground-color) !important; } @media screen and (max-width: 999px) { div.contents .toc { max-height: 45vh; float: none; width: auto; margin: 0 0 var(--spacing-medium) 0; position: relative; top: 0; position: relative; border: 1px solid var(--separator-color); border-radius: var(--border-radius-medium); background-color: var(--toc-background); box-shadow: var(--box-shadow); } div.contents .toc.interactive { max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); overflow: hidden; } div.contents .toc > h3 { -webkit-tap-highlight-color: transparent; cursor: pointer; position: sticky; top: 0; background-color: var(--toc-background); margin: 0; padding: var(--spacing-large) 0; display: block; } div.contents .toc.interactive > h3::before { content: ""; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--primary-color); display: inline-block; margin-right: var(--spacing-small); margin-bottom: calc(var(--navigation-font-size) / 4); transform: rotate(-90deg); transition: transform var(--animation-duration) ease-out; } div.contents .toc.interactive.open > h3::before { transform: rotate(0deg); } div.contents .toc.interactive.open { max-height: 45vh; overflow: auto; transition: max-height 0.2s ease-in-out; } div.contents .toc a, div.contents .toc a.active { color: var(--primary-color) !important; } div.contents .toc a:hover { text-decoration: underline; } } /* Code & Fragments */ code, div.fragment, pre.fragment { border-radius: var(--border-radius-small); border: 1px solid var(--separator-color); overflow: hidden; } code { display: inline; background: var(--code-background); color: var(--code-foreground); padding: 2px 6px; } div.fragment, pre.fragment { margin: var(--spacing-medium) 0; padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); background: var(--fragment-background); color: var(--fragment-foreground); overflow-x: auto; } @media screen and (max-width: 767px) { div.fragment, pre.fragment { border-top-right-radius: 0; border-bottom-right-radius: 0; border-right: 0; } .contents > div.fragment, .textblock > div.fragment, .textblock > pre.fragment, .textblock > .tabbed > ul > li > div.fragment, .textblock > .tabbed > ul > li > pre.fragment, .contents > .doxygen-awesome-fragment-wrapper > div.fragment, .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { margin: var(--spacing-medium) calc(0px - var(--spacing-large)); border-radius: 0; border-left: 0; } .textblock li > .fragment, .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { margin: var(--spacing-medium) calc(0px - var(--spacing-large)); } .memdoc li > .fragment, .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); } .textblock ul, .memdoc ul { overflow: initial; } .memdoc > div.fragment, .memdoc > pre.fragment, dl dd > div.fragment, dl dd pre.fragment, .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); border-radius: 0; border-left: 0; } } code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { font-family: var(--font-family-monospace); font-size: var(--code-font-size) !important; } div.line:after { margin-right: var(--spacing-medium); } div.fragment .line, pre.fragment { white-space: pre; word-wrap: initial; line-height: var(--fragment-lineheight); } div.fragment span.keyword { color: var(--fragment-keyword); } div.fragment span.keywordtype { color: var(--fragment-keywordtype); } div.fragment span.keywordflow { color: var(--fragment-keywordflow); } div.fragment span.stringliteral { color: var(--fragment-token) } div.fragment span.comment { color: var(--fragment-comment); } div.fragment a.code { color: var(--fragment-link) !important; } div.fragment span.preprocessor { color: var(--fragment-preprocessor); } div.fragment span.lineno { display: inline-block; width: 27px; border-right: none; background: var(--fragment-linenumber-background); color: var(--fragment-linenumber-color); } div.fragment span.lineno a { background: none; color: var(--fragment-link) !important; } div.fragment > .line:first-child .lineno { box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); background-color: var(--fragment-linenumber-background) !important; } div.line { border-radius: var(--border-radius-small); } div.line.glow { background-color: var(--primary-light-color); box-shadow: none; } /* dl warning, attention, note, deprecated, bug, ... */ dl.bug dt a, dl.deprecated dt a, dl.todo dt a { font-weight: bold !important; } dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { padding: var(--spacing-medium); margin: var(--spacing-medium) 0; color: var(--page-background-color); overflow: hidden; margin-left: 0; border-radius: var(--border-radius-small); } dl.section dd { margin-bottom: 2px; } dl.warning, dl.attention { background: var(--warning-color); border-left: 8px solid var(--warning-color-dark); color: var(--warning-color-darker); } dl.warning dt, dl.attention dt { color: var(--warning-color-dark); } dl.note, dl.remark { background: var(--note-color); border-left: 8px solid var(--note-color-dark); color: var(--note-color-darker); } dl.note dt, dl.remark dt { color: var(--note-color-dark); } dl.todo { background: var(--todo-color); border-left: 8px solid var(--todo-color-dark); color: var(--todo-color-darker); } dl.todo dt a { color: var(--todo-color-dark) !important; } dl.bug dt a { color: var(--todo-color-dark) !important; } dl.bug { background: var(--bug-color); border-left: 8px solid var(--bug-color-dark); color: var(--bug-color-darker); } dl.bug dt a { color: var(--bug-color-dark) !important; } dl.deprecated { background: var(--deprecated-color); border-left: 8px solid var(--deprecated-color-dark); color: var(--deprecated-color-darker); } dl.deprecated dt a { color: var(--deprecated-color-dark) !important; } dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { margin-inline-start: 0px; } dl.invariant, dl.pre, dl.post { background: var(--invariant-color); border-left: 8px solid var(--invariant-color-dark); color: var(--invariant-color-darker); } dl.invariant dt, dl.pre dt, dl.post dt { color: var(--invariant-color-dark); } /* memitem */ div.memdoc, div.memproto, h2.memtitle { box-shadow: none; background-image: none; border: none; } div.memdoc { padding: 0 var(--spacing-medium); background: var(--page-background-color); } h2.memtitle, div.memitem { border: 1px solid var(--separator-color); box-shadow: var(--box-shadow); } h2.memtitle { box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); } div.memitem { transition: none; } div.memproto, h2.memtitle { background: var(--fragment-background); } h2.memtitle { font-weight: 500; font-size: var(--memtitle-font-size); font-family: var(--font-family-monospace); border-bottom: none; border-top-left-radius: var(--border-radius-medium); border-top-right-radius: var(--border-radius-medium); word-break: break-all; position: relative; } h2.memtitle:after { content: ""; display: block; background: var(--fragment-background); height: var(--spacing-medium); bottom: calc(0px - var(--spacing-medium)); left: 0; right: -14px; position: absolute; border-top-right-radius: var(--border-radius-medium); } h2.memtitle > span.permalink { font-size: inherit; } h2.memtitle > span.permalink > a { text-decoration: none; padding-left: 3px; margin-right: -4px; user-select: none; display: inline-block; margin-top: -6px; } h2.memtitle > span.permalink > a:hover { color: var(--primary-dark-color) !important; } a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { border-color: var(--primary-light-color); } div.memitem { border-top-right-radius: var(--border-radius-medium); border-bottom-right-radius: var(--border-radius-medium); border-bottom-left-radius: var(--border-radius-medium); overflow: hidden; display: block !important; } div.memdoc { border-radius: 0; } div.memproto { border-radius: 0 var(--border-radius-small) 0 0; overflow: auto; border-bottom: 1px solid var(--separator-color); padding: var(--spacing-medium); margin-bottom: -1px; } div.memtitle { border-top-right-radius: var(--border-radius-medium); border-top-left-radius: var(--border-radius-medium); } div.memproto table.memname { font-family: var(--font-family-monospace); color: var(--page-foreground-color); font-size: var(--memname-font-size); text-shadow: none; } div.memproto div.memtemplate { font-family: var(--font-family-monospace); color: var(--primary-dark-color); font-size: var(--memname-font-size); margin-left: 2px; text-shadow: none; } table.mlabels, table.mlabels > tbody { display: block; } td.mlabels-left { width: auto; } td.mlabels-right { margin-top: 3px; position: sticky; left: 0; } table.mlabels > tbody > tr:first-child { display: flex; justify-content: space-between; flex-wrap: wrap; } .memname, .memitem span.mlabels { margin: 0 } /* reflist */ dl.reflist { box-shadow: var(--box-shadow); border-radius: var(--border-radius-medium); border: 1px solid var(--separator-color); overflow: hidden; padding: 0; } dl.reflist dt, dl.reflist dd { box-shadow: none; text-shadow: none; background-image: none; border: none; padding: 12px; } dl.reflist dt { font-weight: 500; border-radius: 0; background: var(--code-background); border-bottom: 1px solid var(--separator-color); color: var(--page-foreground-color) } dl.reflist dd { background: none; } /* Table */ .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { display: inline-block; max-width: 100%; } .contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { margin-left: calc(0px - var(--spacing-large)); margin-right: calc(0px - var(--spacing-large)); max-width: calc(100% + 2 * var(--spacing-large)); } table.fieldtable, table.markdownTable tbody, table.doxtable tbody { border: none; margin: var(--spacing-medium) 0; box-shadow: 0 0 0 1px var(--separator-color); border-radius: var(--border-radius-small); } table.markdownTable, table.doxtable, table.fieldtable { padding: 1px; } table.doxtable caption { display: block; } table.fieldtable { border-collapse: collapse; width: 100%; } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone, table.doxtable th { background: var(--tablehead-background); color: var(--tablehead-foreground); font-weight: 600; font-size: var(--page-font-size); } th.markdownTableHeadLeft:first-child, th.markdownTableHeadRight:first-child, th.markdownTableHeadCenter:first-child, th.markdownTableHeadNone:first-child, table.doxtable tr th:first-child { border-top-left-radius: var(--border-radius-small); } th.markdownTableHeadLeft:last-child, th.markdownTableHeadRight:last-child, th.markdownTableHeadCenter:last-child, th.markdownTableHeadNone:last-child, table.doxtable tr th:last-child { border-top-right-radius: var(--border-radius-small); } table.markdownTable td, table.markdownTable th, table.fieldtable td, table.fieldtable th, table.doxtable td, table.doxtable th { border: 1px solid var(--separator-color); padding: var(--spacing-small) var(--spacing-medium); } table.markdownTable td:last-child, table.markdownTable th:last-child, table.fieldtable td:last-child, table.fieldtable th:last-child, table.doxtable td:last-child, table.doxtable th:last-child { border-right: none; } table.markdownTable td:first-child, table.markdownTable th:first-child, table.fieldtable td:first-child, table.fieldtable th:first-child, table.doxtable td:first-child, table.doxtable th:first-child { border-left: none; } table.markdownTable tr:first-child td, table.markdownTable tr:first-child th, table.fieldtable tr:first-child td, table.fieldtable tr:first-child th, table.doxtable tr:first-child td, table.doxtable tr:first-child th { border-top: none; } table.markdownTable tr:last-child td, table.markdownTable tr:last-child th, table.fieldtable tr:last-child td, table.fieldtable tr:last-child th, table.doxtable tr:last-child td, table.doxtable tr:last-child th { border-bottom: none; } table.markdownTable tr, table.doxtable tr { border-bottom: 1px solid var(--separator-color); } table.markdownTable tr:last-child, table.doxtable tr:last-child { border-bottom: none; } .full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { display: block; } .full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { display: table; width: 100%; } table.fieldtable th { font-size: var(--page-font-size); font-weight: 600; background-image: none; background-color: var(--tablehead-background); color: var(--tablehead-foreground); } table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit, .fieldtable td.fielddoc, .fieldtable th { border-bottom: 1px solid var(--separator-color); border-right: 1px solid var(--separator-color); } table.fieldtable tr:last-child td:first-child { border-bottom-left-radius: var(--border-radius-small); } table.fieldtable tr:last-child td:last-child { border-bottom-right-radius: var(--border-radius-small); } .memberdecls td.glow, .fieldtable tr.glow { background-color: var(--primary-light-color); box-shadow: none; } table.memberdecls { display: block; -webkit-tap-highlight-color: transparent; } table.memberdecls tr[class^='memitem'] { font-family: var(--font-family-monospace); font-size: var(--code-font-size); } table.memberdecls tr[class^='memitem'] .memTemplParams { font-family: var(--font-family-monospace); font-size: var(--code-font-size); color: var(--primary-dark-color); white-space: normal; } table.memberdecls .memItemLeft, table.memberdecls .memItemRight, table.memberdecls .memTemplItemLeft, table.memberdecls .memTemplItemRight, table.memberdecls .memTemplParams { transition: none; padding-top: var(--spacing-small); padding-bottom: var(--spacing-small); border-top: 1px solid var(--separator-color); border-bottom: 1px solid var(--separator-color); background-color: var(--fragment-background); } table.memberdecls .memTemplItemLeft, table.memberdecls .memTemplItemRight { padding-top: 2px; } table.memberdecls .memTemplParams { border-bottom: 0; border-left: 1px solid var(--separator-color); border-right: 1px solid var(--separator-color); border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; padding-bottom: var(--spacing-small); } table.memberdecls .memTemplItemLeft { border-radius: 0 0 0 var(--border-radius-small); border-left: 1px solid var(--separator-color); border-top: 0; } table.memberdecls .memTemplItemRight { border-radius: 0 0 var(--border-radius-small) 0; border-right: 1px solid var(--separator-color); padding-left: 0; border-top: 0; } table.memberdecls .memItemLeft { border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); border-left: 1px solid var(--separator-color); padding-left: var(--spacing-medium); padding-right: 0; } table.memberdecls .memItemRight { border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; border-right: 1px solid var(--separator-color); padding-right: var(--spacing-medium); padding-left: 0; } table.memberdecls .mdescLeft, table.memberdecls .mdescRight { background: none; color: var(--page-foreground-color); padding: var(--spacing-small) 0; } table.memberdecls .memItemLeft, table.memberdecls .memTemplItemLeft { padding-right: var(--spacing-medium); } table.memberdecls .memSeparator { background: var(--page-background-color); height: var(--spacing-large); border: 0; transition: none; } table.memberdecls .groupheader { margin-bottom: var(--spacing-large); } table.memberdecls .inherit_header td { padding: 0 0 var(--spacing-medium) 0; text-indent: -12px; color: var(--page-secondary-foreground-color); } table.memberdecls img[src="closed.png"], table.memberdecls img[src="open.png"], div.dynheader img[src="open.png"], div.dynheader img[src="closed.png"] { width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 5px solid var(--primary-color); margin-top: 8px; display: block; float: left; margin-left: -10px; transition: transform var(--animation-duration) ease-out; } table.memberdecls img { margin-right: 10px; } table.memberdecls img[src="closed.png"], div.dynheader img[src="closed.png"] { transform: rotate(-90deg); } .compoundTemplParams { font-family: var(--font-family-monospace); color: var(--primary-dark-color); font-size: var(--code-font-size); } @media screen and (max-width: 767px) { table.memberdecls .memItemLeft, table.memberdecls .memItemRight, table.memberdecls .mdescLeft, table.memberdecls .mdescRight, table.memberdecls .memTemplItemLeft, table.memberdecls .memTemplItemRight, table.memberdecls .memTemplParams { display: block; text-align: left; padding-left: var(--spacing-large); margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); border-right: none; border-left: none; border-radius: 0; white-space: normal; } table.memberdecls .memItemLeft, table.memberdecls .mdescLeft, table.memberdecls .memTemplItemLeft { border-bottom: 0; padding-bottom: 0; } table.memberdecls .memTemplItemLeft { padding-top: 0; } table.memberdecls .mdescLeft { margin-bottom: calc(0px - var(--page-font-size)); } table.memberdecls .memItemRight, table.memberdecls .mdescRight, table.memberdecls .memTemplItemRight { border-top: 0; padding-top: 0; padding-right: var(--spacing-large); overflow-x: auto; } table.memberdecls tr[class^='memitem']:not(.inherit) { display: block; width: calc(100vw - 2 * var(--spacing-large)); } table.memberdecls .mdescRight { color: var(--page-foreground-color); } table.memberdecls tr.inherit { visibility: hidden; } table.memberdecls tr[style="display: table-row;"] { display: block !important; visibility: visible; width: calc(100vw - 2 * var(--spacing-large)); animation: fade .5s; } @keyframes fade { 0% { opacity: 0; max-height: 0; } 100% { opacity: 1; max-height: 200px; } } } /* Horizontal Rule */ hr { margin-top: var(--spacing-large); margin-bottom: var(--spacing-large); height: 1px; background-color: var(--separator-color); border: 0; } .contents hr { box-shadow: 100px 0 var(--separator-color), -100px 0 var(--separator-color), 500px 0 var(--separator-color), -500px 0 var(--separator-color), 900px 0 var(--separator-color), -900px 0 var(--separator-color), 1400px 0 var(--separator-color), -1400px 0 var(--separator-color), 1900px 0 var(--separator-color), -1900px 0 var(--separator-color); } .contents img, .contents .center, .contents center, .contents div.image object { max-width: 100%; overflow: auto; } @media screen and (max-width: 767px) { .contents .dyncontent > .center, .contents > center { margin-left: calc(0px - var(--spacing-large)); margin-right: calc(0px - var(--spacing-large)); max-width: calc(100% + 2 * var(--spacing-large)); } } /* Directories */ div.directory { border-top: 1px solid var(--separator-color); border-bottom: 1px solid var(--separator-color); width: auto; } table.directory { font-family: var(--font-family); font-size: var(--page-font-size); font-weight: normal; width: 100%; } table.directory td.entry, table.directory td.desc { padding: calc(var(--spacing-small) / 2) var(--spacing-small); line-height: var(--table-line-height); } table.directory tr.even td:last-child { border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; } table.directory tr.even td:first-child { border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); } table.directory tr.even:last-child td:last-child { border-radius: 0 var(--border-radius-small) 0 0; } table.directory tr.even:last-child td:first-child { border-radius: var(--border-radius-small) 0 0 0; } table.directory td.desc { min-width: 250px; } table.directory tr.even { background-color: var(--odd-color); } table.directory tr.odd { background-color: transparent; } .icona { width: auto; height: auto; margin: 0 var(--spacing-small); } .icon { background: var(--primary-color); border-radius: var(--border-radius-small); font-size: var(--page-font-size); padding: calc(var(--page-font-size) / 5); line-height: var(--page-font-size); transform: scale(0.8); height: auto; width: var(--page-font-size); user-select: none; } .iconfopen, .icondoc, .iconfclosed { background-position: center; margin-bottom: 0; height: var(--table-line-height); } .icondoc { filter: saturate(0.2); } @media screen and (max-width: 767px) { div.directory { margin-left: calc(0px - var(--spacing-large)); margin-right: calc(0px - var(--spacing-large)); } } @media (prefers-color-scheme: dark) { html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { filter: hue-rotate(180deg) invert(); } } html.dark-mode .iconfopen, html.dark-mode .iconfclosed { filter: hue-rotate(180deg) invert(); } /* Class list */ .classindex dl.odd { background: var(--odd-color); border-radius: var(--border-radius-small); } .classindex dl.even { background-color: transparent; } /* Class Index Doxygen 1.8 */ table.classindex { margin-left: 0; margin-right: 0; width: 100%; } table.classindex table div.ah { background-image: none; background-color: initial; border-color: var(--separator-color); color: var(--page-foreground-color); box-shadow: var(--box-shadow); border-radius: var(--border-radius-large); padding: var(--spacing-small); } div.qindex { background-color: var(--odd-color); border-radius: var(--border-radius-small); border: 1px solid var(--separator-color); padding: var(--spacing-small) 0; } /* Footer and nav-path */ #nav-path { width: 100%; } #nav-path ul { background-image: none; background: var(--page-background-color); border: none; border-top: 1px solid var(--separator-color); border-bottom: 1px solid var(--separator-color); border-bottom: 0; box-shadow: 0 0.75px 0 var(--separator-color); font-size: var(--navigation-font-size); } img.footer { width: 60px; } .navpath li.footer { color: var(--page-secondary-foreground-color); } address.footer { color: var(--page-secondary-foreground-color); margin-bottom: var(--spacing-large); } #nav-path li.navelem { background-image: none; display: flex; align-items: center; } .navpath li.navelem a { text-shadow: none; display: inline-block; color: var(--primary-color) !important; } .navpath li.navelem b { color: var(--primary-dark-color); font-weight: 500; } li.navelem { padding: 0; margin-left: -8px; } li.navelem:first-child { margin-left: var(--spacing-large); } li.navelem:first-child:before { display: none; } #nav-path li.navelem:after { content: ''; border: 5px solid var(--page-background-color); border-bottom-color: transparent; border-right-color: transparent; border-top-color: transparent; transform: translateY(-1px) scaleY(4.2); z-index: 10; margin-left: 6px; } #nav-path li.navelem:before { content: ''; border: 5px solid var(--separator-color); border-bottom-color: transparent; border-right-color: transparent; border-top-color: transparent; transform: translateY(-1px) scaleY(3.2); margin-right: var(--spacing-small); } .navpath li.navelem a:hover { color: var(--primary-color); } /* Scrollbars for Webkit */ #nav-tree::-webkit-scrollbar, div.fragment::-webkit-scrollbar, pre.fragment::-webkit-scrollbar, div.memproto::-webkit-scrollbar, .contents center::-webkit-scrollbar, .contents .center::-webkit-scrollbar, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, div.contents .toc::-webkit-scrollbar, .contents .dotgraph::-webkit-scrollbar, .contents .tabs-overview-container::-webkit-scrollbar { background: transparent; width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); } #nav-tree::-webkit-scrollbar-thumb, div.fragment::-webkit-scrollbar-thumb, pre.fragment::-webkit-scrollbar-thumb, div.memproto::-webkit-scrollbar-thumb, .contents center::-webkit-scrollbar-thumb, .contents .center::-webkit-scrollbar-thumb, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, div.contents .toc::-webkit-scrollbar-thumb, .contents .dotgraph::-webkit-scrollbar-thumb, .contents .tabs-overview-container::-webkit-scrollbar-thumb { background-color: transparent; border: var(--webkit-scrollbar-padding) solid transparent; border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); background-clip: padding-box; } #nav-tree:hover::-webkit-scrollbar-thumb, div.fragment:hover::-webkit-scrollbar-thumb, pre.fragment:hover::-webkit-scrollbar-thumb, div.memproto:hover::-webkit-scrollbar-thumb, .contents center:hover::-webkit-scrollbar-thumb, .contents .center:hover::-webkit-scrollbar-thumb, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, div.contents .toc:hover::-webkit-scrollbar-thumb, .contents .dotgraph:hover::-webkit-scrollbar-thumb, .contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { background-color: var(--webkit-scrollbar-color); } #nav-tree::-webkit-scrollbar-track, div.fragment::-webkit-scrollbar-track, pre.fragment::-webkit-scrollbar-track, div.memproto::-webkit-scrollbar-track, .contents center::-webkit-scrollbar-track, .contents .center::-webkit-scrollbar-track, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, div.contents .toc::-webkit-scrollbar-track, .contents .dotgraph::-webkit-scrollbar-track, .contents .tabs-overview-container::-webkit-scrollbar-track { background: transparent; } #nav-tree::-webkit-scrollbar-corner { background-color: var(--side-nav-background); } #nav-tree, div.fragment, pre.fragment, div.memproto, .contents center, .contents .center, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, div.contents .toc { overflow-x: auto; overflow-x: overlay; } #nav-tree { overflow-x: auto; overflow-y: auto; overflow-y: overlay; } /* Scrollbars for Firefox */ #nav-tree, div.fragment, pre.fragment, div.memproto, .contents center, .contents .center, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, div.contents .toc, .contents .dotgraph, .contents .tabs-overview-container { scrollbar-width: thin; } /* Optional Dark mode toggle button */ doxygen-awesome-dark-mode-toggle { display: inline-block; margin: 0 0 0 var(--spacing-small); padding: 0; width: var(--searchbar-height); height: var(--searchbar-height); background: none; border: none; border-radius: var(--searchbar-height); vertical-align: middle; text-align: center; line-height: var(--searchbar-height); font-size: 22px; display: flex; align-items: center; justify-content: center; user-select: none; cursor: pointer; } doxygen-awesome-dark-mode-toggle > svg { transition: transform var(--animation-duration) ease-in-out; } doxygen-awesome-dark-mode-toggle:active > svg { transform: scale(.5); } doxygen-awesome-dark-mode-toggle:hover { background-color: rgba(0,0,0,.03); } html.dark-mode doxygen-awesome-dark-mode-toggle:hover { background-color: rgba(0,0,0,.18); } /* Optional fragment copy button */ .doxygen-awesome-fragment-wrapper { position: relative; } doxygen-awesome-fragment-copy-button { opacity: 0; background: var(--fragment-background); width: 28px; height: 28px; position: absolute; right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); border: 1px solid var(--fragment-foreground); cursor: pointer; border-radius: var(--border-radius-small); display: flex; justify-content: center; align-items: center; } .doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { opacity: .28; } doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { opacity: 1 !important; } doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { transform: scale(.91); } doxygen-awesome-fragment-copy-button svg { fill: var(--fragment-foreground); width: 18px; height: 18px; } doxygen-awesome-fragment-copy-button.success svg { fill: rgb(14, 168, 14); } doxygen-awesome-fragment-copy-button.success { border-color: rgb(14, 168, 14); } @media screen and (max-width: 767px) { .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { right: 0; } } /* Optional paragraph link button */ a.anchorlink { font-size: 90%; margin-left: var(--spacing-small); color: var(--page-foreground-color) !important; text-decoration: none; opacity: .15; display: none; transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; } a.anchorlink svg { fill: var(--page-foreground-color); } h3 a.anchorlink svg, h4 a.anchorlink svg { margin-bottom: -3px; margin-top: -4px; } a.anchorlink:hover { opacity: .45; } h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { display: inline-block; } /* Optional tab feature */ .tabbed > ul { padding-inline-start: 0px; margin: 0; padding: var(--spacing-small) 0; } .tabbed > ul > li { display: none; } .tabbed > ul > li.selected { display: block; } .tabs-overview-container { overflow-x: auto; display: block; overflow-y: visible; } .tabs-overview { border-bottom: 1px solid var(--separator-color); display: flex; flex-direction: row; } @media screen and (max-width: 767px) { .tabs-overview-container { margin: 0 calc(0px - var(--spacing-large)); } .tabs-overview { padding: 0 var(--spacing-large) } } .tabs-overview button.tab-button { color: var(--page-foreground-color); margin: 0; border: none; background: transparent; padding: calc(var(--spacing-large) / 2) 0; display: inline-block; font-size: var(--page-font-size); cursor: pointer; box-shadow: 0 1px 0 0 var(--separator-color); position: relative; -webkit-tap-highlight-color: transparent; } .tabs-overview button.tab-button .tab-title::before { display: block; content: attr(title); font-weight: 600; height: 0; overflow: hidden; visibility: hidden; } .tabs-overview button.tab-button .tab-title { float: left; white-space: nowrap; font-weight: normal; padding: calc(var(--spacing-large) / 2) var(--spacing-large); border-radius: var(--border-radius-medium); transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; } .tabs-overview button.tab-button:not(:last-child) .tab-title { box-shadow: 8px 0 0 -7px var(--separator-color); } .tabs-overview button.tab-button:hover .tab-title { background: var(--separator-color); box-shadow: none; } .tabs-overview button.tab-button.active .tab-title { font-weight: 600; } .tabs-overview button.tab-button::after { content: ''; display: block; position: absolute; left: 0; bottom: 0; right: 0; height: 0; width: 0%; margin: 0 auto; border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; background-color: var(--primary-color); transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; } .tabs-overview button.tab-button.active::after { width: 100%; box-sizing: border-box; height: 3px; } /* Navigation Buttons */ .section_buttons:not(:empty) { margin-top: calc(var(--spacing-large) * 3); } .section_buttons table.markdownTable { display: block; width: 100%; } .section_buttons table.markdownTable tbody { display: table !important; width: 100%; box-shadow: none; border-spacing: 10px; } .section_buttons table.markdownTable td { padding: 0; } .section_buttons table.markdownTable th { display: none; } .section_buttons table.markdownTable tr.markdownTableHead { border: none; } .section_buttons tr th, .section_buttons tr td { background: none; border: none; padding: var(--spacing-large) 0 var(--spacing-small); } .section_buttons a { display: inline-block; border: 1px solid var(--separator-color); border-radius: var(--border-radius-medium); color: var(--page-secondary-foreground-color) !important; text-decoration: none; transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; } .section_buttons a:hover { color: var(--page-foreground-color) !important; background-color: var(--odd-color); } .section_buttons tr td.markdownTableBodyLeft a { padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); } .section_buttons tr td.markdownTableBodyRight a { padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); } .section_buttons tr td.markdownTableBodyLeft a::before, .section_buttons tr td.markdownTableBodyRight a::after { color: var(--page-secondary-foreground-color) !important; display: inline-block; transition: color .08s ease-in-out, transform .09s ease-in-out; } .section_buttons tr td.markdownTableBodyLeft a::before { content: '〈'; padding-right: var(--spacing-large); } .section_buttons tr td.markdownTableBodyRight a::after { content: '〉'; padding-left: var(--spacing-large); } .section_buttons tr td.markdownTableBodyLeft a:hover::before { color: var(--page-foreground-color) !important; transform: translateX(-3px); } .section_buttons tr td.markdownTableBodyRight a:hover::after { color: var(--page-foreground-color) !important; transform: translateX(3px); } @media screen and (max-width: 450px) { .section_buttons a { width: 100%; box-sizing: border-box; } .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); border-right: none; } .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; } } libjwt-3.2.3/doxygen/footer.html000066400000000000000000000012711510461717300166610ustar00rootroot00000000000000 libjwt-3.2.3/doxygen/header.html000066400000000000000000000070721510461717300166200ustar00rootroot00000000000000 $projectname: $title $title $treeview $search $mathjax $darkmode $extrastylesheet
$projectname $projectnumber
$projectbrief
$projectbrief
$searchbox
$searchbox
libjwt-3.2.3/doxygen/libjwt.css000066400000000000000000000005751510461717300165100ustar00rootroot00000000000000a.button { background-color: #EFF4FF; border: none; color: #2557D6; padding: 10px 20px; text-align: center; text-decoration: none; display: inline-block; margin-right: 13px; margin-left: -1px; margin-bottom: 10px; border-radius: 100px; cursor: pointer; transition: box-shadow 0.5s ease; } a.button:hover { box-shadow: inset 0em 0em 0em 10em #DCE6FF; } libjwt-3.2.3/doxygen/maclara-pill.svg000066400000000000000000000024471510461717300175620ustar00rootroot00000000000000Sponsored by: maClara, LLCSponsored bymaClara, LLClibjwt-3.2.3/doxygen/mainpage.dox000066400000000000000000000057551510461717300170050ustar00rootroot00000000000000@mainpage Welcome to LibJWT > [!WARNING] > Version 3 of LibJWT is a complete overhaul of the code. Please see documentation for usage. @section standards \emoji :bulb: Supported Standards Standard | RFC | Description -------- | :--------: | ---------------------- ``JWS`` | @rfc{7515} | JSON Web Signature ``JWE`` | @rfc{7516} | JSON Web Encryption ``JWK`` | @rfc{7517} | JSON Web Keys and Sets ``JWA`` | @rfc{7518} | JSON Web Algorithms ``JWT`` | @rfc{7519} | JSON Web Token > [!NOTE] > Throughout this documentation you will see links such as the ones > above to RFC documents. These are relevant to that particular part of the > library and are helpful to understand some of the specific standards that > shaped the development of LibJWT. @section building \emoji :construction: Build Prerequisites @subsection req Required - [JANSSON](https://github.com/akheron/jansson) (>= 2.0) - [CMake](https://cmake.org) (>= 3.7) @subsection req_crypto Crypto support - OpenSSL (>= 3.0.0) - GnuTLS (>= 3.6.0) - MbedTLS (>= 3.6.0) @note OpenSSL is required and used for JWK(S) operations. @subsection crypto_support Algorithm support matrix JWS Algorithm ``alg`` | OpenSSL | GnuTLS | MbedTLS :---------------------------- | :------------------------ | :------------------------ | :------------------------ ``HS256`` ``HS384`` ``HS512`` | \emoji :white_check_mark: | \emoji :white_check_mark: | \emoji :white_check_mark: ``ES256`` ``ES384`` ``ES512`` | \emoji :white_check_mark: | \emoji :white_check_mark: | \emoji :white_check_mark: ``RS256`` ``RS384`` ``RS512`` | \emoji :white_check_mark: | \emoji :white_check_mark: | \emoji :white_check_mark: ``EdDSA`` using ``ED25519`` | \emoji :white_check_mark: | \emoji :white_check_mark: | \emoji :x: ``EdDSA`` using ``ED448`` | \emoji :white_check_mark: | \emoji :white_check_mark: ``>= 3.8.8`` | \emoji :x: ``PS256`` ``PS384`` ``PS512`` | \emoji :white_check_mark: | \emoji :white_check_mark: | \emoji :white_check_mark:* ``ES256K`` | \emoji :white_check_mark: | \emoji :x: | \emoji :white_check_mark: ``*`` RSASSA-PSS support in MbedTLS depends on [TF-PSA-Ctypto#154](https://github.com/Mbed-TLS/TF-PSA-Crypto/pull/154) @subsection optional Optional - [Check Library](https://github.com/libcheck/check/issues) (>= 0.9.10) for unit testing - [Doxygen](https://www.doxygen.nl) (>= 1.13.0) for documentation @section docs \emoji :open_book: Docs and Source \emoji :link: [Current Docs](https://libjwt.io) \emoji :link: [Legacy Docs v2.1.1](https://libjwt.io/stable) \emoji :link: [GitHub Repo](https://github.com/benmcollins/libjwt) @section prebuilt \emoji :package: Pre-built Packages LibJWT is available in most Linux distributions as well as through [Homebrew](https://formulae.brew.sh/formula/libjwt#default) for Linux, macOS, and Windows. @section instructions \emoji :hammer: Build Instructions @subsection cmake With CMake: @code{.sh} $ mkdir build $ cd build $ cmake .. $ make @endcode libjwt-3.2.3/images/000077500000000000000000000000001510461717300142645ustar00rootroot00000000000000libjwt-3.2.3/images/LibJWT-800x152.png000066400000000000000000002161521510461717300170210ustar00rootroot00000000000000‰PNG  IHDR ¢¹à©&gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<„eXIfMM*JR(‡iZ``    ¢‘Aݧ pHYsÄÄ•+ÊiTXtXML:com.adobe.xmp 96 2 96 1 800 1 162 gO¥@IDATxì½ €ÙYß{ªên}{“Z­­Õ’Z»Fš}Æ=W&,66O€€ñsVÈ â BÞãÉ{@à%ÄKpl‡„`l fo³Zi$–ÑÒ’ZK«[Ýêõ®U•ßÿܾ­î¾UWjI3#ÍÔ™iÝ{«ÎúÕ©s¾ÿù6c’”P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B„  $H(P ¡@B…p^H~7Ràwê¡tKG%ã·§ÃL*)›lhœï;Yçç>ñ}S2Æ)z^Xrø,—L©-ÊE¿­ZO—?ô{{*µ'W $H(P ¡@B„  ¼q(9Ïú³ÿ¤·¥Ú’î0™piոݞã.3¾é ³Ù1aŸç¹íahÁFŽb¹0 "޾@\> <Œcø4E.=¾Wƒp<Íi×5ǹvރ˾ †ù~¥u¬:ö;Pà{’ $H(P ¡@B„  ¼î)ð† ŸÝ½3S-O/Eª±-ðƒ{Çy0å:;yêËv)ZÇI‡Æ¤ H©‡€Ìûã—\ØkÔtùÇ¡ [ÿmg†k•0 «1Sd§Øå00‡Œî5~°¿ê…/·šÖ‘ì>T~Ýϼd€  $H(P ¡@B„oH ¼¡àÁùô/o]ækè»÷))ÜPX!º˜ið„BðýLšÉiߌOfbÊ7žë˜ ×Gƪ¦R M•ï])32^µùÒ)×äs®Y½,mÆÈ/â¦SŽYÒæ™eäs)ßÂý4b]÷$4©= ÍŽðãL†û]ßìÑì÷ÒÞ±ú¥c—ÉÃí$%H(P ¡@B„  $¸ó)ð† H:Ú*¦²# ‚wÀÉ¿—ÇvS]ˆ4´ûüô6ç’î&xÝS ·—3'ÛÃáDX.xÓDTXC‚Џ©L2ÕT[Ù)…¹3ÅÁÑ;¬c‹$%H(PàU¡ÀC™tñÌò¬ç…/ÙVùk¶¹›zZÖdÜtjÚ©R6åúA:xÚñÒN5ºé¬çL 0cÔå¿*I¹c)ðº x˜–·‡ó# ꂯԫ$IÇØd`ž˜6GÏ­ý†¤ «‘T\È~£%ëZ Ùpèúª®´R™Ò5ÙL¡Š¥<ïxS»ypk«56Çõ®ùÆ‹æÌŲµñ@Ô¬¤ü–µYóè=möz©X‰‡ÔµtÿôÅ’Ia rò\ÙªrIuKúW’¸¨ n™ k9ìF²Ž•Ž©¯2nghƒ`˜¿Â¨ýSE·ð•ˆÜ±ï`Òñ×!6¯Ènò2în”*wZ•Ê0,ó~Ë0ÌCÇ2Í[¸··’É|ìĉÑÃüN6ë×áDåÁ³!õõ™\‹ŸùÙÀ¤¾››)x2åZŽÄ‘zœJxå7ÆÏLÿÕùÚÁJC=É…„u ¤ê_îÔÏßý¹0åoGµêGy!ÞNè’DáʸoŽ-èC†ãÃüIâÁÝ_A![ x$ìþº2%U+I"jd©bR®ø3jQà ‚ Uh(YbÒÉs‚ß2,§mSh(>ŒÒyÉ­zW6í™%í´Ç=–‡¶·š"yXÆ1t?t²@[Ø•PO ,²õ.©Vmžƒ'ŠV%LåzP×B³’ö~²÷æÂü_~ò_nùÄtÉÿú‡~í¤N’”P ¡ÀkH–V³:tB¼ê±9ëÔ@I ÀLbå9çºá¿×Ç“|&H(p{S`óf“-·|/|É?d1z€e*kW*yè ÂÇ7õå?6Ù?ýåA8i¶¢žµ½/ÇR]à”àÊ÷=Hj¾ü©¹ñ?N]\úÕÄF¤þt’Ï„¯>ª®ã{Ž£Â9+Å‚~8n95îHí!I  Üz ¸»v·¿ fwi¶Í©dãg Šºå{%§2YÄ÷eéøq«zô†@†Ó-§<óÓ=œ‘ZÌP©¬cÞšòƒw®ÊŸ¼8½ó'çr&œžöJA5^Z‹ÃœJÕM•0ñëÞ­ÎIw(îHò_>ºygÊœ{‚èï°½¯ó?³~¸¿hU›¤b%)|»•JèMÆæÞ¬y`k‡µµ ðxþ¥)l5<3 s¯$tyÀ’¡¸Ô$ÉPÞËØÈ“•ìB $9Q ’zÈÅîÑ3%û]å*/;Ù†è¾Ä8ªW_Ý7aAŒÀ„ÐúUë5«õ+IGîßš·ê^O˜4ç†ÊÖ]åj–co"ÉÍÒyê’Áüóà¶¼µAšÓIDöïC/ì-ùž+ŸþÄîMŸøàîí ’ ¼Á( ýæÉá\¯oÜ¥ºç;U$–~…Ò«ê³ð; 8hà”LXÄ—ð®6lœ¼êN ÷ülèê;ëË:A€ ¬¤C7å‡ ž¯3 ?L¹©`È­d<ä­là:‰N¼ÚåiwTŒOC›Ñ%ÞXW7.]Ú™n©®àRfô+eLJrX‡=§šN;n˜ñ[üÑcÇ — Î<†i[ww»É”züT˜ (Ÿ©:• s ^޸錩Y×÷Ç_(^ üÍÄ_rú–·®4iwIÊ+WÒU§d˜'&•kIû//À“ÍïßbŸæö5íËœ¬ÓåW˾­}{†U,^¬¬\é.ñ¦{Ý´ßêàÑgœús™ëž[®Í{æ»æ·Wæ“9WŒ˜ëê“æ8ÑuÂìÚ¹®ßé djg˜ï†é]›ï®W“Þç|ÿ”뾦`°‘ºx±½3(šåX&¬ gû…“þ¦Làv§ÔÊÃÍó¢å (:^0m²mS¦ m[žâðñå”Wí/§³ÇO޾cÑ5v)»êæ4?Ñ¢¨¦*ޝu(“ ]¯Ê¼å^9¬ ¥ó¨4éÖ ¯µ5Ñßú©í°.5:T8/…´ûðÒ¥æØè¨µã˜›®ªYüt`ª}°RýóJ&? 4RàŽ ¸Óí*ú…8 x^ {4ª%8tª`„¼JI-ªwoRÙaȦ‚ÅÖºÑ}ùl éGƬ[Eàr’ì;$­!¹¤!²ÍЛ%‰Ä(ãË¢†GÒˆeH+ä KÒ •Éò KMJêc“µ¶×,ÏØ> £®ÕÑV‹ý¡¶¤¾uä4+#RÝAÒr Õ-©­ìJ™Gîn³}îÃ;Ös€¢*l‰€•¼o­^–ÔfàÑ p ‘´FàH6$RßÒ¸îÛ’—Kß^tË–ýã=Ÿøè–ÿPö Ÿý{»ˆ1’¤„o ŒêjI·nê¼0yØ©2¯qÅ jÈkVðyÙ}Ö$!üo…‚d›s3ýâÎÊ!„(:•¼Þ¡£s/t«,Wš y)ƒ´ë[=èTµìþ¾çUÿUÉî#~³Š×òÚ2m·óŒs…{9»þy'0ë±Â+„Õ° óX­VÄG»°h~ 80ëL9Ÿlk3¿?9iBfS!5¾nó£0Ì÷ Ã.Ã.A,•jÅ·åƒÀÏóx:àÐÿüîÍæ×7')ÿ¼fknü²|ùòÖLKá§0øNywRn·ï)'ô—”|÷/Þš3¿ùTÑœ¹ÑúÅ\ž®¼/¬8dì9‚ÖÔ¶š7çÉîûÍÿW¿’ªîG9x{ BŽª‚² VSËÜ® Õ+×î²Aò) ^Ö1ZÜ|ÇŠ²ê»Ø+ÉÉ#˜Û%ÇÇ䨤õv¾“¥†é7ø•înó?‡‡Íká&ÞÙÜÕÕî¶·]<~+4yõ¢í<ÄÕ¼Îm¼¶ü@ˆ˜y°ru?󈵉Öç¦è©KFÚ¶6ÿz¦œž:„ôdˆ,:$¸åéòåÖe-&ühøæL%ôM‘S’Š ÄªŸªºn(Éñfê©LOéÿ6çÍ1ݺю\>±¤5ÛZ^C‚U‘ƒ&‰1=ƒ.¼ÝÞŽœ± :Yx·þ›¥2S.÷ßD?ë5%Ÿ¯ Üd÷n“Úd6?V J?ã¸î;xó Â<Ž#y Š“’˜ó:`@= { Ž¡`ÄÌO¢~%CôZ¬Š”ŒË7 nÕ¡ øð-`)ÁÔËŽCª\â28$qPù+\ëÆS•‚”C«šl<ªÜÔ}½s*cûÂg§ ËySÕ3Åüغ.gïËÕ ãÏ á9 ¶G±¬ÔÐĉ¬UÝRmú.iŽ‹ÚSÒõnÆ&»ÆKús‰ˆl^Þa|n&eîe¡ùLyü“»7ÿf¯éýú·í~ò5=¡ªõ>ù7¡À«@®‘R¥˜+»Æíä½YÁ›j­¿CõØß–?©>Ø| ›kí®ß«ßžÝ„áëõó²Ã7+gÀôrŽPoká'-–—µÿd²Y/$ýÍÚ*Âwóï6_J‹{yœe!!;çÝN#<»<ÎÖÕžÊ]¬ºÕ˜É5-ÉWŸÐõLö …ì foÌd­ÑÐ^uœÁÀ÷Š™áW†I¿Úrã· +ZWæ2Á[Ù=ß ÿv^ã>è íëiAçë—>­ú‘øþvÞÛMä;€_C?ÿìÖ÷3K&&ÿò¹ Ååj¤TCU‹¸àL‘²!Ï*T¿[k½y.š7ö¹èY…³0ÿ7ÛþT:]M{•2bÜúÃèmxaµBó y–?iÂÑUN¹ËQ°~ÉËÈàn1­ê•'Ÿ¯/ Üöäv÷-I©ÁLÿÖÔ5Z@¥~ô v/ãúVîiCc)ÒÙ]ÈË”ÞTá”k[Ù~è^)‚\ðN#5ÑoII$ð(’ ¹ÈÕл< 3_²å­]×”Oël7d’A‰R ¦¾"täi5-©]©] yÑ’:–ÍÃ?½´#/V’œÈ¸] fp¤&M‘ô"Oyµ/… õOàHÒ©|]ÆS—ޤ-¨YÙñHú!éŽÜ÷ÖÛП*XªÖ}/õæ]×ý.Š=pΜû-hù{?¶»ÿ Í$)¡À뚸ÁõÏÊhÁ¼šÉÁ+Lè9®.6 +–^Ш„DfFÿ<.GT©7Î5)Çyu)’VÇÈ$qFC™¦èÐÀøÜ«ïñÇßbï¤td%\\Wq«½+y=© Ô}@iMD¨¶¸}N*è£þƒ7Z57Ùƒ3v1ÇøEœ†ãœôý`ßø¸™ZÕ†`Îó›Ï·HòÝìE§ ]byÕæ°¼8'ZÞ” ß潇ÝÒ¢ôþOðA !”ÊÆ™ ;Ã%ü-ƒ”6$¤œë]-Î}¤Pùý¨j™ÉVsÙŽö͆9vµÌâ¿IÜŒ€  õ¸_ºØó’Ò]CC…#=Ùãˆ'é­ùÌDšÛwç´:™›0Å…â¬ÏñŒ7¸¦ q¬ _LyÎSÓ¼CÅ&#šÛ^òýLÛ€|ê£ïa3ÿT&~4+—¹ýçËØy”­'*I"<–{1ô²çXÃ.Æ_Œº’•ZÀ”KŠP³¡à âµtCö’RHåJ×ex.•,INŠœ]ÊîT«t¬$0 »1ýò^ʼnKííå³ jXÐQ}Šã![MØ›ädLN½ª[À%W¬6bz(Éøü®>°úûê«Ê£–ÔÈœ3¤ɉUùbŒylOT^åÑKùêKˆêë$îˆÒ Ǧ͋¸~›’û6çÍÒŽT/§„ÿ ™Éhú?ò+'ØŒÉ? ^§@u"…CžWq!c›†²Cmåm×Ê[ÊSUS§*'•åų usVʹ3 •äC´UråNÄÅÈã•¢œ+2ªK@DI.€Ÿ-ZP#õ©UHlV0”G6J:_~v õ¯ÐöéÔ…’U“ a‹ IÍ(>Ä]ˆB•«ßU؈D]Âe¯•ˆpoáü×öMÒ6JÁ÷µ)0b—ŸO°YÜÿÉÝ›vŸ0'þ:ßô¢f;Ÿü“Pà6£@v²;íæ ÓÀûý¼2ÞC~ ›1ÀƸë„SlüS¼¿,@–Â^ý Ç}¼T'ØvpyÝþ2‡9A‹!lEµ¼•/í(¾tr} s'§•ÆÖ˜Ø0`‰}ÇBÙÂש·õn“î ÁšUÕ®vÑÂyòèëj$ݪ{Â͆ÇQZ¿—õ2€ÀÄ:fÛÖ²éÜcÌeÒêzÝ)ï]ée%¿—~ÖTŸJ:-rß×Õfº±Sævd_ŠÍ\ëTS†ÙFK5Ѐ×xÏqŸ®õ7_²&KD¹0|ž±Ló9†ü}Œqc€° ´ö§8„š C¼?¹á†ø#ÌõuÔ7 &æ·Ä…ôgÈÑsBxV§•ñµR®ƒyß8Høã;çø¾ÇSÏüZoæ×¶•¹ @ÈL?À’Zemól¬ôïùçéÚ½rfr/Ì´ÞGŠˆ/ž—úùµgŸËv”Éþ$¿wñ×Áu;—ÙX÷·N³åráV§©I7À5࢙J”X›°K!´¨yÕ_ø¨—ûV¶ü&<^sÂwòjÉIÂ;ç í|~äwöŸ6ý\‹œ£ÐUvm‘÷ÔõT²¥Ì-é«êKÒë›·ùOÿl[{Ê÷’“‹ Ð+u&©ýÕ øBÆâ’,EzÑšK[/Qbìe¸­˜Ž<€ ‹ý†l+¤Ö$»Ž ”õ}/F$¥hË»o{”ñ,ˆ™°*ZÈf;$MÁ­.‘ÖlHLRVÕJöZ´ªGè£Tµ$=i,È3·ìŠ!÷»ç=ƒ¨]Ir!Ãóm؃ÈVdãš,ß[ìµófÿËÓ5I ý®'+ AúséJ7’UHvÚé»<| äH-Læ±RÛ ’”GÀì‹O™»Öçð²Õªñ¢GìüÖ&gÓæOív~ïGv¯·“|&x½P`õÝÃ…ÁSùObÚùß|'5UHOL!¢ÍóêËż­Êå‚G¸¸ƒŸqdĤ‚/=Uú y8™ŸMzÍÔBRé©%ù’Sì,N™"íbžýóÚš-E?´´ð;îþœ¬o̯6Ìü›H¯ZŒ ]k§F&†³/SÞœøÎÒ&ÚlëîXnΟáj§:›3ê Fîœob3ˆ›;<åp{«—ÝÐgJ'ûÑO‰ª&îZu¬ui6ì€M¼ pœð$;Þ+Wj'ÕSéâÅlµåcªÃŸÎL´^¹¢ˆruéÑ<nX•~s6z3ÉxppN•œÂŸ>cŽRå\†ÓÎ÷¾>5•ÛÛœL¥ÍäŠ0ùòÐôŠ%"p¯¥§ÿPÄAb‘mѹCì÷¿ÕÖ2ý?^8nÁÞ¼±G:9::fFÍ6-ÏMµ¸? Øœ™U|Rß9Ʀƒ„[ž²)ÙóWðÁ7¾óÛ±÷\–5É3¿Äµ~ýƒ…gûúZOg¿©¦·r0ƒ¯ÿX¦\zˆèÍ2øc†Ši…ó”ŠWIRBkRà¶ ¸{kwÕ÷‘Eñ§éyN¶ûP'šäÄ_êG$âìõy†~ € ³=c™m1÷ܲjT¹'Õ+¡É †]R›ŸD¯s³oHOXÊ'PÓÕžD¸&tC®?.Ž–-Ã/)‡}ëáŠó'ý“¯A½µ˜²‘Q»X+ýàžÎ6d@ÞDCÒµ%ɇÆ&[cHF4†5Hu¶ÛãàÉi«â%0ÓŠº•ìH4n¢Û©S’•‘j–¼€)v‰@N)m$ý‘MI=r»ÔÓ$õ‘„ä±ûÚ¡•×ËJò+œŽ­ûø/¬ùå'~õœNý’”PàuC'Ÿó5}ázÄ;_E7\Æcµ—:ºÎãç2bõ\*:$&åŠkc…gž¯µ$æ9ºN ª,%Ñ÷뵿?§ÒN¹µâi¤ÓXTT¼‘hmÏSÙÐc°^DqÿˆsÕå®7pܵ8‡Z‡1ÁÅØiàýª-)>¯~5ÓÎñÞ¼c¤Ã‚Tçïðü°ÙˆLÜvö!ûØh©ð§/Ÿ[¼G®C¥ãFüÛ\Vœ‚óã0ÛC¾›#°/LÃ+&2¿Ý/‘DD­+µ‘ޏ¡[„ϸ¥}ÀmòEøg)Îgüûµ`ÜmÖ4 cjex é\¼îú”N~¾Á([~{¤ÿú‹ÖWÃà×Xø>ÂìÍõ£rõ¿¾zcó) $ŽxMµJ=–=…¹Þ@mJFårW«˜z+$]͈î·Áð ˆÈ-®À˜ñ3ƒ’$*¡nóß0£. "¯,Ù’àÖÖ Tà ÔÜiR§Mï/¨0ùù†¦@}A{M‰ðÿb㢂ýV|¨÷ÌÅ’ù³gÆ2´æüu)ôËè\Ìwgk­Û…RíäçVfl …eç!•ªÖI‚ €‹±3®ekUK » É/ ÁØoEÒS/õ5+Ò6*ºâl,ÈHH’ @€ÖÔ*åað‡N×úe=aѦTª¤â$À3LÀÂ7íÈ[‰‰%*í®'¶ÇÚ•<ò‚u/†á’NÈk–¤*¯WZ}•½‡ Íõ]6-R©jg¼+rå+ @‰¼}Iâ¡$Cu0Yåd`/š©Ÿrý+p#[˜?ؽíž6³scK Póc§»ú£»O·&ÿ$xQ€Ø¬ ²Ý½µ|òHÆŒ¨´‘ž°bò™lÖ”™¹â™!ú4âáD'¢³(¨äùè»öj5Õ=˜ ®ð½ òx‘° Í]ÛûLçó®ßå*Ïﺷ‘54^ýªÖ6Ü‘-æÖ³£áR,šÛ9ìÚÓÙò½P`Ö‹óæD%í"PÜ™&Ȭ&Z4·éÛâ{ÞÍ=„þû¢«¡qpCØùôòá—!–¹ÙŽŸ8_8»n]ç¯f*~êø‘y×Ó‡ÖVT'‘…â „®C8ÉÛc@P<@â:Œ¤†[±¯kü0“;oD ¼æäã»7ÜËFýoï¬âsBѽ—£ •« ¦`:Å—TAêMãSR%*[F^@ÄÅe®îÏØz[âà‚:›ÉXÉÂ{1ìÖ«UV±\+ác/ûÙ€¨î7ïh3ßZ&Ýû‚iç«IŠ ¹å•¢uyÂ:FLÙ¤ˆÉ—ñ¹>%…BÕ©T.X; bdlN'¥2%i‡€€=껪>µ´Ž¢B&5©‹—±o0Hâ!#u©lQƒu+,ÃbdÿäXué·$=ÓÅšM‹À‡’‰ìZÒ]ŽqRESû’ôüÅscÍоîd¾›Ø¸YžÅÏ=±ûÔ‹µÒÉ¿ Þ K!å–nšéôPàøyt?ciø@IRPƒ•nÊ5¤D°§ý¦ŽØç700PØ´:³/•JI](NÁ©Ù::ÒŽÖ„T™®iÒM¤õ”WÀûU¨“ùø'ÍÍ™´¾’rîîì4{ÆX~ë›}ú¹©žt˜ÚÆðZXõ••åÝÝs÷ù‰3'j6ÍŠGÞ£–XZEx.*ò;qC¿— î.º€+2i‹þ*aDÿÇ7¦m Ê[2¶3gÆ$ùxESŸeS“Ž/dÚ¤ÓŒ/@ôöxf°$¼or°Ñ©ŽeíIN\–è‚ÉÕ7$^Sò_>ºé!ßß‚~´ Èxõ §Q¹’ §c5jKJò,%F[oªl"äK«¤ê$Ãp©" ¨h‰–͈¤2ïêyº©AƒöɾCFRµ£2’¨~½æ’¨ÈmîeêÁ¥~%ÏPã¨.Ij”zĸËÔÚƒ.õ¥3ƒ%$ Ø”P—lE Šñ![ ]“}…ò´!y *”¤!{r¸ë ,QPD”äe|ZÁ CÀN ÐD DÚ•JÙÆ59ÀDmÓÒ8dŸ!iÇrTÀŠ-ÍоlÁ„¤4íUÏÚª4]`lcH„²ÄæhÜ¿¤%꣤;uãu3“ “ (IMMÀM D ì[ïo—4çQ6ü‡$äÉ$äF^§¤LB«àÔ«›í¢9ŒÅ.ÎY†zZz*žóà‹¡³ O€kܼé`g+—.™Ám½ÁQÜ5í;[>y¾æu¨Yõ±íê€#=<œïÎîL-îš6kaºL!l«æœJÚÇïZ$ c¥Àié¹Ò ƒ¬›o¸Í¦Џ‰Ôú]‡sèÌFÖ´_^µãŒ“-F¤òMEÅrþ6e2AÄŽk$×õî¥Ù ¬¾up0 ë˜v–ã(6Ëî=…ÑÜ:Ô°$eÓ›z{{[Òfüž ¬v3OXÁsÂãÕ\æÐˆ)6·4­•ëœNÿÝÆ‰xË3nø`øõô4Š–3½öfœôs¨£MÝÆÃ‰ìÚò'M8܃t{±È µ‹[rùݤüÜ[ζîî6?¹Å´çg³)?52lß›jW·S©øn¦TMV'Šƒƒö]oè—CdF 4\¯7?§úlº&' K³¥¡[} :ælàíX^å\µ´Ö muœ—SåÊž–‹åS‹Y[úúL®Rio•êlf’qÌЯÔé»Ùb5U B÷Øù y÷œû~¹›V¶uj'Ìã¶ýO›w­ åº õ ͽ¥õô˜|ÞË®&å6Ïq¶Qëªj.\æ•Ã,keÉ+…£[zÍôÓŽ¾{øäùÂÅm‹qÉY¾Ü´.Ë´gí3™ä™8Ãaýy¤ŠÕ4qU8 º"ÕBÍ›´~Oçzýн›£óMN„m;Ö9O_>3õ âÂÒåÎÎöñ…Œç·LŒÚrÕgÜQ{ƪäȹ Õ9—F¶îfÿ(æÑê–Rº0y…:»M&_I]®Ž•Ο·Ž5bçE\¯ ùøî[Cßù.*Sð¿ÌE˜}Ú‹9ó,Cm©,‰¹¿X)[æ\L¶Œ¶8ÿBàDÒ1øW&kRIL¤–dˆK2"•#Id$é-…T§Ä°¿Œª“ÿ`Ñ«#ãt©KÉ‹•ú°¯VR½*ŸCÀBà¥õ0µ/õ/1óRë’=ŠÊË;•ú©?…*ùÕgõñRÙrøD%BB#Û 1ÿ’T äðZYu.]³ ŒïtAõUÀGýÔ5yÊÒwÑO}Òx•²"©3%Ôy“=‹Oûü´à-›&š:ý8GtMñBÈóV"˜ü?<£üÄî“ÇTO’ $XRø Ðɦäz·"w®JGà5× 8Îw#Ã|?¼áƒlÔKád¯fPŽ3釩—ÛצþçöÀû ÈI®J*rÝÉn\#Ù“CîwäBóðw¡ã± Qc¢gz+¹0K—6”±´ëšZÛúç;ÃàÇ 4Ü0ó{ÝɈþ;Çß½d‰yºM7ÿlpÃx³“úê½Ú;rnü/ê¹7tä6¿à¤ý»qpóÕ³¸Nòà¿Ò?:všw=8€z f^¼èA2@„ ·ÄV ©ª{Ô›ü@ÑqÞ—õñÝ0]™¬f[ˆÂÌ.¤3Ä6RŒ£öTËLáKC(“,ìlT§ §¼¨gÕUÜ«Òy©Éfþ¾‡µ ð1ëÅÍV‹‚唟J½<¹6õ§ÛBçsG¦Žp£é;¡‚n1OkªúœÐ]éä+SU'd=¢ã¥°¥êÉ .lݰä׺rì¾@PWnêÛãÿ0¯ê£ aýLó2}"U5Ï‘'Ê“›ƒ `z´of-~œ5ù>7° ,^Õñ¬åŽ=¨šÐñ¼ððöµ­Ÿ4þÉáñ~ên*IÕ39œÉ<^výÊV˧:YõZJÎtÁK…¨]zaWÎ÷¿ÞÕbþýHAU™3㜺X}ÄþlŸ$°¬gl7A¸'û.v´çŒWÁk\ð–tÅ­Vr­ÓЄþR™JØz6öËàöõ-¿yätìwmš“ÇôüZý+wÚ÷ÞéæÚˆã9eJ KÜ=þBí|C±EÛ¤½êä“ÿü®ÕÀ‚ÍÖú¸÷}mß„Ù{tÚô Ý]óUó$%æ¾T†n¼„E|©LÉÖB«Ö,÷¬W¬i®‹Ñ×uvO1QU’͇@ˆ˜|%åÂ@\€¥à¡à„R• $D’©+‰‰·À”BÖ(; Id,.I‰Â%ä˜Uo-Š:]œ5Ð"†_y}ÞT}—$B’‚ÚúÔ–¤#jkýÊŒ `(#rÅ ‘Ê—$¢Ež|ÙtPÐïšç,yþ’70••:– ÐåáJö’ HŠ£¶%]ÑØÕ–S;QÒPQªky*«±k|ªó¹—¤ŽåšGv¶©íï ÊÔìîû?¶»_h>I  ,–5ÕŠš^hDY^;é¯;z[ïͺáßçûûÙd£P[´Ê8m¬'Pl{àVwn]›ÿcg§÷“íš›¶ªê[²dÉôÅÊw;nðc,©s ÆVm©9hã\âÛ÷–òÆÚFç»Y £}-ïÍ÷æÿý®±é?~rbñû¨gщ¾ð|²Zl€”þø,õ;AXñ‡©Ô9x¤µ3c«ß«Â'[Â0·Š§Ÿ‹<¢è¦'×!°š£~å ³Éÿ:c¹ÛÝRjxŽ\èä¤ôuëÌŸ@ÆÈ?¾ ÜŒèz#9(Qa”¼½n+ê[…&墻|Ç\µ yÈ{˜÷a Ï*–G$Cøx8ØIôzåÞ‰IŒç:ËÊFV vFåozMŽ«wŸ9NËbPì ä–¯¤aOþ@ÃJÜì•Eü†nàzKÓ›zýwynõgˆ¼Fb@¤Óʼ¾Ÿl‡|ëÖÞ–ß(ü%“¼éãôÝPÑv°zÞOŸêøÌ2+f1t÷eJ¾]Û´æe³ÓO÷§àf²2Ÿì@uáè¡R]–%™Ò·†Nå*ßFÍ8@¨·C [¯ ޹‚5äMŒg×Öu¹7}¦øT³@h°±ê¶¥2F‡Nkù£ÿ‹Óªí¦~8À™³Å©ë Æ™J›D)¹¤&gm0|LRÕHzÂTV=41}élvÔ/KBË;¤l®j%é{NPò™Žst|ܶèNÓ”)äz*÷Ô÷nÖ°|­ó×ôeðq]{ÐÂb_î…oÅïÏîÞÙ…EÅ/A¬÷I2ñÌÁI³çÈ´e˜Åëdÿ2 A@ ¸Ô£$i°`"XiÀ$ÒˆI€ˆ‚^‰—”dIvä•TCF×R½’$@æ’uF|yÄzÃÒ‰fÜÆ^N¸“û«xvŸæHéeâa¼D¿^5 ”:üj§‘³­]™t¸ Båg¸°È.°÷§¼ì…ŽÑ"3Üõ ¶Ù,Iþ;ÿ›\xfWv2âŽârŸ×g~â"1Gœiºzšö(LU˺nðAzý(0á ÖŽ"˜¦“õcyã{MVh¾oYgOKÆœ/|±@MÓ "Of@KŸ?Ü{Y§Š gâmþ~>B›É4‡ÒDab¬Ÿ;NwóŠì†TfêGéïñd6.o±ÉÉÓ³ÇyÏ[ÛúrÿÊôŸQ[1µÀb:(êÛ ÈgBßm,l$+Ò™à#äýaêâ€h^’;ç’D±O>iª›{¼¯ÃÛ!%‘„6br´Â·ln5_Ü;níÑæÒa^ÅõH𶳨mºZ_8 ýþæü•ñS䓹èôªOüÓ•­Å øÏñ>õãØ6¤O/›ãHÿØíä„FŒ´˜æ1pœTžªAŬæžT›ÄHK5IkvÍ;©jQN  %ø 8ˆI—ÔA^¥d z&]ö#²#˜èAŠ ÔÀœìvJ5KR‚4TŸÈ!R˜€ÓVÒ1é­-0öVª@ý€ 1ðs“ˆ¤ bî5Åëñ¸TÉÔ_õ©¤>u •P¿[2)Û' P@ëâHÙÖ­2²]‘Ñ|V4àlMÒID¤‚¥þ àÔþjv0-(Lâ4\i€¦(éJ5jKtS¿ë% Q¿žD«ãçŠÌcŽG·ç=èøQÇyvý࿜²%ÿ$H(p½°çN1™uo &â­zõô§¸öó%:Œù[%/ÿìÒ¥ÓƒèÀë4=2ÙSÀ\ù'a>Dí=dšSw¨UábûëÇΙ—¹§ùÀÆÞÌyT…ÚéÎ;ÉÎÊSOÎ:®}¸wIËÅáÉÂç›1 õ7ú‰¾µ–Iþo’Ä@4ƒysŠ>pqräèê–ƒ¥”ƒê™‘„""…Ý©ª»•ðp:µ<‰=3^éaÀÇ2ú¦=_ÌÐó†ÇÎ÷¶tO™–Â~Ê>È_QwûÀRÃÚ§†µµ§})Q²u‚É3P +œ&ï½xÙª_5›µüwî¿DW_a\¯BEÒofd¼?ÎñsCã—ø}'Ó£éôÖXå$œ}ûšùfèÒô[àíei¦\1©ÂP Áãý˜ÃÇÏo{Nþ0︧6û‘þ78¼g}·4†%Ë*˜­ïb$›bZ‡TÞ‡ýêÏv­ÏŽçN—žˆSõ +E˜ -´†D¾G°Ý÷O¥ò[Ñœê'OÓC>Ô¯<ßyÚ¬¤?õçv ½¯§PW\'#úØpéU »wÃC­d£ûi\úÐÉQ”¦-XeDÍc(D¢u!©G‰Y–¶¤²ïä£ûŒNŒÀ«Üp‘ѵ<_‰ÙC-—´²y+ß%Ø|ˆùVý­9˜y¶‹:f§+Ù^¨.[oQj"[}KoÖ¬DKÙŽ¨õ:9•{n’rVm×Ô¸¤ca€A H1Hä¡Kम•}‡ªèȧ¬Y ÒË×l\`eÖVšQlÙ’¨\6X»õC’4]—¤FÖN–“WÑÑØP,mù”Ê–h' #Ú©œèÑ‚ëbI\Dﯾ0a¥G÷mΧ×ý)“o9 ÿ#EvîÀ“ï  \?´)|7oÔÄî)Ö’üÞÃ+}ž#æð~mâ\“-š†ÄÅxìZÒb¾Ñ&аÁáy&S™(~«ÞÒjóëbµz™ ð4yÞœæÞ,#÷Ð@ù¥£«œ/•SžÔÖÎ-G™ÍˆàŸX¶6løìô>îÅ24Ü»á$D% µùV$N€ýMaø"Vzƒ,d« _}#S½vw-[f–ÍHxhjZ§úŒ›º—µ½u†œ0'Þž¶)3qtjxªoeæùlÆû.îÉÖ¤±ûíÙ!¤†õ…85¬’)®Í9)˜ƒºû]ç2ÑÖ÷º7áýjÎ o믎\͵ŒNF<Ÿz×Ã"®¡Î¢æ<ÅÙòº/1T»EÏ)ëCœùŒñ*µ ×uý„% ¦˜«UÍוÐTR©²Nëç}­ •‹¥7 ºÔÅWî\çÿ:vvêI¾×™Û—`ò÷σ/ù×Wò7¯TŒgT÷G–¬^Ö?páò1îÏ®I|· ØPE.AVŠQ“@ÖoòÉzUñJÕð5¸p6wÑDC›—pN1S-¤+©VÓ8+qäžsŽ‘>‰]Ì—QÀßSñ³—‚|ºœóK-¼ûëXôX¿Ãï£MÑmÐn¾+ Zþr¥)\äl}n{õï~èS¡Ã!†íOÜg©Üüî/MÀ­qM±ÃR̤¡¡¡Éüªüײìü0_ŽZëÈÜËß›‰GóÌÔÔì3ªW1ÿ³hV¹›¬=2$6¡ùúèHQϨHj!‰‡lI)ÔÞ À„$*bäu¬–!“ÀŠo1ékˆïñð]­¨s¥,c¯@òE¿m›|ؤöu`oÔ.Íù·ž‹ÇÄs£ß"Õ°eDjïf>Òi©KÉVc°pæbÙÚ~¨ÏR…¨Í†ú$©„¤ õî’Ьc۔ʗT²$ ‘zšì]4WóúÕgGFí)/U£u  H Kêb¢¯ÔД–b˜. #ëžhs ûI‹Vt¥¤§ùóŸúåM§ˆõ¥9M¾&H(Cl–£Ä’Þ¤¨½B…ì¦ØË»U@¥àpIñÝÌċǎ›)Ü<¦r¥loÙx?NƲŒÄm:,/Î=¹lvFØýäÕ&6/M]IïȺ€š·¦†ÍtOGWé¥#çæ«ˆYï ݽY'lfg\^¿:ó™\Ê“„ðäÕÃÜÄ‚é¼ÛO•žBBx€~eîM}R{«Õ,¼g,põV¤/o£®ëTk5æ‘‘©#Ù–“å´ìÛ§ñŸƒ ð•cu‡³KÁ8í ööšƒ&wEùŸƒÛE܆þ8f5ê¸NäÍW1ÑŽ €Ñ»&ÑY8ã k–ü¥¢¢kîf<¹†6â.dÍ>¼˜ìgÞ*8,LܳóæË:{L1æøƒ$ô}°¹1ˆÌªs…;þJ®pýA[¶®ßq»cTÞºöé_Ü´–V~ŽÂëÄð*~†>Å(OªœÈ»XÈ=®¼7I*!Р٭`ŠR.û© IZ ÏUº'U© â€Hš “|ź¨T#·…á—Ç*¹Ã•Ê‘À‡b‰WÖà¦xÓOì1òo»·Í¼×Ró®G:ÍŽ¾œ(R•Ò\P?ÅFD½mܾ®¤²ªCu))z hÛÚœùö‡:ÌãoíÄî¢Å.·òJ%СÈå"DA×o•‘EÞ¸.Z:ÍØ¥@õU’ I}ÀPR2%çëOÐG¡±@œ”€ˆ¨ñ·!}QRœѺ $Iˆ‚ªM²­#óÏú_ó,“”P ¡À-£F›Oa—ðÛ'ÏL<‹/yml>Ÿ¥ƒgK„d5¿Ãý®Iº—V™²³zy„M@&ë¹.›¼Ý¸"Äðx ÃÃGúm»Z¦æ%?ãœååàâìÎ[ÏÀš°ço]Ó¥JQÏuû}†Ùâ »ÏK¬g‘ÌÀLÑþMoZZÀ̲—xÙôÔ—d©'xîÜôè~[f¸à/=‹bÿ ÜF¡8.9»—ö²@IDAT}UǪa5€ Á¦Ò*,]Ð­ÓÆpßðåñóü~E¤Mq½| ®³K;Ýü‰.±ü „¯À L{c YÔ3ò1»š§ ï»­Ç‘~S&€\W[¡³¿âzO"×­¶®ò ßñŸâý3*uÃw¿ƒÈk¸ÙphRM¹zꃆò€õ%¬«ßÆ«å±EAz€—&y̲g× ?Ï4ºštè2å†/r¸òŸR®÷‹G rì¼õ5ù]Í«o¦Pœjù<ùÿ„šbað.:[ñ¬- UE¤!®HÅ™-H6k¸‘GëÁL’͈è r` F4'>==È!ØW¹;4“gÎÝÚWÊì¬ú¥Ýk]=3@‹øÛΛy^DÙ硎>[ÎLdAÒ\¹áÔˆØn¸ªÆ‚¿»»'Ï“ûYPÖÛÅDåT] BÁûÄËè\޹R§ë¤^ 1Ér«+©…ì:t²/é…€†\ßzã“:’âs\AÇÊe¥%’˜ä³«#!P{jg º¤ *E˜ë50Ù÷ln1kWf­º‘z/ª (¼ÒÉ6Á?úÔÏRl_ô·m]‹À%î‘þ¢H’bÔ\ìÖú¦~É#—ÊäÁÄ«¡£h"4IU$ñ˜Æ¨^±$õè„D`D†îÊ+ûÑ[tÖu©{åi§ˆDϤͤr&ã|©r 0¾`F¾Ç*çg>ñ±•ÿâƒÿgbòJÏ‘¤þ7Æz~´p”Ѳ¡ÌOgÏNŸß´"ó¥t6õ6Ö ä5lƬ -¾çô»"Ëv?á­Ng6äÜÔ.Ô¥Pg‰:MvGQ)=Ö>a¦£8…|!?áæ g8²Ð&‡ºÑüÄ ôN?—åP¢t‚;–ùžŸãöûÕßoŠV¼*M55Ÿ(&Wºàw•òŒyz¾mMª2½ o"÷02dâМ…Ú‹ô,í§ÚVgžO§RßÃsP‰lyõƒëÖ™/.TÃê0ã«ÐÊÛAå¶ NûGœ«êW·QoqàZÑâAS®iÅ•0åL¡[sGÌ»¦#yoUG¶rë™àÉýÌD€YjÎE}a}{(Iö"ŸÍ¡C¦¼qUêE/mcÎN×5ã‡|¯mçJ3Ù¿Pu ©ç&N•(A¼sÚ®}åbP÷v¥Cu½”yþœX8¡ ÃõŒónò]äú<@_vŠOµ•Ì3/ZÆ:²ÿs[<9::¶1›ýF:-•Kû®G­ÑKÛ‚Öïq­ `ÆGŠG!]K¸ Yrþ¤Èª‡‚Sž¡ÿ{yŽ— @+¦rÛ1mXzîÆÜúˆô,.Ø_ÂÊ4JOˆOÍòôèÖœùÊpÑ®a }à¿—º Æ` > z{rô¤áÑÌkoA߯ýó ù õ'ü ¦‹·ïå)¼^MÙSvÙ$؈ç0ÃëpE+÷°º®$ÆX€¥Ó,ð 7·¤bÈ.NH$-a2Yµ%ÙAt`§!ÉÈÊ¥¨g$$es®{²½J–$"lÍ<2Vª@q <®MªW.‡ú $IQÉ p˜±@äg R9“tC’ It”TLª\r],ú)âŽ(¡‘f†ê”}IÎÚÔ¤$6kCMUÍ3—¦+VÒ¡ë5É ê]€¥ƒôAªimo¦ùñpºãE¤`o&ÿ$H(I’üÌØ#‘ÈÛö"„“x£Ø‡ Sìi<í!^é3l2›Yü#676o"E#]mÐsvC,…`å2Q½`S»Xθƒœb5€åo[?\œÎ^bÏFɳ1á5‹ÈVéõKM)ËñßM„5ÖþÊ]ˆ‡Q]€ÉÙm"$C†ÀÝÞÛf–›¶›lá”Ñ{Mëõ<]KoÔçö™tá8½/%ª:˜pœÍEm,T3ÑàÐðˆVà =o+»Òúúsã9óÌÔ¯îßèÓ۵˸—ÜŒ¯èMŒ—–«8 ¹ W“É-QÀEôËëÜȹë>6"~µ“.…œˆDI¬ÿ5æpÌ7pN`RZÄ® 6UMõt:$&:šáTµ®­dÜ3Õfž„-žW“[àÕIsâ=øìYu£sô÷÷ážþððÙ«žš˜c©ÁÁüòÔTºˆ ZÊÕ$©†D¾‹Ig¤Mâ»ï"ÆÉòeSÖ9§Y‹˜ÃÖž%ªYѦ“z%àØÏZðÛ¥Rá ýCæ×íÜWÀÒ¼¹Ü•i+H¢4oRå“^à>ML7ÔÆà¢éÎm0EIqç¯c\ÀÞà^¬z¶@X»Vò¹¿ê¥¾Éš?ï¹(ëbÓ+@>þÑͰiþ3:Ôv”`O½ˆ…̲@„ ¹¥¥yID”äÖVȼµ+1ÎRYH‘MÐŽÊÄ`ë*&ÍžâW'ú=ÉI^ê\å“w-ôË–âò¥ªYµ,e½§Ó¬_]“xÔU«Ôîí’´Éki¸Ú@Ä5xê’šØK'‹<)0!*Œ1¾4>ÑS Aè €"ÀÖF$õ< ¥ÌwßgÊR©ÔÞêàEÒT«Doéë¹(Qµ•¸è·ÔØT·þÎãžwõ² žÃÒÔõÏ>¹{óþÝ}|¯-”ü“P ¡@Ø5j»uTNàN”‚âEîÍ;…››7“ÉŒÀ5pÒH#6– ÖÙ–ÎaæîÖø|ÜlØYÊë¹ñѳ±6—–,;s۬߳ÇT6ôx£M7%›)̇©`m¥ éËìù½ôíûYδœwÃÊv›‡éea¯ç5“E…£$é”] ñLÕeRÊ`\^cÄÆÈ÷ìåËö$w#\Ê–ÎeƒÜ^äòÂ(E¨îôQ~ÇÒ¥fN,cârõÞÐOÍx›Áû•ãì»l‘péÕ…ÎQSŠÑI²¹‚”w…÷b˜Zûj  ½SÿÇɽlZ±Ât.tÿÈÛÇ™¿>cª‘¡ùԲ˅ÿÿé‚Ñ™Íûä“jsZÌö-Ib8²†÷‘õÁy8¯ ™`ÝÀø:C¤Y½¨÷w†&þ;t§º600 µ²sVYvAT›W™¯Ák'$@[;8™—Íq¶@°çÛÏaؼµ~[ww»›.<ÂWR†}$„£ž™:ÃïØ}k^ýM~ÄlLMJ\Ç-¹Ü…ÒjnŸ.†f/±>j±

¯dڪ#«äØG¢ÞW9øýs“ŸøkÀG”¶lÓVR^ú›Ãú§Ã¦¨Ô‰bÿc[äldþ>RÎŽm ‚àA:a×#¢ÏC™æé›q½;·¯ˆÄÍ·}'–ûï“Ø£g –É]Gà=ÙèO.feì< à°Aþ`¢ÄH«ŒTƒt/#sf¼e”/`x-ÃhÌËP»Ð,[þ+.ƒ¡:¿¥º%[ E÷#íÖ¨ZoÍ<æ>}WŸäK±Kž90‰«]ÜìÂôV‰–¢¡Í ­ô[jhRÍ]äºX¶32à DD¬Q-ÒüÕ¨èjGî~Xä™L´å˜ i‰T´Œyáåi öÛå)ëý&_øKÚü´m8ù'¡@B( hÙ‰Ù°Ã ŠØc%´F£ Ö¯€/ð¡ÈfÏñŽ×€z!>Qqhõá! GÂu%‚UÊí£Gâ„YÎ?_t^fZ¹áNJjéÑß­NÏ9™&B3½ÞIÝW6$„ á¶Ý+¯ ŒŸ;ýRë²l:|˜kÄm*Æ Wñ~u¦ï†Òk-^ôË™=^˜zŒüQDDÛè:©»PÃÚ[YpO*t‰~Ž^¼<÷xÎ ;wNŸÃ3Z´¬¡Û×¾À~ÈØÔtócмÐÍßÕað83 ÇVÅ&ºŸaÈnå·á’>:ß|'^¯5@LÞÑh’j̵ûñ£¿ö‹[²v®6] R„JçéÂyį` %¡T$ád®&X¤8:šŽM“,çqcÀºù$µÈË—[—µVƒuUÇ݉!û²ß ÇvV§.ˆF—š$ k`Ïâ»ë=Ú¦˜,a8Lñ!© 7’b§|“µädëå)7¬Eô A&)çÍSÀ @6­lëN¥ƒGi'&Ú Pò ݯ¦oÒõîÜÌ{°soÜÈ÷Ï~?#¥Ò’ëüFæÿŠkÔ8uLößÄYLnEéLÅõ¿A¿cä…ÖQÉ[;W·÷Ñ-+5÷ê]¬¿w3.­y„Í7KáäÁ&kù•n©¤rϦû}JæNsB/fUí4Äø.ëL>Ê–I–'E6—ôC ­€ƒT¦d» w1Ô2––´D̲NæuÍCr"ÆXåd’A"ΰ±1$Åzï[:MÜšž¯'ðQª“è O^ŠùñÌÁI$IµH碓–*ÙÆH½Ê[^“ ©Œ$J28Ÿ|HMK´pCš}ñ ¸p]"È:Sõ 0Ê®¤kµòž=4i%Q÷mɧiö§*Û7ýµ1'Ð/LRB;“€È+ü-N¼wR±‰­×WÅžßâ Ü‘ñbYgs q0CœUμ$‰ë>ÏáÝç9q¾±Ãn9ÁÑTÑúÌa•¹µ‰C(õ|´šß†ä¸n˜vú8ì쟫é/ƒM=æ%Ìu¨Ø g^+Œûb7ÜÞ¾Ö<ÅP¤3k`¥ûÊA¨y~tdü,ùÄÒŦŠë¾„GøctruDí·¬þÎe]=®SE÷•SUk´®Ç¯é#Ã÷Úû•ø =®øGÆ”‹›5±c½e7ܰŸ½üÝÛB7¢£’S¶uY›éžï©,*ïm{ ¬vR4#¶YKšeyÕÆÇŒQ?bûBüë‚KíÕªç'y¦¾Èþ3ÿKU·\éo6Q#KZ‰ð¼õ0:[äUgcOËÚÉKÎãÜý„ËDÿv—ó]’à™ÄOp¸Nø%¢˜‘ȤcÆþ+ækç+'7M0ˆ¾D!YÞÜèxl‹r}Ü·Òýz*~Xïß+Þ§í™rø _Z³ÆLW'‚·0öõäÕ‚qÙ ½¯\™6ršrS}±šù'jAœ{ÿº¿ÿîO=„[ó+? ±6Ë%¬l0Öb÷¡Óv¹kÖZ'Øu3VÊ¡“z1º«0"Ñ1€lVàBWjXRÉ’ZÐt æ„¡{Ê£2ªN’%1ÝCe+y7ñ*Ö*BzíÖu÷ý5̨ÍK±‹Jâïú‚Ov_šúÌ׋æÔ5ò-(öjþ”<^ÄÞÎjVÑsYt‚¬‡! ‚HÁî3¹–çio÷ƒ¶­0o¢h…Ñþ÷Ùd®Ë0<—+ W‹™}ȨwÑAkÈÙØQgsÊ”·³Ùg¨{-SM>'ÄÞþË—'Îñ=NzÒXÕõ\3{ ŠA…V®k伞—'fÏqf|”Wã׆n¦:t"65OeǸ££¸¸¶_íÜL^-<Íh ÖmzÿUí²ëY+ôØþ¢ ŸZÂÁË™kôŠEK6Åz‰­‹aOñjKªa Í.^m³IW3-ü¶k—I]:{Ô¯JÂaÞÍ_MY¯ÍJ1ÃYŸ&Í—Žœž?»YçìsËD}¿ÄEiI6©‡·7ÀUëü .(ûŠr¹y϶:­#Kº$^¿f?f˼Ê_CÓ¾ñ@ÄÈ »½þgS‚SÈ_äÉ¥h¬|ÒVÎxÞÉÃÄûÕL ¯Ð9â{Ù—†®CA’–ªïì§wyP‘L2uøÐ}½ò]LE«oMG‚°ú=“ÊEo]‚ù“>3tŸÎÐÔ¢ [×êõ×$£Ù’ï „NÖbö*œ ìè舶¯‰-xݸy“&þA-r,ĦMŽŸNÜ!P_|{ðwRA‰ïãdƒZ —ø<ô9×JøTìÇøû~Óéj.ݰ†Á÷Hv[N$aMï+Ï‚äÉ=V­8¿DYI –ò7w ø qžôB÷Êç¦þÃ˧'sߪ\á/XïÒܼóªæFà–œÈwßf `‡(xÆ$Ê;H‹bë)ÖpYA«~å«Tt›QýafM/k¿«’qeØN³9¨YÀ$í+çGÇû)wKšo‰Dv¸iùA¹"åýpÁ2¸—ÓU«êsn¨[{š ̺ÜERôèGª–Y–w¬Q˜a1Ár­«z + lÀèO›T߻鰑ÍÅ/&ÙM;0_…÷ø"ß;éÆw±Ü»ÈjÓ¤Í «óySN}ä‰_=bU>õÑ-'8/ýEW•(czñŽõöûÛÍßXIH @LÚDWIHdÃÑ QÄxÑW´T9Ù}X—ÅRcãÆcVJ¥ñËM²œHj¢²Ó#>.zÑ Ò4lÕä”Ôã¬Te-°ä™û?ð¹ÈI½¨ñ$™ ¼Ú@]ÉE Q Œ–¤È¤}m·»ý‘9æ_ìb“¦L3}i¡µÙ4©:%+ô¸¾‘€·,\ó*ʸH@ÔNàù_‡4§n´M½—Èî»lÇÞ· Le©»‰æ2<—"¬¤+¿¤26—ôI*[’@Ém¯¼‹IòÑNôty*“û^Åb‘÷1Ù‘Èë˜ly ñ@S o»°}ó½7Úÿ¤\B×’Õ\€µ m“Ä&Ãò`¼ë=i¯ø>¯E Hlâ ºéi£ úœŽ°³Å×çêŽÈ¼M:㤦P‡€Iv" #U7ËÄ*7U’(>¾~e|’lsjLy“ÍÙqÝÅ¥ë#Œ@'‚aóŠÿEŒÏëÑ•C‚šùfOqu¯·Éjª8ˆ„íEø”ɘ2çFî­ã©døÔݾ•ç&4¬¸~ÅTuíËú¥`@›Ïwæœü}]»¶W&ÇtØv€ƒ­¿î£ÍZ€ponñ«¢·ÅL5+úšß;ùq˰Ft¤)Á(’ò5Ís½ƒÁ&·ù»Î:7ë„5¢Rbwˆ½ˆí Œz¦Úãpä”*vüQ¹NoN _´öeQ@?¶¶2Ñë:Áù!±yŒõúæ[ÄÎkݽAª°/Ê[φ—‰©X?°R‹*†0V:I§ký^\Ñ G\}ð|á|¦|P!êе…É!Ê\ð~†ô6”îÊØáéÜ2UÒ¨[šš.B×Ó’¤¸3üäëS;6 ÈØØ=ÝiËØ.‡a•½‚~ P@¬Ç†`5ЖQ`(ð˜`1Ãz’R Rœ1ÎRÁÒi|L±Œ¢¥64ÊuyƒRð¼jƒÿŸû±Ýý:²i›–~ÜS±3©žñæ> žJ¯w6±ùàR0ö”g6_³/¼f- ä\×m;$ÅZ)”ŒÎëãRœ©³I K*mçñBv ×ÅRS ÈóØÔÈY€"©KÅí¿åµL@Foš<—]"Èáþã j`Þú æüÍî]×\xš!¹—Pൠ€NÔpe«™%!&qê^ðÄ^O‚ƒ„ip›1¨ ÍîÛfl=LA|ßà&Q!]°ÁÝsnâJÚS.Žée÷q–XjËÜ`{×3¶W+eºâ⟠]‘„¤yŽfý•;^jè'O,P›WÞq_JWrGž‚ÎË³à‡‚âqðž‘4ꢘ©%Ì(žÍö&ö,7"˜„…Ù÷›ÙäÁ\4ÝûQ I#KšæY\«‹Ë=444Y­„ w&ïBÍŸnTÕ¾{E.¿…â$%‹küUÌòžæâgxíNüýEö•ɤºbëcÞ¹AKGÜsgZ„²¦ÖýÈ:8£ÉñÌ$Aˆ«Ãö˜Ð©äƒ ˆB3F_ÙÆõKk¢Ð|ÚÊþ# ,}¸4º ³/_¾<良àäþÑoéH'màR†??VIñRj\è!Žn(W¯EeM,lÃÜ0+Üwóés¬?ã^€S©F¤×.µÓÃ__Θ ûõÜ>+»åkQ±7ÈâÎMw1¿—ž¹GN »{§Nœlú©_:Ï‘¾ó"„¿å§Nõ6ø,¡ËÉäÕ„MËRƬ“È›J¢…h¢(²™‘ÄBªjòD¦³ I4dÔßÕ‰­äâ8M>IB¤Þ¦ç¢¤ß¢·ž™’&ŠÊ ¼ ̬(ñî€Kóþÿ´Œ›’”PàŽ¢è_º…×Z =¼€¸¬ÌZ ¯™®CÇ™ý.Li©kVÙ5 [1&Ø « 6š ¦òAîÆ­g ¶÷àÚµÖ ±i?šõñ•ºç· Ýæ'Ät:~㿎ŽyÞôæ/ñbÚÕjˆ ï8ÏõO"1¹. 1[媣l^'c6ýÙ|ö‹ž&Ø!â‚ÔDÌóïÞô/Dsöö-þ™sÒæ›ÛßÜtG®QA%U8Àiìx6Cdm˜ã³Åç[@á?Üׇ—²Hr6çb¿hMˆ§Ñbk[lÌÎ]…ãjÖ†¶Ú[Ö¤Š^ˆPuAWfBdÂÞÍþlü‚â ¥c×J©+R¹ì'jL[c öŠSMõ2lŒ¼£×]Ú8½Â1ŒžÞ€uc‰Ø>Ð]¸þ¹›ÏOµ§Ü`5efyÁÝ–¡ìR’ÈuÔOHßP'‹™{ŒEZb¬"ç0`<õ¿Ù{踮óÎó-µc'‚X¸C$%j—W9v”Ävœ­“tGJÒ¶³Lì8énçtrfr:s&iNgº§gNŽÝ‰ãÎ:N'޳HÝIlj—ȱ-/’mIÔB‘E‚;‚b)ÔþÞüþ·ð  ªPÉÒ»XUïÝõ»oùþßÚ`=H‰â2J­šìz?ÓùÎË|2­¯Åõ­Ã‘Xö7àš}XoœfÎ7ÚÄfÚC5ûìö^™é=µˆdœHI€ ™ó(œ®"Z)Ê•œŸV>Ê"iº~‹–•²‰€C¼S,1Ƚ]\¿t,ÆYæV2Í’ƒµ’ Ãdßw  ÓÔkW2wš¿oÞ*’¬\t¡pøE.–Bì¥aæQOcê3ê:ºaqáš‹h"Úô£miH´cŽ•@±& ¢ÐÆ2ÅZX$á#ÀC>8ÒBI“¤,ó%2i@‹%á¢öB=A™ge£{Ù7DÚ¨+d³—æÚí%èçw]óÂB Üd 8Ä:Å §±$’*’Ö*žJëžs’I"[§>w é‹xà4|Šyí¼œ"̯^?R³ v¬dtyŒGð ÜÈõžgÌÍ¿¿xµõn€UrýUÝÜÒLA#1 hd¤ ¢q:7žóÙ³<ÒŠÞ1Ë$ALBÝÂ~Žvó¹……G‚I;ǽÄ4M’¯ºƒˆIñíç£]Ù Ô¹®ŸÁ˜°|­IqÖ ØÄ—j¬ykÐøúœ2š£bîx· Ç¦Xv Ê'òÉ»ýv«—º —ÖÌìvìèèÚ·3ù÷nO¼oˆyÁ•±’tbø¸6œ/Z’×3«Y®#®ŠÁêŽ „4²ÁyÇqßD^î´êœ@§](ô‘X³3¯Úè'J»ø¬gþ)¶äN[n„:k4“¢—™gàæ—`n\1ô[)‰¬—”5ÔÚ`µ(aQÍ}pK.ºŽ :Ré7ø¢Lu ˆºÏõ»´'õöÅñ PÕ; ÕÔ§´‹ù|þ«<[/ðLk¤‘å9ñÕñ)kŒŽÕkjÜZ•j´VÅZÇ>õïvtA‘÷ðÌŒxÈ,GEß‹>@„(+¦x†W¾r‚–S´ü=ÄøÊ4«³,™À dÌà O#u—$^r”–?ˆúY¨ï¿£Õø°q›.å¦öŽ˜UÚV݉W².@i©¾oLqü ׋®x qñKrÓè†mz.¢‰"_½ù¶VC{åïö–¹h]ŽBVND(s+i4dÖv~2oL³ä;¢¨W³Kay@”ˆ0Ã~ˆþ"2éÚÅÞíx¦ÑÊùî?>tðš59M/6¬Rà:P ñ£<Þq®ÿâåñc”}¹QåÉHzO}€ƒyq,ŸXþF*àF¥\1Å» [®xÝ~tkÛ`ÞüË]—¿]¸°x±P(~Š˜Ùš/¼'w1Ï‘ÜÛµ‡:Ò17Sœ]½½†1»¦wH£Á0!ôŸˆ5k[ng“G8f 6_<ë$¡QM“„å~}ûX¡0‚+œP—+Ôÿ699™),–^]ˆ-âR«[æÐz=wîÜ1¿2£–`‡ê0K˳²ãòáwÚ/×¾QßÎLX犾÷qHöOü5ÒRmó\ç—ò³©Ÿ°†˜Ïf¯K[aU^î—lÏ>„®ÿ ¹öëón^M£\® l47Ýh®2å¬)`XÝߪß5ûÄ3Mq°jžS{„íxÅ×Þ÷9Ýj*ºLÛÚ×òLÄÃù|}ÆÁ¶®˜kßI? €±¦pœ¡|~þe´·5u¯Mn.i•"Íú0][f7b^kß—>A"ˆ‰Å€:+Ö­„…Ñ8amaw9SÿùÙ€£Ä×E¹…ê·e=l°ÖêZÄ#ŠÌ÷<× ^´ºKÞ)/•ìÈ·ææš÷w«nßÌwmâæK"~/·7ÊÑ\¦:’¢KÊ®]”ƒsàÔœ[òëà”D c»3{é¹@ÇfYbŠ·Â«/í£"`)Ü®4(b õ¶––åíoí0Œôµ€`Á̧Îü~&8sÝIÏ*M2Üöë1FÐoðÉ Â*̬~ Ašº… mð)F£¹éœ2™ßM²ÂoKÓ)8ùÒèRþ•nùÞ ¸¶IÎæ’)ʼJû¦@­©˜1•“æDwŸ‰P†ÿŽüC¦ØCiXöü·7&­üíTùj0×ð3¤À«¶qÿ¡ÿ3ÒôzÓ%C'±{¸Vè/kW7~%¼¬1IXñª®)~4 p¨û 2Ï¿²<ô—uŸ¼CJz9Õ‡¤Ò±¯iû1¤ÞâÑ×jYõ¢¶üpóÙ‰½½Öïºl¡^M°ÂqkhÈJvø‰·⃠?ùõbWæ3˜ 52ÚP³M»àÅì¸[—ÑXê´”·óò¶¯Í<41r)—Dò#HlÞLu15Š¿ˆ.ê©™´ñã¨+ͬÑ08¤¨2ÃÂ|ËßÉvI«U«œ#ã1Ìs]µÚ5}Œ Ç |Ÿ×¡+áTuÅ¿ Ê© ù£»ú’ECÏÞøßíZjM‹ûw;Ç¥ÍMm?0èÿÙŽ±Ì‘G‰·Â±¦® ãnË-Ý9ô{¹ÝÞÍKŸï8 Ø Ù‹Uà|–`r˜KŒCý–¡Ž¶.·Ó.`¾œAŽ(ÏÏöÜ"m$i/Øä©ñìv¸ó¤‹‘Rú‹GÇ šP}?“[ i¿j=/h®iC×ð#—àÌ´±yqwu Ï@̽ý=#éY=)ËRéªê9¯p[Üqîf[pø^= ü-,ëQ«uá0¯©¹E»ubNÂhAªú ¾rœgZ)¦¤þ<ƒÊ|ú™Äœ•Ê]f*µ5ެɵ¼{»»»gF³i’šÏŒ¶ˆDý÷` ‹¢LœY­bÇ£º›Ö.¶\9†€IÀNB¤š=€>"E„PµÏÖq½cgϦ/íéK|-³ßA]iøVÌ>8ÖW'¦æOs®6]Ö¤‰ó›~À:¤ÍõÞ :ß&óª##Êû!Æ7b4 ‹h@Ò™‚q:W¸VIÙ@J”y[NÐÚ®(¦B„yí KfVŠv%Ÿi@¶¢E‰ÇÈ÷öãV|v÷³O '†ŠüÓ¨N@Pt‹íº·¿õɽ‰q˜wÞP}üz}°Ÿj¬ÜXÌÓþä!$6 ÖT=¶r}ä¡­ü5 ê­ïPÜh5d.%­…4M¢e -ÆÜbyPi¤DëAø0Bõ¯léÒ^uÐBZE/Søè¼œhÕÃ4 Ód²@ncßóðÃÖã=TŸ‰1…ÿ„x•PÀ.úqd\õÍœ4OíG¿©ÕêÚ‹ˆ•pqý÷GÝ— ç{T«HòÊ7ãªîœLxY;Zïf‡×à¨hrjráÒÞþè'"N©°ÿNÞ3¼ô×”vÞ|ˆÄ[¶í²>Y,´>c·MΒâø F‡a¶¶h–¤|~éûñ9ùzˆmë+±™µ ÆšÞ7y€à÷ÒüèUsmêf#ƒ ¾œ”kÒOuÖ+»î¾ºpù|üX±àÎQWޱkdz­ n1z¤c>›^ßpºöˆ¶çœ‡‘9Ékò.jÔ l£ÌŠgÏsþ†½ô ϼD׵ˬÌÜ/%l¯Ôøž¨T¾ñ_ÎNfžÜ=ý˜ãŽs©ÿ(3‡á«yoáHìÿz÷۞úô-–ó(¬ßqûÔÂìH™q ®û,wb¢'ée³C¬õ.„àß â»è¿Ÿþ1¡´¿š,æÎ1Î Ù‹|k ¹+׸1)ªGC¢ùþ?'뛸ß©©€ s7Z,áªMèX&œ$C ÍÔàhì´¿hYsU=ÄÊIÑ ûZ{ï9Çó&šÜee³U —¿¢‘”´~ms.ëò~p ßm—òo#¸Å€ô C(òœâ° ·0]_ÕË+ÿ+ð(~ü¸NÁ^U×!‚‚‰âÆZkî¿êòÜu“FÀ®Ò玻fÒ—ÎÇ”òÎ÷SªÄa^wFç9°3™ú±ãÛ?ˆ€éèè~š`Ô.¾µ­äçúxGGk2r©Æaö㈿ê¼+Þy'Þ}¥ºNÅ+9Þ7"vä8ï¶žÿ\7+Ê9®®¯oY´H~~ãŠî›*{ó;ûü˜ó=÷zW™ÏJѬäü|u3,Ll‰Uî 2ËšžS˜Ø¢ñIPô+ù!ÄH8!s Y˜[9¦ß‹oƒ©Å\×+ ë‹ôÑø3H«²nñý¿óááø/}lD/1.ËøÇ†q~3Éhê\ëöZ³Bû“‡-Ûþá‡î‹$ûfjÜÐkú˜'÷Æèå‚aþ¥ÉìXm˜GÕ+¢´ ŸÿƬÑ0i?$úPbAi:ýJÆ–J:(툴&2±’6DæZmh>ÔÇüb‘ˆeÊÉânlÚ(t/·ßµ·ç/æy7â;3Ï¡2«7¯ðxHWЍ °¿2)ºêÎ )ï˜×™ãáV·Våf4ÂJ6hU`>÷ZÑ«Ç*ÍÖ|! €ÁååV·”›%Bê×Ùžš(<»wÐýí¨ã¦`LÞÆ=* çê‚å·ÿ0]oÄæŸµòÉã·îp®L#ÒÍú[alö,o?A^Vbþg¼9zjæH«®÷Só k¯¯Eb¾ÙHÌH$¼êP>þØcVqï }™Ë%^gý<‹×¼ÙÆ3Ñù‘Q”R{«vû­ Ó—.Ä_B‚,S"UÅO#{vjÊ„Cw#ŠÍ…™ÀHEk¬ÿ‚´í(âöÆunÄìê÷é+<¿{kìÒäTûþÔfül‰æHŽëÀáþ}nÞ?î%ŸßgÛç8vw`ØG»sâ”ÕgÛiê8híí]PÃäÄY"ŠlΟ˜5w{] sØt‘y%š€‡zŒ§éš ö0߆«!vp±—?«·1øî§óÉ9IꃪêÌvJhï½rÒ$h¸†÷™Ÿç QÂm%£Luÿ<Çg$Ñ͆ ‡gýT_gr4Íü׳®w_àÃv‹ï‡åøa~whBUEŽÞÏ`ö±¹s‹Ïq\s¯Y$Ø Dy¼vŽåv„…¦x&®YC­uÿïò:ö1æ°•ù×x>ÚIxÐç9ð†œ_8ƒINŒï{éo€y晨5¾‰?ùó®,¶µ3ÙïïÜÝr~ËbúÔ‘Ic¹|MÙEÖ"¡@= ZY»çlîÊþ7ù«äæÏº%뉒¹.ª{a}³àÌ¿t-Ï»f¦¥̦ †o"zÈIäO IæRH÷“¸Ì{¤¹„\Ç…ÉØ-)º$ë([`v¯ÌŒ| ”-]ôê-‡ãÈ t!Ù¼Âñæ­»`¤Å 7ï ó4¦’ç š¾êï™îL„=Ý®<æÅ"Éý'Ã>ŽÚ3ÇX5.ÄM‘+h”EUz1ø¡Ïh÷¬¢­#µi\dŠ6øXÄ M—©ÌÑ.Ïàœ/M9„ôÚö¢•"WíÆfý"ϛž9«Ž<ªËvðΉ#0uô`çÄKÖŒÀAÞKÞÆ2«Ì;ÌÙë÷‰¿âØsÈ>ºAñ¯Ò1^þ8­]CA¢|ÆŽ[gÙ¯[!˪÷¢£ÿôô´¥hL›GŒÎ®~ëhœW#ý Ð\}k “œ·`ò#UÌ+>æ+°qˆ`R›Ø1Î6®wSÏž¹”žÄ ð÷SvâiTÒĽ›=fšÕ ÔҜʼßYçN^šïæêÕÞ•t'ôt?á[Q¾¶—ÔóÏÓÿ±xœW[Å^!8}}>¨"õeÉ÷ê[ñÇ€(J¯¹ºÌh8zy×—*«˜DåSóya`þƒ¶dȶœÇqù#¿¸ð¥’¸ƒçßqöíÐû^|þ¯îTË[·ì°^€Ï"ÐGé;@~ïbì~þª$§ðZ–óULÃ~ðñØdÙlnõÔ+¿=;’D$`¤Ú«À¹S³B™JgK_ºúòÇÓSdBÞŸµB–Íóܺ+涥Ǻ¤BO2—ÿl—œEëîÞªz+ûЄ +}m}aÿÎâ_¾|.ûMê˜+‹µK›sUg5&QˆŸ,vA³ú¤•£lô—‚<ìîw¾Û÷ƒ\ïøî.i¤|ŒŒíÈc3§6mnÚôTV=h›k÷?ìèì±Ámb^õš’ù”ü ¤uÐU¯$v2ù‘3³4QFRÔ+9¨O]õi–L}dš%ÆWþ#а¤k{v¡³5ŽÏ2í£|çpÊìŽj¬.º³0è—Ȧ¾˜e9 Šæ²½gPí‹Ô̵Z®èée {ESŠ~i$â9zÙìX:t]>˜Î"6¦£Õ¹q¯‹H ˆè;Ø™TõZt|½¢úwìM3)E­ät®½P.‡Á­q«3-í•ú•D¦uФ%òÅ@( $ M‰ ka«lú+›d àìê/X;úb­ÜÄ?„Vés­Òz“ χx)€R/dø Jû8$®*¼et‘“ª2㲪ÆÚŸA0²7ÜlO×ôÉM%Éf"Ž?&úDÝMµ‹ëÊ< 抑Wõ³4/säZçeûˆ¯K™oìHŽòÌ{š—å0=9‚JbW‹Ù0wxÕ¤BÒ`ï0™S?UJ¤?‡yÅ ñýÆ4ÀP¹Tê3šúX´{~ŠWåZ5ñ9ïn™l·p0÷Ko§:{²T$í%Z Zƒ:æ­M›_Ý9Eë=ža÷÷@è,í£–ùR¢”;óRéoÐÏ5|*ÕC9àÎCzß®)Z³þ÷Üž€µ®5Mnæ1N¼ñ¿600p¸Õ™ùkp?€’ì˜k$Ò>ïRC×Õ Óo˜Þ¥HE«Ï–ï­9–}­É7¸s?w5¿øMÂÀÞ0,¨¨8+Ȥ‰i_ÛõÐéZbÏìx<ô‘tÁ¹À„ç‚•ôòlz­ñÌ3əĹ0Öì»Â“–»>xÑç_Á6ÿÙ˧”K­ðàƒÙ¯¾|,¹˜·‘ßïaY0;À`% CûÊ|Xtq†Ù|¾ãÏG.,J\W󬃞Ðȃ<¯Y´Á|Hã‰Â ËáÃV¡··õÓ]ÉÑ ¿@å{hš¬ßHì/ó÷»éóé¯ÇvY^²øÏQDS³þUæe¤|`oÂ>§Ç.Y_éÁš}‰át02!Ÿ„þ“#|yÜì'aàŠŽ#“²5{R~Í)¸±£Q«ø4Ïö©ì#È>=ï9î³Óȹ›ëeóµ6@¢½W·A™·ˆVbúõfRD$1¬b’³0·Êý¡ŒÙbt:W`@¡uŸ*;·üBêµ P¢ö2åQ=ùˆÈ$K¦?b†e~õw·RPK½º…s†!_Ú?}È1¾«¨r0Óæ\Æ0Ó[ᡇ9¥‹ß̼Îñe‚›æº‰Ç_©±M·ú9@´Ñj@U]öÚЀ¯ú\õw­[`bÿޏõ♬•€¾ …,_Ñ_ߥ9RÒ‹˜À‰Æ:.퇊´+â¾:cSe³:‘¿O×XiXd‚¥¼/{ã ºÝßÒÙm@ÝyÓIøOHW1œ‚ušnã’–s«ì½W{Ìòvnu' *¡¾yžTÔsŽ?.Mç0¯@`˜î§Yÿ †üZ{ÿÂ?=ù¤ _mî½GQ™oíÜ™:ŸòüÏ#º|äNNná"O˜Åa•ý\8§øI®±/¹éù£#KfZ•É4ø‚ÿŨq~F¾•ý^ùLØs„2'ñ®™kæ™ ¥ð´;î³þ*}9õ"Ïžäúx;7ËN(¢çb„yëy˜æz:A`²G žó¹Ó£sgi_°ø·¯¯ãtÅg,¿ø“ì…Œ¬[t›/2© ê} øKó…ÌS€*æÞy†ûO>eÇ g¸ª .†3‹¿«>v¿ëžY}¯zç.ežà¸þ6\FFFò,ëì0@IDATT~…Ú£\î 5ÈtkîƒÚÌc¢v‡ïê¢ãZO£(XÕõµF9«ïسF.ä å+£Lô¢·¢[)ì®öJZ €¦ÉÕr ¯¬ñZäK¢ý’?Š4)ñf\쳦þЖ´aÌrsøÇêy„ßC „xuQàìYŠ=÷¤‰y5üQÝm<Å%œáé¾¶ ¡^ú«*R¬¿úJ4™»“Ì·UÛxÖ’gÕúf×¥Ü fzSnŒšöFdzøÐÁV¤NÒ 8rVÃ)†XŒ«4„„#'DÂü‰¡ i–Î+ïǹ‹9ãë!¿™õ(9¡Z%Ì#Y—´&& ¯à½h?š)b²å°.é~õ'pt™‰Ò¶Ô*jçØÎ­~.Â,B@ç—b×­€¯Æ"³‹+„uEËÙÉ5ˆæ,7… è›Ï:w£eÏ`Y“Ä<ŒoŽ´FÊp.‚Ÿ™ÈI³"!MÕvüB´§JH¨9p*ª™’LžËYç0³›Â|KàDáy“äÊQ†uŠ®«{t­ltŽaý!B ok편$øªHæÖÐä"DŸÇõìgnªäzÍLÂ!B „ø6£ª¶hÄ}7ÓÞ#h]$èÉ×Nf xZf:oàº6 @€Û°> ÙIR.&U€C’ä¿QäU v˜ÖEŽÎø\ÁG@LsW’tiEô]Òu9Ÿ·ÿCÍbºe.¥Où•@Ñ$)ÔNfBÿ‚è&0#ÆY~õ d€€ÚCÕçÁ‚§øpíúÍS‚‹/v2l©:D(r{¿WÎâÃ"†¾¬=)ŸU ­Q ÿFŠ€Ö4DÛp:—vJY胰Çí„Bî ˆ€Bó*œò(Z?G§pÉÚ_e¥7 “:“ŒÌ阠œÛå÷32–5wG¡˜éßÈú!B „€6!ß„ã9Ÿo¦hvb†¥Èd‚C-˜QéØ{Ñ ÀöB2c;=^Þ_í­ö²Ÿ¤‘2+Õùœ({½öL S¾ › ÍLÿÛ€N’`†%¤@HMQÛëèÁÉ·%#Ö/ ÄÚÇcj•vXŽçög‹EëÿÃù\ÏèÊó´©ÂJ!B „xS ¯Ïj‰Füwá5 ¯&ÆnŽ(r_Ϙô 7M£¼qNÖ³÷;„S¦r™SI³0Šä[ÒsED ¢&eyM¤H;"m‡$äòû3+̷͉ä‹0S+ÆU¾!bˆåË¡¨O-˜óÈ„«Šÿnê’‘yQ7ó侺ˆ¡—)V•5Sõéãì«>ïNóò{©úص|g6‹Ž«î#Qh%¯Ý³z‘Zs0U-C@E½V¯­ºÏõ¾‹¦ÚùrHs¤$ƒcù•ÌÞ4†@¢@¾ŸÈ0Ñ$1íõ-ÔS¸diT47µ¹ ÕµAÔ‹v®…»Ö›Ox>¤@HPÀÙÑ—Ø3?™üPÁ·‹—á;yФVQfÖöü¿ð]û7q?¹W§aõªI‡?C „)ðj¢@‹ºHa‘ÈW+[/¹ë)Â^øæ• åÿÀº'ܨ£< b<ÅÜKë!¦Vå–OÇ%ŽÃŒgp…jØAÎêéLÑHËe"%ñÚ Jº·uKĘh‰ñÝHQõ$Z—6®n+gn9¥kÎÕEõpš¾SуãúÃÃB@]]78¿ÑO@Û"f]+ˆë·ÐOoõ559w×2“i™4 ›-Z§1¥ÂK AŽéòßH:t\û)“ªöIçeV'‰>§I©} ¤æp ­‡@¥®^…SÞŠ?‰Ì´Œ1%a‡Ì5³Ù ‡íB „x]P`hh(Þ‹üKÞÿ;Ï@̯ªËùæO:ž}ÈŽ%þÏ“gÓ/@”|¼.®Œp‘!B \O ìÚe%’‘â÷ðŒEènÇ`à €‘'¦¯dåvpSŸ««ÔÛ—™l/ÈÜî“9hÉ’ï@6⩹‘ÊÈÊYYÌì8¦8JR¨ÒÅ1’Ùt9T®9È[Fæ:CDÁ’‰¤æb„Å$æ—ú#AD+Ó¦ÉÀA&yá >ê/(šÛ•«%“SduX^šìïì6¶p•È^Ñ;aÅœyìêAùô}/CXI…n«Ûu»˜`gõ¥¡™ÂY_Ú£ê¢:qBæ*Lquýê:Í|—‰¢Ž]ʘýÓ¾-bwŽsh£"ÏáÙ) "ŸiAÔ&Æ^›}¸ˆ¶Áþj\µëÁKtUÐe¡]÷· Ì&9}S/êfèÖ )RàÕC·ŽŽæOôÇ/g]‰ó*'J›æMsŒÄX_$ûÙg_<—~‘3ºWÏìÙ„)RàÛƒv!º¿àD¾N¸¶Ö fLžõ•Œç ^Ò†ˆ+´Ãüö¢-@^öéã)‰ù4 ©ÌxáJ‘­´’Œ¬´2ÑêG3!æVÚiBÔ^™ua’%mŠH"géÍ2Ú7Eú!õ-æ9(š‡ÂË^]pŒ†&8®O^t}¸¿ïâk€¸±È)L&1×@4.T˜eB+"`A«^̲â†P ¬u—ç·Ö¬ÙÐ36%¼Ö"í”J|°Ð]æU½ÇQÞÐFy?$å”.­G ‡rºh¥5Ñ|ä¯d‘Šd&ÑúôxŽPÌë¶ÝIüwœžœ_…â}‡%¤@H5)ð‘¬öZîÓ¼ c‚³û¤éœ•\a_èÙA/¨ÀÊEùòSͪ¦œ^5ßÊá }Ñ:d&¥äŒÚ‡(*™LI¥ñÏhŸ üvÒYÄ`!ªQ϶æÑR)B–öVu´o*ÚK…X–æÃd¯gÿµºî²K‘nªˆKH!êR s`ñHv²ý-fç '^Äpu'ž)R ¤Àk€¥llÌv1¿ªh?”\ýñÑE“©ý¦9Ÿ¤Ä §ùq£[‘÷˜æ4Îçb2gq&—FCÎË2בæCÚ å„¸Š¿‡R…Ù•T}q| Š˜CM}Iõå„0Hc„Ò½¦Ÿ‹áxƒUб—D_ã¯*qÛ³n;DhÜàøÂt/ºë…jœÛȧƤŸi¼,*yE~Ð’ÓË@B>°(•fð«™WØÝ:Ë|êZ‹¢€Ÿ¢“ÉÔMŸòÂPÈ>L*Ê•²šÏ²Šrµ›pÈò©8*ïcÉD, öG{'À(wE:“6K`’±º#¾5x­sÛ‡)ðÚ§€’‘yúå)Z÷¦¿ _ûWR ¤Àë•Ò~À¿›õßÇiìÁkž€Q{úf;Ÿ{°!–Ó«A夜ËMþz‘ô[šY‰ù”$]󱩜ɲ-͇´ Û‘¨÷â¤,P"Æ—(»æO~31½bŽ¥±ˆ¹VS#1ôŠÈU«hœ)|AäT] .Ð;ÜiBã.5’#:h@vÇkm¢ju\ç˜uRL^ÙeíZF=ºÌ¯/˜¡´Wv·ÁHª[=ß:í{X@¦º‹Òz<(Ë´2Ÿýç0³*g·×> ‹yÉtK€EçUO¾*§1Ý:ÏONç&Eu¤aÑþR:ì˜=°î„ !B „)R ¤@H7„Ò~ÀY¿³¬ý`¸øþ·.]Éžæ×+bâÚ4‘fÀ/y»`Z£ Šbµ³/†6#c5ŒÓ$¡;Eî<Õ1·ˆÀ¾si>ÄÄ*?ˆ4!J2(à"ÓEO’ÆÂ˜\‘À°œÍ\lûµ•FÌºÖ ºšá§þÎh!)“¡J)úÞIޝp¯œlöK9 Êèÿþ±ŠTo~±·q@WZ©¢^­DkºÐÊš; º”A‚ÑRÐÁâMæt K¸Ê°0¡C“q~2o³o@dfuÒtH’ÆOD“Ö˜QòBi>Æ22»#¢M„í”ä:Í|cë k‡)R ¤@H!^ϨÒ~Ü;VŽöj[“°èßp_çó`/š –õ€ÙCCG̻̪_æLbæ© ¬Â³*jÒðPÒ€“©Ù‚ur4c¢Z™<rdÆŸ@EQ•b8W&Xr‚–Úk-ëq½3AXÞ` ‚uEm{oðSŸä? #Îæ kÊ»–wzUVUŒd[Q>të@f^Ú›YR€ ¯Qµ¤}êïŽó©Ëì—4r.'úŒqV’^aoå˜.ŸÕ—ó¹|AXÔŸL·Ê`ª¼Ô’ïwŠ·ì,r3ŽR ¤@H!B „xSÀÎDoZ.æW¾xø€5>âåãÇnfæóÕÛÐ4cx›uÙÁE>¥©Ëù<ÉDäÌ,iº|@æ‹ÆtJ&WòPþIÑ0t¬ŸÈWÊš-³%)ôargшl‰•ô\¡w»Eó’)–ãÉ—cuÚ¾·‡± ÆÏ[ùé¨çN°–ƒ›EàŒÎ¼ñ O}¶:n+ÙÑ»JàŽZawE·ÍŽW=N­ïêWÉ2W0A pà!ÚoOÅ (:q!kÌ­´O²f“öJy\TÒ\Ò|mC¦kBZ-™Ö¡SÁ¯ìÓc*úvK.>{s6Ô þR ¤@H!B „)ð Æ)/—ìáœí“íÜþ*–7dü&úªe}~"su”Ï›+ý®Ú’¦ÈÅ+9»³Ëj·ZxˆqãšFã‘/ŒYÎ-h<äD® ‹86‹Ñc;¸aI~Šœ%¿iBä ÆVÎç2ï ‘_‰é¼j¢7⫘|…½Ç¯#ó率Œ=tèö,«åØÙùÜÁ[N‹Uß, @30_"wcõœˆÕÁâ[ÂXÎçÕEæP¢Ã|Z ý) hän0ìÀdî þ·„OÖèe'õ²ßˆ~koeR'Ðv * 'ÇvQHý†´ezÙ~˶H6 "\XB „)R ¤@H7‰„8÷¸ñ/cÿe+;Ÿ/´w9¥R.Õ5»˜™Ÿ7?nÒLÖÓ4ië.ÚQ'•ƒ¹œ»Å¼:˜Ü´$\ô*"Ö|ÄÀJ£'~« '»¤iåø\º`$ç-ŽqH—¿È˜Veä–É̯bÔÅÄÞÆ[™É×"(÷²’2‡j–vëL&£äy€<ôˆUúóƒþæ#”4ØX#N¹â¹îLùkùߢçöá÷’œ[XûREh Hu›ëõ]@J OàO ¯…S˜`)÷Šr²œÂ—G`bï`Z•ðéI‰'™×fWÑhÌ„Z–¯‡Ú«ä‰†&ºÊ«Ÿ]å3v*ënaG´ÃR ¤@H!B „)p“(à›¿Rkʰ¢³ç*^¹/M«…<Øù˜|6â0—{ÑàÀaÎ6V&U’˜‹±#Ь˜We7W]™å\Àg@Òr¦ɹ˜Ü±©¼qd“*‰¹€Ì,ŽËI‡è´UÌøõ$úÝÒ7ÌtF>,t®cbœå|½‡@PkÄ8‡+>²)h0ŽºæÑ§ñàxSŸô+~£¤pÏJU¯Uô“c~¦¤•mnT‘–)Âî硃ö_ 3™îJ´w…Cú®Lõ³hŒ´­€í§48&’¿ez' "󼡭QZr‰”ü§uqÃÀíF­;ì7¤@H!B „)Rà•¥@Ó¦1i+MJ‡rÖî9%¤T\š)À¼ p¸ÆDÌ´[9(ÞË"Ë· É,Ñd͆™•Ô\ù.䇠ïb¶ÕN>%Ä»1êM‚®åXÝMn Iÿƒ"Þ{‰ÿV•¾’Ùœ3Ÿž=B…bÅùu~@‰é]Ö®JBư#®ß-^\€HѧD;i ¶n‰˜ßÔ©Qª&]ãìF XÄqþט  ,çrJ0Ì«ðÓQ@iFÞr{«u`§Ž“¯? —ää™d“·lOЩöÒŠ(7Œ2Ú›âúÉ‚Ulú:ÛȺ!B „)R ¤@Hß~hZâç"Q+aÅÄV¿ ˜L•«|ŠV$1³’†K*.­ˆDà·íNZßyO›(SûÖ‹icò£œ rj–Yü ØB©½")Õf¾Ípûg ¿®ž}Ì„\£õï…Ž(ùžÖ âØ~[Ķ÷pø[Á`~ɽä;ÅS0ß{ œ[ïÓÔ·­ñ-‡à}äÐÁ¨cçû4º´ »cf>Z¿|)Ì´¯jÏP@BD&V2KS`%TQ®™Áµ@™ÈÝ{ eí&ü®å]·¤¬o[°NœÏZq4"ÊáRÄ/]}t’Á^íæÉ!"ó;-$b;‘¸—+w\{*áÑ!B „)R ¤@Hך ^NÕNÅ‹É J™!7,³‰t%ÿùZˆûìnw­·"9 ò•¢#m'gˆÌ}ŽžÎIºÚššpÃâ·ÕVf[å>ƒ6÷YžQí¶}™ ü(ŸLŸT<0€eû·+S¹ü?tìLüøÌ°5|‚y½K¿7Tð×gˆsô^h“RQ/2ÐØñXÙJ©áÚñ"º^E=iO øêDÉÛrq:göI)ù€(¡àîþŸ®É„.p¤¹)¡öTfk§Ær&«¼Žk_XBY@D€N+V(/îh¸°„)R ¤@H!B „ W“Å^l)€rB øq(ë¹2bËÔ5s1 2¹‘Í¿˜T…èC+°!&Má$þÉ8¡^aváo ³+ÿ1ºbrk´¬t¥±qkäBÎ:=–·ð'¼¢¬þ]9¹|Bó ëÊi¾ …Ù“-.ôVCUt”–éêcM~ÏúNiE"Ãx´Øàêaø –å¹o°áÚê .ŸíŸÌ¥´W2Ç’s~ß–a–}kŸs³fOúªþÁ²W{8H°I…ZV{eG—z¿ù‘°‘é®d²l¯·vá‘!B „)R ¤@Hך ‹ F (à ó›²› (’˜P™Þl#L«¤ßÏŸL[Ê’.Ó*1û§i§Ü!;ûâ&ŸÚKÊ.†URw¿Ó®Ä}J ¨¶ò%i¤ ö´ 6³ý”XÖ'Úé³àÙçã“4rƒÅ·®’3¥QK­ –ÝoÞ²ÁžÊÕO¿é.$ “¬èVãD%S’H9é+<²Âôö‘dPZ¦c˜ÌÉ9]õ¥%y?ž G‰Úv¡SQ(ß«ó%^&U|Ç_˜±fB ˆ¡FøOH!B „)R ¤@Ó> Ûºã~ÆË¥e*%? 1£bú³Ó£ÑÜ*ɹ…äœüØROyÖמ]°îÚ—2ѲÄÄ>ž6fVrRW¸^EÑ’D]&]*rb°H&joŽ‚BÇEBv Æe¹]ãzVÎ û©óxPµ—½’}ÿ[‚cM}ÚÖ§YAË÷ìAÏñ+&^Mõ£JMO¿q¢™Â&s*€ÆBÆ7¦XÚW™Ë-²Oòå ™dýÖ¬õäKi«ƒcÒrÌ2ä#"Í—²§kOäÀ.À" ¹€$Ð~Øx!w%j@oIx6¤@H!B „)ðº¡@Ó^«×C‘‘–m”4®|¦ù®(N[‰h%à!í†Âó¦dšƒIŽþ”7â~eÆzø‹ÓÖc‡ç èP˜^1¶*òAÈÀ «ˆ1œ&"_k™ÉÙYŸA#-ˆ£«§7ü C£Ï;è¶ÒÝûÌYŽ¢ngr6Çš©Æù+vnöjõqÌØè{ã¤2›êÞ6÷=“D ÉäW³yc§/ÊZ/­”|:ØÇy€‰´M̼!òÝñL{Ñ@‰ö4#TÎëÆÁ_1[‹ç:B ˆ!EøOH!B „)R ¤@Óäòm)sŸ| |e:—“¹Ì¨áJo9¡é7àAáv%W²º Èß@¾—ÐTˆaÝÕ3§.ãgÐÙ–rQ(’’4,Êbü‚Æ«>»ˆ®ÕÂÊüm%¨ÿ+³¥yG–áêÖù)‰> aß'~ukuU›„„`€•ŽèXŒAÄoÐäWÉëñËç3„«­Ôa9“ïÿ­IÒ3.×ñû˜ü2q–OÝ”ozò÷È/í•üváJGrFT½ÛbF2KÈ]™j»X΀.guAP9óëÏô+ £ïHO 5 7egÃAB „)R ¤@H¯~ 4 @zÈHø/Á8—ø ´.äס¬âú®ˆX ¤ßbFû`LežsER’9Ï-Û”è÷üB”ù\šIâ ø ?1­WatA©^ì„}ÊÚ]]”×C9JV­®Á÷úÝ®¨Èø{씿ÂÙ¾Dç+Ñmë)¦ÿÁŸþÍ‘¼ÿ7Oý®],~1þÎ0ßôHXß1æSõw><Çÿ¢ùÈŠaoÎf#§(V`PÀ Í“r³\D‹1J2Á^ÀÄvLê²ø<þ<—¢»À™ö|³9ý¾…¤…»úãpÈßG‰/2µ·Ÿ¼*S‡ˆ"vsŽR ¤@H!B „)ðj§@ÓD ±mÿ x^Iç!é4ù"Äœ*4;ЈìÄy&µìŒ,ŸÚ1ÊÀ@Rvù ˆÑ•$]@DL®Ú«‘˜[9/+£vq™¹L|:Ú–µ šŸüG&§‹F²¯ß×T|k0Rò¶W÷a{Þ(¿õ” “þèÏüæÈ±àÀûÿÓ¹ «èöû¼@üýùàœ>Ûº‹ITI2ÁzÅ øÁ¸•¢Y Šîòå8ô@N)>µúSÖûŽ–ˆCäséaç™2ÓðàÐzµoÊ"Ê8’޽b )R ¤@H!B „xÕQ`C¤T´/’VnV Ašqœ2§Êâ.Ÿ,fPòQ.ùÈDg̪ü Œd&V>brÅ€Kƒ"™j)R–£å‹0&CßÅÐÖ+°oíZ™ÃCÕÅPKr @Á:XÝO4šºÂÚOTÍë¬åG¾U]Gßí¨}”:Oñ'^¿°X‘¼Ÿh­ˆ°µº}Íß hQ³~ƒƒ2¯R4+åÑ^J£!ŸÑ\æpÚ—ssÆ”N4–i–@£öX@SÚ*E¼’ã¿€¥|?´%}ÔïF¦(ZLyÚ.ù!i°á©!B „)R ¤Àë 0ΗðÒ˜ÚC$I½&{¢†™Çüff¾ì' ÏÀ,K¦>J`(ŽÔ0¤2¿Qˆ]EL:I²@1¼[1½2Œ,ŒªÌ}ÄLOÂU «ò‡p("–àI2‘¶ÕÀ¢Þ^(¬€ˆIP¤‘¹th|…ƒ¹Âç%ŒÀ˜¡a˜Ñ±J‰¸ý´­d¸R«ö<Í Ëu6óM4èð(;¡{&´®L§mÒŒ$¢®µw a|z¤ ¹8­ŒèeM‰&­‡Þæs€Où‹(ˆö_>$’úޝËLÉ*Îmfža›!B „)R ¤@H×&s7_æ¯D2[ºíKbåñ²ÿ€˜Qù„´§ˆ€”B£Ú ˜Fr•?ð„‘ž OÉqÙ±öà'"Ó­³0·- Ì{àX•ôN`B>2ëS¼‘¤]fB™\ÞpýÁj®Î“eÕ­l¿øAOžµ7âÅûøV £ëDì0ás¶ãËûÙ`¼ÕŸ®çCÛqƵÜJ[ÕñKö ný¼œêêñëý€†¨L˜rti f€ÛÈå"RvJ'<2a•cEÇjY SÀCèQVŠ\–4f±¹›¢½Lí¤UI.™ç%'Úg­L½¹„ÇC „)R ¤@H!^Øäÿ3‚áŽ5ª¹qOE«’Ä\Q†Wf:ʤ=/Æó%&8©•´ r³+FU&;r@—¦ä¦=.Œ«À‚ÜŽ)¤®Ü•bí‰OWr<ù)Tã›B®‹k)Œ½µ)í¬î£.Mà.| û*s¬êZÊg9[(ZÏ_jaÅßS¬u5 +ÚTÿ€F›-¢¥²Ðϥ˰¤Q 9›kä¢pÆcS·´GMhÝ^´L:§?ÕS¾i¯¤¥RÄ,™Õ)¸€€hŒHh2½ÓXìèøC%ZXB „)R ¤@H!^xà+r߀•Ú¿¿§í`ooëð°gb+é<Ó i@`*ýOþ†uÊBè ÓŸöB…Õ)Tð!“ùP(R•¤êú.Ð"‡si7ÒøyÈ„GI  d²#À!WöGrˆž€î ?™„ 褑ÖË™úzô¹?n§¿Gƒ>3ÉìT›ÓrÚö­¼çÖw°N¤Ósmѯ¶/´Õ§ï:ÛȲ)±©FÕƒó]Ѭ”ßCQ4–¶IZŒ±Ù¼‰l&gsí•B*õ̘Îi¿fæË¦U2™Óž¨Èy]{«¬ö:®½VŽ˜öLâ|? 2yyÕðáÏ!B ¼n)04d%[}<"y¸fbs¥ä¼ oo·Xv¡`9-Å'WôÜDuããVB!ó[.CCC´ŸÅÖ€ /ÑùR|Á*aà—Ûw9É|ÉÍ%+óáûk®ˆ!½z¶³5[(¹Ù¨[ŠÇ¯–"Óeö+×a9EhœX:wöìU VWÐãA˜×“m‹©R$qJ±…Ù’®Jíƒ=Ò¹óçgçW·W½]ù|GÊqf}ÝV7×O¦#2OìÿZóÛHߪ«kšéJɆ>9?SÒµŸçþ:xpvñsŸ³Ä×̦3Ì}qb«×Ü—±\1²À=?::§uWòÄñ½™b÷ôô´ö%òÑtÄñâK÷J¡½|¿÷Fæ;kåè(˜OÍ>µ¿—϶ô=o/·Ím§¬í64ìÅÅ–BÜ*Ú¹äÂþö´_´Ïy–w¢sΜ9“–óŠ}®Ùù&n€h ß)½àYÎ$Ù±wîÁO`izoIÓ•ã£$arå2GÎ!LxݶÁÀF£Š¨dY§å+íE; ¬$ê/-˜ðÈDÎêÃäQ½FET—éVW‡k]ÄÌ«~Y§£U \86X~Ør—ò XÖx6å Ÿ£j/‰æUÕÍüÈhö‘}ý}¿<šûÙCå3ph@CW¨Èüêa“EíCçãWrÆÿF¸Èh®H.©½TˆeÐ^(Ê•ÚKëÕÝQ6Ç’öK³d'À)?™× TR¦Pt=ó -56¤@H¯6 8ÑBü~¼ø>tû-ÑBKº÷rXíEËYv,çÚlÈm¥äë±2ŸŸ"eSõ"¢¥©7ú®ýóH‡ºã^kÚJ”2EÛ.¨}”ùx÷µEr~kG,õp¦}ñ/çæ¬éêöù¾o m‹ïf‰7ê]‘–ä"^™97ŸIl»}K4õß³‹3;k­ôqÜÀÉÖèÜÏdJ¥ï´“ɯ/ïZýdê ­­‹,,X—ƒîŠ™ä=-ná_}»'Zl](ÆKYh q£ãäìØ¢ŸOaݺ%Ñò©Bgúo¯^]6›úhðéÌŒ¥Þ•ŒæŠ5"_LÎñ™¥ßxÁ.XnªôÙö¢õYh©µ6dòŒñª?uáD²?)|ØsüÛcEè[Jf ÛPݼxù„oÛñRñÙíÛ­ß¿pÁ:â*@ï…Á¶NÛÉÿ+¶ñ­qß)Ø-É´®-ÜÎÛQ³G®ß•ð¬ wu~äØÙ«G9ÕˆaSӺś¿+Ë¿×*µÆ½¤7og|'g:EgbïÞ®ß9ujæ%o:$*×ÄÝ‘XîQßî*$R'—IB€™ÇRˆÇìú6@¢··7e§Ò&MÃÛª× ŸåûÚlšv¶úÎéÛû­ÿrtÂ:±‘y &[ÜÅp¸'Qr2^2ež ±|6ñNwZ>;ª G5€Tn*6<6â¾ ô}¶oä×;ÆÅl˜â%‹³›¶ã¥]ß¾âüc·¶<š³­/žMËÚG‘ëZ6 @òVòtÜÏ•c§²™Ëy\Òp…à•D~Æ#‹9•ü@TÄØJú~FVôí[ãÆÜJ¾$¢€œÆ•U[Úù(y¡4 Wé¿'gœFEÔø2/’™‘¡êšët²¦¾Ù}³Ïí3&ÚÕ¡C–÷Éßð^f„3ý‡cææ¬ÑL&H †ùѯ,ŸMäÚ“V´8°|¤þ·Ï´~_:#úær •<ÃcV'Yš+˜U)?‹"\ÉA]2§ke/d.'ó9™a plÈ]ǤS]íÑíÃIüy¸Ž=ë¤W´Ï7žUx6¤@H¯ ø¶ë´ñf¸Gåø°GùMU~Þ#—ÔOR2qüïJ]ˆ¿V±÷%ß»âÛ‘­¼^Þaù^¼Ü@MTø—ö ¶ƒq¡§Çz¦YB² “hª5ùO®X¼%áØïÄgñ ô‰-”`¦h[;wZ_:rÄô_¾É~ƒj®{µÜ;øýýôß²´ˆË¶ïýClÁHtƒªØ…ø)¤ŸwpàvÖ] }iæ´´nÎ¥™ß§+šü²{kìöhÄúyª¿ ú£]*÷ ÙÐzØæGÒOCÇYÎojMNã¯FÐbìø»¹¶¾“ ÈÐ! „öÿ Ø«Y±ÕnÙ6?·p9–÷ýȽ°bp+U°úXúÎ1Û-Š#t‚™› 0ý­‘äâwø%ÿ]ìSwyjåkØ™HÉþ žâoÓ&àhn·=û{™ïÎòJ4wûÏMKûS6[Ü:¾5äÙÎý|v¬\÷ÒœèÄ·½Gg#ÆÄ) ÆMêôõY--–õÆ(ï#¡Þ —žjã<˽ð×s§ÓgùQ|lëÎ\òþkùiؼû¨×ÂTÌ&ð½Ná^´©gY;<Û{öÜ©ÿ–u?}ö¬u‰ã›zžÔŒëdc¥ýرYnçÔJZ åƒ89š­$ø)Žœ‘ÅèJë±g n’Ó)ûv Rbë¦i'fW@C¹'ÔNÀAÉ%™S¬hYê»™¢ë;Á#Ry(VgHÚë"ªÚ½àpÝOõÉ^íŽÅt3-—bÑ}–kîëËG,KÚ?ýµÝÕÇV/9¤4Ö¶ÕÇ×ü._ík_ë³9´IŠf”ÊwCftZçfT2ƒ“Ó¹‡ön€½Ñc·ìÿáó-%¡”æê<¾;*å½#”2 ¤½WáÕzøgÿïxa )R ¤@H(àÛ~‰äµ†Yà©Z·äa³îÌÚ}²Ø~žàç/ðfJ×m­¾}‹mëåÛfmºÛõîâ8ÈXk•¾¿¿p¥]ïÅÍöo9%ýo§ 3 ›öRÄŠ½€ÚfEtIÞ·y^‹Y^VõéæC»8Oð™ sHß ËΩþXÂý9æñvÖiLÛÊ |Wû¯xaìÄY"ëW1œ ;ü6>YŒ80±¬ëêFËÜfÕ¿8>lòEûÎO4¢{Œf­8<ßf­Œ§ÎDМ ^¤¾å…+¤×+÷µ·o¾œhÌ=ÃØZÕùœãyߘž^É„_u]¯d»‹ëÐëÖMˆiª W &“¶mNìÝŽk¿ë^–3Õœ!¹æ¼ÿ÷ÊXæWkIƒ.ö $w@çÿ­dùÿШë[k úà°?ÏítŽc/p$,žeb«î;I‹·Zžý I/q;uÊ _®GÙ0yè[ùþsLt1‰öBbhôhï€B±ž&_„†(m’ <ÄœîÜ7þ ø€Èá\&[bhÅàê¼L}2œPèF*?B_å—h8h,ù“t´®]–ÎÉLHѶ6R¨Ý Z¡µ8<ºÓy¹ºŸx)y‰o­>¶ú»õº˜Gõ½ºÊ ù-Ú ÜɤM¡»@9?$}“É›Âæ¦q,—d'9?äË£sÚí¥’Hž¼dpêÇôÎОk_@åt®/½€¿%k\ÄwæY†ÙÃR ¤@HPé°1¹jD š¥RÔÎó¨^þ<5µP(”0ÿð×3tcþvB…¹o4æês2¿Š¹ö½G¢[aZ*Õ0íòíÂÎfªØnÉ?ÀÆ*8¾¤¸OONÏò¹‚Áõ=‹™øS½V&±ú‹m0/ÉÙS êTµÁÿ¤%QŒü8Tþaw.Ÿòó¶çüçÙ{öüÂIޝ˜Ër½×Ö·dÉ…as 1oïúÅw qk«¡Éš½€,žæúÌÕïÂN9¾sËîÝV;u`6Q><Í×^߀ø—ƒhè´§›ê¿Ë™ßêúÖ­¬c”².Â%=Ùá pF=§hÌ“V1ï+Ö%öx׃¦¯¥ÃÛR÷f#‘Âo U ”‹ÎþÈÄ…µ&šÁˆÛ·§ˆ8ûo¸~†cƒüL1Æ;tü÷ÔÑØü¤ïÙ?i¹þO ¥ú9*ýç1çZ黌flÌÏeeÔôü©»n©ZÔºu+@dG˜ü$fU»%%?3ŽaL«òA˜Lä˜]‰Úòå#+ÇtE¾Ó;Ô«¤vøÀ¨*w„B¶* –šeŽ¥~’8F+,¬2kOc&tâBÖzÃ@C[™FÍ/òIغ¥©I ³˜oS˜úŽ4·f jÉV¤I»«ë:ôØšMܼ™Õv?ü õ9´êú• a b¯œ¯þ²9V7«÷ýôXÎÊó·Y¿ÀÃÀC@䎽)ë>hûò¹¬!ÒfL˜¼މl%ú  èSÎæÒV黋ÀœÌ­¤µRˆÞ=ƒq£õ‚¾Wx<[o.áñ!B ¼.)àz¼•½ê>áyCñ†Œèm_‹ÄÞÃyñÑ‚ê0"u$’~—]*Þ²()ó<¦I,ùRqoܵo+3`<ð׿Çs¬;[¬/Ñ»LR6TpÚmþþ  ¢Â„ò–™„ :Œ?ËÜêÎ\§H<—.5i²TÝ/ø¾[à•T—¶A¿’.Ÿpf¾7gG~ŠÊË qU˜Ç£Žåýöɱ̋Ô/m^ëŸùE·o)åaUÒàÜèÉÚŒh)š½èz‰cžã¼z-3靖Ǿ—¦ÛÁ¯s8µ†ŸZU}ÅOÇhlñ^r`_a¬WÔáº}a¡}WÿÞÂëÇ|;@ŽÉÂøÏ¥º0w3ZŒÊx‘Ȩ_,&r€*¯ÂoVÎV¾HBŸk;Y‡7¬T+Ùݟ؉°øƒüºŸ{¼¢)âÚ¼À=ò»ã³éOãRÓߪÞÙÿÒ÷K?Aû­ü70Ïÿ ø³Ç;}á…µæ“Ðöó]©…·ñúeê²‡Ò úÛvŸM[é«6oˉÍîÕ—˜?ÏzBÊ9ß‚£ø.41CÄ”*"’ü1”|pvAù<Ê׳".)a¡òŒ_. Ià»pB—É|I䇠œ!JJ¨Ï6œ×_:›Å×àq)Ë!}pkÀaŒÝLm0Ù°D.޽çÐ!Ò딇ÔE JµîÉ® 0˜ÍõêÞ”•î!—€ÔêRëØê:«‹f øiŒ`Ê&@( ((R <öãp~뮄uÿ]­8òk±es+%„TÝAÎk/fWeI—‰ÝöKæ[ ᫺eçt|öi:ïÑ2ÆWÏ%üR ¤@H×5ó€løçÙŒ/_ßTÃs.x¶‚'-fBõŠâi>¼kצ¤Ì(ý½»aC‡£Î{ÏŽÁnÝ1ÔÒ%‡·ÂƊ礷!Ü;sSy"À;^tã/]®e·ïá Ó9£4bŽK˜™L£:f¢Oõ%ßD?Sy+ýk„·ö¿†éÙG^Ë"pÚêãk„Q÷bùÚö­Ybµ>…㽂:¬¸¾0«ò\GÁ$0çL–›ªp¼!€.ÏkWgg'¼ôûéï8"€n ƒNâ¤ó{ý3™‡ççë—ˆyÓoD†ñÏa2÷«”—l|dáBæï55¨“““éãgÒ_@¨üy~<ÎR³4žp¬ü í d×û¬ÁæÖ«º|ü¡CÇðexŠú2»€Ôü"¦T’ªf†UyAFÄèÊ´GÒs1µq|R8œ«œÃ´Gѯ>T`xÑ®”“ò)Ó%(<2‚ÖkŶ›êuÿ‘)Öž¡˜µ}[Ôê‹Z»£h]6¾\iKxPÞ9d U.„ÕƒÎ[Åævu‹¨¾v\Û{¦XË ‹–)‡|™³i|ý‰¦ÒàèûFË‹8i,ÔT`P}e~=h¬¶&PpXY‡Þ:§,èÚ«€àÚCù…( À(Ú*ù(ˆÌº&0³“™–æ¥ë€"”ýŇþŸÓrÚ KH!B ð ¾Í[°~áYZ"̇^ü<‘×–‘‹ WJE?•²VׄçÙ›™n@ìÕUjþÞÖÚùÕ}0æ MX óI煉µf05{^>è»Ö~¬ðGK (&;¶÷ôÄÔÕšþžK¤¯²YO#Òyh÷%ùjTÇÚח؃õÆ/Pí-Œ˜ypjO!æüÖßb¦¢ÿëªôôL½êß%j@¨\¦³ ðšƒ з‘æaK±TžÛ„Ÿ€Û1Ú@·Ñu·nï.àGMÂFûL_kwÞuo£NE˜ ê)ZÅ£DWƒ]Y eWp% ¨y¿µËÞϯ̓I¥Öžýa„凜!àó‰B"ýç¥JÍkÜ€×ý!€øþå{K3I•ÿùÑ+óOr¬YƒjTÿôxæ‰|¡ô—‡¹{¹˜M¥]³ºªÖøºqŽ|©sÇ*~‰å¨V™V]/™ˆH(B`Ts†Y'’ÕÚ ù(—„´$}$&”ÆD ¶˜à$ìò‘¯œ EÙ˜YS¾Eezù|–öŦµ š¦ÂË,L9Bô}3EŒ5Rý]Q+&u_Í+ù½hI©ÚC8„}µ*ýÁÏ߇¡ Ó“_HkU5ÇD×ÛbøU¸Ð+bmD‰Î)<àMä«Q…ÓE“¤µèÍ>WÚ¥]Pt2 Ñ÷"‰"•óC~9Òh(„òùI™Ï•ï+iOdÚ&¿:9¶ïÅüJùC(ã^ÔþâFæÖ )R ¤ÀëžK¶3˜éºÌ Ì[/„FÒ~‚ÓøÏC¯ ^– ÌWœÛØ ”¹è—öÀÜdžíD½Ù†Äü޶¶eF­N½‡4žôoçµ!a]YÂÌZ|×}†ÀÂX–¬-Ñ"ôXO‚tÙ¶óRõºEQÜ„ó³h¾JmU¨>rõüâc[A«jöÚù*F:âºb2ë^›œÃÐÈ•´¿n'›Ã÷àE®¡út”ŸÜ‚ñ‰mš±‘ùU$óØÊ_#¦ŽH²þ]ÝÝí\þàX˜az%>δ'8![ÏõnÏž£¯5 jÏaË‹æ< µµB´ àƒ± {«¿ZÅYœ‰'tù 5öP¡|oÈYܶ>Í.~âÔ)AƒýñSé݄ѽ!Vi‡ìY¼·_L-Ö¾¿jL“3ëKìáç˜ü—Çk j´ÛСFذ£+yü×Å|*Ê•¤ó2ñ‘ÙÕ•9¢,q‰¢=0Ç‚W`DŽéDIÀl+n}ç½mÖ¿³ÛúѺ¬ï~C»õæÛZ`h#&«ºBÆÊ\JWf ÃX‡_^¬˜s5œÜÒÉê®·ãÍôÃ-×ëzöÞºu]o'ëìä•BˆEûÖšõºfR8S ÖT ¬Ìˆ¶¡íÐoi6UIÀã{ßÒaÜ“´¶ÑNI¥Š[ïzs‡õ=oh³îÝ—2¹B”cdÿ1Ò=$¿Á}dM-ýÝÌÂMÙEüöšš Ís´=¼5ÌCÞÁ\ëOáT±ªÄ’^Òvìæ·Uü))ꕊî GƒB¼s)L~;òçùÛ3vh6îÝŸ2`R£•½ Ìæ¶°GÛñ©¹mWÒø„ô³o½Q³oÚÛ[ýäáÞZ$rÈç~ê·Ž¤78ݰzH!^óÀ—Z¶®˜h@¥f)™Ì\Æ\æ^† fÂnúÎ…æý@ööµöD#®ò”44¿ 6 &ò`‹ß½kfXNÎ߉ ­?>>Ÿþ{Œâ_×fÃh²Ò@àî¡O½"ɸö¢Qˆë¥ÎÕ´gµ fTžë‚t›ö!>¹9ü½€ï%½v×å£~M$7¯l†Õ¨båœÉ/u ïkwq°ÌiÚþÉ„}¨º>W\CëÒŠIkT“n{’Ûcväð»v \T D1f}|äüôIÚ6|n YŒÄ“–h#wòÜùR.ÒˆØ=ùŽæiM;ïÔäÂ%²ÖË_¤áØKƒløcC¶¡«{ÇIå @ÇSqçž[ ÃwÊŸ@™ÎµzB™Ü"ý=ëþ;[ ¸vA&[* ‘+fV!]￳͘I2¯|"WцH/'-˜p¯2Ë’dÿf´=ûålŽÿK¾zL6<ûn¤3fÃ}ǹ ¾^À Ò˜KáàÖå¦ntø¿ÆÑShMZ]~ êOéJ Ø@,ð.”O‡²Ô«ÎN´-oD uŸ9­ËoÅb 2׿‰Šæ>;>eîŸzí‰dÛ‰¬E·;:0´/ü,cý3¦!Ÿºt¾âDJ¿}âTV`né—©UõÏÄÄ@´Ížë$€D ¾m%A’zÚ¬ÏFX@»ÑWõzc¿6±‰õ'0`8Ïsôó µÛ XÈà7€‰•|9äC _9,ŸÃ`~±hݾ( 8Ñ•« ÚÏX´;ùì³&¼èŠ6u†xE—¬Ün€ä¯báó{ÁµÉ÷ß÷£ùA& ;¯Ké}Ìòã‹ }4ŽBÍ®+ ¿wráJ´è¡~MŸ3aÛng8pÏ­Íiè’nl'&FšÀüÊ8V ³ÖŸíÀ¡j_o“ùjJ%wð±ƒë$MÓpŸO»-µÍ¯Ì:t5Éok¦ž‹}Í5&³À”—û1Æ|/}q›.ÝäÃñ žt&û4ÇêÞKã›v{>‰BÚ“ØWŸ–|ÿ]®Ýú È©>ÿŠ|_÷ÑhVßu\àÙ_¦Îi.ì,ßÛ’”ËdJÙµ ÄoCê.ÿí€Ø}áÉ9ëYLŽ ¥îdÆzꥴõåÃóÖ/Ì›¨WrP—¶Dù%$µOÃDK[¢>Â÷ðË0Ø7Ãá¶’ËÚØæ­,X¥Þžª£¨ýÜï{øáå‹àÐ!¿ûº½ÈªÆ[ñU4‘æh?7i/â„4VQB i6¤U’6I>­hCîÁüJÈÔþèéŒuøxÚœ“)ÝÛïn5SçNœSBB/p87{.:æØIZÕÊ‘²b‚á!B ¼ )À»IL7OI˜šÕŽ ‹py«•åë0gÉimJ¦U¿ø. :‚ Ku£9«ý"0åuÅ„Õ)~:—ýi¢¬×©P9üôÖ–ž‚í’_Á_2¿ø°0³ 4H,0¸Íu⻩»®YL$±8H£¡Ì,`¶ zšð¦“´¯ËHJÂë‡0¹k™¸`µàÐnþ̘T:™?:s1÷UŽáêÐ\Y¥bå¥kyõ8A¤ðþM_[êAÖ*-Òu½v‚A6òYæL7ÒbU]òz<Éz“?Aà×!FVÎÎ0¤Fk¡ü&OÈR§’â]Ä!]NË%92ߣ{ùj3®£Q[…Ò•Y’ê/C&%Å“ùÕó8WŸÏ³­USº!?v ÅÏýÙ¡½[ƒ>qhLjb×±¯+¦Rñ¼?÷âÞ÷þé¯èþį ÷îñ†ßËÅ÷A.òET¾ÎŸÜ8ÖYŸì z2/9–£“Íúäs£œ:.M•®?i¤võÇ­ûö·à`®úEð"üÙÛ ¾ÆÁœÚr:WFôåm9€&åÎa@7í°jþJ4Ÿ{â:/)ì.¤@H¯ ¡' ‰˜¸ú¥áÉåf—/_^(zÞ˜81`u˜h; [rëöíëûtØïÞg˜(¼”»4Ϋâo`ò¾Æ¯º !×lþooo_äÀ¥€ÛNFÂÌRÇmÏ}na¡±ó7¬‚hV¶¢×äêSgéœìùݘó^Âû>È¡nsfùÏaIññ“'­ŽÕ=Kݼ®>È߈5´X)ëÒ…«ü[vš i…Ùúʆön×r·¯§¡ÛßÓÓšp7qݔͯ´®õ5Çñþ–þÎqeÔ9J$èÜ=ÐÛ±.ÈY Žp×s™ŸÓ¶ýìôtfŒ1êô_YM=¦¿RaéK¥Þžm©û¢që¡‘|N–4.þYÇv>69·™€í"”)‰g£kZyoþôåԯܺ½õ u—Æ]=Í›óûšȇÈ÷€Ñà_ÀÔÎ)Ñß›¶†T B!pvrW¡pU„ÏÒDÈRR;=O”ÌNZ 1Â2±Ó«¼AÈ]å‘Ä]Œ±"9ÉìGáh»Û¢˜b¥Md-1Þ7£0ÌbýøñOþúðþô7ö~8jÅÿu?°zl¦9ÄÍ÷Q7^üªß¿âáù;¬{çêz×ó·h °¹O£IŠ!Qh]åêÐ>(:Ùm»“d=OÈ+¢,óÚ“y4K …,S*™Ì}ã…ë2Ë4@ eW?Þ+ô¡s™·N` ð¢±L´Ú{L–ÿü½ÿùüÌõ\SØWH!^wÀ¬Ù5c”üÏß ¼KëšaÁ»ïñçôY—Ù0¡qc–œÏ‡`PÌËš<_Gò¥Ìs%§ðuŽKCQä`JÓô†ž#U­ËSÈÜ1ö]ô_f"éC꣮7Н ˜TÎR6òš×zºZ~󙟺 Ñ\ó"¾ÿuâÈþE´:ëÛÕSçõUêî^… M]Ÿ9'3ø=Š}ÒB¥õš/hè"޾Ŷ2è]szé@>1·›aaԗ̯l|ŸJÖÓNÔ‚==Î_]ÿ#Úpìü>@NÃhXvÉßÍ\oau&8ˆ÷ ïÃNfmÆð5ó,gXs¸Þ½½ñaø*Ì­ïàÊ6€Ÿï—04ü£mWþ?«õÚÖ;><æÚöo±˜ïaI5ih4&¾õ½|~7Riß°ÙM4+eW6rHlBæ*Š˜’Cö6Ý*xŠ t3¸{Æó³¡1'ÝsåûBW²ÒFÞ·sÃò"Î:ÈŸkV¢ùÞíf#‡ªçp¿Rq×Vü') …ǘŸÛÖ—î&ã?æëÝôybÕ;è¼àO/þSÎð”Ãíשx‡É9lûÔZ&¿£²à„”†".·Ñ·ÐåDîãâËN @8xþ|O_·¢Á¥Fi£ˆ7¬À»7¬5œ_p¥uuEëdò\p¹tÞÁ«Wº8§¨EAƒ…J ¹Ì%› aEeE,<Žù~ŽŸt dTßôÉ¿8sF㘠Eù’¯ýxÖÝOV…æ qÁåÉõîÁÕ O—iV^ÕÁ¶aÉ­bvŽz~z~îWœ8Ï"}frl³Îq[ØýAºjUw‚2ë(»a™%@˜Ý6®w+ó*”—€+ø¦Ò !·¤iÊy:›Ù‚Ù°0®Q(ðg ãl¸IS»Yµàms”ën±pmQ?)7¬œ›ÕDÙ««/s+mä•ìË(ßçë~5µE¾k^óÔ"=ŽóæøXæI.Y[¤žyíjé9„žý¹¿Á }üQýB ™äà­×ÿ½ÊúÄ[–j)Ôú²5P‰dEþÿ"팒Þíh(qÊp‘ªÂmJäòcí)§«ˆÄ!«Å£÷W9x´ÖDc’Âü¶ª°Ž”k†ê;F4¬Ž cœ› Å+ŽÃm›“Î;¬2@$Æj¿Š²§ËRŠb]¿2ara|çgýÆIJõkˆ¨ïƒäðÃÓ¸SøÛšÜ¬dA’µID}¹·=4‘ÀÑD½B6²$Õã·{kÒ£ÈX—úrëåb¥:~°¿ßùÊ3WƒD×uLÄõ••dAüÝŽÜ·bÙ¢°*à?™Œ$è‡-VVV¯u „½ õø½ÞÇ–uܰœ†Â| q;\wgmùŒP¹©’:RÖÞÃ;;ï²t bà …Bâ­p§Ç±2„)y¼ª‚ÛA¢¾L*’äp(‹Å"ZaÆ#€ ó½yE¿âø…]§¢× û=×ûµÆõÊö> $-¤kz¬„Z¨AÖq n/t쫹­dåPa¬Ž2ÿ­g®³>ð…n*0$÷ 3fÓFîW¨AÁ¡ñxº•ïÓæys×@_:íïç+:®ðxý:ܰî˜éê5Á28 €¤‰¶ƒÜ¯ŽƒæÃæyáêçÞj,6E«r=ÿýkJ\‹Cyq<•iBÿ ¹µ1Fô¶Ö܇üHôŸT×'—ÝkI¦žBCy_SóØç~gãÿv½Ø#ä xè¡Ûʘ7b”e­º+„ë AK©^¿:A,ÏdIŸY—\¨Z»Rγ‡4gñHeƒ”ìÚ*ò†`ýH°çö¤–eHª§!96¶4£pËB¢¿ßz®ü¥†\-bû„§ÑÌæ®Ûß"šËê/âÂ&b¹8/ "ËMŸr«ºwg©Æ’Κl蘸"™oY[@I9W‘‹84ÃXL4VSÇ8S³`s¹oÀ¸¯ÉUNYêuÞpŠhY$+|€( ÇS`?¨ø3s­¯[ÁÙŽY X Ü´Àu£ÖO¸›IP\ŽxІÞEŽÝÆÀÏJAž†C×_»rUùÃ+]ç2ûŠÖ£ˆ´t¥¿}¸åZGZJf*;½ØèI”ù3«DêÏÔ‚}¼Á+¯Øà\„Ë‘S®¼ ¸:®QÊWœˆz‰f?ÏR¾ª×Œ^¾šxÑÉDöp¾ä:«d6=^I ÷ äV¼Óñµq7J”­ É ¶„x.Ⱥ‡çJ>8«ò¹6\#7Ðj/àÂͯfÏ8Ëq½sòƒÕÕCÕ×·ð| 3*\ðÏÆºòUñ’ìælQ‹Î©ÜÜ$9¤ïW£@*Ðe® F/ð6®_Yþp°Ò÷a®DÈ3Ñ×1ÔÞ½€ìÚsU:ŸýÍÍÎ 󣉒€{È]Í9Sø¹ ‘—c¡Ûi,t9âw€œj#ÿ^Æ=\~’ î»’ã&¡õL+~$’=èÑ3ÌYÚ¦™‰YÑÜ»ëë«ëNŸîÓýœUp„Áçvt¨:Dk,€J>x¡Ç¸_…Xú¦µ;Ïr s[K- ¨v¢­Yçrïî̸Á“[V´:­½ÇÕÇY-`CÛåôéÆšš?ˆ•ŽîϺÎãÈù Ì!YX¦=çæ¨RÓð ~ÄýàöN÷ɳ$~\J¤®)-;QÝúäÙvõýwÈ,·â6U%Î@óó£&B“@–YÏAl^]›v¶“M[ÉìÄ[`” Œ`ígDIõ",߯ÀåGü†U Içu»+ øE Eüžå&ª“ì"`Ë-KQ²TDXèhn5 ïÀ °³Š %€s=E :y6Çà •Æ=C€K<'—6ñ<6­MðÕ…éùcC¸®a{ƒòÖû*MÖr[ISðfüÄ«‘\#4¦Æ:’£¸%rï’k›€Ž>Wb½ŒÉÛÏEúcÜíÎ\Ïò³}³°¸y%0žßÍD~—&ü†â/[ž¢z÷ð.Tä\¾ É%x/‹‡ù=Ÿ7†K¢Úï'ëOâñ~jžçL4µ´“==ÛëJŽà€îVSoé… un&³pð,à`T‰ %‚õÃ]ÃÑ<܃1Âé?ß~¥¿‹3g­–ŠàÚP羈9çé-œ3[pÝ –Æî&)á7hC`À§âø—4°Âl¬"ðHŽ'²ƒmì[î,p_äk4ùvÆr'"˜´ÂL—„³†y¹bïëKýœ}¼)¯]Þ‡þ¿#ÖVÂY×ijO&æ&«ÿÌ͉‘û«ÿ@î-üžsn¢ô¤€ÿfM£óÝ-Žd¯ª¯Y¡³-\vº±•!χf.å,tWGót,xY¢R¹»˜O¸L!¦ 8 ‚Ã$é.ÔñìHy»W>†+bpû ÕâowG2Û@A§µHpµ³¬&‘vœ%_Iå ×åNZÜ!Ë*#]£½Ì}@xðn¾¯,4¶ÉâðhllôPy¹s ~)ä¸yo&À€sÕùÚºuÉçK½à­žï½—ùð ÌZp ¯Ô%j𨛭øA½3xq¹@ììHx´Ç÷²_Ñ7rÒoïÜ”du}Ìy®Âôj_I[Q®Ou¤à{”8·(d/×_ʱéŠÚ$#…,Z·¸ ÷ï*3ü)á¦pü•Õ“2áxeñˆ°b/EZLj0-‹ÁêqHÔY€JŽp}ÁîW¤õëÍ""à·Âé"Š•€Ç%r|(ò—À‚À•Àƒä¡»åLçÛ°ð˜¨Tœ«„²0u#_Y>$C%Ô½%>¢b] nñmÔŽ®‡d¶á–Ç’4 •®A)¹YÄã‘ë›2¨ßIx^â¸ó,pžL ¥¿>q쇕€•€•Àõ'7HðÐJß*Þ+è?ó)<$gÖdÝé>ã³™²EfEzÝ”M þZ¨ó¨DV­˜¢²ÈeeF!é+¬ NÕ‘#No"X”xws¼€—^¿çœ¬ o:PPÃSmÙÈI74ㇿƒs GrÜ݉TÉFÞæëÖ­óbÎÀn?ȬäÄò`0Ê’× m‹‰~55[ßõŸ'Ü)n. åLÄ«0qÞ+Öû7lp:;:œ3ŒL â5)®—!»oDòÐܜǨԭBÃ@‘ç5=ŸNçΪ3ÑùÞ ¡µêHèÁù£±ÚîJwð‘¢ßÀ¶‚}6º’RæÍÈÉ={œñKþÝ™td= ÝOh+=£gøŽ5aviëíØœL>8ïâØ*Ž($Û5Äýs¨Ìù0†”×þfÔÄFäh¬†€ƒ×»z5¥$™ËYÄñèp~e¬Žé¶‡kZÐR‰€«Y3ù@ÝŠÒ£-C#OщåèKÐÕ5zŽº>׸6ùtÜõE¯þ;Œû¶Í ˆÐÿpeê+uöÑ£åèSÁ D–^X!Oy®÷):ýc¹í(ÓFø r’ÛIXˆ –8ýp~Þ¶qþë¸vº†T²×ÏD>õ¾ÿÖ5újÉʶk%`%`%0—xj±äš¯/¡ñ°ÈIËÅŠŽ(^”ªp®cf×ôΠ¬µpfÙ—t~ÁÎÌÕJÈØ(¢Ñàv:º…·Ÿ±`𙡠˜P‹Ào\¾T™Íà…)ëFØ8×;Q÷6¢M•&ü++7{–¤¼ËVw–0ª¬ì†bœÙC]«`ÍVÿ)CIXa6ã§ˆÕø7ŽüWœ"€Ì˜¹<([uõô½aÕ/çv®Ó5<ýæ~œ+,?"eÜÍÂÆdüìa†ÐÆÔ ±®á‚øwm*[ĉⲋ¼ õ É€>_¼xuîWfÛÜrq%ÃGÉÓñ×°“ö‹Í[±ö<±yó îÏ%ƒÆ©W&h97Úu¬sø³ÃNðQØ¿bçøëç/L®çË…Í»ssŽG6ÏE‰SC> !ÄC¾ùƒM§Ú?ó{ŒëŒ@ÁÛî¯t”#dÅZJ°²uËÒ!rúeÂëJáV‘@+ñ"@K‰–ÛÔX?Dª–ED«ør Ò] c†¨K®F Ñ«Õ})ÒRØsÄlßDÊÉ—&c°\È:ßß×ïüí³}D€1ù1d11áe©Xu¿REukŒúS6xeqÇã©çœŸ&1YÞV$Šj%+†€šÜ£”x1YâªÔ‘Ã5k–÷û€*Y$KYœôš{#°LÆrêQ»Ê`P1] CcV-Yt€Î=e ”râðlÞB-E]C²<}üCŸ<ÙÎ[¬¬¬®o  ê™w=))s Žš±ðWPmíð• ’m…*Þ¨ë3Q¿¡±ÎYñ¢÷!)b(Á:ñ¾ö‘"É9° ¥é¢ïà¥ÓÅ9™ÙV2îpÓNZ¯ò+l¦Oäà–}¢ll°…óBAN¡:Y­SÁ“l1-x­]éNÒ|6OÒÇ‚«åm¬ñƒì«ËJîâwA—B}YŽmêërÔ³€:æÛÞ\ÇÁ=YÔÂ5Þ}îINÕ¼ ¹&n)·ìNªk,«É3îWüë'ˆõy”dsE?G³U¾ëæŒP€ þß>ÍlÚ¹²túÞÌåj5Á§@Î!Z˜‡2>]òÜ sÉM7µÛzG”Ñè·ûߣµV®Xãé_"*–ܵæ¬?¬¢íÆ"Bš…¿Ì¦³ÿˆçÍq]ÄQ »§M5<#j3±Š²åê4ËW´´EÎüd‹¿õO™@MkVÆKE?Ò:bÀ€peL—DÀBCnE"˜+“·"\­f%ÿŽmdˆè (ž2y?öújˆÔ:6çÒ%@¢sXY0áfkPÔ¥œË¢ ^| (ÖRàeQPØ_¹6 è<ß»B”½ÀÕvႚ«E.žÇ¡ Š—ŽÐþÐc U.ŽÆÆºÈÑ’˜!Ì笳ôoq³Á6/žü5Ïw×Ò ./fû¬‘ò}ˆûða:ÉøÞÆsÏ•Yµ,lÌÏM½Ð_~‰‡U“››Zqž927ª›™¸/ÂZRÇŒüBÈu~QÙs"̱ÓÜ#¸ý½%mJ[\®`çÚ[’ë2Ž÷sl-½Ñ¼‘œ\½2Ðŧ¾‡–Ë—/•Õ'âðV1Q×fÉ—!Ôù‘ñÛHù7 GÌpL{ÛX"vüj ¡ æwäæ]þWÁO!0v¸­‡.n©Oþê«,²) üVq¯m¨©8Ú?<ø},“Ëâö4£sAË¥tëªU«þhE2Ýó÷Ÿq¿ÞNŸ Þ×Ü¥AlLîm\—â`eF;ª’W´45¯µ)ø4ƒÚÂþ£ð/\ñ6´Ò/ZJ¾”ã5¸G)Ï„Vúû°Š bQDg)Ñ"_«H(_…>eݨâi#°">ƒ¬âGÈÒ¡wOâ¶Æ$m¸Î~Èì4aêV=²šH—@íË5K®Zƒ(áNŒU €0’¥ —1™rÜJÆJbZQmÔ¬ÊU4½øGŒ “³pH¡/¥wP‘©”D1kÚаJsŒ¬=ýé©@Ç 4és%$}uð4d¹Û”ä'w²{w–¶±.áìaGI•€p!sÕwY•Ô¾Æ*÷4õ_c“LFî€Û¡hcOšvµ]œ‘»}wm#¬;Þl~ÖùÜx*úé'¾¼ˆ—†Db‹•€•€•À5”Jòq¨èFÜšbʾº„RÆßðÞÃËh+òïE”¶à'¾ë}ÅI.Gs|ÜÏ®íw.t¼üV˜~Ê$ Ešœx]Lßk~‘½jQ žNŽd³-A4ÚÁJåVZ0«ÇÓ›²ãí‚':4ÒY&yޤ#éÓ]ó°LÜ{i¸çäšä‘tÔ}çæîú˜ç¢\÷b»¨žbÌÝ(0G*‡<°VŒŸ‹drªÑ4sª‚#E´¼>ñ•DïàL­Ú(¹¨X¥Né᪪‘/@pžOD©õÌS$ë "ÞdQ±z^sÓ 63†÷0†MÈpb„JîS,«?åøáám§ö lÜzþ¼§S7ÏøNœ©É&fìÊý”˜5}\îèìeÞcÞãæÃ>O«Ÿu™Àˆ¹ù:æsKM¹„†º˜Å`²îÜœ¢gÑÁ6pnåÞ%4‘·›{ƒY°‘{@Êv–¹uxõ¹Ás­‹S¬$·tô<ñ—HfÜ}ô³0eÊïä™òxbÓŠ6§½÷ǵPL a_t¿T5:_ FcÄ$Šþ[ÄÞHù¹6Y·qÔ‹ÇÖ9i—gÅ’KþA»äŠŠUðxSËÀ_4mûÃhÖßF´«GšWîDýC>V =ý Ï U6-NƒÂÊŠƒ ¢ß'ÎŒ‚ô öQˆŠ”õ1l ¹ ˜ÈÜM¦õr,R°Å; »n‰‹{8YL>´òïsk HÙïDÂOwÊR mŽý²ä#kÉZ£m:/j¤˜³¨Ÿ†cA”)q6är¦~êf€Èèà¡bä kˆÀ˜¬1r9S4/Ysä~¥±)ù ²Á‹T®ð¹rÏRt¯öóc|'á#cTõkIШ¼¹P½ž±¬(‘ ˆìb"Þ |TѶڑע\·~L¨cY >V㞦ˆZ÷áòfÀaÆy&‰þáoþቹÆ4@[¬¬¬^u ´vvÒ ýÍ«lZßp£ò‚ÝÌ ù÷bø‘æ+W‡>e‚ö2)œs¹°ðJò’ãæ‘¾àÊó5îÖ .Œé#ðA>û»[>Fî?CÉ¿WÜ‚ÇGœ}  h,žÉdŒ‹Ô¦ú8Ù»+Lx^.«ôiç, ÷J}<…m} rSð\cç ”ê‹xï•%£Fq¿ËGîFºÔcÔÝÒ™"Wȸٷ}C‰>¬Rê¥Ì÷ã%¥]Ö1òŠ(ú“€”t‘²&rû㶤Ñ @ÐvîÕ=0dq0@ƒºµ- pÐq:Oäo…Øð(Ñy5Pš¼W±>ĸ*P8ÇV?QL/"æÞL”ØQKÙáNw CÁõìYˆì¦‰ø1ÊÁ¢6T°¼­ÌðošÛRÆýJÛÅÅHy|rOc-ä ñÿ͇›NœÑ~[¬¬¬nT ð(6ÏàWr|X¹f“P'¤°ÃN(*!‡„nf%s¸²®¤9š Ç»‚ ´ãnâµ¹u)§Ìºn{ÔÍ&ln¨ßüÌSQ·¥Ô N£qí ‰<Á|ÊaXp`  µÏ›/@qñ^<—S–¬¼d“•Õ¦H‘H†+Ú›Ä7~&ÿaÔÉÜ‹³¢b­ ;qÂW¬\±Z9NÓáº(AÀ˾@A·8t^›.ïqܱ–SÇÃç&é‚.ÚBͼâΔîíTU V»Ày(ßó†`FÎ çzúÁ­ó[ý?Ó××·¥¤ä÷Àc´‘ãwÌ·×FÀÇúÉ{ÓsÇcþ*Ê1™QMþ'ÓGɸpæ·úÔõš¼fZ$ßüŸ¹•çþ+!nO¨ˆç­~eyóÀðÐwA ó¾O u¢Ø6ÜÃ.£WˆG‚·#¢Éþê<æÜÐX"Îb4«äËPŠÞÐËPÿ´*~ã­˜LcÓÊýÎM%Fy–²/·&)½"§+7ÈÛɈnòNPƒxOí'”1 AûeýA.KºêXµ—Ë•óò2Ïi€´®íRî\Î_ÉP!«…ø$Ê~? ø­¸))a¡Hîêƒìðrﺄk“¾« YG¤°‹#¡>JñWιEÉZPS#O nZ|Êj¡~HÉ5L@Cýˆãò%²½€ÜËTw9àFîQW]D§’˙ܨÞpg¹óKo\aú&^‡ÚGD.`ZEH²Ž¬h¼@ÞŽ<éœêrãÆzÓAÄ+É@c±\Öµ§?—ƒ'q»â‚ä’ ÊÅ+î܃K—®Óî3ì_|¨©í…iÑþ°°°¸‰$ÀãrÚKx)C™Õc¥Æ¯“Õzx¸E•Àb]ÀH=†w'}˜»†VUµø¨qé%t8R™nãûX±Š§î[½zôIOQE1o*“—‰)q=;R>ì;~âÐÙ™ŒOP cÁ¿|ñ's¦œÞÑÑß;–ûk¤É{,4ƒ;g(:’óX™—ü¢0Ii½)‹ëŽ+Ø~þš’ë{‹ž›ÎP$uŠª,tÅý©óæ®)ª†É˱€âz·¼N®ygdú=€÷zååÇ瘄tAVMõ9|nj'*äLÄ5’M?GhÛ¿a¯xQRßÂÊö¨ï?Q[_½Š܆µewni({Ç–-äêyùþ «wævqÎã$ªûtVи;g@®p³öͬh>¿‹M´ùœ¿àc>ÐÔ²ŽÅï wÊêVA˜Ž·$¹?i5_îOr/’Ë”VùŸ90`”pq¤PKÑ—…A®NºâRò¥Ü+,­Ü»ŒÍv…œ=Ê ¿Žáú"J8™¥ B+ýRö÷ÜSa2|ß¹-iB× Œ°DeÚK“íOJ¾@@”é%%^žsÆ £H[}€}€2Àwq4’ä ¦ó;/§s§ "|Ë¢q™`°Ää†&+É%¶ t x$(A£,ÕÀ%×N ™¬BF’•ÀŽ,0½´ù="z‰Ðž0â†ìÆ$+ øÇÔgÜÜ#êßi€™„'Y‰t/Ðöv®…Hÿ”^‚ÿîÃ\+ý°ÅJÀJÀJÀJ`éð£0#\/¯ü‡U¨×Ú¢‹Ÿˆuòkå56i «Œ×Ìvûý¬ú_á˜y+"¼§ÇÝÃ(íç9iÎÕPtÚ“®—8Åêí¼Ühfö7‘ób–’W¬°:gÞl/Ö°uüh$á‘÷][ÃûJž^$ðÄúªÄ} !Ùä_®õÆû68È:|–¹)·ðÂj¿(ÅŽ =»»[žæ>\éšÇ|s_rÆc§ê¶u#gic. “ë'ëËhMN&‹†ø “v Ú)÷šV‘äA¯›&·‹áì¨ûô­géo1Ë´­à-ÙÈØ{.5ÀbZ=ùVÉì-‰e)–õ'–JÜ¿.Ä-|¡OÏ3&·c F©}ðòeó¬@_z)ÐÈÒ+«†øñÖo¸¾ûq.Ú‘ÏáuUÎn’݉—¡0²­¬Þÿ^‚xÊ~a‚!«ò[ˆP} Ò¹\t9µ‚_øP¨^)Ó*Rü\Ú‰ò¤ã" žƒf½|m—¯0³wayäžJܾ°Žì*‡O! GÌä.q\nb†,Χ’Ê-KnT"¬ àÈB’šp“uBÛzq}Rýê“Ü› HÜg+9MÞŒ Zå¿…±Êuª¢»ÈérSßòEDøw?\MÔ«$wn’ú¸±‰C£¨YŠv% #žÇÓX‰z°–H&r){ÓÝ•$yLêDðwk›\ÀdQDÎÒT‡ÚŸ¶{°ý~¢¹õ›ù>ØO++++¥KÀÆ",1[ÁT#Zí_ô»yåÊ‘×Ëw½ðP¤ù‘à ÓŠgËK}} °ƒžz-¤:æ:Á¤øƒÝ—û°ÊùNøŒfQŠr.c/º¢éeï^'3>ý.¶žï²gŽ•t÷ÎŒë=Q¾¦vÇÎx¦7tüš8æšÏ’ñB†NÈcLo0E¨…n¢:ÞÀy¡k¸wÁóæÄ¹ÁÞTFºy„Ôuƒ6ÈCÇ{{å~åìÙg«,ï{Q¹ˆP–ÓX§Ë¯õrºÕó¿€Wæiæo˜ÕRÕãêüÚ¥Úä›ð%,Tað|E•“‰®e‘|¬©úÊC‚D„_0`Rd=»å~5ãä¶Aö @µP ¯¹Àž¹„NYú¦÷M陦µŸïð;˱4bíÊxU 3%×Ó*½Š¬Íí£$HñéZÖsdø–AŠ´¬B²ÜÑXjHغ´JÊ'·$‘²ËØ/×)…¡5¡k9GnI"h—fäÞT‹5FßeU¸ºv6”R¸Ú{ë’&Òìêæ¿å‘¦½™¤WòiÎø÷\˜K5U£8o%“¿IuY:J è<†+”BÃ*¢”ÀÇ›?åóÐwq"¶-K–6áv5ât_7– ¹IÑ–«””{)þš=€’°8ûš‡œ/þàŠóÍŸôAø…èžÆKnW®±"”hQE•³€q?VbQh;—2YÚ•…\ryú•=+œ_åï®íeæOÖ”íqí‚g¢URòe­1} E2ŠP5ˆ ™À—n}ÍPó8,­K<׏нãÁJܤb¡q oEãR¶xñMdéH¥3Ž4àHEwñL$,õC–˜wÉò„F]áß÷öö[Ÿ90mR›Šì?VVVVK“€$PExš‡VB4÷?¬øžˆs’6ÐÅ‹®2÷zž·¿³S9Ì«´x3ö’Ýz$Œ7s*ÜÝ"ý%úUÄF“_”û•šeQ‘©&dp1ÑEbAÑ–§þ¢µ¼¯©y¬Í[÷i<ã>Ɔò@¥sʼÈÖZíWò@å»ÐˆS¸0©ÈåHû³Sn=•\:/¤Ãä´›‘”ì‹ ¹P‰O!W()áú“ —\TJW„ðã³ÿö¹>çËO_5î_ƒÃ´Ï1r“•E®Z ²°¨˜ºøT=ã€$YWdÝPÑ1"´+³ør{œ¡ŽÃä09tjÄ„¾=ˆUEûDpW=«”s„ú£6T»v¢ö7þ¢må¶-¥Îž»+ŒÕ%oÉ_<CfŒt^7tõAí¨M¹ˆ)S¼@”¬:¯Ç¢ò·ª\ÉY˜‹½Põ™ò?ZŠÝ¬š-VVVV‹‘€$PnÃê öÄ8ý-›Žj³ÅJÀJÀJÀJ`Y% ’¬åËÂÿ!Å÷F"ƒ ­Ž-úyL(Ò†dâ‰øÄy¨âof{ZÍ;¸æò`Gû€È¾¸´Qý=Ô'€0½n¯õ’p`qö¹êpaŽy‘€7ÿ¬qL¶ÇR^W/­àÏëä1gÏŽœL JIDAT'ÌèÿÅ£àV6>À¡³ûœ;Ý5x4ë¿ãçòáÃ$Q\Âõ˜ìÀuü%’ÈÄQY%Pù¡q¡Ex£xqhþ,¾d²§ƒhW,æs›L© ¥s(k‡poR4¦E+Œnªóq­±ð¹rEœL£Íi7}–}‹öú@§Âs‚ïZ‘ŽB¯q“™LÑcül<ùä‚{04ÕQ—ú\°@vZ¸™ß²±¤­÷lê§”n¬©)ÅÒ;Y(™¸†ÌïÀy3Ûn ’Ém_yÆñ3'ðµéåbwy„øÝJ²‰7"ïG8ìó“îjºÆÍ,|ÿ× ƒ#߯Ì9h/Ø×b_u¢Î@OË7>÷ñ-¬ýWÆÝw£ ËšðÓ—†H?ãcP>Âï²Â`±¢²Ä)áq”BKùVp¹U‰ } œ¹.ÉíHy2äú” dJUÃX5Æó!w®‚k2æ ò›¤áqˆ/K‰ê3ÊŠáp/ÊŠWñKo$ª¤uKÑD BîYO¿0`ÜŸÄæSÎ YMäŠ$낊"A)’•¢MÉú¡¢]²D(Ò–Ü«¤è Œ( íNø¸]ÉŠ€VÍùRìåf¥c7D(—+“ø!âÈ-KÑ«ò—\@G.YÊâ¾`#îÇ:ŽSòÅ,æ"hå¢i©ŽˆàÊ‹2D=²P¨”AŒ™üï<’Ë øÈ£p¼*’¢‚I6Ê›"¥ˆY’…@•êQ¿¤dÁQFø_yÓ “çÐ"Ÿ¶dÿ£O|²e¯©Ðþc%`%`%p3KòÅŒáãé0ùXŸ±kQ?1Û{%´¢Õ±™må+D÷ :‡.ewâmßµ°Oßw‰îãh•y¶ícñÌ1‹E»ž¨7rkb¡Lî4=üå^NÚ‘+z7¯ª<Ç'oÓ%¹®IQÕ )¨¸¦dËY„+¶íœ9ã¤R¾÷5ô­½¼H‹*V(m›Xýû+7”ÜoÚiûÞ,³Æýòœ‘Æ–±DAŠ4#9‡ÖK?zQÎã;µh‹ºŒ…®,›=Æ/ ÏŽ°7ç~µ¤{`Ü)éʺ„¤vÝY˜A^ð2~sÕàÒî|¼ɉkzE°¨UÆèP1ùêäû^7þRI¹ÿW|íä¯ÈøMâÂ_¢åïßSæ¬J¦K®2'¾Ã9øë+|®4µì«Ÿø[Åå.ã»æ—îWÎ žãóÑ ú/ŽŸù׺À5âˆe(93Á2T´\U(Yá“MáÁð1ˆàÁÕ©\ ÿ~†%¤ …ke —¢-«Ÿr¶‘ÝÜ„Á•U‚Ž`,TDŒë’@Ë*ˆèâKH¼²6œîL"‹ƒBÏî†W±®SΕEV ŸK"'¹hùz/ñ?«0Ælk‡¬+Ê¢ÎܲUKÉ e¥Õá]‰*®>¨¯XMX¿‘Cý¯%ia>tï Ü“zr’È­ì2@AãR?U‡ÜÍäŠ%!‚üQ,<—ò—©-Yl6¯M ˆ@ÐêÚ¸±Ð¨]µ©(]wmOÞ µñ4û,Óí?¸©­‹ß¶X X X ÜÔȸÑ’~••Ò#àžž¦h-øÙ ׃bLŠùKN§„Çv¾þBg¡r´ã 3²Ô6ǼÚËqgà+¼õÎð.ˆJÅàÙ’éÄâ+†Zù¾4`@ «Šòÿ9SƒÔ%Þaú/N›ï»oµþÜ€)7‹/®‰š¿AÏQo†¦Õ‡÷–òYçt|`n席{´cË-É?–8à?âJïŒSç4E÷åäÀÒŸ^Ê‘šª*' W`–"»øAÍïL×=ïºÉ/±xº'ÿË)x6ãÆp8Ãa~ LåŠè…Žy’k£ÀÙ¸ët–eS X³ÔyýÙ‡’òܵÜÞ¾‹K1D4ѧp¿Z²ËÏêՃý¥Œƒà„F†Ñ,¨Óñlú(JÐl€^`ìa›†Kz28È?&K™a̘G¹ÄX>ÝN—Ôqaõä·™¤uÑïxÑl%óo—¶3ç5?gÎy©–qé”ç*ËWœ>ßúžFç³#½‰½Áxôaæï뙺·rî:N­œ·ž=šÐœ¥?Ã5òØ•ÅÔý‰=×ÒÒßA(¤%Lꟳ¨#×eùRÓ®ò´?ö^RL~ î”õA|åÑ÷5(ÚâU\Ç5Ê3ah«F0)î w+¾†rohå_¡f¥°·>¾ÿ|¿q­RfpYÏ+kI]mÔyêù¬⻑x 처 Èê¡mºØâip è·"V)™â»__m~ TQ´ò•EBÉ5{ÄÙûâ Áƒ,ž6Vê厥ü"o#¼rŒÍJV–‹(Eàj!q ˆò;°Ô¼™Šrãj&â—2Ä 8 „ÉÒ£°¼r “%HV¤[ Å+w5~žàöûÏøÒ~õñ¦–Úœ|]NjÛ)++›Vø?DN¬IüÓ±hä_"­@Î*¼3ŽÙÕÚ•~†KVvÕæ—Í’–Q8ÔžG²²– ½Ž¤pës©Å}ï{ÅIJ©OíÛåDš›MÓûE6–ï·êR;3‹»gYµ× ïd?f4ã·«ÄmsÈ´‹™ËX¤tj{Fµ¯ÍŸ›ÖÅwǽÈq_"*KÈŒb ü÷Î+£ÿm„@£3v.æ§·‡ù¸÷åyèò;ry—ã-³¬=æ£;e^˜kZÁ=0¥mg eÞóˆ¹6g5¿‡õãÁ{·Ø9ºÏ6:Ñ––Éûlò~^½zuYYÙ@mtÌ©£òµh¤5d±/ $øi‚G ‚Çz9¡ÛOç×µŒöì…K±“uðý-yùmd)•îw€óqpÿ£èñQ%Úë$Æ1BÔJ)('c V„!t ‘ѵJ¥÷§÷¾¹†\¹E'¹$í?6lHãr«PI âXHäj% ±¹¾Äp3Œ[õoÁÂ@Û&ç‡Æ¢Ä}ₜ È¢¢èZJ¨øÈ(Ð1Šp¥èYŠ`%˜ª¨\WضK‹Ú—»”2µËe¬†¾i¿Í;IÊ(0ô³¾ýÓ~c9Ùˆû–ÀÒÕALÔµŽ$‰»ˆærùêeŸŠ“,*â‡lÄ­l…Æ]šªïúYïúÄé}êŸ-VVVV×N NI2SÒaõïÑjm–¥Üþe<9òÉ—N9í|¿fŠ@¾ØM7™êJÞ”ˆyĤ»Õ"§0M‘:D‹Dÿõ©®Áï±yI®{Sªµ_ob D¯÷±ègöýŸ¦†ÄœèGytUUt­HÕz:ËÊ¡üRÈå%Ð!!~„Üš”á\y/ò¥ëÀ»Ž~„¢UÂr d‚y÷(åø0ѹRì dÍ^)ý²€˜(V)ürÅ@‘[VB1$ø®$ƒÏt”£—+Y5Ô7µW‰Û–€”@’ÎWt+Y/d)1n\T!à"‹H&ëR½f{ÆX]X!£]ßX{d¡9_Ѳ6p¼­ÌiÀ¢"`FõÝXiþÜ÷²öáO´^ÈËÁ~Z X X X \C ¤Jêüxd3ŽIøó"™U‚.^$O_8µ¼±ög5c7X Ì€VÒO¸Îö1…pJF·>RÏú%ƒGØ´dË\¾ZûysKàeÍü:–Ã×÷ö íÞ³û¹ê ÿ€ëy•ƒBÖÆ6¯-1E§’%¢óJ9FRE¨RÔ)iâ*&’ࢄ‡1r¿Ú²®Ä¸_)+¸ÈíIö PH¹¿ XPîE¥ª$—}Y5´_€D.T„X3„sšÂÕ*c¬ ¬r£ªÄÂ!b»À’xrÝ2a…9GQ¶HnÃULm‹{"b½\¼éJûké‹Âöêo„s5fY=ÔæºÕ çvB ¿ñÎ c ¢£ ýÛ@£³Á[ÿä¯4².W×ñ·]³°¸¡%àUWzo#ªâûr‰˜@‚Ì;Ÿ¥¾|®Ï¹Â~½Fl±¸&]S²Åæ7á ÜÅÔ,ä~õ"Ì›ÿ9Ú1þŠÄ+Î ¸&ƒ¶¼ê¸î- y )_ߟùBÓ¶—²YÿWñEúpE©wÿƒ»Ê½Á†¬!¨ÄÛ5BJ{,J&&,âSœïÉ`±W)åÑPä))ÿ"‡ë»þ6 ÄïÜÁ2»HïÊ8.W*Y'dMÛ”ÞŠž%° KŒŽˆäÊH.0 ÷)ñT”«¤w(Y*ú²”ˆ»"b¹¸)ê§Ü¾êàœˆX_YæM‘ËaKÄ{'°ÒÍØäîUŠ›Ù%bÈB£úvÁñP$,¹p±zd ž'4õ_ò²ûÊßm:Et’Ö¼í§•€•€•€•À5”€V—ß’|€ÌÌó0ß@Ó<¹§BbîwXlz²½ÓøÖó ·ÅJàÚH ±®|U4ê(Mâ~rtf ZY`ýÌÅÔÈÏP;–'ÃÌ&ìï›R3Va^;2øìï4n‰Fˆrþ½¾EëE²(¡ ¸âJœîJKÆ &dÙPÂ@åÞX 7D\Žšª!lK  È+–Ý??:l"Rµ QV‚-X\äò%÷(‹MXOäb%ò»¬"¿ø†êÙ$ûøSûLÃNö ĽÈ5J–˜3R&g‡BôV(äz%üVB÷*J׉ŽQ¶ç24>ÔõqÛ†S‡¢[m绀‡)$~§‰/bõø“'šZ[rí¿VVVV¯‚¼+KW'þ[YúÏÿx LëDÅñ¾Nhž?>Õ9²ì™†_…1Û&_#¨¯¯/-Ííöb™¿‹ºôº-ËÜTpÌ*)‰èçÏ Œ|u`ÀdW‘:b‹•À²Hà5á‚Uh¤_ûñÕÞÇöTþ8¸û+‘»¢.E¹"@ È¢0»²~ˆRµ" áü•1ã:…ó”p•RÆre—éBQ¦dá8wy|Âò;_ÖÕ)ð‘s½rDnP>*ÊŽ.P# ˆ,#â’È LÈC}QRÃò ®Jœ(Xr£ª<ˆˆÎá&k{[÷˜ /¬m7d†7uÀÈ LÉ w7–:÷í,u6jœrù"E ÿ|…*~/ëf?ûëMí„,´ÅJÀJÀJÀJàÕ’À޵5Ѹÿ1\êÿ9/ÂiNɺÍk…×ÂIÞCŸ‰8Ñ?9Ù5tœ~Z×–WëbÝ„í®*{{4|}å1æ¦BKYÉ—«lÿ^ÿ¥§sä[½i§?¿Ã~Z ,—^3.X…üá¦3"C=Iýgn6rçz"lï»°V¬m\Ÿ0Ñ¢ÎÆVeWòA)ý «°¸âwHÑ—…B%ÅGK—‚`»†0ž"£ã•À¼0áz5€ÛT%‰•D‰–%”K— 8”ˆ_r¬=eöË5K`Eäu¹u)A¢¸#²¸È]k8E¦õh̀ʅ¨ä¦%¢¼ÂèÊks¹t éIAÌìsXE¾ífƒÏfbÙ'äaÆbÿ±°°°xõ$Ždå>+R¬+ËÁïŸ6ÞSÏd‚ÈWº†TaøÕë¥mù¦•€‘2TÁø'ô@…Ùu/“/ãEÂ×|-3\ò½–«Wϳ?·ÂzÓ Êü•’ÀTÄûJµqÍêˆ`ãðî%ïË{Yqz ú-4^¢èRŠb%R·\´” ý7¬ $`À†ÂëA²¤Ü hˆ›!ë„Èì*ú­Ìâk8æ .\à 1\ÀB eùI\™Ú±J¤q E¾’{–ö‰.à£XréRè`Yg€ÄGiÄÍ«oH‘®ÓŸ­)åïCÄwŠâ4·pø!•|)ó_°ÀCb±ÅJÀJÀJຒ€»¹>ùòÑþ¯Þîé ðqýŸ5v޵}3çO¯W‘-V×\›Ö”lŒE#M€ ¬s^7‰êg½àÙLdøH{{ÁÌö×¼¶Á[7É_ª¦¦=Ñ­™ŽMçîAk7Øý ú5zHјП¬ÇÈ0®|ÊŠ.0! ¢"ˆx²’œÇuKE$påÝ[”ˆà:ñ"`CDtYVÄíq\ç©NYG´Mµ¥·Žñ:¿ @$@"’»Èä"¿+Ÿ‰ˆîr Ë•à<&ý¤Ùü–“ ž©nh$GÌÏ`?­¬¬¬®# ìZWY“‰«²c™á–s£¹¶‰¾®#QØ®\g clðrÉz¼2¼ŠhºçГ¥ÛZ;®³ët#wç† S/Ø“M•ü¾’Å[|Ç{‡ã·ƒô«4pY?ÄëèÁ-jœ[O„ò6YEb—ýJJ(®<ÏC¡{e)ià.‹†Ž‘k”Hïg²xl"kH–•²<‰ìærø©¸láŒæµÕQc11ùG¨T}ãü.Ý—°Î|KÉÓ€‘f›Á\‚±ÅJÀJÀJÀJÀJÀJÀJÀJàµ*éÏ7Kq?Ý´­¶ÔÉÞøáæ‚ûx#Ö낉L¢(S¹ÜY“U]y?DïÄB¡¼²šÈRQ…ÛU; DÜ Y.”_DarE:/d#!}Xçˆ/¢Œì ó+/*í/Ç‘¤.‘ÑsVì4N0êøÊq±ò]g?hæÙ˜Ùÿ¦SWò˜äf¹XvœVVVVVVVV7¦n&2y›š¯Ñi,ÏŽeÐþwC¼~ÅøAnÔ`ÖP>ó8À•EŒa€†Båúp6øßÍóœU,P!>‡‹Bô&⹤‡JP¨Äˆ ½Ëÿ9O`a ÇûKp0ÔAÝ/rÌ Y'{Ç«3-NËý¤E[¬¬¬¬¬¬¬¬¬n Ü”dæåûRÓ®øh:[á$Òk£Ž»JzØc“çë ¡x $ö5üݸP†PE3™ü’Hè·¾a¸¸0ÀAàÁüA(qüÑ´Îû)¸7hçð3'èÂ~Ò=Ø]Ñÿ[Ÿ9`Ã0"([¬¬¬¬¬¬¬¬n\ XrmŸÈ~¹¿%–ªJT8¯Ösý¬åÏ-s²n¹ãúe€’2PG9äp>)A@8Ew˜ÌCNÄÂä1õƒaܺ†ày]ÅBÒSžJ «jŸÈìÒºÝl%`%`%`%`%`%`%`%`%pcJÀ%^WY@~¿ÉpÑ7)5‡±€,±V{º•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•€•@a üB©Qº?žJIEND®B`‚libjwt-3.2.3/images/LibJWT.svg000066400000000000000000001241371510461717300161100ustar00rootroot00000000000000 image/svg+xmlL I B O N E F A R E libjwt-3.2.3/images/favicon.ico000066400000000000000000021101151510461717300164060ustar00rootroot00000000000000  ¶í¶ lîÀÀ (R…€€ (­R`` ¨”ÕZ@@ (B}ï00 ¨%¥1(( hMW  ¨µq ˆ ]‚ h勉PNG  IHDRôxÔú€IDATxÚìýw´í[–†}k­_Ü9|ÎÍ/UU'º¡C5Ý¢5´ˆ‚!É’ Xtc ÈÙf`а…,Ù ÉH²°l É¢A€ ên:‡ê®®**×K÷ÝxòÙgçô‹kù¹Öoï}ÒÞ÷… ïí9ÆyïÞswøå9×7¿ù}ìoý¥XÅ*V±ŠU¬b­àßè XÅ*V±ŠU¬b_ÿX«XÅ*V±ŠU|cU¬b«XÅ*VñŒU°ŠU¬b«XÅG0¬oô¬b«xWÁA÷¯ Ààðô ô뀢~­ÿMè÷²™Ï“bý¾XÿŒ¾70Ñ¿„é7ú€¬b«x±X«XÅ7O˜$í‚’ö:€:(©¬Ø°¥_ãè+è7?‘=¡g>Ã|ò(ñ« –úg6=CP‘`Š€€çÎôŸ'ú5§ºúµ1€hæ»V±ŠU|ƒbU¬b_¿`òJ ¤½à(É×Üp”ÔsªÊ Î0ŸÄ¯‹:±2PrSHL‹ˆ1€¨õŸßp  à¨h˜-*âxV±ŠU`U¬bDP¢ßÐ%õƒþ(ÑA‰Þ$øë⪕ù72–ý~ƒ2AÏlüž™?õOàÀcP‘ð€·4õï; ä`«XÅû«`«xo‘PÁtõþÀ·cšøë Xß¹æýjÿ°Æ¢¢%BC:^߯ÿœ‚þ„œŠƒ/8ðÔZ‚Ú«XÅ*^0VÀ*V±|ø6@«øïpÀw鿯ƒVóûï&ù}˜“ü{‰ë Ž)©±váõ!(ùŸø ¨ø¨µp o* öAü‚U¬âC«`¶°Aìüïð;|€; ytW)ܽ¯ÁØtñkVÚiªØ`"1 %Fãç½£‰Ä8¬;L1 RD±bñܪ¸½éâÖ¦ àø<Âó“™qxv³2c”P“TÑ6)@)ÎØ ʰ8RIÛa,Ñ$"‰@oÊU9Ûlšà„.4Ê6{íŽ×fpŽî A*ªE µ²€cqä<ßãŠ3hAê¡õ_,  éŽïð'@äÁ/ø¿B zïÿf¬bߘX«ø0„YÉý€%ÿP1|€ìü¬¯“}œ*–¤Àx’¢ÕOa[ iªØ$T#‰/?ã¬#•@š**.%òÙä< % šnÛ ‚ã|ãÁq8* Ðh@£lã¼KÉw™P ¨,s´úw,޼/0 äe.Â!F Ýa‚áX"²ŽÎcöÕÇcĉ¢A’PôŠyÁò>ÇfÍV…œ@9/P) zÅTvlÞÿ¢`¶ võÏ¿Jü_ð‹úçK VÁ*Vñ-«`ߪáDw~ÔÏý- |3š÷$}á+i Œƒ”C‰³v‚Þ0ÅY'fAŠqb0‘¨—,<Øõ 8Ãh’â¬#ŒU–8Í*÷¦ï+åE¶’¯,” Úýd©¼R@µdÁw9e6”óÅœ@g°ÜgX‚a³nC–µj% ç½xi¸ž1*<›Ãi`Œ „(Q…áXâè<`Œ¾ËQð >Ç+·}¶Õ°UÞãp쌣 €éyyŸZ³ÅñD>©þˆHø ~T œ¿/ߺŠU|cU¬â[)lÐXÞø½ Q½ML“þû íÏó¤’D¡ÝOXw˜â¨¡3HY³“`¤# Ù_xo»Ÿ`H”òŽÍá¹a¼¼qžc3” S¥`Ûbت;èÒ¥Vð–ŰV¶Á0§‚Áw9Ö«6z£da²T ¨-”ó¤$4"çq”óžÃ1ÖèÄ¢Ï(ä6jvVÈä<:Ãq:"°yôC)`4‘M$N”Â$RM<&8Ã8HÑ$(åé³×«Jy¼Ï•%Xö]ïCA .ü¿à·êŸ? j ü€Ÿ«6Á*¾%bU¬â›=†ýí ¢Ö÷ë¿Ï’øÞ—¤ŸôÇ Q¢X)Œ‰þ(e‡ÍH}ùјMB"Þ™¬ï/ü(a;­œ›agÍÁh,•¼• ¾€ï ¤)Ð'(ç-TKj% gøÆ¼R@)'PÈqH žGðŽÛ›.j% yO`0“€¯ŠéêŒSìŸFx°ëÁu8ªE ã ZhO$8°³æÀw9’”ø–ÅPð©Xæ¼€Ô"€âDáéIˆãócBб.åªE‹mÕmµ®‹‚¼/”ç°÷!˜E ¾WÿüiÐÁÿàŸ‚ ƒÉ{þ¶U¬âŠU°ŠoÖ¨€VX¿ÀïÁýFOÿ}Y雤­@t”²Î U‡ÍˆŸÇè S¶·áÀ±`Ø?‹Ùp,3‚ßBø\9—ñéýJµ’µjŠ“Öb_Æ€ZÑ‚ÅÁDâÉQˆ» å¼ÀVÝAg I¯Ïfœk¶`L$:ƒ–`بÙð޵Šáäú<»úW 8mÇhb '6êº9mÇ73¦Ñ(Ógœub|êë— TÄ,“¨…°Vµ‰2Á®{f¥Å ÍN‚³N‚·ŸÌ yŸ£RlgÝQ›u[•ó‚Y‚)S¼Çz`¶(&M~ÀŸðiP1ðsžb5Z¸Šo²X«øf Àk žþ óöþû²Ò7‰;%8›µz ŽÎc6#vÒŠ1§,ŒÔ\úÁŽÎ)™¿żç@I$‰B!'°ÓpÐ& ás‚ÿ-(½a‚Á„ ‡‚h”-·ã+?CÈ{Õ"½¿Ý‹il0Vh÷l¯9hT,œ´¯‡ñm‹Vÿ–ú£çÝiJmjÑB!'ó8ú£ëQÇfØYwa †á8ÅþY„­ºR^ ”°-†(¾ù€*ä}Ž[.Ÿrò¿ô½³(L*Ió ;Lñô$b–jE‹}ÏkÔJå‚€ïr¸S¶`Ùq{Ál1°à‚„O@\* ºïúV±Š÷1VÀ*¾¢à‡@Ìß"óÄö}IúÁƽaÊŽÎcœE8jF¬=HFRÍÀøl:>F2K k ½‘Óörvõ'ÈšèRœ÷b¼rËGÞçØYsðè0¸6Ù(sžË‘¦@g 8ï%X«RÞj8h’+(Ð([pm†0R8ï%ZH8ëÆX« Ð(ÛØ? ¯ü~³úOpÒŽ&tºƒa,á9µ’…Á 0þFÍF9/Jà°aJô†)Ò5Àµ ¾@+J¶!nm¸ÈyQ¬Å’Š—&nBAæ ‚-¿dOŽ"·"86ÃíMWm7lÖ¨Xȹ\dè=æº ±©—üqÆÀ?ðO@&FËBV±Š÷9VÀ*¾QÁAºû”ø¿¤ÔÐÃó]?zg¡ý8QlPÒyýÉ„½õ<Àpœ"‘ÓךE|‘ý› {ë.F‰Á$½qõ®¸CÎ NR´û NÛ1vÖ¬Ul´û Z½«“ß,üß§Y.NŽÎ#s_`½bc¿Ís}w½lŒŠõ+Ðj¾ÝO4qÎÆY'FÏ×Y¶Å°Y£ÞDÅ‹ùŽIDÇÓ¯Qpte®Ã‘h åsÀÐé%8ï%`ÆDIä=ŽRN Ý¿ÙÍw½j£Q¶¡pÜŠôg x.MÄ©ZHD¨%²Uwà9„´û ž‡ ì­gó]ŽzÙÂ[66J9¡OÅÀ,*XÀŸµ~¤@8xWŸ¾ŠU¼‡X«øzGD˜ú—APÿm¼«}³Ò“ ’´cô‡)”blH$©Â³“ÝA ίOø?Ós)YLB Ár‘èÞz>¹qå MàÓ:ŒS(G¨ 9[TL\L¾)ïMáÿ‘N°L'ôv?ÁzÕÆvÃAwHª™²6ª´òH¨Q±`q.,¡Û ©BΣ¤wx>-"ˆ«@ã†R'­ÑÌ袔@«£Q±‘ÓªçÝ®Ãð£ß[V9—á´CÉ>ç Ö¥8iG™°QI F) ‚GWò”¢Ƚ œSÂ>lFÈy©T°ôDÃ$” ‰ˆ°Qs°Y·ç~ÇØt„dIœEØ?‹ØçÞd¨¶»»í¨Ýu•‚¥,ë=M̨>à.€ŸÝ¿ àïø)ïê“W±Šw«`_¯Ø%ü Äè/ëß¿ëÄŸ­ôõ¨Øq+Æ“£==Y«—€3†—oy$‚ZÕ¾ˆúI0 @§OÊww¶<ÔJ´J|v^›#¾`À0$õ?Æ(ÉìŸExiÏC1'°Ýpðô8˜÷¾Õ‰Ïsˆ5ß$Ó‰”}ÜŠðêmkUOÝßu% ŽÅ`[ $ÇË•c3¦ð‰û8'!Ûbxtâ'«—,¬Wm4»q¶Šwl†Í:%]j]Ì£Œ½i”r²V/ÑÇ‹áÞŽ§^¾¥G'Sš¢ØjXhvœ÷vÞM 9—Ãw9ú£$#ô™ÐÐ<<‡#ŒžŸ†ˆ•I û.GÞçh÷o> @µ`áö¦ ‹³ìX{‡àÓB6†*ŽÎ» šÝ_}è¸àøW@šüÞãjŸkxHvÒŠñè ÄÓJúa¬f …“VŒrÞcÀvƒæço"­™P Àsh„oIŸG»×llÕ ´œïUe †¢^'é\’iõbT‹6ë66ë6ºÃdNØÇí GrnVzßãR)µY·«[Wn?®ÈMq¢ðì8›OvÚŽQ.X(øDǪXÅû6€ïðÇ@ä¾mýûwŸøµlì8”ìÉQˆ/½3ÆñyÌÆÌþý¦Õ¼vŸCªi…å¼À½m&×& yòÂH÷é±ÈŸ†xyÏGÞ㸽éáíýË|€¢/` † –é¼Õ/ˆwpâþ®rÁÂVÝÁóÓP@¥hÁµy¶Êž-fã¬ã«ÆÌ±J/³ã½.”š„…±ׄ³!$¥œ¥¿—˜ùiª®]ý›ã> MY«Xh”mœ´bøÇîºÛb×f@•ýgúY®ÍàU,µ^±ð`×UJA%)#566Ôf8ïÆ¬7LÆ*ó%pmŽ(N¯ Ü[wP+Yÿ¢Ù%¥„Fx†c,Å!˜mIá£Ã©^2aµ’…û».ìºØªÛð\®Ìq˜mT@èÙ‚ÆÿXɯâ}‰U°Š÷#\Bßðc ^à=$}( ˆŒRœwÖ¦xýéû§!_®—Ï­Ø2ŽSl7ÔËÂØÅ“£àÚ™~£AÏ€Ìz7“÷í%8p#ÜÞrQ/[Ø îí¸¨—,e‰wÕ"0Å€àG@CŸÿäV¸ŠU¼ëX«x/áÌQþ ¿@Mÿþ…¿yhÇ©bgí÷·bÖ(Û°Ä4 1Æ–ù‚þ½A¨ØÏ~¶ÇŽÏcÜÙò÷9îIwŜȶyQ?iÅÈy›5{¦OL«øëüsûBF“”`tä}ΗtÊSjɤ 8c|z‚a»áÀ±Y¦pW-TФî·hÛ=‡Xÿ– ¤¥LsñlÑ&1œ´bÖ¥j½f³¼Ç•ഢΠñ÷îÔ—ígÎåê;^ÊáΖ‹Ï¼>bÏO"È™)‚‹dËõª;[ž•Lñè ÈL“¢DêóÊ2ÉéešJAàî–—qZž„Ø? ñ…·Çl£fáãw}¼zÛG¥(^´=0‹|„ üqÿ)H]püã*>¤±*Vq]Ü=DþH¶xÁÄo¨a¤XwªÇG!ûõ/ØP¯Ü—bòëÿ+Eø®ÃqgËE¥ ðÒ®‡î0E£b©55Õ¢€ëpeÄ‚2hx†¨Õ&êͧ#u>†{Û.Jyû;¤¦¤ˆÏ¢•p"žŸ„ȹz~_Q’LÒ¥2ƒ‚&j¯{`³f£?L.©ð]š; ±Ä· ½jM•Ò†?Ú1PÇçJy’)Þ¬9ènÞwÆ€Ý5E_P"|—)K,F”¾ü΄½þd¾ãAå‚€ç2&¥R–`¨•-|JΖ˜Ÿ|7hù€rA¨ùF8iÅ,Ia6e÷¶=86Ãp"ñèpÚrR ¢PêÂN,ÑíP _‡»|ðH9å–HIˆÀñyÌ>ÿÖ¯ÝñÙÇîzj½j«rŸœhjà{ü4€¿à×,çbµŠL¬ €U\ŒHŸüOVÿï2ñ÷G)ëôiŒo4‘l8‘H¤ZJ‡î³ƒÔÄ­Öy΀[›.j%ßû‰¼Ú¬ÙŠq‚b¥ÞÒ›šžC²“Pâ´ÁµÉä§R°p{ÓÃi;ÊÔ“P.\Å3A,ñô8À«·spµz –[êÙÏåH%‘Ô›aoÃÅPç\÷¶Å°Q³¡”2BK7†ñPJ[õ6âîRÝpóù­^‚_ûÒ_y4f/íyì÷|µ³æ(K¼«B àøç@Ü€ÿ À–?Z«ø°ÇªX… 4Ê÷çA0¢ìó›‡Xw²×ŸLð•GÆ9p{Óƒc1¸C¥`ᬳüB„éjæ·éÿ‡ç*Úý” ÇÉĽ¥œ¸1ÁzÕVÍn”öÏBΰ³æ`£j#çòÌeθè-Q¢   Mìm¸xç ¸Ù4”De ‚­Q‚ónŒ{Ûá¬;x|xµ^R@¥`¡¨e{†îy6|£b£”Zò—lƒclÔH ØÈ_µý®CE“mÑ*ù Ášc°ÄubF}—FÃHÂ׊ÐI”âð,cfY žÍP.X¨Öª6 k å‚P–˜Žó-×6!4à¥[NZ1{z¢V¢äï: a¬ðø0@ox™Ä)µ¨ç –usu×(ÛÙgF±Âi'ÆFÕ¾41{lRüÜ#¼ñtÂìzì;_Ê©u[Y‚½›Ö@DÜý= ¢àÿÀó¥?eÚX«`~€?Rï+à]&þN?e_{2ÁWÙywª`g ‚í'YVƈù¾ÌƒLpãò§gñÙ´0šœ3Ö$ŒSõÉo/,„Ì…vÖ¼ñ”$Ö¥–øµ­¦Ky LÔµÀK¡Èüg–¿V±F OO‚ëµêPðy6ûÞ#Ëà¼OFAUò¸rTQ0¬×lpÆ –\ N-ÏaتOÙí¦ÕÆäŸ÷„N¶T°]ô"Øi¸Tx¤ ûg!&¡D)/`‰åXqR…gí­~ŒWnù䂘´yÒÔIa˜* 'šÃ„rŸ¸ë£^!?ß% ‚jÑRËŒ!’éW¯ÞñpÜŠÙÎY‡±Â;´®±)–ŠZ¿yâa½jãî¶×f"‰Ç‡‚˜F…ÙïÑDâ‹Çx{?`/ízìû>‘WëU{©ý›Ýdýÿ=Däýü÷XÙ¤cU|´ãh–ÿß°ƒ÷°âÿêãˉß@Á“hú‘ŽME€à Ç­háC̬ì”"tvTï°BAáÖ†‹JтठQìæÒvØjØÊ±3¿$UxzÀ¶j%KûH¤KœŒ/´‚_+Ô˶6&aŠ“öÕ¨c@­lörî HJ|"<î­“mð`ÆhÊÞJ!\bÚÀl'gÀZÍFÞ#Fº3¬üó©– [u{ÎÀXoÖm­D˜ Õ‹¡óŸ/•˜Â˜Z+ÃIŠç§!’TaHTò"k=\üœY·>Çf¸³é±9#É#:>g!îí¸ìÛäÔfÝV‹ª¥€;[¾ÿÛ hvhjãña€VïêäÏ´¬t’ÒuvÕBžiÍ Ú>†q@<cžô"aÎÉ$”øÊ£1lÁؽ—mÖmU.ˆåžÈw‚‚ÿ"€¿à—±rüHÆ×`wß ‘ð¯øûþ"(ùk`sq˜äÞ¦ì׿kv’ì߯ ¥ˆ@e †;[.îè«›¾ÔlŽ8R‡ÍÏOBH© %Ø2+v ^¶˜}3Æ ÏNBD 1‹9µÊr5²cólŽÞhÄ÷†),Áp[^µŸ®ÍQ+ÒwtIfFz[b…œG*³d5ÁÍÞ‰þhñó[ŽJš­…mbt/ˆþD±ÂI+‚”@)oeZú²Ö†m1Œ&äg`Úõ’×áK‡câ6<9 1‰H·7L 0µB¾îƒg¸»å¡^¶ ¥Â`Lûî:ãPâÓ_á'¾Í~ã+C&j!C¦no:’1àÑa€f÷æUšªL¯‚_¥æØ]sqo‹’ÿ`œâíý Úƒ$;f¿–×´¤7™Âö´àõ'ûâÃ1~±eÇEg. jùý~? àÿàþò³ŠK¬ €^|/H9ìoø-úw/´êN$ûÜ#ö·®Í~þs}fzúË$Þg'!ÚòŽß]w‰mm]_8Ï`ÿ«V–¦ðü$DKŒ&rá£P»õ©õÚå¤lVÈ&YÞÙòÐ¨Ø ?¯èká T¡7J1%‘k3ÜÝö÷據R@¥(à{¤ØÒÆ?æXv‡ ›”ˆÍx£y_)oe³û'í£Ér¢A®Í°»æÂµ9‚Hâȸì]8Ç­>©rN6Ê®N>;kYkèߌÆ1kU+ãÜR´½Qñ¡÷©ÓO'ŠÔóW«ƒŸµŠ ¥€ÓNL2¿‰‚c‘|3õÐéóö™¯Ø¢²R@Îçc¹?EJ…T#"Î\QÆpgÓ#í‹¡7Lñp?@o”fèE¶X>i+.Åý9„V/Á/}~€Ÿüù6û™ßìñ£ó˜-3rzác%ˆð¿éü€âÒŸ°ŠoùXØ­öÿ.ˆìáWýRÏO"ü½_ì°Ÿùt´–LüzäŒl\î8×ëFͦñ(ç è˜QBf U×M}ôÃóOŽC´z “KäB‹»kŽº8‘÷,íFJ·,\j ÜplÊ '¨v4I33“œ >ÇÝ-îL òŸ ÁhE|‘mG­­>õà·iË^Ûb)šqºø4’¡PÕ"%OZ1F×(*ƉÂI;F* iTlÔËV†œubœwãì@ÛC£l©e4âX±§Ç!;iGsÇp8™»ZɺrÄn»î`g¸ ç]JþÃIŠ0–àŒÐƒP%©ÂÞ±v?a y! hTˆ;°(¤"@Â>fàî¶›m[gàáþƒÉr²Õמ3³ä+·|¬Uìì\´# Ç)F‰Ï½1ÂOþ¡pí~ºÐ!óâîèŸøO@‹ƒx›¼Šo¡Xþ°ü>áçß°‹LüJµº {ýÉ„¿ù4àÇçd¶²ô fVÐE«ë=ÜŸàDsÖ*äœVÊ‹¹ÊVIŒäjoê-»×ןLn››­IïšåZˆ3Z¡><˜`Hx­¾*…«a|ÛbÙ¶÷F)µt4»1žŸL^/‘R àÄäÎû´Ò•Šôø¯²'NRjŒBnmºØ¨9Ùì~³“ ˆ$­H—ØiΉ49§˜MÀW÷v?Ag@íÝuwµ0Îpœâ eê¹JÑ µZ²÷ÿÐ&êÑQp yH¤B[«B–rÖܹHáö¦ !:ýµÁO’ª¬RðEÖ*a ŒR´zÉ ”ÅË]Ôæ\Y‚e×Ç––nõÈÌê¢Rev°fŽñ¢X+Ûxõ¶ŸéK˜0ÇÎ$ûþ(ŧ¾ô}|DJhiªP.Ð*ÇôÃMp½!q¢²U×uaZ gíÅâ9 @µh¡R˜BÍB0ä4L? R´û ôˆÚƒ]åüüƒ˜Xü$á+%õñ/næq+ÆY;‚2ë_ÎiD̶ˆ!Þ\müC¨‰Äþ)%»RNàÞ¶ [÷þ YnѨáìG¦’ˆ‹ˆƒIªp|NAÏæÈ¹I¢°eп‰R^ èó…e%pr³+mŽ¿H9+E+S¬—©x²ôØá㣀&ô9ŒS¤’ £á`ÎO+¶h»¨=b[ _ …©>„c3¼´ëa½ª[í&˜\ÃE™S4º!8'¢—ö<ä<Ž ¢BÓ »x/˜B༛à>×g?ù mö•w&ãÒÝ0m- Äø½X‘Å?´±*>œáøW@«þ? ‚%WýfÕݤìÿÙ€ýíŸkó_ø\ŸëÙ{K0ÜÛñn„Ä/†ºhߦ#• ÏOC<Ñ0yÎãxyÏ'˜´"7+²Tª…«K"òGXfÕºQ·31Ï!?ÃN7šüOަd¼—öæWcŒQ!!Ã$"=‚Ësã OOB´zÔSß[wpkcÚVèòß ÛÛìÆ8>§–‹à”¤Î:1=a‘¤ËéæšüYó£›^Û%èIÑP8ëÆ8ïÅsï5“ŽÍn‚T@³›°«¦+#IäÁX·ôq-çIB׈ó<> 0œ- t»%Nˆ`:Ë´çœÁsØb&àÌ5´øâ¡‚”ŠŽŠFcŽÎ#<: Æ×Ý t”®JÌJ¯àþ¶‡;Û„¸ŒBÌ ?!•êJ´ÈC8jÆøÇŸêò¿÷Kþè0dF¹pÉ0Ó¿À " î-ýîU|ËĪøðÅK ^Þ÷Yz´<Ͼðö˜ýäÏ·Ù§¾<`½aJd±ó([e}WnûØÑ+ÙE¡nÈMæÁùp?À8p†û;ö6ˆH%íA*—ëYÐd@Ì®{@ΆàP»ëŽ2½æœGV¼q¢2Ÿ€’ïÓUË{/íêv…šÂÿ ÃFñÕ‡:JžèRXí ¾6†1£“‹Žáѹ^y›ñJ½ €$UL.‘æ±(åÄâïI»ÎteÕ{˜îŸ[bñ)JRÅ&¡ÌíR„ˆþ=M!)hIb[“ß8Âˆìœ qpvŸÂXer½¥¼€Ðsò¾ÇQ.Xl™â1J(±.“'ùLöNS*dŸžšÅnøãq¸ Ç»à ¼|ËÇfÝÐm˜7žŽÑî'T0h.΢–á@¼½à¿ÿÅû¹ÏôXw¾@ =7jþ-P[àZŠ«øÄ Úùð„ ºAÿ"HÂ÷…¿”À³ãýúW‡ìé%ûl–Fþ”^/õ*åζ‡œ/ðü$\^0çš8ïň‰û;Š9[.r‡¯5ù3a ’Y»Ÿ ŒË‹›Ÿû ÀVÝV¾ËÙ( !ÎhFÝŒã™8m‘ñ-ymKüÖó l‹#ç‘„owຕ–òŸxyχçyl0Nçæû¯ÝVX8®ûòÃIŠQfçgá9`¤âwkÃÅ(Ho4:²8qòÞR_«ØztpºÍ¶Å–—‚©þ®">v×G«—༳ó.¡ £‰DœP0%r.Y,sN*zh–þªHõ8`½L¢@Ž6øÙÔþËh Çr©VÊzÕÆÞº“ýý aÿ,\ZPAû\8Wõ’…»Úœ*•„ð3ϸ¿ëb£f)ÛZZQР¿ Ààÿà¯Ø_êÝ«ø¦ŽUðሻþ·þuL•ü–‚ûÁ€N?Åg^²¯<šd½Ù9å7P`ÄOšÝ‚3ÔK¶êD¤{ªW·ï%zÃo=ŸàÞ6Íͯéñ;ùb=nHŒC©ò zÒFJ·^¶TÅÌŒX Æé¥ïS@ÖZ¸³åj[bq"§³ø ¹n­àø<ÂÝmЂc3ŒÃ›Wž–ví3…a¼ßÚpñð`‚8Á’΃ ‚L¾Ýpðô8¼öµ[ ² ) )‘Ó¶“Rª¬w~ÎÁåï*E¡ªEì¹H%Tœ(6§è Sœ÷4;1+øŽÍ' Q$ñä(À㦊˜IªàÚ¦(SøŽ—rʱ™Zíé¶ÏuÁõ$†ÑA0¯„riëæ¹c¡Qζê6öÖ]½Ïd}¤µŒ˜‘i‡I,kÿ< ×&´éÑAÈZÝ„m¯ÙªV²”K) šçI„|À_ ­„¾…cU|k‡ðc ÆîwãWýa¬ØO&øÍ¯pÚ‰™ùýU‘H…0&ýöIH-[.6j6*Woùxv¢Ù‰/)“ÍB¼‹¶iH¼ý|‚Ûšíþ"úî&<‡a4–¬Q^œ“\‡äÏ» ùôŒúuÉô¸1àΦ‹r^èS@VÅ×Áÿ³Á9à{"ƒñ‹9{ÛîOæ¦f#SýÓ+Ùƒ³–Ű»æ`½jc¤I’/XJ¥jÞÀfÍAw˜¢ÓŸ'MRa$°ÓpÁ9±Úت;¸³EÜ…ZQ Ù¥Õx¹`!ï/ßMœm 186SF×ÿþ® ¥ ’T±$Q*Œλ ‹RÉ<—£7$t ŠÕ|kIQŸ… }çK9¼|Ë]êÚ‰…I¨ ôèÜö‚’ïÞºƒ5‚šc F6ºýô³9í;noºØ¬Q;m4‘xvBJ„s[Á¦ª˜Xò~2QÊ ÜÙÒ¢[ x~á3o ÙΚƒïýxõ²µ°@2—¦hÀß© þßœ.¿5«øfŠUð­ë ‚ßÿ @K®úºƒ›1ûõ¯ Ù;ûõ=<ÀŒ€lúøˆFno¸ð\Ž; ¾ÀþiHD¨LÂoy_wÓ‹}|"IIx†1ú’ª…Œ¶Å1KH…… hÎÈÒöà,Îæÿ7™^ ®´ßµéö[‚”åN;´2̹õ²EÇËY­~‚8V(äno¸_h¸%%×!Òݳ"ižv"ÔËJy5½QŠ0R¨–ÄóþÝÄEžˆ%˜²ƒïbpoÇEœ\pw ÝOÐꥬ?JDR%©bœCUK‚m5õm|U)ÆóõDš‚ù.ŸÓc0äÐÛ[.Öõ~w˜âÙq€;[\›ö}Ùü?[ —òõ2 :ÔBz|^©`äIgÇÔÂY¯Q»Â[ã„xýQŠãó˜=; ñ½+à÷}åØKµÌs¦à/ø>ÿ6€O½û³¿ŠoT¬ €oÍøÐLÿïÄ ŽöE±bÇç1~å‹öø0$¡%ž^ÆÃŒdo9§¿Ÿ´"L‚w¶hDn»á ïq<= ßSK I:Ã[ ‚Mg­]›ãP¯ÚlÎr.Ç8,Œ¤Ê¹7g#Ú¬ÙàœÄhÂ|S”rº÷½VµI0¸þ½Œ²Ens‘ÂÃý [›þØH…g'óΆao˜æ'í8[ý>= á9wœEÁCKœÅxyÈŒÛ ÏN¨‡Í°·î¢\°¦„6r]Ñ„EÞ§÷­WmœEX«ØŠs,»Š\:fGæƒrlר—î︊<”RH%ÀçLqÃ]QË%ÿ(V88‹@rÂÐ×­i5Üßñ2Ý…3­<Æa,ˆ9¿Š‰FÙÎî£ãñnš àz°?]¤‰*÷6¨h1ÆAfÊb–ßÒì$øéO÷Øã£ßÿ‰¶×lµä¾4àwD„þ}ËàÊ\è[(VSßZ‘ðgümÐ,‘ü3·¾AÊ^°§ÇãŒ-ÅàŸ ©kÇb˜•VëS¼ù|B=KE¦8¯Þò3·¹%¸{W†c‘sR@JNäµ;<ûê§Å‰,Æ4’·è‹•ª%í5šãËM½1ô¾U ^ÚõIGàš·»6G½lësAÄ·g'!šÝ8C9v×ݹDn[ [ ‚ÊÐêNûàÃIЧ'Ë!8³×‚Äã8ïÑ÷nÕ§ÂBkU;Sû;íD8íÌ«õµz ºZh³æ  ýÞ‹ÚÝ‹„1…2Egt.‹)K° ñY I%ð¹7Gì¨3ÎiÂÅìLµ`á•[>ªE Rê1¿Ã #å™L!¦z‹¶Ü‘¹†!iOŽDñÍ<óIªp]mcŠÌ×nûØÔç±7L³©–(–s(…ןLØßýÅ6ûôW‡lH¶¤v€i9nƒFÿsÐÒ*¾EbU|ëÄ]P¿íÿŠPóã$3Ë~íKCök_²N?ÍÔ÷6ë8_Ž ¬@zˆÍa1z>> ðD çx.ǽ÷w<øÎbq•«Âx×G‰ÄÀ¤g­ØràÅm´-F}Ü8lF Ç¿ô÷¨Šžíï —É+ær®@š¤žH…JQà¥=ÿJG<¥HÌ&§uÿ›]ÒàS…'Ç!zÃ4ÓبM5ÿe %m›{Üšïa „|pFý2ûÊ”m1•JÒòM$l=–بXØ[§^q”bÿ,ÊŒ~L$©ÂAsª‹pÇ%–ý»8¿ßÈà "…ßøÊýÚ—†l0&ØÝ÷8gX¯Ò5VÌ Ä Y:?93äÉÀéF `֨骘E\=Ù2%ÞÚŸàè<º¤Šx12ULÌOädŸ¯¦|‚Wö|rI¢pÐŒðöþR©L€ëºQÎÞ0ÅÏ®ÏþÁ¯tÙ³“èFNÐ…0*‚ÿ*€¿²1ÛÃU|CBüá®}£·a‹ãwæú tc-m*OŽBö3¿Ùg_z8f罎ÍQð„`¨-xÇ$ZbÕ«€œ'P+YÔ‹ïÆsÉaV‘m0Ná¹¾Cy¥œ€-5 ñšåV¬Õ"ùщó­~ÎH­/çqT âTaÊl+E ëU©$òØ-öyW³<ï&ì¼—±Î6ÿRA`¤xk?@¢UúrßÑDbÖ‰ÎÖÆB¾ËѦ8lF2’¤ £IŠbNÀs阱B*îíxðŽî0Áóӫ퓇DA&ŠK7Æç'{v1#£[Õ×A¥`ÁuxÖ'¾j<Ñ@æ®v?¬—-ÜÞr~/@¤ÓT‚qΘi=½—ÑÑ Æ(ñ'RáéIÄ~ás}þÅ·Ç,Šò¾@¥h1íx¨ùA$ñø0ÄIë2÷Äw9j%œÍn2Ï{™ý^Üÿ`—D¤Ì¶4»1Ï£¥ÐƨhÏû½7g£Z²ð`ÇÇzÕ†à ÃIŠGGAFZ5’ÓNŒÁèêió»v/Á££I ¬U,fÛ/t’6ü(Èkä Âyó*¾¾±â|sGÀ¿ à’ç\n¼ã@²Ï¾>Â?{sÄŒ:]œ(t‡ 6jvöºšbN`ÿŒ èôÔÜ vU¸²ìR¼ùlŒ½u›5ž&ˆ‘!ÐrÆÈzžRуûÉq€q(q{sJ<Ìyg9ÂÙ5hRa0&4b ïqåØŒÝÞtÍN|í[\‡£dˆ[Ãa$qØŒÜÞtQÊ“˜Ë;ô†ÔO®,r"›ï6: ïa ñÎiä}šŒ-ä=$¥ÞûuPš*6#'j)"—™'g ýÃ0£mû§aæpUHŸG¨,¬×,Ø[êšüü›#Œɶ,‹èl5[yg¶=íÝ–ûû*˜•sª€ÑX²Ã&ùE<: çäˆÍè§çpl7œL£áÉqˆîàjí "8ë¶Ê¥ËJyî¬9s#œRÑÒœƒ¥öƒQ; š‹cÔ+›a³î`§áÀ±RI×îóÓ]»6Ï&ÌÈ¢s5¥øÅÏ÷Ùóӿ㻋جÙË…³ÁO€$…_Nå*>€Xß¼qÀÿÀ¿ùYÜëÝ}g~ùóöä8¼ÄL´÷ºà ½Q‚œG«Ö»>* gdÿùiˆ¼¶ƒ…î0ÅI;ÆzÍZHšrm޼ÇU)ö`—,ŠÎ£K#Jå<¡IªÐžÑþ?<§UýíMŸdƒîO0œ¤X¯Ú°8GW%W ?NñÎá$ãx×I:¹1!@œ(§Ëq¸m1õ°—Y¢0ç¸?NoÔ` ®ÄY7ÆÇïyÊÌnŠ8Qx~¡ÓOÁ‡‚b£‰ÄI+a¤ò'§ Š¥ª‹UŠB9Z›ßÒÞ ÉpHööó‡ÍˆÇhõÈkà"ú0K8¨µòø(¸žÔ© j)Ë&Œîú[Á¸½é¢^&da8Nñü4D½lc³nƒñåɃŒ!ãì˜û°\ ˆªF.&ÄþY˜¡sæ³]›Á²ÔÌ$Ï2ß§ðÎA€r^°o)‡Íº¥L!± $(·ü@ϱ‚°_Å×'VÀ7g|dâóýXr¶ßÌõá­1~ókCÖ^¶5Lî$U°C»O°òí å‚•¡‡ÍèÒ*˜¯g {žæõ§m‚N_¾åƒ3R;ó]¾q`Œe½Ò«|ºƒoÅÜÙtQ/ÛX¯Ú™•¯:q¢p|ã÷ü…Û*„ö©×púí-¶ÍqpRÂ0¯ã´‚ƒ¡Äp»Ù–`à&ZêxYØÁ¨O2Æðø dýaŠÛ[ò>_fâàßšø«þ3£å¾}_Xß\aøc Øì6^òovö+_°·ž—÷l¤R!Jr.ÝÜgÆAŠí†ƒ­º£‰]*Eƒ³ƒñt¥.%õ¥-Á–êùš â-)S… q(åöÏ¢K²»=ð8›’¯ÚçqHäÀq(±Óp÷§­†áDB*‚ÎÃXehµÇ@!ÇÕãÀí®+~wÍïp<> h•ÌÈÿ½¨­;ƒäÊ$y|NEÀm]ø.Y ­þÍ&w,ä\®~ä»K¸»åâ—>?`‡Í(;†œÓ$ÃÞ† ×´N ÑN.æ©$R‘ðϳQÀYÈßùœE8jMGW áOh^̲І¹Ö*vF "‰ƒ³§í˜¶ùÂ{Ó£±XÖë@îÓ]®I·böä8Ä-¯Þö!ÄR£Ÿ@À¿ àã 4à`©^Å«à›'j ^ÿŸPÄ’p™TÀ›O&ìW¿8`gd!±*MÆAŠJAÀ±8„ „ó섘è{ë*Z†·˜8jF8i“W}’*¤=xüãKN*v!*“ÙªÓÙóÓíþ<û^ûÖŠØÚWAÒ†@÷ü”Øìw¶Ü̪¸ZèZ½„uú ¶¶ZÔh”-Æ929âõªFÅ‚mùx|Dâ)Õ¢׿ˆâ)üq»ˆ±Ÿ¤ w·ÝL)n0I-èÁ Nr³®Íh¨Úx¼½™˜§@EÉ4¿BJ>·6HÍPJ`ÿ,B³ƒs†zÙÂQ Ѿ È9Ã-ëU®Ã¦‰sÁù?ï&,IM”m@7©Ùô§JÌùèßš1о…$Ql„°-*jT„º»í²R^¨«ŠÆ îﺨ–,üÂçúì§“lòÁŒªŽ&T­×l¸6µ_†Wò̆”@œPC>çr*×T VÆ!xvfþæ0†@‚³…E0åXš£áØL£ žŸ†ê"ýº2BERª…ÂJ£@kU»kŒŽFšÒ¸âi'ÆWÙÁYŒO~{…ÜRh€µ1ÿhaó|z©‹uh¬¦¾9â>€ÿÀƒn”¥VýIªØg¾6b?ÿÙ>ë–3ãQ (å*Òn?×ãhõ‚;ÃI ä\Ïá(É\%J$âhTl¸6ƒr—ùμϱV¡Ñ¶ç'¡f&3ä|òn¯-XÇ$˜š±ø® G4ÎpÚŽoØhum –Á«y_ ˜õ2y,:¨¶Å°±“VBjpúsr1äS©°V¡‡bo”âHÛó^“P¢˜(øB?¸Éäe\ÍPŠÚ {.cØ×“e=÷†ãt®…ÀqÖ«6ÖªÄæ_tÝt)ë%ÛiæÀI+ÂA“” Dí9tnzñ^¹2-´³FDɂϩ—½èPÀ[Ï–J°[$/Æ2k󄑺RýnºÑ”€jeÚ.K0$Ráña€×ŸNØÃç{vBÚõ²Å¬k¦>rÇ­ IªX¥@Ó"¤˜âáWk¶Ec‹¦A”ŠyrÁ‚m‘¢£9×'í˜÷Æ—÷«RúzÂ¥iš«¢\¸³E*›»ç§!žŸ„W¢g³Áµ^ƒ¯¯ÙV/¹öµ @¹HíC*Ôz£ÏN"MÆ- Z1«-TŠ/4ñw$`vàM¼?\ÏU¼ËXßøø!¦ö?%[‚Zº”=:ˆØ;û;í$K%b®CãK1†gðRÒ±?Ja J9£V¤£ïÒ̳ñ‰_ækó¾ÈŒ}κ1F‰Þ(Á$Pð=úŽRŽvœ*‘DÞØÒóð§x჎1ri+åE6'í»å¼×ál«a/<®‚3êÁ‡L)zèűB1G‰§ªÇä ’Ñ¿’WŠö{oŠ˜T*8C¥ ¤ïÅ ²-†{;òžÐ"?!¢XB:î¾Ë‘÷c-Ý˨ »½áB†FÙ‚¿¨'Ï€$Q,ŒÁºC"»%šc`,q«ú,!ºéØn8¸µIßÕî'ð=®nm: kš*vÚJXöyÃ¡cÓç]—¹«•í¬õtpaÿŒZ À`$ñø(da$Ùîš{-GÅ8!J6 NÛ†2S]ôŽ0Vè ®O–&|O Z´À9­œƒHâéqˆý³èZ®G)GÊŽ©T8m'WÊ?›•þΚ‹{Ûä©O¹ê‘ÐE÷½ u®ÃqÞMлBSðR¼³IFWf¤—sj÷µúÉ’íAЧÇ!³-޵ªuå$Äa¦~Dÿý‹âeÞ¸Š÷?VB@߸àþeÿ ¦d¿¦&A5cöÆ“€µz *E+c/[JõbÇœ×ûlôGäÌ÷è˜ÐŽÍ°]§•1Éù ×îRMÉ|JÍ^Œ×ŸJ*ÊWnù¸³å"çÒÔ@œª¥•ùfYó¦Û­P>€ÍºñÌJîíý †æa¨·éºI‰Ùsµ^1ÉDfúëz¿½é]z`’±­ ›òÇý5µ·AR½iJÇèÁ®OÜ—ãÖÔ 'éÍ«è™ð²M$ž…£ùã{Þ‹q¢É›ëÛu5"µY‚¡; h»”K}_*) N‰þá¾Ö¢×m’‚/°^¹ÚfÞ¨?’ 4ËÎÓEйV>ûÆŸy}x­°ŽR€ë0uoÛ•ÝAœ)û1fÚc2C~n⹘¹üÆÔ°ª3Hðæ³ Ž[¤¼¾×%2‰½ê¾eŒ ‘×nû¸³Iü„Yó£eî`*Œåèb袙èÙªÙøØ]»k´êŸ„SQ/Ó²¸Ê)‘kñ ú›=öóŸí³þ(eK.Dfyÿ!È×d߀XߘÈø_€”ýna U?Æ€I(Ù/aÀþѯuÙI›ŠfÏáxå–ûÛòK0²A­HIQÿÈØH„·"¼þtŒ“‘Œ 7´\—”ø…‘qÙL"‰Ç‡Þ92Uº½u·6fN…(YÅ‚t9ú•“0ÅY;ÆÏ&hõLBu#£{ösÖ*Êùù±A £l¾ëÎÍû«k>'çq4tRkõœ¶c<ÜŸd2º;kîo{0sû¾Ë±Uw´ep‚ó^©h,îÖ†£Úý$+*R¤sNJuÏNˆ±LF¶“IJêvƒÉeC)`ÿŒ´8'Ó£{Û^¿s8A*j¥Å €z:q¢pÞ‹ñð`Jøë ÒŒc°©‹K5³ Ž>Î{ë„: ô%1÷ý >†`÷ù·Æì¬߈Îr»„^˜—I½ê•º§ï9ìJb¡ksÜÛöðòž7ç‚xÞK2݇›"1‰xf´Ïl—ksÜÞtñêm?ó8ëÄxçp:•±´é‚îç}‡ìýÈl™ñê-v}|4U8nÅøÚ“1›l‹Ã„^¯)xu+Ÿ}cÄþÁ/wÙa3~‘"Àð§@"g¯-·S«x?cU|ý£ÒÍþ?h` ²gÀY'aÿðW»ì׿2`'íOŽ‚l%` †í5¿›ËÌ®{FèÕ0‚Hfv¤‹nØQ ñÎÁo?2!‘bNàµ;>öÖç½Ñ¯ûN€ÎRÎ!1èqÁNœRªlåιšÝøÌS˜ö†S…ᘶq8Nñöþt‹ÌJ«nÔ/{Û“ÀÐtZ-’NüZž’œ¸^µá»D4†Ã‰Ä[ÏÉ×>“4Ö²­Û šÀˆb…æaŒ3H©P/[ª”ê áÙ)ÉÑ–ó¤Êáð¼_ %_sBøq+B«wýDBSQDÄ­°Ã8 $c8–( ¹å ÀI qltôC™}§I8q¢s9i×ôO¨°5¢<­^‚7ŸOðü”d=‡œ¯b½Æ)žŸF ÓЫ·<Ô+öܵ5 ÒlL6çÍïq4^»CÛeY Ãqªù 4o¿LòKRmÝlFûÝãëUZ‰›{*»ï4e®ÑeO3@¤MÆè¾õ4MÎ帻íáµ;¹ =ìÈÏãƒI†nå<2ý #E> öíéqˆ¿ÿKö¥‡cvá6¿.L-òüüàò{¶Š÷#VÀ×7î€Výÿ&K$àáAÈþÁ/wØ[ς̱mÊlU%tƒú.Ç-»“ÃF͆¸F´#IUæ=ïkž›Â$éó^L}ýzÏ™~ßZÅÎÆ”.†ARg[W}Ç8¤ÞC=ƒ­@+ãWnùX«^ÿù% ‹Óƒ.ˆi%lV'OC¼þx‘­ÀP; GÍ¢óB0¬UlN­‘g'äÚ–ó8^ÞõpkÃÍôÌêßpZý$sÓc t;àH VK>vÇ'uF½Úë @)lŠ"óŽ­† ©['­©Jaš*ôG)RI^æ±Ëä½úõº8äLû80jÑ JÑR¾»ÏOCöÎApI*—¸, λ1À€õªƒbŽ$y_¹å£Z¢ðñ9éÙÒ]è p=kÕ>(Eþ7Á„µ»6%‡j” A$!82‡ÅLgËÍ<(RI…ÚÏ&D÷–sdœ52²-FS{>^Ú£^¿”T½ñdŒ“v|IâE‘LQbŠÃ½PØ]wàè¢îñQ€7žÑêé©2‘÷©¥6 %¢d9ÁvŸÜýË%j4Àèœ|H/àãÝy‡­â]Äj ðëß௪ܥúýiªðÏÞ³_ýâ€]d$§©Â`œ¢œ"‰ýÓë5µ"áò¾õa‚Ãf„Þ0É”Á€©‘ @#dœ1,#"Lß7%ÆAŠZÉF¹ ÷=´z›d;¿3ó#P×ÝÝY¡ÑiÆ\îŠy—=çER*‡ó#ÆŒ` =¬â+\ÕžŸF4³[ì[¿Õ°á:œŠEl÷R^dEÐA3Bœâî¦ö6\ä=§'Ä;˜]ýŸ¶£95F3ºøä˜V²;Zk@Ú!Ç­Ð-‚ïûD^ÙS¦eð¥‡c½2úÏ›™ü8™ N—Ðıµª;!©5^Ô2P '¼{ºE‘¦ Œ±lÌíéqˆF™ÄËT‚==Ž0‰äA™99dr£Z¢ñÊ»Ôjð´'Áa3ÂAS÷Ôñ šÝõ²‚O(ÈIk ÷+PqÓ¨Xj¥Vp ^¶Õ¬·UœÐ}UÊ ä}–*ø·6idRËlãùi˜:ƒªl‘•.Bo ©ïÎÉéÑ×dH¥¨À<8‹ÐîÇHͽraìsÑ(ßl¸6]+–`¸¯ ¦œÓ~žubGYQ7{^,ݤ–š\ºè0bc_~gÂ* v]øÞÒ£‚ü?ìDƒVäÀ8VÀ×'~Àß a,•ü‡cÉ>õå>ÿÖ˜]¥oˆ9RQŸDo=› VN°Ýp2ˆ¸”8ï&8nEsÌóqBXÕB`á(’ #fŤ]_)$Ø]wPð6jT œ¶‰DfìR9Ù¸.~˜¾%@+ Ûb(æ6ëTÜ\T*´#WÐÃê®Ç˜Î{ +æœEÝTKªE£s™©º™™sÄîô„y4*¤à¹9œ¶£™Õ|í¨dªõ \‡c»nëÄná·¾–G­d©[›Ê3sí›59—c­j£Z´*â P±ÇñòžßáL©å¦H8cبÚPJáÉQ˜3“üìzYóä8@­DÚÛuA¤°Q³–õÇ+·=åØŒµûÔ#"I¤6ýïƒqŠf‡®#ÃvŸ„OŽC´ºóž Ƶn0JQ- lÔ´z âDs:W÷¶]ì­/žNß%M sÉz@÷UÞ£^­dÍéì¹lsZÇ!i86ƒc³lªæº’¼-,Ô´Œo+œ´#ŸÇ²÷^–Áf|Ïsœî¡TR;å°¡7JpTODIG[n'éR³QÊ ´z)¢8`÷w]TŠbÙ"` À¿  RC¿‡Ã°Š±*>øøC  ù–”ômõö³Ÿé³‡ûAö»Ë/’»5«”ÑD¢©!䵊)ûmÖ)iœucœ¶"Œ‰P‹ëXƒmq„Ñâ™~*´†¬û£›u›5’&½µá¢^"4༗dD'¥[Ö*Ð6¹6½©ÝOÐêÇØi¸Ø¨Ù™Ra­Dh@o”ê/ÏH\V d‚rÒŠqg˹ùûI©PmÔl6cæ9¤SPÂÍzØlF‰0ØYsPð9r[^F|#>Ã<ò¢@Ð/µ ,õÚ­W-Uð<—Á´â¿¨lW.<ØósiÚlÇx|`­jã®–œ-èñ­›/0 Mé8 NF2RO5Á°Z¤äoøœué»6k¾´ëa£f/Ulpõí||âž ’kq¡ó^‚V/açA,QÌñìʼnÂ;Á%"q¢pÚ‰PÊ“]o¹ Ð¥ØÕæSÛ [ó‹‘:—¿`8‘`³NÅÜXëì7»4¶7û®H;7:%͛Ș9cgT*<:½‡Í0Ñ{?ó‘J3‡Á8ÅÑ9Ý“Fd꺯ò*Âg¹‹Âˆ™b‘Œ%¾ú8`;k6no:ê¦6ž "Iÿ@EÀ_Ð~ïGdWŪøàÂðþ2€ ,™üŸEìç?×c‡ÍøÆY…‡±„k“ØÌ#Ä,NÏ#´ûäü·Q³µÅ©ƒFÙÂI;FKH©` Rs.³Gj ?kUJvÏNB´z vÖÔËä|÷`ÏG£’Ì­®ùž…4Î m"*Vžè ’Li­¡¿ãD’Ù±•'áÕ_ pp±4̓ó›ŸA‚»ë¾øpŒjQÀ÷Èø§ÙÓ+¦8?M•Ö`'s"£º–^`\;6‰mTmì¬Ùj³n£Q±”çpu±@¸ÊëÝ÷¸zå–ÇŽÏ Æ)öÏBíu!Mîlº/Ô>lFÈyëUÛ R*ôF)îïÌ'ÿf7&~F ñä(À+·}ÔJV6+¾ÔeCÇLå´¦ÄZÅÂ+R ÅŠ…±DšRA5§¥¼`Æ¡OJdm$“±Úš[aÌ ¤¤"©Z¸½åqt‰m ã)¼­4š¶Y›ê MtŒý³0cÂÏÞ–¦í% žÃà]!9m”ü̱6p?c@«ãáa%ä÷4¡À°Qu°Y§6Tö=½dÎß`‘¦FNóÂX-Ôà0‰¿R ñ®JA€ëãߥ8h†øÌ×$û­+à·},×a‹Ð Àð?Ù ÿoì¿·£³Š«bU|0á‚Æüþ"ÈÒw©úõ'ö³ŸégF>‹"ÑóèÆ‡ÞÎô "JÌç½[u2=îlºTÕ3–A船og`|¾É:§x¸?ÁyÏÂNÃA©@W%´›öÏϲÕÇÌœõp’b£FRšƒw‘¤Ä¨òÚ‡¡ÃIŠráæä¥@<³’º…pºy¨×K)|—C‚´ù¿ëå_0 R²°³6•ŽbÚ:Ç&îMš¾@òW—WЦÀh”-l5¦Û' œQ‹oÈ¥Fa)IÔ,2Òk8 ¤#Tò%þ¢À¬[`”(¼sd ¿òÅëRõÏý–"[ÂPHaª•Rðg<|‘ëm‹cU¼ÿáøßƒªVK$)ÁŽš1>ýÕëÒ¹ÙàïÓ<êÛC]¾«†“SœublÕ)‚” :ƒd©QóžY³ó£í~Þ%)ÝµŠ­†Ö׳î{NÛñµ+u€Vœi¬ˆ=óùIJİî ÁΚ‹FÙÊ Ή צ¸¼Rëk)ÔJáæùu£÷rc•Ï.š,ÍzÖ׊¶×l”óB• ‚Š2ŸwŸºÍ"ä gO9³³NLÖÀþ­ÝOpÐŒðñ·¦}c8 ïøØÝ&ŒOŽç“¿!7j6òžP› {) àeãâçÎP.U)<Øu‘JJšA$Õ`œ2ÓÂò†JÁ‚ëR¢c³ì8/a¬ÐìÆ,ï‘Ó\KqBsïÅœ€c3x.C]ÿ9©œâŽÍ³É¢Oã }®”TÄœEØn8X«ñq–ƒ°ÄÑšC,,AÜöšƒRNdÈY»Ÿ ÕKÈCð¥¸7ÙñS'Ρæ]<_‚¥IlWKV–ø‡ZËõF“”Zff H*|þ­NRüÎï)¡Q±–)àwø‚Š€¯¾èõµŠëcU¼¿Q¹]ýY$ÆH–õéq„£ó˜s®Ã®•½*†“R¶EðêU+`ÃÀï S Çœu,lÕTK86ªT@œ´H{>¾Ž4w,ç,3빸±fõqx¡3HðêmêÕÚ‚áÖ:™Á·"4;1Â+Œ`l‹é¾½ºv¶}H<<˜ 7²ñ`Çç”^»ÃY'Æq+ºTd$©Bo˜.• l‹©ºÍÏhum&ÌæØšß¨XØnØêͺ­›C0:&æáö"sÛ×…ñu§rÌ™1)uóˆå¥}³™ÚnØ88‹XÞãYEÐ0Njĸ»[.~ßV”àì}Mþ7íï R <‡ÁsªE1½`f^ó¢ÛÃ0¥Ì¿››cáÆþÇïæ´Lµ…î ?R’ݱ-j¯Í:µÞ ãa3Ìúïõ2=z­t47ç@¥ ïã¢EvÖºÀ8:Ðé'°m*ê”Âò}|2aÃ#®ÙÄ¿Y·Q+Z™AÑh"qÒ&¢ñ+·|$u•Cá[Ï Ç’ýè÷–°»á,[ü€¿ *>ÿ‚—Ó*®‰UðþE $mù ãº0ùÇ’}íÉ£‰bf®Ùs8NÚ1Z½xa!À9å…±DÎãȹ­¯—ŠV‹ýQŠ—öÈñ þi1çcc”â¤Mü릔†‘9f3ÄòŒ5”˜Óìêµ íþ}à p-jø±¼¶`Ð^=i`”Λüì«% '¦ÈÐßﻩK%‘ÓŸbŽ+Ì v½¬¾ÕpÔöš í=à:zåiföŸ÷/4@é1¼¹#_ð96ê¶ú¶û¹¥˜ù À|{AÝÞt1 %ëôS‘Bœ*|Ž]möóü4$#Håî3¯°·î°ZÙ‚k3c›}ÛY̵ÞïQDP3†@S~„ Vº¥”siTð›ù+£€´<‡ãÕ[>\­¯FDX$ÂüÝ@Á®Íq×UÍN‚£ó˜½s`J¼´ç£R3E‘ õD› 9/Ö²À 6ë6k–c‚)Á§+Æ)x·Çu4‘¬ÙI˜”dˆd&JMîÔ¿¯—Éáϵ9ñ..|–Y;ÝxŒ3x.Ï8 GçÓñÛì½jªË/´ÙN|ÓÕ8óOœ»knvŸ''Z Ò i³«uú³Z¨M0Ä'b]ÖJ6k×'~SÌ0”ódŒ4KL‚ë¹LŒQQù~­Ë~Çwñ‰û9%–›ø.tðŸðó_× çC«à½Ç6€¿à` 7?ƈþÓŸî±£&õYÏ:$|SÌ‘7C9Oîx›5ÍNŒó^2½Ñf>Oê¹åZ‰´ÑMsa¨)S]*»2zôŜРÚBˆ",-­E®wØ<¢˜FÀz£ÕõGËš¹/æ}ô† :ƒ¶ øq\½‚0Á9­~¨%ÐÐûÏ{ ¶×-ç žÎІk1ıÂhBˆÉ¢g®çr¼v×S3¾íêý„õ/^f7“TM$ë |åÑ„ Ç)BˆîjkØýÓA,‘¤`í~ I«.Õ¦,I‹BDj% ŒÑuqÞ©ÐÌ ¥´û {óÙ$[­=ÜŸÌœ1Gت;Øj^Á`œâéqˆÓvŒrA°Wo“:žÅúã”96S @+"†âãE"à7"’T±ýÓ˜µû žŸ†8ï&—ø‘ZãDÁ¶©0SBªAÁÊyí5µ¢•  'ÏNtúS®‹—°¹÷ŒæÅ$Ä•hç$»½ÝpæZ5“ÆZϺq&Ï}ñ;‹ÚtJªÅÓ73סçp­¤ÉpoÛ£s+nHüúǤ5Àô1ˆ<‡ /çg>Ýg£@â·½–WFQó† ߀¿ Bþñz±|ÈcU¼·ØIûþ,)ðóô8d?õ=Öœ±ðêMsQ¢pØ )yDæ'¿Q“8ïÑ7§7žR¤Õ¯ݸ®ÃÅËMD =ŒÖþi;F§Ÿ V¶°Y3…€FÆi¦jG=ÁåtÏÞ¹§´ÑR*2N¥¨—©YÈ‘pQ¥`e¢AáØÒ±8ò>úÆAš)§u4*g>»˜hèi„$%.D£²øÒg˜ºÎ½ß+ÙÙ‘6)ÁF‰sm¤û¶,ˆÈ­ïùiHî‰Ý·7]T‹ò|š9O$Þx°î0ÅÛÏ'l–û`l’ooºp™i­3HYO[ʤ†½îOpÇ#rYÃÉ,r9‡¶K2+äÞ(ÅÛû^Þõà:ÄAùò;€—öGÞw±^µÑê%hvãL¡k’ m‘|ç`´Øø U*i|ɬ.b ÷¶zf…@A ”óÆ$éºl€zœZôDªlEoý'-j3ÔË6¶j6ò¾È`ÌÝuB0tÉ¥9i=Ÿ)´õgúFûüT3æ×*6vÖH¤ ø7¥‡ï×u!jæ¯Ó˜D’…ét);í$xëَۧ½NµT«y¯±hÞi8جӸWA+ ')Þ9˜\I¥¢¸¿ëgÄq¢pÐŒ¦ÉfÇM¼vÇGÑY»¤ÕKðè0˜ûHz|âþiÙ¿zÛ7‚JŒ%Ï"Ð=%&fmˆ!ñ:ƒy>BÁ§–Ç$”sðìÌ."JNÛqf+唘˜s—‹y·1+𓦊 &ÏOBžÅ8jE,MiunæÃïm{àœ™ö ÁÓãy~CVÛ?£dc$‡HÚ7ç ¡œjÈë0-³ÏTÛb¸³éf.³×ªë0lÕI£~–q/Ê¿òÁ~Þ‹‘÷I—!çò,ñ·"G#•ëG‡¢Xáö¦ËÌ÷w† n­;ìî¶«ŠyÒµ°SB€ÙÖ´P{Áî:fÏO#|æõrBh辘hTl´É•Ÿ«¡I[užÃp×CÁãð\º ƒˆVÅ'-M€+Ó<¼c ¼‰c ã¤€ç§I“øÔµô°ùŽf7Á`”àÁ®oˆ—K×&$¦4¿ƒæ~5®ŠkòV0Üà°âð<"§™m¿ú»tÿŸ‘§E-?Édt j% ‡Í˜%)poÇc/%´ Ba€¿½üÕ± `U¼›ØðŸbÉä/ð…·Fì—>?`7UíQ,1¥(x´*1Ö¶f´§7JPÌ ¬Wì ’Ý¬Ûh”-ôÇi¶ÊöœéòMaXôdKʲÕñÜk.•"Íý–óVæi_/[8ï%hvbŒ‚tNúÖ¨ú¦òMw³q5Ì\ó"B5òÚð¥T°0¥8í,qÉvPtå¡UT(|2ó9h†œaoÓQ‹x/³ ?IëR„͈Æ’½ùtBæ;3µŠQkÜ]sáÚSGÁ@°\„Q…ÐÇ][‡±Ì ‚^ÞóÐ,ž“Ü3gT¤ÝÝrákbšA¶ukäå=ÍÇ-"ûUŠ·7<” BK¹¦ŠJAà•[>aÎ<¼7kvV¸™#ÎA’%ÿÙctԊ໤-PÎ `J1œÅ ˆ1R´ú 󆺻оP¶Í˜Å¡ÄL?Üœgó?süƒHª“V̾òh†r!%¹4´ó`ÞLÒ¹ëÇÚf§Kzt/ЉKqÜŽ1šLÇJƒ˜DŠ ×ÃÍ£ƒ&)×J´ µ ‰ÿ¼›à´CßaîO£ë¿Ìµh ï$UÙ”¹žòG£lc­BòÚœQ{,Œh_M›nöÜÝäjHhÔ`”.eMm‹Ï±Qs2)ëÓvÌ’Tá%ƒŒÀ¤ÿüwoí*L¬ €‹mPòÿ1,Hþ†IüÙ7Fì—¿Ðg‹n$©Ûë5RëËyFÐ<ˆzÃýQŠ\‹V Íï×KVÆÎÏëdw•&þÅH¥Ò+a­ìwc7IÔE¿+26°ï’Äðº^I5;dlHNœCûÚc!9Qp–¹—µz öOCÔË$e\˜á# 'd ›÷šh;Ü+W[ ¨•¦f>F„h£n±í†ýžÒ¿!w)о¡D+ Ç’u)kõ’ì}Ö‰ñô8¼4Ão`fÙ˜b( 3rbn´Ë ·6ìhxwâñQ×a¸µá¢à libåÑyǦ•¼m1‘ÄóÓ§íˆ`ë å<²t.樿Ys²¶ÊY;ÂþY„(–‡{kÔzù–§Ç!ÚýeMæ¬iõGÁæ9ãþ®‡‡ûÚ2wf¿­ç_-Yp-–)Fމ#=¾%´}óYÀOcìm¸Ì±Úý„¦V|Î|—g«yƒ„‘B+6#öæ3j‹˜ÖôùjvãL"»Q¶2KÃç]Žõ‰õ˜¤,%pÖ¥¶ÌHe?]´Ñ‰;í\Ä™ï0Ä<ƒ„N5»±.¨§2ų-—e„ )Ïl·Ô­¾BžFk% žMHM’*´‡DöÍ{w¶\D±ºQäâþø‡ç0$èoîÿ+&së;s‚è9Ø$xýé¯?ìwÿÖ2ª¥…FB$·þHüý÷r_”bU, ;ß߇%Vþqªð›_±O}iÀÂ%öÀhµEžËQÎ[Ù*+{‰þŒQ 1>!v­Dco­žç9¯ÜòÑê'huc ƒô’Ÿ¸‰T©]‘A‹7Þhº·nV¦ûg!õ˶†m¬•-tG)šºÿnœÓT-,l‹Á±˜&õI„±Òæ%1ê%jCó4>h\㨰ٶ_ÜOÇb¨éµ½ašõ1Î"šÜÒEÀâ'1Žš›1ë|µ2٠ϾôGif†4‹|‘9ï…‘ÂáyˆbN V²³1ɵ ‘Ëy‚ò¶»éÇÆÄºÞ®;d˜ä’a’>eŒI·7œBýg]"“ÞÙté*ÛÙ= µÝmgjI{p"Œèõ¾K¶½ÃIŠ‚OÅ ”4ÖuÐ 1œHì4ÜÚ WÊ—ö|¼³?Éø®CëŽÖ|PŠ®­ç§!Î:q¦ =¶!Ÿ£^|šªÌ(k£F«XÏ¡{%ФRÙŠYª+~z»ƒ›uŽzÙÆq+F”úßFÕFM«eT¬mûf'Î$¡/~®LI0ªœÈybNš{ö¯•,¬Wlg¬©ÇÁ4ñÏ’|1 ÿÏ´»æÂ‹•H€ æ7£|‘l;ýg]Ú§D**F@ˆäRÓD:JyR "y¥’Ù#=½V¡ëÛlKFplGx|"IhÁÇŠýžï/£^^¨hÚ@à§–Þøp¬ €å¢ àßðG±dÏÿÍgûõ/—Kþ˜:Ö  ßå(ÄùÕâ#æã‚Hâðœ¬q²AZ7ç9جÙè4;ÔB0¤¤Yæ®é1»Z?}&ë`œ¢ÝOPhÅÙÆw9ÖÊjEZUEº(ÕÍ€é=;6G*§ÊeG E£••¢ÈP‹Û›Šy çڵΌt)Eâ%9O Mɞ׬ÚÚýƒQª|׺±è™Ê˜y0Œ%ÆBg°/¿3ÆÁY”YÛ2 r»ŸàÕ[~6NÅÜÙrQ)Z8ëDè SÝÞàxiˆsIªðì$ÀI;†à µÙ:õtD¹`eÈA«—àÃÉ<„OO()î¬9—Љ‹æD¤³ 33œY¤)ˆ$ãyTE‚Øç‚3ÜÛv3 Z³j?ÐNyæØ4C˜+ž„Èy÷æ=žÛþ(ÍdwwÖ 'éÉékýùIˆWoûÈû¯ÝöaYÓÖ1ú –÷lŽ—oyzŒÖÁóÓðÒy•ZÞ¹Q¶à{Ä«áœÍõߣXá¼G$Õ{Ûd’TѲÙW…TÀhœBÕlx.Y•ÖÍöÚŸrbâDáíýÉœÁì#ƒéϦ–Á⇉Al]L— Êy – Ï™„rŽHlÚv‚q vÜ20>@“…!w#=þÇ.l !•Ô²ÌÏìÿ8 "rÁH¥ÂYwžðûè0Ä?ùTýØ”—‘– rö_ÙÿòR;ðŽU°8JþOþu,1ç/°±f;a¾ËÌ<`E*‰QÝÐ=AÏás¾ãW…!wclÖ¨ª6ãA¾Ã5gÀÆh’f³I(³Â"•´G®óZ¤HF!z™„1§NÒŒl·V!69/²ž,g …œÐä§«‹"צmc‰ œ_EdmˆnŒþ(ÁÇîæPÊ“¿9AÝ6Ö*¤[pÞ‹Ñ駈‰zÉ‚à4®f˜rZÂ]z¢šÄ™Jú¾I(Ùp,Uw˜òãó˜Xê f½ôg缩å`ÁÑRªÝAצ–ÎzÅB­da8¦FµDhFšû§Q§RÁhþßÞt±Ýp2A%Ós7‰ÈÊ86ÓÓ68Gvœ=‡g=æÓN„Ó6I×K¤oŒcÆYàÒć…ÝÉá°e¾Cm§šMä²™äl\Ó™q:ƒ)(ÜÞ düÚ?+Ú’T¡3Hp|g‚Bw·hæüî–‡w&™°Ñ¼()[‚eýâ0Vh÷bœvb Æ”ÌÆévƒ Ïf—zõA(³$ÆÙÍõ »ô½óD¬ ’8h"QÎÓC¨Z ¥>Ûbxy×CL†<6šy™>n’¨e›gÓ‡M’«]«NùÕ¢…q@«Øj‘ø­É lTl|ÏkyU¯þhkœ(Öî'8nÅ8jÆ’å<ßáŒ1×2 )ˆd&º4[àËWÎh…ùð §¹™Õ_¹0_µú1N´Æ‚QòcŒ$_ $›h¾†çðL¶y8¡ó„2ëô {vBÅ5Uêëïi†8Q(äh–$ds|Ø$Øu[æ^&áý„ ’èô4» úã„Vûú˜H X60u7ßßï Æ¦Ðz]C럊hYZƒã¬ã¤Ï¡6—B‘°–moa‘Šßl¡§8UجQñ˜¡špÚêS o4™Ÿª‰Å*ǼŽÌûü$ÂO½ð= Á? à­¥wè#«àê°ü[ K_‹’¿Tø¯ŽØ¯}iÀÌ\ü«· î$§>†5 ÿŽCz´ú1†yÉ B±*®Ž?à/ð±ÀÕ/• ¶ÿ—,NhÔ¦?J1Ò+Âñ„ ïjÉBÁãz&zµýQŠV?Aw(1lK®M„¾ Z¬úÄ–¦ôPòNêx˜&ãþ(Å`œâð÷Ð0áÚSȰ7œ·5½åv?-Ö+6‘ÔBJξK¨L»—²qfo0êIÎ â˜pl–­p'¡ÄÃýal¥~kXÞl¿R@­LÚðã€Z:EÍö/户°â°QQP´P×2ÈžÍg*ÆbRÆùÐs8¶Äæ†þ÷Á8…cQ!QÔEÉNâÀx˜‘M3id’ëež\«ØHSJB#A½r#=Ç¢6B½dã¬Km­Rž*sTC)ºŸ‡hv§(V’Npo›¼ n鉂þ(ÑD51—@Mñ8§xûy0w4»qֻߨ9˜„Ô~bŒ®‘R^ÏÕë}7Ç`4¡‚¤Õ1ÔDG×aš•OBŠz#BzAò]>G`]šht®*̽hîsý»Ï®×I@ü‰v?Æ`<¿À¹¨äià©þOÓÅ„iSüôoôØ}²‚ÚâAàG@#‚?àtù'؇?ÄþáÚ7z¾Ùâ_ð¨`Aò—Šæüõ ͰýS½ ¯É„åÙIˆcí –Jú7ÇæÈ{DÐ"’Öt&7I‘AœA$/^æ¡Y/Ñ*d4‘Y0û€Š–áD¢Ý§^g¥hirÓÉŒŠƒrÞÒ#^c›ä¼Q³!8­oªÚ-Á°½æÂµ:Ãݪ2ø_ËŒKdBÁàŒ!‘D€’ŠŽËFÍA*öÏBá准Àí yŸ£?NñÆÓIf9Ì9ƒ-HÍ­˜°5©/J¦û(¥Êàé½u5R!ƒá¥$”¢Ý'H³R´ÈO (ÕfúÒ¹­–lò;ð)ùœ…Ø? 3¢aKäé:˜UwÁ§Ö‹£‘ŒF…8žË¡À²óJ¤D!¦â0ưÆxI˜ÞpÁ¨•iŸ„¿2î $÷ìê®A_ã„—"ç™v½½ê`oƒÎ™9Næ\JE*„‡MR&4÷D"éxUŠ\‡]šB0«]K0TuQA&VTÀ ã@â¸Ñød—Æs7Bo”^Y@+@I…ç½$› 0ÉÖÕÓ{*‹ZuÚ¸a8IqÚŠñô$ÄI‹dÍ €g3lÔHJ»Ù],Ì€ì˜ Ç)N;Éœ‹¤ÐF?›5‡ˆ©kîÜŸÔ-œÇG!λ1‚ð2_áânT4Ê–Vj¤vÙ2 ƀΠÅ8ìö–›Mm,ˆ—AÓ\¿ \æ …X!óñ;ü e©“¿R¤ð÷+_¸zοÝO°½&³ñŸ§'!‘ßú <½ê­é$gàðõªƒQ@ qcÞQÎ pÎ.­H®Š$’çòZcýºwe¨À8Íd„›ÝiЬªŸ…¥{Ãt*Å sÓß¼Mœ3X"#ØÍ}7@Iá¤ER§÷wò±*¦ñ= ˜è$€´ýéóv<Ï@ðio˜Â¯Ñ*ÿøuæ™U—[ô žgºé ë9ä°^µiBbFà…1dý|cðÆÃ1é4*dÕl¸“0E’Ò}òð À+{* ÛZg?IòŸYm|Ó'?márátpwÛË oŒ$²‰ ¢–ß&À­ ŽÅ³¶„9GIªÀõìY;ÂÓ“pޝ2Ûn[ÓJ®Í1¾&ÁùlÁê%;³oι‚Šgýý¡„-ò>G”È©‹!®~ ×ô^\¦íf2e£l¡^²QÖ-.®÷+Œ¨­Ñ" R‘ôEfH¶¬r Am¤:ýx© ©l_ôûe çÝœƒ½´ç ‹ÀŸÐ¡¼Ë¹¦}ˆcUPÜiI ’?cÀÃý€ýÜgû7jû“2 ôä=RÁBS+œÑìÁ¼ÝaŠÞ(Å¡ÍPÊQ¥].ˆLÓ±^ÞóÑS_¾?JDòÊb@Í$ZÏ¡ä±VSŠŒB˜þ.¥€Q(1 "œ´#äq/‡q@è€!96Ïtò[="¶]e ‰FR<‡X­d!NHÿ]J×!ã›®–¾UÙ衵»NúøÃIŠã©ƉBw¢7Lq‡»¨,=£Ÿ@pU²mŽœG«0³í 4ïþ±;9òˆ$ò¾ÈŒiª23×{.èÿ]|½Qô» $™ä0¦6HÓ9g˜B¿³Åƒ1}š]ý›/4Ð1clnbæìÕ´Ý {ÿ®CçÜÖ×—¥Åc RbHx®Ã¦…‚Âí—÷<ŒõʑϠ fº";&3ûbÎ¥T4qÒ¦~¾R ·6ܬõJ…'GÔ.P Ç(z.ÇíM­^‚œ†é=‡¬lÍñ¦ò¼†È—è‚Èuˆ PÈä¢&cÀx"3‚_)/p¦EžŒiN9OƈÇÄ$$ä°Ý§‘AÓV€Þ¥ïÍE~@¦ð1z ï9ÓÂÊûä±Q-Z´ÿ Â$Mú#]€ ¦û?»è g)w—ð1a –σ1-h®äH¨éõTÌqTKšthó¬ý§¤­ðö~ÀÏ]üàw”½¸(øwø§‹·øÃõ à߯¿Œ‘~üOýF]'r1 Ü\ÊSOÚw8F7ôº œ> $F“®M¥Z‘.˹ª0¢¤ÛÑI7ˆÈ´%I\‡Áwºƒ›Q®Y9`ËÝ\Ø&€^ÓÐT@½lƒ1†V?c±lî7çr¬UmDÞ|*åk¾ãªz$ïMm}'W(šðuŪ{Íå¼@Y?D]›£à±ì;g¸³åa½JÌXv£l£\°Jà°Í}cÀfÍÎúþÍnŒw‚õ===`މ!ÜÙ.CÎÊs O†Íºsi_fÃȼ†‘Â8¤"¤7J3âÜÅóeHŠÓƒdþq:+žýó¥+ZMߤfëüw±ì èQW=9 $Ú˜-¨x ë†Î®àzLRë¸Ó.•lª M)'.£¶6MN;1z#*¦7kT€– ­ÃHJ@ÏÏ"XM5lÕš¶8 3{^#¥­@‘Yq›ûÇׯ…Ãf4msF&L“€4BÀ.æ8J—óÄ9)åh´7çòLQ2•ÓÕm”âíýI†ðͶfy4œA“;o^q3èkENyYÒ/”‹Vvï™kK)º¿Î»4-2;|ñú-䦪ˆã`94ݰÿó>×ìÿy]€‹“µ" ùî´ 3;!óè Ày/&içNÌ,ÁðßVP “$ÈÕõ¯øcþÙRÿ!ŒrÀüYRÔwc@o˜²_øÜ€u“…Õ· ã'¾­WòÕ’…Q3Zø>³1FÚŠF_’T¡¦ÇÅf“®é»Æ”ì \šs—° 2n‚y˜ß„r>…­›!F9U·+ÐÅ¬Ì Á¶hÕÝ¥™?€1ÊA,õ(¾Ü²PŠÌF|—#Õc~½QŠþ8Õ®w<ó¢/æDF*+øEŸŽÔþ¶ÅÀ„Ú]¯\™V¾M³C”âéq˜=t ÜÀš8ãÛ¬¬ÓõcVõ©¤Dj~m 3ÖšQr}{çâY1IØX.Û‚þlÈ—¶Eè‘ù±SæagÃI¢§Šg½(‘YÁ´½í©”œOÙI Dq‚ÎîCسu±èhÇG€Pœ¢N$×]z¦]Ñ$8:§Q¿Í:1Ö_¹íãà,Bo”BðL U –V¸3æBæx2Ð*¿£Ñ´á„ŠèµŠ—ö|s¤fy‘/ÆD.ÌûN6a„—Lòòž!pyŸl”ge¦Reg@|£éÆ×kp˜{Fp-Ù{ÓŠ[G©¯Ýz‰ žr~†;1³- Tˆ‡1y.ëä«®ó;#öD„H-¥¨ufŒƒf ª‹i×OjÃ- €ŠÀÞˆ¤‚Í„EwHcÔæ8$©Â¯yÀ<‡á»_Ë«›#| Àÿ $ó¾¿ÄÖèâ£\üK ¡ „~hž9ʤD ·èzgŒVóƒQš„´âåzeŒúˆq¢2=€ý3%<òõ*:éf+pÝÛ(– £€æq¯#ëÅÉôáµè&6ýG“dã„4ݻÖ ÷r^d®µvÖˆÄ%‰¦}œÐ̲2G²‹›À9P+’¦L,}S„Dr}£_vSÃÜvlòhWúغ‰Ò˜¤fz¿¦*¥B£b!Mé­WˆPˆb‰F…4ö˅˰¾9F©¤ßî[¦J³TÌ©LO`0&DŸÆu)ëj·E£fi ž R˜„‰.Xæ¿]hîE­8-lM1LW„µ]OÄi™J2»6ÏΣ)†Ìu,2ϳdæ4•6N¥šC‚h‚§7¤Ä¼]wй 4¨¡Cë5;s6lõäý©ƒ§Ý §mº£]­ÇÅ©¤s³^µ3!©qx5oÇLmôséÜÍ; Sp†;,Ý®™Mú=ìRl7l<¡ÖYøà EÝ B¹´ØÁÿTðF4’j4A%‡Åð zÃ$ÛÎJÑÂzÕ1+þK:a¬ð+_°bNàÕ;Þ2¿äõògô–Ú‰Q|T €¹ûÕ±Xâ—=:Ñé§lwÝAÞçÙÅxo6Ò”\Êj% E_ àSåºPðTxŒ‚žCcefˆúÛš<¨‹rAZ”D)rûø]*zš(gŠŠY²ž‘&¥Õ#n䯒 æ8ÀTŰ?JqÚ‰ñm÷r(h?©(Ñ{ƒïÙ1•äHgiýq£,fVä¦NÊ„v€lôiîX1".å=êý6#´ú‰†J[pÜÚt±Y£â¨?J3vÆ´Ú ä € ˜‚5 ˜gáX»3$1¦pHR•­ðz£é1¿hLGÑ{ZyG¹(PÊ UÎ[بY$].e[L™D7sªk ¬ ¿Wjp #w¬8gpfO°ŽrAÐD†!-@!M¡ô •OEf¨Ôi;Æp"ÙlkÃ\ƒæšèkÙwitÒôå IÑÀÞž`—öɬºM‘DIâlh¬;Hñä8È83´Ê'a¦;[.Ùh`œ uIOblÕm<9³{ÄT(&º8ßYs°Ý š)L£%Ó㙣@âg“KûtŸKmj¥'yå… 2•ñ. jc®#E^”E9#ipy1éëÄÀïS!#‰d‰Šáƒ(Ec|‹úÿº/º9ÍþÏû¿ãÃ×äRšHé¤ß$bhä¼7ª6,Aæ^Ýareá=šHüìg{Ìw9no97¦3ò¯‚ø@¼pç?DñQ,ø« ÛÈÿQ¢ØçÞ¡ÙM™1"1³æáÖ¦èL"™9ëÍ]”Œ.Ö ’™IÆ2Â>€fÓlÏèÂzóúÁztÁs9¶j66êNÖó«h´)M –ŽÓ¬ ˜DS8Þ¬6®Ÿ°»Q—`¶gš©sÔ"‰^³"/ø"›)vìiÛª;¨kaÑ„úö£‰ÌVT†S!ÕüóÑÌwsœèXdâȹ å¼Ð" ÞÞŸdûRðÉ}εRô5$™s§3ÏWí£«Íu] å]ls˜ÄKΈŸæ}®W4–ª)Ùç<Žœ+à:lºZ7ï¿pÈ—Rx{1K ¼ú÷ÓëQ'åØÔ÷6¦&¢©I(Ù$”ŠŠ‚„õ† NZ1ëI93Šú#*®OZôy¶ElvÇÖ¢A%+32ºN5¯7¤© Æ€»¾F¤ÖûgÄÚovcä<ž$´¥± êRt‡)ž‚æ9|WÃû‚³ ’WŠÐ­P_æ§^¶ôõÅaq ¸ð|` -™r|:Wy°é4Mz¢•מ¥Ü=19S6»SéñKˆ.<—ëɤ›Ç=Í16¼›TÒ¸æu¯¨¸õŽb^`­bgdÃ\F”%´³7L³‰ž«üR ¡Rjæ:Ã0Æ€N?ÅOºÇþÀo¯`«a/*€? àmÿåûw÷|óÇG­¨ƒVþ߇%Æc?÷æ¿ü…c xyÏG½le³Æ¾3…Ü#­°ÖјÐ8œ‡Ü­ ÓЭ!-ýQšYÞæ<0ººêtÁ {¡ëUŠ1œ¶# × J:GA ì©kªRfVf…u]ïÏÀ¯×ÝTš5óã‘NˆQL79çÈìRoo’¢˜]›ÃwÍÏ'ÆIŒ*ÃXb³F‚3qªpÒŠæÞc[4¯Ÿó8ˆÇ‚È|—¶îµI«à°Iò¼_ÏÛâÊý—™ßy/ɪWLƒ (Ú÷iZ¡^²Ôκ£ê%‹ÕÊ$¡ëØ,ëWÎâf•ؾ•âªíf Èû\å}2¢º·ã*âeÐTÃy—Z$‡ÍˆÑ(!a, ògÍŸ´"Tôg1'²–Ç,µ^%ñ$#³sy&cl[¤Œ¥0špÞãØ]s29c#a×N¶Å°·®‰œ˜z\‘ÌÚF“PâíýIf«cÈ\“%ŸKF`Í[w›gž 9]ð— „~Ú6ËZ¨¦%2;9]@Éf·“3Bml‹T[½äf›tF£Ÿ?÷Ù>ûƒ?TA)£d°PðWø™䯸&ŒR`ø_øCXÄøðÕÇö©/ ™IÔÇ­å‚€à §AD}ļG+ņ†µ‰KŽe³¤·V?Ö–µd"sÞ[µ©šÃzÝžç L¨êžíè™VŒ•ZÉĵuWS^c@Ý7ã ÅÐOÈï¢`â >BËK* ÊyC¢Ý„ *¯çŽ@1g ïZ/£àM˜(C_Lºzc”V‹æ”Òå¢Ý2›\ŒÏ`¬»L%÷dze[´F•òJjQQ¹é ù,o7Cí¼8oÓ×÷  q"%‚ó„ÅNžçÝÝ¿ñû寔á9ü´$`Ô¾‡O‰{à§)øKþ%úþÜŸnö÷¾ÓcY$lw@Õk½L*]÷öìEj6«çïŽÅÉÊ·` Iüˆfœ¤”Em¾ZÉ$…º3DÑBC²¢&8¶è£,>ò¾¶%ý½#?¤¹ši„}­ÚjžC›h9sîÊÙp0–T:¢ð¦lTçé ¨M9”ç2ëÁÎIÆ@š¨+ñì8Ò•ÕåUGw+Èô†ÚŸŠ‡n›†Þ<‹áÒªC˜±©ÖJ$h–3ʰMJ NŠÌ„1LzR8&KÑRU ôÿ l4l±Ù°±Þ°õS(Ö„úÞžGëþUŠ“ê„9‡ ªÊ-¤·rdàÓ±sbû0bû-²#îKì€y±IY.çL|r΄/ž¬dn"A †dP@δ»Ã±üþWk¶––VÕ´Š£n„Õš…BÎÀjÍBwO}¿qJ Ùj‘p<®C>““¡ûˆ´ HÆúÚºSv Ô}®˜Aê:ùY`÷†‰!(€ÇÉ&È›Äà“nÝiß•iN„»â”Šòi[\ÏóSA#G5Ó÷ŽÕº08êD$Kó‚ù¯ôRΪ9Àðã;cä=?ÿ…"38[tu€Ï‚’€¿ ’ ~­ãÓ’|Àÿ@§lþ­nŒ¿÷‡=Fæ*“S¯© ^+™ÚY­?"A×"KE>ìžÍ‘w .×rµ@µDÙyoOy˜}C+½þz™À`ʆtQ¨ª›A¶êø´\¯Â(-ïjÑÄ›—=˜CD¦24¤6^­djÀ–B® (æM‰úÉ Ú™ô"`´À&s %iÆD£q2¥n¦fy—ÚðÍN„»»ž5;6G­h`½á€3`àS§ÅàLü²üfå[`‹JšG÷#it”èQCvqU¬ëp,WM\ZqÄ¥+5yφô?P?{)ö‹ÈÄÉkVÈqQÌÙ¸¼b#J„è ¶×Šp?dÛ‡¡t®$Š“ìÛ"©XåO?‹b(„Àa;’ÒÍä“`[´î·Bj›ƒ’ç·\9—ccÙÁíí±NüÂHà°IA弩…Ô}ÒéÓ½i[dF‘†bð\ªðó®²åfX[²õ>ž¦´ÙJD‹Ò—`¤xp𨠱º~s±-9FÈ‚³ß…Â5‘9Ól !ˆS/™:Ñ¢y> Ý~Œ¾¤V ܺä‘÷8ž‘6êü-•ÉÚ»3 `àY_ y ?zà³[—\qiÅ^t}Ô?ýøŸ8[¥öŠÆ§!¸ 2øÙÄ)›”²ÿúzl÷(z„ëÏäÍ×%¨ m›«f×i*0 „ô›47½œ§„Aqo¨:¾uÙƒ/«ë¾¬0:z ]/èI©|çðÃÅãƒTLÄ}ˆ«ËœXý²íx…x° ?NsdÛÑã€Hô,<96Ç­-—¸û’Ú§Ú¢´­à”M´  'n?“tÇYj`Õ-4qBŠ€ŠêÉ®ÂZÝÒÜïøú 8'yÒ››,“!É8e¤¨KSãÄ—Ë$ø©?H°Û ÑVßë‰v0äN·Z³peÍWÖ4*\‡føàÕ ¾ã_³ÈŽH ÎP+›¢^6ñöUO Æ)k¶#ÜÙ po?`­NŒ ¢ÎÕöaˆV7ÆR…0yט²ÜUô;Eë;lGÚ˜éú†‹’q§cï(ÄÖŠƒåЉîÀÂÁñ,ÞlÇX©’0ÐjÍÒg¤ÏP›%cÒ]²jÁ¶8L Ø;YÝ ©PûŠÕ¤$¿]•îjTpÞP€D%ò™km›L¯¥<5¶•Á)° µwDÀÉQ Ц“f¥¸(@¸¦Ytßyß}EŽx’”L›²IÏYÂ0²}±œËQ/›§u¨[ü!€ÿðÜø%Ž×=ȃ²¸¯â”™œö;?è³úso®(hJºRÞD¥` Ù™lƱ jÝû!ñ¿MƒP¶å<ù—+ÒM_®ZZío8¦d`8Nµ¨É`L’¿9—£›ƒ΄™ŒX0 ªˆæIñ‚As¼™l‹¡@÷–KαkQ‹UÙÑÒ‚ÆH@µ0í)_ùTn˜ëK¶FR[]Hî:µ»Ãñ æ“i24*TY´‡Ýv ‰ïìQ' °ªú„ j>N ËUKoþª"Œî0Áa;BG¹fPþ¤°R³pmÝWÖ D¤M_Â.ŠüçÙë]ÌqQÊ9¸ºî`ä§ØoQ§èÎnÀ”]õÃ2"/ ¥ü<¨4*–«–ÆPWìæ–«Ï0¦®šc“ë gdûmJÀ µªß±s„Ô—TMƒOÀoÙ±UœŒc¡•3+ECÛñ~ôÀŸpë3‰¨Â$Ù%gµÐ{-1g©®[½Dœü¼4â²Ìé¶¾Š(&;êv?FN³^€éŽDÁ3`›”Ìwñ©å* NæY'6Uwx6VuœÓ:R+»èÎNÈ\›£ã§1Šþg NÀïŸÿ®}9ãuOþE§€þRüÑ#|ÿ£Ñƒш Âjd=—«6ŽûÉ©”8…Î'„>ÕUqJU­Ò· ¢ª•óVåÆ4 RŒÆ‰ôù¦½èsøtˆÉLÑ’îs)3˜lb4ànºC „”˜”ä9vG p%Hɶ°¤8Ò*Êy=ª$ƒØdF£xÄŽE~jCŽbBŽë×µûÔ…›tPhÑ6 Z4"QžîJUMh”É»À@(!ç¾#é]ßîÇdd’Iåu«—M\]wpsËkK¶Þô?MÀ½—=²ßCÞãâÆ¦ƒk¾<¦ÀÇ|vo?@w@4ÙÃv„œkh‰Þ¼Kþ $5ý„Ô¤o¶{EÞ76=ýwYLçL›9)´{’ „© JÛ`è È[C Ê+ãŠp4NÀ0f'íJ¸Ê2,ƒa|ÊFJI½dödðZ`ÊbZïÂ’Æc–É´ÞµõF>UùÝa¢Ø,ÒK#D’,ñ)P¦!m¼GAzæM<Ÿ#|U*o1oËR-“kQ&E;VQ#?ÅÇöæžÍõORP÷ø Ò Øyª7îK¯sðKþ5œ¢ôÇðáCŸýÎúì,v–ALsC%[Êh÷φè‚ÆQbË… F³éM´£ã)ÑJÞ@%c œ j›o-;è cør3M3é:Hέ-SríÇéÜ…BdÚ~ódŽÕB§ª0$à :¬íY&µU×ê¶VÓzù&u ÿW=}$¤B¿Wês½s¢<­Hä60áSò@‹Ö,‡:hÍõTÝAL†?²½z,PÌql­8¸uÉ—×ls†PV¨›þË';o_qñÆ%Wtú1nïì£>Ûm†”Œ´è~®–ÈxKáMôñä¯L²^âX€36%[¬æÛ*ÁUÇh÷cu"ø!8¥©À•5Ëše·3Ý&õfJúÛY@ùU ƒaL0.ó®0!˜ƒeM´r‰’Y’® È¿!&}¥Ø™js/Bû“1™:—³´ã-“MµÿÏJfŒT-“ÁRw'ãø¬½¶%½Ô†Ÿw'Îú¾ôÞÝaŒßI°²?ù¥LãTPà7üUÿÿéÝ­/G¼® À5ÿ6€Uœ2÷?8ŽÙßÿnŸ ÇgËJ(¸V§–|£JÈß³Œâ”4ðpœhkÒf;ÂpLHÙÃv¤­qU[ð&²¢µþ®¬9HRaD”ÃQ`0¢jB-$ÑJ¹E 0Ýáœ-<õï -¬~š$o„O „Jÿà§÷Fˆ:o×!ZPÎ¥ŠŸs† JõÈÀä$úÂÍé\Å͸ž:sÙ¿d ?L±Ó qpéÅ'Ûž4¸V†·.»X®šÚ[|–›ÚE¼ü¡’.7‘zÙŸ¹‘ÃN3Ä÷}ÜÞ ÐéÇÌö[d4´^·Ñ¨Zp¬Gmt#é&8òSl­Øh”-¤Ø> q$]>-“áÍËžö¶hvã)^}³£^²´QR+³¡AR~Ã(…+õ:NR~þ%Mù+ØÓ‰´–@–•=@ ðåUG»wª.„z\²÷¶¦Ømøq$šN¬Ž­ºoŽÔÍù§SÉ“ÃÐlµVže­ul®=6Z½˜: d†„´&]µFªóLO*Kòî ÁF @ï#êd|éíüif© À?àGþ½çqï>Ïx€<ñÿœ2÷#Á~ïG¶á÷¨©ðC² ½¼ê V"-…¨?-âX = MëRŽŒDÚ˜FèGñ^̸²JB&iJzè9—oÔ"Sô?å¯n=‡‚l§àùb=3ÃÜNrs#ºÐ£—–a"ç«’q"€R.,•I]-M‰§ÛÄÚZ–q]©MøAŠ=é ÌG–«LƒÄ@v¢!Õ,T‹æ‰s¥ëqÜ±Ý 1U¹¥ðl2)zûª'®o¸(æ9ž/6ý×*&ž÷L\ß ¼Àq/Ƈ÷}|pßgûÇFãwv}4;Ö—lÔJ¦6ó $tsÙÁƒ¢ÿæ]ö®7lôÇ4ÞSÂ77=”‹&–+v[¡~œzã AÁ3°T¶ÐîÇS•zMÜËy»<|P'q*à1 èqtåæçHVAÞ#|ƒ#6U¤’f…5ù´N Æ Öê|ú)vŽÂù¼|½Ñªà´Pšê™=k¡•  R0๤6„$ø¥‹"9nÌJ/+Ê¡R¬ l-;HRÒq ó@® ¿ûƒ>[*›¸±éˆÏ»àø7üÀ·^Ì]ülâuLþYÑÏ©sÿ‡!’”€j œž G«5ŽÍШò÷¬ÑéLj6qÇó&†ãpjÓ;œD#BØ7*Äco ‡È¹ r†©yñ–1e±*@-ô¼Çᇤº6ò ÆK’iC5/œ•*Afeò¦¬ð ‡Nd{3@ɪ4ö¡•PÛd?”rrµQ;Z¦øúº ƒ“¸ªTVkÉÎf®]“<ò^+Dw#I'ê…PÈq\[wðÞõœØ\±áZ“jÿ"^ïP }½lâkïÄgnæpo/ÀnÙ}‰ŒÇäX±4ÿœ3ß¹µå—ɯDw½¾îâö1M”‘Pµdb­N›üXJå!á~ I{J@iJ¤”$×$û%2Ôr-²ø6¥ôp£b¡Z"g=SÒ N2 SräJ8”Æ [úº«·`ýs¥•1¹Yžž(L±™‚9:J°I·ô¥ÉgÒ»wÅѾú|a$´7§'´]Çb¸¶N~韜”`ŒSüÆõX)_E£jž&tdÿO8|÷×-øYÿ#.Niý7Û1v›1«•LxvCŸæCŸ6H¶Q??õzPöÛêQµ°T6±ßâºEµ(e0N4Èèà8\Xq’ü,eî(’hM§Ÿà¨ÃàÔæS:â ÔäÚ$ˆÂýü²|ÈS1™³ûAªd%ðãX ŽÍH\»ÀAs”•ÑÐ,ÉP$²M²îÏ0 ±%è ¶\˜õZçÀÚ%U#?ÅÁq$µÖIld¥>Á¬Ô,\qœIÛOÎc;ýÍ™h`Ÿ@U‹n]öÄ;×<¬ÔLaÉJæ¢Úÿô…Zìóï^ópsËŃƒ?údÄh<@ëÁN“üªEbþ8CÞ˜ŒȪÚÀÛW=ø!á”øVÞ#£¡v?ÖëIšBnP› ýqSÚ9Û&énYi¿uÉ#ƒÖ7ÈâU ƒ_ÒˆIÞ›T39$¬"ÓýãŒÆn8u6ÏàÚLÕN³ .[^šÿt‡ÉTGCmiwÉÑ’LøöXà €TYI¦T_nø~”)bäçb X©Ù:Úk…ˆgà»#Ño~¯ÏþÔÏVàÚì4fÀ/ø×AÝ€³W|/q¼N ÀHËy§lþû­ˆ}÷ƒ³L.5¿iæ¾\±§ä>òéžGmì(™˜ý(4y³Ü樗LŒ›á™N4N:}Ârü‘1À¬P –µ:ÍÆ\‡c0&;Í4&}E•S`½Ë«.ÖêñŠ1\‡Ã6 aì˜ ®Ôº×ÝA|ÙrÁDš a+cê2P @¡ýÕëR! RènD"¡Þ@þRÊ›È9IBÆ>jƒgŒ*…zÉÔ݃jÑD£Â4¸Gµû …´ôEwú1Žº¤û>KÖË&Þ¹æ‰w¯y¢^6§Æñé•ÜZ&77\Y³±ÛŒð£Ûc|ø`ÌÈö8ÄÁ1´GD­ôè²éX®ýè±KWØ'c¥faÖ4ІD^Æ 'Iâšj§ô1ŒDRü‹$º©í¾R#œMÌx28‡¶ßçtõy}Þ3´Sé©¶æ2 ²MÚ¼‡ãDzV΄+àS̵G±ÀQ7"9¶Ðº"™D&{Ϊ{@æ_ÉB÷UÆ€ï±\5ñ³Ÿ).JhHEöŸðÿÙ¹n¼—$^—Àð¯‚l~çÏý0§ì7¾Óc·w¬Ô,ÜØpÁ9Y{&©€mrä=†‚G?EKJíÞH sôÇd­¹\µ°T±pЎΆpUl€˜Ì²»¦’PE‹ mˆhÝü¬¨•:N ÔBº¿GA‚ œ A+©+n™I\’Äš¥eË_!]k%û­Œ4›½§«1Àpœ¢Z$«ÞƒãÅ“n»…),éS~VAµÆÈ¨DIRàý šï^Ë!ïq´º1Z]’6U'ŠJhf¨v–Ihàœüœ¦¤oMΰZ›®|DægLCþ;›~ )U©@*ͳ¢?Jðà ÐHê¬pOµhà½9ñÞõ‹ÿ"?T¾Þ°Äj½ŒÏÞ̉ï}4b?½7fÃ1Iðv‡1¶–T æ´º #9íûû–Ê®m¸àŒ l¶Cº÷¹´).Ä”¹?F ù ¬T-ÜÜòÈQ:åi Þ4%³ œË +«K•ÉS’€Ï€Æÿ]ãçqO>«x€› Ŧ2Niýÿäî˜}ï£S·8Øi†(çMx6G¹`âήV7Öº×Ê4Gͨl‹fV®EwšÉL/­8ȹ|éFBRi¦uò(ãí b­þåÚ§câDÀŠ9J8fé›g#m:eÏ)ß~*+QÙ·º&c‰¼gŒÕ0 š)n4l]™pN3<ÅÙW:á*YINp„•‘O*€á(Ñ׆1]1 †\<ªйi€Ÿ2Ùi†g䃉ÃoàkžøÜ9±T™´ú/6þ‹x’“D+õ2Þ¹æ‰?ú`È>ÙöÑî%ŽÇX®ZX­YÔ—7ãj䦛ÝALÂ9e GX‹Zí‡(æ=r¿ô8ޤ¢¨äýFB>O¤ ˜­îc©J˜—ݼY‘HüŽ¢ÍÍþ€ªð¨ÆÅÔ3# OVï ÷àÚÔ=Ì»$kl™óÁˆ#Ÿ6zÅ< Ê£˜²N# 1¹uýAzfv•|¹¶‚Žbýãð‘5hîkÙÿÖ÷ûìW¿"ñ n ÐüÛþÏOýÆ{Žñª'Èâ÷³8ôÇ~ëû}æÓ¾Øýa‚ÃN„M)ªæM©äµ|BörNêp®C »¼Déªùd8¶–m­6§Ôü‚0Õ”¸0"ðLœˆÉÀ&Õ»‘Ÿ.(`ÝRÅÔ­´pž1›hüŸ&ròZeª$¤¹›Ð•vލµ–írÔK¦Víº»L $™íKÊyNúðÁ˜€†B`sÙÁR™IÀN„8ØXrP›?c”ü´û1v"ô—ŠÎÇq벋/¾•kuK¨Šìb㿈§ˆ&®®ÙØhX¸»à;?²{{!¶›¤ fýyïVªÄ PÉ¿#-U‹û¸c •5Wk6:ýD'Ãj“tmƒíµ¦é€QLÇ(xd™í@dÏYȇä¤V¶§ž#åaaphq EAÎKëðl×q­nO‰†)°°¥;d›•¢ øðÁƒQ2ÁÝÌ˜ß ä<%¹†´zÑDù´ïTý7*Tý·zñ#òá§>¼ï³7¶|ñÎ5o‘ê—¢þë ™àï=ÓðÆ«žüyL¤~g„‚ýæ÷ú¬Ù~´”‚œ¿ê%rÛ[_²1iÞ­h¤mÇ4뎕w \]wàÙ‰êœÁuH°˜< jæ§’T*EÇýX;Ï=’™öéÓ;GοÉiƒ¥™£â/ŠET8Îe%!KÈ;`úµ…ᔉ‰R:S#’œtElv"íhXÎX«[ºbX­[ð‡* и¥Óqp¡3œ ûU[ñúšŸy§ ®¬ÙB1.6þ‹x‘Ò='n]rqiÕÞ÷ñ‡?ð½V„‡‡$3\ΛX­[¨LXÆ´#%±rŒêJêk¥@ãÖJR ¬•L –3&cØ*³¯ø /BoîÊS±²c½‚ljú˨㶾dK&—#?.¹óZ[v CiºÆ©ö. d#„À­- †~"½IN©Æå:è˜ A,Ðî'gµ ÐÕÎ!Ëà}™4=V¢(·{)ëôQ)§®ƒðÿ-½3¾ÅK¯rp DùËcAõ/|÷Ã!>|0ÛäGQúö#\‘Â>Õ‚‰£îìÙÑtu,»Aª%d“Tà“mªn žÇfSnz¶ÅàØÆT‹LÇÉ{9Œ}z€B) ¢Ð¶‘Û)¿ÒÞï“Ù8Ð"¤$_šÕç_©3:å )ÐÒäßåXŠâI§…K¥=Ó`Ò*4EÑ#ÊÏj€B¾GÑ# ƒT& {­醘½ö+5 _z+/Þºê"çp‘^lüñœ"€k1|榇+k¶øþG#|ï£ë4;:¬7ìG¤µ ²åaM©o^Ûp±\µF4:S¶Ä–ɰV§¶¶’ìVxšËs¬Ô,-lÉž3éµH]‰’J ƒcR=¼I‘ |9ÈÜ‹F9—:AŒ»»Â8EŸ(XäçU¢D‰ãÓÂ’8Ƥh’ŸœióÏVÿ³ÿ³Ž²kFÎ%±§8¸»²·¯º°­S¥‚ÿ4€¿àß}Ú÷ÙóˆW5p@ÚÌoã”Öÿƒƒ}û‡ì4$èáq„¥²‰bÎÀÚ’î09SûIµÏš+5Êž=ÇÀƒƒ@û‚«¼É_ßЈ|KfÛÏ@Ñ›‰$ §BsŒ…:“¯—L™g<ëÅäLêZä1‘ð=ñœ>òç4CuT¡ªm×áZML¥ÔAliÀ¡èŠif¾X̨Jê”e0ÜÜtá9|â’v⚦)°Ó ðð0ÔÀ“NÇû7sâ‹oæQ)t¾‹x¡Úèå‚!¾ù¹"nl¹øö죇>‚Hàþ¾ J±µìÀ±3ºòi ­®i›L+öe«m€Úí«µÌë1yÞ›ÿE¼L!“mñÎ5›Ë6þð§C|ÿ£;î‘þÿÆ’ƒÕº¥Qô–I®zŸl±Ó qsÓãLÛ+O[—)‘nv"<<˜1ÜÜtQ+™h“)®¼%ù —W„‘À½½àJÈõkduüÈrɈºhTøáâ~>g@1gjVQÞÿw,ªÀö Îðõ!–*äÿQ7‚kO(ˆ9—ñèWµVžJS¡;¤#?Åv3@”H¶SÀþÜÏ×P)§©þ)ÿ^1VÀ«–XþÞÇ)­ÿÛÛû£†ìq€ ÊÌ£˜sµøÎÕý#QŽÁ(A¥@¯mõ¢Sg_dœ`¥F3(Ïáè hü ægêøj“_ªXxcËC*¯¸¢ä²"7 šÙ«Ê1À` Lšýp°©‡]9©Š8ë<Õ@NcÀÀÄF8ˆ¤PB N1Gm½0"$p \Ûp§:Q,ppaç(„N´È]ÍÅ×Þ/Š•š)Ôy\ÄE¼¬!äXà¾PÂÕu¿÷û·àîžv?Æú’J‘ÌqÊHž@ÎeX­Óº1§ˆ{5¢"§bÂÆQtÁjÉ„- ²ҼY¹neÓ%b†Ó¿W ÁG?`™\Û"Ÿ–Ø&—&etާQñ„ 1¡g“º¡RU¶$'Û„†,8Lƒ!ïMxÿŠŠMŸ—dгÆ4¸–úaб”doT,ÔË&’Dàáa€ƒãH¯»G¾õ£~ñË¥¹š$ò +à·A¦A¯D¼j À¯áÔ?@ü÷ßc0Nu¦wÖV~»£Ý'ªÝjÍF«OñÍE”PZÊ(È—ú´ñc@_šdxitdpg_¹p%)~‚ˆŒÙ{Sñò NÕúZ݆¦¸³@ѯéu|sò׊& ’ªØêƈ%01ŠRä¥D*ÜÛ pÔ‘¦y—ã«9”Èä]WV-2aÔ}èöcì4Ctj7L|ýý‚xëŠÛZ¨Ñ}ñR…Ú¼nl8bµfá; ñŸÙqÚÓÕ¢•šZÑ”º÷¶~Q‰ÜÝ#,ÁQ7ÂReÒUl¶'BcÃ1U{>ˆ¦åé#é?`pÂÍZ9›l´‹ž1…ÙQ`äy " ˆ•$Àè &iZ„ƒá_ @ª˜É¹dg칞M#ËdÚ3À4˜µÄ Œ)Ëô š0Â8•¶Ê4®,ä(¹9êÆ8êF¬×?¼=b—×ñöU÷,¬€¿࿃WD èUJÖüU%,¨þ`÷0b®ÍÙVÃÆP~ùa$¤<&tú0kcŽê” D[[©YZ˜æ,qÜ‹±¾D›ùRÙÒü¢Cº9sG)On_ót¶˜´ 9ŽÍyS¤‰@O<» œkú 5C«iþvÐÑìÄSÇä|"<Ô%¸³ëO£”'5´á8EgkªÞjݦ¹¡ÄT‹Õ´ÞZ­^¬:²UÿÏ~¦˜6ªæ­ï"^ÙH™ }ã3E\Z±ñÛß°ûûŽ:1:ý[+66Î#LFÅÒ`;ÕBwåœû¸‘' wKFP!ghü€ ¥›Ïd Vœµ;j™V cyÌ?[Ê‘¨—/õO€égXw3±òG¹`èªîʪ£……ÔFÏeB}ßì©Æ‹C?…L,Ñ•|òI"€%O<Rl7ÃGØF’FŽßùAŸ­/Y§Q€ ÀßðŸ<»èÙÆ«”ü ¾‚S€í^Âv"æX×6\¤‚qÂHè,0ŒéæB¡Á5Ù¤;ŒÑêÆX­[X©Zhv¢SÍzºYü€é<ÇF­lb·ÅœÒ2KR ;ˆQ/›È»Dúó2Ò(‚ìHâÔÜAÍéO*†@ÎŘn“)4± …?²ûX&C¥hèë–H#’zÙÄruBuÊò¡›wv}íÏ­6ÿJÑÀ×Þ+ˆ÷oäÑY¿ˆ‹xCu®®;¢QµðíðÝGl¤x°OsùK+ŽÖØèç žB.–@µ`à꺫moà×µ™Ê ªÊUœLgñ”óÕ–¿jOÍF:ñB¹&?¤.e)oh °Á ¿ä9¤hp¢2ÚQÌdï-[·ÄV Ö} ­5Fy£Z0§wv´zÑTÁ0¥>—²WØk…Žgwkö#ö­ðK_.‹ù“6íàwmÈ®C\õ;»þÌëd¤‚ZIªÏæ¨ ì·NGÁöF4÷·-r¿S>᳂Ì~è2x6礢7+”€²Éñ70eÌqò½U1M©êP&@•}Ρ…*çp¼}ÅÓÇY¡75˽÷MßülQl4,qZ;ò".âU Ia?ÿ…6—müæ÷úl¿EL8¸²æj . [òͯ@¾†Á°±dC@nˆòßRTK&®­»$ГŽgL£à‹9ƒq’ó¡n¨ÜR£@[ПÕk³l%€þ\ÌZ\ûHJ¯e2­Zð8Þ¹ê3jãrŸ]²ÏºRÖç~Hl…l5¯t ƒÑx‘‘Íp»Ÿi}VáÙë œÓØ÷à8:õ5?údÄ®¬9xûŠ+ÒÅ]€Ïø—@:5gD3¾˜x€(£Zhó+ þ|V¬kT,¤)pЦÖNNJZ*z9Ðå‚´–•ˆÐTÒ@”«ÝrÕÒà¶XÚn^L©c©è ÉJ¸V4±T¶ÐìÐL|^0©®7òST ä;~xÍmu |R4Mš“ÍMRh.cÎÐÊøŠg‡íjZâÙ„ UEÞ#÷À¼ÇQ/[ÚlD¡xgmÞB‡íw÷|„±Ð³~×áøâ›yñÕwóð\~1뿈×6Tu}ë²+ÿà{}öÓ{cì·ÈEôêš«Ás*ZÝí~BΙeSoþ ðåJÈdØ\ž` ²à\!€µ%’:WÝNµv©Dݲ8nm¹ZdH%TÌ)ѨL‰áaºS¨+âú { 2ú0Á”x*b–«d[¼×Š°Ó ´üøÜ#I)cv$÷Ós¨¥~o›\sFu+’kë.=|ÉÄàG)d¯–Zc5ôG‰~XŠ!ûE ôF Ê22¥‡ö¼ÂT?øj†5ëNåJ L} .d¦ÒP3ÍËè¡73à›Z™nÃ`¸¾á§Öb:AR‹RÑ5)ä dÖÄ)=dÛ‡¡ž ,WMüÜçKâK®0.xýñ) !€ZÙ¿þµ Ö—lüîûì¨ÃG¸¼ê ^²4z½V¢âáa [éǽ{­¶ÉQÈX©½Pô¸¤ q°Œœ¯!Ù;³Î‡3hïyç¬~Õbò/՚ƎIx„$%_AÆô+MÉ4I ñXku«u:÷f'ÒcA³Ö4ÓdX®Z08¹%f=GÎríË«5êv¢3¿ž3`§â; ñóŸ/-zM  þ@÷YÞO牗=¸à¿ÀżÖ??ì÷~4˜üŒì4C\[wQ-‘>÷ö!ùƇ´ìIž»’صMÛ¢ùUAªóALTýØœV%Ó@“+k.F>©ã% m”‘lg¥RÀ'MBé àÚ$£Ù™ucÊ =ŒR- l[Ó's’=©8¦~6Ëéç9KžÝ68£¤BqfÕüÏàÐj*ã68CœÜÞñ1'¸²æN™|Œ|²Omv"]•0·.»øù/”ÄrÕ¼àõ_ħ.¤Aøò;y,•MüƒïõØN3ÂÇ}ôª Ö6)‡Z o\rÑlÇ)l‹Ö£ èô#u"¸6ÃrÅÂ8Hñჱî4˜ÃfÃF£j!ŒÄÄÀ+ÏÐR»Gá̢öÖê6Lƒáá!™|©uN~©'B¾bžØBÕÈ®g#ën.…ÔÆg RÞ å¼¬þÛѤ[{†0 †%–É0Rì…Ú5ñ¬ßÛ÷?±kë®®;§iü"€?àßÚ÷ÏÓŠ—9à :Åg°ˆöÇ€ŸÞãöö£‚?ÇÊ’“¿¾d£;HfÒòt q@|~`ÆyûŠWêîï4í ˜%¨•É9XÜV.u00-Î3©Ä)V7¢Á®­9–fËP¦)mèJ±o}É־䦸ªtNt>—Wl.Û0ùä\Á&>§…DpÔ9©èt †ãDÎ-k÷iŒip†­eçjî•5rTô5ÆÈÎv¿é"'ЍðP8§“X¤,ržÏÙ­•Ìw$M‚fíþtþ$Už¤j^§V>gTd¥ýÏÐ(Þaä§8ꜞ4dc­N2çq,°}œ üË^u\‹ãêº ÇâØ9ŒX­dˆœÃqÊrößð×|ë±Nø9ÄËšü)ÍâÜëÊp{'ÀnŸ.¸´ßŠP)Pëg³a£7$ÉÞ³zŒü‡í—WÔK&rÆ#f³º‘”µ,ç ØgI;\zÝ£\Z!ˆ;Kmt†f'Âq?ÆLÞ©6—\]wÆ=?"ѩڅïz9˜C»cïhZé*«!0'†#*I)J@ß`œÀà «uJP*súáµýîî\Û7.¹ø“_*‰Fżhù_ÄEÌ !ÁºŸ¹™•¢‰¿ûí.Û;ŠððÆ›› ç‘5Ë6œ’©¥|Ëy76]t‡4ª#p.alÙ¡Ë´ý·ÄÍb ²3¤ñ|v2<‡äwIÛ[ÔþwìíÿSÄ…ˆÅ¥É­n|ª$qöº–òVª6š]ªS‘õ5Qn¶5ÁC9 µ)ÌÔ8H±}±›Ž8¸à_GOí†y ñ2& ÿ2˜ý0£ eßþñ€‚ü”<ŠNX ŸlÏäQ ÐÍ×lGX®R`¥f£?Ÿ©Šm÷c¬7lØ&CµhbàOzL}.Œjçå\ ª–û#ç$HýJQy¸tê;)âq`§nrÊ\@2 0©Úm‹!ïÒCZðH·\=ä'7ÿ " `gkìƒi2|ñͼøúûä/æýqg !ÈîÏ~³Šßø£ûè €åiåÀ$%©[Ûd°¥&ÈJÍÂrÕÒ:'ŠÑT)šèôc„ñ„É$¤ý·¦ Ÿ 6+æÓ¬` (z\ª í„:ûR+ß±©ýßƧêµ3­Ûµå¶Í´žµ&œpRŽÍD-i”Åo©M^ÙžÛæD}0ë–šÕ@vš« ±\3q ð×ü €ÿü™Þ</cðpŠâðÇwƸ·œºùʨ‡¨3—V4Ê&:} í3Úý‚fø§uf¾ÎOÐÆX®X¨•,ìGs1%+ƒq‚¼Ç‘w æ&*$”!À`³ßÂ^@âäI~¾k½¨Q6µ{™™•P¡À';c´º“¬Ú±¾þ^Q|ùݼPǸˆ‹¸ˆ³…è‰?õ³üýïôðýGìþA€$¶–mmómp†Î€„l®­»¨—M­œgpËeúxå¼w¯ç¦,ÃUP·O­)iJ"…î¨ãÎÜdÉÏ Ç áÑ=]u*\²„´\°þߣ¯q-†º¬þÛýC?Õ#Ѭ`‘i0RdÓ†Aõ²©éŽWÖ\Úà¹R=ü>«@¨¼WÔz­¼S†ãûǘ,ÞŽCþg¾Q¹ù:&¤gó¯øM­}©xÙ€ë ä¿…À¿v/aßùéÔm>-öZ!*E弡Ggn#°ÛHRò¨^*[(äÈi¯ÓŸŸ8¤)µÛ—……¼GtÄ™çÈ&RŸ¦Ì`YZž`öœU Í+E¢9–¬ôåÏÇ FAŠJÁœøgƒÚ`·w|÷&›)oàO|¾(Þ»‘»˜÷_ÄE¿ì¡àX[²qoÏ?Ó¥6»¦dÔK&ö½³¹ý)š\Î%Óî)¢@ýeÐÊkÖ<ÚÇ€ê9¾˜¤ Ð-.×f(xJ9C{a/ULNÓÉëöZ!X¯Û0+“Í¿3HpwÏ׆G‚ÐÌø•¯”Óë›Î„êxqO$ÅÍÄ7?W`…¿ùÝ>;lG).KÚ­m2ÜÜôб–cøxû0ÄQ'F1gàkl“̾F>±{r.‡mq)'.7O›Áe'ªa1Á]ßp5ƒHHü€í©Bbµf¡Q™¿µ06):‹0O˜TòJa0[Ý«ªœ1eœ¬ÖÕµR¿*É`ÅÎBv¤ŒÐþ0ªã¡ÖÓ“~—V²cNíÃ@9U$)ð†ìÚ†ƒZi¡B ò´ù/ÜÑ÷ðr%ŸYýÎ jå'ÌRV+šä;¯$#gIGêN~=îÇ8lGX_¢l·ÝÑîKª» ®CNJ_{QaŠî FÞµQ)š°šá\•?Æ?Òœ£àhõâ™ç¢t²óŸBð*;`¥nô‚õ†ƒ•šMFRä˜\3?H1ðSô†1‹(3I*Ð&X©ÚX[²ÁÝðÍN„û{ü0Õ3ÿ•š…_ýjY\Zµ/ªþ‹¸ˆ§BgâKoåáÙÿõvY”àÇc¬×m\Z!ŒQ£b韯I©Ü®ìr†Q ×R›X¨Õm‹ã­+Š9û-Rų-rá#=¦ioI"4µOmÀ €™Ñ gé*N°—§B±¡5HýLšiM¨ö¾0%Ú/ µ(¢hÊñU%¦ÁpcÓ…iúÃcD ŒŒ¦þŠM®ãFC‚;ö[R#ŒØ÷>â¾XZøUxÄ ø_¼èû xyÀ_p ªÿ4v›³LŽ·.{Úï:Mü(…¯œª@7ƒÒìO2j{I ìE(çMä=Ž­†­å*ç†ÊJA3«f'ÆÖŠzÙÂÁqtj @«c¹j#çŠôèuQd~C®… ò.!e9ÔZçÔÊ3 &3qj»_^%Êžgs¸Ò¿[™uo2Ç¥Œ±aww˜à£m#Ÿš[—<ý\Zqà¹à <8°i«QEóûÕ¯–ÅzúÐ󿈋xFñîuO˜&Ãßýv—u ¶›l‹ZóÙ°L²ºÅA€‘Ÿb0JPÊÈ{´™Çr3cIéô¶£© ‘s†w®z¨Mìwcì4=7WIc «uŽƒ»Í‰Pÿ6}þœ1 È;îvAmÚª« Wm¸OZ‹gEBi§~2#u>È¥Øm…3ËDÜ\¶Iȧ Äι„›Hôhž¾ÀÉbªàr¬TIï¿Õé<ÆÈØ`¶,åI7àÁa*æ‚1 ?Lð‡?²_¯•að¹ )ëöÏø«xÁSÒ—!°AÀ¿¹¢?rþÎ~ó{}öð Ä¥U+UjwõF‰Â`RO ëd2T.åp½L’œ­¸WjVj“öYögÒŒ{–ÊP ~µf‘‰Æi_#ƒÞ¬ey7—™wM >ä À Ç•5gªí–Mt²ö¡A@]帥е—WØÃn3Ò›7@¼+E,üˆ2ÛrÁÀFÃѪ~ÙkuØqp›Zù'A¾ª¥ÿÎ4je aLcHå| Ðú”Y^LfñjÖ?ÓœG"íèùúÌÍVLTôü0%±0¶ÊU/[p,¢þµºñücg‚3`µnÃu8‚<’ôl•¿ŠFÕÂr•F™ûÇŽºgP dÀG|¼sÍÃÍMç4¥Ó¿à?ðݳŸÕÓ—!ø9œ"ú|xßÇq"p?€gS•j™ RáNIñ*dèÉJY‰](õ=Û¤ìÒ–•aL&—ˆRÎÉ&Ĕ؟Ó:ÿ§Ý_jÃ6 ¦Å$²ÇÒ”-0­À%yµ©õÈŽ6\›c­n#Š>x0ÆÐO Õ*SÈÍd¦¦xþjŒ` o\òP+™ºâÏ\~÷cÜ?ôM-úüÊWÊb5æE\ijˆyj´À4îõµ !€kŽøõ¯Wð_ý^‡´c|²íã-Ov©Ÿ ¢tÊìÒ²FÙDwHÞ(J ˆKZ’û¦uC„¥žÜH Î`ÊÃÈŸŸpNò¿ªSà‹uø-“a©LtÁî ÖŠ‡§]—Ržü_ H.¸FÑ7õú‚DZµìÀ0Èf»<Pü;?²­e¶µ° ° ’þ—<ž¤áSŒxò"T°€ö7¥ì»Ž´Þ¿¤¸»çãÍË<‡ãêš«gCi „ÙyÆñ²(ÓK«6”ém†èôc-þ`ðGÓSƒ‘À c@­h¢R0‘¤äÛFbŠOÊÀ4RVÝ@õ² ׿ù)öC$ Íã³§ª¼°¯­ú´3 ‡›Ær HeµfK¥. >áŒÅe$‹ÖU(釕FöIä¾’÷½³ë#ˆ&ºþo^vñ+_-‹Rþbó¿ˆçjãïƒ*§=ÛšÞѬ.cøu %ôë_¯àoý^—í·"|¼=ÆÍÍIÀÐ&ø\-šàœ,{‹9I]¢ùeAP+™è c)„©Í|VE«4?L‰ê_D«v,*¸¨s›ˆYœÜÈó¹þuã3UñJôǶÈíïà8ÙñÉ)O½p¥ÚLw›!*z–*ÙKú§¬²¢ŒRä=C;Sí4O÷HS[+ÔÒ?êÄ gZ]‰äµMzh’ÌÝÄôñ„–U‚>'0âëJU°bÎ@½l¢^²²‡Å$·VýýPš’ ¥k–®ü/6ÿ‹x¾Áøþ€ÿ+ÈamˆÉÚa€@Äßð/ø2>Ý!€­[üÚ×Êø/·ÃŽc|øpŒ.Š9ê2*€Ýfˆ²àé pF˜v,Ž7.yÂ~˜¢/ÁѪHÐ3Ë+1 LƒXóÀÔ [äXÊŒ’…êœEÐäÒð 3|…éªIôçà8zl·¿Õš…z™F&»Gá#”¿³D |ïû¾áÀµù¢.@~ÿCïLôÂøG~®ö"Þ êÿ߯»_EûûÿýaõGrá‡~ Ëà(æ ä\ƒTôFÉ©o¬ –3þjÉ‚'uTËhîò܈€¢gÀ4 Õš,Èh³d¨—LX—À»tæ{(Þ­ÊØ[]Rž:y/:ÇrÍ‚Á™æ¹ê–èË5?œ|½×6ÊSoôÃq‚{ûr©-ýûãoûè&v¾o\rñ«_}íÛþlÆñâ‚ü¯ü?–ΆÐé­ÿ€[ °Õ§â»+ 4ªvš!k÷t ‹!ç’X1o ˆRx‡m14;1Iw÷cD 4•˜1êäŽr:œ*0 Ò%±M®;¤© `_½lbÌŸ·3¬Õm” Æ™ñÌ«Žü·µâÀ4öŽÈå´0 †+ë. 9#?޽`¡êêÔ{ʎõ –¤ ÞÝ žÈ±”„‹ l4l” ÆÂ°à·<|Ê·Ä™âE&¿BAÎõSd ø£ŸŽØïŒÙ¼,lè'(¸†æÌÆ üà1Z6 B›Ò1+>“ST*SâZÉ‚msŒ±pÞĵû«%“’SŠR'ƒs`©lÁ0˜FïO[â[' ýQ Î)1¨È£à`ŒÑç³9B«àþ~€Þ0ÁåUG* BTâ%puÝÁ¯}­"*Å×vó§‹CÙx M@÷è§b#y ƒf¤ ”œÅL¥ê\ ‹½žw뉨i#Þ9ŒUÍ 8£v¿mQ@ú¤”wØŽ0ðSŒƒ²Ód88ŽÐìĈ>œi¡0W&õQþêeú¯R ÜPœ~ % …>€Š†œÃÑ’Z,óÒG®µšFÙBË6||ŠYje[Ò0éáa°pm=–Ép}ÃE)OrÈŸlû yÿÌï—Ê&®®¹jDË ƒ-zY´îü-¼€±Õ‹x ÖG fÿǽ˜ýðöˆ-B~¡À½ýžCˆö+«.> LJgoý(žh9oÂu8Ö–lÜÞ9]!P©üõG1ªEËU GÅZÿq"Ð$ä*•#‡® œM­ #úY&©öŸ’|þ8p@üæ2 ™ml2òðÃÝa‚ãn ×a¸ºæ"N„öÉÎ{„ >êF¸³;-ò³¹lã—¾\Õ×sóWU~Ào€”ºšòïß9T^µš_ûùòK Àßð¿Î;þ_Ã)¶â¯K(`à/¥Œ¿õ{Ö$¸Àµ9–*“ŽŸ@Ιè‘$)uBIä‹(oœ08ï‘» ksMTzûžÃà9“÷öŽ[—<-¥› IÈw I ž¡G¥œ8£º§pOI*`qÒý§õ5&r±8‹3Mên*àžN0ÎŒ«uR$TBI½¡T7ÅìÌ_Ù'+`¹’{ǵuŽÍÐ$l¯‰+k§ £ýiÐÈêwž÷=ó¢€oø‡°à;øÑíñ#‚9'CÔá¢\0°µlãö®f·?Åá<8ް¹lc¹bḣÕ=}þÅÇJyEÏ@¹`,< ôøCiû¿Æ jƒù?ø·ŒçüœpÀÿ„<ÿß‚<IÀ³ àž%øø§¸ø”Œ„ ± ()ãï~»ËzÃC\ßp§LròÇõu+ÕD=‡Ã2µÜu÷PèãF±@”Ý pm†JÁ„m1ìµB´º1Q¯Mi«kqœæëŽÅµÊäxÖDמÌʳ¬©RÞ˜P¦gÐ¥ud[«5«µieÄÓB­w®M~êïä¡OüS'¢ºꯄ˜¸&÷ì6C\[wN»ù~ ÀgAIës‹‘|À/.ú!€ßãøŒýê5ä]ŽJÑÄfÃÆ`L›àYG~˜b¯âÚº‹rÁÄRÅÂ^+<õõa,pÔQȨMN± #sr ³gÓd°L®M€‹6êTy—ㆬÚÕÚ¦ޝi0´º1îíûB¡%+—+ 3ÛT”¤WÎåÜ{G¡–5‚€ERÛÿuÝüSÿ.÷øŒ¯ûA—ÿ¯¨â" xÖñ8ŸqJ”œ¥|mBxïº'ü0ÅßûÃ;8‘s86öÔÏ0F›¬ªÎ]‰ˆz±®´Õ³Ï³¢\#L“@…B~jÝ“¿šûWsðl/>Ø4ÕZé±(ð³çpÔK8§5+I­U—c`ò‰ûŸbJ-‰ÈnÖJAˆ¤—@ÖM¿NdrœéDÄ’*ip`¹fÁ• Îv3@³ë±ÆN3`K XS)€5ÿ4ˆÞúÜÖ”ç˜òCÎm¡êêÿÎÙ«ADx€7%àòªƒîëüŸˆÃv„zÉDµdb}ÉF§ŸŠ'PsóÕ:Y7*ºÃD·8ÆIÀ’¾J¦Øs ܺD|QÇ&™N%D4ÉÀé}’”Fa$Ð'ŒÃ×7\ÔŠ&¢„þô¶08‰ Q¥ÏpyÕÅJÕ"'®×ü¨뎉Ô%ø…/”ĵ çuÜüÕ%ú4'>ækÿS¿ àŸ|ÑâS?Æù(R; „OI Ÿ#‡þ0ßú1Y ç\ŽZÉÔkJœbhÁåZ^ýæ¦‡î ÆQ7Öòà´0Y6”riš -/|R–×1›ÝA‚Áxþþ¶Z·°T¶¤Ÿlû3}V”H18nl¸È¹ÝA‚ÁBÞ¿‚h"Š’>nr†ãnŒ{û–ƒŸµæ)êø„FN¿¹lÃ’@¿ÃN„‡!uŽe¥¶Ó ñÁ=?óNþ´¯ëÏø÷@÷üs‰ç|À¯ŸöC·w´3þòÄä¨ÒØ> quÝE¥`bsÙ™kù+ù UóÛÍ…œ¼Ë±Z³poZ jJLˆ3(Ïûþ(‘¬ ?œPï‹Úa¦DÔ*ƒ€2ÙjibëŒz¢ˆ¼¸£X R ôîN3ÄN3œ²¬d ë “¡©¥¥ƒ²ÃìgŒSÜß÷õl™ ?û~A¼}Í{]7Ôb~܈ü?üŠ÷õ¾J/6ždöŸ>(¸ô¢?È‹ÓdâëŸ)²‘ŸŠïÈy¤e’¤4žæ(2Z§ ôú)‰͘¥Æ‰T5@Ñ3àÚœLÞZá£@éy×Å`Ø\&š¡’ÑÏà1ÕghT,\^q`ĺ·çk“4ú!ZŸt{Ä޺ꡘ㋺—üþ'Ïú¾Ð×áy½] ü“ VÇÜТlmÉÖ>óSWIea"›…M«íµº1Êù 9ÿŽ´ûqFw:ã=-ÛHÙÙ˜jg•ò–k–Vê³Ì‰œ&—úýä?À5 DÈJþÚº›y?y\ù?jßS{ÈàÔþoucŒüQLF=Jî—1à«9”ò†ÖíÎ "M©þÉ÷g (x†4,âZæSÓs¸þBÆAŠÛ;$!¬Ž÷¥·òâgÞÎ Å x ƒ6…¿yŽcü.(Sÿ ^ÛËôBƒ(Ûç›ûAŠ Ò¶˜8²~’YO"P)˜¸´â@È6Q6áÉnòêAÈ»ºueï&ƒS½T¦›[µú…˜8o]Z&..@#“;»¾v&$ð‡¯¿_ÐÒž¯i0PeytŽc´A´¯¼èóšµïÏ3ÿHf¼ŠOq’&UøÄ/|±„Þ0a{G>z8ÆMês$€ÇBØ>Ùña$Z¶$Qþ®E‚Õº ?HÑ'ºõ­”JÕØ3»Îr†Ô[IçcP)ÒšF~¼P)Pu5‹9’ >8ަУE×¢à‘HçÀq/Æ~ëñ&LJ¨èúº OÝݨ¥ÎŠ$~ðñˆßºäŠœÃÅü«€7@Áÿγ»#&ñ<€ À,xÇAÊîíLÉO’1mìªJgú¬OOײXEåØ7ëebZ84#R†B4·5I'¶Â4/¢d$Iè÷R°b¶›!ÛÑÔL)›°D±ÀZÝÖò¼³D„T7 d„3†$ƒÊe¬@)g xÙÓ眤ÔV ã”òŠ9`¤Ÿp{×G«;µl­Øø…/”„çò×½õÿ´âcP7KMp.âéFêÔœ'*v^Ÿæ ú)~éËeüßn³v?ÁÇ}¼q‰’€zÉÔívÇâp-†ÃNŒN?†%mÏ•)™+5ý ×l'Ë`ØZvÐ%ù ‚ˆ@r¶Å4ý°7" ò¬%Ø4©žJZ÷(X\‘[&ÃJÕ‚Á‰…uÖêß06—mÝéxxœ)q˜zoƒáʪƒbÞ@œÜÛ÷©Ã¼à5Œ»Í··¼ÛW\ dìy<³B]÷gý2ÖAYB^ϼ@Üóñ»?ê£Z4qm$Èd#ƒXÀàõž€RÞÄj´;R ši:Í558ÃM˜ ÆôÀĉÐÔ“›:@2šõ2ùp—òö[á#3wÈ „4«MúÙãG1*€”ߤ˜¢ÖJ& lÈq‚é÷÷"ä\R #FÅÂFƒ„2‚Pàöޝ-.…ªE¿ø3%Q/âIä/?¥ñ#P' Ž‹àYÄ1 y2®ƒ,Ç?õ!peÍßülç÷»l¦Øi†(z†tRà’JyÍn I2R|ø`,[õÊyù xpkÙF’B‚‘ŒüT;–¦)uD³|-Y.¨¢.æhÌÙîÇH’ùpZ¯L”òæãUÿ +ö%©õ¿× Ñ<þÜsÙF½2ñ X´§d#J~øÉˆÝ¼äµآ.À» ¥ÜÿøßÏ-øïažæ?€‘Ÿ²~2b~ pEàŒáê:ùØ—‹&>~8ž9_9-Ž{1éråI5+¥m–Ø="þlIºg¶£™s.Q,pÔ‰¥(‰œkÌ•ŽSþ0Ñm8•ðœŒP¶æ‹À9¦AŸ'ç0 è‡ÊSl7‰‹'ï^Ë€”9v4Xq§Lmþ®ÃñsŸ/‰†ýiÙü€2H‹â<ñ“à"ž~| wÎc\Ã…z£!€÷®çD»Ÿà÷~Øgí~Œf7ÆZÍšðØAà¶¡Ÿ Ù‰õšÄå8²Õ¥ŠÛ4BÜÜtѨZº½ïÚDcv‹&jÅiÒµ%ª¼ýPâœÂqJj•‚ Ë$@^g°Èg +5ªþ;ƒÇý³UÿžÍ±±A4¿£˜¦ÀQ'ÂRÙBÞ5P)˜S£ƒlVÅB'+U‹2q©¨~^± 8šÝ÷öQª3eõ’T 3°µì .yÿúshu#ò7¤w€…ŸÿBQxΧôw4>»fô£ñ}P‰ ÀÓ º¦œó8%Ðà"N„@£bŠ?ñùþúoµÙa;B1g`­>K¤ˆ¢Ž,$¸´OEˆá˜Æ¨œCÓaH(Ñ­¡÷÷X&ƒcq86œ9G¹`hR.Yªm#`IÌù$)i›¨'m¥j!JüP –ÿž¦pvšRâ²Ñ °õpL¸•Ôœe· †Ë«Šþ3ŠçÚubl.Ÿ Mùeoøá³ºžuð&Ì07’øñí›—M…‰ÀÝ]ºqªE—WD±83ðBEœ <<Pðhƒ½´â`è'³Å+N¾6¦.€rÙkTLl7çïÊ%pè'Ú+û¨ÄSªW¹6G1ObC Äç9’w+ßsR'a8N°Ñ°5åE]«¬#•µÆj%žÃ§‡ÆaŠíÃqJ}µ¼Ëñ'>_õ²ùiÝüÛÔAúþO‚d„/ZÍO7"œß#ÝÃÅ÷27R\ßtÄ×Þ/à7¾ÓcöäÜI›‚\Rm‹c½nsê,VŠ&ZÝǽxÊa0K&ݪôÓ”º–ªõF ú#ÚMƒáí«ž´aOpxLïçØ9‡Æ–” v,>¡Û°‰O€ÔHå9ÄÒCEl‹ü „ã–É´®J,)ÚÊ£ KëV±¾dc¹j‘Ìï!"Í]3ÙÌßêk”“’îA(ØÈO‘wR7üÃx…€Ô‚› þ“²¿wvæ·ãôînûÑO.¯:¢þÙ³0`à“3Ö jço4櫞<Ïv?A»£Qµ°R³qÔµsT6D¦²?îÅÒðÇĺÌ@ ž/c’‘Uîh\ÑìDŒ ýTc*Eż!¥7'´EÓ g@ à›ÐÿTÄ)yjdÖÎ8ð¥·óâæ–ûiÞü2ôYÃù€‡îx€§ άƒF=1'>w+½V$~|{Ìnïø¸µå¢#f@Þ5pwÏGEŽ#Ó”¤}Õ¦˜ÝL HÈ4R!¦ÖÊ,úßs8ò®´!ïDØmE²°Q#À–bk¥ö,ØÈúã·w|¼±Eâ ××]|øÀÇÀ?;¢Ÿ@}å<µòWkºƒ³Ùþ&‰Àn+D¥hR»¾fáÞ^ ÏOYôÚ&ו|)ghÁ¬2 $†\µÆaŠåŠÇ&9ÉíÃPWESvjdô¸Ëyë 9ÇÐBD­1(êåÉW»w¢Ù™ÌÊÞ¼ìâgÞÎÚÉë$óÈ€ãI£ JÞÑè5 ಠÈSê\ݰ)ÜQ/[Ú‰ vŽì…xóRNwÚJªŠ”óßølî§wî¯B€îÿóΈ#?À<..â±bçSj¨ûèà‚¸0„jeßølQü¿ÓfÝA‚;»>n]ò`› WÖ݉äœhÄ»G![ROßs8®¬:X[²ÑRQ5­øèWÀ9-9#‹ô¹ :)'ܨˆï¸c4NH}0s;¸õ²I(ö[ä£bðI¡Æ¥‘‘Á¡Ý '… 9Ïl+òea ú5êW*êN¢§?„–lW ‚ü;?h÷c¬Ö­E”@¤¡óŸã|Œ˜™ñ¬¤iìbÁÃwÜ‹µ¯ôY£Ù‰àÚ4¨L\^%z`rFj€ÔÀƒƒ7·ˆß¿Ñ°qg××í+ΙÖö·-Ê*-ƒ }Ô¼Þµ9ÞØòtõ¯"‘­¤qHÎ|Œµ¢ !ìÿ^}ÙÙVØÐO°y—Œ3² ‰ªîèA¸uÉÓRÇJ51I(ƒ^«ÛäŸ-HûÞž¯©*¶Åðõ÷ X­[ŸöÍ?_ݯg£…ÌŽŸàb“yÚѱ,ΟZ€Ç !€[—\±s+ßÿñ€µû1ŽºÖ%âÞ4˜–F·LŽþ(ÁÁq„•*6ÕæíZË2RžRTd»\a–\‹Äˆ—¯,ÌgE½lµ¹Æ¥™¢qVÒ` KàßQH‚Fºí9MÍÎ ´qN ¿¼\ë8lSg•ËýAÉÇ/¾¨@Þ3piÅÑTîÃv„΀:ÎI Ç ûÅ/—„RoßuÿàiïÏ*xÔ˜I Ö¦ìÊšƒÛ;>†ã³S*vŽì\®YˆâtʱoŠ;*#{³pÎÐ]¥V"zˆšÛ²äÚ|*3̶ï³xàDÑùƉ\D1Í‹l‹#w-GJWyGÝhæçŒ$)Í»›Á—CÓ`¨ä TŠ´©sé>è)¤Ìð•UÀJÍF­d’ñ†ŸânÆœBàÝkÞ¹êŠyø”ÅeÐFqžÛÇ ju‰ÀÓŠœþd‚¤Ç/âŒaÀWÞ-`·âÞÝêe²×?ÃJ9é[’ !F1öCÔKª%ks´RÞÄ{×òèb´û ú£A˜¢#@,‹—yRí¶É°T¶ÀÙÄNxÑ^¡„ŒÊ…‰ÙŸí.,xm R \­S·¡Ù‰°wÉäDÌÜ[æ…mVÂ2R»-ÊjÙ ýïßðØæŠ-t–üi¼B À¯XÅ‚ö·Ÿ Õ‹Q)˜¸±éá“íñT°èB' eeŽÍÐ(­o 4Û‘Þ´³Î} A:±ä¥¿Sóe 9eö#©'©˜p\Õ¦Æ$­k[4³¿³ëk Iö3@¦h÷cä\µ¢‰k†ÚFþl ù©æ®–ò†ÎÀ•„åÞQˆÁ8Å¥GgØKrî/pÔ¨ åïkï„i²‹êÀH.ö< À=L€‹x:ñÎ7»·AßëEœ1ˆ‡ÏÅ7>[ÄQ§Íú#âÙ¯/ÙSEÏÖ Ñ׎{qìFx¦¡`·b©Lrî¦Alä`c¥J#þˆÐøœ£Qªm‚gS¹`"ïˆSª “d¾€§®-MÌ~š³1Æ”Á¥Gë Üߦ:³¨Ž³Â4÷µ$Ç{G´ùOYƒºÑ>ð±1Ÿ¨Ò¢_ðï‚°1O-žEP—'«N~æ…þã;cÜÛ °¹ì R0p}ÃÅÝÝ@ æ¨MM6LƒÁ4™æžrySY_]s°V³&í{ƒMæfZó‚ZöêßT&J?¥R'QÆÕOµý×–lT l‹a8ž}S AÚÖ«5‹4´s&šG»a$0ö8E+UÂàÿqŽc à"Î Oǰb\ÄcçÀÞÌ‹{{»·OÝÆ+ë®Þ•žI½lNäzÙ´€eppNèþf7Æ`”òŸkh½’‚G&®ÍqiÕÑÖÁ8Ápœ¢;Œa4rHµãÉþ ¥Øuc=o?-6ªEl7zíc_;’¯_­QEpLÂmÉ {%4wo/Àgoææmš¤iñøxŠÊ€O;à 4t tÿ{ƒœ1”óÆÔ¦YÍK”…$bÂÛŒ¥ o¢+rÊ.µ{`3À8HeÊÊS.~ÙÍp$È{$ʳޠLt‘Þ?c$(ÑêÅX«[hT,G³³Å(èôsÊyŽÍÇy¤‚«E2 2”þµŽåL­7¤s)K`˜œfK—VœGh,£ ÅA+Ô×m¹jâ+ïæ…i\´þÄ-œøSùz´³óÑÿÎ+´É\|r€¯¿_‡í6Û?ŽP)¢^­!ƒQ[ÿAÅH½l¢ÝuUÐÚÅ©ÆKµû1Úýa,pcÃÐ]W×áp-ŽœËw9Dˆ[+ù)޾çpmË~Lmp`cÉ& Ub÷(œk?<õy4ÊÖ–ˆïÐŽ°ßz<¡9€’¢­eK6£„åîÞéþ5q|xßgo_õùÔ¸{*ñ´€Ë Îâ‚+Øß³‡‡é_A’‘Keg#R­ú)D*d’TJ=*å&…]_²qeÍ%ÿi‡Ó—/Úg2KNÌavš!nl¸¨L¬Öl<<\¼¤)ppj>l£ja´?û5ÊâR]Y¥»àQÒ¢Æ~H©Ø= qÜ'Þò¿ B•k\@ö}vBŒd"bš _}ïS¯öw–¸ Ò­xpŽcü1¹¾„‹Mç¼ÑÃùg éâ»x‚Hpmß}#Ǿõ£îíð®¹ÿã0ÅݽW×I"7ç;©Õ±Û õhRÉñªPën)Gô?šap¦- 9*Ælé=Ðøêš‹FŠ èbŒ_+žJÑÔ]‰ýãHË/ RE½´Jsÿþ(ÁÃ`!#aV0l4%ku vÓ9Rl¶c¬7æRS[þ$^âàç@âsÁGßÿxôˆ%¯Áqà`kÅÑúЪåsòjÍ’XÜk…ðŽõº•šq@›úY£ÙŽP-hH¯€Î ^¨÷¬ZûÇ=âq6*Ž#=3Rí0ƒ3]ú©Hòæi <ØàÚÔV¿´âÀSuÏ6lj‡‡!Šy2¦ØZ&ÛàEúº P¦.ÀRÅÄö!Ù«YW¹`"ïrM%‚^×Ä8êÆèHRXµº‚0…mIs Å—u¸vÀhã?hGȹÕ‚ 0J$ìˆeÆY.øê»a[­ÿ3D¤¸õ­s£ \(ž?îãü¢'o‚Ì Zæ†@¥hˆ¯½WÀßü;8ŽôÚèH-5Û#£n¤ùúL*—9—Õ:äØÔIHR¢Á©b)k~‰¶Ôþï |²3†mrÉ&˜¦™CÞ#WA…'³LŽ›[¢˜:ã E )Úq"È2cÄŽZ*Kÿ&á¿wóoT,Úü ÜÙ žÈ)ð“í€}éízà3%‹x2R<<ÁÃzÃF£2IN›£„”¿»À±9ò.Ç•U~8Æ`tºg€šëïE¸ºæ V2Ѩ˜Ø?^< ê´û1–«Öê6<)äIlUéQŠ0ÈKu©ýV„CÉ`òý“ThÑÕ⯗Ll6lä%`&ÀÝý~Œw¯åíP5'úx_x3/Ö–.ÎJðÍs'é\Äùã.Ηp\Ø?•PÄ[—\üèÎ;Í傉JÁ@£b!Œ„ÆVí4Cì·B¬ÕIŸÅà yÏÀÛWi4pØ&“¢G•zàïäŽ+PÈ^Jÿ†ãC¤h÷¡©Ý–ÉsȼH½Ÿ <ŽZ‘ð$ˆÒøù‰ö&X©]°3HppN€¹#dµ’‰«ëŽúx[ÊÓ?ææ¯0Ê` 2Ø{é€_µÝfž:gÔ¦ß?Žfnþ*’TàþAÓ`ZrWàö®?I™½ˆƒq‚{»>nn‘–õµuªäÏâúPE_+¨Ml4t‰Jõ¥(œc ˜7“î{®Íµf*]ûú£>’xûªG`À‚¡Ù*„ ™X­ä]o^òP)˜0ŒÉ{§©À`”`}ÉÖ:{G¡vGØX¶ñ™›¹Gè±0ÞÇùZÏ„ kà§çõppáøÔ±˜øò»Ü?Yo˜à¨(-}ƒÓ†Ü&öä=ZãRiß»! ºv?Öæ=《¢“ÛcÐþã Eg?²+=–á8…%µÿÓTàÞ~€ Lµj«mq¸ƒerØѦ‹× i%ìæZ 77=éÑ2鄱@‘Ͱ8 / \[wáÚ#?Å';ãGFÛA$ðÑŸ]ßpÄœB1» À_Ãù™2O-Èø,h¹¥ød;Кʋ"IîîùàœÚ+¤ö'pÿÀŸ”Ì š…»‡®®¨okÙÁÝ]gQ #äe›i}ÉÆ½ý¦ä€*9×€k3=ƒW7S’žà¸c0N(N«¼{Cš™•ò JÚbb ,ÐéÇ)V$µd}ÉÆRÙÔ³££Pß”¶Åðåwò¢˜ûÔký?nÜ)ž'xz(/pO ÔI9¯óY/Y I38{%ŸÈTëK–øìÍ~û}ÖîÓØÒ³¹ÎrMƒ@|ÊØMQ¶ÚâD Q¡Ñ©®Ò¿Å‰€ÁâDLQm“i ÿ΀ªõ9p%î‹sਛ`¯EBAj½Urî–¸¤ÛR+™ÈÊﺀ£J „˜¸¦©@ÉÄ &ðùjÝFNbèK3£yëîYünîïè V).ÔxDµÿçýnŸVpKžÐÜ>¥ìînpæä(ŒîìøàŒa©BvºqB¿³ll{-š‘¯Öl¬Ö ¸{4˜¥”ô†“¶þJ¸þ9iô£ÚúŠ‘0òS Ç âšzÜ‹qØ™t:²šÿÝA‚µºÎË´€IDATÜàŽND XŽÍ°\±°V·ôC5RìGØ;"œÁj´FÅÒæǽ P2ÀÍ-o\ºþ=AÔ@›ísãh~ÝÀEàIcà“sã¥J‚PàáAÈ 9õ²!l“½r7cÀçÞÈá£>Ž#ucl6ì©ß\v„ã0…!¿á8ÁN3ÄÁ1×V¼ª°©M¼s-‡ã^„V7ÆÐO'ÄåϹ¤üwÜ#pô¼Í³Q¥ãʼnÀ~+|D%0IF| ‹@„¥Š©ÝR›í~ ÛäpmFtlƒÁ4K`› ŽdOhëY»_CÒ²ë% aL_[AQÓ”Fq"HëFLˆ¬êíq?ƃƒÕ¢·H  büƒó~¯O+øyPû6÷DO;‹ínö5A,p{Çç.j%[+6)áµÂS7¸$%D§g“ŽþÖŠƒQ¢Ý›ÖPPª®¦(€‰jëg%vÓ”d,G~ŠÁ˜¼”r•iµœ§yT»? T#Š JI0ob¤¨—Éš¸˜3¦«÷öv" laZYK]Ã(SrœãKoå…m2qFo¤‹ HA›Æ-¿yŽãô@IÀ_ôzEƒ´ÎK,â%Ñch¶cÖ¤è SÖé'XªÐšdì•ÉÓ ð‹oåñ·¿Õa‡ÇäèXu¶¼ËñÆ–‹f'ÂIs›¡Ÿb¸ÀRÜ”&j­Y„s”ôpµdÂàä¾:‰%@Æh+U*†Ž{1:ýÙû‹’ïU2ÁJêw0Jpo?В霑Ț!G¼¶E&pŽÅà¹LƒTóž1,J<[)gÐQžœÿ¦ôl)JI"0-1Äj¼ pÔ‰Y’Bœ²WþCþw8ç¸ìi$9ÐLâ¤8ŸŽTwv„±X8ÿŸõÅùQ*“•‚Ë«ÒTœ Îc »Å;»>Þ¼ì!çr\]s$T ïP/ïR[HJ²¦?I*ÁŠ‚À~éf ¢‰² ú’ÂX Ù‰P̨ä s†¦¢d#ˆàIÁz™±8§ì°?J¤ðd´@í5cúó1b(àŸ2ûÙ\¶/6ÿ'w°à>>Cľr¼ˆ'‹Îï¸À:ç1Î @œ²V/fjú)¤8î%X®™¢”Ÿ€½ ñÖ?¹ëàîn€fgº µÒ7—™×B€´I8§ÎéÃ¥<á­\©“ʶþOZÆ3PÇU í·"쟆ê)z†N“Cà”ÖŠôtQøõf T(ÞØ +zE=ï¸6u† ÎàØ„90$ë‹3ú7Ûœà%fIÒOá?LÙ6€­Uïãœ]€§‘ÜI©Î Õþ¿¿>.0R_¬‘OIÀ[.Š9WÖ\Ä)p”1yÈ^)eÙ¨Ì&Ô†[ð ¼s5G\ú ¨SHN©¤K³ ?L±¾d£Z4Á9¡<³ôŽ“7d«c­ž"ç%°3˜tzÃÊ8kå\.Ñÿ”Áî‘øÑ{×sڬȒ~ÜŠ¡"NŽ#$ÒC£V2ñù7ó‚¿B‹‰üì,Žl류~$3>Ç1>Á…"àyBá(η@Ò©/ôú')px#ާíf…ú£#?äå‚!yŸVñ½ðÈ»\|é­<}Œœåª…ÆÄaP»žÔ³IH@æÁ'uì2Å£J2Lƒ0K6'!£ïѨ§üofÄÏF—í'ý>Ï›x ù?Üù¿@o˜ê¹Ëv3\HçË~):säÊHRV7‚k“ÅÍ-‘Ü4 %ëú§³Ò(ÕˆS׿¤7pàà8’  è/êäÔäú’劅£N4µñž<÷£N„•*Iþ6ªÌ~Œ¥ŠE’ÁRÜ'N„níw šíH?@© â‚ÇQ/Y3ß'ŠI*XeŸËUï]uhA(pØŽÑî%L9u5Û1[oXjT÷"BØ9ž'8ÿm¼ ÏñªGç3;1A\éQ,pØNØiZôŒÑ,ø¨“ 7LÙRÅD­d¼,±™áXL|ñ­<îîì ¡\˜ðØÃ~+$?Yí^ZqPΛ8ìD°$r8N'@ Ý Ó Ê ÌXo£V$Ã3×&|U)o`mIhUÕ‘O2Àœc®ô»!«wåøà  ñÂëzÙÄ•5W¯×·w|g§;ÙEȆ´aZœa³á`­nÁ0ãwv!Ø»×=œ"ãþˆðÛOú]ž7¸Š€'ISc»Íˆ™“æ5÷ö|íê¤æ$ÊþבóųWT;Ç"¾v:~è/”ûeŒ¬{G!®®»¨—,ÔK´‰gé}<Ï@½d¢àNµ»Ž{ÔIèHȶèaq-úÌ#_À¶(TZÿI"pg/@š ÔŠ¦…ì4CݵX©YxûªwίñÙ“IL»—°f;aã`¶C”4Û1˹ö‹š… 5ðÎyœ¬"ày…Ÿ¶PçUSÌI/ìCŒ‚”uâ'¾‹GÀø b~‚åª)Jƒñ—Œ9hÀgßȉ·}6§Øo…¸¶îÂs86W]œìµ"QŠÍeÒÛ((ä ôF‰.9'Z 2úΠŽèa¢Ù¡nÃ[— #KÊ_Î%0÷r•” ‡>±ú£I"°µlëÖÿîiäDÕ¾*?S ÜÛóÑ?ƒªì©ÇÄ~¸ºî¢Z¤ ¾Ù&Û`…1‹Sàî®ÏÞ½æ‰SÆßð¿Çê—œ'0| ´ÿSA›ó•5GÛFÀRÅÄReòÖY žmŠ?Ç£`âø¤ªy!Ö—l.ÛÚY¯Ù!PÜ,žzŸ£n„¼Kó ¥²…Áˆfð§Åa;ÂRÅB9oh³ ˆÀk(çM,•M” &“M¼± üÞ÷§5¯Œ|´Ø þ˜ý*Sw$úc¢Å\ßpÁ9%'nŒSõ_.¼|Õ?üzÃÍNŒÁ(]Ø•¢¬2HP-/òã\lÎ3‡þ.Éþòff/g¤8¿ ` ¤øb>€k¶cvV#˜Y¡^צˆ߰Yª€v/K¤ØhØâ-—}÷Ã:ƒDcsC*ˆ±Õ&¸±é¢&7ù­e ìh÷XC1G<ûÎ ~dLýPÉ\”²ÃvÌzƒDtN{v’8lǬãâ$ø9Æ›  ò< Àùú.:}œŸ° Jžûu—Œ'Ñé§O­‰•÷¸pí—kóW¡º>ðÙØ§Š[ÙñªàŒDtÆ!q˜ÎäX çḟÀR86 útÉ#´?p¬ ò¿3ˆÑêÅÚXÍ0È ¶$eÖó. sòÝl4lÔJ&†~ŠÞ0ÆH% LÑýYvš!öÏî,»(j%×Ö]-^ôð ÄN3ÀÉâH Òí4CTKÞ"‹à_Æ H>‡3Xÿ*þ $±ƒ8¨IÔG-òJ:÷äëýŒ@÷öÈ7`¹bacÙA”ˆSm€Ãˆ2ºœKâ?WÖÈ9pfˆcA´7P%ÞîÅX[¢±p£bêŽé(Ú¨'BÐæ©6΃ãi…À$èô‡ öŽhÄðæeOë$©€mÒZ[ÎÓ(:Š 36%ŒSôÇ Â(E£biÃa;Âvóñ³‚1`¥jáò*Øý0Åýý‡íhî±£Dàþ~ÈÞºâ-‹rÏ€'Ïž'ø&¨Õ6WÿöN€ú< Ãq‚(¸²ê çrÜÜtqg7xÄç,%”8%z`¥È÷à À ¥¼Íewvü v€3çp” ´™r,c2Œ‹b£nŒV—Z\‘l[©wc¹b¡^¶4ã@©ú­Ô,äÝ ð¸ãÁùk_[§ª>«Æ½Q¢Ç KUo^~yªÿ0ì¨㸗0%Mü$e@ó8楜!û… ¡K äöïŸã]$ð7^Àù¿ÊÑ]»óD/{AUiŠî y*Õ¿@¹ÈÅ Åž¦|FvŽ{16êÞØpñ@Ú¤TèìGhh}\•.ª€c1\]s°ßŠÐÆÙo[ ËU œÇ'(ÐÙï@½¯Jàî®îÖŠ9#zRcű ”r†‘‡±@t%ÅB)«66˜œ —VlÓº6íþâýšÆ!ÆAÊòîB‹àÏXG÷ûû{Âb3´ÿì“öÿÉ &ì·BDqŠkk.<—ãÆ¦ ãǺá苺½ãã–t¼ºæ"ŠÇdL±àµÍv„‚G3ý•ª…þ(ÁQ'†çrT *Ré³%½PÙú A „$ØmŒÓGZÜJܧ^¶PðH>²;ˆQ-šØ\&EÛKR¡7°ÙÝÁHºÊý8e6ôÜ‚1 RqØŽy’žÞê?-üPà¨ccù¹‹¹)"Æ8Ÿ—¼)þÅçý^ñè8o¯uëEœxˆ5MŸ,ñ=–ɰT~y«„°Äµ ‡ýñ1Z½›KöÔ9/UHÐDZ¸VX&ÆkA$pë’§q–«jEÇýÇÄxªˆ¤T•ÇÉlS9!»ëKÔ¡=ê’ØP’¸PÉ»6a¯ÈØMªÁ y‡im~Ç⸹é!ŒR Æ)†>1;|I+OR*¤h~JS"ÒX®Y°%(¥?Js98c°M AÎá(å©++„°ÈC­dâí«/Oõ/§ìZtú {ýÏã^ª%CäÝR}@T‘>i|²¶ðr¯á/S|ºfOÃñÜ£ÕMØp|vnù¢ª%Cä_òê_…e0¼wÝ?ôÙÁq„FÙÒ&µŽ¥|®v<Í„-}N‚H Õ‹P)˜Z*½V2Ñ$p¤\oHëð¼ël K6‹uvšá0˜H®÷G Û ÎPʸ±Iˆÿ8&ü‰ÊàZœPÍ£XhüÀÐO´A§Sì3Û"êûZ’‘N?ÆíÝ€äÛÏxmƒHàÁ~ˆ«ësq­6þYóq¿»'M¾ êÌ `ï(ÂÐ?2ÑÄøèá76]¹ »àŒaû08“}oö=;}j£__W’Á>Ùö5×_Ïó9ÑðòG¥@¶Bf|®=1ýQàÀÞ Æ8LµìîXRR”Çõa;šI ÂÝ!mòÊÁO‰Wì4Ct‡1Þ¾’CÎ¥Íu8nl¸ «>×( óPÍ·®¸¢Vz¹Tÿ Xª¢?JØi–Íg‰088ŽÙåUüù¯ƒ+ zëy€]°ÐKôM½Ôñàœ¯·°`]z!;ì¨ýä´¿“a› Kã•á \Zu°µlãör7d@–-•'ö»®5Q…å( I·NpgÇ'ŠtÕÂrÕ"Õ²IZù²Ë¥AËI   ?2qþwBí•r2¦^ûqmŽ4!þ»Ô öl*È”Yœi0X.CÞ#™Þ$%p{Kù€ŒââD`¹ji×f'Â]A(+I¶CF–¹p$úeÐøò±Ö¬'I,_q¦g.õ‰îï‡L›é,Êê>zàãæñó/­8àxx.äèÏŠƒã¶IŽOKezÜÝ À¤©I<ŽÅµÔ¢nÝ  ÝqoÏ'„hF]J;@Fõ’ סê^Ñüh €ZÉDÑãúFUà•½Qù Î0Räe+ª\0P-LƒßèæñCÒ&.xo^ñÀåHâe !ÈÆ³”7D»þ9(Ð$¬7JÒjÑ87çq> €UÐà¼@À}Pp§‡Àù%…ó¹žôQ7Úßɨ– x™òûS¯g3ñîu÷ö¶ß Q“ʧ–ÁÐêFŽ Û¤ÐøŒS‘G2éTðô† AŒ‡[*›Øl8º£P/[È9ZÒBx0N  ×&¹vƒ~‚ƒã³5“Ö—,¬Ö¤dq+Äþq„$%0bÀ^k¢RèÚD9÷Ø&“N°Œô_0qsÕ®­1¹þ•ó&Æ&u biJw’Ý6ëŽÃvŒî A£j.Zo@ùÅx’ b)ŒƒaÊö[Ñ™Êûèá76Èõo³á€3†ûûÁc%iJ´ jÏ[X©Ù°-òðº!›è ŒFDCì’ì-›È{œ³¹úÒ $t؉(ѨX8”Áœe}ÉFµ`Â0&7ƒJ,¡´ÀÂ(Õ`–ÙÔ¦`R·A©_Yw°R5_JÇ?ƒЉþ0Ñs¾óD’’Dp1Ç…ñ86’ç ÕR»qÎã AŠ€_y^'þ QwÎyœU=ùùô(eÇݧü×fhTÌ—ðé^ÀõMRµÛ9аwâÊmøÏ@” #e×ÍZÛý®Í$´ ³qúR@m}ɃQÑ”÷8òÒB¸ÓqÔÐ&X[²Pð ıÀv3Ð"C‹Î¹^¢ƒsI?8 ᵓê°q" FÀQ7g4ú°,²ŽwúµR0'еò¶E8€4…Þøý€|gÂX`0N4í]‰Ü‰Ì(aè'Ø= ±\ËŒ˜ìËÏ<x ŒNèB.šÓÌ|¤€}øpŒëë.êRJ—s<⺔ýÔê†1¤Š`Þ5PÈq­:ŵ…J‚ŒRTw˜`ä“€…´©ç=R&¼¼êàÃãGæUÙ÷>lGhTÈ’rµfƒ³+5š[Ù&C*dV› md in`øú¢cÁv›!›uÑÏzAƒPhNþJ•x¢œ“Ë”mqórGÞ5´Í°ùÅ©ÀxLU~wìä Ýhy#‘JƒójŽ#”òänµ¶d£;LÐ9¡¨Á+99Ç@_2—ÏÃv„Ã6Í텠ΆPw¡R4ÑÄX«Û¸´:‘HNeÆõµRì·"øUÿÞ¼ì ×yùÌA²AŒ.ªEçÑCÏÞã@ Õ±¶ô\i×Aôš?>Ç1>mj/D˜æ‹C|òyâ:hM{æ×ZÑþÔ8ï¼Á,Uh¦üªÞ(BõŠ)®®;ì»1%[•UöŒ¥X›¦¸uÉ#ZžÃñæ%u"$)$V‹ÔQ»‘ɪkàØ?qiÅѶÃ`Kyc žnõb­=¹vo6lÔK&Ò”œaÏ#ó[-˜¸¾é"ïríKsКÐÙ}Üþ8B¬‹XÎ¡ï² ‚ê¸R¯@ŸÛ–±ˆxd„õí³žûã&+ pÔÌ` #€iÒ ÷¬×4+²` œ3tú1*ªì—e…ÍÙü 0&jÇ8  …ºù€«kj%²u¼½3ß(–zûÊuêÒŠ‘ŸP÷AOµ"í/«ES‹[)u|o/@³MȤ' žjÁ€µé¡Q1apR4Mƒ1ݼz-),„ÔØ|açœË5Cô†Q óÆQ'arAxùeÒçMZ $à…pÓ_±¸ó'7ðœD€Z„ FOGòW²8xµ«09ðÖOüäî˜õG‰öKɆžñ‡©îfÊÂ77]T &vŽB,•¥Eî(AûÄHYýV2RTðã^ŒJ‘ ÙHÅÆjÝÂpLx‚v?&Z¶ì,7»öŽžœyZ/›¸¾î•†Awv}¶gïäÍ’¤¤%ÆÃq:õ39—ãÊš ׿Zæà8F¹`Ì;¥búžað€Ë˜÷€IŠÛj@‚…òºJÒÖ²h>’si†’s¹Î| Îôfª€`ã E§c¤Òþq²ág/¢úu¿j+ß媅Q@­þy_ÒPŽ®oÐ͸Z·±w¢R4±RµP.š:8òi£®—,86ñIO*¦è¬Ô ÛU ÀÃãW¥þÁZÍÖã ÒÎz5»¾á R|¹¨óB€¹µ’‘î·â§Ò’ c£Îsu ô@–¾ûÇè‚$þ¹œñ«‡8Ÿ€çÄB£îÓ£ýqFZË`¯Âã½0„ «àµ% B6'¨Ûôºa0ÔŠ&FAH\ƒ!I¨im]­OÖX€ÖÉy…D£j¡œ7‘Hð÷Áqûˆ ¸zÉD¹@L­J$€7¤„»eR·öáÄ—±Çïä4ª®K A ÜÞñŸHÍö$à°œ'lB1G›}wàήQ°›Î¢õOáþ}œ1 ~ÜàK …qæÁ…Ú}¢Ã­Ô,ä\Ž{{A&@¦ÉàÙN†NáÚ\Û+°·ÈþRžªc?Hñà Ô?ÏýOE*È8ȵ9êe[ËÆÁb¹àƒvˆ²¬ô7–¨]”÷ ˜œŽ7 à¨3iõo4l,•Mìs´Ècq¦ZWŒ» Ù‰pŸðJtBÛ> Èö]fÇfxã²+ þrQÿN‹zÅdí~‚ <ÿI“ÎCŠZ)A)ÿÌ+%¥xçS¨ƒ ɤ¯|÷,B=&ís§€çä½pÔ‰ÙÓ¸§Y¶å_ê_}×a¸¹éâþ^ˆÎ ΀˫b©ÍÏ9øÛ#¬7l¬Ö¤4°ÄF…d™5Ì!ê!ÇzÝÖþV—ºQL#Ãv/&‰ø‚ZÉD9oNF,R’ýòª‹v?FwÃW´oœ>¾^®Z¸&7?Lq{ÛG«÷ØRüS×Í`ÀjÝÆÖ²Ǧ}b¿bû0À8hvbŒ‚”Ë¿ ` @ó,ïû8 € Ì]È’Tà˜ l,Ù(å ܺä¡Ù‰`pÜ¢ÉàXL;ªƒ©VH¦ù)FA‚Áˆ¤‚(gÚX[²Q)š¸¶áàöŽàŒ-æP=\'‡¼ËqeÕ…Œ1ð§U™Ô|?ç>t*oÛ2$%A³á¨“»•|b¸‰þŒöɕж6äV¨>ó`L]$u§Ó_g*€Þ(ÑöÈ«5 ëKÖóäÂ?•p,&êe»Íè©TKq*°sÏåÂ4ž ð=°ìèÇø!àva ˆRD‘À(˜løjvÇÓöŒ @ š¯ÀÚ’¥2ÂnoûâÓE8wÿÞ®›Ò3àÊšƒ’[!$¯³”7ШLæû t´ºnïL”õ±å¦ÞîÇX©YX*[Ø?Ž`›”´T‹&á#ºéÌLµ_ÌZ#[çXªªéæ–+<‡¿íÿ“Q+h÷bŒ‚ó ¥HZ :ýSE1žVl€²éó$Û A k¸èÌ‹ç×(âÒ8j?=ÚŸÔ­J&÷u !€zÉ—Wmö£Ûc´û1Vë–^û!`L·ø‰P¸® œ€Çb¹f®/‘ÊÁq„ýã`¥5p«£{ í¼Z4u'¢Ù‰°{DðÕ¢)Eá\›~&’Üüî0AWŽš =»ùŸÕÔç´¨ \YuQ.²‹ãÞ^€¾¤ªD)ö[¶Vìy‡R8€ÏøþYÞûq€MЂ8;™;”ò&„'tU/„гûTÇ!Z]ªžOKÇfæ0³¾Leÿ L’!0sSž­^Œ\3ÄåUn6´CT‹&–¤q)ÿü6O:<ê`„3´RiRQ/“Žõ WÛ §)pØ!¹àkë.áŽ%hþŸqºƒ¡+r×6^ ð߬°-&U¢§2à$Z`òÿgïO~¤Û¶ v>UèC­¬Ë™°û1v‡‚•r2ö§þ!¨ªÞ¡þïðÐþ_'ظZÏîý›Â Æs7¾—äÐ÷½œ×¾ÊÝ?zƒÈÇ;»D8ï…(çtè:CÎáè/ætáPíГY‡ðWÃI”îìGS©ë¢’ש‹j’O1«ãûCg½Ã‰xÏ&8ÉJ œu Æï¿S—Xb:'e¿ó^KíÕ­TY6˶*ÔN¨çã¹Qüíj$Fu‰üûp*ðæÌÃx&n¼¯Ãi„™Kš2kâ$ |o@7éÿ»1;íXC‚zOBÄÔ¦ñ‚w,äšydm oÎ|xÁím4E,ñöœÌ$vª&šRJ¼^’ N¼B‚V  Y-¤$ˆÏtñòÄ»t.˧tÖ QÎÓ®}¯nb4‹Ò6M1§á A4ùB'»ÿD& "iêÆ(ç¡’¿Äy?D)¯#«Fa˜v2Š9 ‡-ó‹_ ¤ŠYå2£éýX¦¡bšæ½µd¯‰ïAŸÿÕµVÄ+Öýƒ"àêƒ:%ÛDùCœJt‡"¥rlJõ¹ ÿâ¿ÛëBcÀ³}KþùOs6ž L\r^Gµ¸ô Õ¦(YWë%#mÿ¦ 9_Æ!/`j¤F´¯t³†Sóþ¢(d5ì׉%ÐG8é7~ùÒb@ ﲄHp^ã©@Æ!ºúò¨@ÄÄN›y4&š*=šHÈK´÷jQÇ“‹¸è‡xw¾YLpg½Íêµ]a òÄøhô¸66-êv×ýÁTµQÖ]DoÁ b<Ù±Q)èiëýÍ™ñ|sä$"AÆZR Œ%IêrF•Ve‰ ª)*‰HŒg:£ŽÉqزÏhØ©x{æ¯üx!Yø¾8pPÈÒLêb¢U%¹bÓ Ý|L­¡zÉ@)§#csLrÕR†DÉœvC\ 7HÿvGaJyÙ¯›(æ´¯¢E¨i$<ßO€LbVÊ Yü°´ÀHÈg›à'm<(^ml·s·@»žAÄ]ÿþvÿ @1÷ј,Ÿ,$hL[)x/¡NšúÀ„1~:ö°Ÿ$•l]O¼§!Ã1¢,ƒÁócüxä‘K•L€ªE¥aˆF™XYI{ý&s «± ø›º?yÏ ú®:Ëfª—È…ÖbLT‡`æÅ¨äuìÕ C„G>ÎzÁ‰vƒˆb£Ky-©HÈ`C3³M €@-¶•XÆ ðú/I‚ÄÿñÈÅAÃÂN•¶ÉñêÔCot{4%Ùýz)-d§j"c/co_‚Š…±£?1G©Õ¯¦1dlž¾vêÆèßïö2ÉDµ@&{ ;¨P¹>íAÇ\¸BU ¦.i<Ý%‹%øá4BÖ¦9“”´ûO>¤žîYÒÐ>OãŸÛÍ<ɷᾺQ$qÑxÖáñr ŒAÅïSÜÒeëJôA^÷/>ÄI~áøí–Çp@€{ µ^±ÞøæÖìmB'¶‘üÚ…!ƒ Ã–ÉÎ{¡²L§Ý¿Æ®¬žãçcrïשãéØêErYMèДäéõe87˜½qˆZÑ@³²(’öº”ÀY/¤ æm’y‘üg._²IÄ2n0uJþ…ÔóEéþòYÌ~b ®1p -:ï‡éؼ8ë†,¥¼ý÷°†É¦ÀЗlåÁ¤¤Ý}¤Úÿë"‘ ~sFíö„ãùbßm.*¢›"i³'†@‰…"c„"…zPcELÈ;:TãD@HÄdܱé>jZ˜¹‚€"Ëïzˆ£™@µh(mBnv‡Ô^š¹´PÌ=Ñ,B£D΀ƒI„C…^M‚3¤@@2É êIrmŬ†ƒ¦ùU-šY.èr2îepOòŸ1F“ÕÒ£Ré Àÿy‹cÌü€€«B‚@€ÛDFý»×ˆ%ÐD7dmt±ÈØLÚÿª¾Û×gÀÓ]Kþ»ßÏÙÌ#ºßrŽˆc@BB`25ú^[#}}GÃÑ…0’¨—ImÕ$:ƒ0Åh¡ÄI7@wD…ÀnITò:Â0F_i$¯».êe#Ug{ í?ïQ¿¥Ý HjXãAªçŸ0 l“CS6ôá?@ãd.RE[?ŒSgÚå÷XÒ¢ñ‚˜™ÆÚîð!¸–]³IÀüÝu„ç½Û‰½Ä O¸9‡ã‰Ò>~wî#ïé’oè¤"XÊÓì'Ùñ'#§t4øùØ»äõ$çû®íã;¥ð¨iá§ãË~‹c§j¢^&w*‰…Ãà»¶I¥JÄÄM­ dŽ9DT4ÈB†ÚFÍŠ®Ê`!dê K`§fÊRîËþÝ4¤òÎ,ƒÁ»'%5µH³|–ßToÀn³|¥^Ïñuoün $4Üò8uܳ€¢ý±áDÜ+Ä„1 ŸÕ }¥à¿«Ac弆ñ\ÀbdTñ“¥9&ÇÔ•50a§ÂH¦¸€¬ÍÑ„©­{wbæ^IÈ ÑngH‚l›ÖTÆŠ9 ùŒƒ™'ÐFèŽB¸þj—Àzi!ïëªÎÄÕä¿*–Y3—ì|¤l0!$&óš†TùÖ65”rxL°3—Æ3WÀ %•»dRµ(vDoá†ÑçsPðWëÎ{“ ‹5ó5Æ?”l<½ý €Òpñl×B1§c·f¦¸€ä&rNs£œ£¡˜#錥A#I}ˆ˜’øxN–‘­ŠIÔ EÇ;ëkÛ+ŒýQ„S‡œ¥j%ã¹ÀI7€¥æU-5Z׋Á9KåŒ9gK샵êqZœ!qÜ pÜ ðl—l#Ó¶5#‘ ¼ÈðxÇ„®}YÒ¿›„i0YÌipûѽ,¬I›öÓ¨‚ôêïªÆKè¿Ä` {º­Ð!èùÜÛó„D§±HÜÍÕôºÐ4BÁ+% 4¹ß0ÙŸÿ4‡ëÓš˜\¿m’éÍë39GƒìuˆuÕ((+ê_bžv1iÃuå¹$€ð¤íþæœ:²bVK7^­ªî(BwH…D¯õKò¾?{©ŒýmBӀݪ‰ƒ&1ü€ºÌƒœ¶E~7…¬Ž¬ÒŠÑ5†b–膱’@öîcêÃ`î ø¡DcmÝmQöwqÀ.h°2(yNÜ»Íutåïßy8lYh– Ô‹,ƒã]Û‡®1”rô ïdz]šôgÔÞŸ¨ê2V:ú XïQË¢/óp=‹K‚: pp¿nÂÐYŠüO4¦;Ã'zºk+!çýðÒ%ŸYI ¼k8îøˆc¤cˆå˜º1„BŒf޽ú×ÕþO‚1 Ódg±û¤6öF‚•óšt*A€]lWœ‚ÜËøf–ÿb º/ÛD÷(ÄyšL︦]RŽÉ`›_¾éÏmBӀÖ%ÿâç9N/{´KÖ5ÒYI|Væ^ŒŸO먒Ou!£Á29›£Ý`á´`<#ëHP«©˜Ó°S5ÑÓ|‰sªB›Lƒ¥–™·Ú …aæŠTü§VÔÓ‡þµé^38—S÷~ìTúrt†‚í7ø‡p ̂耾Å1: °ÛFèÜo(¦ØÞ¸‰{4[¢³`Ëc½{ d.5탪>Ë £4YG#o€ˆÌÏj™kœ$ØÀ ÌÕi7€¡“˜iæhã¨M3ÿäý¥Z÷Ç o!Èh8‰Ï(©÷‚Ç$Ä~%¯“ç‹Bç¿:ñ)WÜâ1%¶ÄOwíèÝExsæaêÅ+ñË×;™ \°šÆ`ê,U‘-dˆÁf †Á`™ÔŰMå-·ê3/A£ÆAÇ›ߪëÕƒñíÌ1RkHNVÀ9‡Ú!¥ŒÇ€‘Š“í¼/!úcRæ ÂËÊK«ZAWàçcßPeùl׆.†+æ9RRR®¨dΗP*®ãõ©þ$R3%(ú OrŽ“~¨.!vë CÎhTPÎëè©ú­.'÷å=ð¨eIËd_Õü9t!—á©ö}E±RNC!w¯êjD3ûCÿ§-Žãb^î7¯ø[¼ž8Ï÷ÝaÄ\ÿþŠÓ$8r¿${û-DÂÚ©øéÈÃd&P+Ñ8œÐºW-ê) /ˆr‹šògItU4Nc×¤Ò àú1íîs:b…°Ÿº—Qÿ ¶j8%ž~¦ÇQ-h–I¼-æ$º.¡ˆ1Çï ]弎'»D'Odá_Ÿm&QI3GHÌ…Â0€3ò=(çÉÅ6Cû~Hª²kâ 3¹î6)~…5 [@>£ÉG-‹÷•‚˨FCÙ²òjy˜µöè!y!µ€‹ª d>šEj&w£hHš÷•2ÿqlŽçû~ÿÎMõ ¤¤X)§¡U5QRÔqLE‡¡3pÆFqšü—Ú`LT”jQOQ¥¼®Þûå‰GvÂuEe<ñdÇ^XRªãÌ<šõ€Öa·n|ÕÞ±Œù —>îM"t†Ë:¦ä|ûã]‰ç B`›dõ§" ðk}¼·× {r×ÐpƒFɦÁÌý÷éö·Ôîeßä“7 &÷ê~|ç±Î0D¥@¢i‘8éøÈ9Úéš µ¢Ón²¡ *©¾;÷D‡M …Œ†Ýª‰BVGGé±$¶ÀƒëǽÉ>scÄ1y$]‚Äù5¡xOæ]Õ9H,ßWåzÉÀ“] ¶IrÃÇò'¸{$Ù'I)GúIòŸ{¤kðhÇ€S]+&õ4r¼s`á†/WB[8h’ÞQ›vËËínÛT?˜¹1öê¦âýsdm2KKÄunrk”,“áù¾BVƒoÛ>&Šâ]-PÛ½Z =×1˜'ÁÄ%•A¨ÍãnÕ¸ö{}æ¥ÅmBÈÙû µ¢M[tÂO:‚0Foa§º6Wä@Bfï®ûƒ› €Ö´×”{×öYÎ!U¤ï\ B̼8åÖÛ&W»izˆi—?sã%eAúûŠîÐø~ÿÎÅ“]º ­ª Óàxyâ½§µ.Ú½µˆiðbßN¬8ÓÄ?™ \ Bt‡QJ<¾ðlÏF)§£U1qt±ØüIPq“u40¨½ÎzÞœûiëhæG4cq胈þ„d…5NƒI(°`K}¨¿öUB×˜ÌØ®'Ø}Z….ˆC¿W¥µ:Hp›à5€7 qÂWþ„o ²Þæ~„þom}2ÄÜaƒÉ‡ÙýƒÑŒøt¦¾ˆjÊf½­6Xù IêîTÍ´+*„„®3<Þ±`+—>š§/DÒü0Æë3Bè?Þ±‘SEc4jpýx­êŸ¡1<Þ!·”ÀI7ÀI‡ôgF3Ó.'pw‰Ü36GƦ‚c:è#Œ¦"ãœòÇëSÃévÖÀT%ãÄ,n48ºð1˜Qh»éP%Pþþ××ýÑ&@åº_2à¦ ‰w3Ô¶%<ÇñŒS—( B!ßVÍó\EÇ‚”þªE·ñòÄÛ¥K²”t+ê˜ÒæŸ ´—ÿò{_ B”ò4ßß­‘þB¿H¬)ë%ã’¡G/9­0Œ‰ûªäÅ0Dg@Æ ]p¦æUŒ;5CêÚ×;ÿO‚sÒCï³ûUYKtcfE¿¯,+A‰æ—þíÇé8ßz0PkòÕ–Ç©@€[=êHHt‹ㇸ،Åä·6ÿOBJ ksY/éì¼·àákœ¡U%ä~I¼;÷Ѫ©@‚ è£K-ødÓ'(@Õ¾¼c£’×qÜ ÒdyUN8¡´a;j—Ží1N».!rO Çâ¤=“Óɇ@gé¸÷§#÷^X#y‡àªÊ+A(qÖ pÖ R˜dT>™ &b\z– ü¾³îýn*žb‰¿?tHÚXÜmµ£¥O€þ8‚,¨nÉ.ÿÒkVD¢øòÔCÅØ­™(åu|wèàåÉõJ‰n‚eðÔw —Ñ.ßhá§£ë» ‘8j5Ð69æž›Ò óRŸë+vA¹ £^&0 Ò1k%z_) ñzÞ t¢œ»£0u¼JæO_óüùe.u±ë·‰Î0b…‡mòû8¸Íš·µ@Õø?¼÷ þ2ñ#¶‰È­q«Œ›Ì··«¾.4˜û&¾ÚëîÁ~Ó”õÊe˾‰y\Æè CLæ/öI+%‘YO0RËѬ˜Èg¨…Ò àØÕQý²Ž†Þˆôfž X<öH›6xoÎü•Ž´‰Jl´LŽRNÃnÍDÎÑ`è,]§u¡Q1aŒ—Ôfåæ…¤”äˆØT»þÄQv0‰pÔÒ®ÂÕÍqwÁ b–±×‚ž¿Ã³› €g àZ¸v¤h‘X˜„‘D¥@í“Á8ufž|ïB6 !djè$ßï÷<’J.kQåV+ÈÚœÑè!ÙÁ³²jlqŸt¢QpÒ ðd×F)OÖ“ù 9 F‘Äi/ÀÉE€\FK[ZբޓN€jIO%%É™èI× ŠQRØ£\ø Æ6ŸMHàQ× ¼wß‘P¹ö×PeîbÄ[ãg 5–ûõº˜b{ÀlY¡dAtÿ´¿¥Ð4˼WvÊõ’Ëd©KÞU|#ê¤à»C ?4-µýTC%kq´*FªÙðî"P/E”¤3$øSÌi8è‡(ç56ˆ¡ÕGxsFÇ[ë_“tü®A p¦r‰İ –Žvª¦nŒá$Â`aîňâ…ôüu‘Ï\ÞõûaËÎzÁZ<ÃLåÚâ&ÀlÕ/o*jë~ ÉŽÚûñ×§Ywò`Ûýû BSs2¶ƒó^€“qÛH<#!ñt×N=4î¥*Kù¬†šÒàwL¢DB¢?¥ÿ`Áо?$¡ '»v*Á®yÏ‹iLsZÊÏŸ¹$œpQG3ÁT Q¢nCI<Þ!^j2Ò5†ƒý,éµêH Tвö×áþ·Ièƒcrézâƒì¼crA“ùû³]ÝĶѮÿ €.€ €W¸A«|ƒøTÜ™SÚ‹{£^ Úý~«óÿåûP/Q{ßõHî7±fƘú'‘u´”š§q†ýº Ë`xuê!%vk4Bb$,­³~ˆáT U5ЪÐnúqËB£Dþ-šÆ0Qì°ÛØÐ'*›#¤ì×DÈ:Ôa.åHó¿œ#yß½º‰ÉœDê†S×SŠƒªóPÏ›•Ë»þÞ(ÂÑ…Ÿv¶¯=?RàÅdFÊk"¯þݺ0@_®ÕïÏÈ›ù§#í~ ÜâwnãÕ‰‡ÑTà°IüýíÜß-µ5îò!º„ñ¢xºk#kkph$Ñ„B‰á$B{b<)0/Œ$^zøáÐm‘¥Ìßlj®Ô,°Mžz xAŒß½s1UtBª^/*yê|<ß§J¼<ñP)èhVŒÔ¤‚p’Øêýöê¦Ô´ogFÈ¡q?ÔÊ*9׌e‚o/(A’ÀO±]p Â4>ÌUQqŠk¦[Dù®/T´?ÖFV™GB©˜~Û#)Û$€ÛïßÑH×2µT-5çhh” tG!J9×v¢¾^2Ð(Ð8#ÓŸ’r^vúc ÜóæÌGa¯f¢R$O©$v»#rƒÝ$£QãmÜÁXÞ¦®ÀAÃB]I1flp8ë7¶`®û õF ÍO[ì 3ÝIϽ½1i=OÝ…ßr2ž ¼>óñl_íÚøéÈ….ΧÕp¨èœS’çœAWjMW?(£©ÀÌ(d5p¦T¥N©;a[ü½¿÷AJP¡Q+.,,¿‰`€£Æ3âš“„ §BVïg´’ðÀÿo‹c ü5îY¼æ ¶Kˆ6nèR®‹X‚] "æ‡n÷Ÿ„a°ûWúÃЙlVtüöd®OL€$4ìÕMè:#ó´è Ik%Š$šUÒZ)æÈ`îÅ8ëïý’ÿM"á#—Ñà˜q1žE8Pö¿w,ä2ïÚJµiƒ NÚ&ùŒ†Z‰n°¾d³(%Íì:ö0‹…à5ï C˜Ó•‚ŽÃ–—'.!S+&vk&,Sõ†.†!›rÇ~Ã$À‡šÁ(n{J+"IªÖ–%‹zxBF²G£l|;É_…©3É>˜8ºˆÉ-°åRßN‚5AÕþ{þ[Çá¾å` Åi[eÄ<¨#sû`ÀdËáäãäeNÝíof¼·.šÚɦõÒ¾‘Hý6HÕõ‰&F¯ÎÙ\ŠÄ®~ƒ¥’fB`ü¹†5Eòº`gÝ ¡v¼Ax3ŸZ/çýS7ÆaËB%¯£^2µ5𥫖Ê{©’¸m.¸™‰Ñ@mþñLÀÐI22ckhU ¼N’ë qÖ£Šm§JxH K½W"?yÒ ÐîSkFãÀó}¥ÿi7H(žïÛ)Ý/ñ´fGj(´üôü0Nõÿ a|K B5ba‰ˆÆ‡Æ¯1 ÔË›_Þ@;Oo‹cüHQðÞ l¾À°}!”Å;‘ì¢]¢ì~ÈxØýSHùm±4¹:#Õ”L{8gª£JÔl¦(Ûç=Âb² é8wl_øïIî²%ºŸpÚ ñö܃ap4Ë4NÈØdºV-êè #´ûæ^ ]ù ì*c¡áDàå©—Ž|oФ3ÇH)ïQ$‘s4€/ØqºÆÒ÷Ú©Ò†r4Í€pPòj &D,±fsñf”¿nEl€Ú×öüP¾·«½)&®Àï\´ªöë¤mübßF>£áø" D¾š”é:íö“YŠcQ»8^jó÷F!¦sÓ ¥½jQÇNÕcÀëS7QÌ„x{æÃ±(éï( !H°çø"Xèô+êE­¥ï3˜D°Mzï”âÔÚ*+E)Ûä)ï4}_‰…QͪAúÿ›ßʯ"4 ÒÐóü»C7‹AÄóYM:Ûßã_‚¾ï¶8Æï@³os‹c|é! ¶B) ã´_·Ð¬1Œ$Îû!ú£¹ u²ŽSg¨tT :ÂÈTN· \ö¿I@„Ix~Œ8Ãú çc\Ã:ZWT@ÕÃÊ10Gl¹m²I0Põs|`:ñx‡€{Š_ùöÜGÅ(åÈoy·EC¥ÏL² }f7ˆñÓ± ÀAµ@Ê} l­!C2R(t˜:OE‹jß¿mûïyD‘r Ì’BT’øm“§3/ˆñËÇXG«BþÔ 0¹A°à¶r†gpŸ¹_BpÎÀÙ­?F·/è#ì7¶bŒIÐŽsÛg EÀ ¾Í0Rÿ¶‰CÜé­îa} ·¿5«}ã €$$Ûâ²RÐñöÜgýq„RNWó¤­xHJâÃi„î˜[»5š)ÿNÕD½d VÒáX¼>óïÉŽM;+é~3ŸÔ;£-%b—h½$ÑGxyìÁï¶9)å5±šÅYÇR’ÿó¨o0‰ÐE˜ÎÅ%‡¦eô§JütìBìÚ¨— 4Oôõ©·Ò? Õ°_'”¨¦Œ)ˆ³›uÈ èjBfŒ„.!vkf:*ðJþaÎÉ"¹VÔ±S3R÷J"ØWãCghVtù-¦€ó¿3ý±`å‚&éÐ;FÀø—[œN4ÿþã}ÝŸqœ`{àCÐàVeso$ØÜÛ\J|›H$jF‹`Œô8c©šŸÆJ9ÒHÖ}Ó`xºk#Œ\˜:G>«C¨Q2)¨z˜û1öë&²Ç÷J†žìÜ ±ÿúŒ(ê«@ê0™ L•ïó=;?$ö¾;5¥\ˆ› ÆDÊw§j`¯nÁ2Iþ½Ó§.ÄÜ‹/}âXbêј Ý `›ù¬†bV± LrËÍ;&šUK𹤍;žE18kŵUp Ô-»U°Võ,–7"¯¿IêL£ ¢gHpƈ*I¹e<8ëNÅ¥Ýþu_¦¤xyâA‰–šë3¼:ñRÀ¢cr´ªšâ–&ZËÇ‹TþÊy‡M ¯Ï¼•»òåÑB¢TØàOÒ®®Hï ꢮ±è7P†I`™œTït7¿ü0t|”­XI\ô"æìÜ™˜(>ÛòT"à¿óá¯ú³!Ö¸”m…ÛüñG£ý-Çïm}yÁP/Ó¦K.u]ë%#erõÇıw,ŽïU$PNèÂT©ï¸ícî <Þ¡Nl"C ‰7g„¬_[|16J8g)Ü2è½5 GІ¸‡Áusù¤hxÔ"ï®,á/´Aªøºâ3 ©31ób\ B˜:G.ÃÓbÀQãdÇ$í!L‘„iܸ˜%ú%í«¿¸®Ð±æËE;Þ˜ù·0äIÚ:šd, ¥<Í?YE€æñ‘@*Á”د”ú6`„‘Äë3šù$m"€ì$ 9»52F3”³^ˆó~€ ”д–I~­ª‰™ã¼¤×`(ÐF«j¤^–?ò9Ð5†©ãè"ÀaÓ"0Æh¥öRNCÆæ ßd€:.«;š 6ž Y.hÛ0.þ&ˆ8ßât~ *¾Õæð@¸Åë9HpãºCò ùX9ùaçÿ~HÅz²–´U$ë~,ó^Mc—€ÕqLsÁ’ú„’Ä ]üpè «º{ÉZÌá­VŽ€AŠ‚Ï”rd9|Ú ð®íÓî_Ñ‹ãPÝa¤ÌîÄ%ü‰=jY©ô{âD›bÈ6¸7I1 HÜ’럮±Ô\¯RБÏêÐ4†Œ~#µD‚@Ë+3¯+Ü`YD†ÎÓ¹õut)IË1—¸‘Y-EÈ'„á$Jýše;53•û=¾ „èþÊI(%°[£" Ñ`tÎQD´“n€™»ù‰8ºµisØ41÷i›D_l” 0 e8uÆsËÔ8Ùý 5ZHD€"AB¢U¤êî›&Á?â*©hÈg8´»Ó*êm €— EÀ¶P±û‚ãw[^· àûMÿ˜˜ä!'âH6=ùŒF:-rQ3¨6·rQM ~¸Rtºâý8lƒºÇIò7t†g{ pùUº ‰ÑE~Ç€À‚J2~2wQÈhhUiÔk›Dÿ®— ôÇ!Úò-Ð8y¸ìÖÌèwÚ pÚ ®ÅŸmÉu†‘ÄtNù†1–ú'DBb¤”ׄ2ö{/®+J¸ÁEˆáé.U;g]âò§ L%}Ëà(f Os™ŠŸd úã0mñ'¨Ï7¾™ã°I,';62¶†£¶¿rž³òCjõ'j%–â_JlïQÛÇp½W2PWàõ™‡_<ÊÀ6©ú;ÕìÕM”rt˺£/O=Ô”D$ÉAjè#4ˆZ’|Ø“YRÎy¿UÃH¾ø›u ûØAüá˜õFŠ~×1@À ªß]ã-H ok+Û/0$¶Qj*núÇQ ÖîEì.ÂcqÿaèLfΆӈ¨€š2ì`I'X^rüメ3ì7,¼PI_BU1.I"–ô‘¯ú¤ÚjÞòx‡æñ;2õyuz½àrd-žÒ<’ÖRr1aHÒŒ×Îd”Rà»¶'»ôþ…Œ]'¡†“n€ã 2jè#4Ë‚Ì'*fúá`Ó›(;Jüâjp2µÀ· ÿ!%ÐF¬”×`ì¶·]‚¾Oü—[œÆÀOøö€€‰ÐpËã”pC—2}CÒ,‘‹ö÷7‡¦1T‹:ÞžÓ: ©?Šipd,ޱ ¡ C' P+êÒÆëS^°àìç2¢ˆ ã:ÃýqˆƒÑïò ß:h÷Cw|Ç‹…,½æÍ¹³^°r–‰ýyLæê%’u¯•ôtážû1^»NÅ{t½»F.£a§j¤÷!9—³^€Þˆtec]úHÌWýrÝ`mO„|4+lƒè 5kOÚì%ý™w½CÒ:@ßÄøý;û »U€øá‘ƒwííþûL‚ƒŠ±é$ü¤òÃ2¸¢9üÌ!$pÔ¦„½W·PÈc ëÇx{î¯4–cŒvΧ½¥¼‡/º­å‚Ž™£7 ¯e ,G%¯ãÉ.™ÇÅ1©¾9#nÿ© ”'+ø¢‰ËØ&še3ê I»`•ÓŸ 1 TбW3QÌ‘(\$¨KyÖ 0_oZä…òÚNöR4@K–ë €GØ`WBí}á4ÂhJ E弎]¥êת’áÂYŒ¶¥ß §¿{ëâQ‹ø•)jƒ¦ÜúH]) €_ü~ÇAÄÔÆ×'¿U5!A²Á±”h–Ô°HÄDG9ºð±S5qØ$~çx&RS'3¡åNcQUÊÔJÆ¥ä¹(êú­çÐq¡h˜Ìй[a”´÷±]pj…k@Àsl×9€çX#T–DwHnŸ:*÷£ Ø`3O ˆ$,ƒ¥*±‡M+yw†a*þ&b‰£‹9‡èpÉnÀJÍ…Ä`èé®Çäˆb‰™#c“öÊw6:y'ž_ Úà»U22 BùŸt¨{ªóŠíÒûãy‡£®ò“­¼ªEÓ¹ÀÅ0Ä`L–ÀIG<ïÀ¯V"s»8¦ŽÆi÷ú<–S É d±¢cy]€kV~sâ˜8õ¿yãÂS–¶PsÞ 1˜DhULìTÉMZ&:N:4¸*¯{›1ø’‘©ÓîÛ$^Ÿyè¢ôÃrÝ{„Bâõ©M# ÞVÅLF£Lr“^ãHa D œv”¾ÿ~ÝÄx&à1žîÚ S@ÆA‹£\Б±HÒ±VÔß;ÿ™·1æþQipŸc|Ê«b Ý‹xÆæR×nUˆÙþÀµÅÛü€?ù„·àSD2ú¸k0ÜàH@Þ˜õGâ3ùr}&§ñ…Æ,“c2¤î®ehÄÜR-õZ‰äm5¾È~RÒš™µ{Æ&ÀŸ= §Qz| À68žïÛ(çuÄ1p|ठ”ÓpаT»žp^§Ý…éc‹×4M´*&8§nÂë³Õ(2-¢Mèx&pjsT‹jEY[C)§¡ÕàÕcôÇD{/dµtÎ/%ÉŸv)O&çqSz±DÅ7ÁÈrXÑÕ¿®¸–S òØi7dÓyœît“;‘ÌÞßµ} &Ñ%”¦ÿ‹}•Bˆ“ÎÂ`g“Hf#•‚ŽVÅ NœîX‰íhsˆ†wÓwð#‰Ÿ—¼)€v…oÎ=Œ¦ }€ ’jÜ ÁV´“HÈÔä§Ý'pƇ˜C«j¾gL — ˆÖñS?áÚÈLçäØ(ë›öáEÀ_mùö G¼o ÚÁökUèU-ׇøô‘¬é9‡£Ý'õ½bNSôq¶ƒ°W71™SR5 †ÃIì&†p-ø~q`ãÕ)m)á'»ä<+àqÇOíݧsª™®ÕOv¨P8¾0šEÈÚžîZ(çh]è#¼9ó1u×箤x˜y1fžv?@9¯£Z$-ÛäØS#hMI!™!÷BxA¼QâOBÄÀdvã×Iuõ/Ū€ƒª…k#ŒHï¦Ïf®‹ÞHÇ~ÝB!«©‰Ž³~€ó^¢¯û˜C9O‰¿°”øGSó^/Œñ¨i¡”×±W'iß7ç Íåë?$ÙëzPEÂïÞ¹ð®è UgZµŸTt‡Äˆˆ"´ª4Z` ö µ˜õÔ´(X…d3\>…ÚˆA qÅ<Í$o߃Ñx‹·ÿ7X¿öHnî¶.€yàÚ7«]Øg“ü?—óøŒÂ4˜,å5ȥɰ¡“œoF¹þI)Ur¶ð»·.%µ›?é8ë‘ÛãÛ¾Øw`D¹nSãÛΰèzÜ5* üÅÊ"ÉÚýˆ%ÜñÏ!>—óøœ‚3¤¦oI²ã ¨¼×…د[(æt¼8 ©_ZWI’ 59ˆ$žíÚÈ:T,ÔKŠ•2z{î§Àí«1œL]’ýi¹4*mcà¨í§vÂw)(ZßN•òYB Oê9‡Ã2šZU/wGá{8×E“Íñ =D+„³®+ªë.(–Ê gÓJˆQ×àè‚Ô˜öë&jEâõwh£;ÔqÜ¡]»m’¸B£d ëh$©@í(‚+³/ˆñó1¹>4Lu\'m-?0ï i¥ô»Á„Pšûu Y‡,~&Áò×”îÁ‚ƒ)Õªd 2 øDÖ!@ËI7HŸ M,h¢ïüM,û_@t‡‚sšÌÚÑ%HŒæ9€W[¼í;PBü€€ BÚV ˆkl€h“0sïÇí3:è·fÓý±Â4˜Òì_<­dmÏ"]©´zBô‰ãŽÉv8‰ðûw.žíÛ(dˆŽU(¼YAõ^Æiø0•üMü a»RÜØÿFyßÔŠÙÝg.ûÏ´ûb ä3j%åœË$ÜX¹ Ãõb §z£å‚»J`H‚pmëNT”¯þ⺠¶þÂdjâpÛ˜Î~:vÑGØ«›)£Õ0ž‰Ôõ(Ñ~ÌÚ}^ŠH(~G>ÂHâ°¹hÙ¦³.ù‹ã AꀚÆD2傊JñâÀe2<ݳñã;W(ËZ†ƒ!A9#CKüúcÃ@AYZB™WD‘D¹ §jˆI«?o²ÚCóÿ3 E „Ó27©ôEÀ_ø'[¼íÛËâ~I¨kÞ&j¸¿ä…ÝaÄîE†@1¯Åa$Ùd³mÆ ŸÍ(â3‹|FSTòË«`ëK‰£6¡þÚ_­ïLæ½ÙKLá L“#˜‹µ£fÇâx²k¥î£ùº”r4(d4t†!N{aê³Éµí©Í®®Q’î Ý¿Œ#è# §låòW-tt8²aèÚèï\?¾¬+ i pCd°bc¿êK´,U`ñÓSÕô…2RHPôŽÅÓÝp,Î(B»OVÀ7¡ú—äY/HÑùY‡ãñŽ CqM“‚#±ÿ}§ü¤:¯þ8«ÏöˆëùtׯG.ÂHâQËÂnÍLE'ŽÚ>ž(­€½º‰á4‚Æf ü#Q=Õ'€¤]?–þÛ6V†Ï%€áD°rAÈbvc{æ°B`ãøWþûŸúú?Rœb»‘ @> ÎÕJ ÖDÌóïGïßÔe]ž÷"`‹zbâé·¥¼ÎHêw9¤‚ˆ~(bEsSëf"¶³\H¯Wa¯B!Á9#õØCo–ôù¯F1§áÉ®b–;Câ÷‹X¢V2°[3‘U~.傎v?$°^ø~—)ÙØ5+v«&l‹ºÌ£™Àq'@…æ@"7<÷cÌ;ÄDÈ9ªE2Ïs,ŽJ^G)§ÃcŒ¦‚Š E½—ðCÉT—jÕ%JÐe^ýŪ@Ç ¥3/~ïmRºÎPÈ 0ÛI~—8äÍ}ÑL\jólýI„ð‹g{J4¨Nõ çHU¥Ž/‚m¹a]gx²c¡”'±£ ŠÑ,Sòïhæïú1Ž;¾·í´Ò3 žJLFBÂ6É ñ½pÉ@á¾%ô÷g‘ Z`ÖæRÛŒø‡ êz›]ík|;Š€GF[cWŠ.À b9ßí¯œ×R+Ú‡ø0a* ÀÕ,ç@µ@f;IžHÆ0›$w|çÂUX­|Fó]¶Åáú4Nl|³ÇwÞ™$û»<Ωt<Û³áXœF¶òyIœgÏz±ÙªFêõrØ$øY/DwH´A0ú@–ò:&JyÂ|ùÄyŸÀŠ©|ï5÷"ùy2~Nº¥œF å­ãT8ê%n@ûÝQˆPÙϯò›YŠh€n(ü@BÞÜrH#iÇYG9¯¡^&ƒCí”Ý Nùû­ŠÛâ)Góø"Hwé·‰™'ÐGÈe´TˆGJtwHMêºÂâ¼À68öêæ´?%/ŒUÇ DoLêO{u+­äÎzR'©a:˜ LÕlUÄ1Ш—”Á@çúòÔ»Ô5‚„% Y ¶¡¬†§§€0A ËäW޽&Ùdöõ/ù8¤¤gKÈát{Ç·X`ù¬&o J)Í lW\¨?æ}ûD±-0’a¾q 6 vó•UQ/éÒ6ÙVb٦߆Óý-…A LÕ®êå[íô-ƒvç§]Ú3°”ŠýtÏNe…E ¼kûèŽÂtmïŽ#x¡‹Çêïw*l“ÁócÔKt5NDäÖEBkï(µÛRŽ,àsŽƒ(’éZ?÷¨;Ü„wê`_dl>žµõ¬ Y1pа +:¡¡m”GÞ3Z•賸Á 0ëp”ó:Æ×´è¥šo²j%² ¶ ¦¼žþ<"ÙÄ Qù–;“¹ÀGê“{ Bê4,³ú¥™ý{&õžõ’ž¾.±N<éÈ:{5 Åœ†ïl¼<]ý\=NÆ&Qˆ$ùƒ¦I¦=Þ2=% ÚJ’<Öq3“°„Ö”ôÿ8 =äÿíƒZ†¦óøZºÏ¦Á̽˜uvëÆºƒIÐwåù–§?ðçþîG¼e;€Àï·ÚƒðNN€×…”´Æåê W $œ0ì†S²·×Ö7ÞÓ÷YUØXÓ ¶†_I8·—Ÿ}ˆ5‘Ëh(ºÃÍU&×Å`"Xµ¤ã›Màï`;%¿‹Äø5cBbP§c›ÈàŠR)Rðð¶¡q QÑcCc_íCøœB× ü"A@($Ž/|dm2`‚ Ö„XÈí¾Uª¬¥e¼¹ã´¤ºùË‘ˆþœt¨[›w,/ˆiS·!m$ñ¨ä  —¼W‘"­©3<Þ±‘Ëh8ë©ÑÑ]ë€åÍt£L]ñD%1 +pÞ±9þÎ/3`Xû¹Ý¨AºŸ]‘BXV :ŠYã9é›:GµHU›Æé 9scôÇ!:Ã3oa‹xSeÄÌü?Ÿ¸M#ì7ÌqаPȨnÀ4‚©S%تÀ`á¨`´„ðO¤ ÃHâÉî‚&¨kÚ}”¨ä ’±©åtÔpÒõQND(”ÈÄïß3 U5ѪPêú¤aPÎS[ˆs†¬sÙ`FK³.úÀpv? ×CЈ§QÑãÉ<æ~°ýMõ‰ÉLH»|#àD ÜÜökP' ·Å1>÷ð°=°…+÷(y4[ïþ©•,‹¹ûÙý?ÄúPˆyi[Œ…C ×'/•8–ˆ"™®‹L -ûX§D¨~f™ õ²“ŽÿÞwuaD¦m±Úˆ™Yï:ÃÛóŬþÚóUÇ!kaòŒ‰"‰ó~ˆî(Dµ £^&]ÿ?v1ÉÉ6¸Ý0)a‘•ršÅœ–²Ë\Ÿ$;ÊêX¤ÆI7lr¸ž½õ€ª±—'vë&™ß(ŠBò°DŒÔ y0QT¹Yâ¿ú^q œ+Ê`Ò (å5dlÝQˆ¬â‡2F7欠=InwÅ{%ÎRÏ÷íôCÁ9CËFdœBzã™I—ó:ÆsÃ&I:&¤²u–ÐÿF1Â(Qlbß¼ Ð}‡”¤¸U-êò´n}s¥&ó˜W‹¸ÉLþ{`›äöF½~#û/0€3õo›x ^ºGšF@ÐàR­W#¡í^ýÞ>ć ƒvÍé&YÐ4JæŽ2ÈáœüF³37†i0<Þ±±9‚Ti³6Ça“ö­'`1vUJ{Ï÷sÄ$8U9b§j Y1‰jgr]h\ULdzëE ôIÆËGm&3ú‹a„ŠjÉHYõ’v?ÄÅ0\©0»˾7M%¯/m¦;Ãa׿œS7ü¼fp¥që@- Ó`ЖµòÕÿH%J0žW1¥>l#¢Õ 8v1žEx¼cÃÔv«&á b ;qÜ R‘†uï7˜DøéÈÃó}‹ã鎕RæyKw†á¥×œvØÃŽr9l”©‚$‰ÉLà\ñ7‹ŠÚ(bò0ô…áCâ €A,* ƒ‰ ?ˆ-åRÞ0ËKüf‹·ê€\òö·8ÆçClïP­O—VR]c2—ᘹñy¥¨Él†?Ør|ô`Lã ¦A :Û ?e<—*¦î×-¼<ñ°_7Sw¿£ ýq”:þ6‰ò}Ò!º_>£áÅQµã8îø8jˆ„Ä+ÖˆýñõŸîÙÈe8ŽÚ\å#8&Ç~c±ë#‰vŸLí-€d}˜º/OÚƒ-¥^H  õ²‹A€î0z¯#èPâ'½š$ñçò ÞÿûÚ‰ŸÀ QuÒVǺ`åñ$HJ×U€2»!ÉÂ\FC9§ÁÐ ¥Y/htÑJфۆ®3I+hé`q,1s\Ol ¼L"¼>óðÝC` PË÷çcï= `€p ïÎd,Jð§ÝÆëS¥2Õ…hV •bÕd&0žEiGÀµ¤Cð÷–Ád£¬ËwçÁFš¾7„‚l®ýøfü1€ÿÛï3é|Í1Áv6ÀÐXõC RÐd$nM¤Ö.C½¤ËgŽŒ‘&JÒÆæàŠ:ytA€¿Ã&±º³Q)Ðìýb@‚<‘xyìáùƒRN£"@%Îg{”ü… báxIÓ? O]Ç-òØ©šÈÙ¹ÙN#”s:[VŠXÞõ¯RÃMtlÆ3ò¸ÈhØ©™¨äuecl£QŽq1ÐFðƒ†ÎP]Jü sm8¥Äß…ð#y‰šxÇØ¨Àq#IJ×Ù²Nq($tÎPÊkhUL”rÍÌmÍrŒse—뇷SéJ@Õ"¹ýå-­ 's¼£ìywld GÄÉ\÷Û©š)Ht J’8Z9—±\€øÑ!§î¢’ #‰Ñ4B1«¥X„Ñ,Â^Í8ÙÎ.kIó €¤06sŒ¦7»VÞ7½:)žT4·A þÿ)è;ø5æ¡WÂ-^¯øÅª_$óÙzùöã»5CZæðïSÄJ08Ø7G’$y‹9Â1å¹òöÜ'Á¦:ÄG.žï«" eA¤#Ýwm§Ý`e«|4øí[ b ä•—Ìd.s´˜Ø†8j˜ûL)¸]·¶$mùáT`2wQÌéhU Ä·\ ' Y 9‡$‘…èO\ß/Éßßp%ýÏMß÷8:îç½ýåËyªœ ˆIëx8)x¡”§Bàé®F™f!ÝáåŠæº âŒPù{5 å‚âô ‰Þ8JÛýùŒ–Ú7+d ôîÜGo^;©äu<Ù%¹ßD–Ø2Y:ßVŠIp4ˆKªn6²)¾>óKj]•ó: îIÖá˜y‹«Œ  úè|°Ð5 ^ÖåÌ Ø]U+À2c›å…?™Ôô·8íAZùöÇøœãgÜ]2 lÒκ?¨—5é‡1zÃÍ9Z5#ÞPHå!>@¬Ü)3 ?vtá#ç8$$$Ž.mzõç˜yÿþÐI[èBoÎHðºH¨t¯Ïˆøl×N‚–IríºÆd­¤áéž…Þ(bý#ÅË_I§¡?Žhs˜£SÌiÈÙ9ÇTZ˜ÌyúÍåD$ä­D·.¤Í›û"µ¼½zÁ"–èŽ" ¦TìT©#PÈP¥Ó(8ï莢KtÀåÈÚ;UâyšKõ”O:Ê>XQBFSßù.öëZU2Qxq`#Ûå8éê_ªçœ\¥›VZžtw|˜:Çó}j/4E€PbFû {ušKu†T\4ÊZUã9Yþ6+rK“RŽl“Do—ï{`°(d5Y.hè ÄŒ\ò.ùf °È£~›à H(ç9¾ÎÀ¶óÿ,Vxš/‡Æö†´ ŽÎ b‰M÷Õy)c€m1´ª†,®OþR‚I)¾¨0®ûrê:±¤„Æ%‘1–º^>u‹ÓΪz‰m’âê:}ÚpO}ïñhǔŜΘԴÅgHÈ0’l4øÓßÌÔføð©R<4t¶àê³Åg‘©NwÆÒ0siT|ú ¼# öö@zîëO-áköFFªh%…@–Ô“eó~¶:jÙ4Ë$©èX e¥vŸìýðre”TooÎ=Œgl®ä"uœ÷I¨RÐ¥ep–±8+f¯N®²~¶g£ºTœt4ʤºÄ9yG¿:õÀ@À”|FÃaƒôþ[U T¨X&ƒeð…”02¶–¶†{è|èàŒÝ&³˜ùá-çÂ’:8Åœ¶Iò— äÿ+l'tsàÛ }nÁ@6ÀÛjÔÕ¿µ¡q†VU—…,Ç`"0Ç,é)2f›Læ3Jy –¹^‡CJÉîh|ú[ð¤Å’wÔn:ÙÍ܃i”>œbVË}Ù„ÆÔ¥mXÐuŽ×§Bñ~ç9;lZhU ìÖ IÀ@&—ÙÉ3FôÅFYÇ?ü{ù¨e²ÿﯧìb®¼ŽÕ¿S5S÷C!H¼g F‰éÏãCt‡Ä˜{ñF¸6‰÷7‰ÛäíÞh¹#0œ ”ó4 )æt”òòY£i„ó^MCz“’Ä~1qÖ R©àu–ŽÝQ„™7Ç÷üÁSGV‹Z .±L&c „Êö÷¨àøÂg±*³¨xyâ ‡ÂDä§Ó¡iJøÄ%‰wç>¾;tuH—Zã ¾ÖËöêæ¥ä¡ë—V•÷ðœ÷€csìÔ ùî<`·ñ Ð5 UÕcCßèì$HB{ÛÄíøKÿÁº%Ÿ*ˆðfËã4@ÀF PÖæ2cs!!bæd`:gDõûÔwå!\3@âÆh@ãÔTǶY1Rd½÷6†ëÇ(d5<ß'­– ”xuêa<#·ÙZQG«b€3àÕ)ù,¿eµHìbNó}KîT É7 ÖII”Å¿ñÌ‘õ²Žÿ⟠ÙY/L7yºF‰Ÿìî‰ÎÅ48ëi«ÿ¼24Â.+ÿæ…FÙ@oáBñýãx}!pÀó0wùâ$…@gb8PÎëØ©ÈgÉo9Ñà\¹!#œö·É2Ì9ЬøÃçŽ|Ô2S#¤zc€4 ËdøÅ;5ÿ⯦øõÏs–З‹€JAO¥&§®ÀOǦîbîÔG8ïØo¤¡JG3ÎÉrÙì‡3€%=­‡ `ûÀrA“adȳnȯr|¯}qº!ï0þÐw*ºí “·ÇvTÂÏ9æz[£ˆ[¬YÉ·LÓ¨…‹¥Gÿ±¿Åþõ!¯þ_IVÀ–Á±SU’4 õtáà c¼Ø'Í•G- ç½€(|KÉÿBIñþtì"–6ê%C ¯NÉÍÕÐvk&öꯗ©PHè›F,VÅÿõ¿•ÇÿåŸ XI” :vj&Š9Jü"³u¼—güqL¬´Ñ,B>£¡Y6P)’)Þ^Æà}UŒçQ:þ¾tïø¾S°Íì:ÙÙwÕý‰Éa›œÚá*Q»~œ&ÒMç ŒûYüƒ¿™—9‡¸¼×Ý”ä祼&ÿ£¿[Ä^ÝÄ?ý×#–$w×ц(åõ´:Mf®¸tãcÕuh)6ÄÈÐ$²Î Œ3ú'pUðÛŽ½82ŠSgò¼±DD#ýåÒóÉf¸lVtYÌÝ ö$ä³Í¬û÷ Ýr_×&uŠí)€Xdþ"⡸6¤¢˜Zö–¡Á b¼kûx²c§*S7NQüÝaˆœ­a¿Aɱœ×aê¤Ê÷挒?@9!ˆ$^žxÊiÖ$ƒ8ͦÑnÉ@½L†e24M©iwê¤#–À³}[þý?È£ÝY¥ ÃÐb…];ëè-aÞVa礤<3™ äú!e#UÖmU鿇SRN¯Èéß±•zë`QŸd–‘WÜÈjœ©qNJn9GÃ÷2è œõn–Q”x´cáüá"ùoz>œã™#GSÿêßY…ì ¹˜91F€¿¹_B“jªãèèC£b`2°M¾gi ¸ò5-í_@0P' ëpLæ±Ï B‰X‚qiêŒr\³šÔ7kû¯ŠC°]ð3HXÂ×õ)ù ÀlËcüT<”Î_QHI3q?”(€þ{0ŽP-ÔJ:bIí©8b86G­¨Ãd Bï.üTÖ= ¤ÁA(±_'?âÛ+éøI„‡Ö­rǪÐ5àoÿ"#ÿòg¹>ÑÔÏÖ[¸ª?¹¾ñŒ óG½d ¦”%•‚ÉLàb¢?‘ÈžßeÕºSà¶ôõdŸËhhU ÔŠD¯€$®çyŸÄ‚’~³lÂ6™¢Ý8푵â*Æ@"õøïÿÍœÌg¸¼ ’1àO~È•ä0‹}›Ã$Ž;>ê%…¬†Ç;D,ÓöRUµ•Ø&= þ˜Z9WçÇôXl9〦AtžJQ“2&¿vΘd rKgf   *þ|‹S€Š€§Ÿú^Ýsœ`»Ý߇øÊB‚Öõ$¯H ÁmÑÆ X‰úO²µ­¥©ÎÊŠü”Ø ²*y=e°õÇÞµ}ü{ÝÚ…KJÀ29Ó8ðúÔCG)þÝeÓœ* z1fç>Îû!ªEIç 弆BNÃÌ5ÐFˆbyiܼiÜ¥ 5r°»qr›$þ¬ÍÑ,©Q@B>‰Q‚«~ÄÙìŽ"ìVMT‹:²dz]õ"ËÀäFýñ÷YùxǺSòO\Ææò¿ù'üöµÇ¹Ç×gÚr%üþÐI'A$á1›äÇ<ž ¼9óñt—œïØÐøûjJñåÃàÓD¢àÅHq,} [–cd¢õÇþ‹-Ž3ð×þ£O}Ÿî9&[¾ÞPý$gþP§Ð117,“§’ì;5Y[KÍÜê%ƒ37†¦‘2`µh ŽÓ] þÛsÿ²œ„jñ7HíX¬9‡Dƒ²¿—ǬsÈ@Ä8îì>쀓—{AŒ“N€‹Aˆr^G£L›Ò¼¢Öë“¶Åcy;½›“ø{'ă­J~“±8µ,üêIM ¶ÉS[Æ¿~íâÍ™Ÿ¢û—/v2øéØÅoߺ©]o9¯áû/ö”Ö¾”„}²gmM©“’ºÕ¢žJü^ B0¤äËžÚå?Ûµñb_¹*•©Á$ÂI—Œ$²6áB!1œF©K“” =©Zâ«‹pÇÎÚRü$ü&Ç ¤þ·­Ìq 4^ù¸±™ÆúCl±BÓÊíÎ28šeSÍþiÖíX¤ Ã9°_7É+@{âíÍøó OvÉ'& êkøþÐÁnÍgÀ`á則©+` /ömä2Ú½x@Hš¾?$FÂ}†”JmvFôA!x6Ó`Œßœ·j¡ A8µÕr¤(çu4Ë&&óËNÉŽ?cñuéX<5ÂéI»y:—¯F2Œ#Lf4JèÍŠR^G» Ý±W7Q+ê÷°›æ R×À^Ÿy—fI 4'zyâáùñLŽÀI7H½ºÃÕB„ZQ'/€¹Ài7P2ŒªÕ%LÀCþ§¸ÛðÝÊïÔœoqŒ¿¡æóŸúbî)ÃHøëËÝë¤e ‰×g>*yû ¯÷àœòÃÛsO‰ð0¶,T :¢/O<ˆX¢ZÔñxg¡úzÞð®í“Õ÷œh‚-Eû»¯ÈeÈÌ(ŸÑpÚ¥]ûu‚w›ÜŸ_–Ïh¨uszšW¥$™ ŠÇRI ]>®,•« ´û0¯;¡RNÇ÷‡6¼@b0‰Ð…©Mc£l ^Z$þ0"éÞó^€É|ÁeÜäf$ÔÁó~ˆÁ$B³bb§bÀ29Ä“¬•tØÖ}x¾ PÄR¶û«µÄ{£Y›lÒèÃôš"µã¯u0u:ð‚¦®!–ñÒ™~n¶cÉÈ"–€Œ%ãœÉ[ÚMÞõ}o#zµ:>Ÿ[¹ ‰í €3õúÂguewíUËXcSþ_fDB²0’àìŠJ*SÔ¸)æT :2Ç^º“¹ÀËS/õ–9é0 ¢õ5+Â(†J6­Ô&úøÂÇi/D¬ü&®Àï\ä2œ=?0¡qv/ßµî(‚ëÇÈØ$_)è8¾0º¥=¨g-ŽJÁ@¥¨#gshÊ»&Š$&®@¡?Žs8þk˜»i­žaà Ä5„B"VJiY‡nøÌ‹aê,Uï #‰þ$B»`|ËÄ5¨ƒ´Ú_ìÛÈ;,ƒ£Ñn J¼þ®S»È29<ÿ²‰Œiý—òzj}l4«zuê#Ž%4¡”ÓÓ‡PÊi¤d¥xÿœ1pÆ Ô …dñÇòIÃ$Æ3Á&ó‚ž/Ó8)d峄žÿPÞEg1¶¤w}ò¸8<€_‚vñwsjþ»O}A÷ ÄjoyœÇ 7³ÏäQ?Ķ‘lƒP¾7ÂcJ¤qL@ñ‹AˆG- œÑZõúÔÇlI“%Ž)?XWÆq´IãœhݯN½tœœ¾?ÏñÛ7.þä‡ JùT?oŒ7§>þúµ‹Ã¦…r^Gµ@¬ƒ‹AˆÓnbÞ®FÒI7t†bN§Ý~VO%äELl¹þ$BbêÆˆ„$ÕR{£qÃWm´WüÑ T¬E2 ÃïÞºØo(¡¡”[Ìå㘗§]ÒâÇÿ¥›ÒÒ¯—]Ä 6“JÜô=²Ž†§»^ú—ŠM’2Ž„ÄÌ‘Ïó¡Jµ}²Zú!¢óå8lšp,³˜iXÏ}º­ž/!„L«ºO"–¬;è#æòê€f1:ƒˆ•òšlU¥S¿ñHØò8>€—Ÿúbî1ް½Ð#н}€Î~EEÁ ûfÆh½“ìz±”ðÃ÷½‚Pâè‚ÖaC©®Î½?¹ÍÄµãæ™G”»r^Ûºº BÉÚý¦~ïÇh” ìÖLdlõ)åtœvÉ7 ¤»}GCµ £Z$ d]©U¡Äh¥²úËc÷äšg›´¦¸EàÚ°MÚ g,-µDL.&1cØ«›(d5Rþ›\>éÛc@9§ãQËJe‚'s㋃‰ŽïmfÛ'¦D„¨V$nÿëS—>8;UÍ Iû¶û!Ž;žï)Éນ¶©taæÆ˜º²q uj–Á1÷èÃëú1¢˜ø£Ÿ"«ŠX²Ó‹ˆu†QÚƒ_õ|D ôF‚¹¾ÄaË@Ö¾Ÿ‘ËW¿%+‹cü|=Én€í5 Ÿú"âþ#é\ ÆhÔ|Þ Sê8 :±&ÍØ_zé†EJ²ƒ>hZ©x”¯ip°5.ÝA(ñòÄÇ~ãÚ¦÷FÁ”toÆÚM€IDAT"!SŒX¢è—u8ùÍi,0÷òY µ"aÛ,uîQLB½q„Á8ÂÜKRÀW×é„uvC"Ù¸¸VÊTh”uÌ\ºY~(Ñ‘qÀP+ꩱAµ@ÿ=÷btG!zã³ 4Ó÷’Dߨ­™Ø©š0tRÛ#IHj¥Ì<šƒìÖŒ­Û7q µ ‰r^‡õˆãçcL™OhœæRGmŸ4ÿÏõE<Äý)FBB»ÒÁ–’ãöâŸs¤¦q²fÙÀp¡«Ö¯\Fó]¥¼F²»ã‹#cS•R¾7X~¯_ÿ€· àKŽÀ»-aáaðUF v¸\)óA©óYéßsÐ:ù®ícæ’7ÌÑE€6ò Ï÷Hű¸²…÷qÞ R‰ßŸO\<ßwT‘`ã§ØÅhJéÍÐɰm¯f¶8FSß½ñðüÀb޵™,p2Ãuâã_üÕ„%&?À‚Údè 弞*Ê&Òñ¡‡:Ísކ¬­Á$â[®¬¦Î6iWp]píì1™{kìy”|$$úãÃiÇ⨠ÔÀ¡œ×PÌi˜yÝa„Þ(„H”rTÙ’]¿ã¨í£; /Í@–Ài'À¿ú«þ[§Àî²+å øùÈgöûyZÐôFjE&Ò48¿L³0t†œ³ý+æ¨à9ï…° ~å©h|ñ¡‰”þõÇ¢'Æì®ÀI!v?â¹ —†þ0 X„Ø&|à}ê‹Ù"¨õ?Úò8UÙO}1qÿ1š ˆ˜D|–ÁГ¹@S9óõ'd€Ðª; QÌ’ŸL¥ §:3‰ àrôF8óðlÏFÖæx¾oãç#`ÀAÃB¹@†o~(qÖ ð§¿ ÙÁkÿþå±[[Ø_]ä’7÷bög¿Ÿã_ÿõ45“KrHÆ"FB­Hò½§Í—ëÇè©Íϰ[3QÉ(æ4äƒI¤Ìð6¤ J²=ç7ƒÉß“â^UÜ>Ê:¢µ}u£Ô ™y1æžó~€J^G½l¤2†Y[C«j²>«‘³“è#Úõ+iÇë.Oø‹Ÿçì iÈ_>qn¥ÞÅÐEìŸýÅ„¹K¨ÿšrAOµ®1ûg>a§ }ŸzÉÀAúG8î8lZ(ªîcÀ»s–©ä)ÐQ؆û‹ Lƒ¥Å[:×äÿFB¦Œ€¹´‰XÞ8,Ú$ºCÁŠ9í°:öA£€Ó-Žñ— ] _nòëhoyŒ4¾Êð‚œ9Eó“@jÃ.ÕòÒ¼*ÅÕZÑÀaÓZ´¼UÒÕ8ƒ¸f¦z1‘u4ì×Í4)'ôíö D”Øôªã §ÿôOG̱8J9¥¼ÆJy :gÈe4„á½æ^Lú.Ò|VÊé´öƒXÃI„‹aˆÑT  ±þ$߈Xâbb8Ð,hU´ÁJA_xæñµ›`M¯Yˆh#2½ú‹U@ »î¡1h[È·ÍA.¨êàg@­¤Ã4´• àò»î˜“¹ÀÿûߎÙx&ð÷ÿ ‡\†C'ã¢ôµJéŽy~Œ7§þù¯'쬦RÆ•¼Ž§»äC=™ ¼:õ0ucxAŒJ9 ûu œ1èCÆâB‰Ón¨F>·ìÔ¯ ñ¨Œ+±xð@ÆøØçL‚aë" ˆ$.ú;Ü1ïUJó6AÏó³Ë <ÀvÀ HXûÔ´E¸ØžXÁG/“âCG, Œ3Sa­€…+àh&`škV Œg´Ž>Û³a™ŒºÊ®@µHê³SWà¤s¹á&aÏê%Jwéú+H8ZF_î\OÝÇÅø»^¢$Qú+æH꽨æû |0¦Ä?/(|×-“ T,wôÆZU3•ÒOŒÎºº£At9*ž›bŽZ×kE;4A×ïVHIsóFÙÀ^Ý„cñÔÿø´À48%=E(åtŒç"¥Ö­ëp4«&4ÎÙo^{Ê©/¢¹|ÙÀÜ8í†Ð9c–I‰ûQÓ†®qœ÷Ø&=PËdðRš*ÐáÜ‹ñÓ‘‹çû6J9{u3 ] BŒg€ó^¨4›5|$m$ˆxá A‘* ¬¸±g[3¨R.MïGDã®çÀïCêþÃÿÕÇèø+­ðK3l§‡5òCð•EI6š è:K7”I‘Ä›3¥œŽÇ- •¼ŽÃ¦…f…¬äç^ŒŸ]Ì=r¬tì7,ÌÜ8õf€œ­áQËB¥H]×Ó YÆæx±oã§cï¸{9®j£$뽈%^ì;0•8@¹m긽;$—ÛM(|WcîÇx}ê¡7 ±«º9¥P/8ïQ‘v-i̬ùv0Ðüÿ=9îUÀ ]c° ŽÈ—"ñ.åuì7L”ó ðÆy/Ài/€Ð] T šå}œÓPÈ8˜ºíþ‚9°|lC#ñ¡½:¡îGSrðë#–ÅRB*eªâ‹ãÉQ !ë(4é™ÑT\j×Ìý?yx±o_:ÿv?H»aD:•‚¡>ÔÔépý˜øžœÐšÉÙ÷G‚‰m-˜:c›c8wb,‡ˆ ˜uK!AÜõ¿àÿ°Åq|àKŽßc;„àÙ§¾ˆ‡¸ßHÖʱÚåëK6 ¿Äƒ_Þ 'ÔïŸO< '”Þœù°Mâü?Ú±à1‚0F½L£ÜŒ½˜õ¿=÷1óÆe2Êe4¼8pðòØÅðµ@`±×µMŽZ‘ìx—‡’…o4p¦p·‘¾¨2u]”òd†WÊë(å4ä3ê}ÊmÖ±n|#Ò%V¤¿TœøŒÍ7nH"rGµ5LƒœñQÑL¤ ª¥NíŽÄû¸˜ÕRÿã©+p1ÑFðBâ>ݱP+é®ôõ©‡É|‘àÐ[ÒÚi÷ÉÀèQKé5urè‹·ç«% €ÄJ6’nu3L¸—ŬNÉ_Ò×KFÚ-plÓ`)„ ’ä&Î{ Mƒ,ç5Œg‚mÛ|`PúÔcfe[ÜíÎã3Œg N€»Å1þ-(ø2wÀ[¾ÞÆ—îŠø™~8?uˆXJ?ˆ™¡³Ërè H(J®O;úŒeB‚|^z) ËàwmÏ÷m2žîÚ£² M£|rÜñqÞ ÓQrâöúD9¾8pðòÄÃ`²ZÅ1·›‹Är˜Îj%#Íq–ÁñæÜÛ¼·.K)Ûͪ* Y •‚ŽBVC¡§DçnXB¬X‡®[±×¶ì IÇRªk>ÜRµ›k%ûu+õGž{¤°¬‡¼êâÃH¢Ý'ÁRNC³BZüÅh–Eª¸—Hî^ C¼>óß3óYÉŒÿWO2ÈX þ`Ææ° /¸|nR.€À‚@㉷ʌ¢RÐSž¿ÆaÀP¶Ž3—>~CɬÂÇ)BŽË¬Í1Ù‚¸AÄòþÉŸifüh~}²Å1^fè¥O}1· jtmëXÄ'°¾ïøLÇTŸ4fnŒ ’0ô÷Øå|gêÄ('L]±2Iw†!²¶†ý†I›9£©À›s£éûЧí~)‰±9¾;°ñ³RìKR›sÅÚž3Âuõ¦4–N¢X¢3Šð¨ií¯¤#cgðöœèë[o²T±‘ºâ– ì֩Ш—H±V4nz—+þ®+ÚXC?b Ðu.%$“ò} B r”r:vëÔî×8%ôΑ’êèF„?#°Fwa8(.¤2¨¥+ÍE?Ä«Socïå$y;*ù‡‘„¡3ìTMdm ¯Ïh6”„¡36IÈSÊT;UÒpÞkX –ŠRœvìÖLXÆoÇ9!VÛ}Rœº1Ƴ ‹oýA¹M:C£¢cî)…e›ðCzFNÓ¼c¦ÛFÒaùÌ–Ù2€=lWŠ€?Á‡¯s–±²÷cl?Âh€îágZã=Ä]‚‘n>óƒY粨”Ôj/f5´ª&Š9øðjVÌêè/)ú%ãåe€:>~:rÓÑòª¸¨"`φer<ßwÀ™‡©+.%þ$ w'Î{!F³B,€}Ó¹ÀG.v]»uBñ'bEÇ?µ-¾m$S'Ày!K;ÿ¤ dP ~#Fæ+6ö×oÕ;×í°ab4ÏfÞB³lE»_©2tÈaSOä«“žót.ð|ßAµ¸°æeÈ9T­BJ^ ΀ý†‰VÅL?Ç­Š‘~è~ñ(ƒwmŸfühUIÑ0ŽÓ.)N]ïs[VúÀÆ3B¤š:©.GÎ!Ñ !$¼ ÆÜ`øxZ€Oä4YÎkèŽÄÖ9›è+dÊyí£w>?"‘JüMÿz‹ãôA’ÀòÎqY^Cb¡×¯_ùù]î.·Õ(`Í:ô_j0xÊ m9FÓŽ­ÁОîÚp,NŸu”ó:²g$ ”Ø´6M4Êæ¥,h¦Îáë±jaˆXJ<Û³a›$)M—¤=˜ìý¥Ä¿<µP»¶©+pØ$1»½:é¼mûN6“^—’ò“i0d ¥%}Çâ©Ëa,4rvSê§8Â-F=¬1ï`ê%wh×ëú1Æ3*’tbßèz1N{”,ÿ]“M"ü¨e§ P37†Æ(d©#ðÌ¡}‚”\ÅHÌ}öÄ%패s„¯=™z€¶âógl’‰LL)º£çý0eü|ìâŃ|†*Yj׈„Äi/@I™#ÑEÐîÛP@$djü±ƒ3 ^Ö1žÅdÛ¼e\ "–Ëp©t‹ãÏ®lL¶Õ°@8€ÿö=Ÿ!ƒÿTðÿ;f¿¡îÿ6ˆÊøÇr¸›3¡Üã[Füdñ—_|ıÄ`")‘Lâ8ë…hU‘Ê´9{sîÁ L<Û³QR˜­v?D!«áÉ®RŽlØû“ÃI„=5r~¶gãwï\xk8ôRÒ8˜‰ºFës,©88ëÏ&v7í–z£s/Æ~ÃD³L›É,'Ýà@0}õ?œ“…|!KI?ŸÑ`[ñ•DƒÍ=Úqç3í€þŠ9-mèuG‹ÎqJœv|ä'•‘çœ~þö|1ªeÚ½ŽIjz’ ŒñöÜO7gºÆP)*T}†Ž ‰Þ$Â`¡Y1SåWCcx}îÆkÃëKÚô Ûì°i¡R ÎEÆæ8íR‡¸’בÏj䣒~$$&^ŒÑL`4¥‘w(dZ˜,k(VžÔøµ òä”W‚q¯+ú kåoH#ø©ä8 LÜ‹#«š2G£bÀhL0˜¥!Ø XÅï÷‰£ r|ZÆ$Ž’T¬ª‡›Ë !ïéLs¥pì-f(Wï#ÊÉp*Ð,KJî ¨tx § X&G«JãÏ'aŠ|†ºçý ;ºtã—G3Áü@Â2? ÞÐZU]¾9 Ø}ƒPâb±~”kúL³ƒØža{ `Tl À?ð¼¼Åëþ À à?ðßÃæ·{„5£Ä B±¾èP ¶ü\?¤;F“ã¹@Ææ0 E)W¸¬Ä€3ÂK1¶è\“*«DΦõxæ‘hN|ùcKò0 %:W³à¤ÙRÌSW7ñj1uÎz!$F3g{4jÞ©™àœáÍ™GVð·¸V `<øé˜6“;UŽœKîEâ73óbŒ¦dž7scDB^ê<¬Ì•ŒòÏ áìÅß‹ë €)ÖÈK ”r·,x Ýœ÷C´{!ü0†®1dm®„ ôÔ®1£(ž*úã“y¼¾2ÉÚ[vªâ4 ¼:õ1œ^¿¦¤”‰ ÕŠvT{§”_˜ûœtƒÔZøº—±9 Të?ŽÉéQË‚m0¼9÷„$T‘µ9"!ñòÔCÆ¢¶SµHs,]#Õ=#qXÆBDb8¡YŽm韬PÌi²˜ÓX´½8@€ÀbNÈR^û8×ôy.®4?àŸmqœ Èà·8íþg¸]òO¢ààï0ëJŤӰMÑÿÿñ–Çø ‚I¾¹lÊWŒ7†ëKÔKÚBVž!õƒñ•¾K1Gæp~(SѶ_–¸Ò^—Beán«ûa“4_Š9}“’:½§]§/uç~ŒŸŽ<<Û·Q-èhV èëSîó$Ÿ%l†r^On“]|Ò˜ºoÎü°ñ¦¤¿ĶÓÖù¤#r¾êët®ÍN$ Þ£dšD$hç<š œhÁ¥b ëbSÖæh”Tš±?ŽH—YÍijEZ$Ò %AÞžû˜û›µ©#9ɳ^Ó`ÈØZÚ:Ñ4–&ñö8ñÒáô7ùŒ†(’x}æcî‘zT9¯£U5aýͲ²­SûhÈDª_± I:œÄ˜º{ul$6ÁŒ‘!ÆÔQ+~º<ÆШèr:Ù=‘u8>> ð³ àïøßlqŒ¤¨·müçþɯÿ5€ÿ€ÿhíX÷A @Ø…m" ê |á!Y|?Óµ¯"¤:ƒRRR_†î'ëhwâùžÇÒÏj0ü8Š˜ù„«*åHv½=ß»Á Ò>ºðñý¡Ë`°J´Éš¹1ÎûWÀé—µˆà…$ÿ4-´ª&j%ºæàÕ™™[q]ŒÑ&¯!±žbŽ5¥ÔF3WÀ%Êy2 ÊXõ²?Œ1÷6£°§çÉâ××€q¯+$n ï0@_ì剷²´]Và[.rUC¥¼F£‡#ë˜hV ̽…ŽóNÕ„¡³TðDÍLnó-âZU3EïÏ\JÂ弎¬Íñd×F­dภ?ɰA½v§f V$¿Ó^€Þ(D¿çâQò(è(e‰Òç«ó$Ó‰7ç,“¡¤ŠHÆ8@½DZÖæ. %Ú½wÌOV¨Ž‹¬•tœuï8™Å¬?hT¾y@à›Ý|‹cü„ͱqûO ¡üÿ3ÜF¿{uüïüCÿè†ó #£m"~ñq³lÚ·R¹½jœ!ci—>E^@ ÛõcÌkù ™¯iCÎ!°ßq‡wB¿Þo-pÙ-/™óW‹Ôî'Kaúy‘š`¢%p]ÂeP{FX³ƒ†‰R^ƃŸ= • /ª/å6[K z"!1™ÒFw0‰0óbÄB¢˜ÓqÐ4QÊéhU 2Ž;:ƒQ¼Y®Ó8K¯ éWýrvëXÓæcLiÚË…{Óõ»¸ƒ Í8ŒÍÉé†é)²]´ŒE w|œt‚;[UOv,è:ÃÔøéˆ Y {5 e%§øm£?ÖqÜ 0 eöCê}½Q„ã‹ ­î’„¯>‰ ãh]’ö‰þ(J €BVÃYP¥¶IœNSg"™è$°8þôìjIÃx&äÔïEϧ3ŒX!Ç¥½~Nõµ/ŒßƒÀlwi½'ñ;Ð(ÀÁí JÆÿ[ܯÀÀÿÀpùÌpƒ§È±‹¯Â˜É{ù2}%„´)Ô4òHnâè:™B~0‰w´´u©–þ™Úhw|dl9‡øö¯N½VÊiثӯq Š$¦®@.CíÿÝš‰™'6è‰cÂEBâQËJE~Þ¨®p)¯£ZÐ _¦6v"¦kN ÷6UÝíåö>D/O¨óÏöˆÒxt`殯Õ%h”lß,"w *Þ‹uÀÖ0«5 ¨–ty[ZrñaD¢>ýqÛä8lYh”KGê8–†ž2‡ˆ„¼±”N:w,èÚ"ù'ŽOÉÀtî¦Õa>£¡Q6PÈjè #”ó,ƒ§Þ.Qþ’1ÕŠzŠ`-fu´*&ÎûAJïHh%R’úßACIplÒ-èh~ÕîGBÉLãÓêX“ÍŠÎÜÓ[š Bè¢ñƒ¦y}EÁ¾ê@‚¤l·-.@´ºÆ-_ÇÔkÿË{¼¦Ú üV'g²AÞÖà)ˆŠøéãaÿ~/¡ä|Yo1S¿Â`èd˜FAH›£„ðæÜC»¦xþ8ÂÅ Ä^:È£©Àxa·j¢U5iL­0V'ÙÀnÕÄa‹ùOvl¼<ñÒ±óº’ÆÝa$S¢çûvên›l†i¤-ÈÌh¾È[5ÓO6”oÏÉx.é4Êò 'íA¸Ò®˜N È8$C‰ÜÇ-G0ÄB p!ŸáÛÆÔ¼¤U1PÉÐ/) Lƒ:ŽEÂFIÇÔчŒ#ÌýÕ,ƀݚ‰G-Jþ“¹ÀÏWìÆ@»OŒ*}€,ƒã N¦q µ}LVØD2µ¢¬­!ŽéX–IÊUšÆpÒña)‹”ÔÖ² šó$&“ØE’œŸ\?†e~$ÐÜ5‘øsšìO¶W€Á$F)/P¼Ù°âk,ÈðŸoqŒ(éþ;¼öÏp øŽq®®åÖüM´†leÐ>à¸)wj×ý•0˜ÐZGñ‹FJâÄëŠEµW7Ó½Äè£K뇔ÀI'HMâžìZÂL7^®ã¬ Ý_ÌùOº>ta¿NJµq,ñêÔ¿$#|5¤$ÜXVa×’M±Ô½èO¨Mü N `³ÎuÒ Ø©šØ©‘<ýÓ]²ž?¾ð1ž¿ß l“Á2oôtàšÑߺàTÁ?ÆÊú‚‰¤í]¢ÑR7>¦PþoÏ}ô'‘â„r” :ªÒc.å4Õ¾—L#ô†—«,ÎIäçP%ÿñŒ’ÿrkþÒ‡‘-8¤ýq„ïdÂŒ¬‹§®¸pLœ \ALÇOv,äÔõ˜IIF‚¬…÷êæ¥ñ€K×™+¨ûPø´h²YÕ1uï ‰v/â›Ë•¦G77u¾äHŸoyœ¤Ôw—÷ÿa;!¢UñOüp½HÏ ÛÙ@ýžÏùNÁ˜Òˆíƒ!MȆê$›$SçàhVüBHpÎ^L»äP’¿„È9$ ÃD1ù’œtütíN^“lì,ElVLIø.¯»©¿A8®ZÉH-ã(W¤ów!H#&1¡»‹ÖM¨Îc4pдPÊ“±P>£á´G`û«€õœ*vÖ„á‡Vƺ ƒ5¼”@µ¨Ã6¦šï$g£1 Q!5>Ç"¯æÎP¡ü5OÈxð´ ”#…bV‡eR× ^20sºCrIªt.?œ ü|ìbæÞLÙˆ®‘0„Ð4†feÑŠ¹„ˆ„çÔaÈ:døsÒ Ð…äÙ©6-ıLgZ½1½ö‡GNŠˆ'ÛâðC ¤Îä§Ç<%ÈjQ“ç½h{@ ˆ¿; 4Ê+<¾î@jg·8ÆŸãvÖÀô=þÿ|€ëù7 LÁ/¯9——Øphøáœ÷C|Â#à¢2 ™îþE,qÖ R‡»ý†Sr?îØ«Ñ|¼QÒSW? ÀÕKÄÈJB‚”U_Ÿy×z΄‚@€'à~Ý$Ùö=öjAG¥HL.Mµø=ÕâïŽBø$¡¡ŠZI‡¡“¥ðÄ[-héÀÌs€Ý€mr2tê¼>óQΑU ÌÈk8j°L†fÙ5q8¯•Ü žî’xW¥?&óˆá„üöë‹kÒêM‘¦;‹â¬¼ Tù±¢^Öåxcæm$êY7[ægr7ZÚÛoA ý6îx¿ï;ÎüKPp5$¶9˜Zà¼â‰«ÅìbÁÐ9Jy’t÷‰þ8B9¯(sêg¯N<ôÆ“#c›©?ÀÜ‹‘µ9ö›ê%šRL¼bJ9êÌýÕy‰ÜK_žxàœh݇M+Õ¨”¢ІpàÆèBô'Qª /•ûìn”¿?tðæÜK±]w½O‘8¾ nÀ~ÝD¥HÈYÛÁÅ ÄI'€ëÇÈe40Æ®S1ÜÇ×hñøWþVr6Gotsÿ–)½CÅ­—’*·çFS‘žíº×Ç’\ö&s³^ €wdÇk*R¢Ä*b’\×_–€— (?¤výp)E&¡¨:ê%y‡fغNØ‚“NV^ çôå‰ÓpÒk\“Ì=qé\˜RºâœZS½Q׋Y.Ã?‹±£©3ÔË:Üóà^Æ^ ÙÅ ÂAóFïê¯-$€ˆ ðv‹ã¼SÿnÃÿWØ^UIÑ?Æ%&wz½½»t)r ÀC|%Á Æ$ _Pþ1u4¥ú(–x}FÉ_*CžFÙ€e’œëÇ8lYÈ*•áDàÝ…3¼8°‘ËPö§#÷Z 3u^žxøáQ9‡fîÔY Ua2‰Rz¨FÝË@u!$Þž{ðÃM2 úîÀÁ[c¡V»MŒg?zjã{uÂ7ìÖLs::Ãå¼¶N€hƒ”DWƺ@®{!Q¸¬uöö<¸6{'† {u3åöG‘Äy?$Ÿäàö€’é•j%#ý]Iè:CQyÌ=š«wGaj¼³ü^¦Îðd×B1§ÅäÌKwôÀ˜Ñ¬Ø­™©ä¢”äøž"”šý$m~b#ˆXâݹŒ­‘ÞóÒóÊXœS7˜O4Ÿ1? °œPÊsŒ¦äp/€À±`¥¼& ™oÊ'@‚Tí¾ÃvB<3Pkýïoð· $Ã{ÜÀ¦ñkИ°ŒEÀpƒ’膱*šâ+Šö ‚Ä©™$µòïXÈ9´i10s<3W`8HÒWu˜g½§~(ÁÏСV20žÑFñj$x±œ£Që^uk#;/ˆqÖ ÑSy#u¼æšbÅð‚8uM6•GþÖô«"ÝX2¤æî(‚¥@’Y›£|`£Y1nÚœ ±FCÇú8Ç2“„¬®ÅòòI'QÊë8Tô†Ä9ï¨í£; oå°téæ°-jÍ× 4S¾„8î(d4Ôp"ŸÑu4´ªúãaˆÉœl9öëV*ö“P.–#f$:Ovìô|›ea$q1!”hC°MŽ(’pƒXqT©½”Qö–I@Jê&˜:Ã\P·â¬â°in~3>pè“ÍŠŽéT¼%úò•÷íaÍÜqÃhL”>)à!î/D _L×Xêèšta36OmqM!ëh˜ªÑr, ^+éæj<xwîc Äx˜’>éÈ)}™ƒ¦‰©+RX"TÈj¨—¨ÍŸŒ# ¹i0pÆ0÷DŠÛ4GõÆ‚ÈÅã–…J^Ç^Ý„mq¼>½y q˜:¹ûe2<ÊØœF#KÅ…f²ŽÂ5qêæ¯Œ› €ß*ˆVÀ“] ÃIŒ¹G­ù¹à èÁµ*¦v0ˆ˜äÚ›Ëù^w£Ÿçr^GçýoΈ¯? \ C³Äí/åhn´§hE×p,Žu:ÃðR;ÿjXÊ2’sê<H±…¬F×äÅôw%*t²B~ºk£ZÔqаK©ô§#dl –N¾Ó†Î/­$?+€ºß¬ZÔd»€@Læ1†!«Å›>~·9ÑOy—6Ž_‚ÚÚÓ-Žñ36W<ññ?Tt@]€W~>ÇöÀ"¨Xú¤‘Xx?ÄvÁÌý˜µûaJí¾ºaìB8&G.CØ®‹AΩ‹ºW·ÒM–ÆøéØÃt»ËW¬.Ç¢¤ùdÇÂoߺ©Mâò—t¢=aè Ï÷X&Ãó}.zãÍgù ÀdFX°';6ê%µ¢KwðæÜÇ`²8Vrí'íƒD¿ÕáØ¶ÁÀ9KEöbåa3÷bx~ŒÉœt4íÆÓú5¶(Ú ¶ãµ­¸B6Ñ<ÖÐR'™˜ûdí…]ã»¶³ÞÝý–£˜Óðt—¯„Â?º g¾å¹Loa8‰u¨Ú« `Ò(¤ ª FSW ÈqUp¯nÑûÅÀ›s2ƒxܲPTŽY›ãí¹ËàÈÚt^Ã0ÅèIV2ÉKB©s1v«ä2•Ž pÖ 1s+dµÏ BÖË:Æ3ÁæþíÛYïLí^ÄsŽ&më›âWíªÛhäÿ”xqsnú5¶oů «†#¬Yt6ŒG à“>¤Üþ3ÿ­c„qŒ#ÔËÆ%þ?@¦<¯O‰.Xýf ;U¢ê%j~œ3J˜Çt7ž1ê_x²k£Óñ|ߦF‡®Q2¹1:ýQ„¹/–ò’›O÷lé‘<ý-®3%Ðýûuù¬F¸€¶Î0„Î26:yµÃ· Fª²@ªCã‡1ü€ §.m®ý F($"!±S3¤®±›òÄZC®› €¨Í÷hÝ&â˜vņÎ`誽³4(d5pfb¢.$R¸É16‰JAdz=RaŠ"‰·m’…\´x4ÈQ+hU©EŸœŸ¦1Tò:µo®p,%:A1\ôt†!„~÷ÖÅ~ÃBKQ¿?tÒÑBo$0œˆTŒâç?*¹ÐÂn– pNÒ‰åx&ÐFŸhŽi04*º|wÞ¨:±IxDwa¿nl°/#$h®ýÛЗúpÍß$ëÈo±½öÿMñ§ BÀÄ"Yÿ„í €ïñ>¸ð£ÇçôüÒãø‚”ô²öe÷ºDjw®v¶"&'Ø_44úõ'©ùÑÜ£ëÌ:$tñ¨e¥àÇb¨— ´ûaZñ_xº÷éõ®F9¯Ëá$Æp"Ø} {CÁŠYí[Ù]IP’ü€ÿÇÇø Ü ô@ÉùCÇ+P»¿‰ÅZt r0¼kèJáÜâ#EHÝZÆ8CÖ¹<Ù‰U¾` Ý” Ša›A =ðVY¯›:C!ã ˜ÓQÎëè Ât— ü@µh U1s´Ôˆð>Ž;Á%PÞªµ§;¢c>Û#@ß‹}?¹M¯·JOð @Ñ69ò:¿KøƒR^$]3%y2¨›ª¤Dqºq^E‰OBך•µé›(Çké¸7ËL€•ņ®1ùtÏb“YœŠúôÇŽ;4“ÏØy‡,“Ã4TëCé„ÄÏ ¬1s<%¥Iž;UM ¦Îàú1^Ÿùè7__Ðàó=²#¢û‰XÒ>«£˜%mþV…’ñ`á°Iê~‰BÓUÔBQ ¢¿xœ!*"v*ü FLÒ•†F€ŽäîemŽƒ†³”*XÎk8ëQEzÔ˜RÊú¬6 š4Ê:fn¼‘~öMA Ê(}ÁA@Àm"áØ§XÒÃ@‚£[÷®ñ´ão.ýl[ øéC­Cq÷PmyvÖ aê„yZî"2F³pÆH=¶Å‚lØ:c´k)C·V…0]QDª‚µ"‰%Ôj!$F³X岄6ƒ w†T$¨þû~:¾\,ÏñM“#§Œ‹ Ò!H<’~Ä0 ²‚ÜcÏû„X܇å{r]HÞAÖ¾±KÜÁ5&@Il‚Âú ,Z|ï…ÚÑÊ—Ç>ó‚˜ÐôýaDREs/Fo¥¶…Y[C.CÕQÆ&)\ËÐPÌjU cLÝ£Y„™£RÔ±S5¡©ÙΫS£ÙíÚ1†Æð¤e¡”#Ðàq'ÀY/H[E¥¼ŽŠBNŽFúý&UÎzµ†®yÓD¿:ù@ä2jæsîã¼(™Jšÿ÷'J9šû,ßÃjÑ@gHƒÎ:*ÍŠþÉe—CJ Ÿå²ZÒо…@µ0ˆ{p’éÿ|öñ´»nqŒ?íÖñäÆÇ)Æ ‘Æ?€Âha;­€Ì“·<ÆC|&ÁpÚ 1™ ²zŠy±g„ºÏÚJ9û=PÄä‘"–pc¢ç ŬŽZ‘ÖôªBV9ÿ Z×Ï{$ÔÖ¬x¼CmZ^xñó/+ì鮬³(Æ3]cp,r°-fudK%w€vøaDÚ/ã¹Àd&0÷Idh¿AtøÃ&mOºn³ QG>{£ àoqÃ:³IpB_ËM³ †Þ(»¶‰f°+=K¸>¡»#ša$T‡d÷m›$k[Uõ`9W¢ AŒwmã™ 9:Û¬’Ó8ã–…zÙ€ñ5O:AzŽ‘è hÇ_Ψ¯˜Õ‘±¸ªÜ$ˆ„*V¹2™C«J •¡bì5H¤â©j!1PËfîÅx}ê)Të’|¥Dj|4™Ó¸à´ UÑ?ËœV+êM¼`û³‹c`2Ûžéõ9J7Äw ŠÛp‹c >²¸¾ìù ¨HøÐ!A£†¬þÛyP‘ôå<Õ‡¸6â8n,Ê?Fu>/aªþw¨F­Œ3/&†”ÎPÌj—À~ Äh– Rpݱ¡qZ_£˜:罃i”®×g½‹c§f¢Y61sã•ú«âb@tõ§{‹"`0Rðž¡ìà%Jß1™‘„=u³%D¼o_…ðã:^2>~{þ~‡y]s,ƒßôý8 ~›' àáš/$ç4_ÏÄÀ– ‚©'1uÉÌÁÐU£l"kÓ¼<ù{S'¥¦zI`40ž“ñ‚ˆ/÷ê{í7H€ Šwmñ•j‹1jÉt!æžÀ/gRξ®1<Þ!ÊáY/À`" Ô|_‚xÿùŒ!Á11uI¢”'Õ¦äí&sÂ;]øÈÚœæA* %`”€`^Ÿùì_d>:àrX&“Š.Ú!ÿ‚ïçäð ÛÉóžvÝûkÞçß~Äëú¤6XÍþ[¯ Òù,âá#~÷ !Ÿ˜½k0tÒÞgŒÄvÎ{ J i ®7&úô“ ÕÍùÏûÄKf^Ë îdœ0œ’èOâ˲Ìß1ð®À±5””W‹ëÇ„î_±¾&ÝDÎɯ…1b ˜:¡÷³å“8&JâÜ‹•±€ë‰ÿ¶Œg[Æ)tǼPé(¹cqR¡ÞL;deC&FJ×üIêÞ¯M €ˆKüG«~™Ðý›c0¹à˜¥ÿåÿL¯o–“¤ Œç ÕnI¸’² $zÄpa4] “›Í@B? œêþÍ™‡P\OéÑçÔ±8"eœp3+…¬†Á$Âi7ÄxÁ2vª†BþGè£Ôè÷ï\¶,4Êq9%U¶RMä¬^*’ù×Y—€†'£©`•ÂgEL£\Ð0œŒ¦›W­ Úµÿ ÿ×-Ž3ÅõB;ôýýG¼®ßÖˆˆv¸Î@’óÏÿ!>P0g]¢Û•rdæÐH†i‹ÅãbâÕ©?iG6ŸÑ±hc”±9Z2ß±ŒEFõÂ?»˜^#Ü“¨û½>õð‹Gl‹ãñŽ?ŒSMš$ékœðb…Œ†’zË Í(°`¶I ´ûÔMöBµ]î­[HØèÇ# ­ªBVükÓØ8©¯ MêJofMnðAª¡kc“ ©$þÑu`èLÖK;é„wFt3ÔË·,JÀBâ¨à´@Ó€ŒEˆÊb–°–É`›ä˜£)®+ñ²ìÍ^yðÃõ²ÃÍŠ™:K] B¼>õÀ9C­d¤t¿z‰Ä…:ÃP‰äŒðY/¸„ü÷¯N<‰I ´*¦sÁ$‚”—uë0 ir¸Š!qÚ P-8ŸåDç ͪϽ€ß ð‹ç î])z¤ñÿ?¼æ÷gØÞŒç6Ñu~ðÛwÖ¦À/ó ‰FÙH…k8[ŠYGûaŒ7g$ FãÔ ”0 êä޽º•2\?Æt.P)è°LŽbNÇÌ»¾ÛlÌÞœû©€Û“?¹±DÆâ(fõ´è E@ú¢…uªGSKìÔHÜîÿÏÞI–eibØwîÓ®Ex舌T•YYºº«º{f·{gg9³»‚»F.h Hð•ñ@ÐŒÂH‚0Ò#ÐH€FBpI» w±£gºGµ¨®®.-2+uh®ýÉ{ùã¼÷ÜC¹G¤Œ¬Žc••îO¿{Ï=祼ŽÝfض;¥¤}3ÉÚ=f’9–ÀÅiY‡ÅåzþaÁ“¢DÝii“= ¦ªœ$`ÛdîéN3ìã³r¦FnìqõBàò¬?–KB©TÚkÊÚ»M>¾¥ NDåüÙllÜêDp}õœsu&+%ÇÄX¨þÛ¸Îð¯âèàd(§'Ÿ}CöðxmsÀÜ3>öóx A`ÕÓíFˆ© #ßÓßÅÿÛîFÈ8ÌX·ë2Ú(ñ‹xœÝk…XÞôQo‡)M|uÛG!«!k LV ÖwÙ{àâtŸ_ŸL¨—§mx!';M¶vt}vyÒ5¦c$@¾¥á`Æ®Ëüþ‰J_Á.¡ýí4Ù(Ѩ®ÄœÖ®Ë Ûd­é¬#`êZZ–Úk…¸4mCn)$û®·#,mø¨äÏf“-ƒ—7F‹2=ÍxLÂg œ\Ãã9õmÆ?ƒ:üFþüÎëspÿÿq±Y0à›‰Œý¯THÜ]ñ #…r^;Ô³Þn°ËKsNjx“ØÆÏÅc²B_möÖb/UkMJîõvÈ F,¼ÝÑŠÇßdW†Æöð傎rN‡m‰Ôò7éýï4BV#t%BvÚÏç—gxáxy†ÇïÝGKq¹{«Ü˜gv³¸%ЉçÅñ²®tç¿ã.=8'MàÁê•£~™«EýÄ’‰•¼Ž‹S,´Ãúø}µ§SÙ#)Gk˜®q ÁóY&˜ÀòÁù ë ÔJŒp}îçì4$ª$Aï#à¡ ¦¦Ç8›íºL'©•ŒTبհºí£ÞŠP.ðå­·XvÒõ€ÛK=\™‹eÁYçv#ÀXÑH«Ž%ÐAw—]z墣Äs·E9:€JASv„FGž·FG¢xõ1·Óð€_ø7¯ÀŸ%0‰õx¿+¹,ôMŠDNèWæõHœ_¬yd[»_²&ðÂíþªÇê§DÆ(çY&wªb@× QÄlËL8ö: &%°¶í£;ûM™¸½Ì¨¬­¡’çÖpÖ}ýH¡Ñ–hõ"T zlDR¥8®“Ü©FˆHº¸ë\š¶ADØØõ™–ÌàžÄÂk×LT dn t\É‹Ïã·/À@'’?ià{|ç¸X&©ZIÇÝoè¥#b°Ý¤Ó øú¬nï7ô9ñs"¯Æ“j¬ØØ Å2’‹é傎œ£¥Ô“ñ2¯âE,2´º 5+bÚŸŽrA‡Tüà-o±?ÀdÅÄTì3°0iëJX†ˆ'ø¾ee£1uÁ&àÒìhuC”òZz\ãRÖâ†ÝVHµ’~fÛºN¯èôN'hñ+ïàñ€ ÐoPð&x2~Ö±Öh=ævÆðÍcüÊUlý»Ý1VÔ÷•ÿAàQÜmw#”cißJž?ÒéÉ”²}íWJ1Kê b^»a}×Çü„…±¢?´`¥œË Tú=ééï6¹JF ͶŽ+³r —gÜz؃œÜ­v¯â먇+³6ò —¦,h‚[§¯*#v\½›·P+±¬ñµyAÈ`Ê›^Ç€$NãÇú)xÕáàˆüƒL™Ð¨“‚ãö ¸ÿ’ÐtíÑd}^´|FÕY›'Ûk6÷‚´D$%—Ù[½k»r¶@¹ £Vê›!Fà_ž±±ÓPoE©£áàyØÛ '@ÁÍX.2q;Ük…˜7Q)pâm{‚î¯ÕÈ»­k,T”îÀxÉÀæ^ÀæV=Œ—Φ(Pÿ>TŠšÚÚ{|…À_‘˜ƒÝ1ÿ9GPBÿ¼ Vç{Ö¡ÀÔÆ‘ÈãqgLè(möGˆçnlô,#’ÀíE—ÂP¡ÑŽ¥¬iÛÞ&¿ %+¡.Çåx]c–JžUÿ¶ö‚}‹Œä¾´ºlœ“(ì%á Oú6·~ïåv#„mzX˜²QÌj¸0iáîª{¤ÉÐQAÄC·—\\ž±QÌiX˜´ k„åÍà ¢AÅR"^|:Á4X:8 á%º8†.öy $š#’‹d\§InÆÍàˆY˜¨˜g¥%×— p“ìú—ûÕ´,áþš›*ž6bŸz\™µ‘Ëhéä”ÂÓ €°Þfu¦bV‡cq >ŠtR+ê¨äuô<îóï4YÔ'öM)íoeëp»¢Ù‰ðõ¢‹Ùq‰¹q D,ZquÖIÈ94‘”œ™:(‚y¨cE‹›"|½äÒëW30Ϙ7Àk¬ÆcË`ï (~ÃC©€ðx ÀôWÞ{Žçõ#<¾ûà8x‘qf(€'- Ÿ°Û éÁšMŽÝw‡ #•ü‹•ðÆŠ}<ÕÚN€‡k."5 ÔZg B–=eöbçTC§”š]Î÷« ©ÖJ, Ôu÷Ë LäV·}†ÀlÍÄD…ýi®ŸL.àG£Õc^ÿ•Yƴͳ²áƒ5A¤ ƒ-ƒ`[ÜÒÈe4Xñäoœ xÞbÓ ˆF –IJ;~þOÎìœÐŒë4 À0}Ô/•Êy ¯_É Þâl,’ ®Çf?¥¼žö½w›!èyýwü4ÙµŠŠ+³ Yž®{'’wÔuÂÂóO“¤¡ÞfщjÁ@.#uXíi²j Ù‰RMèÉŠ "`k/Àî*R\jRÐ5¦¬„±èP1§ášå`m‡[K@PïFXÙòÙp"–N¶3Vd,?PXÝ °¾`aÊ<Ó`7Ë$ÔJºZÞ Î‡ËÑ‘+ù}üÛH@w ñß;x>ýÿ$—þ°À™‰ô|Þòx°æ£ÞŽR„>À>(Rr ;Ûýæ \©Õ4@#žôôê-ÖvÉØµ¢Žž+QÎk¨•{•ôö½@A)ÛбUcÄC*Û¡V60]3á«Û'#Ò$«ú®+q{ÉÅÕ9¥{ر]ÆŽ ‚4–8N$î“ï«Ø; ’ ~ ÐóØÐóº^„0f×]·F µ|tÒ{uš  \~óØi¤SPQZ^Ï t󒃶LVbr}™V <_"ˆ-zï»Ø pl˳6J9Fî/nx'ê¹³5µ÷PÖw¬í°ÌdÇe£\FC­¨£kTÅÿ¯”‚.øf®nûGb€Œ%P‰«›{Ì8˜Ÿ`Dçü„…bV‡mrÉ+1JRŠËèK\&¼Ù„#z{ÙÅü¤‰³•¢†F;RÍŽ|"–Á'l€V`°Û»~ç1¶Ó;ñýv| ‚;/jœ1€Rê‘]¿ªáŠn>ìé$E ë;lŒ…ñÏÕT–!0Uå «®Ñ>·Ñž/±Ó±-T‹lúãØ‘b¼Àvƒé†¦N¸6ï°V˘‰»+î‰î_;š1|~‚HlÁ“;Ëè+Õjúíµ’q軑Tè¹ aÈ}7–îy~ÀI@$Õ!”â48ätðHÀ$N“ÀOü+`ðÒ¡ã`¥¾¸ß£BVKÑò—߸‘wòŽH3ŸH*¸¾B°?r×eç$×—#þ}²·ŒÍ¶¾å¼Ž(b´ÿÊÖÉ“6ál5,mzûúAa¤°× Qo…pâ‰<ÑúOúTºF˜3Yó¿{ ´ ZäÄ­n4Úl 17a¥H¥b c«¥{­kÛ¦ú½+!˜Á°Ý``â%—Þy9‹bîìj¬ 9^Ñ©ëú©Oóˆ³|M†ÄEð;øh*"ŸÄß×Á-íç}RF|MÎT¼ ÏÖs AÀúv€•Må³®^ÝzÂX±OgJèÑ›{&*&*\°-V'J·—µÙF>Ñþ7 Nê[õý˜-A¼ðšç…Þn3êäš~xiÞA.FõGÒÅn3©éc 8¶†œ-q4X—ñEÜÓúó¥ûÞi„جð^Ù‘‚Š[äéqÐÑÿ/Ï-#¦ÿ­žô~6ø ¬ô5ŽcpÅÓ1J¹~O¦Þb§@¦fX&!c1â]׆AÈ9rÊ…~¯(H3$‰¶!æÆM”ó:ˆw'™ü˜v8ƒ3š÷W=øáa_€ä¢÷<‰åMížÄËœÔtˆi€cEõvˆÍÝN”ôg0^2RÞj¢ÐŽKC­n„Ùq fìzUȰ·€ë«C C¥€b–ËFI¥àþš§Þºš9ÓH"¥8S-4µ]žÉÂüFW½ö½ß|Œm|.½çÁòÀ®Fòüã›Hü•ŠH_=è‘*\©š©M:anÜDµh¤.«÷VÝTA¯=âË;ì˜s4LT T‹z*”–Ì ÷VÜÔ>}°·/Á=ýRžåƒçÆ-´»¼Â ˜ðîJ׿Ø3€yþ>,ƒ±c@R@ñù ޵{ 6캅¬†™1ö£±L‚çËC:3'©”r5ÅPº6ö NÑŠ;mpL/?ê—J±IÁëW2p=Õ§Êm²l#4ÚQŠ~Ô4‚©Kƒmñ7M–ÃÕ5‚a²¶€*òŠY*Å"?àì±çJ˜†HÁ†˜’cÊg4\œ¶a1ó`Õ=‘õ¢¦&+¬pèù ÉÄzŽÉt½JAG³ac7à‡ÄÑRgÁ¤:@à~uÛG!ý+(`²jÂ6Ш$LC ŸÑbq àË{.ÝXp`œa0 ˆ(ÉÎô¡>'Xsï/ãùöÿŸD”ãŸóx#–E§;ËŠY}Ÿ\m¢º7h¼“Œ ì¨Ðqí_-êÈØc¥¾éÿ¾Õ ârpòOÜ2XÞôpuŽ1bUKÇ+ýùˆ5"Ù÷gID~’c—’ñ®/ÑóÙ“ ™ðƒHqµ;Þn½"Œ€ù ù Sù) ü¤¡k„é«å#D`忟j»§¼ÇM°Íèwû€iªtº»ìaiÓÃÖ^p$-P*@† ~l´€$)ÜO±LFxÚ¦H¼¡ ”Sò ×2ð|’hv"t\‰N/Jû(ƒ70çøÂýUØÀxIÇXÉ€Rì)½¾°¶ÃçXQGÖÑP-è(åtH¥ ØëF¨·£Ci]c(?¤¦Á”ÄëFaÈÜÓ0£H¨XiË[>­lùêÒ´u¦Á€ “¡VÖÕêV@O»„ú‚*¬(ðd÷*˜bû¨±NJ8¡ú×ȃûðÏÒG`0¦À Ñ~ºÏcXÜZtQo‡¸2뤫éê½ÙuHÐ>Ÿ”HrµWåÙµ»Ax¾ÂV#Àæn×—¸6ï`¬¨c@HÍ#2—É[ƒm2@Ä6u”óè#õ?Pa¤`›~(EÇßw–]Úªg0Q1Î4`¼D­¬«®ë“|Ê€@ÓJˆråø&8xóžÏÀÀÜÇ]¹¿®Hü£çt-&Á ‹3œ×"NDÀ⺯Öwª• X¦Ø÷»íF€D ëåc ™š‰œÓ J0T÷VÝt OŠ ¶ª”Ó0QfßAÑžd\츶öÌMX(t¼bf`Å‚; X/Š7B§'ÑìFpSºŠˆ¦ª&ÆË˜- ¡»Ý†=\šaÕÀ “tÕ^³Ÿ#¯-€Ùš¡LƒFù?;sž8%XK«Pʱ.~«ë=RiV©XÞw–sžJõS ¸èy;jJVÜ3ÏgxÒLéÄ­€—æx÷jšÍnˆž+á‡}üp¸ô¿×Ž"M€2ÎP-“PÌê(å4ä3ÆK!»æ4ÖÁîEž·›!ü°‡kó2–@ÎÑ0?i¡Ù)FžÎÔ,4Úz1€ä«n*c|–C(å4ÕÌkØnDOu}®kÅ=«q ¼zôþ—àÿqÏþ;`~/éû(q<& DÄÿ<†‡(úôN—"©PÉëûßEž\®'¸>ÛµOV ™Ð´~uW׈µûm^™^è„]UÈjé»]çªnB˳c»øB–ç Ÿp ®ð[Ý(nGðü~Û8ÙHÉs¡1†a²j–cÙi‚Ào_/öpyÖA1«a¦fÁЮ{ÇJ³c®9 ìL` O{ß%h€ÕƾÜLƒÔô˜‰{#|ŽŠƒÚþ‡&ÿÁ³hø‚çó 31Vä‡0‘Ì9\!p,®T‹:ÂÈDÏãRO£Ã½MP¿ôߎFŠA$òŒ†F¬ó¿Æ¼ÓJ=ª“RU!§ƒÀ=¡z+Úì&^ÓÄËŸÉØZJA´ÏêR)FÙ¾y5ƒÒ¶ NBP+ëhu%ž bÏ  À 8 xœàC°üçãD ÜŽ¸ n<`ò9ìó<3Ë›>¬y°M\f¿T |À@Óú6¿«[>v[!ªE¥œŽŒ%µµC‹/"`§`²Êm×ÉŠ‰vW¶(U ÌÚZºÊOú‰¸kªôЉ’ƒÀñ£V)~¨pwÕ…ˆ½[æÆMD‘:±PÐ`$¬°[‹=,LZ/3ýÑ2 ÷V\´{ûÛ¥¼f`äþÿ2˜pªx”~¦Ø8ÆउŸAG‚4†E9§ãÊ,÷I¥¾“^h"æJ^˜´ ÅÒ·—{躦ÁlƒB†3Ì͂B†ÿm²ÊJ1€- ù'²¶Ç‰•òl4I`}7Hå7vìÅôTÅØgó[Èjh´ÙñO)æü'/ƒH˜º8$ø0^1R«Ëzˆ¯—\õÙ3¿:Q2¶Pµ²Ž•§¤(°Í6(ƒ%ߌíôðø*|`‡Â|üç‰ÅDžPXàJÈy¼`F Ïîö¨çIL™0u.ÿ»ž„cs†ØÜ¸•®Ä¥TXÜð±¶Óï«'»LìÙRoïÇl)ÅòN#D.K{õR–É Âd‘•ÐñZÝv„R^ÃÜ8›9¦H]kOJÁó¦-jšƒRŽË÷‘TdÿKà öÝA¨0=ÆÔö—b†À XQ%èsÎÈÅ^Òš?UNj*¬mûh´C¼r1ƒŒÅ/ÆD L@1†NÐczãâ†ÇdÓ¡ƒFDƒ1 øìNO¼rÑQYGœù*T ê­íî“ $Ô‹H€à-ÿà9ÇËà 8àmðŒ÷_0ÿœ¯Áyœ2ˆxáswÙ…m LT˜ªæzÖ=\œ²`™„ÉØ)ÕÐ)íëGØi)Pü@¢Ñ‘±M”²¼’OU†NÈ9ZÌà©K ’ŠW÷ÍN¿šëza,"×q#2JysZ=‰vïdÖõ@\©M„‚æì”Z®â¶ï©¯¸íñ`ÝC*ÌŽ3Mðú¼ƒë^ºMM S¦ÒŽ ¸eöH š,ƒõ†”팵úÕÔ˜Aë»Á‰.òXÑÀ¥i ¶%àúì¸u «Ïj¸2î/qoÅE³»ÿ÷û:LÃëy,!©i„‰²‹Ó6Ä€uÒGšŽº®D£¡Þ Ñî±°D¥ £˜Óû«ÿðèH‹)/ lì˜ `¼4ÍæHW¦BC=7Âæ®@a¦ÖGû+puc}G Ý“Xßõñõ¢‹·®eñ>Û0tR“U]=ðqR§­“F¬+q$+å‰Wðø@ÀÇ7À“r<ž­¨PÇàŠÎã솔 Oow©íJ\ž¶QÈrÏ}¯ÍíØd@ÌgX¸Õ°× 1]ã…SÖÖÐé1ä#QÏ‚ÙOQÄN‚~¨X/ÇØ€¤Ý—$ ŒÕZÞb¤}8ú«Æfb&Öü¸‰¯—ÜSÙ—X°èîŠ›Ê _š¶Sü£]?™»¾Ä”Çb†€©V¶}d Scæ¨m¬Ò{êxÔ ðçþ+Ç}@Ó€ù S}z§;’>Q1°0Å+÷®+qoÕ=ñUˆ½¦í>`p÷†%ƒôCA\}Зfî­2Zµ”ÓûZI2P5Ðõ$íÅœ–Ò·ëÇ$:ñ¶1¡{+.D ì«Øg ˜ë XxB$ÅM¾ù•BŸcÕ¢Žë!Œ€owé¥y/J ˜Ó0UUjå j°Ö)CêrO3.¨y¼Ï#,0ú?‰WÁ+òg)+œ'Açñ‚DÜêT7ºTÌj)09YÈÔÊ: ­/Ú³¹`iÓÓÚ26¥ž1DÀô»ú½}-+gÆ Zß aèD®Ï‚,¨ÆÚÿ·CgjVJç;X¡=x¬Óua’=&:£1^Gm§Ù‰pg™ý[l“çžHöÒ¶ÂÁPéŽÞžˆÙ D`Á:paʆm±1]y¸ü/Õ@ï<Ê=|Ôàžå€1ÚU iY#Qÿ;êägÆLÌM°ub§'qgÅE£}òÉß2—§í4c|8P>9iL™¨XG`eËÇv=HK; ³ ”cî¨cõ™‰q‘T K 3æKN׈Q­ Ùé[Svz=Œ•tÌŒ1ÕO+Åœ/` b×ßYŒÃúŽ/TXÛp{ÉÅ[/myàÁ+éªçIì4žŒL°e¦ÆŒðc< Áy^ @ À¿Oáñ‰§iƒ)zîñ"§–O1”>»ÛC×pýB¦Aé˜8^1àXZJ·[Ýöñp9ïq¹>k 86Kü¾rÉÁo~» 2¶P1{KÍŽ(4¬lXÞði»b·¢Õékÿk‚py†Ý÷*y[õá-çµ…,/¬fk&šÝ­ à Æn+ÄÝeWf8¶À•_/õR™ßä'©þ&âB†N0uNX„èÿ>ñ8HZÁ‚ØHéâ´É‹›áà{`[ðSÇã$_éGG²*ß…I 7öÒw(™0fÇÍqßêD¸ Nr3S§´Œ)`i“ívOúºªØ`az,¶ù­Xßáä!¡±$tízÓèûOô&—ó\)hu#ì6ÃXß_"’@ÎÑuDÜï Sô$Öw´:®/d³Lpe†ËhË›~ZÊJŠJ±Û`.£Á‹U°>úºKWç^œ*€ÀtÍ€(4S (Þ–ÊeÄ pæC#îÁðœö<é'¬·*˜’÷8ÀÄG9†,ÎX0èNzý Ö¶úâ^Jyå"¦F†ç«´dŸôëx<»8e©ßx» ŠYíPŸ;çuu΂eÖv}Ú©ˆb"`»ÎFB…Œ†©*û³ žûëÉdm ¶%pa­ÅÞÐï\Á'{£aeÛÃ… +Ö~±±ÓdGB3VrÕ{Ý0@‘Ò9C$´„};ák“Ì‘¦!PÊk  àOõ>>NÐðB4tRo\ÍÀ2%76%\_¥+c÷gÖw걸ŒŸhûuñ^Y_œ²Q+ XÝò±¼urnfŒNÇ…êÃÃuïHA†>@Ea»Â6j%‘Thv¢T?ºZàÁõ¹E°ÓP-Ð5JµRZÝÃHAÓX˜s´ÔM¯Õ‰IÅm PÊëi‹duûÅÂ1M´f(/ðÅ£R‰€Éª¡*íEžEÀWwC/«Éµ`¢ÿøCeàzœ‰HªršF§ê M#áŸ÷ =Áôñí.uz^^È@Óö'JR*l7´ýi Ðÿ¤:½(5{ûz¥¼v$È-)é/L›ªV.ã³»=üòf‡vìÐç…¼ÊÚŠ9}$ð<)á¯lyX˜²Q)ðpqc`îˆ+¸Éê\H=j Ï%c‰t’§˜åu´}l¯AÞ¾TL…”Oî‰H„¡Š½ØÏ.M³݈òÿ}?ê}|œ`塨ÁëÈÃ+17³ôúŠ'x]#,LYPÊŠ­elðƒT¸'B©àÇ¥Ÿ “&*ÜsZßõ±¸á!ŠN®<˜Èðæ³³ž'‡â’¤aªj¦jU·—\:sP+=ed,N’ ¶ºÑ‘޶I° B$ûk,“0]5ÓÀ×`qÃÃË2È:œhlì´]V4üèë.]·‘{Aªü²L× µ¸îÓiî[Õ¢¦ÆËûøž©¸ÀÁãÓù%¾Ã¦Š¯=Ãã` Ä™ ]‡2t"ÏWT­Rಯ¦þ»g5ˆ€Õ­_Ýï!ŸÕö™þHZ)wË Ñë«96DS ˜¨è˜¬#n ŸÑÔ÷^ËâÒŒ…÷¿ìЗ÷{pc ÷xÙ@)§aªjb¯ÅʫDžRÀêN€|–«¹Óc&kûÇþ,YGÀÔELÐ¥åú¤¥êW‡Jcbý«‹½ÕÛ,øJžü'û$ Hćž?+Ê:')ÿÿ!þ¸#è'à äuEä’µju#ZÞôQ)ôé ç]ÚïHœ]%ÃQ¢Ïœ\,/PPJ¥%&–q”°MBñŠzР!¹YßÝ©ŠZªö`»17 L™ÈØl,´ëB‘B×õ±± g TŠÜÊØ}yËR^Ç•¯$%§¬£A‚HìµBx±B—•ø3Ó×v|\ž±á˜&mÜZì¥.ƒ_ÞëáÝW²y;Ÿm”óšRÊP»ÍHt]•Š…ŒJÂò¡¦Æ %ÎŒh쉗ÁšÏ:ÈÆû>WÀØ„ÛÏàptæB”¸o>Z³Jq%TgÛÁó4FŠ~y«CWâêÜaӟͽ+[>+ùű®±UúTÕ@!Ç€kÓ ÌŒJÓ0t’óE«Û¾ju"” :M” üíïÕµy?ú Ië»V·}ä'ÔW¶öƒûûí¶%`ÇxÉ÷WçþÜ@ÿ>™¤ä¹‡Wç\ÁŽ"^Œö)œX^=1Ž3uJç’þA#U d6ÿÙéI+˜ö<xGW¢¥<Üžnuù¹0aÅRö6n/»èލ, ©€ZÉPµ²®F”ÿ—Á¢|O¢†ú'þe0•èÈý2kS§ÇW$ÙqiÃOó|ú™R(Á¥]cºÈL“ X”! ™b꜃±Ò&d\jI´ŸýØÃ¹RÐa™¬I½¸é퓨=®Ì§iÄ*W›ù¬mû©^À¾»¯ø YXÞò!¥ÂXÑ@Æ©}pÇ`êü™V7JÛ$ìÍ6Ç ~Á²Ž€eöYR‚˜½Ðh³èÅÖ^€Onwñƒ·óOà–>»`Ñ%°§#T­k.´%Zˆ¼@¥`H]'ÌÔ ™˜.}ƒB€ëxD>ïcÄ0“çà%µÁ­?yÇPÄuŒ¥ÉUÆŽÐéI:M ¹²©oÆü/Pøàf‡z.SðÌxŒ‹Rã(XÒW©X鬃²¶ã#k Lj˜G±¿@»«s4ä »­÷V<,møTÈjÔìD04‚ezq⑱n\p â¿ýqZÆ«~Ïï·šuåv¡€õ®&È8VI¤’|+[>±™\)¯ã꬯—\n/ŸðÙ! S#ûÿ£ÿç~>‰à°lè+8¦ P)è¯èXß±¸éac'ž<]Íýß‹”JÝš Y ¹Ø=ªÞŠpg¥/Péäoè„LlÊc܃×5ð8·’vB²}MfkJ9–Ÿìº2íÓ$hÌ$*Õ˜“¿±¤ ƒGÞ@ba#Cï' =Ob}7@%¯£V2Q -“±EŠŽZ,©é³¸EÖé?¼æ¤èöR‘>¹Ó¥ë 6&«gß)ðÐsÿ©k¤Š9-ÆèªÝ“¨·"Ñu%ÆËº*æ´oÆHzøôžOüÛ8L¿KŽçe°Rá#—O3àèLÞZS'LTtõpýt®–º&«º4–¢º/ˆ€¯]º·â¥5"^¬lòÅ2Ù u¬¤§´¶p€¢Mü•7Ê*Ÿ9~‚UÎ÷o›·&a¨ðå×.8xiÎÂc0—ÎLÄ×N}SVQ#b\Ž_~Fû«b~¬ 0ƒ§Ÿ³-åLLTte„õíz±‘W2‘$ý`".ûOVuYÊkÄ8«ñÙÝ.V·}ÌÖ,¶KWgí¥¼CäuÛ«kÛ„æ'XÒœã¯Þ}%›JŸ÷W=DxyÁAÎÑÒ¶êX‰Ç>ï]/J=\ŸWù35 s5¶)@Ä ¬ƒãïQ÷¶Þ±´ááÒ´JžÚnœÞò7 )‡>ˆ35šK+C’piÚRŽ5’Ñõs<î'Å£JæØ6@9Ï|Ë[‹î‰µ¯üMƒyú·—]´Nià Ș “lJÑóXj¸5 Ø¤kÜ6pLÁ²’±¥óWg“傎n/BÛ•hu"ô|™jPóCj@ÄÒ“­cÌoØØ‚Kü[{¶ê&ª&ªNfÇÍ>û!.Àº¾ÄÚŽbNOé( —¶˜Õ°ÓÑó$Þÿ¢M³ãS¼h€_åPà~ü%<»` ö;îx*à*ÀGOù8.x!VÊ弦²¶@³¡Ý•Ô‹+„ñįrBVÃ7)aeÉß>¸Ù¡|FÃtÍì÷Ô¥ÂTÕD¥Øgw%,€V7J¥Ì5A° ·¯eÔÔe²úow%-LZ)8/ù|±_½¢ëq?:Ы_ßñQ-èÈØÜ"mw£é8lìÈg4LT L×L´{[“yÙRrÛ¦k&Êqpgåh``R=>Aù?/ºÛ«ãI% àØ6€eº:gãβ{"ÑöZÉÀåžü»®Ä•Þ!sŸ`\’Êg´´Õ@ï'‚ ~¡Ý°UG <ÌĹŒ)„Ñ21¦` qµaÀzR!{l‘8pÐl–ÄJTR{íÍ3º=ld4LƉ@"o;YeÑ¡íFRPÄ@9\ÍŒê­RÖ=|~·‡wnd_€!õ<Â'ñŒö÷Žï½+ðøð´q Ï ûðÈa¤jeÕ"ÓÃ’~ &H ñÍSŒ"àƒ¯:ÔìH\¿àÀ2ú«w˨™bŸrêÃuÖTáï2m[àòŒ7®f0 ø'%°¶ ç1o>UÓ¥‰G½b+n÷¦$¬1¶çq«5YÍ•t¬ïŒv¥ e¬èhÈ9&-ô|¹o¾8õµLÆâ$€bv€»q¨õ‰FÂ1‘ ÿü$îí“J$€ßð/‚9½‡«¦L³öZÃ/hµ¨ãR<ù÷<¶õ=ÎhaX8óJÊUIÿýÈϸ~ ÏP &YÙfëÞJAÇü„…©ª¡[À6 Z¬e %g¨~¨ÐîFTï舤JþÉ~˜¤A×øü:=É™®âöD³ÛÃô˜‰KÓ ŒÎg4\sP-êØn„,"B§!c±!Q1§#ëhhv"Dðþ—º8ma¬¤¿p€À_ÑP`ÀÝ»þÃg´Ïñ>‡AÛÞKwŸÒ1àÀ IkJ?àAñM{×_/»ôŽnBÙÝwŽ ˆÛ¤[ ’¼"O\úˆ©€KàÆËYÈolC,oúôÑ×]Ún)(;ŠX3 ˜ãJçD…Å~†-ê7÷‚ôxgÆLÔ[,Ä6,@ו¸¿ÊnY‡[²_/ — ‘dÛ_¥Øáu8X \³•mŽÿù1Xç±ãIJ©ýÀ×` ÑãÚê¤E»­î±“yµ¨ãÊ g™®ÏþËõvøHe˜±’Ù#U·!V¶ü¿ ¦A˜-+ýPÁ2…úÞ«9\˜²PÊip,1TˆF)¨klê¸Rmìôpͧ‡ë¬Ž%%³̇|0“D"Iˆµ 26+ –r:'às2´Ó5¦ÎX€ŽëBJÆüìó6ý­ïÕ l”ó« `qžÎSÞOÀ·Nð¹0GÿáS:Ž–6:Q¯ø#‰}m"æ²&Ì›{©fµƒ LObc ré…^„åXëËû=\µéå[}¿"qÜ—¿÷”÷3žÜ‡…ã^ÂÓK&â}œÇ ¥€ou°´éc²jì“''°Ë­EnÍfbeÖ„>m™,^ÇÐÙqs¤â߯n@»M<%¶Ý0Y5àXÌèjvŽg§»Í[uSU“»ÍðÄfs«[¬U0^f©àNO[=>òÚñ—(KÖK`~ÂD)Ç•Ý;K| çÆMT‹#ÅîøË'uŸ´˜úïøoKzGVfÇMŒ•t¬mïïÉœüï,÷°ó“?À_b¤à Ö\tN¨Æ”€ê®_pÔ•Y å‚]ã’Ì£d€j å-d5õÊ%/ÍÛØÚ ÕÊV@…ŒFnAG»íó³¶M‘–×\_byËÇ^;ÂlÜÒLĽ¢f7B1¯ƒ˜›°àú [ž¯ðÓÏÚ45f ˜{q…CWÃ3xú ÀuðÄ;ì©Pà–Þ+àäþiDg˜ø«DÀÒ†OÞê’&ãeûð ÄâeíP¶/J.LZ(æXHÀܤ©r1ø×éIÚØ ©Õ°×:<î¢ý1µµ1Te/’Üö-ç5ئÀlÍÄ­¸B:GW)n\r”®a{ë‡xLñŸÁxÒ ÀÇñÏ_Ã1 @Îêʬµí€ÍØàäï+ÜYéa»ñheÿ„vRÎé’3®ÝæÉ¶•¨Hýúë9õú•Œ²L:ÑJÿ¤‘lG×Ó5ƒ’ʺZÚh¯Å<þÝV€ž'SÎ{§'Ó¢ÝpÕe‹a›…Žfj&<_¦@$#~»^„NObeËÇ_uðß*|£(IßàȃÁyO,Ë?&^ÆÚî@€wÀ`½SÈàœ8*`Âyœ‘ˆ'[úñ'mj´£tõµßô&‘üÕc%>€Qì›Áz~¨àØBMVŒ¡ÏX*Ü]öÐs%ŠYºæÙs·MW/;ªÕ°²ÐXÉÀâº7T”¡Ý°¶à”…JÁ@µbk/€ˆõb4-V Œ·‘ˆÇé0 ‘V4lSàꜮ+SyzM£Ô(èÐ5$: x¨²¡ã5~5ƒ‹SÖ(î¼È~bÉò“Nš~œ{×.ظù ‡ž¯Kõ–A#…¥Mõ6Ë; žŒÕ>ƒ ý‘–“ ì7°¾s¼hÏÁm×J:~ãÛõÒœ­PÞÓŠ¸L¦æ'M”òšz¸æÓ^+¢Éªž'Yw¬ UߤBªyLHÅ‚’¶@²Ý¬#0?aáë%Q¤ðÑ×]Z˜²pyÖ:¯œíHø®<î†F„ÀÑ€ÇÅ%°QÑÎS8–+`;äó8Cññ×]Ü]qQÈj˜›° ‰Ä¶ÝÇDÅ„‚(ŒW L– ²}p ëIf5uBüàí<’…ÔQ!¸·âÑÇ·»47n!ë°ÌÁR}¢`²8*Mšh¯R³Ŷ¼HÙšˆ%â ‚RÌœ2tÂÅ) ãq5™üË_ ¨•tÕìHJÌ|@Îf9âäïé± c¢¡|ðܺ&&× V6•eo#_xÿIÞç§á§úGþûàò⡃RÀxYÇw^Ía{/‚®SŠ€'b Ûdõðx Ë6²!O‚aÔ׉—JA¼"‚ËS[õ†. ¤Jµº07aâ·¿STÓ5æ¨>Ëy²˜Óp}ÁV‹>Ö¶CJʼn~‚ëI4:q‹ þØi†h´CÌOì×f…@ã­k»Œ¦ýË[4^Ö‘Ïž·^€x\ h=¥í¸zÂϪø³³x: ÀE<½êÂyœ2D\úÿù²L+³6²ñcuÛOÿˆ€¹q†!ö=_âæbv„ׯfԥ鑊øùlš°tFû7;Ñ~³¸åðû?«Óo¾ST7.Úxýjù¬¦¾¸×C»+)±ïôÑ4^‰S¼-Ë`Ñ·ƒ!%ÏQÄ‹ÒË3–òC…•ÍÖ}ò|™VAº®ÄN³P± a$ûö¾‰î@$ÂpðDö‡«À¾ñÒpzdüÑß°û$ï÷ÓH¾ðgþÇîT#5=f¢ÕaM€A`‰cõoÎ>µ¿}ÿ³ÿz E© 1n,dI•j>‡'aÈS/`‡§ñ²ß|§ jω2—d·—¦-eê„»Ë>%ØJAG1ËíF€f'JËUR²(Fו¸x@&XÀtÍB½ÍJYK›>~þEýÛç­€ ¦À+̸Œ“ç¹908ñ“'|œèœÇ"FõÿøÓ6u]æü2ì½á {­ÕB_ñ/Õ1i†¬U`ùZד(æ4|çÆpÅ?¥€OïtiqÃ#hu"Ø%6JÛÜ ØýÕ° Ö]1MC#lí…Ô™”*ëuuÖÂ…I“6vCµº ëJܾ’€±¿‹”*ºî6C4:!" (©Jžˆ«ª=/¢ï½–ÕyK™&á—7;ÔìôéÛõvtâÖò°PJazÌÄ0_ð{²Nžh< ðOü]piïJ †Œ-°µbqÃK]™D\‚+I‰Fˆ~OEˆ¸{<[&kC'Û–R—rLb‡@i‘$Jù¬Àõ öPʳ 60•iâ˜xÒã±Àìžÿ÷>ŽØŽø<Î@(|t‹Kÿsã«øÅ¿“Ra~‚)ÐÉgëíë;v›!¦ÆÓ¤Å|ߺžU“#ÿ6wC||»K‰g‹/ЊY ¯\ÊÀЉ+¸€;(.Ý¡"ðÜ ]#5[3PÎk¸·âáó{=ª·Xý/±$BËxyÁIÛ«kÛÁa¬A¼Ú¦¬-Ô·^ÎbaÊTµ’އk>ˆàâ”?CMáNš ¼¼`+Ë QL­Ÿ‚×O4žF0€éK°¹É‘§e™¤²ŽÀO?ëQ£} ã` ùçô¥a®Ìذ zJ³hvBè:»C%všF±m¤Hñ¹ŒÀ•YKæ2#m>¼„b0ÌÁq¿µÍÉŠ®,ƒðãOÚôåƒ.Š9ã%…,£Y•âä3J9 ÍnÏç}óO`/…ͽ] ŽþòãM” ” ç­€3 <9_~ŠûxœœŸ¦ìþž¼>Aé)Ÿçyœ0wWñ-<}ü,x2?mÜ»ö=¶É@Œá䕈óxJÁâ7ýù‡-òC…«óÖ‘¥ûžÇÕGC'ø UÚ·âöªiÞ}%;Ôê—9ú!º®ÂXQ×úâgfl£¾²å§6¾a¤â=ðý7óê¨>~ÂH¸vÁV³ã&>½ÓÃ/ou¨·(Öû/çõTW¥Þ\ÅØlHJþKr.Ìb³bbÏ—toÕ}dÀøKó6 ÃqY^ùÿèiÜû§•Àà¿ ú8 X+队´ðÅýÞ#•Q&+&¦cOê­F€åM¨Û R@¤øA½8FE’­|×v\ž±QÊiL=>° %&Ç 5?9œmäùŠî.û”˜—õ<™*¢V :.NÙÐ[¯7c~3 fkÞ˜c!8¦sO× õÿû³=‘° ‚™f9‡[Ðsãn/÷Ž\4Λ°¸ò%óKµ¨©BÖF¹ A)нÕÓ-ζÖKó–4’ûÿ{VžÆ½š Àç`S“¿{ÜLÔk—Ü^ré´ZË•'šFh´#Ü_õD£•þ¸7þÎË9e›#û.úß½~úY+[¾˜·0Sc»àµm?Þ®ˤÔ]ÐÐ Q¤°ÛŒ¨ÞŽPÈj˜3P-öÅ…†«®ÌYêûoåÕŸ¼ß^ Ò—A)nw±PÆéwKÀõî¯zxiÞŽé/6¤¶ê‚PáÇŸ´i¼là¤y®xö"AÞ¿Œ'Ÿü0Æà4w=Á¼à?BÇA¾‹Ó·"Îã ðéÝ}üu—²ŽÀdÕ8ô™Õm×½ŸÅôd•®¸mK ˜ÓàØ‚ÿ†T;‰€›{øñ§Mx±±Ùþñ'Äô˜„m T ú>÷WS'¼{#§†‰š®§èæCÖïï¸rŸý.Å.­ë;>æ&,Œuì6 lÖû®Jñüòöõì±ç’·§Æ ueÖ¦z;ÄÎ)@ À¥i “UcØø+lËÿO%žfàøOüÓ`—³#Á€ó“&¦Æ <\÷¹æyáÏj¸JyVâ›7ÑêFé"ð­ë5QÎ S XÛÈó%.MÛÂÞ‰¥†Mp㢣 F­þÿ Ož}“†xüM ¿ð)ŽÑáQK¨—¥àHâÏsiÛðC…‡kÞ¾,qTXá•KΑBCƒè¹’~ø‹&ýÅG-êºB°O@Æb™áõRöWåa¤Ðõ$v›!ÖvÜ^r¹5¿V«Û>~y³C?þ¤-–6‚%ºFøî«9uaÊ‚¦!•äLt ºžÄý5oŸaEƘ›è¿Ð ä¹4m#S-—6|üäÓ6=*ˆå<žzüX&÷IŰУ„{üÍ't,ï‚«çßsˆØèúËÕ[&*j%#À¹¾ŒÕþºnMp…3a MVM\ša0®ò¡¦Æ†+þ1ðùó¦.ŽýÌ^+DαÈ:¬ÆWÈjøÎ+YeÇ‹å_ÝïáÛ]¦÷©£'ð|n¡B.£¥¦qRó–zýJfäõÛ®‡ô“OÛäúlÖvqÚ†mžÈ”¦Æ ÌM˜£l]ÿ¼˜~*ñ´€-ÿ¼Ú8vƽ6o£ZÔGN†¦N¸4Í=¨0âÉ»œxò—ŠQñ3ãæ‰ôOý@ÑŸÜ¢¿î¤YZÖÑ0^æe§ u„WtÂH~*~I\_bqÝǽUÜìà?ÿÓ]ñÞçm BEòF–‹êûoæÕdÅ„©Xx"Ù?ÔÉyvzRb+ ‘\˜êƒ|>¹ÝŇ·ºçÊg3^Å“U|ÀmÒUàŠáßÓqïû[8¦2xO7Ò±íÃ&=\÷0U5piš[…~ poÕEÏãÁ%¹/}ÞÁµy¦ÁCE"¼Y°´é¡ZÔÓß¹OÖvÚØ È4hŸpÙÁÏ5Ú\OB× •«ö½ùRFM™Ç—þÁ=ë;ቔ_ âÆ'$ãeÆQ9&ữfUÎN "à_up{ÙÅÒ&ü³&-è#—B¯]Ψ¬-†í‚|„'[<|,Osãqü`'±£« (æ4uý‚3ô® Á÷cE›XÙò±¾ëã4A.N[ÈZ£9ÿ éä˜Nþ‚€ÉŠÛð…õàØ 3 Û(ç¹Ó²× á2.K)4;þìÃýø“ü@ ­)ÌO˜ê[×3*©6dl‘¾t,†¤Ò‡iÓÃíå:=yh;Õ‚©ª "®XüäÓÝ[õè\ èL…Ûðþó=ž$²þ¸ 𨓮ðpáqâ]ppÏ!ØåïÓ;=/¸8msET›{,6–æä3®Î:/û&ø•-ŸÝíâæƒ Y 3ãÆÐÒ§'ñÓOÛÔî2“ c‹cŸj×—¨·Ù¨”ãË[/e0Ì~]*ÐÒF ¨’½˜x,\ÙòÑî²"íܸ…·¯eÕ¥i‹†•å÷W=úâ^ €õ«[^¬rk`~Â:¶ÍàwWgGRÿo³õ¤ïÿ¾syšã6Øàø³%àå[Úì1€IDATDŸþ~fÌÄD¬ñ¿µ`yË?5õÂ4ó¦5ѱHE@ï}Ѧ0¶N^†Z‰A2Ûõíîð~OœÜÀ±ÂHa§î;f" ” ï}Ñ¡÷¿ì¤+úãB0÷ÙtpuÖÆ+3¸8e£œ×¸2 Uê°¾àË]ì4ö»kÓ5ÅXԣݕø“÷›´±ž'g'’\î_Oº\¾œ·ð¯i³þMp;âü÷Œƒ¸µèÒ?iûÏóä¯Àæ==_bn„eðÔ k\)ÜkGØØ R v£¢Ý‹PÌiøî«YeèÇ—æÅ¿;Ë.üûì…¬6t’Üi„©,ï_}3¯†Q刀‡ë>®yÐ5ÂdÕHÍÔFEÏg•Ô0dEØï¼’Sús!0öêgŸ·ÑuY¿&’À↭H8Uå¹ê¸c}yÁV' þÝ/žŸjh²šÝ´ÓèÓ’…&­4! Ø©ØÚ PoGÈ9µ’©˜¯ Â[ײj¢2\ño}' nvɸêYÎëÈX ­ßûJ± l\™t}……iCÍ›CŸ?PXÝò)’PÌé¸~Á9Ñ¡Ð׆™®j¤(‹>y¾¢ñ² 8QF,dyÁwaÒB)ì&–ö1ý¼”Óðò‚s… àÎÓ~&žE¿ûÿW= x㊣n>èÑ ÇóXÑÀÂ÷Uš÷VÝTtç4#ˆÀ´\f¸ð°SéÖboŸE)§§8…½`¤dÂó,d5ÈX{:Œ…3ï”w³¼ˆ±¢¡òÙáðxYÇ͇=ÜYöPÉë©B`Öé¿Ì“UD@½ÆBEL­‰"—ûÊyµ’޵Ö¸½äâOÙÂßx§@–q.tFBÑ÷Àôß×Àæ\oàÉ­¸˜¡ðð¯âd’Å€ÿ.€1þþùãõ ƒ¨·#úã÷›ØkE¸>ï çì õxñ —Ý^„»+.ü ëó‰ÙÍÜ„‰7¯çäK úü^ÚÝŽÍÞJ1 yvÜB)X¥:ÿ‰X›@ÎÑ0S3”¦ §ní±¦B…@ª‹r"f¸R;Q>&­ŒVGÒ•Y{ÿ6P6õ)‚Wfl¸5~å8¡‘¸4m©jq(»@ØðÿÁ3xGžUPÿÎQ'&05fª+³}z§—‰Àšç+,oùñÄšdm'‰¤¿0iBÐð‹J@ÚÛ/fµi?S3aè„®+±]úûVvé8ÆŠ\Šê¹²Ÿ y€@!«# 9»¼6oAÓŽ/CY&©BVÃÖ^@;¦!PÌj+(tâɽ˜ÕÑqY@(¡Ä4:ºžÄTÕ€®æ'-øa?Sýøv— YMý•7rÏèÑ8¡ÀïÌÿlôpò‰< ž ÿ…§pLð·üûþ°ZÙÝÏi`á¡¿àŸð7âs9/ý?à zž¤~Фk^_çÿÀã;¹Œ†RVC×e¾ƒ¼`™ïÞÈôP!‚zýr圎½V”®*ûžš “1T˜7T!« ü÷Z}õÀ¥®'!¥‚ –€N«®Ã"©ª^¿`+Ó®ÍF []ÚÜ RÛá$YÑí\ Z7 ­ÿwƒpã’“²¸†Ä|ü„nÿÐxV @rRïaHùO×€wnä¤R$[¢}/0?aBA|чëôgè¤ÌãXBª¼D’KQ¯^Ì1‡4Éèá‹Ë3vêý¬Óf‚P"ˆˆ­!…ªE¾¼­›úè:AÅÖıùŒ!€‡k>4\_Îw]˜²T!«Q³Áó%6bþì+vK¤(Ú|FC>£¥@FC'¬,{ð‰…)¶)puÖÁÝÛQ¤ð³ÏÛTÌixí²s¾J;!Á¼ÿ,ôïhŒøÎeÿS0jß“Ÿt“gã·ü¬t Àñˆ÷}p¿_¿s>ù?ãˆ"à§Ÿµé‹{ ØKÔS_îíF€‡ëL‹{í2+„!—úñ5°Ò¹±`ãêœu"ÖxEWÕ’Ž­½Ë>µº2 ·{2R©Þ¿ç+ÔÊ:Þ­d†Ž×a¤ègŸµé£[$Y K;(çuDx¸áÁŽo(o_˪jI•ÈàÞŠ‹ý²‰ dÏAûMéúíbBÖ˜3SÚd³aaÚÅ. p’ÿƒõÿŸz<Ë à?+‘‰DVŠK×/ÍÛØÚÛ¯ªÄÎPÚÀ‡ûeŠ€ß'Ù˜LüHi†NjTï%µ»’Õ«ƒú¦A0 ýèÌuà<ÿ¿”Óñúå,¤Tð.;U¹>Óõ Y>·ÝVˆ¯šŸ4‘±Ž¦‰(T‹ÍO˜øì^/¥Êk°¸éÃó%ÆËJyfœÀäQÚjÄ žŒËà¤ÄàFדø“_4È2XWû¼p&B¨øŸxÀÿ ÀM°Mèx­%{ßðß÷êŸæ¤›”ò 3ñÏ_Æû4>w>ñ?‡P øÅWzÿ‹4‘î–¹_Ž<ŒV6}´{K@1•Ø söm‹ñLËì¾rÉ–§‘5LVuUÈ ,o´]ÑêHÜYî¡çõE’ÅÖw_˪㨂wV}|q¯/Úøƒ^ °¶ Ñ‘«¢+Ûþ±ÇU-êxçF6;·¯NOÒÏ¿èPÇ•)F!ýøßÛŽ?³0iA‚®c%}h»œüeüóLâY&kF5y4Œ—uµÓ)ŒxBêÅåPòÄž†âUÆ«j)û7%¡çÍÔLŒ— þýˆé?q¹úêA=_ALÙ(ç™z¸ºíÃ$ Ë=†Îƒ[sU"þ÷ª¡L#¶38¤~Ô"~‹Y ~ PoE*c‹cÖÐH]™³qó¡KÑÎ ›1ë Þ‘µ5LV LV˜úW‹“)û›· ÂåiJò÷Ú]‰?ùE“XPȽÓÃ⺷¯êL‡þg¬mû0uÂd•Aì“UcÔäï‚Wÿí'tûGƳN6ü}°™À1U€rž‘íŸÞébiÓG$Q.è(å9ëÚk„h´5ÌM á«hu™îâú Ž%03Æ“f½bqÝK{b@_Â’WàqOHpïÿÒ4ƒDV¶}tݶÉ/‘ Ä+€ýùàä*f5(õV$&«†¢c0 ¬ P.h´µ¦ÿHÎG)>§Hª“E\!½Ÿr_pyÖF¸è¢Þ ±Óñ‡?oÐ?÷ý2j%ýÜ3àlD2ÙÚà~ú8XSÿàgžçä{þ¤<ç n=téG4 ¼4ç ZÔÓEÎÚ¶ùIÆWµº!,“PË訴bZ+éz%ŠØå´ZÔÕäÅ¿a‘|±˜ÓðÊE†Nê'Ÿ´hm'€Œ@ß}%7²ÿÙ]žÂ…‘ÂÚŽbŽ ÆË7ö‹é)\˜²ðÚåáˆüdH¿¼Õ¡HžÎµVª¸(¼tÁRšÀ¨òÿûþè‘oú#ijN¦7üË^ÇqXT1'°±P”L¸§ä§[¦À¤Ë`àÞƒugL5ünÇ}¯s05f çhB•jR>ƒ“gò’\f‚ù¢+[+ôQÿûF†N¸2k#ŸÑЊ©‚NŒÖŸ›4qœ­¦RÜ6x륬º³äQÏ‹D\µH4ª¯FF ^ a¶âªÊDÅ€3 ]©b.NY¸éKô|ö¾þƒ÷ôOÿzéÜ3àlÅ9’þ<Ž SÕþøý&I\›³QÌñP„Š}° ¯ô Ôb‘¤D­ òtzìÔ×ì²8ÐëWØë×'cᣌ 1®K½¼`czÌÀ‡·ºøäv—Þ¼šQScÃE…6÷Búà«ã'ä„ý´Û 1^60Q1°Ýè3·˜…ðWsr”‹”L ‚G{Õ‚P¡œ×05zõïƒY>{{ÿOÏ#XS^Ã1³±RÀô˜‰Ùq_/¹§–A„ÔÖ2Œ7„àÖB­¢ãõËα£¼Œ¤õ}NZ"Ù×(å5‘DÏMÀ‰Œ7`Z"ë`o7L™˜ªšiikP.øö’‹H*Ü[ñðû?kÐßþµ"†9qÇyœÇó AÀÊV@¿ûÓu=‰ëóй~¹¾Õ`„‰¸0« àÉJ)n´{n=ìÁõeª«?VÒÑó$v[>ºÕ%AÀëW3¨45Ȇ:M$J°?x+O7l™‹ÁÐÇ1Qúà«í4†Ç‘ä–m)§³%zÅÄýU7]½rÑÁÅé¡Zü¬÷ߩٖtaÒ­Ev<ñ¹ÈXo]Ë(Sê6¤b¥ª‹ÓÖ‰&_ ^g4ÌM°k^½±_œ6c>ü±ß·j%Õ˜'»¾ sB·A˨xÒÜm…è¸Ã¿§ V†Ĉ[wЂDðFxh‚ð`Ýçw:ûÜäCÈ:eÆ$³ ft,rÍ;ÂHa¯¦€ÊÄP`6– N¶yóaü~ƒÚÝó$à<Îã,°¾Òïý´A›».NÛ©Î`0©ÿ÷åM_>èbqÃC»Çšø@ ¢>0VF’)…áÀbcs7Àü¬!þñ_ìу5?m;>J¨U„ P´²P1§ã$î±Rk;>zž„i¦ÇL˜:%À?Œþ}v·‹ou°× Y†}ÌD9?ZI6ù~ÖxûZVC4]À Àg`ÝÿgÏ+8ã¹=ì,ƒÔÛײÊ1Ov˜–Áž÷Ž%àù 7Ü}èÏz;‚ª¡g1«á” M#tz JŽM¨tDRaeÛ‡œ Lm„Z‰uÿ£uÿ÷ï (d4˜†@*v¿:pŽ>‹b }• u4 V¥"p ¡ãFØi†x°îáËû=|v·ƒåÍ>–ÀÕ’Ùq35‹iŒÄL€ûk.V·}îaÙWfùAŽ;øìnü~“ÚçIÀyœÇs÷{?«Óâ†jQÇLm¿Â^‚üÿâ~_/õàÌe÷C™º“±ª]üŽ{Á~]3œ’³MBFC9¯c¬¤cºf¡Zб¶àÓÛ=ZÝ (Œ½-p0‚PÑæ.:ajÌD>£!c‰ôÇ2t Dy¸Šë£Õe&Öw^Ébð/ŒýâËí5#Ú½‹ÌËg4ÌǾ4ÇE‚£zûzViF­þ?ðŸÊÃq‚x ÀÁøûþë`•³#/”¡¾u-«î.{Ôu屓j­d`ªÊ´•õ½àÐÊ=ÑqÞn„¨ 1Ò©|FÃe¶ëá‰Jÿ‰ØO.£!’l©y1p0„àŒT@«+qè܈KnÞˆ„È9<õ'\ÚHaÔ/ÅER¡ÝS0õ³ã,´²åC×¥¼Çé‹?Q6bjP/° M.LØ04ÅMa¨ðÙÝ.Ðßx§€Qr çqçñäC¤eÿ:-m°á×Åi{ŸÁ Ù}4: sú. Iˈ¥kœPƘ­™°-~ÿ5˜†€e0/™fZ5H }®,Ü^òh§bnÂD)¯ ¥)LƒÔ»7²q…2¤Á6-Ч*!ž#É ŒT¼òC…ZYW•‚>Rñïö’‡/îõúÿ`« ŸÑ03fb¼d¢ÕeC¸ãâÆEGM1IB¿÷ÿÜVÿÀóOÿ+à ˜©™êú‡>¼uØ -¡Ã]˜´ Å†A‹^ZªŒ0RXÚðq}ÞÆqA8amÛGpBÇAM#Œ— è‚Û c`X`›l¤À.RA¸ÿÔ‘£áÆQÆ-€ø8ˆ¸8vÞF_¹Õ°ÓaÇmˆÉ*  A1ÂØ·O!€™qšób5ÒÒ’.]§¾ös,]™€å4\˜´†š)–N)ý/ŸÑpyÆN­%“ãµL‘¾¬ÇF,uLàj ·8>È‘’_P]ë«zyD¯.áùŒ]#øŠÍ-x€-‘•â$ ” _ÞïAJÐo}§pN<óx!XÙèwR§ízˆË3vªò©3Ÿ6v|\»àÚ1‡¼Ì¾ †.RÌÒXIœ+÷ˆÃX®Ü <_"’ µ’Ûht",®{ðCy ÚÀeòkóL_¾·êâÃ[!Õʾýr7.:Ê6O&!|0E„²ŽPkÛB}ðUWlÕŸã1WÇëDU„K3¦Æ0âvÊn€Œ­áÆB&­$ȸëú2½F¶!pqÊÆ½U7¦JöÇÛ7®dÔxYµúÀÞëÏóY: ÀCÿ7ÿ{°|葺SUC½v9C?þ´•þ{Â÷/åtDsÛë­0õ”¦§&#.o)JevˆxBV¿öz‹ë>«÷ÆÛ"`ßÊþ¨'—ÑÏxZ¿ó[š|‡T :ªÅÁƒˆ“ƒu„•2—u¼¼à có~5U=_ Â_ä(® èÚþäD;ù!÷×¶êêíef ÒeL1 B¾ÞJ_=è!ŒýÍïQÉkçŠçqO)ˆ€åÍ¿ó“:íµB\™µQ‹)ω’éÊ–‡jÁHÔªEúI-ÉX%e‚PðžÈk%^õ/mxجéÂ)1ÊØìwEŒ[R\ B"Œxü²MH²Ãêü¬A·]úΫ95?aª¸â¼Ð"57a"ŸÑä/ovèãÛ]ju£4 HÇi\š±Q+¶úÝkF¸½ä+¥"M"ˆØÿ Ùw>,æ4¼z)ƒž/ ~(aê¤Þa‘_±Ÿøÿ>ïçé,$[ÿ= ñ Þ|)£n-öhk/„—Ý'+Ü÷w.ÍO°úŸm%€NW½W ¥Ž—J%&*:6wCFÃÆe.¾ñýÓ’Kã–ÁG3î›'e§(:zî6t6Ö â︾LÜäx…`ó#M#V5K¼µ'ÊFšTX†Àµy‘äžX)—³ËJ˰L–ޤB(tÝ9[ÀÔ »Í{Í弎+³Ìò.Mx#l¹oærðÝ"jóßó8óxĸ½äÒý¼‰v/ÂKsÎ>ª_Ò6¼2ã ‹û¸Jšà‰’ÅP»'qÕEÏc@$Š9 µû¦ô&IÄ‹¬Cƒ(~ Ðó"Ø&³¢±H·]¬lùôÚ• ¾u=ûØ"B¥¼†ßøVA]³ñó/:¸³ìRÒN•’Kÿß~9«køê?ýäÓ}v·ÓèϦÁ-]cq6Û0â p¿ÊÀ /"àòŒ5J1•ôü_ì<ëçç`œ•`ì+þ&ØÄäÈ*@%¯©¿òF_Üë‘mŠXr—RÅ¥KÓ€C 龌7ŒV·LU :¼–T@о¼ß‹Ë@*1Úwt§-Œ—zžÄ×KìlEû=¸}`²b`¬h Œ¬yhtÂÔO`P2øÕËôážÇX/`³ ”Ó¡k”–£4`›qF6YÏÕLLV ô<™J~ŠØxÀ±5h‚ʼnvš!J3µ¾j³ã ü€©DDÀýUÿø/÷è·Þ-b~òÜ@è<ÎãIóÒ{ô£šäòÐäŸD1§¥Ÿ¸"°Û ÑéEèzWfl”ó:z.ã’üÁ2~tLÏb‘`4¡ŒI…ž¯PÇ’d{D,‘þÞçmº¿êáÝY\_p`›ôHãERvŸŸ4ÕDÅÀWzøÅ—¬ï¤À`¼KÓÖÐm î­0[*y±tpJªÊZÜ ¶ ÂÅé¾ÐR»a¬¤c¼¢ªj€?ã=÷ÐþË?¨<ïcHâØÔä†$„å¼NRRŒzçi-éÓ¡BוhÇúÕ{mV‚ÚŒYÉŸ‹›>2¶ÀìøñÊNBðJý‹û=ª·Yg?ˆTÊ… #6 š· k„µ[uÚì+øÓþM0]1ŸÑÐìJ¬lù©+_’0$‰ÆW2j~Âú<)üü‹6Ýzè²ù…%°±âު˫øVˆvËûI‰_¿¼¦NÈX1§ ÃŽõ´ØÕP1ž@*T :q{À,“AC¥Xc¼ç±jX«#±¸áS1§a¬xVòËó83Øæøà«ýèƒ&ù¡Â•Y;µæüx±Õ¸¡qk±‡ÝÝØío²jÂ46÷B° lƒ+‰Ì[ßÜ àQÈ9Ó¤#`»™($UÈJÙVÛ1Xïà±¶»wW=ÚªT+È:âԲk„É1—glh‘FÀÞ* Ÿ=ž³—(þýñ/´ÓˆÒÅÒÁqH@Ž\Ùu}ד(åôÔ`mnÂTµ’>Šö×ð¯øüÉ?-pÍž÷ Ä€ÿ38 Èà˜$À4HÍŒhw%yÄê¶z+DÜÂx’NžK…Ã[R>¿Û£cÑëJ“UC½{#‡þ¢qH’—ˆå%¹àͽàxAƒýÚVý¿× d$̆…)kdR„Šš±æ€©óƒîù—;y€MƒðÊÅ ò ›ñ `›„Œ£Á2†ƒ±|¥ä2¿çË}€Â[‹=ÌŒ±~‹/q&ü`ÍCדØm†ø½ŸÖÉ Šxõ’£ŠáyœÇyœ<ˆ•þÞçmüì³6I©¸Ÿ]:,òÓhGØØ ÐêD¸0i!c ´{QJ/N@Åf ù'«ÿF[RÆÒF‹·»>¯^.*]j5'løw¸§?«§g-èøwüìs~$POÀxEWvDò”Í?¬µ’z+"×W°£Ÿ^±þÚ·òhv#,møi‰h¼bÂ6™z¸¹œH[ÓÕ‚UtŽ6â2›ÀW3Jþ@ì4C´c•+Öà À‰.B¼ï0ÐðC…ɪ„ejØiØÜ ‘wòY¦%J[35“æÆF>£á¥9÷×\líp=‰Ü¢V'R¿ñ­es­€ó8QAlì…ôÇ?oÐý5cEs&²1ËÇõ¹ÍYÊ3Cg» Ý‹påÐ4YŽ¼Ù SÛqR@žŒ˜S_+ë)3ÀÔ ã¦L•µn\²¹r Ù§dc7ÄÆn€ T$UâcÂÓ‡T}Ü@*Ì£˜YµEZÚ?ôîSÖìD©*áÝe—>ºÕÁw^ÍanüñØÃ"Œ×Ù¿`vÜLÝOO»‹Ó&&«ÆIƶ¿à½'û´<^œµ~¶ þï÷¥€JQW¯\rðãOZ§šþcûIL™èº×|\³†ÊW‹ºú­ïñ»?©ÓÚv€\F¤ýífÀ¦?4z¿Y›Ew¤â Dt„Z WæÆGƒè€•M~¨PÌ1&BÆÙýiƒË„ÜBaMF;D½ÅxˆŒ%puÎa;aÉ€EÓØÿ’qïpyÆŽUÊH|ôu—Z]‰ßøVþ¤/ÊyœÇ¯lÜ^òè‡4©Þ qqÊÆdÕHÁÀÝl\)è+êð• z:ÅX–˜›ªš˜­,“ ¥ ]'\š±!ˆs„¯è¨ud,M@®¤xiž€ZÝkÛm×Yåovœ1J©}­ƒ T©"a>£áâ´ p… d‹a)™¢J/h´#dª¹Œ†Ïîv±´éÓW™-PÎ?YN4<|r§KSUÕ‚bˆÍ˜Õt’ˆÛÄxûZvT’"À¾7ÿ>€“iË?£8‹ @¦Hü-Wq̼}-ƒ»+.V·N~Ót0+fõ<‰¿ü¸I»ˆù óØr“RÀLÍPÿÔ¯•ðï5ÈÐ Ž)à*5ε" R`ÀˆëKÔ[ááÒ¿.ÏZx÷•ÜHÅ*àz’®û¤¤‚m h¢/à‘loßöXÜÐÍîÅÕMCšP0Ê•¹Õ„ ‹›r¶@)¯Ã2Å>M]c„,ÀIÀ4ÁF;¤¿ñN—g-5LÝð<ÎãW-ˆÏóÉí.þâ£I\¿à¤«l…xźÁÚcEƒWÐÌOZ°MJÅpTÜ£Ÿ(© É  Š«Sc†š¬l¹Nn|ÇÐò„JyM峪ÅP=XóE«Á\NLAsýÝ0MÙ˜7Sz´ŠûšRöezPµLŽ­j ÞŽðË›z¸îãëY\»`?‘VbRúÿÙçmZß µ5sfk&ZhŸÜ°0tÂw^ɪÐþBðœvëñ#.;æ³:¼@¥@¤NOâÞªGDœ9kÚ){7çqßÀˆ©qôg¶ðÓOÛd™/Í9(æö¯Ïˆyí“U£ÏØÑx1Âb]}¯Ž¡ÑŽ:v›¬âXÅœ†+s–š¬ÊÐèÔ‰x"Œ“±¾^réÎrŸqÔêÆ,¬n„ž/a›‚Øv<g ‘pèc”‹Ñf ±É±’Œ%PoEÔîIÊÚ–%ÛÅî—7;ôÉ.…'V•{¢Hv8òûJ׿üúùQTmà'þ ÝÇ~XžpœÕ`·À_0´À½fH»áÐU¸—à/Ï0Èm¯âá:gÓ»­†N˜›´Fù2¶@5.ÿß|èR³³¿uü®”Ó15fDØi„ˆb‘Šœ£¡ÕðÒ¼ßüvAFDg}'$]š¨ðäŸðó«µ²ñ?µ’‘Še //8øþ›yY+°MAŬŽB–AŠ"æîŠØDcE”ózZ=Iè‘]/B9Ç•€D4Ih\r,fcš /) 7|êô$Æ+eFIŸÇy|ƒƒXÝ è~Ö /î÷¨˜ÓquÖA.¶» ]§¸ÒǃJ*´º¶›!¶ê‚P!çhðC…¯{XÝö±Ó ±Û ÑîE˜­Y¸qÑ–§MV}Ìpb ôâºG+Û:=.ãïµxŸv„bŽ[ Û·]lîØnp²Ðì°oJ§Ç¢CIå2QMD‹lSÀ1El_Q’úéDÀÆn@òA“z®Š™¶ÁX§Œ%ÐêÊ#Y I$,­ßþNÍ…†ì<éÿë>xâψ³œtÀJI€c’=æ¢ß]ñÈõwàÓpqÊF)Ï}³»«î>ŠÌæ^H•‚>R2’·E(tT‹:\_Q§àœmr6›Ïh(f5T‹&+&&+Ì¿…âÉw²b`¼b`ºfâ«õöµ¬Êgµ]1û«¾ˆbó !hŸQ‚ñKØ"þL’¬’`Ôÿ츩&«ÊQ¢­ gáµ²‰‰²ZÉD)¯¥î€ºÆŒMpv¯ B1§CJ…¥Mž¯RÕ¬b^G1«#¹×EÀÚv@k;U :Š9í±ø¿çq/Z±kç÷zôï5he+@µ¨ãêœ ç¿ùHr%Í TJ廿æá~¬÷ÑìD¨t³:®Är¬/’Ä”…ï¿•WOÒÃ;ëL™XÝö©Ý•û¸ó2Ö (dÙ%u}7€ç«´*ØêFi°Ý°¹ÀõªD„Õmë;>zÜ*šˆöZ!i‚)Ìâå€H*ú‹[toÅï·*'¥¼žb)öZ!Ž«*ß}5§^»œ5Z 0žíÿnœ¹8Ë Àâ@WÀ Ç^ìĆ÷áºwä“­À6·³5û±¥d7÷ß°±Ð̘‰BNè °ÞþÕ9ó“&&Ê ÔŠñŠ»d Z4PÊëÈ9ŒÖMN@hÓ¨u\žµäiËáR‚~úY›>»Û¥­zˆízˆR–÷±¼åáުˆ »‰¿`v”þlîXß 07aªÄ ¬”ÓTÏ“äúÜ£ B•ènÈ͋4Á•Ó+ò9ÖJFœ‘óï{¾ÄÃu^ PȲ˜m ”ó: 9Áa¤ÐhG¸·ê‘¦jeƒôó–Àyü ³€$ýøãýùÇ-êù“§mØÆáÉ«àþª‡•m0Ëgx’¸î"Œ[t†N˜©q‹q»b§Áó ðÊEGýöw‹ªZ©R÷H‘Ë”󺺿æ“7°K°•"· w›a*/|Pdàq:ˆT:w\‰Å ¦ïÔCl7øg«ÎîÅu¦ ÚQ>£Ñ¨D€ØiDXZȱØhMIJë^ÀBf¥¼ÇJXÑ¡m(ÌM˜øÍoØ…uÈm°àÿy&ã¬'€û~@C|ªEÖ¶ÚmE‡ªŒ%piÆmVùÅ4l bîê^+¢ùIK9ÖÉÒJM#” :¦ÇL5^6T!«A×Ùƒ ’Š‚PAkJsK©ZY§Ë3–œ©™*㜮›EÜ[õèOÙ¤f'BÏ“ ø©˜‚°¼ési>¦õù±¥¥ë3Ï·V2`ê„¥MŽ-Ôk—3iÉÍ2yÕ¯k„NOÒå–6=4ÚIÉŽWï¶%Ò _Œ2¶ þ7nµh(æØZXÓXqàªB!«!—ÑØ¨(Pð|…ë>Õ[—Y;ü<Îã›ɸ´´éã÷Ö_>èQ!«ãÒ´éš3ÖñðCû°ÎÇí%æøºÀü„C§´”ðæX³5 B6vƒøó„w^Î᯻JÖ>­(çuH,®{´_ •P+0t¶ o÷äÐV­”,XTÊé04Ân‹ÅÒ’óŒ¢d<“hv"¬lùtgÙ£®'©RàÉû¸BE÷V|圎J1µ’‘*ú™:W[ÄÔÄýˆHÛø/½[P35sðOøßá9ÛýŽŠ³ž,ž`øë4 B>«áî²Gƒêz “ªE.Aß[qÑqe @Ég5”ó\Ο©YÈX¢H¡\Ðè4=&"ž@ 9 c%µo³ZÒ1=f`ºf`ªªc~’gÀ$ã4ûØkEô‡ï5h§îÃLT H©Ò2Û¡,›˜¢7Y1!â ÿ¯¾™Wå‚¶/«Ò4B)¯!ŸÑÔÆn@Ë[A*¯ÜèDhõ"ŒùeÙÚ ðpÝKK“œñ ÁIB.£Ù§s,rÞ@*ô\Ælìx¸îS–¥FGfóçq/R$ª~¿¼Ù¡?úyS4»¦,\˜´Ëh`AŸÅ VÓ,fyµþ0^@­¨c²j"Œ®{è ¼çÅœŽñ²H*,où‚ðƒ·òê×_ÏÁ6Ÿ¾þP-è´²P=^„%º$åãü@a·5¼žH¡3X™«…­ÎþEÝÁ±Í –7},®û”Ïhª”×H;˜÷ñ×=úò~ü@!Rœœ$†?¬W ¥ø ]#²:l‹MÓÏ™7®fÔ;/çÔˆž¥ÓÙÿuí§{å/^„¾ð.€‹Ò (åtø¡ÂÒ†O‰Me­d`~‚ B×c?çñ²‰™š‰éš‰‰ —íKyY›ó^ ¨Ó“”ËhÊ2N_–¦Ø4‰U¹[¤SBЩ'þd›=OÒÑ¢;Ëî¾m”â¦ç)¬mû‡z¾jŽ%0QálüÆEG óB`*Ž /P´Óà~XR1)åøZµz2­8ìÄî¹ Û…¡‚ë àœ³®Å˜ØH`\ýU\_¢Vê{œÇy¼ÈA¬ïô'¿hÒ_u)ë¼4k£R0ú~&‘ÂýuÛsãK ëJlÕdmnŸMVÍÔ^JY •¢±¢Ž±¢Á \p_þ{¯æÔ›W3J'lé{–Á4Ä;+^ª¬–ø$é;p6á¨ãˆ"Ùeãjàn3N‰Ž¼Ù•ØÜ É6el¡ÀsüûÃ÷´¶`§™´‚„Ø‹åÎþxeê„bNCµÀ­Î‹ÓÞ¹‘ňêp¢÷ÿ?ðËǼ¤O=^”  ` <Ö'@ ZÔ±ÛŒ ˆ(¡ü±F¾ipi)ŸÕ` š–Alx•»Ó ±±ëãÁš‡¥ ãer™Ñ˜€§D€ç+ú‹Ûôñ×CfC“U…Œ†Ž'±¾ëû²8¶ÀDÅÄ̸¡.NYjT"âØ§-dmͽ¼‹ŽJÅ/t¼¿0â—§Rà‰ýΊ‹õW²ƒÖ =i @±=©RLÉYÙòiy3 |VC)¯Ÿ äsçqV"áö|»Gøó­lù˜·pyÚ>ô.°v>0=f¢3g4P+2·ZÔSO"Û]Ê3è/Ÿep®R@.£©7_Êà¤y¢5’Ô·ºm솴¶ÐænˆÕ퀂PQÆ'r$å[£{+^ LpÕ¢M0¸nXમSŒ"ÔÛ£¿“œ‹çsËÕ em ›#þQ‹¬ù)þQJ®¸ô\®lîµKµÝÑè„° {@]× ×lU-Ždi ÿ €ÿ#¸…}¦ãEIÆL€Í‚޽¶Éóñ"%¬¤ô×LaH±ÂH¡Ù‘ÛË›>V¶x²ß¬Øm†huYõÉ÷c$…ÀXÑD@P[¹Ý=ò¥6u.Õac/`@:Zp¬¨ã×^Ï!—9ýdZÊk¸4m)Mü”Ëh©VÅ G+$É9ÜÄ’|)Jy `s—ÕÔ™auX_!ck/¡Âò–OKÙ¦@%¯Ñ¹xÐyœåô\I~Ý¥?z¿A‹ë>œXF»«÷ ¥úŒAüN­lXßñ±¶ËŒ¥ŒÍ‚9õvˆ›{)³g»¢ëI¼¼`ãå[e3bôäO¬Ëñ‹/;ôÓÏÚâÁšG{Í~¨Rd|¢(êù<Žæ³'IÂ=Oau; A)ö )å™c„j¨1À—(’ Y›éÔBvcí”Q‘`òކR^ƒ¦þâãmî…'b?&IëKhʼn„†×¯8£€áÀð?ð‡õ=Ãx‘¨ƒA¿ ÀöÁ¬£Q«+i»âö²‹F›ðHîGþ¤¢$‘ôº/LZ øâ~¬ùT)èÈ9§ð&’ŠÅ½Uþà½ÝYÞOo”ëÌØ3µX`¨¤<á¬Ãt!Ö#`€Ð»7²jvüd¥Á£Â1Š9‚”˜²,:4Qf<ÅDÙ€mrËÄÔ 9îOs¬Qž±(™¶‰½Vˆ¬Í*`¬M®¡\0`ЛÝ÷–]ª·#*ç9³š×ÿ<Îã´‘$ÝÖ<úß7é£[RŠ05f¤vÙÙH*¬mXÞô°Uc.Ân+ÂÝåZ] ×WlÀ5fB× ë;¼xI¤t…Þ¸šÁ»7rʶFƒýˆ€­zHôó†øàf‡v[Z]V ì¸Õ"³„nxü~6#¬íøØÚ ifÜË!@‘ A•‚Žj'ÐD‘”ˆÐˆ‘ýé±?H~W-0°ÝãŠÇIÞ{)ùÚÚ¦ z3¢­½ZÝÓWã{.cÆn\´ÕdÕ•X ÿÀÿœ¼q½FÅ?3þ% ©X&©¹ ÞêëìÁÙwa4Šñ„®Ë`·ž'±²åÓÛײxå’ƒ|†Õ´žÂ6qÆò|Ew–=ú“_4Po…i)-±îM„xlK ’×!bþÝ츅™š!úŸKÎ{²ª««óö#©(Ü_ñhs/¤®+a”j„’A±‰ØÐ ¾Bq`àKDŠ”òY ¯\Ì Ó‹R°äZš:avœ…‡7<ì4BxÂÇ_w±¸îÓ·_Îâµ+²è~çñ¤"yg÷Z>øªCŸÜî’”ü.Ž—¹5— á»ñ8”¬$W·}<\÷I`ªÊ’·Q¤°±Ë@Þ$©Èg4X±^£Ó§þ™ữæÔ÷^Í)ˤ­üW·üþÏXÙòS°$"© ¥J}º®D×åe÷n3ÄxÅÀ_y=7úš ¯eA'ǛЯ/dÐê†èy ]—©Ì~¨Eû+±ì˜Å‚j:vN"ùN„”º¬—Xpm« çŸÀ²} ¼Pa¬¨«ù‰‘ÆlÀCÿkœqÔÿÁx̯ü€ë8Æ,H) RÐÕ•Y k;>f¢àÕ?—”Öw}¸>¿¼Ûõ?üEƒ¾¼ßÃW2¸2g¡Õ”4Ó8e$/zÇ•´×а¹ÒÒ†‹Ev2–H•MS@öyrXêxp’U1§¸˜Õ0?iB£G;>AÀʦO¿÷³:%BWfmŒ— ´½w–ÙÞš/MVLs,KÚêDÐ4‚&ؓ܌52–HyÿGÝŸÄ^xÕáöM)ì6ùú½è⻯fqiÆVºöä’°ó8“†  ëIúò¾‹_|Ù¦Ýf„Z)¦Û"%ƒ!ÓÔÚ½—gì˜Îby“'zC#Œ— hØmE¨·ú«U"®DŠX§$™³ŽÀ÷ßÌ«·®e”®žü`k/¤¾êÐê¶ä‚HÆ<€ƒŸ‘ ¸½äÒ·®g`›ÇËxŒ¼¹Øƒ®²ŽÇd”¿÷9G ï˜Pà^]/‚ë+öðdœ0(;©b:¶†ö(ü@‘Öw”c)âñ²ÅxL=I(ÌŒ›øÞk9èúÐëKÿ6^ÔÿÁxø À¿àßà`+àY,oú¸»â¸ `è„©13€lîõ œåMkÛ>U¿2peÖ¢+s¶/ëʱÑ1þ‰Dï`E v/Âæ^ˆÅuŸ¼ŠÎ9^½˜‰•ª¾¿¤Qì¿xÅÝõÍêù®/„ü{Ëø[ß+ªÌc®–ƒXP(ˆí®D­Ä‡Ôódúïˆo† JÅG®{è¸Qª(X-ê¸0É–Á]WB¦n†ý„&¹^ºÖ7Qz°æÁõ-}ÍÃúN@×/Øôöõ¬š3Ù7ü<Îã4A„¡¢;k>Þÿ¢MÖ=8–†kóÛñŠþb ’ +[>6÷\˜äÄ Š€z+â2(m×IņYìŠÇ=x]#ä2œØ·ºQj\ó›ïÔõ ì¸9JŒ>” «[-oÔóŽÿp²h à~hu¢ôø†ís«bm;Ø'Anèlžè±´{Q*»k™Ûä©HV HÉ=x~×UZí¨ttzѾî°{Ôh‡Øi†Üš¬Øn0#iÔ4T*þê9UÎkjDÕü€ÿðÉ>eÏ&^ÔþS0 ð_Œÿ~Øí–­%ÕÞÎc§R½=:{T`*a)§CJ`m‡ûê¿–$›{Ìøèë.UŠ:MW \š±0^1 k¤"©(™ØNnÂFèô"4;’í~À¨øäø°[*žJµÀ]Ÿûâ]is/ÍÙp,v¼·êö5¨À зÞΪ¹Ñ%¬‘á°W8Bêkg'Â?–A_BÌíBS'äV7‚Rœ@a€JÁ@)ÇŠ€w–]h‹qLUM¦&×9þ3)§®ïøØk÷owqoգׯ8x륬*´ôÞŸÇy<ÉHJù«[}p³C7öà &¬}´±$”âñd¢b¤þDÀì¸ "3Þnߣc²ÊRâ,ˆÃïTò½|FÃÛײxýŠs¢wš¸¢÷¿h£ÝU”¥:ª’åŒz^j0‚Hñ‚)þl’…Wï*W¬yðÛ$ä2{¨8¬X15i ÚOU¹%ÛqÙm0 K" ¬íø(Çò¾ãeÖFW<UWfíQ“Rúÿßh<êsõ<ãENzþ·Þp8~Õ=S3Õ¯½žÃ¿ß¤Á~óQaé„骗ãBl׃¡còÐõ<‰¥ ë;‚´µÁõ%µ{ŠY¦AiV„*¥«$ÊWPŒ¦'—ùü‰ä¥ëËôóƒT–ŒÍˆ]©€®ËeäR ðò‚ƒo_ÏâqWƉ¸ˆ®\Ÿ7”¼x‰¢"z2­)^Ù÷< ËÐPÈêlŒ¾ïÂÖ^€b–BlS`·Å¬Œž'ñòv¬Öq#8Û²rŽ×g”­:«6;~òi›n>téÍ«õêe…¬öDñçñ«I‹nk/¤¾îâó{]ju%l“Wµ“/>kDü~º–‚v9AP}S®¤ŸÛïMKÞcÚ7öÌO˜¸2g©¬s2°Ÿë+úÙgmúðV׿}faG’—à‡RA°þGÆ>~õO4;’Ö¶ƒ#ó„vŒ÷1 BÆhv¸>,ÌÙpÇ)À6ë”(öÍÔÌ”U”´Dšx¼9˜´º¶¦ÇLL”Ml×á4D¥€Ë³,ø3bÜLPÿÿ6€÷ŸÎ“÷ôãENæ\þ›þ¯Ò ¯_É`e+À'·»C³Øñ2[ë†ñê? P«l=îkçBFCÎÖúyY=ô’²|^ Ñõ$<Ÿ¹¼‚(µ*Þª3m1=þ2˜ÉþsŽC#ȸ"0xlãß3/mëdýÁQaüb¶»¼×—ð™RÿfBrŒR±Ui1§!ëdm‘—(ðÄîùvœ™÷¼þv7öÌMXÐ56Ùk†˜¨˜˜c1‘ŒÅšèãe[{Öw¸¾Äv=Ä>hÒ1>ãå‹O¨y¿:‘L€;>½ÓÃgw»ÔìDÈ9.NY¨tdíHÚ­°M¶ëI²ìq!°4 í °ðÏDÅ€ç+Ü]qá‡2ÖÇèüäZYW—f,eŸì×s%î,û„Àõ ™ÔaЉM¹’Õsxxçü—X=¼o`FÀ¥ikdÿÿẇFç°5{²(躒ñU9›»Á¾;Šz1§Bã#[Ãåi–L–±€»™³&*ˆKín„V¯_!BVG­äYÖwjÌ@g9:ò*ÅtÅï¿UP9Gœ¤ôÿ;þïÏèq|*ñ¢'ðü€5þûáVÓ õƒ·òj«ÐêVp$'Ô±&ª&ƒt<ñ N¸IOË4l“ûv›ËU‰‰ÄÁÁÀm,;®L¯IÏœQ·}·B]£Ø%¯ïä5,l“u÷»Ìdߎ%ðƒ·òªV~Bî_ñJ?#š†A F9¯CÓ¶Áæ?‰üo.^-dm ¯\ÊÚ¬©óïke¥<¯’¢ÊˆFÀLÍ„ex ˆ”rzzƒmS`nÂBµd`5S«6vôÙ½Þ¼šÁµy¹óDà;nê­FÖ¸X󰹤n¤Y›Û‰Y‡el_®¡”Óö-*’ªŠë»©êhrü¯_Éà•KΨëL`iú À'Ïðñ|*ñMH– þ_øT1„xuÎVß}%‡?û°IÉ˼Œãe÷L]àâ´Îf܃NÐø Iªß‡j÷"Œ Œ•ôÐŽ'òÁÉþ¨0uv2T` ÜQ8€WáŽÍßéºQ:A^™µñWNÞ÷BuˆòsTTKú>Ùßdû¬«Í ÀHÆlˆ9Å¥—?;ÿöþ<ÈÖ4ÍÂ~Ïûíg_òä¾Ý­êÖÖU½¯3=ûh¤Áƶ±Û8 &L „@0–%aÀ6Œ‡mlHb¤Q·FH£é™éêé­ºk½kîÛÉ<û9ßþúç}¿<™73Ïɪê™êª|"ªªûÞÌs¾õ}Ÿå·ŒR4;QÖõH%ƒg«JyaÄà!ÍCDg<âDfáç錺;3SfÊÏÎQˆãn„0bá§í£{ÇúÁƒ!^¹ãáþš‡JѸ²š¹‰ONâttáÍÇ#¼õtD­^‚¼+poÙÃL…%aÇ“Ð8‘Ø:pÔ‰±:çdùöQˆ¡ŸB çª5…X´Ý;åð³…¹Ó€â9Ûm,ç üÌ«…t}ÁžêR úñ£´M8ëâ'´ú¬Åo™„ýfˆf;bzž#24ˤLéOJNØŸ_õD)j%¯ÞË Œy}çíAFÆ¥?Ç»9—ÍÀN&¨jÇ R´û j\Åï‡êý–øƒã‚4Uz\ÍUcJý¾×J&<7‡Þ€¯{w`¶jág^-Hk2åü?Ô??õñqIà7üŸü9àÒgà³/äqØŠðÆ£ Áûò¬ GÝü²šQi0ަÝF£í)û£CÿtŽæ©¹4À¢à Å4ÊÀƒ]¾‰v?Έ«~ǵEÖÚŒ8“­—M|ýÓÅ©@Boþ»G–fyüpUèã98‰²F­Ä.„ýQ‚÷¶FÙ<1U@');K.ò®T2ê<]P£›à°¡;H²„©3ðâºÏaoîýŽÍžÝŠ…ráY“¦œê,ÌXèô“Lò9Š%öŽ#œDôý÷†xaÝ£ûk®œ­Z™ŽÀM.ðÉ ˜‡‘¤í£?~<¢‡[ºÃ$SÞ[jØÙìüimÉN£s5ûÔNò(¯®îšû®«ÌzÙÊÖ æ÷sÒ‹„§_Ш˜ø¥/”åÝegªs‘¼ùÓ7_ï`8Ö=Ìþ;ö³a$Ñî'§À;EÑó‘áª%.2f<·êHÛ¢K×­€¸aRD±DwÀÉU)gdcÏI‘¦@³a¦lfǹ=ÓuŒÆõ† N¢ìÜŠžrÁD)ÏJ¤y•üÌV-Ü_we©`LZ7 ÀwÀ¸3ÿ}?|¡ø8% €lüÇqÙ(€k“üÙO',i«³D ¥¶'q*11_U+RéQûc›433³Ám¶£‰›¸oÿÓ¬u8)tVÅ ´-Â×^-Èņ5uë÷(¢£vLóuKšÆÕûóý<Ø!Q•¡Ü…àï|ö/%—¤’磎-%É™‰¾˜[\/™èIvF¬Á°6ç ”çÅâ¨Ä¿wÍC1g Ž%ÛÜÔ¬‚‚Ç3Ãùš…¾ê>wbÅ ˆÑüAßo@w—\zé¶'—6<‡õ¢nºßÐÏg˜Ò“½o>Ñæ~€0–È9K3vFôì"¢ß¶¶uŠîg;WîÀY- AÀ|ÍÆ|íÔ”,•2sðs,60óƒ•"sü—¦|ãDÒæ~Ho>Ùü/ yf™¤IÈL ®Ð‹jcvl’·—li[—WÅ ÝO¨ÙJ¨àèÊäTÑï¦Aš2?¶f±¿+Й‚žMÄãƒÞ0A­h¢Q±ÐlǬ…rÉ=´~I‚N?Áîqˆùš;K.ÀZÜ]qå\m*—¿#ÿ¸ãü±ˆSÇàÀ}·qÅ( ^6å/~¾„wžú*äk¤xýaŠî0†¯$*ÇçDÀ³b>¶I˜)[túŒBVtˆgm|:ýäL…|YqÒÂÆ)’Dâ3÷óòåÛÞT‹Ø: é»ï(N€[‹6\g2`°3˜¶¤~P¿{Ž%`tf< c0°È2DØ&§tA0ê¿ÓO²¬~û(D<ö9‡­ / 3jܡѽޒ à XáÉ^Û"¬Í;¨øš ÁžÞ¥¼…:»¶#f_ YGàí-ÎØxñ–‡ÛK*VvœFvô&>ú¡«Ä8ŽÚ½·åãÝ ŸŽÚ1,ƒÛãìñad@^à´+¤_ev¥‹3]ÙªÛ"D‘ÄþIˆ$áQ™ â‚À™¨ ˆA­S¤?•ˆ14³UÖŸ½lËR~b%šEK´zÓ­ÊYpü¤Æ®‘þ<)ùº‰µ[æ&ˆþH®#äs«U“[ŽZ,ÀÓ&¢³svÐ&£®-PÎ›è ¦Óéc‰ãc2JÊy¨}Õý×÷ó¨¡^6Q+™ª‹iÈùÚÄd‹Äþ]{º;óÓ·`9ƬXÀI@µhÈÕ9wJR`c/ÀþIøì†?¡_-òâ§¼a%Édïjý»Ú9oRûœvh)q€7ß/¾TÀç^ÈM’¬ÌÎå¨Óßþ½œðÌì /æÐ¨˜W¶$Xº×±¥&¦õ ´Ú×ù…E»j‚Åœ‘µJÏwHF@ëŠ`¾Æ•Öplf@µ¢‰×sJiðìuª—-xÊû[Ó3@¡ú¾œ#°¾à Qµ°{Ä,Úñìñn€ý€ªEw–z~Í• 36\›n@ƒ?¥¡å¹£”6öC¼»1¢§{,É[ð ¬Í9¨—M¸¶ÈæÃd]¼8fx<F¶}FêK`¡fÁ NÝ9 ±ydeÞhT”ëe+Ä“½€…ÀϽ˜çï‚Ðñæw{ÑÁeG:M¢Ÿ ÏòÖ¢·ŸŽè‚}ýz¡:{ wWœIóð,‹°Ø°äÂŒ%Ÿ[uhHtû š˜N”Íz7FßO+t~˜Â³*;MbìÏ„ Ž»1ê)òž@£l¢£ÖÌi#ŠyéÚ•¢Wîz0&K‰€¿î0¬V‚cÿ/Ÿð'qf,9 RúÑ£Ž®Ñº×aŽéx·ú ÚýÉ©Žñö$Ïè\o’zŽ¥YyOÀs—÷^¼å¦W tdß %þá{ÙüŒA4Søl‚Ç®#²Ÿg­íÓhâ(fÕÃhÉÆ& ÔaŽ/Ÿ$Ï#o/ºg®}–®æ/‹‚k<»ŽÍöõ žÀeµRŒ£v„þˆ•ãD¢Ù‰ÑìÄøáÃ!-ÎØ¸»ìàö’ƒzÉä7ÉÀG9ô3ã‡'=ÜðxǧÃ'{ÏÀÝ%3v½oÕ@o”àéKWß]ö`žQ?ÝpÔæwÞXžu`¬é¿žé 6ªV&dµrª%"c‰¸Êr7N$lù¸³äàÞŠ#% ;ƒ9Wdª¡ÓD½lÊמËaÿ8"­§q]ó3)ù¸¾ò©‚¼¿æÂ2èZ,"ý³¦A²”'”òK³–Œb—FAŠv/Áa+¢#N~‚š4‘óØ&¸7¥Æ¦8îDÈ{j% ¹ãhj}]Z½ûÇ!>{¿2Dºð&¸õß¾ÞUýèÇÇ5Á@—ü"®H ¬ÌÙòGCºLôç²Ð€Árž©4GíË…ƒ. Ûb$,´{ªµ¨*O!YK9# šÆ©V¾NTVçlY.ÓmJĶÆï<õi<Ñè Ò‰i-I:6‘žyÆ ¡Ý ubÊ$=s.k&¤’MM^¾mdÆ@ú¬ÎÛ²ÓOè¨ÅT¨H ”¤òTøÃ`žošòu·÷4 ÂBÝ‚kó¢ÛìD™„ªkŸ§É„!·¡[ý#‚;}w¡ÄãO÷*¼i`eÖ¦;KŽ\·Q)˜R‰»Ý$È}Ü"¦§{!nûØmFäŒÈ÷•ªÙ*SɌ癈‰jÑÄRÃFµÈïfw`è',–ÈÌì'ˆ$6‘ÌÞKÏf”:ÀÍ8¦‡ß (Od@âý“o?õñî¦O{Ç!½|;'¿öj¦AS=]R/Þò¦ß}g@þY™ÜìCåø|’¬qP?÷Ù¢|õnNj ß÷ãï„e’´-å’½zOÊþ(¥v/ÆÐgÑŸzÙ¤Ÿ°"ð Ž8ÛÆovbÌ×m86a¦Ìþ×9¶œ+ð…—òrvº¹À¿ àÇà’|dããšÀ€? ` À]\6 à:$¿ú©[µ¦¯à Ás@Ó ôF N:Óÿ®~éÎ |Œø¿``¾nÉŸûL ë[mšFˆGJ gº`*£V<ÕC¨7BÛbà !˜³:çð†/N©‡a,á)z£„¸üQ$q{ÉÅ\Í’k Ž4MÜt€H<Ù ¨{pÃ3ÒdªK¡R0)§tº‹y†êÈ/ÎØg²w­•(.¾k„ l8î0z—–ˆ_ø\I®ÌÙ²˜3d³‹ƒ“è Šxè§8éÆXjؘ)›Ø?쯮þ~ÿ8B¥À›øÒŒv/Æ(`…Ç»>LƒP-šÈ»ŽZO"”‹&V6[Œ·0Q+™¨Møs‹[L}LSVykõGxë '‹ ›Öæm¹<Ë£ëÔ›ÓMwàà ½é+ǸR4‘wO«Q øÜ²êô¤©Äý5á¤#œ‚9À®y&>ÿb~j¾o˜Òo¿[ñ’Df<ŽàªV2!ÄtŨpÔŽ³ù¦n»š¡pÁ§HÉ ¤£±M“÷–|ùå‚4/¡I0Ë¡ñõ ¶"œÄ4n¦"%ÏZñÑCI”ò¼HH)±uÀ‹¹þyÝ^œ±YÄ%a°–Þ˜ü0ÅÚ¼£æÄÀSÕÕ˜­ZXœ9­ðô5v,·ÂÝ ?dÓ“N?Ônœtµb¶"zë©[é®W‹ªE“f«¦lT-s|?LÒR+9vA~òƒ‹ì«Ó”Ÿ¿0–Ôê%ŒXªõ¨Óq—ÙA˜"J$ˆ˜ER/qu¯Y0z³ÏJDyª@y*°ÃF)HÙê‚g÷|@üŸ¼+ðÜ ‚¢˜]ó„~Šv­hì,ä ÌVÙ%´Ù‰Îèöë´^6a[?dj”BЩYMÁ3°Ô°³$À2Á^/›ˆ?E·Ï8=JðC¶ ÝÜñÍïtè¥" Þdº/ÀÏøê¼_úBY~ãÛJU¿¶fË¥†…IØ!)½f„<Ò£mÉcJĨ¡’ÅKÖË& 9‘Ò>h2 ÁÊ¿õ½³ágïX)Ïë”NªE•2 p¹` V´2GE½F¸¶À/~®$ï,9Ó€þàÿŽŸr‹ßëÄ')€o€)@W$å‚!ùóeüõßnÑQ{ Ý/5kd½o¡æÛg7}_)ÍijÙH)â¥X¬[,‹K6¹ãç)ºçQ+‚ç²°?÷{Ç!öO˜%âX<¾Ñ6±']~ßr®8ö9”=;ž2ÁñÃ]%=Ëï;WÏ{Í ý&'+·íGc> ‰’÷ƒªkÿ·û‰2«a+ñФ)²îSYYîûÝ Ÿòn~éó%éX4Õ-Ö¸¦ LÑî¥toÅ‘ªyå#¢®!m„´u¢QáÎG»ã¤£3HÐìDôî†Û$*æ 4*¦\ž³qgÑE¹`À²†ÀµÁ°Dœt|ãÛ]ÚØ²÷U‹‰µ#¸¶JŠ&JyNº¼®Ü]vÑè›Ð e’J|…ÿÓƒýý°Ãì'">i ÀŽwü ¸B$HJ`±aÉ_úB¿ñ­6u B)å ̩ę?«…QÀ‹†žçûAŠäœª i5%Ü%™càU!øÜý¼¼¿6Ô/À|ÿ7©¬´ñ¥D†’G †Ls›©˜©L~\[HÛ:=b}@¦èòË™%@š2øÚs¹t©aM­_@æê¦|¸Môæãù[FfÓÜêVb ¨…:D~ÙCE™›µ¢ì>$ pÔŠPô¸|oÙEš"S4 ʾӳˆZCÊy%¥=c£?JÐêÆhõY¡Ù‰ÑlÇôÞ¦ÃÛ1Ü)‰âóuu<†19!8jÇôw¾Ý¡ýð™d['Cå¾zÔŠàªQk£be&? 5Ê…)ê%C~úù¦˜t°µïŸëýbⓘ„þ-°>À?¦þìÒ$àÞŠ#å‹e|÷UU8ÞîÒ•ÂI/Fo0¦}M‹Zä®LSÉÕBœ\Í6¸³ìà‹/å§‘¬TJW =Ý éî²{æx…8;Žh«—8Œ$–f-¼pËŤjÜ0ˆò®CÄ™t(øÏŸId4.ÂT@A>—^.ÈçV§s:#6÷Cúî;ʹOvô¯Q6Q/±+˜.ÎX¸½äÊÃV„(Nɱy®)íñ¢b_0Zœ©èYÕ¥[Âú>r ânûMc¤ä…{qÆFA‰ u‡ öC¤’“ÂFÅzf‘Ö4²¼Ç.d~ÈæOº;¢â’”7Î J³¤AJÎ$7ö qÚÞ&MS³-îÎh "î,X&'5Ú3AˆSM}ŸôõKÔ1ð?ÈŽ'M¹­> ø¸t¦ÈþÄ6¢S0¦ÞüÊŠ2Ëí|Ê:FúíÓ€K)Y`Jg~æü³U)š(Ìì“êô‡ „ HH,ÎØXn8´¤ªQäA"‘s9÷Ô‰rs?`#©œ@)—a4²kTÊ›xñVƒQŠV?F·Ã$f*Œìï(dú3 ½bXŠy ©¸éø†Öf纕YG¯ø:•ØBÝÂÀO±ßŒèÑv€çV§çì‚dÞ½ºåÏ­÷˜þîwºôî†çW=ä]‘­oºõ^+²QÒR,Ñ$8îFÐÂCA‚J‘Ù ?~4 ¦=6*&6êìy÷žMDNbz²P’\Ù Í’×Tò¸f0 ÑéÇxév®%”6 k Ü[™Š&-løßx{Úkúq‰Ob-0(pÀ×qEë[Jà…uW–ržì†”ÑP­¨;¶éOô  R4`›lœÓê_M/U~øúgJi~ÊÙ_Kl„(å ŒÚ$)SžŽ»±êLȬu=n)<)LƒiWçc| 7—¼+x¡ÎȹFæÖw{qJýžâßîÐöQA§ßqÒ‰P/™È{ ž@»Ï`¬[‹~ásEé‡#?•½aBå‚AõÒ)H{DŠ^i™™»MÆ Ä‰ÌLQÖ,ÔY+À4{'Ñ©lì ÆeÑÞ„ôSº¼äÐU5ûÅ+•Bùl ?Jd¦›>ðycøiÆ'ð&Ç›6W\ƒQª*,™ùúsiìßçY 矹KŽ:«Õ›®rŒCÁ33 [Î0ͳχ¡(°ãì—óߥñGí­^Ìz &R‰ ùÍÏ'ââÜûV/™(å ·ø)ªŒmA§Ïò¾ã*¶EXcÈÀçäNÓV[}@ ÄLŽ‚´Z.ȹ¦<é&T/›j¼“dtÞãn|¡(‘J$¿g~8fÙ«þ•ád¤Æï$Ø9 •Ò(CÊj¬uÔJ¨ZŠÑ¨˜S'“6ÿȾùz‡6B *Iá8æ1›!•‚ZÉB1Ï£·Â?LÑêqçC)†"çhõb4Û1ŽÚ1ÞÞðÉ6¬÷K_(ÉÕ9LF±¤ï½;D³SÁã9ÿÁIt¡Ëß3Ç­þ5ðÙáseÖFšp‡f}Á–¦1±ô×JÀoM{-?NñIM`À¿à¿pW0`¡a!Œ¥Ü:)N¸Õx܉/¬ô/ Ó ÔŠÜþï ŒüäÒlW‚©¯¾Z”‹3S¶ÊìEtÜIÈY Ì2Y7€•ÉB¡|6Q! ?J)NäDùQSpU2.`¢«7Ó ¬M].0RÓ‡ɳÒ[‹¶tíÉ›?À^í¿óƒv›Ñ™jšh«9²çp«và§ŠÞô)óBº¶jÉ‹ ‰Q Ñéó,zû0ÄÞ1'o–IxnÅËRzÃäDdUa­dbeÎÉá<Ç@!wºÑ bªÑ™{8ÖÂ>‚(ÍXÛð”ÍøùÙªõŸ÷f`"I˜q [Ò:J¥ê$œ4h¬1à“+ÿ˯q¢*û$Qã›2Þ»–Ÿ>ÿ\¦)c"´Ì³©º —Å4³àTJœt#túжV·›¢¸ú{Ç!¢˜÷¥†¼k0hoÄϹçð±X¡drËzüúWŠº…E‘ÀBÝF¹`"IÃà+]]½:w 9!—„f{1JÛÌð'%Åô`·»ÓÍÜ0¥ß„¾¹sŸ¦œ€ ’8jG8jGg@p,û-ðd'$Ç¢éeÀ¯ˆGÛ¾ñz'SA•jœ)%`šÜAŒø™=lGÈ9L¿¬–X½Ós<ÇÎÞƒ8Ñï âÌ,L½ÏØ?‰Ð$$ˆäÀOè[oôéõ·˜­X¸»Ì NÎwR. )YH*^½çIÏ™X0Xéï/µb>‘ñINàuÿ<€ÿL¼4 ¹:oQ’HùÆ£Mãa=Rr«¹H$³’ôòļz7'?u×›êõ&v"|ÿÝ!iÑ?Lq{ÑE­ˆL‘ï²ïø oÆ„jA@æ=ÝåÕ#Ç"¼°îe‚æñŽ^ {Ã_z¹p-ý‚­Ãv‚gŽXJ6Ñ ÿlsMkõXä$Óc$‹9B1Ç¾ë‹ Sn˜ôd/ÀîQDGí u²‰VÏÊL_ ùºmj‘¸½è"J$\KœÙXÇ»'i*qÒã¿Þèçjê%Nþd ìGèöcr D,æžÝ¥³äLOõŒ±]öliæw4Þ@%tŠéÐ@EÍõv,‘‰ð\õ|ŸßÔ/º§iʑވ“*í¼§_Ï鉸ƒ´Ôàö·ÆR„›ð¨Ñ ë;,7؈§?Lð`ÛGo˜dhûªRÔJDPvЂˆ­§~‚…:ϪÛÛñ™ëGÄØWîxXšµe)/²Äø Ÿ~ð`€$fÊÜ¥ÐݯzÙDµhb$hu¹=Þ¥p,¾®©d›Ë ÇÆ=5†þiw0ˆR¶Xl̳YH¬^6aÐ ·\佉†6Fš?~<¤ÿö»=:¿ájñ1Ûp,²8OSîNôF öŽCä=zÉBU6õs±Ø°‘wŽ:1:ý8ë¨ÝZpäÝWvú ~ëºôãÇC¤)w5¦«Í3^“‚iƒ šŸ{!'+ʼnk ×úÿ ÿØ*ýMŠOz¿àÏ3ÁK™o$·mŸ%ND@­dÂTüóö®”Àꜯ|ª€)ÚX¼ubúÍßïÐÎQxFˆÈ±EÖÒK/QÊ"ÃQŠ8ƒÊ_ñe’+JÁ@©`b¦l±Ÿ`ªSšr+Wƒ!5âû¥Ûž¼½äÈiJ"nÛî7cʹì¦M¶B6P)š¥Š«e#›£ÛÖ‡%õ²‰™2Kv‡ šìGýQе9]Å*`Z0lEÿÓú :¹ñU‚3 Yå­Qµ@ÄÈíýc'Hðù,5R,ÏÚð\»K.Â(…eŠg<èÇ[÷¼i0O@¦ 9>??/I¶8Å]\öü¡‹Ué—ýžžÿŸ§ÞÎ ÁÖa?™­.;PrÌsoœ#ÆlyO¯…agx#iõbØ&a}ÁÍô3lûè•LH }‰¹š€aðØ`¯"I%*3ëV¸5)ùIÞ ¾³U÷×<ùº+=6KªÂHÒëo¨ÝãwW²yýq'ΞMýÏ|ÝBoÈ¿FóF//êÙ2ùý Kb¼['%0R üà A1gÐÃíÏ­:ðœë'ßoHïº4>’ÐF¥cö:0ÏÝcý³q"Ñî1µÙ±Êó5›™òje CŸ›ÍNŒ“nŒ?áÝMŸnûÙçiµ§%<ÕyH ÔÊ&~ás%¹03•`’Füÿy0ïÿ7 Ç_° ž™¸b 4M’_z¥€V/¦·ŸúSwKdîb­^Œ |v!°LÖè. üÜgK²\˜\-”ÅïzØ> ÏTn¦ÁH^^¼Ò¬Šº(˜GŸR!w5RX‚åD_¾“?cô“¦Àq7Âq‡!,Ô-ù³¯áÚSê zg# (–]«à±æwµh2:y ÀFàªdû0„m>ÿbîÊïÐ-[!€jѵ¢DB†‘¤þ0‘ó3&õ‡)¤W¸Zyˆ7å‡Û>‚ˆé~zæªê¼1l°M^ ªÊ—’Ç;¶j·Ä©D"EïÚ„™ŠKuRâ„ÛÁºBÌ9¼Qêë5~MGjþ­%lKŠrYh'í¸Xð.·¢b‰Ýfˆ“.·ŠgìŒÚ¦7v€7F²®L’2ïઅvb$*9ª TKfö½~Ã`ÀlÁ(xL­1…”ýtÉ´ølÕÂBÝptáé¾$,#ÌFSZJêþ¯Í;˜¯[H¥ÄÚœ“ÞZt¨˜çwà< Á0}tBo™,þdÏG³E½dfç>Ž=I%'†À³Ý8•ÈZ&'/ÑÉ:ܘ9qÒIðú›úü‹yLam{&‹.\J()–pm¨çíò÷à„aÿ„ßùRÞË45,“M™´Rb»Ó¼3 “nœ„ ¼~œtcÌT,ä=BÎ@«;Ù\Á™~õ‹åi%“€ßKÃ7§¿ZϸI8bÿ6€ €< ž¿ü…2‚HÒã`ª‡´\`“‘8‘ÐÿxÕ—÷~éóe)Ppyv:ýo à{ïèÍ'§¿úÏuû7M(si/8#?½‚ÈwÚYm0J'y×@§x¼ãg–Æ:ò.ëÏT¦Ó/ˆbI¿óFŸúóUvû*åÏŠ+%ªËÐîÇÈ9*ÅSÖ ënÖ˜&Æ¥G‹¤[11S1eKô‡)Z½»Íïhvb,Ôys/z¼¨ [§"BQ,ñdׇ)õ²™Í™µ\²¦_F±T|>£ ÅÃm}%uK`±¥õ Ì”-”óf¦Ù@ ÜEa”ÂU¨½aw9 «©.‰ºÅgÆŒP”4å¬8Wµ²Z·{¥”Y²%²Ùz¥Èà4 wãŒj©çÕEó;#ܤ€vPͦFÅ­'syÜÚ°Adô¸™Š™9ð±•3eBNí~Œ ”J)Ði:ƒ›Af/'ŒÿðƒTµª9ivm¶¢ž«™²à¤,ž/}NMƒä—^*à°ÓI'FE±Æu ŽU•«[ÙÚáS Ú<¿ê¡ÓOpÔŽÐÖ­ñÓϱ&üP^ ‡Ï’ïøÑ£‚Hâç?[_’w—' ý¼®¿^ã?ö2¿ÓÄMpC°d À?Ž •¢!õ‹eüÆï¶isÿj'*C@ÏìÐësËx1ïX„Õ9·Ùk>•rª Lðx7 ßÿñ€´ÂßéAredö»—'U ú ¦Êì…Ø<Pθ·â1ôÈŽOŸ!»+îTçC¼·éc÷(Â\ÍÒºæÈ¹§À¤Nÿ”réG)e ¥¼‡œËR¡·ixßæ&ú8•1‘¬ ,̘X›·±¡<âDf”--IJÄ:z£Ö磕ÛB¥TØé'è ˜þ¹<ë`NñÔ×î(„)Í\èaßîÇÂS<ðøÿ‡Ñ©£Þ¬Ú :ƒ~ 1W³2½'»A†¿à1oõ²™%XIÊv¼Š©ÀŸÜ^.å9ÁB‰½ ³Ž¶æj¬ÄÇ]6ç×\Y)R½‹Ÿ­ òë_-ãõ·˜–š¤ÈðãÝ7?L±Û Ñ%xù6Sq5(3;öQ‚Ãv„“nŒa±Y I$¢8Å„ºB‰Žñ5ùƒ·”÷¾ürANÛ•$>÷BýQŠo¿Ù?óŽ*‰fÔŠP’Ë4ÕØ3RÂWžÃú­½­^¬žS]€’Ö¨³P×q'Fw˜ Ý‹‘wmT œô]氪׆ŸÿlI¾xk*œ”ðÀ?à{Ó]¡Ü$g£n ÍøL 6ª¦üµ/WðßüN›vŽ.N¤ržRÞTÕYÄÊrPp ÔÊ&ê% ž#ðÞF@k‹RÖÇf—…æûÿƒï÷²„â|¸˧}nç]…9H~q§Ñ÷† ú£y%²rÑg>·ââó/æ¥!0y”A@wÐI7¡[ î̓v/ÆA‹ùÆç)—šGï9ìÖ¶ ŒÁïøHÖ¯•L<¿êa¤¨ Œ—¦ÜÖYÍ Á×_Ï“#ÞÜËÞÔ Õ)Ð`ÀýÍN”!Ów›„¹š•UÌšŠp¢ðd×lj¦uh÷¬¤^ÃÉî …‰(å™zç)*E·Æ´.¶a¦Â#ÞÀ­l|ÇO÷¶Nõ÷¥z~o-ºÜ9St´Þ0A­ÄØ“‚j-¼ÓÑŠ–ê=s\‘Ž»1‚ˆÅ”” 浞‰åY[V‹¦|ºÒÖAHW!Öµ÷EœðñsÀIW)Ïc¡Å™ÍNÌÝŬIÒ«#“XVã·8‘øÖ}*z^¹ëéÓž–Iòk¯0¥øÑ£avRr[_™ÑVʉII¬Ü>uȶü(EßOÑ÷쟄(L4Ê<&q•žÆlÕBw(M~ÖË'Ï ¥±áç>S”¯=—›&áŽÁÔï¿?õÍþ„ñßûzíú>jÑð]°iÐ &¼H…/,ûÇõ†Ï>¬D,¿;S6(`X)o`uÎÅÊœƒZ‰[ci*Ñì&xëñˆÚýŠEÄuQ$‰Äßÿ~ÞÙ8Ûú×!ˆ[º¥œÞ0Áþ]‡”Ü(²¯=Öª—'s‹nÔìÄ(xf*âDâà$ʸÀ3¿ö岬–¦oý?Ü hè³jÜÐO!Ï9·ÃLìG_SøKãg,¹6ïL]]'ô)Êì©”7P¯˜Xžµ±¾`c¦l‘ap»ÛO°aï8DÎplþ‡í„eV)&)WŠšn¦Uá”43Z½ÛG¶BÆ(çÜË߯}n/:X˜q2 ¢²^L(£ËÿÙLÅÄ|ÍÎ ŽtZ(ô½0Â(EK=þü¹š C I´"Œ‚T  Tò¼±k½ûœk Ž%¶B<Ù ²¶ÿI—%pµàéX‚`Y|,A$3Jâ%—íwS`ã Àþ1'ÏÝ![ÝöGIvÝt8¶@Î1´ï@æÿ°:ç ZbîþãÛG!ÞÝ èá–Oµ2Óë®lËm 7LéÑ; ^ôÜÍÕ!„œˆµzÜÁêRH)72Ç_K£ÇøJÖNÞ5ÐÐï]+Êt#v›5*¬Ñ?mX&a©a¡ÕOÐêÆ¤ }Ç"V-ÀQ'FNö,a ÂLÙ‚aœ¶õµR§î,èg!Š$LƒŸ£q·PDŸôÎ*+JÅ8úÙO—äç^ÌË)xMÿ—üçïãÕÿXÇMpq4Á~Ð_°€ I@1o`¾ncï\ Á²°kóåPÎóâ[ðÈ„,~²y²PO'ÆÖaHG­˜fʦ,ä.^˜~øpD¿û£>]&Þ£iU®-²v®>&¿ôõ²…Õy+³ªj^\¯˜rÒ;%áé^@{Íè™ I8;ÿåÏ—ÓÛKÎÔ³ø­ƒˆ6÷C:êÄØ<°Ód«OÏæÍèä’y #óyf¸À0û'ZLÁŒØ¼Iѽ•é•õÆß±™Š Ë"ÚSÉÉùØ|ÝF!ÇZúz¼‘m‚½H™ƒ–uJ×´-RâB2«ˆÏo¼:Hv#Ô0%öO"Zš±QÊOŸÔ8¶ÀÊœMRù!'È-Y5t²l¹&ÕË&[dèþ‹~&YþúDù'8í˜hµMÇ6”:'2ÜÌ×?]”_x± Ådh‚vÿ<€ÿ´^>‰q“\û`ÀÈ—ÀîW.%•ìEÔS­YÓàVëlÍfà EÍJS‰î0ÅN3Äæ>·>‡þYÚÏq'ÆÆ~HÚ­oœtpÑßùý.éÙóEa[<¶”z]odêsó5;S¸+ªYó(HÅR®ÌÚS½ä{Íû!åÏw$ðù ò /¦bHO÷Bú‡?èÑãÝÓk‘¤…œRŽ-X›øâd‚˜o¾0cãö’#¯êšèHSиÐÉ5dÕ¯<Û$TŠî,¹¸¿æbuÞ–†`{×™¸NθµàfˆôTùtI¦e`„®J´r!o)Ïès¡vÃ(–x²àé~™ S´ÂˆrŽ-PÊó_‚7ó§{vŽBŒeÜ£œ)ó.'2yé\q*±sâñîYÁ?”jdaÂa3ˆ¬¢7Ò=PÂ;B°øÎú‚Ó$´ ÞÛaÿ8ÂÀO™ÇoiŸnï ŽÚžìÏÐÁï¢Qa ßÇ»>¶BD‰Ì¸ë:¨M¸–À0Hñx×g÷MhEH¶º¿îf˜‹ë„)K [VІÜ;ŽÈΪ .Ï:°LB³£ÕKμÇÜ­‘hõ¸›Q-Yj„Ãc™zÉÌ6ñó:Yâ­:2IrÚŒR4;1­ÎÛ<Þ™2\[`¦bÂ4å^ 9–0fÐítÚ'©¢^æ]Ö>Ðnœ½3'¼½±®À†««dÔÀç_ÌË/¾TÆt›ÿÀ¿ ¦xÇã7€«ã÷ü)°PÐ\‘AJ ,5,ù'¾ZÆ7_ï’ö×’¼¿Ä­~Œf;âÅ]¿´À…£ƒ“nŒ7ûdÂÊœ Ç&INb´ûñ•3}Ïf]xmG\-šhTX½ËUóå8aE½ãN„f;F­dÒç^ÈÁsÄÄj¨˜3.œÍÝZ`‹ßi} ŽZ1¾ñííŸDYuwF §¬ƒQpÁ Rq¦MÒs'Ë%kÑ7ûbÿ$B½lÈõŠ Ïö¾pRý‹²¤ÜÝî­¸rè§ÀH¥¼`L†êéìŸ„ÙÆ= nWMÜ]vñ`ˇ¦™ºÖ’Ðs_]1eT?}ˆáìZòY'ppÂ÷|¸¦¥ŒyÔr:g!"‚”=³Ì\¹³Ä~)€õy•¢ ä 4ÛÌé.åèh\M>Üeâ2G­­.+®Í;Ù¦¥uŠž@GU‘ZRØsæjŠò§ó’ª„ºQ±Ð¨ZÈ9"³ÖbG•N]*À‚ÞÏ-Ï€¯/ÝòPð ùÍ×;´×äJß6ù»¯báèj8ŒNŸíLS Ǹ’ržÕN˜‚Ž1mä%Ÿ¹¹âï¾Þ¥?ñÕŠœVF\J œ7ä½GJ QΟn“2~Ý.‹4åsFR•|]õ{¤°Ç Ü_õ0SaÜ”.¤>w?'Wæl)ÄÄ÷“Àž/,ô¾Ÿ{ûIˆ›ÀäxFþ ˜&xå³W.XŸwàX‚˜²ÅýQ+ÂÃíNƪ}\ý2¹¶Àò¬¡/éé~H†ÁífÇ´ÛŒ®T#¬¹B’«þEEI3 ö!8îr«}ë D»ÏàÛ"¼x˃7ö£@hôÖ“å\þž(‘¿ü…²lTÍ©6âQÒ7¾ÝO÷‚Œ;>–²Y‚p܉ÏÈënIÞXlظ¿îMåfHöObjv:lEøáƒ!½»éÓ“½€NØÉû¬8Ïû } l+“H–ª‰JÁ@*Ao>áé¾Ïþê‡û ÐYÊŠ×rn-¸(å jopõ®]5Ž 7L'|]Ö\¬ÌÚ°,Þ¸µ£¥mŠ ”:ð“̦yqÆÆíE®ÃVÕÍv ™r+¶”3P.ˆ"f””rî-{(L, ñx×G³Ãà*LC­lqâ"¸ò°5Â`œrªÆ‚˜ÄA„‘mAIDATËïØÜ•á9»‰•YæêßYvñåW òÞ² €È±Y¡îÑŽªêu"£Îµ7`ÛhËä‡Ë1‰îXîT)DÖJœàõG î.9rmÁž¦íO`e¿ÿ+˜Õ5üÀ7öc7 Àtñ€mpPÄ„$ÀS¾îÝ~JQÌÆ2w|ôÕh`šAJ™«ÙH¥Ä›‡xû©O¦A˜¯[Ø9Šh5 œfçžÃÈÚœÔ8Jam¤™%êÞqxfãxÁ}é–w¡ÙÏx€¡ŸÒÛO}rLeoüº'ïMéR&¼þ怾÷î€.ûШò£7LÐòõ‚[ Ë³Öæ v{ѾRðFGIzo‹]ÇLƒr»|û0¤ÝfDa(‘¤ TUB9î}àB!¸Í=Sf[æG;¥c”o ö‰°,V•Ó€CC0Unç(T´»DÍPcئ@Þ3÷ ä¶E¸½è*q%<Úñ±}ÂÓ „§Â(J±:ïb¹Áíy¶ °uàDµ­sJ ™yô<ÛŽb·m1ï>Mžy¥’™.œLñ\wÿ8Ä `߆rÑÄlÅÂRÃÆíE¯=——w–,Ô-,6,¹0ÃÂ>K ·¹6oËjÉ@Î5¨ÓOÉSÖõÏzjNbØŸÐêÅ™3a)ÏZöB~ ±Ø°qoÅýà7:ñr(ŒRJSNØ£4sм, žÙª¥®ƒ,ûC5Ó (§ÂXôà$Dœ^¼!´"""Zžµ3[ãi¢3¨;HpԊɱ”-°²w,N5xôü§j€kMáÐ:}ž”.II%;·ykÉ–SŒhtNùŸ‚Ù\½å¦~Œãf0}üÀÌæ¿  Š ã€RÎϯ;x´ÒÃmÿzÞDP ?0r 9Œ$þîwºôãÇÜI¯†…àŶQ1Q/[pUŸJ ?`á‘“nœ –\¦õ>M÷[S´K9ÒX³åíegªÍŸh¶büðÁ.COk—0JáZ<ÛQ„bÎÈtõ¥,èÙ\aO%™Üñ`ËDzB«—òŽ;±R*c‘"¢­Ãwʹ<ÕBNÅœ!•`Ìû6aQ÷KÞ[u醗o&ðxe¼ Càò»[#ô•FºFÐÓË’ô”NX-™Ðæ+!v›§&P‡ ÁkÁ层b¨h €“.cô,6ynÞé'X³‘÷ŒÌô(%ïú¸Mn{³Ê!kóÏT¹“a›$-“pÝA*Ù1NW•¦Á";ÏZž½ÄZAÀ4ÁNsJˆé|˜&a¡nÃTÉãƒ-¦Áê…õ2o-¸¨—Ø¢vâ3‹éÆB,!ÍBa›û![1ùaz©mO(­G 3‡Ž;1ª%ó5ÆÒº¶Åª‘lýl‡!Ioÿ¸‚'ð™ûù©Á¯A>¿æbà§ðI‚N¹÷˳6UÍvŒÃV”u‘Î{ t JЦi™4ñŒGIløò+ùÜŠ;måO`cŸ @gê/ûÇMp½øÏ8þàqÀåI€RÞÏ­:x²ëSš^¯‚Ôüj€ÛÂúåŽb‰Íý0[‘ Á,„Y¥»íŒé¿¸âÚØ2U/àòãÌWž¼ÖI ç™s A(çVæ-˜SÎýGAJO÷Bš´ Ä ƒÌ´”è½uE›˜îÖlǸ·âHˤ©d“·Cì5CVÉ˳vyEy86î(HqØŠpp¡R4q'v±wÓþqÇ"ºµäÈe~Û¹N¨ÑŒüG¶Š¿÷]Nê\›Ûðó5[E‘¤86¡’70%g¾K'JÝA‚¹ª„Z-Qâéžý“è™{ÞU¼ûkJ9#Ûü›¶|„‘Ìž/(¶ú,¶SUò·JyP ádê‹…œÈ\ù\‡yö† y¥±Ê8õ(`š0I‹I#ÍÏ_[íH™ªŠÚ¹D~¸ãã ex Íà¸*‚P’”Þ”R»Šª&ï¬8(äŽÚi-€Ë®ƒ£Æ‰Bý?·êÏON±K 52 îöÌT,ì3F`< p’øÛßïQ¥hbJÅ<Åÿ'|æùl2«dï8„!³5£,ÏÚhT,wù]éÆœ4%kU$)1q“\?$€ÿø¡û·0EP/›ò¥ŒßúáÇG“Yê…6 Êfú³,“P)r+°œg©_)yÃ8îÄ8l…(¸²‰bN¦íûY–@MçJÀ¤œ#®eñûöŸNbÒÆ6]\o@ó5^XôgûaŠ£6oüŸ—çl©eƒ']ÓV7A³ÓbÃF­hf§©Muÿ˜?W² ·˜cÏJÁÌDLzí^Býa î+ ä=¶¥sâEÇ4±N€n“& só·‚, y²ÀZ(xkóŽ¢ø±•ðÚ¼ƒºJbú£[! žÀRÃQº.lû™´eÖ|ênOHË"i"Gµí‰ò’Þä ¸´¼ÔôøÆŽ±sü7ùI¡YyOàj1ÂÖaˆþå œDÏ€ï4Ð쨡˜W&¢šfùæã<[Ð×^+\Ûy¯Q5åW>U zÙămÆßôÇìn ÈÞîL—„üN쇨—Y]Pû?´{ vCtû,(bwÆÛ½°î^‹àÚB>¿æÈ{+l‹°±Òöa€0–˜«ÙhTNýt"°Âÿýa ¯"PÊ™0ŒizõwÕJ&~õK%ywy*,‘Þüÿ:XßïZÑMÜ€?@|,/ù59LXþ\[`}Á¯„:®úYC–gmä“^Œƒ“–šõÝZp°ØpPp•6%Øi20L˽ÎÖ,nû)ö•:ߤ`cóuk*4=H)…)”þ4Ÿ¿¹Òo}·G%Å-n÷“ õ®#§fŒë .û'Œ¹þ=Ùe ›æqÀË·=z~ à¡ÖOðCÐBÝÎÆJ‚XÑídFE;MQŠªóa fÆ Ü^t±<ë¨9sŠ÷¶úñ£!Å QK$‰$ u‰Ö€¢AR«›„ϺúÛ‡‚1®z)¾½Ò»/¸ì†¸>ï¢Rà*ð¨áá¶v?Aw˜BWˆ9WÀ³:ƒ–!p{ÑÅ꜃ûk®œ­š²”ç„ÅUt9KHéQ‚ûç£DÀ“Ý~ôhHŽÅÊŒ}DÀlÅBÎèlì—‚ïl‹°2ç`qÆBé%@"àð$¦w7}*L¤ (ïÙ¸hÚpl~Wl“ȵ9¹÷Nb´`PÎè YxR•ë`3ã°±Ò£RÌ{ìÛà¹\„‘DÎaÅÌŸkCL‚˜núî†O¿ùíµºLcn÷b´{1 €©ïæÎš•±/ ®a(o‡äb9a)Ùª‰_ÿZ…mçx Ôÿ+Ülþï;n:ï?$€ÿ§N‚3˜Ð ð_ü| ¦Aò»ï 袙 þ¹‚ÇZê?E£ja¾n£”cP`"9›?lEŠêsúµ¦A™£ÛÐO_xcšQ,IYÃ^ù‹Æ8Ló¹Êâÿàû=j÷bЂ“ çè éZ³U s5+Ó¼×(÷S*…ØamÞ–‚€IESš‚üPR)Ï×µÙŽ‘¤¬Õ Ç-½áÅ-Ê0b!¢¼Údn/º¨9!Ð-åí£ sy´L‘Ï«ëa;B9/èÖ¢#UR—^Ij÷Ò¬Æ<“„ÐéÇxºà¼gà¶gd¶­;G ô‹S©ª[‰v©\j(ŸB0®$Š%^k@è•;žœÖ©ñ*Æúÿ<‘ è,Ôm,ÌØ°OÏ Ô¦x™GG)gdÒ³W…¥¼Ay×ÀI7ÁÖ÷zôéçrrivrçiüû\›ä½UG:6‘kÕŠ&vC¥ÂÈ$ûiªÿ‹"J$vCwYa®f«.š…ZÑÄa+Bó:qÔŠqØŠèg^+Lm!,ìFøûßëÑq'>“Ðöýƒ=‡-Ù±ŽÀrÃFœòÏ691úÏv$ÙdÉÆ¯}©,—f­iŽGç¦ÿ%xæ¿ÿ¾.ÚMÜ$0$€ÿ¬8õïX„$ÀµIþüg‹ä9$ïÇ} .Ð×.å¹B˜W€í!Þî'8hE8îDòŠM“³pv€KxÞ8%ÿÖdÕ:Ä){ŸX'’¾õ£>6öö;OOÛžÚmaÆFÁ32 £ùaŠ×s°-㌹zÍ×­‰Õ)[¥]Õ¶ß;ÑlÇpmRæ4üßËm23_ç{±P·3¿ó½cè{!ÁÆ?µ£ß ÀwÞà{ïimÁƯ~±ŒzÙ”@¥òà$¢ ’È»s5ÇøBÑ) Ê•÷å£Dâá¶ŸÉ<ÿNš2=O+ðUKüª'©rrÜÆ)†~J¿öåòOÄ?aš«iü„þ'N¤Æ€Â;H]Uæ\‘iZlèôc¬Î9¨Íìzñsœ\0Ô”^ýUçΖ³Ý]ö`™ü}ïlŒ°}Я}¹‚µ…él»S‹îõEŽ%äÆ~H9×@wñ„2à™Ì±×Ç¥¯Û¸žˆN;±’S¶²ÍXËðöSDÀ/|¶ÈkÍ÷'Š%mDØ: Iƒ‹ÏüŒúoßO1Øõqxr6’¯w£b¡7L΀6¥n/:ø•/–ålmªDTóüÿíøûq“|8ñÿ0+O­cB`›$¿ú©"•ò†ü{ßíR_ùh—«q`ZìÅØ?‰Î |/ëX&!‘Èt¦ ClÅïM)IQì>ho>öñƒ÷†¤ò¢8…ƒ^X÷P)0';N˜/¼ÛŒÐÄ™ H¬Ú†ºZÓǵ2g£àM? à¨ãÝMû'§”¸QÈ@¥™²‰JÑÀnóYËSFCóælŽ•=,Õ|J—ßÈFAŠý“ife õRŒ“^?Ø?Ž©Z2¥ –@þÁƒ\›}âó®Àʬƒ‡;£gÆ6•¢‰õÖð×N|z1¿,â„õ f+†ÁÉS˜`û0P1ÂQ;BœH²Ì÷§„7á² f×3MTJŠÀS9òSêRĉäç=‘ä‡[‡!‚0•sU‹´¤ìý5ϯºÒS4T­LØî'0MÆ¿âçf}ÞEÞ5°u<“T96ÛG˜8ÂJ%È6I™ÙH‚ppÓßüV¿úÅ2îNIÕ!riÖ‚c“|¼ !ÌìÚ$©œNnOÊÓMû‚ŸÕ Gíóu³+£ @üÃCÊ{B~ùå‹e»µ¬ð·Þ`ϦÁ 4/!Ø=“´ Ì×,4*<¨•LxN­‡'Ü‘xùއ_ølI–§W€,òóçpCõûÀq“|xñ7p*?ù&P…€|í¹‘¬vkÁ‘†˜Üþ—Ø> iÿ8Ì*,€'ݵ’™¹ì[»µ"£óõ±êEª7L.µaÉÑsVf팭„q,É4H¾»9B_i<ìGŠVe¢Ó·°¯øí¤*§[ .›Ç‡í(óT_Ÿwá‡<‹=,³U+“ßM$‹£<Wjá_éKØ&]ë†_ÖVççV"MA\ÁCv 5;1£D¹õñ¨ic?À“½ ËbI «³6[À ‚g¤Ïï­§#Ú= 1[³¤çضFüŒ³rœ Cðæ§=æë žÀÆÁéˆFJf•¸¶àÃ[”ÈÞ=Kuמ[õ°sÄ’ÃëwÛô«_,ãùµë› ÍTLX&ɇ[Af"¶P·‘¦<:ºÒÂ;»À)ZãÙølïÜlGHO°Üpw ¼óÔ¥¼!_¾íù–"Oè·¾ÓÁ{[ž_u‘sD†ƒ¹Òª\ý·?Jðh‡q>w—Ùk!ç ¬Ï³ôv)oH-=>Åæ/øàõõ‡‘Ÿ%n€7~ÀÿÀ¿àS˜à>%%ðüš+s®À{›ZC?IØàe|!˜8«$ÞÈuD“ý»soª Û$¤’C4Tõ@ÿà{=jvâLMn<Á‘ûÍÍÎÅ ŽNdüó(¨ ,ÌLnÿëxí¹œ\˜±°±bc/ Ã;µz1‚0…«üÇ»ƒD#Ÿ±Ô°1Wãê%Vè| |œ)›Ø? /½VA(±× ‘_öØ·^%:ÌfÍýÝ£ˆôbºÓ PÊ3‹`iÖÉ\—6–6L“„Ìí?lE(ä¸{âÚ¼ ¾£>s5 ·]X&ÁRl†¨—LÔË&Vçl–§m†À°›,°pr'Rú¡¤0’Ùhjè§´±à¤ËQ¢œ7IYùRw˜àѶ JqÍCÁcWÄwžŽ˜u‚Ó{¾ÂR¬Í;™`bÄ †¶öCz~Í=£yQð ÔŠ,èspÂVÌ‹36”ßs+öš!vš!âD2x•¸Zõyéž&ÁIÒøóXðî.qçjó Àßú½6Q ¯Ü™Ê›þLT †¼¿îâñn@'9Wd6ÈÛ‡AæðÌq®&1d8•Qàk1+L-å ìF´Àà_©G'{͈¾ñím쳌þPyäðN³FèÃjõbø¡DÞc1 Ó ¼|Û“Ës6 i7ÿ˜uõÁ#×›øâ&øðãwü/Àö“ŸÅµ”ÀÊœ-gʦ|o+ “NBBpö|Øbïi¶en÷ÐO/I0bw®ÊܸùJq¾Qý`Fš¯¿5ÀÃm¶I˜­ZX¨Û,3¬Ú½A‚w7G™ÃÜeç%2S=³-ÂÐç±”Ÿž~è9BÞ^tpkÑÁ(È£ÙŽ±±bë ̤x+{Í¥<ÓëtÕß&Ø: ÑìD™9KÎeJ Úï"ënEƳW×cû(€cL#/gÜÕ‚Pbë0@ÎåQÀ꜀«x¡øìOöxÖ p"±±àÎ+ú­Í9x¸ã#M%æë6n-° Ý(HñpÛÇI7F§Ã2½ìüÂ(Eo”ÂSLjùè„îï éÝM£ ¥åYÕ¢‰$žîùØ> ‘J$`gl¬Î9È»÷V\„‘DÁc‹ÞíÃàR€^Ku3^X÷À~ÀBÝB1Õõ‡Cµ# ƤµrÒâPAÈˆÞ ÁÚ‚‹‚'°2ç 3p¤h©d3,yÕ™KÇš{ l…h”™f8WãÏæA€ßúƒ.…‘ÄgîOåQæY)䄼¿æâé^H¶8¶@½Ìt¾ý“{Í~tv„qÝñ‰ÊeF¯yïÙ ýÑv@ß|½›Ië$Ô¸I~2ñ:€ œ|UýÙ•I€ç °j`ˆ£[‡&×@kÿl ºÑbç«iˤ3£"%©„k Ä©D‹M@Þw€xç©Oß}g@Õ¢‰åYå<Ïù#åoîØ¤¤~''8’RÕ Aà ÜZtÒiÚÿã¡Ö³…\³±2g#Œ¤ú)£”Jmƒ ƒ«ÓÐU„£0›!wÜú¯Ù=ï 6ÂL=ç0_¿Q±N7VÅj˜¯[Ò2Ov'2K4½ðà$Ê::Ž;1ïúÏø±µx°8c£Qµ0ðùž¯Ï³¦ÿÐçÍ_o¨CŸsž_õ¸»àâÑŽQ t&\Ë$•jà£.xd œ„Ø=K„Ô¦±«ªí[ .<[ÀsøÏ÷ŽC´º—»Y Bf”¤€[Cß[ñàX<6x¸ÍG"žMkêj«c$ÙÆÕìÆC¬Ì:¬–©,vµŽ~·_­‘O€¥€‚~Àœûãv„…fä\{+[¾ý怢Dâ /æ¥q,@½—òö’v?ƃ̀4ˆteÖA¥`bû(ÄI'B"OG_«i]ú$ÀÝDð†þx×ÇlÕÂókj%3ó!xý­wÏRÊ%RÝÁdQŸñ÷n¯ÉâE_x1/Wæ¦N 0ÕúϵW¦ÿÒ›˜*nt~rqà/` 9Ë TKÜwcD}:-l~b#I$v¬Âbà/ª·—\,Î8pÁö›ÝOv}¤)͆>ƒ±Ö÷e~£¹íÿð‡=ª-¬Í9¼QHÖ™¼hÛQıÄQçjR3N $ê ˜øê§ Ò»†×ùùÐë!(3ÜiT-¬ÎÙ( H€6ölì™ ±691 f ä\/¼˜—w—]¼³á“rkùÞŠ‡ª:éÆc™IäVŠ,‹ðú›:¿¡këSnOó_œDx´ãÿ Q’`kã¼g ܘ&¡?Lð`ÛGû¦A·üµ·AÁ30[cûÞ+ï+˜JyÜIȳ*EÞ [}¾§—ñ»£©ÄtþI/FïŠÖv©ÀØà ®€£ŒªY)²Q”d›áœšÅ‰ÄÓ=u¿ÆÀ‡Q"Ñé³2^ΰL¡˜!lÏ}»(—íIG­˜Fc/Ú}–·e5ÁŽÍ: Å߃íÈ<[ÈZÙ¼öû#ˆ¥ àí…‘„çžš0¹¶í+w9MRNR£xò¸ 9¶©"6ëô<·âÈņ…­ƒˆ6ö"áÙ"£‹Ñ©aXµh³Ùκݿž¹ÏÊœŸûtQ.6®µù?Óüþ3L§ÞÄû‹›à'-pPðiðC}eb¥?ר?ŽÈ§AéÚ<ßMÒSS¡µy€É«Í¸ÝgÓ—í#ÖI¯—YY°3àî¹UçZîa:âDÒû$H³½Q‚Íý€•Úü4SÔ‹S¨1Çäsc›Xn©ß^räs«ÞÔÆ&Ó†Ö&(æY~yÖÎ\“„gÞIÊ]ŒjÑÄÊœ%×ùd7 ·žŒhaÆÆ­EKʼnÄÖAˆ'{‚0E½ÄÎh›!}÷!µ.E­—MÜZtÙ{]ýÙq'æ þÒëÍBEµ’Å>DèªÍИ#NAr•SUiâOŠD‚¶öyd¢uën³Ëåe ²V9pêä(qÚ¥C«ó¼!ûªJmõôG <Ç@NͰ‹­€ë .\[àDIŸ9pbÑ2À´ªlfMƒÔ»agc°gB‡'1ú£”´Rä¸tt»«ž2‹Ê›ú)%©D1gÐu:ã׫R0ñî¦O‡'{+¨$£R0³j¿^¶2M‹i:iJšÕ¿{ÍN„8Z½„öš1ýðÁ„_g¶¯†c Ge¥X™¤ŒÅ˜´‘KÉcÉWïæð«_,Ëzyj½ à ÿ4€¿u­ x׊›ÀO>Žü‹ú`­j²Y"à•»ž¬– ùÍ×»´}Òb%ï|0J«ªs¾Î¢ Ž¢õ† ö£Óª”E­#`š„‚'´>ýûì5YŸ 粬ðªàü ÍnÒ4cB\‰`Ö‘¤~(QÈõ’‰»Ë ñáêËëÐ’¶† YS ¹Ö=ôG‰Ü?Žh÷(¢Ÿb}Ñ–·™þµÛŒ°2ë`q†uå‡>S°š©:ƒXá*ØÏ}û0`l‡¾ßfkÖçé„ì¹^pùþéŠù¢g@dQšv7ôӉ^Œ¡Ïž~0]qe–ņQ„Sÿ€Þ0¹p#%{Âk·½ÃV¤lˆ¹Â·Mý uqõo¢®ÚÑ­(Ûp»ƒïmް¾à`¦la®Êüö΀š’”©ž—¹Kê›kVeÔÇ[QËÁ4•”¦ (–Ï$:Z*zcŸÁz7"%°sQ’HÜ[u!®G°ÜYvdÞ«Èo¾Þ¥·žiiÆÆ\ÍÎ@‚ð©GÓF¬ð4ŽE°Mžå7Û1ší8{.4^'ç2¶R00r7ÇUkE^~Zz¬ùµOÒÏÞϳ¹Õt¸Aðmÿ+ß»îu»‰ëÅMà'BÿÌ[ý €¦˜±W Vçmú)wb(IïgB+é-Ï2Zü¤Ãu Ü^r1S¶2Z ö’oõã3øS–gÜ[qå ·\,7ìL‚wÚ ­nBwCŠ"Ýî÷qpe´>Å·ª“Tâ ÅUèö¼¶š]™·3øÄãú€m}\[`¦lb}Ñ‘÷V\Ù¨p«=ˆ$šíDä”FA»ã᎟ùŸë„'I‘uÂY \°<ë`}ÞQGžÓµ#TKÜ 2ûÙŸOx4mlmÁÉfÚ:™óÉ›ç%×deÖÁL…7fÏÔ¨LnYúÃTôF)Â8…iŠy®!ºˆ(¹6oV9G 7Jð`k„“^Œ¼+à¹\Ñw,RU-®/8™bÜ“=Ö+ÐǬ[ù@1gÂsJ [Ò°¾ÁU› w”Øî³iN¹`biÖÊÌ´ÎGš‚Nb:î0>㲤s¤8éÆÈ¹f,¹Ü°1W·`[$ßï#XÌX_p¨7LéÁv€î †mñH@KYKp—ȧZ&ã%„ 4;Ñ©ü5z$°ÇEœ=÷®A8¶P]&Ö]'Ó9MüòçKòµçó™¨Ù„ paô_ƒ¥}ß|Ÿ—í&®7 À^ÄàÌö)€/¨bB ,ã‚ppQ|Q…#y“œ¯Y1ú\£¢µèãÝÍvt¦òÔáØ uv¼«”LéÚ×ä„…)lâ¨Í’µ[‡á¥ DÎܾTf-Í¥<õt¿½ä"ïpeU)XlX˜Øà‡’¸jc»kvc/¼gΛ€v/Áa+&)ý“ÁzçDgt¥˜wò» žtcHð†´:çÀ0Ææö}VücÁž»Ž‰ÁXJfìŒçßé'x¼Ë4/ÏÈ9:ýá×vqÆÆÚ¼ Aœ¨+óöÄ‘è Sz²àÑŽÇȻŜ‰4•èÎ&+³ NLR¦´v¬ß$È9§I€iºý•‚•YD„­Ã K¢Æ¿?•Ü `# #c tú ŽÚÑ•÷.ï ,7øZï6Cì…HR‰Ö½KuñãtxÑîq¤®Õ³Ï)ÀÏô­EŸºëÉçW]Y-™Ôõ ×a"àé^@ºË‘s8yDû!˜DÍ#vülTlN*»É3ÀRZç¿7Ja+ÿSÿ ö­è^Ò•ºµèà׿:µ¦?À-ÿ,­þ/ØúÀî&¦Š›à?ÞÏ·^°0Í/˜&aeÖAµdâ°ÓE/í\ÍÊ€\Ê«í´vOÕï·æPÏÕ,ô)½³á#犩fÂ:Òô`+?~<“݀©UWHç\#K['…œ;‹.glV6L%Hg,Y-™°{у­P<Ý è½ ŸLƒà9<—5¦vI¼*öš‘h÷Rìó¼ÿ20Üù.@’JÔŠ&–„à ìÁ¶¦Õ? S”ó&Xõ޵ïc¥í´P·qk‘7ÿî ÁƒíºJ; ª| ƒÐîÎÙ%øûµ>@o˜à=e‚tÝ›ØU!b>þwÞPoÈsùbNϾ Dñé\¿R0pkÑ…iÛ1vƒì¾D1Û1»–@N%Ž-2{ßÞ0ÁÓýàJlH” ï(¨–»ë½Qz)¡¦Ê`Á(f|FJ86á•;¬§pQD‰¤ÝfD›ûá™,•§âC¯ÞËáç>S”Ÿ{!Ùª%§1ǺNX&auŽU wŽB:jÇJËÀÊXÕ¢AÜAÒØŸgî¼VØaà§èô“K8íl±„g‹¬Sâ)œË(”ˆ×2 Ÿ½ŸÇ/¡tÝyÀÿÀ¿¦þ÷Mü!ÅMðGOük`ÕÀ‰+†-5ltû µÔÂn›„ùú©<À3à̓Á®ôeQ.Šú­§Cz°é“m 4*æT£€ý㈾óö€íø—n€ãá:30Žu$xF;_³3~»FÒ´"ÔK&ÖY%nR„‘¤·7|J 7L±×Œ' î ¥Þ0¡ö $`[æûL¢XÒæ~Ha,Ñ$8é^Öã.@мk ï(zJyn»wb<ÜVƒ±ˆ Ix“qmHæ•È©6ñÛ~¶91Ö‚;9×@Kô‡Ü6/å Ü[öà:EÔ3öoy27U!+;þèÑ®£Å<«êrŒ'‰Û‹.Š9#5ÒÆPêÚ×¾;ˆa›9…hù®'-“ðæãµûÉ•·Ä±¹š×É¡!å¼ Cð5IÎiÖ‚ÇO 3H°wÌøŒbNàµ{ù «uE‘¥íÈ6XôIk<,5l|饂üÙOñÒmOV ÆûÍNDl˜S+›88ŽhJ4* AHSvÔ ½ º¼@D¨—,Fó+!¬Iß›*Šv?†ks‡É4µ"'§~˜Âs¾þé¢üʧ 2çNg5 Þü·ÀUÿ¿ ø‰]À›¸0n@€tñ6X0èßðO` p ”ÀRÃ’ÿè׫øöñd7 ÖkO³áÉnù¿O\“ò;¦ F)þÎïwh¯á+¯P)^,¸Ctû 6öCªÊkš5P*i$®HNIÌ9‡pf* eL´Ûd§;Ç"¼|›+ÆI‹‹ÚTåÖAHóJï ¨€rí~‚7qØŽ(ç Zœ±åÚ< ÖTK´&þ4ßqØŠ°s¡œ7P-™pšâŒßùHำ«à.ÍÁI„§{g7Èñï8éÅ8é2€p¡nÁÜú7MÂ`Ä›ø¸¥²óìËÆY,7lôTgàö¢‹œ+FOv}tÕï…QÊ"LžIé*0T*“½a‚‡Û>ž[ñ²6x»ÏŽ©vCn3Ÿ~Dö%~À,)O?ŸÃlÕ”a(©;L®$¶KÉÍ9—«Ð'{jEl.6òx/È€§œ0Þ iÈÌ”ešHÇ2^„•üœƒ¼Ç|«có0`Зd„rÁ¦ASµ7Bj÷ÌUeföÒ& ‚ìñü=œtGôöÓ ëÆ¿|ÛÃ꼃œK0 p]†pwÓ§'{>^¾CÎas™ýãËQ9W`®felˆ J±u…"ÀêmÛG!Jyî¬ÌñDX¨[0 ^øRo=ñÑê&0”jÞ´¡}Œ2ž­Z˜¯ó¢Å2Ólç6‚ÛµÓDKêZ™µ!H¬ÕSmvÿ”ލ©€e~Œî ¡NŸ«½4•hTM9W·2¥?Lis?D”¢?JQ-¨•,µ¢g½ùß[ñP)œú X ® ¯ ái)âV/fëc%Ëú`ËG»_ŠòïìX_p3lˆ”ÀÎQ€½s\ù$•Ù¨hRä!Mƒ(•Z­€èÙ¾ù¹¶ÍcOßË¡R‹rž#¤eY¦€c‘c”NK?ãx²çófuîZsl„”*€$a—¾Ç»>’TföÇÏ w| F Ê6 ê Óì‚t“àÂçÔs_x)'=[H­p8MÅ<¦@[!ÞzâÓÓ½®Í*‘ýQBA(åÚ‚ çšÎ›’A¿ò…uDZôÃD¸Mƈô6¬Î9YG$ç ì…88‰+§ÁP‰ûØ«jN›¼8¹ñµ*å ùòOîEô£G#òÃë f™&Á²õ? Ncž#°Ø°1_³` ƒ̀žî¸¿æ¢Q1e¬ `.…&QùÆC‡!·¸6;Œõ†,¤òãmíJQ‰ÕLÑš÷C‰œcÀ1OUÞýP^™‘*Õ4¸-Œ$žìù$ôò휜Ÿ±Ð¨˜Ò¶¸mzÔbî4; F¨äYa-§@lÙ±+ñ•{ËÊiÊ-ú¼g R00Wµq¬Œn.¼V@6€Ôç—òwL¸Îû'je‹mo%WäÛ‡á3›M’re7iÀüqî(4ªŠžbN 3dÞc—?¦‹‘ÖÃ'!Hf€Kyæã¥þÿH‘;=RD³J ùÉžð~ Vf5À¡ŸžqAÔã€(–,?]0ðÜŠ‹íÃÅ<ãIºÃä̵6•Mòea$ ƒÎŒ.&= ÀMèÁ–·Ÿú´«L—ôÈd¤XŸw¦ QÒeGkv‡kŸb,$ä¥y6š|mm›ðǾT–† 9ÞM9¿¡«SàgãÏÇÐOæjìöød÷tàÚ5ÕÑ8éÆ8Ÿð¦)›*…±Äºæ¹»ìÂP¾Z¹/ÓÀxŸ³øóÏ § Á ÁN3·~Ø£ýV¹tÖ,ª?LðÞÖK36âÄFKº³äÈjizæÍø—›#úã„ý2‚Xbç(DoÈÝ€jÑÄlÕBÁcã"?d# =Šé 'Kìs7Dà³÷óò /æQÌ 9å;¯çýßð¯€Soâ#7,€^tü·`¬W§ýÅjÑÀú‚«UÑè2:Ðx0íaOº1æk6Öæx `ÅZô§¶¤ýaŠÇ»…«ó¡¤Trµ9IŽT·ÂW•?ÀÕìÓýÛ‡ŠBwÁïÛá+¯åLÙœ¸H lFbë ÄÃm±BѬ7iT‘¦|Œ•‚™Í«û#FÚo†tg‰7•oý°O'Ý„ñœ¾˜3øœˆp܉‘¤ÈlhKy#“Öb5¡¢ëy¶á¤wVdF‚w÷V¸sÅ›ûAæ©nY¬%pѦ-Á‹õe—¥[Õœs „‘Ì”ñŸ/çMznÕÅ$ ›V<ãa€Ó±Î )AßoHÝA’]SÓ`ˆ4³Êïbã Ì€~ç£?JÆż Ûâãù)¶‚3c®¹š…n¹òý"øƒlôh; ÃVL{͘žìò÷\H±S‚;ÚòÙu t ±÷‡¢fè§ôΆOßøvWüøñˆÆY8~$ÑRÏHÎ5à*/ÛbiaÓ ô—óùÇî g,ù+_,ËÏÞÏ_gd!À>À? à÷?ørfÜt>š¡q?ðoƒ5€I m Ôʆü•/–°Ô°ð­7út܉¯|¹=‡Ûï‚À¿sÚŽß:qÜå™öx vè§øöh©Át½4åÊëªRŠÔ+&VçNåR¥d@ÚþñÕ•l­db®nMÜ`´ Ñ»›>ÞÛ!Œ$,“åKuµsÕ@‚“œÃ‚æç0¥0 ¨.…ÄþI”i%)W£õ²…‚'÷lvoÙÍ6ÿý»Í0ûÜ(–8Tn~å‚bÎ<ÓζMÂíE56Ø> ±}"ˆ%wrLÛm>«}o*E=m¸´q Z4Q+±¿Aw£N%pà'Hv¾û06ò÷†Á–Ïïmù0Siý¬ÔË :Ãä ûá¢8lqRuo…;¶ÅÒŇ'Ñ©”¡å¨§ÝæB‰Û>}ïí6#ÜZ`9è$•Sm©d–ÇR$wBJS`©a.Ðâ:JìGÔ$Œ$mìØ9 /ìœÅ‰Ì€€Zªx¦tšHÛ–¸òݳ-Â+wrøÊ+ÔJŒ»¸ÆæßðWü%Üðû?’q“|´ã`åÀÀÿ|¿&ŽLƒðÚs9¹0cã[oôè Ÿm@/RåÓ € ä\eÛŠx£S>ñÑÓÆ(‘*  ìf°ËÙRC‹úpÂq:S¼:Væl<1hD<Ù è›4µ1Já:,izéuWÜ·Ykž?uü5W>MßùA,SP8æÏ®‘ð~ÈàÁÅ:k”ô¼ÏbLçÿ¸c¾ž"ï2²;ˆ5Àkóêe¦Òí4Cì4ƒL¡Õ‹Q/›ìp® NÄJ3e î³â]”¢à1+`yÖÁƒíQV +FâDJ\ ‰ûà C@ì¸I~:¢ |À_{ S$ŽIò³÷sXžå‘À»>R ,Ö-,Í:™Z«ãñŽApqÕ>ÈdAãDfäxÔË&ÖçÀ–*ûѧ{ˆ€¥op“f•‚…™)ÚÿÄà¿ÃðÌG&©D¥ ä=ñŒð‰ƒï-»(䨷}ÈîúD\‹0&W›ÚO·ø7®Øüõw7Û1»5Ú„™Š‰rl`Yɵ#%‰{ú ¬{Ïâ@s5 s5 ÍN„Á(EÁcŠ™¥D‚žîŸEÐï³ùM¹``eÖFo˜p—‡€zÉúÐì•Ï8æ;ß4¥R"M!“èŠÉ£“œ!N´'áG,vtoÙE¥ÈIä0H3TýU!ß[AÀI?ÁÖaÀüø‚µy»â]õ F±¤7ŽðãÇCì5#Ò׳?äù½›Ý^r3Ešb:d½<5áÑÏj¥`ÊjÉQ,ѦÔlÅôt/ =¢?L!Ä) PwÏt`ª¤C‰O‚pwÙeÐo…é‚O÷𥗠ò…u÷:ô>€7ÿcÿ¸íßú ÏÑMüäã&øé àï€;À? ‡I#õ¯¹š%ý«Ü^a·‘kÙB’Jž—ükNÉÆ`ÜV]kùG1‹Ùì6CÄ1/öÙçL8öå†-5fàÊã°{ÑI÷Ù¹ð`”BV9a1 B8Æ-¯Ì eÏóÒ;GŠž8±áXlà3ðÓ+•éòžÀ|ÍÎZŽa‚½ãðÊÄ…À³÷V—9þ uNŠ´7ÀÕÍ8ÿµI ì‡ "tæª6¶"æüç=¡)ŒgøžYoÈ{ ž…Ov}” ÜI8ϹŸt½Ï˜é„‘¤(–#)~BýaŠ0’(æ ¤)(ŒS„‘¤Á(Å[O†)r®Ï¿˜ÇgžÏÉBN@d¬‡Qâ q· \ÕÏVLìŸDW£cq…+Á÷Cã9î.q2±:ç`¾~ùÈîŽ ~û]ê În¾¿3A”âÎ’Ç*ƒªR¾ÖuTÕ¿~PvŽ"zý­6ö2ˆP-Y°-û«ž*Š,Ôkþ>[Òk4oF³>„`…ÊbÎÀ×?]ÄÒ¬%Ëã:U¿®þ¬còß`št¸I~úâ X=ð;`õÀÛ˜r$`™$_{.‡ç×R¹±Òn3"··GSzÂë b?q€€zÁȹ\…Ψ6x”bcÏÇq÷úc@Ó€²ºÜþ—‚0E1/ФY{|Õ’u,Ç"NjÊGËãnìØ?áYý(L„),%:s™Ó\&ò£xþzÑt¬SÉÜ«B"Õ·]Iîø—Yx'A³aqÆF£j±à¦19×1†à°Å¿7WµÐ&<f¦©–|)aRJÄ©DoÐæA(;ýà ÁÈ—4 SøAJq"ÙÔGJ¬Î;Xn8Ù±l…hvbÕ=Iñ­öèÖ¢s:—޵\¯ªäEö±].¿/yOÀ¶å@?Ńmw–X )ï]N½S#Å’Ä%ð‘v?Á»›#Ü]vQÊñg• Ž;t¡¼óE÷dœ»ᛯw(I5v†çöšQ ÙIÊú:áºù>Eh-‰Q@‚ež[u¥Â\·ê‚5Lþ §þÍ›øHÄMðÓ>Ø:ó»` Í¯°0Eæ­ù¼÷V\Y)Ø=Šé°qU|0ÕÆ«*žjÑ„^ÀSÉíí§ûþ¥¾ô“޳”3°<;¹ý¯þåÛž\™µ±ÓŒðt7 ­Ãí^‚‘ϦAÙØb¦bá¶!òƒ÷û #Ž%z£Å›÷=#v$qªðW.H ÝQ.(‡¼œf;žØU‰†‚ …Ø &"ÜÓ”©—õ’×p*Œo88‰°{^þ{’gß•·}o/¹° NÛýD,ÌXŸ¡$•ôx' “. G=Ùó±uÒyКVZÔ±s¢œ7³D)VÏÞ{Ão=‘ç 9~Ó›i™œÀØc3n/º}õ¢ç³è±ÿC$1 N¯ç0à±Âí%w–ôªöy¥t•>‚ì…(¬zhÑ4vžµ†¾ì3Î " â‘ÀÖa€QÈÂAÚk!çˆ3n‰¦I0Abr¡ÃSl…xõ^N¾tËE1ÿ¾ªþ‡àÑäaŸŸÊ¸I~ºã{þ'þil/î¯9 ².OÂé(}¦2ÖÑQ+™0„‡G;>z£ÉªWm¾Ív?Hqk‘E}”E¶nãŠÅs•Òø÷˜áî²#¿ôrA.ÏÚ—bž"€Ào€ñHߟú7oâ#7 ÀO´ü›~¬´õ à—tªn€c’|ñ–‡jÑÄ·ßìÓ»›þýea‚¡:33³)6öµ£Œó~Ðâ,+s¶üÜý<¦5ÿ?'…®–•¢jÑÀ ë® cIƒaŠ™ŠÞ0¥0’èôc<Øö/Bé’L]-ïèNqÌÓç9Mí£›,òÓM9Ï¢+±漯/¸¨•L“0MB£b±aÑ„ó6 ÊçDŒuðÃéº-ÇÝK 9—#V­“rð`ª•CÕøÑdO ¨—”Ž?ÍÌhïúlml ÜYtñîæ(“`–\›à9܉êô8ó8‘Ûà)t©Œ‘¦SõÄ-å¨é)Úý„JŠøáŽÎ`Š$àŠ¿ë ¼·é³ sÅB£beTWœS¼ð³Õ‡ÏÕ,|áż|ñ–']›®Ãë×Uÿä÷WÁ<ÿ›ø)ŽéÜUnâ§!þ€ÿ1ˆ³¾·÷ ^—f-ù|­"ýk¹2k_‰*ÖsXSUsÜj%´{1ÞÙe,ï'LAøÊ+ùë_­ÈÙšy­Íÿ¢ãÔØÛ$Y+ò…uW¾öœ'_ºíʹº%Ù>UaÆC"Æøa CàŒB›ipa¦Âã‰ÝfˆÍƒ0ûýv=\[drÊçƒXn0'`€½ãì{s‰£…;S9„äLÁ›®cšý"ëÕŠ&‚0=Ã8¸*l“ésž#°:ïdÏÂeaœØÅbКýżõyÖ¿¯µ´Ž«ÇJŽÊîwÙ,(ïñ(ÃsEzÍ{l‹¨ç•uÕ‘¸üœÃhr€ˆÍª8©`æÓ½a$³ÙýLùêZ‹GòÊïÐŒˆ}îòXêpåõ×J_~¥ ÿ‡¿X“Ÿ~>'‹®#ß-À\þßðEÊn6ÿAÜH¼bNþÀ2€u¦äv Áúë÷V\¸Ž@«“œÎiuhÚØL…7/)ƒVÄ3Ï)˜¶Å¶¸‚ÍN|†}@” &åy~K†A0¦á%^# Að\… ÷×=Ü]rѨòñD #ØS•<”rf¦\ØìÄÄ*{±¿âé^Ñ Iñ³k ¡ÅòBÎúlÕÂÚ¼à œtc<Ùóá‡)êe ŽÍW§ñÆ%%WÓ·\˜‚Ð&™ç=@Wrä%XüéÎ’—k„ }¬tkÁ¹R0IŸcoÒ“Ý€K ç ´^~¼µ’‰Å¬è§©hå¼ Ïe𜖛?ØFÅb†‚R´Ó6Äú’Ê„‰åm;–¾]lØ(嘽¡χÀý5/sY¼è<íôd/¼R®‚À˜’RŽ»D‡­½a‚ ’(æø9¨Lĉä.ÒX86¿ B³]ùþè‘Ho˜ %òJ&™ˆïcwœQíLU¢~Íï|±$_}.'s®¸NrNàÍ òûsLýÛ7ñ‘›àãOüm°ŸÀóÊ×ùeÇ&¬ÌÙ¸µà€ˆÐî'¤©sŒ°±>ï(`ë0Àæ~Ug“¶æõ¢×ŽÏ,zõ²…RÎD·ŸÐÁIL6}êi*‰Xc‚{ÛuÃ4xV¼NÇèøáÅ÷B°:Ç*ƒ‘:'DŽ-0[cpàU!8êÄøÝ7úä9,}ì¹l*sÑ÷XŸwQÌñÏlHÞÀ][ à±æ¿J¦[êß3+s ®@§Ÿ`¯=“ÉF ¥vqƒøøFÀÿl,ô§ü16¦ÄÀ\Ý’ìKeÜ_sñú[Ú> 1_³±0s*%D)öO‰²¬ãqVæ´r^œ±±2Ë€¸aâ‰BæA”ræglÜ_så­EžC0 ’„éüÙ§9_Ó ÌÕL9_3ñê]í~‚ãN¬[èî2oºDL?{²çŸ™YK ÌT-ü#_«Èƒ“ˆZ½”[ØŠ bÖÀú<ƒ%ƒík‡cRÃGí3e”ó&[g} VfíLfxSY¼JDhT-Ö¨Ùè GÏljºŸ­Z€Ò~Ø?aÆÀ—7!hª«i êmÈ{\}¯Î9x×ñ——Èç ” J·#R²Ô‘òHÐŒ‰µy~˜rçƒÏ¦ŒQ2Þþ?N;ÍŽMX¨Û?ç$ Èy®ñ —KKð(Áœ@CeJ,ÎùŸcÃ&¦æ=¶R6aç(À5´ŸýNp"ᇜ`Àœ’ nõb¼°îÊOÝÍÉ‚'®3ç×M`½‘¿Føwßÿ‘ÞÄG9n€wH08ðŸðOøç<§þnªD€¸³äÈ¥†Ýf„v/A§ŸP’ÊLb5M¯Ù¡×KŒwÓ |æùœ\˜±ðî&CŠ9•‚‰ãNœiÑëÍûÉžN?>3þèôG)*6û9îFgÜëf«æªv6viv¢Lªö¨qu_2±ïÏ€-“2q¦Áˆ™:騗MÔK&âx²°îB86wvŽBÜZ`^ý|ÝÆÖapz«-ÎV¨õf'ÊÀêŒÐgyZê__pñîÆ~(Q)˜°•T»9É=Mý¦Âh\DKôFÉ¥'2VÂe±Ô°±:ï`ë ¼A€¢áQœ>Æoõc¼³9Ê#«ó ØÜ>îr’"Ó™ÐXˆ×žËÉFÅDÞR3+¦ }Kzàjÿ/‚åÇoâc7#€OF`á ßëÜàNûËjCD­d ^á–ãÐOIJ¶X=¸&èÏÕmO'½sU;Ûü»ƒ¶|t‡gQÓì„FȻբ‰Ÿâ;oè‡#zº ;HH‚È2‰2a”!4H’™µ’)U‹36J9Þ=RÉvÀ_|© ?÷B^މßþA¤äù4hu,5lÌ)ÿ­Ã{ÇÏòõÉ€¹JÑ„eÚ}ž÷‚ˆxgÉ…c³=îã]Irzœ‘²v¸¯Ý?Ûú^˜±±P·‘J`cßG»Ï B’*ÜBÉD­l¢˜¿Ú—žq ·žŒh¤úl‚”÷ ä\ý±Q€ksÇÃ2 G­ˆ;ç>+9‰¬x^nBo”`yÖAÞh÷“ ¯Õ™ë–òl<åÐO±w|ñ³)Á×ùå;Ì€¹ìñumAõ²‰FÕÂn3¢èS-Ó$Ì×l˜á¨gl„ìÁuo˜ÀsòŽ@1gÂPBQ3 tÍp°ÊÔWWÎ×-éØ×ž‘é·åÛàná_°wݹ‰Ÿ¾¸é|²âm°^ÀßðÏø ¦pÔ¡mu×l¹P7qØŠñÆÃ„4‡ùº³ya¹agû“n žjÀ䟭…zÚ½óuZÑÄîQˆFÕBMÙï…gFc—­3îÌV­¬]j8™äñÎá³€M­¨çï“.) ó®A@”Éo†™Äî|ÍÆÞqˆzÙTÔ¿„»:—ÜÛTÛòŽ@µdf,‹0–ϲ&„FË;áÖ¢‹(=S•ÐX ÏT›Fµ{ µc F)ª% Kä,«@j)^Þ|¯¢Qjí‡Û#¤ÒE£be “iÞ½ñ{¶ÀeŸy>'Wfmi™×âóëC!0µïß3‡nâ7 À'7ŽÀ2ž Üø¨` %AŒý@¥hÈŸyµ€o¹xóñ?z4š˜°h ÿe*™¿±°jàU‹ Êæ‚+/Ž á(^Œ‡Û>FaŠï½;¤JÑ ûkž|ñ–'KyÛd)ÊüÅ ŒFaJûl Û&ÐÔ«Qft¿«NS;'6*L‘[Qs}¡øï—µÃ ŒŠ?îÄXjب—Mì 8–@CuNB¥¡gwè§Ø= ñ©»ÞdU?AgLNâ*EÆ.,ÌX0 æŸ'ê|’ ÷7ˆØ>ÙSø­v8ò“©»K=7ÁÆSw–X(h4vÝ%øØ‹cÂÃD@KÚkÅx{c„÷6|)n«ÄfmÎA*ý1—GË×ò•àzeÎÉ|ö>™‚E@@¦˜¢,¬Ìòæ/8îÆx¸ãÃÒLSý¨#MG$ˆÈ2 ÝaŒFÅÂʃÆ,óƒ3 ˆ€£VÌúÿàó¸ÀÍn“+ìi”ö4°\0°Pg¹V?LO¥+îÇa+B£ÂË f˜ ø·w=RË~ÀQ'¦ ’ðlº2/rg±gF¶Èlû£íþdOí°¥: b“Jrzò!uL‚€žŸà¤grÒ·<Ø>em0?Þ•®#¤ö,ˆbIí^"¿ÿî~üxx†³ÿhÇÏ ŸÖ礩Är#Ô#ÄNqœàÎÆ£¶æž¯±s£b¡ÝO²QŸ2Û (?ÀúýÀ_ †ÝÄ'8n€›x,ð›~ÀÀ?àUL)) œM¾þZŸº“ÛOFøñã5Û̃/å Ü[q³¶gKìŸDSëèïј¡ô×—g™A WÈw|øçœôH-ÐI*!#àñN€?x{@ÏÀ|Ý­E+s¶œ)³³ÙõFÀæ~˜¹ø-5l˜½¤"J$Ž;ëÙ+ Þöaˆþ]yÝŽ?îÆX¨[ØR{Œ®è>èB§ðãÊ“'ÁXË%ôwï6™ ÷íãN4ÑqüþêƒaÚ¢…ùZ‚f8ñw ƒùðPç±}À„¥Y3Ku|Ä °Ö°ågîç%œtÚk†BP§ŸÐÛ#ôFéyÝÁ(ÅÃÏ©ç÷ö¢ËLŒ“SšfœH6ŒšâYV öš!f”dµhâÞ²‹‡ÛŒƒáî…ƒWïmõ_sã×íþ#ÿ%€ÿÀ[×ú„›øØÆMpãÑðø˜:ø?pWýݵjÉ_ûT¯Üñðî¦[>•ó,U›¦È6‡4nÁ<ý|™iß;aiÖÁÊÜÿ¿½3ý‘,ÍÎúï½{ì[îY•UÕÕUÝÓîöŒË‹AƒÁ2Í@‚oð !þ¾ ÁbóÐ  ƒ166 {Û03Æ3íž^jÍʬܗXîúòáÜ{#"+—Ȭê®êî÷‘¢2+"î{o^Å9ï9Ïy™ (H„£èy&µRÂÄŽbM5 ýBUípòÑ㑪WmuïnMß\nCà+Ïš™DFZÝ*+Ø­Ìye/Ù²„åþt;ší \KI<ÓÒî88JØÜ‹gØP‚ýænDO*(„X¸}\x©GQVŽ7^„Z þ'ûÞ›¹Ka»!‰^˜ÍÌ ±-h7d¯ós¿¶àsÿ?BF‚/ïËmð¥…I NÃ#DDè×€¿ü5`1íR‰@«n럧Æ{·+§¬o%êÉVD-°gÙÍóûe¼0]츹ª¨ô}üdT®¾OCœê²xjŠA¯´k6IªÕ§ë{G ‡ý„ÕOÝZöõb×ÕµŠô¥O« úô»1šÍ­};¤ R–{^)˜ÓŸÁ"ÖsË=·\…ÚÖ¬ñ±1Ð0Ìð\±)~ºqÚÛÉí’DÓf,´/¨æ ÀI¨É~¶”¶aò_Á 9ã±ôrL-°KÜ?žÍŸÐPñm\Wdq¡Ü¦Iªyð4$p-Ú ›ë "6´sðÿkߊS À·–%‰Œ²³ š rŸÝ¹”IÃñ0ÍE€ôÌ^ ŵISñFð=‹zÅâÆ²¯»Ž.§ôÕ„È‚ÿ$¡7}~ƒç`ƒóðcào!¥Ã¿ üE`Žù0ÑÇô,]éYt›‹=‡ƒ£Tmî%yOöB­‘2+”D±£AÊGO†ÎPg™”hÒW$»/´]®/Š©Íîa‡†Œ"̓ˆ÷ÜWóm—ŸûZÕyW× ϳ”cM“ vÿÝ•€Š/ŒûûOå¹ù¶‹ïŠ©¦|ôX8_H–(Ê{y÷M¦5Ã(ãÖŠ¯o_óiÕm]þK¶ŽŠÀ#š¿ü:âj`p*L`p2D äÿßEÆ¿Ã%&(Þ$æ$zuÞe¹ç²2Ÿ¢µæƒ29f³Ùšúø )ËþäÑhÊPè¼m‡‘lìäžY&ò¸7W\G´ù?YÆzj¼p};RüÀ樟©(ÉŒRÖ–|Vç]ÚuGgZ«G›‘ZÉú „½£ÇVŒ¢Œf® ¸µŸyÑ4ЮÛ,3ûG ¾kQ Dà<£Ÿ¶­X™óð\U*-.v]¶â3çÔ $©}ýF?o¥0^•[–ã«é4‘¤ÕyÃãäÜê‡eA«.Ó…Ž~(ÖÊ+s‹£AZ’醴UT»”È âJ‰µó¤âà­å€…¶%ÒÁÅùÏÂäß=7ÂÛ«Ès±£_q‚TOÖ=Þ½]Ñ7—ýéQÒ«þø>BðûwÀ³KíÅà+ “ÌŠ))~ø¤"ðË@3}f |UªÛ ›_üÙ÷Þªòñ“}:TëÛ‘(ßqzU Óp¨æãg…°ÊÑ`¶11­Å¯]3žÝ|Å­eß• ýéÓýáóÉ„Î?/Í4£Pó‡ùÁOªYwXwÕ\ËÑI"+w¥rý TI*Î~ªM½*eê³Hqž£X[ãŒ2>y²Ðu©íºÌ÷¢ìÜsì6EÖW< šU1Ûé4œ)ÒÚYÛ‡ñÅìÇBˆæíßÿp@’jâD—Îw ÃÇ)oߨP ,V|>z<<3ÀyN^þGŽ;Ie>ïñ3™,hÕmÖ}£lJæXç×­–ÛFYÉ3) dêÁfÈË>­Ü†ø£'#,%S©œ5%q[û1–oäɣ爰ÐI!«bµo[ò·¹s=ÐïÜÓ)ÏQWE üü3àßë—Þ“ÁWF Øà²HObÑûÈÈà P¹ê+¾ÅêœËݵ ×<\G©Q”‰DìD{ ÓpD 7/gï&<ÝŽ.E"¬½¦¸¯õ‡)k‹>­º8ã}ò$<»Äž ¾Ìµ\,K”ó†¡fflî&ì¤jmѧ’ëãüdD”èrœË¶¥îØÂW8‹«°:ï³Ô­ÿûr< R¯žkÑÊxàYAÜsÅo –»ó}üxD­"–%í³‚– ?}»ÊB>=p,Kq}ÁÓw×}sÙgc'VŠÍ\Û%Ίû)®kѬŠJàp¤O­Öh-•åžG–Iù¿¸FIªÅºKà[xŽÞ”+u-3ý‹¹­ï“íèÌëÛ¦XVá(mŠ0ÊXìºØ–âéöåäx£¬”0vlUZ'eø7–<¾õnCÿ½?u«¢Ûu¥ÔU©ãéœ šýéó]~w_e˜ €ÁU1@$…©üuàÏüõKU4xJ¿yÍçæŠ¯÷õÑãŽXߎ”ïJï¶èkCžÌPªžD”hÒLtào.ûÔªy¸²µ>Ë>Œ4qªñEų8@V¡ž«¸µ2-Ó;€rR^‹*`³f³wB§_khÕmVòÒÿöAÌÖÞXeïx˜Ñ©Ût[[ûñ©ej ̵ė>Í„øw<“ fݦY“ÇYIN»aóÎÍ o¬úåsg‚œ¦ª^¢aÅåB+'Ëõ‡)Q.l×mU±]>$ÏU@”ÊËÿ¥ 1i’tp,c}·–ºMñbx¸96ªU$‡‘– É9ÇýøYDÕ·™kË~O¶Õšsûÿ§ïpš¤×mŠXЃ¦AõÛ7*,͹ž*ËüWЛ(îö üÿø·ˆŒ¯Á•`ƒÅøÏH{àO £ƒßæó×gOÈÝÅÜD÷Z߸SåÉVÄÎAŠÖ(1ÇÉhæê3jÄ””·“Lç%c™DØÜ‰.4›QJ¬Ã(Ãw…䦔èÕ9™÷ŸìûŸ,?‡qÆñ0¥š'¶¥¦Dc\Gq}AD{FQƣͨÔGˆSÍîaL»fÓ¬‰:àizg±<'¢A»‡ ;bA¼s³q hÔlR ;¹öƒRRVü,*gè—{6©ÏwÅKAæÖú Ñ)\…˜F~«óžèȵ.HýQJŸ/*§âÄ蹚5»Tã‹=ee<+ÒLÚi&BWï¼QáÞÛU½ØuiÖl]Œ‚^Qqr’Õÿˆ€ÏÀ˜õ¼˜Ààea„T~øYDGà/×ò×g& ÂøËÒs·W}}kÂXë§Û‘ÚÜM”Bÿ.cD¤1·,Ó(¤üº}ó`3,-wÏCšÉê²U“Ñ4¥dÅ·|Jßÿ$²LÔýæZ.µÀ&ðýÑ8P-t\I"rMþã‰0¢IO4/‰K§. ÀI,u]jE’hžlÇþ¢X³s˜P¯  ~ŠU0ˆIЃÜÇàÓõPmîÆ ÂL…QF¯é°¶è§š ÙÞOÊU¶Êÿys5À±…»°ßŸ^ÁïÆl8,v]–º{GIÉÂ×¹ÌmÅ·Hµ\§Óþ¦I&m…Z`S«X¬-úôGI¢K 0Ê.Å+d?}òöZß9£(–*ÍeE©6vbln¯ú抧ëUÇšdúÏz×O¡Pîë#¼›ï"·­+íÍÀà˜Ààe#Bÿ7𿼅|©]*€ñ¨˜»øúÆ’¯GQ¦z-›8ÍÔãgýaF¡)t^ÙºèÕ¢ ?H¹ÿ4,{õG&åø…Ž‹çZ´ê7–„v<Ìx´ž«j(â4Ïźþ0C+¨Â’/Vî'Yîâ$'zs-‡NÃáéN\: Ôƒ±áÐÎa2%½«ÂÚb×%ð,æZb4 ÇVĉ§üѧƒ©ë2 3Zu‡fÍfuÎã°?Í´÷Ý1ùoï(!>Y•¯Á¸òQñ…eï:B,¸ÖÐn8\[ðPJ‰R^?-$¥D®6ð,rärßk‰`š‰ÀI^!}«´ß&Œ2ކ¶ ׿}jÅþqÊæ9í…˜*ÕÀÂwõŠC¦5ëÛÑÔ¹_„á(ËDZ-©ÔœHŽôDºÐuõ»oTùö×|ë½:o¯ºÛtJ3 +¢ ö<þð·Ÿá÷k`p.LÀàóÀàïÿø3À_Eˆƒ½üõKW ]ÇV,v]½Ôuù™»Uvýp#RŸ¬‡jc'æx(’°ž«¸¹ä—*sNnâ2ój-_‰Ç‰ÎƒŽ”×·E9𢤚£AJ«&ÇV´s-a¯?Ý9Ý©¯øìƒã„Qn/Üi8e©¼Q³™ÏûØÏöcŽOID2-U€ù¶KÅMÇ[‘DKZŽ-†A;‡ÏŸ‹B4ý;n©S°{˜§+o³-8:ÎÎËÜÜ‹é4º ‡•yŸ½cá2#|‡ý”‹äô "_£*¤Æ^ËÅú¡¾Tð—+,*׿=aƳ|\Ò÷½–ÃÍ%_ßZñY깺X¥Tñ ºIA?þð«ˆU÷‡È´Ág “|žØF¾ä~¸üe„'ðã{qfÒ`â‹ØuK=—垫歪Þ;LÕúvÄ'롎2:M'7l‘ÕœïÉh\6#ñ«XÅ&©$…*Ü”?üÇy4WÌË_›÷°m |O/XùŽ"™¯æ À“­ˆ4Ó¬Ìyø®bflìDd<@ Åă~Ê|Ëa¾íòlOLz97$IÏЈbÍÓˆFU”ùº-‡˜j`Ѫ9h(“‚³bp ?¡Q±©+=—ãa†ç wá°Ÿ0Ë ~áŒøÖZ×÷ðãär·mÉ8£øRHByçZ@¯e³ØqõeŸ…ŽCÅŸö„x×ÈÉ2ÿ.ð?ùýÿ†qç3øœaƒWBü]¤Ìùˈ áÏ!m¸BUÆÉ€c+ºŽ^ì:¼÷fU|åCÍÖ^Ìæn¢G‰QNaÖ3ãªÑ*ì㕌>Ø…u>ËöùH_k\GqcIFEö6$¼€½žeÒ_Ÿo»T‹ZÅB!+ÔÂx0:[i/Mak/¦ÓøVMF …Ó ý÷íƒ³í‚ í…Ã~B§á°œW:u/7Ú;:?€ê†ÏöcQ÷ëz´¢ Ë’þþy^§íg};âÆ’Œ-†‰ž]Š7¿O’T’­=:« žî4l|O•ÑÅ{_Ä*šéÕþ'Hüï…M£ÓoðJ`ƒWO‚ô=ï!‰ÀŸn3¾?_(°ºU·iÕa¡ãp÷†Öa˜±{˜ª0ÎÔú–”Þ£xìÌvZRÀrÏ-Ç“TF³³Æ’4 Ãßqlï'2›Ñö úâ_ „Ìç¹JJ÷£ŒÍ½øÜųR"`ÔJb¾ã0 Sºùê÷097©€lìÆ4sgÇÅŽK;Ÿý?¦ F«2fZÚ&¼÷î:r=é…RÅ'ÿ¾»‡ «ó®­d:£rúˆdq/8T«6s-‡ÕyO¯Î»Ei_¹ÎxVr›+brµ¿…hôÿ*Bî{Ä ïÞÀàÅ`ƒ×‡Ûùw€ëÀ/ ø“ˆ¦@A¼Ò—æ¤xç(|צY·õõ%ORµ{˜ðh3bsW*ÇÃyúVÍamQ”êâDª#1è'§ ºM‡ë‹~É£ØÉý.dà#cxëÛ·–ƒÒ“á ?ƒŽ­òª T<Ñ×ÿðᨔ ø•ŠE·é襮˵¹ví†ç(­Æã¤Iùςɠ?D µ~ ø D²×¬ö ^˜Ààuƒÿø×ÀOúi 1ñ¾+]_ô–Ëâv],|Å 'Ó[û ;±Ú؉ÕÖ~L˜1ߢ\’jlKáXŠŠoÑÎn_˜Ÿÿl?¾pÕ=‰LKé{¡ë•†FÇÔ­½ÙmÞw–{™Œ¶ÝRiïh8›§B’h6vbZuGŽÅGÉÌפe1×riÕmâTÄ„.‹ZÅëAݦËr/åpÒnجÌyz¾ã°:çézÕšr,I|—ÿØ“˜ ú)2ñòÛHÐÿ2 c`ðÚÁ$¯3†ˆßÀûÀ?D8ß~Ñ(ü^8(6¶-E«nÓ®Ûܹîë8Ñzjµs03’D«g{2c_h¿gZ„…ÎÓ (²â[̵œR<'Íô¥V½…'ý(̨Udlmc'fÏ–Dct{G +s^™líǤ錂Jyÿý ¯€$ÃhöDrÿ(£…›8žÔ'8íoUþ̉O¶#;.½–C¯eëwnú¸®¢^•~‘ ðrÊú“—²8Ý x‚ûßBˆ}÷1L~ƒ×&0ø¢`ø/ùcø&RøÓ_ š¿ï…’˜Z‚zUéFÕ+V:N´ cM’hZ ‹…ŽÃÖ~¢ŽbòÅÓ–²Eb`)XîybB“?ߨÚå vVdÙX³>г™,‚Ožßö~ÂBÛÅqǃô9ù⋤¢.Øi8¥Lr6Cù®“Ræí¥®ÇÎARŽNkEžpùbû;×rè6m=ŸþFÕ¦S¿ËÅ5Eåñ(È|â¼÷ûÈ=ù;Èø^|Åý|î0 €Á›‹ú?KÀÏ#ÄÁow™N&^ 'W®£´çJ”é4+¼w»Â(ÌcÍÎHÜîI afô‡ƒ0ñEï>ÓǾgQõE˜ç¢ €Éci×ê«ä!žÅ`4{âäÑÙå/PÁ¥(>²]wðÜhfŸÖ"ªä:¢à—iQH\žó­plE½jx¢Y°Øqu½*-‹Z`ä,ýÉó™LÜ^"N®ô"ÌýÿŠý©ƒ/L`ðE†FLQ~1H™G& ~ øð2VhM¼ÿ¥„‡“+öŠoéJ† ª\¥ë4EôÓÒÆ·?ӜþV/ýëVÍaû &›à NÄóüÿ…Ö»×9–ˆ ]¦  ôrEA­¡^»Þ3­Oc‹* ùJ½^±é5E¢ø4ƒ¦20ç•bóÙ^ÌbÏÍŽl}kÅã›_«â¹r^¾«´m+òA©À Žåkâ÷ôÿ ú¿‡Œñu>ƒ/a,xVÙ»/޳ג$bjI}Ú9hãIŒL=¡»à±s(‰ˆç(\Wˆ’¾gQ¯Ø´¶ö=±Rî4U©žE%×Ñ/G0O¨ì½ä2þiWgò’í"Aþæÿ‹Øî^®×b`ðšÃ$_Vì!«µßþ>°†T¾´ î “ÕÉŸ/ ÅLù$[i×”¢^±XwËAÇ$•!Í4Y&ªwDZ޲-¥ú£ŒªoÑnØÄIÆñHæß“t¬XXì#Ó 3ù¡ µƒÖšFͦ×tÙªÅb¤DðȲ„aÛàÚ2òhå„ÏQØT+õŠ¥{-Gêîšc+j‹Z ÆK–% ‚ë(]÷© =Ñb9íZ}8ðCd.ÿïŠ÷Cƒ/-Ôwÿú >O( ‹T¾è ÜV€æÄû^j…àªzÒr·È²lºÚ ýo]$*N…¤8NtÎø—ÊHÞRRЈ•n1‘`Y’” ÀX9QËQŒ¬0 ‚ ó¥)’Á+W¼9-àï ÿ}D‘òGÈ*?ºôÞ ¾ 0 €ÁW° ¼‰ŒÞCôV€Óã•'³âLWÂÿ×§¼~ê ¾ú >ó©Ÿrª!¹ØTø²ê?~Õl`ðª`Z_u$H x„”=¤Bp!~ IÞDÿÄö¯eRpVý¢}íNä|œ\ÙƒÌÞâÞ}dLïÈjÿ)&à”0 €Á4"Ä•mtù¤5°†è |¸‰T 没wb¯eRð%ÀÉ€¯}àøcd$µî„jJúgÀ$ç#C‚Ì>\~ ™$è À{À-à]$A˜C¦ <¦ÇÉàÄøý«>±×êŒß5²²ßGVñÏ2þ§H°¿0÷^õ |‘`ƒË#f\%øaþœ‹-!‚%àëÀ D¹ðPGƒ€Óe{¾ •ƒÓÊödî¾èÙ?D‚ý‘`¿Ž¬ì1¦:/ “¼ÄH)º(G°îÀ<Ò.XCø]$I¸‹ˆùH«¡ÁÅš~zÆç>K¨K>_ DVò$ØßÏ{HÀÿ °°ôw0*{ŸL``ðÙ"EÊÓ»ùÿ¿7ñš‡T$ XE¦êH‹á&p I*ùó­ü½6ãÕ´•?.ãÅó¢È&Eåb€òÃü÷ˆ±¨ÎS¤D¿‹ú­ü=ÅãË^ù00xí`ƒW‡"@‚”·tâu ô’$Ô‘àßF’â¹RUè2Í=°€Z¾Il¦ò$ÿ=aº?‰>²BßËGH9>DyÑ‹/€b¿¯L``ðú¢XaÇHÝCÆ/ —é*Añó4¢Ýäç&ùOƒ/!L``ð凱¨500xÖ‹ïÂÀÀÀÀÀÀà‹†ÿýi!ÄÞ†ªIEND®B`‚‰PNG  IHDR\r¨f€IDATxÚìýweëšæ…ý¾å×ö;½Ïòuê˜{ûö½ín›™6ÓÓ Œ&f@d BØ(P IHBˆ(’B#ƒf†ž™öÓ}»ïíë+›•Þï½s»å?ýñ®µrg–;¾êtŸ7¢*«r»µÖ^ßû½æyŸGýûÿ³|a_ØöÇÓŒ—}_Øö…½<³^ö|aŸŠ™€‹|¿.àç?Uþ˜“ÿ4òße@ Äùÿ!Qþ»/ì}á>Ÿæ   ÌsÀbþs¨³@ð€ZþS!‹Þœø7È‚Ï8w Œ8zÀ1°Lü<Íçïñ…}Nì ðj›LËÀUàFþgYðSˆ#pûC¾·¾ôõ!_Ÿrî$ºˆ3Ø÷€‡À6â0Æ/ûB~aO·/À«c ÙÑ×;À—€7€kœïêO[äÅBþ¸;¯þÏ7H¤‚D·&KÇplï?ÞFà ’V|a/Ù¾p/צ€›À?†,úu ÅÅïæ¹‹\å{·šxòä¿uþê,F¡ÐZ“êó'«ü} ¥0ŒKï«.Iþžzâ#.›D&M$bù¥üØûHTð6ðMà[À{ˆ£HùÂ>sûÂ|¶æ" ü«ÀÏ_®# þÒ2»¸Ø<¤g$©VQ¬ ãŒQ¡˜†â¤—pÒKGq¢É2Tgh ë .a¤y¸ µ,pË”…o™ŠÅiG϶,öO¥æç»Ž­¨ùžcPõ ªË@+CaçN"w6ºøyéHTóð‘(á1ðà·ßî×ýEýq±/À§oà5dÁÿ<ð$/®ýSww¥äÖfF™™†0Ò<Ú 8î%j0Ê)a¤ ¢ŒfÕäöZ…{ÛcöN"Ô%¿bÛ5Ï$J4;Géå˜BÞ_…‘æû† FYy,¦!N¢Y3ùÒõ*ýqªúÄfÍÒ­ºI«fÒ¬šÔ*&žchÓ̃D Os UÎÂ?ˆÔ ~üðkHÚÐ}Ù_àeûÂ|:æ!yü/¿ üR•/ì¯ÔùŸeÅšî Q'½„ÃNÂq7Q~B”²4í0Õ°ùÞý!à E©‹K¼ØÉgš6ǽ„,;_oZ+¦êŽm`ÛЪYœž%ç»7Pñ f[6†íºÅp•§™&IÁ2 ¢D³wóx?@)¥”ËP8¶¢^1y󚯦›–ŽSÍTÝ¢Y3ñ=C[ÆùgåiDq€ ©%üBþç_@j øUà{ÀÙËþbÿ¨Ùà“3©Ôÿ"ðgGn螺ç)Œ‚Lž%ulSqÜMÔwï Ièó;mƒë(¦l6ö/nßJÁTæ;H¨xS ‹£N\¾Ö4`¶msÜ‹1 Åü”<·¨(`~Ê&J4~ÂTÃbÿ$&Íηnß5Xš¶ óhÃ6…I3Í(Ðh gÃŒ½“±zÿñÇ6¨W fZ¶Zœ±õâ´Í\Û¦âÚ,‚¼l2:¨?™ÿù§ð×€¿¼‹à¾°i_8€oMà§€¿€»Ö9ﯟïòå_'Zž%ìÅlDìĪ7HˆÍ­UŸzÅ$Í$ô7ÔùëLSQ«˜œž%Ì´l:ý„î •T¨¸ÏàÁN@«f²4íÐí'ĉ¬«jŤâlî‡ÜZõ©ù&gÔ¼~¦ióø ddܹâSõ zƒ´,,.Í:ĉfó0âÊ‚‹ç ìŒBLSj Ž­ˆÃPŒÃŒq˜qpšðΣ±²-Å+>×–\•fZÏ´,fZ¾cèâ\.E $…ú9àŸ~øÿ¿Žà¾°h_8€nW¿øû¢^5ÿ}Þ•u ŒƒŒN?Ua¬ÙØ ÕwîY–ïî L¶¥pmÅú‚˽­à|÷Õà;Ž¥¸»0ß¶Ywc’TöÎVÍ"I5ýQÊ8̘nÚ,N;vcLVç é%ÌOÙT\“á8+£ÇV\[ò°,‰¤%A˜±}±}©o½§hÕMÞº^áµuªt´¡(Râ:ÛHmåG€ø¯ÿø]¾}`ûÂ|0s¯ÿ]àWø-Lîöy!/Íàô,Qï<s;T‡˜0’Ånæ9«freÑãÁÎÅÞ³ Gݘq˜quÑe0NËB]£j2§¤©f”hvŽBVç]º}Ùø|×`ó ”œ^ÁÃõy—}­‚RçùušÂßúæ™ñÞFÀëW}æ§YˆQFg¢(ؤ,Ï**žÉÃPýèí ÏÐë ë‹ZC’j¾úZE÷©ŠÍ(Ì8%*I5™†ZÅà°#èÓ€µyÇR<Ü X[p±-ƒ0J%ÕâTsÒKØ=ŠÕh¬Ù; Yœq¸µæ±8mã9J?%EXþàï~ø÷€¿ÉEÃÚàùæøÇ€?…ôëáòn¯¡7HÕÎQLkµuñÝ{C2-9|á CaYнãˆzÕdyVvË¢ç{F¹{wcê“+‹.ã0#Í4UÏ`û(*{÷‡Ý˜VÝbmÞeeQÆpœ• xd¼ýh¬^¿æiß1ÎûZ« ̈’ŒýÓ˜ëKZýmI'Š×‡QFw°<ë0Õ°°-¥ËJ]þf¦¡hÖLZ5SË{Ãk랇™ŠèöfZ;G‘²MƒVÍâÞö˜ Ì@»¸¶b0qÁMW=f[’šlFlìGê;w‡,NÛÜZó¹±â2Õ°´a”¸ƒâû¨#Ø?…DÿO¤pØ}Ù7Ò«j_8€§›‹œþ äfjp)Ì7$)œÆêÝÇcînªs–rmÉe¦e3Ó²9î F:Û’ü7Œ3ª™ÁÞ®eší£T=“ Ê$§¶B*žÏ•E—ãn‚a(É×˶l„ÜY¯Ð®›¾O,`ô a¬ñ]ÊEkJ[–Bêö%eã¬,(¦5wcæÚ6­º©MC]¸HEaórùÞ2ª8„é¦Éµe—  Ò½­¶Q…£óœóH)X™s¥ûpQ¯˜˜¦"Óš(Ö<Ú‹x¼©ßÛ䫯UyãªO½bhÛR— ‡.ÒJüiàÀ¿ ü—|ǽ„T_D+®-¿Yœv8¦ePõMlS]Àë+ÄX¦byÖá´Ÿà:óS6{Rt,zþ˳à £ê]äŽ1lìG<ÜÕü´­ºƒD;–b¶m3Õ0©Wä|͉—Žm®mé_þ‰û' ß~o¤ C:˳{R@¬WL´–ëY´ µÏ5¸¹âѪ[ìDÜÝ ¸»5V S6oæ…ÃfžŽ\r¿„8÷¿ü[ˆCøcß5øÂHéËÿ¬ç¿»ÐÆ™z3à{wGJŠå‡vÝbFvDaš8Ñl„ ¦–êR=?e7%ZËŽÚ®[zc/TŽ¥¸ºäå@šì Ìÿ8ÊHSÍLÓâ¸+}ûÂéxŽäÕBfš˳÷e›¦b¾m“ƒ/©e*fš6žcðö£õŠÉÚ¼ËáiÌ0È0 XsHÍîIÄ׿T½pL:wDØ;Žé Sõp'À4å˜ê“ù)[½~Õ×­šIÅ3¨ú†.Îß4+s¶BÎ Q m›­ƒˆÃޤMi¦ËH¥ˆ&*žÁ€Ó3&4 ‰pvŽbv{êÛïùò _ºQ¡Vy""ð‘BáÏÿ âÞ}Ù7àË4óÏÿ‰©—} /Ë|d·ÿ?#8ô²ð5ȇ™úáñú[ßI÷·Æx®‰©ÎAq½£ŒÝãH™†¡² Lå9ÆäõÔÈ|Æ! ¸ËÓ´à+'àWÿR%þZþ»2ÜÏ2¸·¨¿ük§ê¿ú;]µy‘iPù]”¤2H3×¶¹¶äJ>yžsk ;Ç{!ýQv´¯,Ï:Ø–"ͤ f™Šk‹.ž{^±7 hÕ-ºý”ÛZk®.ºX†Â43-‹N_P„§g²˜×\jž„ô~"@ɳW’.hàà$BIŽíŸnX̶mVæ;1Ý~ÊLÓÂsŒ ÁNœhîo긗Ф(CQ¯ž‡í«s.í†ÅÃÝ€4…Þ åo|£«~ø`¬&›eI«ð¨{‘m,Ë ËäšÈ€“OgÜÛD°èb¨¤µ€œ®,x$©æoëLýG¿zªþࡎ3&üNÁ~tø7€ÿqæË¾1?kûãæ¦€ AŽýýH›/t±ð÷ŽcõΣ±ñÍwGjc7*[y…ï“^ÌÝ­1õŠÉ­U¿¬f+%È·Éç?Þ¹»yqƒÑùî]«˜¦¢êl†dn®x¸¶ÊohƒŠkÐ$±æÁnHÕ3YwhQC7ÉÇí`ë0$Í4·×}ªžÉÞq,PàKi…m)v#ÂXçÇ §ý„QqsÅ#ΧQ0Û¶/äòJv^UÔ ‚(c0J™nبܹ,LÙ<Ú 8êÆQF«nJñôàbÚ¤µœŠó-,Ë4Iª™mÙÜ\õ9&Ü߈òs¹LB 5Ô|ƒÛk>­šI–Iýäà$æW¿§þòß>5~ð`¬âäBt•!kàOÿ1ð®¼ì›ô³´?Nàg‘¼ï¬2±ð•‚£N¢þÆ7zê?ù›§êýÍ€¹¶ÍêœÃ¥Î:ŸZA)zƒ”÷7ǘ&Ü^÷iT­¼=xñöÌ4lìE*е:¨W =Û²qm)Èž%<Ø 0 ÅÍÇV4ª&i¦Œ,3§<Ü ˜iÚ\_öèÓ|*PÞ7Š5÷Cü­·w<*oxàÂÎ;ß¶9œOZ¦bqF°ú:Ó\]zÁ嘹(úu6GÝËR\Yp){'17W<¦–©¨WŒ'^ï9†^›wX[HpœhÒTs»!)ÊI/QýQŠ¡ßÿ§~¼¡¯-»zr1kÈÑ‹BSf[еy FéÑBù: ®mpcÙ£Y3y|r˜;ÃäT2Ÿc0?íЮY|ïÞHu¿“ð£¯Ux㊯íó$C»þ2Òý¯ÿDÙŽÿ¨:ÁíÿËHkïBOjµ}ñëß>S»Ç¦q1,MóâÓ`œòîãë ·×|¶#ú£ô©tºI*aðü”Íò¬ƒe)¶²à:ýQÊüÔù%×Àü´Íü”Í»ãraKÿ?ã(‡Ï´lzôœªslÅlK†€,Kq}ÅãýÍ€þ(e¶!ÿG#¢Ds{Í—âÜäñ*‡)GݘÕy‡Á8e®--ÁwŽ3Ž{1K32=è^*–M8CËTÚ2ÁsM¦š>Zû$©Öq¢Ë @Ûº˜çœ&ê°“(Ï1ЙæÚ²GÕ3¹·=Ʊ‡`ŠìrT•ÏF¼¿9–‘æÜLCЃÅgi-˜†õ—fÍÄ4áä,aç(dÿ4V¶C~úK5¦m}iúðGø·ÿ#BfúGÊþ(¶×€)öÍ0YÝ×ðþã@ýæwújjUñL¢XBïIsmƒ©†@yÃHÓí'dVfUAÎub¢‹%ª¾I£j±u2×’Váp,áûü”e*•ÿ,_c›Š³aªîoRÝÎ2 X™Œ¿ç4ªÒÿOS˜iÙ´ëöBNû ŠÉ\KÆvW纃”ÃNœ“¤\Yt™i;žˆ¤¾ùîHµê³-›FUvÑn_vÝq¤™kÛÜZõô\ëâ>‘¦š4C)¥0Ô9gA1î[,QðËßè¨óîÆ˜0–BÛê¼CźíÉ×,¿aœåœú¦Š“‹x€ªgèé¦ÅÃÝ£ˆÕ9—Š'àŸI³rÎ(ÑÜZóhäÈ»ªo2×–š…ÊÇŠ¯/ ›ÎÚ¼+‚ —N¤V1˜i ÐÙ0åñ~ˆc)Vç\Vf]fš6à Å4.¥)ªY³Ô(p}ªnQóÍ2ÞjT…{!?|8Rõwºêï|oPGÅ3ô/~µ®o®zúî֘̓4ÕR Y̶©¨xiÝß3Χ!Óì\Ȥˆ„fZ¯_©ÐnXtóhí2¬Ú± éXdò=U=ƒ+>×—=¢8+™Gšo¾;TÿÙotÔæA4 :,ÀCð!ÎàskŸgðSÔŸ‡‹Ã.¶CõŸþÚ©zïqÀêœ#•ð<ïÎ1<²PóVRñû“^Â;#Žº1†!ã©ÊEtèd¡kfÜß³¹2×vh7¬òÆš|~Í7éRÞ{áLC齓˜“žD£ ãñ~È´ÍÒ¬ÔLmšÏ%Œ3v"îJÛmde·`ºiq{Í'ˆ2ºý„VÍ,éϾõÞPtb5Á ¨WælA§2;Ш˜e1q®móÚºçœ SöOs8v~,IªË…ï»Ò¼¶äÑé'u„Éøò9+%”(8­Î9¼~¥‚k+înJz–dºLC”‚ÇûÿÙotÔwÞ©4+G¥‹®Òÿ2Sò¹´Ï«øsH{æ'˜@ô¥™xíÿâ·:JBû˜$“/ýκÏÕEß‘•$5½LH%šíÈáXòâ×Öý’嶸Ÿ PtöOcînŽ‰âŒ…)‡õy·ly³ôÃq&xí1vÃ'"’Åi×1pmƒªo²ub(Åkë>í†E£";ëþ‰t&ì÷bn,û´j‡§1˳óS–ö¥N#|× ËtYX,MŽ]ùN>ߟ»m¹ƒÓ$‰f¦e]pT Ø?‰¹¿'qªÙ> iTM®/{\_ö89ˆôîqD³fQõ$|Î4DÑ9×@¦aºiéù)›,Óœ Sª¾Q¯/{% ÊãýÇV:'p>-¸<ãðúÕ žcpw+`c/$N2žÚ·Dê-×àõ+æZ6ÛGïnŒé R*žA’ÈõšÉCOýá{#•¤úr4p© ü3|уŸ·" ûþuDh£ ùGA¦~ë»}¾ýþH%‰ÆPŠáXÆh%¼5ò‚“ÍþiÄQ7&J2\çI–›L‹sØ=‰ÂŒ•Y‡©ºÅöQ”÷—/Úr’,ƒÎ™ Ô´ë[‡!£ õ † ÓT`©?r³rØ3Õ0u«fªÀ²{,˜ùµy—Ë^εŸ À(ÿÜÁ8¥U7™iYúÖºËü”%»áŠÇÁiÂþIŒë(–g„HO]ÊhfÛ’WoD̶„•ws?¤â™Ü^÷™ŸºX¬ÔÀÜ”Í/ÿDSubŽ»‰êçd( S÷wöŽ#4Ф„qÆ\ÛA©˜7®úÌOY“ØLCˆJÑr.k¶ËuŸ(Vuú ªÉÒŒ ME2/òÙ– w#Nã Ä£zâ¸2yXõL,S±±w„YžJH:PЯ]xm9wõΣ€õE‡fÍœDNMÜ“ÿ:Ÿ#i³Ï“p\ÿ‚Pt•‹¿s–ª_ýƒžº»PüdH%Í4¾c°w—Ô…i›Ù–-€‘Œ§–Ê‹ªõA'¦7Ldg_]Qé/¢€è‚‚Ý“ˆäP³2ër}ÙŸ<Ä.Žíà$V£ £V1J޽¨¢ ‘(‘ì$©+ Ch®¯x,LYzyÖanʦQ1E‚‹ó<ÿúŠËîqÌÃÝÓÞS’CoFL7lªžTû·"v#KñcíÍšyq!ihÕLýÕ×*e%=ˆ4iÎT¬”¦â)Õ¤Œ‚ŒN?áÊ‚ÇU—[«žžœr”ë¨ #MÅ3Yœ ñ£®ÌC¹{Ÿ§jƒqFÅ•öhQpÝ:ŒØ;Ž.H©]¶šg°8#ÝÇ2ÄQåSç¸ qF'gÉÔ¥Ÿ¥Ìµ¿ñ{?ð­÷”ú¥k°¶àL:ø#b0ÿ2pú²Ì±Ï‹ð‘‹ú/r>Á'ža¦¾sw¤î„¾8Ò*SÈM¸y )Å•EvÝâê¢ÇîqÄ`,ÈÀbš-Iu)¼yzfqmÉ--û§Q,áno˜R¯œ/¥àõ«>ïnlîKŠPñ¥2犧¯,ºÔ*F¨Ó“µˆIN>…8‰p4:ÎØÉ#c"ƒu,Þž –g]Ž{1¹èíuŸÛkžv¬’·´I e*]¯È{¶ê&˳‚y¬Ô<¨UL|Wa]f%Ê™®­xãª_ª]nÑÅ©—6ª&^N;'š½°l>Ë<Ç`aJøÇ‘D:+³NNHÊÇ/×Õ(µç̵e£HRru Jú+¿ÕQ¿ôcMî\ñŠóÊõô?@ Äÿpø²΋ìóЬÿK䂺L´}l‡ê÷ß*ÛVžxQ!.  ª)Øx]Pwkº!Õ˜ËQpíºU of%rî´Ÿ”÷Ik,CŠz™–¢œç„qVb–Šº H£*ïSõEu§@´^_–yùÂr¿ #ÍÒ¬ÍW+|ýK5¾v§ÆÚ‚£k©ˆ-¹ sêüOœhÂH«ý“Xw%rù¹¯ÔõTÃÒ™Ö ­T–i¥5zeÎÑ™F=Þ©WLlK•“{SM›Þ UiŠ2 ¥´Fég|@vR×1¨Uà: ã)OV Ž;‰êôSµ³±’¦’–œœIkOŠŸŠ©†Å\ÛÆwMN…_a0N™jÈâì]"3mçíÙ™–cKaó *Ç‹ºñ…î€tRŒ²õ:Û¶¹ºèá9{'1[!­šÅpœqÚ—vrj6öBåÚŠ…)gòóB/wø;¼âD¤¯zÐDrªÿ>Ã<?|0Vó›=„š/]¯`ÛÒÂZœ"‹“^Lk¤—+Š:At1> #)Ì=Ú hT-®,¸,NÛìŸÄç›ÃÄN!„ŠQ˜ñÞã1ÍšY¡’Çfy@!»JAåÝ$,Í8\YpÑFVY&ÅK(•~óº‡eª'`µO,øüßIgýTõG‚"|ûÑXõiãõñ\E˜ñW§«FA¦ª¾Á|Û!'À»#öN¤nquInz×6øÁý‘z¼Òª[Ü^óõŠàé ƒœâËÄ4ÎÏ¡8Îò˜Ÿñ¥æ…5õ`'Tï=s6JË:€‘wMNã„vÝbiÆ¡YÈöû¥ûQ|^’ê±WDa²kËm½{,µž¨ååêâu­zÂIp£àB8Ž8鉣ð\ß5Ø?Êû¡HëþÖ7ÏÔ8Ô|ý­š6ÎJ éNùÈ$꣗½že¯²hÿ&"øP¶ù´†ï¼?T¿ö‡}5Î 8½aŠçlìÌ´lg¦mŽ:qyÃx®xÊ›µh"!þÀƒS£Ìõ[Ñí }r·°L©¤©æ¸+Sx3 ‹+‹­šÅ•Ås^=ßm¼ÁXä»7r”ßí5ŸÌ(Ç> øëä"*~_X–IÁsï$æ¨cJusÐO·/ùs¦åß·×…¨äÝGcu' M5¾g€ß³aÂi_æú»C:Ï·mFaƽía1 "!q8fê7¿Ógÿ$Âs Þº^¡Y•áš>;™¢LH{•'š;¡úÎû#Õ¬Y%ÚR)r]ƒ”…)§œOèö6$’I'ê5ZKK²¨_Ì´$JЙtxFaÆ$ÅXÁC˜éÜäŸY«˜e¨_ *OÏ.’j9>aRs¡xß0Ò¼»1V‹Ó6W—\LS(#ò§ü ðG”‹¾ìõ4{US€µüG™Xüi¦ùÆÛCõëßî«0:Ï×\õö°sÜKèœI¥|6ççwmEé $ yÝ|Û¡?Þ¹8•ÁŸN?¡âš´ój¾eJ:I53-Aâçýs­!ˆ8§ø®Áâ´ƒç 1¦R°w,7b¡ï7Õ°y´2?mÓ®™OÝ)‹”iÑŒ3µwœ¨­ÃÈøý·‡ê·¿ÛW÷¶BuÒK™ÍCÝQν¯µTë+®¤>­š€u ®.xh„¥¨êËJ(¼¼¼(Ð[‹Q˜Ò¬™Ì·E9È4û'1~Êpœ1§8–©zƒTmìEê›ïÕ{•iAîŸ$je*MQýq¦vcõß93~ïuÔI¨ç³'ÊG3MtGšý€ÝcÙ…çÚLOÌ_Ô«Â_0Ý´©x‡§1òŽc÷.Î Ô*ÂV|ÔiTDPeeÎ)ǨOz [‡ý[ñEH‡à sþ=*u>À´<ëÒ¤ê 3Ó²”c_Hy®o¿Å+(Pò*FUà_ãÒâ×¾õîHýæ·ûê‚ø…’бÀyÃŒ0­¹ÃNL».L¹¨æ¨Ëhm"Z÷Iª±s0Pñµ‚Œa “A½(ñÎO9tú UÏ(‰@ áOÇ’>õî‘€|¦ò! fÍb¤4kVI×]ˆmnF<Þ YŸwÊó(hÉÂX”{öŽcÞ}<æ°+ß1Y™uP†83Ë’I¼…i›Q²*¯_©Åžkp;àô,¡UÚ²ù)›0ÎxwcLo À¡;땜oOóÞã13¿¶æóÖõ*h¹ñ÷ObfÛ6ë îøq¦T³u²{£Ñœ SuuÑ£;HÊÚÌÙHj Û‡q‰K8<¹±â±8#ôf“ßßÞqD§/)AœdDùnz&ƒ\sm›™–•GtÎßW£/h.@~Ç’úÄíUõG)÷·†ã”;W*Œ£'GþeÆÁà´Ÿf`¢²<›OdZ¦Â4á½ÇcNÏuÒKôŸúñ†ªxÆd$ð‹ÈHñ?ì¼ìváü^±ÀEzþiòi>…,ŠÍƒH=Ú‰Ô0HIR.°à¤eÁi’%6Ë ?Î0dP%ŸŒs˜nÚX–"Iu©¨ûD!©na(Å£½“¼-ת[4jÒ~J³sŒzEŠˆ{ù„Ù0Ýqºi§‰ã®PqïHÿÍkæ§l¢D«ÃN¢íEjï8QÛ‘Ú=ŠÕwïÔýPÆͪ•¥"USÂä¶ì|÷wŽ»1ãPŠ\•¼Ý–åÅî醰 ÷b %E5×1X˜–*úþi\¨ù¢¯aSñDˆÔ4~Bo aqáP›5a z¸’fd ¢ Ë”÷oÕ-U‹ƒÓ¨<¾fU ƒ³ÛR4«ÓM‹vÍbfl„ìÅ4«²°z9æ¡`+j×å}—gÅivú žc°y„ç›B£"ת ¯æQÙâ´ƒe*º>ïDŒ‚ Û–Ôï¨{Ž €ó"òâ´ÃI/¡ê›¬/x,ÍÈçïË ˜¡T9žÆj0ÊX[p.G·nŠ_F/{¡ö*E62ÃÿÏåÇ¥dšßýÁ@=ØÕÚ¼ËëW* Æ©„úýDÆBó¡›02I¥:M)ùògš’ó7Dë'^7iq¢98éœ%¼qM<ëó.ÙœÜRɈãó¤âdÜÝc«·”£ýZ¹:Že*¾w¬Ž:‰úî½!ã@Ú]·×}´–I¹FÕ$Š3fÛ’6œFT}“;W*¸¶AšiÖæ]ÚuIW¢8ã½Íªgp%¿Y•û';Gâ<®.z¬Î9 û'G9ÿßú‚K3ïZlÈ‘Qb—馅mÉçœÆ´jÂUÅG˜©ºÅ+>µÙÆ^ÈLKz炽‡Ý“˜Ûk7W}*žäΆ2س} 5ªïù);¬¦òTÌw ‚(ãÞVÀÙP®ûLÓ UHÒP:®é¦ÅtCj E 7 2î6ÇR9æ »Pc0 rí:¿Ï¶B…¤ú´t’‰Ö匠ù'žˆþ²øÿ^‘tàUrÿ$Òë/[}ißøáPýÎwJS ›8ÎGK9\o(TØã@†{*žQ’ZÀyq %`’N?a3”›»Y3Y™u™mYø^EÂß~òYfñ>䈱ÍÈþ0eªi1Ó°ÊlaÚ‘A’0“]-H "IÆQJ­b `ÙíFʶ•çE§™–MfÜÛpƒõy—¹¶´»fš¶¥hÕ-ðÎÆ¥àú²ÏêœÌ!QÆlÓÆse.ÿ¸'»û|Û.)¾²LèÊë“Å'EIQt÷8=i‡ªgàäNƱD:lû(fï$bqÚ)•ã%Æa†ëlF÷bú£”Ûk>kónɉ ÎÐfó@œYšÁW+‚JÌY†‡AŠc;¼¶îËç§2 c¢T¤E çæÓz†Êy+&µŠ8ºþ(åÑn@w²:ïàå““ÑžëœC¦UþÿVÍdºiÓ¬š±f÷(Êy ÎaÆÍš‰kœöÃ'î—<)ÛRúOýxCåxŠ¢;ð#cÄÿ¯€Á«âþA$ô/'ú4ðÍw¥ØU°Áœöb¦›6÷¶vŽ"Z5 !o,‹ªŽc+Úu‹þ0-+Æ ÙÁ“Dç#§“^¢Û§”ÍI/¡]—ÜrfØ–L á>H>¨ E‹ïîQÄI7æké1·m–fÆaFÕ788•¡¢4•°Ôw ÞÝ3 îýöšGšIÈ-»·¦Y5Ù<”ÐÒ¶4¦ ÛG½AÂòŒÃõe4•šåÓTøŽ*µæZv9À”å£Áy¦—WÜ3%ÅÏ¢jç 8NÞF³L©æÏ9mæ¨>Ñ7tó]º'Ž%इ»Ý~µ|(DZ®-z‚kó.a$†»Ç2íh‚«Y ù]eÔ|I,S^_p1f™¦âUhTD#A#Eá0–!"=mç©‹QÖ înéS¡.Sçzˆ“V´3- º]·hV-IR’TŠ‹;ÇQ :*j?íºE˜^/·BöObµ±éë+"ý6áþq„Xä $¼D{À/!â SLôù¿o¤~ë;g%»FBÃ…i ‹OzI^õ)D'çòXóM:}iу´œð*ÂΊ±R­%ŸÛ=––ÏTCh²|×âΕ ÝAB·Ÿ`[‚¥+0é(Á†bs7`0Ψû&‹36Ž%H²fÕâl$…«Q•;ˆ—dÞßFšÅ©&ÃŒù¶@O %¡4•\×u©vÚO˜mYÌMÙå]Õ¬ ûog„1¥âoñ™ˆGj‚PPÚ(¥àeAT~¡N\l5ÅMi›¢$d[‚y¯ù¿ˆLC’ˆsŒ³|÷Td1Zë忪gà9¦!éˆeJº1çØ¤™ìèÅcI*פP9êÆT\ËRÜXö…½AÂÎqÄLÓbë0â,真²™nÊ–eŠàJ½brçŠàÒLj A$Œq(õ fõ´¥}>'‘‡þ­ºE»nÒ¬ŠSslÅi/fc_‰ e§©†DR£ðɾêIäÓé§²è+&Su‹fÍÄÈ•’3­yçј ÎTe|ý­Zš*˜‡ÿWÇàÿïe-À—é–¦Õ7˜XüÝ~ª6÷cå»’ûsûÅÂ=é%¬/ºxŽQ’y7ú0qr&’V5_"ƒ™¦]R[­Ï»t)£@sñÄ„ÙäOÓÄߣÝËŠ¨¸+sB)½¾à’i¡Ð¶-Ñ0 …ahlSѬ™2×ßÙ,ß•›uçH)‹Â¼~µ‚i(l[1¥\[òò°]•„%Y>cä‹å$WÎò†µmIícqÚ¡U3u³&-µzÅÀse±:¶*oLÓT\æ:ÑQiJ¾°4ãP¢ˆÁH”ºq4gÃTvârn¾^1iÕ¬\áÇ`º!ØÇR\_™.€§Öæ]@ÙŠvƒ| ªÂâŒÃ8 0r¤Ô"D\´$iɇ¤ú#á½µ*Þ¬pzY>*lªÌék¾D …pé8Öå~~Í»ÃTDQ'†Šj¾`ã$»pPE—§mj¾D%£0cÿDÞóê’Ëp,íd­áï|¿¯ª¾ÁܬLÎÌ"x—]à[/c¾,Px¿_`‚¸sÿ4V¿ñí¾jV-^[÷…·o,äýQJeô† YæÐª™ì\ôÌq¢‡)ͪU¢ôºÃˈrÊ'vŽO3Í`$;¦iÊYˆÈÍi‚LÎ¥ºö€”½€ªg–9£ÖðÆ• a,»‡kKªPõͲêÿp7à$ZÒL³±23®¯x8Ç̶ìr¯¨;ì ¶ ¥nŠZÅ`}ÑÑÅ”ÚTÃ’ÅîºÓ˘õï‰ÿO˜Ò—S¤òú¼ÂÅBÿÕí'uöOcuÒM8èH8l™Šé†Åtîx][`ØGݸl‡†±æ suÑc}AŠuY&5 ß1°Ì‚·ÐÀO4{'ƒ±°§™.#À"¥ò]£\ÀÅM±8ã`™Pqe'·-Ew A˜‘f⤊èo2ÌWJæ ²XÃïUœÌJÈP•ÔzzÃ$%†©º´!…„ô1økß:SUÏàÖš79Ex ‘$û‡€­Ïz!¾  €©†jr2Þ0U¿úûgêáNÈÕ%7ï— /þ꼄À£PÂó(ÖL5í'Tq²LòÄvÃÂ4%§¹iφi)›5³œºJBA×6rý9 £GA†i*Òð¢ò¯ï¡äÕ£¼×ߪ[l†D±.«ê™Ö,ͺ¬ÌÉMlŠÅéÞZ1Q†¢]7Y˜–ÿljô×5;,§gÒ{ÏòhyÖÖ+ó˹ÚoÕ3´•·¯J"ûüX'ùú?¬]ž£¿øÙU+®ÒÏ`nÊâÖ¤:ˆ2Õé ÉêÖAÈþI¬DYÈ Q³¨ù2VëXR|ãª_Ö_–fl2m—׿⠬»7LYž®ÃÃܹœô$¿wUnʼn.¥ÎëyŠâ: -XÃS©Ï\Yt 㬄ôª¼†£”*[¸:ÿ«H•¢XŽ¡U“"®pAÈMüþÖ˜î )Gʲ‘͵mú£‹’m…àËßüƒ3UÍ¿O­ËüYüöOñs ¼ ðçÿÒ÷Ïνc_˜rud7Œ“Œ÷·"\[å4ÞEqN*½×–m6Ëî˜hAœÍO .}ê2=Hò°ÖÉ%¸GAÆÁ©8˜×Ö}#É;Wj"DQÀÖ2áÖi7uqù­Õ|ïFA”å6wƒ\Ä)uòL–¦'Y ÂnÙEHSGšU“7®ùúÚ’ÇÒ¬M³f–òâÅb¿<3ðYY±H&cÅ5tÕ3X™³ùÊ­ Ãüúnì…<ÞÔÞq$Ê<9Îßµ¥npØrΩ†Åþ©01ÝÉÛ£PF”_[÷™nÚœ ²LÒ¬õy·äQ¨úµ<ÝŽSvŽ¥MyÔÙΙ  AQU¬ÔüEÎ$Õ˜¦ÂsÎï5ßHqIMdÿ4b0J™›nIhyq]ªžLŸ^ÆÖé'¼ûh¬¦›ž£&1ÿ-à=døí3ûV?kð"ÎÙ&Ïû³ ¾ñÃúáÃQIµ4 ¥p·0ípÚO cM DÕÊI"o,{Ìäâ  éÒ²uWTÝË„+]=[•NAC R9èHîVäÓ7–%¯lÕ¤5hB(9?%¡aI!/Íä&´- -À&f¾ËKîœ0Û²Q†H»ŽQ>ïô,á¨3Ž2ê¾Ákë·V=½:ïШ ÙG±Ð³—°Ø?¨•H¾ êC7*.7V¤³qp’po;àán¨Ž6â=Ù¬JÑ̶7–}zC©¾¯Ì áü1¯ä 0 ÁKœæ°å~®L|wS EŽîï‰t¨ø©”HˆU}Cøç][¦F î¿‚Ž}0ÊÊB¨a@³*ƒTI¦ŸèL7…¡—+Bî+“©†…RŠ{›¡º½î2°‘ñm>âàgé¦Å›‰¢ßŒÕ7Þ¨IÂG­áà4æÎŸfÕ,©±¶{r&tQ÷·ƒR9§Ñr,Åê¼C­b2ËIe9˜Q~S{鲸%šlœ‘å´\GÝÛTL·lÖæ\Ά)¦©˜ª[Ô«‚¼»µê m”¥H3xýŠ_VÜ“TóæµJ¹ÓÔ}Q¬9ìÄ Ç)J)æ§mî¬{úƪÇtÃÒ–5±è?§Št“$%¾cè«KWãL?ÞÕ;÷C•eš¥Ù<*p{ ÔgSM™èÜ>ŒXœ‘YŒ½0­Í»l„ ǰšiÚ8¶b9¯ƒkŸó˜†`ö][˜’«¾ï8ŽQÎ œäूè´Pc*£¬|Èw vÏGƒ!_Áyíã¨+Qb£*€¤Fž–X¦Ì"ucÞ~4â´_ág¿\g¢30…`î"ÑÀ§nŸ•0:¯?“_+ã¤ê»÷F*.†8&f­‡ykk~Ê~Bh$”*h½NòÀ4Àιÿ„@B—Ì´…Þ_–Áü”€}¢X†Fçó÷EWìYA>>DûBa=Ý´¸fÜÝ'š•Yq8{B’¹<ëpp*…©†´Ãº} O»ýÏQÜ\óxëzE¯/8T<£zú¼.úgÙd}¢V1xóš¯o¯{ž&¼óhÌû›:î ü·]—9… Jò Ž%šq")×ÒŒÃtÃ*•…ã|®£€uÛ–¢^5¹±âáÚÒ)`5äÑ—teêU“{ÛÉDGÈÏÇÇ/ÜwùÀY–˵ß—‘ƒŒfZDjçrk–)À`œ²uQõ fZ6÷C†ãŒoüp ¦›o^ó'‹‚o"8ÿÐÿ´¿›ÏÊü=ÀÿqY^QïnÌ·ê“Á(+ 'Q,¸íýÓˆ›+>Uߤ?|² R èôs5›,_¤¾I<Ìgà]ÇÀ÷„^kªa±2çb¨²õ…ëHÏÙwEÄ4UÙÛ.Ø}kSÚŽZnÊv]n¾QáØŠzUŽÃ4U9H4Ó´'"‰„³¡z¾r»¢¿t£ÂÒŒ­K½´\þeXI·f(–fm½8có£¯Uy÷ј·• <¥UZP©Õ}™öƒ;W|ÂHùÒ¬C#稸•Üñ¡záã”Q'c¶%ßÇÝÍ1YîhWç~b”­CòcóòºØ”Šp¦Y•¢¨&›T=“šo”¤!…Ö¤HÉIä§R·Xš©Hºf¥$Üoüa_M7,g.ÿ<Òü7>íïã³p×åžÆ?…ßþ^Ÿwêõ+>–©ð\ƒvCz«¸eœçðóm›á8½PÝ–T ¡]3Ù=>ß5…k.+çµ"›r–3æÔ|“»[c²Ü1T}“ÇÉ{åFE(Ki‰aRq 2­yãZ ½~µrN„aZÌ·m £(¥lì…œåýê¹YÑ_¹UeqÆÖyµóúOÛ §7Õ0õO¹Æ[7|Þ~4æ{wGê1«sN9ë? J<ײ8M¥n²0å %¦¾-ÈËÇû!ý‘ÄÜXñØ:ˆ„q)Ðy®Q^ó"7¿\P5MÙÑ‹éF×–û³ØÝ•¡xýª™KÉg ‚ŒQ(5«‡»'½stoÑ¥)"‚ƒ Ê8¥D¥ø×ÿðLý¹?ÑÖU•id]þ À¿ñi~Ÿ¶pßa"ïûÑX}÷îHE±fï8Ê'ݲLkjžäN3mËP¥tõ8`Å8Ïz62 ß‘ý¢†åÜîU?Çþõƒ$+ÃÑa•c»ómá‡?íņR®Ì:lì…dZç@‡“®ŒÄ6óI¸íÃH@&9XÕ7hÙ£@ØhöOdà­k>_»SÕ+sÎ ÿ)V,¼FÕÔ?õfׯø|ïÞˆ>«ã^Ââ´-˜ [‘¤ ”p/;õޱȤ·ëféx“\WÐsŒÒ$™¾È©˜‡î hÛ’"`£*Ÿµ:ç²6ŸÏèó¶áöaÄÙ(!5q"½ÿÕ9™é Ó'*ÿªñ°—ÊF… ì„|û½‘ú™/×&ABóÈÆùƒOëÚÚà/"í2ï?8Õo}§¯ Ê%aQ±™Ÿ²ÙØ ã´œæ“Aƒ[«®­H3E£ê”_HšI¡geNÐeaœçƒ‰„aUϼ@§ºìñ>yÊNŸäù~iŽ{Â$Àþ $ øÕOãZZÀAæï0á¹¾swÄû›Á.w¥ß?×–›;ÁÅwR2Ó>Ÿsø—J´y}`f\_ö¸·XÇøh½b2?eçìµF®[/ùÜʬ{ÊÙµ…íviÆ)k†Æy\ålB¶P‚ÎA?i¦9ìÄlî 3ΗoúüÔ[u=?eiøbá+öeW/ÍØ|÷îˆo¿?R½AÊÒŒD‚½a’óFBev¥Âq7fÿ$bº%Ó¡ï?%ª´6ïòþÖX´@èТLx óϵs’˜IO!)¶Õ‹.ò (ÑDmÆs½¢í(Ý(™A¸½&CL–u®7aߨ 8ê ]ÝŸþɦ,’¢5ø¯ßåSÐø´ÀŸþ&Bÿ³aªï…ʵ¼°¦Ë¢^œÊ ÌeÊô^/Læ¹Õlþ(Û…H¾—é<ׯŒCÐHѯËy£–©¸½ê3Ó’Ëu ÖæöOešÐÊQf‡g '½˜ZE*Òï=ãØŠÛk>†!=Þî@FWOÏ$Bù™/×ôëW}]–¾°OÆ2ÁúëŸz«Æú‚Ëo·¯ÞÙ±0%4_†!¸ÿ4ª÷FÕdûH— ä…aÇ:—+ÉaÕD;?¿§Ç(‹ÎE `xìÆ9¶Àµe,¸?évß5ó4EÀa®­ˆc‰&ƒ(“:@^ÃJ3ÍÍŸ ’•4ƒïß©õ‡7¯û“©ÀO i~¢öi8€ed÷¯2ú¿ý0P3M›VN|Q´KŠ‹'š Æ`<¾Ð ×<øÆŠGÅpšH!†ãŒVÍ,ŠsñOß1èdyŽŸÏÈÇùl€Fd²Y‡N?ål˜PñDôã¸Ó¤L5íBÈ’é¦m*¬ŠÉÞIÄ£½,Óܹâós_©ë¹¶äo_,þOÞŠkº4kë?÷'Úüá{Cþàí¡ "Áøû®QN¼~¥"B.9’•ïÈ…Z³ÌðËta1u)i ¤˜C¤åg™2,T0-Í:2½™X[–Ê)ÅL<× N2‚HÓÈæÑª™¼óxÌ(Ÿ œ¼7Šõ½ÇãRÌ&N4¿óýZšu˜j\Hþð_¿ÿI^×OÃü%à« ;ß¿?â·¾sƵejŽ„sòa‹zÅ.soé­Âk†OI>ÆE¥U¢†™–Å8L/àể„¥œß¯ï-¸éüB.¿ð (?´|Dv…‚XĶä¦)†@²LTh-K‘¦°s²¹â:_«®¿úZWpÝ_اlZƒg+ýõ·j,ÍØüúöÕ½­€õ·ÔöslEÝ7‰“„8Ñ,L9´ër«;¶´w¥&¤K£VMF°ò]¸B"ž# $ÃpÏ0ŸY˜rŒRî9Y­. ‰ÓÍ ÇÝ‹s“içò¬ÃA'¾°¡)%lÉßøá€?ýÍ¥˜‹ÈÆúßáú¤ÀO *>ŠðsÔIÔï¿=TA¬Ù:ym½6öÂ2Œ*^lK¦æÚ5‹î ¥î˜æù ¸cËãÍšUÒbe©Pd{®\Ð0Wªµ.'º¦ì’þªâŠÅ•E!åô Õn®x¨|¶ž¼Bìä³þ˜…i‡8g®=8•šÄ/|­¡¯/»º$œøÂ>+.õµ%W·ë¿ù¾zsÌâ´¨8ü…ÐéÕ%»[c’TscÙ'Œ3öOc”’ö]œhöO$zôÅÚ‚Ë£]Á©Âkë>‡˜£¨Ì [SŽ{ “ä5 ¤#¾c”\—ûNK36Y&d­O³>«;W<®-¹:;Oþ B,ú|R×ò“t>^X /ü%©æ?pšWýy|yÖál˜0ŸïìAt>o^YõÙ=‘ÜÝÊ€eÊb¾ºä'2ÒYàí ²ù)› †Ÿbww,ƒÕ9WäZ4ضB¡ÊJ±aÈgîÁÅê¼Ë`”²ur{MØk—fzƒ”G{£0ãöšÇ/~­¡g[–Ξ3_ÿ…}º–·ùôßõSMýï Õ7~8Pã0ù27V>Ë÷i÷yŽ`ó‹«Õ¬š\[òxs\G¬Í»x®â½ÇRgXžLùÞI$QH~³Ü^óiÕDx¢s–p{L’i~üõªþ¹©SÉÛ{_ØËµ¢-üÓ_ªévÝä×ÿ°¯6BÖæ]ê¹`«ÖåyÍÂsdC©ùa¬sXrñf`Â#Qðü@av>/L<‰"ûv>3 f¾»5. ‰“Òr+³ ÂŒfÕıT™v¸yñ°V1é26"umÙ˜cä+ÈœÀ'Rü¤À4Âu.=ƒq¦~ï‡DUZ’´H|fZ6y(VX–sÊÝ^óiV…[¯ äÖyqîÊ¢‡ïå¢sÐF«fb(qã RÈ¢6 ºpçÈ.ß•4ceNò}×Q(e”­ÀÓ³„{[(ø“?ÚÐ?ñzU[_Tù_)+¾Š7®ùºV1ùÕß漢»RˆÍI/fqÚÉÙUßäõ«•¼m,tmW…º¼¨ö×+&N,Ñi£"Ñ¢i()e ÑE—nŠ‚G»¡úáƒqÞ]¹˜…±\Ì…i›Î -§° +0ûõ|¸´œ¸a¶e“$šÁè"%ØÜ”C˜2ŽÎ‰@æZ6ÃqFe89;­ÀJ%´Ÿjä†AÅ3ç¬4§1÷·lSñË?ÑÔ_½SÕ†¡øÂ^]kÕ…AêÑn¨¶e°¨Q•Exx³y1ݰ8ìÄœæ EE”Pè ¸¶A#טiIçʱSM›ù¶]²6ûŽD3-»Ô¡œkÉTh’a¬Ÿ“§±j»aå„!G]!<Ù?88B×1ðsïçEÍõ¯¸×5§ð7ø˜è'¬ h%‹b÷e긛ª×¯_~œJHUx¹‚翘Í>8J«,tÖi?áÚ’[öX Óš’¸ÓÏs²¼ƒ 3ï´rE)ð¬Í;Éû² Þ¹ݶCNz o\­ˆãñM6B¶eöü—¢©ï\ñ¾Øó?š]¦ãøTMk˜o[úÏþL‹¿ö{]uo;àκÞÂ3“HŠÌ¦âý­1Y&Z ÓM›ûÛc™Ê1…Ø´7H9éÅ(C€‹3¢&¼±'hÁ‚*LŠÔ&ïnȘ¸F£3©W,͈s(h銫S‘‹)ÈÍýðBgàÝGzãj8Yøû€ÿ7ð»çz}àF˜~Êyöo¾;äí‡cn­úŒ£Œ“^Œk¥àDÁÏÅs-»¬ÜStYŽô±MÅÍUï É.ÛTض!“yZ—íËTÌ»F©÷—fò¤9ÝVÆü”¡ïnŒJÂNËT\]rñ=Ø=‰Ø>å ?óS-}cÕý¢Å÷á¬Øò4!l7ç:ŸªeÚ Sÿ=?Ýâo|CÒ›+‚Â+tçZ¢2åX +/§y÷ `kÊ49©ˆ‰v¢`°:ïÐ9âÙÂÃY¦äîÇÝä¢=‚.]œ¶98d è)Cë‹¢‹pØ/áFaƼ3T˳¶¥4çŒÂÿ$26ñíã:€kHø_¶ýNbõ½{#Uä0˳ÛaÆÞI\ú&‘TW=j¹Àe1Ç fßÌi¤óü–’öËpœ–ðY&áÕlÓâÝÇc¢X“iAZ¥™Ìèœ{ζÀse|ÔµE$ÓÉá™G=á±kÖLþîŸnéëËŸÙâŸ\4Ÿgw£òW¿ŠP^_EÚWbâ?UÓZ†ŠþÌO5ùëßè©û;×—=t¦9ìÆ,Í8¬Î»J€>W]zÑ)„ó1^Û–ZP81Åç¹®mp6 Ïéåäóp,ÅÉ¥™®@¦…ÜäiIäʬ (mDeá°0CÁÇ;!w®xL´ÿ,20ô·?êuú¸àB†~J~¿oß•PÞýÓˆªopuÉã½1A|^´ÓZ<îÎaÈ+ª¾ÉÞñEGÖ œ×4G‹ZïÏ ê™94e±o¾m—$kÇ埮£Î™c¯šx¶*™‡gNº1v|×àÏ|ý3[üÅÂ#‘‚¢ü<:Ä×ýÿ–‹*¸ÿ BxYlŸ‰¨WMý+?Ùä¯ýnO½÷xÄeŸ©œÊ}÷8bfÜ\ñË‚]QxíJEˆ;òÍʱ ÜTç2oR,ÄL‹‚òLSèÌFùL@q‚Ï`¶e³}–æ“6Ý´˜iYÜßÊqáËÏ2 ÅQ7áF"ä¥ùSšˆÌØï!Á>Nð*ÂX2 hCÁîq¬~ãÏT419‹²NÕ7éæ½Ö”‚(ý§ºýœh1¿èE®¶˜‹nÆé$ØB•ta§»FB»Q  £LHFrµ–v]/k!êÜ:ñ\‘¿ªù¢Êó`'Äq¿ò“-}{Ýû¬ü§À¿ ü_BÈ1Âèñùr²ý³<‰Vß~™uÿÌÎËsDÔeó R{Çê*ô:ý„FM6ŸGû!–%¼g©î7«¢ܨZ̵E’½Ý°°LiÛ5kR3’á3§ñŠy[[<Çà°cYFÞò“?‚mñc™|­ù2X«´õÂbµ<çâ9†ò=|™°Uà÷€GåÚ|ðO óþ€ÌOÿöwûjc?R“…ò$š®•Y§XLšBRG£h@î bÍtSu{ƒó×&™tÒLEîʢݰ¨WMfÛ Ó¢Šã^ÂþiLÅZð$Wóõƒqqw;À4à—¢©ß¼æ7§RDéŸGØ`÷‡À_GÐÏ"“•Ÿ+¾õ ø­g<ç á¼û1>cÇæçÊNwCu6FgÏ1h×…L4Š…k°êIÕþÞvÀq/Áµ…Aèþ¶è„‘´é†9ˆÍsL¡›kJ-É6e\|*F™o suÁT<›w Š? 9„]¡hÕLÚu;×Q0ñ#OU´–¢e·ŸªÕyÛ,™˜ÀÉGà ø¨)À2¢è{ù=Õ½­@]_òô)Û‡‚Œ%ä.-_äÛG!×–«S!;â¿ \š&þàç‘ÉÊÏK Žìyö©±Û<Ï„˜ÃÒú'›ü—¿ÓU{'KÓQ’‘E°0-c»“õ©$ÕX¦lPýQ><æ,g¢õp6™rÓTܹâ3el× CtKóh/¸(º¢E feÎåÁN@o˜”ß²¦Ð‹×6¸·=¦Û—ºÚڼ×nø“ï÷+À×HàCÙGuÑô++ÿÝ~Êò¬K’‡éYv>Q÷̼¥rÒKÊÃPåOÛTÜXñ#]ªÙšf1v)pa,LQœ1ËèçþiL˜JW!g–Ý;‰d0úL7mfšô9¦Ø¦z<ÚYëŸx£¦ìõêg½Ð~‘‰~š…À +‹ ú«l ðâ™õêË:ÀLÃʬ­ák þúïu•RŠvͤ;Nñ\ƒ(AÇVÜ^÷é d:´7È£R-…é,W›.ÒÔZ>￱'9~Q¬z’^nì‡7=¤ê?Ýš°£nüļ€Ö0Û¶Yœ¶ÙØ¥Û $¢þî½7×¼¢¥3À™üPQÀGqmd÷7)vÿn¢ÞÙÔLÓ"Œ…YY\<% ½AB£b²2'ØúB¥(vE(ŠÓ’Ž+Í70×v¨¸2:ç|o®mðæµ a®Ü¢ºç¹¶Ì¸¶€;*®ÁÕ—T "03ª¾É£Ýý“˜×®xüì—k%ÕØgh£<þ Ç9ðãU·3àô9ÀÒË<ÀLÃWÿô—êüڷΔcyÌO»tû‰Ì›Ä3-›š'l?–¥èRZ5¹ÇÓT— Çíº(=—*ò‚ô”Cgt&t- [šƒ#)|?m^àÊ‚Ëþi|¡s`(Ø>ŒÔ£Ýׯx“¸€? üÛ¼8»`Åü“ã¾~pÄÛG¬Î»Ì·… ³;Hžúâé†ÅµeƒÓ¨Ëœ´Bèqÿ4¾€ÇÎ2»Ž"È…Ž’ŒQ(_ÊI/Ž%‚·Ö<)Âäì®ï=3ÕF˜…‡½ãˆÝãˆÅ›_üZCûžñ2zý³/x| ‘žâÕ@vÿÞswyÉ °¹YÑ'½„÷U½"»þ•—Þ0!MóY ¯_­äjSŠ¥Ù„Ò ^[¯0 S‚0cºi•x€"ú­x¢ñø ,£b8oεmí…e$Q˜FŠ–×–<ÎF)ÛGO¶ø£Dóý{#u}ÙĬ à OÕ¸ɧG¾ûwû©zw#PZÃÎQˆc)®-¹¼¿)!úeÏ'Š>1k .ƒ\±g*¶wñúÕ ³M«ÙTÀ0ŸÎšiÚ=äËa8Θi‰dw½b–“[IªÙ: ¨ûRqn0 ‰vޤEù‹_k虦õ²{î !ñ³æ»OûHºõy°}ž¬gLZ˜{Ù ’ZþÌ—kœô„ÕéÊ¢K£j– µfÕ*7±£nÌqW¨Ç^¿Z¡ÓÑ’Šgˆ(©+÷\³j–D7®#ø´°S²ë†¥7d!\%7Mrùy‘MOÓsPÀ ;Ç'½„Å{òõøw‘MãÙ‡u?üÉâ? ¸»”Ò]Y÷Cn®x\_öysD?©Ÿ¶}Q¯Z¬Î9%Ñgñ~£\·}aÚáä,9âÑâ<–g¤Sˆ8Ö|ß5ÈÐí'œŠs9îæ”^¹.üÍ;'ôØ:‰âŒ_ü±¦¾z^ùYÛdA<«…?Dj.ŸÛÉùYÖäIg´†ŠgèŸÿj¿ò[]u˜³SœÆÌ´,®/{ Æ©H½çü…bÔÁiÌ /T_ɧ 7B\[(æj¾Y¦ë‹^É9–¤²j¾Ô®. ƒQAaž¤P¯HGáñ~ˆçH›å£ìEÊ¡€¥—n_”³&f^GÚ¬ÿÞ½Öü¤ïŸå‹U½ýh¬2MIô§š‡»2KmIÈ: PNa"ÓpkÕg&/„”¦-5›:ösQŠ'új¾kp}Éc¦ ÇÛƒˆ•Y‡ÝãˆýÓCIE·ê¬Ï ÑgI]b¶e³{qЉyóš¯ôvå³A¤<ãDŠ7×x~÷@‚Ô\^õ4`ûÏWå<´†…i[ý­ëzʶ¤§µÌ¢ˆJ³ÅÚœƒ—Ïd™0UÜóõŠI§Ÿ”¤¢X™U£÷KbÛ’ kuÎá¸ÅZäÊ\3ï$xެ fâeÅ……/NH•Â%ÇÝD­ÌgÔ+F1)h!­ù¿Œ`I^hÆ,#i1gCÑ×»0í‘ÏMßßs{ÍguÞ-&Jé%SB÷N?a-—y6¸Ž‘+ôÈ[›wKÙí ’"MÁ¤úîãqéQÛu™¿VˆŸeJ¾6 ²R?¾êœœÅ<>˜iZüìÔqì—J㥑ðÿuž弋äÕÓ¼" ç)V`v_ð¼y$}|eLkx㪯·#îmêÍ«,KC6"U‹q”1•O‘fZ˜~;ýDºSŽA÷à¼õg›"gv’KÐOî0­šÉ ȸŸ3X-G¨àöšÏÁiÌîI$±I"À2àê’0WÝÝÆBÿ“o– üÂð†„>Œøyàfq:i ›û‘Z›wÉ´Àv|&Ú2D½ål˜²4mcäóø®­JŸ‚åǵ n¯zŒÑú ãŒî 娳2çrÜÙ:KQQ˜qcYZ I¢Ég2Ý´¸¾âÑÎINû wBn®zLÕ-âTso;ÀPŠŸùr]Ïœ 0¼l{ëo#¡õôË>ÐXÈ‹#€d0è•’?5Møú—jì压32Ú ²N¥¨}kÕ§^1™m …½Ö”3þŽ-|”ͪt & j5Rø+X€âäbQÐ4ÎIB¶CI{/…¦†W= CqwsLo˜¢µæí‡#õ¥>×(›HÊø‰:,´É‹ã0SƒQš÷罜̀ Ãi¦…‹ÓN)å%  ‹0HteÑ-Có⢀p±Ï4%lÏÉÁ#!cl×-Ò4)QWUÏ$N4›¡°eš©†E½bæÚ¢#ÿå›}çêgóý öPCzèO³pøÒË>ÐçX8~ÁóV^ö>Í´†vÍÔ_«ÎßþÖ™jÕe&`º)„µUOÂ|‚àÖ¡¨ _[rÅÕE,Ÿ ð]¡ÿÎ2Y´ÅÏ¥áª8}FK°â›¼·1ºàÊ⟒ÂàTÃâÞö¸”SJqØIØ:ˆxmÝ›,þ]ÂtÿEçþAÀkÀ×'ñÞã€w6$ÍhÕ,æ§löO"ŽóÊf–åì;ÀÊœÃtÃfç(d0¾èü %žÅ‡Î )G ™iÚìG˜9˜(Iu)î‘i]*ô>ÞkP•6ËLKœÈ8ÌØ> i7,¾þÖKé÷?Ï® <Š÷Ÿñx‚ÿÞ—} /°.pòœÇ $|%-ÓpkÍÓvï‡êæŠÇq7¦^5YwÊÓÙ0%Ž3ˆãØ<éj¾ÉLS ¼QœñFŽO)fšUY¼…÷_»a±ƒ}žÖ5+º³-›ûÛA *,J4ï=ÔÍUOOo?ƒÌ˜<×>¨øe&È>ƒH«·ŽÔQ7ÆPŠN?!Óš¹¶ÍÙ0yâ ·"ü¼·ùÞæø‰ùþÝãˆVÍbiF9‹ZBeœô¦¥ÒÙ¨J®/¨Bé&Ä7¯U¨xž#…æÀtC*´A”ñ'ô• ý‹/k¸Î³ˆˆóïëÕ9ú‹vÄóõì}^ À³Ì4á'߬ñ—ÿö){'Ò @ 'd¦¥??Õ°JrPËBÐQ.4ë¹¶òp'ÀÍ»TõŠI«f•´cK3êC©Ÿ­Î (î4GÇNÞ›J ½X¡›yÚOžè¨)àñ^H§Ÿ¨éfIæ"À ÿ©Í<Ó>ˆ¨"Xc@r¢ý“˜ýÓ¸/Ê=a„e(n¬úÜÝ_P÷I2Í£=á\_py¸\Ì "á ¼ºäÑíKšPP‚µjÒê³g'g ûã0ãÖª/B‘Ʋ¤Å²¾àåºmŠ8qÐî´¯-¹"õõj-,Œ×чgÙ]d‡åU;ƒs;àù•çâì>¶e™r|ÒBk˜iYú«¯Uù½ Ô\ÛÆqdƒÛ<å>´7WýR—¢«9–bºaqÔéRú#8ê&,M‹²õÃÝ v™:Û²©ù‚\3 ÅëW}¢X¦XÃø\ÓbuÎeç8䤗ŠF—7°î0åáNÈLÓš¼&? ¬#ÃeÏ´âÞ@úÿr‘€ÛA¤/hüeù"¿nžÿýÍ1Ã<¤QAçÃ]iý-LKÛ® òró±Ií¶B¡wfžÆŒ*ÂÜòh/,/x”Òª[ôÇ‹S"9 2ì¬Ì¹Ì4E;ààTØ~òÍšö]õª2ù¾ÅógäwÛ‹ƒ/Ó¶tåYÖBÙÐgjÿ$aªaÒ¬™X&ŸxD÷ÖuŸ»›‰æaI*÷ûÃ]Aö]_ö¨x¯­ûœô! 5UÉaY¨þ.L;vbNzÅ¥I@Áâ”;ï²±f¢`å:¾gÒ¬I{Ð6…¡¸`ÍŠS‘¸S©Ÿ¥Ùy-mï$Vqªu¾)kdLøgøÀ/0Ùû2õh/|*3f’iîÜXñ¸±"‘@AdæSUEëÏw¥Ýç変i&óÐͪEo°¹ —`& w®ø4*&§}Ñ¢Œ¹¶[.ü³aJšI5_Ð\ÝaJ˜ò¥}eñÓü¤©V¦©>î;¿† äΞñx‰¾òÉŸÁ'f/jÎ!QÀG¾Vi‡§‰êõå{­W =7e©zÅÔ9UßǶ\r\íN•_ûÖ™šn iì´ƒ‘¨õG)I*b"Å({­"h¿VÝ’µjŠƒÎ9Å—*®ÁÒ¬àü:qyàÅsš5“[«>»˜“^Œmåô«m‹ÌyÝ¥cÖcÅ7‡ZÕ+jð§ÿç¤/rUà—Êÿ)Ѻ¶eÈR>¤ÎEw#n­úÜ\•Þs ÎF´†H?=ˤHàïÿdÎ൰õ‚ç- éÎGûÝAªzy}Ikè 25G4ë&sm‹Šg|"ßp>0ÄHjeÎ)Õ ®,¸¸ŽP‚íGw:}!” ¢Œ…¶ÍòŒƒÔ|aµŽãsÝÀÕy—(Î$ .® y>è\Yð8¦<ÞsÝEi±sZ=!$¹¾ìqÔ‰y°­ø‘[•ÉSùIäÞz&ÐìEàí'­aû0b¾-$'½× ­âgÑã/D›UÉ‹NÏ‚0cœ3ñÞXˆäq/¾Ú?˜n {ÏÆ^˜ËtIåqÚ¡Q¾€‡»Ë3Z ¨â‰S:¦yV¾˜¯Ý©êÅiûÙý•üCwª£N¢†c9—C+¡â9OTp? i$º¼ÿœçýs‚ÍW-‘óbüù9sôGù€(Öu’ |y¢Û'½Tõ‡í†ÉlÛµ?vD†c)ýÕ×*ü¿ÕUíºE³*  0Ö¬Î:¥Ä7ê\8äþ¶„óõŠÉ꜋kKÑÐw+ô†)½ABÕ3iTLÞÏ‹á“÷Œm*®-IëÑnP²c]¶¢þ0U7¹º(ŒÅvÂ8So\óµe^H~œá¾Žn4@’j5µ¡ÞZ˜’þþ(Ȉ“ŒþHP{a$€ÇV\_ö‰b¾)d½ mÀÛk>K3N9 rwŽ"ÖXõL «´ä;'g‰ IdP÷M¦6ŠE«fD‚§ŽbÍöaHÍ7øÊ­JÉ6üQM!»ÂÙ0U‡§)ýQª §¥ôú©êÕSÚ¢æúaM#è¸7€¿öœçÝC0Ÿ)Ö¼=;×(>j¾É½í€Î„"QÕÒКo%+9èG°‚1ã,ïB(Vçfš‚ (àÆåñfðx/T?r³2 º†D—Ú|ñÚq´yIÚ“/‚q˜qokÌõ[k>÷¶úÃô‰Er؉K (‘Ážº/mœbœ×s¤¨rÚ—! ­5¦é³0mÓ&R'È]O1îûþ昫K.‹Ó"ßTTh»ý”ׯzzáÊý[ S÷õ¢›ð¨“¨fÕÔ®ó‘¢€d‘tŸu?"u€WÑöø0ò}fêô,}áî_õ Ú óÏKñæ5_ÿúöÕLKÄ@íܨʽ; 3înŽKeŸZEs³& Ô†©Xs8=KèåZ—I dZ³< Û‡!!­­ùfžúʦ&d2׬šìEôGU¤9í^qâ»Ç1ýQªòHHç×þ§€_Úù=Ïü‚(Ê”ÊóßK¢J‰çý퀫‹·V=aO`ï5 ㎂ðym½B’È‘‚”ã´YîqZ:¢›p{Íg¶%s9ç‰$“Pƒ¹Ì¶mÉ(IDÞ¼^Áúvu˜é¦¥wâçÞˆa¤9î&jyÎþ°Ÿª‘ùMàÝç<ïmdèÆáÕªló|ÄÙ·ýž(–]6CÁlÛÔŽ¥>q§ÖpuÉåÞrpÓ¬™D‰¦^ŽJ¥(wû ÊhT-Šé÷Ûk>à #I4¶e°s$¸â\[Éh{±u•ŠDÇݤTºr,ƒfÍd}Á%M5ƒqVj&9 ˆ¤¸„ÂT|z–ÈXóùikù í€g9€ R=ä€N“’aÒRt»¿puÑåÆŠÏã½¼HW(dÁ¶:3[8Íß{<Êwús•Þõy—áX.dA fš+r‘¶ÂX´ûj¾Q‚/âDsÔ‰Y™sXs>±¶ÀTäs–2 3žçNÎRÕª›¶-XÀ7ßDtže÷– E^-ð"­úÎÅN>ÅÕ³Aªž·øµ†ZÅ U7?„w޷ׯ­{|ëÝ‘® ÅîQDe\]òr¾ ¹¯U“G{B’Só%"˜Ÿ²‰Íò¬ÃI>”–iÍÚ¼‹i ù势Öäs1ÍšÃ0¹a†wÝ$ ¨êO0b=Õ f[–þ4¼4psÕã{÷Æ„‘¦æ ÝWo˜Ʋ ï¬û±tªzƒTFäóÉÕÞ å°1Õ°¹±âÅA¬i×d@¨ÜT.9€ŠgH»¸·5f”“Ž&‘>å|½–;£G;¡Z_p&Û‹Üü;€7˜ÀG±VÝAªn¯ùìD9Á†ìì®­0 EšjÆQÆã=‘ÖšjØìGÈÀ0glì‡\_–]ýàT Iªéœ%¬Í;L5„yu÷(¤ÓO¸ºä1Ý’…š/’^¦¡¸·5¦^5¹º(áQ˜Òª™\_q?yœ8Ю›ú´—ªË²ä“¦ô©:¦²+}¸¹…Ðf=‹Y÷ )þÄ'|zÇ^Ëh„"ìU±ªð¡Æ€ÃH«£´ý,fÛ&¦ùñpÄLn­yüíoõ™ŸÉû†ÆÝ~Êâ´üûÖªtµ\Û ?JKøºÎDŽ­8ìÄìÈl»n•iBo0g,ÍJ‹ðÞ¶DOÛp óÓ+³N9°Fº  cºy¡ø¤µ¡uð4à01ü£€ãn£Ý0/ä‰(ÚrýÜKOò¡ 9h€ÂãúŠÇý\Õ¤™& ^¼sÅ'Œe÷ßÌ)”_[—ÂßæAX‹˜¦b!‹ìô^¿âscÅÇse,¬¨ÜZó>‘ÖßÓLkhÕM}zfÐdêyQÀ`”qz–ƒ2>àÛ#3·x~µÿmd×uy5ê§àYf!ŽíÛQ÷Åm?ÉýM]«|º»ùyÀrÎõ×é'’k§2Ï¿:'*Ãý|½"E»FÕä°‹ü\²¯Î‰.áý|Wï Rv̈ŠgЬšÌ¶mVçL”ÜfÕb`Hª‘N$†®­X[pi×-¶#öOÏñÅœÂíµ ìk¯!Qý…™§9€Y¤]žøÆ~ÈÎQHqÇÂŒ«‹.¯]©°±LL:[–Éë®/y<Ø ˆr&Ÿé†…댂 Ï1ŒSå¼ b kó.gô$ ‘Îæ¸—#‘ÊYízE.t»a²<ë|ª«Â4a¦m1EÏu2"˜Ò¬™Ú±?P çûðŸ=çyÐÍ2¯†xÀãRç)â Û~ ¹»nÊXðgá4T}C¯Í;<Ü • eÇžnXøžÉÖÐyuû óSB×m[Š7®V8êÆ„ñØg"¤O3-D#‰fºesz–pzÓÈ™³ CÆ2ðv6”â꜋ij°w‰CkØ?U’¢E*D–Wø`Ü(¹ÿOcE®Ó2‰wo+`eÎáú’‡çDìŸ/ˆ‚ÐCçj+­ºÅ+•’¹ÛOØØŽSU‹›«³9%3Èn¾8íðÚ•sñÙ0)#ƒŠgˆÚð@½¡äOo\õuÍÿt>´†FÅÔÕŠÁÙó¢ ¥-¸4û¡Ú‚oñüBà>ð˜W‡]g—çcê|@ôb¦Q¿ ÒB«U>[1\[r¹· ‚­Cé¼~¥ÂTⓇûõŠÉÝMÇÍ4-g18 Ò òa*Ÿb,rþ$ÑÜß‘°ÿ4ƶÎ1ªt )½ƒœ“Ãw^œx'½„q˜©Ú9cp )^à |š¸iEëN\â1Sˆ×ÚÜ—¶Üú‚‹ç<ÞÉ2ç4ªVÉÖ›¤dpmƒ{[cº9N@&¼öN"VçÜRo}yVÄ; {Ç1{Ç!î R®,J«pÿ4b~J.ÆÆžt®.¹%Û§i¦)»Oøâ:éI[°ê}à¶àM$x´¶¼Ç%ж—h;<¿¸7ŸÏs­™é½ íyøï4²úÄL#”óÏ`eÔ-“fÕ¤Ÿ·¸ƒ(ãöš_îèg#é˜tbUõD±¤¸gÔƒND˜bÛ7W$¢¸¿\˜ˆM§ŸÐ&¬Ì¹T=“ƒnLšiá%\–¡º0–™é¼¥¡¦'#ÓE˜h ]¦ ö4ðzþäLgÔÁ({j/&ÓR “^½OÕ3H2rù$¹§ý‘,ø+k .ÁV ½þüËÜ;Ži×,^[—NÑ8ÈxkÌLÓf¦e ’0§XRJ¸ÿ,S±8-¯ŒS5“…iû3 ëS;v¢¢øùåmÁõ…Ü\Éÿ<˼j…À1 @’ÈuJS^x”‚ZÅ|‚BëÓ¶BLd~ʦs–ªzEiÛu™x}¸°:ï²¾ Åm/Os§›­ºUJŒ·j&óS6·V|†a–˃ýÍñS¥Â[T†[5‹G{‡8gÇ­ŒzŤê4kN®”}®]8a·‘”¬Toºì¤UZAçDç»øàZE<`Í7Ñ™œ°m<ÞØ?‰óJýy˜ó`'àöªÏe»[c¢XÔ{ç§D^ɵ Žº1÷¶Ç¤ùTß+•R¶©ölT`¤rbá8åúЧëÕϦ Dþ¥T}C‡Ñów¬bgk×?P[P#mÀ[À÷žó¼waQŸ—WPHEùƒP{/z£Ó³T FÙ w„\Åû„@>¤†ò6öÌOiNz S YFE \lxw®TØÏ1-oHxÞé'´ë·V}Ì<ÇŸŸ²99KiÅV<éï;¶´½»Ã œ7sf%Ûp£jrmÉõ :g +söäá¯#´áåèöeÐ@ €\ßq˜qcÅ/Á<5_rבèQrØKFžµy—¹¶S Lö.ÃHƒ…jPÁ¦’¤šÇû!¶¥Xœv¨¸2óƲà—gedøñ~ÈêœËÊœ“Ë)I„%B®øIA?èPó :gé Ÿ›¦pØIT­b`ÏU/F8ßþ?ÏyÞ¤ø¶ÆË-†àól‘`‚X«£Î‹Û~ ›ë(uy '¬5,ÎØd™€q 6«Ù–MšIj¸{$úK3ë .J ­Ø 2Á»d<Ú ñ]ƒ™–Å\Ûf¤w’|=XƒQðlü‰™·Ò—gdDÿþöˆ³‘£^¿æë ê¾¹üûx¦˜c¢b›Él³²L A@rÃNÌÎQÄ0ÊådÎý`'`mÁåÆŠwabIçì>†R„±–¾g¬ÙØ9îÆÄ‰Æ4…þkuÞas?dyÎ¥ê¥äø$›ðÁiÌ”Ãq7ƱK36ŸµU}‘rJÓçߊE[°s–2Û²>ÈŠ}“§ôl'ìØ@ÀË2…“^ä^Ø<î&Ñ_Ξ£ î»ÏÜòÉ>Ý®›jf̵lÆ‘`ù—g4šî %N%w_˜Àϵ%š/½ÿ$Õ¬Í94k÷¶¤ŠßéËÐ\½b–ڄŽõ`' H5 'R²­Í»T}“½“ˆƒS™Rìô¢(Sþ¹hH¹g¾]¼þ²XABм Õp,ÔEãP䑚5“4•Cš^”7)nìıÃÕEÛÐCÍ®þfÕdflì…2Ü%!BšÂÖaÄëW|Þ¸ZažËzÏO9ئb.o¯´j™¥nÖ,¦ha}¢7‚c+íXJRÍ‹nÇLÃQ'Uš‰c½±æ&ª= `3@††~î3<å§Y‡çË[<‡@!\ §½·ý&_ä:ÆgžÿOšm)æ§m½wœ¨÷r؉hVEtiÆaë0dyV"á{ÛcÚu‹åY‡vÝb¤´‹šÀD /Í4ÝA‚ç(¦6GÓ¢¥ûtú à #M3ß¶Yž¼÷ŒÏ ìÃqÆ(Ìð=tÙf¾vù š´5ò|MåüïlŒ9é%yž& ª«s¢ˆúx?¤?NŸ¸ù³L°ýJIä0×…•ÁX¨‹z!UŒÍêœCg9½˜„1fŽëÞØé å¹óm›•9—íð,¼ ™“žmYøîgÛrm8¥GA9©üL+˜‘Oré©çXѳ]áù»Wa4øk<³˜i™ö‹’;ÐÂRy™&|ý6÷¢R/`yF:aÛG!íºE½RÁ¶TYë*äÅn®ø9g`.0šw­ŠteVÆÛ7CöO¤ûUq Úù=?×¶ "U})þí h²€ZÔÇ£Œ™æ…<ñêä¹\vëù5ÎâAÆ9b¯øÂNcã”õy—×Ö}¶C;q™Hn,詆EœH¡¯7HŸE<8psi0Ï‘q_p«-NÛ̶lú£”zÅIJƒqV’ˆ€¤#i¦Y˜¶õ§…þ{žJòÑcÇÝTµê¦®¸Æó"–&R±ýösÞꄊ«ÂË«ì2QQ~Æy<TÌLt釚™RJŠÐ/Órý’T—iéâŒ+PEœô„$´Ür¬c õ·lŽÒ;¦ìDŒ‚Œ•9™1xt‰ìcd Æ»Çußäê’Ç•EW”Šs(}ÍXòdá=É#õK„ó«L¤—“@1™¯)žÈ»‹/`dÜÝ X˜’h ^1Ù;2ƒ™\ð ˆ2öO„ ´êK%s}Áec/,%òL@?óS6×—=öN"6÷C‚œóüÚ’‡Ríº%ƒ@Aú5«2ë<gJ1›³æË@ $óÃÜÁQ>å¶¶àèg¼® t~ øŸóV‘øêK8óÂöx> –Ÿ°$ͧý>@ÛoÒT‚y©&`0lK1 $Bµ-!ŵL M3™í¿µê³yr6L¹¶ìå¨WÁËÀžÛ«>q*3÷·Y{w£9W¶LÑÈ8 T¸U—ô:I¥õÞ$ Æ)a¤9¤—ïŽEdÓèÁEàr‰¸ñl˜ÊœòS.@’ RÉ0ëóBc¤s–ß{[QÉ®qF–ù@<Ú QJˆ ¦œÜsÉûÆy>]@#§îœÆÜ¹"áÓ(̨(ƒî@Ò†výã“@~Tû°Å(EÞl¤/â¯{ÉÙ¢g<~ˆ¯òòlóÏ!…§ g©€ÎYªž¦…÷Aì#²/b¦×1t£jªB™ºPù½±âa˜ýx?dqÚfmÞEç÷öÆ®0+ØD¯_©àçØ™¢+Ö¥زÛu‹+‹ò>÷¶zƒ$§FOÙ9VT\ƒFUdÈ®.zh­é3LS]ŽŒgÈì à3!A]p±ØbšPq¥ØÑnX8–âä,.ÇavNá5Ñìôîn¹™Ó‡Y&ؖЀI‘ÐàÖšÏBàpÔY›†Ô8•vK±R¢e™6ƒ±Sªþ§ õÍ4øÐ©$Ÿ¬ú¦~N8{aÑyÖ¨í)þüK8íð"*ðeĉ]°0ÖuR5Iñýy3Ӏ馥·bå»FÞâ—¢7ö’T³}$Ú‹Sý‘hdDIZ‘¹¶è¡¼ýh„¡‹3·×|úÔýSi½Ï·mg„Rlë0,§‹õ•å¢:ýQÊî± ­Í»ÌË„­Ê4“­À:​ Ém“ÖP¯ŠBIQ`hÕeá{Ž! ñ,É9ü¤ò8×–” ê™lìå-À‚Ç}¶%ŽâÝ1ýœe¨7LÙ>ŒXžu˜iYX¦âÞVÀtSªªÍšIÕ7ASFY&**®ý±D9>ž}Ĭ?ÊèöS5ÓzjP8¬òüYûïóòÂÿ€«=pÜMÔøÌJ¯¼)éùoìJ€¦‘ •ý\Ûf8ÎJqлAI†³sÜ‹KýÝÍ ¬ÞŸ êU“ù¶Ã­UT /áãýÝãè‰6àäñ UY/UÏ`ë0ä £¸sÅSŽh%h•YÖe&@-–ÄI7QS ‹™–U²vc6B†ã,W-™õˆB“tg½ÂÃ]×*&K9qçÙ0eï±,ôù))œ$yŒD®âØ&o?ÑéKðÆÕ µŠÉ£Ý€ù¶ÍTÃâl$¬+­š©?‹yðOÚ¤-˜¨FÕÀ~z[°Œp~ó9oó.RüPt[Ÿ€)$„|‘Àúå ƒL|˜¶ß«jš¹êo– 2öÊ¢GÕ3ØØ ˜iÙÜ\õð¡¬ÛÍçYfó.ÚÒŒ“|FØ´3 Ý~ŠiÄ´ê&:ÕÄ Ì´¤@~ÚKãì GPó –fZu‹Þ å½Ç²¹Î´,¢Dã:%c’ÃÄlƤ˜æ´Ôu :ý8÷dRÁŒ].þ§ñž SÞÛqeÑ“P&wA˜åúæ’‘H õÙ–ÍʬÃÉ™Pz·ó¥!©„vÎf[ÒB‹!)Ø€?o@!mÖ“^ÊÂô#Ù9ßzÁÛl @œë|ö‘@—g3ƒTš&‘;½rîól'Ó:oig2 –‡ágÔׯŠL×ýí|Ô='Ùm‰˜­aÀtË&J"ú(0,Î:,Í8w%ä·òâß”Íâ´Cç,á¨+émŠná\[IE} èÊE±&Ž3d¼§¼¯ÊÖìåÀ…s¢Ï{[[!i&à‡¹¶ÀtSHºƒ‹RM…W2sºbÇ–ï îm«ä- îo‹h£jb™Ší¼Ÿ9U·¸–sþÍ´lzÃß5X™i°¢¬±Ë—kêc5 Ž»‰jÖ *îSÓ˜×y›knGÏÛõ—pâû¼X  ,*ÌÒÝþ‹§ýžg¯’ßð\#.‘v¹Bº¦©°,YZ §àøºäá:Šw6F8¶Á꜀ƒ¶ò¨zu^þ¿y–C?Q¢y| ¸€vÃÊù2}Ñét†Rl„÷â PÌß$©&ŒŸ¨Á–©þ¤¨“» TÎØOH³óžâÎqD§/ç+B{´s•åZÅ,Cô0–V!Àú¼ËÕ%G{Á…Fq#Ô+aÜË'g ÓÍ”õQPÝØG±<ëÒ&Ô}“ÁX؉^f°¸šÇÂXsÜIYY0žö^7ÈìY¹öÁüŸ½íólDz¡”Eå¼íGò!Û~O³WÁ hÉ͵ï*M5S ‹LkT¦¸¾,¡ÿQ7æà4æÚ’DÃB`kLPç ~±žt&QÒe’â|ÃX˜~ÂH—g¦%qß‚X„DÊA”]Þ¤ÊÖ줘e¢`“fºì×O^øQ˜ñp'à¤' ¾wÖePÈs Z5‹ ÊJÚ®¢Fä,¾·×ü×¼<+aËI/!ˆ²òÿ§‚‡®zYȶXY€IDATQœ•èçyÅ•”±…ùsý?qMOû©j5LÕ hF„Ðë<¿Øö>¢àæÇ´m^ŒhçØígªÿ‚i?¥^FúUXã/´‚ŒvÔIÙ=‰xmÍÏÕ©ã|0gÌëW+,Î¥]oB<'ˆ2ºƒ„Ù¶UòšU‹ Ì.ðh-˜“ÅY'gÔ£ˆ4ç3ÝÕ¢b¨7Lr­Œ¬tÑ”"-“ :yr²àxÂÝ*r¡ÌQÂaGÔL¯.É´çæAX Nîðý‘%®-»" ’jLí…œä_JÁÚ¼[¦ƒqÆþiÌò¬CáaæÛ6–)ÓT¶õá‘x¯¢%¢ê9Û‚u¤ø{Ïyù»H(þD¿ýS4͋ǀÈ‹“Q¢9ê$Ïmûåüû4k¦Þ;~¾‹z ¯§˜i@Å7ôh¬š²iAçÕ+ˆkÖ,LCfbfsA‚Ak!Ç u¤Pج Ømºi±{,¨ÂLk¦›Â=¨”Hôôâr}Ž#öOΉwàФtúÉ.Áܪ䜗@r¤º¤*©c+¦ê³mQë9éÅtú)ÓMÉMÒT³w“\RsI3Mi¦ê>Ú 8êÄåsv#êÑ:?ì¹B¦5ÍšPïD g9qõ²¦Â>¨)ž£BýÌ{¶Ì)ÓRàBç_Ò‹ ‘B`ƒÏfY(D àƒ´ÝB7ñEm?CÁÜÔ‹Ùœ_uáJئ"I3at­I‹|8ŽŠõÏX˜­‹Ý㈹–Íê¼KÅ•Vú\Ûf÷(b÷DBp*Á”Ãê¼ÌÑĉ º1»ÇÑ8”¬¯N?¡;Hd6lVggj¾q¹HîðPF)p¬Ì¹ìŸç™ï›Ìæø~”âô,æaG˜‚3 §ý8¯ä»4ë›û!g£CÁTÁœjÝ·çHË"ÍÑ„ÓM›ªg2ÎR ²”RJINLò}{Úªob[ê3ú°ÖnXºs–ªç© M¶-óB[ðu.±¸\²c„à&Ÿx±X!¿ÉÆa¦&a—MFl ݪ›úEü «‚ø › &‘äå£0¥Yµxgc$ ¶@àN㲇¿%B fçýý¼E¨ò¿ÂH³ub2¤q »ù‹¨ C8[5Sº½˜nÛ¼Lá#ÑrPZ’j¦³M‹q®è„2Üé Mq”Tàû'B ²6ïr{Íçà4ν‘ÅÉ™ ƒP†‹âDÈ,K‘e°2ë°wsrskÕg}Á­µŠ.Í8RoÏÁDIª±,u9d~å¬ÈÝæ¦L½¹Ÿ=“Å¢h Ç™ôÏŸw ÉÙžrUø¯|F§Tðœ¼àyå\‰a¨çVî,æ¦,¬Wü»|Ú•ð]áùË´.+ð¶¥P†´¯‹a¸Š+…ë¢3&¹ÆlËΧ£2²­x«s‚µ±Ðe,LÙÜZõé dx¨Ÿó -pËT´ Sv9|w7çX˜±/×*äé¿u~*kÅÂÖH±Ch‹_ü4 œ?Ú ¸µêsuÉ%Ëàán pâ=÷N"Pp5Ç7‹ô¸xÉG»·×…*éÁŽ ¤Þ¼VA¡‡2 %šÜW¯”µë–>í¥êl˜=w' ã .B#=Û+m¿OÛLS•Rß–©Ê.Y½bRñLÞÝ3?%  ýÅœþîÞVÀ(HEØcNž¿uRõLVæ¢Dóþæ¸\èÅàÏÒŒÃkë>~’w2Zu‹…iIÉ;ý„=aÜÎô3o†'Àå“iÊ"DœjZU“…i‡×¯È‡ïÄ Çih-£ÀS !>°-™XªåúçIª9êÊØ°Ö¢eÖÌyþŠôâ9çYk’DºQ"€iª%ÿÿxM¹Ëéa©ç±O jH!ðwžóï"»r“ÏÆ^„¨’crÊk=Û298MÊT@çÖ*†žŸ¶Ï'#?g^@!÷½¡ ŒDÀóú²Ç”ÃÝ­1¾LæÝ\õxãŠÏ(ÌxsÌ0GÿíG F)×–<¾|£J½*ùúÖAˆižïðZË<ÍÙ0¡Y½€7®Uˆ“ Ç28èÄ¥ØÈ$õ˜@æŸðV~èO—“¢”T%‹Êíq/¡3Hi×Lg¤ýwz–°1Ž2j¾T/U³„>ŽÉçgÖæ]š5³$2˜kÙ±æíG#BùÙN¶ä¿£L9îKG有cj(ù÷8ØG@àúyK2 Aòõ«)ŒíÞ»7Æ7F4š„ÑëñkÂPÂMá×Rz(*6 }S<Ê0y’¤ÑH¼“4{>ºÃ…¬‚¹²Žkk©D,t4áÝ­? ’tßÙä³QVñ_ÍK]ã”). v:îøÒƹõ‹€<س¡(„k««6ld# ‘«°!)!Æá½È;àC<”€¹²&Wb8Ž\†£ó^Q€zY•ÖÃ×ÁiÛøOÝ7¯|BŸz ßhJ8µ T ª,æ9]+^"ŒH;—L>ÁÌWtx¾D¥ÀcÀÖÇ,¾Äx˜þ(@£ÌÿÂ%KNòEþâ²È¥UüÎz”Žðþ†.Ðìy‰ö_.­ QÒpe…¡÷‡m/‘ìƒ|ü…zäð8ß»Xx › K)PÒ*ñ¼lÏöÀk—ÓòW¾˜ƒipw[FYÅõ5vúù‡ßéP«ç#$R†‚#›%ÅãÑaÚdñU¡dc‰e‘eR„¼Àø•·¡Vçtw}9‡†º.PɳËí#~m ÔÚ|ÄÏ]p#ð7?O+ñä @Œ8JÔûæÊÖæ Tó*vŽ]\Y5ëßJ`uNÇö¡‹ßaâ†B6_DØ9fXñõµTB"RUV9 å³aRò?³õyÇ´uøc^2æp_ð‡yº[àF`á9¿í1¯Q°¸¬ÀG€(ÖöôPr)cèBZ‘Äe0£õÞö²ŽÕ9ëûÊ9+ ­ž‡á8Àõs)dRⱟ;êa¡ªÃóÃDPôQß[ñ…%£+c¸òôÛŽž6Ù$¦ê˸Ùvu•=Ì&NˆbN…BÀQ×ÇqǃíÍÚ‚ܱgACkó^9ŸÂ……ÇšÂAr4 hl Ahõ<Ì•5¤ nøÙO4••…óŒ~‚üx£/ `l3RMÆŸ%äÓ6‰ž¢ùø75áÉÀmpj^|&¯øè÷1À“1óOñ\Ÿ‹ð< A””À÷wm\[±Ð(k¸»Í6^c'ÄÅE ×VÙýj¯ÉfºÌ²àÕ‹ zFd0 Dä6ÔöpØ>¡#Ú„ri•‚†\Šý8›]ÍžLŠpqɘ¾)&ˆÌg§3€áô Ú.›Æbƒ1–¹Ó÷àx!vÛKpGÓÔ4•0˜„Nž|H 4ʺ¬\Šç¨L’ñ°R7plüb5 Me†ðÆðQîø0¶=wЉKŠŠ9ó ê“õû?ÉîÃUp&0zÄÏÛî†Ï3š`À£Bǧǹø¹†”HÆn1‘ÇÐ(‘µw=¾÷Ç6cgÊy ûMwFÙç°ãá¸ë#c=ÞÖ~cßÅƨ5ÌWu”²*vŽØnˆR–É@šJŒ¬ïÛ‰cVâ8{LŽÁpî‡oìz£«"ÿ˜hpm5…þ8ÀQ‡Q±0ˆ” Žù͇mvR„ÄÅ%ã‘,20 ƒ–GçæY&9—Vð`?Dl#¶ßbs’ó &BÉôGÇø 1hv}4ý™U„,Ý-%äRCǧˆj° î¬?âç¸øgŸóû8£§oROeþyÇ ™äK¤L–ÐÙ ÞYªðCK5ªBØ<°Q-h¨—tD 7)Í}‡–ê:q¶­%pØöé½{còC`¯å¡?pqÑÂÕÕ‚€{-ÆìØN˜Àçã ýôØØf°æž/qg›Gz§ G‘Íq­È2ÞndÖð±T×ÀÝmVþaS‡vŽ\,7tù(Ì{÷Çx÷Þ+ ËuÍ.›(øw8Ëy–^Š•†U… «Û Ætzªð‰V/¦|È"o÷Ê¥”òŸœáècB‚§çðè àF ¦u?¯wý$/€¦t>Ï!7‰åÁùæÖ5ÂÆ>û²Ã•Û qg›§®Çf8<×XªŒB|ï¾x9E¹´’µ¡öŽ=ú½÷Ñìù0"X}µÀ§}«çA‰41Á£õÓ÷3`hgz¢þÌ#7Ua Aü$>~wà'ËuËu@U Ížõ=;‘|"£¿ÿã>ý‰¯åå\Y;I™‰Õqo<˜ÐýtHº*K)èô=Xc¡ÚL0ê|TòÜX‰ÙŠBp=¶>*AùPw{$”@žÿhi*6AaCOí)Jç}¯á¤ø{yܰV_ÏoØ~ÂÏ«øäI/4‚ÍkS†€iˆ¤/N%¥†&"h.#ÿöš.4•åÃ8îxØ9vàz’îï:¸°h œW‘2lWâÞR³ëc¥n RP!ˆÐîGp_;¡œS1_ÕQΩØo{8îx3<¦qæ&èО\4Ó¥Ž#ž¿O\,`ê°ãIdS «Ž:.FSx€­Cßw(¾p1%…à/eì„p\‰wîŒ) Ù%Å8ëÈ¥Øý¤”c1Ò[›6eSl÷}¶o ¶ûáµ0K@’ƒ"ŠÉ9Ín€¹ŠúôOþ|ãi»x~'ðÓ`j`¶Ùç>|äÙ›‚´û>4•°XÕa‚I>¶‡¹²ŽÞ tÅ,[|¹÷Õb"`çÈÅΑK‚˸وŀ¢x®ï¸áHâ¨Ãs­¨a¾ÌîBûM­>[ú©gëØ&NM&wñ¿±:ïÃ×G>£`©Æúç{Mv#˜P/j(çSè |¶¹aK…ÿÞûÔîû‰ëi9¯b±j$" 77ØG­Ùó¡k...±6€ã±Úbõd¦ªEškƒ³ÖGOºJ “ëqÿX³/m¾@éñ“¸æ< ‡ßpÀ+Ïáµ 8zR0Ö–x._×§¥%CÄõ¿ëqI*%ðCÙ}ÜÙ™@JàÊŠ…Õ9#iª·zÌŒ­ÔÄ><^C±µ^½¤ÁЮ/aê=›Kðé“}ú½x>{´zìH¼Ü0P-jèô}Xæ™1c7þé `®Õ¸Ën鳿hêsöìëÜÜÏÌ$ÛZ=… ‡®¬XCv1½·c£Ý÷$¡§?¥œŠrNƒ”!Ò‘¥˜„|FÁ` k)X®ïš™OšJ x¢?>Ò­¦( MŽ]zœ§ ë±ZÏÊœþ‘¹òÙ­…pƒíQ€fþžòù¦ñ$'o÷ÑßèO–_Âsf%~Z8 qM¿ŸLJIÀ@ý1Ÿì¯‹ËË\Ÿ­¾[]!€½cn®Ô (‚;ø²ŽB†}þìÚèŽm»Ú0pmÕÂÆ>ëlœŽ˜\åD–|`¾Êæ ¹ô Q?þé   ¾À©*$/-[$¡?bó|¤Æó`ói‰'Š”Iš=ÀÅE+é¢#¡Ð*,wI™29FÚRp>òPC m)¸µ9©ÎϳWúÝí J9 2÷T…ÐÉTJ Ÿ‰È9ýGT²I@…a€bî£5ŸQê7σqÿŠÀ_„Ü÷¹ î.û )œñÄ:OÚ~&0D‘wfÀ¢œÝ ƒà&Nˆc•¼†f׃©³šõ`Ì÷2îD¥ô~ËMÈp±%ؽ½‘Ÿè ´û>&NÈ:+öš,–Œ®ÀÒä3lBb™a(qÔv!á —’Š,VsJN'ñ_[^ÉjA£¥šÁM;_b#š1Êøœxˆ&@£Ä²GÍž‡c1‰áÚj*!1TòœI<Øc3ÄVßÇȰ6ÇŠª›‡†ãc¨”óˆ¢]²Ä]PCèò|)? ±$’¡Â`ž1AŽ Œ‚–ê‹#°Hðæ|Àï<æqwÀ)^Þø&ø÷Á¤Ýè±9À¿ ;žÞŽyÊ=" °ÐÇúŸ•è ˜ºˆ¬¸%ribwྔÁVwŠ wy$¾PÕ±:oÂñ'Œ¤L¦Ê—r*ú#¦!ØZoè#˜æÓ÷ÜîíLP-²êV6¥à°Í†¼±[WÌÑ9h»Ioa¾ª%%J>QôÀ`’äf,î ~Âù´‚…*ã‹û#–(ŒƒÈ¤ƒG K5îbî»8h¹$«÷"¾À|¤jª ƒ}gÆ µ7 ¢šŠÕˆbÄ´¥ 3ð±\7˜$$?¯©œØnHºöáO瘫^)(ØoúmŽ&!š½€eõEߣ/áñ)öNô§ú˜3ð¯ø{§~Ö🂡¾ÿ¸™8½ ÄYâ£"ý˜×}fAô§2!ЉÒšJ¨äUH)ùàg¹”ŠÍC›$€í#†&p~ÞDwè£RÐàz, ÓÈgœ›7!„‰}'1Êåd„6ŒÔKÊy R²TøÖ¡sÆ\FP`uvH6c9ÌncLí "¢kÞÝž° W¶¹ƒŸÏ(lÞ¥-Ñ$D£¬%ž~Ý)ÒB,ZxÜõ6æ*¬xR/²ˆh«ç!”ÀRÍ€¢76ƨ4\\´„à §Eksêe‡m¥g½‘þ(H,Ã?JT ªì CÙ®|‚‰Ç'WÁ ÀýGü¼ n¾öˆŸ€ÿ Àó˜×ømÀ_Åìf³ƒ'ëTð3^ ÑdJ¢Yéùõ’ŽrŽxÍ{X¨ E¦ÄÈP+²3ÐÆ¾ý(•'b? ?˜àü‚‰‹K&ì:p¼¦.PȲgÊ`w®Í¾ µ"¯Ï—mfSŠœšæN­óé `‚i–±Ìqÿ”ö˜í†˜´d꥜ŠÅš=Jw›n2š“§Ò˜Å*«œÞ‹¸Ðsef,•ó*b›åy88¿ha¾¢¡wÀ öÀG½¬CS¸ÆÉ¤X)µÕó±T×?rþ¨k„zI•›ûo:QCp¹1Óü¤k‚e0ÝöQ@nþ…‡üL€OñÿÜ'xTHÿ €ÜÔ‹¿•'±«xÞêÄùIéž=ò-0±CMBäÓ¼„:ƒ®¢QÒ1œ¸½=A2h¾¢£3ð±T32v›.òi¦!z;4΂ooMpiÉ•6ɦؤ7 °wì&½~]ÎŒ¯­¥°wìâ°ã%²ü`Ñ•Ó"!M„ \]IaëÐáÍG!ÜØ˜ m ¬Í™Ð5Âm†Æ†$¬¶*pÐöÈó¥|æù©C! ^R1|RC0ŽZÜ|Š6,~À?}Ìãî‚1uœÝþ&M‡Fþyðårðä `Ï@àÓ°ÈŸôÚD"ŽÃ†Ÿ#ŬŠ=Ý…eˆÄÌ6ÙÇvؘƒçLø¡Ñ$HLC]_â í¢7 P-j(çT ÇŽºg“¶xò¶{Ì_ªñøý Í˜€|F9}5v0…ú=½l€/´ i„”)Ðø âN¢ªæÊ:æÊü·ÝäC1:O¢ÙõÑê±BÉåe ¹´€ïK2Œ€N¸§ *„µyD„[›<€X¨ê¸¸hBDE'N¥A–k2–À`Ä£?Eat«çc0¨”{²±Ä£"n–ó Zi0œ„h½Ø†àËx<ß~ Ø™&åÄõß>Äë¼N‹Ñï=áñ øä”‰_Xp?ÌC1r¦Ö#PÚÖ¡Çe´ß¥% ¦Î*½›‡6ÎÍ›˜+kØ8p’S|dsÆ»Úàæv»ï³TØ8€B#;€ëêXi0 #~(g6ÉøžNÜß³±X3°Ò0±P M;ûög¸$§7€]ð8°,©kB®Î丒 ;TÂrÍ€i°¡Áq×›©ó“ˆˆ’Ž ”¸¹1†„zñD·ì¨ÃVFKÁí­IÒ7Ø>rK+P"Kä±`4 ‘K«hö|”sJY•õÎBÊà>Àq‡IC·;W-ªè¯ð¸“è¸ãS>£<(å9t ¯€kíî#~Þ—¯Ï^)ÃOࣽÖÓ€€>×AFvHA@•f4á1cÊHÀ|1à±À¸IP˜¿PÕ¥ç%’®„íCýQø³oØ4Î/˜ÐUÂ-ƒ¹ÔîyȦÔ‹:.-±BLóŸ£QÒ!áæÆ•¼Š‹‹L¯TàΖ´%pyÙJTƒ-C G}yåÉâ#O ]#Y/©ØÜwI>EC°”!öäK`Ù­î#~‚™§ã.ž¬æ3m°ÒÐËÑóXÏôiÀ[?.b`Žëô¿Ö÷m”ók:4…Xº>’‹°í¾rŽi¼^Àôá½–‡vŸ…=çÊ:³iC™À‚§¿“ãžÇ›àâ’‰+‘"wÚH™¬Däúã ›†Œl¶+?·`@™ŽÁ›z§7€Xñõ2p¢yîBŽ;Ï< *jEv7ŒôG§*žDÆâÅ/Á6DZu8À›Ew@U6vŽÜDÜÔõ€‘"Ÿ‘¨ä5l:Ø9v±\70WÖÑ0tΆcH® Ùôc✬ý– "†K u8»V‚¥3ô=—fuaS'äÒÆvˆí#ƒq¸g'Æ’(f9"ðá>ÓÇ9½LÀ)â¯Ç¢^ÔpsÝÆõ FÑbÖTN½si%‘! C.2›}܉>àÌ…eø-ÖæLµ¼`èõ’†•†]# Ç 0N& ±Ñåe ­>7_:n¼弊f×gMŠö±OEœ4ýàq A‰f' ð /øŒO5 Fܽà¿{ÌãîOí¹øíx÷#¼Þ»Ñïî‚' Š"~0^ ±}è’iˆënŽ!íž/ÑŠ²ƒƒ¶‹k«)\Z6‘28àÇó$.,YÉAGÜ@'B²âRÂÐD‚‡Ù:dןB–Au)CDøY P‰ÖÇÔý·Srnã¹ÎŒˆ…ߨ`Â5KI8®ÎÀ‡LZi¨4ØN]cFTo ;ô„Rœt‡>¶ŽØtdl‡Ø:p`‚hšÀ• »Ç.Fv€¹ŠÎ®¨Ç.VV"£õ}ºÊ Ŭн¦‡­CóícŸÅ‘"’,>¦!à±ÄsŽ'5÷Á<Þzà¬àÃÆpï`ÿ +ãX”ÔWD@wÀ.ÎK5­¾‡|Z…eÜß³1_ÖPȪ¬¡‘ÖJY÷÷wN°û›6Îϛی§¡HJ,›R"äam΄ëIì·\t‡&v/89áG6—Ϋ iKÁú¾h|H—óêé«q§²¸‡m·‘‚¤„´ !ó…š=ÿÌ—p^QΫÈZŒl:êx°"äR1Ëf…Ž¢7 P̪p<‰õ}'+õ²Ž´ÉÍ@/˜¯è¸°`‹ÔÛlÑO¹´Š´¥ œÓ0DÊT «„õ=‡¾t9%•1œŽjAEÈ¢#ŸÂ”ô"Ø ìQú|½èZ~%ºLÛx¼¬ø£b¼ <‰ÜÀ3À|šƒØ>t¡«¬´K¤ÂÐv]µ=˜±4~VMÎJAƒŒÔâ5ÓìùHV4•6²i5’Ç ð`׆® Ì•5¸¾D/ê·Åï!ŽVIBksf2>ovU›¶ ™3èØ÷O¦‡mÀÝÞRS µ¢&ïï:3k Æþ¯4 2*6¢©8n€î0€ªð,´Vd1 €ìóeí± —V±XÕ±s䢑ŒîíØ¨4\^bÕ”ZQÃ^Ó…er×ý ía1ÒYë£n§É¢Õ÷©^ÒžÉAbh$k%[o>)žÓ™¶»=j˜½à7ñx1ÏGÅÀñäæá".¯XXiXß·Ïœòm~(±6gBQxÁà#Ó`ÑË0")~€×Óêœ~ú[º‡‡dq»{‘Í””ŬŠW/¤Ñ‰D@,C ”ÀA‹%txæ9¥%£© ×54»Û“™E(™*éxaRïT Zä£ò9ÐêÇ%OÆû^[M%Áã®—tM«EûMM«súG 9RKÈR^ÁQÛÿ´µ^+?êd?ÀIí~÷c¼Î“@&¸ðñ"¾^Ÿ¶o€íIº¿cS1ËÜ}„ź× á¸!FÅu>«œŽ« ÁÔ¡ÎñBì;IŠ£Jì9¸¸hÂñtìF*A †§«ÁóX(d±Æå6{,†ð|ÖÖäñ8{yèáµËgdßÅCFÀÚ~ ®+à>€ŒxÆdhÍ®M ! Ytìð1qBÌUXñÎöÃh‚Ç\YG¥ âÞû LJ[ Î͙Ȥ…°X5pÜevSµ á°íá íb±j`¾ª£?òqÜõÏ(¨4”rvŽ\ÜÚœ`¹¡?Ó ZT#—$ù¡ïÏçØØ¾Và}”SÏÜÀóñá@6ž™À£„f^dbù®±-±6¯¢7 Ò ›å¾«:òi•Õ« t±4ìµ\¬ïÙÙa‹/ç5wf>¾Í«sŒð|fº¦M&½ñø±Ùõ±ÜßaÈp2Øè¤4à’!“RN#ü°Ïö¨ `ܨ¼S­ÍëxëÖ÷7ÆèƒÄp@×8‰QIåŸÆ±ÆY)«BWCLv*)åT,Tul2Ø'É Bž««*ÃŒ=_¢VÔÀ‘¦š=Ž'±sì ˜S‘±\Xä,Ã$,¶¸ øÊµÌG–ðzX˜ÉZQÅö¡÷¡‚Ïñ^^7ßµHðfÞÇãA×ãIBÚRpaÁD£¬cdÏJðì”7_Ѥqˆ‹@ï=ì³=j肉 _‰ÿÁ2¶nöExÏ—p=æîƒ­¯/-YBÂA‹õý‹9²@(%lW"k)NtœµÆ‹IÀrÔ(Ù=vá, R)h87o’3‡ý– ]e/¶{;6ê%fP´=d-rŽ5îlÛøÚõô3+%€bN•ÝAˆÞðé‚&P=‡à…w ¯ïßÓxWÀrco|Ä÷RÁ3À|ƒhö|Ú=öh©Æ'ô~‹÷ÉXÒ«QæÆ^³`ûÐãK%-iî\Ï—"–¬ðZP"±qÔÌX J9{Ç.:à Ô‰ï á˜õÎ/˜¸ºb%Úñý¨ `±¦C`ʈç6á{&'xÿ€"%d&¥°qÇ ˜9шbÂ…E ªB¸³Åi?óô>¼RgOtÓ¸~ŽëýÞ0@ä#—V‘M±hÜ å †w¿ƒ6®­¦„ŽrÓpà•s)äÓ ‚³†£Ž‡÷ïéåóR¦xfY€7£äÓÞ@Úó±à“û%ÿ¿Ç<împÃðqñð þQ7€y<# À§q¹¹>a°ŽÎÜÿvßGÚbKSQ™Ê´\Ç‹•€]”WS(çUV³Î¨È§™â«jï·`ÇW òQ¦ÅŸ[0q{+êM½—XðÎöks&.-YXßg‘^)LZA£| û¡$-ðèx<: 0u’KuýÌõ‰u/F䞸æOÜ„‰P2¸=ðñþƒ1n¬±}èFJ®­¥pnž)‘ŠB‰Sª¢°q{àcûØÅ v›.R¦€e Ô‹,œ„Ü`I‚Õ‹«:Ž:>îï8Ï4ý–Ȧ„,ç”§ÞS”H»ð9ÞÙ×ñø¼‰'›y|Ìü¨Ì¦9¡‰šMH Ü9Eþxp~Á‚„»;í—|É&_]±M³‹‘CPwè# ysy°g’çÓÝÖ…*Ïc…àM½¨a1²HÚ;øÉÝ1]\6aj Çs&j%Ά“Ç#%8kP•gûú§âøô~WÿQ‘gÅèOó#<Çs÷xA`W*E²iû-µ¢†”Áÿ]/jB‰´%0WÑä¹~ I‰ÆÒÜ»b¢Û^ÓMRrÛ‘¸¶ja±¦c}ÿ¬Ä¢HÜß³qiÉÂùw¶' ïàB€d3 `m΀¡Î/rÊjœÀtîwõ·L|SÄ FIE­ÈÄ›0R=¿Àª?÷wlØž<¹ d$ø1gÀÔ‰9ÿÓxèÿ«yf8ÝÚcù¬å2*Ê9…Œ ?šbÙð8¥z°gÃÔÖæM³üø±"€¦pɱ}èâþŽ—ÎYÏ´oè$ªÖ÷\zœz²ãÏ[9hÜü¨@ÀØqh~x†vàŸ*Ðñé_/éP×ô‚€{œr#œ/^¶äÚ¼!A˜+kx÷î˜~rgŒá$À¹èþþ¼´dᢅ£¶—¸ui*A2eA”¸ÿ.× \Z:C‰ é=©:ý¸ƒœúòËW3Ø>dh¬¡ hÁ•4¸žä?>»ö.TuäÒ*nÇ=Ì¢ ‹Ys›†‘ÇÐ1˜¸@TZw#Gâ‚Æ„)pÐò„üرÍÚìå¼ ]°0ñLß9rñÖ­1_0aêÏî–Ȥ„œ«¨Ø9ò(6p8µ’*Ëùçª$Á|€Kà’í£ÄE0W›‚|Øç1pB8úxM–—V xú§ü8qc…=S&³ñš]…,‹ÎºáËWSrmþ¤4.dù•ëi™K+ô£#:h{¸ºb¡”Sq45þk÷}2>V"5 ALó5 ýé/lEa½ÁRVÅØ `;< °Ýà ¯· p}‰…ªŽ”™ž>ý%XÎÔg|Òð>N”e¤ ö ˜8 ilö¼x PȨЂtâJª³ h¥ "“R`;!û©ùšÂ<‚vßgFÔÉ=Àde mÛ‡.ÔHúk©Æ«Z‘Ñ­žLJÁQÇÃQ×Ãùy3ªµBäÓ,а}èâÖÖ¯]L=óÓ¥œW¥ªºýÃIH®wÂÖ*åY/«ò9ÛXÉè¾ –úþ(ñ*Ȱ”øßý¿ŸÅ³Ea”°NÏ|XÉü Uy¾¾D¬õðþƒ 5J:ÓÏG6dR «ÌC)çU,Tµ“ßÛÊ¿wo EþØËùoõé¸ëa¾¢'@¶”Á£ólJAÚRp}-×g‘×gÓÝá$€ãq³[Τ]Oâîή/Ï[R¯^T¥®Ñtýnæ?2ž´´|‘´”ójLw·é$öE1:IU« ùŒŠÍŠàYg>- ª[sC¬Ôê1¸ÁñÂMØ(k‰TRÜé‚Ä[ ; P+h‰&z«çÃvB´ú,4RÉkPÖ.l÷}¼ycDçLdSÏn"ß(Ŭ"ó®Ëh­î  i¡ª%VæŸ@\Ÿàvޝ€7€8^?ŒhH!úó±#ά²)Þ0<3jU3O•çÚSå÷ñÎ1ÂðÄÉ: y mœe´=\X6¤¡ó‚‹¹oÞSo`}ÏF)Ç“­”É‹ýúš… d‡-Ç Ñøhö<,TuwØ=( %ó»O}À{ÄÅ%çæMÜßµÏÀÒ pnÁ8݈yO@€>Í€êwüe))!Ó¦A(±uä°ôø”˜ÈÄôàþ®Íì@b$•M!a©nÀ2t#ÕÓF™Ñ„¶Ë©MµÀì¿ 2•È¥dS înÛh|wø‹[ªX¬êH[œ’1±ÈùyΖjnmNðîÝ1~áÕÌs¹Yˆ/€4 ¥<+¾(Ïù”:ÀÀÃù{E°ÑÈôóÔqJ6ê QÁ3ôPa±Æ{Ù`&þ“šÊÞ …ìÓO`>JûMîïØ´T3ôö¶Ô5žÙw}²Š<7oÈp{ÓA»ï£^Ô¶Ò £ol3d½Qqg‚A„à›þÝØ; ™éŸÚübÏÀ¸18½ „’»ÿõ¢6 —àµûØÍüi6€·Á¼ò/DÀ\…­½‚S`ûùŠŽÅªŽÍž7³9‘š¡+‘°¡ÃŽ—  SQJÔ(i¢TÌ©Û,9VŒ„z#.gX¦ŒåÄ÷[.ê%Å,»ªŽ',®8_ÑQȨȥ¼ukD— <+ªðÃBJÞìðÉ.~ n.ãÃo˘Õý¯ƒ{â9æqRB<“0 !׿™U!\_K¡UN\³¢õqÐv#Vk,S„&¼³=ÁÅ©M ¶;¿`HÓHÒn ÿþ“>ïÓlMßo–j:Êy5IÑ`®¢c±¦cëÀ™ivÄ!ÁhÂsóÌ>Œ4Ïb4a¼+ÖKì—¶XÓåB•qÕR2³3`ÆÖ¡C~€\JE«ç¡ÙõѸ²b!ŸVpe5H™pe ·6&øáû#úÍoäå'˜šR‘£ùÞü¿wœ¾Çü¸ øÝñsàò#ü¿óÄP’…¬Âð»{Þ«_psÛ¦£¶Oks<Ú¶Æ'°ãò¨úÚš%çÊ'‰ëI|ïÝîlñ$¬ZP±PÑá'v]žÏÚýkóZ=½„Àæƒ++–ëìÙïWÅ›À‹ƒÆ›€ªÎ/žÙƒß#O‹Qû- @ާBž_4pÐòˆˆk£¥¨ávÐ~xÊ<ŸõÓO@K'¼z1%//›È¥ihg»Á•¼‚ ‹,†xÐòÐîhö<â˜û »Ç.\­”É›F½¤a¾¢ãæÆ zéœ%ŸSðS\Ë¿ô~÷Õèw§ïkx¼ÔØéxv4àÓì¼FñØïFTÊ©PfêÝÙ¶qnÁdûúç ÌW´™ß;jû´¾ïÐ0ÂÀÄv]弆ÝãˆEM@«ï¡œgœÛ“ ‚ðä9&NˆÍfŽl–ÁˆÈp#.·ÙV\b¯ébuŽ7MjEuºùø'˜2yT<íð“èÏ/ƒMJqyÙÄõ Ò¦‚•†ý¦‹V߃®²A(¹ŽÇ~K5–.pksÇ;aÔI°Ò/}!+_»œJ@ 1–`憈þ?ey~ÁÀR]¢ZRq{Ó¦£ŽSØ›¸8ŠØŠ+ Z›qKuƒI€ï¿7$¶PzvD¡OI\䜧|¼à•‡üûUpVÐ~ŠçxRàŸ†CàGŒÿ8šXeÓÌÊSaâ„Xnè3¿Î  û»10$/Ú•9]–ó*:Ÿ7ŒFz„þ˜@–ÜÕÇ}šJÈDÜ€ØJ,n¬Hz!|Ëòª C&×]Y5Oƒ¶À®NOŒ§Ýþ1€o PBÎU4ù—³Ô‰H=¥¼ŠbN… Þ‚@rG3ú¢ò¶7*ç5äÒ!üp}æ.ÿòk9yeÕä5ÿ‹2n ª a¥¡ËbVÅÝm›úÃóUöP$$Ëu†ÎÓ‰üà§CüÆWóŸÐ<ùŠó`aÎ'Á~㨃›~§c9úó4À3ñxÑ!¸½mÓÆ¾C« 3IÏ îW© ûWdSBÖK'îSa¼ñÁ{ÇLò9îz‰ÀAË£¯¿” Ëy›.í%vb‹U#õ1f®­™Òó%ì¹dêL¾³]ž@„RF¥ðló°ZTñµ—Ò§?ÒïƒÙ¼OŒCSùmÿ:u&U…P+iò'wÇ4±,EZé‚(Ù½J¢¯ÙóYp!T¨\òúySÎWÎ6æ¦iÂñ‡ÑóO׃R¹´WWM¼ߦƒvˆ¥:Ã"m—G-< БϨ¨©µ\×ñÒyëó’Hp-¾Œ§ß⎿<õÌpœVüKñ?ä3žÎ44’7NíeémìÛI6 ˆ ð ¯dgš)ÓÑêùÔ1ÀF†¤«„bN‘å¼*SæÉñqäÕU÷v&ôþƒÎÍ›(ç5\[åÙëÄeVá|ECwàã;?P­¤M×NŸõÈ‚Sú>åã¿núMß^1°èËþ˧xŽ9<#3~ ñý÷† °o0ž#“ YÇ $¾p)%S•çIlì»0"Ì¿á„Ù¬Ûïz_¼œ’¦!dlvm͔Ŭ‚o½Ù§õ=;GÎ-˜h÷ÕÄcâ„¡D9§ÈBFA¥ BDï?ŸyߌP¼ºÊ²záÉð€ï=íçÿ0Ip¦ŽP4›——WL7'aLpaÁ„írÓ/œJ[b]Áëç­™ƒ¢ òÆ#ú¿ß¡›ë6½{w‚ÝÒû&¸¹iãÝ»zïîDlì3zÔ˜M+ò׿’—ù´‚‰Ã§ÿ~˃¢p62šÐ5‹K&úãðVŸl'üHbŸŸ²Ñµü&žŽÑgû9Šo ²‡{B¼Æ|&·P"àÝ»ÚÜw¨^âÆ^«ïãþž ß—0u冉چ¥º.§Eo7\úÞ{º±>ÆÝm‡— @«ÿ|éJš³Õèñ»Ç.½ys„Ñ„ËöÀš…:cûðÚ¥´´L!ヲRPå•SÖŠÚ™÷.%°ÜÐ1WÑN7´ÿ<]ùàÃmï,?FœˆpuÕB&5KYTauÞ„Pë{v¢ß?WVLY<Õˆó‰?üÉ€~÷ÍÅͽ¦‹f—e“ïnO°‰’|ëÍýÖztØöhz¨Uù+_ÊÉBF…ã²Û½;qJQ¡˜Q±6gâþŽƒ¾?šM±>Ûñ<1ç¸Ûÿ°àLâWŸð€|}æ6AÀæ¾KoÝÑBÍHôô<_¢^ÔŽ^ÑP+¨8¿`H]‹nyF“šL:ùA]%ä3*^¿š–•‚:3&üáû#zûöˆŽ»\„! |ª*¡QÖp~Ñ”×ÎY2þ&[.½swLËu#RÅžúòÂKç,©ŸÍ¸ù÷?Ô÷ð!¿·€¿NIJ VÒä…È 0þ‚–êz‚œ<ÄTÃÐXðà´ÐÁû÷'ôÆ#ÒTfUv<Ø^8#yT̪N´<¼{wLÿè;]ŠÇ‘§B—LyyŔٔ‚ù ã¶ý@âÁ£%ÈýèÆ>XŸ|^²€Uö)ûÔðð…+ÁÓ„ÿoõõ§M…^ôÿ°Á°Ý€¾÷î€j YK 7 @ÄbÕËÊßߵᇕÂÉâ BàÍ›#ôF2Ö‰ñKƒxõb /Ÿ·f¾•íC—QâÜCæ]_b¯éa¥nà›¯eaꉌ7lWâÞâÞ3ÏÍH["i6ÊÖæÓMóß—êOÊŸû懖r;ïüU’¹Ï„Û[6ù°^Ôñ`×Foœ™åK 4Ê:¾z= mjWŽCú7zÔúX¨° ¶A¦Z¦!°\7°ßò0š°ë`’hm޵ÓfŒš ÝcR¦‚j9½a€öÀG)Ç£Á´%ÐìúØ:pi¾ÂHÂÏÜÝ< øtÿMëýÿž,áµ¾ÆßÅÙyò—ü?ÁMÇÏÔWÏÜïÇ}’’¨ZÔ"Þpg‚f×C>£bdøå/æd!«Èøwš}ç¥M%bò¡”ϨÈg|éJZæÒ W޳…{Û.iš@1«¢qXbèn6¥àü‚!—'ŒB†#ûtØò©˜U¡iÄŠYј0c)xýjZ.Õõxýøpþ7ñáPœièÙ_¿„hj—I)NB(Š •:Ï7%ج£œg®~9§¢Ù…]\2±:oÌÔT­žOmŸ ’Ç A`Û$Cgzdµ !e±Cœ¶+”rZÂΊOr]ckò÷îÉõe$ɤ¢a±ãžU YF4î5=Z™30Ý\ü †ŸÚWÀb §•€À¦?©ð!p)ð%œÀ}¯øßø?‚¤?sÅSJüáÛC:hù´XcA™f×ÃØ !¥ÄƾU¨5\\2åÅesfƒS¢RN$ÈÐÙ‹"e(,ƒj!Ü`¤»;I)‘6ì5Ùk8 Ð0uÂ.§`L†A@ßùÉ€N¤ôÙÃ2ØHw®¢ãå ©i²™ðOüM<†úû°ø¨juÿx° ÔTÂW®¥ñÁ–ùö|~³@4Æ‹ñ*¹´"OgÜÍ®A@½¤!’ Oh¿7ñb?ö+Ëü@&2–‚û»ÍU4ä3ÜW\\2ðÎÝqdËÄb£šÊ2cù4»¹2*./[¸½5ÁoÿQþÌ/M¦ABÀ¯øà›â=ðu~ Ào‚;÷O³pc„ៈþŒÀ7Z,8ÿ™[üRo|0¢{Û6[0!#¡Úõ}'qÚ]Œ4,ªE×ÏYò´ÌQÊòÊŠ‰~%Àúž‹ï¾3 îÐG9¯â›¯e*³ àö®CoÞëö \[eÝÊÈþ.ðÕki™9ã! 7oŒpsƒ9<Ó¥iÚdì««æiÕß1€ÿOü;u¸ž5þ«ñËÆŸ!Þ0†”ò  GJ ZÐϰ0µ5sæg›vŽ˜ñ`ëžOÀà–# ¥P²ž€®± ©@è±>@>y°X¨êòü‚A­?×Ä ±ßòÁÊ-:2yï,ÜÞžà[oöéO~=Ëx¶ÔáO0b\ÿ9ÿkœµÛø0 WNý~ê#üþ§&À»÷Ætc¿í†Mx”¶R7PÌröXÌ©C`¡ªÉDœdê>ˆÿ3ŸQäKç-h*ðÃ÷‡ôÊ…TÒø#ã~øÓ!9“Öb›˜õç¸My}ªñc nnL(þût 'Ž{~¥œ™¶ý&0çÿ‰ÄŸ‡ÅG)â87œ²ˆz~ q{˦àÔ-{ ^X´pØñàz!]]3¥˜ú„÷w2uA®/±{Äî(1@‚/ˆÇã‘â8Òãë ä3*&nˆ››cx>èÒòÉój*ç°‚b¥MåÿW­MV{9ÛÀm;‚|ôœ¥¼žwL/Þ‡ýýg&ˆ€Ö'ôã›cZ¬2$Ýó%R¦’l:a¯å%Vw¥œŠß‘í„TΫ‰ìÖtj% ——-#Pã×ûéý ½}{4³†m—' —"¿ñÕ<7£Ÿ»ž¤;[m™°^OŽ×¯¦åÅ%søãøwÁÒ_:>NÁûÿ(þK(µyçæ3–\,»î^ÓeuUoV,g¡¢#c)Ø=v1½°5kE Â8+`OuîÀ‡ïKu—ýQ€zIG£¬ãÝ»cúƒ·úp\ùy˜üLpsݦï¿7¤zI‡ixL”«îlÛ¸·c³¡§& ¾ƒ–OvúïУôÝ.í5½X¢&âÃ->,b%áN? „×ý™¸!ö"1ѯ^ÏÈ¥ºžÌð‰€÷Lðã›CT **ùYiïöûòùË/¿þéGý~>Žb}àïøçÁ#¥ÐÐH~éjûÅúèŸÞ–!pssÌH«Q€Á8„ºD@½¬á½ûì:à8ªEvŽyÔ1Y(“R@àî>Àb‹Ž"›Š|q<_ $6ìH/PÃ…EÙ47c¢‡p~Þ„®~rgLÈ_ùRŽbòÇÏã³DÀÍ ›¾ývŸê%iS x¼'ˆ)ìc;€®Q¤É'P/ò½ª©„¥º?H‚n®Û°F’Nñîœå¯Ä@·ó &NÐÞ¹·%‘M+xýjJ ä@k÷zãÆŽ:>,ÃÃRÝÀÈOMA Š{\ˆÔÁüGøh¶ï>Þ0(èø_œ¬4tyqÙ¤÷îM¸é—g+ð{v" :v8¨—O櫦Np\VŽg¥BpöPɳ/_µ Í ÿ*-ùBÓ‹ŠÌœØ‘°¨¡GóÓ€=ÞGv?`ýõØÞ¹ZÐJ EauUEoßS(!õK9:}ÑŸî >x0¡?zDóUšJè |’C¸¼lA×Lƒaë~îQƒmbp×ö„ wïŽq~ÑÀ•SÉv¥Ê9Uf.*²œW¢”žGÖŠÂ&9ç ib†Ô³ßôP̨HÜ(T°:gâÁ® Ç 1_Ñq}íÌéÿ}0í÷#ÇÇé|ïøÓ`uZ© B&¥àþŽCºÆu?7\B³*J9Noò…qÉØN@U MP<>Œç¦q¢3&/ô´¥ ŸV‘K«®á Y²ŽÕyZ\¯à Ç‘¤©¬¸š¶xl“K+èC Æ´ÈÌacߦ²éH6;íw6mÚ!k:Åh°ŸÇ§;¤Þ»7¦7oŽi¾¢#k)èßù´Šlн:c;DÚTpoׯö¡‹fÏC1«â¨ãcóÐAw`d¨ä5l:xïþ˜š]Ù´B¹´òPEhU!s¬*´sìâζMûMù¬"_»œ’Óý‚í#—Þ¼1"" e*‘(ãT*0éËWÓ²q›!pÇÿ¯á£«AøøÀÀ :`"%⦚ˤk¬œMñÂS~ÿÝa@µ"«< %膴{ìâ°í¡;ôQ̪Ø=vñ r_9êz8ê°SÆRpksŒý–‡ÃŽS'\[³’/W°×ôhëÀ%U%ØŽ„iäÒ LM ŸfÑ´¥ÀÐZ}#‡mœ\O"ŸQJàÁžMÍžO‹Uý<øtCl%~tcDoßÓb•q䆰®6´]äÒ*vŽÝDˆ³”×pÐt1‰ 8Ê9M:§¼0K9nØuŽ»>ÝÛ±Éq%jE푇C.ã»bN…íJúÚKTòj¢“a»’~çG}º»m'"¡Ç]v½žØ!J9 •‚Š++&¦RÌÎýðÑ ]|ü ŽÿÀŸC0¸¼b¢Ó÷ñÓ8n˜ØÇÔ^2äòˆ‚%M^Z6ñýŸ (çõD Øgm¹ ‘UÓÈ>é.Õg\QGm#;Lœ‰. ®®¦pÜñàú!ri)Cà⢅ äQä3¸cÞDÆR°±gã~§C¿ñÕ<æ*ÏOWðçñÑ‚°Iß{o€;[6­6LX§ûöl¤ Ù”À~Ó…•ŠŽFÙ%A!À2B qâµ”€/‘"cFe¦†ãßo@ž/qýœ…jA…¡Ñ 9GF›Ï+,yiÙ”ºzR61×e÷ØM¼¤ÉeÈaǃ¡ ¼|!/UuFî» àoáñŽÏOÏj¸àoø¿RBZÉ|VAäSžirÍ/©;u!€¯¿œAwàîŽzdôéxræ÷ ] —Ri1 `¾¢áêê¬.šm– s¼0AÆÍ˜Á8@«ï±¿€•B³ëcìh”tÔŠZdØÀš‚¦N¸³mã¿ýÃýúWr¸°hþ| ø”„ˆÑsï ¨ÓpaÁÂØ %›uÆ,#/Á¿´Å|ÿ¥š+–²ŠÅšŽ/]MÁ$:¦¡·º>ä‚™^¦NH›œ5Ú^˜Ýî»ð}ãxýj U]ŠSÒå‘§Aò÷ñ‡íCj ›‡g…œ¸Ï¥Êja†²Nþk°\ÿÇŽgQÄq\,#’ +dÚoyÔœÕ Xn˜PÂæCksT…‰ºFXªé̳ö$mì;<Œv]  Z`†íCþY>­à7¾š—óÕ““™ŒúÉ1åÒ ü€µØu+y ¶&òe¥ÈZl¯éÂõ%ŠYÛG.Ÿ!œ–É>îû-··lRB½Äþ?DÀÖ¡Kßz³OaHX¨ê±ž_ÆR «"³£ÁÒ Y×ÏYò• –dG”)I)¨U4JšL[Ýa@±¦® X†‚BFE)«¢VÔP-jÈ¥T˜:a0±{ì@Èe”ÇâH¤¾ó΀îl9´XÓ1œ°ÝYz{)§â7¾–G&•Lë€mÿ[<½ðËcãYnc0Oà7ÙQëîm;äMг*–jl ¶yàÀ2k'Ö†.°PÓáûû-ÂPˆ¤Ãsis#¯Íøæ³rmÞ˜9‘™¸á“íJŠù¥+Uò Ð(ëøÆ+YȨ Y†’ô/2–‚Á8@ÔìA°I9¯bb‡¸µiÓ` QÖÈÒÞø¤#6Œyçî„þðíåÒÜ0xä–±Øn˜t¡÷[.ªºüòµ4JyU Ag®]<šË¦„!ðÖíí»lç•UqÜõ°yà ;dÁ±ÍîXK‰1%Ô¤BÊg b1CðÛo(f³jbñ ð⛯eOƒ~ào€¹Ï$žå°Ù%°Ú¬” c;ÄΑKD¼)œ_`ݵ½&#þŽ;>U ÜùŸ¾Àµ¢†‹Ë&–ê:æÊ:jExÇUM+¸¶fÊW.¤äôïÅ¿ÛôÏ~Ø££3»6öD[`8 K«M¼tÞ’Ë žFtÙNCç9p1§¢Uahaô†> ¾ÑT…poۦ͗ŠYžBü4ôÉ„  ? ðwtsݦFYG.­@á°ãacÏA.£`¿éb·éFpqÂQÇÃëW3ò—^Ëʧ%}U‹ü»ëûùM+Pƒ¶Ç•;a‚]I™··m¶=컸»mÓaÛ£LЧNqxÄý—D‹7™ržp‡“aœ_2ñ˯妈Àþ÷†Ïê»|Ö@¶ÿSˆôæ…Ê•¶]NB,Õ ”r:}ù¬Š¹²ŽJA…ë‚R¦@Úš½0–!P)¨h”4ÔJ*j%óU óMsꙜˆ!•ðã>ÝÚ´¡k„RNÃΑ‹‰&:íse —MY/i‘v¡Àû&´¹Ï–fºÆ£ÁÑ„'éˆÿ­*„\JA&ÅÈÅ››6Iµ‚–¨"ÿ<ž}PTWßßuèÞÇ•´XgsÍv߇¡s“Ï2J9 ýqËTP/2ýû¥ó–üÆ+ãBâç8›€dÑΙ×P)h´wìQ«Ç8‚rNE³çÏ Rý¨uØn˜x\ØŽÄAÛÇý‡ ïcU!üôÞ„~|sD|Ç= ÖTQÊ)øÅ/dd)¯NÓ}ÇàÅÿƳüNŸõ0U+ÊD²˜U•󜦙Ñ)ëz2ÉîlÙT̪3´Þ鋯«œöÇ&¤»A\OÒwßà­Û#ŠË´Qˆ£‚¡¾t%-/-™3xäRNÅJƒåÃû£€ŠY ;ÇÚƒ rˆîí°_|*æ3 †ãw¶l:h»(dÕGΆ=DD°ùÁ{zûÖ˜x<Æ›w2âS¸ò•oMKÆR^ÅË,yyÅœ™¿KÉ~~›û.íùÔìù¤©‚b&kºFð}àî¶C@½¤£7b£d $2F¥Ý?qþ!O¢Ùó©U!ôÏ~أöޭÁ›=­ž”Éä¶«k¦\3¦¬Ñøâ)Å>Ÿ6žÇ°•Øë`©j ðBTƒ]‡îíÚØoñ¬¿Ýg—”‰Â%tUÐ` ›RÈÔÏšƒ<*b ö·Þìã­Û#Š;þµ’Ea¸°¹².7 |åj›ÝfR"á3H J› òvqM› —%Í3)…)̈›H{Mn¬Ûäùå‚F¦öólàãF,ŸugÛ¦ßÿqŸŽº-× dRÜ—‰›"ˆ}#û>òÛ‡ìÙ‚ðõ—2²^>±i'â‘Þ÷ÞÐþd@;‡.i*ÑΑG›¥-Å쬴¢ªõ‡\×çR ¼(]N éÐ(éè}¸þÉØš¦¦.¨Õ pgÛŽ§bE`ö\¬é¸ºfÉS\ÿ{`æížq<¯ `îVþ&€ "OASôÞ½1µ½™Y}üe,Ö hªÀ>ÒæKŠBȦEb£(pÆ)Åõ$5»ýà½!mì³IC%¯¡^ÒQΩ° rŽU U_{9ê-X77lº·í© „R&^m–!K«0tJ\ Sã¿”×à¸!nlØ´uà’i³J2áøy<}Ä×ö°íÑwßÒíM›òY¾†ƒ1mu<¬ï³ owècçØEÚä†Úæ¡‹zIßüz~AÇŠ@vH¿÷fŸÞ¸9¢‘Íea%2¤Ý8pÐ…tyÙJêïHEˆö[e,ºÆ÷A1’7"°›ëË,Äc'Ÿ'”ÌÌ¥UŠmÆNg‰†.ðW2Ó=­ïÿžy<¯ 6Áò_Š>t¥—ìžRôKˆ¯6Lì³bJàÞ¶Cöê CDŠBäy’)É$íŽÚ>Ýßqi¿é(f5d¢šŠ™Z Úv›Z=WVM¹6g<Çóã›#ñþƒ ƒ&ìñï¦,ÎnoMÐù(ç¸ÁÙùÐ5]%£¦áaÛÃ­Í w}ʦyºð93"y._úCÖêÿÁ{C""š«H“›Ÿ¶XÐ¥©L!¢ôŸG³å¼"ÿÄWó3²ïDÀAË£;[ÝÞrhd‡‰ýV£¤ad3d\;g%¢6B°€èwÞÐQ+fÙ H‹®y­¨¡’WaèÌ+p½ð‰á€ã…I6Kǡ࿕×Ö¬é[S€gþÿ|LÄߣâYÀÿ À/‚j¤”À…ES~ùZß}gì`¾Ì ”Vïä‹ B‰£¶ÞpDÍ®¹2#5•E>G“ÃI\¨õ=vR‰•‚Ò‘/ûqÇCoäãÕ‹)ymÍzìâdRŠ”äpÚ–,Üá8@½Äú‚¶Ã"ÂΑ Ï—X¨èhõ}dS ^¹F»çaëÀÅæ¾CW×,¼v)…zI“Sb?(âÌn0 éÖÆ¬ÛÄ>2‘æÈfä^9¯¡ÙóàåZ}?§!¤L%q¸¾¼lÁõ{2³ü×hž–LäÓìß —W-|ñrzZ$Nýÿ=pð¹ÄóܦüwÁN3sˆ`Â_½––ûMk!°[P!«b}φ@1¥"c1(#¦fjªÀQÇCÄÄ Û áú¼Ë^Y±0𼫯".°La(a»Ì¦úæk¹ÄmøqQ+hXª1ŽÜ2®­¦ @U‹ðÒZ dùsU%¼l¥碴Åeƒ¡ ÌUt”óö[.Þ¹3¦[6®­™xõb µ¢&3l²Ÿµˆ³Àá8¤Û[6nmN( YOÒÐýËm÷†>Ö÷¬4 LlΠM Q±uè Ùõ˨xåBJ^X4¤"0öû`}B<˜*¸,›¯è¨Ù‰zâ„Qƒ™2^½˜J¬¶‰€f×§{ѽ×óc'@!ó{?`ºùh¢Ùõ ©C#컉–EÜüv¼ŠB˜¯2Ùñ$ªE¿üŬœ¢¸Œþ÷ÁÚŽÏ-žg ÇxSûUD¦šF¨TÚÜw)%ÖæL¤LV뙯(çUèšÀÄጠ”,þykk‚vßçq^ÀðLËda½¦Û gêªz‰_‡“òky¹TÓgêþ ”p\‰Ä1)©ÓH‚ª tl_ÞùH z£;G.Z}iSÀq%¶ "ïÉÃnIšÂb¦¹4«Æº~ˆÍ—nnØÔî0 A“»×OÛìü¼D •í zçΘ¾ó΀öšUóÜÝ75â“ÝçL®; `è„z‘³,ד¨FúýÛGŒïÿå/æäõs–œ.µÂôÖ­ýî=:hûè}”svš.š]îE™#üri/_HÉ—ÎYˆU¥¤dɯÛ[NÒ¸“’Ù«¥hë]Æ?‹åïö[.Ž»Lðiõ}Œì émäS ÛæeUü±W²¬ð;ÛõÿÏüu<ã®ÿéø$6€w±‹` k 0ʪ’W¡©‚R¦ÀhÂ)Òq‡Á-Æè;®ÄBÕ@»ÏéM5þ¢cÊåôŽOÌW ¸^ˆkk¦üÂ¥ô™ƒÿΖCݳ§oÌÞ0 ?x»O#;D>­âÞîA€á$D6¥@J‰cc;àÑSJÁö!+±Ì± Q(‘K)8êúP`¡j ’g`Éæ¾C?½?áÞ€´yÒìü¼&q}ï»Ç½ysD?¾9¦f7`5è¢CB‰þ8„ÆM`Î4B­È*9¦.P+j(eU`¿_üBF^?gÍŒuã&âï¿Õ§Þˆë}EðówýdÕŒæûWV,yyÅÚ¶Äó%Z½@‘4œÚê%ýñ,„—ˆ§aTz#^¿AÀ]þî_OUŬ†++¦¼°hœ®ûßwý[Ïûš<ï Ž!€\ ¼ þþ°6oHA„ï½7¤Í'c Iãê*á¸{¶"ÿ¼ÕdD Ò‰kÁŒ%°6§ËÓê®DÀúžCÿô]º¸Ä*«ñsJ0éCS¹«KÄ©¾ ®ÿF6 “äÓÜh4 ´ÉÂÏ£ Mà%#ÍÏF@)«&®®¦!°PÕQ-h8h»Ø:t±¾çP)§âⲉ‹K&jUêÑñ³Þ+ˆ7ì `¤åƾƒ;Û6õ‡ŒÆœ+ëÐ5^(G]Õ‚†Íí¾ËËÚ}ëû6ri—–,<ص1˜(f³á¸!¾v=#óq曊ÍhK9Í®?3®Nî1M!œ_4äÅeã̬k„¯\O‡¯^´¨;dCšc—ŽÚ>ÂP‚mÁ}”d~ qÜõ1Wæ,ÀÔ±¦AG;ÇV:–úô[ŽÀúþ›ŸÄõù¤6€KþX¾¸„H]v¡¦!› ón:V§ñÝÆaHÊE%Ðúh”Xq8¥Ô±aÃ¥†N3ȯ±Ò÷ß볇‘ËÉHÂÐ…4u¢Á˜ÁùŒŠlšñå¹4ã®,3ux¡¦Ë\ZÁ-›ö['1ŠXiB`ëpÂPâ"sÍãQåØÐéûxëÖˆÞº9B£¬ÑùES®Îé(åx3ˆ7°Ï†0½èû\.ÑÆ¾‹£ŽG¾/‘M«X›7“Ò+ U0`Hm.mÀ4vލ ¡VÐ0œh÷}î¿(܈]ßwÐDúÍoÎØÍ¥L!ý+9d,…vy1ñ÷J¾¦ßübV~ñRZ zôç± !¹ÜÔðêÅ”Û!ìGm¦A8l{4¶¹Ë?1Ët®¢£”Ó°ßtgJS)Y)ëÚ9SN5*cÏ¿àw?©kõI•qÜ>è7õ…P/jØoyÔšJÉ<‚F™OÇ=ÙEu•˨X¨°†;Cˆ¸¾D«ç1¿š€×¯¤e1§œÑo»»íÐ{÷&äy!LCà¥s–œV}ePQHi‹á¾Ù¨†ÀØaè„íCëû£À‰xú‚€ù §ß˜,¸ŒÊg”Èâû$R&— ¾Ê¥˜Q™aüõ¼|åB*)=þ» ±Ø¨ãÊŠ‰Ë+&.-[òòЉý¦GÝÈ+°”SÑêù3åi1£à7¿Q˜vÆŽ_ñ¿ðÆsù=,>É þþþØaæ}!²”Sä¯%‡ø‡]jGu¾ˆNÿþ(À(õÅÒ_YK@Q˜ÖÛìyØ;v“ùp\ÿ_X4dõ!ÖßöÚ>tÉóY¤Àó%\_’i yl„Ë–Ç›\“ EÛ^’)äÒÌ ð‰å†!5•äÚ¼áWKøÃŸ è¨Í×ï¢ K¨*áâ‹DÆ./¥œŠNôyó†ç2*ÊyÖ"àšÑÇ›7GôÃ÷‡È¦4JÍWuY/i(f¤L!5•‘Šøã>ëL!–ÄM¤q£Ñ™í„ÔñÂÝoºhö|²©6 Ì•u¤Í „ëKØ^ˆb†7ă¶‹z‘©Ùw¶Y´õÒ²…0ôqo׆*€å†E°„÷¹y3ynÇ“(dŒ&!R&c/ö[.ýúWr2eÎjœ«ªøþ»Cš¯è8¿`ââ’!Kù“"”\ TòšL™Šxxæ5ýwE!T ªô}no94_5O«°½)SA!£à¸çƒÀ%௾ž“Ë }Z8$Ö÷ûwðG~‹OzXÅäß{Ïý"J`±¦Ë_ÿJÿÝ÷º4š°Þ!óҋKVbÄ8œØ9vY†|ÎÀ^ÓEw`*ƒÇ¹y¯\HM›'0oüÀ¥·n)c 3,GVΩ8½Ýý¡õ=™TAÈ'OLAñWV-|ùj:;V‹ªü3¿X{ÇÝßuHW {-ý(<7g&›I\Óv"›èµ9…¬ŠÞÐ|ืPΫÉÌy0°ßò±qà2EZ(dªäUYΫ(æTäR¬]`hE!9mQýÐxøim&aÈŸÙó%Ùnˆá˜Yí¾Nß§Þˆ›·q½ÍÖn"QZÙ¼y'¾‡\ZE­ aì°tëk)š@ ›VËð‚¹³=ÁÄ¡i]ØkºØk²³ÓBÅ@½¤Á2.-Yð|Ñô‰Û›èѯ½žƒ¦ÒIoGM9š„ð}ÐÕUSfÓ"õë ¼}{LÇ]ª*åT¹På:½œS¡©'ßçéñíÍ ›¾õFŸ†ã¹´‚bNE)§AS‹5œ=~ãUnVžêø¯ø+à‰Ù'/b&ü¿. j ^Z6対žÃ[·FT-hPUN³ú£ûÜüq=n¬Ô 8Ï^ÅTÙPÌ*ø•/ådzÊn‰ÀrQ77l24ŠôXvy¯å¢;ð‘Oë3MÂLJ$':ÅWÁøTzù¼)OK†»ž¤á„ÉMìd¢Ùã†P6†Ûa4Y›30_Ñ“îq£¤óûjº°L¹”‚‰ËsêµyvTöÆ6ô†<šlõ|ŠÇO1å:¸ Œ¥HC#Ö=ÔcgZ$ªËBIPùDʹǶ˞8!Mÿ7\Ǧ‹5ªseþìšBP”-|ÏgÛÛ5{<±Š™¨ks®¬X¨U9Ýp/þ.Økñ‡/b!¾¨ àQÇ_ë V5¿p1%KYë{.ÝßµÑìy3©=Àk¥Ü cúßáÕ¬\¨ÎjöI[‡nâ#xÜõ±yàÀõ·}Ú*“R@ÄÈ0](DÝä\ZE6%p}Í”åül‰áùðvïÞ“”¼Èªyc;À×_ÎÈsó†ŽCº°dRwÀe/àÑß½®b©n ›bö¢©0xQ8.ÝÚœàêJ 'ÄQÇe1μ†¹²Î®#q×Á۷Ǥk„¯¿œÁ×_ÊàGŒÐdNIÒÇÿïz‡-þ.®®Zòêª9­Yãüÿ}Ž»^˜nf-vcmGÈ¿x¼óÊ…”|åÂLz"àÖ¦Mß~k@ÃI€ËËú#? I‰„Õ•„dœB1«@S2‹•Lœ힇¹Š•øÀM¿Îî±G÷vŠÇ}SŒS¦‚R¦iKÈZI•'¤£ˆQHDm΀OÚzIÃKçRÑÇ›T.¥b·é ÙõQ/±½ô`ÌéuNS A° Š& „º©%]vöD‰#Ît·;ˆ °šJÉϤät‘„Vüp×—8l{ȤxIJdS|vŽ]/2\w}'!—–-(‚bO<¸¾DÊXß·!,7t¼~%-/,±Íû?þN‡Ž;>..3(çꊅa„Q á 4…³„Þ0@«ïã°ÍÙ“ã…dhi” g{A±Ç?ù^‡6ö]€HÆ íɃ½–‹¬¥ œWaê<êmõX±×vB|ë>Þ¾3¢ùŠŽJž»ý~0ûBaô^^ao‚Sê>Ü{a³½ìl2;PHAÀµ5 ;Ç.Þ¹3Ûa£P&áŒí,º2gȯ^K'$ ø±‡m~ïÍ>5»R¦El÷äû–ã§3†b–]ƒ¥ät3ö$<7oàúš%O÷v=Zßu¨QÒ Vt¦«†œZw‡>U :©S†——M\\âÌá܃£v›. Ç›ë{NäXd0Ó,Ò§‹#!%°±ï`ì‘Ã-§¯Fy¥„® 'ÆN˜¨ÅÑfÃ8`ËlCBAo ”,“^)¨ÐTÃ6§ñå¼–œÈA(QÊiX¨p9µ¾çÀ%*yÆrÜÙ¶1Èg\\²`ê¬ËÏ(X¨h°Lžå{>û8( ›ÅÜÞœÀй2_Ñ¡*ˆ8ÿÜ(U£&¨ëÉh¼Ç¼þ(À[·ÇtmÍÄRm¦éÆ×_‹Û ’¥Ê9 C.‡:Ý!7ðŠ9–)peÅ‚ãJ:h»P6™+³µ]ŒïøþX›7ðk¯çdʧ;þÜñÿÐŽ¾Ï2>é1àÃ"ð#U°†€ª²8hÐqç„ dhKum&àÔŠ:^>ŸÂ—¯¦‘M)³´O'Ä?ûQŸ¶]""dR"Áæ{ÑN-¥D9¯Ò¥å1Zþè§C CNq:JYêYΟ8Ç“ôþƒ ¹; £~爛Vù ׺±Bñý¨~o•ÛRçÒ û¤ '!Yº@.R$*f¹1º¾ï$Ä£¸Y—Mqf‹—Üä©R¦‚\šiÑ®'±qÀØù”Á#HËÛ!îïÚhö}äR̰K™A€{6B‰¤ã>vdSL¹®X4eãÀÁpF '&ÌĦ•h$z‰²ð$GA¥¨Êëç,ÔJªœ¦L+ a¡fÀ2ì»tØö0qØÄƒ' Mh”Y‡ÁÔÊ»ßrLÁrcêð­Í ­4˜Û1–ÉV`[‡.ì€á½Ñ(ö§Œ7ú¸ïq{“õûy|Í|UPD#ÄS,)¥ºŽßüF•}f›~ßð—Á ŸŸ† à¹ç¬‚áÂ"…àºÞ7  šW‹°…*3Åv\ÜX·)qÁã“öÞÒO㮘cØð~“1àiS`®l`¹a`±ªÏÀH¥ýôÞ„TE0ŒÓ ñÇ¿’›iŒ‡{Û­ï;äù\‡ßÙš`d‡ÉMtm5%×ô3N£14vú`R¡QP<Î/òû %h}ÏI6ž£Ž"†ÊÖ  YÆ¥ßß³Ñês':›â®¼™žx>÷3F“†Îd«Á$„ïKhª€ëó)wÝ;C>­ë%•‚†Ã–‡û»6Ú}²ÌGjËZ$ƒV/rgþÎö-à ³'Á¦šÊÕåºÃ¶‡ëMB¬Î8ýÝ:CvG<õ¡ äÞÇ|EÇq—K Û ‘K)¨5"Œ®ËP]"&°yà¢; hmÎ8ƒÈe’Þìúäx Îê ‚Y)ú¨?T/éè|tGzC†!oh±¹Œí† ùìO£pz-À‡ÝÿÜùáñiÙf?},*z9þGC#,× ôÇArV * Ó=h¹Ø>ä“°Ó°qàPíǨÝ÷éw~Ô§iœv½¨% Ëu# !Œí«sºÔ§HA‚÷wl’ Ä…C~ýåÌÌ"&n¬Oè[?îÓÎ;ÌÄTÕX‘HJàå j‘-t®/i}Ï¥á$$S'ŠÑ‹À,dÙ2Xv¬QÖ°Xב±J9–+ç/Ç‚Q÷™YrY‹A/¬¾ì¢; ˰~6¥bûÈÁúžVßG.ꤧ ÛGN¢¡˜Ï¨ pFB¼HŠ9÷wl컑‘¦\Z˜:Ÿ¦–!p{k¿WÔ0_Ö!°sä¢? zùœõPûmÞäõX{‘„¹ŠŽÃ¶Ç% &Ÿ7¡4KYäp=™ŒP{ÃíMº:g@=%×]Ê©h”tøHS‰©»ö ±Œ2r’”¸aä-Ñó1š(åå¹XÓñK_ÈÊZéÌâÀ¿ àý½Øâø4ms~ÎÎÇÿh脵yK%Û•¸»=ÁÖ¡ƒá8<™ÇRlÿ$èÁžMiSÁÖ ‘¼‘ÌUX=6ŸæcçØMnôëçS˜Ö‚‹ôæa;!ÍWu|õzz&…ŒÅ%~ë=j¸!%+w†­buÎ@á”ô4b8‘‡ú­t)¸û›2–ëL÷Ý8`2KÆâR£ZÔðõ—3ÐN5¸îlÙôÞ½1í·˜ÿn»aârOê%¶ËζG]½aU´±ïÐíM›Vêl7¤·n)Æ Ä Ï”É¾òºJ¸·Ã©}Œw(fUÌWu4»>~øÁÊ9 3ô¦y(¶Á²fu|jõÒ5¢½¦‡ŸÞŸ”²Ž0dÏ>Ç Éý’s ªQ\4š„ô`Ï¡û»6«úþØ¢-’š'A„fÏÃxêT&b¬€ç37¿3à>D6¥ Vâ÷rwÛ¦r^•Ùh<Ën½ÝÞtÄ-¶Ë ©þ(HЋ±m\žâ•‹)ùë_ÉÏŒ Á‹ÿ}pû‡/z=.>Í@÷Á_äßðÏœ h áë/gd&%pkÓ¡b†!·Û‡.:ƒˆp|§Mîð¤ws` Õ‚š¨¸>*€ãJ|ûmv ]›çÅï Ö÷l´>ü€p «]i2eyú$)8´CôF¬pÜõK)Xn04ÎTÚ}3U³Z.ÖæMø¾Dà¸ãáÖæçLð†`£ZÐ0_Ö=º¹Šž”EõKhu‡lt¢±œ>Ú¥&nד$ˆÁBí>«æ!°}ÈÓ–ãŽ{6¼H›A:¼éœ_0Ø~KrF×è—–Lì·\µ=³*|ö[w\nìV¯AÿìG=üÚë9< y¹PÓ¤®±×ÄbÍÀT(‘”"Óx`8áþÃÅE YKÁ­ [ä3Š4u!omØôûoõi>ru§únäܸ¾–ÂÅE•Bš-¿µ„x |òª~‹ÏÂ0yè/G…ÿC0pKÆäŽÅš»Ûý䟖 §; M<ÿ¶ÝäßÒ‘–`1«Bcé& BùÈn´ð“;cjv}\?—BÚdÍÂ;[“$}'ðøID§ðêœ>ÃHø}½v9%¯­Y8îzèŒíÊè ™äÒ(k¨Y¹Ý³J]%Ø«!oì;‰#WW,\_µ@ìc‡ã®Ë¸ºja©ÆöYs•µ‹‹Î/˜¬­8ýþØ^H?xoD1 ûÆÆ$’;87oÂ2Ž;>nnL’f˜íº(dXã®VÔpס ”<Ï/p ½{ì¢VdÁÕrމýÑÙæ‹í2Ÿ QÔà‡ß}gHßx5#kEõÌ&]+ªRÓŽ7!]5ÑúØ=æiÆé ¾ÝaÇ áxªªDÙ€C¿ýÃõ†<ÎK›g݈6Þúøòµ´\ÓeÌÅÉâÿ>¸á÷\Å<ŸU|ÚK€éø}0gàKˆ`Ã/¶Œ%°sä&zqHÉ#žRVÅnÓ…"@´:gày´¦1ôs©n]¶Yò)N‹95*1NZ|1PáâŠ)Ó–8sbMwŽã“W$³)Âåç t†,V/i²Ùõi¥nb층ɌÁÈ¢ŒÆ6÷ÎGÂ#ATNtr+׬1he8 ’SÑõCØï\¡”¤Ž?¨ IMåwš¶Z}$„¡zIC3Òg¼¼láîöÃI€ù²Žî0Àa›Å\—ëF¢“xÜ›£/tâ2úPʹÔl–äGà)Û qw‡Ëšk«õ†Ì¦•3žRå¼*ñÕ¬üþ{:hy´P5`ênÇÅé#ª²¥ ÜÛµ±ßô(m*X¬é¸¼l%¤ ]#Œí“¦ñ¹ü˹§!p½ïø»Ñ½yø¢ɇ‰ÏR‡à{`õWÁ›€X-vmžk胶Gn$±PÕQˆô»>6ölôFAb ¹I‘ç3ê÷žPïGn®;Çn²hŒˆë}ÜõAÒRNŹyiKÁrCgM(øt icߥ±’eR•‡~ÒàG×ö›>­ï;ô`ÏI|‚Pb®¢CJ`e΀ë2¥v0f0Pì3·T3Ð(kØØwø´M)è ùT[ˆtñ»Öæ L£ ‰w¶mº»mc±Æ ™þ(À\…¿Ç{;6š]ÆåÏ•5Xû'®ï9p¢^JwèCWÙÄc0fe#€?g&¥ QÒqwÇF1§`¹®'R[­^@?}0¡±@U% ×ÏYò• ¦3•‡…¡3jtl¸½e“eäÓjÔ‰!Â2b{†HŒh\O¢=ðÙ½'Í N×çRKQ_¼œ–¿ñÕ<‚ëM;ÿø€úLÅg-ˆ#cvÀ_þUÄX•›ƒ•‚Šï½;$]%2*š=/aô'7‚¡ '!þÑw»ôÊVø‰™[`¿éÑ7FtØ9é-LŸÞŸŒ‹5Vú³Š\Z9“>nì;Ø>ôˆ¸·í ‹5ó KIôìãߌjõ}š8|bÆ%F\Þ[0qØv±±Ïéµë8êxX¨êHG:xëûœöìW—-Ô‹:\Ÿ7Šc›%Êâ†]üÝŒì@v\ŠEM‘ͺƒá$¸·k㢉_x5#ïnÛŒšÎp„ Œ&!J9D&—>Ëx¹¾Ähr¶þÛ!¤”¸²bÉëç¬Ê,ÁéšžµéL¹§«„o¼’•Ù”‚}—ü@b®¬'"1õÛñ$òA„@Êäº6»>£WV,¬Ô ”²*–º|å¼%UuÆTF€OûÀßLŸ¹ø¬nqü6€=ÀNÆ×—–M9WÖ±uàÒ^ÓÃæ/þÓ'ˆ©sýßøÞ»r=‰?ör™”­^@÷wJÒ×8(Ò1C4E(rCëÁŸŒ_¹––†>‹dó|‰Ã¶OºFèô}¼·ç`↤)„bNÁ/§i¡ªËlJÈØ^|}ÏÁÖ¡‹J^ÅQÇKЊŌ‚TäztÐ:É@$€ƒh´8_ÑqÏÆq×KÀG»MK5>mÚŽ:tÅåiBÆbLCgà#c \X`6­àÕRJf-i‹7™Åš.û£€ò%ÑÁ·t¶ºŽ…W..ZPòiý¡?"øÄ/Ά*þü/e£¬I]=‘F¯[«çÓ½mc'¤Õ†!—êÚ “0Î$^½˜’K5?½?Áý]‡ WV,ì»8h»°]ÖPb9ú©ÏîxG]Õ¢†×.§aÙS;÷üU<'ÓÎO*>ë¼à Þ‰ÿç D}lZÈË«†TUÐ .rOg¦!þübÍ„ïÿôztuÕD!ËãÁ ¶~‰#º_T•°:g¢Ý÷q÷ÐÆÄ !0WÑ0Íý'W’ 8ê Ø.K™¡ÄQÇÇ&h÷24¢ZI• ¹¾çâ¨ãáÚª…Œ)бòÍڼ㮙aªÉ©Fà†§ªÐL-Ÿn¥ºÀ—Øø±øèi´Ò•å¼*Ó‘6a.­DˆÀ´LñÂ7b/,˜ )r$ %zCnÞÞâqåÕ šJØ9vÅwªéZ+ªSY»ût‡>Þº5Æ­Í õ†lȲßôh8Iáâ’ØÊk:*EU~ãÕ Y¿ûFŸŠ9 UlÅÍbM%ØîloF×+ ]¾rÁB&5ëßìàÿàƒ}óÜøF­¨!mŠÙñx!Z†Àq×Ã{÷Ç4q2Ø=vil3‰¦Ù¥­Í3•vûÐA5©´˜/_Ê©X›3pÐr‘M+˜+븿ËzŠB<ô%„Ê9û-/çL‡”À\E“óUíñÈÀ¸oAÀ8²C»°háÁžJ$Ù›« ÆŒŽ¼)Q=®Îb¯|†ˆNâû»¬â ¼u{”d;~À )– ¤M!c“ãItí¹øþO£+ kóFÂe˜þLÕ¢Š_úBV^Y±¤¢©÷ÿ6€ÿ+>מO">‹MÀG…à ?pÀâô‹YM( ¡Ùõ™(dpÐÐYRz}ï¤LðNÛói‡ˆ ‘˜04.Ø·ÝÄë]‚ÝŽ^»œš¡ ļݛ,„™±ö¥‹~^)¨Xi˜PJ¶û>¶\E+Ua%ÜBV‰œi„@âk§É™'×Ú U9.÷Êy w¶'p}vÝíF§óbMÇJãì¦õ0d`Ü´¤©?BúÀ~øÁ,]`1Ú·Ýz/Ú\ZEÚâÑÞhÂ0ázI›û¶z>½woBëû®Ø9t©Ó÷!!Ö„˜~¹H“`ˆôØéÆú„¾ýÖ@ÜÙrÈóA;Gl‰·DcMB.Ò}ìAxù|Jþs_ÏceΘn6N=Àÿ¼|.âó’LÇïø `éñÿ Ù/m ùÍ/f±ÒÐ#qGK'ÜݱqA„§Of]#„’%£Áfse†Ñ¶ú.-Y3#)A¬ò«)4“þwíñ8jb‡¨æÙ7.ô%jE « ‡/rÄa±;En‘RB׻Ǽøã›Ùõ$š]²ŽzQb0 °uà ”@wàc8 ÙzKõ0WÖ±yÀÐè‰ÃàÅšŽ­C—%ÆñeJðæz’Obâ„ ºo4 °}䢩 bRÊd‚Ó)¹®ò„cóÀAÆRpiÙB6¥Ì4ß»7¦o¿= ÞˆeÃÏ-˜X¬±\ZøM/Ea‰·ƒ¶‡àh8éÆú{M•‚Šrž';Ó ?~ ±uèÀ2ª …¬‚ùŠ&/¯Ìˆv¼ðCpÿoxûEßÜÏ:>Àúêÿ*X}å¯8‡¨$ ç ¹XÓå^Ó£õ=—zÃà j àú0 y#X®›È¦lpWý4>]ò“Œ´fžG#¼t.%×÷ò"k*](ç,Õtì6]컘+먗¸¡Ÿj•‚Š¥º‘h×^TÝa€¥:wÛ×#CRßð{M——L² Ž;~Òô|v3¾¸háÒ’€Bœ’ψ…†’v<ì·<ÜÛ±iÉ„;QæteÙÂÈðÓûc¤-o¼’•Šà̉³!Ö9¼»mcaÿcMÆvßÇaÛÃù–I›þH»ÇKnE¾÷¶'¸²šb‘Ö¨¬˜½ÖŒà,`©nDÈÏ‚X_Á;uUÂè|\Z6å¥åÒ¦áÙF_ ,Úù·´_ôMý<âóº€ϼ6&ýÓ4D BMåFO.¥ ;ðpkÓ&×—3‹@lzyÙB"áÒ?츴 W.¤ÎH…K Òì|4¶C4»LÚÑu"ölDNBÃI€E‡© ÆÜH;7oâ¨Ãþz‰…:<Ÿ_@‰‹EäUœbÄ&Ìe6ptÈIDAT‚°Û<‘cë3–µªul9teÍ”Æ4jQB¶z¸½i'‡q¨Q†“6T úƒ·ú4íŠ{{ËÆRMÇùEw¶&p=‰\Z‰ ¸!{DcÈJþD×Ðõ$Å:Ä'hFöQ8¿`BQœ³„®0 ÌvC¬6L”¥ E9‘]‹a»B°X'KµëR™ÊØÀ§>üX´ówðù5lþ\oq¼à_Oþu+ˆØ¨PÊ+òOÿB.-ÛòGŒh7²‘—e°îæ¡sRëŸÊÂhžÿ•kiX|OÓL.A2gçttLƒb[+š8lo7 ÏÏ›höX‘8¶ÙÊX'ì…˜³±oóÏR N$ÐJ4M@JÉjÁî L:v6– x¾$sÊäDöD¨äÒ;œœmº "Òuvö=mp©‘Ms?`®¢c±¦!˳jr¼’Ž_z-+÷š.© [©¯Í™8h{¬ïmNõ’Îe¸°Ä`Û‡Œœ¯èMØÞ+“R°:g0(¦å"—V°2Ç¥G±—â­M›ª ;ŒYå7m l:ð!V ¼9 AÈ¥U칉fŸã±¹É|•…QvŽ]øÑÊÓUÂ.¦¹tA\ru ÆadúA¨—t´z~ä5È%ÄBÕ`¼¾Êï9†ôž|.‰²ik †üúK\[µNó3âÿ.ØœæßãJ>·)ÿéøYɦc à? 5ü+`—â2¢&!ÀÄ"VâUáx!ú#Ÿ†“0…Å„*{Þìy 7†óNœc;ÄÝ›Þ4GxåB K5†N¨—ØyvºTˆ³!¸TH[:ªšMBÒ5ÂQÛǽM\\´ÐøØNS"îú/Vu”r*L7š­C!xáöGevZ¬êÛ!Ž»Ì„Û:t{ÛÇAÄ ¢±bçØÅbUÇÈQŽJ'šÇÛnˆõ}—–,”sÚ}o&gû-­žFYG>êD™WÂAˆ :+/ŸOÉþh@£I5e¦Ž{>‚ÐÆ¹¦F8>µøC ˜áÜ‚/]IÉ¥º.cØSéþÌàûø p÷ŸGü¬eÓѧz?P{Ìhw›ºÀrÃÀjÀÀ`¹Ï”rì’sØö°¾ï$Ýw ѯƒª t>æ+:L]Á[·Gô“ÛcÚ=öHSúã€A¤kâY7‚¸~ÕUÂOîŽéþ®Cõ’†0”¸»3œ¼f2¨i¾ª#e*ØØw0 ÐoD’áëûv¢cÀ'ªŽ¹ŠvªQÒíÍ lVÒ™¯èPaë‰Iñ†h{¼{U"í¼Á©ŒIÐ(ë‘‹Š±bb‡X¬éòµËi)ÁÎJß~{@ß{w@Ab þŠ`€£Ž—€ŠÑë(dU±y¨pwqÉį½ž—_{)#+yõ´ç@œîÿ\þu¼WÞOKü,fÓ‚3ƒÕ†þ_  Ê‹5MÎU xí’‡wïqÔñ©QÒà`7šà¬Î`i•3„jAýHu’ñú{.=سA¬ÌéøÂ…4 9–.¤ªÌfŽ'ióÀ¡zQCÊPÐñÍ>ƒNŽ„.jö#ñËiy,Và °PÕ±}ä$M»ø½v‡§¦’EST…½¶\¼|.…Á˜-Æf>®dz1$7Û=& Ð"´åæƒlJÁ¹y®7F9¯âƒMBÚ9vq{ÓŽÜzm\\²pqÑL@X1r0Îz4»>ªzä=(åËçSXn°ÇC(ñ°îþmÿ0}÷…;ó¼èøYßâøÿ‚3‚,Av |ÓÈP²úÐ|U“r£Iˆƒ¶‡ý¦7cË=a( òý]– ‹ùðA(J U!2¦€Þ0Á~ËE6¥Ðµ5K.×uiê]8>váû DÚo±í¸e Ç'‹XîpÇü‚Ó¼‡0äS3Œ83ïYÃq@ѯÅÿËPU‚íIö ”Œù· ÁÆÑc‰Xç¿7dÄÞrÃÀý â»9ç':¦A8¿`âÆú„~r{Œ««V‚ÀŒå·îïØ¸¸dbµaÂóÃÂpÒù÷‚Åœ"¿xÅB&¥HUàQ ;ºÆÿ1XfîçŸíàa1§†ÿÀ1N\ÆÉMÄüíÉkEù´/4¶CxÁÉcÊy ™”ÀýÝHxdúU$ÛV¹‘(ÅrÃÀƾƒý¦‡Ãއf/ Ç‘ôν1 FŽ»>tUP«ïcçÈ,¯äLŠ_Ϋ˜+ëèY©ˆ‘sÉË!e ,7Ø¢;ðóNuòU^]³f²"Ðö¡K£¨Ñg^ÀóÿNÿ–«©Ì3Øoy8îzX¬éB`‘”ªšJŒÖ $“Õ"ë 'Ü›hõü“M\óÆ ª„£ëW¢V0qYµ²Ñ¨ñÞŽ Sè NÆ•D@`óÀÁÅHÎ,nðÅ+ûº~U¾þrFfSŬ:Ó#™úÚâà€ÿ:ºf?ÅÏÐHï£ÄÏ3€§‹سð¸ Æè˜Âl9]È*¨•ØÅ8›±Y%y‘¤—®ª:B ÜÝžÀ?9‘ò… g Û‡'œé ÔJF“0Â.Q×?V;¢ä”¥Äê«ÿî¹N¡+-)J9~@ß{o@÷vlêB2u›ûºƒõHG1Ö˜Ø\h*a8±Tc=À؃/Œ@@’†LdPzÐ:uÂ#öÓIÉb;ü-:¡QÒñêEK~åz—— T‹ªLEÉ©Ïñ}ðbÿ›þM??ñŸ*~ž|¸Ø7‘þ>Ø­èà×ÀúÀ–@„bN‘ìå ¾t%f×ÇÆƒ=‡E —Q1š³MÄ0òô«5ì¹Lâ™zŽÇ‚žå¼®~²A@äCJ¾p=fÞÙš$ôVÏG£Ä’èÝ¡RŽm³<ŸyíF™U…vŽÒ vŽÝDSÏñd‚ t\¶ïœäýÅ‹{ëÈÅ¥%Ž+YôL£O(Mt>kº\›7P/©I]?ן>~¦.xcþ{`ÌþÁ‹¾A>kñó à£EÜ(ümpIðgÁðâëÌè1RFPwM%,T5¹PÕðå«iùÿoïlz㦢0ü\Ûóáx:MÓ¦M«4ii] $XÁŠ+þ?öýˆeW€Ø ›.ˆªB´©šL&d’ù²}/‹÷zÆ3J¤Ò´~%Ë#Ûcä9çž{Ï9ï;Z³wÓíålï¥f{O££³E½æå£±˜{æ ‰¬UZoãJÁØòû£ÙkÆ™›°Ï!¸_Ê Ç–nOåĵɄo/sluRn¬5T+íåÎÊóóÎ~ÊÊyôKë ähRvÏG´¼ÚnÖL<ívÈÕÕš[¿\cm%VÍCmqé4Óõ— ­âß>G)Üþiÿ!Î**ð|Èæû}àS¤fü1ð°ê À§Aáw»ºv+dý Ü^oÐù+c«#ጧÝÔÆp±ÉøXœfìrŒ1luÒ#ÆçìîgÜٌɭãáÖ`2zç·÷RîlÆœ[jðhgLQàžÃ`?ãÊ…ë« žìŽ4éX«Î»•sý¡©Ô+žáœòš€Ë v{—–#wí’ˆPW—#’8ta8ûF é¿EÓ°/y…‹wN•89ì_ ÒÒ×øQ—_cúgžL ÓÁ͵:¹MTïî{ïûCË`¤"™þÐ2Ní„™h¹¥W7Nö¬xV_²\’ÖåN¾âüÁ çp`9—„töÒ#÷ÈrÇÓnêóû øŒžfŽ¥f@Í ²#q3PCÒjÍm®ÕyëvLIܳÐJ,;Mï:ìì †§{H`ógÔæ]á„P9€“‡Eª°¿w[(2øxÕÔýµ“iÈÀÔø“pk½á#kösözÒèëõ-í$4a ÙþaNž;­'ø›&ÍhFyw‘@‰Ã᜛jé•ΗI ’8Àu™0ú ’8$Šàr»F·çVÚÚbJšµÈ¸ùèd®¦§lô9éï#ƒÿø‰*ÄÿÏ`î~rûùïRá8ˆ€ëHÖì}à=Ô‘¸L)CÈ‚´ÕD‚Û'º¬Ó[ÌhléJ_^?g8Ò¾ÙXN"3ÎÄÈ;[‘†X‡µj³½µÞ¤«}WšŠ†0Ô4EùwÕ3D!îÉnJ³nˆ­%wÊã7¢P†^f þ±ÕùQþugþ|ƒ ±ÃÓ~a¯*pz¸¼ŽzÞÞDëç™û.t fœƒ¿ºX5·Îç…µ§õN ´W\cÌTÝ8ôƆÆz‰÷Ï)~Ô3T•4?s€Št~D$®ß¡Ðþ)¯Hþ‹„j pzè"øø •ßDŽàm”Q¸¬"AÔyC[w1…XâzQhfÄqàŽz¹ùúäQsû2ˆKïÊ ¦¿¢ Ë” §ŠÊ¼°È ¶‘CHñßD‘ÂhÊp!µQÊñYïp¦¹§Ð0ý—ßbŽy¬@ŽæzhÑîO”¦ûuÞ=@ùùÞ1ž]áFå^\úí!ð•?VC†¸ê·Ò狨g!FS‰:zÇuf¹…æ…qaxŒý>Eµ}¹ì ÅºÇ¨Ëî1*’Úö×Uó÷3‚Êœ-¤ˆªºƒFØ2ÄsØD í÷Kþs‚Œ¾æ¯‹˜Ö)X¦_¤Ù¨úÐ+ÀÐoG•=+œ9TàåEF;@£ôKÏh[áùñ7 öhÐÜRtIEND®B`‚(À€ @;;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢ $~¢ $~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$~¢/$~¢D$~¢Y$~¢m$~¢€$~¢‘$~¢œ$~¢¬$~¢±$~¢µ$~¢º$~¢¼$~¢¼$~¢º$~¢¶$~¢±$~¢®$~¢Ÿ$~¢“$~¢ƒ$~¢p$~¢\$~¢G$~¢2$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢;$~¢`$~¢…$~¢¨$~¢Å$~¢Û$~¢ë$~¢ö$~¢ü$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ü$~¢÷$~¢í$~¢Þ$~¢É$~¢­$~¢‹$~¢f$~¢A$~¢!$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢-$~¢Z$~¢Œ$~¢¹$~¢Û$~¢ñ$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$£þ$£þ$¤ý$¤ý$£ý$£ý$€¤ý$¤ý$£ý$£ý$~¢ý$~£ý$£ý$£ý$¤ý$€¤ý$¤ý$£ý$¤ý$¤ý$£þ$£þ$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ô$~¢à$~¢¿$~¢”$~¢b$~¢3$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢"$~¢T$~¢$~¢Ä$~¢é$~¢û$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$£þ$¤ý$€¤ý$£ý$}¡ý#{žþ"u—þ oþiˆþdþiˆþdþTmþPgþLbþI_þUnþ^yþNdþKaþOfþSkþþiˆþi‡þh†þ nŽþ!t–þ#yœþ$| ý$£ý$€¤ý$€¤ý$£ý$~£þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ý$~¢í$~¢Ë$~¢˜$~¢]$~¢($~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢,$~¢j$~¢¬$~¢ß$~¢ù$~¢ÿ$~¢ÿ$~¢ÿ$£þ$¤ý$£ý$~¢ý#y›þ pþdþWpþTmþZuÿBVÿ,9ÿ &2ÿ "-ÿ %0ÿEZÿ7Gÿ %ÿ %ÿ $ÿ $ÿ6Gÿ@Sÿ (ÿ $ÿ %ÿ $ÿ+8ÿH^ÿ,:ÿ !,ÿ &1ÿ+8ÿ6FÿSlÿþVnþb~þ nŽþ"w™þ$| ý$£ý$¤ý$£þ$~¢þ$~¢ÿ$~¢ÿ$~¢ü$~¢å$~¢¶$~¢t$~¢4$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&$~¢h$~¢²$~¢ç$~¢þ$~¢ÿ$~¢ÿ$~¢þ$£ý$¤ý#|Ÿý!s”þe‚þa}þþ9Jÿ &2ÿ *ÿ %ÿ '3ÿF[ÿ)5ÿ $ÿ %ÿ %ÿ (ÿ@Sÿ7Gÿ &ÿ &ÿ &ÿ &ÿ9JÿBVÿ *ÿ &ÿ &ÿ %ÿ-;ÿF[ÿ $/ÿ %ÿ %ÿ $ÿ *ÿCXÿ/>ÿ %ÿ )ÿ &1ÿ0?ÿNdÿc€þe‚þ!q‘þ#{žý$£ý$¤ý$~£þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ì$~¢¼$~¢t$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢O$~¢ $~¢á$~¢ý$~¢ÿ$~¢ÿ$£þ$€¤ý$~¢ý#yœþ oþRjþ;Lþ*7ÿ *ÿ2AÿEZÿ "-ÿ %ÿ &ÿ %ÿ #.ÿF[ÿ5Eÿ &ÿ &ÿ %ÿ %0ÿBVÿAUÿ $0ÿ %ÿ %ÿ $/ÿ?Sÿ@Tÿ,:ÿ %ÿ &ÿ )ÿÿ %ÿ &ÿ %ÿ,9ÿ?Rÿ?Rÿ (4ÿ %ÿ %ÿ1@ÿ6Gÿ3Cÿ6Gÿ &ÿ %ÿ2Bÿ6Fÿ,:ÿ;Mÿ 'ÿ %ÿ-;ÿ;Mÿ-;ÿ;Mÿ 'ÿ &ÿ !,ÿ>Pÿ;Mÿ7Hÿ &ÿ &ÿ %ÿ (4ÿG]ÿ2Aÿ %ÿ %ÿ $ÿ $ÿ6FÿOfÿG\þZtþ p‘þ$} ý$¤ý$£ý$~¢ÿ$~¢ÿ$~¢ú$~¢Ó$~¢ƒ$~¢0$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$~¢‘$~¢ß$~¢þ$~¢ÿ$~¢þ$¤ý$£ý#y›þiˆþDXþ+8ÿ (ÿ $ÿ-;ÿEZÿ %0ÿ %ÿ &ÿ %ÿ,:ÿ@Tÿ?Rÿ '3ÿ %ÿ &ÿ6Gÿ0?ÿ-;ÿQÿ '3ÿ )ÿDYÿ1@ÿ %1ÿ?Rÿ*7ÿ )ÿ>Qÿ &1ÿ %ÿ4Dÿ6Gÿ &1ÿ>Qÿ +ÿ %ÿ !+ÿ=OÿPþ\wþ"v˜þ$£ý$¤ý$~¢þ$~¢ÿ$~¢ÿ$~¢ç$~¢ $~¢C$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢>$~¢ $~¢ê$~¢ÿ$~¢ÿ$~¢ý$¤ý#{žýh…þLbþLbÿCXÿ (ÿ %ÿ &ÿ %ÿ (5ÿG]ÿPÿ *ÿ %ÿ0?ÿ9Jÿ/=ÿ:Lÿ 'ÿ &ÿG\þ!q‘þmŒþ l‹þþLbþ?Rÿ2Aÿ '3ÿ?Rÿ #.ÿ (ÿQÿ?RÿH^þFZÿ5Eÿ '4ÿ=Pÿ )ÿ %ÿ %0ÿ?Rÿ=Oÿ3Cÿ %ÿ &ÿ *ÿ=PÿDYÿ*7ÿ %ÿ %ÿ (4ÿ!r’þ%€¤ý$¤ý#yœþAUþ,9ÿ?Rÿ>Qÿ/=ÿ %ÿ %ÿ4Cÿ3Cÿ,9ÿ>Qÿ !,ÿ *ÿ>Pÿ %0ÿ %ÿ/=ÿQÿ %1ÿ &ÿ=PÿH^ÿRjþ mþ$| ý$£ý$£ý$~£ý%€¥ýb~þ)6ÿG\ÿ/=ÿ %ÿ &ÿ %ÿ+8ÿH^ÿ1@ÿ &ÿ &ÿ (ÿ:LÿDYÿ0>ÿ %ÿ $ÿ3Cÿ#yœþ$~¢ý$¤ýg…þ !+ÿ %0ÿEZÿ:Lÿ 'ÿ &ÿ &ÿ ",ÿEZÿ3Cÿ &ÿ &ÿ %ÿ0?ÿ=Oÿ?Rÿ)6ÿ:Kþl‹þ]yþ0>ÿ !+ÿ9Kÿ6Fÿ2Aÿ6Fÿ %ÿ &ÿ %ÿ !+ÿ@Sÿ:Kÿ )6ÿEYþj‰þ$}¡ý$£ý$~¢þ$~¢ÿ$~¢í$~¢—$~¢+$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢b$~¢Ò$~¢ÿ$~¢ÿ$£ý$£ý"v˜þPgþ )5ÿ %ÿ %ÿ (ÿ@TÿCWÿ)6ÿ %ÿ %ÿ )5ÿ:Kÿ (ÿ9JÿSkÿYrþ!r’þ$| ý$¤ý$£ý$~£ý$£ý$£ý#{žý!t•þ!q’þ4DÿCWÿ?Rÿ #-ÿ %ÿ 'ÿ9Jÿ6Fÿ?Rÿ '3ÿ $ÿ)6ÿ=Pÿ*6ÿ?Rÿ #.ÿ %ÿF[þ$}¡ý$~¢ý$€¤ý_zþ *ÿ:Lÿ5Fÿ>Qÿ %1ÿ %ÿ &ÿ4CÿG]ÿ1@ÿ %ÿ &ÿ %ÿ)6ÿH^ÿ/>ÿ %ÿ )5ÿ!s”þ$£ý!t•þ^yþQÿ !,ÿ.;ÿ=Oÿ ",ÿ:Kÿ/=ÿ %ÿ4Dÿ7Hÿ (4ÿ\wþ$~¢ý$~¢ý$€¤ýUnþ0>ÿ;Mÿ (ÿ4Dÿ4Dÿ %ÿ-:ÿ=Pÿ/=ÿÿ !,ÿ=Oÿ?Rÿ #.ÿ %ÿ &ÿ (ÿ=Oÿ &1ÿ+8ÿXrþbþ!t•þ$~¢ý$€¤ý$£ý$£ý$£ý$£ý#zþh†þPgþ9JÿCXÿ3Cÿ=Pÿ &2ÿ *ÿAUÿ-:ÿ (ÿ9Kÿ5Eÿ4Dÿ5Eÿ %ÿ 'ÿ7Hÿ>Qÿ=Oÿ *ÿ %ÿ !+ÿ>PÿAUÿ]yþ$£ý$~¢ý$£ýZtþ>Qÿ &1ÿ %ÿ %1ÿ>Qÿ+9ÿ?Sÿ '4ÿ )ÿ>Pÿ '2ÿ (ÿ8Iÿ8Iÿ;Mÿ,:ÿ %ÿ #.ÿkŠþ$¤ý#zý4Dÿ $ÿ %ÿ '3ÿPÿ3Cÿ (ÿ:Lÿ+8ÿ %ÿ &ÿ &ÿ/>ÿE[ÿ+9ÿ+8ÿSkþ"w™þ$¤ý$~¢þ$~¢ÿ$~¢ï$~¢Ž$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢:$~¢º$~¢ü$~¢ÿ$£ý$~¢ýl‹þ;Lÿ )ÿ %ÿ %ÿ/>ÿEZÿ>Qÿ)6ÿ &ÿ (ÿ=Oÿ '2ÿ )ÿLcþ$} ý$£ý$~¢ý$~¢ý$~¢ý"v˜þj‰þ^yþNfÿ/>ÿ $ÿ $/ÿ=Pÿ *ÿ,:ÿ?Rÿ-:ÿ>Pÿ #-ÿ %ÿ ",ÿ=PÿEZÿ &2ÿ %ÿ %ÿ #.ÿF\ÿ5Eÿ %ÿ &ÿ %ÿ5EÿF[ÿ]wþ$¤ý$~¢ý$~¢ý`|þ2Aÿ #ÿ $ÿ %ÿ8IÿEZÿ-;ÿ )ÿ (ÿ4Dÿ5Eÿ5Eÿ;Lÿ )ÿ0?ÿ6Gÿ %ÿ $/ÿkŠþ$¤ý#|Ÿý9Iÿ $ÿ %ÿ $/ÿCWÿATÿ0>ÿ 'ÿ &ÿ;Mÿ+8ÿ $ÿ )ÿ4CÿDXÿ@Sÿ (ÿ %ÿ 'ÿ4Dÿa}þ#|Ÿý$£ý$~¢ÿ$~¢ÿ$~¢Ë$~¢M$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢q$~¢å$~¢ÿ$~¢þ$£ý"v˜þbþDYÿ &ÿ %ÿ &ÿ %ÿ-;ÿ9Jÿ+8ÿ?Rÿ1@ÿ *ÿ=Oÿ '3ÿ $ÿ $/ÿkŠþ$£ý$~¢ý$~¢ýXrþ.<ÿ3Cÿ6Fÿ)6ÿ?Rÿ+8ÿ.<ÿ8Iÿ &ÿ &ÿ.<ÿF[ÿ:Lÿ &ÿ &ÿ %ÿ0?ÿH^ÿ+9ÿ %ÿ %ÿ*6ÿBWÿ@Sÿ %0ÿ %ÿ #.ÿ>Qÿ?Rÿ lŒþ$£ý$~¢ý$~¢ý oþWqþBUþ9Jÿ1@ÿCXÿH^ÿ %1ÿG[þ1@ÿ &1ÿF[ÿQþ "ÿ %ÿ-:ÿG]ÿ.=ÿ &ÿ &ÿ &ÿ;Lÿ0?ÿ )6ÿ9Jÿ8Iÿ.<ÿ;Mÿ 'ÿ &ÿ &ÿ #ÿ.<ÿþ"v—þ$£ý$~¢þ$~¢ÿ$~¢ï$~¢†$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%$~¢§$~¢ú$~¢ÿ$£ý$}¡ýb~þ3Bÿ/=ÿEZÿ1@ÿ (ÿ %ÿ %ÿ)6ÿ:Kÿ &ÿ %0ÿ;Nÿ:Lÿ@Tÿ &2ÿ %ÿ &ÿTlþ$¤ý$~¢ý$¤ýSkþ #ÿ5Fÿ0?ÿ $ÿ (5ÿ?RÿBWÿ.<ÿ %ÿ &ÿ 'ÿ>QÿBWÿ %1ÿ %ÿ (ÿ;Mÿ6Gÿ?Rÿ (4ÿ (ÿÿÿ0?ÿI_ÿ,9ÿ %ÿ &ÿ )ÿ>Qÿ?Rÿ:Lÿf„þ$¤ý$~¢ýg…þ>Pþ5Dÿ?RÿBVÿ $0ÿ %ÿ &ÿ &ÿ8JÿF[ÿ mþ^yþ0?ÿ,9ÿ9Jÿ &ÿ &ÿ %ÿ !+ÿ=Oÿ@Tÿ4CÿZtþ#{Ÿý$£ý$~¢ÿ$~¢þ$~¢»$~¢5$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢I$~¢Ð$~¢ÿ$~¢þ$£ý"u—þJ`þ #-ÿ $ÿ 'ÿ>QÿCWÿ:Lÿ %0ÿ 'ÿ7Gÿ?Rÿ (ÿ %ÿ )ÿ4DÿG]ÿ.<ÿ &ÿ $ÿ:Kÿ#{Ÿý$~¢ý$£ý pþ1@ÿ;Nÿ)6ÿ %ÿ %ÿ (4ÿG]ÿ3Bÿ8Iþ2Aÿ #.ÿ>Qÿ3Cÿ?Rÿ &1ÿ)6ÿ=Oÿ )ÿ,:ÿ?Rÿ4Dÿ;Mÿ (ÿ 'ÿ7Hÿ?Rÿ=Oÿ *ÿ &1ÿ oþ$£ý$~¢ý$~¢ý$£ý$€¤ý$£ý$£ý$¤ý$£ý$£ý%€¤ý!s“þ;Mÿ=Pÿ7Hÿ7Gÿ &ÿ %ÿ "-ÿCWÿQÿH^ÿ*7ÿ $ÿ *ÿBUþ q‘þ$£ý$~¢þ$~¢ÿ$~¢ß$~¢^$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢p$~¢ê$~¢ÿ$~¢ý$£ý!s”þATÿ %ÿ %ÿ &ÿ &ÿ8Iÿ/>ÿ/>ÿCWÿUnþi‡þBUÿ )ÿ &ÿ &ÿ )ÿ@SÿCWÿ4Cÿ )ÿ '2ÿ oþ$£ý$~¢ý$| þTlÿDYÿ %0ÿ $ÿ #ÿ '3ÿI_ÿUnþ pþQiþ0?ÿ7Gÿ &ÿ.=ÿ?Rÿ?Rÿ.<ÿ %ÿ &ÿ0?ÿJ`ÿ-;ÿ %ÿ %ÿ %1ÿH^ÿ6Fÿ $ÿ,9ÿ"u–þ$£ý$£ý!t•þPgþUnþh…þ pþ nŽþ!t–þ#y›ý$}¡ý!t•þCWÿ $0ÿ #.ÿ?Rÿ "-ÿ $/ÿQÿ:Kÿ (ÿ_zþ$€¤ý$~¢ý$| ý$£ý$€¤ý$~¢ý"wšþZtþ5Dÿ %0ÿ;Mÿfƒþ$} ý$~¢ý$~¢ý$£ý$£ýkŠþ8Hÿ2Bÿ?Rÿ/=ÿ>Qÿ %0ÿ %ÿ &ÿ %ÿ0?ÿfƒþ$~¢ý$£ý$~¢ÿ$~¢ô$~¢ˆ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢•$~¢ø$~¢ÿ$£ý#{žýZuþJ`ÿ=Oÿ !+ÿ %ÿ &ÿ %ÿ3Cÿ2Aÿ.;ÿeƒþ$¤ý#zýQhÿ )ÿ %ÿ &ÿ )ÿPÿ1@ÿ #.ÿ>Qÿ $/ÿþ$€¤ý$~¢ý\vþPgþ oŽþ$}¡ý$€¤ý$¤ý#x›þi‡þ!p‘þ$~¢ý$~¢ý$~¢ý$£ý#y›ýþBVÿ=Pÿ9Jÿ #.ÿ "-ÿ>Qÿ !,ÿ &ÿ &ÿ %ÿ )5ÿJ`ÿ^yþ"xšþ$£ý$~¢ÿ$~¢ý$~¢¬$~¢"$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%$~¢³$~¢þ$~¢þ$£ý"u–þDXþ )ÿ '3ÿF\ÿ@Sÿ-:ÿ (ÿ $ÿ-;ÿSkþ pþ$£ý$~¢ý$£ý!r“þ;Lÿ !+ÿ %ÿ *ÿ=Pÿ #.ÿ 'ÿ.<ÿ@Sÿ[vÿ$}¡ý$~¢ý$£ý!t•þþiˆþ"v˜þ$}¡ý$¤ý$£ý$¤ý$€¤ý$} ýTmÿ)5ÿ %ÿ &ÿ7Hÿ;Mÿ?Rÿ+8ÿ $0ÿ?Rÿ '2ÿ3BÿPÿH]ÿ$} ý$~¢ý$¤ýf„þ.<ÿ?Rÿ+8ÿ1@ÿ9Kÿ 'ÿ/>ÿ?RÿEZÿ,9ÿ %ÿ %ÿ2AÿI`ÿ.<ÿ &ÿ &ÿ9Jÿ/>ÿþ$€¤ý$£ýVoþ )ÿ (4ÿCWþg…þ#|Ÿý$~¢ý$£ý$£ý$~¢ý$~¢ý$£ý!t•þDXþQÿ #.ÿ %ÿ %ÿ+8ÿOfÿ"v˜þ$£ý$~¢ý$~¢ý$~¢ý$£ý$£ý$£ý$£ý#{žýl‹þWpþf„þ\vþ?Rÿ.<ÿ (5ÿ@Tÿ #.ÿ (5ÿ>QÿAUÿ2Bÿ %ÿ 'ÿ6GÿJ`ÿ,:ÿ %ÿ %ÿ4Cÿ`|þ$~¢ý$~¢ý$£ýh†þH^ÿ.=ÿ %ÿ )ÿ;Mÿ=Oÿ=Pÿ $/ÿ*7ÿ=Oÿ !+ÿ0?ÿ?RÿBUÿ*6ÿ %ÿ %ÿ.<ÿEZÿe‚þ$£ý$£ý_{þ %1ÿ $ÿ $/ÿ@Tÿdþ$}¡ý$~¢ý$~¢ý$~¢ý$£ý nŽþDXÿQÿ=PÿG]ÿ pþ$£ý$~¢ý$~¢ý$~¢ý$| ýRjþPÿAUÿ ",ÿ %ÿ %ÿ,9ÿ;Mÿ]xþ$¤ý$~¢ý$~¢ý$~¢ý$£ý#y›þ pþa}þRjÿ1@ÿ #.ÿDYÿ@Sÿ (4ÿ=OÿCXÿKaÿ:Kþ #ÿ0?ÿJ`ÿ5Eÿ (ÿ (ÿ:Lÿ@SÿQÿF[ÿ\wþ$£ý$£ýc€þ0?ÿ/>ÿ>QÿLcþ"u—ý$~¢ý$~¢ý$~¢ý$£ý mŒþH^ÿ=Pÿ+9ÿ5Fÿ0?ÿ %ÿ &ÿ %ÿ/=ÿ:LÿH]ÿa}þ5Fÿ "-ÿ=Pÿ %0ÿ %ÿ &ÿ $ÿ )5ÿa}þ$~¢ý$~£ý$~¢ÿ$~¢ç$~¢^$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Q$~¢ã$~¢ÿ$~£ý$} ýþEZÿ@Tÿ (4ÿ 'ÿ %ÿ %ÿ/>ÿ7Hÿ %ÿ %ÿ !+ÿ2BÿOfÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$£ý!s•þ6Fÿ1@ÿH]ÿ7Hÿ $/ÿ %ÿ1Aÿ3BÿBUþ$~¡ý$~¢ý$~¢ý#x›þPhþ4Cÿ@Sÿ-;ÿ*7ÿ=Pÿ@Tÿ7Hÿ %ÿ $ÿ,9ÿEZÿQhÿWpþ #.ÿ>Pÿ/=ÿ:Kÿ9Jÿ6Gÿ9Jÿ *ÿ2Aÿ?Qÿ?Rÿ/=ÿWpþ$€¤ý$~¢ý$~¢ý"t–þg„þg…þRiþQiþTmþLbÿBUÿ '3ÿ (5ÿ@SÿF[ÿ6FÿH]þ !,ÿ>Pÿ7Gÿ?Rÿ/=ÿ8Jÿa}þ$£ý$£ýc€þF[ÿ:LÿDYÿ!s”þ$£ý$~¢ý$~¢ý$~¢ý mŒþMcÿ4Cÿ ",ÿ $ÿ5Eÿ0>ÿ %ÿ %ÿ *ÿ9JÿEZÿVpþ#|ŸýYsþ/=ÿ=Oÿ )ÿ &ÿ %ÿ %ÿ,9ÿJaÿ^zþ#zý$£ý$~¢ÿ$~¢ï$~¢j$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢[$~¢è$~¢ÿ$£ý#{žýOeþ !+ÿ #-ÿDXÿBVÿ:Kÿ)6ÿ 'ÿ '3ÿPÿ !,ÿ %ÿ &2ÿF[ÿ@Tÿ*7ÿ )ÿÿ@Sÿ "-ÿ %ÿ &ÿ %ÿKaÿ$~¢ý$~¢ý$~£ý"u—þ"v˜þ$£ý$~¢ý$~¢ý]yþ=Oÿ 'ÿ %0ÿ7GÿH^ÿ7Hÿ $/ÿ`|þ$¤ý$~¢ý$~£ýVpþCWÿCWÿ &1ÿ %ÿ-;ÿ9Jÿ.<ÿJ`ÿTmþk‰þ!t•þ$} ý$~¡ýYtÿQÿ4Dÿ>Qÿ2Aÿ;Mÿ4Dÿ-;ÿVpÿ oþ pþ!q‘þ"v˜þ#{Ÿý$~¢ý$£ý$¤ý$€¤ý$£ý$£ý$£ý$¤ý$£ý$£ý$£ý$¤ýWqþ>Pÿ5Eÿ?Rÿ %0ÿ $ÿ !,ÿ\wþ$£ý$¤ý_zþUnþ#zý$£ý$~¢ý$£ý#zœýVoþ-:ÿ )5ÿQÿ*7ÿ2AÿQiÿ[vþNeþPgþ]xþ pþ!r’þ!r’þ"w™þ#|Ÿý$~¢ý$£ý$€¤ýYsþ '3ÿ %ÿ3Bÿ7Hÿ (4ÿ9Kÿþ$~£ý$~¢ý"v˜þ#yœþ$£ý$~¢ý$£ý"v˜þMdþ !+ÿ $ÿ $/ÿ=Pÿ )ÿ (ÿ*7ÿBVÿBUÿ,:ÿ 'ÿ '3ÿh†þ$¤ý$~¢ý$~¢ý#{žý`|þLbÿEZÿ5Eÿ $/ÿ '3ÿ=Oÿ )ÿ &ÿ &ÿ %ÿQÿ4Dÿ $0ÿOfþ$¤ý$~¢ý$¤ýQhþ:LÿWpþ$}¡ý$~¢ý$£ý!q’þ0>ÿ #ÿ %1ÿ=Pÿ *ÿ %0ÿBVÿ#yœý$~¢ý$~£ý#x›þMdÿ6FÿRjþ!q‘þ#zžý$~£ý$¤ý$£ý$£ý$£ý#zý"t•þZtþ '2ÿ #.ÿ?Rÿ=Pÿ=Pÿ2Aÿ=Oÿ4Cÿ1@ÿ@Sÿ>Qÿ=Oÿ (5ÿ9JÿQÿ0?ÿ;Mÿ=Oÿ@Sÿ/>ÿ #ÿ "-ÿþ$~£ý$~¢ý$~¢ý$~¢ýe‚þI_ÿ5Eÿ #.ÿ &ÿ %ÿ2Aÿ5Eÿ %ÿ &ÿ %ÿ %ÿ2AÿVpÿ"w™þ$£ý$~¢ÿ$~¢õ$~¢q$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢L$~¢å$~¢ÿ$£ý"wšþATþ ",ÿ=OÿF[ÿ=Oÿ0?ÿ $/ÿQÿdþ$£ý$~¢ý$~£ýG\þ8Jÿ-:ÿa|þ$¤ý$~¢ý$£ýg…þ5Eÿ2Aÿ9Jÿ %ÿ $ÿ/>ÿ!p‘þ$£ý$~¢ý$~¢ý"u—þ#x›þ$£ý$£ý$£ý$¤ý$~£ý#{žþ pþSkþLcÿ=Pÿ4Dÿ@TÿEZÿ:Lÿ *ÿ3BÿH^ÿDYÿ0>ÿ+9ÿAUÿAUÿ=Pÿ,:ÿ8HÿCXÿCXÿ/=ÿ &2ÿAUÿJ`ÿ;Mÿ !,ÿ4Dÿ=Pÿ7Gÿ=PÿATÿ4Cÿ %ÿ )5ÿBVÿ:Lÿ=Pÿ=Oÿ:Kÿ 'ÿF[þ$~¢ý$~¢ý$~¢ý$~¢ý$£ý`|þ *6ÿ *ÿ>Qÿ #-ÿ !+ÿ0>ÿG]ÿ>Qÿ,:ÿ (ÿ4Dÿ0>ÿ (ÿRjþ$~¢ý$~¢ý$~¢ý$~¢ýb~þ9Kÿ@Sÿ *ÿ %ÿ &ÿ 'ÿ;Lÿ+8ÿ $ÿ 'ÿ &2ÿ5FÿEZÿ8Iÿ=Oÿ!r’þ$£ý$~¢ÿ$~¢ñ$~¢f$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢=$~¢Þ$~¢ÿ$£ý#x›þBVþ &ÿ %ÿ,9ÿ=Oÿ*7ÿ9Jÿþ#y›ý$£ý$£ý!r“þ1@ÿ $ÿ (5ÿPÿ=OÿCWÿF[ÿ.<ÿ (4ÿ@Tÿ:Kÿ>Qÿ@TÿEZÿ4Dÿ1?ÿG]ÿG]ÿ@Sÿ-;ÿ@TÿG]ÿF\ÿ1?ÿ4DÿG]ÿG\ÿQÿ:LÿAUÿ*7ÿ $ÿ %ÿ4Dÿ2BÿH]þ#|Ÿý$~¢ý$~¢ý$£ýb~þ &2ÿ (4ÿ;Nÿ 'ÿ &ÿ &ÿ "-ÿ>Qÿ &2ÿ+8ÿ:Kÿ>Pÿ?Sÿ=Pÿ 'ÿ $ÿ8Iÿ!s”þ$£ý$~¢ÿ$~¢í$~¢W$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢-$~¢Ñ$~¢ÿ$~¢ý#{žýG[þ &ÿ &ÿ &ÿ !+ÿ>Qÿ %0ÿ (ÿ6Gÿb~þ$£ý$~¢ý$¤ýdþ %1ÿ ",ÿ>Pÿ !,ÿ %ÿ ",ÿh†þ$¤ý$~¢ý#{žþMdÿF[ÿ6Fÿ %1ÿAUþ#zý$~¢ý$~£ý"x›þUnþ5Eÿ9Jÿ@SÿF[ÿF[ÿ#yœþ$£ý$£ý$| ý"v˜þj‰þTmþLcÿEZÿ?Rÿ %0ÿ1@ÿ@Sÿ3BÿCWÿG\ÿEZÿ5Eÿ@SÿEZÿAUÿH^ÿH^ÿI_ÿ@SÿJaÿLbÿLcÿAUÿF[ÿKbÿKaÿDYÿ@SÿG\ÿ>QÿE[ÿCXÿEYÿ,:ÿ7HÿBWÿ:LÿATÿG\ÿ8Iÿ !,ÿ9Jÿ4Dÿ (4ÿ>QÿNfÿOfþ^yþ"wšþ%€¥ý_{þ.<ÿ=Oÿ-;ÿ9KÿF[ÿ?Rÿ &2ÿ 'ÿ7Hÿ.=ÿ $ÿ $ÿ3BÿUmþ"xšý$£ý$~¢ý$£ý!r’þ-;ÿ #ÿ.=ÿ7Hÿ %ÿ %ÿ 'ÿ-;ÿF[ÿ>Qÿ@Sÿ6Fÿ *ÿ8Iÿ/>ÿ %ÿ &ÿ %ÿQÿ-:ÿ/=ÿ:Kÿ &ÿ $ÿ1@ÿ5Eÿ %1ÿ2AÿQiþ#zœþ$£ý$~¢ý$~¢ý$~£ý#yœþLbþ *ÿ3Cÿ2Bÿ ",ÿ.<ÿ:LÿF[ÿ;Lÿ $0ÿ1@ÿ^yþ5Eÿ>Pÿ #.ÿ &ÿ &ÿ %ÿ )ÿPgþ#{žý$£ý$~¢ÿ$~¢Ô$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢£$~¢ÿ$~¢þ$}¡ýWpþPÿF\ÿ:Kÿ9JÿH^ÿ@SÿI_ÿKbÿF[ÿÿ/=ÿ1@ÿ8Iÿ@RþEYþJ`þMdþPhþRjþSkþQhþOfþMcþG\þATþ=Pÿ:Kÿ5Eÿ1@ÿ7Hÿ?RÿDYÿBUÿF[ÿKbÿG\ÿEZÿF[ÿ>Pÿ.<ÿ@Sÿ (4ÿ*8ÿCWÿ4Cÿ;LÿI_ÿEZÿ0?ÿ8Iÿ4Cÿ $ÿ ",ÿ>Qÿ %0ÿ &2ÿ9KÿF[ÿQÿ:Lÿ2BÿBVÿ)6ÿ %ÿ %ÿ 'ÿRiþ$~¢ý$~¢ý$£ý nŽþFZÿ7Hÿ/>ÿKaÿ#|Ÿý$~¢ý$¤ýi‡þ )5ÿ=Pÿ #-ÿ $ÿ #.ÿQÿJaÿLcÿF\ÿ9Kÿ.<ÿ-;ÿ1?ÿ:KÿH]þXqþe‚þ oþ"v˜þ#zý$}¡ý$~¢ý$¤ý$¤ý$¤ý$€¤ý$€¤ý$¤ý$¤ý$¤ý$£ý$}¡ý#{žý"w™ý!q’þh†þ]wþPgþBVÿ6Gÿ6Fÿ=PÿEZÿDXÿCWÿI_ÿ=OÿDYÿF[ÿAUÿ@SÿF[ÿ.<ÿ0?ÿ:Lÿ &ÿ &1ÿ>Qÿ '3ÿ-:ÿDYÿAUÿ=Oÿ;Lÿ?Sÿ/=ÿg…þ$£ý$~¢ý$~£ý"x›ýOfþ`|þ#{Ÿý$£ý$~¢ý l‹þBVÿPþ$}¡ý$~¢ý$£ýi‡þ@TÿG\ÿ6Fÿ+9ÿ0?ÿPÿG\ÿEZÿF[ÿJaÿKaÿ@Tÿ5Eÿ.<ÿ.<ÿ:KÿOfþc€þ!s”þ#{Ÿý$£ý$€¤ý$¤ý$£ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý$€¤ý$£ý$| ý"u—þh†þWpþEYþ7Gÿ7HÿCWÿKbÿG\ÿ>QÿDXÿ+8ÿ=Oÿ5Fÿ)6ÿCXÿ8Iÿ8IÿG]ÿCWÿ9Jÿ=Oÿ:Lÿ (ÿ *ÿCWÿdþ$£ý$~¢ý$~¢ý$~¢ý\wþ?RÿG]ÿOfþ!t•þ$¤ý$~¢ý"u—þ#zœý$£ý$€¤ý$£ý$~¢ý$~¢ý$~¢ý$£ý$£ý$~¢ý!s”ýXrþ1@ÿ1Aÿ=Pÿ (ÿ %ÿ #-ÿ]xþ$£ý$~¢þ$~¢ú$~¢x$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢4$~¢Þ$~¢ÿ$£ý!s”þ1@ÿ $ÿ &ÿ &ÿ !+ÿ>Qÿ (4ÿ %ÿ %ÿ %ÿ '3ÿCWÿ5Eÿ:Lÿ>Qÿ=PÿTmÿ#x›þ$£ý$~¢ý$£ýUmþ %ÿG[þ$£ý$~¢ý$€¤ýUnþ (4ÿBVÿ5Eÿ9KÿDXÿEZÿ;MÿVoþ\wþ4Cÿ.;ÿBVÿ/>ÿ+9ÿCWÿ1@ÿ:LÿH^ÿAUÿF[ÿ=Oÿ/=ÿ,9ÿ=OÿXqþ oŽþ#{žý$¤ý$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý$¤ý$} ý!s”þ`|þJ`þ;Mÿ8Iÿ@TÿKbÿI_ÿEZÿF[ÿDXÿQÿ !+ÿ &ÿ &ÿ %ÿ (ÿG\ÿ"wšþ$£ý$~¢ÿ$~¢Ó$~¢'$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Š$~¢þ$~¢þ$}¡ýQhþ6FÿG]ÿ@Sÿ:Lÿ2Bÿ)6ÿ (5ÿ@Sÿ $/ÿ $ÿ %ÿ %ÿ2Aÿ6Fÿ %ÿ &ÿ $ÿ3Bÿ6FÿUnþ$£ý$~¢ý$£ý!s”þ!p‘þ$£ý$~¢ý$~¢ýMcþ3Cÿ?Rÿ &2ÿ %0ÿ>Qÿ*7ÿ *ÿ;Mÿ/=ÿ $0ÿAUÿ2Aÿ8JÿI_ÿBWÿ@Sÿ2Aÿ+9ÿ?Rÿb~þ#y›þ$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$€¤ý#|ŸýjˆþMdþ7Hÿ;NÿJ`ÿKbÿF[ÿF[ÿCWÿ@SÿG]ÿ9Jÿ>Pÿ>Qÿ4Cÿeƒþ$£ý$~¢ý$£ýi‡þ*6ÿ #ÿ)6ÿ;Lÿ ",ÿ &2ÿ3CÿPhÿ!pþ$£ý$£ý!r“þ3Cÿ (ÿ $ÿ !+ÿ>Qÿ $.ÿ &ÿ &ÿ &ÿ5Eÿ3Bÿ $ÿ &ÿ !+ÿ (4ÿ7HÿH^ÿWqþ#{žý$~¢ý$~¢ÿ$~¢§$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢R$~¢ñ$~¢ÿ$¤ý`{þ "-ÿ &ÿ;Lÿ5Fÿ+8ÿ4Dÿ;Mÿ>QÿF[ÿ;Nÿ,:ÿ &1ÿ *ÿ '3ÿ>Pÿ )ÿ %ÿ $ÿ+8ÿ9Jÿ '3ÿh†þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{ŸýH^ÿ>QÿEYÿ=Pÿ@SÿH^ÿ@Sÿ@TÿH]ÿ@SÿEYÿDYÿG]ÿMdÿE[ÿ0?ÿ (4ÿDWþi‡þ$| ý$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$~¢ý pþQiþQÿ+8ÿ %1ÿ>Pÿ *ÿ-:ÿiˆþ$~£ý$~¢ý$~¢ýeþ9Jÿ:LÿF\ÿ>Qÿÿ0?ÿ9Kÿ>Qÿ@SÿG\ÿ-;ÿ #.ÿUmþ$~£ý$~¢þ$~¢ú$~¢p$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢"$~¢Ð$~¢ÿ$£ý pþ.;ÿ %ÿ %ÿ '4ÿ>Qÿ !+ÿ %ÿ &ÿ #-ÿ7GÿTmÿVpÿWqÿOfÿCWÿF[ÿ5Eÿ+8ÿ &1ÿ)6ÿ>Qÿ )ÿ4Dÿ!t–þ$£ý$~¢ý$~¢ý$~¢ý$~£ý"w™þ-;ÿ1@ÿ4Cÿ &ÿ/>ÿ:Lÿ "-ÿ9Kÿ8Iÿ/>ÿG]ÿBUÿCWÿ5Eÿ*7ÿBUþi‡þ$}¡ý$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý!q’þQhþ7Gÿ?RÿLcÿG\ÿEZÿDYÿ;MÿG\ÿ?Qÿ;MÿLcÿe‚þ#| ý$£ý$£ý!t•þNeÿ?Rÿ $/ÿ (ÿ0?ÿ5Fÿ $ÿVnþ$¤ý$¤ýh†þ "-ÿ $ÿ6Fÿ3Cÿ #.ÿ*7ÿ2Bÿ>QÿF\ÿ=Oÿ6Fÿ-:ÿ $/ÿ4Dÿ7Hÿ &ÿ %ÿ &2ÿg…þ$¤ý$~¢ÿ$~¢ä$~¢8$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢˜$~¢ÿ$~¢ý#{žý@Sþ $ÿ &ÿ &ÿ &ÿ7Hÿ2Bÿ (ÿ6FÿXrþ pþ#{žý$| ý$}¡ý#|Ÿþ!s”þa}þG]ÿ8Jÿ=Oÿ?RÿG]ÿ=Pÿ8IÿZtþ$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þ5Dÿ:Lÿ6Fÿ)5ÿPÿ;Lÿ5FÿDXÿ-;ÿ (ÿ %ÿ %ÿ #-ÿ>Qÿ %0ÿ %ÿ &ÿ $ÿ5Eÿ"v—þ$£ý$~¢ÿ$~¢µ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢T$~¢ó$~¢þ$£ýj‰þ5Eÿ #.ÿ )ÿ &ÿ %ÿ $/ÿFZÿYsþ#x›þ$€¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$~£ýkŠþ6Fÿ (ÿ ",ÿ=Oÿ5Fÿ-;ÿ3Bÿb~þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý]xþG]ÿ>Pÿ=OÿF\ÿ7HÿBWÿBVÿCWÿEZÿ0?ÿ.;ÿVoþ#y›þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$} ýd€þ>Qÿ9JÿH^ÿH]ÿ8IÿDYÿ-;ÿ1@ÿPÿEZÿCWÿ=Oÿ:Kÿ3Cÿ9Jÿl‹þ$€¤ý$~£ý$~¢ý$£ý$£ý$~¢ý$£ý$£ý$~¢ý$~¢ý$¤ý!t•þ:Kÿ $ÿ4Dÿ1@ÿ $ÿ $ÿ>Qÿ"u–þ$£ý$£ý#{ŸýWpþ.<ÿ>Qÿ #.ÿ,:ÿAUÿ2AÿG\ÿJaÿ8Iÿ &1ÿASþ oŽþ$£ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý"v˜þPhþ9KÿG\ÿLbÿBUÿG\ÿ?RÿG]ÿ?Rÿ@SÿXrþ!t•þ$£ý$£ý$} ý oŽþa~þa}þ"t–þ$£ý$~¢ý$£ýmŒþ %0ÿ.<ÿ7Hÿ %ÿ &ÿ %ÿ5Eÿ3Cÿ %ÿ &ÿ $ÿ $/ÿþeƒþ %0ÿ )ÿ $/ÿ*7ÿ=OÿLcÿ nþ$£ý$~¢ÿ$~¢á$~¢0$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢†$~¢ÿ$~¢þ#{žý?Rþ $ÿ0?ÿ>Qÿ '4ÿ*7ÿAUÿ!s”þ$£ý$~¢ý$£ý#zý oþeƒþa~þfƒþ!s”þ$~¢ý$£ý$~¢ý$¤ý pþ/<ÿ/=ÿ8Iÿ (ÿ (ÿ5FÿPgþ#zý#yœþXqþ-;ÿ3BÿF[ÿ;MÿDYÿCXÿJaÿI`ÿ3Cÿ+8ÿXqþ#{žý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$~¢ýfƒþ?Rÿ=PÿBVÿG\ÿ/=ÿ8Iÿ4Dÿ %1ÿ?Rÿ8Iÿh†þ$£ý$~¢ý$£ý$~£ý$~¢ý$~£ý$~¢ý$~¢ý$}¡ýH]þ %ÿ8Iÿ-;ÿ $ÿ %ÿ *ÿ>Pÿ &1ÿ &ÿ )ÿ.<ÿZuþ#|Ÿý$}¡ýVpþ=Oÿ=PÿEZÿAUÿ+8ÿ9Jÿ"v˜þ$£ý$~¢ÿ$~¢¥$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢9$~¢è$~¢ÿ$¤ýþ *ÿ %ÿ )ÿ;Mÿ.=ÿ $/ÿc€þ$£ý$~¢ý$~£ýh†þ9Iÿ,:ÿ.=ÿ5EÿF[ÿAUÿSlþ"v—þ$£ý$~¢ý$£ýbþAUÿF[ÿPÿ %0ÿEYþ"v—þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý#|ŸýWqþ:LÿH^ÿCXÿCWÿBVÿCWÿDYÿ=PÿJ`ÿ_zþ!t•þ$| ý$£ý$~¢ý#zþf„þBVÿQÿ=Oÿ;LÿEZÿPÿF[ÿ7Gÿ9JÿF\ÿCWÿ3Bÿ*6ÿ]wþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýkŠþ;MÿBVÿKbÿCWÿF[ÿ,:ÿ7Hÿ3Bÿ #ÿ6Fÿ,9ÿ !ÿ+9ÿ8Iÿ %ÿ %ÿ6Fÿ0>ÿ #ÿ $/ÿKaþ"v˜þ$£ý$~£ý$~¢ý$~¢ý$~£ý nŽþKaþmŒþ$£ý$¤ýh†þ %0ÿ &ÿ )ÿ !+ÿ*7ÿF[ÿ lŒþ$£ý$~¢ÿ$~¢Ù$~¢$$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢e$~¢ú$~¢þ#|ŸýATþ #.ÿAUÿ7Hÿ,9ÿ/>ÿ@Sÿ"w™þ$£ý$~¢ýYsþ;Mÿ=Pÿ?RÿEZÿDXÿ=OÿQÿBVÿ;MÿDXÿDYÿ=Oÿ?RÿPhÿa}þ#y›ý$¤ý$~¢ý$~¢ý$~¢ý$~¡ý!pþTmÿ?RÿQÿ !+ÿ )6ÿ!t•þ$£ý$£ýKaþ:Kÿ=Oÿ9KÿF[ÿ>Pÿ>QÿEYÿCWÿ1@ÿ-:ÿg…þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!t•þ@Rÿ@TÿKbÿ@SÿDYÿ &2ÿ2Aÿ4Cÿ %ÿ6Fÿ1Aÿ )5ÿPhþ"w™þ$£ý$~£ý$~¢ý$~£ý$£ý$~¢ý$}¡ý^yþ,:ÿ *ÿ )ÿ 'ÿ3BÿKaÿ"v˜ý$£ý$£ýXqþ0?ÿ=Oÿ !+ÿ &ÿ %ÿ1?ÿ"u—þ$£ý$~¢ÿ$~¢Œ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ë$~¢ÿ$¤ýa~þ *ÿ %ÿ %ÿ %ÿ 'ÿ9Jÿ4Dÿ^zþ$€¤ý$¤ýdþ6Fÿ7Hÿ &ÿ %ÿ $ÿ)5ÿ=Oÿ )ÿ 'ÿ !+ÿQÿ3CÿF[ÿ=PÿPhÿ#yœý$€¤ý$~¢ý$~¢ý$£ý$~¡ý nþ:Kÿ,9ÿ nþ$£ý$£ýTlþ &ÿ %ÿ7Gÿ3Bÿ $ÿ (4ÿmŒþ$£ý$¤ýi‡þ %0ÿ $ÿ %ÿ %ÿ (ÿAUÿ"xšþ$~£ý$~¢ÿ$~¢„$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Á$~¢ÿ$£ýf„þ;MÿH^ÿ>Qÿ:Lÿ;Mÿ:Lÿ9Kÿ=Pÿj‰þ$£ý$~£ý"w™þEYÿ=PÿF\ÿ8Hÿ4Dÿ1@ÿ8Iÿ@Tÿ)6ÿ $/ÿ)5ÿLcÿ"t–þ$£ý$¤ýUnþ "-ÿ:LÿCXÿBVÿDYÿ@SÿQÿ ",ÿ9Jÿþ$}¡ý$~¢ý$~¢ý!t•þ\wþLcÿ:Lÿ7GÿUnþ$}¡ý$£ý"w™þ>Qÿ0>ÿDYÿ0>ÿ+8ÿ*7ÿMdþ$}¡ý$~¢ý$}¡ýOfþ/=ÿ2Bÿ3CÿQÿ $/ÿ #ÿ $/ÿf„þ$£ý$~¢ý#zþOfÿ=PÿEZÿ5Fÿ2BÿKbÿCWÿ $/ÿNeþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¤$~¢$~¢$~¢$~¢$~¢$~¢T$~¢ò$~¢þ$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢˜$~¢$~¢$~¢$~¢$~¢q$~¢÷$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýcþ:KÿKaÿG]ÿF[ÿ1@ÿ;Mÿ6Gÿf„þ$£ý$¤ýa}þ5EÿPÿ oþ$£ý$£ý nŽþLbÿ>Qÿ8Iÿ9Jÿ8IÿBUÿ nŽþ$£ý$£ý"wšþDXÿ3CÿCXÿ?Sÿ,:ÿ;Lÿ"w™þ$~£þ$~¢þ$~¢q$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢«$~¢ÿ$¤ýh†þ #.ÿ %ÿ (ÿ7Hÿ8Iÿ (ÿ &ÿ &ÿ $ÿ8Iÿ#{žý$~¢ý$£ý oŽþ.;ÿ*7ÿQÿ $/ÿ $ÿ (ÿ]wþ$¤ý$~¢ÿ$~¢È$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$~¢ë$~¢ÿ$~¢ýFZþ $ÿ &ÿ &ÿ *ÿ;Mÿ3Cÿ &ÿ %ÿ %ÿ "-ÿfƒþ$¤ý$~¢ý$£ýj‰þ9Jþ?Rÿ1@ÿ+8ÿ2AÿATÿUnÿl‹þ$~¢ý$~¢ý$£ýe‚þ1@ÿÿDYÿAUÿH^ÿ3Cÿ2Aÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¼$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢b$~¢ü$~¢þ$~¢ý$~¢ý$~¢ÿ$~¢w$~¢$~¢$~¢$~¢$~¢$~¢$~¢Z$~¢ú$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{ŸýG[þ;MÿLcÿ4Dÿ5Eÿ=Pÿ;Mÿiˆþ$£ý$£ý!r“þ1@ÿ 'ÿ %0ÿ>Pÿ !,ÿRjþ$£ý$£ý!r’þ@Sþ &2ÿ %ÿ0?ÿ;Lÿ )ÿQhþ$~¢ý$£ý#{žýQiÿ '3ÿ %ÿ &ÿ $ÿ:Kÿ#{žý$~¢þ$~¢ø$~¢S$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ˆ$~¢ÿ$£ý!r“þ+8ÿ %ÿ &ÿ 'ÿ 'ÿ %0ÿ@Sÿ/=ÿ "-ÿ %1ÿ '3ÿH]ÿ$| ý$~£ý$~¢ý$£ý"xšýj‰þa~þ]yþ`}þ nŽþ#{žý$£ý$~¢ý$£ý pþ6Fÿ4CÿH]ÿ;MÿDYÿDYÿ9Jÿ '2ÿe‚þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢*$~¢æ$~¢ÿ$~¢ý$~¢þ$~¢ï$~¢7$~¢$~¢$~¢$~¢$~¢$~¢$~¢)$~¢æ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!s”þ=OÿF\ÿH^ÿDXÿ5Eÿ !,ÿLcÿ"u—þ$£ý$~¢ý_zþ=Oÿ@SÿBVÿ,9ÿ4Dÿ!r“þ$¤ý$}¡ý`|þ+7ÿ $/ÿ?Rÿ %0ÿ #ÿ/<ÿ"wšþ$|Ÿýg…þ3Cÿ %ÿ &ÿ &ÿ %ÿ "-ÿg„þ$¤ý$~¢ÿ$~¢©$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ó$~¢ÿ$£ýg…þ>Pÿ8Iÿ9Jÿ;MÿQÿ4Dÿ?Rÿ?Rÿ,9ÿ)5ÿI_þkŠþVpÿ9Jÿ !,ÿ !+ÿ *ÿ )ÿ (ÿ 'ÿI^þ$~¢ý$~¢ÿ$~¢ç$~¢/$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢W$~¢ù$~¢þ#y›þ>Pÿ;LÿDXÿ-:ÿ)6ÿ (5ÿ &1ÿ $/ÿ.<ÿATÿ &1ÿ 'ÿ &ÿ (ÿEZþ"v˜ý$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$€¤ý#{ŸýfƒþDYÿCWÿ,9ÿ &1ÿEZÿF[ÿLcÿ2Aÿ8Iÿ"xšþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢é$~¢,$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢˜$~¢ÿ$~¢ý$~¢ÿ$~¢¨$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢¹$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýOfþ8IÿDXÿBVÿ9JÿG\ÿATÿ oþ$£ý$£ýbþ@Sÿ !+ÿ $ÿ=Oÿ^yþ/=ÿ '3ÿ+8ÿÿ &ÿ7Gÿ8Iÿ>PÿEZÿ@SÿPÿ1Aÿ %ÿ;Lÿ#{Ÿý$~¢þ$~¢ò$~¢@$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢d$~¢ý$~£þ"wšþ2Aÿ $ÿ &ÿ %ÿ )ÿ9Jÿ6Fÿ (ÿ &ÿ )ÿ "-ÿ.<ÿEZÿ9Jÿ:Lÿ>Qÿ=Oÿ>QÿBVÿ '3ÿ )ÿ +ÿ=Oÿ %1ÿ &ÿ1@ÿF[ÿ>Qÿ>Qÿ9Jÿ6FÿMdÿ8Jÿ0>ÿ!t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$~¢ý#|Ÿþ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢z$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢×$~¢ÿ$~¢â$~¢$$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢h$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý!pþ^zÿYtÿ\xÿ mþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýH]þ@Sÿ@SÿF[ÿ>PÿATÿ8Iÿ!q’þ$£ý$£ý\vþ@TÿF[ÿQÿ1Aÿ 'ÿ %ÿ %1ÿmŒþ$£ý$~¢ÿ$~¢†$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢«$~¢ÿ$£ýi‡þ@Sÿ (4ÿ !+ÿ $/ÿ '3ÿ0>ÿF[ÿ=Pÿ:Kÿ=Pÿ>QÿPÿ=Oÿ8IÿPÿÿ !+ÿ;Mÿ5EÿAUÿAUÿAUÿ0?ÿ6Fÿ#x›þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý#x›þbþYsÿVpÿUoÿWrÿ oþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ç$~¢*$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢‚$~¢ÿ$~¢’$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢5$~¢ï$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýi‡þUoÿVpÿVpÿVpÿUoÿd‚þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýNdþ?RÿJaÿ2Bÿ?Sÿ2AÿF[ÿ!s”þ$£ý$£ý"v˜ýa}þKaþ,9ÿ>Qÿ #.ÿ !+ÿ &1ÿ7HÿEZÿ9JÿPÿ>Pÿ;Mÿ8IÿBVÿBVÿ-;ÿ (5ÿ &1ÿ #.ÿ )ÿ;Mÿ#{Ÿý$~¢þ$~¢ñ$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Z$~¢û$£þ"v˜þ8Iÿ '3ÿ-;ÿBVÿ0>ÿ (ÿ &ÿ %ÿ "-ÿ=Oÿ0?ÿ &ÿ &ÿ &ÿ (ÿ9Kÿ2Bÿ )ÿ &2ÿ3CÿG]ÿCXÿ4Cÿ '3ÿ;Mÿ,9ÿ "-ÿ@SÿBWÿ6FÿI_ÿCXÿ $0ÿ]xþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|Ÿýc€þUoÿVpÿVpÿVpÿVpÿZuÿ"s•þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢É$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢S$~¢ù$~¢b$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢!$~¢à$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýe‚þUoÿVpÿVpÿVpÿUoÿ`}ÿ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý pþ;MÿJ`ÿH^ÿDXÿ ",ÿ7GÿJ`ÿ!r“þ$}¡ý!pþEYÿ "-ÿ8Iÿ0?ÿ %ÿ %ÿ !+ÿ=Oÿ,:ÿ %ÿ (ÿ !+ÿ $/ÿ-;ÿEZÿ9Kÿ5Eÿ9Jÿ;Mÿ=Pÿ=Pÿ@TÿH^ÿ"t•þ$£ý$~¢ÿ$~¢|$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢™$~¢ÿ$¤ýd€þ *ÿ %ÿ %ÿ '4ÿ?Rÿ.<ÿ &ÿ &ÿ %ÿ $0ÿ?Rÿ-;ÿ %ÿ &ÿ !+ÿ/>ÿG\ÿ?Rÿ=Pÿ5Eÿ1@ÿ>Qÿ *ÿ #ÿ/=ÿBVÿ>Pÿ@Tÿ8Jÿ6GÿMdÿ5Eÿ7Gÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýiˆþVpÿVpÿVpÿVpÿVpÿVpÿUoÿbþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢+$~¢Ù$~¢8$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Î$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýe‚þUoÿVpÿVpÿVpÿUoÿ`}ÿ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ýOfþ=Oÿ?RÿF[ÿ=PÿATÿ '2ÿ0?ÿTmþ:Kÿ;Mÿ@SÿF[ÿ-;ÿ !+ÿ 'ÿ5Eÿ6Gÿ 'ÿ &ÿ &ÿ %ÿ *ÿ:Lÿ5Eÿ 'ÿ %ÿ &ÿ 'ÿ (ÿ)6ÿBVÿ5FÿZtþ$¤ý$~¢ÿ$~¢¹$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ï$~¢ÿ$£ýLbþ %ÿ &ÿ &ÿ %ÿ &2ÿ?Rÿ0>ÿ &ÿ %ÿ %ÿ*7ÿCWÿ4Dÿ8Iÿ>Qÿ;Nÿ9KÿBVÿ $/ÿ %ÿ &ÿ8Iÿ1Aÿ,:ÿ?RÿG]ÿ*7ÿ*7ÿG\ÿG\ÿF\ÿ '3ÿþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"t–þYtÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿ^zÿ#{Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢u$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢·$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýe‚þUoÿVpÿVpÿVpÿUoÿ`}ÿ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nŽþ5EÿG\ÿCXÿ4DÿH^ÿ5Eÿ-:ÿ;Mÿ 'ÿ )ÿ=PÿPÿÿ %ÿ?Rÿ$}¡ý$~¢ÿ$~¢å$~¢)$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢;$~¢ñ$~¢þ#{Ÿý:Lÿ $ÿ &ÿ %ÿ %ÿ %ÿ '2ÿAUÿ4Dÿ0>ÿ9Jÿ=Pÿ@SÿG]ÿ6Fÿ $/ÿ (ÿ 'ÿ7Hÿ4Dÿ &ÿ )ÿ5EÿI_ÿQÿ !+ÿ 'ÿ )5ÿDYÿPÿ=Oÿ6Gÿ-:ÿ8IÿQÿ=Pÿ@Sÿ4Dÿ %ÿ %ÿ3Cÿ8Hÿ 'ÿ *ÿ '3ÿ1@ÿEZÿF\ÿ?Sÿ9Jÿ2Aÿ*7ÿ $/ÿ1@ÿ?Rÿ '2ÿ $ÿ %ÿ %ÿ *ÿdþ$¤ý$~¢ÿ$~¢’$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢¥$~¢ÿ$£ýh†þDXÿG\ÿEZÿ>Qÿ6Gÿ0?ÿ )5ÿ ",ÿ %0ÿ=Pÿ0>ÿ &ÿ &ÿ &ÿ4Cÿ:Kÿ !+ÿ '3ÿ6FÿCXÿG\ÿ+8ÿ &ÿ*6ÿ=Pÿ4DÿBWÿ@Sÿ-;ÿJ`ÿ@Sÿ*7ÿ oþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#yœþ]yÿVoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿYtÿ"w™þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Æ$~¢$~¢$~¢$~¢$~¢$~¢ $~¢À$~¢t$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢e$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýeƒþUoÿVpÿVpÿVpÿUoÿ`}ÿ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žýATÿAUÿ>QÿF\ÿ7Gÿ=Pÿ !+ÿ-:ÿG]ÿ@Sÿ4Dÿ-;ÿ?Rÿ #.ÿ %ÿ &ÿ %ÿ.;ÿ>Pÿ %1ÿ %0ÿ-:ÿ4Dÿÿ &ÿ &ÿ &1ÿCWÿCWÿ>Pÿ2Aÿ %1ÿ:Kÿ0>ÿ &ÿ+8ÿH^ÿPÿ?SÿTmÿ$}¡ý$~¢ÿ$~¢æ$~¢)$~¢$~¢$~¢$~¢$~¢$~¢$~¢3$~¢í$~¢þ#{žý6Fÿ #ÿ %ÿ )ÿ5Eÿ>Pÿ &2ÿ %ÿ &ÿ &ÿ $ÿ &1ÿAUÿ5Eÿ9Jÿ>Qÿ8IÿAUÿ0?ÿ %ÿ $ÿ &1ÿ@Sÿ9Jÿ>Pÿ;Mÿ6Gÿ )5ÿF[ÿ>QÿAUÿ $/ÿ_zþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þYtÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿYtÿ"w™þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢r$~¢$~¢$~¢$~¢$~¢$~¢B$~¢÷$~¢Ì$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢V$~¢$~¢$~¢$~¢$~¢$~¢3$~¢î$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿUoÿ`}þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!q’þ:KÿKbÿ:Lÿ6Gÿ@Tÿ?RÿCXÿ )5ÿ #ÿ+8ÿ=Pÿ.<ÿ:Lÿ>Qÿ8IÿBWÿ.<ÿ %ÿ %ÿ %ÿ )ÿ8Hÿ:Kÿ !+ÿ %ÿ %ÿ %ÿ %ÿ )ÿ3CÿCWÿ>Pÿ"u—þ$£þ$~¢ù$~¢Q$~¢$~¢$~¢$~¢$~¢$~¢$~¢[$~¢ü$£þ!r’þ )5ÿ %ÿ &ÿ &ÿ 'ÿ.=ÿ?Rÿ*7ÿ 'ÿ #.ÿ.<ÿ9JÿAUÿG]ÿ:Lÿ "-ÿ &ÿ '3ÿ?Rÿ &2ÿ *ÿ1AÿF\ÿAUÿ ",ÿ #.ÿCWÿ@Sÿ@TÿI`ÿ9Jÿ-;ÿ"u–þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýc€þUoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿYtÿ"wšþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ö$~¢G$~¢$~¢$~¢$~¢$~¢$~¢l$~¢ÿ$~¢ê$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢($~¢”$~¢$~¢$~¢$~¢$~¢$~¢ $~¢ß$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿUoÿ`}þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýG\þDYÿI_ÿF[ÿ (5ÿ0>ÿH^ÿ;Mÿ*7ÿ=Oÿ*7ÿ $ÿ &ÿ )5ÿEZÿAUÿ>Qÿ6Fÿ*7ÿ #.ÿ8Jÿ8Jÿ )ÿ %ÿ &ÿ &ÿ %ÿ !+ÿ7Hÿ=Oÿ &2ÿ ",ÿh†þ$¤ý$~¢ÿ$~¢~$~¢$~¢$~¢$~¢$~¢$~¢$~¢‡$~¢ÿ$¤ýf„þ !+ÿ %ÿ %ÿ %ÿ &ÿ )ÿ3CÿG\ÿ?Rÿ>Qÿ9Jÿ.<ÿ #-ÿ)6ÿ?Rÿ (4ÿ %ÿ %ÿ1@ÿBVÿ>Qÿ8Iÿ+8ÿ>Qÿ '3ÿ0?ÿH^ÿ2Aÿ7HÿMdÿ.<ÿDXþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oþWqÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿYtÿ"wšþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢â$~¢$$~¢$~¢$~¢$~¢$~¢$~¢™$~¢ÿ$~¢û$~¢W$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢M$~¢Á$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ì$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿUoÿ`}þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$€¤ý\wþ9JÿATÿF[ÿ5Fÿ8Hÿ3Bÿ/=ÿDXÿEYÿ &2ÿ %ÿ 'ÿ7Hÿ6Gÿ )ÿ &1ÿ1@ÿ>PÿF[ÿG\ÿ0?ÿ $/ÿ (ÿ %ÿ %ÿ &2ÿ=Pÿ6Gÿ !+ÿ %ÿ &ÿXrþ$€¤ý$~¢ÿ$~¢©$~¢$~¢$~¢$~¢$~¢$~¢$~¢¯$~¢ÿ$£ýdþ5Eÿ #.ÿ $0ÿ.;ÿ7Hÿ=Pÿ=Oÿ6GÿATÿ8Iÿ (ÿ %ÿ &ÿ %ÿ+8ÿ?Rÿ (5ÿ.<ÿ>PÿDYÿPÿG\ÿ '3ÿ )ÿ>Qÿ9Jÿ>Qÿ4Dÿ4CÿQÿÿ &ÿ %ÿ &ÿ $ÿH]þ$£ý$~¢ÿ$~¢Ì$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ð$~¢ÿ$~¢ýWqþF\ÿEZÿDYÿ9Jÿ/=ÿ &2ÿ )ÿ %ÿ "-ÿ;Mÿ7Gÿ )ÿ %ÿ %ÿ "-ÿ>PÿI_ÿ=Oÿ )5ÿ #.ÿ=Pÿ,9ÿ '4ÿ>QÿG\ÿ (4ÿ+8ÿG\ÿ?Rÿ:Kÿ )6ÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýiˆþVpÿVpÿVpÿVpÿVpÿVoÿ^zÿj‰þVpÿVpÿVpÿVpÿVpÿZuÿ#xšþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢š$~¢$~¢$~¢$~¢$~¢$~¢#$~¢á$~¢ÿ$~¢ÿ$~¢µ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ª$~¢ï$~¢/$~¢$~¢$~¢$~¢$~¢$~¢›$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿUoÿ`}þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|ŸýBVÿF\ÿBVÿ-;ÿF\ÿ;Mÿ6Fÿ8Jÿ 'ÿ #.ÿ;MÿJaÿ;Mÿ &1ÿ &ÿ )ÿ9Jÿ8Hÿ )ÿ %ÿ &ÿ !+ÿ,9ÿEYÿEZÿBVÿ:Lÿ3Bÿ*7ÿ #.ÿ &ÿ9Jÿ#|Ÿý$~¢ÿ$~¢æ$~¢($~¢$~¢$~¢$~¢$~¢)$~¢ç$~¢ÿ#|ŸýI^ÿ-;ÿ.<ÿ@Sÿ5Eÿ )ÿ %ÿ &ÿ &ÿ %ÿ *ÿ8Iÿ9Jÿ (4ÿ4Dÿ?Rÿ7Hÿ8Iÿ:Lÿ (ÿ $ÿ+9ÿEZÿ@Sÿ-:ÿ3BÿQÿ8JÿPÿQÿ0>ÿ #.ÿ &ÿ &2ÿ>Pÿ4Dÿ )ÿ %ÿ &ÿ %ÿ %ÿ 'ÿ,:ÿDXÿCXÿ!q‘þ$£ý$~¢þ$~¢d$~¢$~¢$~¢$~¢$~¢a$~¢ý$£ý nŽþ &1ÿ %ÿ &ÿ &ÿ 'ÿ.<ÿ?Rÿ/>ÿ &1ÿ3Bÿ>Qÿ;Mÿ.;ÿ5Eÿ;Mÿ ",ÿ %ÿ %ÿ '3ÿF[ÿDYÿ.<ÿ #.ÿ=Oÿ4Cÿ>QÿAUÿ8IÿF[ÿF\ÿ &1ÿa}þ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!p‘þWrÿVpÿVpÿVpÿVpÿVpÿYtÿ"t–þ$¤ý!oþVpÿVpÿVpÿVpÿVpÿZuÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢à$~¢!$~¢$~¢$~¢$~¢$~¢$~¢$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢{$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢m$~¢þ$~¢ÿ$~¢|$~¢$~¢$~¢$~¢$~¢$~¢H$~¢÷$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg…þUoÿVpÿVpÿVpÿUoÿ`}þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!s”þ6GÿDYÿDYÿAUÿCWÿ,9ÿ )ÿ;MÿJaÿ2Aÿ (ÿ &ÿ4Cÿ;Mÿ #-ÿ)6ÿ8Iÿ>Qÿ:LÿCWÿ1@ÿ &ÿ %ÿ &ÿ &ÿ %ÿ *ÿ4Cÿ?Rÿ.<ÿ ",ÿd€þ$¤ý$~¢ÿ$~¢„$~¢$~¢$~¢$~¢$~¢~$~¢ÿ$¤ýe‚þ *ÿ %ÿ &ÿ %ÿ &ÿ #-ÿ7HÿI^ÿG]ÿ:Kÿ '2ÿ (ÿ %ÿ 'ÿ3CÿQÿ:Kÿ@Tÿ &2ÿ %ÿ5FÿJ`ÿ-:ÿ+8ÿH]ÿCWÿPÿ (4ÿ &ÿ.<ÿ=Oÿ3Cÿ>Qÿ?Rÿ0?ÿ7GÿG]ÿBWÿ3Bÿ2Aÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýj‰þVpÿVpÿVpÿVpÿVpÿVoÿ\xÿ#y›þ$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿZuÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢—$~¢$~¢$~¢$~¢$~¢$~¢&$~¢ä$~¢ÿ$~¢ý$~¢ý$~¢þ$~¢õ$~¢X$~¢$~¢$~¢$~¢$~¢$~¢M$~¢ð$~¢þ$~¢ÿ$~¢²$~¢$~¢$~¢$~¢$~¢$~¢$~¢Þ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg…þUoÿVpÿVpÿVpÿUoÿ`|þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýMcþBWÿH]ÿPÿ &1ÿ (ÿ (4ÿ5Eÿ=Pÿÿ *ÿ 'ÿ4Dÿ:Lÿ*7ÿ=Pÿ8Iÿ>Qÿ*7ÿ.<ÿH^ÿ3CÿQÿ@Tÿ-;ÿ %ÿ %ÿ '3ÿEZÿH^ÿ7Hÿ #.ÿ &ÿ %ÿ (ÿ1@ÿ?Rÿ-;ÿ (ÿ *ÿ)6ÿ5Eÿ=Pÿ=Oÿ3CÿG\ÿ$}¡ý$~¢ÿ$~¢Ü$~¢$~¢$~¢$~¢$~¢Ô$~¢ÿ$~¢ýCVþ $ÿ %ÿ !,ÿ4Cÿ?Rÿ0>ÿ )ÿ %ÿ 'ÿ (4ÿ8Jÿ?Rÿ?Rÿÿ &ÿ*7ÿDXÿ?Rÿ0?ÿDXÿF[ÿF[ÿ $/ÿZtþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!q’þWrÿVpÿVpÿVpÿVpÿVpÿYsÿ"t•þ$£ý$~¢ý$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿ[vÿ#y›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ý$~¢$~¢$~¢$~¢$~¢$~¢$~¢¡$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢þ$~¢ì$~¢1$~¢$~¢$~¢$~¢$~¢$~¢˜$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_|ÿ$| þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nŽþ8IÿLcÿ:LÿPÿ0>ÿ !+ÿ (ÿ4DÿF[ÿAUþATþCWÿ;MÿQÿ>Qÿ "-ÿdþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýcþUoÿVpÿVpÿVpÿVpÿVpÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¼$~¢ $~¢$~¢$~¢$~¢$~¢$~¢È$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢H$~¢$~¢$~¢$~¢$~¢$~¢|$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!u–þPÿH^ÿEYÿ*6ÿ &ÿ %ÿ &ÿ &ÿ %ÿ $/ÿ6Gÿ>Qÿ/=ÿ3Bÿ"w™þ$~£þ$~¢ð$~¢6$~¢$~¢$~¢*$~¢è$~¢ÿ#{žý5Eÿ $ÿ &ÿ %ÿ %ÿ !+ÿ0?ÿEZÿG]ÿ@Tÿ $/ÿ $ÿ %ÿ 'ÿH\þ"w™þ$~¢ý$~¢ý#xšþI^þ #-ÿQÿ-;ÿ>Qÿ=PÿAUÿI_ÿ?Sÿ %1ÿlŠþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý_|ÿUoÿVpÿVpÿVpÿVpÿ\wÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢“$~¢$~¢$~¢$~¢$~¢$~¢)$~¢æ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢b$~¢$~¢$~¢$~¢$~¢$~¢`$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#yœþ>PÿG\ÿH^ÿ?Rÿ $/ÿ>QÿF\ÿ &1ÿ $ÿ #.ÿCXÿG]ÿ1@ÿ (ÿ+8ÿEZþRjþWqþ5Eÿ0?ÿ>Qÿ:Lÿ+8ÿ )ÿ !+ÿ2Aÿ?Rÿ4Dÿ "-ÿ $ÿ+8ÿ"u–þ$£þ$~¢ö$~¢E$~¢$~¢$~¢1$~¢í$~¢þ#zœþ;Lÿ 'ÿ 'ÿ %0ÿ4Cÿ>Qÿ:Kÿ*6ÿ %0ÿ8Iÿ=Oÿ (4ÿ $ÿ9Jÿ#yœþ$£ý$~¢ý$~¢ý$£ý#yœþ;Lÿ5EÿKaÿ0?ÿ $ÿ9JÿDYÿ+8ÿJ`ÿ>Pÿ )6ÿ!r’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿVpÿ mþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢f$~¢$~¢$~¢$~¢$~¢$~¢M$~¢ø$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢~$~¢$~¢$~¢$~¢$~¢$~¢F$~¢ö$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý@Sÿ@TÿCXÿAUÿ %0ÿ=OÿBVÿ6Fÿ "-ÿ9Jÿ7Gÿ (5ÿ;MÿLbÿ oþ$£ý$¤ý$~¢ýfƒþ-:ÿ *ÿ-;ÿ=PÿATÿCWÿ=Pÿ %0ÿ %ÿ %ÿ %ÿ (4ÿ!q‘þ$£þ$~¢ú$~¢N$~¢$~¢$~¢8$~¢ñ$~¢þ#x›þKbÿ>QÿQÿ3Cÿ\wþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýf„þ;Mÿ/>ÿ>Qÿ0>ÿ@SÿATÿ=OÿKbÿ8Iÿ,9ÿ"u–þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý"w™þ]yÿVoÿUoÿWqÿf„þ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oýVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ò$~¢<$~¢$~¢$~¢$~¢$~¢$~¢y$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢š$~¢$~¢$~¢$~¢$~¢$~¢/$~¢ë$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¡ýDXþBWÿEZÿ:LÿDXÿ7Hÿ !,ÿ8JÿEZÿ;Lÿ )ÿ $ÿ *6ÿ pþ$€¤ý$~¢ý$~¢ý$~¢ý%€¤ý]xþ *ÿ &1ÿQÿ9Jÿ?Rÿ7Hÿ)6ÿ )ÿ %ÿ %0ÿ nŽþ$£þ$~¢û$~¢W$~¢$~¢$~¢B$~¢õ$~¢þ"xšþJ`ÿ=Oÿ>Qÿ@Tÿ,:ÿ (ÿ %ÿ &ÿ &ÿ %ÿ 'ÿ4CÿI_ÿ mþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýg„þ #.ÿ %ÿ5EÿI_ÿ+8ÿ1@ÿF\ÿ@Tÿ1Aÿ0?ÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#x›þ l‹þh‡þ!pþ$| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nŽþVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Û$~¢$~¢$~¢$~¢$~¢$~¢$~¢¥$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢µ$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ü$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýKaþDXÿAUÿ+8ÿI_ÿ2Bÿ &ÿ4DÿDYÿ=Pÿ %1ÿ $ÿ?Rÿ$| ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"v—þATÿ>Qÿ0>ÿ )ÿ &ÿ #.ÿ1?ÿ=Oÿ=Pÿ1@ÿ+9ÿ mþ$£ý$~¢þ$~¢b$~¢$~¢$~¢J$~¢ø$£þ"v˜ý2Aÿ &ÿ (ÿ*7ÿQÿBVÿ2Aÿ %0ÿCWÿ?Rÿ9JÿMdÿ2Bÿ4Cÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nþVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý#y›þ nþ lŒþ"u–þ$~¡ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ž$~¢$~¢$~¢$~¢$~¢$~¢+$~¢è$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ß$~¢$~¢$~¢$~¢$~¢$~¢$~¢±$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýh†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýNeþ=Pÿ=PÿF[ÿ ",ÿ0?ÿKbÿ/>ÿ $ÿ (ÿ;MÿH^ÿLbÿ#y›þ$~£ý$~¢ý$~¢ý$~¢ý$£ý!r“þ>Qÿ '2ÿ &ÿ %ÿ &ÿ %ÿ *ÿ-;ÿ;NÿPÿF\ÿ,9ÿ !,ÿCWÿ>Pÿ6GÿMdÿ1@ÿ5Dÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿ[vÿ#yœþ$£ý"u—þ]yÿVpÿVoÿYsÿ lŒþ$~¢ý$~¢ý$~¢þ$~¢ý$~¢b$~¢$~¢$~¢$~¢$~¢$~¢Q$~¢ù$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢í$~¢3$~¢$~¢$~¢$~¢$~¢$~¢•$~¢ÿ$~¢ý$~¢ý$~¢ý#{žý#yœý$} ý$~¢ý$~¢ý$~¢ýh†þUoÿVpÿVpÿVpÿUoÿ_{ÿ$|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýPgþAUÿG\ÿDYÿ5Eÿ=Pÿ6Gÿ>Qÿ*7ÿ7Gÿ:Lÿ '3ÿ:Lÿf„þ$~¢ý$£ý$£ý$€¤ý#zþDXþ/>ÿ?Rÿ7Hÿ %1ÿ !+ÿ/=ÿ=Pÿ;Mÿ+8ÿ (ÿ ",ÿjˆþ$¤ý$~¢ÿ$~¢l$~¢$~¢$~¢K$~¢ù$£þ!t•þ,:ÿ $ÿ &ÿ $/ÿ5Eÿ?Rÿ4Dÿ #-ÿ !+ÿ2Aÿ?Rÿ3Cÿ ",ÿ (5ÿ=Oÿ7Hÿ.<ÿ:KÿBVÿ,:ÿ:Lÿ4Dÿ*7ÿ?Rÿ=Oÿ7GÿQÿ (ÿ %ÿ !+ÿ6FÿF[ÿDYÿATÿ)6ÿ 'ÿ %ÿ %ÿ #.ÿj‰þ$¤ý$~¢ÿ$~¢l$~¢$~¢$~¢J$~¢ø$~¢þ#xšýG\ÿ3Cÿ6Fÿ?Sÿ5Eÿ $/ÿ &ÿ &ÿ &ÿ %ÿ $.ÿ9KÿDYÿDYÿ.<ÿ &ÿ $ÿ $ÿ/>ÿJ`ÿ>Qÿ )ÿ %ÿ6GÿI_ÿ &2ÿ2AÿF[ÿCWÿ-;ÿ3Bÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿ[vÿ#zœþ nþVpÿVpÿVpÿVpÿVpÿVpÿ!q‘ý$£ý$~¢ÿ$~¢Ø$~¢$~¢$~¢$~¢$~¢$~¢$~¢¨$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢e$~¢$~¢$~¢$~¢$~¢$~¢]$~¢ý$~¢ý mþWqÿUoÿVpÿUoÿ]yÿ#x›ý$£ýiˆýUoÿVpÿVpÿVpÿUoÿ_{ÿ#|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýOfþBVÿG]ÿ6FÿDYÿ;Mÿ #.ÿ8Iÿ>Qÿ?Rÿ)6ÿ &ÿ (4ÿ=Pÿ8IÿAUÿBUÿ '2ÿ $ÿ %ÿ *ÿ/=ÿ>Pÿ9Kÿ4Dÿ>Qÿ7Hÿ '3ÿ 'ÿ %ÿ #.ÿl‹þ$£ý$~¢ÿ$~¢k$~¢$~¢$~¢C$~¢õ$~£þ"wšþKbÿDYÿDYÿ@Sÿ+8ÿ )ÿ %ÿ &ÿ &ÿ &ÿ &2ÿQÿ8Iÿ=Pÿ?RÿBUÿLcÿ4Dÿ2Aÿ#yœý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿ[wÿ"t–þ]xÿVoÿVpÿVpÿVpÿVpÿWrÿ"s•þ$£ý$~¢ÿ$~¢µ$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ï$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢D$~¢ö$| þ`|ÿUoÿVpÿVpÿVpÿVoÿg…þ$~¢ýiˆýUoÿVpÿVpÿVpÿUoÿ_{ÿ#|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýLbþ>PÿBVÿF[ÿ (5ÿ8IÿDXÿ7Hÿ )ÿ*7ÿ?Rÿ8Iÿ>Qÿ,:ÿ &ÿ *ÿ4Cÿ>Qÿ-:ÿ-;ÿ=Pÿ:Kÿ (4ÿ 'ÿ %ÿ ",ÿ1@ÿ>Qÿ9Kÿ)5ÿ &1ÿmŒþ$£ý$~¢þ$~¢b$~¢$~¢$~¢9$~¢ñ$~¢þ#x›þ=Oÿ ",ÿ !,ÿ.<ÿÿ !,ÿ *ÿ2Aÿ?Rÿ/=ÿ (ÿ )ÿ1@ÿ?Rÿ5Eÿ>Qÿ0?ÿ &ÿ "-ÿ=OÿG]ÿ.<ÿ 'ÿ?Rÿ?Rÿ0>ÿMdÿ9Jÿ/=ÿ"w™þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿ[vÿdÿVpÿVpÿVpÿVpÿVpÿUoÿ`|ÿ#{Ÿþ$~¢ý$~¢ÿ$~¢‹$~¢$~¢$~¢$~¢$~¢$~¢/$~¢ê$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢œ$~¢$~¢$~¢$~¢$~¢$~¢.$~¢ê#|Ÿÿ^zÿUoÿVpÿVpÿVpÿVpÿYtÿ"u—þiˆýUoÿVpÿVpÿVpÿUoÿ_{ÿ#|Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýH]þAUÿDYÿEZÿ %0ÿ7HÿH^ÿ/>ÿ %ÿ !,ÿ>QÿI_ÿ5Eÿ &ÿ &ÿ %ÿ 'ÿ6FÿI_ÿH^ÿ1?ÿ &ÿ %ÿ &ÿ &ÿ &ÿ %ÿ *ÿ/>ÿBVÿDYÿ!r“þ$£þ$~¢û$~¢W$~¢$~¢$~¢1$~¢í$~¢þ"xšþ0?ÿ $ÿ &ÿ %ÿ (ÿ)5ÿ9JÿBUÿBVÿ>Qÿ $/ÿ %ÿ &ÿ &ÿ %ÿ3BÿI_ÿBWÿ &2ÿ %ÿ *ÿQÿ0?ÿ=Oÿ5Eÿ (4ÿ=Pÿ4Dÿ )ÿ &2ÿ9Kÿ=Oÿ-;ÿ2Bÿ?Rÿ0>ÿ )ÿ %ÿ %ÿ %ÿ *ÿ+8ÿ8Iÿ@SÿCWÿ"t–þ$£þ$~¢ú$~¢N$~¢$~¢$~¢*$~¢é$~¢ÿ#{žý5Eÿ $ÿ &ÿ &ÿ %ÿ ",ÿ6GÿATÿ:Kÿ?Rÿ5Eÿ %0ÿ &ÿ 'ÿ0?ÿ?Rÿ*7ÿ/>ÿ?Rÿ0?ÿ8Iÿ7Gÿ ",ÿ8IÿF[ÿ2Bÿ,9ÿG\ÿQÿ;Nÿ/=ÿ ",ÿ+8ÿ!u–þ$£þ$~¢÷$~¢F$~¢$~¢$~¢$~¢Þ$~¢ÿ#|Ÿý:Kÿ #ÿ %ÿ (ÿ.<ÿ?Rÿ6Fÿ "-ÿ &ÿ $/ÿ4Dÿ>Qÿ5Fÿ7Hÿ=Oÿ %0ÿ %ÿ %ÿ (4ÿF[ÿF[ÿ %1ÿ $ÿ-;ÿH^ÿ7Hÿ0?ÿG\ÿDYÿ?Sÿ $/ÿi‡þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿYtÿ"u—þ$£ý$~¢ý$~¢ÿ$~¢Ö$~¢$~¢$~¢$~¢$~¢$~¢$~¢¬$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢à$~¢!$~¢$~¢$~¢$~¢$~¢$~¢®$~¢ÿ$~¢ýiˆþVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿ^zÿ#{Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý"xšþ:KÿDYÿEZÿBVÿ8Iÿ;Lÿ0?ÿ>Qÿ6Gÿ>Pÿ $/ÿ 'ÿ,:ÿ?Rÿ@Sÿ@Sÿ &2ÿ %ÿ &ÿ &ÿ $ÿ !,ÿ;MÿH^ÿG\ÿ;Mÿ &2ÿ 'ÿ %ÿ $ÿ/=ÿ"w™þ$~£þ$~¢ð$~¢7$~¢$~¢$~¢$~¢Õ$~¢ÿ$~¢ýPhþ,9ÿ*7ÿ;Mÿ;Mÿ (4ÿ &ÿ &ÿ &ÿ %ÿ %ÿ*7ÿF[ÿG\ÿ9Jÿ #.ÿ %ÿ 'ÿ3CÿQÿ,:ÿ:LÿF[ÿ0?ÿEZÿG\ÿ %0ÿ`|þ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mŒþVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿh†þ$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢²$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ò$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢î$~¢5$~¢$~¢$~¢$~¢$~¢$~¢“$~¢ÿ$~¢ý#yœþ]xÿVoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿ^zÿ#{Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þ7HÿCWÿDXÿ9Jÿ )ÿAUÿEYÿ &2ÿ &ÿ1@ÿ?Rÿ:Lÿ=Oÿ)6ÿ (ÿ.=ÿ@Sÿ-:ÿ 'ÿ "-ÿ0?ÿ=Pÿ;Mÿ.=ÿ4Dÿ?Rÿ0?ÿ *ÿ %ÿ $ÿ5Eÿ#zý$~¢ÿ$~¢ê$~¢,$~¢$~¢$~¢ $~¢Ä$~¢ÿ$~¢ýZuþG]ÿF\ÿEZÿ1@ÿ #-ÿ &ÿ %ÿ %ÿ &ÿ*7ÿ?Rÿ1@ÿ $0ÿ5Eÿ?Rÿ2Aÿ4CÿPÿ4Dÿ?Rÿ@Tÿ '3ÿ 'ÿ/>ÿF[ÿEZÿ &2ÿ $ÿ &ÿ %ÿ (4ÿBUÿ=Pÿ?Rÿ8Iÿ )5ÿ (ÿ %ÿ &ÿ &2ÿ9Kÿ>Pÿ-:ÿ &ÿ;Lÿ$| ý$~¢ÿ$~¢Ý$~¢$~¢$~¢$~¢$~¢²$~¢ÿ$£ý`|þ1@ÿ %0ÿ,9ÿ8Iÿ?Qÿ9Kÿ,9ÿ "-ÿ1@ÿ>Qÿ+8ÿ &ÿ %ÿ &ÿ &2ÿCWÿJ`ÿ3Bÿ (ÿ %ÿ0?ÿ>Qÿ=Pÿ5EÿQÿ9KÿQÿ $0ÿ ",ÿ@SÿEYÿ !,ÿ6GÿDYÿCWÿ-;ÿ:Kÿ#| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý k‹þVoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿ_{ÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢þ$~¢í$~¢3$~¢$~¢$~¢$~¢$~¢$~¢…$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ƒ$~¢$~¢$~¢$~¢$~¢$~¢B$~¢õ$~¢þ$~¢ý$£ý!r“þXrÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿUoÿ^zÿ#{Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýSkþ;MÿI_ÿ>PÿDXÿ=Oÿ (ÿ*7ÿG\ÿBVÿ ",ÿ %ÿ &ÿ2Aÿ@Sÿ9Jÿ>Qÿ2Bÿ #-ÿ (ÿ/>ÿ@Sÿ.<ÿ 'ÿ %ÿ %ÿ 'ÿ $/ÿ-;ÿ;MÿEZÿ`|þ$£ý$~¢ÿ$~¢»$~¢$~¢$~¢$~¢$~¢€$~¢ÿ$¤ýeþ *ÿ &ÿ &ÿ &ÿ &ÿ+8ÿ?Rÿ4Dÿ2Aÿ=PÿPÿ?Rÿ;Lÿ>Qÿ>QÿLbÿ9Jÿ.;ÿ"v˜þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ýi‡þUoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿWqÿ!p‘þ$£ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ó$~¢$~¢$~¢$~¢$~¢$~¢$~¢°$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ÿ$~¢$~¢$~¢$~¢$~¢$~¢,$~¢é$~¢ÿ$~¢ý$~¢ý$}¡ýd‚þUoÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿ]yÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýEYþ=Pÿ>QÿF[ÿ)6ÿ;Mÿ;Mÿ>Qÿ-;ÿ;Mÿ1@ÿ &ÿ %0ÿ8IÿDXÿF[ÿ+8ÿ %ÿ &ÿ &ÿ %ÿ '2ÿÿ;Mÿ>Qÿ9Jÿ.<ÿ $/ÿYsþ$€¤ý$~¢ÿ$~¢¢$~¢$~¢$~¢$~¢$~¢c$~¢ý$£ý nþ %0ÿ %ÿ %ÿ !+ÿ5Fÿ>Qÿ*6ÿ &ÿ %ÿ *ÿ*7ÿ;MÿF[ÿG\ÿ+8ÿ &ÿ %ÿ *ÿ;Lÿ5Eÿ7Hÿ=Oÿ:Kÿ7Hÿ )ÿ;MÿDYÿ*7ÿH^ÿBVÿ &2ÿk‰þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýd‚þUoÿVpÿVpÿVpÿVpÿVpÿVpÿUoÿc€þ$| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢®$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ô$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¹$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ù$~¢ÿ$~¢ý$~¢ý$~£ý"v˜þZuÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿ\wÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#x›þ=OÿG]ÿG]ÿCWÿ %1ÿQÿ2Bÿ "-ÿ-;ÿ?Rÿ)5ÿ %ÿ %ÿ 'ÿ $/ÿ5EÿG]ÿH]ÿBVÿ+9ÿ !,ÿ &ÿ %ÿ )ÿc€þ$€¤ý$~¢ÿ$~¢…$~¢$~¢$~¢$~¢$~¢E$~¢ö$~£þ"w˜þ8Hÿ #.ÿ)6ÿ=Oÿ6Gÿ ",ÿ %ÿ &ÿ &ÿ %ÿ *ÿ9Jÿ;Mÿ4Dÿ>Qÿ8Jÿ )5ÿ7Gÿ7Hÿ 'ÿ &ÿ2BÿKaÿ7Gÿ !+ÿ:KÿAUÿ@SÿG]ÿEZÿ #.ÿZtþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|Ÿý^{ÿUoÿVpÿVpÿVpÿVpÿVpÿVpÿYsÿ"t–þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢‚$~¢$~¢$~¢$~¢$~¢$~¢5$~¢î$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ï$~¢$~¢$~¢$~¢$~¢$~¢ $~¢Ä$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ýi‡þVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿZuÿ#xšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nþ8IÿLcÿ8Iÿ:KÿCWÿ8IÿÿBVÿG]ÿ.<ÿ %ÿ %ÿ %ÿ+8ÿ?Rÿ.=ÿ.;ÿ;Lÿ>Qÿ6Gÿ)6ÿ+8ÿ=Pÿ6Fÿ ",ÿ %ÿ %ÿ %0ÿ mþ$£ý$~¢þ$~¢f$~¢$~¢$~¢$~¢$~¢*$~¢è$~¢ÿ$| ýRjÿEZÿG]ÿBWÿ-;ÿ #.ÿ 'ÿ %ÿ %ÿ #-ÿ;Mÿ7Gÿ )ÿ %ÿ ",ÿ1@ÿEZÿH]ÿ-;ÿ 'ÿ (ÿ:Lÿ4Dÿ8Iÿ@Sÿ>Qÿ #-ÿ?Rÿ@TÿBVÿ '3ÿEZþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"wšþZtÿVpÿVpÿVpÿVpÿVpÿVpÿVoÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢û$~¢V$~¢$~¢$~¢$~¢$~¢$~¢\$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢â$~¢"$~¢$~¢$~¢$~¢$~¢$~¢¬$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý#y›þ\xÿVoÿVpÿVpÿVpÿVpÿVpÿVpÿWrÿ"t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$€¤ý]xþ7GÿLcÿ9Jÿ@SÿAUÿ )ÿ (4ÿBVÿ=Pÿ:Lÿ &2ÿ-:ÿ>Qÿ %0ÿ %ÿ )ÿ)6ÿ?RÿI_ÿDYÿ-;ÿ !+ÿ &ÿ %ÿ %ÿ !,ÿ6Fÿ>Qÿ,9ÿ &ÿ,:ÿ"u—þ$£þ$~¢ö$~¢F$~¢$~¢$~¢$~¢$~¢$~¢Ñ$~¢ÿ$~¢ýZtþ7Gÿ)6ÿ0?ÿ:Kÿ>Qÿ;Mÿ2Aÿ,9ÿ>Qÿ3Cÿ 'ÿ %ÿ &ÿ %ÿ/=ÿ>Qÿ0?ÿ=Oÿ:Kÿ6Gÿ;Mÿ (ÿ *ÿAUÿDXÿ*7ÿ;MÿEZÿJaÿ5Eÿ2Aÿ#x›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!pþVpÿVpÿVpÿVpÿVpÿVpÿVpÿ[vÿ#xšþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ë$~¢0$~¢$~¢$~¢$~¢$~¢$~¢‰$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ð$~¢7$~¢$~¢$~¢$~¢$~¢$~¢$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~£ý mþVpÿVpÿVpÿVpÿVpÿVpÿVpÿVpÿ mŒþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýI_þ;Mÿ?SÿG]ÿ6Gÿ>Qÿ*6ÿ4DÿG\ÿ=Pÿ (ÿ %ÿ %ÿ0?ÿ>Qÿ2Aÿ=Oÿÿ (5ÿQÿ )5ÿ &ÿ '2ÿ7HÿEZÿG]ÿ.;ÿ (ÿ %ÿ %ÿ !,ÿ9Jÿ:Lÿ "-ÿ %ÿ %ÿ (ÿ $/ÿ*7ÿ7HÿG\ÿ^yþ$~¢ý$~¢ÿ$~¢Î$~¢$~¢$~¢$~¢$~¢$~¢$~¢‰$~¢ÿ$¤ýd€þ *ÿ &ÿ &ÿ &ÿ &ÿ/=ÿ?Rÿ+8ÿ &1ÿ1@ÿPÿ:KÿDXÿ+9ÿ %ÿ %ÿ )ÿ;Mÿ2Aÿ0?ÿ?RÿEZÿ/>ÿ #ÿ3CÿG]ÿ6GÿF\ÿH^ÿ $0ÿSlþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#yœþ[wÿVpÿVpÿVpÿVpÿVpÿVoÿ^zÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ª$~¢$~¢$~¢$~¢$~¢$~¢$~¢×$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢i$~¢$~¢$~¢$~¢$~¢$~¢Y$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$£ý!q’þXrÿVpÿVpÿVpÿVpÿVpÿVpÿ\xÿ#zþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýi‡þ7HÿLcÿQÿ9Jÿ@TÿCWÿ #.ÿ $ÿ-;ÿ@Tÿ9Kÿ>Qÿ2Bÿ $0ÿ5Eÿ;Mÿ !+ÿ %ÿ &ÿ %ÿ (ÿ5Fÿ@Sÿ0>ÿ5EÿQÿ:Lÿ3Cÿ*7ÿ\vþ$¤ý$~¢ÿ$~¢«$~¢$~¢$~¢$~¢$~¢$~¢$~¢^$~¢ü$£þ!q’þ (4ÿ %ÿ %ÿ *ÿ5Fÿ=Pÿ &1ÿ %ÿ %ÿ %ÿ 'ÿ0?ÿF[ÿ>Qÿ>Pÿ4Dÿ '2ÿ4Cÿ9Jÿ 'ÿ %ÿ3CÿDYÿ>Qÿ/=ÿÿ?RÿCWÿAUÿ,9ÿ9Jÿ#{Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVpÿVpÿVpÿVpÿWqÿ!pþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢~$~¢$~¢$~¢$~¢$~¢$~¢8$~¢ð$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢†$~¢$~¢$~¢$~¢$~¢$~¢@$~¢ô$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýdþUoÿVpÿVpÿVpÿVpÿVpÿWqÿ!r’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýQiþ:LÿLcÿ1@ÿ?SÿAUÿ %0ÿ6Gÿ3Cÿ)5ÿ;MÿF\ÿ?Rÿ ",ÿ %ÿ %ÿ (ÿ6Fÿ:Kÿ !+ÿ ",ÿ*7ÿ5Eÿ=OÿCWÿG]ÿ?Rÿ (5ÿ !+ÿ 'ÿ %ÿ !+ÿg…þ$¤ý$~¢ÿ$~¢€$~¢$~¢$~¢$~¢$~¢$~¢$~¢5$~¢î$~¢þ#zý;Lÿ )ÿ $/ÿ;Lÿ8Iÿ !+ÿ %ÿ &ÿ &ÿ %ÿ '4ÿ?Rÿ+8ÿ (ÿ &2ÿ3CÿBWÿI_ÿ3Cÿ !+ÿ $/ÿ?Rÿ '3ÿ (4ÿ@TÿF[ÿ %0ÿ0?ÿG]ÿG\ÿQÿ*7ÿ %ÿ %ÿ 'ÿ '3ÿBVÿCWÿ?Rÿ;Mÿ2Bÿ (5ÿ !+ÿ '3ÿ=Pÿ4Dÿ )ÿ %ÿ %ÿ,9ÿ!t•þ$£þ$~¢ú$~¢S$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ò$~¢ÿ$~£ýþAUÿEZÿF[ÿ2Bÿ)5ÿ #.ÿ (ÿ %ÿ '3ÿ?Rÿ,9ÿ &ÿ &ÿ %ÿ $/ÿ@Sÿ2Bÿ9Jÿ>QÿAUÿ8Iÿ &ÿ %ÿ8Jÿ?Rÿ>Qÿ@Tÿ5EÿCXÿI_ÿ &2ÿSjþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý lŒþVpÿVpÿVpÿVpÿVpÿVpÿXsÿ"t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢é$~¢-$~¢$~¢$~¢$~¢$~¢$~¢Œ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢»$~¢$~¢$~¢$~¢$~¢$~¢$~¢×$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýh†þVpÿVpÿVpÿVpÿVpÿVpÿZuÿ"v˜þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýh†þ5EÿH]ÿEZÿPÿ?Rÿ4Dÿ %ÿ $ÿ*7ÿ>Qÿ)6ÿ1?ÿ;Nÿ>Qÿ7Hÿ;Mÿ?Rÿ "-ÿ %ÿ %ÿ &ÿ %ÿ ",ÿ9JÿQÿQÿ ",ÿ+8ÿH^ÿ5Fÿ;MÿMdÿ0?ÿ5Dÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#yœþ\xÿVoÿVpÿVpÿVpÿVpÿVoÿf„þ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Í$~¢$~¢$~¢$~¢$~¢$~¢$~¢·$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ñ$~¢$~¢$~¢$~¢$~¢$~¢ $~¢Â$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#x›þ\wÿVpÿVpÿVpÿVpÿVpÿVoÿf„þ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýNdþ>PÿKaÿ=PÿÿF\ÿ>Qÿ ",ÿ $0ÿ>Qÿ %0ÿ #.ÿ0?ÿEZÿG]ÿ8Iÿ*7ÿ !+ÿ &ÿ (ÿ6FÿQÿ9Jÿ/=ÿ9Jÿ9Kÿ 'ÿ $ÿ "-ÿ>Qÿ*7ÿ ",ÿ2AÿG\ÿAUÿ &1ÿ )5ÿ?Rÿ;MÿG]ÿ@SÿQÿ8Iÿ,9ÿPÿJ`ÿl‹þ$£ý$~¢ÿ$~¢”$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢>$~¢ò$~¢þ#zœþ5Dÿ $ÿ &ÿ &ÿ %ÿ*7ÿ?Rÿ+8ÿ &ÿ )ÿ %0ÿ.<ÿCWÿG\ÿ?Rÿ6Fÿ+8ÿ8Jÿ5Eÿ %ÿ $ÿ %0ÿ?Sÿ4Dÿ>QÿBVÿ4Dÿ !+ÿCWÿCXÿH^ÿ)5ÿCWþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý#xšþ[vÿVpÿVpÿVpÿVpÿVpÿVpÿ jŠþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢z$~¢$~¢$~¢$~¢$~¢$~¢;$~¢ñ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ñ$~¢9$~¢$~¢$~¢$~¢$~¢$~¢Ž$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žý_{ÿUoÿVpÿVpÿVpÿVpÿUoÿdþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýþ2AÿCWÿEYÿAUÿEZÿ (4ÿ 'ÿ=Pÿ8IÿQÿQÿ '2ÿ &2ÿ1@ÿBVÿI_ÿ;Mÿ-;ÿ #-ÿ7Hÿ2Aÿ $ÿ %1ÿEZÿAUÿ4Dÿ?Rÿ9KÿLbÿQÿ=Pÿ8Iÿ8IÿEZÿ0>ÿ !+ÿ (ÿ &ÿ #ÿ=Oÿ$} ý$~¢ÿ$~¢ç$~¢+$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ÿ$¤ýc€þ $/ÿ )ÿ/=ÿ?Rÿ '3ÿ $ÿ %ÿ %ÿ %ÿ '3ÿ@Sÿ)6ÿ %ÿ %ÿ $/ÿ?Rÿ,9ÿ-;ÿ9KÿAUÿG]ÿ/>ÿ )ÿ)6ÿQÿEZÿ,9ÿF[ÿH^ÿ %0ÿKaþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýd‚þWqÿVoÿVpÿVpÿVpÿWqÿ!oþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ç$~¢*$~¢$~¢$~¢$~¢$~¢$~¢‘$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢l$~¢$~¢$~¢$~¢$~¢$~¢W$~¢û$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýc€þUoÿVpÿVpÿVpÿVpÿUoÿa~þ$| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýb~þ5FÿLcÿAUÿAUÿ)6ÿ9KÿH^ÿ6Gÿ)6ÿ>Qÿ %1ÿ $ÿ 'ÿ;Mÿ4Cÿ,:ÿ7Gÿ=OÿCWÿH^ÿ6Gÿ*7ÿ $/ÿ )ÿ &ÿ &ÿ-;ÿ?Rÿ)6ÿ %ÿ &ÿ &ÿVoþ$€¤ý$~¢ÿ$~¢¼$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢]$~¢û$~£þ"xšþJ`ÿAUÿH]ÿ@Sÿ4Dÿ0>ÿ+8ÿ &1ÿ '3ÿ?Rÿ.;ÿ %ÿ %ÿ )ÿ;Mÿ1@ÿ %ÿ %ÿ (ÿÿBVÿAUÿEZÿAUÿ2Bÿ *7ÿ p‘þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|Ÿý!oþ^zÿVpÿVpÿUoÿa~þ$|Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ê$~¢$~¢$~¢$~¢$~¢$~¢ $~¢»$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ˆ$~¢$~¢$~¢$~¢$~¢$~¢>$~¢ó$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u–þYtÿVpÿVpÿVpÿVpÿVoÿWrÿ!s”þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žý?Qÿ?RÿKaÿ,:ÿ?RÿCWÿ9Kÿ@Tÿ "-ÿ #ÿ2Bÿ8Iÿ )5ÿ4Cÿ@SÿI_ÿ>Pÿ0>ÿ '3ÿ !,ÿ6Fÿ8Iÿ 'ÿ %ÿ &ÿ &ÿ &ÿ &ÿ*7ÿ@Sÿ.;ÿ %ÿ %0ÿl‹þ$£ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&$~¢ã$~¢ÿ$~¡ýZtþ=Oÿ*7ÿ,:ÿ1@ÿ6Fÿ:Kÿ@SÿG]ÿEZÿ9Kÿ3Cÿ,9ÿ6GÿPÿ-;ÿ )5ÿG\ÿCXÿF[ÿ %0ÿLbþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý#zý l‹þ[wÿXsÿ"s”þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢£$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ü$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¤$~¢$~¢$~¢$~¢$~¢$~¢($~¢ç$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg…þVoÿVpÿVpÿVoÿ[vÿj‰þ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýcþ0?ÿBWÿDYÿAUÿF[ÿ3Bÿ &ÿ9Jÿ0>ÿ)6ÿ:LÿI_ÿ?Rÿ3Cÿ (4ÿ3Bÿ:Kÿ 'ÿ %ÿ %ÿ *ÿ;Lÿ4Dÿ 'ÿ &ÿ &ÿ %ÿ %ÿ $ÿ &2ÿ>Pÿ0?ÿ9Jÿ#zý$~¢þ$~¢ò$~¢@$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢®$~¢ÿ$¤ýeƒþ #.ÿ %ÿ %ÿ %ÿ %ÿ *ÿÿ@Sÿ$~¢ó$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢½$~¢ $~¢$~¢$~¢$~¢$~¢$~¢Õ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý#xšþ[wÿUoÿYtÿg…þ"wšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zþ?QÿATÿF[ÿG\ÿ2Bÿ2Bÿ6Fÿ &2ÿ=PÿG\ÿÿ %ÿ %ÿ $ÿ ",ÿ>Pÿ0>ÿ +ÿ #.ÿ '3ÿ*7ÿ-;ÿ0?ÿ9KÿH^ÿa}þ$£ý$~¢ÿ$~¢Ë$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢h$~¢ý$£þ!t•þ,9ÿ %ÿ &ÿ &ÿ )ÿ8Iÿ7Hÿ (ÿ %ÿ $ÿ $0ÿ?Rÿ*7ÿ #.ÿ*7ÿ2AÿCXÿF[ÿ>Pÿ6Gÿ.<ÿ?Sÿ (5ÿ #ÿ '3ÿ>Qÿ1@ÿBVÿBVÿ,:ÿG]ÿH]ÿ $/ÿFZþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢K$~¢$~¢$~¢$~¢$~¢$~¢h$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ó$~¢$~¢$~¢$~¢$~¢$~¢ $~¢À$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý mþdþ"u–þ$~¢ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý\wþ4DÿLcÿAUÿBVÿ*7ÿ3CÿG\ÿ>Pÿ6FÿATÿ $0ÿ $ÿ #-ÿ?Rÿ %0ÿ %ÿ %ÿ (5ÿAUÿ+9ÿ+9ÿ1@ÿ6Fÿ@SÿH]ÿBVÿ=PÿÿAUÿG]ÿÿDXÿAUÿEZÿ@Sÿ6Gÿ $0ÿfƒþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢å$~¢'$~¢$~¢$~¢$~¢$~¢$~¢•$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ä$~¢&$~¢$~¢$~¢$~¢$~¢$~¢§$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ý$}¡ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u–þ6EÿAUÿJ`ÿ-;ÿ>QÿBWÿ=PÿBWÿ $0ÿ %ÿ7Hÿ/>ÿ %ÿ )ÿ8Iÿÿ*7ÿ-:ÿBVÿ-:ÿ (ÿ 'ÿ &ÿ %ÿ #ÿ9Iÿ#{žý$~¢þ$~¢ó$~¢C$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢©$~¢ÿ$¤ýdþ %0ÿ ",ÿ5Fÿ=Pÿ #-ÿ 'ÿ 'ÿ (ÿ7Hÿ6Fÿ &ÿ %ÿ %ÿ 'ÿ9Kÿ1Aÿ %ÿ %ÿ (ÿÿ9Jÿ1@ÿ '3ÿEZÿDYÿI`ÿ+8ÿ8Iÿ#y›þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ç$~¢$~¢$~¢$~¢$~¢$~¢ $~¢¾$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ò$~¢;$~¢$~¢$~¢$~¢$~¢$~¢Œ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýOfþ4DÿAUÿDYÿAUÿG\ÿ2Bÿ )ÿ;Mÿ )5ÿ )ÿ2BÿBWÿ9Jÿ=Pÿ>QÿG\ÿ;Mÿ,:ÿ '2ÿ #.ÿ:Kÿ3Cÿ %ÿ %ÿ %ÿ %ÿ+8ÿ@Sÿ '3ÿ %ÿ &ÿ &ÿ 'ÿWpþ$¤ý$~¢ÿ$~¢Ç$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢[$~¢ú$~¢þ#zþNeÿDYÿF\ÿ@Sÿÿ-:ÿ (4ÿ1@ÿ?Rÿ "-ÿ &ÿ %ÿ,:ÿ;Mÿ 'ÿ $ÿ &2ÿ>Qÿ,9ÿ7HÿG]ÿ=Oÿ-;ÿ?Rÿ7GÿJ`ÿCWÿ #.ÿTmþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ÿ$~¢$~¢$~¢$~¢$~¢$~¢ $~¢ß$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ú$~¢S$~¢$~¢$~¢$~¢$~¢$~¢p$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýh†þ3CÿH^ÿF\ÿF[ÿ,:ÿ6Gÿ1?ÿ #.ÿ=PÿAUÿ=Pÿ=OÿEZÿ6Fÿ %0ÿ )ÿ/>ÿ:Kÿ 'ÿ %ÿ %ÿ #.ÿ?Rÿ*7ÿ %ÿ &ÿ &ÿ &ÿ-;ÿ?Rÿ %1ÿ %ÿ %ÿ *6ÿ!q’þ$£ý$~¢ÿ$~¢}$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ö$~¢ÿ$£ýcþÿ2Aÿ5Eÿ9Jÿ?RÿH^ÿAUÿ=Oÿ:Lÿ5FÿBVÿ6Fÿ #.ÿ )ÿ3Cÿ4Dÿ $ÿ *ÿ?Rÿ5Eÿ>QÿF\ÿ/=ÿBUÿJaÿ1@ÿ (4ÿkŠþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢r$~¢$~¢$~¢$~¢$~¢$~¢B$~¢ô$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢n$~¢$~¢$~¢$~¢$~¢$~¢T$~¢û$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"xšþPÿ>QÿAUÿ &1ÿ (ÿ1@ÿ7Hÿ %ÿ %ÿ )ÿQÿ #.ÿ %ÿ %ÿ %ÿ %ÿ/=ÿ>Qÿ $0ÿ $ÿEYþ$~¢ý$~¢ÿ$~¢ê$~¢2$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Œ$~¢ÿ$£ý!s”þ,9ÿ $ÿ &ÿ %ÿ '3ÿ?Rÿ (4ÿ %ÿ %ÿ %ÿ 'ÿ9Jÿ4Dÿ ",ÿ &2ÿ*7ÿPÿ>PÿF\ÿ8Jÿ (5ÿ+8ÿ=Oÿ 'ÿ &1ÿCWÿ>QÿG\ÿ=PÿCXÿ '2ÿ:Kþ#y›ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ö$~¢G$~¢$~¢$~¢$~¢$~¢$~¢k$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Š$~¢$~¢$~¢$~¢$~¢$~¢<$~¢ò$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýOfþ0?ÿH^ÿCWÿ.<ÿF[ÿ@Sÿ?Sÿ>Qÿ ",ÿ "-ÿ>Qÿ #-ÿ $ÿ ",ÿ>Qÿ %0ÿ (ÿ *ÿ/>ÿ@Sÿ)6ÿ+8ÿ-;ÿ0>ÿCWÿ?Sÿ4Dÿ7Hÿ7Hÿ7Hÿ7HÿEZÿCWÿPÿ>QÿDYÿEZÿ;Lÿ8Iÿ6Fÿ4Cÿ?RÿBVÿ0?ÿ.<ÿ-:ÿ,9ÿ*7ÿ3CÿWqÿ$| ý$~¢þ$~¢ù$~¢X$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢°$~¢ÿ$¤ýf„þ ",ÿ !+ÿÿ $ÿ (ÿ:Lÿ7Hÿ4DÿBUÿF[ÿ3CÿPÿ+9ÿ $ÿ %ÿ %ÿ %ÿ )ÿ_{þ$¤ý$~¢ÿ$~¢Ì$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢V$~¢ø$~¢þ#{žý@Sÿ;Lÿ@Tÿ-:ÿ,9ÿ,9ÿ,9ÿ+8ÿ>Pÿ>Qÿ,9ÿ,9ÿ*7ÿ*7ÿAUÿ0?ÿ #.ÿ !,ÿ &2ÿ?Rÿ #.ÿ %ÿ *ÿ=Pÿ $/ÿ #ÿ1@ÿPÿ8HÿMdÿ9Jÿ6Fÿ8Jÿ0>ÿF[ÿ@Sÿ=OÿEZÿ7Hÿ (4ÿ (4ÿ?Rÿ #.ÿ %ÿ &ÿ7Hÿ1@ÿ %ÿ &ÿ %ÿ0?ÿ;Mÿ (ÿ &ÿ &ÿ %ÿ (4ÿ@Sÿ '2ÿ %ÿ &ÿ %ÿ1?ÿ"v˜þ$£ý$~¢þ$~¢v$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Å$~¢ÿ$£ý mŒþBVÿ;Lÿ;Lÿ9Jÿ8Iÿ7HÿDYÿAUÿ7Hÿ9Jÿ:Lÿ;MÿEZÿCXÿ=Pÿ=Pÿ>QÿCXÿF[ÿ:Lÿ6Gÿ8HÿBVÿ*7ÿ #-ÿ7Hÿ/>ÿ #ÿ6FÿQÿ !,ÿ %ÿ %ÿ (ÿ;Mÿ/=ÿ %ÿ %ÿ %ÿ %ÿ.<ÿ>Pÿ "-ÿ %ÿ &ÿUmþ$¤ý$~¢ÿ$~¢Ý$~¢$$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢h$~¢ü$~¢þ#{žý:Kÿ %ÿ &ÿ &ÿ %ÿ (5ÿ?Rÿ $0ÿ %ÿ &ÿ &ÿ %1ÿ?Sÿ &1ÿ )ÿ *ÿ &1ÿATÿ.<ÿ*7ÿ/=ÿ@TÿAUÿQÿG\ÿ>Qÿ1@ÿ=Oÿ1@ÿ ",ÿAUÿ?RÿKaÿDYÿ $/ÿ@Sþ#yœþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢×$~¢"$~¢$~¢$~¢$~¢$~¢™$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ó$~¢>$~¢$~¢$~¢$~¢$~¢$~¢$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýTmþ3BÿJ`ÿDYÿF[ÿ:Kÿ?Rÿ/=ÿ %ÿ:Lÿ)6ÿ $ÿ-;ÿ:Lÿ ",ÿ $.ÿ4Cÿ>Pÿ*6ÿ*7ÿ,:ÿBUÿ8Iÿ.<ÿ/=ÿ.<ÿ7GÿDYÿ-;ÿ*6ÿ*7ÿ (5ÿ '2ÿ;Mÿÿ!t•þ$£ý$~¢ÿ$~¢‰$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ï$~¢ÿ$¤ý^zþ *ÿ &ÿ &ÿ ",ÿ>Qÿ-:ÿ %ÿ &ÿ &ÿ 'ÿ8Iÿ3Bÿ %ÿ &ÿ %ÿ-;ÿ:Lÿ 'ÿ %ÿ 'ÿQÿ9Jÿ?RÿH]ÿ>Qÿ>Qÿ=PÿG]ÿ?Sÿ9Jÿ8Iÿ9JÿG\ÿ;Nÿ7Hÿ7Hÿ7Hÿ=OÿG]ÿ;Mÿ;MÿQÿEYÿEYÿa}þ$~£ý$~¢ÿ$~¢ä$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢q$~¢ý$~¢þ#zþ9Jÿ $ÿ (ÿ8Iÿ5Eÿ &ÿ %ÿ %ÿ %ÿ*6ÿ=Pÿ *ÿ %ÿ %ÿ (ÿÿ &ÿ 'ÿ (ÿ )ÿ "-ÿH]ÿ#yœþ$~¢ý$~¢ÿ$~¢’$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ð$~¢ÿ$¤ýb~þ !+ÿ0?ÿ=Oÿ "-ÿ !+ÿ #.ÿ %1ÿ (4ÿ@Sÿ:Kÿ.<ÿ0>ÿ0>ÿ6GÿF[ÿ6Fÿ4Dÿ3Cÿ=OÿAUÿ0?ÿ/=ÿ7Hÿ?Rÿ )5ÿ &1ÿ=Pÿ*7ÿ &ÿ:Lÿ.<ÿ/=ÿG\ÿF\ÿLcÿ:Lÿ ",ÿNeþ#|Ÿý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ý$~¢$~¢v$~¢©$~¢ó$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý_{þ2AÿDXÿDYÿBVÿCXÿDYÿ>Qÿ+9ÿPÿ *ÿ &ÿ %ÿ %1ÿ?Rÿ #.ÿ %ÿ &ÿ %ÿ '2ÿ?Sÿ %1ÿ %ÿ &ÿ &ÿ 'ÿVpþ$¤ý$~¢ÿ$~¢ä$~¢0$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢k$~¢ü$~¢þ#{žýMcþF[ÿAUÿPÿ>Qÿ=OÿEZÿBVÿ8Iÿ7Hÿ6Fÿ5EÿEZÿ8Iÿ1@ÿ2Aÿ4CÿEZÿ7Hÿ4Cÿ6GÿCXÿAUÿ;Nÿ>QÿH]ÿ@Sÿ;MÿDYÿ7Hÿ,:ÿATÿ,:ÿCWÿKbÿ4Dÿ *ÿLbþ#{žý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý]xþ/=ÿCXÿKbÿCWÿDYÿ '3ÿ6Gÿ0?ÿ #ÿ6Gÿ/=ÿ 'ÿ*7ÿ=Oÿ ",ÿ *ÿ.=ÿQÿQÿI_ÿ;Mÿ.<ÿ?Sÿ+8ÿ>Qÿ=Pÿ7HÿCXÿCWÿQÿG]ÿ?Rÿ>Qÿ@SÿH]ÿ>QÿPÿ !+ÿ $ÿ $/ÿ=Oÿ (ÿ $ÿ7Hÿ+8ÿ &ÿ:Lÿ7Gÿ7GÿF\ÿG\ÿLdÿPÿ=Pÿ>QÿÿH^ÿJaÿDYÿCXÿ,9ÿ=Oÿ-;ÿ &ÿ:Lÿ (4ÿ "ÿ0>ÿ5Eÿ $ÿ %ÿ8Iÿ-;ÿ $ÿ %ÿ.<ÿ8Iÿ &ÿ %ÿ %ÿ2Bÿ6Fÿ %ÿ %ÿ %ÿ *ÿ=Pÿ-;ÿ )ÿ #.ÿ &2ÿ*7ÿ2BÿMdÿ!s•þ$£ý$~¢ÿ$~¢Ë$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢>$~¢ë$~¢ÿ$£ýYsþ (ÿ #.ÿ>Qÿ (4ÿ 'ÿ !+ÿ $0ÿ )5ÿ>Qÿ@Tÿ7Hÿ;Lÿ=OÿBVÿF[ÿ>Pÿ;Mÿ;LÿEYÿ=Pÿ5Eÿ5Fÿ?Rÿ@Tÿ5Eÿ6FÿDXÿ>Pÿ:KÿBVÿEZÿ>QÿF[ÿQÿCXÿAUÿATÿ (4ÿ,9ÿ`{þ$~¢ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýlŒþQÿ ",ÿ %ÿ %ÿ #.ÿ?Rÿ $/ÿ %ÿ &ÿ %ÿ+8ÿ=Pÿ *ÿ %ÿ %ÿ %ÿ &ÿUnþ$£ý$~¢þ$~¢÷$~¢[$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Œ$~¢ÿ$~¢ý#zý@Sÿ9KÿCXÿ7HÿPÿ=PÿCWÿCXÿ3Bÿ.<ÿ*7ÿ '3ÿ>Pÿ/=ÿ (ÿ 'ÿ )ÿ=Oÿ '3ÿ $ÿ %ÿ5Eÿ1?ÿ $ÿ &ÿ:Lÿ )5ÿ $ÿ0>ÿ9Jÿ !,ÿ4Dÿ@Sÿ5EÿEZÿEZÿLcÿH^ÿ.<ÿ #.ÿNdþ"xšþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$} ý]wþ2BÿQÿ;MÿF[ÿ>Qÿ;MÿATÿF\ÿ=Pÿ>QÿAUÿF[ÿ;Mÿ9Jÿ6FÿDYÿ4Dÿ '3ÿ #.ÿ )ÿ6Gÿ3Cÿ %ÿ %ÿ %ÿ 'ÿ9Jÿ2Aÿ &ÿ &ÿ $ÿ2Aÿ!u–þ$£ý$~¢ÿ$~¢«$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ñ$~¢ÿ$£ý!s”þH^ÿ5Eÿ/=ÿ)5ÿ $/ÿ ",ÿQÿ !,ÿ %ÿ %ÿ &2ÿ=Pÿ )ÿ %ÿ &ÿ:Lÿ*7ÿ %ÿ )ÿ=Oÿ)6ÿ *ÿ0>ÿ:Kÿ !+ÿ-;ÿQÿ !+ÿ )ÿPÿ "-ÿ !+ÿ '3ÿAUÿ.;ÿ,9ÿ0?ÿ:LÿF\ÿ=Oÿ>Qÿ=OÿATÿEZÿ1?ÿ)6ÿ $/ÿ )ÿ %0ÿ?Rÿ %1ÿ $ÿ #-ÿb~þ$¤ý$~¢ÿ$~¢ä$~¢5$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Z$~¢õ$~¢þ$£ýWpþ 'ÿ %ÿ %ÿ %ÿ,:ÿQÿBWÿF[ÿPÿI_ÿAUÿ)5ÿ (4ÿSjþ"xšþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$| ý`{þ7Gÿ6FÿCXÿBUÿBWÿ*7ÿ@Sÿ+8ÿ-:ÿ>Pÿ #.ÿ,9ÿ=Oÿ *ÿ (ÿ;Mÿ '3ÿ $ÿ !,ÿ>Pÿ ",ÿ %ÿ 'ÿ;Mÿ)6ÿ $ÿ %ÿ "-ÿ?Rÿ %0ÿ !+ÿ %0ÿ)6ÿQÿ=Pÿ9JÿCWÿÿ6FÿDXÿCWÿ>PÿPÿDYÿ1@ÿ,:ÿ-;ÿAUÿ (5ÿ "-ÿ.<ÿQÿCWÿF\ÿ=Oÿ;MÿEZÿ9Jÿ/=ÿ,9ÿ@Tÿ (4ÿ 'ÿ %ÿ3Cÿ3Bÿ %ÿ &ÿ &ÿ8Iÿ/>ÿ %ÿ %ÿ $ÿ &2ÿ>Qÿ #-ÿ !+ÿ &1ÿ,:ÿ4CÿBUÿRkÿ"w™þ$£ý$~¢ÿ$~¢»$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&$~¢Õ$~¢ÿ$£ý nŽþ,9ÿ $ÿ0>ÿ9Kÿ (ÿ !+ÿ (4ÿ/>ÿ;MÿG]ÿ?RÿQÿ $/ÿ;Mÿ0?ÿ )ÿ:Lÿ/=ÿ )ÿ1@ÿ:Lÿ &2ÿ*6ÿ@Tÿ:Lÿ6Gÿ;MÿF[ÿBVÿ;Mÿ6Fÿ:Lÿ>Qÿ #.ÿ (ÿ %ÿ*7ÿ;Mÿ (ÿ &ÿ &ÿ &ÿ8Iÿ1@ÿ %ÿ %ÿ %ÿ $ÿ.<ÿ oþ$£ý$~¢ÿ$~¢è$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Y$~¢ó$~¢þ$£ý]xþ )5ÿBWÿ;Mÿ:Kÿ>QÿQÿDYÿEYÿ?RÿF[ÿDYÿKbÿKaÿ;Mÿ #.ÿ '3ÿJ`þ oþ$~¢ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý"u—þVnþ3Bÿ4CÿF\ÿKbÿ>PÿG\ÿ4Dÿ?Sÿ:Lÿ.<ÿBVÿ-:ÿ $/ÿ>Pÿ '3ÿ #ÿ/>ÿ4Dÿ $ÿ %ÿ9Kÿ+9ÿ $ÿ &ÿ6Fÿ6Fÿ (4ÿ/>ÿ7HÿF\ÿ@Tÿÿ)6ÿ1@ÿ=OÿF\ÿ>QÿQÿBVÿ.<ÿ )5ÿ:Lÿ4Cÿ *ÿ*7ÿ=Oÿ *ÿ (4ÿ>Qÿ "-ÿ2Aÿ>Qÿ.=ÿF[ÿEZÿBVÿ6Gÿ &1ÿ )6ÿI^þkŠþ$} ý$¤ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý$£ý!r“þTlþ6Fÿ0?ÿ=PÿJaÿG]ÿ>QÿG]ÿ8Iÿ;MÿDYÿ6Gÿ?RÿF[ÿ=Oÿ?SÿH^ÿ=Oÿ6Fÿ>Pÿ9Jÿ #-ÿ (ÿ7Gÿ-;ÿ $ÿ %ÿ/=ÿ7Gÿ %ÿ %ÿ &ÿ:Lÿ0?ÿ '3ÿ0>ÿ8IÿCWÿCXÿ8Iÿ/>ÿ &2ÿ *ÿ7Hÿ2Bÿ %ÿ %ÿ?Rÿ#zþ$~£ý$~¢ÿ$~¢®$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Á$~¢ÿ$~£ý#zþ>Pÿ $ÿ %ÿ %ÿ 'ÿ:Kÿ.=ÿ %ÿ &ÿ %ÿ #.ÿ>Qÿ $/ÿ $/ÿ,:ÿ6GÿF\ÿ@Tÿ;Mÿ4Dÿÿ3BÿDXÿKbÿ>QÿEZÿ5Eÿ3BÿPÿQÿDYÿ %1ÿ2@ÿ!q’þ$£ý$~¢ÿ$~¢Ø$~¢,$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢:$~¢â$~¢ÿ$£ý oŽþ.<ÿ %ÿ %ÿ '3ÿ>Qÿ *ÿ %ÿ &ÿ !+ÿ3CÿF[ÿQÿ9Kÿ:Lÿ?Rÿ "-ÿ 'ÿ %ÿ5Eÿ1?ÿ %ÿ %ÿ+8ÿ8Iÿ 'ÿ ",ÿ6GÿATÿ8Iÿ=PÿH]ÿ@Sÿ9Jÿ?Rÿ?Sÿ.<ÿ8Jÿ>Qÿ)5ÿ=Oÿ=Oÿ4DÿH^ÿCXÿCWÿ;Mÿ+9ÿ $.ÿ2AÿOfþj‰þ#zý$¤ý$¤ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$€¤ý$| ý pþXqþQÿ-:ÿ $ÿ*7ÿ:Kÿ %ÿ $ÿ3Cÿ2Aÿ !+ÿ '3ÿ:KÿDXÿ=Pÿ=Pÿÿ>QÿKbÿl‹þ$£ý$~¢ÿ$~¢ð$~¢T$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢b$~¢ô$~¢þ$£ýdþ &2ÿ %ÿ7Hÿ2Bÿ #.ÿ.<ÿ9Jÿ?RÿG]ÿ7Hÿ (5ÿ !+ÿ %ÿ1@ÿ5Eÿ %ÿ &ÿ &ÿ9Kÿ+8ÿ %ÿ !,ÿ4CÿCWÿ;Mÿ>QÿBVÿAUÿ.<ÿ '2ÿ:Lÿ.<ÿ $ÿ (5ÿ;Mÿ &ÿ &1ÿ@Sÿ+8ÿ6GÿDYÿ7HÿEZÿCXÿF[ÿLcÿKbÿ@Sÿ.<ÿ &1ÿ &2ÿ6FÿOgþg…þ"w˜þ$~¢ý$€¤ý$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý$€¤ý$£ý#yœþl‹þVoþ?Rÿ/=ÿ-;ÿ=PÿJ`ÿLcÿ>QÿEZÿ5Fÿ0?ÿ=Pÿ *ÿ2Aÿ9Jÿ ",ÿ4Cÿ?Sÿ1Aÿ;LÿH^ÿ@Sÿ9JÿÿDYÿBVÿQÿ8Jÿ-;ÿ,9ÿ?Rÿ !+ÿ %ÿ &ÿ 'ÿ:Lÿ+9ÿ $ÿ %ÿ *ÿ?Rÿ7Hÿ9Jÿ>QÿCXÿ?Rÿ)6ÿ ",ÿ-;ÿ:Kÿ %ÿ $ÿ2Bÿ3Cÿ )ÿ+8ÿDXÿ:Lÿ=PÿF[ÿCWÿ6Gÿ>Qÿ?Sÿ+8ÿPÿ7Hÿ>Pÿ3Bÿ &ÿ $ÿ*7ÿ:Lÿ &ÿ %ÿ %ÿ7Hÿ2Aÿ (4ÿ3CÿQÿ %0ÿ &1ÿ2Aÿ=PÿG\ÿ9Jÿ-:ÿ #-ÿ2Bÿ3Cÿ $ÿ %ÿ*7ÿ:Lÿ (ÿ #.ÿ7HÿDYÿ>Pÿ=OÿDXÿ8Iÿ %1ÿ-;ÿ;Nÿ &ÿ $/ÿ?Rÿ*7ÿ5EÿF\ÿ=OÿCWÿG\ÿDXÿ@TÿJaÿEZÿCXÿCWÿ:Kÿ-;ÿ $/ÿ %0ÿ,9ÿ6FÿCWþPgþþdþkŠþ!q’þ!t•þ"v˜þ#y›ý#yœý#yœý#yœý"w™þ!t–þ!r“þmŒþg„þ^yþSkþG\þÿ+8ÿ/>ÿ8Iÿ>QÿAUÿKbÿKaÿH]ÿBVÿG]ÿ4Dÿ8Iÿ9Kÿ )ÿ6Fÿ8Hÿ '2ÿ:LÿDXÿ=Oÿ>QÿF\ÿ2Aÿ ",ÿ0>ÿ6Gÿ %ÿ $ÿ6Gÿ1@ÿ $/ÿ/=ÿAUÿEYÿ:Lÿ/=ÿ-;ÿ=Oÿ 'ÿ %ÿ %ÿ0>ÿ6Gÿ %ÿ %ÿ (ÿ,9ÿF[ÿ=Oÿ>Qÿ7Hÿ+8ÿ4Dÿ8Iÿ &ÿ &ÿEZþ#zžý$~£ý$~¢ÿ$~¢Ä$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢Å$~¢ÿ$~¢ý$| ýJ_þ &ÿ %ÿ &ÿ )ÿ=Oÿ )5ÿ %ÿ %ÿ &ÿ-:ÿF[ÿ=Pÿ>Pÿ5Eÿ3Bÿ=Pÿ (ÿ %ÿ %ÿ4Dÿ2Aÿ $ÿ &ÿ-:ÿCWÿ;Mÿ>Qÿ?RÿAUÿ &2ÿ (ÿ2Aÿ4Dÿ #ÿ !,ÿ@Sÿ3Cÿ8IÿF[ÿEZÿ6Gÿ8HÿAUÿ %1ÿ0>ÿ?Sÿ-;ÿBVÿEZÿDYÿH^ÿLbÿG]ÿBWÿCXÿ?Rÿ6Fÿ+8ÿ (4ÿ )5ÿ '4ÿ '2ÿ *6ÿ-:ÿ0>ÿ2Aÿ2Aÿ3Cÿ4Cÿ1?ÿ-:ÿ-:ÿ-:ÿ,9ÿ)6ÿ.<ÿ7Gÿ=Pÿ@SÿBWÿLbÿLdÿH^ÿ>QÿF[ÿ.<ÿ6GÿATÿ1?ÿ@TÿG]ÿ?Rÿ9KÿCXÿ)5ÿ 'ÿ:Lÿ,9ÿ 'ÿ0?ÿBVÿ:Kÿ>QÿDYÿ9Kÿ "-ÿ &ÿ8Iÿ,9ÿ $ÿ $ÿ4Cÿ7Gÿ+9ÿ8Iÿ@TÿF[ÿ/>ÿ "-ÿ %ÿ '3ÿÿ;MÿAUÿF\ÿ*7ÿ?Qþ"w™þ$£ý$~¢ÿ$~¢Ù$~¢5$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢3$~¢×$~¢ÿ$£ý#yœþCWþ &ÿ %ÿ)5ÿQÿ0>ÿ;MÿF[ÿAUÿ-;ÿ+9ÿ?Rÿ !+ÿ (ÿ=Pÿ7Hÿ9JÿF[ÿG\ÿ6Fÿ7HÿBVÿ,9ÿQÿ=OÿCWÿH^ÿI_ÿCWÿF[ÿLcÿKbÿDYÿ@SÿBVÿ/=ÿ@SÿDYÿ?Rÿ@SÿF\ÿ0?ÿ $/ÿ>Pÿ*7ÿ %1ÿ@TÿAUÿ>PÿQÿ8IÿAUÿ+8ÿ $ÿ $ÿ3Cÿ4Cÿ $ÿ &ÿ $/ÿBVÿ>Qÿ>Qÿ8Hÿ.=ÿ@Sÿ #.ÿ %ÿ &ÿ %ÿ5Eÿ3Cÿ %ÿ %ÿ 'ÿ %0ÿ8IÿXrÿ"w™þ$£ý$~¢ÿ$~¢ç$~¢K$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢D$~¢ã$~¢ÿ$£ý"w™þ?Qÿ %ÿ7Hÿ;Mÿ6Fÿ?Qÿ9Kÿ.<ÿ?Rÿ (5ÿ $ÿ &ÿ %ÿ4Dÿ2Aÿ $ÿ (ÿ (5ÿATÿCXÿ9Kÿ,:ÿ,:ÿ;Mÿ 'ÿ %ÿ ",ÿ>Qÿ %1ÿ+8ÿ;MÿI_ÿ:Kÿ+8ÿ.<ÿ;Mÿ &ÿ &ÿ:Kÿ9Jÿ:KÿEYÿG]ÿ0?ÿ %0ÿQÿ9JÿDYÿ1@ÿ3BÿH^ÿEYÿBVÿÿF[ÿBVÿ@Sÿ;MÿBVÿ %1ÿ '3ÿBWÿ7GÿQÿ #.ÿ "-ÿ=OÿCXÿ>Qÿ5Eÿ@Sÿ)5ÿ $ÿ )ÿ=Pÿ %1ÿ #.ÿ0?ÿF[ÿATÿ2Bÿ $/ÿ1Aÿ4Dÿ %ÿ &ÿ 'ÿ;Mÿ)6ÿ #.ÿ0>ÿQÿ !+ÿ &ÿ &ÿ &ÿ:Lÿ0>ÿ.<ÿQÿEYÿ,9ÿ &ÿ $ÿ '3ÿ;Mÿ 'ÿ &ÿ &2ÿCXÿATÿ;Mÿ0>ÿ?Rÿ '3ÿ $ÿ !+ÿ>Qÿ+8ÿ3CÿBVÿF\ÿ9JÿZtþb~þCWÿ *6ÿ6GÿG]ÿ?Rÿ2Aÿ;Mÿ7Hÿ !+ÿ9JÿH^ÿBVÿ3Cÿ9Jÿ=Pÿ0?ÿBVÿEYÿDXÿ,9ÿ8IÿH^ÿH]ÿ7Gÿ,:ÿEZÿG\ÿBVÿ,9ÿ;Mÿ?Rÿ;Mÿ?RÿCWÿ7Gÿ *ÿ5FÿDYÿ?Rÿ:Lÿ?Sÿ2Aÿ $ÿ+8ÿAUÿ7Gÿ>QÿCWÿ9Jÿ 'ÿ )ÿ=Pÿ (4ÿ %0ÿ6GÿI_ÿ;Nÿ+8ÿ &2ÿ>Pÿ !+ÿ %ÿ (ÿQÿCWÿ9Jÿ (ÿ %ÿ %ÿ8Iÿ.<ÿ $ÿ %ÿ 'ÿ5EÿEZÿ>Qÿ9Jÿ*7ÿ ",ÿ=Oÿ (4ÿ %ÿ %ÿ4Dÿ pþ$£ý$~¢ÿ$~¢ô$~¢n$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢^$~¢î$~¢ÿ$£ý#{žþOfÿ *ÿ %ÿ %ÿ %ÿ/=ÿ8Iÿ &ÿ %ÿ &ÿ &2ÿCXÿBVÿ9Jÿ*7ÿ "-ÿ=Pÿ %0ÿ %ÿ %ÿ '3ÿQÿ7Hÿ?Rÿ %0ÿ )ÿQÿ $/ÿ %ÿ ",ÿ7GÿG]ÿQÿ "-ÿ %ÿ (ÿ0>ÿG\ÿ>Qÿ1@ÿ #.ÿ;Mÿ*7ÿ %ÿ $ÿ2AÿQÿ6Gÿ>Qÿ6Fÿ?Rÿ0?ÿ5Eÿ>Qÿ:KÿQÿ0?ÿ4Dÿ@SÿCWÿ/=ÿ %ÿ-;ÿH]ÿDXÿ2Aÿ8HÿXrþVpþb~þg„þ\vþ4Dÿ 'ÿ1Aÿ6Gÿ *ÿ.<ÿEYÿBWÿ*6ÿ &ÿ3Cÿ3Cÿ $ÿ (ÿ3CÿF\ÿ>Qÿ0>ÿ %0ÿ>Qÿ $/ÿ %ÿ %ÿ*7ÿ;Mÿ+8ÿ:Lÿ=Pÿ>Pÿ:Kÿ &ÿ &ÿ &ÿ ",ÿ>Qÿ #.ÿ %ÿ (ÿ)6ÿ:LÿDYÿEYÿ pþ$£ý$~¢ÿ$~¢ù$~¢‚$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢j$~¢ð$~¢ÿ$£ý"xšþEYþ 'ÿ ",ÿ@Sÿ0>ÿ:Kÿ>Qÿ0?ÿ2Aÿ9Jÿ &ÿ &ÿ %ÿ %0ÿ=Oÿ !,ÿ+8ÿ;MÿCWÿ?Rÿ !+ÿ %ÿ %ÿ8Iÿ,:ÿ &ÿ )5ÿ?RÿF[ÿ/=ÿ *ÿ &2ÿ=Pÿ )ÿ *ÿ4DÿMdÿ!q’þ$£ý$~¢ý$~¢ý$£ý$£ý$£ý$£ý$¤ý$~¢ý#{Ÿþ oþ]xþZtþMdÿBVÿ !+ÿ %1ÿBVÿJ`ÿ/>ÿ &ÿ,:ÿH^ÿCWÿ #.ÿ &ÿ9JÿKbÿ9Jÿ &ÿ #.ÿAUÿEZÿ>Qÿ6FÿRkþbþl‹þ"v˜þ#zœþ$~¢ý$£ý$£ý$£ý$~¢ý"v˜ýTmþCWÿ '2ÿ $ÿ (ÿ=Pÿ5Eÿ=Pÿ:Kÿ?Sÿ+8ÿ %ÿ %ÿ0?ÿ6Gÿ (4ÿ9Kÿ@SÿDYÿ %1ÿ %ÿ %ÿ (5ÿ;Mÿ 'ÿ 'ÿ (4ÿ:LÿF[ÿ3Cÿ #.ÿ %ÿ &ÿ:Kÿ,9ÿ %ÿ &ÿ %ÿ 'ÿOfþ#zþ$£ý$~¢ÿ$~¢ø$~¢„$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢d$~¢ì$~¢ÿ$£ý#zýKaþ2BÿH]ÿ=Pÿ.<ÿ !+ÿ $ÿ4Dÿ2Aÿ %ÿ &ÿ $ÿ (5ÿCXÿPÿ/>ÿ>Qÿ.=ÿF[ÿEZÿSlþd€þh†þ"w™þ#zý$~¢ý$£ý$£ý$£ý$£ý$£ý$£ý$£ý$~¢ý$~¢ý$£ý$£ýb~þ4Cÿ *ÿ &2ÿ=Pÿ )ÿ *ÿ1@ÿH^ÿ9Jÿ $/ÿ %ÿ4Dÿ1@ÿ $ÿ 'ÿ*7ÿF[ÿ?Sÿ.<ÿ )ÿ %1ÿ=Oÿ )ÿ &ÿ %ÿ ",ÿAUÿ;Mÿ?Rÿ3Cÿ "-ÿ0?ÿ6Gÿ &ÿ %ÿ 'ÿBUþ"v—þ$£ý$~¢ÿ$~¢õ$~¢}$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Z$~¢è$~¢ÿ$~£ý$| ýf„þ8Hÿ (ÿ %ÿ &ÿ 'ÿ;Mÿ*6ÿ $ÿ 'ÿ (5ÿ>QÿCXÿ-;ÿ )ÿ $ÿ,9ÿ:Lÿ &ÿ %ÿ #.ÿ?RÿDYÿ0?ÿ *ÿ ",ÿ>Qÿ ",ÿ %ÿ &2ÿCXÿBUÿ*8ÿ %ÿDXÿ$~¢ý$~¢ý$£ý nŽþEZÿ )6ÿ2@ÿG\þh†þ"v˜þ#zþ$£ý$¤ý$£ý$~£ý$£ý%¦ýWqþ %ÿ ",ÿb~þ%¦ý$¤ý$£ýQiþBVÿH^ÿ)6ÿ !,ÿTlþ#zþ$~£ý$£ý$¤ý$£ý$£ý$£ý$¤ý$£ý$~¡ý#y›þ q‘þmŒþ"v˜þ$}¡ý$~¢ý$~¢ý$£ý!t–þCWÿQÿ *ÿ &ÿ &ÿ (ÿQÿ #-ÿ %1ÿ9Jÿ>Pÿ@Tÿ3Cÿ $ÿ &ÿ %ÿ-:ÿ7Hÿ *ÿ1@ÿ?RÿBVÿ3Cÿ %ÿ &ÿ )ÿ=Oÿ)6ÿ2Aÿ?Rÿ>Qÿ6Gÿ %ÿ &ÿUnþ$¤ý$~¢ý$£ýQiþQÿF\ÿ*7ÿ &ÿ &ÿ &ÿ7Hÿ/=ÿ $ÿ &ÿ %1ÿ7HÿE[ÿ7GÿUnþ#|Ÿý$£ý$~¢ÿ$~¢ë$~¢g$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢>$~¢Ñ$~¢ÿ$~¢þ$£ýi‡þ3Bÿ $ÿ (5ÿ@Tÿ6Gÿ?Rÿ2Aÿ !+ÿ7Gÿ.=ÿ %ÿ &ÿ %ÿ.<ÿ@Sÿ=Oÿ9Kÿ %0ÿ1@ÿ4Dÿ %ÿ &ÿ 'ÿ=OÿCWÿ8Jÿ $/ÿ (4ÿQÿ !,ÿ #ÿ)6ÿMdÿLcÿYsþ!q’þ9JÿDXÿATÿf„þ$¤ý$~¢ý$}¡ýRjÿ &2ÿ )ÿ7HÿATÿ=OÿZtþ$¤ý$~¢ý$£ý]xþ1?ÿ &1ÿ-;ÿEZÿ=Oÿ %0ÿ 'ÿQÿ*7ÿ2Bÿ4Dÿ %ÿ %ÿ )ÿ@SÿCWÿ7Hÿ #.ÿ *ÿ=Oÿ #-ÿ %ÿ %ÿ !,ÿAUÿCWÿ6Fÿ #.ÿ $ÿ0?ÿ6Gÿ %ÿ &ÿ %ÿ %ÿ@Sÿ oþ$~¢ý$~¢ý$~¢ÿ$~¢á$~¢T$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢+$~¢»$~¢ÿ$~¢þ$¤ý!s“þATþ7HÿF\ÿ6Fÿ #.ÿ %ÿ 'ÿ;Mÿ)6ÿ %ÿ %ÿ #.ÿ=OÿCXÿ+9ÿ 'ÿ $ÿ0?ÿ6Fÿ %ÿ !+ÿ4DÿG]ÿ5Eÿ 'ÿ %ÿ ",ÿ>Qÿ &1ÿ@Rÿ#yœþ$~¢ý$£ý q‘þ (3ÿ $/ÿEZÿ?Sÿ (5ÿ &ÿ6Gÿ3Bÿ*6ÿ?Rÿ4Dÿ=Oÿ3BÿYsþ4DÿF[ÿ=Oÿd€þ$¤ý$~¢ý$}¡ýFZþ %ÿ %ÿ)6ÿI_ÿ9JÿF[þ$~¢ý$~¢ý$£ýc€þ (4ÿ 'ÿ;Mÿ.<ÿ.<ÿ?Rÿ6GÿQÿEZÿ.<ÿ $ÿ &ÿ )ÿ=Oÿ)6ÿ4Cÿ?Rÿ2Aÿ?Rÿ #.ÿ &ÿ &ÿ 'ÿ;Mÿ/=ÿ4Dÿ?Rÿ/=ÿ+8ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ÿ$~¢û$~¢ÿ$£ý#{žýeƒþ4Cÿ $ÿ %ÿ &ÿ *ÿ>Pÿ $/ÿ (ÿ/=ÿ?RÿCXÿ2Aÿ $ÿ &ÿ %ÿ0>ÿ8Iÿ (4ÿ=Pÿ7Gÿ8Iÿ2Aÿ %ÿ &ÿ 'ÿ=OÿAUÿYsþ$~¢ý$~¢ý$€¤ý_zþ #.ÿ8JÿG\ÿ1@ÿ %ÿ %ÿ %1ÿCWÿ@Tÿ*7ÿ %ÿ3CÿQÿ (4ÿ>Qÿ pþ$£ý$~¢ý#{žþPhÿ,9ÿ !+ÿ=Oÿ1@ÿ8JÿMdÿ#{žþ$~¢ý$£ý!p‘þCXÿ7Hÿ;Mÿ )ÿ %ÿ)6ÿG\ÿ6Gÿ *ÿ?Qÿ"v˜þ$¤ý#zþWqþ,9ÿ3Cÿ4Dÿ %ÿ %ÿ #.ÿCXÿ@Sÿ '3ÿ %ÿ !+ÿ>Qÿ #.ÿ %ÿ (4ÿ=PÿG\ÿ (5ÿ %ÿ &ÿ &ÿ8Iÿ-;ÿ %ÿ '3ÿ;Lÿ@TÿCWÿ !+ÿ !+ÿI^þ"w˜þ$£ý$~¢þ$~¢þ$~¢µ$~¢($~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢z$~¢ï$~¢ÿ$~¢ý$~¢ýdþ2Aÿ %ÿ %ÿ $/ÿ>Pÿ )5ÿ:LÿPÿQÿEZÿ+8ÿ %ÿ &ÿ *ÿ>Qÿ4Dÿ?Rÿ/>ÿ #.ÿ>Pÿ ",ÿ &ÿ %ÿ ",ÿCWÿBVÿ.=ÿ (ÿ %ÿ4Cÿ2Bÿ %ÿ %ÿ (ÿ.<ÿDXÿ@Sÿ\wþ$} ý$£ý$~¢ÿ$~¢÷$~¢’$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢R$~¢×$~¢ÿ$~¢þ$¤ý!s•þF[þ !+ÿ (5ÿF[ÿ@Sÿ1@ÿ )ÿ %ÿ8Iÿ-;ÿ %ÿ %ÿ %0ÿ?RÿATÿ $/ÿ %ÿ %ÿ+9ÿ9Kÿ )ÿ4Dÿ=Pÿ8Iÿ=PÿkŠþ$£ý$~¢ý$|ŸýSkþ/>ÿ 'ÿ *ÿ>Qÿ '3ÿ0>ÿ?Rÿ0?ÿ=Pÿ !+ÿ %ÿ,9ÿEZÿÿ!q’þ$£ý$~¢ý#{žýLbþSlÿYsþWpþe‚þ!r“þ#{Ÿý$~¢ý$¤ý$~¢ý$~¢ýh†þ@Rþ %0ÿ %0ÿG\ÿ:Kÿ !+ÿ %ÿ $/ÿ>Pÿ *ÿ &1ÿQÿ *ÿ &ÿ &ÿ (ÿÿQÿ7Gÿ %ÿ &ÿ %ÿ '4ÿ@Sÿ;Mÿ9Kÿ ",ÿ '3ÿPhÿ#yœþ$~¢ý$£ý"w™þATÿ &ÿ &ÿ %ÿ4CÿAUÿ=Pÿ %0ÿ &ÿ:Lÿ-;ÿ)6ÿ@Sÿ+8ÿ=Oÿ+8ÿ %ÿ4Dÿ"t•þ$£ý$£ý!t•þ2Aÿ=Pÿ>Qÿ6Fÿ &ÿ )ÿQÿ8IÿQÿ8Iÿ;Mÿ &ÿ $ÿ *6ÿVoþ#zý$£ý$~¢þ$~¢ÿ$~¢Ã$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢{$~¢ê$~¢ÿ$~¢þ$¤ý#y›þOfþ #-ÿ $ÿ &ÿ (ÿQÿ (4ÿ-:ÿ7Hÿ &ÿ &ÿ %ÿ+8ÿH]ÿ4Dÿ (ÿ %ÿ "-ÿ\wþ$£ý$~¢ý$£ýdþ?Rÿ *ÿ &ÿ &ÿ4DÿG]ÿ &1ÿ %ÿ %ÿ+8ÿATÿ@Sÿ*7ÿ $ÿ,:ÿPÿ,:ÿ/>ÿ9JÿG\þ$~¢ý$~¢ý$~¢ý$~£ý$¤ý$€¤ý$£ý$}¡ý#y›þlŒþ_{þUmþ]xþ!q’þ$}¡ý$~¢ý$¤ý!t•þQÿ7Gÿ8Iÿ &ÿ &ÿ %ÿ &1ÿEZÿ@Tÿ.<ÿ &ÿ 'ÿÿ?SÿATÿ '3ÿ %ÿ %ÿ %0ÿH]ÿ3Bÿ %ÿ &ÿ (ÿQÿ4Dÿ )ÿ9Jÿ+8ÿ %ÿ &ÿ $ÿ $/ÿOgÿg„þ#{žý$£ý$~¢þ$~¢ÿ$~¢Ò$~¢V$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢„$~¢ë$~¢ÿ$~¢þ$¤ý"xšþVnþ7HÿEZÿ2Aÿ (ÿ &ÿ %ÿ.<ÿ7Hÿ &ÿ0>ÿ?Rÿ-;ÿ=Pÿ #-ÿ &ÿ %ÿ &2ÿ nŽþ$£ý$~¢ý#x›þ2Aÿ5Fÿ0>ÿ-;ÿ?Rÿ %0ÿ4Cÿ3Cÿ %ÿ *ÿ;LÿAUÿ6Gÿ &ÿ &ÿ (ÿ=OÿAUÿ.<ÿ!t–þ$£ý$£ý"u—þ1@ÿ %ÿ &ÿ &ÿ;MÿBVÿ (ÿ )6ÿ!s“þ$£ý$£ý"u—þ1?ÿ &ÿ #-ÿ=Pÿ4Dÿ=Oÿ "-ÿ *ÿ>Qÿ $/ÿQiþ$€¤ý$~¢ý$£ýI^þ $ÿ &ÿ %ÿ6GÿF\ÿ.<ÿ &ÿ %ÿ '3ÿ;Mÿ 'ÿ ",ÿ:Kÿ:Kÿ=Oÿ-;ÿ $ÿ %ÿ (5ÿOfþ"w™þ$¤ý$~¢þ$~¢ÿ$~¢ó$~¢˜$~¢#$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢@$~¢¹$~¢û$~¢ÿ$~£ý$£ý"wšþ]yþ*6ÿ $ÿ %ÿ %ÿ/=ÿ9Kÿ3Cÿ=Pÿ %0ÿ )ÿ>Pÿ %0ÿ %ÿ &ÿATÿ#{žþ$~¢ý$£ýl‹þ $/ÿ-:ÿBVÿ>Qÿ &2ÿ $ÿ (4ÿQÿ (ÿ %ÿ $/ÿ?Sÿ@Sÿ/>ÿ !+ÿf„þ$¤ý$~¢ý#|Ÿý=Pÿ #ÿ0>ÿ8Hÿ 'ÿ3Cÿ;Lÿ,9ÿPÿ2Aÿ &ÿ (4ÿ;Mÿ 'ÿ %ÿ )ÿ4CÿH^ÿ1?ÿ $/ÿEZþ mþ$~£ý$£ý$~¢ÿ$~¢þ$~¢É$~¢R$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢l$~¢Ù$~¢ÿ$~¢ÿ$£ý$~¢ý mŒþG\þ '2ÿ $ÿ/=ÿH^ÿ;Lÿ "-ÿ %ÿ (ÿ=Oÿ &2ÿ 'ÿ2Aÿ`|þ$£ý$~¢ý$€¤ýYrþ %ÿ-;ÿG]ÿ )5ÿ %ÿ &ÿ *ÿ=Pÿ:KÿPÿFZþ"v—ý$~£ý$£ý"w™þCVÿ )ÿ &ÿ 'ÿ;Mÿ )5ÿ #.ÿ=Oÿ3Bÿ*6ÿ:Lÿ 'ÿ &ÿ %ÿ %ÿ:LÿXrþi‡þ$}¡ý$£ý$~¢þ$~¢ÿ$~¢ä$~¢€$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%$~¢$~¢ê$~¢ÿ$~¢þ$£ý$~¢ýl‹þH]þCWÿ=Oÿ )ÿ %ÿ &ÿ 'ÿ;Lÿ)6ÿ5EÿYsÿ!r“þ%€¥ý$~£ý$~¢ýBUþ %1ÿ@TÿCXÿ $/ÿ %ÿ &ÿ &ÿ8JÿDYÿ $/ÿ %ÿ %ÿ)6ÿ?Rÿ>Qÿ-;ÿ %ÿ (ÿJ`ÿ$| þ$~¢ý$¤ýe‚þ-;ÿ=Pÿ*6ÿ?Rÿ #.ÿ %ÿ1?ÿ:KÿNeþ$£ý$~¢ý$£ýe‚þBVÿ@Tÿ '3ÿ,9ÿ9JÿMcþjˆþ!s”þ$} ý$£ý$£ý$}¡ýQiþ8Jÿ9Jÿ )ÿ (ÿ=Oÿ '2ÿ %ÿ "-ÿ;Mÿ@Sÿ;Lÿ &ÿ $ÿ %0ÿATþi‡þ$~¢ý$¤ý$~¢þ$~¢ÿ$~¢ñ$~¢¡$~¢2$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢9$~¢¥$~¢ñ$~¢ÿ$~¢þ$£ý$~¢ý"v˜þUnþ,9ÿ 'ÿ $ÿ &ÿ;Lÿ?SÿQÿ.<ÿ:Kÿ,9ÿ %ÿ %ÿ $0ÿCWÿ=Oÿ 'ÿ &ÿ &ÿ *ÿCWÿ9Kÿ 'ÿ &ÿ $ÿ;Lþ#|Ÿý$~¢ý$€¤ýcþ *ÿ8IÿEZÿ2Aÿ %ÿ &ÿ )ÿ;LÿWqÿ$| ý$~¢ý$£ý oŽþ]xþh†þjˆþ"u–þ#|Ÿý$£ý$£ý$£ý$£ý$~£ý pþUnþ4Dÿ )ÿ9Kÿ6Gÿ ",ÿ=Pÿ $/ÿ %ÿ %ÿ !+ÿQÿ #.ÿ &ÿ %ÿ)6ÿG\ÿ6Fÿ &ÿ &ÿ $ÿ9Jÿ#|Ÿý$~¢ý$€¤ý`{þ 'ÿ*7ÿH]ÿ &2ÿ %ÿ &ÿ %ÿ0?ÿRkÿ#xšþ$~¢ý$~¢ý$~¢ý$~£ý$£ý$¤ý$£ý$¤ý$¤ý$£ý#zþ!r“þVoþ+8ÿ7Hÿ.<ÿ $ÿ *ÿ:Lÿ:Kÿ?Rÿ ",ÿ %ÿ $ÿ (ÿ9Iÿdþ!r“þ$~¢ý$¤ý$~¢þ$~¢ÿ$~¢÷$~¢¼$~¢U$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢H$~¢ª$~¢ï$~¢ÿ$~¢ÿ$£ý$¤ý#yœþg„þ^yþ7Hÿ &ÿ $ÿ %ÿ *ÿ>Pÿ>Qÿ5Eÿ 'ÿ %ÿ+8ÿ:Lÿ 'ÿ5Eÿ8Jÿ (ÿ:Kÿ,:ÿ %ÿ !+ÿ=Pÿ4Dÿ>Pÿ !+ÿ &ÿ %ÿH]ÿ$~¢ý$~¢ý$€¤ý\wþ &ÿ5FÿEZÿ4Cÿ &ÿ &ÿ (ÿ;Mÿ@Tÿ!q‘þ$£ý$£ý$£ý$¤ý$£ý$} ý"v˜þi‡þe‚þTlþ5Eÿ1?ÿ>Qÿ %0ÿ;Mÿ (5ÿ %ÿ %ÿ ",ÿ>QÿBVÿ !+ÿ (4ÿASþ`{þ"w™þ$£ý$£ý$~¢ÿ$~¢ÿ$~¢õ$~¢¹$~¢V$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢?$~¢œ$~¢å$~¢ÿ$~¢ÿ$~¢þ$¤ý$~¢ý!s”þþ>Pþ (4ÿ *ÿ@Sÿ;Mÿ )ÿ &ÿ %ÿ $0ÿ=Pÿ0>ÿ>Qÿ ",ÿ %ÿ0?ÿ6Gÿ &ÿ5Eÿ7Hÿ (ÿ;Mÿ,9ÿ $ÿ.<ÿi‡þ#zþ#|Ÿý$}¡ýkŠþ8Iÿ>Pÿ*7ÿ?Rÿ $0ÿ %ÿ '3ÿ=Pÿ/=ÿ nŽþ$} ý!t•þ oþa}þH]þCWÿG]ÿ &2ÿ9Jÿ,:ÿ #ÿ %ÿ1@ÿ?Rÿ@Tÿ #.ÿ %ÿ $ÿ %ÿ/=ÿVpÿþ oþ$}¡ý$¤ý$~£þ$~¢ÿ$~¢ÿ$~¢í$~¢ª$~¢M$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢.$~¢$~¢Ñ$~¢ú$~¢ÿ$~¢ÿ$£ý$€¤ý$} ý pþ^yþþ7Gÿ )ÿ $ÿ $ÿ )ÿ@SÿCXÿ (5ÿ %ÿ %ÿ '2ÿ=Oÿ+8ÿ?Rÿ #-ÿ %ÿ/=ÿ8Iÿ 'ÿ=Oÿ=Pÿ2AÿEYÿLbÿÿ>Pÿ-;ÿ #ÿ &ÿ8Iÿ6Gÿ=Pÿ &1ÿ %ÿ &ÿ 'ÿ7HÿCWÿ #-ÿ )5ÿQÿCWÿ-;ÿ %ÿ &ÿ #.ÿ>Qÿ1?ÿ=Oÿ )ÿ #ÿ $0ÿ=Oÿ &1ÿ>Pÿ %0ÿ %ÿ #.ÿ?Rÿ)6ÿ>Pÿ &1ÿ %ÿ &ÿ7Hÿ7Gÿ>Qÿ #.ÿ &ÿ %ÿ #-ÿAUÿATÿ (ÿ $ÿ (ÿ %1ÿ;Mÿ_zþb~þ!q’þ$| ý$¤ý$£ý$~¢þ$~¢ÿ$~¢ÿ$~¢í$~¢·$~¢f$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢.$~¢s$~¢¼$~¢ì$~¢ÿ$~¢ÿ$~¢ÿ$£þ$¤ý$£ý#{žý!r’þ nþUnþÿ %ÿ 'ÿ *ÿ #.ÿATÿG]ÿ8IÿCWþPhþ^yþ mŒþ#yœþ$| ý$£ý$€¤ý$£ý$~¢þ$~¢ÿ$~¢ÿ$~¢þ$~¢ê$~¢À$~¢€$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢)$~¢^$~¢š$~¢Í$~¢î$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~£þ$£ý$€¤ý$£ý$~¢ý#|Ÿý"xšþ!s”þl‹þ mŒþjˆþZtþRjþOfþKaþMdþ\wþG\þBUþDXþG[þLbþa}þþXqþ^yþe‚þkŠþ"u–þ#zý#{Ÿý$~¢ý$¤ý$€¤ý$£ý$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ò$~¢Ô$~¢£$~¢h$~¢1$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$~¢e$~¢—$~¢Ã$~¢â$~¢ö$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$£þ$£ý$£ý$£ý$€¤ý$€¤ý$¤ý$£ý$£ý$~¢ý$~¢ý$~¢ý$~£ý$£ý$£ý$£ý$¤ý$€¤ý$€¤ý$¤ý$¤ý$£þ$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ø$~¢æ$~¢É$~¢Ÿ$~¢m$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$$~¢E$~¢k$~¢‘$~¢³$~¢Î$~¢â$~¢ð$~¢ù$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ú$~¢ò$~¢å$~¢Ò$~¢¸$~¢—$~¢q$~¢K$~¢)$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢#$~¢8$~¢O$~¢e$~¢z$~¢$~¢ž$~¢©$~¢¸$~¢½$~¢À$~¢Å$~¢Ç$~¢Ç$~¢Å$~¢Á$~¢½$~¢º$~¢«$~¢Ÿ$~¢$~¢|$~¢h$~¢R$~¢;$~¢&$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢ $~¢$~¢$~¢ $~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢(€ ;;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢*$~¢5$~¢>$~¢C$~¢G$~¢G$~¢D$~¢?$~¢7$~¢+$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$~¢X$~¢{$~¢š$~¢´$~¢É$~¢Ø$~¢ã$~£ê$£ï$£ð$£ò$£ò$£ñ$£ï$£ê$~¢ä$~¢Ù$~¢Ë$~¢·$~¢$~¢~$~¢[$~¢9$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢M$~¢‚$~¢³$~¢×$£ï$¤û$€¤ÿ$£ÿ$£ÿ$}¡ÿ#{žÿ#zÿ"xšÿ!t•þ!q’þ!r“þ"t–þ!q’þ!s”þ"v˜ÿ#zÿ#{žÿ$}¡ÿ$£ÿ$£ÿ$¤ÿ$¤ü$£ñ$~¢Û$~¢·$~¢‡$~¢R$~¢$$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢0$~¢n$~¢®$~¢Þ$£ø$€¤ÿ$£ÿ$} ÿ"v—þkŠþa}þc€þOfþ>Pþ7GÿG\ÿ=Oÿ *6ÿ '3ÿ7Hÿ>Qÿ (4ÿ )6ÿ5EÿJ`ÿ8Iÿ=OþI^þa}þb~þjˆþ!t–þ#|Ÿÿ$£ÿ$€¤ÿ$£ù$~¢â$~¢´$~¢u$~¢6$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢'$~¢m$~¢·$~¢ê$¤þ$¤ÿ$| ÿ!q’þ`{þQiþTlÿ2Aÿ #.ÿ *ÿ;Mÿ (5ÿ #ÿ $ÿ6Gÿ2Aÿ $ÿ $ÿ2Bÿ8Iÿ &ÿ $ÿ,9ÿQÿ "-ÿ 'ÿ '3ÿJ_ÿYsþf„þ"x›ÿ$~£ÿ$£ÿ$~¢æ$~¢§$~¢P$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢^$~¢»$~¢ô$¤ÿ#|Ÿÿ!p‘þ`|þ7Gÿ #-ÿ *ÿ=Oÿ (5ÿ %ÿ !+ÿ8Iÿ6Fÿ !+ÿ %1ÿ2Bÿ0?ÿ+9ÿ*6ÿ.=ÿ)5ÿ1@ÿ-;ÿ,:ÿ+8ÿG\ÿATÿ?Qÿ3Bÿ0?ÿ &2ÿ3Cÿ.<ÿ,9ÿ (ÿ4Dÿ:Kÿ &2ÿ $ÿ #.ÿ>Qÿ $0ÿ !,ÿ2AÿWpþ pþ#{žÿ$¤ÿ$£÷$~¢Ã$~¢h$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢c$~¢Æ$£ú$¤ÿ#yœþ_zþQÿ %0ÿ $ÿ *ÿ9Jÿ6Gÿ "-ÿ '3ÿ?RÿBVÿ4Dÿ/=ÿ+8ÿ *ÿ6Fÿ8Iÿ $0ÿ 'ÿ5Eÿ:Lÿ !+ÿ *ÿ`|þ$~¢ý!s”þATÿ7Hÿ8Iÿ $/ÿ $/ÿ3Cÿ/>ÿ-;ÿ+8ÿ-:ÿ *ÿ5Eÿ8Jÿ %1ÿ $ÿ *ÿQÿ )ÿ %ÿ.<ÿQÿ,9ÿ %ÿ *ÿ>Qÿ/=ÿ,:ÿ!q’þfƒþG[ÿ+8ÿ2Aÿ %0ÿ &ÿ.=ÿ>Qÿ !+ÿ+8ÿOeþ!t•þ$¤ÿ$£ù$~¢¸$~¢D$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢‚$~¢è$£ÿ"x›þZtþKaÿ-:ÿ $ÿ %ÿ2Aÿ4Dÿ8Iÿ9Jÿþh†þ#zþ%€¤ý$€¤ý#yœýk‰þa}þJ`ÿ1@ÿG\ÿ3Bÿ5Eÿ &2ÿ5Eÿ $0ÿ5Eÿ1@ÿ0?ÿ ",ÿ5EÿÿKbÿ"v˜þ$¤ýh†þ0?ÿ #ÿ &2ÿ=Pÿ-;ÿ !+ÿ4Dÿ/>ÿ3Bÿ/=ÿ,9ÿ %0ÿ nŽþ#zý1?ÿ #ÿ.<ÿÿ *ÿ5Eÿ (ÿ #-ÿ9Kÿ7Gÿ 'ÿ3Bÿ`{þ$| ÿ$£ÿ$~¢Ï$~¢S$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ì$¤ÿ!r“þXqþQÿ )ÿ &ÿ9Jÿ7Hÿ (ÿ)6ÿÿ0>ÿ %ÿ #ÿ.<ÿXqþ p‘þ$£ÿ$~¢ò$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢+$~¢±$£ý$}¡ÿ`|þ0>ÿ "-ÿ>Qÿ4Dÿ ",ÿ/=ÿ2Bÿ &ÿ,:ÿ@Sÿ*6ÿ $ÿRjþ$€¤ý#zý>Qÿ4Dÿ )ÿ #-ÿ>Qÿ2Bÿ-;ÿ+8ÿ;Mÿ0?ÿ '3ÿ3Cÿ.<ÿ4Cÿ5Fÿ #.ÿ1@ÿ9Jÿ+8ÿÿ?RÿUnþ pþI_ÿ &1ÿ*7ÿCWÿ.<ÿ (4ÿ>QÿAUÿ nŽþ$~¢ý$~£ý$¤ý%€¥ý$£ý#{Ÿý#y›þ!q’þ!p‘þ oþþ4DÿAUÿ %0ÿ %1ÿh†þ$£ýZtþRkþ"w™þ$¤ý#|Ÿý\wþ@Sÿ '4ÿ #ÿ,:ÿ/=ÿ/=ÿ9KÿRjÿ"v˜þ$~¢ýg„þ.<ÿ %1ÿ4Dÿ>Qÿ (4ÿG[þ"x›þ$£ÿ$~¢°$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢£$£þ$} þMdþ 'ÿ $ÿ*7ÿ0?ÿ,:ÿ3Cÿ?Rÿ-:ÿ 'ÿ (4ÿ!q‘þ$€¤ýl‹þfƒþ$£ý$}¡ýUnþ 'ÿ &2ÿ>Qÿ6Gÿc€þ$€¤ý"w™þH]ÿ9Jÿ4CÿFZÿPgþkŠþ#yœþ$£ý#zþBVÿ6GÿÿPÿ:Kÿ:KÿTlÿKaþATÿ.<ÿ/=ÿBWÿ.<ÿWpþ$€¤ý$£ý$¤ý nŽþ@Sÿ1@ÿ $ÿ.<ÿ:Lÿ4Dÿ8Jÿ*7ÿ*7ÿjˆþ$£ý$~¢ýbþ@Sÿ &1ÿ &ÿ,:ÿ+9ÿ $ÿ )ÿ2AÿUnþ"w™þ$£ÿ$~¢­$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£ü#yœþFZþ 'ÿ6Fÿ6Gÿ:Lÿ^zþ$~¢ýkŠþ )5ÿ &1ÿ0?ÿ !+ÿ=Oÿ#zœþ$€¤ýXrþ3Bÿ6Fÿ!t–þ$€¤ý oþF[ÿ7Hÿ $/ÿ@Tÿ"v˜þ$£ý$~¢ý$€¤ý$£ý"u—þg…þPgþG]ÿ?Rÿ.<ÿ?RÿQÿPÿjˆþ%€¥ý$~¢ý mþ7Gÿ *ÿ9Kÿ3Bÿ;Lÿ7Gÿ (ÿ+8ÿ4Dÿb~þ$¤ý$~¢ýZtþ/=ÿ1@ÿ %ÿ %ÿ3Cÿ*7ÿ-;ÿ7Hÿ>Qÿ %0ÿ?Qþ"w™þ$£ÿ$~¢¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢{$~¢ù$~¢þOfþ &ÿ $ÿ )5ÿ/>ÿ #.ÿKaþ#{Ÿý$£ýþ,9ÿ4Dÿ $ÿ8Hÿ#|Ÿý$£ýUnþ?Rÿ1?ÿQiþ$}¡ý$~£ýdþ2Aÿ6GÿCWÿk‰þ$£ý!r“þdþK`þF[ÿ@Sÿ2Bÿ=Pÿ:LÿDXÿBVÿBVÿEZÿDXÿEZÿATÿCWÿDXÿ?SÿCXÿEYÿBUÿDXÿDYÿEYÿ=Oÿ>Qÿ>Pÿÿ (4ÿ-;ÿ )ÿ*7ÿ>Qÿ6Fÿ>Pÿ.<ÿ1@ÿ %ÿ %ÿDWþ#zþ$£ý$~¢Ž$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢_$~¢ò$} ÿZtþ>Qÿ/=ÿ %0ÿ ",ÿ5Eÿ )ÿ )ÿXqþ$£ý$}¡ýXrþ?Sÿ/=ÿH^þ$~¢ý$}¡ýATþ5Eÿ )5ÿ:Kÿg…þ$£ý#|ŸýMdþ5Eÿ0?ÿNdþNeÿBVÿ@Tÿ5Eÿ>Qÿ;LÿF[ÿDYÿDYÿ>Qÿ9Kÿÿ6Gÿ4DÿOgÿQÿ8Iÿ`|þ$~¢ý$~¢ý#{žý$~¢ýc€þ?Rÿ8Iÿ4DÿPÿ.<ÿ )ÿ )6ÿl‹þ$€¤ý"u—þLbÿ,:ÿVnþ$¤ý#{žýDXÿ7Gÿ *ÿ.<ÿ7Gÿl‹þ"v˜þSkþCXÿ6Fÿ=Pÿ4DÿQÿ5Eÿ3BÿPhÿ#{žþ$¤ý oŽþ *6ÿTlþ%€¥ý"v˜þ=Pÿ=Pÿ4Dÿ?Rÿ6GÿWpþH^ÿ0?ÿ7Hÿ4DÿQÿDXÿATÿAUÿÿ,9ÿ $ÿ #-ÿ^yþ$£ÿ$~¢Ø$~¢-$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢ $£ÿ!t•þJ`ÿ-;ÿ &1ÿ *ÿ2Bÿ '3ÿ $ÿ (ÿ5Eÿ "-ÿ #.ÿ5FÿXrþ#| ý$~¢ýZtþeƒþ%€¥ý pþ2Aÿ2Aÿ !+ÿ7Hÿ)6ÿÿ %1ÿ #-ÿZtþ$}¡ý$£ý pþOfþ9Jÿ;Lÿ (5ÿ #ÿ )ÿ5Eÿ *ÿ &ÿ )ÿ@Sÿ!s•þ$£ÿ$~¢³$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢j$~£ù#zœþ?Qþ+9ÿ=Oÿ2Aÿ4Dÿ9Jÿ9Jÿ '3ÿ !,ÿ1@ÿ (5ÿ #ÿ (4ÿ3Bÿ\vþ$£ý$}¡ý#|Ÿý$£ý mŒþ>Pÿ=Oÿ6Gÿ?Rÿ6Fÿ>Qÿ9KÿBVÿDYÿ@Sÿ3CÿDXþe‚þ#zý$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý#|ŸýkŠþPgþDXÿCXÿDYÿ:Kÿÿ4Dÿ8Iÿ!r“þ$€¤ý nþ:Kÿ9Kÿ8Iÿ6Fÿ?SÿUnþ$~¢ýi‡þ $.ÿ &ÿ4Dÿ *ÿ %ÿ+8ÿ7Gÿ,9ÿ2Aÿÿ2Aÿ8Iÿ4Cÿ!q‘þ$£ý$~¢ý$€¤ý`|þ0>ÿ/=ÿ/=ÿ5Eÿ7Hÿ;MÿDYÿ?Sÿ5FÿBVþfƒþ#| ý$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$}¡ý mþNeþAUÿEZÿCXÿ=Oÿ?Rÿ7HÿJ`ÿh†þ$£ý"w™þUoþ,9ÿ $/ÿ3Bÿ,9ÿ"u–þ$| ýPÿ2BÿJ_ÿ#zý$~£ý$¤ý mŒþDXÿ8Iÿ>Qÿ;NÿCWÿDYÿQÿ8Hÿ4CÿFZÿ!s”þ%€¥ý$£ý#zþ"wšþ#|Ÿý$¤ý$£ýi‡þ+8ÿ2Bÿ ",ÿ $.ÿ^yþ$~¢ý!t•þDXþ:Lÿ0?ÿ>Qÿ@SÿDYÿ2AÿJ`þ!t•þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý"xšþXqþDXÿEYÿCWÿQÿ_zþ#{žý$} ý nŽþiˆþ"xšþ$£ý#yœý7Hÿ2Bÿ #.ÿ #ÿ.<ÿ*6ÿ $ÿ #.ÿWpþZtþ*7ÿ.<ÿ:LÿJ`ÿ"u—þ$£ý$~¢|$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$$~¢×$£ÿRjþ &ÿ+8ÿ1@ÿ5Eÿ!t•þ%€¤ý!q’þJ`þ>QÿEZÿPhÿe‚þ$}¡ý$¤ý_zþ>Qÿ6Fÿ4DÿI_ÿcþMdÿ6Gÿ>Qÿ>PÿEYÿ=Oÿ7Hÿ^zþ$}¡ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$~¢ýi‡þDXÿCXÿ?SÿQÿ9KÿPhÿc€þ!r’þmŒþ^yþ:Kÿ9Jÿ>Pÿ1@ÿ6GÿF[ÿ`{þ#{Ÿþ$€¤ý$¤ý$€¤ýi‡þ;Mÿ ",ÿ $ÿ $/ÿg„þ$£ÿ$~¢£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢8$~¢é$} ÿVpþ6Fÿ/>ÿ+9ÿH]þ$~¢ý"v—þ7Gÿ+8ÿ5Fÿ !,ÿ #-ÿ7Hÿ $/ÿ;Lÿ#{žý$} ýNeÿ5Eÿ1@ÿ>Pÿ8Iÿ>Pÿ@TÿDXÿ6FÿEYþ"u—þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý#zýSlþAUÿCWÿ>Qÿ0?ÿ5Eÿ (5ÿ8Iÿ '2ÿ5Eÿ (ÿ-;ÿ*7ÿ !+ÿKaþ!t•þ$~¢ý$£ý#zœýa}þ!t•þ$¤ýPgþ (ÿ !+ÿ &2ÿQhÿ$| þ$~¢ò$~¢K$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢¢$¤ÿdþ )5ÿ:Lÿ/=ÿ-;ÿg„þ%€¥ý]xþ1@ÿ4Cÿ>Qÿ8Iÿ2AÿQÿ?Rÿ9Jÿ=Oÿ2AÿQÿ@TÿCXÿ5EÿKaþ#zý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢þ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýZtþATÿBVÿ=Pÿ/>ÿ8Hÿ-;ÿ:Lÿ;Lÿdþ#zþ$¤ý$¤ý$£ý"w™þCWÿ)5ÿ (5ÿ>Qÿ mþ%€¥ý\wþ3Cÿ-;ÿ #ÿ4Cÿ"w™þ$~£÷$~¢T$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢£$¤ÿf„þ %0ÿ )ÿ )ÿ.<ÿDYÿ#y›ý#zýDXÿ1@ÿ !+ÿ $/ÿ9Jÿ*6ÿ+8ÿ;NÿEYÿ#{žý"xšýDXÿ:Kÿ3Cÿ=OÿEZÿ8HÿH]þ#zý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ý$~¢õ$~¢ý$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýZtþBVÿDXÿ>Qÿ>Pÿ5EÿZtþ nŽþ$~¢ý$£ý#|Ÿý`{þ oþ$~¢ýI^þ #ÿ &2ÿ1@ÿQÿ9Jÿ3Bÿ:Kÿ;Nÿ-;ÿ8Iÿfƒþ%€¥ýe‚þ-;ÿÿ*6ÿa}þ%€¥ýi‡þ/=ÿ+8ÿ1@ÿOfÿ#zþ$~¢ô$~¢K$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢’$¤ÿdþ #.ÿ2Aÿ/>ÿ )ÿ (ÿ*7ÿ q‘þ%€¥ý]xþ*7ÿ3Cÿ 'ÿ !+ÿ4Dÿ (ÿCVþ#{žý$}¡ýUnþ7HÿPÿ/>ÿ-;ÿATÿ!t–þ$¤ý$} ý!p‘þh†þh†þ!t•þ$~¢ý$€¤ý l‹þ;Mÿ?Rÿ;MÿF[ÿ1@ÿZtþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢¥$~¢ÿ$~¢ÿ$~¢°$~¢$~¢$~¢$~¢$~¢!$~¢á$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýh†þCWÿEZÿ;Mÿ3Cÿa~þ$£ýjˆþPÿ8Iÿ0>ÿ.<ÿ0>ÿ>Qÿ.<ÿ %1ÿ8Iÿ nþ$£ý$€¤ý$€¤ý$€¤ý%€¥ý#|ŸýdþG]ÿ1@ÿQÿBWÿ>PÿEZÿ!t•þ$| ýRjþ.<ÿ*7ÿVoþBUþ2Aÿ=Pÿ;Mÿ4DÿDXÿQiÿ=Oÿ3Bÿ2Aÿ1@ÿ2AÿVpþ$~¢ÿ$~¢Ñ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢=$~£ð"w™þ1@ÿ $/ÿ6Gÿ $/ÿ $ÿ %ÿ )5ÿ2Bÿ 'ÿ $ÿ4Dÿ]yþ nŽþ"t•þ pþYrþH^þ-:ÿ0?ÿ;MÿBVÿ@Sÿ5Dÿ pþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢õ$~¢D$~¢$~¢$~¢$~¢$~¢$~¢E$~¢ö$~¢ù$~¢O$~¢$~¢$~¢$~¢$~¢$~¢³$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"w™þG\ÿEZÿQÿf„þ$€¤ý`{þ?Sÿ8Iÿ-;ÿ8Iÿ-;ÿ (ÿ &1ÿ5Eÿ )ÿ %ÿ %ÿ !,ÿ5Fÿ (4ÿ 'ÿþ$€¤ÿ$~¢œ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ç$~¢ÿþ5Fÿ,9ÿ.<ÿ9Jÿ@Sÿ8Iÿ3Cÿ1?ÿ;Mÿ1@ÿ *ÿ '3ÿ2Aÿ )ÿ3Bÿ=Oÿ6Fÿ:Kÿ1@ÿCXÿ@SÿQÿLbÿ#|Ÿý#y›ýTmþ?Qÿ8IÿQÿ,:ÿ $/ÿ*7ÿ7Hÿ ",ÿ $ÿ ",ÿ5Eÿ #.ÿ '3ÿ>Pÿ:Lÿ2Aÿ9Jÿ &2ÿ=Pÿÿ '2ÿ+8ÿ3Bÿ@Sÿ9Jÿ4Dÿ4Dÿ4CÿAUÿ"v—þ$£ø$~¢O$~¢$~¢$~¢$~¢$~¢$~¢$~¢v$¤ÿeƒþ !+ÿ %ÿ*7ÿ4Dÿ !+ÿ $ÿ)5ÿ5Eÿ $/ÿ)6ÿ:Kÿ@Sÿ2Aÿ-;ÿ5Eÿ !+ÿ9Jÿ:Lÿ;Mÿ=PÿBVÿ=Oÿ#yœý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þZuÿVpÿVpÿVpÿUoÿj‰þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢j$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢^$~¢f$~¢$~¢$~¢$~¢$~¢$~¢$~¢G$~¢÷$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýa}ÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýOfþ@TÿATÿ>Pÿ.<ÿDXÿ4Dÿ9Jÿ?Rÿ,9ÿ,:ÿ4Dÿ 'ÿ $ÿ (ÿ3Cÿ*7ÿ &ÿ (ÿ "-ÿ6Gÿ5Eÿ_{þ$¤ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢±$¤ÿRjþ %ÿ %ÿ &ÿ,:ÿ8Jÿ+8ÿ0>ÿ=Oÿ@Sÿ0?ÿ &2ÿ3Bÿ*7ÿ )ÿ:Lÿ:Lÿ5Fÿ5Eÿ;LÿDYÿ3Bÿþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýb€þUoÿVpÿVpÿVpÿUoÿe‚þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ô$~¢@$~¢$~¢$~¢$~¢+$~¢$~¢$~¢$~¢&$~¢*$~¢$~¢$~¢$~¢$~¢$~¢$~¢0$~¢ì$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýa~ÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýjˆþAUÿ@Sÿÿ.<ÿ %ÿ '3ÿ>Qÿ7Gÿ3Cÿ5Fÿ*7ÿ@Tÿ;MÿDYÿ7Gÿ"v—þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!oþWqÿVpÿVpÿVpÿVpÿUoÿbÿ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Þ$~¢$~¢$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ü$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýa~ÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{ŸýKaÿEYÿ?Qÿ1@ÿ9Jÿ9Kÿÿ;Mÿ1@ÿ *ÿ %ÿ1@ÿ"xšÿ$~£ê$~¢.$~¢$~¢$~¢$~¢$~¢F$£ö!t–þ;Mÿ6Fÿ=Oÿ (4ÿ )ÿ &ÿ (4ÿ4Dÿ !+ÿ !,ÿ:Lÿ9Jÿ4Cÿ4Dÿ3Bÿ !+ÿ=Pÿ8Iÿ:KÿCWÿ:LÿOeþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zœþ]yÿVoÿVpÿVpÿVpÿVpÿUoÿbÿ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢½$~¢ $~¢$~¢$~¢$~¢Ã$~¢+$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢É$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýa~ÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý`{þ>QÿAUÿ@Sÿ-;ÿ3Cÿ2Aÿ8Iÿ@Sÿ)6ÿ (ÿ,9ÿ1?ÿ (ÿ )ÿ+8ÿ=Pÿ3Bÿ2Bÿ4Dÿ4DÿQÿ6Gÿ1@ÿ:Kÿ &2ÿ (ÿ:Lÿ9Kÿ4Dÿ6Fÿ>PÿCXÿ1@ÿiˆþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýiˆþVpÿVpÿVpÿVpÿVpÿVpÿUoÿbÿ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢“$~¢$~¢$~¢$~¢<$~¢í$~¢R$~¢$~¢$~¢$~¢$~¢$~¢$~¢3$~¢$$~¢$~¢$~¢$~¢±$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýb~ÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!t•þDYÿCWÿ;Mÿ9Jÿ>Qÿ #.ÿ3Cÿ.<ÿ1@ÿ:Lÿ?Rÿ (5ÿ (ÿ $0ÿ5Eÿ %1ÿ %ÿ &ÿ !+ÿ5Eÿ7Hÿ_zþ$¤ÿ$~¢Œ$~¢$~¢$~¢$~¢$~¢¢$€¤ÿTmþ %ÿ %ÿ &ÿ+9ÿ=Pÿ5Fÿ5Eÿ0?ÿ1@ÿ5Fÿ 'ÿ &2ÿ:Lÿ5Eÿ5Fÿ5Fÿ+8ÿATÿ:LÿCWÿ;Mÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þZtÿVpÿVpÿVpÿVpÿVpÿVpÿUoÿc€ÿ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢f$~¢$~¢$~¢$~¢d$~¢ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢n$~¢E$~¢$~¢$~¢$~¢–$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¡ýOfþBVÿ@Sÿ3Bÿ6Gÿ:Lÿ;Lÿ )ÿ #.ÿ7Hÿ,:ÿ2Aÿ9Jÿ?Sÿ0>ÿ *ÿ &ÿ #-ÿ4Dÿ-;ÿ %ÿI_þ$£ÿ$~¢·$~¢$~¢$~¢$~¢$~¢Æ$~¢ÿUnþ1@ÿ/>ÿ4Cÿ4Dÿ0?ÿ9Kÿ-;ÿ %ÿ %ÿ/=ÿ7Gÿ3Cÿ:Kÿ5Eÿ )ÿ;Mÿ9Jÿ7HÿDXÿ8JÿOfþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýc€þUoÿVpÿVpÿXsÿ\wÿVpÿVpÿUoÿc€ÿ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ò$~¢=$~¢$~¢$~¢$~¢‘$~¢ÿ$~¢°$~¢$~¢$~¢$~¢$~¢$~¢$~¢¦$~¢`$~¢$~¢$~¢$~¢z$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý`|þ@Sÿ?RÿATÿ,9ÿ5Eÿ3Cÿ5Fÿÿ5Eÿ7Hÿ>Qÿ0?ÿ *ÿ $ÿ9Jÿ#|Ÿÿ$~¢×$~¢$~¢$~¢$~¢!$~¢á#{žÿG\ÿ6Fÿ=Pÿ*7ÿ 'ÿ %ÿ *ÿ3Cÿ.<ÿ*7ÿ5Eÿÿ7Hÿ,:ÿ1@ÿ4Dÿ3Bÿ?Rÿ"xšÿ$~£í$~¢1$~¢$~¢$~¢:$£ñ!t•þ+7ÿ $ÿ &1ÿ5Eÿ+8ÿ (ÿ $/ÿ2Aÿ@Sÿ;Mÿ #.ÿ (ÿ4Dÿ4Dÿ7Hÿ:Kÿ (4ÿ@Sÿ8IÿF[ÿ5Eÿ!t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zþ^zÿVoÿVpÿVpÿZuÿ"w™þh†þUoÿVpÿUoÿc€ÿ$~¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢º$~¢$~¢$~¢$~¢$~¢Ý$~¢ÿ$~¢ñ$~¢<$~¢$~¢$~¢$~¢$~¢5$~¢ò$~¢•$~¢$~¢$~¢$~¢D$~¢ö$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žýF[ÿCWÿPÿ8Iÿ1@ÿ '4ÿ2Aÿ0?ÿ (ÿ %ÿ %ÿ $/ÿ8Iÿ>Pÿ pþ$£ù$~¢N$~¢$~¢$~¢U$£ûl‹þ #.ÿ $ÿ &ÿ &1ÿPÿ7Gÿ)6ÿ !+ÿ0?ÿ/=ÿ '3ÿ7Hÿ?Rÿ &2ÿ1?ÿ?Rÿ2BÿCWÿ>Pÿ>Pÿ#|Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýj‰þVpÿVpÿVpÿVpÿ kŠþ$£ýg…þUoÿVpÿUoÿcÿ$~¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢?$~¢ó$~¢þ$~¢ÿ$~¢|$~¢$~¢$~¢$~¢$~¢s$~¢ÿ$~¢¯$~¢$~¢$~¢$~¢.$~¢ë$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýRjþCXÿ;Lÿ?Sÿ '2ÿ:Kÿ7Hÿ0?ÿ6Gÿ &2ÿ 'ÿ,9ÿ@Sÿ=Pÿ/=ÿ #.ÿ (ÿ)6ÿ5Fÿ)6ÿ !+ÿdþ$¤ÿ$~¢k$~¢$~¢$~¢o$£ÿj‰þ4Cÿ,9ÿ2Bÿ4Dÿ-;ÿ-;ÿ6Fÿ $0ÿ %ÿ &2ÿ?Rÿ>Pÿ $0ÿ '3ÿ;Mÿ6Fÿ8Iÿ8IÿDYÿ7HÿKaþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"v˜þZuÿVpÿVpÿVoÿ_{ÿ#zþ$£ýg…þUoÿVpÿUoÿcÿ$~¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢b$~¢$~¢$~¢$~¢h$~¢þ$~¢ý$~¢ÿ$~¢Õ$~¢($~¢$~¢$~¢"$~¢Ï$~¢ÿ$~¢Ç$~¢$~¢$~¢$~¢$~¢Û$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿi‡þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý_zþCWÿAUÿ5Eÿ?Rÿ/>ÿ !+ÿ=OÿQÿ )5ÿ 'ÿ %ÿZtþ$€¤ÿ$~¢†$~¢$~¢$~¢†$£ÿe‚þ:Lÿ>Pÿ4Dÿ *ÿ $ÿ $ÿ %0ÿ:Kÿ7Hÿ4Dÿ '3ÿ1?ÿ/=ÿ/>ÿ=Oÿ0?ÿ4Dÿ=PÿBUÿ6GÿYsþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýdþUoÿVpÿVpÿWrÿ!q‘þ$£ý$~¢ýg…þUoÿVpÿUoÿcÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ñ$~¢:$~¢$~¢$~¢$~¢•$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢Ç$~¢j$~¢h$~¢Â$~¢þ$~¢ÿ$~¢Û$~¢$~¢$~¢$~¢$~¢Ç$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýbÿUoÿVpÿUoÿh‡þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýi‡þ=PÿDYÿ5Eÿ8Iÿ5Fÿ8Iÿ-;ÿ !+ÿ5EÿBVÿ3Cÿ (ÿ %ÿ (4ÿ6Gÿ,9ÿ+9ÿ3Cÿ4Dÿ.<ÿXqþ$¤ÿ$~¢$~¢$~¢$~¢š$¤ÿTlþ &ÿ *ÿ/=ÿ4Dÿ &1ÿ %0ÿ1@ÿ5Fÿ8Iÿ0>ÿ $.ÿ )5ÿ@Tÿ7Gÿ !+ÿ=Pÿ6Gÿ;MÿEYÿ0?ÿdþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þWrÿVpÿVpÿUoÿdþ$}¡ý$~¢ý$~¢ýg…þUoÿVpÿUoÿdÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ù$~¢$~¢$~¢$~¢ $~¢¿$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢þ$~¢þ$~¢ÿ$~¢þ$~¢ÿ$~¢ë$~¢.$~¢$~¢$~¢$~¢¯$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿUoÿh‡þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý q‘þBVÿ@Sÿ@Sÿ0>ÿ-;ÿ?Rÿ0?ÿ '4ÿ5Eÿ (5ÿ.<ÿ5Eÿ6Gÿ6Gÿ ",ÿ %ÿ %ÿ 'ÿ-:ÿ=OÿXrþ$£ÿ$~¢°$~¢$~¢$~¢ª$¤ÿKaþ #ÿ %ÿ (ÿ0?ÿ@Tÿ?Rÿ+8ÿ &ÿ (4ÿ_zþ nþi‡þ>Pÿ3Cÿ5Fÿ7Hÿ8Iÿ=PÿEYÿ0?ÿl‹þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ýiˆþUoÿVpÿVpÿZuÿ"v˜þ$~£ý$~¢ý$~¢ýg…þUoÿVpÿUoÿdÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¶$~¢$~¢$~¢$~¢!$~¢ß$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ö$~¢D$~¢$~¢$~¢$~¢”$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿUoÿh†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"v˜þDYÿE[ÿ8Iÿ7HÿQÿ9JÿEZÿ3Bÿ!r’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!pþWqÿUoÿVpÿ kŠþ$~¢ý$~¢ý$~¢ý$~¢ýg…þUoÿVpÿUoÿd‚ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢‹$~¢$~¢$~¢$~¢B$~¢ô$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢^$~¢$~¢$~¢$~¢x$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿUoÿh†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zœýDXÿDYÿ:Kÿ6Gÿ8Jÿ1?ÿ5Eÿ )5ÿÿ?Rÿ@Sÿ2Aÿ )ÿ "ÿ=Oÿ$}¡ÿ$~¢Ç$~¢$~¢ $~¢½$~¢ÿXqþ=Oÿ?Rÿ,:ÿ 'ÿ $ÿ %ÿ*6ÿBVÿ nŽþ$£ý$~¢ý$~¢ý#{žýPÿ6Gÿ?Rÿ '3ÿ@Tÿ:LÿCXÿ5Eÿ"xšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿUoÿd‚ÿ$~¢ý!r“þ_{ÿ]xÿ mŒþ$}¡ý$~¢ÿ$~¢Ö$~¢$~¢$~¢$~¢ $~¢Â$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢±$~¢$~¢$~¢$~¢,$~¢é$~¢ÿ$~¢ý#zý#{žý$~¢ý$~¡ýc€ÿUoÿVpÿUoÿh†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýLbþCWÿ=Oÿ4Dÿÿ2Bÿ3Bÿ.<ÿ:Kÿ8Iÿ1@ÿ-;ÿ>Qÿ3CÿBVÿ>Qÿ4Cÿ"xšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿUoÿe‚ÿ#x›þ\xÿUoÿUoÿYtÿ"w™þ$~£ÿ$~¢²$~¢$~¢$~¢$~¢#$~¢â$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢È$~¢$~¢$~¢$~¢$~¢Ù$}¡ÿ kŠþ\wÿ^zÿ!r“þ$~¢ýcþUoÿVpÿUoÿh†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýMdþCXÿ9JÿQÿ?Rÿ,9ÿ 'ÿ %ÿ &ÿ,9ÿ>Qÿÿ?Rÿ3Cÿ 'ÿ *ÿ5Eÿ@Tÿ:Lÿ "-ÿ $ÿ %ÿ &ÿ (5ÿÿ9Kÿ7Hÿ,9ÿ !+ÿ+8ÿ5Eÿ*6ÿ &2ÿ1@ÿ5Eÿ,:ÿG\þ$~¢ÿ$~¢Ã$~¢$~¢$~¢ $¤ÿRjþ (ÿ %1ÿ4Cÿ0>ÿ !+ÿ ",ÿ/=ÿ9Kÿ=Oÿ+8ÿ $ÿ )5ÿBWÿ4Cÿ %0ÿ=Pÿ7Hÿ=PÿDYÿ1?ÿj‰þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿVpÿVpÿUoÿe‚þ$}¡ý$~¢ÿ$~¢Ô$~¢$~¢$~¢$~¢ $~¢Å$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢`$~¢$~¢$~¢$~¢u$£ÿ!r“þXrÿVpÿVpÿVpÿVpÿVpÿVpÿUoÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u–þ@SÿDXÿ9Jÿ7Hÿ7Hÿ2Aÿ4Dÿ (4ÿ3Cÿ8Hÿ8Iÿ $/ÿ %ÿ *ÿ1@ÿ@Sÿ@Sÿ0>ÿ (ÿ #ÿF[þ$£ÿ$~¢µ$~¢$~¢$~¢Ž$£ÿdþ>Qÿ@Sÿ1@ÿ *ÿ %ÿ &ÿ+8ÿ7Hÿ2Aÿ4Dÿ,:ÿ5Eÿ (4ÿ/=ÿATÿ+8ÿ8Iÿ:LÿDYÿ3Cÿa}þ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿVpÿVpÿZuÿ"v˜þ$~£ý$~¢ÿ$~¢¯$~¢$~¢$~¢$~¢&$~¢ä$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢|$~¢$~¢$~¢$~¢Z$~¢ü$}¡þd‚þUoÿVpÿVpÿVpÿVpÿVpÿUoÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý oþAUÿEYÿ6Fÿ9Kÿ9Kÿ *ÿ6FÿBWÿ+8ÿ %ÿ %1ÿ9Jÿ5Eÿ5Fÿ.<ÿ "-ÿ &2ÿ4Dÿ0?ÿ +ÿNeþ$¤ÿ$~¢¤$~¢$~¢$~¢x$¤ÿg„þ+9ÿ '3ÿ0?ÿ5Eÿ1@ÿ5Eÿ3Cÿ )ÿ $ÿ (5ÿ@Tÿ:Lÿ %0ÿ.<ÿ6Gÿ7Hÿ8Iÿ7HÿEZÿ2BÿUnþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýf„þUoÿVpÿVpÿVpÿVpÿVpÿiˆþ$~¢ý$~¢ý$~¢ÿ$~¢ƒ$~¢$~¢$~¢$~¢I$~¢÷$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢™$~¢$~¢$~¢$~¢@$~¢ô$~£þ"v—þZtÿVpÿVpÿVpÿVpÿVpÿUoÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýfƒþBVÿÿ=Pÿa}þ$£ÿ$~¢$~¢$~¢$~¢^$¤ýh†þ !+ÿ %ÿ %ÿ)5ÿ=Oÿ9Jÿ5Eÿ+8ÿ &2ÿ5Eÿ '3ÿ %1ÿ;Mÿ>Qÿ "-ÿ5EÿPÿBWÿ6Fÿ6Gÿ5Fÿ9Jÿ (5ÿ ",ÿ9JÿBVÿ/=ÿ 'ÿ &ÿ+8ÿ6Fÿ)6ÿ,9ÿ3Cÿ4Dÿ1@ÿeƒþ$¤ÿ$~¢u$~¢$~¢$~¢D$£ö!q‘þ )5ÿ (ÿ-;ÿ4Dÿ $/ÿ &ÿ "-ÿ4DÿBVÿ8Iÿ #.ÿ $0ÿ5Fÿ.=ÿ9Kÿ8Iÿ)6ÿAUÿ:LÿCWÿ:Lÿ#zý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý`|ÿUoÿVpÿVpÿVpÿVqÿ mþ$~£ý$~¢ý$~¢ÿ$~¢ì$~¢0$~¢$~¢$~¢$~¢¡$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ê$~¢$~¢$~¢$~¢$~¢Ø$~¢ÿ$~¢ý#y›þ\xÿVpÿVpÿVpÿVpÿUoÿe‚þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýOfþDYÿ?Rÿ4CÿAUÿ '2ÿ %0ÿ?Rÿ9Jÿ )5ÿ '4ÿ5Eÿ %0ÿ ",ÿ,9ÿ:Kÿ>Qÿÿ3BÿPÿ7Gÿ/>ÿ (4ÿ5Eÿ+9ÿ &ÿ %ÿ %ÿ '4ÿ9KÿF[ÿ#zÿ$~¢à$~¢!$~¢$~¢$~¢$~¢°$¤ÿLbþ $ÿ %ÿ 'ÿ2Aÿ8Iÿ1@ÿ4Dÿ2Bÿ9Kÿ.<ÿ $ÿ '2ÿ:Lÿ4Dÿ;Mÿ.<ÿ1@ÿ>Qÿ@Tÿ:LÿH]þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg…þUoÿVpÿVpÿUoÿdþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢$~¢M$~¢ø$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢I$~¢$~¢$~¢$~¢$~¢ÿ$~¢ý$~¢ý$£ý!q’þWrÿVpÿVpÿVpÿWqÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýþBWÿ@Tÿ6Gÿ?Qÿ1Aÿ $/ÿ9Jÿ2Bÿ4Dÿ3Bÿ7Hÿ *ÿ $ÿ )ÿ4Dÿ4Dÿ,:ÿ2Aÿ4Dÿ3BÿRiþ$~¢ÿ$~¢Ä$~¢ $~¢$~¢$~¢$~¢†$€¤ÿ^yþ (ÿ *ÿ2Aÿ/=ÿ 'ÿ %ÿ !+ÿ9Jÿ8Hÿ5Eÿ1Aÿ:Kÿ %0ÿ %1ÿQÿ5Eÿ"w™þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#x›þ[vÿVpÿVpÿVpÿYtÿ"u—þ$£ý$~¢ý$~¢ý$~¢þ$~¢ú$~¢S$~¢$~¢$~¢$~¢x$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢c$~¢$~¢$~¢$~¢s$~¢ÿ$~¢ý$~¢ý$~¢ý$} ýcþUoÿVpÿVpÿUoÿg†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|ŸýG\ÿDXÿ;Nÿ?Rÿ)6ÿ8Iÿ2BÿQÿ+8ÿ )ÿ &ÿTmþ$€¤ÿ$~¢$~¢$~¢$~¢$~¢$~¢W$£û!q’þ=Pÿ=Oÿ9Jÿ &2ÿ !+ÿ )ÿ2Aÿ,:ÿ %ÿ !+ÿ9Kÿ9Kÿ4Dÿ;Mÿ )5ÿ '3ÿ?Sÿ6GÿQÿEZÿ8Iÿ7Gÿ4Dÿ?Rÿ2Aÿ (ÿ3Cÿ-:ÿ,9ÿ4Dÿ:Lÿ?Rÿ*6ÿ )ÿ &ÿ '3ÿ5Fÿ '3ÿ !+ÿf„þ$¤ÿ$~¢m$~¢$~¢$~¢$~¢$~¢,$~¢è#{žÿH]ÿ*6ÿ,9ÿ1@ÿ6Fÿ>Qÿÿ &ÿ0?ÿ;Mÿ4Dÿ:Kÿ,9ÿ3Cÿ>PÿBWÿ9JÿEYþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"w™þZuÿVpÿVpÿVpÿ\xÿ#y›þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Î$~¢$~¢$~¢$~¢$~¢Ì$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢›$~¢$~¢$~¢$~¢>$~¢ó$~¢þ$~¢ý$~¢ý$~¢ý$~¢ýh†þVpÿVpÿVpÿVpÿjˆþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýXrþCWÿ>Qÿ:Kÿ=Oÿ5Eÿ #.ÿ6Gÿ,9ÿ7GÿAUÿ1@ÿ #.ÿ 'ÿ*7ÿ4Cÿ *ÿ %ÿ &ÿ %0ÿ8Iÿ>Pÿ"u–þ$£ò$~¢>$~¢$~¢$~¢$~¢$~¢ $~¢Ä$£ÿG\þ #ÿ %ÿ )ÿ4Dÿ/>ÿ (4ÿ/=ÿ;LÿATÿ1@ÿ*7ÿ7Gÿ *ÿ &2ÿ=Pÿ6Fÿ;Lÿ0>ÿBUÿAUÿ2Aÿ pþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýg…þVoÿVpÿVpÿVpÿ mŒþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢§$~¢$~¢$~¢$~¢+$~¢è$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢µ$~¢$~¢$~¢$~¢)$~¢ç$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý#x›þ\wÿVpÿVpÿVpÿ[vÿ"wšþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý"xšþATÿCWÿ=Pÿ>Pÿ (4ÿ8Iÿ1@ÿ=Pÿ:Kÿ #.ÿ (4ÿ3Cÿ (ÿ 'ÿ !+ÿ3Bÿ;Mÿ2Aÿ3Cÿ4Dÿ4DÿPhÿ$}¡ÿ$~¢Õ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤ÿ^yþ (ÿ *ÿ3Cÿ+9ÿ %ÿ $ÿ $/ÿ6Gÿ &1ÿ+8ÿ@Sÿ:Kÿ0>ÿ6Gÿ+8ÿ &1ÿ>Qÿ8Iÿ;MÿCWÿ6GÿQiþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"w™þYtÿUoÿVpÿUoÿ_|ÿ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢{$~¢$~¢$~¢$~¢P$~¢ù$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ì$~¢$~¢$~¢$~¢$~¢Ö$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý lŒþVpÿVpÿVpÿVoÿg…þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýb~þ?RÿEZÿ4Dÿ7Hÿ6Fÿ?Rÿ1@ÿ !+ÿ4Dÿ $/ÿ #.ÿ8Iÿ;Lÿ4Dÿ4Dÿ1@ÿ1@ÿQÿÿ.<ÿ>QÿAUÿ>Qÿ3Cÿ!t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žþ kŠþ[vÿUoÿWqÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ù$~¢O$~¢$~¢$~¢$~¢|$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ß$~¢ $~¢$~¢$~¢ $~¢Á$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{žþ_{ÿUoÿVpÿUoÿZuÿ"wšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zýFZÿEZÿ9Kÿÿ3Bÿ *ÿ9Kÿ7Hÿ>Qÿ;MÿCXÿ2Aÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$~¡ý$| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ë$~¢$~¢$~¢$~¢$~¢Ï$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ø$~¢K$~¢$~¢$~¢$~¢Œ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýf„þi‡þ#yœþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý#y›þEYÿEZÿATÿ0>ÿ=Oÿ6Gÿ>Qÿ*7ÿ '2ÿ3Bÿ &ÿ #.ÿ9Jÿ)6ÿ*6ÿ3Bÿ@Sÿ7Gÿ4Dÿ4Dÿ4Cÿ5Eÿ_{þ$£ÿ$~¢µ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢V$£ú!q’þ *6ÿ 'ÿ2Bÿ-;ÿ %ÿ (ÿ4Cÿ '3ÿ $ÿ *ÿ6Fÿ '3ÿ*7ÿ>Qÿ8Iÿ6Fÿ9Kÿ '3ÿ;Lÿÿ (5ÿ=Pÿ8Iÿ4Dÿ8Jÿ?Rÿ/=ÿ)6ÿ)6ÿ:Kÿ (4ÿ (ÿ 'ÿ %0ÿkŠþ$£þ$~¢m$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ö$}¡ÿQiþ:Lÿ>Qÿ2Aÿ0?ÿ9Jÿ:Lÿ*7ÿ &2ÿ3Cÿ0?ÿ 'ÿ &2ÿ2Aÿ (ÿ3Bÿ8Iÿ9Jÿ;Mÿ3Cÿ?RÿEZÿ0?ÿe‚þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢w$~¢$~¢$~¢$~¢T$~¢ú$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢‚$~¢$~¢$~¢$~¢U$~¢û$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý pþ?RÿEYÿ?Rÿ8Hÿ-;ÿ4Dÿ8Iÿ7Gÿ@Tÿ0?ÿ-;ÿ9Jÿ ",ÿ 'ÿ/=ÿ-:ÿ $ÿ $ÿ %1ÿ5Eÿ "-ÿ #ÿ;Lÿ#{Ÿÿ$~¢ã$~¢)$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ž$£ÿ mŒþ3Cÿ #.ÿ %0ÿ6Fÿ6Gÿ*7ÿ-;ÿ8Iÿ>Qÿ5Eÿ5Eÿ?Rÿ6Gÿ+8ÿ8Iÿ $0ÿ-:ÿ4Dÿ:Lÿÿ,:ÿ (ÿ #.ÿ8Jÿ*7ÿ $/ÿ $/ÿ/>ÿ:Lÿ (4ÿ\wþ$¤ÿ$~¢¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢<$~¢ï#yœþ5Eÿ #ÿ )5ÿ4Cÿ (ÿ $ÿ )ÿ5Eÿ $/ÿ &ÿ*7ÿ6Fÿ '3ÿ4Dÿ>Qÿ4Dÿ>Qÿ2Aÿ4Cÿ2Bÿ>QÿF[ÿ4DÿKaþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢å$~¢($~¢$~¢$~¢$~¢¬$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢·$~¢$~¢$~¢$~¢'$~¢æ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýþ;MÿDXÿ>Pÿÿ )ÿ *ÿ5Eÿ &1ÿ %ÿ0>ÿ (4ÿ *ÿ8Iÿ-;ÿ>Pÿ9Jÿ=Oÿ:LÿF[ÿ-;ÿ\wþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢È$~¢$~¢$~¢$~¢$~¢Ò$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Î$~¢$~¢$~¢$~¢$~¢Ô$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýi‡þ=PÿE[ÿ@Sÿ/>ÿ8Iÿ1@ÿ?Sÿ5Eÿ>Pÿ7Hÿ,9ÿ9Kÿ-:ÿ ",ÿ,:ÿ3Cÿ (ÿ &ÿ )5ÿ4Dÿ (ÿ %ÿ %ÿRjþ$¤ÿ$~¢Æ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢W$£ø"v˜þI^ÿ9Jÿ4Dÿ3Cÿ:Lÿ>Qÿ5Eÿ5Eÿ;Mÿ?Rÿ4Dÿ5Eÿ?Sÿ1@ÿ1@ÿ9Jÿ $/ÿ5Fÿ (4ÿ;Lÿ;MÿCXÿ>Qÿ1?ÿh‡þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢º$~¢$~¢$~¢$~¢2$~¢í$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢á$~¢!$~¢$~¢$~¢ $~¢¿$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þ?QÿAUÿ?Rÿ>Pÿ9Jÿ>Qÿ+9ÿ7Hÿ #-ÿ '3ÿ0?ÿ #ÿ '3ÿ1@ÿ %ÿ 'ÿ3Cÿ (4ÿ %ÿ %ÿ-;ÿ0>ÿ %ÿ )5ÿ oþ$£ý$~¢m$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Ä$¤ÿUnþ )ÿ (ÿ $/ÿ7Hÿ #.ÿ 'ÿ "-ÿ7Hÿ %0ÿ !+ÿ2Aÿ2Aÿ '3ÿ8Iÿ7Hÿ4DÿATÿ5Eÿ=Pÿ0?ÿ=PÿBVÿ=Oÿ4Dÿ oþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ä$~¢<$~¢$~¢$~¢‰$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ñ$~¢9$~¢$~¢$~¢$~¢»$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"v˜þFZÿCWÿDYÿ7Hÿ9Jÿ '3ÿ7Gÿ '3ÿ8Hÿ1Aÿ0>ÿ>Qÿ2Aÿ2Aÿ?Rÿ5Fÿ2Aÿ7Hÿ>Qÿ1@ÿ0?ÿ0>ÿ>Qÿ1AÿNeþ$~¢ÿ$~¢Õ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢d$£û!t•þ.<ÿ &ÿ3Cÿ (4ÿ $ÿ %ÿ.<ÿ-;ÿ %ÿ )ÿ5Eÿ "-ÿ 'ÿ4Dÿ ",ÿ $/ÿ3Cÿ $/ÿ:Lÿ3Cÿ?Rÿ>PÿDYÿ6Fÿ9Jÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Û$~¢–$~¢­$~¢ô$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢‘$~¢ $~¢$~¢E$~¢è$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"xšþH]þ=OÿBVÿ;Lÿ7Gÿ>Qÿ6Gÿ?Sÿ4Dÿ6Gÿ8Jÿ)6ÿ5Eÿ2Bÿ $0ÿ,:ÿ8Iÿ %1ÿ $/ÿ0>ÿ8Iÿ '4ÿ (4ÿ*6ÿBUÿ"v˜þ$£þ$~¢y$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Æ$£ÿVoþ2Aÿ9Jÿ*7ÿ-;ÿ1@ÿ?Rÿ4Dÿ2Aÿ8Jÿ>Qÿ4Cÿ7Hÿ?Rÿ3Bÿ9Jÿ;Mÿ0>ÿ;Mÿ+8ÿ9Kÿ0?ÿ@SÿEZÿ7Hÿ:Kÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢»$~¢¦$~¢â$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"xšþJ`þ@TÿEZÿ=Pÿ=Pÿ-;ÿ7Gÿ "-ÿ2Aÿ %1ÿ "-ÿ3Cÿ %ÿ $/ÿ3Cÿ &ÿ &ÿ3Bÿ %1ÿ $ÿ 'ÿ3Bÿ (4ÿ $ÿ $ÿMdþ$£ÿ$~¢Ö$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢]$~¢ø#yœþI_ÿ/>ÿ-;ÿ+9ÿ;Mÿ,:ÿ $/ÿ %1ÿ9Jÿ '3ÿ !,ÿ2Aÿ.<ÿ "-ÿ5Eÿ.<ÿ,:ÿ;Nÿ1@ÿ?Rÿ8Iÿ>Qÿ=PÿDYÿ4Dÿ9Jÿ oþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢ÿ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"v˜þG\þÿ %ÿ (ÿ5Eÿ #.ÿ *ÿ6Fÿ %1ÿ (5ÿ5Eÿ #.ÿ6Gÿ &2ÿ9Jÿ2BÿATÿF[ÿ9Jÿ4Cÿh†þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý pþDXÿAUÿDYÿ>Qÿ?Rÿ4DÿQÿÿ9Jÿ*7ÿ8Iÿ '3ÿ7Hÿ*6ÿ (4ÿ5Fÿ )ÿ &2ÿ2Bÿ %ÿ 'ÿ4Dÿ !,ÿ $ÿ "-ÿ5Eÿ *ÿ 'ÿ (ÿF[ÿ$| þ$~¢ö$~¢Y$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢•$£ÿ nþATÿQÿ2Bÿ>Pÿ1@ÿQÿ7GÿQÿ (5ÿOfþ$~¢ÿ$~¢â$~¢3$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢]$~¢ö#zþ?Qþ $ÿ,9ÿ.<ÿ &ÿ *ÿ1@ÿ9Jÿ0?ÿ5Fÿ@Sÿ4Dÿ2Aÿ=Pÿ,9ÿ,:ÿ7Hÿ #.ÿ4Cÿ*7ÿ,:ÿ2Aÿ.<ÿ7Hÿ7Hÿ>QÿF[ÿ:Kÿ-;ÿI^þ p‘þ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$¤ý"u—þSkþ9KÿCWÿDYÿ?Rÿÿ.<ÿ $ÿ #.ÿ3Bÿ &ÿ $ÿ-:ÿ0>ÿ "-ÿ '4ÿ/>ÿQiÿ#yœþ$~£û$~¢r$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢œ$£ÿ oþ3Bÿ;Mÿ3Bÿ3Cÿ6Gÿ?Rÿ.<ÿ &2ÿ-;ÿ1@ÿ %ÿ ",ÿ3Bÿ %ÿ %1ÿ4Dÿ %0ÿ7Hÿ4Dÿ6Fÿ=Pÿ6Gÿ?Rÿ:Kÿ>Qÿ>QÿDXÿEZÿ6Fÿ1?ÿQiþ!s”þ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý"w™ýZtþ?Qÿ@SÿCWÿBUÿ:Lÿ6Fÿ8Hÿ,:ÿ3Cÿ '3ÿ*7ÿ-;ÿ )ÿ7Gÿ &2ÿ,:ÿQÿ3Cÿ@Sÿ7Gÿ;Mÿ8Iÿ*7ÿ8Iÿ "-ÿ *ÿ4Cÿ 'ÿ )ÿ7Gÿ)6ÿ+8ÿ7Hÿ>Qÿ3Cÿ-;ÿ5Eÿ/>ÿ *ÿYsþ$£ÿ$~¢Û$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢H$~¢ë$~¢ÿQhþ 'ÿ 'ÿ4Dÿ #.ÿ 'ÿ %0ÿÿ>Qÿ8IÿQÿ8Iÿ9Kÿ.<ÿ4Dÿ !+ÿ5Eÿ !+ÿ0>ÿ4Dÿ.<ÿ>Qÿ8Iÿ2Bÿÿ (4ÿ $ÿ *ÿ7Gÿ '3ÿ+8ÿ3Cÿ>QÿTmþ#|Ÿÿ$~¢ó$~¢Z$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢r$~£ù#{žþCWþ (4ÿ9Kÿ/=ÿ4DÿQÿPÿ)5ÿ0>ÿ*7ÿ #ÿ2Aÿ (5ÿ %1ÿ9Jÿ:Lÿ3Cÿ8Iÿ5Eÿ (ÿ %ÿ/=ÿ*7ÿ $ÿ $ÿDXÿ#|Ÿþ$~£ý$~¢†$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢—$£ÿ"v˜þOgÿ5Eÿ*7ÿ ",ÿ3Bÿ &1ÿ $ÿ !+ÿ5Fÿ %0ÿ-;ÿ>Qÿ7Hÿ.<ÿ9Jÿ %1ÿ )ÿ4Dÿ !,ÿ1?ÿ:Lÿ5Eÿ@Tÿ1@ÿ9Jÿ-;ÿ3Cÿ2Bÿ:Lÿ;MÿAUÿDXÿEZÿBVÿ8Iÿ5Eÿ2Aÿ9IÿFZþSjþ^zþh…þ nŽþ!r“þ"u–þ"w™þ"w˜þ"u—þ!s”þ oþi‡þa}þWpþJ_þ?Rÿ;Mÿ8Iÿ?RÿE[ÿDYÿBVÿ9Jÿ8Hÿ4Dÿ8Iÿ7Hÿ?Rÿ5Eÿÿ-;ÿ6Fÿ &ÿ4Cÿ!r’þ$£ÿ$~¢ª$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢³$£ÿ!s”þ4Dÿ #ÿ ",ÿ4Dÿ (ÿ ",ÿ1Aÿ?Rÿ3Cÿ.<ÿ8Iÿ *ÿ %ÿ3Cÿ %0ÿ)6ÿ>Qÿ6Fÿ6Gÿ7Hÿ !+ÿ3Bÿ '3ÿ1@ÿ;Mÿ7Hÿ@Sÿ/>ÿ:Kÿ/=ÿ>Pÿ:LÿBVÿBVÿDXÿDXÿAUÿ?Rÿ5Eÿ5Eÿ5Eÿ3Bÿ6Fÿ8Iÿ7Hÿ:Kÿ9Jÿ6Fÿ9Jÿ7Hÿ6Gÿ?Rÿ?RÿAUÿDYÿDYÿCXÿ8Iÿ;Mÿ2Bÿ>Qÿ7Hÿ@Sÿ.<ÿ4Dÿ '3ÿ-;ÿ9Jÿ3Cÿ@Tÿ0?ÿ,:ÿ1?ÿ #ÿ-:ÿ2Aÿ,:ÿ;Mÿ:Lÿ*6ÿ)6ÿ2Aÿ %ÿ %ÿ1@ÿ+8ÿ (5ÿ2Bÿ>Qÿ>Pÿl‹þ$£ÿ$~¢Ä$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$$~¢Æ$£ÿ nþ0>ÿ,:ÿ7Hÿ2Aÿ4DÿPÿ?Rÿ1?ÿ9Kÿ/=ÿ?Rÿ;Nÿ>Qÿ=Pÿ?SÿE[ÿCWÿEZÿCWÿEZÿEZÿAUÿEZÿEZÿBVÿDYÿEZÿEYÿ=PÿATÿ@Tÿ:Lÿ;Mÿ0?ÿ?Qÿ8Iÿ=Pÿ/=ÿ.<ÿ2Aÿ1?ÿAUÿ2Aÿ6Gÿ (4ÿ *ÿ7Gÿ,9ÿ9Jÿ=Oÿ)6ÿ.<ÿ,9ÿ #ÿ (5ÿ5Fÿ.<ÿ7Hÿ>Qÿ '3ÿ 'ÿ '3ÿ0?ÿ %ÿ $ÿ3Cÿ!q’þ$£ÿ$~¢Ô$~¢1$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢0$~¢Ð$£ÿmŒþI^ÿ2Bÿ &2ÿ *ÿ4Dÿ !+ÿ $ÿ (4ÿ:Lÿ3Cÿ6Fÿ;Lÿ !,ÿ (ÿ3Cÿ #.ÿ-;ÿ@Tÿ2Bÿ1@ÿ0?ÿ %ÿ5Eÿ5Eÿ9Jÿ=OÿI^þd€þFZþI_ÿBVÿ.=ÿ8Iÿ1@ÿ@Sÿ:Lÿ3Cÿ>Pÿ;Mÿ;Nÿ;Mÿ=Oÿ?Rÿ:Lÿ=Oÿ=Oÿ;Mÿ;Mÿ4Dÿ?Rÿ;Mÿ.<ÿ:Lÿ5Eÿ=Pÿ.<ÿ+8ÿ6Gÿ3CÿAUÿ,:ÿ,:ÿ.<ÿ '3ÿ?Rÿ6Gÿ1@ÿ3Cÿ $ÿ)6ÿ4Dÿ.=ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢8$~¢Ö$¤ÿ oþ1@ÿ #ÿ %0ÿ2Bÿ !+ÿ,:ÿ=Oÿ6Gÿ $/ÿ #.ÿ3Cÿ &ÿ #.ÿÿ0>ÿDYÿ6Fÿ;MÿTlþWpþSkÿ.<ÿ)6ÿ4Dÿ0?ÿATÿ.<ÿ #.ÿ4Cÿ #.ÿ5Eÿ?Rÿ,9ÿ.<ÿ-;ÿ #ÿ)6ÿ:Kÿ4Dÿ5Eÿ8Jÿ (ÿ $ÿ-:ÿ,9ÿ "-ÿ.=ÿ=Oÿ=Oÿf„þ$£ÿ$~¢â$~¢G$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢;$~¢Õ$£ÿ nŽþ5Dÿ.=ÿ;Mÿ5Eÿ-;ÿ6Gÿ $0ÿ $ÿ $0ÿ6Gÿ/=ÿ7HÿQÿ5Eÿ %0ÿ &1ÿ2Aÿ %ÿ $ÿ6Fÿ!r“þ$£ÿ$~¢à$~¢K$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$~¢Î$£ÿ!s”þRjþ.;ÿ )ÿ (ÿ4Dÿ )ÿ *ÿ3Cÿ>Pÿ+8ÿ #-ÿ5Eÿ (ÿ "-ÿ=Pÿ7Hÿ )5ÿ4Dÿ !+ÿ $0ÿ?Sÿ4Dÿ-;ÿ nþ$€¤ý"t–þLbÿDXþ]xþ"t–þ#zþ$€¤ý$€¤ý$~¢ý!q‘þ0>ÿÿdþ"u–þ#zœþ$£ý%¦ý%€¥ý$} ý"u—þ pþ#xšþ$~¢ý$€¤ý!s”þ=Oÿ5Eÿ.=ÿ $ÿ1?ÿ;Mÿ2Aÿ4Dÿ )5ÿ #ÿ,9ÿ:Kÿ5Eÿ1@ÿ3Cÿ %ÿ %ÿ2Bÿ/>ÿ3Cÿ5Eÿ:Lÿ )ÿ7Gÿ nŽþ$£ÿ$~¢Ú$~¢D$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢-$~¢Â$£ÿ#x›þG[þ (ÿ #-ÿ5Fÿ,:ÿ5Eÿ:Kÿ,:ÿ $ÿ *ÿ6Fÿ.<ÿ6Fÿ;Mÿ #.ÿ $ÿ2Aÿ4Dÿ5Eÿ:Kÿ $/ÿ.<ÿ"w™þ$€¤ýþ4Dÿ ",ÿ4DÿEYÿ6FÿJ`þjˆþ!t•þ mŒþ7HÿBUÿ#zþ$€¤ý\wþ5Eÿ5Eÿ0>ÿ^yþ$¤ý$~¢ý oŽþZtþXqþOgÿ.;ÿ3CÿCVÿg…þ$£ý#x›þ5Eÿ;Mÿ8Iÿ "-ÿ1@ÿ &2ÿ '3ÿ>Qÿ3Cÿ (ÿ*7ÿ,9ÿ !+ÿ2Aÿ?Rÿ (4ÿ %ÿ-;ÿ*7ÿ &ÿ '3ÿ;NÿNeþ!t•þ$£ÿ$~¢Ï$~¢:$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢­$£þ#|ŸþTmþ5Eÿ>Qÿ/=ÿ !+ÿ0>ÿ '3ÿ %ÿ)6ÿ@Sÿ/>ÿ *ÿ2Bÿ #.ÿ $/ÿÿ=Oÿ,9ÿ0?ÿ+8ÿ0?ÿQÿJ`ÿ#yœý$¤ýYsþ (ÿ)6ÿBVÿH]þ#| ý$£ýPgþ !,ÿ4Dÿ2Bÿ2Bÿ5Fÿ )ÿI_þ$€¤ý!t•þ,:ÿ4Cÿ,9ÿ6Fÿÿ9Jÿ6Gÿ &ÿ %ÿ3Cÿ4Dÿ4Dÿ4Cÿ,9ÿ $ÿ+8ÿ@Sÿc€þ$€¤ý"v˜þ9Jÿ8Iÿ8Iÿ &ÿ &1ÿAUÿ,:ÿ ",ÿ:Lÿ?Rÿ*7ÿG\ÿ$| ý$£ýXrþ-;ÿ4Cÿ.<ÿEZÿ#yœþ$¤ýa}þ;Mÿ/=ÿ $ÿ3BÿCXÿÿ)6ÿ8Iÿ?Rÿl‹þ%€¤ý!p‘þ:Lÿ #.ÿ3Cÿ )5ÿ4Dÿ:Lÿ '3ÿ )ÿQÿ3Bÿ ",ÿG\ÿ#{žý$£ýdþ (4ÿ $ÿ-:ÿ>Qÿ (5ÿ %0ÿ5Eÿ3Cÿ.<ÿ5Eÿ $/ÿKaþ$~¡ý$~¡ýKaþ6Gÿ6Fÿ "-ÿ4Dÿfƒþ$¤ý$| ý#zþ$£ý%€¥ý$£ý#zý"v—þ#{žý$}¡ý oþKaþ4Dÿ4Dÿ-:ÿ0?ÿ %ÿ %1ÿ?Sÿ-;ÿ &ÿ (4ÿ/=ÿ #.ÿ4Dÿ>Pÿ '3ÿ*7ÿXqþ#zþ$£ÿ$~¢Í$~¢J$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢Œ$~¢ð$¤ÿ!s”þH]þ #.ÿ )5ÿ=Oÿ3Cÿ "-ÿ1@ÿ $0ÿ )ÿ6Fÿ;Mÿ (ÿ $ÿMdþ$£ý$| ýLcþ,:ÿ *ÿ7Hÿ:Kÿ 'ÿ (ÿ=Oÿ2Aÿ %ÿ*7ÿÿ %ÿ+9ÿ>QÿH]þ$~¢ý$~¢ýI^þ %ÿ )ÿ?Rÿ,9ÿ=Oÿ$}¡ý$£ýJ`þ *ÿ5Eÿ3Bÿ-;ÿ+8ÿ,:ÿ^yþ%¥ý pþ &2ÿ $ÿ0>ÿ=Pÿ '3ÿ (ÿ4Cÿ !+ÿ-:ÿ;Lÿ3Cÿ (ÿ7Gÿc€þ$~¢ÿ$£ÿ$~¢Ñ$~¢Y$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢€$~¢å$¤ÿ$} þ`{þ6Fÿ )ÿ5Eÿ;Mÿ '3ÿ *ÿ4Dÿ )ÿ9Jÿ"t–þ%€¥ýe‚þ %0ÿ?Rÿ,9ÿ %ÿ+8ÿ8Iÿ3Cÿ "-ÿ5Eÿ (4ÿ5Eÿ-:ÿWpþ$~¢ý#|ŸýMcÿ %0ÿ+8ÿ3Bÿ4Dÿ5Eÿ"w˜þ$€¤ý_zþ,9ÿ0?ÿ &ÿ2Aÿ@Sÿ>Qÿ pþ%€¥ýi‡þ (4ÿ $ÿ0>ÿ-;ÿ5Eÿ,9ÿ4Dÿ )ÿ $ÿ,9ÿKaÿþ#y›þ$¤ÿ$~¢ë$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢3$~¢¡$~¢ð$¤ÿ#y›þ^yþOfÿ+8ÿ #ÿ (ÿ6Fÿ5EÿVoþ"v˜þ$€¤ýVoþ1@ÿ=Pÿ %0ÿ $ÿ '3ÿ@Sÿ "-ÿ %ÿ/=ÿ=Pÿ &2ÿ 'ÿUnþ$¤ý#zœý=Oÿ5Fÿ6Gÿ !+ÿ '3ÿ>Qÿ!r’þ$€¤ý mþKaÿATÿEYþYrþ pþ#zœý$¤ý!t•þCWÿ5Eÿ $/ÿ1@ÿ %0ÿ *ÿ6Fÿ;Mÿ ",ÿ4DÿYsþ#yœþ$¤ÿ$~£õ$~¢¬$~¢=$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢E$~¢®$~£ó$¤ÿ#{žÿcþ@Sþ )5ÿ=Oÿ/=ÿ $/ÿ5EÿUmþTmþ1@ÿ-;ÿ+8ÿ )ÿ5Fÿ;Lÿ ",ÿ %ÿ0?ÿ;Mÿ 'ÿ $ÿMdþ$€¤ý#y›ý1@ÿ6Gÿ4Dÿ %ÿ &ÿ;Mÿ nŽþ$£ý#{žý"wšþ#| ý$€¤ý%€¥ý$} ý"u–þXrþ=Oÿ)6ÿ %0ÿ6Gÿ8Jÿ ",ÿ $ÿ )5ÿQiÿb~þ"x›þ$¤ÿ$~¢ö$~¢¸$~¢P$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢H$~¢ª$~¢î$¤ÿ$} ÿ oþ_{þ6Eÿ !+ÿ (ÿ;Mÿ3Bÿ 'ÿ '3ÿ1@ÿ0?ÿ,9ÿ.<ÿ)6ÿ $/ÿ6Fÿ6Gÿ #.ÿ !+ÿ_zþ%¥ý#zœþ7Hÿ7Hÿ8Hÿ )ÿ !+ÿ8Iÿ`{þ$€¤ý$} ý"v˜þ nþa~þUnþBVÿ/=ÿ5Eÿ5Eÿ %1ÿ #ÿ &2ÿAUÿ6FÿMcþj‰þ#|Ÿÿ$¤ÿ$~£ò$~¢´$~¢R$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢<$~¢”$~¢Þ$£ý$£ÿ#y›ÿf„þPgþLcÿ (4ÿ %ÿ *ÿQÿ/>ÿ &ÿ &ÿ6Gÿ4Dÿ %ÿ %ÿ1@ÿ:Lÿ *ÿ !+ÿ0>ÿF[ÿ5Eÿ?RþNeþg„þl‹þ"v˜ÿ$}¡ÿ$£ÿ$£þ$~£ì$~¢Â$~¢$~¢<$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢-$~¢c$~¢œ$~¢Ì$~¢ë$£û$€¤ÿ$¤ÿ$~¢ÿ#zÿ"u—ÿ oþ pþf„þ^yþZtþ`{þ\wþTlþVoþ_zþf„þcþi‡þ pþ"xšþ#zÿ$}¡ÿ$£ÿ$£ÿ$£ü$£î$~¢Ð$~¢¢$~¢i$~¢2$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢0$~¢X$~¢‚$~¢©$~¢È$~¢Þ$£í$£÷$£ü$¤ÿ$€¤ÿ$€¤ÿ$¤ÿ$¤ÿ$€¤ÿ$€¤ÿ$¤ÿ$¤ÿ$€¤ÿ$¤ü$£÷$~£ï$~¢à$~¢Ë$~¢¬$~¢‡$~¢\$~¢4$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢2$~¢F$~¢Y$~¢j$~¢x$~¢ƒ$~¢ˆ$~¢Œ$~¢Œ$~¢ˆ$~¢„$~¢z$~¢l$~¢[$~¢H$~¢4$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢(`À ;;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$~¢1$~¢F$~¢X$~¢g$~¢p$~£u$~¢v$~¢q$~¢h$~¢Y$~¢G$~¢2$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢C$~¢p$£›$€¤½$¤Ö$¤ç$£ñ$~¢÷$}¡ú#|Ÿü#{Ÿý#|Ÿý#|Ÿü$} û$~¢÷$£ò$€¤è$¤Ø$€¤À$£ž$~£t$~¢G$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢2$~¢p$£­$€¤Û$£õ$| ÿ!t•ÿiˆÿg…ÿWpÿI^ÿOfÿF[ÿ8HÿAUÿEZÿ8HÿBVÿQiÿI^ÿTlÿf„ÿiˆÿ!s”ÿ#{žÿ$£ö$€¤Þ$£²$~¢u$~¢7$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&$~¢n$£º$¤ë$| ÿ"u—ÿ_{ÿJ`ÿLbÿ0?ÿ ",ÿ5Fÿ)6ÿ "ÿ0?ÿ.<ÿ #ÿ.<ÿ2Aÿ #ÿ*7ÿ4Dÿ $ÿ %0ÿ8Iÿ #-ÿ,9ÿJ`ÿK`ÿ]wÿ!r“ÿ$| ÿ$¤î$£¿$~¢t$~¢+$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢>$£˜$€¤á$}¡þ!t•ÿWpÿ=Oÿ@Tÿ %1ÿ $ÿ3Cÿ,9ÿ 'ÿ2Bÿ2Aÿ "-ÿ0?ÿ0?ÿ &1ÿ/>ÿ3Bÿ.;ÿ4Dÿ3Bÿ #.ÿ/>ÿ4Dÿ )ÿ)6ÿ7Hÿ &ÿ !+ÿ?Qÿ=OÿSlÿ pÿ$}¡ÿ$€¤ä$£Ÿ$~¢E$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢D$£ª$¤ï#zÿ`|ÿATÿ@Sÿ %0ÿ $ÿ2Bÿ0>ÿ "-ÿ;Mÿ>Qÿ-:ÿ-:ÿ '3ÿ5Eÿ*7ÿ $/ÿ8Hÿ '3ÿ.<ÿkŠþi‡þ=Pÿ5Eÿ*7ÿ*6ÿ.;ÿ/=ÿ/=ÿ #.ÿ.<ÿ5Eÿ &ÿ !+ÿ>Pÿ@Sÿ]xÿ"xšÿ$¤ò$£±$~¢L$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢6$££$£ñ"v—ÿXrÿI_ÿ (4ÿ #ÿ0?ÿ2Aÿ %0ÿ;MÿLbþb~þ"v˜þg…þ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢„$¤ç"xšÿe‚ÿ7Hÿ %ÿ.<ÿ5Fÿ '3ÿÿ+8ÿ/=ÿ.<ÿ>Qÿ$| ýi‡þ2Bÿ2Aÿ '3ÿ-;ÿ6Gÿ (ÿ,9ÿ6Fÿ )6ÿ!q’þ`|þ)6ÿ.<ÿ #.ÿ2Aÿ4Cÿ &ÿ1?ÿ`|ÿ"wšÿ$¤ì$~¢Ž$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢L$£È$~¢ÿdÿ5Eÿ.<ÿ5Fÿ ",ÿ+8ÿ,:ÿXqþ"xšþ#| ý!t•þf„þFZþ:Kÿ2Aÿ0?ÿ1@ÿ '3ÿ8Iÿ &2ÿ '3ÿ:Lÿ )ÿ,:ÿSlÿ$~¡ýl‹þ0>ÿ !+ÿ6Gÿ,:ÿ,9ÿ/=ÿ1?ÿ0?ÿ (4ÿ!q’þYrþ $ÿ1?ÿ3Cÿ (5ÿ.=ÿ (ÿ/>ÿ3Cÿ3Bÿ_{ÿ$} ÿ$¤Ð$~¢U$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢…$£ï!r’ÿQhþ8Hÿ &ÿ $0ÿ0?ÿ/=ÿ5Eÿ #-ÿCWþ$¤ýh†þ5Eÿ.<ÿ/=ÿ2Bÿ )ÿ4Dÿ1@ÿ )ÿ8Iÿ,9ÿ)5ÿ6Fÿ*6ÿ.=ÿQiþ$£ý#zþd€þWqþ\wþPgþ5Eÿ9Jÿ )ÿ.<ÿ9Jÿ!q’þg…þ2Aÿ:Kÿ &2ÿ 'ÿ:KÿI^þ:Kÿ+8ÿ #ÿ/=ÿQiþ oÿ$£ó$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢,$£µ$~£þg…ÿ/=ÿ )ÿ6Gÿ4CÿEZþ0?ÿ 'ÿ5Eÿ0>ÿ/=ÿ"u–þ"u—þBUÿ #.ÿ (4ÿI^ÿG\þ1@ÿ0>ÿ3Cÿ*7ÿ.;ÿ8Iÿ !+ÿ7Hÿ-;ÿMcþ$€¤ý nŽþl‹þ!t•þ"v˜þ!s”þ:Kÿ1@ÿ %0ÿ5Fÿ4Dÿjˆþ$}¡ý"u—þd€þ:Kÿ-;ÿ_{þ$} ý oþBVÿ,9ÿ9Jÿ %0ÿ+8ÿ_{ÿ$~¢ÿ$£¿$~¢4$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢G$£Ô"x›ÿOgÿPÿ *ÿ8Jÿ-;ÿ,:ÿ5Eÿ-;ÿ1@ÿ0?ÿ\wþ$€¤ýLbþ4Dÿ9Jÿ5EÿLbÿ (5ÿ+8ÿ8Iÿ (4ÿ3Cÿj‰þkŠþG[þg„þ"v˜þ!r“þ$~¢ý#y›ýYsþ=Pÿ '3ÿ.<ÿ !+ÿ #-ÿ:LÿOgþ"v˜ÿ$£Ü$~¢Q$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢]$£æ"wšÿBVþ %ÿ+8ÿ2Aÿ/=ÿDXÿ"wšþ$¤ý"u–þ?Rÿ5Eÿ "-ÿ &2ÿWqþ$~¢ý$} ý#y›þ!q‘þZtþMdþ?Qÿ4Dÿ8Iÿ/>ÿ9Kÿ $/ÿ:Lÿ,:ÿ/>ÿkŠþ$~¢ýWqþ+8ÿ.=ÿ7Gÿ &1ÿ3Bÿ4Cÿ3Bÿ $.ÿ=Oÿ nŽþl‹þ,9ÿ@Sÿ"u–þ%€¥ý"xšþOfþ7Hÿ)5ÿ %ÿ2Aÿ=Oÿ7Gÿ1@ÿ &ÿ;Lÿ!s•ÿ$¤ì$~¢i$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢j$£ïlŠÿ?Rÿ7Hÿ '3ÿ (4ÿ*7ÿ (ÿ>Pÿ#y›þ$~£ý$¤ýb~þPÿlŒþ%€¥ý"u—þj‰þfƒþ_zþNeþWqþLbþ5Fÿ5Fÿ0>ÿ mŒþ oþG\ÿh†þ$£ý!s•þNfÿ &2ÿ (5ÿ)6ÿ*6ÿDXÿ nþ^yþ1@ÿ *ÿ0>ÿCWÿi‡ÿ$£ô$~¢w$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢o$¤ó mŒÿ.<ÿ &ÿ2Aÿ0?ÿ3Cÿ5Fÿ )ÿ7Hÿ#|Ÿý!s”þ oþ$~¢ýWpþ $/ÿ5Fÿ7Hÿi‡þ$}¡ýPgÿ5Eÿ7HÿLbþa~þ!t•þ"w™þBUÿ4Cÿ3Bÿ6Gÿ5Eÿ:KÿWpþUnþfƒþf„þ p‘þ"u–þ"xšþ$}¡ýg…þ0?ÿ1@ÿ,9ÿiˆþ"u—þ pþ$£ýj‰þ5Eÿ.=ÿ #-ÿ0?ÿ6Fÿ0>ÿdþ$¤ý"t•þF[ÿ/=ÿ6Fÿ ",ÿ *6ÿfƒÿ$¤÷$~¢|$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢g$£òg…ÿ@Sÿ1@ÿ '3ÿJ`þQhþ ",ÿ6Fÿ0>ÿG\ÿ$~¢ýd€þBUÿ!r“þ#y›ý>Qÿ1@ÿ %1ÿVoþ$¤ýlŒþa}þ"w™þ#{Ÿý"v˜þg„þOfþ7Gÿ8Iÿ8Iÿ8Iÿ8Iÿ:Lÿ5Eÿ:Lÿ5Fÿ;Lÿ;Mÿ=OÿATÿKbÿ>Qÿ2Aÿ7Hÿ5Eÿcþ%€¥ý$~¢ýZtþ6Fÿ $/ÿ4Dÿ3Cÿ3Bÿ+8ÿQiþ$~¢ý!r“þJ`ÿ)6ÿ *ÿ/=ÿ *ÿ '3ÿ@Tÿfƒÿ$£ö$~¢u$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢W$€¤íjˆÿ+7ÿ #.ÿ2Bÿ8Iÿ pþ#y›ý:Lÿ-;ÿ !+ÿG\þ$€¤ýa}þ5EÿG\þ$| ý!s”þDYÿ/>ÿJ`ÿ#{žý$} ý!t•þc€þSkþ=Pÿ>Qÿ9Kÿ?Rÿ?Sÿ@Tÿ@TÿAUÿ@SÿAUÿ?SÿAUÿ?Rÿ>Qÿ=Oÿ:Kÿ7Hÿ8Iÿ8Iÿ0>ÿATÿa}þ#y›ý^zþ1@ÿ4Dÿ5Eÿ2Bÿ '3ÿ)5ÿSkþ#|Ÿý#yœýÿ )ÿ@Sþ#{žý p‘þDYÿ.<ÿRjþ%€¥ýSkþ3Cÿ1@ÿbþ$£ý`|þ6Gÿ;MÿZtþNeÿBUÿ9Kÿ=PÿAUÿ@Sÿ?Sÿ>Pÿ@SÿATÿFZÿF[ÿJ`ÿI^ÿJ`ÿF[ÿF[ÿAUÿAUÿAUÿ@Tÿ?Rÿÿ>PÿCWÿYsþLcþ "-ÿ )ÿ>Pÿ pÿ$£ê$~¢L$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$$£Í!t•ÿ5Eÿ+8ÿ3Cÿ-;ÿ8Iÿ0?ÿ &2ÿZuþ$€¤ýf„þ3Bÿ]xþ$€¤ýQhþ3Cÿ*7ÿ:Kÿjˆþþ?Rÿ6Gÿ:LÿPÿ@SÿI_þXqþdþ oŽþ"u—þ#y›ý#{žý#|Ÿý#|Ÿý#{žý#yœý"v˜þ pþh†þ\vþQhþF[ÿBUÿAUÿ?Sÿ=Oÿ5Fÿ4Dÿ6Fÿ4Cÿ:Kÿ0>ÿI_ÿ"u—þ$}¡ý\vþþ"xšþi‡þ`{þ pþ#{žý$€¤ý"v—þH^þ5Fÿ3Bÿ4Cÿ p‘ÿ$£Ø$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~£©$| ÿNdþ !+ÿ !+ÿ/=ÿ 'ÿ $/ÿ5Eÿ+9ÿ?Rÿ oþ$~¢ýMdþbþ$}¡ýDXÿ1@ÿ3Cÿ6FÿFZÿ8Iÿ9Kÿ=PÿAUÿ>Qÿ>PÿLbþa}þ!t•þ$} ý$¤ý$¤ý$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$£ý$¤ý$¤ý$}¡ý"v—þg…þTlþF[ÿBVÿ@Tÿ=Oÿ7Gÿ4Dÿ4DÿDXÿ!r“þ$€¤ýZtþ0>ÿ,:ÿAUþ#y›þ%€¥ý"w™þdþWpþ>Qÿ,9ÿ/=ÿ $/ÿ $ÿCWþ#{žÿ$£·$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢v$~¢ûTlÿ5Eÿ5Eÿ.<ÿ6Gÿ-;ÿ #.ÿ0>ÿ *ÿ &2ÿ@Sÿ!s”þ#zý#zœý#yœýDYÿ5Eÿ6Gÿ4Dÿ9JÿQÿ>QÿUnþ pþ$}¡ý$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$¤ý$~¢ý!t•þ]xþI_ÿBVÿ@TÿQÿ1@ÿ8Iÿ9Jÿ@Tÿ@TÿQÿ:Lÿ;MÿYsþ#zýl‹þ9Jÿ)5ÿ-:ÿg„þ!r“þ2Aÿ7Hÿ/=ÿ7Hÿ3Cÿ '3ÿ0?ÿ '3ÿ !,ÿ`|ÿ$¤ï$~¢J$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£¸"w™ÿI^ÿ.=ÿ)5ÿF[ÿ pþ$£ý$~£ý$¤ý$£ýcþ/=ÿ3Bÿ+8ÿa~þ$€¤ý nþCWÿ6Gÿ=PÿBVÿ;MÿI^þmŒþ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý!s”þSlþCXÿATÿ:Kÿ8IÿUnþ#zýkŠþNeþUnþ"xšþ!s”þ;Lÿ/=ÿ !,ÿ0?ÿ (ÿ "-ÿI^þ '3ÿ $/ÿCWÿ"w™ÿ$£Æ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢n$~¢ûMcÿ &1ÿ3CÿCVÿ#x›þ"v˜þTlþLbÿXqþ mŒþ$¤ý]xþ9Jÿ-:ÿF[ÿc€þCWÿ9Kÿ>QÿATÿÿ.<ÿ nŽþ"xšþCVÿ*7ÿ5Eÿ3Cÿ7Hÿ?Rÿ@Sÿ?Qÿh†þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý oþMcÿBVÿ>Pÿ8IÿEZÿYsþa}þUnþ4Dÿ8Jÿ-:ÿÿ*7ÿ (5ÿ/=ÿPgþ$} ýI_ÿ2Aÿ9Kÿ?Rÿ>QÿDXÿ!s”þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"x›ýQhþBVÿ=Pÿ7Hÿ4Dÿ9JÿAUÿfƒþ#zý%€¥ý$~¡ýVoþ-;ÿ4Dÿh†þ#zœþCWÿ1@ÿ "-ÿ\vÿ$¤ì$~¢;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡$~¢$| ÿEZÿ %0ÿ '3ÿ;Lÿ pþ p‘þQÿ@SÿBUÿ!s”þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ê$~¢Ô$~¢ô$~¢þ$~¢ý$~¢ý$~¢ÿ$~¢û$~¢ù$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"xšþQhþBVÿ=Pÿ7GÿRjþ!t•þ$£ý"v˜þYsþ"w™þZtþ *ÿ.<ÿ7Hÿ"v˜þh†þ '3ÿ %ÿ;Mÿ#zÿ$~£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&$¤ßdÿ6Fÿ5Eÿ*7ÿ/>ÿk‰þ#yœþ@Sÿ5Eÿ (4ÿ4Cÿ '3ÿEYÿ$|Ÿýdþ7HÿPÿ %ÿ.<ÿ $0ÿ $ÿNeþ$€¤ý_zþ:Lÿ*7ÿ4DÿI_þ pþ!t•þFZÿ8HÿBVÿ;Mÿfƒþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢|$~¢$~¢$~¢ $~¢¸$~¢ÿ$~¢ú$~¢`$~¢$~¢$~¢O$~¢ö$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý oþEZÿ@Tÿ;MÿZtþ#|ŸýJ`þ $0ÿ:KÿmŒþ pþ0>ÿ &2ÿ9JÿlŒþ!r’þ:Kÿ )ÿ8Iÿ#zÿ$£‡$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£È!q‘ÿ4Dÿ*6ÿ/=ÿ9Kÿ0>ÿ9Jÿl‹þ$£ý!t•þkŠþ!pþ$}¡ý#zþOfÿ:Kÿ@Sÿ;MÿVoþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ô$~¢@$~¢$~¢$~¢$~¢z$~¢ÿ$~¢à$~¢"$~¢$~¢$~¢$~¢Þ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýc€þCXÿ=Pÿ>Qÿ oþ pþ@Sÿ4DÿUnþ mþ@Rÿ5Fÿ+8ÿUmþ^yþ,9ÿ *ÿ &1ÿh†ÿ$€¤Õ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢J$£öPhÿ3Cÿ0>ÿ $/ÿ '3ÿ3Cÿ !,ÿ-:ÿcþ#yœþ$}¡ý"w™þfƒþCWÿ7Hÿ;Nÿ@SÿEYÿ#yœý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ý$~¢$~¢$~¢$~¢$~¢J$~¢û$~¢¼$~¢ $~¢$~¢$~¢$~¢È$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ýRjþAUÿ;MÿOfþ$| ýYsþ %1ÿ=Oÿ*7ÿ1@ÿ1@ÿ,9ÿ?Rÿ3Bÿ-;ÿ-;ÿ6FÿTmÿ$~¢ú$~¢Z$~¢$~¢$~¢$~¢$~¢$~¢$£•#x›ÿ2Aÿ 'ÿ/>ÿ '3ÿ )ÿ.<ÿ3Cÿ+8ÿ:LÿDXÿ?Qÿ:Kÿ/=ÿ5Eÿ;MÿAUÿ:Lÿi‡þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$|Ÿý$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¼$~¢ $~¢$~¢$~¢$~¢$$~¢æ$~¢$~¢$~¢$~¢$~¢$~¢°$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ý!q‘þ j‰þ#xšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þG\ÿ@Tÿ:Kÿdþ"w™þEZÿ6Gÿ+8ÿ4Dÿ !,ÿ (4ÿ,9ÿ %ÿ %ÿ)6ÿ,:ÿ-;ÿ!t•ÿ$£¦$~¢$~¢$~¢$~¢$~¢$~¢$£Ó lŒÿ;Mÿ0>ÿ1@ÿ:Lÿ5Eÿ,9ÿ3Cÿ/=ÿ "-ÿ1@ÿ (4ÿ9Jÿ3Cÿ7Hÿ=Oÿ=PÿOeþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{Ÿý k‹þ_|ÿ k‹þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢’$~¢$~¢$~¢$~¢$~¢ $~¢¿$~¢a$~¢$~¢$~¢$~¢$~¢–$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þYsÿUoÿc€þ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý\wþAUÿÿ+9ÿ0?ÿ6Gÿ &1ÿ $/ÿa}ÿ$€¤ß$~¢"$~¢$~¢$~¢$~¢$~¢G$£öNdÿ &2ÿ4Dÿ '3ÿ !+ÿ0>ÿ #.ÿ "-ÿ6Fÿ0>ÿ6Fÿ4Cÿ/=ÿ4Dÿ;MÿATÿ;Mÿ oŽþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýh‡þVpÿUoÿXsÿ"s”þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢e$~¢$~¢$~¢$~¢$~¢$~¢ƒ$~¢7$~¢$~¢$~¢$~¢$~¢y$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$£ý!pþVpÿVoÿ]yÿ#{Ÿþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"v˜þI^ÿATÿ8HÿJ`þþ=Oÿ5Fÿ "-ÿ0>ÿ $0ÿ *ÿ/=ÿ4Cÿ*6ÿ,9ÿ6GÿSkÿ$~¡ú$~¢W$~¢$~¢$~¢$~¢$£ƒ#zÿ5Eÿ #ÿ #.ÿ4Dÿ*7ÿ/>ÿ;Mÿ2Aÿ-;ÿ3Bÿ $0ÿ7Hÿ4Cÿ8Iÿÿ0?ÿ/=ÿ7Gÿ8Hÿ*7ÿ+9ÿ2Aÿ )ÿ &ÿ+8ÿ+8ÿ0>ÿ"v˜ÿ$£”$~¢$~¢$~¢$~¢$£¹!r“ÿ>Qÿ2Aÿ/=ÿ0?ÿ8Iÿ,9ÿ %1ÿ0?ÿ $/ÿ5Fÿ6Gÿ1@ÿ2Bÿ:Lÿ@Tÿ;Lÿjˆþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{Ÿþ`}ÿUoÿVpÿVpÿUoÿh‡þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Û$~¢$~¢$~¢$~¢l$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢D$~¢ö$~¢þ$~¢ý$~¢ý$~¢ý$£ý!p‘þVpÿVoÿ]yÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!s”þFZÿ?Sÿ7Hÿ4Dÿ:Kÿ+8ÿ1@ÿ !,ÿ,:ÿ8Iÿ0>ÿ0?ÿ7Gÿ6Fÿ &1ÿ '2ÿi‡ÿ$€¤Ç$~¢$~¢$~¢$~¢ $€¤ß^yÿ '3ÿ2Aÿ+8ÿ &ÿ !+ÿ3Bÿ,:ÿ5Fÿ9Jÿ (4ÿ2Bÿ1?ÿ:Kÿ9Jÿ@TÿCWÿ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý mŒþVpÿVpÿVpÿVpÿUoÿh‡þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¸$~¢$~¢$~¢*$~¢´$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢-$~¢ê$~¢ÿ$~¢ý$~¢ý$~¢ý$£ý!q‘þVpÿVoÿ]yÿ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýSkþATÿQÿÿ2Aÿ )ÿ &2ÿ8Iÿ2Aÿ6Fÿ*7ÿ9Kÿ6FÿAUÿ:KÿmŒþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýf„þVoÿVpÿYtÿ\wÿVpÿUoÿi‡þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢a$~¢$~¢$~¢w$~¢þ$~¢X$~¢$~¢$~¢$~¢ $~¢ $~¢&$~¢$~¢ $~¢Æ$~¢ÿ$~¢ý$~¢ý$~¢ý$£ý!q‘þVqÿVoÿ]yþ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u–þF[ÿ?Rÿ8Iÿ3Cÿ/=ÿ8Jÿ0?ÿ !+ÿ1?ÿ,9ÿ+8ÿ5Eÿ:Lÿ1?ÿ "-ÿ6Fÿ#zœÿ$£z$~¢$~¢$£Ž"w™ÿ6Fÿ,:ÿ1@ÿ !+ÿ &ÿ.<ÿ9Jÿ1@ÿ-;ÿ0?ÿ.<ÿ;Mÿ0?ÿ;MÿAUÿ@Rÿ#yœý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"s”þXsÿVpÿVpÿi‡þcþUoÿUoÿiˆþ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ð$~¢8$~¢$~¢$~¢£$~¢ÿ$~¢‰$~¢$~¢$~¢$~¢"$~¢Ò$~¢8$~¢$~¢$~¢®$~¢ÿ$~¢ý$~¢ý$~¢ý$£ý!q’þVqÿVoÿ]yþ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$} ýPgþAUÿ7Gÿ9Jÿ.=ÿ0>ÿ,:ÿ;Mÿ2Bÿ !+ÿ )5ÿ/=ÿ $.ÿ &2ÿ1@ÿBVÿ"u–ÿ$£Ÿ$~¢$~¢$¤¬ oÿ %0ÿ %ÿ )5ÿ8Iÿ5Eÿ-;ÿ+8ÿ0?ÿ &2ÿ7Hÿ5Eÿ0>ÿ8Iÿ;Nÿ>QÿLbþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|Ÿýa}ÿUoÿVoÿ]yÿ#yœþdþUoÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ø$~¢$~¢$~¢$~¢Ê$~¢ÿ$~¢Â$~¢ $~¢$~¢$~¢S$~¢ô$~¢N$~¢$~¢$~¢“$~¢ÿ$~¢ý$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]yþ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýþ@Tÿ=Oÿ/>ÿ9Jÿ0?ÿ0?ÿ)6ÿ )5ÿ9Jÿ9Jÿ (4ÿ *ÿ (5ÿ.=ÿ*6ÿjˆÿ$€¤»$~¢ $~¢$¤Ã mÿ7Hÿ2Aÿ.<ÿ)6ÿ/=ÿ+8ÿ #-ÿ3Cÿ;Lÿ &2ÿ4Cÿ6Fÿ7Gÿ>Qÿ;MÿYsþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý mþVqÿVpÿWqÿ!oþ$~¢ýdþUoÿUoÿiˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢µ$~¢$~¢$~¢*$~¢ç$~¢ÿ$~¢õ$~¢f$~¢$~¢$~¢¹$~¢ÿ$~¢i$~¢$~¢$~¢w$~¢ÿ$~¢ý$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]yÿ#{žý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýg…þBVÿ;Mÿ:Kÿ.=ÿ0?ÿ7Hÿ-:ÿ0>ÿ)6ÿ "-ÿ0>ÿ:Lÿ8Iÿ (4ÿ !+ÿa|ÿ%€¤Ñ$~¢$~¢$€¤Ôc€ÿ-:ÿ2Aÿ+8ÿ (ÿ #.ÿ6Gÿ:Kÿ '3ÿ '4ÿ8Iÿ0?ÿ5Eÿ8Iÿ@Sÿ9Kÿe‚þ$¤ý$~¢ý$~¢ý$~¢ý#x›þ\wÿVpÿUoÿbþ$| ý$~¢ýdþUoÿUoÿjˆþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Š$~¢$~¢$~¢O$~¢ù$~¢þ$~¢ÿ$~¢ï$~¢¾$~¢Ó$~¢ý$~¢ÿ$~¢…$~¢$~¢$~¢[$~¢ü$~¢þ$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]yÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý oþCWÿ>Qÿ5Eÿ4Dÿ7Hÿ #.ÿ5Eÿ5Eÿ*7ÿ*6ÿ/>ÿ $/ÿ #-ÿ,9ÿ7Hÿb~ÿ$¤ß$~¢&$~¢&%€¤ßXqÿ $ÿ (ÿ0?ÿ:Kÿ5Eÿ $/ÿ4DÿþZtþ?Qÿ2Aÿ6Fÿ7HÿAUÿ8HÿmŒþ$£ý$~¢ý$~¢ý$£ý!oþVpÿVpÿYtÿ"u–þ$£ý$~¢ýdþUoÿUoÿj‰þ$£ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ü$~¢]$~¢$~¢$~¢z$~¢ÿ$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢ÿ$~¢þ$~¢ÿ$~¢ $~¢$~¢$~¢B$~¢õ$~¢þ$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]xÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þG\ÿ?Rÿ7Gÿ5Eÿ,9ÿ;Mÿ-;ÿ0>ÿF[ÿ>Pÿ/=ÿ #.ÿ %1ÿ.=ÿ*7ÿTlÿ$¤é$~¢3$~¢/$¤æ]xÿ/=ÿ1@ÿ,9ÿ &1ÿ-;ÿ/=ÿ_zþ%€¥ý%€¥ýb~þ9Kÿ2Aÿ:Lÿ@Tÿ:Lÿ!r“þ$£ý$~¢ý$~¢ý$~£ý"u–þZuÿWrÿj‰þ$~¢ý$~¢ý$~¢ýdþUoÿUoÿj‰þ$£ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢î$~¢5$~¢$~¢$~¢§$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢º$~¢$~¢$~¢,$~¢é$~¢ÿ$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]xÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý"x›þH]ÿ?Rÿ7Gÿ4Cÿ5Eÿ)6ÿG\ÿ"u—þ#|ŸýXrþ-:ÿ9Kÿ:Kÿ-:ÿ 'ÿKaÿ$¤î$~¢>$~¢7$¤ëZtÿ/=ÿ3Bÿ )5ÿ *ÿ )5ÿ9JÿkŠþ$€¤ý$€¤ý mŒþ-;ÿ9Kÿ7HÿBVÿ9Jÿ"u—þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý"v™þ"t•þ$| ý$~¢ý$~¢ý$~¢ýcþUoÿUoÿj‰þ$£ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Õ$~¢$~¢$~¢$~¢Í$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ñ$~¢$~¢$~¢$~¢Ù$~¢ÿ$~¢ý$~¢ý$£ý!q’þWqÿVoÿ]xÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zýLbÿ>Qÿ8Iÿ2Bÿ4Dÿ/=ÿ`|þ%€¥ý$£ý"w™þ;Lÿ #.ÿ !+ÿ*7ÿ4DÿVoÿ$£ò$~¢G$~¢:$€¤ìNeÿ "ÿ *ÿ3Bÿ;Mÿ4Cÿ )ÿATþ!s”þ!r“þFZþ;Mÿ0?ÿQÿ:Kÿ/>ÿ;Mÿ %1ÿ2AÿSkþPhþ+8ÿ (4ÿ9Jÿ9Kÿ.<ÿ &ÿG\ÿ$£ó$~¢I$~¢3$¤é]xÿ2Bÿ3Cÿ)6ÿ "-ÿ+9ÿ1@ÿ0?ÿ-;ÿ0?ÿ/=ÿ6Fÿ3Bÿ;MÿBVÿ;Mÿ!u–þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿa~ÿZuÿVpÿVoÿj‰þ$~¢û$~¢Y$~¢$~¢$~¢$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ú$~¢P$~¢$~¢$£‘ nÿUoÿUoÿ^zÿ nþWqÿVoÿ]xÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zýJ`ÿ@Tÿ5Eÿ8Jÿ )5ÿ;Mÿ0>ÿ *ÿ0?ÿ8Iÿ1@ÿ ",ÿ *ÿ+8ÿ2BÿTlÿ$£ð$~¢C$~¢+$€¤ãUmÿ $ÿ )ÿ1@ÿ;Mÿ5Eÿ ",ÿ %0ÿ7Hÿ3Cÿ,:ÿ4Dÿ5Fÿ8JÿBVÿ9Iÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿWqÿVpÿVpÿ\wÿ#x›ÿ$~¢í$~¢2$~¢$~¢$~¢«$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢k$~¢$~¢$£t"t–ÿYsÿVpÿVqÿ^zþWqÿVoÿ\xÿ#{žþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý"xšþI_ÿ>Qÿ8Iÿ1@ÿ8Iÿ)5ÿ1@ÿ2Aÿ.<ÿ*6ÿ/>ÿ)6ÿ &2ÿ-;ÿ0>ÿWpÿ$£ì$~¢9$~¢ $€¤Ú_zÿ (4ÿ/>ÿ,9ÿ !+ÿ &2ÿ7Gÿ9Kÿ %0ÿ)6ÿ;Mÿ.<ÿ6Fÿ9Jÿ@Sÿ9JÿkŠþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿVpÿVpÿVpÿ lŒþ$~¢ÿ$~¢Ò$~¢$~¢$~¢$~¢Ð$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢‡$~¢$~¢$~¢Y$}¡üf„þVoÿVpÿVpÿVpÿVoÿ\xÿ#zþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!t•þDXÿ?Rÿ7Gÿ4Dÿ1?ÿ0?ÿ1@ÿ3Cÿ,9ÿ !+ÿ,:ÿ8Iÿ9Jÿ+8ÿ &ÿSlÿ$€¤å$~¢-$~¢$¤ÍkŠÿ8Iÿ4Dÿ,9ÿ %0ÿ-:ÿ,:ÿ '3ÿ4Dÿ8Iÿ %0ÿ7Hÿ4Dÿ7Hÿ?Rÿ9Kÿbþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýc€ÿUoÿVpÿVpÿUoÿ_{ÿ#{žþ$~¢ÿ$~¢­$~¢$~¢$~¢0$~¢ë$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢£$~¢$~¢$~¢?$~£ô"w™þ[vÿVpÿVpÿVpÿVpÿ\xÿ#zþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nþDXÿ=Pÿ5Fÿ3Cÿ0?ÿ7Hÿ+8ÿ "-ÿ6Fÿ;Mÿ,:ÿ (ÿ !+ÿ.<ÿ1@ÿ`{ÿ$€¤Ù$~¢$~¢ $€¤¹kŠÿ #-ÿ 'ÿ+9ÿ:Kÿ7Gÿ)6ÿ (4ÿ0?ÿ*7ÿ8Iÿ1@ÿ2Aÿ8Jÿ=Pÿ;MÿVoþ$€¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýa~ÿUoÿVpÿVpÿWrÿ!q‘þ$£ý$~¢ÿ$~¢‚$~¢$~¢$~¢V$~¢û$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢½$~¢ $~¢$~¢*$~¢è$~¢ÿ kŠþVpÿVpÿVpÿVpÿ\xÿ#zþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýdþATÿÿ ",ÿ )ÿ1@ÿ;Mÿ/=ÿ*7ÿ0?ÿ0?ÿ9Jÿ2Bÿ=Oÿ?RÿH^þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#{Ÿý^zÿVoÿVpÿUoÿc€þ$} ý$~¢þ$~¢û$~¢U$~¢$~¢$~¢ƒ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ò$~¢$~¢$~¢$~¢×$~¢ÿ#zþ^zÿVoÿVpÿVpÿ[vÿ#yœþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýYsþAUÿ:Kÿ:Kÿ*7ÿ4Dÿ9Jÿ &2ÿ,:ÿ.;ÿ )5ÿ1@ÿ7Hÿ6Gÿ $/ÿ %0ÿ nÿ$€¤¯$~¢$~¢$~£}#{žÿI_ÿ6Fÿ0?ÿ)6ÿ-:ÿ/=ÿ )ÿ+9ÿ;Mÿ/>ÿ1@ÿ/>ÿ;Lÿ7GÿAUÿ=Oÿ"wšþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"w™þYtÿVpÿVpÿYtÿ"t–þ$£ý$~¢ÿ$~¢ë$~¢/$~¢$~¢$~¢®$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ä$~¢%$~¢$~¢ $~¢Â$~¢ÿ$£ý!oþWqÿVpÿVpÿXsÿ"u—þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|ŸýKaÿATÿ:Lÿ0?ÿ;Mÿ)5ÿ.<ÿ.<ÿ.<ÿ7Gÿ7Gÿ #.ÿ %ÿ %1ÿ0?ÿ8Hÿ"v˜ÿ$£Ž$~¢$~¢$~¢W$~¢ûBVÿ $ÿ #-ÿ5Eÿ6Gÿ0?ÿ.<ÿ4Dÿ #-ÿ.<ÿ7Hÿ4Dÿ1@ÿ:Kÿ@Sÿ9Kÿi‡þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mþVpÿVpÿVoÿg…þ$~¢ý$~¢ý$~¢ÿ$~¢Ï$~¢$~¢$~¢$~¢Ó$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ñ$~¢:$~¢$~¢$~¢©$~¢ÿ$~¢ý$|Ÿýa~ÿUoÿVpÿVpÿ mþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þEYÿ?Rÿ8Hÿ6Fÿ.<ÿ1@ÿ0>ÿ7Hÿ-;ÿ &ÿ (4ÿ3Bÿ*7ÿ,9ÿ1@ÿLbÿ$| þ$~¢h$~¢$~¢$~¢1$¤ìSlÿ #.ÿ0?ÿ )5ÿ %ÿ $/ÿ6Fÿ0>ÿ2Bÿ7Hÿ '3ÿ5Eÿ4Dÿ7Hÿ=Pÿ;MÿSkþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#|Ÿý`|ÿUoÿVpÿ[wÿ#xšþ$~£ý$~¢ý$~¢ÿ$~¢ª$~¢$~¢$~¢3$~¢í$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ú$~¢R$~¢$~¢$~¢Ž$~¢ÿ$~¢ý$£ý"s”þXsÿVpÿUoÿbþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ýa|þ@Tÿ>Pÿ3Cÿ6Fÿ2Bÿ7Hÿ &2ÿ !+ÿ5Eÿ2Aÿ/=ÿ1@ÿ8Hÿ-:ÿ 'ÿK`ÿ$£ó$~¢?$~¢$~¢$~¢$¤Ï lŒÿ;Mÿ5Eÿ.<ÿ-;ÿ6Fÿ '2ÿ *ÿ1@ÿ,9ÿ:Kÿ2Aÿ1@ÿ4Dÿÿ9Kÿ2Bÿ+8ÿ.=ÿ)6ÿ:Kÿ4Cÿ7HÿAUÿ7Hÿdþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zþ^zÿVoÿVoÿ^zÿ#zžþ$~¢ý$~¢ý$~¢þ$~¢ú$~¢Q$~¢$~¢$~¢‡$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Š$~¢$~¢$~¢V$~¢û$~¢þ$~¢ý$~£ý"w™þZuÿVpÿUoÿc€þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nŽþAUÿ?Rÿ8Iÿ3Cÿ/>ÿ;Lÿ0>ÿ,:ÿ-;ÿ 'ÿ #.ÿ5Eÿ1?ÿ,:ÿ/=ÿ>Qÿ!s”ÿ$£±$~¢$~¢$~¢$~¢$~¢f$} þ@Rÿ %0ÿ2Aÿ #.ÿ %ÿ+8ÿ,9ÿ)6ÿ9Kÿ1@ÿ6Fÿ,:ÿ3Cÿ6Gÿ=Pÿ?RÿG[þ$} ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!r“þXrÿUoÿWqÿ!pþ$£ý$~¢ý$~¢ý$~¢ÿ$~¢é$~¢,$~¢$~¢$~¢²$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¥$~¢$~¢$~¢>$~¢ó$~¢þ$~¢ý$~¢ý$~¢ýj‰þVpÿVpÿWrÿ!q’þ$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýVpþAUÿ:Kÿ8Jÿ5Eÿ3Cÿ '3ÿ1@ÿ (4ÿ8Iÿ6Gÿ.<ÿ+9ÿ2Bÿ1@ÿ )ÿ8Iÿ#{žÿ$~£w$~¢$~¢$~¢$~¢$~¢.$£éc€ÿ8Jÿ2Aÿ.=ÿ4Dÿ8Iÿ (4ÿ2Aÿ '3ÿ %1ÿ3Bÿ0>ÿ:Kÿ2Bÿ8IÿBVÿ7Hÿi‡þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý!pþ^{ÿc€þ$| ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Í$~¢$~¢$~¢$~¢Ö$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¿$~¢ $~¢$~¢($~¢ç$~¢ÿ$~¢ý$~¢ý$~¢ý#zœþ]yÿUoÿYsÿ mþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!q’þBVÿ@Tÿ:Kÿ4Dÿ,:ÿ7Hÿ2Aÿ7Hÿ2Aÿ #.ÿ0>ÿ %1ÿ $ÿ 'ÿ,9ÿ-;ÿRjÿ$¤ñ$~¢<$~¢$~¢$~¢$~¢$~¢ $£¹!q‘ÿ )5ÿ %ÿ)6ÿ1@ÿ %1ÿ5Eÿ4Dÿ/>ÿ:Kÿ/>ÿ/>ÿ-:ÿ5Eÿ7Hÿ>Pÿ?RÿFZþ#|Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý#{žþ#zþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¦$~¢$~¢$~¢6$~¢ï$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ô$~¢$~¢$~¢$~¢Õ$~¢ÿ$~¢ý$~¢ý$~¢ý$~£ý!oþdþ"t–þ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ýUnþBUÿ;Mÿ8Iÿ5Eÿ6Gÿ,:ÿ.<ÿ !,ÿ3Bÿ '3ÿ,9ÿ9Jÿ0?ÿ.<ÿ/=ÿ;Mÿ pÿ$£Ç$~¢$~¢$~¢$~¢$~¢$~¢$~¢q#|Ÿÿ?Qÿ '3ÿ3Cÿ "-ÿ '3ÿ/=ÿ 'ÿ (5ÿ-;ÿ (4ÿ8Jÿ2Aÿ8Jÿ2Aÿ8JÿBUÿ7Hÿa}þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢y$~¢$~¢$~¢^$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢æ$~¢'$~¢$~¢ $~¢À$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$}¡ý$}¡ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýkŠþ@Tÿ@Sÿ:Kÿ5Fÿ+9ÿ4Dÿ-;ÿ:Lÿ2Bÿ1Aÿ8Jÿ)5ÿ (4ÿ4Dÿ %1ÿ &ÿ8Hÿ#zÿ$£ƒ$~¢$~¢$~¢$~¢$~¢$~¢$~¢+$£åg…ÿ9Jÿ/=ÿ3Cÿ:Kÿ1@ÿ1@ÿ:Lÿ-;ÿ0?ÿ.=ÿ*7ÿ0?ÿ5Eÿ7Hÿ=OÿATÿÿ9Kÿ5Eÿ.<ÿ2BÿBVÿ"u–ÿ$£´$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢M$£õRjÿ4Dÿ.<ÿ %0ÿ-;ÿ4Dÿ %1ÿ/=ÿ.<ÿ %0ÿ1@ÿ &1ÿ3Cÿ1@ÿ8Iÿ;MÿBVÿ6Fÿþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ë$~¢$~¢$~¢$~¢Ù$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢p$~¢$~¢$~¢o$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýfƒþAUÿATÿ7Hÿ7Gÿ8Iÿ3Cÿ8Iÿ-:ÿ2Aÿ+9ÿ $/ÿ2Aÿ !+ÿ !+ÿ1@ÿ "-ÿ $ÿLbÿ$£ú$~¢]$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£½"t–ÿ:Kÿ)6ÿ/=ÿ7Hÿ*7ÿ/=ÿ8Iÿ,:ÿ7Hÿ4Dÿ5Eÿ6Gÿ5Eÿ2Bÿ7Hÿ:LÿAUÿ8Iÿeƒþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ò$~¢$~¢$~¢H$~¢ô$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢$~¢$~¢$~¢Y$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý nŽþCXÿAUÿ;Mÿ4Dÿ3Cÿ-;ÿ-:ÿ.;ÿ-;ÿ*7ÿ4Dÿ &2ÿ2Aÿ0?ÿ $0ÿ+9ÿ3Cÿ+8ÿl‹ÿ$¤Ë$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢]$~¢ùLbÿ &ÿ.=ÿ #.ÿ %ÿ-;ÿ &2ÿ )ÿ1@ÿ !+ÿ/=ÿ '3ÿ2Aÿ.<ÿ8Hÿ8Iÿ>Qÿ@Sÿ8Iÿj‰þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ú$~¢¬$~¢w$~¢Ï$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ç$~¢$~¢ $~¢Ž$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!q’þEYÿAUÿÿ 'ÿ !+ÿ/=ÿ 'ÿ '3ÿ nŽÿ$¤Í$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢U$£öÿ %1ÿ $0ÿ3Cÿ #.ÿ !+ÿ0?ÿ *ÿ (4ÿ+8ÿ $/ÿ0?ÿ (4ÿ1Aÿ1?ÿ3Cÿ9Kÿ?Rÿ?Rÿ9Kÿe‚þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýmŒþEZÿAUÿ>Qÿ8Iÿ9Jÿ6Fÿ4Dÿ7Gÿ2Aÿ6Gÿ3Bÿ2Aÿ9Jÿ/=ÿ8Iÿ5Eÿ-:ÿ5Eÿ2AÿPgÿ$~¢ú$~¢e$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $£¬"w™ÿ5Dÿ*7ÿ,9ÿ ",ÿ.;ÿ4Dÿ+8ÿ8Iÿ2Aÿ5Eÿ6Gÿ5Eÿ7Hÿ7Gÿ5Eÿ9Jÿ9Jÿ?Rÿ@Tÿ6Gÿþ$| ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$~¢ýdþATÿAUÿ=Oÿ7Hÿ1Aÿ3Cÿ.<ÿ.;ÿ-;ÿ*6ÿ '3ÿ,:ÿ &ÿ/=ÿ "-ÿ *ÿ3Bÿ %1ÿ $/ÿ@Tÿ#x›ÿ$£»$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢8$£çh†ÿ=Oÿ/>ÿ/>ÿ8Iÿ (5ÿ*7ÿ2Aÿ *ÿ/>ÿ $/ÿ,9ÿ*6ÿ.=ÿ,:ÿ4Dÿ2Aÿ8Iÿ>PÿBVÿ6FÿKaþ!t•þ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$¤ý"xšþUnþ@TÿBVÿ;Mÿ7Hÿ7Hÿ1@ÿ6Fÿ0?ÿ6Fÿ1@ÿ8Iÿ0?ÿ:Lÿ/=ÿ4Dÿ2Aÿ #.ÿ+8ÿ,9ÿ *ÿ^yÿ$¤î$~¢F$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢}$~¢ýNdÿ &ÿ)6ÿ (5ÿ %ÿ,:ÿ-;ÿ )5ÿ8Iÿ/>ÿ9Jÿ2Aÿ8Iÿ1@ÿ8Iÿ1@ÿ7Hÿ8Hÿ;MÿBVÿ;Nÿ;Lÿ`|þ#|Ÿý$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$}¡ýg„þG]ÿ@TÿATÿÿ 'ÿ-:ÿ*6ÿ %0ÿ6Gÿ/>ÿ/>ÿ8IÿOgþ#|Ÿÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£»"v˜ÿ;Lÿ6Fÿ.<ÿ1?ÿ:Kÿ-;ÿ0>ÿ0?ÿ ",ÿ1?ÿ !+ÿ0?ÿ (5ÿ5Eÿ/=ÿ8Iÿ6Fÿ8IÿQÿ8Hÿ6Gÿ3Bÿ,:ÿ3Bÿ )5ÿ5Eÿ,9ÿ9Jÿ0>ÿ9Kÿ/=ÿ.=ÿ0?ÿ 'ÿ '3ÿ*7ÿ $ÿ6Fÿ"w™ÿ$£È$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢9$£ã pÿ8Iÿ #.ÿ+9ÿ*6ÿ $ÿ,:ÿ)6ÿ*6ÿ8Iÿ0>ÿ:Kÿ.<ÿ6Fÿ)6ÿ3Cÿ,:ÿ4Dÿ6Fÿ7Hÿ=PÿBVÿ>Pÿ8IÿEYþcþ"xšþ$£ý$¤ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý#zœýh†þOfþATÿ@Tÿ@Sÿ9Jÿ7Hÿ3Cÿ3Cÿ7Hÿ2Bÿ:Kÿ/=ÿ5Fÿ $/ÿ0?ÿ *ÿ*7ÿ.<ÿ (5ÿ8Iÿ2Aÿ/=ÿ7Hÿ,9ÿe‚ÿ$£ê$~¢E$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢e$£ö\wÿ #.ÿ1@ÿ )5ÿ-;ÿ:Kÿ/=ÿ1Aÿ.<ÿ !+ÿ0>ÿ "-ÿ4Dÿ/=ÿ:Kÿ2Aÿ7Hÿ1?ÿ3Cÿ7Gÿ7Hÿ>QÿBVÿ>Qÿ9Jÿ=OÿRjþg…þ"v˜þ$}¡ý$¤ý$€¤ý$¤ý$£ý$£ý$£ý$£ý$£ý$£ý$£ý$¤ý$¤ý$~¢ý"xšþkŠþXqþFZÿ@Sÿ@Tÿ?Sÿ:Lÿ9Jÿ5Eÿ8Hÿ7Hÿ1@ÿ4Dÿ %1ÿ1?ÿ %0ÿ6Fÿ/=ÿ9Jÿ0?ÿ,:ÿ0>ÿ $ÿ (4ÿ+8ÿ ",ÿ0?ÿc€ÿ$~¢ú$~¢t$€¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡ýYsÿ8Iÿ+8ÿ.<ÿ-:ÿ $ÿ,9ÿ*7ÿ,:ÿ9Kÿ/>ÿ7Hÿ %1ÿ1@ÿ &2ÿ5Fÿ1@ÿ9Jÿ4Dÿ4Dÿ7Hÿ7Hÿ>PÿAUÿATÿ=Oÿ8Iÿ=PÿG\þUnþa|þjˆþ pþ!s”þ"u—þ"u—þ!s•þ p‘þkŠþc€þXrþMcþCWÿ>Pÿ@SÿAUÿ?Rÿ9Kÿ9Jÿ6Fÿ8Iÿ5Fÿ-;ÿ2Aÿ )5ÿ7Hÿ1?ÿ9Kÿ*7ÿ2Aÿ *ÿ )5ÿ.<ÿ*7ÿ9Kÿ0?ÿ+8ÿ2Bÿ )ÿKaþ$} ÿ$~£›$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£©$} ÿKaþ &ÿ-;ÿ '3ÿ)6ÿ9Kÿ/>ÿ/>ÿ,:ÿ (ÿ1Aÿ*6ÿ9Jÿ0?ÿ6Fÿ '3ÿ2Bÿ.<ÿ9Kÿ4Dÿ5Eÿ5Eÿ6FÿQÿ=Oÿ@Sÿ=Oÿ>Qÿ=Oÿ=Pÿ?Rÿ@Tÿ@Tÿ@Sÿ=Pÿ7Hÿ8Iÿ6Gÿ7Hÿ5Eÿ+8ÿ4Dÿ/=ÿ:Lÿ.=ÿ2Bÿ *ÿ2Aÿ)6ÿ8Iÿ2Aÿ.<ÿ.<ÿ $ÿ+8ÿ,9ÿ )5ÿ6FÿPgþ#yœÿ$£·$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£»#yœÿJ`þ9Jÿ/>ÿ.<ÿ0?ÿ $ÿ*6ÿ.<ÿ/=ÿ9Kÿ)6ÿ1?ÿ ",ÿ1Aÿ2Aÿ9Jÿ,:ÿ1@ÿ-:ÿ9KÿBVÿI^ÿ8Iÿ9Jÿ8Iÿ6Gÿ=Oÿ=Oÿ?Rÿ?SÿAUÿ@SÿBVÿ@SÿAUÿ?Rÿ?Rÿ>Qÿ=Oÿ8Iÿ;Lÿ5Eÿ2Bÿ7Gÿ5Eÿ6Fÿ*7ÿ6Fÿ2Bÿ8Hÿ )5ÿ/=ÿ '4ÿ9Jÿ0?ÿ6Fÿ *ÿ*7ÿ*7ÿ*7ÿ:Kÿ-;ÿ*7ÿ.<ÿ %ÿBVþ#zÿ$£Æ$~¢%$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%$£Ã#|ŸÿMcþ 'ÿ (4ÿ*7ÿ '3ÿ8Iÿ0>ÿ )5ÿ.;ÿ (ÿ5Eÿ2Aÿ6Fÿ (4ÿ*7ÿ0?ÿ6Gÿ2Aÿ-:ÿG]þ"xšý!s”þh…þNdþLcÿ6Fÿ8Jÿ5Fÿ7Hÿ6Fÿ9Jÿ4Dÿ:Lÿ6Gÿ8Iÿ6Fÿ5Fÿ4Cÿ?Rÿ8HÿMdÿNeÿ?Rÿ,9ÿ4Dÿ5Fÿ1@ÿ)6ÿ/=ÿ2Bÿ7Gÿ)6ÿ.<ÿ !+ÿ6Gÿ1@ÿ3Cÿ+8ÿ $ÿ/=ÿ*7ÿ.<ÿ9JÿF[þ"w™ÿ$£Î$~¢.$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢)$£Â#zœÿKaþ6Fÿ3Cÿ,9ÿ2Bÿ 'ÿ %0ÿ6Fÿ0>ÿ7Hÿ ",ÿ*6ÿ0?ÿ4Dÿ3Cÿ %1ÿ1@ÿ0?ÿ]yþ$£ý"xšþ!t–þ$| ý$|Ÿý oŽþfƒþOfþ9JÿDXÿI_þQiÿ3Bÿ9Jÿÿ8Iÿ $/ÿ.<ÿ #-ÿ+8ÿ9Kÿ+8ÿ-;ÿ '3ÿ 'ÿLcþ#{Ÿÿ$£Ì$~¢2$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$$£¸$} ÿ]xÿ &2ÿ *ÿ/>ÿ '3ÿ6Gÿ1@ÿ )ÿ/=ÿ '3ÿ6Gÿ1@ÿ $0ÿ/>ÿ-:ÿ:Lÿ '3ÿbþ$~¢ýRjþ0>ÿJ`ÿþfƒþ#y›þ#{žý@SÿJ_þ$£ýfƒþ>Pÿ.<ÿXrþ$}¡ý$| ý!t–þ oþ]wþPgþc€þ#|Ÿý"w˜þÿ0>ÿDXÿSkþATÿTmþ$£ýa~þ %0ÿ6GÿKaÿ$| ý nþ4Cÿ7Hÿ1@ÿ/>ÿ+9ÿl‹þ"u—þ2Aÿ3Bÿ1@ÿ4Dÿ 'ÿ/=ÿ4Dÿ/>ÿ.<ÿ %ÿ/>ÿ5Fÿ+9ÿ1@ÿ 'ÿ*7ÿdÿ$~¢þ$£°$~¢"$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢†$£ó!r“ÿ@Sÿ &ÿ-;ÿ.<ÿ1@ÿ5Eÿ &ÿ (4ÿ7Gÿ.<ÿ1@ÿ )ÿ2AÿNeÿ$}¡ýi‡þ4Dÿ6Fÿ !+ÿ7Gÿ0>ÿ &2ÿ>Pÿ+9ÿPgþ%€¤ý]xþ1@ÿ.<ÿ=Oÿ#y›þ!t•þATÿ-;ÿ.<ÿJaÿRjþ!t•þOfþ6Gÿ '3ÿ #.ÿ9Kÿ+9ÿ/=ÿ #.ÿ+8ÿ9Jÿ #.ÿ )5ÿ )5ÿ '3ÿ8Iÿ>Qÿi‡ÿ$~£÷$~¢‘$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢\$£Ý"xšÿQhÿ=Oÿ,:ÿ ",ÿ.<ÿ $/ÿ6Fÿ0>ÿ &ÿ0?ÿ1@ÿ1?ÿþ$€¤ý_zþ $0ÿ+8ÿ4Dÿ.=ÿ.=ÿ,9ÿ7Hÿ #.ÿNeþ%€¥ýUnþ:Kÿ '4ÿ.<ÿ!p‘þ#{žýg…þi‡þ pþ#{žý$~¢ý#y›þSkþ=Pÿ2Aÿ (4ÿ,:ÿ (5ÿ:Kÿ %0ÿ *ÿ2Bÿ/=ÿ3Cÿ*7ÿ #-ÿPhÿ#zœÿ$£ã$~¢h$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢0$£±$£û mŒÿ:Lÿ #.ÿ6Fÿ/=ÿ,9ÿ )5ÿ "-ÿ:Kÿ (4ÿ #.ÿjˆþ$}¡ýKaÿ "-ÿ0?ÿ5Eÿ &ÿ5Fÿ/>ÿ $/ÿ6FÿXrþ$€¤ýZtþ '3ÿ2Aÿ3Bÿ\wþ%€¤ý"w™þh†þdþI_þDYþdþ$€¤ýXrþ %1ÿ7Gÿ,:ÿ $ÿ2Aÿ3Cÿ)5ÿ.<ÿ &ÿ.<ÿI^ÿe‚ÿ$}¡ý$£º$~¢9$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢o$£ß#yœÿ`{ÿBVÿ (ÿ %1ÿ2Aÿ/>ÿ2Aÿ ",ÿ.<ÿ"u—þ!r“þ5Eÿ5Eÿ+8ÿ/=ÿ)6ÿ5Eÿ,9ÿ $/ÿ9JÿXqþ%€¥ýVoþ 'ÿ0?ÿ3BÿJ_þ%€¥ýYsþ)6ÿ1@ÿ,:ÿ,:ÿCWþ$£ý_{þ &ÿ,9ÿ7Hÿ %0ÿ-;ÿ $/ÿ/>ÿ6Fÿ/=ÿWpÿ#zÿ$¤ä$~¢z$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢,$£œ$€¤ð"u—ÿTlÿÿ4Dÿ *ÿ/=ÿ\wÿ"u–ÿ$£ó$£¥$~¢4$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢D$£¯$£ó#x›ÿÿ5Eÿ2Aÿ5Eÿ3BÿRjþVoþ1@ÿ/>ÿ *ÿ5Eÿ/=ÿ %ÿ4Dÿ-;ÿ %ÿZsþ%€¥ýCWþ7Hÿ (4ÿ (ÿF[ÿ#zþ#zý pþ!s”þ#yœþ#zœþ mŒþLbþ,9ÿ.<ÿ4Dÿ !+ÿ #.ÿG\ÿYrÿ!s”ÿ$£ö$£¶$~¢L$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢I$£©$¤ì#yœÿl‹ÿLbÿ+8ÿ1@ÿ3Bÿ 'ÿ.<ÿ1@ÿ)6ÿ/=ÿ '3ÿ2Bÿ.<ÿ $0ÿb~þ#zþI_þ6Fÿ,9ÿ !,ÿÿ5Eÿ ",ÿ ",ÿBVÿI^ÿcÿ#y›ÿ$€¤ð$£°$~¢P$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢8$£Œ$¤Õ$~¢ú"u–ÿi‡ÿNdÿ3Bÿ7Hÿ1@ÿ $ÿ.<ÿ4Cÿ *ÿ.<ÿ3Cÿ1@ÿ>Pÿ=Oÿ (4ÿ.<ÿ0>ÿ,9ÿ;Mÿ=Pÿ %1ÿ $0ÿ7Gÿ #-ÿ &1ÿF[ÿLbÿ`{ÿ"u—ÿ$~¢û$€¤Ù$£“$~¢>$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢V$£ž$¤×$£ö#yœÿ!r“ÿa}ÿMcÿJ`ÿ?Rÿ )6ÿ3Bÿ7Hÿ (ÿ*7ÿ7Gÿ (ÿ (4ÿ:Lÿ #.ÿ (5ÿAUÿ4Dÿ>PÿYrÿ_{ÿmŒÿ#yœÿ$£ø$€¤Û$£¤$~¢\$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢I$£€$£´$€¤Ù$¤ð$~¢ü#zœÿ!t•ÿ!q‘ÿl‹ÿd€ÿc€ÿe‚ÿ]xÿa~ÿj‰ÿh†ÿ nÿ"v˜ÿ#yœÿ$}¡ü$£ñ$€¤Û$¤·$£…$~¢M$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢8$~¢Y$£y$£–$¤¬$¤½%€¤È$€¤Î$€¤Ò%€¥Ò$€¤Ï$¤É$€¤¾$€¤®$£˜$£|$~¢\$~¢:$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢(@€ @;;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤%€¥%‚§8%‚§Y%‚§x%¦‘%€¥¡%€¤¨%€¤¨%€¥¡%¦’%‚§z%‚¦[%‚§9%¥$¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤ %‚§4%¦o$£¨#zÑ q‘ëkŠø_{ýÿUmÿRjÿSlÿSkÿ\wÿ^yþkŠø pì#zÓ$£ª%¦r%‚§7$€¤ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%¦%€¥#%¦n$~¡¼!q’íe‚ÿJ`ÿBVÿ/=ÿ0>ÿ)5ÿ*7ÿ)6ÿ )5ÿ+8ÿ '3ÿ,:ÿ '3ÿ1@ÿ-:ÿCVÿH]ÿc€ÿ q‘î$} ¿%¦r%€¥&#yœ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%€¥$€¤+%€¥‰#zÝb~þOfÿ/=ÿ-:ÿ (4ÿ3Bÿ5Eÿ+8ÿ,:ÿ,:ÿ+9ÿ,9ÿÿ-:ÿMdÿ`|ÿ"x›à%€¥%€¥/`|$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£$¤%€¥€#zœáÿBVÿ*7ÿ*7ÿ7HÿH]þ`|þ nŽþVoþ0>ÿ '3ÿ/=ÿ)6ÿ,:ÿG\þ q‘þ7Gÿ)6ÿ-;ÿ)5ÿ,:ÿ5EÿLbþ2Aÿ*8ÿ '3ÿBVÿYrÿ"xšä%€¥†$€¤$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡%€¥Q$}¡Ëa~ÿ@Sÿ-:ÿ &2ÿ6Fÿ^yþ oŽþl‹þVoþDXÿ:Kÿ.<ÿ/>ÿ*7ÿ0>ÿ*7ÿ]xþ pþ2Aÿ/=ÿ/=ÿ,:ÿ/>ÿ0>ÿj‰þ2Aÿ-:ÿ-;ÿ (5ÿ (4ÿ@Sÿ_zÿ$| Ð%¥X$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£$£%¥Œ!q‘òKaÿ1Aÿ (5ÿ-;ÿ0>ÿ-:ÿkŠþ`{þ/>ÿ/=ÿ/=ÿ2Aÿ*7ÿ1?ÿ-:ÿ/=ÿ.<ÿ^yþ#zþe‚þdþPgþ4Cÿ '3ÿ9Jÿ mŒþTlþ=Oÿ $/ÿH^ÿOgþ,9ÿ.<ÿKaÿ oŽõ%€¥“$¤$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£%€¤)$~¡¶dÿ?Rÿ #-ÿ>Pÿdþ:Kÿ (5ÿ-;ÿþ!r“þJ`þYrþg„þ5Eÿ0?ÿ,:ÿ2Aÿ-;ÿ2AÿdþdþF[ÿLcþJ_þ+9ÿ/>ÿ4DÿkŠþ`{þdþ`|þ"w™þh†þ9Jÿ-:ÿ "-ÿ:Lÿdÿ$} ½%€¤/$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£$€¤9#|ŸÎ^yÿ*6ÿ+8ÿ*7ÿRjþ$€¤ýi‡þ8Iÿ '4ÿFZÿ#zý nŽþYsþH^ÿ5Eÿÿ2Bÿ5Dÿ pþiˆþ?Qÿ?Qÿ6Fÿ:Lÿ1?ÿ6Fÿ nþEZÿYsþ$£ýa~þ6Gÿ &1ÿ0>ÿH]ÿ3Cÿ &2ÿZtÿ#{ŸÔ$€¤@$¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤$€¤>$| ØOfÿ*7ÿ1@ÿ0?ÿ %0ÿNdþ#yœþ"v˜þZtþ-;ÿ8Iÿ pþ\vþ3CÿCWÿVoþh†þ=Oÿ4Cÿ3Cÿ;Mÿ\wþg…þjˆþ mŒþ mŒþa}þ5Eÿ1@ÿk‰þk‰þ"u—þSlþ1?ÿ*6ÿ.=ÿOgþ#x›þKaþ-:ÿ.;ÿJ`ÿ#{žÞ%€¥F$€¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£%€¥6#z×Neÿ1@ÿ:KÿYsþ/=ÿ-;ÿWqþl‹þLbþ!s”þI^þ.=ÿ_{þ"w™þk‰þ nþbþNeÿ;Lÿ:Kÿ:Lÿ;Lÿ;Lÿ;Mÿ=Pÿ?RÿDXÿAUÿ4Dÿ9JÿkŠþ"xšþI^þ.<ÿ1@ÿ-;ÿAUÿ!s”þZtþ/=ÿ '3ÿ )5ÿ.=ÿNeÿ"x›Ý%€¥>$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤%#|ŸËXqÿ '3ÿ+8ÿ3Cÿ nþXrþ/>ÿ^yþe‚þ3BÿZtþ!s”þ>QÿJ`ÿ`{þNeÿCWÿ=Oÿ=PÿATÿDXÿG]ÿI_ÿJ`ÿI^ÿF[ÿBVÿ>QÿQÿEYÿSkþa~þmŒþ!t•þ"xšþ#yœý#yœý"x›þ"u–þ oþe‚þXqþJ`ÿ@Tÿ;Mÿ8Iÿ5Eÿ4Dÿ?Rÿ oþi‡þNeþh†þj‰þ!r’þ!t•þYsþ4Dÿ,9ÿTlÿ$£¸$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡$€¤‚g„þ8Hÿ)6ÿ0?ÿ (4ÿ,:ÿ+8ÿYsþ!r“þ"v˜þTmþ2Aÿ5Fÿ:Lÿ=Oÿ?RÿLcÿc€þ"v˜þ$~¢ý$¤ý$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý$£ý$~¢ý"xšþh‡þSkþCWÿQÿI^ÿfƒþ#{žý$¤ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$£ý#|ŸýkŠþPhÿ@Sÿ:KÿKaÿ nŽþTlþ4Cÿ]xþ_zþ1@ÿ-;ÿ.<ÿ*7ÿ+9ÿ2Aÿ!t•ò%€¥P$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤$} ÀMcÿ/>ÿKaþ!r’þ_{þa}þ!t•þ\vþ1@ÿBVÿb~þATÿQÿ"xšÜ%¥%$~¢$~¢$~¢$~¢$~¢$£%€¥ug…ÿ/=ÿ+9ÿ^zþcþ/=ÿ/=ÿ-;ÿI_ÿ nŽþ>PÿPÿVoþ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢·$~¢$~¢$~¢O$~¢ö$~¢U$~¢$~¢$~¢Û$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý`|þ?RÿKaÿ oþ?RÿDXÿPgþ3Cÿ7HÿRjþ,:ÿ+9ÿjˆü%¦a$~¢$~¢$~¢$£$¤¥Ofÿ (5ÿ)6ÿ '3ÿ.<ÿ1?ÿPhþRjþCWÿ7Hÿ=OÿF[ÿ"v˜þ$£ý$~¢ý$~¢ý$~¢ý$}¡ý$| ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Œ$~¢$~¢$~¢)$~¢Ð$~¢-$~¢$~¢ $~¢Å$~¢ÿ$~¢ý$~¢ý$~¢ý"w™þ!r”þ$}¡ý$~¢ý$~¢ý$~¢ý$~¢ý#zœýPgÿÿ.=ÿ,9ÿ-;ÿ.<ÿ/>ÿ3Cÿ9Kÿ>Qÿbþ$¤ý$~¢ý$~¢ý$~¢ý#xšþcþdþ#{žþ$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢_$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢­$~¢ÿ$~¢ý$~¢ý$| ýa}ÿXsÿ"u–þ$£ý$~¢ý$~¢ý$~¢ý$£ýk‰þBVÿBVÿj‰þMdþ3Bÿ.<ÿ0?ÿ+8ÿ2Aÿ+8ÿ9Jÿ"w˜å%¦($~¢$~¢%‚§Si‡ú &1ÿ+8ÿ+8ÿ0>ÿ.<ÿ1@ÿ/=ÿ3Bÿ6Fÿ=OÿH]ÿ#yœý$~¢ý$~¢ý$~¢ý$} ýcþUoÿVqÿ!r’þ$£ý$~¢ý$~¢ý$~¢þ$~¢ï$~¢7$~¢$~¢ $~¢$~¢9$~¢$~¢$~¢$~¢’$~¢ÿ$~¢ý$~¢ý#{Ÿþ]yÿVpÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý#|ŸýRjþPÿ^zþ$¤ý$~¢ý$~¢ý$£ý!pþWqÿVpÿVpÿ!oþ$£ý$~¢ý$~¢ý$~¢ÿ$~¢×$~¢$~¢$~¢Q$~¢$~¢$~¢$~¢$~¢$~¢v$~¢ÿ$~¢ý$~¢ý#{Ÿþ^zÿVpÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýh†þATÿ7Hÿ3Cÿ1Aÿ+8ÿ/=ÿ,9ÿ0>ÿ1@ÿ )5ÿVoÿ%€¤•$~¡$€¤ $}¡¸CVÿ #.ÿ.=ÿ*7ÿ1@ÿ/>ÿ0?ÿ1@ÿ4Dÿ;MÿAUÿ!r“þ$£ý$~¢ý$~¢ý#zþ^zÿUoÿVpÿVpÿ!oþ$£ý$~¢ý$~¢ý$~¢ÿ$~¢³$~¢$~¢8$~¢›$~¢$~¢$~¢$~¢7$~¢$~¢Z$~¢ü$~¢þ$~¢ý#|Ÿþ^zÿVpÿ!r“þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"w™þJ`ÿ:Lÿ4Dÿ0?ÿ0>ÿ/>ÿ.<ÿ,9ÿ #.ÿ,9ÿDXÿ#{ŸÂ%€¥%¥#y›ØBVÿ/=ÿ )5ÿ.<ÿ)6ÿ1@ÿ1@ÿ2Bÿ6Fÿÿ,9ÿ (4ÿ1Aÿ/=ÿ+9ÿh†ù%‚§]%‚§fd€û $/ÿ,:ÿ0>ÿ,:ÿ>QÿK`þ;Mÿ3Cÿ;Lÿ>Qÿ nŽþ$£ý$£ý"t–þWrÿXsÿ"s•þ$}¡ý`}þVoÿ!pþ$£ý$~¢ý$~¢ÿ$~¢Ô$~¢$~¢$~¢Ø$~¢ÿ$~¢þ$~¢ö$~¢ÿ$~¢é$~¢*$~¢ $~¢Ä$~¢ÿ$~¢ý#|Ÿþ^zÿVpÿ!r’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u–þF\ÿ8Iÿ3Bÿ1@ÿ2Aÿ=Oÿ6Gÿ '3ÿ '3ÿ/>ÿcý%‚§s%¦teƒý2Aÿ,9ÿ '2ÿ2Bÿiˆþ%¥ýVoþ4Cÿ;Mÿ@Sÿ!s”þ$£ý$~¢ý#x›þbþ kŠþ$~¡ý$} ý`}þVoÿ!pþ$¤ý$£ý$~¢ÿ$~¢°$~¢$~¢8$~¢ð$~¢þ$~¢ý$~¢þ$~¢þ$~¢õ$~¢A$~¢$~¢«$~¢ÿ$~¢ý#|Ÿþ^zÿVpÿ!r’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý"xšþI_ÿ9Jÿ4Dÿ0>ÿXrþ#zýTlþ0>ÿ0>ÿ (5ÿ]wþ%‚¦%‚§|^zþ $/ÿ-;ÿ1@ÿ,:ÿXrþ!s”þK`þ4Dÿÿ (4ÿZuÿ%¦‡%‚§pb~ü %1ÿ-:ÿ2Aÿ*7ÿ,:ÿ2Aÿ0?ÿ5Eÿÿbþ%¦}%‚§`i‡ù1@ÿ-:ÿ %0ÿ0>ÿ0?ÿ-;ÿ2Aÿ4Dÿ:Lÿ>Qÿ mþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý`|ÿUoÿVpÿXsÿ"t•ÿ$£Ñ$~¢$~¢$~¢Ú$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢­%‚§$¤?#x›ô\xÿVoÿVpÿWqÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý!t•þEZÿ8Jÿ2Bÿ2Aÿ.<ÿ.=ÿ+8ÿ.=ÿ/>ÿ (5ÿa}ü%‚§m%‚§I nó+9ÿ*7ÿ2Bÿ,:ÿ+9ÿ0?ÿ1@ÿ3Cÿ9Jÿ=Oÿdþ$¤ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$| ý_{ÿUoÿVoÿf„þ$}¡ÿ$~¢¬$~¢$~¢;$~¢ñ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Å$~¢ $~¢($~£ç mŒÿVpÿVpÿVqÿ!q’þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý mŒþBVÿ7Hÿ4Cÿ.<ÿ1@ÿ-:ÿ-;ÿ)6ÿ (4ÿ4Dÿl‹÷%‚§U%‚§0!t•æ8Hÿ.<ÿ %0ÿ-:ÿ0>ÿ/>ÿ0>ÿ4Dÿ7Hÿ=OÿXqþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý#zþ\wÿUoÿ[vÿ"w™þ$~£ÿ$~¢€$~¢$~¢d$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ú$~¢$~¢$~¢×#{žÿ_|ÿUoÿVpÿ!oþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýbþ?Rÿ7Gÿ1@ÿ2Bÿ+8ÿ0?ÿ-;ÿ-;ÿ.<ÿ.<ÿ pì%‚§9%€¥#{žÏ>Pÿ &2ÿ1@ÿ/>ÿ,9ÿ.<ÿ1@ÿ3Bÿ6Fÿ=OÿJ_þ#|Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"s”þWrÿVpÿ j‰þ$~¢þ$~¢ú$~¢T$~¢$~¢‘$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ê$~¢,$~¢$~¢Á$£ÿ!q’þWrÿUoÿh†þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýTmþÿ,9ÿ '3ÿ/=ÿ (4ÿ/=ÿ^yÿ%€¥…$~¢$~¢%‚§B nô3Bÿ.<ÿ &1ÿ.<ÿ,9ÿ0>ÿ1@ÿ2Aÿ6Fÿ=OÿDXÿ"w™þ$~£ý$~¢ý$~¢ý!oþXsÿa~ÿ$|Ÿý$~¢ý$~¢ÿ$~¢¨$~¢$~¢>$~¢ó$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢x$~¢$~¢q$~¢ÿ$~¢ý$~¢ýh†þUnÿ^zÿ#{žþ$~¢ý$~¢ý$~¢ý#zýNeÿÿ/=ÿ1@ÿ,:ÿ (4ÿ.<ÿ+8ÿj‰ø%‚§L$~¢$~¢$€¤#|ŸÏBVÿ %0ÿ0?ÿ.;ÿ2Aÿ.;ÿ0?ÿ1@ÿ3Cÿ9Kÿ=Pÿ]xþ$£ý$~¢ý$~¢ý$}¡ý"u–þ"v™þ$~¢ý$~¢ý$~¢ÿ$~¢|$~¢$~¢h$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢•$~¢$~¢V$~¢û$~¢þ$~¢ý#xšþc€þ!oþ$} ý$~¢ý$~¢ý$£ýfƒþATÿ9Jÿ4Dÿ1@ÿ.<ÿ/=ÿ )5ÿ0?ÿ)5ÿ*7ÿEYÿ#yœ×%¥$~¢$~¢$~¢%€¥Ysÿ/=ÿ,9ÿ/=ÿ)6ÿ/=ÿ,9ÿ1@ÿ3Bÿ6Fÿ=OÿBVÿ!s“þ$£ý$~¢ý$~¢ý$~£ý$~¢ý$~¢ý$~¢þ$~¢ù$~¢P$~¢$~¢•$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢¯$~¢$~¢<$~¢ó$~¢þ$~¢ý$~¢ý$} ý$~¢ý$~¢ý$~¢ý$£ý"w™þKaÿÿ &2ÿ.<ÿ #-ÿSkÿ%€¥˜$~¡$~¢$~¢$~¢%¥?!s•ñ2Aÿ,:ÿ )5ÿ-;ÿ-;ÿ0?ÿ/>ÿ2Aÿ4Dÿ8Iÿ=PÿOfþ#|Ÿý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢è$~¢*$~¢$~¢¿$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ç$~¢ $~¢'$~¢æ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$}¡ýYsþ?Rÿ8Iÿ3Cÿ0?ÿ0?ÿ.<ÿ.=ÿ/=ÿ/=ÿ,9ÿ9Jÿ oõ%¦H$~¢$~¢$~¢$~¢$€¤ $}¡µQhÿ.<ÿ+8ÿ1@ÿ,9ÿ0?ÿ/=ÿ/>ÿ2Bÿ5Eÿ;Mÿ=Oÿ\wþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ó$~¢$~¢$~¢à$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Û$~¢$~¢$~¢Õ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýe‚þBVÿ:Lÿ4Dÿ2Aÿ1@ÿ.;ÿ+8ÿ-;ÿ &1ÿ+8ÿ %0ÿG[ÿ$~¢¿$£$~¢$~¢$~¢$~¢$~¢%¦V mŒø,9ÿ-:ÿ $/ÿ.<ÿ (4ÿ/=ÿ.<ÿ0?ÿ3Bÿ6Gÿ=Oÿ>Pÿcþ$£ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ï$~¢u$~¢$~¢ú$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ñ$~¢H$~¢)$~¢Ü$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$£ýjˆþEYÿÿ1@ÿ4Cÿ7Hÿ=Pÿ>Qÿcþ$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢þ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢á$~¢×$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$£ýjˆþFZÿÿ+8ÿ0>ÿ0>ÿ0?ÿ2Bÿ4Dÿ7Hÿ=Pÿ>Pÿ\vþ#|Ÿý$£ý$~¢ý$~¢ý$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ÿ$~¢þ$~¢ý$~¢ý$£ý$}¡ýc€þDYÿÿ)5ÿ9Kÿ!q‘ö%€¥V$~£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£$£œ`|ÿ-;ÿ.<ÿ)6ÿ-:ÿ )5ÿ/=ÿ.<ÿ0?ÿ2Aÿ4Dÿ7Hÿ=Oÿ=OÿOfþ!r“þ$£ý$~£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý"u—þWpþAUÿ;Nÿ6Gÿ3Cÿ1?ÿ0?ÿ/=ÿ-;ÿ1@ÿ.<ÿ/=ÿ,9ÿ,:ÿVnÿ$¤¦$~£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%€¥&#zÖEYÿ.<ÿ*7ÿ1@ÿ-;ÿ.<ÿ/=ÿ-;ÿ0?ÿ2Aÿ4Cÿ6Gÿ;Nÿ=PÿAUÿ\wþ"w™þ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý#y›ýbþH^ÿ>Qÿ:Lÿ5Fÿ3Bÿ1@ÿ0?ÿ1@ÿ/=ÿ-;ÿ.<ÿ %0ÿ,:ÿ %0ÿH]ÿ#{žÜ$€¤-$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤%€¥V"t–ò:Kÿ)5ÿ '3ÿ+9ÿ,:ÿ1@ÿ/=ÿ.<ÿ0?ÿ1@ÿ3Bÿ5Eÿ8Jÿ=Oÿ=OÿDXÿYsþ oþ#{žý$£ý$¤ý$£ý$£ý$£ý$£ý$£ý$£ý$¤ý$£ý#|Ÿý!r’þ_zþJ`ÿ?Rÿÿ &2ÿ-:ÿ-;ÿ/=ÿ0?ÿ0>ÿ0?ÿ2Bÿ4Dÿ6Fÿ:Kÿ=Oÿ=Oÿ?SÿI_ÿWpþd€þmŒþ!r’þ!t•þ!t–þ!r“þ nþfƒþþNeþCXÿ>Qÿÿ0?ÿ.<ÿ0>ÿ2Aÿ3Bÿ3Cÿ8Iÿ:Lÿ:Lÿÿ/>ÿ1@ÿ0?ÿCWÿe‚þ\vþJ`ÿ?Rÿ:Lÿ9Jÿ:Lÿ:Kÿ:Lÿ9Kÿ8Iÿ9Jÿ=OÿDYÿEZÿ6Fÿ2Aÿ1Aÿ0>ÿ0?ÿ/=ÿ.<ÿ-:ÿ/=ÿ.=ÿ $/ÿ/>ÿ,9ÿ4Dÿÿ$~£µ$¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~£$¤$~£¬b~ÿ;Lÿ)5ÿ+8ÿ (4ÿ0?ÿ/>ÿ (5ÿ0?ÿ0?ÿ,:ÿ0>ÿOfþ#zþc€þ mŒþ nþh†þFZÿJ`þWpþ8IÿATÿ\wþfƒþ oþ nŽþ"w™þe‚þ4Dÿ.;ÿ2Aÿ-;ÿ+8ÿ1@ÿ,:ÿ)6ÿ,:ÿ.<ÿ.<ÿ,:ÿcÿ$£´$¤$~£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£%€¥œjˆû:Kÿ/=ÿ.<ÿ &2ÿ.<ÿ.<ÿ-:ÿ,:ÿ/=ÿ.<ÿ\vþfƒþ3Bÿ6Fÿ?RÿXqþKaÿ`{þkŠþ1@ÿI_ÿ#{žýWpþCVÿ7GÿMdþ!r“þ:Kÿ.=ÿ-;ÿ-:ÿ.<ÿ-:ÿ (4ÿ1@ÿ+8ÿ &2ÿ;LÿkŠý$~£¤$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢ %€¤|"v—ïH]ÿ-:ÿ-:ÿ/=ÿ $/ÿ1Aÿ,:ÿ*7ÿ9Jÿ!q‘þVoþ/=ÿ,:ÿ0>ÿ/>ÿ1@ÿ^yþf„þ2Aÿ7Gÿ"u–þWpþ>QÿRjþh†þþ4Dÿ '3ÿ0?ÿ.<ÿ &2ÿ1@ÿ)6ÿ*7ÿ+8ÿMcÿ pò%€¥„$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡%€¥O#{žÐc€ÿ4Cÿ-;ÿ,:ÿ,9ÿ (5ÿ.=ÿ:Kÿ"xšþDXÿ*7ÿ.=ÿ-;ÿ-;ÿ/=ÿcþdþ.<ÿ2Aÿi‡þ"v˜þh‡þ^zþ\wþ pþEYþ.<ÿ (4ÿ-;ÿ,:ÿ+8ÿ '3ÿ=PÿZtÿ#{žÕ%¥V$}¡$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£%€¥!$¤’!s”îWqÿ.;ÿ/>ÿ+8ÿ )5ÿMdþ q‘þ8Iÿ+8ÿ-;ÿ.<ÿ+8ÿ1@ÿf„þa~þ (4ÿ1@ÿþiˆþ3Bÿ/=ÿ=Oÿ!r“þJ`þ &2ÿ/=ÿ+8ÿ &1ÿ:KÿMdÿ!s“ñ%€¥™$€¤%$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%¦B$~¢¯ póVoÿ2Aÿ3CÿG\þYsþ3Cÿ &1ÿ1Aÿ $0ÿ2Aÿ &2ÿg„þþ1@ÿ $/ÿUnþ#yœþ`|þbþ mþ^yþ3Cÿ-;ÿ &1ÿÿ (4ÿ,9ÿ-:ÿ,9ÿXqþPhþ0?ÿ '3ÿDXÿcþQiþJ_ÿ3Bÿ4Cÿ/=ÿI_ÿ^yÿ!s”ë$¤«%¦M$£ $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤%¦1%¥z$}¡À!r“ëc€þVoÿATÿATÿ.<ÿ7Hÿ)6ÿ6Fÿ '3ÿ5Eÿ,9ÿ;Mÿ4DÿH]ÿPgÿdþ!r“í#|ŸÃ%¦~%¦4$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤ %¦1%‚§c$€¤•$} ½"xšØ!r’è oñh†öjˆøfƒøl‹öl‹ò!s”é"w™Ù#| ¿%€¥˜%¦f%¦3%€¥$~£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$}¡$€¤ %¦%‚§2%‚§E%‚¨S%‚§Y%ƒ¨Y%‚§S%‚¨F%‚§3%¦%€¥ $}¡$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢(0` $;;$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢#yœ'‹² &‡­,%‚§W$£#z¡"xš¶"u—À"u—À"wš·#z¢$~£‚%‚§Y&‡­.'‹² "x›$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢'‹²&…«2$}¡x!t•¹dãWq÷KaÿATÿ?Rÿ9Jÿ9Jÿ>Qÿ@SÿKaÿWpøc€ä!s”¼$} {&…ª4'‹²$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£'‰°%‚§H#x›¨bêKaÿ7Hÿ/>ÿ7Gÿ+8ÿ*7ÿ*7ÿ+8ÿ=OÿATÿ+8ÿ)6ÿ,9ÿ,:ÿ8IÿJ`ÿb~ì"w™¬%‚§K'ˆ¯ $£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£jˆ%ƒ©5"xš§_{ó@Sÿ0>ÿPÿ nþQiþ=Oÿ3Cÿ.<ÿ.<ÿ.<ÿ-;ÿe‚þ`|þF[ÿÿ@SÿKaþ*7ÿ5Eÿl‹þLbþQiþG\þ.<ÿ/=ÿ/=ÿ2Aÿe‚þþTlþDXÿ-:ÿ6Fÿh…þ\vþVoþ mŒþMcþ+8ÿ.<ÿWpý"w™ª&„ª!$€¤#|Ÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤&„©)!s”¿Lbÿ*7ÿ*7ÿZtþ#zœþF[ÿ,:ÿ`|þ mŒþMcþ@SÿBUÿ6Gÿ1@ÿ8Iÿ mþZuþJ`þFZÿ;Lÿ6Fÿc€þTlþ"u—þPhþ.<ÿ3BÿMcþ.<ÿJ_ÿ!r“Ä%ƒ©-$¤$} $~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$€¤%ƒ©(!r“ÆEZÿ5Eÿ8Iÿ+8ÿþi‡þf„þ7HÿKaþl‹þRjþ`|þ_{þÿYsþe‚þ1@ÿ (5ÿBUÿ!r’Ì%‚¨-$¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤%ƒ©"u—¼EYÿ*7ÿDXþa}þ5Fÿa}þKaþUnþ`|þ@Sÿb~þVpþH]ÿ@SÿAUÿFZÿH]ÿH]ÿEZÿAUÿ=Pÿ9Kÿ:KÿTmþFZÿ0>ÿ0?ÿSkþ"u—þF[þ2AÿDYÿ7HÿATÿ"u–Â%ƒ¨$£$~¢$~¢$~¢$~¢$~¢$~¢$~¢$£&…« #{žŸJ`ÿ*7ÿ)6ÿ.;ÿ^yþ]yþh†þCWÿ7HÿNeþQÿf„þ6Fÿ+8ÿ+9ÿ-;ÿUmü$£r!t•$~¢$~¢$~¢$~¢$~¢$£&„ª-i‡ß6FÿK`þe‚þd‚þk‰þATÿDXÿ_{þ>Pÿ?RÿXrþ"v˜þ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$£ý"x›þ^zþAUÿDXÿb~þf„þf„þ4Cÿ.<ÿ?RÿKaþ5Eÿh†ä%ƒ©3$£$~¢$~¢$~¢$~¢(޶#yœ›G\ÿ9Iÿbþ8Hÿ-:ÿPgþ^yþ4Dÿ;LÿBVÿdþ$}¡ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢þ$~¢ý$~¢þ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~£ý$~¢ýjˆþF[ÿ?RÿKbþQÿcþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢Ê$~¢+$~¢‹$~¢ø$~¢o$~¢h$~¢õ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ýiˆþBVÿWpþa}þDXÿ`{þ4DÿþI^þATÿ"wš¡*“½$~¢$~¢&…«%h†á1@ÿ+8ÿ1@ÿþ lŒþi‡þRjþ$~¢Ì$~¢$~¢$~¢Ú$~¢ÿ$~¢ý$~¢ý$~¡ý$~¢ý$~¢ý$~¢ý$~¢ý]yþAUÿcþCWÿF[þ4Dÿ;Mÿ:Lÿ-:ÿg…å&…ª*$~¢$}¡%€¥eSlþ+9ÿ,9ÿ-;ÿ1@ÿ=Oÿ9Jÿ8IÿFZÿ!t–þ$£ý$~¢ý$| ý!q’þ"wšþ$~¢ý$~¢ý$~¢þ$~¢ü$~¢\$~¢$~¢$~¢‹$~¢$~¢ $~¢Ä$~¢ÿ$~¢ý#zþfƒþ"t–þ$~£ý$~¢ý$~£ý"xšþKaÿLcÿ`|þ7Hÿ-;ÿ-:ÿ (4ÿ+8ÿNdÿ$¤m$} *•À"w™¦;Mÿ+9ÿ-;ÿ-;ÿ/=ÿ0?ÿ4Dÿÿ2Aÿ8HÿDXÿ!t•þ$£ý$~£ý"w™þZvÿUoÿa}ÿ$}¡ý$~¢ý$~¢ÿ$~¢Õ$~¢$~¢G$~¢$~¢$~¢$~¢$~¢$~¢ÿ$£ý"u—þXrÿ l‹þ$£ý$~¢ý$~¢ý$~£ý"xšþI_ÿ6Gÿ2Aÿ.<ÿ.<ÿ,:ÿ,:ÿ0?ÿjˆÚ&‡®!&„ª?`{ï+8ÿ-;ÿ-:ÿ/>ÿ1@ÿ3Cÿ:KÿRiþ$}¡ý$~¢ý$}¡ýeƒþWqÿWqÿa}ÿ$}¡ý$~¢ý$~¢ÿ$~¢±$~¢ $~¢“$~¢3$~¢$~¢9$~¢$~¢s$~¢ÿ$£ý"u—þXrÿ l‹þ$£ý$~¢ý$~¢ý$~¢ý$~¢ýZtþ:Kÿ2Bÿ0>ÿ.<ÿ-;ÿ+9ÿ+9ÿò&„ªG%¦dRjú*6ÿ,9ÿ-;ÿ.=ÿ2Aÿ5EÿQÿl‹þ$¤ý#{žþ_{ÿ[vÿ"v˜þ^{ÿa}ÿ$}¡ý$~¢þ$~¢û$~¢V$~¢($~¢ë$~¢Ê$~¢z$~¢Û$~¢C$~¢<$~¢ô$£þ"v—þXrÿ k‹þ$£ý$~¢ý$~¢ý$~¢ý$£ý!r’þBVÿ5Eÿ1@ÿ/=ÿ,9ÿ-:ÿ*7ÿI^ÿ$}¡Œ$| –EYÿ*6ÿ,:ÿ?Rÿf„þEYÿ6GÿATÿ!r“þ$¤ý"w™þ\wÿ mþ$| ý^zÿa~ÿ$}¡ý$£þ$~¢í$~¢.$~¢N$~¢ú$~¢ÿ$~¢ÿ$~¢þ$~¢]$~¢%$~¢è$£ÿ"v˜þXrÿ k‹þ$£ý$~¢ý$~¢ý$~¢ý$£ý"v˜þF\ÿ5Eÿ2AÿI_þSkþ0>ÿ+8ÿBUÿ#z #{ž BVÿ*7ÿ+9ÿDXÿ!r’þI^ÿ7GÿBVÿ!t–þ$£ý$}¡ý#x›þ$}¡ý$|Ÿý^zÿa~ÿ"u—þ"u—ÿ$~¢Ò$~¢$~¢|$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢z$~¢$~¡×#{Ÿÿ"u—þXrÿ k‹þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý#y›þI^ÿ5Fÿ3Cÿg…þ oþ3Bÿ (5ÿCWÿ#zœª#{ŸžFZÿ+8ÿ+8ÿ0>ÿ6Fÿ4Cÿ8IÿBVÿ!t–þ$£ý$~¢ý$~¢ý$~¢ý#|Ÿþ^zÿ]xÿ\xÿbÿ$} ­%€¥$~¢ª$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢—&ˆ¯ "u–Â_|ÿh‡þXsÿ kŠþ$£ý$~¢ý$~¢ý$~¢ý$~¢ý#x›þI_ÿ6Fÿ1@ÿ:Kÿÿ1Aÿ6Gÿ>Pÿk‰þ$¤ý$~¢ý$~¢ý$~¢ý#|Ÿþ^zÿUoÿa~ÿ$|Ÿû$£R$~¢+$~¢ë$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢Ê$~¢ $£ nŽÿVpÿUoÿ kŠþ$£ý$~¢ý$~¢ý$~¢ý$£ý!q‘þBUÿ5Eÿ1@ÿ/=ÿ-;ÿ+9ÿ)6ÿLbÿ$~¢…%‚§[Wpø,9ÿ+8ÿ.<ÿ/=ÿ1@ÿ5Eÿ;Mÿ_zþ$¤ý$~¢ý$~¢ý$~¢ý#yœþ[vÿXrÿ!s”ÿ$£ë$~¢+$~¢R$~¢û$~¢þ$~¢ý$~¢ý$~¢ÿ$~¢Ý$~¢$~£p#|Ÿÿ`}ÿUoÿh‡þ$~£ý$~¢ý$~¢ý$~¢ý$£ýg„þ=Pÿ4Cÿ0?ÿ.<ÿ.<ÿ+8ÿ+8ÿRjû%¦e&†¬6`|ê+8ÿ,:ÿ-;ÿ.=ÿ1@ÿ3Cÿ:KÿOgþ$} ý$~¢ý$~¢ý$£ý!p‘þVpÿeƒþ$}¡ÿ$~¢Ï$~¢$~¢€$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢þ$~¢ì$~¢,$~¢S$£û!r“þWqÿ`}ÿ$| ý$~¢ý$~¢ý$~¢ý$~¢ýWqþ:Kÿ3Cÿ/=ÿ.<ÿ,:ÿ-;ÿ,9ÿ`{î&…ª>'ˆ¯ oÌ4Cÿ,9ÿ-;ÿ.=ÿ0?ÿ2Aÿ8HÿBUÿ!r’þ$£ý$~¢ý#{Ÿý`|ÿZtÿ"v˜þ$~£ÿ$~¢©$~¢$~¢­$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢D$~¢9$~¢ó$}¡þd‚þWrÿ!r“þ$~£ý$~¢ý$£ý"v˜þG]ÿ7Hÿ2Aÿ0>ÿ,9ÿ-;ÿ)6ÿ4Dÿl‹Ò'ˆ¯Lÿÿ#y›˜CWÿ+8ÿ,:ÿ/=ÿ/=ÿ1@ÿ5Eÿ;MÿZtþ$£ý$~¢ý#zœþb~ÿ j‰þ$~¢ý$~¢ÿ$~¢|$~¢$~¢Ó$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢_$~¢$$~¢ç$~£ÿ"v˜þZtÿf…þ$~¢ý$~¢ý$£ýb~þ=Oÿ4Dÿ1@ÿ/=ÿ.<ÿ)6ÿ+8ÿ?Qÿ"wš - Í$~¢%‚§TVoú*7ÿ-:ÿ-;ÿ.<ÿ0>ÿ3Bÿ9JÿCWÿ!r’þ$£ý$~¢ý$|Ÿý$| ý$~¢þ$~¢ù$~¢N$~¢.$~¢í$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢|$~¢$~¢Õ$~¢ÿ$~¡ý"s•þ#yœþ$~¢ý$£ý"v—þI_ÿ8Iÿ3Bÿ0?ÿ.<ÿ-:ÿ-;ÿ (4ÿUnü%¥\$~¢$~¢&†¬ nŽÓ5Dÿ,:ÿ,9ÿ.<ÿ/>ÿ1@ÿ5Eÿ;MÿQiþ#|Ÿý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢è$~¢'$~¢V$~¢ü$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢™$~¢ $~¢À$~¢ÿ$~¢ý$~£ý$~¢ý$~¢ý$}¡ýYsþÿ.<ÿ-;ÿ+8ÿ+8ÿG[ÿ$| ‹Nf$~¢$~¢$£&…«)h†à3Bÿ*7ÿ-;ÿ.;ÿ/=ÿ1?ÿ3Cÿ9Jÿ?Rÿb~þ$~¢ý$~¢ý$~¢þ$~¢ø$~¢Ä$~¢é$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢æ$~¢}$~¢Õ$~¢ÿ$~¢ý$~¢ý$~¢ýh…þCWÿ8Iÿ3Bÿ0?ÿ/=ÿ-;ÿ,9ÿ,9ÿ/=ÿi‡å%„©/$~£$~¢$~¢$~¢fƒ$~¢€Neÿ+9ÿ*7ÿ-;ÿ.<ÿ/>ÿ1@ÿ4Dÿ9Kÿ?Rÿ]xþ#|Ÿý$£ý$~¢þ$~¢ÿ$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢ÿ$~¢þ$~¢ý$£ý$} ýc€þCWÿ8Jÿ3Cÿ1@ÿ/>ÿ-;ÿ-:ÿ-:ÿ*7ÿNeÿ#{Ÿˆ@æÿ$~¢$~¢$~¢$~¢$£&„ª!r’Ê;Lÿ+9ÿ+8ÿ-;ÿ.=ÿ0>ÿ1@ÿ4Cÿ9Jÿ=PÿQhþ!q’þ$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£ý$£ý!t–þWpþ?Sÿ8Iÿ3Cÿ1@ÿ/>ÿ.<ÿ-;ÿ-:ÿ*8ÿ9Jÿ nŽÐ&…«$£$~¢$~¢$~¢$~¢$~¢$~£%¦Lcï1@ÿ,9ÿ+8ÿ-;ÿ.=ÿ/>ÿ1@ÿ3Cÿ7Hÿ;MÿCWÿYsþ!q’þ$} ý$£ý$¤ý$£ý$£ý$£ý$£ý$£ý$£ý$}¡ý!s•þ^zþG\ÿ;Mÿ6Gÿ3Bÿ1@ÿ/>ÿ.<ÿ-;ÿ-;ÿ+8ÿ/=ÿ`|ò%‚§S$~£$~¢$~¢$~¢$~¢$~¢$~¢$~£)’»$~¢{Voü.<ÿ,:ÿ+9ÿ-;ÿ.=ÿ/>ÿ1@ÿ2Bÿ5Eÿ9Jÿ;MÿATÿOfþ^zþj‰þ!q’þ!t–þ!t–þ!r’þl‹þa}þSkþEYÿPÿ;Lÿ9Jÿ6Fÿ4Dÿ2Bÿ1@ÿ0>ÿ/=ÿ-;ÿ-;ÿ-;ÿ*7ÿ+8ÿPhÿ#y› &†¬ $¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤%„©#z¢Pgÿ.<ÿ,9ÿ+8ÿ-;ÿ.<ÿ.<ÿ/>ÿ/=ÿDXÿ pþcþZtþKbÿ=PÿDXÿ9JÿATÿMcÿWqþ`|þPgþ2Bÿ0>ÿ/=ÿ.<ÿ-;ÿ-:ÿ-;ÿ*7ÿ,9ÿQhÿ"w™©&…«$€¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤%„©#{ž—Wqû2Aÿ+8ÿ*7ÿ-;ÿ-;ÿ.<ÿ-;ÿQhþ_{þ=PÿLbþZtþNeþg„þ7Hÿa~þe‚þLbþMdþkŠþ9Jÿ.;ÿ-;ÿ-;ÿ+9ÿ-:ÿ*7ÿ/>ÿWqü#y›&…«%€¥$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$¤&…« $~¢wdíÿRiþI^ÿATÿÿ]xþ_{þYrþ?QÿiˆþþþG\ÿ8Iÿ;MÿCWÿI^ÿMdÿEYÿ8Iÿh†þVoþ1@ÿ2Aÿ^zþRjþ+8ÿ0>ÿUnô#{ŸjCóÿ%¦$~¢$~¢$~¢$~¢$~¢"t–#z%€¤MZtë.=ÿ-;ÿYsþPhþ`|þ>QÿWpþF[ÿH^ÿG\ÿH^ÿRjþ\wþa}þa}þ\wþTlþH^ÿ?RÿBVÿ7Gÿ4DÿYsþg…þTlþTmþUnþ3BÿXrî$£R"xš%‚§$~¢$~¢$~¢$~¢$€¤&†¬&dÔ4Dÿ7Gÿ8Iÿ9Jÿg„þl‹þ9Kÿ:Kÿ@SÿPhþh†þ"wšþ$}¡ý$£ý$£ý$£ý$£ý$~¡ý#y›þl‹þUnþ?Sÿ>Qÿe‚þEZÿPgþ`|þ8Iÿ,:ÿ1@ÿcÙ&…«+$¤$~¢$~¢$~¢$¤+—Á!r’ž@SÿI^þ`{þfƒþKaþF[ÿ\wþQÿZuþ:Lÿl‹¹(· $~¢$}¡%‚§?Tmò*7ÿ9KÿbþSlþ_{þKbÿG\ÿ!t•þ$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢æ$~¢*$~¢Q$~¢Ì$~¢$~¢$~¢ÿ$~¢ý$~¢ý$£ý$~¢ý$£ý"w™þLcÿVoþNeþPgþPÿf„þ$£ý$~¢ý#zþ#y›þ$~¢ý$~¢ý$~¢ÿ$~¢Ä$~¢ $~¢%$~¢†$~¢$~¢f$~¢þ$~¢ý#zþ!p‘þ$| ý$~¢ý$£ýkŠþFZÿ]xþ@Sÿ/>ÿ.<ÿ*6ÿÿ-;ÿ-;ÿ.<ÿ0?ÿ7HÿOfþ#{Ÿý$~£ý#{žþa~ÿ`}ÿ#|Ÿý$~¢ý$~¢ÿ$~¢œ$~¢$~¢$~¢3$~¢$~¢L$~¢ù$£þ!q’þ[vÿ#y›þ$~¢ý$~¢ý$} ýTmþDYÿ>Qÿ/=ÿ,9ÿ+9ÿ/>ÿc€Ð(´&„ª<Vní+8ÿ,:ÿ/=ÿ0?ÿ4CÿPÿ"u—–!s”¦:Kÿ+8ÿ3BÿPgþ=Oÿ8IÿVoþ$£ý#wšþ[wÿ!pþ!oþ\wÿ#zþ$£ÿ$~¢À$~¢$~¢È$~¢ú$~¢ì$~¢Ô$~¢$~¢µ$£ÿ!q’þZuÿ#x›þ$~¢ý$~¢ý$~¢ý$£ý]yþ8Iÿ2Aÿ@Sÿ=Oÿ*7ÿ9Jÿ!q‘®!q‘²8Iÿ*7ÿ9Jÿl‹þG\ÿ8IÿZtþ$£ý$| ý"u—þ$}¡ý nŽþ\wÿ"t•þ#wšÿ$~¢–$~¢($~¢æ$~¢ÿ$~¢ÿ$~¢æ$~¢'$~¢š$|Ÿÿ!q‘þZvÿ#xšþ$~¢ý$~¢ý$~¢ý$£ýb~þ8Iÿ4Dÿg„þZtþ*7ÿ7Hÿ oº!q’°9Jÿ+8ÿ.<ÿ5Eÿ4Dÿ9JÿZtþ$£ý$~¢ý$£ý$£ý nŽþYtÿ\xÿg†ÿ$~¢g$~¢H$~¢ø$~¢þ$~¢þ$~¢ó$£:#wš}c€ÿdþ[vÿ#xšþ$~¢ý$~¢ý$~¢ý$£ýb~þ9Jÿ2Aÿ:Lÿ6Fÿ+8ÿ7Hÿ o¸!t•¢;Mÿ+8ÿ-;ÿ/=ÿ2Aÿ8JÿVoþ$~¢ý$~¢ý$~¢ý$£ý nŽþVpÿYtÿ"t•õ$€¤>$~¢t$~¢ÿ$~¢ý$~¢þ$~¢û$~¢Q#|Ÿ`eƒÿVpÿZuÿ#xšþ$~¢ý$~¢ý$~¢ý$£ý]xþ8Iÿ1@ÿ.<ÿ,:ÿ+8ÿ:Kÿ!r’ª#x›‡@Tÿ+8ÿ-;ÿ/=ÿ2Aÿ7HÿMdÿ#|Ÿý$~¢ý$~¢ý$£ý lŒþUoÿg†ÿ$~¢ß$~¢"$~¢£$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢m$€¤F"v˜øZuÿYtÿ"wšþ$~£ý$~¢ý$~¢ý$}¡ýTlþ6Fÿ1@ÿ.=ÿ-:ÿ*7ÿ?Rÿ"w™$£`Kaú*7ÿ-:ÿ.=ÿ1@ÿ6FÿCWÿ!t–þ$£ý$~¢ý$~¡ýdþ[vÿ#xšÿ$£½$~¢$~¢Ë$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢Š$~¢0$~¢îiˆÿWqÿ!r“þ$£ý$~¢ý$~£ý"xšþH]ÿ5Eÿ0>ÿ.<ÿ-:ÿ*7ÿJ_û$}¡h&†¬3Ysè+8ÿ,:ÿ.<ÿ1?ÿ3Cÿ;Mÿc€þ$£ý$~£ý"u—þYtÿ k‹þ$~¢ÿ$~¢’$~¢*$~¢è$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢§$~¢"$~¢ß#yœÿ\xÿd‚þ$}¡ý$~¢ý$£ýiˆþ=Pÿ3Cÿ0>ÿ,:ÿ,:ÿ+8ÿWpì&„ª:)’»h†À2Aÿ,9ÿ.=ÿ/=ÿ2Aÿ8HÿLbÿ#zý$£ý"t–þeƒþ#zþ$~¢þ$~¢c$~¢L$~¢ù$~¢þ$~¢ý$~¢ý$~¢ÿ$~¢Á$~¢$~¢Ë$~£ÿ nŽþ_{ÿ#yœþ$~£ý#|ŸýRjþ7Hÿ2Aÿ/=ÿ-;ÿ)6ÿ1@ÿf„Æ)¹h†"wš}AUÿ,9ÿ-;ÿ.<ÿ0?ÿ4DÿPÿ"v˜„$~¢&„ª2Ztê-:ÿ,9ÿ-;ÿ/>ÿ2Aÿ7HÿDYÿ q‘þ$£ý$~¢ý$~¢ÿ$~¢Þ$~¢ $~¢§$~¢ÿ$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢ç$~¢&$~¢–$~¢ÿ$~¢ý$~¢ý$£ý!t–þI_ÿ7Gÿ2Aÿ/=ÿ-;ÿ,9ÿ+8ÿXrí%ƒ¨7$~¢$~¢-ŸÌ!r’ ÿ.<ÿ-:ÿ+8ÿ:Lÿ p¦+™Å$~¢$~¢$~¢%‚¨8é-;ÿ+9ÿ-;ÿ/=ÿ1@ÿ4Dÿ:KÿKaÿ q‘þ$£ý$~¢þ$~¢ÿ$~¢þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢þ$~¢÷$~¢ú$~¢þ$£ý!t•þPgÿ:Kÿ3Cÿ0?ÿ.=ÿ-;ÿ,9ÿ-:ÿYsí%‚§=$~¢$~¢$~¢$£=Üÿ"w™…FZÿ+8ÿ,:ÿ-;ÿ/=ÿ1@ÿ4Dÿ9KÿDXÿbþ#zý$£ý$£ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$~¢ý$£þ$£þ#{žýg„þH]ÿ9Jÿ3Cÿ1?ÿ/=ÿ-;ÿ,:ÿ*7ÿDXÿ"v—Œ1®ß$£$~¢$~¢$~¢%€¥'ˆ®l‹¾9Jÿ+8ÿ-:ÿ-;ÿ/=ÿ1@ÿ3Cÿ7HÿPÿ6Gÿ3Bÿ0?ÿ/=ÿ.;ÿ,:ÿ+8ÿ8IÿjˆÄ'ˆ¯%€¤$~¢$~¢$~¢$~¢$~¢$~¢%‚§4c€Ú4Dÿ+8ÿ-:ÿ-;ÿ/=ÿ0?ÿ2Aÿ4Dÿ8Jÿÿ.=ÿ-;ÿ,:ÿ+8ÿ3Cÿa}Þ%ƒ¨8$~¢$~¢$~¢$~¢$~¢$~¢$~¢&„ª"w™$¤F`|á4Dÿ+8ÿ,:ÿ-;ÿ.<ÿ/>ÿ0>ÿ?Qÿ`{þTlþH]ÿ=Oÿ>Qÿ:Lÿ?QÿG\ÿPgþF[ÿ2Bÿ0?ÿ/=ÿ.<ÿ-;ÿ,:ÿ+8ÿ4Cÿ^yä%€¥K"xš%¦$~¢$~¢$~¢$~¢$~¢$~¢$~¢%‚§ p$¤EdÙ:Kÿ+8ÿ,9ÿ-;ÿ-;ÿ-;ÿKaþ^yþH]ÿWpþNeþ]xþPÿ-;ÿ/>ÿ`|þ8Iÿ,9ÿ,9ÿ+—Âfƒ$£#z$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%‚§ oŽ'‹²!t•f^y¼LbíDXý8Iÿ/>ÿ.<ÿPÿ/>ÿ:Lÿ`|þ_zþ:LÿDXÿEZÿXrþi‡þ!t•þ"wšþ"wšþ!t•þkŠþþF[ÿ7HÿUnþUnþXrþZtþ6Gÿ;Mÿl‹‘.¤Ó%ƒ¨$~¢$~¡!q‘#y›PKaóG\ÿþQhþJ`þXqþ=OÿVpþ!s•þ$~¢ý$£ý$£ý$~£ý$~£ý$£ý$£ý$~¢ý"v—þþG]ÿTlþ]xþBVÿ2Aÿ@SÿKaõ"xšT nŽ$}¡$€¤(Ž·]xÃ@SÿOfþ2AÿUnþAUÿ@Sÿcþ$} ý$£ý$~¢ý$~¢ý$~¢þ$~¢þ$~¢ÿ$~¢ÿ$~¢þ$~¢ý$£ý$}¡ýf„þF[ÿEZÿI^þa}þ]wþDWÿ\vÇ(Œ´$€¤ o"v—\BUû@SÿQiþ;LÿWqþBVÿb~þ$~¢ý$~¢ý$~¢ý$~¢ý$~¢ÿ$~¢²$~¢•$~¢Ù$~¢•$~¢ô$~¢þ$~¢ý$~£ý$~£ýf„þEZÿa}þWpþDXÿQhÿFZü!t•akŠ.¤Òb±1@ÿ0>ÿQhþXrþF[ÿUnþ$} ý$~¢ý$| ý$~¢ý$~¢þ$~¢ü$~¢V$~¢*$~¢~$~¢$~¢Ø$~¢ÿ#{žþ#zþ$~¢ý$}¡ýþRjþKaþ7Hÿ7Gÿ2Aÿ`|¶,žË %ƒ©1Ofæ,:ÿ-;ÿ/>ÿ4DÿAUÿ!r“þ$¤ý"t•þa~ÿ#x›þ$~¢þ$~¢í$~¢4$~¢$~¢.$~¢ $~¢Ã$£ÿ mþg†þ$~¢ý$£ý"u—þKaÿFZÿ0>ÿ+9ÿ+8ÿNdé%¦6"v˜g@Sû+8ÿ/=ÿ0?ÿ6FÿUnþ$~¢ý#|Ÿý`}ÿWqÿ"u–þ$£ÿ$~¢Ñ$~¢4$~¢3$~¢$~¢$~¢ª$£ÿ k‹þeƒþ$~¢ý$~¢ý$~¢ýZuþ6Fÿ0>ÿ-;ÿ+8ÿ?Rü"u–mlŒ–7Hÿ+9ÿ.<ÿ2Aÿ:Kÿg„þ$¤ý mŒþ]yÿ\xÿ"t–þ$£ÿ$~¢ª$~¢L$~¢{$~¢"$~¢E$~¢$£ÿ l‹þeƒþ$~¢ý$~¢ý$£ýkŠþ;Mÿ1@ÿ.;ÿ+8ÿ6GÿkŠœfƒ´2Aÿ-;ÿQÿ!q‘þ#zþ_{ÿ!nþ`|ÿ"u–þ$£ÿ$~¢~$~¢m$~¢á$~¢»$~¢z$~¢p$£ÿ l‹þe‚þ$~¢ý$~¢ý$£ý"t–þAUÿ2Aÿ6Fÿ0>ÿ1@ÿd»cÃ0?ÿ0?ÿ_{þDXÿATÿ"u–þ$|Ÿþ!s”þ#zþ_|ÿ!p‘þ#zœû$~£V$~¢—$~¢ÿ$~¢ÿ$~¢™$~¢W$| û kŠþe‚þ$~¢ý$~¢ý$~£ý"xšþEYÿ5Eÿ`{þBUÿ/=ÿa}Éc€Á1?ÿ-:ÿ4Dÿ5EÿBUÿ!t–þ$£ý$£ý#{žþ^zÿ\wÿ l‹ë%€¥<$~¢Á$~¢ÿ$~¢ÿ$~¢³#{ŸEf„ô^{ÿeƒþ$~¢ý$~¢ý$~£ý"xšþEZÿ2Bÿ:Kÿ1?ÿ0>ÿb~Èg„±3Bÿ,:ÿ.=ÿ2Bÿ>Qÿ pþ$£ý$~¢ý#{žþ\xÿ\xÿ#xšÎ$¤8$~¢â$~¢ÿ$~¢ÿ$~¢Ë$€¤: mŒçVpÿe‚þ$~¢ý$~¢ý$£ý!t•þATÿ1Aÿ.<ÿ,9ÿ2Aÿe‚· n8Iÿ+9ÿ.<ÿ2Aÿ:Kÿeƒþ$¤ý$~£ý#xšþZvÿ nŽÿ$£§$~¢K$~¢ö$~¢þ$~¢ÿ$~¢ß$£8#|ŸÔa}ÿa~ÿ$}¡ý$~¢ý$£ýj‰þ;Mÿ1?ÿ.<ÿ+9ÿ8Hÿl‹–"xš^BVù+8ÿ.<ÿ1@ÿ6FÿSlþ$}¡ý$~¢ý kŠþ`}ÿ#{Ÿÿ$~£z$~¢o$~¢ÿ$~¢ý$~¢þ$~¢î$~¢?$£½!s”ÿ\wÿ"v˜þ$~£ý$~¢ýYsþ6Fÿ0?ÿ-:ÿ+8ÿAUú"v˜d&†¬)Rjà+9ÿ.<ÿ/>ÿ3CÿATÿ p‘þ$£ý!oþ"s•þ$~£ú$~¢S$~¢›$~¢ÿ$~¢ý$~¢þ$~¢ø$~¢O$~¢¤$}¡ÿh‡þ!q’þ$¤ý!t•þDXÿ3Bÿ/>ÿ-:ÿ*7ÿQhã&„ª-4ºïe‚¥4Cÿ,9ÿ.<ÿ1@ÿ7HÿRkþ#|Ÿý$£ý$~¢ÿ$~¢ç$~¢8$~¢Ä$~¢ÿ$~¢ý$~¢ý$~¢þ$~¢d$~¢‡$~¢ÿ$}¡ý$~¢ý$} ýWqþ7Hÿ1@ÿ.<ÿ,9ÿ2Aÿc€«1¯à"u–#yœNG\÷*8ÿ-;ÿ/>ÿ3Bÿ;Mÿ^zþ$~¡ý$~¢ÿ$~¢ã$~¢o$~¢è$~¢ÿ$~¢ý$~¢ý$~¢ÿ$~¢$~¢„$~¢ÿ$~¢ý$~¢ýc€þPgê,:ÿ,:ÿ.<ÿ0?ÿ4Dÿ;MÿRjþ pþ$}¡þ$£ý$£ý$£ý$£ý$£ý$£þ$~¡ÿ!r“þVoþÿ.<ÿ-:ÿ+8ÿCVü q‘zTÿÿ%ƒ©$~¢$~¢$~¢%‚§*•¿ lŠ“@Sþ+8ÿ,:ÿ.<ÿ/>ÿ1?ÿ:LÿMdÿF[ÿBVÿCWÿCVÿBVÿEYÿ?Qÿ3Cÿ1@ÿ/=ÿ.<ÿ,:ÿ+8ÿ?Rÿk‰—)“¼ %‚¨$~¢$~¢$~¢$~¢$~¢%¥(·l‹‘DYú,:ÿ,9ÿ-;ÿ-;ÿEZÿ\vþPgþOfþRjþCWÿ]xþTlþ^yþ6Gÿ.<ÿ-;ÿ+9ÿ,9ÿCWûkŠ–(µ$€¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢%¦*–Á!r“rQhè4Cÿ+8ÿ+8ÿSkþATÿ-:ÿ6Fÿþ=OÿcþQiþ^yþ9Jÿ+8ÿ+8ÿ3CÿPgê!q’v*”¿ $€¤$}¡$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%‚§$~¢:d­I^ô6FÿOfÿ3Cÿ*7ÿ1@ÿYrþ3Cÿ^yþQhþWpÿ8Iÿ3CÿH]õc€°$}¡=ÿÿÿ%ƒ¨$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢&…ª"x›+šÆ #{žGg…WqÚFZö;Lÿ8HÿEYÿ5EÿH^ÿOfÿMdöTlÛf„Ÿ#zI+™Ä #y›%ƒ©$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢%€¥"w™@éÿ&‡®"#zR piˆ¢d²fƒ²h…¢ m‚"x›T'ˆ¯#=Üÿ"w™$€¤$~¢$~¢$~¢$~¢$~¢$~¢$~¢$~¢(0 ;;$~¢$~¢$~¢$~¢ p#{ž%‚§i‡c\v¤SkÎNeáOfáSkÏ\v¥jˆd%ƒ¨ #zkŠ$~¢$~¢$~¢$~¢$~¢$~¢$~¢+™Äe‚%„©b~zNdÔI_ùG[ÿ1@ÿ.<ÿEYÿ0?ÿ4DÿATúI_Õb|%ƒ¨c*–À$~¢$~¢$~¢$~¢$~¢)¸ '3!r’?RjÆCWÿ8IÿXrþDYÿ0?ÿ4Dÿ\vþCWÿ7HÿPgÿH]ÿ@SÿQhÉ!r“B (µ$~¢$~¢$~¢+˜Ã1@ nOLcã6Fÿ\vþJ_þZtþRjþATÿ9JÿSlþMcþ?Qÿ_zþMcþ@SÿBUÿG\å nR **”¾$~¢!t•g„!s”=G\â6FÿRjþUmþJ`ÿJ`ÿTmþYsþ^zþ_{þZtþKbÿEZÿ;MÿZtþRjþDXÿH]ä!r“@d p#|Ÿ&…«TmÃFZÿMdþOfþPhþEZÿe‚þ"xšþ$~¢þ$£þ$£þ$~¢þ#yœýg„þNeÿQiþXqþ;Lÿÿ.<ÿVnÅRjÓ-;ÿMcþ@SÿZtþ#{Ÿþ!r“þ lŒþ kŠÿ#{žÜ$~¢`$~¢ñ$~¢ñ$~¢a$|ŸÜh†ÿ!r”þ$£ý$£ý^zþ7GÿPgþ2BÿQi×SkÑ-;ÿ3Cÿ6GÿZtþ$£ý$£ý mŒþ\wÿ!o»$¤s$~¢þ$~¢û$£kiˆÈ]yÿ"s”þ$£ý$£ý^zþ4Dÿ7Hÿ.<ÿRiÖWq¼/=ÿ.<ÿ3BÿRjþ$~¡ý$£ý j‰þbÿ#{ž•$~¢•$~¢ÿ$~¢ÿ$£}"t•±\wÿ!r“þ$£ý$~¢ýVoþ2Aÿ-;ÿ.<ÿVpÁa}3Cÿ-;ÿ1@ÿDXÿ"w™þ$| ýdÿ"s”þ$¤s$~¢»$~¢ÿ$~¢ÿ$~¢’$~¢™ kŠÿiˆþ$~£ý#y›þG\ÿ0?ÿ,:ÿ3Bÿ`|• p‘P>Pô,:ÿ0>ÿ7Hÿb~þ$} ý!r“ÿ$}¡ñ$~¢_$~¢Ü$~¢ÿ$~¢ÿ$~¢ª$£‚#zÿ nŽþ$~¢ýfƒþ8Iÿ/>ÿ+8ÿÿ4DÿI_ÿ!q’þ$£÷$£å$~¢ý$~¢ý$~¢þ$~¢ð$£Ô$£ý!s•þLbÿ4Cÿ/=ÿ,9ÿ9Jýg…jDX$~¢(µVoµ0?ÿ-:ÿ0>ÿ4DÿCWÿb~þ"v˜ÿ$}¡ý$£ý$£ý$~¢þ"xšÿdþEYÿ4Cÿ/>ÿ-:ÿ0>ÿUn¹'‹³$~¢#yœ o"xš/McÖ.<ÿ-:ÿ/>ÿ2Aÿ9KÿKaÿTmþZtþþUnþH]ÿ8Hÿ1Aÿ/=ÿ-:ÿ.<ÿLbÙ"w™2 m#yœ$~¢NÿÿZt!s•=MdÕ0?ÿ,9ÿ-;ÿ?RÿUnþKaÿJ_ÿG\ÿSkþSlþ5Eÿ-;ÿ,9ÿ0?ÿLbØ!r“@Um9Ïÿ$~¢$~¢$~¢-¢Ð#y›.Wp²;Lû,:ÿH]ÿÿF[ÿ;MÿTmÿNeÿDXòPhÂi‡c(Ž· oŽBðÿ$~¢$~¢$~¢$~¢$~¢$~¢$~¢#z$£Sk)‘º pHb†Zt²WpÆUnÇ\w²b‡ q‘J)¹Qh$~£#z$~¢$~¢$~¢$~¢(  ;;$~¢ p!s”f„3WpŒLcÍBUéF[éF[ÎRje‚4ÿÿÿ!r“ o$~¢ pmŒ%ƒ© VowF[âLbÿ@Sÿ3BÿKaÿ9JÿH]ÿH]ãTmy$£ j‰ oŽ!r“%ƒ¨ Of–CWýQiÿPgþNeþDXÿSkþG\ÿOfþG\ÿG[ýQh˜$~¢ !r’YruEYýMdÿMcþWpþ nŽþ"v˜ÿ"v˜ÿ nþVoþQhþOfÿ@TýXrwg„/H^ßH]ÿKaÿ`|þ$} þ$£ú$£Ñ$£Ô$£õ$}¡þd€þOfþQiÿLbáf„1Tl…4Dÿ@RÿWpþ#xšþ"v—ÿ$~¢ë$~¢K$~¢@$}¡Ö"u–ÿ#{Ÿý]yþ>Qÿ4DÿSkˆH]Å.<ÿ6Fÿj‰þ kŠþi‡ÿ$~¢Ó$~¢Q$~¢2$} Å l‹ÿ$} ý mþ7Hÿ-:ÿG\ÈBUá:KÿDXÿ!q’þ nŽþ kŠÿ#{ž´$~¢±$~¢«#z² k‹ÿ$| ý"v˜þAUÿ;MÿBVãCVà1?ÿ?Rÿ"t–þ#zžþbÿ"s”›$~£Ú$£Ó nŽ¢dÿ$} ý"v˜þ?Rÿ2BÿBVâH^Á.<ÿ6Gÿk‰þ"w™þ kŠ÷$}¡Ž$~¢ï$~¢à#z•h†þ#zþ mŒþ7Gÿ-:ÿH]ÄUn~2Aþ0>ÿPhþ#xšÿ#{žæ$~£‘$~¢û$~¢í$£#xšø#y›þSkþ0>ÿ1@þTm n)?QÚ-;ÿ6Fÿ]xÿ#|Ÿï$¤Ö$£þ$£ù$¤Æ$} ø_{þ6Gÿ-;ÿ>QÜlŒ+Wpj5Eú-;ÿ6FÿPhÿk‰ÿ!t•þ!t•þkŠÿQiÿ6Gÿ-;ÿ5EûWpl"x›)“¼Qiˆ5Eú,:ÿ9JÿMcþKbÿNeþMdþ4Cÿ-:ÿ5EúQhŠ)¹"xš!t•!q’*”¾Xqh>QØAUý9JÿAUÿMdÿTmÿ:Ký>QÙWpj)‘»!q‘!s•$~¢!t•#y› nŽ&yJ`»J`ÙNeÙWq¼Xqz n'"x›!t•$~¢libjwt-3.2.3/include/000077500000000000000000000000001510461717300144425ustar00rootroot00000000000000libjwt-3.2.3/include/jwt.h000066400000000000000000001441061510461717300154250ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * @file jwt.h * @brief The C JSON Web Token Library +JWK + JWKS * * @include{doc} mainpage.dox */ #ifndef JWT_H #define JWT_H #include #include #include #ifdef __cplusplus extern "C" { #endif #if JWT_USES_LONG_LONG typedef long long jwt_long_t; #else typedef long jwt_long_t; #endif /* JWT_USES_LONG_LONG */ /** @ingroup jwt_object_grp * @brief Opaque JWT object * * Used in callbacks when generating or verifying a JWT */ typedef struct jwt jwt_t; /** @ingroup jwks_core_grp * @brief Opaque JWKS object * * Used for working with JSON Web Keys and JWK Sets (JWKS). * * @remark All JWK operations require that you import your JWK into a jwk_set_t * first. Internal, LibJWT creates a jwk_set_t even for single keys. This makes * code pretty much the same whether working with one JWK or a set of them. */ typedef struct jwk_set jwk_set_t; /** @ingroup jwt_alg_grp * @brief JWT algorithm types * * These are the supported algorithm types for LibJWT. * * @rfc{7518,3.1} */ typedef enum { JWT_ALG_NONE = 0, /**< No signature */ JWT_ALG_HS256, /**< HMAC using SHA-256 */ JWT_ALG_HS384, /**< HMAC using SHA-384 */ JWT_ALG_HS512, /**< HMAC using SHA-512 */ JWT_ALG_RS256, /**< RSASSA-PKCS1-v1_5 using SHA-256 */ JWT_ALG_RS384, /**< RSASSA-PKCS1-v1_5 using SHA-384 */ JWT_ALG_RS512, /**< RSASSA-PKCS1-v1_5 using SHA-512 */ JWT_ALG_ES256, /**< ECDSA using P-256 and SHA-256 */ JWT_ALG_ES384, /**< ECDSA using P-384 and SHA-384 */ JWT_ALG_ES512, /**< ECDSA using P-521 and SHA-512 */ JWT_ALG_PS256, /**< RSASSA-PSS using SHA-256 and MGF1 with SHA-256 */ JWT_ALG_PS384, /**< RSASSA-PSS using SHA-384 and MGF1 with SHA-384 */ JWT_ALG_PS512, /**< RSASSA-PSS using SHA-512 and MGF1 with SHA-512 */ JWT_ALG_ES256K, /**< ECDSA using secp256k1 and SHA-256 */ JWT_ALG_EDDSA, /**< EdDSA using Ed25519 */ JWT_ALG_INVAL, /**< An invalid algorithm from the caller or the token */ } jwt_alg_t; /** @ingroup jwt_crypto_grp * @brief Different providers for crypto operations * * Used to set or test the underlying cryptographic library provider. * * @remark These being present are not a guarantee that the JWT library * has been compiled to support it. Also, certain functions of the * library may not be supported by each. For example, not all of them * support JWKS operations. **/ typedef enum { JWT_CRYPTO_OPS_NONE = 0, /**< Used for error handling */ JWT_CRYPTO_OPS_OPENSSL, /**< OpenSSL Library */ JWT_CRYPTO_OPS_GNUTLS, /**< GnuTLS Library */ JWT_CRYPTO_OPS_MBEDTLS, /**< MBedTLS embedded library */ JWT_CRYPTO_OPS_ANY, /**< Used internally for hmac keys */ } jwt_crypto_provider_t; /** @ingroup jwks_item_grp * @brief JWK Key Types * * Corresponds to the ``"kty"`` attribute of the JWK. * * @rfc{7517,4.1} * @rfc{7518,6.1} */ typedef enum { JWK_KEY_TYPE_NONE = 0, /**< Unused on valid keys */ JWK_KEY_TYPE_EC, /**< Elliptic Curve keys */ JWK_KEY_TYPE_RSA, /**< RSA keys (RSA and RSA-PSS) */ JWK_KEY_TYPE_OKP, /**< Octet Key Pair (e.g. EdDSA) */ JWK_KEY_TYPE_OCT, /**< Octet sequence (e.g. HS256) */ } jwk_key_type_t; /** @ingroup jwks_item_grp * @brief Usage types for JWK public keys * * Corresponds to the ``"use"`` attribute in a JWK the represents a public key. * * @rfc{7517,4.2} **/ typedef enum { JWK_PUB_KEY_USE_NONE = 0, /**< No usable attribute was set */ JWK_PUB_KEY_USE_SIG, /**< Signature key (JWS) */ JWK_PUB_KEY_USE_ENC, /**< Encryption key (JWE) */ } jwk_pub_key_use_t; /** @ingroup jwks_item_grp * @brief Allowed key operations for JWK private keys * * Corresponds to the ``"key_ops"`` attribute in a JWK that represents a private * key. These can be bitwise compares to the key_ops attribute of a jwk_item_t. * These flags are used internally to decide if a JWK can be used * for certain operations. * * @code * if (jwk_item_t.key_ops & (JWK_KEY_OP_SIGN | JWK_KEY_OP_ENCRYPT)) { * ... * } * @endcode * * @rfc{7517,4.3} **/ typedef enum { JWK_KEY_OP_NONE = 0x0000, /**< No key_op set */ JWK_KEY_OP_SIGN = 0x0001, /**< Signing */ JWK_KEY_OP_VERIFY = 0x0002, /**< Signature verification */ JWK_KEY_OP_ENCRYPT = 0x0004, /**< Used for encryption */ JWK_KEY_OP_DECRYPT = 0x0008, /**< Used for decrypting */ JWK_KEY_OP_WRAP = 0x0010, /**< For wrapping other keys */ JWK_KEY_OP_UNWRAP = 0x0020, /**< For unwrappng other keys */ JWK_KEY_OP_DERIVE_KEY = 0x0040, /**< Key derivation */ JWK_KEY_OP_DERIVE_BITS = 0x0080, /**< Bits derivation */ JWK_KEY_OP_INVALID = 0xffff, /**< Invalid key_ops in JWK */ } jwk_key_op_t; /** @ingroup jwt_claims_helpers_grp * @brief Value types for claims and headers */ typedef enum { JWT_VALUE_NONE = 0, /**< No type (do not use this) */ JWT_VALUE_INT, /**< Integer */ JWT_VALUE_STR, /**< String */ JWT_VALUE_BOOL, /**< Boolean */ JWT_VALUE_JSON, /**< JSON String (``{..}`` or ``[..]``) */ JWT_VALUE_INVALID, /**< Invalid (used internally) */ } jwt_value_type_t; /** @ingroup jwt_claims_helpers_grp * @brief Error values for header and claim requests */ typedef enum { JWT_VALUE_ERR_NONE = 0, /**< No error, success */ JWT_VALUE_ERR_EXIST, /**< Item exists (when setting) */ JWT_VALUE_ERR_NOEXIST, /**< Item doesn't exist (when getting) */ JWT_VALUE_ERR_TYPE, /**< Item is not of the type requested */ JWT_VALUE_ERR_INVALID, /**< Invalid request (general error) */ JWT_VALUE_ERR_NOMEM, /**< Memory allocation error */ } jwt_value_error_t; /** @ingroup jwt_claims_helpers_grp * @brief Data type for get and set actions for JWT headers and claims * * This is used for both set and get requests. Specific rules for each type is * described in more detail for the set and get requests. * * @note There are helper macros to simplify setting this structure properly and * reducing common mistakes. See the jwt_set_{SET,GET}_{INT,STR,BOOL,JSON} * definitions. */ typedef struct { jwt_value_type_t type; const char *name; union { jwt_long_t int_val; const char *str_val; int bool_val; char *json_val; }; int replace; int pretty; jwt_value_error_t error; } jwt_value_t; /** @ingroup jwks_item_grp * @brief Object representation of a JWK * * This object is produced by importing a JWK or JWKS into a @ref jwk_set_t * object. It represents single key and is used when generating or verifying * JWT. */ typedef struct jwk_item jwk_item_t; /** @ingroup jwt_memory_grp * @brief Prototype for malloc(3) */ typedef void *(*jwt_malloc_t)(size_t); /** @ingroup jwt_memory_grp * @brief Prototype for free(3) */ typedef void (*jwt_free_t)(void *); /** @ingroup jwt_alg_grp * Get the jwt_alg_t set for this JWT object. * * Returns the jwt_alg_t type for this JWT object. * * @param jwt Pointer to a JWT object. * @returns Returns a jwt_alg_t type for this object. */ JWT_EXPORT jwt_alg_t jwt_get_alg(const jwt_t *jwt); /** @ingroup jwt_object_grp * @brief Structure used to pass state with a user callback */ typedef struct { const jwk_item_t *key; /**< A JWK to use for key */ jwt_alg_t alg; /**< For algorithm matching */ void *ctx; /**< User controlled context */ } jwt_config_t; /** @ingroup jwt_object_grp * @brief General callback for generation and verification of JWT */ typedef int (*jwt_callback_t)(jwt_t *, jwt_config_t *); /** @ingroup jwt_claims_helpers_grp * @brief WFC defined claims */ typedef enum { JWT_CLAIM_ISS = 0x0001, /**< @rfc_t{7519,4.1.1} ``"iss"`` */ JWT_CLAIM_SUB = 0x0002, /**< @rfc_t{7519,4.1.2} ``"sub"`` */ JWT_CLAIM_AUD = 0x0004, /**< @rfc_t{7519,4.1.3} ``"aud"`` */ JWT_CLAIM_EXP = 0x0008, /**< @rfc_t{7519,4.1.4} ``"exp"`` */ JWT_CLAIM_NBF = 0x0010, /**< @rfc_t{7519,4.1.5} ``"nbf"`` */ JWT_CLAIM_IAT = 0x0020, /**< @rfc_t{7519,4.1.6} ``"iat"`` */ JWT_CLAIM_JTI = 0x0040, /**< @rfc_t{7519,4.1.7} ``"jti"`` */ } jwt_claims_t; /** * @defgroup jwt_grp JSON Web Token * @{ */ /** * @defgroup jwt_builder_grp Builder * * Creating a JWT token involves several steps. First is creating a * jwt_builder_t object, which can be thought of as a JWT factory. Once * configured, you can use it to create tokens with pre-defined claims. * @{ */ /** * @brief Opaque Builder Object */ typedef struct jwt_builder jwt_builder_t; /** * @brief Function to create a new builder instance * * @return Pointer to a builder object on success, NULL on failure */ JWT_EXPORT jwt_builder_t *jwt_builder_new(void); /** * @brief Frees a previously created builder object * * @param builder Pointer to a builder object */ JWT_EXPORT void jwt_builder_free(jwt_builder_t *builder); #if defined(__GNUC__) || defined(__clang__) /** * @brief Helper function to free a builder and set the pointer to NULL * * This is mainly to use with the jwt_builder_auto_t type. * * @param Pointer to a pointer for a jwt_builder_t object */ static inline void jwt_builder_freep(jwt_builder_t **builder) { if (builder) { jwt_builder_free(*builder); *builder = NULL; } } #define jwt_builder_auto_t jwt_builder_t \ __attribute__((cleanup(jwt_builder_freep))) #endif /** * @brief Checks error state of builder object * * @param builder Pointer to a builder object * @return 0 if no errors exist, non-zero otherwise */ JWT_EXPORT int jwt_builder_error(const jwt_builder_t *builder); /** * @brief Get the error message contained in a builder object * * @param builder Pointer to a builder object * @return Pointer to a string with the error message. Can be an empty string * if there is no error. Never returns NULL. */ JWT_EXPORT const char *jwt_builder_error_msg(const jwt_builder_t *builder); /** * @brief Clear error state in a builder object * * @param builder Pointer to a builder object */ JWT_EXPORT void jwt_builder_error_clear(jwt_builder_t *builder); /** * @brief Sets a key and algorithm for a builder * * The values here must make sense. This table shows what will or won't pass as * far as algorithm matching between the alg param and the alg in jwk_item_t. * Where ``alg-A`` means one specific algorithm (not none) and ``alg-B`` * represents another (also not none). The ``none`` is used to represent no * algorithm being set. ``NULL`` represents that jwk_item_t pointer is NULL. * * alg | jwt_item_t | Result * :-------: | :--------: | :-----------------------: * ``alg-A`` | ``alg-A`` | \emoji :white_check_mark: * ``none`` | ``alg-A`` | \emoji :white_check_mark: * ``alg-A`` | ``none`` | \emoji :white_check_mark: * ``none`` | ``NULL`` | \emoji :warning: * ``alg-A`` | ``alg-B`` | \emoji :x: * ``alg-A`` | ``NULL`` | \emoji :x: * * @warning The warning represents an insecure token. Using insecure tokens is * not very useful and strongly discouraged. * * @param builder Pointer to a builder object * @param alg A valid jwt_alg_t type * @param key A JWK key object * @return 0 on success, non-zero otherwise with error set in the builder */ JWT_EXPORT int jwt_builder_setkey(jwt_builder_t *builder, const jwt_alg_t alg, const jwk_item_t *key); /** * @brief Set IssuedAt usage on builder * * By default, the builder will set the ``iat`` claim to all tokens. You can * enable or disable this using this function. * * @param builder Pointer to a builder object * @param enable 0 to disable, any other value to enable * @return Previous value (0 or 1), or -1 on error */ JWT_EXPORT int jwt_builder_enable_iat(jwt_builder_t *builder, int enable); /** * @brief Set a callback for generating tokens * * When generating a token, this callback will be run after jwt_t has been * created, but before the token is encoded. During this, the callback can set, * change, or remove claims and header attributes. It can also use the * jwt_value_t structure to set a key and alg to use when signing the token. * * The ctx value is also passed to the callback as part of the jwt_value_t * struct. * * @note Calling this with a NULL cb param and a new ctx param after already * setting the callback will allow updating the ctx passed to the callback. * Calling with both values as NULL will disable the callback completely. * * @param builder Pointer to a builder object * @param cb Pointer to a callback function * @param ctx Pointer to data to pass to the callback function * @return 0 on success, non-zero otherwise with error set in the builder */ JWT_EXPORT int jwt_builder_setcb(jwt_builder_t *builder, jwt_callback_t cb, void *ctx); /** * @brief Retrieve the callback context that was previously set * * This is useful for accessing the context that was previously passed in the * setcb function. * * @param builder Pointer to a builder object * @return Pointer to the context or NULL */ JWT_EXPORT void *jwt_builder_getctx(jwt_builder_t *builder); /** * @brief Generate a token * * The result of this function is to generate a string containing a JWT. A * token is represetned by 3 parts: ``header``.``payload``.``sig``. Each part is * Base64url Encoded. An example would be: * * @code * eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MzY0MzI0MzR9.iDn6N9JsAdUPF11ow0skIfc9eJc2wGRIq30RSRZ8_68 * @endcode * * When decoded, the header and payload would look like this (excluding the * signature block):: * * @code * {"alg":"HS256","typ":"JWT"}.{"iat":1736432434} * @endcode * * If pretty printed: * * @code * { * "alg": "HS256", * "typ": "JWT" * } * . * { * "iat": 1736432434 * } * @endcode * * The signature block is a cryptographic hash. Its length and format is * dependent on the algorithm being used. * * A simple usage with no signature or payload would be: * * @code * jwt_builder_t *builder = NULL; * * builder = jwt_builder_new(); * * if (builder) { * char *out = jwt_builder_generate(builder); * * if (out) { * printf("%s\n", out); * free(out); * } * } * * jwt_builder_free(builder); * @endcode * * @note If you set a callback for this builder, this is when it will be called. * * @param builder Pointer to a builder object * @return A string containing a JWT. Caller is respondible for freeing the * memory for this string. On error, NULL is returned and error is set in * the builder object. */ JWT_EXPORT char *jwt_builder_generate(jwt_builder_t *builder); /** * @} * @noop jwt_builder_grp */ /** * @defgroup jwt_checker_grp Checker * * Validating a JWT involves decoding the Base64url parts of the JWT then * verifying claims and the signature hash. The checker object allows you to * configure how you want to perform these steps so you can easily process * tokens with one simple call. * @{ */ /** * @brief Opaque Checker object */ typedef struct jwt_checker jwt_checker_t; /** * @brief Function to create a new checker instance * * @return Pointer to a checker object on success, NULL on failure */ JWT_EXPORT jwt_checker_t *jwt_checker_new(void); /** * @brief Frees a previously created checker object * * @param checker Pointer to a checker object */ JWT_EXPORT void jwt_checker_free(jwt_checker_t *checker); #if defined(__GNUC__) || defined(__clang__) /** * @brief Helper function to free a checker and set the pointer to NULL * * This is mainly to use with the jwt checker_auto_t type. Example usage: * * @code * int run_check (const char *token) * { * jwt_checker_auto_t *checker = NULL; // This is important to set to NULL * * checker = jwt_checker_new(); * // Do some things * * return 0; // checker is freed here * } * @endcode * * @param Pointer to a pointer for a jwt checker_t object */ static inline void jwt_checker_freep(jwt_checker_t **checker) { if (checker) { jwt_checker_free(*checker); *checker = NULL; } } #define jwt_checker_auto_t jwt_checker_t \ __attribute__((cleanup(jwt_checker_freep))) #endif /** * @brief Checks error state of checker object * * @param checker Pointer to a checker object * @return 0 if no errors exist, non-zero otherwise */ JWT_EXPORT int jwt_checker_error(const jwt_checker_t *checker); /** * @brief Get the error message contained in a checker object * * @param checker Pointer to a checker object * @return Pointer to a string with the error message. Can be an empty string * if there is no error. Never returns NULL. */ JWT_EXPORT const char *jwt_checker_error_msg(const jwt_checker_t *checker); /** * @brief Clear error state in a checker object * * @param checker Pointer to a checker object */ JWT_EXPORT void jwt_checker_error_clear(jwt_checker_t *checker); /** * @brief Sets a key and algorithm for a checker * * See @ref jwt_builder_setkey for detailed information. * * @param checker Pointer to a checker object * @param alg A valid jwt_alg_t type * @param key A JWK key object * @return 0 on success, non-zero otherwise with error set in the checker */ JWT_EXPORT int jwt_checker_setkey(jwt_checker_t *checker, const jwt_alg_t alg, const jwk_item_t *key); /** * @brief Set a callback for generating tokens * * When verifying a token, this callback will be run after jwt_t has been * parsed, but before the token is verified (including signature * verification). During this, the callback should only inspect the header or * claims in the JWT. Any attempts to make changes to the jwt_t object will not * change the rest of the process. * * The callback can also set the key and algorithm used to verify the signature. * If the callback returns non-zero, then processing will stop and return an * error. * * The ctx value is also passed to the callback as part of the jwt_value_t * struct. * * @note Calling this with a NULL cb param and a new ctx param after already * setting the callback will allow updating the ctx passed to the callback. * Calling with both values as NULL will disable the callback completely. * * @param checker Pointer to a checker object * @param cb Pointer to a callback function * @param ctx Pointer to data to pass to the callback function * @return 0 on success, non-zero otherwise with error set in the checker */ JWT_EXPORT int jwt_checker_setcb(jwt_checker_t *checker, jwt_callback_t cb, void *ctx); /** * @brief Retrieve the callback context that was previously set * * This is useful for accessing the context that was previously passed in the * setcb function. * * @param checker Pointer to a checker object * @return Pointer to the context or NULL */ JWT_EXPORT void *jwt_checker_getctx(jwt_checker_t *checker); /** * @brief Verify a token * * @note If you set a callback for this checker, this is when it will be called. * * @param checker Pointer to a checker object * @param token A string containing a token to be verified * @return 0 on success, non-zero otherwise with error set in the checker */ JWT_EXPORT int jwt_checker_verify(jwt_checker_t *checker, const char *token); /** * @} * @noop jwt_checker_grp */ /** * @defgroup jwt_claims_grp Claims and Headers * * Working with claims and header elements across checker and builder * objects is similar, but the usage for it is not. * * @{ */ /** * @defgroup jwt_claims_helpers_grp Utility Functions * @{ */ /** * @defgroup jwt_helpers_get_grp Getters * * When getting a value, you must set type and name. On a successful return, the * the value specific to the type will be filled in. Common error responses for * this function are JWT_VALUE_ERR_NOEXIST when the name does not exist, and * JWT_VALUE_ERR_TYPE, when the named object is not of the type you requested * (e.g. you requested a string, but it's an integer value). * * @remarks When getting a JSON value, you can set value.name = NULL, in which * case the entire header is returned. Also, the resulting value.json_val * will be using allocated memory and must be freed by the caller. * * @note Normally JSON is retrieved in compact form. If you set * jwt_value_t.pretty, then you will get a tabbed format suitable for human * viewing. This must be set after calling jwt_set_GET_JSON(). * * @code * jwt_value_error_t ret; * jwt_value_t jval; * * jwt_set_GET_INT(&jval, "h1"); * ret = jwt_builder_claim_get(builder, &jval); * if (ret == JWT_VALUE_ERR_NONE) * printf("h1 = %d\n", jval.int_val); * @endcode * * @{ */ /** * @brief Setup a jwt_value_t to get an integer value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @return No return value */ #define jwt_set_GET_INT(__v, __n) ({ \ (__v)->type=JWT_VALUE_INT; \ (__v)->name=(__n);(__v)->int_val=0;(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to get a string value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @return No return value */ #define jwt_set_GET_STR(__v, __n) ({ \ (__v)->type=JWT_VALUE_STR; \ (__v)->name=(__n);(__v)->str_val=NULL;(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to get a boolean value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @return No return value */ #define jwt_set_GET_BOOL(__v, __n) ({ \ (__v)->type=JWT_VALUE_BOOL; \ (__v)->name=(__n);(__v)->bool_val=0;(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to get a JSON string * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @return No return value */ #define jwt_set_GET_JSON(__v, __n) ({ \ (__v)->type=JWT_VALUE_JSON;(__v)->pretty=0; \ (__v)->name=(__n);(__v)->json_val=NULL;(__v)->error=0;\ (__v);}) /** * @} * @noop jwt_helpers_get_grp */ /** * @defgroup jwt_helpers_set_grp Setters * * When setting a value, you must set the type, name, and the specific val for * the type. If the value already exists, then the function will return * JWT_VALUE_ERR_EXISTS and value.error will be set the same. If value.replace * is non-zero, then any existing value will be overwritten. * * @remarks When setting a JSON value, you can set value.name = NULL, in which case * the entire header will be set to the JSON string pointed to by * value.json_val. If value.replace is not set, only values that do not already * exist will be set. If replace is set, then existing values will also be * updated. There is no indication of which values are or aren't updated in * either case. * * @note The replace flag must be set after calling jwt_set_SET_*() macro, as * the macros will reset it back to 0. * * @code * jwt_value_error_t ret; * jwt_value_t jval; * * jwt_set_SET_STR(&jval, "iss", "foo.example.com"); * ret = jwt_builder_header_set(jwt, &jval); * * if (ret == JWT_VALUE_ERR_NONE) * printf("iss updated to: %s\n", jval.str_val); * @endcode * * @{ */ /** * @brief Setup a jwt_value_t to set an integer value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @param __x Value to set * @return No return value */ #define jwt_set_SET_INT(__v, __n, __x) ({ \ (__v)->type=JWT_VALUE_INT;(__v)->replace=0; \ (__v)->name=(__n);(__v)->int_val=(__x);(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to set a string value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @param __x Value to set * @return No return value */ #define jwt_set_SET_STR(__v, __n, __x) ({ \ (__v)->type=JWT_VALUE_STR;(__v)->replace=0; \ (__v)->name=(__n);(__v)->str_val=(__x);(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to set a boolean value * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @param __x Value to set * @return No return value */ #define jwt_set_SET_BOOL(__v, __n, __x) ({ \ (__v)->type=JWT_VALUE_BOOL;(__v)->replace=0; \ (__v)->name=(__n);(__v)->bool_val=(__x);(__v)->error=0;\ (__v);}) /** * @brief Setup a jwt_value_t to set a JSON string * * @param __v Pointer to a jwt_value_t object * @param __n Name of the value * @param __x Value to set * @return No return value */ #define jwt_set_SET_JSON(__v, __n, __x) ({ \ (__v)->type=JWT_VALUE_JSON;(__v)->replace=0; \ (__v)->name=(__n);(__v)->json_val=(__x);(__v)->error=0; \ (__v);}) /** * @} * @noop jwt_helpers_set_grp */ /** * @} * @noop jwt_claims_helpers_grp */ /** * @defgroup jwt_claims_builder_grp Builder Functions * * For the builder function, you can create a set of values in the header and * payload that will be copied verbatim to any token generated from it. The * special claims, ``nbf`` and ``exp``, can be handled more dynamically by * LibJWT, if they are enabled (see jwt_builder_time_offset). * * For any claims that you want to handle on a per token basis (e.g. you may * want a different ``sub`` depending on the user context), this can be done in * a callback on the jwt_t object. * * These functions rely on the @ref jwt_helpers_set_grp macros to better handle * the data being passed to them. * * @{ */ /** * @brief Set a header in a builder object * * @param builder Pointer to a builder object * @param value Pointer to a jwt_value_t object representing the value to set * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. */ JWT_EXPORT jwt_value_error_t jwt_builder_header_set(jwt_builder_t *builder, jwt_value_t *value); /** * @brief Get a header from a builder object * * @param builder Pointer to a builder object * @param value Pointer to a jwt_value_t object representing the value to get * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. Also, the relevant value.*_val will be set on success. */ JWT_EXPORT jwt_value_error_t jwt_builder_header_get(jwt_builder_t *builder, jwt_value_t *value); /** * @brief Delete a header from a builder object * * @param builder Pointer to a builder object * @param header Name of the header delete * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. */ JWT_EXPORT jwt_value_error_t jwt_builder_header_del(jwt_builder_t *builder, const char *header); /** * @brief Set a claim in a builder object * * @param builder Pointer to a builder object * @param value Pointer to a jwt_value_t object representing the value to set * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. */ JWT_EXPORT jwt_value_error_t jwt_builder_claim_set(jwt_builder_t *builder, jwt_value_t *value); /** * @brief Get a claim from a builder object * * @param builder Pointer to a builder object * @param value Pointer to a jwt_value_t object representing the value to get * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. Also, the relevant value.*_val will be set on success. */ JWT_EXPORT jwt_value_error_t jwt_builder_claim_get(jwt_builder_t *builder, jwt_value_t *value); /** * @brief Delete a header from a builder object * * @param builder Pointer to a builder object * @param claim Name of the claim delete * @return JWT_VALUE_ERR_NONE on success, one of the jwt_value_error_t return * on error. */ JWT_EXPORT jwt_value_error_t jwt_builder_claim_del(jwt_builder_t *builder, const char *claim); /** * @brief Disable, or enable and set the ``nbf`` or ``exp`` time offsets * * The time offset is in seconds and will be added to ``now`` when a token is * created. Negative values are not allowed. Setting the secs to 0 or less will * disable adding the specified claim to the token. * * @param builder Pointer to a builder object * @param claim One of JWT_CLAIM_NBF or JWT_CLAIM_EXP * @param secs Seconds of offset to add to ``now`` when generating the * specified claim * @return 0 on success, any other value for an error */ JWT_EXPORT int jwt_builder_time_offset(jwt_builder_t *builder, jwt_claims_t claim, time_t secs); /** * @} * @noop jwt_claims_builder_grp */ /** * @defgroup jwt_claims_checker_grp Checker Functions * * For a checker object, claims will be used to verify the token. This * verification is very simplistic and only supports standards-defined * claims like ``nbf``, ``iss``, etc. Even for some of these, LibJWT can * only perform simple time or string comparison. For example, if you wanted * to accept tokens from multiple issuers, you would need to handle that * yourself, most likely in a callback. * * This is a list of the claims that LibJWT can check on its own, and the * method that is used to decide success: * * Claim | Type | Comparison for Validation * ------- | --------- | ----------------------------- * ``exp`` | Timestamp | ``exp`` > (now + leeway) * ``nbf`` | Timestamp | ``nbf`` <= (now - leeway) * ``iss`` | String | !strcmp(``iss``, ``userval``) * ``aud`` | String | !strcmp(``aud``, ``userval``) * ``sub`` | String | !strcmp(``sub``, ``userval``) * * @note The checker object does not evaluate any values in the header with * the exception of the ``alg`` element when validating a token. Anything you * need to do there can be done in a callback with the jwt_t. * * @{ */ /** * @brief Get the value of a validation claim * * @param checker Pointer to a checker object * @param type One of JWT_CLAIM_ISS, JWT_CLAIM_AUD, or JWT_CLAIM_SUB * @return A string representation of the claim, or NULL if it isn't set */ JWT_EXPORT const char *jwt_checker_claim_get(jwt_checker_t *checker, jwt_claims_t type); /** * @brief Set the value of a validation claim * * @param checker Pointer to a checker object * @param type One of JWT_CLAIM_ISS, JWT_CLAIM_AUD, or JWT_CLAIM_SUB * @param value A string to set as the new value of the validation * @return 0 on success, any other value is an error */ JWT_EXPORT int jwt_checker_claim_set(jwt_checker_t *checker, jwt_claims_t type, const char *value); /** * @brief Delete the value of a validation claim * * @param checker Pointer to a checker object * @param type One of JWT_CLAIM_ISS, JWT_CLAIM_AUD, or JWT_CLAIM_SUB * @return 0 on success, any other value is an error */ JWT_EXPORT int jwt_checker_claim_del(jwt_checker_t *checker, jwt_claims_t type); /** * @brief Setup the exp or nbf claim leeway values * * This allows you to set a leeway for exp and nbf claims to account for any * skew. The value is in seconds. * * To disable either one, set the secs to -1. * * @param checker Pointer to a checker object * @param claim One of JWT_CLAIM_NBF or JWT_CLAIM_EXP * @param secs The number of seconds of leeway to account for being valid * @return 0 on success, any other value is an error */ JWT_EXPORT int jwt_checker_time_leeway(jwt_checker_t *checker, jwt_claims_t claim, time_t secs); /** * @} * @noop jwt_claims_checker_grp */ /** * @defgroup jwt_object_grp JWT Functions * * For most usage, setting values in the builder object is enough to provide * all the information you would like set in a JWT token. However, if some * information is dynamic, meaning it is only known at the time the token is * created, then you can provide this during the builder callback on the jwt_t * object. * * When verifying a token, the checker callback should not modify the jwt_t * object at all. Access to the jwt_t is provided only to allow additional * validation beyond LibJWT's internal checks. * @{ */ /** * @brief Set a value in the header of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param value A jwt_value_t structure with relevant actions filled in * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. The * value.error field will match this return value. */ JWT_EXPORT jwt_value_error_t jwt_header_set(jwt_t *jwt, jwt_value_t *value); /** * @brief Get a value from the header of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param value A jwt_value_t structure with relevant actions filled in * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. The * value.error field will match this return value. */ JWT_EXPORT jwt_value_error_t jwt_header_get(jwt_t *jwt, jwt_value_t *value); /** * @brief Delete a value from the header of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param header The name of the header to delete, or NULL to clear the entire * header * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. */ JWT_EXPORT jwt_value_error_t jwt_header_del(jwt_t *jwt, const char *header); /** * @brief Set a value in the claims of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param value A jwt_value_t structure with relevant actions filled in * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. The * value.error field will match this return value. */ JWT_EXPORT jwt_value_error_t jwt_claim_set(jwt_t *jwt, jwt_value_t *value); /** * @brief Get a value from the claims of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param value A jwt_value_t structure with relevant actions filled in * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. The * value.error field will match this return value. */ JWT_EXPORT jwt_value_error_t jwt_claim_get(jwt_t *jwt, jwt_value_t *value); /** * @brief Delete a value from the claims of a JWT * * @param jwt Pointer to a jwt_t token, previously created with jwt_create() * @param claim The name of the claim to delete, or NULL to clear all claims * @return A jwt_value_error_t value, JWT_VALUE_ERR_NONE being success. */ JWT_EXPORT jwt_value_error_t jwt_claim_del(jwt_t *jwt, const char *claim); /** * @} * @noop jwt_object_grp */ /** * @} * @noop jwt_claims_grp */ /** * @defgroup jwt_alg_grp Algorithms * * Utility functions to convert between string and type for ``alg`` * @{ */ /** * Convert alg type to it's string representation. * * Returns a string that matches the alg type provided. * * @param alg A valid jwt_alg_t specifier. * @returns Returns a string (e.g. "RS256") matching the alg or NULL for * invalid alg. */ JWT_EXPORT const char *jwt_alg_str(jwt_alg_t alg); /** * Convert alg string to type. * * Returns an alg type based on the string representation. * * @rfc{7518,3.1} * * @param alg A valid string for algorithm type (e.g. "RS256"). * @returns Returns a @ref jwt_alg_t matching the string * or @ref JWT_ALG_INVAL if no matches were found. * * @note This only works for algorithms that LibJWT supports or knows about. */ JWT_EXPORT jwt_alg_t jwt_str_alg(const char *alg); /** * @} * @noop jwt_alg_grp */ /** * @} * @noop jwt_grp */ /** * @defgroup jwks_grp JSON Web Keys * @{ */ /** * @defgroup jwks_core_grp JWK Management * * Functions to handle JSON that represents JWK and JWKS for use in validating * or signing JWT objects. * * @note The jwks_create functions are convenience wrappers around the same-named * jwks_load functions. They explicitly create a keyring. * * @note If you want to create an empty keyring, simply call jwks_create(NULL) * * @{ */ /** * @brief Create or add to a keyring from a null terminated string * * This function, and the utility versions, allow you to create a keyring * used to verify and/or create JSON Web Tokens. It accepts either single * JWK or a JWKS (JSON Web Token Set). * * If you want to create a new set, then pass NULL as the first argument. If * you want to add to an existing keyring, then pass that as the first * argument. * * If non-NULL is returned, you should then check to make sure there * is no error with jwks_error(). There may be errors on individual * JWK items in the set. You can check if there are any with * jwks_error_any(). * * @param jwk_set Either NULL to create a new set, or an existing jwt_set * to add new keys to it. * @param jwk_json_str JSON string representation of a single key * or array of "keys". * @return A valid jwt_set_t on success. On failure, either NULL * or a jwt_set_t with error set. NULL generally means ENOMEM. */ JWT_EXPORT jwk_set_t *jwks_load(jwk_set_t *jwk_set, const char *jwk_json_str); /** * @brief Create or add to a keyring from a string of known length * * Useful if the string is not null terminated. Otherwise, it works the same * as jwks_load(). * * @param jwk_set Either NULL to create a new set, or an existing jwt_set * to add new keys to it. * @param jwk_json_str JSON string representation of a single key * or array of "keys". * @param len The length of jwk_json_str that represents the key(s) being * read. * @return A valid jwt_set_t on success. On failure, either NULL * or a jwt_set_t with error set. NULL generally means ENOMEM. */ JWT_EXPORT jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str, const size_t len); /** * @brief Create or add to a keyring from a file * * The JSON will be read from a file on the system. Must be readable by the * running process. The end result of this function is the same as jwks_load. * * @param jwk_set Either NULL to create a new set, or an existing jwt_set * to add new keys to it. * @param file_name A file containing a JSON representation of a single key * or array of "keys". * @return A valid jwt_set_t on success. On failure, either NULL * or a jwt_set_t with error set. NULL generally means ENOMEM. */ JWT_EXPORT jwk_set_t *jwks_load_fromfile(jwk_set_t *jwk_set, const char *file_name); /** * @brief Create or add to a keyring from a FILE pointer * * The JSON will be read from a FILE pointer. The end result of this function * is the same as jwks_load. The FILE pointer must be set to the starting * position of the JWK data. This function will read until it reaches EOF or * invalid JSON data. * * @param jwk_set Either NULL to create a new set, or an existing jwt_set * to add new keys to it. * @param input A FILE pointer where the JSON representation of a single key * or array of "keys" can be fread() from. * @return A valid jwt_set_t on success. On failure, either NULL * or a jwt_set_t with error set. NULL generally means ENOMEM. */ JWT_EXPORT jwk_set_t *jwks_load_fromfp(jwk_set_t *jwk_set, FILE *input); /** * @brief Create or add to a keyring from a URL * * The JSON will be retrieved from a URL. This can be any URL understood by * by Libcurl. * * Example: https://example.com/.well-known/jwks.json * * @warning You should not have private keys available on public web sites. * * @param jwk_set Either NULL to create a new set, or an existing jwt_set * to add new keys to it. * @param url A string URL to where the JSON representation of a single key * or array of "keys" can be retrieved from. Generally a json file. * @param verify Set to 1 to verify the Host, 2 to verify Host and Peer. * 2 is recommended unless you really need to disable with 0. * @return A valid jwt_set_t on success. On failure, either NULL * or a jwt_set_t with error set. NULL generally means ENOMEM. */ JWT_EXPORT jwk_set_t *jwks_load_fromurl(jwk_set_t *jwk_set, const char *url, int verify); /** * @brief Wrapper around jwks_load() that explicitly creates a new keyring */ JWT_EXPORT jwk_set_t *jwks_create(const char *jwk_json_str); /** * @brief Wrapper around jwks_load_strn() that explicitly creates a new keyring */ JWT_EXPORT jwk_set_t *jwks_create_strn(const char *jwk_json_str, const size_t len); /** * @brief Wrapper around jwks_load_fromfile() that explicitly creates a new * keyring */ JWT_EXPORT jwk_set_t *jwks_create_fromfile(const char *file_name); /** * @brief Wrapper around jwks_load_fromfp() that explicitly creates a new * keyring */ JWT_EXPORT jwk_set_t *jwks_create_fromfp(FILE *input); /** * @brief Wrapper around jwks_load_fromurl() that explicitly creates a new * keyring */ JWT_EXPORT jwk_set_t *jwks_create_fromurl(const char *url, int verify); /** * @brief Check if there is an error with a jwk_set * * An Error in a jwk_set is usually passive and generally means there was an * issue loading the JWK(S) data. * * To get a string describing the error, use jwks_error_msg(). You can clear * the error with jwks_error_clear(). * * @param jwk_set An existing jwk_set_t * @return 0 if no error exists, 1 if it does exists. */ JWT_EXPORT int jwks_error(const jwk_set_t *jwk_set); /** * @brief Check if there is an error within the jwk_set and any of * the jwk_item_t in the set. * * @param jwk_set An existing jwk_set_t * @return 0 if no error exists, or the number of errors in the set */ JWT_EXPORT int jwks_error_any(const jwk_set_t *jwk_set); /** * @brief Retrieve an error message from a jwk_set * * @note A zero length string is valid even if jwks_error() returns non-zero. * * @param jwk_set An existing jwk_set_t * @return A string message. The string may be empty. */ JWT_EXPORT const char *jwks_error_msg(const jwk_set_t *jwk_set); /** * @brief Clear an error condition in a jwk_set * * @param jwk_set An existing jwk_set_t */ JWT_EXPORT void jwks_error_clear(jwk_set_t *jwk_set); /** * Free all memory associated with a jwt_set_t, including any jwk_item_t in * the set. * * @param jwk_set An existing jwk_set_t */ JWT_EXPORT void jwks_free(jwk_set_t *jwk_set); #if defined(__GNUC__) || defined(__clang__) /** * @brief Helper function to free a JWK Set and set the pointer to NULL * * This is mainly to use with the jwt_set_auto_t type. * * @param Pointer to a pointer for a jwt_set_t object */ static inline void jwks_freep(jwk_set_t **jwks) { if (jwks) { jwks_free(*jwks); *jwks = NULL; } } #define jwk_set_auto_t jwk_set_t __attribute__((cleanup(jwks_freep))) #endif /** * @} * @noop jwks_core_grp */ /** * @defgroup jwks_item_grp JSON Web Key Usage * * Functionality for using a JWK (represented as a jwk_item_t) to sign and * validate JWT objects. * * @{ */ /** * @brief Return the index'th jwk_item in the jwk_set * * Allows you to obtain the raw jwk_item. NOTE, this is not a copy of the item, * which means if the jwk_set is freed, then this data is freed and cannot be * used. * * @param jwk_set An existing jwk_set_t * @param index Index of the jwk_set * @return A valid jwk_item_t or NULL if it doesn't exist * * @warning The index of an item in a keyring can change if items are deleted. * Effort is made to add new JWK to the end of the set, so this should not * affect the index of previous items. */ JWT_EXPORT const jwk_item_t *jwks_item_get(const jwk_set_t *jwk_set, size_t index); /** * @brief Find a jwk_item_t with a specific kid (Key ID) * * LibJWT does not ensure that kid's are unique in a given keyring, so care * must be taken. This will return the first match. * * @param jwk_set An existing jwk_set_t * @param kid String representing a ``kid`` to find * @return A jwk_item_t object or NULL if none found */ JWT_EXPORT jwk_item_t *jwks_find_bykid(jwk_set_t *jwk_set, const char *kid); /** * @brief Whether this key is private (or public) * * @param item A JWK Item * @return 1 for true, 0 for false */ JWT_EXPORT int jwks_item_is_private(const jwk_item_t *item); /** * @brief Check the error condition for this JWK * * @param item A JWK Item * @return 1 for true, 0 for false */ JWT_EXPORT int jwks_item_error(const jwk_item_t *item); /** * @brief Check the error message for a JWK Item * * @param item A JWK Item * @return A string message. Empty string if no error. */ JWT_EXPORT const char *jwks_item_error_msg(const jwk_item_t *item); /** * @brief A curve name, if applicable, for this key * * Mainly applies to EC and OKP (EdDSA) type keys. * * @param item A JWK Item * @return A string of the curve name if one exists. NULL otherwise. */ JWT_EXPORT const char *jwks_item_curve(const jwk_item_t *item); /** * @brief A kid (Key ID) for this JWK * * @param item A JWK Item * @return A string of the kid if one exists. NULL otherwise. */ JWT_EXPORT const char *jwks_item_kid(const jwk_item_t *item); /** * @brief The algorithm for this JWK * * It is perfectly valid for this to be JWT_ALG_NONE. * * @param item A JWK Item * @return A jwt_alg_t type of this key */ JWT_EXPORT jwt_alg_t jwks_item_alg(const jwk_item_t *item); /** * @brief The Key Type of this JWK * * @param item A JWK Item * @return A jwk_key_type_t type for this key */ JWT_EXPORT jwk_key_type_t jwks_item_kty(const jwk_item_t *item); /** * @brief The ``"use"`` field for this JWK * * @param item A JWK Item * @return A jwk_pub_key_use_t type for this key */ JWT_EXPORT jwk_pub_key_use_t jwks_item_use(const jwk_item_t *item); /** * @brief The ``"key_ops"`` field for this JWK * * @param item A JWK Item * @return A jwk_key_op_t type for this key which represents all of the * ``"key_ops"`` supported as a bit field. */ JWT_EXPORT jwk_key_op_t jwks_item_key_ops(const jwk_item_t *item); /** * @brief The PEM generated for the JWK * * This is an optional field that may or may not be supported depending on * which crypto backend is in use. It is provided as a courtesy. * * @param item A JWK Item * @return A string of the PEM file for this key or NULL if none exists */ JWT_EXPORT const char *jwks_item_pem(const jwk_item_t *item); /** * @brief Retrieve binary octet data of a key * * Only valid for JWT_KEY_TYPE_OCT. * * @param item A JWK Item * @param buf Pointer to a pointer buffer * @param len Pointer to a length * @return 0 on success. @p buf will point to data of @c len length. Non-zero on * error. */ JWT_EXPORT int jwks_item_key_oct(const jwk_item_t *item, const unsigned char **buf, size_t *len); /** * @brief The number of bits in this JWK * * This is relevant to the key type (kty). E.g. an RSA key would have at least * 2048 bits, and an EC key would be 256, 384, or 521 bits, etc. * * @param item A JWK Item * @return The number of bits for the key */ JWT_EXPORT int jwks_item_key_bits(const jwk_item_t *item); /** * @brief Free remove and free the nth jwk_item_t in a jwk_set * * @param jwk_set Pointer to a JWKS object * @param index the position of the item in the index * @return 0 if no item was was deleted (found), 1 if it was */ JWT_EXPORT int jwks_item_free(jwk_set_t *jwk_set, size_t index); /** * @brief Remove and free all jwk_item_t in a jwk_set_t * * The jwk_set_t becomes an empty set. * * @param jwk_set Pointer to a JWKS object * @return The number of items deleted */ JWT_EXPORT int jwks_item_free_all(jwk_set_t *jwk_set); /** * @brief Free all keys marked with an error in a jwk_set_t * * The jwk_set_t becomes an empty set. * * @param jwk_set Pointer to a JWKS object * @return The number of items with an error that were deleted */ JWT_EXPORT int jwks_item_free_bad(jwk_set_t *jwk_set); /** * @brief Return the number of keys in a jwk_set_t * * @param jwk_set Pointer to a JWKS object * @return The number of items in the set */ JWT_EXPORT size_t jwks_item_count(const jwk_set_t *jwk_set); /** * @} * @noop jwks_item_grp */ /** * @} * @noop jwks_grp */ /** * @defgroup jwt_advanced_grp Advanced Functionality * @{ */ /** * @defgroup jwt_memory_grp Memory Handlers * These functions allow you to get or set memory allocation functions. * @{ */ /** * @brief Set functions to be used for memory management * * By default, LibJWT uses malloc and free for memory * management. This function allows the user of the library to * specify its own memory management functions. This is especially * useful on Windows where mismatches in runtimes across DLLs can * cause problems. * * The caller can specify either a valid function pointer for * any of the parameters or NULL to use the corresponding default * allocator function. * * @note This function will also set the memory allocator for the Jansson * library. * * @param pmalloc The function to use for allocating memory or * NULL to use malloc * @param pfree The function to use for freeing memory or * NULL to use free * @returns 0 on success or errno otherwise. */ JWT_EXPORT int jwt_set_alloc(jwt_malloc_t pmalloc, jwt_free_t pfree); /** * Get functions used for allocating and freeing memory. * * @param pmalloc Pointer to malloc function output variable, or NULL * @param pfree Pointer to free function output variable, or NULL */ JWT_EXPORT void jwt_get_alloc(jwt_malloc_t *pmalloc, jwt_free_t *pfree); /** * @} * @noop jwt_memory_grp */ /** * @defgroup jwt_crypto_grp Cryptographic Ops * Functions used to set and get which crypto operations are used * * LibJWT supports several crypto libraries, mainly "openssl", "gnutls", * and "mbedtls". By default, "openssl" is used. * * @warning Changing the crypto operations is not thread safe. You must * protect changing them with some sort of lock, including locking * around usage of the operations themselves. Ideally, you should only * perform this at the start of your application before using any of * LibJWTs functions. Failing to follow this guide can lead to crashes * in certain situations. * * @remark ENVIRONMENT: You can set JWT_CRYPTO to the default operations you * wish to use. If JWT_CRYPTO is invalid, an error message will be * printed to the console when LibJWT is loaded by the application. * @{ */ /** * Retrieve the name of the current crypto operations being used. * * @return name of the crypto operation set */ JWT_EXPORT const char *jwt_get_crypto_ops(void); /** * Retrieve the type of the current crypto operations being used. * * @return jwt_crypto_provider_t of the crypto operation set */ JWT_EXPORT jwt_crypto_provider_t jwt_get_crypto_ops_t(void); /** * Set the crypto operations to the named set. * * The opname is one of the available operators in the compiled version * of LibJWT. Most times, this is either "openssl" or "gnutls". * * @param opname the name of the crypto operation to set * @return 0 on success, 1 for error */ JWT_EXPORT int jwt_set_crypto_ops(const char *opname); /** * Set the crypto operations to a jwt_crypto_provider_t type * * The same as jwt_set_crypto_ops(), but uses the type as opname * * @param opname A valid jwt_crypto_provider_t type * @return 0 on success, 1 for error */ JWT_EXPORT int jwt_set_crypto_ops_t(jwt_crypto_provider_t opname); /** * Check if the current crypto operations support JWK usage * * @return 1 if it does, 0 if not */ JWT_EXPORT int jwt_crypto_ops_supports_jwk(void); /** * @} * @noop jwt_crypto_grp */ /** * @} * @noop jwt_advanced_grp */ #ifdef __cplusplus } #endif #endif /* JWT_H */ libjwt-3.2.3/include/jwt_export.h.in000066400000000000000000000037151510461717300174330ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef @INCLUDE_GUARD_NAME@ #define @INCLUDE_GUARD_NAME@ /* Version macros for LibJWT */ #define @VERSION_MAJOR_NAME@ @DEFINE_MAJOR@ #define @VERSION_MINOR_NAME@ @DEFINE_MINOR@ #define @VERSION_MICRO_NAME@ @DEFINE_MICRO@ #define @VERSION_STRING_NAME@ @DEFINE_VERSION@ /* Whether the system supports "long long". This is primarily to sync * with jansson's json_int_t when working with JSON integers. */ #define @USE_LONG_LONG_NAME@ @DEFINE_LONG_LONG@ #ifdef @STATIC_DEFINE@ # define @EXPORT_MACRO_NAME@ # define @NO_EXPORT_MACRO_NAME@ #else # ifndef @EXPORT_MACRO_NAME@ # ifdef @EXPORT_IMPORT_CONDITION@ /* We are building this library */ # define @EXPORT_MACRO_NAME@ @DEFINE_EXPORT@ # else /* We are using this library */ # define @EXPORT_MACRO_NAME@ @DEFINE_IMPORT@ # endif # endif # ifndef @NO_EXPORT_MACRO_NAME@ # define @NO_EXPORT_MACRO_NAME@ @DEFINE_NO_EXPORT@ # endif #endif #ifndef @CONSTRUCTOR_MACRO_NAME@ # define @CONSTRUCTOR_MACRO_NAME@ @DEFINE_CONSTRUCTOR@ #endif #ifndef @DEPRECATED_MACRO_NAME@ # define @DEPRECATED_MACRO_NAME@ @DEFINE_DEPRECATED@ #endif #ifndef @DEPRECATED_MACRO_NAME@_EXPORT # define @DEPRECATED_MACRO_NAME@_EXPORT @EXPORT_MACRO_NAME@ @DEPRECATED_MACRO_NAME@ #endif #ifndef @DEPRECATED_MACRO_NAME@_NO_EXPORT # define @DEPRECATED_MACRO_NAME@_NO_EXPORT @NO_EXPORT_MACRO_NAME@ @DEPRECATED_MACRO_NAME@ #endif /* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */ #if @DEFINE_NO_DEPRECATED@ /* DEFINE_NO_DEPRECATED */ # ifndef @NO_DEPRECATED_MACRO_NAME@ # define @NO_DEPRECATED_MACRO_NAME@ # endif #endif #endif /* @INCLUDE_GUARD_NAME@ */ libjwt-3.2.3/libjwt/000077500000000000000000000000001510461717300143125ustar00rootroot00000000000000libjwt-3.2.3/libjwt/base64.c000066400000000000000000000071571510461717300155540ustar00rootroot00000000000000/* This is a public domain base64 implementation written by WEI Zhicheng. */ #include "base64.h" #define BASE64_PAD '=' #define BASE64DE_FIRST '+' #define BASE64DE_LAST 'z' /* BASE 64 encode table */ static const char base64en[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', }; /* ASCII order for BASE 64 decode, 255 in unused character */ static const unsigned char base64de[] = { /* nul, soh, stx, etx, eot, enq, ack, bel, */ 255, 255, 255, 255, 255, 255, 255, 255, /* bs, ht, nl, vt, np, cr, so, si, */ 255, 255, 255, 255, 255, 255, 255, 255, /* dle, dc1, dc2, dc3, dc4, nak, syn, etb, */ 255, 255, 255, 255, 255, 255, 255, 255, /* can, em, sub, esc, fs, gs, rs, us, */ 255, 255, 255, 255, 255, 255, 255, 255, /* sp, '!', '"', '#', '$', '%', '&', ''', */ 255, 255, 255, 255, 255, 255, 255, 255, /* '(', ')', '*', '+', ',', '-', '.', '/', */ 255, 255, 255, 62, 255, 255, 255, 63, /* '0', '1', '2', '3', '4', '5', '6', '7', */ 52, 53, 54, 55, 56, 57, 58, 59, /* '8', '9', ':', ';', '<', '=', '>', '?', */ 60, 61, 255, 255, 255, 255, 255, 255, /* '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', */ 255, 0, 1, 2, 3, 4, 5, 6, /* 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', */ 7, 8, 9, 10, 11, 12, 13, 14, /* 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', */ 15, 16, 17, 18, 19, 20, 21, 22, /* 'X', 'Y', 'Z', '[', '\', ']', '^', '_', */ 23, 24, 25, 255, 255, 255, 255, 255, /* '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', */ 255, 26, 27, 28, 29, 30, 31, 32, /* 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', */ 33, 34, 35, 36, 37, 38, 39, 40, /* 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', */ 41, 42, 43, 44, 45, 46, 47, 48, /* 'x', 'y', 'z', '{', '|', '}', '~', del, */ 49, 50, 51, 255, 255, 255, 255, 255 }; unsigned int base64_encode(const unsigned char *in, unsigned int inlen, char *out) { int s; unsigned int i; unsigned int j; unsigned char c; unsigned char l; s = 0; l = 0; for (i = j = 0; i < inlen; i++) { c = in[i]; switch (s) { case 0: s = 1; out[j++] = base64en[(c >> 2) & 0x3F]; break; case 1: s = 2; out[j++] = base64en[((l & 0x3) << 4) | ((c >> 4) & 0xF)]; break; case 2: s = 0; out[j++] = base64en[((l & 0xF) << 2) | ((c >> 6) & 0x3)]; out[j++] = base64en[c & 0x3F]; break; } l = c; } switch (s) { case 1: out[j++] = base64en[(l & 0x3) << 4]; out[j++] = BASE64_PAD; out[j++] = BASE64_PAD; break; case 2: out[j++] = base64en[(l & 0xF) << 2]; out[j++] = BASE64_PAD; break; } out[j] = 0; return j; } unsigned int base64_decode(const char *in, unsigned int inlen, unsigned char *out) { unsigned int i; unsigned int j; unsigned char c; if (inlen & 0x3) { /* We sanitize the input to where this never gets hit */ return 0; // LCOV_EXCL_LINE } for (i = j = 0; i < inlen; i++) { if (in[i] == BASE64_PAD) { break; } if (in[i] < BASE64DE_FIRST || in[i] > BASE64DE_LAST) { return 0; } c = base64de[(unsigned char)in[i]]; if (c == 255) { return 0; } switch (i & 0x3) { case 0: out[j] = (c << 2) & 0xFF; break; case 1: out[j++] |= (c >> 4) & 0x3; out[j] = (c & 0xF) << 4; break; case 2: out[j++] |= (c >> 2) & 0xF; out[j] = (c & 0x3) << 6; break; case 3: out[j++] |= c; break; } } return j; } libjwt-3.2.3/libjwt/base64.h000066400000000000000000000011441510461717300155470ustar00rootroot00000000000000#ifndef BASE64_H #define BASE64_H #include #include "jwt-private.h" #define BASE64_ENCODE_OUT_SIZE(s) ((unsigned int)((((s) + 2) / 3) * 4 + 1)) #define BASE64_DECODE_OUT_SIZE(s) ((unsigned int)(((s) / 4) * 3)) /* * out is null-terminated encode string. * return values is out length, exclusive terminating `\0' */ JWT_NO_EXPORT extern unsigned int base64_encode(const unsigned char *in, unsigned int inlen, char *out); /* * return values is out length */ JWT_NO_EXPORT extern unsigned int base64_decode(const char *in, unsigned int inlen, unsigned char *out); #endif /* BASE64_H */ libjwt-3.2.3/libjwt/gnutls/000077500000000000000000000000001510461717300156265ustar00rootroot00000000000000libjwt-3.2.3/libjwt/gnutls/jwk-parse.c000066400000000000000000000020771510461717300177030ustar00rootroot00000000000000/* Copyright (C) 2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include "jwt-private.h" static const char not_implemented[] = "GnuTLS does not yet implement JWK"; JWT_NO_EXPORT int gnutls_process_eddsa(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT int gnutls_process_rsa(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT int gnutls_process_ec(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT void gnutls_process_item_free(jwk_item_t *item) { return; } libjwt-3.2.3/libjwt/gnutls/jwt-gnutls.h000066400000000000000000000016121510461717300201150ustar00rootroot00000000000000/* Copyright (C) 2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef JWT_GNUTLS_H #define JWT_GNUTLS_H /* Until we have our own routines, we rely on OpenSSL */ int openssl_process_eddsa(json_t *jwk, jwk_item_t *item); int openssl_process_rsa(json_t *jwk, jwk_item_t *item); int openssl_process_ec(json_t *jwk, jwk_item_t *item); void openssl_process_item_free(jwk_item_t *item); int gnutls_process_eddsa(json_t *jwk, jwk_item_t *item); int gnutls_process_rsa(json_t *jwk, jwk_item_t *item); int gnutls_process_ec(json_t *jwk, jwk_item_t *item); void gnutls_process_item_free(jwk_item_t *item); #endif /* JWT_GNUTLS_H */ libjwt-3.2.3/libjwt/gnutls/sign-verify.c000066400000000000000000000237621510461717300202460ustar00rootroot00000000000000/* Copyright (C) 2017 Nicolas Mora Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include "jwt-private.h" #include "jwt-gnutls.h" /** * libjwt Cryptographic Signature/Verification function definitions */ static int gnutls_sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { int alg; void *key; size_t key_len; key = jwt->key->oct.key; key_len = jwt->key->oct.len; switch (jwt->alg) { case JWT_ALG_HS256: alg = GNUTLS_DIG_SHA256; break; case JWT_ALG_HS384: alg = GNUTLS_DIG_SHA384; break; case JWT_ALG_HS512: alg = GNUTLS_DIG_SHA512; break; // LCOV_EXCL_START default: return 1; // LCOV_EXCL_STOP } *len = gnutls_hmac_get_len(alg); *out = jwt_malloc(*len); if (*out == NULL) return 1; // LCOV_EXCL_LINE if (gnutls_hmac_fast(alg, key, key_len, str, str_len, *out)) { // LCOV_EXCL_START jwt_freemem(*out); return 1; // LCOV_EXCL_STOP } return 0; } #define SIGN_ERROR(_msg) { jwt_write_error(jwt, "JWT[GnuTLS]: " _msg); goto sign_clean_privkey; } static int gnutls_sign_sha_pem(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { /* For EC handling. */ int r_padding = 0, s_padding = 0, r_out_padding = 0, s_out_padding = 0; gnutls_privkey_t privkey; size_t out_size; gnutls_datum_t sig_dat, r, s; gnutls_digest_algorithm_t alg; int pk_alg, flags = 0; unsigned int adj; if (gnutls_privkey_init(&privkey)) SIGN_ERROR("Error initializing privkey"); // LCOV_EXCL_LINE if (jwt->alg == JWT_ALG_ES256K) SIGN_ERROR("ES256K not supported"); // LCOV_EXCL_LINE if (jwt->key->pem == NULL) SIGN_ERROR("No PEM to load"); // LCOV_EXCL_LINE gnutls_datum_t key_dat = { (unsigned char *)jwt->key->pem, strlen(jwt->key->pem) }; gnutls_datum_t body_dat = { (unsigned char *)str, str_len }; /* Try loading as a private key, and extracting the pubkey */ if (gnutls_privkey_import_x509_raw(privkey, &key_dat, GNUTLS_X509_FMT_PEM, NULL, 0)) { SIGN_ERROR("Could not import private key"); // LCOV_EXCL_LINE } /* Initialize for checking later. */ *out = NULL; switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = GNUTLS_DIG_SHA256; pk_alg = GNUTLS_PK_RSA; break; case JWT_ALG_RS384: alg = GNUTLS_DIG_SHA384; pk_alg = GNUTLS_PK_RSA; break; case JWT_ALG_RS512: alg = GNUTLS_DIG_SHA512; pk_alg = GNUTLS_PK_RSA; break; /* RSA-PSS */ case JWT_ALG_PS256: alg = GNUTLS_DIG_SHA256; pk_alg = GNUTLS_PK_RSA_PSS; break; case JWT_ALG_PS384: alg = GNUTLS_DIG_SHA384; pk_alg = GNUTLS_PK_RSA_PSS; break; case JWT_ALG_PS512: alg = GNUTLS_DIG_SHA512; pk_alg = GNUTLS_PK_RSA_PSS; break; /* EC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = GNUTLS_DIG_SHA256; pk_alg = GNUTLS_PK_EC; break; case JWT_ALG_ES384: alg = GNUTLS_DIG_SHA384; pk_alg = GNUTLS_PK_EC; break; case JWT_ALG_ES512: alg = GNUTLS_DIG_SHA512; pk_alg = GNUTLS_PK_EC; break; /* EdDSA */ case JWT_ALG_EDDSA: pk_alg = gnutls_privkey_get_pk_algorithm(privkey, NULL); if (pk_alg == GNUTLS_PK_EDDSA_ED25519) alg = GNUTLS_DIG_SHA512; else if (pk_alg == GNUTLS_PK_EDDSA_ED448) { alg = GNUTLS_DIG_SHAKE_256; } else { SIGN_ERROR("Unknown EdDSA key"); // LCOV_EXCL_LINE } break; // LCOV_EXCL_START default: SIGN_ERROR("Unknown signing alg"); // LCOV_EXCL_STOP } if (pk_alg == GNUTLS_PK_RSA_PSS) { int ck = gnutls_privkey_get_pk_algorithm(privkey, NULL); if (ck != GNUTLS_PK_RSA_PSS && ck != GNUTLS_PK_RSA) SIGN_ERROR("RSASSA-PSS alg mismatch"); // LCOV_EXCL_LINE flags |= GNUTLS_PRIVKEY_SIGN_FLAG_RSA_PSS; } else if (pk_alg != gnutls_privkey_get_pk_algorithm(privkey, NULL)) { SIGN_ERROR("Alg mismatch with signing key"); // LCOV_EXCL_LINE } if (gnutls_privkey_sign_data(privkey, alg, flags, &body_dat, &sig_dat)) SIGN_ERROR("Failed to sign token"); // LCOV_EXCL_LINE if (pk_alg == GNUTLS_PK_EC) { /* Start EC handling. */ if (gnutls_decode_rs_value(&sig_dat, &r, &s)) SIGN_ERROR("Error decoding EC key"); // LCOV_EXCL_LINE /* Check r and s size */ if (jwt->alg == JWT_ALG_ES256 || jwt->alg == JWT_ALG_ES256K) adj = 32; if (jwt->alg == JWT_ALG_ES384) adj = 48; if (jwt->alg == JWT_ALG_ES512) adj = 66; if (r.size > adj) r_padding = r.size - adj; else if (r.size < adj) r_out_padding = adj - r.size; if (s.size > adj) s_padding = s.size - adj; else if (s.size < adj) s_out_padding = adj - s.size; out_size = adj << 1; *out = jwt_malloc(out_size); if (*out == NULL) SIGN_ERROR("Out of memory"); // LCOV_EXCL_LINE memset(*out, 0, out_size); memcpy(*out + r_out_padding, r.data + r_padding, r.size - r_padding); memcpy(*out + (r.size - r_padding + r_out_padding) + s_out_padding, s.data + s_padding, (s.size - s_padding)); *len = (r.size - r_padding + r_out_padding) + (s.size - s_padding + s_out_padding); gnutls_free(r.data); gnutls_free(s.data); } else { /* All others that aren't EC */ *out = jwt_malloc(sig_dat.size); if (*out == NULL) SIGN_ERROR("Out of memory"); // LCOV_EXCL_LINE /* Copy signature to out */ memcpy(*out, sig_dat.data, sig_dat.size); *len = sig_dat.size; } /* Clean and exit */ gnutls_free(sig_dat.data); sign_clean_privkey: gnutls_privkey_deinit(privkey); if (jwt->error) jwt_freemem(*out); // LCOV_EXCL_LINE return jwt->error; } #define VERIFY_ERROR(_msg) { jwt_write_error(jwt, "JWT[GnuTLS]: " _msg); goto verify_clean_sig; } static int gnutls_verify_sha_pem(jwt_t *jwt, const char *head, unsigned int head_len, unsigned char *sig, int sig_len) { gnutls_datum_t r, s; gnutls_datum_t data = { (unsigned char *)head, head_len }; gnutls_datum_t sig_dat = { NULL, 0 }; gnutls_pubkey_t pubkey; int alg, ret = 0; if (gnutls_pubkey_init(&pubkey)) VERIFY_ERROR("Failed initializing pubkey"); // LCOV_EXCL_LINE if (jwt->key->pem == NULL) VERIFY_ERROR("No PEM to load"); // LCOV_EXCL_LINE gnutls_datum_t cert_dat = { (unsigned char *)jwt->key->pem, strlen(jwt->key->pem) }; if (jwt->alg == JWT_ALG_ES256K) VERIFY_ERROR("ES256K not supported"); // LCOV_EXCL_LINE ret = gnutls_pubkey_import(pubkey, &cert_dat, GNUTLS_X509_FMT_PEM); if (ret) { gnutls_privkey_t privkey; /* Try loading as a private key, and extracting the pubkey. * This is perfectly legit. A JWK can have a private key with * key_ops of SIGN and VERIFY. */ if (gnutls_privkey_init(&privkey)) VERIFY_ERROR("Failed initializing privkey"); // LCOV_EXCL_LINE /* Try loading as a private key, and extracting the pubkey */ if (gnutls_privkey_import_x509_raw(privkey, &cert_dat, GNUTLS_X509_FMT_PEM, NULL, 0)) { VERIFY_ERROR("Failed importing key"); // LCOV_EXCL_LINE } ret = gnutls_pubkey_import_privkey(pubkey, privkey, 0, 0); gnutls_privkey_deinit(privkey); if (ret) VERIFY_ERROR("Failed to import key"); // LCOV_EXCL_LINE } switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = GNUTLS_SIGN_RSA_SHA256; break; case JWT_ALG_RS384: alg = GNUTLS_SIGN_RSA_SHA384; break; case JWT_ALG_RS512: alg = GNUTLS_SIGN_RSA_SHA512; break; /* RSA-PSS */ case JWT_ALG_PS256: alg = GNUTLS_SIGN_RSA_PSS_SHA256; break; case JWT_ALG_PS384: alg = GNUTLS_SIGN_RSA_PSS_SHA384; break; case JWT_ALG_PS512: alg = GNUTLS_SIGN_RSA_PSS_SHA512; break; /* EC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = GNUTLS_SIGN_ECDSA_SHA256; break; case JWT_ALG_ES384: alg = GNUTLS_SIGN_ECDSA_SHA384; break; case JWT_ALG_ES512: alg = GNUTLS_SIGN_ECDSA_SHA512; break; /* EdDSA */ case JWT_ALG_EDDSA: alg = gnutls_pubkey_get_pk_algorithm(pubkey, NULL); if (alg == GNUTLS_PK_EDDSA_ED25519) alg = GNUTLS_SIGN_EDDSA_ED25519; else if (alg == GNUTLS_PK_EDDSA_ED448) { alg = GNUTLS_SIGN_EDDSA_ED448; } else { VERIFY_ERROR("Unknown EdDSA key type"); // LCOV_EXCL_LINE } break; // LCOV_EXCL_START default: VERIFY_ERROR("Unknown alg"); // LCOV_EXCL_STOP } /* Rebuild signature using r and s extracted from sig when jwt->alg * is ESxxx. */ switch (jwt->alg) { case JWT_ALG_ES256: case JWT_ALG_ES256K: case JWT_ALG_ES384: case JWT_ALG_ES512: /* XXX Gotta be a better way. */ if (sig_len == 64) { r.size = 32; r.data = sig; s.size = 32; s.data = sig + 32; } else if (sig_len == 96) { r.size = 48; r.data = sig; s.size = 48; s.data = sig + 48; } else if (sig_len == 132) { r.size = 66; r.data = sig; s.size = 66; s.data = sig + 66; } else { VERIFY_ERROR("Irregular sig_len for ECDHA"); // LCOV_EXCL_LINE } if (gnutls_encode_rs_value(&sig_dat, &r, &s) || gnutls_pubkey_verify_data2(pubkey, alg, 0, &data, &sig_dat)) ret = 1; // LCOV_EXCL_LINE if (sig_dat.data != NULL) gnutls_free(sig_dat.data); if (ret) VERIFY_ERROR("Could not encode R/S values for ECDHA"); // LCOV_EXCL_LINE break; default: /* Use simple signature verification. */ sig_dat.size = sig_len; sig_dat.data = sig; if (gnutls_pubkey_verify_data2(pubkey, alg, 0, &data, &sig_dat)) VERIFY_ERROR("Failed to verify signature"); // LCOV_EXCL_LINE } verify_clean_sig: gnutls_pubkey_deinit(pubkey); return ret; } /* Export our ops */ struct jwt_crypto_ops jwt_gnutls_ops = { .name = "gnutls", .provider = JWT_CRYPTO_OPS_GNUTLS, .sign_sha_hmac = gnutls_sign_sha_hmac, .sign_sha_pem = gnutls_sign_sha_pem, .verify_sha_pem = gnutls_verify_sha_pem, /* Needs to be implemented */ .jwk_implemented = 1, .process_eddsa = openssl_process_eddsa, .process_rsa = openssl_process_rsa, .process_ec = openssl_process_ec, .process_item_free = openssl_process_item_free, }; libjwt-3.2.3/libjwt/jwks-curl.c000066400000000000000000000057071510461717300164100ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "jwt-private.h" #ifdef HAVE_LIBCURL #include struct jwks_data { char *buf; size_t size; size_t alloc_size; }; static size_t header_cb(char *buf, size_t size, size_t nmemb, void *ctx) { size_t total_size = size * nmemb; struct jwks_data *data = ctx; if (strncasecmp(buf, "Content-Length:", 15)) return total_size; data->alloc_size = (size_t)atol(buf + 15); data->buf = jwt_malloc(data->alloc_size + 1); if (!data->buf) return 0; // LCOV_EXCL_LINE data->size = 0; data->buf[0] = '\0'; return total_size; } static size_t write_cb(void *contents, size_t size, size_t nmemb, void *ctx) { size_t total_size = size * nmemb; struct jwks_data *data = ctx; if (data->size + total_size > data->alloc_size) return 0; // LCOV_EXCL_LINE memcpy(&(data->buf[data->size]), contents, total_size); data->size += total_size; data->buf[data->size] = '\0'; return total_size; } static char *__curl_get(jwk_set_t *jwk_set, const char *url, size_t *len, int verify) { CURL *curl; CURLcode res; struct jwks_data data; memset(&data, 0, sizeof(data)); curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl == NULL) { // LCOV_EXCL_START curl_global_cleanup(); return NULL; // LCOV_EXCL_STOP } curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_cb); curl_easy_setopt(curl, CURLOPT_HEADERDATA, (void *)&data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&data); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, (verify > 0) ? 2L : 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, (verify > 1) ? 1L : 0L); res = curl_easy_perform(curl); curl_easy_cleanup(curl); curl_global_cleanup(); if (res != CURLE_OK) { jwt_write_error(jwk_set, "%s", curl_easy_strerror(res)); return NULL; } *len = data.size; return data.buf; } jwk_set_t *jwks_load_fromurl(jwk_set_t *jwk_set, const char *url, int verify) { char *str = NULL; size_t len; if (url == NULL) return NULL; if (jwk_set == NULL) jwk_set = jwks_create(NULL); if (jwk_set == NULL) return NULL; // LCOV_EXCL_LINE str = __curl_get(jwk_set, url, &len, verify); if (str != NULL) { jwk_set = jwks_load_strn(jwk_set, str, len); jwt_freemem(str); } return jwk_set; } #else jwk_set_t *jwks_load_fromurl(jwk_set_t *jwk_set, const char *url, int verify) { (void)jwk_set; (void)url; (void)verify; return NULL; } #endif jwk_set_t *jwks_create_fromurl(const char *url, int verify) { return jwks_load_fromurl(NULL, url, verify); } libjwt-3.2.3/libjwt/jwks.c000066400000000000000000000266101510461717300154410ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "jwt-private.h" /* RFC-7517 4.3 */ static jwk_key_op_t jwk_key_op_j(json_t *j_op) { const char *op; if (!j_op || !json_is_string(j_op)) return JWK_KEY_OP_NONE; op = json_string_value(j_op); /* Should not be possible for this to happen. */ if (op == NULL) return JWK_KEY_OP_NONE; // LCOV_EXCL_LINE if (!strcmp(op, "sign")) return JWK_KEY_OP_SIGN; else if (!strcmp(op, "verify")) return JWK_KEY_OP_VERIFY; else if (!strcmp(op, "encrypt")) return JWK_KEY_OP_ENCRYPT; else if (!strcmp(op, "decrypt")) return JWK_KEY_OP_DECRYPT; else if (!strcmp(op, "wrapKey")) return JWK_KEY_OP_WRAP; else if (!strcmp(op, "unwrapKey")) return JWK_KEY_OP_UNWRAP; else if (!strcmp(op, "deriveKey")) return JWK_KEY_OP_DERIVE_KEY; else if (!strcmp(op, "deriveBits")) return JWK_KEY_OP_DERIVE_BITS; /* Ignore all others as the spec says other values may be used. */ return JWK_KEY_OP_NONE; } static void jwk_process_values(json_t *jwk, jwk_item_t *item) { json_t *j_use, *j_ops_a, *j_kid, *j_alg; /* Start with the ALG (4.4). */ j_alg = json_object_get(jwk, "alg"); if (j_alg) { if (!json_is_string(j_alg)) { jwt_write_error(item, "Invalid alg type"); return; } item->alg = jwt_str_alg(json_string_value(j_alg)); } /* Check for use (4.2). */ j_use = json_object_get(jwk, "use"); if (j_use && json_is_string(j_use)) { const char *use = json_string_value(j_use); if (!strcmp(use, "sig")) item->use = JWK_PUB_KEY_USE_SIG; else if (!strcmp(use, "enc")) item->use = JWK_PUB_KEY_USE_ENC; } /* Check for key_ops (4.3). */ j_ops_a = json_object_get(jwk, "key_ops"); if (j_ops_a && json_is_array(j_ops_a)) { json_t *j_op; size_t i; json_array_foreach(j_ops_a, i, j_op) item->key_ops |= jwk_key_op_j(j_op);; } /* Key ID (4.5). */ j_kid = json_object_get(jwk, "kid"); if (j_kid && json_is_string(j_kid)) { const char *kid = json_string_value(j_kid); int len = strlen(kid); if (len) { item->kid = jwt_malloc(len + 1); if (item->kid == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error allocating memory for kid"); // LCOV_EXCL_STOP } else { // LCOV_EXCL_LINE strcpy(item->kid, kid); } } } } static int process_octet(json_t *jwk, jwk_item_t *item) { unsigned char *bin_k = NULL; const char *str_k; json_t *k; int len_k = 0; k = json_object_get(jwk, "k"); if (k == NULL || !json_is_string(k)) { jwt_write_error(item, "Invalid JWK: missing `k`"); return -1; } str_k = json_string_value(k); if (str_k == NULL || !strlen(str_k)) { jwt_write_error(item, "Invalid JWK: invalid `k`"); return -1; } bin_k = jwt_base64uri_decode(str_k, &len_k); if (bin_k == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Invalid JWK: failed to decode `k`"); return -1; // LCOV_EXCL_STOP } item->is_private_key = 1; item->provider = JWT_CRYPTO_OPS_ANY; item->oct.key = bin_k; item->oct.len = len_k; item->bits = len_k * 8; return 0; } static jwk_item_t *jwk_process_one(jwk_set_t *jwk_set, json_t *jwk) { const char *kty; json_t *val; jwk_item_t *item; item = jwt_malloc(sizeof(*item)); if (item == NULL) { // LCOV_EXCL_START jwt_write_error(jwk_set, "Error allocating memory for jwk_item_t"); return NULL; // LCOV_EXCL_STOP } memset(item, 0, sizeof(*item)); item->json = json_deep_copy(jwk); if (item->json == NULL) { // LCOV_EXCL_START jwt_freemem(jwk); jwt_write_error(jwk_set, "Error allocating memory for jwk_item_t"); return NULL; // LCOV_EXCL_STOP } val = json_object_get(item->json, "kty"); if (val == NULL || !json_is_string(val)) { jwt_write_error(item, "Invalid JWK: missing kty value"); return item; } kty = json_string_value(val); if (!strcmp(kty, "EC")) { item->kty = JWK_KEY_TYPE_EC; jwt_ops->process_ec(item->json, item); } else if (!strcmp(kty, "RSA")) { item->kty = JWK_KEY_TYPE_RSA; jwt_ops->process_rsa(item->json, item); } else if (!strcmp(kty, "OKP")) { item->kty = JWK_KEY_TYPE_OKP; jwt_ops->process_eddsa(item->json, item); } else if (!strcmp(kty, "oct")) { item->kty = JWK_KEY_TYPE_OCT; process_octet(item->json, item); } else { jwt_write_error(item, "Unknown or unsupported kty type '%s'", kty); return item; } jwk_process_values(item->json, item); return item; } const jwk_item_t *jwks_item_get(const jwk_set_t *jwk_set, size_t index) { jwk_item_t *item = NULL; size_t i = 0; list_for_each_entry(item, &jwk_set->head, node) { if (i == index) return item; i++; } return NULL; } int jwks_error_any(const jwk_set_t *jwk_set) { jwk_item_t *item = NULL; int count = jwk_set->error; list_for_each_entry(item, &jwk_set->head, node) { if (item->error) count++; } return count; } int jwks_item_is_private(const jwk_item_t *item) { return item->is_private_key ? 1 : 0; } int jwks_item_error(const jwk_item_t *item) { return item->error; } const char *jwks_item_error_msg(const jwk_item_t *item) { return item->error_msg; } const char *jwks_item_curve(const jwk_item_t *item) { return item->curve[0] ? item->curve : NULL; } const char *jwks_item_kid(const jwk_item_t *item) { return item->kid; } jwt_alg_t jwks_item_alg(const jwk_item_t *item) { return item->alg; } jwk_key_type_t jwks_item_kty(const jwk_item_t *item) { return item->kty; } jwk_pub_key_use_t jwks_item_use(const jwk_item_t *item) { return item->use; } jwk_key_op_t jwks_item_key_ops(const jwk_item_t *item) { return item->key_ops; } const char *jwks_item_pem(const jwk_item_t *item) { return item->pem; } int jwks_item_key_bits(const jwk_item_t *item) { return item->bits; } int jwks_item_key_oct(const jwk_item_t *item, const unsigned char **buf, size_t *len) { if (!item->oct.key || !item->oct.len) return 1; *buf = item->oct.key; *len = item->oct.len; return 0; } int jwks_error(const jwk_set_t *jwk_set) { return jwk_set->error ? 1 : 0; } const char *jwks_error_msg(const jwk_set_t *jwk_set) { return jwk_set->error_msg; } void jwks_error_clear(jwk_set_t *jwk_set) { jwk_set->error = 0; memset(jwk_set->error_msg, 0, sizeof(jwk_set->error_msg)); } static int jwks_item_add(jwk_set_t *jwk_set, jwk_item_t *item) { list_add_tail(&item->node, &jwk_set->head); return 0; } jwk_item_t *jwks_find_bykid(jwk_set_t *jwk_set, const char *kid) { jwk_item_t *item = NULL; list_for_each_entry(item, &jwk_set->head, node) { if (item->kid == NULL || strcmp(item->kid, kid)) continue; return item; } return NULL; } static void __item_free(jwk_item_t *todel) { if (todel->provider == JWT_CRYPTO_OPS_ANY) jwt_freemem(todel->oct.key); else jwt_ops->process_item_free(todel); /* A few non-crypto specific things. */ jwt_freemem(todel->kid); json_decrefp(&todel->json); list_del(&todel->node); /* Free the container and the item itself. */ jwt_freemem(todel); } int jwks_item_free(jwk_set_t *jwk_set, const size_t index) { jwk_item_t *item = NULL, *todel = NULL; size_t i = 0; if (jwk_set == NULL) return 0; list_for_each_entry(item, &jwk_set->head, node) { if (i == index) { todel = item; break; } i++; } if (todel == NULL) return 0; __item_free(todel); return 1; } size_t jwks_item_count(const jwk_set_t *jwk_set) { size_t count = 0; jwk_item_t *item = NULL; list_for_each_entry(item, &jwk_set->head, node) count++; return count; } int jwks_item_free_bad(jwk_set_t *jwk_set) { jwk_item_t *item, *pos; int count = 0; list_for_each_entry_safe(item, pos, &jwk_set->head, node) { if (!item->error) continue; __item_free(item); count++; } return count; } int jwks_item_free_all(jwk_set_t *jwk_set) { int i; if (jwk_set == NULL) return 0; for (i = 0; jwks_item_free(jwk_set, 0); i++) /* do nothing */; return i; } void jwks_free(jwk_set_t *jwk_set) { if (jwk_set == NULL) return; jwks_item_free_all(jwk_set); jwt_freemem(jwk_set); } static jwk_set_t *jwks_new(void) { jwk_set_t *jwk_set; jwk_set = jwt_malloc(sizeof *jwk_set); if (jwk_set == NULL) return NULL; // LCOV_EXCL_LINE memset(jwk_set, 0, sizeof(*jwk_set)); INIT_LIST_HEAD(&jwk_set->head); return jwk_set; } static jwk_set_t *jwks_process(jwk_set_t *jwk_set, json_t *j_all, json_error_t *error) { json_t *j_array = NULL, *j_item = NULL; jwk_item_t *jwk_item; size_t i; if (j_all == NULL) { jwt_write_error(jwk_set, "%s: %s", error->source, error->text); return jwk_set; } /* Check for "keys" as in a JWKS */ j_array = json_object_get(j_all, "keys"); if (j_array == NULL) { /* Assume a single JSON Object for one JWK */ jwk_item = jwk_process_one(jwk_set, j_all); jwks_item_add(jwk_set, jwk_item); } else { /* We have a list, so parse them all. */ json_array_foreach(j_array, i, j_item) { jwk_item = jwk_process_one(jwk_set, j_item); jwks_item_add(jwk_set, jwk_item); } } return jwk_set; } static jwk_set_t *__jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str, const size_t len, int empty_allowed) { json_auto_t *j_all = NULL; json_error_t error; if (jwk_json_str == NULL && !empty_allowed) return NULL; if (jwk_set == NULL) jwk_set = jwks_new(); if (jwk_set == NULL) return NULL; // LCOV_EXCL_LINE /* Just an empty set */ if (jwk_json_str == NULL) return jwk_set; /* Parse the JSON string. */ j_all = json_loadb(jwk_json_str, len, JSON_DECODE_ANY, &error); return jwks_process(jwk_set, j_all, &error); } jwk_set_t *jwks_load_strn(jwk_set_t *jwk_set, const char *jwk_json_str, const size_t len) { return __jwks_load_strn(jwk_set, jwk_json_str, len, 0); } jwk_set_t *jwks_load(jwk_set_t *jwk_set, const char *jwk_json_str) { int len; if (jwk_json_str == NULL) return NULL; len = strlen(jwk_json_str); return __jwks_load_strn(jwk_set, jwk_json_str, len, 0); } jwk_set_t *jwks_load_fromfile(jwk_set_t *jwk_set, const char *file_name) { json_auto_t *j_all = NULL; json_error_t error; if (file_name == NULL) return NULL; if (jwk_set == NULL) jwk_set = jwks_new(); if (jwk_set == NULL) return NULL; // LCOV_EXCL_LINE /* Parse the JSON string. */ j_all = json_load_file(file_name, JSON_DECODE_ANY, &error); return jwks_process(jwk_set, j_all, &error); } jwk_set_t *jwks_load_fromfp(jwk_set_t *jwk_set, FILE *input) { json_auto_t *j_all = NULL; json_error_t error; if (input == NULL) return NULL; if (jwk_set == NULL) jwk_set = jwks_new(); if (jwk_set == NULL) return NULL; // LCOV_EXCL_LINE /* Parse the JSON string. */ j_all = json_loadf(input, JSON_DECODE_ANY, &error); return jwks_process(jwk_set, j_all, &error); } jwk_set_t *jwks_create(const char *jwk_json_str) { int len = 0; if (jwk_json_str != NULL) len = strlen(jwk_json_str); return __jwks_load_strn(NULL, jwk_json_str, len, 1); } jwk_set_t *jwks_create_strn(const char *jwk_json_str, const size_t len) { return jwks_load_strn(NULL, jwk_json_str, len); } jwk_set_t *jwks_create_fromfile(const char *file_name) { return jwks_load_fromfile(NULL, file_name); } jwk_set_t *jwks_create_fromfp(FILE *input) { return jwks_load_fromfp(NULL, input); } libjwt-3.2.3/libjwt/jwt-builder.c000066400000000000000000000007131510461717300167070ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "jwt-private.h" #include "jwt-builder.i" libjwt-3.2.3/libjwt/jwt-checker.c000066400000000000000000000007131510461717300166650ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "jwt-private.h" #include "jwt-checker.i" libjwt-3.2.3/libjwt/jwt-common.c000066400000000000000000000227021510461717300165530ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* XXX This file is used to generate jwt-builder.i and jwt-checker.i */ #ifdef JWT_BUILDER #define jwt_common_t jwt_builder_t #define FUNC(__x) jwt_builder_##__x #define CLAIMS_DEF JWT_CLAIM_IAT #define __DISABLE 0 #endif #ifdef JWT_CHECKER #define jwt_common_t jwt_checker_t #define FUNC(__x) jwt_checker_##__x #define CLAIMS_DEF (JWT_CLAIM_EXP | JWT_CLAIM_NBF) #define __DISABLE -1 #endif #ifndef jwt_common_t #error Must have target defined #endif void FUNC(free)(jwt_common_t *__cmd) { if (__cmd == NULL) return; json_decref(__cmd->c.payload); json_decref(__cmd->c.headers); memset(__cmd, 0, sizeof(*__cmd)); jwt_freemem(__cmd); } jwt_common_t *FUNC(new)(void) { jwt_common_t *__cmd = jwt_malloc(sizeof(*__cmd)); if (__cmd == NULL) return NULL; // LCOV_EXCL_LINE memset(__cmd, 0, sizeof(*__cmd)); __cmd->c.payload = json_object(); __cmd->c.headers = json_object(); __cmd->c.claims = CLAIMS_DEF; if (!__cmd->c.payload || !__cmd->c.headers) jwt_freemem(__cmd); // LCOV_EXCL_LINE return __cmd; } static int __setkey_check(jwt_common_t *__cmd, const jwt_alg_t alg, const jwk_item_t *key) { if (__cmd == NULL) return 1; #ifdef JWT_BUILDER if (key && !key->is_private_key) { jwt_write_error(__cmd, "Signing requires a private key"); return 1; } #endif /* TODO: Check key_ops and use */ if (key == NULL) { if (alg == JWT_ALG_NONE) return 0; jwt_write_error(__cmd, "Cannot set alg without a key"); } else if (key->alg == JWT_ALG_NONE) { if (alg != JWT_ALG_NONE) return 0; jwt_write_error(__cmd, "Key provided, but could not find alg"); } else { if (alg == JWT_ALG_NONE) return 0; if (alg == key->alg) return 0; jwt_write_error(__cmd, "Alg mismatch"); } return 1; } int FUNC(setkey)(jwt_common_t *__cmd, const jwt_alg_t alg, const jwk_item_t *key) { if (__setkey_check(__cmd, alg, key)) return 1; __cmd->c.alg = alg; __cmd->c.key = key; return 0; } int FUNC(error)(const jwt_common_t *__cmd) { if (__cmd == NULL) return 1; return __cmd->error ? 1 : 0; } const char *FUNC(error_msg)(const jwt_common_t *__cmd) { if (__cmd == NULL) return NULL; return __cmd->error_msg; } void FUNC(error_clear)(jwt_common_t *__cmd) { if (__cmd == NULL) return; __cmd->error = 0; __cmd->error_msg[0] = '\0'; } #ifdef JWT_BUILDER int FUNC(enable_iat)(jwt_common_t *__cmd, int enable) { int orig; if (!__cmd) return -1; orig = __cmd->c.claims & JWT_CLAIM_IAT ? 1 : 0; if (enable) __cmd->c.claims |= JWT_CLAIM_IAT; else __cmd->c.claims &= ~JWT_CLAIM_IAT; return orig; } #endif int FUNC(setcb)(jwt_common_t *__cmd, jwt_callback_t cb, void *ctx) { if (__cmd == NULL) return 1; /* This just updates the CTX */ if (cb == NULL && __cmd->c.cb != NULL && ctx != NULL) { __cmd->c.cb_ctx = ctx; return 0; } if (cb == NULL && ctx != NULL) { jwt_write_error(__cmd, "Setting ctx without a cb won't work"); return 1; } __cmd->c.cb = cb; __cmd->c.cb_ctx = ctx; return 0; } void *FUNC(getctx)(jwt_common_t *__cmd) { if (__cmd == NULL) return NULL; return __cmd->c.cb_ctx; } typedef enum { __HEADER, __CLAIM, } _setget_type_t; typedef jwt_value_error_t (*__doer_t)(json_t *, jwt_value_t *); static jwt_value_error_t __run_it(jwt_common_t *__cmd, _setget_type_t type, jwt_value_t *value, __doer_t doer) { json_t *which = NULL; #ifdef JWT_BUILDER if (!__cmd || !value) { if (value) return value->error = JWT_VALUE_ERR_INVALID; return JWT_VALUE_ERR_INVALID; } #endif switch (type) { #ifdef JWT_BUILDER case __HEADER: which = __cmd->c.headers; break; #endif case __CLAIM: which = __cmd->c.payload; break; // LCOV_EXCL_START default: return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_STOP } return doer(which, value); } #ifdef JWT_BUILDER /* Claims */ jwt_value_error_t FUNC(claim_get)(jwt_common_t *__cmd, jwt_value_t *value) { return __run_it(__cmd, __CLAIM, value, __getter); } jwt_value_error_t FUNC(claim_set)(jwt_common_t *__cmd, jwt_value_t *value) { return __run_it(__cmd, __CLAIM, value, __setter); } jwt_value_error_t FUNC(claim_del)(jwt_common_t *__cmd, const char *claim) { if (!__cmd) return JWT_VALUE_ERR_INVALID; return __deleter(__cmd->c.payload, claim); } /* Headers */ jwt_value_error_t FUNC(header_get)(jwt_common_t *__cmd, jwt_value_t *value) { return __run_it(__cmd, __HEADER, value, __getter); } jwt_value_error_t FUNC(header_set)(jwt_common_t *__cmd, jwt_value_t *value) { return __run_it(__cmd, __HEADER, value, __setter); } jwt_value_error_t FUNC(header_del)(jwt_common_t *__cmd, const char *header) { if (!__cmd) return JWT_VALUE_ERR_INVALID; return __deleter(__cmd->c.headers, header); } #endif #ifdef JWT_CHECKER /* Just a few types of claims */ static const char *__get_name(jwt_claims_t type) { if (type == JWT_CLAIM_ISS) return "iss"; else if (type == JWT_CLAIM_AUD) return "aud"; else if (type == JWT_CLAIM_SUB) return "sub"; return NULL; } const char *FUNC(claim_get)(jwt_common_t *__cmd, jwt_claims_t type) { const char *name = NULL; jwt_value_t jval; if (!__cmd) return NULL; name = __get_name(type); if (name == NULL) return NULL; jwt_set_GET_STR(&jval, name); __run_it(__cmd, __CLAIM, &jval, __getter); /* Ignore errors, just return a string or NULL */ return jval.str_val; } int FUNC(claim_set)(jwt_common_t *__cmd, jwt_claims_t type, const char *value) { const char *name = NULL; jwt_value_t jval; if (!__cmd || !value) return 1; name = __get_name(type); if (name == NULL) return 1; __cmd->c.claims |= type; jwt_set_SET_STR(&jval, name, value); jval.replace = 1; return __run_it(__cmd, __CLAIM, &jval, __setter) ? 1 : 0; } int FUNC(claim_del)(jwt_common_t *__cmd, jwt_claims_t type) { const char *name = NULL; if (!__cmd) return 1; name = __get_name(type); if (name == NULL) return 1; __cmd->c.claims &= ~type; return __deleter(__cmd->c.payload, name); } #endif /* Time offsets */ #ifdef JWT_BUILDER int FUNC(time_offset)(jwt_common_t *__cmd, jwt_claims_t claim, time_t secs) #endif #ifdef JWT_CHECKER int FUNC(time_leeway)(jwt_common_t *__cmd, jwt_claims_t claim, time_t secs) #endif { if (!__cmd) return 1; switch (claim) { case JWT_CLAIM_EXP: __cmd->c.exp = secs; break; case JWT_CLAIM_NBF: __cmd->c.nbf = secs; break; default: return 1; } if (secs <= __DISABLE) __cmd->c.claims &= ~claim; else __cmd->c.claims |= claim; return 0; } #ifdef JWT_CHECKER int FUNC(verify)(jwt_common_t *__cmd, const char *token) { JWT_CONFIG_DECLARE(config); unsigned int payload_len; jwt_auto_t *jwt = NULL; if (__cmd == NULL) return 1; if (token == NULL || !strlen(token)) { jwt_write_error(__cmd, "Must pass a token"); return 1; } jwt = jwt_new(); if (jwt == NULL) { // LCOV_EXCL_START jwt_write_error(__cmd, "Could not allocate JWT object"); return 1; // LCOV_EXCL_STOP } /* First parsing pass, error will be set for us */ if (jwt_parse(jwt, token, &payload_len)) { jwt_copy_error(__cmd, jwt); return 1; }; config.key = __cmd->c.key; config.alg = __cmd->c.alg; config.ctx = __cmd->c.cb_ctx; /* Let the user handle this and update config */ if (__cmd->c.cb && __cmd->c.cb(jwt, &config)) { jwt_write_error(__cmd, "User callback returned error"); return 1; } /* Callback may have changed this */ if (__setkey_check(__cmd, config.alg, config.key)) return 1; jwt->key = config.key; jwt->checker = __cmd; /* Finish it up */ jwt = jwt_verify_complete(jwt, &config, token, payload_len); /* Copy any errors back */ jwt_copy_error(__cmd, jwt); return __cmd->error; } #endif #ifdef JWT_BUILDER char *FUNC(generate)(jwt_common_t *__cmd) { JWT_CONFIG_DECLARE(config); jwt_auto_t *jwt = NULL; char *out = NULL; jwt_value_t jval; time_t tm = time(NULL); if (__cmd == NULL) return NULL; jwt = jwt_malloc(sizeof(*jwt)); if (jwt == NULL) return NULL; // LCOV_EXCL_LINE memset(jwt, 0, sizeof(*jwt)); jwt->headers = json_deep_copy(__cmd->c.headers); jwt->claims = json_deep_copy(__cmd->c.payload); /* Our internal work first */ if (__cmd->c.claims & JWT_CLAIM_IAT) { jwt_set_SET_INT(&jval, "iat", (jwt_long_t)tm); jval.replace = 1; jwt_claim_set(jwt, &jval); } if (__cmd->c.claims & JWT_CLAIM_NBF) { jwt_set_SET_INT(&jval, "nbf", (jwt_long_t)(tm + __cmd->c.nbf)); jval.replace = 1; jwt_claim_set(jwt, &jval); } if (__cmd->c.claims & JWT_CLAIM_EXP) { jwt_set_SET_INT(&jval, "exp", (jwt_long_t)(tm + __cmd->c.exp)); jval.replace = 1; jwt_claim_set(jwt, &jval); } /* Alg and key checks */ config.alg = __cmd->c.alg; if (config.alg == JWT_ALG_NONE && __cmd->c.key) config.alg = __cmd->c.key->alg; config.key = __cmd->c.key; config.ctx = __cmd->c.cb_ctx; /* Let the callback do it's thing */ if (__cmd->c.cb && __cmd->c.cb(jwt, &config)) { jwt_write_error(__cmd, "User callback returned error"); return NULL; } /* Callback may have changed this */ if (__setkey_check(__cmd, config.alg, config.key)) { jwt_write_error(__cmd, "Algorithm and key returned by callback invalid"); return NULL; } jwt->alg = config.alg; jwt->key = config.key; if (jwt_head_setup(jwt)) return NULL; // LCOV_EXCL_LINE out = jwt_encode_str(jwt); jwt_copy_error(__cmd, jwt); return out; } #endif libjwt-3.2.3/libjwt/jwt-crypto-ops.c000066400000000000000000000044661510461717300174110ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include "jwt-private.h" /* Library init functionality */ static struct jwt_crypto_ops *jwt_ops_available[] = { #ifdef HAVE_OPENSSL &jwt_openssl_ops, #endif #ifdef HAVE_GNUTLS &jwt_gnutls_ops, #endif #ifdef HAVE_MBEDTLS &jwt_mbedtls_ops, #endif NULL, }; JWT_NO_EXPORT #if defined HAVE_OPENSSL struct jwt_crypto_ops *jwt_ops = &jwt_openssl_ops; #elif defined HAVE_GNUTLS struct jwt_crypto_ops *jwt_ops = &jwt_gnutls_ops; #elif defined HAVE_MBEDTLS struct jwt_crypto_ops *jwt_ops = &jwt_mbedtls_ops; #else #error No crypto ops providers are enabled #endif const char *jwt_get_crypto_ops(void) { if (jwt_ops == NULL) return "(unknown)"; // LCOV_EXCL_LINE return jwt_ops->name; } jwt_crypto_provider_t jwt_get_crypto_ops_t(void) { if (jwt_ops == NULL) return JWT_CRYPTO_OPS_NONE; // LCOV_EXCL_LINE return jwt_ops->provider; } int jwt_set_crypto_ops_t(jwt_crypto_provider_t opname) { int i; /* The user asked for something, let's give it a try */ for (i = 0; jwt_ops_available[i] != NULL; i++) { if (jwt_ops_available[i]->provider != opname) continue; jwt_ops = jwt_ops_available[i]; return 0; } return 1; } int jwt_set_crypto_ops(const char *opname) { int i; /* The user asked for something, let's give it a try */ for (i = 0; jwt_ops_available[i] != NULL; i++) { if (strcmp(jwt_ops_available[i]->name, opname)) continue; jwt_ops = jwt_ops_available[i]; return 0; } return 1; } int jwt_crypto_ops_supports_jwk(void) { return jwt_ops->jwk_implemented ? 1 : 0; } JWT_CONSTRUCTOR void jwt_init() { const char *opname = getenv("JWT_CRYPTO"); /* By default, we choose the top spot */ if (opname == NULL || opname[0] == '\0') { jwt_ops = jwt_ops_available[0]; return; } /* Attempt to set ops */ if (jwt_set_crypto_ops(opname)) { jwt_ops = jwt_ops_available[0]; fprintf(stderr, "LibJWT: No such crypto ops [%s], falling back to [%s]\n", opname, jwt_ops->name); } } libjwt-3.2.3/libjwt/jwt-encode.c000066400000000000000000000075171510461717300165270ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include "base64.h" #include "jwt-private.h" static int write_js(const json_t *js, char **buf) { *buf = json_dumps(js, JSON_SORT_KEYS | JSON_COMPACT); return *buf == NULL ? 1 : 0; } int jwt_head_setup(jwt_t *jwt) { jwt_value_t jval; if (jwt->alg != JWT_ALG_NONE) { /* Only set default 'typ' header if it has not been defined, * allowing for any value of it. This allows for signaling * of application specific extensions to JWT, such as PASSporT, * RFC 8225. */ jwt_set_SET_STR(&jval, "typ", "JWT"); if (jwt_header_set(jwt, &jval)) { if (jval.error != JWT_VALUE_ERR_EXIST) { // LCOV_EXCL_START jwt_write_error(jwt, "Error setting \"typ\" in header"); return 1; // LCOV_EXCL_STOP } } } jwt_set_SET_STR(&jval, "alg", jwt_alg_str(jwt->alg)); jval.replace = 1; if (jwt_header_set(jwt, &jval)) { // LCOV_EXCL_START jwt_write_error(jwt, "Error setting \"alg\" in header"); return 1; // LCOV_EXCL_STOP } return 0; } static int jwt_encode(jwt_t *jwt, char **out) { char_auto *head = NULL, *payload = NULL, *sig = NULL; char *buf = NULL; int ret, head_len, payload_len; unsigned int sig_len; if (out == NULL) { // LCOV_EXCL_START jwt_write_error(jwt, "No string passed to write out to"); return 1; // LCOV_EXCL_STOP } *out = NULL; /* First the header. */ ret = write_js(jwt->headers, &buf); if (ret) return 1; // LCOV_EXCL_LINE /* Encode it */ head_len = jwt_base64uri_encode(&head, buf, (int)strlen(buf)); jwt_freemem(buf); if (head_len <= 0) { // LCOV_EXCL_START jwt_write_error(jwt, "Error encoding header"); return 1; // LCOV_EXCL_STOP } /* Now the payload. */ ret = write_js(jwt->claims, &buf); if (ret) { // LCOV_EXCL_START jwt_write_error(jwt, "Error writing payload"); return 1; // LCOV_EXCL_STOP } payload_len = jwt_base64uri_encode(&payload, buf, (int)strlen(buf)); jwt_freemem(buf); if (payload_len <= 0) { // LCOV_EXCL_START jwt_write_error(jwt, "Error encoding payload"); return 1; // LCOV_EXCL_STOP } /* The part we need to sign, but add space for 2 dots and a nil */ buf = jwt_malloc(head_len + payload_len + 3); if (buf == NULL) { // LCOV_EXCL_START jwt_write_error(jwt, "Error allocating memory"); return 1; // LCOV_EXCL_STOP } strcpy(buf, head); strcat(buf, "."); strcat(buf, payload); if (jwt->alg == JWT_ALG_NONE) { /* Add the trailing dot, and send it back */ strcat(buf, "."); *out = buf; return 0; } /* At this point buf has "head.payload" */ /* Now the signature. */ ret = jwt_sign(jwt, &sig, &sig_len, buf, strlen(buf)); jwt_freemem(buf); if (ret) { // LCOV_EXCL_START jwt_write_error(jwt, "Error allocating memory"); return ret; // LCOV_EXCL_STOP } ret = jwt_base64uri_encode(&buf, sig, sig_len); /* At this point buf has b64 of sig and ret is size of it */ if (ret < 0) { // LCOV_EXCL_START jwt_write_error(jwt, "Error allocating memory"); return 1; // LCOV_EXCL_STOP } /* plus 2 dots and a nil */ ret = strlen(head) + strlen(payload) + strlen(buf) + 3; /* We're good, so let's get it all together */ *out = jwt_malloc(ret); // LCOV_EXCL_START if (*out == NULL) { jwt_write_error(jwt, "Error allocating memory"); ret = 1; } else { sprintf(*out, "%s.%s.%s", head, payload, buf); ret = 0; } // LCOV_EXCL_STOP jwt_freemem(buf); return ret; } char *jwt_encode_str(jwt_t *jwt) { char *str = NULL; if (jwt_encode(jwt, &str)) jwt_freemem(str); return str; } libjwt-3.2.3/libjwt/jwt-memory.c000066400000000000000000000021611510461717300165700ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include "jwt-private.h" static jwt_malloc_t pfn_malloc; static jwt_free_t pfn_free; void *jwt_malloc(size_t size) { if (pfn_malloc) return pfn_malloc(size); return malloc(size); } int jwt_set_alloc(jwt_malloc_t pmalloc, jwt_free_t pfree) { /* Set allocator functions for LibJWT. */ pfn_malloc = pmalloc; pfn_free = pfree; /* Set same allocator functions for Jansson. */ json_set_alloc_funcs(jwt_malloc, __jwt_freemem); return 0; } void jwt_get_alloc(jwt_malloc_t *pmalloc, jwt_free_t *pfree) { if (pmalloc) *pmalloc = pfn_malloc; if (pfree) *pfree = pfn_free; } /* Should call the macros instead */ void __jwt_freemem(void *ptr) { if (pfn_free) pfn_free(ptr); else free(ptr); } libjwt-3.2.3/libjwt/jwt-private.h000066400000000000000000000147621510461717300167510ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef JWT_PRIVATE_H #define JWT_PRIVATE_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "ll.h" #ifndef ARRAY_SIZE # ifdef __GNUC__ # define ARRAY_SIZE(__arr) (sizeof(__arr) / sizeof((__arr)[0]) + \ __builtin_types_compatible_p(typeof(__arr), typeof(&(__arr)[0])) * 0) # else # define ARRAY_SIZE(__arr) (sizeof(__arr) / sizeof((__arr)[0])) # endif #endif #define JWT_CONFIG_DECLARE(__name) \ jwt_config_t __name = { NULL, JWT_ALG_NONE, NULL} #define JWT_ERR_LEN 256 JWT_NO_EXPORT extern struct jwt_crypto_ops *jwt_ops; /* This can be used on anything with an error and error_msg field */ #define jwt_write_error(__obj, __fmt, __args...) \ ({ \ if (!strlen((__obj)->error_msg)) \ snprintf((__obj)->error_msg, \ sizeof((__obj)->error_msg), \ __fmt, ##__args); \ (__obj)->error = 1; \ }) #define jwt_copy_error(__dst, __src) \ ({ \ strcpy((__dst)->error_msg, (__src)->error_msg); \ (__dst)->error = (__src)->error; \ }) /******************************/ struct jwt_common { jwt_alg_t alg; const jwk_item_t *key; json_t *payload; json_t *headers; jwt_claims_t claims; jwt_callback_t cb; void *cb_ctx; /* For builder, this is offset into the future. * For checker, this is the leeway. * Both are in seconds. */ time_t exp; time_t nbf; }; struct jwt_builder { struct jwt_common c; int error; char error_msg[JWT_ERR_LEN]; }; struct jwt_checker { struct jwt_common c; int error; char error_msg[JWT_ERR_LEN]; }; /*****************************/ struct jwt { const jwk_item_t *key; json_t *claims; json_t *headers; jwt_alg_t alg; int error; char error_msg[JWT_ERR_LEN]; union { struct jwt_checker *checker; struct jwt_builder *builder; }; }; struct jwk_set { ll_t head; int error; char error_msg[JWT_ERR_LEN]; }; /** * This data structure is produced by importing a JWK or JWKS into a * @ref jwk_set_t object. Generally, you would not change any values here * and only use this to probe the internal parser and possibly to * decide whether a key applies to certain jwt_t for verification * or signing. * * If the jwk_item_t.pem field is not NULL, then it contains a nil terminated * string of the key. The underlying crypto algorithm may or may not support * this. It's provided as a convenience. */ struct jwk_item { ll_t node; char *pem; /**< If not NULL, contains PEM string of this key */ jwt_crypto_provider_t provider; /**< Crypto provider that owns this key */ union { void *provider_data; /**< Internal data used by the provider */ struct { void *key; /**< Used for HMAC key material */ size_t len; /**< Length of HMAC key material */ } oct; }; int is_private_key; /**< Whether this is a public or private key */ char curve[256]; /**< Curve name of an ``"EC"`` or ``"OKP"`` key */ size_t bits; /**< The number of bits in the key (may be 0) */ int error; /**< There was an error parsing this key (unusable) */ char error_msg[JWT_ERR_LEN];/**< Descriptive message for @ref jwk_item_t.error */ jwk_key_type_t kty; /**< @rfc{7517,4.1} The key type of this key */ jwk_pub_key_use_t use; /**< @rfc{7517,4.2} How this key can be used */ jwk_key_op_t key_ops; /**< @rfc{7517,4.3} Key operations supported */ jwt_alg_t alg; /**< @rfc{7517,4.4} JWA Algorithm supported */ char *kid; /**< @rfc{7517,4.5} Key ID */ json_t *json; /**< The json_t for this key */ }; /* Crypto operations */ struct jwt_crypto_ops { const char *name; jwt_crypto_provider_t provider; /* Signing/Verifying */ int (*sign_sha_hmac)(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len); /* Verifying hmac is basically signing the current token and cmparing * the signatures. */ int (*sign_sha_pem)(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len); int (*verify_sha_pem)(jwt_t *jwt, const char *head, unsigned int head_len, unsigned char *sig, int sig_len); /* Parsing a JWK to prepare it for use */ int jwk_implemented; int (*process_eddsa)(json_t *jwk, jwk_item_t *item); int (*process_rsa)(json_t *jwk, jwk_item_t *item); int (*process_ec)(json_t *jwk, jwk_item_t *item); void (*process_item_free)(jwk_item_t *item); }; #ifdef HAVE_OPENSSL JWT_NO_EXPORT extern struct jwt_crypto_ops jwt_openssl_ops; #endif #ifdef HAVE_GNUTLS JWT_NO_EXPORT extern struct jwt_crypto_ops jwt_gnutls_ops; #endif #ifdef HAVE_MBEDTLS JWT_NO_EXPORT extern struct jwt_crypto_ops jwt_mbedtls_ops; #endif /* Memory allocators. */ JWT_NO_EXPORT void *jwt_malloc(size_t size); JWT_NO_EXPORT void __jwt_freemem(void *ptr); JWT_NO_EXPORT jwt_t *jwt_new(void); #define jwt_freemem(__ptr) ({ \ if (__ptr) { \ __jwt_freemem(__ptr); \ __ptr = NULL; \ } \ }) static inline void jwt_freememp(char **mem) { jwt_freemem(*mem); } #define char_auto char __attribute__((cleanup(jwt_freememp))) JWT_NO_EXPORT void jwt_free(jwt_t *jwt); static inline void jwt_freep(jwt_t **jwt) { if (jwt) { jwt_free(*jwt); *jwt = NULL; } } #define jwt_auto_t jwt_t __attribute__((cleanup(jwt_freep))) /* Helper routines to handle base64url encoding without percent padding * as defined in RFC-4648. */ JWT_NO_EXPORT int jwt_base64uri_encode(char **_dst, const char *plain, int plain_len); JWT_NO_EXPORT void *jwt_base64uri_decode(const char *src, int *ret_len); JWT_NO_EXPORT jwt_t *jwt_verify_sig(jwt_t *jwt, const char *head, unsigned int head_len, const char *sig); JWT_NO_EXPORT int jwt_sign(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len); JWT_NO_EXPORT jwt_value_error_t __deleter(json_t *which, const char *field); JWT_NO_EXPORT jwt_value_error_t __setter(json_t *which, jwt_value_t *value); JWT_NO_EXPORT jwt_value_error_t __getter(json_t *which, jwt_value_t *value); JWT_NO_EXPORT int jwt_parse(jwt_t *jwt, const char *token, unsigned int *len); JWT_NO_EXPORT jwt_t *jwt_verify_complete(jwt_t *jwt, const jwt_config_t *config, const char *token, unsigned int payload_len); JWT_NO_EXPORT char *jwt_encode_str(jwt_t *jwt); JWT_NO_EXPORT int jwt_head_setup(jwt_t *jwt); #define __trace() fprintf(stderr, "%s:%d\n", __func__, __LINE__) #endif /* JWT_PRIVATE_H */ libjwt-3.2.3/libjwt/jwt-setget.c000066400000000000000000000165721510461717300165660ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include "jwt-private.h" static jwt_value_error_t jwt_get_str(json_t *which, jwt_value_t *jval) { json_t *val; if (!jval->name || !strlen(jval->name)) return jval->error = JWT_VALUE_ERR_INVALID; val = json_object_get(which, jval->name); if (val == NULL) return jval->error = JWT_VALUE_ERR_NOEXIST; else if (!json_is_string(val)) return jval->error = JWT_VALUE_ERR_TYPE; jval->str_val = json_string_value(val); if (jval->str_val == NULL) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE return jval->error; } static jwt_value_error_t jwt_get_int(json_t *which, jwt_value_t *jval) { json_t *val; if (!jval->name || !strlen(jval->name)) return jval->error = JWT_VALUE_ERR_INVALID; val = json_object_get(which, jval->name); if (val == NULL) return jval->error = JWT_VALUE_ERR_NOEXIST; else if (!json_is_integer(val)) return jval->error = JWT_VALUE_ERR_TYPE; jval->int_val = json_integer_value(val); return jval->error; } static jwt_value_error_t jwt_get_bool(json_t *which, jwt_value_t *jval) { json_t *val; if (!jval->name || !strlen(jval->name)) return jval->error = JWT_VALUE_ERR_INVALID; val = json_object_get(which, jval->name); if (val == NULL) return jval->error = JWT_VALUE_ERR_NOEXIST; else if (!json_is_boolean(val)) return jval->error = JWT_VALUE_ERR_TYPE; jval->bool_val = json_is_true(val) ? 1 : 0; return jval->error; } static jwt_value_error_t jwt_get_json(json_t *which, jwt_value_t *jval) { json_t *json_val = NULL; size_t flags = JSON_SORT_KEYS; if (jval->pretty) flags |= JSON_INDENT(4); else flags |= JSON_COMPACT; if (jval->name && strlen(jval->name)) json_val = json_object_get(which, jval->name); else json_val = which; if (json_val == NULL) return jval->error = JWT_VALUE_ERR_NOEXIST; jval->json_val = json_dumps(json_val, flags); if (jval->json_val == NULL) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE return jval->error; } static jwt_value_error_t jwt_obj_check(json_t *which, jwt_value_t *jval) { if (json_object_get(which, jval->name)) { if (jval->replace) json_object_del(which, jval->name); else return jval->error = JWT_VALUE_ERR_EXIST; } return JWT_VALUE_ERR_NONE; } static jwt_value_error_t jwt_set_str(json_t *which, jwt_value_t *jval) { if (!jval->name || !strlen(jval->name) || !jval->str_val) return jval->error = JWT_VALUE_ERR_INVALID; if (jwt_obj_check(which, jval)) return jval->error; if (json_object_set_new(which, jval->name, json_string(jval->str_val))) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE return jval->error; } static jwt_value_error_t jwt_set_int(json_t *which, jwt_value_t *jval) { if (!jval->name || !strlen(jval->name)) return jval->error = JWT_VALUE_ERR_INVALID; if (jwt_obj_check(which, jval)) return jval->error; if (json_object_set_new(which, jval->name, json_integer((json_int_t)jval->int_val))) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE return jval->error; } static jwt_value_error_t jwt_set_bool(json_t *which, jwt_value_t *jval) { if (!jval->name || !strlen(jval->name)) return jval->error = JWT_VALUE_ERR_INVALID; if (jwt_obj_check(which, jval)) return jval->error; if (json_object_set_new(which, jval->name, json_boolean(jval->bool_val))) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE return jval->error; } static jwt_value_error_t jwt_set_json(json_t *which, jwt_value_t *jval) { size_t flags = JSON_REJECT_DUPLICATES; json_t *json_val = NULL; int ret; json_val = json_loads(jval->json_val, flags, NULL); /* Because we didn't set JSON_DECODE_ANY, we are guaranteed an array or * object here. */ if (!json_val) return jval->error = JWT_VALUE_ERR_INVALID; if (jval->name == NULL || !strlen(jval->name)) { /* Update the whole thing */ if (jval->replace) ret = json_object_update(which, json_val); else ret = json_object_update_missing(which, json_val); /* Done with this. */ json_decrefp(&json_val); if (ret) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE } else { /* Add object at name */ if (!jwt_obj_check(which, jval)) { if (json_object_set_new(which, jval->name, json_val)) jval->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE } /* If things failed, it means we're responsible for this ref */ if (jval->error != JWT_VALUE_ERR_NONE) json_decrefp(&json_val); } return jval->error; } jwt_value_error_t __deleter(json_t *which, const char *field) { if (field == NULL || !strlen(field)) json_object_clear(which); else json_object_del(which, field); return JWT_VALUE_ERR_NONE; } jwt_value_error_t __setter(json_t *which, jwt_value_t *value) { if (!which) return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE value->error = JWT_VALUE_ERR_NONE; switch (value->type) { case JWT_VALUE_INT: return jwt_set_int(which, value); case JWT_VALUE_STR: return jwt_set_str(which, value); case JWT_VALUE_BOOL: return jwt_set_bool(which, value); case JWT_VALUE_JSON: return jwt_set_json(which, value); // LCOV_EXCL_START default: return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_STOP } } jwt_value_error_t __getter(json_t *which, jwt_value_t *value) { if (!which) return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_LINE value->error = JWT_VALUE_ERR_NONE; switch (value->type) { case JWT_VALUE_INT: return jwt_get_int(which, value); case JWT_VALUE_STR: return jwt_get_str(which, value); case JWT_VALUE_BOOL: return jwt_get_bool(which, value); case JWT_VALUE_JSON: return jwt_get_json(which, value); // LCOV_EXCL_START default: return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_STOP } } typedef enum { __HEADER, __CLAIM, } _setget_type_t; typedef jwt_value_error_t (*__doer_t)(json_t *, jwt_value_t *); static jwt_value_error_t __run_it(jwt_t *jwt, _setget_type_t type, jwt_value_t *value, __doer_t doer) { json_t *which = NULL; if (!jwt || !value) { if (value) return value->error = JWT_VALUE_ERR_INVALID; return JWT_VALUE_ERR_INVALID; } switch (type) { case __HEADER: which = jwt->headers; break; case __CLAIM: which = jwt->claims; break; // LCOV_EXCL_START default: return value->error = JWT_VALUE_ERR_INVALID; // LCOV_EXCL_STOP } return doer(which, value); } /* Headers */ jwt_value_error_t jwt_header_get(jwt_t *jwt, jwt_value_t *value) { return __run_it(jwt, __HEADER, value, __getter); } jwt_value_error_t jwt_header_set(jwt_t *jwt, jwt_value_t *value) { return __run_it(jwt, __HEADER, value, __setter); } jwt_value_error_t jwt_header_del(jwt_t *jwt, const char *header) { if (!jwt) return JWT_VALUE_ERR_INVALID; return __deleter(jwt->headers, header); } /* Claims */ jwt_value_error_t jwt_claim_get(jwt_t *jwt, jwt_value_t *value) { return __run_it(jwt, __CLAIM, value, __getter); } jwt_value_error_t jwt_claim_set(jwt_t *jwt, jwt_value_t *value) { return __run_it(jwt, __CLAIM, value, __setter); } jwt_value_error_t jwt_claim_del(jwt_t *jwt, const char *claim) { if (!jwt) return JWT_VALUE_ERR_INVALID; return __deleter(jwt->claims, claim); } libjwt-3.2.3/libjwt/jwt-verify.c000066400000000000000000000142751510461717300165750ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include "jwt-private.h" static json_t *jwt_base64uri_decode_to_json(char *src) { json_t *js; char *buf; int len; buf = jwt_base64uri_decode(src, &len); if (buf == NULL) return NULL; // LCOV_EXCL_LINE buf[len] = '\0'; js = json_loads(buf, 0, NULL); jwt_freemem(buf); return js; } static int jwt_parse_payload(jwt_t *jwt, char *payload) { if (jwt->claims) json_decrefp(&(jwt->claims)); jwt->claims = jwt_base64uri_decode_to_json(payload); if (!jwt->claims) { jwt_write_error(jwt, "Error parsing payload"); return 1; } return 0; } static int jwt_parse_head(jwt_t *jwt, char *head) { json_t *jalg; if (jwt->headers) json_decrefp(&(jwt->headers)); jwt->headers = jwt_base64uri_decode_to_json(head); if (!jwt->headers) { jwt_write_error(jwt, "Error parsing header"); return 1; } jwt->alg = JWT_ALG_NONE; jalg = json_object_get(jwt->headers, "alg"); if (jalg && json_is_string(jalg)) { const char *alg = json_string_value(jalg); jwt->alg = jwt_str_alg(alg); if (jwt->alg >= JWT_ALG_INVAL) { jwt_write_error(jwt, "Invalid ALG: [%s]", alg); return 1; } return 0; } return 1; } int jwt_parse(jwt_t *jwt, const char *token, unsigned int *len) { char_auto *head = NULL; char *payload, *sig; int head_len = strlen(token) + 1; head = jwt_malloc(head_len); if (!head) { // LCOV_EXCL_START jwt_write_error(jwt, "Error allocating memory"); return 1; // LCOV_EXCL_STOP } /* head_len includes nil */ memcpy(head, token, head_len); /* Find the components. */ for (payload = head; payload[0] != '.'; payload++) { if (payload[0] == '\0') { jwt_write_error(jwt, "No dot found looking for end of header"); return 1; } } payload[0] = '\0'; payload++; for (sig = payload; sig[0] != '.'; sig++) { if (sig[0] == '\0') { jwt_write_error(jwt, "No dot found looking for end of payload"); return 1; } } sig[0] = '\0'; /* Now that we have everything split up, let's check out the * header. */ if (jwt_parse_head(jwt, head)) return 1; if (jwt_parse_payload(jwt, payload)) return 1; *len = sig - head; return 0; } static int __check_str_claim(jwt_t *jwt, jwt_claims_t claim, char *claim_str) { jwt_checker_t *checker = jwt->checker; jwt_value_t jval; const char *str; jwt_value_error_t err; if (!(checker->c.claims & claim)) return 0; str = jwt_checker_claim_get(checker, claim); if (str == NULL) return 1; // LCOV_EXCL_LINE // Check above makes this nearly impossible to hit jwt_set_GET_STR(&jval, claim_str); err = jwt_claim_get(jwt, &jval); if (err != JWT_VALUE_ERR_NONE || strcmp(str, jval.str_val)) return 1; return 0; } static jwt_claims_t __verify_claims(jwt_t *jwt) { jwt_checker_t *checker = jwt->checker; jwt_value_t jval; time_t now = time(NULL); jwt_value_error_t err; jwt_claims_t failed = 0; /* expiration in past */ if (checker->c.claims & JWT_CLAIM_EXP) { jwt_set_GET_INT(&jval, "exp"); err = jwt_claim_get(jwt, &jval); if (err == JWT_VALUE_ERR_NONE) { if (jval.int_val <= (now - checker->c.exp)) { failed |= JWT_CLAIM_EXP; } } else if (err != JWT_VALUE_ERR_NOEXIST) failed |= JWT_CLAIM_EXP; // LCOV_EXCL_LINE } /* not valid before now */ if (checker->c.claims & JWT_CLAIM_NBF) { jwt_set_GET_INT(&jval, "nbf"); err = jwt_claim_get(jwt, &jval); if (err == JWT_VALUE_ERR_NONE) { if (jval.int_val > (now + checker->c.nbf)) { failed |= JWT_CLAIM_NBF; } } else if (err != JWT_VALUE_ERR_NOEXIST) failed |= JWT_CLAIM_NBF; // LCOV_EXCL_LINE } /* issuer doesn't match */ if (__check_str_claim(jwt, JWT_CLAIM_ISS, "iss")) failed |= JWT_CLAIM_ISS; /* subject doesn't match */ if (__check_str_claim(jwt, JWT_CLAIM_SUB, "sub")) failed |= JWT_CLAIM_SUB; /* audience doesn't match */ if (__check_str_claim(jwt, JWT_CLAIM_AUD, "aud")) failed |= JWT_CLAIM_AUD; return failed; } /* This is after parsing and possibly a user callback. */ static int __verify_config_post(jwt_t *jwt, const jwt_config_t *config, unsigned int sig_len) { /* Yes, we do this before checking a signature. */ if (__verify_claims(jwt)) { /* TODO Pass back the ORd list of claims failed. */ jwt_write_error(jwt, "Failed one or more claims"); return 1; } if (!sig_len) { if (config->key || config->alg != JWT_ALG_NONE || jwt->alg != JWT_ALG_NONE) { jwt_write_error(jwt, "Expected a signature, but JWT has none"); return 1; } return 0; } /* Signature is known to be present from this point */ if (jwt->alg == JWT_ALG_NONE) { jwt_write_error(jwt, "JWT has signature block, but no alg set"); return 1; } if (config->key == NULL) { jwt_write_error(jwt, "JWT has signature, but no key was given"); return 1; } /* Key is known to be given at this point */ if (config->alg == JWT_ALG_NONE) { if (config->key->alg != jwt->alg) { jwt_write_error(jwt, "Key alg does not match JWT"); return 1; } } else if (config->key->alg == JWT_ALG_NONE) { if (config->alg != jwt->alg) { jwt_write_error(jwt, "Config alg does not match JWT"); return 1; } } else if (config->alg != config->key->alg) { /* It's not really possible to get here due to checks in setkey */ // LCOV_EXCL_START jwt_write_error(jwt, "Config and key alg does not match"); return 1; // LCOV_EXCL_STOP } return 0; } jwt_t *jwt_verify_complete(jwt_t *jwt, const jwt_config_t *config, const char *token, unsigned int payload_len) { const char *sig; unsigned int sig_len; sig = token + (payload_len + 1); sig_len = strlen(sig); /* Check for conflicts in user request and JWT */ if (__verify_config_post(jwt, config, sig_len)) return jwt; /* After all the checks, if we don't have a sig, we can move on. */ if (!sig_len) return jwt; /* At this point, config is never NULL */ jwt->key = config->key; return jwt_verify_sig(jwt, token, payload_len, sig); } libjwt-3.2.3/libjwt/jwt.c000066400000000000000000000253451510461717300152730ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #ifdef USE_KCAPI_MD #include #define KCAPI_MAX_MD_SIZE 64 #endif /* https://github.com/zhicheng/base64 */ #include "base64.h" #include "jwt-private.h" const char *jwt_alg_str(jwt_alg_t alg) { switch (alg) { case JWT_ALG_NONE: return "none"; case JWT_ALG_HS256: return "HS256"; case JWT_ALG_HS384: return "HS384"; case JWT_ALG_HS512: return "HS512"; case JWT_ALG_RS256: return "RS256"; case JWT_ALG_RS384: return "RS384"; case JWT_ALG_RS512: return "RS512"; case JWT_ALG_ES256: return "ES256"; case JWT_ALG_ES256K: return "ES256K"; case JWT_ALG_ES384: return "ES384"; case JWT_ALG_ES512: return "ES512"; case JWT_ALG_PS256: return "PS256"; case JWT_ALG_PS384: return "PS384"; case JWT_ALG_PS512: return "PS512"; case JWT_ALG_EDDSA: return "EdDSA"; default: return NULL; } } jwt_alg_t jwt_str_alg(const char *alg) { if (alg == NULL) return JWT_ALG_INVAL; if (!strcmp(alg, "none")) return JWT_ALG_NONE; else if (!strcmp(alg, "HS256")) return JWT_ALG_HS256; else if (!strcmp(alg, "HS384")) return JWT_ALG_HS384; else if (!strcmp(alg, "HS512")) return JWT_ALG_HS512; else if (!strcmp(alg, "RS256")) return JWT_ALG_RS256; else if (!strcmp(alg, "RS384")) return JWT_ALG_RS384; else if (!strcmp(alg, "RS512")) return JWT_ALG_RS512; else if (!strcmp(alg, "ES256")) return JWT_ALG_ES256; else if (!strcmp(alg, "ES256K")) return JWT_ALG_ES256K; else if (!strcmp(alg, "ES384")) return JWT_ALG_ES384; else if (!strcmp(alg, "ES512")) return JWT_ALG_ES512; else if (!strcmp(alg, "PS256")) return JWT_ALG_PS256; else if (!strcmp(alg, "PS384")) return JWT_ALG_PS384; else if (!strcmp(alg, "PS512")) return JWT_ALG_PS512; else if (!strcmp(alg, "EdDSA")) return JWT_ALG_EDDSA; return JWT_ALG_INVAL; } JWT_NO_EXPORT jwt_t *jwt_new(void) { jwt_t *jwt = jwt_malloc(sizeof(*jwt)); if (!jwt) return NULL; // LCOV_EXCL_LINE memset(jwt, 0, sizeof(*jwt)); jwt->claims = json_object(); jwt->headers = json_object(); if (!jwt->claims || !jwt->headers) jwt_freep(&jwt); // LCOV_EXCL_LINE return jwt; } jwt_alg_t jwt_get_alg(const jwt_t *jwt) { if (jwt == NULL) return JWT_ALG_INVAL; return jwt->alg; } void jwt_free(jwt_t *jwt) { if (!jwt) return; json_decref(jwt->claims); json_decref(jwt->headers); memset(jwt, 0, sizeof(*jwt)); jwt_freemem(jwt); } void *jwt_base64uri_decode(const char *src, int *ret_len) { void *buf; char *new; int len, i, z; if (src == NULL || ret_len == NULL) return NULL; // LCOV_EXCL_LINE // Should really be an abort /* Decode based on RFC-4648 URI safe encoding. */ len = (int)strlen(src); /* Validate length */ z = (len % 4); switch (z) { case 0: /* No added padding */ break; case 2: /* 2 added = for padding */ break; case 3: /* 1 added = for padding */ z = 1; break; default: /* Something bad */ return NULL; } new = jwt_malloc(len + z + 1); if (!new) return NULL; // LCOV_EXCL_LINE for (i = 0; i < len; i++) { switch (src[i]) { case '-': new[i] = '+'; break; case '_': new[i] = '/'; break; default: new[i] = src[i]; } } for (; z > 0; z--) new[i++] = '='; new[i] = '\0'; len = i; /* Now we have a standard base64 encoded string. */ buf = jwt_malloc(BASE64_DECODE_OUT_SIZE(len) + 1); if (buf == NULL) { // LCOV_EXCL_START jwt_freemem(new); return NULL; // LCOV_EXCL_STOP } *ret_len = base64_decode(new, len, buf); jwt_freemem(new); if (*ret_len <= 0) jwt_freemem(buf); return buf; } int jwt_base64uri_encode(char **_dst, const char *plain, int plain_len) { int len, i; char *dst; len = BASE64_ENCODE_OUT_SIZE(plain_len); dst = jwt_malloc(len + 1); if (dst == NULL) return -1; // LCOV_EXCL_LINE *_dst = dst; /* First, a normal base64 encoding */ len = base64_encode((const unsigned char *)plain, plain_len, dst); /* Now for the URI encoding */ for (i = 0; i < len; i++) { switch (dst[i]) { case '+': dst[i] = '-'; break; case '/': dst[i] = '_'; break; case '=': dst[i] = '\0'; break; } } /* Just in case there's no padding. */ dst[i] = '\0'; return i; } static int __check_hmac(jwt_t *jwt) { int key_bits = jwt->key->bits; switch (jwt->alg) { case JWT_ALG_HS256: if (key_bits >= 256) return 0; jwt_write_error(jwt, "Key too short for HS256: %d bits", key_bits); break; case JWT_ALG_HS384: if (key_bits >= 384) return 0; jwt_write_error(jwt, "Key too short for HS384: %d bits", key_bits); break; case JWT_ALG_HS512: if (key_bits >= 512) return 0; jwt_write_error(jwt, "Key too short for HS512: %d bits", key_bits); break; // LCOV_EXCL_START default: return 1; // LCOV_EXCL_STOP } return 1; } static int __check_key_bits(jwt_t *jwt) { int key_bits = jwt->key->bits; switch (jwt->alg) { case JWT_ALG_RS256: case JWT_ALG_RS384: case JWT_ALG_RS512: case JWT_ALG_PS256: case JWT_ALG_PS384: case JWT_ALG_PS512: if (key_bits >= 2048) return 0; jwt_write_error(jwt, "Key too short for RSA algs: %d bits", key_bits); break; case JWT_ALG_EDDSA: if (key_bits == 256 || key_bits == 456) return 0; jwt_write_error(jwt, "Key needs to be 256 or 456 bits: %d bits", key_bits); break; case JWT_ALG_ES256K: case JWT_ALG_ES256: if (key_bits == 256) return 0; jwt_write_error(jwt, "Key needs to be 256 bits: %d bits", key_bits); break; case JWT_ALG_ES384: if (key_bits == 384) return 0; jwt_write_error(jwt, "Key needs to be 384 bits: %d bits", key_bits); break; case JWT_ALG_ES512: if (key_bits == 521) return 0; jwt_write_error(jwt, "Key needs to be 521 bits: %d bits", key_bits); break; // LCOV_EXCL_START default: break; // LCOV_EXCL_STOP } return 1; // LCOV_EXCL_LINE } static int sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { #ifdef USE_KCAPI_MD static int skip_kcapi = 0; size_t key_len; void *key; int ret; /* If kcapi fails once, we don't try again. */ if (skip_kcapi) goto fallback_ops; // LCOV_EXCL_LINE key = jwt->key->oct.key; key_len = jwt->key->oct.len; *out = jwt_malloc(KCAPI_MAX_MD_SIZE); if (*out == NULL) return 1; // LCOV_EXCL_LINE switch (jwt->alg) { /* HMAC */ case JWT_ALG_HS256: ret = kcapi_md_hmac_sha256(key, key_len, (uint8_t *)str, str_len, (uint8_t *)*out, KCAPI_MAX_MD_SIZE); break; case JWT_ALG_HS384: ret = kcapi_md_hmac_sha384(key, key_len, (uint8_t *)str, str_len, (uint8_t *)*out, KCAPI_MAX_MD_SIZE); break; case JWT_ALG_HS512: ret = kcapi_md_hmac_sha512(key, key_len, (uint8_t *)str, str_len, (uint8_t *)*out, KCAPI_MAX_MD_SIZE); break; // LCOV_EXCL_START default: /* This isn't a failure in kcapi, so just error out */ jwt_freemem(out); return 1; // LCOV_EXCL_STOP } if (ret > 0) { *len = ret; return 0; } /* Fallthrough to normal ops */ // LCOV_EXCL_START jwt_freemem(*out); skip_kcapi = 1; // LCOV_EXCL_STOP fallback_ops: #endif return jwt_ops->sign_sha_hmac(jwt, out, len, str, str_len); } int jwt_sign(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { switch (jwt->alg) { /* HMAC */ case JWT_ALG_HS256: case JWT_ALG_HS384: case JWT_ALG_HS512: if (__check_hmac(jwt)) return 1; if (sign_sha_hmac(jwt, out, len, str, str_len)) { /* There's not really a way to induce failure here, * and there's not really much of a chance this can fail * other than an internal fatal error in the crypto * library. */ // LCOV_EXCL_START jwt_write_error(jwt, "Token failed signing"); return 1; // LCOV_EXCL_STOP } else { return 0; } /* RSA */ case JWT_ALG_RS256: case JWT_ALG_RS384: case JWT_ALG_RS512: /* RSA-PSS */ case JWT_ALG_PS256: case JWT_ALG_PS384: case JWT_ALG_PS512: /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: case JWT_ALG_ES384: case JWT_ALG_ES512: /* EdDSA */ case JWT_ALG_EDDSA: if (__check_key_bits(jwt)) return 1; if (jwt_ops->sign_sha_pem(jwt, out, len, str, str_len)) { jwt_write_error(jwt, "Token failed signing"); return 1; } else { return 0; } /* You wut, mate? */ // LCOV_EXCL_START default: jwt_write_error(jwt, "Unknown algorigthm"); return 1; // LCOV_EXCL_STOP } } /* A time-safe strcmp function */ static int _crypto_strcmp(const char *str1, const char *str2) { /* Get the LONGEST length */ int len1 = strlen(str1); int len2 = strlen(str2); int len_max = len1 >= len2 ? len1 : len2; int i, ret = 0; /* Iterate the entire longest string no matter what. Only testing * the shortest string would still allow attacks for * "a" == "aKJSDHkjashaaHJASJ", adding a character each time one * is found. */ for (i = 0; i < len_max; i++) { char c1, c2; c1 = (i < len1) ? str1[i] : 0; c2 = (i < len2) ? str2[i] : 0; ret |= c1 ^ c2; } /* Don't forget to check length */ ret |= len1 ^ len2; return ret; } static int _verify_sha_hmac(jwt_t *jwt, const char *head, unsigned int head_len, const char *sig) { char_auto *res = NULL; char_auto *buf = NULL; unsigned int res_len; int ret; ret = jwt_sign(jwt, &res, &res_len, head, head_len); if (ret) return 1; // LCOV_EXCL_LINE ret = jwt_base64uri_encode(&buf, res, res_len); if (ret <= 0) return 1; // LCOV_EXCL_LINE return _crypto_strcmp(buf, sig) ? 1 : 0; } jwt_t *jwt_verify_sig(jwt_t *jwt, const char *head, unsigned int head_len, const char *sig_b64) { int sig_len; char_auto *sig = NULL; switch (jwt->alg) { /* HMAC */ case JWT_ALG_HS256: case JWT_ALG_HS384: case JWT_ALG_HS512: if (_verify_sha_hmac(jwt, head, head_len, sig_b64)) jwt_write_error(jwt, "Token failed verification"); break; /* RSA */ case JWT_ALG_RS256: case JWT_ALG_RS384: case JWT_ALG_RS512: /* RSA-PSS */ case JWT_ALG_PS256: case JWT_ALG_PS384: case JWT_ALG_PS512: /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: case JWT_ALG_ES384: case JWT_ALG_ES512: /* EdDSA */ case JWT_ALG_EDDSA: if (__check_key_bits(jwt)) break; sig = jwt_base64uri_decode(sig_b64, &sig_len); if (sig == NULL) { jwt_write_error(jwt, "Error decoding signature"); break; } if (jwt_ops->verify_sha_pem(jwt, head, head_len, (unsigned char *)sig, sig_len)) jwt_write_error(jwt, "Token failed verification"); break; /* You wut, mate? */ // LCOV_EXCL_START default: jwt_write_error(jwt, "Unknown algorigthm"); } // LCOV_EXCL_STOP return jwt; } libjwt-3.2.3/libjwt/libjwt.pc.in000066400000000000000000000005631510461717300165420ustar00rootroot00000000000000prefix=@CMAKE_INSTALL_PREFIX@ libdir=${prefix}/lib includedir=${prefix}/include Name: @CMAKE_PROJECT_NAME@ Description: @CMAKE_PROJECT_DESCRIPTION@ Version: @CMAKE_PROJECT_VERSION@ URL: @CMAKE_PROJECT_HOMEPAGE_URL@ Requires: @JANSSON_MODULE_NAME@ @OPENSSL_MODULE_NAME@ @GNUTLS_MODULE_NAME@ Cflags: -I${includedir} Libs: -L${libdir} -ljwt Libs.private: @LIBJWT_LDFLAGS@ libjwt-3.2.3/libjwt/ll.h000066400000000000000000000260571510461717300151040ustar00rootroot00000000000000#ifndef LL_H__ #define LL_H__ /* * Copyright 2022 Embedded Artistry LLC * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #include #include //size_t, NULL /** @defgroup linkedlist-C C Linked List Interface * A linked list library for C modules * * @ingroup FrameworkUtils * @{ */ /** * Define offsetof if we don't have it already */ #ifndef offsetof #ifdef __compiler_offsetof #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) #else #define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE*)0)->MEMBER) #endif #endif // offsetof /** * Define container_of if we don't have it already */ #ifndef container_of #ifdef __GNUC__ #ifndef __clang__ // Isolate the GNU-specific expression #define container_of(ptr, type, member) \ ({ \ const __typeof__(((type*)0)->member)* __mptr = (ptr); \ (type*)((uintptr_t)__mptr - offsetof(type, member)); \ }) #else // we are clang - avoid GNU expression #define container_of(ptr, type, member) ((type*)((uintptr_t)(ptr)-offsetof(type, member))) #endif // GNU and not clang #else #define container_of(ptr, type, member) ((type*)((uintptr_t)(ptr)-offsetof(type, member))) #endif // not GNU #endif // container_of #ifdef __cplusplus extern "C" { #endif //__cplusplus /** Linked list struct * * This is a doubly linked list structure. * The ll_t structure should be embedded in a container structure that you want to list. * * Example: * * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode */ typedef struct ll_head { /// Pointer to the next element in the list. struct ll_head* next; /// Pointer to the previous element in the list. struct ll_head* prev; } ll_t; /// @name Get Containers /// @{ /** Get the container for a list entry * * @param[in] ptr The pointer to the target ll_t node. * @param[in] type The struct type which contains the ll_t node. For this example struct, * type would refer to alloc_node_t: * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode * * @param[in] member The member which corresponds to the member name of the ll_t entry. For this * example struct, member would refer to `node`. * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode * * @returns a pointer to the struct containing the linked list node at `ptr`, cast to type `type`. */ #define list_entry(ptr, type, member) container_of(ptr, type, member) /** Get the container for the first item in the list * * @param[in] head The pointer to the head of the list. * @param[in] type The struct type which contains the ll_t node. For this example struct, * type would refer to alloc_node_t: * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode * @param[in] member The member which corresponds to the member name of the ll_t entry. For this * example struct, member would refer to `node`. * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode * * @returns a pointer to the struct containing the linked list node at `ptr`, cast to type `type`. */ #define list_first_entry(head, type, member) list_entry((head)->next, type, member) /// @} // Get containers /// @name Foreach Operations /// @{ /** Declare a foreach loop which iterates over the list * * list_for_each() will run as long as the current object's next pointer is not equal to the * head of the list. It's possible for a malformed list to loop forever. * * @param[in] pos The variable which will hold the current iteration's position value. * This variable must be a pointer and should be pre-declared before instantiating the loop. * @code * ll_t *b; * list_for_each(b, &free_list) * { * ... * } * @endcode * @param[in] head The head of the linked list. Input should be a pointer. */ #define list_for_each(pos, head) for(pos = (head)->next; pos != (head); pos = pos->next) /** Declare a foreach loop which iterates over the list, copy current node pointer. * * list_for_each_safe() will run as long as the current object's next pointer is not equal to the * head of the list. It's possible for a malformed list to loop forever. * * The list_for_each_safe() variant makes a copy of the current node pointer, enabling the loop * to get to the next pointer if there is a deletion. * * @param[in] pos The variable which will hold the current iteration's position value. * This variable must be a pointer should be pre-declared before instantiating the loop. * @code * ll_t *b, *t; * list_for_each_safe(b, t, &free_list) * { * ... * } * @endcode * @param[in] n The variable which will hold the current iteration's position value **copy**. * This variable must be a pointer and should be pre-declared before instantiating the loop. * @code * alloc_node_t *b, *t; * list_for_each_safe(b, t, &free_list) * { * ... * } * @endcode * @param[in] head The head of the linked list. Input should be a pointer. */ #define list_for_each_safe(pos, n, head) \ for(pos = (head)->next, n = pos->next; pos != (head); pos = n, n = pos->next) /** Declare a for loop which operates on each node in the list using the container value. * * @param[in] pos The variable which will hold the current iteration's position value. * This variable must be a pointer and should be pre-declared before instantiating the loop. * The `pos` variable must be the container type. * @code * alloc_node_t *b, *t; * list_for_each_entry(b, &free_list, node) * { * ... * } * @endcode * * @param[in] head The head of the linked list. Input should be a pointer. * * @param[in] member The member which corresponds to the member name of the ll_t entry. For this * example struct, member would refer to `node`. * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode */ #define list_for_each_entry(pos, head, member) \ for(pos = list_entry((head)->next, __typeof__(*pos), member); &pos->member != (head); \ pos = list_entry(pos->member.next, __typeof__(*pos), member)) /** Declare a for loop which operates on each node in the list using a copy of the container value. * * @param[in] pos The variable which will hold the current iteration's position value. * This variable must be a pointer and should be pre-declared before instantiating the loop. * The `pos` variable must be the container type. * @code * alloc_node_t *b, *t; * list_for_each_entry(b, &free_list, node) * { * ... * } * @endcode * @param[in] n The variable which will hold the current iteration's position value **copy**. * This variable must be a pointer and should be pre-declared before instantiating the loop. * The `n` variable must be the container type. * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * * alloc_node_t *b, *t; * list_for_each_entrysafe(b, t, &free_list, node) * { * ... * } * @endcode * @param[in] head The head of the linked list. Input should be a pointer. * @param[in] member The member which corresponds to the member name of the ll_t entry. For this * example struct, member would refer to `node`. * @code * typedef struct * { * ll_t node; * size_t size; * char* block; * } alloc_node_t; * @endcode */ #define list_for_each_entry_safe(pos, n, head, member) \ for(pos = list_entry((head)->next, __typeof__(*pos), member), \ n = list_entry(pos->member.next, __typeof__(*pos), member); \ &pos->member != (head); pos = n, n = list_entry(n->member.next, __typeof__(*n), member)) /// @} // End foreach /// @name Initialization /// @{ /// Initialize a linked list so it points to itself /// @param[in] name of the linked list object #define ll_head_INIT(name) \ { \ &(name), &(name) \ } // Added by BenC static inline void INIT_LIST_HEAD(ll_t *list) { list->next = list; list->prev = list; } /** Initialize a linked list * * @code * // This macro declares and initializes our linked list * static LIST_INIT(free_list); * @endcode * @param[in] name The name of the linked list object to declare */ #define LIST_INIT(name) struct ll_head name = ll_head_INIT(name) /// @} /// @name Addition /// @{ /// Insert a new element between two existing elements. /// @param[in] n The node to add to the list. /// @param[in] prev The pointer to the node before where the new node will be inserted. /// @param[in] next The pointer to the new node after where the new node will be inserted. static inline void list_insert(struct ll_head* n, struct ll_head* prev, struct ll_head* next) { next->prev = n; n->next = next; n->prev = prev; prev->next = n; } /// Add a node to the front of the list /// @param[in] n The node to add to the list. /// @param[in] head The head of the list. static inline void list_add(struct ll_head* n, struct ll_head* head) { list_insert(n, head, head->next); } /// Add a node to the end of the list /// @param[in] n The node to add to the list. /// @param[in] head The head of the list. static inline void list_add_tail(struct ll_head* n, struct ll_head* head) { list_insert(n, head->prev, head); } /// @} /// @name Deletion /// @{ /// Remove the node between two element pointers. /// /// Joins the `prev` and `next` elements together, effectively removing /// the element in the middle. /// /// @param[in] prev The previous element in the list, which will now be joined to next. /// @param[in] next The next element in the list, which will now be joined to prev. static inline void list_join_nodes(struct ll_head* prev, struct ll_head* next) { next->prev = prev; prev->next = next; } /// Remove an entry from the list /// @param[in] entry The pointer to the entry to remove from the list. static inline void list_del(struct ll_head* entry) { list_join_nodes(entry->prev, entry->next); entry->next = NULL; entry->prev = NULL; } /// @} /// @} // end group #ifdef __cplusplus } #endif //__cplusplus #endif // LL_H__ libjwt-3.2.3/libjwt/mbedtls/000077500000000000000000000000001510461717300157445ustar00rootroot00000000000000libjwt-3.2.3/libjwt/mbedtls/jwk-parse.c000066400000000000000000000016401510461717300200140ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "jwt-private.h" static const char not_implemented[] = "MBedTLS does not yet implement JWK"; JWT_NO_EXPORT int mbedtls_process_eddsa(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT int mbedtls_process_rsa(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT int mbedtls_process_ec(json_t *jwk, jwk_item_t *item) { jwt_write_error(item, not_implemented); return -1; } JWT_NO_EXPORT void mbedtls_process_item_free(jwk_item_t *item) { return; } libjwt-3.2.3/libjwt/mbedtls/jwt-mbedtls.h000066400000000000000000000016211510461717300203510ustar00rootroot00000000000000/* Copyright (C) 2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef JWT_MBEDTLS_H #define JWT_MBEDTLS_H /* Until we have our own routines, we rely on OpenSSL */ int openssl_process_eddsa(json_t *jwk, jwk_item_t *item); int openssl_process_rsa(json_t *jwk, jwk_item_t *item); int openssl_process_ec(json_t *jwk, jwk_item_t *item); void openssl_process_item_free(jwk_item_t *item); int mbedtls_process_eddsa(json_t *jwk, jwk_item_t *item); int gmbedls_process_rsa(json_t *jwk, jwk_item_t *item); int mbedtls_process_ec(json_t *jwk, jwk_item_t *item); void mbedtls_process_item_free(jwk_item_t *item); #endif /* JWT_MBEDTLS_H */ libjwt-3.2.3/libjwt/mbedtls/sign-verify.c000066400000000000000000000240501510461717300203530ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include #include #include "jwt-private.h" #include "jwt-mbedtls.h" static int mbedtls_sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { mbedtls_md_context_t ctx; const mbedtls_md_info_t *md_info; void *key; size_t key_len; int ret = 1; key = jwt->key->oct.key; key_len = jwt->key->oct.len; *out = NULL; /* Determine the HMAC algorithm based on jwt->alg */ switch (jwt->alg) { case JWT_ALG_HS256: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); break; case JWT_ALG_HS384: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA384); break; case JWT_ALG_HS512: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); break; default: return 1; } *out = jwt_malloc(mbedtls_md_get_size(md_info)); if (*out == NULL) return 1; mbedtls_md_init(&ctx); ret = mbedtls_md_setup(&ctx, md_info, 1); if (ret) { mbedtls_md_free(&ctx); jwt_freemem(*out); return 1; } /* Start HMAC calculation */ ret = mbedtls_md_hmac_starts(&ctx, key, key_len); if (!ret) ret = mbedtls_md_hmac_update(&ctx, (const unsigned char *)str, str_len); if (!ret) ret = mbedtls_md_hmac_finish(&ctx, (unsigned char *)*out); if (ret) { mbedtls_md_free(&ctx); jwt_freemem(*out); return 1; } /* Get the output size */ *len = mbedtls_md_get_size(md_info); mbedtls_md_free(&ctx); return 0; } #define SIGN_ERROR(_msg) { jwt_write_error(jwt, "JWT[MbedTLS]: " _msg); goto sign_clean_key; } static int mbedtls_sign_sha_pem(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { size_t out_size; mbedtls_pk_context pk; const mbedtls_md_info_t *md_info; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; unsigned char sig[MBEDTLS_PK_SIGNATURE_MAX_SIZE]; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; size_t sig_len = 0; const char *pers = "libjwt_ecdsa_sign"; if (jwt->key->pem == NULL) SIGN_ERROR("Key is not compatible"); // LCOV_EXCL_LINE mbedtls_pk_init(&pk); mbedtls_entropy_init(&entropy); mbedtls_ctr_drbg_init(&ctr_drbg); if (mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *)pers, strlen(pers))) SIGN_ERROR("Failed RNG setup"); // LCOV_EXCL_LINE /* Load the private key */ if (mbedtls_pk_parse_key(&pk, (unsigned char *)jwt->key->pem, strlen(jwt->key->pem) + 1, NULL, 0, NULL, NULL)) SIGN_ERROR("Error parsing private key"); // LCOV_EXCL_LINE /* Determine the hash algorithm */ switch (jwt->alg) { case JWT_ALG_RS256: case JWT_ALG_PS256: case JWT_ALG_ES256: case JWT_ALG_ES256K: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); break; case JWT_ALG_RS384: case JWT_ALG_PS384: case JWT_ALG_ES384: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA384); break; case JWT_ALG_RS512: case JWT_ALG_PS512: case JWT_ALG_ES512: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); break; default: SIGN_ERROR("Unsupported algorithm"); // LCOV_EXCL_LINE } /* Compute the hash of the input string */ if (mbedtls_md(md_info, (unsigned char *)str, str_len, hash)) SIGN_ERROR("Error initializing md context"); // LCOV_EXCL_LINE /* For EC keys, convert signature to R/S format */ if (mbedtls_pk_can_do(&pk, MBEDTLS_PK_ECDSA)) { mbedtls_mpi r, s; mbedtls_ecdsa_context ecdsa; int adj; mbedtls_ecdsa_init(&ecdsa); mbedtls_mpi_init(&r); mbedtls_mpi_init(&s); /* Extract ECDSA key */ if (mbedtls_ecdsa_from_keypair(&ecdsa, mbedtls_pk_ec(pk))) SIGN_ERROR("Error getting ECDSA keypair"); // LCOV_EXCL_LINE if (mbedtls_ecdsa_sign(&ecdsa.private_grp, &r, &s, &ecdsa.private_d, hash, mbedtls_md_get_size(md_info), mbedtls_ctr_drbg_random, &ctr_drbg)) SIGN_ERROR("Error signing token"); // LCOV_EXCL_LINE /* Determine R/S sizes based on algorithm */ switch (jwt->alg) { case JWT_ALG_ES256: case JWT_ALG_ES256K: adj = 32; break; case JWT_ALG_ES384: adj = 48; break; case JWT_ALG_ES512: adj = 66; break; default: SIGN_ERROR("Unknown EC alg"); // LCOV_EXCL_LINE } out_size = adj * 2; *out = jwt_malloc(out_size); if (*out == NULL) SIGN_ERROR("Out of memory"); // LCOV_EXCL_LINE memset(*out, 0, out_size); mbedtls_mpi_write_binary(&r, (unsigned char *)(*out), adj); mbedtls_mpi_write_binary(&s, (unsigned char *)(*out) + adj, adj); *len = out_size; mbedtls_mpi_free(&r); mbedtls_mpi_free(&s); mbedtls_ecdsa_free(&ecdsa); } else { switch (jwt->alg) { case JWT_ALG_PS256: case JWT_ALG_PS384: case JWT_ALG_PS512: if (mbedtls_rsa_set_padding(mbedtls_pk_rsa(pk), MBEDTLS_RSA_PKCS_V21, mbedtls_md_get_type(md_info))) SIGN_ERROR("Failed setting RSASSA-PSS padding"); // LCOV_EXCL_LINE if (mbedtls_rsa_rsassa_pss_sign(mbedtls_pk_rsa(pk), mbedtls_ctr_drbg_random, &ctr_drbg, mbedtls_md_get_type(md_info), mbedtls_md_get_size(md_info), hash, sig)) SIGN_ERROR("Failed signing RSASSA-PSS"); // LCOV_EXCL_LINE break; case JWT_ALG_RS256: case JWT_ALG_RS384: case JWT_ALG_RS512: if (mbedtls_rsa_pkcs1_sign(mbedtls_pk_rsa(pk), mbedtls_ctr_drbg_random, &ctr_drbg, mbedtls_md_get_type(md_info), mbedtls_md_get_size(md_info), hash, sig)) SIGN_ERROR("Error signing token"); // LCOV_EXCL_LINE break; default: SIGN_ERROR("Unexpected algorithm"); // LCOV_EXCL_LINE } sig_len = mbedtls_pk_rsa(pk)->private_len; *out = jwt_malloc(sig_len); if (*out == NULL) SIGN_ERROR("Out of memory"); // LCOV_EXCL_LINE memcpy(*out, sig, sig_len); *len = sig_len; } sign_clean_key: mbedtls_pk_free(&pk); mbedtls_ctr_drbg_free(&ctr_drbg); mbedtls_entropy_free(&entropy); return jwt->error; } #define VERIFY_ERROR(_msg) { jwt_write_error(jwt, "JWT[MbedTLS]: " _msg); goto verify_clean_key; } static int mbedtls_verify_sha_pem(jwt_t *jwt, const char *head, unsigned int head_len, unsigned char *sig, int sig_len) { mbedtls_pk_context pk; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; const mbedtls_md_info_t *md_info = NULL; int ret = 1; mbedtls_pk_init(&pk); if (jwt->key->pem == NULL) return 1; /* Attempt to parse the key as a public key */ ret = mbedtls_pk_parse_public_key(&pk, (const unsigned char *) jwt->key->pem, strlen(jwt->key->pem) + 1); if (ret) { /* Try loading as private key... */ if (mbedtls_pk_parse_key(&pk, (const unsigned char *) jwt->key->pem, strlen(jwt->key->pem) + 1, NULL, 0, NULL, NULL)) VERIFY_ERROR("Failed to parse key"); // LCOV_EXCL_LINE } /* Determine the hash algorithm */ switch (jwt->alg) { case JWT_ALG_RS256: case JWT_ALG_PS256: case JWT_ALG_ES256: case JWT_ALG_ES256K: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); break; case JWT_ALG_RS384: case JWT_ALG_PS384: case JWT_ALG_ES384: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA384); break; case JWT_ALG_RS512: case JWT_ALG_PS512: case JWT_ALG_ES512: md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA512); break; default: VERIFY_ERROR("Unsupported algorithm"); // LCOV_EXCL_LINE } if (md_info == NULL) VERIFY_ERROR("Failed to get hash alg info"); // LCOV_EXCL_LINE /* Compute the hash of the input string */ if ((ret = mbedtls_md(md_info, (const unsigned char *)head, head_len, hash))) VERIFY_ERROR("Failed to computer hash"); // LCOV_EXCL_LINE /* Handle ECDSA R/S format conversion */ if (mbedtls_pk_can_do(&pk, MBEDTLS_PK_ECDSA)) { mbedtls_mpi r, s; mbedtls_ecdsa_context ecdsa; mbedtls_ecdsa_init(&ecdsa); mbedtls_mpi_init(&r); mbedtls_mpi_init(&s); /* Split R/S from the signature */ if (sig_len == 64 || sig_len == 96 || sig_len == 132) { size_t r_size = sig_len / 2; mbedtls_mpi_read_binary(&r, sig, r_size); mbedtls_mpi_read_binary(&s, sig + r_size, r_size); } else { VERIFY_ERROR("Invalid ECDSA sig size"); // LCOV_EXCL_LINE } /* Extract ECDSA public key */ if (mbedtls_ecdsa_from_keypair(&ecdsa, mbedtls_pk_ec(pk))) VERIFY_ERROR("Failed to extract ECDSA public key"); // LCOV_EXCL_LINE /* Verify ECDSA signature */ if (mbedtls_ecdsa_verify(&ecdsa.private_grp, hash, mbedtls_md_get_size(md_info), &ecdsa.private_Q, &r, &s)) VERIFY_ERROR("Failed to verify signature"); // LCOV_EXCL_LINE /* Free ECDSA resources */ mbedtls_mpi_free(&r); mbedtls_mpi_free(&s); mbedtls_ecdsa_free(&ecdsa); } else if (mbedtls_pk_can_do(&pk, MBEDTLS_PK_RSA)) { /* Verify RSA or RSA-PSS signature */ if (jwt->alg == JWT_ALG_PS256 || jwt->alg == JWT_ALG_PS384 || jwt->alg == JWT_ALG_PS512) { if (mbedtls_rsa_rsassa_pss_verify(mbedtls_pk_rsa(pk), mbedtls_md_get_type(md_info), mbedtls_md_get_size(md_info), hash, sig)) VERIFY_ERROR("Failed to verify signature"); // LCOV_EXCL_LINE } else { if (mbedtls_rsa_pkcs1_verify(mbedtls_pk_rsa(pk), mbedtls_md_get_type(md_info), mbedtls_md_get_size(md_info), hash, sig)) VERIFY_ERROR("Failed to verify signature"); // LCOV_EXCL_LINE } } else { VERIFY_ERROR("Unexpected key typ"); // LCOV_EXCL_LINE } verify_clean_key: mbedtls_pk_free(&pk); return jwt->error; } /* Export our ops */ struct jwt_crypto_ops jwt_mbedtls_ops = { .name = "mbedtls", .provider = JWT_CRYPTO_OPS_MBEDTLS, .sign_sha_hmac = mbedtls_sign_sha_hmac, .sign_sha_pem = mbedtls_sign_sha_pem, .verify_sha_pem = mbedtls_verify_sha_pem, /* Needs to be implemented */ .jwk_implemented = 1, .process_eddsa = openssl_process_eddsa, .process_rsa = openssl_process_rsa, .process_ec = openssl_process_ec, .process_item_free = openssl_process_item_free, }; libjwt-3.2.3/libjwt/openssl/000077500000000000000000000000001510461717300157755ustar00rootroot00000000000000libjwt-3.2.3/libjwt/openssl/jwk-parse.c000066400000000000000000000322461510461717300200530ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include "jwt-private.h" #include #include #include #include #include #include #include #include #include "openssl/jwt-openssl.h" /* Sets a param for the public EC key */ static void *set_ec_pub_key(OSSL_PARAM_BLD *build, json_t *jx, json_t *jy, const char *curve_name) { EC_GROUP *group = NULL; EC_POINT *point = NULL; unsigned char *bin_x = NULL, *bin_y = NULL; int len_x, len_y; const char *str_x, *str_y; BIGNUM *x = NULL, *y = NULL; int nid; size_t pub_key_len = 0; unsigned char *pub_key = NULL; /* First, base64url decode */ str_x = json_string_value(jx); str_y = json_string_value(jy); bin_x = jwt_base64uri_decode(str_x, &len_x); bin_y = jwt_base64uri_decode(str_y, &len_y); if (bin_x == NULL || bin_y == NULL) goto ec_pub_key_cleanup; /* Convert to BN */ x = BN_bin2bn(bin_x, len_x, NULL); y = BN_bin2bn(bin_y, len_y, NULL); if (x == NULL || y == NULL) goto ec_pub_key_cleanup; // LCOV_EXCL_LINE /* Create the EC group and point */ nid = OBJ_sn2nid(curve_name); group = EC_GROUP_new_by_curve_name(nid); if (group == NULL) goto ec_pub_key_cleanup; point = EC_POINT_new(group); if (point == NULL) goto ec_pub_key_cleanup; // LCOV_EXCL_LINE if (!EC_POINT_set_affine_coordinates(group, point, x, y, NULL)) goto ec_pub_key_cleanup; pub_key_len = EC_POINT_point2buf(group, point, POINT_CONVERSION_UNCOMPRESSED, &pub_key, NULL); if (pub_key_len == 0) goto ec_pub_key_cleanup; // LCOV_EXCL_LINE OSSL_PARAM_BLD_push_octet_string(build, OSSL_PKEY_PARAM_PUB_KEY, pub_key, pub_key_len); ec_pub_key_cleanup: EC_POINT_free(point); EC_GROUP_free(group); BN_free(x); BN_free(y); jwt_freemem(bin_x); jwt_freemem(bin_y); /* Return this to be freed. */ return pub_key; } /* b64url-decodes a single OSSL BIGNUM and sets the OSSL param. */ static BIGNUM *set_one_bn(OSSL_PARAM_BLD *build, const char *ossl_name, json_t *val) { unsigned char *bin; const char *str; int len = 0; BIGNUM *bn; /* decode it */ str = json_string_value(val); if (str == NULL) return NULL; bin = jwt_base64uri_decode(str, &len); if (bin == NULL || len <= 0) return NULL; bn = BN_bin2bn(bin, len, NULL); jwt_freemem(bin); if (bn == NULL) return NULL; // LCOV_EXCL_LINE OSSL_PARAM_BLD_push_BN(build, ossl_name, bn); return bn; } /* Sets a single OSSL string param. */ static void set_one_string(OSSL_PARAM_BLD *build, const char *ossl_name, const char *str) { OSSL_PARAM_BLD_push_utf8_string(build, ossl_name, str, strlen(str)); } /* b64url-decodes a single octet and creates an OSSL param. */ static unsigned char *set_one_octet(OSSL_PARAM_BLD *build, const char *ossl_name, json_t *val) { unsigned char *bin; const char *str; int len; /* decode it */ str = json_string_value(val); bin = jwt_base64uri_decode(str, &len); OSSL_PARAM_BLD_push_octet_string(build, ossl_name, bin, len); return bin; } static int pctx_to_pem(EVP_PKEY_CTX *pctx, OSSL_PARAM *params, jwk_item_t *item, int priv) { BIO *bio = NULL; EVP_PKEY *pkey = NULL; char *src = NULL, *dest = NULL; long len; int ret = -1; ret = EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEYPAIR, params); if (ret <= 0 || pkey == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Unable to create PEM from pkey"); goto cleanup_pem; // LCOV_EXCL_STOP } item->provider = JWT_CRYPTO_OPS_OPENSSL; item->provider_data = pkey; EVP_PKEY_get_size_t_param(pkey, OSSL_PKEY_PARAM_BITS, &item->bits); /* From here after, we don't fail. PEM is optional. */ ret = 0; bio = BIO_new(BIO_s_mem()); if (bio == NULL) goto cleanup_pem; // LCOV_EXCL_LINE if (priv) ret = PEM_write_bio_PrivateKey(bio, pkey, NULL, NULL, 0, NULL, NULL); else ret = PEM_write_bio_PUBKEY(bio, pkey); if (!ret) { // LCOV_EXCL_START ret = 0; goto cleanup_pem; // LCOV_EXCL_STOP } len = BIO_get_mem_data(bio, &src); dest = OPENSSL_malloc(len + 1); if (dest == NULL) goto cleanup_pem; // LCOV_EXCL_LINE memcpy(dest, src, len); dest[len] = '\0'; item->pem = dest; ret = 0; cleanup_pem: BIO_free(bio); return ret; } /* For EdDSA keys */ JWT_NO_EXPORT int openssl_process_eddsa(json_t *jwk, jwk_item_t *item) { unsigned char *pub_bin = NULL, *priv_bin = NULL; OSSL_PARAM *params = NULL; OSSL_PARAM_BLD *build = NULL; EVP_PKEY_CTX *pctx = NULL; json_t *x, *d, *crv; const char *crv_str; int priv = 0; int ret = -1; /* EdDSA only need one or the other. */ x = json_object_get(jwk, "x"); d = json_object_get(jwk, "d"); crv = json_object_get(jwk, "crv"); if (x == NULL && d == NULL) { jwt_write_error(item, "Need an 'x' or 'd' component and found neither"); goto cleanup_eddsa; } if (crv == NULL || !json_is_string(crv)) { jwt_write_error(item, "No curve component found for EdDSA key"); goto cleanup_eddsa; } if (d != NULL) item->is_private_key = priv = 1; crv_str = json_string_value(crv); if (!strcmp(crv_str, "Ed25519")) pctx = EVP_PKEY_CTX_new_from_name(NULL, "ED25519", NULL); else if (!strcmp(crv_str, "Ed448")) pctx = EVP_PKEY_CTX_new_from_name(NULL, "ED448", NULL); else { jwt_write_error(item, "Unknown curve [%s] (note, curves are case sensitive)", crv_str); goto cleanup_eddsa; } strncpy(item->curve, crv_str, sizeof(item->curve) - 1); item->curve[sizeof(item->curve) - 1] = '\0'; if (pctx == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error creating pkey context"); goto cleanup_eddsa; // LCOV_EXCL_STOP } if (EVP_PKEY_fromdata_init(pctx) <= 0) { // LCOV_EXCL_START jwt_write_error(item, "Error starting pkey init from data"); goto cleanup_eddsa; // LCOV_EXCL_STOP } build = OSSL_PARAM_BLD_new(); if (build == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error allocating params build"); goto cleanup_eddsa; // LCOV_EXCL_STOP } if (!priv) { pub_bin = set_one_octet(build, OSSL_PKEY_PARAM_PUB_KEY, x); if (pub_bin == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error parsing pub key"); goto cleanup_eddsa; // LCOV_EXCL_STOP } } else { priv_bin = set_one_octet(build, OSSL_PKEY_PARAM_PRIV_KEY, d); if (priv_bin == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error parsing private key"); goto cleanup_eddsa; // LCOV_EXCL_STOP } } params = OSSL_PARAM_BLD_to_param(build); if (params == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error creating build params"); goto cleanup_eddsa; // LCOV_EXCL_STOP } /* Create PEM from params */ ret = pctx_to_pem(pctx, params, item, priv); cleanup_eddsa: OSSL_PARAM_free(params); OSSL_PARAM_BLD_free(build); EVP_PKEY_CTX_free(pctx); jwt_freemem(pub_bin); jwt_freemem(priv_bin); return ret; } /* For RSA keys (RS256, RS384, RS512). Also works for RSA-PSS * (PS256, PS384, PS512) */ JWT_NO_EXPORT int openssl_process_rsa(json_t *jwk, jwk_item_t *item) { OSSL_PARAM_BLD *build = NULL; json_t *n, *e, *d, *p, *q, *dp, *dq, *qi, *alg; BIGNUM *bn_n = NULL, *bn_e = NULL, *bn_d = NULL, *bn_p = NULL, *bn_q = NULL, *bn_dp = NULL, *bn_dq = NULL, *bn_qi = NULL; int is_rsa_pss = 0, priv = 0, ret = -1; OSSL_PARAM *params = NULL; EVP_PKEY_CTX *pctx = NULL; const char *alg_str = NULL; alg = json_object_get(jwk, "alg"); n = json_object_get(jwk, "n"); e = json_object_get(jwk, "e"); d = json_object_get(jwk, "d"); p = json_object_get(jwk, "p"); q = json_object_get(jwk, "q"); dp = json_object_get(jwk, "dp"); dq = json_object_get(jwk, "dq"); qi = json_object_get(jwk, "qi"); if (n == NULL || e == NULL) { jwt_write_error(item, "Missing required RSA component: n or e"); goto cleanup_rsa; } /* Check alg to see if we can sniff RSA vs RSA-PSS */ if (alg) { alg_str = json_string_value(alg); if (alg_str[0] == 'P') is_rsa_pss = 1; } /* Priv vs PUB */ if (d && p && q && dp && dq && qi) { item->is_private_key = priv = 1; } else if (!d && !p && !q && !dp && !dq && !qi) { priv = 0; } else { jwt_write_error(item, "Some priv key components exist, but some are missing"); goto cleanup_rsa; } pctx = EVP_PKEY_CTX_new_from_name(NULL, is_rsa_pss ? "RSA-PSS" : "RSA", NULL); if (pctx == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error creating pkey context"); goto cleanup_rsa; // LCOV_EXCL_STOP } if (EVP_PKEY_fromdata_init(pctx) <= 0) { // LCOV_EXCL_START jwt_write_error(item, "Error preparing context for data"); goto cleanup_rsa; // LCOV_EXCL_STOP } /* Set params */ build = OSSL_PARAM_BLD_new(); if (build == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error creating param build"); goto cleanup_rsa; // LCOV_EXCL_STOP } bn_n = set_one_bn(build, OSSL_PKEY_PARAM_RSA_N, n); bn_e = set_one_bn(build, OSSL_PKEY_PARAM_RSA_E, e); if (!bn_n || !bn_e) { jwt_write_error(item, "Error decoding pub components"); goto cleanup_rsa; } if (priv) { bn_d = set_one_bn(build, OSSL_PKEY_PARAM_RSA_D, d); bn_p = set_one_bn(build, OSSL_PKEY_PARAM_RSA_FACTOR1, p); bn_q = set_one_bn(build, OSSL_PKEY_PARAM_RSA_FACTOR2, q); bn_dp = set_one_bn(build, OSSL_PKEY_PARAM_RSA_EXPONENT1, dp); bn_dq = set_one_bn(build, OSSL_PKEY_PARAM_RSA_EXPONENT2, dq); bn_qi = set_one_bn(build, OSSL_PKEY_PARAM_RSA_COEFFICIENT1, qi); if (!bn_d || !bn_p || !bn_q || !bn_dp || !bn_dq || !bn_qi) { jwt_write_error(item, "Error decoding priv components"); goto cleanup_rsa; } } params = OSSL_PARAM_BLD_to_param(build); if (params == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error building params"); goto cleanup_rsa; // LCOV_EXCL_STOP } /* Create PEM from params */ ret = pctx_to_pem(pctx, params, item, priv); cleanup_rsa: OSSL_PARAM_free(params); OSSL_PARAM_BLD_free(build); EVP_PKEY_CTX_free(pctx); BN_free(bn_n); BN_free(bn_e); BN_free(bn_d); BN_free(bn_p); BN_free(bn_q); BN_free(bn_dp); BN_free(bn_dq); BN_free(bn_qi); return ret; } static const char *ec_crv_to_ossl_name(const char *crv) { const char *ret = crv; if (!strcmp(crv, "P-256")) ret = "prime256v1"; else if (!strcmp(crv, "P-384")) ret = "secp384r1"; else if (!strcmp(crv, "P-521")) ret = "secp521r1"; return ret; } /* For EC Keys (ES256, ES384, ES512) */ JWT_NO_EXPORT int openssl_process_ec(json_t *jwk, jwk_item_t *item) { OSSL_PARAM *params = NULL; OSSL_PARAM_BLD *build = NULL; json_t *crv, *x, *y, *d; EVP_PKEY_CTX *pctx = NULL; const char *crv_str; const char *ossl_crv; BIGNUM *bn = NULL; int priv = 0, ret = -1; void *pub_key = NULL; crv = json_object_get(jwk, "crv"); x = json_object_get(jwk, "x"); y = json_object_get(jwk, "y"); d = json_object_get(jwk, "d"); /* Check the minimal for pub key */ if (crv == NULL || x == NULL || y == NULL || !json_is_string(crv) || !json_is_string(x) || !json_is_string(y)) { jwt_write_error(item, "Missing or invalid type for one of crv, x, or y for pub key"); goto cleanup_ec; } crv_str = json_string_value(crv); strncpy(item->curve, crv_str, sizeof(item->curve) - 1); item->curve[sizeof(item->curve) - 1] = '\0'; /* Only private keys contain this field */ if (d != NULL) item->is_private_key = priv = 1; pctx = EVP_PKEY_CTX_new_from_name(NULL, "EC", NULL); if (pctx == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error creating pkey context"); goto cleanup_ec; // LCOV_EXCL_STOP } if (EVP_PKEY_fromdata_init(pctx) <= 0) { // LCOV_EXCL_START jwt_write_error(item, "Error preparing context for data"); goto cleanup_ec; // LCOV_EXCL_STOP } /* Set params */ build = OSSL_PARAM_BLD_new(); if (build == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error allocating param build"); goto cleanup_ec; // LCOV_EXCL_STOP } ossl_crv = ec_crv_to_ossl_name(crv_str); set_one_string(build, OSSL_PKEY_PARAM_GROUP_NAME, ossl_crv); pub_key = set_ec_pub_key(build, x, y, ossl_crv); if (pub_key == NULL) { jwt_write_error(item, "Error generating pub key from components"); goto cleanup_ec; } if (priv) { bn = set_one_bn(build, OSSL_PKEY_PARAM_PRIV_KEY, d); if (bn == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error parsing component d"); goto cleanup_ec; // LCOV_EXCL_STOP } } params = OSSL_PARAM_BLD_to_param(build); if (params == NULL) { // LCOV_EXCL_START jwt_write_error(item, "Error build params"); goto cleanup_ec; // LCOV_EXCL_STOP } /* Create PEM from params */ ret = pctx_to_pem(pctx, params, item, priv); cleanup_ec: OSSL_PARAM_free(params); OSSL_PARAM_BLD_free(build); OPENSSL_free(pub_key); EVP_PKEY_CTX_free(pctx); BN_free(bn); return ret; } JWT_NO_EXPORT void openssl_process_item_free(jwk_item_t *item) { if (item == NULL || item->provider != JWT_CRYPTO_OPS_OPENSSL) return; EVP_PKEY_free(item->provider_data); OPENSSL_free(item->pem); item->pem = NULL; item->provider_data = NULL; item->provider = JWT_CRYPTO_OPS_NONE; } libjwt-3.2.3/libjwt/openssl/jwt-openssl.h000066400000000000000000000011741510461717300204360ustar00rootroot00000000000000/* Copyright (C) 2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef JWT_OPENSSL_H #define JWT_OPENSSL_H int openssl_process_eddsa(json_t *jwk, jwk_item_t *item); int openssl_process_rsa(json_t *jwk, jwk_item_t *item); int openssl_process_ec(json_t *jwk, jwk_item_t *item); void openssl_process_item_free(jwk_item_t *item); #endif /* JWT_OPENSSL_H */ libjwt-3.2.3/libjwt/openssl/sign-verify.c000066400000000000000000000246021510461717300204070ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include #include #include #include #include "jwt-private.h" #include "openssl/jwt-openssl.h" /* Routines to support crypto in LibJWT using OpenSSL. */ static int openssl_sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { const EVP_MD *alg; void *key; size_t key_len; key = jwt->key->oct.key; key_len = jwt->key->oct.len; *out = NULL; switch (jwt->alg) { /* HMAC */ case JWT_ALG_HS256: alg = EVP_sha256(); break; case JWT_ALG_HS384: alg = EVP_sha384(); break; case JWT_ALG_HS512: alg = EVP_sha512(); break; // LCOV_EXCL_START default: return 1; // LCOV_EXCL_STOP } *out = jwt_malloc(EVP_MAX_MD_SIZE); if (*out == NULL) return 1; // LCOV_EXCL_LINE if (HMAC(alg, key, key_len, (const unsigned char *)str, str_len, (unsigned char *)*out, len) == NULL) { // LCOV_EXCL_START jwt_freemem(*out); *out = NULL; return 1; // LCOV_EXCL_STOP } return 0; } static int jwt_ec_d2i(jwt_t *jwt, char **out, unsigned int *len, unsigned char *sig, unsigned int slen) { unsigned int bn_len, r_len, s_len, buf_len; ECDSA_SIG *ec_sig = NULL; const BIGNUM *ec_sig_r; const BIGNUM *ec_sig_s; unsigned char *buf; /* Get the sig from the DER encoded version. */ ec_sig = d2i_ECDSA_SIG(NULL, (const unsigned char **)&sig, slen); if (ec_sig == NULL) return 1; // LCOV_EXCL_LINE ECDSA_SIG_get0(ec_sig, &ec_sig_r, &ec_sig_s); r_len = BN_num_bytes(ec_sig_r); s_len = BN_num_bytes(ec_sig_s); bn_len = (jwt->key->bits + 7) / 8; if ((r_len > bn_len) || (s_len > bn_len)) { // LCOV_EXCL_START ECDSA_SIG_free(ec_sig); return 1; // LCOV_EXCL_STOP } buf_len = 2 * bn_len; buf = jwt_malloc(buf_len); if (buf == NULL) { // LCOV_EXCL_START ECDSA_SIG_free(ec_sig); return 1; // LCOV_EXCL_STOP } /* Pad the bignums with leading zeroes. Ends up looking sort * of like this "0000rrrrrrrSSSSS". */ memset(buf, 0, buf_len); BN_bn2bin(ec_sig_r, buf + (bn_len - r_len)); BN_bn2bin(ec_sig_s, buf + (buf_len - s_len)); ECDSA_SIG_free(ec_sig); *out = (char *)buf; *len = buf_len; return 0; } #define SIGN_ERROR(_msg) { jwt_write_error(jwt, "JWT[OpenSSL]: " _msg); goto jwt_sign_sha_pem_done; } static int openssl_sign_sha_pem(jwt_t *jwt, char **out, unsigned int *len, const char *str, unsigned int str_len) { EVP_MD_CTX *mdctx = NULL; EVP_PKEY_CTX *pkey_ctx = NULL; BIO *bufkey = NULL; const EVP_MD *alg; int type; EVP_PKEY *pkey = NULL; unsigned char *sig = NULL; size_t slen; pkey = jwt->key->provider_data; switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = EVP_sha256(); type = EVP_PKEY_RSA; break; case JWT_ALG_RS384: alg = EVP_sha384(); type = EVP_PKEY_RSA; break; case JWT_ALG_RS512: alg = EVP_sha512(); type = EVP_PKEY_RSA; break; /* RSA-PSS */ case JWT_ALG_PS256: alg = EVP_sha256(); type = EVP_PKEY_RSA_PSS; break; case JWT_ALG_PS384: alg = EVP_sha384(); type = EVP_PKEY_RSA_PSS; break; case JWT_ALG_PS512: alg = EVP_sha512(); type = EVP_PKEY_RSA_PSS; break; /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = EVP_sha256(); type = EVP_PKEY_EC; break; case JWT_ALG_ES384: alg = EVP_sha384(); type = EVP_PKEY_EC; break; case JWT_ALG_ES512: alg = EVP_sha512(); type = EVP_PKEY_EC; break; /* EdDSA */ case JWT_ALG_EDDSA: /* Technically this is sha512 for ED25519 and * shake256 for ED448 */ alg = EVP_md_null(); type = EVP_PKEY_id(pkey); if (type != EVP_PKEY_ED25519 && type != EVP_PKEY_ED448) SIGN_ERROR("Unknown EdDSA curve"); // LCOV_EXCL_LINE break; // LCOV_EXCL_START default: return 1; // LCOV_EXCL_STOP } if (type == EVP_PKEY_RSA_PSS) { if (EVP_PKEY_id(pkey) != EVP_PKEY_RSA && EVP_PKEY_id(pkey) != EVP_PKEY_RSA_PSS) { SIGN_ERROR("Incompatible key for RSASSA-PSS"); // LCOV_EXCL_LINE } } else if (type != EVP_PKEY_id(pkey)) { SIGN_ERROR("Incompatible key"); // LCOV_EXCL_LINE } mdctx = EVP_MD_CTX_create(); if (mdctx == NULL) SIGN_ERROR("Error creating MD context"); // LCOV_EXCL_LINE /* Initialize the DigestSign operation using alg */ if (EVP_DigestSignInit(mdctx, &pkey_ctx, alg, NULL, pkey) != 1) SIGN_ERROR("Failued to initialize digest"); // LCOV_EXCL_LINE /* Required for RSA-PSS */ if (type == EVP_PKEY_RSA_PSS) { if (EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING) < 0) SIGN_ERROR("Error setting RSASSA-PSS padding"); // LCOV_EXCL_LINE if (EVP_PKEY_CTX_set_rsa_pss_saltlen(pkey_ctx, RSA_PSS_SALTLEN_DIGEST) < 0) SIGN_ERROR("Error setting RSASSA-PSS salt length"); // LCOV_EXCL_LINE } /* Get the size of sig first */ if (EVP_DigestSign(mdctx, NULL, &slen, (const unsigned char *)str, str_len) != 1) SIGN_ERROR("Error checking sig size"); // LCOV_EXCL_LINE /* Allocate memory for signature based on returned size */ sig = jwt_malloc(slen); if (sig == NULL) SIGN_ERROR("Out of memory"); // LCOV_EXCL_LINE /* Actual signing */ if (EVP_DigestSign(mdctx, sig, &slen, (const unsigned char *)str, str_len) != 1) SIGN_ERROR("Error singing token") // LCOV_EXCL_LINE; if (type == EVP_PKEY_EC) { /* For EC we need to convert to a raw format of R/S. */ if (jwt_ec_d2i(jwt, out, len, sig, slen)) SIGN_ERROR("ECDSA failed d2i"); // LCOV_EXCL_LINE /* jwt_ec_d2i has updated the out and len pointers on * success. Either way, we're done with this buffer. */ jwt_freemem(sig); sig = NULL; } else { /* Everything else, just pass back the original sig. */ *out = (char *)sig; *len = slen; } jwt_sign_sha_pem_done: if (jwt->error) jwt_freemem(sig); // LCOV_EXCL_LINE BIO_free(bufkey); EVP_MD_CTX_destroy(mdctx); return jwt->error; } #define VERIFY_ERROR(_msg) { jwt_write_error(jwt, "JWT[OpenSSL]: " _msg); goto jwt_verify_sha_pem_done; } static int openssl_verify_sha_pem(jwt_t *jwt, const char *head, unsigned int head_len, unsigned char *sig, int slen) { EVP_MD_CTX *mdctx = NULL; EVP_PKEY_CTX *pkey_ctx = NULL; ECDSA_SIG *ec_sig = NULL; BIGNUM *ec_sig_r = NULL; BIGNUM *ec_sig_s = NULL; EVP_PKEY *pkey = NULL; const EVP_MD *alg; int type; unsigned char *old_sig = NULL; BIO *bufkey = NULL; pkey = jwt->key->provider_data; switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = EVP_sha256(); type = EVP_PKEY_RSA; break; case JWT_ALG_RS384: alg = EVP_sha384(); type = EVP_PKEY_RSA; break; case JWT_ALG_RS512: alg = EVP_sha512(); type = EVP_PKEY_RSA; break; /* RSA-PSS */ case JWT_ALG_PS256: alg = EVP_sha256(); type = EVP_PKEY_RSA_PSS; break; case JWT_ALG_PS384: alg = EVP_sha384(); type = EVP_PKEY_RSA_PSS; break; case JWT_ALG_PS512: alg = EVP_sha512(); type = EVP_PKEY_RSA_PSS; break; /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = EVP_sha256(); type = EVP_PKEY_EC; break; case JWT_ALG_ES384: alg = EVP_sha384(); type = EVP_PKEY_EC; break; case JWT_ALG_ES512: alg = EVP_sha512(); type = EVP_PKEY_EC; break; /* EdDSA */ case JWT_ALG_EDDSA: alg = NULL; if (EVP_PKEY_id(pkey) == EVP_PKEY_ED25519 || EVP_PKEY_id(pkey) == EVP_PKEY_ED448) type = EVP_PKEY_id(pkey); else VERIFY_ERROR("Unknown EdDSA curve"); // LCOV_EXCL_LINE break; // LCOV_EXCL_START default: VERIFY_ERROR("Unknown algorithm"); // LCOV_EXCL_STOP } if (type == EVP_PKEY_RSA_PSS) { if (EVP_PKEY_id(pkey) != EVP_PKEY_RSA_PSS && EVP_PKEY_id(pkey) != EVP_PKEY_RSA) VERIFY_ERROR("Incompatible key for RSASSA-PSS"); // LCOV_EXCL_LINE } else if (type != EVP_PKEY_id(pkey)) VERIFY_ERROR("Incompatible key for algorithm"); if (type == EVP_PKEY_EC) { /* Convert EC sigs back to ASN1. */ unsigned int bn_len; unsigned char *p; ec_sig = ECDSA_SIG_new(); if (ec_sig == NULL) VERIFY_ERROR("Failed to allocate ECDSA sig"); // LCOV_EXCL_LINE bn_len = (jwt->key->bits + 7) / 8; if ((bn_len * 2) != (unsigned int)slen) VERIFY_ERROR("ECDSA micmatch with sig len"); // LCOV_EXCL_LINE ec_sig_r = BN_bin2bn(sig, bn_len, NULL); ec_sig_s = BN_bin2bn(sig + bn_len, bn_len, NULL); if (ec_sig_r == NULL || ec_sig_s == NULL) VERIFY_ERROR("Error allocating R/S params"); // LCOV_EXCL_LINE ECDSA_SIG_set0(ec_sig, ec_sig_r, ec_sig_s); slen = i2d_ECDSA_SIG(ec_sig, NULL); /* Reset this with the new information */ old_sig = sig; sig = jwt_malloc(slen); if (sig == NULL) VERIFY_ERROR("Out of memory"); // LCOV_EXCL_LINE p = sig; slen = i2d_ECDSA_SIG(ec_sig, &p); if (slen == 0) VERIFY_ERROR("Error calculating ECDSA sig"); // LCOV_EXCL_LINE } mdctx = EVP_MD_CTX_create(); if (mdctx == NULL) VERIFY_ERROR("Error creatign MD context"); // LCOV_EXCL_LINE /* Initialize the DigestVerify operation using alg */ if (EVP_DigestVerifyInit(mdctx, &pkey_ctx, alg, NULL, pkey) != 1) VERIFY_ERROR("Error initializing mdctx"); // LCOV_EXCL_LINE if (type == EVP_PKEY_RSA_PSS) { if (EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING) < 0) VERIFY_ERROR("Error setting RSASSA-PSS padding"); // LCOV_EXCL_LINE if (EVP_PKEY_CTX_set_rsa_pss_saltlen(pkey_ctx, RSA_PSS_SALTLEN_AUTO) < 0) VERIFY_ERROR("Error setting RSASSA-PSS salt length"); // LCOV_EXCL_LINE } /* One-shot update and verify */ if (EVP_DigestVerify(mdctx, sig, slen, (const unsigned char *)head, head_len) != 1) VERIFY_ERROR("Failed to verify signature"); jwt_verify_sha_pem_done: if (old_sig != NULL) jwt_freemem(sig); BIO_free(bufkey); EVP_MD_CTX_destroy(mdctx); ECDSA_SIG_free(ec_sig); return jwt->error; } /* Export our ops */ struct jwt_crypto_ops jwt_openssl_ops = { .name = "openssl", .provider = JWT_CRYPTO_OPS_OPENSSL, .sign_sha_hmac = openssl_sign_sha_hmac, .sign_sha_pem = openssl_sign_sha_pem, .verify_sha_pem = openssl_verify_sha_pem, .jwk_implemented = 1, .process_eddsa = openssl_process_eddsa, .process_rsa = openssl_process_rsa, .process_ec = openssl_process_ec, .process_item_free = openssl_process_item_free, }; libjwt-3.2.3/libjwt/wincrypt/000077500000000000000000000000001510461717300161715ustar00rootroot00000000000000libjwt-3.2.3/libjwt/wincrypt/sign-verify.c000066400000000000000000000517301510461717300206050ustar00rootroot00000000000000/* Copyright (C) 2015-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include "jwt-private.h" /* Routines to support crypto in LibJWT using Windows crypto APIs. */ #define CERT_THUMBPRINT_STR_LEN 40 #define CERT_THUMBPRINT_HASH_LEN 20 #define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING) #define PEM_PUBLIC_KEY_HEADER "-----BEGIN PUBLIC KEY-----" #define CERT_STORE_PREFIX "cert:\\" static int get_cert_location( char *uri, int uri_len, DWORD *store_name, wchar_t **store_path, CRYPT_HASH_BLOB *thumbprint) { char *path; int path_len; char *sep; size_t store_name_len; size_t remainder_len; size_t thumbprint_len; char* thumbprint_str; char* store_path_mbs = NULL; size_t wchar_count; wchar_t* wchar_buf = NULL; errno_t ret; /* Certificate store path starts with cert:\ */ if (strncmp(uri, CERT_STORE_PREFIX, strlen(CERT_STORE_PREFIX))) return EINVAL; path = uri + strlen(CERT_STORE_PREFIX); path_len = uri_len - (int)strlen(CERT_STORE_PREFIX); sep = memchr(path, '\\', path_len); if (!sep) { ret = EINVAL; goto get_cert_location_done; } store_name_len = sep - path; if (!strncmp(path, "CurrentUser", store_name_len)) *store_name = CERT_SYSTEM_STORE_CURRENT_USER; else if (!strncmp(path, "LocalMachine", store_name_len)) *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE; else if (!strncmp(path, "CurrentService", store_name_len)) *store_name = CERT_SYSTEM_STORE_CURRENT_SERVICE; else if (!strncmp(path, "Services", store_name_len)) *store_name = CERT_SYSTEM_STORE_SERVICES; else if (!strncmp(path, "Users", store_name_len)) *store_name = CERT_SYSTEM_STORE_USERS; else if (!strncmp(path, "CurrentUserGroupPolicy", store_name_len)) *store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY; else if (!strncmp(path, "LocalMachineGroupPolicy", store_name_len)) *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY; else if (!strncmp(path, "LocalMachineEnterprise", store_name_len)) *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE; else { ret = EINVAL; goto get_cert_location_done; } remainder_len = path_len - (store_name_len + 1); store_path_mbs = (char*)jwt_malloc(remainder_len); if (!store_path_mbs) { ret = ENOMEM; goto get_cert_location_done; } if (memcpy_s(store_path_mbs, remainder_len, sep + 1, remainder_len)) { ret = EINVAL; goto get_cert_location_done; } sep = memchr(store_path_mbs, '\\', remainder_len); if (!sep) { ret = EINVAL; goto get_cert_location_done; } *sep = 0; thumbprint_str = sep + 1; thumbprint_len = remainder_len - (thumbprint_str - store_path_mbs); if (thumbprint_len != CERT_THUMBPRINT_STR_LEN) { ret = EINVAL; goto get_cert_location_done; } if (!CryptStringToBinaryA( thumbprint_str, CERT_THUMBPRINT_STR_LEN, CRYPT_STRING_HEX, thumbprint->pbData, &thumbprint->cbData, NULL, NULL)) { ret = EINVAL; goto get_cert_location_done; } /* Convert store_name to wide chars, which cert API requires. */ if (mbstowcs_s(&wchar_count, NULL, 0, store_path_mbs, 0)) { ret = EINVAL; goto get_cert_location_done; } wchar_buf = (wchar_t*)jwt_malloc(wchar_count * sizeof(wchar_t)); if (!wchar_buf) { ret = ENOMEM; goto get_cert_location_done; } if (mbstowcs_s(NULL, wchar_buf, wchar_count, store_path_mbs, _TRUNCATE)) { ret = EINVAL; goto get_cert_location_done; } *store_path = wchar_buf; ret = 0; get_cert_location_done: if (store_path_mbs) jwt_freemem(store_path_mbs); if (ret && wchar_buf) jwt_freemem(wchar_buf); return ret; } #define OPEN_PRIVATE_STORE_ERROR(__err) { ret = __err; goto open_private_key_from_store_done; } static int open_private_key_from_store( unsigned char* key, int key_len, HCERTSTORE* hCertStore_out, PCCERT_CONTEXT* pSignerCert_out, NCRYPT_PROV_HANDLE* hStorageProv_out, NCRYPT_KEY_HANDLE* hKey_out) { int ret = EINVAL; DWORD store_name; wchar_t* store_path = NULL; CRYPT_HASH_BLOB thumbprint; BYTE thumbprint_buf[CERT_THUMBPRINT_HASH_LEN]; DWORD keyProvInfoSize; HCERTSTORE hCertStore = NULL; PCCERT_CONTEXT pSignerCert = NULL; CRYPT_KEY_PROV_INFO *pKeyProvInfo = NULL; DWORD dwKeyFlags; NCRYPT_PROV_HANDLE hStorageProv = (NCRYPT_PROV_HANDLE)NULL; NCRYPT_KEY_HANDLE hKey = (NCRYPT_KEY_HANDLE)NULL; *hCertStore_out = NULL; *pSignerCert_out = NULL; *hStorageProv_out = (NCRYPT_PROV_HANDLE)NULL; *hKey_out = (NCRYPT_KEY_HANDLE)NULL; /* Break down cert path. */ thumbprint.pbData = thumbprint_buf; thumbprint.cbData = CERT_THUMBPRINT_HASH_LEN; ret = get_cert_location(key, key_len, &store_name, &store_path, &thumbprint); if (ret) goto open_private_key_from_store_done; /* Open the certificate store. */ if (!(hCertStore = CertOpenStore( CERT_STORE_PROV_SYSTEM, 0, (HCRYPTPROV_LEGACY)NULL, store_name | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG, store_path))) OPEN_PRIVATE_STORE_ERROR(ENOENT); /* * Get a pointer to the signer's certificate. * This certificate must have access to the signer's private key. */ if (!(pSignerCert = CertFindCertificateInStore( hCertStore, MY_ENCODING_TYPE, 0, CERT_FIND_HASH, &thumbprint, NULL))) OPEN_PRIVATE_STORE_ERROR(ENOENT); /* Get private key provider info. */ if (!(CertGetCertificateContextProperty( pSignerCert, CERT_KEY_PROV_INFO_PROP_ID, NULL, &keyProvInfoSize))) OPEN_PRIVATE_STORE_ERROR(ENOENT); if (!(pKeyProvInfo = (CRYPT_KEY_PROV_INFO *)jwt_malloc(keyProvInfoSize))) OPEN_PRIVATE_STORE_ERROR(ENOMEM); if (!CertGetCertificateContextProperty( pSignerCert, CERT_KEY_PROV_INFO_PROP_ID, pKeyProvInfo, &keyProvInfoSize)) OPEN_PRIVATE_STORE_ERROR(ENOENT); /* Open key using NCrypt. */ if (NCryptOpenStorageProvider( &hStorageProv, pKeyProvInfo->pwszProvName, 0) != ERROR_SUCCESS) OPEN_PRIVATE_STORE_ERROR(ENOENT); dwKeyFlags = NCRYPT_SILENT_FLAG | ((store_name == CERT_SYSTEM_STORE_LOCAL_MACHINE) ? NCRYPT_MACHINE_KEY_FLAG : 0); if (NCryptOpenKey( hStorageProv, &hKey, pKeyProvInfo->pwszContainerName, 0, dwKeyFlags) != ERROR_SUCCESS) OPEN_PRIVATE_STORE_ERROR(ENOENT); ret = 0; open_private_key_from_store_done: if (store_path) jwt_freemem(store_path); if (pKeyProvInfo) jwt_freemem(pKeyProvInfo); if (ret) { if (pSignerCert) CertFreeCertificateContext(pSignerCert); if (hCertStore) CertCloseStore(hCertStore, CERT_CLOSE_STORE_CHECK_FLAG); if (hKey) NCryptFreeObject(hKey); if (hStorageProv) NCryptFreeObject(hStorageProv); } else { *pSignerCert_out = pSignerCert; *hCertStore_out = hCertStore; *hKey_out = hKey; *hStorageProv_out = hStorageProv; } return ret; } #define OPEN_PUBLIC_STORE_ERROR(__err) { ret = __err; goto open_public_key_from_store_done; } static int open_public_key_from_store( unsigned char* key, int key_len, HCERTSTORE* hCertStore_out, PCCERT_CONTEXT* pSignerCert_out, BCRYPT_KEY_HANDLE* hKey_out) { int ret = EINVAL; DWORD store_name; wchar_t* store_path = NULL; CRYPT_HASH_BLOB thumbprint; BYTE thumbprint_buf[CERT_THUMBPRINT_HASH_LEN]; HCERTSTORE hCertStore = NULL; PCCERT_CONTEXT pSignerCert = NULL; BCRYPT_KEY_HANDLE hKey = (BCRYPT_KEY_HANDLE)NULL; *hCertStore_out = NULL; *pSignerCert_out = NULL; *hKey_out = (BCRYPT_KEY_HANDLE)NULL; /* Break down cert path. */ thumbprint.pbData = thumbprint_buf; thumbprint.cbData = CERT_THUMBPRINT_HASH_LEN; ret = get_cert_location(key, key_len, &store_name, &store_path, &thumbprint); if (ret) goto open_public_key_from_store_done; /* Open the certificate store. */ if (!(hCertStore = CertOpenStore( CERT_STORE_PROV_SYSTEM, 0, (HCRYPTPROV_LEGACY)NULL, store_name | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG, store_path))) OPEN_PUBLIC_STORE_ERROR(ENOENT); /* * Get a pointer to the signer's certificate. * This certificate must have access to the signer's private key. */ if (!(pSignerCert = CertFindCertificateInStore( hCertStore, MY_ENCODING_TYPE, 0, CERT_FIND_HASH, &thumbprint, NULL))) OPEN_PUBLIC_STORE_ERROR(ENOENT); if (!CryptImportPublicKeyInfoEx2(X509_ASN_ENCODING, &pSignerCert->pCertInfo->SubjectPublicKeyInfo, 0, NULL, &hKey)) OPEN_PUBLIC_STORE_ERROR(EINVAL); ret = 0; open_public_key_from_store_done: if (store_path) jwt_freemem(store_path); if (ret) { if (pSignerCert) CertFreeCertificateContext(pSignerCert); if (hCertStore) CertCloseStore(hCertStore, CERT_CLOSE_STORE_CHECK_FLAG); if (hKey) BCryptDestroyKey(hKey); } else { *pSignerCert_out = pSignerCert; *hCertStore_out = hCertStore; *hKey_out = hKey; } return ret; } #define OPEN_PUBLIC_PEM_ERROR(__err) { ret = __err; goto open_public_key_from_pem_done; } static int open_public_key_from_pem( unsigned char* key, int key_len, BCRYPT_KEY_HANDLE* hKey_out) { int ret = EINVAL; BYTE* pbPublicKeyDer = NULL; DWORD cbPublicKeyDer; PCERT_PUBLIC_KEY_INFO pbPublicKeyInfo = NULL; DWORD cbPublicKeyInfo; BCRYPT_KEY_HANDLE hKey = (BCRYPT_KEY_HANDLE)NULL; /* Convert public key from PEM to DER. */ if (!CryptStringToBinaryA( key, key_len, CRYPT_STRING_BASE64HEADER, NULL, &cbPublicKeyDer, NULL, NULL)) OPEN_PUBLIC_PEM_ERROR(EINVAL); if (!(pbPublicKeyDer = (BYTE *)jwt_malloc(cbPublicKeyDer))) OPEN_PUBLIC_PEM_ERROR(ENOMEM); if (!CryptStringToBinaryA( key, key_len, CRYPT_STRING_BASE64HEADER, pbPublicKeyDer, &cbPublicKeyDer, NULL, NULL)) OPEN_PUBLIC_PEM_ERROR(EINVAL); /* Create public key info. */ if (!CryptDecodeObjectEx( X509_ASN_ENCODING, X509_PUBLIC_KEY_INFO, pbPublicKeyDer, cbPublicKeyDer, 0, NULL, NULL, &cbPublicKeyInfo)) OPEN_PUBLIC_PEM_ERROR(EINVAL); if (!(pbPublicKeyInfo = (PCERT_PUBLIC_KEY_INFO)jwt_malloc(cbPublicKeyInfo))) OPEN_PUBLIC_PEM_ERROR(ENOMEM); if (!CryptDecodeObjectEx( X509_ASN_ENCODING, X509_PUBLIC_KEY_INFO, pbPublicKeyDer, cbPublicKeyDer, 0, NULL, pbPublicKeyInfo, &cbPublicKeyInfo)) OPEN_PUBLIC_PEM_ERROR(EINVAL); /* Import public key into CNG. */ if (!CryptImportPublicKeyInfoEx2( X509_ASN_ENCODING, pbPublicKeyInfo, 0, NULL, &hKey)) OPEN_PUBLIC_PEM_ERROR(EINVAL); *hKey_out = hKey; ret = 0; open_public_key_from_pem_done: if (pbPublicKeyDer) jwt_freemem(pbPublicKeyDer); if (pbPublicKeyInfo) jwt_freemem(pbPublicKeyInfo); if (ret) { if (hKey) BCryptDestroyKey(hKey); } else { *hKey_out = hKey; } return ret; } static int is_public_key_pem(unsigned char* key, int key_len) { if (key_len < strlen(PEM_PUBLIC_KEY_HEADER)) return 0; return !memcmp(key, PEM_PUBLIC_KEY_HEADER, strlen(PEM_PUBLIC_KEY_HEADER)); } #define SIGN_HMAC_ERROR(__err) { ret = __err; goto jwt_sign_sha_hmac_done; } static int wincrypt_sign_sha_hmac(jwt_t *jwt, char **out, unsigned int *len, const char *str) { int ret = EINVAL; LPCWSTR alg; BCRYPT_ALG_HANDLE hAlg = (BCRYPT_ALG_HANDLE)NULL; BCRYPT_HASH_HANDLE hHash = (BCRYPT_HASH_HANDLE)NULL; BYTE* pbHashObject = NULL; DWORD cbHashObject; BYTE* pbHashValue = NULL; DWORD cbHashValue; DWORD cbDummy; /* Lookup algorithm type. */ switch (jwt->alg) { /* HMAC */ case JWT_ALG_HS256: alg = BCRYPT_SHA256_ALGORITHM; break; case JWT_ALG_HS384: alg = BCRYPT_SHA384_ALGORITHM; break; case JWT_ALG_HS512: alg = BCRYPT_SHA512_ALGORITHM; break; default: /* For now, do not support ECC on Windows */ SIGN_HMAC_ERROR(EINVAL); } /* Hash the JWT using the selected algorithm, and with MAC. */ if (BCryptOpenAlgorithmProvider( &hAlg, alg, NULL, BCRYPT_ALG_HANDLE_HMAC_FLAG) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); if (BCryptGetProperty( hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbHashObject, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); if (!(pbHashObject = (BYTE*)jwt_malloc(cbHashObject))) SIGN_HMAC_ERROR(ENOMEM); if (BCryptCreateHash( hAlg, &hHash, pbHashObject, cbHashObject, jwt->key, jwt->key_len, 0) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); if (BCryptGetProperty( hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHashValue, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); if (!(pbHashValue = (BYTE*)jwt_malloc(cbHashValue))) SIGN_HMAC_ERROR(ENOMEM); if (BCryptHashData( hHash, (PUCHAR)str, (ULONG)strlen(str), 0) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); if (BCryptFinishHash( hHash, pbHashValue, cbHashValue, 0) != ERROR_SUCCESS) SIGN_HMAC_ERROR(EINVAL); /* Done! */ *out = pbHashValue; *len = cbHashValue; ret = 0; jwt_sign_sha_hmac_done: if (hHash) BCryptDestroyHash(hHash); if (hAlg) BCryptCloseAlgorithmProvider(hAlg, 0); if (pbHashObject) jwt_freemem(pbHashObject); /* Only free result string if function failed. */ if (ret && pbHashValue) jwt_freemem(pbHashValue); return ret; } #define SIGN_PEM_ERROR(__err) { ret = __err; goto jwt_sign_sha_pem_done; } static int wincrypt_sign_sha_pem(jwt_t *jwt, char **out, unsigned int *len, const char *str) { int ret = EINVAL; LPCWSTR alg; int isECDSA = 0; HCERTSTORE hCertStore = NULL; PCCERT_CONTEXT pSignerCert = NULL; NCRYPT_PROV_HANDLE hStorageProv = (NCRYPT_PROV_HANDLE)NULL; NCRYPT_KEY_HANDLE hStoreKey = (NCRYPT_KEY_HANDLE)NULL; BCRYPT_ALG_HANDLE hAlg = (BCRYPT_ALG_HANDLE)NULL; BCRYPT_HASH_HANDLE hHash = (BCRYPT_HASH_HANDLE)NULL; BYTE* pbHashObject = NULL; DWORD cbHashObject; BYTE* pbHashValue = NULL; DWORD cbHashValue; DWORD cbDummy; BCRYPT_PKCS1_PADDING_INFO paddingInfo; BYTE* pbSignature = NULL; DWORD cbSignature; DWORD ncryptSignFlags; /* Lookup algorithm type. */ switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = BCRYPT_SHA256_ALGORITHM; isECDSA = 0; break; case JWT_ALG_RS384: alg = BCRYPT_SHA384_ALGORITHM; isECDSA = 0; break; case JWT_ALG_RS512: alg = BCRYPT_SHA512_ALGORITHM; isECDSA = 0; break; /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = BCRYPT_SHA256_ALGORITHM; isECDSA = 1; break; case JWT_ALG_ES384: alg = BCRYPT_SHA384_ALGORITHM; isECDSA = 1; break; case JWT_ALG_ES512: alg = BCRYPT_SHA512_ALGORITHM; isECDSA = 1; break; default: SIGN_PEM_ERROR(EINVAL); } /* * Open private key in certificate store. * * Note that in Windows crypto APIs, there are no obvious ways to * import a generic private key from a PEM encoded string, nor is * it desirable on Windows platforms to have private keys outside * of the Windows certificate store. Therefore, only support keys * in the certificate store. */ ret = open_private_key_from_store( jwt->key, jwt->key_len, &hCertStore, &pSignerCert, &hStorageProv, &hStoreKey); if (ret) goto jwt_sign_sha_pem_done; /* Hash the JWT using the selected algorithm. */ if (BCryptOpenAlgorithmProvider( &hAlg, alg, NULL, 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (BCryptGetProperty( hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbHashObject, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (!(pbHashObject = (BYTE*)jwt_malloc(cbHashObject))) SIGN_PEM_ERROR(ENOMEM); if (BCryptCreateHash( hAlg, &hHash, pbHashObject, cbHashObject, NULL, 0, 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (BCryptGetProperty( hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHashValue, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (!(pbHashValue = (BYTE*)jwt_malloc(cbHashValue))) SIGN_PEM_ERROR(ENOMEM); if (BCryptHashData( hHash, (PUCHAR)str, (ULONG)strlen(str), 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (BCryptFinishHash( hHash, pbHashValue, cbHashValue, 0) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); /* Sign the hash using the private key. */ ncryptSignFlags = NCRYPT_SILENT_FLAG | (isECDSA ? 0 : NCRYPT_PAD_PKCS1_FLAG); paddingInfo.pszAlgId = alg; if (NCryptSignHash( hStoreKey, (isECDSA ? NULL : &paddingInfo), pbHashValue, cbHashValue, NULL, 0, &cbSignature, ncryptSignFlags) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); if (!(pbSignature = (BYTE*)jwt_malloc(cbSignature))) SIGN_PEM_ERROR(ENOMEM); paddingInfo.pszAlgId = alg; if (NCryptSignHash( hStoreKey, (isECDSA ? NULL : &paddingInfo), pbHashValue, cbHashValue, pbSignature, cbSignature, &cbDummy, ncryptSignFlags) != ERROR_SUCCESS) SIGN_PEM_ERROR(EINVAL); /* Done! */ *out = pbSignature; *len = cbSignature; ret = 0; jwt_sign_sha_pem_done: if (hHash) BCryptDestroyHash(hHash); if (hAlg) BCryptCloseAlgorithmProvider(hAlg, 0); if (hStoreKey) NCryptFreeObject(hStoreKey); if (hStorageProv) NCryptFreeObject(hStorageProv); if (pSignerCert) CertFreeCertificateContext(pSignerCert); if (hCertStore) CertCloseStore(hCertStore, CERT_CLOSE_STORE_CHECK_FLAG); if (pbHashObject) jwt_freemem(pbHashObject); if (pbHashValue) jwt_freemem(pbHashValue); /* Only free result string if function failed. */ if (ret && pbSignature) jwt_freemem(pbSignature); return ret; } #define VERIFY_PEM_ERROR(__err) { ret = __err; goto jwt_verify_sha_pem_done; } static int wincrypt_verify_sha_pem(jwt_t *jwt, const char *head, unsigned char *sig, int sig_len) { int ret = EINVAL; LPCWSTR alg; int isECDSA = 0; BYTE* pbSignature = NULL; DWORD cbSignature; HCERTSTORE hCertStore = NULL; PCCERT_CONTEXT pSignerCert = NULL; BCRYPT_ALG_HANDLE hHashAlg = (BCRYPT_ALG_HANDLE)NULL; BCRYPT_KEY_HANDLE hKey = (BCRYPT_KEY_HANDLE)NULL; BCRYPT_HASH_HANDLE hHash = (BCRYPT_HASH_HANDLE)NULL; BYTE* pbHashObject = NULL; DWORD cbHashObject; BYTE* pbHashValue = NULL; DWORD cbHashValue; DWORD cbDummy; BCRYPT_PKCS1_PADDING_INFO paddingInfo; /* Lookup algorithm type. */ switch (jwt->alg) { /* RSA */ case JWT_ALG_RS256: alg = BCRYPT_SHA256_ALGORITHM; isECDSA = 0; break; case JWT_ALG_RS384: alg = BCRYPT_SHA384_ALGORITHM; isECDSA = 0; break; case JWT_ALG_RS512: alg = BCRYPT_SHA512_ALGORITHM; isECDSA = 0; break; /* ECC */ case JWT_ALG_ES256: case JWT_ALG_ES256K: alg = BCRYPT_SHA256_ALGORITHM; isECDSA = 1; break; case JWT_ALG_ES384: alg = BCRYPT_SHA384_ALGORITHM; isECDSA = 1; break; case JWT_ALG_ES512: alg = BCRYPT_SHA512_ALGORITHM; isECDSA = 1; break; default: VERIFY_PEM_ERROR(EINVAL); } pbSignature = sig; cbSignature = sig_len; /* Open handle to public key. */ if (is_public_key_pem(jwt->key, jwt->key_len)) { ret = open_public_key_from_pem( jwt->key, jwt->key_len, &hKey); } else { ret = open_public_key_from_store( jwt->key, jwt->key_len, &hCertStore, &pSignerCert, &hKey); } if (ret) goto jwt_verify_sha_pem_done; /* Hash data. */ if (BCryptOpenAlgorithmProvider( &hHashAlg, alg, NULL, 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); if (BCryptGetProperty( hHashAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbHashObject, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); if (!(pbHashObject = (BYTE*)jwt_malloc(cbHashObject))) VERIFY_PEM_ERROR(ENOMEM); if (BCryptCreateHash( hHashAlg, &hHash, pbHashObject, cbHashObject, NULL, 0, 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); if (BCryptGetProperty( hHashAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHashValue, sizeof(DWORD), &cbDummy, 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); if (!(pbHashValue = (BYTE*)jwt_malloc(cbHashValue))) VERIFY_PEM_ERROR(ENOMEM); if (BCryptHashData( hHash, (PUCHAR)head, (ULONG)strlen(head), 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); if (BCryptFinishHash( hHash, pbHashValue, cbHashValue, 0) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); /* Verify hash against signature. */ paddingInfo.pszAlgId = alg; if (BCryptVerifySignature( hKey, (isECDSA ? NULL : &paddingInfo), pbHashValue, cbHashValue, pbSignature, cbSignature, (isECDSA ? 0 : BCRYPT_PAD_PKCS1)) != ERROR_SUCCESS) VERIFY_PEM_ERROR(EINVAL); /* Signature valid! */ ret = 0; jwt_verify_sha_pem_done: if (pbHashObject) jwt_freemem(pbHashObject); if (pbHashValue) jwt_freemem(pbHashValue); if (hHash) BCryptDestroyHash(hHash); if (hKey) BCryptDestroyKey(hKey); if (hHashAlg) BCryptCloseAlgorithmProvider(hHashAlg, 0); if (pSignerCert) CertFreeCertificateContext(pSignerCert); if (hCertStore) CertCloseStore(hCertStore, CERT_CLOSE_STORE_CHECK_FLAG); return ret; } int wincrypt_process_eddsa(json_t *jwk, jwk_item_t *item); int wincrypt_process_rsa(json_t *jwk, jwk_item_t *item); int wincrypt_process_ec(json_t *jwk, jwk_item_t *item); void wincrypt_process_item_free(jwk_item_t *item); /* Export our ops */ struct jwt_crypto_ops jwt_gnutls_ops = { .name = "wincrypt", .provider = JWT_CRYPTO_OPS_WINCRYPT, .sign_sha_hmac = wincrypt_sign_sha_hmac, .sign_sha_pem = wincrypt_sign_sha_pem, .verify_sha_pem = wincrypt_verify_sha_pem, /* Needs to be implemented */ .jwk_implemented = 0, .process_eddsa = wincrypt_process_eddsa, .process_rsa = wincrypt_process_rsa, .process_ec = wincrypt_process_ec, .process_item_free = wincrypt_process_item_free, }; libjwt-3.2.3/tests/000077500000000000000000000000001510461717300141615ustar00rootroot00000000000000libjwt-3.2.3/tests/cli/000077500000000000000000000000001510461717300147305ustar00rootroot00000000000000libjwt-3.2.3/tests/cli/all.json000066400000000000000000000564701510461717300164070ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kty": "oct", "k": "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1JR2tBZ0VCQkRCZUxDZ2FwalptdlRhdE1IYVlYM0EwMiswWXMzVHI4a2RhK0U5REZubUNTaUNPRWlnNTE5ZlQKMTNlZGVVOFlkRHVnQndJQW1Db3JuaG9saW9OaUFBU2liRUwzSnh6d0NSZExCWkNtN1dRM2tXYURMK3dQOG9tbwo0bUR2MCs5ZTR1SlZRZjN4d0V2K2p5d05VSCt3YlBNPQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCg", "alg": "HS512" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhZd0VBWUlBbUNvcm5ob2xpb0ZLNEVFQUNJRFlnQUVvbXhDOXljYzhBa1hTd1dRcHUxa041Rm1neS9zRC9LSgowZUpnNzlQdlh1TGlWVUg5OGNCTC9vOHNEVkIvc0d6egotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0K", "alg": "HS512" }, { "key_ops": [ "sign" ], "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU", "d": "wDvSCv8kxkqIVTYPpgEm4Efs6lKzf-95W8Qej4F1yEM" }, { "use": "sig", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU" }, { "key_ops": [ "sign" ], "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE", "d": "zTih0G_1ZdZupZhb7SgOyqsoe2dudSWNPtM4Vt2OYJk" }, { "use": "sig", "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE" }, { "key_ops": [ "sign" ], "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz", "d": "XiwoGqY2Zr02rTB2mF9wNNvtGLN06_JHWvhPQxZ5gkogjhIoOdfX09d3nXlPGHQ7" }, { "use": "sig", "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz" }, { "key_ops": [ "sign" ], "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE", "d": "p6rxb2PoAISjCCTxpTQOxv5arJ_N6Xibr0eyOAnlWcVk34m1W5323_6TcPGTtFQgEX9TWjNcp9W8HIuIyRdLnsI" }, { "use": "sig", "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE" }, { "key_ops": [ "sign" ], "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" }, { "use": "sig", "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM" }, { "key_ops": [ "sign" ], "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "d": "nsYcSyibFeqtBBmVUh3S_xGTNQJr0IGwVmU6gTd8Xn-gtb-PxxzPhJnUXZ_UdkPRsz2SY0d8On-t" }, { "use": "sig", "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "x": "J5dXafOvQWBrUabIHVqTbiDU4Jq7RtozL5jopRdiUGp-rs0Kz-f0-2r7scLjclKO9q8r3m9_YGAA" }, { "key_ops": [ "sign" ], "kty": "RSA", "n": "tY1EN770i5YmM04J-5TJr4eVjTtmJ7qVZdg46RjMVL9kXmNUSjRZKOoI798IoGhHCOSUOs26lxnegazKIeADuFOpgWXWwcC9jGrCly30zho_pUAHA8LEZjaQtuZatT9XyRSQC6inHIyRZrqq7hzhyFpcL-7sqwITtTSPADVRjPk", "e": "AQAB", "d": "QcjNVjHAJLAkaWS2o013gz3qx8ElM_Ic3klp3bSZnX-4W6c8TKMJR5T95gT3-D-wtZ01xNT07nl2MaCtoXatgcku7vPaarOqO_VGE99RFEenHKNg90mx1DqXglqGbGwUSHUleZpNzsbHzn5Kp9G9F-pNPxiR2uGWY6GKq2JAPfE", "p": "6l9vSEey8h7zq3utvd62pfGrWbPeCIdN4qs_YtfAL2ZOQqBySZVB82wS73q_6EXCcFByMek5UZ6BiXczxIxgHQ", "q": "xk4MF3FBTRsG7V-LFZYMJg6QMYhRx40TMRbtcGwJ9bqPICMT6dyer4p_YJ-M-JBn2V3ykFcjNvM148tNZTqBjQ", "dp": "nSUcElSwsRL7wpEMr3Ay-xUNFPo693DxUfgMahPLMnzgIGBAAQJo0_Q0xgmBvxV3B6OIzdpYqlci967LMRAGKQ", "dq": "t4O4quUTYnC1i2yUwOg32-w0QrJ9w-bpMM-f8h75ZJ8-HqZ3oj-Z1qeb02Yzxj-U61KGzE7nds3CPEmDGT_4bQ", "qi": "3ckWVl2ALDerVMOZTBBjcUpiGH9a43WhU5_od7OE-F24XDWZlbr3AFlFh1FmS8eWk-wrxs9pXPZG7eBpKlJYGg" }, { "key_ops": [ "sign" ], "kty": "RSA", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB", "d": "D8dTnkETSSjlzhRuI9loAtAXM3Zj86JLPLW7GgaoxEoTn7lJ2bGicFMHB2ROnbOb9vnas82gtOtJsGaBslmoaCckp_C5T1eJWTEb-i-vdpPpwZcmKZovyyRFSE4-NYlU17fEv6DRvuaGBpDcW7QgHJIl45F8QWEM-msee2KE-V4Gz_9vAQ-sOlvsb4mJP1tJIBx9Lb5loVREwCRy2Ha9tnWdDNar8EYkOn8si4snPT-E3ZCy8mlcZyUkZeiS_HdtydxZfoiwrSRYamd1diQpPhWCeRteQ802a7ds0Y2YzgfFUaYjNuRQm7zA__hwbXS7ELPyNMU15N00bajlG0tUOQ", "p": "5y8tNZdtDp3lugNnCAyA8mIcuTu7rpbGhLSUXlJXIxAzJIp_G--u6tlWR2__92R_oqZ0WAclFMmFIXTrNg2ERhngHm5x_MKU0-BQmMVLCFKQ3we0cH3QTjYGinsEyc_xT7MMtWHtG-R9nOr1YpthWd9x0HKGd8LxRashlZzM6Ts", "q": "18S_ecqMVBimvLzM3BNwp9NbM4dHRatLKnBaTPh1i1a_OAiLbhvR-i9CmkrRBCDoibMTlaXF3xRYbCbzhoTAOA0E8B-Frl5l6dT6FTA5VeuT2Kr4c8C-PkIb2Ttm7KxLpyE1zplOwiOpIpZwDdy7j-B26mYKF_ZajyN9VWMy7qU", "dp": "YRhyT3DSz_HHG1H0gu_ldGd6kt2gnNocdH33VooUqNhT8oPskMog1-gCEazbf4cJCEIK2THfBBUDQiL96szQgjS56W4Pl84NfdNXZmJuegdbayCsSxa8VyzfoGe8ghpAym1z5_ZCBJX5n98awphp0bpD7f07tq78cHtIdrLNaSM", "dq": "yC0XOyWn1Old32IFaPN8I6cZSI_rln4ZaRD9JcWoP5JGKvT6bjfPMZ2g28Ynbf4d3opN1BsMnS6h7gyhB56nOhkSCLgl7KRVRn-5V-j6eHTrICtV_wXFObtZXMsYbOBX-4D7C2X9xG0TICyTXrj3Jb8oc8Qg_yQl1gAl6g7zFKU", "qi": "ERMrkFR7KGYZG1eFNRdVmJMq-Ibxyw8ks_CbiI-n3yUyk1U8962ol2Q0T4qjBmb26L5rrhNQhneM4e8mo9FXLlQapYkPvkdrqW0Bp72A_UNAvcGTmN7z5OCJGMUutx2hmEAlrYmpLKS8pM_p9zpKtEOtzsP5GMDYVlEp1jYSjzQ" }, { "use": "sig", "kty": "RSA", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB" }, { "key_ops": [ "sign" ], "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB", "d": "IwY78h7MEdL6Z5B1yvDxOOhgujS1xAW9NbYb4VXfl8uzfyRIEPfJFgMZ8V5l1aa8WIXBGxGqMvC-YtEBYzfsuPtgB0tIX1x3t2Hi-BGlnbHuPQkjZKXzDpbRF7JO7PAn00jx87JRp1BLkvhSLwywpTi7BnwNjWnlCFrdymydnW74zpJHchH77cnHdx4jCQHx93M-0bmYvs1z8TvZ5hMPHdNEM4adVIps8wsNZV_KJyDjbsaeWnE1opCxynsOsJMjvirk3W0s2X3aBk0VEgo9OuRxLyZaiOgm1avcedZ-cFmdhFvF0HCaxMH4Mz1DYzn-Pf6bnpcaiYCLfbkkjxPCRB1bUjsCsQsRs33os8VBvfKePK_B_Y5bDsJTh_vfJiVflqgckdr2R_RDQ50BLL-Ep44oAjt3wh9X85ccAQXoVKbfSwLADh2LsZFV_gsiVLWjGavvV43zfRzwubVsH_2w2H7gfXO3JoXHuNX3O-5W3hfrMxFQ7Ozjb3rcq28rkajTloG7fBVSlNmQc33cfvvKCLddN-eL6xK4k_xqd92DC-DEfqQgTKsVszDlmViRMOMX2Ebnnve5xsuAyhddFdRamrrrZ2gWO-WvTR5NMo91viluqWxbDWWqAnzpvY2XpAeWvcyNux57UIqWsbuJ6RDBjAyVsbvFRIzBxNbKfEzR5uE", "p": "8FFVC2zHBS8-o3i8niu3NY5ncJtmkT-5hpag567rWfP5Vzrvuih0BAW4t0gHCQCcS8ur_pQ7m72Cf8FA60a8S2djetTq8xbf1jQ0aSuqmJtRBH1DT2qKZT6OHY9EOhKZpOQzFPk_rscHHVH9q8PDvHVaz85dwRbb1D8EqRDDcvbqpyWwwMWkgndx0I6qV9GTcK6HzCtJIZHQsTl1k2IEdheawhZrXYlPEI1YQbR44lxxeBVH-P-1dEhiEnQQwj9dzlfPseqY5kf81ST4YZZPosZeQ4FyOu_IxsJqBmO27puOkmYXfbbhTMkSJSdeS7BatqQnbUBi10rpZCP2vDbV2Q", "q": "1uKlFl2FfsEQfq7d7GiNqNrEYnxK52lH19Yvgvfy27LtnDppBESr5ULPZcCFZ9kdY-8UxYoNZjGnZ-HVBEFhbOI1X606eLsvI4rnM-HG33cEYSVIuceUfc-OHkKuWLvOS2fE98ULgjVNItYAvN1FfiUpkt05ojp_4OPZMWHmdDV24u4_BDzqr9p6A-tmhKPHtyxdaX2yIXM6nFNx4vlmhgLZ-62xprLWVuT5SCo30PonKtsbgpkJ_bE_x_gacMH8J-NEGstt_oDsvHvvT3RGJiGveNTQPZ2mKmkZaZ5x8TTpk7LEw56PCn21pftBuH0bg_aMvC4fWfh47uVTgJa03Q", "dp": "FjmfYOAdg9g7tcibwREP748M9_gXQ0WeddkGZobh0z7iB3Q26YOGPzz8OU8a_3Uj_0qFzJSO8rdTE1efFmNDVMHqDFkWpYavCtNnKXbVXym2E3E2QWj8BaMEZ61xROGlff9wzfbDMfnMKaUEjdccChjcXi2atBnWGMn_N1eKi95UE0NEFn_w1_QN_ZjEHj0OorQxcOtr5wPiRhGnUwsUmItUT7DdGxhwzHoV-HWlXGHqSI3HSzry4B81mrlLN3u-xC-Q0MZ-f4WW12uE4RmSod4wp5OYKeU1L1SZk5-zMlwGknmIoKLCMWTDHdaHPP7BVPTXhJ4YxgpyjUVaM0vq-Q", "dq": "NOGRvu9E6uyYIpTmCEeylNtBePsdc9V02KjdCF38ZhSiZM_7CBHeO401fNTj_6pukSlE81gF9CBEEkyBH4r3btQ8Tk9TFGL8NsL4IsxtJJElgsKqIw36fPuW_dtrDGsrWWMwFcloC6MSWIBRrijF8UUz9fB7PnEnBzELQhvVmsONfksjNufG2X_qhwxnLj0f6PQCCPPl4lV5Fv9yB2lY0aHiAw27qkpYdQnkTt4U3lixStqg6oK-8q-sAooL97PFWguTtwRZDUis-bWGLwduO_QOOq4kkQU63zT-C__yCmn7EV3tDjb2_J3zFeW_RqeDHfaOq8Ct9nYvTJsi8YIl", "qi": "z-UlWCzIiVTW6D8OZ4ZlCa2HQlB2SBWyTu_EzrvfL_SzIvEzdaT_UFvJJD-VwhyQU3jeQBnN71sc49i2Iu--pvcRmkryKXXfctqDN13Oxe8qIzzG70YSUZNJxoag2bJWTm8vyzpwod7EHQJ7TLVGLbcrLANjpFSCpyVjJWnIFFlisCbgTbi-hGtYg65xhvTKM54wlXimYTObx434-q3pBzrRmX6LO-UMhryoyruSwVVyQHRFHfiKqRrzLQCErhXXNm9D1kQ2U7a5SP9ZH78Lg1ZZFi1-wphTzhe5LLci5R_BoEcfJyGbKdrV6eKd-Jy0Ie9NleUNZiWnlR_wgNet3g" }, { "use": "sig", "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB" }, { "key_ops": [ "sign" ], "kty": "RSA", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB", "d": "azXNy3iyhfZRIc_2vFbWt1nQfRUzI7KjIqebNdqOIXogFRX1VMouao_PGaXC0R25wAk-JpCiKEp8lyNFtZX0CuFyT6w2Oi6F_oEApGCDq_3chlSEjdGgkYoPE7fiUtTG7YejoEOmgIfIEx1oj24TKDZaXR_KmK_a0fJVPnXNhmfW7C3eoSK7qEdCtRKkOgXDGd7pJuXebuSZJ4uxUAx1OAbAPa1-ss73Rt0LJu5zdbsz1uV7ejOQIY2qJgjRBSgcMaBEoYQc-8F9VdvZhuUC5LKG1pE1-hFq9tXz_aK6QsiZwhLxuvc6Hoyy2L_9G39zZvI2LifW2tKRXqe0izRJmUdYu6AbfP0XUWC_ckUX0qrNBL9wkqLgg-BkLd5KmP-GaENg0VisNXhBybeca1fgJAhW7csJwXi1Yfgsw79gID0AFI2l7oSO4lqUe834dyW2mbmtQ-xnDTconq4VDaGnvf_d_l4qpzxEB-_y48UC4cIlStOlgiFYf02ASH9VcGKwaxLIoNuLgI3mo8ds2x23qWzqg2MCMxjfk3oV0blvOA6Bi2SAlLVj8w-IprWahDY6_WFNiKTMb8uvFSluksjlmxvCUhQCi7kfTGWlvy3UpaKuhoL_P7LD5zPr0OITJMIpUG2_Vd9ELjlAcwZtJqYAeJCzIxm3Uxm03WobgNQAabShrQCpUF-sZEqOPfQIa4bpRk-IzboCzdBBuQw9S8H1-yI_R718EvbmS3QhKAG6C6BRbafo-SLTfMGKARMACqq68w2FNYLblodBYGOdSf7LeSc8g6uA9UPncMfg06HOmkw_lIaOVseJG006u9LsUE6obCzNKGy5vtz0gCawbuc-S5ZaR3tE18Nu3ukNtZVv-L-UThAlVn_QDm4uMUmNy6Uxn7rta98auPE18InaVKJEDAFJ_pljX_XI6M0Nnz-lJfrlYTqPWjQtazaoohJt-OaVeK8MLOzRfu1FLllv8w2I1VXZR2rEW0UiwOC7-q5PgZE2qo7pHFnG_XfnP64vxa3I4Bv-a6zAbga1fgBbvTooRgqf6EExklZyfipMCtpnbG4cGht__zwUOvhUn6POHCgGO3OYhXjr8ArUhg2oQwGyUkGlzQGLGeopocFCbDMb7i-kGMhuigwKLjBMUF6U3TdC532wse0DPyDHBCLyxD4dPiPvFspgcNaw7x6sVWB9vN2JxXUJVGtnIrHAZQ2evGDtIeJnyFhmQ3Fa8RF-519xHYyX6Vu1KGEI1yT-ALSkUvYycUip4zyT70-GdknExutxIWtEMVpfXzxIJVt9S6gm8pUZ73OHVByUV92FgQCWPXnkjVPRBU_nnmav05YqCikvPx5SOVV_r64h5eNklhelmQ", "p": "586CvRRJQLPsOzFOjH6k0aCQOdvi5MwuLkdaBnAKOZRGiXtVFV_QwnXELmIiDCcPCLXagZ5R9XKwQp8HnzgvbGii2EjOFZ0GQC9FtOXX-E5vpFrg8eYRrjCAHB2yZ-B_1QrLOYbJhZZfaSZ58WC0jrrJqa1zvauBjy2EdtWykIbCV29UWdzIm0kH3Tgi0f3chgt7voOMHJ87jknE4jGLYbRM4Gje92Gi3WWymTSwN3ZuqWZvWdjPTuz2dk2T6sGusyN4cXTjmRy8yDMgxifJkhyxshW1ZHIK_6RacDi0w562rhz9kRRvbwtK9copeNaudQpvUJL-aPtVWc4fKNNatpaFhhsHo1jTOdMvx2Mn7AxDreUiTuUO2gDEJu7_LR7MhSdaXBVUUQVFNZXwHm0tVM1OH7rylU-OBNUOjb14zaClRtZ_97GoQIgRXQRqJ4K6nXFwGXycyYc4bZt2-tS4HVjUPViT4hZr4JXKeUSfY_rzE3i9QjLhguKaRXJexh8TxGMKg1DxMUv8kEYS4Dt5V1ZHQnGwN_lRR91B8OoreelOQTX4YIfi7ZWBaeNqBK4YRTQ5k2pHIi3THpFKhyQQGXXuAcwUcxhdOOWoVmlM37Qmfty_P-Jac8z7Gos4aXDRS0NXfkLLCFGWzhoQZ0jh_p34xiF3cO0J94Wu_xHJPsM", "q": "xfuqeOX2Q_KoDxhlQUd7_yYVhIJs9fn-59W3nkNLAD3CxxqKsbZ8RMo7bF67ibTM72JKE6_MTJ1OzZIMy2XW1Id_iHjcd1suDV6R88wOZTvqk-ew87RsIf5z7WQ--FpcuEBQ8E0GOFTdK5owfm9EYEkikKsDO7i0IqcA_npBmgnvTYIAC29tT9lQaX2VXXqZyATQFWNBVWqzWyuejRZO1Xpi7gnihE7PwojsF9u-rpSFoSs2lvSbUFvkgTF1s2OHjcSi38Xv5aig4pKH2TOnLwrOuCuYjSQJFHpuJuH3WhjrpIMkybCw1CLhqMqs1SY_SqVAdGhfDhDU632R5r8MJqubSi7qPCE2VLKXnU82tkyA3XpIlHWwCyh5HW1KZB1BWK7yJxiO8itpYOLFJfKL3zpz4onlAFGjUYzHEO4ZVqFJOOjVyPU-z-yqr4lGociTCW3wng66OXDPGPL2mv-iZnDj2IXUYa4LAgAolkynnbpOQBihXMLAIQu_5kZ1VF-mjY0Sov0nx-_8T34Ulu9u-zFMguOGSS3ZdMaWrO3Uxxvn-JebOZ7pZ3RLbaLYwb67kWV5TcLaoB6c5Tv-XViBJsx7ewnpJAN--kIs_Sdky_ZwzazRmvmay9-qpFoNsyyGBxjaFWAguHEgX7gU_BnJ9_WUMqk1Nysby0Qf91N7wi0", "dp": "XpSQG33Pdarz1CMGHaT-stmEf1cMeLYmkZNjVAUa5uts7GN6D8KMdwt-BD7eDX9STweEJCbo4fDtogEpJvnRv7Xh28W48HClQEMJegnd2N6IBtNdvNVWmXAIlXA4ftHG1rIUwWARkYQNYeXlE2uVwDbOWYEAHH-B2V2FEseWmAmj-fDexdujrlhZ8RUaf_vIopjE4LLj1DnUHvZScsgsSq06QMYJU35u6U65VHF_BOI5vLyi6lHgJB_jX9m_ZKWqFkV-uywqQSrMjBLwaGmLgSZcCoF5BYbSngP9MpSwjLCRcPE7NJrV7MT6zNaznS5a-D5NtN6FF2iVJpNHe2zhMmawDEuzDh8L8CgO8peujk1iv-0h1nb3XFO7tPcG_u32HM41vCSnxncUCg0ncAKz4En0elXY7LsNA0O7MHICfEPzq7eRdwrxz4K1MvK-LWjVo6_JQVzqy_90MqSgIy_v_2ljD7S4giML2RLFDj3FmxGlZGh7MCt6f-DdeUB1EvlTI2oVvAamoqqSXnt48CzUEaKOaLniYLRFScEpSpcBLjjXSRwwP5KyMKYzq3SyqT4vgO0SIOfYJkX0QiCd_A3m07yeY_VU0rE6OCDcUoWcbBohKtn-3p4Isf8M5YOwfLUfcEoFxOqT1M0VbvqLftjp_O2Pt6eoCFdvHaNaB5DGP-k", "dq": "wSicVX_nGLvyg2fFwj7AF1tMuw-Uxxe1PvMgRmRZFE8tbZvTnTbxXxv_heeXCO9A0n0O0M4_gLApZh8MJJWjV48rOjbQwhJPh_Owai-4C8S9RLhTyDFLHo9nA0E-vodK1ujJDunXG7aQYi35CiH8kARKmOKAMRAvj29oZN9aibMPqosfCAkamUDoV0OTKrSmvKMVcQh5gaCshFK2Seht2ZGiW6OBQJyzzpRP46cdDq8RAQFsLTNRJMHC2tkqgG6mngYu8ivntiUjcmqL57mhbyAYN08xcuKpiTU5qu3jqh-OJ99bUPv2ScIOb-PtY7gBIA7CJ9B8jPiXA3prkrjqXgAnbeT_2tJ8c34atfvG4W0afPsFPPLlYr2GDNPINIzmaGOnFcW8EUGRellFB5TwKkaZMXhf2EPOF45F2ZqzVfXdvoxLp9i-A5ZfoQtJwiYyboy4qTytK8WICEtjli26gD-7zFAluXdYfgcxkhIPpq9SEO72382SLauM-lnbtwnrMUdl22cqHMNjYxsbc3b-zEx43WqmZVc6RdhKwUT4x5nOZJdldn44MhsgTEMJP12bGmvqQZfOPVIguPYjYWcr-nKeNpigweY3SGqwAf0hNm2l-MSXa6ADCs2ZaugBXcIesWXpv9kdk1WrxDeRIbT3e9g5UoQLy1tfrp00otTsdbE", "qi": "g9n-wQtZ60IWCxAuc4uHUofpCQoIeGrZ9xLnH0tmFRJnJ5ufNxzHj5oWwKSxpm90bDMnWutfirGHh5RQ7y44IbYUV2Pbhz7-gwSjNlhLec37PCWuVyUmkHLma07N2ZspUOT21_uJ4WD1XazuP-gA4sGiVcLs73q21mUqVgXR-s-bCM0tG1ZrwgoYsKg5Dek34HsdlzYpWYMsqXgKmwJ691ZXlRR_HOLOKsfNfoprW9QQ2kVGfXO_0lKK5p9f7CceOPguLqHn0zk7CB09OVjCv6eTUL8UzswQMo67nO210Q7JKuXAWxGYApQB4HubNe5Ic-pdiHz8IwbmfcTYyOGs4RtQZY3qzB8z9p66y62rzasPnUXSYs3w4nrKtfphC8b5voJB-QDJGe1yWqL95dHYJxdGHa4Kcjc8jQtOCty8pItvGdrVkmuzr0P5LziY1jJz_sPj5b4l2jJB56g1UnKzBmaxgPIQrIdqlDiuEBOerdYKVLiq7np2JC5rKfoYQhdTCj12Nwm8cpOP3jymz1XYEUqYc46oggBPor09edLwhOqr-30Bv8QCAsvwaBYG0Ru2P5l5mgCOmf--dW50xYg-MPHJr9WK38x65kAi-vG9yHeoS--bm26CbVkSGrwKPZI34Fku6i_FUayWEtoiU3WKndSOrpIVOqOQTQU54puQoOE" }, { "use": "sig", "kty": "RSA", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB" }, { "use": "sig", "kty": "RSA", "n": "n_7RTQX1xlllgo-aqo5zd_-wqaRZwFWp3JJIUXryJ4d153J1gEYdz4RkjFO0X8kpv8qb5hdzWhhZHSItD-07LaQXP4lSUuiK1lJAT_YW51D37nCkWm839gAqEGdsWsYQCvqJKSJr4pWCZTEx2MEfikmmnaXPR_VOVgZSj9kIoKo-kFwlw9LGVBHYAeR_W-l5DJQK6Yha8Igi36hnvZqqHcQ4gkGUqEc__Tq2nyYNwvAN3ieZvtvL71rFW26FnuA4OwDER-TYSkAr8Z4wH2EdGno1GZQAegIm-yWblleCaBVOnlk8VcDO9PecTiAFjjWAbQiaFKlkf_plD7KE4tAamQ", "e": "AQAB" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRREMya3dBemlYVWYzM20KaXFXcDB5RzZvMjU5K25qN2hwUUxDNFVUMEhtejB3bXZyZURKL3lOYlNnT3ZzeHZWZHZ6TDJJYVJaK0dpNW1vMApsc3dXdkw2SUd6N1BaTzBrWFRxOXNkQm5OcU1PeDI3SGRkVjllLzIvcDBNZ2liSlRiZ3l3WTJTazIzUVloSnBxCktxL25VMHhsQmZTYUk1ZGRaMlJDOVpOa1ZlR2F3VUtZa3NUcnVoQVZKcXZpSE44Qm9LNlZvd1A1dmN4eXlPV0gKVEs5S3J1RHF6Q0locXdSVGVvMHNwb2tCa1ROL0xDdWhWaXZjSEF6VWlKVnRCNHFBaVRJOUwvemt6aGpwS3o5UAo0NWFMVTU0cmowMTFnRzhVLzZFMVVTaElBbUNvcm5ob2xpb2ZraGZTM1pzM2tKVmR5RlFXWnBReGlUYUk5MkZkCjJ3THZiUzBIQWdNQkFBRUNnZ0VBRDhkVG5rRVRTU2psemhSdUk5bG9BdEFYTTNaajg2SkxQTFc3R2dhb3hFb1QKbjdsSjJiR2ljRk1IQjJST25iT2I5dm5hczgyZ3RPdEpzR2FCc2xtb2FDY2twL0M1VDFlSldURWIraSt2ZHBQcAp3WmNtS1pvdnl5UkZTRTQrTllsVTE3ZkV2NkRSdnVhR0JwRGNXN1FnSEpJbDQ1RjhRV0VNK21zZWUyS0UrVjRHCkZ6c2xwOVRwWGQ5aUJXanpmQ09uR1VpUDY1WitHV2tRL1NYRnFEK1NSaXIwK200M3p6R2RvTnZHSjIzK0hkNksKVGRRYkRKMHVvZTRNb1FlZXB6b1pFZ2k0SmV5a1ZVWi91VmZvK25oMDZ5QXJWZjhGeFRtN1dWekxHR3pnVi91QQord3RsL2NSdEV5QXNrMTY0OXlXL0tIUEVJUDhrSmRZQUplb084eFNsQW9HQUVSTXJrRlI3S0dZWkcxZUZOUmRWCm1KTXErSWJ4eXc4a3MvQ2JpSStuM3lVeWsxVTg5NjJvbDJRMFQ0cWpCbWIyNkw1cnJoTlFobmVNNGU4bW85RlgKTGxRYXBZa1B2a2RycVcwQnA3MkEvVU5BdmNHVG1ON3o1T0NKR01VdXR4MmhtRUFsclltcExLUzhwTS9wOXpwSwp0RU90enNQNUdNRFlWbEVwMWpZU2p6UT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo", "alg": "HS512" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF3dHBNQU00bDFIOTk1b3FscWRNaAp1cU51ZmZwNCs0YVVDd3VGRTlCNXM5TUpySUFtQ29ybmhvbGlvN01iMVhiOHk5aUdrV2Zob3VacU5KYk1GcnkrCmlCcyt6MlR0SkYwNnZiSFFaemFqRHNkdXgzWFZmWHY5djZkRElJbXlVMjRNc0dOa3BOdDBHSVNhYWlxdjUxTk0KQndJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg", "alg": "HS512" }, { "key_ops": [ "sign" ], "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" }, { "use": "sig", "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "lPf00IQpLKLqA1kR6k12ikyQOAEwF6z-JIolceIAiEg", "alg": "HS256" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "jj5mgVA2xlgLTyg7Xir7_GLEtfhOPkrN07DOgopCgo76IuZh-TXfFIWyL_aC9s-E", "alg": "HS384" }, { "key_ops": [ "sign" ], "kty": "oct", "k": "GsBflhmn9Ypy-ctcZrXuXuMDk1LWEzs--YVJfHizjuSVUnnFparUdtPDWKcJ8e56LYI6tWnKWaWUYQCFHxDSgw", "alg": "HS512" } ] } libjwt-3.2.3/tests/cli/oct_384.bin000066400000000000000000000000601510461717300166010ustar00rootroot00000000000000:Þ³"P©ˆðkÊXYŒ6Áwð®ë€”A5Ô-c<+yvUÁc¨–«í"±½0R¶/…#libjwt-3.2.3/tests/jwt-cli.bats000077500000000000000000000044641510461717300164200ustar00rootroot00000000000000#!/usr/bin/env bats BASIC_RES="eyJhbGciOiJub25lIn0.e30." @test "Generate a JWT with alg none" { result="$(./tools/jwt-generate -v -a none -n)" [ "$result" = ${BASIC_RES} ] } @test "Verify a JWT with alg none" { ./tools/jwt-verify -v ${BASIC_RES} } HS256_RES="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds" HS256_KEY="../tests/keys/oct_key_256.json" @test "Generate a JWT with alg HS256" { result="$(./tools/jwt-generate -v -a HS256 -n -k ${HS256_KEY})" [ "$result" = ${HS256_RES} ] } @test "Verify a JWT with alg HS256" { ./tools/jwt-verify -v -k ${HS256_KEY} ${HS256_RES} } CLAIM_RES="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsImV4cCI6MTgzOTMxNzU2MiwiZm9vIjoiYmFyIiwiZ3JvdXAiOiJzdGFmZiIsImlzcyI6ImRpc2suc3dpc3NkaXNrLmNvbSIsInVzZXIiOiJiY29sbGlucyJ9.9RCEoB3XXGZrlU3JAx21x6p8mZguZS_NviKgJqEu330" @test "Generate a JWT with alg HS256 and claims" { result="$(./tools/jwt-generate -v -n \ -k ${HS256_KEY} \ -c s:group=staff \ -c b:admin=false \ -c s:iss=disk.swissdisk.com \ -c s:user=bcollins \ -c i:exp=1839317562 \ -j '{"foo":"bar"}')" [ "$result" = ${CLAIM_RES} ] } @test "Verify a JWT with alg HS256 with claims" { ./tools/jwt-verify -v -k ${HS256_KEY} ${CLAIM_RES} } @test "Generate JWKS from PEM Files" { ./tools/key2jwk --disable-kid -o - \ ${SRCDIR}/tests/keys/pem-files/*.pem \ ${SRCDIR}/tests/keys/pem-files/*.bin | \ grep -v libjwt.io: > output.json jq -r -n --slurpfile A ${SRCDIR}/tests/cli/all.json \ --slurpfile B output.json -f <(cat<<"EOF" def walk(f): . as $in | if type == "object" then reduce keys[] as $key ( {}; . + { ($key): ($in[$key] | walk(f)) } ) | f elif type == "array" then map( walk(f) ) | f else f end; def normalize: walk(if type == "array" then sort else . end); def equiv(x): normalize == (x | normalize); if $A | equiv($B) then empty else halt_error(1) end EOF ) } @test "Convert JWK to PEM - RSA" { rm -f rsa_1024_0023a6e1-f093-448d-9038-9ff168611b86.pem ./tools/jwk2key -d . ${SRCDIR}/tests/keys/rsa_key_1024.json cmp rsa_1024_0023a6e1-f093-448d-9038-9ff168611b86.pem ${SRCDIR}/tests/keys/pem-files/rsa_key_1024.pem } @test "Convert JWK to PEM - OCT" { rm -f oct_384.bin ./tools/jwk2key -d . ${SRCDIR}/tests/keys/oct_key_384.json cmp oct_384.bin ${SRCDIR}/tests/cli/oct_384.bin } libjwt-3.2.3/tests/jwt_builder.c000066400000000000000000000550401510461717300166430ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(new) { jwt_builder_auto_t *builder = NULL; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); } END_TEST START_TEST(gen) { const char exp[] = "eyJhbGciOiJub25lIn0."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_mem_eq(out, exp, strlen(exp)); } END_TEST static int __gen_wcb(jwt_t *jwt, jwt_config_t *config) { jwt_value_t jval; ck_assert_ptr_nonnull(jwt); ck_assert_ptr_nonnull(config); ck_assert_str_eq(config->ctx, "testing"); jwt_set_SET_INT(&jval, "exp", TS_CONST + 480); jwt_claim_set(jwt, &jval); return 0; } START_TEST(gen_wcb) { const char exp[] = "eyJhbGciOiJub25lIn0.eyJleHAiOjE0NzU5ODEwMjV9."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; const char *ctx; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 1); ck_assert_int_eq(ret, 1); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); ret = jwt_builder_setcb(builder, __gen_wcb, "testing"); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); ctx = jwt_builder_getctx(builder); ck_assert_str_eq(ctx, "testing"); } END_TEST static int __set_alg_cb(jwt_t *jwt, jwt_config_t *config) { jwt_value_t jval; int ret; ck_assert_ptr_nonnull(jwt); ck_assert_ptr_nonnull(config); /* Clear the whole header */ ret = jwt_header_del(jwt, NULL); ck_assert_int_eq(ret, JWT_VALUE_ERR_NONE); /* This will get overwritten */ jwt_set_SET_INT(&jval, "alg", JWT_ALG_HS256); jwt_header_set(jwt, &jval); /* This wont */ jwt_set_SET_STR(&jval, "typ", "NOTJWT"); jwt_header_set(jwt, &jval); return 0; } START_TEST(set_alg) { jwt_builder_auto_t *builder = NULL; const char *exp = "eyJhbGciOiJIUzI1NiIsInR5cCI6Ik5PVEpXVCJ9.e30.GsBNaD" "rcrck5dXU9za1MrrOxpz8KQXjq-JHmeCyFhAA"; char_auto *out = NULL; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); ret = jwt_builder_setcb(builder, __set_alg_cb, NULL); ck_assert_int_eq(ret, 0); read_json("oct_key_256.json"); ret = jwt_builder_setkey(builder, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); } END_TEST static int __just_fail_cb(jwt_t *jwt, jwt_config_t *config) { (void)jwt; (void)config; return 1; } START_TEST(just_fail_wcb) { jwt_builder_auto_t *builder = NULL; char *out; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_setcb(builder, __just_fail_cb, "testing"); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); free_key(); } END_TEST START_TEST(gen_stress) { const char exp[] = "eyJhbGciOiJub25lIn0."; jwt_builder_auto_t *builder = NULL; int i; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); for (i = 0; i < 1000; i++) { char_auto *out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_mem_eq(out, exp, strlen(exp)); } ck_assert_int_eq(i, 1000); } END_TEST START_TEST(null_handling) { jwt_builder_auto_t *builder = NULL; jwt_value_t jval; const char *out; jwk_item_t *key = NULL; int ret; builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); jwt_builder_free(NULL); ret = jwt_builder_setkey(NULL, JWT_ALG_HS256, NULL); ck_assert_int_ne(ret, 0); jwt_set_GET_STR(&jval, ""); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_GET_INT(&jval, ""); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_GET_BOOL(&jval, ""); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_GET_JSON(&jval, ""); jval.pretty = 1; ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NONE); ck_assert_ptr_nonnull(jval.json_val); free(jval.json_val); jwt_set_SET_STR(&jval, "", ""); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_SET_INT(&jval, "", 0); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_SET_BOOL(&jval, "", 0); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_SET_JSON(&jval, "", "{}"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NONE); jwt_set_SET_JSON(&jval, "", ""); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_INVALID); jwt_set_SET_JSON(&jval, "", "{}"); jval.replace = 1; ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NONE); /* Create and clear an error */ ret = jwt_builder_setkey(builder, JWT_ALG_HS256, NULL); ck_assert_int_ne(ret, 0); /* Check error exists */ ck_assert_int_ne(jwt_builder_error(builder), 0); out = jwt_builder_error_msg(builder); ck_assert_ptr_nonnull(out); ck_assert_int_ne(strlen(out), 0); /* Clear it */ jwt_builder_error_clear(builder); /* Check that its cleared */ ck_assert_int_eq(jwt_builder_error(builder), 0); out = jwt_builder_error_msg(builder); ck_assert_ptr_nonnull(out); ck_assert_int_eq(strlen(out), 0); /* Fake it */ key = (void *)builder; ret = jwt_builder_setkey(NULL, 0, key); ck_assert_int_ne(ret, 0); ret = jwt_builder_error(NULL); ck_assert_int_ne(ret, 0); out = jwt_builder_error_msg(NULL); ck_assert_ptr_null(out); out = jwt_builder_error_msg(builder); ck_assert_ptr_nonnull(out); ck_assert_int_eq(strlen(out), 0); jwt_builder_error_clear(NULL); out = jwt_builder_generate(NULL); ck_assert_ptr_null(out); /* Some alg mismatches */ read_json("eddsa_key_ed25519.json"); ret = jwt_builder_setkey(builder, JWT_ALG_NONE, g_item); ck_assert_int_ne(ret, 0); free_key(); jwt_builder_error_clear(builder); read_json("oct_key_256.json"); ret = jwt_builder_setkey(builder, JWT_ALG_ES256, g_item); ck_assert_int_ne(ret, 0); jwt_builder_error_clear(builder); ret = jwt_builder_setcb(builder, NULL, "test"); ck_assert_int_ne(ret, 0); ret = jwt_builder_header_del(NULL, NULL); ck_assert_int_ne(ret, 0); ret = jwt_checker_claim_del(NULL, JWT_CLAIM_ISS); ck_assert_int_ne(ret, 0); ret = jwt_checker_claim_set(NULL, JWT_CLAIM_ISS, "goo"); ck_assert_int_ne(ret, 0); out = jwt_checker_claim_get(NULL, JWT_CLAIM_ISS); ck_assert_ptr_null(out); /* Random */ ck_assert_int_eq(jwt_str_alg(NULL), JWT_ALG_INVAL); out = jwt_alg_str(JWT_ALG_ES256K); ck_assert_str_eq(out, "ES256K"); ck_assert_ptr_null(jwt_alg_str(JWT_ALG_INVAL)); ck_assert_int_eq(jwt_get_alg(NULL), JWT_ALG_INVAL); ret = jwt_builder_setcb(NULL, NULL, NULL); ck_assert_int_ne(ret, 0); ck_assert_int_eq(jwt_header_del(NULL, NULL), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_claim_del(NULL, NULL), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_header_get(NULL, NULL), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_header_get(NULL, &jval), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jval.error, JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_builder_enable_iat(NULL, 1), -1); ck_assert_ptr_null(jwt_builder_getctx(NULL)); ck_assert_int_eq(jwt_builder_claim_del(NULL, NULL), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_builder_claim_get(NULL, &jval), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_builder_claim_get(builder, NULL), JWT_VALUE_ERR_INVALID); ck_assert_int_eq(jwt_builder_time_offset(NULL, JWT_CLAIM_NBF, 0), 1); ck_assert_int_eq(jwt_builder_time_offset(builder, JWT_CLAIM_SUB, 0), 1); ck_assert_int_eq(jwt_builder_time_offset(builder, JWT_CLAIM_NBF, 0), 0); free_key(); } END_TEST START_TEST(gen_hs256) { jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; const char exp[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); read_json("oct_key_256.json"); ret = jwt_builder_setkey(builder, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); free_key(); } END_TEST START_TEST(gen_hs256_bits) { jwt_builder_auto_t *builder = NULL; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); read_json("oct_key_256.json"); ret = jwt_builder_setkey(builder, JWT_ALG_HS384, g_item); ck_assert_int_ne(ret, 0); free_key(); } END_TEST START_TEST(gen_es384_pub) { jwt_builder_auto_t *builder = NULL; const unsigned char *buf = NULL; jwk_key_type_t kty; const char *crv; size_t len = 0; int ret, bits; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); /* Pub key */ read_json("ec_key_secp384r1_pub.json"); /* Check the curve */ crv = jwks_item_curve(g_item); ck_assert_str_eq(crv, "P-384"); /* Check kty */ kty = jwks_item_kty(g_item); ck_assert_int_eq(kty, JWK_KEY_TYPE_EC); /* Check bits */ bits = jwks_item_key_bits(g_item); ck_assert_int_eq(bits, 384); /* Check that these aren't there */ ret = jwks_item_key_oct(g_item, &buf, &len); ck_assert_int_ne(ret, 0); ck_assert_ptr_null(buf); ck_assert_int_eq(len, 0); /* Pub key will fail to set */ ret = jwt_builder_setkey(builder, JWT_ALG_ES384, g_item); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_builder_error_msg(builder), "Signing requires a private key"); free_key(); } END_TEST static int __gen_hs256_wcb(jwt_t *jwt, jwt_config_t *config) { ck_assert_ptr_nonnull(jwt); ck_assert_ptr_nonnull(config); ck_assert_int_eq(jwt_get_alg(jwt), JWT_ALG_NONE); if (config->ctx != NULL) { ck_assert_int_eq(jwt_get_alg(jwt), JWT_ALG_NONE); config->key = g_item; config->alg = JWT_ALG_HS256; } else { config->key = NULL; config->alg = JWT_ALG_HS256; } return 0; } START_TEST(gen_hs256_wcb) { jwt_builder_auto_t *builder = NULL; char *out = NULL; const char exp[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); read_json("oct_key_256.json"); ret = jwt_builder_setcb(builder, __gen_hs256_wcb, "testing"); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); free(out); ret = jwt_builder_setcb(builder, __gen_hs256_wcb, NULL); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_int_eq(jwt_builder_error(builder), 1); free_key(); } END_TEST START_TEST(gen_ec_stress) { jwt_builder_auto_t *builder = NULL; const char exp[] = "eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCJ9.e30."; int ret, i; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); read_json("ec_key_secp384r1.json"); ret = jwt_builder_setkey(builder, JWT_ALG_ES384, g_item); ck_assert_int_eq(ret, 0); for (i = 0; i < 1000; i++) { char_auto *out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_mem_eq(out, exp, strlen(exp)); ck_assert_int_eq(strlen(out), 169); } free_key(); } END_TEST START_TEST(claim_str_setgetdel) { const char exp[] = "eyJhbGciOiJub25lIn0.eyJzdWIiOiJteS1mcmllbmQifQ."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_value_t jval; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); jwt_set_SET_STR(&jval, "sub", "my-friend"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_STR(&jval, "aud", "public"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_STR(&jval, "aud", "private"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_EXIST); jwt_set_SET_STR(&jval, "aud", "employees"); jval.replace = 1; ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_GET_STR(&jval, "aud"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(jval.str_val); ck_assert_str_eq(jval.str_val, "employees"); jwt_set_GET_INT(&jval, "aud"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); jwt_set_GET_BOOL(&jval, "aud"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); ret = jwt_builder_claim_del(builder, "aud"); ck_assert_int_eq(ret, 0); jwt_set_GET_STR(&jval, "aud"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NOEXIST); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); } END_TEST START_TEST(claim_int_setgetdel) { const char exp[] = "eyJhbGciOiJub25lIn0.eyJuYmYiOjE0NzU5ODA1NDV9."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_value_t jval; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); jwt_set_SET_INT(&jval, "nbf", TS_CONST); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_INT(&jval, "exp", TS_CONST); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_INT(&jval, "exp", TS_CONST + 360); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_EXIST); jwt_set_SET_INT(&jval, "exp", TS_CONST + 480); jval.replace = 1; ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_GET_INT(&jval, "exp"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_int_eq(jval.int_val, TS_CONST + 480); jwt_set_GET_STR(&jval, "exp"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); jwt_set_GET_BOOL(&jval, "exp"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); ret = jwt_builder_claim_del(builder, "exp"); ck_assert_int_eq(ret, 0); jwt_set_GET_INT(&jval, "exp"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NOEXIST); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); } END_TEST START_TEST(claim_bool_setgetdel) { const char exp[] = "eyJhbGciOiJub25lIn0.eyJhZG1pbiI6dHJ1ZX0."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_value_t jval; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); jwt_set_SET_BOOL(&jval, "admin", 1); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_BOOL(&jval, "sudo", 1); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_BOOL(&jval, "sudo", 0); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_EXIST); jwt_set_SET_BOOL(&jval, "sudo", 0); jval.replace = 1; ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_GET_BOOL(&jval, "sudo"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_int_eq(jval.bool_val, 0); jwt_set_GET_STR(&jval, "sudo"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); jwt_set_GET_INT(&jval, "sudo"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); ret = jwt_builder_claim_del(builder, "sudo"); ck_assert_int_eq(ret, 0); jwt_set_GET_BOOL(&jval, "sudo"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NOEXIST); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); } END_TEST START_TEST(claim_json_setgetdel) { const char exp[] = "eyJhbGciOiJub25lIn0.eyJyb29tcyI6WyJvZ" "mZpY2UiLCJ3YXItcm9vbSJdfQ."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_value_t jval; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); jwt_set_SET_JSON(&jval, "rooms", "[\"office\",\"war-room\"]"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_GET_JSON(&jval, "rooms"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(jval.json_val); ck_assert_str_eq(jval.json_val, "[\"office\",\"war-room\"]"); free(jval.json_val); jwt_set_SET_JSON(&jval, "buildings", "{\"main\":\"dallas\",\"accounting\":\"houston\"}"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_SET_JSON(&jval, "buildings", "{\"hq\": 0}"); ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_EXIST); jwt_set_SET_JSON(&jval, "buildings", "{\"hq\": 1}"); jval.replace = 1; ret = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(ret, 0); jwt_set_GET_JSON(&jval, "buildings"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(jval.json_val); ck_assert_str_eq(jval.json_val, "{\"hq\":1}"); free(jval.json_val); jwt_set_GET_STR(&jval, "buildings"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); jwt_set_GET_INT(&jval, "buildings"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_TYPE); ret = jwt_builder_claim_del(builder, "buildings"); ck_assert_int_eq(ret, 0); jwt_set_GET_JSON(&jval, "buildings"); ret = jwt_builder_claim_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NOEXIST); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); } END_TEST START_TEST(header_str_setgetdel) { const char exp[] = "eyJhbGciOiJub25lIiwidHlwIjoiQ3VzdG9tIn0.e30."; jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_value_t jval; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); jwt_set_SET_STR(&jval, "typ", "Custom"); ret = jwt_builder_header_set(builder, &jval); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, exp); jwt_set_GET_STR(&jval, "typ"); ret = jwt_builder_header_get(builder, &jval); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(jval.str_val); ck_assert_str_eq(jval.str_val, "Custom"); ret = jwt_builder_header_del(builder, "typ"); jwt_set_GET_STR(&jval, "typ"); ret = jwt_builder_header_get(builder, &jval); ck_assert_int_eq(ret, JWT_VALUE_ERR_NOEXIST); } END_TEST START_TEST(sign_es256_bad_sig) { jwt_builder_auto_t *builder = NULL; const char *err; char *out; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); read_json("eddsa_key_ed25519_fake_es256.json"); ret = jwt_builder_setkey(builder, JWT_ALG_ES256, g_item); fprintf(stderr, "%s\n", jwt_builder_error_msg(builder)); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); err = jwt_builder_error_msg(builder); ck_assert_ptr_nonnull(err); /* Fails in different ways depending on the backend */ ck_assert_mem_eq(err, "JWT[", 4); free_key(); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("New"); tcase_add_loop_test(tc_core, new, 0, i); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); tc_core = tcase_create("Gen"); tcase_add_loop_test(tc_core, gen, 0, i); tcase_add_loop_test(tc_core, gen_stress, 0, i); tcase_add_loop_test(tc_core, gen_wcb, 0, i); tcase_add_loop_test(tc_core, gen_es384_pub, 0, i); tcase_add_loop_test(tc_core, set_alg, 0, i); tcase_add_loop_test(tc_core, gen_ec_stress, 0, i); tcase_set_timeout(tc_core, 120); suite_add_tcase(s, tc_core); tc_core = tcase_create("Error Handling"); tcase_add_loop_test(tc_core, null_handling, 0, i); tcase_add_loop_test(tc_core, just_fail_wcb, 0, i); tcase_add_loop_test(tc_core, sign_es256_bad_sig, 0, i); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); tc_core = tcase_create("HS256 Key Gen"); tcase_add_loop_test(tc_core, gen_hs256, 0, i); tcase_add_loop_test(tc_core, gen_hs256_bits, 0, i); tcase_add_loop_test(tc_core, gen_hs256_wcb, 0, i); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); tc_core = tcase_create("Claims SetGetDel"); tcase_add_loop_test(tc_core, claim_str_setgetdel, 0, i); tcase_add_loop_test(tc_core, claim_int_setgetdel, 0, i); tcase_add_loop_test(tc_core, claim_bool_setgetdel, 0, i); tcase_add_loop_test(tc_core, claim_json_setgetdel, 0, i); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); tc_core = tcase_create("Header SetGetDel"); /* All of the code paths for str/int/bool/json have been covered. We * just run this to ensure set/get/del works on headers */ tcase_add_loop_test(tc_core, header_str_setgetdel, 0, i); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT Builder"); } libjwt-3.2.3/tests/jwt_checker.c000066400000000000000000000606031510461717300166220ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(new) { jwt_checker_auto_t *checker = NULL; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); } END_TEST START_TEST(verify) { const char token[] = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJka" "XNrLnN3aXNzZGlzay5jb20ifQ."; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); } END_TEST START_TEST(alg_none_with_sig) { const char token[] = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJka" "XNrLnN3aXNzZGlzay5jb20ifQ.XNrLnN3aXNzZGlzay5jb20ifQ"; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "JWT has signature block, but no alg set"); } END_TEST START_TEST(bad_alg) { const char token[] = "eyJhbGciOiJmb28ifQo.e30K."; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); } END_TEST START_TEST(no_alg) { const char token[] = "eyJub3RhbGciOiJmb28ifQo.e30K."; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); } END_TEST START_TEST(no_first_dot) { const char token[] = "eyJub3RhbGciOiJmb28ifQo"; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); } END_TEST START_TEST(no_second_dot) { const char token[] = "eyJub3RhbGciOiJmb28ifQo.e30K"; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); } END_TEST START_TEST(verify_bad_header) { const char token[] = "eyJhbGcOiJub25lIn0.eyJpc3MiOiJka" "XNrLnN3aXNzZGlzay5jb20ifQ."; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Error parsing header"); } END_TEST START_TEST(verify_bad_payload) { const char token[] = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJka" "XNrLnN3aXNzZGlzay5jb0ifQ."; jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Error parsing payload"); } END_TEST static int __verify_wcb(jwt_t *jwt, jwt_config_t *config) { jwt_value_error_t err; jwt_value_t jval; ck_assert_ptr_nonnull(jwt); ck_assert_ptr_nonnull(config); jwt_set_GET_STR(&jval, "alg"); err = jwt_header_get(jwt, &jval); ck_assert_int_eq(err, JWT_VALUE_ERR_NONE); ck_assert_int_eq(jval.error, JWT_VALUE_ERR_NONE); ck_assert_ptr_nonnull(jval.str_val); ck_assert_str_eq(jval.str_val, "none"); jwt_set_GET_INT(&jval, "iat"); err = jwt_claim_get(jwt, &jval); ck_assert_int_eq(err, JWT_VALUE_ERR_NOEXIST); ck_assert_int_eq(jval.error, JWT_VALUE_ERR_NOEXIST); ck_assert_int_eq(jval.int_val, 0); err = jwt_header_del(jwt, "alg"); ck_assert_int_eq(err, JWT_VALUE_ERR_NONE); err = jwt_claim_del(jwt, "iat"); ck_assert_int_eq(err, JWT_VALUE_ERR_NONE); ck_assert_str_eq(config->ctx, "testing"); return 0; } START_TEST(verify_wcb) { const char token[] = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJkaXNrLnN3aXNzZGlz" "ay5jb20iLCJhdWQiOiJwdWJsaWMiLCJzdWIiOiJteS1mcmllbmQifQ."; jwt_checker_auto_t *checker = NULL; const char *ctx; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_SUB, "my-friend"); ck_assert_int_eq(ret, 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_AUD, "public"); ck_assert_int_eq(ret, 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_ISS, "disk.swissdisk.com"); ck_assert_int_eq(ret, 0); ret = jwt_checker_setcb(checker, __verify_wcb, "testing"); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); ctx = jwt_checker_getctx(checker); ck_assert_ptr_nonnull(ctx); ck_assert_str_eq(ctx, "testing"); } END_TEST START_TEST(verify_stress) { const char token[] = "eyJhbGciOiJub25lIn0.eyJpc3MiOiJkaXNrLnN3aXNzZGlz" "ay5jb20iLCJhdWQiOiJwdWJsaWMiLCJzdWIiOiJteS1mcmllbmQifQ."; jwt_checker_auto_t *checker = NULL; int i; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); for (i = 0; i < 1000; i++) { int ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); } } END_TEST START_TEST(null_handling) { jwt_checker_auto_t *checker = NULL; const char *out; jwk_item_t *key = NULL; int ret; checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); jwt_checker_free(NULL); ret = jwt_checker_setkey(NULL, JWT_ALG_HS256, NULL); ck_assert_int_ne(ret, 0); /* Create and clear an error */ ret = jwt_checker_setkey(checker, JWT_ALG_HS256, NULL); ck_assert_int_ne(ret, 0); /* Check error exists */ ck_assert_int_ne(jwt_checker_error(checker), 0); out = jwt_checker_error_msg(checker); ck_assert_ptr_nonnull(out); ck_assert_int_ne(strlen(out), 0); /* Clear it */ jwt_checker_error_clear(checker); /* Check that its cleared */ ck_assert_int_eq(jwt_checker_error(checker), 0); out = jwt_checker_error_msg(checker); ck_assert_ptr_nonnull(out); ck_assert_int_eq(strlen(out), 0); /* Fake it */ key = (void *)checker; ret = jwt_checker_setkey(NULL, 0, key); ck_assert_int_ne(ret, 0); ret = jwt_checker_error(NULL); ck_assert_int_ne(ret, 0); out = jwt_checker_error_msg(NULL); ck_assert_ptr_null(out); out = jwt_checker_error_msg(checker); ck_assert_ptr_nonnull(out); ck_assert_int_eq(strlen(out), 0); jwt_checker_error_clear(NULL); ret = jwt_checker_verify(NULL, NULL); ck_assert_int_ne(ret, 0); ret = jwt_checker_verify(checker, NULL); ck_assert_int_ne(ret, 0); ck_assert_int_ne(jwt_checker_error(checker), 0); /* Fake it */ out = (void *)checker; ret = jwt_checker_verify(NULL, out);; ck_assert_int_ne(ret, 0); ck_assert_int_ne(jwt_checker_error(checker), 0); out = jwt_checker_claim_get(checker, JWT_CLAIM_IAT); ck_assert_ptr_null(out); ret = jwt_checker_claim_set(checker, JWT_CLAIM_IAT, "foo"); ck_assert_int_ne(ret, 0); ret = jwt_checker_claim_del(checker, JWT_CLAIM_IAT); ck_assert_int_ne(ret, 0); ret = jwt_checker_time_leeway(NULL, JWT_CLAIM_IAT, 0); ck_assert_int_ne(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_IAT, 0); /* Some alg mismatches */ read_json("eddsa_key_ed25519_pub.json"); ret = jwt_checker_setkey(checker, JWT_ALG_NONE, g_item); ck_assert_int_ne(ret, 0); free_key(); jwt_checker_error_clear(checker); read_json("oct_key_256.json"); ret = jwt_checker_setkey(checker, JWT_ALG_ES256, g_item); ck_assert_int_ne(ret, 0); free_key(); /* Callbacks */ ck_assert_int_ne(jwt_checker_setcb(NULL, NULL, NULL), 0); ck_assert_int_ne(jwt_checker_setcb(checker, NULL, "foo"), 0); ck_assert_ptr_null(jwt_checker_getctx(NULL)); /* Changing ctx for cb */ ret = jwt_checker_setcb(checker, __verify_wcb, NULL); ck_assert_int_eq(ret, 0); ck_assert_ptr_null(jwt_checker_getctx(checker)); ret = jwt_checker_setcb(checker, NULL, "foo"); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(jwt_checker_getctx(checker)); ret = jwt_checker_setcb(checker, NULL, NULL); ck_assert_int_eq(ret, 0); ck_assert_ptr_null(jwt_checker_getctx(checker)); /* Some claims stuff */ ck_assert_ptr_null(jwt_checker_claim_get(NULL, JWT_CLAIM_SUB)); ck_assert_ptr_null(jwt_checker_claim_get(checker, JWT_CLAIM_IAT)); } END_TEST START_TEST(verify_hs256) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256.json"); ret = jwt_checker_setkey(checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); free_key(); } END_TEST START_TEST(hs256_no_key) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "JWT has signature, but no key was given"); } END_TEST START_TEST(hs256_wrong_key) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("ec_key_secp384r1_pub.json"); ret = jwt_checker_setkey(checker, JWT_ALG_NONE, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Key alg does not match JWT"); free_key(); } END_TEST START_TEST(hs256_token_failed) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("eddsa_key_ed25519_pub.json"); ret = jwt_checker_setkey(checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Token failed verification"); free_key(); } END_TEST START_TEST(hs256_wrong_key_alg) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("eddsa_key_ed25519_pub.json"); ret = jwt_checker_setkey(checker, JWT_ALG_EDDSA, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Config alg does not match JWT"); free_key(); } END_TEST START_TEST(verify_rsapss384) { jwt_checker_auto_t *checker = NULL; // GnuTLS created const char *token1 = "eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.e30.g_OJbEk" "tbb721dPDZ5hDZHnf8Uk6PiZ8IoatdEGxRc3GBW8xef1jRm_jZYfWh5cEz9Mg" "mzN0xN3q9wYCjoBrB_UUV4sonbUX4QEmUW5B5M0JJ3KyFhzJtcVrl9pVGT6ZB" "FLV-Pwmlus7cq73xDVNrdIX0CkZQ-3pkesiOuUsPK62cs6cQS_TrRQe58JWk0" "CoLIIpaiwZ56uerdPK2uAyDaxRzlVQ_2uKkLjSRCnz4eDHRYJriGtR_bfqIWo" "_gQHowDh_tTeGcWiMugtp9aU6_ES7VSuS7cQuH_-oYEKwnIcM4O8zV5J9EuYl" "JDx0M3C2E13dyUxFEKw3nGEcdiZhcA"; // OpenSSL created const char *token2 = "eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.e30.gNMKG8F" "GbaYNmH5CHHfr-ApOoD5AdtCyasjGaIdphyTrfBXZEqMBet3-C3-Bw1N3hPta" "eN-HpFj5XlDQAy3mmyO0oAiP--NHPKMo09pNNGU18BsAH5ht9SE5Y50AB8Wr1" "vArRZnds3MDmAVwjcG-YBAy8q8jdUP1G9DyItd32bETq-5xlixCW1Jqk8n5Px" "6jMalpbYIwGYYr1vcUUbwOSagVu8crtmRaXt_PSy4kUpI4sKtggIYTjoezwy5" "_B0Tu_cO9xgBe-uOYvJ5rEQk5jen84pBcJ5G8OLorrefX81Vw-AKdD5kdbbqh" "UXSooe803Mt5G2IpDHAXmOwvVBixjA"; // JWT.io created const char *token3 = "eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.e30.XZN5m3p" "HZnDsdRlR8bmZ1XuSqRBALy5Ikl12KtmtFSCYF22eeIJVwuk_DpKLyhZsiXF_" "FIQqoKU8wOO984vK1r8nlQyv_6C0TbC-fH5bjdZ8w5esBOyihEjtG5AScbjpw" "FYCPz_6kayusQqA_FUS_fsjHtg3gKb6viyotlMD6CCengg9aV6TyFMchBL-0_" "S6u-gBZC_1IJ6-ibPy8ILSVKgi6D8ucI2ZcSP79z8BZv8-HWPSJU70Ef4CEVn" "Owo3Grx7zAaAuzDEBELggZeW51bOypBCmmaTy3G2txeYhBE5TI88IeYOh-lrE" "KVQ-ZwOB8dGr0g8wbPl_i9WPdaJV7Q"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("rsa_pss_key_2048_384_pub.json"); ret = jwt_checker_setkey(checker, JWT_ALG_PS384, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token3); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token2); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token1); ck_assert_int_eq(ret, 0); free_key(); } END_TEST static int __verify_hs256_wcb(jwt_t *jwt, jwt_config_t *config) { ck_assert_ptr_nonnull(jwt); ck_assert_ptr_nonnull(config); ck_assert_int_eq(jwt_get_alg(jwt), JWT_ALG_HS256); if (config->ctx != NULL) { config->key = g_item; config->alg = JWT_ALG_HS256; } else { config->key = NULL; config->alg = JWT_ALG_HS256; } return 0; } START_TEST(verify_hs256_wcb) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256.json"); ret = jwt_checker_setcb(checker, __verify_hs256_wcb, "testing"); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); ret = jwt_checker_setcb(checker, __verify_hs256_wcb, NULL); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); free_key(); } END_TEST static int __just_fail_cb(jwt_t *jwt, jwt_config_t *config) { (void)jwt; (void)config; return 1; } START_TEST(just_fail_wcb) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256.json"); ret = jwt_checker_setcb(checker, __just_fail_cb, "testing"); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); free_key(); } END_TEST START_TEST(verify_hs256_stress) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret, i; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256.json"); ret = jwt_checker_setkey(checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); for (i = 0; i < 1000; i++) { ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); } free_key(); } END_TEST START_TEST(verify_hs256_fail) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256_issue1.json"); ret = jwt_checker_setkey(checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Token failed verification"); free_key(); } END_TEST START_TEST(verify_hs256_fail_stress) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; int ret, i; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("oct_key_256_issue1.json"); ret = jwt_checker_setkey(checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); for (i = 0; i < 1000; i++) { ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Token failed verification"); } free_key(); } END_TEST START_TEST(claim_setgetdel) { jwt_checker_auto_t *checker = NULL; const char *out = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_ISS, "disk.swissdisk.com"); ck_assert_int_eq(ret, 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_AUD, "public"); ck_assert_int_eq(ret, 0); ret = jwt_checker_claim_set(checker, JWT_CLAIM_AUD, "employees"); ck_assert_int_eq(ret, 0); out = jwt_checker_claim_get(checker, JWT_CLAIM_AUD); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, "employees"); ret = jwt_checker_claim_del(checker, JWT_CLAIM_AUD); ck_assert_int_eq(ret, 0); out = jwt_checker_claim_get(checker, JWT_CLAIM_AUD); ck_assert_ptr_null(out); } END_TEST START_TEST(claim_time_set) { jwt_checker_auto_t *checker = NULL; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, -1); ck_assert_int_eq(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, 360); ck_assert_int_eq(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, 480); ck_assert_int_eq(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, -1); ck_assert_int_eq(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, 360); ck_assert_int_eq(ret, 0); ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, 480); ck_assert_int_eq(ret, 0); } END_TEST START_TEST(verify_ps256_nosig) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI" "6ZmFsc2UsImlhdCI6MTczNjY5NDU5NCwiaXNzIjoiaHR0cHM6Ly9zd2lzc2Rp" "c2suY29tIiwidXNlciI6ImJlbmNvbGxpbnMifQ."; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("rsa_pss_key_2048.json"); ret = jwt_checker_setkey(checker, JWT_ALG_PS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Expected a signature, but JWT has none"); free_key(); } END_TEST START_TEST(verify_ps256_bad_b64_sig) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI" "6ZmFsc2UsImlhdCI6MTczNjY5NDU5NCwiaXNzIjoiaHR0cHM6Ly9zd2lzc2Rp" "c2suY29tIiwidXNlciI6ImJlbmNvbGxpbnMifQ.eyJhbGciOiJQUzI1N*IsIn" "R5cCI6I!pXVCJ9"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("rsa_pss_key_2048.json"); ret = jwt_checker_setkey(checker, JWT_ALG_PS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Error decoding signature"); free_key(); } END_TEST START_TEST(verify_ps256_bad_b64_sig_255) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI" "6ZmFsc2UsImlhdCI6MTczNjY5NDU5NCwiaXNzIjoiaHR0cHM6Ly9zd2lzc2Rp" "c2suY29tIiwidXNlciI6ImJlbmNvbGxpbnMifQ.eyJhbGciOiJQUzI1N[IsIn" "R5cCI6I!pXVCJ9"; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("rsa_pss_key_2048.json"); ret = jwt_checker_setkey(checker, JWT_ALG_PS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Error decoding signature"); free_key(); } END_TEST START_TEST(verify_ps256_bad_sig) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI" "6ZmFsc2UsImlhdCI6MTczNjY5NDU5NCwiaXNzIjoiaHR0cHM6Ly9zd2lzc2Rp" "c2suY29tIiwidXNlciI6ImJlbmNvbGxpbnMifQ.eyJhbGciOiJQUzI1NiIsIn" "R5cCI6IkpXVCJ9"; const char *err; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("rsa_pss_key_2048.json"); ret = jwt_checker_setkey(checker, JWT_ALG_PS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); err = jwt_checker_error_msg(checker); ck_assert_ptr_nonnull(err); ck_assert_ptr_nonnull(strstr(err, "Failed to verify signature")); free_key(); } END_TEST START_TEST(verify_es256_bad_sig) { jwt_checker_auto_t *checker = NULL; const char token[] = "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI" "xMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlh" "dCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqU" "SLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA"; const char *err; int ret; SET_OPS(); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json("eddsa_key_ed25519_pub_fake_es256.json"); ret = jwt_checker_setkey(checker, JWT_ALG_ES256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); err = jwt_checker_error_msg(checker); ck_assert_ptr_nonnull(err); /* Fails in different ways depending on the backend */ ck_assert_mem_eq(err, "JWT[", 4); free_key(); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("New"); tcase_add_loop_test(tc_core, new, 0, i); suite_add_tcase(s, tc_core); tc_core = tcase_create("Verify"); tcase_add_loop_test(tc_core, verify, 0, i); tcase_add_loop_test(tc_core, verify_bad_header, 0, i); tcase_add_loop_test(tc_core, verify_bad_payload, 0, i); tcase_add_loop_test(tc_core, verify_rsapss384, 0, i); tcase_add_loop_test(tc_core, verify_wcb, 0, i); tcase_add_loop_test(tc_core, just_fail_wcb, 0, i); tcase_add_loop_test(tc_core, verify_stress, 0, i); suite_add_tcase(s, tc_core); tc_core = tcase_create("Error Handling"); tcase_add_loop_test(tc_core, null_handling, 0, i); tcase_add_loop_test(tc_core, bad_alg, 0, i); tcase_add_loop_test(tc_core, no_alg, 0, i); tcase_add_loop_test(tc_core, no_first_dot, 0, i); tcase_add_loop_test(tc_core, no_second_dot, 0, i); tcase_add_loop_test(tc_core, alg_none_with_sig, 0, i); tcase_add_loop_test(tc_core, hs256_no_key, 0, i); tcase_add_loop_test(tc_core, hs256_wrong_key, 0, i); tcase_add_loop_test(tc_core, hs256_wrong_key_alg, 0, i); tcase_add_loop_test(tc_core, hs256_token_failed, 0, i); suite_add_tcase(s, tc_core); tc_core = tcase_create("HS256 Key Verify"); tcase_add_loop_test(tc_core, verify_hs256, 0, i); tcase_add_loop_test(tc_core, verify_hs256_wcb, 0, i); tcase_add_loop_test(tc_core, verify_hs256_stress, 0, i); tcase_add_loop_test(tc_core, verify_hs256_fail, 0, i); tcase_add_loop_test(tc_core, verify_hs256_fail_stress, 0, i); suite_add_tcase(s, tc_core); tc_core = tcase_create("Claims"); tcase_add_loop_test(tc_core, claim_setgetdel, 0, i); tcase_add_loop_test(tc_core, claim_time_set, 0, i); suite_add_tcase(s, tc_core); tc_core = tcase_create("Corner cases"); tcase_add_loop_test(tc_core, verify_ps256_nosig, 0, i); tcase_add_loop_test(tc_core, verify_ps256_bad_b64_sig, 0, i); tcase_add_loop_test(tc_core, verify_ps256_bad_b64_sig_255, 0, i); tcase_add_loop_test(tc_core, verify_ps256_bad_sig, 0, i); tcase_add_loop_test(tc_core, verify_es256_bad_sig, 0, i); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT Checker"); } libjwt-3.2.3/tests/jwt_claims.c000066400000000000000000000113161510461717300164630ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" static void __get_set(jwt_builder_t **builder, jwt_checker_t **checker) { int ret; read_json("oct_key_256.json"); /* One to build */ *builder = jwt_builder_new(); ck_assert_ptr_nonnull(*builder); ck_assert_int_eq(jwt_builder_error(*builder), 0); /* One to check */ *checker = jwt_checker_new(); ck_assert_ptr_nonnull(*checker); ck_assert_int_eq(jwt_checker_error(*checker), 0); /* Set the same key for both */ ret = jwt_builder_setkey(*builder, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_setkey(*checker, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); } START_TEST(claims_nbf_leeway) { jwt_builder_auto_t *builder = NULL; jwt_checker_auto_t *checker = NULL; char *out = NULL; int ret; SET_OPS(); __get_set(&builder, &checker); /* Set nbf +10 */ ret = jwt_builder_time_offset(builder, JWT_CLAIM_NBF, 10); ck_assert_int_eq(ret, 0); /* Gen with "nbf" claim */ out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); /* Small leeway */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, 1);; ck_assert_int_eq(ret, 0); /* Too soon */ ret = jwt_checker_verify(checker, out); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Failed one or more claims"); jwt_checker_error_clear(checker); /* Bigger leeway */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, 10);; ck_assert_int_eq(ret, 0); /* Should pass */ ret = jwt_checker_verify(checker, out); ck_assert_int_eq(ret, 0); /* We clear the check */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_NBF, -1); ck_assert_int_eq(ret, 0); /* Should pass */ ret = jwt_checker_verify(checker, out); ck_assert_int_eq(ret, 0); free(out); free_key(); } END_TEST START_TEST(claims_exp_leeway) { jwt_builder_auto_t *builder = NULL; jwt_checker_auto_t *checker = NULL; char *out = NULL; int ret; SET_OPS(); __get_set(&builder, &checker); /* Set exp */ ret = jwt_builder_time_offset(builder, JWT_CLAIM_EXP, 1); ck_assert_int_eq(ret, 0); /* Gen with "exp" claim */ out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); /* We gotta sleep for this to work */ sleep(1); /* No leeway */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, 0);; ck_assert_int_eq(ret, 0); /* Too late */ ret = jwt_checker_verify(checker, out); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Failed one or more claims"); jwt_checker_error_clear(checker); /* Bigger leeway */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, 10);; ck_assert_int_eq(ret, 0); /* Should pass */ ret = jwt_checker_verify(checker, out); ck_assert_int_eq(ret, 0); /* We clear the check */ ret = jwt_checker_time_leeway(checker, JWT_CLAIM_EXP, -1);; ck_assert_int_eq(ret, 0); free(out); free_key(); } END_TEST static void __test_claim(const char *cstr, jwt_claims_t claim) { jwt_builder_auto_t *builder = NULL; jwt_checker_auto_t *checker = NULL; jwt_value_error_t jerr; jwt_value_t jval; char *out = NULL; int ret; __get_set(&builder, &checker); /* Gen with claim */ out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); /* Set what to expect */ ret = jwt_checker_claim_set(checker, claim, "foo.example.com");; ck_assert_int_eq(ret, 0); /* Should fail, because it's missing */ ret = jwt_checker_verify(checker, out); ck_assert_int_ne(ret, 0); /* Set claim string */ jwt_set_SET_STR(&jval, cstr, "disk.swissdisk.com"); jerr = jwt_builder_claim_set(builder, &jval); ck_assert_int_eq(jerr, JWT_VALUE_ERR_NONE); /* Gen new with claim set */ free(out); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); /* Should fail, because of mismatch */ ret = jwt_checker_verify(checker, out); ck_assert_int_ne(ret, 0); free(out); free_key(); } START_TEST(claims_iss) { SET_OPS(); __test_claim("iss", JWT_CLAIM_ISS); } END_TEST START_TEST(claims_aud) { SET_OPS(); __test_claim("aud", JWT_CLAIM_AUD); } END_TEST START_TEST(claims_sub) { SET_OPS(); __test_claim("sub", JWT_CLAIM_SUB); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("Claims Build/Check"); tcase_add_loop_test(tc_core, claims_nbf_leeway, 0, i); tcase_add_loop_test(tc_core, claims_exp_leeway, 0, i); tcase_add_loop_test(tc_core, claims_iss, 0, i); tcase_add_loop_test(tc_core, claims_aud, 0, i); tcase_add_loop_test(tc_core, claims_sub, 0, i); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT Claims Handling"); } libjwt-3.2.3/tests/jwt_crypto.c000066400000000000000000000021471510461717300165350ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(test_jwt_ops) { size_t i; for (i = 0; i < ARRAY_SIZE(jwt_test_ops); i++) { jwt_test_op_t *op = &jwt_test_ops[i]; const char *name; jwt_crypto_provider_t type; ck_assert(!jwt_set_crypto_ops(op->name)); name = jwt_get_crypto_ops(); ck_assert_str_eq(name, op->name); ck_assert(!jwt_set_crypto_ops_t(op->type)); type = jwt_get_crypto_ops_t(); ck_assert_int_eq(type, op->type); ck_assert_int_ne(jwt_crypto_ops_supports_jwk(), 0); } /* Assert that this fails */ ck_assert(jwt_set_crypto_ops("ALWAYS FAIL")); ck_assert(jwt_set_crypto_ops_t((jwt_crypto_provider_t)919192)); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; s = suite_create(title); tc_core = tcase_create("jwt_crypto"); tcase_add_test(tc_core, test_jwt_ops); tcase_set_timeout(tc_core, 30); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT Crypto Operations"); } libjwt-3.2.3/tests/jwt_ec.c000066400000000000000000000057271510461717300156130ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(test_jwks_ec_pub_missing) { const char *json = "{\"kty\":\"EC\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Missing or invalid type for one of crv, x, or y for pub key"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_ec_pub_bad_type) { const char *json = "{\"kty\":\"EC\",\"crv\":\"prime6v1\",\"x\":\"sd+#(@#($(ada\",\"y\":1}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Missing or invalid type for one of crv, x, or y for pub key"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_ec_pub_bad64) { const char *json = "{\"kty\":\"EC\",\"crv\":\"prime6v1\",\"x\":\"\",\"y\":\"asaad\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Error generating pub key from components"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_ec_pub_bad_points) { const char *json = "{\"kty\":\"EC\",\"crv\":\"prime256v1\",\"x\":\"YmFkdmFsdWUK\",\"y\":\"YmFkdmFsdWUK\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Error generating pub key from components"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("jwt_jwks_ec"); /* EC specific error path tests */ tcase_add_loop_test(tc_core, test_jwks_ec_pub_missing, 0, i); tcase_add_loop_test(tc_core, test_jwks_ec_pub_bad64, 0, i); tcase_add_loop_test(tc_core, test_jwks_ec_pub_bad_type, 0, i); tcase_add_loop_test(tc_core, test_jwks_ec_pub_bad_points, 0, i); tcase_set_timeout(tc_core, 30); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT JWKS Error Path Testing EC"); } libjwt-3.2.3/tests/jwt_flipflop.c000066400000000000000000000142401510461717300170250ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" static void *test_malloc(size_t size) { return malloc(size); } static void test_free(void *ptr) { free(ptr); } static int test_set_alloc(void) { return jwt_set_alloc(test_malloc, test_free); } #ifdef JWT_CONSTRUCTOR START_TEST(test_jwt_crypto_ops) { const char *msg = getenv("JWT_CRYPTO"); ck_assert_str_eq(msg, "NONEXISTENT"); } END_TEST #endif START_TEST(test_alloc_funcs) { jwt_malloc_t m = NULL; jwt_free_t f = NULL; int ret; SET_OPS(); jwt_get_alloc(&m, &f); ck_assert_ptr_null(m); ck_assert_ptr_null(f); ret = test_set_alloc(); ck_assert_int_eq(ret, 0); jwt_get_alloc(&m, &f); ck_assert(m == test_malloc); ck_assert(f == test_free); /* XXX Need to do a build/verify to exercise the functions */ } END_TEST static char *__builder(const char *cops, const char *priv, jwt_alg_t alg) { jwt_builder_auto_t *builder; jwt_alg_t a_check = JWT_ALG_NONE; char *out; int ret; ret = jwt_set_crypto_ops(cops); ck_assert_int_eq(ret, 0); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); read_json(priv); if (jwks_item_alg(g_item) == JWT_ALG_NONE) a_check = alg; ret = jwt_builder_setkey(builder, a_check, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); if (out == NULL) fprintf(stderr, "BuildErr[%s]: %s\n", jwt_alg_str(alg), jwt_builder_error_msg(builder)); ck_assert_ptr_nonnull(out); free_key(); return out; } static void __checker(const char *cops, const char *pub, jwt_alg_t alg, char *token) { jwt_checker_auto_t *checker; int ret; ret = jwt_set_crypto_ops(cops); ck_assert_int_eq(ret, 0); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); read_json(pub); ret = jwt_checker_setkey(checker, alg, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); if (ret) fprintf(stderr, "CheckErr[%s]: %s\n", jwt_alg_str(alg), jwt_checker_error_msg(checker)); ck_assert_int_eq(ret, 0); free_key(); } static void __flip_one(const char *priv, const char *pub, jwt_alg_t alg) { char *out = NULL; size_t i; for (i = 0; i < ARRAY_SIZE(jwt_test_ops); i++) { size_t c; /* Generate on Here */ out = __builder(jwt_test_ops[i].name, priv, alg); if (out == NULL) continue; for (c = 0; c < ARRAY_SIZE(jwt_test_ops); c++) { /* Test everywhere */ __checker(jwt_test_ops[c].name, pub, alg, out); } free(out); test_set_alloc(); } } #define FLIPFLOP_KEY(__name, __pub, __alg) \ START_TEST(__name) \ { \ __flip_one(#__name ".json", \ #__pub ".json", __alg); \ } \ END_TEST #define FLIPFLOP_KEY2(__name, __pub, __alg) \ START_TEST(rsa_no_alg_ ## __alg) \ { \ __flip_one(#__name ".json", \ #__pub ".json", __alg); \ } \ END_TEST FLIPFLOP_KEY(ec_key_prime256v1, ec_key_prime256v1_pub, JWT_ALG_ES256); FLIPFLOP_KEY(ec_key_secp384r1, ec_key_secp384r1_pub, JWT_ALG_ES384); FLIPFLOP_KEY(ec_key_secp521r1, ec_key_secp521r1, JWT_ALG_ES512); FLIPFLOP_KEY(eddsa_key_ed25519, eddsa_key_ed25519, JWT_ALG_EDDSA); FLIPFLOP_KEY(eddsa_key_ed448, eddsa_key_ed448_pub, JWT_ALG_EDDSA); FLIPFLOP_KEY(rsa_key_2048, rsa_key_2048_pub, JWT_ALG_RS256); FLIPFLOP_KEY(rsa_key_4096, rsa_key_4096, JWT_ALG_RS384); FLIPFLOP_KEY(rsa_key_8192, rsa_key_8192_pub, JWT_ALG_RS512); FLIPFLOP_KEY(rsa_pss_key_2048, rsa_pss_key_2048, JWT_ALG_PS256); FLIPFLOP_KEY(rsa_pss_key_2048_384, rsa_pss_key_2048_384_pub, JWT_ALG_PS384); FLIPFLOP_KEY(rsa_pss_key_2048_512, rsa_pss_key_2048_512_pub, JWT_ALG_PS512); /* This key is RSA and does not have an alg set. It can be used for any of the * PS and RS algorithms, so test and make sure that works. */ FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_PS256); FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_PS384); FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_PS512); FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_RS256); FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_RS384); FLIPFLOP_KEY2(rsa_pss_key_2048_notpss, rsa_pss_key_2048_notpss_pub, JWT_ALG_RS512); FLIPFLOP_KEY(oct_key_256, oct_key_256, JWT_ALG_HS256); FLIPFLOP_KEY(oct_key_384, oct_key_384, JWT_ALG_HS384); FLIPFLOP_KEY(oct_key_512, oct_key_512, JWT_ALG_HS512); static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; s = suite_create(title); tc_core = tcase_create("Keys"); tcase_add_test(tc_core, ec_key_prime256v1); tcase_add_test(tc_core, ec_key_secp384r1); tcase_add_test(tc_core, ec_key_secp521r1); tcase_add_test(tc_core, eddsa_key_ed25519); tcase_add_test(tc_core, eddsa_key_ed448); tcase_add_test(tc_core, rsa_key_2048); tcase_add_test(tc_core, rsa_key_4096); tcase_add_test(tc_core, rsa_key_8192); tcase_add_test(tc_core, rsa_pss_key_2048); tcase_add_test(tc_core, rsa_pss_key_2048_384); tcase_add_test(tc_core, rsa_pss_key_2048_512); /* A set of checks */ tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_PS256); tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_PS384); tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_PS512); tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_RS256); tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_RS384); tcase_add_test(tc_core, rsa_no_alg_JWT_ALG_RS512); tcase_add_test(tc_core, oct_key_256); tcase_add_test(tc_core, oct_key_384); tcase_add_test(tc_core, oct_key_512); tcase_set_timeout(tc_core, 60); suite_add_tcase(s, tc_core); /* We run this here so we get some usage out of it */ tc_core = tcase_create("Utility"); #ifdef JWT_CONSTRUCTOR tcase_add_test(tc_core, test_jwt_crypto_ops); #endif tcase_add_test(tc_core, test_alloc_funcs); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("OpenSSL, GnuTLS, MbedTLS Cross Testing"); } libjwt-3.2.3/tests/jwt_hs.c000066400000000000000000000063021510461717300156240ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" static void __verify_token(const char *token, jwt_alg_t alg) { jwt_checker_auto_t *checker = NULL; int ret; checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_setkey(checker, alg, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_eq(ret, 0); } static void __test_alg(const char *key_file, jwt_alg_t alg, const char *expected) { jwt_builder_auto_t *builder = NULL; const unsigned char *buf = NULL; char *out = NULL; size_t len = 0; int ret; builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); ret = jwt_builder_enable_iat(builder, 0); ck_assert_int_eq(ret, 1); read_json(key_file); ret = jwt_builder_setkey(builder, alg, g_item); ck_assert_int_eq(ret, 0); /* Check the values */ ret = jwks_item_key_oct(g_item, &buf, &len); ck_assert_int_eq(ret, 0); ck_assert_ptr_nonnull(buf); ck_assert_int_ge(len, 32); out = jwt_builder_generate(builder); ck_assert_ptr_nonnull(out); ck_assert_str_eq(out, expected); __verify_token(out, alg); free(out); free_key(); } START_TEST(hs_too_small) { jwt_builder_auto_t *builder = NULL; int ret; const char *out = NULL; builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); read_json("oct_key_128_too_small.json"); ret = jwt_builder_setkey(builder, JWT_ALG_HS256, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ret = jwt_builder_setkey(builder, JWT_ALG_HS384, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ret = jwt_builder_setkey(builder, JWT_ALG_HS512, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); free_key(); } END_TEST START_TEST(hs256) { const char exp[] = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.CM4dD95Nj" "0vSfMGtDas432AUW1HAo7feCiAbt5Yjuds"; SET_OPS(); __test_alg("oct_key_256.json", JWT_ALG_HS256, exp); } END_TEST START_TEST(hs384) { const char exp[] = "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.e30.GKapA5V0" "PiRn-pNHK1Vj-E01pYv1Gx0VOkzzgp-SbfWQaOz6q6MiiCyVM0P69idm"; SET_OPS(); __test_alg("oct_key_384.json", JWT_ALG_HS384, exp); } END_TEST START_TEST(hs512) { const char exp[] = "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.e30.yeSPkrpAm" "_6UGtg2SpdPUV0tsrhVosfxKLuUIqMRwhEEyg6jAWe4J-qKiPdJZfC1MVeMwk" "zwB_k-o9RDi_gSbA"; SET_OPS(); __test_alg("oct_key_512.json", JWT_ALG_HS512, exp); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("HS Key Gen/Ver"); tcase_add_loop_test(tc_core, hs256, 0, i); tcase_add_loop_test(tc_core, hs384, 0, i); tcase_add_loop_test(tc_core, hs512, 0, i); tcase_add_loop_test(tc_core, hs_too_small, 0, i); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT HMAC Algorithms"); } libjwt-3.2.3/tests/jwt_jwks.c000066400000000000000000000111601510461717300161660ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(test_jwks_keyring_load) { const jwk_item_t *item; int i, ret; int fails = 0; SET_OPS(); read_json("jwks_keyring.json"); for (i = 0; (item = jwks_item_get(g_jwk_set, i)); i++) { jwt_builder_auto_t *builder = NULL; char_auto *out = NULL; jwt_alg_t alg; if (jwks_item_error(item)) { fprintf(stderr, "Err KID: %s\n", jwks_item_kid(item)); } ck_assert_int_eq(jwks_item_error(item), 0); alg = jwks_item_alg(item); if (alg == JWT_ALG_ES256K) continue; if (alg == JWT_ALG_NONE || !jwks_item_is_private(item)) continue; builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ret = jwt_builder_setkey(builder, alg, item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); if (out == NULL) { fprintf(stderr, "Gen KID(%d/%s): %s\n", i, jwt_alg_str(alg), jwt_builder_error_msg(builder)); fails++; } } ck_assert_int_eq(fails, 0); item = jwks_find_bykid(g_jwk_set, "SDSDS"); ck_assert_ptr_null(item); item = jwks_find_bykid(g_jwk_set, "354912a0-b90a-435e-886a-1629f7b2665e"); ck_assert_ptr_nonnull(item); ck_assert_int_eq(i, 27); i = jwks_item_count(g_jwk_set); ck_assert_int_eq(i, 27); ck_assert(jwks_item_free(g_jwk_set, 3)); i = jwks_item_count(g_jwk_set); ck_assert_int_eq(i, 26); i = jwks_item_free_bad(g_jwk_set); ck_assert_int_eq(i, 0); i = jwks_item_count(g_jwk_set); ck_assert_int_eq(i, 26); free_key(); } END_TEST #ifdef HAVE_LIBCURL START_TEST(load_fromurl) { jwk_set_auto_t *jwk_set = NULL; const char *test_url; SET_OPS(); jwk_set = jwks_create_fromurl(NULL, 1); ck_assert_ptr_null(jwk_set); jwk_set = jwks_create_fromurl("file:///DOESNOTEXIST", 1); ck_assert_ptr_nonnull(jwk_set); ck_assert_int_ne(jwks_error(jwk_set), 0); jwks_error_clear(jwk_set); test_url = getenv("LIBJWT_TEST_URL"); if (!test_url || !test_url[0]) test_url = "file://" KEYDIR "/jwks_keyring.json"; jwk_set = jwks_load_fromurl(jwk_set, test_url, 2); ck_assert_ptr_nonnull(jwk_set); ck_assert_int_gt(jwks_item_count(jwk_set), 0); } #else START_TEST(load_fromurl) { ck_assert_ptr_null(jwks_create_fromurl("file:///", 1)); } END_TEST #endif START_TEST(test_jwks_keyring_all_bad) { const jwk_item_t *item; jwk_set_auto_t *jwk_set; int i; SET_OPS(); jwk_set = jwks_create_fromfile(KEYDIR "/bad_keys.json"); ck_assert_ptr_nonnull(jwk_set); i = jwks_error_any(jwk_set); ck_assert_int_eq(i, 14); for (i = 0; (item = jwks_item_get(jwk_set, i)); i++) { if (!jwks_item_error(item)) { fprintf(stderr, "KID: %s\n", jwks_item_kid(item)); } ck_assert_int_ne(jwks_item_error(item), 0); } ck_assert_int_eq(i, 14); i = jwks_item_free_bad(jwk_set); ck_assert_int_eq(i, 14); i = jwks_item_count(jwk_set); ck_assert_int_eq(i, 0); } END_TEST START_TEST(test_jwks_key_op_all_types) { jwk_key_op_t key_ops = JWK_KEY_OP_SIGN | JWK_KEY_OP_VERIFY | JWK_KEY_OP_ENCRYPT | JWK_KEY_OP_DECRYPT | JWK_KEY_OP_WRAP | JWK_KEY_OP_UNWRAP | JWK_KEY_OP_DERIVE_KEY | JWK_KEY_OP_DERIVE_BITS; const jwk_item_t *item; SET_OPS(); read_jsonfp("jwks_test-1.json"); item = jwks_item_get(g_jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert(!jwks_item_error(item)); ck_assert_int_eq(jwks_item_key_ops(item), key_ops); free_key(); } END_TEST START_TEST(test_jwks_key_op_bad_type) { const jwk_item_t *item; const char *kid = "264265c2-4ef0-4751-adbd-9739550afe5b"; SET_OPS(); read_json("jwks_test-2.json"); item = jwks_item_get(g_jwk_set, 0); ck_assert_ptr_nonnull(item); /* The bad key_op is ignored. */ ck_assert(!jwks_item_error(item)); /* Only these ops set. */ ck_assert_int_eq(jwks_item_key_ops(item), JWK_KEY_OP_VERIFY | JWK_KEY_OP_DERIVE_BITS); ck_assert_int_eq(jwks_item_use(item), JWK_PUB_KEY_USE_ENC); /* Check this key ID. */ ck_assert_str_eq(jwks_item_kid(item), kid); free_key(); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("jwt_jwks"); /* Load a whole keyring */ tcase_add_loop_test(tc_core, test_jwks_keyring_load, 0, i); tcase_add_loop_test(tc_core, test_jwks_keyring_all_bad, 0, i); tcase_add_loop_test(tc_core, load_fromurl, 0, i); /* Some coverage attempts */ tcase_add_loop_test(tc_core, test_jwks_key_op_all_types, 0, i); tcase_add_loop_test(tc_core, test_jwks_key_op_bad_type, 0, i); tcase_set_timeout(tc_core, 30); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT JWKS"); } libjwt-3.2.3/tests/jwt_jwks_errors.c000066400000000000000000000054331510461717300175700ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(test_jwks_bad_json) { const char *json = "INVALID"; jwk_set_t *jwk_set = NULL; const char *msg; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(jwks_error(jwk_set)); msg = jwks_error_msg(jwk_set); ck_assert_ptr_nonnull(jwk_set); ck_assert(msg[0] != '\0'); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_unknown_kty) { const char *json = "{\"kty\":\"INVALID\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Unknown or unsupported kty type"; int ret; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ret = strncmp(exp, jwks_item_error_msg(item), strlen(exp)); ck_assert_int_eq(ret, 0); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_missing_kty) { const char *json = "{\"NOT-kty\":\"INVALID\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Invalid JWK: missing kty value"; int ret; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ret = strncmp(exp, jwks_item_error_msg(item), strlen(exp)); ck_assert_int_eq(ret, 0); jwks_free(jwk_set); } END_TEST START_TEST(test_jwks_empty) { jwk_set_t *jwk_set = NULL; const jwk_item_t *item = NULL; int ret; SET_OPS(); jwk_set = jwks_create(NULL); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_null(item); /* Try some null things */ ret = jwks_item_free(NULL, 0); ck_assert_int_eq(ret, 0); ret = jwks_item_free_all(NULL); ck_assert_int_eq(ret, 0); jwks_free(NULL); ck_assert_ptr_null(jwks_create_strn(NULL, 0)); ck_assert_ptr_null(jwks_create_fromfile(NULL)); ck_assert_ptr_null(jwks_create_fromfp(NULL)); jwks_free(jwk_set); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("jwt_jwks_errors"); /* Core JWKS Error path tests */ tcase_add_loop_test(tc_core, test_jwks_bad_json, 0, i); tcase_add_loop_test(tc_core, test_jwks_empty, 0, i); tcase_add_loop_test(tc_core, test_jwks_unknown_kty, 0, i); tcase_add_loop_test(tc_core, test_jwks_missing_kty, 0, i); tcase_set_timeout(tc_core, 30); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT JWKS Error Path Testing"); } libjwt-3.2.3/tests/jwt_rsa.c000066400000000000000000000157451510461717300160120ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #include #include #include #include #include #include "jwt_tests.h" START_TEST(rsa_pub_missing) { const char *json = "{\"kty\":\"RSA\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Missing required RSA component: n or e"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(rsa_pub_bad_type) { const char *json = "{\"kty\":\"RSA\",\"n\":\"YmFkdmFsdWUK\",\"e\":1}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Error decoding pub components"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(rsa_pub_bad64) { const char *json = "{\"kty\":\"RSA\",\"n\":\"\",\"e\":\"asaadaaaaaa\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Error decoding pub components"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(rsa_pub_binary64) { const char *json = "{\"kty\":\"RSA\",\"n\":" "\"2fyxRFHaYP2a4pbdTK/s9x4YWV7qAWwJMXMkbRmy51w\"," "\"e\":\"2fyxRFHaYP2a4pbdTK/s9x4YWV7qAWwJMXMkbRmy51w\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_ptr_nonnull(jwks_item_pem(item)); ck_assert_int_eq(jwks_item_error(item), 0); jwks_free(jwk_set); } END_TEST START_TEST(rsa_priv_missing) { const char *json = "{\"kty\":\"RSA\",\"n\":\"YmFkdmFsdWUK\"," "\"e\":\"YmFkdmFsdWUK\",\"d\":\"YmFkdmFsdWUK\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Some priv key components exist, but some are missing"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(rsa_priv_bad64) { const char *json = "{\"kty\":\"RSA\",\"n\":\"YmFkdmFsdWUK\"," "\"e\":\"YmFkdmFsdWUK\",\"d\":" "\"2fyxRFHaYP2a4pbdTK/s9x4YWV7qAWwJMXMkbRmy51w\"," "\"p\":\"\",\"q\":\"=\",\"dp\":\"\",\"dq\":\"\",\"qi\":\"\"}"; jwk_set_t *jwk_set = NULL; const jwk_item_t *item; const char exp[] = "Error decoding priv components"; SET_OPS(); jwk_set = jwks_create(json); ck_assert_ptr_nonnull(jwk_set); ck_assert(!jwks_error(jwk_set)); item = jwks_item_get(jwk_set, 0); ck_assert_ptr_nonnull(item); ck_assert_int_ne(jwks_item_error(item), 0); ck_assert_str_eq(exp, jwks_item_error_msg(item)); jwks_free(jwk_set); } END_TEST START_TEST(rsa_short) { const char token[] = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI" "xMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlh" "dCI6MTUxNjIzOTAyMn0.NHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNb" "ftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn" "5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6X" "ETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E" "0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79Xd" "Iwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ"; jwt_builder_auto_t *builder = NULL; jwt_checker_auto_t *checker = NULL; char *out = NULL; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); read_json("rsa_key_1024.json"); ret = jwt_builder_setkey(builder, JWT_ALG_RS256, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_str_eq(jwt_builder_error_msg(builder), "Key too short for RSA algs: 1024 bits"); ret = jwt_builder_setkey(builder, JWT_ALG_RS256, g_item); ck_assert_int_eq(ret, 0); checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_setkey(checker, JWT_ALG_RS256, g_item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, token); ck_assert_int_ne(ret, 0); ck_assert_str_eq(jwt_checker_error_msg(checker), "Key too short for RSA algs: 1024 bits"); free_key(); } END_TEST START_TEST(rsa_ec_short) { jwt_builder_auto_t *builder = NULL; char *out = NULL; int ret; SET_OPS(); builder = jwt_builder_new(); ck_assert_ptr_nonnull(builder); ck_assert_int_eq(jwt_builder_error(builder), 0); read_json("rsa_key_1024.json"); ret = jwt_builder_setkey(builder, JWT_ALG_ES256, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_str_eq(jwt_builder_error_msg(builder), "Key needs to be 256 bits: 1024 bits"); ret = jwt_builder_setkey(builder, JWT_ALG_EDDSA, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_str_eq(jwt_builder_error_msg(builder), "Key needs to be 256 or 456 bits: 1024 bits"); ret = jwt_builder_setkey(builder, JWT_ALG_ES384, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_str_eq(jwt_builder_error_msg(builder), "Key needs to be 384 bits: 1024 bits"); ret = jwt_builder_setkey(builder, JWT_ALG_ES512, g_item); ck_assert_int_eq(ret, 0); out = jwt_builder_generate(builder); ck_assert_ptr_null(out); ck_assert_str_eq(jwt_builder_error_msg(builder), "Key needs to be 521 bits: 1024 bits"); free_key(); } END_TEST static Suite *libjwt_suite(const char *title) { Suite *s; TCase *tc_core; int i = ARRAY_SIZE(jwt_test_ops); s = suite_create(title); tc_core = tcase_create("jwt_jwks_rsa"); /* RSA specific error path tests */ tcase_add_loop_test(tc_core, rsa_pub_missing, 0, i); tcase_add_loop_test(tc_core, rsa_pub_bad64, 0, i); tcase_add_loop_test(tc_core, rsa_pub_bad_type, 0, i); tcase_add_loop_test(tc_core, rsa_pub_binary64, 0, i); tcase_add_loop_test(tc_core, rsa_priv_missing, 0, i); tcase_add_loop_test(tc_core, rsa_priv_bad64, 0, i); tcase_add_loop_test(tc_core, rsa_short, 0, i); tcase_add_loop_test(tc_core, rsa_ec_short, 0, i); tcase_set_timeout(tc_core, 30); suite_add_tcase(s, tc_core); return s; } int main(void) { JWT_TEST_MAIN("LibJWT JWKS Error Path Testing RSA"); } libjwt-3.2.3/tests/jwt_tests.h000066400000000000000000000107561510461717300163710ustar00rootroot00000000000000/* Public domain, no copyright. Use at your own risk. */ #ifndef JWT_TESTS_H #define JWT_TESTS_H #include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifndef ARRAY_SIZE # ifdef __GNUC__ # define ARRAY_SIZE(__arr) (sizeof(__arr) / sizeof((__arr)[0]) + \ __builtin_types_compatible_p(typeof(__arr), typeof(&(__arr)[0])) * 0) # else # define ARRAY_SIZE(__arr) (sizeof(__arr) / sizeof((__arr)[0])) # endif #endif /* Compatibility with older libCheck versions */ #ifndef ck_assert_ptr_null #define ck_assert_ptr_null(__X) ck_assert_ptr_eq(__X, NULL) #define ck_assert_ptr_nonnull(__X) ck_assert_ptr_ne(__X, NULL) #endif /* Constant time to make tests consistent. */ #define TS_CONST 1475980545L typedef struct { const char *name; jwt_crypto_provider_t type; } jwt_test_op_t; __attribute__((unused)) static jwt_test_op_t jwt_test_ops[] = { #ifdef HAVE_OPENSSL { .name = "openssl", .type = JWT_CRYPTO_OPS_OPENSSL }, #endif #ifdef HAVE_GNUTLS { .name ="gnutls", .type = JWT_CRYPTO_OPS_GNUTLS }, #endif #ifdef HAVE_MBEDTLS { .name ="mbedtls", .type = JWT_CRYPTO_OPS_MBEDTLS }, #endif }; #define JWT_TEST_MAIN(__title) ({ \ int number_failed = 0; \ SRunner *sr; \ Suite *s; \ \ s = libjwt_suite(__title); \ sr = srunner_create(s); \ \ srunner_run_all(sr, CK_VERBOSE); \ number_failed += srunner_ntests_failed(sr); \ srunner_free(sr); \ \ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; \ }) #define SET_OPS() ({ \ int r = jwt_set_crypto_ops(jwt_test_ops[_i].name); \ ck_assert_int_eq(r, 0); \ const char *ops = jwt_get_crypto_ops(); \ ck_assert_str_eq(ops, jwt_test_ops[_i].name); \ }) #define jwt_freemem(__ptr) ({ \ if (__ptr) { \ free(__ptr); \ __ptr = NULL; \ } \ }) static inline void jwt_freememp(char **mem) { jwt_freemem(*mem); } #define char_auto char __attribute__((cleanup(jwt_freememp))) __attribute__((unused)) static jwk_set_t *g_jwk_set; __attribute__((unused)) static const jwk_item_t *g_item; __attribute__((unused)) static struct { char *key; size_t key_len; } test_data; __attribute__((unused)) static void read_json(const char *key_file) { char *key_path; int ret; ret = asprintf(&key_path, KEYDIR "/%s", key_file); ck_assert_int_gt(ret, 0); g_jwk_set = jwks_create_fromfile(key_path); free(key_path); ck_assert_ptr_nonnull(g_jwk_set); ck_assert(!jwks_error(g_jwk_set)); /* Just to cover the code path */ jwks_error_clear(g_jwk_set); g_item = jwks_item_get(g_jwk_set, 0); ck_assert_ptr_nonnull(g_item); } __attribute__((unused)) static void read_jsonfp(const char *key_file) { FILE *fp = NULL; char *key_path; int ret; ret = asprintf(&key_path, KEYDIR "/%s", key_file); ck_assert_int_gt(ret, 0); fp = fopen(key_path, "r"); ck_assert_ptr_nonnull(fp); free(key_path); g_jwk_set = jwks_create_fromfp(fp); fclose(fp); ck_assert_ptr_nonnull(g_jwk_set); ck_assert(!jwks_error(g_jwk_set)); g_item = jwks_item_get(g_jwk_set, 0); ck_assert_ptr_nonnull(g_item); } __attribute__((unused)) static void read_key(const char *key_file) { FILE *fp = NULL; char *key_path; int ret = 0; /* This can cause cascading failures if CK_FORK=no */ ck_assert_ptr_null(g_jwk_set); ret = asprintf(&key_path, KEYDIR "/%s", key_file); ck_assert_int_gt(ret, 0); fp = fopen(key_path, "r"); free(key_path); ck_assert_ptr_nonnull(fp); ret = fseek(fp, 0, SEEK_END); ck_assert_int_eq(ret, 0); test_data.key_len = ftell(fp); test_data.key = malloc(test_data.key_len + 1); ck_assert_ptr_nonnull(test_data.key); rewind(fp); test_data.key_len = fread(test_data.key, 1, test_data.key_len, fp); ck_assert_int_ne(test_data.key_len, 0); test_data.key[test_data.key_len] = '\0'; ck_assert_int_eq(ferror(fp), 0); fclose(fp); } __attribute__((unused)) static void free_key(void) { jwks_free(g_jwk_set); g_jwk_set = NULL; g_item = NULL; test_data.key_len = 0; free(test_data.key); test_data.key = NULL; } __attribute__((unused)) static void __verify_jwk(const char *jwt_str, const jwk_item_t *item) { jwt_checker_auto_t *checker = NULL; jwt_alg_t alg = JWT_ALG_NONE; // jwks_item_alg(item); int ret; checker = jwt_checker_new(); ck_assert_ptr_nonnull(checker); ck_assert_int_eq(jwt_checker_error(checker), 0); ret = jwt_checker_setkey(checker, alg, item); ck_assert_int_eq(ret, 0); ret = jwt_checker_verify(checker, jwt_str); ck_assert_int_eq(ret, 0); } #endif /* JWT_TESTS_H */ libjwt-3.2.3/tests/keys/000077500000000000000000000000001510461717300151345ustar00rootroot00000000000000libjwt-3.2.3/tests/keys/bad_keys.json000066400000000000000000000056231510461717300176160ustar00rootroot00000000000000{ "keys": [ { "kid": "Missing k", "kty": "oct", "alg": "HS256" }, { "kid": "Empty k", "kty": "oct", "alg": "HS256", "k": "" }, { "kod": "Wrong type for k", "kty": "oct", "alg": "HS256", "k": 1 }, { "kid": "Wrong type in key_ops", "use": "sig", "key_ops": [ "verify", 1 ], "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLAN===spSIeuKZfTM8rtXFG_RU" }, { "kid": "Invalid curve name", "use": "sig", "key_ops": [ "verify" ], "kty": "EC", "alg": "ES256", "crv": "BAD CURVE", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLAN===spSIeuKZfTM8rtXFG_RU" }, { "kid": "Invalid ALG", "use": "sig", "key_ops": [ "verify" ], "kty": "EC", "alg": "ES256-ASAD", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLAN===spSIeuKZfTM8rtXFG_RU" }, { "kid": "Invalid kty", "kty": "octSSS", "alg": "HS256", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" }, { "kid": "Invalid type for kty", "kty": true, "alg": "HS256", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" }, { "kid": "Invalid type for alg", "kty": "oct", "alg": 8384, "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" }, { "kid": "Mismatched x and y components", "use": "sig", "key_ops": [ "verify" ], "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE" }, { "kid": "EC key missing component", "use": "sig", "key_ops": [ "verify" ], "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM" }, { "kid": "Missing both components", "use": "sig", "key_ops": [ "verify", "sign" ], "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA" }, { "kid": "EdDSA bad curve name", "use": "sig", "key_ops": [ "verify", "sign" ], "kty": "OKP", "crv": "Ed25519-BAD", "alg": "EdDSA", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" }, { "kid": "EdDSA missing curve", "use": "sig", "key_ops": [ "verify", "sign" ], "kty": "OKP", "alg": "EdDSA", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" } ] } libjwt-3.2.3/tests/keys/ec_key_prime256v1.json000066400000000000000000000005761510461717300211760ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "264265c2-4ef0-4751-adbd-9739550afe5b", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU", "d": "wDvSCv8kxkqIVTYPpgEm4Efs6lKzf-95W8Qej4F1yEM" } libjwt-3.2.3/tests/keys/ec_key_prime256v1_pub.json000066400000000000000000000004641510461717300220400ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify" ], "kid": "5b999b7c-2ba8-4654-ba82-1a56a1fdd377", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU" } libjwt-3.2.3/tests/keys/ec_key_secp256k1.json000066400000000000000000000006031510461717300207700ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "0e8d6d95-27e8-45b7-b2b1-f0ca95f378ef", "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE", "d": "zTih0G_1ZdZupZhb7SgOyqsoe2dudSWNPtM4Vt2OYJk" } libjwt-3.2.3/tests/keys/ec_key_secp256k1_pub.json000066400000000000000000000004711510461717300216410ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify" ], "kid": "91976096-7044-4c28-963b-5b2026691e85", "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE" } libjwt-3.2.3/tests/keys/ec_key_secp384r1.json000066400000000000000000000007211510461717300210020ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "591f06c3-66e7-492f-a243-1eb3b33087f7", "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz", "d": "XiwoGqY2Zr02rTB2mF9wNNvtGLN06_JHWvhPQxZ5gkogjhIoOdfX09d3nXlPGHQ7" } ] } libjwt-3.2.3/tests/keys/ec_key_secp384r1_pub.json000066400000000000000000000005621510461717300216530ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "7da8d800-65ae-458f-af82-f692c478605f", "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz" } ] } libjwt-3.2.3/tests/keys/ec_key_secp521r1.json000066400000000000000000000010261510461717300207720ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "6fd54644-c491-4800-9676-cd823ef5aefc", "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE", "d": "p6rxb2PoAISjCCTxpTQOxv5arJ_N6Xibr0eyOAnlWcVk34m1W5323_6TcPGTtFQgEX9TWjNcp9W8HIuIyRdLnsI" } ] } libjwt-3.2.3/tests/keys/ec_key_secp521r1_pub.json000066400000000000000000000006401510461717300216410ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "84b6e8b5-fa05-4669-bf38-0f78f5d1cc10", "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed25519.json000066400000000000000000000005051510461717300210350ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "7dc4a07e-51b6-47dd-ae8c-2da0ef921818", "kty": "OKP", "crv": "Ed25519", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed25519_fake_es256.json000066400000000000000000000005051510461717300227470ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "7dc4a07e-51b6-47dd-ae8c-2da0ef921818", "kty": "OKP", "crv": "Ed25519", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed25519_pub.json000066400000000000000000000003731510461717300217060ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "bf160513-a400-4bc9-ba52-bc90c5e55f60", "kty": "OKP", "crv": "Ed25519", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed25519_pub_fake_es256.json000066400000000000000000000003731510461717300236200ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "bf160513-a400-4bc9-ba52-bc90c5e55f60", "kty": "OKP", "crv": "Ed25519", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed448.json000066400000000000000000000004321510461717300206660ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "9f3c8176-d381-4dc5-a868-8b07d70c0124", "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "d": "nsYcSyibFeqtBBmVUh3S_xGTNQJr0IGwVmU6gTd8Xn-gtb-PxxzPhJnUXZ_UdkPRsz2SY0d8On-t" } ] } libjwt-3.2.3/tests/keys/eddsa_key_ed448_pub.json000066400000000000000000000003571510461717300215420ustar00rootroot00000000000000 { "use": "sig", "kid": "dadc0d66-e2ea-4d58-a2ea-3595d29bb604", "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "x": "J5dXafOvQWBrUabIHVqTbiDU4Jq7RtozL5jopRdiUGp-rs0Kz-f0-2r7scLjclKO9q8r3m9_YGAA" } libjwt-3.2.3/tests/keys/jwks_keyring.json000066400000000000000000000617401510461717300205450ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "ee30e68c-a5e9-4067-864e-cf7dc9ffd2c1", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU", "d": "wDvSCv8kxkqIVTYPpgEm4Efs6lKzf-95W8Qej4F1yEM" }, { "use": "sig", "kid": "308e712a-2366-41f0-a236-b410736b4dc7", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU" }, { "key_ops": [ "sign" ], "kid": "354912a0-b90a-435e-886a-1629f7b2665e", "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE", "d": "zTih0G_1ZdZupZhb7SgOyqsoe2dudSWNPtM4Vt2OYJk" }, { "use": "sig", "kid": "863e696b-80fe-44b3-8e5b-87a3bdd72447", "kty": "EC", "alg": "ES256K", "crv": "secp256k1", "x": "7xdE1j-vQLoWBnhP7Mn70yNhPDCO6pytCqMJTeJ7_90", "y": "795Zo2s891l9E7Jb57g9CEvRVGk_LJ7Hy0ixzGcV8UE" }, { "key_ops": [ "sign" ], "kid": "cf9d2031-eb21-494f-9272-2c74b574f3ab", "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz", "d": "XiwoGqY2Zr02rTB2mF9wNNvtGLN06_JHWvhPQxZ5gkogjhIoOdfX09d3nXlPGHQ7" }, { "use": "sig", "kid": "7d9e8a8d-3fa0-4ae5-83e3-6044b8aa05bb", "kty": "EC", "alg": "ES384", "crv": "P-384", "x": "omxC9ycc8AkXSwWQpu1kN5Fmgy_sD_KJqN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUd", "y": "eydBoq_IOglQQOj8zLqubq5IpaaUiDQ50eJg79PvXuLiVUH98cBL_o8sDVB_sGzz" }, { "key_ops": [ "sign" ], "kid": "77ca2a99-ae2c-4032-9ca9-dae0300dee67", "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE", "d": "p6rxb2PoAISjCCTxpTQOxv5arJ_N6Xibr0eyOAnlWcVk34m1W5323_6TcPGTtFQgEX9TWjNcp9W8HIuIyRdLnsI" }, { "use": "sig", "kid": "6daea4ce-3c0a-44b5-880f-a3ed5e31d178", "kty": "EC", "alg": "ES512", "crv": "P-521", "x": "_axE26pXWXesAjcTP_2Tfe4EcF4A3LuqgpIFzrftiztViq0-5deUvfcxuPIFk-ANVinlAOzgZWpFS0kheI7KJAY", "y": "3fOHn5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLCS6N-LXoi_dm0Fbo6snE" }, { "key_ops": [ "sign" ], "kid": "487ce5ea-f077-4db8-8002-1ef2ad8dff85", "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" }, { "use": "sig", "kid": "afdb09c9-29fe-48cd-b2d7-a026bc7835ee", "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA", "x": "HUj-14kN6N4i5qNVkfEhwKiCf-tSrvRHstQdtV8a5QM" }, { "key_ops": [ "sign" ], "kid": "4dc10a5f-be67-4368-99fa-2570a8b3cdca", "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "d": "nsYcSyibFeqtBBmVUh3S_xGTNQJr0IGwVmU6gTd8Xn-gtb-PxxzPhJnUXZ_UdkPRsz2SY0d8On-t" }, { "use": "sig", "kid": "48a53109-9823-47b7-af08-1de48ef04cd3", "kty": "OKP", "crv": "Ed448", "alg": "EdDSA", "x": "J5dXafOvQWBrUabIHVqTbiDU4Jq7RtozL5jopRdiUGp-rs0Kz-f0-2r7scLjclKO9q8r3m9_YGAA" }, { "key_ops": [ "sign" ], "kid": "1971c0aa-4369-435f-aaf3-d4ca34a23ddb", "kty": "RSA", "alg": "RS256", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB", "d": "D8dTnkETSSjlzhRuI9loAtAXM3Zj86JLPLW7GgaoxEoTn7lJ2bGicFMHB2ROnbOb9vnas82gtOtJsGaBslmoaCckp_C5T1eJWTEb-i-vdpPpwZcmKZovyyRFSE4-NYlU17fEv6DRvuaGBpDcW7QgHJIl45F8QWEM-msee2KE-V4Gz_9vAQ-sOlvsb4mJP1tJIBx9Lb5loVREwCRy2Ha9tnWdDNar8EYkOn8si4snPT-E3ZCy8mlcZyUkZeiS_HdtydxZfoiwrSRYamd1diQpPhWCeRteQ802a7ds0Y2YzgfFUaYjNuRQm7zA__hwbXS7ELPyNMU15N00bajlG0tUOQ", "p": "5y8tNZdtDp3lugNnCAyA8mIcuTu7rpbGhLSUXlJXIxAzJIp_G--u6tlWR2__92R_oqZ0WAclFMmFIXTrNg2ERhngHm5x_MKU0-BQmMVLCFKQ3we0cH3QTjYGinsEyc_xT7MMtWHtG-R9nOr1YpthWd9x0HKGd8LxRashlZzM6Ts", "q": "18S_ecqMVBimvLzM3BNwp9NbM4dHRatLKnBaTPh1i1a_OAiLbhvR-i9CmkrRBCDoibMTlaXF3xRYbCbzhoTAOA0E8B-Frl5l6dT6FTA5VeuT2Kr4c8C-PkIb2Ttm7KxLpyE1zplOwiOpIpZwDdy7j-B26mYKF_ZajyN9VWMy7qU", "dp": "YRhyT3DSz_HHG1H0gu_ldGd6kt2gnNocdH33VooUqNhT8oPskMog1-gCEazbf4cJCEIK2THfBBUDQiL96szQgjS56W4Pl84NfdNXZmJuegdbayCsSxa8VyzfoGe8ghpAym1z5_ZCBJX5n98awphp0bpD7f07tq78cHtIdrLNaSM", "dq": "yC0XOyWn1Old32IFaPN8I6cZSI_rln4ZaRD9JcWoP5JGKvT6bjfPMZ2g28Ynbf4d3opN1BsMnS6h7gyhB56nOhkSCLgl7KRVRn-5V-j6eHTrICtV_wXFObtZXMsYbOBX-4D7C2X9xG0TICyTXrj3Jb8oc8Qg_yQl1gAl6g7zFKU", "qi": "ERMrkFR7KGYZG1eFNRdVmJMq-Ibxyw8ks_CbiI-n3yUyk1U8962ol2Q0T4qjBmb26L5rrhNQhneM4e8mo9FXLlQapYkPvkdrqW0Bp72A_UNAvcGTmN7z5OCJGMUutx2hmEAlrYmpLKS8pM_p9zpKtEOtzsP5GMDYVlEp1jYSjzQ" }, { "key_ops": [ "sign" ], "kid": "318ca000-36ca-4b0f-8d18-0ac315d2b271", "kty": "RSA", "alg": "RS384", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB", "d": "IwY78h7MEdL6Z5B1yvDxOOhgujS1xAW9NbYb4VXfl8uzfyRIEPfJFgMZ8V5l1aa8WIXBGxGqMvC-YtEBYzfsuPtgB0tIX1x3t2Hi-BGlnbHuPQkjZKXzDpbRF7JO7PAn00jx87JRp1BLkvhSLwywpTi7BnwNjWnlCFrdymydnW74zpJHchH77cnHdx4jCQHx93M-0bmYvs1z8TvZ5hMPHdNEM4adVIps8wsNZV_KJyDjbsaeWnE1opCxynsOsJMjvirk3W0s2X3aBk0VEgo9OuRxLyZaiOgm1avcedZ-cFmdhFvF0HCaxMH4Mz1DYzn-Pf6bnpcaiYCLfbkkjxPCRB1bUjsCsQsRs33os8VBvfKePK_B_Y5bDsJTh_vfJiVflqgckdr2R_RDQ50BLL-Ep44oAjt3wh9X85ccAQXoVKbfSwLADh2LsZFV_gsiVLWjGavvV43zfRzwubVsH_2w2H7gfXO3JoXHuNX3O-5W3hfrMxFQ7Ozjb3rcq28rkajTloG7fBVSlNmQc33cfvvKCLddN-eL6xK4k_xqd92DC-DEfqQgTKsVszDlmViRMOMX2Ebnnve5xsuAyhddFdRamrrrZ2gWO-WvTR5NMo91viluqWxbDWWqAnzpvY2XpAeWvcyNux57UIqWsbuJ6RDBjAyVsbvFRIzBxNbKfEzR5uE", "p": "8FFVC2zHBS8-o3i8niu3NY5ncJtmkT-5hpag567rWfP5Vzrvuih0BAW4t0gHCQCcS8ur_pQ7m72Cf8FA60a8S2djetTq8xbf1jQ0aSuqmJtRBH1DT2qKZT6OHY9EOhKZpOQzFPk_rscHHVH9q8PDvHVaz85dwRbb1D8EqRDDcvbqpyWwwMWkgndx0I6qV9GTcK6HzCtJIZHQsTl1k2IEdheawhZrXYlPEI1YQbR44lxxeBVH-P-1dEhiEnQQwj9dzlfPseqY5kf81ST4YZZPosZeQ4FyOu_IxsJqBmO27puOkmYXfbbhTMkSJSdeS7BatqQnbUBi10rpZCP2vDbV2Q", "q": "1uKlFl2FfsEQfq7d7GiNqNrEYnxK52lH19Yvgvfy27LtnDppBESr5ULPZcCFZ9kdY-8UxYoNZjGnZ-HVBEFhbOI1X606eLsvI4rnM-HG33cEYSVIuceUfc-OHkKuWLvOS2fE98ULgjVNItYAvN1FfiUpkt05ojp_4OPZMWHmdDV24u4_BDzqr9p6A-tmhKPHtyxdaX2yIXM6nFNx4vlmhgLZ-62xprLWVuT5SCo30PonKtsbgpkJ_bE_x_gacMH8J-NEGstt_oDsvHvvT3RGJiGveNTQPZ2mKmkZaZ5x8TTpk7LEw56PCn21pftBuH0bg_aMvC4fWfh47uVTgJa03Q", "dp": "FjmfYOAdg9g7tcibwREP748M9_gXQ0WeddkGZobh0z7iB3Q26YOGPzz8OU8a_3Uj_0qFzJSO8rdTE1efFmNDVMHqDFkWpYavCtNnKXbVXym2E3E2QWj8BaMEZ61xROGlff9wzfbDMfnMKaUEjdccChjcXi2atBnWGMn_N1eKi95UE0NEFn_w1_QN_ZjEHj0OorQxcOtr5wPiRhGnUwsUmItUT7DdGxhwzHoV-HWlXGHqSI3HSzry4B81mrlLN3u-xC-Q0MZ-f4WW12uE4RmSod4wp5OYKeU1L1SZk5-zMlwGknmIoKLCMWTDHdaHPP7BVPTXhJ4YxgpyjUVaM0vq-Q", "dq": "NOGRvu9E6uyYIpTmCEeylNtBePsdc9V02KjdCF38ZhSiZM_7CBHeO401fNTj_6pukSlE81gF9CBEEkyBH4r3btQ8Tk9TFGL8NsL4IsxtJJElgsKqIw36fPuW_dtrDGsrWWMwFcloC6MSWIBRrijF8UUz9fB7PnEnBzELQhvVmsONfksjNufG2X_qhwxnLj0f6PQCCPPl4lV5Fv9yB2lY0aHiAw27qkpYdQnkTt4U3lixStqg6oK-8q-sAooL97PFWguTtwRZDUis-bWGLwduO_QOOq4kkQU63zT-C__yCmn7EV3tDjb2_J3zFeW_RqeDHfaOq8Ct9nYvTJsi8YIl", "qi": "z-UlWCzIiVTW6D8OZ4ZlCa2HQlB2SBWyTu_EzrvfL_SzIvEzdaT_UFvJJD-VwhyQU3jeQBnN71sc49i2Iu--pvcRmkryKXXfctqDN13Oxe8qIzzG70YSUZNJxoag2bJWTm8vyzpwod7EHQJ7TLVGLbcrLANjpFSCpyVjJWnIFFlisCbgTbi-hGtYg65xhvTKM54wlXimYTObx434-q3pBzrRmX6LO-UMhryoyruSwVVyQHRFHfiKqRrzLQCErhXXNm9D1kQ2U7a5SP9ZH78Lg1ZZFi1-wphTzhe5LLci5R_BoEcfJyGbKdrV6eKd-Jy0Ie9NleUNZiWnlR_wgNet3g" }, { "key_ops": [ "sign" ], "kid": "f9c70e1e-a1da-4cec-a5db-6cf84a4abc9d", "kty": "RSA", "alg": "RS512", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB", "d": "azXNy3iyhfZRIc_2vFbWt1nQfRUzI7KjIqebNdqOIXogFRX1VMouao_PGaXC0R25wAk-JpCiKEp8lyNFtZX0CuFyT6w2Oi6F_oEApGCDq_3chlSEjdGgkYoPE7fiUtTG7YejoEOmgIfIEx1oj24TKDZaXR_KmK_a0fJVPnXNhmfW7C3eoSK7qEdCtRKkOgXDGd7pJuXebuSZJ4uxUAx1OAbAPa1-ss73Rt0LJu5zdbsz1uV7ejOQIY2qJgjRBSgcMaBEoYQc-8F9VdvZhuUC5LKG1pE1-hFq9tXz_aK6QsiZwhLxuvc6Hoyy2L_9G39zZvI2LifW2tKRXqe0izRJmUdYu6AbfP0XUWC_ckUX0qrNBL9wkqLgg-BkLd5KmP-GaENg0VisNXhBybeca1fgJAhW7csJwXi1Yfgsw79gID0AFI2l7oSO4lqUe834dyW2mbmtQ-xnDTconq4VDaGnvf_d_l4qpzxEB-_y48UC4cIlStOlgiFYf02ASH9VcGKwaxLIoNuLgI3mo8ds2x23qWzqg2MCMxjfk3oV0blvOA6Bi2SAlLVj8w-IprWahDY6_WFNiKTMb8uvFSluksjlmxvCUhQCi7kfTGWlvy3UpaKuhoL_P7LD5zPr0OITJMIpUG2_Vd9ELjlAcwZtJqYAeJCzIxm3Uxm03WobgNQAabShrQCpUF-sZEqOPfQIa4bpRk-IzboCzdBBuQw9S8H1-yI_R718EvbmS3QhKAG6C6BRbafo-SLTfMGKARMACqq68w2FNYLblodBYGOdSf7LeSc8g6uA9UPncMfg06HOmkw_lIaOVseJG006u9LsUE6obCzNKGy5vtz0gCawbuc-S5ZaR3tE18Nu3ukNtZVv-L-UThAlVn_QDm4uMUmNy6Uxn7rta98auPE18InaVKJEDAFJ_pljX_XI6M0Nnz-lJfrlYTqPWjQtazaoohJt-OaVeK8MLOzRfu1FLllv8w2I1VXZR2rEW0UiwOC7-q5PgZE2qo7pHFnG_XfnP64vxa3I4Bv-a6zAbga1fgBbvTooRgqf6EExklZyfipMCtpnbG4cGht__zwUOvhUn6POHCgGO3OYhXjr8ArUhg2oQwGyUkGlzQGLGeopocFCbDMb7i-kGMhuigwKLjBMUF6U3TdC532wse0DPyDHBCLyxD4dPiPvFspgcNaw7x6sVWB9vN2JxXUJVGtnIrHAZQ2evGDtIeJnyFhmQ3Fa8RF-519xHYyX6Vu1KGEI1yT-ALSkUvYycUip4zyT70-GdknExutxIWtEMVpfXzxIJVt9S6gm8pUZ73OHVByUV92FgQCWPXnkjVPRBU_nnmav05YqCikvPx5SOVV_r64h5eNklhelmQ", "p": "586CvRRJQLPsOzFOjH6k0aCQOdvi5MwuLkdaBnAKOZRGiXtVFV_QwnXELmIiDCcPCLXagZ5R9XKwQp8HnzgvbGii2EjOFZ0GQC9FtOXX-E5vpFrg8eYRrjCAHB2yZ-B_1QrLOYbJhZZfaSZ58WC0jrrJqa1zvauBjy2EdtWykIbCV29UWdzIm0kH3Tgi0f3chgt7voOMHJ87jknE4jGLYbRM4Gje92Gi3WWymTSwN3ZuqWZvWdjPTuz2dk2T6sGusyN4cXTjmRy8yDMgxifJkhyxshW1ZHIK_6RacDi0w562rhz9kRRvbwtK9copeNaudQpvUJL-aPtVWc4fKNNatpaFhhsHo1jTOdMvx2Mn7AxDreUiTuUO2gDEJu7_LR7MhSdaXBVUUQVFNZXwHm0tVM1OH7rylU-OBNUOjb14zaClRtZ_97GoQIgRXQRqJ4K6nXFwGXycyYc4bZt2-tS4HVjUPViT4hZr4JXKeUSfY_rzE3i9QjLhguKaRXJexh8TxGMKg1DxMUv8kEYS4Dt5V1ZHQnGwN_lRR91B8OoreelOQTX4YIfi7ZWBaeNqBK4YRTQ5k2pHIi3THpFKhyQQGXXuAcwUcxhdOOWoVmlM37Qmfty_P-Jac8z7Gos4aXDRS0NXfkLLCFGWzhoQZ0jh_p34xiF3cO0J94Wu_xHJPsM", "q": "xfuqeOX2Q_KoDxhlQUd7_yYVhIJs9fn-59W3nkNLAD3CxxqKsbZ8RMo7bF67ibTM72JKE6_MTJ1OzZIMy2XW1Id_iHjcd1suDV6R88wOZTvqk-ew87RsIf5z7WQ--FpcuEBQ8E0GOFTdK5owfm9EYEkikKsDO7i0IqcA_npBmgnvTYIAC29tT9lQaX2VXXqZyATQFWNBVWqzWyuejRZO1Xpi7gnihE7PwojsF9u-rpSFoSs2lvSbUFvkgTF1s2OHjcSi38Xv5aig4pKH2TOnLwrOuCuYjSQJFHpuJuH3WhjrpIMkybCw1CLhqMqs1SY_SqVAdGhfDhDU632R5r8MJqubSi7qPCE2VLKXnU82tkyA3XpIlHWwCyh5HW1KZB1BWK7yJxiO8itpYOLFJfKL3zpz4onlAFGjUYzHEO4ZVqFJOOjVyPU-z-yqr4lGociTCW3wng66OXDPGPL2mv-iZnDj2IXUYa4LAgAolkynnbpOQBihXMLAIQu_5kZ1VF-mjY0Sov0nx-_8T34Ulu9u-zFMguOGSS3ZdMaWrO3Uxxvn-JebOZ7pZ3RLbaLYwb67kWV5TcLaoB6c5Tv-XViBJsx7ewnpJAN--kIs_Sdky_ZwzazRmvmay9-qpFoNsyyGBxjaFWAguHEgX7gU_BnJ9_WUMqk1Nysby0Qf91N7wi0", "dp": "XpSQG33Pdarz1CMGHaT-stmEf1cMeLYmkZNjVAUa5uts7GN6D8KMdwt-BD7eDX9STweEJCbo4fDtogEpJvnRv7Xh28W48HClQEMJegnd2N6IBtNdvNVWmXAIlXA4ftHG1rIUwWARkYQNYeXlE2uVwDbOWYEAHH-B2V2FEseWmAmj-fDexdujrlhZ8RUaf_vIopjE4LLj1DnUHvZScsgsSq06QMYJU35u6U65VHF_BOI5vLyi6lHgJB_jX9m_ZKWqFkV-uywqQSrMjBLwaGmLgSZcCoF5BYbSngP9MpSwjLCRcPE7NJrV7MT6zNaznS5a-D5NtN6FF2iVJpNHe2zhMmawDEuzDh8L8CgO8peujk1iv-0h1nb3XFO7tPcG_u32HM41vCSnxncUCg0ncAKz4En0elXY7LsNA0O7MHICfEPzq7eRdwrxz4K1MvK-LWjVo6_JQVzqy_90MqSgIy_v_2ljD7S4giML2RLFDj3FmxGlZGh7MCt6f-DdeUB1EvlTI2oVvAamoqqSXnt48CzUEaKOaLniYLRFScEpSpcBLjjXSRwwP5KyMKYzq3SyqT4vgO0SIOfYJkX0QiCd_A3m07yeY_VU0rE6OCDcUoWcbBohKtn-3p4Isf8M5YOwfLUfcEoFxOqT1M0VbvqLftjp_O2Pt6eoCFdvHaNaB5DGP-k", "dq": "wSicVX_nGLvyg2fFwj7AF1tMuw-Uxxe1PvMgRmRZFE8tbZvTnTbxXxv_heeXCO9A0n0O0M4_gLApZh8MJJWjV48rOjbQwhJPh_Owai-4C8S9RLhTyDFLHo9nA0E-vodK1ujJDunXG7aQYi35CiH8kARKmOKAMRAvj29oZN9aibMPqosfCAkamUDoV0OTKrSmvKMVcQh5gaCshFK2Seht2ZGiW6OBQJyzzpRP46cdDq8RAQFsLTNRJMHC2tkqgG6mngYu8ivntiUjcmqL57mhbyAYN08xcuKpiTU5qu3jqh-OJ99bUPv2ScIOb-PtY7gBIA7CJ9B8jPiXA3prkrjqXgAnbeT_2tJ8c34atfvG4W0afPsFPPLlYr2GDNPINIzmaGOnFcW8EUGRellFB5TwKkaZMXhf2EPOF45F2ZqzVfXdvoxLp9i-A5ZfoQtJwiYyboy4qTytK8WICEtjli26gD-7zFAluXdYfgcxkhIPpq9SEO72382SLauM-lnbtwnrMUdl22cqHMNjYxsbc3b-zEx43WqmZVc6RdhKwUT4x5nOZJdldn44MhsgTEMJP12bGmvqQZfOPVIguPYjYWcr-nKeNpigweY3SGqwAf0hNm2l-MSXa6ADCs2ZaugBXcIesWXpv9kdk1WrxDeRIbT3e9g5UoQLy1tfrp00otTsdbE", "qi": "g9n-wQtZ60IWCxAuc4uHUofpCQoIeGrZ9xLnH0tmFRJnJ5ufNxzHj5oWwKSxpm90bDMnWutfirGHh5RQ7y44IbYUV2Pbhz7-gwSjNlhLec37PCWuVyUmkHLma07N2ZspUOT21_uJ4WD1XazuP-gA4sGiVcLs73q21mUqVgXR-s-bCM0tG1ZrwgoYsKg5Dek34HsdlzYpWYMsqXgKmwJ691ZXlRR_HOLOKsfNfoprW9QQ2kVGfXO_0lKK5p9f7CceOPguLqHn0zk7CB09OVjCv6eTUL8UzswQMo67nO210Q7JKuXAWxGYApQB4HubNe5Ic-pdiHz8IwbmfcTYyOGs4RtQZY3qzB8z9p66y62rzasPnUXSYs3w4nrKtfphC8b5voJB-QDJGe1yWqL95dHYJxdGHa4Kcjc8jQtOCty8pItvGdrVkmuzr0P5LziY1jJz_sPj5b4l2jJB56g1UnKzBmaxgPIQrIdqlDiuEBOerdYKVLiq7np2JC5rKfoYQhdTCj12Nwm8cpOP3jymz1XYEUqYc46oggBPor09edLwhOqr-30Bv8QCAsvwaBYG0Ru2P5l5mgCOmf--dW50xYg-MPHJr9WK38x65kAi-vG9yHeoS--bm26CbVkSGrwKPZI34Fku6i_FUayWEtoiU3WKndSOrpIVOqOQTQU54puQoOE" }, { "use": "sig", "kid": "e763fcd7-e0a8-435e-87f9-01bc4a46c596", "kty": "RSA", "alg": "RS256", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB" }, { "use": "sig", "kid": "9debb1f4-7cc8-4700-bb93-6aff4539cc2b", "kty": "RSA", "alg": "RS384", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB" }, { "use": "sig", "kid": "a187f864-4c89-4bab-8025-8f8ec0678139", "kty": "RSA", "alg": "RS512", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB" }, { "key_ops": [ "sign" ], "kid": "17f68701-270a-44c8-a81e-da1e5203ab9b-1", "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" }, { "use": "sig", "kid": "15c927a8-e1c2-40d0-a325-410423370e55-1", "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" }, { "key_ops": [ "sign" ], "kid": "17f68701-270a-44c8-a81e-da1e5203ab9b-2", "kty": "RSA", "alg": "PS384", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" }, { "use": "sig", "kid": "15c927a8-e1c2-40d0-a325-410423370e55-2", "kty": "RSA", "alg": "PS384", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" }, { "key_ops": [ "sign" ], "kid": "17f68701-270a-44c8-a81e-da1e5203ab9b-3", "kty": "RSA", "alg": "PS512", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" }, { "use": "sig", "kid": "15c927a8-e1c2-40d0-a325-410423370e55-3", "kty": "RSA", "alg": "PS512", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" }, { "kty": "oct", "alg": "HS256", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" }, { "kty": "oct", "alg": "HS384", "k": "Ot6zIlCpH4jwa8pYWYw2wXfwruuAlEE11C1jPCt5dlXBY6iWq-0isRy9MFK2L4Uj" }, { "kty": "oct", "alg": "HS512", "k": "vPnfAG10Y09YGh+DQQwQ-n1lye8hfaO1PYdh8qr5oOI5gxKaX1GNBgwtSWsFyt7txFpuMs4kf_3wPWIefC2rQg" } ] } libjwt-3.2.3/tests/keys/jwks_test-1.json000066400000000000000000000007151510461717300202050ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign", "encrypt", "decrypt", "wrapKey", "unwrapKey", "deriveKey", "deriveBits" ], "kid": "264265c2-4ef0-4751-adbd-9739550afe5b", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU", "d": "wDvSCv8kxkqIVTYPpgEm4Efs6lKzf-95W8Qej4F1yEM" } libjwt-3.2.3/tests/keys/jwks_test-2.json000066400000000000000000000006221510461717300202030ustar00rootroot00000000000000 { "use": "enc", "key_ops": [ "verify", "deriveKeyBAD", "deriveBits", 0 ], "kid": "264265c2-4ef0-4751-adbd-9739550afe5b", "kty": "EC", "alg": "ES256", "crv": "P-256", "x": "Y--DdSpCZ5oF3j__h-SdNJIwvB5aI4AXzpRErGUjWrM", "y": "_bSTCXlDeU-pZZbOKDUVLANspSIeuKZfTM8rtXFG_RU", "d": "wDvSCv8kxkqIVTYPpgEm4Efs6lKzf-95W8Qej4F1yEM" } libjwt-3.2.3/tests/keys/oct_key_128_too_small.json000066400000000000000000000003461510461717300221320ustar00rootroot00000000000000{ "libjwt.io:comment": "Generated by LibJWT 2.9.99", "libjwt.io:date": "Thu Feb 6 17:12:41 2025", "libjwt.io:hostname": "maClara.local", "keys": [ { "kty": "oct", "k": "CS6sW6VYNv8wx24ovqmUrQ" } ] } libjwt-3.2.3/tests/keys/oct_key_256.json000066400000000000000000000002031510461717300200530ustar00rootroot00000000000000{ "keys": [ { "kty": "oct", "alg": "HS256", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" } ] } libjwt-3.2.3/tests/keys/oct_key_256_invalid_base64.json000066400000000000000000000003221510461717300227270ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "test:invalid-base64", "kty": "oct", "k": "MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5WFk", "alg": "HS256" } ] } libjwt-3.2.3/tests/keys/oct_key_256_issue1.json000066400000000000000000000003431510461717300213510ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "987cd169-c39c-42d4-a918-d444668a3ba7", "kty": "oct", "k": "ABEiM0RVZneImaq7zN3u_wARIjNEVWZ3iJmqu8zd7v8", "alg": "HS256" } ] } libjwt-3.2.3/tests/keys/oct_key_256_issue2.json000066400000000000000000000004161510461717300213530ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "53d9966a-bf73-44ff-ba8b-d8ae6895a834", "kty": "oct", "k": "MDAxMTIyMzM0NDU1NjY3Nzg4OTlBQUJCQ0NEREVFRkYwMDExMjIzMzQ0NTU2Njc3ODg5OUFBQkJDQ0RERUVGRg", "alg": "HS256" } ] } libjwt-3.2.3/tests/keys/oct_key_384.json000066400000000000000000000002301510461717300200550ustar00rootroot00000000000000{ "keys": [ { "kty": "oct", "alg": "HS384", "k": "Ot6zIlCpH4jwa8pYWYw2wXfwruuAlEE11C1jPCt5dlXBY6iWq-0isRy9MFK2L4Uj" } ] } libjwt-3.2.3/tests/keys/oct_key_512.json000066400000000000000000000002561510461717300200560ustar00rootroot00000000000000{ "keys": [ { "kty": "oct", "alg": "HS512", "k": "vPnfAG10Y09YGh+DQQwQ-n1lye8hfaO1PYdh8qr5oOI5gxKaX1GNBgwtSWsFyt7txFpuMs4kf_3wPWIefC2rQg" } ] } libjwt-3.2.3/tests/keys/oct_key_512_bad.json000066400000000000000000000002031510461717300206540ustar00rootroot00000000000000{ "keys": [ { "kty": "oct", "alg": "HS512", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" } ] } libjwt-3.2.3/tests/keys/oct_key_512_small.json000066400000000000000000000002031510461717300212360ustar00rootroot00000000000000{ "keys": [ { "kty": "oct", "alg": "HS256", "k": "0gmNspkRljssLSrldySnYUS-zhtCo5sqeqo_yl7n2XA" } ] } libjwt-3.2.3/tests/keys/oct_key_512_wcb.json000066400000000000000000000004161510461717300207070ustar00rootroot00000000000000{ "keys": [ { "key_ops": [ "sign" ], "kid": "b41ea82e-d2f8-48cc-8771-d8887c1d619e", "kty": "oct", "k": "MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5WFkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODlYWQ", "alg": "HS512" } ] } libjwt-3.2.3/tests/keys/pem-files/000077500000000000000000000000001510461717300170155ustar00rootroot00000000000000libjwt-3.2.3/tests/keys/pem-files/ec_key_invalid.pem000066400000000000000000000003371510461717300224700ustar00rootroot00000000000000-----BEGIN EC PRIVATE KEY----- MIGkAgEBBDBeLCgapjZmvTatMHaYX3A02+0Ys3Tr8kda+E9DFnmCSiCOEig519fT 13edeU8YdDugBwIAmCornholioNiAASibEL3JxzwCRdLBZCm7WQ3kWaDL+wP8omo 4mDv0+9e4uJVQf3xwEv+jywNUH+wbPM= -----END EC PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_invalid_pub.pem000066400000000000000000000002261510461717300233330ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MHYwEAYIAmCornholioFK4EEACIDYgAEomxC9ycc8AkXSwWQpu1kN5Fmgy/sD/KJ 0eJg79PvXuLiVUH98cBL/o8sDVB/sGzz -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_prime256v1.pem000066400000000000000000000003611510461717300226570ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgwDvSCv8kxkqIVTYP pgEm4Efs6lKzf+95W8Qej4F1yEOhRANCAARj74N1KkJnmgXeP/+H5J00kjC8Hloj gBfOlESsZSNas/20kwl5Q3lPqWWWzig1FSwDbKUiHrimX0zPK7VxRv0V -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_prime256v1_pub.pem000066400000000000000000000002621510461717300235250ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEY++DdSpCZ5oF3j//h+SdNJIwvB5a I4AXzpRErGUjWrP9tJMJeUN5T6llls4oNRUsA2ylIh64pl9Mzyu1cUb9FQ== -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp256k1.pem000066400000000000000000000003551510461717300224650ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgzTih0G/1ZdZupZhb7SgO yqsoe2dudSWNPtM4Vt2OYJmhRANCAATvF0TWP69AuhYGeE/syfvTI2E8MI7qnK0K owlN4nv/3e/eWaNrPPdZfROyW+e4PQhL0VRpPyyex8tIscxnFfFB -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp256k1_pub.pem000066400000000000000000000002561510461717300233330ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE7xdE1j+vQLoWBnhP7Mn70yNhPDCO6pyt CqMJTeJ7/93v3lmjazz3WX0TslvnuD0IS9FUaT8snsfLSLHMZxXxQQ== -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp384r1.pem000066400000000000000000000004621510461717300224750ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBeLCgapjZmvTatMHaY X3A02+0Ys3Tr8kda+E9DFnmCSiCOEig519fT13edeU8YdDuhZANiAASibEL3Jxzw CRdLBZCm7WQ3kWaDL+wP8omo3e2VJmZQRnfDdzopgl8r3s8w5JlBpR17J0Gir8g6 CVBA6PzMuq5urkilppSINDnR4mDv0+9e4uJVQf3xwEv+jywNUH+wbPM= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp384r1_pub.pem000066400000000000000000000003271510461717300233430ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEomxC9ycc8AkXSwWQpu1kN5Fmgy/sD/KJ qN3tlSZmUEZ3w3c6KYJfK97PMOSZQaUdeydBoq/IOglQQOj8zLqubq5IpaaUiDQ5 0eJg79PvXuLiVUH98cBL/o8sDVB/sGzz -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp521r1.pem000066400000000000000000000006001510461717300224600ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIAp6rxb2PoAISjCCTx pTQOxv5arJ/N6Xibr0eyOAnlWcVk34m1W5323/6TcPGTtFQgEX9TWjNcp9W8HIuI yRdLnsKhgYkDgYYABAD9rETbqldZd6wCNxM//ZN97gRwXgDcu6qCkgXOt+2LO1WK rT7l15S99zG48gWT4A1WKeUA7OBlakVLSSF4jsokBgDd84efllNTTwACNq7QKhl7 0ZI9QLhydLLWep62IoFbRikG+FpjkVeeeC98dQd2aQVJUsJLo34teiL92bQVujqy cQ== -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/ec_key_secp521r1_pub.pem000066400000000000000000000004141510461717300233310ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQA/axE26pXWXesAjcTP/2Tfe4EcF4A 3LuqgpIFzrftiztViq0+5deUvfcxuPIFk+ANVinlAOzgZWpFS0kheI7KJAYA3fOH n5ZTU08AAjau0CoZe9GSPUC4cnSy1nqetiKBW0YpBvhaY5FXnngvfHUHdmkFSVLC S6N+LXoi/dm0Fbo6snE= -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/eddsa_key_ed25519.pem000066400000000000000000000001671510461717300225320ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIF2OaFGahllWYV+ydPYRvq0ZwCl4sNYP2gYfgXOdimf2 -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/eddsa_key_ed25519_pub.pem000066400000000000000000000001611510461717300233720ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAHUj+14kN6N4i5qNVkfEhwKiCf+tSrvRHstQdtV8a5QM= -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/eddsa_key_ed448.pem000066400000000000000000000002341510461717300223570ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MEcCAQAwBQYDK2VxBDsEOZ7GHEsomxXqrQQZlVId0v8RkzUCa9CBsFZlOoE3fF5/ oLW/j8ccz4SZ1F2f1HZD0bM9kmNHfDp/rQ== -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/eddsa_key_ed448_pub.pem000066400000000000000000000002221510461717300232220ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MEMwBQYDK2VxAzoAJ5dXafOvQWBrUabIHVqTbiDU4Jq7RtozL5jopRdiUGp+rs0K z+f0+2r7scLjclKO9q8r3m9/YGAA -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/oct_key_hs256.bin000066400000000000000000000000401510461717300220650ustar00rootroot00000000000000”÷ôЄ),¢êYêMvŠL80¬þ$Š%qâˆHlibjwt-3.2.3/tests/keys/pem-files/oct_key_hs384.bin000066400000000000000000000000601510461717300220710ustar00rootroot00000000000000Ž>fP6ÆX O(;^*ûübĵøN>JÍӰ΂ŠB‚Žú"æaù5ß…²/ö‚öÏ„libjwt-3.2.3/tests/keys/pem-files/oct_key_hs512.bin000066400000000000000000000001001510461717300220550ustar00rootroot00000000000000À_–§õŠrùË\fµî^ã“RÖ;>ù…I|x³Žä•RyÅ¥ªÔvÓÃX§ ñîz-‚:µiÊY¥”a…Òƒlibjwt-3.2.3/tests/keys/pem-files/rsa_key_1024.pem000066400000000000000000000016241510461717300216260ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALWNRDe+9IuWJjNO CfuUya+HlY07Zie6lWXYOOkYzFS/ZF5jVEo0WSjqCO/fCKBoRwjklDrNupcZ3oGs yiHgA7hTqYFl1sHAvYxqwpct9M4aP6VABwPCxGY2kLbmWrU/V8kUkAuopxyMkWa6 qu4c4chaXC/u7KsCE7U0jwA1UYz5AgMBAAECgYBByM1WMcAksCRpZLajTXeDPerH wSUz8hzeSWndtJmdf7hbpzxMowlHlP3mBPf4P7C1nTXE1PTueXYxoK2hdq2ByS7u 89pqs6o79UYT31EUR6cco2D3SbHUOpeCWoZsbBRIdSV5mk3OxsfOfkqn0b0X6k0/ GJHa4ZZjoYqrYkA98QJBAOpfb0hHsvIe86t7rb3etqXxq1mz3giHTeKrP2LXwC9m TkKgckmVQfNsEu96v+hFwnBQcjHpOVGegYl3M8SMYB0CQQDGTgwXcUFNGwbtX4sV lgwmDpAxiFHHjRMxFu1wbAn1uo8gIxPp3J6vin9gn4z4kGfZXfKQVyM28zXjy01l OoGNAkEAnSUcElSwsRL7wpEMr3Ay+xUNFPo693DxUfgMahPLMnzgIGBAAQJo0/Q0 xgmBvxV3B6OIzdpYqlci967LMRAGKQJBALeDuKrlE2JwtYtslMDoN9vsNEKyfcPm 6TDPn/Ie+WSfPh6md6I/mdanm9NmM8Y/lOtShsxO53bNwjxJgxk/+G0CQQDdyRZW XYAsN6tUw5lMEGNxSmIYf1rjdaFTn+h3s4T4XbhcNZmVuvcAWUWHUWZLx5aT7CvG z2lc9kbt4GkqUlga -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_2048.pem000066400000000000000000000032501510461717300216320ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDC2kwAziXUf33m iqWp0yG6o259+nj7hpQLC4UT0Hmz0wmvreDJ/yNbSgOvsxvVdvzL2IaRZ+Gi5mo0 lswWvL6IGz7PZO0kXTq9sdBnNqMOx27HddV9e/2/p0MgibJTbgywY2Sk23QYhJpq Kq/nU0xlBfSaI5ddZ2RC9ZNkVeGawUKYksTruhAVJqviHN8BoK6VowP5vcxyyOWH TK9KruDqzCIhqwRTeo0spokBkTN/LCuhVivcHAzUiJVtB4qAiTI9L/zkzhjpKz9P 45aLU54rj011gG8U/6E1USh5nMnPkr+d3oLfkhfS3Zs3kJVdyFQWZpQxiTaI92Fd 2wLvbS0HAgMBAAECggEAD8dTnkETSSjlzhRuI9loAtAXM3Zj86JLPLW7GgaoxEoT n7lJ2bGicFMHB2ROnbOb9vnas82gtOtJsGaBslmoaCckp/C5T1eJWTEb+i+vdpPp wZcmKZovyyRFSE4+NYlU17fEv6DRvuaGBpDcW7QgHJIl45F8QWEM+msee2KE+V4G z/9vAQ+sOlvsb4mJP1tJIBx9Lb5loVREwCRy2Ha9tnWdDNar8EYkOn8si4snPT+E 3ZCy8mlcZyUkZeiS/HdtydxZfoiwrSRYamd1diQpPhWCeRteQ802a7ds0Y2YzgfF UaYjNuRQm7zA//hwbXS7ELPyNMU15N00bajlG0tUOQKBgQDnLy01l20OneW6A2cI DIDyYhy5O7uulsaEtJReUlcjEDMkin8b767q2VZHb//3ZH+ipnRYByUUyYUhdOs2 DYRGGeAebnH8wpTT4FCYxUsIUpDfB7RwfdBONgaKewTJz/FPswy1Ye0b5H2c6vVi m2FZ33HQcoZ3wvFFqyGVnMzpOwKBgQDXxL95yoxUGKa8vMzcE3Cn01szh0dFq0sq cFpM+HWLVr84CItuG9H6L0KaStEEIOiJsxOVpcXfFFhsJvOGhMA4DQTwH4WuXmXp 1PoVMDlV65PYqvhzwL4+QhvZO2bsrEunITXOmU7CI6kilnAN3LuP4HbqZgoX9lqP I31VYzLupQKBgGEYck9w0s/xxxtR9ILv5XRnepLdoJzaHHR991aKFKjYU/KD7JDK INfoAhGs23+HCQhCCtkx3wQVA0Ii/erM0II0ueluD5fODX3TV2ZibnoHW2sgrEsW vFcs36BnvIIaQMptc+f2QgSV+Z/fGsKYadG6Q+39O7au/HB7SHayzWkjAoGBAMgt Fzslp9TpXd9iBWjzfCOnGUiP65Z+GWkQ/SXFqD+SRir0+m43zzGdoNvGJ23+Hd6K TdQbDJ0uoe4MoQeepzoZEgi4JeykVUZ/uVfo+nh06yArVf8FxTm7WVzLGGzgV/uA +wtl/cRtEyAsk1649yW/KHPEIP8kJdYAJeoO8xSlAoGAERMrkFR7KGYZG1eFNRdV mJMq+Ibxyw8ks/CbiI+n3yUyk1U8962ol2Q0T4qjBmb26L5rrhNQhneM4e8mo9FX LlQapYkPvkdrqW0Bp72A/UNAvcGTmN7z5OCJGMUutx2hmEAlrYmpLKS8pM/p9zpK tEOtzsP5GMDYVlEp1jYSjzQ= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_2048_pub.pem000066400000000000000000000007031510461717300225000ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtpMAM4l1H995oqlqdMh uqNuffp4+4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry+ iBs+z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NM ZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD+b3Mcsjlh0yvSq7g 6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS/85M4Y6Ss/T+OWi1Oe K49NdYBvFP+hNVEoeZzJz5K/nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720t BwIDAQAB -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_4096.pem000066400000000000000000000063041510461717300216420ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIIJQAIBADANBgkqhkiG9w0BAQEFAASCCSowggkmAgEAAoICAQDJuL/eC5zvQ0ug Z5wB3ICjR0lgtFcJgV3HshqrbRERdvlKzKpKMZX8oSvyx3IWGv89qwpvVdtXsbz+ B23FT5KXl0Yj2HybKYhDtXNvISHBCqPN3IIqjPaV68o+COxMM33chCI19I59zipS 7Hm+JZBo9a3dvOm85lcdwxRvMTP+NqEpk9T+Eyr83cOugTrEVgH3V9vvioc4LlEY w+OyRRgo6MK2P6/6xmrOe5yR/bHRravlf76CyoZlPx0dpf2ybKukFtX1j+DVVn4I 7xcV1GIda2H3wWeVsR4eytduGj0ITYYQAJa9FECkyfW5KmCGkQ1uR5+ltgIg3u2r pfiUq9JhBkBGIuQPUQsdyZYJf5ykiV/GKGsqlWdFHiIsk2XfdW04Eg9oy+2J+iOQ vGyLd23ImRwQVAj+Rdspbwp3DkV35Q5yxB/w8qTuT0uAVofwZlEWFvBPRsuOPLRQ hXk0MdxKjPJ1Xa5CH443oGzKAJK8wTxXiW73PvhGrdPt4/bmkL5DSY37WftAZAvj MqyGQo2HpHH5AI/SFUY2iwvoygvOx6W5qlOqcetAQdNsbUmb5Yv9x6ze2Efs/JLJ YolxRD+JYEPQUWTJrQpO9N9a8GD9Y92oEcshCHqJ7/uU4XITnoVtFi5FTRwXz43K QD/oc3bjukW3DU9KBDrwOq2/1tkwVQIDAQABAoICACMGO/IezBHS+meQdcrw8Tjo YLo0tcQFvTW2G+FV35fLs38kSBD3yRYDGfFeZdWmvFiFwRsRqjLwvmLRAWM37Lj7 YAdLSF9cd7dh4vgRpZ2x7j0JI2Sl8w6W0ReyTuzwJ9NI8fOyUadQS5L4Ui8MsKU4 uwZ8DY1p5Qha3cpsnZ1u+M6SR3IR++3Jx3ceIwkB8fdzPtG5mL7Nc/E72eYTDx3T RDOGnVSKbPMLDWVfyicg427GnlpxNaKQscp7DrCTI74q5N1tLNl92gZNFRIKPTrk cS8mWojoJtWr3HnWfnBZnYRbxdBwmsTB+DM9Q2M5/j3+m56XGomAi325JI8TwkQd W1I7ArELEbN96LPFQb3ynjyvwf2OWw7CU4f73yYlX5aoHJHa9kf0Q0OdASy/hKeO KAI7d8IfV/OXHAEF6FSm30sCwA4di7GRVf4LIlS1oxmr71eN830c8Lm1bB/9sNh+ 4H1ztyaFx7jV9zvuVt4X6zMRUOzs42963KtvK5Go05aBu3wVUpTZkHN93H77ygi3 XTfni+sSuJP8anfdgwvgxH6kIEyrFbMw5ZlYkTDjF9hG5573ucbLgMoXXRXUWpq6 62doFjvlr00eTTKPdb4pbqlsWw1lqgJ86b2Nl6QHlr3Mjbsee1CKlrG7iekQwYwM lbG7xUSMwcTWynxM0ebhAoIBAQDwUVULbMcFLz6jeLyeK7c1jmdwm2aRP7mGlqDn rutZ8/lXOu+6KHQEBbi3SAcJAJxLy6v+lDubvYJ/wUDrRrxLZ2N61OrzFt/WNDRp K6qYm1EEfUNPaoplPo4dj0Q6Epmk5DMU+T+uxwcdUf2rw8O8dVrPzl3BFtvUPwSp EMNy9uqnJbDAxaSCd3HQjqpX0ZNwrofMK0khkdCxOXWTYgR2F5rCFmtdiU8QjVhB tHjiXHF4FUf4/7V0SGISdBDCP13OV8+x6pjmR/zVJPhhlk+ixl5DgXI678jGwmoG Y7bum46SZhd9tuFMyRIlJ15LsFq2pCdtQGLXSulkI/a8NtXZAoIBAQDW4qUWXYV+ wRB+rt3saI2o2sRifErnaUfX1i+C9/Lbsu2cOmkERKvlQs9lwIVn2R1j7xTFig1m Madn4dUEQWFs4jVfrTp4uy8jiucz4cbfdwRhJUi5x5R9z44eQq5Yu85LZ8T3xQuC NU0i1gC83UV+JSmS3TmiOn/g49kxYeZ0NXbi7j8EPOqv2noD62aEo8e3LF1pfbIh czqcU3Hi+WaGAtn7rbGmstZW5PlIKjfQ+icq2xuCmQn9sT/H+Bpwwfwn40Qay23+ gOy8e+9PdEYmIa941NA9naYqaRlpnnHxNOmTssTDno8KfbWl+0G4fRuD9oy8Lh9Z +Hju5VOAlrTdAoIBABY5n2DgHYPYO7XIm8ERD++PDPf4F0NFnnXZBmaG4dM+4gd0 NumDhj88/DlPGv91I/9KhcyUjvK3UxNXnxZjQ1TB6gxZFqWGrwrTZyl21V8pthNx NkFo/AWjBGetcUThpX3/cM32wzH5zCmlBI3XHAoY3F4tmrQZ1hjJ/zdXioveVBND RBZ/8Nf0Df2YxB49DqK0MXDra+cD4kYRp1MLFJiLVE+w3RsYcMx6Ffh1pVxh6kiN x0s68uAfNZq5Szd7vsQvkNDGfn+FltdrhOEZkqHeMKeTmCnlNS9UmZOfszJcBpJ5 iKCiwjFkwx3Whzz+wVT014SeGMYKco1FWjNL6vkCgf804ZG+70Tq7JgilOYIR7KU 20F4+x1z1XTYqN0IXfxmFKJkz/sIEd47jTV81OP/qm6RKUTzWAX0IEQSTIEfivdu 1DxOT1MUYvw2wvgizG0kkSWCwqojDfp8+5b922sMaytZYzAVyWgLoxJYgFGuKMXx RTP18Hs+cScHMQtCG9Waw41+SyM258bZf+qHDGcuPR/o9AII8+XiVXkW/3IHaVjR oeIDDbuqSlh1CeRO3hTeWLFK2qDqgr7yr6wCigv3s8VaC5O3BFkNSKz5tYYvB247 9A46riSRBTrfNP4L//IKafsRXe0ONvb8nfMV5b9Gp4Md9o6rwK32di9MmyLxgiUC ggEBAM/lJVgsyIlU1ug/DmeGZQmth0JQdkgVsk7vxM673y/0syLxM3Wk/1BbySQ/ lcIckFN43kAZze9bHOPYtiLvvqb3EZpK8il133LagzddzsXvKiM8xu9GElGTScaG oNmyVk5vL8s6cKHexB0Ce0y1Ri23KywDY6RUgqclYyVpyBRZYrAm4E24voRrWIOu cYb0yjOeMJV4pmEzm8eN+Pqt6Qc60Zl+izvlDIa8qMq7ksFVckB0RR34iqka8y0A hK4V1zZvQ9ZENlO2uUj/WR+/C4NWWRYtfsKYU84XuSy3IuUfwaBHHychmyna1eni nfictCHvTZXlDWYlp5Uf8IDXrd4= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_4096_pub.pem000066400000000000000000000014401510461717300225040ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAybi/3guc70NLoGecAdyA o0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV/KEr8sdyFhr/PasKb1XbV7G8/gdtxU+S l5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQ aPWt3bzpvOZXHcMUbzEz/jahKZPU/hMq/N3DroE6xFYB91fb74qHOC5RGMPjskUY KOjCtj+v+sZqznuckf2x0a2r5X++gsqGZT8dHaX9smyrpBbV9Y/g1VZ+CO8XFdRi HWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvS YQZARiLkD1ELHcmWCX+cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dt yJkcEFQI/kXbKW8Kdw5Fd+UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHc SozydV2uQh+ON6BsygCSvME8V4lu9z74Rq3T7eP25pC+Q0mN+1n7QGQL4zKshkKN h6Rx+QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm+WL/ces3thH7PySyWKJcUQ/ iWBD0FFkya0KTvTfWvBg/WPdqBHLIQh6ie/7lOFyE56FbRYuRU0cF8+NykA/6HN2 47pFtw1PSgQ68Dqtv9bZMFUCAwEAAQ== -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_8192.pem000066400000000000000000000143701510461717300216450ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIISQwIBADANBgkqhkiG9w0BAQEFAASCEi0wghIpAgEAAoIEAQCzRcxyS9jTopbz Q38XPmsElQ3cGWxShWJliOlnLlRuE0C33q12egwxcnDq93378NbAESCmrtxFSxar WpGSpIvPx3FNDw4azFq4VVNZFNfdkxD9i1kkMZrX6yeTGGwvGe+lfH8o+BhTVZOo HjoZX6K3Cxnr1LSer5w0yMgWLPpMkw1U3AjnIR1hSKV3FvRiYa79kFAyKFyth6wA lJB7M27XRi+KhIhBQBIeN9VwUwwu1lFi+LuJ0h96NvuJbas+U7uwXhk2FNpKizMH TcG+c1mOKQ5EGcPPvUCAwqpb8i2Wr+4y4xvReU8KItmBLzegt9K8xBCyl46SzfK/ nDce/6wQVetJnLK3dI/Ee5zeCCBKotx/MJXg8b+nYfvLlDqL1Uc9oDz1lBeUpZAL jqyuKk862RICTIlT00n9aRg2edfNCIoDeR83aYsI7Om/rZIahSsSyzJxO5UtQpPM zvotphD+UZultKtMa9kSabc4mOMWvmvYlI+bMbD7l05Skn6Lev366b6JQoqk6RMh JjIJdjXvD3J/XdbgaazuXlclT6lEiUGVvcfZAU3a73CnuYRdg4nMY0akDegcUpSa fjSOXPnT102kZobhJfMkbxSS76ZauNZayeH1VxlCGAspWhsmyaZIiSpykkKK3KXb UsCTsOhQHQZ4wIU6PM+FnSdwPtFUHCrvrYDqtyjC65jwvBuun1q42DPOEcev5zTV oW+pltRPihrFIUifKuhyzIKolhAQbewMro0zE0g+z00jIL4hY9uq/ERI4Ykrqsua HZYJoPSKsK9uhbnLF/ERoK67dZZQUUR5xHQq8dFCKD90VvYnKjh/KnOp1JG0C7RH v+o6fqkuwQ71ex5CHu5HN1qDBv0KN0EHycoHnNVDv2CzAENjb6AOXVSmHLC1P4hK viQtSbe284VBmOPVI1pl0tMNBvE70ZaPBqKMhBsB0xTR/2QTsUchHe88Qwt/A2Cm jqETK6RMF8FNPVyrx4dC3RZsMsNgVy4DV8Vr1catk+aYYKhXwAUpBpQ1Fwht9Faf KQ+z2gkqLrSApuGghK0ir8ORX8Hw49MxFNsWtqdIkNo7Y/o7QDljtF7OGOerJvSi ImwqDvj79NyAv+1kH5gHcAbeB0SVWe71xa5HYWljfkvVYCT3MDjpnh3FDIvuc2lA ODmlfhDyxcrbHc6/VWZjLVOZTGm/V4tMzG2zTJdgNAUZwNLhW4N9lk2Qhcw4wSjj Ll9DDXU45wSWm/JUxSRiXQuAm8iptQLMK6WSuu4oo890eu0m+EibKyBPjqVuMo8Y NPgP/qoi3hSpX0H3r081up+oU5GeaBofegXfHFsBB9xqx9TEI/EKFik4+zbmV20A BIACoM5HAgMBAAECggQAazXNy3iyhfZRIc/2vFbWt1nQfRUzI7KjIqebNdqOIXog FRX1VMouao/PGaXC0R25wAk+JpCiKEp8lyNFtZX0CuFyT6w2Oi6F/oEApGCDq/3c hlSEjdGgkYoPE7fiUtTG7YejoEOmgIfIEx1oj24TKDZaXR/KmK/a0fJVPnXNhmfW 7C3eoSK7qEdCtRKkOgXDGd7pJuXebuSZJ4uxUAx1OAbAPa1+ss73Rt0LJu5zdbsz 1uV7ejOQIY2qJgjRBSgcMaBEoYQc+8F9VdvZhuUC5LKG1pE1+hFq9tXz/aK6QsiZ whLxuvc6Hoyy2L/9G39zZvI2LifW2tKRXqe0izRJmUdYu6AbfP0XUWC/ckUX0qrN BL9wkqLgg+BkLd5KmP+GaENg0VisNXhBybeca1fgJAhW7csJwXi1Yfgsw79gID0A FI2l7oSO4lqUe834dyW2mbmtQ+xnDTconq4VDaGnvf/d/l4qpzxEB+/y48UC4cIl StOlgiFYf02ASH9VcGKwaxLIoNuLgI3mo8ds2x23qWzqg2MCMxjfk3oV0blvOA6B i2SAlLVj8w+IprWahDY6/WFNiKTMb8uvFSluksjlmxvCUhQCi7kfTGWlvy3UpaKu hoL/P7LD5zPr0OITJMIpUG2/Vd9ELjlAcwZtJqYAeJCzIxm3Uxm03WobgNQAabSh rQCpUF+sZEqOPfQIa4bpRk+IzboCzdBBuQw9S8H1+yI/R718EvbmS3QhKAG6C6BR bafo+SLTfMGKARMACqq68w2FNYLblodBYGOdSf7LeSc8g6uA9UPncMfg06HOmkw/ lIaOVseJG006u9LsUE6obCzNKGy5vtz0gCawbuc+S5ZaR3tE18Nu3ukNtZVv+L+U ThAlVn/QDm4uMUmNy6Uxn7rta98auPE18InaVKJEDAFJ/pljX/XI6M0Nnz+lJfrl YTqPWjQtazaoohJt+OaVeK8MLOzRfu1FLllv8w2I1VXZR2rEW0UiwOC7+q5PgZE2 qo7pHFnG/XfnP64vxa3I4Bv+a6zAbga1fgBbvTooRgqf6EExklZyfipMCtpnbG4c Ght//zwUOvhUn6POHCgGO3OYhXjr8ArUhg2oQwGyUkGlzQGLGeopocFCbDMb7i+k GMhuigwKLjBMUF6U3TdC532wse0DPyDHBCLyxD4dPiPvFspgcNaw7x6sVWB9vN2J xXUJVGtnIrHAZQ2evGDtIeJnyFhmQ3Fa8RF+519xHYyX6Vu1KGEI1yT+ALSkUvYy cUip4zyT70+GdknExutxIWtEMVpfXzxIJVt9S6gm8pUZ73OHVByUV92FgQCWPXnk jVPRBU/nnmav05YqCikvPx5SOVV/r64h5eNklhelmQKCAgEA586CvRRJQLPsOzFO jH6k0aCQOdvi5MwuLkdaBnAKOZRGiXtVFV/QwnXELmIiDCcPCLXagZ5R9XKwQp8H nzgvbGii2EjOFZ0GQC9FtOXX+E5vpFrg8eYRrjCAHB2yZ+B/1QrLOYbJhZZfaSZ5 8WC0jrrJqa1zvauBjy2EdtWykIbCV29UWdzIm0kH3Tgi0f3chgt7voOMHJ87jknE 4jGLYbRM4Gje92Gi3WWymTSwN3ZuqWZvWdjPTuz2dk2T6sGusyN4cXTjmRy8yDMg xifJkhyxshW1ZHIK/6RacDi0w562rhz9kRRvbwtK9copeNaudQpvUJL+aPtVWc4f KNNatpaFhhsHo1jTOdMvx2Mn7AxDreUiTuUO2gDEJu7/LR7MhSdaXBVUUQVFNZXw Hm0tVM1OH7rylU+OBNUOjb14zaClRtZ/97GoQIgRXQRqJ4K6nXFwGXycyYc4bZt2 +tS4HVjUPViT4hZr4JXKeUSfY/rzE3i9QjLhguKaRXJexh8TxGMKg1DxMUv8kEYS 4Dt5V1ZHQnGwN/lRR91B8OoreelOQTX4YIfi7ZWBaeNqBK4YRTQ5k2pHIi3THpFK hyQQGXXuAcwUcxhdOOWoVmlM37Qmfty/P+Jac8z7Gos4aXDRS0NXfkLLCFGWzhoQ Z0jh/p34xiF3cO0J94Wu/xHJPsMCggIBAMX7qnjl9kPyqA8YZUFHe/8mFYSCbPX5 /ufVt55DSwA9wscairG2fETKO2xeu4m0zO9iShOvzEydTs2SDMtl1tSHf4h43Hdb Lg1ekfPMDmU76pPnsPO0bCH+c+1kPvhaXLhAUPBNBjhU3SuaMH5vRGBJIpCrAzu4 tCKnAP56QZoJ702CAAtvbU/ZUGl9lV16mcgE0BVjQVVqs1srno0WTtV6Yu4J4oRO z8KI7Bfbvq6UhaErNpb0m1Bb5IExdbNjh43Eot/F7+WooOKSh9kzpy8KzrgrmI0k CRR6bibh91oY66SDJMmwsNQi4ajKrNUmP0qlQHRoXw4Q1Ot9kea/DCarm0ou6jwh NlSyl51PNrZMgN16SJR1sAsoeR1tSmQdQViu8icYjvIraWDixSXyi986c+KJ5QBR o1GMxxDuGVahSTjo1cj1Ps/sqq+JRqHIkwlt8J4Oujlwzxjy9pr/omZw49iF1GGu CwIAKJZMp526TkAYoVzCwCELv+ZGdVRfpo2NEqL9J8fv/E9+FJbvbvsxTILjhkkt 2XTGlqzt1Mcb5/iXmzme6Wd0S22i2MG+u5FleU3C2qAenOU7/l1YgSbMe3sJ6SQD fvpCLP0nZMv2cM2s0Zr5msvfqqRaDbMshgcY2hVgILhxIF+4FPwZyff1lDKpNTcr G8tEH/dTe8ItAoICAF6UkBt9z3Wq89QjBh2k/rLZhH9XDHi2JpGTY1QFGubrbOxj eg/CjHcLfgQ+3g1/Uk8HhCQm6OHw7aIBKSb50b+14dvFuPBwpUBDCXoJ3djeiAbT XbzVVplwCJVwOH7RxtayFMFgEZGEDWHl5RNrlcA2zlmBABx/gdldhRLHlpgJo/nw 3sXbo65YWfEVGn/7yKKYxOCy49Q51B72UnLILEqtOkDGCVN+bulOuVRxfwTiOby8 oupR4CQf41/Zv2SlqhZFfrssKkEqzIwS8Ghpi4EmXAqBeQWG0p4D/TKUsIywkXDx OzSa1ezE+szWs50uWvg+TbTehRdolSaTR3ts4TJmsAxLsw4fC/AoDvKXro5NYr/t IdZ291xTu7T3Bv7t9hzONbwkp8Z3FAoNJ3ACs+BJ9HpV2Oy7DQNDuzByAnxD86u3 kXcK8c+CtTLyvi1o1aOvyUFc6sv/dDKkoCMv7/9pYw+0uIIjC9kSxQ49xZsRpWRo ezAren/g3XlAdRL5UyNqFbwGpqKqkl57ePAs1BGijmi54mC0RUnBKUqXAS4410kc MD+SsjCmM6t0sqk+L4DtEiDn2CZF9EIgnfwN5tO8nmP1VNKxOjgg3FKFnGwaISrZ /t6eCLH/DOWDsHy1H3BKBcTqk9TNFW76i37Y6fztj7enqAhXbx2jWgeQxj/pAoIC AQDBKJxVf+cYu/KDZ8XCPsAXW0y7D5THF7U+8yBGZFkUTy1tm9OdNvFfG/+F55cI 70DSfQ7Qzj+AsClmHwwklaNXjys6NtDCEk+H87BqL7gLxL1EuFPIMUsej2cDQT6+ h0rW6MkO6dcbtpBiLfkKIfyQBEqY4oAxEC+Pb2hk31qJsw+qix8ICRqZQOhXQ5Mq tKa8oxVxCHmBoKyEUrZJ6G3ZkaJbo4FAnLPOlE/jpx0OrxEBAWwtM1EkwcLa2SqA bqaeBi7yK+e2JSNyaovnuaFvIBg3TzFy4qmJNTmq7eOqH44n31tQ+/ZJwg5v4+1j uAEgDsIn0HyM+JcDemuSuOpeACdt5P/a0nxzfhq1+8bhbRp8+wU88uVivYYM08g0 jOZoY6cVxbwRQZF6WUUHlPAqRpkxeF/YQ84XjkXZmrNV9d2+jEun2L4Dll+hC0nC JjJujLipPK0rxYgIS2OWLbqAP7vMUCW5d1h+BzGSEg+mr1IQ7vbfzZItq4z6Wdu3 CesxR2XbZyocw2NjGxtzdv7MTHjdaqZlVzpF2ErBRPjHmc5kl2V2fjgyGyBMQwk/ XZsaa+pBl849UiC49iNhZyv6cp42mKDB5jdIarAB/SE2baX4xJdroAMKzZlq6AFd wh6xZem/2R2TVavEN5EhtPd72DlShAvLW1+unTSi1Ox1sQKCAgEAg9n+wQtZ60IW CxAuc4uHUofpCQoIeGrZ9xLnH0tmFRJnJ5ufNxzHj5oWwKSxpm90bDMnWutfirGH h5RQ7y44IbYUV2Pbhz7+gwSjNlhLec37PCWuVyUmkHLma07N2ZspUOT21/uJ4WD1 XazuP+gA4sGiVcLs73q21mUqVgXR+s+bCM0tG1ZrwgoYsKg5Dek34HsdlzYpWYMs qXgKmwJ691ZXlRR/HOLOKsfNfoprW9QQ2kVGfXO/0lKK5p9f7CceOPguLqHn0zk7 CB09OVjCv6eTUL8UzswQMo67nO210Q7JKuXAWxGYApQB4HubNe5Ic+pdiHz8Iwbm fcTYyOGs4RtQZY3qzB8z9p66y62rzasPnUXSYs3w4nrKtfphC8b5voJB+QDJGe1y WqL95dHYJxdGHa4Kcjc8jQtOCty8pItvGdrVkmuzr0P5LziY1jJz/sPj5b4l2jJB 56g1UnKzBmaxgPIQrIdqlDiuEBOerdYKVLiq7np2JC5rKfoYQhdTCj12Nwm8cpOP 3jymz1XYEUqYc46oggBPor09edLwhOqr+30Bv8QCAsvwaBYG0Ru2P5l5mgCOmf++ dW50xYg+MPHJr9WK38x65kAi+vG9yHeoS++bm26CbVkSGrwKPZI34Fku6i/FUayW EtoiU3WKndSOrpIVOqOQTQU54puQoOE= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_8192_pub.pem000066400000000000000000000027231510461717300225120ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIEIjANBgkqhkiG9w0BAQEFAAOCBA8AMIIECgKCBAEAs0XMckvY06KW80N/Fz5r BJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9+/DWwBEgpq7cRUsWq1qRkqSL z8dxTQ8OGsxauFVTWRTX3ZMQ/YtZJDGa1+snkxhsLxnvpXx/KPgYU1WTqB46GV+i twsZ69S0nq+cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu/ZBQMihcrYesAJSQezNu 10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZ jikORBnDz71AgMKqW/Itlq/uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv+s EFXrSZyyt3SPxHuc3gggSqLcfzCV4PG/p2H7y5Q6i9VHPaA89ZQXlKWQC46sripP OtkSAkyJU9NJ/WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ /lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw+5dOUpJ+i3r9+um+iUKKpOkTISYyCXY1 7w9yf13W4Gms7l5XJU+pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz5 09dNpGaG4SXzJG8Uku+mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7Do UB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr+c01aFvqZbU T4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC+IWPbqvxESOGJK6rLmh2WCaD0 irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig/dFb2Jyo4fypzqdSRtAu0R7/qOn6p LsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2+gDl1UphywtT+ISr4kLUm3 tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyuk TBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJ Ki60gKbhoIStIq/DkV/B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74 +/TcgL/tZB+YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q 8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11 OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D/6q It4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDO RwIDAQAB -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_i37_pub.pem000066400000000000000000000007031510461717300225050ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/7RTQX1xlllgo+aqo5z d/+wqaRZwFWp3JJIUXryJ4d153J1gEYdz4RkjFO0X8kpv8qb5hdzWhhZHSItD+07 LaQXP4lSUuiK1lJAT/YW51D37nCkWm839gAqEGdsWsYQCvqJKSJr4pWCZTEx2MEf ikmmnaXPR/VOVgZSj9kIoKo+kFwlw9LGVBHYAeR/W+l5DJQK6Yha8Igi36hnvZqq HcQ4gkGUqEc//Tq2nyYNwvAN3ieZvtvL71rFW26FnuA4OwDER+TYSkAr8Z4wH2Ed Gno1GZQAegIm+yWblleCaBVOnlk8VcDO9PecTiAFjjWAbQiaFKlkf/plD7KE4tAa mQIDAQAB -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_invalid.pem000066400000000000000000000017351510461717300226710ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDC2kwAziXUf33m iqWp0yG6o259+nj7hpQLC4UT0Hmz0wmvreDJ/yNbSgOvsxvVdvzL2IaRZ+Gi5mo0 lswWvL6IGz7PZO0kXTq9sdBnNqMOx27HddV9e/2/p0MgibJTbgywY2Sk23QYhJpq Kq/nU0xlBfSaI5ddZ2RC9ZNkVeGawUKYksTruhAVJqviHN8BoK6VowP5vcxyyOWH TK9KruDqzCIhqwRTeo0spokBkTN/LCuhVivcHAzUiJVtB4qAiTI9L/zkzhjpKz9P 45aLU54rj011gG8U/6E1UShIAmCornholiofkhfS3Zs3kJVdyFQWZpQxiTaI92Fd 2wLvbS0HAgMBAAECggEAD8dTnkETSSjlzhRuI9loAtAXM3Zj86JLPLW7GgaoxEoT n7lJ2bGicFMHB2ROnbOb9vnas82gtOtJsGaBslmoaCckp/C5T1eJWTEb+i+vdpPp wZcmKZovyyRFSE4+NYlU17fEv6DRvuaGBpDcW7QgHJIl45F8QWEM+msee2KE+V4G Fzslp9TpXd9iBWjzfCOnGUiP65Z+GWkQ/SXFqD+SRir0+m43zzGdoNvGJ23+Hd6K TdQbDJ0uoe4MoQeepzoZEgi4JeykVUZ/uVfo+nh06yArVf8FxTm7WVzLGGzgV/uA +wtl/cRtEyAsk1649yW/KHPEIP8kJdYAJeoO8xSlAoGAERMrkFR7KGYZG1eFNRdV mJMq+Ibxyw8ks/CbiI+n3yUyk1U8962ol2Q0T4qjBmb26L5rrhNQhneM4e8mo9FX LlQapYkPvkdrqW0Bp72A/UNAvcGTmN7z5OCJGMUutx2hmEAlrYmpLKS8pM/p9zpK tEOtzsP5GMDYVlEp1jYSjzQ= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_key_invalid_pub.pem000066400000000000000000000004001510461717300235230ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtpMAM4l1H995oqlqdMh uqNuffp4+4aUCwuFE9B5s9MJrIAmCornholio7Mb1Xb8y9iGkWfhouZqNJbMFry+ iBs+z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NM BwIDAQAB -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_pss_key_2048.pem000066400000000000000000000032441510461717300225220ustar00rootroot00000000000000-----BEGIN PRIVATE KEY----- MIIEugIBADALBgkqhkiG9w0BAQoEggSmMIIEogIBAAKCAQEAk2H+nc6pcHePEz7l iCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm/eFtY+zEh qgOTDipc/aXRhTZg71AHh+GgF7EtatrDwXs0Cs6M+dhF0MZpgqrUt2RgkjMD3Cfg ztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o/kEWNGJB4djr5iJe k2ZOO3Ij3iPw3bBx/nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWc Bp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaA mDoNYQIDAQABAoIBAAx46zobYZwHbVlRf5ovbMXp9P8CpG6kImZ4liLt44WXRgqT lRCm1sYbqvgeBb5QKq/a9bzBDbXxQQ2TSFTuoLS+4aGDgibvhaXq7cafHodMWQ2x /evzPntScUkf3ZsMsQqIsdMW3W2x5h5s74NObP0y9TbkWzSWEjVCV2S1sStjSppc PpT0W9+tJ+x+ShUlxAjVgbCPa5Cbj7zvx5hGKLYgKLacZQtzfXGJhXPhvluiR03B ewkdg2TmrhNzCOYyaWvqsy1yigqYU6vj5G3jNI8IF3IkNdUWgt/SlcuGKrlg06bY pW+C4BkAjA6lSHluVZwQZobSbwCYT6PxOUSvjAsCgYEAy6sKp6asFY+kv8hFEh/M Px+eTmZqr+g+CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1Cw jqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG/AQ+qLWay/WPmyjPXsxaF9aFM +QjTSW12wWcIKGCP0KSrhsMCgYEAuUCYSXKi+4h0Z43Ol/jqy1mCD+yaICt4CtJe ZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB/mPmKUimYCrqlBzhR h7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve/RPyMI8HYRS5kKGmvqhVpnwT0iVq5K RCERgQsCgYAcUTOyC6JxfP9TCu1Pj8w+Go9QJz0+J/Q3/14Q0DEklQQA+aT0Urws OwL4Qiihx912t3z9KBWVmyZIVELT44woyS8nR3EnlakFun0axlF4AANukqcV+Q25 IwKu3/pGk379wQGx6Wn1QzACXmdRt5OULH3z/5w7V6/yrTpRsBOJMQKBgG5hD5wL wxLOjlU5SFSCyxuY3Icyee8bF26TRA1WcxH3ANS9UNKa0ExulrV7+vzJqHA7zl4F ud9t5Hjt9oWastxqK0GjaOVTqorvwpxzfZizyUI7WgO0bkQVGBFAUIupWWjbEdQ1 NV9CN8xW/R0nNb7ieB027cVU8MXnGXcYoP5bAoGARhNgmhA5ZNiHU0DoDoMzeaXV pwGxUZ/QkAmC1mc11SROp0khJmM+XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX4 2c5nYItgo6ynFSJoSUkl/nu4tJysoCSh+3HtUtstooogDPQKUf4A9UAzgf1vrl95 SRl+oL8MaVXlHm/o1KQ= -----END PRIVATE KEY----- libjwt-3.2.3/tests/keys/pem-files/rsa_pss_key_2048_pub.pem000066400000000000000000000007031510461717300233650ustar00rootroot00000000000000-----BEGIN PUBLIC KEY----- MIIBIDALBgkqhkiG9w0BAQoDggEPADCCAQoCggEBAJNh/p3OqXB3jxM+5YgscuLG FwW65LN44Jk8kKN58H6RCnnGz7vKq2l4OToI5vS83yGqZNyZv3hbWPsxIaoDkw4q XP2l0YU2YO9QB4fhoBexLWraw8F7NArOjPnYRdDGaYKq1LdkYJIzA9wn4M7XyVS4 uijnhHMH2e8247rxBnO6b0K4rzZLL6cZTlVQ2LRdKP5BFjRiQeHY6+YiXpNmTjty I94j8N2wcf5wTuKdjV2+4/JhXJ288gATTxsK/eEsl5lkzYbTGFK32KY1nAae/R+h cVx0btCWWo2AiHveUa8UNty9cwSGcIQ9VSYGFRnYTHwfZn26OxZsQ8GGgJg6DWEC AwEAAQ== -----END PUBLIC KEY----- libjwt-3.2.3/tests/keys/rsa_key_1024.json000066400000000000000000000017441510461717300201400ustar00rootroot00000000000000{ "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "0023a6e1-f093-448d-9038-9ff168611b86", "kty": "RSA", "n": "tY1EN770i5YmM04J-5TJr4eVjTtmJ7qVZdg46RjMVL9kXmNUSjRZKOoI798IoGhHCOSUOs26lxnegazKIeADuFOpgWXWwcC9jGrCly30zho_pUAHA8LEZjaQtuZatT9XyRSQC6inHIyRZrqq7hzhyFpcL-7sqwITtTSPADVRjPk", "e": "AQAB", "d": "QcjNVjHAJLAkaWS2o013gz3qx8ElM_Ic3klp3bSZnX-4W6c8TKMJR5T95gT3-D-wtZ01xNT07nl2MaCtoXatgcku7vPaarOqO_VGE99RFEenHKNg90mx1DqXglqGbGwUSHUleZpNzsbHzn5Kp9G9F-pNPxiR2uGWY6GKq2JAPfE", "p": "6l9vSEey8h7zq3utvd62pfGrWbPeCIdN4qs_YtfAL2ZOQqBySZVB82wS73q_6EXCcFByMek5UZ6BiXczxIxgHQ", "q": "xk4MF3FBTRsG7V-LFZYMJg6QMYhRx40TMRbtcGwJ9bqPICMT6dyer4p_YJ-M-JBn2V3ykFcjNvM148tNZTqBjQ", "dp": "nSUcElSwsRL7wpEMr3Ay-xUNFPo693DxUfgMahPLMnzgIGBAAQJo0_Q0xgmBvxV3B6OIzdpYqlci967LMRAGKQ", "dq": "t4O4quUTYnC1i2yUwOg32-w0QrJ9w-bpMM-f8h75ZJ8-HqZ3oj-Z1qeb02Yzxj-U61KGzE7nds3CPEmDGT_4bQ", "qi": "3ckWVl2ALDerVMOZTBBjcUpiGH9a43WhU5_od7OE-F24XDWZlbr3AFlFh1FmS8eWk-wrxs9pXPZG7eBpKlJYGg" } libjwt-3.2.3/tests/keys/rsa_key_2048.json000066400000000000000000000034751510461717300201520ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "alg": "RS256", "kid": "28c243a4-a9ac-473f-ab61-d3a68f408279", "kty": "RSA", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB", "d": "D8dTnkETSSjlzhRuI9loAtAXM3Zj86JLPLW7GgaoxEoTn7lJ2bGicFMHB2ROnbOb9vnas82gtOtJsGaBslmoaCckp_C5T1eJWTEb-i-vdpPpwZcmKZovyyRFSE4-NYlU17fEv6DRvuaGBpDcW7QgHJIl45F8QWEM-msee2KE-V4Gz_9vAQ-sOlvsb4mJP1tJIBx9Lb5loVREwCRy2Ha9tnWdDNar8EYkOn8si4snPT-E3ZCy8mlcZyUkZeiS_HdtydxZfoiwrSRYamd1diQpPhWCeRteQ802a7ds0Y2YzgfFUaYjNuRQm7zA__hwbXS7ELPyNMU15N00bajlG0tUOQ", "p": "5y8tNZdtDp3lugNnCAyA8mIcuTu7rpbGhLSUXlJXIxAzJIp_G--u6tlWR2__92R_oqZ0WAclFMmFIXTrNg2ERhngHm5x_MKU0-BQmMVLCFKQ3we0cH3QTjYGinsEyc_xT7MMtWHtG-R9nOr1YpthWd9x0HKGd8LxRashlZzM6Ts", "q": "18S_ecqMVBimvLzM3BNwp9NbM4dHRatLKnBaTPh1i1a_OAiLbhvR-i9CmkrRBCDoibMTlaXF3xRYbCbzhoTAOA0E8B-Frl5l6dT6FTA5VeuT2Kr4c8C-PkIb2Ttm7KxLpyE1zplOwiOpIpZwDdy7j-B26mYKF_ZajyN9VWMy7qU", "dp": "YRhyT3DSz_HHG1H0gu_ldGd6kt2gnNocdH33VooUqNhT8oPskMog1-gCEazbf4cJCEIK2THfBBUDQiL96szQgjS56W4Pl84NfdNXZmJuegdbayCsSxa8VyzfoGe8ghpAym1z5_ZCBJX5n98awphp0bpD7f07tq78cHtIdrLNaSM", "dq": "yC0XOyWn1Old32IFaPN8I6cZSI_rln4ZaRD9JcWoP5JGKvT6bjfPMZ2g28Ynbf4d3opN1BsMnS6h7gyhB56nOhkSCLgl7KRVRn-5V-j6eHTrICtV_wXFObtZXMsYbOBX-4D7C2X9xG0TICyTXrj3Jb8oc8Qg_yQl1gAl6g7zFKU", "qi": "ERMrkFR7KGYZG1eFNRdVmJMq-Ibxyw8ks_CbiI-n3yUyk1U8962ol2Q0T4qjBmb26L5rrhNQhneM4e8mo9FXLlQapYkPvkdrqW0Bp72A_UNAvcGTmN7z5OCJGMUutx2hmEAlrYmpLKS8pM_p9zpKtEOtzsP5GMDYVlEp1jYSjzQ" } libjwt-3.2.3/tests/keys/rsa_key_2048_pub.json000066400000000000000000000010671510461717300210130ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "alg": "RS256", "kid": "e25ecf9f-b510-4c5d-963f-df115815f136", "kty": "RSA", "n": "wtpMAM4l1H995oqlqdMhuqNuffp4-4aUCwuFE9B5s9MJr63gyf8jW0oDr7Mb1Xb8y9iGkWfhouZqNJbMFry-iBs-z2TtJF06vbHQZzajDsdux3XVfXv9v6dDIImyU24MsGNkpNt0GISaaiqv51NMZQX0miOXXWdkQvWTZFXhmsFCmJLE67oQFSar4hzfAaCulaMD-b3Mcsjlh0yvSq7g6swiIasEU3qNLKaJAZEzfywroVYr3BwM1IiVbQeKgIkyPS_85M4Y6Ss_T-OWi1OeK49NdYBvFP-hNVEoeZzJz5K_nd6C35IX0t2bN5CVXchUFmaUMYk2iPdhXdsC720tBw", "e": "AQAB" } ] } libjwt-3.2.3/tests/keys/rsa_key_4096.json000066400000000000000000000065201510461717300201510ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "alg": "RS384", "kid": "9c10cd27-de4a-4ffe-8ad9-b9a1c4a07218", "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB", "d": "IwY78h7MEdL6Z5B1yvDxOOhgujS1xAW9NbYb4VXfl8uzfyRIEPfJFgMZ8V5l1aa8WIXBGxGqMvC-YtEBYzfsuPtgB0tIX1x3t2Hi-BGlnbHuPQkjZKXzDpbRF7JO7PAn00jx87JRp1BLkvhSLwywpTi7BnwNjWnlCFrdymydnW74zpJHchH77cnHdx4jCQHx93M-0bmYvs1z8TvZ5hMPHdNEM4adVIps8wsNZV_KJyDjbsaeWnE1opCxynsOsJMjvirk3W0s2X3aBk0VEgo9OuRxLyZaiOgm1avcedZ-cFmdhFvF0HCaxMH4Mz1DYzn-Pf6bnpcaiYCLfbkkjxPCRB1bUjsCsQsRs33os8VBvfKePK_B_Y5bDsJTh_vfJiVflqgckdr2R_RDQ50BLL-Ep44oAjt3wh9X85ccAQXoVKbfSwLADh2LsZFV_gsiVLWjGavvV43zfRzwubVsH_2w2H7gfXO3JoXHuNX3O-5W3hfrMxFQ7Ozjb3rcq28rkajTloG7fBVSlNmQc33cfvvKCLddN-eL6xK4k_xqd92DC-DEfqQgTKsVszDlmViRMOMX2Ebnnve5xsuAyhddFdRamrrrZ2gWO-WvTR5NMo91viluqWxbDWWqAnzpvY2XpAeWvcyNux57UIqWsbuJ6RDBjAyVsbvFRIzBxNbKfEzR5uE", "p": "8FFVC2zHBS8-o3i8niu3NY5ncJtmkT-5hpag567rWfP5Vzrvuih0BAW4t0gHCQCcS8ur_pQ7m72Cf8FA60a8S2djetTq8xbf1jQ0aSuqmJtRBH1DT2qKZT6OHY9EOhKZpOQzFPk_rscHHVH9q8PDvHVaz85dwRbb1D8EqRDDcvbqpyWwwMWkgndx0I6qV9GTcK6HzCtJIZHQsTl1k2IEdheawhZrXYlPEI1YQbR44lxxeBVH-P-1dEhiEnQQwj9dzlfPseqY5kf81ST4YZZPosZeQ4FyOu_IxsJqBmO27puOkmYXfbbhTMkSJSdeS7BatqQnbUBi10rpZCP2vDbV2Q", "q": "1uKlFl2FfsEQfq7d7GiNqNrEYnxK52lH19Yvgvfy27LtnDppBESr5ULPZcCFZ9kdY-8UxYoNZjGnZ-HVBEFhbOI1X606eLsvI4rnM-HG33cEYSVIuceUfc-OHkKuWLvOS2fE98ULgjVNItYAvN1FfiUpkt05ojp_4OPZMWHmdDV24u4_BDzqr9p6A-tmhKPHtyxdaX2yIXM6nFNx4vlmhgLZ-62xprLWVuT5SCo30PonKtsbgpkJ_bE_x_gacMH8J-NEGstt_oDsvHvvT3RGJiGveNTQPZ2mKmkZaZ5x8TTpk7LEw56PCn21pftBuH0bg_aMvC4fWfh47uVTgJa03Q", "dp": "FjmfYOAdg9g7tcibwREP748M9_gXQ0WeddkGZobh0z7iB3Q26YOGPzz8OU8a_3Uj_0qFzJSO8rdTE1efFmNDVMHqDFkWpYavCtNnKXbVXym2E3E2QWj8BaMEZ61xROGlff9wzfbDMfnMKaUEjdccChjcXi2atBnWGMn_N1eKi95UE0NEFn_w1_QN_ZjEHj0OorQxcOtr5wPiRhGnUwsUmItUT7DdGxhwzHoV-HWlXGHqSI3HSzry4B81mrlLN3u-xC-Q0MZ-f4WW12uE4RmSod4wp5OYKeU1L1SZk5-zMlwGknmIoKLCMWTDHdaHPP7BVPTXhJ4YxgpyjUVaM0vq-Q", "dq": "NOGRvu9E6uyYIpTmCEeylNtBePsdc9V02KjdCF38ZhSiZM_7CBHeO401fNTj_6pukSlE81gF9CBEEkyBH4r3btQ8Tk9TFGL8NsL4IsxtJJElgsKqIw36fPuW_dtrDGsrWWMwFcloC6MSWIBRrijF8UUz9fB7PnEnBzELQhvVmsONfksjNufG2X_qhwxnLj0f6PQCCPPl4lV5Fv9yB2lY0aHiAw27qkpYdQnkTt4U3lixStqg6oK-8q-sAooL97PFWguTtwRZDUis-bWGLwduO_QOOq4kkQU63zT-C__yCmn7EV3tDjb2_J3zFeW_RqeDHfaOq8Ct9nYvTJsi8YIl", "qi": "z-UlWCzIiVTW6D8OZ4ZlCa2HQlB2SBWyTu_EzrvfL_SzIvEzdaT_UFvJJD-VwhyQU3jeQBnN71sc49i2Iu--pvcRmkryKXXfctqDN13Oxe8qIzzG70YSUZNJxoag2bJWTm8vyzpwod7EHQJ7TLVGLbcrLANjpFSCpyVjJWnIFFlisCbgTbi-hGtYg65xhvTKM54wlXimYTObx434-q3pBzrRmX6LO-UMhryoyruSwVVyQHRFHfiKqRrzLQCErhXXNm9D1kQ2U7a5SP9ZH78Lg1ZZFi1-wphTzhe5LLci5R_BoEcfJyGbKdrV6eKd-Jy0Ie9NleUNZiWnlR_wgNet3g" } ] } libjwt-3.2.3/tests/keys/rsa_key_4096_pub.json000066400000000000000000000016141510461717300210160ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "alg": "RS384", "kid": "d5bf8cf1-bc4a-482f-920c-b90b8097f118", "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB" } ] } libjwt-3.2.3/tests/keys/rsa_key_8192.json000066400000000000000000000145211510461717300201520ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "alg": "RS512", "kid": "a2b26d8b-eff1-4147-bc71-65813c1d7241", "kty": "RSA", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB", "d": "azXNy3iyhfZRIc_2vFbWt1nQfRUzI7KjIqebNdqOIXogFRX1VMouao_PGaXC0R25wAk-JpCiKEp8lyNFtZX0CuFyT6w2Oi6F_oEApGCDq_3chlSEjdGgkYoPE7fiUtTG7YejoEOmgIfIEx1oj24TKDZaXR_KmK_a0fJVPnXNhmfW7C3eoSK7qEdCtRKkOgXDGd7pJuXebuSZJ4uxUAx1OAbAPa1-ss73Rt0LJu5zdbsz1uV7ejOQIY2qJgjRBSgcMaBEoYQc-8F9VdvZhuUC5LKG1pE1-hFq9tXz_aK6QsiZwhLxuvc6Hoyy2L_9G39zZvI2LifW2tKRXqe0izRJmUdYu6AbfP0XUWC_ckUX0qrNBL9wkqLgg-BkLd5KmP-GaENg0VisNXhBybeca1fgJAhW7csJwXi1Yfgsw79gID0AFI2l7oSO4lqUe834dyW2mbmtQ-xnDTconq4VDaGnvf_d_l4qpzxEB-_y48UC4cIlStOlgiFYf02ASH9VcGKwaxLIoNuLgI3mo8ds2x23qWzqg2MCMxjfk3oV0blvOA6Bi2SAlLVj8w-IprWahDY6_WFNiKTMb8uvFSluksjlmxvCUhQCi7kfTGWlvy3UpaKuhoL_P7LD5zPr0OITJMIpUG2_Vd9ELjlAcwZtJqYAeJCzIxm3Uxm03WobgNQAabShrQCpUF-sZEqOPfQIa4bpRk-IzboCzdBBuQw9S8H1-yI_R718EvbmS3QhKAG6C6BRbafo-SLTfMGKARMACqq68w2FNYLblodBYGOdSf7LeSc8g6uA9UPncMfg06HOmkw_lIaOVseJG006u9LsUE6obCzNKGy5vtz0gCawbuc-S5ZaR3tE18Nu3ukNtZVv-L-UThAlVn_QDm4uMUmNy6Uxn7rta98auPE18InaVKJEDAFJ_pljX_XI6M0Nnz-lJfrlYTqPWjQtazaoohJt-OaVeK8MLOzRfu1FLllv8w2I1VXZR2rEW0UiwOC7-q5PgZE2qo7pHFnG_XfnP64vxa3I4Bv-a6zAbga1fgBbvTooRgqf6EExklZyfipMCtpnbG4cGht__zwUOvhUn6POHCgGO3OYhXjr8ArUhg2oQwGyUkGlzQGLGeopocFCbDMb7i-kGMhuigwKLjBMUF6U3TdC532wse0DPyDHBCLyxD4dPiPvFspgcNaw7x6sVWB9vN2JxXUJVGtnIrHAZQ2evGDtIeJnyFhmQ3Fa8RF-519xHYyX6Vu1KGEI1yT-ALSkUvYycUip4zyT70-GdknExutxIWtEMVpfXzxIJVt9S6gm8pUZ73OHVByUV92FgQCWPXnkjVPRBU_nnmav05YqCikvPx5SOVV_r64h5eNklhelmQ", "p": "586CvRRJQLPsOzFOjH6k0aCQOdvi5MwuLkdaBnAKOZRGiXtVFV_QwnXELmIiDCcPCLXagZ5R9XKwQp8HnzgvbGii2EjOFZ0GQC9FtOXX-E5vpFrg8eYRrjCAHB2yZ-B_1QrLOYbJhZZfaSZ58WC0jrrJqa1zvauBjy2EdtWykIbCV29UWdzIm0kH3Tgi0f3chgt7voOMHJ87jknE4jGLYbRM4Gje92Gi3WWymTSwN3ZuqWZvWdjPTuz2dk2T6sGusyN4cXTjmRy8yDMgxifJkhyxshW1ZHIK_6RacDi0w562rhz9kRRvbwtK9copeNaudQpvUJL-aPtVWc4fKNNatpaFhhsHo1jTOdMvx2Mn7AxDreUiTuUO2gDEJu7_LR7MhSdaXBVUUQVFNZXwHm0tVM1OH7rylU-OBNUOjb14zaClRtZ_97GoQIgRXQRqJ4K6nXFwGXycyYc4bZt2-tS4HVjUPViT4hZr4JXKeUSfY_rzE3i9QjLhguKaRXJexh8TxGMKg1DxMUv8kEYS4Dt5V1ZHQnGwN_lRR91B8OoreelOQTX4YIfi7ZWBaeNqBK4YRTQ5k2pHIi3THpFKhyQQGXXuAcwUcxhdOOWoVmlM37Qmfty_P-Jac8z7Gos4aXDRS0NXfkLLCFGWzhoQZ0jh_p34xiF3cO0J94Wu_xHJPsM", "q": "xfuqeOX2Q_KoDxhlQUd7_yYVhIJs9fn-59W3nkNLAD3CxxqKsbZ8RMo7bF67ibTM72JKE6_MTJ1OzZIMy2XW1Id_iHjcd1suDV6R88wOZTvqk-ew87RsIf5z7WQ--FpcuEBQ8E0GOFTdK5owfm9EYEkikKsDO7i0IqcA_npBmgnvTYIAC29tT9lQaX2VXXqZyATQFWNBVWqzWyuejRZO1Xpi7gnihE7PwojsF9u-rpSFoSs2lvSbUFvkgTF1s2OHjcSi38Xv5aig4pKH2TOnLwrOuCuYjSQJFHpuJuH3WhjrpIMkybCw1CLhqMqs1SY_SqVAdGhfDhDU632R5r8MJqubSi7qPCE2VLKXnU82tkyA3XpIlHWwCyh5HW1KZB1BWK7yJxiO8itpYOLFJfKL3zpz4onlAFGjUYzHEO4ZVqFJOOjVyPU-z-yqr4lGociTCW3wng66OXDPGPL2mv-iZnDj2IXUYa4LAgAolkynnbpOQBihXMLAIQu_5kZ1VF-mjY0Sov0nx-_8T34Ulu9u-zFMguOGSS3ZdMaWrO3Uxxvn-JebOZ7pZ3RLbaLYwb67kWV5TcLaoB6c5Tv-XViBJsx7ewnpJAN--kIs_Sdky_ZwzazRmvmay9-qpFoNsyyGBxjaFWAguHEgX7gU_BnJ9_WUMqk1Nysby0Qf91N7wi0", "dp": "XpSQG33Pdarz1CMGHaT-stmEf1cMeLYmkZNjVAUa5uts7GN6D8KMdwt-BD7eDX9STweEJCbo4fDtogEpJvnRv7Xh28W48HClQEMJegnd2N6IBtNdvNVWmXAIlXA4ftHG1rIUwWARkYQNYeXlE2uVwDbOWYEAHH-B2V2FEseWmAmj-fDexdujrlhZ8RUaf_vIopjE4LLj1DnUHvZScsgsSq06QMYJU35u6U65VHF_BOI5vLyi6lHgJB_jX9m_ZKWqFkV-uywqQSrMjBLwaGmLgSZcCoF5BYbSngP9MpSwjLCRcPE7NJrV7MT6zNaznS5a-D5NtN6FF2iVJpNHe2zhMmawDEuzDh8L8CgO8peujk1iv-0h1nb3XFO7tPcG_u32HM41vCSnxncUCg0ncAKz4En0elXY7LsNA0O7MHICfEPzq7eRdwrxz4K1MvK-LWjVo6_JQVzqy_90MqSgIy_v_2ljD7S4giML2RLFDj3FmxGlZGh7MCt6f-DdeUB1EvlTI2oVvAamoqqSXnt48CzUEaKOaLniYLRFScEpSpcBLjjXSRwwP5KyMKYzq3SyqT4vgO0SIOfYJkX0QiCd_A3m07yeY_VU0rE6OCDcUoWcbBohKtn-3p4Isf8M5YOwfLUfcEoFxOqT1M0VbvqLftjp_O2Pt6eoCFdvHaNaB5DGP-k", "dq": "wSicVX_nGLvyg2fFwj7AF1tMuw-Uxxe1PvMgRmRZFE8tbZvTnTbxXxv_heeXCO9A0n0O0M4_gLApZh8MJJWjV48rOjbQwhJPh_Owai-4C8S9RLhTyDFLHo9nA0E-vodK1ujJDunXG7aQYi35CiH8kARKmOKAMRAvj29oZN9aibMPqosfCAkamUDoV0OTKrSmvKMVcQh5gaCshFK2Seht2ZGiW6OBQJyzzpRP46cdDq8RAQFsLTNRJMHC2tkqgG6mngYu8ivntiUjcmqL57mhbyAYN08xcuKpiTU5qu3jqh-OJ99bUPv2ScIOb-PtY7gBIA7CJ9B8jPiXA3prkrjqXgAnbeT_2tJ8c34atfvG4W0afPsFPPLlYr2GDNPINIzmaGOnFcW8EUGRellFB5TwKkaZMXhf2EPOF45F2ZqzVfXdvoxLp9i-A5ZfoQtJwiYyboy4qTytK8WICEtjli26gD-7zFAluXdYfgcxkhIPpq9SEO72382SLauM-lnbtwnrMUdl22cqHMNjYxsbc3b-zEx43WqmZVc6RdhKwUT4x5nOZJdldn44MhsgTEMJP12bGmvqQZfOPVIguPYjYWcr-nKeNpigweY3SGqwAf0hNm2l-MSXa6ADCs2ZaugBXcIesWXpv9kdk1WrxDeRIbT3e9g5UoQLy1tfrp00otTsdbE", "qi": "g9n-wQtZ60IWCxAuc4uHUofpCQoIeGrZ9xLnH0tmFRJnJ5ufNxzHj5oWwKSxpm90bDMnWutfirGHh5RQ7y44IbYUV2Pbhz7-gwSjNlhLec37PCWuVyUmkHLma07N2ZspUOT21_uJ4WD1XazuP-gA4sGiVcLs73q21mUqVgXR-s-bCM0tG1ZrwgoYsKg5Dek34HsdlzYpWYMsqXgKmwJ691ZXlRR_HOLOKsfNfoprW9QQ2kVGfXO_0lKK5p9f7CceOPguLqHn0zk7CB09OVjCv6eTUL8UzswQMo67nO210Q7JKuXAWxGYApQB4HubNe5Ic-pdiHz8IwbmfcTYyOGs4RtQZY3qzB8z9p66y62rzasPnUXSYs3w4nrKtfphC8b5voJB-QDJGe1yWqL95dHYJxdGHa4Kcjc8jQtOCty8pItvGdrVkmuzr0P5LziY1jJz_sPj5b4l2jJB56g1UnKzBmaxgPIQrIdqlDiuEBOerdYKVLiq7np2JC5rKfoYQhdTCj12Nwm8cpOP3jymz1XYEUqYc46oggBPor09edLwhOqr-30Bv8QCAsvwaBYG0Ru2P5l5mgCOmf--dW50xYg-MPHJr9WK38x65kAi-vG9yHeoS--bm26CbVkSGrwKPZI34Fku6i_FUayWEtoiU3WKndSOrpIVOqOQTQU54puQoOE" } ] } libjwt-3.2.3/tests/keys/rsa_key_8192_pub.json000066400000000000000000000030671510461717300210230ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "alg": "RS512", "kid": "83d430e4-5797-4ab0-b8e7-c620ea4ccb5e", "kty": "RSA", "n": "s0XMckvY06KW80N_Fz5rBJUN3BlsUoViZYjpZy5UbhNAt96tdnoMMXJw6vd9-_DWwBEgpq7cRUsWq1qRkqSLz8dxTQ8OGsxauFVTWRTX3ZMQ_YtZJDGa1-snkxhsLxnvpXx_KPgYU1WTqB46GV-itwsZ69S0nq-cNMjIFiz6TJMNVNwI5yEdYUildxb0YmGu_ZBQMihcrYesAJSQezNu10YvioSIQUASHjfVcFMMLtZRYvi7idIfejb7iW2rPlO7sF4ZNhTaSoszB03BvnNZjikORBnDz71AgMKqW_Itlq_uMuMb0XlPCiLZgS83oLfSvMQQspeOks3yv5w3Hv-sEFXrSZyyt3SPxHuc3gggSqLcfzCV4PG_p2H7y5Q6i9VHPaA89ZQXlKWQC46sripPOtkSAkyJU9NJ_WkYNnnXzQiKA3kfN2mLCOzpv62SGoUrEssycTuVLUKTzM76LaYQ_lGbpbSrTGvZEmm3OJjjFr5r2JSPmzGw-5dOUpJ-i3r9-um-iUKKpOkTISYyCXY17w9yf13W4Gms7l5XJU-pRIlBlb3H2QFN2u9wp7mEXYOJzGNGpA3oHFKUmn40jlz509dNpGaG4SXzJG8Uku-mWrjWWsnh9VcZQhgLKVobJsmmSIkqcpJCityl21LAk7DoUB0GeMCFOjzPhZ0ncD7RVBwq762A6rcowuuY8Lwbrp9auNgzzhHHr-c01aFvqZbUT4oaxSFInyrocsyCqJYQEG3sDK6NMxNIPs9NIyC-IWPbqvxESOGJK6rLmh2WCaD0irCvboW5yxfxEaCuu3WWUFFEecR0KvHRQig_dFb2Jyo4fypzqdSRtAu0R7_qOn6pLsEO9XseQh7uRzdagwb9CjdBB8nKB5zVQ79gswBDY2-gDl1UphywtT-ISr4kLUm3tvOFQZjj1SNaZdLTDQbxO9GWjwaijIQbAdMU0f9kE7FHIR3vPEMLfwNgpo6hEyukTBfBTT1cq8eHQt0WbDLDYFcuA1fFa9XGrZPmmGCoV8AFKQaUNRcIbfRWnykPs9oJKi60gKbhoIStIq_DkV_B8OPTMRTbFranSJDaO2P6O0A5Y7Rezhjnqyb0oiJsKg74-_TcgL_tZB-YB3AG3gdElVnu9cWuR2FpY35L1WAk9zA46Z4dxQyL7nNpQDg5pX4Q8sXK2x3Ov1VmYy1TmUxpv1eLTMxts0yXYDQFGcDS4VuDfZZNkIXMOMEo4y5fQw11OOcElpvyVMUkYl0LgJvIqbUCzCulkrruKKPPdHrtJvhImysgT46lbjKPGDT4D_6qIt4UqV9B969PNbqfqFORnmgaH3oF3xxbAQfcasfUxCPxChYpOPs25ldtAASAAqDORw", "e": "AQAB" } ] } libjwt-3.2.3/tests/keys/rsa_key_i37_pub.json000066400000000000000000000010411510461717300210100ustar00rootroot00000000000000{ "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "f2549e89-3ed6-4897-aab8-59ca42935941", "kty": "RSA", "n": "n_7RTQX1xlllgo-aqo5zd_-wqaRZwFWp3JJIUXryJ4d153J1gEYdz4RkjFO0X8kpv8qb5hdzWhhZHSItD-07LaQXP4lSUuiK1lJAT_YW51D37nCkWm839gAqEGdsWsYQCvqJKSJr4pWCZTEx2MEfikmmnaXPR_VOVgZSj9kIoKo-kFwlw9LGVBHYAeR_W-l5DJQK6Yha8Igi36hnvZqqHcQ4gkGUqEc__Tq2nyYNwvAN3ieZvtvL71rFW26FnuA4OwDER-TYSkAr8Z4wH2EdGno1GZQAegIm-yWblleCaBVOnlk8VcDO9PecTiAFjjWAbQiaFKlkf_plD7KE4tAamQ", "e": "AQAB" } ] } libjwt-3.2.3/tests/keys/rsa_pss_key_2048.json000066400000000000000000000034751510461717300210370ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "a9a0eb5b-67e9-4495-9030-a97d063d4bb4", "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_384.json000066400000000000000000000034751510461717300214350ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "a9a0eb5b-67e9-4495-9030-a97d063d4bb4", "kty": "RSA", "alg": "PS384", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_384_pub.json000066400000000000000000000010431510461717300222700ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify" ], "kid": "9dd54a23-2662-41ac-b092-d75fc91412aa", "kty": "RSA", "alg": "PS384", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_512.json000066400000000000000000000034751510461717300214260ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "a9a0eb5b-67e9-4495-9030-a97d063d4bb4", "kty": "RSA", "alg": "PS512", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_512_pub.json000066400000000000000000000010431510461717300222610ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify" ], "kid": "9dd54a23-2662-41ac-b092-d75fc91412aa", "kty": "RSA", "alg": "PS512", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_noalg.json000066400000000000000000000034751510461717300222170ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "a9a0eb5b-67e9-4495-9030-a97d063d4bb4", "kty": "RSA", "alg": "PS384", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB", "d": "DHjrOhthnAdtWVF_mi9sxen0_wKkbqQiZniWIu3jhZdGCpOVEKbWxhuq-B4FvlAqr9r1vMENtfFBDZNIVO6gtL7hoYOCJu-Fpertxp8eh0xZDbH96_M-e1JxSR_dmwyxCoix0xbdbbHmHmzvg05s_TL1NuRbNJYSNUJXZLWxK2NKmlw-lPRb360n7H5KFSXECNWBsI9rkJuPvO_HmEYotiAotpxlC3N9cYmFc-G-W6JHTcF7CR2DZOauE3MI5jJpa-qzLXKKCphTq-PkbeM0jwgXciQ11RaC39KVy4YquWDTptilb4LgGQCMDqVIeW5VnBBmhtJvAJhPo_E5RK-MCw", "p": "y6sKp6asFY-kv8hFEh_MPx-eTmZqr-g-CDEq7xgap9fI4LFGvemJv3isQcYJjPAFWreB0PF3uz6XlcK6x1CwjqWlNecQYUmDWq0kyJSvQ7Gn2txsIF6An5lkhSG_AQ-qLWay_WPmyjPXsxaF9aFM-QjTSW12wWcIKGCP0KSrhsM", "q": "uUCYSXKi-4h0Z43Ol_jqy1mCD-yaICt4CtJeZTMbC7CI9qVPUaNHni3fUBxTDgOdH6xJGMZ1XuUFn68fjPB_mPmKUimYCrqlBzhRh7axT6tdD4WQc8rpEHvaucGjp2dBXrCDve_RPyMI8HYRS5kKGmvqhVpnwT0iVq5KRCERgQs", "dp": "HFEzsguicXz_UwrtT4_MPhqPUCc9Pif0N_9eENAxJJUEAPmk9FK8LDsC-EIoocfddrd8_SgVlZsmSFRC0-OMKMkvJ0dxJ5WpBbp9GsZReAADbpKnFfkNuSMCrt_6RpN-_cEBselp9UMwAl5nUbeTlCx98_-cO1ev8q06UbATiTE", "dq": "bmEPnAvDEs6OVTlIVILLG5jchzJ57xsXbpNEDVZzEfcA1L1Q0prQTG6WtXv6_MmocDvOXgW5323keO32hZqy3GorQaNo5VOqiu_CnHN9mLPJQjtaA7RuRBUYEUBQi6lZaNsR1DU1X0I3zFb9HSc1vuJ4HTbtxVTwxecZdxig_ls", "qi": "RhNgmhA5ZNiHU0DoDoMzeaXVpwGxUZ_QkAmC1mc11SROp0khJmM-XfQBW5x6f8sYmX0zAj9EUh01dk1cKrg0dPX42c5nYItgo6ynFSJoSUkl_nu4tJysoCSh-3HtUtstooogDPQKUf4A9UAzgf1vrl95SRl-oL8MaVXlHm_o1KQ" } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_notpss.json000066400000000000000000000065761510461717300224520ustar00rootroot00000000000000{ "libjwt.io:comment": "RSA key with no alg for use in RSASSA-PSS", "keys": [ { "use": "sig", "key_ops": [ "verify", "sign" ], "kid": "9c10cd27-de4a-4ffe-8ad9-b9a1c4a07218", "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB", "d": "IwY78h7MEdL6Z5B1yvDxOOhgujS1xAW9NbYb4VXfl8uzfyRIEPfJFgMZ8V5l1aa8WIXBGxGqMvC-YtEBYzfsuPtgB0tIX1x3t2Hi-BGlnbHuPQkjZKXzDpbRF7JO7PAn00jx87JRp1BLkvhSLwywpTi7BnwNjWnlCFrdymydnW74zpJHchH77cnHdx4jCQHx93M-0bmYvs1z8TvZ5hMPHdNEM4adVIps8wsNZV_KJyDjbsaeWnE1opCxynsOsJMjvirk3W0s2X3aBk0VEgo9OuRxLyZaiOgm1avcedZ-cFmdhFvF0HCaxMH4Mz1DYzn-Pf6bnpcaiYCLfbkkjxPCRB1bUjsCsQsRs33os8VBvfKePK_B_Y5bDsJTh_vfJiVflqgckdr2R_RDQ50BLL-Ep44oAjt3wh9X85ccAQXoVKbfSwLADh2LsZFV_gsiVLWjGavvV43zfRzwubVsH_2w2H7gfXO3JoXHuNX3O-5W3hfrMxFQ7Ozjb3rcq28rkajTloG7fBVSlNmQc33cfvvKCLddN-eL6xK4k_xqd92DC-DEfqQgTKsVszDlmViRMOMX2Ebnnve5xsuAyhddFdRamrrrZ2gWO-WvTR5NMo91viluqWxbDWWqAnzpvY2XpAeWvcyNux57UIqWsbuJ6RDBjAyVsbvFRIzBxNbKfEzR5uE", "p": "8FFVC2zHBS8-o3i8niu3NY5ncJtmkT-5hpag567rWfP5Vzrvuih0BAW4t0gHCQCcS8ur_pQ7m72Cf8FA60a8S2djetTq8xbf1jQ0aSuqmJtRBH1DT2qKZT6OHY9EOhKZpOQzFPk_rscHHVH9q8PDvHVaz85dwRbb1D8EqRDDcvbqpyWwwMWkgndx0I6qV9GTcK6HzCtJIZHQsTl1k2IEdheawhZrXYlPEI1YQbR44lxxeBVH-P-1dEhiEnQQwj9dzlfPseqY5kf81ST4YZZPosZeQ4FyOu_IxsJqBmO27puOkmYXfbbhTMkSJSdeS7BatqQnbUBi10rpZCP2vDbV2Q", "q": "1uKlFl2FfsEQfq7d7GiNqNrEYnxK52lH19Yvgvfy27LtnDppBESr5ULPZcCFZ9kdY-8UxYoNZjGnZ-HVBEFhbOI1X606eLsvI4rnM-HG33cEYSVIuceUfc-OHkKuWLvOS2fE98ULgjVNItYAvN1FfiUpkt05ojp_4OPZMWHmdDV24u4_BDzqr9p6A-tmhKPHtyxdaX2yIXM6nFNx4vlmhgLZ-62xprLWVuT5SCo30PonKtsbgpkJ_bE_x_gacMH8J-NEGstt_oDsvHvvT3RGJiGveNTQPZ2mKmkZaZ5x8TTpk7LEw56PCn21pftBuH0bg_aMvC4fWfh47uVTgJa03Q", "dp": "FjmfYOAdg9g7tcibwREP748M9_gXQ0WeddkGZobh0z7iB3Q26YOGPzz8OU8a_3Uj_0qFzJSO8rdTE1efFmNDVMHqDFkWpYavCtNnKXbVXym2E3E2QWj8BaMEZ61xROGlff9wzfbDMfnMKaUEjdccChjcXi2atBnWGMn_N1eKi95UE0NEFn_w1_QN_ZjEHj0OorQxcOtr5wPiRhGnUwsUmItUT7DdGxhwzHoV-HWlXGHqSI3HSzry4B81mrlLN3u-xC-Q0MZ-f4WW12uE4RmSod4wp5OYKeU1L1SZk5-zMlwGknmIoKLCMWTDHdaHPP7BVPTXhJ4YxgpyjUVaM0vq-Q", "dq": "NOGRvu9E6uyYIpTmCEeylNtBePsdc9V02KjdCF38ZhSiZM_7CBHeO401fNTj_6pukSlE81gF9CBEEkyBH4r3btQ8Tk9TFGL8NsL4IsxtJJElgsKqIw36fPuW_dtrDGsrWWMwFcloC6MSWIBRrijF8UUz9fB7PnEnBzELQhvVmsONfksjNufG2X_qhwxnLj0f6PQCCPPl4lV5Fv9yB2lY0aHiAw27qkpYdQnkTt4U3lixStqg6oK-8q-sAooL97PFWguTtwRZDUis-bWGLwduO_QOOq4kkQU63zT-C__yCmn7EV3tDjb2_J3zFeW_RqeDHfaOq8Ct9nYvTJsi8YIl", "qi": "z-UlWCzIiVTW6D8OZ4ZlCa2HQlB2SBWyTu_EzrvfL_SzIvEzdaT_UFvJJD-VwhyQU3jeQBnN71sc49i2Iu--pvcRmkryKXXfctqDN13Oxe8qIzzG70YSUZNJxoag2bJWTm8vyzpwod7EHQJ7TLVGLbcrLANjpFSCpyVjJWnIFFlisCbgTbi-hGtYg65xhvTKM54wlXimYTObx434-q3pBzrRmX6LO-UMhryoyruSwVVyQHRFHfiKqRrzLQCErhXXNm9D1kQ2U7a5SP9ZH78Lg1ZZFi1-wphTzhe5LLci5R_BoEcfJyGbKdrV6eKd-Jy0Ie9NleUNZiWnlR_wgNet3g" } ] } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_notpss_pub.json000066400000000000000000000016721510461717300233100ustar00rootroot00000000000000{ "libjwt.io:comment": "RSA key with no alg for use in RSASSA-PSS", "keys": [ { "use": "sig", "key_ops": [ "verify" ], "kid": "d5bf8cf1-bc4a-482f-920c-b90b8097f118", "kty": "RSA", "n": "ybi_3guc70NLoGecAdyAo0dJYLRXCYFdx7Iaq20REXb5SsyqSjGV_KEr8sdyFhr_PasKb1XbV7G8_gdtxU-Sl5dGI9h8mymIQ7VzbyEhwQqjzdyCKoz2levKPgjsTDN93IQiNfSOfc4qUux5viWQaPWt3bzpvOZXHcMUbzEz_jahKZPU_hMq_N3DroE6xFYB91fb74qHOC5RGMPjskUYKOjCtj-v-sZqznuckf2x0a2r5X--gsqGZT8dHaX9smyrpBbV9Y_g1VZ-CO8XFdRiHWth98FnlbEeHsrXbho9CE2GEACWvRRApMn1uSpghpENbkefpbYCIN7tq6X4lKvSYQZARiLkD1ELHcmWCX-cpIlfxihrKpVnRR4iLJNl33VtOBIPaMvtifojkLxsi3dtyJkcEFQI_kXbKW8Kdw5Fd-UOcsQf8PKk7k9LgFaH8GZRFhbwT0bLjjy0UIV5NDHcSozydV2uQh-ON6BsygCSvME8V4lu9z74Rq3T7eP25pC-Q0mN-1n7QGQL4zKshkKNh6Rx-QCP0hVGNosL6MoLzseluapTqnHrQEHTbG1Jm-WL_ces3thH7PySyWKJcUQ_iWBD0FFkya0KTvTfWvBg_WPdqBHLIQh6ie_7lOFyE56FbRYuRU0cF8-NykA_6HN247pFtw1PSgQ68Dqtv9bZMFU", "e": "AQAB" } ] } libjwt-3.2.3/tests/keys/rsa_pss_key_2048_pub.json000066400000000000000000000010431510461717300216720ustar00rootroot00000000000000 { "use": "sig", "key_ops": [ "verify" ], "kid": "9dd54a23-2662-41ac-b092-d75fc91412aa", "kty": "RSA", "alg": "PS256", "n": "k2H-nc6pcHePEz7liCxy4sYXBbrks3jgmTyQo3nwfpEKecbPu8qraXg5Ogjm9LzfIapk3Jm_eFtY-zEhqgOTDipc_aXRhTZg71AHh-GgF7EtatrDwXs0Cs6M-dhF0MZpgqrUt2RgkjMD3CfgztfJVLi6KOeEcwfZ7zbjuvEGc7pvQrivNksvpxlOVVDYtF0o_kEWNGJB4djr5iJek2ZOO3Ij3iPw3bBx_nBO4p2NXb7j8mFcnbzyABNPGwr94SyXmWTNhtMYUrfYpjWcBp79H6FxXHRu0JZajYCIe95RrxQ23L1zBIZwhD1VJgYVGdhMfB9mfbo7FmxDwYaAmDoNYQ", "e": "AQAB" } libjwt-3.2.3/tests/misc/000077500000000000000000000000001510461717300151145ustar00rootroot00000000000000libjwt-3.2.3/tests/misc/ruby-eddsa.rb000077500000000000000000000015731510461717300175110ustar00rootroot00000000000000#!/usr/bin/env ruby # Public domain, no copyright. Use at your own risk. # gem install jwt-eddsa require "jwt/eddsa" # EdDSA Token generated by LibJWT # Key generated by OpenSSL (keys/eddsa_key_ed25519-pub.pem) # The pub key was converted to 32-bytes with some openssl and CLI magic token = "eyJhbGciOiJFRERTQSIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0NzU5ODA1NDUsImlzc" + "yI6ImZpbGVzLm1hY2xhcmEtbGxjLmNvbSIsInJlZiI6IlhYWFgtWVlZWS1aWlpaLUF" + "BQUEtQ0NDQyIsInN1YiI6InVzZXIwIn0.19ip2DFFjaZ_UFVCo0OtdwuzSmOYModle" + "JVeFcAjb_4hrAAf0pZSf8O78pivbXLJenEIsaZ9REFOauBeDxbTBw" pub_key = "\x1d\x48\xfe\xd7\x89\x0d\xe8\xde\x22\xe6\xa3\x55\x91\xf1\x21\xc0" + "\xa8\x82\x7f\xeb\x52\xae\xf4\x47\xb2\xd4\x1d\xb5\x5f\x1a\xe5\x03" verify_key = Ed25519::VerifyKey.new(pub_key) payload, header = JWT.decode(token, verify_key, true, algorithm: "EdDSA") puts payload puts header libjwt-3.2.3/tests/test-env.sh000066400000000000000000000002061510461717300162600ustar00rootroot00000000000000if [ "$TEST" = "jwt_new" ]; then export JWT_CRYPTO=openssl elif [ "$TEST" = "jwt_flipflop" ]; then export JWT_CRYPTO=NONEXISTENT fi libjwt-3.2.3/tools/000077500000000000000000000000001510461717300141575ustar00rootroot00000000000000libjwt-3.2.3/tools/Makefile000066400000000000000000000004101510461717300156120ustar00rootroot00000000000000PANDOC ?= pandoc MANSECTION ?= 1 MANPAGE.md = $(PANDOC) --standalone $(PANDOCFLAGS) --to man MAN_PAGES = jwt-verify.1 jwt-generate.1 key2jwk.1 jwk2key.1 all: $(MAN_PAGES) %.$(MANSECTION): %.$(MANSECTION).md $(MANPAGE.md) $< -o $@ clean: rm -f $(MAN_PAGES) libjwt-3.2.3/tools/TODO.md000066400000000000000000000003251510461717300152460ustar00rootroot00000000000000= TODO == jwt-generate - if we pass file:xxxx to -j, assume it is a file to read in the json from == Common === JWK handling - CLI option to select key the JWKS by index - CLI option to select key by ``kid`` libjwt-3.2.3/tools/example.sh000077500000000000000000000012661510461717300161560ustar00rootroot00000000000000#!/bin/bash if command -v jq > /dev/null; then JQ="--print=jq -C" fi KEY=jwt-test-key.bin JWK=jwk-test-key.json if [ ! -e "${KEY}" ]; then echo Creating 512 bit binary random key dd if=/dev/urandom bs=1 count=64 "of=${KEY}" fi if [ ! -e "$JWK" ]; then echo Converting key to JWK key2jwk -o "${JWK}" "${KEY}" if [ -n "$JQ" ]; then cat "${JWK}" | jq -C else cat "${JWK}" fi fi TOKEN=jwt-test-token EXP="$(date -d '+7 days' +%s)" echo Generating token jwt-generate -k "${JWK}" \ -c s:group=staff \ -c b:admin=false \ -c s:iss=disk.swissdisk.com \ -c s:user=bcollins \ -c i:exp=${EXP} > ${TOKEN} echo Verifying token cat ${TOKEN} | jwt-verify -k "${JWK}" "${JQ}" -v - libjwt-3.2.3/tools/jwk2key.1000066400000000000000000000043441510461717300156340ustar00rootroot00000000000000.\" Automatically generated by Pandoc 3.1.11.1 .\" .TH "JWK2KEY" "1" "" "jwk2key User Manual" "LibJWT C Library" .SH NAME \f[B]jwk2key\f[R] \- Export JSON Web Keys to PKCS8 .SH SYNOPSIS .PP \f[B]jwk2key\f[R] \f[B][options]\f[R] [FILE]\&... .SH DESCRIPTION \f[B]jwk2key\f[R] Takes JSON Web Key files and exports each key to a PKCS8 PEM file .PP This program will parse a JSON Web Key or Set and write out the individual files to DIR (by default `\f[B].\f[R]'). Output directory must exist. You should make sure the permissions on the output directory are such that they cannot be accessed by others. .PP JWK files must be listed after any options. A \f[B]\-\f[R] will be interpreted as \f[I]stdin\f[R]. .PP All \f[I]RSA\f[R] key types will be written as plain \f[I]RSA\f[R] keys, including \f[I]RSASSA\-PSS\f[R] keys, unless it has a \f[I]PS256\f[R], \f[I]PS384\f[R], or \f[I]PS512\f[R] \f[B]alg\f[R] attribute. .PP All keys are written in PKCS8 PEM format, except key type \f[I]OCT\f[R], which is written as a binary file (.bin extension). .PP By default, existing files will not be overwritten. If you use the \f[B]\-\-retry\f[R] option, an attempt will be made to add \-1 to the file name, up to \-9, in an attempt to create the file. .PP Output file naming is based on (hopefully) unique characteristics, including: .IP \[bu] 2 \f[B]Key type\f[R] E.g. \f[B]rsa\f[R], \f[B]ec\f[R], etc. .IP \[bu] 2 \f[B]Bits\f[R] in the key. E.g. 2048 for an \f[I]RSA\f[R] key, or 384 for an \f[I]EC\f[R] key. .IP \[bu] 2 \f[B]Private\f[R] vs \f[B]Public\f[R]. Public keys will have \f[B]_pub\f[R] added to the end of the filename (before the extension). .IP \[bu] 2 Most importantly, the \f[B]kid\f[R] attribute, which is supposed to be unique. .SS Options .TP \f[B]\-h\f[R], \f[B]\-\-help\f[R] Show common options and quit. .TP \f[B]\-r\f[R], \f[B]\-\-retry\f[R] Retry if output file exists. .TP \f[B]\-d\f[R] \f[I]DIR\f[R], \f[B]\-\-dir\f[R]=\f[I]DIR\f[R] Directory to write key files to (default is `\f[B].\f[R]'). .SH BUGS See GitHub Issues: \c .UR https://github.com/benmcollins/libjwt/issues .UE \c .SH AUTHOR \f[B]jwk2key\f[R] written by Ben Collins \c .MT bcollins@libjwt.io .ME \c \&. .SH SEE ALSO \f[B]jwt\-verify(1)\f[R], \f[B]jwt\-generate(1)\f[R], \f[B]key2jwk(1)\f[R] libjwt-3.2.3/tools/jwk2key.1.md000066400000000000000000000035201510461717300162260ustar00rootroot00000000000000% JWK2KEY(1) jwk2key User Manual | LibJWT C Library # NAME **jwk2key** - Export JSON Web Keys to PKCS8 # SYNOPSIS | **jwk2key** **\[options]** \ [FILE]... # DESCRIPTION **jwk2key** Takes JSON Web Key files and exports each key to a PKCS8 PEM file This program will parse a JSON Web Key or Set and write out the individual files to DIR (by default '**.**'). Output directory must exist. You should make sure the permissions on the output directory are such that they cannot be accessed by others. JWK files must be listed after any options. A **-** will be interpreted as _stdin_. All _RSA_ key types will be written as plain _RSA_ keys, including _RSASSA-PSS_ keys, unless it has a _PS256_, _PS384_, or _PS512_ **alg** attribute. All keys are written in PKCS8 PEM format, except key type _OCT_, which is written as a binary file (.bin extension). By default, existing files will not be overwritten. If you use the **\-\-retry** option, an attempt will be made to add -1 to the file name, up to -9, in an attempt to create the file. Output file naming is based on (hopefully) unique characteristics, including: - **Key type** E.g. **rsa**, **ec**, etc. - **Bits** in the key. E.g. 2048 for an _RSA_ key, or 384 for an _EC_ key. - **Private** vs **Public**. Public keys will have **\_pub** added to the end of the filename (before the extension). - Most importantly, the **kid** attribute, which is supposed to be unique. ## Options **\-h**, **\-\-help** ~ Show common options and quit. **\-r**, **\-\-retry** ~ Retry if output file exists. **\-d** _DIR_, **\-\-dir**=_DIR_ ~ Directory to write key files to (default is '**.**'). # BUGS See GitHub Issues: # AUTHOR **jwk2key** written by Ben Collins . # SEE ALSO **jwt-verify(1)**, **jwt-generate(1)**, **key2jwk(1)** libjwt-3.2.3/tools/jwk2key.c000066400000000000000000000121031510461717300157060ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include "jwt-util.h" static char *out_dir; static int retry; static void write_key_file(const jwk_item_t *item) { const char *pre, *name; int priv = jwks_item_is_private(item); char file_name[BUFSIZ]; char *ext = ".pem"; char bits[8]; FILE *fp; int i; if (jwks_item_error(item)) return; switch (jwks_item_kty(item)) { case JWK_KEY_TYPE_OCT: pre = "oct"; ext = ".bin"; sprintf(bits, "%d", jwks_item_key_bits(item)); name = bits; break; case JWK_KEY_TYPE_EC: pre = "ec"; name = jwks_item_curve(item); break; case JWK_KEY_TYPE_RSA: sprintf(bits, "%d", jwks_item_key_bits(item)); name = bits; switch (jwks_item_alg(item)) { case JWT_ALG_PS256: case JWT_ALG_PS384: case JWT_ALG_PS512: pre = "rsa_pss"; break; default: pre = "rsa"; } break; case JWK_KEY_TYPE_OKP: pre = "eddsa"; name = "ED25519"; break; default: fprintf(stderr, "Unknown kty\n"); return; } if (jwks_item_kid(item) == NULL) { snprintf(file_name, sizeof(file_name), "%s/%s_%s%s%s", out_dir, pre, name, priv ? "" : "_pub", ext); } else { snprintf(file_name, sizeof(file_name), "%s/%s_%s_%s%s%s", out_dir, pre, name, jwks_item_kid(item), priv ? "" : "_pub", ext); } for (i = 0; i < 10; i++) { char *p; fp = fopen(file_name, "wx"); if (fp || !retry || errno != EEXIST || i >= 9) break; p = file_name + strlen(file_name) - strlen(ext); if (i == 0) { *p++ = '-'; *p++ = '1'; strcpy(p, ext); } else { p = p - 1; *p = '1' + i; } } if (fp == NULL) { perror(file_name); return; } if (jwks_item_kty(item) == JWK_KEY_TYPE_OCT) { const unsigned char *buf; size_t len; jwks_item_key_oct(item, &buf, &len); fwrite(buf, 1, len, fp); } else { fputs(jwks_item_pem(item), fp); } fclose(fp); } static int check_directory(const char *path) { struct stat info; if (stat(path, &info) != 0) return 0; if (!(info.st_mode & S_IFDIR)) return 0; if (access(path, R_OK | X_OK) != 0) return 0; return 1; } _Noreturn static void usage(const char *error, int exit_state) { if (error) fprintf(stderr, "ERROR: %s\n\n", error); fprintf(stderr, "\ Usage: %s [OPTIONS] [FILE]...\n\ \n\ Parse JSON Web Key format and write out individual key files\n\ \n\ -h, --help This help information\n\ -r, --retry Retry if output file exists\n\ -d, --dir=DIR Directory to write key files to\n\ \n\ This program will parse a JSON Web Key or Set and write out the individual\n\ files to DIR (by default '.'). Output directory must exist. You should make\n\ sure the permissions on the output directory are such that they cannot be\n\ accessed by others.\n\ \n\ JWK files must be listed after any options. A '-' will be interpreted as\n\ stdin.\n\ \n\ All RSA key types will be written as plain RSA keys, including RSASSA-PSS\n\ keys, unless it has a PS256, PS384, or PS512 'alg' attribute.\n\ \n\ All keys are written in PKCS8 PEM format, except key type 'OCT', which is\n\ written as a binary file (.bin extension).\n\ \n\ By default, existing files will not be overwritten. If you use the --retry\n\ option, an attempt will be made to add -X to the file name, up to -9, in\n\ an attempt to create the file.\n", get_progname()); exit(exit_state); } int main(int argc, char **argv) { jwk_set_t *jwk_set = NULL; const jwk_item_t *item; int i, oc; char *optstr = "hd:r"; struct option opttbl[] = { { "help", no_argument, NULL, 'h' }, { "dir", required_argument, NULL, 'd' }, { "retry", no_argument, NULL, 'r' }, { NULL, 0, 0, 0 }, }; while ((oc = getopt_long(argc, argv, optstr, opttbl, NULL)) != -1) { switch (oc) { case 'h': usage(NULL, EXIT_SUCCESS); case 'd': out_dir = optarg; break; case 'r': retry = 1; break; default: /* '?' */ usage("Unknown option", EXIT_FAILURE); break; } } argc -= optind; argv += optind; if (argc == 0) usage("No files to read", EXIT_FAILURE); if (out_dir == NULL || out_dir[0] == '\0') out_dir = "."; if (!check_directory(out_dir)) { fprintf(stderr, "%s: doesn't exist or no access\n", out_dir); } jwk_set = jwks_create(NULL); if (jwk_set == NULL) { perror("Failed to create JWKS"); exit(EXIT_FAILURE); } for (i = 0; i < argc; i++) { char *file = argv[i]; if (file[0] == '-' && file[1] == '\0') jwks_load_fromfp(jwk_set, stdin); else jwks_load_fromfile(jwk_set, file); if (jwks_error(jwk_set)) { fprintf(stderr, "Error reading %s: %s\n", file, jwks_error_msg(jwk_set)); } } for (i = 0; (item = jwks_item_get(jwk_set, i)); i++) write_key_file(item); exit(EXIT_SUCCESS); } libjwt-3.2.3/tools/jwt-generate.1000066400000000000000000000076101510461717300166410ustar00rootroot00000000000000.\" Automatically generated by Pandoc 3.7.0.2 .\" .TH "JWT\-GENERATE" "1" "" "jwt\-generate User Manual" "LibJWT C Library" .SH NAME \f[B]jwt\-generate\f[R] \- Generate a JSON Web Token .SH SYNOPSIS .PP \f[B]jwt\-generate\f[R] \f[B][options]\f[R] .SH DESCRIPTION \f[B]jwt\-generate\f[R] Generates and (optionally) signs a JSON Web Token. .PP By default this will simply encode a JWT. If you want a signature, then you must give a JWK key with the \f[B]\-k\f[R] option. Generating a signature requires specifying the algorithm, so it must either be in the key file (as the \f[B]alg\f[R] attribute), or passed on the command line with the \f[B]\-a\f[R] argument. .PP If \f[B]\-a\f[R] is specified and the key has an \f[B]alg\f[R] attribute, they must match. .PP One token will be generated for each call. You can specify claims using the \f[B]\-c\f[R] option. By default, \f[B]jwt\-generate\f[R] will add the \f[B]iat\f[R] claim, which is \f[B]Issued At\f[R] and is the time in seconds since the \f[I]Unix Epcoch\f[R]. .PP When using the \f[B]\-\-verbose\f[R] option, \f[B]jwt\-generate\f[R] will print the JSON \f[I]HEADER\f[R] and \f[I]PAYLOAD\f[R] to \f[B]stdout\f[R]. .PP If used in conjunction with \f[B]\-\-print\f[R], the JSON will be piped to the command\(cqs \f[B]stdin\f[R]. It will be called twice: once for \f[I]HEAD\f[R] and once for \f[I]PAYLOAD\f[R]. .PP One use is to pass it through \f[B]jq \-C\f[R] for indenting and colorization. Another would be to use an external program to inspect the \f[I]PAYLOAD\f[R] contents. A non\-0 exit status from the program will cause generating the token to fail. .SS Options .TP \f[B]\-h\f[R], \f[B]\-\-help\f[R] Show common options and quit. .TP \f[B]\-l\f[R], \f[B]\-\-list\f[R] List all supported algorithms that can be passed to the \f[B]\-a\f[R] option and quit. .TP \f[B]\-v\f[R], \f[B]\-\-verbose\f[R] Show the contents of the \f[I]HEADER\f[R] and \f[I]PAYLOAD\f[R] of the JWT in addition to generating the token. \f[B]NOTE\f[R] the header will not show the \f[B]typ\f[R] or \f[B]alg\f[R] attributes since they do not get added until the final step. .TP \f[B]\-q\f[R], \f[B]\-\-quiet\f[R] Do not output anything except for hard errors. On success you will only see the token generared. .TP \f[B]\-n\f[R], \f[B]\-\-no\-iat\f[R] Do not add the iat (Issued\-At) time to the token. Useful for a slightly smaller token, and for reproducible output. .TP \f[B]\-a\f[R] \f[I]ALG\f[R], \f[B]\-\-algorithm\f[R]=\f[I]ALG\f[R] Specify the algorithm to be used when signing the token. .TP \f[B]\-k\f[R] \f[I]FILE\f[R], \f[B]\-\-key\f[R]=\f[I]FILE\f[R] Path to a file containing a key in JSON Web Key format. If your keys are in PEM or DER (or some other common format that \f[I]OpenSSL\f[R] understands), then you can convert it to a JWK with the \f[B]key2jwk(1)\f[R] tool. .TP \f[B]\-c\f[R] \f[I]CLAIM\f[R], \f[B]\-\-claim\f[R]=\f[I]CLAIM\f[R] Add a claim to the JWT. The format of \f[I]CLAIM\f[R] is \f[B]t\f[R]:\f[B]key\f[R]=\f[B]value\f[R] Where \f[B]t\f[R] is the type and is one of \f[B]i\f[R] for integer, \f[B]s\f[R] for string, or \f[B]b\f[R] for boolean. The value for integer must be parseable by \f[B]strtol(3)\f[R]. For boolean, any value starting with \f[B]0\f[R], \f[B]f\f[R], or \f[B]F\f[R] will be interpreted as \f[B]false\f[R]. Anything else will be considered \f[B]true\f[R]. They \f[B]key\f[R] is any \f[I]ASCII\f[R] string. .TP \f[B]\-j\f[R] \f[I]JSON\f[R], \f[B]\-\-json\f[R]=\f[I]JSON\f[R] Use JSON string as the payload of the token. This will not replace, but be added to the payload. The string must be in valid JSON, meaning either a \f[B]{}\f[R] object or a \f[B][]\f[R] array. .SH BUGS See GitHub Issues: \c .UR https://github.com/benmcollins/libjwt/issues .UE \c .SH AUTHOR \f[B]jwt\-generate\f[R] was originally written by Jeremy Thien. Major rewriting and man page by Ben Collins \c .MT bcollins@libjwt.io .ME \c \&. .SH SEE ALSO \f[B]jwt\-verify(1)\f[R], \f[B]key2jwk(1)\f[R], \f[B]jwk2key(1)\f[R] libjwt-3.2.3/tools/jwt-generate.1.md000066400000000000000000000064421510461717300172420ustar00rootroot00000000000000% JWT-GENERATE(1) jwt-generate User Manual | LibJWT C Library # NAME **jwt-generate** - Generate a JSON Web Token # SYNOPSIS | **jwt-generate** **\[options]** # DESCRIPTION **jwt-generate** Generates and (optionally) signs a JSON Web Token. By default this will simply encode a JWT. If you want a signature, then you must give a JWK key with the **-k** option. Generating a signature requires specifying the algorithm, so it must either be in the key file (as the **alg** attribute), or passed on the command line with the **-a** argument. If **-a** is specified and the key has an **alg** attribute, they must match. One token will be generated for each call. You can specify claims using the **-c** option. By default, **jwt-generate** will add the **iat** claim, which is **Issued At** and is the time in seconds since the *Unix Epcoch*. When using the **\-\-verbose** option, **jwt-generate** will print the JSON _HEADER_ and _PAYLOAD_ to **stdout**. If used in conjunction with **\-\-print**, the JSON will be piped to the command's **stdin**. It will be called twice: once for _HEAD_ and once for _PAYLOAD_. One use is to pass it through **jq -C** for indenting and colorization. Another would be to use an external program to inspect the _PAYLOAD_ contents. A non-0 exit status from the program will cause generating the token to fail. ## Options **\-h**, **\-\-help** ~ Show common options and quit. **\-l**, **\-\-list** ~ List all supported algorithms that can be passed to the **-a** option and quit. **\-v**, **\-\-verbose** ~ Show the contents of the _HEADER_ and _PAYLOAD_ of the JWT in addition to generating the token. **NOTE** the header will not show the **typ** or **alg** attributes since they do not get added until the final step. **\-q**, **\-\-quiet** ~ Do not output anything except for hard errors. On success you will only see the token generared. **\-n**, **\-\-no-iat** ~ Do not add the iat (Issued-At) time to the token. Useful for a slightly smaller token, and for reproducible output. **\-a** _ALG_, **\-\-algorithm**=_ALG_ ~ Specify the algorithm to be used when signing the token. **\-k** _FILE_, **\-\-key**=_FILE_ ~ Path to a file containing a key in JSON Web Key format. If your keys are in PEM or DER (or some other common format that _OpenSSL_ understands), then you can convert it to a JWK with the **key2jwk(1)** tool. **\-c** _CLAIM_, **\-\-claim**=_CLAIM_ ~ Add a claim to the JWT. The format of _CLAIM_ is **t**:**key**=**value** Where **t** is the type and is one of **i** for integer, **s** for string, or **b** for boolean. The value for integer must be parseable by **strtol(3)**. For boolean, any value starting with **0**, **f**, or **F** will be interpreted as **false**. Anything else will be considered **true**. They **key** is any *ASCII* string. **\-j** _JSON_, **\-\-json**=_JSON_ ~ Use JSON string as the payload of the token. This will not replace, but be added to the payload. The string must be in valid JSON, meaning either a **{}** object or a **[]** array. # BUGS See GitHub Issues: # AUTHOR **jwt-generate** was originally written by Jeremy Thien. Major rewriting and man page by Ben Collins . # SEE ALSO **jwt-verify(1)**, **key2jwk(1)**, **jwk2key(1)** libjwt-3.2.3/tools/jwt-generate.c000066400000000000000000000175251510461717300167310ustar00rootroot00000000000000/* Copyright (C) 2019 Jeremy Thien Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include "jwt-util.h" _Noreturn static void usage(const char *error, int exit_state) { if (error) fprintf(stderr, "ERROR: %s\n\n", error); fprintf(stderr, "\ Usage: %s [OPTIONS]\n\ \n\ Generate and (optionally) sign a JSON Web Token\n\ \n\ -h, --help This help information\n\ -l, --list List supported algorithms and exit\n\ -a, --algorithm=ALG JWT algorithm to use (e.g. ES256). Only needed if the\n\ key provided with -k does not have an \"alg\"\n\ attribute\n\ -p, --print=CMD When printing JSON, pipe through CMD\n\ -n, --no-iat Disable adding iat (Issued-At) to token\n\ -k, --key=FILE Filename containing a JSON Web Key\n\ -c, --claim=t:k=v Add a claim to the JWT\n\ t One of i, s, or b for integer, string or boolean\n\ k The key for this claim\n\ v The value of the claim. For integer, must be parsable\n\ by strtol(). For boolean, if the value starts with 'f',\n\ 'F', or '0' it is taken as false. Anything else is true.\n\ -j, --json=STRING JSON string to be used as the body of the token.\n\ -q, --quiet No output other than the generated token\n\ -v, --verbose Show encoded header and payload while generating. Note that\n\ the header will not show the 'typ' and 'alg' attributes as\n\ they are not added until just before signing.\n\ \n\ This program will encode and sign a token in JWT format.\n\ \n\ For the --print option, output will be piped to the command's stdin. This\n\ is useful if you wanted to use something like `jq -C` to colorize it. A\n\ non-0 exit status will stop the token from getting generated.\n\ \n\ If you need to convert a key to JWT (e.g. from PEM or DER format) see\n\ key2jwk(1).\n", get_progname()); exit(exit_state); } int main(int argc, char *argv[]) { char *t = NULL, *k = NULL, *v = NULL; jwk_set_auto_t *jwk_set = NULL; const jwk_item_t *item = NULL; char* json = NULL; jwt_builder_auto_t *builder = NULL; jwt_value_t jval; char *token; char *key_file = NULL; jwt_alg_t alg = JWT_ALG_NONE; int oc = 0; int verbose = 0; int quiet = 0; int emit_iat = 1; char *optstr = "a:c:b:hj:k:lnp:qv"; struct option opttbl[] = { { "algorithm", required_argument, NULL, 'a' }, { "claim", required_argument, NULL, 'c' }, { "help", no_argument, NULL, 'h' }, { "json", required_argument, NULL, 'j' }, { "key", required_argument, NULL, 'k' }, { "list", no_argument, NULL, 'l' }, { "no-iat", no_argument, NULL, 'n' }, { "print", required_argument, NULL, 'p' }, { "quiet", no_argument, NULL, 'q' }, { "verbose", no_argument, NULL, 'v' }, { NULL, 0, 0, 0 }, }; builder = jwt_builder_new(); if (builder == NULL) { fprintf(stderr, "Could not allocate builder context\n"); exit(EXIT_FAILURE); } while ((oc = getopt_long(argc, argv, optstr, opttbl, NULL)) != -1) { switch (oc) { case 'q': if (verbose) usage("Using -q and -v makes no sense", EXIT_FAILURE); quiet = 1; break; case 'v': if (quiet) usage("Using -q and -v makes no sense", EXIT_FAILURE); verbose = 1; break; case 'p': pipe_cmd = optarg; break; case 'l': printf("Algorithms supported:\n"); for (alg = JWT_ALG_NONE; alg < JWT_ALG_INVAL; alg++) printf(" %s\n", jwt_alg_str(alg)); exit(EXIT_SUCCESS); break; case 'k': key_file = optarg; break; case 'n': emit_iat = 0; break; case 'a': alg = jwt_str_alg(optarg); if (alg >= JWT_ALG_INVAL) { usage("Unknown algorithm (use -l to see a list of " "supported algorithms)\n", EXIT_FAILURE); } break; case 'c': t = strtok(optarg, ":"); if (t == NULL) { fprintf(stderr, "Invalid claim format [%s]\n", optarg); exit(EXIT_FAILURE); } k = strtok(NULL, "="); if (k == NULL) { fprintf(stderr, "Invalid claim format [%s]\n", optarg); exit(EXIT_FAILURE); } v = strtok(NULL, "="); if (v == NULL) { fprintf(stderr, "Invalid claim format [%s]\n", optarg); exit(EXIT_FAILURE); } switch (t[0]) { case 's': jwt_set_SET_STR(&jval, k, v); break; case 'i': jwt_set_SET_INT(&jval, k, strtol(v, NULL, 0)); break; case 'b': if (v[0] == 'f' || v[0] == 'F' || v[0] == '0') jwt_set_SET_BOOL(&jval, k, 0); else jwt_set_SET_BOOL(&jval, k, 1); break; default: usage("Invalid --claim format", EXIT_FAILURE); } if (jwt_builder_claim_set(builder, &jval)) { fprintf(stderr, "Error setting %s:%s=%s\n", t, k, v); exit(EXIT_FAILURE); } break; case 'j': json = optarg; break; case 'h': usage(NULL, EXIT_SUCCESS); default: /* '?' */ usage("Unknown argument", EXIT_FAILURE); } } argc -= optind; argv += optind; if (argc) usage("Unknown extra arguments", EXIT_FAILURE); if (key_file == NULL && alg != JWT_ALG_NONE) usage("An algorithm other than 'none' requires a key", EXIT_FAILURE); if (alg != JWT_ALG_NONE && key_file == NULL) usage("Algorithm requires --key", EXIT_FAILURE); jwt_builder_enable_iat(builder, emit_iat); if (key_file) { jwk_set = jwks_create_fromfile(key_file); if (jwk_set == NULL || jwks_error(jwk_set)) { fprintf(stderr, "ERR: Could not read JWK: %s\n", jwks_error_msg(jwk_set)); exit(EXIT_FAILURE); } /* Get the first key */ item = jwks_item_get(jwk_set, 0); if (jwks_item_error(item)) { fprintf(stderr, "ERR: Could not read JWK: %s\n", jwks_item_error_msg(item)); exit(EXIT_FAILURE); } if (jwks_item_alg(item) == JWT_ALG_NONE && alg == JWT_ALG_NONE) { usage("No \"alg\" attribute in key and --alg not given", EXIT_FAILURE); } if (jwt_builder_setkey(builder, alg, item)) { fprintf(stderr, "ERR Loading key: %s\n", jwt_builder_error_msg(builder)); exit(EXIT_FAILURE); } } if (json) { if (jwt_builder_claim_set(builder, jwt_set_SET_JSON(&jval, NULL, json))) { fprintf(stderr, "Error setting JSON (%d)\n", jval.error); exit(EXIT_FAILURE); } } if (verbose && jwt_builder_setcb(builder, __jwt_wcb, NULL)) { fprintf(stderr, "ERR setting callback: %s\n", jwt_builder_error_msg(builder)); exit(EXIT_FAILURE); } json_fp = stderr; if (item && !quiet) fprintf(stderr, "\xF0\x9F\x94\x91 \033[0;92m[KEY]\033[0m %s\n", key_file); if (!quiet) { fprintf(stderr, "\xF0\x9F\x93\x83 "); if (item && jwks_item_alg(item) != JWT_ALG_NONE) { fprintf(stderr, "\033[0;92m[ALG]\033[0m %s (from key)", jwt_alg_str(jwks_item_alg(item))); alg = jwks_item_alg(item); } else if (alg != JWT_ALG_NONE) { fprintf(stderr, "\033[0;92m[ALG]\033[0m %s (from options)", jwt_alg_str(alg)); } else { fprintf(stderr, "\033[0;91m[ALG]\033[0m %s", jwt_alg_str(alg)); } fprintf(stderr, "\n"); } token = jwt_builder_generate(builder); if (token == NULL) { fprintf(stderr, "ERR Generating Token: %s\n", jwt_builder_error_msg(builder)); exit(EXIT_FAILURE); } if (quiet) { printf("%s\n", token); } else { fprintf(stderr, "%s %s[TOK]\033[0m \n", alg == JWT_ALG_NONE ? "\xF0\x9F\x94\x93" : "\xF0\x9F\x94\x90", alg == JWT_ALG_NONE ? "\033[0;93m" : "\033[0;92m"); printf("%s\n", token); } free(token); return 0; } libjwt-3.2.3/tools/jwt-util.h000066400000000000000000000047501510461717300161150ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include static char *pipe_cmd; static FILE *json_fp; #ifdef _WIN32 #include #else #include #endif static inline int write_json(const char *title, const char *str) { int exit_code = 0; if (json_fp == NULL) json_fp = stdout; fprintf(json_fp, "\033[0;95m[%s]\033[0m\n", title); #ifdef _WIN32 FILE *pipe_fp = NULL; if (pipe_cmd) { pipe_fp = _popen(pipe_cmd, "w"); if (!pipe_fp) { perror("popen"); return -1; } } if (pipe_fp) { if (fwrite(str, 1, strlen(str), pipe_fp) < strlen(str)) { perror("fwrite"); exit_code = -1; } _pclose(pipe_fp); } #else int pipe_fd[2]; int myfd = 0; pid_t pid; int status; if (pipe_cmd) { char *argv[4] = { "/bin/sh", "-c", NULL, NULL }; if (pipe(pipe_fd)) { perror(pipe_cmd); exit(EXIT_FAILURE); } argv[2] = pipe_cmd; pid = fork(); if (pid == 0) { close(pipe_fd[1]); if (json_fp == stderr) dup2(STDERR_FILENO, STDOUT_FILENO); dup2(pipe_fd[0], STDIN_FILENO); close(pipe_fd[0]); execvp(argv[0], argv); perror("execvp"); exit(EXIT_FAILURE); } else { close(pipe_fd[0]); myfd = pipe_fd[1]; } } if (myfd) { if (write(myfd, str, strlen(str)) < 0) { perror(pipe_cmd); exit(EXIT_FAILURE); } } #endif else { fprintf(json_fp, "\033[0;96m%s\033[0m\n", str); } #ifndef _WIN32 if (myfd) { close(myfd); waitpid(pid, &status, 0); exit_code = WEXITSTATUS(status); } #endif return exit_code; } static inline int __jwt_wcb(jwt_t *jwt, jwt_config_t *config) { jwt_value_t jval; int ret = 0, result = 0; if (config == NULL) return 1; jwt_set_GET_JSON(&jval, NULL); jval.pretty = 1; ret = jwt_header_get(jwt, &jval); if (!ret) { result |= write_json("HEADER", jval.json_val); free(jval.json_val); } jwt_set_GET_JSON(&jval, NULL); jval.pretty = 1; ret = jwt_claim_get(jwt, &jval); if (!ret) { result |= write_json("PAYLOAD", jval.json_val); free(jval.json_val); } return result; } #ifdef _WIN32 __declspec(dllimport) extern char **__argv; static inline const char *get_progname(void) { return __argv[0]; } #else extern const char *__progname; static inline const char *get_progname(void) { return __progname; } #endif libjwt-3.2.3/tools/jwt-verify.1000066400000000000000000000064221510461717300163530ustar00rootroot00000000000000.\" Automatically generated by Pandoc 3.7.0.2 .\" .TH "JWT\-VERIFY" "1" "" "jwt\-verify User Manual" "LibJWT C Library" .SH NAME \f[B]jwt\-verify\f[R] \- Verify a JSON Web Token .SH SYNOPSIS .PP \f[B]jwt\-verify\f[R] \f[B][options]\f[R] \f[I]token\f[R] \&... .PD 0 .P .PD \f[B]jwt\-verify\f[R] \f[B][options]\f[R] \- < \f[I]token\f[R] .SH DESCRIPTION \f[B]jwt\-verify\f[R] Decodes and (optionally) verifies the signature of a JSON Web Token. .PP By default, the token(s) will be decoded and verified. If there is a signature block on the JWT, then you must give a JWK key with the \f[B]\-k\f[R] option. Verifying a signature requires specifying the algorithm, so it must either be in the key file (as the \f[B]alg\f[R] attribute), or passed on the command line with the \f[B]\-a\f[R] argument. .PP \f[B]jwt\-verify\f[R] will not assume the algorithm from the JWT itself (for security reasons), however, the algorithm in the JWT must match what you provide to \f[B]jwt\-verify\f[R]. .PP Tokens may be passed on the command line, after any options, separated by spaces, or passed via \f[B]stdin\f[R], one per line. To use \f[B]stdin\f[R], you must pass \f[B]\-\f[R] as the last and only argument after any options. .PP When using the \f[B]\-\-verbose\f[R] option, \f[B]jwt\-verify\f[R] will print the JSON \f[I]HEADER\f[R] and \f[I]PAYLOAD\f[R] to \f[B]stdout\f[R]. .PP If used in conjunction with \f[B]\-\-print\f[R], the JSON will be piped to the command\(cqs \f[B]stdin\f[R]. It will be called twice: once for \f[I]HEAD\f[R] and once for \f[I]PAYLOAD\f[R]. .PP One use is to pass it through \f[B]jq \-C\f[R] for indenting and colorization. Another would be to use an external program to validate the \f[I]PAYLOAD\f[R] contents. A non\-0 exit status from the program will cause verification to fail. .SS Options .TP \f[B]\-h\f[R], \f[B]\-\-help\f[R] Show common options and quit. .TP \f[B]\-l\f[R], \f[B]\-\-list\f[R] List all supported algorithms that can be passed to the \f[B]\-a\f[R] option and quit. .TP \f[B]\-v\f[R], \f[B]\-\-verbose\f[R] Show the contents of the \f[I]HEADER\f[R] and \f[I]PAYLOAD\f[R] of the JWT in addition to verifying the token. .TP \f[B]\-q\f[R], \f[B]\-\-quiet\f[R] Do not output anything except for hard errors. The exit value will be the number of token validation failures. .TP \f[B]\-a\f[R] \f[I]ALG\f[R], \f[B]\-\-algorithm\f[R]=\f[I]ALG\f[R] Specify the algorithm to be used when verifying the signature block of any tokens passed to the program. See \f[B]\-l\f[R] for values of \f[I]ALG\f[R]. .TP \f[B]\-k\f[R] \f[I]FILE\f[R], \f[B]\-\-key\f[R]=\f[I]FILE\f[R] Path to a file containing a key in JSON Web Key format. If your keys are in PEM or DER (or some other common format that \f[I]OpenSSL\f[R] understands), then you can convert it to a JWK with the \f[B]key2jwk(1)\f[R] tool. .TP \f[B]\-p\f[R] \f[I]CMD\f[R], \f[B]\-\-print\f[R]=\f[I]CMD\f[R] Pipe JSON of header and payload to \f[I]CMD\f[R] through its \f[B]stdin\f[R]. This option only makes sense with \f[B]\-\-verbose\f[R]. .SH BUGS See GitHub Issues: \c .UR https://github.com/benmcollins/libjwt/issues .UE \c .SH AUTHOR \f[B]jwt\-verify\f[R] was originally written by Jeremy Thien. Major rewriting and man page by Ben Collins \c .MT bcollins@libjwt.io .ME \c \&. .SH SEE ALSO \f[B]jwt\-generate(1)\f[R], \f[B]key2jwk(1)\f[R], \f[B]jwk2key(1)\f[R] libjwt-3.2.3/tools/jwt-verify.1.md000066400000000000000000000054121510461717300167500ustar00rootroot00000000000000% JWT-VERIFY(1) jwt-verify User Manual | LibJWT C Library # NAME **jwt-verify** - Verify a JSON Web Token # SYNOPSIS | **jwt-verify** **\[options]** _token_ ... | **jwt-verify** **\[options]** - < _token_ # DESCRIPTION **jwt-verify** Decodes and (optionally) verifies the signature of a JSON Web Token. By default, the token(s) will be decoded and verified. If there is a signature block on the JWT, then you must give a JWK key with the **-k** option. Verifying a signature requires specifying the algorithm, so it must either be in the key file (as the **alg** attribute), or passed on the command line with the **-a** argument. **jwt-verify** will not assume the algorithm from the JWT itself (for security reasons), however, the algorithm in the JWT must match what you provide to **jwt-verify**. Tokens may be passed on the command line, after any options, separated by spaces, or passed via **stdin**, one per line. To use **stdin**, you must pass **-** as the last and only argument after any options. When using the **\-\-verbose** option, **jwt-verify** will print the JSON _HEADER_ and _PAYLOAD_ to **stdout**. If used in conjunction with **\-\-print**, the JSON will be piped to the command's **stdin**. It will be called twice: once for _HEAD_ and once for _PAYLOAD_. One use is to pass it through **jq -C** for indenting and colorization. Another would be to use an external program to validate the _PAYLOAD_ contents. A non-0 exit status from the program will cause verification to fail. ## Options **\-h**, **\-\-help** ~ Show common options and quit. **\-l**, **\-\-list** ~ List all supported algorithms that can be passed to the **-a** option and quit. **\-v**, **\-\-verbose** ~ Show the contents of the _HEADER_ and _PAYLOAD_ of the JWT in addition to verifying the token. **\-q**, **\-\-quiet** ~ Do not output anything except for hard errors. The exit value will be the number of token validation failures. **\-a** _ALG_, **\-\-algorithm**=_ALG_ ~ Specify the algorithm to be used when verifying the signature block of any tokens passed to the program. See **-l** for values of _ALG_. **\-k** _FILE_, **\-\-key**=_FILE_ ~ Path to a file containing a key in JSON Web Key format. If your keys are in PEM or DER (or some other common format that _OpenSSL_ understands), then you can convert it to a JWK with the **key2jwk(1)** tool. **\-p** _CMD_, **\-\-print**=_CMD_ ~ Pipe JSON of header and payload to _CMD_ through its **stdin**. This option only makes sense with **\-\-verbose**. # BUGS See GitHub Issues: # AUTHOR **jwt-verify** was originally written by Jeremy Thien. Major rewriting and man page by Ben Collins . # SEE ALSO **jwt-generate(1)**, **key2jwk(1)**, **jwk2key(1)** libjwt-3.2.3/tools/jwt-verify.c000066400000000000000000000156641510461717300164450ustar00rootroot00000000000000/* Copyright (C) 2019 Jeremy Thien Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include "jwt-util.h" _Noreturn static void usage(const char *error, int exit_state) { if (error) fprintf(stderr, "ERROR: %s\n\n", error); fprintf(stderr, "\ Usage: %1$s [OPTIONS] [token(s)]\n\ %1$s [OPTIONS] -\n\ \n\ Decode and (optionally) verify the signature for a JSON Web Token\n\ \n\ -h, --help This help information\n\ -l, --list List supported algorithms and exit\n\ -a, --algorithm=ALG JWT algorithm to use (e.g. ES256). Only needed if the key\n\ provided with -k does not have an \"alg\" attribute\n\ -p, --print=CMD When printing JSON, pipe through CMD\n\ -k, --key=FILE Filename containing a JSON Web Key\n\ -q, --quiet No output. Exit value is number of errors\n\ -v, --verbose Show decoded header and payload while verifying\n\ \nThis program will decode and validate each token on the command line.\n\ If - is given as the only argument to token, then tokens will be read\n\ from stdin, one per line.\n\ \n\ For the --print option, output will be piped to the command's stdin. This\n\ is useful if you wanted to use something like `jq -C` to colorize it or\n\ another program to validate it. The program will be called twice; once\n\ for the HEAD, and once for the PAYLOAD. A non-0 exit status will cause\n\ the verification to fail.\n\ \n\ If you need to convert a key to JWK (e.g. from PEM or DER format) see\n\ key2jwk(1).\n", get_progname()); exit(exit_state); } static void print_token_trunc(const char *str, size_t max_len) { size_t len = strlen(str); if (len <= max_len) { printf("%s\n", str); } else { size_t part_len = (max_len - 3) / 2; printf("%.*s...%.*s\n", (int)part_len, str, (int)part_len, str + len - part_len); } } static int process_one(jwt_checker_t *checker, jwt_alg_t alg, const char *token, int quiet) { int err = 0; if (!quiet) { printf("\n%s %s[TOK]\033[0m ", alg == JWT_ALG_NONE ? "\xF0\x9F\x94\x93" : "\xF0\x9F\x94\x90", alg == JWT_ALG_NONE ? "\033[0;93m" : "\033[0;92m"); print_token_trunc(token, 60); } if (jwt_checker_verify(checker, token)) { if (!quiet) { printf("\xF0\x9F\x91\x8E \033[0;91m[BAD]\033[0m %s\n", jwt_checker_error_msg(checker)); } err = 1; } else if (!quiet) { printf("\xF0\x9F\x91\x8D \033[0;92m[YES]\033[0m Verified\n"); } return err; } int main(int argc, char *argv[]) { jwt_checker_auto_t *checker = NULL; const char *key_file = NULL; jwt_alg_t alg = JWT_ALG_NONE; jwk_set_auto_t *jwk_set = NULL; const jwk_item_t *item = NULL; int oc, err, verbose = 0; int quiet = 0; char *optstr = "hk:alvqp:"; struct option opttbl[] = { { "help", no_argument, NULL, 'h' }, { "key", required_argument, NULL, 'k' }, { "algorithm", required_argument, NULL, 'a' }, { "print", required_argument, NULL, 'p' }, { "list", no_argument, NULL, 'l' }, { "quiet", no_argument, NULL, 'q' }, { "verbose", no_argument, NULL, 'v' }, { NULL, 0, 0, 0 }, }; checker = jwt_checker_new(); if (checker == NULL) { fprintf(stderr, "Could not allocate checker context\n"); exit(EXIT_FAILURE); } while ((oc = getopt_long(argc, argv, optstr, opttbl, NULL)) != -1) { switch (oc) { case 'h': usage(NULL, EXIT_SUCCESS); case 'l': printf("Algorithms supported:\n"); for (alg = JWT_ALG_NONE; alg < JWT_ALG_INVAL; alg++) printf(" %s\n", jwt_alg_str(alg)); exit(EXIT_SUCCESS); break; case 'p': pipe_cmd = optarg; break; case 'q': if (verbose) usage("Using -q and -v makes no sense", EXIT_FAILURE); quiet = 1; break; case 'v': if (quiet) usage("Using -q and -v makes no sense", EXIT_FAILURE); verbose = 1; break; case 'k': key_file = optarg; break; case 'a': alg = jwt_str_alg(optarg); if (alg >= JWT_ALG_INVAL) { fprintf(stderr, "Unknown algorithm [%s]\nUse " "-l to see a list of supported " "algorithms)\n", optarg); exit(EXIT_FAILURE); } break; default: /* '?' */ usage("Unknown option", EXIT_FAILURE); break; } } argc -= optind; argv += optind; if (argc == 0) usage("No token(s) given", EXIT_FAILURE); if (key_file == NULL && alg != JWT_ALG_NONE) usage("An algorithm other than 'none' requires a key", EXIT_FAILURE); /* Load JWK key */ if (key_file) { jwk_set = jwks_create_fromfile(key_file); if (jwk_set == NULL || jwks_error(jwk_set)) { fprintf(stderr, "ERR: Could not read JWK: %s\n", jwks_error_msg(jwk_set)); exit(EXIT_FAILURE); } /* Get the first key */ item = jwks_item_get(jwk_set, 0); if (jwks_item_error(item)) { fprintf(stderr, "ERR: Could not read JWK: %s\n", jwks_item_error_msg(item)); exit(EXIT_FAILURE); } if (jwks_item_alg(item) == JWT_ALG_NONE && alg == JWT_ALG_NONE) { usage("Key does not contain an \"alg\" attribute and no --alg given", EXIT_FAILURE); } if (jwt_checker_setkey(checker, alg, item)) { fprintf(stderr, "ERR Loading key: %s\n", jwt_checker_error_msg(checker)); exit(EXIT_FAILURE); } } if (verbose && jwt_checker_setcb(checker, __jwt_wcb, NULL)) { fprintf(stderr, "ERR setting callback: %s\n", jwt_checker_error_msg(checker)); exit(EXIT_FAILURE); } if (item && !quiet) { printf("\xF0\x9F\x94\x91 \033[0;92m[KEY]\033[0m %s\n", key_file); } if (!quiet) printf("\xF0\x9F\x93\x83 "); if (item && jwks_item_alg(item) != JWT_ALG_NONE) { if (!quiet) { printf("\033[0;92m[ALG]\033[0m %s (from key)", jwt_alg_str(jwks_item_alg(item))); } alg = jwks_item_alg(item); } else if (!quiet){ if (alg == JWT_ALG_NONE) printf("\033[0;91m[ALG]\033[0m %s (from options)", jwt_alg_str(alg)); else printf("\033[0;92m[ALG]\033[0m %s (from options)", jwt_alg_str(alg)); } if (!quiet) printf("\n"); err = 0; if (!strcmp(argv[0], "-")) { char token[BUFSIZ]; while (fgets(token, sizeof(token), stdin) != NULL) { token[strcspn(token, "\n")] = '\0'; err += process_one(checker, alg, token, quiet); } } else { for (oc = 0; oc < argc; oc++) { const char *token = argv[oc]; err += process_one(checker, alg, token, quiet); } } exit(err); } libjwt-3.2.3/tools/key2jwk.1000066400000000000000000000063451510461717300156370ustar00rootroot00000000000000.\" Automatically generated by Pandoc 3.1.11.1 .\" .TH "KEY2JWK" "1" "" "key2jwk User Manual" "LibJWT C Library" .SH NAME \f[B]key2jwk\f[R] \- Generate a JSON Web Key Set .SH SYNOPSIS .PP \f[B]key2jwk\f[R] \f[B][options]\f[R] [FILE]\&... .SH DESCRIPTION \f[B]key2jwk\f[R] Generates a JSON Web Key Set from one or more keys in PEM or DER format. .PP This program will parse PEM/DER key files (public and private) into JSON Web Keys and output a JWK Set. Note that HMAC keys are \f[I]guessed\f[R] based on them not being parsed by OpenSSL. This may cause some issues. You can disable this with the \f[B]\-m\f[R] option. .PP \f[I]HS256\f[R], \f[I]HS384\f[R], and \f[I]HS512\f[R] are assumed based on the key size and are expected to be a file with binary data. Using file size in bytes: .PP \f[I]\f[BI]HS256\f[I]\f[R]: size >= 32 AND size < 48 .PP \f[I]\f[BI]HS384\f[I]\f[R]: size >= 48 AND size < 64 .PP \f[I]\f[BI]HS512\f[I]\f[R]: size >= 64 .PP The \f[B]\-o\f[R] options is required for output. If the file exists, it will not be overwritten. You can use \f[B]\-\-output \-\f[R] to write to \f[I]stdout\f[R]. If you write to \f[I]stdout\f[R], all other messages will be written to \f[I]stderr\f[R]. .PP RSA keys will not have an algorithm set as they are valid for \f[I]RS256\f[R], \f[I]RS384\f[R], and \f[I]RS512\f[R], however, RSA\-PSS keys will be set to \f[I]PS256\f[R], since otherwise they will look no different than an RSA key. RSA keys must be at least 1024 bits. .PP Private keys will have \f[B]sign\f[R] added to the \f[B]key_ops\f[R] array while public keys will have the \f[B]use\f[R] attribute set to \f[B]sig\f[R]. .PP All keys will get a generated randomized uuidv4 \f[B]kid\f[R] attribute unless you use the \f[B]\-k\f[R] option. .PP Example output: .IP .EX $ key2jwk \-q \-o \- eddsa_key_ed25519.pem { \[dq]libjwt.io:comment\[dq]: \[dq]Generated by LibJWT 2.9.99\[dq], \[dq]libjwt.io:date\[dq]: \[dq]Sun Jan 12 23:50:24 2025\[dq], \[dq]libjwt.io:hostname\[dq]: \[dq]maClara.local\[dq], \[dq]keys\[dq]: [ { \[dq]key_ops\[dq]: [ \[dq]sign\[dq] ], \[dq]kid\[dq]: \[dq]d74a55b0\-631a\-4dfb\-8842\-cecfcb50e728\[dq], \[dq]kty\[dq]: \[dq]OKP\[dq], \[dq]crv\[dq]: \[dq]Ed25519\[dq], \[dq]alg\[dq]: \[dq]EdDSA\[dq], \[dq]d\[dq]: \[dq]XY5oUZqGWVZhX7J09hG\-rRnAKXiw1g_aBh\-Bc52KZ_Y\[dq] } ] } .EE .SS Options .TP \f[B]\-h\f[R], \f[B]\-\-help\f[R] Show common options and quit. .TP \f[B]\-l\f[R], \f[B]\-\-list\f[R] List all supported algorithms that can be passed to the \f[B]\-a\f[R] option and quit. .TP \f[B]\-q\f[R], \f[B]\-\-quiet\f[R] Do not output anything except for hard errors (and the JWKS). .TP \f[B]\-k\f[R], \f[B]\-\-disable\-kid\f[R] Disable generating \f[B]kid\f[R] attribute. .TP \f[B]\-m\f[R], \f[B]\-\-disable\-hmac\f[R] Disable falling back to HAMC for key files that OpenSSL cannot read. .TP \f[B]\-o\f[R] \f[I]FILE\f[R], \f[B]\-\-output\f[R]=\f[I]FILE\f[R] Use \f[I]FILE\f[R] to write the JWKS. Use \f[B]\-\f[R] to write to stdout. .SH BUGS See GitHub Issues: \c .UR https://github.com/benmcollins/libjwt/issues .UE \c .SH AUTHOR \f[B]key2jwk\f[R] written by Ben Collins \c .MT bcollins@libjwt.io .ME \c \&. .SH SEE ALSO \f[B]jwt\-verify(1)\f[R], \f[B]jwt\-generate(1)\f[R], \f[B]jwk2key(1)\f[R] libjwt-3.2.3/tools/key2jwk.1.md000066400000000000000000000052521510461717300162320ustar00rootroot00000000000000% KEY2JWK(1) key2jwk User Manual | LibJWT C Library # NAME **key2jwk** - Generate a JSON Web Key Set # SYNOPSIS | **key2jwk** **\[options]** \ [FILE]... # DESCRIPTION **key2jwk** Generates a JSON Web Key Set from one or more keys in PEM or DER format. This program will parse PEM/DER key files (public and private) into JSON Web Keys and output a JWK Set. Note that HMAC keys are *guessed* based on them not being parsed by OpenSSL. This may cause some issues. You can disable this with the **-m** option. _HS256_, _HS384_, and _HS512_ are assumed based on the key size and are expected to be a file with binary data. Using file size in bytes: _**HS256**_: size >= 32 AND size < 48 _**HS384**_: size >= 48 AND size < 64 _**HS512**_: size >= 64 The **-o** options is required for output. If the file exists, it will not be overwritten. You can use **\-\-output -** to write to _stdout_. If you write to _stdout_, all other messages will be written to _stderr_. RSA keys will not have an algorithm set as they are valid for _RS256_, _RS384_, and _RS512_, however, RSA-PSS keys will be set to _PS256_, since otherwise they will look no different than an RSA key. RSA keys must be at least 1024 bits. Private keys will have **sign** added to the **key_ops** array while public keys will have the **use** attribute set to **sig**. All keys will get a generated randomized uuidv4 **kid** attribute unless you use the **-k** option. Example output: $ key2jwk -q -o - eddsa_key_ed25519.pem { "libjwt.io:comment": "Generated by LibJWT 2.9.99", "libjwt.io:date": "Sun Jan 12 23:50:24 2025", "libjwt.io:hostname": "maClara.local", "keys": [ { "key_ops": [ "sign" ], "kid": "d74a55b0-631a-4dfb-8842-cecfcb50e728", "kty": "OKP", "crv": "Ed25519", "alg": "EdDSA", "d": "XY5oUZqGWVZhX7J09hG-rRnAKXiw1g_aBh-Bc52KZ_Y" } ] } ## Options **\-h**, **\-\-help** ~ Show common options and quit. **\-l**, **\-\-list** ~ List all supported algorithms that can be passed to the **-a** option and quit. **\-q**, **\-\-quiet** ~ Do not output anything except for hard errors (and the JWKS). **\-k**, **\-\-disable-kid** ~ Disable generating **kid** attribute. **\-m**, **\-\-disable-hmac** ~ Disable falling back to HAMC for key files that OpenSSL cannot read. **\-o** _FILE_, **\-\-output**=_FILE_ ~ Use _FILE_ to write the JWKS. Use **-** to write to stdout. # BUGS See GitHub Issues: # AUTHOR **key2jwk** written by Ben Collins . # SEE ALSO **jwt-verify(1)**, **jwt-generate(1)**, **jwk2key(1)** libjwt-3.2.3/tools/key2jwk.c000066400000000000000000000306351510461717300157200ustar00rootroot00000000000000/* Copyright (C) 2024-2025 maClara, LLC This file is part of the JWT C Library SPDX-License-Identifier: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* XXX BIG FAT WARNING: There's not much error checking here. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "jwt-util.h" /* We make use of some LibJWT internals. Soon, this code will move into LibJWT * so it can be used to important PEM/DER keys into a JWK keyring. Until then, * we hack around it here. */ #include "jwt-private.h" static int ec_count, rsa_count, eddsa_count, rsa_pss_count, hmac_count; static void print_openssl_errors_and_exit() { ERR_print_errors_fp(stderr); exit(EXIT_FAILURE); } static int with_kid = 1; static int do_not_assume_hmac = 0; static const char *uuidv4(void) { uint8_t uuid_bytes[16]; static char uuid[37]; // Generate 16 random bytes if (RAND_bytes(uuid_bytes, sizeof(uuid_bytes)) != 1) { fprintf(stderr, "Error: Failed to generate random bytes.\n"); return NULL; } // Set the version to 4 (0100 in binary) uuid_bytes[6] = (uuid_bytes[6] & 0x0F) | 0x40; // Set the variant to RFC 4122 (10xx in binary) uuid_bytes[8] = (uuid_bytes[8] & 0x3F) | 0x80; // Format the UUID as a string snprintf(uuid, sizeof(uuid), "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", uuid_bytes[0], uuid_bytes[1], uuid_bytes[2], uuid_bytes[3], uuid_bytes[4], uuid_bytes[5], uuid_bytes[6], uuid_bytes[7], uuid_bytes[8], uuid_bytes[9], uuid_bytes[10], uuid_bytes[11], uuid_bytes[12], uuid_bytes[13], uuid_bytes[14], uuid_bytes[15]); return uuid; } /* Set the alg and crv for an EC key */ static void ec_alg_type(EVP_PKEY *pkey, char crv[32], char alg[32]) { char __named_crv[32]; char *__alg = NULL, *__crv = NULL; size_t bits; crv[0] = alg[0] = '\0'; EVP_PKEY_get_size_t_param(pkey, OSSL_PKEY_PARAM_BITS, &bits); EVP_PKEY_get_group_name(pkey, __named_crv, sizeof(__named_crv), NULL); switch (bits) { case 256: if (!strcmp(__named_crv, "secp256k1")) { __alg = "ES256K"; __crv = "secp256k1"; } else { __alg = "ES256"; __crv = "P-256"; } break; case 384: __alg = "ES384"; __crv = "P-384"; break; case 521: __alg = "ES512"; __crv = "P-521"; break; } if (!__alg || !__crv) { fprintf(stderr, "EC: Unknown curve %s with %d bits\n", __named_crv, (int)bits); return; } strcpy(crv, __crv); strcpy(alg, __alg); } /* Retrieves and b64url-encodes a single OSSL BIGNUM param and adds it to * the JSON object as a string. */ static void get_one_bn(EVP_PKEY *pkey, const char *ossl_param, json_t *jwk, const char *name) { /* Get param */ BIGNUM *bn = NULL; EVP_PKEY_get_bn_param(pkey, ossl_param, &bn); /* Extract data */ int len = BN_num_bytes(bn); unsigned char *bin = OPENSSL_malloc(len); BN_bn2bin(bn, bin); BN_free(bn); /* Encode */ char *b64; jwt_base64uri_encode(&b64, (char *)bin, len); OPENSSL_free(bin); json_object_set_new(jwk, name, json_string(b64)); jwt_freemem(b64); } /* Retrieves and b64url-encodes a single OSSL octet param and adds it to * the JSON object as a string. */ static void get_one_octet(EVP_PKEY *pkey, const char *ossl_param, json_t *jwk, const char *name) { unsigned char buf[256]; size_t len; EVP_PKEY_get_octet_string_param(pkey, ossl_param, buf, sizeof(buf), &len); char *b64; jwt_base64uri_encode(&b64, (char *)buf, len); json_object_set_new(jwk, name, json_string(b64)); jwt_freemem(b64); } /* For ECC Keys (ES256, ES384, ES512) */ static void process_ec_key(EVP_PKEY *pkey, int priv, json_t *jwk) { char alg_type[32], crv[32]; ec_alg_type(pkey, crv, alg_type); json_object_set_new(jwk, "alg", json_string(alg_type)); json_object_set_new(jwk, "crv", json_string(crv)); get_one_bn(pkey, OSSL_PKEY_PARAM_EC_PUB_X, jwk, "x"); get_one_bn(pkey, OSSL_PKEY_PARAM_EC_PUB_Y, jwk, "y"); if (priv) get_one_bn(pkey, OSSL_PKEY_PARAM_PRIV_KEY, jwk, "d"); } /* For EdDSA keys */ static void process_eddsa_key(EVP_PKEY *pkey, int priv, json_t *jwk) { if (priv) get_one_octet(pkey, OSSL_PKEY_PARAM_PRIV_KEY, jwk, "d"); else get_one_octet(pkey, OSSL_PKEY_PARAM_PUB_KEY, jwk, "x"); } /* For RSA keys (RS256, RS384, RS512). Also works for RSA-PSS * (PS256, PS384, PS512) */ static void process_rsa_key(EVP_PKEY *pkey, int priv, json_t *jwk) { get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_N, jwk, "n"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_E, jwk, "e"); if (!priv) return; get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_D, jwk, "d"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_FACTOR1, jwk, "p"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_FACTOR2, jwk, "q"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_EXPONENT1, jwk, "dp"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_EXPONENT2, jwk, "dq"); get_one_bn(pkey, OSSL_PKEY_PARAM_RSA_COEFFICIENT1, jwk, "qi"); } static void process_hmac_key(json_t *jwk, const unsigned char *key, size_t len) { char *b64; json_object_set_new(jwk, "kty", json_string("oct")); jwt_base64uri_encode(&b64, (char *)key, len); json_object_set_new(jwk, "k", json_string(b64)); jwt_freemem(b64); if (len >= 32 && len < 48) json_object_set_new(jwk, "alg", json_string("HS256")); else if (len >= 48 && len < 64) json_object_set_new(jwk, "alg", json_string("HS384")); else if (len >= 64) json_object_set_new(jwk, "alg", json_string("HS512")); hmac_count++; } static json_t *parse_one_file(const char *file) { int priv = 0; FILE *fp; EVP_PKEY *pkey; json_t *jwk, *ops; size_t len = 0; unsigned char file_buf[BUFSIZ]; fp = fopen(file, "r"); if (!fp) { perror("Error opening file"); exit(EXIT_FAILURE); } /* Try public key first */ pkey = PEM_read_PUBKEY(fp, NULL, NULL, NULL); if (pkey == NULL) { /* Retry with private key type */ rewind(fp); pkey = PEM_read_PrivateKey(fp, NULL, NULL, NULL); priv = 1; } if (pkey == NULL) { /* Check length to see if it can be HMAC */ fseek(fp, 0, SEEK_END); len = ftell(fp); if (do_not_assume_hmac || len < 32 || len > sizeof(file_buf)) { fprintf(stderr, "Error parsing key file\n"); print_openssl_errors_and_exit(); } rewind(fp); len = fread(file_buf, 1, len, fp); priv = 1; } fclose(fp); /* Setup json object */ jwk = json_object(); if (!priv) { /* Key use */ json_object_set_new(jwk, "use", json_string("sig")); } else { /* Key ops */ ops = json_array(); json_array_append_new(ops, json_string("sign")); json_object_set_new(jwk, "key_ops", ops); } /* Use uuidv4 for "kid" */ if (with_kid) json_object_set_new(jwk, "kid", json_string(uuidv4())); if (len) { process_hmac_key(jwk, file_buf, len); return jwk; } /* Process per key type params */ switch (EVP_PKEY_get_base_id(pkey)) { case EVP_PKEY_RSA: json_object_set_new(jwk, "kty", json_string("RSA")); process_rsa_key(pkey, priv, jwk); rsa_count++; break; case EVP_PKEY_EC: json_object_set_new(jwk, "kty", json_string("EC")); process_ec_key(pkey, priv, jwk); ec_count++; break; case EVP_PKEY_ED25519: json_object_set_new(jwk, "kty", json_string("OKP")); json_object_set_new(jwk, "crv", json_string("Ed25519")); json_object_set_new(jwk, "alg", json_string("EdDSA")); process_eddsa_key(pkey, priv, jwk); eddsa_count++; break; case EVP_PKEY_ED448: json_object_set_new(jwk, "kty", json_string("OKP")); json_object_set_new(jwk, "crv", json_string("Ed448")); json_object_set_new(jwk, "alg", json_string("EdDSA")); process_eddsa_key(pkey, priv, jwk); eddsa_count++; break; case EVP_PKEY_RSA_PSS: /* XXX We need a way to designate this for PS alg only ??? * For now, default to PS256. */ json_object_set_new(jwk, "kty", json_string("RSA")); json_object_set_new(jwk, "alg", json_string("PS256")); process_rsa_key(pkey, priv, jwk); rsa_pss_count++; break; default: fprintf(stderr, "Skipped unknown key type: %s\n", file); } EVP_PKEY_free(pkey); return jwk; } _Noreturn static void usage(const char *error, int exit_state) { if (error) fprintf(stderr, "ERROR: %s\n\n", error); fprintf(stderr, "\ Usage: %s [OPTIONS] [FILE]...\n\ \n\ Parse PEM/DER file(s) into JSON Web Key format.\n\ \n\ -h, --help This help information\n\ -q, --quiet No output other than JWKS file\n\ -l, --list List supported algorithms and exit\n\ -k, --disable-kid Disable generating \"kid\" attribute\n\ -m, --disable-hmac Disable fallback to HMAC\n\ -o, --output=FILE File to write JWKS to\n\ \n\ This program will parse PEM/DER key files (public and private) into JSON Web\n\ Keys and output a JWK Set. Note that HMAC keys are \"guessed\" based on them\n\ not being parsed by OpenSSL. This may cause some issues. You can disable\n\ this with the -m option.\n\ \n\ You can use '-' as the argument to the -o option to write to stdout.\n\ \n\ RSA keys will not have an algorithm set as they are valid for RS256, RS384,\n\ and RS512. RSA keys must be at least 1024 bits.\n\ \n\ RSA-PSS keys will be set to PS256, otherwise they will look no different\n\ than an RSA key.\n\ \n\ All keys will get a generated randomized uuidv4 \"kid\" attribute unless you\n\ use the -k option..\n", get_progname()); exit(exit_state); } int main(int argc, char **argv) { json_t *jwk_set, *jwk_array, *jwk; time_t now; char *time_str; char comment[256]; jwt_alg_t alg; int quiet = 0; char *jwk_str; FILE *outfp = NULL; FILE *msg = stdout; int i, oc; char *optstr = "hlqo:km"; struct option opttbl[] = { { "help", no_argument, NULL, 'h' }, { "list", no_argument, NULL, 'l' }, { "quiet", no_argument, NULL, 'q' }, { "output", required_argument, NULL, 'o' }, { "disable-kid", no_argument, NULL, 'k' }, { "disable-hmac", no_argument, NULL, 'm' }, { NULL, 0, 0, 0 }, }; while ((oc = getopt_long(argc, argv, optstr, opttbl, NULL)) != -1) { switch (oc) { case 'h': usage(NULL, EXIT_SUCCESS); case 'l': printf("Algorithms supported:\n"); for (alg = JWT_ALG_NONE; alg < JWT_ALG_INVAL; alg++) printf(" %s\n", jwt_alg_str(alg)); exit(EXIT_SUCCESS); break; case 'q': quiet = 1; break; case 'k': with_kid = 0; break; case 'm': do_not_assume_hmac = 1; break; case 'o': if (optarg[0] == '-') { outfp = stdout; msg = stderr; } else { outfp = fopen(optarg, "wx"); if (outfp == NULL) perror(optarg); } break; default: /* '?' */ usage("Unknown option", EXIT_FAILURE); break; } } argc -= optind; argv += optind; if (argc == 0) usage("No key(s) given", EXIT_FAILURE); if (outfp == NULL) usage("The --output argument is required", EXIT_FAILURE); if (!quiet) fprintf(msg, "Parsing %d files (", argc); jwk_array = json_array(); for (i = 0; i < argc; i++) { jwk = parse_one_file(argv[i]); json_array_append_new(jwk_array, jwk); if (!quiet) fprintf(msg, "."); } if (!quiet) { fprintf(msg, ") done\n"); fprintf(msg, "Parse results:\n"); if (ec_count) fprintf(msg, " EC : %d\n", ec_count); if (rsa_count) fprintf(msg, " RSA : %d\n", rsa_count); if (rsa_pss_count) fprintf(msg, " RSA-PSS: %d\n", rsa_pss_count); if (eddsa_count) fprintf(msg, " EdDSA : %d\n", eddsa_count); if (hmac_count) fprintf(msg, " HMAC : %d\n", hmac_count); fprintf(msg, "\n"); fprintf(msg, "Generating JWKS...\n"); } jwk_set = json_object(); snprintf(comment, sizeof(comment), "Generated by LibJWT %s", JWT_VERSION_STRING); comment[sizeof(comment) - 1] = '\0'; json_object_set_new(jwk_set, "libjwt.io:comment", json_string(comment)); now = time(NULL); time_str = ctime(&now); time_str[strlen(time_str) - 1] = '\0'; json_object_set_new(jwk_set, "libjwt.io:date", json_string(time_str)); #ifdef _WIN32 DWORD hostnamesize = sizeof(comment); GetComputerNameA(comment, &hostnamesize); #else gethostname(comment, sizeof(comment)); #endif comment[sizeof(comment) - 1] = '\0'; json_object_set_new(jwk_set, "libjwt.io:hostname", json_string(comment)); json_object_set_new(jwk_set, "keys", jwk_array); jwk_str = json_dumps(jwk_set, JSON_INDENT(2)); fprintf(outfp, "%s\n", jwk_str); free(jwk_str); exit(EXIT_SUCCESS); }